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

8800 lines
158 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.section .text
.balign 4, 0
thumb_func_start MOD15_021D74E0
MOD15_021D74E0: ; 0x021D74E0
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r1, [r4]
add r5, r0, #0
cmp r1, #0
beq _021D74F2
cmp r1, #1
beq _021D752A
b _021D7552
_021D74F2:
mov r1, #0
mov r0, #0x3e
add r2, r1, #0
bl FUN_0200433C
mov r2, #2
mov r0, #3
mov r1, #0x22
lsl r2, r2, #0xe
bl FUN_0201681C
mov r2, #0xa
mov r0, #3
mov r1, #0x23
lsl r2, r2, #0xe
bl FUN_0201681C
add r0, r5, #0
bl MOD15_021D7628
ldr r0, [r0, #0x14]
mov r1, #0
bl MOD15_021D8900
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D7552
_021D752A:
bl FUN_02006278
add r4, r0, #0
ldr r0, [r4, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D7552
ldr r0, [r4, #4]
cmp r0, #2
bne _021D7548
ldr r0, [r4, #0x14]
bl MOD15_021D9538
b _021D754A
_021D7548:
mov r0, #0
_021D754A:
add r4, #0x64
strb r0, [r4]
mov r0, #1
pop {r3, r4, r5, pc}
_021D7552:
mov r0, #0
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D7558
MOD15_021D7558: ; 0x021D7558
push {r4, lr}
bl FUN_02006278
add r4, r0, #0
ldr r0, _021D7594 ; =0x021C48B8
ldr r1, [r0, #0x48]
strh r1, [r4, #0x30]
ldr r1, [r0, #0x44]
strh r1, [r4, #0x32]
ldr r0, [r0, #0x4c]
strh r0, [r4, #0x34]
ldr r0, [r4, #0x40]
bl FUN_02022144
ldr r2, [r4, #0x2c]
cmp r2, #0
beq _021D7586
add r0, r4, #0
add r4, #0x28
add r1, r4, #0
blx r2
mov r0, #0
pop {r4, pc}
_021D7586:
add r1, r4, #0
ldr r2, [r4, #0x20]
add r0, r4, #0
add r1, #0x1c
blx r2
pop {r4, pc}
nop
_021D7594: .word 0x021C48B8
thumb_func_start MOD15_021D7598
MOD15_021D7598: ; 0x021D7598
push {r4, lr}
add r4, r2, #0
cmp r1, #3
bhi _021D7600
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021D75AC: ; jump table
.short _021D75B4 - _021D75AC - 2 ; case 0
.short _021D75D4 - _021D75AC - 2 ; case 1
.short _021D75F6 - _021D75AC - 2 ; case 2
.short _021D75D4 - _021D75AC - 2 ; case 3
_021D75B4:
str r0, [r4, #0x38]
cmp r0, #2
beq _021D75C0
cmp r0, #3
beq _021D75CA
pop {r4, pc}
_021D75C0:
ldr r0, [r4, #0x14]
mov r1, #0x19
bl MOD15_021D8900
pop {r4, pc}
_021D75CA:
ldr r0, [r4, #0x14]
mov r1, #0x1a
bl MOD15_021D8900
pop {r4, pc}
_021D75D4:
cmp r0, #2
beq _021D75DE
cmp r0, #3
beq _021D75E8
b _021D75F0
_021D75DE:
ldr r0, [r4, #0x14]
mov r1, #0x1b
bl MOD15_021D8900
b _021D75F0
_021D75E8:
ldr r0, [r4, #0x14]
mov r1, #0x1c
bl MOD15_021D8900
_021D75F0:
mov r0, #4
str r0, [r4, #0x38]
pop {r4, pc}
_021D75F6:
sub r1, r0, #2
cmp r1, #1
bhi _021D7604
str r0, [r4, #0x38]
pop {r4, pc}
_021D7600:
mov r0, #4
str r0, [r4, #0x38]
_021D7604:
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021D7608
MOD15_021D7608: ; 0x021D7608
push {r4, lr}
add r4, r0, #0
bl FUN_02006278
add r1, r4, #0
bl MOD15_021D7774
mov r0, #0x22
bl FUN_020168D0
mov r0, #0x23
bl FUN_020168D0
mov r0, #1
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021D7628
MOD15_021D7628: ; 0x021D7628
push {r3, r4, r5, lr}
add r5, r0, #0
mov r1, #0x68
mov r2, #0x22
bl FUN_02006268
add r4, r0, #0
add r0, r5, #0
bl FUN_0200628C
str r0, [r4]
bl FUN_0208540C
str r0, [r4, #4]
add r1, r4, #0
add r2, r4, #0
ldr r0, [r4]
add r1, #0x10
add r2, #8
bl FUN_02085428
ldr r0, [r4, #4]
cmp r0, #2
bne _021D7664
add r0, r4, #0
add r1, r4, #0
add r0, #0x60
add r1, #8
bl MOD15_021D76C4
_021D7664:
ldr r1, [r4]
mov r0, #0x22
bl FUN_02088F0C
str r0, [r4, #0x18]
ldr r1, [r4, #0x18]
add r0, r4, #0
bl MOD15_021D87F8
str r0, [r4, #0x14]
mov r0, #0x22
str r0, [sp]
ldr r0, _021D76B4 ; =0x021DB880
ldr r2, _021D76B8 ; =MOD15_021D7598
mov r1, #5
add r3, r4, #0
bl FUN_020220C4
str r0, [r4, #0x40]
mov r1, #0
str r1, [r4, #0x44]
add r0, r4, #0
str r1, [r4, #0x48]
add r0, #0x65
strb r1, [r0]
str r1, [r4, #0x2c]
ldr r0, _021D76BC ; =MOD15_021D779C
str r1, [r4, #0x28]
str r0, [r4, #0x20]
add r0, r4, #0
str r1, [r4, #0x1c]
add r0, #0x4e
strh r1, [r0]
ldr r1, _021D76C0 ; =MOD15_021D83BC
add r0, r4, #0
bl MOD15_021D83AC
add r0, r4, #0
pop {r3, r4, r5, pc}
nop
_021D76B4: .word 0x021DB880
_021D76B8: .word MOD15_021D7598
_021D76BC: .word MOD15_021D779C
_021D76C0: .word MOD15_021D83BC
thumb_func_start MOD15_021D76C4
MOD15_021D76C4: ; 0x021D76C4
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
bl FUN_02013920
strh r0, [r5]
mov r0, #0
ldrsh r0, [r5, r0]
bl FUN_02013974
strb r0, [r5, #3]
add r0, r4, #0
bl FUN_02013924
strb r0, [r5, #2]
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D76E8
MOD15_021D76E8: ; 0x021D76E8
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #2
add r4, r1, #0
ldrsb r1, [r5, r0]
add r1, r1, #1
strb r1, [r5, #2]
ldrsb r1, [r5, r0]
mov r0, #3
ldrsb r0, [r5, r0]
cmp r1, r0
blt _021D771C
mov r1, #0
strb r1, [r5, #2]
ldrsh r0, [r5, r1]
add r0, r0, #1
strh r0, [r5]
ldrsh r0, [r5, r1]
cmp r0, #5
blt _021D7712
strh r1, [r5]
_021D7712:
mov r0, #0
ldrsh r0, [r5, r0]
bl FUN_02013974
strb r0, [r5, #3]
_021D771C:
mov r1, #0
mov r2, #2
ldrsh r1, [r5, r1]
ldrsb r2, [r5, r2]
add r0, r4, #0
bl FUN_02013980
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D772C
MOD15_021D772C: ; 0x021D772C
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #2
add r4, r1, #0
ldrsb r1, [r5, r0]
sub r1, r1, #1
strb r1, [r5, #2]
ldrsb r0, [r5, r0]
cmp r0, #0
bge _021D7764
mov r0, #0
ldrsh r1, [r5, r0]
sub r1, r1, #1
strh r1, [r5]
ldrsh r0, [r5, r0]
cmp r0, #0
bge _021D7752
mov r0, #4
strh r0, [r5]
_021D7752:
mov r0, #0
ldrsh r0, [r5, r0]
bl FUN_02013974
strb r0, [r5, #3]
mov r0, #3
ldrsb r0, [r5, r0]
sub r0, r0, #1
strb r0, [r5, #2]
_021D7764:
mov r1, #0
mov r2, #2
ldrsh r1, [r5, r1]
ldrsb r2, [r5, r2]
add r0, r4, #0
bl FUN_02013980
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D7774
MOD15_021D7774: ; 0x021D7774
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x40]
add r4, r1, #0
bl FUN_0202212C
ldr r0, [r5, #0x14]
bl MOD15_021D8888
ldr r0, [r5, #0x18]
bl FUN_02088F4C
add r0, r4, #0
bl FUN_0200627C
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D7794
MOD15_021D7794: ; 0x021D7794
str r1, [r0, #0x20]
mov r1, #0
str r1, [r0, #0x1c]
bx lr
thumb_func_start MOD15_021D779C
MOD15_021D779C: ; 0x021D779C
push {r3, lr}
ldr r2, [r0, #4]
lsl r3, r2, #2
ldr r2, _021D77AC ; =0x021DB874
ldr r2, [r2, r3]
blx r2
pop {r3, pc}
nop
_021D77AC: .word 0x021DB874
thumb_func_start MOD15_021D77B0
MOD15_021D77B0: ; 0x021D77B0
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4]
cmp r0, #0
beq _021D77C6
cmp r0, #1
beq _021D7850
cmp r0, #2
beq _021D7864
b _021D7876
_021D77C6:
ldr r1, [r5, #0x38]
cmp r1, #0
bne _021D77D6
add r0, r5, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #0
bne _021D77EC
_021D77D6:
cmp r1, #1
bne _021D77E4
add r0, r5, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #1
bne _021D77EC
_021D77E4:
ldrh r0, [r5, #0x30]
mov r1, #4
tst r1, r0
beq _021D77F6
_021D77EC:
ldr r1, _021D787C ; =MOD15_021D8698
add r0, r5, #0
bl MOD15_021D83AC
b _021D7876
_021D77F6:
mov r1, #0x88
tst r1, r0
beq _021D7818
ldr r0, _021D7880 ; =0x000005DC
bl FUN_020054C8
add r0, r5, #0
mov r1, #0
add r0, #0x4c
strh r1, [r0]
ldr r0, [r5, #0x14]
mov r1, #4
bl MOD15_021D8900
mov r0, #1
str r0, [r4]
b _021D7876
_021D7818:
mov r1, #2
tst r1, r0
beq _021D782E
ldr r0, _021D7880 ; =0x000005DC
bl FUN_020054C8
ldr r1, _021D7884 ; =MOD15_021D851C
add r0, r5, #0
bl MOD15_021D83AC
b _021D7876
_021D782E:
mov r1, #1
tst r0, r1
beq _021D7876
ldr r0, _021D7880 ; =0x000005DC
bl FUN_020054C8
add r0, r5, #0
mov r1, #0
add r0, #0x50
strh r1, [r0]
ldr r0, [r5, #0x14]
mov r1, #6
bl MOD15_021D8900
mov r0, #2
str r0, [r4]
b _021D7876
_021D7850:
ldr r0, [r5, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D7876
ldr r1, _021D7888 ; =MOD15_021D7BC8
add r0, r5, #0
bl MOD15_021D7794
b _021D7876
_021D7864:
ldr r0, [r5, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D7876
ldr r1, _021D788C ; =MOD15_021D7D00
add r0, r5, #0
bl MOD15_021D7794
_021D7876:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_021D787C: .word MOD15_021D8698
_021D7880: .word 0x000005DC
_021D7884: .word MOD15_021D851C
_021D7888: .word MOD15_021D7BC8
_021D788C: .word MOD15_021D7D00
thumb_func_start MOD15_021D7890
MOD15_021D7890: ; 0x021D7890
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4]
cmp r0, #0
beq _021D78A6
cmp r0, #1
beq _021D7980
cmp r0, #2
beq _021D7994
b _021D79A6
_021D78A6:
ldr r1, [r5, #0x38]
cmp r1, #0
bne _021D78B6
add r0, r5, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #0
bne _021D78CC
_021D78B6:
cmp r1, #1
bne _021D78C4
add r0, r5, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #1
bne _021D78CC
_021D78C4:
ldrh r0, [r5, #0x30]
mov r1, #4
tst r1, r0
beq _021D78D6
_021D78CC:
ldr r1, _021D79AC ; =MOD15_021D8698
add r0, r5, #0
bl MOD15_021D83AC
b _021D79A6
_021D78D6:
mov r1, #0x88
tst r1, r0
beq _021D78F8
ldr r0, _021D79B0 ; =0x000005DC
bl FUN_020054C8
add r0, r5, #0
mov r1, #0
add r0, #0x4c
strh r1, [r0]
ldr r0, [r5, #0x14]
mov r1, #4
bl MOD15_021D8900
mov r0, #1
str r0, [r4]
b _021D79A6
_021D78F8:
mov r1, #0x20
tst r1, r0
beq _021D7920
add r0, r5, #0
add r0, #0x4e
ldrh r0, [r0]
cmp r0, #0
beq _021D79A6
ldr r0, _021D79B0 ; =0x000005DC
bl FUN_020054C8
add r0, r5, #0
mov r1, #0
add r0, #0x4e
strh r1, [r0]
ldr r0, [r5, #0x14]
mov r1, #0xc
bl MOD15_021D8900
b _021D79A6
_021D7920:
mov r1, #0x10
tst r1, r0
beq _021D7948
add r0, r5, #0
add r0, #0x4e
ldrh r0, [r0]
cmp r0, #0
bne _021D79A6
ldr r0, _021D79B0 ; =0x000005DC
bl FUN_020054C8
add r0, r5, #0
mov r1, #1
add r0, #0x4e
strh r1, [r0]
ldr r0, [r5, #0x14]
mov r1, #0xc
bl MOD15_021D8900
b _021D79A6
_021D7948:
mov r1, #2
tst r1, r0
beq _021D795E
ldr r0, _021D79B0 ; =0x000005DC
bl FUN_020054C8
ldr r1, _021D79B4 ; =MOD15_021D851C
add r0, r5, #0
bl MOD15_021D83AC
b _021D79A6
_021D795E:
mov r1, #1
tst r0, r1
beq _021D79A6
ldr r0, _021D79B0 ; =0x000005DC
bl FUN_020054C8
add r0, r5, #0
mov r1, #0
add r0, #0x50
strh r1, [r0]
ldr r0, [r5, #0x14]
mov r1, #6
bl MOD15_021D8900
mov r0, #2
str r0, [r4]
b _021D79A6
_021D7980:
ldr r0, [r5, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D79A6
ldr r1, _021D79B8 ; =MOD15_021D7BC8
add r0, r5, #0
bl MOD15_021D7794
b _021D79A6
_021D7994:
ldr r0, [r5, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D79A6
ldr r1, _021D79BC ; =MOD15_021D7D00
add r0, r5, #0
bl MOD15_021D7794
_021D79A6:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_021D79AC: .word MOD15_021D8698
_021D79B0: .word 0x000005DC
_021D79B4: .word MOD15_021D851C
_021D79B8: .word MOD15_021D7BC8
_021D79BC: .word MOD15_021D7D00
thumb_func_start MOD15_021D79C0
MOD15_021D79C0: ; 0x021D79C0
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r0, #0
ldr r0, [r5]
cmp r0, #4
bhi _021D7A3C
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D79D8: ; jump table
.short _021D79E2 - _021D79D8 - 2 ; case 0
.short _021D79F2 - _021D79D8 - 2 ; case 1
.short _021D7B76 - _021D79D8 - 2 ; case 2
.short _021D7B88 - _021D79D8 - 2 ; case 3
.short _021D7B9C - _021D79D8 - 2 ; case 4
_021D79E2:
ldr r0, [r4, #0x14]
bl MOD15_021D9538
add r1, r4, #0
add r1, #0x64
strb r0, [r1]
mov r0, #1
str r0, [r5]
_021D79F2:
ldr r1, [r4, #0x38]
cmp r1, #0
bne _021D7A02
add r0, r4, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #0
bne _021D7A18
_021D7A02:
cmp r1, #1
bne _021D7A10
add r0, r4, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #1
bne _021D7A18
_021D7A10:
ldrh r0, [r4, #0x30]
mov r1, #4
tst r1, r0
beq _021D7A22
_021D7A18:
ldr r1, _021D7BB4 ; =MOD15_021D8698
add r0, r4, #0
bl MOD15_021D83AC
b _021D7BAE
_021D7A22:
mov r1, #0x40
tst r1, r0
beq _021D7A5C
add r0, r4, #0
add r0, #0x64
ldrb r0, [r0]
cmp r0, #0
beq _021D7A3C
add r0, r4, #0
add r0, #0x4e
ldrh r0, [r0]
cmp r0, #0
bne _021D7A3E
_021D7A3C:
b _021D7BAE
_021D7A3E:
ldr r0, _021D7BB8 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
add r0, #0x4e
ldrh r0, [r0]
sub r1, r0, #1
add r0, r4, #0
add r0, #0x4e
strh r1, [r0]
ldr r0, [r4, #0x14]
mov r1, #0xc
bl MOD15_021D8900
b _021D7BAE
_021D7A5C:
mov r1, #0x80
tst r0, r1
beq _021D7AAC
ldr r0, _021D7BB8 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
add r0, #0x64
ldrb r2, [r0]
cmp r2, #0
beq _021D7A96
add r0, r4, #0
add r0, #0x4e
ldrh r1, [r0]
sub r0, r2, #1
cmp r1, r0
bge _021D7A96
add r0, r4, #0
add r0, #0x4e
ldrh r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0x4e
strh r1, [r0]
ldr r0, [r4, #0x14]
mov r1, #0xc
bl MOD15_021D8900
b _021D7AAC
_021D7A96:
add r0, r4, #0
mov r1, #0
add r0, #0x4c
strh r1, [r0]
ldr r0, [r4, #0x14]
mov r1, #4
bl MOD15_021D8900
mov r0, #3
str r0, [r5]
b _021D7BAE
_021D7AAC:
ldrh r1, [r4, #0x30]
mov r0, #8
tst r0, r1
bne _021D7AC6
mov r0, #1
add r2, r1, #0
and r2, r0
beq _021D7AE2
add r0, r4, #0
add r0, #0x64
ldrb r0, [r0]
cmp r0, #0
bne _021D7AE2
_021D7AC6:
ldr r0, _021D7BB8 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
mov r1, #0
add r0, #0x4c
strh r1, [r0]
ldr r0, [r4, #0x14]
mov r1, #4
bl MOD15_021D8900
mov r0, #3
str r0, [r5]
b _021D7BAE
_021D7AE2:
ldrh r0, [r4, #0x34]
mov r3, #0x20
tst r3, r0
beq _021D7B12
ldr r0, _021D7BB8 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
mov r1, #0
add r0, #0x4e
strh r1, [r0]
add r0, r4, #0
add r1, r4, #0
add r0, #0x60
add r1, #8
bl MOD15_021D772C
ldr r0, [r4, #0x14]
mov r1, #3
bl MOD15_021D8900
mov r0, #2
str r0, [r5]
b _021D7BAE
_021D7B12:
mov r3, #0x10
tst r0, r3
beq _021D7B40
ldr r0, _021D7BB8 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
mov r1, #0
add r0, #0x4e
strh r1, [r0]
add r0, r4, #0
add r1, r4, #0
add r0, #0x60
add r1, #8
bl MOD15_021D76E8
ldr r0, [r4, #0x14]
mov r1, #3
bl MOD15_021D8900
mov r0, #2
str r0, [r5]
b _021D7BAE
_021D7B40:
mov r0, #2
tst r0, r1
beq _021D7B56
ldr r0, _021D7BB8 ; =0x000005DC
bl FUN_020054C8
ldr r1, _021D7BBC ; =MOD15_021D851C
add r0, r4, #0
bl MOD15_021D83AC
b _021D7BAE
_021D7B56:
cmp r2, #0
beq _021D7BAE
ldr r0, _021D7BB8 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
mov r1, #0
add r0, #0x50
strh r1, [r0]
ldr r0, [r4, #0x14]
mov r1, #6
bl MOD15_021D8900
mov r0, #4
str r0, [r5]
b _021D7BAE
_021D7B76:
ldr r0, [r4, #0x14]
mov r1, #3
bl MOD15_021D8970
cmp r0, #0
beq _021D7BAE
mov r0, #0
str r0, [r5]
b _021D7BAE
_021D7B88:
ldr r0, [r4, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D7BAE
ldr r1, _021D7BC0 ; =MOD15_021D7BC8
add r0, r4, #0
bl MOD15_021D7794
b _021D7BAE
_021D7B9C:
ldr r0, [r4, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D7BAE
ldr r1, _021D7BC4 ; =MOD15_021D7D00
add r0, r4, #0
bl MOD15_021D7794
_021D7BAE:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_021D7BB4: .word MOD15_021D8698
_021D7BB8: .word 0x000005DC
_021D7BBC: .word MOD15_021D851C
_021D7BC0: .word MOD15_021D7BC8
_021D7BC4: .word MOD15_021D7D00
thumb_func_start MOD15_021D7BC8
MOD15_021D7BC8: ; 0x021D7BC8
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r1, [r5]
add r4, r0, #0
cmp r1, #5
bls _021D7BD6
b _021D7CE8
_021D7BD6:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021D7BE2: ; jump table
.short _021D7BEE - _021D7BE2 - 2 ; case 0
.short _021D7CB8 - _021D7BE2 - 2 ; case 1
.short _021D7CC4 - _021D7BE2 - 2 ; case 2
.short _021D7CD0 - _021D7BE2 - 2 ; case 3
.short _021D7CD0 - _021D7BE2 - 2 ; case 4
.short _021D7CD6 - _021D7BE2 - 2 ; case 5
_021D7BEE:
ldr r0, [r4, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D7CE8
ldr r1, [r4, #0x38]
cmp r1, #0
bne _021D7C08
add r0, r4, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #0
bne _021D7C1E
_021D7C08:
cmp r1, #1
bne _021D7C16
add r0, r4, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #1
bne _021D7C1E
_021D7C16:
ldrh r0, [r4, #0x30]
mov r1, #4
tst r1, r0
beq _021D7C28
_021D7C1E:
ldr r1, _021D7CEC ; =MOD15_021D8698
add r0, r4, #0
bl MOD15_021D83AC
b _021D7CE8
_021D7C28:
mov r1, #0x30
tst r1, r0
beq _021D7C4E
ldr r0, _021D7CF0 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
add r0, #0x4c
ldrh r1, [r0]
mov r0, #1
eor r1, r0
add r0, r4, #0
add r0, #0x4c
strh r1, [r0]
ldr r0, [r4, #0x14]
mov r1, #0xd
bl MOD15_021D8900
b _021D7CE8
_021D7C4E:
mov r1, #8
tst r1, r0
beq _021D7C6C
ldr r0, _021D7CF0 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
mov r1, #0
add r0, #0x4c
strh r1, [r0]
ldr r0, [r4, #0x14]
mov r1, #0xd
bl MOD15_021D8900
b _021D7CE8
_021D7C6C:
mov r1, #0x40
tst r1, r0
beq _021D7C86
ldr r0, _021D7CF0 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r4, #0x14]
mov r1, #5
bl MOD15_021D8900
mov r0, #5
str r0, [r5]
b _021D7CE8
_021D7C86:
mov r1, #1
tst r1, r0
beq _021D7CA6
ldr r0, _021D7CF0 ; =0x000005DC
bl FUN_020054C8
add r4, #0x4c
ldrh r0, [r4]
cmp r0, #0
bne _021D7CA0
mov r0, #1
str r0, [r5]
b _021D7CE8
_021D7CA0:
mov r0, #2
str r0, [r5]
b _021D7CE8
_021D7CA6:
mov r1, #2
tst r0, r1
beq _021D7CE8
ldr r0, _021D7CF0 ; =0x000005DC
bl FUN_020054C8
mov r0, #2
str r0, [r5]
b _021D7CE8
_021D7CB8:
mov r1, #3
str r1, [r5]
ldr r1, _021D7CF4 ; =MOD15_021D83F0
bl MOD15_021D83AC
b _021D7CE8
_021D7CC4:
mov r1, #4
str r1, [r5]
ldr r1, _021D7CF8 ; =MOD15_021D851C
bl MOD15_021D83AC
b _021D7CE8
_021D7CD0:
mov r0, #0
str r0, [r5]
b _021D7CE8
_021D7CD6:
ldr r0, [r4, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D7CE8
ldr r1, _021D7CFC ; =MOD15_021D779C
add r0, r4, #0
bl MOD15_021D7794
_021D7CE8:
mov r0, #0
pop {r3, r4, r5, pc}
.align 2, 0
_021D7CEC: .word MOD15_021D8698
_021D7CF0: .word 0x000005DC
_021D7CF4: .word MOD15_021D83F0
_021D7CF8: .word MOD15_021D851C
_021D7CFC: .word MOD15_021D779C
thumb_func_start MOD15_021D7D00
MOD15_021D7D00: ; 0x021D7D00
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4]
cmp r0, #0
beq _021D7D18
cmp r0, #1
beq _021D7E0C
cmp r0, #2
bne _021D7D16
b _021D7E20
_021D7D16:
b _021D7E30
_021D7D18:
ldr r0, [r5, #0x14]
mov r1, #0xf
bl MOD15_021D8970
cmp r0, #0
bne _021D7D26
b _021D7E30
_021D7D26:
ldr r1, [r5, #0x38]
cmp r1, #0
bne _021D7D36
add r0, r5, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #0
bne _021D7D4C
_021D7D36:
cmp r1, #1
bne _021D7D44
add r0, r5, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #1
bne _021D7D4C
_021D7D44:
ldrh r0, [r5, #0x30]
mov r1, #4
tst r1, r0
beq _021D7D78
_021D7D4C:
ldr r0, _021D7E34 ; =0x000005E4
bl FUN_020054C8
add r0, r5, #0
add r0, #0x65
ldrb r1, [r0]
mov r0, #1
eor r1, r0
add r0, r5, #0
add r0, #0x65
strb r1, [r0]
add r0, r5, #0
mov r1, #0
add r0, #0x50
strh r1, [r0]
ldr r0, [r5, #0x14]
mov r1, #0x18
bl MOD15_021D8900
mov r0, #2
str r0, [r4]
b _021D7E30
_021D7D78:
mov r1, #2
tst r1, r0
beq _021D7D96
ldr r0, _021D7E38 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r5, #0x14]
mov r1, #7
bl MOD15_021D8900
ldr r0, _021D7E3C ; =MOD15_021D779C
str r0, [r5, #0x24]
mov r0, #1
str r0, [r4]
b _021D7E30
_021D7D96:
mov r1, #1
tst r0, r1
beq _021D7DF2
add r0, r5, #0
add r0, #0x50
ldrh r0, [r0]
cmp r0, #0xfe
bne _021D7DBE
ldr r0, _021D7E38 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r5, #0x14]
mov r1, #7
bl MOD15_021D8900
ldr r0, _021D7E3C ; =MOD15_021D779C
str r0, [r5, #0x24]
mov r0, #1
str r0, [r4]
b _021D7E30
_021D7DBE:
add r0, r5, #0
bl MOD15_021D7E48
cmp r0, #0
beq _021D7DEA
ldr r0, _021D7E38 ; =0x000005DC
bl FUN_020054C8
add r0, r5, #0
add r0, #0x54
add r1, r5, #0
bl MOD15_021D7FE4
ldr r0, _021D7E40 ; =MOD15_021D8044
mov r1, #8
str r0, [r5, #0x24]
ldr r0, [r5, #0x14]
bl MOD15_021D8900
mov r0, #1
str r0, [r4]
b _021D7E30
_021D7DEA:
ldr r0, _021D7E44 ; =0x000005F2
bl FUN_020054C8
b _021D7E30
_021D7DF2:
add r0, r5, #0
bl MOD15_021D7E80
cmp r0, #0
beq _021D7E30
ldr r0, _021D7E38 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r5, #0x14]
mov r1, #0xe
bl MOD15_021D8900
b _021D7E30
_021D7E0C:
ldr r0, [r5, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D7E30
ldr r1, [r5, #0x24]
add r0, r5, #0
bl MOD15_021D7794
b _021D7E30
_021D7E20:
ldr r0, [r5, #0x14]
mov r1, #0x18
bl MOD15_021D8970
cmp r0, #0
beq _021D7E30
mov r0, #0
str r0, [r4]
_021D7E30:
mov r0, #0
pop {r3, r4, r5, pc}
.align 2, 0
_021D7E34: .word 0x000005E4
_021D7E38: .word 0x000005DC
_021D7E3C: .word MOD15_021D779C
_021D7E40: .word MOD15_021D8044
_021D7E44: .word 0x000005F2
thumb_func_start MOD15_021D7E48
MOD15_021D7E48: ; 0x021D7E48
push {r3, lr}
add r1, r0, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #0
ldr r0, [r1, #0x18]
bne _021D7E6A
add r1, #0x50
ldrh r1, [r1]
bl FUN_020892C4
cmp r0, #0
beq _021D7E66
mov r0, #1
pop {r3, pc}
_021D7E66:
mov r0, #0
pop {r3, pc}
_021D7E6A:
add r1, #0x50
ldrh r1, [r1]
bl FUN_02089300
cmp r0, #0
beq _021D7E7A
mov r0, #1
pop {r3, pc}
_021D7E7A:
mov r0, #0
pop {r3, pc}
.align 2, 0
thumb_func_start MOD15_021D7E80
MOD15_021D7E80: ; 0x021D7E80
push {r3, lr}
add r1, r0, #0
add r1, #0x65
ldrb r1, [r1]
lsl r2, r1, #2
ldr r1, _021D7E94 ; =0x021DB86C
ldr r1, [r1, r2]
blx r1
pop {r3, pc}
nop
_021D7E94: .word 0x021DB86C
thumb_func_start MOD15_021D7E98
MOD15_021D7E98: ; 0x021D7E98
push {r4, lr}
add r4, r0, #0
add r0, #0x50
ldrh r2, [r0]
add r1, r2, #0
cmp r2, #0xfe
bne _021D7EA8
mov r1, #0xc
_021D7EA8:
cmp r2, #0xfe
beq _021D7F04
add r0, r4, #0
add r0, #0x52
strh r2, [r0]
ldrh r0, [r4, #0x34]
mov r2, #0x40
tst r2, r0
beq _021D7EC8
ldr r0, _021D7F40 ; =0x021DB894
lsl r1, r1, #2
ldrb r0, [r0, r1]
add r4, #0x50
strh r0, [r4]
mov r0, #1
pop {r4, pc}
_021D7EC8:
mov r2, #0x80
tst r2, r0
beq _021D7EDC
ldr r0, _021D7F44 ; =0x021DB895
lsl r1, r1, #2
ldrb r0, [r0, r1]
add r4, #0x50
strh r0, [r4]
mov r0, #1
pop {r4, pc}
_021D7EDC:
mov r2, #0x20
tst r2, r0
beq _021D7EF0
ldr r0, _021D7F48 ; =0x021DB896
lsl r1, r1, #2
ldrb r0, [r0, r1]
add r4, #0x50
strh r0, [r4]
mov r0, #1
pop {r4, pc}
_021D7EF0:
mov r2, #0x10
tst r0, r2
beq _021D7F3C
ldr r0, _021D7F4C ; =0x021DB897
lsl r1, r1, #2
ldrb r0, [r0, r1]
add r4, #0x50
strh r0, [r4]
mov r0, #1
pop {r4, pc}
_021D7F04:
ldrh r1, [r4, #0x34]
mov r0, #0x40
tst r0, r1
beq _021D7F22
add r0, r4, #0
add r0, #0x52
ldrh r0, [r0]
mov r1, #3
bl _s32_div_f
add r1, #9
add r4, #0x50
strh r1, [r4]
mov r0, #1
pop {r4, pc}
_021D7F22:
mov r0, #0x80
tst r0, r1
beq _021D7F3C
add r0, r4, #0
add r0, #0x52
ldrh r0, [r0]
mov r1, #3
bl _s32_div_f
add r4, #0x50
strh r1, [r4]
mov r0, #1
pop {r4, pc}
_021D7F3C:
mov r0, #0
pop {r4, pc}
.align 2, 0
_021D7F40: .word 0x021DB894
_021D7F44: .word 0x021DB895
_021D7F48: .word 0x021DB896
_021D7F4C: .word 0x021DB897
thumb_func_start MOD15_021D7F50
MOD15_021D7F50: ; 0x021D7F50
push {r4, lr}
add r4, r0, #0
add r0, #0x50
ldrh r0, [r0]
cmp r0, #0xfe
beq _021D7FAE
ldrh r1, [r4, #0x34]
mov r3, #0x40
mov r2, #0xff
tst r3, r1
beq _021D7F6E
bl MOD15_021DB7C4
add r2, r0, #0
b _021D7F96
_021D7F6E:
mov r3, #0x80
tst r3, r1
beq _021D7F7C
bl MOD15_021DB7E0
add r2, r0, #0
b _021D7F96
_021D7F7C:
mov r3, #0x10
tst r3, r1
beq _021D7F8A
bl MOD15_021DB818
add r2, r0, #0
b _021D7F96
_021D7F8A:
mov r3, #0x20
tst r1, r3
beq _021D7F96
bl MOD15_021DB7FC
add r2, r0, #0
_021D7F96:
cmp r2, #0xff
beq _021D7FE0
add r0, r4, #0
add r0, #0x50
ldrh r1, [r0]
add r0, r4, #0
add r0, #0x52
strh r1, [r0]
add r4, #0x50
strh r2, [r4]
mov r0, #1
pop {r4, pc}
_021D7FAE:
ldrh r1, [r4, #0x34]
mov r0, #0x40
tst r0, r1
beq _021D7FC8
add r0, r4, #0
add r0, #0x52
ldrh r0, [r0]
bl MOD15_021DB850
add r4, #0x50
strh r0, [r4]
mov r0, #1
pop {r4, pc}
_021D7FC8:
mov r0, #0x80
tst r0, r1
beq _021D7FE0
add r0, r4, #0
add r0, #0x52
ldrh r0, [r0]
bl MOD15_021DB834
add r4, #0x50
strh r0, [r4]
mov r0, #1
pop {r4, pc}
_021D7FE0:
mov r0, #0
pop {r4, pc}
thumb_func_start MOD15_021D7FE4
MOD15_021D7FE4: ; 0x021D7FE4
push {r4, lr}
add r4, r0, #0
mov r0, #0
strh r0, [r4]
strb r0, [r4, #6]
strb r0, [r4, #7]
add r0, r1, #0
bl MOD15_021D8744
strh r0, [r4, #4]
mov r0, #0
str r0, [r4, #8]
ldrh r2, [r4, #4]
cmp r2, #0xa
bls _021D8016
add r1, r2, #0
sub r1, #0xa
lsr r0, r1, #0x1f
add r0, r1, r0
asr r1, r0, #1
mov r0, #1
and r0, r2
add r0, r1, r0
strh r0, [r4, #2]
pop {r4, pc}
_021D8016:
strh r0, [r4, #2]
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021D801C
MOD15_021D801C: ; 0x021D801C
ldrb r1, [r0, #6]
ldrb r0, [r0, #7]
lsl r0, r0, #1
add r0, r1, r0
bx lr
.align 2, 0
thumb_func_start MOD15_021D8028
MOD15_021D8028: ; 0x021D8028
push {r4, lr}
add r4, r0, #0
bl MOD15_021D801C
ldrh r1, [r4]
lsl r1, r1, #1
add r0, r1, r0
pop {r4, pc}
thumb_func_start MOD15_021D8038
MOD15_021D8038: ; 0x021D8038
ldr r0, [r0, #8]
bx lr
thumb_func_start MOD15_021D803C
MOD15_021D803C: ; 0x021D803C
ldrh r0, [r0]
bx lr
thumb_func_start MOD15_021D8040
MOD15_021D8040: ; 0x021D8040
ldrh r0, [r0, #2]
bx lr
thumb_func_start MOD15_021D8044
MOD15_021D8044: ; 0x021D8044
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r0, #0
ldr r0, [r5]
cmp r0, #3
bls _021D8052
b _021D81B4
_021D8052:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D805E: ; jump table
.short _021D8066 - _021D805E - 2 ; case 0
.short _021D8172 - _021D805E - 2 ; case 1
.short _021D8184 - _021D805E - 2 ; case 2
.short _021D819E - _021D805E - 2 ; case 3
_021D8066:
ldr r0, [r4, #0x38]
cmp r0, #0
bne _021D8076
add r1, r4, #0
add r1, #0x65
ldrb r1, [r1]
cmp r1, #0
bne _021D808C
_021D8076:
cmp r0, #1
bne _021D8084
add r1, r4, #0
add r1, #0x65
ldrb r1, [r1]
cmp r1, #1
bne _021D808C
_021D8084:
ldrh r2, [r4, #0x30]
mov r1, #4
tst r1, r2
beq _021D80BC
_021D808C:
ldr r0, _021D81B8 ; =0x000005E4
bl FUN_020054C8
add r0, r4, #0
mov r1, #0
add r0, #0x50
strh r1, [r0]
add r0, r4, #0
add r0, #0x65
ldrb r1, [r0]
mov r0, #1
eor r1, r0
add r0, r4, #0
add r0, #0x65
strb r1, [r0]
ldr r0, [r4, #0x14]
mov r1, #9
bl MOD15_021D8900
ldr r0, _021D81BC ; =MOD15_021D7D00
str r0, [r4, #0x24]
mov r0, #3
str r0, [r5]
b _021D81B4
_021D80BC:
cmp r0, #2
bne _021D80CA
add r0, r4, #0
add r0, #0x54
bl MOD15_021D82A8
b _021D80E2
_021D80CA:
cmp r0, #3
bne _021D80D8
add r0, r4, #0
add r0, #0x54
bl MOD15_021D82D0
b _021D80E2
_021D80D8:
ldrh r1, [r4, #0x34]
add r0, r4, #0
add r0, #0x54
bl MOD15_021D81C8
_021D80E2:
cmp r0, #1
beq _021D80F0
cmp r0, #2
beq _021D8102
cmp r0, #3
beq _021D8118
b _021D812E
_021D80F0:
ldr r0, _021D81C0 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r4, #0x14]
mov r1, #0xf
bl MOD15_021D8900
mov r0, #0
pop {r3, r4, r5, pc}
_021D8102:
ldr r0, _021D81C0 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r4, #0x14]
mov r1, #0x10
bl MOD15_021D8900
mov r0, #1
str r0, [r5]
mov r0, #0
pop {r3, r4, r5, pc}
_021D8118:
ldr r0, _021D81C0 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r4, #0x14]
mov r1, #0x10
bl MOD15_021D8900
mov r0, #2
str r0, [r5]
mov r0, #0
pop {r3, r4, r5, pc}
_021D812E:
ldrh r1, [r4, #0x30]
mov r0, #2
tst r0, r1
beq _021D814E
ldr r0, _021D81C0 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r4, #0x14]
mov r1, #9
bl MOD15_021D8900
ldr r0, _021D81BC ; =MOD15_021D7D00
str r0, [r4, #0x24]
mov r0, #3
str r0, [r5]
b _021D81B4
_021D814E:
mov r0, #1
tst r0, r1
beq _021D81B4
ldr r0, _021D81C0 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
bl MOD15_021D8310
ldr r0, _021D81C4 ; =MOD15_021D779C
mov r1, #0xa
str r0, [r4, #0x24]
ldr r0, [r4, #0x14]
bl MOD15_021D8900
mov r0, #3
str r0, [r5]
b _021D81B4
_021D8172:
ldr r0, [r4, #0x14]
mov r1, #0x10
bl MOD15_021D8970
cmp r0, #0
beq _021D81B4
mov r0, #0
str r0, [r5]
b _021D81B4
_021D8184:
ldr r0, [r4, #0x14]
mov r1, #0x10
bl MOD15_021D8970
cmp r0, #0
beq _021D81B4
ldr r0, [r4, #0x14]
mov r1, #0xf
bl MOD15_021D8900
mov r0, #0
str r0, [r5]
b _021D81B4
_021D819E:
ldr r0, [r4, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D81B4
ldr r1, [r4, #0x24]
add r0, r4, #0
bl MOD15_021D7794
mov r0, #0
str r0, [r5]
_021D81B4:
mov r0, #0
pop {r3, r4, r5, pc}
.align 2, 0
_021D81B8: .word 0x000005E4
_021D81BC: .word MOD15_021D7D00
_021D81C0: .word 0x000005DC
_021D81C4: .word MOD15_021D779C
thumb_func_start MOD15_021D81C8
MOD15_021D81C8: ; 0x021D81C8
push {r3, r4, r5, lr}
mov r2, #0x80
add r4, r0, #0
tst r2, r1
beq _021D8232
ldrb r1, [r4, #7]
cmp r1, #4
bhs _021D8206
add r1, r1, #1
strb r1, [r4, #7]
bl MOD15_021D8028
ldrh r1, [r4, #4]
cmp r0, r1
bhs _021D81EA
mov r0, #1
pop {r3, r4, r5, pc}
_021D81EA:
cmp r0, r1
bne _021D81FC
mov r1, #1
tst r0, r1
beq _021D81FC
mov r0, #0
strb r0, [r4, #6]
add r0, r1, #0
pop {r3, r4, r5, pc}
_021D81FC:
ldrb r0, [r4, #7]
sub r0, r0, #1
strb r0, [r4, #7]
mov r0, #4
pop {r3, r4, r5, pc}
_021D8206:
ldrh r2, [r4]
ldrh r1, [r4, #2]
cmp r2, r1
bhs _021D822E
mov r1, #1
str r1, [r4, #8]
ldrh r1, [r4]
add r1, r1, #1
strh r1, [r4]
bl MOD15_021D8028
ldrh r1, [r4, #4]
cmp r0, r1
bhs _021D8226
mov r0, #2
pop {r3, r4, r5, pc}
_021D8226:
mov r0, #0
strb r0, [r4, #6]
mov r0, #3
pop {r3, r4, r5, pc}
_021D822E:
mov r0, #4
pop {r3, r4, r5, pc}
_021D8232:
mov r5, #0x40
add r2, r1, #0
tst r2, r5
beq _021D8260
ldrb r0, [r4, #7]
cmp r0, #0
beq _021D8248
sub r0, r0, #1
strb r0, [r4, #7]
mov r0, #1
pop {r3, r4, r5, pc}
_021D8248:
ldrh r0, [r4]
cmp r0, #0
beq _021D825C
sub r5, #0x41
str r5, [r4, #8]
ldrh r0, [r4]
sub r0, r0, #1
strh r0, [r4]
mov r0, #2
pop {r3, r4, r5, pc}
_021D825C:
mov r0, #4
pop {r3, r4, r5, pc}
_021D8260:
mov r3, #0x30
add r2, r1, #0
tst r2, r3
beq _021D828A
ldrb r2, [r4, #6]
mov r1, #1
eor r1, r2
strb r1, [r4, #6]
bl MOD15_021D8028
ldrh r1, [r4, #4]
cmp r0, r1
bhs _021D827E
mov r0, #1
pop {r3, r4, r5, pc}
_021D827E:
ldrb r1, [r4, #6]
mov r0, #1
eor r0, r1
strb r0, [r4, #6]
mov r0, #4
pop {r3, r4, r5, pc}
_021D828A:
lsl r2, r5, #3
tst r2, r1
beq _021D8296
bl MOD15_021D82A8
pop {r3, r4, r5, pc}
_021D8296:
add r3, #0xd0
tst r1, r3
beq _021D82A2
bl MOD15_021D82D0
pop {r3, r4, r5, pc}
_021D82A2:
mov r0, #0
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D82A8
MOD15_021D82A8: ; 0x021D82A8
ldrh r1, [r0]
cmp r1, #0
beq _021D82CA
cmp r1, #5
blo _021D82BE
sub r1, r1, #5
strh r1, [r0]
mov r1, #4
mvn r1, r1
str r1, [r0, #8]
b _021D82C6
_021D82BE:
neg r1, r1
str r1, [r0, #8]
mov r1, #0
strh r1, [r0]
_021D82C6:
mov r0, #2
bx lr
_021D82CA:
mov r0, #4
bx lr
.align 2, 0
thumb_func_start MOD15_021D82D0
MOD15_021D82D0: ; 0x021D82D0
push {r4, lr}
add r4, r0, #0
ldrh r2, [r4, #2]
ldrh r1, [r4]
cmp r1, r2
bhs _021D830C
add r0, r1, #5
cmp r0, r2
bgt _021D82EC
mov r0, #5
str r0, [r4, #8]
ldrh r0, [r4]
add r0, r0, #5
b _021D82F2
_021D82EC:
sub r0, r2, r1
str r0, [r4, #8]
ldrh r0, [r4, #2]
_021D82F2:
strh r0, [r4]
add r0, r4, #0
bl MOD15_021D8028
ldrh r1, [r4, #4]
cmp r0, r1
bhs _021D8304
mov r0, #2
pop {r4, pc}
_021D8304:
mov r0, #0
strb r0, [r4, #6]
mov r0, #3
pop {r4, pc}
_021D830C:
mov r0, #4
pop {r4, pc}
thumb_func_start MOD15_021D8310
MOD15_021D8310: ; 0x021D8310
push {r4, lr}
add r4, r0, #0
add r0, #0x54
bl MOD15_021D8028
add r2, r0, #0
add r0, r4, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #0
ldr r0, [r4, #0x18]
bne _021D8334
add r1, r4, #0
add r1, #0x50
ldrh r1, [r1]
bl FUN_020892EC
b _021D833E
_021D8334:
add r1, r4, #0
add r1, #0x50
ldrh r1, [r1]
bl FUN_02089338
_021D833E:
add r2, r0, #0
ldr r0, [r4, #4]
cmp r0, #0
beq _021D8350
cmp r0, #1
beq _021D8354
cmp r0, #2
beq _021D8362
b _021D8370
_021D8350:
strh r2, [r4, #0x10]
b _021D8370
_021D8354:
add r0, r4, #0
add r0, #0x4e
ldrh r0, [r0]
lsl r0, r0, #1
add r0, r4, r0
strh r2, [r0, #0x10]
b _021D8370
_021D8362:
add r1, r4, #0
add r1, #0x4e
ldrh r1, [r1]
add r0, r4, #0
add r0, #8
bl FUN_02013998
_021D8370:
add r0, r4, #0
bl MOD15_021D85EC
pop {r4, pc}
thumb_func_start MOD15_021D8378
MOD15_021D8378: ; 0x021D8378
push {r4, lr}
add r4, r1, #0
ldr r1, [r4]
cmp r1, #0
beq _021D8388
cmp r1, #1
beq _021D8398
b _021D83A6
_021D8388:
ldr r0, [r0, #0x14]
mov r1, #1
bl MOD15_021D8900
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D83A6
_021D8398:
ldr r0, [r0, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D83A6
mov r0, #1
pop {r4, pc}
_021D83A6:
mov r0, #0
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021D83AC
MOD15_021D83AC: ; 0x021D83AC
str r1, [r0, #0x2c]
mov r1, #0
str r1, [r0, #0x28]
bx lr
thumb_func_start MOD15_021D83B4
MOD15_021D83B4: ; 0x021D83B4
mov r1, #0
str r1, [r0, #0x2c]
bx lr
.align 2, 0
thumb_func_start MOD15_021D83BC
MOD15_021D83BC: ; 0x021D83BC
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4]
cmp r0, #0
beq _021D83CE
cmp r0, #1
beq _021D83DE
pop {r3, r4, r5, pc}
_021D83CE:
ldr r0, [r5, #0x14]
mov r1, #2
bl MOD15_021D8900
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
pop {r3, r4, r5, pc}
_021D83DE:
ldr r0, [r5, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D83EE
add r0, r5, #0
bl MOD15_021D83B4
_021D83EE:
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D83F0
MOD15_021D83F0: ; 0x021D83F0
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r1, [r5]
add r4, r0, #0
cmp r1, #3
bls _021D83FE
b _021D850C
_021D83FE:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021D840A: ; jump table
.short _021D8412 - _021D840A - 2 ; case 0
.short _021D8460 - _021D840A - 2 ; case 1
.short _021D84E6 - _021D840A - 2 ; case 2
.short _021D84FC - _021D840A - 2 ; case 3
_021D8412:
bl MOD15_021D85D0
cmp r0, #0
bne _021D8424
ldr r0, [r4]
bl FUN_02085424
cmp r0, #0
beq _021D8456
_021D8424:
add r0, r4, #0
bl MOD15_021D85EC
cmp r0, #0
beq _021D8448
add r0, r4, #0
add r0, #0x66
mov r1, #1
mov r2, #0
bl MOD15_021D8634
ldr r0, [r4, #0x14]
mov r1, #0x12
bl MOD15_021D8900
mov r0, #1
str r0, [r5]
pop {r3, r4, r5, pc}
_021D8448:
ldr r0, [r4, #0x14]
mov r1, #0x14
bl MOD15_021D8900
mov r0, #2
str r0, [r5]
pop {r3, r4, r5, pc}
_021D8456:
ldr r1, _021D8510 ; =MOD15_021D851C
add r0, r4, #0
bl MOD15_021D83AC
pop {r3, r4, r5, pc}
_021D8460:
ldr r0, [r4, #0x14]
mov r1, #0x15
bl MOD15_021D8970
cmp r0, #0
beq _021D850C
ldrh r1, [r4, #0x30]
add r0, r4, #0
add r0, #0x66
bl MOD15_021D863C
add r0, r0, #3
cmp r0, #4
bhi _021D850C
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D8488: ; jump table
.short _021D8492 - _021D8488 - 2 ; case 0
.short _021D84A2 - _021D8488 - 2 ; case 1
.short _021D850C - _021D8488 - 2 ; case 2
.short _021D84B6 - _021D8488 - 2 ; case 3
.short _021D84A2 - _021D8488 - 2 ; case 4
_021D8492:
ldr r0, _021D8514 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r4, #0x14]
mov r1, #0x15
bl MOD15_021D8900
pop {r3, r4, r5, pc}
_021D84A2:
ldr r0, _021D8514 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r4, #0x14]
mov r1, #0x16
bl MOD15_021D8900
mov r0, #3
str r0, [r5]
pop {r3, r4, r5, pc}
_021D84B6:
ldr r0, _021D8514 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r4, #4]
cmp r0, #2
bne _021D84CA
add r0, r4, #0
add r0, #8
bl FUN_020139B0
_021D84CA:
add r1, r4, #0
add r2, r4, #0
ldr r0, [r4]
add r1, #0x10
add r2, #8
bl FUN_020854A0
ldr r1, _021D8518 ; =MOD15_021D8378
add r0, r4, #0
bl MOD15_021D7794
mov r0, #3
str r0, [r5]
pop {r3, r4, r5, pc}
_021D84E6:
ldrh r1, [r4, #0x30]
mov r0, #0xf3
tst r0, r1
beq _021D850C
ldr r0, [r4, #0x14]
mov r1, #0x11
bl MOD15_021D8900
mov r0, #3
str r0, [r5]
pop {r3, r4, r5, pc}
_021D84FC:
ldr r0, [r4, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D850C
add r0, r4, #0
bl MOD15_021D83B4
_021D850C:
pop {r3, r4, r5, pc}
nop
_021D8510: .word MOD15_021D851C
_021D8514: .word 0x000005DC
_021D8518: .word MOD15_021D8378
thumb_func_start MOD15_021D851C
MOD15_021D851C: ; 0x021D851C
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r0, #0
ldr r0, [r5]
cmp r0, #0
beq _021D8532
cmp r0, #1
beq _021D854C
cmp r0, #2
beq _021D85B6
pop {r3, r4, r5, pc}
_021D8532:
add r0, r4, #0
mov r1, #1
add r0, #0x66
add r2, r1, #0
bl MOD15_021D8634
ldr r0, [r4, #0x14]
mov r1, #0x13
bl MOD15_021D8900
mov r0, #1
str r0, [r5]
pop {r3, r4, r5, pc}
_021D854C:
ldr r0, [r4, #0x14]
mov r1, #0x15
bl MOD15_021D8970
cmp r0, #0
beq _021D85C6
ldrh r1, [r4, #0x30]
add r0, r4, #0
add r0, #0x66
bl MOD15_021D863C
add r0, r0, #3
cmp r0, #4
bhi _021D85C6
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D8574: ; jump table
.short _021D857E - _021D8574 - 2 ; case 0
.short _021D858E - _021D8574 - 2 ; case 1
.short _021D85C6 - _021D8574 - 2 ; case 2
.short _021D85A2 - _021D8574 - 2 ; case 3
.short _021D858E - _021D8574 - 2 ; case 4
_021D857E:
ldr r0, _021D85C8 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r4, #0x14]
mov r1, #0x15
bl MOD15_021D8900
pop {r3, r4, r5, pc}
_021D858E:
ldr r0, _021D85C8 ; =0x000005DC
bl FUN_020054C8
ldr r0, [r4, #0x14]
mov r1, #0x16
bl MOD15_021D8900
mov r0, #2
str r0, [r5]
pop {r3, r4, r5, pc}
_021D85A2:
ldr r0, _021D85C8 ; =0x000005DC
bl FUN_020054C8
ldr r1, _021D85CC ; =MOD15_021D8378
add r0, r4, #0
bl MOD15_021D7794
mov r0, #2
str r0, [r5]
pop {r3, r4, r5, pc}
_021D85B6:
ldr r0, [r4, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D85C6
add r0, r4, #0
bl MOD15_021D83B4
_021D85C6:
pop {r3, r4, r5, pc}
.align 2, 0
_021D85C8: .word 0x000005DC
_021D85CC: .word MOD15_021D8378
thumb_func_start MOD15_021D85D0
MOD15_021D85D0: ; 0x021D85D0
push {r3, lr}
add r2, r0, #0
add r1, r2, #0
ldr r0, [r2]
add r1, #0x10
add r2, #8
bl FUN_0208545C
cmp r0, #0
bne _021D85E8
mov r0, #1
pop {r3, pc}
_021D85E8:
mov r0, #0
pop {r3, pc}
thumb_func_start MOD15_021D85EC
MOD15_021D85EC: ; 0x021D85EC
push {r3, lr}
ldr r1, [r0, #4]
cmp r1, #0
beq _021D85FE
cmp r1, #1
beq _021D860E
cmp r1, #2
beq _021D8624
b _021D862C
_021D85FE:
ldrh r1, [r0, #0x10]
ldr r0, _021D8630 ; =0x0000FFFF
cmp r1, r0
beq _021D860A
mov r0, #1
pop {r3, pc}
_021D860A:
mov r0, #0
pop {r3, pc}
_021D860E:
ldrh r2, [r0, #0x10]
ldr r1, _021D8630 ; =0x0000FFFF
cmp r2, r1
beq _021D8620
ldrh r0, [r0, #0x12]
cmp r0, r1
beq _021D8620
mov r0, #1
pop {r3, pc}
_021D8620:
mov r0, #0
pop {r3, pc}
_021D8624:
add r0, #8
bl FUN_02013870
pop {r3, pc}
_021D862C:
mov r0, #0
pop {r3, pc}
.align 2, 0
_021D8630: .word 0x0000FFFF
thumb_func_start MOD15_021D8634
MOD15_021D8634: ; 0x021D8634
strb r2, [r0]
strb r1, [r0, #1]
bx lr
.align 2, 0
thumb_func_start MOD15_021D863C
MOD15_021D863C: ; 0x021D863C
mov r2, #0x40
add r3, r1, #0
tst r3, r2
beq _021D865A
ldrb r1, [r0]
cmp r1, #0
bne _021D8650
sub r2, #0x44
add r0, r2, #0
bx lr
_021D8650:
sub r1, r1, #1
sub r2, #0x43
strb r1, [r0]
add r0, r2, #0
bx lr
_021D865A:
mov r2, #0x80
add r3, r1, #0
tst r3, r2
beq _021D867A
ldrb r3, [r0]
ldrb r1, [r0, #1]
cmp r3, r1
bne _021D8670
sub r2, #0x84
add r0, r2, #0
bx lr
_021D8670:
add r1, r3, #1
sub r2, #0x83
strb r1, [r0]
add r0, r2, #0
bx lr
_021D867A:
mov r2, #1
tst r2, r1
beq _021D8684
ldrb r0, [r0]
bx lr
_021D8684:
mov r0, #2
tst r1, r0
beq _021D868E
sub r0, r0, #4
bx lr
_021D868E:
sub r0, r0, #3
bx lr
.align 2, 0
thumb_func_start MOD15_021D8694
MOD15_021D8694: ; 0x021D8694
ldrb r0, [r0]
bx lr
thumb_func_start MOD15_021D8698
MOD15_021D8698: ; 0x021D8698
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4]
cmp r0, #0
beq _021D86AA
cmp r0, #1
beq _021D86CE
pop {r3, r4, r5, pc}
_021D86AA:
ldr r0, _021D86E0 ; =0x000005E4
bl FUN_020054C8
add r0, r5, #0
add r0, #0x65
ldrb r1, [r0]
mov r0, #1
eor r1, r0
add r0, r5, #0
add r0, #0x65
strb r1, [r0]
ldr r0, [r5, #0x14]
mov r1, #0x17
bl MOD15_021D8900
mov r0, #1
str r0, [r4]
pop {r3, r4, r5, pc}
_021D86CE:
ldr r0, [r5, #0x14]
bl MOD15_021D8958
cmp r0, #0
beq _021D86DE
add r0, r5, #0
bl MOD15_021D83B4
_021D86DE:
pop {r3, r4, r5, pc}
.align 2, 0
_021D86E0: .word 0x000005E4
thumb_func_start MOD15_021D86E4
MOD15_021D86E4: ; 0x021D86E4
ldr r0, [r0, #4]
bx lr
thumb_func_start MOD15_021D86E8
MOD15_021D86E8: ; 0x021D86E8
ldr r3, _021D86F0 ; =FUN_02085410
ldr r0, [r0]
bx r3
nop
_021D86F0: .word FUN_02085410
thumb_func_start MOD15_021D86F4
MOD15_021D86F4: ; 0x021D86F4
add r0, #0x65
ldrb r0, [r0]
bx lr
.align 2, 0
thumb_func_start MOD15_021D86FC
MOD15_021D86FC: ; 0x021D86FC
ldr r3, _021D8704 ; =FUN_02013920
add r0, #8
bx r3
nop
_021D8704: .word FUN_02013920
thumb_func_start MOD15_021D8708
MOD15_021D8708: ; 0x021D8708
push {r3, lr}
ldr r2, [r0, #4]
cmp r2, #2
bne _021D8718
add r0, #8
bl FUN_02013918
pop {r3, pc}
_021D8718:
lsl r1, r1, #1
add r0, r0, r1
ldrh r0, [r0, #0x10]
pop {r3, pc}
thumb_func_start MOD15_021D8720
MOD15_021D8720: ; 0x021D8720
ldr r3, _021D8728 ; =FUN_02013840
add r0, #8
bx r3
nop
_021D8728: .word FUN_02013840
thumb_func_start MOD15_021D872C
MOD15_021D872C: ; 0x021D872C
add r0, #0x4e
ldrh r0, [r0]
bx lr
.align 2, 0
thumb_func_start MOD15_021D8734
MOD15_021D8734: ; 0x021D8734
add r0, #0x4c
ldrh r0, [r0]
bx lr
.align 2, 0
thumb_func_start MOD15_021D873C
MOD15_021D873C: ; 0x021D873C
add r0, #0x50
ldrh r0, [r0]
bx lr
.align 2, 0
thumb_func_start MOD15_021D8744
MOD15_021D8744: ; 0x021D8744
push {r3, lr}
add r1, r0, #0
add r0, #0x65
ldrb r0, [r0]
cmp r0, #0
ldr r0, [r1, #0x18]
bne _021D875C
add r1, #0x50
ldrh r1, [r1]
bl FUN_020892C4
pop {r3, pc}
_021D875C:
add r1, #0x50
ldrh r1, [r1]
bl FUN_02089300
pop {r3, pc}
.align 2, 0
thumb_func_start MOD15_021D8768
MOD15_021D8768: ; 0x021D8768
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, #0x65
ldrb r0, [r0]
add r4, r1, #0
add r3, r2, #0
cmp r0, #0
ldr r0, [r5, #0x18]
bne _021D8786
add r5, #0x50
ldrh r1, [r5]
add r2, r4, #0
bl FUN_020892CC
pop {r3, r4, r5, pc}
_021D8786:
add r5, #0x50
ldrh r1, [r5]
add r2, r4, #0
bl FUN_02089310
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D8794
MOD15_021D8794: ; 0x021D8794
ldr r3, _021D879C ; =MOD15_021D801C
add r0, #0x54
bx r3
nop
_021D879C: .word MOD15_021D801C
thumb_func_start MOD15_021D87A0
MOD15_021D87A0: ; 0x021D87A0
ldr r3, _021D87A8 ; =MOD15_021D8038
add r0, #0x54
bx r3
nop
_021D87A8: .word MOD15_021D8038
thumb_func_start MOD15_021D87AC
MOD15_021D87AC: ; 0x021D87AC
push {r3, lr}
add r0, #0x54
bl MOD15_021D803C
cmp r0, #0
beq _021D87BC
mov r0, #1
pop {r3, pc}
_021D87BC:
mov r0, #0
pop {r3, pc}
thumb_func_start MOD15_021D87C0
MOD15_021D87C0: ; 0x021D87C0
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, #0x54
bl MOD15_021D803C
add r5, #0x54
add r4, r0, #0
add r0, r5, #0
bl MOD15_021D8040
cmp r4, r0
bge _021D87DC
mov r0, #1
pop {r3, r4, r5, pc}
_021D87DC:
mov r0, #0
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D87E0
MOD15_021D87E0: ; 0x021D87E0
ldr r3, _021D87E8 ; =FUN_02085414
ldr r0, [r0]
bx r3
nop
_021D87E8: .word FUN_02085414
thumb_func_start MOD15_021D87EC
MOD15_021D87EC: ; 0x021D87EC
ldr r3, _021D87F4 ; =MOD15_021D8694
add r0, #0x66
bx r3
nop
_021D87F4: .word MOD15_021D8694
thumb_func_start MOD15_021D87F8
MOD15_021D87F8: ; 0x021D87F8
push {r3, r4, r5, r6, lr}
sub sp, #0x14
add r6, r1, #0
mov r1, #0x7d
add r5, r0, #0
mov r0, #0x23
lsl r1, r1, #2
bl AllocFromHeap
add r4, r0, #0
beq _021D8878
mov r0, #0
add r1, r0, #0
bl FUN_02015F10
bl FUN_02015F1C
str r5, [r4, #0x18]
str r6, [r4, #0x1c]
bl FUN_020B0FC0
mov r0, #0
str r0, [sp]
mov r1, #0x80
str r1, [sp, #4]
str r0, [sp, #8]
mov r3, #0x20
str r3, [sp, #0xc]
mov r2, #0x23
str r2, [sp, #0x10]
add r2, r0, #0
bl FUN_02009EAC
add r1, r4, #0
mov r0, #0x80
add r1, #0x28
mov r2, #0x23
bl FUN_02008C9C
str r0, [r4, #0x24]
mov r0, #0x23
bl FUN_02016B94
str r0, [r4, #0x20]
ldr r0, _021D8880 ; =MOD15_021D88D8
add r1, r4, #0
mov r2, #2
bl FUN_0200CA44
str r0, [r4]
ldr r0, _021D8884 ; =MOD15_021D88DC
add r1, r4, #0
mov r2, #1
bl MOD15_021D88D0
mov r1, #0
str r0, [r4, #4]
add r2, r4, #0
add r0, r1, #0
_021D886E:
add r1, r1, #1
str r0, [r2, #8]
add r2, r2, #4
cmp r1, #4
blt _021D886E
_021D8878:
add r0, r4, #0
add sp, #0x14
pop {r3, r4, r5, r6, pc}
nop
_021D8880: .word MOD15_021D88D8
_021D8884: .word MOD15_021D88DC
thumb_func_start MOD15_021D8888
MOD15_021D8888: ; 0x021D8888
push {r4, r5, r6, lr}
add r6, r0, #0
beq _021D88CE
mov r0, #0
add r1, r0, #0
bl FUN_02015F10
mov r4, #0
add r5, r6, #0
_021D889A:
ldr r0, [r5, #8]
cmp r0, #0
beq _021D88A4
bl FUN_0200CAB4
_021D88A4:
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _021D889A
ldr r0, [r6]
bl FUN_0200CAB4
ldr r0, [r6, #4]
bl FUN_0200CAB4
bl FUN_02009FA0
ldr r0, [r6, #0x24]
bl FUN_0201FD58
ldr r0, [r6, #0x20]
bl FreeToHeap
add r0, r6, #0
bl FreeToHeap
_021D88CE:
pop {r4, r5, r6, pc}
thumb_func_start MOD15_021D88D0
MOD15_021D88D0: ; 0x021D88D0
ldr r3, _021D88D4 ; =FUN_0200CA60
bx r3
.align 2, 0
_021D88D4: .word FUN_0200CA60
thumb_func_start MOD15_021D88D8
MOD15_021D88D8: ; 0x021D88D8
bx lr
.align 2, 0
thumb_func_start MOD15_021D88DC
MOD15_021D88DC: ; 0x021D88DC
push {r3, lr}
ldr r0, [r1, #0x24]
bl FUN_0201FDEC
bl FUN_02009F80
ldr r3, _021D88F8 ; =0x027E0000
ldr r1, _021D88FC ; =0x00003FF8
mov r0, #1
ldr r2, [r3, r1]
orr r0, r2
str r0, [r3, r1]
pop {r3, pc}
nop
_021D88F8: .word 0x027E0000
_021D88FC: .word 0x00003FF8
thumb_func_start MOD15_021D8900
MOD15_021D8900: ; 0x021D8900
push {r4, r5, r6, lr}
add r6, r1, #0
add r5, r0, #0
cmp r6, #0x1d
bhs _021D894E
mov r0, #0x23
mov r1, #0x18
bl AllocFromHeap
add r1, r0, #0
beq _021D8952
mov r4, #0
str r4, [r1, #0x14]
str r6, [r1, #0xc]
str r5, [r1]
ldr r0, [r5, #0x18]
add r2, r5, #0
str r0, [r1, #4]
ldr r0, [r5, #0x1c]
str r0, [r1, #8]
_021D8928:
ldr r0, [r2, #8]
cmp r0, #0
bne _021D8944
ldr r0, _021D8954 ; =0x021DB98C
lsl r2, r6, #2
ldr r0, [r0, r2]
mov r2, #1
str r4, [r1, #0x10]
bl FUN_0200CA44
lsl r1, r4, #2
add r1, r5, r1
str r0, [r1, #8]
pop {r4, r5, r6, pc}
_021D8944:
add r4, r4, #1
add r2, r2, #4
cmp r4, #4
blt _021D8928
pop {r4, r5, r6, pc}
_021D894E:
bl ErrorHandling
_021D8952:
pop {r4, r5, r6, pc}
.align 2, 0
_021D8954: .word 0x021DB98C
thumb_func_start MOD15_021D8958
MOD15_021D8958: ; 0x021D8958
mov r2, #0
_021D895A:
ldr r1, [r0, #8]
cmp r1, #0
beq _021D8964
mov r0, #0
bx lr
_021D8964:
add r2, r2, #1
add r0, r0, #4
cmp r2, #4
blt _021D895A
mov r0, #1
bx lr
thumb_func_start MOD15_021D8970
MOD15_021D8970: ; 0x021D8970
push {r4, r5, r6, lr}
add r5, r0, #0
add r6, r1, #0
mov r4, #0
_021D8978:
ldr r0, [r5, #8]
cmp r0, #0
beq _021D898C
bl FUN_0201B6C8
ldr r0, [r0, #0xc]
cmp r0, r6
bne _021D898C
mov r0, #0
pop {r4, r5, r6, pc}
_021D898C:
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _021D8978
mov r0, #1
pop {r4, r5, r6, pc}
thumb_func_start MOD15_021D8998
MOD15_021D8998: ; 0x021D8998
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x10]
ldr r1, [r4]
lsl r0, r0, #2
add r0, r1, r0
ldr r0, [r0, #8]
bl FUN_0200CAB4
ldr r0, [r4, #0x10]
ldr r1, [r4]
lsl r0, r0, #2
mov r2, #0
add r0, r1, r0
str r2, [r0, #8]
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021D89C0
MOD15_021D89C0: ; 0x021D89C0
push {r3, r4, r5, lr}
add r4, r1, #0
bl FUN_0201E6D8
bl FUN_0201E740
mov r1, #1
lsl r1, r1, #0x1a
ldr r0, [r1]
ldr r2, _021D8AA4 ; =0xFFFFE0FF
and r0, r2
str r0, [r1]
ldr r0, _021D8AA8 ; =0x04001000
ldr r3, [r0]
and r2, r3
str r2, [r0]
ldr r2, [r1]
ldr r3, _021D8AAC ; =0xFFCFFFEF
add r5, r2, #0
ldr r2, _021D8AB0 ; =0x00100010
and r5, r3
orr r2, r5
str r2, [r1]
ldr r1, [r0]
add r2, r1, #0
and r2, r3
mov r1, #0x10
orr r1, r2
str r1, [r0]
add r0, r4, #0
bl MOD15_021D8C30
add r0, r4, #0
bl MOD15_021D8AB4
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
bl MOD15_021D95E8
mov r1, #0x1e
ldr r2, [r4]
lsl r1, r1, #4
str r0, [r2, r1]
ldr r0, [r4]
ldr r0, [r0, r1]
bl MOD15_021D9694
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
bl MOD15_021D9FA0
mov r1, #0x79
ldr r2, [r4]
lsl r1, r1, #2
str r0, [r2, r1]
ldr r0, [r4]
ldr r0, [r0, r1]
bl MOD15_021D9FD4
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
bl MOD15_021DA18C
mov r1, #0x7a
ldr r2, [r4]
lsl r1, r1, #2
str r0, [r2, r1]
ldr r0, [r4]
ldr r0, [r0, r1]
bl MOD15_021DA1D0
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
bl MOD15_021DA828
mov r1, #0x7b
ldr r2, [r4]
lsl r1, r1, #2
str r0, [r2, r1]
ldr r0, [r4]
ldr r0, [r0, r1]
bl MOD15_021DA8E8
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
bl MOD15_021DAE68
mov r1, #0x1f
ldr r2, [r4]
lsl r1, r1, #4
str r0, [r2, r1]
ldr r0, [r4]
ldr r0, [r0, r1]
bl MOD15_021DAEB4
mov r0, #0x10
mov r1, #1
bl FUN_0201E6E4
mov r0, #0x10
mov r1, #1
bl FUN_0201E74C
bl GX_DispOn
add r0, r4, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
.align 2, 0
_021D8AA4: .word 0xFFFFE0FF
_021D8AA8: .word 0x04001000
_021D8AAC: .word 0xFFCFFFEF
_021D8AB0: .word 0x00100010
thumb_func_start MOD15_021D8AB4
MOD15_021D8AB4: ; 0x021D8AB4
push {r3, r4, lr}
sub sp, #0x14
ldr r4, [r0]
mov r0, #0x66
lsl r0, r0, #2
add r0, r4, r0
bl FUN_020B19DC
mov r0, #0x6b
lsl r0, r0, #2
add r0, r4, r0
bl FUN_020B19DC
mov r0, #0x15
lsl r0, r0, #4
add r0, r4, r0
bl FUN_020B1A24
mov r0, #0x5d
lsl r0, r0, #2
add r0, r4, r0
bl FUN_020B1A24
mov r3, #0
str r3, [sp]
mov r2, #1
str r2, [sp, #4]
str r3, [sp, #8]
mov r0, #0x23
str r0, [sp, #0xc]
mov r0, #0x15
lsl r0, r0, #4
add r0, r4, r0
str r0, [sp, #0x10]
mov r0, #0x4c
mov r1, #9
bl FUN_02006AE4
mov r0, #0x23
str r0, [sp]
mov r0, #0x66
lsl r0, r0, #2
add r0, r4, r0
str r0, [sp, #4]
mov r0, #0x4c
mov r1, #0xa
mov r2, #1
mov r3, #0
bl FUN_02006A8C
mov r1, #7
mov r0, #0x23
lsl r3, r1, #6
str r0, [sp]
mov r0, #0x4c
mov r2, #1
add r3, r4, r3
bl FUN_02006C30
mov r3, #0x1d
lsl r3, r3, #4
str r0, [r4, r3]
mov r0, #0x23
sub r3, #8
str r0, [sp]
mov r0, #0x4c
mov r1, #8
mov r2, #1
add r3, r4, r3
bl FUN_02006C5C
mov r1, #0x76
lsl r1, r1, #2
str r0, [r4, r1]
mov r2, #0
sub r0, r1, #4
str r2, [r4, r0]
add r0, r1, #4
str r2, [r4, r0]
add sp, #0x14
pop {r3, r4, pc}
.align 2, 0
thumb_func_start MOD15_021D8B58
MOD15_021D8B58: ; 0x021D8B58
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r6, r1, #0
ldr r0, [r6, #0x14]
ldr r7, [r6]
cmp r0, #0
beq _021D8B6E
cmp r0, #1
beq _021D8B90
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_021D8B6E:
mov r0, #5
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x23
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl FUN_0200E1D0
ldr r0, [r6, #0x14]
add sp, #0xc
add r0, r0, #1
str r0, [r6, #0x14]
pop {r4, r5, r6, r7, pc}
_021D8B90:
bl FUN_0200E308
cmp r0, #0
beq _021D8C2A
mov r0, #0x1e
ldr r1, [r6]
lsl r0, r0, #4
ldr r0, [r1, r0]
bl MOD15_021D9634
mov r0, #0x79
ldr r1, [r6]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl MOD15_021D9FBC
mov r0, #0x7a
ldr r1, [r6]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl MOD15_021DA1B8
mov r0, #0x7b
ldr r1, [r6]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl MOD15_021DA8A4
mov r0, #0x1f
ldr r1, [r6]
lsl r0, r0, #4
ldr r0, [r1, r0]
bl MOD15_021DAEA4
mov r4, #0
add r5, r7, #0
_021D8BD8:
mov r0, #0x1d
lsl r0, r0, #4
ldr r0, [r5, r0]
cmp r0, #0
beq _021D8BE6
bl FreeToHeap
_021D8BE6:
mov r0, #0x76
lsl r0, r0, #2
ldr r0, [r5, r0]
cmp r0, #0
beq _021D8BF4
bl FreeToHeap
_021D8BF4:
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blt _021D8BD8
ldr r0, [r7, #0x20]
mov r1, #0
bl FUN_020178A0
ldr r0, [r7, #0x20]
mov r1, #1
bl FUN_020178A0
ldr r0, [r7, #0x20]
mov r1, #2
bl FUN_020178A0
ldr r0, [r7, #0x20]
mov r1, #3
bl FUN_020178A0
ldr r0, [r7, #0x20]
mov r1, #4
bl FUN_020178A0
add r0, r6, #0
bl MOD15_021D8998
_021D8C2A:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start MOD15_021D8C30
MOD15_021D8C30: ; 0x021D8C30
push {r4, lr}
ldr r2, _021D8C94 ; =0x04000304
ldr r4, [r0]
ldrh r1, [r2]
lsr r0, r2, #0xb
orr r0, r1
strh r0, [r2]
mov r0, #1
mov r1, #0
add r2, r0, #0
bl GX_SetGraphicsMode
ldr r0, _021D8C98 ; =0x021DB964
bl FUN_0201E66C
ldr r0, _021D8C9C ; =0x021DB8C8
bl FUN_02016BBC
mov r1, #0
ldr r0, [r4, #0x20]
ldr r2, _021D8CA0 ; =0x021DB910
add r3, r1, #0
bl FUN_02016C18
ldr r0, [r4, #0x20]
ldr r2, _021D8CA4 ; =0x021DB8D8
mov r1, #1
mov r3, #0
bl FUN_02016C18
ldr r0, [r4, #0x20]
ldr r2, _021D8CA8 ; =0x021DB948
mov r1, #2
mov r3, #0
bl FUN_02016C18
ldr r0, [r4, #0x20]
ldr r2, _021D8CAC ; =0x021DB8F4
mov r1, #3
mov r3, #0
bl FUN_02016C18
ldr r0, [r4, #0x20]
ldr r2, _021D8CB0 ; =0x021DB92C
mov r1, #4
mov r3, #0
bl FUN_02016C18
pop {r4, pc}
nop
_021D8C94: .word 0x04000304
_021D8C98: .word 0x021DB964
_021D8C9C: .word 0x021DB8C8
_021D8CA0: .word 0x021DB910
_021D8CA4: .word 0x021DB8D8
_021D8CA8: .word 0x021DB948
_021D8CAC: .word 0x021DB8F4
_021D8CB0: .word 0x021DB92C
thumb_func_start MOD15_021D8CB4
MOD15_021D8CB4: ; 0x021D8CB4
push {r3, r4, lr}
sub sp, #0xc
add r4, r1, #0
ldr r0, [r4, #0x14]
cmp r0, #0
beq _021D8CC6
cmp r0, #1
beq _021D8CE6
b _021D8CF8
_021D8CC6:
mov r0, #5
str r0, [sp]
mov r1, #1
str r1, [sp, #4]
mov r0, #0x23
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
add r3, r0, #0
bl FUN_0200E1D0
ldr r0, [r4, #0x14]
add sp, #0xc
add r0, r0, #1
str r0, [r4, #0x14]
pop {r3, r4, pc}
_021D8CE6:
bl FUN_0200E308
cmp r0, #0
beq _021D8CFE
ldr r0, [r4, #0x14]
add sp, #0xc
add r0, r0, #1
str r0, [r4, #0x14]
pop {r3, r4, pc}
_021D8CF8:
add r0, r4, #0
bl MOD15_021D8998
_021D8CFE:
add sp, #0xc
pop {r3, r4, pc}
.align 2, 0
thumb_func_start MOD15_021D8D04
MOD15_021D8D04: ; 0x021D8D04
push {r3, r4, r5, lr}
add r5, r1, #0
mov r0, #0x1e
ldr r4, [r5]
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9964
ldr r0, [r5, #4]
bl MOD15_021D872C
add r1, r0, #0
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9E3C
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D8D30
MOD15_021D8D30: ; 0x021D8D30
push {r3, r4, r5, lr}
add r5, r1, #0
mov r0, #0x1e
ldr r4, [r5]
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021D9DD8
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9DEC
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
bl MOD15_021DA10C
ldr r0, [r4, #0x18]
bl MOD15_021D8734
add r1, r0, #0
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA124
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D8D74
MOD15_021D8D74: ; 0x021D8D74
push {r3, r4, r5, lr}
add r5, r1, #0
mov r0, #0x79
ldr r4, [r5]
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021DA10C
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9E0C
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #1
bl MOD15_021D9DD8
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D8DA4
MOD15_021D8DA4: ; 0x021D8DA4
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #0x14]
ldr r4, [r5]
cmp r0, #0
beq _021D8DB6
cmp r0, #1
beq _021D8DDC
pop {r3, r4, r5, pc}
_021D8DB6:
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9DC0
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9DEC
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA638
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D8DDC:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA650
cmp r0, #0
beq _021D8E18
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA164
ldr r0, [r4, #0x18]
bl MOD15_021D873C
add r1, r0, #0
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA5B4
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
bl MOD15_021DA588
add r0, r5, #0
bl MOD15_021D8998
_021D8E18:
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D8E1C
MOD15_021D8E1C: ; 0x021D8E1C
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #0x14]
ldr r4, [r5]
cmp r0, #0
beq _021D8E32
cmp r0, #1
beq _021D8E44
cmp r0, #2
beq _021D8E56
pop {r3, r4, r5, pc}
_021D8E32:
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021DB2D0
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D8E44:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA7E8
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D8E56:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA81C
cmp r0, #0
beq _021D8E82
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021DB358
cmp r0, #0
beq _021D8E82
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA7C4
add r0, r5, #0
bl MOD15_021D8998
_021D8E82:
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D8E84
MOD15_021D8E84: ; 0x021D8E84
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #0x14]
ldr r4, [r5]
cmp r0, #3
bhi _021D8F26
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D8E9C: ; jump table
.short _021D8EA4 - _021D8E9C - 2 ; case 0
.short _021D8EB6 - _021D8E9C - 2 ; case 1
.short _021D8ED4 - _021D8E9C - 2 ; case 2
.short _021D8EF4 - _021D8E9C - 2 ; case 3
_021D8EA4:
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021DB2D0
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D8EB6:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021DA588
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA7E8
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D8ED4:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA81C
cmp r0, #0
beq _021D8F26
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA7C4
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D8EF4:
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021DB358
cmp r0, #0
beq _021D8F26
ldr r0, [r4, #0x18]
bl MOD15_021D873C
add r1, r0, #0
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA5B4
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
bl MOD15_021DA588
add r0, r5, #0
bl MOD15_021D8998
_021D8F26:
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D8F28
MOD15_021D8F28: ; 0x021D8F28
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #0x14]
ldr r4, [r5]
cmp r0, #0
beq _021D8F3A
cmp r0, #1
beq _021D8F62
pop {r3, r4, r5, pc}
_021D8F3A:
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA178
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021DA588
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA6A0
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D8F62:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA6C4
cmp r0, #0
beq _021D8F8A
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9E0C
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9DCC
add r0, r5, #0
bl MOD15_021D8998
_021D8F8A:
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D8F8C
MOD15_021D8F8C: ; 0x021D8F8C
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #0x14]
ldr r4, [r5]
cmp r0, #0
beq _021D8FA2
cmp r0, #1
beq _021D8FCA
cmp r0, #2
beq _021D8FEA
pop {r3, r4, r5, pc}
_021D8FA2:
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA9D4
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021DA588
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA744
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D8FCA:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA760
cmp r0, #0
beq _021D9028
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DAA24
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D8FEA:
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DAAD0
cmp r0, #0
beq _021D9028
ldr r0, [r4, #0x18]
bl MOD15_021D8794
add r1, r0, #0
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DABC0
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
bl MOD15_021DAB80
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #1
bl MOD15_021DB4E8
add r0, r5, #0
bl MOD15_021D8998
_021D9028:
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D902C
MOD15_021D902C: ; 0x021D902C
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #0x14]
ldr r4, [r5]
cmp r0, #4
bhi _021D90FC
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D9044: ; jump table
.short _021D904E - _021D9044 - 2 ; case 0
.short _021D9060 - _021D9044 - 2 ; case 1
.short _021D908A - _021D9044 - 2 ; case 2
.short _021D90AA - _021D9044 - 2 ; case 3
.short _021D90BC - _021D9044 - 2 ; case 4
_021D904E:
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021DB2D0
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D9060:
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021DAB80
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021DB4E8
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DAAF4
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D908A:
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DAB18
cmp r0, #0
beq _021D90FC
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA7C4
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D90AA:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA77C
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D90BC:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA7B8
cmp r0, #0
beq _021D90FC
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021DB358
cmp r0, #0
beq _021D90FC
ldr r0, [r4, #0x18]
bl MOD15_021D873C
add r1, r0, #0
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA5B4
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
bl MOD15_021DA588
add r0, r5, #0
bl MOD15_021D8998
_021D90FC:
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D9100
MOD15_021D9100: ; 0x021D9100
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #0x14]
ldr r4, [r5]
cmp r0, #3
bhi _021D91DC
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D9118: ; jump table
.short _021D9120 - _021D9118 - 2 ; case 0
.short _021D9154 - _021D9118 - 2 ; case 1
.short _021D917E - _021D9118 - 2 ; case 2
.short _021D919E - _021D9118 - 2 ; case 3
_021D9120:
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA178
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021DAB80
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021DB4E8
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DAAF4
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D9154:
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DAB18
cmp r0, #0
beq _021D91DC
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA710
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA77C
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D917E:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA7B8
cmp r0, #0
beq _021D91DC
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA720
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D919E:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA738
cmp r0, #0
beq _021D91DC
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9964
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #1
bl MOD15_021D9DD8
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9E0C
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9DCC
add r0, r5, #0
bl MOD15_021D8998
_021D91DC:
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D91E0
MOD15_021D91E0: ; 0x021D91E0
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #0x14]
ldr r4, [r5]
cmp r0, #3
bhi _021D92B4
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D91F8: ; jump table
.short _021D9200 - _021D91F8 - 2 ; case 0
.short _021D9234 - _021D91F8 - 2 ; case 1
.short _021D925E - _021D91F8 - 2 ; case 2
.short _021D927E - _021D91F8 - 2 ; case 3
_021D9200:
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA178
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021DAB80
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021DB4E8
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DAAF4
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D9234:
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DAB18
cmp r0, #0
beq _021D92B4
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA710
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA77C
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D925E:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA7B8
cmp r0, #0
beq _021D92B4
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA720
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D927E:
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA738
cmp r0, #0
beq _021D92B4
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9964
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021D9DD8
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
bl MOD15_021DA10C
add r0, r5, #0
bl MOD15_021D8998
_021D92B4:
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D92B8
MOD15_021D92B8: ; 0x021D92B8
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r4, [r5]
ldr r0, [r4, #0x18]
bl MOD15_021D872C
add r1, r0, #0
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9E3C
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D92D8
MOD15_021D92D8: ; 0x021D92D8
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r4, [r5]
ldr r0, [r4, #0x18]
bl MOD15_021D8734
add r1, r0, #0
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA124
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D92F8
MOD15_021D92F8: ; 0x021D92F8
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r4, [r5]
ldr r0, [r4, #0x18]
bl MOD15_021D873C
add r1, r0, #0
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA5B4
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D9318
MOD15_021D9318: ; 0x021D9318
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r4, [r5]
ldr r0, [r4, #0x18]
bl MOD15_021D8794
add r1, r0, #0
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DABC0
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D9338
MOD15_021D9338: ; 0x021D9338
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #0x14]
ldr r4, [r5]
cmp r0, #0
beq _021D934A
cmp r0, #1
beq _021D9364
pop {r3, r4, r5, pc}
_021D934A:
ldr r0, [r4, #0x18]
bl MOD15_021D87A0
add r1, r0, #0
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DABFC
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
pop {r3, r4, r5, pc}
_021D9364:
mov r0, #0x7b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DACB8
cmp r0, #0
beq _021D9384
mov r0, #0x1f
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #1
bl MOD15_021DB4E8
add r0, r5, #0
bl MOD15_021D8998
_021D9384:
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D9388
MOD15_021D9388: ; 0x021D9388
push {r4, lr}
add r4, r1, #0
mov r0, #0x1e
ldr r1, [r4]
lsl r0, r0, #4
ldr r0, [r1, r0]
mov r1, #0
bl MOD15_021D9CB4
add r0, r4, #0
bl MOD15_021D8998
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021D93A4
MOD15_021D93A4: ; 0x021D93A4
push {r3, r4, r5, lr}
add r5, r1, #0
mov r0, #0x1e
ldr r4, [r5]
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #2
bl MOD15_021D9CB4
ldr r0, [r5, #4]
bl MOD15_021D87EC
add r1, r0, #0
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9ECC
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA118
cmp r0, #0
beq _021D93E2
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA0F4
b _021D93EC
_021D93E2:
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9DC0
_021D93EC:
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D93F4
MOD15_021D93F4: ; 0x021D93F4
push {r3, r4, r5, lr}
add r5, r1, #0
mov r0, #0x1e
ldr r4, [r5]
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #3
bl MOD15_021D9CB4
ldr r0, [r5, #4]
bl MOD15_021D87EC
add r1, r0, #0
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9ECC
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA118
cmp r0, #0
beq _021D9432
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA0F4
b _021D943C
_021D9432:
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9DC0
_021D943C:
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D9444
MOD15_021D9444: ; 0x021D9444
push {r4, lr}
add r4, r1, #0
mov r0, #0x1e
ldr r1, [r4]
lsl r0, r0, #4
ldr r0, [r1, r0]
mov r1, #1
bl MOD15_021D9CB4
add r0, r4, #0
bl MOD15_021D8998
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021D9460
MOD15_021D9460: ; 0x021D9460
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #4]
ldr r4, [r5]
bl MOD15_021D87EC
add r1, r0, #0
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9F58
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D9480
MOD15_021D9480: ; 0x021D9480
push {r3, r4, r5, lr}
add r5, r1, #0
mov r0, #0x1e
ldr r4, [r5]
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #0
bl MOD15_021D9CB4
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9F88
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA118
cmp r0, #0
beq _021D94B6
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD15_021DA100
b _021D94C0
_021D94B6:
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl MOD15_021D9DCC
_021D94C0:
add r0, r5, #0
bl MOD15_021D8998
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D94C8
MOD15_021D94C8: ; 0x021D94C8
push {r4, lr}
add r4, r1, #0
mov r0, #0x1f
ldr r1, [r4]
lsl r0, r0, #4
ldr r0, [r1, r0]
mov r1, #0
mov r2, #1
bl MOD15_021DB520
add r0, r4, #0
bl MOD15_021D8998
pop {r4, pc}
thumb_func_start MOD15_021D94E4
MOD15_021D94E4: ; 0x021D94E4
push {r4, lr}
add r4, r1, #0
mov r0, #0x1f
ldr r1, [r4]
lsl r0, r0, #4
ldr r0, [r1, r0]
mov r1, #1
add r2, r1, #0
bl MOD15_021DB520
add r0, r4, #0
bl MOD15_021D8998
pop {r4, pc}
thumb_func_start MOD15_021D9500
MOD15_021D9500: ; 0x021D9500
push {r4, lr}
add r4, r1, #0
mov r0, #0x1f
ldr r1, [r4]
lsl r0, r0, #4
ldr r0, [r1, r0]
mov r1, #0
add r2, r1, #0
bl MOD15_021DB520
add r0, r4, #0
bl MOD15_021D8998
pop {r4, pc}
thumb_func_start MOD15_021D951C
MOD15_021D951C: ; 0x021D951C
push {r4, lr}
add r4, r1, #0
mov r0, #0x1f
ldr r1, [r4]
lsl r0, r0, #4
ldr r0, [r1, r0]
mov r1, #1
mov r2, #0
bl MOD15_021DB520
add r0, r4, #0
bl MOD15_021D8998
pop {r4, pc}
thumb_func_start MOD15_021D9538
MOD15_021D9538: ; 0x021D9538
mov r1, #0x1e
lsl r1, r1, #4
ldr r3, _021D9544 ; =MOD15_021D9CB0
ldr r0, [r0, r1]
bx r3
nop
_021D9544: .word MOD15_021D9CB0
thumb_func_start MOD15_021D9548
MOD15_021D9548: ; 0x021D9548
ldr r0, [r0, #0x20]
bx lr
thumb_func_start MOD15_021D954C
MOD15_021D954C: ; 0x021D954C
ldr r0, [r0, #0x24]
bx lr
thumb_func_start MOD15_021D9550
MOD15_021D9550: ; 0x021D9550
push {r3, r4, r5, r6}
mov r4, #0x15
lsl r4, r4, #4
mov r5, #0x24
add r6, r0, r4
mul r5, r2
add r5, r6, r5
str r5, [r1]
add r5, r4, #0
add r5, #0x48
add r6, r0, r5
mov r5, #0x14
mul r5, r2
lsl r2, r2, #2
add r5, r6, r5
add r2, r0, r2
add r0, r4, #0
str r5, [r1, #8]
add r0, #0x70
ldr r0, [r2, r0]
add r4, #0x78
str r0, [r1, #0xc]
ldr r0, [r2, r4]
str r0, [r1, #0x10]
add r0, r1, #0
add r0, #0x20
strb r3, [r0]
mov r0, #0
str r0, [r1, #4]
str r0, [r1, #0x14]
str r0, [r1, #0x18]
str r0, [r1, #0x1c]
pop {r3, r4, r5, r6}
bx lr
thumb_func_start MOD15_021D9594
MOD15_021D9594: ; 0x021D9594
push {r3, r4, r5, lr}
sub sp, #0x20
ldr r0, [r0, #0x24]
str r0, [sp]
lsl r0, r2, #0xc
str r0, [sp, #8]
lsl r0, r3, #0xc
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [sp, #0x30]
str r1, [sp, #4]
str r0, [sp, #0x14]
ldr r0, [sp, #0x34]
str r0, [sp, #0x18]
mov r0, #0x23
str r0, [sp, #0x1c]
bl OS_DisableInterrupts
add r4, r0, #0
add r0, sp, #0
bl FUN_0201FF84
add r5, r0, #0
add r0, r4, #0
bl OS_RestoreInterrupts
cmp r5, #0
beq _021D95E0
add r0, r5, #0
mov r1, #1
bl FUN_020200BC
mov r1, #1
add r0, r5, #0
lsl r1, r1, #0xc
bl FUN_020200D8
_021D95E0:
add r0, r5, #0
add sp, #0x20
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D95E8
MOD15_021D95E8: ; 0x021D95E8
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
mov r1, #0x1b
add r5, r0, #0
mov r0, #0x23
lsl r1, r1, #4
add r7, r2, #0
bl AllocFromHeap
add r4, r0, #0
str r5, [r4]
str r6, [r4, #4]
str r7, [r4, #8]
mov r0, #0
str r0, [r4, #0x3c]
str r0, [r4, #0x40]
str r0, [r4, #0x44]
mov r0, #0x80
mov r1, #0x23
bl FUN_020219F4
str r0, [r4, #0x4c]
ldr r2, _021D9630 ; =0x00000182
mov r0, #0
mov r1, #0x1a
mov r3, #0x23
bl FUN_0200A86C
str r0, [r4, #0x48]
mov r0, #0x23
bl FUN_02013690
str r0, [r4, #0x50]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_021D9630: .word 0x00000182
thumb_func_start MOD15_021D9634
MOD15_021D9634: ; 0x021D9634
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x50]
cmp r0, #0
beq _021D9642
bl FUN_020136C0
_021D9642:
ldr r0, [r4, #0x3c]
cmp r0, #0
beq _021D964C
bl FUN_0201FFC8
_021D964C:
ldr r0, [r4, #0x40]
cmp r0, #0
beq _021D9656
bl FUN_0201FFC8
_021D9656:
ldr r0, [r4, #0x44]
cmp r0, #0
beq _021D9660
bl FUN_0201FFC8
_021D9660:
ldr r0, [r4, #0x48]
cmp r0, #0
beq _021D966A
bl FUN_0200A8B8
_021D966A:
ldr r0, [r4, #0x4c]
cmp r0, #0
beq _021D9674
bl FUN_02021A20
_021D9674:
add r0, r4, #0
add r0, #0xc
bl FUN_02019178
add r0, r4, #0
add r0, #0x1c
bl FUN_02019178
add r0, r4, #0
add r0, #0x2c
bl FUN_02019178
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
thumb_func_start MOD15_021D9694
MOD15_021D9694: ; 0x021D9694
push {r3, r4, r5, r6, lr}
sub sp, #0x14
add r5, r0, #0
ldr r0, [r5]
bl MOD15_021D9548
add r6, r0, #0
add r0, r5, #0
bl MOD15_021D97E4
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r0, #0x23
str r0, [sp, #0xc]
mov r0, #0x4c
add r2, r6, #0
add r3, r1, #0
bl FUN_020068C8
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r1, #1
str r1, [sp, #8]
mov r0, #0x23
str r0, [sp, #0xc]
mov r0, #0x4c
add r2, r6, #0
bl FUN_0200687C
lsr r4, r0, #5
mov r0, #1
str r0, [sp]
mov r0, #0x1b
str r0, [sp, #4]
mov r0, #4
str r0, [sp, #8]
mov r2, #0
lsl r0, r4, #0x10
add r1, r5, #0
str r2, [sp, #0xc]
lsr r0, r0, #0x10
str r0, [sp, #0x10]
add r0, r6, #0
add r1, #0xc
mov r3, #3
bl FUN_02019064
mov r0, #0x15
str r0, [sp]
mov r0, #0x1b
str r0, [sp, #4]
mov r3, #2
add r1, r5, #0
str r3, [sp, #8]
mov r0, #0xb
str r0, [sp, #0xc]
add r0, r4, #0
add r0, #0x6c
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
add r0, r6, #0
add r1, #0x1c
mov r2, #0
bl FUN_02019064
mov r0, #0xf
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
mov r0, #4
str r0, [sp, #8]
mov r0, #0xb
str r0, [sp, #0xc]
add r0, r4, #0
add r0, #0xa2
lsl r0, r0, #0x10
lsr r0, r0, #0x10
add r1, r5, #0
str r0, [sp, #0x10]
add r0, r6, #0
add r1, #0x2c
mov r2, #0
mov r3, #0x17
bl FUN_02019064
add r0, r4, #0
add r0, #0xc2
str r0, [sp]
mov r1, #0
str r1, [sp, #4]
str r1, [sp, #8]
mov r0, #0x23
str r0, [sp, #0xc]
mov r0, #0x26
add r2, r6, #0
add r3, r1, #0
bl FUN_0200687C
add r0, r4, #0
add r0, #0xc2
str r0, [r5, #0x60]
mov r0, #0x20
str r0, [sp]
mov r0, #0x23
mov r3, #7
str r0, [sp, #4]
mov r0, #0x26
mov r1, #0x18
mov r2, #0
lsl r3, r3, #6
bl FUN_02006930
ldr r0, [r5, #4]
bl MOD15_021D87E0
lsl r0, r0, #0x18
add r2, r4, #0
lsr r0, r0, #0x18
add r2, #0xcb
str r0, [sp]
mov r0, #0x23
lsl r2, r2, #0x10
str r0, [sp, #4]
add r0, r6, #0
mov r1, #0
lsr r2, r2, #0x10
mov r3, #0xf
bl FUN_0200CD68
add r0, r5, #0
add r4, #0xcb
add r0, #0x1c
add r1, r4, #0
mov r2, #0xf
bl FUN_0200D06C
add r0, r5, #0
add r0, #0xc
bl FUN_02019270
add r0, r5, #0
add r0, #0x1c
bl FUN_02019270
add r0, r5, #0
bl MOD15_021D9868
add r0, r5, #0
bl MOD15_021D9964
add r0, r5, #0
mov r1, #0
bl MOD15_021D9CB4
add r0, r5, #0
bl MOD15_021D98C0
add r0, r6, #0
mov r1, #0
bl FUN_02017CD0
add sp, #0x14
pop {r3, r4, r5, r6, pc}
thumb_func_start MOD15_021D97E4
MOD15_021D97E4: ; 0x021D97E4
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
mov r0, #7
lsl r0, r0, #6
str r0, [sp]
mov r0, #0x23
mov r2, #0
str r0, [sp, #4]
mov r0, #0x4c
mov r1, #6
add r3, r2, #0
bl FUN_02006930
mov r0, #0x4c
mov r1, #6
add r2, sp, #8
mov r3, #0x23
bl FUN_02006C08
add r4, r0, #0
ldr r0, [sp, #8]
add r1, r5, #0
mov r2, #5
ldr r0, [r0, #0xc]
add r1, #0x70
lsl r2, r2, #6
bl MIi_CpuCopy16
add r5, #0x70
mov r1, #5
add r0, r5, #0
lsl r1, r1, #6
bl DC_FlushRange
add r0, r4, #0
bl FreeToHeap
add sp, #0xc
pop {r4, r5, pc}
thumb_func_start MOD15_021D9834
MOD15_021D9834: ; 0x021D9834
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #4]
bl MOD15_021D86E4
cmp r0, #2
bne _021D985A
ldr r0, [r4, #4]
bl MOD15_021D86FC
add r0, r0, #1
add r4, #0x70
lsl r0, r0, #5
add r0, r4, r0
mov r1, #0
mov r2, #0x20
bl GX_LoadBGPltt
pop {r4, pc}
_021D985A:
add r4, #0x70
add r0, r4, #0
mov r1, #0
mov r2, #0x20
bl GX_LoadBGPltt
pop {r4, pc}
thumb_func_start MOD15_021D9868
MOD15_021D9868: ; 0x021D9868
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #4]
bl MOD15_021D86E4
cmp r0, #0
beq _021D9880
cmp r0, #1
beq _021D9896
cmp r0, #2
beq _021D98BA
pop {r4, pc}
_021D9880:
add r0, r4, #0
mov r1, #0x68
add r0, #0x54
strh r1, [r0]
add r0, r4, #0
mov r1, #0x10
add r0, #0x56
strh r1, [r0]
mov r0, #1
str r0, [r4, #0x5c]
pop {r4, pc}
_021D9896:
add r0, r4, #0
mov r1, #0x30
add r0, #0x54
strh r1, [r0]
add r0, r4, #0
mov r2, #0x10
add r0, #0x56
strh r2, [r0]
add r0, r4, #0
mov r1, #0xa0
add r0, #0x58
strh r1, [r0]
add r0, r4, #0
add r0, #0x5a
strh r2, [r0]
mov r0, #2
str r0, [r4, #0x5c]
pop {r4, pc}
_021D98BA:
mov r0, #0
str r0, [r4, #0x5c]
pop {r4, pc}
thumb_func_start MOD15_021D98C0
MOD15_021D98C0: ; 0x021D98C0
push {r3, r4, r5, lr}
sub sp, #0x30
add r4, r0, #0
ldr r0, [r4, #0x5c]
cmp r0, #0
beq _021D98D8
add r0, r4, #0
add r0, #0x54
add r1, sp, #8
bl MOD15_021D9C1C
b _021D98E2
_021D98D8:
mov r1, #0x80
add r0, sp, #8
strh r1, [r0]
mov r1, #0x18
strh r1, [r0, #2]
_021D98E2:
mov r2, #0
ldr r0, [r4]
add r1, sp, #0xc
add r3, r2, #0
bl MOD15_021D9550
mov r2, #0
str r2, [sp]
mov r0, #1
str r0, [sp, #4]
add r5, sp, #8
mov r3, #2
ldrsh r2, [r5, r2]
ldrsh r3, [r5, r3]
ldr r0, [r4]
add r1, sp, #0xc
bl MOD15_021D9594
str r0, [r4, #0x3c]
add r0, r4, #0
mov r1, #1
bl MOD15_021D9E98
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
ldr r0, [r4]
add r1, sp, #0xc
mov r2, #6
mov r3, #0x18
bl MOD15_021D9594
mov r1, #0xd
str r0, [r4, #0x40]
bl FUN_02020130
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
ldr r0, [r4]
add r1, sp, #0xc
mov r2, #0xfa
mov r3, #0x18
bl MOD15_021D9594
str r0, [r4, #0x44]
mov r1, #0xc
bl FUN_02020130
ldr r0, [r4, #4]
bl MOD15_021D86E4
cmp r0, #2
beq _021D995E
ldr r0, [r4, #0x44]
mov r1, #0
bl FUN_020200A0
ldr r0, [r4, #0x40]
mov r1, #0
bl FUN_020200A0
_021D995E:
add sp, #0x30
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021D9964
MOD15_021D9964: ; 0x021D9964
push {r4, lr}
add r4, r0, #0
bl MOD15_021D9834
add r0, r4, #0
add r0, #0xc
mov r1, #0xd
bl FUN_02019620
ldr r0, [r4, #4]
bl MOD15_021D86E4
cmp r0, #0
beq _021D998A
cmp r0, #1
beq _021D99B0
cmp r0, #2
beq _021D99FA
b _021D9A02
_021D998A:
add r0, r4, #0
add r1, r4, #0
add r0, #0xc
add r1, #0x54
bl MOD15_021D9C30
ldr r0, [r4, #4]
mov r1, #0
bl MOD15_021D8708
add r1, r4, #0
add r2, r4, #0
add r3, r0, #0
add r0, r4, #0
add r1, #0xc
add r2, #0x54
bl MOD15_021D9C58
b _021D9A02
_021D99B0:
add r0, r4, #0
add r1, r4, #0
add r0, #0xc
add r1, #0x54
bl MOD15_021D9C30
add r0, r4, #0
add r1, r4, #0
add r0, #0xc
add r1, #0x58
bl MOD15_021D9C30
ldr r0, [r4, #4]
mov r1, #0
bl MOD15_021D8708
add r1, r4, #0
add r2, r4, #0
add r3, r0, #0
add r0, r4, #0
add r1, #0xc
add r2, #0x54
bl MOD15_021D9C58
ldr r0, [r4, #4]
mov r1, #1
bl MOD15_021D8708
add r1, r4, #0
add r2, r4, #0
add r3, r0, #0
add r0, r4, #0
add r1, #0xc
add r2, #0x58
bl MOD15_021D9C58
b _021D9A02
_021D99FA:
add r0, r4, #0
bl MOD15_021D9A0C
str r0, [r4, #0x5c]
_021D9A02:
add r4, #0xc
add r0, r4, #0
bl FUN_02019548
pop {r4, pc}
thumb_func_start MOD15_021D9A0C
MOD15_021D9A0C: ; 0x021D9A0C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
str r0, [sp, #0x10]
ldr r0, [r0, #4]
mov r1, #0x23
bl MOD15_021D8720
mov r4, #0
str r0, [sp, #0x1c]
mov r0, #1
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x10]
add r0, #0x64
str r4, [sp, #0x18]
add r5, r4, #0
bl MOD15_021D9B04
ldr r7, [sp, #0x10]
add r0, r7, #0
str r0, [sp, #0x24]
add r0, #0xc
str r0, [sp, #0x24]
add r0, r7, #0
add r6, r7, #0
str r0, [sp, #0x20]
add r0, #0x64
add r6, #0x54
str r0, [sp, #0x20]
_021D9A46:
ldr r0, [sp, #0x20]
ldr r1, [sp, #0x1c]
bl MOD15_021D9B3C
cmp r0, #3
bhi _021D9ADE
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D9A5E: ; jump table
.short _021D9A66 - _021D9A5E - 2 ; case 0
.short _021D9A8E - _021D9A5E - 2 ; case 1
.short _021D9AD4 - _021D9A5E - 2 ; case 2
.short _021D9ADA - _021D9A5E - 2 ; case 3
_021D9A66:
str r4, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021D9AFC ; =0x0003040D
ldr r2, [sp, #0x1c]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #0x24]
mov r1, #1
add r3, r5, #0
bl FUN_0201BDE0
ldr r1, [sp, #0x1c]
mov r0, #1
mov r2, #0
bl FUN_02002E14
add r5, r5, r0
b _021D9ADE
_021D9A8E:
add r1, r5, #0
add r0, r7, #0
add r1, #0x32
add r0, #0x54
strh r1, [r0]
add r1, r4, #0
add r0, r7, #0
add r1, #8
add r0, #0x56
strh r1, [r0]
ldr r0, [sp, #0x24]
add r1, r6, #0
bl MOD15_021D9C30
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x18]
ldr r0, [r0, #4]
bl MOD15_021D8708
add r3, r0, #0
ldr r0, _021D9B00 ; =0x0000FFFF
cmp r3, r0
beq _021D9AC6
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x24]
add r2, r6, #0
bl MOD15_021D9C58
_021D9AC6:
ldr r0, [sp, #0x18]
add r7, r7, #4
add r0, r0, #1
add r6, r6, #4
str r0, [sp, #0x18]
add r5, #0x64
b _021D9ADE
_021D9AD4:
add r4, #0x10
mov r5, #0
b _021D9ADE
_021D9ADA:
mov r0, #0
str r0, [sp, #0x14]
_021D9ADE:
ldr r0, [sp, #0x14]
cmp r0, #0
bne _021D9A46
ldr r0, [sp, #0x10]
add r0, #0x64
str r0, [sp, #0x10]
bl MOD15_021D9B30
ldr r0, [sp, #0x1c]
bl FUN_02021A20
ldr r0, [sp, #0x18]
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
nop
_021D9AFC: .word 0x0003040D
_021D9B00: .word 0x0000FFFF
thumb_func_start MOD15_021D9B04
MOD15_021D9B04: ; 0x021D9B04
push {r4, lr}
add r4, r0, #0
ldr r0, [r1, #4]
mov r1, #0x23
bl MOD15_021D8720
str r0, [r4]
bl FUN_02021F2C
str r0, [r4, #4]
ldrh r1, [r0]
ldr r0, _021D9B2C ; =0x0000FFFE
cmp r1, r0
bne _021D9B26
mov r0, #1
str r0, [r4, #8]
pop {r4, pc}
_021D9B26:
mov r0, #0
str r0, [r4, #8]
pop {r4, pc}
.align 2, 0
_021D9B2C: .word 0x0000FFFE
thumb_func_start MOD15_021D9B30
MOD15_021D9B30: ; 0x021D9B30
ldr r3, _021D9B38 ; =FUN_02021A20
ldr r0, [r0]
bx r3
nop
_021D9B38: .word FUN_02021A20
thumb_func_start MOD15_021D9B3C
MOD15_021D9B3C: ; 0x021D9B3C
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
ldr r0, [r4, #4]
str r1, [sp]
mov ip, r0
ldr r0, [r4, #8]
cmp r0, #3
bhi _021D9BCC
add r1, r0, r0
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021D9B58: ; jump table
.short _021D9B60 - _021D9B58 - 2 ; case 0
.short _021D9BB6 - _021D9B58 - 2 ; case 1
.short _021D9BC2 - _021D9B58 - 2 ; case 2
.short _021D9BCC - _021D9B58 - 2 ; case 3
_021D9B60:
cmp r0, #0
bne _021D9B9C
ldr r6, _021D9C04 ; =0x0000FFFE
mov r3, #0xe
mov r0, #1
mov r1, #3
mov r2, #2
add r7, r6, #1
lsl r3, r3, #0xc
_021D9B72:
ldr r5, [r4, #4]
ldrh r5, [r5]
cmp r5, r3
beq _021D9B84
cmp r5, r6
beq _021D9B8C
cmp r5, r7
beq _021D9B88
b _021D9B90
_021D9B84:
str r2, [r4, #8]
b _021D9B96
_021D9B88:
str r1, [r4, #8]
b _021D9B96
_021D9B8C:
str r0, [r4, #8]
b _021D9B96
_021D9B90:
ldr r5, [r4, #4]
add r5, r5, #2
str r5, [r4, #4]
_021D9B96:
ldr r5, [r4, #8]
cmp r5, #0
beq _021D9B72
_021D9B9C:
ldr r3, [r4, #4]
mov r2, ip
sub r3, r3, r2
lsr r2, r3, #0x1f
add r2, r3, r2
asr r2, r2, #1
ldr r0, [sp]
mov r1, ip
add r2, r2, #1
bl FUN_02021E8C
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021D9BB6:
mov r0, ip
bl FUN_0201B8B8
str r0, [r4, #4]
mov r0, #1
b _021D9BD0
_021D9BC2:
mov r0, ip
add r0, r0, #2
str r0, [r4, #4]
mov r0, #2
b _021D9BD0
_021D9BCC:
mov r0, #3
pop {r3, r4, r5, r6, r7, pc}
_021D9BD0:
ldr r1, [r4, #4]
ldrh r2, [r1]
mov r1, #0xe
lsl r1, r1, #0xc
cmp r2, r1
beq _021D9BEA
ldr r1, _021D9C04 ; =0x0000FFFE
cmp r2, r1
beq _021D9BF6
add r1, r1, #1
cmp r2, r1
beq _021D9BF0
b _021D9BFC
_021D9BEA:
mov r1, #2
str r1, [r4, #8]
pop {r3, r4, r5, r6, r7, pc}
_021D9BF0:
mov r1, #3
str r1, [r4, #8]
pop {r3, r4, r5, r6, r7, pc}
_021D9BF6:
mov r1, #1
str r1, [r4, #8]
pop {r3, r4, r5, r6, r7, pc}
_021D9BFC:
mov r1, #0
str r1, [r4, #8]
pop {r3, r4, r5, r6, r7, pc}
nop
_021D9C04: .word 0x0000FFFE
thumb_func_start MOD15_021D9C08
MOD15_021D9C08: ; 0x021D9C08
mov r2, #0
ldrsh r2, [r0, r2]
sub r2, #0x30
strh r2, [r1]
mov r2, #2
ldrsh r0, [r0, r2]
sub r0, #8
strh r0, [r1, #2]
bx lr
.align 2, 0
thumb_func_start MOD15_021D9C1C
MOD15_021D9C1C: ; 0x021D9C1C
mov r2, #0
ldrsh r2, [r0, r2]
add r2, #0x18
strh r2, [r1]
mov r2, #2
ldrsh r0, [r0, r2]
add r0, #8
strh r0, [r1, #2]
bx lr
.align 2, 0
thumb_func_start MOD15_021D9C30
MOD15_021D9C30: ; 0x021D9C30
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
add r0, r1, #0
add r1, sp, #8
bl MOD15_021D9C08
mov r0, #0x60
str r0, [sp]
mov r0, #0x10
str r0, [sp, #4]
add r3, sp, #8
ldrh r2, [r3]
ldrh r3, [r3, #2]
add r0, r4, #0
mov r1, #0xe
bl FUN_020196F4
add sp, #0xc
pop {r3, r4, pc}
thumb_func_start MOD15_021D9C58
MOD15_021D9C58: ; 0x021D9C58
push {r3, r4, r5, r6, lr}
sub sp, #0x14
add r5, r0, #0
ldr r0, _021D9CA8 ; =0x0000FFFF
add r6, r3, #0
add r4, r1, #0
cmp r6, r0
beq _021D9CA2
add r0, r2, #0
add r1, sp, #0x10
bl MOD15_021D9C08
ldr r1, [r5, #0x4c]
add r0, r6, #0
bl FUN_02013A58
ldr r1, [r5, #0x4c]
mov r0, #1
mov r2, #0
bl FUN_02002E14
add r3, sp, #0x10
mov r0, #2
ldrsh r0, [r3, r0]
mov r6, #0
mov r1, #1
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021D9CAC ; =0x0005060E
str r0, [sp, #8]
str r6, [sp, #0xc]
ldrsh r3, [r3, r6]
ldr r2, [r5, #0x4c]
add r0, r4, #0
bl FUN_0201BDE0
_021D9CA2:
add sp, #0x14
pop {r3, r4, r5, r6, pc}
nop
_021D9CA8: .word 0x0000FFFF
_021D9CAC: .word 0x0005060E
thumb_func_start MOD15_021D9CB0
MOD15_021D9CB0: ; 0x021D9CB0
ldr r0, [r0, #0x5c]
bx lr
thumb_func_start MOD15_021D9CB4
MOD15_021D9CB4: ; 0x021D9CB4
push {r4, r5, r6, lr}
sub sp, #0x10
add r4, r0, #0
add r5, r1, #0
add r0, #0x1c
mov r1, #9
bl FUN_02019620
cmp r5, #3
bhi _021D9DB0
add r0, r5, r5
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021D9CD4: ; jump table
.short _021D9CDC - _021D9CD4 - 2 ; case 0
.short _021D9D66 - _021D9CD4 - 2 ; case 1
.short _021D9D40 - _021D9CD4 - 2 ; case 2
.short _021D9D8C - _021D9CD4 - 2 ; case 3
_021D9CDC:
mov r0, #2
mov r1, #0x3c
mov r2, #0
bl FUN_0200AA90
add r5, r0, #0
mov r0, #0x4b
lsl r0, r0, #2
mov r1, #0
bl FUN_020219F4
mov r1, #0
add r6, r0, #0
add r0, r5, #0
add r2, r1, #0
bl FUN_0200AEE0
ldr r0, [r4, #4]
bl MOD15_021D86E8
add r1, r0, #0
ldr r0, [r4, #0x48]
ldr r2, [r4, #0x4c]
bl FUN_0200A8E0
ldr r2, [r4, #0x4c]
add r0, r5, #0
add r1, r6, #0
bl FUN_0200B7B8
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021D9DBC ; =0x00010209
mov r1, #1
str r0, [sp, #8]
add r0, r4, #0
add r0, #0x1c
add r2, r6, #0
str r3, [sp, #0xc]
bl FUN_0201BDE0
add r0, r6, #0
bl FUN_02021A20
add r0, r5, #0
bl FUN_0200AB18
b _021D9DB0
_021D9D40:
ldr r0, [r4, #0x48]
ldr r2, [r4, #0x4c]
mov r1, #6
bl FUN_0200A8E0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021D9DBC ; =0x00010209
mov r1, #1
str r0, [sp, #8]
str r3, [sp, #0xc]
add r0, r4, #0
ldr r2, [r4, #0x4c]
add r0, #0x1c
bl FUN_0201BDE0
b _021D9DB0
_021D9D66:
ldr r0, [r4, #0x48]
ldr r2, [r4, #0x4c]
mov r1, #7
bl FUN_0200A8E0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021D9DBC ; =0x00010209
mov r1, #1
str r0, [sp, #8]
str r3, [sp, #0xc]
add r0, r4, #0
ldr r2, [r4, #0x4c]
add r0, #0x1c
bl FUN_0201BDE0
b _021D9DB0
_021D9D8C:
ldr r0, [r4, #0x48]
ldr r2, [r4, #0x4c]
mov r1, #8
bl FUN_0200A8E0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021D9DBC ; =0x00010209
mov r1, #1
str r0, [sp, #8]
str r3, [sp, #0xc]
add r0, r4, #0
ldr r2, [r4, #0x4c]
add r0, #0x1c
bl FUN_0201BDE0
_021D9DB0:
add r4, #0x1c
add r0, r4, #0
bl FUN_02019548
add sp, #0x10
pop {r4, r5, r6, pc}
.align 2, 0
_021D9DBC: .word 0x00010209
thumb_func_start MOD15_021D9DC0
MOD15_021D9DC0: ; 0x021D9DC0
ldr r3, _021D9DC8 ; =MOD15_021D9E98
mov r1, #0
bx r3
nop
_021D9DC8: .word MOD15_021D9E98
thumb_func_start MOD15_021D9DCC
MOD15_021D9DCC: ; 0x021D9DCC
ldr r3, _021D9DD4 ; =MOD15_021D9E98
mov r1, #1
bx r3
nop
_021D9DD4: .word MOD15_021D9E98
thumb_func_start MOD15_021D9DD8
MOD15_021D9DD8: ; 0x021D9DD8
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x3c]
bl FUN_020200A0
add r0, r4, #0
mov r1, #1
bl MOD15_021D9E98
pop {r4, pc}
thumb_func_start MOD15_021D9DEC
MOD15_021D9DEC: ; 0x021D9DEC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #4]
bl MOD15_021D86E4
cmp r0, #2
bne _021D9E0A
ldr r0, [r4, #0x40]
mov r1, #0
bl FUN_020200A0
ldr r0, [r4, #0x44]
mov r1, #0
bl FUN_020200A0
_021D9E0A:
pop {r4, pc}
thumb_func_start MOD15_021D9E0C
MOD15_021D9E0C: ; 0x021D9E0C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #4]
bl MOD15_021D86E4
cmp r0, #2
bne _021D9E3A
ldr r0, [r4, #0x40]
mov r1, #1
bl FUN_020200A0
ldr r0, [r4, #0x44]
mov r1, #1
bl FUN_020200A0
ldr r0, [r4, #0x40]
mov r1, #0xd
bl FUN_02020130
ldr r0, [r4, #0x44]
mov r1, #0xc
bl FUN_02020130
_021D9E3A:
pop {r4, pc}
thumb_func_start MOD15_021D9E3C
MOD15_021D9E3C: ; 0x021D9E3C
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
ldr r0, [r4, #0x5c]
cmp r0, #0
beq _021D9E6C
add r2, r4, #0
lsl r0, r1, #2
add r2, #0x54
add r0, r2, r0
add r1, sp, #0
bl MOD15_021D9C1C
add r1, sp, #0
mov r2, #0
ldrsh r0, [r1, r2]
lsl r0, r0, #0xc
str r0, [sp, #4]
mov r0, #2
ldrsh r0, [r1, r0]
lsl r0, r0, #0xc
str r0, [sp, #8]
str r2, [sp, #0xc]
b _021D9E84
_021D9E6C:
mov r0, #2
lsl r0, r0, #0x12
str r0, [sp, #4]
mov r0, #6
lsl r0, r0, #0xe
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [r4, #0x3c]
add r1, sp, #4
bl FUN_02020044
_021D9E84:
ldr r0, [r4, #0x3c]
add r1, sp, #4
bl FUN_02020044
add r0, r4, #0
mov r1, #1
bl MOD15_021D9E98
add sp, #0x10
pop {r4, pc}
thumb_func_start MOD15_021D9E98
MOD15_021D9E98: ; 0x021D9E98
push {r3, lr}
ldr r2, [r0, #0x5c]
cmp r2, #0
beq _021D9EB6
cmp r1, #0
ldr r0, [r0, #0x3c]
beq _021D9EAE
mov r1, #0
bl FUN_02020130
pop {r3, pc}
_021D9EAE:
mov r1, #1
bl FUN_02020130
pop {r3, pc}
_021D9EB6:
cmp r1, #0
ldr r0, [r0, #0x3c]
beq _021D9EC4
mov r1, #0xe
bl FUN_02020130
pop {r3, pc}
_021D9EC4:
mov r1, #0xf
bl FUN_02020130
pop {r3, pc}
thumb_func_start MOD15_021D9ECC
MOD15_021D9ECC: ; 0x021D9ECC
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
add r4, r1, #0
add r0, #0x2c
mov r1, #9
bl FUN_02019620
ldr r0, [r5, #0x48]
ldr r2, [r5, #0x4c]
mov r1, #9
bl FUN_0200A8E0
mov r1, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021D9F54 ; =0x00010209
mov r3, #0xe
str r0, [sp, #8]
str r1, [sp, #0xc]
add r0, r5, #0
ldr r2, [r5, #0x4c]
add r0, #0x2c
bl FUN_0201BDE0
ldr r0, [r5, #0x48]
ldr r2, [r5, #0x4c]
mov r1, #0xa
bl FUN_0200A8E0
mov r0, #0x10
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021D9F54 ; =0x00010209
mov r1, #0
str r0, [sp, #8]
str r1, [sp, #0xc]
add r0, r5, #0
ldr r2, [r5, #0x4c]
add r0, #0x2c
mov r3, #0xe
bl FUN_0201BDE0
ldr r2, [r5, #0x60]
add r0, r5, #0
lsl r2, r2, #0x10
add r0, #0x2c
mov r1, #0
lsr r2, r2, #0x10
mov r3, #0xe
bl FUN_0200CCA4
add r1, r5, #0
ldr r0, [r5, #0x50]
add r1, #0x2c
mov r2, #0
lsl r3, r4, #4
bl FUN_020136F8
add r5, #0x2c
add r0, r5, #0
bl FUN_020191D0
add sp, #0x10
pop {r3, r4, r5, pc}
nop
_021D9F54: .word 0x00010209
thumb_func_start MOD15_021D9F58
MOD15_021D9F58: ; 0x021D9F58
push {r3, r4, r5, lr}
sub sp, #8
add r5, r0, #0
mov r0, #0xe
str r0, [sp]
mov r0, #0x20
str r0, [sp, #4]
add r0, r5, #0
mov r2, #0
add r4, r1, #0
add r0, #0x2c
mov r1, #9
add r3, r2, #0
bl FUN_020196F4
ldr r0, [r5, #0x50]
add r5, #0x2c
add r1, r5, #0
mov r2, #0
lsl r3, r4, #4
bl FUN_020136F8
add sp, #8
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021D9F88
MOD15_021D9F88: ; 0x021D9F88
push {r4, lr}
add r4, r0, #0
add r0, #0x2c
mov r1, #0
bl FUN_0200CCF8
add r4, #0x2c
add r0, r4, #0
bl FUN_02019570
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021D9FA0
MOD15_021D9FA0: ; 0x021D9FA0
push {r4, r5, r6, lr}
add r5, r0, #0
add r4, r1, #0
mov r0, #0x23
mov r1, #0x10
add r6, r2, #0
bl AllocFromHeap
str r5, [r0]
str r4, [r0, #4]
str r6, [r0, #8]
mov r1, #0
str r1, [r0, #0xc]
pop {r4, r5, r6, pc}
thumb_func_start MOD15_021D9FBC
MOD15_021D9FBC: ; 0x021D9FBC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
cmp r0, #0
beq _021D9FCA
bl FUN_0201FFC8
_021D9FCA:
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021D9FD4
MOD15_021D9FD4: ; 0x021D9FD4
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5]
bl MOD15_021D9548
add r4, r0, #0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r0, #0x23
str r0, [sp, #0xc]
mov r0, #0x4c
mov r1, #4
add r2, r4, #0
mov r3, #3
bl FUN_020068C8
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r0, #0x23
str r0, [sp, #0xc]
mov r0, #0x4c
mov r1, #5
add r2, r4, #0
mov r3, #3
bl FUN_0200687C
ldr r1, _021DA03C ; =0x021DBA00
add r0, r4, #0
mov r2, #0
bl MOD15_021DA044
ldr r1, _021DA040 ; =0x021DBA08
add r0, r4, #0
mov r2, #1
bl MOD15_021DA044
add r0, r5, #0
bl MOD15_021DA0B8
add r0, r4, #0
mov r1, #3
bl FUN_02017CD0
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
_021DA03C: .word 0x021DBA00
_021DA040: .word 0x021DBA08
thumb_func_start MOD15_021DA044
MOD15_021DA044: ; 0x021DA044
push {r3, r4, r5, lr}
sub sp, #0x20
add r5, r1, #0
add r4, r2, #0
add r1, sp, #0x10
add r2, r5, #0
bl FUN_02019150
add r0, sp, #0x10
bl FUN_02019270
add r0, sp, #0x10
mov r1, #0xe
bl FUN_02019620
ldr r1, _021DA0B0 ; =0x00000183
mov r0, #0x1a
add r2, r4, #0
mov r3, #0x23
bl FUN_0200A738
add r4, r0, #0
mov r0, #0
add r1, r4, #0
add r2, r0, #0
bl FUN_02002E14
ldrb r1, [r5, #3]
add r2, r4, #0
lsl r1, r1, #3
sub r0, r1, r0
mov r1, #0
lsr r3, r0, #1
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021DA0B4 ; =0x0001020E
str r0, [sp, #8]
add r0, sp, #0x10
str r1, [sp, #0xc]
bl FUN_0201BDE0
add r0, sp, #0x10
bl FUN_02019548
add r0, r4, #0
bl FUN_02021A20
add r0, sp, #0x10
bl FUN_02019178
add sp, #0x20
pop {r3, r4, r5, pc}
nop
_021DA0B0: .word 0x00000183
_021DA0B4: .word 0x0001020E
thumb_func_start MOD15_021DA0B8
MOD15_021DA0B8: ; 0x021DA0B8
push {r3, r4, lr}
sub sp, #0x2c
add r4, r0, #0
ldr r0, [r4]
add r1, sp, #8
mov r2, #0
mov r3, #3
bl MOD15_021D9550
mov r0, #5
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
add r1, sp, #8
mov r2, #0x40
mov r3, #0x38
bl MOD15_021D9594
str r0, [r4, #0xc]
mov r1, #2
bl FUN_02020130
ldr r0, [r4, #0xc]
mov r1, #0
bl FUN_020200A0
add sp, #0x2c
pop {r3, r4, pc}
.align 2, 0
thumb_func_start MOD15_021DA0F4
MOD15_021DA0F4: ; 0x021DA0F4
ldr r3, _021DA0FC ; =FUN_02020130
ldr r0, [r0, #0xc]
mov r1, #3
bx r3
.align 2, 0
_021DA0FC: .word FUN_02020130
thumb_func_start MOD15_021DA100
MOD15_021DA100: ; 0x021DA100
ldr r3, _021DA108 ; =FUN_02020130
ldr r0, [r0, #0xc]
mov r1, #2
bx r3
.align 2, 0
_021DA108: .word FUN_02020130
thumb_func_start MOD15_021DA10C
MOD15_021DA10C: ; 0x021DA10C
ldr r3, _021DA114 ; =FUN_020200A0
ldr r0, [r0, #0xc]
bx r3
nop
_021DA114: .word FUN_020200A0
thumb_func_start MOD15_021DA118
MOD15_021DA118: ; 0x021DA118
ldr r3, _021DA120 ; =FUN_02020128
ldr r0, [r0, #0xc]
bx r3
nop
_021DA120: .word FUN_02020128
thumb_func_start MOD15_021DA124
MOD15_021DA124: ; 0x021DA124
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
mov r0, #0
str r0, [sp, #8]
cmp r1, #0
beq _021DA136
cmp r1, #1
beq _021DA144
_021DA136:
mov r0, #1
lsl r0, r0, #0x12
str r0, [sp]
mov r0, #0xe
lsl r0, r0, #0xe
str r0, [sp, #4]
b _021DA150
_021DA144:
mov r0, #3
lsl r0, r0, #0x12
str r0, [sp]
mov r0, #0xe
lsl r0, r0, #0xe
str r0, [sp, #4]
_021DA150:
ldr r0, [r4, #0xc]
add r1, sp, #0
bl FUN_02020044
ldr r0, [r4, #0xc]
mov r1, #2
bl FUN_02020130
add sp, #0xc
pop {r3, r4, pc}
thumb_func_start MOD15_021DA164
MOD15_021DA164: ; 0x021DA164
push {r3, lr}
ldr r0, [r0]
bl MOD15_021D9548
mov r1, #3
add r2, r1, #0
mov r3, #0x40
bl FUN_020179E0
pop {r3, pc}
thumb_func_start MOD15_021DA178
MOD15_021DA178: ; 0x021DA178
push {r3, lr}
ldr r0, [r0]
bl MOD15_021D9548
mov r1, #3
add r2, r1, #0
mov r3, #0
bl FUN_020179E0
pop {r3, pc}
thumb_func_start MOD15_021DA18C
MOD15_021DA18C: ; 0x021DA18C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
mov r0, #0x23
mov r1, #0x60
add r7, r2, #0
bl AllocFromHeap
add r4, r0, #0
str r5, [r4]
str r6, [r4, #4]
str r7, [r4, #8]
add r0, r5, #0
bl MOD15_021D9548
str r0, [r4, #0xc]
mov r0, #0
str r0, [r4, #0x10]
str r0, [r4, #0x18]
str r0, [r4, #0x5c]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_start MOD15_021DA1B8
MOD15_021DA1B8: ; 0x021DA1B8
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x5c]
cmp r0, #0
beq _021DA1C6
bl FUN_0201FFC8
_021DA1C6:
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021DA1D0
MOD15_021DA1D0: ; 0x021DA1D0
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5]
bl MOD15_021D9548
add r4, r0, #0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r3, #1
str r3, [sp, #8]
mov r0, #0x23
str r0, [sp, #0xc]
mov r0, #0x4c
mov r1, #2
add r2, r4, #0
bl FUN_020068C8
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r3, #1
str r3, [sp, #8]
mov r0, #0x23
str r0, [sp, #0xc]
mov r0, #0x4c
mov r1, #3
add r2, r4, #0
bl FUN_0200687C
add r2, r0, #0
add r0, r5, #0
add r1, r4, #0
lsr r2, r2, #5
bl MOD15_021DA2AC
add r2, r0, #0
add r0, r5, #0
add r1, r4, #0
bl MOD15_021DA3B4
add r2, r0, #0
add r0, r5, #0
add r1, r4, #0
bl MOD15_021DA480
mov r2, #0
add r0, r4, #0
mov r1, #1
sub r3, r2, #4
bl FUN_020179E0
add r0, r4, #0
mov r1, #1
mov r2, #3
mov r3, #2
bl FUN_020179E0
add r0, r5, #0
bl MOD15_021DA54C
mov r1, #2
add r2, r1, #0
ldr r0, _021DA2A0 ; =0x04000050
sub r2, #0xc
bl G2x_SetBlendBrightness_
ldr r0, _021DA2A4 ; =0x04000048
mov r2, #0x3f
ldrh r3, [r0]
mov r1, #0x1f
bic r3, r2
orr r3, r1
mov r1, #0x20
orr r3, r1
strh r3, [r0]
ldrh r3, [r0, #2]
bic r3, r2
mov r2, #0x1d
orr r2, r3
orr r2, r1
strh r2, [r0, #2]
add r2, r0, #0
mov r3, #0xff
sub r2, #8
strh r3, [r2]
mov r2, #0xa0
sub r0, r0, #4
strh r2, [r0]
lsl r3, r1, #0x15
ldr r2, [r3]
ldr r0, _021DA2A8 ; =0xFFFF1FFF
and r2, r0
lsl r0, r1, #8
orr r0, r2
str r0, [r3]
add r0, r4, #0
mov r1, #1
bl FUN_02017CD0
add sp, #0x10
pop {r3, r4, r5, pc}
nop
_021DA2A0: .word 0x04000050
_021DA2A4: .word 0x04000048
_021DA2A8: .word 0xFFFF1FFF
thumb_func_start MOD15_021DA2AC
MOD15_021DA2AC: ; 0x021DA2AC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r6, r2, #0
str r0, [sp, #0x14]
str r1, [sp, #0x18]
ldr r2, _021DA3A4 ; =0x00000181
mov r0, #1
mov r1, #0x1a
mov r3, #0x23
bl FUN_0200A86C
str r0, [sp, #0x20]
mov r0, #9
mov r7, #1
str r0, [sp, #0x24]
mov r4, #0
_021DA2CC:
cmp r4, #0
beq _021DA2E4
add r0, r4, #0
mov r1, #3
bl _s32_div_f
cmp r1, #0
bne _021DA2E4
ldr r0, [sp, #0x24]
mov r7, #1
add r0, r0, #3
str r0, [sp, #0x24]
_021DA2E4:
ldr r0, [sp, #0x14]
add r1, r4, #0
ldr r0, [r0, #8]
bl FUN_020892C4
cmp r0, #0
beq _021DA302
ldr r0, [sp, #0x20]
add r1, r4, #0
bl FUN_0200A914
add r5, r0, #0
ldr r0, _021DA3A8 ; =0x0001020F
str r0, [sp, #0x1c]
b _021DA310
_021DA302:
ldr r0, [sp, #0x20]
mov r1, #0xc
bl FUN_0200A914
add r5, r0, #0
ldr r0, _021DA3AC ; =0x0003040F
str r0, [sp, #0x1c]
_021DA310:
ldr r0, _021DA3B0 ; =0x000003EE
cmp r6, r0
blo _021DA31A
bl ErrorHandling
_021DA31A:
ldr r0, [sp, #0x24]
lsl r3, r7, #0x18
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
mov r0, #9
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0xb
str r0, [sp, #0xc]
lsl r0, r6, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
ldr r0, [sp, #0x18]
add r1, sp, #0x28
mov r2, #1
lsr r3, r3, #0x18
bl FUN_02019064
add r0, sp, #0x28
mov r1, #0xf
bl FUN_02019620
mov r0, #0
add r1, r5, #0
add r2, r0, #0
bl FUN_02002E14
mov r1, #0x48
sub r0, r1, r0
lsr r3, r0, #1
mov r0, #0
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, [sp, #0x1c]
mov r1, #0
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
add r0, sp, #0x28
add r2, r5, #0
bl FUN_0201BDE0
add r0, sp, #0x28
bl FUN_02019270
add r0, sp, #0x28
bl FUN_02019548
add r0, r5, #0
bl FUN_02021A20
add r0, sp, #0x28
bl FUN_02019178
add r4, r4, #1
add r6, #0x12
add r7, #0xa
cmp r4, #0xc
blt _021DA2CC
ldr r0, [sp, #0x20]
bl FUN_0200A8B8
add r0, r6, #0
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
nop
_021DA3A4: .word 0x00000181
_021DA3A8: .word 0x0001020F
_021DA3AC: .word 0x0003040F
_021DA3B0: .word 0x000003EE
thumb_func_start MOD15_021DA3B4
MOD15_021DA3B4: ; 0x021DA3B4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
add r4, r1, #0
mov r1, #0xce
add r6, r0, #0
lsl r1, r1, #2
add r0, r2, #0
str r2, [sp, #0x14]
cmp r0, r1
blo _021DA3CC
bl ErrorHandling
_021DA3CC:
mov r0, #0xa
str r0, [sp]
mov r0, #0x19
str r0, [sp, #4]
mov r0, #8
str r0, [sp, #8]
mov r0, #0xb
str r0, [sp, #0xc]
ldr r0, [sp, #0x14]
add r1, sp, #0x20
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
add r0, r4, #0
mov r2, #1
mov r3, #0x22
bl FUN_02019064
mov r0, #4
mov r1, #0x23
bl FUN_020219F4
add r4, r0, #0
add r0, sp, #0x20
mov r1, #0xf
bl FUN_02019620
bl MOD15_021DB770
add r7, r0, #0
ldr r5, _021DA474 ; =0x00000000
beq _021DA452
_021DA40C:
add r0, r5, #0
add r1, r4, #0
bl MOD15_021DB774
add r0, r5, #0
add r1, sp, #0x1c
add r2, sp, #0x18
bl MOD15_021DB798
ldr r0, [r6, #8]
add r1, r5, #0
bl FUN_02089300
cmp r0, #0
beq _021DA42E
ldr r1, _021DA478 ; =0x0001020F
b _021DA430
_021DA42E:
ldr r1, _021DA47C ; =0x0003040F
_021DA430:
ldr r0, [sp, #0x18]
add r2, r4, #0
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
str r1, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r3, [sp, #0x1c]
add r0, sp, #0x20
mov r1, #0
add r3, r3, #3
bl FUN_0201BDE0
add r5, r5, #1
cmp r5, r7
blo _021DA40C
_021DA452:
add r0, sp, #0x20
bl FUN_02019548
add r0, sp, #0x20
bl FUN_02019270
add r0, r4, #0
bl FUN_02021A20
add r0, sp, #0x20
bl FUN_02019178
ldr r0, [sp, #0x14]
add r0, #0xc8
str r0, [sp, #0x14]
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DA474: .word 0x00000000
_021DA478: .word 0x0001020F
_021DA47C: .word 0x0003040F
thumb_func_start MOD15_021DA480
MOD15_021DA480: ; 0x021DA480
push {r4, r5, r6, r7, lr}
sub sp, #0x34
add r5, r2, #0
str r1, [sp, #0x14]
ldr r2, _021DA540 ; =0x00000181
mov r0, #1
mov r1, #0x1a
mov r3, #0x23
bl FUN_0200A86C
mov r1, #0xd
str r0, [sp, #0x20]
bl FUN_0200A914
str r0, [sp, #0x1c]
mov r0, #0
ldr r1, [sp, #0x1c]
add r2, r0, #0
bl FUN_02002E14
mov r1, #0x40
sub r0, r1, r0
lsr r0, r0, #1
ldr r4, _021DA544 ; =0x021DBA10
str r0, [sp, #0x18]
mov r7, #0
add r6, sp, #0x24
_021DA4B6:
mov r0, #0x3f
lsl r0, r0, #4
cmp r5, r0
blo _021DA4C2
bl ErrorHandling
_021DA4C2:
ldrh r0, [r4, #2]
add r1, r6, #0
mov r2, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0xb
str r0, [sp, #0xc]
lsl r0, r5, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
ldrh r3, [r4]
ldr r0, [sp, #0x14]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
bl FUN_02019064
add r0, r6, #0
mov r1, #0xf
bl FUN_02019620
mov r0, #0
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021DA548 ; =0x0001020F
ldr r2, [sp, #0x1c]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r3, [sp, #0x18]
add r0, r6, #0
mov r1, #0
bl FUN_0201BDE0
add r0, r6, #0
bl FUN_02019270
add r0, r6, #0
bl FUN_02019548
add r0, r6, #0
bl FUN_02019178
add r7, r7, #1
add r5, #0x10
add r4, r4, #4
cmp r7, #2
blo _021DA4B6
ldr r0, [sp, #0x1c]
bl FUN_02021A20
ldr r0, [sp, #0x20]
bl FUN_0200A8B8
add r0, r5, #0
add sp, #0x34
pop {r4, r5, r6, r7, pc}
nop
_021DA540: .word 0x00000181
_021DA544: .word 0x021DBA10
_021DA548: .word 0x0001020F
thumb_func_start MOD15_021DA54C
MOD15_021DA54C: ; 0x021DA54C
push {r3, r4, lr}
sub sp, #0x2c
add r4, r0, #0
ldr r0, [r4]
add r1, sp, #8
mov r2, #0
mov r3, #1
bl MOD15_021D9550
mov r0, #2
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
add r1, sp, #8
mov r2, #0x30
mov r3, #0x36
bl MOD15_021D9594
str r0, [r4, #0x5c]
mov r1, #4
bl FUN_02020130
ldr r0, [r4, #0x5c]
mov r1, #0
bl FUN_020200A0
add sp, #0x2c
pop {r3, r4, pc}
.align 2, 0
thumb_func_start MOD15_021DA588
MOD15_021DA588: ; 0x021DA588
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x5c]
add r4, r1, #0
bl FUN_020200A0
cmp r4, #0
beq _021DA5B2
ldr r0, [r5, #4]
bl MOD15_021D86F4
cmp r0, #0
ldr r0, [r5, #0x5c]
bne _021DA5AC
mov r1, #4
bl FUN_02020130
pop {r3, r4, r5, pc}
_021DA5AC:
mov r1, #6
bl FUN_02020130
_021DA5B2:
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021DA5B4
MOD15_021DA5B4: ; 0x021DA5B4
push {r4, r5, lr}
sub sp, #0x14
add r4, r0, #0
ldr r0, [r4, #4]
add r5, r1, #0
bl MOD15_021D86F4
mov r1, #0
str r1, [sp, #0x10]
cmp r5, #0xfe
bne _021DA5D6
mov r0, #0x84
str r0, [sp, #8]
mov r0, #0x96
str r0, [sp, #0xc]
mov r5, #0x10
b _021DA616
_021DA5D6:
cmp r0, #0
bne _021DA5FE
add r0, r5, #0
mov r1, #3
bl _u32_div_f
mov r0, #0x50
mul r0, r1
add r0, #0x30
str r0, [sp, #8]
add r0, r5, #0
mov r1, #3
bl _u32_div_f
mov r1, #0x18
mul r1, r0
add r1, #0x36
str r1, [sp, #0xc]
mov r5, #4
b _021DA616
_021DA5FE:
add r0, r5, #0
add r1, sp, #4
add r2, sp, #0
bl MOD15_021DB798
ldr r0, [sp, #4]
mov r5, #6
add r0, #0x1a
str r0, [sp, #8]
ldr r0, [sp]
add r0, #0x3e
str r0, [sp, #0xc]
_021DA616:
ldr r0, [sp, #8]
add r1, sp, #8
lsl r0, r0, #0xc
str r0, [sp, #8]
ldr r0, [sp, #0xc]
lsl r0, r0, #0xc
str r0, [sp, #0xc]
ldr r0, [r4, #0x5c]
bl FUN_02020044
ldr r0, [r4, #0x5c]
add r1, r5, #0
bl FUN_02020130
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021DA638
MOD15_021DA638: ; 0x021DA638
push {r3, lr}
mov r3, #0
str r3, [r0, #0x14]
mov r1, #0x10
str r1, [sp]
mov r1, #2
add r2, r1, #0
add r0, #0x1c
sub r2, #0xc
bl MOD15_021DB6DC
pop {r3, pc}
thumb_func_start MOD15_021DA650
MOD15_021DA650: ; 0x021DA650
push {r4, lr}
sub sp, #8
add r4, r0, #0
ldr r0, [r4, #0x14]
cmp r0, #0
beq _021DA662
cmp r0, #1
beq _021DA68C
b _021DA698
_021DA662:
add r0, r4, #0
add r0, #0x1c
bl MOD15_021DB71C
cmp r0, #0
beq _021DA698
mov r0, #0x18
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
add r0, r4, #0
mov r2, #1
ldr r1, [r4, #0xc]
add r0, #0x3c
add r3, r2, #0
bl MOD15_021DB564
ldr r0, [r4, #0x14]
add r0, r0, #1
str r0, [r4, #0x14]
b _021DA698
_021DA68C:
add r4, #0x3c
add r0, r4, #0
bl MOD15_021DB5B8
add sp, #8
pop {r4, pc}
_021DA698:
mov r0, #0
add sp, #8
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021DA6A0
MOD15_021DA6A0: ; 0x021DA6A0
push {r3, lr}
sub sp, #8
add r1, r0, #0
mov r0, #0
str r0, [r1, #0x14]
sub r0, #0x18
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
add r0, r1, #0
mov r2, #1
ldr r1, [r1, #0xc]
add r0, #0x3c
add r3, r2, #0
bl MOD15_021DB564
add sp, #8
pop {r3, pc}
thumb_func_start MOD15_021DA6C4
MOD15_021DA6C4: ; 0x021DA6C4
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r0, [r4, #0x14]
cmp r0, #0
beq _021DA6D6
cmp r0, #1
beq _021DA6FE
b _021DA70A
_021DA6D6:
add r0, r4, #0
add r0, #0x3c
bl MOD15_021DB5B8
cmp r0, #0
beq _021DA70A
mov r0, #0x10
mov r2, #0
str r0, [sp]
add r0, r4, #0
add r3, r2, #0
add r0, #0x1c
mov r1, #2
sub r3, #0xa
bl MOD15_021DB6DC
ldr r0, [r4, #0x14]
add r0, r0, #1
str r0, [r4, #0x14]
b _021DA70A
_021DA6FE:
add r4, #0x1c
add r0, r4, #0
bl MOD15_021DB71C
add sp, #4
pop {r3, r4, pc}
_021DA70A:
mov r0, #0
add sp, #4
pop {r3, r4, pc}
thumb_func_start MOD15_021DA710
MOD15_021DA710: ; 0x021DA710
push {r3, lr}
ldr r0, [r0, #0xc]
mov r1, #1
mov r2, #3
mov r3, #2
bl FUN_020179E0
pop {r3, pc}
thumb_func_start MOD15_021DA720
MOD15_021DA720: ; 0x021DA720
push {r3, lr}
mov r2, #0
mov r1, #0x10
add r3, r2, #0
str r1, [sp]
add r0, #0x1c
mov r1, #2
sub r3, #0xa
bl MOD15_021DB6DC
pop {r3, pc}
.align 2, 0
thumb_func_start MOD15_021DA738
MOD15_021DA738: ; 0x021DA738
ldr r3, _021DA740 ; =MOD15_021DB71C
add r0, #0x1c
bx r3
nop
_021DA740: .word MOD15_021DB71C
thumb_func_start MOD15_021DA744
MOD15_021DA744: ; 0x021DA744
push {r3, lr}
sub sp, #8
mov r1, #0
str r1, [sp]
mov r1, #0xc
str r1, [sp, #4]
add r0, #0x1c
mov r1, #2
mov r2, #0x3f
mov r3, #0x7c
bl MOD15_021DB648
add sp, #8
pop {r3, pc}
thumb_func_start MOD15_021DA760
MOD15_021DA760: ; 0x021DA760
push {r3, lr}
add r0, #0x1c
bl MOD15_021DB678
cmp r0, #0
beq _021DA778
mov r0, #1
mov r1, #0
bl FUN_0201797C
mov r0, #1
pop {r3, pc}
_021DA778:
mov r0, #0
pop {r3, pc}
thumb_func_start MOD15_021DA77C
MOD15_021DA77C: ; 0x021DA77C
push {r4, lr}
sub sp, #8
add r4, r0, #0
mov r0, #0x10
str r0, [sp]
ldr r0, _021DA7B4 ; =0x04000050
mov r1, #2
mov r2, #0x3f
mov r3, #0
bl G2x_SetBlendAlpha_
mov r0, #1
add r1, r0, #0
bl FUN_0201797C
mov r0, #0x7c
str r0, [sp]
mov r0, #0xc
add r4, #0x1c
str r0, [sp, #4]
add r0, r4, #0
mov r1, #2
mov r2, #0x3f
mov r3, #0
bl MOD15_021DB648
add sp, #8
pop {r4, pc}
.align 2, 0
_021DA7B4: .word 0x04000050
thumb_func_start MOD15_021DA7B8
MOD15_021DA7B8: ; 0x021DA7B8
ldr r3, _021DA7C0 ; =MOD15_021DB678
add r0, #0x1c
bx r3
nop
_021DA7C0: .word MOD15_021DB678
thumb_func_start MOD15_021DA7C4
MOD15_021DA7C4: ; 0x021DA7C4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #4]
bl MOD15_021D86F4
cmp r0, #0
bne _021DA7D8
mov r3, #3
mvn r3, r3
b _021DA7DA
_021DA7D8:
mov r3, #0xfc
_021DA7DA:
ldr r0, [r4, #0xc]
mov r1, #1
mov r2, #0
bl FUN_020179E0
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021DA7E8
MOD15_021DA7E8: ; 0x021DA7E8
push {r4, lr}
sub sp, #8
add r4, r0, #0
ldr r0, [r4, #4]
bl MOD15_021D86F4
cmp r0, #0
bne _021DA7FE
mov r0, #0xff
mvn r0, r0
b _021DA802
_021DA7FE:
mov r0, #1
lsl r0, r0, #8
_021DA802:
str r0, [sp]
mov r0, #0x10
str r0, [sp, #4]
add r0, r4, #0
ldr r1, [r4, #0xc]
add r0, #0x3c
mov r2, #1
mov r3, #0
bl MOD15_021DB564
add sp, #8
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021DA81C
MOD15_021DA81C: ; 0x021DA81C
ldr r3, _021DA824 ; =MOD15_021DB5B8
add r0, #0x3c
bx r3
nop
_021DA824: .word MOD15_021DB5B8
thumb_func_start MOD15_021DA828
MOD15_021DA828: ; 0x021DA828
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
add r6, r1, #0
mov r0, #0x23
mov r1, #0x94
add r7, r2, #0
bl AllocFromHeap
add r4, r0, #0
str r5, [r4]
str r6, [r4, #4]
str r7, [r4, #8]
add r0, r5, #0
bl MOD15_021D9548
str r0, [r4, #0xc]
mov r0, #0x20
mov r1, #0x23
bl FUN_020219F4
str r0, [r4, #0x3c]
mov r0, #0
str r0, [sp]
mov r0, #0x1a
str r0, [sp, #4]
mov r0, #0x20
str r0, [sp, #8]
mov r0, #0xc
str r0, [sp, #0xc]
mov r0, #1
str r0, [sp, #0x10]
add r1, r4, #0
ldr r0, [r4, #0xc]
add r1, #0x10
mov r2, #2
mov r3, #4
bl FUN_02019064
mov r3, #0
str r3, [sp]
mov r1, #0xc
str r1, [sp, #4]
mov r0, #4
str r0, [sp, #8]
str r1, [sp, #0xc]
mov r0, #1
str r0, [sp, #0x10]
add r1, r4, #0
ldr r0, [r4, #0xc]
add r1, #0x20
mov r2, #2
bl FUN_02019064
mov r0, #0
str r0, [r4, #0x30]
str r0, [r4, #0x34]
str r0, [r4, #0x38]
add r0, r4, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start MOD15_021DA8A4
MOD15_021DA8A4: ; 0x021DA8A4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x30]
cmp r0, #0
beq _021DA8B2
bl FUN_0201FFC8
_021DA8B2:
ldr r0, [r4, #0x34]
cmp r0, #0
beq _021DA8BC
bl FUN_0201FFC8
_021DA8BC:
ldr r0, [r4, #0x38]
cmp r0, #0
beq _021DA8C6
bl FUN_0201FFC8
_021DA8C6:
ldr r0, [r4, #0x3c]
cmp r0, #0
beq _021DA8D0
bl FUN_02021A20
_021DA8D0:
add r0, r4, #0
add r0, #0x20
bl FUN_02019178
add r0, r4, #0
add r0, #0x10
bl FUN_02019178
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
thumb_func_start MOD15_021DA8E8
MOD15_021DA8E8: ; 0x021DA8E8
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5]
bl MOD15_021D9548
add r4, r0, #0
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #0x23
bl FUN_02017F18
mov r2, #0
str r2, [sp]
mov r0, #0x20
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0xc
str r0, [sp, #0xc]
add r0, r4, #0
mov r1, #2
add r3, r2, #0
bl FUN_02018540
add r0, r5, #0
add r0, #0x10
mov r1, #0
bl FUN_02019620
add r0, r5, #0
add r0, #0x10
bl FUN_02019270
add r0, r5, #0
add r0, #0x10
bl FUN_02019548
add r0, r4, #0
mov r1, #2
bl FUN_02017CD0
add r0, r5, #0
bl MOD15_021DA950
mov r0, #2
mov r1, #0
bl FUN_0201797C
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_start MOD15_021DA950
MOD15_021DA950: ; 0x021DA950
push {r3, r4, lr}
sub sp, #0x2c
add r4, r0, #0
ldr r0, [r4]
add r1, sp, #8
mov r2, #0
mov r3, #2
bl MOD15_021D9550
mov r0, #3
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
add r1, sp, #8
mov r2, #0x48
mov r3, #0x38
bl MOD15_021D9594
str r0, [r4, #0x30]
mov r1, #8
bl FUN_02020130
ldr r0, [r4, #0x30]
mov r1, #0
bl FUN_020200A0
mov r0, #4
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
add r1, sp, #8
mov r2, #0xf0
mov r3, #0x40
bl MOD15_021D9594
str r0, [r4, #0x34]
mov r1, #0xb
bl FUN_02020130
ldr r0, [r4, #0x34]
mov r1, #0
bl FUN_020200A0
mov r0, #4
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
add r1, sp, #8
mov r2, #0xf0
mov r3, #0x90
bl MOD15_021D9594
str r0, [r4, #0x38]
mov r1, #0xa
bl FUN_02020130
ldr r0, [r4, #0x38]
mov r1, #0
bl FUN_020200A0
add sp, #0x2c
pop {r3, r4, pc}
.align 2, 0
thumb_func_start MOD15_021DA9D4
MOD15_021DA9D4: ; 0x021DA9D4
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r0, #0x10
mov r1, #0
bl FUN_02019620
add r0, r6, #0
bl MOD15_021DAD78
ldr r0, [r6, #4]
bl MOD15_021D8744
add r7, r0, #0
cmp r7, #0xa
bls _021DA9F4
mov r7, #0xa
_021DA9F4:
add r0, r6, #0
add r0, #0x8c
mov r5, #0
ldr r4, [r0]
cmp r7, #0
bls _021DAA18
_021DAA00:
add r0, r6, #0
add r1, r5, #0
add r2, r4, #0
bl MOD15_021DAD98
mov r0, #1
tst r0, r5
beq _021DAA12
add r4, #0x18
_021DAA12:
add r5, r5, #1
cmp r5, r7
blo _021DAA00
_021DAA18:
add r6, #0x10
add r0, r6, #0
bl FUN_02019548
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start MOD15_021DAA24
MOD15_021DAA24: ; 0x021DAA24
push {r3, r4, r5, lr}
sub sp, #8
add r4, r0, #0
mov r0, #0x10
str r0, [sp]
ldr r0, _021DAABC ; =0x04000050
mov r1, #4
mov r2, #0x3f
mov r3, #0
bl G2x_SetBlendAlpha_
mov r0, #2
mov r1, #1
bl FUN_0201797C
ldr r1, _021DAAC0 ; =0x04000048
ldr r0, _021DAAC4 ; =0xFFFFC0FF
ldrh r2, [r1]
mov r5, #0xff
and r2, r0
mov r0, #0x1f
lsl r0, r0, #8
orr r2, r0
lsr r0, r1, #0xd
orr r0, r2
strh r0, [r1]
add r0, r4, #0
ldrb r2, [r1, #2]
add r0, #0x84
strb r2, [r0]
add r0, r1, #0
sub r0, #0x48
mov r2, #0xe
ldr r3, [r0]
lsl r2, r2, #0xc
and r2, r3
lsr r3, r2, #0xd
add r2, r4, #0
add r2, #0x88
str r3, [r2]
ldrh r3, [r1, #2]
mov r2, #0x3f
bic r3, r2
mov r2, #0x1b
orr r3, r2
mov r2, #0x20
orr r3, r2
strh r3, [r1, #2]
sub r3, r1, #6
strh r5, [r3]
ldr r3, _021DAAC8 ; =0x00002EB0
sub r1, r1, #2
strh r3, [r1]
ldr r3, [r0]
ldr r1, _021DAACC ; =0xFFFF1FFF
and r3, r1
lsl r1, r2, #9
orr r1, r3
str r1, [r0]
add r0, r4, #0
mov r3, #0
add r0, #0x80
str r3, [r0]
mov r0, #0x7c
str r0, [sp]
mov r0, #0xc
add r4, #0x40
str r0, [sp, #4]
add r0, r4, #0
mov r1, #4
mov r2, #0x3f
bl MOD15_021DB648
add sp, #8
pop {r3, r4, r5, pc}
nop
_021DAABC: .word 0x04000050
_021DAAC0: .word 0x04000048
_021DAAC4: .word 0xFFFFC0FF
_021DAAC8: .word 0x00002EB0
_021DAACC: .word 0xFFFF1FFF
thumb_func_start MOD15_021DAAD0
MOD15_021DAAD0: ; 0x021DAAD0
push {r3, lr}
add r1, r0, #0
add r1, #0x80
ldr r1, [r1]
cmp r1, #0
bne _021DAAEE
add r0, #0x40
bl MOD15_021DB678
cmp r0, #0
beq _021DAAEA
mov r0, #1
pop {r3, pc}
_021DAAEA:
mov r0, #0
pop {r3, pc}
_021DAAEE:
mov r0, #1
pop {r3, pc}
.align 2, 0
thumb_func_start MOD15_021DAAF4
MOD15_021DAAF4: ; 0x021DAAF4
push {r3, lr}
sub sp, #8
add r1, r0, #0
mov r2, #0
add r1, #0x80
str r2, [r1]
str r2, [sp]
mov r1, #0xc
str r1, [sp, #4]
add r0, #0x40
mov r1, #4
mov r2, #0x3f
mov r3, #0x7c
bl MOD15_021DB648
add sp, #8
pop {r3, pc}
.align 2, 0
thumb_func_start MOD15_021DAB18
MOD15_021DAB18: ; 0x021DAB18
push {r4, lr}
add r4, r0, #0
add r0, #0x80
ldr r0, [r0]
cmp r0, #0
bne _021DAB70
add r0, r4, #0
add r0, #0x40
bl MOD15_021DB678
cmp r0, #0
beq _021DAB74
mov r0, #2
mov r1, #0
bl FUN_0201797C
ldr r0, _021DAB78 ; =0x0400004A
ldrh r2, [r0]
mov r0, #0x3f
bic r2, r0
add r0, r4, #0
add r0, #0x84
ldrb r0, [r0]
lsl r1, r0, #0x1b
lsr r1, r1, #0x1b
lsl r0, r0, #0x1a
orr r1, r2
lsr r0, r0, #0x1f
beq _021DAB56
mov r0, #0x20
orr r1, r0
_021DAB56:
ldr r2, _021DAB78 ; =0x0400004A
ldr r0, _021DAB7C ; =0xFFFF1FFF
strh r1, [r2]
sub r2, #0x4a
ldr r1, [r2]
add r4, #0x88
and r1, r0
ldr r0, [r4]
lsl r0, r0, #0xd
orr r0, r1
str r0, [r2]
mov r0, #1
pop {r4, pc}
_021DAB70:
mov r0, #1
pop {r4, pc}
_021DAB74:
mov r0, #0
pop {r4, pc}
.align 2, 0
_021DAB78: .word 0x0400004A
_021DAB7C: .word 0xFFFF1FFF
thumb_func_start MOD15_021DAB80
MOD15_021DAB80: ; 0x021DAB80
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x30]
add r4, r1, #0
bl FUN_020200A0
cmp r4, #0
beq _021DABAE
ldr r0, [r5, #4]
bl MOD15_021D87AC
add r1, r0, #0
ldr r0, [r5, #0x34]
bl FUN_020200A0
ldr r0, [r5, #4]
bl MOD15_021D87C0
add r1, r0, #0
ldr r0, [r5, #0x38]
bl FUN_020200A0
pop {r3, r4, r5, pc}
_021DABAE:
ldr r0, [r5, #0x34]
mov r1, #0
bl FUN_020200A0
ldr r0, [r5, #0x38]
mov r1, #0
bl FUN_020200A0
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021DABC0
MOD15_021DABC0: ; 0x021DABC0
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
add r2, r1, #0
mov r0, #1
and r2, r0
mov r0, #0x70
mul r0, r2
add r0, #0x48
lsl r0, r0, #0xc
str r0, [sp]
lsr r1, r1, #1
mov r0, #0x18
mul r0, r1
add r0, #0x38
lsl r0, r0, #0xc
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
ldr r0, [r4, #0x30]
add r1, sp, #0
bl FUN_02020044
ldr r0, [r4, #0x30]
mov r1, #8
bl FUN_02020130
add sp, #0xc
pop {r3, r4, pc}
.align 2, 0
thumb_func_start MOD15_021DABFC
MOD15_021DABFC: ; 0x021DABFC
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r7, r0, #0
add r4, r1, #0
bl MOD15_021DACEC
add r0, r7, #0
add r0, #0x90
ldr r0, [r0]
lsl r6, r4, #1
str r0, [sp, #0x10]
add r0, r0, r6
str r0, [sp, #0x14]
mov r0, #0x18
mul r0, r4
str r0, [sp, #8]
add r0, r7, #0
add r0, #0x8c
ldr r0, [r0]
ldr r1, [sp, #8]
add r1, r0, r1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
str r1, [sp, #0x18]
cmp r4, #0
bge _021DAC40
ldr r0, [sp, #0x14]
add r5, r1, #0
str r0, [sp, #0x10]
lsl r0, r4, #2
neg r0, r0
neg r6, r6
str r0, [sp, #0xc]
b _021DAC60
_021DAC40:
add r0, #0x78
lsl r0, r0, #0x18
lsr r5, r0, #0x18
ldr r0, [sp, #0x10]
add r0, #0xa
str r0, [sp, #0x10]
ldr r0, [r7, #4]
bl MOD15_021D8744
ldr r1, [sp, #0x10]
add r1, r6, r1
cmp r1, r0
bls _021DAC5C
sub r6, r6, #1
_021DAC5C:
lsl r0, r4, #2
str r0, [sp, #0xc]
_021DAC60:
mov r4, #0
cmp r6, #0
ble _021DAC84
_021DAC66:
ldr r1, [sp, #0x10]
add r0, r7, #0
add r1, r1, r4
add r2, r5, #0
bl MOD15_021DAD98
mov r0, #1
tst r0, r4
beq _021DAC7E
add r5, #0x18
lsl r0, r5, #0x18
lsr r5, r0, #0x18
_021DAC7E:
add r4, r4, #1
cmp r4, r6
blt _021DAC66
_021DAC84:
add r1, r7, #0
ldr r0, [sp, #0x18]
add r1, #0x8c
str r0, [r1]
add r1, r7, #0
ldr r0, [sp, #0x14]
add r1, #0x90
str r0, [r1]
add r0, r7, #0
add r0, #0x10
bl FUN_02019548
ldr r0, [sp, #8]
mov r2, #2
str r0, [sp]
ldr r0, [sp, #0xc]
mov r3, #1
str r0, [sp, #4]
add r0, r7, #0
ldr r1, [r7, #0xc]
add r0, #0x60
bl MOD15_021DB564
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start MOD15_021DACB8
MOD15_021DACB8: ; 0x021DACB8
push {r4, lr}
add r4, r0, #0
add r0, #0x60
bl MOD15_021DB5B8
cmp r0, #0
beq _021DACE6
ldr r0, [r4, #4]
bl MOD15_021D87AC
add r1, r0, #0
ldr r0, [r4, #0x34]
bl FUN_020200A0
ldr r0, [r4, #4]
bl MOD15_021D87C0
add r1, r0, #0
ldr r0, [r4, #0x38]
bl FUN_020200A0
mov r0, #1
pop {r4, pc}
_021DACE6:
mov r0, #0
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021DACEC
MOD15_021DACEC: ; 0x021DACEC
push {r3, r4, r5, lr}
sub sp, #8
add r5, r0, #0
cmp r1, #0
ble _021DAD0C
add r0, #0x8c
ldr r0, [r0]
add r0, #0x78
lsl r0, r0, #0x18
lsr r3, r0, #0x18
mov r0, #0x18
mul r0, r1
add r0, r3, r0
lsl r0, r0, #0x18
lsr r4, r0, #0x18
b _021DAD1A
_021DAD0C:
add r0, #0x8c
ldr r4, [r0]
mov r0, #0x18
mul r0, r1
add r0, r4, r0
lsl r0, r0, #0x18
lsr r3, r0, #0x18
_021DAD1A:
cmp r3, r4
bge _021DAD3E
mov r0, #0xd0
str r0, [sp]
sub r0, r4, r3
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #0
lsl r3, r3, #0x10
add r5, #0x10
str r0, [sp, #4]
add r0, r5, #0
add r2, r1, #0
lsr r3, r3, #0x10
bl FUN_020196F4
add sp, #8
pop {r3, r4, r5, pc}
_021DAD3E:
mov r0, #0xd0
str r0, [sp]
add r0, #0x30
sub r0, r0, r3
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #4]
add r0, r5, #0
mov r1, #0
lsl r3, r3, #0x10
add r0, #0x10
add r2, r1, #0
lsr r3, r3, #0x10
bl FUN_020196F4
mov r1, #0
mov r0, #0xd0
str r0, [sp]
lsl r0, r4, #0x10
lsr r0, r0, #0x10
add r5, #0x10
str r0, [sp, #4]
add r0, r5, #0
add r2, r1, #0
add r3, r1, #0
bl FUN_020196F4
add sp, #8
pop {r3, r4, r5, pc}
thumb_func_start MOD15_021DAD78
MOD15_021DAD78: ; 0x021DAD78
push {r3, lr}
add r1, r0, #0
mov r2, #0x30
add r1, #0x8c
str r2, [r1]
add r1, r0, #0
mov r3, #0
add r1, #0x90
str r3, [r1]
ldr r0, [r0, #0xc]
mov r1, #2
mov r2, #3
bl FUN_020179E0
pop {r3, pc}
.align 2, 0
thumb_func_start MOD15_021DAD98
MOD15_021DAD98: ; 0x021DAD98
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r5, r0, #0
add r4, r2, #0
ldr r0, [r5, #4]
ldr r2, [r5, #0x3c]
add r7, r1, #0
bl MOD15_021D8768
cmp r4, #0xf0
bhi _021DADD4
str r4, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021DAE64 ; =0x00010200
mov r1, #0
str r0, [sp, #8]
str r1, [sp, #0xc]
add r0, r5, #0
mov r3, #1
add r4, r7, #0
and r4, r3
mov r3, #0x70
ldr r2, [r5, #0x3c]
add r0, #0x10
mul r3, r4
bl FUN_0201BDE0
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
_021DADD4:
mov r0, #1
lsl r0, r0, #8
sub r6, r0, r4
add r0, r5, #0
add r0, #0x20
mov r1, #0
bl FUN_02019620
mov r1, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021DAE64 ; =0x00010200
add r3, r1, #0
str r0, [sp, #8]
str r1, [sp, #0xc]
add r0, r5, #0
ldr r2, [r5, #0x3c]
add r0, #0x20
bl FUN_0201BDE0
mov r2, #0
mov r0, #1
add r1, r7, #0
and r1, r0
add r7, r1, #0
mov r0, #0x70
mul r7, r0
mov r0, #0x60
str r0, [sp]
mov r1, #0x10
str r1, [sp, #4]
lsl r1, r7, #0x10
lsr r1, r1, #0x10
str r1, [sp, #8]
lsl r1, r4, #0x10
lsr r1, r1, #0x10
str r1, [sp, #0xc]
str r0, [sp, #0x10]
lsl r0, r6, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x14]
add r0, r5, #0
ldr r1, [r5, #0x2c]
add r0, #0x10
add r3, r2, #0
bl FUN_02019658
mov r1, #0x60
lsl r2, r7, #0x10
lsl r3, r6, #0x10
str r1, [sp]
mov r0, #0x10
str r0, [sp, #4]
lsr r2, r2, #0x10
str r2, [sp, #8]
mov r2, #0
sub r0, r0, r6
str r2, [sp, #0xc]
lsl r0, r0, #0x10
str r1, [sp, #0x10]
lsr r0, r0, #0x10
str r0, [sp, #0x14]
add r0, r5, #0
ldr r1, [r5, #0x2c]
add r0, #0x10
lsr r3, r3, #0x10
bl FUN_02019658
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021DAE64: .word 0x00010200
thumb_func_start MOD15_021DAE68
MOD15_021DAE68: ; 0x021DAE68
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
mov r1, #5
add r5, r0, #0
mov r0, #0x23
lsl r1, r1, #8
add r7, r2, #0
bl AllocFromHeap
add r4, r0, #0
str r5, [r4]
str r6, [r4, #4]
str r7, [r4, #8]
add r0, r5, #0
bl MOD15_021D9548
str r0, [r4, #0xc]
add r0, r5, #0
bl MOD15_021D954C
str r0, [r4, #0x10]
mov r1, #0
str r1, [r4, #0x14]
ldr r0, _021DAEA0 ; =0x000004FC
str r1, [r4, #0x18]
str r1, [r4, r0]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DAEA0: .word 0x000004FC
thumb_func_start MOD15_021DAEA4
MOD15_021DAEA4: ; 0x021DAEA4
push {r4, lr}
add r4, r0, #0
bl MOD15_021DB200
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
thumb_func_start MOD15_021DAEB4
MOD15_021DAEB4: ; 0x021DAEB4
push {r3, r4, lr}
sub sp, #0x1c
add r4, r0, #0
mov r0, #0x40
str r0, [sp]
mov r0, #0x23
str r0, [sp, #4]
mov r0, #0x4c
mov r1, #0x15
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, #0x23
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0x4c
mov r1, #0xb
mov r3, #4
bl FUN_020068C8
add r0, r4, #0
bl MOD15_021DAFAC
add r0, r4, #0
bl MOD15_021DAFF8
ldr r0, [r4, #4]
bl MOD15_021D86F4
cmp r0, #0
bne _021DAF4A
mov r2, #0xb
ldr r0, _021DAFA4 ; =0x000001FA
str r2, [sp]
mov r1, #7
str r1, [sp, #4]
add r0, r4, r0
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #0x10]
str r2, [sp, #0x14]
str r1, [sp, #0x18]
mov r2, #3
ldr r0, [r4, #0xc]
mov r1, #4
add r3, r2, #0
bl FUN_02018170
mov r2, #0xb
mov r0, #0xa5
lsl r0, r0, #2
str r2, [sp]
mov r1, #7
str r1, [sp, #4]
add r0, r4, r0
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #0x10]
str r2, [sp, #0x14]
str r1, [sp, #0x18]
ldr r0, [r4, #0xc]
mov r1, #4
mov r2, #3
mov r3, #0xe
bl FUN_02018170
b _021DAF92
_021DAF4A:
mov r2, #0xb
add r0, r4, #0
str r2, [sp]
mov r1, #7
str r1, [sp, #4]
add r0, #0x2c
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #0x10]
str r2, [sp, #0x14]
str r1, [sp, #0x18]
mov r2, #3
ldr r0, [r4, #0xc]
mov r1, #4
add r3, r2, #0
bl FUN_02018170
mov r2, #0xb
ldr r0, _021DAFA8 ; =0x00000462
str r2, [sp]
mov r1, #7
str r1, [sp, #4]
add r0, r4, r0
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #0x10]
str r2, [sp, #0x14]
str r1, [sp, #0x18]
ldr r0, [r4, #0xc]
mov r1, #4
mov r2, #3
mov r3, #0xe
bl FUN_02018170
_021DAF92:
add r0, r4, #0
bl MOD15_021DB154
ldr r0, [r4, #0xc]
mov r1, #4
bl FUN_02017CD0
add sp, #0x1c
pop {r3, r4, pc}
.align 2, 0
_021DAFA4: .word 0x000001FA
_021DAFA8: .word 0x00000462
thumb_func_start MOD15_021DAFAC
MOD15_021DAFAC: ; 0x021DAFAC
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
ldr r4, _021DAFF4 ; =0x021DBA20
mov r6, #0
add r5, #0x2c
_021DAFB8:
mov r0, #0x23
str r0, [sp]
ldrh r1, [r4]
mov r0, #0x4c
mov r2, #1
add r3, sp, #4
bl FUN_02006BDC
add r7, r0, #0
beq _021DAFE6
ldr r0, [sp, #4]
add r1, r5, #0
add r0, #0xc
mov r2, #0x9a
bl MIi_CpuCopy16
add r0, r5, #0
mov r1, #0x9a
bl DC_FlushRange
add r0, r7, #0
bl FreeToHeap
_021DAFE6:
add r6, r6, #1
add r4, r4, #2
add r5, #0x9a
cmp r6, #8
blo _021DAFB8
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DAFF4: .word 0x021DBA20
thumb_func_start MOD15_021DAFF8
MOD15_021DAFF8: ; 0x021DAFF8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r5, r0, #0
mov r0, #2
mov r1, #0
bl FUN_02002C50
ldr r1, _021DB0F8 ; =0x00000182
mov r0, #0x1a
mov r2, #0xb
mov r3, #0x23
bl FUN_0200A738
str r0, [sp, #4]
ldr r1, _021DB0F8 ; =0x00000182
mov r0, #0x1a
mov r2, #0xc
mov r3, #0x23
bl FUN_0200A738
add r7, r0, #0
ldr r1, _021DB0F8 ; =0x00000182
mov r0, #0x1a
mov r2, #0xd
mov r3, #0x23
bl FUN_0200A738
add r6, r0, #0
ldr r1, _021DB0F8 ; =0x00000182
mov r0, #0x1a
mov r2, #0xe
mov r3, #0x23
bl FUN_0200A738
add r4, r0, #0
mov r0, #0x23
str r0, [sp]
mov r0, #0x4c
mov r1, #0x14
mov r2, #1
add r3, sp, #0xc
bl FUN_02006BB0
str r0, [sp, #8]
cmp r0, #0
beq _021DB0D4
add r0, sp, #0x10
bl FUN_0201901C
ldr r0, [r5, #0xc]
add r1, sp, #0xc
str r0, [sp, #0x10]
mov r0, #0xb
strb r0, [r1, #0xb]
mov r0, #0x39
strb r0, [r1, #0xc]
ldrh r2, [r1, #0xe]
ldr r0, _021DB0FC ; =0xFFFF7FFF
mov r3, #0
and r0, r2
strh r0, [r1, #0xe]
ldr r0, [sp, #0xc]
ldr r2, [sp, #4]
ldr r0, [r0, #0x14]
str r0, [sp, #0x1c]
ldr r1, [r5, #0xc]
add r0, sp, #0x10
bl MOD15_021DB100
ldr r1, [r5, #0xc]
add r0, sp, #0x10
add r2, r7, #0
mov r3, #0x10
bl MOD15_021DB100
ldr r0, [sp, #0xc]
add r2, r6, #0
ldr r1, [r0, #0x14]
mov r0, #0x9a
lsl r0, r0, #6
add r0, r1, r0
str r0, [sp, #0x1c]
ldr r1, [r5, #0xc]
add r0, sp, #0x10
mov r3, #0
bl MOD15_021DB100
ldr r1, [r5, #0xc]
add r0, sp, #0x10
add r2, r4, #0
mov r3, #0x10
bl MOD15_021DB100
ldr r1, [sp, #0xc]
ldr r0, [r1, #0x14]
ldr r1, [r1, #0x10]
bl DC_FlushRange
ldr r3, [sp, #0xc]
mov r0, #0
str r0, [sp]
ldr r2, [r3, #0x14]
ldr r0, [r5, #0xc]
ldr r3, [r3, #0x10]
mov r1, #4
bl FUN_02017E14
ldr r0, [sp, #8]
bl FreeToHeap
_021DB0D4:
add r0, r6, #0
bl FUN_02021A20
add r0, r4, #0
bl FUN_02021A20
ldr r0, [sp, #4]
bl FUN_02021A20
add r0, r7, #0
bl FUN_02021A20
mov r0, #2
bl FUN_02002CF8
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
nop
_021DB0F8: .word 0x00000182
_021DB0FC: .word 0xFFFF7FFF
thumb_func_start MOD15_021DB100
MOD15_021DB100: ; 0x021DB100
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r6, r2, #0
str r0, [sp, #0x10]
mov r0, #2
add r1, r6, #0
mov r2, #0
add r7, r3, #0
bl FUN_02002F08
mov r1, #0x58
sub r0, r1, r0
lsr r0, r0, #1
ldr r5, _021DB14C ; =0x021DBA18
str r0, [sp, #0x14]
mov r4, #0
_021DB120:
mov r0, #0
ldrsh r0, [r5, r0]
ldr r3, [sp, #0x14]
mov r1, #2
add r0, r7, r0
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021DB150 ; =0x00010203
add r2, r6, #0
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #0x10]
bl FUN_0201BDE0
add r4, r4, #1
add r5, r5, #2
cmp r4, #4
blo _021DB120
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DB14C: .word 0x021DBA18
_021DB150: .word 0x00010203
thumb_func_start MOD15_021DB154
MOD15_021DB154: ; 0x021DB154
push {r3, r4, lr}
sub sp, #0x4c
add r4, r0, #0
add r0, sp, #0x38
bl FUN_020B19DC
add r0, sp, #0x14
bl FUN_020B1A24
mov r0, #0x23
str r0, [sp]
add r0, sp, #0x38
str r0, [sp, #4]
mov r0, #0x4c
mov r1, #0x19
mov r2, #2
mov r3, #0
bl FUN_02006A8C
mov r3, #0
str r3, [sp]
mov r0, #2
str r0, [sp, #4]
str r3, [sp, #8]
mov r0, #0x23
str r0, [sp, #0xc]
add r0, sp, #0x14
str r0, [sp, #0x10]
mov r0, #0x4c
mov r1, #0x18
mov r2, #1
bl FUN_02006AE4
add r0, r4, #0
add r0, #0x1c
mov r1, #0x4c
mov r2, #0x16
mov r3, #0x17
bl MOD15_021DB224
mov r0, #0xc0
str r0, [sp]
mov r0, #0x38
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
add r3, r4, #0
str r0, [sp, #0xc]
add r0, r4, #0
add r1, sp, #0x14
add r2, sp, #0x38
add r3, #0x1c
bl MOD15_021DB26C
str r0, [r4, #0x14]
mov r1, #0
bl FUN_02020130
ldr r0, [r4, #0x14]
mov r1, #0
bl FUN_020200A0
mov r0, #0xc0
str r0, [sp]
mov r0, #0x88
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
add r3, r4, #0
str r0, [sp, #0xc]
add r0, r4, #0
add r1, sp, #0x14
add r2, sp, #0x38
add r3, #0x1c
bl MOD15_021DB26C
mov r1, #2
str r0, [r4, #0x18]
bl FUN_02020130
ldr r0, [r4, #0x18]
mov r1, #0
bl FUN_020200A0
add sp, #0x4c
pop {r3, r4, pc}
thumb_func_start MOD15_021DB200
MOD15_021DB200: ; 0x021DB200
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x14]
cmp r0, #0
beq _021DB20E
bl FUN_0201FFC8
_021DB20E:
ldr r0, [r4, #0x18]
cmp r0, #0
beq _021DB218
bl FUN_0201FFC8
_021DB218:
add r4, #0x1c
add r0, r4, #0
bl MOD15_021DB258
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021DB224
MOD15_021DB224: ; 0x021DB224
push {r3, r4, r5, r6, lr}
sub sp, #4
add r5, r0, #0
add r4, r1, #0
mov r0, #0x23
add r6, r3, #0
str r0, [sp]
add r1, r2, #0
add r0, r4, #0
mov r2, #1
add r3, r5, #4
bl FUN_02006C30
str r0, [r5]
mov r0, #0x23
add r3, r5, #0
str r0, [sp]
add r0, r4, #0
add r1, r6, #0
mov r2, #1
add r3, #0xc
bl FUN_02006C5C
str r0, [r5, #8]
add sp, #4
pop {r3, r4, r5, r6, pc}
thumb_func_start MOD15_021DB258
MOD15_021DB258: ; 0x021DB258
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FreeToHeap
ldr r0, [r4, #8]
bl FreeToHeap
pop {r4, pc}
.align 2, 0
thumb_func_start MOD15_021DB26C
MOD15_021DB26C: ; 0x021DB26C
push {r3, r4, lr}
sub sp, #0x44
str r2, [sp, #0x28]
str r1, [sp, #0x20]
ldr r1, [r3, #4]
ldr r2, [sp, #0x58]
str r1, [sp, #0x2c]
ldr r1, [r3, #0xc]
str r1, [sp, #0x30]
add r1, sp, #0x40
strb r2, [r1]
mov r1, #0
str r1, [sp, #0x24]
str r1, [sp, #0x34]
str r1, [sp, #0x38]
str r1, [sp, #0x3c]
ldr r0, [r0, #0x10]
str r0, [sp]
add r0, sp, #0x20
str r0, [sp, #4]
ldr r0, [sp, #0x50]
str r1, [sp, #0x10]
lsl r0, r0, #0xc
str r0, [sp, #8]
ldr r0, [sp, #0x54]
add r0, #0xc0
lsl r0, r0, #0xc
str r0, [sp, #0xc]
ldr r0, [sp, #0x5c]
str r0, [sp, #0x14]
mov r0, #2
str r0, [sp, #0x18]
mov r0, #0x23
str r0, [sp, #0x1c]
add r0, sp, #0
bl FUN_0201FF84
add r4, r0, #0
beq _021DB2CA
mov r1, #1
bl FUN_020200BC
mov r1, #1
add r0, r4, #0
lsl r1, r1, #0xc
bl FUN_020200D8
_021DB2CA:
add r0, r4, #0
add sp, #0x44
pop {r3, r4, pc}
thumb_func_start MOD15_021DB2D0
MOD15_021DB2D0: ; 0x021DB2D0
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #0x23
mov r1, #0x18
bl AllocFromHeap
add r4, r0, #0
beq _021DB32C
ldr r0, [r5, #4]
bl MOD15_021D86F4
str r5, [r4]
mov r1, #0
str r1, [r4, #4]
strh r1, [r4, #8]
mov r1, #0xe
mul r1, r0
ldr r0, _021DB334 ; =0x021DBA30
mov r2, #1
ldrh r0, [r0, r1]
strh r0, [r4, #0xa]
ldr r0, _021DB338 ; =0x021DBA32
ldrh r0, [r0, r1]
strh r0, [r4, #0xc]
ldr r0, _021DB33C ; =0x021DBA34
ldrh r0, [r0, r1]
strh r0, [r4, #0xe]
ldr r0, _021DB340 ; =0x021DBA36
ldrh r0, [r0, r1]
strh r0, [r4, #0x10]
ldr r0, _021DB344 ; =0x021DBA38
ldrh r0, [r0, r1]
strh r0, [r4, #0x12]
ldr r0, _021DB348 ; =0x021DBA3A
ldrh r0, [r0, r1]
strh r0, [r4, #0x14]
ldr r0, _021DB34C ; =0x021DBA3C
ldrh r0, [r0, r1]
add r1, r4, #0
strh r0, [r4, #0x16]
ldr r0, _021DB350 ; =MOD15_021DB36C
bl FUN_0200CA44
ldr r1, _021DB354 ; =0x000004FC
str r0, [r5, r1]
pop {r3, r4, r5, pc}
_021DB32C:
ldr r0, _021DB354 ; =0x000004FC
mov r1, #0
str r1, [r5, r0]
pop {r3, r4, r5, pc}
.align 2, 0
_021DB334: .word 0x021DBA30
_021DB338: .word 0x021DBA32
_021DB33C: .word 0x021DBA34
_021DB340: .word 0x021DBA36
_021DB344: .word 0x021DBA38
_021DB348: .word 0x021DBA3A
_021DB34C: .word 0x021DBA3C
_021DB350: .word MOD15_021DB36C
_021DB354: .word 0x000004FC
thumb_func_start MOD15_021DB358
MOD15_021DB358: ; 0x021DB358
ldr r1, _021DB368 ; =0x000004FC
ldr r0, [r0, r1]
cmp r0, #0
bne _021DB364
mov r0, #1
bx lr
_021DB364:
mov r0, #0
bx lr
.align 2, 0
_021DB368: .word 0x000004FC
thumb_func_start MOD15_021DB36C
MOD15_021DB36C: ; 0x021DB36C
push {r3, r4, r5, r6, lr}
sub sp, #0x1c
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4, #4]
cmp r0, #3
bls _021DB37C
b _021DB4E0
_021DB37C:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021DB388: ; jump table
.short _021DB390 - _021DB388 - 2 ; case 0
.short _021DB416 - _021DB388 - 2 ; case 1
.short _021DB476 - _021DB388 - 2 ; case 2
.short _021DB4CC - _021DB388 - 2 ; case 3
_021DB390:
ldr r3, [r4]
mov r2, #0xb
str r2, [sp]
mov r1, #7
str r1, [sp, #4]
ldrh r6, [r4, #0xa]
add r0, r3, #0
mov r5, #0x9a
add r0, #0x2c
mul r5, r6
add r0, r0, r5
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #0x10]
str r2, [sp, #0x14]
str r1, [sp, #0x18]
ldr r0, [r3, #0xc]
ldrh r2, [r4, #0xe]
ldrh r3, [r4, #0x10]
mov r1, #4
lsl r2, r2, #0x18
lsl r3, r3, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl FUN_02018170
ldr r3, [r4]
mov r2, #0xb
add r0, r3, #0
str r2, [sp]
mov r1, #7
str r1, [sp, #4]
ldrh r6, [r4, #0x12]
mov r5, #0x9a
add r0, #0x2c
mul r5, r6
add r0, r0, r5
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #0x10]
str r2, [sp, #0x14]
str r1, [sp, #0x18]
ldr r0, [r3, #0xc]
ldrh r2, [r4, #0x14]
ldrh r3, [r4, #0x16]
mov r1, #4
lsl r2, r2, #0x18
lsl r3, r3, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl FUN_02018170
ldr r0, [r4]
mov r1, #4
ldr r0, [r0, #0xc]
bl FUN_02017CD0
ldrh r0, [r4, #0xa]
add sp, #0x1c
add r0, r0, #1
strh r0, [r4, #0xa]
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
pop {r3, r4, r5, r6, pc}
_021DB416:
ldrh r0, [r4, #8]
add r0, r0, #1
strh r0, [r4, #8]
ldrh r0, [r4, #8]
cmp r0, #2
blo _021DB4E0
ldr r3, [r4]
mov r2, #0xb
str r2, [sp]
mov r1, #7
str r1, [sp, #4]
ldrh r6, [r4, #0xa]
add r0, r3, #0
mov r5, #0x9a
add r0, #0x2c
mul r5, r6
add r0, r0, r5
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #0x10]
str r2, [sp, #0x14]
str r1, [sp, #0x18]
ldr r0, [r3, #0xc]
ldrh r2, [r4, #0xe]
ldrh r3, [r4, #0x10]
mov r1, #4
lsl r2, r2, #0x18
lsl r3, r3, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl FUN_02018170
ldr r0, [r4]
mov r1, #4
ldr r0, [r0, #0xc]
bl FUN_02017CD0
mov r0, #0
strh r0, [r4, #8]
ldrh r0, [r4, #0xa]
add sp, #0x1c
add r0, r0, #1
strh r0, [r4, #0xa]
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
pop {r3, r4, r5, r6, pc}
_021DB476:
ldrh r0, [r4, #8]
add r0, r0, #1
strh r0, [r4, #8]
ldrh r0, [r4, #8]
cmp r0, #4
blo _021DB4E0
ldr r3, [r4]
mov r2, #0xb
str r2, [sp]
mov r1, #7
str r1, [sp, #4]
ldrh r6, [r4, #0xa]
add r0, r3, #0
mov r5, #0x9a
add r0, #0x2c
mul r5, r6
add r0, r0, r5
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #0x10]
str r2, [sp, #0x14]
str r1, [sp, #0x18]
ldr r0, [r3, #0xc]
ldrh r2, [r4, #0xe]
ldrh r3, [r4, #0x10]
mov r1, #4
lsl r2, r2, #0x18
lsl r3, r3, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl FUN_02018170
ldr r0, [r4]
mov r1, #4
ldr r0, [r0, #0xc]
bl FUN_02017CD0
ldr r0, [r4, #4]
add sp, #0x1c
add r0, r0, #1
str r0, [r4, #4]
pop {r3, r4, r5, r6, pc}
_021DB4CC:
ldr r1, [r4]
ldr r0, _021DB4E4 ; =0x000004FC
mov r2, #0
str r2, [r1, r0]
add r0, r4, #0
bl FreeToHeap
add r0, r5, #0
bl FUN_0200CAB4
_021DB4E0:
add sp, #0x1c
pop {r3, r4, r5, r6, pc}
.align 2, 0
_021DB4E4: .word 0x000004FC
thumb_func_start MOD15_021DB4E8
MOD15_021DB4E8: ; 0x021DB4E8
push {r4, lr}
add r4, r0, #0
cmp r1, #0
beq _021DB50E
ldr r0, [r4, #4]
bl MOD15_021D87AC
add r1, r0, #0
ldr r0, [r4, #0x14]
bl FUN_020200A0
ldr r0, [r4, #4]
bl MOD15_021D87C0
add r1, r0, #0
ldr r0, [r4, #0x18]
bl FUN_020200A0
pop {r4, pc}
_021DB50E:
ldr r0, [r4, #0x14]
mov r1, #0
bl FUN_020200A0
ldr r0, [r4, #0x18]
mov r1, #0
bl FUN_020200A0
pop {r4, pc}
thumb_func_start MOD15_021DB520
MOD15_021DB520: ; 0x021DB520
push {r3, lr}
cmp r1, #0
beq _021DB52C
cmp r1, #1
beq _021DB548
pop {r3, pc}
_021DB52C:
cmp r2, #0
beq _021DB53E
cmp r2, #1
bne _021DB562
ldr r0, [r0, #0x14]
mov r1, #1
bl FUN_02020130
pop {r3, pc}
_021DB53E:
ldr r0, [r0, #0x14]
mov r1, #0
bl FUN_02020130
pop {r3, pc}
_021DB548:
cmp r2, #0
beq _021DB55A
cmp r2, #1
bne _021DB562
ldr r0, [r0, #0x18]
mov r1, #3
bl FUN_02020130
pop {r3, pc}
_021DB55A:
ldr r0, [r0, #0x18]
mov r1, #2
bl FUN_02020130
_021DB562:
pop {r3, pc}
thumb_func_start MOD15_021DB564
MOD15_021DB564: ; 0x021DB564
push {r4, lr}
add r4, r0, #0
str r1, [r4]
str r2, [r4, #4]
cmp r3, #0
bne _021DB57E
add r0, r1, #0
add r1, r2, #0
bl FUN_02017B48
str r0, [r4, #0xc]
mov r0, #0
b _021DB58A
_021DB57E:
add r0, r1, #0
add r1, r2, #0
bl FUN_02017B54
str r0, [r4, #0xc]
mov r0, #3
_021DB58A:
str r0, [r4, #8]
ldr r0, [sp, #8]
ldr r1, [r4, #0xc]
add r2, r1, r0
ldr r1, _021DB5B4 ; =0x000001FF
lsl r0, r0, #0xc
and r1, r2
str r1, [r4, #0x10]
ldr r1, [r4, #0xc]
lsl r1, r1, #0xc
str r1, [r4, #0xc]
ldr r1, [sp, #0xc]
bl _s32_div_f
str r0, [r4, #0x14]
ldr r0, [sp, #0xc]
strh r0, [r4, #0x18]
mov r0, #0
strh r0, [r4, #0x1a]
pop {r4, pc}
nop
_021DB5B4: .word 0x000001FF
thumb_func_start MOD15_021DB5B8
MOD15_021DB5B8: ; 0x021DB5B8
push {r4, lr}
add r4, r0, #0
ldrh r0, [r4, #0x1a]
cmp r0, #0
beq _021DB5CC
cmp r0, #1
beq _021DB5E0
cmp r0, #2
beq _021DB5F6
b _021DB5FA
_021DB5CC:
ldr r0, _021DB600 ; =MOD15_021DB604
add r1, r4, #0
mov r2, #0
bl MOD15_021D88D0
str r0, [r4, #0x1c]
ldrh r0, [r4, #0x1a]
add r0, r0, #1
strh r0, [r4, #0x1a]
b _021DB5FA
_021DB5E0:
ldrh r0, [r4, #0x18]
cmp r0, #0
bne _021DB5FA
ldr r0, [r4, #0x1c]
bl FUN_0200CAB4
ldrh r0, [r4, #0x1a]
add r0, r0, #1
strh r0, [r4, #0x1a]
mov r0, #1
pop {r4, pc}
_021DB5F6:
mov r0, #1
pop {r4, pc}
_021DB5FA:
mov r0, #0
pop {r4, pc}
nop
_021DB600: .word MOD15_021DB604
thumb_func_start MOD15_021DB604
MOD15_021DB604: ; 0x021DB604
push {r4, lr}
add r4, r1, #0
ldrh r0, [r4, #0x18]
cmp r0, #0
beq _021DB632
ldr r1, [r4, #0xc]
ldr r0, [r4, #0x14]
add r3, r1, r0
str r3, [r4, #0xc]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
lsl r1, r1, #0x18
lsl r2, r2, #0x18
ldr r0, [r4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
asr r3, r3, #0xc
bl FUN_020179E0
ldrh r0, [r4, #0x18]
sub r0, r0, #1
strh r0, [r4, #0x18]
pop {r4, pc}
_021DB632:
ldr r1, [r4, #4]
ldr r2, [r4, #8]
lsl r1, r1, #0x18
lsl r2, r2, #0x18
ldr r0, [r4]
ldr r3, [r4, #0x10]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl FUN_020179E0
pop {r4, pc}
thumb_func_start MOD15_021DB648
MOD15_021DB648: ; 0x021DB648
push {r4, lr}
add r4, r0, #0
str r1, [r4]
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
str r2, [r4, #4]
str r1, [r4, #0x14]
str r3, [r4, #8]
sub r0, r0, r3
bl _s32_div_f
str r0, [r4, #0x10]
ldr r0, [sp, #8]
mov r2, #0
str r0, [r4, #0xc]
ldr r0, _021DB674 ; =MOD15_021DB6A0
add r1, r4, #0
str r2, [r4, #0x18]
bl MOD15_021D88D0
str r0, [r4, #0x1c]
pop {r4, pc}
.align 2, 0
_021DB674: .word MOD15_021DB6A0
thumb_func_start MOD15_021DB678
MOD15_021DB678: ; 0x021DB678
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x18]
cmp r0, #0
bne _021DB698
ldr r0, [r4, #0x14]
cmp r0, #0
bne _021DB69C
ldr r0, [r4, #0x1c]
bl FUN_0200CAB4
ldr r0, [r4, #0x18]
add r0, r0, #1
str r0, [r4, #0x18]
mov r0, #1
pop {r4, pc}
_021DB698:
mov r0, #1
pop {r4, pc}
_021DB69C:
mov r0, #0
pop {r4, pc}
thumb_func_start MOD15_021DB6A0
MOD15_021DB6A0: ; 0x021DB6A0
push {r3, lr}
add r2, r1, #0
ldr r0, [r2, #0x14]
cmp r0, #0
beq _021DB6BC
ldr r1, [r2, #8]
ldr r0, [r2, #0x10]
add r0, r1, r0
str r0, [r2, #8]
asr r3, r0, #3
ldr r0, [r2, #0x14]
sub r0, r0, #1
str r0, [r2, #0x14]
b _021DB6C0
_021DB6BC:
ldr r0, [r2, #0xc]
asr r3, r0, #3
_021DB6C0:
cmp r3, #0x10
ble _021DB6C6
mov r3, #0x10
_021DB6C6:
mov r0, #0x10
sub r0, r0, r3
str r0, [sp]
ldr r0, _021DB6D8 ; =0x04000050
ldmia r2!, {r1, r2}
bl G2x_SetBlendAlpha_
pop {r3, pc}
nop
_021DB6D8: .word 0x04000050
thumb_func_start MOD15_021DB6DC
MOD15_021DB6DC: ; 0x021DB6DC
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, _021DB714 ; =0x04000050
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
bl G2x_SetBlendBrightness_
ldr r1, [sp, #0x18]
str r4, [r5]
str r1, [r5, #0x14]
lsl r0, r6, #0xc
str r0, [r5, #8]
lsl r2, r7, #0xc
str r2, [r5, #0xc]
ldr r0, [r5, #8]
sub r0, r2, r0
bl _s32_div_f
str r0, [r5, #0x10]
mov r2, #0
ldr r0, _021DB718 ; =MOD15_021DB744
add r1, r5, #0
str r2, [r5, #0x18]
bl MOD15_021D88D0
str r0, [r5, #0x1c]
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021DB714: .word 0x04000050
_021DB718: .word MOD15_021DB744
thumb_func_start MOD15_021DB71C
MOD15_021DB71C: ; 0x021DB71C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x18]
cmp r0, #0
bne _021DB73C
ldr r0, [r4, #0x14]
cmp r0, #0
bne _021DB740
ldr r0, [r4, #0x1c]
bl FUN_0200CAB4
ldr r0, [r4, #0x18]
add r0, r0, #1
str r0, [r4, #0x18]
mov r0, #1
pop {r4, pc}
_021DB73C:
mov r0, #1
pop {r4, pc}
_021DB740:
mov r0, #0
pop {r4, pc}
thumb_func_start MOD15_021DB744
MOD15_021DB744: ; 0x021DB744
ldr r0, [r1, #0x14]
cmp r0, #0
beq _021DB75C
ldr r2, [r1, #8]
ldr r0, [r1, #0x10]
add r0, r2, r0
str r0, [r1, #8]
asr r2, r0, #0xc
ldr r0, [r1, #0x14]
sub r0, r0, #1
str r0, [r1, #0x14]
b _021DB760
_021DB75C:
ldr r0, [r1, #0xc]
asr r2, r0, #0xc
_021DB760:
ldr r3, _021DB768 ; =0x020C74B8
ldr r0, _021DB76C ; =0x04000050
ldr r1, [r1]
bx r3
.align 2, 0
_021DB768: .word 0x020C74B8
_021DB76C: .word 0x04000050
thumb_func_start MOD15_021DB770
MOD15_021DB770: ; 0x021DB770
mov r0, #0x1b
bx lr
thumb_func_start MOD15_021DB774
MOD15_021DB774: ; 0x021DB774
push {r3, r4, r5, lr}
add r4, r0, #0
add r5, r1, #0
cmp r4, #0x1b
blo _021DB782
bl ErrorHandling
_021DB782:
mov r1, #0xa
ldr r2, _021DB794 ; =0x021DBA4C
mul r1, r4
add r1, r2, r1
add r0, r5, #0
mov r2, #2
bl FUN_02021E8C
pop {r3, r4, r5, pc}
.align 2, 0
_021DB794: .word 0x021DBA4C
thumb_func_start MOD15_021DB798
MOD15_021DB798: ; 0x021DB798
push {r4, r5, r6, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
cmp r5, #0x1b
blo _021DB7A8
bl ErrorHandling
_021DB7A8:
mov r0, #0xa
add r1, r5, #0
mul r1, r0
ldr r0, _021DB7BC ; =0x021DBA4E
ldrb r0, [r0, r1]
str r0, [r4]
ldr r0, _021DB7C0 ; =0x021DBA4F
ldrb r0, [r0, r1]
str r0, [r6]
pop {r4, r5, r6, pc}
.align 2, 0
_021DB7BC: .word 0x021DBA4E
_021DB7C0: .word 0x021DBA4F
thumb_func_start MOD15_021DB7C4
MOD15_021DB7C4: ; 0x021DB7C4
push {r4, lr}
add r4, r0, #0
cmp r4, #0x1b
blo _021DB7D0
bl ErrorHandling
_021DB7D0:
mov r0, #0xa
add r1, r4, #0
mul r1, r0
ldr r0, _021DB7DC ; =0x021DBA50
ldrb r0, [r0, r1]
pop {r4, pc}
.align 2, 0
_021DB7DC: .word 0x021DBA50
thumb_func_start MOD15_021DB7E0
MOD15_021DB7E0: ; 0x021DB7E0
push {r4, lr}
add r4, r0, #0
cmp r4, #0x1b
blo _021DB7EC
bl ErrorHandling
_021DB7EC:
mov r0, #0xa
add r1, r4, #0
mul r1, r0
ldr r0, _021DB7F8 ; =0x021DBA51
ldrb r0, [r0, r1]
pop {r4, pc}
.align 2, 0
_021DB7F8: .word 0x021DBA51
thumb_func_start MOD15_021DB7FC
MOD15_021DB7FC: ; 0x021DB7FC
push {r4, lr}
add r4, r0, #0
cmp r4, #0x1b
blo _021DB808
bl ErrorHandling
_021DB808:
mov r0, #0xa
add r1, r4, #0
mul r1, r0
ldr r0, _021DB814 ; =0x021DBA52
ldrb r0, [r0, r1]
pop {r4, pc}
.align 2, 0
_021DB814: .word 0x021DBA52
thumb_func_start MOD15_021DB818
MOD15_021DB818: ; 0x021DB818
push {r4, lr}
add r4, r0, #0
cmp r4, #0x1b
blo _021DB824
bl ErrorHandling
_021DB824:
mov r0, #0xa
add r1, r4, #0
mul r1, r0
ldr r0, _021DB830 ; =0x021DBA53
ldrb r0, [r0, r1]
pop {r4, pc}
.align 2, 0
_021DB830: .word 0x021DBA53
thumb_func_start MOD15_021DB834
MOD15_021DB834: ; 0x021DB834
push {r4, lr}
add r4, r0, #0
cmp r4, #0x1b
blo _021DB840
bl ErrorHandling
_021DB840:
mov r0, #0xa
add r1, r4, #0
mul r1, r0
ldr r0, _021DB84C ; =0x021DBA54
ldrb r0, [r0, r1]
pop {r4, pc}
.align 2, 0
_021DB84C: .word 0x021DBA54
thumb_func_start MOD15_021DB850
MOD15_021DB850: ; 0x021DB850
push {r4, lr}
add r4, r0, #0
cmp r4, #0x1b
blo _021DB85C
bl ErrorHandling
_021DB85C:
mov r0, #0xa
add r1, r4, #0
mul r1, r0
ldr r0, _021DB868 ; =0x021DBA55
ldrb r0, [r0, r1]
pop {r4, pc}
.align 2, 0
_021DB868: .word 0x021DBA55
.section .rodata
; 0x021DB86C
.byte 0x99, 0x7E, 0x1D, 0x02, 0x51, 0x7F, 0x1D, 0x02, 0xB1, 0x77, 0x1D, 0x02, 0x91, 0x78, 0x1D, 0x02
.byte 0xC1, 0x79, 0x1D, 0x02, 0x18, 0x50, 0x18, 0x70, 0x70, 0xA8, 0x18, 0x70, 0x28, 0x48, 0xB0, 0xD0
.byte 0x78, 0x98, 0xB0, 0xD0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x02, 0x01, 0xFE, 0x04, 0x00, 0x02
.byte 0xFE, 0x05, 0x01, 0x00, 0x00, 0x06, 0x05, 0x04, 0x01, 0x07, 0x03, 0x05, 0x02, 0x08, 0x04, 0x03
.byte 0x03, 0x09, 0x08, 0x07, 0x04, 0x0A, 0x06, 0x08, 0x05, 0x0B, 0x07, 0x06, 0x06, 0xFE, 0x0B, 0x0A
.byte 0x07, 0xFE, 0x09, 0x0B, 0x08, 0xFE, 0x0A, 0x09, 0x09, 0x00, 0xFE, 0xFE, 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x04
.byte 0x00, 0x01, 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, 0x1F, 0x02, 0x00, 0x03, 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, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1C, 0x00, 0x00, 0x00, 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, 0x1E, 0x06
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0xC1, 0x89, 0x1D, 0x02, 0x59, 0x8B, 0x1D, 0x02, 0xB5, 0x8C, 0x1D, 0x02, 0x05, 0x8D, 0x1D, 0x02
.byte 0x31, 0x8D, 0x1D, 0x02, 0x75, 0x8D, 0x1D, 0x02, 0xA5, 0x8D, 0x1D, 0x02, 0x29, 0x8F, 0x1D, 0x02
.byte 0x8D, 0x8F, 0x1D, 0x02, 0x2D, 0x90, 0x1D, 0x02, 0x01, 0x91, 0x1D, 0x02, 0xE1, 0x91, 0x1D, 0x02
.byte 0xB9, 0x92, 0x1D, 0x02, 0xD9, 0x92, 0x1D, 0x02, 0xF9, 0x92, 0x1D, 0x02, 0x19, 0x93, 0x1D, 0x02
.byte 0x39, 0x93, 0x1D, 0x02, 0x89, 0x93, 0x1D, 0x02, 0xA5, 0x93, 0x1D, 0x02, 0xF5, 0x93, 0x1D, 0x02
.byte 0x45, 0x94, 0x1D, 0x02, 0x61, 0x94, 0x1D, 0x02, 0x81, 0x94, 0x1D, 0x02, 0x1D, 0x8E, 0x1D, 0x02
.byte 0x85, 0x8E, 0x1D, 0x02, 0xC9, 0x94, 0x1D, 0x02, 0xE5, 0x94, 0x1D, 0x02, 0x01, 0x95, 0x1D, 0x02
.byte 0x1D, 0x95, 0x1D, 0x02, 0x03, 0x03, 0x06, 0x0A, 0x02, 0x0D, 0x40, 0x00, 0x03, 0x13, 0x06, 0x0A
.byte 0x02, 0x0D, 0x54, 0x00, 0x0C, 0x00, 0x15, 0x00, 0x2C, 0x00, 0x15, 0x00, 0x16, 0x00, 0x4D, 0x00
.byte 0x84, 0x00, 0xBD, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x11, 0x00
.byte 0x12, 0x00, 0x13, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00
.byte 0x0E, 0x00, 0x05, 0x00, 0x07, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00
.byte 0x2B, 0x01, 0x1C, 0x0C, 0xFE, 0x0A, 0x09, 0x01, 0x00, 0x14, 0x2C, 0x01, 0x2C, 0x0C, 0xFE, 0x0B
.byte 0x00, 0x02, 0x01, 0x15, 0x2D, 0x01, 0x3C, 0x0C, 0xFE, 0x0C, 0x01, 0x03, 0x02, 0x16, 0x2E, 0x01
.byte 0x4C, 0x0C, 0xFE, 0x0D, 0x02, 0x04, 0x03, 0x17, 0x2F, 0x01, 0x5C, 0x0C, 0xFE, 0x0E, 0x03, 0x05
.byte 0x04, 0x18, 0x30, 0x01, 0x6C, 0x0C, 0xFE, 0x0F, 0x04, 0x06, 0x05, 0x19, 0x31, 0x01, 0x7C, 0x0C
.byte 0xFE, 0x10, 0x05, 0x07, 0x06, 0x10, 0x32, 0x01, 0x8C, 0x0C, 0xFE, 0x11, 0x06, 0x08, 0x07, 0x11
.byte 0x33, 0x01, 0x9C, 0x0C, 0xFE, 0x12, 0x07, 0x09, 0x08, 0x12, 0x34, 0x01, 0xAC, 0x0C, 0xFE, 0x13
.byte 0x08, 0x00, 0x09, 0x1A, 0x35, 0x01, 0x1C, 0x1C, 0x00, 0x14, 0x13, 0x0B, 0x00, 0x14, 0x36, 0x01
.byte 0x2C, 0x1C, 0x01, 0x15, 0x0A, 0x0C, 0x01, 0x15, 0x37, 0x01, 0x3C, 0x1C, 0x02, 0x16, 0x0B, 0x0D
.byte 0x02, 0x16, 0x38, 0x01, 0x4C, 0x1C, 0x03, 0x17, 0x0C, 0x0E, 0x03, 0x17, 0x39, 0x01, 0x5C, 0x1C
.byte 0x04, 0x18, 0x0D, 0x0F, 0x04, 0x18, 0x3A, 0x01, 0x6C, 0x1C, 0x05, 0x19, 0x0E, 0x10, 0x05, 0x19
.byte 0x3B, 0x01, 0x7C, 0x1C, 0x06, 0xFE, 0x0F, 0x11, 0x06, 0x10, 0x3C, 0x01, 0x8C, 0x1C, 0x07, 0xFE
.byte 0x10, 0x12, 0x07, 0x11, 0x3D, 0x01, 0x9C, 0x1C, 0x08, 0xFE, 0x11, 0x13, 0x08, 0x12, 0x3E, 0x01
.byte 0xAC, 0x1C, 0x09, 0x1A, 0x12, 0x0A, 0x09, 0x1A, 0x3F, 0x01, 0x1C, 0x2C, 0x0A, 0xFE, 0x1A, 0x15
.byte 0x00, 0x14, 0x40, 0x01, 0x2C, 0x2C, 0x0B, 0xFE, 0x14, 0x16, 0x01, 0x15, 0x41, 0x01, 0x3C, 0x2C
.byte 0x0C, 0xFE, 0x15, 0x17, 0x02, 0x16, 0x42, 0x01, 0x4C, 0x2C, 0x0D, 0xFE, 0x16, 0x18, 0x03, 0x17
.byte 0x43, 0x01, 0x5C, 0x2C, 0x0E, 0xFE, 0x17, 0x19, 0x04, 0x18, 0x44, 0x01, 0x6C, 0x2C, 0x0F, 0xFE
.byte 0x18, 0x1A, 0x05, 0x19, 0xAB, 0x01, 0xAC, 0x2C, 0x13, 0xFE, 0x19, 0x14, 0x09, 0x1A, 0x00, 0x00