Files
pokediamond/arm9/modules/17/asm/module_17.s
2020-05-29 09:40:48 -04:00

14622 lines
253 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.section .text
.balign 4, 0
thumb_func_start MOD17_021D74E0
MOD17_021D74E0: ; 0x021D74E0
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r5, r0, #0
add r0, r7, #0
mov r1, #8
bl AllocFromHeap
lsl r6, r5, #3
add r4, r0, #0
add r0, r7, #0
add r1, r6, #0
bl AllocFromHeap
mov r1, #0
add r2, r6, #0
str r0, [r4]
bl memset
str r5, [r4, #4]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D74E0
thumb_func_start MOD17_021D750C
MOD17_021D750C: ; 0x021D750C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FreeToHeap
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D750C
thumb_func_start MOD17_021D7520
MOD17_021D7520: ; 0x021D7520
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5]
bl MOD17_021D76E0
add r4, r0, #0
bne _021D7532
bl ErrorHandling
_021D7532:
ldr r0, [r5, #0x18]
str r0, [r4]
add r0, r5, #0
bl MOD17_021D770C
str r0, [r4, #4]
add r0, r4, #0
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021D7520
thumb_func_start MOD17_021D7544
MOD17_021D7544: ; 0x021D7544
push {r3, lr}
add r1, sp, #0
bl MOD17_021D7740
add r0, sp, #0
bl FUN_02020A40
pop {r3, pc}
thumb_func_end MOD17_021D7544
thumb_func_start MOD17_021D7554
MOD17_021D7554: ; 0x021D7554
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
add r6, r1, #0
str r2, [sp]
add r7, r3, #0
bl MOD17_021D7544
cmp r0, #0
bne _021D756E
add sp, #0xc
mov r0, #0
pop {r4, r5, r6, r7, pc}
_021D756E:
add r0, r4, #0
add r1, sp, #8
add r2, sp, #4
bl MOD17_021D7600
ldr r0, _021D75D8 ; =0x021C48F8
ldr r1, [sp, #8]
ldrh r2, [r0, #0x1c]
sub r1, r2, r1
str r1, [r6]
ldrh r1, [r0, #0x1e]
ldr r0, [sp, #4]
sub r1, r1, r0
ldr r0, [sp]
sub r4, r1, #4
str r1, [r0]
add r0, r1, #4
cmp r4, r0
bge _021D75D2
_021D7594:
cmp r4, #0
blt _021D75C6
ldr r0, [r6]
sub r5, r0, #4
add r0, r0, #4
cmp r5, r0
bge _021D75C6
_021D75A2:
cmp r5, #0
blt _021D75BC
add r0, r7, #0
add r1, r5, #0
add r2, r4, #0
mov r3, #0
bl MOD17_021D7B0C
cmp r0, #0
bne _021D75BC
add sp, #0xc
mov r0, #1
pop {r4, r5, r6, r7, pc}
_021D75BC:
ldr r0, [r6]
add r5, r5, #1
add r0, r0, #4
cmp r5, r0
blt _021D75A2
_021D75C6:
ldr r0, [sp]
add r4, r4, #1
ldr r0, [r0]
add r0, r0, #4
cmp r4, r0
blt _021D7594
_021D75D2:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.align 2, 0
_021D75D8: .word 0x021C48F8
thumb_func_end MOD17_021D7554
thumb_func_start MOD17_021D75DC
MOD17_021D75DC: ; 0x021D75DC
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r2, #0
add r1, sp, #0
bl MOD17_021D7740
add r0, sp, #0
add r1, r5, #0
add r2, r4, #0
bl FUN_02020AE8
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021D75DC
thumb_func_start MOD17_021D75F4
MOD17_021D75F4: ; 0x021D75F4
ldr r3, _021D75FC ; =FUN_02013EC4
ldr r0, [r0, #4]
bx r3
nop
_021D75FC: .word FUN_02013EC4
thumb_func_end MOD17_021D75F4
thumb_func_start MOD17_021D7600
MOD17_021D7600: ; 0x021D7600
push {r3, r4, r5, lr}
sub sp, #8
ldr r0, [r0, #4]
add r5, r1, #0
add r4, r2, #0
bl FUN_02013ECC
add r1, sp, #0
strh r0, [r1]
lsr r0, r0, #0x10
strh r0, [r1, #2]
ldrh r0, [r1]
strh r0, [r1, #4]
ldrh r0, [r1, #2]
strh r0, [r1, #6]
mov r0, #4
ldrsh r0, [r1, r0]
str r0, [r5]
mov r0, #6
ldrsh r0, [r1, r0]
str r0, [r4]
add sp, #8
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021D7600
thumb_func_start MOD17_021D7630
MOD17_021D7630: ; 0x021D7630
push {r3, r4, r5, lr}
sub sp, #8
ldr r0, [r0, #4]
add r5, r1, #0
add r4, r2, #0
bl FUN_02013EF0
add r1, sp, #0
strh r0, [r1]
lsr r0, r0, #0x10
strh r0, [r1, #2]
ldrh r0, [r1]
strh r0, [r1, #4]
ldrh r0, [r1, #2]
strh r0, [r1, #6]
mov r0, #4
ldrsh r0, [r1, r0]
str r0, [r5]
mov r0, #6
ldrsh r0, [r1, r0]
str r0, [r4]
add sp, #8
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021D7630
thumb_func_start MOD17_021D7660
MOD17_021D7660: ; 0x021D7660
ldr r3, _021D7668 ; =FUN_02013EB0
ldr r0, [r0, #4]
bx r3
nop
_021D7668: .word FUN_02013EB0
thumb_func_end MOD17_021D7660
thumb_func_start MOD17_021D766C
MOD17_021D766C: ; 0x021D766C
ldr r3, _021D7674 ; =FUN_02013EFC
ldr r0, [r0, #4]
bx r3
nop
_021D7674: .word FUN_02013EFC
thumb_func_end MOD17_021D766C
thumb_func_start MOD17_021D7678
MOD17_021D7678: ; 0x021D7678
ldr r3, _021D7680 ; =FUN_02013F00
ldr r0, [r0, #4]
bx r3
nop
_021D7680: .word FUN_02013F00
thumb_func_end MOD17_021D7678
thumb_func_start MOD17_021D7684
MOD17_021D7684: ; 0x021D7684
push {r3, r4, r5, lr}
sub sp, #8
add r5, r1, #0
add r4, r2, #0
add r1, sp, #4
add r2, sp, #0
bl MOD17_021D7630
ldr r0, [sp, #4]
cmp r0, #0x10
beq _021D76A4
cmp r0, #0x20
beq _021D76AA
cmp r0, #0x40
beq _021D76B0
b _021D76B4
_021D76A4:
mov r0, #0
str r0, [r5]
b _021D76B4
_021D76AA:
mov r0, #0xa
str r0, [r5]
b _021D76B4
_021D76B0:
mov r0, #0x14
str r0, [r5]
_021D76B4:
ldr r0, [sp]
cmp r0, #0x10
beq _021D76C6
cmp r0, #0x20
beq _021D76CE
cmp r0, #0x40
beq _021D76D6
add sp, #8
pop {r3, r4, r5, pc}
_021D76C6:
mov r0, #0
add sp, #8
str r0, [r4]
pop {r3, r4, r5, pc}
_021D76CE:
mov r0, #0xa
add sp, #8
str r0, [r4]
pop {r3, r4, r5, pc}
_021D76D6:
mov r0, #0x14
str r0, [r4]
add sp, #8
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021D7684
thumb_func_start MOD17_021D76E0
MOD17_021D76E0: ; 0x021D76E0
push {r3, r4}
ldr r4, [r0, #4]
mov r1, #0
cmp r4, #0
ble _021D7704
ldr r3, [r0]
add r2, r3, #0
_021D76EE:
ldr r0, [r2, #4]
cmp r0, #0
bne _021D76FC
lsl r0, r1, #3
add r0, r3, r0
pop {r3, r4}
bx lr
_021D76FC:
add r1, r1, #1
add r2, #8
cmp r1, r4
blt _021D76EE
_021D7704:
mov r0, #0
pop {r3, r4}
bx lr
.align 2, 0
thumb_func_end MOD17_021D76E0
thumb_func_start MOD17_021D770C
MOD17_021D770C: ; 0x021D770C
push {r3, lr}
sub sp, #0x20
ldr r1, [r0, #4]
mov r3, #0
str r1, [sp]
ldr r1, [r0, #8]
str r1, [sp, #4]
ldr r1, [r0, #0xc]
str r1, [sp, #8]
ldr r2, [r0, #0x10]
add r1, sp, #0
strh r2, [r1, #0xc]
ldr r2, [r0, #0x14]
strh r2, [r1, #0xe]
strh r3, [r1, #0x10]
mov r2, #0x1f
str r2, [sp, #0x14]
str r3, [sp, #0x18]
ldr r0, [r0, #0x1c]
strh r0, [r1, #0x1c]
add r0, sp, #0
bl FUN_02013E84
add sp, #0x20
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021D770C
thumb_func_start MOD17_021D7740
MOD17_021D7740: ; 0x021D7740
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5, #4]
add r4, r1, #0
bl FUN_02013ECC
add r1, sp, #0
strh r0, [r1, #4]
lsr r0, r0, #0x10
strh r0, [r1, #6]
ldrh r0, [r1, #4]
strh r0, [r1, #0xc]
ldrh r0, [r1, #6]
strh r0, [r1, #0xe]
ldr r0, [r5, #4]
bl FUN_02013EF0
add r1, sp, #0
strh r0, [r1]
lsr r0, r0, #0x10
strh r0, [r1, #2]
ldrh r0, [r1]
strh r0, [r1, #8]
ldrh r0, [r1, #2]
strh r0, [r1, #0xa]
mov r0, #0xe
ldrsh r2, [r1, r0]
mov r0, #0xa
strb r2, [r4]
ldrsh r0, [r1, r0]
add r0, r2, r0
strb r0, [r4, #1]
mov r0, #0xc
ldrsh r2, [r1, r0]
mov r0, #8
strb r2, [r4, #2]
ldrsh r0, [r1, r0]
add r0, r2, r0
strb r0, [r4, #3]
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021D7740
thumb_func_start MOD17_021D7794
MOD17_021D7794: ; 0x021D7794
push {r3, lr}
bl MOD17_021D7D08
bl MOD17_021D7D28
bl MOD17_021D7DB0
ldr r0, _021D77B0 ; =0x021C4918
mov r1, #1
strb r1, [r0, #5]
bl FUN_0201E7A0
pop {r3, pc}
nop
_021D77B0: .word 0x021C4918
thumb_func_end MOD17_021D7794
thumb_func_start MOD17_021D77B4
MOD17_021D77B4: ; 0x021D77B4
push {r3, lr}
ldr r0, _021D77D0 ; =0x021C4918
mov r1, #0
strb r1, [r0, #5]
bl FUN_0201E7A0
bl MOD17_021D7E0C
bl MOD17_021D7E00
bl GX_ResetBankForTex
pop {r3, pc}
nop
_021D77D0: .word 0x021C4918
thumb_func_end MOD17_021D77B4
thumb_func_start MOD17_021D77D4
MOD17_021D77D4: ; 0x021D77D4
push {r3, r4, r5, lr}
sub sp, #0x10
ldr r5, _021D7824 ; =0x021DE274
add r3, sp, #0
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, r4, #0
add r1, r2, #0
bl MOD17_021D7E1C
mov r2, #0xa
add r0, r4, #0
mov r1, #0xe
lsl r2, r2, #0xa
mov r3, #0x20
bl MOD17_021D82E4
add r0, r4, #0
bl MOD17_021D8088
add r0, r4, #0
mov r1, #0xd
bl MOD17_021D82B8
add r0, r4, #0
bl MOD17_021D80CC
mov r0, #0xe
bl FUN_02016B94
str r0, [r4, #0x38]
add r0, r4, #0
bl MOD17_021D7F34
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
_021D7824: .word 0x021DE274
thumb_func_end MOD17_021D77D4
thumb_func_start MOD17_021D7828
MOD17_021D7828: ; 0x021D7828
push {r4, lr}
add r4, r0, #0
bl MOD17_021D82D4
add r0, r4, #0
bl MOD17_021D7E58
add r0, r4, #0
bl MOD17_021D8058
ldr r0, [r4, #0x38]
bl FreeToHeap
add r0, r4, #0
bl MOD17_021D834C
add r0, r4, #0
bl MOD17_021D816C
add r0, r4, #0
bl MOD17_021D80B4
ldr r0, [r4, #4]
bl FreeToHeap
mov r0, #0
str r0, [r4, #4]
ldr r0, [r4, #0x10]
bl FreeToHeap
mov r0, #0
str r0, [r4, #0x10]
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D7828
thumb_func_start MOD17_021D786C
MOD17_021D786C: ; 0x021D786C
push {r4, lr}
add r4, r0, #0
bl FUN_020222AC
bl FUN_020B02C8
ldr r0, [r4, #0x1c]
cmp r0, #0
beq _021D7884
add r0, r4, #0
bl MOD17_021D7E68
_021D7884:
ldr r0, [r4, #0x24]
cmp r0, #0
beq _021D7890
ldr r0, [r4, #0x20]
bl FUN_02006ED4
_021D7890:
mov r0, #0
add r1, r0, #0
bl FUN_020222B4
add r0, r4, #0
bl MOD17_021D8194
pop {r4, pc}
thumb_func_end MOD17_021D786C
thumb_func_start MOD17_021D78A0
MOD17_021D78A0: ; 0x021D78A0
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r1, [r4]
ldr r2, [r4, #4]
add r5, r0, #0
bl MOD17_021D7E74
ldr r1, [r4, #8]
ldr r2, [r4, #0xc]
add r0, r5, #0
bl MOD17_021D7ED4
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021D78A0
thumb_func_start MOD17_021D78BC
MOD17_021D78BC: ; 0x021D78BC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FUN_02013DEC
ldr r0, [r4]
bl FUN_02013E5C
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D78BC
thumb_func_start MOD17_021D78D0
MOD17_021D78D0: ; 0x021D78D0
push {r4, r5, r6, lr}
sub sp, #0x70
add r5, r0, #0
mov r0, #0
str r1, [sp]
mvn r0, r0
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #0x10]
add r4, r2, #0
ldr r2, [r5, #0x40]
add r6, r3, #0
str r2, [sp, #0x14]
ldr r2, [r5, #0x44]
add r3, r1, #0
str r2, [sp, #0x18]
ldr r2, [r5, #0x48]
str r2, [sp, #0x1c]
ldr r2, [r5, #0x4c]
str r2, [sp, #0x20]
str r0, [sp, #0x24]
str r0, [sp, #0x28]
add r0, sp, #0x4c
add r2, r1, #0
bl FUN_02008AA4
ldr r0, [r5, #0x3c]
str r0, [sp, #0x2c]
add r0, sp, #0x4c
str r0, [sp, #0x30]
lsl r0, r4, #0xc
str r0, [sp, #0x34]
lsl r0, r6, #0xc
str r0, [sp, #0x38]
mov r0, #0
str r0, [sp, #0x3c]
ldr r0, [sp, #0x80]
str r0, [sp, #0x40]
ldr r0, [sp, #0x84]
str r0, [sp, #0x44]
mov r0, #0xe
str r0, [sp, #0x48]
add r0, sp, #0x2c
bl FUN_0201FF84
add sp, #0x70
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021D78D0
thumb_func_start MOD17_021D7934
MOD17_021D7934: ; 0x021D7934
push {r3, r4, lr}
sub sp, #0xc
ldr r4, [sp, #0x1c]
str r4, [sp]
ldr r4, [sp, #0x18]
str r4, [sp, #4]
mov r4, #0xe
str r4, [sp, #8]
ldr r0, [r0, #0x40]
bl FUN_02008F34
bl FUN_02009B04
add sp, #0xc
pop {r3, r4, pc}
.align 2, 0
thumb_func_end MOD17_021D7934
thumb_func_start MOD17_021D7954
MOD17_021D7954: ; 0x021D7954
push {r4, lr}
sub sp, #0x10
ldr r4, [sp, #0x20]
str r4, [sp]
ldr r4, [sp, #0x18]
str r4, [sp, #4]
ldr r4, [sp, #0x1c]
str r4, [sp, #8]
mov r4, #0xe
str r4, [sp, #0xc]
ldr r0, [r0, #0x44]
bl FUN_02008FEC
bl FUN_02009D68
add sp, #0x10
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D7954
thumb_func_start MOD17_021D7978
MOD17_021D7978: ; 0x021D7978
push {r3, r4, lr}
sub sp, #0xc
ldr r4, [sp, #0x18]
str r4, [sp]
mov r4, #2
str r4, [sp, #4]
mov r4, #0xe
str r4, [sp, #8]
ldr r0, [r0, #0x48]
bl FUN_020090AC
add sp, #0xc
pop {r3, r4, pc}
.align 2, 0
thumb_func_end MOD17_021D7978
thumb_func_start MOD17_021D7994
MOD17_021D7994: ; 0x021D7994
push {r3, r4, lr}
sub sp, #0xc
ldr r4, [sp, #0x18]
str r4, [sp]
mov r4, #3
str r4, [sp, #4]
mov r4, #0xe
str r4, [sp, #8]
ldr r0, [r0, #0x4c]
bl FUN_020090AC
add sp, #0xc
pop {r3, r4, pc}
.align 2, 0
thumb_func_end MOD17_021D7994
thumb_func_start MOD17_021D79B0
MOD17_021D79B0: ; 0x021D79B0
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x40]
bl FUN_020094F0
add r1, r0, #0
ldr r0, [r4, #0x40]
bl FUN_02009490
pop {r4, pc}
thumb_func_end MOD17_021D79B0
thumb_func_start MOD17_021D79C4
MOD17_021D79C4: ; 0x021D79C4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x44]
bl FUN_020094F0
add r1, r0, #0
ldr r0, [r4, #0x44]
bl FUN_02009490
pop {r4, pc}
thumb_func_end MOD17_021D79C4
thumb_func_start MOD17_021D79D8
MOD17_021D79D8: ; 0x021D79D8
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x48]
bl FUN_020094F0
add r1, r0, #0
ldr r0, [r4, #0x48]
bl FUN_02009490
pop {r4, pc}
thumb_func_end MOD17_021D79D8
thumb_func_start MOD17_021D79EC
MOD17_021D79EC: ; 0x021D79EC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x4c]
bl FUN_020094F0
add r1, r0, #0
ldr r0, [r4, #0x4c]
bl FUN_02009490
pop {r4, pc}
thumb_func_end MOD17_021D79EC
thumb_func_start MOD17_021D7A00
MOD17_021D7A00: ; 0x021D7A00
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
mov r1, #0x76
mov r2, #0x13
mov r3, #0xe
bl MOD17_021D8358
add r0, r5, #0
add r1, r4, #0
bl MOD17_021D81A0
add r0, r5, #0
add r1, r4, #0
bl MOD17_021D821C
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021D7A00
thumb_func_start MOD17_021D7A24
MOD17_021D7A24: ; 0x021D7A24
ldr r3, _021D7A28 ; =MOD17_021D83AC
bx r3
.align 2, 0
_021D7A28: .word MOD17_021D83AC
thumb_func_end MOD17_021D7A24
thumb_func_start MOD17_021D7A2C
MOD17_021D7A2C: ; 0x021D7A2C
push {r4, r5, r6, lr}
add r4, r0, #0
ldr r0, [r4, #0x2c]
add r6, r1, #0
add r5, r2, #0
bl FUN_02020CD4
ldr r1, [r4, #0x30]
lsl r5, r5, #2
add r0, r6, #0
add r1, r1, r5
bl FUN_020B0088
ldr r0, [r4, #0x30]
ldr r0, [r0, r5]
pop {r4, r5, r6, pc}
thumb_func_end MOD17_021D7A2C
thumb_func_start MOD17_021D7A4C
MOD17_021D7A4C: ; 0x021D7A4C
push {r3, r4}
mov r0, #1
lsl r0, r0, #0x1a
ldr r2, [r0]
ldr r1, _021D7A78 ; =0xFFFF1FFF
add r3, r0, #0
and r1, r2
str r1, [r0]
add r3, #8
ldrh r4, [r3]
mov r2, #3
mov r1, #1
bic r4, r2
orr r1, r4
add r0, #0xa
strh r1, [r3]
ldrh r1, [r0]
bic r1, r2
strh r1, [r0]
pop {r3, r4}
bx lr
nop
_021D7A78: .word 0xFFFF1FFF
thumb_func_end MOD17_021D7A4C
thumb_func_start MOD17_021D7A7C
MOD17_021D7A7C: ; 0x021D7A7C
push {r3, r4}
mov r0, #1
lsl r0, r0, #0x1a
ldr r2, [r0]
ldr r1, _021D7AD8 ; =0xFFFF1FFF
add r3, r0, #0
and r2, r1
lsr r1, r0, #0xd
orr r1, r2
str r1, [r0]
add r3, #0x48
ldrh r4, [r3]
mov r2, #0x3f
mov r1, #0x1f
bic r4, r2
orr r1, r4
strh r1, [r3]
add r3, r0, #0
add r3, #0x4a
ldrh r4, [r3]
mov r1, #0x12
bic r4, r2
orr r1, r4
strh r1, [r3]
add r1, r0, #0
ldr r2, _021D7ADC ; =0x00000AF6
add r1, #0x40
strh r2, [r1]
add r1, r0, #0
ldr r2, _021D7AE0 ; =0x0000128F
add r1, #0x44
strh r2, [r1]
add r2, r0, #0
add r2, #8
ldrh r3, [r2]
mov r1, #3
add r0, #0xa
bic r3, r1
strh r3, [r2]
ldrh r2, [r0]
bic r2, r1
mov r1, #1
orr r1, r2
strh r1, [r0]
pop {r3, r4}
bx lr
.align 2, 0
_021D7AD8: .word 0xFFFF1FFF
_021D7ADC: .word 0x00000AF6
_021D7AE0: .word 0x0000128F
thumb_func_end MOD17_021D7A7C
thumb_func_start MOD17_021D7AE4
MOD17_021D7AE4: ; 0x021D7AE4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x38]
bl FUN_0201AB60
ldr r0, [r4, #0x20]
bl FUN_020081C4
bl FUN_02009F80
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D7AE4
thumb_func_start MOD17_021D7AFC
MOD17_021D7AFC: ; 0x021D7AFC
push {r3, lr}
add r3, r1, #0
mov r1, #0x76
mov r2, #0x13
bl MOD17_021D8358
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021D7AFC
thumb_func_start MOD17_021D7B0C
MOD17_021D7B0C: ; 0x021D7B0C
push {r4, r5}
ldrh r5, [r0, #2]
ldrh r4, [r0]
lsl r5, r5, #3
cmp r1, #0
blt _021D7B26
cmp r2, #0
blt _021D7B26
cmp r1, r5
bge _021D7B26
lsl r4, r4, #3
cmp r2, r4
blt _021D7B2C
_021D7B26:
mov r0, #2
pop {r4, r5}
bx lr
_021D7B2C:
add r4, r2, #0
mul r4, r5
add r4, r1, r4
lsr r5, r4, #0x1f
lsl r2, r4, #0x1d
sub r2, r2, r5
mov r1, #0x1d
ror r2, r1
add r1, r5, r2
lsl r2, r1, #2
add r1, r3, #0
ldr r3, [r0, #0x14]
asr r0, r4, #2
lsr r0, r0, #0x1d
add r0, r4, r0
asr r0, r0, #3
lsl r0, r0, #2
ldr r3, [r3, r0]
mov r0, #0xf
lsl r0, r2
lsl r1, r2
and r0, r3
cmp r1, r0
bne _021D7B62
mov r0, #1
pop {r4, r5}
bx lr
_021D7B62:
mov r0, #0
pop {r4, r5}
bx lr
thumb_func_end MOD17_021D7B0C
thumb_func_start MOD17_021D7B68
MOD17_021D7B68: ; 0x021D7B68
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r2, #0
bl MOD17_021D7E1C
mov r2, #0xa
add r0, r5, #0
add r1, r4, #0
lsl r2, r2, #0xa
mov r3, #0x20
bl MOD17_021D82E4
ldr r0, [r5, #0x20]
mov r1, #1
bl FUN_0200825C
add r0, r5, #0
add r1, r4, #0
bl MOD17_021D82B8
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021D7B68
thumb_func_start MOD17_021D7B94
MOD17_021D7B94: ; 0x021D7B94
push {r4, r5, lr}
sub sp, #0x1c
ldr r3, _021D7BE0 ; =0x021DE2D8
add r5, r0, #0
str r1, [r5, #0x38]
add r4, r2, #0
ldmia r3!, {r0, r1}
add r2, sp, #0
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]
ldr r0, [r5, #0x38]
bl FUN_020178A0
ldr r0, [r5, #0x38]
mov r1, #2
add r2, sp, #0
mov r3, #0
bl FUN_02016C18
mov r0, #2
mov r1, #0x20
mov r2, #0
add r3, r4, #0
bl FUN_02017F18
ldr r0, [r5, #0x38]
mov r1, #2
bl FUN_02018744
add sp, #0x1c
pop {r4, r5, pc}
nop
_021D7BE0: .word 0x021DE2D8
thumb_func_end MOD17_021D7B94
thumb_func_start MOD17_021D7BE4
MOD17_021D7BE4: ; 0x021D7BE4
push {r4, lr}
add r4, r0, #0
bl MOD17_021D82D4
add r0, r4, #0
bl MOD17_021D7E58
add r0, r4, #0
bl MOD17_021D834C
ldr r0, [r4, #4]
bl FreeToHeap
mov r0, #0
str r0, [r4, #4]
ldr r0, [r4, #0x10]
bl FreeToHeap
mov r0, #0
str r0, [r4, #0x10]
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D7BE4
thumb_func_start MOD17_021D7C10
MOD17_021D7C10: ; 0x021D7C10
ldr r3, _021D7C18 ; =FUN_020178A0
ldr r0, [r0, #0x38]
mov r1, #2
bx r3
.align 2, 0
_021D7C18: .word FUN_020178A0
thumb_func_end MOD17_021D7C10
thumb_func_start MOD17_021D7C1C
MOD17_021D7C1C: ; 0x021D7C1C
ldr r3, _021D7C24 ; =FUN_020081C4
ldr r0, [r0, #0x20]
bx r3
nop
_021D7C24: .word FUN_020081C4
thumb_func_end MOD17_021D7C1C
thumb_func_start MOD17_021D7C28
MOD17_021D7C28: ; 0x021D7C28
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
ldr r0, _021D7CAC ; =0x04000454
str r3, [sp]
mov r1, #0
str r1, [r0]
sub r0, #0x10
add r6, r2, #0
ldr r7, [sp, #0x18]
str r1, [r0]
bl FUN_020B02C8
ldr r1, _021D7CB0 ; =0x04000470
lsl r0, r4, #0xc
str r0, [r1]
lsl r0, r6, #0xc
str r0, [r1]
mov r0, #0
str r0, [r1]
ldr r0, [sp]
ldr r1, _021D7CB4 ; =0x020FFA38
asr r0, r0, #4
lsl r2, r0, #1
lsl r0, r2, #1
add r2, r2, #1
lsl r2, r2, #1
ldrsh r0, [r1, r0]
ldrsh r1, [r1, r2]
bl G3_RotZ
ldr r2, [r7, #8]
ldr r1, [r7, #4]
ldr r3, [r7]
ldr r0, _021D7CB8 ; =0x0400046C
str r3, [r0]
str r1, [r0]
neg r1, r4
str r2, [r0]
lsl r1, r1, #0xc
str r1, [r0, #4]
neg r1, r6
lsl r1, r1, #0xc
str r1, [r0, #4]
mov r1, #0
str r1, [r0, #4]
sub r0, #0x28
str r1, [r0]
ldr r0, [r5, #0x1c]
cmp r0, #0
beq _021D7C94
add r0, r5, #0
bl MOD17_021D7E68
_021D7C94:
ldr r0, [r5, #0x24]
cmp r0, #0
beq _021D7CA0
ldr r0, [r5, #0x20]
bl FUN_02006ED4
_021D7CA0:
ldr r0, _021D7CBC ; =0x04000448
mov r1, #1
str r1, [r0]
str r1, [r0]
pop {r3, r4, r5, r6, r7, pc}
nop
_021D7CAC: .word 0x04000454
_021D7CB0: .word 0x04000470
_021D7CB4: .word 0x020FFA38
_021D7CB8: .word 0x0400046C
_021D7CBC: .word 0x04000448
thumb_func_end MOD17_021D7C28
thumb_func_start MOD17_021D7CC0
MOD17_021D7CC0: ; 0x021D7CC0
push {r4, lr}
add r4, r0, #0
bl MOD17_021D80CC
mov r0, #0xe
bl FUN_02016B94
str r0, [r4, #0x38]
add r0, r4, #0
bl MOD17_021D7F34
pop {r4, pc}
thumb_func_end MOD17_021D7CC0
thumb_func_start MOD17_021D7CD8
MOD17_021D7CD8: ; 0x021D7CD8
push {r4, lr}
add r4, r0, #0
bl MOD17_021D8058
ldr r0, [r4, #0x38]
bl FreeToHeap
add r0, r4, #0
bl MOD17_021D816C
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D7CD8
thumb_func_start MOD17_021D7CF0
MOD17_021D7CF0: ; 0x021D7CF0
push {r3, lr}
ldr r0, [r0, #0x38]
bl FUN_0201AB60
bl FUN_02009F80
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021D7CF0
thumb_func_start MOD17_021D7D00
MOD17_021D7D00: ; 0x021D7D00
ldr r3, _021D7D04 ; =MOD17_021D8194
bx r3
.align 2, 0
_021D7D04: .word MOD17_021D8194
thumb_func_end MOD17_021D7D00
thumb_func_start MOD17_021D7D08
MOD17_021D7D08: ; 0x021D7D08
push {r4, lr}
sub sp, #0x28
ldr r4, _021D7D24 ; =0x021DE32C
add r3, sp, #0
mov r2, #5
_021D7D12:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021D7D12
add r0, sp, #0
bl FUN_0201E66C
add sp, #0x28
pop {r4, pc}
.align 2, 0
_021D7D24: .word 0x021DE32C
thumb_func_end MOD17_021D7D08
thumb_func_start MOD17_021D7D28
MOD17_021D7D28: ; 0x021D7D28
push {r3, lr}
bl FUN_020BB7F4
bl G3X_InitMtxStack
mov r0, #1
add r1, r0, #0
bl FUN_0201E6E4
ldr r0, _021D7D9C ; =0x04000008
mov r1, #3
ldrh r2, [r0]
bic r2, r1
mov r1, #1
orr r1, r2
strh r1, [r0]
add r0, #0x58
ldrh r1, [r0]
ldr r2, _021D7DA0 ; =0xFFFFCFFD
and r1, r2
strh r1, [r0]
ldrh r3, [r0]
add r1, r2, #2
and r3, r1
mov r1, #0x10
orr r1, r3
strh r1, [r0]
ldrh r3, [r0]
ldr r1, _021D7DA4 ; =0x0000CFFB
and r1, r3
strh r1, [r0]
add r1, r2, #2
ldrh r3, [r0]
lsr r2, r2, #0x11
and r3, r1
mov r1, #8
orr r1, r3
strh r1, [r0]
mov r0, #0
add r1, r0, #0
mov r3, #0x3f
str r0, [sp]
bl G3X_SetClearColor
ldr r2, _021D7DA8 ; =0x04000540
mov r0, #2
ldr r1, _021D7DAC ; =0xBFFF0000
str r0, [r2]
str r1, [r2, #0x40]
mov r1, #1
bl FUN_020AEB70
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
bl FUN_020AEDF4
pop {r3, pc}
.align 2, 0
_021D7D9C: .word 0x04000008
_021D7DA0: .word 0xFFFFCFFD
_021D7DA4: .word 0x0000CFFB
_021D7DA8: .word 0x04000540
_021D7DAC: .word 0xBFFF0000
thumb_func_end MOD17_021D7D28
thumb_func_start MOD17_021D7DB0
MOD17_021D7DB0: ; 0x021D7DB0
push {r4, lr}
sub sp, #0x10
ldr r4, _021D7DF8 ; =0x021DE254
add r3, sp, #0
add r2, r3, #0
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl FUN_02016BBC
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _021D7DFC ; =0xFFCFFFEF
and r1, r0
mov r0, #0x10
orr r0, r1
str r0, [r2]
bl FUN_020B0FC0
bl FUN_0201E6D8
bl FUN_0201E740
mov r0, #0x1f
mov r1, #1
bl FUN_0201E6E4
mov r0, #0x13
mov r1, #1
bl FUN_0201E74C
add sp, #0x10
pop {r4, pc}
.align 2, 0
_021D7DF8: .word 0x021DE254
_021D7DFC: .word 0xFFCFFFEF
thumb_func_end MOD17_021D7DB0
thumb_func_start MOD17_021D7E00
MOD17_021D7E00: ; 0x021D7E00
push {r3, lr}
bl FUN_020AEAF4
bl FUN_020AEC60
pop {r3, pc}
thumb_func_end MOD17_021D7E00
thumb_func_start MOD17_021D7E0C
MOD17_021D7E0C: ; 0x021D7E0C
push {r3, lr}
bl FUN_0201E6D8
bl FUN_0201E740
bl FUN_020B0FC0
pop {r3, pc}
thumb_func_end MOD17_021D7E0C
thumb_func_start MOD17_021D7E1C
MOD17_021D7E1C: ; 0x021D7E1C
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
bl FUN_02013CD4
str r0, [r5]
mov r1, #0x76
ldr r0, [r4, #0xc]
lsl r1, r1, #2
bl AllocFromHeap
str r0, [r5, #4]
mov r0, #0x76
str r0, [r5, #8]
mov r0, #0
str r0, [r5, #0xc]
ldr r0, [r4, #0xc]
mov r1, #0x4c
bl AllocFromHeap
str r0, [r5, #0x10]
mov r0, #0x13
str r0, [r5, #0x14]
mov r0, #0
str r0, [r5, #0x18]
mov r0, #1
str r0, [r5, #0x1c]
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021D7E1C
thumb_func_start MOD17_021D7E58
MOD17_021D7E58: ; 0x021D7E58
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FUN_02013D18
mov r0, #0
str r0, [r4]
pop {r4, pc}
thumb_func_end MOD17_021D7E58
thumb_func_start MOD17_021D7E68
MOD17_021D7E68: ; 0x021D7E68
ldr r3, _021D7E70 ; =FUN_02013D5C
ldr r0, [r0]
bx r3
nop
_021D7E70: .word FUN_02013D5C
thumb_func_end MOD17_021D7E68
thumb_func_start MOD17_021D7E74
MOD17_021D7E74: ; 0x021D7E74
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
mov r0, #0
str r0, [sp, #4]
add r0, r2, #0
add r4, r1, #0
str r2, [sp]
cmp r0, #0
ble _021D7ED0
add r7, r5, #0
add r6, r4, #0
add r7, #0xc
_021D7E8E:
ldr r1, [r5, #0xc]
ldr r0, [r5, #8]
cmp r1, r0
blt _021D7E9A
bl ErrorHandling
_021D7E9A:
ldr r0, [r4, #4]
cmp r0, #0
beq _021D7EB0
add r0, r6, #0
bl FUN_02013D98
ldr r2, [r5, #0xc]
ldr r1, [r5, #4]
lsl r2, r2, #2
str r0, [r1, r2]
b _021D7EBA
_021D7EB0:
ldr r1, [r5, #0xc]
ldr r0, [r5, #4]
lsl r2, r1, #2
mov r1, #0
str r1, [r0, r2]
_021D7EBA:
ldr r0, [r7]
add r4, #8
add r0, r0, #1
str r0, [r7]
ldr r0, [sp, #4]
add r6, #8
add r1, r0, #1
ldr r0, [sp]
str r1, [sp, #4]
cmp r1, r0
blt _021D7E8E
_021D7ED0:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021D7E74
thumb_func_start MOD17_021D7ED4
MOD17_021D7ED4: ; 0x021D7ED4
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
mov r0, #0
str r0, [sp, #4]
add r0, r2, #0
add r4, r1, #0
str r2, [sp]
cmp r0, #0
ble _021D7F30
add r7, r5, #0
add r6, r4, #0
add r7, #0x18
_021D7EEE:
ldr r1, [r5, #0x18]
ldr r0, [r5, #0x14]
cmp r1, r0
blt _021D7EFA
bl ErrorHandling
_021D7EFA:
ldr r0, [r4, #4]
cmp r0, #0
beq _021D7F10
add r0, r6, #0
bl FUN_02013E14
ldr r2, [r5, #0x18]
ldr r1, [r5, #0x10]
lsl r2, r2, #2
str r0, [r1, r2]
b _021D7F1A
_021D7F10:
ldr r1, [r5, #0x18]
ldr r0, [r5, #0x10]
lsl r2, r1, #2
mov r1, #0
str r1, [r0, r2]
_021D7F1A:
ldr r0, [r7]
add r4, #0xc
add r0, r0, #1
str r0, [r7]
ldr r0, [sp, #4]
add r6, #0xc
add r1, r0, #1
ldr r0, [sp]
str r1, [sp, #4]
cmp r1, r0
blt _021D7EEE
_021D7F30:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021D7ED4
thumb_func_start MOD17_021D7F34
MOD17_021D7F34: ; 0x021D7F34
push {r4, r5, lr}
sub sp, #0x8c
ldr r5, _021D8044 ; =0x021DE2A0
add r4, r0, #0
ldmia r5!, {r0, r1}
add r3, sp, #0x70
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]
ldr r0, [r4, #0x38]
mov r3, #0
bl FUN_02016C18
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0xe
bl FUN_02017F18
ldr r0, [r4, #0x38]
mov r1, #1
bl FUN_02018744
ldr r5, _021D8048 ; =0x021DE2BC
add r3, sp, #0x54
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]
ldr r0, [r4, #0x38]
mov r3, #0
bl FUN_02016C18
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #0xe
bl FUN_02017F18
ldr r0, [r4, #0x38]
mov r1, #2
bl FUN_02018744
ldr r5, _021D804C ; =0x021DE2F4
add r3, sp, #0x38
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]
ldr r0, [r4, #0x38]
mov r3, #0
bl FUN_02016C18
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #0xe
bl FUN_02017F18
ldr r0, [r4, #0x38]
mov r1, #3
bl FUN_02018744
ldr r5, _021D8050 ; =0x021DE284
add r3, sp, #0x1c
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, #4
str r0, [r3]
ldr r0, [r4, #0x38]
mov r3, #0
bl FUN_02016C18
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0xe
bl FUN_02017F18
ldr r0, [r4, #0x38]
mov r1, #4
bl FUN_02018744
ldr r5, _021D8054 ; =0x021DE310
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, #5
str r0, [r3]
ldr r0, [r4, #0x38]
mov r3, #0
bl FUN_02016C18
mov r0, #5
mov r1, #0x20
mov r2, #0
mov r3, #0xe
bl FUN_02017F18
ldr r0, [r4, #0x38]
mov r1, #5
bl FUN_02018744
add sp, #0x8c
pop {r4, r5, pc}
nop
_021D8044: .word 0x021DE2A0
_021D8048: .word 0x021DE2BC
_021D804C: .word 0x021DE2F4
_021D8050: .word 0x021DE284
_021D8054: .word 0x021DE310
thumb_func_end MOD17_021D7F34
thumb_func_start MOD17_021D8058
MOD17_021D8058: ; 0x021D8058
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x38]
mov r1, #1
bl FUN_020178A0
ldr r0, [r4, #0x38]
mov r1, #2
bl FUN_020178A0
ldr r0, [r4, #0x38]
mov r1, #3
bl FUN_020178A0
ldr r0, [r4, #0x38]
mov r1, #4
bl FUN_020178A0
ldr r0, [r4, #0x38]
mov r1, #5
bl FUN_020178A0
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D8058
thumb_func_start MOD17_021D8088
MOD17_021D8088: ; 0x021D8088
push {r4, lr}
add r4, r0, #0
mov r0, #0x77
mov r1, #0xe
bl FUN_02020C44
mov r1, #0x77
str r0, [r4, #0x2c]
mov r0, #0xe
lsl r1, r1, #2
bl AllocFromHeap
mov r2, #0x77
mov r1, #0
lsl r2, r2, #2
str r0, [r4, #0x30]
bl memset
mov r0, #0x77
str r0, [r4, #0x34]
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D8088
thumb_func_start MOD17_021D80B4
MOD17_021D80B4: ; 0x021D80B4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x30]
bl FreeToHeap
ldr r0, [r4, #0x2c]
bl FUN_02020C90
mov r0, #0
str r0, [r4, #0x34]
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D80B4
thumb_func_start MOD17_021D80CC
MOD17_021D80CC: ; 0x021D80CC
push {r4, r5, lr}
sub sp, #0x24
ldr r5, _021D8168 ; =0x021DE264
add r3, sp, #0x14
add r4, r0, #0
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
mov r1, #0x10
add r0, r2, #0
add r2, r1, #0
bl FUN_0201D060
mov r0, #5
mov r1, #0xe
bl FUN_0201E00C
bl FUN_0201D168
bl FUN_0201E0BC
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, #0xe
str r2, [sp, #0x10]
add r2, r0, #0
bl FUN_02009EAC
add r1, r4, #0
mov r0, #0x30
add r1, #0x50
mov r2, #0xe
bl FUN_02008C9C
str r0, [r4, #0x3c]
add r0, r4, #0
mov r2, #2
add r0, #0x50
mov r1, #0
lsl r2, r2, #0x14
bl FUN_02008D24
mov r0, #8
mov r1, #0
mov r2, #0xe
bl FUN_02008DEC
str r0, [r4, #0x40]
mov r0, #5
mov r1, #1
mov r2, #0xe
bl FUN_02008DEC
str r0, [r4, #0x44]
mov r0, #0x30
mov r1, #2
mov r2, #0xe
bl FUN_02008DEC
str r0, [r4, #0x48]
mov r0, #0x30
mov r1, #3
mov r2, #0xe
bl FUN_02008DEC
str r0, [r4, #0x4c]
add sp, #0x24
pop {r4, r5, pc}
nop
_021D8168: .word 0x021DE264
thumb_func_end MOD17_021D80CC
thumb_func_start MOD17_021D816C
MOD17_021D816C: ; 0x021D816C
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x3c]
bl FUN_0201FD58
mov r4, #0
_021D8178:
ldr r0, [r5, #0x40]
bl FUN_02008E2C
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _021D8178
bl FUN_0201D12C
bl FUN_0201E08C
bl FUN_02009FA0
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021D816C
thumb_func_start MOD17_021D8194
MOD17_021D8194: ; 0x021D8194
ldr r3, _021D819C ; =FUN_0201FDEC
ldr r0, [r0, #0x3c]
bx r3
nop
_021D819C: .word FUN_0201FDEC
thumb_func_end MOD17_021D8194
thumb_func_start MOD17_021D81A0
MOD17_021D81A0: ; 0x021D81A0
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
mov r4, #0
add r7, r0, #0
add r6, r1, #0
add r5, r4, #0
_021D81AC:
mov r0, #1
str r0, [sp]
mov r0, #0x19
add r1, r4, #1
mov r2, #0
mov r3, #0xe
bl FUN_02006C98
str r0, [sp, #4]
cmp r0, #0
bne _021D81C6
bl ErrorHandling
_021D81C6:
ldr r1, [sp, #4]
add r0, r7, #0
add r2, r4, #0
bl MOD17_021D7A2C
ldr r1, [r6]
add r4, r4, #1
add r1, r1, r5
str r0, [r1, #4]
ldr r1, [r7]
ldr r0, [r6]
str r1, [r0, r5]
add r5, #8
cmp r4, #0x64
blt _021D81AC
mov r0, #1
mov r1, #0
str r0, [sp]
mov r0, #0x19
add r2, r1, #0
mov r3, #0xe
bl FUN_02006C98
add r4, r0, #0
ldr r0, [r6, #0x14]
add r1, r4, #0
mov r2, #0
bl FUN_02020CD4
ldr r1, [r6, #8]
add r0, r4, #0
add r1, r1, #4
bl FUN_020B0138
ldr r1, [r7]
ldr r0, [r6, #8]
str r1, [r0]
ldr r0, [r6, #8]
mov r1, #3
str r1, [r0, #8]
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D81A0
thumb_func_start MOD17_021D821C
MOD17_021D821C: ; 0x021D821C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r0, #0
mov r0, #0x87
add r5, r1, #0
mov r4, #0
str r0, [sp, #8]
_021D822A:
mov r0, #1
add r1, r4, #0
str r0, [sp]
mov r0, #0x19
add r1, #0xce
mov r2, #0
mov r3, #0xe
bl FUN_02006C98
add r2, r4, #0
add r1, r0, #0
add r2, #0x64
add r0, r7, #0
lsl r6, r2, #3
bl MOD17_021D7A2C
ldr r1, [r5]
mov r2, #0
add r1, r1, r6
str r0, [r1, #4]
ldr r1, [r7]
ldr r0, [r5]
mov r3, #0xe
str r1, [r0, r6]
add r0, r4, #1
str r0, [sp, #4]
mov r0, #1
str r0, [sp]
ldr r1, [sp, #8]
mov r0, #0x19
bl FUN_02006C98
str r0, [sp, #0xc]
ldr r0, [r5, #0x14]
ldr r1, [sp, #0xc]
ldr r2, [sp, #4]
bl FUN_02020CD4
ldr r1, [sp, #4]
mov r0, #0xc
add r6, r1, #0
mul r6, r0
ldr r1, [r5, #8]
ldr r0, [sp, #0xc]
add r1, r1, r6
add r1, r1, #4
bl FUN_020B0138
ldr r0, [r5, #8]
add r0, r0, r6
ldr r0, [r0, #4]
cmp r0, #0
bne _021D8298
bl ErrorHandling
_021D8298:
ldr r1, [r7]
ldr r0, [r5, #8]
add r4, r4, #1
str r1, [r0, r6]
ldr r0, [r5, #8]
add r1, r0, r6
mov r0, #1
str r0, [r1, #8]
ldr r0, [sp, #8]
add r0, r0, #4
str r0, [sp, #8]
cmp r4, #0x12
blt _021D822A
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D821C
thumb_func_start MOD17_021D82B8
MOD17_021D82B8: ; 0x021D82B8
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
add r3, r1, #0
mov r2, #0
mov r0, #0x19
mov r1, #0xeb
str r2, [sp]
bl FUN_02006C98
str r0, [r4, #0x28]
add sp, #4
pop {r3, r4, pc}
.align 2, 0
thumb_func_end MOD17_021D82B8
thumb_func_start MOD17_021D82D4
MOD17_021D82D4: ; 0x021D82D4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x28]
bl FreeToHeap
mov r0, #0
str r0, [r4, #0x28]
pop {r4, pc}
thumb_func_end MOD17_021D82D4
thumb_func_start MOD17_021D82E4
MOD17_021D82E4: ; 0x021D82E4
push {r4, r5, r6, lr}
add r5, r0, #0
add r0, r1, #0
add r4, r2, #0
add r6, r3, #0
bl FUN_02006D98
str r0, [r5, #0x20]
ldr r3, _021D833C ; =0x021064B8
mov r1, #0
ldr r3, [r3]
add r0, r4, #0
add r2, r1, #0
blx r3
ldr r3, _021D8340 ; =0x021064C0
add r4, r0, #0
ldr r3, [r3]
add r0, r6, #0
mov r1, #0
mov r2, #1
blx r3
ldr r2, _021D8344 ; =0x7FFF0000
add r6, r0, #0
and r2, r4
lsl r1, r4, #0x10
lsr r2, r2, #0x10
ldr r0, [r5, #0x20]
lsr r1, r1, #0xd
lsl r2, r2, #4
bl FUN_020081A8
ldr r2, _021D8348 ; =0xFFFF0000
lsl r1, r6, #0x10
and r2, r6
lsr r2, r2, #0x10
ldr r0, [r5, #0x20]
lsr r1, r1, #0xd
lsl r2, r2, #3
bl FUN_020081B4
mov r0, #1
str r0, [r5, #0x24]
pop {r4, r5, r6, pc}
nop
_021D833C: .word 0x021064B8
_021D8340: .word 0x021064C0
_021D8344: .word 0x7FFF0000
_021D8348: .word 0xFFFF0000
thumb_func_end MOD17_021D82E4
thumb_func_start MOD17_021D834C
MOD17_021D834C: ; 0x021D834C
ldr r3, _021D8354 ; =FUN_020072E8
ldr r0, [r0, #0x20]
bx r3
nop
_021D8354: .word FUN_020072E8
thumb_func_end MOD17_021D834C
thumb_func_start MOD17_021D8358
MOD17_021D8358: ; 0x021D8358
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r5, r0, #0
lsl r0, r4, #3
str r0, [sp]
add r7, r3, #0
ldr r1, [sp]
add r0, r7, #0
add r6, r2, #0
bl AllocFromHeap
ldr r2, [sp]
mov r1, #0
str r0, [r5]
bl memset
add r0, r4, #0
add r1, r7, #0
bl FUN_02020C44
str r0, [r5, #0x10]
str r4, [r5, #4]
mov r0, #0xc
add r4, r6, #0
mul r4, r0
add r0, r7, #0
add r1, r4, #0
bl AllocFromHeap
mov r1, #0
add r2, r4, #0
str r0, [r5, #8]
bl memset
add r0, r6, #0
add r1, r7, #0
bl FUN_02020C44
str r0, [r5, #0x14]
str r6, [r5, #0xc]
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D8358
thumb_func_start MOD17_021D83AC
MOD17_021D83AC: ; 0x021D83AC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x10]
cmp r0, #0
beq _021D83BE
bl FUN_02020C90
mov r0, #0
str r0, [r4, #0x10]
_021D83BE:
ldr r0, [r4, #0x14]
cmp r0, #0
beq _021D83CC
bl FUN_02020C90
mov r0, #0
str r0, [r4, #0x14]
_021D83CC:
ldr r0, [r4]
bl FreeToHeap
mov r0, #0
str r0, [r4]
ldr r0, [r4, #8]
bl FreeToHeap
mov r0, #0
str r0, [r4, #8]
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D83AC
thumb_func_start MOD17_021D83E4
MOD17_021D83E4: ; 0x021D83E4
push {r3, r4, r5, lr}
sub sp, #8
mov r2, #2
add r4, r0, #0
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
bl FUN_0201681C
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
bl FUN_0201681C
ldr r1, _021D84D8 ; =0x000006D8
add r0, r4, #0
mov r2, #0xd
bl FUN_02006268
ldr r2, _021D84D8 ; =0x000006D8
mov r1, #0
add r5, r0, #0
bl memset
ldr r0, _021D84DC ; =MOD17_021D8FC8
add r1, r5, #0
bl FUN_02015F10
bl FUN_02015F1C
add r0, r4, #0
bl FUN_0200628C
add r4, r0, #0
ldr r1, [r4, #0xc]
ldr r0, _021D84E0 ; =0x000006C8
str r1, [r5, r0]
bl FUN_0201CC08
mov r0, #4
bl FUN_0201CC24
mov r1, #0x5e
lsl r1, r1, #2
ldr r0, [r4, #8]
add r1, r5, r1
bl MOD17_021DAFA4
add r0, r5, #0
bl MOD17_021D8D60
mov r1, #0x35
lsl r1, r1, #4
add r0, r5, r1
sub r1, #0x81
mov r2, #0xd
bl MOD17_021DB9F4
mov r0, #0xaf
lsl r0, r0, #2
mov r1, #0xd
bl MOD17_021D74E0
mov r1, #0xd6
lsl r1, r1, #2
str r0, [r5, r1]
ldr r1, [r4]
add r0, r5, #0
mov r2, #0xa
bl MOD17_021D8DA8
add r0, r5, #0
bl MOD17_021D8E84
add r0, r5, #0
mov r1, #0
bl MOD17_021D8FD0
add r0, r5, #0
bl MOD17_021D9024
ldr r1, [r4, #0xc]
add r0, r5, #0
bl MOD17_021D9228
ldr r0, _021D84E4 ; =0x00000554
mov r2, #0xfa
add r1, r5, r0
str r1, [sp]
mov r1, #1
sub r0, #0xc8
lsl r2, r2, #2
str r1, [sp, #4]
add r1, r5, r2
sub r2, #0x8c
add r0, r5, r0
add r2, r5, r2
add r3, r5, #0
bl MOD17_021DB038
mov r0, #0xd
bl FUN_02014590
ldr r1, _021D84E8 ; =0x000006A4
str r0, [r5, r1]
mov r0, #0xd
mov r1, #1
bl FUN_02018FF4
ldr r2, _021D84EC ; =0x000006A8
mov r1, #0
str r0, [r5, r2]
sub r2, #0xc
str r1, [r5, r2]
mov r0, #0x35
add r2, r1, #0
bl FUN_0200433C
mov r0, #1
add sp, #8
pop {r3, r4, r5, pc}
.align 2, 0
_021D84D8: .word 0x000006D8
_021D84DC: .word MOD17_021D8FC8
_021D84E0: .word 0x000006C8
_021D84E4: .word 0x00000554
_021D84E8: .word 0x000006A4
_021D84EC: .word 0x000006A8
thumb_func_end MOD17_021D83E4
thumb_func_start MOD17_021D84F0
MOD17_021D84F0: ; 0x021D84F0
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r7, r0, #0
add r5, r1, #0
bl FUN_02006278
add r4, r0, #0
add r0, r7, #0
mov r6, #0
bl FUN_0200628C
ldr r1, [r5]
cmp r1, #0xc
bhi _021D85BA
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021D8518: ; jump table
.short _021D8532 - _021D8518 - 2 ; case 0
.short _021D8532 - _021D8518 - 2 ; case 1
.short _021D854E - _021D8518 - 2 ; case 2
.short _021D855E - _021D8518 - 2 ; case 3
.short _021D858A - _021D8518 - 2 ; case 4
.short _021D85AA - _021D8518 - 2 ; case 5
.short _021D85D8 - _021D8518 - 2 ; case 6
.short _021D860C - _021D8518 - 2 ; case 7
.short _021D8636 - _021D8518 - 2 ; case 8
.short _021D8678 - _021D8518 - 2 ; case 9
.short _021D86B2 - _021D8518 - 2 ; case 10
.short _021D86D4 - _021D8518 - 2 ; case 11
.short _021D86F2 - _021D8518 - 2 ; case 12
_021D8532:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r1, #0xd
str r1, [sp, #8]
mov r1, #5
add r2, r1, #0
add r3, r6, #0
bl FUN_0200E1D0
mov r0, #2
str r0, [r5]
b _021D8710
_021D854E:
bl FUN_0200E308
cmp r0, #0
beq _021D85BA
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021D8710
_021D855E:
ldr r0, [r0, #0x1c]
cmp r0, #1
bne _021D8584
mov r0, #1
bl FUN_02002BB8
ldr r0, _021D871C ; =0x00000554
ldr r2, _021D8720 ; =0x00000151
add r0, r4, r0
mov r1, #0x1a
mov r3, #0x2f
bl MOD17_021DCB80
ldr r1, _021D8724 ; =0x000006CC
str r0, [r4, r1]
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021D8710
_021D8584:
mov r0, #6
str r0, [r5]
b _021D8710
_021D858A:
ldr r0, _021D8724 ; =0x000006CC
ldr r0, [r4, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl FUN_0201BD70
cmp r0, #0
bne _021D85BA
ldr r0, _021D871C ; =0x00000554
add r0, r4, r0
bl MOD17_021DCBC0
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021D8710
_021D85AA:
ldr r0, _021D8728 ; =0x021C48B8
ldr r1, [r0, #0x48]
mov r0, #3
and r1, r0
ldr r0, _021D872C ; =0x021C48F8
ldrh r0, [r0, #0x20]
orr r0, r1
bne _021D85BC
_021D85BA:
b _021D8710
_021D85BC:
ldr r0, _021D871C ; =0x00000554
ldr r2, _021D8720 ; =0x00000151
add r0, r4, r0
mov r1, #0x1a
mov r3, #0x30
bl MOD17_021DCB48
add r0, r6, #0
bl FUN_02002BB8
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021D8710
_021D85D8:
ldr r1, _021D8730 ; =0x0000069C
ldr r0, [r4, r1]
cmp r0, #3
bne _021D85EE
add r1, r1, #4
add r0, r4, #0
add r1, r4, r1
bl MOD17_021D92BC
mov r0, #7
str r0, [r5]
_021D85EE:
ldr r0, _021D8734 ; =0x0000048C
add r0, r4, r0
bl MOD17_021DAF64
add r0, r4, #0
bl MOD17_021D9BE8
ldr r0, _021D871C ; =0x00000554
add r0, r4, r0
bl MOD17_021DCB30
add r0, r4, #0
bl MOD17_021D9140
b _021D8710
_021D860C:
mov r0, #0x6a
lsl r0, r0, #4
ldr r1, [r4, r0]
cmp r1, #0
beq _021D8710
add r1, r6, #0
str r1, [r4, r0]
mov r1, #8
str r1, [r5]
mov r1, #4
sub r0, r0, #4
str r1, [r4, r0]
mov r1, #0x47
lsl r1, r1, #4
add r0, r4, r1
sub r1, #0x88
add r1, r4, r1
mov r2, #0xe
bl MOD17_021DD464
b _021D8710
_021D8636:
ldr r1, _021D8730 ; =0x0000069C
ldr r0, [r4, r1]
cmp r0, #9
bne _021D864E
add r1, r1, #4
add r0, r4, #0
add r1, r4, r1
bl MOD17_021D942C
mov r0, #0xa
str r0, [r5]
b _021D8710
_021D864E:
cmp r0, #8
bne _021D8662
mov r0, #9
str r0, [r5]
mov r0, #5
str r0, [r4, r1]
add r0, r4, #0
bl MOD17_021D9C3C
b _021D8710
_021D8662:
add r0, r4, #0
bl MOD17_021D98F0
ldr r1, _021D8730 ; =0x0000069C
str r0, [r4, r1]
mov r0, #0x47
lsl r0, r0, #4
add r0, r4, r0
bl MOD17_021DD488
b _021D8710
_021D8678:
ldr r0, _021D8730 ; =0x0000069C
ldr r1, [r4, r0]
cmp r1, #6
bne _021D868C
mov r1, #1
add r0, #0x10
str r1, [r4, r0]
mov r0, #0xb
str r0, [r5]
b _021D8710
_021D868C:
cmp r1, #7
bne _021D869C
add r1, r6, #0
add r0, #0x10
str r1, [r4, r0]
mov r0, #0xb
str r0, [r5]
b _021D8710
_021D869C:
add r0, r4, #0
bl MOD17_021D9CAC
ldr r1, _021D8730 ; =0x0000069C
str r0, [r4, r1]
mov r0, #0x47
lsl r0, r0, #4
add r0, r4, r0
bl MOD17_021DD488
b _021D8710
_021D86B2:
mov r0, #0x6a
lsl r0, r0, #4
ldr r1, [r4, r0]
cmp r1, #0
beq _021D8710
add r2, r6, #0
str r2, [r4, r0]
mov r1, #6
str r1, [r5]
sub r0, r0, #4
str r2, [r4, r0]
mov r0, #0x47
lsl r0, r0, #4
add r0, r4, r0
bl MOD17_021DD494
b _021D8710
_021D86D4:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r1, #0xd
str r1, [sp, #8]
add r1, r6, #0
add r2, r1, #0
add r3, r1, #0
bl FUN_0200E1D0
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021D8710
_021D86F2:
bl FUN_0200E308
cmp r0, #0
beq _021D8710
add r0, r6, #0
str r0, [r5]
ldr r0, _021D8730 ; =0x0000069C
mov r1, #0xa
str r1, [r4, r0]
mov r0, #0x47
lsl r0, r0, #4
add r0, r4, r0
mov r6, #1
bl MOD17_021DD494
_021D8710:
add r0, r4, #0
bl MOD17_021D8D8C
add r0, r6, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.align 2, 0
_021D871C: .word 0x00000554
_021D8720: .word 0x00000151
_021D8724: .word 0x000006CC
_021D8728: .word 0x021C48B8
_021D872C: .word 0x021C48F8
_021D8730: .word 0x0000069C
_021D8734: .word 0x0000048C
thumb_func_end MOD17_021D84F0
thumb_func_start MOD17_021D8738
MOD17_021D8738: ; 0x021D8738
push {r4, r5, r6, lr}
add r6, r0, #0
bl FUN_02006278
add r4, r0, #0
add r0, r6, #0
bl FUN_0200628C
add r5, r0, #0
ldr r0, _021D8808 ; =0x000006AC
ldr r0, [r4, r0]
cmp r0, #1
bne _021D8768
ldr r0, [r5, #0x10]
mov r1, #7
bl FUN_0202A170
mov r1, #0xfa
lsl r1, r1, #2
ldr r0, [r5, #4]
ldr r2, [r5, #0x14]
add r1, r4, r1
bl MOD17_021D95AC
_021D8768:
ldr r1, [r5, #0x18]
cmp r1, #0
beq _021D8780
ldr r0, _021D8808 ; =0x000006AC
ldr r0, [r4, r0]
cmp r0, #1
bne _021D877C
mov r0, #1
str r0, [r1]
b _021D8780
_021D877C:
mov r0, #0
str r0, [r1]
_021D8780:
ldr r0, _021D880C ; =0x000006A4
ldr r0, [r4, r0]
bl FUN_020145A8
ldr r0, _021D8810 ; =0x000006A8
mov r1, #1
ldr r0, [r4, r0]
bl FUN_020191A4
add r0, r4, #0
bl MOD17_021D92AC
ldr r0, _021D8814 ; =0x0000048C
add r0, r4, r0
bl MOD17_021DB08C
add r0, r4, #0
bl MOD17_021D912C
add r0, r4, #0
bl MOD17_021D9014
add r0, r4, #0
bl MOD17_021D8E60
add r0, r4, #0
bl MOD17_021D8F40
mov r0, #0xd6
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD17_021D750C
mov r0, #0xd6
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
sub r0, #8
add r0, r4, r0
bl MOD17_021DBA1C
add r0, r4, #0
bl MOD17_021D8D94
mov r0, #0
add r1, r0, #0
bl FUN_02015F10
bl FUN_02015F1C
bl FUN_0201CD04
cmp r0, #1
beq _021D87F0
bl ErrorHandling
_021D87F0:
add r0, r6, #0
bl FUN_0200627C
mov r0, #0xd
bl FUN_020168D0
mov r0, #0xe
bl FUN_020168D0
mov r0, #1
pop {r4, r5, r6, pc}
nop
_021D8808: .word 0x000006AC
_021D880C: .word 0x000006A4
_021D8810: .word 0x000006A8
_021D8814: .word 0x0000048C
thumb_func_end MOD17_021D8738
thumb_func_start MOD17_021D8818
MOD17_021D8818: ; 0x021D8818
push {r3, r4, r5, lr}
sub sp, #8
mov r2, #2
add r5, r0, #0
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
bl FUN_0201681C
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
bl FUN_0201681C
ldr r1, _021D897C ; =0x000006D8
add r0, r5, #0
mov r2, #0xd
bl FUN_02006268
ldr r2, _021D897C ; =0x000006D8
mov r1, #0
add r4, r0, #0
bl memset
ldr r0, _021D8980 ; =MOD17_021D8FC8
add r1, r4, #0
bl FUN_02015F10
bl FUN_02015F1C
add r0, r5, #0
bl FUN_0200628C
add r5, r0, #0
ldr r0, [r5, #0xc]
ldr r1, _021D8984 ; =0x000006B4
str r0, [r4, r1]
ldr r2, [r5, #0x10]
add r0, r1, #4
str r2, [r4, r0]
add r0, r1, #0
ldr r2, [r5, #0x14]
add r0, #8
str r2, [r4, r0]
add r0, r1, #0
ldr r2, [r5, #8]
add r0, #0xc
str r2, [r4, r0]
ldr r0, [r5, #0x1c]
add r1, #0x10
str r0, [r4, r1]
bl FUN_0201CC08
mov r0, #4
bl FUN_0201CC24
mov r1, #0x5e
lsl r1, r1, #2
ldr r0, [r5, #0x18]
add r1, r4, r1
bl MOD17_021DAFA4
add r0, r4, #0
bl MOD17_021D8D60
ldr r0, [r4, #0x3c]
mov r1, #0
bl FUN_0201FD98
bl FUN_02033E74
mov r0, #1
mov r1, #0x10
bl FUN_02008D44
mov r0, #1
bl FUN_02008DDC
mov r1, #0x35
lsl r1, r1, #4
add r0, r4, r1
sub r1, #0x81
mov r2, #0xd
bl MOD17_021DB9F4
mov r0, #0xaf
lsl r0, r0, #2
mov r1, #0xd
bl MOD17_021D74E0
mov r1, #0xd6
lsl r1, r1, #2
str r0, [r4, r1]
ldr r1, [r5, #0x20]
ldr r0, _021D8988 ; =0x000006C8
str r1, [r4, r0]
sub r1, r0, #4
ldr r1, [r4, r1]
ldrb r1, [r1, #0x16]
cmp r1, #0
bne _021D88F2
ldr r0, [r5, #0xc]
bl MOD17_021D9C08
mov r1, #0x6b
lsl r1, r1, #4
str r0, [r4, r1]
b _021D88F8
_021D88F2:
mov r1, #0x14
sub r0, #0x18
str r1, [r4, r0]
_021D88F8:
mov r2, #0x6b
lsl r2, r2, #4
ldr r1, [r5]
ldr r2, [r4, r2]
add r0, r4, #0
bl MOD17_021D8E18
add r0, r4, #0
bl MOD17_021D8E84
add r0, r4, #0
mov r1, #0
bl MOD17_021D8FD0
add r0, r4, #0
bl MOD17_021D90A8
ldr r0, [r5, #0x20]
mov r1, #0x6b
str r0, [sp]
lsl r1, r1, #4
ldr r1, [r4, r1]
ldr r2, [r5, #8]
ldr r3, [r5, #0x1c]
add r0, r4, #0
bl MOD17_021D926C
ldr r0, _021D898C ; =0x00000554
mov r2, #0xfa
add r1, r4, r0
str r1, [sp]
mov r1, #0
sub r0, #0xc8
lsl r2, r2, #2
str r1, [sp, #4]
add r1, r4, r2
sub r2, #0x8c
add r0, r4, r0
add r2, r4, r2
add r3, r4, #0
bl MOD17_021DB038
mov r0, #0xd
bl FUN_02014590
ldr r1, _021D8990 ; =0x000006A4
str r0, [r4, r1]
mov r0, #0xd
mov r1, #1
bl FUN_02018FF4
ldr r1, _021D8994 ; =0x000006A8
mov r2, #0
str r0, [r4, r1]
add r0, r1, #0
sub r0, #0xc
add r1, #0x1c
str r2, [r4, r0]
ldr r0, [r4, r1]
ldrb r0, [r0, #0x16]
bl FUN_020833D4
mov r0, #1
add sp, #8
pop {r3, r4, r5, pc}
nop
_021D897C: .word 0x000006D8
_021D8980: .word MOD17_021D8FC8
_021D8984: .word 0x000006B4
_021D8988: .word 0x000006C8
_021D898C: .word 0x00000554
_021D8990: .word 0x000006A4
_021D8994: .word 0x000006A8
thumb_func_end MOD17_021D8818
thumb_func_start MOD17_021D8998
MOD17_021D8998: ; 0x021D8998
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
bl FUN_02006278
ldr r1, [r4]
add r5, r0, #0
mov r6, #0
cmp r1, #0x14
bhi _021D89FA
add r2, r1, r1
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_021D89B8: ; jump table
.short _021D89E2 - _021D89B8 - 2 ; case 0
.short _021D89F2 - _021D89B8 - 2 ; case 1
.short _021D8A04 - _021D89B8 - 2 ; case 2
.short _021D8A3C - _021D89B8 - 2 ; case 3
.short _021D8A5A - _021D89B8 - 2 ; case 4
.short _021D8A72 - _021D89B8 - 2 ; case 5
.short _021D8A90 - _021D89B8 - 2 ; case 6
.short _021D8AB2 - _021D89B8 - 2 ; case 7
.short _021D8AD0 - _021D89B8 - 2 ; case 8
.short _021D8AE8 - _021D89B8 - 2 ; case 9
.short _021D8B0A - _021D89B8 - 2 ; case 10
.short _021D8B1C - _021D89B8 - 2 ; case 11
.short _021D8B3A - _021D89B8 - 2 ; case 12
.short _021D8B56 - _021D89B8 - 2 ; case 13
.short _021D8BBC - _021D89B8 - 2 ; case 14
.short _021D8BEA - _021D89B8 - 2 ; case 15
.short _021D8C64 - _021D89B8 - 2 ; case 16
.short _021D8C64 - _021D89B8 - 2 ; case 17
.short _021D8C64 - _021D89B8 - 2 ; case 18
.short _021D8C04 - _021D89B8 - 2 ; case 19
.short _021D8C34 - _021D89B8 - 2 ; case 20
_021D89E2:
mov r0, #0x2a
mov r1, #0x1e
bl FUN_020053CC
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D89F2:
bl FUN_02005404
cmp r0, #0
beq _021D89FC
_021D89FA:
b _021D8C64
_021D89FC:
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8A04:
bl MOD17_021D9778
mov r2, #0x6b
lsl r2, r2, #4
ldr r2, [r5, r2]
add r0, r5, #0
add r1, r6, #0
bl MOD17_021D9BA4
ldr r0, _021D8C70 ; =0x000006B8
ldr r0, [r5, r0]
cmp r0, #3
beq _021D8A28
add r0, r5, #0
mov r1, #0x1a
bl MOD17_021D9B9C
b _021D8A30
_021D8A28:
add r0, r5, #0
mov r1, #0x1c
bl MOD17_021D9B9C
_021D8A30:
ldr r1, _021D8C74 ; =0x000006CC
str r0, [r5, r1]
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8A3C:
ldr r0, _021D8C74 ; =0x000006CC
ldr r0, [r5, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl FUN_0201BD70
cmp r0, #0
bne _021D8B42
add r0, r5, #0
bl MOD17_021D9BC4
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8A5A:
mov r1, #0x1b
lsl r1, r1, #6
ldr r1, [r5, r1]
add r1, #0x1d
bl MOD17_021D9B9C
ldr r1, _021D8C74 ; =0x000006CC
str r0, [r5, r1]
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8A72:
ldr r0, _021D8C74 ; =0x000006CC
ldr r0, [r5, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl FUN_0201BD70
cmp r0, #0
bne _021D8B42
add r0, r5, #0
bl MOD17_021D9BC4
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8A90:
ldr r1, _021D8C70 ; =0x000006B8
ldr r1, [r5, r1]
cmp r1, #3
beq _021D8AA0
mov r1, #0x2a
bl MOD17_021D9B9C
b _021D8AA6
_021D8AA0:
mov r1, #0x29
bl MOD17_021D9B9C
_021D8AA6:
ldr r1, _021D8C74 ; =0x000006CC
str r0, [r5, r1]
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8AB2:
ldr r0, _021D8C74 ; =0x000006CC
ldr r0, [r5, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl FUN_0201BD70
cmp r0, #0
bne _021D8B42
add r0, r5, #0
bl MOD17_021D9BC4
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8AD0:
ldr r0, _021D8C78 ; =0x000006C4
ldr r0, [r5, r0]
ldrb r0, [r0, #0x16]
cmp r0, #0
beq _021D8AE0
mov r0, #2
bl FUN_02031588
_021D8AE0:
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8AE8:
ldr r0, _021D8C78 ; =0x000006C4
ldr r0, [r5, r0]
ldrb r0, [r0, #0x16]
cmp r0, #0
beq _021D8B04
mov r0, #2
bl FUN_020315D8
cmp r0, #0
beq _021D8B42
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8B04:
add r0, r1, #1
str r0, [r4]
b _021D8C64
_021D8B0A:
bl MOD17_021D9800
ldr r0, _021D8C7C ; =0x00000643
bl FUN_020054C8
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8B1C:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r1, #0xd
str r1, [sp, #8]
mov r1, #0x11
mov r2, #0x13
add r3, r6, #0
bl FUN_0200E1D0
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8B3A:
bl FUN_0200E308
cmp r0, #0
bne _021D8B44
_021D8B42:
b _021D8C64
_021D8B44:
ldr r1, _021D8C80 ; =0x00000491
mov r0, #7
add r2, r6, #0
bl FUN_0200433C
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8B56:
ldr r0, _021D8C84 ; =0x0000069C
ldr r1, [r5, r0]
cmp r1, #3
bne _021D8B86
add r0, #0x28
ldr r0, [r5, r0]
mov r1, #1
bl FUN_02083A7C
ldr r0, _021D8C78 ; =0x000006C4
ldr r0, [r5, r0]
ldrb r0, [r0, #0x16]
cmp r0, #0
beq _021D8B80
ldr r0, _021D8C88 ; =0x00000554
ldr r2, _021D8C8C ; =0x00000151
add r0, r5, r0
mov r1, #0x1a
mov r3, #0x2e
bl MOD17_021DCB48
_021D8B80:
mov r0, #0xe
str r0, [r4]
b _021D8C64
_021D8B86:
ldr r0, _021D8C88 ; =0x00000554
add r0, r5, r0
bl MOD17_021DCBE4
cmp r0, #0
bne _021D8B9E
mov r0, #0xf
str r0, [r4]
mov r0, #0x1a
lsl r0, r0, #6
bl FUN_020054C8
_021D8B9E:
ldr r0, _021D8C90 ; =0x0000048C
add r0, r5, r0
bl MOD17_021DAF64
add r0, r5, #0
bl MOD17_021D9BE8
ldr r0, _021D8C88 ; =0x00000554
add r0, r5, r0
bl MOD17_021DCB30
add r0, r5, #0
bl MOD17_021D9140
b _021D8C64
_021D8BBC:
ldr r0, _021D8C88 ; =0x00000554
add r0, r5, r0
bl MOD17_021DCBE4
cmp r0, #0
bne _021D8BD4
mov r0, #0xf
str r0, [r4]
mov r0, #0x1a
lsl r0, r0, #6
bl FUN_020054C8
_021D8BD4:
add r0, r5, #0
bl MOD17_021D9BE8
ldr r0, _021D8C88 ; =0x00000554
add r0, r5, r0
bl MOD17_021DCB30
add r0, r5, #0
bl MOD17_021D9E28
b _021D8C64
_021D8BEA:
ldr r0, _021D8C88 ; =0x00000554
add r0, r5, r0
bl MOD17_021DCB30
ldr r0, _021D8C88 ; =0x00000554
add r0, r5, r0
bl MOD17_021DCBF4
cmp r0, #0
beq _021D8C64
mov r0, #0x13
str r0, [r4]
b _021D8C64
_021D8C04:
mov r0, #0x1a
lsl r0, r0, #6
bl FUN_02005508
cmp r0, #1
beq _021D8C64
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r1, #0xd
str r1, [sp, #8]
mov r1, #0x1a
add r2, r1, #0
add r3, r6, #0
bl FUN_0200E1D0
ldr r0, _021D8C94 ; =0x00000684
bl FUN_020054C8
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D8C64
_021D8C34:
bl FUN_0200E308
cmp r0, #0
beq _021D8C64
add r0, r6, #0
str r0, [r4]
mov r2, #1
ldr r0, _021D8C84 ; =0x0000069C
mov r1, #0xa
str r1, [r5, r0]
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _021D8C98 ; =0xFFFF1FFF
mov r6, #1
and r0, r1
str r0, [r2]
mov r0, #0xfa
lsl r0, r0, #2
add r1, r6, #0
add r0, r5, r0
sub r1, #0x41
mov r2, #0x28
bl MOD17_021DA118
_021D8C64:
add r0, r5, #0
bl MOD17_021D8D8C
add r0, r6, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.align 2, 0
_021D8C70: .word 0x000006B8
_021D8C74: .word 0x000006CC
_021D8C78: .word 0x000006C4
_021D8C7C: .word 0x00000643
_021D8C80: .word 0x00000491
_021D8C84: .word 0x0000069C
_021D8C88: .word 0x00000554
_021D8C8C: .word 0x00000151
_021D8C90: .word 0x0000048C
_021D8C94: .word 0x00000684
_021D8C98: .word 0xFFFF1FFF
thumb_func_end MOD17_021D8998
thumb_func_start MOD17_021D8C9C
MOD17_021D8C9C: ; 0x021D8C9C
push {r3, r4, r5, lr}
add r5, r0, #0
bl FUN_02006278
add r4, r0, #0
add r0, r5, #0
bl FUN_0200628C
ldr r2, _021D8D50 ; =0x000006B4
add r3, r0, #0
mov r1, #0xfa
ldr r0, [r3, #4]
lsl r1, r1, #2
ldr r2, [r4, r2]
ldr r3, [r3, #0x24]
add r1, r4, r1
bl MOD17_021D964C
ldr r0, _021D8D54 ; =0x000006A4
ldr r0, [r4, r0]
bl FUN_020145A8
ldr r0, _021D8D58 ; =0x000006A8
mov r1, #1
ldr r0, [r4, r0]
bl FUN_020191A4
add r0, r4, #0
bl MOD17_021D92AC
ldr r0, _021D8D5C ; =0x0000048C
add r0, r4, r0
bl MOD17_021DB08C
add r0, r4, #0
bl MOD17_021D912C
add r0, r4, #0
bl MOD17_021D9014
add r0, r4, #0
bl MOD17_021D8E60
add r0, r4, #0
bl MOD17_021D8F40
mov r0, #0xd6
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD17_021D750C
mov r0, #0xd6
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
sub r0, #8
add r0, r4, r0
bl MOD17_021DBA1C
add r0, r4, #0
bl MOD17_021D8D94
mov r0, #0
add r1, r0, #0
bl FUN_02015F10
bl FUN_02015F1C
bl FUN_0201CD04
cmp r0, #1
beq _021D8D30
bl ErrorHandling
_021D8D30:
add r0, r5, #0
bl FUN_0200627C
mov r0, #0xd
bl FUN_020168D0
mov r0, #0xe
bl FUN_020168D0
bl FUN_02083404
bl FUN_02033ED0
mov r0, #1
pop {r3, r4, r5, pc}
nop
_021D8D50: .word 0x000006B4
_021D8D54: .word 0x000006A4
_021D8D58: .word 0x000006A8
_021D8D5C: .word 0x0000048C
thumb_func_end MOD17_021D8C9C
thumb_func_start MOD17_021D8D60
MOD17_021D8D60: ; 0x021D8D60
push {r4, lr}
sub sp, #0x18
add r4, r0, #0
bl MOD17_021D7794
add r0, r4, #0
bl MOD17_021D77D4
add r0, r4, #0
add r1, sp, #0
bl MOD17_021D7A00
add r0, r4, #0
add r1, sp, #0
bl MOD17_021D78A0
add r0, sp, #0
bl MOD17_021D7A24
add sp, #0x18
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D8D60
thumb_func_start MOD17_021D8D8C
MOD17_021D8D8C: ; 0x021D8D8C
ldr r3, _021D8D90 ; =MOD17_021D786C
bx r3
.align 2, 0
_021D8D90: .word MOD17_021D786C
thumb_func_end MOD17_021D8D8C
thumb_func_start MOD17_021D8D94
MOD17_021D8D94: ; 0x021D8D94
push {r4, lr}
add r4, r0, #0
bl MOD17_021D78BC
add r0, r4, #0
bl MOD17_021D7828
bl MOD17_021D77B4
pop {r4, pc}
thumb_func_end MOD17_021D8D94
thumb_func_start MOD17_021D8DA8
MOD17_021D8DA8: ; 0x021D8DA8
push {r4, r5, lr}
sub sp, #0x34
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
str r0, [sp, #0x10]
ldr r0, [r5, #4]
mov r1, #0xd6
str r0, [sp, #0x14]
ldr r0, [r5, #0x10]
lsl r1, r1, #2
str r0, [sp, #0x18]
ldr r0, [r5, #0x28]
str r0, [sp, #0x1c]
ldr r0, [r5, #0x20]
str r0, [sp, #0x20]
ldr r0, [r5, #0x38]
str r2, [sp, #0x30]
str r0, [sp, #0x24]
ldr r0, [r5, r1]
str r0, [sp, #0x28]
add r0, r1, #0
sub r0, #8
add r0, r5, r0
add r1, #0x90
str r0, [sp, #0x2c]
add r0, r5, r1
add r1, sp, #0x10
bl MOD17_021D9F80
mov r0, #0xfa
lsl r0, r0, #2
add r0, r5, r0
add r1, r4, #0
add r2, sp, #0
mov r3, #0xe
bl MOD17_021DA024
add r0, r5, #0
add r1, sp, #0
bl MOD17_021DB6D8
mov r0, #0xfa
lsl r0, r0, #2
add r0, r5, r0
bl MOD17_021DA178
mov r0, #0xfa
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
mov r2, #0xe
bl MOD17_021DA2F0
add sp, #0x34
pop {r4, r5, pc}
thumb_func_end MOD17_021D8DA8
thumb_func_start MOD17_021D8E18
MOD17_021D8E18: ; 0x021D8E18
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
bl MOD17_021D8DA8
mov r0, #0x46
lsl r0, r0, #4
add r0, r4, r0
add r1, sp, #0xc
add r2, sp, #8
bl MOD17_021DB878
mov r0, #0x46
lsl r0, r0, #4
add r0, r4, r0
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DB960
ldr r3, [sp, #8]
mov r0, #0x46
lsr r2, r3, #0x1f
add r2, r3, r2
asr r3, r2, #1
ldr r2, [sp]
lsl r0, r0, #4
sub r3, r3, r2
mov r2, #0x8d
add r0, r4, r0
mov r1, #0xc0
sub r2, r2, r3
bl MOD17_021DB7F4
add sp, #0x10
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D8E18
thumb_func_start MOD17_021D8E60
MOD17_021D8E60: ; 0x021D8E60
push {r4, lr}
add r4, r0, #0
mov r0, #0xfa
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021DA33C
mov r0, #0xfa
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021DA100
mov r0, #0xfa
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021D9FD4
pop {r4, pc}
thumb_func_end MOD17_021D8E60
thumb_func_start MOD17_021D8E84
MOD17_021D8E84: ; 0x021D8E84
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
add r5, r0, #0
ldr r0, [r5]
str r0, [sp]
ldr r0, [r5, #4]
str r0, [sp, #4]
ldr r0, [r5, #0x10]
str r0, [sp, #8]
ldr r0, [r5, #0x28]
str r0, [sp, #0xc]
ldr r0, [r5, #0x38]
str r0, [sp, #0x10]
mov r0, #0x5e
lsl r0, r0, #2
add r0, r5, r0
str r0, [sp, #0x28]
mov r0, #0xd6
lsl r0, r0, #2
ldr r1, [r5, r0]
str r1, [sp, #0x14]
add r1, r0, #0
sub r1, #8
add r1, r5, r1
str r1, [sp, #0x18]
mov r1, #0xe
str r1, [sp, #0x1c]
mov r1, #2
str r1, [sp, #0x20]
mov r1, #1
add r0, r0, #4
str r1, [sp, #0x24]
add r0, r5, r0
add r1, sp, #0
bl MOD17_021DA5A8
mov r0, #0xd7
lsl r0, r0, #2
mov r1, #0
add r0, r5, r0
add r2, r1, #0
bl MOD17_021DA918
mov r6, #0
_021D8EDC:
mov r0, #0x5e
lsl r0, r0, #2
add r0, r5, r0
add r1, r6, #0
bl MOD17_021DAFF4
add r7, r0, #0
mov r4, #0
cmp r7, #0
ble _021D8F04
_021D8EF0:
mov r0, #0xd7
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
add r2, r6, #0
bl MOD17_021DA6FC
add r4, r4, #1
cmp r4, r7
blt _021D8EF0
_021D8F04:
add r6, r6, #1
cmp r6, #0x64
blt _021D8EDC
mov r7, #0xd7
mov r6, #0x5e
mov r4, #0
lsl r7, r7, #2
lsl r6, r6, #2
_021D8F14:
add r0, r5, r6
add r1, r4, #0
bl MOD17_021DB008
add r2, r0, #0
cmp r2, #0x12
bge _021D8F2A
add r0, r5, r7
mov r1, #1
bl MOD17_021DA6FC
_021D8F2A:
add r4, r4, #1
cmp r4, #0x12
blt _021D8F14
mov r0, #0xd7
lsl r0, r0, #2
add r0, r5, r0
bl MOD17_021DA844
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D8E84
thumb_func_start MOD17_021D8F40
MOD17_021D8F40: ; 0x021D8F40
push {r4, lr}
add r4, r0, #0
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021DAA60
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021DA818
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021DA5E0
pop {r4, pc}
thumb_func_end MOD17_021D8F40
thumb_func_start MOD17_021D8F64
MOD17_021D8F64: ; 0x021D8F64
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r0, _021D8FC4 ; =0x04000008
mov r2, #3
ldrh r3, [r0]
mov r1, #1
bic r3, r2
orr r1, r3
strh r1, [r0]
ldrh r1, [r0, #2]
bic r1, r2
strh r1, [r0, #2]
ldrh r3, [r0, #4]
mov r1, #2
bic r3, r2
orr r1, r3
strh r1, [r0, #4]
ldrh r3, [r0, #6]
mov r1, #3
bic r3, r2
add r2, r3, #0
orr r2, r1
strh r2, [r0, #6]
add r3, r1, #0
ldr r0, [r4, #0x38]
add r2, r1, #0
sub r3, #0x13
bl FUN_020179E0
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
bl MOD17_021DA9AC
mov r1, #0
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
mov r2, #2
add r3, r1, #0
str r1, [sp]
bl MOD17_021DA9F8
add sp, #4
pop {r3, r4, pc}
nop
_021D8FC4: .word 0x04000008
thumb_func_end MOD17_021D8F64
thumb_func_start MOD17_021D8FC8
MOD17_021D8FC8: ; 0x021D8FC8
ldr r3, _021D8FCC ; =MOD17_021D7AE4
bx r3
.align 2, 0
_021D8FCC: .word MOD17_021D7AE4
thumb_func_end MOD17_021D8FC8
thumb_func_start MOD17_021D8FD0
MOD17_021D8FD0: ; 0x021D8FD0
push {r3, lr}
sub sp, #0x30
ldr r2, [r0, #0x38]
str r2, [sp]
mov r2, #0x19
str r2, [sp, #4]
lsl r2, r1, #1
add r1, r2, #0
add r1, #0x79
str r1, [sp, #8]
mov r1, #0x85
str r1, [sp, #0xc]
mov r1, #1
add r2, #0x7a
str r2, [sp, #0x10]
mov r2, #0
str r1, [sp, #0x1c]
str r1, [sp, #0x20]
mov r1, #2
str r1, [sp, #0x24]
mov r1, #0xe
str r1, [sp, #0x2c]
ldr r1, _021D9010 ; =0x000004A8
str r2, [sp, #0x14]
add r0, r0, r1
add r1, sp, #0
str r2, [sp, #0x18]
str r2, [sp, #0x28]
bl MOD17_021DBD04
add sp, #0x30
pop {r3, pc}
.align 2, 0
_021D9010: .word 0x000004A8
thumb_func_end MOD17_021D8FD0
thumb_func_start MOD17_021D9014
MOD17_021D9014: ; 0x021D9014
ldr r1, _021D901C ; =0x000004A8
ldr r3, _021D9020 ; =MOD17_021DBD4C
add r0, r0, r1
bx r3
.align 2, 0
_021D901C: .word 0x000004A8
_021D9020: .word MOD17_021DBD4C
thumb_func_end MOD17_021D9014
thumb_func_start MOD17_021D9024
MOD17_021D9024: ; 0x021D9024
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r0, _021D9090 ; =0x000004D4
add r1, r4, #0
add r0, r4, r0
bl MOD17_021DC304
ldr r0, _021D9090 ; =0x000004D4
mov r1, #0
ldr r2, _021D9094 ; =MOD17_021D9180
add r0, r4, r0
add r3, r4, #0
str r1, [sp]
bl MOD17_021DC538
mov r0, #0
str r0, [sp]
ldr r0, _021D9090 ; =0x000004D4
ldr r2, _021D9098 ; =MOD17_021D91A0
add r0, r4, r0
mov r1, #1
add r3, r4, #0
bl MOD17_021DC538
mov r0, #0
str r0, [sp]
ldr r0, _021D9090 ; =0x000004D4
ldr r2, _021D909C ; =MOD17_021D91C0
add r0, r4, r0
mov r1, #2
add r3, r4, #0
bl MOD17_021DC538
mov r0, #0
str r0, [sp]
ldr r0, _021D9090 ; =0x000004D4
ldr r2, _021D90A0 ; =MOD17_021D91F4
add r0, r4, r0
mov r1, #3
add r3, r4, #0
bl MOD17_021DC538
mov r0, #0
str r0, [sp]
ldr r0, _021D9090 ; =0x000004D4
ldr r2, _021D90A4 ; =MOD17_021D9160
add r0, r4, r0
mov r1, #4
add r3, r4, #0
bl MOD17_021DC538
add sp, #4
pop {r3, r4, pc}
.align 2, 0
_021D9090: .word 0x000004D4
_021D9094: .word MOD17_021D9180
_021D9098: .word MOD17_021D91A0
_021D909C: .word MOD17_021D91C0
_021D90A0: .word MOD17_021D91F4
_021D90A4: .word MOD17_021D9160
thumb_func_end MOD17_021D9024
thumb_func_start MOD17_021D90A8
MOD17_021D90A8: ; 0x021D90A8
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r0, _021D9114 ; =0x000004D4
add r1, r4, #0
add r0, r4, r0
bl MOD17_021DC304
ldr r0, _021D9114 ; =0x000004D4
mov r1, #0
ldr r2, _021D9118 ; =MOD17_021D9180
add r0, r4, r0
add r3, r4, #0
str r1, [sp]
bl MOD17_021DC538
mov r0, #0
str r0, [sp]
ldr r0, _021D9114 ; =0x000004D4
ldr r2, _021D911C ; =MOD17_021D91A0
add r0, r4, r0
mov r1, #1
add r3, r4, #0
bl MOD17_021DC538
mov r0, #0
str r0, [sp]
ldr r0, _021D9114 ; =0x000004D4
ldr r2, _021D9120 ; =MOD17_021D91C0
add r0, r4, r0
mov r1, #2
add r3, r4, #0
bl MOD17_021DC538
mov r0, #0
str r0, [sp]
ldr r0, _021D9114 ; =0x000004D4
ldr r2, _021D9124 ; =MOD17_021D91F4
add r0, r4, r0
mov r1, #3
add r3, r4, #0
bl MOD17_021DC538
mov r0, #0
str r0, [sp]
ldr r0, _021D9114 ; =0x000004D4
ldr r2, _021D9128 ; =MOD17_021D9160
add r0, r4, r0
mov r1, #4
add r3, r4, #0
bl MOD17_021DC538
add sp, #4
pop {r3, r4, pc}
.align 2, 0
_021D9114: .word 0x000004D4
_021D9118: .word MOD17_021D9180
_021D911C: .word MOD17_021D91A0
_021D9120: .word MOD17_021D91C0
_021D9124: .word MOD17_021D91F4
_021D9128: .word MOD17_021D9160
thumb_func_end MOD17_021D90A8
thumb_func_start MOD17_021D912C
MOD17_021D912C: ; 0x021D912C
add r1, r0, #0
ldr r0, _021D9138 ; =0x000004D4
ldr r3, _021D913C ; =MOD17_021DC468
add r0, r1, r0
bx r3
nop
_021D9138: .word 0x000004D4
_021D913C: .word MOD17_021DC468
thumb_func_end MOD17_021D912C
thumb_func_start MOD17_021D9140
MOD17_021D9140: ; 0x021D9140
ldr r1, _021D9148 ; =0x000004D4
ldr r3, _021D914C ; =MOD17_021DC4CC
add r0, r0, r1
bx r3
.align 2, 0
_021D9148: .word 0x000004D4
_021D914C: .word MOD17_021DC4CC
thumb_func_end MOD17_021D9140
thumb_func_start MOD17_021D9150
MOD17_021D9150: ; 0x021D9150
ldr r1, _021D9158 ; =0x000004D4
ldr r3, _021D915C ; =MOD17_021DC4E4
add r0, r0, r1
bx r3
.align 2, 0
_021D9158: .word 0x000004D4
_021D915C: .word MOD17_021DC4E4
thumb_func_end MOD17_021D9150
thumb_func_start MOD17_021D9160
MOD17_021D9160: ; 0x021D9160
push {r4, lr}
mov r0, #0xd7
add r4, r1, #0
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021DAAB8
cmp r0, #0
beq _021D9178
ldr r0, _021D917C ; =0x0000069C
mov r1, #3
str r1, [r4, r0]
_021D9178:
pop {r4, pc}
nop
_021D917C: .word 0x0000069C
thumb_func_end MOD17_021D9160
thumb_func_start MOD17_021D9180
MOD17_021D9180: ; 0x021D9180
push {r4, lr}
mov r0, #0xd7
add r4, r1, #0
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021DAA6C
add r1, r0, #0
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
mov r2, #0
bl MOD17_021DA8B0
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D9180
thumb_func_start MOD17_021D91A0
MOD17_021D91A0: ; 0x021D91A0
push {r4, lr}
mov r0, #0xd7
add r4, r1, #0
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021DAA6C
add r1, r0, #0
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
mov r2, #1
bl MOD17_021DA8B0
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D91A0
thumb_func_start MOD17_021D91C0
MOD17_021D91C0: ; 0x021D91C0
push {r4, lr}
ldr r0, _021D91F0 ; =0x0000069C
add r4, r1, #0
ldr r0, [r4, r0]
cmp r0, #0
beq _021D91EC
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
bl MOD17_021DAA7C
add r2, r0, #0
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
bl MOD17_021DA918
ldr r0, _021D91F0 ; =0x0000069C
mov r1, #0
str r1, [r4, r0]
_021D91EC:
pop {r4, pc}
nop
_021D91F0: .word 0x0000069C
thumb_func_end MOD17_021D91C0
thumb_func_start MOD17_021D91F4
MOD17_021D91F4: ; 0x021D91F4
push {r4, lr}
ldr r0, _021D9224 ; =0x0000069C
add r4, r1, #0
ldr r0, [r4, r0]
cmp r0, #1
beq _021D9220
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
mov r1, #1
bl MOD17_021DAA7C
add r2, r0, #0
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
mov r1, #1
bl MOD17_021DA918
ldr r0, _021D9224 ; =0x0000069C
mov r1, #1
str r1, [r4, r0]
_021D9220:
pop {r4, pc}
nop
_021D9224: .word 0x0000069C
thumb_func_end MOD17_021D91F4
thumb_func_start MOD17_021D9228
MOD17_021D9228: ; 0x021D9228
push {r4, r5, lr}
sub sp, #0x24
add r4, r0, #0
add r2, sp, #0
mov r0, #0
add r3, r1, #0
add r5, r2, #0
add r1, r0, #0
stmia r5!, {r0, r1}
stmia r5!, {r0, r1}
stmia r5!, {r0, r1}
stmia r5!, {r0, r1}
str r0, [r5]
ldr r0, [r4, #0x38]
add r1, r2, #0
str r0, [sp]
ldr r0, [r4, #0x3c]
mov r2, #0xf
str r0, [sp, #4]
add r0, r4, #0
add r0, #0x40
str r0, [sp, #8]
mov r0, #0xa
str r0, [sp, #0x10]
ldr r0, _021D9268 ; =0x00000554
str r3, [sp, #0xc]
add r0, r4, r0
bl MOD17_021DC950
add sp, #0x24
pop {r4, r5, pc}
nop
_021D9268: .word 0x00000554
thumb_func_end MOD17_021D9228
thumb_func_start MOD17_021D926C
MOD17_021D926C: ; 0x021D926C
push {r3, r4, lr}
sub sp, #0x24
ldr r4, [r0, #0x38]
str r4, [sp]
ldr r4, [r0, #0x3c]
str r1, [sp, #0x10]
ldr r1, _021D92A4 ; =0x00000151
str r4, [sp, #4]
str r1, [sp, #0x14]
add r1, r2, #7
str r1, [sp, #0x18]
mov r1, #0x3c
str r1, [sp, #0x1c]
ldr r1, [sp, #0x30]
add r4, r0, #0
str r1, [sp, #0xc]
ldr r1, _021D92A8 ; =0x00000554
add r4, #0x40
add r0, r0, r1
add r1, sp, #0
mov r2, #0x3f
str r4, [sp, #8]
str r3, [sp, #0x20]
bl MOD17_021DC950
add sp, #0x24
pop {r3, r4, pc}
nop
_021D92A4: .word 0x00000151
_021D92A8: .word 0x00000554
thumb_func_end MOD17_021D926C
thumb_func_start MOD17_021D92AC
MOD17_021D92AC: ; 0x021D92AC
ldr r1, _021D92B4 ; =0x00000554
ldr r3, _021D92B8 ; =MOD17_021DCA80
add r0, r0, r1
bx r3
.align 2, 0
_021D92B4: .word 0x00000554
_021D92B8: .word MOD17_021DCA80
thumb_func_end MOD17_021D92AC
thumb_func_start MOD17_021D92BC
MOD17_021D92BC: ; 0x021D92BC
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
ldr r0, _021D92E0 ; =MOD17_021D92E4
mov r1, #0x10
mov r2, #0xa
mov r3, #0xd
bl FUN_020061E8
bl FUN_0201B6C8
str r5, [r0]
str r4, [r0, #4]
mov r1, #0
str r1, [r0, #8]
str r1, [r0, #0xc]
pop {r3, r4, r5, pc}
nop
_021D92E0: .word MOD17_021D92E4
thumb_func_end MOD17_021D92BC
thumb_func_start MOD17_021D92E4
MOD17_021D92E4: ; 0x021D92E4
push {r3, r4, lr}
sub sp, #4
add r4, r1, #0
ldr r1, [r4, #0xc]
cmp r1, #9
bls _021D92F2
b _021D9424
_021D92F2:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021D92FE: ; jump table
.short _021D9312 - _021D92FE - 2 ; case 0
.short _021D9334 - _021D92FE - 2 ; case 1
.short _021D934E - _021D92FE - 2 ; case 2
.short _021D936A - _021D92FE - 2 ; case 3
.short _021D937E - _021D92FE - 2 ; case 4
.short _021D93A4 - _021D92FE - 2 ; case 5
.short _021D93C4 - _021D92FE - 2 ; case 6
.short _021D93EA - _021D92FE - 2 ; case 7
.short _021D9406 - _021D92FE - 2 ; case 8
.short _021D941A - _021D92FE - 2 ; case 9
_021D9312:
mov r0, #0xd7
ldr r1, [r4]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #3
mov r2, #0
bl MOD17_021DA870
cmp r0, #0
bne _021D932A
bl ErrorHandling
_021D932A:
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D9334:
mov r0, #0xd7
ldr r1, [r4]
lsl r0, r0, #2
add r0, r1, r0
bl MOD17_021DAAB8
cmp r0, #0
beq _021D9424
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D934E:
mov r0, #1
str r0, [sp]
mov r0, #8
add r1, r0, #0
sub r1, #0x18
mov r2, #0
mov r3, #0xa
bl FUN_0200A208
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D936A:
mov r0, #1
bl FUN_0200A344
cmp r0, #0
beq _021D9424
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D937E:
ldr r1, [r4]
ldr r0, _021D9428 ; =0x000004D4
mov r2, #8
add r0, r1, r0
mov r1, #0
bl MOD17_021DC508
ldr r0, [r4, #8]
add r0, r0, #1
str r0, [r4, #8]
cmp r0, #8
blt _021D9424
mov r0, #0
str r0, [r4, #8]
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D93A4:
mov r1, #7
add r0, r4, #0
mvn r1, r1
mov r2, #5
mov r3, #8
bl MOD17_021D970C
cmp r0, #0
beq _021D9424
mov r0, #0
str r0, [r4, #8]
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D93C4:
ldr r0, [r4]
mov r1, #1
bl MOD17_021D8FD0
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x38]
mov r2, #3
mov r3, #0
bl FUN_0201AEE4
ldr r0, [r4]
bl MOD17_021D9848
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D93EA:
mov r1, #0
mov r0, #1
add r2, r1, #0
str r0, [sp]
mov r0, #8
sub r2, #0x10
mov r3, #0xa
bl FUN_0200A208
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D9406:
mov r0, #1
bl FUN_0200A344
cmp r0, #0
beq _021D9424
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D941A:
ldr r1, [r4, #4]
mov r2, #1
str r2, [r1]
bl FUN_0200621C
_021D9424:
add sp, #4
pop {r3, r4, pc}
.align 2, 0
_021D9428: .word 0x000004D4
thumb_func_end MOD17_021D92E4
thumb_func_start MOD17_021D942C
MOD17_021D942C: ; 0x021D942C
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
ldr r0, _021D9450 ; =MOD17_021D9454
mov r1, #0x10
mov r2, #0xa
mov r3, #0xd
bl FUN_020061E8
bl FUN_0201B6C8
str r5, [r0]
str r4, [r0, #4]
mov r1, #0
str r1, [r0, #8]
str r1, [r0, #0xc]
pop {r3, r4, r5, pc}
nop
_021D9450: .word MOD17_021D9454
thumb_func_end MOD17_021D942C
thumb_func_start MOD17_021D9454
MOD17_021D9454: ; 0x021D9454
push {r3, r4, lr}
sub sp, #4
add r4, r1, #0
ldr r1, [r4, #0xc]
cmp r1, #9
bls _021D9462
b _021D95A4
_021D9462:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021D946E: ; jump table
.short _021D9482 - _021D946E - 2 ; case 0
.short _021D949E - _021D946E - 2 ; case 1
.short _021D94B2 - _021D946E - 2 ; case 2
.short _021D94E6 - _021D946E - 2 ; case 3
.short _021D9506 - _021D946E - 2 ; case 4
.short _021D952E - _021D946E - 2 ; case 5
.short _021D954A - _021D946E - 2 ; case 6
.short _021D955E - _021D946E - 2 ; case 7
.short _021D9580 - _021D946E - 2 ; case 8
.short _021D959A - _021D946E - 2 ; case 9
_021D9482:
mov r0, #1
str r0, [sp]
mov r0, #8
add r1, r0, #0
sub r1, #0x18
mov r2, #0
mov r3, #0xa
bl FUN_0200A208
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D949E:
mov r0, #1
bl FUN_0200A344
cmp r0, #0
beq _021D95A4
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D94B2:
ldr r0, [r4]
bl MOD17_021D98D0
ldr r0, [r4]
bl MOD17_021D8F64
ldr r0, [r4]
bl MOD17_021D9150
ldr r0, [r4]
mov r1, #0
bl MOD17_021D8FD0
ldr r0, [r4]
mov r2, #3
add r3, r2, #0
ldr r0, [r0, #0x38]
mov r1, #1
sub r3, #0x2b
bl FUN_0201AEE4
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D94E6:
mov r1, #8
add r2, r1, #0
add r0, r4, #0
sub r2, #0xd
add r3, r1, #0
bl MOD17_021D970C
cmp r0, #0
beq _021D95A4
mov r0, #0
str r0, [r4, #8]
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D9506:
ldr r1, [r4]
ldr r0, _021D95A8 ; =0x000004D4
add r0, r1, r0
mov r1, #0
add r2, r1, #0
sub r2, #8
bl MOD17_021DC508
ldr r0, [r4, #8]
add r0, r0, #1
str r0, [r4, #8]
cmp r0, #8
blt _021D95A4
mov r0, #0
str r0, [r4, #8]
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D952E:
mov r1, #0
mov r0, #1
add r2, r1, #0
str r0, [sp]
mov r0, #8
sub r2, #0x10
mov r3, #0xa
bl FUN_0200A208
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D954A:
mov r0, #1
bl FUN_0200A344
cmp r0, #0
beq _021D95A4
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D955E:
mov r0, #0xd7
ldr r1, [r4]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #0
add r2, r1, #0
bl MOD17_021DA870
cmp r0, #0
bne _021D9576
bl ErrorHandling
_021D9576:
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D9580:
mov r0, #0xd7
ldr r1, [r4]
lsl r0, r0, #2
add r0, r1, r0
bl MOD17_021DAAB8
cmp r0, #0
beq _021D95A4
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_021D959A:
ldr r1, [r4, #4]
mov r2, #1
str r2, [r1]
bl FUN_0200621C
_021D95A4:
add sp, #4
pop {r3, r4, pc}
.align 2, 0
_021D95A8: .word 0x000004D4
thumb_func_end MOD17_021D9454
thumb_func_start MOD17_021D95AC
MOD17_021D95AC: ; 0x021D95AC
push {r3, r4, r5, r6, r7, lr}
str r1, [sp]
add r6, r0, #0
add r4, r2, #0
bl FUN_02027310
ldr r1, [sp]
ldr r2, [sp]
add r1, #0x84
ldr r1, [r1]
add r0, r6, #0
add r2, #0x78
bl FUN_02027348
cmp r4, #0
beq _021D95EC
add r0, r4, #0
mov r1, #0xd
bl FUN_020239A0
add r5, r0, #0
add r0, r4, #0
bl FUN_020239CC
add r2, r0, #0
add r0, r6, #0
add r1, r5, #0
bl FUN_020274F0
add r0, r5, #0
bl FUN_02021A20
_021D95EC:
ldr r0, [sp]
mov r5, #0
add r7, r0, #0
ldr r4, [r0, #0x1c]
add r7, #0x14
cmp r4, r7
beq _021D9612
_021D95FA:
ldr r0, [r4, #4]
cmp r0, #0
bne _021D960C
ldr r1, [r4]
add r0, r6, #0
add r2, r5, #0
bl FUN_02027380
add r5, r5, #1
_021D960C:
ldr r4, [r4, #8]
cmp r4, r7
bne _021D95FA
_021D9612:
ldr r0, [sp]
ldr r4, [r0, #0xc]
add r7, r0, #4
cmp r4, r7
beq _021D9634
_021D961C:
ldr r0, [r4, #4]
cmp r0, #0
bne _021D962E
ldr r1, [r4]
add r0, r6, #0
add r2, r5, #0
bl FUN_02027380
add r5, r5, #1
_021D962E:
ldr r4, [r4, #8]
cmp r4, r7
bne _021D961C
_021D9634:
ldr r1, [sp]
add r0, r6, #0
ldr r1, [r1, #0x74]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl FUN_02027448
add r0, r6, #0
bl FUN_020272D4
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D95AC
thumb_func_start MOD17_021D964C
MOD17_021D964C: ; 0x021D964C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r0, #0
str r1, [sp]
mov r0, #0xd
mov r1, #0xac
str r2, [sp, #4]
add r4, r3, #0
bl AllocFromHeap
add r6, r0, #0
bl MOD17_021D9CD4
ldr r1, [sp]
ldr r2, [sp]
add r1, #0x84
ldr r1, [r1]
add r0, r7, #0
add r2, #0x78
bl FUN_02027778
cmp r4, #0
beq _021D969A
add r0, r4, #0
mov r1, #0xd
bl FUN_020239A0
add r5, r0, #0
add r0, r4, #0
bl FUN_020239CC
add r2, r0, #0
add r0, r7, #0
add r1, r5, #0
bl FUN_02027A58
add r0, r5, #0
bl FUN_02021A20
_021D969A:
ldr r1, [sp]
add r0, r6, #0
add r1, #0x14
mov r2, #1
bl MOD17_021D9E00
ldr r1, [sp]
add r0, r6, #0
add r1, r1, #4
mov r2, #0
bl MOD17_021D9E00
add r0, r6, #0
bl MOD17_021D9D14
mov r4, #0
add r5, r4, #0
_021D96BC:
add r0, r6, #0
add r1, r5, #0
bl MOD17_021D9D84
cmp r0, #1
bne _021D96DE
add r0, r6, #0
add r1, r5, #0
bl MOD17_021D9D70
add r1, r0, #0
ldr r1, [r1]
add r0, r7, #0
add r2, r4, #0
bl FUN_020277B4
add r4, r4, #1
_021D96DE:
add r5, r5, #1
cmp r5, #0x15
blt _021D96BC
ldr r1, [sp]
add r0, r7, #0
ldr r1, [r1, #0x74]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl FUN_0202787C
ldr r1, [sp, #4]
add r0, r7, #0
bl FUN_020278AC
add r0, r7, #0
bl FUN_02027710
add r0, r6, #0
bl FreeToHeap
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D964C
thumb_func_start MOD17_021D970C
MOD17_021D970C: ; 0x021D970C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5, #8]
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
cmp r0, #8
bge _021D9728
mov r0, #0xfa
ldr r3, [r5]
lsl r0, r0, #2
add r0, r3, r0
bl MOD17_021DA118
_021D9728:
ldr r0, [r5, #8]
cmp r0, #1
blt _021D9766
ldr r0, [r5]
mov r1, #2
ldr r0, [r0, #0x38]
add r2, r1, #0
add r3, r4, #0
bl FUN_0201AEE4
ldr r0, [r5]
mov r1, #1
ldr r0, [r0, #0x38]
mov r2, #2
add r3, r4, #0
bl FUN_0201AEE4
ldr r0, [r5]
mov r1, #2
ldr r0, [r0, #0x38]
mov r2, #5
add r3, r6, #0
bl FUN_0201AEE4
ldr r0, [r5]
mov r1, #1
ldr r0, [r0, #0x38]
mov r2, #5
add r3, r6, #0
bl FUN_0201AEE4
_021D9766:
ldr r0, [r5, #8]
add r0, r0, #1
str r0, [r5, #8]
cmp r0, r7
ble _021D9774
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021D9774:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021D970C
thumb_func_start MOD17_021D9778
MOD17_021D9778: ; 0x021D9778
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x38]
mov r1, #3
bl FUN_02018744
mov r2, #0
ldr r0, [r4, #0x38]
mov r1, #3
add r3, r2, #0
bl FUN_020179E0
mov r1, #3
ldr r0, [r4, #0x38]
add r2, r1, #0
mov r3, #0
bl FUN_020179E0
add r0, r4, #0
mov r1, #0
bl MOD17_021D9B74
ldr r1, _021D97FC ; =0x04000008
mov r3, #3
ldrh r2, [r1]
mov r0, #2
bic r2, r3
orr r0, r2
strh r0, [r1]
ldrh r2, [r1, #2]
mov r0, #1
bic r2, r3
orr r2, r0
strh r2, [r1, #2]
ldrh r4, [r1, #4]
mov r2, #3
bic r4, r3
orr r2, r4
strh r2, [r1, #4]
ldrh r2, [r1, #6]
bic r2, r3
strh r2, [r1, #6]
mov r1, #0
bl FUN_0201E6E4
mov r0, #2
mov r1, #0
bl FUN_0201E6E4
mov r0, #4
mov r1, #0
bl FUN_0201E6E4
mov r0, #8
mov r1, #1
bl FUN_0201E6E4
mov r0, #0x10
mov r1, #1
bl FUN_0201E6E4
mov r0, #0
bl FUN_0200E394
pop {r4, pc}
nop
_021D97FC: .word 0x04000008
thumb_func_end MOD17_021D9778
thumb_func_start MOD17_021D9800
MOD17_021D9800: ; 0x021D9800
push {r4, lr}
add r4, r0, #0
bl MOD17_021D9BCC
ldr r0, [r4, #0x38]
mov r1, #3
bl FUN_02018744
add r0, r4, #0
bl MOD17_021D8F64
mov r0, #0
add r1, r0, #0
bl FUN_0200E3A0
ldr r0, [r4, #0x3c]
mov r1, #1
bl FUN_0201FD98
mov r0, #1
add r1, r0, #0
bl FUN_0201E6E4
mov r0, #2
mov r1, #1
bl FUN_0201E6E4
mov r0, #4
mov r1, #1
bl FUN_0201E6E4
mov r0, #0x10
mov r1, #1
bl FUN_0201E6E4
pop {r4, pc}
thumb_func_end MOD17_021D9800
thumb_func_start MOD17_021D9848
MOD17_021D9848: ; 0x021D9848
push {r3, r4, lr}
sub sp, #0x14
add r4, r0, #0
ldr r0, [r4, #0x38]
mov r1, #3
bl FUN_02018744
mov r2, #0
ldr r0, [r4, #0x38]
mov r1, #3
add r3, r2, #0
bl FUN_020179E0
mov r1, #3
ldr r0, [r4, #0x38]
add r2, r1, #0
mov r3, #0
bl FUN_020179E0
ldr r0, [r4, #0x38]
mov r1, #0x19
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r0, #5
str r0, [sp, #0xc]
add r0, sp, #0
strb r1, [r0, #0x10]
mov r1, #4
strb r1, [r0, #0x11]
ldr r0, _021D98C8 ; =0x000006A4
add r1, sp, #0
ldr r0, [r4, r0]
bl FUN_020145C8
add r0, r4, #0
mov r1, #1
bl MOD17_021D9B4C
ldr r0, _021D98CC ; =0x04000008
mov r2, #3
ldrh r3, [r0]
mov r1, #2
bic r3, r2
orr r1, r3
strh r1, [r0]
ldrh r3, [r0, #2]
mov r1, #1
bic r3, r2
orr r1, r3
strh r1, [r0, #2]
ldrh r3, [r0, #4]
mov r1, #3
bic r3, r2
orr r1, r3
strh r1, [r0, #4]
ldrh r1, [r0, #6]
bic r1, r2
strh r1, [r0, #6]
add sp, #0x14
pop {r3, r4, pc}
nop
_021D98C8: .word 0x000006A4
_021D98CC: .word 0x04000008
thumb_func_end MOD17_021D9848
thumb_func_start MOD17_021D98D0
MOD17_021D98D0: ; 0x021D98D0
push {r4, lr}
add r4, r0, #0
ldr r0, _021D98EC ; =0x000006A4
ldr r0, [r4, r0]
bl FUN_020146C4
add r0, r4, #0
bl MOD17_021D9B6C
ldr r0, [r4, #0x38]
mov r1, #3
bl FUN_02018744
pop {r4, pc}
.align 2, 0
_021D98EC: .word 0x000006A4
thumb_func_end MOD17_021D98D0
thumb_func_start MOD17_021D98F0
MOD17_021D98F0: ; 0x021D98F0
push {r3, lr}
ldr r1, _021D9914 ; =0x000006A4
ldr r0, [r0, r1]
bl FUN_0201466C
cmp r0, #0
beq _021D9908
cmp r0, #1
beq _021D990C
cmp r0, #2
beq _021D9910
pop {r3, pc}
_021D9908:
mov r0, #4
pop {r3, pc}
_021D990C:
mov r0, #8
pop {r3, pc}
_021D9910:
mov r0, #9
pop {r3, pc}
.align 2, 0
_021D9914: .word 0x000006A4
thumb_func_end MOD17_021D98F0
thumb_func_start MOD17_021D9918
MOD17_021D9918: ; 0x021D9918
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r5, r0, #0
ldr r0, _021D99D0 ; =0x000006C8
str r1, [sp, #0x14]
ldr r0, [r5, r0]
add r7, r2, #0
add r4, r3, #0
bl FUN_02025084
add r6, r0, #0
mov r0, #0
mov r1, #0xe0
mov r2, #0xe
bl FUN_02002EEC
str r4, [sp]
add r0, sp, #0x20
ldrb r1, [r0, #0x10]
mov r2, #3
add r3, r7, #0
str r1, [sp, #4]
ldrb r0, [r0, #0x14]
ldr r1, _021D99D4 ; =0x000006A8
str r0, [sp, #8]
mov r0, #7
str r0, [sp, #0xc]
mov r0, #0x92
str r0, [sp, #0x10]
ldr r0, [r5, #0x38]
ldr r1, [r5, r1]
bl FUN_02019064
ldr r0, _021D99D4 ; =0x000006A8
mov r1, #0xf
ldr r0, [r5, r0]
bl FUN_02019620
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
mov r0, #0xe
str r0, [sp, #4]
ldr r0, [r5, #0x38]
mov r1, #3
mov r2, #0x74
mov r3, #8
bl FUN_0200CD68
ldr r0, _021D99D4 ; =0x000006A8
mov r1, #0
ldr r0, [r5, r0]
mov r2, #0x74
mov r3, #8
bl FUN_0200D0BC
ldr r2, _021D99D8 ; =0x00000151
mov r0, #0
mov r1, #0x1a
mov r3, #0xd
bl FUN_0200A86C
ldr r1, [sp, #0x14]
add r6, r0, #0
bl FUN_0200A914
add r4, r0, #0
mov r3, #0
str r3, [sp]
ldr r0, _021D99DC ; =0x0001020F
str r3, [sp, #4]
str r0, [sp, #8]
ldr r0, _021D99D4 ; =0x000006A8
str r3, [sp, #0xc]
ldr r0, [r5, r0]
mov r1, #1
add r2, r4, #0
bl FUN_0201BDE0
add r0, r4, #0
bl FUN_02021A20
add r0, r6, #0
bl FUN_0200A8B8
ldr r0, _021D99D4 ; =0x000006A8
ldr r0, [r5, r0]
bl FUN_020191D0
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021D99D0: .word 0x000006C8
_021D99D4: .word 0x000006A8
_021D99D8: .word 0x00000151
_021D99DC: .word 0x0001020F
thumb_func_end MOD17_021D9918
thumb_func_start MOD17_021D99E0
MOD17_021D99E0: ; 0x021D99E0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, _021D9A58 ; =0x000006A8
add r4, r1, #0
ldr r0, [r5, r0]
mov r1, #0xf
bl FUN_02019620
ldr r2, _021D9A5C ; =0x00000151
mov r0, #0
mov r1, #0x1a
mov r3, #0xd
bl FUN_0200A86C
add r1, r4, #0
add r7, r0, #0
bl FUN_0200A914
add r6, r0, #0
mov r0, #1
lsl r0, r0, #8
mov r1, #0xd
bl FUN_020219F4
add r4, r0, #0
ldr r0, _021D9A60 ; =0x000006D4
add r1, r4, #0
ldr r0, [r5, r0]
add r2, r6, #0
bl FUN_0200B7B8
mov r3, #0
str r3, [sp]
ldr r0, _021D9A64 ; =0x0001020F
str r3, [sp, #4]
str r0, [sp, #8]
ldr r0, _021D9A58 ; =0x000006A8
str r3, [sp, #0xc]
ldr r0, [r5, r0]
mov r1, #1
add r2, r4, #0
bl FUN_0201BDE0
add r0, r4, #0
bl FUN_02021A20
add r0, r6, #0
bl FUN_02021A20
add r0, r7, #0
bl FUN_0200A8B8
ldr r0, _021D9A58 ; =0x000006A8
ldr r0, [r5, r0]
bl FUN_020191D0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_021D9A58: .word 0x000006A8
_021D9A5C: .word 0x00000151
_021D9A60: .word 0x000006D4
_021D9A64: .word 0x0001020F
thumb_func_end MOD17_021D99E0
thumb_func_start MOD17_021D9A68
MOD17_021D9A68: ; 0x021D9A68
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
mov r0, #0x6d
lsl r0, r0, #4
ldr r0, [r5, r0]
add r4, r1, #0
cmp r0, #0
beq _021D9A7E
bl ErrorHandling
_021D9A7E:
ldr r0, _021D9B08 ; =0x000006A8
mov r1, #0xf
ldr r0, [r5, r0]
bl FUN_02019620
ldr r2, _021D9B0C ; =0x00000151
mov r0, #0
mov r1, #0x1a
mov r3, #0xd
bl FUN_0200A86C
add r1, r4, #0
add r7, r0, #0
bl FUN_0200A914
add r4, r0, #0
mov r0, #1
lsl r0, r0, #8
mov r1, #0xd
bl FUN_020219F4
mov r1, #0x6d
lsl r1, r1, #4
str r0, [r5, r1]
add r0, r1, #4
ldr r0, [r5, r0]
ldr r1, [r5, r1]
add r2, r4, #0
bl FUN_0200B7B8
ldr r0, _021D9B10 ; =0x000006C4
ldr r1, [r5, r0]
ldrb r1, [r1, #0x16]
cmp r1, #0
bne _021D9ACE
add r0, r0, #4
ldr r0, [r5, r0]
bl FUN_02024FF4
b _021D9AD0
_021D9ACE:
mov r0, #1
_021D9AD0:
mov r3, #0
str r3, [sp]
str r0, [sp, #4]
ldr r0, _021D9B14 ; =0x0001020F
ldr r2, _021D9B08 ; =0x000006A8
str r0, [sp, #8]
str r3, [sp, #0xc]
ldr r0, [r5, r2]
add r2, #0x28
ldr r2, [r5, r2]
mov r1, #1
bl FUN_0201BDE0
add r6, r0, #0
add r0, r4, #0
bl FUN_02021A20
add r0, r7, #0
bl FUN_0200A8B8
ldr r0, _021D9B08 ; =0x000006A8
ldr r0, [r5, r0]
bl FUN_020191D0
add r0, r6, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_021D9B08: .word 0x000006A8
_021D9B0C: .word 0x00000151
_021D9B10: .word 0x000006C4
_021D9B14: .word 0x0001020F
thumb_func_end MOD17_021D9A68
thumb_func_start MOD17_021D9B18
MOD17_021D9B18: ; 0x021D9B18
push {r4, lr}
add r4, r0, #0
mov r0, #0x6d
lsl r0, r0, #4
ldr r0, [r4, r0]
bl FUN_02021A20
mov r0, #0x6d
mov r1, #0
lsl r0, r0, #4
str r1, [r4, r0]
pop {r4, pc}
thumb_func_end MOD17_021D9B18
thumb_func_start MOD17_021D9B30
MOD17_021D9B30: ; 0x021D9B30
push {r4, lr}
add r4, r0, #0
ldr r0, _021D9B48 ; =0x000006A8
ldr r0, [r4, r0]
bl FUN_02019570
ldr r0, _021D9B48 ; =0x000006A8
ldr r0, [r4, r0]
bl FUN_02019178
pop {r4, pc}
nop
_021D9B48: .word 0x000006A8
thumb_func_end MOD17_021D9B30
thumb_func_start MOD17_021D9B4C
MOD17_021D9B4C: ; 0x021D9B4C
push {r3, lr}
sub sp, #8
mov r2, #0x1b
str r2, [sp]
mov r2, #2
mov r3, #1
str r2, [sp, #4]
bl MOD17_021D9918
add sp, #8
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021D9B4C
thumb_func_start MOD17_021D9B64
MOD17_021D9B64: ; 0x021D9B64
ldr r3, _021D9B68 ; =MOD17_021D99E0
bx r3
.align 2, 0
_021D9B68: .word MOD17_021D99E0
thumb_func_end MOD17_021D9B64
thumb_func_start MOD17_021D9B6C
MOD17_021D9B6C: ; 0x021D9B6C
ldr r3, _021D9B70 ; =MOD17_021D9B30
bx r3
.align 2, 0
_021D9B70: .word MOD17_021D9B30
thumb_func_end MOD17_021D9B6C
thumb_func_start MOD17_021D9B74
MOD17_021D9B74: ; 0x021D9B74
push {r4, lr}
sub sp, #8
mov r2, #0x1b
str r2, [sp]
mov r2, #4
str r2, [sp, #4]
mov r2, #2
mov r3, #0x13
add r4, r0, #0
bl MOD17_021D9918
mov r0, #0xd
bl FUN_0200AA80
ldr r1, _021D9B98 ; =0x000006D4
str r0, [r4, r1]
add sp, #8
pop {r4, pc}
.align 2, 0
_021D9B98: .word 0x000006D4
thumb_func_end MOD17_021D9B74
thumb_func_start MOD17_021D9B9C
MOD17_021D9B9C: ; 0x021D9B9C
ldr r3, _021D9BA0 ; =MOD17_021D9A68
bx r3
.align 2, 0
_021D9BA0: .word MOD17_021D9A68
thumb_func_end MOD17_021D9B9C
thumb_func_start MOD17_021D9BA4
MOD17_021D9BA4: ; 0x021D9BA4
push {r3, lr}
sub sp, #8
mov r3, #0
str r3, [sp]
mov r3, #1
str r3, [sp, #4]
ldr r3, _021D9BC0 ; =0x000006D4
ldr r0, [r0, r3]
mov r3, #2
bl FUN_0200AD38
add sp, #8
pop {r3, pc}
nop
_021D9BC0: .word 0x000006D4
thumb_func_end MOD17_021D9BA4
thumb_func_start MOD17_021D9BC4
MOD17_021D9BC4: ; 0x021D9BC4
ldr r3, _021D9BC8 ; =MOD17_021D9B18
bx r3
.align 2, 0
_021D9BC8: .word MOD17_021D9B18
thumb_func_end MOD17_021D9BC4
thumb_func_start MOD17_021D9BCC
MOD17_021D9BCC: ; 0x021D9BCC
push {r4, lr}
add r4, r0, #0
bl MOD17_021D9B30
ldr r0, _021D9BE4 ; =0x000006D4
ldr r0, [r4, r0]
bl FUN_0200AB18
ldr r0, _021D9BE4 ; =0x000006D4
mov r1, #0
str r1, [r4, r0]
pop {r4, pc}
.align 2, 0
_021D9BE4: .word 0x000006D4
thumb_func_end MOD17_021D9BCC
thumb_func_start MOD17_021D9BE8
MOD17_021D9BE8: ; 0x021D9BE8
push {r4, lr}
add r4, r0, #0
mov r0, #0xfa
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021DA368
add r1, r0, #0
ldr r0, _021D9C04 ; =0x00000554
add r0, r4, r0
bl MOD17_021DCBD8
pop {r4, pc}
nop
_021D9C04: .word 0x00000554
thumb_func_end MOD17_021D9BE8
thumb_func_start MOD17_021D9C08
MOD17_021D9C08: ; 0x021D9C08
push {r4, lr}
cmp r0, #3
bhi _021D9C32
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D9C1A: ; jump table
.short _021D9C22 - _021D9C1A - 2 ; case 0
.short _021D9C26 - _021D9C1A - 2 ; case 1
.short _021D9C2A - _021D9C1A - 2 ; case 2
.short _021D9C2E - _021D9C1A - 2 ; case 3
_021D9C22:
mov r4, #5
b _021D9C36
_021D9C26:
mov r4, #0xa
b _021D9C36
_021D9C2A:
mov r4, #0xf
b _021D9C36
_021D9C2E:
mov r4, #0x14
b _021D9C36
_021D9C32:
bl ErrorHandling
_021D9C36:
add r0, r4, #0
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D9C08
thumb_func_start MOD17_021D9C3C
MOD17_021D9C3C: ; 0x021D9C3C
push {r3, r4, lr}
sub sp, #0x14
add r4, r0, #0
ldr r0, [r4, #0x38]
mov r1, #0x19
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r0, #5
str r0, [sp, #0xc]
add r0, sp, #0
strb r1, [r0, #0x10]
mov r1, #4
strb r1, [r0, #0x11]
ldr r0, _021D9CA4 ; =0x000006A4
ldr r0, [r4, r0]
bl FUN_020146C4
ldr r0, _021D9CA4 ; =0x000006A4
add r1, sp, #0
ldr r0, [r4, r0]
bl FUN_020145C8
add r0, r4, #0
mov r1, #2
bl MOD17_021D9B64
ldr r0, _021D9CA8 ; =0x04000008
mov r2, #3
ldrh r3, [r0]
mov r1, #2
bic r3, r2
orr r1, r3
strh r1, [r0]
ldrh r3, [r0, #2]
mov r1, #1
bic r3, r2
orr r1, r3
strh r1, [r0, #2]
ldrh r3, [r0, #4]
mov r1, #3
bic r3, r2
orr r1, r3
strh r1, [r0, #4]
ldrh r1, [r0, #6]
bic r1, r2
strh r1, [r0, #6]
add sp, #0x14
pop {r3, r4, pc}
nop
_021D9CA4: .word 0x000006A4
_021D9CA8: .word 0x04000008
thumb_func_end MOD17_021D9C3C
thumb_func_start MOD17_021D9CAC
MOD17_021D9CAC: ; 0x021D9CAC
push {r3, lr}
ldr r1, _021D9CD0 ; =0x000006A4
ldr r0, [r0, r1]
bl FUN_0201466C
cmp r0, #0
beq _021D9CC4
cmp r0, #1
beq _021D9CC8
cmp r0, #2
beq _021D9CCC
pop {r3, pc}
_021D9CC4:
mov r0, #5
pop {r3, pc}
_021D9CC8:
mov r0, #6
pop {r3, pc}
_021D9CCC:
mov r0, #7
pop {r3, pc}
.align 2, 0
_021D9CD0: .word 0x000006A4
thumb_func_end MOD17_021D9CAC
thumb_func_start MOD17_021D9CD4
MOD17_021D9CD4: ; 0x021D9CD4
ldr r3, _021D9CDC ; =0x020DF4A4
mov r1, #0
mov r2, #0xac
bx r3
.align 2, 0
_021D9CDC: .word 0x020DF4A4
thumb_func_end MOD17_021D9CD4
thumb_func_start MOD17_021D9CE0
MOD17_021D9CE0: ; 0x021D9CE0
push {r4, r5, r6, lr}
add r4, r1, #0
add r5, r0, #0
add r6, r2, #0
cmp r4, #0
bne _021D9CF0
bl ErrorHandling
_021D9CF0:
add r0, r5, #0
add r0, #0xa8
ldr r0, [r0]
lsl r0, r0, #3
str r4, [r5, r0]
add r0, r5, #0
add r0, #0xa8
ldr r0, [r0]
lsl r0, r0, #3
add r0, r5, r0
str r6, [r0, #4]
add r0, r5, #0
add r0, #0xa8
ldr r0, [r0]
add r5, #0xa8
add r0, r0, #1
str r0, [r5]
pop {r4, r5, r6, pc}
thumb_func_end MOD17_021D9CE0
thumb_func_start MOD17_021D9D14
MOD17_021D9D14: ; 0x021D9D14
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r0, #0xa8
ldr r2, [r0]
mov r1, #0
cmp r2, #0
ble _021D9D6C
_021D9D22:
lsl r0, r1, #3
add r7, r6, r0
ldr r0, [r7, #4]
cmp r0, #1
bne _021D9D60
mov r4, #0
cmp r2, #0
ble _021D9D58
add r5, r6, #0
_021D9D34:
ldr r0, [r5, #4]
cmp r0, #0
bne _021D9D4A
add r0, r7, #0
add r1, r5, #0
bl MOD17_021D9DA4
cmp r0, #1
bne _021D9D4A
mov r0, #1
str r0, [r5, #4]
_021D9D4A:
add r0, r6, #0
add r0, #0xa8
ldr r0, [r0]
add r4, r4, #1
add r5, #8
cmp r4, r0
blt _021D9D34
_021D9D58:
mov r0, #2
str r0, [r7, #4]
mov r1, #0
b _021D9D62
_021D9D60:
add r1, r1, #1
_021D9D62:
add r0, r6, #0
add r0, #0xa8
ldr r2, [r0]
cmp r1, r2
blt _021D9D22
_021D9D6C:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D9D14
thumb_func_start MOD17_021D9D70
MOD17_021D9D70: ; 0x021D9D70
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r0, #0
cmp r5, #0x15
blo _021D9D7E
bl ErrorHandling
_021D9D7E:
lsl r0, r5, #3
ldr r0, [r4, r0]
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021D9D70
thumb_func_start MOD17_021D9D84
MOD17_021D9D84: ; 0x021D9D84
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r0, #0
cmp r5, #0x15
blo _021D9D92
bl ErrorHandling
_021D9D92:
lsl r0, r5, #3
add r0, r4, r0
ldr r0, [r0, #4]
cmp r0, #0
beq _021D9DA0
mov r0, #1
pop {r3, r4, r5, pc}
_021D9DA0:
mov r0, #0
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021D9D84
thumb_func_start MOD17_021D9DA4
MOD17_021D9DA4: ; 0x021D9DA4
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
add r4, r0, #0
ldr r0, [r4]
add r5, r1, #0
add r1, sp, #0x28
add r2, sp, #0x24
bl MOD17_021DBCC8
add r0, sp, #0x20
str r0, [sp]
ldr r0, [r4]
add r1, sp, #0x14
add r2, sp, #0x18
add r3, sp, #0x1c
bl MOD17_021DBC70
mov r4, #0
add r6, sp, #0x10
add r7, sp, #0xc
_021D9DCC:
str r4, [sp]
str r6, [sp, #4]
str r7, [sp, #8]
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x1c]
ldr r3, [sp, #0x20]
bl MOD17_021D9E78
ldr r0, [r5]
ldr r1, [sp, #0x10]
ldr r2, [sp, #0xc]
bl MOD17_021DBAE8
cmp r0, #1
bne _021D9DF2
add sp, #0x2c
mov r0, #1
pop {r4, r5, r6, r7, pc}
_021D9DF2:
add r4, r4, #1
cmp r4, #0x10
blt _021D9DCC
mov r0, #0
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D9DA4
thumb_func_start MOD17_021D9E00
MOD17_021D9E00: ; 0x021D9E00
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
ldr r4, [r5, #8]
add r6, r0, #0
add r7, r2, #0
cmp r4, r5
beq _021D9E24
_021D9E0E:
ldr r0, [r4, #4]
cmp r0, #0
bne _021D9E1E
add r0, r6, #0
add r1, r4, #0
add r2, r7, #0
bl MOD17_021D9CE0
_021D9E1E:
ldr r4, [r4, #8]
cmp r4, r5
bne _021D9E0E
_021D9E24:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D9E00
thumb_func_start MOD17_021D9E28
MOD17_021D9E28: ; 0x021D9E28
push {r3, r4, r5, lr}
ldr r2, _021D9E70 ; =0x000006C4
mov r1, #0
ldr r2, [r0, r2]
ldrb r3, [r2, #0x16]
cmp r3, #0
bne _021D9E40
ldr r2, _021D9E74 ; =0x00000554
add r0, r0, r2
bl MOD17_021DCBEC
pop {r3, r4, r5, pc}
_021D9E40:
ldrb r4, [r2, #0x14]
ldrb r3, [r2, #0x15]
cmp r4, r3
bne _021D9E6C
add r4, r1, #0
add r5, r2, #0
_021D9E4C:
ldrb r3, [r5, #0x10]
cmp r3, #1
bne _021D9E54
add r1, r1, #1
_021D9E54:
add r4, r4, #1
add r5, r5, #1
cmp r4, #4
blt _021D9E4C
ldrb r2, [r2, #0x17]
cmp r2, r1
bgt _021D9E6C
ldr r1, _021D9E74 ; =0x00000554
add r0, r0, r1
mov r1, #0
bl MOD17_021DCBEC
_021D9E6C:
pop {r3, r4, r5, pc}
nop
_021D9E70: .word 0x000006C4
_021D9E74: .word 0x00000554
thumb_func_end MOD17_021D9E28
thumb_func_start MOD17_021D9E78
MOD17_021D9E78: ; 0x021D9E78
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r0, #0
str r1, [sp]
add r7, r2, #0
add r0, r3, #0
sub r0, r0, r7
mov r1, #3
str r3, [sp, #4]
ldr r4, [sp, #0x2c]
ldr r5, [sp, #0x30]
bl _u32_div_f
add r1, r7, r0
lsl r0, r0, #1
add r0, r7, r0
str r0, [sp, #8]
ldr r0, [sp]
str r1, [sp, #0xc]
sub r0, r0, r6
mov r1, #3
bl _u32_div_f
add r2, r6, r0
lsl r0, r0, #1
ldr r1, [sp, #0x28]
add r0, r6, r0
cmp r1, #0xf
bhi _021D9F7A
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021D9EBE: ; jump table
.short _021D9EDE - _021D9EBE - 2 ; case 0
.short _021D9EE6 - _021D9EBE - 2 ; case 1
.short _021D9EEE - _021D9EBE - 2 ; case 2
.short _021D9EF6 - _021D9EBE - 2 ; case 3
.short _021D9F00 - _021D9EBE - 2 ; case 4
.short _021D9F0A - _021D9EBE - 2 ; case 5
.short _021D9F14 - _021D9EBE - 2 ; case 6
.short _021D9F1E - _021D9EBE - 2 ; case 7
.short _021D9F2A - _021D9EBE - 2 ; case 8
.short _021D9F34 - _021D9EBE - 2 ; case 9
.short _021D9F3E - _021D9EBE - 2 ; case 10
.short _021D9F48 - _021D9EBE - 2 ; case 11
.short _021D9F54 - _021D9EBE - 2 ; case 12
.short _021D9F5E - _021D9EBE - 2 ; case 13
.short _021D9F68 - _021D9EBE - 2 ; case 14
.short _021D9F72 - _021D9EBE - 2 ; case 15
_021D9EDE:
str r7, [r4]
add sp, #0x10
str r6, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9EE6:
str r7, [r4]
add sp, #0x10
str r2, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9EEE:
str r7, [r4]
add sp, #0x10
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9EF6:
ldr r0, [sp]
str r7, [r4]
add sp, #0x10
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F00:
ldr r0, [sp, #0xc]
add sp, #0x10
str r0, [r4]
str r6, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F0A:
ldr r0, [sp, #0xc]
add sp, #0x10
str r0, [r4]
str r2, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F14:
ldr r1, [sp, #0xc]
add sp, #0x10
str r1, [r4]
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F1E:
ldr r0, [sp, #0xc]
str r0, [r4]
ldr r0, [sp]
add sp, #0x10
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F2A:
ldr r0, [sp, #8]
add sp, #0x10
str r0, [r4]
str r6, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F34:
ldr r0, [sp, #8]
add sp, #0x10
str r0, [r4]
str r2, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F3E:
ldr r1, [sp, #8]
add sp, #0x10
str r1, [r4]
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F48:
ldr r0, [sp, #8]
str r0, [r4]
ldr r0, [sp]
add sp, #0x10
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F54:
ldr r0, [sp, #4]
add sp, #0x10
str r0, [r4]
str r6, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F5E:
ldr r0, [sp, #4]
add sp, #0x10
str r0, [r4]
str r2, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F68:
ldr r1, [sp, #4]
add sp, #0x10
str r1, [r4]
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_021D9F72:
ldr r0, [sp, #4]
str r0, [r4]
ldr r0, [sp]
str r0, [r5]
_021D9F7A:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021D9E78
thumb_func_start MOD17_021D9F80
MOD17_021D9F80: ; 0x021D9F80
push {r4, lr}
add r4, r0, #0
ldr r0, [r1]
mov r2, #0
str r0, [r4, #0x2c]
ldr r0, [r1, #4]
str r0, [r4, #0x30]
ldr r0, [r1, #8]
str r0, [r4, #0x34]
ldr r0, [r1, #0xc]
str r0, [r4, #0x38]
ldr r0, [r1, #0x10]
str r0, [r4, #0x3c]
ldr r0, [r1, #0x14]
str r0, [r4, #0x40]
ldr r0, [r1, #0x18]
str r0, [r4, #0x44]
str r2, [r4, #0x74]
ldr r0, [r1, #0x1c]
str r0, [r4]
add r0, r4, #4
str r0, [r4, #0xc]
str r0, [r4, #0x10]
add r0, r4, #0
add r0, #0x14
str r0, [r4, #0x1c]
str r0, [r4, #0x20]
str r2, [r4, #0x24]
ldr r0, [r1, #0x20]
add r1, r4, #0
str r0, [r4, #0x28]
ldr r0, [r4]
add r1, #0x78
mov r2, #3
bl MOD17_021DBA30
add r4, #0x14
add r1, r4, #0
bl MOD17_021DBA90
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D9F80
thumb_func_start MOD17_021D9FD4
MOD17_021D9FD4: ; 0x021D9FD4
push {r4, lr}
add r4, r0, #0
bl MOD17_021DA058
add r0, r4, #0
bl MOD17_021DA100
add r0, r4, #0
mov r1, #0
mov r2, #0x88
bl memset
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D9FD4
thumb_func_start MOD17_021D9FF0
MOD17_021D9FF0: ; 0x021D9FF0
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
ldr r0, [sp, #0x20]
add r6, r1, #0
str r0, [sp]
add r5, r2, #0
add r0, r4, #0
add r7, r3, #0
ldr r1, [r4, #0x3c]
add r0, #0x78
add r2, r6, #0
add r3, r5, #0
bl MOD17_021DB700
add r0, r4, #0
ldr r1, [sp, #0x1c]
add r0, #0x78
bl MOD17_021DB7D8
add r4, #0x78
ldr r2, [sp, #0x18]
add r0, r4, #0
add r1, r7, #0
bl MOD17_021DB7F4
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021D9FF0
thumb_func_start MOD17_021DA024
MOD17_021DA024: ; 0x021DA024
push {r3, r4, r5, r6, lr}
sub sp, #4
add r6, r0, #0
str r3, [sp]
add r5, r1, #0
add r4, r2, #0
ldr r1, [r6, #0x3c]
add r0, #0x78
add r2, r5, #0
add r3, r4, #0
bl MOD17_021DB700
add sp, #4
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD17_021DA024
thumb_func_start MOD17_021DA040
MOD17_021DA040: ; 0x021DA040
ldr r3, _021DA04C ; =MOD17_021DBA90
add r2, r0, #0
add r0, r1, #0
ldr r1, [r2, #0x20]
bx r3
nop
_021DA04C: .word MOD17_021DBA90
thumb_func_end MOD17_021DA040
thumb_func_start MOD17_021DA050
MOD17_021DA050: ; 0x021DA050
ldr r3, _021DA054 ; =MOD17_021DBAA0
bx r3
.align 2, 0
_021DA054: .word MOD17_021DBAA0
thumb_func_end MOD17_021DA050
thumb_func_start MOD17_021DA058
MOD17_021DA058: ; 0x021DA058
ldr r3, _021DA060 ; =MOD17_021DB7C0
add r0, #0x78
bx r3
nop
_021DA060: .word MOD17_021DB7C0
thumb_func_end MOD17_021DA058
thumb_func_start MOD17_021DA064
MOD17_021DA064: ; 0x021DA064
push {r3, r4, r5, lr}
sub sp, #0x20
add r4, r0, #0
ldr r5, [r4, #0x24]
ldr r0, [r4, #0x28]
cmp r5, r0
bge _021DA0BE
ldr r0, [r4, #0x44]
str r0, [sp]
ldr r0, [r4, #0x2c]
str r0, [sp, #4]
ldr r5, [r4, #0x30]
lsl r0, r1, #2
ldr r0, [r5, r0]
str r0, [sp, #8]
ldr r0, [r4, #0x34]
ldr r0, [r0]
str r2, [sp, #0x10]
str r3, [sp, #0x14]
str r1, [sp, #0x18]
str r0, [sp, #0xc]
ldr r0, [r4, #0x38]
ldrb r0, [r0, r1]
str r0, [sp, #0x1c]
add r0, sp, #0
bl MOD17_021D7520
ldr r1, [sp, #0x30]
add r5, r0, #0
bl MOD17_021D766C
ldr r0, [r4]
add r1, r5, #0
mov r2, #0
bl MOD17_021DBA30
add r1, r4, #4
bl MOD17_021DBA90
ldr r0, [r4, #0x24]
add sp, #0x20
add r0, r0, #1
str r0, [r4, #0x24]
mov r0, #1
pop {r3, r4, r5, pc}
_021DA0BE:
mov r0, #0
add sp, #0x20
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DA064
thumb_func_start MOD17_021DA0C4
MOD17_021DA0C4: ; 0x021DA0C4
push {r3, r4, r5, lr}
add r4, r0, #0
add r3, r2, #0
ldr r5, [r4, #0x24]
ldr r2, [r4, #0x28]
cmp r5, r2
bge _021DA0E2
mov r2, #1
bl MOD17_021DA454
ldr r0, [r4, #0x24]
add r0, r0, #1
str r0, [r4, #0x24]
mov r0, #1
pop {r3, r4, r5, pc}
_021DA0E2:
mov r0, #0
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DA0C4
thumb_func_start MOD17_021DA0E8
MOD17_021DA0E8: ; 0x021DA0E8
push {r4, lr}
add r4, r0, #0
add r0, r1, #0
bl MOD17_021DBAA0
ldr r0, [r4, #0x24]
sub r0, r0, #1
str r0, [r4, #0x24]
bpl _021DA0FE
bl ErrorHandling
_021DA0FE:
pop {r4, pc}
thumb_func_end MOD17_021DA0E8
thumb_func_start MOD17_021DA100
MOD17_021DA100: ; 0x021DA100
push {r4, lr}
add r4, r0, #0
add r0, r4, #4
bl MOD17_021DBAB0
add r0, r4, #0
add r0, #0x14
bl MOD17_021DBAB0
mov r0, #0
str r0, [r4, #0x24]
pop {r4, pc}
thumb_func_end MOD17_021DA100
thumb_func_start MOD17_021DA118
MOD17_021DA118: ; 0x021DA118
push {r4, r5, r6, lr}
add r5, r0, #0
add r0, r5, #4
add r4, r1, #0
add r6, r2, #0
bl MOD17_021DBC38
add r5, #0x14
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl MOD17_021DBC38
pop {r4, r5, r6, pc}
thumb_func_end MOD17_021DA118
thumb_func_start MOD17_021DA134
MOD17_021DA134: ; 0x021DA134
ldr r3, _021DA13C ; =MOD17_021DBC38
add r0, #0x14
bx r3
nop
_021DA13C: .word MOD17_021DBC38
thumb_func_end MOD17_021DA134
thumb_func_start MOD17_021DA140
MOD17_021DA140: ; 0x021DA140
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
neg r4, r2
neg r7, r1
add r0, r5, #4
add r1, r7, #0
add r2, r4, #0
add r6, r3, #0
bl MOD17_021DBC38
ldr r2, [sp, #0x18]
add r0, r5, #4
add r1, r6, #0
bl MOD17_021DBC38
add r0, r5, #0
add r0, #0x14
add r1, r7, #0
add r2, r4, #0
bl MOD17_021DBC38
add r5, #0x14
ldr r2, [sp, #0x18]
add r0, r5, #0
add r1, r6, #0
bl MOD17_021DBC38
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DA140
thumb_func_start MOD17_021DA178
MOD17_021DA178: ; 0x021DA178
ldr r3, _021DA180 ; =MOD17_021DA184
mov r1, #0
mvn r1, r1
bx r3
.align 2, 0
_021DA180: .word MOD17_021DA184
thumb_func_end MOD17_021DA178
thumb_func_start MOD17_021DA184
MOD17_021DA184: ; 0x021DA184
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
add r6, r7, #0
ldr r4, [r7, #0x1c]
add r6, #0x14
add r5, r1, #0
cmp r4, r6
beq _021DA1B2
_021DA194:
ldr r0, [r4, #4]
cmp r0, #0
ldr r0, [r4]
bne _021DA1A4
add r1, r5, #0
bl MOD17_021D766C
b _021DA1AA
_021DA1A4:
add r1, r5, #0
bl MOD17_021DB7D8
_021DA1AA:
ldr r4, [r4, #8]
sub r5, r5, #1
cmp r4, r6
bne _021DA194
_021DA1B2:
ldr r4, [r7, #0xc]
add r6, r7, #4
sub r5, #8
cmp r4, r6
beq _021DA1DA
_021DA1BC:
ldr r0, [r4, #4]
cmp r0, #0
ldr r0, [r4]
bne _021DA1CC
add r1, r5, #0
bl MOD17_021D766C
b _021DA1D2
_021DA1CC:
add r1, r5, #0
bl MOD17_021DB7D8
_021DA1D2:
ldr r4, [r4, #8]
sub r5, r5, #1
cmp r4, r6
bne _021DA1BC
_021DA1DA:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DA184
thumb_func_start MOD17_021DA1DC
MOD17_021DA1DC: ; 0x021DA1DC
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
add r6, r7, #0
ldr r4, [r7, #0x1c]
add r6, #0x14
add r5, r1, #0
cmp r4, r6
beq _021DA218
_021DA1EC:
ldr r0, [r4, #4]
cmp r0, #0
ldr r0, [r4]
bne _021DA204
bl MOD17_021D7678
add r1, r0, #0
ldr r0, [r4]
add r1, r1, r5
bl MOD17_021D766C
b _021DA212
_021DA204:
bl MOD17_021DB7E8
add r1, r0, #0
ldr r0, [r4]
add r1, r1, r5
bl MOD17_021DB7D8
_021DA212:
ldr r4, [r4, #8]
cmp r4, r6
bne _021DA1EC
_021DA218:
ldr r4, [r7, #0xc]
add r6, r7, #4
cmp r4, r6
beq _021DA24C
_021DA220:
ldr r0, [r4, #4]
cmp r0, #0
ldr r0, [r4]
bne _021DA238
bl MOD17_021D7678
add r1, r0, #0
ldr r0, [r4]
add r1, r1, r5
bl MOD17_021D766C
b _021DA246
_021DA238:
bl MOD17_021DB7E8
add r1, r0, #0
ldr r0, [r4]
add r1, r1, r5
bl MOD17_021DB7D8
_021DA246:
ldr r4, [r4, #8]
cmp r4, r6
bne _021DA220
_021DA24C:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DA1DC
thumb_func_start MOD17_021DA250
MOD17_021DA250: ; 0x021DA250
push {r3, lr}
mov r1, #0x12
add r0, sp, #0
strb r1, [r0]
mov r1, #0x8f
strb r1, [r0, #1]
mov r1, #0x8a
strb r1, [r0, #2]
mov r1, #0xf6
strb r1, [r0, #3]
add r0, sp, #0
bl FUN_02020A40
pop {r3, pc}
thumb_func_end MOD17_021DA250
thumb_func_start MOD17_021DA26C
MOD17_021DA26C: ; 0x021DA26C
push {r3, lr}
mov r3, #0x12
add r0, sp, #0
strb r3, [r0]
mov r3, #0x8f
strb r3, [r0, #1]
mov r3, #0x8a
strb r3, [r0, #2]
mov r3, #0xf6
strb r3, [r0, #3]
add r0, sp, #0
bl FUN_02020AE8
pop {r3, pc}
thumb_func_end MOD17_021DA26C
thumb_func_start MOD17_021DA288
MOD17_021DA288: ; 0x021DA288
push {r4, r5, r6, r7, lr}
sub sp, #0xc
ldr r5, [r0, #0x1c]
str r0, [sp]
str r0, [sp, #4]
add r0, #0x14
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
str r0, [sp, #4]
cmp r5, r0
beq _021DA2BE
_021DA2A0:
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
add r3, r7, #0
bl MOD17_021DBB1C
cmp r0, #1
bne _021DA2B6
add sp, #0xc
add r0, r5, #0
pop {r4, r5, r6, r7, pc}
_021DA2B6:
ldr r5, [r5, #8]
ldr r0, [sp, #4]
cmp r5, r0
bne _021DA2A0
_021DA2BE:
ldr r0, [sp]
ldr r5, [r0, #0xc]
add r0, r0, #4
str r0, [sp, #8]
cmp r5, r0
beq _021DA2E8
_021DA2CA:
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
add r3, r7, #0
bl MOD17_021DBB1C
cmp r0, #1
bne _021DA2E0
add sp, #0xc
add r0, r5, #0
pop {r4, r5, r6, r7, pc}
_021DA2E0:
ldr r5, [r5, #8]
ldr r0, [sp, #8]
cmp r5, r0
bne _021DA2CA
_021DA2E8:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DA288
thumb_func_start MOD17_021DA2F0
MOD17_021DA2F0: ; 0x021DA2F0
push {r3, r4, r5, lr}
sub sp, #0x30
add r5, r0, #0
ldr r0, [r5, #0x40]
add r4, r1, #0
str r0, [sp]
mov r0, #0x19
lsl r1, r4, #2
str r0, [sp, #4]
add r0, r1, #0
add r0, #0x86
str r0, [sp, #8]
add r0, r1, #0
add r0, #0x87
str r0, [sp, #0xc]
mov r0, #0x88
str r0, [sp, #0x14]
mov r0, #0x10
str r0, [sp, #0x18]
mov r0, #2
str r0, [sp, #0x1c]
mov r0, #1
add r1, #0x88
str r1, [sp, #0x10]
str r0, [sp, #0x20]
str r0, [sp, #0x24]
mov r0, #0
str r0, [sp, #0x28]
add r0, r5, #0
add r0, #0x48
add r1, sp, #0
str r2, [sp, #0x2c]
bl MOD17_021DBD04
str r4, [r5, #0x74]
add sp, #0x30
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DA2F0
thumb_func_start MOD17_021DA33C
MOD17_021DA33C: ; 0x021DA33C
ldr r3, _021DA344 ; =MOD17_021DBD4C
add r0, #0x48
bx r3
nop
_021DA344: .word MOD17_021DBD4C
thumb_func_end MOD17_021DA33C
thumb_func_start MOD17_021DA348
MOD17_021DA348: ; 0x021DA348
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #0x78]
add r4, r1, #0
mov r1, #0
add r6, r2, #0
bl FUN_0200782C
str r0, [r4]
ldr r0, [r5, #0x78]
mov r1, #1
bl FUN_0200782C
str r0, [r6]
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DA348
thumb_func_start MOD17_021DA368
MOD17_021DA368: ; 0x021DA368
ldr r0, [r0, #0x24]
bx lr
thumb_func_end MOD17_021DA368
thumb_func_start MOD17_021DA36C
MOD17_021DA36C: ; 0x021DA36C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r0, #0
ldr r6, [r7, #0x1c]
mov r4, #0
add r7, #0x14
str r1, [sp]
str r2, [sp, #4]
add r5, r4, #0
cmp r6, r7
beq _021DA3CA
_021DA382:
add r0, r6, #0
add r1, sp, #0xc
add r2, sp, #8
bl MOD17_021DA528
cmp r4, #0
bge _021DA394
neg r1, r4
b _021DA396
_021DA394:
add r1, r4, #0
_021DA396:
ldr r0, [sp, #0xc]
cmp r0, #0
bge _021DA3A0
neg r2, r0
b _021DA3A2
_021DA3A0:
add r2, r0, #0
_021DA3A2:
cmp r2, r1
ble _021DA3A8
add r4, r0, #0
_021DA3A8:
cmp r5, #0
bge _021DA3B0
neg r1, r5
b _021DA3B2
_021DA3B0:
add r1, r5, #0
_021DA3B2:
ldr r0, [sp, #8]
cmp r0, #0
bge _021DA3BC
neg r2, r0
b _021DA3BE
_021DA3BC:
add r2, r0, #0
_021DA3BE:
cmp r2, r1
ble _021DA3C4
add r5, r0, #0
_021DA3C4:
ldr r6, [r6, #8]
cmp r6, r7
bne _021DA382
_021DA3CA:
ldr r0, [sp]
str r4, [r0]
ldr r0, [sp, #4]
str r5, [r0]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DA36C
thumb_func_start MOD17_021DA3D8
MOD17_021DA3D8: ; 0x021DA3D8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r0, #0
ldr r4, [r0, #0x1c]
add r7, #0x14
str r0, [sp]
add r6, r1, #0
cmp r4, r7
beq _021DA436
asr r0, r6, #0xa
mov r1, #0x1f
and r0, r1
str r0, [sp, #0xc]
asr r0, r6, #5
and r0, r1
str r0, [sp, #8]
add r0, r6, #0
and r0, r1
str r0, [sp, #4]
_021DA3FE:
ldr r0, [r4, #4]
cmp r0, #0
bne _021DA410
ldr r0, [r4]
add r1, r6, #0
ldr r0, [r0, #4]
bl FUN_02013F0C
b _021DA430
_021DA410:
ldr r5, [r4]
ldr r2, [sp, #0xc]
ldr r0, [r5]
mov r1, #0x18
bl FUN_02007558
ldr r0, [r5]
ldr r2, [sp, #8]
mov r1, #0x19
bl FUN_02007558
ldr r0, [r5]
ldr r2, [sp, #4]
mov r1, #0x1a
bl FUN_02007558
_021DA430:
ldr r4, [r4, #8]
cmp r4, r7
bne _021DA3FE
_021DA436:
ldr r0, [sp]
ldr r4, [r0, #0xc]
add r5, r0, #4
cmp r4, r5
beq _021DA450
_021DA440:
ldr r0, [r4]
add r1, r6, #0
ldr r0, [r0, #4]
bl FUN_02013F0C
ldr r4, [r4, #8]
cmp r4, r5
bne _021DA440
_021DA450:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DA3D8
thumb_func_start MOD17_021DA454
MOD17_021DA454: ; 0x021DA454
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x50
str r0, [sp, #0xc]
str r2, [sp, #0x14]
str r1, [sp, #0x10]
add r0, r1, #0
add r1, sp, #0x4c
add r2, sp, #0x48
add r4, r3, #0
bl MOD17_021DBBB8
ldr r0, [sp, #0x10]
add r1, sp, #0x44
add r2, sp, #0x40
bl MOD17_021DBC08
ldr r0, [sp, #0x10]
add r1, sp, #0x3c
add r2, sp, #0x38
bl MOD17_021DBC20
mov r0, #0x76
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r5, #0
str r0, [sp, #0x20]
ldr r0, [sp, #0x4c]
ldr r1, [sp, #0x44]
str r0, [sp, #0x24]
add r0, r0, r1
ldr r6, [sp, #0x3c]
ldr r1, [sp, #0x40]
sub r0, r0, r6
str r0, [sp, #0x1c]
ldr r0, [sp, #0x48]
ldr r7, [sp, #0x38]
str r0, [sp, #0x28]
add r0, r0, r1
sub r0, r0, r7
str r0, [sp, #0x18]
ldr r0, [sp, #0xc]
add r4, r5, #0
str r0, [sp, #0x2c]
add r0, #0x78
str r0, [sp, #0x2c]
_021DA4AE:
str r4, [sp]
add r0, sp, #0x34
str r0, [sp, #4]
add r0, sp, #0x30
str r0, [sp, #8]
ldr r0, [sp, #0x28]
ldr r2, [sp, #0x24]
ldr r1, [sp, #0x18]
ldr r3, [sp, #0x1c]
add r0, r0, r7
add r2, r2, r6
bl MOD17_021D9E78
ldr r0, [sp, #0x2c]
ldr r1, [sp, #0x34]
ldr r2, [sp, #0x30]
ldr r3, [sp, #0x20]
bl MOD17_021DB8F8
add r4, r4, #1
orr r5, r0
cmp r4, #0x10
blt _021DA4AE
cmp r5, #0
beq _021DA504
ldr r0, [sp, #0x14]
cmp r0, #0
beq _021DA4F6
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
add r1, #0x14
str r1, [sp, #0xc]
bl MOD17_021DBA90
add sp, #0x50
pop {r3, r4, r5, r6, r7, pc}
_021DA4F6:
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
ldr r1, [r1, #0x20]
bl MOD17_021DBA90
add sp, #0x50
pop {r3, r4, r5, r6, r7, pc}
_021DA504:
ldr r0, [sp, #0x14]
cmp r0, #0
beq _021DA518
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
add r1, r1, #4
bl MOD17_021DBA90
add sp, #0x50
pop {r3, r4, r5, r6, r7, pc}
_021DA518:
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
ldr r1, [r1, #0x10]
bl MOD17_021DBA90
add sp, #0x50
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DA454
thumb_func_start MOD17_021DA528
MOD17_021DA528: ; 0x021DA528
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r5, r1, #0
add r4, r2, #0
add r6, r0, #0
add r1, sp, #0x14
add r2, sp, #0x10
bl MOD17_021DBC08
add r0, r6, #0
add r1, sp, #0xc
add r2, sp, #8
bl MOD17_021DBBB8
add r0, r6, #0
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DBC20
ldr r1, [sp, #4]
ldr r0, [sp, #0xc]
mov r2, #0x8a
add r3, r0, r1
sub r6, r2, r3
ldr r2, [sp, #0x14]
ldr r7, [sp, #8]
add r0, r0, r2
sub r3, r0, r1
ldr r2, [sp]
mov r0, #0x12
add r1, r7, r2
sub r0, r0, r1
ldr r1, [sp, #0x10]
sub r3, #0xf6
add r1, r7, r1
sub r2, r1, r2
sub r2, #0x8f
cmp r6, #0
ble _021DA57A
str r6, [r5]
b _021DA588
_021DA57A:
cmp r3, #0
ble _021DA584
neg r1, r3
str r1, [r5]
b _021DA588
_021DA584:
mov r1, #0
str r1, [r5]
_021DA588:
cmp r0, #0
ble _021DA592
add sp, #0x18
str r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
_021DA592:
cmp r2, #0
ble _021DA59E
neg r0, r2
add sp, #0x18
str r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
_021DA59E:
mov r0, #0
str r0, [r4]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DA528
thumb_func_start MOD17_021DA5A8
MOD17_021DA5A8: ; 0x021DA5A8
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r1, [r4]
add r5, r0, #0
str r1, [r5, #0x44]
ldr r1, [r4, #4]
str r1, [r5, #0x48]
ldr r1, [r4, #8]
str r1, [r5, #0x4c]
ldr r1, [r4, #0xc]
str r1, [r5, #0x50]
ldr r1, [r4, #0x10]
str r1, [r5, #0x54]
ldr r1, [r4, #0x14]
str r1, [r5, #0x58]
ldr r1, [r4, #0x18]
str r1, [r5, #8]
ldr r1, [r4, #0x28]
str r1, [r5, #4]
mov r1, #0
bl MOD17_021DA9AC
add r0, r5, #0
add r1, r4, #0
bl MOD17_021DAAC8
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DA5A8
thumb_func_start MOD17_021DA5E0
MOD17_021DA5E0: ; 0x021DA5E0
push {r4, r5, r6, lr}
add r6, r0, #0
bl MOD17_021DA818
add r5, r6, #0
mov r4, #0
add r5, #0xc
_021DA5EE:
add r0, r5, #0
bl MOD17_021DAB8C
add r4, r4, #1
add r5, #0xc
cmp r4, #4
blt _021DA5EE
add r0, r6, #0
mov r1, #0
mov r2, #0x8c
bl memset
pop {r4, r5, r6, pc}
thumb_func_end MOD17_021DA5E0
thumb_func_start MOD17_021DA608
MOD17_021DA608: ; 0x021DA608
push {r3, lr}
cmp r0, #0
beq _021DA618
cmp r0, #1
beq _021DA688
cmp r0, #2
beq _021DA696
pop {r3, pc}
_021DA618:
cmp r1, #5
bgt _021DA620
mov r0, #0
pop {r3, pc}
_021DA620:
cmp r1, #0xb
bgt _021DA628
mov r0, #1
pop {r3, pc}
_021DA628:
cmp r1, #0x11
bgt _021DA630
mov r0, #2
pop {r3, pc}
_021DA630:
cmp r1, #0x15
bgt _021DA638
mov r0, #3
pop {r3, pc}
_021DA638:
cmp r1, #0x1c
bgt _021DA640
mov r0, #4
pop {r3, pc}
_021DA640:
cmp r1, #0x21
bgt _021DA648
mov r0, #5
pop {r3, pc}
_021DA648:
cmp r1, #0x26
bgt _021DA650
mov r0, #6
pop {r3, pc}
_021DA650:
cmp r1, #0x2a
bgt _021DA658
mov r0, #7
pop {r3, pc}
_021DA658:
cmp r1, #0x31
bgt _021DA660
mov r0, #8
pop {r3, pc}
_021DA660:
cmp r1, #0x37
bgt _021DA668
mov r0, #9
pop {r3, pc}
_021DA668:
cmp r1, #0x3c
bgt _021DA670
mov r0, #0xa
pop {r3, pc}
_021DA670:
cmp r1, #0x47
bgt _021DA678
mov r0, #0xb
pop {r3, pc}
_021DA678:
cmp r1, #0x5b
bgt _021DA680
mov r0, #0xc
pop {r3, pc}
_021DA680:
cmp r1, #0x63
bgt _021DA6A2
mov r0, #0xd
pop {r3, pc}
_021DA688:
add r0, r2, #0
bl MOD17_021DB014
mov r1, #9
bl _s32_div_f
pop {r3, pc}
_021DA696:
add r0, r2, #0
bl MOD17_021DB014
mov r1, #9
bl _s32_div_f
_021DA6A2:
pop {r3, pc}
thumb_func_end MOD17_021DA608
thumb_func_start MOD17_021DA6A4
MOD17_021DA6A4: ; 0x021DA6A4
push {r3, r4, r5, lr}
add r5, r2, #0
add r4, r3, #0
cmp r0, #0
beq _021DA6B8
cmp r0, #1
beq _021DA6EA
cmp r0, #2
beq _021DA6EA
pop {r3, r4, r5, pc}
_021DA6B8:
mov r0, #0xa
str r0, [r5]
mov r0, #0x12
str r0, [r4]
bl rand_MT
ldr r2, [sp, #0x10]
mov r1, #0x6c
sub r1, r1, r2
bl _u32_div_f
ldr r0, [r5]
add r0, r0, r1
str r0, [r5]
bl rand_MT
ldr r2, [sp, #0x14]
mov r1, #0x7d
sub r1, r1, r2
bl _u32_div_f
ldr r0, [r4]
add r0, r0, r1
str r0, [r4]
pop {r3, r4, r5, pc}
_021DA6EA:
ldr r0, [sp, #0x18]
bl MOD17_021DB014
add r1, r5, #0
add r2, r4, #0
bl MOD17_021DAC68
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DA6A4
thumb_func_start MOD17_021DA6FC
MOD17_021DA6FC: ; 0x021DA6FC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x48
add r5, r0, #0
ldr r0, [r5, #0x58]
add r4, r2, #0
str r4, [sp, #0x40]
str r0, [sp, #0x28]
ldr r0, [r5, #0x44]
add r6, r1, #0
mov r1, #0
str r0, [sp, #0x2c]
str r1, [sp, #0x38]
str r1, [sp, #0x3c]
cmp r6, #0
beq _021DA724
cmp r6, #1
beq _021DA730
cmp r6, #2
beq _021DA73E
b _021DA74C
_021DA724:
ldr r0, [r5, #0x50]
str r4, [sp, #0xc]
ldrb r0, [r0, r4]
add r7, r1, #0
str r0, [sp, #0x44]
b _021DA750
_021DA730:
add r0, r4, #0
str r0, [sp, #0xc]
add r0, #0x64
str r0, [sp, #0xc]
add r7, r4, #1
str r1, [sp, #0x44]
b _021DA750
_021DA73E:
add r0, r4, #0
str r0, [sp, #0xc]
add r0, #0x64
str r0, [sp, #0xc]
add r7, r4, #1
str r1, [sp, #0x44]
b _021DA750
_021DA74C:
bl ErrorHandling
_021DA750:
ldr r0, [sp, #0xc]
ldr r1, [r5, #0x48]
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r1, r7, #2
str r0, [sp, #0x30]
ldr r2, [r5, #0x4c]
cmp r0, #0
ldr r1, [r2, r1]
str r1, [sp, #0x34]
bne _021DA76A
bl ErrorHandling
_021DA76A:
ldr r0, [sp, #0x34]
cmp r0, #0
bne _021DA774
bl ErrorHandling
_021DA774:
ldr r2, [r5, #4]
add r0, r6, #0
add r1, r4, #0
bl MOD17_021DA608
add r7, r0, #0
add r0, sp, #0x28
bl MOD17_021D7520
str r0, [sp, #0x10]
ldr r0, [r5, #8]
ldr r1, [sp, #0x10]
add r2, r6, #0
bl MOD17_021DBA30
mov r1, #0xc
mul r1, r6
add r1, r5, r1
ldr r2, [r1, #0xc]
lsl r1, r7, #4
add r1, r2, r1
ldr r1, [r1, #0xc]
str r0, [sp, #0x14]
bl MOD17_021DBA90
ldr r0, [sp, #0x14]
add r1, sp, #0x1c
add r2, sp, #0x18
bl MOD17_021DBC08
ldr r0, [sp, #0x1c]
add r1, r4, #0
str r0, [sp]
ldr r0, [sp, #0x18]
add r2, sp, #0x24
str r0, [sp, #4]
ldr r0, [r5, #4]
add r3, sp, #0x20
str r0, [sp, #8]
add r0, r6, #0
bl MOD17_021DA6A4
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x20]
bl MOD17_021DBB68
ldr r1, [sp, #0x10]
add r0, r5, #0
add r2, r6, #0
add r3, r7, #0
bl MOD17_021DAC40
add sp, #0x48
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DA6FC
thumb_func_start MOD17_021DA7E4
MOD17_021DA7E4: ; 0x021DA7E4
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
mov r1, #0xc
add r5, r0, #0
mul r1, r4
add r7, r3, #0
add r1, r5, r1
add r6, r2, #0
ldr r2, [r1, #0xc]
lsl r1, r6, #4
add r0, r7, #0
add r1, r2, r1
bl MOD17_021DBA90
ldr r1, [r7]
add r0, r5, #0
add r2, r4, #0
add r3, r6, #0
bl MOD17_021DAC40
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DA7E4
thumb_func_start MOD17_021DA810
MOD17_021DA810: ; 0x021DA810
ldr r3, _021DA814 ; =MOD17_021DBAA0
bx r3
.align 2, 0
_021DA814: .word MOD17_021DBAA0
thumb_func_end MOD17_021DA810
thumb_func_start MOD17_021DA818
MOD17_021DA818: ; 0x021DA818
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r7, #0
_021DA81E:
ldr r0, [r5, #0x10]
mov r6, #0
cmp r0, #0
ble _021DA83A
add r4, r6, #0
_021DA828:
ldr r0, [r5, #0xc]
add r0, r0, r4
bl MOD17_021DBAB0
ldr r0, [r5, #0x10]
add r6, r6, #1
add r4, #0x10
cmp r6, r0
blt _021DA828
_021DA83A:
add r7, r7, #1
add r5, #0xc
cmp r7, #3
blt _021DA81E
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DA818
thumb_func_start MOD17_021DA844
MOD17_021DA844: ; 0x021DA844
push {r4, r5, r6, lr}
mov r5, #0
mvn r5, r5
bl MOD17_021DABB4
add r6, r0, #0
ldr r4, [r6, #8]
cmp r4, r6
beq _021DA86C
_021DA856:
ldr r0, [r4, #4]
cmp r0, #2
bhi _021DA864
ldr r0, [r4]
add r1, r5, #0
bl MOD17_021D766C
_021DA864:
ldr r4, [r4, #8]
sub r5, r5, #1
cmp r4, r6
bne _021DA856
_021DA86C:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DA844
thumb_func_start MOD17_021DA870
MOD17_021DA870: ; 0x021DA870
push {r3, r4, r5, r6, lr}
sub sp, #4
add r5, r0, #0
add r6, r1, #0
ldr r1, [r5, #0x3c]
add r4, r2, #0
cmp r1, #0
bne _021DA8A8
ldr r1, [r5]
mov r2, #0xc
mul r2, r1
str r4, [sp]
add r2, r5, r2
ldr r2, [r2, #0x14]
add r3, r6, #0
bl MOD17_021DACA4
mov r0, #0xc
mul r0, r6
str r6, [r5]
add r0, r5, r0
str r4, [r0, #0x14]
add r0, r5, #0
bl MOD17_021DA844
add sp, #4
mov r0, #1
pop {r3, r4, r5, r6, pc}
_021DA8A8:
mov r0, #0
add sp, #4
pop {r3, r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DA870
thumb_func_start MOD17_021DA8B0
MOD17_021DA8B0: ; 0x021DA8B0
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r1, [sp, #4]
str r0, [sp]
str r2, [sp, #8]
bl MOD17_021DAA7C
add r7, r0, #0
ldr r0, [sp, #4]
mov r1, #0xc
mul r1, r0
ldr r0, [sp]
mov r4, #1
add r6, r0, r1
ldr r0, [r6, #0x10]
cmp r0, #1
ble _021DA912
_021DA8D2:
ldr r0, [sp, #8]
cmp r0, #0
bne _021DA8E4
ldr r1, [r6, #0x10]
add r0, r4, r7
bl _s32_div_f
add r5, r1, #0
b _021DA8EC
_021DA8E4:
sub r5, r7, r4
bpl _021DA8EC
ldr r0, [r6, #0x10]
add r5, r5, r0
_021DA8EC:
ldr r0, [sp]
ldr r1, [sp, #4]
add r2, r5, #0
bl MOD17_021DABDC
ldr r1, [r0, #8]
cmp r1, r0
beq _021DA90A
ldr r0, [sp]
ldr r1, [sp, #4]
add r2, r5, #0
bl MOD17_021DA870
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_021DA90A:
ldr r0, [r6, #0x10]
add r4, r4, #1
cmp r4, r0
blt _021DA8D2
_021DA912:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DA8B0
thumb_func_start MOD17_021DA918
MOD17_021DA918: ; 0x021DA918
push {r4, r5, r6, lr}
add r4, r1, #0
mov r1, #0
add r5, r0, #0
add r6, r2, #0
bl MOD17_021DAB38
mov r0, #0xc
mul r0, r4
str r4, [r5]
add r0, r5, r0
str r6, [r0, #0x14]
add r0, r5, #0
mov r1, #1
bl MOD17_021DAB38
add r0, r5, #0
bl MOD17_021DA844
pop {r4, r5, r6, pc}
thumb_func_end MOD17_021DA918
thumb_func_start MOD17_021DA940
MOD17_021DA940: ; 0x021DA940
push {r3, lr}
mov r1, #0x12
add r0, sp, #0
strb r1, [r0]
mov r1, #0x8f
strb r1, [r0, #1]
mov r1, #0xa
strb r1, [r0, #2]
mov r1, #0x76
strb r1, [r0, #3]
add r0, sp, #0
bl FUN_02020A40
pop {r3, pc}
thumb_func_end MOD17_021DA940
thumb_func_start MOD17_021DA95C
MOD17_021DA95C: ; 0x021DA95C
push {r3, lr}
mov r3, #0x12
add r0, sp, #0
strb r3, [r0]
mov r3, #0x8f
strb r3, [r0, #1]
mov r3, #0xa
strb r3, [r0, #2]
mov r3, #0x76
strb r3, [r0, #3]
add r0, sp, #0
bl FUN_02020AE8
pop {r3, pc}
thumb_func_end MOD17_021DA95C
thumb_func_start MOD17_021DA978
MOD17_021DA978: ; 0x021DA978
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
add r7, r2, #0
str r3, [sp]
bl MOD17_021DABB4
add r5, r0, #0
ldr r4, [r5, #8]
cmp r4, r5
beq _021DA9A6
_021DA98C:
ldr r3, [sp]
add r0, r4, #0
add r1, r6, #0
add r2, r7, #0
bl MOD17_021DBB1C
cmp r0, #1
bne _021DA9A0
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
_021DA9A0:
ldr r4, [r4, #8]
cmp r4, r5
bne _021DA98C
_021DA9A6:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DA978
thumb_func_start MOD17_021DA9AC
MOD17_021DA9AC: ; 0x021DA9AC
push {r3, r4, r5, lr}
sub sp, #0x30
add r5, r0, #0
ldr r0, [r5, #0x54]
add r4, r1, #0
str r0, [sp]
mov r0, #0x19
lsl r1, r4, #1
str r0, [sp, #4]
add r0, r1, #0
add r0, #0x81
str r0, [sp, #8]
mov r0, #0x85
str r0, [sp, #0xc]
mov r0, #8
str r0, [sp, #0x14]
mov r0, #0x81
str r0, [sp, #0x18]
mov r0, #3
str r0, [sp, #0x1c]
mov r0, #1
str r0, [sp, #0x20]
mov r0, #2
str r0, [sp, #0x24]
mov r0, #0
str r0, [sp, #0x28]
mov r0, #0xe
add r1, #0x82
str r0, [sp, #0x2c]
add r0, r5, #0
str r1, [sp, #0x10]
add r0, #0x5c
add r1, sp, #0
bl MOD17_021DBD04
str r4, [r5, #0x40]
add sp, #0x30
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DA9AC
thumb_func_start MOD17_021DA9F8
MOD17_021DA9F8: ; 0x021DA9F8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r5, r0, #0
ldr r0, [r5, #0x54]
add r4, r1, #0
str r0, [sp, #8]
mov r0, #0x19
lsl r1, r4, #1
str r0, [sp, #0xc]
add r0, r1, #0
add r0, #0x81
str r0, [sp, #0x10]
mov r0, #0x85
str r0, [sp, #0x14]
mov r0, #8
add r1, #0x82
str r0, [sp, #0x1c]
mov r0, #0x81
str r1, [sp, #0x18]
str r0, [sp, #0x20]
mov r0, #3
mov r1, #2
str r0, [sp, #0x24]
mov r0, #1
str r1, [sp, #0x2c]
mov r7, #0
mov r1, #0xe
str r0, [sp, #0x28]
str r7, [sp, #0x30]
str r1, [sp, #0x34]
tst r0, r2
beq _021DAA3A
mov r7, #0x70
_021DAA3A:
mov r0, #2
tst r0, r2
beq _021DAA44
mov r6, #0x81
b _021DAA46
_021DAA44:
mov r6, #0
_021DAA46:
ldr r0, [sp, #0x50]
str r3, [sp]
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x5c
add r1, sp, #8
add r2, r7, #0
add r3, r6, #0
bl MOD17_021DBE3C
str r4, [r5, #0x40]
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DA9F8
thumb_func_start MOD17_021DAA60
MOD17_021DAA60: ; 0x021DAA60
ldr r3, _021DAA68 ; =MOD17_021DBD4C
add r0, #0x5c
bx r3
nop
_021DAA68: .word MOD17_021DBD4C
thumb_func_end MOD17_021DAA60
thumb_func_start MOD17_021DAA6C
MOD17_021DAA6C: ; 0x021DAA6C
push {r4, lr}
add r4, r0, #0
bne _021DAA76
bl ErrorHandling
_021DAA76:
ldr r0, [r4]
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DAA6C
thumb_func_start MOD17_021DAA7C
MOD17_021DAA7C: ; 0x021DAA7C
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
add r4, r1, #0
cmp r5, #0
bne _021DAA8C
bl ErrorHandling
_021DAA8C:
mov r0, #0xc
mul r0, r4
add r3, r5, r0
add r3, #0xc
ldmia r3!, {r0, r1}
add r2, sp, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [sp, #8]
add sp, #0xc
pop {r4, r5, pc}
thumb_func_end MOD17_021DAA7C
thumb_func_start MOD17_021DAAA4
MOD17_021DAAA4: ; 0x021DAAA4
push {r4, lr}
add r4, r3, #0
bl MOD17_021DABDC
ldr r2, [sp, #8]
add r1, r4, #0
bl MOD17_021DBC38
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DAAA4
thumb_func_start MOD17_021DAAB8
MOD17_021DAAB8: ; 0x021DAAB8
ldr r0, [r0, #0x3c]
cmp r0, #0
bne _021DAAC2
mov r0, #1
bx lr
_021DAAC2:
mov r0, #0
bx lr
.align 2, 0
thumb_func_end MOD17_021DAAB8
thumb_func_start MOD17_021DAAC8
MOD17_021DAAC8: ; 0x021DAAC8
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r1, [r4, #0x1c]
add r5, r0, #0
add r0, #0xc
bl MOD17_021DAB48
mov r0, #0
str r0, [r5]
ldr r0, [r5, #0xc]
mov r1, #1
bl MOD17_021DAB04
add r0, r5, #0
ldr r1, [r4, #0x20]
add r0, #0x18
bl MOD17_021DAB48
add r0, r5, #0
ldr r1, [r4, #0x24]
add r0, #0x24
bl MOD17_021DAB48
add r5, #0x30
add r0, r5, #0
mov r1, #1
bl MOD17_021DAB48
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DAAC8
thumb_func_start MOD17_021DAB04
MOD17_021DAB04: ; 0x021DAB04
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r4, [r5, #8]
add r6, r1, #0
cmp r4, r5
beq _021DAB24
_021DAB10:
ldr r0, [r4, #4]
cmp r0, #2
bhi _021DAB1E
ldr r0, [r4]
add r1, r6, #0
bl MOD17_021D7660
_021DAB1E:
ldr r4, [r4, #8]
cmp r4, r5
bne _021DAB10
_021DAB24:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DAB04
thumb_func_start MOD17_021DAB28
MOD17_021DAB28: ; 0x021DAB28
push {r4, lr}
add r4, r3, #0
bl MOD17_021DABDC
add r1, r4, #0
bl MOD17_021DAB04
pop {r4, pc}
thumb_func_end MOD17_021DAB28
thumb_func_start MOD17_021DAB38
MOD17_021DAB38: ; 0x021DAB38
push {r4, lr}
add r4, r1, #0
bl MOD17_021DABB4
add r1, r4, #0
bl MOD17_021DAB04
pop {r4, pc}
thumb_func_end MOD17_021DAB38
thumb_func_start MOD17_021DAB48
MOD17_021DAB48: ; 0x021DAB48
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r5, r0, #0
mov r0, #0xe
lsl r1, r4, #4
bl AllocFromHeap
str r0, [r5]
str r4, [r5, #4]
mov r6, #0
str r6, [r5, #8]
ldr r0, [r5, #4]
cmp r0, #0
ble _021DAB88
add r4, r6, #0
add r7, r6, #0
_021DAB68:
ldr r0, [r5]
add r1, r7, #0
add r0, r0, r4
str r0, [r0, #8]
ldr r0, [r5]
add r0, r0, r4
str r0, [r0, #0xc]
ldr r0, [r5]
add r0, r0, r4
bl MOD17_021DAB04
ldr r0, [r5, #4]
add r6, r6, #1
add r4, #0x10
cmp r6, r0
blt _021DAB68
_021DAB88:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DAB48
thumb_func_start MOD17_021DAB8C
MOD17_021DAB8C: ; 0x021DAB8C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FreeToHeap
mov r0, #0
str r0, [r4]
strb r0, [r4]
strb r0, [r4, #1]
strb r0, [r4, #2]
strb r0, [r4, #3]
strb r0, [r4, #4]
strb r0, [r4, #5]
strb r0, [r4, #6]
strb r0, [r4, #7]
strb r0, [r4, #8]
strb r0, [r4, #9]
strb r0, [r4, #0xa]
strb r0, [r4, #0xb]
pop {r4, pc}
thumb_func_end MOD17_021DAB8C
thumb_func_start MOD17_021DABB4
MOD17_021DABB4: ; 0x021DABB4
push {r3}
sub sp, #0xc
ldr r2, [r0]
mov r1, #0xc
mul r1, r2
add r3, r0, r1
add r3, #0xc
ldmia r3!, {r0, r1}
add r2, sp, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [sp, #8]
ldr r1, [sp]
lsl r0, r0, #4
add r0, r1, r0
add sp, #0xc
pop {r3}
bx lr
.align 2, 0
thumb_func_end MOD17_021DABB4
thumb_func_start MOD17_021DABDC
MOD17_021DABDC: ; 0x021DABDC
push {r4}
sub sp, #0xc
mov r3, #0xc
mul r3, r1
add r4, r0, r3
add r4, #0xc
ldmia r4!, {r0, r1}
add r3, sp, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
str r0, [r3]
ldr r1, [sp]
lsl r0, r2, #4
add r0, r1, r0
add sp, #0xc
pop {r4}
bx lr
.align 2, 0
thumb_func_end MOD17_021DABDC
thumb_func_start MOD17_021DAC00
MOD17_021DAC00: ; 0x021DAC00
push {r4, lr}
mov r4, #0
bl MOD17_021DABDC
ldr r1, [r0, #8]
cmp r1, r0
beq _021DAC16
_021DAC0E:
ldr r1, [r1, #8]
add r4, r4, #1
cmp r1, r0
bne _021DAC0E
_021DAC16:
add r0, r4, #0
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DAC00
thumb_func_start MOD17_021DAC1C
MOD17_021DAC1C: ; 0x021DAC1C
push {r3, r4, r5, lr}
add r5, r3, #0
mov r4, #0
bl MOD17_021DABDC
ldr r1, [r0, #8]
cmp r1, r0
beq _021DAC3C
_021DAC2C:
cmp r4, r5
bne _021DAC34
add r0, r1, #0
pop {r3, r4, r5, pc}
_021DAC34:
ldr r1, [r1, #8]
add r4, r4, #1
cmp r1, r0
bne _021DAC2C
_021DAC3C:
mov r0, #0
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DAC1C
thumb_func_start MOD17_021DAC40
MOD17_021DAC40: ; 0x021DAC40
push {r4, lr}
ldr r4, [r0]
cmp r4, r2
bne _021DAC54
mov r4, #0xc
mul r4, r2
add r0, r0, r4
ldr r0, [r0, #0x14]
cmp r3, r0
beq _021DAC5E
_021DAC54:
add r0, r1, #0
mov r1, #0
bl MOD17_021D7660
pop {r4, pc}
_021DAC5E:
add r0, r1, #0
mov r1, #1
bl MOD17_021D7660
pop {r4, pc}
thumb_func_end MOD17_021DAC40
thumb_func_start MOD17_021DAC68
MOD17_021DAC68: ; 0x021DAC68
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
mov r1, #9
add r4, r2, #0
bl _s32_div_f
add r7, r1, #0
add r0, r7, #0
mov r1, #3
bl _s32_div_f
add r6, r0, #0
add r0, r7, #0
mov r1, #3
bl _s32_div_f
add r0, r6, #1
lsl r2, r0, #3
lsl r0, r6, #5
add r0, r2, r0
add r0, #0x10
str r0, [r4]
add r0, r1, #1
lsl r2, r0, #3
mov r0, #0x18
mul r0, r1
add r0, r2, r0
add r0, #8
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DAC68
thumb_func_start MOD17_021DACA4
MOD17_021DACA4: ; 0x021DACA4
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
str r3, [sp]
ldr r0, _021DAD18 ; =MOD17_021DAD1C
mov r1, #0x30
mov r2, #0
mov r3, #0xd
bl FUN_020061E8
bl FUN_0201B6C8
add r4, r0, #0
str r5, [r4]
str r6, [r4, #4]
ldr r0, [sp]
str r7, [r4, #8]
str r0, [r4, #0xc]
ldr r0, [sp, #0x18]
add r1, r6, #0
str r0, [r4, #0x10]
mov r0, #0
str r0, [r4, #0x1c]
add r0, r5, #0
add r2, r7, #0
bl MOD17_021DAC00
str r0, [r4, #0x20]
ldr r1, [sp]
ldr r2, [sp, #0x18]
add r0, r5, #0
bl MOD17_021DAC00
str r0, [r4, #0x24]
ldr r1, [r4, #0x20]
add r2, r1, r0
mov r1, #0xc
mov r0, #0xd
mul r1, r2
str r2, [r4, #0x2c]
bl AllocFromHeap
str r0, [r4, #0x28]
cmp r0, #0
bne _021DAD04
bl ErrorHandling
_021DAD04:
ldr r3, [r4, #0x2c]
mov r2, #0xc
ldr r0, [r4, #0x28]
mov r1, #0
mul r2, r3
bl memset
mov r0, #1
str r0, [r5, #0x3c]
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DAD18: .word MOD17_021DAD1C
thumb_func_end MOD17_021DACA4
thumb_func_start MOD17_021DAD1C
MOD17_021DAD1C: ; 0x021DAD1C
push {r3, r4, r5, r6, lr}
sub sp, #4
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4, #0x1c]
cmp r0, #4
bls _021DAD2C
b _021DAE74
_021DAD2C:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021DAD38: ; jump table
.short _021DAD42 - _021DAD38 - 2 ; case 0
.short _021DAD96 - _021DAD38 - 2 ; case 1
.short _021DADE2 - _021DAD38 - 2 ; case 2
.short _021DAE28 - _021DAD38 - 2 ; case 3
.short _021DAE40 - _021DAD38 - 2 ; case 4
_021DAD42:
mov r0, #0x83
mvn r0, r0
str r0, [sp]
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
mov r3, #0
bl MOD17_021DAAA4
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
mov r3, #1
bl MOD17_021DAB28
mov r0, #0
str r0, [r4, #0x14]
add r1, r4, #0
ldr r0, [r4]
add r1, #0x14
str r1, [sp]
ldr r1, [r0, #0x40]
add r1, r1, #1
lsr r3, r1, #0x1f
lsl r2, r1, #0x1f
sub r2, r2, r3
mov r1, #0x1f
ror r2, r1
add r1, r3, r2
mov r2, #2
mov r3, #5
bl MOD17_021DA9F8
ldr r0, [r4, #0x20]
mov r1, #1
bl MOD17_021DAF30
str r0, [r4, #0x18]
ldr r0, [r4, #0x1c]
add r0, r0, #1
str r0, [r4, #0x1c]
b _021DAE78
_021DAD96:
ldr r0, [r4, #0x18]
mov r6, #0
cmp r0, #0
ble _021DADCA
add r5, r4, #0
add r5, #0x20
_021DADA2:
ldr r0, [r4, #0x20]
sub r0, r0, #1
bmi _021DADC2
ldr r0, [r5]
sub r0, r0, #1
str r0, [r5]
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
ldr r3, [r4, #0x20]
bl MOD17_021DAC1C
ldr r1, [r4, #0x28]
ldr r2, [r4, #0x2c]
bl MOD17_021DAE84
_021DADC2:
ldr r0, [r4, #0x18]
add r6, r6, #1
cmp r6, r0
blt _021DADA2
_021DADCA:
ldr r0, [r4, #0x20]
cmp r0, #0
bne _021DAE78
ldr r0, [r4, #0x24]
mov r1, #2
bl MOD17_021DAF30
str r0, [r4, #0x18]
ldr r0, [r4, #0x1c]
add r0, r0, #1
str r0, [r4, #0x1c]
b _021DAE78
_021DADE2:
ldr r0, [r4, #0x18]
mov r6, #0
cmp r0, #0
ble _021DAE16
add r5, r4, #0
add r5, #0x24
_021DADEE:
ldr r0, [r4, #0x24]
sub r0, r0, #1
bmi _021DAE0E
ldr r0, [r5]
sub r0, r0, #1
str r0, [r5]
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x24]
bl MOD17_021DAC1C
ldr r1, [r4, #0x28]
ldr r2, [r4, #0x2c]
bl MOD17_021DAE84
_021DAE0E:
ldr r0, [r4, #0x18]
add r6, r6, #1
cmp r6, r0
blt _021DADEE
_021DAE16:
ldr r0, [r4, #0x24]
cmp r0, #0
bne _021DAE78
ldr r0, [r4, #0x1c]
add r0, r0, #1
str r0, [r4, #0x1c]
mov r0, #0
str r0, [r4, #0x18]
b _021DAE78
_021DAE28:
ldr r0, [r4, #0x18]
add r0, r0, #1
str r0, [r4, #0x18]
cmp r0, #3
ble _021DAE78
ldr r0, [r4, #0x14]
cmp r0, #0
beq _021DAE78
ldr r0, [r4, #0x1c]
add r0, r0, #1
str r0, [r4, #0x1c]
b _021DAE78
_021DAE40:
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
mov r3, #0
bl MOD17_021DAB28
mov r0, #0x83
mvn r0, r0
str r0, [sp]
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
mov r3, #0
bl MOD17_021DAAA4
ldr r0, [r4]
mov r1, #0
str r1, [r0, #0x3c]
ldr r0, [r4, #0x28]
bl FreeToHeap
add r0, r5, #0
bl FUN_0200621C
add sp, #4
pop {r3, r4, r5, r6, pc}
_021DAE74:
bl ErrorHandling
_021DAE78:
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x2c]
bl MOD17_021DAEC4
add sp, #4
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD17_021DAD1C
thumb_func_start MOD17_021DAE84
MOD17_021DAE84: ; 0x021DAE84
push {r4, lr}
add r4, r0, #0
add r0, r1, #0
add r1, r2, #0
bl MOD17_021DAE9C
str r4, [r0]
mov r1, #3
str r1, [r0, #4]
mov r1, #0x2c
str r1, [r0, #8]
pop {r4, pc}
thumb_func_end MOD17_021DAE84
thumb_func_start MOD17_021DAE9C
MOD17_021DAE9C: ; 0x021DAE9C
push {r3, r4}
mov r3, #0
cmp r1, #0
ble _021DAEBE
add r4, r0, #0
_021DAEA6:
ldr r2, [r4]
cmp r2, #0
bne _021DAEB6
mov r1, #0xc
mul r1, r3
add r0, r0, r1
pop {r3, r4}
bx lr
_021DAEB6:
add r3, r3, #1
add r4, #0xc
cmp r3, r1
blt _021DAEA6
_021DAEBE:
mov r0, #0
pop {r3, r4}
bx lr
thumb_func_end MOD17_021DAE9C
thumb_func_start MOD17_021DAEC4
MOD17_021DAEC4: ; 0x021DAEC4
push {r4, r5, r6, lr}
add r6, r1, #0
add r5, r0, #0
mov r4, #0
cmp r6, #0
ble _021DAEE4
_021DAED0:
ldr r0, [r5]
cmp r0, #0
beq _021DAEDC
add r0, r5, #0
bl MOD17_021DAEE8
_021DAEDC:
add r4, r4, #1
add r5, #0xc
cmp r4, r6
blt _021DAED0
_021DAEE4:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DAEC4
thumb_func_start MOD17_021DAEE8
MOD17_021DAEE8: ; 0x021DAEE8
push {r4, lr}
sub sp, #8
add r4, r0, #0
ldr r0, [r4]
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DBBB8
ldr r1, [sp]
ldr r0, [r4, #8]
add r2, r1, r0
str r2, [sp]
ldr r0, [r4]
ldr r1, [sp, #4]
bl MOD17_021DBB68
ldr r0, [r4, #4]
sub r0, r0, #1
str r0, [r4, #4]
cmp r0, #0
bgt _021DAF2C
mov r0, #0
strb r0, [r4]
strb r0, [r4, #1]
strb r0, [r4, #2]
strb r0, [r4, #3]
strb r0, [r4, #4]
strb r0, [r4, #5]
strb r0, [r4, #6]
strb r0, [r4, #7]
strb r0, [r4, #8]
strb r0, [r4, #9]
strb r0, [r4, #0xa]
strb r0, [r4, #0xb]
_021DAF2C:
add sp, #8
pop {r4, pc}
thumb_func_end MOD17_021DAEE8
thumb_func_start MOD17_021DAF30
MOD17_021DAF30: ; 0x021DAF30
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
bl _s32_div_f
sub r0, r4, r1
add r0, r5, r0
add r1, r4, #0
bl _s32_div_f
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DAF30
thumb_func_start MOD17_021DAF48
MOD17_021DAF48: ; 0x021DAF48
add r3, r0, #0
mov r2, #0x1c
mov r1, #0
_021DAF4E:
strb r1, [r3]
add r3, r3, #1
sub r2, r2, #1
bne _021DAF4E
ldr r1, _021DAF60 ; =MOD17_021DAFA0
str r1, [r0, #4]
str r1, [r0, #8]
str r1, [r0, #0xc]
bx lr
.align 2, 0
_021DAF60: .word MOD17_021DAFA0
thumb_func_end MOD17_021DAF48
thumb_func_start MOD17_021DAF64
MOD17_021DAF64: ; 0x021DAF64
push {r4, lr}
ldr r1, _021DAF9C ; =0x021C48F8
add r4, r0, #0
ldrh r2, [r1, #0x20]
cmp r2, #0
beq _021DAF76
ldr r1, [r4, #4]
blx r1
b _021DAF8C
_021DAF76:
ldrh r1, [r1, #0x22]
cmp r1, #0
beq _021DAF82
ldr r1, [r4, #0xc]
blx r1
b _021DAF8C
_021DAF82:
ldrb r1, [r4, #0x18]
cmp r1, #0
beq _021DAF8C
ldr r1, [r4, #8]
blx r1
_021DAF8C:
ldr r0, _021DAF9C ; =0x021C48F8
ldrh r1, [r0, #0x1c]
strh r1, [r4, #0x14]
ldrh r1, [r0, #0x1e]
strh r1, [r4, #0x16]
ldrh r0, [r0, #0x22]
strb r0, [r4, #0x18]
pop {r4, pc}
.align 2, 0
_021DAF9C: .word 0x021C48F8
thumb_func_end MOD17_021DAF64
thumb_func_start MOD17_021DAFA0
MOD17_021DAFA0: ; 0x021DAFA0
bx lr
.align 2, 0
thumb_func_end MOD17_021DAFA0
thumb_func_start MOD17_021DAFA4
MOD17_021DAFA4: ; 0x021DAFA4
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r6, r0, #0
mov r4, #0
add r5, r7, #0
_021DAFAE:
add r0, r6, #0
add r1, r4, #0
bl FUN_02027114
add r4, r4, #1
stmia r5!, {r0}
cmp r4, #0x64
blt _021DAFAE
mov r0, #0x19
mov r3, #0
add r2, r7, #0
mov r1, #0x12
lsl r0, r0, #4
_021DAFC8:
add r3, r3, #1
str r1, [r2, r0]
add r2, r2, #4
cmp r3, #0x12
blt _021DAFC8
mov r5, #0x19
mov r4, #0
lsl r5, r5, #4
_021DAFD8:
add r0, r6, #0
add r1, r4, #0
bl FUN_0202714C
cmp r0, #0x12
beq _021DAFEA
lsl r0, r0, #2
add r0, r7, r0
str r4, [r0, r5]
_021DAFEA:
add r4, r4, #1
cmp r4, #0x12
blt _021DAFD8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DAFA4
thumb_func_start MOD17_021DAFF4
MOD17_021DAFF4: ; 0x021DAFF4
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r0, #0
cmp r5, #0x64
blo _021DB002
bl ErrorHandling
_021DB002:
lsl r0, r5, #2
ldr r0, [r4, r0]
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DAFF4
thumb_func_start MOD17_021DB008
MOD17_021DB008: ; 0x021DB008
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r1, r0]
bx lr
thumb_func_end MOD17_021DB008
thumb_func_start MOD17_021DB014
MOD17_021DB014: ; 0x021DB014
push {r3, r4}
mov r2, #0x19
mov r4, #0
lsl r2, r2, #4
_021DB01C:
ldr r3, [r0, r2]
cmp r1, r3
bne _021DB028
add r0, r4, #0
pop {r3, r4}
bx lr
_021DB028:
add r4, r4, #1
add r0, r0, #4
cmp r4, #0x12
blt _021DB01C
add r0, r4, #0
pop {r3, r4}
bx lr
.align 2, 0
thumb_func_end MOD17_021DB014
thumb_func_start MOD17_021DB038
MOD17_021DB038: ; 0x021DB038
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
bl MOD17_021DAF48
mov r0, #0xd
mov r1, #0x34
bl AllocFromHeap
str r0, [r5]
mov r1, #0
mov r2, #0x34
bl memset
ldr r1, [r5]
ldr r0, [sp, #0x18]
str r4, [r1, #4]
str r6, [r1, #8]
str r7, [r1]
str r0, [r1, #0xc]
ldr r0, [sp, #0x1c]
str r0, [r1, #0x2c]
ldr r0, _021DB07C ; =MOD17_021DB0A0
str r0, [r5, #4]
ldr r0, _021DB080 ; =MOD17_021DB210
str r0, [r5, #8]
ldr r0, _021DB084 ; =MOD17_021DB3A4
str r0, [r5, #0xc]
ldr r0, _021DB088 ; =MOD17_021DB08C
str r0, [r5, #0x10]
pop {r3, r4, r5, r6, r7, pc}
nop
_021DB07C: .word MOD17_021DB0A0
_021DB080: .word MOD17_021DB210
_021DB084: .word MOD17_021DB3A4
_021DB088: .word MOD17_021DB08C
thumb_func_end MOD17_021DB038
thumb_func_start MOD17_021DB08C
MOD17_021DB08C: ; 0x021DB08C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FreeToHeap
add r0, r4, #0
bl MOD17_021DAF48
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DB08C
thumb_func_start MOD17_021DB0A0
MOD17_021DB0A0: ; 0x021DB0A0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
ldr r4, [r5]
ldr r0, [r4, #4]
bl MOD17_021DA250
cmp r0, #0
beq _021DB122
ldr r3, [r4]
ldr r0, [r4, #4]
ldr r3, [r3, #0x30]
add r1, sp, #0xc
add r2, sp, #8
bl MOD17_021DA288
add r6, r0, #0
beq _021DB0D2
ldr r0, [r6, #4]
cmp r0, #3
bne _021DB0D2
ldr r0, [r4, #0x2c]
cmp r0, #0
bne _021DB0D2
mov r6, #0
_021DB0D2:
cmp r6, #0
beq _021DB15E
ldr r0, [r6, #4]
cmp r0, #0
bne _021DB0E8
ldr r0, [r4, #4]
add r1, r6, #0
bl MOD17_021DA0E8
mov r7, #0
b _021DB104
_021DB0E8:
add r0, r6, #0
bl MOD17_021DA050
ldr r0, [r6]
bl MOD17_021DB7E8
add r1, r4, #0
add r2, r4, #0
add r7, r0, #0
add r0, r6, #0
add r1, #0x24
add r2, #0x28
bl MOD17_021DBBB8
_021DB104:
ldr r0, [r4, #4]
bl MOD17_021DA178
ldr r0, [sp, #8]
add r1, r6, #0
str r0, [sp]
str r7, [sp, #4]
ldr r3, [sp, #0xc]
add r0, r4, #0
mov r2, #1
bl MOD17_021DB4D8
bl MOD17_021D7A7C
b _021DB15E
_021DB122:
ldr r0, [r4, #8]
bl MOD17_021DA940
cmp r0, #0
beq _021DB15E
ldr r3, [r4]
ldr r0, [r4, #8]
ldr r3, [r3, #0x30]
add r1, sp, #0xc
add r2, sp, #8
bl MOD17_021DA978
add r6, r0, #0
beq _021DB15E
bl MOD17_021DA810
ldr r0, [r4, #8]
bl MOD17_021DA844
ldr r0, [sp, #8]
mov r2, #0
str r0, [sp]
str r2, [sp, #4]
ldr r3, [sp, #0xc]
add r0, r4, #0
add r1, r6, #0
bl MOD17_021DB4D8
bl MOD17_021D7A7C
_021DB15E:
ldr r1, [r4, #0x10]
cmp r1, #0
beq _021DB1A8
ldr r1, [r1, #4]
ldr r0, _021DB1AC ; =0x000005EB
cmp r1, #0
beq _021DB176
cmp r1, #1
beq _021DB180
cmp r1, #3
beq _021DB192
b _021DB19A
_021DB176:
ldr r1, _021DB1B0 ; =MOD17_021DB210
str r1, [r5, #8]
ldr r1, _021DB1B4 ; =MOD17_021DB3A4
str r1, [r5, #0xc]
b _021DB19A
_021DB180:
ldr r0, _021DB1B8 ; =MOD17_021DB1D0
str r0, [r5, #8]
ldr r0, _021DB1BC ; =MOD17_021DB1CC
str r0, [r5, #0xc]
add r0, r5, #0
bl MOD17_021DB4AC
ldr r0, _021DB1C0 ; =0x0000067E
b _021DB19A
_021DB192:
ldr r1, _021DB1C4 ; =MOD17_021DB3D4
str r1, [r5, #8]
ldr r1, _021DB1C8 ; =MOD17_021DB404
str r1, [r5, #0xc]
_021DB19A:
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl FUN_020054C8
add r0, r4, #0
bl MOD17_021DB680
_021DB1A8:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DB1AC: .word 0x000005EB
_021DB1B0: .word MOD17_021DB210
_021DB1B4: .word MOD17_021DB3A4
_021DB1B8: .word MOD17_021DB1D0
_021DB1BC: .word MOD17_021DB1CC
_021DB1C0: .word 0x0000067E
_021DB1C4: .word MOD17_021DB3D4
_021DB1C8: .word MOD17_021DB404
thumb_func_end MOD17_021DB0A0
thumb_func_start MOD17_021DB1CC
MOD17_021DB1CC: ; 0x021DB1CC
bx lr
.align 2, 0
thumb_func_end MOD17_021DB1CC
thumb_func_start MOD17_021DB1D0
MOD17_021DB1D0: ; 0x021DB1D0
push {r4, lr}
sub sp, #8
ldr r4, [r0]
ldr r0, [r4, #0x10]
cmp r0, #0
beq _021DB20A
ldr r0, [r0, #4]
cmp r0, #1
beq _021DB1E6
bl ErrorHandling
_021DB1E6:
ldr r0, [r4, #0x10]
mov r2, #0x1c
ldr r0, [r0, #4]
mov r3, #0x1e
str r0, [sp]
add r0, r4, #0
add r0, #0x21
ldrb r0, [r0]
mov r1, #4
str r0, [sp, #4]
ldrsh r2, [r4, r2]
ldrsh r3, [r4, r3]
add r0, r4, #0
bl MOD17_021DB59C
add r0, r4, #0
bl MOD17_021DB534
_021DB20A:
add sp, #8
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DB1D0
thumb_func_start MOD17_021DB210
MOD17_021DB210: ; 0x021DB210
push {r4, r5, r6, lr}
sub sp, #0x28
add r6, r0, #0
ldr r4, [r6]
ldr r1, [r4, #0x10]
cmp r1, #0
bne _021DB220
b _021DB38E
_021DB220:
add r1, sp, #0x18
str r1, [sp]
add r1, sp, #0x24
add r2, sp, #0x20
add r3, sp, #0x1c
bl MOD17_021DB588
ldr r0, [r4, #4]
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x24]
bl MOD17_021DA26C
add r5, r0, #0
ldr r0, [r4, #4]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x24]
bl MOD17_021DA26C
add r5, r5, r0
ldr r0, [r4, #4]
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x20]
bl MOD17_021DA26C
add r5, r5, r0
ldr r0, [r4, #4]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x20]
bl MOD17_021DA26C
add r0, r5, r0
cmp r0, #4
blt _021DB2C2
ldr r2, [r4]
ldr r0, [r4, #4]
ldr r1, [r4, #0x10]
ldr r2, [r2, #0x30]
bl MOD17_021DA0C4
cmp r0, #0
bne _021DB2AC
mov r0, #0x1c
ldrsh r0, [r4, r0]
str r0, [sp, #0xc]
mov r0, #0x1e
ldrsh r0, [r4, r0]
str r0, [sp, #8]
ldr r0, _021DB394 ; =0x00000683
bl FUN_020054C8
ldr r0, [r4, #0xc]
ldr r2, _021DB398 ; =0x00000151
mov r1, #0x1a
mov r3, #3
bl MOD17_021DCB48
ldr r0, [r4, #0x10]
mov r1, #4
ldr r0, [r0, #4]
str r0, [sp]
add r0, r4, #0
add r0, #0x21
ldrb r0, [r0]
str r0, [sp, #4]
ldr r2, [sp, #0xc]
ldr r3, [sp, #8]
add r0, r4, #0
bl MOD17_021DB59C
b _021DB388
_021DB2AC:
ldr r0, [r4, #4]
bl MOD17_021DA178
bl MOD17_021D7A4C
mov r0, #0
str r0, [r4, #0x30]
ldr r0, _021DB39C ; =0x000005EA
bl FUN_020054C8
b _021DB388
_021DB2C2:
ldr r0, [r4, #0x10]
add r1, sp, #0x24
ldr r5, [r0]
add r0, sp, #0x18
str r0, [sp]
add r0, r6, #0
add r2, sp, #0x20
add r3, sp, #0x1c
bl MOD17_021DB548
ldr r0, [r4, #8]
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x24]
bl MOD17_021DA95C
add r6, r0, #0
ldr r0, [r4, #8]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x20]
bl MOD17_021DA95C
add r0, r6, r0
cmp r0, #2
bge _021DB340
add r0, r4, #0
add r0, #0x20
ldrb r0, [r0]
cmp r0, #1
bne _021DB32C
ldr r0, [r4, #0x10]
add r1, sp, #0x14
add r2, sp, #0x10
bl MOD17_021DBC08
bl rand_MT
ldr r2, [sp, #0x14]
mov r1, #0x6c
sub r1, r1, r2
bl _u32_div_f
add r1, #0xa
str r1, [sp, #0xc]
bl rand_MT
ldr r2, [sp, #0x10]
mov r1, #0x7d
sub r1, r1, r2
bl _u32_div_f
add r1, #0x12
str r1, [sp, #8]
b _021DB338
_021DB32C:
mov r0, #0x1c
ldrsh r0, [r4, r0]
str r0, [sp, #0xc]
mov r0, #0x1e
ldrsh r0, [r4, r0]
str r0, [sp, #8]
_021DB338:
ldr r0, _021DB394 ; =0x00000683
bl FUN_020054C8
b _021DB350
_021DB340:
ldr r0, [r4, #0x10]
add r1, sp, #0xc
add r2, sp, #8
bl MOD17_021DBBB8
ldr r0, _021DB3A0 ; =0x000005EB
bl FUN_020054C8
_021DB350:
add r0, r4, #0
add r0, #0x20
ldrb r0, [r0]
cmp r0, #1
bne _021DB36E
ldr r0, [r4, #0x10]
ldr r2, [r4, #8]
ldr r0, [r0, #4]
ldr r1, [r5]
ldr r2, [r2, #4]
bl MOD17_021DA608
add r1, r4, #0
add r1, #0x21
strb r0, [r1]
_021DB36E:
ldr r0, [r4, #0x10]
mov r1, #4
ldr r0, [r0, #4]
str r0, [sp]
add r0, r4, #0
add r0, #0x21
ldrb r0, [r0]
str r0, [sp, #4]
ldr r2, [sp, #0xc]
ldr r3, [sp, #8]
add r0, r4, #0
bl MOD17_021DB59C
_021DB388:
add r0, r4, #0
bl MOD17_021DB534
_021DB38E:
add sp, #0x28
pop {r4, r5, r6, pc}
nop
_021DB394: .word 0x00000683
_021DB398: .word 0x00000151
_021DB39C: .word 0x000005EA
_021DB3A0: .word 0x000005EB
thumb_func_end MOD17_021DB210
thumb_func_start MOD17_021DB3A4
MOD17_021DB3A4: ; 0x021DB3A4
push {r4, lr}
ldr r2, [r0]
ldr r0, [r2, #0x10]
cmp r0, #0
beq _021DB3C8
ldr r3, _021DB3CC ; =0x021C48F8
ldr r1, _021DB3D0 ; =0x0000FFFF
ldrh r4, [r3, #0x1c]
cmp r4, r1
beq _021DB3C8
beq _021DB3C8
ldrh r3, [r3, #0x1e]
ldr r1, [r2, #0x14]
ldr r2, [r2, #0x18]
sub r1, r4, r1
sub r2, r3, r2
bl MOD17_021DBB68
_021DB3C8:
pop {r4, pc}
nop
_021DB3CC: .word 0x021C48F8
_021DB3D0: .word 0x0000FFFF
thumb_func_end MOD17_021DB3A4
thumb_func_start MOD17_021DB3D4
MOD17_021DB3D4: ; 0x021DB3D4
push {r4, lr}
ldr r4, [r0]
ldr r1, [r4, #0x10]
cmp r1, #0
beq _021DB3FE
ldr r0, [r4, #4]
bl MOD17_021DA040
ldr r0, [r4, #4]
bl MOD17_021DA178
bl MOD17_021D7A4C
mov r0, #0
str r0, [r4, #0x30]
ldr r0, _021DB400 ; =0x000005EB
bl FUN_020054C8
add r0, r4, #0
bl MOD17_021DB534
_021DB3FE:
pop {r4, pc}
.align 2, 0
_021DB400: .word 0x000005EB
thumb_func_end MOD17_021DB3D4
thumb_func_start MOD17_021DB404
MOD17_021DB404: ; 0x021DB404
push {r4, r5, r6, r7, lr}
sub sp, #0x14
ldr r4, [r0]
str r0, [sp]
ldr r0, [r4, #0x10]
cmp r0, #0
beq _021DB49E
ldr r1, _021DB4A4 ; =0x021C48F8
ldrh r2, [r1, #0x1c]
ldr r1, _021DB4A8 ; =0x0000FFFF
cmp r2, r1
beq _021DB49E
beq _021DB49E
add r1, sp, #8
add r2, sp, #4
bl MOD17_021DBC20
ldr r0, [r4, #0x10]
add r1, sp, #0x10
add r2, sp, #0xc
bl MOD17_021DBC08
ldr r0, _021DB4A4 ; =0x021C48F8
ldr r1, [r4, #0x14]
ldrh r2, [r0, #0x1c]
ldr r3, [sp, #0xc]
sub r5, r2, r1
ldrh r1, [r0, #0x1e]
ldr r0, [r4, #0x18]
ldr r2, [sp, #4]
sub r6, r1, r0
sub r3, r3, r2
ldr r1, [sp, #8]
ldr r0, [sp, #0x10]
str r3, [sp, #0xc]
sub r0, r0, r1
add r3, r5, r1
add r7, r6, r2
str r0, [sp, #0x10]
cmp r3, #0x8a
bgt _021DB45C
mov r0, #0x8a
sub r5, r0, r1
b _021DB466
_021DB45C:
add r1, r5, r0
cmp r1, #0xf6
blt _021DB466
mov r1, #0xf6
sub r5, r1, r0
_021DB466:
cmp r7, #0x12
bgt _021DB470
mov r0, #0x12
sub r6, r0, r2
b _021DB47C
_021DB470:
ldr r1, [sp, #0xc]
add r0, r6, r1
cmp r0, #0x8f
blt _021DB47C
mov r0, #0x8f
sub r6, r0, r1
_021DB47C:
ldr r0, [sp]
add r1, r5, #0
add r2, r6, #0
bl MOD17_021DB6B4
ldr r0, [r4, #4]
add r1, sp, #8
add r2, sp, #4
bl MOD17_021DA36C
ldr r1, [sp, #8]
ldr r2, [sp, #4]
ldr r0, [sp]
add r1, r5, r1
add r2, r6, r2
bl MOD17_021DB6B4
_021DB49E:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_021DB4A4: .word 0x021C48F8
_021DB4A8: .word 0x0000FFFF
thumb_func_end MOD17_021DB404
thumb_func_start MOD17_021DB4AC
MOD17_021DB4AC: ; 0x021DB4AC
push {r3, r4, r5, lr}
ldr r4, [r0]
ldr r0, [r4, #0x10]
cmp r0, #0
beq _021DB4D4
ldr r0, [r0, #4]
cmp r0, #1
beq _021DB4C0
bl ErrorHandling
_021DB4C0:
ldr r0, [r4, #0x10]
ldr r5, [r0]
ldr r0, [r4, #4]
bl MOD17_021DA33C
ldr r0, [r4, #4]
ldr r1, [r5]
mov r2, #0xe
bl MOD17_021DA2F0
_021DB4D4:
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DB4AC
thumb_func_start MOD17_021DB4D8
MOD17_021DB4D8: ; 0x021DB4D8
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r1, #0
add r5, r0, #0
add r6, r2, #0
add r0, r4, #0
add r1, sp, #4
add r2, sp, #0
add r7, r3, #0
bl MOD17_021DBBB8
str r4, [r5, #0x10]
ldr r0, [sp, #4]
strh r0, [r5, #0x1c]
ldr r0, [sp]
strh r0, [r5, #0x1e]
add r0, r5, #0
add r0, #0x20
strb r6, [r0]
ldr r0, [sp, #0x20]
str r7, [r5, #0x14]
str r0, [r5, #0x18]
cmp r6, #0
bne _021DB51A
ldr r1, [r5, #0x10]
ldr r0, [r5, #8]
ldr r1, [r1, #4]
bl MOD17_021DAA7C
add r1, r5, #0
add r1, #0x21
strb r0, [r1]
b _021DB522
_021DB51A:
add r0, r5, #0
mov r1, #0
add r0, #0x21
strb r1, [r0]
_021DB522:
mov r0, #1
str r0, [r5, #0x30]
ldr r1, [sp, #0x24]
add r0, r4, #0
bl MOD17_021DBAD0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DB4D8
thumb_func_start MOD17_021DB534
MOD17_021DB534: ; 0x021DB534
mov r2, #0
str r2, [r0, #0x10]
strh r2, [r0, #0x1c]
add r1, r0, #0
strh r2, [r0, #0x1e]
add r1, #0x20
strb r2, [r1]
add r0, #0x21
strb r2, [r0]
bx lr
thumb_func_end MOD17_021DB534
thumb_func_start MOD17_021DB548
MOD17_021DB548: ; 0x021DB548
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
ldr r4, [r0]
add r5, r1, #0
ldr r0, [r4, #0x10]
add r6, r2, #0
add r1, sp, #0xc
add r2, sp, #8
add r7, r3, #0
bl MOD17_021DBC08
ldr r0, [r4, #0x10]
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DBBB8
ldr r0, [sp]
str r0, [r5]
ldr r1, [sp]
ldr r0, [sp, #8]
add r0, r1, r0
str r0, [r6]
ldr r0, [sp, #4]
str r0, [r7]
ldr r1, [sp, #4]
ldr r0, [sp, #0xc]
add r1, r1, r0
ldr r0, [sp, #0x28]
str r1, [r0]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DB548
thumb_func_start MOD17_021DB588
MOD17_021DB588: ; 0x021DB588
push {r3, r4, lr}
sub sp, #4
ldr r4, [sp, #0x10]
str r4, [sp]
ldr r0, [r0]
ldr r0, [r0, #0x10]
bl MOD17_021DBC70
add sp, #4
pop {r3, r4, pc}
thumb_func_end MOD17_021DB588
thumb_func_start MOD17_021DB59C
MOD17_021DB59C: ; 0x021DB59C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
str r3, [sp]
ldr r0, _021DB60C ; =MOD17_021DB610
mov r1, #0x2c
mov r2, #0
mov r3, #0xd
bl FUN_020061E8
bl FUN_0201B6C8
add r4, r0, #0
ldr r0, [r5, #8]
add r1, sp, #8
str r0, [r4]
ldr r0, [r5, #0x10]
add r2, sp, #4
str r0, [r4, #4]
str r6, [r4, #0x20]
ldr r0, [sp]
str r7, [r4, #0x10]
str r0, [r4, #0x14]
ldr r0, [sp, #0x20]
str r0, [r4, #0x18]
ldr r0, [sp, #0x24]
str r0, [r4, #0x1c]
ldr r0, [r5, #8]
add r0, #0x3c
str r0, [r4, #0x24]
add r0, r5, #0
add r0, #0x30
str r0, [r4, #0x28]
ldr r0, [r5, #0x10]
bl MOD17_021DBBB8
ldr r1, [r4, #0x10]
ldr r0, [sp, #8]
sub r0, r1, r0
add r1, r6, #0
bl _s32_div_f
str r0, [r4, #8]
ldr r1, [r4, #0x14]
ldr r0, [sp, #4]
sub r0, r1, r0
add r1, r6, #0
bl _s32_div_f
str r0, [r4, #0xc]
mov r0, #0
str r0, [r5, #0x30]
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.align 2, 0
_021DB60C: .word MOD17_021DB610
thumb_func_end MOD17_021DB59C
thumb_func_start MOD17_021DB610
MOD17_021DB610: ; 0x021DB610
push {r3, r4, r5, lr}
sub sp, #8
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4, #0x24]
ldr r0, [r0]
cmp r0, #1
beq _021DB67C
ldr r0, [r4, #4]
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DBBB8
ldr r1, [sp, #4]
ldr r0, [r4, #8]
add r0, r1, r0
str r0, [sp, #4]
ldr r1, [sp]
ldr r0, [r4, #0xc]
add r0, r1, r0
str r0, [sp]
ldr r0, [r4, #0x20]
sub r0, r0, #1
str r0, [r4, #0x20]
ldr r0, [r4, #4]
bpl _021DB674
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
bl MOD17_021DBB68
ldr r0, [r4]
ldr r1, [r4, #0x18]
ldr r2, [r4, #0x1c]
ldr r3, [r4, #4]
bl MOD17_021DA7E4
ldr r0, [r4]
bl MOD17_021DA844
ldr r0, [r4, #0x28]
ldr r0, [r0]
cmp r0, #0
bne _021DB66A
bl MOD17_021D7A4C
_021DB66A:
add r0, r5, #0
bl FUN_0200621C
add sp, #8
pop {r3, r4, r5, pc}
_021DB674:
ldr r1, [sp, #4]
ldr r2, [sp]
bl MOD17_021DBB68
_021DB67C:
add sp, #8
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DB610
thumb_func_start MOD17_021DB680
MOD17_021DB680: ; 0x021DB680
push {r3, lr}
ldr r3, [r0, #0x10]
ldr r1, [r3, #4]
cmp r1, #0
bne _021DB69A
ldr r3, [r3]
ldr r0, [r0, #0xc]
ldr r2, _021DB6B0 ; =0x00000152
ldr r3, [r3]
mov r1, #0x1a
bl MOD17_021DCB48
pop {r3, pc}
_021DB69A:
cmp r1, #1
bne _021DB6AE
ldr r3, [r3]
mov r2, #0x55
ldr r0, [r0, #0xc]
ldr r3, [r3]
mov r1, #0x1a
lsl r2, r2, #2
bl MOD17_021DCB48
_021DB6AE:
pop {r3, pc}
.align 2, 0
_021DB6B0: .word 0x00000152
thumb_func_end MOD17_021DB680
thumb_func_start MOD17_021DB6B4
MOD17_021DB6B4: ; 0x021DB6B4
push {r4, r5, r6, lr}
ldr r4, [r0]
add r5, r1, #0
ldr r0, [r4, #0x10]
add r6, r2, #0
bl MOD17_021DBB68
ldr r1, [r4, #0x24]
ldr r2, [r4, #0x28]
ldr r0, [r4, #4]
sub r1, r5, r1
sub r2, r6, r2
bl MOD17_021DA134
str r5, [r4, #0x24]
str r6, [r4, #0x28]
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DB6B4
thumb_func_start MOD17_021DB6D8
MOD17_021DB6D8: ; 0x021DB6D8
push {r3, r4, lr}
sub sp, #4
mov r2, #0
str r2, [sp]
add r4, r0, #0
ldrh r0, [r1]
ldrh r1, [r1, #2]
mov r3, #0xe
bl FUN_02006C98
add r1, r0, #0
add r0, r4, #0
mov r2, #0x76
bl MOD17_021D7A2C
ldr r0, [r0, #0x14]
bl FUN_02008A74
add sp, #4
pop {r3, r4, pc}
thumb_func_end MOD17_021DB6D8
thumb_func_start MOD17_021DB700
MOD17_021DB700: ; 0x021DB700
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r4, r2, #0
add r5, r0, #0
add r7, r1, #0
add r6, r3, #0
add r0, r4, #0
mov r1, #5
mov r2, #0
bl FUN_020671BC
add r0, r6, #0
add r1, r4, #0
mov r2, #2
bl FUN_02068B68
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
str r0, [sp, #0xc]
add r0, r7, #0
add r1, r6, #0
mov r2, #0xc0
mov r3, #0x38
bl FUN_020073A0
str r0, [r5]
add r0, r5, #0
add r1, sp, #0x18
add r2, sp, #0x14
bl MOD17_021DB878
ldr r1, [sp, #0x18]
mov r2, #0x38
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
ldr r1, [sp, #0x14]
str r0, [sp, #0x18]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
str r0, [sp, #0x14]
sub r0, r2, r0
strb r0, [r5, #4]
ldr r0, [sp, #0x14]
mov r1, #0xc0
add r0, #0x38
strb r0, [r5, #5]
ldr r0, [sp, #0x18]
sub r0, r1, r0
strb r0, [r5, #6]
ldr r0, [sp, #0x18]
add r0, #0xc0
strb r0, [r5, #7]
ldr r0, [sp, #0x14]
str r0, [sp]
ldr r3, [sp, #0x18]
add r0, r5, #4
bl MOD17_021DB9B8
add r0, r4, #0
mov r1, #2
bl FUN_02068E14
mov r2, #0
str r2, [sp]
add r7, r0, #0
ldrh r0, [r6]
ldrh r1, [r6, #2]
ldr r3, [sp, #0x30]
bl FUN_02006C98
add r1, sp, #0x10
add r6, r0, #0
bl FUN_020B0088
ldr r0, [sp, #0x10]
ldr r0, [r0, #0x14]
bl FUN_02008A74
ldr r1, [sp, #0x10]
ldr r0, [r1, #0x14]
ldrh r1, [r1, #2]
lsl r1, r1, #3
bl MOD17_021DB96C
strb r0, [r5, #8]
add r0, r6, #0
strb r7, [r5, #9]
bl FreeToHeap
str r4, [r5, #0xc]
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DB700
thumb_func_start MOD17_021DB7C0
MOD17_021DB7C0: ; 0x021DB7C0
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FUN_02007534
mov r1, #0x10
mov r0, #0
_021DB7CE:
strb r0, [r4]
add r4, r4, #1
sub r1, r1, #1
bne _021DB7CE
pop {r4, pc}
thumb_func_end MOD17_021DB7C0
thumb_func_start MOD17_021DB7D8
MOD17_021DB7D8: ; 0x021DB7D8
ldr r3, _021DB7E4 ; =FUN_02007558
add r2, r1, #0
ldr r0, [r0]
mov r1, #2
bx r3
nop
_021DB7E4: .word FUN_02007558
thumb_func_end MOD17_021DB7D8
thumb_func_start MOD17_021DB7E8
MOD17_021DB7E8: ; 0x021DB7E8
ldr r3, _021DB7F0 ; =FUN_0200782C
ldr r0, [r0]
mov r1, #2
bx r3
.align 2, 0
_021DB7F0: .word FUN_0200782C
thumb_func_end MOD17_021DB7E8
thumb_func_start MOD17_021DB7F4
MOD17_021DB7F4: ; 0x021DB7F4
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r6, r2, #0
add r5, r0, #0
add r1, sp, #8
add r2, sp, #4
bl MOD17_021DB878
ldr r0, [r5]
mov r1, #0
add r2, r4, #0
bl FUN_02007558
ldr r0, [r5]
mov r1, #1
add r2, r6, #0
bl FUN_02007558
ldr r1, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r2, r0, #1
ldr r1, [sp, #8]
str r2, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
str r0, [sp, #8]
str r2, [sp]
ldr r3, [sp, #8]
add r0, r5, #4
add r1, r4, #0
add r2, r6, #0
bl MOD17_021DB9B8
add sp, #0xc
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD17_021DB7F4
thumb_func_start MOD17_021DB840
MOD17_021DB840: ; 0x021DB840
ldr r3, _021DB848 ; =FUN_02020A40
add r0, r0, #4
bx r3
nop
_021DB848: .word FUN_02020A40
thumb_func_end MOD17_021DB840
thumb_func_start MOD17_021DB84C
MOD17_021DB84C: ; 0x021DB84C
ldr r3, _021DB854 ; =FUN_02020AE8
add r0, r0, #4
bx r3
nop
_021DB854: .word FUN_02020AE8
thumb_func_end MOD17_021DB84C
thumb_func_start MOD17_021DB858
MOD17_021DB858: ; 0x021DB858
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
mov r1, #0
add r6, r2, #0
bl FUN_0200782C
str r0, [r4]
ldr r0, [r5]
mov r1, #1
bl FUN_0200782C
str r0, [r6]
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DB858
thumb_func_start MOD17_021DB878
MOD17_021DB878: ; 0x021DB878
mov r0, #0x50
str r0, [r1]
str r0, [r2]
bx lr
thumb_func_end MOD17_021DB878
thumb_func_start MOD17_021DB880
MOD17_021DB880: ; 0x021DB880
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
bl MOD17_021DB840
cmp r0, #0
bne _021DB89A
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021DB89A:
add r0, r5, #0
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DB858
add r0, r5, #0
add r1, sp, #0xc
add r2, sp, #8
bl MOD17_021DB878
ldr r1, [sp, #0xc]
ldr r2, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
sub r1, r2, r0
ldr r3, [sp, #8]
ldr r0, [sp]
lsr r2, r3, #0x1f
add r2, r3, r2
asr r2, r2, #1
sub r0, r0, r2
str r0, [sp]
ldr r0, _021DB8F4 ; =0x021C48F8
str r1, [sp, #4]
ldrh r2, [r0, #0x1c]
mov r3, #0
sub r1, r2, r1
str r1, [r4]
ldrh r1, [r0, #0x1e]
ldr r0, [sp]
sub r2, r1, r0
str r2, [r6]
ldr r1, [r4]
add r0, r7, #0
bl MOD17_021D7B0C
cmp r0, #0
bne _021DB8EE
add sp, #0x10
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021DB8EE:
mov r0, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DB8F4: .word 0x021C48F8
thumb_func_end MOD17_021DB880
thumb_func_start MOD17_021DB8F8
MOD17_021DB8F8: ; 0x021DB8F8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
bl MOD17_021DB84C
cmp r0, #0
bne _021DB912
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021DB912:
add r0, r5, #0
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DB858
add r0, r5, #0
add r1, sp, #0xc
add r2, sp, #8
bl MOD17_021DB878
ldr r1, [sp, #0xc]
ldr r2, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
sub r1, r2, r0
ldr r3, [sp, #8]
str r1, [sp, #4]
lsr r2, r3, #0x1f
add r2, r3, r2
ldr r0, [sp]
asr r2, r2, #1
sub r0, r0, r2
str r0, [sp]
sub r2, r6, r0
sub r1, r4, r1
add r0, r7, #0
mov r3, #0
bl MOD17_021D7B0C
cmp r0, #0
bne _021DB958
add sp, #0x10
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021DB958:
mov r0, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DB8F8
thumb_func_start MOD17_021DB960
MOD17_021DB960: ; 0x021DB960
ldrb r3, [r0, #8]
str r3, [r1]
ldrb r0, [r0, #9]
str r0, [r2]
bx lr
.align 2, 0
thumb_func_end MOD17_021DB960
thumb_func_start MOD17_021DB96C
MOD17_021DB96C: ; 0x021DB96C
push {r4, r5, r6, r7}
mov ip, r0
add r7, r1, #0
mov r2, #0
_021DB974:
mov r3, #0
add r4, r3, #0
_021DB978:
add r1, r2, r4
lsr r0, r1, #0x1f
lsl r6, r1, #0x1f
sub r6, r6, r0
mov r5, #0x1f
ror r6, r5
add r5, r0, r6
lsl r6, r5, #2
mov r5, #0xf
add r0, r1, r0
lsl r5, r6
asr r1, r0, #1
mov r0, ip
lsl r5, r5, #0x18
ldrsb r0, [r0, r1]
lsr r5, r5, #0x18
tst r0, r5
beq _021DB9A2
add r0, r2, #0
pop {r4, r5, r6, r7}
bx lr
_021DB9A2:
add r3, r3, #1
add r4, r4, r7
cmp r3, #0x50
blt _021DB978
add r2, r2, #1
cmp r2, #0x50
blt _021DB974
mov r0, #0x50
pop {r4, r5, r6, r7}
bx lr
.align 2, 0
thumb_func_end MOD17_021DB96C
thumb_func_start MOD17_021DB9B8
MOD17_021DB9B8: ; 0x021DB9B8
push {r3, r4}
ldr r4, [sp, #8]
sub r4, r2, r4
bmi _021DB9C2
b _021DB9C4
_021DB9C2:
mov r4, #0
_021DB9C4:
strb r4, [r0]
ldr r4, [sp, #8]
add r2, r2, r4
cmp r2, #0xbf
bgt _021DB9D0
b _021DB9D2
_021DB9D0:
mov r2, #0xbf
_021DB9D2:
strb r2, [r0, #1]
sub r2, r1, r3
bmi _021DB9DA
b _021DB9DC
_021DB9DA:
mov r2, #0
_021DB9DC:
add r1, r1, r3
strb r2, [r0, #2]
cmp r1, #0xff
bgt _021DB9EA
strb r1, [r0, #3]
pop {r3, r4}
bx lr
_021DB9EA:
mov r1, #0xff
strb r1, [r0, #3]
pop {r3, r4}
bx lr
.align 2, 0
thumb_func_end MOD17_021DB9B8
thumb_func_start MOD17_021DB9F4
MOD17_021DB9F4: ; 0x021DB9F4
push {r4, r5, r6, lr}
add r6, r1, #0
lsl r4, r6, #4
add r5, r0, #0
add r0, r2, #0
add r1, r4, #0
bl AllocFromHeap
str r0, [r5]
cmp r0, #0
bne _021DBA0E
bl ErrorHandling
_021DBA0E:
ldr r0, [r5]
mov r1, #0
add r2, r4, #0
bl memset
str r6, [r5, #4]
pop {r4, r5, r6, pc}
thumb_func_end MOD17_021DB9F4
thumb_func_start MOD17_021DBA1C
MOD17_021DBA1C: ; 0x021DBA1C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FreeToHeap
mov r0, #0
str r0, [r4]
str r0, [r4, #4]
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DBA1C
thumb_func_start MOD17_021DBA30
MOD17_021DBA30: ; 0x021DBA30
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5]
add r6, r1, #0
add r7, r2, #0
cmp r0, #0
bne _021DBA42
bl ErrorHandling
_021DBA42:
ldr r0, [r5, #4]
cmp r0, #0
bne _021DBA4C
bl ErrorHandling
_021DBA4C:
ldr r2, [r5, #4]
mov r4, #0
cmp r2, #0
ble _021DBA64
ldr r1, [r5]
_021DBA56:
ldr r0, [r1]
cmp r0, #0
beq _021DBA64
add r4, r4, #1
add r1, #0x10
cmp r4, r2
blt _021DBA56
_021DBA64:
cmp r2, r4
bgt _021DBA6C
bl ErrorHandling
_021DBA6C:
ldr r0, [r5]
lsl r1, r4, #4
str r6, [r0, r1]
ldr r0, [r5]
add r0, r0, r1
str r7, [r0, #4]
ldr r0, [r5]
add r0, r0, r1
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DBA30
thumb_func_start MOD17_021DBA80
MOD17_021DBA80: ; 0x021DBA80
mov r2, #0x10
mov r1, #0
_021DBA84:
strb r1, [r0]
add r0, r0, #1
sub r2, r2, #1
bne _021DBA84
bx lr
.align 2, 0
thumb_func_end MOD17_021DBA80
thumb_func_start MOD17_021DBA90
MOD17_021DBA90: ; 0x021DBA90
ldr r2, [r1, #8]
str r2, [r0, #8]
ldr r2, [r1, #8]
str r0, [r2, #0xc]
str r1, [r0, #0xc]
str r0, [r1, #8]
bx lr
.align 2, 0
thumb_func_end MOD17_021DBA90
thumb_func_start MOD17_021DBAA0
MOD17_021DBAA0: ; 0x021DBAA0
ldr r2, [r0, #8]
ldr r1, [r0, #0xc]
str r2, [r1, #8]
ldr r1, [r0, #0xc]
ldr r0, [r0, #8]
str r1, [r0, #0xc]
bx lr
.align 2, 0
thumb_func_end MOD17_021DBAA0
thumb_func_start MOD17_021DBAB0
MOD17_021DBAB0: ; 0x021DBAB0
push {r4, r5, r6, lr}
add r6, r0, #0
ldr r4, [r6, #8]
cmp r4, r6
beq _021DBACE
_021DBABA:
add r0, r4, #0
ldr r5, [r4, #8]
bl MOD17_021DBAA0
add r0, r4, #0
bl MOD17_021DBA80
add r4, r5, #0
cmp r5, r6
bne _021DBABA
_021DBACE:
pop {r4, r5, r6, pc}
thumb_func_end MOD17_021DBAB0
thumb_func_start MOD17_021DBAD0
MOD17_021DBAD0: ; 0x021DBAD0
push {r3, lr}
ldr r2, [r0, #4]
ldr r0, [r0]
cmp r2, #3
bge _021DBAE0
bl MOD17_021D766C
pop {r3, pc}
_021DBAE0:
bl MOD17_021DB7D8
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021DBAD0
thumb_func_start MOD17_021DBAE8
MOD17_021DBAE8: ; 0x021DBAE8
push {r3, lr}
ldr r3, [r0, #4]
ldr r0, [r0]
cmp r3, #3
bge _021DBB06
mov r3, #0
mvn r3, r3
cmp r1, r3
bne _021DBB00
bl MOD17_021D7544
pop {r3, pc}
_021DBB00:
bl MOD17_021D75DC
pop {r3, pc}
_021DBB06:
mov r3, #0
mvn r3, r3
cmp r1, r3
bne _021DBB14
bl MOD17_021DB840
pop {r3, pc}
_021DBB14:
bl MOD17_021DB84C
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021DBAE8
thumb_func_start MOD17_021DBB1C
MOD17_021DBB1C: ; 0x021DBB1C
push {r4, lr}
ldr r4, [r0, #4]
cmp r4, #0
bne _021DBB32
ldr r0, [r0]
ldr r4, [r0]
lsl r4, r4, #2
ldr r3, [r3, r4]
bl MOD17_021D7554
pop {r4, pc}
_021DBB32:
cmp r4, #1
bne _021DBB46
ldr r0, [r0]
ldr r4, [r0]
add r4, #0x64
lsl r4, r4, #2
ldr r3, [r3, r4]
bl MOD17_021D7554
pop {r4, pc}
_021DBB46:
cmp r4, #2
ldr r0, [r0]
bne _021DBB5A
ldr r4, [r0]
add r4, #0x64
lsl r4, r4, #2
ldr r3, [r3, r4]
bl MOD17_021D7554
pop {r4, pc}
_021DBB5A:
mov r4, #0x76
lsl r4, r4, #2
ldr r3, [r3, r4]
bl MOD17_021DB880
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DBB1C
thumb_func_start MOD17_021DBB68
MOD17_021DBB68: ; 0x021DBB68
push {r4, r5, r6, lr}
sub sp, #8
add r5, r1, #0
ldr r1, [r0, #4]
add r4, r2, #0
cmp r1, #3
bge _021DBB88
lsl r1, r5, #0x10
lsl r2, r4, #0x10
ldr r0, [r0]
asr r1, r1, #0x10
asr r2, r2, #0x10
bl MOD17_021D75F4
add sp, #8
pop {r4, r5, r6, pc}
_021DBB88:
ldr r6, [r0]
add r1, sp, #4
add r0, r6, #0
add r2, sp, #0
bl MOD17_021DB878
ldr r1, [sp, #4]
ldr r2, [sp]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r1, r0, #1
lsr r0, r2, #0x1f
add r0, r2, r0
asr r2, r0, #1
str r1, [sp, #4]
str r2, [sp]
add r0, r6, #0
add r1, r5, r1
add r2, r4, r2
bl MOD17_021DB7F4
add sp, #8
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DBB68
thumb_func_start MOD17_021DBBB8
MOD17_021DBBB8: ; 0x021DBBB8
push {r4, r5, r6, lr}
sub sp, #8
ldr r3, [r0, #4]
add r5, r1, #0
add r4, r2, #0
cmp r3, #3
bge _021DBBD0
ldr r0, [r0]
bl MOD17_021D7600
add sp, #8
pop {r4, r5, r6, pc}
_021DBBD0:
ldr r6, [r0]
add r0, r6, #0
bl MOD17_021DB858
add r0, r6, #0
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DB878
ldr r1, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r2, r0, #1
ldr r1, [sp]
str r2, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
str r0, [sp]
ldr r0, [r5]
sub r0, r0, r2
str r0, [r5]
ldr r1, [r4]
ldr r0, [sp]
sub r0, r1, r0
str r0, [r4]
add sp, #8
pop {r4, r5, r6, pc}
thumb_func_end MOD17_021DBBB8
thumb_func_start MOD17_021DBC08
MOD17_021DBC08: ; 0x021DBC08
push {r3, lr}
ldr r3, [r0, #4]
ldr r0, [r0]
cmp r3, #3
bge _021DBC18
bl MOD17_021D7630
pop {r3, pc}
_021DBC18:
bl MOD17_021DB878
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021DBC08
thumb_func_start MOD17_021DBC20
MOD17_021DBC20: ; 0x021DBC20
push {r3, lr}
ldr r3, [r0, #4]
ldr r0, [r0]
cmp r3, #3
bge _021DBC30
bl MOD17_021D7684
pop {r3, pc}
_021DBC30:
bl MOD17_021DB960
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021DBC20
thumb_func_start MOD17_021DBC38
MOD17_021DBC38: ; 0x021DBC38
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
ldr r4, [r5, #8]
add r6, r1, #0
add r7, r2, #0
cmp r4, r5
beq _021DBC6A
_021DBC48:
add r0, r4, #0
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DBBB8
ldr r0, [sp, #4]
add r1, r0, r6
ldr r0, [sp]
str r1, [sp, #4]
add r2, r0, r7
str r2, [sp]
add r0, r4, #0
bl MOD17_021DBB68
ldr r4, [r4, #8]
cmp r4, r5
bne _021DBC48
_021DBC6A:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DBC38
thumb_func_start MOD17_021DBC70
MOD17_021DBC70: ; 0x021DBC70
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r4, r1, #0
add r6, r2, #0
add r5, r0, #0
add r1, sp, #0x14
add r2, sp, #0x10
add r7, r3, #0
bl MOD17_021DBC08
add r0, r5, #0
add r1, sp, #0xc
add r2, sp, #8
bl MOD17_021DBBB8
add r0, r5, #0
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DBC20
ldr r1, [sp, #8]
ldr r0, [sp]
add r0, r1, r0
str r0, [r4]
ldr r1, [sp, #8]
ldr r0, [sp, #0x10]
add r1, r1, r0
ldr r0, [sp]
sub r0, r1, r0
str r0, [r6]
ldr r1, [sp, #0xc]
ldr r0, [sp, #4]
add r0, r1, r0
str r0, [r7]
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x14]
add r1, r1, r0
ldr r0, [sp, #4]
sub r1, r1, r0
ldr r0, [sp, #0x30]
str r1, [r0]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DBC70
thumb_func_start MOD17_021DBCC8
MOD17_021DBCC8: ; 0x021DBCC8
push {r4, r5, r6, lr}
sub sp, #0x10
add r5, r1, #0
add r4, r2, #0
add r6, r0, #0
add r1, sp, #0xc
add r2, sp, #8
bl MOD17_021DBC08
add r0, r6, #0
add r1, sp, #4
add r2, sp, #0
bl MOD17_021DBBB8
ldr r1, [sp, #0xc]
ldr r2, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
add r0, r2, r0
str r0, [r5]
ldr r1, [sp, #8]
ldr r2, [sp]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
add r0, r2, r0
str r0, [r4]
add sp, #0x10
pop {r4, r5, r6, pc}
thumb_func_end MOD17_021DBCC8
thumb_func_start MOD17_021DBD04
MOD17_021DBD04: ; 0x021DBD04
add r2, r0, #0
ldr r0, [r1]
str r0, [r2]
ldr r3, [r1, #0x14]
asr r0, r3, #2
lsr r0, r0, #0x1d
add r0, r3, r0
asr r0, r0, #3
str r0, [r2, #0xc]
ldr r3, [r1, #0x18]
asr r0, r3, #2
lsr r0, r0, #0x1d
add r0, r3, r0
asr r0, r0, #3
str r0, [r2, #0x10]
ldr r0, [r1, #0x1c]
ldr r3, _021DBD48 ; =MOD17_021DBEE8
str r0, [r2, #0x1c]
ldr r0, [r1, #0x24]
str r0, [r2, #0x20]
ldr r0, [r1, #0x20]
str r0, [r2, #0x24]
ldr r0, [r1, #0x28]
str r0, [r2, #0x28]
ldr r0, [r1, #4]
str r0, [r2, #4]
ldr r0, [r1, #0x10]
str r0, [r2, #8]
add r0, r1, #0
add r1, r2, #0
add r1, #0x14
add r2, #0x18
bx r3
nop
_021DBD48: .word MOD17_021DBEE8
thumb_func_end MOD17_021DBD04
thumb_func_start MOD17_021DBD4C
MOD17_021DBD4C: ; 0x021DBD4C
push {r4, lr}
add r4, r0, #0
ldr r1, [r4, #0x1c]
ldr r0, [r4]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl FUN_02018744
add r0, r4, #0
mov r1, #0
mov r2, #0x2c
bl memset
pop {r4, pc}
thumb_func_end MOD17_021DBD4C
thumb_func_start MOD17_021DBD68
MOD17_021DBD68: ; 0x021DBD68
ldr r2, [r1]
str r2, [r0]
ldr r2, [r1, #4]
str r2, [r0, #4]
ldr r2, [r1, #8]
str r2, [r0, #8]
mov r2, #0
str r2, [r0, #0xc]
str r2, [r0, #0x10]
ldr r1, [r1, #0xc]
str r1, [r0, #0x14]
bx lr
thumb_func_end MOD17_021DBD68
thumb_func_start MOD17_021DBD80
MOD17_021DBD80: ; 0x021DBD80
push {r3, r4, r5, lr}
sub sp, #0x18
add r5, r0, #0
ldr r0, [r5, #0xc]
add r1, r0, r1
str r1, [r5, #0xc]
ldr r0, [r5, #8]
cmp r1, r0
ble _021DBDE4
mov r2, #0
str r2, [r5, #0xc]
ldr r0, [r5, #0x10]
cmp r0, #0
bne _021DBDA4
ldr r1, [r5, #4]
mov r0, #1
str r0, [r5, #0x10]
b _021DBDAA
_021DBDA4:
ldr r0, [r5]
ldr r1, [r0, #8]
str r2, [r5, #0x10]
_021DBDAA:
ldr r0, [r5, #0x14]
mov r2, #0
str r0, [sp]
ldr r0, [r5]
add r3, sp, #0x14
ldr r0, [r0, #4]
bl FUN_02006BDC
ldr r3, [r5]
add r4, r0, #0
ldr r0, [r3, #0x18]
str r0, [sp]
ldr r0, [r3, #0xc]
str r0, [sp, #4]
ldr r0, [r3, #0x10]
str r0, [sp, #8]
ldr r0, [r3, #0x28]
str r0, [sp, #0xc]
ldr r0, [r3, #0x20]
str r0, [sp, #0x10]
ldr r0, [r3]
ldr r1, [r3, #0x1c]
ldr r2, [sp, #0x14]
ldr r3, [r3, #0x14]
bl MOD17_021DC004
add r0, r4, #0
bl FreeToHeap
_021DBDE4:
add sp, #0x18
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DBD80
thumb_func_start MOD17_021DBDE8
MOD17_021DBDE8: ; 0x021DBDE8
push {r3, r4, r5, lr}
sub sp, #0x18
add r5, r0, #0
ldr r1, [r5]
ldr r0, [r5, #0x14]
mov r2, #0
str r0, [sp]
ldr r0, [r1, #4]
ldr r1, [r1, #8]
add r3, sp, #0x14
bl FUN_02006BDC
ldr r3, [r5]
add r4, r0, #0
ldr r0, [r3, #0x18]
str r0, [sp]
ldr r0, [r3, #0xc]
str r0, [sp, #4]
ldr r0, [r3, #0x10]
str r0, [sp, #8]
ldr r0, [r3, #0x28]
str r0, [sp, #0xc]
ldr r0, [r3, #0x20]
str r0, [sp, #0x10]
ldr r0, [r3]
ldr r1, [r3, #0x1c]
ldr r2, [sp, #0x14]
ldr r3, [r3, #0x14]
bl MOD17_021DC004
add r0, r4, #0
bl FreeToHeap
mov r1, #0x18
mov r0, #0
_021DBE2E:
strb r0, [r5]
add r5, r5, #1
sub r1, r1, #1
bne _021DBE2E
add sp, #0x18
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DBDE8
thumb_func_start MOD17_021DBE3C
MOD17_021DBE3C: ; 0x021DBE3C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r6, r0, #0
add r5, r1, #0
str r2, [sp]
str r3, [sp, #4]
ldr r0, _021DBEC4 ; =MOD17_021DBF94
mov r1, #0x4c
mov r2, #0
mov r3, #0xd
bl FUN_020061E8
bl FUN_0201B6C8
add r4, r0, #0
str r6, [r4]
add r7, r5, #0
add r3, r4, #4
mov r2, #6
_021DBE62:
ldmia r7!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021DBE62
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x20]
str r0, [r4, #0x34]
ldr r0, [sp]
str r1, [r4, #0x38]
bl _s32_div_f
str r0, [r4, #0x3c]
ldr r0, [sp, #4]
ldr r1, [sp, #0x20]
bl _s32_div_f
str r0, [r4, #0x40]
ldr r0, [r6]
ldr r1, [r6, #0x1c]
bl FUN_02017B48
str r0, [r4, #0x44]
ldr r0, [r6]
ldr r1, [r6, #0x1c]
bl FUN_02017B54
str r0, [r4, #0x48]
mov r0, #0x80
str r0, [r5, #0x28]
mov r0, #5
str r0, [r5, #0x24]
ldr r1, [r5, #0x14]
ldr r0, [sp]
sub r0, r1, r0
str r0, [r5, #0x14]
ldr r1, [r5, #0x18]
ldr r0, [sp, #4]
sub r0, r1, r0
str r0, [r5, #0x18]
mov r0, #0xe
mov r1, #0
str r0, [r5, #0x2c]
add r0, r5, #0
add r2, r1, #0
bl MOD17_021DBEE8
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
_021DBEC4: .word MOD17_021DBF94
thumb_func_end MOD17_021DBE3C
thumb_func_start MOD17_021DBEC8
MOD17_021DBEC8: ; 0x021DBEC8
push {r3, r4}
ldr r2, [r0, #8]
add r0, #0xc
lsr r4, r2, #1
mov r3, #0
cmp r4, #0
ble _021DBEE4
_021DBED6:
ldrh r2, [r0]
add r3, r3, #1
add r2, r2, r1
strh r2, [r0]
add r0, r0, #2
cmp r3, r4
blt _021DBED6
_021DBEE4:
pop {r3, r4}
bx lr
thumb_func_end MOD17_021DBEC8
thumb_func_start MOD17_021DBEE8
MOD17_021DBEE8: ; 0x021DBEE8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r5, r0, #0
add r4, r1, #0
ldr r1, [r5, #0x14]
add r6, r2, #0
asr r0, r1, #2
lsr r0, r0, #0x1d
add r0, r1, r0
asr r0, r0, #3
ldr r1, [r5, #0x18]
str r0, [sp, #0x18]
asr r0, r1, #2
lsr r0, r0, #0x1d
add r0, r1, r0
asr r0, r0, #3
str r0, [sp, #0x14]
ldr r0, [r5, #0x28]
str r0, [sp]
ldr r0, [r5, #0x2c]
str r0, [sp, #4]
ldr r0, [r5, #4]
ldr r1, [r5, #8]
ldr r2, [r5]
ldr r3, [r5, #0x1c]
bl MOD17_021DC084
ldr r0, [r5, #0x1c]
cmp r0, #4
bge _021DBF28
mov r2, #0
b _021DBF2A
_021DBF28:
mov r2, #4
_021DBF2A:
ldr r0, [r5, #0x20]
lsl r0, r0, #5
str r0, [sp]
ldr r0, [r5, #0x2c]
str r0, [sp, #4]
ldr r3, [r5, #0x24]
ldr r0, [r5, #4]
ldr r1, [r5, #0xc]
lsl r3, r3, #5
bl MOD17_021DC0D4
ldr r0, [r5, #0x2c]
mov r2, #0
str r0, [sp]
ldr r0, [r5, #4]
ldr r1, [r5, #0x10]
add r3, sp, #0x24
bl FUN_02006BDC
ldr r2, [sp, #0x24]
str r0, [sp, #0x20]
ldrh r0, [r2]
lsr r7, r0, #3
ldrh r0, [r2, #2]
add r3, r7, #0
lsr r0, r0, #3
str r0, [sp, #0x1c]
str r0, [sp]
ldr r0, [sp, #0x18]
str r0, [sp, #4]
ldr r0, [sp, #0x14]
str r0, [sp, #8]
ldr r0, [r5, #0x28]
str r0, [sp, #0xc]
ldr r0, [r5, #0x24]
str r0, [sp, #0x10]
ldr r0, [r5]
ldr r1, [r5, #0x1c]
bl MOD17_021DC004
ldr r0, [sp, #0x20]
bl FreeToHeap
cmp r4, #0
beq _021DBF86
str r7, [r4]
_021DBF86:
cmp r6, #0
beq _021DBF8E
ldr r0, [sp, #0x1c]
str r0, [r6]
_021DBF8E:
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DBEE8
thumb_func_start MOD17_021DBF94
MOD17_021DBF94: ; 0x021DBF94
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4, #0x38]
sub r0, r0, #1
str r0, [r4, #0x38]
ldr r1, [r4]
bmi _021DBFC8
ldr r0, [r1]
ldr r1, [r1, #0x1c]
ldr r3, [r4, #0x3c]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #2
bl FUN_0201AEE4
ldr r1, [r4]
ldr r3, [r4, #0x40]
ldr r0, [r1]
ldr r1, [r1, #0x1c]
mov r2, #5
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl FUN_0201AEE4
pop {r3, r4, r5, pc}
_021DBFC8:
ldr r0, [r1]
ldr r1, [r1, #0x1c]
ldr r3, [r4, #0x44]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #0
bl FUN_0201AEE4
ldr r1, [r4]
ldr r3, [r4, #0x48]
ldr r0, [r1]
ldr r1, [r1, #0x1c]
mov r2, #3
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl FUN_0201AEE4
ldr r0, [r4]
add r1, r4, #4
bl MOD17_021DBD04
ldr r1, [r4, #0x34]
cmp r1, #0
beq _021DBFFC
mov r0, #1
str r0, [r1]
_021DBFFC:
add r0, r5, #0
bl FUN_0200621C
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DBF94
thumb_func_start MOD17_021DC004
MOD17_021DC004: ; 0x021DC004
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r5, r1, #0
add r4, r2, #0
add r7, r0, #0
ldr r1, [sp, #0x3c]
add r0, r4, #0
add r6, r3, #0
bl MOD17_021DBEC8
ldr r1, [sp, #0x30]
lsl r0, r6, #0x18
lsr r0, r0, #0x18
lsl r1, r1, #0x18
lsr r2, r1, #0x18
str r0, [sp]
ldr r3, [sp, #0x38]
str r2, [sp, #4]
add r4, #0xc
lsl r3, r3, #0x18
str r4, [sp, #8]
mov r1, #0
str r1, [sp, #0xc]
str r1, [sp, #0x10]
str r0, [sp, #0x14]
str r2, [sp, #0x18]
ldr r2, [sp, #0x34]
lsl r1, r5, #0x18
lsl r2, r2, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl FUN_02018170
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
ldr r0, [sp, #0x30]
ldr r2, [sp, #0x34]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [sp, #0x40]
ldr r3, [sp, #0x38]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r1, r5, #0x18
lsl r2, r2, #0x18
lsl r3, r3, #0x18
str r0, [sp, #8]
add r0, r7, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl FUN_020186B4
lsl r1, r5, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
bl FUN_0201AC68
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DC004
thumb_func_start MOD17_021DC084
MOD17_021DC084: ; 0x021DC084
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r0, #0
str r1, [sp, #4]
ldr r0, [sp, #0x24]
mov r1, #0x14
add r5, r2, #0
add r6, r3, #0
bl AllocFromHeap
add r4, r0, #0
add r2, r4, #0
mov r1, #0x14
mov r0, #0
_021DC0A0:
strb r0, [r2]
add r2, r2, #1
sub r1, r1, #1
bne _021DC0A0
ldr r0, [sp, #0x24]
ldr r1, [sp, #4]
str r0, [sp]
add r0, r7, #0
mov r2, #0
add r3, r4, #4
bl FUN_02006BB0
str r0, [r4, #8]
str r5, [r4]
ldr r0, [sp, #0x20]
str r6, [r4, #0xc]
str r0, [r4, #0x10]
ldr r0, _021DC0D0 ; =MOD17_021DC11C
add r1, r4, #0
mov r2, #0x80
bl FUN_0200CA98
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DC0D0: .word MOD17_021DC11C
thumb_func_end MOD17_021DC084
thumb_func_start MOD17_021DC0D4
MOD17_021DC0D4: ; 0x021DC0D4
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
str r1, [sp]
ldr r0, [sp, #0x1c]
mov r1, #0x14
add r5, r2, #0
add r6, r3, #0
bl AllocFromHeap
add r4, r0, #0
add r2, r4, #0
mov r1, #0x14
mov r0, #0
_021DC0EE:
strb r0, [r2]
add r2, r2, #1
sub r1, r1, #1
bne _021DC0EE
ldr r1, [sp]
ldr r3, [sp, #0x1c]
add r0, r7, #0
add r2, r4, #0
bl FUN_02006C08
str r0, [r4, #4]
str r5, [r4, #8]
ldr r0, [sp, #0x18]
str r6, [r4, #0xc]
str r0, [r4, #0x10]
ldr r0, _021DC118 ; =MOD17_021DC158
add r1, r4, #0
mov r2, #0x80
bl FUN_0200CA98
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DC118: .word MOD17_021DC158
thumb_func_end MOD17_021DC0D4
thumb_func_start MOD17_021DC11C
MOD17_021DC11C: ; 0x021DC11C
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r1, [r4, #4]
add r5, r0, #0
ldr r0, [r1, #0x14]
ldr r1, [r1, #0x10]
bl DC_FlushRange
ldr r3, [r4, #4]
ldr r0, [r4, #0x10]
str r0, [sp]
ldr r1, [r4, #0xc]
ldr r2, [r3, #0x14]
lsl r1, r1, #0x18
ldr r0, [r4]
ldr r3, [r3, #0x10]
lsr r1, r1, #0x18
bl FUN_02017E14
add r0, r5, #0
bl FUN_0200CAB4
ldr r0, [r4, #8]
bl FreeToHeap
add r0, r4, #0
bl FreeToHeap
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DC11C
thumb_func_start MOD17_021DC158
MOD17_021DC158: ; 0x021DC158
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4]
ldr r1, [r4, #0x10]
ldr r0, [r0, #0xc]
bl DC_FlushRange
ldr r0, [r4, #8]
cmp r0, #0
bne _021DC17C
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r0, [r0, #0xc]
ldr r2, [r4, #0x10]
bl GX_LoadBGPltt
b _021DC18C
_021DC17C:
cmp r0, #4
bne _021DC18C
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r0, [r0, #0xc]
ldr r2, [r4, #0x10]
bl GXS_LoadBGPltt
_021DC18C:
add r0, r5, #0
bl FUN_0200CAB4
ldr r0, [r4, #4]
bl FreeToHeap
add r0, r4, #0
bl FreeToHeap
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DC158
thumb_func_start MOD17_021DC1A0
MOD17_021DC1A0: ; 0x021DC1A0
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
cmp r5, #0
bne _021DC1AE
bl ErrorHandling
_021DC1AE:
cmp r4, #0
bne _021DC1B6
bl ErrorHandling
_021DC1B6:
ldr r0, [r4]
bl FUN_0201FE94
str r0, [r5]
cmp r0, #0
bne _021DC1C6
bl ErrorHandling
_021DC1C6:
ldr r0, [r4, #0xc]
str r0, [r5, #4]
ldr r0, [r4, #8]
str r0, [r5, #8]
ldr r0, [r4, #4]
cmp r0, #0
beq _021DC1D8
str r0, [r5, #0xc]
pop {r3, r4, r5, pc}
_021DC1D8:
ldr r0, _021DC1E0 ; =MOD17_021DC2DC
str r0, [r5, #0xc]
pop {r3, r4, r5, pc}
nop
_021DC1E0: .word MOD17_021DC2DC
thumb_func_end MOD17_021DC1A0
thumb_func_start MOD17_021DC1E4
MOD17_021DC1E4: ; 0x021DC1E4
push {r3, r4, r5, lr}
sub sp, #0x30
add r4, r1, #0
add r5, r0, #0
bl MOD17_021DC1A0
ldr r0, [r4, #0x14]
str r0, [sp]
ldr r0, [r4, #0x10]
str r0, [sp, #4]
ldr r0, [r4]
ldr r0, [r0]
str r0, [sp, #8]
ldr r0, [r4, #0x18]
str r0, [sp, #0xc]
ldr r0, [r5]
str r0, [sp, #0x10]
ldr r0, [r4, #0x24]
str r0, [sp, #0x14]
ldr r0, [r4, #0x1c]
str r0, [sp, #0x18]
ldr r0, [r4, #0x20]
str r0, [sp, #0x1c]
mov r0, #0
str r0, [sp, #0x20]
str r0, [sp, #0x24]
ldr r0, [r4]
ldr r0, [r0, #0x28]
str r0, [sp, #0x28]
ldr r0, [r4]
ldr r0, [r0, #0x2c]
str r0, [sp, #0x2c]
add r0, sp, #0
bl FUN_020117E8
str r0, [r5, #0x10]
add sp, #0x30
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DC1E4
thumb_func_start MOD17_021DC230
MOD17_021DC230: ; 0x021DC230
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FUN_0201FFC8
mov r1, #0x10
mov r0, #0
_021DC23E:
strb r0, [r4]
add r4, r4, #1
sub r1, r1, #1
bne _021DC23E
pop {r4, pc}
thumb_func_end MOD17_021DC230
thumb_func_start MOD17_021DC248
MOD17_021DC248: ; 0x021DC248
push {r4, lr}
add r4, r0, #0
bl MOD17_021DC230
ldr r0, [r4, #0x10]
bl FUN_02011870
add r0, r4, #0
mov r1, #0
mov r2, #0x20
bl memset
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DC248
thumb_func_start MOD17_021DC264
MOD17_021DC264: ; 0x021DC264
push {r3, lr}
ldr r2, [r0, #4]
cmp r1, r2
bne _021DC272
ldr r1, [r0, #8]
ldr r2, [r0, #0xc]
blx r2
_021DC272:
pop {r3, pc}
thumb_func_end MOD17_021DC264
thumb_func_start MOD17_021DC274
MOD17_021DC274: ; 0x021DC274
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r7, r1, #0
add r6, r2, #0
mov r4, #2
add r5, #0x20
_021DC280:
cmp r4, r7
beq _021DC28C
add r0, r5, #0
bl MOD17_021DC2EC
b _021DC2B0
_021DC28C:
cmp r6, #0
bne _021DC29E
add r0, r5, #0
bl MOD17_021DC2F8
ldr r0, _021DC2BC ; =0x0000067D
bl FUN_020054C8
b _021DC2B0
_021DC29E:
cmp r6, #2
bne _021DC2AA
add r0, r5, #0
bl MOD17_021DC2E0
b _021DC2B0
_021DC2AA:
add r0, r5, #0
bl MOD17_021DC2F8
_021DC2B0:
add r4, r4, #1
add r5, #0x10
cmp r4, #3
ble _021DC280
pop {r3, r4, r5, r6, r7, pc}
nop
_021DC2BC: .word 0x0000067D
thumb_func_end MOD17_021DC274
thumb_func_start MOD17_021DC2C0
MOD17_021DC2C0: ; 0x021DC2C0
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
cmp r5, #0
bne _021DC2D2
bl ErrorHandling
_021DC2D2:
str r7, [r5, #4]
str r6, [r5, #8]
str r4, [r5, #0xc]
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DC2C0
thumb_func_start MOD17_021DC2DC
MOD17_021DC2DC: ; 0x021DC2DC
bx lr
.align 2, 0
thumb_func_end MOD17_021DC2DC
thumb_func_start MOD17_021DC2E0
MOD17_021DC2E0: ; 0x021DC2E0
ldr r3, _021DC2E8 ; =FUN_02020208
ldr r0, [r0]
mov r1, #2
bx r3
.align 2, 0
_021DC2E8: .word FUN_02020208
thumb_func_end MOD17_021DC2E0
thumb_func_start MOD17_021DC2EC
MOD17_021DC2EC: ; 0x021DC2EC
ldr r3, _021DC2F4 ; =FUN_02020208
ldr r0, [r0]
mov r1, #0
bx r3
.align 2, 0
_021DC2F4: .word FUN_02020208
thumb_func_end MOD17_021DC2EC
thumb_func_start MOD17_021DC2F8
MOD17_021DC2F8: ; 0x021DC2F8
ldr r3, _021DC300 ; =FUN_02020208
ldr r0, [r0]
mov r1, #1
bx r3
.align 2, 0
_021DC300: .word FUN_02020208
thumb_func_end MOD17_021DC2F8
thumb_func_start MOD17_021DC304
MOD17_021DC304: ; 0x021DC304
push {r3, r4, r5, r6, lr}
sub sp, #0x14
add r5, r0, #0
add r4, r1, #0
mov r0, #1
mov r1, #0xd
bl FUN_02011744
str r0, [r5, #0x64]
add r0, r4, #0
bl MOD17_021DC760
mov r0, #0x90
str r0, [sp]
mov r0, #0x28
str r0, [sp, #4]
mov r0, #0x20
str r0, [sp, #8]
add r0, r5, #0
mov r1, #0
add r2, r4, #0
mov r3, #0x30
bl MOD17_021DC628
mov r0, #0x28
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x6c
mov r1, #0
mov r2, #0x30
mov r3, #0x98
bl MOD17_021DC748
mov r0, #0x90
str r0, [sp]
mov r0, #0x28
str r0, [sp, #4]
mov r0, #0x20
str r0, [sp, #8]
add r0, r5, #0
add r0, #0x10
mov r1, #1
add r2, r4, #0
mov r3, #8
bl MOD17_021DC628
mov r0, #0x28
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x6c
mov r1, #1
mov r2, #8
mov r3, #0x98
bl MOD17_021DC748
mov r0, #0x90
str r0, [sp]
mov r0, #0x2a
str r0, [sp, #4]
str r0, [sp, #8]
add r0, r5, #0
add r0, #0x20
mov r1, #2
add r2, r4, #0
mov r3, #0x60
bl MOD17_021DC628
mov r0, #0x2a
str r0, [sp]
mov r0, #0x22
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x6c
mov r1, #2
mov r2, #0x60
mov r3, #0x9c
bl MOD17_021DC748
mov r0, #0x90
str r0, [sp]
mov r0, #0x2a
str r0, [sp, #4]
str r0, [sp, #8]
add r0, r5, #0
add r0, #0x30
mov r1, #3
add r2, r4, #0
mov r3, #0x88
bl MOD17_021DC628
mov r0, #0x2a
str r0, [sp]
mov r0, #0x22
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x6c
mov r1, #3
mov r2, #0x88
mov r3, #0x9c
bl MOD17_021DC748
mov r0, #2
mov r1, #0xe
bl FUN_02002C50
mov r0, #9
str r0, [sp]
mov r0, #5
str r0, [sp, #4]
ldr r2, _021DC460 ; =0x00000151
add r0, r4, #0
mov r1, #0x1a
mov r3, #0
bl MOD17_021DC880
add r6, r0, #0
str r6, [sp]
mov r0, #0xb8
str r0, [sp, #4]
mov r0, #0x90
str r0, [sp, #8]
mov r0, #0x48
str r0, [sp, #0xc]
mov r0, #0x2a
str r0, [sp, #0x10]
add r0, r5, #0
ldr r3, [r5, #0x64]
add r0, #0x40
mov r1, #4
add r2, r4, #0
bl MOD17_021DC698
mov r0, #0x48
str r0, [sp]
mov r0, #0x22
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x6c
mov r1, #4
mov r2, #0xb8
mov r3, #0x9c
bl MOD17_021DC748
add r0, r6, #0
bl MOD17_021DC8F8
mov r0, #2
bl FUN_02002CF8
mov r0, #1
str r0, [r5, #0x60]
add r0, r4, #0
bl MOD17_021DC7E0
add r0, r5, #0
add r0, #0x20
bl MOD17_021DC2E0
mov r0, #0xd
str r0, [sp]
add r0, r5, #0
ldr r2, _021DC464 ; =MOD17_021DC570
add r0, #0x6c
mov r1, #5
add r3, r5, #0
bl FUN_020220C4
str r0, [r5, #0x68]
add sp, #0x14
pop {r3, r4, r5, r6, pc}
.align 2, 0
_021DC460: .word 0x00000151
_021DC464: .word MOD17_021DC570
thumb_func_end MOD17_021DC304
thumb_func_start MOD17_021DC468
MOD17_021DC468: ; 0x021DC468
push {r4, r5, r6, lr}
add r6, r0, #0
add r5, r1, #0
mov r4, #0
_021DC470:
add r0, r5, #0
add r1, r4, #0
bl MOD17_021D79D8
add r0, r5, #0
add r1, r4, #0
bl MOD17_021D79EC
add r0, r4, #0
bl FUN_0201D324
add r4, r4, #1
cmp r4, #5
blt _021DC470
mov r0, #0
bl FUN_0201E1C8
mov r0, #1
bl FUN_0201E1C8
mov r5, #0
add r4, r6, #0
_021DC49C:
add r0, r4, #0
bl MOD17_021DC230
add r5, r5, #1
add r4, #0x10
cmp r5, #4
blt _021DC49C
add r0, r6, #0
add r0, #0x54
bl FUN_0201D5E8
add r0, r6, #0
add r0, #0x40
bl MOD17_021DC248
ldr r0, [r6, #0x64]
bl FUN_020117BC
ldr r0, [r6, #0x68]
bl FUN_0202212C
mov r0, #0
str r0, [r6, #0x68]
pop {r4, r5, r6, pc}
thumb_func_end MOD17_021DC468
thumb_func_start MOD17_021DC4CC
MOD17_021DC4CC: ; 0x021DC4CC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x68]
cmp r0, #0
bne _021DC4DA
bl ErrorHandling
_021DC4DA:
ldr r0, [r4, #0x68]
bl FUN_02022144
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DC4CC
thumb_func_start MOD17_021DC4E4
MOD17_021DC4E4: ; 0x021DC4E4
push {r4, lr}
add r4, r0, #0
add r0, #0x40
mov r1, #3
bl MOD17_021DC808
add r0, r4, #0
add r0, #0x40
mov r1, #3
bl MOD17_021DC82C
add r0, r4, #0
mov r1, #2
mov r2, #3
bl MOD17_021DC274
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DC4E4
thumb_func_start MOD17_021DC508
MOD17_021DC508: ; 0x021DC508
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
add r6, r1, #0
add r7, r2, #0
mov r4, #0
add r5, r0, #0
_021DC514:
add r0, r5, #0
add r1, r6, #0
add r2, r7, #0
bl MOD17_021DC904
add r4, r4, #1
add r5, #0x10
cmp r4, #4
blt _021DC514
ldr r0, [sp]
add r1, r6, #0
add r0, #0x40
add r2, r7, #0
str r0, [sp]
bl MOD17_021DC940
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DC508
thumb_func_start MOD17_021DC538
MOD17_021DC538: ; 0x021DC538
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
cmp r5, #0
bne _021DC54A
bl ErrorHandling
_021DC54A:
cmp r4, #4
bge _021DC55E
lsl r0, r4, #4
ldr r3, [sp, #0x18]
add r0, r5, r0
add r1, r6, #0
add r2, r7, #0
bl MOD17_021DC2C0
pop {r3, r4, r5, r6, r7, pc}
_021DC55E:
add r5, #0x40
ldr r3, [sp, #0x18]
add r0, r5, #0
add r1, r6, #0
add r2, r7, #0
bl MOD17_021DC2C0
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DC538
thumb_func_start MOD17_021DC570
MOD17_021DC570: ; 0x021DC570
push {r4, r5, r6, lr}
add r6, r0, #0
add r5, r1, #0
add r4, r2, #0
cmp r6, #4
bhi _021DC618
add r0, r6, r6
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021DC588: ; jump table
.short _021DC592 - _021DC588 - 2 ; case 0
.short _021DC5AE - _021DC588 - 2 ; case 1
.short _021DC5D0 - _021DC588 - 2 ; case 2
.short _021DC5D0 - _021DC588 - 2 ; case 3
.short _021DC5E6 - _021DC588 - 2 ; case 4
_021DC592:
add r0, r4, #0
bl MOD17_021DC808
ldr r1, _021DC620 ; =0x00000681
add r0, r4, #0
mov r2, #0
add r3, r5, #0
bl MOD17_021DC870
add r0, r4, #0
add r1, r5, #0
bl MOD17_021DC264
pop {r4, r5, r6, pc}
_021DC5AE:
add r0, r4, #0
add r0, #0x10
bl MOD17_021DC808
add r0, r4, #0
ldr r1, _021DC620 ; =0x00000681
add r0, #0x10
mov r2, #0
add r3, r5, #0
bl MOD17_021DC870
add r4, #0x10
add r0, r4, #0
add r1, r5, #0
bl MOD17_021DC264
pop {r4, r5, r6, pc}
_021DC5D0:
add r0, r4, #0
add r1, r6, #0
add r2, r5, #0
bl MOD17_021DC274
lsl r0, r6, #4
add r0, r4, r0
add r1, r5, #0
bl MOD17_021DC264
pop {r4, r5, r6, pc}
_021DC5E6:
ldr r0, [r4, #0x60]
cmp r0, #1
bne _021DC61C
add r0, r4, #0
add r0, #0x40
bl MOD17_021DC808
add r0, r4, #0
add r0, #0x40
add r1, r5, #0
bl MOD17_021DC82C
add r0, r4, #0
ldr r1, _021DC624 ; =0x000005E2
add r0, #0x40
mov r2, #0
add r3, r5, #0
bl MOD17_021DC870
add r4, #0x40
add r0, r4, #0
add r1, r5, #0
bl MOD17_021DC264
pop {r4, r5, r6, pc}
_021DC618:
bl ErrorHandling
_021DC61C:
pop {r4, r5, r6, pc}
nop
_021DC620: .word 0x00000681
_021DC624: .word 0x000005E2
thumb_func_end MOD17_021DC570
thumb_func_start MOD17_021DC628
MOD17_021DC628: ; 0x021DC628
push {r4, r5, r6, lr}
sub sp, #0x90
add r6, r0, #0
mov r0, #0
str r1, [sp]
mvn r0, r0
str r0, [sp, #4]
add r5, r2, #0
str r0, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
str r2, [sp, #0x10]
ldr r0, [r5, #0x40]
add r4, r3, #0
str r0, [sp, #0x14]
ldr r0, [r5, #0x44]
add r3, r1, #0
str r0, [sp, #0x18]
ldr r0, [r5, #0x48]
str r0, [sp, #0x1c]
ldr r0, [r5, #0x4c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x5c
bl FUN_02008AA4
ldr r0, [r5, #0x3c]
mov r2, #0
mov r1, #1
str r0, [sp, #0x2c]
add r0, sp, #0x5c
str r0, [sp, #0x30]
lsl r0, r4, #0xc
str r0, [sp, #0x34]
ldr r0, [sp, #0xa0]
str r1, [sp, #0x54]
lsl r0, r0, #0xc
str r0, [sp, #0x38]
mov r0, #2
str r0, [sp, #0x50]
mov r0, #0xe
str r0, [sp, #0x58]
add r0, sp, #0x2c
str r0, [sp, #0x80]
str r1, [sp, #0x8c]
add r0, r6, #0
add r1, sp, #0x80
str r2, [sp, #0x3c]
str r2, [sp, #0x84]
str r2, [sp, #0x88]
bl MOD17_021DC1A0
add sp, #0x90
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DC628
thumb_func_start MOD17_021DC698
MOD17_021DC698: ; 0x021DC698
push {r4, r5, r6, lr}
sub sp, #0xa8
add r5, r0, #0
mov r0, #0
str r1, [sp]
mvn r0, r0
str r0, [sp, #4]
add r4, r2, #0
str r0, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
str r2, [sp, #0x10]
ldr r0, [r4, #0x40]
add r6, r3, #0
str r0, [sp, #0x14]
ldr r0, [r4, #0x44]
add r3, r1, #0
str r0, [sp, #0x18]
ldr r0, [r4, #0x48]
str r0, [sp, #0x1c]
ldr r0, [r4, #0x4c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x5c
bl FUN_02008AA4
ldr r0, [r4, #0x3c]
mov r1, #2
str r0, [sp, #0x2c]
add r0, sp, #0x5c
str r0, [sp, #0x30]
ldr r0, [sp, #0xbc]
mov r2, #0xe
lsl r0, r0, #0xc
str r0, [sp, #0x34]
ldr r0, [sp, #0xc0]
str r1, [sp, #0x50]
mov r1, #1
lsl r0, r0, #0xc
str r0, [sp, #0x38]
mov r0, #0
str r2, [sp, #0x58]
add r2, sp, #0x2c
str r0, [sp, #0x3c]
str r0, [sp, #0x84]
str r0, [sp, #0x88]
ldr r0, [sp, #0xb8]
str r1, [sp, #0x54]
str r0, [sp, #0x90]
mov r0, #0x10
str r0, [sp, #0x9c]
mov r0, #0x13
str r2, [sp, #0x80]
str r1, [sp, #0x8c]
str r6, [sp, #0x94]
str r0, [sp, #0xa0]
ldr r0, [r4, #0x44]
bl FUN_020094F0
mov r1, #0
bl FUN_02009E54
str r0, [sp, #0x98]
ldr r0, [sp, #0xb8]
mov r1, #1
mov r2, #0xd
bl FUN_02011898
mov r1, #1
add r3, r5, #0
add r2, r1, #0
add r3, #0x14
bl FUN_0201D568
cmp r0, #0
bne _021DC736
bl ErrorHandling
_021DC736:
ldr r0, [r5, #0x18]
add r1, sp, #0x80
str r0, [sp, #0xa4]
add r0, r5, #0
bl MOD17_021DC1E4
add sp, #0xa8
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DC698
thumb_func_start MOD17_021DC748
MOD17_021DC748: ; 0x021DC748
lsl r1, r1, #2
strb r3, [r0, r1]
add r1, r0, r1
ldr r0, [sp, #4]
strb r2, [r1, #2]
add r0, r3, r0
strb r0, [r1, #1]
ldr r0, [sp]
add r0, r2, r0
strb r0, [r1, #3]
bx lr
.align 2, 0
thumb_func_end MOD17_021DC748
thumb_func_start MOD17_021DC760
MOD17_021DC760: ; 0x021DC760
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
mov r0, #0x6b
mov r4, #0
str r0, [sp, #0xc]
mov r7, #0x6a
mov r6, #0x69
_021DC770:
mov r0, #1
str r0, [sp]
ldr r2, [sp, #0xc]
add r0, r5, #0
mov r1, #0x19
mov r3, #0
str r4, [sp, #4]
bl MOD17_021D7934
add r0, r5, #0
mov r1, #0x19
add r2, r7, #0
mov r3, #0
str r4, [sp]
bl MOD17_021D7978
add r0, r5, #0
mov r1, #0x19
add r2, r6, #0
mov r3, #0
str r4, [sp]
bl MOD17_021D7994
ldr r0, [sp, #0xc]
add r4, r4, #1
add r0, r0, #3
str r0, [sp, #0xc]
add r7, r7, #3
add r6, r6, #3
cmp r4, #5
blt _021DC770
mov r0, #1
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
mov r3, #0
add r0, r5, #0
mov r1, #0x19
mov r2, #0x68
str r3, [sp, #8]
bl MOD17_021D7954
mov r1, #1
str r1, [sp]
mov r0, #2
str r0, [sp, #4]
str r1, [sp, #8]
add r0, r5, #0
mov r1, #0x19
mov r2, #0x78
mov r3, #0
bl MOD17_021D7954
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DC760
thumb_func_start MOD17_021DC7E0
MOD17_021DC7E0: ; 0x021DC7E0
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
_021DC7E6:
add r0, r5, #0
add r1, r4, #0
bl MOD17_021D79B0
add r4, r4, #1
cmp r4, #5
blt _021DC7E6
add r0, r5, #0
mov r1, #0
bl MOD17_021D79C4
add r0, r5, #0
mov r1, #1
bl MOD17_021D79C4
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DC7E0
thumb_func_start MOD17_021DC808
MOD17_021DC808: ; 0x021DC808
push {r3, lr}
cmp r1, #0
bne _021DC814
bl MOD17_021DC2F8
pop {r3, pc}
_021DC814:
cmp r1, #2
bne _021DC81E
bl MOD17_021DC2E0
pop {r3, pc}
_021DC81E:
cmp r1, #1
beq _021DC826
cmp r1, #3
bne _021DC82A
_021DC826:
bl MOD17_021DC2EC
_021DC82A:
pop {r3, pc}
thumb_func_end MOD17_021DC808
thumb_func_start MOD17_021DC82C
MOD17_021DC82C: ; 0x021DC82C
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
bne _021DC848
ldr r0, [r5, #0x10]
mov r1, #0x10
mov r2, #0xf
bl FUN_020118C4
ldr r0, [r5, #0x10]
mov r1, #4
bl FUN_02011A60
pop {r3, r4, r5, pc}
_021DC848:
cmp r4, #1
bne _021DC856
ldr r0, [r5, #0x10]
mov r1, #0x10
mov r2, #0x13
bl FUN_020118C4
_021DC856:
cmp r4, #3
bne _021DC86C
ldr r0, [r5, #0x10]
mov r1, #0x10
mov r2, #0x13
bl FUN_020118C4
ldr r0, [r5, #0x10]
mov r1, #3
bl FUN_02011A60
_021DC86C:
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DC82C
thumb_func_start MOD17_021DC870
MOD17_021DC870: ; 0x021DC870
push {r3, lr}
cmp r3, r2
bne _021DC87E
lsl r0, r1, #0x10
lsr r0, r0, #0x10
bl FUN_020054C8
_021DC87E:
pop {r3, pc}
thumb_func_end MOD17_021DC870
thumb_func_start MOD17_021DC880
MOD17_021DC880: ; 0x021DC880
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r4, r3, #0
mov r0, #0
mov r3, #0xd
bl FUN_0200A86C
add r6, r0, #0
bne _021DC898
bl ErrorHandling
_021DC898:
add r0, r6, #0
add r1, r4, #0
bl FUN_0200A914
add r7, r0, #0
mov r0, #0xe
mov r1, #1
bl FUN_02018FF4
add r4, r0, #0
bl FUN_0201901C
mov r0, #0
ldr r2, [sp, #0x28]
ldr r3, [sp, #0x2c]
str r0, [sp]
str r0, [sp, #4]
lsl r2, r2, #0x18
lsl r3, r3, #0x18
ldr r0, [r5, #0x38]
add r1, r4, #0
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl FUN_020190EC
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021DC8F4 ; =0x00010203
mov r1, #2
str r0, [sp, #8]
add r0, r4, #0
add r2, r7, #0
str r3, [sp, #0xc]
bl FUN_0201BDE0
add r0, r7, #0
bl FUN_02021A20
add r0, r6, #0
bl FUN_0200A8B8
add r0, r4, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DC8F4: .word 0x00010203
thumb_func_end MOD17_021DC880
thumb_func_start MOD17_021DC8F8
MOD17_021DC8F8: ; 0x021DC8F8
ldr r3, _021DC900 ; =FUN_020191A4
mov r1, #1
bx r3
nop
_021DC900: .word FUN_020191A4
thumb_func_end MOD17_021DC8F8
thumb_func_start MOD17_021DC904
MOD17_021DC904: ; 0x021DC904
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
add r6, r2, #0
bl FUN_0202011C
add r3, r0, #0
add r2, sp, #0
ldmia r3!, {r0, r1}
add r7, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r1, [sp]
lsl r0, r4, #0xc
add r0, r1, r0
str r0, [sp]
ldr r1, [sp, #4]
lsl r0, r6, #0xc
add r0, r1, r0
str r0, [sp, #4]
ldr r0, [r5]
add r1, r7, #0
bl FUN_02020044
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DC904
thumb_func_start MOD17_021DC940
MOD17_021DC940: ; 0x021DC940
push {r4, lr}
add r4, r0, #0
bl MOD17_021DC904
ldr r0, [r4, #0x10]
bl FUN_02011938
pop {r4, pc}
thumb_func_end MOD17_021DC940
thumb_func_start MOD17_021DC950
MOD17_021DC950: ; 0x021DC950
push {r4, r5, r6, lr}
sub sp, #0x10
add r4, r1, #0
add r6, r2, #0
mov r1, #1
add r5, r0, #0
tst r1, r6
beq _021DC96A
mov r2, #0x52
mov r1, #0
lsl r2, r2, #2
bl memset
_021DC96A:
mov r0, #2
tst r0, r6
beq _021DC978
ldr r1, [r4]
add r0, r5, #0
bl MOD17_021DCC00
_021DC978:
mov r0, #4
add r1, r6, #0
tst r1, r0
beq _021DC99C
mov r1, #0x1b
str r1, [sp]
str r0, [sp, #4]
mov r0, #0x1f
str r0, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
add r0, r5, #0
ldr r1, [r4]
add r0, #0x2c
mov r2, #2
mov r3, #0x13
bl MOD17_021DCC68
_021DC99C:
mov r0, #8
tst r0, r6
beq _021DC9B0
add r0, r5, #0
ldr r1, [r4, #4]
ldr r2, [r4, #8]
ldr r3, [r4, #0x10]
add r0, #0x38
bl MOD17_021DCE34
_021DC9B0:
mov r0, #0x10
tst r0, r6
beq _021DC9CC
ldr r0, [r4]
str r0, [sp]
ldr r0, [r4, #0x20]
str r0, [sp, #4]
add r0, r5, #0
ldr r1, [r4, #4]
ldr r2, [r4, #8]
ldr r3, [r4, #0x1c]
add r0, #0xa0
bl MOD17_021DD074
_021DC9CC:
mov r0, #0x20
tst r0, r6
beq _021DCA42
mov r0, #0x1b
str r0, [sp]
mov r2, #2
str r2, [sp, #4]
mov r0, #0x8b
str r0, [sp, #8]
mov r3, #1
str r3, [sp, #0xc]
add r0, #0xa9
ldr r1, [r4]
add r0, r5, r0
bl MOD17_021DCC68
mov r0, #0x4d
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0xf
bl FUN_02019620
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
ldr r0, _021DCA7C ; =0x0001020F
mov r1, #0x1a
str r0, [sp, #8]
mov r0, #0xff
str r0, [sp, #0xc]
add r0, #0x35
ldr r0, [r5, r0]
ldr r2, [r4, #0x14]
mov r3, #6
bl MOD17_021DCD80
mov r0, #0x48
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
ldr r0, _021DCA7C ; =0x0001020F
mov r1, #0x1a
str r0, [sp, #8]
mov r0, #0xff
str r0, [sp, #0xc]
add r0, #0x35
ldr r0, [r5, r0]
ldr r2, [r4, #0x14]
ldr r3, [r4, #0x18]
bl MOD17_021DCD80
mov r0, #0x4d
lsl r0, r0, #2
mov r2, #1
ldr r0, [r5, r0]
mov r1, #0
add r3, r2, #0
bl FUN_0200D0BC
_021DCA42:
ldr r0, [r4, #4]
str r0, [r5, #0x30]
ldr r0, [r4, #8]
str r0, [r5, #0x34]
ldr r0, [r4]
ldr r1, [r4, #0xc]
bl MOD17_021DCC38
ldr r0, [r4, #0xc]
bl FUN_02025084
mov r1, #0x4f
lsl r1, r1, #2
str r0, [r5, r1]
ldr r0, [r4, #0xc]
bl FUN_02024FF4
mov r1, #5
lsl r1, r1, #6
str r0, [r5, r1]
add r0, r1, #0
sub r0, #8
ldr r0, [r5, r0]
sub r1, #8
orr r0, r6
str r0, [r5, r1]
add sp, #0x10
pop {r4, r5, r6, pc}
nop
_021DCA7C: .word 0x0001020F
thumb_func_end MOD17_021DC950
thumb_func_start MOD17_021DCA80
MOD17_021DCA80: ; 0x021DCA80
push {r4, lr}
mov r1, #0x4e
add r4, r0, #0
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r1, #2
tst r1, r2
beq _021DCAA0
bl MOD17_021DCCD8
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r0, #2
bic r2, r0
str r2, [r4, r1]
_021DCAA0:
mov r0, #0x4e
lsl r0, r0, #2
ldr r1, [r4, r0]
mov r0, #4
tst r0, r1
beq _021DCABE
ldr r0, [r4, #0x2c]
bl MOD17_021DCCE0
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r0, #4
bic r2, r0
str r2, [r4, r1]
_021DCABE:
mov r0, #0x4e
lsl r0, r0, #2
ldr r1, [r4, r0]
mov r0, #8
tst r0, r1
beq _021DCAE0
add r0, r4, #0
ldr r1, [r4, #0x34]
add r0, #0x38
bl MOD17_021DCF30
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r0, #8
bic r2, r0
str r2, [r4, r1]
_021DCAE0:
mov r0, #0x4e
lsl r0, r0, #2
ldr r1, [r4, r0]
mov r0, #0x10
tst r0, r1
beq _021DCB02
add r0, r4, #0
ldr r1, [r4, #0x34]
add r0, #0xa0
bl MOD17_021DD178
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r0, #0x10
bic r2, r0
str r2, [r4, r1]
_021DCB02:
mov r0, #0x4e
lsl r0, r0, #2
ldr r2, [r4, r0]
mov r1, #0x20
tst r1, r2
beq _021DCB22
sub r0, r0, #4
ldr r0, [r4, r0]
bl MOD17_021DCCE0
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r0, #0x20
bic r2, r0
str r2, [r4, r1]
_021DCB22:
mov r2, #0x52
add r0, r4, #0
mov r1, #0
lsl r2, r2, #2
bl memset
pop {r4, pc}
thumb_func_end MOD17_021DCA80
thumb_func_start MOD17_021DCB30
MOD17_021DCB30: ; 0x021DCB30
push {r3, lr}
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r0, r1]
mov r1, #0x10
tst r1, r2
beq _021DCB44
add r0, #0xa0
bl MOD17_021DD1AC
_021DCB44:
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021DCB30
thumb_func_start MOD17_021DCB48
MOD17_021DCB48: ; 0x021DCB48
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
mov r0, #0x4e
lsl r0, r0, #2
add r4, r1, #0
ldr r1, [r5, r0]
mov r0, #4
add r6, r2, #0
add r7, r3, #0
tst r0, r1
bne _021DCB64
bl ErrorHandling
_021DCB64:
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #0xff
str r0, [sp, #8]
ldr r0, [r5, #0x2c]
add r1, r4, #0
add r2, r6, #0
add r3, r7, #0
bl MOD17_021DCCEC
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DCB48
thumb_func_start MOD17_021DCB80
MOD17_021DCB80: ; 0x021DCB80
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
mov r0, #0x4e
lsl r0, r0, #2
add r4, r1, #0
ldr r1, [r5, r0]
mov r0, #4
add r6, r2, #0
add r7, r3, #0
tst r0, r1
bne _021DCB9C
bl ErrorHandling
_021DCB9C:
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #5
lsl r0, r0, #6
ldr r1, [r5, r0]
add r0, r0, #4
str r1, [sp, #8]
add r0, r5, r0
str r0, [sp, #0xc]
ldr r0, [r5, #0x2c]
add r1, r4, #0
add r2, r6, #0
add r3, r7, #0
bl MOD17_021DCD34
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DCB80
thumb_func_start MOD17_021DCBC0
MOD17_021DCBC0: ; 0x021DCBC0
push {r4, lr}
add r4, r0, #0
mov r0, #0x51
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FUN_02021A20
mov r0, #0x51
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
pop {r4, pc}
thumb_func_end MOD17_021DCBC0
thumb_func_start MOD17_021DCBD8
MOD17_021DCBD8: ; 0x021DCBD8
ldr r3, _021DCBE0 ; =MOD17_021DCEE8
add r0, #0x38
bx r3
nop
_021DCBE0: .word MOD17_021DCEE8
thumb_func_end MOD17_021DCBD8
thumb_func_start MOD17_021DCBE4
MOD17_021DCBE4: ; 0x021DCBE4
add r0, #0xbc
ldr r0, [r0]
bx lr
.align 2, 0
thumb_func_end MOD17_021DCBE4
thumb_func_start MOD17_021DCBEC
MOD17_021DCBEC: ; 0x021DCBEC
add r0, #0xc0
str r1, [r0]
bx lr
.align 2, 0
thumb_func_end MOD17_021DCBEC
thumb_func_start MOD17_021DCBF4
MOD17_021DCBF4: ; 0x021DCBF4
ldr r3, _021DCBFC ; =MOD17_021DD454
add r0, #0xd0
bx r3
nop
_021DCBFC: .word MOD17_021DD454
thumb_func_end MOD17_021DCBF4
thumb_func_start MOD17_021DCC00
MOD17_021DCC00: ; 0x021DCC00
push {r3, lr}
sub sp, #0x30
str r1, [sp]
mov r1, #0x19
str r1, [sp, #4]
mov r1, #0xe0
str r1, [sp, #8]
mov r1, #0xe1
str r1, [sp, #0xc]
mov r2, #0
mov r1, #0xe2
str r1, [sp, #0x10]
mov r1, #4
str r1, [sp, #0x1c]
mov r1, #1
str r1, [sp, #0x20]
mov r1, #0xe
str r1, [sp, #0x2c]
add r1, sp, #0
str r2, [sp, #0x14]
str r2, [sp, #0x18]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
bl MOD17_021DBD04
add sp, #0x30
pop {r3, pc}
.align 2, 0
thumb_func_end MOD17_021DCC00
thumb_func_start MOD17_021DCC38
MOD17_021DCC38: ; 0x021DCC38
push {r4, lr}
sub sp, #8
add r4, r0, #0
add r0, r1, #0
bl FUN_02025084
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
mov r0, #0xe
mov r2, #1
str r0, [sp, #4]
add r0, r4, #0
mov r1, #5
add r3, r2, #0
bl FUN_0200CD68
mov r0, #4
mov r1, #0x40
mov r2, #0xe
bl FUN_02002EEC
add sp, #8
pop {r4, pc}
thumb_func_end MOD17_021DCC38
thumb_func_start MOD17_021DCC68
MOD17_021DCC68: ; 0x021DCC68
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
add r7, r1, #0
add r6, r3, #0
mov r0, #0xe
mov r1, #1
add r4, r2, #0
bl FUN_02018FF4
str r0, [r5]
bl FUN_0201901C
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
ldr r0, [sp, #0x28]
lsl r3, r4, #0x18
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [sp, #0x2c]
mov r2, #5
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
mov r0, #2
str r0, [sp, #0xc]
ldr r0, [sp, #0x30]
lsr r3, r3, #0x18
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
ldr r1, [r5]
add r0, r7, #0
bl FUN_02019064
ldr r0, [r5]
mov r1, #0xf
bl FUN_02019620
ldr r0, [sp, #0x34]
cmp r0, #0
beq _021DCCCC
mov r2, #1
ldr r0, [r5]
mov r1, #0
add r3, r2, #0
bl FUN_0200D0BC
_021DCCCC:
ldr r0, [r5]
bl FUN_020191D0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DCC68
thumb_func_start MOD17_021DCCD8
MOD17_021DCCD8: ; 0x021DCCD8
ldr r3, _021DCCDC ; =MOD17_021DBD4C
bx r3
.align 2, 0
_021DCCDC: .word MOD17_021DBD4C
thumb_func_end MOD17_021DCCD8
thumb_func_start MOD17_021DCCE0
MOD17_021DCCE0: ; 0x021DCCE0
ldr r3, _021DCCE8 ; =FUN_020191A4
mov r1, #1
bx r3
nop
_021DCCE8: .word FUN_020191A4
thumb_func_end MOD17_021DCCE0
thumb_func_start MOD17_021DCCEC
MOD17_021DCCEC: ; 0x021DCCEC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r4, r1, #0
mov r1, #0xf
add r5, r0, #0
add r6, r2, #0
add r7, r3, #0
bl FUN_02019620
ldr r0, [sp, #0x28]
add r1, r4, #0
str r0, [sp]
ldr r0, [sp, #0x2c]
add r2, r6, #0
str r0, [sp, #4]
ldr r0, _021DCD30 ; =0x0001020F
add r3, r7, #0
str r0, [sp, #8]
ldr r0, [sp, #0x30]
str r0, [sp, #0xc]
add r0, r5, #0
bl MOD17_021DCD80
mov r2, #1
add r4, r0, #0
add r0, r5, #0
mov r1, #0
add r3, r2, #0
bl FUN_0200D0BC
add r0, r4, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_021DCD30: .word 0x0001020F
thumb_func_end MOD17_021DCCEC
thumb_func_start MOD17_021DCD34
MOD17_021DCD34: ; 0x021DCD34
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r4, r1, #0
mov r1, #0xf
add r5, r0, #0
add r6, r2, #0
add r7, r3, #0
bl FUN_02019620
ldr r0, [sp, #0x28]
add r1, r4, #0
str r0, [sp]
ldr r0, [sp, #0x2c]
add r2, r6, #0
str r0, [sp, #4]
ldr r0, _021DCD7C ; =0x0001020F
add r3, r7, #0
str r0, [sp, #8]
ldr r0, [sp, #0x30]
str r0, [sp, #0xc]
ldr r0, [sp, #0x34]
str r0, [sp, #0x10]
add r0, r5, #0
bl MOD17_021DCDD4
mov r2, #1
add r4, r0, #0
add r0, r5, #0
mov r1, #0
add r3, r2, #0
bl FUN_0200D0BC
add r0, r4, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_021DCD7C: .word 0x0001020F
thumb_func_end MOD17_021DCD34
thumb_func_start MOD17_021DCD80
MOD17_021DCD80: ; 0x021DCD80
push {r4, r5, r6, lr}
sub sp, #0x10
add r6, r0, #0
add r4, r3, #0
mov r0, #0
mov r3, #0xd
bl FUN_0200A86C
add r5, r0, #0
bne _021DCD98
bl ErrorHandling
_021DCD98:
add r0, r5, #0
add r1, r4, #0
bl FUN_0200A914
add r4, r0, #0
ldr r0, [sp, #0x24]
ldr r3, [sp, #0x20]
str r0, [sp]
ldr r0, [sp, #0x2c]
mov r1, #1
str r0, [sp, #4]
ldr r0, [sp, #0x28]
add r2, r4, #0
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
add r0, r6, #0
bl FUN_0201BDE0
add r6, r0, #0
add r0, r4, #0
bl FUN_02021A20
add r0, r5, #0
bl FUN_0200A8B8
add r0, r6, #0
add sp, #0x10
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DCD80
thumb_func_start MOD17_021DCDD4
MOD17_021DCDD4: ; 0x021DCDD4
push {r4, r5, r6, r7, lr}
sub sp, #0x14
ldr r4, [sp, #0x38]
add r7, r0, #0
ldr r0, [r4]
add r5, r1, #0
add r6, r2, #0
str r3, [sp, #0x10]
cmp r0, #0
beq _021DCDEC
bl ErrorHandling
_021DCDEC:
mov r0, #0
add r1, r5, #0
add r2, r6, #0
mov r3, #0xd
bl FUN_0200A86C
add r5, r0, #0
bne _021DCE00
bl ErrorHandling
_021DCE00:
ldr r1, [sp, #0x10]
add r0, r5, #0
bl FUN_0200A914
str r0, [r4]
ldr r0, [sp, #0x2c]
ldr r3, [sp, #0x28]
str r0, [sp]
ldr r0, [sp, #0x34]
mov r1, #1
str r0, [sp, #4]
ldr r0, [sp, #0x30]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r2, [r4]
add r0, r7, #0
bl FUN_0201BDE0
add r4, r0, #0
add r0, r5, #0
bl FUN_0200A8B8
add r0, r4, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DCDD4
thumb_func_start MOD17_021DCE34
MOD17_021DCE34: ; 0x021DCE34
push {r4, r5, r6, r7, lr}
sub sp, #0x6c
add r5, r1, #0
mov r1, #0x67
str r1, [sp]
mov r1, #0xe1
str r1, [sp, #4]
mov r1, #0x66
str r1, [sp, #8]
mov r1, #0x65
str r1, [sp, #0xc]
mov r1, #2
str r1, [sp, #0x10]
mov r1, #0x7d
add r4, r2, #0
lsl r1, r1, #4
str r3, [sp, #0x1c]
str r1, [sp, #0x14]
str r0, [sp, #0x18]
add r1, r4, #0
mov r2, #0xe
mov r3, #0x19
bl MOD17_021DCF54
ldr r0, [sp, #0x18]
add r1, r4, #0
add r2, sp, #0x48
mov r3, #0
bl MOD17_021DD014
add r0, sp, #0x48
str r0, [sp, #0x2c]
mov r0, #2
str r0, [sp, #0x40]
mov r0, #0
str r0, [sp, #0x24]
str r0, [sp, #0x3c]
mov r0, #0xe
str r0, [sp, #0x44]
mov r0, #0x68
ldr r7, [sp, #0x24]
str r5, [sp, #0x28]
str r0, [sp, #0x20]
_021DCE8A:
ldr r0, [sp, #0x20]
mov r6, #0
str r0, [sp, #0x34]
lsl r1, r0, #0xc
mov r0, #2
lsl r0, r0, #0x14
str r1, [sp, #0x34]
add r0, r1, r0
str r0, [sp, #0x34]
ldr r0, [sp, #0x18]
lsl r1, r7, #2
mov r4, #0x26
add r5, r0, r1
_021DCEA4:
str r4, [sp, #0x30]
lsl r0, r4, #0xc
str r0, [sp, #0x30]
add r0, sp, #0x28
bl FUN_0201FF84
mov r1, #1
str r0, [r5, #0x10]
bl FUN_02020130
ldr r0, [sp, #0x1c]
add r1, r6, r7
cmp r1, r0
blt _021DCEC8
ldr r0, [r5, #0x10]
mov r1, #0
bl FUN_020200A0
_021DCEC8:
add r6, r6, #1
add r4, #0x12
add r5, r5, #4
cmp r6, #0xa
blt _021DCEA4
ldr r0, [sp, #0x20]
add r7, #0xa
add r0, #0x12
str r0, [sp, #0x20]
ldr r0, [sp, #0x24]
add r0, r0, #1
str r0, [sp, #0x24]
cmp r0, #2
blt _021DCE8A
add sp, #0x6c
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DCE34
thumb_func_start MOD17_021DCEE8
MOD17_021DCEE8: ; 0x021DCEE8
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
ldr r6, [r7, #0x60]
add r5, r1, #0
cmp r6, r5
bge _021DCF0E
cmp r6, r5
bge _021DCF2C
lsl r0, r6, #2
add r4, r7, r0
_021DCEFC:
ldr r0, [r4, #0x10]
mov r1, #0
bl FUN_02020130
add r6, r6, #1
add r4, r4, #4
cmp r6, r5
blt _021DCEFC
b _021DCF2C
_021DCF0E:
cmp r6, r5
ble _021DCF2C
sub r6, r6, #1
cmp r6, r5
blt _021DCF2C
lsl r0, r6, #2
add r4, r7, r0
_021DCF1C:
ldr r0, [r4, #0x10]
mov r1, #1
bl FUN_02020130
sub r6, r6, #1
sub r4, r4, #4
cmp r6, r5
bge _021DCF1C
_021DCF2C:
str r5, [r7, #0x60]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DCEE8
thumb_func_start MOD17_021DCF30
MOD17_021DCF30: ; 0x021DCF30
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r7, r1, #0
mov r4, #0
add r5, r6, #0
_021DCF3A:
ldr r0, [r5, #0x10]
bl FUN_0201FFC8
add r4, r4, #1
add r5, r5, #4
cmp r4, #0x14
blt _021DCF3A
add r0, r6, #0
add r1, r7, #0
bl MOD17_021DCFE0
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DCF30
thumb_func_start MOD17_021DCF54
MOD17_021DCF54: ; 0x021DCF54
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r2, #0
ldr r7, [sp, #0x3c]
ldr r2, [sp, #0x28]
add r5, r0, #0
add r0, r7, r2
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
add r4, r1, #0
str r6, [sp, #8]
ldr r0, [r4]
str r3, [sp, #0x10]
add r1, r3, #0
mov r3, #0
bl FUN_02008F34
str r0, [r5]
bl FUN_02009B04
ldr r0, [r5]
bl FUN_02009474
ldr r2, [sp, #0x2c]
ldr r1, [sp, #0x10]
add r0, r7, r2
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [sp, #0x38]
mov r3, #0
str r0, [sp, #8]
str r6, [sp, #0xc]
ldr r0, [r4, #4]
bl FUN_02008FEC
str r0, [r5, #4]
bl FUN_02009D68
ldr r0, [r5, #4]
bl FUN_02009474
ldr r2, [sp, #0x30]
ldr r1, [sp, #0x10]
add r0, r7, r2
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
str r6, [sp, #8]
ldr r0, [r4, #8]
mov r3, #0
bl FUN_020090AC
ldr r2, [sp, #0x34]
str r0, [r5, #8]
add r0, r7, r2
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
str r6, [sp, #8]
ldr r0, [r4, #0xc]
ldr r1, [sp, #0x10]
mov r3, #0
bl FUN_020090AC
str r0, [r5, #0xc]
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DCF54
thumb_func_start MOD17_021DCFE0
MOD17_021DCFE0: ; 0x021DCFE0
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
bl FUN_02009C0C
ldr r0, [r5, #4]
bl FUN_02009E04
ldr r0, [r4]
ldr r1, [r5]
bl FUN_02009490
ldr r0, [r4, #4]
ldr r1, [r5, #4]
bl FUN_02009490
ldr r0, [r4, #8]
ldr r1, [r5, #8]
bl FUN_02009490
ldr r0, [r4, #0xc]
ldr r1, [r5, #0xc]
bl FUN_02009490
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DCFE0
thumb_func_start MOD17_021DD014
MOD17_021DD014: ; 0x021DD014
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
add r7, r2, #0
add r6, r3, #0
bl FUN_02009530
str r0, [sp, #0x2c]
ldr r0, [r5, #4]
bl FUN_02009530
str r0, [sp, #0x30]
ldr r0, [r5, #8]
bl FUN_02009530
str r0, [sp, #0x34]
ldr r0, [r5, #0xc]
bl FUN_02009530
str r0, [sp]
mov r0, #0
mvn r0, r0
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r6, [sp, #0x10]
ldr r1, [r4]
ldr r2, [sp, #0x30]
str r1, [sp, #0x14]
ldr r1, [r4, #4]
ldr r3, [sp, #0x34]
str r1, [sp, #0x18]
ldr r1, [r4, #8]
str r1, [sp, #0x1c]
ldr r1, [r4, #0xc]
str r1, [sp, #0x20]
str r0, [sp, #0x24]
str r0, [sp, #0x28]
ldr r1, [sp, #0x2c]
add r0, r7, #0
bl FUN_02008AA4
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DD014
thumb_func_start MOD17_021DD074
MOD17_021DD074: ; 0x021DD074
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x60
add r4, r1, #0
mov r1, #0xe5
str r1, [sp]
mov r1, #0xe6
str r1, [sp, #4]
mov r1, #0xe4
str r1, [sp, #8]
mov r1, #0xe3
str r1, [sp, #0xc]
mov r1, #2
str r1, [sp, #0x10]
ldr r1, _021DD170 ; =0x00000BB8
add r5, r2, #0
str r3, [sp, #0x18]
str r1, [sp, #0x14]
add r7, r0, #0
add r1, r5, #0
mov r2, #0xe
mov r3, #0x19
bl MOD17_021DCF54
add r0, r7, #0
add r1, r5, #0
add r2, sp, #0x3c
mov r3, #0
bl MOD17_021DD014
add r0, sp, #0x3c
str r0, [sp, #0x20]
mov r2, #2
mov r0, #0xe
mov r1, #0x3a
str r0, [sp, #0x38]
lsl r1, r1, #0xc
lsl r0, r2, #0x14
mov r6, #0
str r4, [sp, #0x1c]
str r1, [sp, #0x28]
add r0, r1, r0
str r2, [sp, #0x34]
str r6, [sp, #0x30]
str r0, [sp, #0x28]
mov r4, #0x67
add r5, r7, #0
_021DD0D0:
str r4, [sp, #0x24]
lsl r0, r4, #0xc
str r0, [sp, #0x24]
add r0, sp, #0x1c
bl FUN_0201FF84
str r0, [r5, #0x10]
add r6, r6, #1
add r4, #0x18
add r5, r5, #4
cmp r6, #2
blt _021DD0D0
ldr r0, [sp, #0x18]
mov r1, #0x1e
str r0, [r7, #0x1c]
mul r1, r0
str r1, [r7, #0x20]
ldr r1, [sp, #0x7c]
str r1, [r7, #0x2c]
str r0, [r1]
ldr r1, [r7, #0x2c]
str r0, [r1, #8]
add r0, r7, #0
mov r1, #0
add r0, #0x90
str r1, [r0]
add r0, r7, #0
bl MOD17_021DD204
mov r0, #0xe
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
mov r0, #0xc1
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
add r0, r7, #0
ldr r1, [sp, #0x78]
add r0, #0x18
mov r2, #0xa
mov r3, #8
bl MOD17_021DCC68
ldr r0, [r7, #0x18]
mov r1, #0
bl FUN_02019620
mov r0, #0
str r0, [sp]
mov r3, #4
ldr r0, _021DD174 ; =0x00010200
str r3, [sp, #4]
str r0, [sp, #8]
mov r2, #0xff
str r2, [sp, #0xc]
ldr r0, [r7, #0x18]
mov r1, #0x1a
add r2, #0x52
bl MOD17_021DCD80
mov r0, #0x48
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
ldr r0, _021DD174 ; =0x00010200
mov r2, #0xff
str r0, [sp, #8]
str r2, [sp, #0xc]
ldr r0, [r7, #0x18]
mov r1, #0x1a
add r2, #0x52
mov r3, #5
bl MOD17_021DCD80
ldr r0, [r7, #0x18]
bl FUN_020191D0
add sp, #0x60
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DD170: .word 0x00000BB8
_021DD174: .word 0x00010200
thumb_func_end MOD17_021DD074
thumb_func_start MOD17_021DD178
MOD17_021DD178: ; 0x021DD178
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x24]
add r4, r1, #0
cmp r0, #0
beq _021DD188
bl FUN_0200CAB4
_021DD188:
ldr r0, [r5, #0x28]
cmp r0, #0
beq _021DD192
bl FUN_0200CAB4
_021DD192:
add r0, r5, #0
add r1, r4, #0
bl MOD17_021DCFE0
ldr r0, [r5, #0x18]
bl MOD17_021DCCE0
add r0, r5, #0
mov r1, #0
mov r2, #0x94
bl memset
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DD178
thumb_func_start MOD17_021DD1AC
MOD17_021DD1AC: ; 0x021DD1AC
push {r4, lr}
add r4, r0, #0
bl MOD17_021DD27C
ldr r0, [r4, #0x20]
mov r1, #0x1e
bl _s32_div_f
add r1, r0, #0
ldr r0, [r4, #0x2c]
bl FUN_02083A34
add r0, r4, #0
bl MOD17_021DD1DC
add r0, r4, #0
bl MOD17_021DD204
add r4, #0x30
add r0, r4, #0
bl MOD17_021DD3BC
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DD1AC
thumb_func_start MOD17_021DD1DC
MOD17_021DD1DC: ; 0x021DD1DC
push {r3, lr}
ldr r1, [r0, #0x2c]
ldr r2, [r1]
ldr r1, [r0, #0x1c]
cmp r1, r2
beq _021DD1FC
str r2, [r0, #0x1c]
cmp r2, #0xa
bgt _021DD1FC
add r1, r0, #0
add r1, #0x30
bl MOD17_021DD2E0
ldr r0, _021DD200 ; =0x00000683
bl FUN_020054C8
_021DD1FC:
pop {r3, pc}
nop
_021DD200: .word 0x00000683
thumb_func_end MOD17_021DD1DC
thumb_func_start MOD17_021DD204
MOD17_021DD204: ; 0x021DD204
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r6, r0, #0
ldr r0, [r6, #0x1c]
mov r1, #1
str r0, [sp]
mov r0, #0xa
add r4, r1, #0
mul r4, r0
mov r7, #0
add r5, r6, #0
_021DD21A:
ldr r0, [sp]
add r1, r4, #0
bl _s32_div_f
str r0, [sp, #4]
cmp r0, #0xa
ble _021DD22C
bl ErrorHandling
_021DD22C:
ldr r0, [r5, #0x10]
ldr r1, [sp, #4]
bl FUN_02020130
ldr r0, [sp, #4]
add r1, r0, #0
ldr r0, [sp]
mul r1, r4
sub r0, r0, r1
str r0, [sp]
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
add r4, r0, #0
add r0, r6, #0
add r0, #0x90
ldr r0, [r0]
cmp r0, #0
bne _021DD26E
ldr r0, [r6, #0x1c]
cmp r0, #0xa
bgt _021DD26E
ldr r0, [r5, #0x10]
mov r1, #1
bl FUN_0202027C
cmp r7, #1
bne _021DD26E
add r1, r6, #0
add r1, #0x90
mov r0, #1
str r0, [r1]
_021DD26E:
add r7, r7, #1
add r5, r5, #4
cmp r7, #2
blt _021DD21A
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DD204
thumb_func_start MOD17_021DD27C
MOD17_021DD27C: ; 0x021DD27C
ldr r1, [r0, #0x20]
sub r1, r1, #1
bmi _021DD284
str r1, [r0, #0x20]
_021DD284:
bx lr
.align 2, 0
thumb_func_end MOD17_021DD27C
thumb_func_start MOD17_021DD288
MOD17_021DD288: ; 0x021DD288
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_end MOD17_021DD288
thumb_func_start MOD17_021DD298
MOD17_021DD298: ; 0x021DD298
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 _021DD2D8
str r0, [r4, #0xc]
mov r0, #0
pop {r4, pc}
_021DD2D8:
str r1, [r4, #0xc]
mov r0, #1
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DD298
thumb_func_start MOD17_021DD2E0
MOD17_021DD2E0: ; 0x021DD2E0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp]
str r1, [sp, #4]
mov r1, #0x3a
mov r0, #2
lsl r1, r1, #0xc
lsl r0, r0, #0x14
ldr r4, [sp, #4]
str r1, [sp, #0x10]
add r0, r1, r0
str r0, [sp, #0x10]
add r0, r4, #0
ldr r6, [sp]
mov r7, #0
mov r5, #0x67
str r0, [sp, #8]
_021DD302:
ldr r0, [r6, #0x10]
mov r1, #2
str r0, [r4, #4]
bl FUN_020200EC
ldr r2, [sp, #8]
str r5, [sp, #0xc]
lsl r0, r5, #0xc
add r2, #0xc
add r3, sp, #0xc
str r0, [sp, #0xc]
ldmia r3!, {r0, r1}
str r2, [sp, #8]
stmia r2!, {r0, r1}
ldr r0, [r3]
add r7, r7, #1
str r0, [r2]
add r6, r6, #4
add r4, r4, #4
add r5, #0x18
cmp r7, #2
blt _021DD302
ldr r0, [sp]
ldr r1, [r0, #0x1c]
mov r0, #0xa
sub r0, r0, r1
cmp r0, #0
ble _021DD35C
lsl r0, r0, #0xc
ldr r2, _021DD3B8 ; =0x00000266
asr r1, r0, #0x1f
mov r3, #0
bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
add r4, r0, r2
adc r1, r3
lsl r0, r1, #0x14
lsr r1, r4, #0xc
orr r1, r0
lsl r0, r2, #1
add r4, r1, r0
b _021DD360
_021DD35C:
mov r4, #1
lsl r4, r4, #0xc
_021DD360:
ldr r0, [sp, #4]
mov r2, #1
add r0, #0x24
add r1, r4, #0
lsl r2, r2, #0xc
mov r3, #0x10
bl MOD17_021DD288
mov r2, #6
asr r1, r4, #0x1f
add r0, r4, #0
lsl r2, r2, #0xe
mov r3, #0
bl _ll_mul
mov r3, #2
mov r2, #0
lsl r3, r3, #0xa
add r3, r0, r3
adc r1, r2
lsl r0, r1, #0x14
lsr r1, r3, #0xc
orr r1, r0
mov r0, #6
lsl r0, r0, #0xe
sub r4, r1, r0
ldr r0, [sp, #4]
add r1, r4, #0
add r0, #0x38
mov r3, #0x10
bl MOD17_021DD288
ldr r0, [sp, #4]
add r1, r4, #0
add r0, #0x4c
mov r2, #0
mov r3, #0x10
bl MOD17_021DD288
ldr r0, [sp, #4]
mov r1, #1
str r1, [r0]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DD3B8: .word 0x00000266
thumb_func_end MOD17_021DD2E0
thumb_func_start MOD17_021DD3BC
MOD17_021DD3BC: ; 0x021DD3BC
push {r4, r5, r6, lr}
sub sp, #0x18
add r5, r0, #0
ldr r0, [r5]
cmp r0, #0
beq _021DD44E
add r0, r5, #0
add r0, #0x24
bl MOD17_021DD298
add r4, r0, #0
add r0, r5, #0
add r0, #0x38
bl MOD17_021DD298
add r0, r5, #0
add r0, #0x4c
bl MOD17_021DD298
ldr r0, [r5, #0x24]
add r1, sp, #0xc
str r0, [sp, #0xc]
ldr r0, [r5, #0x24]
str r0, [sp, #0x10]
ldr r0, [r5, #0x24]
str r0, [sp, #0x14]
ldr r0, [r5, #4]
bl FUN_02020064
ldr r0, [r5, #8]
add r1, sp, #0xc
bl FUN_02020064
add r6, r5, #0
add r6, #0xc
add r3, sp, #0
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
ldr r1, [sp]
ldr r0, [r5, #0x38]
sub r0, r1, r0
str r0, [sp]
ldr r1, [sp, #4]
ldr r0, [r5, #0x4c]
sub r0, r1, r0
str r0, [sp, #4]
ldr r0, [r5, #4]
add r1, r2, #0
bl FUN_02020044
add r6, r5, #0
add r6, #0x18
add r3, sp, #0
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
ldr r1, [sp, #4]
ldr r0, [r5, #0x4c]
sub r0, r1, r0
str r0, [sp, #4]
ldr r0, [r5, #8]
add r1, r2, #0
bl FUN_02020044
cmp r4, #0
beq _021DD44E
mov r0, #0
str r0, [r5]
_021DD44E:
add sp, #0x18
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DD3BC
thumb_func_start MOD17_021DD454
MOD17_021DD454: ; 0x021DD454
ldr r0, [r0]
cmp r0, #1
beq _021DD45E
mov r0, #1
bx lr
_021DD45E:
mov r0, #0
bx lr
.align 2, 0
thumb_func_end MOD17_021DD454
thumb_func_start MOD17_021DD464
MOD17_021DD464: ; 0x021DD464
push {r3, lr}
sub sp, #0x10
add r3, r1, #0
stmia r0!, {r1}
add r3, #0x48
str r3, [sp]
ldr r1, [r1, #0x74]
lsl r1, r1, #2
add r1, #0x89
str r1, [sp, #4]
mov r1, #0x10
str r1, [sp, #8]
add r1, sp, #0
str r2, [sp, #0xc]
bl MOD17_021DBD68
add sp, #0x10
pop {r3, pc}
thumb_func_end MOD17_021DD464
thumb_func_start MOD17_021DD488
MOD17_021DD488: ; 0x021DD488
ldr r3, _021DD490 ; =MOD17_021DBD80
add r0, r0, #4
mov r1, #1
bx r3
.align 2, 0
_021DD490: .word MOD17_021DBD80
thumb_func_end MOD17_021DD488
thumb_func_start MOD17_021DD494
MOD17_021DD494: ; 0x021DD494
push {r4, lr}
add r4, r0, #0
add r0, r4, #4
bl MOD17_021DBDE8
mov r1, #0x1c
mov r0, #0
_021DD4A2:
strb r0, [r4]
add r4, r4, #1
sub r1, r1, #1
bne _021DD4A2
pop {r4, pc}
thumb_func_end MOD17_021DD494
thumb_func_start MOD17_021DD4AC
MOD17_021DD4AC: ; 0x021DD4AC
push {r3, r4, lr}
sub sp, #0x6c
add r2, r0, #0
add r4, r1, #0
add r0, sp, #0
add r1, r2, #0
bl MOD17_021DD9E8
add r0, sp, #0
add r1, r4, #0
bl MOD17_021DD9FC
add r0, sp, #0
bl MOD17_021DD6DC
add sp, #0x6c
pop {r3, r4, pc}
.align 2, 0
thumb_func_end MOD17_021DD4AC
thumb_func_start MOD17_021DD4D0
MOD17_021DD4D0: ; 0x021DD4D0
push {r3, r4, lr}
sub sp, #0x6c
add r2, r0, #0
add r4, r1, #0
add r0, sp, #0
add r1, r2, #0
bl MOD17_021DD9E8
add r0, sp, #0
add r1, r4, #0
bl MOD17_021DDA44
add r0, sp, #0
bl MOD17_021DD6DC
add sp, #0x6c
pop {r3, r4, pc}
.align 2, 0
thumb_func_end MOD17_021DD4D0
thumb_func_start MOD17_021DD4F4
MOD17_021DD4F4: ; 0x021DD4F4
push {r3, r4, lr}
sub sp, #0x6c
add r2, r0, #0
add r4, r1, #0
add r0, sp, #0
add r1, r2, #0
bl MOD17_021DD9E8
add r0, sp, #0
add r1, r4, #0
bl MOD17_021DDA44
add r0, sp, #0
bl MOD17_021DD778
add sp, #0x6c
pop {r3, r4, pc}
.align 2, 0
thumb_func_end MOD17_021DD4F4
thumb_func_start MOD17_021DD518
MOD17_021DD518: ; 0x021DD518
push {r4, lr}
add r4, r0, #0
mov r0, #0x95
lsl r0, r0, #2
ldr r1, [r4, r0]
cmp r1, #1
bne _021DD52E
sub r0, #0x48
add r0, r4, r0
bl MOD17_021DD488
_021DD52E:
mov r0, #0x96
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #1
bne _021DD53E
add r0, r4, #0
bl MOD17_021DD838
_021DD53E:
pop {r4, pc}
thumb_func_end MOD17_021DD518
thumb_func_start MOD17_021DD540
MOD17_021DD540: ; 0x021DD540
push {r4, lr}
mov r1, #0x95
add r4, r0, #0
lsl r1, r1, #2
ldr r1, [r4, r1]
cmp r1, #0
beq _021DD552
bl MOD17_021DD984
_021DD552:
add r0, r4, #0
bl MOD17_021DD968
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl MOD17_021D750C
mov r0, #6
mov r1, #0
lsl r0, r0, #6
str r1, [r4, r0]
sub r0, #8
add r0, r4, r0
bl MOD17_021DBA1C
add r0, r4, #0
bl MOD17_021DD86C
mov r0, #0x8a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FreeToHeap
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DD540
thumb_func_start MOD17_021DD58C
MOD17_021DD58C: ; 0x021DD58C
ldr r3, _021DD590 ; =MOD17_021D7C1C
bx r3
.align 2, 0
_021DD590: .word MOD17_021D7C1C
thumb_func_end MOD17_021DD58C
thumb_func_start MOD17_021DD594
MOD17_021DD594: ; 0x021DD594
mov r2, #0x96
lsl r2, r2, #2
str r1, [r0, r2]
bx lr
thumb_func_end MOD17_021DD594
thumb_func_start MOD17_021DD59C
MOD17_021DD59C: ; 0x021DD59C
str r1, [r0, #0x1c]
bx lr
thumb_func_end MOD17_021DD59C
thumb_func_start MOD17_021DD5A0
MOD17_021DD5A0: ; 0x021DD5A0
push {r3, r4, r5, r6, lr}
sub sp, #4
add r6, r2, #0
mov r2, #0x61
add r4, r1, #0
lsl r2, r2, #2
add r5, r0, #0
add r1, r2, #0
add r0, r5, r2
str r6, [sp]
add r1, #0xac
add r2, #0xb0
ldr r1, [r5, r1]
ldr r2, [r5, r2]
add r3, r4, #0
bl MOD17_021DA140
mov r0, #0x95
lsl r0, r0, #2
ldr r0, [r5, r0]
cmp r0, #0
beq _021DD5E8
mov r3, #0x88
ldr r0, [r5, #0x38]
mov r1, #2
mov r2, #0
sub r3, r3, r4
bl FUN_020179E0
mov r3, #0x10
ldr r0, [r5, #0x38]
mov r1, #2
mov r2, #3
sub r3, r3, r6
bl FUN_020179E0
_021DD5E8:
mov r0, #0x23
lsl r0, r0, #4
str r4, [r5, r0]
add r0, r0, #4
str r6, [r5, r0]
add sp, #4
pop {r3, r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DD5A0
thumb_func_start MOD17_021DD5F8
MOD17_021DD5F8: ; 0x021DD5F8
mov r3, #0x8e
lsl r3, r3, #2
str r1, [r0, r3]
add r1, r3, #4
str r2, [r0, r1]
bx lr
thumb_func_end MOD17_021DD5F8
thumb_func_start MOD17_021DD604
MOD17_021DD604: ; 0x021DD604
mov r2, #9
lsl r2, r2, #6
strh r1, [r0, r2]
bx lr
thumb_func_end MOD17_021DD604
thumb_func_start MOD17_021DD60C
MOD17_021DD60C: ; 0x021DD60C
push {r3, r4}
mov r4, #0x91
lsl r4, r4, #2
str r1, [r0, r4]
add r1, r4, #4
str r2, [r0, r1]
add r4, #8
str r3, [r0, r4]
pop {r3, r4}
bx lr
thumb_func_end MOD17_021DD60C
thumb_func_start MOD17_021DD620
MOD17_021DD620: ; 0x021DD620
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
mov r0, #0x7f
lsl r0, r0, #2
add r4, r1, #0
add r6, r2, #0
add r0, r5, r0
add r1, sp, #8
add r2, sp, #4
bl MOD17_021DB878
mov r0, #0x61
lsl r0, r0, #2
add r0, r5, r0
add r1, sp, #0x10
add r2, sp, #0xc
bl MOD17_021DA348
mov r0, #0x23
lsl r0, r0, #4
ldr r1, [sp, #0x10]
ldr r2, [r5, r0]
sub r1, r4, r1
add r0, r0, #4
add r7, r2, r1
ldr r1, [r5, r0]
ldr r0, [sp, #0xc]
sub r0, r6, r0
add r0, r1, r0
str r0, [sp]
ldr r2, [sp]
add r0, r5, #0
add r1, r7, #0
bl MOD17_021DD5A0
ldr r2, [sp]
add r0, r5, #0
sub r1, r4, r7
sub r2, r6, r2
bl MOD17_021DD5F8
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DD620
thumb_func_start MOD17_021DD678
MOD17_021DD678: ; 0x021DD678
push {r4, r5, r6, lr}
add r4, r2, #0
mov r2, #0x92
add r5, r0, #0
mov r0, #0x28
lsl r2, r2, #2
sub r0, r0, r3
ldr r2, [r5, r2]
lsl r0, r0, #0xc
add r6, r1, #0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
bl _ll_mul
add r2, r0, #0
add r0, r5, #0
mov r5, #2
add r3, r1, #0
add r1, r6, #0
mov r6, #0
lsl r5, r5, #0xa
add r5, r2, r5
adc r3, r6
lsl r2, r3, #0x14
lsr r3, r5, #0xc
orr r3, r2
asr r2, r3, #0xc
sub r2, r4, r2
bl MOD17_021DD620
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD17_021DD678
thumb_func_start MOD17_021DD6B8
MOD17_021DD6B8: ; 0x021DD6B8
mov r2, #0x25
lsl r2, r2, #4
strh r1, [r0, r2]
sub r2, #0xcc
ldr r3, _021DD6C8 ; =MOD17_021DA3D8
add r0, r0, r2
bx r3
nop
_021DD6C8: .word MOD17_021DA3D8
thumb_func_end MOD17_021DD6B8
thumb_func_start MOD17_021DD6CC
MOD17_021DD6CC: ; 0x021DD6CC
mov r2, #0x61
lsl r2, r2, #2
ldr r3, _021DD6D8 ; =MOD17_021DA1DC
add r0, r0, r2
bx r3
nop
_021DD6D8: .word MOD17_021DA1DC
thumb_func_end MOD17_021DD6CC
thumb_func_start MOD17_021DD6DC
MOD17_021DD6DC: ; 0x021DD6DC
push {r3, r4, r5, lr}
add r5, r0, #0
mov r1, #0x97
ldr r0, [r5, #0x68]
lsl r1, r1, #2
bl AllocFromHeap
mov r2, #0x97
mov r1, #0
lsl r2, r2, #2
add r4, r0, #0
bl memset
mov r0, #0x8b
ldr r1, [r5, #0x68]
lsl r0, r0, #2
str r1, [r4, r0]
ldr r0, [r5, #0x68]
bl FUN_020669C0
mov r1, #0x8a
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [r5]
ldr r1, [r4, r1]
bl FUN_02027CB8
add r0, r4, #0
add r1, r5, #0
bl MOD17_021DD7F4
ldr r1, [r5, #0x58]
ldr r2, [r5, #0x68]
add r0, r4, #0
bl MOD17_021D7B94
mov r0, #0x5e
lsl r0, r0, #2
ldr r2, [r5, #0x68]
add r0, r4, r0
mov r1, #0x15
bl MOD17_021DB9F4
ldr r1, [r5, #0x68]
mov r0, #0x14
bl MOD17_021D74E0
mov r1, #6
lsl r1, r1, #6
str r0, [r4, r1]
add r0, r4, #0
add r1, r5, #0
bl MOD17_021DD88C
add r0, r4, #0
add r1, r5, #0
bl MOD17_021DD954
mov r1, #0x83
lsl r1, r1, #2
add r0, r4, r1
sub r1, #0x88
ldr r2, [r5, #0x68]
add r1, r4, r1
bl MOD17_021DD464
mov r0, #0x95
mov r1, #1
lsl r0, r0, #2
str r1, [r4, r0]
add r0, r0, #4
str r1, [r4, r0]
add r0, r4, #0
add r1, r5, #0
bl MOD17_021DD994
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DD6DC
thumb_func_start MOD17_021DD778
MOD17_021DD778: ; 0x021DD778
push {r3, r4, r5, lr}
add r5, r0, #0
mov r1, #0x97
ldr r0, [r5, #0x68]
lsl r1, r1, #2
bl AllocFromHeap
mov r2, #0x97
mov r1, #0
lsl r2, r2, #2
add r4, r0, #0
bl memset
mov r0, #0x8b
ldr r1, [r5, #0x68]
lsl r0, r0, #2
str r1, [r4, r0]
ldr r0, [r5, #0x68]
bl FUN_020669C0
mov r1, #0x8a
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [r5]
ldr r1, [r4, r1]
bl FUN_02027CB8
add r0, r4, #0
add r1, r5, #0
bl MOD17_021DD7F4
mov r0, #0x5e
lsl r0, r0, #2
ldr r2, [r5, #0x68]
add r0, r4, r0
mov r1, #0x15
bl MOD17_021DB9F4
ldr r1, [r5, #0x68]
mov r0, #0x14
bl MOD17_021D74E0
mov r1, #6
lsl r1, r1, #6
str r0, [r4, r1]
add r0, r4, #0
add r1, r5, #0
bl MOD17_021DD88C
mov r0, #0x95
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
mov r1, #1
add r0, r0, #4
str r1, [r4, r0]
add r0, r4, #0
add r1, r5, #0
bl MOD17_021DD994
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end MOD17_021DD778
thumb_func_start MOD17_021DD7F4
MOD17_021DD7F4: ; 0x021DD7F4
push {r3, r4, r5, lr}
sub sp, #0x28
add r4, r1, #0
ldr r1, _021DD834 ; =0x000002CE
add r5, r0, #0
str r1, [sp]
mov r1, #0x76
str r1, [sp, #4]
mov r1, #0x13
str r1, [sp, #8]
ldr r1, [r4, #0x68]
str r1, [sp, #0xc]
ldr r2, [r4, #0x68]
add r1, sp, #0
bl MOD17_021D7B68
ldr r3, [r4, #0x68]
add r0, r5, #0
add r1, sp, #0x10
add r2, r4, #0
bl MOD17_021DDA8C
add r0, r5, #0
add r1, sp, #0x10
bl MOD17_021D78A0
add r0, sp, #0x10
bl MOD17_021D7A24
add sp, #0x28
pop {r3, r4, r5, pc}
nop
_021DD834: .word 0x000002CE
thumb_func_end MOD17_021DD7F4
thumb_func_start MOD17_021DD838
MOD17_021DD838: ; 0x021DD838
push {r3, r4, lr}
sub sp, #4
mov r3, #0x91
lsl r3, r3, #2
add r1, r0, r3
str r1, [sp]
add r1, r3, #0
sub r1, #0x14
ldr r2, [r0, r1]
add r1, r3, #0
sub r1, #0xc
ldr r1, [r0, r1]
add r1, r2, r1
add r2, r3, #0
sub r2, #0x10
ldr r4, [r0, r2]
add r2, r3, #0
sub r2, #8
sub r3, r3, #4
ldr r2, [r0, r2]
ldrh r3, [r0, r3]
add r2, r4, r2
bl MOD17_021D7C28
add sp, #4
pop {r3, r4, pc}
thumb_func_end MOD17_021DD838
thumb_func_start MOD17_021DD86C
MOD17_021DD86C: ; 0x021DD86C
push {r4, lr}
add r4, r0, #0
bl MOD17_021D78BC
add r0, r4, #0
bl MOD17_021D7BE4
mov r0, #0x95
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #0
beq _021DD88A
add r0, r4, #0
bl MOD17_021D7C10
_021DD88A:
pop {r4, pc}
thumb_func_end MOD17_021DD86C
thumb_func_start MOD17_021DD88C
MOD17_021DD88C: ; 0x021DD88C
push {r4, r5, r6, r7, lr}
sub sp, #0x4c
add r5, r0, #0
add r2, sp, #0x28
mov r0, #0
add r6, r1, #0
add r3, r2, #0
add r1, r0, #0
stmia r3!, {r0, r1}
stmia r3!, {r0, r1}
stmia r3!, {r0, r1}
stmia r3!, {r0, r1}
str r0, [r3]
ldr r0, [r5]
str r0, [sp, #0x28]
ldr r0, [r5, #4]
str r0, [sp, #0x2c]
ldr r0, [r5, #0x10]
str r0, [sp, #0x30]
ldr r0, [r5, #0x28]
str r0, [sp, #0x34]
ldr r0, [r5, #0x20]
str r0, [sp, #0x38]
ldr r0, [r5, #0x38]
str r0, [sp, #0x3c]
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
str r1, [sp, #0x40]
add r1, r0, #0
sub r1, #8
add r1, r5, r1
str r1, [sp, #0x44]
mov r1, #0x15
add r0, r0, #4
str r1, [sp, #0x48]
add r0, r5, r0
add r1, r2, #0
bl MOD17_021D9F80
ldr r0, [r6]
bl FUN_02027CA8
add r7, r0, #0
ldr r0, [r6]
bl FUN_02027CB0
add r4, r0, #0
ldr r0, [r6]
bl FUN_02027CA0
str r4, [sp]
str r0, [sp, #4]
ldr r0, [r6, #0x68]
mov r1, #0x61
lsl r1, r1, #2
str r0, [sp, #8]
add r0, r5, r1
add r1, #0xa4
ldr r1, [r5, r1]
add r2, sp, #0x18
add r3, r7, #0
bl MOD17_021D9FF0
ldr r0, [r6, #0x54]
mov r7, #0
cmp r0, #0
ble _021DD950
add r4, r6, #0
_021DD916:
ldr r0, [r4, #4]
bl FUN_02027CF8
str r0, [sp, #0xc]
ldr r0, [r4, #4]
bl FUN_02027CFC
str r0, [sp, #0x10]
ldr r0, [r4, #4]
bl FUN_02027D00
str r0, [sp, #0x14]
ldr r0, [r4, #4]
bl FUN_02027D04
str r0, [sp]
mov r0, #0x61
lsl r0, r0, #2
ldr r1, [sp, #0xc]
ldr r2, [sp, #0x10]
ldr r3, [sp, #0x14]
add r0, r5, r0
bl MOD17_021DA064
ldr r0, [r6, #0x54]
add r7, r7, #1
add r4, r4, #4
cmp r7, r0
blt _021DD916
_021DD950:
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DD88C
thumb_func_start MOD17_021DD954
MOD17_021DD954: ; 0x021DD954
add r2, r1, #0
mov r1, #0x61
lsl r1, r1, #2
add r0, r0, r1
ldr r1, [r2, #0x5c]
ldr r3, _021DD964 ; =MOD17_021DA2F0
ldr r2, [r2, #0x68]
bx r3
.align 2, 0
_021DD964: .word MOD17_021DA2F0
thumb_func_end MOD17_021DD954
thumb_func_start MOD17_021DD968
MOD17_021DD968: ; 0x021DD968
push {r4, lr}
add r4, r0, #0
mov r0, #0x61
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021DA100
mov r0, #0x61
lsl r0, r0, #2
add r0, r4, r0
bl MOD17_021D9FD4
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DD968
thumb_func_start MOD17_021DD984
MOD17_021DD984: ; 0x021DD984
mov r1, #0x61
lsl r1, r1, #2
ldr r3, _021DD990 ; =MOD17_021DA33C
add r0, r0, r1
bx r3
nop
_021DD990: .word MOD17_021DA33C
thumb_func_end MOD17_021DD984
thumb_func_start MOD17_021DD994
MOD17_021DD994: ; 0x021DD994
push {r3, r4, r5, lr}
add r3, r1, #0
mov r1, #0x23
add r4, r0, #0
mov r2, #0x48
lsl r1, r1, #4
str r2, [r4, r1]
mov r5, #0x38
add r2, r1, #4
str r5, [r4, r2]
add r2, r1, #0
add r2, #8
str r5, [r4, r2]
add r2, r1, #0
mov r5, #0x40
add r2, #0xc
str r5, [r4, r2]
lsl r2, r5, #6
add r5, r1, #0
add r5, #0x14
str r2, [r4, r5]
add r5, r1, #0
add r5, #0x18
str r2, [r4, r5]
add r5, r1, #0
add r5, #0x1c
str r2, [r4, r5]
mov r2, #0
add r1, #0x10
strh r2, [r4, r1]
ldr r1, [r3, #0x60]
ldr r2, [r3, #0x64]
bl MOD17_021DD5A0
mov r0, #0x25
ldr r1, _021DD9E4 ; =0x00007FFF
lsl r0, r0, #4
strh r1, [r4, r0]
pop {r3, r4, r5, pc}
nop
_021DD9E4: .word 0x00007FFF
thumb_func_end MOD17_021DD994
thumb_func_start MOD17_021DD9E8
MOD17_021DD9E8: ; 0x021DD9E8
ldr r2, [r1]
str r2, [r0, #0x58]
ldr r2, [r1, #4]
str r2, [r0, #0x60]
ldr r2, [r1, #8]
str r2, [r0, #0x64]
ldr r1, [r1, #0xc]
str r1, [r0, #0x68]
bx lr
.align 2, 0
thumb_func_end MOD17_021DD9E8
thumb_func_start MOD17_021DD9FC
MOD17_021DD9FC: ; 0x021DD9FC
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r5, r0, #0
add r0, r7, #0
bl FUN_02027564
add r6, r5, #0
str r0, [r5]
mov r4, #0
str r4, [r5, #0x54]
add r6, #0x54
_021DDA12:
add r0, r7, #0
add r1, r4, #0
bl FUN_02027528
cmp r0, #0
beq _021DDA34
add r0, r7, #0
add r1, r4, #0
bl FUN_02027590
ldr r1, [r5, #0x54]
lsl r1, r1, #2
add r1, r5, r1
str r0, [r1, #4]
ldr r0, [r6]
add r0, r0, #1
str r0, [r6]
_021DDA34:
add r4, r4, #1
cmp r4, #0xa
blt _021DDA12
add r0, r7, #0
bl FUN_0202766C
str r0, [r5, #0x5c]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DD9FC
thumb_func_start MOD17_021DDA44
MOD17_021DDA44: ; 0x021DDA44
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r5, r0, #0
add r0, r7, #0
bl FUN_02027A94
add r6, r5, #0
str r0, [r5]
mov r4, #0
str r4, [r5, #0x54]
add r6, #0x54
_021DDA5A:
add r0, r7, #0
add r1, r4, #0
bl FUN_02027A14
cmp r0, #0
beq _021DDA7C
add r0, r7, #0
add r1, r4, #0
bl FUN_02027AC4
ldr r1, [r5, #0x54]
lsl r1, r1, #2
add r1, r5, r1
str r0, [r1, #4]
ldr r0, [r6]
add r0, r0, #1
str r0, [r6]
_021DDA7C:
add r4, r4, #1
cmp r4, #0x14
blt _021DDA5A
add r0, r7, #0
bl FUN_02027C28
str r0, [r5, #0x5c]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DDA44
thumb_func_start MOD17_021DDA8C
MOD17_021DDA8C: ; 0x021DDA8C
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r7, r3, #0
add r5, r0, #0
add r6, r2, #0
add r0, r4, #0
add r1, r7, #0
bl MOD17_021D7AFC
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
add r3, r7, #0
bl MOD17_021DDAAC
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DDA8C
thumb_func_start MOD17_021DDAAC
MOD17_021DDAAC: ; 0x021DDAAC
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #0x10]
add r0, r2, #0
ldr r0, [r0, #0x54]
add r4, r1, #0
str r2, [sp, #8]
str r3, [sp, #0xc]
cmp r0, #0
ble _021DDB1E
add r6, r2, #0
_021DDAC6:
ldr r0, [r6, #4]
bl FUN_02027CF8
add r5, r0, #0
ldr r0, [r4, #0x10]
add r1, r5, #0
bl FUN_02020CB0
cmp r0, #1
bne _021DDB0C
mov r0, #1
str r0, [sp]
ldr r3, [sp, #0xc]
mov r0, #0x19
add r1, r5, #1
mov r2, #0
bl FUN_02006C98
add r7, r0, #0
ldr r0, [r4, #0x10]
add r1, r7, #0
add r2, r5, #0
bl FUN_02020CD4
ldr r1, [r4]
lsl r5, r5, #3
add r1, r1, r5
add r0, r7, #0
add r1, r1, #4
bl FUN_020B0088
ldr r0, [sp, #4]
ldr r1, [r0]
ldr r0, [r4]
str r1, [r0, r5]
_021DDB0C:
ldr r0, [sp, #0x10]
add r6, r6, #4
add r0, r0, #1
str r0, [sp, #0x10]
ldr r0, [sp, #8]
ldr r1, [r0, #0x54]
ldr r0, [sp, #0x10]
cmp r0, r1
blt _021DDAC6
_021DDB1E:
mov r0, #1
mov r1, #0
str r0, [sp]
ldr r3, [sp, #0xc]
mov r0, #0x19
add r2, r1, #0
bl FUN_02006C98
add r5, r0, #0
ldr r0, [r4, #0x14]
add r1, r5, #0
mov r2, #0
bl FUN_02020CD4
ldr r1, [r4, #8]
add r0, r5, #0
add r1, r1, #4
bl FUN_020B0138
ldr r0, [sp, #4]
ldr r1, [r0]
ldr r0, [r4, #8]
str r1, [r0]
ldr r0, [r4, #8]
mov r1, #3
str r1, [r0, #8]
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD17_021DDAAC
thumb_func_start MOD17_021DDB58
MOD17_021DDB58: ; 0x021DDB58
push {r3, r4, r5, lr}
sub sp, #0x10
mov r2, #2
add r5, r0, #0
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
bl FUN_0201681C
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
bl FUN_0201681C
mov r1, #0x65
add r0, r5, #0
lsl r1, r1, #2
mov r2, #0xd
bl FUN_02006268
mov r2, #0x65
mov r1, #0
lsl r2, r2, #2
add r4, r0, #0
bl memset
ldr r0, _021DDC28 ; =MOD17_021DDD40
add r1, r4, #0
bl FUN_02015F10
bl FUN_02015F1C
add r0, r5, #0
bl FUN_0200628C
add r5, r0, #0
ldr r0, [r5, #8]
cmp r0, #0
ldr r0, [r5]
bne _021DDBB4
ldr r1, [r5, #4]
bl FUN_02027008
str r0, [r4]
b _021DDBBC
_021DDBB4:
ldr r1, [r5, #4]
bl FUN_02027044
str r0, [r4, #4]
_021DDBBC:
ldr r0, [r5, #4]
str r0, [r4, #8]
ldr r0, [r5, #8]
str r0, [r4, #0xc]
bl MOD17_021D7794
ldr r0, _021DDC2C ; =0x021C4918
mov r1, #0
strb r1, [r0, #5]
bl FUN_0201E7A0
add r0, r4, #0
add r0, #0x14
mov r1, #0xe
bl MOD17_021D7CC0
ldr r0, [r4, #0x4c]
str r0, [sp]
mov r0, #0x48
str r0, [sp, #4]
mov r0, #0x10
str r0, [sp, #8]
mov r0, #0xe
str r0, [sp, #0xc]
ldr r0, [r4, #0xc]
cmp r0, #0
add r0, sp, #0
bne _021DDBFC
ldr r1, [r4]
bl MOD17_021DD4AC
b _021DDC02
_021DDBFC:
ldr r1, [r4, #4]
bl MOD17_021DD4D0
_021DDC02:
str r0, [r4, #0x10]
add r0, r4, #0
bl MOD17_021DDD54
add r0, r4, #0
bl MOD17_021DDDFC
add r0, r4, #0
bl MOD17_021DDE50
add r0, r4, #0
bl MOD17_021DDF1C
add r0, r4, #0
bl MOD17_021DDFAC
mov r0, #1
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
_021DDC28: .word MOD17_021DDD40
_021DDC2C: .word 0x021C4918
thumb_func_end MOD17_021DDB58
thumb_func_start MOD17_021DDC30
MOD17_021DDC30: ; 0x021DDC30
push {r4, r5, lr}
sub sp, #0xc
add r4, r1, #0
bl FUN_02006278
add r5, r0, #0
bl FUN_020222AC
bl FUN_020B02C8
ldr r0, [r5, #0x10]
bl MOD17_021DD518
mov r0, #0
add r1, r0, #0
bl FUN_020222B4
add r5, #0x14
add r0, r5, #0
bl MOD17_021D7D00
ldr r0, [r4]
cmp r0, #5
bhi _021DDCEA
add r1, r0, r0
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021DDC6C: ; jump table
.short _021DDC78 - _021DDC6C - 2 ; case 0
.short _021DDC7E - _021DDC6C - 2 ; case 1
.short _021DDC9C - _021DDC6C - 2 ; case 2
.short _021DDCAC - _021DDC6C - 2 ; case 3
.short _021DDCBC - _021DDC6C - 2 ; case 4
.short _021DDCDC - _021DDC6C - 2 ; case 5
_021DDC78:
add r0, r0, #1
str r0, [r4]
b _021DDCEA
_021DDC7E:
mov r0, #6
str r0, [sp]
mov r2, #1
str r2, [sp, #4]
mov r0, #0xd
str r0, [sp, #8]
mov r0, #0
mov r1, #5
add r3, r0, #0
bl FUN_0200E1D0
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021DDCEA
_021DDC9C:
bl FUN_0200E308
cmp r0, #0
beq _021DDCEA
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021DDCEA
_021DDCAC:
ldr r1, _021DDCF0 ; =0x021C48B8
ldr r2, [r1, #0x48]
mov r1, #3
tst r1, r2
beq _021DDCEA
add r0, r0, #1
str r0, [r4]
b _021DDCEA
_021DDCBC:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0xd
str r0, [sp, #8]
mov r0, #0
mov r1, #2
add r2, r0, #0
add r3, r0, #0
bl FUN_0200E1D0
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021DDCEA
_021DDCDC:
bl FUN_0200E308
cmp r0, #0
beq _021DDCEA
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_021DDCEA:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
.align 2, 0
_021DDCF0: .word 0x021C48B8
thumb_func_end MOD17_021DDC30
thumb_func_start MOD17_021DDCF4
MOD17_021DDCF4: ; 0x021DDCF4
push {r3, r4, r5, lr}
add r5, r0, #0
bl FUN_02006278
add r4, r0, #0
ldr r0, [r4, #0x10]
bl MOD17_021DD540
add r0, r4, #0
bl MOD17_021DDEDC
add r0, r4, #0
bl MOD17_021DDF84
add r4, #0x14
add r0, r4, #0
bl MOD17_021D7CD8
bl MOD17_021D77B4
mov r0, #0
add r1, r0, #0
bl FUN_02015F10
bl FUN_02015F1C
add r0, r5, #0
bl FUN_0200627C
mov r0, #0xd
bl FUN_020168D0
mov r0, #0xe
bl FUN_020168D0
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD17_021DDCF4
thumb_func_start MOD17_021DDD40
MOD17_021DDD40: ; 0x021DDD40
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x10]
bl MOD17_021DD58C
add r4, #0x14
add r0, r4, #0
bl MOD17_021D7CF0
pop {r4, pc}
thumb_func_end MOD17_021DDD40
thumb_func_start MOD17_021DDD54
MOD17_021DDD54: ; 0x021DDD54
push {r3, r4, r5, r6, lr}
sub sp, #0x14
add r5, r0, #0
mov r0, #0x40
str r0, [sp]
mov r0, #0xe
str r0, [sp, #4]
mov r0, #0x19
mov r1, #0x7e
mov r2, #0
mov r3, #0x60
bl FUN_02006930
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0xe
str r0, [sp, #0xc]
ldr r2, [r5, #0x4c]
mov r0, #0x19
mov r1, #0x7d
mov r3, #1
bl FUN_0200687C
ldr r0, [r5, #0xc]
cmp r0, #0
bne _021DDD92
mov r1, #0x80
mov r4, #4
b _021DDD96
_021DDD92:
mov r1, #0x7f
mov r4, #3
_021DDD96:
mov r0, #0xe
str r0, [sp]
mov r0, #0x19
mov r2, #0
add r3, sp, #0x10
bl FUN_02006BDC
ldr r2, [sp, #0x10]
mov r3, #0
str r3, [sp]
add r6, r0, #0
ldrh r0, [r2]
mov r1, #1
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp, #4]
ldrh r0, [r2, #2]
add r2, #0xc
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r5, #0x4c]
bl FUN_02018148
ldr r1, [sp, #0x10]
mov r2, #0
ldrh r0, [r1]
add r3, r2, #0
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp]
ldrh r0, [r1, #2]
mov r1, #1
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp, #4]
lsl r0, r4, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r5, #0x4c]
bl FUN_020186B4
add r0, r6, #0
bl FreeToHeap
ldr r0, [r5, #0x4c]
mov r1, #1
bl FUN_0201AC68
add sp, #0x14
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD17_021DDD54
thumb_func_start MOD17_021DDDFC
MOD17_021DDDFC: ; 0x021DDDFC
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
mov r0, #0x20
str r0, [sp]
mov r0, #0xe
str r0, [sp, #4]
mov r0, #0xc
add r1, r0, #0
mov r2, #4
mov r3, #0
bl FUN_02006930
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r0, #0xe
str r0, [sp, #0xc]
ldr r2, [r4, #0x4c]
mov r0, #0xc
mov r1, #0xb
mov r3, #4
bl FUN_020068C8
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r0, #0xe
str r0, [sp, #0xc]
ldr r2, [r4, #0x4c]
mov r0, #0xc
mov r1, #0xa
mov r3, #4
bl FUN_0200687C
add sp, #0x10
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DDDFC
thumb_func_start MOD17_021DDE50
MOD17_021DDE50: ; 0x021DDE50
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
mov r0, #1
str r0, [sp]
mov r0, #0xfa
lsl r0, r0, #2
str r0, [sp, #4]
add r0, r4, #0
add r0, #0x14
mov r1, #0x19
mov r2, #0xe9
mov r3, #0
bl MOD17_021D7934
mov r0, #1
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
mov r0, #0xfa
lsl r0, r0, #2
str r0, [sp, #8]
add r0, r4, #0
add r0, #0x14
mov r1, #0x19
mov r2, #0xea
mov r3, #0
bl MOD17_021D7954
mov r0, #0xfa
lsl r0, r0, #2
str r0, [sp]
add r0, r4, #0
add r0, #0x14
mov r1, #0x19
mov r2, #0xe8
mov r3, #0
bl MOD17_021D7978
mov r0, #0xfa
lsl r0, r0, #2
str r0, [sp]
add r0, r4, #0
add r0, #0x14
mov r1, #0x19
mov r2, #0xe7
mov r3, #0
bl MOD17_021D7994
mov r0, #0x64
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0xfa
add r0, #0x14
lsl r1, r1, #2
mov r2, #0
mov r3, #0x90
bl MOD17_021D78D0
mov r1, #0x63
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [r4, r1]
mov r1, #1
bl FUN_02020238
add sp, #0xc
pop {r3, r4, pc}
thumb_func_end MOD17_021DDE50
thumb_func_start MOD17_021DDEDC
MOD17_021DDEDC: ; 0x021DDEDC
push {r4, lr}
mov r1, #0xfa
add r4, r0, #0
add r0, #0x14
lsl r1, r1, #2
bl MOD17_021D79B0
add r0, r4, #0
mov r1, #0xfa
add r0, #0x14
lsl r1, r1, #2
bl MOD17_021D79C4
add r0, r4, #0
mov r1, #0xfa
add r0, #0x14
lsl r1, r1, #2
bl MOD17_021D79D8
add r0, r4, #0
mov r1, #0xfa
add r0, #0x14
lsl r1, r1, #2
bl MOD17_021D79EC
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FUN_0201FFC8
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DDEDC
thumb_func_start MOD17_021DDF1C
MOD17_021DDF1C: ; 0x021DDF1C
push {r3, r4, lr}
sub sp, #0x14
add r4, r0, #0
mov r0, #0xe
mov r1, #1
bl FUN_02018FF4
mov r1, #0x19
lsl r1, r1, #4
str r0, [r4, r1]
mov r0, #0x12
str r0, [sp]
mov r0, #0x20
str r0, [sp, #4]
mov r0, #6
str r0, [sp, #8]
mov r0, #5
str r0, [sp, #0xc]
mov r0, #1
str r0, [sp, #0x10]
ldr r0, [r4, #0x4c]
ldr r1, [r4, r1]
mov r2, #3
mov r3, #0
bl FUN_02019064
mov r0, #0
mov r1, #0xa0
mov r2, #0xe
bl FUN_02002ED0
mov r0, #3
mov r1, #0
bl FUN_020178BC
mov r0, #0
mov r1, #2
bl FUN_020178BC
mov r0, #1
add r1, r0, #0
bl FUN_020178BC
mov r1, #3
ldr r0, [r4, #0x4c]
add r2, r1, #0
mov r3, #0
bl FUN_020179E0
add sp, #0x14
pop {r3, r4, pc}
.align 2, 0
thumb_func_end MOD17_021DDF1C
thumb_func_start MOD17_021DDF84
MOD17_021DDF84: ; 0x021DDF84
push {r4, lr}
add r4, r0, #0
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
bl FUN_02019570
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
bl FUN_02019178
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #1
bl FUN_020191A4
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DDF84
thumb_func_start MOD17_021DDFAC
MOD17_021DDFAC: ; 0x021DDFAC
push {r4, lr}
add r4, r0, #0
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #0
bl FUN_02019620
ldr r0, [r4, #0xc]
cmp r0, #0
bne _021DDFCA
add r0, r4, #0
bl MOD17_021DDFDC
b _021DDFD0
_021DDFCA:
add r0, r4, #0
bl MOD17_021DE0F4
_021DDFD0:
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
bl FUN_020191D0
pop {r4, pc}
thumb_func_end MOD17_021DDFAC
thumb_func_start MOD17_021DDFDC
MOD17_021DDFDC: ; 0x021DDFDC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
ldr r2, _021DE0EC ; =0x00000151
add r5, r0, #0
mov r0, #0
mov r1, #0x1a
mov r3, #0xd
bl FUN_0200A86C
str r0, [sp, #0x10]
cmp r0, #0
bne _021DDFF8
bl ErrorHandling
_021DDFF8:
mov r0, #0xd
bl FUN_0200AA80
add r6, r0, #0
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #5
bl FUN_02020130
mov r0, #3
lsl r0, r0, #0x10
str r0, [sp, #0x14]
mov r0, #9
lsl r0, r0, #0x10
str r0, [sp, #0x18]
mov r0, #0
str r0, [sp, #0x1c]
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, sp, #0x14
bl FUN_02020044
mov r0, #0xc
mov r1, #0xd
bl FUN_020219F4
add r7, r0, #0
ldr r0, [r5]
add r1, r7, #0
bl FUN_02027608
mov r0, #0
add r1, r7, #0
add r2, r0, #0
bl FUN_02002E14
add r4, r0, #0
mov r0, #7
str r0, [sp]
mov r1, #0
lsr r3, r4, #0x1f
add r3, r4, r3
asr r4, r3, #1
mov r3, #0x80
ldr r0, _021DE0F0 ; =0x00010200
str r1, [sp, #4]
str r0, [sp, #8]
mov r0, #0x19
str r1, [sp, #0xc]
lsl r0, r0, #4
ldr r0, [r5, r0]
add r2, r7, #0
sub r3, r3, r4
bl FUN_0201BDE0
add r0, r7, #0
bl FUN_02021A20
ldr r0, [r5]
bl FUN_0202769C
add r2, r0, #0
add r0, r6, #0
mov r1, #0
bl FUN_0200B518
mov r0, #0xc8
mov r1, #0xd
bl FUN_020219F4
add r4, r0, #0
ldr r0, [sp, #0x10]
mov r1, #0x2d
bl FUN_0200A914
add r7, r0, #0
add r0, r6, #0
add r1, r4, #0
add r2, r7, #0
bl FUN_0200B7B8
mov r0, #0
add r1, r4, #0
add r2, r0, #0
bl FUN_02002E14
add r3, r0, #0
mov r0, #0x1b
str r0, [sp]
mov r1, #0
ldr r0, _021DE0F0 ; =0x00010200
str r1, [sp, #4]
str r0, [sp, #8]
mov r0, #0x19
str r1, [sp, #0xc]
lsl r0, r0, #4
ldr r0, [r5, r0]
lsr r5, r3, #0x1f
add r5, r3, r5
asr r5, r5, #1
mov r3, #0x80
add r2, r4, #0
sub r3, r3, r5
bl FUN_0201BDE0
add r0, r4, #0
bl FUN_02021A20
add r0, r7, #0
bl FUN_02021A20
ldr r0, [sp, #0x10]
bl FUN_0200A8B8
add r0, r6, #0
bl FUN_0200AB18
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
nop
_021DE0EC: .word 0x00000151
_021DE0F0: .word 0x00010200
thumb_func_end MOD17_021DDFDC
thumb_func_start MOD17_021DE0F4
MOD17_021DE0F4: ; 0x021DE0F4
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r1, [r5, #8]
bl FUN_02020130
ldr r0, [r5, #4]
bl FUN_02027C58
add r6, r0, #0
mov r0, #0xd
bl FUN_0200AA80
add r7, r0, #0
mov r0, #0xc8
mov r1, #0xd
bl FUN_020219F4
add r4, r0, #0
ldr r0, [r5, #8]
bl FUN_02083298
add r2, r0, #0
add r0, r7, #0
mov r1, #0
bl FUN_0200B2AC
add r0, r6, #0
bl FUN_02083268
add r2, r0, #0
add r0, r7, #0
mov r1, #1
bl FUN_0200B278
ldr r0, [r5, #4]
bl FUN_02027B44
add r6, r0, #0
ldr r0, [r5, #4]
add r1, r4, #0
bl FUN_02027B0C
mov r0, #1
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
add r0, r7, #0
mov r1, #3
add r2, r4, #0
add r3, r6, #0
bl FUN_0200ABB4
mov r0, #0xd
bl FUN_020669C0
add r6, r0, #0
ldr r0, [r5, #4]
add r1, r6, #0
bl FUN_02027B78
add r0, r6, #0
bl FUN_020690E4
add r2, r0, #0
add r0, r7, #0
mov r1, #4
bl FUN_0200ACF8
add r0, r6, #0
bl FreeToHeap
ldr r2, _021DE24C ; =0x00000151
mov r0, #0
mov r1, #0x1a
mov r3, #0xd
bl FUN_0200A86C
str r0, [sp, #0x10]
cmp r0, #0
bne _021DE1A0
bl ErrorHandling
_021DE1A0:
ldr r0, [sp, #0x10]
mov r1, #0x2b
bl FUN_0200A914
add r6, r0, #0
add r0, r7, #0
add r1, r4, #0
add r2, r6, #0
bl FUN_0200B7B8
add r0, r6, #0
bl FUN_02021A20
mov r0, #0
add r1, r4, #0
add r2, r0, #0
bl FUN_02002E14
add r3, r0, #0
mov r0, #7
str r0, [sp]
mov r1, #0
lsr r6, r3, #0x1f
add r6, r3, r6
ldr r0, _021DE250 ; =0x00010200
str r1, [sp, #4]
str r0, [sp, #8]
mov r0, #0x19
str r1, [sp, #0xc]
lsl r0, r0, #4
ldr r0, [r5, r0]
asr r6, r6, #1
mov r3, #0x80
add r2, r4, #0
sub r3, r3, r6
bl FUN_0201BDE0
ldr r0, [sp, #0x10]
mov r1, #0x2c
bl FUN_0200A914
add r6, r0, #0
add r0, r7, #0
add r1, r4, #0
add r2, r6, #0
bl FUN_0200B7B8
add r0, r6, #0
bl FUN_02021A20
mov r0, #0
add r1, r4, #0
add r2, r0, #0
bl FUN_02002E14
add r3, r0, #0
mov r0, #0x1b
str r0, [sp]
mov r1, #0
ldr r0, _021DE250 ; =0x00010200
str r1, [sp, #4]
str r0, [sp, #8]
mov r0, #0x19
str r1, [sp, #0xc]
lsl r0, r0, #4
ldr r0, [r5, r0]
lsr r5, r3, #0x1f
add r5, r3, r5
asr r5, r5, #1
mov r3, #0x80
add r2, r4, #0
sub r3, r3, r5
bl FUN_0201BDE0
add r0, r4, #0
bl FUN_02021A20
ldr r0, [sp, #0x10]
bl FUN_0200A8B8
add r0, r7, #0
bl FUN_0200AB18
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_021DE24C: .word 0x00000151
_021DE250: .word 0x00010200
thumb_func_end MOD17_021DE0F4
.section .rodata
; 0x021DE254
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
.byte 0xCE, 0x02, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x0F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x01, 0x00, 0x02, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x6F, 0xFF, 0xFF, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1D, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x01
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00