pmd-sky/sub/asm/arm7.s
AnonymousRandomPerson ee153c6b30 Compiled arm7
2023-08-06 17:47:05 -04:00

46644 lines
827 KiB
ArmAsm

.include "asm/macros.inc"
.include "asm/include/arm7.inc"
.text
arm_func_start sub_02000000
sub_02000000: ; 0x02000000
mov ip, #0x4000000
str ip, [ip, #0x208]
ldr r1, _020000E4 ; =0x023801E8
mov r0, #0x3800000
cmp r0, r1
bpl _0200001C
b _02000020
_0200001C:
mov r1, r0
_02000020:
ldr r2, _020000E8 ; =0x0380FF00
mov r0, #0
_02000028:
cmp r1, r2
blt _02000034
b _02000038
_02000034:
stmia r1!, {r0}
_02000038:
blt _02000028
mov r0, #0x13
msr cpsr_c, r0
ldr sp, _020000EC ; =0x0380FFC0
mov r0, #0x12
msr cpsr_c, r0
ldr r0, _020000F0 ; =0x0380FF80
mov sp, r0
ldr r1, _020000F4 ; =0x00000400
sub r1, r0, r1
mov r0, #0x1f
msr cpsr_fsxc, r0
sub sp, r1, #4
ldr r0, _020000F8 ; =0x023FE940
ldr r1, _020000FC ; =0x027FFA80
add r2, r1, #0x160
_02000078:
ldr r3, [r0], #4
str r3, [r1], #4
cmp r1, r2
bmi _02000078
ldr r0, _02000100 ; =0x023FE904
add r2, r1, #0x20
_02000090:
ldr r3, [r0], #4
str r3, [r1], #4
cmp r1, r2
bmi _02000090
bl sub_02000118
ldr r0, _02000104 ; =0x023801D0
ldr r1, [r0, #0xc]
ldr r2, [r0, #0x10]
mov r0, #0
_020000B4:
cmp r1, r2
blo _020000C0
b _020000C4
_020000C0:
str r0, [r1], #4
_020000C4:
blo _020000B4
bl sub_0200018C
ldr r1, _02000108 ; =0x0380FFFC
ldr r0, _0200010C ; =0x037FB488
str r0, [r1]
ldr r1, _02000110 ; =sub_037F8000
ldr lr, _02000114 ; =0xFFFF0000
bx r1
.align 2, 0
_020000E4: .word 0x023801E8
_020000E8: .word 0x0380FF00
_020000EC: .word 0x0380FFC0
_020000F0: .word 0x0380FF80
_020000F4: .word 0x00000400
_020000F8: .word 0x023FE940
_020000FC: .word 0x027FFA80
_02000100: .word 0x023FE904
_02000104: .word 0x023801D0
_02000108: .word 0x0380FFFC
_0200010C: .word 0x037FB488
_02000110: .word sub_037F8000
_02000114: .word 0xFFFF0000
arm_func_end sub_02000000
arm_func_start sub_02000118
sub_02000118: ; 0x02000118
ldr r0, _02000184 ; =0x023801D0
ldr r1, [r0]
ldr r2, [r0, #4]
ldr r3, [r0, #8]
_02000128:
cmp r1, r2
beq _02000180
ldr r4, [r1], #4
ldr r5, [r1], #4
add r6, r4, r5
_0200013C:
cmp r4, r6
bmi _02000148
b _0200014C
_02000148:
ldr r7, [r3], #4
_0200014C:
bmi _02000154
b _02000158
_02000154:
str r7, [r4], #4
_02000158:
bmi _0200013C
ldr r5, [r1], #4
add r6, r4, r5
mov r7, #0
_02000168:
cmp r4, r6
blo _02000174
b _02000178
_02000174:
str r7, [r4], #4
_02000178:
blo _02000168
beq _02000128
_02000180:
b _02000188
.align 2, 0
_02000184: .word 0x023801D0
_02000188:
bx lr
arm_func_end sub_02000118
arm_func_start sub_0200018C
sub_0200018C: ; 0x0200018C
mov r0, #1
mov r1, #0
ldr r2, _020001CC ; =0x027FFFFA
sub r3, r2, #0x400000
_0200019C:
strh r1, [r2]
ldrh ip, [r3]
cmp r1, ip
bne _020001B0
b _020001B4
_020001B0:
mov r0, #2
_020001B4:
bne _020001C4
add r1, r1, #1
cmp r1, #2
bne _0200019C
_020001C4:
strh r0, [r2]
bx lr
.align 2, 0
_020001CC: .word 0x027FFFFA
arm_func_end sub_0200018C
_020001D0:
.byte 0x68, 0x70, 0x3A, 0x02, 0x80, 0x70, 0x3A, 0x02, 0xE8, 0x01, 0x38, 0x02, 0xE8, 0x01, 0x38, 0x02
.byte 0xE8, 0x01, 0x38, 0x02, 0x00, 0x00, 0x00, 0x00
arm_func_start sub_020001E8
sub_020001E8: ; 0x020001E8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x210
bl sub_02004BD4
bl sub_0200414C
add r2, sp, #4
mov r0, #0x20
mov r1, #2
bl sub_00FFD7A0
ldr r0, [sp, #4]
add r2, sp, #0x10
mov r0, r0, lsl #3
str r0, [sp, #4]
mov r1, #0x100
bl sub_00FFD7A0
ldr r0, [sp, #4]
add r2, sp, #0x110
add r0, r0, #0x100
mov r1, #0x100
bl sub_00FFD7A0
mov r0, #0x1d
mov r1, #1
add r2, sp, #0
mov r6, #0
bl sub_00FFD7A0
ldrb r0, [sp]
cmp r0, #0xff
moveq r0, r6
beq _02000264
tst r0, #0x50
movne r0, #1
moveq r0, r6
_02000264:
cmp r0, #0
beq _02000338
bl sub_0200066C
mov r8, r0
mov fp, #1
and r7, r8, #0x40
mov sl, #0
add r5, sp, #0x10
mov r4, fp
b _0200032C
_0200028C:
ldr r0, _0200063C ; =0x0000FFFF
add sb, r5, sl, lsl #8
mov r1, sb
mov r2, #0x70
bl sub_02000654
mov r2, sb
ldrh r1, [r2, #0x72]
cmp r0, r1
bne _02000320
ldrh r0, [r2, #0x70]
cmp r0, #0x80
bhs _02000320
ldr r0, _0200063C ; =0x0000FFFF
mov r2, #0x8a
add r1, sb, #0x74
bl sub_02000654
mov r2, sb
ldrh r1, [r2, #0xfe]
cmp r0, r1
bne _02000320
ldrh r1, [r2, #0x76]
ldrb r0, [r2, #0x75]
tst r1, r4, lsl r0
beq _02000320
tst r8, r1
ldrneh r1, [sb, #0x64]
andne r0, r0, #7
bicne r1, r1, #7
orrne r0, r1, r0
strneh r0, [sb, #0x64]
add r0, r5, sl, lsl #8
ldrh r0, [r0, #0x76]
mvn r0, r0
tst r7, r0
movne r6, #3
bne _020003D8
orr r6, r6, fp, lsl sl
_02000320:
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, lsr #0x10
_0200032C:
cmp sl, #2
blo _0200028C
b _0200039C
_02000338:
bl sub_0200066C
tst r0, #0x40
movne r6, #3
bne _020003D8
ldr r8, _0200063C ; =0x0000FFFF
mov sb, #0
add r7, sp, #0x10
mov r4, #1
mov r5, #0x70
_0200035C:
mov r0, r8
mov r2, r5
add r1, r7, sb, lsl #8
bl sub_02000654
add r2, r7, sb, lsl #8
ldrh r1, [r2, #0x72]
cmp r0, r1
bne _02000388
ldrh r0, [r2, #0x70]
cmp r0, #0x80
orrlo r6, r6, r4, lsl sb
_02000388:
add r0, sb, #1
mov r0, r0, lsl #0x10
mov sb, r0, lsr #0x10
cmp sb, #2
blo _0200035C
_0200039C:
cmp r6, #1
cmpne r6, #2
beq _020003D8
cmp r6, #3
bne _020003D4
ldrh r1, [sp, #0x80]
add r0, sp, #0x100
add r1, r1, #1
ldrh r0, [r0, #0x80]
and r1, r1, #0x7f
cmp r1, r0
moveq r6, #2
movne r6, #1
b _020003D8
_020003D4:
mov r6, #0
_020003D8:
cmp r6, #3
blt _020003F4
ldr r1, _02000640 ; =0x027FFC80
mvn r0, #0
mov r2, #0x74
bl sub_020061B8
b _020004B0
_020003F4:
cmp r6, #0
beq _020004A0
ldr r0, _02000644 ; =0xFFFFFF2A
mov r1, r6, lsl #8
add r0, sp, r0
ldrb r0, [r0, r6, lsl #8]
cmp r0, #0xa
bhs _02000440
add r0, sp, #0x10
mov r3, #0xa
mov r2, #0
add r1, r0, r1
b _02000434
_02000428:
add r0, r1, r3, lsl #1
strh r2, [r0, #-0xfc]
sub r3, r3, #1
_02000434:
ldrb r0, [r1, #-0xe6]
cmp r3, r0
bgt _02000428
_02000440:
ldr r0, _02000648 ; =0xFFFFFF60
mov r1, r6, lsl #8
add r0, sp, r0
ldrb r0, [r0, r6, lsl #8]
cmp r0, #0x1a
bhs _02000484
add r0, sp, #0x10
mov r3, #0x1a
mov r2, #0
add r1, r0, r1
b _02000478
_0200046C:
add r0, r1, r3, lsl #1
strh r2, [r0, #-0xe6]
sub r3, r3, #1
_02000478:
ldrb r0, [r1, #-0xb0]
cmp r3, r0
bgt _0200046C
_02000484:
ldr r1, _02000640 ; =0x027FFC80
add r2, sp, #0x10
sub r0, r6, #1
add r0, r2, r0, lsl #8
mov r2, #0x74
bl sub_020061D4
b _020004B0
_020004A0:
ldr r1, _02000640 ; =0x027FFC80
mov r0, #0
mov r2, #0x74
bl sub_020061B8
_020004B0:
add r2, sp, #8
mov r0, #0x36
mov r1, #6
bl sub_00FFD7A0
ldr r4, _02000640 ; =0x027FFC80
add r0, sp, #8
add r1, r4, #0x74
mov r2, #6
bl sub_02006314
add r2, sp, #2
mov r0, #0x3c
mov r1, #2
bl sub_00FFD7A0
ldrh r0, [sp, #2]
mov r0, r0, lsl #0xf
mov r0, r0, lsr #0x10
bl sub_0200F5BC
strh r0, [r4, #0x7a]
bl sub_0200649C
mov r0, #8
bl sub_02004C7C
mov r4, r0
mov r0, #8
bl sub_02004C90
mov r1, r0
mov r2, r4
mov r0, #8
mov r3, #1
bl sub_0200500C
mov r4, r0
mov r0, #8
bl sub_02004C7C
sub r2, r0, r4
mov r0, r4
mov r1, #0
bl sub_02006258
mov r1, r4
mov r0, #8
bl sub_02004D78
mov r0, #8
bl sub_02004C7C
mov r4, r0
mov r0, #8
bl sub_02004C90
mov r1, r0
mov r2, r4
mov r0, #8
bl sub_020050B4
movs r4, r0
bpl _0200057C
bl sub_02006058
_0200057C:
mov r1, r4
mov r0, #8
bl sub_02004FD8
mov r1, r4
mov r0, #8
bl sub_02005154
cmp r0, #0x2100
bhs _020005A0
bl sub_02006058
_020005A0:
mov r0, #6
bl sub_020070E0
bl sub_020067A8
ldr r1, _0200064C ; =0x037F84BC
mov r0, #1
bl sub_020039A4
mov r0, #1
bl sub_02003AD8
ldr r3, _02000650 ; =0x04000004
mov r0, #1
ldrh r1, [r3]
ldrh r1, [r3]
add r2, r3, #0x204
orr r1, r1, #8
strh r1, [r3]
ldrh r1, [r2]
strh r0, [r2]
bl sub_02005ED4
mvn r0, #0
bl sub_0200A800
mov r0, #0xf
bl sub_0200A8C8
mov r0, #0xc
bl sub_00FFDEAC
mov r0, r4
bl sub_0200D430
mov r0, #2
bl sub_0200BA5C
mov r4, #0
_02000614:
bl sub_02000660
bl sub_02005F9C
cmp r0, #0
beq _02000630
mov r0, r4
bl sub_0200E7F8
bl sub_02005FE0
_02000630:
bl sub_0200EA30
bl sub_0200B8A4
b _02000614
.align 2, 0
_0200063C: .word 0x0000FFFF
_02000640: .word 0x027FFC80
_02000644: .word 0xFFFFFF2A
_02000648: .word 0xFFFFFF60
_0200064C: .word 0x037F84BC
_02000650: .word 0x04000004
arm_func_end sub_020001E8
arm_func_start sub_02000654
sub_02000654: ; 0x02000654
ldr ip, _0200065C ; =sub_03803804
bx ip
.align 2, 0
_0200065C: .word sub_03803804
arm_func_end sub_02000654
arm_func_start sub_02000660
sub_02000660: ; 0x02000660
ldr ip, _02000668 ; =sub_038037D2
bx ip
.align 2, 0
_02000668: .word sub_038037D2
arm_func_end sub_02000660
arm_func_start sub_0200066C
sub_0200066C: ; 0x0200066C
ldr r1, _020006A0 ; =0x027FFE1D
mov r0, #0
ldrb r1, [r1]
cmp r1, #0x80
orreq r0, r0, #0x40
moveq r0, r0, lsl #0x10
moveq r0, r0, lsr #0x10
bxeq lr
cmp r1, #0x40
orreq r0, r0, #0x80
moveq r0, r0, lsl #0x10
moveq r0, r0, lsr #0x10
bx lr
.align 2, 0
_020006A0: .word 0x027FFE1D
arm_func_end sub_0200066C
arm_func_start sub_020006A4
sub_020006A4: ; 0x020006A4
stmdb sp!, {r3, lr}
ldr r0, _020006C4 ; =0x03809E50
ldr r0, [r0]
cmp r0, #0
beq _020006BC
bl sub_0200D2E4
_020006BC:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020006C4: .word 0x03809E50
arm_func_end sub_020006A4
arm_func_start sub_020006C8
sub_020006C8: ; 0x020006C8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r7, _02000774 ; =0x0380FFF4
mov r0, #0
ldr r8, [r7]
ldr r4, _02000778 ; =0x01000010
strh r0, [r8, #0x10]
ldr sb, _0200077C ; =0x0000FFFF
strh r0, [r8, #0x14]
add r6, sp, #0
mov r5, r0
_020006F0:
ldr r0, [r7]
mov r1, r6
ldr r0, [r0, #0x308]
mov r2, r5
bl sub_02004948
cmp r0, #0
beq _02000714
mov r0, r6
bl sub_020008EC
_02000714:
mov r0, r4
bl sub_02003B10
ldrh r1, [r8, #0x10]
strh r1, [r8, #0x12]
mov r1, r1, lsl #1
ldrh r1, [r8, r1]
cmp r1, sb
bne _02000748
ldrh r1, [r8, #0x10]
add r1, r1, #1
strh r1, [r8, #0x10]
bl sub_02003AD8
b _020006F0
_02000748:
bl sub_02003AD8
ldrh r0, [r8, #0x12]
bl sub_02000838
strh r0, [r8, #0x14]
ldrh r0, [r8, #0x14]
add r0, r8, r0, lsl #3
ldr r0, [r0, #0xc0]
mov lr, pc
bx r0
_0200076C: ; 0x0200076C
strh sb, [r8, #0x14]
b _020006F0
.align 2, 0
_02000774: .word 0x0380FFF4
_02000778: .word 0x01000010
_0200077C: .word 0x0000FFFF
arm_func_end sub_020006C8
arm_func_start sub_02000780
sub_02000780: ; 0x02000780
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _02000830 ; =0x0380FFF4
mov r7, r0
ldr r4, [r2]
ldr r0, _02000834 ; =0x01000010
mov r6, r1
add r5, r4, #0xbc
bl sub_02003B10
add r2, r5, r6, lsl #3
ldrh r1, [r2, #2]
mov ip, r6, lsl #3
cmp r1, #0
bne _020007F8
mov r3, #1
strh r3, [r2, #2]
rsb r1, r3, #0x10000
strh r1, [r5, ip]
add r1, r4, r7, lsl #1
ldrh r2, [r1, #8]
rsb r1, r3, #0x10000
cmp r2, r1
mov r1, r7, lsl #1
streqh r6, [r4, r1]
addne r1, r4, r2, lsl #3
strneh r6, [r1, #0xbc]
add r1, r4, r7, lsl #1
strh r6, [r1, #8]
ldrh r1, [r4, #0x10]
cmp r7, r1
strlth r7, [r4, #0x10]
_020007F8:
bl sub_02003AD8
cmp r7, #3
beq _02000828
ldrh r0, [r4, #0x12]
cmp r0, #3
bne _02000828
ldr r0, _02000830 ; =0x0380FFF4
mov r1, #0
ldr r0, [r0]
mov r2, r1
ldr r0, [r0, #0x308]
bl sub_020048BC
_02000828:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02000830: .word 0x0380FFF4
_02000834: .word 0x01000010
arm_func_end sub_02000780
arm_func_start sub_02000838
sub_02000838: ; 0x02000838
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020008A4 ; =0x0380FFF4
mov r5, r0
ldr r0, _020008A8 ; =0x01000010
ldr r4, [r1]
bl sub_02003B10
mov lr, r5, lsl #1
ldrh r5, [r4, lr]
ldr r2, _020008AC ; =0x0000FFFF
cmp r5, r2
beq _02000894
add ip, r4, #0xbc
add r1, ip, r5, lsl #3
mov r3, #0
strh r3, [r1, #2]
mov r3, r5, lsl #3
ldrh r1, [ip, r3]
cmp r1, r2
streqh r2, [r4, lr]
addeq r1, r4, lr
streqh r2, [r1, #8]
strneh r1, [r4, lr]
strneh r2, [ip, r3]
_02000894:
bl sub_02003AD8
mov r0, r5
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020008A4: .word 0x0380FFF4
_020008A8: .word 0x01000010
_020008AC: .word 0x0000FFFF
arm_func_end sub_02000838
arm_func_start sub_020008B0
sub_020008B0: ; 0x020008B0
stmdb sp!, {r3, lr}
ldr r0, _020008E8 ; =0x0380FFF4
add r1, sp, #0
ldr r0, [r0]
mov r2, #1
ldr r0, [r0, #0x308]
bl sub_02004948
add r0, sp, #0
bl sub_020008EC
mov r0, #3
mov r1, #0xc
bl sub_02000780
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020008E8: .word 0x0380FFF4
arm_func_end sub_020008B0
arm_func_start sub_020008EC
sub_020008EC: ; 0x020008EC
stmdb sp!, {r3, lr}
ldr r1, [r0]
cmp r1, #0
beq _02000918
ldr r0, _02000920 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x200
bl sub_02000924
mov r0, #2
mov r1, #0xb
bl sub_02000780
_02000918:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02000920: .word 0x0380FFF4
arm_func_end sub_020008EC
arm_func_start sub_02000924
sub_02000924: ; 0x02000924
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, #0x1000000
mov r4, r1
bl sub_02003B10
ldrh r1, [r5, #8]
cmp r1, #0
mvneq r1, #0
streq r1, [r4]
streq r4, [r5]
ldrne r1, [r5, #4]
strne r1, [r4]
strne r4, [r1, #4]
mvn r1, #0
str r1, [r4, #4]
ldrh r2, [r5, #0xa]
ldr r1, _02000990 ; =0x0000BF1D
strh r2, [r4, #8]
strh r1, [r4, #0xa]
str r4, [r5, #4]
ldrh r1, [r5, #8]
add r1, r1, #1
strh r1, [r5, #8]
bl sub_02003AD8
mov r0, #0
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02000990: .word 0x0000BF1D
arm_func_end sub_02000924
arm_func_start sub_02000994
sub_02000994: ; 0x02000994
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
ldrh r2, [r4, #0xa]
ldr r1, _02000A50 ; =0x0000BF1D
mov r5, r0
cmp r2, r1
movne r0, #1
bne _02000A48
ldrh r1, [r4, #8]
ldrh r0, [r5, #0xa]
cmp r1, r0
movne r0, #2
bne _02000A48
mov r0, #0x1000000
bl sub_02003B10
ldrh r1, [r5, #8]
sub r1, r1, #1
strh r1, [r5, #8]
ldrh r1, [r5, #8]
cmp r1, #0
mvneq r1, #0
streq r1, [r5]
streq r1, [r5, #4]
beq _02000A38
ldr r1, [r5]
cmp r4, r1
ldreq r2, [r4, #4]
mvneq r1, #0
streq r2, [r5]
streq r1, [r2]
beq _02000A38
ldr r1, [r5, #4]
ldr r2, [r4]
cmp r4, r1
streq r2, [r5, #4]
mvneq r1, #0
streq r1, [r2, #4]
ldrne r1, [r4, #4]
strne r2, [r1]
ldmneia r4, {r1, r2}
strne r2, [r1, #4]
_02000A38:
mov r1, #0
strh r1, [r4, #8]
bl sub_02003AD8
mov r0, #0
_02000A48:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02000A50: .word 0x0000BF1D
arm_func_end sub_02000994
arm_func_start sub_02000A54
sub_02000A54: ; 0x02000A54
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _02000AE8 ; =0x0380FFF4
movs r3, r1
ldr r1, [r2]
mov r5, r0
moveq r0, #0
beq _02000AE0
ldr r0, [r1, #0x17c]
cmp r0, #0
beq _02000A88
cmp r0, #1
beq _02000AA0
b _02000AB4
_02000A88:
ldr r0, [r1, #0x180]
ldr r1, [r1, #0x184]
add r2, r3, #0xc
bl sub_02004E5C
mov r4, r0
b _02000AB4
_02000AA0:
ldr r1, [r1, #0x180]
add r0, r3, #0xc
mov lr, pc
bx r1
_02000AB0:
mov r4, r0
_02000AB4:
cmp r4, #0
moveq r0, #0
beq _02000AE0
ldr r1, _02000AEC ; =0x0000BF1D
mov r0, r5
strh r1, [r4, #0xa]
mov r2, #0
mov r1, r4
strh r2, [r4, #8]
bl sub_02000BDC
mov r0, r4
_02000AE0:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02000AE8: .word 0x0380FFF4
_02000AEC: .word 0x0000BF1D
arm_func_end sub_02000A54
arm_func_start sub_02000AF0
sub_02000AF0: ; 0x02000AF0
stmdb sp!, {r4, r5, r6, lr}
mov r4, r1
ldr r5, _02000B68 ; =0x0380FFF4
ldrh r3, [r4, #0xa]
ldr r2, _02000B6C ; =0x0000BF1D
ldr r5, [r5]
cmp r3, r2
movne r0, #1
bne _02000B60
bl sub_02000994
movs r6, r0
bne _02000B5C
ldr r0, [r5, #0x17c]
cmp r0, #0
beq _02000B38
cmp r0, #1
beq _02000B4C
b _02000B5C
_02000B38:
ldr r0, [r5, #0x180]
ldr r1, [r5, #0x184]
mov r2, r4
bl sub_02004F6C
b _02000B5C
_02000B4C:
ldr r1, [r5, #0x184]
mov r0, r4
mov lr, pc
bx r1
_02000B5C:
mov r0, r6
_02000B60:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02000B68: .word 0x0380FFF4
_02000B6C: .word 0x0000BF1D
arm_func_end sub_02000AF0
arm_func_start sub_02000B70
sub_02000B70: ; 0x02000B70
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r2
ldrh r3, [r6, #0xa]
ldr r2, _02000BD8 ; =0x0000BF1D
mov r4, r0
cmp r3, r2
mov r7, r1
movne r0, #1
bne _02000BD0
mov r0, #0x1000000
bl sub_02003B10
mov r5, r0
mov r0, r4
mov r1, r6
bl sub_02000994
movs r4, r0
bne _02000BC4
mov r0, r7
mov r1, r6
bl sub_02000BDC
mov r4, r0
_02000BC4:
mov r0, r5
bl sub_02003AD8
mov r0, r4
_02000BD0:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02000BD8: .word 0x0000BF1D
arm_func_end sub_02000B70
arm_func_start sub_02000BDC
sub_02000BDC: ; 0x02000BDC
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
ldrh r2, [r4, #0xa]
ldr r1, _02000C64 ; =0x0000BF1D
mov r5, r0
cmp r2, r1
movne r0, #1
bne _02000C5C
ldrh r0, [r4, #8]
cmp r0, #0
movne r0, #2
bne _02000C5C
mov r0, #0x1000000
bl sub_02003B10
ldrh r1, [r5, #8]
cmp r1, #0
mvneq r1, #0
streq r1, [r4]
streq r4, [r5]
ldrne r1, [r5, #4]
strne r1, [r4]
strne r4, [r1, #4]
mvn r1, #0
str r1, [r4, #4]
ldrh r1, [r5, #0xa]
strh r1, [r4, #8]
str r4, [r5, #4]
ldrh r1, [r5, #8]
add r1, r1, #1
strh r1, [r5, #8]
bl sub_02003AD8
mov r0, #0
_02000C5C:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02000C64: .word 0x0000BF1D
arm_func_end sub_02000BDC
arm_func_start sub_02000C68
sub_02000C68: ; 0x02000C68
ldr r0, [r0, #4]
bx lr
arm_func_end sub_02000C68
arm_func_start sub_02000C70
sub_02000C70: ; 0x02000C70
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _02000F20 ; =0x0380FFF4
mov r3, #0
ldr r2, [r4]
mov r6, r3
add r0, r2, #0x24
add r5, r0, #0x400
ldrh r0, [r5, #4]
cmp r0, #0
bne _02000F18
ldr r0, [r2, #0x200]
sub r2, r3, #1
str r0, [r5]
cmp r0, r2
beq _02000F18
ldr r2, [r4]
ldrh r4, [r0, #0xe]
add ip, r2, #0x300
ldrh r2, [ip, #0x3e]
add r4, r0, r4, lsl #1
cmp r2, #0
movne r0, #1
strneh r0, [r4, #0x12]
movne r0, #6
strneh r0, [r4, #0x14]
bne _02000ED0
ldrh r7, [r0, #0xc]
ldrh r2, [r4, #0x10]
cmp r7, r2
movne r0, #0xd
strneh r0, [r4, #0x14]
bne _02000ED0
and r2, r7, #0xff00
cmp r2, #0x100
bgt _02000D0C
bge _02000D58
cmp r2, #0
beq _02000D28
b _02000E38
_02000D0C:
cmp r2, #0x200
bgt _02000D1C
beq _02000D78
b _02000E38
_02000D1C:
cmp r2, #0x300
beq _02000E24
b _02000E38
_02000D28:
ldrh r6, [r5, #4]
ldr r1, _02000F24 ; =0x027F7648
tst r6, #1
and r2, r7, #0xff
mov r6, #1
mov lr, #0xb
movne r3, #2
bne _02000E40
ldrh r7, [ip, #0x4c]
cmp r7, #0x20
movlo r3, r6
b _02000E40
_02000D58:
ldrh r6, [ip, #0x4c]
ldr r1, _02000F28 ; =0x027F75C0
cmp r6, #0x40
and r2, r7, #0xff
mov r6, #2
mov lr, #5
movne r3, #1
b _02000E40
_02000D78:
and r2, r7, #0xff
cmp r2, #0x40
bhs _02000DA0
ldrh r1, [ip, #0x4c]
mov r6, #4
cmp r1, #0x10
ldr r1, _02000F2C ; =0x027F77B0
movlo r3, #1
mov lr, #0x17
b _02000E40
_02000DA0:
cmp r2, #0x80
bhs _02000DD0
ldrh r1, [ip, #0x4c]
mov r6, #8
cmp r1, #0x40
sub r1, r2, #0x40
mov r2, r1, lsl #0x10
ldr r1, _02000F30 ; =0x027F7618
movne r3, #1
mov r2, r2, lsr #0x10
mov lr, #6
b _02000E40
_02000DD0:
ldrh r1, [ip, #0x4c]
cmp r2, #0xc0
bhs _02000E00
cmp r1, #0x10
sub r1, r2, #0x80
mov r2, r1, lsl #0x10
ldr r1, _02000F34 ; =0x027F76F8
movlo r3, #1
mov r2, r2, lsr #0x10
mov r6, #0x10
mov lr, #0x17
b _02000E40
_02000E00:
cmp r1, #0x10
sub r1, r2, #0xc0
mov r2, r1, lsl #0x10
ldr r1, _02000F38 ; =0x027F75E8
movlo r3, #1
mov r2, r2, lsr #0x10
mov r6, #0x20
mov lr, #6
b _02000E40
_02000E24:
ldr r1, _02000F3C ; =0x027F76A0
and r2, r7, #0xff
mov r6, #0x40
mov lr, #0xb
b _02000E40
_02000E38:
mov r2, #1
mov lr, #0
_02000E40:
cmp r2, lr
movhi r3, #3
bhi _02000E70
mov lr, r2, lsl #3
ldrh r7, [r0, #0xe]
ldrh ip, [r1, lr]
cmp r7, ip
addhs ip, r1, lr
ldrhsh lr, [r4, #0x12]
ldrhsh ip, [ip, #2]
cmphs lr, ip
movlo r3, #4
_02000E70:
cmp r3, #0
movne r0, #1
strneh r0, [r4, #0x12]
strneh r3, [r4, #0x14]
bne _02000ED0
ldrh r3, [r5, #4]
add r1, r1, r2, lsl #3
orr r2, r3, r6
strh r2, [r5, #4]
ldr r2, [r1, #4]
add r1, r4, #0x10
mov lr, pc
bx r2
_02000EA4:
strh r0, [r4, #0x14]
ldrh r0, [r4, #0x14]
cmp r0, #0x80
beq _02000F18
cmp r0, #0x81
bne _02000ED0
ldrh r1, [r5, #4]
mvn r0, r6
and r0, r1, r0
strh r0, [r5, #4]
b _02000EF4
_02000ED0:
ldrh r1, [r5, #4]
mvn r0, r6
and r0, r1, r0
strh r0, [r5, #4]
ldr r0, _02000F20 ; =0x0380FFF4
ldr r1, [r5]
ldr r0, [r0]
add r0, r0, #0x200
bl sub_02000F40
_02000EF4:
ldr r0, _02000F20 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x200
ldrh r0, [r0, #8]
cmp r0, #0
beq _02000F18
mov r0, #2
mov r1, #0xb
bl sub_02000780
_02000F18:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02000F20: .word 0x0380FFF4
_02000F24: .word 0x027F7648
_02000F28: .word 0x027F75C0
_02000F2C: .word 0x027F77B0
_02000F30: .word 0x027F7618
_02000F34: .word 0x027F76F8
_02000F38: .word 0x027F75E8
_02000F3C: .word 0x027F76A0
arm_func_end sub_02000C70
arm_func_start sub_02000F40
sub_02000F40: ; 0x02000F40
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _02000FC4 ; =0x0380FFF4
mov r5, r0
ldr r3, [r2]
mov r4, r1
add r2, r3, #0x100
ldrh r2, [r2, #0xfc]
cmp r2, #0
beq _02000F80
mov r2, r4
add r1, r3, #0x1f4
bl sub_02000B70
mov r0, #2
mov r1, #0x13
bl sub_02000780
b _02000FBC
_02000F80:
ldr r0, [r3, #0x304]
mov r2, #0
bl sub_020048BC
cmp r0, #0
beq _02000FA4
mov r0, r5
mov r1, r4
bl sub_02000994
b _02000FBC
_02000FA4:
ldr r1, _02000FC4 ; =0x0380FFF4
mov r0, r5
ldr r1, [r1]
mov r2, r4
add r1, r1, #0x1f4
bl sub_02000B70
_02000FBC:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02000FC4: .word 0x0380FFF4
arm_func_end sub_02000F40
arm_func_start sub_02000FC8
sub_02000FC8: ; 0x02000FC8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
ldr r0, _02001334 ; =0x0380FFF4
ldr r0, [r0]
add r6, r0, #0x344
add r4, r0, #0x31c
bl sub_02001380
ldr r1, _02001338 ; =0x04808044
ldrh r2, [r1]
ldrh r0, [r1]
ldrh r1, [r1]
add r0, r2, r0, lsl #8
bl sub_00FF2F54
mov r0, #1
strh r0, [r6, #0x7c]
ldrh r0, [r4, #0x1e]
ldr r2, _0200133C ; =0x04808032
mov r0, r0, lsl #0x1d
mov r0, r0, lsr #0x1f
cmp r0, #1
ldreqh r0, [r6, #0x7c]
ldr r1, _02001340 ; =0x04808134
orreq r0, r0, #0x20
streqh r0, [r6, #0x7c]
ldrh r0, [r4, #0x18]
mov r4, #0
cmp r0, #0
ldrneh r0, [r6, #0x7c]
mov r3, #0x8000
orrne r0, r0, #0x10
strneh r0, [r6, #0x7c]
strh r4, [r6, #0x12]
ldr r0, _02001344 ; =0x0000FFFF
strh r3, [r2]
strh r0, [r1]
strh r4, [r2, #-8]
sub r0, r1, #0x10c
strh r4, [r0]
mov r0, #0xf
strh r0, [r1, #-0xfc]
bl sub_00FF46F8
bl sub_00FFCEA8
bl sub_020030A8
bl sub_020033C8
ldr r2, _02001348 ; =0x04808030
mov r1, #0x8000
strh r1, [r2]
ldr r0, _02001344 ; =0x0000FFFF
ldr r1, _0200134C ; =0x048081AE
strh r0, [r2, #-0x20]
sub r2, r0, #0xe000
ldr r0, _02001334 ; =0x0380FFF4
strh r2, [r1]
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #8
movne r0, #0x400
strneh r0, [r1, #-4]
moveq r0, r4
streqh r0, [r1, #-4]
ldr r2, _02001350 ; =0x04808008
mov r3, #0
strh r3, [r2]
strh r3, [r2, #2]
ldrh r0, [r6, #0xc]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _020012F8
_020010DC: ; jump table
b _020010F0 ; case 0
b _02001120 ; case 1
b _02001204 ; case 2
b _02001284 ; case 3
b _020012DC ; case 4
_020010F0:
ldr r0, _02001344 ; =0x0000FFFF
mov r1, #0x3f
strh r1, [r2, #0xa]
strh r0, [r2, #0xc8]
mov r0, #8
strh r0, [r2, #0xd8]
strh r3, [r2]
strh r3, [r2, #2]
strh r3, [r2, #0xe0]
mov r0, #1
strh r0, [r2, #-4]
b _020012F8
_02001120:
ldr r3, _02001354 ; =0x0000703F
ldr r0, _02001358 ; =0x00001FFF
ldr r1, _0200134C ; =0x048081AE
strh r3, [r2, #0xa]
strh r0, [r1]
rsb r0, r0, #0x2300
strh r0, [r1, #-0xde]
mov r0, #0xd
strh r0, [r1, #-0xce]
mov r0, #0xe000
strh r0, [r2]
mov r0, #1
strh r0, [r2, #-4]
ldrh r0, [r1, #-0xb6]
add r7, sp, #0
strh r0, [r7]
ldrh r0, [r1, #-0xb4]
mov r4, #0
strh r0, [r7, #2]
ldrh r2, [r1, #-0xb2]
ldr r0, [sp]
strh r2, [r7, #4]
ldrh r1, [r1, #-0xb0]
mov r3, r4
strh r1, [r7, #6]
ldrh r2, [r6, #0x6e]
ldr r1, [sp, #4]
mov r5, r2, lsl #0xa
mov r2, r5
bl sub_0200ED68
adds r3, r0, #1
umull r2, r0, r3, r5
mla r0, r3, r4, r0
adc r1, r1, #0
mla r0, r1, r5, r0
str r0, [sp, #4]
ldrh r0, [r7, #6]
ldr r3, _0200135C ; =0x048080F6
str r2, [sp]
strh r0, [r3]
ldrh r0, [r7, #4]
mov r1, #1
strh r0, [r3, #-2]
ldrh r2, [r7, #2]
mov r0, #0x40
strh r2, [r3, #-4]
ldrh r2, [r7]
orr r2, r2, #1
strh r2, [r3, #-6]
strh r1, [r3, #-0xe]
strh r1, [r3, #-0xc]
bl sub_02001420
bl sub_00FF9384
ldr r0, _02001360 ; =0x048080AE
mov r1, #2
strh r1, [r0]
b _020012F8
_02001204:
ldr r1, _02001364 ; =0x0000E0BF
ldr r0, _02001334 ; =0x0380FFF4
strh r1, [r2, #0xa]
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #0x20
beq _02001240
ldrh r0, [r2, #0xa]
ldr r1, _02001368 ; =0x048081AA
orr r0, r0, #0x40
strh r0, [r2, #0xa]
ldrh r0, [r1]
orr r0, r0, #0x68
strh r0, [r1]
_02001240:
ldrh r0, [r6, #0x64]
tst r0, #1
ldr r0, _0200136C ; =0x048080D0
ldrne r1, _02001370 ; =0x00000581
strneh r1, [r0]
ldreq r1, _02001374 ; =0x00000181
streqh r1, [r0]
ldr r2, _02001378 ; =0x048080E0
mov r0, #0xb
strh r0, [r2]
mov r1, #1
strh r1, [r2, #-0xdc]
strh r1, [r2, #8]
mov r0, #0x20
strh r1, [r2, #0xa]
bl sub_02001420
b _020012F8
_02001284:
ldr r1, _02001344 ; =0x0000FFFF
strh r1, [r2, #8]
sub r0, r1, #0x3fc0
strh r0, [r2, #0xa]
ldrh r0, [r6, #0x64]
tst r0, #1
rsbne r0, r1, #0x10400
strneh r0, [r2, #0xc8]
moveq r0, #1
streqh r0, [r2, #0xc8]
ldr r2, _02001378 ; =0x048080E0
mov r0, #0xb
strh r0, [r2]
mov r0, #1
strh r0, [r2, #-0xdc]
strh r0, [r2, #8]
strh r0, [r2, #0xa]
mov r1, #0
mov r0, #0x20
strh r1, [r2, #-0x98]
bl sub_02001420
b _020012F8
_020012DC:
ldr r0, _0200134C ; =0x048081AE
strh r3, [r2, #0xa]
strh r3, [r0]
mov r1, #1
mov r0, #0x20
strh r1, [r2, #-4]
bl sub_02001420
_020012F8:
ldr r0, _0200137C ; =0x04808048
mov r1, #0
strh r1, [r0]
bl sub_00FF207C
ldr r1, _02001360 ; =0x048080AE
mov r0, #2
strh r0, [r1]
ldrh r1, [r6, #0xe]
cmp r1, #1
bne _02001324
bl sub_00FF1E9C
_02001324:
bl sub_020034E8
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02001334: .word 0x0380FFF4
_02001338: .word 0x04808044
_0200133C: .word 0x04808032
_02001340: .word 0x04808134
_02001344: .word 0x0000FFFF
_02001348: .word 0x04808030
_0200134C: .word 0x048081AE
_02001350: .word 0x04808008
_02001354: .word 0x0000703F
_02001358: .word 0x00001FFF
_0200135C: .word 0x048080F6
_02001360: .word 0x048080AE
_02001364: .word 0x0000E0BF
_02001368: .word 0x048081AA
_0200136C: .word 0x048080D0
_02001370: .word 0x00000581
_02001374: .word 0x00000181
_02001378: .word 0x048080E0
_0200137C: .word 0x04808048
arm_func_end sub_02000FC8
arm_func_start sub_02001380
sub_02001380: ; 0x02001380
stmdb sp!, {r4, lr}
ldr r0, _02001410 ; =0x0380FFF4
ldr r1, [r0]
add r0, r1, #0x208
add r0, r0, #0x400
add r4, r1, #0x344
bl sub_020057A8
ldr r0, _02001410 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x234
add r0, r0, #0x400
bl sub_020057A8
mov r0, #0x20
bl sub_02001420
mov r1, #0
strh r1, [r4, #0xa4]
ldr r0, _02001414 ; =0x04808012
strh r1, [r4, #0x12]
strh r1, [r0]
strh r1, [r0, #-0xe]
strh r1, [r0, #0xd8]
strh r1, [r0, #0xd6]
strh r1, [r0, #-0xa]
strh r1, [r0, #-8]
ldrh r0, [r4, #0xc]
cmp r0, #1
bne _020013F0
bl sub_00FF93C4
_020013F0:
ldr r1, _02001418 ; =0x0000FFFF
ldr r0, _0200141C ; =0x048080AC
strh r1, [r0]
strh r1, [r0, #8]
bl sub_00FF90F0
bl sub_00FF0F2C
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02001410: .word 0x0380FFF4
_02001414: .word 0x04808012
_02001418: .word 0x0000FFFF
_0200141C: .word 0x048080AC
arm_func_end sub_02001380
arm_func_start sub_02001420
sub_02001420: ; 0x02001420
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020014B8 ; =0x0380FFF4
mov r5, r0
ldr r1, [r1]
add r4, r1, #0x344
ldrh r0, [r4, #8]
cmp r0, r5
beq _020014B0
cmp r0, #0x40
bne _02001454
add r0, r1, #0x234
add r0, r0, #0x400
bl sub_020057A8
_02001454:
cmp r5, #0
beq _02001470
cmp r5, #0x10
beq _02001478
cmp r5, #0x40
beq _02001490
b _020014AC
_02001470:
bl sub_00FF1EDC
b _020014AC
_02001478:
ldr r0, _020014BC ; =0x04808040
mov r1, #0
strh r1, [r0]
bl sub_02001380
bl sub_00FF1F64
b _020014AC
_02001490:
ldrh r0, [r4, #0xc]
cmp r0, #2
bne _020014A0
bl sub_00FF20C8
_020014A0:
ldr r1, _020014C0 ; =0x027EAA6C
mov r0, #0x64
bl sub_00FF2BA4
_020014AC:
strh r5, [r4, #8]
_020014B0:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020014B8: .word 0x0380FFF4
_020014BC: .word 0x04808040
_020014C0: .word 0x027EAA6C
arm_func_end sub_02001420
arm_func_start sub_020014C4
sub_020014C4: ; 0x020014C4
stmdb sp!, {r4, r5, r6, lr}
ldr r5, _02001590 ; =0x04808010
mov r4, #1
_020014D0:
ldrh r1, [r5]
ldrh r0, [r5, #2]
ands r6, r1, r0
beq _02001578
tst r6, #0x80
beq _020014EC
bl sub_02002404
_020014EC:
tst r6, #0x40
beq _020014F8
bl sub_02002510
_020014F8:
tst r6, #0x8000
beq _02001504
bl sub_02001598
_02001504:
tst r6, #0x4000
beq _02001510
bl sub_02001624
_02001510:
tst r6, #0x2000
beq _0200151C
bl sub_020018C8
_0200151C:
tst r6, #0x800
beq _02001528
bl sub_00FF3A18
_02001528:
tst r6, #8
beq _02001534
bl sub_02001964
_02001534:
tst r6, #4
beq _02001540
bl sub_02001A74
_02001540:
tst r6, #1
beq _0200154C
bl sub_02001E58
_0200154C:
tst r6, #0x30
beq _02001558
bl sub_02001934
_02001558:
tst r6, #2
beq _02001564
bl sub_02001BF0
_02001564:
tst r6, #0x1000
beq _020014D0
mov r0, r4
bl sub_02002314
b _020014D0
_02001578:
ldr r1, _02001594 ; =0x0380FFF8
ldr r0, [r1]
orr r0, r0, #0x1000000
str r0, [r1]
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02001590: .word 0x04808010
_02001594: .word 0x0380FFF8
arm_func_end sub_020014C4
arm_func_start sub_02001598
sub_02001598: ; 0x02001598
stmdb sp!, {r4, lr}
ldr r1, _0200161C ; =0x0380FFF4
ldr r0, _02001620 ; =0x04808010
ldr r2, [r1]
mov r1, #0x8000
strh r1, [r0]
add r4, r2, #0x344
ldrh r0, [r4, #8]
cmp r0, #0x40
bne _0200160C
ldrh r0, [r4, #0x7e]
cmp r0, #0
beq _0200160C
ldrh r1, [r4, #0x72]
ldrh r0, [r4, #0x70]
cmp r1, r0
bne _0200160C
ldrh r0, [r4, #0x80]
add r0, r0, #1
strh r0, [r4, #0x80]
ldrh r1, [r4, #0x80]
ldrh r0, [r4, #0x7e]
cmp r1, r0
bls _0200160C
mov r2, #0
mov r0, #1
mov r1, #0xd
strh r2, [r4, #0x80]
bl sub_02000780
_0200160C:
mov r0, #1
strh r0, [r4, #0x10]
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200161C: .word 0x0380FFF4
_02001620: .word 0x04808010
arm_func_end sub_02001598
arm_func_start sub_02001624
sub_02001624: ; 0x02001624
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r6, _020018A8 ; =0x0380FFF4
ldr r2, _020018AC ; =0x04808010
ldr r3, [r6]
mov r0, #0x4000
strh r0, [r2]
add r4, r3, #0x344
ldrh r1, [r4, #0xc]
add r0, r3, #0x2c
cmp r1, #1
add r5, r3, #0x31c
add r7, r0, #0x400
beq _0200166C
cmp r1, #2
beq _02001720
cmp r1, #3
beq _02001764
b _020018A0
_0200166C:
ldr r1, [r7, #0x80]
ldrh r6, [r6, #-4]
ldrh r0, [r4, #0x96]
add r1, r1, #0x24
add r8, r1, r0
add r0, r8, #8
and r1, r6, #0xff
bl sub_00FF2F0C
mov r1, r6, lsr #8
add r0, r8, #9
and r1, r1, #0xff
bl sub_00FF2F0C
ldrh r0, [r4, #0xe]
cmp r0, #1
bne _020016C0
ldr r1, _020018B0 ; =0x04808134
ldrh r2, [r5, #0x20]
ldrh r0, [r1]
add r0, r2, r0
add r0, r0, #1
strh r0, [r1]
_020016C0:
ldr r0, _020018A8 ; =0x0380FFF4
ldr r1, _020018B4 ; =0x048080B6
ldr r0, [r0]
add r0, r0, #0x500
ldrh r3, [r0, #0x2e]
ldrh r2, [r0, #0x32]
mvn r3, r3
orr r2, r3, r2
strh r2, [r0, #0x30]
ldrh r0, [r1]
tst r0, #0x18
bne _020016FC
and r0, r0, #6
cmp r0, #2
bne _02001710
_020016FC:
ldr r0, [r7, #0x8c]
bic r0, r0, #2
str r0, [r7, #0x8c]
bl sub_02002780
b _020018A0
_02001710:
ldr r0, [r7, #0x8c]
orr r0, r0, #2
str r0, [r7, #0x8c]
b _020018A0
_02001720:
ldrh r0, [r4, #0x12]
cmp r0, #0
ldreq r1, _020018B8 ; =0x0000FFFF
addeq r0, r2, #0x124
streqh r1, [r0]
beq _02001750
add r1, r2, #0x124
ldrh r2, [r5, #0x20]
ldrh r0, [r1]
add r0, r2, r0
add r0, r0, #1
strh r0, [r1]
_02001750:
ldrh r0, [r4, #0x1a]
cmp r0, #2
bne _02001764
mov r0, #2
bl sub_00FF1E9C
_02001764:
ldrh r0, [r4, #8]
cmp r0, #0x40
movne r1, #1
bne _020017B0
ldrh r0, [r4, #0x72]
mov r1, #0
cmp r0, #1
ldrh r0, [r4, #0x14]
moveq r1, #1
cmp r0, #0
beq _020017B0
ldrh r0, [r4, #0x76]
cmp r0, #1
beq _020017AC
cmp r0, #0
ldreqh r0, [r4, #0x74]
cmpeq r0, #1
bne _020017B0
_020017AC:
mov r1, #1
_020017B0:
cmp r1, #0
ldr r1, _020018BC ; =0x04808038
ldrneh r0, [r1]
orrne r0, r0, #1
strneh r0, [r1]
ldreqh r0, [r1]
biceq r0, r0, #1
streqh r0, [r1]
ldr r1, _020018C0 ; =0x04808118
mov r8, #0
ldrh r0, [r1]
mov r6, #2
cmp r0, #0xa
movhi r0, #0
strhih r0, [r1, #-0xd0]
ldrh r0, [r4, #0x72]
mov r5, r8
sub r0, r0, #1
strh r0, [r4, #0x72]
ldrh r0, [r4, #0x72]
mov sl, #0x14
cmp r0, #0
ldreqh r0, [r4, #0x70]
streqh r0, [r4, #0x72]
ldrh r1, [r4, #0x76]
sub r0, r1, #1
strh r0, [r4, #0x76]
cmp r1, #0
ldreqh r0, [r4, #0x74]
subeq r0, r0, #1
streqh r0, [r4, #0x76]
mov r4, #0xe
_02001830:
mul r1, r8, sl
ldrh r0, [r7, r1]
add sb, r7, r1
cmp r0, #0
beq _02001888
ldr r0, [sb, #0xc]
ldrh r1, [r0, #8]
cmp r1, #0
bne _02001888
bl sub_00FF8464
cmp r0, #0
beq _02001888
mov r0, r8
bl sub_00FF8EBC
ldr r1, [sb, #8]
mov r0, r5
strh r6, [r1]
mov r1, r4
bl sub_02000780
ldrh r0, [r7, #0xae]
add r0, r0, #1
strh r0, [r7, #0xae]
_02001888:
add r8, r8, #1
cmp r8, #2
blo _02001830
ldr r0, _020018C4 ; =0x048080AE
mov r1, #0xd
strh r1, [r0]
_020018A0:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_020018A8: .word 0x0380FFF4
_020018AC: .word 0x04808010
_020018B0: .word 0x04808134
_020018B4: .word 0x048080B6
_020018B8: .word 0x0000FFFF
_020018BC: .word 0x04808038
_020018C0: .word 0x04808118
_020018C4: .word 0x048080AE
arm_func_end sub_02001624
arm_func_start sub_020018C8
sub_020018C8: ; 0x020018C8
ldr r0, _0200192C ; =0x0380FFF4
ldr r1, _02001930 ; =0x04808010
ldr r2, [r0]
mov r0, #0x2000
strh r0, [r1]
mov r0, #0xd
add r2, r2, #0x344
strh r0, [r1, #0x9c]
ldrh r0, [r2, #0x1a]
cmp r0, #1
moveq r0, #2
streqh r0, [r2, #0x1a]
bxeq lr
cmp r0, #2
moveq r0, #0
streqh r0, [r2, #0x1a]
bxeq lr
ldrh r0, [r2, #0xc]
cmp r0, #2
bxne lr
ldrh r0, [r2, #8]
cmp r0, #0x40
movne r0, #0
strneh r0, [r1, #0x38]
bx lr
.align 2, 0
_0200192C: .word 0x0380FFF4
_02001930: .word 0x04808010
arm_func_end sub_020018C8
arm_func_start sub_02001934
sub_02001934: ; 0x02001934
stmdb sp!, {r3, lr}
bl sub_00FF2394
ldr r1, _0200195C ; =0x048081AC
ldr r2, _02001960 ; =0x0000FFFF
sub r0, r1, #0x19c
strh r2, [r1]
mov r1, #0x30
strh r1, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200195C: .word 0x048081AC
_02001960: .word 0x0000FFFF
arm_func_end sub_02001934
arm_func_start sub_02001964
sub_02001964: ; 0x02001964
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _02001A68 ; =0x04808010
mov r2, #8
ldr r0, _02001A6C ; =0x0380FFF4
strh r2, [r1]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x3a]
mov r0, r0, lsl #0x1b
movs r0, r0, lsr #0x1f
beq _020019AC
add r0, r1, #0x18c
ldrh r0, [r0]
tst r0, #1
addeq r1, r1, #0x280
ldreqh r0, [r1]
eoreq r0, r0, #1
streqh r0, [r1]
_020019AC:
ldr r0, _02001A6C ; =0x0380FFF4
ldr r1, [r0]
add r0, r1, #0x600
ldrh r0, [r0, #0x90]
tst r0, #8
beq _02001A60
ldr r4, _02001A70 ; =0x04808032
add r0, r1, #0x2c
mov r2, #0
add r1, r1, #0x344
add r3, r0, #0x400
mov r5, r2
mov lr, #0x8000
mov ip, #0x14
_020019E4:
mul r6, r2, ip
ldrh r0, [r3, r6]
add r6, r3, r6
cmp r0, #0
beq _02001A54
ldr r0, [r6, #8]
ldrh r6, [r0, #0xc]
tst r6, #0x4000
beq _02001A54
ldrh r6, [r0, #4]
tst r6, #0xff
beq _02001A54
ldrh r6, [r0, #0xa]
add r7, r0, #0xc
add r6, r7, r6
sub r6, r6, #7
bic r7, r6, #1
ldrh r6, [r7]
cmp r6, #0
ldreqh r6, [r7, #2]
cmpeq r6, #0
bne _02001A54
strh r5, [r0, #4]
strh r5, [r4]
strh lr, [r4]
ldrh r0, [r1, #0xba]
add r0, r0, #1
strh r0, [r1, #0xba]
_02001A54:
add r2, r2, #1
cmp r2, #3
blo _020019E4
_02001A60:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02001A68: .word 0x04808010
_02001A6C: .word 0x0380FFF4
_02001A70: .word 0x04808032
arm_func_end sub_02001964
arm_func_start sub_02001A74
sub_02001A74: ; 0x02001A74
stmdb sp!, {r3, lr}
ldr r1, _02001BD4 ; =0x0380FFF4
ldr ip, _02001BD8 ; =0x04808010
ldr r2, [r1]
mov r0, #4
strh r0, [ip]
ldr r0, [r1]
add r1, ip, #0x198
add r0, r0, #0x600
ldrh r3, [r0, #0x90]
add r0, r2, #0xdc
add r2, r2, #0x2c
ldrh r1, [r1]
tst r3, #8
add r0, r0, #0x400
add r3, r2, #0x400
beq _02001B64
tst r1, #0x400
beq _02001B64
ldrh ip, [ip, #0xa0]
tst ip, #1
ldrneh r2, [r3]
cmpne r2, #0
bne _02001B20
tst ip, #4
ldrneh r2, [r3, #0x14]
cmpne r2, #0
bne _02001B20
tst ip, #8
ldrneh r2, [r3, #0x28]
cmpne r2, #0
bne _02001B20
ldr r2, _02001BDC ; =0x0480819C
ldrh r2, [r2]
tst r2, #1
bne _02001B20
ldr r3, _02001BE0 ; =0x04808032
mov ip, #0
strh ip, [r3]
mov r2, #0x8000
strh r2, [r3]
strh ip, [r0, #2]
b _02001B64
_02001B20:
ldrh r3, [r0, #2]
add r2, r3, #1
strh r2, [r0, #2]
cmp r3, #0xc
bls _02001B64
ldr r3, _02001BE0 ; =0x04808032
mov r2, #0
strh r2, [r0, #2]
strh r2, [r3]
mov r2, #0x8000
ldr r0, _02001BD4 ; =0x0380FFF4
strh r2, [r3]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r2, [r0, #0xfe]
add r2, r2, #1
strh r2, [r0, #0xfe]
_02001B64:
ldr r0, _02001BD4 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #1
beq _02001BCC
tst r1, #0x60
beq _02001BCC
ldr r2, _02001BE4 ; =0x04808054
ldrh r1, [r2]
ldrh r0, [r2, #-2]
sub r0, r0, #0x4000
add r0, r0, r0, lsr #31
cmp r1, r0, asr #1
bge _02001BB4
ldrh r0, [r2, #-4]
sub r0, r0, #0x4000
add r0, r0, r0, lsr #31
cmp r1, r0, asr #1
bge _02001BC8
_02001BB4:
ldr r2, _02001BE8 ; =0x0480805A
ldr r0, _02001BEC ; =0x00008001
ldrh r1, [r2]
strh r1, [r2, #-4]
strh r0, [r2, #-0x2a]
_02001BC8:
bl sub_00FF3158
_02001BCC:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02001BD4: .word 0x0380FFF4
_02001BD8: .word 0x04808010
_02001BDC: .word 0x0480819C
_02001BE0: .word 0x04808032
_02001BE4: .word 0x04808054
_02001BE8: .word 0x0480805A
_02001BEC: .word 0x00008001
arm_func_end sub_02001A74
arm_func_start sub_02001BF0
sub_02001BF0: ; 0x02001BF0
stmdb sp!, {r3, r4, r5, lr}
ldr r3, _02001E38 ; =0x0380FFF4
ldr r0, _02001E3C ; =0x04808010
ldr r2, [r3]
mov r1, #2
strh r1, [r0]
ldr r3, [r3]
add r2, r2, #0x2c
add r3, r3, #0x300
ldrh r3, [r3, #0x4c]
add r4, r2, #0x400
cmp r3, #0x12
bne _02001C2C
bl sub_00FF76A8
b _02001E30
_02001C2C:
ldrh r2, [r0, #0xa8]
and r5, r2, #0xf00
cmp r5, #0x300
beq _02001C50
cmp r5, #0x800
beq _02001C84
cmp r5, #0xb00
beq _02001CC0
b _02001DBC
_02001C50:
ldr r0, [r4, #0x8c]
tst r0, #2
beq _02001C60
bl sub_02002780
_02001C60:
ldr r1, _02001E38 ; =0x0380FFF4
mov r0, #0
ldr r3, [r1]
mov r1, #8
ldr r2, [r3, #0x558]
add r2, r2, #1
str r2, [r3, #0x558]
bl sub_02000780
b _02001DBC
_02001C84:
ldr r2, [r4, #0x44]
ldrh r3, [r4, #0x9e]
ldrh r2, [r2, #4]
and r2, r2, #0xff
mov r2, r2, lsl #0x10
cmp r3, r2, lsr #16
strlsh r1, [r0, #0x9c]
ldrlsh r0, [r4, #0xa8]
addls r0, r0, #1
strlsh r0, [r4, #0xa8]
ldr r1, [r4, #0x90]
ldrh r0, [r1, #0x18]
add r0, r0, #1
strh r0, [r1, #0x18]
b _02001DBC
_02001CC0:
ldr r3, _02001E40 ; =0x0000FFFF
ldr r2, _02001E44 ; =0x04805F70
ldr r1, _02001E48 ; =0x0480824E
strh r3, [r2]
strh r3, [r2, #2]
add r0, r0, #0x23c
strh r3, [r0]
strh r3, [r1]
ldrh r0, [r4, #0x3c]
cmp r0, #0
beq _02001D18
ldr r1, [r4, #0x44]
ldrh r0, [r1, #0x22]
cmp r0, r3
bne _02001D18
ldrh r0, [r1, #4]
cmp r0, #0
movne r0, #0
strneh r0, [r1, #4]
ldrneh r1, [r4, #0x98]
ldrne r0, [r4, #0x44]
strneh r1, [r0, #2]
_02001D18:
ldr r0, [r4, #0x44]
ldr r2, [r4, #0x90]
ldrh r1, [r0, #2]
ldrh r0, [r4, #0x98]
cmp r1, #1
add r2, r2, #0x1a
bls _02001D68
ldr r3, _02001E38 ; =0x0380FFF4
ldr r3, [r3]
add r3, r3, #0x300
ldrh r3, [r3, #0x3a]
mov r3, r3, lsl #0x1b
movs r3, r3, lsr #0x1f
beq _02001D68
ldr ip, _02001E4C ; =0x0480819C
ldrh r3, [ip]
tst r3, #1
ldreqh r3, [ip, #0xf4]
eoreq r3, r3, #1
streqh r3, [ip, #0xf4]
_02001D68:
ldr r3, _02001E38 ; =0x0380FFF4
ldr r3, [r3]
add r3, r3, #0x600
ldrh r3, [r3, #0x90]
tst r3, #0x40
beq _02001DBC
b _02001DB4
_02001D84:
mov r1, r1, lsl #0xf
mov r1, r1, lsr #0x10
tst r1, #1
ldrneh r3, [r2, #6]
mov r0, r0, lsl #0xf
addne r3, r3, #1
mov r0, r0, lsr #0x10
strneh r3, [r2, #6]
tst r0, #1
ldrne r3, [r4, #0x90]
ldrneh r3, [r3, #0x16]
addne r2, r2, r3
_02001DB4:
cmp r1, #1
bhi _02001D84
_02001DBC:
cmp r5, #0x800
beq _02001E24
ldr r2, _02001E50 ; =0x048080B0
ldrh r0, [r2]
tst r0, #2
bne _02001E24
ldrh r0, [r4, #0x3c]
cmp r0, #0
beq _02001E18
mov r0, #2
strh r0, [r2, #4]
mov r1, #0
strh r1, [r2, #-0x68]
ldrh r1, [r2, #-0xa0]
tst r1, #0x1000
ldrneh r0, [r4, #0xac]
addne r0, r0, #1
strneh r0, [r4, #0xac]
bne _02001E0C
bl sub_02002314
_02001E0C:
ldrh r0, [r4, #0xaa]
add r0, r0, #1
strh r0, [r4, #0xaa]
_02001E18:
ldr r0, _02001E54 ; =0x048080AE
mov r1, #2
strh r1, [r0]
_02001E24:
mov r0, #0
mov r1, #0xe
bl sub_02000780
_02001E30:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02001E38: .word 0x0380FFF4
_02001E3C: .word 0x04808010
_02001E40: .word 0x0000FFFF
_02001E44: .word 0x04805F70
_02001E48: .word 0x0480824E
_02001E4C: .word 0x0480819C
_02001E50: .word 0x048080B0
_02001E54: .word 0x048080AE
arm_func_end sub_02001BF0
arm_func_start sub_02001E58
sub_02001E58: ; 0x02001E58
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x38
ldr r0, _020022E8 ; =0x0380FFF4
ldr r2, _020022EC ; =0x04808010
ldr r3, [r0]
mov r1, #1
add r0, r3, #0x600
ldrh r4, [r0, #0x90]
add r6, r3, #0x344
strh r1, [r2]
ldrh r1, [r6, #0xc]
add r0, r3, #0xdc
cmp r1, #0
add r7, r0, #0x400
ldreqh r0, [r2, #0x44]
and r4, r4, #1
streqh r0, [r2, #0x4a]
ldr r0, _020022F0 ; =0x04808098
sub fp, r0, #0x70
add r0, r0, #0x1b4
str r0, [sp, #0x24]
ldr r0, _020022F4 ; =0x0480824E
sub r0, r0, #0x154
str r0, [sp, #0x14]
ldr r0, _020022F0 ; =0x04808098
sub r0, r0, #0x44
str r0, [sp, #0x10]
ldr r0, _020022F8 ; =0x000008EF
sub r0, r0, #0x29
str r0, [sp, #0x28]
ldr r0, _020022F8 ; =0x000008EF
add r0, r0, #0x3d
str r0, [sp, #0x2c]
ldr r0, _020022FC ; =0x04805F7E
sub r0, r0, #0x24
str r0, [sp, #0x30]
ldr r0, _020022F8 ; =0x000008EF
add r0, r0, #0x710
str r0, [sp, #0x34]
_02001EF4:
ldr r0, [sp, #0x10]
ldrh sb, [r7, #4]
ldrh sl, [r0]
cmp sb, sl
beq _02002268
ldr r0, _020022F0 ; =0x04808098
ldr r1, [sp, #0x14]
ldrh r0, [r0, #0x60]
ldrh r3, [r1]
ldr r1, _020022F0 ; =0x04808098
ldrh r2, [r1, #0x60]
ldr r1, [sp, #0x14]
cmp r0, r2
ldrh r1, [r1]
movhi r0, r1, lsl #0xc
orrhi r0, r0, r2, lsr #4
strhi r0, [sp, #4]
movls r1, r3, lsl #0xc
orrls r0, r1, r0, lsr #4
strls r0, [sp, #4]
ldr r0, [sp, #0x28]
cmp sb, r0
blo _02001F60
ldr r0, _020022F8 ; =0x000008EF
cmp sb, r0
bhi _02001F60
bl sub_00FF2394
_02001F60:
mov r0, sb, lsl #1
str r0, [sp, #0x18]
add r0, r0, #0x4000
add r8, r0, #0x4800000
add r0, r8, #2
bl sub_020028B0
mov r5, r0
add r0, r5, #2
bl sub_020028B0
str r0, [sp, #0x1c]
add r0, r0, #4
bl sub_020028B0
str r0, [sp, #0x20]
add r0, r8, #0xe
bl sub_020028B0
str r0, [sp, #0xc]
ldr r0, [sp, #0x18]
ldrh r1, [r5]
add r0, r0, #0x4800000
add r0, r0, #0x4000
mov r1, r1, lsl #1
ldrh r2, [r0]
and r1, r1, #0x400
orr r1, r2, r1
strh r1, [r0]
ldr r1, [sp, #4]
ldr r0, [sp, #0x1c]
strh r1, [r0]
ldr r0, [sp, #0x20]
ldrh r1, [r0]
add r0, r1, sb, lsl #1
add r0, r0, #0xf
mov r0, r0, lsr #2
mov sb, r0, lsl #1
cmp sb, #0xfb0
ldrhsh r0, [r6, #0x9a]
subhs sb, sb, r0, lsr #1
ldr r0, [sp, #0x2c]
cmp r1, r0
bls _0200201C
ldr r0, _02002300 ; =0x0000FFFF
mov sb, sl
strh r0, [r8]
ldrh r0, [r6, #0xb4]
add r0, r0, #1
strh r0, [r6, #0xb4]
b _020020A4
_0200201C:
cmp r4, #0
cmpne sb, sl
beq _020020A4
ldr r3, [sp, #0x30]
mov r2, sb, lsl #1
add r0, r2, #0x4000
add r0, r0, #0x4800000
cmp r0, r3
ldrloh r0, [r0, #6]
add r2, r2, #0x4800000
add r2, r2, #0x4000
ldrhsh r3, [r6, #0x9a]
andlo r0, r0, #0xff
subhs r0, r0, r3
ldrh r2, [r2]
ldrhsh r0, [r0, #6]
tst r2, #0x7c00
bne _0200207C
cmp r0, #0xa
cmpne r0, #0x14
bne _0200207C
ldr r0, [sp, #0x34]
cmp r1, r0
bls _020020A4
_0200207C:
ldrh r0, [r6, #0xb4]
ldr r1, _02002300 ; =0x0000FFFF
add r0, r0, #1
strh r0, [r6, #0xb4]
mov r0, sl, lsl #0x10
strh r1, [r8]
mov r0, r0, lsr #0x10
strh r0, [r7, #4]
strh r0, [r5]
b _02002268
_020020A4:
ldrh r0, [r8]
and r0, r0, #0xf
cmp r0, #0xc
bne _02002204
add r0, r8, #0xc
bl sub_020028B0
ldrh r0, [r0]
str r0, [sp, #8]
add r0, r8, #0x22
bl sub_020028B0
ldrh sl, [r0]
ldrh r0, [r7]
cmp r0, sl
bne _02002108
ldr r0, [sp, #8]
tst r0, #0x800
beq _02002108
ldr r0, _020022E8 ; =0x0380FFF4
ldr r1, [r0]
ldr r0, [r1, #0x57c]
add r0, r0, #1
str r0, [r1, #0x57c]
ldr r0, _02002300 ; =0x0000FFFF
strh r0, [r8]
b _020021DC
_02002108:
ldr r0, _020022E8 ; =0x0380FFF4
ldr r0, [r0]
add r1, r0, #0x300
ldrh r2, [r1, #0x3a]
mov r2, r2, lsl #0x18
movs r2, r2, lsr #0x1f
ldreqh r1, [r1, #0x4c]
cmpeq r1, #0x40
bne _020021DC
ldrh r1, [fp]
cmp r1, #0
beq _020021B4
ldr r1, _020022F0 ; =0x04808098
ldrh r1, [r1]
tst r1, #0x8000
beq _020021B4
add r0, r0, #0x660
bl sub_020057A8
ldr r0, [sp, #0xc]
mov r3, #0
ldrh r1, [r0]
ldr r0, _02002304 ; =0x000082EA
mov r2, #0x3e8
umull ip, r8, r1, r0
mov r0, r3
mla r8, r1, r0, r8
mov r0, ip, lsr #6
ldr r1, _02002304 ; =0x000082EA
mov ip, r3
mla r8, ip, r1, r8
mov r1, r8, lsr #6
orr r0, r0, r8, lsl #26
bl sub_0200ED68
mov r2, #0
str r2, [sp]
mov r2, r1
mov r1, r0
ldr r0, _020022E8 ; =0x0380FFF4
ldr r3, _02002308 ; =0x027EA0BC
ldr r0, [r0]
add r0, r0, #0x660
bl sub_020056C4
b _020021DC
_020021B4:
ldr r1, _02002300 ; =0x0000FFFF
ldr r0, _020022FC ; =0x04805F7E
mov sl, r1
strh r1, [r0]
ldr r0, [sp, #0x24]
strh r1, [r0]
ldr r0, _020022F4 ; =0x0480824E
strh r1, [r0]
mov r0, r1
strh r0, [r8]
_020021DC:
strh sl, [r7]
bl sub_020028D8
tst r0, #1
beq _02002254
ldr r0, _020022E8 ; =0x0380FFF4
ldr r1, [r0]
ldr r0, [r1, #0x5a8]
add r0, r0, #1
str r0, [r1, #0x5a8]
b _02002254
_02002204:
cmp r0, #0xd
bne _02002254
ldr r0, _020022E8 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x3a]
mov r1, r1, lsl #0x18
movs r1, r1, lsr #0x1f
ldreqh r0, [r0, #0x4c]
cmpeq r0, #0x40
bne _02002254
ldrh r0, [fp]
cmp r0, #0
beq _0200224C
ldr r0, _020022F0 ; =0x04808098
ldrh r0, [r0]
tst r0, #0x8000
bne _02002254
_0200224C:
ldr r0, _02002300 ; =0x0000FFFF
strh r0, [r8]
_02002254:
mov r0, sb, lsl #0x10
mov r0, r0, lsr #0x10
strh r0, [r7, #4]
strh r0, [r5]
b _02001EF4
_02002268:
cmp r4, #0
beq _020022BC
ldr r0, _0200230C ; =0x04808054
ldrh r4, [r0]
bl sub_020028D8
mov r0, r0, lsl #0x10
movs r1, r0, lsr #0x10
beq _020022BC
ldr r0, _0200230C ; =0x04808054
ldrh r0, [r0]
cmp r4, r0
bne _020022BC
tst r1, #2
beq _020022AC
mov r0, #0x80
bl sub_00FF3254
b _020022BC
_020022AC:
tst r1, #1
beq _020022BC
mov r0, #0x100
bl sub_00FF3254
_020022BC:
ldr r0, _02002310 ; =0x0480805A
ldrh r1, [r0]
ldrh r0, [r0, #-6]
cmp r1, r0
beq _020022DC
mov r0, #0
mov r1, #0xf
bl sub_02000780
_020022DC:
add sp, sp, #0x38
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_020022E8: .word 0x0380FFF4
_020022EC: .word 0x04808010
_020022F0: .word 0x04808098
_020022F4: .word 0x0480824E
_020022F8: .word 0x000008EF
_020022FC: .word 0x04805F7E
_02002300: .word 0x0000FFFF
_02002304: .word 0x000082EA
_02002308: .word 0x027EA0BC
_0200230C: .word 0x04808054
_02002310: .word 0x0480805A
arm_func_end sub_02001E58
arm_func_start sub_02002314
sub_02002314: ; 0x02002314
stmdb sp!, {r3, lr}
ldr ip, _020023F8 ; =0x0380FFF4
ldr r2, _020023FC ; =0x04808010
ldr r1, [ip]
mov r3, #0x1000
add r1, r1, #0x2c
strh r3, [r2]
add r3, r1, #0x400
ldrh r1, [r3, #0x3c]
cmp r1, #0
beq _020023F0
ldr r1, [ip]
add r1, r1, #0x600
ldrh r1, [r1, #0x90]
tst r1, #0x10
cmpne r0, #0
beq _020023E4
add r0, r2, #0x204
ldrh r1, [r2, #0xa6]
ldrh r0, [r0]
cmp r0, #3
cmpne r0, #5
bne _020023E4
cmp r1, #0
bne _020023E4
ldr r3, [r3, #0x44]
mov r2, #0
ldrh r0, [r3, #2]
b _02002398
_02002388:
and r1, r0, #1
mov r0, r0, lsl #0xf
add r2, r2, r1
mov r0, r0, lsr #0x10
_02002398:
cmp r0, #0
bne _02002388
ldrh r0, [r3, #0x24]
ldrh r1, [r3, #0xa]
add r0, r0, #0xa
mul r0, r2, r0
add r0, r0, #0xc0
add r0, r0, r1, lsl #2
mov r0, r0, lsl #0x10
ldr r1, _02002400 ; =0x037FA660
mov r0, r0, lsr #0x10
bl sub_00FF2D44
ldr r0, _020023F8 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x400
ldrh r1, [r0]
add r1, r1, #1
strh r1, [r0]
b _020023F0
_020023E4:
mov r0, #0
mov r1, #0x10
bl sub_02000780
_020023F0:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020023F8: .word 0x0380FFF4
_020023FC: .word 0x04808010
_02002400: .word 0x037FA660
arm_func_end sub_02002314
arm_func_start sub_02002404
sub_02002404: ; 0x02002404
stmdb sp!, {r3, lr}
ldr r3, _02002500 ; =0x0380FFF4
ldr r0, _02002504 ; =0x04808010
ldr r2, [r3]
mov r1, #0x80
strh r1, [r0]
ldr r1, [r3]
add r2, r2, #0x2c
add r1, r1, #0x600
ldrh r1, [r1, #0x90]
tst r1, #0x20
beq _02002498
add r1, r0, #0x204
ldrh r3, [r1]
add r1, r0, #0x258
and r3, r3, #0xff
ldrh ip, [r1]
cmp r3, #3
blo _02002498
cmp r3, #5
bhi _02002498
ldr r3, [r2, #0x458]
ldr r1, _02002508 ; =0x00000FFF
and r3, r1, r3, lsr #1
cmp ip, r3
blo _02002498
ldr r2, [r2, #0x430]
and r1, r1, r2, lsr #1
cmp ip, r1
bhi _02002498
add r1, r0, #0x234
ldrh r0, [r1]
orr r0, r0, #0x80
strh r0, [r1]
ldrh r0, [r1]
bic r0, r0, #0x80
strh r0, [r1]
_02002498:
ldr r1, _0200250C ; =0x04808000
ldrh r0, [r1]
cmp r0, #0x1440
beq _020024F8
add r0, r1, #0x19c
ldrh r0, [r0]
and r0, r0, #0x42
cmp r0, #0x42
bne _020024F8
add r1, r1, #0x2b8
ldrh r2, [r1]
cmp r2, #0
beq _020024F8
mov r3, #0
b _020024EC
_020024D4:
cmp r3, #0x3e8
add r3, r3, #1
bls _020024EC
mov r0, #0x40
bl sub_00FF3254
b _020024F8
_020024EC:
ldrh r0, [r1]
cmp r2, r0
beq _020024D4
_020024F8:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02002500: .word 0x0380FFF4
_02002504: .word 0x04808010
_02002508: .word 0x00000FFF
_0200250C: .word 0x04808000
arm_func_end sub_02002404
arm_func_start sub_02002510
sub_02002510: ; 0x02002510
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r2, _02002764 ; =0x0380FFF4
ldr r0, _02002768 ; =0x04808010
ldr r3, [r2]
mov r1, #0x40
strh r1, [r0]
ldr r2, [r2]
add r1, r3, #0x2c
add r2, r2, #0x600
ldrh r2, [r2, #0x90]
add r4, r3, #0x344
tst r2, #0x20
add r5, r1, #0x400
beq _0200275C
ldrh r2, [r5, #0xa4]
ldr r1, _0200276C ; =0x0000FFFF
cmp r2, r1
addeq r2, r0, #0x18c
ldreqh r2, [r2]
andeq r2, r2, #3
cmpeq r2, #3
bne _0200275C
add r2, r0, #0x258
ldrh r3, [r2]
ldrh r2, [r0, #0x40]
sub r1, r1, #0xf000
and r1, r1, r2, lsr #1
cmp r3, r1
blt _0200275C
ldrh r7, [r0, #0x44]
mov r0, r7, lsl #1
add r0, r0, #0x4000
add r0, r0, #0x4800000
add r0, r0, #8
bl sub_020028B0
add r0, r0, #4
bl sub_020028B0
ldrh r2, [r0]
ldr r1, _02002770 ; =0x0000E7FF
and r1, r2, r1
cmp r1, #0x228
bne _0200275C
add r0, r0, #2
bl sub_020028B0
ldr r2, _02002774 ; =0x048080F8
ldrh r1, [r2]
sub r6, r1, #0x10000
add r1, r2, #0x170
_020025D0:
ldrh r3, [r1]
sub r3, r3, r7
mov r3, r3, lsl #0x10
mov r8, r3, lsr #0x10
tst r8, #0x8000
ldrneh r3, [r4, #0x9a]
addne r3, r8, r3, lsr #1
movne r3, r3, lsl #0x10
movne r8, r3, lsr #0x10
cmp r8, #0xe
bhi _02002618
ldrh r3, [r2]
sub r3, r3, r6
mov r3, r3, lsl #0x10
mov r3, r3, lsr #0x10
cmp r3, #0x40
bhi _0200275C
b _020025D0
_02002618:
add r0, r0, #8
mov r8, #0
b _02002640
_02002624:
bl sub_020028B0
add r1, r4, r8, lsl #1
ldrh r2, [r0], #2
ldrh r1, [r1, #0x64]
cmp r2, r1
bne _0200275C
add r8, r8, #1
_02002640:
cmp r8, #3
blo _02002624
add r0, r0, #0xa
bl sub_020028B0
ldr r3, _02002774 ; =0x048080F8
add r1, r3, #0x170
_02002658:
ldrh r2, [r1]
sub r2, r2, r7
mov r2, r2, lsl #0x10
mov r8, r2, lsr #0x10
tst r8, #0x8000
ldrneh r2, [r4, #0x9a]
addne r2, r8, r2, lsr #1
movne r2, r2, lsl #0x10
movne r8, r2, lsr #0x10
cmp r8, #0x14
bhi _020026A0
ldrh r2, [r3]
sub r2, r2, r6
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
cmp r2, #0x70
bhi _0200275C
b _02002658
_020026A0:
ldr r2, _02002778 ; =0x04808028
ldrh r3, [r0]
ldrh r0, [r2]
mov r1, #1
tst r3, r1, lsl r0
bne _0200275C
ldrh r1, [r2, #0x70]
mov r0, #0x40
strh r1, [r5, #0xa4]
strh r0, [r2, #0x8c]
ldrh r0, [r4, #0xbe]
add r1, r2, #0x174
add r0, r0, #1
strh r0, [r4, #0xbe]
_020026D8:
ldrh r0, [r1]
and r0, r0, #3
cmp r0, #3
beq _020026D8
ldr r0, _0200277C ; =0x04808244
mov r2, #8
ldrh r1, [r0]
sub r3, r0, #0x1c
orr r1, r1, #0x40
strh r1, [r0]
ldrh r4, [r0]
ldr r1, _02002764 ; =0x0380FFF4
bic r4, r4, #0x40
strh r4, [r0]
strh r2, [r3]
mov r2, #0
strh r2, [r3]
ldr r1, [r1]
ldr r2, _0200276C ; =0x0000FFFF
add r1, r1, #0x2c
add r6, r1, #0x400
ldrh r5, [r6, #0xa4]
cmp r5, r2
beq _0200275C
sub r4, r0, #0x1b0
ldrh r3, [r4]
sub r1, r0, #0x214
strh r5, [r4]
ldrh r0, [r1]
orr r0, r0, #0x80
strh r0, [r1]
strh r3, [r4]
strh r2, [r6, #0xa4]
_0200275C:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02002764: .word 0x0380FFF4
_02002768: .word 0x04808010
_0200276C: .word 0x0000FFFF
_02002770: .word 0x0000E7FF
_02002774: .word 0x048080F8
_02002778: .word 0x04808028
_0200277C: .word 0x04808244
arm_func_end sub_02002510
arm_func_start sub_02002780
sub_02002780: ; 0x02002780
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02002844 ; =0x0380FFF4
mov r0, #2
ldr r1, [r1]
mov r5, #0
add r1, r1, #0x2c
add r4, r1, #0x400
bl sub_00FF8EBC
mov r0, #1
bl sub_00FF8EBC
mov r0, r5
bl sub_00FF8EBC
ldrh r0, [r4, #0x28]
cmp r0, #0
beq _020027D4
ldr r0, [r4, #0x30]
ldrh r0, [r0]
cmp r0, #0
movne r5, #1
moveq r0, r5
streqh r0, [r4, #0x28]
_020027D4:
ldrh r0, [r4, #0x14]
cmp r0, #0
beq _020027F8
ldr r0, [r4, #0x1c]
ldrh r0, [r0]
cmp r0, #0
moveq r0, #0
streqh r0, [r4, #0x14]
movne r5, #1
_020027F8:
ldrh r0, [r4]
cmp r0, #0
beq _0200281C
ldr r0, [r4, #8]
ldrh r0, [r0]
cmp r0, #0
moveq r0, #0
streqh r0, [r4]
movne r5, #1
_0200281C:
cmp r5, #0
beq _02002830
mov r0, #0
mov r1, #0xe
bl sub_02000780
_02002830:
mov r0, #0
mov r1, #0x14
bl sub_02000780
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02002844: .word 0x0380FFF4
arm_func_end sub_02002780
arm_func_start sub_02002848
sub_02002848: ; 0x02002848
stmdb sp!, {r4, lr}
mov r0, #0x1000000
bl sub_02003B10
ldr r2, _020028A8 ; =0x04808210
mov r1, #0x1000
ldrh r3, [r2]
mov r4, r0
strh r1, [r2, #0x34]
mov r1, #0x64
b _02002880
_02002870:
ldrh r0, [r2]
cmp r3, r0
bne _02002888
sub r1, r1, #1
_02002880:
cmp r1, #0
bne _02002870
_02002888:
ldr r1, _020028AC ; =0x04808244
mov r0, #0
strh r0, [r1]
bl sub_02002314
mov r0, r4
bl sub_02003AD8
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020028A8: .word 0x04808210
_020028AC: .word 0x04808244
arm_func_end sub_02002848
arm_func_start sub_020028B0
sub_020028B0: ; 0x020028B0
ldr r1, _020028D0 ; =0x04805F60
cmp r0, r1
ldrhs r1, _020028D4 ; =0x0380FFF4
ldrhs r1, [r1]
addhs r1, r1, #0x300
ldrhsh r1, [r1, #0xde]
subhs r0, r0, r1
bx lr
.align 2, 0
_020028D0: .word 0x04805F60
_020028D4: .word 0x0380FFF4
arm_func_end sub_020028B0
arm_func_start sub_020028D8
sub_020028D8: ; 0x020028D8
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0200290C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x2c
add r5, r0, #0x400
add r0, r5, #0x50
bl sub_00FF3A2C
mov r4, r0
add r0, r5, #0x64
bl sub_00FF3A2C
orr r0, r4, r0
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0200290C: .word 0x0380FFF4
arm_func_end sub_020028D8
arm_func_start sub_02002910
sub_02002910: ; 0x02002910
stmdb sp!, {r3, lr}
ldr r0, _02002958 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0xe8]
cmp r0, #0
beq _02002930
bl sub_00FF9760
_02002930:
ldr r0, _02002958 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x3a]
mov r0, r0, lsl #0x19
movs r0, r0, lsr #0x1f
beq _02002950
bl sub_00FF611C
_02002950:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02002958: .word 0x0380FFF4
arm_func_end sub_02002910
arm_func_start sub_0200295C
sub_0200295C: ; 0x0200295C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r7, _02002B28 ; =0x0380FFF4
mov sl, #2
ldr r1, [r7]
mov fp, #0
add r0, r1, #0x2c
add r8, r0, #0x400
ldr r0, _02002B2C ; =0x04808032
add r6, r1, #0x344
add r4, r0, #0x6e
_02002984:
mov r0, #0x14
mov r5, sl, lsl #2
mla sb, sl, r0, r8
add r0, r5, #0x4800000
add r0, r0, #0x8000
ldrh r0, [r0, #0xa0]
tst r0, #0x8000
bne _02002B18
ldrh r0, [sb]
cmp r0, #0
beq _02002B18
ldr r1, [sb, #0xc]
cmp r1, #0
beq _02002AF8
ldr r0, [sb, #8]
ldrh r0, [r0]
strh r0, [r1, #8]
ldr r1, [sb, #8]
ldr r0, [sb, #0xc]
ldrh r1, [r1, #0xc]
strh r1, [r0, #0x14]
ldr r0, [sb, #8]
ldrh r1, [r0, #0xc]
tst r1, #0x4000
beq _02002AC4
ldr r1, [r7]
add r1, r1, #0x600
ldrh r1, [r1, #0x90]
tst r1, #8
beq _02002AA8
ldrh r1, [r0, #0xa]
add r2, r0, #0xc
add r1, r2, r1
sub r1, r1, #7
bic r2, r1, #1
ldrh r1, [r2]
cmp r1, #0
ldreqh r1, [r2, #2]
cmpeq r1, #0
bne _02002AA8
ldr r0, _02002B2C ; =0x04808032
mov r1, #0x8000
strh fp, [r0]
strh r1, [r0]
ldrh r0, [r6, #0xba]
add r0, r0, #1
strh r0, [r6, #0xba]
ldr r0, [sb, #0xc]
bl sub_00FF8464
cmp r0, #0
beq _02002A8C
ldr r2, [sb, #0xc]
mov r0, #2
strh r0, [r2, #8]
ldrh r0, [sb, #4]
mov r1, #1
add r0, r0, #1
strh r0, [sb, #4]
ldrh r0, [r8, #0xae]
add r0, r0, #1
strh r0, [r8, #0xae]
ldr r0, [sb, #0xc]
ldr r2, [sb, #0x10]
mov lr, pc
bx r2
_02002A88:
b _02002B18
_02002A8C:
ldr r1, [sb, #0xc]
mov r0, #0
strh r0, [r1, #0xc]
ldrh r0, [r5, r4]
orr r0, r0, #0x8000
strh r0, [r5, r4]
b _02002B18
_02002AA8:
ldrh r0, [r0, #4]
ldr r2, [sb, #0xc]
and r0, r0, #0xff
ldrh r1, [r2, #0xc]
add r0, r1, r0
strh r0, [r2, #0xc]
b _02002AD4
_02002AC4:
ldrh r1, [r0, #4]
ldr r0, [sb, #0xc]
and r1, r1, #0xff
strh r1, [r0, #0xc]
_02002AD4:
ldrh r0, [sb, #4]
mov r1, #2
add r0, r0, #1
strh r0, [sb, #4]
ldr r0, [sb, #0xc]
ldr r2, [sb, #0x10]
mov lr, pc
bx r2
_02002AF4:
b _02002B18
_02002AF8:
ldrh r0, [sb, #4]
mov r1, #3
add r0, r0, #1
strh r0, [sb, #4]
ldr r0, [sb, #8]
ldr r2, [sb, #0x10]
mov lr, pc
bx r2
_02002B18:
subs sl, sl, #1
bpl _02002984
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02002B28: .word 0x0380FFF4
_02002B2C: .word 0x04808032
arm_func_end sub_0200295C
arm_func_start sub_02002B30
sub_02002B30: ; 0x02002B30
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r0, _02002E80 ; =0x0380FFF4
ldr r4, [r0]
add r0, r4, #0xdc
add r5, r0, #0x400
_02002B44:
ldr r1, _02002E84 ; =0x0480805A
ldrh r0, [r5, #4]
ldrh r6, [r1]
cmp r6, r0
beq _02002E78
ldr r0, _02002E88 ; =0x000008C6
cmp r6, r0
blo _02002B68
bl sub_00FF2394
_02002B68:
mov r6, r6, lsl #1
add r0, r6, #0x4000
add r7, r0, #0x4800000
add r0, r7, #2
bl sub_020028B0
add r1, r6, #0x4800000
add r1, r1, #0x4000
ldrh r2, [r1]
ldr r1, _02002E8C ; =0x0000FFFF
ldrh r6, [r0]
cmp r2, r1
ldreq r0, _02002E84 ; =0x0480805A
streqh r6, [r0]
beq _02002B44
add r0, r7, #8
bl sub_020028B0
ldrh r1, [r0]
mov r0, r7
bl sub_02003038
ldr r1, _02002E84 ; =0x0480805A
movs r8, r0
strh r6, [r1]
bne _02002BEC
ldrh r0, [r7]
and r0, r0, #0xf
cmp r0, #0xc
bne _02002BE0
mov r0, #0x10
bl sub_00FF3254
b _02002B44
_02002BE0:
mov r0, #8
bl sub_00FF3254
b _02002B44
_02002BEC:
ldr r0, _02002E80 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #8
beq _02002C14
ldrh r0, [r8, #0x14]
tst r0, #0x4000
movne r0, #0
strneh r0, [r5, #2]
_02002C14:
ldrh r0, [r8, #8]
mov r6, #1
tst r0, #0x200
beq _02002C6C
ldrh r0, [r8, #0x14]
mov r0, r0, lsl #0x15
mov r0, r0, lsr #0x1f
cmp r0, #1
beq _02002C48
ldrh r0, [r8, #0x2a]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1c
beq _02002E18
_02002C48:
add r0, r4, #0x188
add r1, r4, #0x1e8
sub r2, r8, #0x10
mov r6, #0
bl sub_02000B70
mov r0, #2
mov r1, #9
bl sub_02000780
b _02002E18
_02002C6C:
and r0, r0, #0xf
cmp r0, #0xf
addls pc, pc, r0, lsl #2
b _02002E18
_02002C7C: ; jump table
b _02002D08 ; case 0
b _02002CF0 ; case 1
b _02002E18 ; case 2
b _02002E18 ; case 3
b _02002E18 ; case 4
b _02002D38 ; case 5
b _02002E18 ; case 6
b _02002E18 ; case 7
b _02002CBC ; case 8
b _02002E18 ; case 9
b _02002E18 ; case 10
b _02002E18 ; case 11
b _02002D90 ; case 12
b _02002DE4 ; case 13
b _02002D70 ; case 14
b _02002D70 ; case 15
_02002CBC:
ldrh r0, [r8, #0x14]
and r0, r0, #0xf
cmp r0, #8
bne _02002E18
add r0, r4, #0x188
add r1, r4, #0x1c4
sub r2, r8, #0x10
mov r6, #0
bl sub_02000B70
mov r0, #2
mov r1, #6
bl sub_02000780
b _02002E18
_02002CF0:
ldrh r0, [r8, #0x14]
cmp r0, #0x80
bne _02002E18
mov r0, r8
bl sub_00FFAA28
b _02002E18
_02002D08:
ldrh r0, [r8, #0x14]
tst r0, #0xf
bne _02002E18
add r0, r4, #0x188
add r1, r4, #0x1dc
sub r2, r8, #0x10
mov r6, #0
bl sub_02000B70
mov r0, #1
mov r1, #7
bl sub_02000780
b _02002E18
_02002D38:
ldrh r1, [r8, #0x14]
rsb r0, r6, #0xe800
and r0, r1, r0
cmp r0, #0xa4
bne _02002E18
add r0, r4, #0x188
add r1, r4, #0x1dc
sub r2, r8, #0x10
mov r6, #0
bl sub_02000B70
mov r0, #1
mov r1, #7
bl sub_02000780
b _02002E18
_02002D70:
ldrh r1, [r8, #0x14]
ldr r0, _02002E90 ; =0x0000E7BF
and r0, r1, r0
cmp r0, #0x118
bne _02002E18
mov r0, r8
bl sub_00FFA7A8
b _02002E18
_02002D90:
ldrh r1, [r8, #0x14]
rsb r0, r6, #0xe800
and r0, r1, r0
cmp r0, #0x228
bne _02002E18
ldr r0, _02002E80 ; =0x0380FFF4
ldr r1, _02002E80 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x54]
cmp r0, #0
ldreq r0, _02002E94 ; =0x0480803C
streqh r6, [r0]
ldr r2, [r1]
mov r0, r8
ldr r1, [r2, #0x5ac]
add r1, r1, #1
str r1, [r2, #0x5ac]
bl sub_00FFA62C
mov r6, r0
b _02002E18
_02002DE4:
ldrh r1, [r8, #0x14]
rsb r0, r6, #0xe800
and r0, r1, r0
cmp r0, #0x218
bne _02002E18
ldr r1, _02002E80 ; =0x0380FFF4
mov r0, r8
ldr r2, [r1]
ldr r1, [r2, #0x5b0]
add r1, r1, #1
str r1, [r2, #0x5b0]
bl sub_00FFA954
mov r6, r0
_02002E18:
cmp r6, #0
beq _02002E2C
add r0, r4, #0x188
sub r1, r8, #0x10
bl sub_02000AF0
_02002E2C:
ldr r3, _02002E80 ; =0x0380FFF4
ldr r0, [r3]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #1
beq _02002B44
ldr r2, _02002E8C ; =0x0000FFFF
ldr r1, _02002E98 ; =0x04805F60
mov r6, #0
_02002E50:
cmp r7, r1
ldrhs r0, [r3]
add r6, r6, #1
addhs r0, r0, #0x300
ldrhsh r0, [r0, #0xde]
subhs r7, r7, r0
cmp r6, #7
strh r2, [r7], #2
blo _02002E50
b _02002B44
_02002E78:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02002E80: .word 0x0380FFF4
_02002E84: .word 0x0480805A
_02002E88: .word 0x000008C6
_02002E8C: .word 0x0000FFFF
_02002E90: .word 0x0000E7BF
_02002E94: .word 0x0480803C
_02002E98: .word 0x04805F60
arm_func_end sub_02002B30
arm_func_start sub_02002E9C
sub_02002E9C: ; 0x02002E9C
stmdb sp!, {r4, lr}
ldr r0, _02002F74 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x2c
add r4, r0, #0x400
ldrh r0, [r4, #0x3c]
cmp r0, #0
beq _02002F6C
ldr r1, [r4, #0x90]
ldr r0, [r4, #0x44]
ldrh r1, [r1, #0x10]
ldrh r0, [r0, #2]
cmp r1, r0
beq _02002ED8
bl sub_02002B30
_02002ED8:
ldr r0, [r4, #0x44]
ldrh r0, [r0, #4]
ands r2, r0, #0xff
ldr r0, _02002F74 ; =0x0380FFF4
ldrne r1, [r0]
ldrne r0, [r1, #0x5a0]
addne r0, r0, r2
ldreq r1, [r0]
ldreq r0, [r1, #0x5a0]
addeq r0, r0, #1
str r0, [r1, #0x5a0]
ldrh r1, [r4, #0x40]
ldr r0, _02002F74 ; =0x0380FFF4
add r1, r1, #1
strh r1, [r4, #0x40]
ldr ip, [r4, #0x90]
ldr r1, [r4, #0x44]
ldrh r3, [ip, #0x10]
ldrh r2, [r1, #2]
mov r1, #0
eor r2, r3, r2
strh r2, [ip, #0x12]
ldr r2, [r4, #0x90]
ldrh r2, [r2, #0x10]
strh r2, [r4, #0xa0]
strh r1, [r4, #0x3c]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0xea]
cmp r0, #0
beq _02002F58
bl sub_00FF207C
_02002F58:
ldr r0, _02002F74 ; =0x0380FFF4
ldr r1, [r4, #0x90]
ldr r0, [r0]
add r0, r0, #0x188
bl sub_02000F40
_02002F6C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02002F74: .word 0x0380FFF4
arm_func_end sub_02002E9C
arm_func_start sub_02002F78
sub_02002F78: ; 0x02002F78
stmdb sp!, {r4, lr}
ldr r0, _0200302C ; =0x0380FFF4
ldr r2, _02003030 ; =0x04808088
ldr r1, [r0]
ldrh r0, [r2]
add r4, r1, #0x17c
cmp r0, #0
bne _02002FB8
ldrh r0, [r4, #0x38]
cmp r0, #0
beq _02002FB8
mov r1, #8
mov r0, #2
strh r1, [r2, #0x26]
bl sub_00FF80DC
b _02003024
_02002FB8:
add r0, r1, #0x500
ldrh r1, [r0, #0x32]
ldrh r2, [r0, #0x2e]
mvn r0, r1
tst r2, r0
bne _02002FF0
ldr r0, _02003034 ; =0x048080AE
mov r1, #8
strh r1, [r0]
ldrh r0, [r4, #0x38]
cmp r0, #0
beq _02002FF0
mov r0, #2
bl sub_00FF80DC
_02002FF0:
ldr r0, _02003034 ; =0x048080AE
mov r1, #5
strh r1, [r0]
ldrh r0, [r4, #0x2c]
cmp r0, #0
beq _02003010
mov r0, #1
bl sub_00FF80DC
_02003010:
ldrh r0, [r4, #0x20]
cmp r0, #0
beq _02003024
mov r0, #0
bl sub_00FF80DC
_02003024:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200302C: .word 0x0380FFF4
_02003030: .word 0x04808088
_02003034: .word 0x048080AE
arm_func_end sub_02002F78
arm_func_start sub_02003038
sub_02003038: ; 0x02003038
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _020030A4 ; =0x0380FFF4
mov r5, r1
ldr r1, [r2]
mov r6, r0
add r0, r1, #0x188
add r1, r5, #0x22
bl sub_02000A54
movs r4, r0
moveq r0, #0
beq _0200309C
mov r1, r6
add r0, r4, #0x18
add r2, r5, #0xc
bl sub_00FF2DE8
sub r0, r5, #0x18
strh r0, [r4, #0x16]
ldrh r0, [r4, #0x22]
ldrh r1, [r4, #0x1e]
and r0, r0, #0xff
and r1, r1, #0xff
mov r0, r0, lsl #0x10
orr r0, r1, r0, lsr #8
strh r0, [r4, #0x1e]
add r0, r4, #0x10
_0200309C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_020030A4: .word 0x0380FFF4
arm_func_end sub_02003038
arm_func_start sub_020030A8
sub_020030A8: ; 0x020030A8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _02003378 ; =0x0380FFF4
mov r0, #0
ldr r7, [r1]
mov r2, #0xb0
add r1, r7, #0x2c
add r4, r1, #0x400
mov r1, r4
add r5, r7, #0x344
add r6, r7, #0x31c
bl sub_020061B8
add r0, r7, #0x400
mov r1, #0
strh r1, [r0, #0x2c]
str r1, [r4, #0xc]
strh r1, [r4, #0x14]
str r1, [r4, #0x20]
strh r1, [r4, #0x28]
ldr r0, _0200337C ; =0x0000FFFF
str r1, [r4, #0x34]
strh r0, [r4, #0xa2]
strh r0, [r4, #0xa4]
ldrh r0, [r5, #0xc]
cmp r0, #3
addls pc, pc, r0, lsl #2
b _0200335C
_02003110: ; jump table
b _02003120 ; case 0
b _0200319C ; case 1
b _02003238 ; case 2
b _020032E4 ; case 3
_02003120:
ldr r7, _02003380 ; =0x04804170
ldr r0, _02003384 ; =0x04804026
str r7, [r4, #8]
sub r1, r7, #0x148
str r1, [r4, #0x1c]
sub r2, r7, #0x170
ldr r1, _02003388 ; =0x027F02FC
str r2, [r4, #0x30]
ldr r2, _0200338C ; =0x027F0478
str r1, [r4, #0x10]
ldr r1, _02003390 ; =0x027F0944
str r2, [r4, #0x24]
ldr r3, _02003394 ; =0x0000B6B8
str r1, [r4, #0x38]
sub r1, r7, #0x14c
ldr r2, _02003398 ; =0x00001D46
strh r3, [r1]
strh r2, [r0]
strh r3, [r7, #-4]
add r0, r0, #0x148
strh r2, [r0]
add r1, r7, #0x620
ldr r0, _0200339C ; =0x04804792
strh r3, [r1]
strh r2, [r0]
mov r1, #8
ldr r0, _020033A0 ; =0x048080AE
strh r1, [r5, #0x8a]
mov r1, #1
strh r1, [r0]
b _0200335C
_0200319C:
ldr r3, _020033A4 ; =0x04804AA0
ldr r2, _020033A8 ; =0x04804334
str r3, [r4, #8]
sub r0, r3, #0x148
str r0, [r4, #0x1c]
ldr r0, _02003388 ; =0x027F02FC
str r2, [r4, #0x30]
ldr r1, _0200338C ; =0x027F0478
str r0, [r4, #0x10]
ldr r0, _020033AC ; =0x027F09AC
str r1, [r4, #0x24]
ldr ip, _020033B0 ; =0x04804956
str r0, [r4, #0x38]
sub r1, r2, #0xfc
str r1, [r4, #0x80]
sub r7, r2, #0x334
ldr r0, _02003394 ; =0x0000B6B8
str r7, [r4, #0x44]
sub r7, r2, #0x100
ldr lr, _02003398 ; =0x00001D46
strh r0, [r7]
strh lr, [r2, #-0xfe]
strh r0, [r2, #-4]
strh lr, [r2, #-2]
add r2, r2, #0x620
strh r0, [r2]
strh lr, [ip]
strh r0, [r3, #-4]
add r2, ip, #0x148
strh lr, [r2]
add r3, r3, #0x620
ldr r2, _020033B4 ; =0x048050C2
strh r0, [r3]
strh lr, [r2]
mov r0, #0x208
strh r0, [r5, #0x8a]
str r1, [r4, #0x80]
bl sub_00FF93EC
b _0200335C
_02003238:
ldr r1, _020033B8 ; =0x048045D8
ldr r3, _020033BC ; =0x04804232
str r1, [r4, #8]
sub r0, r1, #0x148
str r0, [r4, #0x1c]
sub r2, r1, #0x170
ldr ip, _020033C0 ; =0x04804000
ldr r0, _02003388 ; =0x027F02FC
str r2, [r4, #0x30]
ldr r2, _0200338C ; =0x027F0478
str r0, [r4, #0x10]
ldr r0, _02003390 ; =0x027F0944
str r2, [r4, #0x24]
str r0, [r4, #0x38]
str ip, [r4, #0x58]
add r2, ip, #0x234
ldr r0, _02003394 ; =0x0000B6B8
str r2, [r4, #0x6c]
add r2, ip, #0x230
ldr r4, _02003398 ; =0x00001D46
strh r0, [r2]
strh r4, [r3]
sub r2, r1, #0x174
strh r0, [r2]
add r2, r3, #0x234
strh r4, [r2]
sub r2, r1, #0x14c
strh r0, [r2]
add r2, r3, #0x25c
strh r4, [r2]
strh r0, [r1, #-4]
add r2, r3, #0x3a4
strh r4, [r2]
add r2, r1, #0x620
ldr r1, _020033C4 ; =0x04804BFA
strh r0, [r2]
strh r4, [r1]
mov r1, #0x108
ldr r0, _020033A0 ; =0x048080AE
strh r1, [r5, #0x8a]
mov r1, #0xd
strh r1, [r0]
b _0200335C
_020032E4:
ldr ip, _02003380 ; =0x04804170
ldr r0, _02003384 ; =0x04804026
str ip, [r4, #8]
sub r1, ip, #0x148
str r1, [r4, #0x1c]
sub r2, ip, #0x170
ldr r1, _02003388 ; =0x027F02FC
str r2, [r4, #0x30]
ldr r2, _0200338C ; =0x027F0478
str r1, [r4, #0x10]
ldr r1, _02003390 ; =0x027F0944
str r2, [r4, #0x24]
ldr r3, _02003394 ; =0x0000B6B8
str r1, [r4, #0x38]
sub r1, ip, #0x14c
ldr r2, _02003398 ; =0x00001D46
strh r3, [r1]
strh r2, [r0]
strh r3, [ip, #-4]
add r0, r0, #0x148
strh r2, [r0]
add r1, ip, #0x620
ldr r0, _0200339C ; =0x04804792
strh r3, [r1]
strh r2, [r0]
mov r1, #0x108
ldr r0, _020033A0 ; =0x048080AE
strh r1, [r5, #0x8a]
mov r1, #0xd
strh r1, [r0]
_0200335C:
ldrh r0, [r6, #0x18]
cmp r0, #0
ldrneh r0, [r5, #0x8a]
orrne r0, r0, #0x4000
strneh r0, [r5, #0x8a]
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02003378: .word 0x0380FFF4
_0200337C: .word 0x0000FFFF
_02003380: .word 0x04804170
_02003384: .word 0x04804026
_02003388: .word 0x027F02FC
_0200338C: .word 0x027F0478
_02003390: .word 0x027F0944
_02003394: .word 0x0000B6B8
_02003398: .word 0x00001D46
_0200339C: .word 0x04804792
_020033A0: .word 0x048080AE
_020033A4: .word 0x04804AA0
_020033A8: .word 0x04804334
_020033AC: .word 0x027F09AC
_020033B0: .word 0x04804956
_020033B4: .word 0x048050C2
_020033B8: .word 0x048045D8
_020033BC: .word 0x04804232
_020033C0: .word 0x04804000
_020033C4: .word 0x04804BFA
arm_func_end sub_020030A8
arm_func_start sub_020033C8
sub_020033C8: ; 0x020033C8
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _020034C0 ; =0x0380FFF4
mov r0, #0
ldr r3, [r1]
mov r2, #0x50
add r1, r3, #0xdc
add r5, r1, #0x400
mov r1, r5
add r4, r3, #0x344
bl sub_020061B8
ldr r1, _020034C4 ; =0x04808030
mov r2, #0x8000
ldr r0, _020034C0 ; =0x0380FFF4
strh r2, [r1]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #3
addls pc, pc, r0, lsl #2
b _02003444
_02003418: ; jump table
b _02003428 ; case 0
b _02003430 ; case 1
b _02003438 ; case 2
b _02003440 ; case 3
_02003428:
ldr r6, _020034C8 ; =0x00000794
b _02003444
_02003430:
ldr r6, _020034CC ; =0x000010C4
b _02003444
_02003438:
ldr r6, _020034D0 ; =0x00000BFC
b _02003444
_02003440:
ldr r6, _020034C8 ; =0x00000794
_02003444:
ldr r3, _020034D4 ; =0x04808050
add r0, r6, #0x4000
ldr r1, _020034D8 ; =0x00005F60
add r2, r0, #0x4800000
mov r0, r6, lsl #0xf
strh r2, [r3]
mov r0, r0, lsr #0x10
strh r0, [r3, #6]
strh r1, [r3, #2]
strh r0, [r3, #0xa]
ldr r2, _020034DC ; =0x0000FFFF
strh r0, [r5, #4]
sub r0, r1, #0x4000
strh r2, [r5]
sub r0, r0, r6
strh r0, [r4, #0x9a]
sub r0, r1, #2
strh r0, [r3, #0x12]
rsb r0, r2, #0x18000
strh r0, [r3, #-0x20]
add r0, r3, #0x1fc
ldr r1, _020034E0 ; =0x0480824E
strh r2, [r0]
ldr r0, _020034E4 ; =0x04805F70
strh r2, [r1]
strh r2, [r0]
strh r2, [r0, #2]
strh r2, [r0, #0xe]
strh r2, [r0, #6]
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_020034C0: .word 0x0380FFF4
_020034C4: .word 0x04808030
_020034C8: .word 0x00000794
_020034CC: .word 0x000010C4
_020034D0: .word 0x00000BFC
_020034D4: .word 0x04808050
_020034D8: .word 0x00005F60
_020034DC: .word 0x0000FFFF
_020034E0: .word 0x0480824E
_020034E4: .word 0x04805F70
arm_func_end sub_020033C8
arm_func_start sub_020034E8
sub_020034E8: ; 0x020034E8
ldr r1, _02003510 ; =0x0480819C
mov r2, #0xfa0
b _02003504
_020034F4:
ldrh r0, [r1]
tst r0, #0x80
bxne lr
sub r2, r2, #1
_02003504:
cmp r2, #0
bne _020034F4
bx lr
.align 2, 0
_02003510: .word 0x0480819C
arm_func_end sub_020034E8
arm_func_start sub_02003514
sub_02003514: ; 0x02003514
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
ldr r2, _02003594 ; =0x000082EA
mov r3, #0
umull lr, ip, r0, r2
mla ip, r0, r3, ip
mov r0, r3
mla ip, r0, r2, ip
mov r0, lr, lsr #6
mov r4, #1
mov r5, r1
mov r1, ip, lsr #6
orr r0, r0, ip, lsl #26
mov r2, #0x3e8
str r4, [sp, #4]
bl sub_0200ED68
add r3, sp, #4
str r3, [sp]
ldr r2, _02003598 ; =0x0380FFF4
mov r3, r5
ldr r2, [r2]
add ip, r2, #0x234
mov r2, r1
mov r1, r0
add r0, ip, #0x400
bl sub_020056C4
_0200357C:
ldr r0, [sp, #4]
cmp r0, #0
bne _0200357C
add sp, sp, #8
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02003594: .word 0x000082EA
_02003598: .word 0x0380FFF4
arm_func_end sub_02003514
arm_func_start sub_0200359C
sub_0200359C: ; 0x0200359C
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02003600 ; =0x04808028
ldr lr, _02003604 ; =0x04000208
mov r5, #1
add r2, r1, #0x1ec
add r3, r1, #0x174
mov ip, #0
b _020035F0
_020035BC:
ldrh r4, [lr]
strh ip, [lr]
ldrh r0, [r3]
and r0, r0, #3
cmp r0, #3
ldrneh r0, [r2]
cmpne r0, #5
cmpne r0, #7
cmpne r0, #8
strneh ip, [r1]
ldrh r0, [lr]
movne r5, ip
strh r4, [lr]
_020035F0:
cmp r5, #0
bne _020035BC
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02003600: .word 0x04808028
_02003604: .word 0x04000208
arm_func_end sub_0200359C
arm_func_start sub_02003608
sub_02003608: ; 0x02003608
ldr r1, _02003638 ; =0x0480815E
mov r2, #0
b _02003628
_02003614:
ldrh r0, [r1]
tst r0, #1
moveq r0, #0
bxeq lr
add r2, r2, #1
_02003628:
cmp r2, #0x2800
blo _02003614
mov r0, #1
bx lr
.align 2, 0
_02003638: .word 0x0480815E
arm_func_end sub_02003608
arm_func_start sub_0200363C
sub_0200363C: ; 0x0200363C
ldr r1, _0200366C ; =0x04808180
mov r2, #0
b _0200365C
_02003648:
ldrh r0, [r1]
tst r0, #1
moveq r0, #0
bxeq lr
add r2, r2, #1
_0200365C:
cmp r2, #0x2800
blo _02003648
mov r0, #1
bx lr
.align 2, 0
_0200366C: .word 0x04808180
arm_func_end sub_0200363C
arm_func_start sub_02003670
sub_02003670: ; 0x02003670
stmdb sp!, {lr}
mov ip, #0x4000000
add ip, ip, #0x210
ldr r1, [ip, #-8]
cmp r1, #0
beq _0200368C
b _02003690
_0200368C:
ldmia sp!, {pc}
_02003690:
ldmia ip, {r1, r2}
ands r1, r1, r2
beq _020036A0
b _020036A4
_020036A0:
ldmia sp!, {pc}
_020036A4:
mov r3, #1
mov r0, #0
_020036AC:
ands r2, r1, r3, lsl r0
beq _020036B8
b _020036BC
_020036B8:
add r0, r0, #1
_020036BC:
beq _020036AC
str r2, [ip, #4]
ldr r1, _020036D4 ; =0x038074F4
ldr r0, [r1, r0, lsl #2]
ldr lr, _020036D8 ; =0x037FB4F4
bx r0
.align 2, 0
_020036D4: .word 0x038074F4
_020036D8: .word 0x037FB4F4
arm_func_end sub_02003670
arm_func_start sub_020036DC
sub_020036DC: ; 0x020036DC
ldr ip, _02003818 ; =0x03807608
mov r3, #0
ldr ip, [ip]
mov r2, #1
cmp ip, #0
beq _0200372C
_020036F4:
str r2, [ip, #0x48]
str r3, [ip, #0x5c]
str r3, [ip, #0x60]
ldr r0, [ip, #0x64]
str r3, [ip, #0x64]
mov ip, r0
cmp ip, #0
bne _020036F4
ldr ip, _02003818 ; =0x03807608
str r3, [ip]
str r3, [ip, #4]
ldr ip, _0200381C ; =0x038076A4
mov r1, #1
strh r1, [ip]
_0200372C:
ldr ip, _0200381C ; =0x038076A4
ldrh r1, [ip]
cmp r1, #0
beq _02003740
b _02003744
_02003740:
ldmia sp!, {pc}
_02003744:
mov r1, #0
strh r1, [ip]
mov r3, #0xd2
msr cpsr_c, r3
add r2, ip, #8
ldr r1, [r2]
_0200375C:
cmp r1, #0
bne _02003768
b _0200376C
_02003768:
ldrh r0, [r1, #0x48]
_0200376C:
bne _02003774
b _02003778
_02003774:
cmp r0, #1
_02003778:
bne _02003780
b _02003784
_02003780:
ldr r1, [r1, #0x4c]
_02003784:
bne _0200375C
cmp r1, #0
bne _0200379C
_02003790:
mov r3, #0x92
msr cpsr_c, r3
ldmia sp!, {pc}
_0200379C:
ldr r0, [ip, #4]
cmp r1, r0
beq _02003790
ldr r3, [ip, #0xc]
cmp r3, #0
beq _020037C4
stmdb sp!, {r0, r1, ip}
mov lr, pc
bx r3
_020037C0:
ldmia sp!, {r0, r1, ip}
_020037C4:
str r1, [ip, #4]
mrs r2, spsr
str r2, [r0, #0]!
ldmib sp!, {r2, r3}
stmib r0!, {r2, r3}
ldmib sp!, {r2, r3, ip, lr}
stmib r0!, {r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^
stmib r0!, {lr}
mov r3, #0xd3
msr cpsr_c, r3
stmib r0!, {sp}
ldr sp, [r1, #0x44]
mov r3, #0xd2
msr cpsr_c, r3
ldr r2, [r1, #0]!
msr spsr_fc, r2
ldr lr, [r1, #0x40]
ldmib r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^
mov r0, r0
stmda sp!, {r0, r1, r2, r3, ip, lr}
ldmia sp!, {pc}
.align 2, 0
_02003818: .word 0x03807608
_0200381C: .word 0x038076A4
arm_func_end sub_020036DC
arm_func_start sub_02003820
sub_02003820: ; 0x02003820
bx lr
arm_func_end sub_02003820
arm_func_start sub_02003824
sub_02003824: ; 0x02003824
stmdb sp!, {r3, r4, r5, lr}
mov r1, #0xc
mul r5, r0, r1
ldr r2, _0200389C ; =0x03807610
ldr r3, _020038A0 ; =0x038074E0
mov r4, r0, lsl #1
ldr r1, [r2, r5]
mov r0, #0
ldrh r3, [r3, r4]
mov r4, #1
str r0, [r2, r5]
cmp r1, #0
mov r4, r4, lsl r3
beq _0200386C
ldr r0, _020038A4 ; =0x03807618
ldr r0, [r0, r5]
mov lr, pc
bx r1
_0200386C:
ldr r2, _020038A8 ; =0x0380FFF8
ldr r0, _020038AC ; =0x03807614
ldr r1, [r2]
orr r1, r1, r4
str r1, [r2]
ldr r0, [r0, r5]
cmp r0, #0
bne _02003894
mov r0, r4
bl sub_02003B10
_02003894:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0200389C: .word 0x03807610
_020038A0: .word 0x038074E0
_020038A4: .word 0x03807618
_020038A8: .word 0x0380FFF8
_020038AC: .word 0x03807614
arm_func_end sub_02003824
arm_func_start sub_020038B0
sub_020038B0: ; 0x020038B0
ldr ip, _020038BC ; =sub_037FB63C
mov r0, #0
bx ip
.align 2, 0
_020038BC: .word sub_037FB63C
arm_func_end sub_020038B0
arm_func_start sub_020038C0
sub_020038C0: ; 0x020038C0
ldr ip, _020038CC ; =sub_037FB63C
mov r0, #1
bx ip
.align 2, 0
_020038CC: .word sub_037FB63C
arm_func_end sub_020038C0
arm_func_start sub_020038D0
sub_020038D0: ; 0x020038D0
ldr ip, _020038DC ; =sub_037FB63C
mov r0, #2
bx ip
.align 2, 0
_020038DC: .word sub_037FB63C
arm_func_end sub_020038D0
arm_func_start sub_020038E0
sub_020038E0: ; 0x020038E0
ldr ip, _020038EC ; =sub_037FB63C
mov r0, #3
bx ip
.align 2, 0
_020038EC: .word sub_037FB63C
arm_func_end sub_020038E0
arm_func_start sub_020038F0
sub_020038F0: ; 0x020038F0
ldr ip, _020038FC ; =sub_037FB63C
mov r0, #4
bx ip
.align 2, 0
_020038FC: .word sub_037FB63C
arm_func_end sub_020038F0
arm_func_start sub_02003900
sub_02003900: ; 0x02003900
ldr ip, _0200390C ; =sub_037FB63C
mov r0, #5
bx ip
.align 2, 0
_0200390C: .word sub_037FB63C
arm_func_end sub_02003900
arm_func_start sub_02003910
sub_02003910: ; 0x02003910
ldr ip, _0200391C ; =sub_037FB63C
mov r0, #6
bx ip
.align 2, 0
_0200391C: .word sub_037FB63C
arm_func_end sub_02003910
arm_func_start sub_02003920
sub_02003920: ; 0x02003920
ldr ip, _0200392C ; =sub_037FB63C
mov r0, #7
bx ip
.align 2, 0
_0200392C: .word sub_037FB63C
arm_func_end sub_02003920
arm_func_start sub_02003930
sub_02003930: ; 0x02003930
stmdb sp!, {r3, lr}
ldr r2, _02003974 ; =0x027FFC3C
ldr r0, _02003978 ; =0x03807610
ldr r1, [r2]
ldr r3, [r0, #0x60]
add r0, r1, #1
str r0, [r2]
cmp r3, #0
beq _0200395C
mov lr, pc
bx r3
_0200395C:
ldr r1, _0200397C ; =0x0380FFF8
ldr r0, [r1]
orr r0, r0, #1
str r0, [r1]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02003974: .word 0x027FFC3C
_02003978: .word 0x03807610
_0200397C: .word 0x0380FFF8
arm_func_end sub_02003930
arm_func_start sub_02003980
sub_02003980: ; 0x02003980
ldr r0, _0200399C ; =0x03807608
mov r2, #0
str r2, [r0, #4]
ldr r1, _020039A0 ; =0x027FFC3C
str r2, [r0]
str r2, [r1]
bx lr
.align 2, 0
_0200399C: .word 0x03807608
_020039A0: .word 0x027FFC3C
arm_func_end sub_02003980
arm_func_start sub_020039A4
sub_020039A4: ; 0x020039A4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r4, _02003A34 ; =0x038074F4
mov sb, #0
mov r2, #0xc
ldr r5, _02003A38 ; =0x03807670
ldr r7, _02003A3C ; =0x03807610
mov r8, sb
mov lr, sb
mov ip, #1
mov r3, r2
_020039CC:
tst r0, #1
beq _02003A1C
mov sl, r8
cmp sb, #8
blt _020039F0
cmp sb, #0xb
suble r6, sb, #8
mlale sl, r6, r3, r7
ble _02003A14
_020039F0:
cmp sb, #3
blt _02003A08
cmp sb, #6
addle r6, sb, #1
mlale sl, r6, r2, r7
ble _02003A14
_02003A08:
cmp sb, #0
strne r1, [r4, sb, lsl #2]
moveq sl, r5
_02003A14:
cmp sl, #0
stmneia sl, {r1, ip, lr}
_02003A1C:
add sb, sb, #1
cmp sb, #0x19
mov r0, r0, lsr #1
blt _020039CC
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_02003A34: .word 0x038074F4
_02003A38: .word 0x03807670
_02003A3C: .word 0x03807610
arm_func_end sub_020039A4
arm_func_start sub_02003A40
sub_02003A40: ; 0x02003A40
stmdb sp!, {r4, lr}
mov r3, #0xc
mul r4, r0, r3
ldr ip, _02003A80 ; =0x03807640
ldr r3, _02003A84 ; =0x03807648
str r1, [ip, r4]
add r0, r0, #3
mov r1, #1
mov r0, r1, lsl r0
str r2, [r3, r4]
bl sub_02003AD8
ldr r0, _02003A88 ; =0x03807644
mov r1, #1
str r1, [r0, r4]
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02003A80: .word 0x03807640
_02003A84: .word 0x03807648
_02003A88: .word 0x03807644
arm_func_end sub_02003A40
arm_func_start sub_02003A8C
sub_02003A8C: ; 0x02003A8C
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02003AC0
ldr r1, _02003ABC ; =0x04000210
ldr r3, [r1]
sub r2, r1, #8
str r4, [r1]
ldrh r1, [r2]
strh r0, [r2]
mov r0, r3
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02003ABC: .word 0x04000210
arm_func_end sub_02003A8C
arm_func_start sub_02003AC0
sub_02003AC0: ; 0x02003AC0
ldr r2, _02003AD4 ; =0x04000208
mov r1, #0
ldrh r0, [r2]
strh r1, [r2]
bx lr
.align 2, 0
_02003AD4: .word 0x04000208
arm_func_end sub_02003AC0
arm_func_start sub_02003AD8
sub_02003AD8: ; 0x02003AD8
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02003AC0
ldr ip, _02003B0C ; =0x04000210
ldr r3, [ip]
sub r2, ip, #8
orr r1, r3, r4
str r1, [ip]
ldrh r1, [r2]
strh r0, [r2]
mov r0, r3
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02003B0C: .word 0x04000210
arm_func_end sub_02003AD8
arm_func_start sub_02003B10
sub_02003B10: ; 0x02003B10
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02003AC0
ldr ip, _02003B48 ; =0x04000210
mvn r1, r4
ldr r3, [ip]
sub r2, ip, #8
and r1, r3, r1
str r1, [ip]
ldrh r1, [r2]
strh r0, [r2]
mov r0, r3
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02003B48: .word 0x04000210
arm_func_end sub_02003B10
arm_func_start sub_02003B4C
sub_02003B4C: ; 0x02003B4C
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02003AC0
ldr r1, _02003B7C ; =0x04000214
ldr r3, [r1]
sub r2, r1, #0xc
str r4, [r1]
ldrh r1, [r2]
strh r0, [r2]
mov r0, r3
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02003B7C: .word 0x04000214
arm_func_end sub_02003B4C
arm_func_start sub_02003B80
sub_02003B80: ; 0x02003B80
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _02003BE8 ; =0x0380767C
ldr r1, [r0]
cmp r1, #0
bne _02003BE0
ldr r4, _02003BEC ; =0x027FFFF0
mov r2, #1
mov r1, #0
str r2, [r0]
strh r1, [r4, #6]
mov r5, #0x400
b _02003BB8
_02003BB0:
mov r0, r5
bl sub_02003BF4
_02003BB8:
ldrh r0, [r4, #4]
cmp r0, #0x7f
bne _02003BB0
ldr r1, _02003BF0 ; =0x027FFFB8
mvn r0, #0
str r0, [r1]
mov r0, r0, lsl #0x10
str r0, [r1, #4]
mov r0, #0xbf
strh r0, [r4, #6]
_02003BE0:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02003BE8: .word 0x0380767C
_02003BEC: .word 0x027FFFF0
_02003BF0: .word 0x027FFFB8
arm_func_end sub_02003B80
arm_func_start sub_02003BF4
sub_02003BF4: ; 0x02003BF4
ldr ip, _02003BFC ; =sub_038037B8
bx ip
.align 2, 0
_02003BFC: .word sub_038037B8
arm_func_end sub_02003BF4
arm_func_start sub_02003C00
sub_02003C00: ; 0x02003C00
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r1
ldrh r1, [r7, #4]
mov r6, r2
cmp r0, r1
mov r5, r3
mvnne r0, #1
bne _02003C74
cmp r5, #0
beq _02003C30
bl sub_02005F14
b _02003C34
_02003C30:
bl sub_02005EE8
_02003C34:
mov r4, r0
mov r0, #0
strh r0, [r7, #4]
cmp r6, #0
beq _02003C50
mov lr, pc
bx r6
_02003C50:
mov r0, #0
str r0, [r7]
cmp r5, #0
mov r0, r4
beq _02003C6C
bl sub_02005F28
b _02003C70
_02003C6C:
bl sub_02005EFC
_02003C70:
mov r0, #0
_02003C74:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_02003C00
arm_func_start sub_02003C7C
sub_02003C7C: ; 0x02003C7C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
movs r6, r3
mov sb, r0
mov r8, r1
mov r7, r2
beq _02003C9C
bl sub_02005F14
b _02003CA0
_02003C9C:
bl sub_02005EE8
_02003CA0:
mov r5, r0
mov r0, sb
mov r1, r8
bl sub_02006494
movs r4, r0
bne _02003CCC
cmp r7, #0
beq _02003CC8
mov lr, pc
bx r7
_02003CC8:
strh sb, [r8, #4]
_02003CCC:
cmp r6, #0
mov r0, r5
beq _02003CE0
bl sub_02005F28
b _02003CE4
_02003CE0:
bl sub_02005EFC
_02003CE4:
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
arm_func_end sub_02003C7C
arm_func_start sub_02003CF0
sub_02003CF0: ; 0x02003CF0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r6, _02003D38 ; =0x027FFFE8
ldr r5, _02003D3C ; =0x037FBBA4
mov r8, r0
mov r7, #0x400
mov r4, #1
b _02003D14
_02003D0C:
mov r0, r7
bl sub_02003BF4
_02003D14:
mov r0, r8
mov r1, r6
mov r2, r5
mov r3, r4
bl sub_02003C7C
cmp r0, #0
bgt _02003D0C
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02003D38: .word 0x027FFFE8
_02003D3C: .word 0x037FBBA4
arm_func_end sub_02003CF0
arm_func_start sub_02003D40
sub_02003D40: ; 0x02003D40
ldr ip, _02003D54 ; =sub_037FBA18
ldr r1, _02003D58 ; =0x027FFFE8
ldr r2, _02003D5C ; =0x037FBBA8
mov r3, #1
bx ip
.align 2, 0
_02003D54: .word sub_037FBA18
_02003D58: .word 0x027FFFE8
_02003D5C: .word 0x037FBBA8
arm_func_end sub_02003D40
arm_func_start sub_02003D60
sub_02003D60: ; 0x02003D60
ldr r1, _02003D68 ; =sub_037FBB58
bx r1
.align 2, 0
_02003D68: .word sub_037FBB58
arm_func_end sub_02003D60
arm_func_start sub_02003D6C
sub_02003D6C: ; 0x02003D6C
ldr ip, _02003D80 ; =sub_037FBA94
ldr r1, _02003D84 ; =0x027FFFE8
ldr r2, _02003D88 ; =0x037FBBA4
mov r3, #1
bx ip
.align 2, 0
_02003D80: .word sub_037FBA94
_02003D84: .word 0x027FFFE8
_02003D88: .word 0x037FBBA4
arm_func_end sub_02003D6C
arm_func_start sub_02003D8C
sub_02003D8C: ; 0x02003D8C
bx lr
arm_func_end sub_02003D8C
arm_func_start sub_02003D90
sub_02003D90: ; 0x02003D90
bx lr
arm_func_end sub_02003D90
arm_func_start sub_02003D94
sub_02003D94: ; 0x02003D94
ldr ip, _02003DA8 ; =sub_037FBA18
ldr r1, _02003DAC ; =0x027FFFE0
ldr r2, _02003DB0 ; =0x037FBBF0
mov r3, #0
bx ip
.align 2, 0
_02003DA8: .word sub_037FBA18
_02003DAC: .word 0x027FFFE0
_02003DB0: .word 0x037FBBF0
arm_func_end sub_02003D94
arm_func_start sub_02003DB4
sub_02003DB4: ; 0x02003DB4
ldr ip, _02003DC8 ; =sub_037FBA94
ldr r1, _02003DCC ; =0x027FFFE0
ldr r2, _02003DD0 ; =0x037FBBEC
mov r3, #0
bx ip
.align 2, 0
_02003DC8: .word sub_037FBA94
_02003DCC: .word 0x027FFFE0
_02003DD0: .word 0x037FBBEC
arm_func_end sub_02003DB4
arm_func_start sub_02003DD4
sub_02003DD4: ; 0x02003DD4
bx lr
arm_func_end sub_02003DD4
arm_func_start sub_02003DD8
sub_02003DD8: ; 0x02003DD8
bx lr
arm_func_end sub_02003DD8
arm_func_start sub_02003DDC
sub_02003DDC: ; 0x02003DDC
ldrh r0, [r0, #4]
bx lr
arm_func_end sub_02003DDC
arm_func_start sub_02003DE4
sub_02003DE4: ; 0x02003DE4
ldr r3, _02003E84 ; =0x027FFFB8
ldr r1, [r3]
mov r2, #0
mov r0, #0x80000000
_02003DF4:
tst r1, r0
bne _02003E10
add r2, r2, #1
cmp r2, #0x20
beq _02003E10
mov r0, r0, lsr #1
b _02003DF4
_02003E10:
cmp r2, #0x20
bne _02003E1C
b _02003E20
_02003E1C:
mov r0, #0x80
_02003E20:
bne _02003E68
add r3, r3, #4
ldr r1, [r3]
mov r2, #0
mov r0, #0x80000000
_02003E34:
tst r1, r0
bne _02003E50
add r2, r2, #1
cmp r2, #0x20
beq _02003E50
mov r0, r0, lsr #1
b _02003E34
_02003E50:
cmp r2, #0x20
ldr r0, _02003E88 ; =0xFFFFFFFD
beq _02003E60
b _02003E64
_02003E60:
bx lr
_02003E64:
mov r0, #0xa0
_02003E68:
add r0, r0, r2
mov r1, #0x80000000
mov r1, r1, lsr r2
ldr r2, [r3]
bic r2, r2, r1
str r2, [r3]
bx lr
.align 2, 0
_02003E84: .word 0x027FFFB8
_02003E88: .word 0xFFFFFFFD
arm_func_end sub_02003DE4
arm_func_start sub_02003E8C
sub_02003E8C: ; 0x02003E8C
ldr r3, _02003ED0 ; =0x027FFFB8
cmp r0, #0xa0
bpl _02003E9C
b _02003EA0
_02003E9C:
add r3, r3, #4
_02003EA0:
bpl _02003EA8
b _02003EAC
_02003EA8:
sub r0, r0, #0xa0
_02003EAC:
bmi _02003EB4
b _02003EB8
_02003EB4:
sub r0, r0, #0x80
_02003EB8:
mov r1, #0x80000000
mov r1, r1, lsr r0
ldr r2, [r3]
orr r2, r2, r1
str r2, [r3]
bx lr
.align 2, 0
_02003ED0: .word 0x027FFFB8
arm_func_end sub_02003E8C
arm_func_start sub_02003ED4
sub_02003ED4: ; 0x02003ED4
ldr ip, [r0]
b _02003EE8
_02003EDC:
cmp ip, r1
bxeq lr
ldr ip, [ip, #0x64]
_02003EE8:
cmp ip, #0
beq _02003F00
ldr r3, [ip, #0x54]
ldr r2, [r1, #0x54]
cmp r3, r2
bls _02003EDC
_02003F00:
cmp ip, #0
bne _02003F2C
ldr r2, [r0, #4]
cmp r2, #0
streq r1, [r0]
strne r1, [r2, #0x64]
str r2, [r1, #0x60]
mov r2, #0
str r2, [r1, #0x64]
str r1, [r0, #4]
bx lr
_02003F2C:
ldr r2, [ip, #0x60]
cmp r2, #0
streq r1, [r0]
strne r1, [r2, #0x64]
str r2, [r1, #0x60]
str ip, [r1, #0x64]
str r1, [ip, #0x60]
bx lr
arm_func_end sub_02003ED4
arm_func_start sub_02003F4C
sub_02003F4C: ; 0x02003F4C
stmdb sp!, {r3, lr}
ldr lr, [r0]
mov r2, lr
b _02003F90
_02003F5C:
ldr r3, [r2, #0x64]
cmp r2, r1
bne _02003F8C
ldr ip, [r2, #0x60]
cmp lr, r2
streq r3, [r0]
strne r3, [ip, #0x64]
ldr r1, [r0, #4]
cmp r1, r2
streq ip, [r0, #4]
strne ip, [r3, #0x60]
b _02003F98
_02003F8C:
mov r2, r3
_02003F90:
cmp r2, #0
bne _02003F5C
_02003F98:
mov r0, r2
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_02003F4C
arm_func_start sub_02003FA4
sub_02003FA4: ; 0x02003FA4
ldr r2, [r0]
cmp r2, #0
beq _02003FCC
ldr r1, [r2, #0x10]
str r1, [r0]
cmp r1, #0
movne r0, #0
strne r0, [r1, #0x14]
moveq r1, #0
streq r1, [r0, #4]
_02003FCC:
mov r0, r2
bx lr
arm_func_end sub_02003FA4
arm_func_start sub_02003FD4
sub_02003FD4: ; 0x02003FD4
stmdb sp!, {r3, lr}
ldr r1, _02004030 ; =0x03807680
mov ip, #0
ldr lr, [r1, #0x2c]
mov r3, lr
b _02003FF4
_02003FEC:
mov ip, r3
ldr r3, [r3, #0x4c]
_02003FF4:
cmp r3, #0
beq _0200400C
ldr r2, [r3, #0x54]
ldr r1, [r0, #0x54]
cmp r2, r1
blo _02003FEC
_0200400C:
cmp ip, #0
ldreq r1, _02004030 ; =0x03807680
streq lr, [r0, #0x4c]
streq r0, [r1, #0x2c]
ldrne r1, [ip, #0x4c]
strne r1, [r0, #0x4c]
strne r0, [ip, #0x4c]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02004030: .word 0x03807680
arm_func_end sub_02003FD4
arm_func_start sub_02004034
sub_02004034: ; 0x02004034
ldr r1, _02004074 ; =0x03807680
mov r2, #0
ldr r1, [r1, #0x2c]
b _0200404C
_02004044:
mov r2, r1
ldr r1, [r1, #0x4c]
_0200404C:
cmp r1, #0
cmpne r1, r0
bne _02004044
cmp r2, #0
ldreq r1, [r0, #0x4c]
ldreq r0, _02004074 ; =0x03807680
streq r1, [r0, #0x2c]
ldrne r0, [r0, #0x4c]
strne r0, [r2, #0x4c]
bx lr
.align 2, 0
_02004074: .word 0x03807680
arm_func_end sub_02004034
arm_func_start sub_02004078
sub_02004078: ; 0x02004078
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _02004144 ; =0x03807680
ldr r1, [r0, #4]
cmp r1, #0
bne _0200413C
ldrh r0, [r0, #0x26]
ldr r4, _02004148 ; =0x038076A4
cmp r0, #0
bne _020040A8
bl sub_02005F40
cmp r0, #0x12
bne _020040B4
_020040A8:
mov r0, #1
strh r0, [r4]
b _0200413C
_020040B4:
ldr r0, _02004144 ; =0x03807680
ldr r0, [r0, #8]
ldr r6, [r0]
bl sub_02004580
mov r5, r0
cmp r6, r5
cmpne r5, #0
beq _0200413C
ldr r0, [r6, #0x48]
cmp r0, #2
beq _020040F0
mov r0, r6
bl sub_02004834
cmp r0, #0
bne _0200413C
_020040F0:
ldr r0, _02004144 ; =0x03807680
ldr r2, [r0]
cmp r2, #0
beq _02004110
mov r0, r6
mov r1, r5
mov lr, pc
bx r2
_02004110:
ldr r2, [r4, #0xc]
cmp r2, #0
beq _0200412C
mov r0, r6
mov r1, r5
mov lr, pc
bx r2
_0200412C:
ldr r1, _02004144 ; =0x03807680
mov r0, r5
str r5, [r1, #0x28]
bl sub_02004868
_0200413C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02004144: .word 0x03807680
_02004148: .word 0x038076A4
arm_func_end sub_02004078
arm_func_start sub_0200414C
sub_0200414C: ; 0x0200414C
stmdb sp!, {r3, lr}
ldr r0, _02004210 ; =0x03807680
ldr r1, [r0, #0xc]
cmp r1, #0
bne _02004208
ldr r1, _02004214 ; =0x038076A8
mov r2, #1
str r2, [r0, #0xc]
str r1, [r0, #8]
mov r1, #0x10
str r1, [r0, #0x12c]
mov r3, #0
str r3, [r0, #0x128]
str r2, [r0, #0x120]
str r3, [r0, #0x124]
ldr r2, _02004218 ; =0x00000400
ldr r1, _0200421C ; =0x03807758
str r3, [r0, #0x130]
str r1, [r0, #0x2c]
str r1, [r0, #0x28]
cmp r2, #0
ldrle r0, _02004220 ; =0x037F8000
ldrgt r1, _02004224 ; =0x00000400
ldrgt r0, _02004228 ; =0x0380FF80
subgt r0, r0, r1
sub ip, r0, r2
ldr r2, _02004224 ; =0x00000400
ldr r0, _02004228 ; =0x0380FF80
ldr r1, _02004210 ; =0x03807680
sub r3, r0, r2
str r3, [r1, #0x150]
str ip, [r1, #0x14c]
mov r0, #0
ldr r2, _0200422C ; =0xD73BFDF7
str r0, [r1, #0x154]
str r2, [r3, #-4]
ldr r2, [r1, #0x14c]
ldr ip, _02004230 ; =0xFBDD37BB
ldr r3, _02004234 ; =0x038076A4
str ip, [r2]
str r0, [r1, #0x15c]
str r0, [r1, #0x158]
strh r0, [r1, #0x24]
ldr r2, _02004238 ; =0x027FFFA4
strh r0, [r1, #0x26]
str r3, [r2]
bl sub_02004714
_02004208:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02004210: .word 0x03807680
_02004214: .word 0x038076A8
_02004218: .word 0x00000400
_0200421C: .word 0x03807758
_02004220: .word 0x037F8000
_02004224: .word 0x00000400
_02004228: .word 0x0380FF80
_0200422C: .word 0xD73BFDF7
_02004230: .word 0xFBDD37BB
_02004234: .word 0x038076A4
_02004238: .word 0x027FFFA4
arm_func_end sub_0200414C
arm_func_start sub_0200423C
sub_0200423C: ; 0x0200423C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r5, r1
mov r7, r2
mov r6, r3
bl sub_02005EE8
ldr r1, _02004334 ; =0x03807680
ldr r2, [sp, #0x1c]
ldr r3, [r1, #0x20]
mov r4, r0
add r0, r3, #1
str r0, [r1, #0x20]
str r2, [r8, #0x54]
str r0, [r8, #0x50]
mov r1, #0
str r1, [r8, #0x48]
mov r0, r8
str r1, [r8, #0x58]
bl sub_02003FD4
ldr r0, [sp, #0x18]
mov r1, r5
str r6, [r8, #0x78]
sub r5, r6, r0
sub r2, r6, #4
str r5, [r8, #0x74]
mov ip, #0
str ip, [r8, #0x7c]
ldr r6, _02004338 ; =0xD73BFDF7
ldr r0, [r8, #0x78]
ldr r3, _0200433C ; =0xFBDD37BB
str r6, [r0, #-4]
ldr r0, [r8, #0x74]
str r3, [r0]
str ip, [r8, #0x84]
mov r0, r8
str ip, [r8, #0x80]
bl sub_020047B0
ldr r2, _02004340 ; =0x037FC15C
str r7, [r8, #4]
str r2, [r8, #0x3c]
ldr r2, [sp, #0x18]
add r1, r5, #4
mov r0, #0
sub r2, r2, #8
bl sub_020061B8
mov r0, #0
str r0, [r8, #0x68]
str r0, [r8, #0x6c]
str r0, [r8, #0x70]
str r0, [r8, #0x98]
str r0, [r8, #0x5c]
str r0, [r8, #0x64]
str r0, [r8, #0x60]
add r1, r8, #0x88
mov r2, #0xc
bl sub_020061B8
mov r1, #0
mov r0, r4
str r1, [r8, #0x94]
bl sub_02005EFC
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02004334: .word 0x03807680
_02004338: .word 0xD73BFDF7
_0200433C: .word 0xFBDD37BB
_02004340: .word 0x037FC15C
arm_func_end sub_0200423C
arm_func_start sub_02004344
sub_02004344: ; 0x02004344
stmdb sp!, {r3, lr}
bl sub_02005EE8
ldr r0, _02004364 ; =0x03807680
mov r1, #0
ldr r0, [r0, #0x28]
bl sub_02004368
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02004364: .word 0x03807680
arm_func_end sub_02004344
arm_func_start sub_02004368
sub_02004368: ; 0x02004368
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _020043C0 ; =0x03807680
mov r5, r0
ldr r2, [r2, #0x1c]
mov r4, r1
cmp r2, #0
beq _020043B0
ldr r1, _020043C4 ; =0x037FC1E0
bl sub_020047B0
str r4, [r5, #4]
ldr r1, [r5]
mov r0, r5
orr r1, r1, #0x80
str r1, [r5]
mov r1, #1
str r1, [r5, #0x48]
bl sub_02004868
b _020043B8
_020043B0:
mov r0, r4
bl sub_020043C8
_020043B8:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020043C0: .word 0x03807680
_020043C4: .word 0x037FC1E0
arm_func_end sub_02004368
arm_func_start sub_020043C8
sub_020043C8: ; 0x020043C8
stmdb sp!, {r3, lr}
ldr r1, _02004404 ; =0x03807680
ldr r1, [r1, #8]
ldr r3, [r1]
ldr r2, [r3, #0x98]
cmp r2, #0
beq _020043F8
mov r1, #0
str r1, [r3, #0x98]
mov lr, pc
bx r2
_020043F4:
bl sub_02005EE8
_020043F8:
bl sub_02004408
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02004404: .word 0x03807680
arm_func_end sub_020043C8
arm_func_start sub_02004408
sub_02004408: ; 0x02004408
stmdb sp!, {r4, lr}
ldr r0, _02004474 ; =0x03807680
ldr r0, [r0, #8]
ldr r4, [r0]
bl sub_02004740
mov r0, r4
bl sub_02004B54
ldr r0, [r4, #0x5c]
cmp r0, #0
beq _02004438
mov r1, r4
bl sub_02003F4C
_02004438:
mov r0, r4
bl sub_02004034
mov r1, #2
add r0, r4, #0x80
str r1, [r4, #0x48]
bl sub_020044CC
bl sub_02004778
bl sub_02005EE8
mov r4, r0
bl sub_02004078
mov r0, r4
bl sub_02005EFC
bl sub_02006058
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02004474: .word 0x03807680
arm_func_end sub_02004408
arm_func_start sub_02004478
sub_02004478: ; 0x02004478
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
bl sub_02005EE8
ldr r1, _020044C8 ; =0x03807680
mov r4, r0
ldr r0, [r1, #8]
cmp r6, #0
ldr r5, [r0]
beq _020044AC
mov r0, r6
mov r1, r5
str r6, [r5, #0x5c]
bl sub_02003ED4
_020044AC:
mov r0, #0
str r0, [r5, #0x48]
bl sub_02004078
mov r0, r4
bl sub_02005EFC
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_020044C8: .word 0x03807680
arm_func_end sub_02004478
arm_func_start sub_020044CC
sub_020044CC: ; 0x020044CC
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_02005EE8
ldr r1, [r5]
mov r4, r0
cmp r1, #0
beq _02004544
mov r2, #0
mov r3, r2
mov r1, #1
mov r0, r2
b _02004528
_020044FC:
beq _02004518
ldr ip, [lr, #0x64]
str ip, [r5]
cmp ip, #0
strne r3, [ip, #0x60]
streq r2, [r5, #4]
streq r2, [lr, #0x5c]
_02004518:
str r1, [lr, #0x48]
str r0, [lr, #0x5c]
str r0, [lr, #0x64]
str r0, [lr, #0x60]
_02004528:
ldr lr, [r5]
cmp lr, #0
bne _020044FC
mov r0, #0
str r0, [r5, #4]
str r0, [r5]
bl sub_02004078
_02004544:
mov r0, r4
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_020044CC
arm_func_start sub_02004554
sub_02004554: ; 0x02004554
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_02005EE8
mov r1, #1
mov r4, r0
str r1, [r5, #0x48]
bl sub_02004078
mov r0, r4
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02004554
arm_func_start sub_02004580
sub_02004580: ; 0x02004580
ldr r0, _020045A4 ; =0x03807680
ldr r0, [r0, #0x2c]
b _02004590
_0200458C:
ldr r0, [r0, #0x4c]
_02004590:
cmp r0, #0
ldrne r1, [r0, #0x48]
cmpne r1, #1
bne _0200458C
bx lr
.align 2, 0
_020045A4: .word 0x03807680
arm_func_end sub_02004580
arm_func_start sub_020045A8
sub_020045A8: ; 0x020045A8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r2, _02004648 ; =0x03807680
mov r7, r0
ldr r8, [r2, #0x2c]
mov r6, r1
mov r4, #0
bl sub_02005EE8
mov r5, r0
b _020045D4
_020045CC:
mov r4, r8
ldr r8, [r8, #0x4c]
_020045D4:
cmp r8, #0
cmpne r8, r7
bne _020045CC
cmp r8, #0
ldrne r0, _0200464C ; =0x038076B4
cmpne r8, r0
bne _02004600
mov r0, r5
bl sub_02005EFC
mov r0, #0
b _02004640
_02004600:
ldr r0, [r8, #0x54]
cmp r0, r6
beq _02004634
cmp r4, #0
ldreq r1, [r7, #0x4c]
ldreq r0, _02004648 ; =0x03807680
streq r1, [r0, #0x2c]
ldrne r0, [r7, #0x4c]
strne r0, [r4, #0x4c]
mov r0, r7
str r6, [r7, #0x54]
bl sub_02003FD4
bl sub_02004078
_02004634:
mov r0, r5
bl sub_02005EFC
mov r0, #1
_02004640:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02004648: .word 0x03807680
_0200464C: .word 0x038076B4
arm_func_end sub_020045A8
arm_func_start sub_02004650
sub_02004650: ; 0x02004650
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x34
mov r4, r0
add r0, sp, #8
bl sub_02005588
ldr r0, _020046E8 ; =0x03807680
ldr r0, [r0, #8]
ldr r0, [r0]
str r0, [sp, #4]
bl sub_02005EE8
ldr r1, _020046EC ; =0x000082EA
mov r2, #0
umull ip, r3, r4, r1
mla r3, r4, r2, r3
mla r3, r2, r1, r3
mov r5, r0
mov r1, ip, lsr #6
ldr r4, [sp, #4]
add r0, sp, #8
str r0, [r4, #0x94]
add r2, sp, #4
str r2, [sp]
mov r2, r3, lsr #6
orr r1, r1, r3, lsl #26
ldr r3, _020046F0 ; =0x037FC50C
bl sub_020056C4
mov r4, #0
b _020046C8
_020046C0:
mov r0, r4
bl sub_02004478
_020046C8:
ldr r0, [sp, #4]
cmp r0, #0
bne _020046C0
mov r0, r5
bl sub_02005EFC
add sp, sp, #0x34
ldmia sp!, {r4, r5, lr}
bx lr
.align 2, 0
_020046E8: .word 0x03807680
_020046EC: .word 0x000082EA
_020046F0: .word 0x037FC50C
arm_func_end sub_02004650
arm_func_start sub_020046F4
sub_020046F4: ; 0x020046F4
ldr r2, [r0]
mov r1, #0
str r1, [r0]
ldr ip, _02004710 ; =sub_037FC36C
mov r0, r2
str r1, [r2, #0x94]
bx ip
.align 2, 0
_02004710: .word sub_037FC36C
arm_func_end sub_020046F4
arm_func_start sub_02004714
sub_02004714: ; 0x02004714
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_02005EE8
ldr r1, _0200473C ; =0x03807680
ldr r4, [r1, #0x30]
str r5, [r1, #0x30]
bl sub_02005EFC
mov r0, r4
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0200473C: .word 0x03807680
arm_func_end sub_02004714
arm_func_start sub_02004740
sub_02004740: ; 0x02004740
stmdb sp!, {r4, lr}
bl sub_02005EE8
ldr r2, _02004774 ; =0x03807680
mvn r1, #0
ldr r3, [r2, #4]
cmp r3, r1
addlo r1, r3, #1
strlo r1, [r2, #4]
movlo r4, r3
bl sub_02005EFC
mov r0, r4
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02004774: .word 0x03807680
arm_func_end sub_02004740
arm_func_start sub_02004778
sub_02004778: ; 0x02004778
stmdb sp!, {r4, lr}
bl sub_02005EE8
ldr r1, _020047AC ; =0x03807680
mov r4, #0
ldr r3, [r1, #4]
cmp r3, #0
subne r2, r3, #1
strne r2, [r1, #4]
movne r4, r3
bl sub_02005EFC
mov r0, r4
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020047AC: .word 0x03807680
arm_func_end sub_02004778
arm_func_start sub_020047B0
sub_020047B0: ; 0x020047B0
add r1, r1, #4
str r1, [r0, #0x40]
str r2, [r0, #0x44]
sub r2, r2, #0x40
tst r2, #4
bne _020047CC
b _020047D0
_020047CC:
sub r2, r2, #4
_020047D0:
str r2, [r0, #0x38]
ands r1, r1, #1
bne _020047E0
b _020047E4
_020047E0:
mov r1, #0x3f
_020047E4:
beq _020047EC
b _020047F0
_020047EC:
mov r1, #0x1f
_020047F0:
str r1, [r0]
mov r1, #0
str r1, [r0, #4]
str r1, [r0, #8]
str r1, [r0, #0xc]
str r1, [r0, #0x10]
str r1, [r0, #0x14]
str r1, [r0, #0x18]
str r1, [r0, #0x1c]
str r1, [r0, #0x20]
str r1, [r0, #0x24]
str r1, [r0, #0x28]
str r1, [r0, #0x2c]
str r1, [r0, #0x30]
str r1, [r0, #0x34]
str r1, [r0, #0x3c]
bx lr
arm_func_end sub_020047B0
arm_func_start sub_02004834
sub_02004834: ; 0x02004834
add r1, r0, #0
mrs r2, cpsr
str r2, [r1], #4
mov r0, #0xd3
msr cpsr_c, r0
str sp, [r1, #0x40]
msr cpsr_c, r2
mov r0, #1
stmia r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr}
add r0, pc, #0x8 ; =sub_02004868
str r0, [r1, #0x3c]
mov r0, #0
bx lr
arm_func_end sub_02004834
arm_func_start sub_02004868
sub_02004868: ; 0x02004868
mrs r1, cpsr
bic r1, r1, #0x1f
orr r1, r1, #0xd3
msr cpsr_c, r1
ldr r1, [r0], #4
msr spsr_fsxc, r1
ldr sp, [r0, #0x40]
ldr lr, [r0, #0x3c]
ldmia r0, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^
mov r0, r0
subs pc, lr, #4
arm_func_end sub_02004868
arm_func_start sub_02004894
sub_02004894: ; 0x02004894
mov r3, #0
str r3, [r0, #4]
str r3, [r0]
str r3, [r0, #0xc]
str r3, [r0, #8]
str r1, [r0, #0x10]
str r2, [r0, #0x14]
str r3, [r0, #0x18]
str r3, [r0, #0x1c]
bx lr
arm_func_end sub_02004894
arm_func_start sub_020048BC
sub_020048BC: ; 0x020048BC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r2
mov r6, r0
mov r5, r1
bl sub_02005EE8
mov r4, r0
and r7, r7, #1
b _020048FC
_020048DC:
cmp r7, #0
bne _020048F4
mov r0, r4
bl sub_02005EFC
mov r0, #0
b _02004940
_020048F4:
mov r0, r6
bl sub_02004478
_020048FC:
ldr r2, [r6, #0x1c]
ldr r1, [r6, #0x14]
cmp r1, r2
ble _020048DC
ldr r0, [r6, #0x18]
add r0, r0, r2
bl sub_0200EDB0
ldr r2, [r6, #0x10]
add r0, r6, #8
str r5, [r2, r1, lsl #2]
ldr r1, [r6, #0x1c]
add r1, r1, #1
str r1, [r6, #0x1c]
bl sub_020044CC
mov r0, r4
bl sub_02005EFC
mov r0, #1
_02004940:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_020048BC
arm_func_start sub_02004948
sub_02004948: ; 0x02004948
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r2
mov r6, r0
mov r5, r1
bl sub_02005EE8
mov r4, r0
and r7, r7, #1
b _02004988
_02004968:
cmp r7, #0
bne _02004980
mov r0, r4
bl sub_02005EFC
mov r0, #0
b _020049DC
_02004980:
add r0, r6, #8
bl sub_02004478
_02004988:
ldr r0, [r6, #0x1c]
cmp r0, #0
beq _02004968
cmp r5, #0
ldrne r1, [r6, #0x10]
ldrne r0, [r6, #0x18]
ldrne r0, [r1, r0, lsl #2]
strne r0, [r5]
ldr r0, [r6, #0x18]
ldr r1, [r6, #0x14]
add r0, r0, #1
bl sub_0200EDB0
str r1, [r6, #0x18]
ldr r1, [r6, #0x1c]
mov r0, r6
sub r1, r1, #1
str r1, [r6, #0x1c]
bl sub_020044CC
mov r0, r4
bl sub_02005EFC
mov r0, #1
_020049DC:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_02004948
arm_func_start sub_020049E4
sub_020049E4: ; 0x020049E4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r2
mov r7, r0
mov r4, r1
bl sub_02005EE8
mov r5, r0
and r6, r6, #1
b _02004A24
_02004A04:
cmp r6, #0
bne _02004A1C
mov r0, r5
bl sub_02005EFC
mov r0, #0
b _02004A50
_02004A1C:
add r0, r7, #8
bl sub_02004478
_02004A24:
ldr r0, [r7, #0x1c]
cmp r0, #0
beq _02004A04
cmp r4, #0
ldrne r1, [r7, #0x10]
ldrne r0, [r7, #0x18]
ldrne r0, [r1, r0, lsl #2]
strne r0, [r4]
mov r0, r5
bl sub_02005EFC
mov r0, #1
_02004A50:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_020049E4
arm_func_start sub_02004A58
sub_02004A58: ; 0x02004A58
mov r1, #0
str r1, [r0, #4]
str r1, [r0]
str r1, [r0, #8]
str r1, [r0, #0xc]
bx lr
arm_func_end sub_02004A58
arm_func_start sub_02004A70
sub_02004A70: ; 0x02004A70
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r0
bl sub_02005EE8
ldr r1, _02004AF0 ; =0x038076A4
mov r4, r0
ldr r7, [r1, #4]
mov r6, #0
_02004A8C:
ldr r0, [r5, #8]
cmp r0, #0
bne _02004AB8
str r7, [r5, #8]
ldr r1, [r5, #0xc]
mov r0, r7
add r2, r1, #1
mov r1, r5
str r2, [r5, #0xc]
bl sub_02004B8C
b _02004AE0
_02004AB8:
cmp r0, r7
ldreq r0, [r5, #0xc]
addeq r0, r0, #1
streq r0, [r5, #0xc]
beq _02004AE0
str r5, [r7, #0x68]
mov r0, r5
bl sub_02004478
str r6, [r7, #0x68]
b _02004A8C
_02004AE0:
mov r0, r4
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02004AF0: .word 0x038076A4
arm_func_end sub_02004A70
arm_func_start sub_02004AF4
sub_02004AF4: ; 0x02004AF4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_02005EE8
ldr r1, _02004B50 ; =0x038076A4
mov r4, r0
ldr r0, [r1, #4]
ldr r1, [r5, #8]
cmp r1, r0
bne _02004B40
ldr r1, [r5, #0xc]
subs r1, r1, #1
str r1, [r5, #0xc]
bne _02004B40
mov r1, r5
bl sub_02004BB0
mov r1, #0
mov r0, r5
str r1, [r5, #8]
bl sub_020044CC
_02004B40:
mov r0, r4
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02004B50: .word 0x038076A4
arm_func_end sub_02004AF4
arm_func_start sub_02004B54
sub_02004B54: ; 0x02004B54
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, #0
b _02004B78
_02004B64:
add r0, r5, #0x6c
bl sub_02003FA4
str r4, [r0, #0xc]
str r4, [r0, #8]
bl sub_020044CC
_02004B78:
ldr r0, [r5, #0x6c]
cmp r0, #0
bne _02004B64
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02004B54
arm_func_start sub_02004B8C
sub_02004B8C: ; 0x02004B8C
ldr r2, [r0, #0x70]
cmp r2, #0
streq r1, [r0, #0x6c]
strne r1, [r2, #0x10]
str r2, [r1, #0x14]
mov r2, #0
str r2, [r1, #0x10]
str r1, [r0, #0x70]
bx lr
arm_func_end sub_02004B8C
arm_func_start sub_02004BB0
sub_02004BB0: ; 0x02004BB0
ldr r2, [r1, #0x10]
ldr r1, [r1, #0x14]
cmp r2, #0
streq r1, [r0, #0x70]
strne r1, [r2, #0x14]
cmp r1, #0
streq r2, [r0, #0x6c]
strne r2, [r1, #0x10]
bx lr
arm_func_end sub_02004BB0
arm_func_start sub_02004BD4
sub_02004BD4: ; 0x02004BD4
stmdb sp!, {r3, lr}
bl sub_02004C04
bl sub_0200649C
bl sub_02003B80
bl sub_02003980
bl sub_02005310
bl sub_02005534
bl sub_0200414C
bl sub_02005F64
bl sub_0200E570
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_02004BD4
arm_func_start sub_02004C04
sub_02004C04: ; 0x02004C04
stmdb sp!, {r3, lr}
ldr r1, _02004C3C ; =0x038077FC
ldr r0, [r1]
cmp r0, #0
bne _02004C34
mov r0, #1
str r0, [r1]
bl sub_02004C40
mov r0, #7
bl sub_02004C40
mov r0, #8
bl sub_02004C40
_02004C34:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02004C3C: .word 0x038077FC
arm_func_end sub_02004C04
arm_func_start sub_02004C40
sub_02004C40: ; 0x02004C40
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02004CA4
mov r1, r4, lsl #2
add r1, r1, #0x2700000
add r1, r1, #0xff000
str r0, [r1, #0xdc4]
mov r0, r4
bl sub_02004D20
mov r1, r4, lsl #2
add r1, r1, #0x2700000
add r1, r1, #0xff000
str r0, [r1, #0xda0]
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02004C40
arm_func_start sub_02004C7C
sub_02004C7C: ; 0x02004C7C
mov r0, r0, lsl #2
add r0, r0, #0x2700000
add r0, r0, #0xff000
ldr r0, [r0, #0xdc4]
bx lr
arm_func_end sub_02004C7C
arm_func_start sub_02004C90
sub_02004C90: ; 0x02004C90
mov r0, r0, lsl #2
add r0, r0, #0x2700000
add r0, r0, #0xff000
ldr r0, [r0, #0xda0]
bx lr
arm_func_end sub_02004C90
arm_func_start sub_02004CA4
sub_02004CA4: ; 0x02004CA4
cmp r0, #1
beq _02004CC0
cmp r0, #7
beq _02004CC8
cmp r0, #8
beq _02004CD0
b _02004D04
_02004CC0:
ldr r0, _02004D0C ; =0x027FF000
bx lr
_02004CC8:
mov r0, #0x3800000
bx lr
_02004CD0:
ldr r2, _02004D10 ; =0x00000400
ldr r0, _02004D14 ; =0x0380FF80
ldr r1, _02004D18 ; =0x0380B488
sub r2, r0, r2
mov r0, #0x3800000
cmp r1, #0x3800000
movhi r0, r1
ldr r1, _02004D1C ; =0x00000400
cmp r1, #0
bxeq lr
sublt r0, r0, r1
subge r0, r2, r1
bx lr
_02004D04:
mov r0, #0
bx lr
.align 2, 0
_02004D0C: .word 0x027FF000
_02004D10: .word 0x00000400
_02004D14: .word 0x0380FF80
_02004D18: .word 0x0380B488
_02004D1C: .word 0x00000400
arm_func_end sub_02004CA4
arm_func_start sub_02004D20
sub_02004D20: ; 0x02004D20
cmp r0, #1
beq _02004D3C
cmp r0, #7
beq _02004D44
cmp r0, #8
beq _02004D54
b _02004D68
_02004D3C:
ldr r0, _02004D70 ; =0x027F91E0
bx lr
_02004D44:
ldr r0, _02004D74 ; =0x0380B488
cmp r0, #0x3800000
movhi r0, #0x3800000
bx lr
_02004D54:
ldr r1, _02004D74 ; =0x0380B488
mov r0, #0x3800000
cmp r1, #0x3800000
movhi r0, r1
bx lr
_02004D68:
mov r0, #0
bx lr
.align 2, 0
_02004D70: .word 0x027F91E0
_02004D74: .word 0x0380B488
arm_func_end sub_02004D20
arm_func_start sub_02004D78
sub_02004D78: ; 0x02004D78
mov r0, r0, lsl #2
add r0, r0, #0x2700000
add r0, r0, #0xff000
str r1, [r0, #0xda0]
bx lr
arm_func_end sub_02004D78
arm_func_start sub_02004D8C
sub_02004D8C: ; 0x02004D8C
ldr r3, [r1, #4]
cmp r3, #0
ldrne r2, [r1]
strne r2, [r3]
ldr r2, [r1]
cmp r2, #0
ldreq r0, [r1, #4]
ldrne r1, [r1, #4]
strne r1, [r2, #4]
bx lr
arm_func_end sub_02004D8C
arm_func_start sub_02004DB4
sub_02004DB4: ; 0x02004DB4
stmdb sp!, {r3, lr}
mov lr, r0
mov ip, #0
b _02004DD4
_02004DC4:
cmp r1, lr
bls _02004DDC
mov ip, lr
ldr lr, [lr, #4]
_02004DD4:
cmp lr, #0
bne _02004DC4
_02004DDC:
stmia r1, {ip, lr}
cmp lr, #0
beq _02004E18
str r1, [lr]
ldr r3, [r1, #8]
add r2, r1, r3
cmp r2, lr
bne _02004E18
ldr r2, [lr, #8]
add r2, r3, r2
str r2, [r1, #8]
ldr lr, [lr, #4]
str lr, [r1, #4]
cmp lr, #0
strne r1, [lr]
_02004E18:
cmp ip, #0
beq _02004E50
str r1, [ip, #4]
ldr r2, [ip, #8]
add r3, ip, r2
cmp r3, r1
bne _02004E54
ldr r1, [r1, #8]
cmp lr, #0
add r1, r2, r1
str r1, [ip, #8]
str lr, [ip, #4]
strne ip, [lr]
b _02004E54
_02004E50:
mov r0, r1
_02004E54:
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_02004DB4
arm_func_start sub_02004E5C
sub_02004E5C: ; 0x02004E5C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r0
mov r5, r1
mov r7, r2
bl sub_02005EE8
ldr r1, _02004F68 ; =0x03807800
mov r6, r0
ldr r1, [r1, r4, lsl #2]
cmp r1, #0
bne _02004E90
bl sub_02005EFC
mov r0, #0
b _02004F60
_02004E90:
cmp r5, #0
ldrlt r5, [r1]
ldr r1, [r1, #0x10]
mov r0, #0xc
mla r4, r5, r0, r1
ldr r0, [r4, #4]
add r1, r7, #0x3f
mov r5, r0
bic r7, r1, #0x1f
b _02004EC8
_02004EB8:
ldr r1, [r5, #8]
cmp r7, r1
ble _02004ED0
ldr r5, [r5, #4]
_02004EC8:
cmp r5, #0
bne _02004EB8
_02004ED0:
cmp r5, #0
bne _02004EE8
mov r0, r6
bl sub_02005EFC
mov r0, #0
b _02004F60
_02004EE8:
ldr r1, [r5, #8]
sub r1, r1, r7
cmp r1, #0x40
bhs _02004F08
mov r1, r5
bl sub_02004D8C
str r0, [r4, #4]
b _02004F3C
_02004F08:
str r7, [r5, #8]
add r2, r5, r7
str r1, [r2, #8]
ldr r0, [r5]
str r0, [r5, r7]
ldr r0, [r5, #4]
str r0, [r2, #4]
cmp r0, #0
strne r2, [r0]
ldr r0, [r2]
cmp r0, #0
strne r2, [r0, #4]
streq r2, [r4, #4]
_02004F3C:
ldr r1, [r4, #8]
mov r0, #0
stmia r5, {r0, r1}
cmp r1, #0
strne r5, [r1]
mov r0, r6
str r5, [r4, #8]
bl sub_02005EFC
add r0, r5, #0x20
_02004F60:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02004F68: .word 0x03807800
arm_func_end sub_02004E5C
arm_func_start sub_02004F6C
sub_02004F6C: ; 0x02004F6C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl sub_02005EE8
ldr r1, _02004FD4 ; =0x03807800
mov r4, r0
ldr r0, [r1, r7, lsl #2]
cmp r6, #0
ldrlt r6, [r0]
ldr r1, [r0, #0x10]
mov r0, #0xc
mla r7, r6, r0, r1
sub r5, r5, #0x20
ldr r0, [r7, #8]
mov r1, r5
bl sub_02004D8C
str r0, [r7, #8]
ldr r0, [r7, #4]
mov r1, r5
bl sub_02004DB4
str r0, [r7, #4]
mov r0, r4
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02004FD4: .word 0x03807800
arm_func_end sub_02004F6C
arm_func_start sub_02004FD8
sub_02004FD8: ; 0x02004FD8
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r5, r1
bl sub_02005EE8
ldr r1, _02005008 ; =0x03807800
ldr r1, [r1, r4, lsl #2]
ldr r4, [r1]
str r5, [r1]
bl sub_02005EFC
mov r0, r4
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02005008: .word 0x03807800
arm_func_end sub_02004FD8
arm_func_start sub_0200500C
sub_0200500C: ; 0x0200500C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r5, r1
mov r4, r2
mov r6, r3
bl sub_02005EE8
ldr r2, _020050B0 ; =0x03807800
mov r1, #0xc
str r5, [r2, r7, lsl #2]
add r2, r5, #0x14
str r2, [r5, #0x10]
mov r7, #0
mul r1, r6, r1
str r6, [r5, #4]
mvn lr, #0
mov ip, r7
mov r2, #0xc
b _02005070
_02005054:
mul r3, r7, r2
ldr r6, [r5, #0x10]
add r7, r7, #1
str lr, [r6, r3]
add r3, r6, r3
str ip, [r3, #8]
str ip, [r3, #4]
_02005070:
ldr r3, [r5, #4]
cmp r7, r3
blt _02005054
mvn r2, #0
str r2, [r5]
ldr r3, [r5, #0x10]
bic r2, r4, #0x1f
add r1, r3, r1
add r1, r1, #0x1f
bic r1, r1, #0x1f
str r1, [r5, #8]
str r2, [r5, #0xc]
bl sub_02005EFC
ldr r0, [r5, #8]
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_020050B0: .word 0x03807800
arm_func_end sub_0200500C
arm_func_start sub_020050B4
sub_020050B4: ; 0x020050B4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r0
mov r6, r1
mov r5, r2
bl sub_02005EE8
ldr r2, _02005150 ; =0x03807800
add r1, r6, #0x1f
ldr lr, [r2, r4, lsl #2]
bic r6, r1, #0x1f
ldr r7, [lr, #4]
bic r5, r5, #0x1f
mov r4, #0
mov r1, #0xc
b _02005138
_020050EC:
mul r3, r4, r1
ldr ip, [lr, #0x10]
ldr r2, [ip, r3]
add r3, ip, r3
cmp r2, #0
bge _02005134
sub r1, r5, r6
str r1, [r3]
mov r2, #0
str r2, [r6]
str r2, [r6, #4]
ldr r1, [r3]
str r1, [r6, #8]
str r6, [r3, #4]
str r2, [r3, #8]
bl sub_02005EFC
mov r0, r4
b _02005148
_02005134:
add r4, r4, #1
_02005138:
cmp r4, r7
blt _020050EC
bl sub_02005EFC
mvn r0, #0
_02005148:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02005150: .word 0x03807800
arm_func_end sub_020050B4
arm_func_start sub_02005154
sub_02005154: ; 0x02005154
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r4, #0
mov r8, r0
mov r7, r1
mov r5, r4
sub r6, r4, #1
bl sub_02005EE8
ldr r1, _020052F0 ; =0x03807800
mvn r2, #0
ldr r1, [r1, r8, lsl #2]
cmp r7, r2
ldr ip, [r1, #0x10]
ldreq r7, [r1]
cmp ip, #0
beq _020052E0
cmp r7, #0
blt _020052E0
ldr r2, [r1, #4]
cmp r7, r2
bge _020052E0
mov r2, #0xc
mul r3, r7, r2
ldr r2, [ip, r3]
add r7, ip, r3
cmp r2, #0
blt _020052E0
ldr ip, [r7, #8]
cmp ip, #0
ldrne r3, [ip]
cmpne r3, #0
bne _020052E0
b _02005234
_020051D4:
ldr r3, [r1, #8]
cmp r3, ip
bhi _020052E0
ldr r3, [r1, #0xc]
cmp ip, r3
bhs _020052E0
tst ip, #0x1f
bne _020052E0
ldr lr, [ip, #4]
cmp lr, #0
ldrne r3, [lr]
cmpne r3, ip
bne _020052E0
ldr r3, [ip, #8]
cmp r3, #0x40
blo _020052E0
tst r3, #0x1f
bne _020052E0
add r4, r4, r3
cmp r4, #0
ble _020052E0
cmp r4, r2
bgt _020052E0
mov ip, lr
_02005234:
cmp ip, #0
bne _020051D4
ldr lr, [r7, #4]
cmp lr, #0
ldrne r3, [lr]
cmpne r3, #0
bne _020052E0
b _020052D0
_02005254:
ldr r3, [r1, #8]
cmp r3, lr
bhi _020052E0
ldr r3, [r1, #0xc]
cmp lr, r3
bhs _020052E0
tst lr, #0x1f
bne _020052E0
ldr r7, [lr, #4]
cmp r7, #0
ldrne r3, [r7]
cmpne r3, lr
bne _020052E0
ldr ip, [lr, #8]
cmp ip, #0x40
blo _020052E0
tst ip, #0x1f
bne _020052E0
cmp r7, #0
beq _020052B0
add r3, lr, ip
cmp r3, r7
bhs _020052E0
_020052B0:
add r4, r4, ip
sub r3, ip, #0x20
cmp r4, #0
add r5, r5, r3
ble _020052E0
cmp r4, r2
bgt _020052E0
mov lr, r7
_020052D0:
cmp lr, #0
bne _02005254
cmp r4, r2
moveq r6, r5
_020052E0:
bl sub_02005EFC
mov r0, r6
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_020052F0: .word 0x03807800
arm_func_end sub_02005154
arm_func_start sub_020052F4
sub_020052F4: ; 0x020052F4
ldr r1, _0200530C ; =0x03807824
mov r2, #1
ldrh r3, [r1]
orr r0, r3, r2, lsl r0
strh r0, [r1]
bx lr
.align 2, 0
_0200530C: .word 0x03807824
arm_func_end sub_020052F4
arm_func_start sub_02005310
sub_02005310: ; 0x02005310
stmdb sp!, {r3, lr}
ldr r1, _02005380 ; =0x03807828
ldrh r0, [r1]
cmp r0, #0
bne _02005378
mov r2, #1
mov r0, #0
strh r2, [r1]
bl sub_020052F4
ldr r0, _02005380 ; =0x03807828
mov r2, #0
str r2, [r0, #8]
ldr r3, _02005384 ; =0x04000102
str r2, [r0, #0xc]
strh r2, [r3]
ldr r1, _02005388 ; =0x037FD1B4
strh r2, [r3, #-2]
mov r2, #0xc1
mov r0, #8
strh r2, [r3]
bl sub_020039A4
mov r0, #8
bl sub_02003AD8
ldr r0, _02005380 ; =0x03807828
mov r1, #0
str r1, [r0, #4]
_02005378:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02005380: .word 0x03807828
_02005384: .word 0x04000102
_02005388: .word 0x037FD1B4
arm_func_end sub_02005310
arm_func_start sub_0200538C
sub_0200538C: ; 0x0200538C
ldr r0, _02005398 ; =0x03807828
ldrh r0, [r0]
bx lr
.align 2, 0
_02005398: .word 0x03807828
arm_func_end sub_0200538C
arm_func_start sub_0200539C
sub_0200539C: ; 0x0200539C
ldr r0, _020053F4 ; =0x03807828
mov r3, #0
ldr r2, [r0, #8]
ldr r1, [r0, #0xc]
adds r2, r2, #1
str r2, [r0, #8]
adc r1, r1, #0
str r1, [r0, #0xc]
ldr r1, [r0, #4]
cmp r1, #0
beq _020053E0
ldr r2, _020053F8 ; =0x04000102
mov r1, #0xc1
strh r3, [r2]
strh r3, [r2, #-2]
strh r1, [r2]
str r3, [r0, #4]
_020053E0:
ldr ip, _020053FC ; =sub_037FB858
mov r0, #0
ldr r1, _02005400 ; =0x037FD1B4
mov r2, r0
bx ip
.align 2, 0
_020053F4: .word 0x03807828
_020053F8: .word 0x04000102
_020053FC: .word sub_037FB858
_02005400: .word 0x037FD1B4
arm_func_end sub_0200539C
arm_func_start sub_02005404
sub_02005404: ; 0x02005404
stmdb sp!, {lr}
sub sp, sp, #0xc
bl sub_02005EE8
ldr lr, _0200549C ; =sub_04000100
ldr r1, _020054A0 ; =0x03807828
ldrh r3, [lr]
ldr r2, _020054A4 ; =0x0000FFFF
strh r3, [sp]
ldr ip, [r1, #8]
ldr r3, [r1, #0xc]
sub r1, r2, #0x10000
and ip, ip, r1
and r1, r3, r2
str ip, [sp, #4]
str r1, [sp, #8]
ldr r1, [lr, #0x114]
tst r1, #8
beq _02005470
ldrh r1, [sp]
tst r1, #0x8000
bne _02005470
ldr r2, [sp, #4]
ldr r1, [sp, #8]
adds r2, r2, #1
adc r1, r1, #0
str r2, [sp, #4]
str r1, [sp, #8]
_02005470:
bl sub_02005EFC
ldr r2, [sp, #4]
ldr r1, [sp, #8]
ldrh r0, [sp]
mov r1, r1, lsl #0x10
orr r1, r1, r2, lsr #16
orr r1, r1, r0, asr #31
orr r0, r0, r2, lsl #16
add sp, sp, #0xc
ldmia sp!, {lr}
bx lr
.align 2, 0
_0200549C: .word sub_04000100
_020054A0: .word 0x03807828
_020054A4: .word 0x0000FFFF
arm_func_end sub_02005404
arm_func_start sub_020054A8
sub_020054A8: ; 0x020054A8
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
bl sub_02005404
ldr r3, _02005524 ; =0x04000106
mov r2, #0
strh r2, [r3]
ldr ip, [r4, #0xc]
ldr r3, [r4, #0x10]
subs r5, ip, r0
sbc r4, r3, r1
ldr r1, _02005528 ; =0x037FD648
mov r0, #1
bl sub_02003A40
subs r0, r5, #0
mov r3, #0
sbcs r0, r4, #0
ldrlt r3, _0200552C ; =0x0000FFFE
blt _02005504
subs r0, r5, #0x10000
sbcs r0, r4, r3
mvnlt r0, r5
movlt r0, r0, lsl #0x10
movlt r3, r0, lsr #0x10
_02005504:
ldr r2, _02005530 ; =0x04000104
mov r1, #0xc1
strh r3, [r2]
mov r0, #0x10
strh r1, [r2, #2]
bl sub_02003AD8
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02005524: .word 0x04000106
_02005528: .word 0x037FD648
_0200552C: .word 0x0000FFFE
_02005530: .word 0x04000104
arm_func_end sub_020054A8
arm_func_start sub_02005534
sub_02005534: ; 0x02005534
stmdb sp!, {r3, lr}
ldr r1, _02005574 ; =0x03807838
ldrh r0, [r1]
cmp r0, #0
bne _0200556C
mov r0, #1
strh r0, [r1]
bl sub_020052F4
ldr r1, _02005574 ; =0x03807838
mov r2, #0
str r2, [r1, #4]
mov r0, #0x10
str r2, [r1, #8]
bl sub_02003B10
_0200556C:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02005574: .word 0x03807838
arm_func_end sub_02005534
arm_func_start sub_02005578
sub_02005578: ; 0x02005578
ldr r0, _02005584 ; =0x03807838
ldrh r0, [r0]
bx lr
.align 2, 0
_02005584: .word 0x03807838
arm_func_end sub_02005578
arm_func_start sub_02005588
sub_02005588: ; 0x02005588
mov r1, #0
str r1, [r0]
str r1, [r0, #8]
bx lr
arm_func_end sub_02005588
arm_func_start sub_02005598
sub_02005598: ; 0x02005598
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldr r0, [r8, #0x20]
ldr r3, [r8, #0x1c]
cmp r0, #0
mov r7, r1
mov r6, r2
cmpeq r3, #0
beq _0200560C
bl sub_02005404
ldr r6, [r8, #0x28]
ldr r7, [r8, #0x24]
cmp r6, r1
cmpeq r7, r0
bhs _0200560C
ldr r5, [r8, #0x1c]
ldr r4, [r8, #0x20]
subs r0, r0, r7
mov r2, r5
mov r3, r4
sbc r1, r1, r6
bl sub_0200ED68
adds r2, r0, #1
adc r0, r1, #0
umull r3, r1, r5, r2
mla r1, r5, r0, r1
mla r1, r4, r2, r1
adds r7, r7, r3
adc r6, r6, r1
_0200560C:
str r7, [r8, #0xc]
ldr r0, _020056C0 ; =0x03807838
str r6, [r8, #0x10]
mov r2, #0
ldr r5, [r0, #4]
mov r1, r2
b _0200567C
_02005628:
ldr r3, [r5, #0xc]
ldr r0, [r5, #0x10]
subs r4, r7, r3
sbc r3, r6, r0
subs r0, r4, r1
sbcs r0, r3, r2
bge _02005678
ldr r0, [r5, #0x14]
str r0, [r8, #0x14]
str r8, [r5, #0x14]
str r5, [r8, #0x18]
ldr r0, [r8, #0x14]
cmp r0, #0
strne r8, [r0, #0x18]
bne _020056B8
ldr r1, _020056C0 ; =0x03807838
mov r0, r8
str r8, [r1, #4]
bl sub_020054A8
b _020056B8
_02005678:
ldr r5, [r5, #0x18]
_0200567C:
cmp r5, #0
bne _02005628
ldr r1, _020056C0 ; =0x03807838
mov r0, #0
str r0, [r8, #0x18]
ldr r0, [r1, #8]
str r8, [r1, #8]
str r0, [r8, #0x14]
cmp r0, #0
strne r8, [r0, #0x18]
bne _020056B8
str r8, [r1, #8]
mov r0, r8
str r8, [r1, #4]
bl sub_020054A8
_020056B8:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_020056C0: .word 0x03807838
arm_func_end sub_02005598
arm_func_start sub_020056C4
sub_020056C4: ; 0x020056C4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
movs r6, r0
mov r5, r1
mov r4, r2
mov r7, r3
beq _020056E8
ldr r0, [r6]
cmp r0, #0
beq _020056EC
_020056E8:
bl sub_02006058
_020056EC:
bl sub_02005EE8
mov r1, #0
str r1, [r6, #0x1c]
str r1, [r6, #0x20]
str r7, [r6]
ldr r1, [sp, #0x18]
mov r7, r0
str r1, [r6, #4]
bl sub_02005404
adds r3, r5, r0
adc r2, r4, r1
mov r0, r6
mov r1, r3
bl sub_02005598
mov r0, r7
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_020056C4
arm_func_start sub_02005734
sub_02005734: ; 0x02005734
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r5, [sp, #0x18]
movs r4, r0
mov r8, r1
mov r7, r2
mov r6, r3
beq _0200575C
ldr r0, [r4]
cmp r0, #0
beq _02005760
_0200575C:
bl sub_02006058
_02005760:
bl sub_02005EE8
str r6, [r4, #0x1c]
str r5, [r4, #0x20]
str r8, [r4, #0x24]
mov r1, #0
mov r5, r0
ldr r0, [sp, #0x1c]
str r7, [r4, #0x28]
ldr r3, [sp, #0x20]
str r0, [r4]
mov r0, r4
mov r2, r1
str r3, [r4, #4]
bl sub_02005598
mov r0, r5
bl sub_02005EFC
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
arm_func_end sub_02005734
arm_func_start sub_020057A8
sub_020057A8: ; 0x020057A8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_02005EE8
ldr r1, [r5]
mov r4, r0
cmp r1, #0
bne _020057CC
bl sub_02005EFC
b _02005824
_020057CC:
ldr r0, [r5, #0x18]
cmp r0, #0
ldreq r2, [r5, #0x14]
ldreq r1, _0200582C ; =0x03807838
streq r2, [r1, #8]
ldrne r1, [r5, #0x14]
strne r1, [r0, #0x14]
ldr r1, [r5, #0x14]
cmp r1, #0
strne r0, [r1, #0x18]
bne _0200580C
ldr r1, _0200582C ; =0x03807838
cmp r0, #0
str r0, [r1, #4]
beq _0200580C
bl sub_020054A8
_0200580C:
mov r1, #0
str r1, [r5]
str r1, [r5, #0x1c]
mov r0, r4
str r1, [r5, #0x20]
bl sub_02005EFC
_02005824:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0200582C: .word 0x03807838
arm_func_end sub_020057A8
arm_func_start sub_02005830
sub_02005830: ; 0x02005830
stmdb sp!, {r0, lr}
bl sub_02005840
ldmia sp!, {r0, lr}
bx lr
arm_func_end sub_02005830
arm_func_start sub_02005840
sub_02005840: ; 0x02005840
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02005928 ; =0x04000106
mov r2, #0
mov r0, #0x10
strh r2, [r1]
bl sub_02003B10
ldr r1, _0200592C ; =0x0380FFF8
ldr r0, [r1]
orr r0, r0, #0x10
str r0, [r1]
bl sub_02005404
ldr r2, _02005930 ; =0x03807838
ldr r4, [r2, #4]
cmp r4, #0
beq _02005920
ldr r3, [r4, #0x10]
ldr ip, [r4, #0xc]
cmp r1, r3
cmpeq r0, ip
bhs _0200589C
mov r0, r4
bl sub_020054A8
b _02005920
_0200589C:
ldr r1, [r4, #0x18]
mov r0, #0
str r1, [r2, #4]
cmp r1, #0
streq r0, [r2, #8]
strne r0, [r1, #0x14]
ldr r0, [r4, #0x20]
ldr r1, [r4, #0x1c]
cmp r0, #0
ldr r5, [r4]
mov r0, #0
cmpeq r1, #0
streq r0, [r4]
cmp r5, #0
beq _020058E4
ldr r0, [r4, #4]
mov lr, pc
bx r5
_020058E4:
ldr r0, [r4, #0x20]
ldr r1, [r4, #0x1c]
cmp r0, #0
cmpeq r1, #0
mov r1, #0
beq _0200590C
mov r0, r4
mov r2, r1
str r5, [r4]
bl sub_02005598
_0200590C:
ldr r0, _02005930 ; =0x03807838
ldr r0, [r0, #4]
cmp r0, #0
beq _02005920
bl sub_020054A8
_02005920:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02005928: .word 0x04000106
_0200592C: .word 0x0380FFF8
_02005930: .word 0x03807838
arm_func_end sub_02005840
arm_func_start sub_02005934
sub_02005934: ; 0x02005934
stmdb sp!, {r3, lr}
ldr r1, _0200597C ; =0x03807844
ldrh r0, [r1]
cmp r0, #0
bne _02005974
mov r0, #1
strh r0, [r1]
mov r2, #0
str r2, [r1, #0xc]
mov r0, #4
str r2, [r1, #0x10]
bl sub_02003B10
ldr r0, _0200597C ; =0x03807844
mov r1, #0
str r1, [r0, #8]
str r1, [r0, #4]
_02005974:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200597C: .word 0x03807844
arm_func_end sub_02005934
arm_func_start sub_02005980
sub_02005980: ; 0x02005980
ldr r0, _0200598C ; =0x03807844
ldrh r0, [r0]
bx lr
.align 2, 0
_0200598C: .word 0x03807844
arm_func_end sub_02005980
arm_func_start sub_02005990
sub_02005990: ; 0x02005990
stmdb sp!, {r3, lr}
ldr r1, _02005A30 ; =0x03807844
ldr r3, [r1, #0xc]
b _020059F4
_020059A0:
ldr r2, [r0, #0xc]
ldr r1, [r3, #0xc]
cmp r1, r2
blo _020059F0
bne _020059C4
ldrsh r2, [r3, #0x10]
ldrsh r1, [r0, #0x10]
cmp r2, r1
ble _020059F0
_020059C4:
ldr r1, [r3, #0x14]
str r1, [r0, #0x14]
str r3, [r0, #0x18]
str r0, [r3, #0x14]
cmp r1, #0
strne r0, [r1, #0x18]
bne _02005A28
ldr r1, _02005A30 ; =0x03807844
str r0, [r1, #0xc]
bl sub_02005BA0
b _02005A28
_020059F0:
ldr r3, [r3, #0x18]
_020059F4:
cmp r3, #0
bne _020059A0
ldr r1, _02005A30 ; =0x03807844
mov r2, #0
ldr r3, [r1, #0x10]
str r3, [r0, #0x14]
str r2, [r0, #0x18]
str r0, [r1, #0x10]
cmp r3, #0
strne r0, [r3, #0x18]
bne _02005A28
str r0, [r1, #0xc]
bl sub_02005BA0
_02005A28:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02005A30: .word 0x03807844
arm_func_end sub_02005990
arm_func_start sub_02005A34
sub_02005A34: ; 0x02005A34
cmp r0, #0
bxeq lr
ldr r2, [r0, #0x18]
ldr r1, [r0, #0x14]
cmp r2, #0
ldreq r0, _02005A68 ; =0x03807844
strne r1, [r2, #0x14]
streq r1, [r0, #0x10]
cmp r1, #0
ldreq r0, _02005A68 ; =0x03807844
strne r2, [r1, #0x18]
streq r2, [r0, #0xc]
bx lr
.align 2, 0
_02005A68: .word 0x03807844
arm_func_end sub_02005A34
arm_func_start sub_02005A6C
sub_02005A6C: ; 0x02005A6C
mov r1, #0
str r1, [r0]
str r1, [r0, #8]
str r1, [r0, #0x20]
bx lr
arm_func_end sub_02005A6C
arm_func_start sub_02005A80
sub_02005A80: ; 0x02005A80
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r8, r0
mov r7, r1
mov r6, r2
mov r5, r3
bl sub_02005EE8
mov r4, r0
cmp r8, #0
beq _02005AB0
ldr r0, [r8]
cmp r0, #0
beq _02005AB4
_02005AB0:
bl sub_02006058
_02005AB4:
ldr r0, _02005B0C ; =0x04000006
ldrh sb, [r0]
mov r0, sb
bl sub_02005E90
mov r1, #0
str r1, [r8, #0x1c]
cmp r7, sb
strh r7, [r8, #0x10]
addle r0, r0, #1
str r0, [r8, #0xc]
strh r6, [r8, #0x12]
ldr r0, [sp, #0x20]
str r5, [r8]
str r0, [r8, #4]
mov r1, #0
mov r0, r8
str r1, [r8, #0x24]
bl sub_02005990
mov r0, r4
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_02005B0C: .word 0x04000006
arm_func_end sub_02005A80
arm_func_start sub_02005B10
sub_02005B10: ; 0x02005B10
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r8, r0
mov r7, r1
mov r6, r2
mov r5, r3
bl sub_02005EE8
mov r4, r0
cmp r8, #0
beq _02005B40
ldr r0, [r8]
cmp r0, #0
beq _02005B44
_02005B40:
bl sub_02006058
_02005B44:
ldr r0, _02005B9C ; =0x04000006
ldrh sb, [r0]
mov r0, sb
bl sub_02005E90
mov r1, #1
str r1, [r8, #0x1c]
cmp r7, sb
strh r7, [r8, #0x10]
addle r0, r0, #1
str r0, [r8, #0xc]
strh r6, [r8, #0x12]
ldr r0, [sp, #0x20]
str r5, [r8]
str r0, [r8, #4]
mov r1, #0
mov r0, r8
str r1, [r8, #0x24]
bl sub_02005990
mov r0, r4
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_02005B9C: .word 0x04000006
arm_func_end sub_02005B10
arm_func_start sub_02005BA0
sub_02005BA0: ; 0x02005BA0
stmdb sp!, {r4, lr}
ldr r1, _02005BF4 ; =0x037FDAF8
mov r4, r0
mov r0, #4
bl sub_020039A4
ldrsh r3, [r4, #0x10]
ldr r2, _02005BF8 ; =0x04000004
mov r0, r3, lsl #0x18
ldrh r1, [r2]
and r3, r3, #0x100
and r1, r1, #0x3f
orr r0, r1, r0, lsr #16
orr r0, r0, r3, asr #1
strh r0, [r2]
ldrh r1, [r2]
mov r0, #4
orr r1, r1, #0x20
strh r1, [r2]
bl sub_02003AD8
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02005BF4: .word 0x037FDAF8
_02005BF8: .word 0x04000004
arm_func_end sub_02005BA0
arm_func_start sub_02005BFC
sub_02005BFC: ; 0x02005BFC
stmdb sp!, {r3, r4, r5, lr}
movs r4, r1
mov r5, r0
bne _02005C10
bl sub_02006058
_02005C10:
cmp r5, #0
strne r4, [r5, #8]
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02005BFC
arm_func_start sub_02005C20
sub_02005C20: ; 0x02005C20
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_02005EE8
mov r1, #1
str r1, [r5, #0x24]
ldr r1, [r5]
mov r4, r0
cmp r1, #0
bne _02005C4C
bl sub_02005EFC
b _02005C64
_02005C4C:
mov r0, r5
bl sub_02005A34
mov r1, #0
mov r0, r4
str r1, [r5]
bl sub_02005EFC
_02005C64:
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02005C20
arm_func_start sub_02005C6C
sub_02005C6C: ; 0x02005C6C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
bl sub_02005EE8
mov r5, r0
cmp r7, #0
bne _02005C88
bl sub_02006058
_02005C88:
ldr r0, _02005CDC ; =0x03807844
mov r4, #0
ldr r0, [r0, #0xc]
cmp r0, #0
ldrne r6, [r0, #0x18]
moveq r6, #0
b _02005CC4
_02005CA4:
ldr r1, [r0, #8]
cmp r1, r7
bne _02005CB4
bl sub_02005C20
_02005CB4:
mov r0, r6
cmp r6, #0
ldrne r6, [r6, #0x18]
moveq r6, r4
_02005CC4:
cmp r0, #0
bne _02005CA4
mov r0, r5
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02005CDC: .word 0x03807844
arm_func_end sub_02005C6C
arm_func_start sub_02005CE0
sub_02005CE0: ; 0x02005CE0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r0, #4
bl sub_02003B10
ldr r2, _02005E80 ; =0x04000004
ldr r1, _02005E84 ; =0x0380FFF8
ldrh r0, [r2]
bic r0, r0, #0x20
strh r0, [r2]
ldr r0, [r1]
orr r0, r0, #4
str r0, [r1]
ldrh r0, [r2]
mov r1, r0, asr #8
mov r0, r0, lsl #1
and r1, r1, #0xff
and r0, r0, #0x100
orr r0, r1, r0
sub r0, r0, #1
bl sub_02005E90
ldr sl, _02005E88 ; =0x04000006
mov r6, #0
ldr r5, _02005E8C ; =0x03807844
sub r7, sl, #2
mov fp, #1
mov r8, r6
b _02005E6C
_02005D48:
ldrh sb, [sl]
mov r0, sb
bl sub_02005E90
ldrsh r1, [r4, #0x10]
ldr r2, [r4, #0xc]
sub r1, sb, r1
mov sb, r0
subs r0, sb, r2
bmi _02005D7C
cmp r0, #0
bne _02005D84
cmp r1, #0
bge _02005D84
_02005D7C:
mov r0, r8
b _02005DA0
_02005D84:
cmp r1, #0
addlt r0, r1, #7
addlt r1, r0, #0x100
ldrsh r0, [r4, #0x12]
cmp r1, r0
movle r0, fp
movgt r0, #2
_02005DA0:
cmp r0, #0
beq _02005DBC
cmp r0, #1
beq _02005DF8
cmp r0, #2
beq _02005E50
b _02005E6C
_02005DBC:
mov r0, r4
bl sub_02005BA0
ldrh r1, [sl]
ldrsh r0, [r4, #0x10]
cmp r0, r1
ldreq r0, [r4, #0xc]
cmpeq r0, sb
bne _02005E78
mov r0, #4
bl sub_02003B10
ldrh r1, [r7]
mov r0, #4
bic r1, r1, #0x20
strh r1, [r7]
bl sub_02003B4C
_02005DF8:
ldr sb, [r4]
mov r0, r4
bl sub_02005A34
str r6, [r4]
cmp sb, #0
beq _02005E1C
ldr r0, [r4, #4]
mov lr, pc
bx sb
_02005E1C:
ldr r0, [r4, #0x1c]
cmp r0, #0
beq _02005E6C
ldr r0, [r4, #0x24]
cmp r0, #0
bne _02005E6C
str sb, [r4]
ldr r1, [r5, #8]
mov r0, r4
add r1, r1, #1
str r1, [r4, #0xc]
bl sub_02005990
b _02005E6C
_02005E50:
mov r0, r4
bl sub_02005A34
ldr r1, [r5, #8]
mov r0, r4
add r1, r1, #1
str r1, [r4, #0xc]
bl sub_02005990
_02005E6C:
ldr r4, [r5, #0xc]
cmp r4, #0
bne _02005D48
_02005E78:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02005E80: .word 0x04000004
_02005E84: .word 0x0380FFF8
_02005E88: .word 0x04000006
_02005E8C: .word 0x03807844
arm_func_end sub_02005CE0
arm_func_start sub_02005E90
sub_02005E90: ; 0x02005E90
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02005EE8
ldr r1, _02005ED0 ; =0x03807844
ldr r2, [r1, #4]
cmp r4, r2
ldrlt r2, [r1, #8]
addlt r2, r2, #1
strlt r2, [r1, #8]
ldr r1, _02005ED0 ; =0x03807844
str r4, [r1, #4]
bl sub_02005EFC
ldr r0, _02005ED0 ; =0x03807844
ldr r0, [r0, #8]
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02005ED0: .word 0x03807844
arm_func_end sub_02005E90
arm_func_start sub_02005ED4
sub_02005ED4: ; 0x02005ED4
mrs r0, cpsr
bic r1, r0, #0x80
msr cpsr_c, r1
and r0, r0, #0x80
bx lr
arm_func_end sub_02005ED4
arm_func_start sub_02005EE8
sub_02005EE8: ; 0x02005EE8
mrs r0, cpsr
orr r1, r0, #0x80
msr cpsr_c, r1
and r0, r0, #0x80
bx lr
arm_func_end sub_02005EE8
arm_func_start sub_02005EFC
sub_02005EFC: ; 0x02005EFC
mrs r1, cpsr
bic r2, r1, #0x80
orr r2, r2, r0
msr cpsr_c, r2
and r0, r1, #0x80
bx lr
arm_func_end sub_02005EFC
arm_func_start sub_02005F14
sub_02005F14: ; 0x02005F14
mrs r0, cpsr
orr r1, r0, #0xc0
msr cpsr_c, r1
and r0, r0, #0xc0
bx lr
arm_func_end sub_02005F14
arm_func_start sub_02005F28
sub_02005F28: ; 0x02005F28
mrs r1, cpsr
bic r2, r1, #0xc0
orr r2, r2, r0
msr cpsr_c, r2
and r0, r1, #0xc0
bx lr
arm_func_end sub_02005F28
arm_func_start sub_02005F40
sub_02005F40: ; 0x02005F40
mrs r0, cpsr
and r0, r0, #0x1f
bx lr
arm_func_end sub_02005F40
arm_func_start sub_02005F4C
sub_02005F4C: ; 0x02005F4C
ldr ip, _02005F60 ; =sub_038037B8
mov r1, r0, asr #1
add r0, r0, r1, lsr #30
mov r0, r0, asr #2
bx ip
.align 2, 0
_02005F60: .word sub_038037B8
arm_func_end sub_02005F4C
arm_func_start sub_02005F64
sub_02005F64: ; 0x02005F64
stmdb sp!, {r3, lr}
ldr r2, _02005F94 ; =0x03807858
ldrh r0, [r2]
cmp r0, #0
bne _02005F8C
ldr r1, _02005F98 ; =0x037FDDC4
mov r3, #1
mov r0, #0xc
strh r3, [r2]
bl sub_02006584
_02005F8C:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02005F94: .word 0x03807858
_02005F98: .word 0x037FDDC4
arm_func_end sub_02005F64
arm_func_start sub_02005F9C
sub_02005F9C: ; 0x02005F9C
ldr r0, _02005FA8 ; =0x03807858
ldrh r0, [r0, #2]
bx lr
.align 2, 0
_02005FA8: .word 0x03807858
arm_func_end sub_02005F9C
arm_func_start sub_02005FAC
sub_02005FAC: ; 0x02005FAC
stmdb sp!, {r3, lr}
and r0, r1, #0x7f00
mov r0, r0, lsl #8
mov r0, r0, lsr #0x10
cmp r0, #0x10
ldreq r0, _02005FDC ; =0x03807858
moveq r1, #1
streqh r1, [r0, #2]
beq _02005FD4
bl sub_02006058
_02005FD4:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02005FDC: .word 0x03807858
arm_func_end sub_02005FAC
arm_func_start sub_02005FE0
sub_02005FE0: ; 0x02005FE0
stmdb sp!, {r4, r5, r6, lr}
mov r0, #0
bl sub_020060DC
mov r0, #1
bl sub_020060DC
mov r0, #2
bl sub_020060DC
mov r0, #3
bl sub_020060DC
mov r0, #0x40000
bl sub_02003A8C
mvn r0, #0
bl sub_02003B4C
bl sub_0200689C
mov r6, #0xc
mov r5, #0x1000
mov r4, #0
_02006024:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_020065F8
cmp r0, #0
bne _02006024
ldr r0, _02006054 ; =0x04000208
mov r1, #0
strh r1, [r0]
bl sub_0200F4A8
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02006054: .word 0x04000208
arm_func_end sub_02005FE0
arm_func_start sub_02006058
sub_02006058: ; 0x02006058
stmdb sp!, {r3, lr}
mov r0, #0
bl sub_0200E7F8
_02006064:
bl sub_02005EE8
bl sub_02000660
b _02006064
arm_func_end sub_02006058
arm_func_start sub_02006070
sub_02006070: ; 0x02006070
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02005EE8
add r1, r4, r4, lsl #1
add r1, r1, #2
mov r1, r1, lsl #2
add r1, r1, #0xb0
add r2, r1, #0x4000000
_02006090:
ldr r1, [r2]
tst r1, #0x80000000
bne _02006090
cmp r4, #0
bne _020060CC
mov r1, #0xc
mul r1, r4, r1
add r2, r1, #0x4000000
mov r3, #0
add r1, r1, #0xb0
str r3, [r2, #0xb0]
add r2, r1, #0x4000000
ldr r1, _020060D8 ; =0x81400001
str r3, [r2, #4]
str r1, [r2, #8]
_020060CC:
bl sub_02005EFC
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020060D8: .word 0x81400001
arm_func_end sub_02006070
arm_func_start sub_020060DC
sub_020060DC: ; 0x020060DC
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02005EE8
mov r1, #6
mul r1, r4, r1
add r1, r1, #5
mov r1, r1, lsl #1
add r1, r1, #0x4000000
ldrh r2, [r1, #0xb0]
cmp r4, #0
bic r2, r2, #0x3200
strh r2, [r1, #0xb0]
ldrh r2, [r1, #0xb0]
bic r2, r2, #0x8000
strh r2, [r1, #0xb0]
ldrh r2, [r1, #0xb0]
ldrh r1, [r1, #0xb0]
bne _0200614C
mov r1, #0xc
mul r1, r4, r1
add r2, r1, #0x4000000
mov r3, #0
add r1, r1, #0xb0
str r3, [r2, #0xb0]
add r2, r1, #0x4000000
ldr r1, _02006158 ; =0x81400001
str r3, [r2, #4]
str r1, [r2, #8]
_0200614C:
bl sub_02005EFC
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02006158: .word 0x81400001
arm_func_end sub_020060DC
arm_func_start sub_0200615C
sub_0200615C: ; 0x0200615C
mov r3, #0
_02006160:
cmp r3, r2
blt _0200616C
b _02006170
_0200616C:
strh r0, [r1, r3]
_02006170:
blt _02006178
b _0200617C
_02006178:
add r3, r3, #2
_0200617C:
blt _02006160
bx lr
arm_func_end sub_0200615C
arm_func_start sub_02006184
sub_02006184: ; 0x02006184
mov ip, #0
_02006188:
cmp ip, r2
blt _02006194
b _02006198
_02006194:
ldrh r3, [r0, ip]
_02006198:
blt _020061A0
b _020061A4
_020061A0:
strh r3, [r1, ip]
_020061A4:
blt _020061AC
b _020061B0
_020061AC:
add ip, ip, #2
_020061B0:
blt _02006188
bx lr
arm_func_end sub_02006184
arm_func_start sub_020061B8
sub_020061B8: ; 0x020061B8
add ip, r1, r2
_020061BC:
cmp r1, ip
blt _020061C8
b _020061CC
_020061C8:
stmia r1!, {r0}
_020061CC:
blt _020061BC
bx lr
arm_func_end sub_020061B8
arm_func_start sub_020061D4
sub_020061D4: ; 0x020061D4
add ip, r1, r2
_020061D8:
cmp r1, ip
blt _020061E4
b _020061E8
_020061E4:
ldmia r0!, {r2}
_020061E8:
blt _020061F0
b _020061F4
_020061F0:
stmia r1!, {r2}
_020061F4:
blt _020061D8
bx lr
arm_func_end sub_020061D4
arm_func_start sub_020061FC
sub_020061FC: ; 0x020061FC
stmdb sp!, {r4, r5, r6, r7, r8, sb}
add sb, r1, r2
mov ip, r2, lsr #5
add ip, r1, ip, lsl #5
mov r2, r0
mov r3, r2
mov r4, r2
mov r5, r2
mov r6, r2
mov r7, r2
mov r8, r2
_02006228:
cmp r1, ip
blt _02006234
b _02006238
_02006234:
stmia r1!, {r0, r2, r3, r4, r5, r6, r7, r8}
_02006238:
blt _02006228
_0200623C:
cmp r1, sb
blt _02006248
b _0200624C
_02006248:
stmia r1!, {r0}
_0200624C:
blt _0200623C
ldmia sp!, {r4, r5, r6, r7, r8, sb}
bx lr
arm_func_end sub_020061FC
arm_func_start sub_02006258
sub_02006258: ; 0x02006258
cmp r2, #0
beq _02006264
b _02006268
_02006264:
bx lr
_02006268:
tst r0, #1
beq _02006294
ldrh ip, [r0, #-1]
and ip, ip, #0xff
orr r3, ip, r1, lsl #8
strh r3, [r0, #-1]
add r0, r0, #1
subs r2, r2, #1
beq _02006290
b _02006294
_02006290:
bx lr
_02006294:
cmp r2, #2
blo _020062EC
orr r1, r1, r1, lsl #8
tst r0, #2
beq _020062BC
strh r1, [r0], #2
subs r2, r2, #2
beq _020062B8
b _020062BC
_020062B8:
bx lr
_020062BC:
orr r1, r1, r1, lsl #16
bics r3, r2, #3
beq _020062DC
sub r2, r2, r3
add ip, r3, r0
_020062D0:
str r1, [r0], #4
cmp r0, ip
blo _020062D0
_020062DC:
tst r2, #2
bne _020062E8
b _020062EC
_020062E8:
strh r1, [r0], #2
_020062EC:
tst r2, #1
beq _020062F8
b _020062FC
_020062F8:
bx lr
_020062FC:
ldrh r3, [r0]
and r3, r3, #0xff00
and r1, r1, #0xff
orr r1, r1, r3
strh r1, [r0]
bx lr
arm_func_end sub_02006258
arm_func_start sub_02006314
sub_02006314: ; 0x02006314
cmp r2, #0
beq _02006320
b _02006324
_02006320:
bx lr
_02006324:
tst r1, #1
beq _0200637C
ldrh ip, [r1, #-1]
and ip, ip, #0xff
tst r0, #1
bne _02006340
b _02006344
_02006340:
ldrh r3, [r0, #-1]
_02006344:
bne _0200634C
b _02006350
_0200634C:
mov r3, r3, lsr #8
_02006350:
beq _02006358
b _0200635C
_02006358:
ldrh r3, [r0]
_0200635C:
orr r3, ip, r3, lsl #8
strh r3, [r1, #-1]
add r0, r0, #1
add r1, r1, #1
subs r2, r2, #1
beq _02006378
b _0200637C
_02006378:
bx lr
_0200637C:
eor ip, r1, r0
tst ip, #1
beq _020063D8
bic r0, r0, #1
ldrh ip, [r0], #2
mov r3, ip, lsr #8
subs r2, r2, #2
blo _020063B4
_0200639C:
ldrh ip, [r0], #2
orr ip, r3, ip, lsl #8
strh ip, [r1], #2
mov r3, ip, lsr #0x10
subs r2, r2, #2
bhs _0200639C
_020063B4:
tst r2, #1
beq _020063C0
b _020063C4
_020063C0:
bx lr
_020063C4:
ldrh ip, [r1]
and ip, ip, #0xff00
orr ip, ip, r3
strh ip, [r1]
bx lr
_020063D8:
tst ip, #2
beq _02006404
bics r3, r2, #1
beq _02006468
sub r2, r2, r3
add ip, r3, r1
_020063F0:
ldrh r3, [r0], #2
strh r3, [r1], #2
cmp r1, ip
blo _020063F0
b _02006468
_02006404:
cmp r2, #2
blo _02006468
tst r1, #2
beq _0200642C
ldrh r3, [r0], #2
strh r3, [r1], #2
subs r2, r2, #2
beq _02006428
b _0200642C
_02006428:
bx lr
_0200642C:
bics r3, r2, #3
beq _0200644C
sub r2, r2, r3
add ip, r3, r1
_0200643C:
ldr r3, [r0], #4
str r3, [r1], #4
cmp r1, ip
blo _0200643C
_0200644C:
tst r2, #2
bne _02006458
b _0200645C
_02006458:
ldrh r3, [r0], #2
_0200645C:
bne _02006464
b _02006468
_02006464:
strh r3, [r1], #2
_02006468:
tst r2, #1
beq _02006474
b _02006478
_02006474:
bx lr
_02006478:
ldrh r2, [r1]
ldrh r0, [r0]
and r2, r2, #0xff00
and r0, r0, #0xff
orr r0, r2, r0
strh r0, [r1]
bx lr
arm_func_end sub_02006314
arm_func_start sub_02006494
sub_02006494: ; 0x02006494
.word 0xE1010090
bx lr
arm_func_end sub_02006494
arm_func_start sub_0200649C
sub_0200649C: ; 0x0200649C
ldr ip, _020064A4 ; =sub_037FE2C0
bx ip
.align 2, 0
_020064A4: .word sub_037FE2C0
arm_func_end sub_0200649C
arm_func_start sub_020064A8
sub_020064A8: ; 0x020064A8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
bl sub_02005EE8
ldr r1, _02006568 ; =0x0380785C
mov r4, r0
ldrh r0, [r1]
cmp r0, #0
bne _02006558
ldr r0, _0200656C ; =0x027FFC00
mov r2, #1
strh r2, [r1]
mov r2, #0
str r2, [r0, #0x38c]
ldr r0, _02006570 ; =0x03807860
mov r1, r2
_020064E0:
str r1, [r0, r2, lsl #2]
add r2, r2, #1
cmp r2, #0x20
blt _020064E0
ldr r2, _02006574 ; =0x0000C408
ldr r1, _02006578 ; =0x04000184
mov r0, #0x40000
strh r2, [r1]
bl sub_02003B4C
ldr r1, _0200657C ; =0x037FE4A8
mov r0, #0x40000
bl sub_020039A4
mov r0, #0x40000
bl sub_02003AD8
mov r5, #8
ldr r8, _02006580 ; =0x04000180
mov r6, r5
mov r7, #0x3e8
b _02006550
_0200652C:
mov r0, r5, lsl #8
strh r0, [r8]
mov r0, r7
bl sub_02005F4C
ldrh r0, [r8]
and r0, r0, #0xf
cmp r0, r5
movne r5, r6
sub r5, r5, #1
_02006550:
cmp r5, #0
bge _0200652C
_02006558:
mov r0, r4
bl sub_02005EFC
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02006568: .word 0x0380785C
_0200656C: .word 0x027FFC00
_02006570: .word 0x03807860
_02006574: .word 0x0000C408
_02006578: .word 0x04000184
_0200657C: .word 0x037FE4A8
_02006580: .word 0x04000180
arm_func_end sub_020064A8
arm_func_start sub_02006584
sub_02006584: ; 0x02006584
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r5, r1
bl sub_02005EE8
ldr r1, _020065CC ; =0x03807860
ldr r3, _020065D0 ; =0x027FFC00
str r5, [r1, r4, lsl #2]
cmp r5, #0
ldrne r2, [r3, #0x38c]
mov r1, #1
orrne r1, r2, r1, lsl r4
ldreq r2, [r3, #0x38c]
mvneq r1, r1, lsl r4
andeq r1, r2, r1
str r1, [r3, #0x38c]
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020065CC: .word 0x03807860
_020065D0: .word 0x027FFC00
arm_func_end sub_02006584
arm_func_start sub_020065D4
sub_020065D4: ; 0x020065D4
ldr r2, _020065F4 ; =0x027FFC00
mov r3, #1
add r1, r2, r1, lsl #2
ldr r1, [r1, #0x388]
tst r1, r3, lsl r0
moveq r3, #0
mov r0, r3
bx lr
.align 2, 0
_020065F4: .word 0x027FFC00
arm_func_end sub_020065D4
arm_func_start sub_020065F8
sub_020065F8: ; 0x020065F8
stmdb sp!, {r3, lr}
ldr r3, [sp]
and r0, r0, #0x1f
bic r3, r3, #0x1f
orr r0, r3, r0
bic r3, r0, #0x20
mov r0, r2, lsl #0x1f
orr r0, r3, r0, lsr #26
and r0, r0, #0x3f
orr r0, r0, r1, lsl #6
str r0, [sp]
bl sub_02006630
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_020065F8
arm_func_start sub_02006630
sub_02006630: ; 0x02006630
stmdb sp!, {r4, lr}
ldr r2, _0200668C ; =0x04000184
mov r4, r0
ldrh r0, [r2]
tst r0, #0x4000
ldrneh r1, [r2]
mvnne r0, #0
orrne r1, r1, #0xc000
strneh r1, [r2]
bne _02006684
bl sub_02005EE8
ldr r2, _0200668C ; =0x04000184
ldrh r1, [r2]
tst r1, #2
beq _02006678
bl sub_02005EFC
mvn r0, #1
b _02006684
_02006678:
str r4, [r2, #4]
bl sub_02005EFC
mov r0, #0
_02006684:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200668C: .word 0x04000184
arm_func_end sub_02006630
arm_func_start sub_02006690
sub_02006690: ; 0x02006690
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #4
ldr r6, [sp]
mvn r8, #3
ldr r4, _02006768 ; =0x03807860
ldr sb, _0200676C ; =0x04000184
add sl, r8, #1
mov r7, #0x4100000
mov r5, #0
_020066B4:
ldrh r0, [sb]
tst r0, #0x4000
ldrneh r0, [sb]
addne r1, r8, #1
orrne r0, r0, #0xc000
strneh r0, [sb]
bne _020066FC
bl sub_02005EE8
ldrh r1, [sb]
tst r1, #0x100
beq _020066EC
bl sub_02005EFC
mov r1, r8
b _020066FC
_020066EC:
ldr r6, [r7]
str r6, [sp]
bl sub_02005EFC
mov r1, r5
_020066FC:
cmp r1, r8
beq _0200675C
cmp r1, sl
beq _020066B4
mov r0, r6, lsl #0x1b
movs r0, r0, lsr #0x1b
beq _020066B4
ldr r3, [r4, r0, lsl #2]
cmp r3, #0
beq _0200673C
mov r2, r6, lsl #0x1a
mov r1, r6, lsr #6
mov r2, r2, lsr #0x1f
mov lr, pc
bx r3
_02006738:
b _020066B4
_0200673C:
mov r0, r6, lsl #0x1a
movs r0, r0, lsr #0x1f
bne _020066B4
orr r6, r6, #0x20
mov r0, r6
str r6, [sp]
bl sub_02006630
b _020066B4
_0200675C:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_02006768: .word 0x03807860
_0200676C: .word 0x04000184
arm_func_end sub_02006690
arm_func_start sub_02006770
sub_02006770: ; 0x02006770
ldr r2, _0200678C ; =0x04000134
mvn r3, r0
ldrh r0, [r2]
and r0, r3, r0
orr r0, r1, r0
strh r0, [r2]
bx lr
.align 2, 0
_0200678C: .word 0x04000134
arm_func_end sub_02006770
arm_func_start sub_02006790
sub_02006790: ; 0x02006790
ldr ip, _020067A4 ; =sub_037FE588
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
mov r0, #0xc000
bx ip
.align 2, 0
_020067A4: .word sub_037FE588
arm_func_end sub_02006790
arm_func_start sub_020067A8
sub_020067A8: ; 0x020067A8
stmdb sp!, {lr}
sub sp, sp, #0xc
bl sub_0200538C
cmp r0, #0
beq _020067C8
bl sub_02005578
cmp r0, #0
bne _020067D0
_020067C8:
mov r0, #0
b _02006828
_020067D0:
ldr r0, _02006834 ; =0x038078E0
ldr r0, [r0]
cmp r0, #0
movne r0, #0
bne _02006828
ldr r0, _02006838 ; =0x038078E4
bl sub_02005588
bl sub_02005404
ldr r2, _0200683C ; =0x037FE65C
ldr r3, _02006840 ; =0x0000082E
str r2, [sp, #4]
adds ip, r0, r3
mov lr, #0
str lr, [sp, #8]
adc r2, r1, #0
ldr r0, _02006838 ; =0x038078E4
mov r1, ip
str lr, [sp]
bl sub_02005734
ldr r1, _02006834 ; =0x038078E0
mov r0, #1
str r0, [r1]
_02006828:
add sp, sp, #0xc
ldmia sp!, {lr}
bx lr
.align 2, 0
_02006834: .word 0x038078E0
_02006838: .word 0x038078E4
_0200683C: .word 0x037FE65C
_02006840: .word 0x0000082E
arm_func_end sub_020067A8
arm_func_start sub_02006844
sub_02006844: ; 0x02006844
stmdb sp!, {r4, lr}
mov r0, #0x8000
mov r4, #0
bl sub_02006790
ldr r0, _0200687C ; =0x04000136
ldrh r1, [r0]
ldr r0, _02006880 ; =0x027FFFA8
tst r1, #0x80
movne r4, #0x8000
and r1, r1, #0xb
orr r1, r4, r1, lsl #10
strh r1, [r0]
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200687C: .word 0x04000136
_02006880: .word 0x027FFFA8
arm_func_end sub_02006844
arm_func_start sub_02006884
sub_02006884: ; 0x02006884
ldr r1, _02006898 ; =0x04000501
ldrb r0, [r1]
orr r0, r0, #0x80
strb r0, [r1]
bx lr
.align 2, 0
_02006898: .word 0x04000501
arm_func_end sub_02006884
arm_func_start sub_0200689C
sub_0200689C: ; 0x0200689C
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020068E8 ; =0x04000501
mov r5, #0
ldrb r0, [r1]
bic r0, r0, #0x80
strb r0, [r1]
mov r4, #1
_020068B8:
mov r0, r5
mov r1, r4
bl sub_02006C08
add r5, r5, #1
cmp r5, #0x10
blt _020068B8
ldr r0, _020068EC ; =0x04000508
mov r1, #0
strb r1, [r0]
strb r1, [r0, #1]
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020068E8: .word 0x04000501
_020068EC: .word 0x04000508
arm_func_end sub_0200689C
arm_func_start sub_020068F0
sub_020068F0: ; 0x020068F0
stmdb sp!, {r3, lr}
ldr r2, _02006934 ; =0x04000501
mov r0, #0x80
ldrb r1, [r2]
bic r1, r1, #0x80
strb r1, [r2]
bl sub_0200693C
mov r0, #0x40000
bl sub_02005F4C
mov r0, #1
bl sub_0200CF4C
ldr r1, _02006938 ; =0x04000304
ldrh r0, [r1]
bic r0, r0, #1
strh r0, [r1]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02006934: .word 0x04000501
_02006938: .word 0x04000304
arm_func_end sub_020068F0
arm_func_start sub_0200693C
sub_0200693C: ; 0x0200693C
ldr ip, _02006944 ; =sub_038037E6
bx ip
.align 2, 0
_02006944: .word sub_038037E6
arm_func_end sub_0200693C
arm_func_start sub_02006948
sub_02006948: ; 0x02006948
stmdb sp!, {r3, lr}
ldr r2, _0200698C ; =0x04000304
mov r0, #1
ldrh r1, [r2]
orr r1, r1, #1
strh r1, [r2]
bl sub_0200CF28
mov r0, #0x100
bl sub_02006998
ldr r0, _02006990 ; =0x0007AB80
bl sub_02005F4C
ldr r1, _02006994 ; =0x04000501
ldrb r0, [r1]
orr r0, r0, #0x80
strb r0, [r1]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200698C: .word 0x04000304
_02006990: .word 0x0007AB80
_02006994: .word 0x04000501
arm_func_end sub_02006948
arm_func_start sub_02006998
sub_02006998: ; 0x02006998
ldr ip, _020069A0 ; =sub_038037DE
bx ip
.align 2, 0
_020069A0: .word sub_038037DE
arm_func_end sub_02006998
arm_func_start sub_020069A4
sub_020069A4: ; 0x020069A4
ldr r1, _020069B0 ; =0x04000500
strb r0, [r1]
bx lr
.align 2, 0
_020069B0: .word 0x04000500
arm_func_end sub_020069A4
arm_func_start sub_020069B4
sub_020069B4: ; 0x020069B4
ldr ip, _020069E8 ; =0x04000501
mov r3, r3, lsl #5
ldrb ip, [ip]
tst ip, #0x80
movne ip, #1
moveq ip, #0
orr r3, r3, ip, lsl #7
orr r2, r3, r2, lsl #4
orr r2, r2, r1, lsl #2
ldr r1, _020069E8 ; =0x04000501
orr r0, r0, r2
strb r0, [r1]
bx lr
.align 2, 0
_020069E8: .word 0x04000501
arm_func_end sub_020069B4
arm_func_start sub_020069EC
sub_020069EC: ; 0x020069EC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r4, _02006AA4 ; =0x03807558
mov r8, r1
ldr lr, [r4]
ldr r1, _02006AA8 ; =0x03807910
mov r7, r2
ldr r5, [sp, #0x2c]
ldr r4, _02006AAC ; =0x03807914
ldr ip, [sp, #0x20]
ldr r2, _02006AB0 ; =0x03807924
strb r5, [r4, r0]
cmp lr, #0
ldr r1, [r1]
movge r5, lr
mov r6, r3
mov r4, r0, lsl #4
strb ip, [r2, r0]
cmp r1, #0
ble _02006A58
ldr r1, _02006AB4 ; =0x0000FFF5
mov r2, #1
tst r1, r2, lsl r0
beq _02006A58
mov r0, ip
mov r1, r5
bl sub_02006E28
mov ip, r0
_02006A58:
ldr r2, [sp, #0x24]
mov r0, r6, lsl #0x1b
orr r0, r0, r7, lsl #29
orr r1, r0, r5, lsl #16
ldr r0, [sp, #0x28]
orr r2, r1, r2, lsl #8
add r1, r4, #0x4000000
orr r2, ip, r2
str r2, [r1, #0x400]
ldr r3, [sp, #0x18]
rsb r2, r0, #0x10000
add r0, r1, #0x400
strh r2, [r0, #8]
ldr r2, [sp, #0x1c]
strh r3, [r0, #0xa]
str r2, [r1, #0x40c]
str r8, [r1, #0x404]
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02006AA4: .word 0x03807558
_02006AA8: .word 0x03807910
_02006AAC: .word 0x03807914
_02006AB0: .word 0x03807924
_02006AB4: .word 0x0000FFF5
arm_func_end sub_020069EC
arm_func_start sub_02006AB8
sub_02006AB8: ; 0x02006AB8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _02006B50 ; =0x03807558
mov r7, r1
ldr ip, [r4]
ldr r1, _02006B54 ; =0x03807910
mov r6, r3
ldr r3, _02006B58 ; =0x03807924
ldr r5, [sp, #0x1c]
ldr r4, _02006B5C ; =0x03807914
ldr r1, [r1]
strb r5, [r4, r0]
cmp ip, #0
movge r5, ip
mov r4, r0, lsl #4
strb r2, [r3, r0]
cmp r1, #0
ble _02006B1C
ldr r1, _02006B60 ; =0x0000FFF5
mov r3, #1
tst r1, r3, lsl r0
beq _02006B1C
mov r0, r2
mov r1, r5
bl sub_02006E28
mov r2, r0
_02006B1C:
mov r0, r7, lsl #0x18
orr r0, r0, #0x60000000
orr r0, r0, r5, lsl #16
ldr r1, [sp, #0x18]
orr r3, r0, r6, lsl #8
add r0, r4, #0x4000000
orr r2, r2, r3
str r2, [r0, #0x400]
rsb r1, r1, #0x10000
add r0, r0, #0x400
strh r1, [r0, #8]
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02006B50: .word 0x03807558
_02006B54: .word 0x03807910
_02006B58: .word 0x03807924
_02006B5C: .word 0x03807914
_02006B60: .word 0x0000FFF5
arm_func_end sub_02006AB8
arm_func_start sub_02006B64
sub_02006B64: ; 0x02006B64
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _02006BF4 ; =0x03807558
mov r7, r2
ldr ip, [r4]
ldr r2, _02006BF8 ; =0x03807910
mov r6, r3
ldr r3, _02006BFC ; =0x03807924
ldr r5, [sp, #0x18]
ldr r4, _02006C00 ; =0x03807914
ldr r2, [r2]
strb r5, [r4, r0]
cmp ip, #0
movge r5, ip
mov r4, r0, lsl #4
strb r1, [r3, r0]
cmp r2, #0
ble _02006BC8
ldr r2, _02006C04 ; =0x0000FFF5
mov r3, #1
tst r2, r3, lsl r0
beq _02006BC8
mov r0, r1
mov r1, r5
bl sub_02006E28
mov r1, r0
_02006BC8:
mov r0, r5, lsl #0x10
orr r0, r0, #0x60000000
orr r2, r0, r7, lsl #8
add r0, r4, #0x4000000
orr r1, r1, r2
str r1, [r0, #0x400]
rsb r1, r6, #0x10000
add r0, r0, #0x400
strh r1, [r0, #8]
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02006BF4: .word 0x03807558
_02006BF8: .word 0x03807910
_02006BFC: .word 0x03807924
_02006C00: .word 0x03807914
_02006C04: .word 0x0000FFF5
arm_func_end sub_02006B64
arm_func_start sub_02006C08
sub_02006C08: ; 0x02006C08
mov r3, r0, lsl #4
add r0, r3, #0x4000000
ldr r2, [r0, #0x400]
add r0, r3, #0x400
tst r1, #1
bic r1, r2, #0x80000000
add r0, r0, #0x4000000
orrne r1, r1, #0x8000
str r1, [r0]
bx lr
arm_func_end sub_02006C08
arm_func_start sub_02006C30
sub_02006C30: ; 0x02006C30
stmdb sp!, {r3, r4, r5, lr}
ldr r3, _02006C9C ; =0x03807910
ldr ip, _02006CA0 ; =0x03807924
ldr r3, [r3]
mov r5, r0
mov r4, r2
strb r1, [ip, r5]
cmp r3, #0
ble _02006C80
ldr r0, _02006CA4 ; =0x0000FFF5
mov r2, #1
tst r0, r2, lsl r5
beq _02006C80
mov r0, r5, lsl #4
add r0, r0, #0x4000000
ldrb r2, [r0, #0x402]
mov r0, r1
mov r1, r2
bl sub_02006E28
mov r1, r0
_02006C80:
mov r0, r5, lsl #4
add r0, r0, #0x4000000
orr r1, r1, r4, lsl #8
add r0, r0, #0x400
strh r1, [r0]
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02006C9C: .word 0x03807910
_02006CA0: .word 0x03807924
_02006CA4: .word 0x0000FFF5
arm_func_end sub_02006C30
arm_func_start sub_02006CA8
sub_02006CA8: ; 0x02006CA8
mov r0, r0, lsl #4
add r0, r0, #0x4000000
rsb r1, r1, #0x10000
add r0, r0, #0x400
strh r1, [r0, #8]
bx lr
arm_func_end sub_02006CA8
arm_func_start sub_02006CC0
sub_02006CC0: ; 0x02006CC0
stmdb sp!, {r4, lr}
ldr r2, _02006D24 ; =0x03807558
ldr r3, _02006D28 ; =0x03807914
ldr r2, [r2]
strb r1, [r3, r0]
cmp r2, #0
ldr r3, _02006D2C ; =0x03807910
mov r4, r0, lsl #4
movge r1, r2
add r2, r4, #0x4000000
strb r1, [r2, #0x402]
ldr r2, [r3]
cmp r2, #0
ble _02006D1C
ldr r2, _02006D30 ; =0x0000FFF5
mov r3, #1
tst r2, r3, lsl r0
beq _02006D1C
ldr r2, _02006D34 ; =0x03807924
ldrb r0, [r2, r0]
bl sub_02006E28
add r1, r4, #0x4000000
strb r0, [r1, #0x400]
_02006D1C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02006D24: .word 0x03807558
_02006D28: .word 0x03807914
_02006D2C: .word 0x03807910
_02006D30: .word 0x0000FFF5
_02006D34: .word 0x03807924
arm_func_end sub_02006CC0
arm_func_start sub_02006D38
sub_02006D38: ; 0x02006D38
mov r0, r0, lsl #4
add r0, r0, #0x4000000
ldrb r0, [r0, #0x403]
tst r0, #0x80
movne r0, #1
moveq r0, #0
bx lr
arm_func_end sub_02006D38
arm_func_start sub_02006D54
sub_02006D54: ; 0x02006D54
ldr r1, _02006DB0 ; =0x03807558
cmp r0, #0
str r0, [r1]
blt _02006D88
mov r2, #0
and r1, r0, #0xff
_02006D6C:
mov r0, r2, lsl #4
add r0, r0, #0x4000000
add r2, r2, #1
strb r1, [r0, #0x402]
cmp r2, #0x10
blt _02006D6C
bx lr
_02006D88:
ldr r2, _02006DB4 ; =0x03807914
mov r3, #0
_02006D90:
ldrb r1, [r2, r3]
mov r0, r3, lsl #4
add r0, r0, #0x4000000
add r3, r3, #1
strb r1, [r0, #0x402]
cmp r3, #0x10
blt _02006D90
bx lr
.align 2, 0
_02006DB0: .word 0x03807558
_02006DB4: .word 0x03807914
arm_func_end sub_02006D54
arm_func_start sub_02006DB8
sub_02006DB8: ; 0x02006DB8
mov r0, r0, lsl #4
add r0, r0, #0x4000000
ldr r0, [r0, #0x400]
bx lr
arm_func_end sub_02006DB8
arm_func_start sub_02006DC8
sub_02006DC8: ; 0x02006DC8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r1, _02006E1C ; =0x03807910
ldr r5, _02006E20 ; =0x03807924
ldr r4, _02006E24 ; =0x0000FFF5
str r0, [r1]
mov r7, #0
mov r6, #1
_02006DE4:
tst r4, r6, lsl r7
beq _02006E08
mov r8, r7, lsl #4
add r0, r8, #0x4000000
ldrb r1, [r0, #0x402]
ldrb r0, [r5, r7]
bl sub_02006E28
add r1, r8, #0x4000000
strb r0, [r1, #0x400]
_02006E08:
add r7, r7, #1
cmp r7, #0x10
blt _02006DE4
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02006E1C: .word 0x03807910
_02006E20: .word 0x03807924
_02006E24: .word 0x0000FFF5
arm_func_end sub_02006DC8
arm_func_start sub_02006E28
sub_02006E28: ; 0x02006E28
cmp r1, #0x18
bge _02006E58
ldr r2, _02006E8C ; =0x03807910
add r3, r1, #0x28
ldr ip, [r2]
ldr r1, _02006E90 ; =0x00007FFF
mul r2, ip, r3
sub r1, r1, ip
add r1, r2, r1, lsl #6
mul r1, r0, r1
mov r0, r1, asr #0x15
bx lr
_02006E58:
cmp r1, #0x68
bxle lr
ldr r2, _02006E8C ; =0x03807910
sub r1, r1, #0x28
ldr ip, [r2]
rsb r2, ip, #0
mul r3, r2, r1
add r1, ip, #0xff
add r1, r1, #0x7f00
add r1, r3, r1, lsl #6
mul r1, r0, r1
mov r0, r1, asr #0x15
bx lr
.align 2, 0
_02006E8C: .word 0x03807910
_02006E90: .word 0x00007FFF
arm_func_end sub_02006E28
arm_func_start sub_02006E94
sub_02006E94: ; 0x02006E94
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
rsb r0, r1, #0
mov r4, #0
b _02006EB0
_02006EA8:
sub r4, r4, #1
add r0, r0, #0x300
_02006EB0:
cmp r0, #0
blt _02006EA8
b _02006EC4
_02006EBC:
add r4, r4, #1
sub r0, r0, #0x300
_02006EC4:
cmp r0, #0x300
bge _02006EBC
bl sub_02006FB4
adds r3, r0, #0x10000
mov r0, r5, asr #0x1f
umull r2, r1, r3, r5
mov ip, #0
mla r1, r3, r0, r1
adc r3, ip, #0
sub r0, r4, #0x10
mla r1, r3, r5, r1
cmp r0, #0
mov r4, #0x10000
bgt _02006F1C
rsb r3, r0, #0
mov r4, r2, lsr r3
rsb r0, r3, #0x20
orr r4, r4, r1, lsl r0
sub r0, r3, #0x20
mov r3, r1, lsr r3
orr r4, r4, r1, lsr r0
b _02006F78
_02006F1C:
cmp r0, #0x20
bge _02006F70
rsb r5, r0, #0x20
sub lr, ip, #1
mov r6, lr, lsl r5
rsb r3, r5, #0x20
orr r6, r6, lr, lsr r3
sub r3, r5, #0x20
orr r6, r6, lr, lsl r3
and r3, r1, r6
and r6, r2, lr, lsl r5
cmp r3, ip
cmpeq r6, ip
subne r0, r4, #1
bne _02006FA8
mov r3, r1, lsl r0
orr r3, r3, r2, lsr r5
sub r1, r0, #0x20
mov r4, r2, lsl r0
orr r3, r3, r2, lsl r1
b _02006F78
_02006F70:
sub r0, r4, #1
b _02006FA8
_02006F78:
mov r0, #0x10
cmp r3, #0
cmpeq r4, #0x10
mov r1, #0
movlo r4, r0
blo _02006FA0
ldr r0, _02006FB0 ; =0x0000FFFF
cmp r3, r1
cmpeq r4, r0
movhi r4, r0
_02006FA0:
mov r0, r4, lsl #0x10
mov r0, r0, lsr #0x10
_02006FA8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02006FB0: .word 0x0000FFFF
arm_func_end sub_02006E94
arm_func_start sub_02006FB4
sub_02006FB4: ; 0x02006FB4
ldr ip, _02006FBC ; =sub_03803828
bx ip
.align 2, 0
_02006FBC: .word sub_03803828
arm_func_end sub_02006FB4
arm_func_start sub_02006FC0
sub_02006FC0: ; 0x02006FC0
stmdb sp!, {r4, lr}
ldr r1, _02007030 ; =0xFFFFFD2D
mov r4, r0
cmp r4, r1
movlt r4, r1
blt _02006FE0
cmp r4, #0
movgt r4, #0
_02006FE0:
add r0, r4, #0xd3
add r0, r0, #0x200
bl sub_02007034
mvn r2, #0xef
cmp r4, r2
movlt r1, #3
blt _0200701C
add r1, r2, #0x78
cmp r4, r1
movlt r1, #2
blt _0200701C
add r1, r2, #0xb4
cmp r4, r1
movlt r1, #1
movge r1, #0
_0200701C:
orr r0, r0, r1, lsl #8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02007030: .word 0xFFFFFD2D
arm_func_end sub_02006FC0
arm_func_start sub_02007034
sub_02007034: ; 0x02007034
ldr ip, _0200703C ; =sub_0380382C
bx ip
.align 2, 0
_0200703C: .word sub_0380382C
arm_func_end sub_02007034
arm_func_start sub_02007040
sub_02007040: ; 0x02007040
cmp r0, #0x20
ldrlt r1, _020070A8 ; =0x03806FB8
ldrltsb r0, [r1, r0]
bxlt lr
cmp r0, #0x40
ldrlt r1, _020070A8 ; =0x03806FB8
rsblt r0, r0, #0x40
ldrltsb r0, [r1, r0]
bxlt lr
cmp r0, #0x60
bge _02007088
ldr r1, _020070A8 ; =0x03806FB8
sub r0, r0, #0x40
ldrsb r0, [r1, r0]
rsb r0, r0, #0
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
bx lr
_02007088:
ldr r1, _020070A8 ; =0x03806FB8
sub r0, r0, #0x60
rsb r0, r0, #0x20
ldrsb r0, [r1, r0]
rsb r0, r0, #0
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
bx lr
.align 2, 0
_020070A8: .word 0x03806FB8
arm_func_end sub_02007040
arm_func_start sub_020070AC
sub_020070AC: ; 0x020070AC
ldr r2, _020070D4 ; =0x0380755C
ldr r0, _020070D8 ; =0x0019660D
ldr r3, [r2]
ldr r1, _020070DC ; =0x3C6EF35F
mla r1, r3, r0, r1
mov r0, r1, lsr #0x10
mov r0, r0, lsl #0x10
str r1, [r2]
mov r0, r0, lsr #0x10
bx lr
.align 2, 0
_020070D4: .word 0x0380755C
_020070D8: .word 0x0019660D
_020070DC: .word 0x3C6EF35F
arm_func_end sub_020070AC
arm_func_start sub_020070E0
sub_020070E0: ; 0x020070E0
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r1, _0200713C ; =0x03807934
mov r4, r0
ldr r0, [r1]
cmp r0, #0
bne _02007130
mov r0, #1
str r0, [r1]
bl sub_0200A0C0
mov r0, #0x400
str r0, [sp]
ldr r0, _02007140 ; =0x038079A4
ldr r1, _02007144 ; =0x037FF008
ldr r3, _02007148 ; =0x03807E48
mov r2, #0
str r4, [sp, #4]
bl sub_0200423C
ldr r0, _02007140 ; =0x038079A4
bl sub_02004554
_02007130:
add sp, sp, #8
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200713C: .word 0x03807934
_02007140: .word 0x038079A4
_02007144: .word 0x037FF008
_02007148: .word 0x03807E48
arm_func_end sub_020070E0
arm_func_start sub_0200714C
sub_0200714C: ; 0x0200714C
stmdb sp!, {lr}
sub sp, sp, #0xc
bl sub_02005404
ldr r3, _02007190 ; =0x037FEFEC
adds ip, r0, #0x10000
str r3, [sp, #4]
mov lr, #0
str lr, [sp, #8]
adc r2, r1, #0
ldr r3, _02007194 ; =0x00000AA8
ldr r0, _02007198 ; =0x03807978
mov r1, ip
str lr, [sp]
bl sub_02005734
add sp, sp, #0xc
ldmia sp!, {lr}
bx lr
.align 2, 0
_02007190: .word 0x037FEFEC
_02007194: .word 0x00000AA8
_02007198: .word 0x03807978
arm_func_end sub_0200714C
arm_func_start sub_0200719C
sub_0200719C: ; 0x0200719C
ldr ip, _020071A8 ; =sub_037FD5C0
ldr r0, _020071AC ; =0x03807978
bx ip
.align 2, 0
_020071A8: .word sub_037FD5C0
_020071AC: .word 0x03807978
arm_func_end sub_0200719C
arm_func_start sub_020071B0
sub_020071B0: ; 0x020071B0
ldr ip, _020071C4 ; =sub_037FC6D4
ldr r0, _020071C8 ; =0x03807958
mov r1, #2
mov r2, #0
bx ip
.align 2, 0
_020071C4: .word sub_037FC6D4
_020071C8: .word 0x03807958
arm_func_end sub_020071B0
arm_func_start sub_020071CC
sub_020071CC: ; 0x020071CC
bx lr
arm_func_end sub_020071CC
arm_func_start sub_020071D0
sub_020071D0: ; 0x020071D0
bx lr
arm_func_end sub_020071D0
arm_func_start sub_020071D4
sub_020071D4: ; 0x020071D4
ldr ip, _020071E8 ; =sub_037FC6D4
ldr r0, _020071EC ; =0x03807958
mov r1, #1
mov r2, #0
bx ip
.align 2, 0
_020071E8: .word sub_037FC6D4
_020071EC: .word 0x03807958
arm_func_end sub_020071D4
arm_func_start sub_020071F0
sub_020071F0: ; 0x020071F0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x10
ldr r0, _020072D0 ; =0x03807958
ldr r1, _020072D4 ; =0x03807938
mov r2, #8
bl sub_02004894
ldr r0, _020072D8 ; =0x03807978
bl sub_02005588
bl sub_0200734C
bl sub_020080D8
bl sub_02009F0C
bl sub_02006884
mov r0, #0
mov r1, r0
mov r2, r0
mov r3, r0
bl sub_020069B4
mov r0, #0x7f
bl sub_020069A4
bl sub_02005404
ldr r2, _020072DC ; =0x037FEFEC
adds r4, r0, #0x10000
str r2, [sp, #4]
mov r0, #0
str r0, [sp, #8]
str r0, [sp]
adc r2, r1, #0
ldr r3, _020072E0 ; =0x00000AA8
ldr r0, _020072D8 ; =0x03807978
mov r1, r4
bl sub_02005734
ldr r7, _020072D0 ; =0x03807958
mov r4, #1
add r6, sp, #0xc
mov r8, #0
mov r5, r4
_02007280:
mov r0, r7
mov r1, r6
mov r2, r5
mov sb, r8
bl sub_02004948
ldr r0, [sp, #0xc]
cmp r0, #1
beq _020072A8
cmp r0, #2
b _020072AC
_020072A8:
mov sb, r4
_020072AC:
bl sub_020073A8
bl sub_0200A104
mov r0, sb
bl sub_0200813C
mov r0, sb
bl sub_02007594
bl sub_02009E74
bl sub_020070AC
b _02007280
.align 2, 0
_020072D0: .word 0x03807958
_020072D4: .word 0x03807938
_020072D8: .word 0x03807978
_020072DC: .word 0x037FEFEC
_020072E0: .word 0x00000AA8
arm_func_end sub_020071F0
arm_func_start sub_020072E4
sub_020072E4: ; 0x020072E4
stmdb sp!, {r3, r4, r5, lr}
ldr r4, [sp, #0x10]
mov r5, r0, lsl #3
cmp r4, #0
movne r4, #0
moveq r4, #1
mov ip, r4, lsl #2
ldr lr, [sp, #0x14]
orr r1, ip, r1, lsl #3
orr ip, r1, lr, lsl #1
ldr r4, [sp, #0x18]
add r0, r0, #0x4000000
orr r4, r4, ip
strb r4, [r0, #0x508]
add r1, r5, #0x4000000
str r2, [r1, #0x510]
add r0, r1, #0x500
strh r3, [r0, #0x14]
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_020072E4
arm_func_start sub_02007334
sub_02007334: ; 0x02007334
add r0, r0, #0x4000000
ldrb r0, [r0, #0x508]
tst r0, #0x80
movne r0, #1
moveq r0, #0
bx lr
arm_func_end sub_02007334
arm_func_start sub_0200734C
sub_0200734C: ; 0x0200734C
stmdb sp!, {r3, lr}
ldr r3, _020073A0 ; =0x03807E70
mov lr, #0
mov r0, #0x54
_0200735C:
mul r1, lr, r0
add ip, r3, r1
strb lr, [r3, r1]
ldrb r1, [ip, #3]
add lr, lr, #1
bic r2, r1, #0xf8
and r1, r2, #0xff
bic r1, r1, #1
strb r1, [ip, #3]
cmp lr, #0x10
blt _0200735C
ldr r0, _020073A4 ; =0x03807E48
mov r1, #0
str r1, [r0, #4]
str r1, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020073A0: .word 0x03807E70
_020073A4: .word 0x03807E48
arm_func_end sub_0200734C
arm_func_start sub_020073A8
sub_020073A8: ; 0x020073A8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x18
ldr r7, _02007590 ; =0x03807E70
mov sb, #0
mov r4, #2
mov r5, #1
mov r6, sb
mov sl, #0x54
_020073C8:
mla r8, sb, sl, r7
ldrb r0, [r8, #3]
mov r0, r0, lsl #0x18
movs r0, r0, lsr #0x1b
beq _02007528
tst r0, #2
beq _020073F0
mov r0, sb
mov r1, r6
bl sub_02006C08
_020073F0:
ldrb r0, [r8, #3]
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x1b
tst r0, #1
beq _020074CC
ldrb r0, [r8, #1]
cmp r0, #0
beq _02007424
cmp r0, #1
beq _0200747C
cmp r0, #2
beq _020074A8
b _02007528
_02007424:
ldrb r0, [r8, #0x39]
ldrh ip, [r8, #0x24]
cmp r0, #0
ldrh r0, [r8, #0x3e]
movne r3, r5
str r0, [sp]
ldr r2, [r8, #0x40]
and r1, ip, #0xff
str r2, [sp, #4]
str r1, [sp, #8]
mov r0, ip, asr #8
str r0, [sp, #0xc]
ldrh r1, [r8, #0x26]
moveq r3, r4
str r1, [sp, #0x10]
ldrb r1, [r8, #0x23]
mov r0, sb
str r1, [sp, #0x14]
ldr r1, [r8, #0x44]
ldrb r2, [r8, #0x38]
bl sub_020069EC
b _02007528
_0200747C:
ldrh r3, [r8, #0x24]
ldrh r1, [r8, #0x26]
mov r0, sb
str r1, [sp]
ldrb r1, [r8, #0x23]
and r2, r3, #0xff
str r1, [sp, #4]
ldr r1, [r8, #0x44]
mov r3, r3, asr #8
bl sub_02006AB8
b _02007528
_020074A8:
ldrh r2, [r8, #0x24]
ldrb r1, [r8, #0x23]
mov r0, sb
str r1, [sp]
ldrh r3, [r8, #0x26]
and r1, r2, #0xff
mov r2, r2, asr #8
bl sub_02006B64
b _02007528
_020074CC:
tst r0, #4
beq _020074E0
ldrh r1, [r8, #0x26]
mov r0, sb
bl sub_02006CA8
_020074E0:
ldrb r0, [r8, #3]
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x1b
tst r0, #8
beq _02007508
ldrh r2, [r8, #0x24]
mov r0, sb
and r1, r2, #0xff
mov r2, r2, asr #8
bl sub_02006C30
_02007508:
ldrb r0, [r8, #3]
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x1b
tst r0, #0x10
beq _02007528
ldrb r1, [r8, #0x23]
mov r0, sb
bl sub_02006CC0
_02007528:
add sb, sb, #1
cmp sb, #0x10
blt _020073C8
ldr r3, _02007590 ; =0x03807E70
mov r4, #0
mov r1, #0x54
_02007540:
mla r5, r4, r1, r3
ldrb r0, [r5, #3]
mov r0, r0, lsl #0x18
movs r0, r0, lsr #0x1b
beq _02007578
tst r0, #1
movne r0, r4, lsl #4
addne r0, r0, #0x4000000
ldrneb r2, [r0, #0x403]
orrne r2, r2, #0x80
strneb r2, [r0, #0x403]
ldrb r0, [r5, #3]
bic r0, r0, #0xf8
strb r0, [r5, #3]
_02007578:
add r4, r4, #1
cmp r4, #0x10
blt _02007540
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_02007590: .word 0x03807E70
arm_func_end sub_020073A8
arm_func_start sub_02007594
sub_02007594: ; 0x02007594
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov fp, #0x8000
mov sl, r0
mov r5, #0
rsb fp, fp, #0
_020075A8:
ldr r0, _02007938 ; =0x03807E70
mov r1, #0x54
mla r4, r5, r1, r0
ldrb r2, [r4, #3]
mov r6, #0
mov r0, r2, lsl #0x1f
mov r7, r6
mov r8, r6
movs r0, r0, lsr #0x1f
beq _02007924
mov r0, r2, lsl #0x1e
movs r0, r0, lsr #0x1f
beq _0200760C
bic r1, r2, #0xf8
mov r0, r2, lsl #0x18
mov r0, r0, lsr #0x1b
orr r0, r0, #1
and r0, r0, #0xff
mov r0, r0, lsl #0x1b
orr r0, r1, r0, lsr #24
strb r0, [r4, #3]
and r0, r0, #0xff
bic r0, r0, #2
strb r0, [r4, #3]
b _0200765C
_0200760C:
mov r0, r5
bl sub_02006D38
cmp r0, #0
bne _0200765C
ldr r3, [r4, #0x48]
cmp r3, #0
moveq r0, r6
streqb r0, [r4, #0x22]
beq _02007644
ldr r2, [r4, #0x4c]
mov r0, r4
mov r1, #1
mov lr, pc
bx r3
_02007644:
mov r0, #0
strh r0, [r4, #0x24]
ldrb r0, [r4, #3]
bic r0, r0, #1
strb r0, [r4, #3]
b _02007924
_0200765C:
ldrb r0, [r4, #9]
ldrb r1, [r4, #8]
mov r2, r0, lsl #1
ldr r0, _0200793C ; =0x03806FDC
ldrsh r2, [r0, r2]
ldrb r0, [r4, #5]
add r6, r6, r2
sub r0, r1, r0
add r7, r7, r0, lsl #6
mov r0, r4
mov r1, sl
bl sub_02007A14
ldrsh r3, [r4, #0x32]
add r6, r6, r0
cmp r3, #0
moveq r0, #0
beq _020076E4
ldr r0, [r4, #0x14]
ldr r2, [r4, #0x18]
cmp r0, r2
movge r0, #0
bge _020076E4
sub r0, r2, r0
smull r0, r1, r3, r0
mov r3, r2, asr #0x1f
bl sub_0200EBB8
cmp sl, #0
beq _020076E4
ldrb r1, [r4, #3]
mov r1, r1, lsl #0x1d
movs r1, r1, lsr #0x1f
ldrne r1, [r4, #0x14]
addne r1, r1, #1
strne r1, [r4, #0x14]
_020076E4:
ldrsh r1, [r4, #0xc]
add r2, r7, r0
ldrsh r0, [r4, #6]
add r1, r6, r1
add r6, r1, r0
ldrsh r1, [r4, #0xe]
add r0, r4, #0x28
add r7, r2, r1
bl sub_02007FFC
mov r1, r0, asr #0x1f
cmp r1, #0
mov sb, r0
cmpeq r0, #0
beq _02007778
ldrb r2, [r4, #0x28]
cmp r2, #0
beq _02007764
cmp r2, #1
beq _02007744
cmp r2, #2
moveq r1, r1, lsl #6
orreq r1, r1, r0, lsr #26
moveq sb, r0, lsl #6
b _02007770
_02007744:
mov r2, #0x3c
umull sb, r3, r0, r2
mov r2, #0
mla r3, r0, r2, r3
mov r0, #0x3c
mla r3, r1, r0, r3
mov r1, r3
b _02007770
_02007764:
mov r1, r1, lsl #6
orr r1, r1, r0, lsr #26
mov sb, r0, lsl #6
_02007770:
mov sb, sb, lsr #0xe
orr sb, sb, r1, lsl #18
_02007778:
cmp sl, #0
beq _02007788
add r0, r4, #0x28
bl sub_02007F9C
_02007788:
ldrb r0, [r4, #0x28]
cmp r0, #0
beq _020077B4
cmp r0, #1
beq _020077A8
cmp r0, #2
addeq r8, r8, sb
b _020077B8
_020077A8:
cmp r6, fp
addgt r6, r6, sb
b _020077B8
_020077B4:
add r7, r7, sb
_020077B8:
ldrsb r1, [r4, #0xa]
ldrb r0, [r4, #4]
add r8, r8, r1
cmp r0, #0x7f
mulne r0, r8, r0
addne r0, r0, #0x40
movne r8, r0, asr #7
ldrsb r1, [r4, #0xb]
ldrb r0, [r4, #2]
add r8, r8, r1
cmp r0, #3
bne _02007844
ldr r0, _02007940 ; =0xFFFFFD2D
cmp r6, r0
bgt _02007844
ldrb r0, [r4, #3]
bic r0, r0, #0xf8
orr r0, r0, #0x10
strb r0, [r4, #3]
ldr r3, [r4, #0x48]
cmp r3, #0
moveq r0, #0
streqb r0, [r4, #0x22]
beq _0200782C
ldr r2, [r4, #0x4c]
mov r0, r4
mov r1, #1
mov lr, pc
bx r3
_0200782C:
mov r0, #0
strh r0, [r4, #0x24]
ldrb r0, [r4, #3]
bic r0, r0, #1
strb r0, [r4, #3]
b _02007924
_02007844:
mov r0, r6
bl sub_02006FC0
mov r6, r0
ldrh r0, [r4, #0x3c]
mov r1, r7
bl sub_02006E94
ldrb r1, [r4, #1]
cmp r1, #1
ldreq r1, _02007944 ; =0x0000FFFC
andeq r0, r0, r1
moveq r0, r0, lsl #0x10
moveq r0, r0, lsr #0x10
adds r8, r8, #0x40
movmi r8, #0
bmi _02007888
cmp r8, #0x7f
movgt r8, #0x7f
_02007888:
ldrh r1, [r4, #0x24]
cmp r6, r1
beq _020078BC
strh r6, [r4, #0x24]
ldrb r1, [r4, #3]
bic r2, r1, #0xf8
mov r1, r1, lsl #0x18
mov r1, r1, lsr #0x1b
orr r1, r1, #8
and r1, r1, #0xff
mov r1, r1, lsl #0x1b
orr r1, r2, r1, lsr #24
strb r1, [r4, #3]
_020078BC:
ldrh r1, [r4, #0x26]
cmp r0, r1
beq _020078F0
strh r0, [r4, #0x26]
ldrb r0, [r4, #3]
bic r1, r0, #0xf8
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x1b
orr r0, r0, #4
and r0, r0, #0xff
mov r0, r0, lsl #0x1b
orr r0, r1, r0, lsr #24
strb r0, [r4, #3]
_020078F0:
ldrb r0, [r4, #0x23]
cmp r8, r0
beq _02007924
strb r8, [r4, #0x23]
ldrb r0, [r4, #3]
bic r1, r0, #0xf8
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x1b
orr r0, r0, #0x10
and r0, r0, #0xff
mov r0, r0, lsl #0x1b
orr r0, r1, r0, lsr #24
strb r0, [r4, #3]
_02007924:
add r5, r5, #1
cmp r5, #0x10
blt _020075A8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02007938: .word 0x03807E70
_0200793C: .word 0x03806FDC
_02007940: .word 0xFFFFFD2D
_02007944: .word 0x0000FFFC
arm_func_end sub_02007594
arm_func_start sub_02007948
sub_02007948: ; 0x02007948
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
strb r0, [r4, #1]
mov lr, r2
add ip, r4, #0x38
ldmia r1, {r0, r1, r2}
stmia ip, {r0, r1, r2}
mov r0, r4
mov r1, r3
str lr, [r4, #0x44]
bl sub_020080A0
mov r0, #1
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02007948
arm_func_start sub_02007984
sub_02007984: ; 0x02007984
stmdb sp!, {r3, lr}
ldrb r3, [r0]
cmp r3, #8
movlo r0, #0
blo _020079C4
cmp r3, #0xd
movhi r0, #0
bhi _020079C4
mov r3, #1
strb r3, [r0, #1]
str r1, [r0, #0x44]
ldr r3, _020079CC ; =0x00001F46
mov r1, r2
strh r3, [r0, #0x3c]
bl sub_020080A0
mov r0, #1
_020079C4:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020079CC: .word 0x00001F46
arm_func_end sub_02007984
arm_func_start sub_020079D0
sub_020079D0: ; 0x020079D0
stmdb sp!, {r3, lr}
ldrb r2, [r0]
cmp r2, #0xe
movlo r0, #0
blo _02007A08
cmp r2, #0xf
movhi r0, #0
bhi _02007A08
ldr r2, _02007A10 ; =0x00001F46
mov r3, #2
strb r3, [r0, #1]
strh r2, [r0, #0x3c]
bl sub_020080A0
mov r0, #1
_02007A08:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02007A10: .word 0x00001F46
arm_func_end sub_020079D0
arm_func_start sub_02007A14
sub_02007A14: ; 0x02007A14
cmp r1, #0
beq _02007AAC
ldrb r1, [r0, #2]
cmp r1, #3
addls pc, pc, r1, lsl #2
b _02007AAC
_02007A2C: ; jump table
b _02007A3C ; case 0
b _02007A64 ; case 1
b _02007AAC ; case 2
b _02007A9C ; case 3
_02007A3C:
ldr r2, [r0, #0x10]
ldrb r1, [r0, #0x1c]
rsb r2, r2, #0
mul r1, r2, r1
mov r1, r1, asr #8
rsbs r1, r1, #0
str r1, [r0, #0x10]
moveq r1, #1
streqb r1, [r0, #2]
b _02007AAC
_02007A64:
ldrb r2, [r0, #0x1d]
ldr r1, _02007AB8 ; =0x03806FDC
mov r2, r2, lsl #1
ldrsh r3, [r1, r2]
ldr r2, [r0, #0x10]
ldrh r1, [r0, #0x1e]
mov ip, r3, lsl #7
sub r1, r2, r1
str r1, [r0, #0x10]
cmp r1, r3, lsl #7
strle ip, [r0, #0x10]
movle r1, #2
strleb r1, [r0, #2]
b _02007AAC
_02007A9C:
ldr r2, [r0, #0x10]
ldrh r1, [r0, #0x20]
sub r1, r2, r1
str r1, [r0, #0x10]
_02007AAC:
ldr r0, [r0, #0x10]
mov r0, r0, asr #7
bx lr
.align 2, 0
_02007AB8: .word 0x03806FDC
arm_func_end sub_02007A14
arm_func_start sub_02007ABC
sub_02007ABC: ; 0x02007ABC
cmp r1, #0x6d
ldrge r2, _02007AD8 ; =0x038071F0
rsblt r1, r1, #0xff
rsbge r1, r1, #0x7f
ldrgeb r1, [r2, r1]
strb r1, [r0, #0x1c]
bx lr
.align 2, 0
_02007AD8: .word 0x038071F0
arm_func_end sub_02007ABC
arm_func_start sub_02007ADC
sub_02007ADC: ; 0x02007ADC
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, r1
bl sub_0200804C
strh r0, [r4, #0x1e]
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02007ADC
arm_func_start sub_02007AF8
sub_02007AF8: ; 0x02007AF8
strb r1, [r0, #0x1d]
bx lr
arm_func_end sub_02007AF8
arm_func_start sub_02007B00
sub_02007B00: ; 0x02007B00
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, r1
bl sub_0200804C
strh r0, [r4, #0x20]
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02007B00
arm_func_start sub_02007B1C
sub_02007B1C: ; 0x02007B1C
mov r1, #3
strb r1, [r0, #2]
bx lr
arm_func_end sub_02007B1C
arm_func_start sub_02007B28
sub_02007B28: ; 0x02007B28
ldrb r0, [r0, #3]
mov r0, r0, lsl #0x1f
mov r0, r0, lsr #0x1f
bx lr
arm_func_end sub_02007B28
arm_func_start sub_02007B38
sub_02007B38: ; 0x02007B38
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r4, _02007CF0 ; =0x03807E48
mov r6, r1
ldr r1, [r4, #4]
mov r5, r3
mvn r1, r1
cmp r2, #0
and r0, r0, r1
ldreq r1, [r4]
mov r4, #0
mvneq r1, r1
andeq r0, r0, r1
ldr r3, _02007CF4 ; =0x038071DC
ldr r8, _02007CF8 ; =0x038071E0
mov sb, r4
mvn r1, #0
mov fp, #1
_02007B7C:
ldrb ip, [r8, sb]
tst r0, fp, lsl ip
beq _02007BFC
ldr r2, _02007CFC ; =0x03807E70
mov r7, #0x54
mla sl, ip, r7, r2
cmp r4, #0
moveq r4, sl
beq _02007BFC
ldrb r7, [r4, #0x22]
ldrb r2, [sl, #0x22]
cmp r2, r7
bhi _02007BFC
bne _02007BF8
ldrh r2, [r4, #0x24]
ldrh r7, [sl, #0x24]
mov ip, r2, lsl #0x18
mov ip, ip, lsr #0x14
ldrb r2, [r3, r2, asr #8]
mov lr, r7, lsl #0x18
mov r2, ip, asr r2
mov ip, lr, lsr #0x14
ldrb r7, [r3, r7, asr #8]
cmp r2, ip, asr r7
beq _02007BEC
movlt r2, fp
movge r2, r1
b _02007BF0
_02007BEC:
mov r2, #0
_02007BF0:
cmp r2, #0
bge _02007BFC
_02007BF8:
mov r4, sl
_02007BFC:
add sb, sb, #1
cmp sb, #0x10
blt _02007B7C
cmp r4, #0
moveq r0, #0
beq _02007CE8
ldrb r0, [r4, #0x22]
cmp r6, r0
movlt r0, #0
blt _02007CE8
ldr r3, [r4, #0x48]
cmp r3, #0
beq _02007C44
ldr r2, [r4, #0x4c]
mov r0, r4
mov r1, #0
mov lr, pc
bx r3
_02007C44:
ldrb r0, [r4, #3]
mov r7, #0
bic r0, r0, #0xf8
orr r1, r0, #0x10
and r0, r1, #0xff
bic r0, r0, #1
strb r0, [r4, #3]
str r7, [r4, #0x50]
ldr r0, [sp, #0x28]
str r5, [r4, #0x48]
str r0, [r4, #0x4c]
str r7, [r4, #0x34]
strb r6, [r4, #0x22]
mov r3, #0x7f
strh r3, [r4, #0x24]
ldrb r1, [r4, #3]
mov r0, #0x3c
bic r2, r1, #2
and r1, r2, #0xff
orr r1, r1, #4
strb r1, [r4, #3]
strb r0, [r4, #8]
strb r0, [r4, #5]
strb r3, [r4, #9]
strb r7, [r4, #0xa]
strh r7, [r4, #0xc]
strh r7, [r4, #6]
strh r7, [r4, #0xe]
strb r7, [r4, #0xb]
strb r3, [r4, #4]
strh r7, [r4, #0x32]
str r7, [r4, #0x18]
str r7, [r4, #0x14]
ldr r1, _02007D00 ; =0x0000FFFF
strb r7, [r4, #0x1c]
strh r1, [r4, #0x1e]
strb r3, [r4, #0x1d]
add r0, r4, #0x28
strh r1, [r4, #0x20]
bl sub_02007F78
mov r0, r4
_02007CE8:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02007CF0: .word 0x03807E48
_02007CF4: .word 0x038071DC
_02007CF8: .word 0x038071E0
_02007CFC: .word 0x03807E70
_02007D00: .word 0x0000FFFF
arm_func_end sub_02007B38
arm_func_start sub_02007D04
sub_02007D04: ; 0x02007D04
cmp r0, #0
movne r1, #0
strne r1, [r0, #0x48]
strne r1, [r0, #0x4c]
bx lr
arm_func_end sub_02007D04
arm_func_start sub_02007D18
sub_02007D18: ; 0x02007D18
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sb, #0
ldr r7, _02007DC0 ; =0x03807E70
ldr r4, _02007DC4 ; =0x03807E48
mov sl, r0
mov r5, sb
mov r6, #1
mov fp, #0x54
b _02007DA8
_02007D3C:
tst sl, #1
beq _02007DA0
ldr r0, [r4, #4]
mla r8, sb, fp, r7
tst r0, r6, lsl sb
bne _02007DA0
ldr r3, [r8, #0x48]
cmp r3, #0
beq _02007D74
ldr r2, [r8, #0x4c]
mov r0, r8
mov r1, #0
mov lr, pc
bx r3
_02007D74:
mov r0, sb
mov r1, #0
bl sub_02006C08
strb r5, [r8, #0x22]
mov r0, r8
bl sub_02007D04
ldrb r0, [r8, #3]
bic r1, r0, #0xf8
and r0, r1, #0xff
bic r0, r0, #1
strb r0, [r8, #3]
_02007DA0:
add sb, sb, #1
mov sl, sl, lsr #1
_02007DA8:
cmp sb, #0x10
bge _02007DB8
cmp sl, #0
bne _02007D3C
_02007DB8:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02007DC0: .word 0x03807E70
_02007DC4: .word 0x03807E48
arm_func_end sub_02007D18
arm_func_start sub_02007DC8
sub_02007DC8: ; 0x02007DC8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
mov r8, #0
ldr r5, _02007EA0 ; =0x03807E70
mov sb, r1
mov r7, sl
mov fp, r8
mov r4, #1
b _02007E64
_02007DEC:
tst r7, #1
beq _02007E5C
ldr r0, _02007EA4 ; =0x03807E48
ldr r1, [r0, #4]
mov r0, #0x54
mla r6, r8, r0, r5
tst r1, r4, lsl r8
bne _02007E5C
ldr r3, [r6, #0x48]
cmp r3, #0
beq _02007E2C
ldr r2, [r6, #0x4c]
mov r0, r6
mov r1, #0
mov lr, pc
bx r3
_02007E2C:
mov r0, r8
mov r1, #0
bl sub_02006C08
strb fp, [r6, #0x22]
mov r0, r6
bl sub_02007D04
ldrb r0, [r6, #3]
bic r0, r0, #0xf8
strb r0, [r6, #3]
and r0, r0, #0xff
bic r0, r0, #1
strb r0, [r6, #3]
_02007E5C:
add r8, r8, #1
mov r7, r7, lsr #1
_02007E64:
cmp r8, #0x10
bge _02007E74
cmp r7, #0
bne _02007DEC
_02007E74:
tst sb, #1
ldrne r0, _02007EA4 ; =0x03807E48
ldrne r1, [r0]
orrne r1, r1, sl
strne r1, [r0]
ldreq r0, _02007EA4 ; =0x03807E48
ldreq r1, [r0, #4]
orreq r1, r1, sl
streq r1, [r0, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02007EA0: .word 0x03807E70
_02007EA4: .word 0x03807E48
arm_func_end sub_02007DC8
arm_func_start sub_02007EA8
sub_02007EA8: ; 0x02007EA8
tst r1, #1
ldreq r1, _02007EDC ; =0x03807E48
mvneq r0, r0
ldreq r2, [r1, #4]
andeq r0, r2, r0
streq r0, [r1, #4]
bxeq lr
ldr r1, _02007EDC ; =0x03807E48
mvn r0, r0
ldr r2, [r1]
and r0, r2, r0
str r0, [r1]
bx lr
.align 2, 0
_02007EDC: .word 0x03807E48
arm_func_end sub_02007EA8
arm_func_start sub_02007EE0
sub_02007EE0: ; 0x02007EE0
tst r0, #1
ldrne r0, _02007EF8 ; =0x03807E48
ldrne r0, [r0]
ldreq r0, _02007EF8 ; =0x03807E48
ldreq r0, [r0, #4]
bx lr
.align 2, 0
_02007EF8: .word 0x03807E48
arm_func_end sub_02007EE0
arm_func_start sub_02007EFC
sub_02007EFC: ; 0x02007EFC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r5, _02007F74 ; =0x03807E70
mov r6, #0
mov r8, r0
mov r7, r1
mov r4, r6
mov sb, #0x54
_02007F18:
mla r2, r6, sb, r5
ldrb r1, [r2, #3]
mov r0, r1, lsl #0x1f
movs r0, r0, lsr #0x1f
beq _02007F5C
ldrb r0, [r2, #1]
cmp r0, #0
bne _02007F5C
ldr r0, [r2, #0x44]
cmp r8, r0
cmpls r0, r7
bhi _02007F5C
bic r3, r1, #2
mov r0, r6
mov r1, r4
strb r3, [r2, #3]
bl sub_02006C08
_02007F5C:
add r0, r6, #1
and r6, r0, #0xff
cmp r6, #0x10
blo _02007F18
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_02007F74: .word 0x03807E70
arm_func_end sub_02007EFC
arm_func_start sub_02007F78
sub_02007F78: ; 0x02007F78
mov r2, #0
strb r2, [r0]
strb r2, [r0, #2]
mov r1, #1
strb r1, [r0, #3]
mov r1, #0x10
strb r1, [r0, #1]
strh r2, [r0, #4]
bx lr
arm_func_end sub_02007F78
arm_func_start sub_02007F9C
sub_02007F9C: ; 0x02007F9C
ldrh r2, [r0, #6]
ldrh r1, [r0, #4]
cmp r2, r1
addlo r1, r2, #1
strloh r1, [r0, #6]
bxlo lr
ldrh r1, [r0, #8]
ldrb r2, [r0, #1]
add r1, r1, r2, lsl #6
mov r3, r1, lsr #8
b _02007FCC
_02007FC8:
sub r3, r3, #0x80
_02007FCC:
cmp r3, #0x80
bhs _02007FC8
ldrh r1, [r0, #8]
add r1, r1, r2, lsl #6
strh r1, [r0, #8]
ldrh r1, [r0, #8]
and r1, r1, #0xff
strh r1, [r0, #8]
ldrh r1, [r0, #8]
orr r1, r1, r3, lsl #8
strh r1, [r0, #8]
bx lr
arm_func_end sub_02007F9C
arm_func_start sub_02007FFC
sub_02007FFC: ; 0x02007FFC
stmdb sp!, {r4, lr}
mov r4, r0
ldrb r0, [r4, #2]
cmp r0, #0
moveq r0, #0
beq _02008044
ldrh r1, [r4, #6]
ldrh r0, [r4, #4]
cmp r1, r0
movlo r0, #0
blo _02008044
ldrh r0, [r4, #8]
mov r0, r0, lsr #8
bl sub_02007040
ldrb r1, [r4, #2]
ldrb r2, [r4, #3]
mul r0, r1, r0
mul r0, r2, r0
_02008044:
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02007FFC
arm_func_start sub_0200804C
sub_0200804C: ; 0x0200804C
stmdb sp!, {r3, lr}
cmp r0, #0x7f
ldreq r0, _0200809C ; =0x0000FFFF
beq _02008094
cmp r0, #0x7e
moveq r0, #0x3c00
beq _02008094
cmp r0, #0x32
movlt r0, r0, lsl #1
addlt r0, r0, #1
movlt r0, r0, lsl #0x10
movlt r0, r0, lsr #0x10
blt _02008094
rsb r1, r0, #0x7e
mov r0, #0x1e00
bl sub_0200EDB0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
_02008094:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200809C: .word 0x0000FFFF
arm_func_end sub_0200804C
arm_func_start sub_020080A0
sub_020080A0: ; 0x020080A0
ldr r3, _020080D4 ; =0xFFFE9680
mov r2, #0
str r3, [r0, #0x10]
strb r2, [r0, #2]
str r1, [r0, #0x34]
strh r2, [r0, #0x30]
strh r2, [r0, #0x2e]
ldrb r1, [r0, #3]
orr r2, r1, #2
bic r1, r2, #1
orr r1, r1, #1
strb r1, [r0, #3]
bx lr
.align 2, 0
_020080D4: .word 0xFFFE9680
arm_func_end sub_020080A0
arm_func_start sub_020080D8
sub_020080D8: ; 0x020080D8
stmdb sp!, {r3, lr}
ldr r3, _02008134 ; =0x038083B0
mov lr, #0
mov r0, #0x24
_020080E8:
mul r2, lr, r0
ldrb r1, [r3, r2]
add ip, r3, r2
bic r1, r1, #1
strb r1, [r3, r2]
strb lr, [ip, #1]
add lr, lr, #1
cmp lr, #0x10
blt _020080E8
ldr r1, _02008138 ; =0x038085F0
mov r2, #0
_02008114:
ldrb r0, [r1, r2, lsl #6]
bic r0, r0, #1
strb r0, [r1, r2, lsl #6]
add r2, r2, #1
cmp r2, #0x20
blt _02008114
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02008134: .word 0x038083B0
_02008138: .word 0x038085F0
arm_func_end sub_020080D8
arm_func_start sub_0200813C
sub_0200813C: ; 0x0200813C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r6, #0
mov sb, r0
mov r5, r6
_0200814C:
mov r0, #0x24
mul r0, r5, r0
ldr r2, _02008294 ; =0x038083B0
ldrb r1, [r2, r0]
add r4, r2, r0
mov r0, r1, lsl #0x1f
movs r0, r0, lsr #0x1f
beq _02008270
mov r0, r1, lsl #0x1e
movs r0, r0, lsr #0x1f
beq _0200825C
cmp sb, #0
beq _02008228
mov r0, r1, lsl #0x1d
movs r0, r0, lsr #0x1f
bne _02008228
mov r8, #0
b _020081A4
_02008194:
ldrh r0, [r4, #0x1c]
add r8, r8, #1
sub r0, r0, #0xf0
strh r0, [r4, #0x1c]
_020081A4:
ldrh r0, [r4, #0x1c]
cmp r0, #0xf0
bhs _02008194
mov r7, #0
mov sl, #1
b _020081E0
_020081BC:
mov r0, r4
mov r1, sl
bl sub_02008ED8
cmp r0, #0
beq _020081DC
mov r0, r4
bl sub_02008CE8
b _020081E8
_020081DC:
add r7, r7, #1
_020081E0:
cmp r7, r8
blt _020081BC
_020081E8:
ldr r0, _02008298 ; =0x03807E6C
ldr r2, [r0]
cmp r2, #0
beq _02008210
ldrb r1, [r4, #1]
mov r0, #0x24
mla r2, r1, r0, r2
ldr r0, [r2, #0x40]
add r0, r0, r7
str r0, [r2, #0x40]
_02008210:
ldrh r2, [r4, #0x18]
ldrh r1, [r4, #0x1a]
ldrh r0, [r4, #0x1c]
mul r1, r2, r1
add r0, r0, r1, asr #8
strh r0, [r4, #0x1c]
_02008228:
mov r8, #0
mov r7, #1
_02008230:
mov r0, r4
mov r1, r8
bl sub_02008C64
cmp r0, #0
beq _02008250
mov r1, r4
mov r2, r7
bl sub_02008D80
_02008250:
add r8, r8, #1
cmp r8, #0x10
blt _02008230
_0200825C:
ldrb r0, [r4]
mov r0, r0, lsl #0x1f
movs r0, r0, lsr #0x1f
movne r0, #1
orrne r6, r6, r0, lsl r5
_02008270:
add r5, r5, #1
cmp r5, #0x10
blt _0200814C
ldr r0, _02008298 ; =0x03807E6C
ldr r0, [r0]
cmp r0, #0
strne r6, [r0, #4]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_02008294: .word 0x038083B0
_02008298: .word 0x03807E6C
arm_func_end sub_0200813C
arm_func_start sub_0200829C
sub_0200829C: ; 0x0200829C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r0
mov r0, #0x24
mul r5, sb, r0
ldr r6, _0200846C ; =0x038083B0
mov r8, r1
ldrb r0, [r6, r5]
mov r7, r2
mov r0, r0, lsl #0x1f
mov r4, r3
add r5, r6, r5
movs r0, r0, lsr #0x1f
beq _020082D8
mov r0, r5
bl sub_02008CE8
_020082D8:
ldrb r1, [r5]
mov r0, #0x78
bic r1, r1, #4
strb r1, [r5]
str r4, [r5, #0x20]
strh r0, [r5, #0x18]
mov r0, #0x100
strh r0, [r5, #0x1a]
mov r0, #0xf0
strh r0, [r5, #0x1c]
mov r0, #0x7f
strb r0, [r5, #5]
mov r2, #0
strh r2, [r5, #6]
mov r0, #0x40
strb r0, [r5, #4]
mov r1, #0xff
_0200831C:
add r0, r5, r2
add r2, r2, #1
strb r1, [r0, #8]
cmp r2, #0x10
blt _0200831C
ldr r1, _02008470 ; =0x03807E6C
ldr r3, [r1]
cmp r3, #0
beq _0200837C
ldrb r2, [r5, #1]
mov r0, #0x24
mla r0, r2, r0, r3
mov r6, #0
str r6, [r0, #0x40]
mvn r4, #0
mov r0, #0x24
_0200835C:
ldr r2, [r1]
ldrb r3, [r5, #1]
mla r2, r3, r0, r2
add r2, r2, r6, lsl #1
add r6, r6, #1
strh r4, [r2, #0x20]
cmp r6, #0x10
blt _0200835C
_0200837C:
bl sub_02009A6C
movs r4, r0
bmi _02008464
ldr r0, _02008474 ; =0x038085F0
add r6, r0, r4, lsl #6
mov r0, r6
bl sub_02008AD8
str r8, [r6, #0x24]
add r0, r8, r7
str r0, [r6, #0x28]
strb r4, [r5, #8]
ldr r0, [r6, #0x28]
bl sub_0200896C
mov r0, r6
bl sub_02008478
cmp r0, #0xfe
ldrne r0, [r6, #0x28]
subne r0, r0, #1
strne r0, [r6, #0x28]
bne _02008430
mov r0, r6
bl sub_02008478
mov r4, r0
mov r0, r6
bl sub_02008478
orr r0, r4, r0, lsl #8
mov r0, r0, lsl #0x10
ldr r4, _02008474 ; =0x038085F0
mov r8, r0, lsr #0x11
mov r7, #1
b _02008428
_020083F8:
tst r8, #1
beq _0200841C
bl sub_02009A6C
movs r6, r0
bmi _02008430
add r0, r4, r6, lsl #6
bl sub_02008AD8
add r0, r5, r7
strb r6, [r0, #8]
_0200841C:
mov r0, r8, lsl #0xf
add r7, r7, #1
mov r8, r0, lsr #0x10
_02008428:
cmp r8, #0
bne _020083F8
_02008430:
ldrb r1, [r5]
ldr r0, _02008470 ; =0x03807E6C
bic r1, r1, #1
ldr r2, [r0]
orr r1, r1, #1
and r0, r1, #0xff
bic r0, r0, #2
strb r0, [r5]
cmp r2, #0
ldrne r1, [r2, #4]
movne r0, #1
orrne r0, r1, r0, lsl sb
strne r0, [r2, #4]
_02008464:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0200846C: .word 0x038083B0
_02008470: .word 0x03807E6C
_02008474: .word 0x038085F0
arm_func_end sub_0200829C
arm_func_start sub_02008478
sub_02008478: ; 0x02008478
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020084D0 ; =0x03807E50
mov r5, r0
ldr r4, [r5, #0x28]
ldr r0, [r1, #4]
cmp r4, r0
blo _020084A0
ldr r0, [r1, #8]
cmp r4, r0
blo _020084A8
_020084A0:
mov r0, r4
bl sub_0200896C
_020084A8:
ldr r0, _020084D0 ; =0x03807E50
ldr r1, [r5, #0x28]
ldr r2, [r0, #4]
ldr r0, _020084D4 ; =0x03807E5C
sub r2, r4, r2
ldrb r0, [r0, r2]
add r1, r1, #1
str r1, [r5, #0x28]
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020084D0: .word 0x03807E50
_020084D4: .word 0x03807E5C
arm_func_end sub_02008478
arm_func_start sub_020084D8
sub_020084D8: ; 0x020084D8
mov r1, #0x24
mul r1, r0, r1
ldr r2, _020084F4 ; =0x038083B0
ldrb r0, [r2, r1]
orr r0, r0, #2
strb r0, [r2, r1]
bx lr
.align 2, 0
_020084F4: .word 0x038083B0
arm_func_end sub_020084D8
arm_func_start sub_020084F8
sub_020084F8: ; 0x020084F8
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_0200829C
mov r0, #0x24
mul r1, r4, r0
ldr r2, _02008524 ; =0x038083B0
ldrb r0, [r2, r1]
orr r0, r0, #2
strb r0, [r2, r1]
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02008524: .word 0x038083B0
arm_func_end sub_020084F8
arm_func_start sub_02008528
sub_02008528: ; 0x02008528
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x24
mul r1, r4, r0
ldr r2, _0200857C ; =0x038083B0
ldrb r0, [r2, r1]
mov r0, r0, lsl #0x1f
movs r0, r0, lsr #0x1f
beq _02008574
add r0, r2, r1
bl sub_02008CE8
ldr r0, _02008580 ; =0x03807E6C
ldr r2, [r0]
cmp r2, #0
movne r0, #1
ldrne r1, [r2, #4]
mvnne r0, r0, lsl r4
andne r0, r1, r0
strne r0, [r2, #4]
_02008574:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200857C: .word 0x038083B0
_02008580: .word 0x03807E6C
arm_func_end sub_02008528
arm_func_start sub_02008584
sub_02008584: ; 0x02008584
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r2, #0x24
mul r4, r0, r2
ldr r5, _020085F8 ; =0x038083B0
and r0, r1, #0xff
ldrb r2, [r5, r4]
mov r0, r0, lsl #0x1f
bic r2, r2, #4
orr r0, r2, r0, lsr #29
strb r0, [r5, r4]
cmp r1, #0
beq _020085F0
mov r8, #0
mov r6, #0x7f
_020085BC:
mov r1, r8
add r0, r5, r4
bl sub_02008C64
movs r7, r0
beq _020085E4
mov r2, r6
add r1, r5, r4
bl sub_02008BC8
mov r0, r7
bl sub_02008C30
_020085E4:
add r8, r8, #1
cmp r8, #0x10
blt _020085BC
_020085F0:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_020085F8: .word 0x038083B0
arm_func_end sub_02008584
arm_func_start sub_020085FC
sub_020085FC: ; 0x020085FC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r3, _020086C0 ; =0x038083B0
mov r2, #0x24
mla r6, r0, r2, r3
mov r8, r1
mov r7, #0
mov r4, #0x7f
_02008618:
mov r0, r6
mov r1, r7
bl sub_02008C64
movs r5, r0
beq _02008640
mov r1, r6
mov r2, r4
bl sub_02008BC8
mov r0, r5
bl sub_02008C30
_02008640:
add r7, r7, #1
cmp r7, #0x10
blt _02008618
bl sub_0200719C
mov r4, #0
mov r5, r4
b _02008680
_0200865C:
mov r0, r6
mov r1, r5
bl sub_02008ED8
cmp r0, #0
beq _0200867C
mov r0, r6
bl sub_02008CE8
b _02008688
_0200867C:
add r4, r4, #1
_02008680:
cmp r4, r8
blo _0200865C
_02008688:
bl sub_0200714C
ldr r0, _020086C4 ; =0x03807E6C
ldr r3, [r0]
cmp r3, #0
beq _020086B8
ldrb r1, [r6, #1]
mov r0, #0x24
mul r2, r1, r0
add r1, r3, #0x40
ldr r0, [r1, r2]
add r0, r0, r4
str r0, [r1, r2]
_020086B8:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_020086C0: .word 0x038083B0
_020086C4: .word 0x03807E6C
arm_func_end sub_020085FC
arm_func_start sub_020086C8
sub_020086C8: ; 0x020086C8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r3, #0x24
mul r4, r0, r3
ldr r5, _02008730 ; =0x038083B0
mov r8, r1
mov r7, r2
mov r6, #0
b _02008718
_020086E8:
tst r8, #1
beq _02008710
mov r1, r6
add r0, r5, r4
bl sub_02008C64
cmp r0, #0
beq _02008710
mov r2, r7
add r1, r5, r4
bl sub_02009AB0
_02008710:
add r6, r6, #1
mov r8, r8, lsr #1
_02008718:
cmp r6, #0x10
bge _02008728
cmp r8, #0
bne _020086E8
_02008728:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02008730: .word 0x038083B0
arm_func_end sub_020086C8
arm_func_start sub_02008734
sub_02008734: ; 0x02008734
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r3, #0x24
mul r4, r0, r3
mov r0, r2, lsl #0x10
ldr r5, _020087A0 ; =0x038083B0
mov r7, r1
mov r6, #0
mov r8, r0, lsr #0x10
b _02008788
_02008758:
tst r7, #1
beq _02008780
mov r1, r6
add r0, r5, r4
bl sub_02008C64
cmp r0, #0
strneh r8, [r0, #0x1e]
ldrneb r1, [r0]
orrne r1, r1, #0x80
strneb r1, [r0]
_02008780:
add r6, r6, #1
mov r7, r7, lsr #1
_02008788:
cmp r6, #0x10
bge _02008798
cmp r7, #0
bne _02008758
_02008798:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_020087A0: .word 0x038083B0
arm_func_end sub_02008734
arm_func_start sub_020087A4
sub_020087A4: ; 0x020087A4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r6, _0200882C ; =0x038083B0
mov r7, #0
mov sl, r0
mov sb, r1
mov fp, r7
mov r4, #0x24
_020087C0:
mul r5, r7, r4
ldrb r0, [r6, r5]
mov r0, r0, lsl #0x1f
movs r0, r0, lsr #0x1f
beq _02008818
mov r8, fp
b _02008810
_020087DC:
mov r1, r8
add r0, r6, r5
bl sub_02008C64
cmp r0, #0
beq _0200880C
ldr r0, [r0, #0x28]
cmp sl, r0
cmpls r0, sb
bhi _0200880C
add r0, r6, r5
bl sub_02008CE8
b _02008818
_0200880C:
add r8, r8, #1
_02008810:
cmp r8, #0x10
blt _020087DC
_02008818:
add r7, r7, #1
cmp r7, #0x10
blt _020087C0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0200882C: .word 0x038083B0
arm_func_end sub_020087A4
arm_func_start sub_02008830
sub_02008830: ; 0x02008830
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r4, _02008888 ; =0x038083B0
mov r7, r0
mov r6, r1
mov r5, #0
mov r8, #0x24
_02008848:
mul r0, r5, r8
ldrb r1, [r4, r0]
add r0, r4, r0
mov r1, r1, lsl #0x1f
movs r1, r1, lsr #0x1f
beq _02008874
ldr r1, [r0, #0x20]
cmp r7, r1
cmpls r1, r6
bhi _02008874
bl sub_02008CE8
_02008874:
add r5, r5, #1
cmp r5, #0x10
blt _02008848
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02008888: .word 0x038083B0
arm_func_end sub_02008830
arm_func_start sub_0200888C
sub_0200888C: ; 0x0200888C
stmdb sp!, {r3, lr}
ldr lr, _020088CC ; =0x038083B0
mov ip, #0x24
mla ip, r0, ip, lr
cmp r3, #1
beq _020088B8
cmp r3, #2
beq _020088C0
cmp r3, #4
streq r2, [ip, r1]
b _020088C4
_020088B8:
strb r2, [ip, r1]
b _020088C4
_020088C0:
strh r2, [ip, r1]
_020088C4:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020088CC: .word 0x038083B0
arm_func_end sub_0200888C
arm_func_start sub_020088D0
sub_020088D0: ; 0x020088D0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r4, #0x24
mul r5, r0, r4
mov r8, r3
mov r0, r8, lsl #0x10
ldr r7, [sp, #0x28]
mov sl, r1
mov sb, r2
mov r6, #0
mov fp, r0, lsr #0x10
and r4, r8, #0xff
b _02008950
_02008900:
tst sl, #1
beq _02008948
ldr r0, _02008968 ; =0x038083B0
mov r1, r6
add r0, r0, r5
bl sub_02008C64
cmp r0, #0
beq _02008948
cmp r7, #1
beq _0200893C
cmp r7, #2
beq _02008944
cmp r7, #4
streq r8, [r0, sb]
b _02008948
_0200893C:
strb r4, [r0, sb]
b _02008948
_02008944:
strh fp, [r0, sb]
_02008948:
add r6, r6, #1
mov sl, sl, lsr #1
_02008950:
cmp r6, #0x10
bge _02008960
cmp sl, #0
bne _02008900
_02008960:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02008968: .word 0x038083B0
arm_func_end sub_020088D0
arm_func_start sub_0200896C
sub_0200896C: ; 0x0200896C
ldr r1, _020089A4 ; =0x03807E50
bic r2, r0, #3
str r2, [r1, #4]
add r0, r2, #0x10
str r0, [r1, #8]
ldr r0, [r2]
str r0, [r1, #0xc]
ldr r0, [r2, #4]
str r0, [r1, #0x10]
ldr r0, [r2, #8]
str r0, [r1, #0x14]
ldr r0, [r2, #0xc]
str r0, [r1, #0x18]
bx lr
.align 2, 0
_020089A4: .word 0x03807E50
arm_func_end sub_0200896C
arm_func_start sub_020089A8
sub_020089A8: ; 0x020089A8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_02008478
mov r4, r0
mov r0, r5
bl sub_02008478
orr r4, r4, r0, lsl #8
mov r0, r5
bl sub_02008478
orr r0, r4, r0, lsl #16
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_020089A8
arm_func_start sub_020089D8
sub_020089D8: ; 0x020089D8
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
mov r6, r1
cmp r2, #4
addls pc, pc, r2, lsl #2
b _02008ACC
_020089F0: ; jump table
b _02008A04 ; case 0
b _02008A10 ; case 1
b _02008A30 ; case 2
b _02008A6C ; case 3
b _02008A50 ; case 4
_02008A04:
bl sub_02008478
mov r5, r0
b _02008ACC
_02008A10:
bl sub_02008478
mov r5, r0
mov r0, r4
bl sub_02008478
orr r0, r5, r0, lsl #8
mov r0, r0, lsl #0x10
mov r5, r0, lsr #0x10
b _02008ACC
_02008A30:
mov r5, #0
_02008A34:
mov r0, r4
bl sub_02008478
and r1, r0, #0x7f
tst r0, #0x80
orr r5, r1, r5, lsl #7
bne _02008A34
b _02008ACC
_02008A50:
bl sub_02008478
mov r1, r0
mov r0, r6
bl sub_02009A28
cmp r0, #0
ldrnesh r5, [r0]
b _02008ACC
_02008A6C:
bl sub_02008478
mov r5, r0
mov r0, r4
bl sub_02008478
orr r0, r5, r0, lsl #8
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
mov r0, r4
mov r5, r1, lsl #0x10
bl sub_02008478
mov r6, r0
mov r0, r4
bl sub_02008478
orr r0, r6, r0, lsl #8
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
bl sub_020070AC
mov r1, r4, lsl #0x10
mov r1, r1, asr #0x10
sub r1, r1, r5, asr #16
add r1, r1, #1
mul r1, r0, r1
mov r0, r1, asr #0x10
add r5, r0, r5, asr #16
_02008ACC:
mov r0, r5
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_020089D8
arm_func_start sub_02008AD8
sub_02008AD8: ; 0x02008AD8
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
str r0, [r4, #0x24]
str r0, [r4, #0x28]
ldrb r1, [r4]
mov r2, #0xff
orr r1, r1, #2
bic ip, r1, #4
strb r1, [r4]
and r1, ip, #0xff
bic r3, r1, #8
strb ip, [r4]
and r1, r3, #0xff
bic ip, r1, #0x10
strb r3, [r4]
and r1, ip, #0xff
bic r3, r1, #0x20
and r1, r3, #0xff
orr r1, r1, #0x40
strb ip, [r4]
bic r1, r1, #0x80
strb r1, [r4]
strb r0, [r4, #0x3b]
strh r0, [r4, #2]
mov r1, #0x40
strb r1, [r4, #0x12]
mov r1, #0x7f
strb r1, [r4, #4]
strb r1, [r4, #5]
strh r0, [r4, #0xa]
strb r0, [r4, #8]
strb r0, [r4, #9]
strb r0, [r4, #6]
strh r0, [r4, #0xc]
strb r2, [r4, #0xe]
strb r2, [r4, #0xf]
strb r2, [r4, #0x10]
strb r2, [r4, #0x11]
strb r1, [r4, #1]
mov r1, #2
strb r1, [r4, #7]
mov r1, #0x3c
strb r1, [r4, #0x14]
strb r0, [r4, #0x15]
strh r0, [r4, #0x16]
strb r0, [r4, #0x13]
add r0, r2, #0xff00
strh r0, [r4, #0x1e]
add r0, r4, #0x18
bl sub_02007F78
mov r0, #0
str r0, [r4, #0x20]
str r0, [r4, #0x3c]
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02008AD8
arm_func_start sub_02008BB8
sub_02008BB8: ; 0x02008BB8
str r1, [r0, #0x24]
add r1, r1, r2
str r1, [r0, #0x28]
bx lr
arm_func_end sub_02008BB8
arm_func_start sub_02008BC8
sub_02008BC8: ; 0x02008BC8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r2
mov r4, r0
mov r2, #0
bl sub_02008D80
ldr r5, [r4, #0x3c]
and r6, r7, #0xff
mov r4, #1
b _02008C20
_02008BEC:
mov r0, r5
bl sub_02007B28
cmp r0, #0
beq _02008C1C
cmp r7, #0
blt _02008C10
mov r0, r5
mov r1, r6
bl sub_02007B00
_02008C10:
mov r0, r5
strb r4, [r5, #0x22]
bl sub_02007B1C
_02008C1C:
ldr r5, [r5, #0x50]
_02008C20:
cmp r5, #0
bne _02008BEC
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_02008BC8
arm_func_start sub_02008C30
sub_02008C30: ; 0x02008C30
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r4, [r5, #0x3c]
b _02008C4C
_02008C40:
mov r0, r4
bl sub_02007D04
ldr r4, [r4, #0x50]
_02008C4C:
cmp r4, #0
bne _02008C40
mov r0, #0
str r0, [r5, #0x3c]
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02008C30
arm_func_start sub_02008C64
sub_02008C64: ; 0x02008C64
cmp r1, #0xf
movgt r0, #0
bxgt lr
add r0, r0, r1
ldrb r1, [r0, #8]
cmp r1, #0xff
moveq r0, #0
ldrne r0, _02008C8C ; =0x038085F0
addne r0, r0, r1, lsl #6
bx lr
.align 2, 0
_02008C8C: .word 0x038085F0
arm_func_end sub_02008C64
arm_func_start sub_02008C90
sub_02008C90: ; 0x02008C90
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r4, r1
bl sub_02008C64
movs r5, r0
beq _02008CDC
mov r1, r6
mvn r2, #0
bl sub_02008BC8
mov r0, r5
bl sub_02008C30
add ip, r6, #8
ldrb r2, [ip, r4]
ldr r3, _02008CE4 ; =0x038085F0
mov r0, #0xff
ldrb r1, [r3, r2, lsl #6]
bic r1, r1, #1
strb r1, [r3, r2, lsl #6]
strb r0, [ip, r4]
_02008CDC:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02008CE4: .word 0x038085F0
arm_func_end sub_02008C90
arm_func_start sub_02008CE8
sub_02008CE8: ; 0x02008CE8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, #0
_02008CF4:
mov r0, r5
mov r1, r4
bl sub_02008C90
add r4, r4, #1
cmp r4, #0x10
blt _02008CF4
ldrb r0, [r5]
bic r0, r0, #1
strb r0, [r5]
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02008CE8
arm_func_start sub_02008D20
sub_02008D20: ; 0x02008D20
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r2
cmp r1, #1
bne _02008D40
mov r1, #0
strb r1, [r5, #0x22]
bl sub_02007D04
_02008D40:
ldr r1, [r4, #0x3c]
cmp r1, r5
ldreq r0, [r5, #0x50]
streq r0, [r4, #0x3c]
beq _02008D78
b _02008D6C
_02008D58:
cmp r0, r5
ldreq r0, [r5, #0x50]
streq r0, [r1, #0x50]
beq _02008D78
mov r1, r0
_02008D6C:
ldr r0, [r1, #0x50]
cmp r0, #0
bne _02008D58
_02008D78:
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02008D20
arm_func_start sub_02008D80
sub_02008D80: ; 0x02008D80
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
ldrb r0, [sl, #7]
ldrb r6, [sl, #4]
ldrb r3, [sl, #5]
ldrb fp, [r1, #5]
mov r5, r0, lsl #6
mov r8, r3, lsl #1
ldrb r4, [sl, #1]
ldrsb r7, [sl, #6]
mov sb, r6, lsl #1
ldr r0, _02008ED4 ; =0x03806FDC
mul r6, r7, r5
mov r3, fp, lsl #1
ldrsh sb, [r0, sb]
ldrsh r7, [r0, r8]
ldrsh r0, [r0, r3]
add r8, sb, r7
ldrsb r3, [sl, #8]
cmp r4, #0x7f
mulne r4, r3, r4
addne r3, r4, #0x40
mov r4, #0x8000
ldrsh r5, [sl, #0xc]
mov sb, r2
add r2, r5, r6, asr #7
ldrsh r7, [sl, #0xa]
ldrsh r1, [r1, #6]
ldrsb r5, [sl, #9]
movne r3, r3, asr #7
add r0, r0, r8
rsb r4, r4, #0
cmp r0, r4
movlt r0, r4
mov r4, #0x8000
add r1, r7, r1
rsb r4, r4, #0
cmp r1, r4
movlt r1, r4
add r3, r3, r5
mvn r4, #0x7f
cmp r3, r4
movlt r3, r4
blt _02008E38
cmp r3, #0x7f
movgt r3, #0x7f
_02008E38:
mov r0, r0, lsl #0x10
mov r2, r2, lsl #0x10
mov r3, r3, lsl #0x18
mov r1, r1, lsl #0x10
ldr r8, [sl, #0x3c]
mov r6, r0, asr #0x10
mov r5, r2, asr #0x10
mov r4, r3, asr #0x18
mov r7, r1, asr #0x10
mov fp, #1
b _02008EC4
_02008E64:
strh r7, [r8, #6]
ldrb r0, [r8, #2]
cmp r0, #3
beq _02008EC0
strh r6, [r8, #0xc]
strh r5, [r8, #0xe]
strb r4, [r8, #0xb]
ldrb r0, [sl, #1]
strb r0, [r8, #4]
ldrh r0, [sl, #0x18]
strh r0, [r8, #0x28]
ldrh r0, [sl, #0x1a]
strh r0, [r8, #0x2a]
ldrh r0, [sl, #0x1c]
strh r0, [r8, #0x2c]
ldr r0, [r8, #0x34]
cmp r0, #0
bne _02008EC0
cmp sb, #0
beq _02008EC0
mov r0, r8
strb fp, [r8, #0x22]
bl sub_02007B1C
_02008EC0:
ldr r8, [r8, #0x50]
_02008EC4:
cmp r8, #0
bne _02008E64
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02008ED4: .word 0x03806FDC
arm_func_end sub_02008D80
arm_func_start sub_02008ED8
sub_02008ED8: ; 0x02008ED8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x24
mov r2, #0
str r2, [sp, #0x10]
str r1, [sp, #8]
mov r7, r0
mov sl, r2
_02008EF4:
mov r0, r7
mov r1, sl
bl sub_02008C64
movs r8, r0
ldrne r0, [r8, #0x28]
cmpne r0, #0
beq _020099F4
ldr r0, [r8, #0x3c]
b _02008F50
_02008F18:
ldr r1, [r0, #0x34]
cmp r1, #0
subgt r1, r1, #1
strgt r1, [r0, #0x34]
ldrb r1, [r0, #3]
mov r1, r1, lsl #0x1d
movs r1, r1, lsr #0x1f
bne _02008F4C
ldr r2, [r0, #0x14]
ldr r1, [r0, #0x18]
cmp r2, r1
addlt r1, r2, #1
strlt r1, [r0, #0x14]
_02008F4C:
ldr r0, [r0, #0x50]
_02008F50:
cmp r0, #0
bne _02008F18
ldrb r1, [r8]
mov r0, r1, lsl #0x1b
movs r0, r0, lsr #0x1f
beq _02008F80
ldr r0, [r8, #0x3c]
cmp r0, #0
movne r0, #0
bne _020099D8
bic r0, r1, #0x10
strb r0, [r8]
_02008F80:
ldr r0, [r8, #0x20]
cmp r0, #0
subgt r0, r0, #1
strgt r0, [r8, #0x20]
cmpgt r0, #0
movgt r0, #0
bgt _020099D8
ldr r0, [r8, #0x28]
bl sub_0200896C
ldr r0, _02009A1C ; =0x0000FFFF
sub fp, r0, #0x10000
b _020099B8
_02008FB0:
mov r0, r8
mov sb, #0
mov r4, #1
bl sub_02008478
mov r6, r0
cmp r6, #0xa2
bne _02008FE4
mov r0, r8
bl sub_02008478
mov r6, r0
ldrb r0, [r8]
mov r0, r0, lsl #0x19
mov r4, r0, lsr #0x1f
_02008FE4:
cmp r6, #0xa0
bne _02009000
mov r0, r8
bl sub_02008478
mov r6, r0
mov r5, #3
mov sb, #1
_02009000:
cmp r6, #0xa1
bne _0200901C
mov r0, r8
bl sub_02008478
mov r6, r0
mov r5, #4
mov sb, #1
_0200901C:
tst r6, #0x80
bne _020092A0
mov r0, r8
bl sub_02008478
cmp sb, #0
str r0, [sp, #0xc]
movne r2, r5
moveq r2, #2
mov r0, r8
mov r1, r7
bl sub_020089D8
cmp r4, #0
mov r4, r0
ldrsb r0, [r8, #0x13]
add sb, r6, r0
beq _020099B8
cmp sb, #0
movlt sb, #0
blt _02009070
cmp sb, #0x7f
movgt sb, #0x7f
_02009070:
ldrb r1, [r8]
mov r0, r1, lsl #0x1d
movs r0, r0, lsr #0x1f
bne _02009274
ldr r0, [sp, #8]
cmp r0, #0
beq _02009274
mov r0, r1, lsl #0x1c
mov r6, #0
movs r0, r0, lsr #0x1f
ldrne r6, [r8, #0x3c]
cmpne r6, #0
strneb sb, [r6, #8]
ldrne r0, [sp, #0xc]
strneb r0, [r6, #9]
cmp r6, #0
bne _020091A4
ldr r0, [r7, #0x20]
ldrh r1, [r8, #2]
mov r2, sb
add r3, sp, #0x16
bl sub_02009B30
cmp r0, #0
beq _02009274
ldrb r0, [sp, #0x16]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _02009274
_020090E0: ; jump table
b _02009274 ; case 0
b _020090F4 ; case 1
b _020090FC ; case 2
b _02009104 ; case 3
b _020090F4 ; case 4
_020090F4:
ldr r1, _02009A1C ; =0x0000FFFF
b _02009108
_020090FC:
mov r1, #0x3f00
b _02009108
_02009104:
mov r1, #0xc000
_02009108:
ldrh r0, [r8, #0x1e]
ldr r3, _02009A20 ; =0x03800B38
str r8, [sp]
ldrb r2, [r8]
and r0, r1, r0
mov r2, r2, lsl #0x18
ldrb r6, [r7, #4]
ldrb r1, [r8, #0x12]
mov r2, r2, lsr #0x1f
add r1, r6, r1
bl sub_02007B38
movs r6, r0
beq _02009274
ldrb r0, [r8]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1f
movne r3, fp
bne _0200915C
cmp r4, #0
movgt r3, r4
movle r3, fp
_0200915C:
ldr r2, [sp, #0xc]
ldr r1, [r7, #0x20]
mov r0, r6
str r1, [sp]
add r1, sp, #0x16
str r1, [sp, #4]
mov r1, sb
bl sub_02009CF0
cmp r0, #0
bne _02009198
mov r0, #0
strb r0, [r6, #0x22]
mov r0, r6
bl sub_02007D04
b _02009274
_02009198:
ldr r0, [r8, #0x3c]
str r0, [r6, #0x50]
str r6, [r8, #0x3c]
_020091A4:
ldrb r1, [r8, #0xe]
cmp r1, #0xff
beq _020091B8
mov r0, r6
bl sub_02007ABC
_020091B8:
ldrb r1, [r8, #0xf]
cmp r1, #0xff
beq _020091CC
mov r0, r6
bl sub_02007ADC
_020091CC:
ldrb r1, [r8, #0x10]
cmp r1, #0xff
beq _020091E0
mov r0, r6
bl sub_02007AF8
_020091E0:
ldrb r1, [r8, #0x11]
cmp r1, #0xff
beq _020091F4
mov r0, r6
bl sub_02007B00
_020091F4:
ldrsh r0, [r8, #0x16]
strh r0, [r6, #0x32]
ldrb r0, [r8]
mov r0, r0, lsl #0x1a
movs r0, r0, lsr #0x1f
beq _02009224
ldrsh r1, [r6, #0x32]
ldrb r0, [r8, #0x14]
sub r0, r0, sb
mov r0, r0, lsl #0x16
add r0, r1, r0, asr #16
strh r0, [r6, #0x32]
_02009224:
ldrb r0, [r8, #0x15]
cmp r0, #0
bne _02009250
cmp r4, #0
movgt r0, r4
movle r0, fp
str r0, [r6, #0x18]
ldrb r0, [r6, #3]
bic r0, r0, #4
strb r0, [r6, #3]
b _0200926C
_02009250:
mul r1, r0, r0
ldrsh r0, [r6, #0x32]
cmp r0, #0
rsblt r0, r0, #0
mul r0, r1, r0
mov r0, r0, asr #0xb
str r0, [r6, #0x18]
_0200926C:
mov r0, #0
str r0, [r6, #0x14]
_02009274:
strb sb, [r8, #0x14]
ldrb r0, [r8]
mov r0, r0, lsl #0x1e
movs r0, r0, lsr #0x1f
beq _020099B8
str r4, [r8, #0x20]
cmp r4, #0
ldreqb r0, [r8]
orreq r0, r0, #0x10
streqb r0, [r8]
b _020099B8
_020092A0:
and r0, r6, #0xf0
cmp r0, #0xc0
bgt _020092D4
bge _0200941C
cmp r0, #0x90
bgt _020092C8
bge _02009340
cmp r0, #0x80
beq _020092F8
b _020099B8
_020092C8:
cmp r0, #0xb0
beq _020096CC
b _020099B8
_020092D4:
cmp r0, #0xe0
bgt _020092EC
bge _02009678
cmp r0, #0xd0
beq _0200941C
b _020099B8
_020092EC:
cmp r0, #0xf0
beq _02009914
b _020099B8
_020092F8:
cmp sb, #0
movne r2, r5
moveq r2, #2
mov r0, r8
mov r1, r7
bl sub_020089D8
cmp r4, #0
beq _020099B8
cmp r6, #0x80
beq _0200932C
cmp r6, #0x81
beq _02009334
b _020099B8
_0200932C:
str r0, [r8, #0x20]
b _020099B8
_02009334:
cmp r0, #0x10000
strlth r0, [r8, #2]
b _020099B8
_02009340:
cmp r6, #0x93
beq _0200935C
cmp r6, #0x94
beq _020093BC
cmp r6, #0x95
beq _020093D8
b _020099B8
_0200935C:
mov r0, r8
bl sub_02008478
mov r6, r0
mov r0, r8
bl sub_020089A8
cmp r4, #0
mov sb, r0
beq _020099B8
mov r1, r6
mov r0, r7
bl sub_02008C64
movs r4, r0
cmpne r4, r8
beq _020099B8
mov r1, r7
mov r2, fp
bl sub_02008BC8
mov r0, r4
bl sub_02008C30
mov r0, r4
mov r2, sb
ldr r1, [r8, #0x24]
bl sub_02008BB8
b _020099B8
_020093BC:
mov r0, r8
bl sub_020089A8
cmp r4, #0
ldrne r1, [r8, #0x24]
addne r0, r1, r0
strne r0, [r8, #0x28]
b _020099B8
_020093D8:
mov r0, r8
bl sub_020089A8
cmp r4, #0
beq _020099B8
ldrb r1, [r8, #0x3b]
cmp r1, #3
bhs _020099B8
add r1, r8, r1, lsl #2
ldr r2, [r8, #0x28]
str r2, [r1, #0x2c]
ldrb r1, [r8, #0x3b]
add r1, r1, #1
strb r1, [r8, #0x3b]
ldr r1, [r8, #0x24]
add r0, r1, r0
str r0, [r8, #0x28]
b _020099B8
_0200941C:
cmp sb, #0
movne r2, r5
moveq r2, #0
mov r0, r8
mov r1, r7
bl sub_020089D8
cmp r4, #0
strb r0, [sp, #0x14]
beq _020099B8
sub r1, r6, #0xc0
cmp r1, #0x17
addls pc, pc, r1, lsl #2
b _020099B8
_02009450: ; jump table
b _02009648 ; case 0
b _020094B0 ; case 1
b _020094C8 ; case 2
b _02009630 ; case 3
b _0200963C ; case 4
b _020094D4 ; case 5
b _020094E0 ; case 6
b _020094EC ; case 7
b _020095AC ; case 8
b _020095F4 ; case 9
b _02009514 ; case 10
b _02009520 ; case 11
b _0200952C ; case 12
b _02009538 ; case 13
b _02009614 ; case 14
b _02009508 ; case 15
b _02009544 ; case 16
b _02009550 ; case 17
b _0200955C ; case 18
b _02009568 ; case 19
b _02009574 ; case 20
b _020094BC ; case 21
b _02009658 ; case 22
b _020095E0 ; case 23
_020094B0:
and r0, r0, #0xff
strb r0, [r8, #4]
b _020099B8
_020094BC:
and r0, r0, #0xff
strb r0, [r8, #5]
b _020099B8
_020094C8:
and r0, r0, #0xff
strb r0, [r7, #5]
b _020099B8
_020094D4:
and r0, r0, #0xff
strb r0, [r8, #7]
b _020099B8
_020094E0:
and r0, r0, #0xff
strb r0, [r8, #0x12]
b _020099B8
_020094EC:
and r0, r0, #0xff
mov r0, r0, lsl #0x1f
ldrb r1, [r8]
bic r1, r1, #2
orr r0, r1, r0, lsr #30
strb r0, [r8]
b _020099B8
_02009508:
and r0, r0, #0xff
strb r0, [r8, #0x15]
b _020099B8
_02009514:
and r0, r0, #0xff
strb r0, [r8, #0x1a]
b _020099B8
_02009520:
and r0, r0, #0xff
strb r0, [r8, #0x19]
b _020099B8
_0200952C:
and r0, r0, #0xff
strb r0, [r8, #0x18]
b _020099B8
_02009538:
and r0, r0, #0xff
strb r0, [r8, #0x1b]
b _020099B8
_02009544:
and r0, r0, #0xff
strb r0, [r8, #0xe]
b _020099B8
_02009550:
and r0, r0, #0xff
strb r0, [r8, #0xf]
b _020099B8
_0200955C:
and r0, r0, #0xff
strb r0, [r8, #0x10]
b _020099B8
_02009568:
and r0, r0, #0xff
strb r0, [r8, #0x11]
b _020099B8
_02009574:
ldrb r1, [r8, #0x3b]
cmp r1, #3
bhs _020099B8
add r2, r8, r1, lsl #2
and r1, r0, #0xff
ldr r0, [r8, #0x28]
str r0, [r2, #0x2c]
ldrb r0, [r8, #0x3b]
add r0, r8, r0
strb r1, [r0, #0x38]
ldrb r0, [r8, #0x3b]
add r0, r0, #1
strb r0, [r8, #0x3b]
b _020099B8
_020095AC:
and r0, r0, #0xff
mov r1, r0, lsl #0x1f
ldrb r2, [r8]
mov r0, r8
bic r2, r2, #8
orr r1, r2, r1, lsr #28
strb r1, [r8]
mov r1, r7
mov r2, fp
bl sub_02008BC8
mov r0, r8
bl sub_02008C30
b _020099B8
_020095E0:
and r2, r0, #0xff
mov r0, r8
mov r1, r7
bl sub_02009AB0
b _020099B8
_020095F4:
and r1, r0, #0xff
ldrsb r0, [r8, #0x13]
add r0, r1, r0
strb r0, [r8, #0x14]
ldrb r0, [r8]
orr r0, r0, #0x20
strb r0, [r8]
b _020099B8
_02009614:
and r0, r0, #0xff
mov r0, r0, lsl #0x1f
ldrb r1, [r8]
bic r1, r1, #0x20
orr r0, r1, r0, lsr #26
strb r0, [r8]
b _020099B8
_02009630:
ldrsb r0, [sp, #0x14]
strb r0, [r8, #0x13]
b _020099B8
_0200963C:
ldrsb r0, [sp, #0x14]
strb r0, [r8, #6]
b _020099B8
_02009648:
and r0, r0, #0xff
sub r0, r0, #0x40
strb r0, [r8, #8]
b _020099B8
_02009658:
ldr r1, _02009A24 ; =0x03807E50
ldr r1, [r1]
cmp r1, #0
beq _020099B8
and r1, r0, #0xff
mov r0, r7
bl sub_02009A28
b _020099B8
_02009678:
cmp sb, #0
movne r2, r5
moveq r2, #1
mov r0, r8
mov r1, r7
bl sub_020089D8
mov r0, r0, lsl #0x10
cmp r4, #0
mov r0, r0, asr #0x10
beq _020099B8
cmp r6, #0xe0
beq _020096C4
cmp r6, #0xe1
beq _020096BC
cmp r6, #0xe3
streqh r0, [r8, #0x16]
b _020099B8
_020096BC:
strh r0, [r7, #0x18]
b _020099B8
_020096C4:
strh r0, [r8, #0x1c]
b _020099B8
_020096CC:
mov r0, r8
bl sub_02008478
cmp sb, #0
movne r2, r5
mov sb, r0
moveq r2, #1
mov r0, r8
mov r1, r7
bl sub_020089D8
mov r0, r0, lsl #0x10
mov r1, sb
mov sb, r0, asr #0x10
mov r0, r7
bl sub_02009A28
cmp r4, #0
mov r4, r0
cmpne r4, #0
beq _020099B8
sub r0, r6, #0xb0
cmp r0, #0xd
addls pc, pc, r0, lsl #2
b _020099B8
_02009724: ; jump table
b _0200975C ; case 0
b _02009764 ; case 1
b _02009774 ; case 2
b _02009784 ; case 3
b _02009794 ; case 4
b _020097B0 ; case 5
b _020097D4 ; case 6
b _020099B8 ; case 7
b _0200980C ; case 8
b _02009838 ; case 9
b _02009864 ; case 10
b _02009890 ; case 11
b _020098BC ; case 12
b _020098E8 ; case 13
_0200975C:
strh sb, [r4]
b _020099B8
_02009764:
ldrsh r0, [r4]
add r0, r0, sb
strh r0, [r4]
b _020099B8
_02009774:
ldrsh r0, [r4]
sub r0, r0, sb
strh r0, [r4]
b _020099B8
_02009784:
ldrsh r0, [r4]
mul r1, r0, sb
strh r1, [r4]
b _020099B8
_02009794:
cmp sb, #0
beq _020099B8
mov r1, sb
ldrsh r0, [r4]
bl sub_0200EDB0
strh r0, [r4]
b _020099B8
_020097B0:
cmp sb, #0
ldrgesh r0, [r4]
movge r0, r0, lsl sb
strgeh r0, [r4]
ldrltsh r1, [r4]
rsblt r0, sb, #0
movlt r0, r1, asr r0
strlth r0, [r4]
b _020099B8
_020097D4:
cmp sb, #0
rsblt r0, sb, #0
movlt r0, r0, lsl #0x10
mov r6, #0
movlt sb, r0, asr #0x10
movlt r6, #1
bl sub_020070AC
add r1, sb, #1
mul r1, r0, r1
mov r0, r1, asr #0x10
cmp r6, #0
rsbne r0, r0, #0
strh r0, [r4]
b _020099B8
_0200980C:
ldrsh r0, [r4]
ldrb r1, [r8]
cmp r0, sb
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
mov r0, r0, lsl #0x1f
bic r1, r1, #0x40
orr r0, r1, r0, lsr #25
strb r0, [r8]
b _020099B8
_02009838:
ldrsh r0, [r4]
ldrb r1, [r8]
cmp r0, sb
movge r0, #1
movlt r0, #0
and r0, r0, #0xff
mov r0, r0, lsl #0x1f
bic r1, r1, #0x40
orr r0, r1, r0, lsr #25
strb r0, [r8]
b _020099B8
_02009864:
ldrsh r0, [r4]
ldrb r1, [r8]
cmp r0, sb
movgt r0, #1
movle r0, #0
and r0, r0, #0xff
mov r0, r0, lsl #0x1f
bic r1, r1, #0x40
orr r0, r1, r0, lsr #25
strb r0, [r8]
b _020099B8
_02009890:
ldrsh r0, [r4]
ldrb r1, [r8]
cmp r0, sb
movle r0, #1
movgt r0, #0
and r0, r0, #0xff
mov r0, r0, lsl #0x1f
bic r1, r1, #0x40
orr r0, r1, r0, lsr #25
strb r0, [r8]
b _020099B8
_020098BC:
ldrsh r0, [r4]
ldrb r1, [r8]
cmp r0, sb
movlt r0, #1
movge r0, #0
and r0, r0, #0xff
mov r0, r0, lsl #0x1f
bic r1, r1, #0x40
orr r0, r1, r0, lsr #25
strb r0, [r8]
b _020099B8
_020098E8:
ldrsh r0, [r4]
ldrb r1, [r8]
cmp r0, sb
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
mov r0, r0, lsl #0x1f
bic r1, r1, #0x40
orr r0, r1, r0, lsr #25
strb r0, [r8]
b _020099B8
_02009914:
cmp r4, #0
beq _020099B8
sub r0, r6, #0xfc
cmp r0, #3
addls pc, pc, r0, lsl #2
b _020099B8
_0200992C: ; jump table
b _02009964 ; case 0
b _0200993C ; case 1
b _020099B8 ; case 2
b _020099B0 ; case 3
_0200993C:
ldrb r0, [r8, #0x3b]
cmp r0, #0
beq _020099B8
sub r0, r0, #1
strb r0, [r8, #0x3b]
and r0, r0, #0xff
add r0, r8, r0, lsl #2
ldr r0, [r0, #0x2c]
str r0, [r8, #0x28]
b _020099B8
_02009964:
ldrb r0, [r8, #0x3b]
cmp r0, #0
beq _020099B8
add r1, r8, r0
ldrb r0, [r1, #0x37]
cmp r0, #0
beq _02009998
sub r0, r0, #1
ands r0, r0, #0xff
ldreqb r0, [r8, #0x3b]
subeq r0, r0, #1
streqb r0, [r8, #0x3b]
beq _020099B8
_02009998:
strb r0, [r1, #0x37]
ldrb r0, [r8, #0x3b]
add r0, r8, r0, lsl #2
ldr r0, [r0, #0x28]
str r0, [r8, #0x28]
b _020099B8
_020099B0:
mvn r0, #0
b _020099D8
_020099B8:
ldr r0, [r8, #0x20]
cmp r0, #0
bne _020099D4
ldrb r0, [r8]
mov r0, r0, lsl #0x1b
movs r0, r0, lsr #0x1f
beq _02008FB0
_020099D4:
mov r0, #0
_020099D8:
cmp r0, #0
moveq r0, #1
streq r0, [sp, #0x10]
beq _020099F4
mov r0, r7
mov r1, sl
bl sub_02008C90
_020099F4:
add sl, sl, #1
cmp sl, #0x10
blt _02008EF4
ldr r0, [sp, #0x10]
cmp r0, #0
moveq r0, #1
movne r0, #0
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02009A1C: .word 0x0000FFFF
_02009A20: .word 0x03800B38
_02009A24: .word 0x03807E50
arm_func_end sub_02008ED8
arm_func_start sub_02009A28
sub_02009A28: ; 0x02009A28
ldr r2, _02009A68 ; =0x03807E6C
ldr r3, [r2]
cmp r3, #0
moveq r0, #0
bxeq lr
cmp r1, #0x10
addge r2, r3, #0x260
subge r0, r1, #0x10
addge r0, r2, r0, lsl #1
bxge lr
ldrb r2, [r0, #1]
add r3, r3, #0x20
mov r0, #0x24
mla r0, r2, r0, r3
add r0, r0, r1, lsl #1
bx lr
.align 2, 0
_02009A68: .word 0x03807E6C
arm_func_end sub_02009A28
arm_func_start sub_02009A6C
sub_02009A6C: ; 0x02009A6C
ldr ip, _02009AAC ; =0x038085F0
mov r0, #0
b _02009A9C
_02009A78:
ldrb r1, [ip, r0, lsl #6]
mov r3, r0, lsl #6
mov r2, r1, lsl #0x1f
movs r2, r2, lsr #0x1f
biceq r1, r1, #1
orreq r1, r1, #1
streqb r1, [ip, r3]
bxeq lr
add r0, r0, #1
_02009A9C:
cmp r0, #0x20
blt _02009A78
mvn r0, #0
bx lr
.align 2, 0
_02009AAC: .word 0x038085F0
arm_func_end sub_02009A6C
arm_func_start sub_02009AB0
sub_02009AB0: ; 0x02009AB0
stmdb sp!, {r4, lr}
mov r4, r0
cmp r2, #3
addls pc, pc, r2, lsl #2
b _02009B28
_02009AC4: ; jump table
b _02009AD4 ; case 0
b _02009AE4 ; case 1
b _02009AF4 ; case 2
b _02009B0C ; case 3
_02009AD4:
ldrb r0, [r4]
bic r0, r0, #4
strb r0, [r4]
b _02009B28
_02009AE4:
ldrb r0, [r4]
orr r0, r0, #4
strb r0, [r4]
b _02009B28
_02009AF4:
ldrb r3, [r4]
mvn r2, #0
orr r3, r3, #4
strb r3, [r4]
bl sub_02008BC8
b _02009B28
_02009B0C:
ldrb r3, [r4]
mov r2, #0x7f
orr r3, r3, #4
strb r3, [r4]
bl sub_02008BC8
mov r0, r4
bl sub_02008C30
_02009B28:
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02009AB0
arm_func_start sub_02009B30
sub_02009B30: ; 0x02009B30
stmdb sp!, {r3, r4, r5, r6, r7, lr}
movs r7, r1
mov r6, r0
mov r5, r2
mov r4, r3
movmi r0, #0
bmi _02009CA8
bl sub_020071CC
ldr r0, [r6, #0x38]
cmp r7, r0
blo _02009B68
bl sub_020071D0
mov r0, #0
b _02009CA8
_02009B68:
add r0, r6, r7, lsl #2
ldr r1, [r0, #0x3c]
and r0, r1, #0xff
strb r1, [r4]
cmp r0, #0x11
mov r1, r1, lsr #8
addls pc, pc, r0, lsl #2
b _02009C94
_02009B88: ; jump table
b _02009C94 ; case 0
b _02009BD0 ; case 1
b _02009BD0 ; case 2
b _02009BD0 ; case 3
b _02009BD0 ; case 4
b _02009BD0 ; case 5
b _02009C94 ; case 6
b _02009C94 ; case 7
b _02009C94 ; case 8
b _02009C94 ; case 9
b _02009C94 ; case 10
b _02009C94 ; case 11
b _02009C94 ; case 12
b _02009C94 ; case 13
b _02009C94 ; case 14
b _02009C94 ; case 15
b _02009BF0 ; case 16
b _02009C40 ; case 17
_02009BD0:
add r3, r6, r1
add r2, r4, #2
mov r1, #5
_02009BDC:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _02009BDC
b _02009CA0
_02009BF0:
ldrb r0, [r6, r1]
add r2, r6, r1
ldrb r1, [r2, #1]
cmp r5, r0
blt _02009C0C
cmp r5, r1
ble _02009C18
_02009C0C:
bl sub_020071D0
mov r0, #0
b _02009CA8
_02009C18:
sub r1, r5, r0
mov r0, #0xc
mla r0, r1, r0, r2
add r2, r0, #2
mov r1, #6
_02009C2C:
ldrh r0, [r2], #2
subs r1, r1, #1
strh r0, [r4], #2
bne _02009C2C
b _02009CA0
_02009C40:
add r2, r6, r1
mov r1, #0
b _02009C64
_02009C4C:
add r1, r1, #1
cmp r1, #8
blt _02009C64
bl sub_020071D0
mov r0, #0
b _02009CA8
_02009C64:
ldrb r0, [r2, r1]
cmp r5, r0
bgt _02009C4C
mov r0, #0xc
mla r0, r1, r0, r2
add r2, r0, #8
mov r1, #6
_02009C80:
ldrh r0, [r2], #2
subs r1, r1, #1
strh r0, [r4], #2
bne _02009C80
b _02009CA0
_02009C94:
bl sub_020071D0
mov r0, #0
b _02009CA8
_02009CA0:
bl sub_020071D0
mov r0, #1
_02009CA8:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_02009B30
arm_func_start sub_02009CB0
sub_02009CB0: ; 0x02009CB0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_020071CC
add r0, r5, r4, lsl #2
ldr r4, [r0, #0x3c]
cmp r4, #0
beq _02009CDC
cmp r4, #0x2000000
addlo r4, r5, r4
b _02009CE0
_02009CDC:
mov r4, #0
_02009CE0:
bl sub_020071D0
mov r0, r4
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02009CB0
arm_func_start sub_02009CF0
sub_02009CF0: ; 0x02009CF0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r5, [sp, #0x24]
mov sb, r0
ldrb r4, [r5, #0xa]
ldrb r0, [r5]
cmp r4, #0xff
mov r6, r3
mov r8, r1
mov r7, r2
mvneq r6, #0
moveq r4, #0
cmp r0, #4
addls pc, pc, r0, lsl #2
b _02009DD0
_02009D28: ; jump table
b _02009DD0 ; case 0
b _02009D3C ; case 1
b _02009DAC ; case 2
b _02009DC0 ; case 3
b _02009D3C ; case 4
_02009D3C:
cmp r0, #1
bne _02009D80
ldr r2, [sp, #0x20]
ldrh r0, [r5, #4]
ldrh r1, [r5, #2]
add r0, r2, r0, lsl #3
ldr r0, [r0, #0x18]
cmp r0, #0
moveq r1, #0
beq _02009D8C
ldr r2, [r0, #0x38]
cmp r1, r2
movhs r1, #0
bhs _02009D8C
bl sub_02009CB0
mov r1, r0
b _02009D8C
_02009D80:
ldrh r1, [r5, #4]
ldrh r0, [r5, #2]
orr r1, r0, r1, lsl #16
_02009D8C:
cmp r1, #0
moveq r0, #0
beq _02009DD4
mov r0, sb
mov r3, r6
add r2, r1, #0xc
bl sub_02007948
b _02009DD4
_02009DAC:
ldrh r1, [r5, #2]
mov r0, sb
mov r2, r6
bl sub_02007984
b _02009DD4
_02009DC0:
mov r0, sb
mov r1, r6
bl sub_020079D0
b _02009DD4
_02009DD0:
mov r0, #0
_02009DD4:
cmp r0, #0
moveq r0, #0
beq _02009E30
strb r8, [sb, #8]
ldrb r1, [r5, #6]
mov r0, sb
strb r1, [sb, #5]
strb r7, [sb, #9]
ldrb r1, [r5, #7]
bl sub_02007ABC
ldrb r1, [r5, #8]
mov r0, sb
bl sub_02007ADC
ldrb r1, [r5, #9]
mov r0, sb
bl sub_02007AF8
mov r0, sb
mov r1, r4
bl sub_02007B00
ldrb r1, [r5, #0xb]
mov r0, #1
sub r1, r1, #0x40
strb r1, [sb, #0xa]
_02009E30:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
arm_func_end sub_02009CF0
arm_func_start sub_02009E38
sub_02009E38: ; 0x02009E38
ldr ip, _02009E54 ; =0x03807E6C
mov r3, #0x24
ldr ip, [ip]
mla r3, r0, r3, ip
add r0, r3, r1, lsl #1
strh r2, [r0, #0x20]
bx lr
.align 2, 0
_02009E54: .word 0x03807E6C
arm_func_end sub_02009E38
arm_func_start sub_02009E58
sub_02009E58: ; 0x02009E58
ldr r2, _02009E70 ; =0x03807E6C
ldr r2, [r2]
add r0, r2, r0, lsl #1
add r0, r0, #0x200
strh r1, [r0, #0x60]
bx lr
.align 2, 0
_02009E70: .word 0x03807E6C
arm_func_end sub_02009E58
arm_func_start sub_02009E74
sub_02009E74: ; 0x02009E74
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r0, _02009F08 ; =0x03807E6C
mov r4, #0
ldr r0, [r0]
mov r5, r4
cmp r0, #0
beq _02009F00
mov r7, r4
mov r6, #1
_02009E98:
mov r0, r7
bl sub_02006D38
cmp r0, #0
orrne r0, r4, r6, lsl r7
movne r0, r0, lsl #0x10
add r7, r7, #1
movne r4, r0, lsr #0x10
cmp r7, #0x10
blt _02009E98
mov r0, #0
bl sub_02007334
cmp r0, #0
orrne r0, r5, #1
movne r0, r0, lsl #0x10
movne r5, r0, lsr #0x10
mov r0, #1
bl sub_02007334
cmp r0, #0
orrne r0, r5, #2
movne r0, r0, lsl #0x10
movne r5, r0, lsr #0x10
ldr r0, _02009F08 ; =0x03807E6C
ldr r1, [r0]
strh r4, [r1, #8]
ldr r0, [r0]
strh r5, [r0, #0xa]
_02009F00:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02009F08: .word 0x03807E6C
arm_func_end sub_02009E74
arm_func_start sub_02009F0C
sub_02009F0C: ; 0x02009F0C
ldr r1, _02009F34 ; =0x03807E70
mov r3, #0
mov r2, r3
_02009F18:
add r0, r1, r3, lsl #6
strb r2, [r0, #0xf80]
add r3, r3, #1
strb r2, [r0, #0xf81]
cmp r3, #8
blt _02009F18
bx lr
.align 2, 0
_02009F34: .word 0x03807E70
arm_func_end sub_02009F0C
arm_func_start sub_02009F38
sub_02009F38: ; 0x02009F38
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr lr, _02009F90 ; =sub_03808DF0
ldr r4, [sp, #0x18]
ldrb ip, [lr, r0, lsl #6]
mov r7, r1
mov r6, r2
mov r5, r3
cmp ip, #0
add r8, lr, r0, lsl #6
beq _02009F70
add r0, r8, #0x14
bl sub_020057A8
mov r0, #0
strb r0, [r8]
_02009F70:
str r7, [r8, #4]
str r6, [r8, #8]
str r5, [r8, #0xc]
ldr r0, [sp, #0x1c]
str r4, [r8, #0x10]
strb r0, [r8, #1]
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02009F90: .word sub_03808DF0
arm_func_end sub_02009F38
arm_func_start sub_02009F94
sub_02009F94: ; 0x02009F94
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0xc
ldr r1, _0200A048 ; =sub_03808DF0
mov sb, r0
ldrb r0, [r1, sb, lsl #6]
add r8, r1, sb, lsl #6
cmp r0, #0
beq _02009FC4
add r0, r8, #0x14
bl sub_020057A8
mov r0, #0
strb r0, [r8]
_02009FC4:
ldrb r1, [r8, #1]
ldr r7, [r8, #0xc]
ldr r6, [r8, #0x10]
add r0, r8, #0x14
ldr r5, [r8, #4]
ldr r4, [r8, #8]
orr sb, sb, r1, lsl #8
bl sub_02005588
cmp r6, #0
cmpeq r7, #0
bne _0200A00C
ldr r3, _0200A04C ; =0x03801EA8
mov r1, r5
mov r2, r4
add r0, r8, #0x14
str sb, [sp]
bl sub_020056C4
b _0200A034
_0200A00C:
bl sub_02005404
ldr r2, _0200A04C ; =0x03801EA8
adds r0, r5, r0
stmib sp, {r2, sb}
adc r2, r4, r1
mov r1, r0
mov r3, r7
add r0, r8, #0x14
str r6, [sp]
bl sub_02005734
_0200A034:
mov r0, #1
strb r0, [r8]
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0200A048: .word sub_03808DF0
_0200A04C: .word 0x03801EA8
arm_func_end sub_02009F94
arm_func_start sub_0200A050
sub_0200A050: ; 0x0200A050
stmdb sp!, {r4, lr}
ldr r2, _0200A08C ; =sub_03808DF0
ldrb r1, [r2, r0, lsl #6]
add r4, r2, r0, lsl #6
cmp r1, #0
beq _0200A084
add r0, r4, #0x14
bl sub_020057A8
ldrb r1, [r4, #1]
mov r0, #0
add r1, r1, #1
strb r1, [r4, #1]
strb r0, [r4]
_0200A084:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200A08C: .word sub_03808DF0
arm_func_end sub_0200A050
arm_func_start sub_0200A090
sub_0200A090: ; 0x0200A090
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, #7
mov r4, #0
_0200A0A0:
mov r0, r5
mov r1, r6
mov r2, r4
bl sub_020065F8
cmp r0, #0
blt _0200A0A0
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_0200A090
arm_func_start sub_0200A0C0
sub_0200A0C0: ; 0x0200A0C0
stmdb sp!, {r3, lr}
ldr r0, _0200A0F4 ; =0x03808FF0
ldr r1, _0200A0F8 ; =0x03809010
mov r2, #8
bl sub_02004894
ldr r1, _0200A0FC ; =0x038025CC
mov r0, #7
bl sub_02006584
ldr r0, _0200A100 ; =0x03807E6C
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200A0F4: .word 0x03808FF0
_0200A0F8: .word 0x03809010
_0200A0FC: .word 0x038025CC
_0200A100: .word 0x03807E6C
arm_func_end sub_0200A0C0
arm_func_start sub_0200A104
sub_0200A104: ; 0x0200A104
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x34
b _0200A77C
_0200A110:
ldr sl, _0200A7A0 ; =0x04000509
ldr r6, [sp, #0x18]
sub r4, sl, #1
b _0200A760
_0200A120:
add r5, sp, #0x1c
ldmia r6!, {r0, r1, r2, r3}
stmia r5!, {r0, r1, r2, r3}
ldmia r6, {r0, r1}
stmia r5, {r0, r1}
ldr r0, [sp, #0x20]
cmp r0, #0x21
addls pc, pc, r0, lsl #2
b _0200A75C
_0200A144: ; jump table
b _0200A1CC ; case 0
b _0200A1E4 ; case 1
b _0200A1F0 ; case 2
b _0200A208 ; case 3
b _0200A214 ; case 4
b _0200A224 ; case 5
b _0200A234 ; case 6
b _0200A24C ; case 7
b _0200A274 ; case 8
b _0200A288 ; case 9
b _0200A29C ; case 10
b _0200A2B8 ; case 11
b _0200A2D0 ; case 12
b _0200A398 ; case 13
b _0200A574 ; case 14
b _0200A5F4 ; case 15
b _0200A62C ; case 16
b _0200A43C ; case 17
b _0200A484 ; case 18
b _0200A4AC ; case 19
b _0200A4EC ; case 20
b _0200A534 ; case 21
b _0200A65C ; case 22
b _0200A668 ; case 23
b _0200A674 ; case 24
b _0200A680 ; case 25
b _0200A698 ; case 26
b _0200A6A8 ; case 27
b _0200A6B8 ; case 28
b _0200A6F8 ; case 29
b _0200A6C8 ; case 30
b _0200A6D8 ; case 31
b _0200A6E8 ; case 32
b _0200A708 ; case 33
_0200A1CC:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
bl sub_020084F8
b _0200A75C
_0200A1E4:
ldr r0, [sp, #0x24]
bl sub_02008528
b _0200A75C
_0200A1F0:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
bl sub_0200829C
b _0200A75C
_0200A208:
ldr r0, [sp, #0x24]
bl sub_020084D8
b _0200A75C
_0200A214:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
bl sub_02008584
b _0200A75C
_0200A224:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
bl sub_020085FC
b _0200A75C
_0200A234:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
bl sub_0200888C
b _0200A75C
_0200A24C:
ldr r1, [sp, #0x24]
mov r0, r1, lsr #0x18
and r0, r0, #0xff
str r0, [sp]
bic r0, r1, #0xff000000
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
bl sub_020088D0
b _0200A75C
_0200A274:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x2c]
bl sub_020086C8
b _0200A75C
_0200A288:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x2c]
bl sub_02008734
b _0200A75C
_0200A29C:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x2c]
mov r2, r2, lsl #0x10
mov r2, r2, asr #0x10
bl sub_02009E38
b _0200A75C
_0200A2B8:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
mov r1, r1, lsl #0x10
mov r1, r1, asr #0x10
bl sub_02009E58
b _0200A75C
_0200A2D0:
ldr r7, [sp, #0x2c]
ldr r6, [sp, #0x28]
ldr r5, [sp, #0x24]
bl sub_02005EE8
mov r8, r0
mov r2, #0
b _0200A30C
_0200A2EC:
tst r5, #1
movne r0, r2, lsl #4
addne r0, r0, #0x4000000
ldrneb r1, [r0, #0x403]
add r2, r2, #1
orrne r1, r1, #0x80
strneb r1, [r0, #0x403]
mov r5, r5, lsr #1
_0200A30C:
cmp r2, #0x10
bge _0200A31C
cmp r5, #0
bne _0200A2EC
_0200A31C:
tst r6, #1
beq _0200A348
tst r6, #2
ldrneh r1, [r4]
orrne r0, r1, #0x80
orrne r0, r0, #0x8000
strneh r0, [r4]
ldreqb r0, [r4]
orreq r0, r0, #0x80
streqb r0, [r4]
b _0200A358
_0200A348:
tst r6, #2
ldrneb r0, [sl]
orrne r0, r0, #0x80
strneb r0, [sl]
_0200A358:
mov r5, #0
b _0200A378
_0200A360:
tst r7, #1
beq _0200A370
mov r0, r5
bl sub_02009F94
_0200A370:
add r5, r5, #1
mov r7, r7, lsr #1
_0200A378:
cmp r5, #8
bge _0200A388
cmp r7, #0
bne _0200A360
_0200A388:
mov r0, r8
bl sub_02005EFC
bl sub_02009E74
b _0200A75C
_0200A398:
ldr sb, [sp, #0x30]
ldr r7, [sp, #0x2c]
ldr r6, [sp, #0x28]
ldr r5, [sp, #0x24]
bl sub_02005EE8
mov fp, r0
mov r8, #0
b _0200A3D0
_0200A3B8:
tst r7, #1
beq _0200A3C8
mov r0, r8
bl sub_0200A050
_0200A3C8:
add r8, r8, #1
mov r7, r7, lsr #1
_0200A3D0:
cmp r8, #8
bge _0200A3E0
cmp r7, #0
bne _0200A3B8
_0200A3E0:
mov r7, #0
b _0200A404
_0200A3E8:
tst r5, #1
beq _0200A3FC
mov r0, r7
mov r1, sb
bl sub_02006C08
_0200A3FC:
add r7, r7, #1
mov r5, r5, lsr #1
_0200A404:
cmp r7, #0x10
bge _0200A414
cmp r5, #0
bne _0200A3E8
_0200A414:
tst r6, #1
movne r0, #0
strneb r0, [r4]
tst r6, #2
movne r0, #0
strneb r0, [sl]
mov r0, fp
bl sub_02005EFC
bl sub_02009E74
b _0200A75C
_0200A43C:
ldr r1, [sp, #0x2c]
mov r0, r1, lsr #0x1d
and r0, r0, #1
str r0, [sp]
mov r0, r1, lsr #0x1c
and r0, r0, #1
str r0, [sp, #4]
mov r0, r1, lsr #0x1b
and r0, r0, #1
str r0, [sp, #8]
mov r0, r1, lsr #0x1f
and r0, r0, #1
mov r1, r1, lsr #0x1e
and r1, r1, #1
ldr r2, [sp, #0x24]
ldr r3, [sp, #0x28]
bl sub_020072E4
b _0200A75C
_0200A484:
ldr r0, [sp, #0x30]
mov r2, #0
str r0, [sp, #4]
ldr r3, [sp, #0x2c]
mov r0, #0
str r0, [sp]
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
bl sub_02009F38
b _0200A75C
_0200A4AC:
ldr r6, [sp, #0x28]
ldr r5, [sp, #0x24]
mov r7, #0
b _0200A4D8
_0200A4BC:
tst r5, #1
beq _0200A4D0
mov r0, r7
mov r1, r6
bl sub_02006CA8
_0200A4D0:
add r7, r7, #1
mov r5, r5, lsr #1
_0200A4D8:
cmp r7, #0x10
bge _0200A75C
cmp r5, #0
bne _0200A4BC
b _0200A75C
_0200A4EC:
ldr r7, [sp, #0x2c]
ldr r6, [sp, #0x28]
ldr r5, [sp, #0x24]
mov r8, #0
b _0200A520
_0200A500:
tst r5, #1
beq _0200A518
mov r0, r8
mov r1, r6
mov r2, r7
bl sub_02006C30
_0200A518:
add r8, r8, #1
mov r5, r5, lsr #1
_0200A520:
cmp r8, #0x10
bge _0200A75C
cmp r5, #0
bne _0200A500
b _0200A75C
_0200A534:
ldr r6, [sp, #0x28]
ldr r5, [sp, #0x24]
mov r7, #0
b _0200A560
_0200A544:
tst r5, #1
beq _0200A558
mov r0, r7
mov r1, r6
bl sub_02006CC0
_0200A558:
add r7, r7, #1
mov r5, r5, lsr #1
_0200A560:
cmp r7, #0x10
bge _0200A75C
cmp r5, #0
bne _0200A544
b _0200A75C
_0200A574:
ldr r3, [sp, #0x30]
ldr r0, [sp, #0x24]
mov r1, r3, lsl #0x10
ldr r2, [sp, #0x2c]
mov r1, r1, lsr #0x10
str r1, [sp]
ldr r1, _0200A7A4 ; =0x003FFFFF
and r1, r2, r1
str r1, [sp, #4]
mov r1, r2, lsr #0x18
and r1, r1, #0x7f
str r1, [sp, #8]
mov r1, r2, lsr #0x16
and r1, r1, #3
str r1, [sp, #0xc]
mov r1, r0, lsr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
str r1, [sp, #0x10]
mov r1, r3, lsr #0x10
mov r2, r3, lsr #0x18
and r1, r1, #0x7f
str r1, [sp, #0x14]
ldr r1, [sp, #0x28]
mov r0, r0, lsl #0x10
mov r3, r3, lsr #0x1a
mov r0, r0, lsr #0x10
bic r1, r1, #0xf8000000
and r2, r2, #3
and r3, r3, #3
bl sub_020069EC
b _0200A75C
_0200A5F4:
ldr r1, [sp, #0x2c]
ldr r3, [sp, #0x28]
mov r0, r1, lsl #8
mov r0, r0, lsr #0x10
str r0, [sp]
and r0, r1, #0x7f
str r0, [sp, #4]
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x30]
and r2, r3, #0x7f
mov r3, r3, lsr #8
and r3, r3, #3
bl sub_02006AB8
b _0200A75C
_0200A62C:
ldr r1, [sp, #0x2c]
ldr r2, [sp, #0x28]
and r0, r1, #0x7f
str r0, [sp]
mov r0, r1, lsl #8
mov r3, r0, lsr #0x10
ldr r0, [sp, #0x24]
and r1, r2, #0x7f
mov r2, r2, lsr #8
and r2, r2, #3
bl sub_02006B64
b _0200A75C
_0200A65C:
ldr r0, [sp, #0x24]
bl sub_02006DC8
b _0200A75C
_0200A668:
ldr r0, [sp, #0x24]
bl sub_020069A4
b _0200A75C
_0200A674:
ldr r0, [sp, #0x24]
bl sub_02006D54
b _0200A75C
_0200A680:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
bl sub_020069B4
b _0200A75C
_0200A698:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
bl sub_02007DC8
b _0200A75C
_0200A6A8:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
bl sub_02007EA8
b _0200A75C
_0200A6B8:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
bl sub_02007D18
b _0200A75C
_0200A6C8:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
bl sub_020087A4
b _0200A75C
_0200A6D8:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
bl sub_02008830
b _0200A75C
_0200A6E8:
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
bl sub_02007EFC
b _0200A75C
_0200A6F8:
ldr r1, [sp, #0x24]
ldr r0, _0200A7A8 ; =0x03807E6C
str r1, [r0]
b _0200A75C
_0200A708:
ldr r5, [sp, #0x24]
ldr r0, _0200A7AC ; =0x03807E70
mov r1, r5
mov r2, #0x1180
bl sub_020061D4
ldr r0, _0200A7AC ; =0x03807E70
add r1, r5, #0x1000
str r0, [r1, #0x1c0]
mov r6, #0
_0200A72C:
mov r0, r6
bl sub_02006DB8
add r1, r5, r6, lsl #2
add r1, r1, #0x1000
str r0, [r1, #0x180]
add r6, r6, #1
cmp r6, #0x10
blt _0200A72C
mov r0, #0
bl sub_02007EE0
add r1, r5, #0x1000
str r0, [r1, #0x1c4]
_0200A75C:
ldr r6, [sp, #0x1c]
_0200A760:
cmp r6, #0
bne _0200A120
ldr r0, _0200A7A8 ; =0x03807E6C
ldr r1, [r0]
ldr r0, [r1]
add r0, r0, #1
str r0, [r1]
_0200A77C:
ldr r0, _0200A7B0 ; =0x03808FF0
add r1, sp, #0x18
mov r2, #0
bl sub_02004948
cmp r0, #0
bne _0200A110
add sp, sp, #0x34
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0200A7A0: .word 0x04000509
_0200A7A4: .word 0x003FFFFF
_0200A7A8: .word 0x03807E6C
_0200A7AC: .word 0x03807E70
_0200A7B0: .word 0x03808FF0
arm_func_end sub_0200A104
arm_func_start sub_0200A7B4
sub_0200A7B4: ; 0x0200A7B4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
bl sub_02005EE8
mov r4, r0
cmp r5, #0x2000000
blo _0200A7E0
ldr r0, _0200A7FC ; =0x03808FF0
mov r1, r5
mov r2, #0
bl sub_020048BC
b _0200A7EC
_0200A7E0:
cmp r5, #0
bne _0200A7EC
bl sub_020071B0
_0200A7EC:
mov r0, r4
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0200A7FC: .word 0x03808FF0
arm_func_end sub_0200A7B4
arm_func_start sub_0200A800
sub_0200A800: ; 0x0200A800
ldr ip, _0200A808 ; =sub_03803168
bx ip
.align 2, 0
_0200A808: .word sub_03803168
arm_func_end sub_0200A800
arm_func_start sub_0200A80C
sub_0200A80C: ; 0x0200A80C
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r4, _0200A8B0 ; =0x03809060
mov r2, #0
mvn r1, #2
str r1, [r4, #0xc]
mov r0, #4
str r0, [r4, #0xf0]
str r2, [r4, #0x10]
str r2, [r4, #0x1c]
str r2, [r4]
str r2, [r4, #8]
str r2, [r4, #0x18]
str r2, [r4, #0x14]
str r2, [r4, #0xf8]
str r2, [r4, #0xf4]
mov r0, #0x400
str r0, [sp]
ldr ip, [r4, #0xf0]
ldr r1, _0200A8B4 ; =0x038032B8
ldr r3, _0200A8B8 ; =0x03809660
add r0, r4, #0x48
str ip, [sp, #4]
bl sub_0200423C
add r0, r4, #0x48
bl sub_02004554
ldr r1, _0200A8BC ; =0x038031D4
mov r0, #0xb
bl sub_02006584
ldr r0, _0200A8C0 ; =0x027FFC40
ldrh r0, [r0]
cmp r0, #2
moveq r0, #1
movne r0, #0
cmp r0, #0
ldreq r0, _0200A8C4 ; =0x03809040
moveq r1, #1
streq r1, [r0]
add sp, sp, #8
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200A8B0: .word 0x03809060
_0200A8B4: .word 0x038032B8
_0200A8B8: .word 0x03809660
_0200A8BC: .word 0x038031D4
_0200A8C0: .word 0x027FFC40
_0200A8C4: .word 0x03809040
arm_func_end sub_0200A80C
arm_func_start sub_0200A8C8
sub_0200A8C8: ; 0x0200A8C8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r5, _0200A904 ; =0x03809060
mov r7, r0
bl sub_02005EE8
ldr r6, [r5, #0xf0]
mov r4, r0
mov r1, r7
add r0, r5, #0x48
str r7, [r5, #0xf0]
bl sub_020045A8
mov r0, r4
bl sub_02005EFC
mov r0, r6
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0200A904: .word 0x03809060
arm_func_end sub_0200A8C8
arm_func_start sub_0200A908
sub_0200A908: ; 0x0200A908
ldr r0, _0200A910 ; =0x027FFA80
bx lr
.align 2, 0
_0200A910: .word 0x027FFA80
arm_func_end sub_0200A908
arm_func_start sub_0200A914
sub_0200A914: ; 0x0200A914
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r5, r0
mov r4, r1
adds r1, r5, r4
beq _0200A9AC
cmp r5, #0
beq _0200A934
bl sub_02004650
_0200A934:
cmp r4, #0
beq _0200A988
sub r7, r4, r5
mov r4, #0
mov r5, #1
mov r6, #5
b _0200A968
_0200A950:
cmp r7, #5
movlt r8, r7
movge r8, r6
mov r0, r8
bl sub_02004650
sub r7, r7, r8
_0200A968:
bl sub_0200A9B8
tst r0, #1
moveq r0, r5
movne r0, r4
cmp r0, #0
bne _0200A988
cmp r7, #0
bgt _0200A950
_0200A988:
bl sub_0200A9B8
tst r0, #1
moveq r0, #1
movne r0, #0
cmp r0, #0
ldreq r0, _0200A9B4 ; =0x03809060
moveq r1, #4
ldreq r0, [r0]
streq r1, [r0]
_0200A9AC:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_0200A9B4: .word 0x03809060
arm_func_end sub_0200A914
arm_func_start sub_0200A9B8
sub_0200A9B8: ; 0x0200A9B8
stmdb sp!, {r3, lr}
ldr ip, _0200A9FC ; =0x03809660
mov lr, #2
ldr r0, _0200AA00 ; =0x0380720C
ldr r3, _0200AA04 ; =0x03802924
mov r1, #0
mov r2, #1
str lr, [ip, #4]
bl sub_0200AA48
ldr r3, _0200AA08 ; =0x038028E4
add r1, sp, #0
mov r0, #0
mov r2, #1
bl sub_0200AA48
ldrb r0, [sp]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200A9FC: .word 0x03809660
_0200AA00: .word 0x0380720C
_0200AA04: .word 0x03802924
_0200AA08: .word 0x038028E4
arm_func_end sub_0200A9B8
arm_func_start sub_0200AA0C
sub_0200AA0C: ; 0x0200AA0C
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x32
bl sub_0200A914
ldr r0, _0200AA44 ; =0x03809060
ldr r1, [r0]
ldr r0, [r1]
cmp r0, #4
moveq r0, #6
streq r0, [r1]
moveq r0, #0
movne r0, #1
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200AA44: .word 0x03809060
arm_func_end sub_0200AA0C
arm_func_start sub_0200AA48
sub_0200AA48: ; 0x0200AA48
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r5, _0200AAC0 ; =0x03809664
ldr r8, _0200AAC4 ; =0x0000A040
ldr r4, _0200AAC8 ; =0x040001A0
stmib r5, {r0, r1}
strh r8, [r4]
mov r7, r2
mov r6, r3
mov r8, #0xa000
b _0200AA9C
_0200AA70:
ldr r0, [r5]
subs r0, r0, #1
str r0, [r5]
streqh r8, [r4]
_0200AA80:
ldrh r0, [r4]
tst r0, #0x80
bne _0200AA80
mov r0, r5
mov lr, pc
bx r6
_0200AA98:
sub r7, r7, #1
_0200AA9C:
cmp r7, #0
bne _0200AA70
ldr r0, [r5]
cmp r0, #0
ldreq r0, _0200AAC8 ; =0x040001A0
moveq r1, #0
streqh r1, [r0]
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_0200AAC0: .word 0x03809664
_0200AAC4: .word 0x0000A040
_0200AAC8: .word 0x040001A0
arm_func_end sub_0200AA48
arm_func_start sub_0200AACC
sub_0200AACC: ; 0x0200AACC
ldr r1, _0200AB08 ; =0x040001A2
mov r2, #0
strh r2, [r1]
sub r2, r1, #2
_0200AADC:
ldrh r1, [r2]
tst r1, #0x80
bne _0200AADC
ldr r2, _0200AB08 ; =0x040001A2
ldr r1, [r0, #8]
ldrh r2, [r2]
strb r2, [r1]
ldr r1, [r0, #8]
add r1, r1, #1
str r1, [r0, #8]
bx lr
.align 2, 0
_0200AB08: .word 0x040001A2
arm_func_end sub_0200AACC
arm_func_start sub_0200AB0C
sub_0200AB0C: ; 0x0200AB0C
stmdb sp!, {r3}
sub sp, sp, #4
ldr r1, [r0, #4]
ldr r2, _0200AB58 ; =0x040001A2
ldrb r1, [r1]
strh r1, [r2]
ldr r1, [r0, #4]
add r1, r1, #1
str r1, [r0, #4]
sub r1, r2, #2
_0200AB34:
ldrh r0, [r1]
tst r0, #0x80
bne _0200AB34
ldr r0, _0200AB58 ; =0x040001A2
ldrh r0, [r0]
strh r0, [sp]
add sp, sp, #4
ldmia sp!, {r3}
bx lr
.align 2, 0
_0200AB58: .word 0x040001A2
arm_func_end sub_0200AB0C
arm_func_start sub_0200AB5C
sub_0200AB5C: ; 0x0200AB5C
ldr r1, _0200ABBC ; =0x040001A2
mov r2, #0
strh r2, [r1]
sub r2, r1, #2
_0200AB6C:
ldrh r1, [r2]
tst r1, #0x80
bne _0200AB6C
ldr r2, _0200ABBC ; =0x040001A2
ldr r1, [r0, #4]
ldrh r2, [r2]
ldrb r1, [r1]
and r2, r2, #0xff
cmp r2, r1
beq _0200ABAC
mov r1, #0
str r1, [r0, #0xc]
ldr r1, [r0]
cmp r1, #1
movhi r1, #1
strhi r1, [r0]
_0200ABAC:
ldr r1, [r0, #4]
add r1, r1, #1
str r1, [r0, #4]
bx lr
.align 2, 0
_0200ABBC: .word 0x040001A2
arm_func_end sub_0200AB5C
arm_func_start sub_0200ABC0
sub_0200ABC0: ; 0x0200ABC0
stmdb sp!, {r3, lr}
ldr ip, _0200ABE8 ; =0x03809660
mov r2, #1
ldr r0, _0200ABEC ; =0x03807204
ldr r3, _0200ABF0 ; =0x03802924
mov r1, #0
str r2, [ip, #4]
bl sub_0200AA48
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200ABE8: .word 0x03809660
_0200ABEC: .word 0x03807204
_0200ABF0: .word 0x03802924
arm_func_end sub_0200ABC0
arm_func_start sub_0200ABF4
sub_0200ABF4: ; 0x0200ABF4
stmdb sp!, {r3, lr}
ldr r2, _0200AC8C ; =0x03809060
ldr r2, [r2]
ldr r2, [r2, #0x28]
cmp r2, #1
beq _0200AC20
cmp r2, #2
beq _0200AC3C
cmp r2, #3
beq _0200AC54
b _0200AC70
_0200AC20:
mov r3, r0, lsr #5
and r3, r3, #8
mov ip, r0, lsl #0x18
orr r0, r1, r3
orr r0, r0, ip, lsr #16
str r0, [sp]
b _0200AC70
_0200AC3C:
and r3, r0, #0xff00
mov ip, r0, lsl #0x18
orr r0, r1, r3
orr r0, r0, ip, lsr #8
str r0, [sp]
b _0200AC70
_0200AC54:
mov r3, r0, lsr #8
and r3, r3, #0xff00
and ip, r0, #0xff00
orr r1, r1, r3
orr r1, r1, ip, lsl #8
orr r0, r1, r0, lsl #24
str r0, [sp]
_0200AC70:
ldr r3, _0200AC90 ; =0x03802924
add r0, sp, #0
add r2, r2, #1
mov r1, #0
bl sub_0200AA48
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200AC8C: .word 0x03809060
_0200AC90: .word 0x03802924
arm_func_end sub_0200ABF4
arm_func_start sub_0200AC94
sub_0200AC94: ; 0x0200AC94
stmdb sp!, {r4, lr}
ldr r0, _0200ACE4 ; =0x03809060
ldr r0, [r0]
ldrb r4, [r0, #0x54]
cmp r4, #0xff
beq _0200ACDC
ldr r0, _0200ACE8 ; =0x03809660
ldr r0, [r0]
cmp r0, #0
bne _0200ACDC
bl sub_0200A9B8
cmp r4, r0
beq _0200ACD0
mov r0, r4
bl sub_0200B0EC
_0200ACD0:
ldr r0, _0200ACE8 ; =0x03809660
mov r1, #1
str r1, [r0]
_0200ACDC:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200ACE4: .word 0x03809060
_0200ACE8: .word 0x03809660
arm_func_end sub_0200AC94
arm_func_start sub_0200ACEC
sub_0200ACEC: ; 0x0200ACEC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_0200AA0C
cmp r0, #0
beq _0200AD44
ldr r0, _0200AD4C ; =0x03809060
ldr r2, _0200AD50 ; =0x03809660
ldr r1, [r0]
mov r0, r6
ldr r3, [r1, #0x28]
mov r1, #3
add r3, r3, #1
add r3, r3, r4
str r3, [r2, #4]
bl sub_0200ABF4
ldr r3, _0200AD54 ; =0x038028E4
mov r1, r5
mov r2, r4
mov r0, #0
bl sub_0200AA48
_0200AD44:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0200AD4C: .word 0x03809060
_0200AD50: .word 0x03809660
_0200AD54: .word 0x038028E4
arm_func_end sub_0200ACEC
arm_func_start sub_0200AD58
sub_0200AD58: ; 0x0200AD58
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
mov sb, r1
mov r8, r2
bl sub_0200AA0C
cmp r0, #0
beq _0200ADFC
ldr r0, _0200AE04 ; =0x03809060
ldr fp, _0200AE08 ; =0x03809660
ldr r5, [r0]
ldr r6, [r5, #0x24]
sub r4, r6, #1
b _0200ADF4
_0200AD8C:
and r0, sl, r4
sub r7, r6, r0
cmp r7, r8
movhi r7, r8
bl sub_0200ABC0
ldr r1, [r5, #0x28]
mov r0, sl
add r1, r1, #1
add r1, r1, r7
str r1, [fp, #4]
mov r1, #2
bl sub_0200ABF4
ldr r3, _0200AE0C ; =0x03802924
mov r0, sb
mov r1, #0
mov r2, r7
bl sub_0200AA48
ldr r0, [r5, #0x2c]
mov r1, #0
bl sub_0200A914
ldr r0, [r5]
cmp r0, #0
bne _0200ADFC
add sb, sb, r7
add sl, sl, r7
sub r8, r8, r7
_0200ADF4:
cmp r8, #0
bne _0200AD8C
_0200ADFC:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0200AE04: .word 0x03809060
_0200AE08: .word 0x03809660
_0200AE0C: .word 0x03802924
arm_func_end sub_0200AD58
arm_func_start sub_0200AE10
sub_0200AE10: ; 0x0200AE10
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
mov sb, r1
mov r8, r2
bl sub_0200AA0C
cmp r0, #0
beq _0200AEB4
ldr r0, _0200AEBC ; =0x03809060
ldr fp, _0200AEC0 ; =0x03809660
ldr r5, [r0]
ldr r6, [r5, #0x24]
sub r4, r6, #1
b _0200AEAC
_0200AE44:
and r0, sl, r4
sub r7, r6, r0
cmp r7, r8
movhi r7, r8
bl sub_0200ABC0
ldr r1, [r5, #0x28]
mov r0, sl
add r1, r1, #1
add r1, r1, r7
str r1, [fp, #4]
mov r1, #0xa
bl sub_0200ABF4
ldr r3, _0200AEC4 ; =0x03802924
mov r0, sb
mov r1, #0
mov r2, r7
bl sub_0200AA48
ldr r0, [r5, #0x30]
ldr r1, [r5, #0x34]
bl sub_0200A914
ldr r0, [r5]
cmp r0, #0
bne _0200AEB4
add sb, sb, r7
add sl, sl, r7
sub r8, r8, r7
_0200AEAC:
cmp r8, #0
bne _0200AE44
_0200AEB4:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0200AEBC: .word 0x03809060
_0200AEC0: .word 0x03809660
_0200AEC4: .word 0x03802924
arm_func_end sub_0200AE10
arm_func_start sub_0200AEC8
sub_0200AEC8: ; 0x0200AEC8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl sub_0200AA0C
cmp r0, #0
beq _0200AF44
ldr r0, _0200AF4C ; =0x03809060
ldr r2, _0200AF50 ; =0x03809660
ldr r4, [r0]
mov r0, #1
str r0, [r2, #0x10]
ldr r1, [r4, #0x28]
mov r0, r7
add r1, r1, #1
add r3, r1, r5
mov r1, #3
str r3, [r2, #4]
bl sub_0200ABF4
ldr r3, _0200AF54 ; =0x03802974
mov r0, r6
mov r2, r5
mov r1, #0
bl sub_0200AA48
ldr r0, [r4]
cmp r0, #0
ldreq r0, _0200AF50 ; =0x03809660
ldreq r0, [r0, #0x10]
cmpeq r0, #0
moveq r0, #1
streq r0, [r4]
_0200AF44:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0200AF4C: .word 0x03809060
_0200AF50: .word 0x03809660
_0200AF54: .word 0x03802974
arm_func_end sub_0200AEC8
arm_func_start sub_0200AF58
sub_0200AF58: ; 0x0200AF58
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _0200AFEC ; =0x03809060
mov r7, r0
ldr r4, [r2]
mov r6, r1
ldr r5, [r4, #0x1c]
orr r0, r7, r6
sub r1, r5, #1
tst r1, r0
movne r0, #2
strne r0, [r4]
bne _0200AFE4
bl sub_0200AA0C
cmp r0, #0
beq _0200AFE4
ldr r8, _0200AFF0 ; =0x03809660
mov sb, #0xd8
b _0200AFDC
_0200AFA0:
bl sub_0200ABC0
ldr r1, [r4, #0x28]
mov r0, r7
add r1, r1, #1
str r1, [r8, #4]
mov r1, sb
bl sub_0200ABF4
ldr r0, [r4, #0x40]
ldr r1, [r4, #0x44]
bl sub_0200A914
ldr r0, [r4]
cmp r0, #0
bne _0200AFE4
add r7, r7, r5
sub r6, r6, r5
_0200AFDC:
cmp r6, #0
bne _0200AFA0
_0200AFE4:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0200AFEC: .word 0x03809060
_0200AFF0: .word 0x03809660
arm_func_end sub_0200AF58
arm_func_start sub_0200AFF4
sub_0200AFF4: ; 0x0200AFF4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _0200B088 ; =0x03809060
mov r7, r0
ldr r4, [r2]
mov r6, r1
ldr r5, [r4, #0x20]
orr r0, r7, r6
sub r1, r5, #1
tst r1, r0
movne r0, #2
strne r0, [r4]
bne _0200B080
bl sub_0200AA0C
cmp r0, #0
beq _0200B080
ldr r8, _0200B08C ; =0x03809660
mov sb, #0x20
b _0200B078
_0200B03C:
bl sub_0200ABC0
ldr r1, [r4, #0x28]
mov r0, r7
add r1, r1, #1
str r1, [r8, #4]
mov r1, sb
bl sub_0200ABF4
ldr r0, [r4, #0x48]
ldr r1, [r4, #0x4c]
bl sub_0200A914
ldr r0, [r4]
cmp r0, #0
bne _0200B080
add r7, r7, r5
sub r6, r6, r5
_0200B078:
cmp r6, #0
bne _0200B03C
_0200B080:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0200B088: .word 0x03809060
_0200B08C: .word 0x03809660
arm_func_end sub_0200AFF4
arm_func_start sub_0200B090
sub_0200B090: ; 0x0200B090
stmdb sp!, {r4, lr}
bl sub_0200AA0C
cmp r0, #0
beq _0200B0D4
ldr r0, _0200B0DC ; =0x03809060
ldr r4, [r0]
bl sub_0200ABC0
ldr r1, _0200B0E0 ; =0x03809660
mov r2, #1
ldr r0, _0200B0E4 ; =0x03807208
ldr r3, _0200B0E8 ; =0x03802924
str r2, [r1, #4]
mov r1, #0
bl sub_0200AA48
ldr r0, [r4, #0x38]
ldr r1, [r4, #0x3c]
bl sub_0200A914
_0200B0D4:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200B0DC: .word 0x03809060
_0200B0E0: .word 0x03809660
_0200B0E4: .word 0x03807208
_0200B0E8: .word 0x03802924
arm_func_end sub_0200B090
arm_func_start sub_0200B0EC
sub_0200B0EC: ; 0x0200B0EC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r4, r0
bl sub_0200AA0C
cmp r0, #0
beq _0200B170
ldr r0, _0200B178 ; =0x03809060
strb r4, [sp, #1]
mov r1, #1
ldr sb, [r0]
ldr r5, _0200B17C ; =0x03802924
ldr r4, _0200B180 ; =0x03809660
strb r1, [sp]
mov sl, #0xa
add r7, sp, #0
mov r8, #2
mov r6, #0
mov fp, #5
_0200B130:
bl sub_0200ABC0
mov r0, r7
str r8, [r4, #4]
mov r1, r6
mov r2, r8
mov r3, r5
bl sub_0200AA48
mov r0, fp
mov r1, #0
bl sub_0200A914
ldr r0, [sb]
cmp r0, #4
bne _0200B170
sub sl, sl, #1
cmp sl, #0
bgt _0200B130
_0200B170:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0200B178: .word 0x03809060
_0200B17C: .word 0x03802924
_0200B180: .word 0x03809660
arm_func_end sub_0200B0EC
arm_func_start sub_0200B184
sub_0200B184: ; 0x0200B184
ldr r3, _0200B1DC ; =0x040001A4
_0200B188:
ldr r2, [r3]
tst r2, #0x80000000
bne _0200B188
ldr r3, _0200B1E0 ; =0x040001A1
mov r2, #0xc0
strb r2, [r3]
mov r2, r0, lsr #0x18
strb r2, [r3, #7]
mov r2, r0, lsr #0x10
strb r2, [r3, #8]
mov r2, r0, lsr #8
strb r2, [r3, #9]
strb r0, [r3, #0xa]
mov r0, r1, lsr #0x18
strb r0, [r3, #0xb]
mov r0, r1, lsr #0x10
strb r0, [r3, #0xc]
mov r0, r1, lsr #8
strb r0, [r3, #0xd]
strb r1, [r3, #0xe]
bx lr
.align 2, 0
_0200B1DC: .word 0x040001A4
_0200B1E0: .word 0x040001A1
arm_func_end sub_0200B184
arm_func_start sub_0200B1E4
sub_0200B1E4: ; 0x0200B1E4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _0200B254 ; =0x03809060
mov r1, #0
ldr r0, [r4]
str r1, [r0]
ldr r7, [r4, #0x3c]
ldr r6, [r4, #0x40]
bl sub_02005EE8
ldr r1, [r4, #0xfc]
mov r5, r0
bic r0, r1, #0x4c
str r0, [r4, #0xfc]
add r0, r4, #0xf4
bl sub_020044CC
ldr r0, [r4, #0xfc]
tst r0, #0x10
beq _0200B230
add r0, r4, #0x48
bl sub_02004554
_0200B230:
mov r0, r5
bl sub_02005EFC
cmp r7, #0
beq _0200B24C
mov r0, r6
mov lr, pc
bx r7
_0200B24C:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0200B254: .word 0x03809060
arm_func_end sub_0200B1E4
arm_func_start sub_0200B258
sub_0200B258: ; 0x0200B258
ldr r1, _0200B274 ; =0x03807560
ldr r1, [r1]
ldr r1, [r1, #0x60]
bic r1, r1, #0x7000000
orr r0, r1, r0
orr r0, r0, #0xa0000000
bx lr
.align 2, 0
_0200B274: .word 0x03807560
arm_func_end sub_0200B258
arm_func_start sub_0200B278
sub_0200B278: ; 0x0200B278
bx lr
arm_func_end sub_0200B278
arm_func_start sub_0200B27C
sub_0200B27C: ; 0x0200B27C
stmdb sp!, {r3, lr}
mov r0, #0xb8000000
mov r1, #0
bl sub_0200B184
mov r0, #0x7000000
bl sub_0200B258
mov r1, #0x2000
rsb r1, r1, #0
ldr r2, _0200B2C4 ; =0x040001A4
and r0, r0, r1
str r0, [r2]
_0200B2A8:
ldr r0, [r2]
tst r0, #0x800000
beq _0200B2A8
ldr r0, _0200B2C8 ; =0x04100010
ldr r0, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200B2C4: .word 0x040001A4
_0200B2C8: .word 0x04100010
arm_func_end sub_0200B27C
arm_func_start sub_0200B2CC
sub_0200B2CC: ; 0x0200B2CC
stmdb sp!, {r4, lr}
ldr r0, _0200B2F8 ; =0x03809060
mov r1, #0
mov r2, r1
bl sub_0200B2FC
bl sub_0200B27C
mov r4, r0
bl sub_0200B1E4
mov r0, r4
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200B2F8: .word 0x03809060
arm_func_end sub_0200B2CC
arm_func_start sub_0200B2FC
sub_0200B2FC: ; 0x0200B2FC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl sub_02005EE8
mov r4, r0
b _0200B320
_0200B318:
add r0, r7, #0xf4
bl sub_02004478
_0200B320:
ldr r0, [r7, #0xfc]
tst r0, #4
bne _0200B318
ldr r1, [r7, #0xfc]
mov r0, r4
orr r1, r1, #4
str r1, [r7, #0xfc]
str r6, [r7, #0x3c]
str r5, [r7, #0x40]
bl sub_02005EFC
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_0200B2FC
arm_func_start sub_0200B350
sub_0200B350: ; 0x0200B350
stmdb sp!, {r3, lr}
ldr ip, _0200B3B0 ; =0x03809060
ldr r0, [ip, #0xfc]
cmp r0, #0
bne _0200B3A8
ldr r0, _0200B3B4 ; =0x03809680
mov r2, #0
sub r1, r2, #1
mov r3, #1
str r3, [ip, #0xfc]
str r2, [ip, #0x28]
str r2, [ip, #0x24]
str r2, [ip, #0x20]
str r1, [ip, #0x2c]
str r2, [ip, #0x3c]
str r2, [ip, #0x40]
str r2, [r0]
bl sub_0200A80C
ldr r1, _0200B3B8 ; =0x03803090
ldr r0, _0200B3B4 ; =0x03809680
str r1, [r0, #0x20]
bl sub_0200B6D4
_0200B3A8:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200B3B0: .word 0x03809060
_0200B3B4: .word 0x03809680
_0200B3B8: .word 0x03803090
arm_func_end sub_0200B350
arm_func_start sub_0200B3BC
sub_0200B3BC: ; 0x0200B3BC
stmdb sp!, {r3, lr}
cmp r0, #0xb
bne _0200B494
cmp r2, #0
beq _0200B494
ldr r0, _0200B49C ; =0x03809060
ldr r2, [r0, #8]
cmp r2, #0
streq r1, [r0, #4]
ldr r2, [r0, #4]
cmp r2, #0xf
addls pc, pc, r2, lsl #2
b _0200B460
_0200B3F0: ; jump table
b _0200B430 ; case 0
b _0200B460 ; case 1
b _0200B454 ; case 2
b _0200B454 ; case 3
b _0200B454 ; case 4
b _0200B454 ; case 5
b _0200B454 ; case 6
b _0200B454 ; case 7
b _0200B454 ; case 8
b _0200B454 ; case 9
b _0200B454 ; case 10
b _0200B454 ; case 11
b _0200B454 ; case 12
b _0200B454 ; case 13
b _0200B454 ; case 14
b _0200B454 ; case 15
_0200B430:
ldr r2, [r0, #8]
cmp r2, #0
beq _0200B460
cmp r2, #1
ldreq r2, [r0, #0xfc]
streq r1, [r0]
orreq r1, r2, #0x10
streq r1, [r0, #0xfc]
b _0200B460
_0200B454:
ldr r1, [r0, #0xfc]
orr r1, r1, #0x10
str r1, [r0, #0xfc]
_0200B460:
ldr r1, [r0, #0xfc]
tst r1, #0x10
ldreq r1, [r0, #8]
addeq r1, r1, #1
streq r1, [r0, #8]
beq _0200B494
ldr r1, [r0, #0xfc]
mov r2, #0
str r2, [r0, #8]
tst r1, #4
ldrne r0, [r0, #0xec]
addeq r0, r0, #0x48
bl sub_02004554
_0200B494:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200B49C: .word 0x03809060
arm_func_end sub_0200B3BC
arm_func_start sub_0200B4A0
sub_0200B4A0: ; 0x0200B4A0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r4, _0200B6D0 ; =0x03809060
_0200B4A8:
mov r5, #0
bl sub_02005EE8
mov r6, r0
add r8, r4, #0x48
mov r7, r5
_0200B4BC:
ldr r0, [r4, #0xfc]
tst r0, #4
bne _0200B4F4
ldr r0, [r4, #0xfc]
tst r0, #0x10
beq _0200B500
ldr r0, [r4, #0xfc]
mov r5, #1
orr r0, r0, #4
str r0, [r4, #0xfc]
ldr r0, [r4, #0xfc]
bic r0, r0, #0x10
str r0, [r4, #0xfc]
b _0200B510
_0200B4F4:
ldr r0, [r4, #0xfc]
tst r0, #8
bne _0200B510
_0200B500:
mov r0, r7
str r8, [r4, #0xec]
bl sub_02004478
b _0200B4BC
_0200B510:
mov r0, r6
bl sub_02005EFC
cmp r5, #0
beq _0200B6BC
ldr r0, [r4]
mov r1, #0
str r1, [r0]
ldr r3, [r4]
ldr r2, [r4, #4]
ldr r1, [r3, #0x58]
mov r0, #1
tst r1, r0, lsl r2
moveq r0, #3
streq r0, [r3]
beq _0200B660
cmp r2, #0xf
addls pc, pc, r2, lsl #2
b _0200B658
_0200B558: ; jump table
b _0200B660 ; case 0
b _0200B660 ; case 1
b _0200B598 ; case 2
b _0200B5A0 ; case 3
b _0200B5B0 ; case 4
b _0200B658 ; case 5
b _0200B5BC ; case 6
b _0200B5D0 ; case 7
b _0200B5E4 ; case 8
b _0200B5F8 ; case 9
b _0200B658 ; case 10
b _0200B60C ; case 11
b _0200B62C ; case 12
b _0200B634 ; case 13
b _0200B648 ; case 14
b _0200B61C ; case 15
_0200B598:
bl sub_0200AC94
b _0200B660
_0200B5A0:
bl sub_0200B27C
ldr r1, [r4]
str r0, [r1, #8]
b _0200B660
_0200B5B0:
mov r0, #3
str r0, [r3]
b _0200B660
_0200B5BC:
ldr r0, [r3, #0xc]
ldr r1, [r3, #0x10]
ldr r2, [r3, #0x14]
bl sub_0200ACEC
b _0200B660
_0200B5D0:
ldr r0, [r3, #0x10]
ldr r1, [r3, #0xc]
ldr r2, [r3, #0x14]
bl sub_0200AE10
b _0200B660
_0200B5E4:
ldr r0, [r3, #0x10]
ldr r1, [r3, #0xc]
ldr r2, [r3, #0x14]
bl sub_0200AD58
b _0200B660
_0200B5F8:
ldr r0, [r3, #0x10]
ldr r1, [r3, #0xc]
ldr r2, [r3, #0x14]
bl sub_0200AEC8
b _0200B660
_0200B60C:
ldr r0, [r3, #0x10]
ldr r1, [r3, #0x14]
bl sub_0200AF58
b _0200B660
_0200B61C:
ldr r0, [r3, #0x10]
ldr r1, [r3, #0x14]
bl sub_0200AFF4
b _0200B660
_0200B62C:
bl sub_0200B090
b _0200B660
_0200B634:
bl sub_0200A9B8
ldr r1, [r4]
ldr r1, [r1, #0x10]
strb r0, [r1]
b _0200B660
_0200B648:
ldr r0, [r3, #0xc]
ldrb r0, [r0]
bl sub_0200B0EC
b _0200B660
_0200B658:
mov r0, #3
str r0, [r3]
_0200B660:
mov r6, #0xb
mov r5, #1
_0200B668:
mov r0, r6
mov r1, r5
mov r2, r5
bl sub_020065F8
cmp r0, #0
blt _0200B668
bl sub_02005EE8
ldr r1, [r4, #0xfc]
mov r5, r0
bic r0, r1, #0x4c
str r0, [r4, #0xfc]
add r0, r4, #0xf4
bl sub_020044CC
ldr r0, [r4, #0xfc]
tst r0, #0x10
beq _0200B6B0
add r0, r4, #0x48
bl sub_02004554
_0200B6B0:
mov r0, r5
bl sub_02005EFC
b _0200B4A8
_0200B6BC:
ldr r1, [r4, #0x44]
mov r0, r4
mov lr, pc
bx r1
_0200B6CC:
b _0200B4A8
.align 2, 0
_0200B6D0: .word 0x03809060
arm_func_end sub_0200B4A0
arm_func_start sub_0200B6D4
sub_0200B6D4: ; 0x0200B6D4
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0200B724 ; =0x038098C0
ldr r1, [r0, #8]
cmp r1, #0
bne _0200B71C
mov r1, #1
str r1, [r0, #8]
bl sub_0200649C
mov r5, #0xe
mov r4, #0
_0200B6FC:
mov r0, r5
mov r1, r4
bl sub_020065D4
cmp r0, #0
beq _0200B6FC
ldr r1, _0200B728 ; =0x03803544
mov r0, #0xe
bl sub_02006584
_0200B71C:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0200B724: .word 0x038098C0
_0200B728: .word 0x03803544
arm_func_end sub_0200B6D4
arm_func_start sub_0200B72C
sub_0200B72C: ; 0x0200B72C
stmdb sp!, {r4, lr}
and r0, r1, #0x3f
cmp r0, #1
bne _0200B784
mov r0, #0
bl sub_020060DC
mov r0, #1
bl sub_020060DC
mov r0, #2
bl sub_020060DC
mov r0, #3
bl sub_020060DC
mov r0, #0
bl sub_0200E7F8
bl sub_02005EE8
mov r4, r0
bl sub_020068F0
bl sub_0200D474
mov r0, r4
bl sub_02005EFC
bl sub_02006058
b _0200B788
_0200B784:
bl sub_02006058
_0200B788:
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_0200B72C
arm_func_start sub_0200B790
sub_0200B790: ; 0x0200B790
stmdb sp!, {r3, lr}
ldr r0, _0200B7D0 ; =0x038098C0
ldr r0, [r0, #0xc]
cmp r0, #0
bne _0200B7C0
ldr r0, _0200B7D4 ; =0x027FFE1F
ldrb r0, [r0]
tst r0, #0x80
beq _0200B7BC
bl sub_0200B7D8
b _0200B7C0
_0200B7BC:
bl sub_0200B878
_0200B7C0:
ldr r0, _0200B7D0 ; =0x038098C0
ldr r0, [r0, #0xc]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200B7D0: .word 0x038098C0
_0200B7D4: .word 0x027FFE1F
arm_func_end sub_0200B790
arm_func_start sub_0200B7D8
sub_0200B7D8: ; 0x0200B7D8
stmdb sp!, {r3, r4, r5, lr}
mov r5, #1
bl sub_02003DE4
mov r4, r0
mvn r0, #2
cmp r4, r0
beq _0200B850
mov r0, r4, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02003DB4
cmp r0, #0
bne _0200B844
ldr r1, _0200B870 ; =0x027FFC10
ldrh r0, [r1]
cmp r0, #0
subeq r0, r1, #0x410
subne r0, r1, #0x10
ldr r0, [r0]
str r0, [sp]
bl sub_0200B2CC
ldr r1, [sp]
cmp r0, r1
mov r0, r4, lsl #0x10
moveq r5, #1
mov r0, r0, lsr #0x10
movne r5, #0
bl sub_02003D94
_0200B844:
mov r0, r4, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02003E8C
_0200B850:
ldr r1, _0200B874 ; =0x038098C0
cmp r5, #0
moveq r2, #1
movne r2, #0
str r2, [r1, #0xc]
mov r0, r5
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0200B870: .word 0x027FFC10
_0200B874: .word 0x038098C0
arm_func_end sub_0200B7D8
arm_func_start sub_0200B878
sub_0200B878: ; 0x0200B878
ldr r0, _0200B89C ; =0x04000214
mov r2, #1
ldr r1, [r0]
mov r0, r2
tst r1, #0x100000
ldrne r1, _0200B8A0 ; =0x038098C0
movne r0, #0
strne r2, [r1, #0xc]
bx lr
.align 2, 0
_0200B89C: .word 0x04000214
_0200B8A0: .word 0x038098C0
arm_func_end sub_0200B878
arm_func_start sub_0200B8A4
sub_0200B8A4: ; 0x0200B8A4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r0, _0200B990 ; =0x038098C0
ldr r0, [r0, #4]
cmp r0, #0
bne _0200B988
ldr r2, _0200B994 ; =0x027FFC40
ldrh r0, [r2]
cmp r0, #2
beq _0200B988
ldr r1, _0200B998 ; =0x03807564
mvn r0, #0
ldr r3, [r1]
cmp r3, r0
ldreq r0, [r2, #-4]
addeq r0, r0, #0xa
streq r0, [r1]
beq _0200B988
ldr r0, [r2, #-4]!
cmp r0, r3
blo _0200B988
ldr r0, [r2]
add r0, r0, #0xa
str r0, [r1]
bl sub_0200B790
cmp r0, #0
beq _0200B938
ldr r0, _0200B990 ; =0x038098C0
mov r1, #1
str r1, [r0, #4]
bl sub_0200A908
ldr r0, [r0, #0xc]
cmp r0, #0
bne _0200B938
ldr r0, _0200B998 ; =0x03807564
ldr r0, [r0, #4]
cmp r0, #0
bne _0200B988
_0200B938:
ldr r0, _0200B990 ; =0x038098C0
ldr r1, _0200B998 ; =0x03807564
ldr r0, [r0, #4]
mov r2, #0
str r2, [r1, #4]
cmp r0, #0
beq _0200B988
mov r7, #0x64
mov r6, #0xe
mov r5, #0x11
mov r4, r2
b _0200B970
_0200B968:
mov r0, r7
bl sub_02003BF4
_0200B970:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_020065F8
cmp r0, #0
bne _0200B968
_0200B988:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0200B990: .word 0x038098C0
_0200B994: .word 0x027FFC40
_0200B998: .word 0x03807564
arm_func_end sub_0200B8A4
thumb_func_start sub_0200B99C
sub_0200B99C: ; 0x0200B99C
swi 0
bx lr
thumb_func_end sub_0200B99C
thumb_func_start sub_0200B9A0
sub_0200B9A0: ; 0x0200B9A0
swi 3
bx lr
thumb_func_end sub_0200B9A0
thumb_func_start sub_0200B9A4
sub_0200B9A4: ; 0x0200B9A4
ldr r2, _0200B9B0 ; =0x04000000
mov ip, r2
mov r2, #0
swi 4
bx lr
.align 2, 0
_0200B9B0: .word 0x04000000
thumb_func_end sub_0200B9A4
thumb_func_start sub_0200B9B4
sub_0200B9B4: ; 0x0200B9B4
mov r2, #0
swi 5
bx lr
thumb_func_end sub_0200B9B4
non_word_aligned_thumb_func_start sub_0200B9BA
sub_0200B9BA: ; 0x0200B9BA
swi 6
bx lr
thumb_func_end sub_0200B9BA
non_word_aligned_thumb_func_start sub_0200B9BE
sub_0200B9BE: ; 0x0200B9BE
swi 7
bx lr
thumb_func_end sub_0200B9BE
non_word_aligned_thumb_func_start sub_0200B9C2
sub_0200B9C2: ; 0x0200B9C2
swi 8
bx lr
thumb_func_end sub_0200B9C2
non_word_aligned_thumb_func_start sub_0200B9C6
sub_0200B9C6: ; 0x0200B9C6
add r1, r0, #0
mov r0, #1
swi 8
bx lr
thumb_func_end sub_0200B9C6
non_word_aligned_thumb_func_start sub_0200B9CE
sub_0200B9CE: ; 0x0200B9CE
add r1, r0, #0
mov r0, #0
swi 8
bx lr
thumb_func_end sub_0200B9CE
non_word_aligned_thumb_func_start sub_0200B9D6
sub_0200B9D6: ; 0x0200B9D6
swi 9
bx lr
thumb_func_end sub_0200B9D6
non_word_aligned_thumb_func_start sub_0200B9DA
sub_0200B9DA: ; 0x0200B9DA
swi 9
add r0, r1, #0
bx lr
thumb_func_end sub_0200B9DA
thumb_func_start sub_0200B9E0
sub_0200B9E0: ; 0x0200B9E0
swi 0xb
bx lr
thumb_func_end sub_0200B9E0
thumb_func_start sub_0200B9E4
sub_0200B9E4: ; 0x0200B9E4
swi 0xc
bx lr
thumb_func_end sub_0200B9E4
thumb_func_start sub_0200B9E8
sub_0200B9E8: ; 0x0200B9E8
swi 0xd
bx lr
thumb_func_end sub_0200B9E8
thumb_func_start sub_0200B9EC
sub_0200B9EC: ; 0x0200B9EC
swi 0xe
bx lr
thumb_func_end sub_0200B9EC
thumb_func_start sub_0200B9F0
sub_0200B9F0: ; 0x0200B9F0
swi 0xf
bx lr
thumb_func_end sub_0200B9F0
thumb_func_start sub_0200B9F4
sub_0200B9F4: ; 0x0200B9F4
swi 0x10
bx lr
thumb_func_end sub_0200B9F4
thumb_func_start sub_0200B9F8
sub_0200B9F8: ; 0x0200B9F8
swi 0x11
bx lr
thumb_func_end sub_0200B9F8
thumb_func_start sub_0200B9FC
sub_0200B9FC: ; 0x0200B9FC
swi 0x12
bx lr
thumb_func_end sub_0200B9FC
thumb_func_start sub_0200BA00
sub_0200BA00: ; 0x0200BA00
swi 0x13
bx lr
thumb_func_end sub_0200BA00
thumb_func_start sub_0200BA04
sub_0200BA04: ; 0x0200BA04
swi 0x14
bx lr
thumb_func_end sub_0200BA04
thumb_func_start sub_0200BA08
sub_0200BA08: ; 0x0200BA08
swi 0x15
bx lr
thumb_func_end sub_0200BA08
thumb_func_start sub_0200BA0C
sub_0200BA0C: ; 0x0200BA0C
swi 0x1a
bx lr
thumb_func_end sub_0200BA0C
thumb_func_start sub_0200BA10
sub_0200BA10: ; 0x0200BA10
swi 0x1b
bx lr
thumb_func_end sub_0200BA10
thumb_func_start sub_0200BA14
sub_0200BA14: ; 0x0200BA14
swi 0x1c
bx lr
thumb_func_end sub_0200BA14
arm_func_start sub_0200BA18
sub_0200BA18: ; 0x0200BA18
ldr r1, _0200BA50 ; =0x55555555
ldr r2, _0200BA54 ; =0x33333333
and r1, r1, r0, lsr #1
sub r1, r0, r1
ldr r0, _0200BA58 ; =0x0F0F0F0F
and r3, r1, r2
and r1, r2, r1, lsr #2
add r1, r3, r1
add r1, r1, r1, lsr #4
and r0, r1, r0
add r0, r0, r0, lsr #8
add r0, r0, r0, lsr #16
and r0, r0, #0xff
bx lr
.align 2, 0
_0200BA50: .word 0x55555555
_0200BA54: .word 0x33333333
_0200BA58: .word 0x0F0F0F0F
arm_func_end sub_0200BA18
arm_func_start sub_0200BA5C
sub_0200BA5C: ; 0x0200BA5C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #8
ldr r1, _0200BB58 ; =0x038098D0
mov r4, r0
ldrh r0, [r1]
cmp r0, #0
bne _0200BB4C
mov r0, #1
strh r0, [r1]
mov r0, #0
str r0, [r1, #4]
mov r0, #5
str r0, [r1, #8]
bl sub_0200BF38
bl sub_00FFD194
bl sub_0200D548
bl sub_0200CA8C
bl sub_0200649C
ldr r1, _0200BB5C ; =0x03803CE8
mov r0, #6
bl sub_02006584
ldr r1, _0200BB5C ; =0x03803CE8
mov r0, #9
bl sub_02006584
ldr r1, _0200BB5C ; =0x03803CE8
mov r0, #8
bl sub_02006584
ldr r1, _0200BB5C ; =0x03803CE8
mov r0, #4
bl sub_02006584
ldr r0, _0200BB60 ; =0x03809B80
ldr r1, _0200BB64 ; =0x03809BA0
mov r2, #0x10
bl sub_02004894
mov sb, #0
mov r6, #0x18
ldr r8, _0200BB68 ; =0x03809BE0
mov r7, sb
mov r5, r6
_0200BAF8:
mla r0, sb, r5, r8
mov r1, r7
mov r2, r6
bl sub_02006258
add sb, sb, #1
cmp sb, #0x10
blt _0200BAF8
ldr r0, _0200BB58 ; =0x038098D0
mov r2, #0
str r2, [r0, #0x490]
str r2, [r0, #0x498]
str r2, [r0, #0x494]
mov r0, #0x200
str r0, [sp]
ldr r0, _0200BB6C ; =0x038098DC
ldr r1, _0200BB70 ; =0x03803C7C
ldr r3, _0200BB60 ; =0x03809B80
str r4, [sp, #4]
bl sub_0200423C
ldr r0, _0200BB6C ; =0x038098DC
bl sub_02004554
_0200BB4C:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0200BB58: .word 0x038098D0
_0200BB5C: .word 0x03803CE8
_0200BB60: .word 0x03809B80
_0200BB64: .word 0x03809BA0
_0200BB68: .word 0x03809BE0
_0200BB6C: .word 0x038098DC
_0200BB70: .word 0x03803C7C
arm_func_end sub_0200BA5C
arm_func_start sub_0200BB74
sub_0200BB74: ; 0x0200BB74
stmdb sp!, {r4, r5, r6, lr}
ldr r5, _0200BBC8 ; =0x03809D64
ldr r4, _0200BBCC ; =0x038098D0
mov r6, r0
_0200BB84:
bl sub_02005EE8
ldr r1, [r4, #4]
cmp r1, #0
beq _0200BBA4
bl sub_02005EFC
mov r0, r5
bl sub_02004478
b _0200BB84
_0200BBA4:
ldr r1, _0200BBCC ; =0x038098D0
mov r2, #1
str r2, [r1, #4]
mov r2, #4
str r2, [r1, #8]
str r6, [r1, #0x49c]
bl sub_02005EFC
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0200BBC8: .word 0x03809D64
_0200BBCC: .word 0x038098D0
arm_func_end sub_0200BB74
arm_func_start sub_0200BBD0
sub_0200BBD0: ; 0x0200BBD0
stmdb sp!, {r3, lr}
ldr r1, _0200BC28 ; =0x038098D0
ldr r2, [r1, #4]
cmp r2, #0
beq _0200BC20
ldr r2, [r1, #8]
cmp r2, #4
ldreq r1, [r1, #0x49c]
cmpeq r1, r0
bne _0200BC20
bl sub_02005EE8
ldr r1, _0200BC28 ; =0x038098D0
mov r2, #5
str r2, [r1, #8]
mov r2, #0
str r2, [r1, #4]
str r2, [r1, #0x49c]
bl sub_02005EFC
ldr r0, _0200BC2C ; =0x03809D64
bl sub_020044CC
_0200BC20:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200BC28: .word 0x038098D0
_0200BC2C: .word 0x03809D64
arm_func_end sub_0200BBD0
arm_func_start sub_0200BC30
sub_0200BC30: ; 0x0200BC30
stmdb sp!, {r4, r5, r6, lr}
and r2, r0, #0x70
cmp r2, #0x30
bgt _0200BC68
bge _0200BCB4
cmp r2, #0x10
bgt _0200BC5C
bge _0200BC9C
cmp r2, #0
beq _0200BC9C
b _0200BCB8
_0200BC5C:
cmp r2, #0x20
beq _0200BCB4
b _0200BCB8
_0200BC68:
cmp r2, #0x50
bgt _0200BC80
bge _0200BCA4
cmp r2, #0x40
beq _0200BCA4
b _0200BCB8
_0200BC80:
cmp r2, #0x60
bgt _0200BC90
beq _0200BCAC
b _0200BCB8
_0200BC90:
cmp r2, #0x70
beq _0200BCAC
b _0200BCB8
_0200BC9C:
mov r4, #6
b _0200BCB8
_0200BCA4:
mov r4, #9
b _0200BCB8
_0200BCAC:
mov r4, #8
b _0200BCB8
_0200BCB4:
mov r4, #4
_0200BCB8:
and r0, r0, #0xff
orr r0, r0, #0x80
mov r0, r0, lsl #8
orr r2, r0, #0x3000000
and r0, r1, #0xff
orr r6, r2, r0
mov r5, #0
_0200BCD4:
mov r0, r4
mov r1, r6
mov r2, r5
bl sub_020065F8
cmp r0, #0
blt _0200BCD4
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_0200BC30
arm_func_start sub_0200BCF4
sub_0200BCF4: ; 0x0200BCF4
ldr r0, _0200BD0C ; =0x038098D0
ldr r0, [r0, #4]
cmp r0, #0
moveq r0, #1
movne r0, #0
bx lr
.align 2, 0
_0200BD0C: .word 0x038098D0
arm_func_end sub_0200BCF4
arm_func_start sub_0200BD10
sub_0200BD10: ; 0x0200BD10
ldr r1, _0200BD24 ; =0x038098D0
mov r2, #1
str r2, [r1, #4]
str r0, [r1, #8]
bx lr
.align 2, 0
_0200BD24: .word 0x038098D0
arm_func_end sub_0200BD10
arm_func_start sub_0200BD28
sub_0200BD28: ; 0x0200BD28
stmdb sp!, {r3, lr}
ldr r1, _0200BD5C ; =0x038098D0
ldr r2, [r1, #8]
cmp r2, r0
bne _0200BD54
ldr r0, _0200BD60 ; =0x03809D64
mov r2, #5
str r2, [r1, #8]
mov r2, #0
str r2, [r1, #4]
bl sub_020044CC
_0200BD54:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200BD5C: .word 0x038098D0
_0200BD60: .word 0x03809D64
arm_func_end sub_0200BD28
arm_func_start sub_0200BD64
sub_0200BD64: ; 0x0200BD64
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, lr}
ldrh r2, [sp, #0x18]
mov r5, r0
cmp r2, #4
mov r4, r1
movhi r0, #0
bhi _0200BE24
bl sub_02005EE8
ldr r3, _0200BE30 ; =0x038098D0
add r2, sp, #0x18
ldr ip, [r3, #0x490]
mov r1, #0x18
mul r6, ip, r1
ldr lr, _0200BE34 ; =0x03809BE0
ldr ip, _0200BE38 ; =0x03809BE4
str r5, [lr, r6]
ldr r5, [r3, #0x490]
bic r2, r2, #3
mul lr, r5, r1
str r4, [ip, lr]
add r6, r2, #4
ldrh r1, [sp, #0x18]
ldr r5, _0200BE3C ; =0x038098D4
mov lr, #0
mov r2, #0x18
b _0200BDEC
_0200BDD0:
ldr ip, [r3, #0x490]
add r6, r6, #4
mla r4, ip, r2, r5
add r4, r4, lr, lsl #2
ldr ip, [r6, #-4]
add lr, lr, #1
str ip, [r4, #0x314]
_0200BDEC:
cmp lr, r1
blt _0200BDD0
ldr r1, _0200BE30 ; =0x038098D0
ldr r4, [r1, #0x490]
add r2, r4, #1
and r2, r2, #0xf
str r2, [r1, #0x490]
bl sub_02005EFC
ldr r1, _0200BE34 ; =0x03809BE0
mov r0, #0x18
mla r1, r4, r0, r1
ldr r0, _0200BE40 ; =0x03809B80
mov r2, #0
bl sub_020048BC
_0200BE24:
ldmia sp!, {r4, r5, r6, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_0200BE30: .word 0x038098D0
_0200BE34: .word 0x03809BE0
_0200BE38: .word 0x03809BE4
_0200BE3C: .word 0x038098D4
_0200BE40: .word 0x03809B80
arm_func_end sub_0200BD64
arm_func_start sub_0200BE44
sub_0200BE44: ; 0x0200BE44
stmdb sp!, {r3, lr}
ldr r0, _0200BE60 ; =0x03809B80
add r1, sp, #0
mov r2, #0
bl sub_020049E4
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200BE60: .word 0x03809B80
arm_func_end sub_0200BE44
arm_func_start sub_0200BE64
sub_0200BE64: ; 0x0200BE64
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r6, _0200BECC ; =0x03809B80
add r5, sp, #0
mov r4, #1
_0200BE78:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_02004948
ldr r0, [sp]
ldr r1, [r0]
cmp r1, #3
addls pc, pc, r1, lsl #2
b _0200BE78
_0200BE9C: ; jump table
b _0200BEAC ; case 0
b _0200BEC4 ; case 1
b _0200BEB4 ; case 2
b _0200BEBC ; case 3
_0200BEAC:
bl sub_0200C230
b _0200BE78
_0200BEB4:
bl sub_0200D8FC
b _0200BE78
_0200BEBC:
bl sub_0200CC84
b _0200BE78
_0200BEC4:
bl sub_00FFD364
b _0200BE78
.align 2, 0
_0200BECC: .word 0x03809B80
arm_func_end sub_0200BE64
arm_func_start sub_0200BED0
sub_0200BED0: ; 0x0200BED0
stmdb sp!, {r3, lr}
cmp r2, #0
bne _0200BF30
sub r0, r0, #4
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0200BF30
_0200BEEC: ; jump table
b _0200BF28 ; case 0
b _0200BF30 ; case 1
b _0200BF04 ; case 2
b _0200BF30 ; case 3
b _0200BF1C ; case 4
b _0200BF10 ; case 5
_0200BF04:
mov r0, r1
bl sub_0200C048
b _0200BF30
_0200BF10:
mov r0, r1
bl sub_0200D590
b _0200BF30
_0200BF1C:
mov r0, r1
bl sub_0200CAC8
b _0200BF30
_0200BF28:
mov r0, r1
bl sub_00FFD1BC
_0200BF30:
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_0200BED0
arm_func_start sub_0200BF38
sub_0200BF38: ; 0x0200BF38
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r0, _0200C004 ; =0x03809D70
mov r3, #0
str r3, [r0, #0x24]
mov r1, #0x14
str r1, [r0, #0x28]
str r1, [r0, #0x2c]
ldr r0, _0200C008 ; =0x03809D74
mov r2, r3
_0200BF5C:
mov r1, r3, lsl #1
add r3, r3, #1
strh r2, [r0, r1]
cmp r3, #0x10
blt _0200BF5C
bl sub_02005980
cmp r0, #0
bne _0200BF80
bl sub_02005934
_0200BF80:
ldr r7, _0200C00C ; =0x03809DA0
ldr r5, _0200C010 ; =0x54505641
mov r8, #0
mov r4, #0x28
_0200BF90:
mul r6, r8, r4
add r0, r7, r6
bl sub_02005A6C
mov r1, r5
add r0, r7, r6
bl sub_02005BFC
add r8, r8, #1
cmp r8, #4
blt _0200BF90
ldr r2, _0200C014 ; =0x040001C0
_0200BFB8:
ldrh r0, [r2]
tst r0, #0x80
bne _0200BFB8
ldr r1, _0200C018 ; =0x00008A01
ldr r0, _0200C01C ; =0x040001C2
strh r1, [r2]
mov r1, #0x84
strh r1, [r0]
sub r1, r0, #2
_0200BFDC:
ldrh r0, [r1]
tst r0, #0x80
bne _0200BFDC
bl sub_0200C024
ldr r1, _0200C020 ; =0x00008201
ldr r0, _0200C014 ; =0x040001C0
strh r1, [r0]
bl sub_0200C024
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_0200C004: .word 0x03809D70
_0200C008: .word 0x03809D74
_0200C00C: .word 0x03809DA0
_0200C010: .word 0x54505641
_0200C014: .word 0x040001C0
_0200C018: .word 0x00008A01
_0200C01C: .word 0x040001C2
_0200C020: .word 0x00008201
arm_func_end sub_0200BF38
arm_func_start sub_0200C024
sub_0200C024: ; 0x0200C024
ldr r0, _0200C044 ; =0x040001C2
mov r1, #0
strh r1, [r0]
sub r1, r0, #2
_0200C034:
ldrh r0, [r1]
tst r0, #0x80
bne _0200C034
bx lr
.align 2, 0
_0200C044: .word 0x040001C2
arm_func_end sub_0200C024
arm_func_start sub_0200C048
sub_0200C048: ; 0x0200C048
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
tst r0, #0x2000000
beq _0200C078
ldr r1, _0200C224 ; =0x03809D74
mov r4, #0
mov r3, r4
_0200C064:
mov r2, r4, lsl #1
add r4, r4, #1
strh r3, [r1, r2]
cmp r4, #0x10
blt _0200C064
_0200C078:
ldr r1, _0200C224 ; =0x03809D74
and r2, r0, #0xf0000
mov r2, r2, lsr #0x10
mov r2, r2, lsl #1
strh r0, [r1, r2]
tst r0, #0x1000000
beq _0200C218
ldr r2, _0200C228 ; =0x03809D70
ldrh r1, [r2, #4]
and r0, r1, #0xff00
mov r0, r0, lsl #8
mov r4, r0, lsr #0x10
cmp r4, #3
addls pc, pc, r4, lsl #2
b _0200C20C
_0200C0B4: ; jump table
b _0200C0F8 ; case 0
b _0200C120 ; case 1
b _0200C1BC ; case 2
b _0200C0C4 ; case 3
_0200C0C4:
and r0, r1, #0xff
mov r0, r0, lsl #0x10
movs r3, r0, lsr #0x10
mov r0, #3
bne _0200C0E4
mov r1, #2
bl sub_0200BC30
b _0200C218
_0200C0E4:
str r3, [r2, #0x28]
mov r1, #0
str r3, [r2, #0x2c]
bl sub_0200BC30
b _0200C218
_0200C0F8:
mov r0, #0
mov r1, r4
mov r2, r0
bl sub_0200BD64
cmp r0, #0
bne _0200C218
mov r0, r4
mov r1, #4
bl sub_0200BC30
b _0200C218
_0200C120:
ldr r0, [r2, #0x24]
cmp r0, #0
beq _0200C13C
mov r0, r4
mov r1, #3
bl sub_0200BC30
b _0200C218
_0200C13C:
and r0, r1, #0xff
mov r0, r0, lsl #0x10
movs r3, r0, lsr #0x10
beq _0200C154
cmp r3, #4
bls _0200C164
_0200C154:
mov r0, r4
mov r1, #2
bl sub_0200BC30
b _0200C218
_0200C164:
ldrh ip, [r2, #6]
ldr r0, _0200C22C ; =0x00000107
cmp ip, r0
blo _0200C184
mov r0, r4
mov r1, #2
bl sub_0200BC30
b _0200C218
_0200C184:
mov r1, r4
mov r0, #0
mov r2, #2
str ip, [sp]
bl sub_0200BD64
cmp r0, #0
ldrne r0, _0200C228 ; =0x03809D70
movne r1, #1
strne r1, [r0, #0x24]
bne _0200C218
mov r0, r4
mov r1, #4
bl sub_0200BC30
b _0200C218
_0200C1BC:
ldr r0, [r2, #0x24]
cmp r0, #2
beq _0200C1D8
mov r0, r4
mov r1, #3
bl sub_0200BC30
b _0200C218
_0200C1D8:
mov r0, #0
mov r1, r4
mov r2, r0
bl sub_0200BD64
cmp r0, #0
ldrne r0, _0200C228 ; =0x03809D70
movne r1, #3
strne r1, [r0, #0x24]
bne _0200C218
mov r0, r4
mov r1, #4
bl sub_0200BC30
b _0200C218
_0200C20C:
mov r0, r4
mov r1, #1
bl sub_0200BC30
_0200C218:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_0200C224: .word 0x03809D74
_0200C228: .word 0x03809D70
_0200C22C: .word 0x00000107
arm_func_end sub_0200C048
arm_func_start sub_0200C230
sub_0200C230: ; 0x0200C230
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sl, r0
ldr r1, [sl, #4]
cmp r1, #2
bhi _0200C264
cmp r1, #0
beq _0200C27C
cmp r1, #1
beq _0200C3E8
cmp r1, #2
beq _0200C4B0
b _0200C4FC
_0200C264:
cmp r1, #0x10
bne _0200C4FC
ldr r0, _0200C508 ; =0x03809D70
ldr r0, [r0, #0x24]
cmp r0, #2
bne _0200C4FC
_0200C27C:
bl sub_02005EE8
mov r4, r0
mov r0, #0
bl sub_0200BCF4
cmp r0, #0
bne _0200C2B4
mov r0, r4
bl sub_02005EFC
ldr r0, [sl, #4]
mov r1, #4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200BC30
b _0200C4FC
_0200C2B4:
mov r0, #0
bl sub_0200BD10
mov r0, r4
bl sub_02005EFC
ldr r1, _0200C508 ; =0x03809D70
add r0, sp, #8
ldr r1, [r1, #0x28]
add r2, sp, #4
bl sub_0200C894
ldr r0, [sp, #8]
ldrh r2, [sp, #4]
mov r1, r0, lsl #7
movs r1, r1, lsr #0x1f
ldreq r0, _0200C508 ; =0x03809D70
moveq r1, #0
streqb r1, [r0, #1]
streqb r1, [r0]
beq _0200C394
mov r0, r0, lsl #5
movs r0, r0, lsr #0x1e
beq _0200C344
ldr r0, _0200C508 ; =0x03809D70
mov r3, #0
strb r3, [r0]
ldrb r1, [r0, #1]
add r2, r1, #1
and r1, r2, #0xff
strb r2, [r0, #1]
cmp r1, #4
blo _0200C394
strb r3, [r0, #1]
ldr r1, [r0, #0x28]
cmp r1, #0x23
addlt r1, r1, #1
strlt r1, [r0, #0x28]
b _0200C394
_0200C344:
ldr r0, _0200C508 ; =0x03809D70
mov r4, #0
strb r4, [r0, #1]
ldr r3, [r0, #0x28]
cmp r2, r3, asr #1
strgeb r4, [r0]
bge _0200C394
ldrb r1, [r0]
add r2, r1, #1
and r1, r2, #0xff
strb r2, [r0]
cmp r1, #4
blo _0200C394
strb r4, [r0]
ldr r1, [r0, #0x2c]
cmp r3, r1
subgt r1, r3, #1
strgt r1, [r0, #0x28]
movgt r1, #3
strgtb r1, [r0, #1]
_0200C394:
ldrh r0, [sp, #8]
ldr r1, _0200C50C ; =0x027FFFAA
strh r0, [r1]
ldrh r0, [sp, #0xa]
strh r0, [r1, #2]
ldr r0, [sl, #4]
cmp r0, #0
bne _0200C3C8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0
bl sub_0200BC30
b _0200C3DC
_0200C3C8:
ldr r1, [sl, #8]
mov r0, r0, lsl #0x10
and r1, r1, #0xff
mov r0, r0, lsr #0x10
bl sub_0200BC30
_0200C3DC:
mov r0, #0
bl sub_0200BD28
b _0200C4FC
_0200C3E8:
ldr r0, _0200C508 ; =0x03809D70
ldr r0, [r0, #0x24]
cmp r0, #1
bne _0200C49C
ldr r8, _0200C510 ; =0x00000107
ldr r6, _0200C514 ; =0x03809D74
ldr r5, _0200C518 ; =0x03809DA0
mov sb, #0
mov r7, #0xd7
mov fp, #0xa
mov r4, #0x28
b _0200C46C
_0200C418:
mul r0, sb, r8
bl sub_0200EFBC
ldr r2, [sl, #0xc]
mov r1, r8
add r0, r2, r0
bl sub_0200EFBC
mov r0, r1, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #0xc8
blo _0200C448
cmp r0, #0xd7
movlo r0, r7
_0200C448:
add r1, r6, sb, lsl #1
strh r0, [r1, #0xcc]
str sb, [sp]
mla r0, sb, r4, r5
ldrsh r1, [r1, #0xcc]
ldr r3, _0200C51C ; =0x0380433C
mov r2, fp
bl sub_02005B10
add sb, sb, #1
_0200C46C:
ldr r1, [sl, #8]
cmp sb, r1
blo _0200C418
ldr r0, [sl, #4]
mov r1, #0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200BC30
ldr r0, _0200C508 ; =0x03809D70
mov r1, #2
str r1, [r0, #0x24]
b _0200C4FC
_0200C49C:
mov r0, r1, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #3
bl sub_0200BC30
b _0200C4FC
_0200C4B0:
ldr r0, _0200C508 ; =0x03809D70
ldr r0, [r0, #0x24]
cmp r0, #3
bne _0200C4EC
ldr r0, _0200C520 ; =0x54505641
bl sub_02005C6C
ldr r0, [sl, #4]
mov r1, #0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200BC30
ldr r0, _0200C508 ; =0x03809D70
mov r1, #0
str r1, [r0, #0x24]
b _0200C4FC
_0200C4EC:
mov r0, r1, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #3
bl sub_0200BC30
_0200C4FC:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0200C508: .word 0x03809D70
_0200C50C: .word 0x027FFFAA
_0200C510: .word 0x00000107
_0200C514: .word 0x03809D74
_0200C518: .word 0x03809DA0
_0200C51C: .word 0x0380433C
_0200C520: .word 0x54505641
arm_func_end sub_0200C230
arm_func_start sub_0200C524
sub_0200C524: ; 0x0200C524
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r3, r4
mov r0, #0
mov r1, #0x10
mov r2, #1
bl sub_0200BD64
cmp r0, #0
bne _0200C57C
ldr r0, [sp]
ldr r3, _0200C588 ; =0x027FFFAA
bic r0, r0, #0x6000000
orr r0, r0, #0x6000000
str r0, [sp]
ldrh r0, [sp]
ldrh r2, [sp, #2]
strh r0, [r3]
and r1, r4, #0xff
mov r0, #0x10
strh r2, [r3, #2]
bl sub_0200BC30
_0200C57C:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_0200C588: .word 0x027FFFAA
arm_func_end sub_0200C524
arm_func_start sub_0200C58C
sub_0200C58C: ; 0x0200C58C
stmdb sp!, {r3, lr}
mov r0, #0x8000
bl sub_02006790
ldr r2, _0200C668 ; =0x040001C0
_0200C59C:
ldrh r0, [r2]
tst r0, #0x80
bne _0200C59C
ldr r1, _0200C66C ; =0x00008A01
ldr r0, _0200C670 ; =0x040001C2
strh r1, [r2]
mov r1, #0x84
strh r1, [r0]
sub r1, r0, #2
_0200C5C0:
ldrh r0, [r1]
tst r0, #0x80
bne _0200C5C0
bl sub_0200C680
ldr r1, _0200C674 ; =0x00008201
ldr r0, _0200C668 ; =0x040001C0
strh r1, [r0]
bl sub_0200C680
ldr r0, _0200C678 ; =0x03809E48
ldrh r0, [r0]
cmp r0, #0
bne _0200C608
ldr r0, _0200C67C ; =0x04000136
ldrh r0, [r0]
tst r0, #0x40
moveq r0, #1
movne r0, #0
b _0200C660
_0200C608:
ldr r2, _0200C67C ; =0x04000136
ldrh r0, [r2]
tst r0, #0x40
moveq r0, #1
beq _0200C660
ldr r1, _0200C66C ; =0x00008A01
mov r0, #0x84
strh r1, [r2, #0x8a]
strh r0, [r2, #0x8c]
_0200C62C:
ldrh r0, [r2, #0x8a]
tst r0, #0x80
bne _0200C62C
bl sub_0200C680
ldr r1, _0200C674 ; =0x00008201
ldr r0, _0200C668 ; =0x040001C0
strh r1, [r0]
bl sub_0200C680
ldr r0, _0200C67C ; =0x04000136
ldrh r0, [r0]
tst r0, #0x40
movne r0, #0
moveq r0, #2
_0200C660:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200C668: .word 0x040001C0
_0200C66C: .word 0x00008A01
_0200C670: .word 0x040001C2
_0200C674: .word 0x00008201
_0200C678: .word 0x03809E48
_0200C67C: .word 0x04000136
arm_func_end sub_0200C58C
arm_func_start sub_0200C680
sub_0200C680: ; 0x0200C680
ldr r0, _0200C6A0 ; =0x040001C2
mov r1, #0
strh r1, [r0]
sub r1, r0, #2
_0200C690:
ldrh r0, [r1]
tst r0, #0x80
bne _0200C690
bx lr
.align 2, 0
_0200C6A0: .word 0x040001C2
arm_func_end sub_0200C680
arm_func_start sub_0200C6A4
sub_0200C6A4: ; 0x0200C6A4
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x14
cmp r2, #0
ldr r2, _0200C880 ; =0x040001C0
mov r5, r3
moveq r3, #0xd1
moveq r4, #1
mov r7, r0
mov r6, r1
movne r3, #0x91
movne r4, #2
_0200C6D0:
ldrh r0, [r2]
tst r0, #0x80
bne _0200C6D0
ldr r1, _0200C884 ; =0x00008A01
ldr r0, _0200C888 ; =0x040001C2
strh r1, [r2]
and r2, r3, #0xff
strh r2, [r0]
sub r1, r0, #2
_0200C6F4:
ldrh r0, [r1]
tst r0, #0x80
bne _0200C6F4
mov r0, r2, lsl #0x10
ldr r2, _0200C880 ; =0x040001C0
mov ip, #0
ldr r8, _0200C88C ; =0x00007FF8
add r1, sp, #0
mov r0, r0, lsr #0x10
mov r3, ip
_0200C71C:
strh r3, [r2, #2]
_0200C720:
ldrh sb, [r2]
tst sb, #0x80
bne _0200C720
ldrh sb, [r2, #2]
and sb, sb, #0xff
mov lr, sb, lsl #0x10
mov sb, lr, lsr #8
str sb, [r1, ip, lsl #2]
strh r0, [r2, #2]
_0200C744:
ldrh sb, [r2]
tst sb, #0x80
bne _0200C744
ldrh lr, [r2, #2]
ldr sb, [r1, ip, lsl #2]
and lr, lr, #0xff
mov lr, lr, lsl #0x10
orr sb, sb, lr, lsr #16
and lr, sb, r8
mov lr, lr, asr #3
str lr, [r1, ip, lsl #2]
add ip, ip, #1
cmp ip, #5
blt _0200C71C
ldr r0, _0200C890 ; =0x00008201
strh r0, [r2]
bl sub_0200C680
mov r8, #0
mov sb, r8
add r2, sp, #0
_0200C794:
ldr r1, [r2, sb, lsl #2]
add r3, sb, #1
b _0200C7B8
_0200C7A0:
ldr r0, [r2, r3, lsl #2]
add r3, r3, #1
subs r0, r1, r0
rsbmi r0, r0, #0
cmp r0, r8
movgt r8, r0
_0200C7B8:
cmp r3, #5
blt _0200C7A0
add sb, sb, #1
cmp sb, #4
blt _0200C794
strh r8, [r5]
mov r8, #0
add r0, sp, #0
b _0200C850
_0200C7DC:
ldr r3, [r0, r8, lsl #2]
add sb, r8, #1
b _0200C844
_0200C7E8:
ldr r2, [r0, sb, lsl #2]
subs r1, r3, r2
rsbmi r1, r1, #0
cmp r1, r6
bgt _0200C840
add r1, sb, #1
b _0200C838
_0200C804:
ldr r5, [r0, r1, lsl #2]
subs ip, r3, r5
rsbmi ip, ip, #0
cmp ip, r6
bgt _0200C834
add r0, r2, r3, lsl #1
add r0, r5, r0
mov r0, r0, asr #2
bic r0, r0, #7
strh r0, [r7]
mov r0, #0
b _0200C874
_0200C834:
add r1, r1, #1
_0200C838:
cmp r1, #5
blt _0200C804
_0200C840:
add sb, sb, #1
_0200C844:
cmp sb, #4
blt _0200C7E8
add r8, r8, #1
_0200C850:
cmp r8, #3
blt _0200C7DC
ldr r2, [sp]
ldr r1, [sp, #0x10]
mov r0, r4
add r1, r2, r1
mov r1, r1, asr #1
bic r1, r1, #7
strh r1, [r7]
_0200C874:
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0200C880: .word 0x040001C0
_0200C884: .word 0x00008A01
_0200C888: .word 0x040001C2
_0200C88C: .word 0x00007FF8
_0200C890: .word 0x00008201
arm_func_end sub_0200C6A4
arm_func_start sub_0200C894
sub_0200C894: ; 0x0200C894
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
movs r6, r1
mov r5, r2
mov r1, #0
mov r7, r0
strh r1, [r5]
rsbmi r6, r6, #0
bl sub_0200C58C
movs r4, r0
bne _0200C8FC
ldr r1, [r7]
mov r0, #0x1000
rsb r0, r0, #0
and r1, r1, r0
ldr r0, _0200CA78 ; =0xFF000FFF
and r0, r1, r0
bic r1, r0, #0x1000000
bic r0, r1, #0x6000000
str r1, [r7]
orr r1, r0, #0x6000000
str r1, [r7]
ldr r0, _0200CA7C ; =0x03809E48
mov r1, #0
strh r1, [r0]
b _0200CA6C
_0200C8FC:
add r0, sp, #4
add r3, sp, #2
mov r1, r6
mov r2, #0
bl sub_0200C6A4
ldr r1, [r7]
mov r0, r0, lsl #0x1e
bic r1, r1, #0x6000000
orr ip, r1, r0, lsr #5
str ip, [r7]
mov r1, #0x1000
rsb r1, r1, #0
ldrh r2, [sp, #4]
and ip, ip, r1
and r1, r2, r1, lsr #20
orr ip, ip, r1
add r0, sp, #4
add r3, sp, #0
mov r1, r6
mov r2, #1
str ip, [r7]
bl sub_0200C6A4
cmp r0, #2
bne _0200C97C
ldr r1, [r7]
mov r0, r1, lsl #5
mov r0, r0, lsr #0x1e
orr r0, r0, #2
bic r1, r1, #0x6000000
mov r0, r0, lsl #0x1e
orr r0, r1, r0, lsr #5
str r0, [r7]
_0200C97C:
ldrh r1, [sp, #4]
ldr r2, [r7]
ldr r0, _0200CA78 ; =0xFF000FFF
mov r1, r1, lsl #0x14
and r0, r2, r0
orr r2, r0, r1, lsr #8
ldr r1, _0200CA80 ; =0x00008A01
ldr r0, _0200CA84 ; =0x040001C0
str r2, [r7]
strh r1, [r0]
mov r6, #0
_0200C9A8:
bl sub_0200C680
add r6, r6, #1
cmp r6, #0xc
blt _0200C9A8
ldr r1, _0200CA88 ; =0x00008201
ldr r0, _0200CA84 ; =0x040001C0
strh r1, [r0]
bl sub_0200C680
cmp r4, #2
ldreq r0, [r7]
biceq r0, r0, #0x6000000
orreq r0, r0, #0x6000000
streq r0, [r7]
bl sub_0200C58C
cmp r0, #0
beq _0200CA4C
cmp r0, #1
beq _0200CA1C
cmp r0, #2
bne _0200CA68
ldr r1, [r7]
ldr r0, _0200CA7C ; =0x03809E48
orr r2, r1, #0x1000000
bic r1, r2, #0x6000000
orr r1, r1, #0x6000000
str r1, [r7]
mov r1, #0
strh r1, [r0]
b _0200CA6C
_0200CA1C:
ldr r1, [r7]
ldr r0, _0200CA7C ; =0x03809E48
orr r1, r1, #0x1000000
str r1, [r7]
mov r2, #1
ldrh r1, [sp]
ldrh r3, [sp, #2]
strh r2, [r0]
cmp r3, r1
movlo r3, r1
strh r3, [r5]
b _0200CA6C
_0200CA4C:
ldr r1, [r7]
ldr r0, _0200CA7C ; =0x03809E48
bic r1, r1, #0x1000000
str r1, [r7]
mov r1, #0
strh r1, [r0]
b _0200CA6C
_0200CA68:
bl sub_02006058
_0200CA6C:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0200CA78: .word 0xFF000FFF
_0200CA7C: .word 0x03809E48
_0200CA80: .word 0x00008A01
_0200CA84: .word 0x040001C0
_0200CA88: .word 0x00008201
arm_func_end sub_0200C894
arm_func_start sub_0200CA8C
sub_0200CA8C: ; 0x0200CA8C
ldr r0, _0200CAC0 ; =0x03809E4C
mov r1, #1
str r1, [r0, #4]
mov r3, #0
str r3, [r0, #0x28]
ldr r0, _0200CAC4 ; =0x03809E54
mov r2, r3
_0200CAA8:
mov r1, r3, lsl #1
add r3, r3, #1
strh r2, [r0, r1]
cmp r3, #0x10
blt _0200CAA8
bx lr
.align 2, 0
_0200CAC0: .word 0x03809E4C
_0200CAC4: .word 0x03809E54
arm_func_end sub_0200CA8C
arm_func_start sub_0200CAC8
sub_0200CAC8: ; 0x0200CAC8
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
tst r0, #0x2000000
beq _0200CAF8
ldr r1, _0200CC7C ; =0x03809E54
mov r4, #0
mov r3, r4
_0200CAE4:
mov r2, r4, lsl #1
add r4, r4, #1
strh r3, [r1, r2]
cmp r4, #0x10
blt _0200CAE4
_0200CAF8:
ldr r1, _0200CC7C ; =0x03809E54
and r2, r0, #0xf0000
mov r2, r2, lsr #0x10
mov r2, r2, lsl #1
strh r0, [r1, r2]
tst r0, #0x1000000
beq _0200CC70
ldr r1, _0200CC80 ; =0x03809E4C
ldrh r2, [r1, #8]
and r0, r2, #0xff00
mov r0, r0, lsl #8
mov r4, r0, lsr #0x10
sub r0, r4, #0x60
cmp r0, #7
addls pc, pc, r0, lsl #2
b _0200CC64
_0200CB38: ; jump table
b _0200CB58 ; case 0
b _0200CB68 ; case 1
b _0200CC64 ; case 2
b _0200CC00 ; case 3
b _0200CB9C ; case 4
b _0200CBD0 ; case 5
b _0200CC34 ; case 6
b _0200CC4C ; case 7
_0200CB58:
mov r0, #0x60
mov r1, #0
bl sub_0200BC30
b _0200CC70
_0200CB68:
ldrh ip, [r1, #0xa]
mov r1, r4
and r3, r2, #0xff
mov r0, #3
mov r2, #2
str ip, [sp]
bl sub_0200BD64
cmp r0, #0
bne _0200CC70
mov r0, r4
mov r1, #4
bl sub_0200BC30
b _0200CC70
_0200CB9C:
ldrh ip, [r1, #0xa]
mov r1, r4
and r3, r2, #0xff
mov r0, #3
mov r2, #2
str ip, [sp]
bl sub_0200BD64
cmp r0, #0
bne _0200CC70
mov r0, r4
mov r1, #4
bl sub_0200BC30
b _0200CC70
_0200CBD0:
mov r0, r2, lsl #0x10
mov r1, r4
mov r3, r0, lsr #0x10
mov r0, #3
mov r2, #1
bl sub_0200BD64
cmp r0, #0
bne _0200CC70
mov r0, r4
mov r1, #4
bl sub_0200BC30
b _0200CC70
_0200CC00:
ldrh r0, [r1, #0xa]
mov r2, r2, lsl #0x18
mov r1, r4
orr r3, r0, r2, lsr #8
mov r0, #3
mov r2, #1
bl sub_0200BD64
cmp r0, #0
bne _0200CC70
mov r0, r4
mov r1, #4
bl sub_0200BC30
b _0200CC70
_0200CC34:
and r0, r2, #0xff
bl sub_0200D404
mov r0, #0x66
mov r1, #0
bl sub_0200BC30
b _0200CC70
_0200CC4C:
bl sub_0200D420
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
mov r0, #0x67
bl sub_0200BC30
b _0200CC70
_0200CC64:
mov r0, r4
mov r1, #1
bl sub_0200BC30
_0200CC70:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_0200CC7C: .word 0x03809E54
_0200CC80: .word 0x03809E4C
arm_func_end sub_0200CAC8
arm_func_start sub_0200CC84
sub_0200CC84: ; 0x0200CC84
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
bl sub_02005EE8
mov r5, r0
mov r0, #3
bl sub_0200BCF4
cmp r0, #0
bne _0200CCC4
mov r0, r5
bl sub_02005EFC
ldr r0, [r4, #4]
mov r1, #4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200BC30
b _0200CDE8
_0200CCC4:
mov r0, #3
bl sub_0200BD10
mov r0, r5
bl sub_02005EFC
ldr r1, [r4, #4]
sub r0, r1, #0x61
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0200CDD0
_0200CCE8: ; jump table
b _0200CD00 ; case 0
b _0200CDD0 ; case 1
b _0200CD9C ; case 2
b _0200CD24 ; case 3
b _0200CD60 ; case 4
b _0200CDC4 ; case 5
_0200CD00:
ldr r0, _0200CDF0 ; =0x03809E4C
mov r1, #1
str r1, [r0, #0x28]
ldr r1, [r4, #8]
strh r1, [r0, #2]
ldr r1, [r4, #0xc]
strh r1, [r0]
bl sub_0200D104
b _0200CDE0
_0200CD24:
ldr r2, _0200CDF0 ; =0x03809E4C
mov r0, #4
str r0, [r2, #0x28]
ldr r0, [r4, #8]
str r0, [r2, #0x30]
ldr r3, [r4, #0xc]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
and r1, r3, #0xff
str r3, [r2, #0x2c]
bl sub_0200CE38
mov r0, #0x64
mov r1, #0
bl sub_0200BC30
b _0200CDE0
_0200CD60:
ldr r1, _0200CDF0 ; =0x03809E4C
mov r0, #3
str r0, [r1, #0x28]
ldr r2, [r4, #8]
mov r0, r2, lsl #0x10
mov r4, r0, lsr #0x10
mov r0, r4
str r2, [r1, #0x30]
bl sub_0200CEB4
add r1, r4, #0x70
mov r2, r1, lsl #0x10
mov r1, r0
mov r0, r2, lsr #0x10
bl sub_0200BC30
b _0200CDE0
_0200CD9C:
ldr r1, _0200CDF0 ; =0x03809E4C
mov r0, #2
str r0, [r1, #0x28]
ldr r0, [r4, #8]
str r0, [r1, #0x2c]
bl sub_0200CF78
mov r0, #0x63
mov r1, #0
bl sub_0200BC30
b _0200CDE0
_0200CDC4:
ldr r0, [r4, #8]
bl sub_0200D09C
b _0200CDE0
_0200CDD0:
mov r0, r1, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #1
bl sub_0200BC30
_0200CDE0:
mov r0, #3
bl sub_0200BD28
_0200CDE8:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0200CDF0: .word 0x03809E4C
arm_func_end sub_0200CC84
arm_func_start sub_0200CDF4
sub_0200CDF4: ; 0x0200CDF4
stmdb sp!, {r4, r5, r6, lr}
and r1, r1, #0x3f0000
and r3, r0, #0x3c00000
mov r1, r1, lsl #0x10
mov r0, r2, lsl #0x10
orr r1, r1, r3, lsl #22
orr r6, r1, r0, lsr #16
mov r5, #8
mov r4, #0
_0200CE18:
mov r0, r5
mov r1, r6
mov r2, r4
bl sub_020065F8
cmp r0, #0
bne _0200CE18
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_0200CDF4
arm_func_start sub_0200CE38
sub_0200CE38: ; 0x0200CE38
stmdb sp!, {r4, lr}
ldr r2, _0200CE84 ; =0x040001C0
mov r4, r1
_0200CE44:
ldrh r1, [r2]
tst r1, #0x80
bne _0200CE44
ldr r1, _0200CE88 ; =0x00008202
and r0, r0, #0xff
strh r1, [r2]
add r1, r1, #0x600
strh r1, [r2]
bl sub_0200CE90
ldr r2, _0200CE8C ; =0x00008002
ldr r1, _0200CE84 ; =0x040001C0
and r0, r4, #0xff
strh r2, [r1]
strh r0, [r1, #2]
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200CE84: .word 0x040001C0
_0200CE88: .word 0x00008202
_0200CE8C: .word 0x00008002
arm_func_end sub_0200CE38
arm_func_start sub_0200CE90
sub_0200CE90: ; 0x0200CE90
ldr r1, _0200CEB0 ; =0x040001C2
and r0, r0, #0xff
strh r0, [r1]
sub r1, r1, #2
_0200CEA0:
ldrh r0, [r1]
tst r0, #0x80
bne _0200CEA0
bx lr
.align 2, 0
_0200CEB0: .word 0x040001C2
arm_func_end sub_0200CE90
arm_func_start sub_0200CEB4
sub_0200CEB4: ; 0x0200CEB4
stmdb sp!, {r3, lr}
ldr r2, _0200CF18 ; =0x040001C0
_0200CEBC:
ldrh r1, [r2]
tst r1, #0x80
bne _0200CEBC
ldr r1, _0200CF1C ; =0x00008202
orr r0, r0, #0x80
strh r1, [r2]
add r1, r1, #0x600
and r0, r0, #0xff
strh r1, [r2]
bl sub_0200CE90
ldr r2, _0200CF20 ; =0x00008002
ldr r1, _0200CF18 ; =0x040001C0
mov r0, #0
strh r2, [r1]
strh r0, [r1, #2]
_0200CEF8:
ldrh r0, [r1]
tst r0, #0x80
bne _0200CEF8
ldr r0, _0200CF24 ; =0x040001C2
ldrh r0, [r0]
and r0, r0, #0xff
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200CF18: .word 0x040001C0
_0200CF1C: .word 0x00008202
_0200CF20: .word 0x00008002
_0200CF24: .word 0x040001C2
arm_func_end sub_0200CEB4
arm_func_start sub_0200CF28
sub_0200CF28: ; 0x0200CF28
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
bl sub_0200CEB4
orr r1, r0, r4
mov r0, #0
bl sub_0200CE38
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_0200CF28
arm_func_start sub_0200CF4C
sub_0200CF4C: ; 0x0200CF4C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
bl sub_0200CEB4
mvn r1, r4
and r0, r0, r1
and r1, r0, #0xff
mov r0, #0
bl sub_0200CE38
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_0200CF4C
arm_func_start sub_0200CF78
sub_0200CF78: ; 0x0200CF78
stmdb sp!, {r3, lr}
cmp r0, #0xf
addls pc, pc, r0, lsl #2
b _0200D094
_0200CF88: ; jump table
b _0200D094 ; case 0
b _0200CFC8 ; case 1
b _0200CFDC ; case 2
b _0200CFF0 ; case 3
b _0200D004 ; case 4
b _0200D010 ; case 5
b _0200D01C ; case 6
b _0200D028 ; case 7
b _0200D034 ; case 8
b _0200D040 ; case 9
b _0200D04C ; case 10
b _0200D058 ; case 11
b _0200D064 ; case 12
b _0200D070 ; case 13
b _0200D088 ; case 14
b _0200D07C ; case 15
_0200CFC8:
mov r0, #1
bl sub_0200D404
mov r0, #1
bl sub_0200D09C
b _0200D094
_0200CFDC:
mov r0, #3
bl sub_0200D404
mov r0, #3
bl sub_0200D09C
b _0200D094
_0200CFF0:
mov r0, #2
bl sub_0200D404
mov r0, #2
bl sub_0200D09C
b _0200D094
_0200D004:
mov r0, #4
bl sub_0200CF28
b _0200D094
_0200D010:
mov r0, #4
bl sub_0200CF4C
b _0200D094
_0200D01C:
mov r0, #8
bl sub_0200CF28
b _0200D094
_0200D028:
mov r0, #8
bl sub_0200CF4C
b _0200D094
_0200D034:
mov r0, #0xc
bl sub_0200CF28
b _0200D094
_0200D040:
mov r0, #0xc
bl sub_0200CF4C
b _0200D094
_0200D04C:
mov r0, #1
bl sub_0200CF28
b _0200D094
_0200D058:
mov r0, #1
bl sub_0200CF4C
b _0200D094
_0200D064:
mov r0, #2
bl sub_0200CF4C
b _0200D094
_0200D070:
mov r0, #2
bl sub_0200CF28
b _0200D094
_0200D07C:
mov r0, #0x40
bl sub_0200CF4C
b _0200D094
_0200D088:
bl sub_020068F0
mov r0, #0x40
bl sub_0200CF28
_0200D094:
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_0200CF78
arm_func_start sub_0200D09C
sub_0200D09C: ; 0x0200D09C
stmdb sp!, {r4, lr}
mov r4, r0
cmp r4, #1
beq _0200D0C0
cmp r4, #2
beq _0200D0D8
cmp r4, #3
beq _0200D0CC
b _0200D0EC
_0200D0C0:
mov r0, #0x10
bl sub_0200CF4C
b _0200D0F0
_0200D0CC:
mov r0, #0x30
bl sub_0200CF28
b _0200D0F0
_0200D0D8:
mov r0, #0x20
bl sub_0200CF4C
mov r0, #0x10
bl sub_0200CF28
b _0200D0F0
_0200D0EC:
bl sub_02006058
_0200D0F0:
ldr r0, _0200D100 ; =0x0380756C
str r4, [r0]
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200D100: .word 0x0380756C
arm_func_end sub_0200D09C
arm_func_start sub_0200D104
sub_0200D104: ; 0x0200D104
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r0, _0200D2C0 ; =0x04000208
mov r8, #0
ldrh sb, [r0]
strh r8, [r0]
bl sub_02005EE8
mov r4, r0
mvn r0, #0xfe000000
bl sub_02003B10
mov r5, r0
mov r0, r8
bl sub_0200CEB4
mov r6, r0
mov r0, #2
bl sub_0200D404
mov r0, #2
bl sub_0200D09C
mov r0, #2
bl sub_0200D09C
bl sub_020068F0
mov r0, #1
bl sub_0200CF4C
ldr r0, _0200D2C4 ; =0x03809E4E
ldrh r0, [r0]
tst r0, #1
beq _0200D188
ldr r0, _0200D2C8 ; =0x03809E4C
ldr r1, _0200D2CC ; =0x04000132
ldrh r2, [r0]
mov r0, #0x1000
orr r2, r2, #0x4000
strh r2, [r1]
bl sub_02003AD8
_0200D188:
ldr r0, _0200D2C4 ; =0x03809E4E
ldrh r0, [r0]
tst r0, #4
beq _0200D1A0
mov r0, #0x400000
bl sub_02003AD8
_0200D1A0:
ldr r0, _0200D2C4 ; =0x03809E4E
ldrh r0, [r0]
tst r0, #2
beq _0200D1E4
ldr r1, _0200D2D0 ; =0x04000134
mov r0, #0x8000
ldrh r7, [r1]
mov r8, #1
bl sub_02006790
mov r0, #0x40
mov r1, #0
bl sub_02006770
mov r0, #0x100
mov r1, r0
bl sub_02006770
mov r0, #0x80
bl sub_02003AD8
_0200D1E4:
ldr r0, _0200D2C4 ; =0x03809E4E
ldrh r0, [r0]
tst r0, #8
beq _0200D1FC
mov r0, #0x100000
bl sub_02003AD8
_0200D1FC:
ldr r0, _0200D2C4 ; =0x03809E4E
ldrh r0, [r0]
tst r0, #0x10
beq _0200D214
mov r0, #0x2000
bl sub_02003AD8
_0200D214:
mov r0, r4
bl sub_02005EFC
ldr r2, _0200D2C0 ; =0x04000208
mov r0, #1
ldrh r1, [r2]
strh r0, [r2]
bl sub_0200D2D8
mov r1, r6
mov r0, #0
bl sub_0200CE38
ldr r0, _0200D2C4 ; =0x03809E4E
ldrh r1, [r0]
tst r1, #0x20
movne r0, #6
moveq r0, #7
tst r1, #0x40
movne r6, #4
moveq r6, #5
bl sub_0200CF78
mov r0, r6
bl sub_0200CF78
cmp r8, #0
ldrne r0, _0200D2D0 ; =0x04000134
strneh r7, [r0]
mov r0, #1
bl sub_0200CF28
bl sub_02006948
mov r1, #0
ldr r3, _0200D2D4 ; =0x03809E54
mov r2, r1
mov r0, #0x62
str r1, [r3, #0x20]
bl sub_0200CDF4
bl sub_02005EE8
mov r0, r5
bl sub_02003A8C
mov r0, r4
bl sub_02005EFC
ldr r1, _0200D2C0 ; =0x04000208
ldrh r0, [r1]
strh sb, [r1]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0200D2C0: .word 0x04000208
_0200D2C4: .word 0x03809E4E
_0200D2C8: .word 0x03809E4C
_0200D2CC: .word 0x04000132
_0200D2D0: .word 0x04000134
_0200D2D4: .word 0x03809E54
arm_func_end sub_0200D104
arm_func_start sub_0200D2D8
sub_0200D2D8: ; 0x0200D2D8
ldr ip, _0200D2E0 ; =sub_038037D6
bx ip
.align 2, 0
_0200D2E0: .word sub_038037D6
arm_func_end sub_0200D2D8
arm_func_start sub_0200D2E4
sub_0200D2E4: ; 0x0200D2E4
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _0200D3F8 ; =0x03809E80
ldr r3, [r1, #4]
cmp r3, #0
bne _0200D320
mov r2, #1
mov r3, r2
mov r0, #3
mov r1, #0x66
bl sub_0200BD64
cmp r0, #0
beq _0200D3F0
mov r0, #1
bl sub_0200D404
b _0200D3F0
_0200D320:
cmp r3, #4
bge _0200D34C
ldr r0, _0200D3FC ; =0x0380756C
ldr r0, [r0]
cmp r3, r0
beq _0200D3F0
mov r0, #3
mov r1, #0x66
mov r2, #1
bl sub_0200BD64
b _0200D3F0
_0200D34C:
sub r2, r3, #4
mov r0, #0xc
mul r4, r2, r0
ldr r5, _0200D400 ; =0x03807570
ldr r0, [r1]
add r6, r5, r4
ldrh r1, [r6, #0xa]
bl sub_0200EFBC
mov r1, #0
mov r3, r1, lsr r0
ldr ip, [r6, #4]
mov r2, #0x80000000
rsb r1, r0, #0x20
orr r3, r3, r2, lsl r1
sub r1, r0, #0x20
and ip, ip, r2, lsr r0
orr r3, r3, r2, lsr r1
ldr r0, [r5, r4]
cmp ip, #0
and r0, r0, r3
cmpeq r0, #0
movne r3, #1
ldrh r2, [r6, #8]
ldrh r1, [r6, #0xa]
ldr r0, _0200D3F8 ; =0x03809E80
mul r1, r2, r1
ldr r2, [r0]
moveq r3, #2
add r2, r2, #1
cmp r2, r1
str r2, [r0]
movhs r1, #0
strhs r1, [r0]
ldr r0, _0200D3FC ; =0x0380756C
ldr r0, [r0]
cmp r3, r0
beq _0200D3F0
mov r0, #3
mov r1, #0x66
mov r2, #1
bl sub_0200BD64
_0200D3F0:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0200D3F8: .word 0x03809E80
_0200D3FC: .word 0x0380756C
_0200D400: .word 0x03807570
arm_func_end sub_0200D2E4
arm_func_start sub_0200D404
sub_0200D404: ; 0x0200D404
cmp r0, #0xf
ldrle r1, _0200D41C ; =0x03809E80
movle r2, #0
strle r0, [r1, #4]
strle r2, [r1]
bx lr
.align 2, 0
_0200D41C: .word 0x03809E80
arm_func_end sub_0200D404
arm_func_start sub_0200D420
sub_0200D420: ; 0x0200D420
ldr r0, _0200D42C ; =0x03809E80
ldr r0, [r0, #4]
bx lr
.align 2, 0
_0200D42C: .word 0x03809E80
arm_func_end sub_0200D420
arm_func_start sub_0200D430
sub_0200D430: ; 0x0200D430
stmdb sp!, {r4, lr}
mov r4, r0
ldr r3, _0200D46C ; =0x03809E88
mov r1, #0
ldr r0, _0200D470 ; =0x03809E98
mov r2, #0xa4
stmib r3, {r1, r4}
bl sub_02006258
mov r0, r4
bl sub_0200D4A4
ldr r0, _0200D46C ; =0x03809E88
mov r1, #3
strb r1, [r0]
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200D46C: .word 0x03809E88
_0200D470: .word 0x03809E98
arm_func_end sub_0200D430
arm_func_start sub_0200D474
sub_0200D474: ; 0x0200D474
stmdb sp!, {r3, lr}
ldr r2, _0200D4A0 ; =0x04000304
mov r0, #1
ldrh r1, [r2]
bic r1, r1, #2
strh r1, [r2]
bl sub_0200D404
mov r0, #1
bl sub_0200D09C
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200D4A0: .word 0x04000304
arm_func_end sub_0200D474
arm_func_start sub_0200D4A4
sub_0200D4A4: ; 0x0200D4A4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x50
str r0, [sp, #0x44]
ldr r0, _0200D53C ; =0x0380AAFC
mov sb, #4
mov r7, #8
mov r4, #3
ldr r1, _0200D540 ; =0x0380AAFC
ldr r6, _0200D544 ; =0x03809F3C
mov sl, #0x600
mov r8, #0
mov r5, #0x1c0
mov lr, #0x40
mov ip, #5
mov r3, #7
mov r2, #9
str r0, [sp, #0x1c]
str r1, [sp, #0x20]
add r0, sp, #0x1c
add r1, sp, #0
str sl, [sp, #0x24]
str sb, [sp, #0x28]
str r8, [sp, #0x3c]
str r7, [sp, #0x40]
str r6, [sp, #0x48]
str r5, [sp, #0x4c]
str r4, [sp]
str lr, [sp, #0x38]
str r4, [sp, #8]
str sb, [sp, #0x18]
str ip, [sp, #0x10]
str r3, [sp, #4]
str r7, [sp, #0x14]
str r2, [sp, #0xc]
bl sub_00FE81E8
add sp, sp, #0x50
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_0200D53C: .word 0x0380AAFC
_0200D540: .word 0x0380AAFC
_0200D544: .word 0x03809F3C
arm_func_end sub_0200D4A4
arm_func_start sub_0200D548
sub_0200D548: ; 0x0200D548
ldr r0, _0200D584 ; =0x0380B1FC
mov r3, #0
str r3, [r0, #0x20]
ldr r0, _0200D588 ; =0x0380B1FC
mov r2, r3
_0200D55C:
mov r1, r3, lsl #1
add r3, r3, #1
strh r2, [r0, r1]
cmp r3, #0x10
blt _0200D55C
ldr r1, _0200D58C ; =0x0400010E
ldrh r0, [r1]
bic r0, r0, #0x80
strh r0, [r1]
bx lr
.align 2, 0
_0200D584: .word 0x0380B1FC
_0200D588: .word 0x0380B1FC
_0200D58C: .word 0x0400010E
arm_func_end sub_0200D548
arm_func_start sub_0200D590
sub_0200D590: ; 0x0200D590
stmdb sp!, {r4, lr}
tst r0, #0x2000000
beq _0200D5BC
ldr r1, _0200D848 ; =0x0380B1FC
mov r4, #0
mov r3, r4
_0200D5A8:
mov r2, r4, lsl #1
add r4, r4, #1
strh r3, [r1, r2]
cmp r4, #0x10
blt _0200D5A8
_0200D5BC:
ldr r1, _0200D848 ; =0x0380B1FC
and r2, r0, #0xf0000
mov r2, r2, lsr #0x10
mov r2, r2, lsl #1
strh r0, [r1, r2]
tst r0, #0x1000000
beq _0200D840
ldr r1, _0200D84C ; =0x0380B1FC
ldrh r2, [r1]
and r0, r2, #0xff00
mov r0, r0, lsl #8
mov r4, r0, lsr #0x10
sub r0, r4, #0x40
cmp r0, #3
addls pc, pc, r0, lsl #2
b _0200D834
_0200D5FC: ; jump table
b _0200D60C ; case 0
b _0200D648 ; case 1
b _0200D74C ; case 2
b _0200D7B0 ; case 3
_0200D60C:
mov r1, r4
and r3, r2, #0xff
mov r0, #2
mov r2, #1
bl sub_0200BD64
cmp r0, #0
bne _0200D634
mov r0, r4
mov r1, #4
bl sub_0200BC30
_0200D634:
ldr r0, _0200D850 ; =0x027FFF94
mov r1, #0
strh r1, [r0]
str r1, [r0, #-4]
b _0200D840
_0200D648:
ldr r0, [r1, #0x20]
cmp r0, #0
beq _0200D664
mov r0, r4
mov r1, #3
bl sub_0200BC30
b _0200D840
_0200D664:
and r0, r2, #0xff
strh r0, [r1, #0x24]
ldrh r2, [r1, #2]
ldrh r0, [r1, #4]
orr r3, r0, r2, lsl #16
cmp r3, #0x2000000
blo _0200D688
cmp r3, #0x2400000
blo _0200D698
_0200D688:
mov r0, r4
mov r1, #2
bl sub_0200BC30
b _0200D840
_0200D698:
str r3, [r1, #0x28]
ldrh r2, [r1, #6]
ldrh r0, [r1, #8]
orr r2, r0, r2, lsl #16
add r0, r3, r2
cmp r0, #0x2400000
bls _0200D6C4
mov r0, r4
mov r1, #2
bl sub_0200BC30
b _0200D840
_0200D6C4:
str r2, [r1, #0x30]
ldrh r2, [r1, #0xa]
ldrh r0, [r1, #0xc]
orr r0, r0, r2, lsl #16
bl sub_0200D858
cmp r0, #0
bne _0200D6F0
mov r0, r4
mov r1, #2
bl sub_0200BC30
b _0200D840
_0200D6F0:
ldr r3, _0200D84C ; =0x0380B1FC
mov r2, #0
str r2, [r3, #0x2c]
ldrh r0, [r3, #0x24]
mov r1, r4
and ip, r0, #7
mov r0, #2
strh ip, [r3, #0x26]
bl sub_0200BD64
cmp r0, #0
bne _0200D72C
mov r0, r4
mov r1, #4
bl sub_0200BC30
b _0200D840
_0200D72C:
ldr r1, _0200D850 ; =0x027FFF94
mov r2, #0
strh r2, [r1]
ldr r0, _0200D84C ; =0x0380B1FC
str r2, [r1, #-4]
mov r1, #1
str r1, [r0, #0x20]
b _0200D840
_0200D74C:
ldr r0, [r1, #0x20]
cmp r0, #2
beq _0200D768
mov r0, r4
mov r1, #3
bl sub_0200BC30
b _0200D840
_0200D768:
mov r1, r4
mov r0, #2
mov r2, #0
bl sub_0200BD64
cmp r0, #0
bne _0200D790
mov r0, r4
mov r1, #4
bl sub_0200BC30
b _0200D840
_0200D790:
ldr r0, _0200D84C ; =0x0380B1FC
mov r2, #3
ldr r1, _0200D854 ; =0x0400010E
str r2, [r0, #0x20]
ldrh r0, [r1]
bic r0, r0, #0x80
strh r0, [r1]
b _0200D840
_0200D7B0:
ldr r0, [r1, #0x20]
cmp r0, #2
beq _0200D7CC
mov r0, r4
mov r1, #3
bl sub_0200BC30
b _0200D840
_0200D7CC:
ldrh r2, [r1, #2]
ldrh r0, [r1, #4]
orr r0, r0, r2, lsl #16
bl sub_0200D858
cmp r0, #0
bne _0200D7F4
mov r0, r4
mov r1, #2
bl sub_0200BC30
b _0200D840
_0200D7F4:
bl sub_02005EE8
ldr r3, _0200D854 ; =0x0400010E
ldr r1, _0200D84C ; =0x0380B1FC
ldrh r2, [r3]
bic r2, r2, #0x80
strh r2, [r3]
ldrh r2, [r1, #0x34]
strh r2, [r3, #-2]
ldrh r1, [r1, #0x36]
orr r1, r1, #0xc0
strh r1, [r3]
bl sub_02005EFC
mov r0, r4
mov r1, #0
bl sub_0200BC30
b _0200D840
_0200D834:
mov r0, r4
mov r1, #1
bl sub_0200BC30
_0200D840:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200D848: .word 0x0380B1FC
_0200D84C: .word 0x0380B1FC
_0200D850: .word 0x027FFF94
_0200D854: .word 0x0400010E
arm_func_end sub_0200D590
arm_func_start sub_0200D858
sub_0200D858: ; 0x0200D858
cmp r0, #0x10000
bhs _0200D87C
ldr r1, _0200D8F8 ; =0x0380B1FC
mov r2, #0
strh r2, [r1, #0x36]
rsb r0, r0, #0x10000
strh r0, [r1, #0x34]
mov r0, #1
bx lr
_0200D87C:
cmp r0, #0x400000
bhs _0200D8A4
ldr r1, _0200D8F8 ; =0x0380B1FC
mov r3, #1
mov r0, r0, lsr #6
rsb r2, r0, #0x10000
strh r3, [r1, #0x36]
mov r0, r3
strh r2, [r1, #0x34]
bx lr
_0200D8A4:
cmp r0, #0x1000000
bhs _0200D8CC
ldr r1, _0200D8F8 ; =0x0380B1FC
mov r2, #2
mov r0, r0, lsr #8
strh r2, [r1, #0x36]
rsb r0, r0, #0x10000
strh r0, [r1, #0x34]
mov r0, #1
bx lr
_0200D8CC:
cmp r0, #0x4000000
movhs r0, #0
bxhs lr
ldr r1, _0200D8F8 ; =0x0380B1FC
mov r2, #3
mov r0, r0, lsr #0xa
strh r2, [r1, #0x36]
rsb r0, r0, #0x10000
strh r0, [r1, #0x34]
mov r0, #1
bx lr
.align 2, 0
_0200D8F8: .word 0x0380B1FC
arm_func_end sub_0200D858
arm_func_start sub_0200D8FC
sub_0200D8FC: ; 0x0200D8FC
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
ldr r2, [r4, #4]
cmp r2, #0x40
beq _0200D924
cmp r2, #0x41
beq _0200D9D4
cmp r2, #0x42
beq _0200DA6C
b _0200DB08
_0200D924:
bl sub_02005EE8
mov r5, r0
mov r0, #2
bl sub_0200BCF4
cmp r0, #0
bne _0200D95C
mov r0, r5
bl sub_02005EFC
ldr r0, [r4, #4]
mov r1, #4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200BC30
b _0200DB08
_0200D95C:
mov r0, #2
bl sub_0200BD10
mov r0, r5
bl sub_02005EFC
ldr r0, [r4, #8]
and r0, r0, #1
cmp r0, #1
bne _0200D990
bl sub_0200DE4C
ldr r1, [r4, #8]
tst r1, #2
eorne r0, r0, #0x8000
b _0200D9A0
_0200D990:
bl sub_0200DCF8
ldr r1, [r4, #8]
tst r1, #2
eorne r0, r0, #0x80
_0200D9A0:
ldr r1, _0200DB10 ; =0x027FFF94
movne r0, r0, lsl #0x10
movne r0, r0, lsr #0x10
strh r0, [r1]
str r1, [r1, #-4]
ldr r0, [r4, #4]
mov r1, #0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200BC30
mov r0, #2
bl sub_0200BD28
b _0200DB08
_0200D9D4:
ldr r0, _0200DB14 ; =0x0380B1FC
ldr r1, [r0, #0x20]
cmp r1, #1
bne _0200DA58
mov r1, #0
strh r1, [r0, #0x3a]
strh r1, [r0, #0x38]
bl sub_02005EE8
mov r5, r0
mov r0, #0x40
bl sub_02003AD8
ldr r1, _0200DB18 ; =0x0380593C
mov r0, #0x40
bl sub_0200DF80
bl sub_0200DFA8
ldr r1, _0200DB14 ; =0x0380B1FC
ldr r2, _0200DB1C ; =0x0400010C
ldrh r3, [r1, #0x34]
mov r0, r5
strh r3, [r2]
ldrh r1, [r1, #0x36]
orr r1, r1, #0xc0
strh r1, [r2, #2]
bl sub_02005EFC
ldr r0, [r4, #4]
mov r1, #0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200BC30
ldr r0, _0200DB14 ; =0x0380B1FC
mov r1, #2
str r1, [r0, #0x20]
b _0200DB08
_0200DA58:
mov r0, r2, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #3
bl sub_0200BC30
b _0200DB08
_0200DA6C:
ldr r0, _0200DB14 ; =0x0380B1FC
ldr r1, [r0, #0x20]
sub r0, r1, #3
cmp r0, #1
bhi _0200DAE8
ldr r1, _0200DB20 ; =0x0400010E
ldrh r0, [r1]
bic r0, r0, #0x80
strh r0, [r1]
bl sub_02005EE8
mov r4, r0
mov r0, #0x40
mov r1, #0
bl sub_0200DF80
bl sub_0200E008
mov r0, r4
bl sub_02005EFC
ldr r0, _0200DB14 ; =0x0380B1FC
mov r1, #0
ldr r0, [r0, #0x20]
cmp r0, #3
bne _0200DAD0
mov r0, #0x42
bl sub_0200BC30
b _0200DAD8
_0200DAD0:
mov r0, #0x51
bl sub_0200BC30
_0200DAD8:
ldr r0, _0200DB14 ; =0x0380B1FC
mov r1, #0
str r1, [r0, #0x20]
b _0200DB08
_0200DAE8:
cmp r1, #3
mov r1, #3
bne _0200DB00
mov r0, #0x42
bl sub_0200BC30
b _0200DB08
_0200DB00:
mov r0, #0x51
bl sub_0200BC30
_0200DB08:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0200DB10: .word 0x027FFF94
_0200DB14: .word 0x0380B1FC
_0200DB18: .word 0x0380593C
_0200DB1C: .word 0x0400010C
_0200DB20: .word 0x0400010E
arm_func_end sub_0200D8FC
arm_func_start sub_0200DB24
sub_0200DB24: ; 0x0200DB24
stmdb sp!, {r3, lr}
bl sub_0200DB58
ldr r3, _0200DB50 ; =0x0380FFF8
ldr r0, _0200DB54 ; =0x04000214
ldr r2, [r3]
mov r1, #0x40
orr r2, r2, #0x40
str r2, [r3]
str r1, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200DB50: .word 0x0380FFF8
_0200DB54: .word 0x04000214
arm_func_end sub_0200DB24
arm_func_start sub_0200DB58
sub_0200DB58: ; 0x0200DB58
stmdb sp!, {r4, r5, r6, r7, lr}
ldr r4, _0200DCE8 ; =0x0380B1FC
ldrh r5, [r4, #0x26]
and r0, r5, #4
cmp r0, #4
ldrh r6, [r4, #0x38]
bne _0200DB78
b _0200DB7C
_0200DB78:
ldrh r7, [r4, #0x3a]
_0200DB7C:
beq _0200DB84
b _0200DB88
_0200DB84:
ldr r7, _0200DCEC ; =0x0000FFFF
_0200DB88:
bl sub_0200BE44
cmp r0, #0
bne _0200DBF4
mov r0, #2
bl sub_0200BCF4
cmp r0, #0
beq _0200DBF4
and r0, r5, #1
cmp r0, #1
bne _0200DBD4
bl sub_0200DE4C
tst r5, #2
beq _0200DBC0
b _0200DBC4
_0200DBC0:
mov r7, r0
_0200DBC4:
bne _0200DBCC
b _0200DBD0
_0200DBCC:
eor r7, r0, #0x8000
_0200DBD0:
b _0200DBF4
_0200DBD4:
bl sub_0200DCF8
tst r5, #2
beq _0200DBE4
b _0200DBE8
_0200DBE4:
mov r7, r0
_0200DBE8:
bne _0200DBF0
b _0200DBF4
_0200DBF0:
eor r7, r0, #0x80
_0200DBF4:
and r0, r5, #1
ldr r3, _0200DCF0 ; =0x027FFC00
ldr r1, [r4, #0x2c]
cmp r0, #1
bne _0200DC24
ldr r2, [r4, #0x28]
strh r7, [r2, r1]!
str r2, [r3, #0x390]
add r3, r3, #0x394
strh r7, [r3]
add r1, r1, #2
b _0200DC5C
_0200DC24:
and r7, r7, #0xff
tst r1, #1
bne _0200DC3C
mov r6, r7
add r1, r1, #1
b _0200DC5C
_0200DC3C:
orr r0, r6, r7, lsl #8
ldr r2, [r4, #0x28]
sub r1, r1, #1
strh r0, [r2, r1]!
str r2, [r3, #0x390]
add r3, r3, #0x394
strh r0, [r3]
add r1, r1, #2
_0200DC5C:
strh r6, [r4, #0x38]
strh r7, [r4, #0x3a]
ldr r0, [r4, #0x30]
cmp r1, r0
bhs _0200DC74
b _0200DC78
_0200DC74:
mov r1, #0
_0200DC78:
str r1, [r4, #0x2c]
blo _0200DCE0
ldrh r0, [r4, #0x24]
and r0, r0, #0x10
cmp r0, #0x10
bne _0200DCA0
mov r0, #0x51
mov r1, #0
bl sub_0200BC30
b _0200DCE0
_0200DCA0:
mov r0, #2
mov r1, #0x42
mov r2, #0
bl sub_0200BD64
cmp r0, #0
bne _0200DCC8
mov r0, #0x51
mov r1, #4
bl sub_0200BC30
b _0200DCE0
_0200DCC8:
mov r0, #4
str r0, [r4, #0x20]
ldr r1, _0200DCF4 ; =0x0400010E
ldrh r0, [r1]
bic r0, r0, #0x80
strh r0, [r1]
_0200DCE0:
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0200DCE8: .word 0x0380B1FC
_0200DCEC: .word 0x0000FFFF
_0200DCF0: .word 0x027FFC00
_0200DCF4: .word 0x0400010E
arm_func_end sub_0200DB58
arm_func_start sub_0200DCF8
sub_0200DCF8: ; 0x0200DCF8
stmdb sp!, {r4, lr}
ldr r2, _0200DE04 ; =0x040001C0
_0200DD00:
ldrh r0, [r2]
tst r0, #0x80
bne _0200DD00
ldr r1, _0200DE08 ; =0x00008A01
ldr r0, _0200DE0C ; =0x040001C2
strh r1, [r2]
mov r1, #0xec
strh r1, [r0]
sub r1, r0, #2
_0200DD24:
ldrh r0, [r1]
tst r0, #0x80
bne _0200DD24
bl sub_0200DE1C
ldr r2, _0200DE10 ; =0x00008201
ldr r1, _0200DE04 ; =0x040001C0
mov r4, r0, lsl #0x18
strh r2, [r1]
bl sub_0200DE1C
ldr r2, _0200DE14 ; =0x0380B238
ldr r1, _0200DE18 ; =0x00007F80
orr r0, r0, r4, lsr #16
and r1, r0, r1
ldr r0, [r2, #0x10]
mov r1, r1, lsl #9
add r3, r0, r1, lsr #16
str r3, [r2, #0x10]
ldr r0, [r2, #0xc]
add r0, r0, #1
str r0, [r2, #0xc]
cmp r0, #0x1000
blo _0200DDD4
ldrsb r4, [r2]
mov r0, r3, lsr #0xc
sub r0, r0, #0x80
mov r0, r0, lsl #0x18
cmp r4, r0, asr #24
mov r0, r0, asr #0x18
cmplt r4, #0xc
addlt r0, r4, #1
strltb r0, [r2]
blt _0200DDC4
cmp r0, r4
bge _0200DDC4
mvn r0, #0xb
cmp r4, r0
ldrgt r0, _0200DE14 ; =0x0380B238
ldrgtsb r2, [r0]
subgt r2, r2, #1
strgtb r2, [r0]
_0200DDC4:
ldr r0, _0200DE14 ; =0x0380B238
mov r2, #0
str r2, [r0, #0xc]
str r2, [r0, #0x10]
_0200DDD4:
ldr r0, _0200DE14 ; =0x0380B238
ldrsb r0, [r0]
rsb r0, r0, r1, lsr #16
cmp r0, #0xff
movgt r0, #0xff
bgt _0200DDF4
cmp r0, #0
movlt r0, #0
_0200DDF4:
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200DE04: .word 0x040001C0
_0200DE08: .word 0x00008A01
_0200DE0C: .word 0x040001C2
_0200DE10: .word 0x00008201
_0200DE14: .word 0x0380B238
_0200DE18: .word 0x00007F80
arm_func_end sub_0200DCF8
arm_func_start sub_0200DE1C
sub_0200DE1C: ; 0x0200DE1C
ldr r0, _0200DE48 ; =0x040001C2
mov r1, #0
strh r1, [r0]
sub r1, r0, #2
_0200DE2C:
ldrh r0, [r1]
tst r0, #0x80
bne _0200DE2C
ldr r0, _0200DE48 ; =0x040001C2
ldrh r0, [r0]
and r0, r0, #0xff
bx lr
.align 2, 0
_0200DE48: .word 0x040001C2
arm_func_end sub_0200DE1C
arm_func_start sub_0200DE4C
sub_0200DE4C: ; 0x0200DE4C
stmdb sp!, {r4, lr}
ldr r2, _0200DF64 ; =0x040001C0
_0200DE54:
ldrh r0, [r2]
tst r0, #0x80
bne _0200DE54
ldr r1, _0200DF68 ; =0x00008A01
ldr r0, _0200DF6C ; =0x040001C2
strh r1, [r2]
mov r1, #0xe4
strh r1, [r0]
sub r1, r0, #2
_0200DE78:
ldrh r0, [r1]
tst r0, #0x80
bne _0200DE78
bl sub_0200DE1C
ldr r2, _0200DF70 ; =0x00008201
ldr r1, _0200DF64 ; =0x040001C0
mov r4, r0, lsl #0x18
strh r2, [r1]
bl sub_0200DE1C
ldr r3, _0200DF74 ; =0x0380B238
ldr r1, _0200DF78 ; =0x00007FF8
orr r0, r0, r4, lsr #16
and r2, r0, r1
ldr r0, [r3, #4]
mov r2, r2, lsl #0x11
add r4, r0, r2, lsr #16
str r4, [r3, #4]
ldr r0, [r3, #8]
add r0, r0, #1
str r0, [r3, #8]
cmp r0, #0x100
blo _0200DF30
mov r0, r1, lsl #1
and r0, r0, r4, lsr #8
ldrsh r4, [r3, #2]
sub r0, r0, #0x8000
mov r0, r0, lsl #0x10
cmp r4, r0, asr #16
mov r1, r0, asr #0x10
cmplt r4, #0xc00
addlt r0, r4, #0x10
strlth r0, [r3, #2]
blt _0200DF20
cmp r1, r4
bge _0200DF20
mov r0, #0xc00
rsb r0, r0, #0
cmp r4, r0
ldrgt r0, _0200DF74 ; =0x0380B238
ldrgtsh r1, [r0, #2]
subgt r1, r1, #0x10
strgth r1, [r0, #2]
_0200DF20:
ldr r0, _0200DF74 ; =0x0380B238
mov r1, #0
str r1, [r0, #8]
str r1, [r0, #4]
_0200DF30:
ldr r1, _0200DF74 ; =0x0380B238
ldr r0, _0200DF7C ; =0x0000FFF0
ldrsh r1, [r1, #2]
rsb r1, r1, r2, lsr #16
cmp r1, r0
movgt r1, r0
bgt _0200DF54
cmp r1, #0
movlt r1, #0
_0200DF54:
mov r0, r1, lsl #0x10
mov r0, r0, lsr #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200DF64: .word 0x040001C0
_0200DF68: .word 0x00008A01
_0200DF6C: .word 0x040001C2
_0200DF70: .word 0x00008201
_0200DF74: .word 0x0380B238
_0200DF78: .word 0x00007FF8
_0200DF7C: .word 0x0000FFF0
arm_func_end sub_0200DE4C
arm_func_start sub_0200DF80
sub_0200DF80: ; 0x0200DF80
ldr r2, _0200DFA4 ; =0x038074F4
mov r3, #0
_0200DF88:
tst r0, #1
strne r1, [r2, r3, lsl #2]
add r3, r3, #1
cmp r3, #0x19
mov r0, r0, lsr #1
blt _0200DF88
bx lr
.align 2, 0
_0200DFA4: .word 0x038074F4
arm_func_end sub_0200DF80
arm_func_start sub_0200DFA8
sub_0200DFA8: ; 0x0200DFA8
stmdb sp!, {r3, lr}
ldr r3, _0200DFFC ; =0x0380FFFC
ldr r0, _0200E000 ; =0x03805E64
ldr r2, [r3]
cmp r2, r0
beq _0200DFF4
ldr r0, _0200E004 ; =0x0380B24C
mov r1, #0
str r1, [r0]
sub r1, r3, #0x17c
str r1, [r0, #4]
mov r1, #0x40
str r1, [r0, #8]
str r2, [r0, #0xc]
bl sub_02005EE8
ldr r2, _0200E000 ; =0x03805E64
ldr r1, _0200DFFC ; =0x0380FFFC
str r2, [r1]
bl sub_02005EFC
_0200DFF4:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200DFFC: .word 0x0380FFFC
_0200E000: .word 0x03805E64
_0200E004: .word 0x0380B24C
arm_func_end sub_0200DFA8
arm_func_start sub_0200E008
sub_0200E008: ; 0x0200E008
stmdb sp!, {r3, lr}
ldr r1, _0200E040 ; =0x0380FFFC
ldr r0, _0200E044 ; =0x03805E64
ldr r1, [r1]
cmp r1, r0
bne _0200E038
bl sub_02005EE8
ldr r1, _0200E048 ; =0x0380B24C
ldr r2, _0200E040 ; =0x0380FFFC
ldr r1, [r1, #0xc]
str r1, [r2]
bl sub_02005EFC
_0200E038:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200E040: .word 0x0380FFFC
_0200E044: .word 0x03805E64
_0200E048: .word 0x0380B24C
arm_func_end sub_0200E008
arm_func_start sub_0200E04C
sub_0200E04C: ; 0x0200E04C
mov ip, #0x4000000
add r1, ip, #0x208
ldrh r0, [r1]
tst r0, r0
beq _0200E064
b _0200E068
_0200E064:
bx lr
_0200E068:
ldr r3, [ip, #0x210]
ldr r1, [ip, #0x214]
ands r2, r1, r3
beq _0200E07C
b _0200E080
_0200E07C:
bx lr
_0200E080:
ldr r0, _0200E268 ; =0x01DF3FFF
tst r2, r0
beq _0200E090
b _0200E094
_0200E090:
str r2, [ip, #0x214]
_0200E094:
beq _0200E09C
b _0200E0A0
_0200E09C:
bx lr
_0200E0A0:
stmdb sp!, {lr}
mrs r0, spsr
stmdb sp!, {r0}
stmdb sp, {sp, lr} ^
sub sp, sp, #8
mov r0, #0x9f
msr cpsr_c, r0
ldr r1, _0200E26C ; =0x038076A4
ldrh r0, [r1, #2]
add r0, r0, #1
strh r0, [r1, #2]
ldr r1, _0200E270 ; =0x0380B24C
cmp r0, #1
beq _0200E0DC
b _0200E0E0
_0200E0DC:
mov r0, sp
_0200E0E0:
beq _0200E0E8
b _0200E0EC
_0200E0E8:
ldr sp, [r1, #4]
_0200E0EC:
beq _0200E0F4
b _0200E0F8
_0200E0F4:
str r0, [r1, #4]
_0200E0F8:
stmdb sp!, {r3}
ldr r1, _0200E274 ; =0x03807210
ldr r0, [r1]
tst r0, r2
bne _0200E110
b _0200E114
_0200E110:
str r0, [ip, #0x214]
_0200E114:
bne _0200E11C
b _0200E120
_0200E11C:
ldr r0, [r1, #4]
_0200E120:
bne _0200E128
b _0200E12C
_0200E128:
ldr r3, _0200E278 ; =0x038074F4
_0200E12C:
bne _0200E134
b _0200E138
_0200E134:
ldr r0, [r3, r0, lsl #2]
_0200E138:
bne _0200E1A8
mov r3, #1
_0200E140:
ldr r0, [r1, r3, lsl #3]
tst r0, r2
beq _0200E150
b _0200E154
_0200E150:
add r3, r3, #1
_0200E154:
beq _0200E140
str r0, [ip, #0x214]
add r0, r1, r3, lsl #3
ldr r2, [r0, #4]
ldr r3, _0200E278 ; =0x038074F4
ldr r0, [r3, r2, lsl #2]
ldr r2, _0200E26C ; =0x038076A4
ldrh r3, [r2, #2]
cmp r3, #1
beq _0200E180
b _0200E184
_0200E180:
ldr r2, [r1]
_0200E184:
beq _0200E18C
b _0200E190
_0200E18C:
str r2, [ip, #0x210]
_0200E190:
beq _0200E198
b _0200E19C
_0200E198:
mov r2, #0x1f
_0200E19C:
beq _0200E1A4
b _0200E1A8
_0200E1A4:
msr cpsr_c, r2
_0200E1A8:
ldr r1, [ip, #0x210]
stmdb sp!, {r1}
add lr, pc, #0x0 ; =sub_0200E1B8
bx r0
arm_func_end sub_0200E04C
arm_func_start sub_0200E1B8
sub_0200E1B8: ; 0x0200E1B8
mov r0, #0x9f
msr cpsr_c, r0
mov ip, #0x4000000
ldmia sp!, {r0}
ldr r1, [ip, #0x210]
eor r2, r0, r1
and r1, r2, r1
and r0, r2, r0
ldmia sp!, {r3}
orr r3, r3, r1
bic r3, r3, r0
str r3, [ip, #0x210]
ldr r2, _0200E26C ; =0x038076A4
ldr r3, _0200E270 ; =0x0380B24C
ldrh r0, [r2, #2]
subs r1, r0, #1
strh r1, [r2, #2]
beq _0200E204
b _0200E208
_0200E204:
mov r0, sp
_0200E208:
beq _0200E210
b _0200E214
_0200E210:
ldr sp, [r3, #4]
_0200E214:
beq _0200E21C
b _0200E220
_0200E21C:
str r0, [r3, #4]
_0200E220:
mov r0, #0x92
msr cpsr_c, r0
ldmia sp, {sp, lr} ^
mov r0, r0
add sp, sp, #8
ldmia sp!, {r0}
msr spsr_fc, r0
tst r1, r1
beq _0200E248
b _0200E24C
_0200E248:
ldr r0, _0200E27C ; =0x037FB4F4
_0200E24C:
beq _0200E254
b _0200E258
_0200E254:
add lr, pc, #0x0 ; =0x0200E25C
_0200E258:
beq _0200E260
b _0200E264
_0200E260:
bx r0
_0200E264:
ldmia sp!, {pc}
.align 2, 0
_0200E268: .word 0x01DF3FFF
_0200E26C: .word 0x038076A4
_0200E270: .word 0x0380B24C
_0200E274: .word 0x03807210
_0200E278: .word 0x038074F4
arm_func_end sub_0200E1B8
_0200E27C: .word 0x037FB4F4
arm_func_start sub_0200E280
sub_0200E280: ; 0x0200E280
stmdb sp!, {r3, lr}
ldr r1, _0200E2B0 ; =0x0380B260
mov r3, #0
ldr r2, _0200E2B4 ; =0x05000001
add r0, sp, #0
str r3, [sp]
bl sub_0200E2BC
bl sub_02003DE4
ldr r1, _0200E2B8 ; =0x0380B25C
strh r0, [r1, #6]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200E2B0: .word 0x0380B260
_0200E2B4: .word 0x05000001
_0200E2B8: .word 0x0380B25C
arm_func_end sub_0200E280
arm_func_start sub_0200E2BC
sub_0200E2BC: ; 0x0200E2BC
ldr ip, _0200E2C4 ; =sub_038037F8
bx ip
.align 2, 0
_0200E2C4: .word sub_038037F8
arm_func_end sub_0200E2BC
arm_func_start sub_0200E2C8
sub_0200E2C8: ; 0x0200E2C8
stmdb sp!, {r3, lr}
ldr r2, _0200E310 ; =0x027FFC30
ldr r0, _0200E314 ; =0x0000FFFF
ldrh r1, [r2]
cmp r1, r0
moveq r0, #0
beq _0200E308
ldrb r0, [r2, #5]
mov r0, r0, lsl #0x1e
movs r0, r0, lsr #0x1f
bne _0200E2F8
bl sub_0200E318
_0200E2F8:
ldr r0, _0200E310 ; =0x027FFC30
ldrb r0, [r0, #5]
mov r0, r0, lsl #0x1e
mov r0, r0, lsr #0x1f
_0200E308:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200E310: .word 0x027FFC30
_0200E314: .word 0x0000FFFF
arm_func_end sub_0200E2C8
arm_func_start sub_0200E318
sub_0200E318: ; 0x0200E318
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r2, _0200E430 ; =0x027FFC30
mov r4, #1
ldrh r1, [r2]
rsb r0, r4, #0x10000
cmp r1, r0
moveq r0, #0
beq _0200E424
ldrb r0, [r2, #5]
mov r0, r0, lsl #0x1e
mov r0, r0, lsr #0x1f
cmp r0, #1
moveq r0, #0
beq _0200E424
ldr r0, _0200E434 ; =0x0380B25C
add r1, sp, #8
ldrh r0, [r0, #6]
bl sub_0200E4B8
cmp r0, #0
bne _0200E37C
ldr r0, [sp, #0xc]
bl sub_02005EFC
mov r0, r4
b _0200E424
_0200E37C:
add r0, sp, #0
bl sub_0200E43C
mov r0, #0x8000000
ldrb r2, [r0, #0xb2]
cmp r2, #0x96
bne _0200E3A8
ldr r1, _0200E430 ; =0x027FFC30
ldrh r0, [r0, #0xbe]
ldrh r1, [r1]
cmp r1, r0
bne _0200E3EC
_0200E3A8:
cmp r2, #0x96
ldrne r1, _0200E430 ; =0x027FFC30
ldrne r0, _0200E438 ; =0x0801FFFE
ldrneh r1, [r1]
ldrneh r0, [r0]
cmpne r1, r0
bne _0200E3EC
ldr r2, _0200E430 ; =0x027FFC30
mov r0, #0x8000000
ldr r1, [r2, #8]
ldr r0, [r0, #0xac]
cmp r1, r0
beq _0200E400
ldrb r0, [r2, #5]
mov r0, r0, lsl #0x1f
movs r0, r0, lsr #0x1f
beq _0200E400
_0200E3EC:
ldr r1, _0200E430 ; =0x027FFC30
mov r4, #0
ldrb r0, [r1, #5]
orr r0, r0, #2
strb r0, [r1, #5]
_0200E400:
ldr r0, [sp]
bl sub_0200E480
ldr r0, [sp, #4]
bl sub_0200E49C
ldr r0, _0200E434 ; =0x0380B25C
add r1, sp, #8
ldrh r0, [r0, #6]
bl sub_0200E508
mov r0, r4
_0200E424:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200E430: .word 0x027FFC30
_0200E434: .word 0x0380B25C
_0200E438: .word 0x0801FFFE
arm_func_end sub_0200E318
arm_func_start sub_0200E43C
sub_0200E43C: ; 0x0200E43C
stmdb sp!, {r3, lr}
ldr r2, _0200E47C ; =0x04000204
ldrh r1, [r2]
and r1, r1, #0xc
mov r1, r1, asr #2
str r1, [r0]
ldrh r1, [r2]
and r1, r1, #0x10
mov r1, r1, asr #4
str r1, [r0, #4]
mov r0, #3
bl sub_0200E480
mov r0, #0
bl sub_0200E49C
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200E47C: .word 0x04000204
arm_func_end sub_0200E43C
arm_func_start sub_0200E480
sub_0200E480: ; 0x0200E480
ldr r2, _0200E498 ; =0x04000204
ldrh r1, [r2]
bic r1, r1, #0xc
orr r0, r1, r0, lsl #2
strh r0, [r2]
bx lr
.align 2, 0
_0200E498: .word 0x04000204
arm_func_end sub_0200E480
arm_func_start sub_0200E49C
sub_0200E49C: ; 0x0200E49C
ldr r2, _0200E4B4 ; =0x04000204
ldrh r1, [r2]
bic r1, r1, #0x10
orr r0, r1, r0, lsl #4
strh r0, [r2]
bx lr
.align 2, 0
_0200E4B4: .word 0x04000204
arm_func_end sub_0200E49C
arm_func_start sub_0200E4B8
sub_0200E4B8: ; 0x0200E4B8
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
bl sub_02005EE8
str r0, [r4, #4]
ldr r0, _0200E504 ; =0x027FFFE8
bl sub_02003DDC
ands r0, r0, #0x80
str r0, [r4]
bne _0200E4F0
mov r0, r5
bl sub_02003D6C
cmp r0, #0
bne _0200E4F8
_0200E4F0:
mov r0, #1
b _0200E4FC
_0200E4F8:
mov r0, #0
_0200E4FC:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0200E504: .word 0x027FFFE8
arm_func_end sub_0200E4B8
arm_func_start sub_0200E508
sub_0200E508: ; 0x0200E508
stmdb sp!, {r4, lr}
mov r4, r1
ldr r1, [r4]
cmp r1, #0
bne _0200E520
bl sub_02003D60
_0200E520:
ldr r0, [r4, #4]
bl sub_02005EFC
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_0200E508
arm_func_start sub_0200E530
sub_0200E530: ; 0x0200E530
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, #1
mov r5, #0xd
mov r4, #0
b _0200E550
_0200E548:
mov r0, r6
bl sub_02003BF4
_0200E550:
mov r0, r5
mov r1, r7
mov r2, r4
bl sub_020065F8
cmp r0, #0
bne _0200E548
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_0200E530
arm_func_start sub_0200E570
sub_0200E570: ; 0x0200E570
stmdb sp!, {r3, lr}
bl sub_02005310
bl sub_02005534
ldr r0, _0200E5F8 ; =0x0380B294
bl sub_02005588
ldr r0, _0200E5FC ; =0x0380B264
ldr r1, [r0, #0x14]
cmp r1, #0
bne _0200E5F0
mov r1, #1
str r1, [r0, #0x14]
bl sub_0200E280
bl sub_02003DE4
mvn r1, #2
cmp r0, r1
beq _0200E5F0
ldr r1, _0200E5FC ; =0x0380B264
strh r0, [r1]
bl sub_0200649C
ldr r1, _0200E600 ; =0x0380659C
mov r0, #0xd
bl sub_02006584
bl sub_0200E610
ldr r1, _0200E604 ; =0x038065CC
mov r0, #0xd
bl sub_02006584
ldr r1, _0200E608 ; =0x03806600
mov r0, #0x10
bl sub_02006584
ldr r1, _0200E60C ; =0x03806944
mov r0, #0x11
bl sub_02006584
_0200E5F0:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200E5F8: .word 0x0380B294
_0200E5FC: .word 0x0380B264
_0200E600: .word 0x0380659C
_0200E604: .word 0x038065CC
_0200E608: .word 0x03806600
_0200E60C: .word 0x03806944
arm_func_end sub_0200E570
arm_func_start sub_0200E610
sub_0200E610: ; 0x0200E610
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r0, _0200E76C ; =0x0380B264
ldr r1, [r0, #8]
cmp r1, #0
bne _0200E764
ldr r1, _0200E770 ; =0x04000300
mov r2, #1
ldrh r1, [r1]
str r2, [r0, #8]
tst r1, #1
beq _0200E764
mov r0, #0x40000
bl sub_02003A8C
ldr r2, _0200E774 ; =0x04000208
mov r1, #1
ldrh sb, [r2]
ldr r5, _0200E76C ; =0x0380B264
mov r4, r0
strh r1, [r2]
mov r6, #0x100
b _0200E66C
_0200E664:
mov r0, r6
bl sub_02003BF4
_0200E66C:
ldr r0, [r5, #0x28]
cmp r0, #1
bne _0200E664
ldr r0, _0200E76C ; =0x0380B264
mov r1, #0x8000000
ldr r2, [r0, #0x18]
ldr r0, _0200E778 ; =0x01FFFFC0
add r8, r1, #4
and r0, r2, r0
mov r0, r0, lsr #6
mov r0, r0, lsl #5
add r5, r0, #0x2000000
mov r6, #1
bl sub_02003DE4
mov r0, r0, lsl #0x10
mov r7, r0, lsr #0x10
mov r0, r7
bl sub_02003CF0
ldr ip, _0200E77C ; =0x0000FFFF
mov sl, #0
eor r0, ip, #3
eor r1, ip, #0x84
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov r2, r0, lsr #0x10
mov r3, r1, lsr #0x10
b _0200E714
_0200E6D8:
mov lr, ip
cmp sl, #0x4c
moveq lr, r3
beq _0200E6F0
cmp sl, #0x4d
moveq lr, r2
_0200E6F0:
add r0, r5, sl, lsl #1
mov r1, sl, lsl #1
ldrh r0, [r0, #4]
ldrh r1, [r8, r1]
and r0, lr, r0
cmp r0, r1
movne r6, #0
bne _0200E71C
add sl, sl, #1
_0200E714:
cmp sl, #0x4e
blt _0200E6D8
_0200E71C:
mov r0, r7
bl sub_02003D60
mov r0, r7
bl sub_02003E8C
ldr r2, _0200E780 ; =0x027FFC30
and r0, r6, #0xff
ldrb r1, [r2, #5]
and r0, r0, #1
bic r1, r1, #1
orr r1, r1, r0
mov r0, #1
strb r1, [r2, #5]
bl sub_0200E530
ldr r2, _0200E774 ; =0x04000208
mov r0, r4
ldrh r1, [r2]
strh sb, [r2]
bl sub_02003A8C
_0200E764:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_0200E76C: .word 0x0380B264
_0200E770: .word 0x04000300
_0200E774: .word 0x04000208
_0200E778: .word 0x01FFFFC0
_0200E77C: .word 0x0000FFFF
_0200E780: .word 0x027FFC30
arm_func_end sub_0200E610
arm_func_start sub_0200E784
sub_0200E784: ; 0x0200E784
stmdb sp!, {r3, lr}
and r0, r1, #0x3f
cmp r0, #1
ldreq r0, _0200E7B0 ; =0x0380B264
moveq r2, #1
streq r1, [r0, #0x18]
streq r2, [r0, #0x28]
beq _0200E7A8
bl sub_02006058
_0200E7A8:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200E7B0: .word 0x0380B264
arm_func_end sub_0200E784
arm_func_start sub_0200E7B4
sub_0200E7B4: ; 0x0200E7B4
stmdb sp!, {r3, lr}
and r0, r1, #0x3f
cmp r0, #2
bne _0200E7DC
mov r0, #0
bl sub_0200E7F8
bl sub_020068F0
bl sub_0200D474
bl sub_02006058
b _0200E7E0
_0200E7DC:
bl sub_02006058
_0200E7E0:
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_0200E7B4
arm_func_start sub_0200E7E8
sub_0200E7E8: ; 0x0200E7E8
ldr ip, _0200E7F4 ; =sub_03806610
mov r0, r1
bx ip
.align 2, 0
_0200E7F4: .word sub_03806610
arm_func_end sub_0200E7E8
arm_func_start sub_0200E7F8
sub_0200E7F8: ; 0x0200E7F8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
movs r5, r0
beq _0200E834
ldr r0, [r5]
cmp r0, #0
bne _0200E834
ldr r0, [r5, #0x44]
add r0, r0, #1
str r0, [r5, #0x44]
ldr r1, [r5, #0x40]
cmp r1, #0
beq _0200E834
ldr r0, [r5, #0x44]
cmp r0, r1
movhi r5, #0
_0200E834:
cmp r5, #0
ldrne r0, [r5, #0x3c]
cmpne r0, #0
bne _0200E8D8
bl sub_02005EE8
ldr r4, _0200EA14 ; =0x0380B264
mov sb, r0
ldr r0, [r4, #4]
cmp r0, #2
bne _0200E8C4
mov sl, #0
ldr r7, _0200EA18 ; =0x027FFFE8
ldr r5, _0200EA1C ; =0x08001000
mov r6, sl
mov fp, #1
b _0200E8BC
_0200E874:
mov r0, r7
bl sub_02003DDC
ands r8, r0, #0x80
bne _0200E894
ldrh r0, [r4]
bl sub_02003D6C
cmp r0, #0
bne _0200E8B4
_0200E894:
str r6, [r4, #4]
mov sl, fp
strh r6, [r5]
cmp r8, #0
bne _0200E8BC
ldrh r0, [r4]
bl sub_02003D40
b _0200E8BC
_0200E8B4:
ldr r0, _0200EA20 ; =0x000080E8
bl sub_02005F4C
_0200E8BC:
cmp sl, #0
beq _0200E874
_0200E8C4:
ldr r0, _0200EA24 ; =0x0380B294
bl sub_020057A8
mov r0, sb
bl sub_02005EFC
b _0200EA0C
_0200E8D8:
cmp r5, #0
beq _0200EA0C
ldr r0, _0200EA18 ; =0x027FFFE8
bl sub_02003DDC
ands r4, r0, #0x80
bne _0200E904
ldr r0, _0200EA14 ; =0x0380B264
ldrh r0, [r0]
bl sub_02003D6C
cmp r0, #0
bne _0200E9F4
_0200E904:
ldr r1, [r5]
ldr r0, [r5, #4]
cmp r1, r0
bne _0200E94C
ldr r0, _0200EA14 ; =0x0380B264
mov r2, #0
ldr r1, _0200EA1C ; =0x08001000
str r2, [r0, #4]
strh r2, [r1]
str r5, [sp]
ldr r1, [r5, #8]
ldr r0, _0200EA24 ; =0x0380B294
ldr r3, _0200EA28 ; =0x03806610
mov r2, #0
bl sub_020056C4
mov r0, #0
str r0, [r5]
b _0200E9DC
_0200E94C:
tst r1, #1
ldr r1, _0200EA1C ; =0x08001000
beq _0200E99C
ldr r0, _0200EA14 ; =0x0380B264
mov r2, #0
str r2, [r0, #4]
strh r2, [r1]
str r5, [sp]
ldr r1, [r5]
ldr r0, _0200EA24 ; =0x0380B294
mov r1, r1, lsr #1
add r1, r5, r1, lsl #2
ldr r1, [r1, #0x24]
ldr r3, _0200EA28 ; =0x03806610
mov r2, #0
bl sub_020056C4
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _0200E9DC
_0200E99C:
ldr r0, _0200EA14 ; =0x0380B264
mov r2, #2
str r2, [r0, #4]
strh r2, [r1]
str r5, [sp]
ldr r1, [r5]
ldr r0, _0200EA24 ; =0x0380B294
mov r1, r1, lsr #1
add r1, r5, r1, lsl #2
ldr r1, [r1, #0xc]
ldr r3, _0200EA28 ; =0x03806610
mov r2, #0
bl sub_020056C4
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
_0200E9DC:
cmp r4, #0
bne _0200EA0C
ldr r0, _0200EA14 ; =0x0380B264
ldrh r0, [r0]
bl sub_02003D40
b _0200EA0C
_0200E9F4:
ldr r0, _0200EA24 ; =0x0380B294
ldr r1, _0200EA2C ; =0x0000020B
ldr r3, _0200EA28 ; =0x03806610
mov r2, #0
str r5, [sp]
bl sub_020056C4
_0200EA0C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0200EA14: .word 0x0380B264
_0200EA18: .word 0x027FFFE8
_0200EA1C: .word 0x08001000
_0200EA20: .word 0x000080E8
_0200EA24: .word 0x0380B294
_0200EA28: .word 0x03806610
_0200EA2C: .word 0x0000020B
arm_func_end sub_0200E7F8
arm_func_start sub_0200EA30
sub_0200EA30: ; 0x0200EA30
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _0200EB20 ; =0x03807600
mvn r0, #0
ldr r3, [r1, #4]
cmp r3, r0
ldreq r0, _0200EB24 ; =0x027FFC3C
ldreq r0, [r0]
addeq r0, r0, #0xa
streq r0, [r1, #4]
beq _0200EB18
ldr r0, _0200EB28 ; =0x0380B264
ldr r2, [r0, #0x10]
cmp r2, #0
ldreq r0, [r0, #0xc]
cmpeq r0, #0
bne _0200EB18
ldr r2, _0200EB24 ; =0x027FFC3C
ldr r0, [r2]
cmp r0, r3
blo _0200EB18
ldr r0, [r2]
add r0, r0, #0xa
str r0, [r1, #4]
bl sub_0200E2C8
ldr r1, _0200EB28 ; =0x0380B264
str r0, [r1, #0xc]
bl sub_0200E318
cmp r0, #0
bne _0200EAC8
ldr r0, _0200EB20 ; =0x03807600
mov r1, #1
ldr r0, [r0]
cmp r0, #0
ldrne r0, _0200EB28 ; =0x0380B264
strne r1, [r0, #0x10]
bne _0200EB18
ldr r0, _0200EB28 ; =0x0380B264
str r1, [r0, #0xc]
_0200EAC8:
ldr r0, _0200EB28 ; =0x0380B264
ldr r1, _0200EB20 ; =0x03807600
ldr r0, [r0, #0xc]
mov r2, #0
str r2, [r1]
cmp r0, #0
beq _0200EB18
mov r7, #0x64
mov r6, #0xd
mov r5, #0x11
mov r4, r2
b _0200EB00
_0200EAF8:
mov r0, r7
bl sub_02004650
_0200EB00:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_020065F8
cmp r0, #0
bne _0200EAF8
_0200EB18:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0200EB20: .word 0x03807600
_0200EB24: .word 0x027FFC3C
_0200EB28: .word 0x0380B264
arm_func_end sub_0200EA30
arm_func_start sub_0200EB2C
sub_0200EB2C: ; 0x0200EB2C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
and r0, r1, #0x3f
cmp r0, #3
bne _0200EB94
ldr r3, _0200EBA0 ; =0x04000204
ldr r0, _0200EBA4 ; =0x01FFFFC0
ldrh r2, [r3]
and r0, r1, r0
mov r1, r0, lsr #6
bic r0, r2, #0x60
orr r0, r0, r1, lsl #5
strh r0, [r3]
mov r7, #1
mov r6, #0x11
mov r5, #0x12
mov r4, #0
b _0200EB78
_0200EB70:
mov r0, r7
bl sub_02003BF4
_0200EB78:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_020065F8
cmp r0, #0
bne _0200EB70
b _0200EB98
_0200EB94:
bl sub_02006058
_0200EB98:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0200EBA0: .word 0x04000204
_0200EBA4: .word 0x01FFFFC0
arm_func_end sub_0200EB2C
arm_func_start sub_0200EBA8
sub_0200EBA8: ; 0x0200EBA8
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
mov r4, r1
orr r4, r4, #1
b _0200EBC8
arm_func_end sub_0200EBA8
arm_func_start sub_0200EBB8
sub_0200EBB8: ; 0x0200EBB8
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
eor r4, r1, r3
mov r4, r4, asr #1
mov r4, r4, lsl #1
_0200EBC8:
orrs r5, r3, r2
bne _0200EBD8
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
_0200EBD8:
mov r5, r0, lsr #0x1f
add r5, r5, r1
mov r6, r2, lsr #0x1f
add r6, r6, r3
orrs r6, r5, r6
bne _0200EC0C
mov r1, r2
bl sub_0200EDB0
ands r4, r4, #1
movne r0, r1
mov r1, r0, asr #0x1f
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
_0200EC0C:
cmp r1, #0
bge _0200EC1C
rsbs r0, r0, #0
rsc r1, r1, #0
_0200EC1C:
cmp r3, #0
bge _0200EC2C
rsbs r2, r2, #0
rsc r3, r3, #0
_0200EC2C:
orrs r5, r1, r0
beq _0200ED50
mov r5, #0
mov r6, #1
cmp r3, #0
bmi _0200EC58
_0200EC44:
add r5, r5, #1
adds r2, r2, r2
adcs r3, r3, r3
bpl _0200EC44
add r6, r6, r5
_0200EC58:
cmp r1, #0
blt _0200EC78
_0200EC60:
cmp r6, #1
beq _0200EC78
sub r6, r6, #1
adds r0, r0, r0
adcs r1, r1, r1
bpl _0200EC60
_0200EC78:
mov r7, #0
mov ip, #0
mov fp, #0
b _0200ECA0
_0200EC88:
orr ip, ip, #1
subs r6, r6, #1
beq _0200ECF8
adds r0, r0, r0
adcs r1, r1, r1
adcs r7, r7, r7
_0200ECA0:
subs r0, r0, r2
sbcs r1, r1, r3
sbcs r7, r7, #0
adds ip, ip, ip
adc fp, fp, fp
cmp r7, #0
bge _0200EC88
_0200ECBC:
subs r6, r6, #1
beq _0200ECF0
adds r0, r0, r0
adcs r1, r1, r1
adc r7, r7, r7
adds r0, r0, r2
adcs r1, r1, r3
adc r7, r7, #0
adds ip, ip, ip
adc fp, fp, fp
cmp r7, #0
bge _0200EC88
b _0200ECBC
_0200ECF0:
adds r0, r0, r2
adc r1, r1, r3
_0200ECF8:
ands r7, r4, #1
moveq r0, ip
moveq r1, fp
beq _0200ED30
subs r7, r5, #0x20
movge r0, r1, lsr r7
bge _0200ED54
rsb r7, r5, #0x20
mov r0, r0, lsr r5
orr r0, r0, r1, lsl r7
mov r1, r1, lsr r5
b _0200ED30
_0200ED28:
mov r0, r1, lsr r7
mov r1, #0
_0200ED30:
cmp r4, #0
blt _0200ED40
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
_0200ED40:
rsbs r0, r0, #0
rsc r1, r1, #0
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
_0200ED50:
mov r0, #0
_0200ED54:
mov r1, #0
cmp r4, #0
blt _0200ED40
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
arm_func_end sub_0200EBB8
arm_func_start sub_0200ED68
sub_0200ED68: ; 0x0200ED68
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
mov r4, #0
b _0200ED7C
_0200ED74:
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
mov r4, #1
_0200ED7C:
orrs r5, r3, r2
bne _0200ED8C
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
_0200ED8C:
orrs r5, r1, r3
bne _0200EC2C
mov r1, r2
bl sub_0200EFC4
cmp r4, #0
movne r0, r1
mov r1, #0
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
bx lr
arm_func_end sub_0200ED68
arm_func_start sub_0200EDB0
sub_0200EDB0: ; 0x0200EDB0
eor ip, r0, r1
and ip, ip, #0x80000000
cmp r0, #0
rsblt r0, r0, #0
addlt ip, ip, #1
cmp r1, #0
rsblt r1, r1, #0
beq _0200EFA8
cmp r0, r1
movlo r1, r0
movlo r0, #0
blo _0200EFA8
mov r2, #0x1c
mov r3, r0, lsr #4
cmp r1, r3, lsr #12
suble r2, r2, #0x10
movle r3, r3, lsr #0x10
cmp r1, r3, lsr #4
suble r2, r2, #8
movle r3, r3, lsr #8
cmp r1, r3
suble r2, r2, #4
movle r3, r3, lsr #4
mov r0, r0, lsl r2
rsb r1, r1, #0
adds r0, r0, r0
add r2, r2, r2, lsl #1
add pc, pc, r2, lsl #2
mov r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
mov r1, r3
_0200EFA8:
ands r3, ip, #0x80000000
rsbne r0, r0, #0
ands r3, ip, #1
rsbne r1, r1, #0
bx lr
arm_func_end sub_0200EDB0
arm_func_start sub_0200EFBC
sub_0200EFBC: ; 0x0200EFBC
cmp r1, #0
bxeq lr
arm_func_end sub_0200EFBC
arm_func_start sub_0200EFC4
sub_0200EFC4: ; 0x0200EFC4
cmp r0, r1
movlo r1, r0
movlo r0, #0
bxlo lr
mov r2, #0x1c
mov r3, r0, lsr #4
cmp r1, r3, lsr #12
suble r2, r2, #0x10
movle r3, r3, lsr #0x10
cmp r1, r3, lsr #4
suble r2, r2, #8
movle r3, r3, lsr #8
cmp r1, r3
suble r2, r2, #4
movle r3, r3, lsr #4
mov r0, r0, lsl r2
rsb r1, r1, #0
adds r0, r0, r0
add r2, r2, r2, lsl #1
add pc, pc, r2, lsl #2
mov r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
adcs r3, r1, r3, lsl #1
sublo r3, r3, r1
adcs r0, r0, r0
mov r1, r3
bx lr
arm_func_end sub_0200EFC4
_0200F1A0:
.byte 0x00, 0x06, 0x0C, 0x13, 0x19, 0x1F, 0x25, 0x2B, 0x31, 0x36, 0x3C, 0x41, 0x47, 0x4C, 0x51, 0x55
.byte 0x5A, 0x5E, 0x62, 0x66, 0x6A, 0x6D, 0x70, 0x73, 0x75, 0x78, 0x7A, 0x7B, 0x7D, 0x7E, 0x7E, 0x7F
.byte 0x7F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2E, 0xFD, 0x2F, 0xFD, 0x75, 0xFD, 0xA7, 0xFD, 0xCE, 0xFD
.byte 0xEE, 0xFD, 0x09, 0xFE, 0x20, 0xFE, 0x34, 0xFE, 0x46, 0xFE, 0x57, 0xFE, 0x66, 0xFE, 0x74, 0xFE
.byte 0x81, 0xFE, 0x8D, 0xFE, 0x98, 0xFE, 0xA3, 0xFE, 0xAD, 0xFE, 0xB6, 0xFE, 0xBF, 0xFE, 0xC7, 0xFE
.byte 0xCF, 0xFE, 0xD7, 0xFE, 0xDF, 0xFE, 0xE6, 0xFE, 0xEC, 0xFE, 0xF3, 0xFE, 0xF9, 0xFE, 0xFF, 0xFE
.byte 0x05, 0xFF, 0x0B, 0xFF, 0x11, 0xFF, 0x16, 0xFF, 0x1B, 0xFF, 0x20, 0xFF, 0x25, 0xFF, 0x2A, 0xFF
.byte 0x2E, 0xFF, 0x33, 0xFF, 0x37, 0xFF, 0x3C, 0xFF, 0x40, 0xFF, 0x44, 0xFF, 0x48, 0xFF, 0x4C, 0xFF
.byte 0x50, 0xFF, 0x53, 0xFF, 0x57, 0xFF, 0x5B, 0xFF, 0x5E, 0xFF, 0x62, 0xFF, 0x65, 0xFF, 0x68, 0xFF
.byte 0x6B, 0xFF, 0x6F, 0xFF, 0x72, 0xFF, 0x75, 0xFF, 0x78, 0xFF, 0x7B, 0xFF, 0x7E, 0xFF, 0x81, 0xFF
.byte 0x83, 0xFF, 0x86, 0xFF, 0x89, 0xFF, 0x8C, 0xFF, 0x8E, 0xFF, 0x91, 0xFF, 0x93, 0xFF, 0x96, 0xFF
.byte 0x99, 0xFF, 0x9B, 0xFF, 0x9D, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA5, 0xFF, 0xA7, 0xFF, 0xA9, 0xFF
.byte 0xAB, 0xFF, 0xAE, 0xFF, 0xB0, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF, 0xB6, 0xFF, 0xB8, 0xFF, 0xBA, 0xFF
.byte 0xBC, 0xFF, 0xBE, 0xFF, 0xC0, 0xFF, 0xC2, 0xFF, 0xC4, 0xFF, 0xC6, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF
.byte 0xCC, 0xFF, 0xCE, 0xFF, 0xCF, 0xFF, 0xD1, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF, 0xD6, 0xFF, 0xD8, 0xFF
.byte 0xDA, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF, 0xDF, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF
.byte 0xE7, 0xFF, 0xE9, 0xFF, 0xEA, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF2, 0xFF
.byte 0xF3, 0xFF, 0xF5, 0xFF, 0xF6, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF, 0xFA, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF
.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0x5B, 0xFE, 0x97, 0xFE, 0xBB, 0xFE, 0xD4, 0xFE, 0xE7, 0xFE
.byte 0xF7, 0xFE, 0x04, 0xFF, 0x10, 0xFF, 0x1A, 0xFF, 0x23, 0xFF, 0x2C, 0xFF, 0x33, 0xFF, 0x3A, 0xFF
.byte 0x40, 0xFF, 0x46, 0xFF, 0x4C, 0xFF, 0x51, 0xFF, 0x56, 0xFF, 0x5B, 0xFF, 0x5F, 0xFF, 0x64, 0xFF
.byte 0x68, 0xFF, 0x6C, 0xFF, 0x6F, 0xFF, 0x73, 0xFF, 0x76, 0xFF, 0x7A, 0xFF, 0x7D, 0xFF, 0x80, 0xFF
.byte 0x83, 0xFF, 0x86, 0xFF, 0x88, 0xFF, 0x8B, 0xFF, 0x8E, 0xFF, 0x90, 0xFF, 0x92, 0xFF, 0x95, 0xFF
.byte 0x97, 0xFF, 0x99, 0xFF, 0x9C, 0xFF, 0x9E, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA4, 0xFF, 0xA6, 0xFF
.byte 0xA8, 0xFF, 0xAA, 0xFF, 0xAB, 0xFF, 0xAD, 0xFF, 0xAF, 0xFF, 0xB1, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF
.byte 0xB6, 0xFF, 0xB7, 0xFF, 0xB9, 0xFF, 0xBA, 0xFF, 0xBC, 0xFF, 0xBD, 0xFF, 0xBF, 0xFF, 0xC0, 0xFF
.byte 0xC2, 0xFF, 0xC3, 0xFF, 0xC4, 0xFF, 0xC6, 0xFF, 0xC7, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF, 0xCB, 0xFF
.byte 0xCC, 0xFF, 0xCD, 0xFF, 0xCF, 0xFF, 0xD0, 0xFF, 0xD1, 0xFF, 0xD2, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF
.byte 0xD6, 0xFF, 0xD7, 0xFF, 0xD8, 0xFF, 0xD9, 0xFF, 0xDA, 0xFF, 0xDB, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF
.byte 0xDE, 0xFF, 0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE3, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF
.byte 0xE6, 0xFF, 0xE7, 0xFF, 0xE8, 0xFF, 0xE9, 0xFF, 0xE9, 0xFF, 0xEA, 0xFF, 0xEB, 0xFF, 0xEC, 0xFF
.byte 0xED, 0xFF, 0xEE, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF1, 0xFF, 0xF2, 0xFF, 0xF3, 0xFF
.byte 0xF4, 0xFF, 0xF4, 0xFF, 0xF5, 0xFF, 0xF6, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF
.byte 0xFA, 0xFF, 0xFA, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF
.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x05, 0x06, 0x07, 0x02, 0x00, 0x03, 0x01
.byte 0x08, 0x09, 0x0A, 0x0B, 0x0E, 0x0C, 0x0F, 0x0D, 0x00, 0x01, 0x05, 0x0E, 0x1A, 0x26, 0x33, 0x3F
.byte 0x49, 0x54, 0x5C, 0x64, 0x6D, 0x74, 0x7B, 0x7F, 0x84, 0x89, 0x8F, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0xC7, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x13, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
.byte 0x00, 0x02, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x00, 0x20, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x16, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x80, 0x00, 0x17, 0x00, 0x00, 0x00
arm_func_start sub_0200F4A8
sub_0200F4A8: ; 0x0200F4A8
mov ip, #0x4000000
str ip, [ip, #0x208]
ldr r1, _0200F510 ; =0x0380FFFC
mov r0, #0
str r0, [r1]
ldr r1, _0200F514 ; =0x04000180
mov r0, #0x100
strh r0, [r1]
_0200F4C8:
ldrh r0, [r1]
and r0, r0, #0xf
cmp r0, #1
bne _0200F4C8
ldr r1, _0200F514 ; =0x04000180
mov r0, #0
strh r0, [r1]
_0200F4E4:
ldrh r0, [r1]
cmp r0, #1
beq _0200F4E4
ldr r3, _0200F518 ; =0x027FFE00
ldr ip, [r3, #0x34]
mov lr, ip
mov r0, #0
mov r1, #0
mov r2, #0
mov r3, #0
bx ip
.align 2, 0
_0200F510: .word 0x0380FFFC
_0200F514: .word 0x04000180
_0200F518: .word 0x027FFE00
arm_func_end sub_0200F4A8
_0200F51C:
.byte 0xF8, 0x40, 0x2D, 0xE9
.byte 0x00, 0x70, 0xA0, 0xE1, 0x01, 0x6C, 0xA0, 0xE3, 0x0A, 0x50, 0xA0, 0xE3, 0x00, 0x40, 0xA0, 0xE3
.byte 0x01, 0x00, 0x00, 0xEA, 0x06, 0x00, 0xA0, 0xE1, 0xAD, 0xD1, 0xFF, 0xEB, 0x05, 0x00, 0xA0, 0xE1
.byte 0x07, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0x2A, 0xDC, 0xFF, 0xEB, 0x00, 0x00, 0x50, 0xE3
.byte 0xF7, 0xFF, 0xFF, 0xBA, 0x08, 0x00, 0x9F, 0xE5, 0x65, 0xD5, 0xFF, 0xEB, 0xF8, 0x40, 0xBD, 0xE8
.byte 0x1E, 0xFF, 0x2F, 0xE1, 0xA0, 0x8D, 0x7F, 0x02, 0x38, 0x40, 0x2D, 0xE9, 0x3C, 0x00, 0x9F, 0xE5
.byte 0x3E, 0xD5, 0xFF, 0xEB, 0x38, 0x40, 0x9F, 0xE5, 0x01, 0x5C, 0xA0, 0xE3, 0x01, 0x00, 0x00, 0xEA
.byte 0x05, 0x00, 0xA0, 0xE1, 0x9A, 0xD1, 0xFF, 0xEB, 0xB0, 0x10, 0xD4, 0xE1, 0x01, 0x00, 0x11, 0xE3
.byte 0xFA, 0xFF, 0xFF, 0x1A, 0x1C, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0x81, 0xE3, 0xB0, 0x10, 0xC4, 0xE1
.byte 0x4C, 0x05, 0x90, 0xE5, 0x08, 0x00, 0x90, 0xE5, 0x38, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1
.byte 0xA0, 0x8D, 0x7F, 0x02, 0x96, 0xFF, 0x7F, 0x02, 0x78, 0x88, 0x7F, 0x02
arm_func_start sub_0200F5BC
sub_0200F5BC: ; 0x0200F5BC
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _0200F6C4 ; =0x00001FFF
and r0, r0, r1
mov r0, r0, lsl #0x10
movs r2, r0, lsr #0x10
moveq r0, #0
beq _0200F6BC
mov r1, #0
mov r0, #1
b _0200F5F0
_0200F5E4:
tst r2, r0, lsl r1
bne _0200F5F8
add r1, r1, #1
_0200F5F0:
cmp r1, #0x10
blt _0200F5E4
_0200F5F8:
mov r0, #0xf
mov r3, #1
b _0200F610
_0200F604:
tst r2, r3, lsl r0
bne _0200F618
sub r0, r0, #1
_0200F610:
cmp r0, #0
bne _0200F604
_0200F618:
sub r6, r0, r1
cmp r6, #5
movlt r0, #1
movlt r0, r0, lsl r1
movlt r0, r0, lsl #0x10
movlt r0, r0, lsr #0x10
blt _0200F6BC
add r3, r0, r1
add r3, r3, r3, lsr #31
mov r4, r3, asr #1
mov r5, #0
mov lr, #1
b _0200F670
_0200F64C:
mov ip, r5, lsr #0x1f
rsb r3, ip, r5, lsl #31
add r3, ip, r3, ror #31
mov r3, r3, lsl #1
sub r3, r3, #1
mla r4, r5, r3, r4
tst r2, lr, lsl r4
bne _0200F678
add r5, r5, #1
_0200F670:
cmp r5, r6
blt _0200F64C
_0200F678:
sub r2, r0, r4
cmp r2, #5
subge r2, r4, r1
cmpge r2, #5
bge _0200F6A4
mov r2, #1
mov r0, r2, lsl r0
orr r0, r0, r2, lsl r1
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
b _0200F6BC
_0200F6A4:
mov r3, #1
mov r2, r3, lsl r4
orr r0, r2, r3, lsl r0
orr r0, r0, r3, lsl r1
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
_0200F6BC:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0200F6C4: .word 0x00001FFF
arm_func_end sub_0200F5BC
_0200F6C8:
.byte 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00
.byte 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xB7, 0x7F, 0x03
.byte 0x38, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03, 0x08, 0xB7, 0x7F, 0x03, 0x18, 0xB7, 0x7F, 0x03
.byte 0x28, 0xB7, 0x7F, 0x03, 0x38, 0xB7, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03, 0xC8, 0xB6, 0x7F, 0x03
.byte 0xD8, 0xB6, 0x7F, 0x03, 0xE8, 0xB6, 0x7F, 0x03, 0xF8, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03
.byte 0x38, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03
.byte 0x38, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03
.byte 0x38, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03, 0x38, 0xB6, 0x7F, 0x03
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x56, 0x34, 0x12, 0x00, 0xFE, 0x7F, 0x02, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA
.byte 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x08, 0x00, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE3, 0x0C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0xF0, 0xF0, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xF8
.byte 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0C, 0x00, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0xC0, 0xFF, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF
.byte 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x20, 0x00, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0xC3, 0x28, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x38, 0x40, 0x2D, 0xE9, 0x08, 0xD0, 0x4D, 0xE2, 0x01, 0x40, 0xA0, 0xE1, 0x00, 0x10, 0x94, 0xE5
.byte 0x74, 0x31, 0x9F, 0xE5, 0x00, 0x50, 0xA0, 0xE1, 0x40, 0x15, 0x83, 0xE5, 0x24, 0x10, 0x95, 0xE5
.byte 0x68, 0x01, 0x9F, 0xE5, 0x44, 0x15, 0x83, 0xE5, 0x28, 0x20, 0x95, 0xE5, 0x60, 0x11, 0x9F, 0xE5
.byte 0x48, 0x25, 0x83, 0xE5, 0x00, 0xC0, 0xA0, 0xE3, 0x4C, 0xC5, 0x83, 0xE5, 0x02, 0x20, 0xA0, 0xE3
.byte 0x50, 0xC5, 0x83, 0xE5, 0x98, 0x71, 0x40, 0xEB, 0x48, 0x01, 0x9F, 0xE5, 0x48, 0x11, 0x9F, 0xE5
.byte 0x04, 0x20, 0xA0, 0xE3, 0x94, 0x71, 0x40, 0xEB, 0x40, 0x01, 0x9F, 0xE5, 0x40, 0x11, 0x9F, 0xE5
.byte 0x04, 0x20, 0xA0, 0xE3, 0x90, 0x71, 0x40, 0xEB, 0x38, 0x01, 0x9F, 0xE5, 0x38, 0x11, 0x9F, 0xE5
.byte 0x20, 0x20, 0xA0, 0xE3, 0x8C, 0x71, 0x40, 0xEB, 0x10, 0x11, 0x9F, 0xE5, 0x14, 0x01, 0x9F, 0xE5
.byte 0x10, 0x10, 0x85, 0xE5, 0x14, 0x00, 0x85, 0xE5, 0x08, 0x20, 0x94, 0xE5, 0xF8, 0x10, 0x9F, 0xE5
.byte 0x18, 0x01, 0x9F, 0xE5, 0x78, 0x25, 0x81, 0xE5, 0x18, 0x20, 0x94, 0xE5, 0x7C, 0x25, 0x81, 0xE5
.byte 0x10, 0x20, 0x94, 0xE5, 0x80, 0x25, 0x81, 0xE5, 0x04, 0x20, 0x94, 0xE5, 0x84, 0x25, 0x81, 0xE5
.byte 0x14, 0x20, 0x94, 0xE5, 0x88, 0x25, 0x81, 0xE5, 0x0C, 0x20, 0x94, 0xE5, 0x8C, 0x25, 0x81, 0xE5
.byte 0xEA, 0x71, 0x40, 0xEB, 0x01, 0x0B, 0xA0, 0xE3, 0x00, 0x00, 0x8D, 0xE5, 0x04, 0x10, 0x94, 0xE5
.byte 0xDC, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0x8D, 0xE5, 0xD8, 0x10, 0x9F, 0xE5, 0xCC, 0x30, 0x9F, 0xE5
.byte 0x00, 0x20, 0xA0, 0xE3, 0xDA, 0x6F, 0x40, 0xEB, 0xC4, 0x00, 0x9F, 0xE5, 0x9E, 0x70, 0x40, 0xEB
.byte 0x01, 0x0A, 0xA0, 0xE3, 0x00, 0x00, 0x8D, 0xE5, 0x0C, 0x10, 0x94, 0xE5, 0xB8, 0x00, 0x9F, 0xE5
.byte 0x04, 0x10, 0x8D, 0xE5, 0xB4, 0x10, 0x9F, 0xE5, 0xB4, 0x30, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3
.byte 0xCF, 0x6F, 0x40, 0xEB, 0xA0, 0x00, 0x9F, 0xE5, 0x93, 0x70, 0x40, 0xEB, 0x00, 0x30, 0xA0, 0xE3
.byte 0x68, 0x10, 0x9F, 0xE5, 0x03, 0x20, 0xA0, 0xE1, 0x03, 0x00, 0x81, 0xE0, 0x01, 0x0A, 0x80, 0xE2
.byte 0x01, 0x30, 0x83, 0xE2, 0x54, 0x25, 0xC0, 0xE5, 0x20, 0x00, 0x53, 0xE3, 0xF9, 0xFF, 0xFF, 0xBA
.byte 0x44, 0x00, 0x9F, 0xE5, 0x74, 0x25, 0x80, 0xE5, 0x92, 0x75, 0x40, 0xEB, 0x00, 0x00, 0x50, 0xE3
.byte 0x00, 0x00, 0x00, 0x1A, 0x7C, 0x75, 0x40, 0xEB, 0x55, 0x78, 0x40, 0xEB, 0x64, 0x10, 0x9F, 0xE5
.byte 0x0A, 0x00, 0xA0, 0xE3, 0x8C, 0x78, 0x40, 0xEB, 0x02, 0x00, 0xA0, 0xE3, 0x18, 0x00, 0x85, 0xE5
.byte 0x14, 0x10, 0x94, 0xE5, 0x05, 0x00, 0xA0, 0xE1, 0x0C, 0x10, 0x85, 0xE5, 0x17, 0x22, 0x00, 0xEB
.byte 0x08, 0xD0, 0x8D, 0xE2, 0x38, 0x40, 0xBD, 0xE8, 0x1E, 0xFF, 0x2F, 0xE1, 0x78, 0x88, 0x7F, 0x02
.byte 0x78, 0x78, 0x7F, 0x02, 0x98, 0x78, 0x7F, 0x02, 0xA0, 0x78, 0x7F, 0x02, 0xC0, 0x78, 0x7F, 0x02
.byte 0xD0, 0x78, 0x7F, 0x02, 0xF0, 0x78, 0x7F, 0x02, 0x00, 0x79, 0x7F, 0x02, 0x20, 0x79, 0x7F, 0x02
.byte 0xA0, 0x8D, 0x7F, 0x02, 0x64, 0xB3, 0x80, 0x03, 0x98, 0x08, 0x7E, 0x02, 0xC0, 0xB2, 0x80, 0x03
.byte 0xC0, 0x1C, 0x7E, 0x02, 0xA0, 0x89, 0x7F, 0x02, 0x44, 0x02, 0x7E, 0x02
arm_func_start sub_0200F9BC
sub_0200F9BC: ; 0x0200F9BC
stmdb sp!, {r3, lr}
mov r1, r0
ldr r0, _0200FA2C ; =0x027F7878
mov r2, #1
bl sub_0302BEC4
ldr r0, _0200FA30 ; =0x027F78D0
add r1, sp, #0
mov r2, #1
bl sub_0302BF50
ldr r1, [sp]
ldrh r0, [r1, #0xe]
add r0, r1, r0, lsl #1
ldrh r0, [r0, #0x14]
cmp r0, #0xe
bne _0200FA20
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #0x13
strh r1, [r0, #2]
mov r1, #0x18
strh r1, [r0, #4]
bl sub_03036B24
bl sub_0302DEF8
bl sub_0302D660
_0200FA20:
ldr r0, [sp]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0200FA2C: .word 0x027F7878
_0200FA30: .word 0x027F78D0
arm_func_end sub_0200F9BC
arm_func_start sub_0200FA34
sub_0200FA34: ; 0x0200FA34
stmdb sp!, {r4, lr}
mov r4, r1
cmp r2, #0
bne _0200FA8C
ldr r0, _0200FA94 ; =0x027F7900
mov r2, #0
bl sub_0302BEC4
cmp r0, #0
bne _0200FA8C
ldr r0, _0200FA98 ; =0x027F8878
ldr r0, [r0, #0x54c]
cmp r0, #0
beq _0200FA8C
bl sub_03036B70
ldrh r2, [r4]
mov r1, #8
strh r2, [r0]
strh r1, [r0, #2]
mov r1, #0
strh r1, [r0, #4]
strh r1, [r0, #6]
bl sub_03036B24
_0200FA8C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200FA94: .word 0x027F7900
_0200FA98: .word 0x027F8878
arm_func_end sub_0200FA34
arm_func_start sub_0200FA9C
sub_0200FA9C: ; 0x0200FA9C
ldr r1, _0200FAF8 ; =0x027F8878
ldrb r2, [r0]
ldr r3, [r1, #0x550]
ldrb r1, [r3, #0xe0]
cmp r2, r1
ldreqb r2, [r0, #1]
ldreqb r1, [r3, #0xe1]
cmpeq r2, r1
ldreqb r2, [r0, #2]
ldreqb r1, [r3, #0xe2]
cmpeq r2, r1
ldreqb r2, [r0, #3]
ldreqb r1, [r3, #0xe3]
cmpeq r2, r1
ldreqb r2, [r0, #4]
ldreqb r1, [r3, #0xe4]
cmpeq r2, r1
ldreqb r1, [r0, #5]
ldreqb r0, [r3, #0xe5]
cmpeq r1, r0
moveq r0, #1
movne r0, #0
bx lr
.align 2, 0
_0200FAF8: .word 0x027F8878
arm_func_end sub_0200FA9C
arm_func_start sub_0200FAFC
sub_0200FAFC: ; 0x0200FAFC
stmdb sp!, {r3, lr}
ldr r3, [r1, #8]
mov r2, r0
str r3, [r2, #4]
ldrh r0, [r1, #0xc]
strh r0, [r2, #8]
ldrh r0, [r1, #0x12]
cmp r0, #0
movne r3, #2
ldrh r0, [r1, #0xe]
moveq r3, #0
cmp r0, #0
movne ip, #1
ldrh r0, [r1, #0x14]
moveq ip, #0
cmp r0, #0
movne lr, #4
moveq lr, #0
orr r0, ip, r3
orr r0, lr, r0
strb r0, [r2, #0xb]
ldrh r3, [r1, #4]
mov r0, #1
strb r3, [r2, #0xa]
strh r0, [r2]
strb r0, [r2, #2]
mov r0, #0
strb r0, [r2, #3]
ldrh r0, [r1, #0x34]
strh r0, [r2, #0xc]
ldrh r0, [r1, #0x12]
cmp r0, #0
beq _0200FB90
ldrh r0, [r1, #0x36]
cmp r0, #8
movhs r0, #8
bhs _0200FB94
_0200FB90:
ldrh r0, [r1, #0x36]
_0200FB94:
strh r0, [r2, #0xe]
ldrb r3, [r2, #0xa]
cmp r3, #0
beq _0200FBB8
ldr r0, [r1]
add r3, r3, #1
add r1, r2, #0x10
bic r2, r3, #1
bl sub_0302D91C
_0200FBB8:
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_0200FAFC
arm_func_start sub_0200FBC0
sub_0200FBC0: ; 0x0200FBC0
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _0200FD08 ; =0x027F8878
mov r5, r1
ldr r4, [r2, #0x550]
mov r6, r0
add r0, r4, #0xe0
add r1, r5, #0x10
mov r2, #6
bl sub_0302D91C
mov r0, #7
strh r0, [r5, #0x16]
add r0, r4, #0x100
ldrh r1, [r0, #0xf4]
strh r1, [r5, #0x18]
ldrh r1, [r0, #0xec]
strh r1, [r5, #0x1e]
ldrh r1, [r4, #0xe6]
strh r1, [r5, #0x1c]
ldr r1, [r4, #0x198]
cmp r1, #0
bne _0200FC34
mov r0, #0
strh r0, [r5, #0x20]
add r1, r5, #0x24
mov r2, #0x50
strh r0, [r5, #0x22]
bl sub_0302D764
mov r0, #0
b _0200FC58
_0200FC34:
ldrh r1, [r0, #0x96]
add r0, r4, #0x19c
strh r1, [r5, #0x20]
ldrh r2, [r4, #0xc4]
add r1, r5, #0x24
strh r2, [r5, #0x22]
mov r2, #0x50
bl sub_0302D91C
mov r0, #1
_0200FC58:
strh r0, [r5, #0x9e]
mov r0, #1
strh r0, [r5, #0x74]
strh r0, [r5, #0x76]
ldrh r0, [r4, #0xe6]
add r1, r5, #0x7c
cmp r0, #1
moveq r0, #0
movne r0, #0x10
strh r0, [r5, #0x78]
mov r0, #0xa
strh r0, [r5, #0x7a]
cmp r6, #0x26
mov r0, #0
bne _0200FCA0
mov r2, #0x20
bl sub_0302D764
b _0200FCB8
_0200FCA0:
mov r2, #8
bl sub_0302D764
ldr r0, _0200FD0C ; =0x0000FFFF
add r1, r5, #0x84
mov r2, #0x18
bl sub_0302D764
_0200FCB8:
add r0, r4, #0x100
ldrh r1, [r0, #0xee]
mov r0, r5
strh r1, [r5, #0x9c]
bl sub_02011BF4
ldrh r4, [r0, #4]
cmp r4, #0
moveq r0, #1
beq _0200FD00
bl sub_03036B70
strh r6, [r0]
mov r1, #1
strh r1, [r0, #2]
mov r1, #0x200
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
mov r0, #0
_0200FD00:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0200FD08: .word 0x027F8878
_0200FD0C: .word 0x0000FFFF
arm_func_end sub_0200FBC0
arm_func_start sub_0200FD10
sub_0200FD10: ; 0x0200FD10
ldr r1, _0200FD48 ; =0x027F8878
ldr r3, _0200FD4C ; =0x027F8DCC
ldr ip, [r1, #0x574]
ldr r2, _0200FD50 ; =0x027FFF98
strb r0, [r3, ip]
ldr r3, [r1, #0x574]
add r3, r3, #1
and r3, r3, #0x1f
str r3, [r1, #0x574]
ldrh r1, [r2]
eor r0, r0, r1, lsl #1
eor r0, r0, r0, lsr #16
strh r0, [r2]
bx lr
.align 2, 0
_0200FD48: .word 0x027F8878
_0200FD4C: .word 0x027F8DCC
_0200FD50: .word 0x027FFF98
arm_func_end sub_0200FD10
arm_func_start sub_0200FD54
sub_0200FD54: ; 0x0200FD54
ldr r2, _0200FD84 ; =0x027F7878
mov r3, #0
_0200FD5C:
add r1, r2, r3
add r1, r1, #0x1000
add r3, r3, #1
strb r0, [r1, #0x554]
cmp r3, #0x20
blt _0200FD5C
ldr r0, _0200FD88 ; =0x027F8878
mov r1, #0
str r1, [r0, #0x574]
bx lr
.align 2, 0
_0200FD84: .word 0x027F7878
_0200FD88: .word 0x027F8878
arm_func_end sub_0200FD54
arm_func_start sub_0200FD8C
sub_0200FD8C: ; 0x0200FD8C
ldr r1, _0200FDC0 ; =0x027F7878
mov r3, #0
mov r2, r3
_0200FD98:
add r0, r1, r2
add r0, r0, #0x1000
ldrb r0, [r0, #0x554]
add r2, r2, #1
cmp r2, #0x20
add r3, r3, r0
blt _0200FD98
ldr ip, _0200FDC4 ; =sub_027E05D8
mov r0, r3, lsr #5
bx ip
.align 2, 0
_0200FDC0: .word 0x027F7878
_0200FDC4: .word sub_027E05D8
arm_func_end sub_0200FD8C
arm_func_start sub_0200FDC8
sub_0200FDC8: ; 0x0200FDC8
ldr r1, _0200FE2C ; =0x027F8878
ldr r1, [r1, #0x54c]
ldrb r1, [r1, #0x53]
cmp r1, #8
bne _0200FE04
cmp r0, #0x16
movlo r0, #0
bxlo lr
cmp r0, #0x1c
movlo r0, #1
bxlo lr
cmp r0, #0x22
movlo r0, #2
movhs r0, #3
bx lr
_0200FE04:
cmp r0, #8
movlo r0, #0
bxlo lr
cmp r0, #0xe
movlo r0, #1
bxlo lr
cmp r0, #0x14
movlo r0, #2
movhs r0, #3
bx lr
.align 2, 0
_0200FE2C: .word 0x027F8878
arm_func_end sub_0200FDC8
arm_func_start sub_0200FE30
sub_0200FE30: ; 0x0200FE30
stmdb sp!, {r4, lr}
bl sub_0302D4F0
mov r4, r0
bl sub_0302BD48
ldr r1, _0200FE84 ; =0x027F8878
ldr r0, _0200FE88 ; =0x0380B2C0
ldr r1, [r1, #0x58c]
bl sub_0302BBB0
bl sub_020183A0
ldr r1, _0200FE84 ; =0x027F8878
ldr r1, [r1, #0x588]
bl sub_0302BBB0
ldr r1, _0200FE84 ; =0x027F8878
ldr r0, _0200FE8C ; =0x0380B364
ldr r1, [r1, #0x584]
bl sub_0302BBB0
bl sub_0302BD80
mov r0, r4
bl sub_0302D504
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200FE84: .word 0x027F8878
_0200FE88: .word 0x0380B2C0
_0200FE8C: .word 0x0380B364
arm_func_end sub_0200FE30
arm_func_start sub_0200FE90
sub_0200FE90: ; 0x0200FE90
stmdb sp!, {r4, lr}
bl sub_0302D4F0
mov r4, r0
bl sub_0302BD48
ldr r1, _0200FEE4 ; =0x027F8878
ldr r0, _0200FEE8 ; =0x0380B364
ldr r1, [r1, #0x578]
bl sub_0302BBB0
bl sub_020183A0
ldr r1, _0200FEE4 ; =0x027F8878
ldr r1, [r1, #0x57c]
bl sub_0302BBB0
ldr r1, _0200FEE4 ; =0x027F8878
ldr r0, _0200FEEC ; =0x0380B2C0
ldr r1, [r1, #0x580]
bl sub_0302BBB0
bl sub_0302BD80
mov r0, r4
bl sub_0302D504
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200FEE4: .word 0x027F8878
_0200FEE8: .word 0x0380B364
_0200FEEC: .word 0x0380B2C0
arm_func_end sub_0200FE90
arm_func_start sub_0200FEF0
sub_0200FEF0: ; 0x0200FEF0
stmdb sp!, {r4, lr}
mov r4, #0
bl sub_0302D4F0
ldr r1, _0200FF58 ; =0x027F8878
ldr r2, [r1, #0x54c]
cmp r2, #0
beq _0200FF48
mov r3, r4
b _0200FF40
_0200FF14:
add r1, r2, r3, lsl #4
ldr r1, [r1, #0xd0]
tst r1, #0x8000
beq _0200FF3C
add r2, r2, #0xd0
ldr r1, [r2, r3, lsl #4]
add r4, r2, r3, lsl #4
bic r1, r1, #0x8000
str r1, [r2, r3, lsl #4]
b _0200FF48
_0200FF3C:
add r3, r3, #1
_0200FF40:
cmp r3, #0x20
blt _0200FF14
_0200FF48:
bl sub_0302D504
mov r0, r4
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0200FF58: .word 0x027F8878
arm_func_end sub_0200FEF0
arm_func_start sub_0200FF5C
sub_0200FF5C: ; 0x0200FF5C
ldr r0, _0200FF8C ; =0x027F8878
mov r1, #0
ldr r0, [r0, #0x550]
strh r1, [r0, #0x38]
strh r1, [r0, #0x3a]
strh r1, [r0, #0x30]
strh r1, [r0, #0x32]
strh r1, [r0, #0x3c]
strh r1, [r0, #0x3e]
strh r1, [r0, #0x34]
strh r1, [r0, #0x36]
bx lr
.align 2, 0
_0200FF8C: .word 0x027F8878
arm_func_end sub_0200FF5C
arm_func_start sub_0200FF90
sub_0200FF90: ; 0x0200FF90
ldr r1, _0200FFDC ; =0x027F8878
cmp r0, #0x200
ldr r2, [r1, #0x550]
movhi r0, #0x200
strh r0, [r2, #0x30]
strh r0, [r2, #0x34]
add r1, r2, #0x100
ldrh r1, [r1, #0x88]
add r0, r0, #4
cmp r1, #0
moveq r0, r0, lsl #0x10
moveq r0, r0, lsr #0x10
streqh r0, [r2, #0x3c]
streqh r0, [r2, #0x38]
movne r0, r0, lsl #0x10
movne r0, r0, lsr #0x10
strneh r0, [r2, #0x3e]
strneh r0, [r2, #0x3a]
bx lr
.align 2, 0
_0200FFDC: .word 0x027F8878
arm_func_end sub_0200FF90
arm_func_start sub_0200FFE0
sub_0200FFE0: ; 0x0200FFE0
ldr r1, _0201002C ; =0x027F8878
cmp r0, #0x200
ldr r2, [r1, #0x550]
movhi r0, #0x200
strh r0, [r2, #0x36]
strh r0, [r2, #0x32]
add r1, r2, #0x100
ldrh r1, [r1, #0x88]
add r0, r0, #2
cmp r1, #0
moveq r0, r0, lsl #0x10
moveq r0, r0, lsr #0x10
streqh r0, [r2, #0x3e]
streqh r0, [r2, #0x3a]
movne r0, r0, lsl #0x10
movne r0, r0, lsr #0x10
strneh r0, [r2, #0x3c]
strneh r0, [r2, #0x38]
bx lr
.align 2, 0
_0201002C: .word 0x027F8878
arm_func_end sub_0200FFE0
arm_func_start sub_02010030
sub_02010030: ; 0x02010030
ldr r1, _02010058 ; =0x027F8878
ldr r2, [r1, #0x550]
strh r0, [r2, #0x30]
add r1, r2, #0x100
ldrh r1, [r1, #0x88]
add r0, r0, #4
cmp r1, #0
streqh r0, [r2, #0x38]
strneh r0, [r2, #0x3a]
bx lr
.align 2, 0
_02010058: .word 0x027F8878
arm_func_end sub_02010030
arm_func_start sub_0201005C
sub_0201005C: ; 0x0201005C
ldr r1, _02010084 ; =0x027F8878
ldr r2, [r1, #0x550]
strh r0, [r2, #0x32]
add r1, r2, #0x100
ldrh r1, [r1, #0x88]
add r0, r0, #2
cmp r1, #0
streqh r0, [r2, #0x3a]
strneh r0, [r2, #0x38]
bx lr
.align 2, 0
_02010084: .word 0x027F8878
arm_func_end sub_0201005C
arm_func_start sub_02010088
sub_02010088: ; 0x02010088
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x20
_02010090:
ldr r0, _02010EE0 ; =0x027F7878
add r1, sp, #0x1c
add r0, r0, #0x28
mov r2, #1
bl sub_0302BF50
ldr sb, [sp, #0x1c]
cmp sb, #0
bne _020100B8
bl sub_0302B94C
b _020111E0
_020100B8:
ldrh r1, [sb, #0xc]
and r0, r1, #0xff00
mov r0, r0, lsl #0x10
movs r0, r0, lsr #0x10
and r1, r1, #0xff
cmpne r0, #0x100
bne _020111C8
tst r1, #0x80
beq _020111C8
ldr r0, _02010EE4 ; =0x027F8878
ldr r1, [r0, #0x54c]
cmp r1, #0
ldrne r8, [r0, #0x550]
ldrneh r3, [r8]
cmpne r3, #1
beq _02010090
ldrh r2, [sb, #0xc]
ldr r1, _02010EE8 ; =0x00000182
cmp r2, r1
bgt _02010154
bge _0201080C
cmp r2, #0x8d
bgt _02010148
subs r0, r2, #0x84
addpl pc, pc, r0, lsl #2
b _020111BC
_02010120: ; jump table
b _02010180 ; case 0
b _020101A4 ; case 1
b _02010430 ; case 2
b _02010594 ; case 3
b _020105B8 ; case 4
b _020111BC ; case 5
b _020111BC ; case 6
b _020105DC ; case 7
b _0201060C ; case 8
b _0201063C ; case 9
_02010148:
cmp r2, #0x180
beq _02010754
b _020111BC
_02010154:
add r0, r1, #3
cmp r2, r0
bgt _02010170
bge _02010E60
cmp r2, #0x184
beq _02010B08
b _020111BC
_02010170:
add r0, r1, #4
cmp r2, r0
beq _020110C4
b _020111BC
_02010180:
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0x13
strh r1, [r0, #4]
bl sub_03036B24
b _020111BC
_020101A4:
cmp r3, #7
cmpne r3, #9
bne _0201032C
add r1, sp, #0x14
add r0, sb, #0x10
mov r2, #6
bl sub_0302D91C
mov r6, #0
mov r5, r6
add r4, r8, #0x100
mov sl, #1
b _020102A4
_020101D4:
bl sub_0302D4F0
ldrh r2, [r4, #0x82]
add r1, r5, #1
mov r7, r0
tst r2, sl, lsl r1
beq _02010298
mov r0, #6
mul r2, r5, r0
add r0, r8, r2
ldrb fp, [sp, #0x14]
ldrb r3, [r0, #0x128]
cmp fp, r3
ldreqb fp, [sp, #0x15]
ldreqb r3, [r0, #0x129]
cmpeq fp, r3
ldreqb fp, [sp, #0x16]
ldreqb r3, [r0, #0x12a]
cmpeq fp, r3
ldreqb fp, [sp, #0x17]
ldreqb r3, [r0, #0x12b]
cmpeq fp, r3
ldreqb fp, [sp, #0x18]
ldreqb r3, [r0, #0x12c]
cmpeq fp, r3
ldreqb r3, [sp, #0x19]
ldreqb r0, [r0, #0x12d]
cmpeq r3, r0
bne _02010298
add r3, r8, #0x100
mov r0, r1, lsl #0x10
mov r6, r0, lsr #0x10
ldrh r0, [r3, #0x82]
mvn r1, sl, lsl r6
and r0, r0, r1
strh r0, [r3, #0x82]
ldrh r0, [r8, #0x86]
add r3, r8, r6, lsl #3
and r1, r0, r1
add r0, r8, #0x128
strh r1, [r8, #0x86]
mov r1, #0
str r1, [r3, #0x738]
add r0, r0, r2
mov r2, #6
str r1, [r3, #0x73c]
bl sub_0302D860
mov r0, r7
bl sub_0302D504
b _020102AC
_02010298:
mov r0, r7
bl sub_0302D504
add r5, r5, #1
_020102A4:
cmp r5, #0xf
blt _020101D4
_020102AC:
cmp r6, #0
beq _020111BC
bl sub_03036B70
mov r4, r0
mov r0, #8
strh r0, [r4]
mov r0, #0
strh r0, [r4, #2]
mov r0, #9
strh r0, [r4, #8]
ldrh r1, [sb, #0x16]
add r0, sb, #0x10
strh r1, [r4, #0x12]
strh r6, [r4, #0x10]
add r1, r4, #0xa
mov r2, #6
bl sub_0302D91C
ldrh r1, [r8, #0x30]
mov r0, r4
strh r1, [r4, #0x2c]
ldrh r1, [r8, #0x32]
strh r1, [r4, #0x2e]
bl sub_03036B24
ldr r0, [r8, #0xc]
cmp r0, #1
bne _020111BC
mov r0, #1
mov r0, r0, lsl r6
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0201700C
b _020111BC
_0201032C:
mov r5, #0
bl sub_0302D4F0
add r1, r8, #0x100
ldrh r1, [r1, #0x82]
mov r4, r0
cmp r1, #0
bne _02010350
bl sub_0302D504
b _020111BC
_02010350:
ldr r0, [r8, #0xc]
cmp r0, #1
bne _02010370
mov r0, r5
str r0, [r8, #0xc]
mov r5, #1
bl sub_0201537C
bl sub_0200FE30
_02010370:
add r0, r8, #0x100
mov r1, #0
strh r1, [r0, #0x82]
strh r1, [r8, #0x86]
str r1, [r8, #0x14]
str r1, [r8, #0x10]
str r1, [r8, #0x1c]
str r1, [r8, #0x198]
strh r1, [r0, #0x96]
add r0, r8, #0x19c
mov r2, #0x50
bl sub_0302D860
bl sub_0200FF5C
mov r0, #0
strh r0, [r8, #0xc2]
mov r1, #3
mov r0, r4
strh r1, [r8]
bl sub_0302D504
bl sub_03036B70
mov r4, r0
mov r0, #0xc
strh r0, [r4]
mov r0, #0
strh r0, [r4, #2]
mov r0, #9
strh r0, [r4, #8]
ldrh r1, [sb, #0x16]
add r0, r8, #0x100
strh r1, [r4, #0xc]
ldrh r1, [r0, #0x88]
add r0, r8, #0x8a
strh r1, [r4, #0xa]
add r0, r0, #0x100
add r1, r4, #0x10
mov r2, #6
bl sub_0302D91C
ldrh r1, [r8, #0x30]
mov r0, r4
strh r1, [r4, #0x16]
ldrh r1, [r8, #0x32]
strh r1, [r4, #0x18]
bl sub_03036B24
cmp r5, #0
beq _020111BC
mov r0, #1
bl sub_0201700C
b _020111BC
_02010430:
ldrh r5, [sb, #0x16]
cmp r5, #0
beq _020111BC
cmp r5, #0x10
bhs _020111BC
ldrh r0, [r8, #0xf6]
cmp r0, #0
bne _020104BC
bl sub_0200FEF0
movs r4, r0
moveq r0, #0
beq _02010488
mov r3, #0x22
add r0, sb, #0x10
add r1, r4, #4
mov r2, #6
str r3, [r4]
bl sub_0302D91C
ldr r0, _02010EEC ; =0x027F7900
mov r1, r4
mov r2, #0
bl sub_0302BEC4
_02010488:
cmp r0, #0
bne _020111BC
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #8
strh r1, [r0, #2]
mov r1, #0x16
strh r1, [r0, #4]
mov r1, #0x22
strh r1, [r0, #6]
bl sub_03036B24
b _020111BC
_020104BC:
bl sub_0302D4F0
add r1, r8, #0x100
mov r4, #1
ldrh r3, [r1, #0x82]
mvn r2, r4, lsl r5
orr r3, r3, r4, lsl r5
strh r3, [r1, #0x82]
ldrh r1, [r8, #0x86]
mov r4, r0
and r0, r1, r2
strh r0, [r8, #0x86]
bl sub_0302CA0C
orr r2, r0, #1
add r0, r8, r5, lsl #3
add r3, r8, #0x128
str r2, [r0, #0x738]
orr r1, r1, #0
str r1, [r0, #0x73c]
sub r0, r5, #1
mov r2, #6
mla r1, r0, r2, r3
add r0, sb, #0x10
bl sub_0302D91C
mov r0, r4
bl sub_0302D504
mov r0, #1
add r1, r8, #0x1f8
add r1, r1, r5, lsl #4
mov r2, #0x10
bl sub_0302D764
bl sub_03036B70
mov r4, r0
mov r0, #8
strh r0, [r4]
mov r0, #0
strh r0, [r4, #2]
mov r0, #7
strh r0, [r4, #8]
add r0, sb, #0x10
add r1, r4, #0xa
mov r2, #6
bl sub_0302D91C
strh r5, [r4, #0x10]
add r0, sb, #0x22
add r1, r4, #0x14
mov r2, #0x18
bl sub_0302D78C
ldrh r1, [r8, #0x30]
mov r0, r4
strh r1, [r4, #0x2c]
ldrh r1, [r8, #0x32]
strh r1, [r4, #0x2e]
bl sub_03036B24
b _020111BC
_02010594:
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0x12
strh r1, [r0, #4]
bl sub_03036B24
b _020111BC
_020105B8:
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0x11
strh r1, [r0, #4]
bl sub_03036B24
b _020111BC
_020105DC:
ldrh r0, [r8, #0xc2]
cmp r0, #0
beq _020111BC
bl sub_03036B70
mov r1, #0xc
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #8
strh r1, [r0, #8]
bl sub_03036B24
b _020111BC
_0201060C:
ldrh r0, [r8, #0xc2]
cmp r0, #0
beq _020111BC
bl sub_03036B70
mov r1, #8
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #2
strh r1, [r0, #8]
bl sub_03036B24
b _020111BC
_0201063C:
ldrb r0, [sb, #0x1f]
bl sub_02011230
ldr r2, _02010EF0 ; =0x027FFF98
ldrh r1, [r2]
eor r0, r0, r1, lsl #1
eor r0, r0, r0, lsr #16
strh r0, [r2]
ldrh r0, [r8]
cmp r0, #8
cmpne r0, #0xa
bne _020111BC
ldrh r1, [r8, #0xba]
ldrh r0, [sb, #0x44]
cmp r1, r0
beq _020106E0
bl sub_0200FEF0
movs r1, r0
moveq r0, #0
beq _020106AC
mov r0, #0x25
str r0, [r1]
mov r0, #1
ldr r3, _02010EF4 ; =0x00008002
str r0, [r1, #4]
ldr r0, _02010EEC ; =0x027F7900
mov r2, #0
str r3, [r1, #8]
bl sub_0302BEC4
_020106AC:
cmp r0, #0
bne _020111BC
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #8
strh r1, [r0, #2]
mov r1, #0x16
strh r1, [r0, #4]
mov r1, #0x25
strh r1, [r0, #6]
bl sub_03036B24
b _020111BC
_020106E0:
ldr r0, _02010EE4 ; =0x027F8878
ldr r0, [r0, #0x550]
ldrh r0, [r0, #0xc2]
cmp r0, #0
beq _020111BC
bl sub_03036B70
mov r4, r0
mov r0, #0x80
strh r0, [r4]
mov r0, #0
strh r0, [r4, #2]
mov r0, #0x10
strh r0, [r4, #4]
ldrh r0, [sb, #0x44]
strh r0, [r4, #6]
ldrh r0, [r8]
strh r0, [r4, #8]
ldrh r0, [sb, #0x16]
strh r0, [r4, #0xa]
cmp r0, #0x80
bhi _02010748
add r2, r0, #1
add r0, sb, #0x3c
add r1, r4, #0xc
bic r2, r2, #1
bl sub_0302D78C
_02010748:
mov r0, r4
bl sub_03036B24
b _020111BC
_02010754:
ldr r0, [r8, #0x10]
cmp r0, #0
beq _020111BC
ldrb r0, [sb, #0x1f]
bl sub_02011230
bl sub_0200FD10
bl sub_0200FD8C
strh r0, [r8, #0xbc]
add r0, sb, #0x2e
bl sub_0200FA9C
cmp r0, #1
beq _020111BC
ldrh r1, [sb, #0x16]
ldr r0, _02010EF8 ; =0x000005E4
cmp r1, r0
bhi _020111BC
ldrh r1, [r8, #0xae]
add r0, sb, #0x10
eor r1, r1, #1
strh r1, [r8, #0xae]
ldrh r2, [r8, #0xae]
ldrh r1, [sb, #0x16]
add r2, r8, r2, lsl #2
ldr r4, [r2, #0xb0]
add r2, r1, #0x2d
mov r1, r4
bic r2, r2, #1
bl sub_0302D91C
add r0, sb, #0x28
add r1, r4, #0x18
mov r2, #6
bl sub_0302D91C
add r0, sb, #0x2e
add r1, r4, #0x1e
mov r2, #6
bl sub_0302D91C
bl sub_03036B70
mov r1, #0x11
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0xf
strh r1, [r0, #4]
str r4, [r0, #8]
bl sub_03036B24
b _020111BC
_0201080C:
ldrb r0, [sb, #0x1f]
bl sub_02011230
ldrh r1, [r8, #0xbe]
cmp r1, r0
strhih r0, [r8, #0xbe]
ldr r0, [r8, #0xc]
cmp r0, #0
beq _020111BC
ldrh r0, [r8, #0x60]
cmp r0, #1
moveq r0, #0
streqh r0, [r8, #0x60]
ldrh r0, [r8, #0x70]
ldrh sl, [r8, #0x8e]
eor r0, r0, #1
strh r0, [r8, #0x70]
ldrh r0, [r8, #0x70]
ldrh r1, [sb, #0x16]
add r3, r8, r0, lsl #2
ldrh r0, [r8, #0x72]
add r2, r1, #0x30
ldr r4, [r3, #0x74]
cmp r0, r2
movlo r2, r0
mov r1, r4
add r0, sb, #0x10
bl sub_0302D91C
bl sub_0302D4F0
ldrh r1, [r8, #0x84]
mov fp, r0
cmp r1, #1
mov r5, #0
bne _0201089C
ldr r0, _02010EFC ; =0x0380B408
mov r5, #1
bl sub_0302CDB0
_0201089C:
mov r7, #1
strh r7, [r8, #0x84]
ldrh r0, [r4, #0xa]
mov ip, #0
strh r0, [r8, #0x82]
ldrh r6, [sb, #0x18]
ldr r0, _02010F00 ; =0x000082EA
tst r6, #0x2000
moveq r7, #0
strh r7, [r8, #0x90]
str ip, [sp]
ldrh r2, [r4, #0xa]
ldrh r1, [r4, #0xc]
sub r1, r2, r1
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
add r1, r1, #0x80
mov r1, r1, lsl #4
umull r3, r2, r1, r0
mla r2, r1, ip, r2
mov r1, r1, asr #0x1f
mla r2, r1, r0, r2
mov r0, r3, lsr #6
orr r0, r0, r2, lsl #26
mov r3, r2, lsr #6
mov r1, r0, lsr #0xa
ldr r0, _02010EFC ; =0x0380B408
mov r2, r3, lsr #0xa
orr r1, r1, r3, lsl #22
ldr r3, _02010F04 ; =0x027E1B68
bl sub_0302CCCC
and r0, r6, #0x2800
cmp r0, #0x2800
moveq r1, #1
and r0, r6, #0x6000
movne r1, #0
cmp r0, #0x6000
moveq r2, #1
movne r2, #0
cmp r2, #0
movne r0, #0
strneh r0, [r8, #0x8a]
cmp r1, #0
movne r0, #1
moveq r0, #0
strh r0, [r8, #0x8e]
cmp r2, #0
movne r0, #1
moveq r0, #0
strh r0, [r8, #0x8c]
cmp r7, #0
beq _020109A8
ldrh r0, [r4, #0x2c]
sub r1, r0, #0x66
mov r0, r1, asr #1
add r0, r1, r0, lsr #30
mov r0, r0, asr #2
subs r1, r0, #0x20
bmi _020109A8
ldrh r0, [r8, #0x32]
cmp r1, #0x200
movgt r1, #0x200
cmp r1, r0
beq _020109A8
mov r0, r1, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0201005C
_020109A8:
mov r0, fp
bl sub_0302D504
cmp r5, #0
beq _020109F4
cmp sl, #1
bne _020109CC
mov r0, r5
mov r1, #0
bl sub_02016CDC
_020109CC:
bl sub_03036B70
mov r1, #0xe
strh r1, [r0]
mov r1, #9
strh r1, [r0, #2]
mov r1, #0xd
strh r1, [r0, #4]
mov r1, #0
str r1, [r0, #8]
bl sub_03036B24
_020109F4:
cmp r7, #0
bne _02010A20
ldrh r0, [r4, #6]
cmp r0, #2
blo _020111BC
ldrh r0, [r4, #0x30]
tst r0, #0x8000
movne r0, #1
moveq r0, #0
strh r0, [r8, #0x5e]
b _020111BC
_02010A20:
add r0, sb, #0x28
add r1, r4, #0x18
mov r2, #6
bl sub_0302D91C
add r0, sb, #0x2e
add r1, r4, #0x1e
mov r2, #6
bl sub_0302D91C
ldrh r0, [r4, #6]
cmp r0, #2
blo _02010AB0
sub r0, r0, #2
strh r0, [r4, #6]
ldrh r0, [r4, #0x30]
tst r0, #0x8000
movne r0, #1
moveq r0, #0
strh r0, [r8, #0x5e]
bl sub_03036B70
mov r1, #0xe
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0xc
strh r1, [r0, #4]
str r4, [r0, #8]
bl sub_03036B24
ldrh r3, [r4, #6]
cmp r3, #0
beq _02010ADC
str r4, [sp]
ldrh r1, [r4, #0x30]
add r2, r4, #0x32
mov r0, #0
bl sub_02017200
b _02010ADC
_02010AB0:
mov r0, #0
strh r0, [r4, #6]
strh r0, [r8, #0x5e]
bl sub_03036B70
mov r1, #0xe
strh r1, [r0]
strh r1, [r0, #2]
mov r1, #0xc
strh r1, [r0, #4]
str r4, [r0, #8]
bl sub_03036B24
_02010ADC:
ldr r0, [r8, #0x7bc]
ldr r1, [r8, #0x7b8]
cmp r0, #0
cmpeq r1, #0
beq _020111BC
bl sub_0302CA0C
orr r0, r0, #1
str r0, [r8, #0x738]
orr r0, r1, #0
str r0, [r8, #0x73c]
b _020111BC
_02010B08:
ldr r0, [r8, #0xc]
mov fp, #0
cmp r0, #0
beq _020111BC
ldrh r0, [sb, #0x12]
cmp r0, #0
bne _02010B3C
ldrh r1, [r8, #0x66]
cmp r1, #1
bne _02010B44
ldrh r0, [sb, #0x10]
cmp r0, #0
beq _02010B44
_02010B3C:
bl sub_02011244
b _020111BC
_02010B44:
cmp r1, #0
movne r0, #0
strneh r0, [r8, #0x66]
ldrh r1, [sb, #0x16]
ldrh r0, [sb, #0x14]
ldrh r3, [r8, #0x70]
mul r2, r1, r0
add r1, r8, r3, lsl #2
ldr r4, [r1, #0x74]
ldrh r0, [r8, #0x72]
add r2, r2, #0xa
cmp r0, r2
movlo r2, r0
mov r1, r4
add r0, sb, #0x10
bl sub_0302D91C
ldr r0, _02010EE4 ; =0x027F8878
ldrh r1, [r4]
ldr r7, [r0, #0x550]
cmp r1, #0
ldrh r5, [r7, #0xbe]
bne _02010BE0
ldrh r0, [sb, #0x14]
cmp r0, #1
blo _02010BE0
add sl, sb, #0x1a
mov r6, #0
b _02010BD0
_02010BB4:
ldrh r1, [sb, #0x16]
mla r0, r1, r6, sl
ldrb r0, [r0, #3]
bl sub_02011230
cmp r0, r5
movlo r5, r0
add r6, r6, #1
_02010BD0:
ldrh r0, [sb, #0x14]
cmp r6, r0
blt _02010BB4
strh r5, [r7, #0xbe]
_02010BE0:
bl sub_0302CA0C
orr r0, r0, #1
str r0, [sp, #8]
ldr r0, _02010F08 ; =0x00008001
orr r1, r1, #0
rsb r0, r0, #0x18000
ldrh r6, [r4]
str r1, [sp, #0xc]
add r5, r4, #0xa
mov sl, #0
str r0, [sp, #0x10]
b _02010D78
_02010C10:
ldrh r7, [r5, #4]
ldrh r1, [r5]
cmp r7, #1
blo _02010D64
cmp r7, #0xf
bhi _02010D64
cmp r1, #2
blo _02010C8C
ldr r0, [sp, #0x10]
cmp r1, r0
beq _02010C8C
sub r0, r1, #2
mov r0, r0, lsl #0x10
movs r3, r0, lsr #0x10
strh r3, [r5]
ldrh r2, [r8, #0x86]
mov r1, #1
orr r1, r2, r1, lsl r7
strh r1, [r8, #0x86]
ldr r1, [sp, #8]
add r0, r8, r7, lsl #3
str r1, [r0, #0x738]
ldr r1, [sp, #0xc]
str r1, [r0, #0x73c]
beq _02010D64
mov r0, r7
str r4, [sp]
ldrh r1, [r5, #8]
add r2, r5, #0xa
bl sub_02017200
b _02010D64
_02010C8C:
cmp r1, #0
bne _02010D64
add r0, r8, r7, lsl #3
ldr r2, [r0, #0x738]
ldr r1, [r0, #0x73c]
mov r0, #1
mov r0, r0, lsl r7
str r0, [sp, #4]
mov r0, #1
orr r6, r6, r0, lsl r7
ldr ip, [r8, #0x7bc]
ldr r0, [r8, #0x7b8]
cmp ip, #0
mov r3, #0
cmpeq r0, #0
beq _02010D64
cmp r1, r3
cmpeq r2, r3
beq _02010D64
ldr r3, [sp, #8]
subs r3, r3, r2
ldr r2, [sp, #0xc]
sbc r1, r2, r1
cmp r1, ip
cmpeq r3, r0
bls _02010D64
bl sub_0200FEF0
movs r1, r0
add r2, r8, r7, lsl #3
mov r0, #0
str r0, [r2, #0x738]
str r0, [r2, #0x73c]
beq _02010D34
mov r0, #0x25
str r0, [r1]
ldr r0, [sp, #4]
mov r2, #0
str r0, [r1, #4]
ldr r0, _02010F08 ; =0x00008001
str r0, [r1, #8]
ldr r0, _02010EEC ; =0x027F7900
bl sub_0302BEC4
_02010D34:
cmp r0, #0
bne _02010D64
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #8
strh r1, [r0, #2]
mov r1, #0x16
strh r1, [r0, #4]
mov r1, #0x25
strh r1, [r0, #6]
bl sub_03036B24
_02010D64:
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, lsr #0x10
ldrh r0, [r4, #6]
add r5, r5, r0
_02010D78:
ldrh r0, [r4, #4]
cmp sl, r0
blo _02010C10
mov r0, r6, lsl #0x10
mov r1, r0, lsr #0x10
mov r0, #0
bl sub_02016CDC
ldrh r0, [r4]
cmp r0, #0
movne fp, #1
bl sub_03036B70
mov r1, #0xe
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0xb
strh r1, [r0, #4]
str r4, [r0, #8]
bl sub_03036B24
ldrh r0, [r8, #0x70]
eor r0, r0, #1
strh r0, [r8, #0x70]
bl sub_0302D4F0
cmp fp, #0
ldreqsh r1, [r8, #0x62]
subeq r1, r1, #1
streqh r1, [r8, #0x62]
ldrsh r1, [r8, #0x64]
cmp r1, #0
subgt r1, r1, #1
strgth r1, [r8, #0x64]
ldrsh r1, [r8, #0x62]
cmp r1, #0
ldrgtsh r1, [r8, #0x64]
cmpgt r1, #0
movgt r4, #1
movle r4, #0
bl sub_0302D504
cmp r4, #0
beq _020111BC
cmp fp, #1
ldreqh r4, [sb, #0x10]
ldrh r0, [r8, #0x44]
ldrne r4, _02010F0C ; =0x0000FFFF
cmp r0, #0
beq _02010E54
ldr r0, _02010F10 ; =0x0380B434
bl sub_0302CDB0
str r4, [sp]
ldr r1, [r8, #0x48]
ldr r2, [r8, #0x4c]
ldr r0, _02010F10 ; =0x0380B434
ldr r3, _02010F14 ; =0x027E1AD4
bl sub_0302CCCC
b _020111BC
_02010E54:
mov r0, r4
bl sub_020112D8
b _020111BC
_02010E60:
ldr r0, [r8, #0xc]
mov r5, #0
cmp r0, #0
beq _020111BC
ldrh r0, [sb, #0xe]
cmp r0, #0
bne _02010EC0
ldr r1, _02010F18 ; =0x048080F8
mov r4, #1
ldrh r0, [r1]
ldrh r3, [r1, #2]
ldrh r2, [r1]
cmp r0, r2
ldrhih r3, [r1, #2]
mov r0, r2, asr #4
orr r0, r0, r3, lsl #12
ldrh r1, [r8, #0x82]
mov r0, r0, lsl #0x10
rsb r0, r1, r0, lsr #16
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
cmp r0, #0
ble _020111BC
b _02010EC4
_02010EC0:
mov r4, r5
_02010EC4:
bl sub_0302D4F0
ldrh r1, [r8, #0x84]
mov r7, r0
cmp r1, #0
bne _02010F1C
bl sub_0302D504
b _020111BC
.align 2, 0
_02010EE0: .word 0x027F7878
_02010EE4: .word 0x027F8878
_02010EE8: .word 0x00000182
_02010EEC: .word 0x027F7900
_02010EF0: .word 0x027FFF98
_02010EF4: .word 0x00008002
_02010EF8: .word 0x000005E4
_02010EFC: .word 0x0380B408
_02010F00: .word 0x000082EA
_02010F04: .word 0x027E1B68
_02010F08: .word 0x00008001
_02010F0C: .word 0x0000FFFF
_02010F10: .word 0x0380B434
_02010F14: .word 0x027E1AD4
_02010F18: .word 0x048080F8
_02010F1C:
ldr r0, _02010EFC ; =0x0380B408
mov r1, #0
strh r1, [r8, #0x84]
ldrh r6, [r8, #0x90]
bl sub_0302CDB0
mov r0, r7
bl sub_0302D504
ldrh r3, [r8, #0x8c]
mov r2, #1
cmp r3, #0
beq _02010F68
cmp r4, #0
bne _02010F64
add r0, r8, #0x100
ldrh r1, [sb, #0x3e]
ldrh r0, [r0, #0x88]
tst r1, r2, lsl r0
bne _02010F68
_02010F64:
mov r2, #0
_02010F68:
cmp r3, #0
movne r0, #0
strneh r0, [r8, #0x8c]
ldrh r0, [r8, #0x8e]
cmp r0, #0
beq _02010FA4
mov r0, #0
strh r0, [r8, #0x8e]
cmp r2, #0
movne r0, #1
mov r1, r0, lsl #0x10
mov r0, r4
mov r1, r1, lsr #0x10
bl sub_02016CDC
mov r5, r0
_02010FA4:
cmp r6, #0
beq _020111BC
bl sub_03036B70
mov r7, r0
mov r0, #0xe
strh r0, [r7]
cmp r4, #0
movne r0, #9
strneh r0, [r7, #2]
bne _02010FF0
add r0, r8, #0x100
ldrh r2, [sb, #0x3e]
ldrh r0, [r0, #0x88]
mov r1, #1
tst r2, r1, lsl r0
movne r0, #0xf
strneh r0, [r7, #2]
moveq r0, #0
streqh r0, [r7, #2]
_02010FF0:
mov r0, #0xd
strh r0, [r7, #4]
mov r0, #0
str r0, [r7, #8]
cmp r4, #0
bne _02011050
ldrh r1, [sb, #0x1c]
add r0, sb, #0x28
strh r1, [r7, #0xc]
ldrh r2, [sb, #0x1e]
add r1, r7, #0x10
strh r2, [r7, #0xe]
mov r2, #6
bl sub_0302D91C
add r0, sb, #0x2e
add r1, r7, #0x16
mov r2, #6
bl sub_0302D91C
ldrh r0, [sb, #0x3a]
strh r0, [r7, #0x1c]
ldrh r0, [sb, #0x3c]
strh r0, [r7, #0x1e]
ldrh r0, [sb, #0x3e]
strh r0, [r7, #0x20]
_02011050:
mov r0, r7
bl sub_03036B24
cmp r6, #0
beq _020111BC
cmp r5, #1
ldrneh r0, [r8, #0x5e]
cmpne r0, #0
bne _020110AC
ldrh r0, [r8, #0x46]
cmp r0, #0
beq _020110A4
ldr r0, _02010F10 ; =0x0380B434
bl sub_0302CDB0
mov r0, #0
str r0, [sp]
ldr r1, [r8, #0x50]
ldr r2, [r8, #0x54]
ldr r0, _02010F10 ; =0x0380B434
ldr r3, _020111EC ; =0x027E1C00
bl sub_0302CCCC
b _020111BC
_020110A4:
bl sub_020113FC
b _020111BC
_020110AC:
mov r1, #0
strh r1, [r8, #0x5e]
mov r0, #1
strh r0, [r8, #0x60]
strh r1, [r8, #0x88]
b _020111BC
_020110C4:
add r0, r8, #0x700
ldrh r0, [r0, #0xcc]
cmp r0, #1
ldreqh r0, [sb, #0x10]
cmpeq r0, #0x20
bne _02011138
bl sub_0302D4F0
mov r4, r0
ldr r0, _02010EFC ; =0x0380B408
bl sub_0302CDB0
mov r1, #0
mov r0, r4
strh r1, [r8, #0x84]
bl sub_0302D504
mov r1, #0
strh r1, [r8, #0x8a]
mov r0, #1
bl sub_02016CDC
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0x17
strh r1, [r0, #4]
mov r1, #1
strh r1, [r0, #6]
bl sub_03036B24
b _020111BC
_02011138:
bl sub_0200FEF0
movs r1, r0
moveq r0, #0
beq _0201118C
ldr r0, _020111F0 ; =0x00008003
mov r2, #0x25
str r2, [r1]
str r0, [r1, #8]
ldrh r0, [r8]
cmp r0, #9
cmpne r0, #7
ldreq r0, _020111F4 ; =0x00007FFE
streq r0, [r1, #4]
beq _02011180
cmp r0, #0xa
cmpne r0, #8
moveq r0, #1
streq r0, [r1, #4]
_02011180:
ldr r0, _02010EEC ; =0x027F7900
mov r2, #0
bl sub_0302BEC4
_0201118C:
cmp r0, #0
bne _020111BC
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #8
strh r1, [r0, #2]
mov r1, #0x16
strh r1, [r0, #4]
mov r1, #0x25
strh r1, [r0, #6]
bl sub_03036B24
_020111BC:
mov r0, sb
bl sub_020111F8
b _02010090
_020111C8:
ldr r0, _02010EE0 ; =0x027F7878
mov r1, sb
add r0, r0, #0x58
mov r2, #1
bl sub_0302BEC4
b _02010090
_020111E0:
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_020111EC: .word 0x027E1C00
_020111F0: .word 0x00008003
_020111F4: .word 0x00007FFE
arm_func_end sub_02010088
arm_func_start sub_020111F8
sub_020111F8: ; 0x020111F8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_0302D4F0
ldr r1, _0201122C ; =0x027F8878
mov r4, r0
ldr r0, [r1, #0x544]
ldr r1, [r1, #0x548]
mov r2, r5
bl sub_0302C574
mov r0, r4
bl sub_0302D504
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201122C: .word 0x027F8878
arm_func_end sub_020111F8
arm_func_start sub_02011230
sub_02011230: ; 0x02011230
tst r0, #2
mov r0, r0, asr #2
addeq r0, r0, #0x19
and r0, r0, #0xff
bx lr
arm_func_end sub_02011230
arm_func_start sub_02011244
sub_02011244: ; 0x02011244
stmdb sp!, {r4, lr}
ldr r0, _020112BC ; =0x027F8878
ldr r4, [r0, #0x550]
bl sub_0200FEF0
movs r1, r0
moveq r0, #0
beq _0201127C
mov r0, #0x2d
str r0, [r1]
ldrh r3, [r4, #0x68]
ldr r0, _020112C0 ; =0x027F7900
mov r2, #0
str r3, [r1, #4]
bl sub_0302BEC4
_0201127C:
cmp r0, #0
movne r0, #1
strneh r0, [r4, #0x66]
bne _020112B4
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #8
strh r1, [r0, #2]
mov r1, #0x16
strh r1, [r0, #4]
mov r1, #0x2d
strh r1, [r0, #6]
bl sub_03036B24
_020112B4:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020112BC: .word 0x027F8878
_020112C0: .word 0x027F7900
arm_func_end sub_02011244
arm_func_start sub_020112C4
sub_020112C4: ; 0x020112C4
ldr ip, _020112D4 ; =sub_027E1AE8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx ip
.align 2, 0
_020112D4: .word sub_027E1AE8
arm_func_end sub_020112C4
arm_func_start sub_020112D8
sub_020112D8: ; 0x020112D8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_0200FEF0
movs r1, r0
ldr r4, _02011354 ; =0x027F7878
moveq r0, #0
beq _0201130C
mov r0, #0x2b
str r0, [r1]
add r0, r4, #0x88
mov r2, #0
str r5, [r1, #4]
bl sub_0302BEC4
_0201130C:
cmp r0, #0
bne _0201134C
add r0, r4, #0x1000
ldr r0, [r0, #0x54c]
cmp r0, #0
beq _0201134C
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #8
strh r1, [r0, #2]
mov r1, #0x16
strh r1, [r0, #4]
mov r1, #0x2b
strh r1, [r0, #6]
bl sub_03036B24
_0201134C:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02011354: .word 0x027F7878
arm_func_end sub_020112D8
arm_func_start sub_02011358
sub_02011358: ; 0x02011358
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020113E0 ; =0x027F8878
mov r2, #0x40
ldr r0, [r1, #0x544]
ldr r1, [r1, #0x548]
ldr r5, _020113E4 ; =0x027F7878
bl sub_0302C464
mov r4, r0
ldr r1, _020113E8 ; =0x00000185
ldr r0, _020113EC ; =0x027F78A0
strh r1, [r4, #0xc]
mov r2, #0
mov r1, r4
strh r2, [r4, #0xe]
bl sub_0302BEC4
cmp r0, #0
bne _020113D8
mov r0, r4
bl sub_020111F8
add r0, r5, #0x1000
ldr r0, [r0, #0x54c]
cmp r0, #0
beq _020113D8
bl sub_03036B70
mov r2, #0x80
strh r2, [r0]
mov r1, #8
strh r1, [r0, #2]
mov r1, #0x16
strh r1, [r0, #4]
strh r2, [r0, #6]
bl sub_03036B24
_020113D8:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020113E0: .word 0x027F8878
_020113E4: .word 0x027F7878
_020113E8: .word 0x00000185
_020113EC: .word 0x027F78A0
arm_func_end sub_02011358
arm_func_start sub_020113F0
sub_020113F0: ; 0x020113F0
ldr ip, _020113F8 ; =sub_027E1C0C
bx ip
.align 2, 0
_020113F8: .word sub_027E1C0C
arm_func_end sub_020113F0
arm_func_start sub_020113FC
sub_020113FC: ; 0x020113FC
stmdb sp!, {r4, lr}
bl sub_0200FEF0
ldr r2, _02011484 ; =0x027F8878
movs r1, r0
ldr r0, [r2, #0x550]
mov r2, #0
strh r2, [r0, #0x5e]
strh r2, [r0, #0x60]
ldr r4, _02011488 ; =0x027F7878
strh r2, [r0, #0x88]
beq _0201143C
mov r3, #0x2c
add r0, r4, #0x88
str r3, [r1]
bl sub_0302BEC4
mov r2, r0
_0201143C:
cmp r2, #0
bne _0201147C
add r0, r4, #0x1000
ldr r0, [r0, #0x54c]
cmp r0, #0
beq _0201147C
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #8
strh r1, [r0, #2]
mov r1, #0x16
strh r1, [r0, #4]
mov r1, #0x2c
strh r1, [r0, #6]
bl sub_03036B24
_0201147C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011484: .word 0x027F8878
_02011488: .word 0x027F7878
arm_func_end sub_020113FC
arm_func_start sub_0201148C
sub_0201148C: ; 0x0201148C
stmdb sp!, {r3, lr}
ldr r0, _020114A8 ; =0x0380B434
bl sub_0302CB90
ldr r0, _020114AC ; =0x0380B408
bl sub_0302CB90
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020114A8: .word 0x0380B434
_020114AC: .word 0x0380B408
arm_func_end sub_0201148C
arm_func_start sub_020114B0
sub_020114B0: ; 0x020114B0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r0, _02011548 ; =0x027F8878
mov r6, #1
ldr r8, _0201154C ; =0x027F7878
ldr sb, [r0, #0x550]
ldr r5, _02011550 ; =0x027F7184
add r7, sp, #0
mov r4, #0
mov fp, r6
_020114D4:
mov r1, r7
mov r2, fp
add r0, r8, #0x88
bl sub_0302BF50
ldr r0, [sp]
cmp r0, #0
bne _020114F8
bl sub_0302B94C
b _02011540
_020114F8:
ldrh sl, [r0]
tst sl, #0x8000
bicne r0, sl, #0x8000
movne r0, r0, lsl #0x10
movne sl, r0, lsr #0x10
cmp sl, #0x2e
bhs _02011530
str r6, [sb, #4]
strh sl, [sb, #2]
ldr r0, [sp]
ldr r1, [r5, sl, lsl #2]
mov lr, pc
bx r1
_0201152C:
str r4, [sb, #4]
_02011530:
ldr r0, [sp]
orr r1, sl, #0x8000
strh r1, [r0]
b _020114D4
_02011540:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02011548: .word 0x027F8878
_0201154C: .word 0x027F7878
_02011550: .word 0x027F7184
arm_func_end sub_020114B0
arm_func_start sub_02011554
sub_02011554: ; 0x02011554
bx lr
arm_func_end sub_02011554
arm_func_start sub_02011558
sub_02011558: ; 0x02011558
stmdb sp!, {r4, lr}
mov r2, #0
strh r2, [r0]
strh r2, [r0, #2]
strh r2, [r0, #4]
strh r2, [r0, #6]
strh r2, [r0, #8]
strh r2, [r0, #0xa]
strh r2, [r0, #0xc]
mov r3, #1
strh r3, [r0, #0xe]
strh r1, [r0, #0x10]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
strh r3, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02011558
arm_func_start sub_020115AC
sub_020115AC: ; 0x020115AC
stmdb sp!, {r4, lr}
mov r4, #0
strh r4, [r0]
strh r4, [r0, #2]
strh r4, [r0, #4]
strh r4, [r0, #6]
strh r4, [r0, #8]
strh r4, [r0, #0xa]
mov ip, #1
strh ip, [r0, #0xc]
mov r4, #3
strh r4, [r0, #0xe]
strh r1, [r0, #0x10]
strh r2, [r0, #0x12]
strh r3, [r0, #0x14]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
strh ip, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_020115AC
arm_func_start sub_0201160C
sub_0201160C: ; 0x0201160C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r0
mov r0, #0
strh r0, [r4]
strh r0, [r4, #2]
strh r0, [r4, #4]
strh r0, [r4, #6]
strh r0, [r4, #8]
strh r0, [r4, #0xa]
mov r5, #2
mov r7, r1
mov r0, r2
strh r5, [r4, #0xc]
mov r5, #0x1f
add r1, r4, #0x10
mov r2, #6
mov r6, r3
strh r5, [r4, #0xe]
bl sub_0302D78C
ldr r0, [sp, #0x18]
add r1, r4, #0x18
mov r2, #0x20
strh r6, [r4, #0x16]
bl sub_0302D78C
ldrh r2, [sp, #0x1c]
ldr r0, [sp, #0x20]
add r1, r4, #0x3a
strh r2, [r4, #0x38]
mov r2, #0x10
bl sub_0302D78C
ldrh r1, [sp, #0x24]
mov r0, r7, lsr #1
strh r1, [r4, #0x4a]
mov r1, #0
strh r1, [r4, #0x4c]
ldrh r2, [r4, #0xe]
ldrh r1, [r4, #0xc]
add r5, r4, r2, lsl #1
strh r1, [r5, #0x10]
sub r1, r0, #0x2c
mov r0, r4
strh r1, [r5, #0x12]
bl sub_0200F9BC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_0201160C
arm_func_start sub_020116C4
sub_020116C4: ; 0x020116C4
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r3, #0
strh r3, [r4]
strh r3, [r4, #2]
strh r3, [r4, #4]
strh r3, [r4, #6]
strh r3, [r4, #8]
strh r3, [r4, #0xa]
mov r0, #3
strh r0, [r4, #0xc]
mov r0, #0x22
strh r0, [r4, #0xe]
strh r1, [r4, #0x10]
mov r0, r2
strh r3, [r4, #0x12]
add r1, r4, #0x14
mov r2, #0x44
bl sub_0302D78C
ldrh r1, [r4, #0xe]
ldrh r0, [r4, #0xc]
add r5, r4, r1, lsl #1
strh r0, [r5, #0x10]
mov r1, #5
mov r0, r4
strh r1, [r5, #0x12]
bl sub_0200F9BC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_020116C4
arm_func_start sub_0201173C
sub_0201173C: ; 0x0201173C
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
mov r0, #0
strh r0, [r4]
strh r0, [r4, #2]
strh r0, [r4, #4]
strh r0, [r4, #6]
strh r0, [r4, #8]
strh r0, [r4, #0xa]
mov r0, #4
strh r0, [r4, #0xc]
mov r5, #5
mov r6, r2
mov r0, r1
strh r5, [r4, #0xe]
add r1, r4, #0x10
mov r2, #6
mov r5, r3
bl sub_0302D78C
strh r6, [r4, #0x16]
strh r5, [r4, #0x18]
ldrh r1, [r4, #0xe]
ldrh r0, [r4, #0xc]
add r5, r4, r1, lsl #1
strh r0, [r5, #0x10]
mov r1, #6
mov r0, r4
strh r1, [r5, #0x12]
bl sub_0200F9BC
add r0, r5, #0x10
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_0201173C
arm_func_start sub_020117BC
sub_020117BC: ; 0x020117BC
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r0, #0
strh r0, [r4]
strh r0, [r4, #2]
strh r0, [r4, #4]
strh r0, [r4, #6]
strh r0, [r4, #8]
strh r0, [r4, #0xa]
mov r0, #5
strh r0, [r4, #0xc]
mov r3, #4
mov r5, r2
mov r0, r1
strh r3, [r4, #0xe]
add r1, r4, #0x10
mov r2, #6
bl sub_0302D78C
strh r5, [r4, #0x16]
ldrh r1, [r4, #0xe]
ldrh r0, [r4, #0xc]
add r5, r4, r1, lsl #1
strh r0, [r5, #0x10]
mov r1, #4
mov r0, r4
strh r1, [r5, #0x12]
bl sub_0200F9BC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_020117BC
arm_func_start sub_02011834
sub_02011834: ; 0x02011834
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
mov r0, #0
strh r0, [r4]
strh r0, [r4, #2]
strh r0, [r4, #4]
strh r0, [r4, #6]
strh r0, [r4, #8]
mov r6, r2
strh r0, [r4, #0xa]
mov r2, #6
mov r0, r1
strh r2, [r4, #0xc]
mov r1, #5
strh r1, [r4, #0xe]
add r1, r4, #0x10
mov r5, r3
bl sub_0302D78C
strh r6, [r4, #0x16]
strh r5, [r4, #0x18]
ldrh r1, [r4, #0xe]
ldrh r0, [r4, #0xc]
add r5, r4, r1, lsl #1
strh r0, [r5, #0x10]
mov r1, #3
mov r0, r4
strh r1, [r5, #0x12]
bl sub_0200F9BC
add r0, r5, #0x10
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_02011834
arm_func_start sub_020118B0
sub_020118B0: ; 0x020118B0
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov ip, #0
strh ip, [r4]
strh ip, [r4, #2]
strh ip, [r4, #4]
strh ip, [r4, #6]
ldrh r0, [sp, #0x20]
strh ip, [r4, #8]
add r0, r0, #1
add r0, r0, r0, lsr #31
mov r5, r0, asr #1
mov r0, r2
strh ip, [r4, #0xa]
mov r2, #9
strh r2, [r4, #0xc]
add r2, r5, #0x17
strh r2, [r4, #0xe]
strh r1, [r4, #0x10]
add r1, r4, #0x12
mov r2, #0x20
mov r5, r3
bl sub_0302D78C
ldrh r1, [sp, #0x10]
strh r5, [r4, #0x32]
ldrh r0, [sp, #0x14]
strh r1, [r4, #0x34]
ldrh r1, [sp, #0x18]
strh r0, [r4, #0x36]
ldrh r0, [sp, #0x1c]
strh r1, [r4, #0x38]
ldrh r2, [sp, #0x20]
strh r0, [r4, #0x3a]
ldr r0, [sp, #0x24]
strh r2, [r4, #0x3c]
add r1, r4, #0x3e
bl sub_0302D78C
ldrh r1, [r4, #0xe]
ldrh r0, [r4, #0xc]
add r5, r4, r1, lsl #1
strh r0, [r5, #0x10]
mov r1, #1
mov r0, r4
strh r1, [r5, #0x12]
bl sub_0200F9BC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_020118B0
arm_func_start sub_02011970
sub_02011970: ; 0x02011970
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r5, #0
strh r5, [r4]
strh r5, [r4, #2]
strh r5, [r4, #4]
strh r5, [r4, #6]
strh r5, [r4, #8]
strh r5, [r4, #0xa]
mov r0, #0xa
strh r0, [r4, #0xc]
mov r0, #0xc
strh r0, [r4, #0xe]
strh r5, [r4, #0x10]
strh r1, [r4, #0x12]
strh r2, [r4, #0x14]
ldr r0, [sp, #0x10]
strh r3, [r4, #0x16]
add r1, r4, #0x18
mov r2, #0x10
bl sub_0302D78C
ldrh r1, [r4, #0xe]
ldrh r0, [r4, #0xc]
add r5, r4, r1, lsl #1
strh r0, [r5, #0x10]
mov r1, #0x12
mov r0, r4
strh r1, [r5, #0x12]
bl sub_0200F9BC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02011970
arm_func_start sub_020119F0
sub_020119F0: ; 0x020119F0
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r0, #0
strh r0, [r4]
strh r0, [r4, #2]
strh r0, [r4, #4]
strh r0, [r4, #6]
strh r0, [r4, #8]
strh r0, [r4, #0xa]
mov r5, r1
mov r0, #0x100
strh r0, [r4, #0xc]
mov r1, #0x18
mov r0, r5
strh r1, [r4, #0xe]
add r1, r4, #0x10
mov r2, #0x30
bl sub_0302D78C
mov r0, #0
strh r0, [r5, #2]
strh r0, [r5, #4]
strh r0, [r5, #8]
strh r0, [r5, #0xa]
strh r0, [r5, #0xc]
strh r0, [r5, #0x10]
strh r0, [r5, #0x12]
strh r0, [r5, #0x14]
strh r0, [r5, #0x16]
strh r0, [r5, #0x24]
strh r0, [r5, #0x26]
strh r0, [r5, #0x28]
strh r0, [r5, #0x2a]
ldrh r1, [r4, #0xe]
ldrh r0, [r4, #0xc]
add r5, r4, r1, lsl #1
strh r0, [r5, #0x10]
mov r1, #2
mov r0, r4
strh r1, [r5, #0x12]
bl sub_0200F9BC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_020119F0
arm_func_start sub_02011A9C
sub_02011A9C: ; 0x02011A9C
stmdb sp!, {r4, lr}
mov ip, #0
strh ip, [r0]
strh ip, [r0, #2]
strh ip, [r0, #4]
strh ip, [r0, #6]
strh ip, [r0, #8]
ldr r4, _02011B00 ; =0x00000101
strh ip, [r0, #0xa]
strh r4, [r0, #0xc]
mov r4, #4
strh r4, [r0, #0xe]
strh r1, [r0, #0x10]
strh r2, [r0, #0x12]
str r3, [r0, #0x14]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
mov r1, #1
strh r1, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011B00: .word 0x00000101
arm_func_end sub_02011A9C
arm_func_start sub_02011B04
sub_02011B04: ; 0x02011B04
stmdb sp!, {r4, lr}
mov ip, #0
strh ip, [r0]
strh ip, [r0, #2]
strh ip, [r0, #4]
strh ip, [r0, #6]
strh ip, [r0, #8]
ldr r4, _02011B98 ; =0x00000102
strh ip, [r0, #0xa]
strh r4, [r0, #0xc]
mov r4, #0xa
strh r4, [r0, #0xe]
strh r1, [r0, #0x10]
strh r2, [r0, #0x12]
ldrh r2, [sp, #8]
strh r3, [r0, #0x14]
ldrh r1, [sp, #0xc]
strh r2, [r0, #0x16]
ldrh r2, [sp, #0x10]
strh r1, [r0, #0x18]
ldrh r1, [sp, #0x14]
strh r2, [r0, #0x1a]
ldrh r2, [sp, #0x18]
strh r1, [r0, #0x1c]
ldr r1, [sp, #0x1c]
strh r2, [r0, #0x1e]
str r1, [r0, #0x20]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
mov r1, #1
strh r1, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011B98: .word 0x00000102
arm_func_end sub_02011B04
arm_func_start sub_02011B9C
sub_02011B9C: ; 0x02011B9C
stmdb sp!, {r4, lr}
mov r2, #0
strh r2, [r0]
strh r2, [r0, #2]
strh r2, [r0, #4]
strh r2, [r0, #6]
strh r2, [r0, #8]
strh r2, [r0, #0xa]
mov r2, #0x104
strh r2, [r0, #0xc]
mov r3, #1
strh r3, [r0, #0xe]
strh r1, [r0, #0x10]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
strh r3, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02011B9C
arm_func_start sub_02011BF4
sub_02011BF4: ; 0x02011BF4
stmdb sp!, {r4, lr}
mov r1, #0
strh r1, [r0]
strh r1, [r0, #2]
strh r1, [r0, #4]
strh r1, [r0, #6]
strh r1, [r0, #8]
strh r1, [r0, #0xa]
mov r1, #0x200
mov r2, #0x48
strh r1, [r0, #0xc]
strh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
mov r1, #1
strh r1, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02011BF4
arm_func_start sub_02011C48
sub_02011C48: ; 0x02011C48
stmdb sp!, {r4, lr}
mov r3, #0
strh r3, [r0]
strh r3, [r0, #2]
strh r3, [r0, #4]
strh r3, [r0, #6]
strh r3, [r0, #8]
ldr r2, _02011CA0 ; =0x00000207
strh r3, [r0, #0xa]
strh r2, [r0, #0xc]
mov r3, #1
strh r3, [r0, #0xe]
strh r1, [r0, #0x10]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
strh r3, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011CA0: .word 0x00000207
arm_func_end sub_02011C48
arm_func_start sub_02011CA4
sub_02011CA4: ; 0x02011CA4
stmdb sp!, {r4, lr}
mov r3, #0
strh r3, [r0]
strh r3, [r0, #2]
strh r3, [r0, #4]
strh r3, [r0, #6]
strh r3, [r0, #8]
ldr r2, _02011CFC ; =0x0000020B
strh r3, [r0, #0xa]
strh r2, [r0, #0xc]
mov r3, #1
strh r3, [r0, #0xe]
strh r1, [r0, #0x10]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
strh r3, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011CFC: .word 0x0000020B
arm_func_end sub_02011CA4
arm_func_start sub_02011D00
sub_02011D00: ; 0x02011D00
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r0, #0
strh r0, [r4]
strh r0, [r4, #2]
strh r0, [r4, #4]
strh r0, [r4, #6]
strh r0, [r4, #8]
ldr r2, _02011D70 ; =0x0000020D
strh r0, [r4, #0xa]
mov r0, r1
strh r2, [r4, #0xc]
mov r1, #0x10
strh r1, [r4, #0xe]
add r1, r4, #0x10
mov r2, #0x20
bl sub_0302D78C
ldrh r1, [r4, #0xe]
ldrh r0, [r4, #0xc]
add r5, r4, r1, lsl #1
strh r0, [r5, #0x10]
mov r1, #1
mov r0, r4
strh r1, [r5, #0x12]
bl sub_0200F9BC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02011D70: .word 0x0000020D
arm_func_end sub_02011D00
arm_func_start sub_02011D74
sub_02011D74: ; 0x02011D74
stmdb sp!, {r4, lr}
mov r3, #0
strh r3, [r0]
strh r3, [r0, #2]
strh r3, [r0, #4]
strh r3, [r0, #6]
strh r3, [r0, #8]
ldr r2, _02011DCC ; =0x0000020E
strh r3, [r0, #0xa]
strh r2, [r0, #0xc]
mov r3, #1
strh r3, [r0, #0xe]
strh r1, [r0, #0x10]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
strh r3, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011DCC: .word 0x0000020E
arm_func_end sub_02011D74
arm_func_start sub_02011DD0
sub_02011DD0: ; 0x02011DD0
stmdb sp!, {r4, lr}
mov ip, #0
strh ip, [r0]
strh ip, [r0, #2]
strh ip, [r0, #4]
strh ip, [r0, #6]
strh ip, [r0, #8]
ldr r4, _02011E34 ; =0x00000211
strh ip, [r0, #0xa]
strh r4, [r0, #0xc]
mov r4, #3
strh r4, [r0, #0xe]
strh r1, [r0, #0x10]
strh r2, [r0, #0x12]
strh r3, [r0, #0x14]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
mov r1, #1
strh r1, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011E34: .word 0x00000211
arm_func_end sub_02011DD0
arm_func_start sub_02011E38
sub_02011E38: ; 0x02011E38
stmdb sp!, {r4, lr}
mov r3, #0
strh r3, [r0]
strh r3, [r0, #2]
strh r3, [r0, #4]
strh r3, [r0, #6]
strh r3, [r0, #8]
ldr r2, _02011E90 ; =0x00000212
strh r3, [r0, #0xa]
strh r2, [r0, #0xc]
mov r3, #1
strh r3, [r0, #0xe]
strh r1, [r0, #0x10]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
strh r3, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011E90: .word 0x00000212
arm_func_end sub_02011E38
arm_func_start sub_02011E94
sub_02011E94: ; 0x02011E94
stmdb sp!, {r4, lr}
mov r3, #0
strh r3, [r0]
strh r3, [r0, #2]
strh r3, [r0, #4]
strh r3, [r0, #6]
strh r3, [r0, #8]
ldr r2, _02011EEC ; =0x00000215
strh r3, [r0, #0xa]
strh r2, [r0, #0xc]
mov r3, #1
strh r3, [r0, #0xe]
strh r1, [r0, #0x10]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
strh r3, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011EEC: .word 0x00000215
arm_func_end sub_02011E94
arm_func_start sub_02011EF0
sub_02011EF0: ; 0x02011EF0
stmdb sp!, {r4, lr}
mov r3, #0
strh r3, [r0]
strh r3, [r0, #2]
strh r3, [r0, #4]
strh r3, [r0, #6]
strh r3, [r0, #8]
ldr r2, _02011F48 ; =0x00000216
strh r3, [r0, #0xa]
strh r2, [r0, #0xc]
mov r3, #1
strh r3, [r0, #0xe]
strh r1, [r0, #0x10]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
strh r3, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011F48: .word 0x00000216
arm_func_end sub_02011EF0
arm_func_start sub_02011F4C
sub_02011F4C: ; 0x02011F4C
stmdb sp!, {r4, lr}
mov r3, #0
strh r3, [r0]
strh r3, [r0, #2]
strh r3, [r0, #4]
strh r3, [r0, #6]
strh r3, [r0, #8]
ldr r2, _02011FA4 ; =0x00000242
strh r3, [r0, #0xa]
strh r2, [r0, #0xc]
mov r3, #1
strh r3, [r0, #0xe]
strh r1, [r0, #0x10]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
strh r3, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02011FA4: .word 0x00000242
arm_func_end sub_02011F4C
arm_func_start sub_02011FA8
sub_02011FA8: ; 0x02011FA8
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov ip, #0
strh ip, [r4]
strh ip, [r4, #2]
strh ip, [r4, #4]
strh ip, [r4, #6]
strh ip, [r4, #8]
add r0, r1, #1
add r0, r0, r0, lsr #31
mov r3, r0, asr #1
mov r0, r2
ldr r5, _02012028 ; =0x00000245
strh ip, [r4, #0xa]
strh r5, [r4, #0xc]
add r2, r3, #1
strh r2, [r4, #0xe]
strh r1, [r4, #0x10]
mov r2, r1
add r1, r4, #0x12
bl sub_0302D78C
ldrh r1, [r4, #0xe]
ldrh r0, [r4, #0xc]
add r5, r4, r1, lsl #1
strh r0, [r5, #0x10]
mov r1, #1
mov r0, r4
strh r1, [r5, #0x12]
bl sub_0200F9BC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02012028: .word 0x00000245
arm_func_end sub_02011FA8
arm_func_start sub_0201202C
sub_0201202C: ; 0x0201202C
ldr ip, _0201203C ; =sub_027E29A8
ldr r1, _02012040 ; =0x00000281
mov r2, #4
bx ip
.align 2, 0
_0201203C: .word sub_027E29A8
_02012040: .word 0x00000281
arm_func_end sub_0201202C
arm_func_start sub_02012044
sub_02012044: ; 0x02012044
ldr ip, _02012054 ; =sub_027E29A8
ldr r1, _02012058 ; =0x00000283
mov r2, #3
bx ip
.align 2, 0
_02012054: .word sub_027E29A8
_02012058: .word 0x00000283
arm_func_end sub_02012044
arm_func_start sub_0201205C
sub_0201205C: ; 0x0201205C
ldr ip, _0201206C ; =sub_027E29A8
mov r1, #0x284
mov r2, #2
bx ip
.align 2, 0
_0201206C: .word sub_027E29A8
arm_func_end sub_0201205C
arm_func_start sub_02012070
sub_02012070: ; 0x02012070
ldr ip, _02012080 ; =sub_027E29A8
ldr r1, _02012084 ; =0x00000301
mov r2, #1
bx ip
.align 2, 0
_02012080: .word sub_027E29A8
_02012084: .word 0x00000301
arm_func_end sub_02012070
arm_func_start sub_02012088
sub_02012088: ; 0x02012088
ldr ip, _02012098 ; =sub_027E29A8
ldr r1, _0201209C ; =0x00000302
mov r2, #1
bx ip
.align 2, 0
_02012098: .word sub_027E29A8
_0201209C: .word 0x00000302
arm_func_end sub_02012088
arm_func_start sub_020120A0
sub_020120A0: ; 0x020120A0
ldr ip, _020120B0 ; =sub_027E29A8
ldr r1, _020120B4 ; =0x00000303
mov r2, #1
bx ip
.align 2, 0
_020120B0: .word sub_027E29A8
_020120B4: .word 0x00000303
arm_func_end sub_020120A0
arm_func_start sub_020120B8
sub_020120B8: ; 0x020120B8
ldr ip, _020120C8 ; =sub_027E29A8
mov r1, #0x304
mov r2, #1
bx ip
.align 2, 0
_020120C8: .word sub_027E29A8
arm_func_end sub_020120B8
arm_func_start sub_020120CC
sub_020120CC: ; 0x020120CC
ldr ip, _020120DC ; =sub_027E29A8
ldr r1, _020120E0 ; =0x00000305
mov r2, #1
bx ip
.align 2, 0
_020120DC: .word sub_027E29A8
_020120E0: .word 0x00000305
arm_func_end sub_020120CC
arm_func_start sub_020120E4
sub_020120E4: ; 0x020120E4
ldr ip, _020120F4 ; =sub_027E29A8
ldr r1, _020120F8 ; =0x00000306
mov r2, #9
bx ip
.align 2, 0
_020120F4: .word sub_027E29A8
_020120F8: .word 0x00000306
arm_func_end sub_020120E4
arm_func_start sub_020120FC
sub_020120FC: ; 0x020120FC
ldr ip, _0201210C ; =sub_027E29A8
ldr r1, _02012110 ; =0x00000307
mov r2, #0x5c
bx ip
.align 2, 0
_0201210C: .word sub_027E29A8
_02012110: .word 0x00000307
arm_func_end sub_020120FC
arm_func_start sub_02012114
sub_02012114: ; 0x02012114
ldr ip, _02012124 ; =sub_027E29A8
mov r1, #0x308
mov r2, #2
bx ip
.align 2, 0
_02012124: .word sub_027E29A8
arm_func_end sub_02012114
arm_func_start sub_02012128
sub_02012128: ; 0x02012128
stmdb sp!, {r4, lr}
mov ip, #0
strh ip, [r0]
strh ip, [r0, #2]
strh ip, [r0, #4]
strh ip, [r0, #6]
strh ip, [r0, #8]
ldr r4, _02012194 ; =0x00000309
strh ip, [r0, #0xa]
strh r4, [r0, #0xc]
mov r4, #4
strh r4, [r0, #0xe]
strh r1, [r0, #0x10]
strh r2, [r0, #0x12]
ldrh r1, [sp, #8]
strh r3, [r0, #0x14]
strh r1, [r0, #0x16]
ldrh r2, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r2, lsl #1
strh r1, [r4, #0x10]
mov r1, #1
strh r1, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02012194: .word 0x00000309
arm_func_end sub_02012128
arm_func_start sub_02012198
sub_02012198: ; 0x02012198
stmdb sp!, {r4, lr}
mov r3, #0
strh r3, [r0]
strh r3, [r0, #2]
strh r3, [r0, #4]
strh r3, [r0, #6]
strh r3, [r0, #8]
strh r3, [r0, #0xa]
strh r1, [r0, #0xc]
strh r3, [r0, #0xe]
ldrh r1, [r0, #0xc]
add r4, r0, r3, lsl #1
strh r1, [r4, #0x10]
strh r2, [r4, #0x12]
bl sub_0200F9BC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02012198
arm_func_start sub_020121E0
sub_020121E0: ; 0x020121E0
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r4, [r0, #4]
ldr r1, _0201227C ; =0x027F8878
str r4, [r1, #0x54c]
ldr r2, [r0, #8]
str r2, [r1, #0x550]
str r2, [r4]
ldr r1, [r0, #0xc]
str r1, [r4, #8]
ldr r0, [r0, #0x10]
bl sub_02017638
add r0, sp, #2
add r1, sp, #0
bl sub_020178F4
cmp r0, #0
bne _02012250
bl sub_03036B70
mov r1, #0
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
ldrh r1, [sp, #2]
strh r1, [r0, #4]
ldrh r1, [sp]
strh r1, [r0, #6]
bl sub_03036B24
b _02012270
_02012250:
ldr r0, [r4]
mov r1, #2
strh r1, [r0]
bl sub_03036B70
mov r1, #0
strh r1, [r0]
strh r1, [r0, #2]
bl sub_03036B24
_02012270:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_0201227C: .word 0x027F8878
arm_func_end sub_020121E0
arm_func_start sub_02012280
sub_02012280: ; 0x02012280
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x210
ldr r0, _0201264C ; =0x027F8878
mov r4, #0
ldr r8, [r0, #0x550]
bl sub_0302D4F0
ldr r1, [r8, #0xc]
mov r5, r0
cmp r1, #1
bne _020122DC
mov r0, r4
str r0, [r8, #0xc]
mov r4, #1
bl sub_0201537C
bl sub_0200FE30
ldrh r0, [r8]
cmp r0, #0xa
moveq r0, #8
streqh r0, [r8]
beq _020122DC
cmp r0, #9
moveq r0, #7
streqh r0, [r8]
_020122DC:
ldrh r1, [r8]
add r0, r1, #0xf9
add r0, r0, #0xff00
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _02012310
add r0, r8, #0x100
cmp r1, #7
moveq sl, #1
ldrh sb, [r0, #0x82]
movne sl, #0
b _02012314
_02012310:
mov sb, #0
_02012314:
add r0, r8, #0x100
mov r1, #0
strh r1, [r0, #0x82]
strh r1, [r8, #0x86]
str r1, [r8, #0x14]
str r1, [r8, #0x10]
str r1, [r8, #0x1c]
mov r0, r5
strh r1, [r8, #0xc2]
bl sub_0302D504
cmp r4, #0
beq _0201234C
ldr r0, _02012650 ; =0x0000FFFF
bl sub_0201700C
_0201234C:
cmp sl, #0
movne r0, #0
strneh r0, [r8, #0xf6]
cmp sb, #0
beq _020123A8
mov r7, #0
add r5, r8, #0x128
add r4, r8, #0x8a
mov r6, #1
mov fp, #6
_02012374:
tst sb, r6, lsl r7
beq _0201239C
cmp r7, #0
addeq r2, r4, #0x100
subne r0, r7, #1
mlane r2, r0, fp, r5
mov r1, r7, lsl #0x10
mov r0, sl
mov r1, r1, lsr #0x10
bl sub_02014278
_0201239C:
add r7, r7, #1
cmp r7, #0x10
blt _02012374
_020123A8:
add r0, r8, #0x128
mov r1, #0
mov r2, #0x5a
bl sub_0302D860
add r0, sp, #0x10
bl sub_02012114
ldrh r1, [r0, #4]
cmp r1, #0
beq _020123D8
mov r0, #0x308
bl sub_02012660
b _02012640
_020123D8:
ldrh r4, [r0, #6]
add r0, sp, #0x10
bl sub_0201205C
ldrh r1, [r0, #4]
cmp r1, #0
beq _020123FC
mov r0, #0x284
bl sub_02012660
b _02012640
_020123FC:
ldrh r1, [r0, #6]
cmp r4, #0x20
bgt _02012440
bge _02012514
cmp r4, #0
bgt _0201241C
beq _02012538
b _02012618
_0201241C:
cmp r4, #0x12
bgt _02012618
cmp r4, #0x10
blt _02012618
beq _02012558
cmp r4, #0x11
cmpne r4, #0x12
beq _020125B0
b _02012618
_02012440:
cmp r4, #0x30
bgt _02012450
beq _02012458
b _02012618
_02012450:
cmp r4, #0x40
bne _02012618
_02012458:
add r0, r1, #0xfe
add r0, r0, #0xff00
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _020124DC
add r0, r8, #0x8a
add r1, sp, #0xa
add r0, r0, #0x100
mov r2, #6
bl sub_0302D91C
mov r6, #0
add r5, sp, #0xa
mov r4, #3
b _020124D0
_02012494:
add r0, sp, #0x10
mov r1, r5
mov r2, r4
bl sub_020117BC
ldrh r0, [r0, #4]
cmp r0, #0
beq _020124C0
cmp r0, #7
cmpne r0, #0xc
beq _020124CC
b _02012514
_020124C0:
mov r0, #3
strh r0, [r8]
b _02012514
_020124CC:
add r6, r6, #1
_020124D0:
cmp r6, #2
blt _02012494
b _02012514
_020124DC:
cmp r1, #1
bne _02012514
add r0, sp, #4
mov r1, #0xff
mov r2, #6
bl sub_0302D860
add r1, sp, #4
add r0, sp, #0x10
mov r2, #3
bl sub_020117BC
ldrh r0, [r0, #4]
cmp r0, #0
moveq r0, #3
streqh r0, [r8]
_02012514:
add r0, sp, #0x10
mov r1, #1
bl sub_02011558
ldrh r1, [r0, #4]
cmp r1, #0
beq _02012538
mov r0, #0
bl sub_02012660
b _02012640
_02012538:
add r0, sp, #0x10
bl sub_02012088
ldrh r1, [r0, #4]
cmp r1, #0
beq _02012558
ldr r0, _02012654 ; =0x00000302
bl sub_02012660
b _02012640
_02012558:
add r0, r8, #0x100
ldrh r0, [r0, #0xee]
cmp r0, #0
bne _02012598
add r0, sp, #0x10
mov r1, #1
bl sub_02011D74
ldrh r1, [r0, #4]
cmp r1, #0
beq _0201258C
ldr r0, _02012658 ; =0x0000020E
bl sub_02012660
b _02012640
_0201258C:
add r0, r8, #0x100
mov r1, #1
strh r1, [r0, #0xee]
_02012598:
mov r0, #2
strh r0, [r8]
mov r0, #0
str r0, [r8, #0x198]
bl sub_0200FF5C
b _02012628
_020125B0:
cmp r1, #0
bne _020125EC
mov r0, #1
mov r1, #0
str r0, [sp]
add r0, sp, #0x10
mov r2, r1
mov r3, #0x14
bl sub_02012128
ldrh r1, [r0, #4]
cmp r1, #0
beq _020125EC
ldr r0, _0201265C ; =0x00000309
bl sub_02012660
b _02012640
_020125EC:
add r0, sp, #0x10
bl sub_02012088
ldrh r1, [r0, #4]
cmp r1, #0
beq _0201260C
ldr r0, _02012654 ; =0x00000302
bl sub_02012660
b _02012640
_0201260C:
mov r0, #2
strh r0, [r8]
b _02012628
_02012618:
mov r0, #0x308
mov r1, #0
bl sub_02012660
b _02012640
_02012628:
bl sub_03036B70
mov r1, #1
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02012640:
add sp, sp, #0x210
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0201264C: .word 0x027F8878
_02012650: .word 0x0000FFFF
_02012654: .word 0x00000302
_02012658: .word 0x0000020E
_0201265C: .word 0x00000309
arm_func_end sub_02012280
arm_func_start sub_02012660
sub_02012660: ; 0x02012660
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03036B70
mov r1, #1
strh r1, [r0]
strh r1, [r0, #2]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02012660
arm_func_start sub_02012690
sub_02012690: ; 0x02012690
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x200
ldr r0, _0201273C ; =0x027F8878
ldr r4, [r0, #0x550]
ldrh r0, [r4]
cmp r0, #2
beq _020126C8
bl sub_03036B70
mov r1, #2
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03036B24
b _02012730
_020126C8:
add r0, sp, #0
bl sub_02012070
ldrh r5, [r0, #4]
cmp r5, #0
beq _02012704
bl sub_03036B70
mov r2, #2
mov r1, #1
strh r2, [r0]
strh r1, [r0, #2]
add r1, r1, #0x300
strh r1, [r0, #4]
strh r5, [r0, #6]
bl sub_03036B24
b _02012730
_02012704:
mov r0, #1
strh r0, [r4]
bl sub_03034A0C
mov r0, #0
strh r0, [r4]
bl sub_03036B70
mov r1, #2
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02012730:
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201273C: .word 0x027F8878
arm_func_end sub_02012690
arm_func_start sub_02012740
sub_02012740: ; 0x02012740
stmdb sp!, {r4, lr}
sub sp, sp, #0x200
ldr r1, _020127F8 ; =0x027F8878
ldr r0, [r0, #4]
ldr r4, [r1, #0x550]
mov r2, #0x40
add r1, r4, #0xe8
bl sub_0302D91C
add r0, r4, #0x100
ldrh r1, [r0, #0x1a]
ldrh r0, [r0, #0xf4]
mov r2, #1
tst r0, r2, lsl r1
bne _02012794
bl sub_03036B70
mov r1, #7
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
bl sub_03036B24
b _020127EC
_02012794:
ldrh r1, [r4, #0xf8]
add r0, sp, #0
bl sub_02011E38
ldrh r4, [r0, #4]
cmp r4, #0
beq _020127D4
bl sub_03036B70
mov r1, #7
strh r1, [r0]
mov r2, #1
ldr r1, _020127FC ; =0x00000212
strh r2, [r0, #2]
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
b _020127EC
_020127D4:
bl sub_03036B70
mov r1, #7
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_020127EC:
add sp, sp, #0x200
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020127F8: .word 0x027F8878
_020127FC: .word 0x00000212
arm_func_end sub_02012740
arm_func_start sub_02012800
sub_02012800: ; 0x02012800
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x2b8
ldr r1, _02012A84 ; =0x027F8878
add r5, sp, #0xb8
ldr r4, [r1, #0x550]
ldrh r1, [r4]
cmp r1, #2
bne _0201282C
ldr r1, [r4, #0xc8]
tst r1, #1
beq _02012850
_0201282C:
bl sub_03036B70
mov r1, #8
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #0
strh r1, [r0, #8]
bl sub_03036B24
b _02012A78
_02012850:
add r1, r4, #0x100
ldrh r2, [r1, #0x1a]
mov r3, #1
ldrh ip, [r1, #0xf6]
mov r2, r3, lsl r2
ldr r6, [r0, #4]
tst ip, r2, asr #1
bne _02012894
bl sub_03036B70
mov r1, #8
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
mov r1, #0
strh r1, [r0, #8]
bl sub_03036B24
b _02012A78
_02012894:
strh r3, [r4, #0xe6]
mov r0, #0
strh r0, [r1, #0x88]
bl sub_0302D4F0
add r1, r4, #0x100
mov r2, #0
strh r2, [r1, #0x82]
strh r2, [r4, #0x86]
bl sub_0302D504
mov r1, r5
add r2, r4, #0x100
mov r3, #1
mov r0, #8
strh r3, [r2, #0xee]
bl sub_0200FBC0
cmp r0, #0
beq _02012A78
mov r0, r5
bl sub_020120A0
ldrh r1, [r0, #4]
cmp r1, #0
beq _020128F8
ldr r0, _02012A88 ; =0x00000303
bl sub_02012A8C
b _02012A78
_020128F8:
cmp r6, #0
movne r0, #1
moveq r0, #0
mov r0, r0, lsl #0x10
mov r6, r0, lsr #0x10
mov r0, r5
mov r1, r6
mov r2, #0
mov r3, #1
bl sub_020115AC
ldrh r1, [r0, #4]
cmp r1, #0
beq _02012938
mov r0, #1
bl sub_02012A8C
b _02012A78
_02012938:
strh r6, [r4, #0xc6]
add r1, sp, #0x38
mov r0, #0
mov r2, #0x80
add r6, r4, #0xe8
bl sub_0302D764
add r0, sp, #0x38
mov r1, r6
bl sub_0200FAFC
add r1, sp, #0x18
mov r0, #0
mov r2, #0x20
bl sub_0302D764
ldr r1, [r6, #8]
mov r0, r5
strh r1, [sp, #0x18]
ldr r2, [r6, #8]
mov r3, #0
mov r2, r2, lsr #0x10
strh r2, [sp, #0x1a]
ldrh r5, [r6, #0xc]
mov r2, #2
strh r5, [sp, #0x1c]
strh r3, [sp, #0x1e]
str r2, [sp]
ldrh r3, [r6, #0x32]
mov r2, #3
str r3, [sp, #4]
str r2, [sp, #8]
str r2, [sp, #0xc]
ldrh r2, [r6, #4]
add r3, sp, #0x38
add r2, r2, #0x10
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
str r2, [sp, #0x10]
str r3, [sp, #0x14]
ldrh r3, [r6, #0x18]
mov r1, #0x20
add r2, sp, #0x18
bl sub_020118B0
ldrh r1, [r0, #4]
cmp r1, #0
beq _020129F4
mov r0, #9
bl sub_02012A8C
b _02012A78
_020129F4:
ldrh r0, [r6, #0x14]
cmp r0, #0
ldrh r0, [r6, #0x34]
movne r1, #0x2a
moveq r1, #0
add r0, r0, r1
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200FF90
ldrh r0, [r6, #0x14]
cmp r0, #0
movne r1, #6
ldrh r0, [r6, #0x36]
moveq r1, #0
add r0, r0, r1
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200FFE0
bl sub_03036B70
mov r1, #7
strh r1, [r4]
mov r1, #8
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
strh r1, [r0, #8]
ldrh r1, [r4, #0x30]
strh r1, [r0, #0x2c]
ldrh r1, [r4, #0x32]
strh r1, [r0, #0x2e]
bl sub_03036B24
mov r0, #1
strh r0, [r4, #0xc2]
_02012A78:
add sp, sp, #0x2b8
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02012A84: .word 0x027F8878
_02012A88: .word 0x00000303
arm_func_end sub_02012800
arm_func_start sub_02012A8C
sub_02012A8C: ; 0x02012A8C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03036B70
mov r1, #8
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
mov r1, #0
strh r1, [r0, #8]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02012A8C
arm_func_start sub_02012AC8
sub_02012AC8: ; 0x02012AC8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x208
ldr r0, _02012C84 ; =0x027F8878
ldr sl, [r0, #0x550]
ldrh r0, [sl]
cmp r0, #7
beq _02012B00
bl sub_03036B70
mov r1, #9
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03036B24
b _02012C78
_02012B00:
mov r0, #0
strh r0, [sl, #0xf6]
mov r8, #1
_02012B0C:
add r0, sl, #0x100
ldrh r0, [r0, #0x82]
mov r7, #1
tst r0, r7, lsl r8
beq _02012BDC
add r0, sl, #0x128
sub r1, r8, #1
mov r2, #6
mla r0, r1, r2, r0
add r1, sp, #0
bl sub_0302D91C
mov sb, #0
add r6, sp, #8
add r5, sp, #0
mov r4, #3
b _02012B78
_02012B4C:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_020117BC
ldrh r0, [r0, #4]
cmp r0, #0
beq _02012B80
cmp r0, #7
cmpne r0, #0xc
bne _02012B80
add sb, sb, #1
_02012B78:
cmp sb, #2
blt _02012B4C
_02012B80:
bl sub_0302D4F0
add r1, sl, #0x100
ldrh r2, [r1, #0x82]
tst r2, r7, lsl r8
beq _02012BD8
mvn r3, r7, lsl r8
and r2, r2, r3
strh r2, [r1, #0x82]
ldrh r2, [sl, #0x86]
add r1, sl, r8, lsl #3
and r2, r2, r3
strh r2, [sl, #0x86]
mov r2, #0
str r2, [r1, #0x738]
str r2, [r1, #0x73c]
bl sub_0302D504
mov r0, r8, lsl #0x10
mov r1, r0, lsr #0x10
add r2, sp, #0
mov r0, #1
bl sub_02014278
b _02012BDC
_02012BD8:
bl sub_0302D504
_02012BDC:
add r8, r8, #1
cmp r8, #0x10
blt _02012B0C
add r0, sp, #8
mov r1, #1
bl sub_02011558
ldrh r1, [r0, #4]
mov r0, #0
cmp r1, #0
beq _02012C0C
bl sub_02012C8C
b _02012C78
_02012C0C:
strh r0, [sl, #0xc2]
mov r1, #3
strh r1, [sl]
add r0, sp, #8
bl sub_02012088
ldrh r1, [r0, #4]
cmp r1, #0
beq _02012C38
ldr r0, _02012C88 ; =0x00000302
bl sub_02012C8C
b _02012C78
_02012C38:
mov r0, #2
strh r0, [sl]
mov r1, #0
str r1, [sl, #0x198]
add r0, sl, #0x100
strh r1, [r0, #0x96]
add r0, sl, #0x19c
mov r2, #0x50
bl sub_0302D860
bl sub_0200FF5C
bl sub_03036B70
mov r1, #9
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02012C78:
add sp, sp, #0x208
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_02012C84: .word 0x027F8878
_02012C88: .word 0x00000302
arm_func_end sub_02012AC8
arm_func_start sub_02012C8C
sub_02012C8C: ; 0x02012C8C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03036B70
mov r1, #9
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02012C8C
arm_func_start sub_02012CC0
sub_02012CC0: ; 0x02012CC0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x248
ldr r1, _02013010 ; =0x027F8878
add r4, sp, #0x48
ldr r7, [r1, #0x550]
ldrh r1, [r7]
cmp r1, #2
cmpne r1, #3
cmpne r1, #5
beq _02012D0C
bl sub_03036B70
mov r1, #0xa
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
bl sub_03036B24
b _02013004
_02012D0C:
ldr r1, [r0, #4]
add r2, r7, #0x100
str r1, [r7, #0x184]
ldrh r5, [r0, #2]
add r1, sp, #0x10
strh r5, [r2, #0x90]
ldrh r6, [r0, #8]
add r0, r0, #0xa
mov r2, #6
bl sub_0302D91C
ldrh r1, [sp, #0x10]
ldr r0, _02013014 ; =0x0000FFFF
cmp r1, r0
beq _02012D50
tst r1, #1
bicne r0, r1, #1
strneh r0, [sp, #0x10]
_02012D50:
cmp r5, #0
bne _02012D7C
bl sub_03036B70
mov r1, #0xa
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
bl sub_03036B24
b _02013004
_02012D7C:
add r0, r7, #0x100
ldrh r0, [r0, #0xf4]
mov r1, #1
tst r0, r1, lsl r5
bne _02012DB4
bl sub_03036B70
mov r1, #0xa
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
bl sub_03036B24
b _02013004
_02012DB4:
mov r0, #2
strh r0, [r7, #0xe6]
mov r0, r4
bl sub_02012114
ldrh r1, [r0, #4]
cmp r1, #0
beq _02012DE0
mov r0, #0x308
mov r2, #0
bl sub_02013564
b _02013004
_02012DE0:
ldrh r0, [r0, #6]
cmp r0, #0x10
bne _02012E5C
mov r1, r4
mov r0, #0xa
bl sub_0200FBC0
cmp r0, #0
beq _02013004
mov r0, r4
bl sub_020120A0
ldrh r1, [r0, #4]
mov r2, #0
cmp r1, #0
beq _02012E24
ldr r0, _02013018 ; =0x00000303
bl sub_02013564
b _02013004
_02012E24:
mov r0, #3
mov r1, #1
strh r0, [r7]
mov r0, r4
mov r3, r1
bl sub_020115AC
ldrh r1, [r0, #4]
mov r0, #1
cmp r1, #0
beq _02012E58
mov r2, #0
bl sub_02013564
b _02013004
_02012E58:
strh r0, [r7, #0xc6]
_02012E5C:
ldr r0, _02013014 ; =0x0000FFFF
mov r3, #5
strh r3, [r7]
add r1, sp, #0x26
mov r2, #0x20
bl sub_0302D764
add r0, sp, #0x17
mov r1, #0
mov r2, #0xf
strb r5, [sp, #0x16]
bl sub_0302D860
add r1, sp, #0x26
str r1, [sp]
mov r1, #1
str r1, [sp, #4]
add r0, sp, #0x16
str r0, [sp, #8]
ldr r1, _0201301C ; =0x0000011E
add r2, sp, #0x10
str r6, [sp, #0xc]
mov r0, r4
mov r3, #0
bl sub_0201160C
mov r4, r0
ldrh r1, [r4, #4]
cmp r1, #0
beq _02012ED8
mov r0, #2
mov r2, #0
bl sub_02013564
b _02013004
_02012ED8:
bl sub_03036B70
ldrh r1, [r4, #8]
mov r6, r0
cmp r1, #0
bne _02012F10
mov r0, #0xa
strh r0, [r6]
mov r1, #0
strh r1, [r6, #2]
mov r0, #4
strh r0, [r6, #8]
strh r5, [r6, #0x10]
strh r1, [r6, #0x12]
b _02012FFC
_02012F10:
ldr r1, [r7, #0x184]
mov r0, #0
add r1, r1, #0x40
mov r2, #0x80
bl sub_0302D764
ldrh r2, [r4, #0xa]
ldr r1, [r7, #0x184]
add r0, r4, #0xa
mov r2, r2, lsl #1
bl sub_0302D91C
mov r0, #0xa
strh r0, [r6]
mov r0, #0
strh r0, [r6, #2]
mov r0, #5
strh r0, [r6, #8]
ldrh r0, [r4, #0x40]
strh r0, [r6, #0x10]
ldrh r0, [r4, #0xc]
and r0, r0, #0xff
bl sub_02013020
mov r7, r0
bl sub_0200FDC8
strh r0, [r6, #0x12]
mov r0, r7
bl sub_02013034
ldrh r1, [r4, #0x14]
add r0, r4, #0xe
strh r1, [r6, #0x14]
add r1, r6, #0xa
mov r2, #6
bl sub_0302D91C
add r0, r4, #0x16
add r1, r6, #0x16
mov r2, #0x20
bl sub_0302D78C
ldrh r0, [r4, #0x46]
strh r0, [r6, #0x36]
cmp r0, #0x80
bls _02012FD4
mov r0, #0xa
strh r0, [r6]
mov r1, #0
strh r1, [r6, #2]
mov r0, #4
strh r0, [r6, #8]
strh r5, [r6, #0x10]
strh r1, [r6, #0x12]
b _02012FFC
_02012FD4:
add r1, r6, #0x38
mov r0, #0
mov r2, #0x80
bl sub_0302D764
ldrh r1, [r6, #0x36]
add r0, r4, #0x4a
add r2, r1, #1
add r1, r6, #0x38
bic r2, r2, #1
bl sub_0302D78C
_02012FFC:
mov r0, r6
bl sub_03036B24
_02013004:
add sp, sp, #0x248
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02013010: .word 0x027F8878
_02013014: .word 0x0000FFFF
_02013018: .word 0x00000303
_0201301C: .word 0x0000011E
arm_func_end sub_02012CC0
arm_func_start sub_02013020
sub_02013020: ; 0x02013020
tst r0, #2
mov r0, r0, asr #2
addeq r0, r0, #0x19
and r0, r0, #0xff
bx lr
arm_func_end sub_02013020
arm_func_start sub_02013034
sub_02013034: ; 0x02013034
ldr r2, _0201304C ; =0x027FFF98
ldrh r1, [r2]
eor r0, r0, r1, lsl #1
eor r0, r0, r0, lsr #16
strh r0, [r2]
bx lr
.align 2, 0
_0201304C: .word 0x027FFF98
arm_func_end sub_02013034
arm_func_start sub_02013050
sub_02013050: ; 0x02013050
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc8
sub sp, sp, #0x400
ldr r1, _02013550 ; =0x027F8878
mov sb, r0
ldr r8, [r1, #0x550]
ldrh r0, [r8]
cmp r0, #2
cmpne r0, #3
cmpne r0, #5
beq _020130A0
bl sub_03036B70
mov r1, #0x26
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
bl sub_03036B24
b _02013540
_020130A0:
ldr r0, [sb, #4]
add r1, sp, #0x18
str r0, [r8, #0x184]
ldrh sl, [sb, #2]
add r0, r8, #0x100
strh sl, [r0, #0x90]
ldrh r3, [sb, #0xa]
add r0, sb, #0xc
str r3, [sp, #0x10]
mov r2, #6
bl sub_0302D91C
ldrh r5, [sb, #0x12]
ldrh fp, [sb, #0x36]
cmp r5, #2
beq _020130E8
cmp r5, #3
beq _020130F4
b _02013100
_020130E8:
mov r6, #1
mov r5, #0
b _02013104
_020130F4:
mov r6, #1
mov r5, r6
b _02013104
_02013100:
mov r6, #0
_02013104:
add r1, sp, #0x4e
add r0, sb, #0x16
mov r2, #0x20
ldrh r4, [sb, #0x14]
bl sub_0302D91C
ldrh r1, [sp, #0x18]
ldr r0, _02013554 ; =0x0000FFFF
ldrh r7, [sb, #8]
cmp r1, r0
beq _02013138
tst r1, #1
bicne r0, r1, #1
strneh r0, [sp, #0x18]
_02013138:
add r0, r8, #0x100
ldrh r1, [r0, #0xf4]
mov r0, sl, lsl #0x11
ands sl, r1, r0, lsr #16
beq _0201317C
ldr r0, [r8, #0xc8]
tst r0, #1
cmpne r5, #1
bne _0201317C
ldr r0, [sb, #4]
cmp r0, #0
beq _0201317C
tst r0, #3
bne _0201317C
ldrh r0, [sb, #8]
cmp r0, #0x40
bhs _020131A0
_0201317C:
bl sub_03036B70
mov r1, #0x26
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
bl sub_03036B24
b _02013540
_020131A0:
mov r0, #2
strh r0, [r8, #0xe6]
add r0, sp, #0x70
bl sub_02012114
ldrh r1, [r0, #4]
cmp r1, #0
beq _020131CC
mov r0, #0x308
mov r2, #1
bl sub_02013564
b _02013540
_020131CC:
ldrh r0, [r0, #6]
cmp r0, #0x10
bne _0201324C
add r1, sp, #0x70
mov r0, #0x26
bl sub_0200FBC0
cmp r0, #0
beq _02013540
add r0, sp, #0x70
bl sub_020120A0
ldrh r1, [r0, #4]
cmp r1, #0
beq _02013210
ldr r0, _02013558 ; =0x00000303
mov r2, #1
bl sub_02013564
b _02013540
_02013210:
mov r0, #3
mov r1, #1
strh r0, [r8]
add r0, sp, #0x70
mov r3, r1
mov r2, #0
bl sub_020115AC
ldrh r1, [r0, #4]
mov r0, #1
cmp r1, #0
beq _02013248
mov r2, r0
bl sub_02013564
b _02013540
_02013248:
strh r0, [r8, #0xc6]
_0201324C:
add r0, r8, #0x100
ldrh r0, [r0, #0xee]
cmp r5, #0
bne _0201329C
cmp r0, #1
bne _020132D8
add r0, sp, #0x70
mov r1, #0
bl sub_02011D74
ldrh r1, [r0, #4]
cmp r1, #0
beq _0201328C
ldr r0, _0201355C ; =0x0000020E
mov r2, #1
bl sub_02013564
b _02013540
_0201328C:
add r0, r8, #0x100
mov r1, #0
strh r1, [r0, #0xee]
b _020132D8
_0201329C:
cmp r0, #0
bne _020132D8
add r0, sp, #0x70
mov r1, #1
bl sub_02011D74
ldrh r1, [r0, #4]
cmp r1, #0
beq _020132CC
ldr r0, _0201355C ; =0x0000020E
mov r2, #1
bl sub_02013564
b _02013540
_020132CC:
add r0, r8, #0x100
mov r1, #1
strh r1, [r0, #0xee]
_020132D8:
cmp r6, #1
bne _02013330
add r0, sp, #0x2e
mov r1, #0xff
mov r2, #0x20
bl sub_0302D860
cmp fp, #0x20
bhi _02013308
add r0, sp, #0x2e
mov r2, fp
mov r1, #0
bl sub_0302D860
_02013308:
add r1, sp, #0x2e
add r0, sp, #0x70
bl sub_02011D00
ldrh r1, [r0, #4]
cmp r1, #0
beq _02013330
ldr r0, _02013560 ; =0x0000020D
mov r2, #1
bl sub_02013564
b _02013540
_02013330:
mov r6, #0
mov r3, #5
add r0, sp, #0x1e
mov r1, r6
mov r2, #0x10
strh r3, [r8]
bl sub_0302D860
mov r3, #1
add r1, sp, #0x1e
mov r2, r3
_02013358:
tst sl, r2, lsl r3
addne r0, r6, #1
movne r0, r0, lsl #0x10
strneb r3, [r1, r6]
movne r6, r0, lsr #0x10
add r0, r3, #1
mov r0, r0, lsl #0x10
mov r3, r0, lsr #0x10
cmp r3, #0xf
blo _02013358
sub r0, r7, #0x40
mov r1, #0x42
bl sub_030365C4
add r2, sp, #0x4e
stmia sp, {r2, r5}
add r1, sp, #0x1e
str r1, [sp, #8]
ldr r1, [sp, #0x10]
sub r5, r7, r0, lsl #1
str r1, [sp, #0xc]
add r2, sp, #0x18
add r0, sp, #0x70
mov r3, r4
add r1, r5, #0x5e
bl sub_0201160C
mov r5, r0
ldrh r1, [r5, #4]
cmp r1, #0
beq _020133DC
mov r0, #2
mov r2, #1
bl sub_02013564
b _02013540
_020133DC:
bl sub_03036B70
ldrh r1, [r5, #8]
mov r6, r0
cmp r1, #0
bne _02013418
mov r0, #0x26
strh r0, [r6]
mov r1, #0
strh r1, [r6, #2]
mov r0, #4
strh r0, [r6, #8]
strh r1, [r6, #0xe]
mov r0, sl, asr #1
strh r0, [r6, #0xa]
b _02013538
_02013418:
ldr sb, [r8, #0x184]
mov r2, r7
mov r1, sb
mov r0, #0
add r8, r5, #0xa
bl sub_0302D764
mov r7, #0
b _02013504
_02013438:
ldrh r1, [r8]
mov r0, r8
mov r1, r1, lsl #0x11
mov fp, r1, lsr #0x10
mov r1, sb
mov r2, fp
bl sub_0302D91C
cmp r4, #0
beq _020134C0
ldrh r2, [sb, #0xa]
cmp r2, #0
moveq r0, #0
beq _020134A4
cmp r2, #0x20
movhi r0, #0
bhi _020134A4
mov r1, #0
b _02013498
_02013480:
add r0, sb, r1
ldrb r0, [r0, #0xc]
cmp r0, #0
movne r0, #1
bne _020134A4
add r1, r1, #1
_02013498:
cmp r1, r2
blt _02013480
mov r0, #0
_020134A4:
cmp r0, #0
bne _020134C0
add r0, sp, #0x4e
add r1, sb, #0xc
mov r2, #0x20
strh r4, [sb, #0xa]
bl sub_0302D91C
_020134C0:
add r0, r6, r7, lsl #2
str sb, [r0, #0x10]
ldrh r0, [r8, #2]
and r0, r0, #0xff
bl sub_02013020
str r0, [sp, #0x14]
bl sub_0200FDC8
add r1, r6, r7, lsl #1
strh r0, [r1, #0x50]
ldr r0, [sp, #0x14]
bl sub_02013034
add sb, sb, fp
tst sb, #2
addne r0, sb, #2
add r8, r8, fp
bicne sb, r0, #3
add r7, r7, #1
_02013504:
ldrh r0, [r5, #8]
cmp r7, r0
blt _02013438
mov r0, #0x26
strh r0, [r6]
mov r0, #0
strh r0, [r6, #2]
mov r0, #5
strh r0, [r6, #8]
ldrh r1, [r5, #8]
mov r0, sl, asr #1
strh r1, [r6, #0xe]
strh r0, [r6, #0xa]
_02013538:
mov r0, r6
bl sub_03036B24
_02013540:
add sp, sp, #0xc8
add sp, sp, #0x400
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02013550: .word 0x027F8878
_02013554: .word 0x0000FFFF
_02013558: .word 0x00000303
_0201355C: .word 0x0000020E
_02013560: .word 0x0000020D
arm_func_end sub_02013050
arm_func_start sub_02013564
sub_02013564: ; 0x02013564
stmdb sp!, {r4, r5, r6, lr}
mov r4, r2
mov r6, r0
mov r5, r1
bl sub_03036B70
cmp r4, #0
movne r1, #0x26
moveq r1, #0xa
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
strh r6, [r0, #4]
strh r5, [r0, #6]
bl sub_03036B24
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_02013564
arm_func_start sub_020135AC
sub_020135AC: ; 0x020135AC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x200
ldr r0, _02013674 ; =0x027F8878
add r4, sp, #0
ldr r5, [r0, #0x550]
ldrh r0, [r5]
cmp r0, #5
beq _020135E8
bl sub_03036B70
mov r1, #0xb
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03036B24
b _02013668
_020135E8:
mov r0, r4
bl sub_02012088
ldrh r1, [r0, #4]
cmp r1, #0
beq _02013608
ldr r0, _02013678 ; =0x00000302
bl sub_02013680
b _02013668
_02013608:
mov r0, #2
strh r0, [r5]
add r0, r5, #0x100
ldrh r0, [r0, #0xee]
cmp r0, #0
bne _02013650
mov r0, r4
mov r1, #1
bl sub_02011D74
ldrh r1, [r0, #4]
cmp r1, #0
beq _02013644
ldr r0, _0201367C ; =0x0000020E
bl sub_02013680
b _02013668
_02013644:
add r0, r5, #0x100
mov r1, #1
strh r1, [r0, #0xee]
_02013650:
bl sub_03036B70
mov r1, #0xb
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02013668:
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02013674: .word 0x027F8878
_02013678: .word 0x00000302
_0201367C: .word 0x0000020E
arm_func_end sub_020135AC
arm_func_start sub_02013680
sub_02013680: ; 0x02013680
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03036B70
mov r1, #0xb
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02013680
arm_func_start sub_020136B4
sub_020136B4: ; 0x020136B4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x250
ldr r1, _02013C44 ; =0x027F8878
add r4, sp, #0x50
ldr r7, [r1, #0x550]
ldr r5, [r1, #0x54c]
ldrh r1, [r7]
mov r6, r0
cmp r1, #2
bne _020136E8
ldr r0, [r7, #0xc8]
tst r0, #1
beq _0201370C
_020136E8:
bl sub_03036B70
mov r1, #0xc
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #6
strh r1, [r0, #8]
bl sub_03036B24
b _02013C38
_0201370C:
ldr r0, [r6, #4]
add r1, r5, #0x10
mov r2, #0xc0
bl sub_0302D91C
ldrh r0, [r5, #0x4c]
cmp r0, #0x10
blo _02013758
ldrb r0, [r5, #0x5b]
tst r0, #1
bne _02013758
bl sub_03036B70
mov r1, #0xc
strh r1, [r0]
mov r1, #0xb
strh r1, [r0, #2]
mov r1, #6
strh r1, [r0, #8]
bl sub_03036B24
b _02013C38
_02013758:
ldrh r1, [r5, #0x46]
add r0, r7, #0x100
mov r2, #1
ldrh r0, [r0, #0xf4]
mov r1, r2, lsl r1
tst r1, r0
beq _02013780
rsb r0, r2, #0x2000
tst r0, r1, asr #1
bne _020137A0
_02013780:
bl sub_03036B70
mov r1, #0xc
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
strh r1, [r0, #8]
bl sub_03036B24
b _02013C38
_020137A0:
bl sub_03036B70
mov r1, #0xc
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #6
strh r1, [r0, #8]
bl sub_03036B24
add r0, r7, #0x100
ldrh r1, [r0, #0xec]
cmp r1, #1
ldrh r1, [r5, #0x3e]
bne _020137E8
tst r1, #1
movne r1, #1
strneh r1, [r0, #0xec]
moveq r1, #2
b _020137F8
_020137E8:
tst r1, #2
movne r1, #2
strneh r1, [r0, #0xec]
moveq r1, #1
_020137F8:
streqh r1, [r0, #0xec]
ldrh r0, [r5, #0x3c]
tst r0, #0x20
movne r1, #1
add r0, r7, #0x100
moveq r1, #0
strh r1, [r0, #0xee]
ldrh r0, [r5, #0x4c]
mov r1, r4
cmp r0, #0
moveq r0, #3
movne r0, #2
strh r0, [r7, #0xe6]
mov r0, #0xc
bl sub_0200FBC0
cmp r0, #0
beq _02013C38
mov r0, r4
mov r1, #0
bl sub_02011EF0
ldrh r1, [r0, #4]
cmp r1, #0
beq _02013864
ldr r0, _02013C48 ; =0x00000216
mov r2, #0
bl sub_02013C58
b _02013C38
_02013864:
ldrh r0, [r5, #0x4c]
cmp r0, #0x10
bhs _020138C0
ldrh r1, [r5, #0x42]
cmp r1, #0
moveq r0, #1
beq _0201388C
ldr r0, _02013C4C ; =0x00002710
bl sub_030363B8
add r0, r0, #1
_0201388C:
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
cmp r1, #0xff
movhi r1, #0xff
mov r0, r4
bl sub_02011CA4
ldrh r1, [r0, #4]
cmp r1, #0
beq _020138C0
ldr r0, _02013C50 ; =0x0000020B
mov r2, #0
bl sub_02013C58
b _02013C38
_020138C0:
mov r0, r4
bl sub_020120A0
ldrh r1, [r0, #4]
mov r2, #0
cmp r1, #0
beq _020138E4
ldr r0, _02013C54 ; =0x00000303
bl sub_02013C58
b _02013C38
_020138E4:
mov r0, #3
strh r0, [r7]
ldr r0, [r6, #0x20]
mov r3, #1
cmp r0, #0
movne r0, #1
moveq r0, #0
mov r0, r0, lsl #0x10
mov r8, r0, lsr #0x10
mov r0, r4
mov r1, r8
bl sub_020115AC
ldrh r1, [r0, #4]
cmp r1, #0
beq _02013930
mov r0, #1
mov r2, #0
bl sub_02013C58
b _02013C38
_02013930:
strh r8, [r7, #0xc6]
add r1, sp, #0xc
add r0, r5, #0x10
mov r2, #0x40
bl sub_0302D91C
ldrh r0, [r7, #0xe6]
cmp r0, #2
bne _0201398C
mov r0, #0x20
strh r0, [sp, #0x16]
ldr r0, [r5, #0x54]
add r1, sp, #0x20
strh r0, [sp, #0x18]
ldr r2, [r5, #0x54]
add r0, r6, #8
mov r2, r2, lsr #0x10
strh r2, [sp, #0x1a]
ldrh ip, [r5, #0x58]
mov r3, #0
mov r2, #0x18
strh ip, [sp, #0x1c]
strh r3, [sp, #0x1e]
bl sub_0302D91C
_0201398C:
add r2, sp, #0xc
mov r0, r4
mov r1, #0x7d0
bl sub_020116C4
ldrh r1, [r0, #4]
cmp r1, #0
ldreqh r2, [r0, #6]
cmpeq r2, #0
beq _020139C0
ldrh r2, [r0, #6]
mov r0, #3
bl sub_02013C58
b _02013C38
_020139C0:
add r1, r7, #0x8a
add r0, r0, #8
add r1, r1, #0x100
mov r2, #6
bl sub_0302D91C
add r0, r7, #0x8a
add r1, sp, #6
add r0, r0, #0x100
mov r2, #6
bl sub_0302D91C
ldrh r2, [r6, #0x26]
add r1, sp, #6
mov r0, r4
mov r3, #0x7d0
bl sub_0201173C
ldrh r1, [r0, #4]
cmp r1, #0xc
ldreqh r2, [r0, #6]
cmpeq r2, #0x13
bne _02013A30
bl sub_03036B70
mov r1, #0xc
strh r1, [r0]
strh r1, [r0, #2]
mov r1, #6
strh r1, [r0, #8]
bl sub_03036B24
b _02013C38
_02013A30:
cmp r1, #0
ldreqh r2, [r0, #6]
cmpeq r2, #0
beq _02013A50
ldrh r2, [r0, #6]
mov r0, #4
bl sub_02013C58
b _02013C38
_02013A50:
add r0, r7, #0x8a
add r1, sp, #0
add r0, r0, #0x100
mov r2, #6
bl sub_0302D91C
add r1, sp, #0
mov r0, r4
mov r2, #1
mov r3, #0x7d0
bl sub_02011834
mov r4, r0
bl sub_0302D4F0
ldrh r2, [r4, #4]
mov r6, r0
cmp r2, #0xc
ldreqh r1, [r4, #6]
cmpeq r1, #0x13
bne _02013ABC
bl sub_0302D504
bl sub_03036B70
mov r1, #0xc
strh r1, [r0]
strh r1, [r0, #2]
mov r1, #6
strh r1, [r0, #8]
bl sub_03036B24
b _02013C38
_02013ABC:
cmp r2, #0
ldreqh r0, [r4, #6]
cmpeq r0, #0
beq _02013AE8
mov r0, r6
bl sub_0302D504
ldrh r1, [r4, #4]
ldrh r2, [r4, #6]
mov r0, #6
bl sub_02013C58
b _02013C38
_02013AE8:
ldrh r1, [r4, #8]
add r0, r7, #0x100
strh r1, [r0, #0x88]
ldrh r0, [r5, #0x58]
add r1, r7, #0x1f8
strh r0, [r7, #0xba]
mov r0, #1
mov r2, #0x10
bl sub_0302D764
ldrh r0, [r5, #0x12]
and r0, r0, #0xff
tst r0, #2
mov r0, r0, asr #2
addeq r0, r0, #0x19
and r4, r0, #0xff
mov r0, r4
bl sub_0200FDC8
strh r0, [r7, #0xbc]
mov r0, r4
bl sub_0200FD54
bl sub_0302D4F0
add r1, r7, #0x100
mov r2, #1
strh r2, [r1, #0x82]
strh r2, [r7, #0x86]
ldr r1, [r7, #0x7bc]
ldr r2, [r7, #0x7b8]
cmp r1, #0
mov r4, r0
cmpeq r2, #0
beq _02013B78
bl sub_0302CA0C
orr r0, r0, #1
str r0, [r7, #0x738]
orr r0, r1, #0
str r0, [r7, #0x73c]
_02013B78:
mov r0, #8
strh r0, [r7]
ldrb r0, [r5, #0x5b]
tst r0, #4
movne r1, #0x2a
ldrh r0, [r5, #0x5c]
moveq r1, #0
add r0, r0, r1
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200FF90
ldrb r0, [r5, #0x5b]
tst r0, #4
movne r1, #6
ldrh r0, [r5, #0x5e]
moveq r1, #0
add r0, r0, r1
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0200FFE0
mov r0, r4
bl sub_0302D504
mov r0, #1
strh r0, [r7, #0xc2]
bl sub_03036B70
mov r4, r0
mov r0, #0xc
strh r0, [r4]
mov r0, #0
strh r0, [r4, #2]
mov r0, #7
strh r0, [r4, #8]
add r0, r7, #0x100
ldrh r2, [r0, #0x88]
add r1, r7, #0x8a
strh r2, [r4, #0xa]
add r0, r1, #0x100
add r1, r4, #0x10
mov r2, #6
bl sub_0302D91C
ldrh r1, [r7, #0x30]
mov r0, r4
strh r1, [r4, #0x16]
ldrh r1, [r7, #0x32]
strh r1, [r4, #0x18]
bl sub_03036B24
mov r0, r6
bl sub_0302D504
_02013C38:
add sp, sp, #0x250
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02013C44: .word 0x027F8878
_02013C48: .word 0x00000216
_02013C4C: .word 0x00002710
_02013C50: .word 0x0000020B
_02013C54: .word 0x00000303
arm_func_end sub_020136B4
arm_func_start sub_02013C58
sub_02013C58: ; 0x02013C58
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_03036B70
mov r1, #0xc
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r6, [r0, #4]
strh r5, [r0, #6]
strh r4, [r0, #0xe]
bl sub_03036B24
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_02013C58
arm_func_start sub_02013C94
sub_02013C94: ; 0x02013C94
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r1, [r0, #4]
add r2, sp, #0
mov r3, r1, lsl #0x10
mov r1, #0
mov r4, r3, lsr #0x10
bl sub_02013CEC
cmp r0, #1
bne _02013CE0
bl sub_03036B70
mov r1, #0xd
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
strh r4, [r0, #8]
ldrh r1, [sp]
strh r1, [r0, #0xa]
bl sub_03036B24
_02013CE0:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_02013C94
arm_func_start sub_02013CEC
sub_02013CEC: ; 0x02013CEC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x220
ldr r3, _02014270 ; =0x027F8878
ldr r4, [r0, #4]
movs sl, r1
ldrne r0, [r0, #8]
mov r1, r4, lsl #0x10
moveq r0, #0
mov r0, r0, lsl #0x10
mov fp, #0
ldr r7, [r3, #0x550]
mov r8, r1, lsr #0x10
ldrh r1, [r7]
mov r0, r0, lsr #0x10
cmp r1, #9
str r2, [sp]
mov r5, fp
str r0, [sp, #8]
cmpne r1, #7
bne _02013D4C
ldr r0, [r7, #0xc]
cmp r0, #1
moveq r5, #1
b _02013E44
_02013D4C:
cmp r1, #0xa
cmpne r1, #8
bne _02013E08
bl sub_0302D4F0
add r1, r7, #0x100
ldrh r1, [r1, #0x82]
mov r4, r0
cmp r1, #0
bne _02013DB0
bl sub_0302D504
cmp sl, #0
bne _02013DA8
bl sub_03036B70
mov r1, #0xd
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #0
strh r1, [r0, #4]
strh r1, [r0, #6]
strh r8, [r0, #8]
strh r1, [r0, #0xa]
bl sub_03036B24
_02013DA8:
mov r0, #0
b _02014264
_02013DB0:
ldr r0, [r7, #0xc]
cmp r0, #1
bne _02013DE0
mov r0, #0
str r0, [r7, #0xc]
mov r5, #1
bl sub_0201537C
bl sub_0200FE30
ldrh r0, [r7]
cmp r0, #0xa
moveq r0, #8
streqh r0, [r7]
_02013DE0:
add r0, r7, #0x100
mov r1, #0
strh r1, [r0, #0x82]
strh r1, [r7, #0x86]
str r1, [r7, #0x14]
str r1, [r7, #0x10]
mov r0, r4
str r1, [r7, #0x1c]
bl sub_0302D504
b _02013E44
_02013E08:
cmp sl, #0
bne _02013E3C
bl sub_03036B70
mov r1, #0xd
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, fp
strh r1, [r0, #4]
strh r1, [r0, #6]
strh r8, [r0, #8]
strh r1, [r0, #0xa]
bl sub_03036B24
_02013E3C:
mov r0, #0
b _02014264
_02013E44:
ldrh r0, [r7]
cmp r0, #0xa
cmpne r0, #8
bne _0201406C
add r0, r7, #0x8a
add r1, sp, #0x1a
add r0, r0, #0x100
mov r2, #6
bl sub_0302D91C
mov sb, #0
add r6, sp, #0x1a
mov r4, #3
b _02013EFC
_02013E78:
add r0, sp, #0x20
mov r1, r6
mov r2, r4
bl sub_020117BC
ldrh r1, [r0, #4]
cmp r1, #7
bgt _02013EB4
bge _02013EBC
cmp r1, #1
bgt _02013EC4
cmp r1, #0
blt _02013EC4
cmpne r1, #1
beq _02013F04
b _02013EC4
_02013EB4:
cmp r1, #0xc
bne _02013EC4
_02013EBC:
add sb, sb, #1
b _02013EFC
_02013EC4:
cmp sl, #0
mov r2, r8
mov r0, #5
mov r3, #0
beq _02013EE0
bl sub_02014380
b _02013EE4
_02013EE0:
bl sub_0201433C
_02013EE4:
cmp r5, #0
beq _02013EF4
mov r0, #1
bl sub_0201700C
_02013EF4:
mov r0, #0
b _02014264
_02013EFC:
cmp sb, #2
blt _02013E78
_02013F04:
mov r0, #0
strh r0, [r7, #0xc2]
mov r0, #3
mov fp, #1
strh r0, [r7]
add r0, sp, #0x20
mov r1, fp
bl sub_02011558
ldrh r1, [r0, #4]
cmp r1, #0
beq _02013F68
cmp sl, #0
mov r2, r8
mov r0, #0
mov r3, fp
beq _02013F4C
bl sub_02014380
b _02013F50
_02013F4C:
bl sub_0201433C
_02013F50:
cmp r5, #0
beq _02013F60
mov r0, #1
bl sub_0201700C
_02013F60:
mov r0, #0
b _02014264
_02013F68:
add r0, sp, #0x20
bl sub_02012088
ldrh r1, [r0, #4]
cmp r1, #0
beq _02013FB8
ldr r0, _02014274 ; =0x00000302
cmp sl, #0
mov r2, r8
beq _02013F98
mov r3, fp
bl sub_02014380
b _02013FA0
_02013F98:
mov r3, fp
bl sub_0201433C
_02013FA0:
cmp r5, #0
beq _02013FB0
mov r0, #1
bl sub_0201700C
_02013FB0:
mov r0, #0
b _02014264
_02013FB8:
mov r0, #2
strh r0, [r7]
mov r1, #0
str r1, [r7, #0x198]
add r3, r7, #0x100
add r0, r7, #0x19c
mov r2, #0x50
strh r1, [r3, #0x96]
bl sub_0302D860
bl sub_0200FF5C
cmp sl, #1
bne _02014048
bl sub_03036B70
mov r4, r0
mov r0, #0xc
strh r0, [r4]
mov r0, #0
strh r0, [r4, #2]
mov r0, #9
strh r0, [r4, #8]
ldr r0, [sp, #8]
mov r2, #6
strh r0, [r4, #0xc]
add r0, r7, #0x100
ldrh r1, [r0, #0x88]
add r0, sp, #0x1a
strh r1, [r4, #0xa]
add r1, r4, #0x10
bl sub_0302D91C
ldrh r1, [r7, #0x30]
mov r0, r4
strh r1, [r4, #0x16]
ldrh r1, [r7, #0x32]
strh r1, [r4, #0x18]
bl sub_03036B24
b _02014058
_02014048:
mov r0, #0
add r2, sp, #0x1a
mov r1, r0
bl sub_02014278
_02014058:
cmp r5, #0
beq _02014254
mov r0, #1
bl sub_0201700C
b _02014254
_0201406C:
mov r6, #1
b _0201424C
_02014074:
add r0, r7, #0x100
ldrh r0, [r0, #0x82]
mov r1, #1
mov sb, r1, lsl r6
and r0, r0, r8
tst sb, r0
beq _02014248
sub r1, r6, #1
mov r2, #6
mul r0, r1, r2
str r0, [sp, #0x10]
add r0, r7, #0x128
str r0, [sp, #0xc]
mov r0, r6, lsl #0x10
mov r0, r0, lsr #0x10
str r0, [sp, #4]
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
add r0, r1, r0
add r1, sp, #0x14
bl sub_0302D91C
mov r4, #0
b _02014138
_020140D0:
add r0, sp, #0x20
add r1, sp, #0x14
mov r2, #3
bl sub_020117BC
ldrh r1, [r0, #4]
cmp r1, #0
beq _02014140
cmp r1, #7
cmpne r1, #0xc
bne _02014100
add r4, r4, #1
b _02014138
_02014100:
cmp sl, #0
mov r2, r8
mov r0, #5
mov r3, fp
beq _0201411C
bl sub_02014380
b _02014120
_0201411C:
bl sub_0201433C
_02014120:
cmp r5, #0
beq _02014130
mov r0, #1
bl sub_0201700C
_02014130:
mov r0, #0
b _02014264
_02014138:
cmp r4, #2
blt _020140D0
_02014140:
bl sub_0302D4F0
mov r4, r0
add r1, r7, #0x100
ldrh r3, [r1, #0x82]
tst r3, sb
beq _02014244
ldr r2, [sp, #0xc]
ldr r0, [sp, #0x10]
mov ip, #1
add r0, r2, r0
ldr r2, [sp, #4]
orr r2, fp, ip, lsl r2
mov r2, r2, lsl #0x10
mov fp, r2, lsr #0x10
mvn r2, sb
and r3, r3, r2
strh r3, [r1, #0x82]
ldrh r3, [r7, #0x86]
mov r1, #0
and r2, r3, r2
strh r2, [r7, #0x86]
ldr r2, [sp, #4]
add r2, r7, r2, lsl #3
str r1, [r2, #0x738]
str r1, [r2, #0x73c]
mov r2, #6
bl sub_0302D860
mov r0, r4
bl sub_0302D504
cmp sl, #1
bne _02014218
bl sub_03036B70
mov r4, r0
mov r0, #8
strh r0, [r4]
mov r0, #0
strh r0, [r4, #2]
mov r0, #9
strh r0, [r4, #8]
ldr r0, [sp, #8]
add r1, r4, #0xa
strh r0, [r4, #0x12]
ldr r0, [sp, #4]
mov r2, #6
strh r0, [r4, #0x10]
add r0, sp, #0x14
bl sub_0302D91C
ldrh r1, [r7, #0x30]
mov r0, r4
strh r1, [r4, #0x2c]
ldrh r1, [r7, #0x32]
strh r1, [r4, #0x2e]
bl sub_03036B24
b _0201422C
_02014218:
mov r0, r6, lsl #0x10
mov r1, r0, lsr #0x10
add r2, sp, #0x14
mov r0, #1
bl sub_02014278
_0201422C:
cmp r5, #0
beq _02014248
mov r0, sb, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0201700C
b _02014248
_02014244:
bl sub_0302D504
_02014248:
add r6, r6, #1
_0201424C:
cmp r6, #0x10
blt _02014074
_02014254:
ldr r0, [sp]
cmp r0, #0
strneh fp, [r0]
mov r0, #1
_02014264:
add sp, sp, #0x220
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02014270: .word 0x027F8878
_02014274: .word 0x00000302
arm_func_end sub_02013CEC
arm_func_start sub_02014278
sub_02014278: ; 0x02014278
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r3, _02014334 ; =0x027F8878
mov r8, r0
ldr r5, [r3, #0x550]
mov r7, r1
mov r6, r2
bl sub_03036B70
mov r4, r0
mov r0, #0
strh r0, [r4, #2]
cmp r8, #0
mov r1, #0x1a
mov r2, #6
beq _020142E8
mov r0, #8
strh r0, [r4]
strh r1, [r4, #8]
ldr r0, _02014338 ; =0x0000F001
add r1, r4, #0xa
strh r0, [r4, #0x12]
strh r7, [r4, #0x10]
mov r0, r6
bl sub_0302D91C
ldrh r0, [r5, #0x30]
strh r0, [r4, #0x2c]
ldrh r0, [r5, #0x32]
strh r0, [r4, #0x2e]
b _02014324
_020142E8:
mov r0, #0xc
strh r0, [r4]
ldr r0, _02014338 ; =0x0000F001
strh r1, [r4, #8]
strh r0, [r4, #0xc]
add r0, r5, #0x100
ldrh r1, [r0, #0x88]
mov r0, r6
strh r1, [r4, #0xa]
add r1, r4, #0x10
bl sub_0302D91C
ldrh r0, [r5, #0x30]
strh r0, [r4, #0x16]
ldrh r0, [r5, #0x32]
strh r0, [r4, #0x18]
_02014324:
mov r0, r4
bl sub_03036B24
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02014334: .word 0x027F8878
_02014338: .word 0x0000F001
arm_func_end sub_02014278
arm_func_start sub_0201433C
sub_0201433C: ; 0x0201433C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_03036B70
mov r1, #0xd
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r7, [r0, #4]
strh r6, [r0, #6]
strh r5, [r0, #8]
strh r4, [r0, #0xa]
bl sub_03036B24
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_0201433C
arm_func_start sub_02014380
sub_02014380: ; 0x02014380
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_03036B70
mov r1, #0x25
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r7, [r0, #4]
strh r6, [r0, #6]
strh r5, [r0, #8]
strh r4, [r0, #0xa]
bl sub_03036B24
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_02014380
arm_func_start sub_020143C4
sub_020143C4: ; 0x020143C4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x204
ldr r1, _0201474C ; =0x027F8878
mov sl, r0
ldr r8, [r1, #0x550]
ldr fp, [sl, #4]
ldrh r1, [r8, #0x9c]
ldr r4, [sl, #8]
ldr r5, [sl, #0xc]
ldr r6, [sl, #0x10]
ldr r0, _02014750 ; =0x027F7878
cmp r1, #0
mov r7, #0
bne _02014448
ldrh r1, [r8, #0x3c]
add r1, r1, #0x1f
bic r1, r1, #0x1f
cmp r6, r1
add r1, r8, #0x100
ldrh r1, [r1, #0x88]
movlo r7, #6
cmp r1, #0
ldrneh r1, [r8, #0x3e]
addne r1, r1, #0x51
bne _0201443C
ldrh r2, [r8, #0x3e]
ldrh r1, [r8, #0xf8]
add r2, r2, #0xc
mul r1, r2, r1
add r1, r1, #0x29
_0201443C:
bic r1, r1, #0x1f
cmp r4, r1
movlo r7, #6
_02014448:
ldrh r1, [r8, #0xe6]
cmp r1, #2
bne _02014478
add r0, r0, #0x1000
ldr r1, [r0, #0x54c]
add r0, r8, #0x100
ldrh r1, [r1, #0x46]
ldrh r3, [r0, #0xf6]
mov r2, #1
mov r0, r2, lsl r1
tst r3, r0, asr #1
moveq r7, #6
_02014478:
cmp r7, #0
beq _020144A0
bl sub_03036B70
mov r1, #0xe
strh r1, [r0]
strh r7, [r0, #2]
mov r1, #0xa
strh r1, [r0, #4]
bl sub_03036B24
b _02014740
_020144A0:
ldr r0, [r8, #0xc]
mov r1, #0
cmp r0, #0
strne r1, [r8, #0xc]
movne r1, #1
cmp r1, #0
beq _020144C4
ldr r0, _02014754 ; =0x0000FFFF
bl sub_0201700C
_020144C4:
bl sub_02015B60
bl sub_0302D4F0
str r0, [sp]
add r0, sl, #0x14
mov r1, #0
bl sub_02017C0C
ldr r0, _0201474C ; =0x027F8878
ldr r7, [sl, #0x30]
ldr sb, [r0, #0x550]
ldrh r0, [sb]
cmp r0, #9
cmpne r0, #0xa
beq _020145B8
bl sub_0302D4F0
tst r7, #4
ldrneh r2, [sl, #0x38]
add r1, sb, #0x700
ldreqh r2, [sb, #0x5c]
cmp r2, #0
moveq r2, #0x10
tst r7, #1
ldrneh r3, [sl, #0x34]
ldreqh r3, [sb, #0x58]
cmp r3, #0
moveq r3, #0x10
cmp r3, r2
movhi r3, r2
tst r7, #2
ldrneh ip, [sl, #0x36]
ldreqh ip, [sb, #0x5a]
strh r2, [r1, #0xc4]
cmp ip, #0
moveq ip, #0x10
cmp ip, r2
strh r3, [r1, #0xc0]
movhi ip, r2
strh ip, [r1, #0xc2]
ldrsh r1, [sb, #0x62]
cmp r1, r2
strgth r2, [sb, #0x62]
tst r7, #0x200
ldrneh r2, [sl, #0x3a]
add r1, sb, #0x700
ldreqh r2, [sb, #0x98]
tst r7, #0x400
strh r2, [r1, #0xca]
ldrneb r2, [sl, #0x3c]
add r1, sb, #0x700
ldreqh r2, [sb, #0x92]
tst r7, #0x800
strh r2, [r1, #0xc6]
ldrneb r2, [sl, #0x3d]
add r1, sb, #0x700
ldreqh r2, [sb, #0x94]
tst r7, #0x1000
strh r2, [r1, #0xc8]
ldrneb r2, [sl, #0x3e]
add r1, sb, #0x700
ldreqh r2, [sb, #0x9a]
strh r2, [r1, #0xcc]
bl sub_0302D504
_020145B8:
ldrh r0, [r8]
add r0, r0, #0xf9
add r0, r0, #0xff00
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _02014718
mov r2, #0
strh r2, [r8, #0x84]
strh r2, [r8, #0x5e]
mov r1, #1
strh r1, [r8, #0x60]
strh r2, [r8, #0x88]
strh r2, [r8, #0x9e]
mov r0, #0x3c
strh r0, [r8, #0xa0]
str r2, [r8, #0x734]
strh r2, [r8, #0x8a]
strh r2, [r8, #0x8c]
strh r2, [r8, #0x8e]
strh r2, [r8, #0x90]
strh r2, [r8, #0x66]
str fp, [r8, #0x74]
strh r4, [r8, #0x72]
add r0, fp, r4
str r0, [r8, #0x78]
strh r2, [r8, #0x70]
str r5, [r8, #0x7c]
strh r6, [r8, #0x80]
strh r2, [r8, #0x62]
strh r2, [r8, #0x64]
strh r2, [r8, #0x68]
strh r2, [r8, #0x6a]
rsb r0, r1, #0x10000
strh r0, [r8, #0xbe]
strh r1, [r8, #0xc0]
bl sub_0302CA0C
orr r1, r1, #0
orr r2, r0, #1
mov r3, #0
_02014658:
add r0, r8, r3, lsl #3
str r2, [r0, #0x738]
add r3, r3, #1
str r1, [r0, #0x73c]
cmp r3, #0x10
blt _02014658
bl sub_0200FE90
mov r0, #0
strh r0, [r8, #0xce]
bl sub_02015390
ldrh r0, [r8]
cmp r0, #8
moveq r0, #0xa
streqh r0, [r8]
beq _020146A0
cmp r0, #7
moveq r0, #9
streqh r0, [r8]
_020146A0:
bl sub_03036B70
mov r1, #0xe
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0xa
strh r1, [r0, #4]
bl sub_03036B24
mov r1, #1
ldr r0, [sp]
str r1, [r8, #0xc]
bl sub_0302D504
add r0, sp, #4
mov r1, #1
bl sub_02011EF0
mov r4, r0
ldrh r0, [r4, #4]
cmp r0, #0
beq _02014740
bl sub_03036B70
mov r2, #0xe
strh r2, [r0]
mov r1, #1
strh r1, [r0, #2]
add r1, r2, #0x208
strh r1, [r0, #4]
ldrh r1, [r4, #4]
strh r1, [r0, #6]
bl sub_03036B24
b _02014740
_02014718:
ldr r0, [sp]
bl sub_0302D504
bl sub_03036B70
mov r1, #0xe
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #0xa
strh r1, [r0, #4]
bl sub_03036B24
_02014740:
add sp, sp, #0x204
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0201474C: .word 0x027F8878
_02014750: .word 0x027F7878
_02014754: .word 0x0000FFFF
arm_func_end sub_020143C4
arm_func_start sub_02014758
sub_02014758: ; 0x02014758
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
ldr r1, _0201488C ; =0x027F8878
ldr r2, [r0, #0x10]
ldr sl, [r1, #0x550]
ldr r5, [r0, #8]
add r4, sl, #0x100
ldr r3, [r0, #0x14]
ldrh r8, [r4, #0x88]
mov r1, r5, lsl #0x10
ldrh sb, [r4, #0x82]
ldr fp, [r0, #4]
ldr r5, [r0, #0xc]
cmp r8, #0
ldr r6, [r0, #0x18]
ldr r7, [r0, #0x1c]
mov r2, r2, lsl #0x10
mov r0, r2, lsr #0x10
str r0, [sp, #0x10]
ldr r0, [sl, #0xc]
movne r5, #1
cmp r0, #0
mov r3, r3, lsl #0x10
mov r4, r1, lsr #0x10
mov r1, r3, lsr #0x10
moveq r8, #3
beq _020147EC
tst r5, sb
moveq r8, #0
beq _020147EC
str fp, [sp]
stmib sp, {r4, r6, r7}
ldr r2, [sp, #0x10]
mov r0, sb
mov r3, r5
bl sub_02016BA8
mov r8, r0
_020147EC:
cmp r8, #2
beq _02014880
bl sub_03036B70
mov r1, #0x81
strh r1, [r0]
strh r8, [r0, #2]
mov r1, #0x14
strh r1, [r0, #8]
ldr r1, [sp, #0x10]
cmp r8, #0xa
strh r1, [r0, #0xa]
andeq r1, r5, sb
strh r5, [r0, #0xc]
movne r1, #0
strh r1, [r0, #0xe]
mov r1, #0
strh r1, [r0, #0x10]
strh r4, [r0, #0x18]
str fp, [r0, #0x14]
str r6, [r0, #0x1c]
ldr r1, _02014890 ; =0x0000FFFF
str r7, [r0, #0x20]
strh r1, [r0, #0x1a]
add r1, sl, #0x100
ldrh r1, [r1, #0x88]
ldrh r2, [sl, #0x30]
cmp r1, #0
ldrh r3, [sl, #0x32]
moveq r1, r2
movne r1, r3
strh r1, [r0, #0x24]
add r1, sl, #0x100
ldrh r1, [r1, #0x88]
cmp r1, #0
movne r3, r2
strh r3, [r0, #0x26]
bl sub_03036B24
_02014880:
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0201488C: .word 0x027F8878
_02014890: .word 0x0000FFFF
arm_func_end sub_02014758
arm_func_start sub_02014894
sub_02014894: ; 0x02014894
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x200
ldr r0, _020149A4 ; =0x027F8878
mov r4, #0
ldr r6, [r0, #0x550]
ldrh r0, [r6]
cmp r0, #9
cmpne r0, #0xa
beq _020148D4
bl sub_03036B70
mov r1, #0x10
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03036B24
b _02014998
_020148D4:
bl sub_0302D4F0
ldr r1, [r6, #0xc]
mov r5, r0
mov r0, #0
cmp r1, #1
str r0, [r6, #0xc]
moveq r4, #1
bl sub_0201537C
bl sub_0200FE30
ldrh r0, [r6]
cmp r0, #0xa
moveq r0, #8
streqh r0, [r6]
beq _02014918
cmp r0, #9
moveq r0, #7
streqh r0, [r6]
_02014918:
mov r0, r5
bl sub_0302D504
add r0, sp, #0
mov r1, #0
bl sub_02011EF0
ldrh r1, [r0, #4]
cmp r1, #0
beq _02014944
ldr r0, _020149A8 ; =0x00000216
bl sub_020149B0
b _02014998
_02014944:
add r0, sp, #0
mov r1, #7
bl sub_02011B9C
ldrh r1, [r0, #4]
cmp r1, #0
beq _02014968
mov r0, #0x104
bl sub_020149B0
b _02014998
_02014968:
mov r0, #0
strh r0, [r6, #0x8a]
cmp r4, #0
beq _02014980
ldr r0, _020149AC ; =0x0000FFFF
bl sub_0201700C
_02014980:
bl sub_03036B70
mov r1, #0x10
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02014998:
add sp, sp, #0x200
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_020149A4: .word 0x027F8878
_020149A8: .word 0x00000216
_020149AC: .word 0x0000FFFF
arm_func_end sub_02014894
arm_func_start sub_020149B0
sub_020149B0: ; 0x020149B0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03036B70
mov r1, #0x10
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_020149B0
arm_func_start sub_020149E4
sub_020149E4: ; 0x020149E4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _02014A6C ; =0x027F8878
ldr r2, [r0, #8]
ldr r4, [r1, #0x550]
mov r5, r2, lsl #0x10
ldr r6, [r0, #4]
mov r7, r5, lsr #0x10
bl sub_0302D4F0
str r6, [r4, #0xb0]
strh r7, [r4, #0xb8]
add r1, r6, r5, lsr #16
str r1, [r4, #0xb4]
mov r1, #0
strh r1, [r4, #0xae]
str r1, [r4, #0xa8]
strh r1, [r4, #0xac]
str r1, [r4, #0x18]
mov r1, #0xb
strh r1, [r4]
mov r5, r0
bl sub_03036B70
mov r1, #0x11
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0xe
strh r1, [r0, #4]
bl sub_03036B24
mov r1, #1
mov r0, r5
str r1, [r4, #0x10]
bl sub_0302D504
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02014A6C: .word 0x027F8878
arm_func_end sub_020149E4
arm_func_start sub_02014A70
sub_02014A70: ; 0x02014A70
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x230
ldr r1, _02014B64 ; =0x027F8878
mov r5, r0
ldr r4, [r1, #0x550]
add r0, r5, #4
add r1, r4, #0xa2
mov r2, #6
bl sub_0302D91C
ldr r0, [r5, #0xc]
add r1, sp, #0
str r0, [r4, #0xa8]
ldr r2, [r5, #0x10]
mov r0, #1
strh r2, [r4, #0xac]
str r0, [r4, #0x18]
mov r0, #0
mov r2, #0x30
bl sub_0302D764
mov r0, #0
strh r0, [sp]
ldr r1, [r5, #0x10]
add r0, r4, #0x100
strh r1, [sp, #6]
ldrh r0, [r0, #0xec]
add r1, sp, #0x18
cmp r0, #2
moveq r3, #0x14
movne r3, #0xa
add r0, r5, #4
mov r2, #6
strb r3, [sp, #0xe]
bl sub_0302D91C
add r1, sp, #0x1e
add r0, r4, #0xe0
mov r2, #6
bl sub_0302D91C
ldr r2, [r5, #0xc]
add r0, sp, #0x30
add r1, sp, #0
str r2, [sp, #0x2c]
bl sub_020119F0
mov r4, r0
bl sub_03036B70
mov r1, #0x12
strh r1, [r0]
ldrh r1, [r4, #4]
cmp r1, #0
moveq r1, #0
movne r1, #1
strh r1, [r0, #2]
ldrh r1, [r4, #4]
cmp r1, #0
movne r1, #0x100
strneh r1, [r0, #4]
ldrneh r1, [r4, #4]
strneh r1, [r0, #6]
bl sub_03036B24
add sp, sp, #0x230
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02014B64: .word 0x027F8878
arm_func_end sub_02014A70
arm_func_start sub_02014B68
sub_02014B68: ; 0x02014B68
stmdb sp!, {r4, lr}
sub sp, sp, #0x200
ldr r0, _02014C20 ; =0x027F8878
ldr r4, [r0, #0x550]
bl sub_0302D4F0
ldrh r1, [r4]
cmp r1, #0xb
beq _02014BA8
bl sub_0302D504
bl sub_03036B70
mov r1, #0x13
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03036B24
b _02014C14
_02014BA8:
mov r1, #0
str r1, [r4, #0x10]
mov r1, #8
strh r1, [r4]
bl sub_0302D504
add r0, sp, #0
mov r1, #7
bl sub_02011B9C
ldrh r4, [r0, #4]
cmp r4, #0
beq _02014BFC
bl sub_03036B70
mov r1, #0x13
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
mov r1, #0x104
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
b _02014C14
_02014BFC:
bl sub_03036B70
mov r1, #0x13
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02014C14:
add sp, sp, #0x200
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02014C20: .word 0x027F8878
arm_func_end sub_02014B68
arm_func_start sub_02014C24
sub_02014C24: ; 0x02014C24
stmdb sp!, {r3, lr}
ldr r1, _02014CC8 ; =0x027F8878
ldr r2, [r0, #4]
ldr r3, [r1, #0x550]
add r1, r3, #0x100
strh r2, [r1, #0x96]
ldrh r1, [r1, #0x96]
cmp r1, #3
addls pc, pc, r1, lsl #2
b _02014C74
_02014C4C: ; jump table
b _02014C5C ; case 0
b _02014C68 ; case 1
b _02014C68 ; case 2
b _02014C68 ; case 3
_02014C5C:
mov r1, #0
str r1, [r3, #0x198]
b _02014C7C
_02014C68:
mov r1, #1
str r1, [r3, #0x198]
b _02014C7C
_02014C74:
mov r1, #0
str r1, [r3, #0x198]
_02014C7C:
ldr r1, [r3, #0x198]
mov r2, #0x50
cmp r1, #1
bne _02014C9C
ldr r0, [r0, #8]
add r1, r3, #0x19c
bl sub_0302D91C
b _02014CA8
_02014C9C:
add r0, r3, #0x19c
mov r1, #0
bl sub_0302D860
_02014CA8:
bl sub_03036B70
mov r1, #0x14
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02014CC8: .word 0x027F8878
arm_func_end sub_02014C24
arm_func_start sub_02014CCC
sub_02014CCC: ; 0x02014CCC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x200
ldr r1, _02014DC0 ; =0x027F8878
mov r5, r0
ldr r4, [r1, #0x550]
ldr r1, [r5, #4]
add r0, r4, #0x100
strh r1, [r0, #0x96]
ldrh r0, [r0, #0x96]
cmp r0, #3
addls pc, pc, r0, lsl #2
b _02014D24
_02014CFC: ; jump table
b _02014D0C ; case 0
b _02014D18 ; case 1
b _02014D18 ; case 2
b _02014D18 ; case 3
_02014D0C:
mov r0, #0
str r0, [r4, #0x198]
b _02014D2C
_02014D18:
mov r0, #1
str r0, [r4, #0x198]
b _02014D2C
_02014D24:
mov r0, #0
str r0, [r4, #0x198]
_02014D2C:
ldr r0, [r4, #0x198]
mov r2, #0x50
cmp r0, #1
bne _02014D4C
ldr r0, [r5, #8]
add r1, r4, #0x19c
bl sub_0302D91C
b _02014D58
_02014D4C:
add r0, r4, #0x19c
mov r1, #0
bl sub_0302D860
_02014D58:
ldr r1, [r5, #0xc]
add r0, sp, #0
strh r1, [r4, #0xc4]
ldrh r1, [r4, #0xc4]
bl sub_02011C48
ldrh r4, [r0, #4]
cmp r4, #0
beq _02014D9C
bl sub_03036B70
mov r2, #0x14
mov r1, #1
strh r2, [r0]
strh r1, [r0, #2]
rsb r1, r1, #0x208
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
_02014D9C:
bl sub_03036B70
mov r1, #0x27
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02014DC0: .word 0x027F8878
arm_func_end sub_02014CCC
arm_func_start sub_02014DC4
sub_02014DC4: ; 0x02014DC4
stmdb sp!, {r4, lr}
sub sp, sp, #0x280
ldr r1, _02014EB0 ; =0x027F8878
ldr r2, [r0, #4]
ldr r4, [r1, #0x550]
str r2, [r4, #0xe8]
ldr r1, [r0, #8]
strh r1, [r4, #0xec]
ldr r1, [r0, #0xc]
str r1, [r4, #0xf0]
ldr r1, [r0, #0x10]
strh r1, [r4, #0xf4]
ldr r0, [r0, #0x14]
and r0, r0, #0xff
tst r0, #1
movne r1, #1
moveq r1, #0
strh r1, [r4, #0xf6]
tst r0, #2
movne r1, #1
moveq r1, #0
strh r1, [r4, #0xfa]
tst r0, #4
movne r1, #1
moveq r1, #0
tst r0, #8
strh r1, [r4, #0xfc]
movne r1, #1
moveq r1, #0
strh r1, [r4, #0xfe]
add r0, sp, #0
add r1, r4, #0xe8
bl sub_0200FAFC
ldrh r1, [r4, #0xec]
add r0, sp, #0x80
add r1, r1, #0x10
mov r1, r1, lsl #0x10
add r2, sp, #0
mov r1, r1, lsr #0x10
bl sub_02011FA8
mov r4, r0
bl sub_03036B70
mov r1, #0x18
strh r1, [r0]
ldrh r1, [r4, #4]
cmp r1, #0
moveq r1, #0
movne r1, #1
strh r1, [r0, #2]
ldrh r1, [r4, #4]
cmp r1, #0
ldrne r1, _02014EB4 ; =0x00000245
strneh r1, [r0, #4]
ldrneh r1, [r4, #4]
strneh r1, [r0, #6]
bl sub_03036B24
add sp, sp, #0x280
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02014EB0: .word 0x027F8878
_02014EB4: .word 0x00000245
arm_func_end sub_02014DC4
arm_func_start sub_02014EB8
sub_02014EB8: ; 0x02014EB8
stmdb sp!, {r4, lr}
sub sp, sp, #0x200
ldr r1, [r0, #4]
add r0, sp, #0
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl sub_02011E94
ldrh r4, [r0, #4]
cmp r4, #0
beq _02014F08
bl sub_03036B70
mov r2, #0x19
mov r1, #1
strh r2, [r0]
strh r1, [r0, #2]
add r1, r1, #0x214
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
b _02014F20
_02014F08:
bl sub_03036B70
mov r1, #0x19
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02014F20:
add sp, sp, #0x200
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02014EB8
arm_func_start sub_02014F2C
sub_02014F2C: ; 0x02014F2C
stmdb sp!, {r3, lr}
bl sub_03036B70
mov r1, #0x1a
strh r1, [r0]
mov r1, #4
strh r1, [r0, #2]
bl sub_03036B24
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_02014F2C
arm_func_start sub_02014F50
sub_02014F50: ; 0x02014F50
stmdb sp!, {r3, lr}
bl sub_03036B70
mov r1, #0x1b
strh r1, [r0]
mov r1, #4
strh r1, [r0, #2]
bl sub_03036B24
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_02014F50
arm_func_start sub_02014F74
sub_02014F74: ; 0x02014F74
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x200
ldmib r0, {r1, r2, r3}
ldr r0, [r0, #0x10]
mov r1, r1, lsl #0x10
mov r4, r0, lsl #0x10
mov r2, r2, lsl #0x10
mov r3, r3, lsl #0x10
ldr ip, _02015094 ; =0x027F8878
mov r5, r4, lsr #0x10
add r0, sp, #0
mov r1, r1, lsr #0x10
mov r2, r2, lsr #0x10
mov r3, r3, lsr #0x10
ldr r4, [ip, #0x550]
bl sub_02011DD0
ldrh r6, [r0, #4]
cmp r6, #0
beq _02014FE8
bl sub_03036B70
mov r2, #0x1d
mov r1, #1
strh r2, [r0]
strh r1, [r0, #2]
add r1, r1, #0x210
strh r1, [r0, #4]
strh r6, [r0, #6]
bl sub_03036B24
b _02015088
_02014FE8:
ldr r0, _02015098 ; =0x0000FFFF
cmp r5, r0
beq _0201503C
cmp r5, #0
moveq r1, #1
moveq r0, #0
beq _02015030
mov r0, #0x64
mul r2, r5, r0
ldr r0, _0201509C ; =0x000082EA
mov r1, #0
umull ip, r3, r2, r0
mla r3, r2, r1, r3
mov r1, r2, asr #0x1f
mla r3, r1, r0, r3
mov r1, ip, lsr #6
mov r0, r3, lsr #6
orr r1, r1, r3, lsl #26
_02015030:
str r1, [r4, #0x7b8]
str r0, [r4, #0x7bc]
b _02015048
_0201503C:
mov r0, #0
str r0, [r4, #0x7b8]
str r0, [r4, #0x7bc]
_02015048:
bl sub_0302CA0C
orr r1, r1, #0
orr r2, r0, #1
mov r3, #0
_02015058:
add r0, r4, r3, lsl #3
str r2, [r0, #0x738]
add r3, r3, #1
str r1, [r0, #0x73c]
cmp r3, #0x10
blt _02015058
bl sub_03036B70
mov r1, #0x1d
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02015088:
add sp, sp, #0x200
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02015094: .word 0x027F8878
_02015098: .word 0x0000FFFF
_0201509C: .word 0x000082EA
arm_func_end sub_02014F74
arm_func_start sub_020150A0
sub_020150A0: ; 0x020150A0
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x214
ldr r1, _0201523C ; =0x027F8878
mov r7, r0
ldr r6, [r1, #0x550]
add r4, sp, #0x14
ldrh r0, [r6]
cmp r0, #2
beq _020150E0
bl sub_03036B70
mov r1, #0x1e
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03036B24
b _02015230
_020150E0:
mov r0, r4
bl sub_02012114
ldrh r1, [r0, #4]
cmp r1, #0
beq _02015100
mov r0, #0x308
bl sub_02015248
b _02015230
_02015100:
ldrh r1, [r0, #6]
mov r0, #2
strh r0, [r6, #0xe6]
cmp r1, #0x10
bne _02015180
mov r1, r4
mov r0, #0xa
bl sub_0200FBC0
cmp r0, #0
beq _02015230
mov r0, r4
bl sub_020120A0
ldrh r1, [r0, #4]
cmp r1, #0
beq _02015148
ldr r0, _02015240 ; =0x00000303
bl sub_02015248
b _02015230
_02015148:
mov r0, #3
mov r1, #1
strh r0, [r6]
mov r0, r4
mov r3, r1
mov r2, #0
bl sub_020115AC
ldrh r1, [r0, #4]
mov r0, #1
cmp r1, #0
beq _0201517C
bl sub_02015248
b _02015230
_0201517C:
strh r0, [r6, #0xc6]
_02015180:
ldrh r8, [r7, #2]
ldrh sb, [r7, #4]
ldrh r5, [r7, #6]
ldrh r7, [r7, #8]
add r0, sp, #4
mov r1, #0
mov r2, #0x10
bl sub_0302D860
strb r5, [sp, #4]
add r0, sp, #4
str r0, [sp]
mov r0, r4
mov r1, r8
mov r2, sb
mov r3, r7
bl sub_02011970
ldrh r1, [r0, #4]
cmp r1, #0
beq _020151D8
mov r0, #0xa
bl sub_02015248
b _02015230
_020151D8:
ldrh r1, [r0, #8]
mov r0, r4
and r4, r1, #0xff
mov r1, r1, lsl #8
mov r5, r1, lsr #0x10
bl sub_02012088
ldrh r1, [r0, #4]
cmp r1, #0
beq _02015208
ldr r0, _02015244 ; =0x00000302
bl sub_02015248
b _02015230
_02015208:
mov r0, #2
strh r0, [r6]
bl sub_03036B70
mov r1, #0x1e
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
strh r4, [r0, #8]
strh r5, [r0, #0xa]
bl sub_03036B24
_02015230:
add sp, sp, #0x214
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0201523C: .word 0x027F8878
_02015240: .word 0x00000303
_02015244: .word 0x00000302
arm_func_end sub_020150A0
arm_func_start sub_02015248
sub_02015248: ; 0x02015248
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03036B70
mov r1, #0x1e
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_02015248
arm_func_start sub_0201527C
sub_0201527C: ; 0x0201527C
stmdb sp!, {r4, lr}
sub sp, sp, #0x200
add r0, sp, #0
bl sub_020120CC
ldrh r4, [r0, #4]
cmp r4, #0
beq _020152C0
bl sub_03036B70
mov r2, #0x1f
mov r1, #1
strh r2, [r0]
strh r1, [r0, #2]
add r1, r1, #0x304
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
b _020152D8
_020152C0:
bl sub_03036B70
mov r1, #0x1f
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_020152D8:
add sp, sp, #0x200
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_0201527C
arm_func_start sub_020152E4
sub_020152E4: ; 0x020152E4
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x200
add r0, sp, #0
bl sub_020120FC
mov r5, r0
ldrh r4, [r5, #4]
cmp r4, #0
beq _0201532C
bl sub_03036B70
mov r2, #0x20
mov r1, #1
strh r2, [r0]
strh r1, [r0, #2]
rsb r1, r1, #0x308
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
b _0201535C
_0201532C:
bl sub_03036B70
mov r4, r0
mov r0, #0x20
strh r0, [r4]
mov r3, #0
add r0, r5, #8
add r1, r4, #8
mov r2, #0xb4
strh r3, [r4, #2]
bl sub_0302D78C
mov r0, r4
bl sub_03036B24
_0201535C:
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_020152E4
arm_func_start sub_02015368
sub_02015368: ; 0x02015368
ldr ip, _02015374 ; =sub_037FD884
ldr r0, _02015378 ; =0x0380B460
bx ip
.align 2, 0
_02015374: .word sub_037FD884
_02015378: .word 0x0380B460
arm_func_end sub_02015368
arm_func_start sub_0201537C
sub_0201537C: ; 0x0201537C
ldr ip, _02015388 ; =sub_037FDA38
ldr r0, _0201538C ; =0x0380B460
bx ip
.align 2, 0
_02015388: .word sub_037FDA38
_0201538C: .word 0x0380B460
arm_func_end sub_0201537C
arm_func_start sub_02015390
sub_02015390: ; 0x02015390
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r1, _02015430 ; =0x027F8878
ldr r0, _02015434 ; =0x0380B460
ldr r4, [r1, #0x550]
ldrh r1, [r4, #0xe6]
cmp r1, #1
bne _020153E0
ldr r1, [r0]
cmp r1, #0
beq _020153C0
bl sub_0302D228
_020153C0:
ldr r0, _02015434 ; =0x0380B460
mov r1, #0xcb
mov ip, #3
ldr r3, _02015438 ; =0x027E5F8C
add r2, r1, #0x3c
str ip, [sp]
bl sub_0302D088
b _02015424
_020153E0:
cmp r1, #2
bne _02015424
mov r1, #0
str r1, [r4, #0x1c]
ldr r1, [r0]
cmp r1, #0
beq _02015400
bl sub_0302D228
_02015400:
ldr r0, _02015434 ; =0x0380B460
mov r2, #1
mov r1, #0xc8
ldr r3, _0201543C ; =0x027E5C50
str r2, [sp]
add r2, r1, #0x3f
bl sub_0302D088
mov r0, #0
str r0, [r4, #0xd8]
_02015424:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_02015430: .word 0x027F8878
_02015434: .word 0x0380B460
_02015438: .word 0x027E5F8C
_0201543C: .word 0x027E5C50
arm_func_end sub_02015390
arm_func_start sub_02015440
sub_02015440: ; 0x02015440
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r1, _0201557C ; =0x027F8878
ldr r2, _02015580 ; =0x0380FFF0
ldr r0, [r1, #0x550]
ldrh r3, [r2]
str r3, [r0, #0xd0]
ldr r2, [r0, #0xd4]
cmp r2, r3
beq _02015520
str r3, [r0, #0xd4]
ldr r1, [r1, #0x550]
ldr r3, _02015584 ; =0x048080F8
ldr r2, [r1, #0xd0]
mov r2, r2, lsl #6
str r2, [r1, #0xd0]
ldrh r2, [r3]
ldrh lr, [r3, #2]
ldrh r4, [r3]
cmp r2, r4
ldrhih lr, [r3, #2]
ldr r3, _02015588 ; =0x04000006
ldr r2, _0201558C ; =0x00000107
ldrh ip, [r3]
ldr r3, _02015590 ; =0x003FFFC0
sub ip, r2, ip
orr lr, r4, lr, lsl #16
ldr r2, [r1, #0xd0]
and lr, lr, r3
rsb ip, ip, ip, lsl #7
add ip, ip, lr, lsl #1
and lr, r3, ip, lsr #1
cmp r2, lr
movhi r2, #0
strhi r2, [r1, #0xd8]
bhi _02015520
mov ip, #1
b _02015510
_020154D8:
ldr r2, [r1, #0xd0]
add r2, r2, #0x4b
add r3, r2, #0x4100
str r3, [r1, #0xd0]
cmp r3, lr
bls _0201550C
ldr r2, _02015594 ; =0x0000400E
sub r3, r3, lr
cmp r3, r2
str r3, [r1, #0xd8]
movhi r2, #0
strhi r2, [r1, #0xd8]
b _02015520
_0201550C:
add ip, ip, #1
_02015510:
cmp ip, #0x1e
blt _020154D8
mov r2, #0
str r2, [r1, #0xd8]
_02015520:
ldr r1, [r0, #0xd8]
cmp r1, #0x7f
bls _0201554C
ldr r0, _02015598 ; =0x0380B460
mov r1, #0xd0
mov ip, #2
ldr r3, _0201559C ; =0x027E5DB4
add r2, r1, #0x37
str ip, [sp]
bl sub_0302D088
b _02015570
_0201554C:
mov r2, #1
str r2, [r0, #0x1c]
mov r1, #4
str r1, [sp]
ldrsh r1, [r0, #0x42]
ldr r0, _02015598 ; =0x0380B460
ldr r3, _020155A0 ; =0x027E5E74
rsb r2, r2, #0x108
bl sub_0302D088
_02015570:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_0201557C: .word 0x027F8878
_02015580: .word 0x0380FFF0
_02015584: .word 0x048080F8
_02015588: .word 0x04000006
_0201558C: .word 0x00000107
_02015590: .word 0x003FFFC0
_02015594: .word 0x0000400E
_02015598: .word 0x0380B460
_0201559C: .word 0x027E5DB4
_020155A0: .word 0x027E5E74
arm_func_end sub_02015440
arm_func_start sub_020155A4
sub_020155A4: ; 0x020155A4
stmdb sp!, {r3, lr}
ldr r1, _02015650 ; =0x04000006
ldr r0, _02015654 ; =0x027F8878
ldrh ip, [r1]
ldr r0, [r0, #0x550]
cmp ip, #0xd0
blt _0201561C
cmp ip, #0xd2
bge _0201561C
ldr r1, [r0, #0xd8]
cmp r1, #0x7f
blo _0201561C
mov r3, #1
b _020155F4
_020155DC:
ldr r2, [r0, #0xd8]
rsb r1, r3, r3, lsl #6
add r1, r1, #0x7f
cmp r2, r1
blo _020155FC
add r3, r3, #1
_020155F4:
cmp r3, #7
blt _020155DC
_020155FC:
ldr r1, _02015650 ; =0x04000006
rsb r2, r3, #1
add r2, ip, r2
strh r2, [r1]
ldr r2, [r0, #0xd8]
rsb r1, r3, r3, lsl #6
sub r1, r2, r1
str r1, [r0, #0xd8]
_0201561C:
ldr r1, [r0, #0xd8]
ldr r2, _02015658 ; =0x00000107
cmp r1, #0x7f
movhs r1, #0
strhs r1, [r0, #0x1c]
mov r1, #4
str r1, [sp]
ldrsh r1, [r0, #0x42]
ldr r0, _0201565C ; =0x0380B460
ldr r3, _02015660 ; =0x027E5E74
bl sub_0302D088
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02015650: .word 0x04000006
_02015654: .word 0x027F8878
_02015658: .word 0x00000107
_0201565C: .word 0x0380B460
_02015660: .word 0x027E5E74
arm_func_end sub_020155A4
arm_func_start sub_02015664
sub_02015664: ; 0x02015664
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r0, _02015768 ; =0x027F8878
ldr r4, [r0, #0x550]
ldr r0, [r4, #0xc]
cmp r0, #1
bne _0201575C
ldr r0, _0201576C ; =0x0380B460
mov r2, #1
mov r1, #0xc8
ldr r3, _02015770 ; =0x027E5C50
str r2, [sp]
add r2, r1, #0x3f
bl sub_0302D088
ldr r0, [r4, #0x7bc]
ldr r1, [r4, #0x7b8]
cmp r0, #0
cmpeq r1, #0
beq _02015758
bl sub_0302CA0C
ldr r3, [r4, #0x73c]
ldr ip, [r4, #0x738]
cmp r3, #0
cmpeq ip, #0
orr lr, r1, #0
orr r1, r0, #1
mov r0, #0
beq _02015758
ldr r2, [r4, #0x7b8]
subs ip, r1, ip
ldr r1, [r4, #0x7bc]
sbc r3, lr, r3
cmp r3, r1
cmpeq ip, r2
bls _02015758
str r0, [r4, #0x738]
str r0, [r4, #0x73c]
bl sub_0200FEF0
movs r1, r0
moveq r0, #0
beq _02015724
mov r0, #0x25
str r0, [r1]
ldr r3, _02015774 ; =0x00008001
mov r2, #0
ldr r0, _02015778 ; =0x027F7900
stmib r1, {r2, r3}
bl sub_0302BEC4
_02015724:
cmp r0, #0
bne _0201575C
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #8
strh r1, [r0, #2]
mov r1, #0x16
strh r1, [r0, #4]
mov r1, #0x25
strh r1, [r0, #6]
bl sub_03036B24
b _0201575C
_02015758:
bl sub_02015880
_0201575C:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_02015768: .word 0x027F8878
_0201576C: .word 0x0380B460
_02015770: .word 0x027E5C50
_02015774: .word 0x00008001
_02015778: .word 0x027F7900
arm_func_end sub_02015664
arm_func_start sub_0201577C
sub_0201577C: ; 0x0201577C
stmdb sp!, {r3, lr}
ldr r0, _0201581C ; =0x027F8878
ldr r0, [r0, #0x550]
ldrh r1, [r0, #0xdc]
cmp r1, #0x3c
blo _020157B8
ldr r2, _02015820 ; =0x04000006
ldrh r1, [r2]
cmp r1, #0xcb
blt _020157C0
cmp r1, #0xd2
strlth r1, [r2]
movlt r1, #0
strlth r1, [r0, #0xdc]
b _020157C0
_020157B8:
add r1, r1, #1
strh r1, [r0, #0xdc]
_020157C0:
ldr r1, _02015820 ; =0x04000006
ldr r2, _02015824 ; =0x048080F8
ldrh lr, [r1]
ldrh r1, [r2]
ldrh r3, [r2, #2]
ldrh ip, [r2]
cmp r1, ip
ldrhih r3, [r2, #2]
ldr r1, _02015828 ; =0x0380FFF0
orr r3, ip, r3, lsl #16
rsb r2, lr, lr, lsl #7
rsb r2, r2, r3, lsl #1
mov r3, r2, lsr #7
strh r3, [r1]
mov r2, #5
str r2, [sp]
ldrsh r1, [r0, #0x40]
ldr r0, _0201582C ; =0x0380B460
ldr r3, _02015830 ; =0x027E6044
rsb r2, r2, #0x10c
bl sub_0302D088
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201581C: .word 0x027F8878
_02015820: .word 0x04000006
_02015824: .word 0x048080F8
_02015828: .word 0x0380FFF0
_0201582C: .word 0x0380B460
_02015830: .word 0x027E6044
arm_func_end sub_0201577C
arm_func_start sub_02015834
sub_02015834: ; 0x02015834
stmdb sp!, {r3, lr}
ldr r0, _02015874 ; =0x027F8878
ldr r0, [r0, #0x550]
ldr r0, [r0, #0xc]
cmp r0, #1
bne _0201586C
ldr r0, _02015878 ; =0x0380B460
mov r1, #0xcb
mov ip, #3
ldr r3, _0201587C ; =0x027E5F8C
add r2, r1, #0x3c
str ip, [sp]
bl sub_0302D088
bl sub_02015880
_0201586C:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02015874: .word 0x027F8878
_02015878: .word 0x0380B460
_0201587C: .word 0x027E5F8C
arm_func_end sub_02015834
arm_func_start sub_02015880
sub_02015880: ; 0x02015880
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _02015928 ; =0x027F8878
ldr r4, _0201592C ; =0x027F7878
ldr r5, [r0, #0x550]
bl sub_0302D4F0
ldrh r1, [r5, #0xce]
cmp r1, #1
bne _020158A8
bl sub_0302D504
b _02015920
_020158A8:
mov r1, #1
strh r1, [r5, #0xce]
bl sub_0302D504
bl sub_0200FEF0
movs r1, r0
moveq r0, #0
beq _020158D8
mov r3, #0x1c
add r0, r4, #0x88
mov r2, #0
str r3, [r1]
bl sub_0302BEC4
_020158D8:
cmp r0, #0
bne _02015920
mov r0, #0
strh r0, [r5, #0xce]
add r0, r4, #0x1000
ldr r0, [r0, #0x54c]
cmp r0, #0
beq _02015920
bl sub_03036B70
mov r1, #0x80
strh r1, [r0]
mov r1, #8
strh r1, [r0, #2]
mov r1, #0x16
strh r1, [r0, #4]
mov r1, #0x1c
strh r1, [r0, #6]
bl sub_03036B24
_02015920:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02015928: .word 0x027F8878
_0201592C: .word 0x027F7878
arm_func_end sub_02015880
arm_func_start sub_02015930
sub_02015930: ; 0x02015930
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _02015AC8 ; =0x027F8878
mov r1, #0
ldr r4, [r0, #0x550]
mov r2, #1
strh r1, [r4, #0xce]
strh r2, [r4, #0x88]
ldrh r0, [r4, #0xc0]
sub r0, r0, #1
strh r0, [r4, #0xc0]
ldrh r0, [r4, #0xc0]
cmp r0, #0
bne _0201599C
ldrh r1, [r4, #0xbe]
rsb r0, r2, #0x10000
cmp r1, r0
moveq r0, #4
streqh r0, [r4, #0xbe]
ldrh r0, [r4, #0xbe]
and r0, r0, #0xff
bl sub_0200FD10
bl sub_0200FD8C
strh r0, [r4, #0xbc]
ldr r1, _02015ACC ; =0x0000FFFF
mov r0, #1
strh r1, [r4, #0xbe]
strh r0, [r4, #0xc0]
_0201599C:
ldrh r0, [r4]
cmp r0, #9
bne _02015A8C
bl sub_0302D4F0
add r1, r4, #0x100
ldrh r1, [r1, #0x82]
cmp r1, #0
bne _020159CC
mov r1, #0
strh r1, [r4, #0x62]
bl sub_0302D504
b _02015AC0
_020159CC:
ldrsh r2, [r4, #0x62]
mov r3, #1
cmp r2, #0
ldrgtsh r1, [r4, #0x64]
cmpgt r1, #0
movgt r3, #0
cmp r2, #0
movlt r1, #0
strlth r1, [r4, #0x62]
add r1, r4, #0x700
ldrsh r2, [r4, #0x62]
ldrsh r1, [r1, #0xc2]
add r1, r2, r1
strh r1, [r4, #0x62]
ldrsh r1, [r4, #0x62]
cmp r1, #0x100
movgt r1, #0x100
strgth r1, [r4, #0x62]
add r1, r4, #0x700
ldrh r1, [r1, #0xc4]
cmp r3, #0
strh r1, [r4, #0x64]
beq _02015A40
ldrsh r1, [r4, #0x62]
cmp r1, #0
ldrgtsh r1, [r4, #0x64]
cmpgt r1, #0
movgt r5, #1
bgt _02015A44
_02015A40:
mov r5, #0
_02015A44:
bl sub_0302D504
cmp r5, #0
beq _02015A58
ldr r0, _02015ACC ; =0x0000FFFF
bl sub_02016110
_02015A58:
add r0, r4, #0x700
ldrh r0, [r0, #0xc6]
cmp r0, #1
ldreqh r0, [r4, #0xa0]
subeq r0, r0, #1
streqh r0, [r4, #0xa0]
ldreqh r0, [r4, #0xa0]
cmpeq r0, #0
moveq r0, #1
streqh r0, [r4, #0x9e]
moveq r0, #0x3c
streqh r0, [r4, #0xa0]
b _02015AC0
_02015A8C:
cmp r0, #0xa
bne _02015AC0
mov r5, #0
bl sub_0302D4F0
ldr r1, [r4, #0x734]
cmp r1, #1
movne r1, r5
movne r5, #1
strneh r1, [r4, #0x60]
bl sub_0302D504
cmp r5, #1
bne _02015AC0
bl sub_02015C18
_02015AC0:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02015AC8: .word 0x027F8878
_02015ACC: .word 0x0000FFFF
arm_func_end sub_02015930
arm_func_start sub_02015AD0
sub_02015AD0: ; 0x02015AD0
stmdb sp!, {r3, lr}
ldr r1, _02015B00 ; =0x027F8878
ldr r1, [r1, #0x550]
ldrh r1, [r1]
cmp r1, #9
bne _02015AF8
ldr r0, [r0, #4]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02016110
_02015AF8:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02015B00: .word 0x027F8878
arm_func_end sub_02015AD0
arm_func_start sub_02015B04
sub_02015B04: ; 0x02015B04
stmdb sp!, {r3, lr}
ldr r0, _02015B28 ; =0x027F8878
ldr r0, [r0, #0x550]
ldrh r0, [r0]
cmp r0, #0xa
bne _02015B20
bl sub_02015C18
_02015B20:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02015B28: .word 0x027F8878
arm_func_end sub_02015B04
arm_func_start sub_02015B2C
sub_02015B2C: ; 0x02015B2C
stmdb sp!, {r3, lr}
ldr r1, _02015B5C ; =0x027F8878
ldr r1, [r1, #0x550]
ldrh r1, [r1]
cmp r1, #9
bne _02015B54
ldr r0, [r0, #4]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02016AB8
_02015B54:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02015B5C: .word 0x027F8878
arm_func_end sub_02015B2C
arm_func_start sub_02015B60
sub_02015B60: ; 0x02015B60
stmdb sp!, {r4, lr}
ldr r0, _02015C10 ; =0x027F8878
ldr r4, [r0, #0x550]
add r0, r4, #0x31c
add r0, r0, #0x400
bl sub_0302C078
add r1, r4, #0x2f8
mov r0, #0
mov r2, #0x400
bl sub_0302D764
mov r3, #0
_02015B8C:
add r0, r3, #1
mov r0, r0, lsl #0x10
add r1, r4, r3, lsl #5
mov r3, r0, lsr #0x10
add r0, r1, #0x200
strh r3, [r0, #0xf8]
cmp r3, #0x1f
blo _02015B8C
ldr r2, _02015C14 ; =0x0000FFFF
add r0, r4, r3, lsl #5
add r0, r0, #0x200
strh r2, [r0, #0xf8]
add r0, r4, #0x600
mov ip, #0
strh ip, [r0, #0xf8]
strh r3, [r0, #0xfa]
_02015BCC:
add r1, r4, ip, lsl #2
add r0, r1, #0x700
strh r2, [r0, #0xc]
strh r2, [r0, #0xe]
add r0, r1, #0x600
add r1, ip, #1
strh r2, [r0, #0xfc]
mov r1, r1, lsl #0x10
mov ip, r1, lsr #0x10
strh r2, [r0, #0xfe]
cmp ip, #4
blo _02015BCC
add r0, r4, #0x31c
add r0, r0, #0x400
bl sub_0302C0FC
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02015C10: .word 0x027F8878
_02015C14: .word 0x0000FFFF
arm_func_end sub_02015B60
arm_func_start sub_02015C18
sub_02015C18: ; 0x02015C18
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x260
ldr r1, _02016108 ; =0x027F8878
ldr fp, [r1, #0x550]
add r0, fp, #0x100
ldrh r0, [r0, #0x82]
cmp r0, #0
beq _020160FC
mov r0, #1
strh r0, [fp, #0x8a]
str r0, [sp, #0x14]
mov r0, #0
strh r0, [sp, #0x5c]
ldr r8, [r1, #0x550]
add r1, sp, #0x5c
ldrh sb, [r8, #0x38]
str r1, [sp, #0x34]
add r1, sb, #0x1f
ldrh r2, [r8, #0x80]
bic r1, r1, #0x1f
ldr r7, [r8, #0x7c]
cmp r2, r1
blt _020160A8
add r1, r8, #0x100
ldrh r1, [r1, #0x88]
cmp r1, #0x10
bhs _020160A8
ldrh r1, [r8]
cmp r1, #9
beq _02015C9C
cmp r1, #0xa
streq r0, [sp, #0x14]
bne _020160A8
_02015C9C:
ldr r0, [sp, #0x34]
mov r6, #0
strh r6, [r0]
mov r0, #1
cmp sb, #0
strlt r0, [sp, #0x14]
blt _020160A8
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
cmp r0, #0
beq _02015CDC
add r0, r8, #0x700
ldrh r0, [r0, #0xc6]
cmp r0, #0
strne r6, [sp, #0x18]
b _02015CE0
_02015CDC:
str r6, [sp, #0x18]
_02015CE0:
add r0, r8, #0x31c
mov r1, #0
str r1, [sp, #0xc]
mov r1, #1
add r0, r0, #0x400
str r1, [sp, #0x10]
bl sub_0302C078
ldr r0, [r8, #0x734]
cmp r0, #1
bne _02015D20
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_0302C0FC
mov r0, #1
str r0, [sp, #0x14]
b _020160A8
_02015D20:
mov r0, #1
str r0, [r8, #0x734]
add r0, r8, #0x2f8
str r0, [sp, #0x1c]
mov r5, #0
b _02016084
_02015D38:
add r0, r8, #0x30c
add r0, r0, #0x400
mov r1, r5, lsl #2
ldrh sl, [r0, r1]
add r0, r0, r5, lsl #2
str r0, [sp, #0x20]
add r0, r8, #0x2fc
add r0, r0, #0x400
add r0, r0, r5, lsl #2
str r0, [sp, #0x24]
ldr r0, [sp, #0x20]
str r0, [sp, #0x28]
ldr r0, _0201610C ; =0x0000FFFF
str r0, [sp, #0x2c]
str r0, [sp, #0x38]
str r0, [sp, #0x3c]
add r0, r8, #0x100
str r0, [sp, #0x40]
ldr r0, [sp, #0x2c]
sub r0, r0, #0x8000
str r0, [sp, #0x44]
ldr r0, [sp, #0x2c]
str r0, [sp, #0x48]
add r0, r8, #0x700
str r0, [sp, #0x4c]
ldr r0, [sp, #0x2c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
str r0, [sp, #0x58]
b _0201606C
_02015DB0:
ldr r0, [sp, #0x1c]
ldr r2, [sp, #0xc]
add r4, r0, sl, lsl #5
ldrh r0, [r4, #2]
mov r1, #1
str r0, [sp, #8]
tst r2, r1, lsl r0
bne _02016030
ldr r0, [sp, #0x18]
cmp r0, #0
ldr r0, [sp, #8]
orr r0, r2, r1, lsl r0
str r0, [sp, #0xc]
ldrh r0, [r4, #6]
and r1, r0, r1
str r1, [sp, #0x30]
beq _02015DFC
bics r1, r1, #1
bne _02016030
_02015DFC:
ldr r1, [sp, #8]
tst r1, #8
movne r1, #1
strne r1, [sp, #4]
moveq r1, #0
streq r1, [sp, #4]
ldr r1, [sp, #0x14]
cmp r1, #0
orrne r1, r0, #1
ldrne r0, [sp, #0x3c]
cmpne r1, r0
movne r0, #1
strne r0, [sp]
moveq r0, #0
streq r0, [sp]
ldrh r0, [r4, #0xe]
and r1, r0, #1
cmp r1, #1
addeq r0, r0, #1
streqh r0, [r4, #0xe]
ldr r0, [sp, #4]
ldr r1, [sp, #0x10]
cmp r0, #0
movne r0, #2
moveq r0, #0
cmp r1, #0
movne r3, #0
ldr r1, [sp]
moveq r3, #2
ldrh r2, [r4, #0xe]
cmp r1, #0
movne r1, #2
add r2, r2, r3
moveq r1, #0
add r0, r2, r0
add r0, r1, r0
cmp r0, sb
bgt _02016030
ldr r0, [sp, #0x10]
cmp r0, #0
streq r7, [sp, #0x34]
moveq r0, #0
streqh r0, [r7], #2
ldr r0, [sp, #0x34]
ldrh r2, [r4, #2]
ldrh r1, [r4, #0xe]
mov r2, r2, lsl #8
mov r1, r1, lsr #1
ldrh r0, [r0]
and r2, r2, #0xf00
and r1, r1, #0xff
orr r1, r2, r1
orr r1, r0, r1
ldr r0, [sp, #0x34]
addeq r6, r6, #2
strh r1, [r0]
ldr r0, [r4, #0x14]
ldrh r2, [r4, #0xe]
mov r1, r7
subeq sb, sb, #2
bl sub_0302D78C
ldrh r1, [r4, #0xe]
ldr r0, [sp, #4]
add r6, r6, r1
cmp r0, #1
bic r0, r1, #1
add r7, r7, r0
sub sb, sb, r1
bne _02015F64
ldrh r0, [r4, #0x10]
tst r0, #1
moveq r2, r0, asr #1
beq _02015F50
ldr r0, [sp, #0x40]
ldrh r1, [r4, #2]
ldrh r0, [r0, #0x88]
mov r1, r1, lsl #0x1d
add r0, r8, r0, lsl #4
add r0, r0, r1, lsr #28
add r0, r0, #0x100
ldrh r2, [r0, #0xf8]
add r1, r2, #1
strh r1, [r0, #0xf8]
mov r0, r2, lsl #1
strh r0, [r4, #0x10]
_02015F50:
ldr r0, [sp, #0x44]
add r6, r6, #2
and r0, r2, r0
strh r0, [r7], #2
sub sb, sb, #2
_02015F64:
ldr r0, [sp]
cmp r0, #1
bne _02015F94
ldr r0, [sp, #0x34]
add r6, r6, #2
ldrh r0, [r0]
sub sb, sb, #2
orr r1, r0, #0x1000
ldr r0, [sp, #0x34]
strh r1, [r0]
ldrh r0, [r4, #6]
strh r0, [r7], #2
_02015F94:
ldr r0, [sp, #0x10]
cmp r0, #1
moveq r0, #0
streq r0, [sp, #0x10]
ldr r0, [sp, #0x20]
ldrh r0, [r0, #2]
cmp r0, sl
ldreq r1, [sp, #0x2c]
ldreq r0, [sp, #0x20]
streqh r1, [r0, #2]
ldrh r1, [r4]
ldr r0, [sp, #0x28]
strh r1, [r0]
ldr r0, [sp, #0x38]
strh r0, [r4]
ldr r0, [sp, #0x24]
ldrh r1, [r0, #2]
ldr r0, [sp, #0x48]
cmp r1, r0
ldreq r0, [sp, #0x24]
movne r1, r1, lsl #5
streqh sl, [r0]
ldrne r0, [sp, #0x1c]
strneh sl, [r0, r1]
ldr r0, [sp, #8]
mov r1, #1
mvn r1, r1, lsl r0
ldr r0, [sp, #0xc]
and r0, r0, r1
str r0, [sp, #0xc]
ldr r0, [sp, #0x24]
strh sl, [r0, #2]
ldr r0, [sp, #0x30]
ldr sl, [sp, #0x2c]
strh r0, [r4, #0xa]
ldr r0, [sp, #0x4c]
ldrh r0, [r0, #0xc8]
cmp r0, #1
beq _02016094
_02016030:
ldr r0, [sp, #0x50]
str sl, [sp, #0x2c]
cmp sl, r0
ldrne r0, [sp, #0x1c]
addne r0, r0, sl, lsl #5
strne r0, [sp, #0x28]
ldreq r0, [sp, #0x20]
streq r0, [sp, #0x28]
ldr r0, [sp, #0x54]
cmp sl, r0
ldrne r0, [sp, #0x1c]
movne r1, sl, lsl #5
ldrneh sl, [r0, r1]
ldreq r0, [sp, #0x20]
ldreqh sl, [r0]
_0201606C:
ldr r0, [sp, #0x58]
cmp sl, r0
beq _02016080
cmp sb, #2
bgt _02015DB0
_02016080:
add r5, r5, #1
_02016084:
cmp r5, #4
bhs _02016094
cmp sb, #2
bgt _02015D38
_02016094:
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_0302C0FC
mov r0, #0
str r0, [sp, #0x14]
_020160A8:
ldr r0, [sp, #0x14]
cmp r0, #1
moveq r0, #0
streqh r0, [fp, #0x8a]
beq _020160FC
ldr r0, [fp, #0x1c]
mov r1, r6, lsl #0x10
cmp r0, #1
ldreqh r0, [sp, #0x5c]
mov r1, r1, lsr #0x10
orreq r0, r0, #0x8000
streqh r0, [sp, #0x5c]
ldrh r2, [sp, #0x5c]
ldr r3, [fp, #0x7c]
add r0, sp, #0x60
bl sub_02011A9C
ldrh r0, [r0, #4]
cmp r0, #0
cmpne r0, #8
movne r0, #0
strneh r0, [fp, #0x8a]
_020160FC:
add sp, sp, #0x260
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02016108: .word 0x027F8878
_0201610C: .word 0x0000FFFF
arm_func_end sub_02015C18
arm_func_start sub_02016110
sub_02016110: ; 0x02016110
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2c8
ldr r1, _02016AA8 ; =0x027F8878
str r0, [sp, #0x18]
ldr r7, [r1, #0x550]
bl sub_0302D4F0
add r1, r7, #0x100
ldrh r1, [r1, #0x82]
ldrh r4, [r7, #0x86]
str r1, [sp, #0x74]
bl sub_0302D504
mov r1, #0
strh r1, [sp, #0xc4]
ldrh r0, [r7, #0x88]
cmp r0, #1
ldreq r0, _02016AAC ; =0x0000FFFF
streq r0, [sp, #0x18]
streqh r1, [r7, #0x88]
ldrh r0, [r7, #0x9e]
cmp r0, #0
bne _020169F8
ldr r1, _02016AA8 ; =0x027F8878
ldrh r0, [r7, #0x3a]
ldr r8, [r1, #0x550]
str r0, [sp, #0x24]
add r0, sp, #0xc4
ldrh sb, [r8, #0x38]
str r0, [sp, #0x70]
add r0, sb, #0x1f
ldrh r1, [r8, #0x80]
bic r0, r0, #0x1f
cmp r1, r0
ldr r6, [r8, #0x7c]
movlt r0, #1
blt _02016638
add r0, r8, #0x100
ldrh r0, [r0, #0x88]
cmp r0, #0x10
movhs r0, #1
bhs _02016638
ldrh r0, [r8]
cmp r0, #9
moveq r0, #1
streq r0, [sp, #0x48]
beq _020161DC
cmp r0, #0xa
moveq r0, #0
streq r0, [sp, #0x48]
beq _020161DC
mov r0, #1
b _02016638
_020161DC:
ldr r0, [sp, #0x70]
mov r5, #0
mov sl, r5
mov fp, r5
strh r5, [r0]
cmp sb, #0
movlt r0, #1
blt _02016638
ldr r0, [sp, #0x48]
str r4, [sp, #0x50]
cmp r0, #0
mov r0, #1
str r0, [sp, #0x4c]
beq _02016230
add r0, r8, #0x700
ldrh r0, [r0, #0xc6]
cmp r0, #0
ldrne r0, [sp, #0x74]
strne r5, [sp, #0x4c]
strne r0, [sp, #0x50]
b _02016234
_02016230:
str r5, [sp, #0x4c]
_02016234:
ldr r0, [sp, #0x18]
and r4, r4, r0
mov r0, #0
str r0, [sp, #0x40]
mov r0, #1
str r0, [sp, #0x44]
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_0302C078
ldr r0, [r8, #0x734]
cmp r0, #1
bne _02016278
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_0302C0FC
mov r0, #1
b _02016638
_02016278:
mvn r0, r4
str r0, [sp, #0x2c]
mov r0, #1
str r0, [r8, #0x734]
add r0, r8, #0x2f8
str r0, [sp, #0x54]
mov r0, #0
str r0, [sp, #0x58]
b _02016610
_0201629C:
ldr r0, [sp, #0x58]
mov r2, r0, lsl #2
add r0, r8, #0x30c
add r1, r0, #0x400
ldr r0, [sp, #0x58]
ldrh sl, [r1, r2]
add r0, r1, r0, lsl #2
str r0, [sp, #0x5c]
add r0, r8, #0x2fc
add r1, r0, #0x400
ldr r0, [sp, #0x58]
add r0, r1, r0, lsl #2
str r0, [sp, #0x60]
ldr r0, [sp, #0x5c]
str r0, [sp, #0x64]
ldr r0, _02016AAC ; =0x0000FFFF
str r0, [sp, #0x68]
str r0, [sp, #0x78]
str r0, [sp, #0x8c]
add r0, r8, #0x100
str r0, [sp, #0x90]
ldr r0, [sp, #0x68]
sub r0, r0, #0x8000
str r0, [sp, #0x94]
ldr r0, [sp, #0x68]
str r0, [sp, #0x98]
add r0, r8, #0x700
str r0, [sp, #0x9c]
ldr r0, [sp, #0x68]
str r0, [sp, #0xa0]
str r0, [sp, #0xa4]
str r0, [sp, #0xa8]
b _020165F0
_02016320:
ldr r0, [sp, #0x54]
ldr r2, [sp, #0x40]
add r4, r0, sl, lsl #5
ldrh r0, [r4, #2]
mov r1, #1
str r0, [sp, #0x28]
tst r2, r1, lsl r0
bne _020165B4
ldr r0, [sp, #0x4c]
cmp r0, #0
ldr r0, [sp, #0x28]
orr r0, r2, r1, lsl r0
str r0, [sp, #0x40]
ldrh r0, [r4, #6]
ldr r1, [sp, #0x50]
and r1, r0, r1
str r1, [sp, #0x6c]
beq _02016378
mov r2, r1
ldr r1, [sp, #0x2c]
tst r2, r1
bne _020165B4
_02016378:
ldr r1, [sp, #0x28]
tst r1, #8
movne r1, #1
strne r1, [sp, #0x20]
moveq r1, #0
streq r1, [sp, #0x20]
ldr r1, [sp, #0x48]
cmp r1, #0
orrne r1, r0, #1
ldrne r0, [sp, #0x8c]
cmpne r1, r0
movne r0, #1
strne r0, [sp, #0x1c]
moveq r0, #0
streq r0, [sp, #0x1c]
ldrh r0, [r4, #0xe]
and r1, r0, #1
cmp r1, #1
addeq r0, r0, #1
streqh r0, [r4, #0xe]
ldr r0, [sp, #0x20]
ldr r1, [sp, #0x44]
cmp r0, #0
movne r0, #2
moveq r0, #0
cmp r1, #0
movne r3, #0
ldr r1, [sp, #0x1c]
moveq r3, #2
ldrh r2, [r4, #0xe]
cmp r1, #0
movne r1, #2
add r2, r2, r3
moveq r1, #0
add r0, r2, r0
add r0, r1, r0
cmp r0, sb
bgt _020165B4
ldr r0, [sp, #0x44]
cmp r0, #0
streq r6, [sp, #0x70]
moveq r0, #0
streqh r0, [r6], #2
ldr r0, [sp, #0x70]
ldrh r2, [r4, #2]
ldrh r1, [r4, #0xe]
mov r2, r2, lsl #8
mov r1, r1, lsr #1
ldrh r0, [r0]
and r2, r2, #0xf00
and r1, r1, #0xff
orr r1, r2, r1
orr r1, r0, r1
ldr r0, [sp, #0x70]
addeq fp, fp, #2
strh r1, [r0]
ldr r0, [r4, #0x14]
ldrh r2, [r4, #0xe]
mov r1, r6
subeq sb, sb, #2
bl sub_0302D78C
ldrh r1, [r4, #0xe]
ldr r0, [sp, #0x20]
add fp, fp, r1
cmp r0, #1
bic r0, r1, #1
add r6, r6, r0
sub sb, sb, r1
bne _020164E0
ldrh r0, [r4, #0x10]
tst r0, #1
moveq r2, r0, asr #1
beq _020164CC
ldr r0, [sp, #0x90]
ldrh r1, [r4, #2]
ldrh r0, [r0, #0x88]
mov r1, r1, lsl #0x1d
add r0, r8, r0, lsl #4
add r0, r0, r1, lsr #28
add r0, r0, #0x100
ldrh r2, [r0, #0xf8]
add r1, r2, #1
strh r1, [r0, #0xf8]
mov r0, r2, lsl #1
strh r0, [r4, #0x10]
_020164CC:
ldr r0, [sp, #0x94]
add fp, fp, #2
and r0, r2, r0
strh r0, [r6], #2
sub sb, sb, #2
_020164E0:
ldr r0, [sp, #0x1c]
cmp r0, #1
bne _02016510
ldr r0, [sp, #0x70]
add fp, fp, #2
ldrh r0, [r0]
sub sb, sb, #2
orr r1, r0, #0x1000
ldr r0, [sp, #0x70]
strh r1, [r0]
ldrh r0, [r4, #6]
strh r0, [r6], #2
_02016510:
ldr r0, [sp, #0x44]
cmp r0, #1
moveq r0, #0
streq r0, [sp, #0x44]
ldr r0, [sp, #0x5c]
ldrh r0, [r0, #2]
cmp r0, sl
ldreq r1, [sp, #0x68]
ldreq r0, [sp, #0x5c]
streqh r1, [r0, #2]
ldrh r1, [r4]
ldr r0, [sp, #0x64]
strh r1, [r0]
ldr r0, [sp, #0x78]
strh r0, [r4]
ldr r0, [sp, #0x60]
ldrh r1, [r0, #2]
ldr r0, [sp, #0x98]
cmp r1, r0
ldreq r0, [sp, #0x60]
movne r1, r1, lsl #5
streqh sl, [r0]
ldrne r0, [sp, #0x54]
strneh sl, [r0, r1]
ldr r0, [sp, #0x28]
mov r1, #1
mvn r1, r1, lsl r0
ldr r0, [sp, #0x40]
and r0, r0, r1
str r0, [sp, #0x40]
ldr r0, [sp, #0x60]
strh sl, [r0, #2]
ldr r0, [sp, #0x6c]
ldr sl, [sp, #0x68]
strh r0, [r4, #0xa]
ldrh r0, [r4, #4]
orr r5, r5, r0
ldr r0, [sp, #0x9c]
ldrh r0, [r0, #0xc8]
cmp r0, #1
beq _02016624
_020165B4:
ldr r0, [sp, #0xa0]
str sl, [sp, #0x68]
cmp sl, r0
ldrne r0, [sp, #0x54]
addne r0, r0, sl, lsl #5
strne r0, [sp, #0x64]
ldreq r0, [sp, #0x5c]
streq r0, [sp, #0x64]
ldr r0, [sp, #0xa4]
cmp sl, r0
ldrne r0, [sp, #0x54]
movne r1, sl, lsl #5
ldrneh sl, [r0, r1]
ldreq r0, [sp, #0x5c]
ldreqh sl, [r0]
_020165F0:
ldr r0, [sp, #0xa8]
cmp sl, r0
beq _02016604
cmp sb, #2
bgt _02016320
_02016604:
ldr r0, [sp, #0x58]
add r0, r0, #1
str r0, [sp, #0x58]
_02016610:
ldr r0, [sp, #0x58]
cmp r0, #4
bhs _02016624
cmp sb, #2
bgt _0201629C
_02016624:
add r0, r8, #0x31c
add r0, r0, #0x400
mov sl, fp
bl sub_0302C0FC
mov r0, #0
_02016638:
cmp r0, #1
moveq r0, #0
streqh r0, [r7, #0x62]
streqh r0, [r7, #0x64]
beq _02016A9C
add r0, r7, #0x700
ldrh r1, [r0, #0xc6]
ldr r0, [sp, #0x24]
cmp r1, #1
add r4, r0, #2
ldrne r5, [sp, #0x18]
ldr r0, [sp, #0x74]
and r5, r5, r0
mov r0, r5
bl sub_03033020
ldr r1, [sp, #0x24]
add r1, r1, #0xc
mul r0, r1, r0
add r0, r0, #0x29
ldrh r1, [r7, #0x72]
bic r0, r0, #0x1f
cmp r1, r0
bge _020169B8
ldr r0, _02016AA8 ; =0x027F8878
ldr sb, [r0, #0x550]
ldrh r0, [sb]
add r8, sb, #0x2f8
cmp r0, #9
moveq r4, #1
beq _020166BC
cmp r0, #0xa
bne _020169A8
mov r4, #0
_020166BC:
add r0, sb, #0x31c
add r0, r0, #0x400
bl sub_0302C078
ldr r0, [sb, #0x734]
cmp r0, #0
bne _020166E4
add r0, sb, #0x31c
add r0, r0, #0x400
bl sub_0302C0FC
b _020169A8
_020166E4:
cmp r4, #0
moveq r0, #1
streq r0, [sp, #0x3c]
beq _02016708
bl sub_0302D4F0
add r1, sb, #0x100
ldrh r1, [r1, #0x82]
str r1, [sp, #0x3c]
bl sub_0302D504
_02016708:
mov r0, r5, lsl #0x10
mvn r0, r0, lsr #16
str r0, [sp, #0x30]
mov sl, #0
_02016718:
ldr r0, _02016AAC ; =0x0000FFFF
add fp, sb, #0x600
str r0, [sp, #0x38]
add r0, sb, #0x2fc
add r1, r0, #0x400
mov r0, sl, lsl #2
ldrh r5, [r1, r0]
ldr r0, [sp, #0x38]
add r6, r1, sl, lsl #2
str r0, [sp, #0x34]
ldr r0, [sp, #0x38]
str r0, [sp, #0x7c]
str r0, [sp, #0x80]
str r0, [sp, #0x84]
str r0, [sp, #0x88]
str r0, [sp, #0xac]
str r0, [sp, #0xb0]
add r0, sb, #0x100
str r0, [sp, #0xb4]
ldr r0, [sp, #0x38]
str r0, [sp, #0xb8]
str r0, [sp, #0xbc]
str r0, [sp, #0xc0]
b _02016934
_02016778:
add r4, r8, r5, lsl #5
ldrh r1, [r4, #0xa]
ldr r0, [sp, #0x30]
ldrh r2, [r4, #8]
and r0, r1, r0
orr r0, r2, r0
strh r0, [r4, #8]
ldrh r0, [r4, #8]
ldrh r1, [r4, #6]
mvn r0, r0
and r0, r1, r0
strh r0, [r4, #6]
ldrh r1, [r4, #6]
ldr r0, [sp, #0x3c]
and r0, r1, r0
strh r0, [r4, #6]
mov r0, #0
strh r0, [r4, #0xa]
ldrh r0, [r4, #6]
cmp r0, #0
beq _02016848
ldrh r0, [r4, #2]
tst r0, #8
ldreqh r0, [r4, #0x12]
cmpeq r0, #0
beq _02016848
ldrh r0, [r4, #0x12]
cmp r0, #0
subne r0, r0, #1
strneh r0, [r4, #0x12]
ldrh r1, [r4]
ldr r0, [sp, #0xac]
cmp r1, r0
ldreq r0, [sp, #0x7c]
streqh r0, [r6, #2]
ldr r1, [sp, #0x38]
ldr r0, [sp, #0xb0]
cmp r1, r0
ldrh r0, [r4]
strh r0, [r6]
ldr r0, [sp, #0x80]
strh r0, [r4]
moveq r0, r5, lsl #0x10
moveq r0, r0, lsr #0x10
streq r0, [sp, #0x34]
ldrne r0, [sp, #0x38]
movne r0, r0, lsl #5
strneh r5, [r8, r0]
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
str r0, [sp, #0x38]
b _02016930
_02016848:
bl sub_03036B70
mov r1, #0x81
strh r1, [r0]
ldrh r1, [r4, #6]
ldr r3, [sp, #0xb4]
cmp r1, #0
moveq r1, #0
movne r1, #0xf
strh r1, [r0, #2]
mov r1, #0x14
strh r1, [r0, #8]
ldrh r1, [r4, #2]
strh r1, [r0, #0xa]
ldrh r1, [r4, #4]
strh r1, [r0, #0xc]
ldrh r1, [r4, #6]
strh r1, [r0, #0xe]
ldrh r1, [r4, #8]
strh r1, [r0, #0x10]
ldrh r1, [r4, #0xe]
strh r1, [r0, #0x18]
ldr r1, [r4, #0x14]
str r1, [r0, #0x14]
ldr r1, [r4, #0x18]
str r1, [r0, #0x1c]
ldr r1, [r4, #0x1c]
str r1, [r0, #0x20]
ldrh r1, [r4, #0x10]
strh r1, [r0, #0x1a]
ldrh r3, [r3, #0x88]
ldrh r1, [sb, #0x30]
cmp r3, #0
ldrh r2, [sb, #0x32]
moveq r3, r1
movne r3, r2
strh r3, [r0, #0x24]
ldr r3, [sp, #0xb4]
ldrh r3, [r3, #0x88]
cmp r3, #0
movne r2, r1
strh r2, [r0, #0x26]
bl sub_03036B24
ldrh r1, [r4]
ldr r0, [sp, #0xb8]
cmp r1, r0
ldreq r0, [sp, #0x84]
streqh r0, [r6, #2]
ldrh r0, [r4]
strh r0, [r6]
ldr r0, [sp, #0x88]
strh r0, [r4]
ldrh r1, [fp, #0xfa]
ldr r0, [sp, #0xbc]
cmp r1, r0
streqh r5, [fp, #0xf8]
movne r0, r1, lsl #5
strneh r5, [r8, r0]
strh r5, [fp, #0xfa]
_02016930:
ldrh r5, [r6]
_02016934:
ldr r0, [sp, #0xc0]
cmp r5, r0
bne _02016778
ldr r2, _02016AAC ; =0x0000FFFF
ldr r0, [sp, #0x38]
cmp r0, r2
beq _02016988
add r0, sb, sl, lsl #2
add r1, r0, #0x700
ldr r0, [sp, #0x38]
ldrh r3, [r1, #0xc]
mov r0, r0, lsl #5
strh r3, [r8, r0]
ldrh r0, [r1, #0xe]
cmp r0, r2
ldreq r0, [sp, #0x38]
streqh r0, [r1, #0xe]
add r0, sb, sl, lsl #2
add r1, r0, #0x700
ldr r0, [sp, #0x34]
strh r0, [r1, #0xc]
_02016988:
add sl, sl, #1
cmp sl, #4
blt _02016718
add r0, sb, #0x31c
mov r1, #0
add r0, r0, #0x400
str r1, [sb, #0x734]
bl sub_0302C0FC
_020169A8:
mov r0, #0
strh r0, [r7, #0x62]
strh r0, [r7, #0x64]
b _02016A9C
_020169B8:
ldrsh r0, [r7, #0x62]
cmp r0, #1
ldrnesh r0, [r7, #0x64]
cmpne r0, #1
movne r6, #0
bne _02016A38
ldrh r3, [r7, #0x40]
mov r0, sl
mov r1, r4
mov r2, r5
bl sub_02017404
ldrh r1, [sp, #0xc4]
mov r6, r0
orr r0, r1, #0x8000
strh r0, [sp, #0xc4]
b _02016A38
_020169F8:
mov r6, #0
strh r6, [r7, #0x9e]
ldrh r0, [sp, #0xc4]
ldr r5, [sp, #0x74]
bic r0, r0, #0x8000
strh r0, [sp, #0xc4]
mov sl, r6
ldr r4, _02016AB0 ; =0x000080D6
bl sub_0302D4F0
ldrsh r1, [r7, #0x62]
add r1, r1, #1
strh r1, [r7, #0x62]
ldrsh r1, [r7, #0x64]
add r1, r1, #1
strh r1, [r7, #0x64]
bl sub_0302D504
_02016A38:
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
str r0, [sp]
ldr r0, _02016AB4 ; =0x048080F8
str r6, [sp, #4]
ldrh r1, [r0]
mov r0, sl, lsl #0x10
str r1, [sp, #8]
mov r0, r0, lsr #0x10
str r0, [sp, #0xc]
ldrh r0, [sp, #0xc4]
mov r3, r4, lsl #0x10
str r0, [sp, #0x10]
ldr r2, [r7, #0x7c]
mov r1, #0
str r2, [sp, #0x14]
add r0, sp, #0xc8
mov r2, r1
mov r3, r3, lsr #0x10
bl sub_02011B04
strh r5, [r7, #0x68]
ldrh r0, [sp, #0xc4]
strh r0, [r7, #0x6a]
strh r4, [r7, #0x6c]
strh sl, [r7, #0x6e]
_02016A9C:
add sp, sp, #0x2c8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02016AA8: .word 0x027F8878
_02016AAC: .word 0x0000FFFF
_02016AB0: .word 0x000080D6
_02016AB4: .word 0x048080F8
arm_func_end sub_02016110
arm_func_start sub_02016AB8
sub_02016AB8: ; 0x02016AB8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x218
ldr r1, _02016B9C ; =0x027F8878
mov r4, r0
ldr r7, [r1, #0x550]
bl sub_0302D4F0
bl sub_0302D504
add r0, r7, #0x100
ldrh r0, [r0, #0x82]
ldr r1, _02016BA0 ; =0x048080F8
and r4, r4, r0
ldrh r8, [r7, #0x3a]
mov r0, r4
ldrh r5, [r1]
ldrh r6, [r7, #0x6a]
bl sub_03033020
add r1, r8, #0xc
mul r0, r1, r0
add r0, r0, #0x29
ldrh r1, [r7, #0x72]
bic r0, r0, #0x1f
cmp r1, r0
bge _02016B24
mov r0, #2
bl sub_0302BC58
bl sub_02011244
b _02016B90
_02016B24:
ldrsh r0, [r7, #0x62]
cmp r0, #1
ldrnesh r0, [r7, #0x64]
cmpne r0, #1
bicne r6, r6, #0x8000
movne r0, #0
bne _02016B58
ldrh r0, [r7, #0x6e]
ldrh r1, [r7, #0x6c]
ldrh r3, [r7, #0x40]
mov r2, r4
bl sub_02017404
orr r6, r6, #0x8000
_02016B58:
mov r1, r4, lsl #0x10
mov r1, r1, lsr #0x10
str r1, [sp]
stmib sp, {r0, r5}
mov r2, #0
mov r0, r6, lsl #0x10
str r2, [sp, #0xc]
mov r0, r0, lsr #0x10
str r0, [sp, #0x10]
ldr r1, _02016BA4 ; =0x0000800C
add r0, sp, #0x18
mov r3, r2
str r2, [sp, #0x14]
bl sub_02011B04
_02016B90:
add sp, sp, #0x218
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02016B9C: .word 0x027F8878
_02016BA0: .word 0x048080F8
_02016BA4: .word 0x0000800C
arm_func_end sub_02016AB8
arm_func_start sub_02016BA8
sub_02016BA8: ; 0x02016BA8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r4, _02016CD4 ; =0x027F8878
ldrh r8, [sp, #0x24]
ldr r4, [r4, #0x550]
mov r7, r0
add r0, r4, #0x30c
add r0, r0, #0x400
cmp r8, #0
add sb, r0, r1, lsl #2
mov r6, r2
mov r5, r3
add r8, r4, #0x2f8
moveq r0, #6
beq _02016CCC
ldrh r0, [sp, #0x24]
tst r6, #8
movne r1, #2
moveq r1, #0
add r0, r0, r1
cmp r0, #0x204
movgt r0, #6
bgt _02016CCC
add r0, r4, #0x31c
add r0, r0, #0x400
bl sub_0302C078
add r2, r4, #0x600
ldrh r1, [r2, #0xf8]
ldr r3, _02016CD8 ; =0x0000FFFF
cmp r1, r3
bne _02016C34
add r0, r4, #0x31c
add r0, r0, #0x400
bl sub_0302C0FC
mov r0, #0xa
b _02016CCC
_02016C34:
mov r0, r1, lsl #5
ldrh ip, [r8, r0]
add r0, r8, r1, lsl #5
strh ip, [r2, #0xf8]
ldrh ip, [r2, #0xfa]
cmp ip, r1
streqh r3, [r2, #0xfa]
strh r6, [r0, #2]
strh r5, [r0, #4]
and r2, r5, r7
strh r2, [r0, #6]
mov r2, #0
strh r2, [r0, #8]
strh r2, [r0, #0xa]
ldr r3, [sp, #0x20]
ldrh r2, [sp, #0x24]
str r3, [r0, #0x14]
strh r2, [r0, #0xe]
ldr r3, [sp, #0x28]
ldr r2, [sp, #0x2c]
str r3, [r0, #0x18]
str r2, [r0, #0x1c]
ldr r3, _02016CD8 ; =0x0000FFFF
add r2, r4, #0x700
strh r3, [r0]
strh r3, [r0, #0x10]
ldrh r2, [r2, #0xca]
strh r2, [r0, #0x12]
ldrh r0, [sb, #2]
cmp r0, r3
streqh r1, [sb]
movne r0, r0, lsl #5
strneh r1, [r8, r0]
add r0, r4, #0x31c
add r0, r0, #0x400
strh r1, [sb, #2]
bl sub_0302C0FC
mov r0, #2
_02016CCC:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_02016CD4: .word 0x027F8878
_02016CD8: .word 0x0000FFFF
arm_func_end sub_02016BA8
arm_func_start sub_02016CDC
sub_02016CDC: ; 0x02016CDC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x3c
ldr r2, _02017004 ; =0x027F8878
str r0, [sp]
ldr r8, [r2, #0x550]
mov r5, r1
ldrh r1, [r8]
mov r0, #0
cmp r1, #9
add r4, r8, #0x2f8
str r0, [sp, #0xc]
moveq r6, #1
beq _02016D1C
cmp r1, #0xa
moveq r6, r0
bne _02016FF8
_02016D1C:
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_0302C078
ldr r0, [r8, #0x734]
cmp r0, #0
bne _02016D48
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_0302C0FC
mov r0, #0
b _02016FF8
_02016D48:
cmp r6, #0
moveq r0, #1
streq r0, [sp, #0x10]
beq _02016D6C
bl sub_0302D4F0
add r1, r8, #0x100
ldrh r1, [r1, #0x82]
str r1, [sp, #0x10]
bl sub_0302D504
_02016D6C:
mvn r0, r5
str r0, [sp, #4]
mov sl, #0
_02016D78:
add r0, r8, #0x2fc
add r1, r0, #0x400
ldr sb, _02017008 ; =0x0000FFFF
mov r0, sl, lsl #2
ldrh r5, [r1, r0]
add r0, r8, #0x100
str sb, [sp, #8]
add r6, r1, sl, lsl #2
str sb, [sp, #0x14]
str sb, [sp, #0x18]
str sb, [sp, #0x1c]
str sb, [sp, #0x20]
str sb, [sp, #0x24]
str sb, [sp, #0x28]
str r0, [sp, #0x2c]
str sb, [sp, #0x30]
add fp, r8, #0x600
str sb, [sp, #0x34]
str sb, [sp, #0x38]
b _02016F8C
_02016DC8:
ldr r0, [sp]
add r7, r4, r5, lsl #5
cmp r0, #0
bne _02016E04
ldrh r1, [r7, #0xa]
ldr r0, [sp, #4]
ldrh r2, [r7, #8]
and r0, r1, r0
orr r0, r2, r0
strh r0, [r7, #8]
ldrh r0, [r7, #8]
ldrh r1, [r7, #6]
mvn r0, r0
and r0, r1, r0
strh r0, [r7, #6]
_02016E04:
ldrh r1, [r7, #6]
ldr r0, [sp, #0x10]
and r0, r1, r0
strh r0, [r7, #6]
mov r0, #0
strh r0, [r7, #0xa]
ldrh r0, [r7, #6]
cmp r0, #0
beq _02016EA0
ldrh r0, [r7, #2]
tst r0, #8
ldreqh r0, [r7, #0x12]
cmpeq r0, #0
beq _02016EA0
mov r0, #1
str r0, [sp, #0xc]
ldrh r0, [r7, #0x12]
cmp r0, #0
subne r0, r0, #1
strneh r0, [r7, #0x12]
ldrh r1, [r7]
ldr r0, [sp, #0x24]
cmp r1, r0
ldreq r0, [sp, #0x14]
streqh r0, [r6, #2]
ldr r0, [sp, #0x28]
cmp sb, r0
ldrh r0, [r7]
strh r0, [r6]
ldr r0, [sp, #0x18]
strh r0, [r7]
moveq r0, r5, lsl #0x10
moveq r0, r0, lsr #0x10
streq r0, [sp, #8]
movne r0, sb, lsl #5
strneh r5, [r4, r0]
mov r0, r5, lsl #0x10
mov sb, r0, lsr #0x10
b _02016F88
_02016EA0:
bl sub_03036B70
mov r1, #0x81
strh r1, [r0]
ldrh r1, [r7, #6]
ldr r3, [sp, #0x2c]
cmp r1, #0
moveq r1, #0
movne r1, #0xf
strh r1, [r0, #2]
mov r1, #0x14
strh r1, [r0, #8]
ldrh r1, [r7, #2]
strh r1, [r0, #0xa]
ldrh r1, [r7, #4]
strh r1, [r0, #0xc]
ldrh r1, [r7, #6]
strh r1, [r0, #0xe]
ldrh r1, [r7, #8]
strh r1, [r0, #0x10]
ldrh r1, [r7, #0xe]
strh r1, [r0, #0x18]
ldr r1, [r7, #0x14]
str r1, [r0, #0x14]
ldr r1, [r7, #0x18]
str r1, [r0, #0x1c]
ldr r1, [r7, #0x1c]
str r1, [r0, #0x20]
ldrh r1, [r7, #0x10]
strh r1, [r0, #0x1a]
ldrh r3, [r3, #0x88]
ldrh r1, [r8, #0x30]
cmp r3, #0
ldrh r2, [r8, #0x32]
moveq r3, r1
movne r3, r2
strh r3, [r0, #0x24]
ldr r3, [sp, #0x2c]
ldrh r3, [r3, #0x88]
cmp r3, #0
movne r2, r1
strh r2, [r0, #0x26]
bl sub_03036B24
ldrh r1, [r7]
ldr r0, [sp, #0x30]
cmp r1, r0
ldreq r0, [sp, #0x1c]
streqh r0, [r6, #2]
ldrh r0, [r7]
strh r0, [r6]
ldr r0, [sp, #0x20]
strh r0, [r7]
ldrh r1, [fp, #0xfa]
ldr r0, [sp, #0x34]
cmp r1, r0
streqh r5, [fp, #0xf8]
movne r0, r1, lsl #5
strneh r5, [r4, r0]
strh r5, [fp, #0xfa]
_02016F88:
ldrh r5, [r6]
_02016F8C:
ldr r0, [sp, #0x38]
cmp r5, r0
bne _02016DC8
ldr r1, _02017008 ; =0x0000FFFF
cmp sb, r1
beq _02016FD4
add r0, r8, sl, lsl #2
add r0, r0, #0x700
ldrh r3, [r0, #0xc]
mov r2, sb, lsl #5
strh r3, [r4, r2]
ldrh r2, [r0, #0xe]
cmp r2, r1
streqh sb, [r0, #0xe]
add r0, r8, sl, lsl #2
add r1, r0, #0x700
ldr r0, [sp, #8]
strh r0, [r1, #0xc]
_02016FD4:
add sl, sl, #1
cmp sl, #4
blt _02016D78
add r0, r8, #0x31c
mov r1, #0
add r0, r0, #0x400
str r1, [r8, #0x734]
bl sub_0302C0FC
ldr r0, [sp, #0xc]
_02016FF8:
add sp, sp, #0x3c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02017004: .word 0x027F8878
_02017008: .word 0x0000FFFF
arm_func_end sub_02016CDC
arm_func_start sub_0201700C
sub_0201700C: ; 0x0201700C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
ldr r1, _020171F8 ; =0x027F8878
mvn r2, r0
ldr sb, [r1, #0x550]
add r0, sb, #0x100
ldrh r1, [r0, #0x82]
add r0, sb, #0x31c
add r0, r0, #0x400
add r5, sb, #0x2f8
and fp, r2, r1
bl sub_0302C078
add r0, sb, #0x30c
add r0, r0, #0x400
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
_02017050:
add r0, sb, #0x100
str r0, [sp, #0x10]
mov r6, #0
add r4, sb, #0x600
_02017060:
ldr r0, [sp, #8]
mov r1, r6, lsl #2
add r7, r0, r6, lsl #2
ldrh sl, [r0, r1]
ldr r0, _020171FC ; =0x0000FFFF
str r7, [sp, #4]
str r0, [sp]
b _020171B4
_02017080:
add r8, r5, sl, lsl #5
ldrh r0, [r8, #6]
and r0, r0, fp
strh r0, [r8, #6]
ldrh r0, [r8, #0xa]
and r0, r0, fp
strh r0, [r8, #0xa]
ldrh r0, [r8, #6]
cmp r0, #0
bne _02017188
bl sub_03036B70
mov r1, #0x81
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0x14
strh r1, [r0, #8]
ldrh r1, [r8, #2]
ldr r3, [sp, #0x10]
strh r1, [r0, #0xa]
ldrh r1, [r8, #4]
strh r1, [r0, #0xc]
ldrh r1, [r8, #6]
strh r1, [r0, #0xe]
ldrh r1, [r8, #8]
strh r1, [r0, #0x10]
ldrh r1, [r8, #0xe]
strh r1, [r0, #0x18]
ldr r1, [r8, #0x14]
str r1, [r0, #0x14]
ldr r1, [r8, #0x18]
str r1, [r0, #0x1c]
ldr r1, [r8, #0x1c]
str r1, [r0, #0x20]
ldrh r1, [r8, #0x10]
strh r1, [r0, #0x1a]
ldrh r3, [r3, #0x88]
ldrh r1, [sb, #0x30]
cmp r3, #0
ldrh r2, [sb, #0x32]
moveq r3, r1
movne r3, r2
strh r3, [r0, #0x24]
ldr r3, [sp, #0x10]
ldrh r3, [r3, #0x88]
cmp r3, #0
movne r2, r1
strh r2, [r0, #0x26]
bl sub_03036B24
ldrh r1, [r8]
ldr r0, _020171FC ; =0x0000FFFF
cmp r1, r0
ldreq r0, [sp]
streqh r0, [r7, #2]
ldrh r1, [r8]
ldr r0, [sp, #4]
strh r1, [r0]
ldr r0, _020171FC ; =0x0000FFFF
strh r0, [r8]
ldrh r1, [r4, #0xfa]
cmp r1, r0
streqh sl, [r4, #0xf8]
movne r0, r1, lsl #5
strneh sl, [r5, r0]
strh sl, [r4, #0xfa]
ldr sl, [sp]
_02017188:
ldr r0, _020171FC ; =0x0000FFFF
str sl, [sp]
cmp sl, r0
addne r0, r5, sl, lsl #5
strne r0, [sp, #4]
ldr r0, _020171FC ; =0x0000FFFF
streq r7, [sp, #4]
cmp sl, r0
movne r0, sl, lsl #5
ldrneh sl, [r5, r0]
ldreqh sl, [r7]
_020171B4:
ldr r0, _020171FC ; =0x0000FFFF
cmp sl, r0
bne _02017080
add r6, r6, #1
cmp r6, #4
blt _02017060
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #2
blt _02017050
add r0, sb, #0x31c
add r0, r0, #0x400
bl sub_0302C0FC
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_020171F8: .word 0x027F8878
_020171FC: .word 0x0000FFFF
arm_func_end sub_0201700C
arm_func_start sub_02017200
sub_02017200: ; 0x02017200
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
ldr r4, _020173FC ; =0x027F8878
ldr r1, [sp, #0x40]
ldr r5, [r4, #0x550]
movs sb, r3
str r1, [sp, #0x40]
mov sl, r0
str r2, [sp]
beq _020173EC
cmp sb, #0x204
bhi _020173EC
add r4, r5, #0x100
ldrh r0, [r4, #0x88]
cmp sl, r0
beq _020173EC
cmp sl, #0x10
bhs _020173EC
tst sb, #1
bne _020173EC
add r0, r5, #0x1f8
add r8, r0, sl, lsl #4
mov r0, #1
str r0, [sp, #8]
b _020173E4
_02017268:
ldr r0, [sp, #8]
ldr r7, _02017400 ; =0x0000FFFF
cmp r0, #1
addeq r1, sp, #0x34
moveq r0, #0
ldrne r1, [sp]
streq r0, [sp, #8]
movne r0, r1
addne r0, r0, #2
ldrh r1, [r1]
strne r0, [sp]
mov r0, r1, lsl #0x18
subne sb, sb, #2
movs r6, r0, lsr #0x17
moveq r6, #0x200
tst r1, #0x1000
movne r2, #1
moveq r2, #0
tst r1, #0x800
movne r3, #1
moveq r3, #0
cmp r2, #0
movne fp, #2
moveq fp, #0
cmp r3, #0
movne r0, #2
moveq r0, #0
add r0, r6, r0
add r0, r0, fp
subs sb, sb, r0
bmi _020173EC
and r1, r1, #0xf00
cmp r3, #1
mov r1, r1, lsl #8
ldr r3, [sp]
mov fp, r1, lsr #0x10
ldr r1, [sp]
add r0, r3, r0
str r1, [sp, #4]
add r1, r1, r6
str r0, [sp]
bne _0201734C
mov r0, fp, lsl #0x1d
mov r0, r0, lsr #0x1c
ldrh r3, [r8, r0]
ldrh r7, [r1], #2
tst r3, #1
movne r3, r7, lsl #1
strneh r3, [r8, r0]
bne _0201734C
mov r7, r7, lsl #1
sub r3, r3, r7
mov r3, r3, lsl #0x10
mov r3, r3, lsr #0x10
cmp r3, #0x100
blo _020173E4
strh r7, [r8, r0]
_0201734C:
cmp r2, #1
bne _02017368
ldrh r2, [r1]
ldrh r1, [r4, #0x88]
mov r0, #1
tst r2, r0, lsl r1
beq _020173E4
_02017368:
cmp r6, #0
ble _020173E4
bl sub_03036B70
mov r1, #0x82
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0x15
strh r1, [r0, #4]
ldr r1, [sp, #0x40]
strh fp, [r0, #6]
str r1, [r0, #8]
ldr r1, [sp, #4]
str r1, [r0, #0xc]
strh r6, [r0, #0x10]
strh sl, [r0, #0x12]
ldrh r1, [r4, #0x88]
strh r1, [r0, #0x20]
strh r7, [r0, #0x1a]
ldrh r1, [r4, #0x88]
ldrh r2, [r5, #0x30]
cmp r1, #0
ldrh r3, [r5, #0x32]
moveq r1, r2
movne r1, r3
strh r1, [r0, #0x40]
ldrh r1, [r4, #0x88]
cmp r1, #0
movne r3, r2
strh r3, [r0, #0x42]
bl sub_03036B24
_020173E4:
cmp sb, #0
bgt _02017268
_020173EC:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020173FC: .word 0x027F8878
_02017400: .word 0x0000FFFF
arm_func_end sub_02017200
arm_func_start sub_02017404
sub_02017404: ; 0x02017404
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r0
tst r6, #0x8000
ldrne r0, _020174A0 ; =0x00007FFF
mov r4, r3
andne r6, r6, r0
addeq r0, r6, #0x1c
moveq r0, r0, lsl #2
addeq r6, r0, #0x66
mov r0, r2
bl sub_03033020
mul r2, r6, r0
ldr r1, _020174A4 ; =0x04000006
add r0, r5, #0x22
mov r3, r0, lsl #2
ldrh r1, [r1]
sub r0, r4, #2
add r3, r3, #0x60
add r2, r2, #0x388
add r4, r3, r2
subs r3, r0, r1
bpl _0201746C
_02017460:
add r0, r3, #7
adds r3, r0, #0x100
bmi _02017460
_0201746C:
ldr r2, _020174A8 ; =0x66666667
rsb r1, r3, r3, lsl #7
mov r0, r1, lsr #0x1f
smull r1, r3, r2, r1
add r3, r0, r3, asr #3
mov r0, #0xa
mul r0, r3, r0
cmp r0, r4
movlo r3, #0
mov r0, r3, lsl #0x10
mov r0, r0, lsr #0x10
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_020174A0: .word 0x00007FFF
_020174A4: .word 0x04000006
_020174A8: .word 0x66666667
arm_func_end sub_02017404
arm_func_start sub_020174AC
sub_020174AC: ; 0x020174AC
stmdb sp!, {r4, lr}
sub sp, sp, #0x280
ldr r1, _02017538 ; =0x027F8878
ldr r2, [r0, #4]
ldr r4, [r1, #0x550]
add r0, sp, #0
strh r2, [r4, #0xf6]
add r1, r4, #0xe8
bl sub_0200FAFC
ldrh r1, [r4, #0xec]
add r0, sp, #0x80
add r1, r1, #0x10
mov r1, r1, lsl #0x10
add r2, sp, #0
mov r1, r1, lsr #0x10
bl sub_02011FA8
mov r4, r0
bl sub_03036B70
mov r1, #0x21
strh r1, [r0]
ldrh r1, [r4, #4]
cmp r1, #0
moveq r1, #0
streqh r1, [r0, #2]
beq _02017528
mov r1, #1
strh r1, [r0, #2]
add r1, r1, #0x244
strh r1, [r0, #4]
ldrh r1, [r4, #4]
strh r1, [r0, #6]
_02017528:
bl sub_03036B24
add sp, sp, #0x280
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02017538: .word 0x027F8878
arm_func_end sub_020174AC
arm_func_start sub_0201753C
sub_0201753C: ; 0x0201753C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x208
add r1, sp, #0
add r0, r0, #4
mov r2, #6
bl sub_0302D91C
mov r8, #0
add r7, sp, #8
add r6, sp, #0
mov r5, #0x13
b _02017598
_02017568:
mov r0, r7
mov r1, r6
mov r2, r5
bl sub_020117BC
mov r4, r0
ldrh r0, [r4, #4]
cmp r0, #0
beq _020175A0
cmp r0, #7
cmpne r0, #0xc
bne _020175A0
add r8, r8, #1
_02017598:
cmp r8, #2
blt _02017568
_020175A0:
bl sub_03036B70
mov r1, #0x22
strh r1, [r0]
ldrh r1, [r4, #4]
cmp r1, #0
moveq r1, #0
streqh r1, [r0, #2]
beq _020175D8
mov r1, #1
strh r1, [r0, #2]
mov r1, #5
strh r1, [r0, #4]
ldrh r1, [r4, #4]
strh r1, [r0, #6]
_020175D8:
bl sub_03036B24
add sp, sp, #0x208
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
arm_func_end sub_0201753C
arm_func_start sub_020175E8
sub_020175E8: ; 0x020175E8
stmdb sp!, {r3, lr}
ldr r3, [r0, #4]
ldr r1, _02017634 ; =0x027F8878
str r3, [r1, #0x54c]
ldr r2, [r0, #8]
str r2, [r1, #0x550]
str r2, [r3]
ldr r1, [r0, #0xc]
str r1, [r3, #8]
ldr r0, [r0, #0x10]
bl sub_02017638
bl sub_03036B70
mov r1, #3
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02017634: .word 0x027F8878
arm_func_end sub_020175E8
arm_func_start sub_02017638
sub_02017638: ; 0x02017638
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r1, _020177D8 ; =0x027F8878
mov r8, r0
ldr r7, [r1, #0x550]
ldr r4, [r1, #0x54c]
mov r5, #0
bl sub_0302D4F0
ldr r1, [r7, #0xc]
mov r6, r0
cmp r1, #1
bne _02017678
mov r0, r5
str r0, [r7, #0xc]
mov r5, #1
bl sub_0201537C
bl sub_0200FE30
_02017678:
add ip, r7, #0x100
mov r1, #0
strh r1, [ip, #0x82]
strh r1, [r7, #0x86]
str r1, [r7, #0x14]
str r1, [r7, #0x10]
str r1, [r7, #0x1c]
strh r1, [r7, #0xce]
strh r1, [r7, #0xc2]
mov r0, #1
strh r0, [r7, #0x58]
strh r0, [r7, #0x5a]
mov r0, #6
strh r0, [r7, #0x5c]
strh r1, [r7, #0x98]
strh r1, [r7, #0x92]
strh r1, [r7, #0x94]
strh r1, [r7, #0x9a]
strh r1, [r7, #0x9c]
ldrh r0, [r7, #0x58]
add r3, r7, #0x700
strh r0, [r3, #0xc0]
ldrh r2, [r7, #0x5a]
add r0, r7, #0x19c
strh r2, [r3, #0xc2]
ldrh lr, [r7, #0x5c]
mov r2, #0x50
strh lr, [r3, #0xc4]
ldrh lr, [r7, #0x98]
strh lr, [r3, #0xca]
ldrh lr, [r7, #0x92]
strh lr, [r3, #0xc6]
ldrh lr, [r7, #0x94]
strh lr, [r3, #0xc8]
ldrh lr, [r7, #0x9a]
strh lr, [r3, #0xcc]
str r1, [r7, #0x198]
strh r1, [ip, #0x96]
bl sub_0302D860
bl sub_0200FF5C
mov r0, #0x104
strh r0, [r7, #0x40]
mov r0, #0xf0
strh r0, [r7, #0x42]
mov r0, #0x3e8
strh r0, [r7, #0x44]
mov r1, #0
ldr r0, _020177DC ; =0x0000020B
strh r1, [r7, #0x46]
str r0, [r7, #0x48]
str r1, [r7, #0x4c]
str r1, [r7, #0x50]
str r1, [r7, #0x54]
strh r1, [r7, #0xc6]
add r0, r7, #0x100
mov r1, #1
strh r1, [r0, #0xee]
mov r0, r6
str r8, [r7, #0xc8]
bl sub_0302D504
cmp r5, #0
beq _02017778
ldr r0, _020177E0 ; =0x0000FFFF
bl sub_0201700C
_02017778:
mov r2, #0
mov r1, #0x8000
_02017780:
add r0, r4, r2, lsl #4
add r2, r2, #1
str r1, [r0, #0xd0]
cmp r2, #0x20
blt _02017780
add r1, r7, #0x1f8
mov r0, #1
mov r2, #0x100
bl sub_0302D764
bl sub_0201148C
add r0, r7, #0x31c
add r0, r0, #0x400
bl sub_0302C060
bl sub_02015368
tst r8, #2
bne _020177C8
mov r0, #0xf
bl sub_03034A0C
_020177C8:
mov r0, #1
strh r0, [r7]
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_020177D8: .word 0x027F8878
_020177DC: .word 0x0000020B
_020177E0: .word 0x0000FFFF
arm_func_end sub_02017638
arm_func_start sub_020177E4
sub_020177E4: ; 0x020177E4
stmdb sp!, {r4, lr}
ldr r0, _02017848 ; =0x027F8878
ldr r4, [r0, #0x550]
ldrh r0, [r4]
cmp r0, #1
beq _02017818
bl sub_03036B70
mov r1, #4
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03036B24
b _02017840
_02017818:
mov r0, #1
bl sub_03034A0C
mov r0, #0
strh r0, [r4]
bl sub_03036B70
mov r1, #4
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02017840:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02017848: .word 0x027F8878
arm_func_end sub_020177E4
arm_func_start sub_0201784C
sub_0201784C: ; 0x0201784C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r0, _020178F0 ; =0x027F8878
ldr r4, [r0, #0x550]
ldrh r0, [r4]
cmp r0, #1
beq _02017884
bl sub_03036B70
mov r1, #5
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03036B24
b _020178E4
_02017884:
add r0, sp, #2
add r1, sp, #0
bl sub_020178F4
cmp r0, #0
bne _020178C4
bl sub_03036B70
mov r1, #5
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
ldrh r1, [sp, #2]
strh r1, [r0, #4]
ldrh r1, [sp]
strh r1, [r0, #6]
bl sub_03036B24
b _020178E4
_020178C4:
mov r0, #2
strh r0, [r4]
bl sub_03036B70
mov r1, #5
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_020178E4:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_020178F0: .word 0x027F8878
arm_func_end sub_0201784C
arm_func_start sub_020178F4
sub_020178F4: ; 0x020178F4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x200
ldr r2, _02017ADC ; =0x027F8878
mov r7, r0
add r0, sp, #0
mov r6, r1
ldr r5, [r2, #0x550]
bl sub_020120B8
ldrh r1, [r0, #4]
cmp r1, #0
beq _02017938
mov r1, #0x304
strh r1, [r7]
ldrh r1, [r0, #4]
mov r0, #0
strh r1, [r6]
b _02017AD0
_02017938:
add r0, sp, #0
bl sub_02012088
ldrh r1, [r0, #4]
cmp r1, #0
beq _02017964
ldr r1, _02017AE0 ; =0x00000302
strh r1, [r7]
ldrh r1, [r0, #4]
mov r0, #0
strh r1, [r6]
b _02017AD0
_02017964:
ldr r2, _02017AE4 ; =0x04808124
mov r0, #0xc8
strh r0, [r2]
mov r0, #0x7d0
strh r0, [r2, #4]
ldr r1, _02017AE8 ; =0x00000202
add r0, sp, #0
strh r1, [r2, #0x2c]
bl sub_02012044
ldrh r1, [r0, #4]
cmp r1, #0
beq _020179AC
ldr r1, _02017AEC ; =0x00000283
strh r1, [r7]
ldrh r1, [r0, #4]
mov r0, #0
strh r1, [r6]
b _02017AD0
_020179AC:
ldrh r2, [r0, #6]
add r0, r5, #0x100
mov r1, r2, lsl #0xf
strh r2, [r0, #0xf4]
mov r0, r1, lsr #0x10
bl sub_03036BC4
add r1, r5, #0x100
strh r0, [r1, #0xf6]
ldr r1, _02017AF0 ; =0x0000FFFF
add r0, sp, #0
mov r2, #0x28
mov r3, #5
bl sub_02011DD0
ldr r1, _02017AF4 ; =0x001FF621
mov r0, #0
str r1, [r5, #0x7b8]
str r0, [r5, #0x7bc]
add r1, r5, #0x100
mov r2, #2
strh r2, [r1, #0xec]
mov r2, #1
add r0, sp, #0
strh r2, [r1, #0xee]
bl sub_020120E4
mov r4, r0
ldrh r0, [r4, #4]
cmp r0, #0
beq _02017A34
ldr r1, _02017AF8 ; =0x00000306
mov r0, #0
strh r1, [r7]
ldrh r1, [r4, #4]
strh r1, [r6]
b _02017AD0
_02017A34:
add r0, r4, #6
add r1, r5, #0x20
mov r2, #8
bl sub_0302D78C
ldrh r1, [r4, #0xe]
add r0, sp, #0
strh r1, [r5, #0x28]
ldrh r1, [r4, #0x10]
strh r1, [r5, #0x2c]
ldrh r1, [r4, #0x12]
strh r1, [r5, #0x2e]
ldrh r1, [r4, #0x14]
strh r1, [r5, #0x2a]
bl sub_0201202C
ldrh r1, [r0, #4]
cmp r1, #0
beq _02017A90
ldr r1, _02017AFC ; =0x00000281
strh r1, [r7]
ldrh r1, [r0, #4]
mov r0, #0
strh r1, [r6]
b _02017AD0
_02017A90:
add r0, r0, #6
add r1, r5, #0xe0
mov r2, #6
bl sub_0302D91C
add r0, sp, #0
mov r1, #1
bl sub_02011E94
ldrh r1, [r0, #4]
cmp r1, #0
moveq r0, #1
beq _02017AD0
ldr r1, _02017B00 ; =0x00000215
strh r1, [r7]
ldrh r1, [r0, #4]
mov r0, #0
strh r1, [r6]
_02017AD0:
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02017ADC: .word 0x027F8878
_02017AE0: .word 0x00000302
_02017AE4: .word 0x04808124
_02017AE8: .word 0x00000202
_02017AEC: .word 0x00000283
_02017AF0: .word 0x0000FFFF
_02017AF4: .word 0x001FF621
_02017AF8: .word 0x00000306
_02017AFC: .word 0x00000281
_02017B00: .word 0x00000215
arm_func_end sub_020178F4
arm_func_start sub_02017B04
sub_02017B04: ; 0x02017B04
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x200
ldr r0, _02017BAC ; =0x027F8878
ldr r5, [r0, #0x550]
ldrh r0, [r5]
cmp r0, #2
beq _02017B3C
bl sub_03036B70
mov r1, #6
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03036B24
b _02017BA0
_02017B3C:
add r0, sp, #0
bl sub_02012070
mov r4, r0
ldrh r0, [r4, #4]
cmp r0, #0
beq _02017B80
bl sub_03036B70
mov r2, #6
mov r1, #1
strh r2, [r0]
strh r1, [r0, #2]
add r1, r1, #0x300
strh r1, [r0, #4]
ldrh r1, [r4, #4]
strh r1, [r0, #6]
bl sub_03036B24
b _02017BA0
_02017B80:
mov r0, #1
strh r0, [r5]
bl sub_03036B70
mov r1, #6
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02017BA0:
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02017BAC: .word 0x027F8878
arm_func_end sub_02017B04
arm_func_start sub_02017BB0
sub_02017BB0: ; 0x02017BB0
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x1c
mov r6, r0
add r1, sp, #0
add r0, r6, #4
bl sub_02017C0C
mov r5, r0
bl sub_03036B70
mov r4, r0
mov r0, #0x23
strh r0, [r4]
strh r5, [r4, #2]
ldr r3, [r6, #4]
add r0, sp, #0
add r1, r4, #8
mov r2, #0x1c
str r3, [r4, #4]
bl sub_0302D91C
mov r0, r4
bl sub_03036B24
add sp, sp, #0x1c
ldmia sp!, {r3, r4, r5, r6, lr}
bx lr
arm_func_end sub_02017BB0
arm_func_start sub_02017C0C
sub_02017C0C: ; 0x02017C0C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _02017F1C ; =0x027F8878
mov r4, r0
ldr r8, [r2, #0x550]
ldr r7, [r4]
ldrh r0, [r8]
mov sb, r1
add r0, r0, #0xf7
add r0, r0, #0xff00
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
mov r6, #0
bhi _02017C50
tst r7, #0x2c00
bicne r7, r7, #0x2c00
movne r6, #3
_02017C50:
bl sub_0302D4F0
mov r5, r0
cmp sb, #0
beq _02017CD8
ldr r0, _02017F20 ; =0x00003FFF
str r0, [sb]
ldrh r0, [r8, #0x58]
strh r0, [sb, #4]
ldrh r0, [r8, #0x5a]
strh r0, [sb, #6]
ldrh r0, [r8, #0x5c]
strh r0, [sb, #8]
ldrh r0, [r8, #0x30]
strh r0, [sb, #0xa]
ldrh r0, [r8, #0x32]
strh r0, [sb, #0xc]
ldrh r0, [r8, #0x44]
strh r0, [sb, #0xe]
ldrh r0, [r8, #0x46]
strh r0, [sb, #0x10]
ldrh r0, [r8, #0x40]
strh r0, [sb, #0x12]
ldrh r0, [r8, #0x42]
strh r0, [sb, #0x14]
ldrh r0, [r8, #0x98]
strh r0, [sb, #0x16]
ldrh r0, [r8, #0x92]
strb r0, [sb, #0x18]
ldrh r0, [r8, #0x94]
strb r0, [sb, #0x19]
ldrh r0, [r8, #0x9a]
strb r0, [sb, #0x1a]
ldrh r0, [r8, #0x9c]
strb r0, [sb, #0x1b]
_02017CD8:
tst r7, #1
beq _02017CF8
ldrh r1, [r4, #4]
add r0, r8, #0x700
cmp r1, #0
moveq r1, #0x10
strh r1, [r8, #0x58]
strh r1, [r0, #0xc0]
_02017CF8:
tst r7, #2
beq _02017D24
ldrh r1, [r4, #6]
add r0, r8, #0x700
cmp r1, #0
moveq r1, #0x10
strh r1, [r8, #0x5a]
strh r1, [r0, #0xc2]
ldrsh r0, [r8, #0x62]
cmp r0, r1
strgth r1, [r8, #0x62]
_02017D24:
tst r7, #4
beq _02017D50
ldrh r1, [r4, #8]
add r0, r8, #0x700
cmp r1, #0
moveq r1, #0x10
strh r1, [r8, #0x5c]
strh r1, [r0, #0xc4]
ldrsh r0, [r8, #0x62]
cmp r0, r1
strgth r1, [r8, #0x62]
_02017D50:
tst r7, #8
beq _02017D7C
ldrh r0, [r4, #0xa]
ldrh r2, [r8, #0x34]
add r1, r0, #1
bic r1, r1, #1
mov r1, r1, lsl #0x10
cmp r2, r1, lsr #16
movlo r6, #6
blo _02017D7C
bl sub_02010030
_02017D7C:
tst r7, #0x10
beq _02017DA8
ldrh r0, [r4, #0xc]
add r1, r0, #1
bic r1, r1, #1
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
cmp r1, #0x200
movhi r6, #6
bhi _02017DA8
bl sub_0201005C
_02017DA8:
tst r7, #0x20
beq _02017DFC
ldrh r0, [r4, #0xe]
ldr r1, _02017F24 ; =0x00002710
cmp r0, r1
movhi r6, #6
bhi _02017DFC
ldr r1, _02017F28 ; =0x000082EA
mov r2, #0
umull sb, r3, r0, r1
mla r3, r0, r2, r3
mla r3, r2, r1, r3
mov r2, sb, lsr #6
orr r2, r2, r3, lsl #26
mov r1, r3, lsr #6
mov r2, r2, lsr #0xa
strh r0, [r8, #0x44]
orr r2, r2, r1, lsl #22
str r2, [r8, #0x48]
mov r0, r1, lsr #0xa
str r0, [r8, #0x4c]
_02017DFC:
tst r7, #0x40
beq _02017E50
ldrh r0, [r4, #0x10]
ldr r1, _02017F24 ; =0x00002710
cmp r0, r1
movhi r6, #6
bhi _02017E50
ldr r1, _02017F28 ; =0x000082EA
mov r2, #0
umull sb, r3, r0, r1
mla r3, r0, r2, r3
mla r3, r2, r1, r3
mov r2, sb, lsr #6
orr r2, r2, r3, lsl #26
mov r1, r3, lsr #6
mov r2, r2, lsr #0xa
strh r0, [r8, #0x46]
orr r2, r2, r1, lsl #22
str r2, [r8, #0x50]
mov r0, r1, lsr #0xa
str r0, [r8, #0x54]
_02017E50:
tst r7, #0x80
beq _02017E84
ldrh r1, [r4, #0x12]
cmp r1, #0xbe
bls _02017E78
cmp r1, #0xdc
blo _02017E80
ldr r0, _02017F2C ; =0x00000106
cmp r1, r0
bhi _02017E80
_02017E78:
strh r1, [r8, #0x40]
b _02017E84
_02017E80:
mov r6, #6
_02017E84:
tst r7, #0x100
beq _02017EB8
ldrh r1, [r4, #0x14]
cmp r1, #0xbe
bls _02017EAC
cmp r1, #0xdc
blo _02017EB4
ldr r0, _02017F2C ; =0x00000106
cmp r1, r0
bhi _02017EB4
_02017EAC:
strh r1, [r8, #0x42]
b _02017EB8
_02017EB4:
mov r6, #6
_02017EB8:
tst r7, #0x200
ldrneh r1, [r4, #0x16]
addne r0, r8, #0x700
strneh r1, [r8, #0x98]
strneh r1, [r0, #0xca]
tst r7, #0x400
ldrneb r0, [r4, #0x18]
strneh r0, [r8, #0x92]
tst r7, #0x800
ldrneb r0, [r4, #0x19]
strneh r0, [r8, #0x94]
tst r7, #0x1000
ldrneb r1, [r4, #0x1a]
addne r0, r8, #0x700
strneh r1, [r8, #0x9a]
ldrneh r1, [r8, #0x9a]
strneh r1, [r0, #0xcc]
tst r7, #0x2000
ldrneb r0, [r4, #0x1b]
strneh r0, [r8, #0x9c]
mov r0, r5
bl sub_0302D504
mov r0, r6
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_02017F1C: .word 0x027F8878
_02017F20: .word 0x00003FFF
_02017F24: .word 0x00002710
_02017F28: .word 0x000082EA
_02017F2C: .word 0x00000106
arm_func_end sub_02017C0C
arm_func_start sub_02017F30
sub_02017F30: ; 0x02017F30
stmdb sp!, {r4, lr}
sub sp, sp, #0x200
ldr r1, [r0, #4]
add r0, sp, #0
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl sub_02011F4C
ldrh r4, [r0, #4]
cmp r4, #0
beq _02017F80
bl sub_03036B70
mov r1, #0x24
strh r1, [r0]
mov r2, #1
ldr r1, _02017FA4 ; =0x00000242
strh r2, [r0, #2]
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03036B24
b _02017F98
_02017F80:
bl sub_03036B70
mov r1, #0x24
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03036B24
_02017F98:
add sp, sp, #0x200
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02017FA4: .word 0x00000242
arm_func_end sub_02017F30
arm_func_start sub_02017FA8
sub_02017FA8: ; 0x02017FA8
ldr ip, _02017FB8 ; =sub_027E44FC
mov r1, #1
mov r2, #0
bx ip
.align 2, 0
_02017FB8: .word sub_027E44FC
arm_func_end sub_02017FA8
arm_func_start sub_02017FBC
sub_02017FBC: ; 0x02017FBC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x230
ldr r1, _02018138 ; =0x027F8878
mov r7, r0
ldr r6, [r1, #0x550]
add r5, sp, #0x30
bl sub_03036B70
mov r4, r0
mov r1, #0x28
strh r1, [r4]
ldrh r1, [r6]
cmp r1, #0xb
beq _02018000
mov r1, #3
strh r1, [r4, #2]
bl sub_03036B24
b _0201812C
_02018000:
ldr r0, [r7, #4]
mov r2, #0
cmp r0, #1
moveq r0, #1
movne r0, #0
mov r1, r0, lsl #0x10
mov r0, r5
mov r1, r1, lsr #0x10
mov r3, #1
bl sub_020115AC
ldrh r1, [r0, #4]
cmp r1, #0
beq _02018054
mov r1, #1
strh r1, [r4, #2]
strh r1, [r4, #4]
ldrh r1, [r0, #4]
mov r0, r4
strh r1, [r4, #6]
bl sub_03036B24
b _0201812C
_02018054:
ldr r0, _02018138 ; =0x027F8878
mov r2, #6
ldr r5, [r0, #0x550]
add r0, r5, #0x8a
add r0, r0, #0x100
add r1, r5, #0xa2
bl sub_0302D91C
add r1, sp, #0x30
str r1, [r5, #0xa8]
mov r0, #0
strh r0, [r5, #0xac]
mov r2, #1
str r2, [r5, #0x18]
add r1, sp, #0
mov r2, #0x30
bl sub_0302D764
mov r0, #0
strh r0, [sp]
strh r0, [sp, #6]
add r0, r5, #0x100
ldrh r0, [r0, #0xec]
add r1, sp, #0x18
cmp r0, #2
moveq r3, #0x14
add r0, r5, #0x8a
movne r3, #0xa
add r0, r0, #0x100
mov r2, #6
strb r3, [sp, #0xe]
bl sub_0302D91C
add r1, sp, #0x1e
add r0, r5, #0xe0
mov r2, #6
bl sub_0302D91C
add r0, sp, #0x30
str r0, [sp, #0x2c]
add r1, sp, #0
bl sub_020119F0
ldrh r1, [r0, #4]
cmp r1, #0
beq _0201811C
mov r1, #1
strh r1, [r4, #2]
mov r1, #0x100
strh r1, [r4, #4]
ldrh r1, [r0, #4]
mov r0, r4
strh r1, [r4, #6]
bl sub_03036B24
b _0201812C
_0201811C:
mov r1, #0
mov r0, r4
strh r1, [r4, #2]
bl sub_03036B24
_0201812C:
add sp, sp, #0x230
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02018138: .word 0x027F8878
arm_func_end sub_02017FBC
arm_func_start sub_0201813C
sub_0201813C: ; 0x0201813C
stmdb sp!, {r3, lr}
bl sub_03036B70
mov r1, #0x29
strh r1, [r0]
mov r1, #4
strh r1, [r0, #2]
bl sub_03036B24
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_0201813C
arm_func_start sub_02018160
sub_02018160: ; 0x02018160
stmdb sp!, {r3, lr}
bl sub_03036B70
mov r1, #0x2a
strh r1, [r0]
mov r1, #4
strh r1, [r0, #2]
bl sub_03036B24
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_02018160
arm_func_start sub_02018184
sub_02018184: ; 0x02018184
stmdb sp!, {r3, lr}
bl sub_0201A3D0
bl sub_020194E4
bl sub_02019F10
bl sub_02018534
bl sub_020183B4
ldr r0, _020181CC ; =0x0380FFF4
ldr r0, [r0]
add r1, r0, #0x300
ldr r0, [r0, #0x31c]
ldrh r1, [r1, #0x20]
bl sub_020185CC
bl sub_0201BED4
bl sub_0201D8A0
bl sub_0201BC64
bl sub_02018FA0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020181CC: .word 0x0380FFF4
arm_func_end sub_02018184
arm_func_start sub_020181D0
sub_020181D0: ; 0x020181D0
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0xc
mov r4, r0
ldr r1, [r4]
ldr r3, _02018390 ; =0x0380FFF4
ldr r2, _02018394 ; =0x00000694
mov r0, #0
str r1, [r3]
bl sub_0302D804
bl sub_0302B3EC
ldr r2, _02018390 ; =0x0380FFF4
ldr r1, [r2]
str r0, [r1, #0x314]
ldr r1, [r4, #0x18]
ldr r0, [r2]
str r1, [r0, #0x30c]
ldr r1, [r4, #0x1c]
ldr r0, [r2]
mov r1, r1, lsr #1
str r1, [r0, #0x310]
ldr r1, [r2]
ldr r0, [r1, #0x310]
cmp r0, #0
mvneq r0, #0
streq r0, [r1, #0x310]
add r0, r4, #0x20
bl sub_0201845C
bl sub_020246B0
ldr r3, _02018398 ; =0x04000304
ldr r1, _02018390 ; =0x0380FFF4
ldrh r2, [r3]
mov r0, #0x30
orr r2, r2, #2
strh r2, [r3]
strh r0, [r3, #-0xfe]
ldr r0, [r1]
mov r2, #3
str r2, [r0, #0x68c]
ldr r1, [r1]
mov r0, #0x3c
add r1, r1, #0x92
add r2, r1, #0x600
mov r1, #2
bl sub_02024600
ldr r1, _02018390 ; =0x0380FFF4
mov r0, #0x3e
ldr r2, [r1]
mov r1, #2
add r2, r2, #0x690
bl sub_02024600
ldr r2, _02018390 ; =0x0380FFF4
ldr r3, [r4, #0x10]
ldr r0, [r2]
mov r1, #0x1c
str r3, [r0, #0x308]
ldr r0, [r2]
ldr r2, [r4, #0x14]
str r2, [r0, #0x304]
ldr r0, [r4, #0x30]
bl sub_030365C4
mov r1, r0
ldr r0, [r4, #0x2c]
bl sub_020185CC
bl sub_020183B4
bl sub_0201BED4
bl sub_0201D8A0
bl sub_0201BC64
bl sub_0201A138
add r0, sp, #8
bl sub_0202451C
cmp r0, #0
beq _0201830C
ldr r0, _02018390 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x3e]
orr r1, r1, #0x80
strh r1, [r0, #0x3e]
b _02018334
_0201830C:
bl sub_02019EA0
bl sub_0201AA10
bl sub_0201956C
bl sub_02019F10
bl sub_02019FB0
bl sub_0201ABB4
bl sub_0201AD40
bl sub_02019F48
bl sub_02018FA0
bl sub_020194E4
_02018334:
ldr r1, [r4, #8]
ldr r0, _02018390 ; =0x0380FFF4
str r1, [sp]
ldr r2, [r4, #0xc]
ldr r1, _0201839C ; =0x037F84E0
str r2, [sp, #4]
ldr r0, [r0]
ldr r3, [r4, #4]
add r0, r0, #0x18
mov r2, #0
bl sub_0302B844
ldr r0, _02018390 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x18
bl sub_0302BB5C
bl sub_0201B0AC
ldr r0, _02018390 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x3e]
add sp, sp, #0xc
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_02018390: .word 0x0380FFF4
_02018394: .word 0x00000694
_02018398: .word 0x04000304
_0201839C: .word 0x037F84E0
arm_func_end sub_020181D0
arm_func_start sub_020183A0
sub_020183A0: ; 0x020183A0
ldr r0, _020183B0 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x18
bx lr
.align 2, 0
_020183B0: .word 0x0380FFF4
arm_func_end sub_020183A0
arm_func_start sub_020183B4
sub_020183B4: ; 0x020183B4
stmdb sp!, {r4, lr}
ldr r0, _02018434 ; =0x0380FFF4
mov r3, #0
ldr lr, [r0]
ldr r2, _02018438 ; =0x0000FFFF
strh r3, [lr, #0x10]
strh r3, [lr, #0x12]
_020183D0:
add r0, lr, r3, lsl #1
strh r2, [r0, #8]
ldrh r0, [r0, #8]
mov r1, r3, lsl #1
add r3, r3, #1
strh r0, [lr, r1]
cmp r3, #4
blo _020183D0
ldr ip, _02018438 ; =0x0000FFFF
mov r4, #0
ldr r1, _0201843C ; =0x027F723C
mov r2, r4
_02018400:
add r3, lr, r4, lsl #3
strh ip, [r3, #0xbc]
ldr r0, [r1, r4, lsl #2]
strh r2, [r3, #0xbe]
add r4, r4, #1
str r0, [r3, #0xc0]
cmp r4, #0x18
blo _02018400
mov r0, #3
mov r1, #0xc
bl sub_03027D88
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02018434: .word 0x0380FFF4
_02018438: .word 0x0000FFFF
_0201843C: .word 0x027F723C
arm_func_end sub_020183B4
arm_func_start sub_02018440
sub_02018440: ; 0x02018440
mvn r2, #0
str r2, [r0]
str r2, [r0, #4]
mov r2, #0
strh r2, [r0, #8]
strh r1, [r0, #0xa]
bx lr
arm_func_end sub_02018440
arm_func_start sub_0201845C
sub_0201845C: ; 0x0201845C
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02018530 ; =0x0380FFF4
ldr r2, [r0]
ldr r4, [r1]
mov r1, #2
str r2, [r4, #0x17c]
ldr r2, [r0, #4]
add r5, r4, #0x344
str r2, [r4, #0x180]
ldr r2, [r0, #8]
add r0, r4, #0x188
str r2, [r4, #0x184]
bl sub_02018440
add r0, r4, #0x194
mov r1, #3
bl sub_02018440
add r0, r4, #0x1a0
mov r1, #4
bl sub_02018440
add r0, r4, #0x1ac
mov r1, #5
bl sub_02018440
add r0, r4, #0x1b8
mov r1, #6
bl sub_02018440
add r0, r4, #0x1c4
mov r1, #7
bl sub_02018440
add r0, r4, #0x1d0
mov r1, #8
bl sub_02018440
add r0, r4, #0x1dc
mov r1, #9
bl sub_02018440
add r0, r4, #0x1e8
mov r1, #0xa
bl sub_02018440
add r0, r4, #0x1f4
mov r1, #0xb
bl sub_02018440
add r0, r4, #0x200
mov r1, #0xc
bl sub_02018440
add r0, r4, #0x188
mov r1, #0x81
bl sub_0302805C
add r0, r0, #0xc
str r0, [r5, #0x9c]
mov r0, #0
strh r0, [r5, #0xa0]
strh r0, [r5, #0xa4]
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02018530: .word 0x0380FFF4
arm_func_end sub_0201845C
arm_func_start sub_02018534
sub_02018534: ; 0x02018534
stmdb sp!, {r4, lr}
ldr r0, _02018588 ; =0x0380FFF4
ldr r4, [r0]
add r0, r4, #0x194
bl sub_0201858C
add r0, r4, #0x1a0
bl sub_0201858C
add r0, r4, #0x1ac
bl sub_0201858C
add r0, r4, #0x1b8
bl sub_0201858C
add r0, r4, #0x1c4
bl sub_0201858C
add r0, r4, #0x1d0
bl sub_0201858C
add r0, r4, #0x1dc
bl sub_0201858C
add r0, r4, #0x1e8
bl sub_0201858C
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02018588: .word 0x0380FFF4
arm_func_end sub_02018534
arm_func_start sub_0201858C
sub_0201858C: ; 0x0201858C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldrh r0, [r6, #8]
ldr r1, [r6]
cmp r0, #0
beq _020185C4
mvn r4, #0
b _020185BC
_020185AC:
ldr r5, [r1, #4]
mov r0, r6
bl sub_030280F8
mov r1, r5
_020185BC:
cmp r1, r4
bne _020185AC
_020185C4:
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_0201858C
arm_func_start sub_020185CC
sub_020185CC: ; 0x020185CC
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _02018648 ; =0x0380FFF4
mov r5, r0
ldr r3, [r2]
mov r6, r1
add r1, r3, #0x31c
mov r0, #0
mov r2, #0x28
ldr r4, [r3, #0x3e0]
bl sub_0302D764
ldr r1, _02018648 ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
mov r2, #0xc0
add r1, r1, #0x344
bl sub_0302D764
ldr r3, _02018648 ; =0x0380FFF4
mov r0, r6, lsl #0x10
ldr r2, [r3]
mov r1, r0, lsr #0x10
str r5, [r2, #0x31c]
ldr r0, [r3]
add r0, r0, #0x300
strh r1, [r0, #0x20]
ldr r0, [r3]
add r0, r0, #0x300
strh r1, [r0, #0x22]
ldr r0, [r3]
str r4, [r0, #0x3e0]
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02018648: .word 0x0380FFF4
arm_func_end sub_020185CC
arm_func_start sub_0201864C
sub_0201864C: ; 0x0201864C
stmdb sp!, {r4, lr}
mov r4, r0
ldrh r0, [r4]
tst r0, #1
movne r0, #5
bne _0201869C
ldr r0, _020186A4 ; =0x0380FFF4
mov r1, r4
ldr r0, [r0]
add r0, r0, #0x324
bl sub_020198D0
ldr r0, _020186A8 ; =0x04808018
mov r1, r4
bl sub_020198D0
ldr r1, _020186A4 ; =0x0380FFF4
mov r0, #0
ldr r2, [r1]
ldr r1, [r2, #0x340]
orr r1, r1, #2
str r1, [r2, #0x340]
_0201869C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020186A4: .word 0x0380FFF4
_020186A8: .word 0x04808018
arm_func_end sub_0201864C
arm_func_start sub_020186AC
sub_020186AC: ; 0x020186AC
cmp r0, #0xff
movhi r0, #5
bxhi lr
ldr r1, _020186D8 ; =0x0380FFF4
ldr r2, _020186DC ; =0x0480802C
ldr r1, [r1]
add r1, r1, #0x300
strh r0, [r1, #0x2a]
strh r0, [r2]
mov r0, #0
bx lr
.align 2, 0
_020186D8: .word 0x0380FFF4
_020186DC: .word 0x0480802C
arm_func_end sub_020186AC
arm_func_start sub_020186E0
sub_020186E0: ; 0x020186E0
ldr r1, _02018718 ; =0x00007FFE
tst r0, r1
moveq r0, #5
bxeq lr
ldr r2, _0201871C ; =0x0380FFF4
ldr r1, [r2]
add r1, r1, #0x300
strh r0, [r1, #0x2c]
ldr r2, [r2]
mov r0, #0
ldr r1, [r2, #0x340]
orr r1, r1, #4
str r1, [r2, #0x340]
bx lr
.align 2, 0
_02018718: .word 0x00007FFE
_0201871C: .word 0x0380FFF4
arm_func_end sub_020186E0
arm_func_start sub_02018720
sub_02018720: ; 0x02018720
stmdb sp!, {r3, lr}
cmp r0, #3
movhi r0, #5
bhi _0201878C
ldr ip, _02018794 ; =0x0380FFF4
ldr r3, _02018798 ; =0x04808006
ldr r1, [ip]
ldr r2, _0201879C ; =0x0000FFF8
add r1, r1, #0x300
strh r0, [r1, #0x2e]
ldr r1, [ip]
add r1, r1, #0x300
strh r0, [r1, #0x50]
ldrh r1, [r3]
and r1, r1, r2
orr r0, r1, r0
strh r0, [r3]
ldr r0, [ip]
add r0, r0, #0x300
ldrh r0, [r0, #0x52]
bl sub_0201943C
ldr r1, _02018794 ; =0x0380FFF4
mov r0, #0
ldr r2, [r1]
ldr r1, [r2, #0x340]
orr r1, r1, #8
str r1, [r2, #0x340]
_0201878C:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02018794: .word 0x0380FFF4
_02018798: .word 0x04808006
_0201879C: .word 0x0000FFF8
arm_func_end sub_02018720
arm_func_start sub_020187A0
sub_020187A0: ; 0x020187A0
stmdb sp!, {r3, lr}
cmp r0, #2
movhi r0, #5
bhi _020187C8
ldr r1, _020187D0 ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x300
strh r0, [r1, #0x30]
bl sub_020193BC
mov r0, #0
_020187C8:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020187D0: .word 0x0380FFF4
arm_func_end sub_020187A0
arm_func_start sub_020187D4
sub_020187D4: ; 0x020187D4
ldr r1, _02018868 ; =0x0380FFF4
cmp r0, #3
ldr r1, [r1]
movhi r0, #5
add r2, r1, #0x344
bxhi lr
add r1, r1, #0x300
strh r0, [r1, #0x34]
ldrh r1, [r2, #0x7c]
cmp r0, #0
biceq r1, r1, #0x10
streqh r1, [r2, #0x7c]
ldreqh r1, [r2, #0x8a]
ldr r3, _0201886C ; =0x04808006
biceq r1, r1, #0x4000
orrne r1, r1, #0x10
strneh r1, [r2, #0x7c]
ldrneh r1, [r2, #0x8a]
orrne r1, r1, #0x4000
strh r1, [r2, #0x8a]
ldrh r1, [r2, #8]
cmp r1, #0x40
cmpeq r0, #1
ldreq r1, _02018868 ; =0x0380FFF4
ldreqh r2, [r2, #0x7c]
ldreq r1, [r1]
ldreq r1, [r1, #0x4ac]
streqh r2, [r1, #0x2e]
cmp r0, #0
ldr r1, _02018870 ; =0x0000FFC7
ldrh r2, [r3]
moveq r0, #1
and r1, r2, r1
orr r0, r1, r0, lsl #3
strh r0, [r3]
mov r0, #0
bx lr
.align 2, 0
_02018868: .word 0x0380FFF4
_0201886C: .word 0x04808006
_02018870: .word 0x0000FFC7
arm_func_end sub_020187D4
arm_func_start sub_02018874
sub_02018874: ; 0x02018874
cmp r0, #3
ldrls r1, _02018894 ; =0x0380FFF4
movhi r0, #5
ldrls r1, [r1]
addls r1, r1, #0x300
strlsh r0, [r1, #0x36]
movls r0, #0
bx lr
.align 2, 0
_02018894: .word 0x0380FFF4
arm_func_end sub_02018874
arm_func_start sub_02018898
sub_02018898: ; 0x02018898
stmdb sp!, {r4, lr}
ldr r1, _020188E8 ; =0x04805F80
mov r2, #0x14
mov r4, r0
bl sub_0302D78C
ldr r1, _020188EC ; =0x04805FA0
add r0, r4, #0x14
mov r2, #0x14
bl sub_0302D78C
ldr r1, _020188F0 ; =0x04805FC0
add r0, r4, #0x28
mov r2, #0x14
bl sub_0302D78C
ldr r1, _020188F4 ; =0x04805FE0
add r0, r4, #0x3c
mov r2, #0x14
bl sub_0302D78C
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020188E8: .word 0x04805F80
_020188EC: .word 0x04805FA0
_020188F0: .word 0x04805FC0
_020188F4: .word 0x04805FE0
arm_func_end sub_02018898
arm_func_start sub_020188F8
sub_020188F8: ; 0x020188F8
cmp r0, #1
movhi r0, #5
bxhi lr
ldr r1, _0201892C ; =0x0380FFF4
and r2, r0, #1
ldr r1, [r1]
mov r0, #0
add r1, r1, #0x300
ldrh r3, [r1, #0x3a]
bic r3, r3, #1
orr r2, r3, r2
strh r2, [r1, #0x3a]
bx lr
.align 2, 0
_0201892C: .word 0x0380FFF4
arm_func_end sub_020188F8
arm_func_start sub_02018930
sub_02018930: ; 0x02018930
cmp r0, #1
movhi r0, #5
bxhi lr
ldr r1, _02018964 ; =0x0380FFF4
mov r2, r0, lsl #0x1f
ldr r1, [r1]
mov r0, #0
add r1, r1, #0x300
ldrh r3, [r1, #0x3a]
bic r3, r3, #2
orr r2, r3, r2, lsr #30
strh r2, [r1, #0x3a]
bx lr
.align 2, 0
_02018964: .word 0x0380FFF4
arm_func_end sub_02018930
arm_func_start sub_02018968
sub_02018968: ; 0x02018968
cmp r0, #0xff
movhi r0, #5
bxhi lr
ldr r2, _0201899C ; =0x0380FFF4
mov r3, #0
ldr r1, [r2]
add r1, r1, #0x300
strh r3, [r1, #0xc4]
ldr r1, [r2]
add r1, r1, #0x300
strh r0, [r1, #0xc2]
mov r0, r3
bx lr
.align 2, 0
_0201899C: .word 0x0380FFF4
arm_func_end sub_02018968
arm_func_start sub_020189A0
sub_020189A0: ; 0x020189A0
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
cmp r4, #0xa
movlo r0, #5
blo _02018A40
ldr r0, _02018A48 ; =0x0380FFF4
cmp r1, #0
ldr r0, [r0]
add r0, r0, #0x300
strh r4, [r0, #0x3c]
ldrne r0, _02018A4C ; =0x04808134
strneh r4, [r0]
ldr r0, _02018A48 ; =0x0380FFF4
ldr r1, [r0]
add r0, r1, #0x400
ldrh r0, [r0, #0xa4]
cmp r0, #0
beq _02018A3C
ldr r2, [r1, #0x4ac]
add r0, r1, #0x300
ldrh r1, [r0, #0x52]
ldrh r0, [r0, #0xda]
add r2, r2, #0x24
add r5, r2, r0
cmp r1, #1
add r0, r5, #6
bne _02018A28
and r1, r4, #0xff
bl sub_0201A514
mov r1, r4, asr #8
add r0, r5, #7
and r1, r1, #0xff
bl sub_0201A514
b _02018A3C
_02018A28:
mov r1, #0xff
bl sub_0201A514
add r0, r5, #7
mov r1, #0xff
bl sub_0201A514
_02018A3C:
mov r0, #0
_02018A40:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02018A48: .word 0x0380FFF4
_02018A4C: .word 0x04808134
arm_func_end sub_020189A0
arm_func_start sub_02018A50
sub_02018A50: ; 0x02018A50
ldr r1, _02018A7C ; =0x0380FFF4
mov r2, #0
ldr r1, [r1]
add r3, r1, #0x384
_02018A60:
ldrh r1, [r0], #2
add r2, r2, #1
cmp r2, #0x10
strh r1, [r3], #2
blo _02018A60
mov r0, #0
bx lr
.align 2, 0
_02018A7C: .word 0x0380FFF4
arm_func_end sub_02018A50
arm_func_start sub_02018A80
sub_02018A80: ; 0x02018A80
stmdb sp!, {r3, lr}
ldr r1, _02018B20 ; =0x0380FFF4
cmp r0, #1
ldr r2, [r1]
movhi r0, #5
add r1, r2, #0x344
bhi _02018B18
add r2, r2, #0x300
ldrh ip, [r2, #0x3a]
mov r3, r0, lsl #0x1f
bic ip, ip, #4
orr r3, ip, r3, lsr #29
strh r3, [r2, #0x3a]
ldrh r2, [r1, #0x7c]
cmp r0, #0
biceq r2, r2, #0x20
orrne r2, r2, #0x20
strh r2, [r1, #0x7c]
ldrh r2, [r1, #8]
cmp r2, #0x40
ldreq r2, _02018B20 ; =0x0380FFF4
ldreq r3, [r2]
addeq r2, r3, #0x300
ldreqh r2, [r2, #0x2e]
cmpeq r2, #1
ldreqh r2, [r1, #0x7c]
ldreq r1, [r3, #0x4ac]
streqh r2, [r1, #0x2e]
ldr r1, _02018B24 ; =0x048080BC
cmp r0, #0
ldreqh r0, [r1]
biceq r0, r0, #6
streqh r0, [r1]
ldrneh r0, [r1]
orrne r0, r0, #6
strneh r0, [r1]
bl sub_020193BC
mov r0, #0
_02018B18:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02018B20: .word 0x0380FFF4
_02018B24: .word 0x048080BC
arm_func_end sub_02018A80
arm_func_start sub_02018B28
sub_02018B28: ; 0x02018B28
cmp r0, #1
ldrls r1, _02018B48 ; =0x0380FFF4
movhi r0, #5
ldrls r1, [r1]
addls r1, r1, #0x300
strlsh r0, [r1, #0x32]
movls r0, #0
bx lr
.align 2, 0
_02018B48: .word 0x0380FFF4
arm_func_end sub_02018B28
arm_func_start sub_02018B4C
sub_02018B4C: ; 0x02018B4C
stmdb sp!, {r4, lr}
cmp r0, #3
mov r4, r1
movhi r0, #5
bhi _02018B88
cmp r4, #0x3f
movhi r0, #5
bhi _02018B88
mov r1, r0
mov r0, #0x13
bl sub_02019DE0
mov r1, r4
mov r0, #0x35
bl sub_02019DE0
mov r0, #0
_02018B88:
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02018B4C
arm_func_start sub_02018B90
sub_02018B90: ; 0x02018B90
cmp r0, #1
movhi r0, #5
bxhi lr
ldr r3, _02018BF0 ; =0x0380FFF4
mov r0, r0, lsl #0x10
ldr r2, [r3]
mov r1, r0, lsr #0x10
add r0, r2, #0x300
ldrh r2, [r0, #0x3a]
mov r1, r1, lsl #0x1f
bic r2, r2, #8
orr r1, r2, r1, lsr #28
strh r1, [r0, #0x3a]
ldr r0, [r3]
ldr r1, _02018BF4 ; =0x04808290
add r0, r0, #0x300
ldrh r3, [r0, #0x3a]
mov r0, #0
mov r2, r3, lsl #0x1c
mov r3, r3, lsl #0x1a
mov r2, r2, lsr #0x1f
eor r2, r2, r3, lsr #31
strh r2, [r1]
bx lr
.align 2, 0
_02018BF0: .word 0x0380FFF4
_02018BF4: .word 0x04808290
arm_func_end sub_02018B90
arm_func_start sub_02018BF8
sub_02018BF8: ; 0x02018BF8
cmp r0, #1
cmpls r1, #1
movhi r0, #5
bxhi lr
cmp r0, #0
beq _02018C1C
cmp r0, #1
beq _02018C48
b _02018C70
_02018C1C:
ldr r2, _02018CC4 ; =0x0380FFF4
mov r1, r1, lsl #0x10
ldr r3, [r2]
mov r2, r1, lsr #0x10
add r1, r3, #0x300
ldrh r3, [r1, #0x3a]
mov r2, r2, lsl #0x1f
bic r3, r3, #0x20
orr r2, r3, r2, lsr #26
strh r2, [r1, #0x3a]
b _02018C70
_02018C48:
ldr r1, _02018CC4 ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x300
ldrh r2, [r1, #0x2e]
cmp r2, #1
movne r0, #0xb
bxne lr
ldrh r2, [r1, #0x3a]
bic r2, r2, #0x20
strh r2, [r1, #0x3a]
_02018C70:
ldr r3, _02018CC4 ; =0x0380FFF4
mov r0, r0, lsl #0x10
ldr r2, [r3]
mov r1, r0, lsr #0x10
add r0, r2, #0x300
ldrh r2, [r0, #0x3a]
mov r1, r1, lsl #0x1f
bic r2, r2, #0x10
orr r1, r2, r1, lsr #27
strh r1, [r0, #0x3a]
ldr r0, [r3]
ldr r1, _02018CC8 ; =0x04808290
add r0, r0, #0x300
ldrh r3, [r0, #0x3a]
mov r0, #0
mov r2, r3, lsl #0x1c
mov r3, r3, lsl #0x1a
mov r2, r2, lsr #0x1f
eor r2, r2, r3, lsr #31
strh r2, [r1]
bx lr
.align 2, 0
_02018CC4: .word 0x0380FFF4
_02018CC8: .word 0x04808290
arm_func_end sub_02018BF8
arm_func_start sub_02018CCC
sub_02018CCC: ; 0x02018CCC
cmp r0, #1
movhi r0, #5
bxhi lr
ldr r1, _02018D08 ; =0x0380FFF4
mov r0, r0, lsl #0x10
ldr r2, [r1]
mov r1, r0, lsr #0x10
add r0, r2, #0x300
ldrh r2, [r0, #0x3a]
mov r1, r1, lsl #0x1f
bic r2, r2, #0x40
orr r1, r2, r1, lsr #25
strh r1, [r0, #0x3a]
mov r0, #0
bx lr
.align 2, 0
_02018D08: .word 0x0380FFF4
arm_func_end sub_02018CCC
arm_func_start sub_02018D0C
sub_02018D0C: ; 0x02018D0C
cmp r0, #1
movhi r0, #5
bxhi lr
ldr r2, _02018D54 ; =0x0380FFF4
mov r1, r0, lsl #0x10
ldr r3, [r2]
mov r2, r1, lsr #0x10
add r1, r3, #0x300
ldrh r3, [r1, #0x3a]
mov r2, r2, lsl #0x1f
bic r3, r3, #0x80
orr r2, r3, r2, lsr #24
strh r2, [r1, #0x3a]
ldreq r1, _02018D58 ; =0x0480802A
ldreqh r0, [r1]
streqh r0, [r1, #-2]
mov r0, #0
bx lr
.align 2, 0
_02018D54: .word 0x0380FFF4
_02018D58: .word 0x0480802A
arm_func_end sub_02018D0C
arm_func_start sub_02018D5C
sub_02018D5C: ; 0x02018D5C
stmdb sp!, {r4, lr}
ldr r1, _02018DB4 ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
mov r1, r4
add r0, r0, #0x3a8
bl sub_020198D0
ldr r0, _02018DB8 ; =0x04808020
mov r1, r4
bl sub_020198D0
ldrh r0, [r4]
ldr r1, _02018DBC ; =0x048080D0
tst r0, #1
ldrneh r0, [r1]
bicne r0, r0, #0x400
strneh r0, [r1]
ldreqh r0, [r1]
orreq r0, r0, #0x400
streqh r0, [r1]
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02018DB4: .word 0x0380FFF4
_02018DB8: .word 0x04808020
_02018DBC: .word 0x048080D0
arm_func_end sub_02018D5C
arm_func_start sub_02018DC0
sub_02018DC0: ; 0x02018DC0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _02018ECC ; =0x0380FFF4
mov r8, r0
ldr r2, [r2]
cmp r8, #0x20
mov r7, r1
add r4, r2, #0x344
mov r6, #0
movhi r0, #5
bhi _02018EC4
ldrh r0, [r4, #8]
cmp r0, #0x40
addeq r0, r2, #0x300
ldreqh r0, [r0, #0x2e]
cmpeq r0, #1
bne _02018E1C
ldrh r0, [r4, #0x1e]
cmp r0, r8
movne r0, #6
bne _02018EC4
ldrh r0, [r4, #0x92]
cmp r0, #0
movne r6, #1
_02018E1C:
mov r5, #0
add sb, r4, #0x20
b _02018E44
_02018E28:
mov r0, r7
bl sub_0201A540
mov r1, r0
add r0, sb, r5
bl sub_0201A514
add r7, r7, #1
add r5, r5, #1
_02018E44:
cmp r5, r8
blo _02018E28
add sb, r4, #0x20
mov r7, #0
b _02018E68
_02018E58:
mov r1, r7
add r0, sb, r5
bl sub_0201A514
add r5, r5, #1
_02018E68:
cmp r5, #0x20
blo _02018E58
strh r8, [r4, #0x1e]
cmp r6, #0
beq _02018EC0
ldr r1, _02018ECC ; =0x0380FFF4
ldrh r0, [r4, #0x92]
ldr r1, [r1]
mov r5, #0
ldr r1, [r1, #0x4ac]
add r4, r4, #0x20
add r1, r1, #0x26
add r6, r1, r0
b _02018EB8
_02018EA0:
add r0, r4, r5
bl sub_0201A540
mov r1, r0
add r0, r6, r5
bl sub_0201A514
add r5, r5, #1
_02018EB8:
cmp r5, r8
blo _02018EA0
_02018EC0:
mov r0, #0
_02018EC4:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_02018ECC: .word 0x0380FFF4
arm_func_end sub_02018DC0
arm_func_start sub_02018ED0
sub_02018ED0: ; 0x02018ED0
stmdb sp!, {r3, lr}
cmp r0, #0xa
blo _02018EE4
cmp r0, #0x3e8
bls _02018EEC
_02018EE4:
mov r0, #5
b _02018F18
_02018EEC:
ldr r3, _02018F20 ; =0x0380FFF4
ldr r2, _02018F24 ; =0x0480808C
ldr r1, [r3]
add r1, r1, #0x300
strh r0, [r1, #0xb2]
strh r0, [r2]
ldr r0, [r3]
add r0, r0, #0x300
ldrh r0, [r0, #0x38]
bl sub_02019620
mov r0, #0
_02018F18:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02018F20: .word 0x0380FFF4
_02018F24: .word 0x0480808C
arm_func_end sub_02018ED0
arm_func_start sub_02018F28
sub_02018F28: ; 0x02018F28
cmp r0, #1
blo _02018F38
cmp r0, #0xff
bls _02018F40
_02018F38:
mov r0, #5
bx lr
_02018F40:
ldr r1, _02018F64 ; =0x0380FFF4
ldr r2, _02018F68 ; =0x0480808E
ldr r1, [r1]
add r1, r1, #0x300
strh r0, [r1, #0xb8]
strh r0, [r2]
mov r0, #0
strh r0, [r2, #-6]
bx lr
.align 2, 0
_02018F64: .word 0x0380FFF4
_02018F68: .word 0x0480808E
arm_func_end sub_02018F28
arm_func_start sub_02018F6C
sub_02018F6C: ; 0x02018F6C
cmp r0, #1
blo _02018F7C
cmp r0, #0xff
bls _02018F84
_02018F7C:
mov r0, #5
bx lr
_02018F84:
ldr r1, _02018F9C ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x300
strh r0, [r1, #0xb4]
mov r0, #0
bx lr
.align 2, 0
_02018F9C: .word 0x0380FFF4
arm_func_end sub_02018F6C
arm_func_start sub_02018FA0
sub_02018FA0: ; 0x02018FA0
stmdb sp!, {r3, lr}
sub sp, sp, #8
add r2, sp, #2
mov r0, #0x36
mov r1, #6
bl sub_02024600
add r2, sp, #0
mov r0, #0x3c
mov r1, #2
bl sub_02024600
add r0, sp, #2
bl sub_0201864C
mov r0, #7
bl sub_020186AC
ldrh r1, [sp]
ldr r0, _020190D4 ; =0x00007FFE
and r0, r1, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_020186E0
mov r0, #2
bl sub_02018720
mov r0, #0
bl sub_020187A0
mov r0, #0
bl sub_020187D4
mov r0, #0
bl sub_02018874
ldr r0, _020190D8 ; =0x027F7300
bl sub_02018898
mov r0, #0x1f4
bl sub_02018ED0
mov r0, #0
bl sub_020188F8
mov r0, #0
bl sub_02018930
mov r0, #0x10
bl sub_02018968
ldr r0, _020190DC ; =0x0000FFFF
mov r1, #0
bl sub_020189A0
ldr r0, _020190E0 ; =0x027F72A0
bl sub_02018A50
mov r0, #1
bl sub_02018A80
mov r0, #0
bl sub_02018B28
ldr r0, _020190E4 ; =0x027F729C
bl sub_0201937C
mov r0, #0
mov r1, #0x1f
bl sub_02018B4C
mov r0, #5
bl sub_02019620
mov r0, #0
mov r1, r0
bl sub_02018BF8
mov r0, #0
bl sub_02018B90
mov r0, #0
bl sub_02018CCC
mov r0, #0
bl sub_02018D0C
ldr r1, _020190E8 ; =0x04808044
ldrh r2, [r1]
ldrh r0, [r1]
ldrh r1, [r1]
add r0, r2, r0, lsl #8
bl sub_0201A55C
ldr r0, _020190EC ; =0x0380FFF4
mov r1, #1
ldr r0, [r0]
add r0, r0, #0x300
strh r1, [r0, #0x58]
add sp, sp, #8
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020190D4: .word 0x00007FFE
_020190D8: .word 0x027F7300
_020190DC: .word 0x0000FFFF
_020190E0: .word 0x027F72A0
_020190E4: .word 0x027F729C
_020190E8: .word 0x04808044
_020190EC: .word 0x0380FFF4
arm_func_end sub_02018FA0
arm_func_start sub_020190F0
sub_020190F0: ; 0x020190F0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
mov sl, r0
ldr r0, _0201936C ; =0x0380FFF4
cmp r1, #0
ldr r0, [r0]
ldrne sb, _02019370 ; =0x027F4E70
add r0, r0, #0x300
ldrh r0, [r0, #0x2c]
ldreq sb, _02019374 ; =sub_027F4E10
mov r2, #1
tst r0, r2, lsl sl
moveq r0, #5
beq _02019360
ldr r1, _02019378 ; =0x04808040
add r0, r2, #0x8000
ldrh r6, [r1]
strh r0, [r1]
sub r3, r1, #4
add r1, r1, #0x1d4
_02019140:
ldrh r2, [r3]
ldrh r0, [r1]
mov r2, r2, asr #8
cmp r2, #2
bne _02019140
cmp r0, #0
cmpne r0, #9
bne _02019140
ldr r5, _0201936C ; =0x0380FFF4
ldr r0, [r5]
add r0, r0, #0x300
strh sl, [r0, #0xbe]
ldr r0, [r5]
add r0, r0, #0x500
ldrh r1, [r0, #0xf8]
cmp r1, #2
beq _02019194
cmp r1, #3
beq _02019264
cmp r1, #5
bne _0201934C
_02019194:
sub r4, sl, #1
mov r0, #6
mul r5, r4, r0
mov r0, #0
str r0, [sp, #4]
add r2, sp, #4
add r0, r5, #0xf2
mov r1, #3
mov lr, pc
bx sb
_020191BC:
ldr r0, [sp, #4]
bl sub_02019E10
add r2, sp, #4
add r0, r5, #0xf5
mov r1, #3
mov lr, pc
bx sb
_020191D8:
ldr r0, [sp, #4]
bl sub_02019E10
mov r1, #0
ldr r0, _0201936C ; =0x0380FFF4
str r1, [sp, #4]
ldr r0, [r0]
ldr r0, [r0, #0x604]
tst r0, #0x10000
beq _0201923C
tst r0, #0x8000
bne _0201934C
add r2, sp, #4
add r0, r4, #0x154
mov r1, #1
mov lr, pc
bx sb
sub_02019218: ; 0x02019218
ldr r1, _0201936C ; =0x0380FFF4
ldr r0, [sp, #4]
ldr r1, [r1]
mov r0, r0, lsl #0x1b
ldr r1, [r1, #0x604]
orr r0, r1, r0, lsr #17
str r0, [sp, #4]
bl sub_02019E10
b _0201934C
_0201923C:
add r0, r4, #0x46
add r2, sp, #4
add r0, r0, #0x100
mov r1, #1
mov lr, pc
bx sb
_02019254:
ldr r1, [sp, #4]
mov r0, #0x1e
bl sub_02019DE0
b _0201934C
_02019264:
ldrh r0, [r0, #0xfc]
mov r8, #0
add r7, r0, #0xcf
mov r4, r8
mov fp, #1
b _020192C0
_0201927C:
mov r0, r7
mov r1, fp
add r2, sp, #0
str r4, [sp, #4]
str r4, [sp]
mov lr, pc
bx sb
_02019298:
add r0, r7, sl
mov r1, #1
add r2, sp, #4
mov lr, pc
bx sb
_020192AC:
ldr r0, [sp]
ldr r1, [sp, #4]
bl sub_02019DE0
add r7, r7, #0xf
add r8, r8, #1
_020192C0:
ldr r0, [r5]
add r0, r0, #0x600
ldrh r0, [r0]
cmp r8, r0
blo _0201927C
mov r8, #0
ldr r4, _0201936C ; =0x0380FFF4
mov r5, r8
mov fp, #1
b _02019338
_020192E8:
str r5, [sp, #4]
mov r0, r7
mov r1, fp
add r2, sp, #4
mov lr, pc
bx sb
_02019300:
ldr r1, [sp, #4]
add r0, r7, sl
mov r1, r1, lsl #8
str r1, [sp, #4]
mov r1, #1
add r2, sp, #4
mov lr, pc
bx sb
_02019320:
ldr r0, [sp, #4]
orr r0, r0, #0x50000
str r0, [sp, #4]
bl sub_02019E10
add r7, r7, #0xf
add r8, r8, #1
_02019338:
ldr r0, [r4]
add r0, r0, #0x500
ldrh r0, [r0, #0xfe]
cmp r8, r0
blo _020192E8
_0201934C:
ldr r1, _02019378 ; =0x04808040
mov r0, #3
strh r6, [r1]
strh r0, [r1, #8]
mov r0, #0
_02019360:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0201936C: .word 0x0380FFF4
_02019370: .word 0x027F4E70
_02019374: .word sub_027F4E10
_02019378: .word 0x04808040
arm_func_end sub_020190F0
arm_func_start sub_0201937C
sub_0201937C: ; 0x0201937C
stmdb sp!, {r3, lr}
ldr r1, _020193B8 ; =0x0380FFF4
ldrh r2, [r0]
ldr r3, [r1]
add r1, r3, #0x300
strh r2, [r1, #0xa4]
ldrh r1, [r0, #2]
ldrh r0, [r0]
add r2, r3, #0x3a4
orr r0, r1, r0
strh r0, [r2, #2]
bl sub_020193BC
mov r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020193B8: .word 0x0380FFF4
arm_func_end sub_0201937C
arm_func_start sub_020193BC
sub_020193BC: ; 0x020193BC
stmdb sp!, {r3, lr}
ldr r0, _02019430 ; =0x0000E2E2
add r2, sp, #0
str r0, [sp]
mov r0, #0x58
mov r1, #2
bl sub_02024600
ldr r0, [sp]
add r0, r0, #2
add r0, r0, #0x200
str r0, [sp]
bl sub_02019D68
cmp r0, #0x14
bne _0201941C
ldr r1, [sp]
ldr r0, _02019434 ; =0x048080BC
sub r1, r1, #0x61
sub r1, r1, #0x6100
str r1, [sp]
ldrh r0, [r0]
tst r0, #2
subne r0, r1, #0x60
subne r0, r0, #0x6000
strne r0, [sp]
_0201941C:
ldr r1, [sp]
ldr r0, _02019438 ; =0x04808140
strh r1, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02019430: .word 0x0000E2E2
_02019434: .word 0x048080BC
_02019438: .word 0x04808140
arm_func_end sub_020193BC
arm_func_start sub_0201943C
sub_0201943C: ; 0x0201943C
stmdb sp!, {r3, lr}
ldr r1, _0201949C ; =0x0380FFF4
cmp r0, #0
ldr r2, [r1]
add r1, r2, #0x300
add r3, r2, #0x31c
strh r0, [r1, #0x52]
ldrneh r0, [r3, #0x12]
cmpne r0, #1
ldrne r1, _020194A0 ; =0x04808006
ldrneh r0, [r1]
orrne r0, r0, #0x40
strneh r0, [r1]
bne _02019490
ldr r2, _020194A0 ; =0x04808006
mov r1, #0
ldrh r0, [r2]
bic r0, r0, #0x40
strh r0, [r2]
ldrh r0, [r3, #0x20]
bl sub_020189A0
_02019490:
mov r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201949C: .word 0x0380FFF4
_020194A0: .word 0x04808006
arm_func_end sub_0201943C
arm_func_start sub_020194A4
sub_020194A4: ; 0x020194A4
ldr r1, _020194C8 ; =0x0380FFF4
ldr r2, _020194CC ; =0x0480803C
ldr r1, [r1]
mov r3, r0, lsr #1
add r1, r1, #0x300
strh r3, [r1, #0x54]
strh r0, [r2]
mov r0, #0
bx lr
.align 2, 0
_020194C8: .word 0x0380FFF4
_020194CC: .word 0x0480803C
arm_func_end sub_020194A4
arm_func_start sub_020194D0
sub_020194D0: ; 0x020194D0
ldr r1, _020194E0 ; =0x04808040
strh r0, [r1]
mov r0, #0
bx lr
.align 2, 0
_020194E0: .word 0x04808040
arm_func_end sub_020194D0
arm_func_start sub_020194E4
sub_020194E4: ; 0x020194E4
stmdb sp!, {r3, lr}
ldr r0, _0201954C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x500
ldrh r0, [r0, #0xf8]
cmp r0, #2
bne _02019508
ldr r0, _02019550 ; =0x0000C008
bl sub_02019E10
_02019508:
ldr r1, _02019554 ; =0x0000601E
ldr r0, _02019558 ; =0x04808158
strh r1, [r0]
bl sub_0302AC10
ldr r1, _0201955C ; =0x0480815C
mov r0, #0x1e
ldrh r1, [r1]
orr r1, r1, #0x3f
bl sub_02019DE0
ldr r2, _02019560 ; =0x0000800D
ldr r1, _02019564 ; =0x04808168
ldr r0, _02019568 ; =0x04808036
strh r2, [r1]
mov r1, #1
strh r1, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201954C: .word 0x0380FFF4
_02019550: .word 0x0000C008
_02019554: .word 0x0000601E
_02019558: .word 0x04808158
_0201955C: .word 0x0480815C
_02019560: .word 0x0000800D
_02019564: .word 0x04808168
_02019568: .word 0x04808036
arm_func_end sub_020194E4
arm_func_start sub_0201956C
sub_0201956C: ; 0x0201956C
stmdb sp!, {r4, lr}
ldr r2, _02019604 ; =0x04808036
mov r3, #0
ldr r1, _02019608 ; =0x027EA99C
mov r0, #0x1f40
strh r3, [r2]
bl sub_0302AB1C
ldr r1, _0201960C ; =0x04808168
mov r2, #0
ldr r0, _02019610 ; =0x0380FFF4
strh r2, [r1]
ldr r0, [r0]
add r0, r0, #0x500
ldrh r0, [r0, #0xf8]
cmp r0, #2
beq _020195B8
cmp r0, #3
beq _020195F8
b _020195FC
_020195B8:
ldr r0, _02019614 ; =0x00006001
strh r0, [r1, #-0x10]
bl sub_0302AC10
ldr r1, _02019618 ; =0x0480815C
mov r0, #1
ldrh r4, [r1]
and r1, r4, #0x7f
bl sub_02019DE0
mov r1, r4
mov r0, #1
bl sub_02019DE0
ldr r0, _0201961C ; =0x00009C40
ldr r1, _02019608 ; =0x027EA99C
bl sub_0302AB1C
bl sub_02019FB0
b _020195FC
_020195F8:
bl sub_02019FB0
_020195FC:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02019604: .word 0x04808036
_02019608: .word 0x027EA99C
_0201960C: .word 0x04808168
_02019610: .word 0x0380FFF4
_02019614: .word 0x00006001
_02019618: .word 0x0480815C
_0201961C: .word 0x00009C40
arm_func_end sub_0201956C
arm_func_start sub_02019620
sub_02019620: ; 0x02019620
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _0201967C ; =0x0380FFF4
ldr r1, _02019680 ; =0x0000FFFF
ldr r2, [r2]
mov r6, r0
add r5, r2, #0x31c
cmp r6, r1
streqh r1, [r5, #0x1c]
add r4, r2, #0x344
streqh r1, [r4, #0x8c]
beq _02019670
ldrh r0, [r4, #0x6e]
mov r1, #0x64
mul r0, r6, r0
bl sub_030365C4
cmp r0, #0x10000
movhi r0, #5
bhi _02019674
strh r6, [r5, #0x1c]
strh r0, [r4, #0x8c]
_02019670:
mov r0, #0
_02019674:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201967C: .word 0x0380FFF4
_02019680: .word 0x0000FFFF
arm_func_end sub_02019620
arm_func_start sub_02019684
sub_02019684: ; 0x02019684
ldr r1, _020196C8 ; =0x0380FFF4
mov r2, #1
ldr r0, [r1]
add r0, r0, #0x300
strh r2, [r0, #0xea]
ldr r0, [r1]
add r0, r0, #0x400
ldrh r0, [r0, #0x68]
cmp r0, #0
bxne lr
ldr r2, _020196CC ; =0x04808038
mov r0, #0
ldrh r1, [r2]
bic r1, r1, #2
strh r1, [r2]
strh r0, [r2, #0x10]
bx lr
.align 2, 0
_020196C8: .word 0x0380FFF4
_020196CC: .word 0x04808038
arm_func_end sub_02019684
arm_func_start sub_020196D0
sub_020196D0: ; 0x020196D0
ldr r0, _020196F8 ; =0x0380FFF4
ldr r1, _020196FC ; =0x04808038
ldr r0, [r0]
mov r2, #0
add r0, r0, #0x300
strh r2, [r0, #0xea]
ldrh r0, [r1]
orr r0, r0, #2
strh r0, [r1]
bx lr
.align 2, 0
_020196F8: .word 0x0380FFF4
_020196FC: .word 0x04808038
arm_func_end sub_020196D0
arm_func_start sub_02019700
sub_02019700: ; 0x02019700
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _02019740 ; =0x0380FFF4
mov r5, r0
ldr r0, [r2]
cmp r5, #0x80
add r4, r0, #0x344
movhi r0, #4
bhi _02019738
mov r0, r1
ldr r1, [r4, #0x9c]
add r2, r5, #1
bl sub_0302D78C
strh r5, [r4, #0xa0]
mov r0, #0
_02019738:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02019740: .word 0x0380FFF4
arm_func_end sub_02019700
arm_func_start sub_02019744
sub_02019744: ; 0x02019744
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r2, _020197EC ; =0x0380FFF4
mov r4, r0
ldr r0, [r2]
mov r8, r1
cmp r4, #0x80
add r5, r0, #0x344
movhi r0, #4
bhi _020197E4
cmp r4, #0
beq _020197D4
ldrh r0, [r5, #0xa2]
tst r0, #1
beq _020197C4
ldr r6, [r5, #0x9c]
mov r1, #0xff
mov r0, r6
bl sub_0201A514
add r6, r6, #1
mov r7, #0
b _020197B8
_02019798:
mov r0, r8
bl sub_0201A540
mov r1, r0
mov r0, r6
bl sub_0201A514
add r6, r6, #1
add r8, r8, #1
add r7, r7, #1
_020197B8:
cmp r7, r4
blo _02019798
b _020197D4
_020197C4:
ldr r1, [r5, #0x9c]
mov r0, r8
add r2, r4, #1
bl sub_0302D78C
_020197D4:
strh r4, [r5, #0xa0]
mov r0, #1
strh r0, [r5, #0xa4]
mov r0, #0
_020197E4:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_020197EC: .word 0x0380FFF4
arm_func_end sub_02019744
arm_func_start sub_020197F0
sub_020197F0: ; 0x020197F0
ldr r3, _02019824 ; =0x0380FFF4
ldr r2, _02019828 ; =0x0480802A
ldr r1, [r3]
add r1, r1, #0x300
strh r0, [r1, #0xae]
strh r0, [r2]
ldr r1, [r3]
add r1, r1, #0x300
ldrh r1, [r1, #0x3a]
mov r1, r1, lsl #0x18
movs r1, r1, lsr #0x1f
strneh r0, [r2, #-2]
bx lr
.align 2, 0
_02019824: .word 0x0380FFF4
_02019828: .word 0x0480802A
arm_func_end sub_020197F0
arm_func_start sub_0201982C
sub_0201982C: ; 0x0201982C
stmdb sp!, {r4, lr}
ldr r1, _02019880 ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
add r4, r1, #0x344
strh r0, [r4, #0x6a]
bl sub_0302ABA4
ldr r0, _02019884 ; =0x0480802A
mov r1, #0
strh r1, [r0]
ldrh r0, [r4, #0x88]
cmp r0, #0
beq _02019878
bl sub_02020550
ldrh r0, [r4, #0x88]
mov r1, #0x20
bl sub_0201B434
mov r0, #0
strh r0, [r4, #0x88]
_02019878:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02019880: .word 0x0380FFF4
_02019884: .word 0x0480802A
arm_func_end sub_0201982C
arm_func_start sub_02019888
sub_02019888: ; 0x02019888
ldr r0, _020198A4 ; =0x0380FFF4
ldr r1, _020198A8 ; =0x04808028
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0xae]
strh r0, [r1]
bx lr
.align 2, 0
_020198A4: .word 0x0380FFF4
_020198A8: .word 0x04808028
arm_func_end sub_02019888
arm_func_start sub_020198AC
sub_020198AC: ; 0x020198AC
stmdb sp!, {r3, lr}
ldr r0, _020198CC ; =0x04808094
ldrh r0, [r0]
tst r0, #0x8000
bne _020198C4
bl sub_0302ABA4
_020198C4:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020198CC: .word 0x04808094
arm_func_end sub_020198AC
arm_func_start sub_020198D0
sub_020198D0: ; 0x020198D0
ldrh r2, [r1]
strh r2, [r0]
ldrh r2, [r1, #2]
strh r2, [r0, #2]
ldrh r1, [r1, #4]
strh r1, [r0, #4]
bx lr
arm_func_end sub_020198D0
arm_func_start sub_020198EC
sub_020198EC: ; 0x020198EC
ldrh r3, [r1]
strh r3, [r0]
ldrh r3, [r1, #2]
strh r3, [r0, #2]
ldrh r1, [r1, #4]
strh r1, [r0, #4]
ldrh r1, [r2]
strh r1, [r0, #6]
ldrh r1, [r2, #2]
strh r1, [r0, #8]
ldrh r1, [r2, #4]
strh r1, [r0, #0xa]
bx lr
arm_func_end sub_020198EC
arm_func_start sub_02019920
sub_02019920: ; 0x02019920
ldrh ip, [r1]
strh ip, [r0]
ldrh ip, [r1, #2]
strh ip, [r0, #2]
ldrh r1, [r1, #4]
strh r1, [r0, #4]
ldrh r1, [r2]
strh r1, [r0, #6]
ldrh r1, [r2, #2]
strh r1, [r0, #8]
ldrh r1, [r2, #4]
strh r1, [r0, #0xa]
ldrh r1, [r3]
strh r1, [r0, #0xc]
ldrh r1, [r3, #2]
strh r1, [r0, #0xe]
ldrh r1, [r3, #4]
strh r1, [r0, #0x10]
bx lr
arm_func_end sub_02019920
arm_func_start sub_0201996C
sub_0201996C: ; 0x0201996C
stmdb sp!, {r3, lr}
bl sub_0201999C
ldr r1, _02019998 ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
mov r2, #0xb4
add r1, r1, #0x13c
add r1, r1, #0x400
bl sub_0302D7C0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02019998: .word 0x0380FFF4
arm_func_end sub_0201996C
arm_func_start sub_0201999C
sub_0201999C: ; 0x0201999C
ldr r1, _02019B8C ; =0x0380FFF4
ldr r0, _02019B90 ; =0x048081B0
ldr r1, [r1]
ldrh r2, [r0]
ldr r3, [r1, #0x58c]
and r2, r2, #0xff
add r2, r3, r2
str r2, [r1, #0x58c]
ldrh ip, [r0, #2]
ldr r3, [r1, #0x588]
and r2, ip, #0xff
add r3, r3, ip, asr #8
str r3, [r1, #0x588]
ldr r3, [r1, #0x598]
add r2, r3, r2
str r2, [r1, #0x598]
ldrh ip, [r0, #4]
ldr r3, [r1, #0x594]
and r2, ip, #0xff
add r3, r3, ip, asr #8
str r3, [r1, #0x594]
ldr r3, [r1, #0x590]
add r2, r3, r2
str r2, [r1, #0x590]
ldrh ip, [r0, #6]
ldr r3, [r1, #0x59c]
and r2, ip, #0xff
add r3, r3, ip, asr #8
str r3, [r1, #0x59c]
ldr r3, [r1, #0x574]
add r2, r3, r2
str r2, [r1, #0x574]
ldrh r2, [r0, #8]
ldr r3, [r1, #0x584]
and r2, r2, #0xff
add r2, r3, r2
str r2, [r1, #0x584]
ldrh r2, [r0, #0xa]
ldr r3, [r1, #0x55c]
and r2, r2, #0xff
add r2, r3, r2
str r2, [r1, #0x55c]
ldrh ip, [r0, #0xc]
ldr r3, [r1, #0x56c]
and r2, ip, #0xff
add r3, r3, ip, asr #8
str r3, [r1, #0x56c]
ldr r3, [r1, #0x580]
add r2, r3, r2
str r2, [r1, #0x580]
ldrh ip, [r0, #0xe]
ldr r3, [r1, #0x578]
and r2, ip, #0xff
add r2, r3, r2
str r2, [r1, #0x578]
ldr r2, [r1, #0x57c]
add r2, r2, ip, asr #8
str r2, [r1, #0x57c]
ldrh r2, [r0, #0x10]
ldr r3, [r1, #0x548]
and r2, r2, #0xff
add r2, r3, r2
str r2, [r1, #0x548]
ldrh r3, [r0, #0x20]
ldr r2, [r1, #0x5b4]
add r2, r2, r3, asr #8
str r2, [r1, #0x5b4]
ldrh ip, [r0, #0x22]
ldr r3, [r1, #0x5b8]
and r2, ip, #0xff
add r2, r3, r2
str r2, [r1, #0x5b8]
ldr r2, [r1, #0x5bc]
add r2, r2, ip, asr #8
str r2, [r1, #0x5bc]
ldrh ip, [r0, #0x24]
ldr r3, [r1, #0x5c0]
and r2, ip, #0xff
add r2, r3, r2
str r2, [r1, #0x5c0]
ldr r2, [r1, #0x5c4]
add r2, r2, ip, asr #8
str r2, [r1, #0x5c4]
ldrh ip, [r0, #0x26]
ldr r3, [r1, #0x5c8]
and r2, ip, #0xff
add r2, r3, r2
str r2, [r1, #0x5c8]
ldr r2, [r1, #0x5cc]
add r2, r2, ip, asr #8
str r2, [r1, #0x5cc]
ldrh ip, [r0, #0x28]
ldr r3, [r1, #0x5d0]
and r2, ip, #0xff
add r2, r3, r2
str r2, [r1, #0x5d0]
ldr r2, [r1, #0x5d4]
add r2, r2, ip, asr #8
str r2, [r1, #0x5d4]
ldrh ip, [r0, #0x2a]
ldr r3, [r1, #0x5d8]
and r2, ip, #0xff
add r2, r3, r2
str r2, [r1, #0x5d8]
ldr r2, [r1, #0x5dc]
add r2, r2, ip, asr #8
str r2, [r1, #0x5dc]
ldrh ip, [r0, #0x2c]
ldr r3, [r1, #0x5e0]
and r2, ip, #0xff
add r2, r3, r2
str r2, [r1, #0x5e0]
ldr r2, [r1, #0x5e4]
add r2, r2, ip, asr #8
str r2, [r1, #0x5e4]
ldrh r3, [r0, #0x2e]
ldr r2, [r1, #0x5e8]
and r0, r3, #0xff
add r0, r2, r0
str r0, [r1, #0x5e8]
ldr r0, [r1, #0x5ec]
add r0, r0, r3, asr #8
str r0, [r1, #0x5ec]
bx lr
.align 2, 0
_02019B8C: .word 0x0380FFF4
_02019B90: .word 0x048081B0
arm_func_end sub_0201999C
arm_func_start sub_02019B94
sub_02019B94: ; 0x02019B94
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r2, _02019C60 ; =0x0380FFF4
mov sb, r0
ldr r0, [r2]
mov r8, r1
cmp sb, #0x20
add r2, r0, #0x344
movhi r0, #0
bhi _02019C58
ldrh r1, [r2, #0x1e]
cmp r1, #0
moveq r0, #1
beq _02019C58
add r0, r0, #0x400
ldrh r0, [r0, #4]
cmp r0, #0x13
bne _02019BEC
cmp sb, r1
movlo r0, #0
blo _02019C58
mov sb, r1
b _02019BF8
_02019BEC:
cmp sb, r1
movne r0, #0
bne _02019C58
_02019BF8:
add r5, r2, #0x20
add r6, r2, #0x40
mov r7, #0
b _02019C4C
_02019C08:
mov r0, r6
bl sub_0201A540
mov r4, r0
mov r0, r8
add r6, r6, #1
bl sub_0201A540
mov sl, r0
mov r0, r5
add r8, r8, #1
bl sub_0201A540
orr r1, sl, r4
orr r0, r0, r4
cmp r1, r0
add r5, r5, #1
movne r0, #0
bne _02019C58
add r7, r7, #1
_02019C4C:
cmp r7, sb
blo _02019C08
mov r0, #1
_02019C58:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_02019C60: .word 0x0380FFF4
arm_func_end sub_02019B94
arm_func_start sub_02019C64
sub_02019C64: ; 0x02019C64
ldrh r3, [r0, #4]
ldrh r2, [r1, #4]
cmp r3, r2
ldreqh r3, [r0, #2]
ldreqh r2, [r1, #2]
cmpeq r3, r2
ldreqh r2, [r0]
ldreqh r0, [r1]
cmpeq r2, r0
moveq r0, #1
movne r0, #0
bx lr
arm_func_end sub_02019C64
arm_func_start sub_02019C94
sub_02019C94: ; 0x02019C94
ldr r1, _02019CB0 ; =0x0380FFF4
mov r2, #1
ldr r1, [r1]
add r1, r1, #0x300
ldrh r1, [r1, #0x2c]
and r0, r1, r2, lsl r0
bx lr
.align 2, 0
_02019CB0: .word 0x0380FFF4
arm_func_end sub_02019C94
arm_func_start sub_02019CB4
sub_02019CB4: ; 0x02019CB4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r1
mov r1, #0
mov r4, r0
strh r1, [sb]
add r0, r4, #1
strh r1, [sb, #2]
bl sub_0201A540
add r6, r4, #2
ldr r5, _02019D64 ; =0x027F73B4
mov r8, r0
mov r7, #0
mov r4, #1
b _02019D54
_02019CEC:
add r0, r6, r7
bl sub_0201A540
and r1, r0, #0x7f
sub r1, r1, #1
cmp r1, #0x78
bhs _02019D34
mov r1, r1, lsl #1
ldrh r2, [r5, r1]
cmp r2, #0xff
beq _02019D34
ldrh r1, [sb, #2]
tst r0, #0x80
orr r0, r1, r4, lsl r2
strh r0, [sb, #2]
ldrneh r0, [sb]
orrne r0, r0, r4, lsl r2
strneh r0, [sb]
b _02019D50
_02019D34:
ldrh r1, [sb, #2]
tst r0, #0x80
orr r0, r1, #0x8000
strh r0, [sb, #2]
ldrneh r0, [sb]
orrne r0, r0, #0x8000
strneh r0, [sb]
_02019D50:
add r7, r7, #1
_02019D54:
cmp r7, r8
blo _02019CEC
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_02019D64: .word 0x027F73B4
arm_func_end sub_02019CB4
arm_func_start sub_02019D68
sub_02019D68: ; 0x02019D68
ldr r0, _02019DB0 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x30]
cmp r1, #0
beq _02019D8C
cmp r1, #1
beq _02019DA0
b _02019DA8
_02019D8C:
ldrh r0, [r0, #0xa4]
tst r0, #1
beq _02019DA8
mov r0, #0xa
bx lr
_02019DA0:
mov r0, #0xa
bx lr
_02019DA8:
mov r0, #0x14
bx lr
.align 2, 0
_02019DB0: .word 0x0380FFF4
arm_func_end sub_02019D68
arm_func_start sub_02019DB4
sub_02019DB4: ; 0x02019DB4
stmdb sp!, {r3, lr}
ldr r1, _02019DD8 ; =0x04808158
orr r0, r0, #0x6000
strh r0, [r1]
bl sub_0302AC10
ldr r0, _02019DDC ; =0x0480815C
ldrh r0, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02019DD8: .word 0x04808158
_02019DDC: .word 0x0480815C
arm_func_end sub_02019DB4
arm_func_start sub_02019DE0
sub_02019DE0: ; 0x02019DE0
stmdb sp!, {r3, lr}
ldr r2, _02019E0C ; =0x0480815A
orr r0, r0, #0x5000
strh r1, [r2]
strh r0, [r2, #-2]
bl sub_0302AC10
cmp r0, #0
mvnne r0, #0
moveq r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02019E0C: .word 0x0480815A
arm_func_end sub_02019DE0
arm_func_start sub_02019E10
sub_02019E10: ; 0x02019E10
ldr r2, _02019E28 ; =0x0480817E
ldr ip, _02019E2C ; =sub_037FB454
strh r0, [r2]
mov r1, r0, lsr #0x10
strh r1, [r2, #-2]
bx ip
.align 2, 0
_02019E28: .word 0x0480817E
_02019E2C: .word sub_037FB454
arm_func_end sub_02019E10
arm_func_start sub_02019E30
sub_02019E30: ; 0x02019E30
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
mov r8, #0
str r8, [sp]
mov r7, r8
mov r6, #0x64
add r4, sp, #0
mov r5, #1
_02019E50:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_02024600
cmp r7, #1
ldreq r0, [sp]
mov r1, r8
andeq r0, r0, #0x80
streq r0, [sp]
ldr r0, [sp]
and r0, r0, #0xff
bl sub_0201A5D8
add r7, r7, #1
mov r8, r0
cmp r7, #0x69
add r6, r6, #1
blo _02019E50
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, lr}
bx lr
arm_func_end sub_02019E30
arm_func_start sub_02019EA0
sub_02019EA0: ; 0x02019EA0
stmdb sp!, {r4, lr}
ldr r1, _02019F0C ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
mov r2, #0x10
add r1, r1, #0x1f8
add r4, r1, #0x400
mov r1, r4
bl sub_0302D764
mov r2, r4
mov r0, #0x40
mov r1, #1
bl sub_02024600
add r2, r4, #2
mov r0, #0x41
mov r1, #1
bl sub_02024600
add r2, r4, #4
mov r0, #0x42
mov r1, #1
bl sub_02024600
add r2, r4, #6
mov r0, #0x43
mov r1, #1
bl sub_02024600
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02019F0C: .word 0x0380FFF4
arm_func_end sub_02019EA0
arm_func_start sub_02019F10
sub_02019F10: ; 0x02019F10
ldr r2, _02019F44 ; =0x027F7350
mov r3, #0
_02019F18:
mov r0, r3, lsl #2
ldrh r0, [r2, r0]
add r1, r2, r3, lsl #2
add r0, r0, #0x4800000
add r3, r3, #1
ldrh r1, [r1, #2]
add r0, r0, #0x8000
strh r1, [r0]
cmp r3, #0x19
blo _02019F18
bx lr
.align 2, 0
_02019F44: .word 0x027F7350
arm_func_end sub_02019F10
arm_func_start sub_02019F48
sub_02019F48: ; 0x02019F48
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r0, _02019FAC ; =0x04808160
mov r1, #0x100
strh r1, [r0]
mov r6, #0
str r6, [sp]
mov r7, #0x64
add r4, sp, #0
mov r5, #1
_02019F6C:
mov r0, r7
mov r1, r5
mov r2, r4
bl sub_02024600
ldr r1, [sp]
mov r0, r6
bl sub_02019DE0
add r6, r6, #1
cmp r6, #0x69
add r7, r7, #1
blo _02019F6C
mov r0, #0x5a
mov r1, #2
bl sub_02019DE0
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02019FAC: .word 0x04808160
arm_func_end sub_02019F48
arm_func_start sub_02019FB0
sub_02019FB0: ; 0x02019FB0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #8
ldr r0, _0201A12C ; =0x0380FFF4
ldr r5, _0201A130 ; =0x027F72E0
ldr r0, [r0]
mov r8, #0
add r0, r0, #0x1f8
str r8, [sp]
add r4, r0, #0x400
add r6, sp, #0
mov r7, #2
_02019FDC:
mov r0, r8, lsl #1
mov r1, r7
mov r2, r6
add r0, r0, #0x44
bl sub_02024600
mov r0, r8, lsl #1
ldrh r0, [r5, r0]
add r8, r8, #1
add r0, r0, #0x4800000
ldr r1, [sp]
add r0, r0, #0x8000
strh r1, [r0]
cmp r8, #0x10
blo _02019FDC
ldrh r1, [r4, #2]
ldr r0, _0201A134 ; =0x04808184
mov r2, r1, lsr #7
mov r1, r2, lsl #8
str r1, [sp, #4]
ldrh r1, [r4, #2]
mov r7, #0xce
and r1, r1, #0x7f
orr r1, r1, r2, lsl #8
str r1, [sp, #4]
strh r1, [r0]
ldrh r0, [r4, #2]
ldrh r1, [r4]
and r0, r0, #0x7f
add r2, r0, #7
mov r0, r2, asr #2
add r0, r2, r0, lsr #29
ldrh r8, [r4, #4]
cmp r1, #3
mov r6, r0, asr #3
bne _0201A0CC
add r0, r8, #0xce
add r2, r4, #8
mov r1, #1
bl sub_02024600
mov sb, #0
add r4, sp, #4
mov r6, sb
mov r5, #1
b _0201A0C0
_0201A08C:
str r6, [sp, #4]
mov r0, r7
mov r1, r5
mov r2, r4
bl sub_02024600
mov r0, sb, lsl #8
ldr r1, [sp, #4]
add r0, r0, #0x50000
orr r0, r1, r0
str r0, [sp, #4]
bl sub_02019E10
add sb, sb, #1
add r7, r7, #1
_0201A0C0:
cmp sb, r8
blo _0201A08C
b _0201A120
_0201A0CC:
mov r0, #0
str r0, [sp, #4]
add r5, sp, #4
b _0201A118
_0201A0DC:
mov r0, r7
mov r1, r6
mov r2, r5
bl sub_02024600
ldr r0, [sp, #4]
bl sub_02019E10
ldrh r0, [r4]
sub r8, r8, #1
cmp r0, #2
ldreq r1, [sp, #4]
add r7, r7, r6
moveq r0, r1, lsr #0x12
cmpeq r0, #9
biceq r0, r1, #0x7c00
streq r0, [r4, #0xc]
_0201A118:
cmp r8, #0
bne _0201A0DC
_0201A120:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0201A12C: .word 0x0380FFF4
_0201A130: .word 0x027F72E0
_0201A134: .word 0x04808184
arm_func_end sub_02019FB0
arm_func_start sub_0201A138
sub_0201A138: ; 0x0201A138
stmdb sp!, {r4, lr}
ldr r0, _0201A188 ; =0x0380FFF4
ldr r4, [r0]
bl sub_0302CB80
cmp r0, #0
addeq r0, r4, #0x300
ldreqh r1, [r0, #0x3e]
orreq r1, r1, #0x40
streqh r1, [r0, #0x3e]
beq _0201A180
add r0, r4, #0x208
add r0, r0, #0x400
bl sub_0302CB90
add r0, r4, #0x234
add r0, r0, #0x400
bl sub_0302CB90
add r0, r4, #0x660
bl sub_0302CB90
_0201A180:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201A188: .word 0x0380FFF4
arm_func_end sub_0201A138
arm_func_start sub_0201A18C
sub_0201A18C: ; 0x0201A18C
mov r1, #0
str r1, [r0]
bx lr
arm_func_end sub_0201A18C
arm_func_start sub_0201A198
sub_0201A198: ; 0x0201A198
ldr ip, _0201A1A4 ; =sub_037FB32C
ldr r1, _0201A1A8 ; =0x027EA99C
bx ip
.align 2, 0
_0201A1A4: .word sub_037FB32C
_0201A1A8: .word 0x027EA99C
arm_func_end sub_0201A198
arm_func_start sub_0201A1AC
sub_0201A1AC: ; 0x0201A1AC
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0xc
ldr r2, _0201A234 ; =0x0380FFF4
mov r5, r0
ldr r0, [r2]
mov r4, r1
add r0, r0, #0x208
add r0, r0, #0x400
bl sub_0302CDB0
ldr r0, _0201A238 ; =0x000082EA
mov r1, #0
umull r3, r2, r5, r0
mla r2, r5, r1, r2
mov r5, r1
mla r2, r5, r0, r2
mov r6, r3, lsr #6
orr r6, r6, r2, lsl #26
bl sub_0302CA0C
adds r0, r6, r0
adc r2, r1, #0
mov r1, r0
str r4, [sp, #4]
mov r0, r5
str r0, [sp, #8]
ldr r0, _0201A234 ; =0x0380FFF4
str r5, [sp]
ldr r0, [r0]
mov r3, r6
add r0, r0, #0x208
add r0, r0, #0x400
bl sub_0302CD3C
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, lr}
bx lr
.align 2, 0
_0201A234: .word 0x0380FFF4
_0201A238: .word 0x000082EA
arm_func_end sub_0201A1AC
arm_func_start sub_0201A23C
sub_0201A23C: ; 0x0201A23C
ldr r0, _0201A254 ; =0x0380FFF4
ldr ip, _0201A258 ; =sub_037FD5C0
ldr r0, [r0]
add r0, r0, #0x208
add r0, r0, #0x400
bx ip
.align 2, 0
_0201A254: .word 0x0380FFF4
_0201A258: .word sub_037FD5C0
arm_func_end sub_0201A23C
arm_func_start sub_0201A25C
sub_0201A25C: ; 0x0201A25C
stmdb sp!, {r4, lr}
ldr r1, _0201A2D8 ; =0x0380FFF4
mov r0, #1
ldr r4, [r1]
mov r1, #0xa
ldr r2, [r4, #0x3ec]
add r2, r2, #1
str r2, [r4, #0x3ec]
bl sub_03027D88
mov r0, #2
mov r1, #0x12
bl sub_03027D88
mov r0, #1
mov r1, #0x11
bl sub_03027D88
add r0, r4, #0x100
ldrh r0, [r0, #0xfc]
cmp r0, #0
beq _0201A2B4
mov r0, #2
mov r1, #0x13
bl sub_03027D88
_0201A2B4:
add r0, r4, #0x300
ldrh r0, [r0, #0xf4]
cmp r0, #0
beq _0201A2D0
mov r0, #2
mov r1, #0x15
bl sub_03027D88
_0201A2D0:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201A2D8: .word 0x0380FFF4
arm_func_end sub_0201A25C
arm_func_start sub_0201A2DC
sub_0201A2DC: ; 0x0201A2DC
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _0201A344 ; =0x0380FFF4
mov r5, r0
ldr r0, [r2]
mov r4, r1
add r0, r0, #0x234
add r0, r0, #0x400
bl sub_0302CDB0
mov r3, #0
ldr r0, _0201A348 ; =0x000082EA
mov r1, r3
umull r2, ip, r5, r0
mla ip, r5, r3, ip
mla ip, r1, r0, ip
mov r1, r2, lsr #6
str r3, [sp]
ldr r0, _0201A344 ; =0x0380FFF4
mov r3, r4
ldr r0, [r0]
mov r2, ip, lsr #6
add r0, r0, #0x234
add r0, r0, #0x400
orr r1, r1, ip, lsl #26
bl sub_0302CCCC
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201A344: .word 0x0380FFF4
_0201A348: .word 0x000082EA
arm_func_end sub_0201A2DC
arm_func_start sub_0201A34C
sub_0201A34C: ; 0x0201A34C
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _0201A3C8 ; =0x0380FFF4
mov r5, r0
ldr r0, [r2]
mov r4, r1
add r0, r0, #0x234
add r0, r0, #0x400
bl sub_0302CDB0
ldr r0, _0201A3CC ; =0x000082EA
mov r3, #0
umull ip, r2, r5, r0
mla r2, r5, r3, r2
mov r1, r3
mla r2, r1, r0, r2
mov r0, ip, lsr #6
mov r1, r2, lsr #6
orr r0, r0, r2, lsl #26
mov r2, #0x3e8
bl sub_03036370
mov r2, r1
mov r1, r0
mov r0, #0
str r0, [sp]
ldr r0, _0201A3C8 ; =0x0380FFF4
mov r3, r4
ldr r0, [r0]
add r0, r0, #0x234
add r0, r0, #0x400
bl sub_0302CCCC
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201A3C8: .word 0x0380FFF4
_0201A3CC: .word 0x000082EA
arm_func_end sub_0201A34C
arm_func_start sub_0201A3D0
sub_0201A3D0: ; 0x0201A3D0
ldr r0, _0201A3E8 ; =0x0380FFF4
ldr ip, _0201A3EC ; =sub_037FD5C0
ldr r0, [r0]
add r0, r0, #0x234
add r0, r0, #0x400
bx ip
.align 2, 0
_0201A3E8: .word 0x0380FFF4
_0201A3EC: .word sub_037FD5C0
arm_func_end sub_0201A3D0
arm_func_start sub_0201A3F0
sub_0201A3F0: ; 0x0201A3F0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _0201A464 ; =0x04805F60
add r2, r2, #1
mov r5, r1
bic r2, r2, #1
add r1, r5, r2
cmp r1, r3
mov r6, r0
subhi r4, r3, r5
subhi r7, r2, r4
movls r4, r2
movls r7, #0
mov r0, r5
mov r1, r6
mov r2, r4
bl sub_0302D78C
cmp r7, #0
beq _0201A45C
ldr r0, _0201A468 ; =0x0380FFF4
add r3, r5, r4
ldr r0, [r0]
mov r2, r7
add r0, r0, #0x300
ldrh r0, [r0, #0xde]
add r1, r6, r4
sub r0, r3, r0
bl sub_0302D78C
_0201A45C:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201A464: .word 0x04805F60
_0201A468: .word 0x0380FFF4
arm_func_end sub_0201A3F0
arm_func_start sub_0201A46C
sub_0201A46C: ; 0x0201A46C
ldr ip, _0201A488 ; =sub_037FDF9C
mov r3, r0
add r2, r2, #1
mov r0, r1
mov r1, r3
bic r2, r2, #1
bx ip
.align 2, 0
_0201A488: .word sub_037FDF9C
arm_func_end sub_0201A46C
arm_func_start sub_0201A48C
sub_0201A48C: ; 0x0201A48C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r2
mov r0, r1
mov r4, r3
mov r1, r6
mov r2, #0x24
bl sub_0302D78C
cmp r4, #0
beq _0201A4C8
add r2, r4, #1
mov r0, r5
add r1, r6, #0x24
bic r2, r2, #1
bl sub_0302D78C
_0201A4C8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_0201A48C
arm_func_start sub_0201A4D0
sub_0201A4D0: ; 0x0201A4D0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r2
mov r0, r1
mov r4, r3
mov r1, r6
mov r2, #0x24
bl sub_0302D78C
cmp r4, #0
beq _0201A50C
add r2, r4, #1
mov r0, r5
add r1, r6, #0x28
bic r2, r2, #1
bl sub_0302D78C
_0201A50C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_0201A4D0
arm_func_start sub_0201A514
sub_0201A514: ; 0x0201A514
tst r0, #1
ldrneh r2, [r0, #-1]
andne r2, r2, #0xff
orrne r1, r2, r1, lsl #8
strneh r1, [r0, #-1]
ldreqh r2, [r0]
andeq r1, r1, #0xff
andeq r2, r2, #0xff00
orreq r1, r2, r1
streqh r1, [r0]
bx lr
arm_func_end sub_0201A514
arm_func_start sub_0201A540
sub_0201A540: ; 0x0201A540
tst r0, #1
ldrneh r0, [r0, #-1]
movne r0, r0, asr #8
ldreqh r0, [r0]
and r0, r0, #0xff
and r0, r0, #0xff
bx lr
arm_func_end sub_0201A540
arm_func_start sub_0201A55C
sub_0201A55C: ; 0x0201A55C
ldr r3, _0201A588 ; =0x0380FFF4
ldr r2, _0201A58C ; =0x0000FFF8
ldr r3, [r3]
and r0, r0, r2
add r2, r0, #5
add r0, r3, #0x500
strh r2, [r0, #0xf0]
add r2, r3, #0x5f0
orr r0, r1, #1
strh r0, [r2, #2]
bx lr
.align 2, 0
_0201A588: .word 0x0380FFF4
_0201A58C: .word 0x0000FFF8
arm_func_end sub_0201A55C
arm_func_start sub_0201A590
sub_0201A590: ; 0x0201A590
ldr r1, _0201A5A4 ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x500
strh r0, [r1, #0xf4]
bx lr
.align 2, 0
_0201A5A4: .word 0x0380FFF4
arm_func_end sub_0201A590
arm_func_start sub_0201A5A8
sub_0201A5A8: ; 0x0201A5A8
ldr r0, _0201A5D4 ; =0x0380FFF4
ldr r0, [r0]
add r3, r0, #0x5f0
add r0, r0, #0x500
ldrh r2, [r3, #2]
ldrh r1, [r3, #4]
ldrh r0, [r0, #0xf0]
mla r0, r1, r0, r2
strh r0, [r3, #4]
ldrh r0, [r3, #4]
bx lr
.align 2, 0
_0201A5D4: .word 0x0380FFF4
arm_func_end sub_0201A5A8
arm_func_start sub_0201A5D8
sub_0201A5D8: ; 0x0201A5D8
stmdb sp!, {r4, lr}
ldr r2, _0201A650 ; =0x027F72C0
mov r4, r1, lsl #0x1c
ldr r3, _0201A654 ; =0x00000FFF
mov r4, r4, lsr #0x1b
mov ip, r0, lsl #0x1c
mov lr, ip, lsr #0x1b
and r1, r3, r1, asr #4
ldrh r4, [r2, r4]
mov r1, r1, lsl #0x10
mov r0, r0, asr #4
mov r0, r0, lsl #0x1c
mov ip, r0, lsr #0x1b
ldrh r0, [r2, lr]
eor r1, r4, r1, lsr #16
eor r0, r1, r0
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
mov r0, r1, lsl #0x1c
mov r0, r0, lsr #0x1b
and r1, r3, r1, asr #4
ldrh r3, [r2, r0]
mov r0, r1, lsl #0x10
ldrh r1, [r2, ip]
eor r0, r3, r0, lsr #16
eor r0, r0, r1
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201A650: .word 0x027F72C0
_0201A654: .word 0x00000FFF
arm_func_end sub_0201A5D8
arm_func_start sub_0201A658
sub_0201A658: ; 0x0201A658
stmdb sp!, {r4, lr}
ldr r4, [r0, #8]
ldr r1, _0201A6CC ; =0x0000B6B8
ldrh r2, [r4, #-4]
sub lr, r4, #4
cmp r2, r1
ldreqh r2, [lr, #2]
ldreq r1, _0201A6D0 ; =0x00001D46
cmpeq r2, r1
moveq r0, #0
beq _0201A6C4
ldr r3, _0201A6CC ; =0x0000B6B8
mov ip, #1
strh ip, [r4, #0xa]
ldr r2, _0201A6D0 ; =0x00001D46
strh r3, [lr]
strh r2, [lr, #2]
ldr r1, [r0, #8]
ldr r0, _0201A6D4 ; =0x0380FFF4
strh r3, [r1, #0xc]
strh r2, [r1, #0xe]
ldr r1, [r0]
mov r0, ip
add r1, r1, #0x300
ldrh r2, [r1, #0xfa]
add r2, r2, #1
strh r2, [r1, #0xfa]
_0201A6C4:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201A6CC: .word 0x0000B6B8
_0201A6D0: .word 0x00001D46
_0201A6D4: .word 0x0380FFF4
arm_func_end sub_0201A658
arm_func_start sub_0201A6D8
sub_0201A6D8: ; 0x0201A6D8
ldr r0, _0201A710 ; =0x04808004
mov r1, #0
strh r1, [r0]
mov r2, #0x10
add r1, r0, #0x210
b _0201A704
_0201A6F0:
ldrh r0, [r1]
cmp r0, #0
cmpne r0, #9
bxeq lr
sub r2, r2, #1
_0201A704:
cmp r2, #0
bne _0201A6F0
bx lr
.align 2, 0
_0201A710: .word 0x04808004
arm_func_end sub_0201A6D8
arm_func_start sub_0201A714
sub_0201A714: ; 0x0201A714
stmdb sp!, {r4, lr}
mov r4, r0
ldrh r0, [r4]
cmp r0, #0
beq _0201A754
bl sub_0201A6D8
ldr r1, [r4, #0xc]
ldr r0, [r4, #8]
sub r1, r1, #0x10
bl sub_0201F904
ldr r0, _0201A75C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0xfc]
add r1, r1, #1
strh r1, [r0, #0xfc]
_0201A754:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201A75C: .word 0x0380FFF4
arm_func_end sub_0201A714
arm_func_start sub_0201A760
sub_0201A760: ; 0x0201A760
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0201A854 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x300
ldrh r1, [r0, #0x50]
add r0, r2, #0x2c
cmp r1, #1
add r4, r2, #0x344
add r5, r0, #0x400
beq _0201A798
cmp r1, #2
beq _0201A7CC
cmp r1, #3
b _0201A808
_0201A798:
add r0, r5, #0x78
bl sub_0201A658
cmp r0, #0
beq _0201A7B0
bl sub_0201A6D8
bl sub_020209F4
_0201A7B0:
add r0, r5, #0x28
bl sub_0201A658
cmp r0, #0
beq _0201A808
add r0, r5, #0x28
bl sub_0201A714
b _0201A808
_0201A7CC:
add r0, r5, #0x64
bl sub_0201A658
add r0, r5, #0x28
bl sub_0201A658
cmp r0, #0
beq _0201A808
ldrh r0, [r5, #0x28]
cmp r0, #0
beq _0201A7F4
bl sub_0201A6D8
_0201A7F4:
ldrh r0, [r4, #0x6a]
bl sub_02021740
ldrh r0, [r4, #0xb8]
add r0, r0, #1
strh r0, [r4, #0xb8]
_0201A808:
add r0, r5, #0x14
bl sub_0201A658
cmp r0, #0
beq _0201A820
add r0, r5, #0x14
bl sub_0201A714
_0201A820:
mov r0, r5
bl sub_0201A658
cmp r0, #0
beq _0201A838
mov r0, r5
bl sub_0201A714
_0201A838:
ldr r1, _0201A858 ; =0x04808004
ldrh r0, [r1]
cmp r0, #0
moveq r0, #1
streqh r0, [r1]
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201A854: .word 0x0380FFF4
_0201A858: .word 0x04808004
arm_func_end sub_0201A760
arm_func_start sub_0201A85C
sub_0201A85C: ; 0x0201A85C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x1000000
bl sub_0302B118
ldr r1, _0201A89C ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x300
ldrh r2, [r1, #0xf4]
orr r2, r2, r4
strh r2, [r1, #0xf4]
bl sub_0302B0E0
mov r0, #2
mov r1, #0x15
bl sub_03027D88
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201A89C: .word 0x0380FFF4
arm_func_end sub_0201A85C
arm_func_start sub_0201A8A0
sub_0201A8A0: ; 0x0201A8A0
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0201A918 ; =0x0380FFF4
ldr r1, [r0]
add r4, r1, #0x344
ldrh r0, [r4, #0xb0]
cmp r0, #0
beq _0201A910
add r0, r1, #0x188
mov r1, #0x12
bl sub_0302805C
movs r5, r0
beq _0201A910
ldr r1, _0201A91C ; =0x00000186
mov r0, #1
strh r1, [r5, #0xc]
strh r0, [r5, #0xe]
mov r0, #0x1000000
bl sub_0302B118
ldrh r2, [r4, #0xb0]
mov r1, #0
strh r2, [r5, #0x10]
strh r1, [r4, #0xb0]
bl sub_0302B0E0
ldr r0, _0201A918 ; =0x0380FFF4
mov r1, r5
ldr r0, [r0]
add r0, r0, #0x188
bl sub_03028548
_0201A910:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201A918: .word 0x0380FFF4
_0201A91C: .word 0x00000186
arm_func_end sub_0201A8A0
arm_func_start sub_0201A920
sub_0201A920: ; 0x0201A920
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _0201A9B8 ; =0x0380FFF4
ldr r0, [r2]
add r0, r0, #0x300
ldrh r1, [r0, #0x3e]
orr r1, r1, #0x8000
strh r1, [r0, #0x3e]
ldr r0, [r2]
add r0, r0, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0
beq _0201A98C
bl sub_03028988
ldr r2, _0201A9B8 ; =0x0380FFF4
ldr r0, [r2]
add r0, r0, #0x400
ldrh r1, [r0, #4]
cmp r1, #0
beq _0201A988
mov r1, #0
strh r1, [r0, #4]
ldr r0, [r2]
mov r1, #6
ldr r0, [r0, #0x420]
strh r1, [r0, #4]
bl sub_0201D304
_0201A988:
bl sub_020194E4
_0201A98C:
ldr r4, _0201A9BC ; =0x0000FFFF
mov r5, #3
_0201A994:
mov r0, r5
bl sub_03027E40
cmp r0, r4
bne _0201A994
mov r0, #3
mov r1, #0x17
bl sub_03027D88
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201A9B8: .word 0x0380FFF4
_0201A9BC: .word 0x0000FFFF
arm_func_end sub_0201A920
arm_func_start sub_0201A9C0
sub_0201A9C0: ; 0x0201A9C0
stmdb sp!, {r4, lr}
ldr r0, _0201AA0C ; =0x0380FFF4
ldr r4, [r0]
bl sub_0201B0D0
ldr r1, _0201AA0C ; =0x0380FFF4
add r0, r4, #0x188
ldr r1, [r1]
ldr r1, [r1, #0x318]
sub r1, r1, #0xc
bl sub_030280F8
ldr r1, _0201AA0C ; =0x0380FFF4
add r0, r4, #0x188
ldr r1, [r1]
ldr r1, [r1, #0x3e0]
sub r1, r1, #0xc
bl sub_030280F8
bl sub_0302B94C
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201AA0C: .word 0x0380FFF4
arm_func_end sub_0201A9C0
arm_func_start sub_0201AA10
sub_0201AA10: ; 0x0201AA10
stmdb sp!, {r4, r5, r6, lr}
mov ip, #0
ldr r0, _0201ABA4 ; =0x027F7554
ldr r6, _0201ABA8 ; =0x027F74E4
mov r3, ip
mov r1, ip
b _0201AA84
_0201AA2C:
mov r4, r3, lsl #1
ldrh r5, [r6, r4]
mov r2, r1
b _0201AA78
_0201AA3C:
mov lr, r2, lsl #2
add r4, r0, r2, lsl #2
ldrh lr, [r0, lr]
ldrh r4, [r4, #2]
add lr, lr, #0x4800000
and r4, r5, r4
add lr, lr, #0x8000
strh r4, [lr]
ldrh lr, [lr]
cmp lr, r4
beq _0201AA74
cmp ip, #0x20
add ip, ip, #1
bhi _0201AB7C
_0201AA74:
add r2, r2, #1
_0201AA78:
cmp r2, #0x1b
blo _0201AA3C
add r3, r3, #1
_0201AA84:
cmp r3, #3
blo _0201AA2C
ldr r4, _0201ABAC ; =0x00001234
ldr r3, _0201ABA4 ; =0x027F7554
mov r5, #0
_0201AA98:
mov r0, r5, lsl #2
add r1, r3, r5, lsl #2
ldrh r0, [r3, r0]
ldrh r2, [r1, #2]
add r1, r4, #0x234
add r0, r0, #0x4800000
add r1, r1, #0x1000
add r5, r5, #1
and r2, r4, r2
add r0, r0, #0x8000
mov r1, r1, lsl #0x10
strh r2, [r0]
cmp r5, #0x1b
mov r4, r1, lsr #0x10
blo _0201AA98
ldr r5, _0201ABAC ; =0x00001234
ldr r3, _0201ABA4 ; =0x027F7554
mov r4, #0
b _0201AB2C
_0201AAE4:
mov r0, r4, lsl #2
ldrh r0, [r3, r0]
add r1, r3, r4, lsl #2
add r0, r0, #0x4800000
add r0, r0, #0x8000
ldrh r1, [r1, #2]
ldrh r2, [r0]
and r0, r5, r1
cmp r2, r0
beq _0201AB18
cmp ip, #0x20
add ip, ip, #1
bhi _0201AB7C
_0201AB18:
add r0, r5, #0x234
add r0, r0, #0x1000
mov r0, r0, lsl #0x10
mov r5, r0, lsr #0x10
add r4, r4, #1
_0201AB2C:
cmp r4, #0x1b
blo _0201AAE4
mov r3, #0
ldr r2, _0201ABA4 ; =0x027F7554
mov r1, r3
b _0201AB74
_0201AB44:
mov r0, r3, lsl #2
ldrh r0, [r2, r0]
add r0, r0, #0x4800000
add r0, r0, #0x8000
strh r1, [r0]
ldrh r0, [r0]
cmp r0, #0
beq _0201AB70
cmp ip, #0x20
add ip, ip, #1
bhi _0201AB7C
_0201AB70:
add r3, r3, #1
_0201AB74:
cmp r3, #0x1b
blo _0201AB44
_0201AB7C:
cmp ip, #0
beq _0201AB9C
ldr r0, _0201ABB0 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x3e]
orr r1, r1, #1
strh r1, [r0, #0x3e]
_0201AB9C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201ABA4: .word 0x027F7554
_0201ABA8: .word 0x027F74E4
_0201ABAC: .word 0x00001234
_0201ABB0: .word 0x0380FFF4
arm_func_end sub_0201AA10
arm_func_start sub_0201ABB4
sub_0201ABB4: ; 0x0201ABB4
stmdb sp!, {r3, lr}
ldr lr, _0201AD2C ; =0x04804000
mov r0, #0
ldr r3, _0201AD30 ; =0x0000FFFF
mov r2, r0
_0201ABC8:
sub r1, r3, #1
mov ip, r3
mov r1, r1, lsl #0x10
add r2, r2, #2
cmp r2, #0x2000
mov r3, r1, lsr #0x10
strh ip, [lr], #2
blo _0201ABC8
ldr r2, _0201AD2C ; =0x04804000
ldr r3, _0201AD30 ; =0x0000FFFF
mov ip, #0
b _0201AC24
_0201ABF8:
ldrh r1, [r2]
cmp r1, r3
beq _0201AC10
cmp r0, #0x20
add r0, r0, #1
bhi _0201AD04
_0201AC10:
sub r1, r3, #1
mov r1, r1, lsl #0x10
add ip, ip, #2
add r2, r2, #2
mov r3, r1, lsr #0x10
_0201AC24:
cmp ip, #0x2000
blo _0201ABF8
ldr r2, _0201AD2C ; =0x04804000
ldr r3, _0201AD34 ; =0x00005A5A
mov ip, #0
_0201AC38:
mvn r1, r3
add ip, ip, #2
mov r1, r1, lsl #0x10
strh r3, [r2], #2
cmp ip, #0x2000
mov r3, r1, lsr #0x10
blo _0201AC38
ldr r2, _0201AD2C ; =0x04804000
ldr r3, _0201AD34 ; =0x00005A5A
mov ip, #0
b _0201AC90
_0201AC64:
ldrh r1, [r2]
cmp r1, r3
beq _0201AC7C
cmp r0, #0x20
add r0, r0, #1
bhi _0201AD04
_0201AC7C:
mvn r1, r3
mov r1, r1, lsl #0x10
add ip, ip, #2
add r2, r2, #2
mov r3, r1, lsr #0x10
_0201AC90:
cmp ip, #0x2000
blo _0201AC64
ldr r2, _0201AD2C ; =0x04804000
ldr r3, _0201AD38 ; =0x0000A5A5
mov ip, #0
_0201ACA4:
mvn r1, r3
add ip, ip, #2
mov r1, r1, lsl #0x10
strh r3, [r2], #2
cmp ip, #0x2000
mov r3, r1, lsr #0x10
blo _0201ACA4
ldr r2, _0201AD2C ; =0x04804000
ldr r3, _0201AD38 ; =0x0000A5A5
mov ip, #0
b _0201ACFC
_0201ACD0:
ldrh r1, [r2]
cmp r1, r3
beq _0201ACE8
cmp r0, #0x20
add r0, r0, #1
bhi _0201AD04
_0201ACE8:
mvn r1, r3
mov r1, r1, lsl #0x10
add ip, ip, #2
add r2, r2, #2
mov r3, r1, lsr #0x10
_0201ACFC:
cmp ip, #0x2000
blo _0201ACD0
_0201AD04:
cmp r0, #0
beq _0201AD24
ldr r0, _0201AD3C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x3e]
orr r1, r1, #2
strh r1, [r0, #0x3e]
_0201AD24:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201AD2C: .word 0x04804000
_0201AD30: .word 0x0000FFFF
_0201AD34: .word 0x00005A5A
_0201AD38: .word 0x0000A5A5
_0201AD3C: .word 0x0380FFF4
arm_func_end sub_0201ABB4
arm_func_start sub_0201AD40
sub_0201AD40: ; 0x0201AD40
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r0, _0201B014 ; =0x0380FFF4
mov r7, #0
ldr r0, [r0]
mov r6, #0
add r0, r0, #0x500
ldrh r0, [r0, #0xf8]
mov r5, #0xff
cmp r0, #5
ldreq sl, _0201B018 ; =0x027F74EA
mvn r4, #0
ldrne sl, _0201B01C ; =0x027F751C
b _0201AD90
_0201AD74:
mov r0, r6
mov r1, r5
bl sub_02019DE0
cmp r0, r4
moveq r7, #1
beq _0201AFEC
add r6, r6, #1
_0201AD90:
cmp r6, #0x69
blo _0201AD74
mov r5, #0
mov r4, r5
b _0201ADE0
_0201ADA4:
mov r0, r4, lsl #1
ldrh r0, [sl, r0]
cmp r5, r0
addeq r4, r4, #1
beq _0201ADDC
mov r0, r5
bl sub_02019DB4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #0xff
beq _0201ADDC
cmp r7, #0x20
add r7, r7, #1
bhi _0201AFEC
_0201ADDC:
add r5, r5, #1
_0201ADE0:
cmp r5, #0x69
blo _0201ADA4
mov r5, #0
mov r4, r5
_0201ADF0:
mov r0, r5
mov r1, r4
bl sub_02019DE0
add r5, r5, #1
cmp r5, #0x69
blo _0201ADF0
mov r4, #0
mov r5, r4
b _0201AE4C
_0201AE14:
mov r0, r5, lsl #1
ldrh r0, [sl, r0]
cmp r4, r0
addeq r5, r5, #1
beq _0201AE48
mov r0, r4
bl sub_02019DB4
mov r0, r0, lsl #0x10
movs r0, r0, lsr #0x10
beq _0201AE48
cmp r7, #0x20
add r7, r7, #1
bhi _0201AFEC
_0201AE48:
add r4, r4, #1
_0201AE4C:
cmp r4, #0x69
blo _0201AE14
mov r4, #0x55
mov r5, #0
_0201AE5C:
mov r0, r5
mov r1, r4
bl sub_02019DE0
mvn r0, r4
add r5, r5, #1
mov r0, r0, lsl #0x10
cmp r5, #0x69
mov r4, r0, lsr #0x10
blo _0201AE5C
mov r4, #0
mov r6, r4
mov r5, #0x55
b _0201AED4
_0201AE90:
mov r0, r6, lsl #1
ldrh r0, [sl, r0]
cmp r4, r0
addeq r6, r6, #1
beq _0201AEC8
mov r0, r4
bl sub_02019DB4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, r5
beq _0201AEC8
cmp r7, #0x20
add r7, r7, #1
bhi _0201AFEC
_0201AEC8:
mvn r0, r5
and r5, r0, #0xff
add r4, r4, #1
_0201AED4:
cmp r4, #0x69
blo _0201AE90
mov r5, #0xff
mov r4, #0
_0201AEE4:
mov r0, r4
mov r1, r5
bl sub_02019DE0
sub r0, r5, #1
add r4, r4, #1
mov r0, r0, lsl #0x10
cmp r4, #0x69
mov r5, r0, lsr #0x10
blo _0201AEE4
mov r4, #0
mov r6, r4
mov r5, #0xff
b _0201AF60
_0201AF18:
mov r0, r6, lsl #1
ldrh r0, [sl, r0]
cmp r4, r0
addeq r6, r6, #1
beq _0201AF50
mov r0, r4
bl sub_02019DB4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, r5
beq _0201AF50
cmp r7, #0x20
add r7, r7, #1
bhi _0201AFEC
_0201AF50:
sub r0, r5, #1
mov r0, r0, lsl #0x10
add r4, r4, #1
mov r5, r0, lsr #0x10
_0201AF60:
cmp r4, #0x69
blo _0201AF18
mov r8, #0
mov sb, r8
mov r4, #1
mov fp, r8
b _0201AFE4
_0201AF7C:
mov r0, sb, lsl #1
ldrh r0, [sl, r0]
cmp r8, r0
addeq sb, sb, #1
beq _0201AFE0
mov r6, r4
mov r5, fp
b _0201AFD8
_0201AF9C:
mov r0, r8
mov r1, r6
bl sub_02019DE0
mov r0, r8
bl sub_02019DB4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, r6
beq _0201AFCC
cmp r7, #0x20
add r7, r7, #1
bhi _0201AFEC
_0201AFCC:
mov r0, r6, lsl #1
and r6, r0, #0xff
add r5, r5, #1
_0201AFD8:
cmp r5, #9
blo _0201AF9C
_0201AFE0:
add r8, r8, #1
_0201AFE4:
cmp r8, #0x69
blo _0201AF7C
_0201AFEC:
cmp r7, #0
beq _0201B00C
ldr r0, _0201B014 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x3e]
orr r1, r1, #8
strh r1, [r0, #0x3e]
_0201B00C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0201B014: .word 0x0380FFF4
_0201B018: .word 0x027F74EA
_0201B01C: .word 0x027F751C
arm_func_end sub_0201AD40
arm_func_start sub_0201B020
sub_0201B020: ; 0x0201B020
ldr r0, _0201B030 ; =0x04808010
mov r1, #0x800
strh r1, [r0]
bx lr
.align 2, 0
_0201B030: .word 0x04808010
arm_func_end sub_0201B020
arm_func_start sub_0201B034
sub_0201B034: ; 0x0201B034
stmdb sp!, {r4, lr}
ldrh r1, [r0]
mov r4, #0
cmp r1, #2
bne _0201B074
ldr r2, _0201B0A4 ; =0x04808094
ldr r3, [r0, #8]
ldr r1, _0201B0A8 ; =0x00003FFF
ldrh r2, [r2]
and r1, r3, r1
mov r1, r1, lsr #1
orr r1, r1, #0x8000
cmp r1, r2
movne r1, #1
strneh r1, [r0]
orrne r4, r4, #1
_0201B074:
ldrh r1, [r0]
cmp r1, #1
bne _0201B098
ldr r1, [r0, #8]
ldrh r1, [r1]
tst r1, #1
beq _0201B098
bl sub_020202A8
orr r4, r4, #2
_0201B098:
mov r0, r4
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201B0A4: .word 0x04808094
_0201B0A8: .word 0x00003FFF
arm_func_end sub_0201B034
arm_func_start sub_0201B0AC
sub_0201B0AC: ; 0x0201B0AC
stmdb sp!, {r3, lr}
ldr r1, _0201B0CC ; =0x037F92DC
mov r0, #0x1000000
bl sub_0302AFAC
mov r0, #0x1000000
bl sub_0302B0E0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201B0CC: .word 0x037F92DC
arm_func_end sub_0201B0AC
arm_func_start sub_0201B0D0
sub_0201B0D0: ; 0x0201B0D0
stmdb sp!, {r3, lr}
mov r0, #0x1000000
bl sub_0302B118
mov r0, #0x1000000
mov r1, #0
bl sub_0302AFAC
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_0201B0D0
arm_func_start sub_0201B0F0
sub_0201B0F0: ; 0x0201B0F0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldrh r0, [r8]
tst r0, #1
movne r0, #0
bne _0201B18C
ldr r4, _0201B194 ; =0x0380FFF4
ldr r0, [r4]
add r1, r0, #0x500
ldrh r1, [r1, #0x2c]
cmp r1, #1
bls _0201B188
ldr r1, [r0, #0x31c]
mov r7, #0
add r5, r1, #0x1c
mov r6, #1
b _0201B178
_0201B134:
ldrh r1, [r5]
cmp r1, #0
beq _0201B170
mov r1, r8
add r0, r5, #4
bl sub_02019C64
cmp r0, #0
movne r0, r6
bne _0201B18C
ldr r0, [r4]
add r7, r7, #1
add r1, r0, #0x500
ldrh r1, [r1, #0x2c]
cmp r7, r1
bhs _0201B188
_0201B170:
add r6, r6, #1
add r5, r5, #0x1c
_0201B178:
add r1, r0, #0x300
ldrh r1, [r1, #0x22]
cmp r6, r1
blo _0201B134
_0201B188:
mov r0, #0xff
_0201B18C:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_0201B194: .word 0x0380FFF4
arm_func_end sub_0201B0F0
arm_func_start sub_0201B198
sub_0201B198: ; 0x0201B198
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r5, _0201B2D4 ; =0x0380FFF4
mov r4, r0
ldr r0, [r5]
ldrh r1, [r4]
add r6, r0, #0x31c
tst r1, #1
movne r0, #0
bne _0201B2CC
add r1, r0, #0x500
ldrh r1, [r1, #0x2c]
mov r8, #1
cmp r1, #1
bls _0201B248
ldr r1, [r6]
mov sl, #0
mov sb, sl
add r7, r1, #0x1c
b _0201B234
_0201B1E4:
ldrh r1, [r7]
cmp r1, #0
beq _0201B224
mov r1, r4
add r0, r7, #4
bl sub_02019C64
cmp r0, #0
movne r0, r8
bne _0201B2CC
ldr r0, [r5]
add sb, sb, #1
add r1, r0, #0x500
ldrh r1, [r1, #0x2c]
cmp sb, r1
bhs _0201B240
b _0201B22C
_0201B224:
cmp sl, #0
moveq sl, r8
_0201B22C:
add r8, r8, #1
add r7, r7, #0x1c
_0201B234:
ldrh r1, [r6, #6]
cmp r8, r1
blo _0201B1E4
_0201B240:
cmp sl, #0
movne r8, sl
_0201B248:
add r0, r0, #0x300
ldrh r0, [r0, #0x22]
cmp r8, r0
blo _0201B2BC
ldr r7, [r6]
ldrh r5, [r6, #6]
mov r3, #0x10000
mov r6, #1
mov r8, #0
mov r0, #0x1c
b _0201B2A8
_0201B274:
mul r2, r6, r0
ldrh r1, [r7, r2]
add r2, r7, r2
cmp r1, #0x30
bhs _0201B2A4
ldrh r1, [r2, #0x16]
cmp r1, #0
bne _0201B2A4
ldrh r1, [r2, #0x18]
cmp r3, r1
movhi r3, r1
movhi r8, r6
_0201B2A4:
add r6, r6, #1
_0201B2A8:
cmp r6, r5
blo _0201B274
cmp r8, #0
moveq r0, #0xff
beq _0201B2CC
_0201B2BC:
mov r0, r8
mov r1, r4
bl sub_0201BD88
mov r0, r8
_0201B2CC:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_0201B2D4: .word 0x0380FFF4
arm_func_end sub_0201B198
arm_func_start sub_0201B2D8
sub_0201B2D8: ; 0x0201B2D8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _0201B330 ; =0x0380FFF4
mov r7, r0
ldr r2, [r2]
mov r0, #0x1000000
add r4, r2, #0x1ac
mov r6, r1
bl sub_0302B118
ldrh r1, [r4, #8]
mov r5, r0
cmp r1, #0
bne _0201B310
mov r0, #0
bl sub_0201B8FC
_0201B310:
mov r0, r7
mov r1, r4
mov r2, r6
bl sub_03028178
mov r0, r5
bl sub_0302B0E0
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201B330: .word 0x0380FFF4
arm_func_end sub_0201B2D8
arm_func_start sub_0201B334
sub_0201B334: ; 0x0201B334
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _0201B3C0 ; =0x0380FFF4
ldrh r5, [r0, #2]
ldr r0, [r1]
mov r1, #0x1c
ldr r2, [r0, #0x31c]
mov r0, #0x1000000
mla r6, r5, r1, r2
bl sub_0302B118
ldr r1, _0201B3C0 ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
add r0, r0, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #1
ldreqh r0, [r6, #0x16]
cmpeq r0, #0
bne _0201B384
mov r0, r5
bl sub_0201B8FC
_0201B384:
ldrh r1, [r6, #0x16]
mov r0, r4
add r1, r1, #1
strh r1, [r6, #0x16]
bl sub_0302B0E0
ldr r0, _0201B3C0 ; =0x0380FFF4
mov r1, #1
ldr r0, [r0]
add r0, r0, #0x500
ldrh r0, [r0, #0x34]
tst r0, r1, lsl r5
ldreqh r0, [r6, #0x1a]
streqh r0, [r6, #0x18]
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201B3C0: .word 0x0380FFF4
arm_func_end sub_0201B334
arm_func_start sub_0201B3C4
sub_0201B3C4: ; 0x0201B3C4
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _0201B430 ; =0x0380FFF4
ldrh r5, [r0, #2]
ldr r0, [r1]
mov r1, #0x1c
ldr r2, [r0, #0x31c]
mov r0, #0x1000000
mla r6, r5, r1, r2
bl sub_0302B118
ldr r1, _0201B430 ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
add r0, r0, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #1
ldreqh r0, [r6, #0x16]
cmpeq r0, #1
bne _0201B414
mov r0, r5
bl sub_0201B9B8
_0201B414:
ldrh r1, [r6, #0x16]
mov r0, r4
sub r1, r1, #1
strh r1, [r6, #0x16]
bl sub_0302B0E0
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201B430: .word 0x0380FFF4
arm_func_end sub_0201B3C4
arm_func_start sub_0201B434
sub_0201B434: ; 0x0201B434
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #0x1000000
mov r5, r1
bl sub_0302B118
ldr r3, _0201B518 ; =0x0380FFF4
mov r4, r0
cmp r5, #0x40
bhs _0201B4B4
ldr r0, [r3]
mov r2, #1
add r0, r0, #0x500
ldrh r1, [r0, #0x30]
orr r1, r1, r2, lsl r6
strh r1, [r0, #0x30]
ldr r0, [r3]
add r0, r0, #0x500
ldrh r1, [r0, #0x32]
orr r1, r1, r2, lsl r6
strh r1, [r0, #0x32]
ldr r0, [r3]
add r0, r0, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #1
bne _0201B4F0
mov r0, r6
bl sub_0201B8BC
cmp r0, #0
beq _0201B4F0
mov r0, r6
bl sub_0201B750
b _0201B4F0
_0201B4B4:
ldr r2, [r3]
mov r0, #1
mvn r1, r0, lsl r6
add r0, r2, #0x500
ldrh r2, [r0, #0x32]
and r1, r2, r1
strh r1, [r0, #0x32]
ldr r0, [r3]
add r0, r0, #0x500
ldrh r0, [r0, #0x2e]
mov r0, r0, asr r6
tst r0, #1
beq _0201B4F0
mov r0, r6
bl sub_0201B598
_0201B4F0:
ldr r1, _0201B518 ; =0x0380FFF4
mov r0, #0x1c
ldr r2, [r1]
mul r1, r6, r0
ldr r2, [r2, #0x31c]
mov r0, r4
strh r5, [r2, r1]
bl sub_0302B0E0
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201B518: .word 0x0380FFF4
arm_func_end sub_0201B434
arm_func_start sub_0201B51C
sub_0201B51C: ; 0x0201B51C
ldr r3, _0201B538 ; =0x0380FFF4
mov r2, #0x1c
ldr r3, [r3]
ldr r3, [r3, #0x31c]
mla r2, r0, r2, r3
strh r1, [r2, #0xa]
bx lr
.align 2, 0
_0201B538: .word 0x0380FFF4
arm_func_end sub_0201B51C
arm_func_start sub_0201B53C
sub_0201B53C: ; 0x0201B53C
ldr r3, _0201B58C ; =0x0380FFF4
mov r2, #1
ldr ip, [r3]
mvn r3, r2, lsl r0
add r2, ip, #0x12c
add ip, r2, #0x400
ldrh r2, [ip, #2]
and r2, r2, r3
orr r0, r2, r1, lsl r0
strh r0, [ip, #2]
ldrh r0, [ip, #6]
ldrh r1, [ip, #2]
mvn r0, r0
tst r1, r0
ldrne r0, _0201B590 ; =0x048080AC
mov r1, #8
strneh r1, [r0]
ldreq r0, _0201B594 ; =0x048080AE
streqh r1, [r0]
bx lr
.align 2, 0
_0201B58C: .word 0x0380FFF4
_0201B590: .word 0x048080AC
_0201B594: .word 0x048080AE
arm_func_end sub_0201B53C
arm_func_start sub_0201B598
sub_0201B598: ; 0x0201B598
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_0201B7D0
cmp r0, #0x40
bne _0201B5CC
ldr r1, _0201B5D4 ; =0x0380FFF4
mov r0, #1
ldr r2, [r1]
mvn r1, r0, lsl r4
add r0, r2, #0x500
ldrh r2, [r0, #0x30]
and r1, r2, r1
strh r1, [r0, #0x30]
_0201B5CC:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201B5D4: .word 0x0380FFF4
arm_func_end sub_0201B598
arm_func_start sub_0201B5D8
sub_0201B5D8: ; 0x0201B5D8
ldr r1, _0201B5F8 ; =0x0380FFF4
mov r2, #1
ldr r1, [r1]
add r1, r1, #0x500
ldrh r3, [r1, #0x30]
orr r0, r3, r2, lsl r0
strh r0, [r1, #0x30]
bx lr
.align 2, 0
_0201B5F8: .word 0x0380FFF4
arm_func_end sub_0201B5D8
arm_func_start sub_0201B5FC
sub_0201B5FC: ; 0x0201B5FC
ldr r3, _0201B618 ; =0x0380FFF4
mov r2, #0x1c
ldr r3, [r3]
ldr r3, [r3, #0x31c]
mla r2, r0, r2, r3
strh r1, [r2, #0xc]
bx lr
.align 2, 0
_0201B618: .word 0x0380FFF4
arm_func_end sub_0201B5FC
arm_func_start sub_0201B61C
sub_0201B61C: ; 0x0201B61C
ldr r3, _0201B638 ; =0x0380FFF4
mov r2, #0x1c
ldr r3, [r3]
ldr r3, [r3, #0x31c]
mla r2, r0, r2, r3
strh r1, [r2, #0x10]
bx lr
.align 2, 0
_0201B638: .word 0x0380FFF4
arm_func_end sub_0201B61C
arm_func_start sub_0201B63C
sub_0201B63C: ; 0x0201B63C
ldr r3, _0201B658 ; =0x0380FFF4
mov r2, #0x1c
ldr r3, [r3]
ldr r3, [r3, #0x31c]
mla r2, r0, r2, r3
strh r1, [r2, #0x14]
bx lr
.align 2, 0
_0201B658: .word 0x0380FFF4
arm_func_end sub_0201B63C
arm_func_start sub_0201B65C
sub_0201B65C: ; 0x0201B65C
ldr r3, _0201B678 ; =0x0380FFF4
mov r2, #0x1c
ldr r3, [r3]
ldr r3, [r3, #0x31c]
mla r2, r0, r2, r3
strh r1, [r2, #0xe]
bx lr
.align 2, 0
_0201B678: .word 0x0380FFF4
arm_func_end sub_0201B65C
arm_func_start sub_0201B67C
sub_0201B67C: ; 0x0201B67C
ldr r2, _0201B69C ; =0x0380FFF4
mov r1, #0x1c
ldr r2, [r2]
ldr r2, [r2, #0x31c]
mla r1, r0, r1, r2
ldrh r0, [r1, #0x1a]
strh r0, [r1, #0x18]
bx lr
.align 2, 0
_0201B69C: .word 0x0380FFF4
arm_func_end sub_0201B67C
arm_func_start sub_0201B6A0
sub_0201B6A0: ; 0x0201B6A0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _0201B74C ; =0x0380FFF4
mov r7, r0
ldr r1, [r1]
mov r0, #0x1000000
add r1, r1, #0x12c
add r4, r1, #0x400
bl sub_0302B118
mov r6, r0
mov r5, #1
mov r1, #2
b _0201B730
_0201B6D0:
ldrh r0, [r4, #0xe]
tst r0, r1
bne _0201B728
orr r0, r0, r1
strh r0, [r4, #0xe]
ldrh r0, [r4, #0xc]
add r0, r0, #1
strh r0, [r4, #0xc]
ldrh r0, [r4, #0xc]
cmp r0, #1
bne _0201B700
bl sub_020196D0
_0201B700:
ldr r0, _0201B74C ; =0x0380FFF4
mov r1, #0x1c
ldr r2, [r0]
mov r0, r6
ldr r2, [r2, #0x31c]
mla r1, r7, r1, r2
strh r5, [r1, #2]
bl sub_0302B0E0
mov r0, r5
b _0201B744
_0201B728:
add r5, r5, #1
mov r1, r1, lsl #1
_0201B730:
cmp r5, #0x10
blo _0201B6D0
mov r0, r6
bl sub_0302B0E0
mov r0, #0
_0201B744:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201B74C: .word 0x0380FFF4
arm_func_end sub_0201B6A0
arm_func_start sub_0201B750
sub_0201B750: ; 0x0201B750
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _0201B7CC ; =0x0380FFF4
mov r5, r0
ldr r4, [r1]
bl sub_0201B9B8
mov r0, r5
bl sub_0201B8BC
cmp r0, #0
beq _0201B7C4
ldr r1, _0201B7CC ; =0x0380FFF4
mov r2, #1
ldr r3, [r1]
mov r1, #0x1c
ldr r3, [r3, #0x31c]
mov ip, #0
mla r1, r5, r1, r3
strh ip, [r1, #2]
add r1, r4, #0x500
ldrh r3, [r1, #0x3a]
mvn r0, r2, lsl r0
and r0, r3, r0
strh r0, [r1, #0x3a]
ldrh r0, [r1, #0x38]
sub r0, r0, #1
strh r0, [r1, #0x38]
ldrh r0, [r1, #0x38]
cmp r0, #0
bne _0201B7C4
bl sub_02019684
_0201B7C4:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201B7CC: .word 0x0380FFF4
arm_func_end sub_0201B750
arm_func_start sub_0201B7D0
sub_0201B7D0: ; 0x0201B7D0
ldr r2, _0201B7EC ; =0x0380FFF4
mov r1, #0x1c
ldr r2, [r2]
mul r1, r0, r1
ldr r0, [r2, #0x31c]
ldrh r0, [r0, r1]
bx lr
.align 2, 0
_0201B7EC: .word 0x0380FFF4
arm_func_end sub_0201B7D0
arm_func_start sub_0201B7F0
sub_0201B7F0: ; 0x0201B7F0
ldr r1, _0201B80C ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x500
ldrh r1, [r1, #0x30]
mov r0, r1, asr r0
and r0, r0, #1
bx lr
.align 2, 0
_0201B80C: .word 0x0380FFF4
arm_func_end sub_0201B7F0
arm_func_start sub_0201B810
sub_0201B810: ; 0x0201B810
ldr r1, _0201B82C ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x500
ldrh r1, [r1, #0x2e]
mov r0, r1, asr r0
and r0, r0, #1
bx lr
.align 2, 0
_0201B82C: .word 0x0380FFF4
arm_func_end sub_0201B810
arm_func_start sub_0201B830
sub_0201B830: ; 0x0201B830
ldr r2, _0201B84C ; =0x0380FFF4
mov r1, #0x1c
ldr r2, [r2]
ldr r2, [r2, #0x31c]
mla r1, r0, r1, r2
add r0, r1, #4
bx lr
.align 2, 0
_0201B84C: .word 0x0380FFF4
arm_func_end sub_0201B830
arm_func_start sub_0201B850
sub_0201B850: ; 0x0201B850
ldr r2, _0201B86C ; =0x0380FFF4
mov r1, #0x1c
ldr r2, [r2]
ldr r2, [r2, #0x31c]
mla r1, r0, r1, r2
ldrh r0, [r1, #0xe]
bx lr
.align 2, 0
_0201B86C: .word 0x0380FFF4
arm_func_end sub_0201B850
arm_func_start sub_0201B870
sub_0201B870: ; 0x0201B870
ldr r2, _0201B88C ; =0x0380FFF4
mov r1, #0x1c
ldr r2, [r2]
ldr r2, [r2, #0x31c]
mla r1, r0, r1, r2
ldrh r0, [r1, #0x14]
bx lr
.align 2, 0
_0201B88C: .word 0x0380FFF4
arm_func_end sub_0201B870
arm_func_start sub_0201B890
sub_0201B890: ; 0x0201B890
ldr r2, _0201B8B8 ; =0x0380FFF4
mov r1, #0x1c
ldr r2, [r2]
ldr r2, [r2, #0x31c]
mla r1, r0, r1, r2
ldrh r0, [r1, #0x10]
tst r0, #2
movne r0, #0x14
moveq r0, #0xa
bx lr
.align 2, 0
_0201B8B8: .word 0x0380FFF4
arm_func_end sub_0201B890
arm_func_start sub_0201B8BC
sub_0201B8BC: ; 0x0201B8BC
ldr r2, _0201B8D8 ; =0x0380FFF4
mov r1, #0x1c
ldr r2, [r2]
ldr r2, [r2, #0x31c]
mla r1, r0, r1, r2
ldrh r0, [r1, #2]
bx lr
.align 2, 0
_0201B8D8: .word 0x0380FFF4
arm_func_end sub_0201B8BC
arm_func_start sub_0201B8DC
sub_0201B8DC: ; 0x0201B8DC
ldr r2, _0201B8F8 ; =0x0380FFF4
mov r1, #0x1c
ldr r2, [r2]
ldr r2, [r2, #0x31c]
mla r1, r0, r1, r2
ldrh r0, [r1, #0x16]
bx lr
.align 2, 0
_0201B8F8: .word 0x0380FFF4
arm_func_end sub_0201B8DC
arm_func_start sub_0201B8FC
sub_0201B8FC: ; 0x0201B8FC
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
bl sub_0201B7D0
cmp r0, #0x40
bne _0201B9A8
ldr r0, _0201B9B0 ; =0x0380FFF4
mov r1, #1
ldr r2, [r0]
add r0, r2, #0x500
ldrh r0, [r0, #0x34]
tst r0, r1, lsl r5
bne _0201B9A8
add r0, r2, #0x300
ldrh r2, [r0, #0xd8]
ldr r1, _0201B9B4 ; =0x0480425C
mov r0, #0x1000000
add r6, r2, r1
bl sub_0302B118
mov r4, r0
cmp r5, #0
bne _0201B96C
add r0, r6, #4
bl sub_0201A540
orr r1, r0, #1
add r0, r6, #4
and r1, r1, #0xff
bl sub_0201A514
b _0201B9A0
_0201B96C:
mov r0, r5
bl sub_0201B8BC
mov r5, r0
add r0, r6, #5
add r6, r0, r5, lsr #3
mov r0, r6
bl sub_0201A540
and r1, r5, #7
mov r2, #1
orr r1, r0, r2, lsl r1
mov r0, r6
and r1, r1, #0xff
bl sub_0201A514
_0201B9A0:
mov r0, r4
bl sub_0302B0E0
_0201B9A8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201B9B0: .word 0x0380FFF4
_0201B9B4: .word 0x0480425C
arm_func_end sub_0201B8FC
arm_func_start sub_0201B9B8
sub_0201B9B8: ; 0x0201B9B8
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
bl sub_0201B7D0
cmp r0, #0x40
bne _0201BA54
ldr r0, _0201BA5C ; =0x0380FFF4
ldr r2, _0201BA60 ; =0x0480425C
ldr r1, [r0]
mov r0, #0x1000000
add r1, r1, #0x300
ldrh r1, [r1, #0xd8]
add r6, r1, r2
bl sub_0302B118
mov r4, r0
cmp r5, #0
bne _0201BA14
add r0, r6, #4
bl sub_0201A540
and r1, r0, #0xfe
add r0, r6, #4
and r1, r1, #0xff
bl sub_0201A514
b _0201BA4C
_0201BA14:
mov r0, r5
bl sub_0201B8BC
mov r5, r0
add r0, r6, #5
add r6, r0, r5, lsr #3
mov r0, r6
bl sub_0201A540
and r1, r5, #7
mov r2, #1
mvn r1, r2, lsl r1
and r1, r1, r0
mov r0, r6
and r1, r1, #0xff
bl sub_0201A514
_0201BA4C:
mov r0, r4
bl sub_0302B0E0
_0201BA54:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201BA5C: .word 0x0380FFF4
_0201BA60: .word 0x0480425C
arm_func_end sub_0201B9B8
arm_func_start sub_0201BA64
sub_0201BA64: ; 0x0201BA64
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr fp, _0201BC14 ; =0x0380FFF4
mov sb, #0
ldr r2, [fp]
mov r8, #1
ldr r1, [r2, #0x31c]
add r0, r2, #0x500
ldrh sl, [r0, #0x2c]
add r0, r2, #0x12c
add r7, r1, #0x1c
add r5, r0, #0x400
add r4, r2, #0x300
b _0201BC00
_0201BA98:
ldrh r0, [r7]
cmp r0, #0
beq _0201BBF0
ldrh r1, [r7, #0x18]
cmp r1, #0
ldrne r0, _0201BC18 ; =0x0000FFFF
cmpne r1, r0
beq _0201BBEC
sub r0, r1, #1
strh r0, [r7, #0x18]
ldrh r0, [r7, #0x18]
cmp r0, #0
bne _0201BBEC
ldrh r0, [r7]
cmp r0, #0x20
blo _0201BBD8
mov r0, r8
bl sub_0201B7D0
mov r6, r0
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_0201B434
mov r0, r8
bl sub_02020550
ldrh r0, [r4, #0x50]
cmp r0, #1
bne _0201BB88
cmp r6, #0x20
bls _0201BBD8
ldr r1, [fp]
mov r0, r8, lsl #0x10
add r3, r1, #0x500
ldrh r6, [r3, #0x34]
mov r2, #1
orr r2, r6, r2, lsl r8
strh r2, [r3, #0x34]
mov r0, r0, lsr #0x10
mov r1, #0
bl sub_0201B53C
ldr r1, [fp]
add r0, r7, #4
add r3, r1, #0x500
mov r1, #1
ldrh r6, [r3, #0x30]
mov r2, r1
orr r2, r6, r2, lsl r8
strh r2, [r3, #0x30]
mov r2, #0
bl sub_020216AC
cmp r0, #0
mov r1, #1
beq _0201BB7C
strh r1, [r0]
bl sub_0202086C
add sb, sb, #1
b _0201BBF8
_0201BB7C:
add r0, r7, #4
bl sub_0201D3D4
b _0201BBD8
_0201BB88:
ldrh r0, [r4, #0xcc]
cmp r8, r0
bne _0201BBD8
add r0, r7, #4
mov r1, #1
mov r2, #0
bl sub_020216AC
cmp r0, #0
beq _0201BBC0
mov r1, #1
strh r1, [r0]
bl sub_0202086C
add sb, sb, #1
b _0201BBF8
_0201BBC0:
mov r0, #0x20
bl sub_03028A28
bl sub_0201982C
add r0, r7, #4
mov r1, #1
bl sub_0201D3D4
_0201BBD8:
mov r0, #0
strh r0, [r7]
ldrh r0, [r5]
sub r0, r0, #1
strh r0, [r5]
_0201BBEC:
add sb, sb, #1
_0201BBF0:
cmp sb, sl
bhs _0201BC0C
_0201BBF8:
add r8, r8, #1
add r7, r7, #0x1c
_0201BC00:
ldrh r0, [r4, #0x22]
cmp r8, r0
blo _0201BA98
_0201BC0C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0201BC14: .word 0x0380FFF4
_0201BC18: .word 0x0000FFFF
arm_func_end sub_0201BA64
arm_func_start sub_0201BC1C
sub_0201BC1C: ; 0x0201BC1C
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02020550
ldr r2, _0201BC60 ; =0x0380FFF4
mov r0, #0x1c
ldr r1, [r2]
mul r0, r4, r0
ldr r1, [r1, #0x31c]
mov r3, #0
strh r3, [r1, r0]
ldr r0, [r2]
add r0, r0, #0x500
ldrh r1, [r0, #0x2c]
sub r1, r1, #1
strh r1, [r0, #0x2c]
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201BC60: .word 0x0380FFF4
arm_func_end sub_0201BC1C
arm_func_start sub_0201BC64
sub_0201BC64: ; 0x0201BC64
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0201BCF4 ; =0x0380FFF4
mov r2, #0x1c
ldr r3, [r0]
mov r0, #0
add r1, r3, #0x300
ldrh r5, [r1, #0x22]
ldr r4, [r3, #0x31c]
mul r2, r5, r2
mov r1, r4
bl sub_0302D764
ldr r1, _0201BCF4 ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
mov r2, #0x10
add r1, r1, #0x12c
add r1, r1, #0x400
bl sub_0302D764
ldr r2, _0201BCF8 ; =0x0000FFFF
mov r3, #1
strh r2, [r4, #0x1a]
mov r0, #0x1c
b _0201BCCC
_0201BCC0:
mla r1, r3, r0, r4
strh r2, [r1, #0x1a]
add r3, r3, #1
_0201BCCC:
cmp r3, r5
blo _0201BCC0
ldr r1, _0201BCFC ; =0x027F74A4
mov r0, #0
bl sub_0201BD88
mov r0, #0
mov r1, #0x40
bl sub_0201B434
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201BCF4: .word 0x0380FFF4
_0201BCF8: .word 0x0000FFFF
_0201BCFC: .word 0x027F74A4
arm_func_end sub_0201BC64
arm_func_start sub_0201BD00
sub_0201BD00: ; 0x0201BD00
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r0, _0201BD80 ; =0x0380FFF4
mov r6, #1
ldr r2, [r0]
mov sl, #0
add r1, r2, #0x300
add r0, r2, #0x12c
ldr r4, [r2, #0x31c]
ldrh r7, [r1, #0x22]
add r5, r0, #0x400
mov sb, #0x1a
mov r8, #0x1c
b _0201BD48
_0201BD34:
mla r1, r6, r8, r4
mov r0, sl
mov r2, sb
bl sub_0302D764
add r6, r6, #1
_0201BD48:
cmp r6, r7
blo _0201BD34
mov r2, #1
strh r2, [r5]
mov r1, #0
strh r1, [r5, #2]
ldr r0, _0201BD84 ; =0x0000FFFE
strh r2, [r5, #4]
strh r0, [r5, #6]
strh r1, [r5, #0xc]
strh r1, [r5, #8]
strh r2, [r5, #0xe]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_0201BD80: .word 0x0380FFF4
_0201BD84: .word 0x0000FFFE
arm_func_end sub_0201BD00
arm_func_start sub_0201BD88
sub_0201BD88: ; 0x0201BD88
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _0201BE64 ; =0x0380FFF4
mov r7, r0
ldr r4, [r2]
mov r0, #0x1c
mul r2, r7, r0
ldr r3, [r4, #0x31c]
mov r6, r1
ldrh r0, [r3, r2]
add r5, r3, r2
cmp r0, #0
addeq r0, r4, #0x500
ldreqh r1, [r0, #0x2c]
mov r2, #0x1a
addeq r1, r1, #1
streqh r1, [r0, #0x2c]
mov r1, r5
mov r0, #0
bl sub_0302D764
ldr r0, _0201BE64 ; =0x0380FFF4
mov r4, #1
ldr r1, [r0]
mov r0, r7, lsl #0x10
add r2, r1, #0x500
ldrh r3, [r2, #0x34]
mvn r1, r4, lsl r7
and r3, r3, r1
mov r0, r0, lsr #0x10
mov r1, #0
strh r3, [r2, #0x34]
bl sub_0201B53C
ldr r0, _0201BE64 ; =0x0380FFF4
mov r1, r6
ldr r2, [r0]
add r0, r5, #4
add r2, r2, #0x500
ldrh r3, [r2, #0x30]
orr r3, r3, r4, lsl r7
strh r3, [r2, #0x30]
bl sub_020198D0
ldr r2, _0201BE68 ; =0x0000FFFF
mov r0, r7, lsl #0x10
ldr r1, _0201BE64 ; =0x0380FFF4
strh r2, [r5, #0x14]
ldr r1, [r1]
mov r0, r0, lsr #0x10
add r1, r1, #0x300
ldrh r2, [r1, #0xa6]
mov r1, #0x20
strh r2, [r5, #0x10]
ldrh r2, [r5, #0x1a]
strh r2, [r5, #0x18]
bl sub_0201B434
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201BE64: .word 0x0380FFF4
_0201BE68: .word 0x0000FFFF
arm_func_end sub_0201BD88
arm_func_start sub_0201BE6C
sub_0201BE6C: ; 0x0201BE6C
mov r0, #3
bx lr
arm_func_end sub_0201BE6C
arm_func_start sub_0201BE74
sub_0201BE74: ; 0x0201BE74
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r6, _0201BED0 ; =0x0380FFF4
mov r5, #0
ldr r0, [r6]
mvn r4, #0
ldr r7, [r0, #0x1f4]
b _0201BEC0
_0201BE90:
ldr r0, [r0, #0x304]
mov r1, r7
mov r2, r5
bl sub_0302BEC4
cmp r0, #0
beq _0201BEC8
ldr r0, [r6]
mov r1, r7
add r0, r0, #0x1f4
bl sub_03027F9C
ldr r0, [r6]
ldr r7, [r0, #0x1f4]
_0201BEC0:
cmp r7, r4
bne _0201BE90
_0201BEC8:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201BED0: .word 0x0380FFF4
arm_func_end sub_0201BE74
arm_func_start sub_0201BED4
sub_0201BED4: ; 0x0201BED4
ldr r0, _0201BEEC ; =0x0380FFF4
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x400
strh r1, [r0, #0x28]
bx lr
.align 2, 0
_0201BEEC: .word 0x0380FFF4
arm_func_end sub_0201BED4
arm_func_start sub_0201BEF0
sub_0201BEF0: ; 0x0201BEF0
stmdb sp!, {r4, lr}
mov r2, #1
strh r2, [r1, #2]
mov r4, r0
ldrh r0, [r4, #0x10]
cmp r0, #1
movhi r0, #5
bhi _0201BF28
bl sub_03028988
ldrh r0, [r4, #0x10]
cmp r0, #1
bne _0201BF24
bl sub_0201996C
_0201BF24:
mov r0, #0
_0201BF28:
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_0201BEF0
arm_func_start sub_0201BF30
sub_0201BF30: ; 0x0201BF30
stmdb sp!, {r4, lr}
mov r2, #9
strh r2, [r1, #2]
mov r4, r0
ldrh r0, [r4, #0x10]
cmp r0, #1
movhi r0, #5
bhi _0201BFCC
ldrh r1, [r4, #0x12]
cmp r1, #1
movhi r0, #5
bhi _0201BFCC
ldrh r1, [r4, #0x14]
cmp r1, #1
movhi r0, #5
bhi _0201BFCC
bl sub_0201943C
ldrh r0, [r4, #0x10]
cmp r0, #1
bne _0201BFB8
ldrh r0, [r4, #0x12]
cmp r0, #1
bne _0201BF98
ldr r0, _0201BFD4 ; =0x00008001
bl sub_020194D0
b _0201BFA0
_0201BF98:
mov r0, #0
bl sub_020194D0
_0201BFA0:
ldr r0, _0201BFD8 ; =0x0380FFF4
ldrh r1, [r4, #0x14]
ldr r0, [r0]
add r0, r0, #0x300
strh r1, [r0, #0x58]
b _0201BFC8
_0201BFB8:
mov r0, #0x8000
bl sub_020194D0
mov r0, #2
bl sub_020194A4
_0201BFC8:
mov r0, #0
_0201BFCC:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201BFD4: .word 0x00008001
_0201BFD8: .word 0x0380FFF4
arm_func_end sub_0201BF30
arm_func_start sub_0201BFDC
sub_0201BFDC: ; 0x0201BFDC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r2, _0201C118 ; =0x0380FFF4
mov r5, r1
ldr r3, [r2]
ldrh r2, [r5, #2]
add r1, r3, #4
add r4, r1, #0x400
sub r1, r2, #3
strh r1, [r4, #4]
mov r1, #3
strh r1, [r5, #2]
add r1, r3, #0x300
ldrh r1, [r1, #0x2e]
mov r6, r0
cmp r1, #1
cmpne r1, #3
cmpne r1, #2
movne r0, #0xb
bne _0201C110
ldr r0, _0201C118 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0x20
movlo r0, #1
blo _0201C110
ldrh r0, [r6, #0x16]
cmp r0, #0x20
movhi r0, #5
bhi _0201C110
ldrh r0, [r6, #0x38]
cmp r0, #1
movhi r0, #5
bhi _0201C110
add r0, r6, #0x3a
bl sub_0201A540
cmp r0, #0
moveq r0, #5
beq _0201C110
ldrh r0, [r6, #0x4a]
cmp r0, #0x3e8
movhi r0, #5
bhi _0201C110
cmp r0, #0xa
movlo r0, #5
blo _0201C110
ldrh r0, [r6, #0x4c]
cmp r0, #0x10
movhi r0, #5
bhi _0201C110
mov r8, #0
add r7, r6, #0x3a
b _0201C0D4
_0201C0B0:
add r0, r7, r8
bl sub_0201A540
cmp r0, #0
beq _0201C0DC
bl sub_02019C94
cmp r0, #0
moveq r0, #5
beq _0201C110
add r8, r8, #1
_0201C0D4:
cmp r8, #0x10
blo _0201C0B0
_0201C0DC:
add r0, r6, #0x10
bl sub_02018D5C
ldrh r0, [r6, #0x16]
add r1, r6, #0x18
bl sub_02018DC0
str r6, [r4, #0x18]
str r5, [r4, #0x1c]
mov r2, #0x10
mov r0, #2
mov r1, #0
strh r2, [r4]
bl sub_03027D88
mov r0, #0x80
_0201C110:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_0201C118: .word 0x0380FFF4
arm_func_end sub_0201BFDC
arm_func_start sub_0201C11C
sub_0201C11C: ; 0x0201C11C
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _0201C2CC ; =0x0380FFF4
mov r5, r1
ldr r3, [r2]
mov r1, #5
strh r1, [r5, #2]
add r1, r3, #0x300
ldrh r2, [r1, #0x2e]
add r1, r3, #4
mov r6, r0
cmp r2, #3
add r0, r3, #0x344
cmpne r2, #2
add r4, r1, #0x400
movne r0, #0xb
bne _0201C2C4
ldrh r0, [r0, #8]
cmp r0, #0x20
movlo r0, #1
blo _0201C2C4
mov r0, #0x20
bl sub_03028A28
ldrh r0, [r6, #0x18]
tst r0, #1
movne r0, #5
bne _0201C2C4
ldrh r0, [r6, #0x1e]
cmp r0, #0
moveq r0, #5
beq _0201C2C4
cmp r0, #0x20
movhi r0, #5
bhi _0201C2C4
ldrh r0, [r6, #0x46]
cmp r0, #0xa
movlo r0, #5
blo _0201C2C4
cmp r0, #0x3e8
movhi r0, #5
bhi _0201C2C4
ldrh r0, [r6, #0x48]
cmp r0, #0xff
movhi r0, #5
bhi _0201C2C4
ldrh r0, [r6, #0x4a]
ldr r1, _0201C2D0 ; =0x0000FFF0
tst r0, r1
movne r0, #5
bne _0201C2C4
bl sub_02019C94
cmp r0, #0
moveq r0, #5
beq _0201C2C4
ldrh r2, [r6, #0x42]
mov r0, #0x1000
rsb r0, r0, #0
tst r2, r0
movne r0, #5
bne _0201C2C4
ldrh r1, [r6, #0x44]
tst r1, r0
movne r0, #5
bne _0201C2C4
cmp r2, #0
moveq r0, #5
beq _0201C2C4
orrs r0, r1, r2
moveq r0, #5
beq _0201C2C4
ldrh r0, [r6, #0x10]
cmp r0, #0x7d0
movhi r0, #5
bhi _0201C2C4
mov r0, #0
bl sub_0202451C
cmp r0, #0
movne r0, #0xe
bne _0201C2C4
ldrh r0, [r6, #0x40]
tst r0, #0x20
beq _0201C26C
mov r0, #1
bl sub_02018A80
b _0201C274
_0201C26C:
mov r0, #0
bl sub_02018A80
_0201C274:
add r0, r6, #0x18
bl sub_02018D5C
ldrh r0, [r6, #0x1e]
add r1, r6, #0x20
bl sub_02018DC0
ldrh r0, [r6, #0x46]
bl sub_02018ED0
ldrh r0, [r6, #0x4a]
mov r1, #0
bl sub_020190F0
add r0, r6, #0x42
bl sub_0201937C
str r6, [r4, #0x18]
str r5, [r4, #0x1c]
mov r2, #0x20
mov r0, #2
mov r1, #1
strh r2, [r4]
bl sub_03027D88
mov r0, #0x80
_0201C2C4:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201C2CC: .word 0x0380FFF4
_0201C2D0: .word 0x0000FFF0
arm_func_end sub_0201C11C
arm_func_start sub_0201C2D4
sub_0201C2D4: ; 0x0201C2D4
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _0201C3A4 ; =0x0380FFF4
mov r5, r1
ldr r3, [r2]
mov r1, #6
strh r1, [r5, #2]
add r1, r3, #0x300
ldrh r2, [r1, #0x2e]
add r1, r3, #4
mov r6, r0
cmp r2, #3
add r0, r3, #0x344
cmpne r2, #2
add r4, r1, #0x400
movne r0, #0xb
bne _0201C39C
ldrh r0, [r0, #8]
cmp r0, #0x20
movlo r0, #1
blo _0201C39C
ldrh r0, [r6, #0x10]
tst r0, #1
movne r0, #5
bne _0201C39C
ldrh r0, [r6, #0x16]
cmp r0, #1
movhi r0, #5
bhi _0201C39C
ldrh r0, [r6, #0x18]
cmp r0, #0x7d0
movhi r0, #5
bhi _0201C39C
cmp r0, #0xa
movlo r0, #5
blo _0201C39C
mov r0, #0x20
bl sub_03028A28
str r6, [r4, #0x18]
str r5, [r4, #0x1c]
mov r0, #0x30
strh r0, [r4]
ldr r1, [r4, #0x18]
add r0, r5, #8
ldrh r1, [r1, #0x16]
strh r1, [r5, #0xe]
ldr r1, [r4, #0x18]
add r1, r1, #0x10
bl sub_020198D0
bl sub_0201CD34
mov r0, #0x80
_0201C39C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201C3A4: .word 0x0380FFF4
arm_func_end sub_0201C2D4
arm_func_start sub_0201C3A8
sub_0201C3A8: ; 0x0201C3A8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _0201C4D8 ; =0x0380FFF4
mov r6, r1
ldr r2, [r3]
mov r1, #4
strh r1, [r6, #2]
ldr r3, [r3]
add r1, r2, #4
add r2, r3, #0x300
ldrh r2, [r2, #0x2e]
mov r7, r0
cmp r2, #3
cmpne r2, #2
cmpne r2, #1
add r5, r1, #0x400
movne r0, #0xb
bne _0201C4D0
add r0, r3, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0x30
movlo r0, #1
blo _0201C4D0
add r0, r2, #0xfe
add r0, r0, #0xff00
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _0201C428
ldrh r0, [r7, #0x10]
tst r0, #1
movne r0, #5
bne _0201C4D0
_0201C428:
add r0, r6, #6
add r1, r7, #0x10
bl sub_020198D0
ldrh r1, [r7, #0x16]
add r0, r6, #6
mov r2, #0
bl sub_020216AC
movs r4, r0
moveq r0, #8
beq _0201C4D0
str r7, [r5, #0x18]
str r6, [r5, #0x1c]
str r4, [r5, #4]
mov r0, #0x41
strh r0, [r5]
ldrh r0, [r7, #0x10]
tst r0, #1
beq _0201C4BC
ldr r2, _0201C4D8 ; =0x0380FFF4
sub r1, r4, #0x10
ldr r0, [r2]
ldr r0, [r0, #0x3ec]
strh r0, [r4, #4]
ldr r0, [r2]
add r0, r0, #0x188
bl sub_0201B2D8
ldr r0, _0201C4D8 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x500
ldrh r1, [r0, #0x32]
ldrh r2, [r0, #0x2e]
mvn r0, r1
tst r2, r0
bne _0201C4CC
mov r0, #2
bl sub_0201F6E4
b _0201C4CC
_0201C4BC:
add r0, r7, #0x10
bl sub_02020648
mov r0, r4
bl sub_0202086C
_0201C4CC:
mov r0, #0x80
_0201C4D0:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201C4D8: .word 0x0380FFF4
arm_func_end sub_0201C3A8
arm_func_start sub_0201C4DC
sub_0201C4DC: ; 0x0201C4DC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _0201C5B0 ; =0x0380FFF4
mov r6, r1
ldr r3, [r2]
mov r1, #3
strh r1, [r6, #2]
add r1, r3, #0x300
ldrh r2, [r1, #0x2e]
add r1, r3, #4
cmp r2, #3
mov r7, r0
cmpne r2, #2
add r4, r3, #0x344
add r5, r1, #0x400
movne r0, #0xb
bne _0201C5A8
ldrh r0, [r4, #8]
cmp r0, #0x30
movlo r0, #1
blo _0201C5A8
ldrh r0, [r7, #0x10]
tst r0, #1
movne r0, #5
bne _0201C5A8
ldrh r0, [r7, #0x16]
cmp r0, #0
moveq r0, #5
beq _0201C5A8
cmp r0, #0xff
movhi r0, #5
bhi _0201C5A8
ldrh r0, [r7, #0x18]
cmp r0, #0x7d0
movhi r0, #5
bhi _0201C5A8
cmp r0, #0xa
movlo r0, #5
blo _0201C5A8
mov r0, #0x30
bl sub_03028A28
bl sub_0201982C
ldrh r1, [r7, #0x16]
mov r0, #0x50
strh r1, [r4, #0x70]
ldrh r1, [r7, #0x16]
strh r1, [r4, #0x72]
str r7, [r5, #0x18]
str r6, [r5, #0x1c]
strh r0, [r5]
bl sub_0201CE58
mov r0, #0x80
_0201C5A8:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201C5B0: .word 0x0380FFF4
arm_func_end sub_0201C4DC
arm_func_start sub_0201C5B4
sub_0201C5B4: ; 0x0201C5B4
stmdb sp!, {r3, lr}
ldr r3, _0201C670 ; =0x0380FFF4
mov r2, #3
ldr ip, [r3]
strh r2, [r1, #2]
add r2, ip, #0x300
ldrh r3, [r2, #0x2e]
add r2, ip, #4
cmp r3, #3
cmpne r3, #2
add ip, ip, #0x344
add lr, r2, #0x400
movne r0, #0xb
bne _0201C668
ldrh r2, [ip, #8]
cmp r2, #0x30
movlo r0, #1
blo _0201C668
ldrh r2, [r0, #0x10]
tst r2, #1
movne r0, #5
bne _0201C668
ldrh r3, [r0, #0x16]
cmp r3, #1
movlo r0, #5
blo _0201C668
cmp r3, #0xff
movhi r0, #5
bhi _0201C668
ldrh r2, [r0, #0x18]
cmp r2, #0x7d0
movhi r0, #5
bhi _0201C668
cmp r2, #0xa
movlo r0, #5
blo _0201C668
strh r3, [ip, #0x70]
ldrh r3, [r0, #0x16]
mov r2, #0x60
strh r3, [ip, #0x72]
str r0, [lr, #0x18]
str r1, [lr, #0x1c]
strh r2, [lr]
bl sub_0201CF54
mov r0, #0x80
_0201C668:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201C670: .word 0x0380FFF4
arm_func_end sub_0201C5B4
arm_func_start sub_0201C674
sub_0201C674: ; 0x0201C674
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _0201C77C ; =0x0380FFF4
mov r6, r1
ldr r2, [r3]
mov r1, #1
strh r1, [r6, #2]
ldr r3, [r3]
add r1, r2, #4
add r2, r3, #0x300
ldrh r2, [r2, #0x2e]
mov r7, r0
cmp r2, #0
add r5, r1, #0x400
moveq r0, #0xb
beq _0201C774
cmp r2, #1
beq _0201C6C8
ldrh r0, [r7, #0x10]
tst r0, #1
movne r0, #5
bne _0201C774
_0201C6C8:
add r0, r3, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0x40
movne r0, #1
bne _0201C774
ldrh r1, [r7, #0x16]
add r0, r7, #0x10
bl sub_02020E94
movs r4, r0
moveq r0, #8
beq _0201C774
str r7, [r5, #0x18]
str r6, [r5, #0x1c]
str r4, [r5, #4]
mov r0, #0x71
strh r0, [r5]
ldrh r0, [r7, #0x10]
tst r0, #1
beq _0201C760
ldr r2, _0201C77C ; =0x0380FFF4
sub r1, r4, #0x10
ldr r0, [r2]
ldr r0, [r0, #0x3ec]
strh r0, [r4, #4]
ldr r0, [r2]
add r0, r0, #0x188
bl sub_0201B2D8
ldr r0, _0201C77C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x500
ldrh r1, [r0, #0x32]
ldrh r2, [r0, #0x2e]
mvn r0, r1
tst r2, r0
bne _0201C770
mov r0, #2
bl sub_0201F6E4
b _0201C770
_0201C760:
add r0, r7, #0x10
bl sub_02020648
mov r0, r4
bl sub_0202086C
_0201C770:
mov r0, #0x80
_0201C774:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201C77C: .word 0x0380FFF4
arm_func_end sub_0201C674
arm_func_start sub_0201C780
sub_0201C780: ; 0x0201C780
stmdb sp!, {r4, r5, r6, lr}
ldr r3, _0201C914 ; =0x0380FFF4
mov r2, #1
ldr r3, [r3]
mov r6, r0
strh r2, [r1, #2]
add r5, r3, #0x31c
ldrh r0, [r5, #0x12]
add r4, r3, #0x344
cmp r0, #1
cmpne r0, #0
movne r0, #0xb
bne _0201C90C
ldrh r0, [r4, #8]
cmp r0, #0x20
movne r0, #1
bne _0201C90C
ldrh r0, [r6, #0x10]
cmp r0, #0x20
movhi r0, #5
bhi _0201C90C
cmp r0, #0
moveq r0, #5
beq _0201C90C
ldrh r0, [r6, #0x32]
cmp r0, #0xa
movlo r0, #5
blo _0201C90C
cmp r0, #0x3e8
movhi r0, #5
bhi _0201C90C
ldrh r0, [r6, #0x34]
cmp r0, #0
moveq r0, #5
beq _0201C90C
cmp r0, #0xff
movhi r0, #5
bhi _0201C90C
ldrh r0, [r6, #0x36]
ldr r1, _0201C918 ; =0x0000FFF0
tst r0, r1
movne r0, #5
bne _0201C90C
bl sub_02019C94
cmp r0, #0
moveq r0, #5
beq _0201C90C
ldrh r1, [r6, #0x38]
cmp r1, #0
moveq r0, #5
beq _0201C90C
mov r0, #0x1000
rsb r0, r0, #0
tst r1, r0
movne r0, #5
bne _0201C90C
ldrh r1, [r6, #0x3a]
cmp r1, #0
moveq r0, #5
beq _0201C90C
tst r1, r0
movne r0, #5
bne _0201C90C
ldrh r0, [r6, #0x3c]
cmp r0, #0x80
movhi r0, #5
bhi _0201C90C
mov r0, #0
bl sub_0202451C
cmp r0, #0
movne r0, #0xe
bne _0201C90C
ldrh r0, [r5, #0x12]
cmp r0, #0
bne _0201C8B8
ldr r0, _0201C91C ; =0x027F74A4
bl sub_02018D5C
b _0201C8C0
_0201C8B8:
add r0, r5, #8
bl sub_02018D5C
_0201C8C0:
ldrh r0, [r6, #0x10]
add r1, r6, #0x12
bl sub_02018DC0
ldrh r0, [r6, #0x32]
bl sub_02018ED0
ldrh r0, [r6, #0x34]
bl sub_02018F28
ldrh r0, [r6, #0x36]
mov r1, #0
bl sub_020190F0
add r0, r6, #0x38
bl sub_0201937C
ldrh r0, [r6, #0x3c]
add r1, r6, #0x3e
bl sub_02019700
mov r0, #0
strh r0, [r4, #0xa4]
bl sub_030285D0
mov r0, #0
_0201C90C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201C914: .word 0x0380FFF4
_0201C918: .word 0x0000FFF0
_0201C91C: .word 0x027F74A4
arm_func_end sub_0201C780
arm_func_start sub_0201C920
sub_0201C920: ; 0x0201C920
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r2, _0201CA00 ; =0x0380FFF4
mov r5, r1
ldr r3, [r2]
mov r1, #0x12
strh r1, [r5, #2]
ldr r2, [r2]
add r1, r3, #4
add r2, r2, #0x300
ldrh r2, [r2, #0x4c]
mov r6, r0
cmp r2, #0x20
add r4, r1, #0x400
movne r0, #1
bne _0201C9F8
ldrh r0, [r6, #0x12]
cmp r0, #3
movhi r0, #5
bhi _0201C9F8
ldrh r0, [r6, #0x14]
cmp r0, #0x3f
movhi r0, #5
bhi _0201C9F8
ldrh r0, [r6, #0x16]
cmp r0, #0
moveq r0, #5
beq _0201C9F8
cmp r0, #0x3e8
movhi r0, #5
bhi _0201C9F8
mov r8, #0
add r7, r6, #0x18
b _0201C9C8
_0201C9A4:
add r0, r7, r8
bl sub_0201A540
cmp r0, #0
beq _0201C9D0
bl sub_02019C94
cmp r0, #0
moveq r0, #5
beq _0201C9F8
add r8, r8, #1
_0201C9C8:
cmp r8, #0x10
blo _0201C9A4
_0201C9D0:
cmp r8, #0
moveq r0, #5
beq _0201C9F8
str r6, [r4, #0x18]
str r5, [r4, #0x1c]
mov r0, #0x80
strh r0, [r4]
strh r0, [r5, #4]
bl sub_0201D048
mov r0, #0x80
_0201C9F8:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_0201CA00: .word 0x0380FFF4
arm_func_end sub_0201C920
arm_func_start sub_0201CA04
sub_0201CA04: ; 0x0201CA04
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _0201CBEC ; =0x0380FFF4
mov r6, #0
ldr r2, [r0]
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
sub r1, r1, #0x10
cmp r1, #5
add r4, r0, #0x400
add r5, r2, #0x344
addls pc, pc, r1, lsl #2
b _0201CBD0
_0201CA38: ; jump table
b _0201CA50 ; case 0
b _0201CAC8 ; case 1
b _0201CB58 ; case 2
b _0201CB58 ; case 3
b _0201CBD0 ; case 4
b _0201CBB0 ; case 5
_0201CA50:
mov r0, #0x20
bl sub_03028A28
mov r0, #2
strh r0, [r5, #0xc]
ldr r0, [r4, #0x1c]
mov r1, r6
strh r1, [r0, #8]
ldr r0, [r4, #0x1c]
strh r1, [r0, #6]
strh r1, [r4, #6]
strh r1, [r4, #8]
ldr r1, [r4, #0x18]
ldrh r0, [r1, #0x38]
cmp r0, #0
ldrh r0, [r1, #0x4a]
bne _0201CAB8
add r1, r0, #3
mov r0, r1, asr #1
add r0, r1, r0, lsr #30
mov r0, r0, asr #2
strh r0, [r4, #0xc]
ldrh r0, [r4, #0xc]
cmp r0, #0xa
movlo r0, #0xa
strloh r0, [r4, #0xc]
b _0201CABC
_0201CAB8:
strh r0, [r4, #0xc]
_0201CABC:
ldr r0, [r4, #0x1c]
mov r1, #0
strh r1, [r0, #4]
_0201CAC8:
ldr r1, [r4, #0x18]
ldrh r0, [r4, #6]
add r1, r1, #0x3a
add r0, r1, r0
bl sub_0201A540
movs r5, r0
moveq r0, #0x15
streqh r0, [r4]
moveq r6, #1
beq _0201CBD0
ldrh r1, [r4, #6]
mov r0, #0
add r1, r1, #1
strh r1, [r4, #6]
strh r0, [r4, #0xa]
bl sub_0202451C
cmp r0, #0
beq _0201CB2C
ldr r0, [r4, #0x1c]
mov r1, #0xe
strh r1, [r0, #4]
mov r0, #0x15
strh r0, [r4]
mov r6, #1
b _0201CBD0
_0201CB2C:
ldrh r0, [r4]
mov r1, #0
cmp r0, #0x10
mov r0, r5
bne _0201CB4C
bl sub_020190F0
bl sub_030285D0
b _0201CB50
_0201CB4C:
bl sub_020190F0
_0201CB50:
mov r0, #0x12
strh r0, [r4]
_0201CB58:
mov r0, #0x13
strh r0, [r4]
ldr r1, [r4, #0x18]
ldrh r0, [r1, #0x38]
cmp r0, #0
bne _0201CBA0
add r0, r1, #0x10
bl sub_02021340
cmp r0, #0
bne _0201CB9C
ldr r0, [r4, #0x1c]
mov r1, #8
strh r1, [r0, #4]
mov r0, #0x15
strh r0, [r4]
mov r6, #1
b _0201CBD0
_0201CB9C:
bl sub_0202086C
_0201CBA0:
ldrh r0, [r4, #0xc]
ldr r1, _0201CBF0 ; =0x027ED404
bl sub_0201A2DC
b _0201CBD0
_0201CBB0:
strh r6, [r4]
bl sub_03028988
ldr r0, _0201CBEC ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x2e]
strh r0, [r5, #0xc]
bl sub_0201D304
_0201CBD0:
cmp r6, #0
beq _0201CBE4
mov r0, #2
mov r1, #0
bl sub_03027D88
_0201CBE4:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201CBEC: .word 0x0380FFF4
_0201CBF0: .word 0x027ED404
arm_func_end sub_0201CA04
arm_func_start sub_0201CBF4
sub_0201CBF4: ; 0x0201CBF4
ldr r0, _0201CC50 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #4
add r2, r0, #0x400
ldrh r1, [r2, #0xa]
ldrh r0, [r2, #0xc]
add r0, r1, r0
strh r0, [r2, #0xa]
ldr r0, [r2, #0x18]
ldrh r1, [r2, #0xa]
ldrh r0, [r0, #0x4a]
cmp r1, r0
blo _0201CC40
ldrh r0, [r2, #6]
cmp r0, #0x10
movlo r0, #0x11
strloh r0, [r2]
movhs r0, #0x15
strhsh r0, [r2]
_0201CC40:
ldr ip, _0201CC54 ; =sub_037F8598
mov r0, #2
mov r1, #0
bx ip
.align 2, 0
_0201CC50: .word 0x0380FFF4
_0201CC54: .word sub_037F8598
arm_func_end sub_0201CBF4
arm_func_start sub_0201CC58
sub_0201CC58: ; 0x0201CC58
stmdb sp!, {r4, lr}
ldr r0, _0201CCF0 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
cmp r1, #0x20
add r4, r0, #0x400
beq _0201CC88
cmp r1, #0x25
beq _0201CCB4
b _0201CCE8
_0201CC88:
bl sub_030285D0
mov r0, #0
strh r0, [r4, #4]
strh r0, [r4, #6]
mov r0, #0x21
strh r0, [r4]
ldr r0, [r4, #0x18]
ldr r1, _0201CCF4 ; =0x027ED508
ldrh r0, [r0, #0x10]
bl sub_0201A2DC
b _0201CCE8
_0201CCB4:
ldrh r1, [r4, #4]
ldr r0, [r4, #0x1c]
strh r1, [r0, #4]
ldrh r1, [r4, #6]
ldr r0, [r4, #0x1c]
strh r1, [r0, #6]
ldrh r0, [r4, #4]
cmp r0, #0
beq _0201CCDC
bl sub_03028988
_0201CCDC:
mov r0, #0
strh r0, [r4]
bl sub_0201D304
_0201CCE8:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201CCF0: .word 0x0380FFF4
_0201CCF4: .word 0x027ED508
arm_func_end sub_0201CC58
arm_func_start sub_0201CCF8
sub_0201CCF8: ; 0x0201CCF8
ldr r0, _0201CD2C ; =0x0380FFF4
ldr ip, _0201CD30 ; =sub_037F8598
ldr r2, [r0]
mov r1, #7
add r0, r2, #4
add r0, r0, #0x400
strh r1, [r0, #4]
mov r3, #0x25
add r2, r2, #0x400
mov r0, #2
mov r1, #1
strh r3, [r2, #4]
bx ip
.align 2, 0
_0201CD2C: .word 0x0380FFF4
_0201CD30: .word sub_037F8598
arm_func_end sub_0201CCF8
arm_func_start sub_0201CD34
sub_0201CD34: ; 0x0201CD34
stmdb sp!, {r4, lr}
ldr r0, _0201CE10 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
cmp r1, #0x30
add r4, r0, #0x400
beq _0201CD64
cmp r1, #0x35
beq _0201CDE0
b _0201CE08
_0201CD64:
ldr r0, [r4, #0x18]
mov r1, #0
mov r2, r1
add r0, r0, #0x10
bl sub_020215EC
cmp r0, #0
bne _0201CDA4
ldr r1, [r4, #0x1c]
mov r2, #8
mov r0, #2
strh r2, [r1, #4]
mov r2, #0x35
mov r1, r0
strh r2, [r4]
bl sub_03027D88
b _0201CE08
_0201CDA4:
ldr r1, [r4, #0x18]
mov r2, #1
ldrh r3, [r1, #0x16]
mov r1, #0
strh r3, [r0, #0x2c]
strh r2, [r0, #0x2e]
strh r1, [r0, #0x30]
mov r1, #0x31
strh r1, [r4]
bl sub_0202086C
ldr r0, [r4, #0x18]
ldr r1, _0201CE14 ; =0x027ED628
ldrh r0, [r0, #0x18]
bl sub_0201A2DC
b _0201CE08
_0201CDE0:
mov r0, #1
bl sub_020204C4
mov r0, #1
bl sub_02020460
mov r0, #1
mov r1, #0
bl sub_020207E0
mov r0, #0
strh r0, [r4]
bl sub_0201D304
_0201CE08:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201CE10: .word 0x0380FFF4
_0201CE14: .word 0x027ED628
arm_func_end sub_0201CD34
arm_func_start sub_0201CE18
sub_0201CE18: ; 0x0201CE18
stmdb sp!, {r3, lr}
ldr r1, _0201CE54 ; =0x0380FFF4
mov r0, #2
ldr ip, [r1]
mov r3, #7
add r1, ip, #4
ldr r2, [r1, #0x41c]
mov r1, r0
strh r3, [r2, #4]
add r2, ip, #0x400
mov r3, #0x35
strh r3, [r2, #4]
bl sub_03027D88
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201CE54: .word 0x0380FFF4
arm_func_end sub_0201CE18
arm_func_start sub_0201CE58
sub_0201CE58: ; 0x0201CE58
stmdb sp!, {r4, lr}
ldr r0, _0201CF10 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
cmp r1, #0x50
add r4, r0, #0x400
beq _0201CE88
cmp r1, #0x53
beq _0201CEE0
b _0201CF08
_0201CE88:
ldr r0, [r4, #0x18]
add r0, r0, #0x10
bl sub_02020F10
cmp r0, #0
bne _0201CEC0
ldr r0, [r4, #0x1c]
mov r1, #8
strh r1, [r0, #4]
mov r2, #0x53
mov r0, #2
mov r1, #3
strh r2, [r4]
bl sub_03027D88
b _0201CF08
_0201CEC0:
mov r1, #0x51
strh r1, [r4]
bl sub_0202086C
ldr r0, [r4, #0x18]
ldr r1, _0201CF14 ; =0x027ED728
ldrh r0, [r0, #0x18]
bl sub_0201A2DC
b _0201CF08
_0201CEE0:
mov r0, #1
bl sub_020204C4
mov r0, #1
bl sub_02020460
mov r0, #1
mov r1, #0
bl sub_020207E0
mov r0, #0
strh r0, [r4]
bl sub_0201D304
_0201CF08:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201CF10: .word 0x0380FFF4
_0201CF14: .word 0x027ED728
arm_func_end sub_0201CE58
arm_func_start sub_0201CF18
sub_0201CF18: ; 0x0201CF18
ldr r0, _0201CF4C ; =0x0380FFF4
ldr ip, _0201CF50 ; =sub_037F8598
ldr r2, [r0]
mov r1, #7
add r0, r2, #4
ldr r0, [r0, #0x41c]
mov r3, #0x53
strh r1, [r0, #4]
add r2, r2, #0x400
mov r0, #2
mov r1, #3
strh r3, [r2, #4]
bx ip
.align 2, 0
_0201CF4C: .word 0x0380FFF4
_0201CF50: .word sub_037F8598
arm_func_end sub_0201CF18
arm_func_start sub_0201CF54
sub_0201CF54: ; 0x0201CF54
stmdb sp!, {r4, lr}
ldr r0, _0201D004 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
cmp r1, #0x60
add r4, r0, #0x400
beq _0201CF84
cmp r1, #0x63
beq _0201CFDC
b _0201CFFC
_0201CF84:
ldr r0, [r4, #0x18]
add r0, r0, #0x10
bl sub_02020FB8
cmp r0, #0
bne _0201CFBC
ldr r0, [r4, #0x1c]
mov r1, #8
strh r1, [r0, #4]
mov r2, #0x63
mov r0, #2
mov r1, #4
strh r2, [r4]
bl sub_03027D88
b _0201CFFC
_0201CFBC:
mov r1, #0x61
strh r1, [r4]
bl sub_0202086C
ldr r0, [r4, #0x18]
ldr r1, _0201D008 ; =0x027ED81C
ldrh r0, [r0, #0x18]
bl sub_0201A2DC
b _0201CFFC
_0201CFDC:
mov r0, #1
bl sub_02020460
mov r0, #1
mov r1, #0
bl sub_020207E0
mov r0, #0
strh r0, [r4]
bl sub_0201D304
_0201CFFC:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201D004: .word 0x0380FFF4
_0201D008: .word 0x027ED81C
arm_func_end sub_0201CF54
arm_func_start sub_0201D00C
sub_0201D00C: ; 0x0201D00C
ldr r0, _0201D040 ; =0x0380FFF4
ldr ip, _0201D044 ; =sub_037F8598
ldr r2, [r0]
mov r1, #7
add r0, r2, #4
ldr r0, [r0, #0x41c]
mov r3, #0x63
strh r1, [r0, #4]
add r2, r2, #0x400
mov r0, #2
mov r1, #4
strh r3, [r2, #4]
bx ip
.align 2, 0
_0201D040: .word 0x0380FFF4
_0201D044: .word sub_037F8598
arm_func_end sub_0201D00C
arm_func_start sub_0201D048
sub_0201D048: ; 0x0201D048
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0201D2A8 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
sub r1, r1, #0x80
cmp r1, #4
add r4, r2, #0x344
add r5, r0, #0x400
addls pc, pc, r1, lsl #2
b _0201D288
_0201D078: ; jump table
b _0201D08C ; case 0
b _0201D0CC ; case 1
b _0201D180 ; case 2
b _0201D1A8 ; case 3
b _0201D214 ; case 4
_0201D08C:
mov r0, #0
strh r0, [r5, #0x14]
mov r0, #0x13
bl sub_02019DB4
strh r0, [r5, #0xe]
mov r0, #0x35
bl sub_02019DB4
strh r0, [r5, #0x10]
ldr r1, [r5, #0x18]
ldrh r0, [r1, #0x12]
ldrh r1, [r1, #0x14]
bl sub_02018B4C
mov r0, #4
strh r0, [r4, #0xc]
mov r0, #0
strh r0, [r5, #0x16]
_0201D0CC:
mov r0, #0
str r0, [r5, #4]
str r0, [r5, #8]
ldr r1, [r5, #0x18]
ldrh r0, [r5, #0x14]
add r1, r1, #0x18
add r0, r1, r0
bl sub_0201A540
movs r4, r0
beq _0201D100
ldrh r0, [r5, #0x14]
cmp r0, #0x10
blo _0201D10C
_0201D100:
mov r0, #0x84
strh r0, [r5]
b _0201D288
_0201D10C:
mov r0, #0
bl sub_0202451C
cmp r0, #0
movne r0, #0xe
strneh r0, [r5, #0x16]
movne r0, #0x84
strneh r0, [r5]
bne _0201D288
ldrh r0, [r5]
mov r1, #0
cmp r0, #0x80
mov r0, r4, lsl #0x10
mov r0, r0, lsr #0x10
bne _0201D164
bl sub_020190F0
bl sub_030285D0
ldr r1, _0201D2AC ; =0x04808040
mov r0, #0x8000
ldrh r1, [r1]
strh r1, [r5, #0xc]
bl sub_020194D0
b _0201D168
_0201D164:
bl sub_020190F0
_0201D168:
mov r0, #0x82
strh r0, [r5]
ldr r0, [r5, #0x18]
ldr r1, _0201D2B0 ; =0x027EDAC8
ldrh r0, [r0, #0x16]
bl sub_0201A2DC
_0201D180:
ldr r1, [r5, #4]
ldr r0, _0201D2B4 ; =0x0480819C
add r1, r1, #1
str r1, [r5, #4]
ldrh r0, [r0]
tst r0, #1
ldrne r0, [r5, #8]
addne r0, r0, #0x64
strne r0, [r5, #8]
b _0201D288
_0201D1A8:
ldr r1, [r5, #0x18]
ldrh r0, [r5, #0x14]
add r1, r1, #0x18
add r0, r1, r0
bl sub_0201A540
ldr r1, [r5, #4]
mov r4, r0
cmp r1, #0
ldrne r0, [r5, #8]
mov r2, #0
cmpne r0, #0
beq _0201D1E8
bl sub_030365C4
add r2, r0, #1
cmp r2, #0x64
movhi r2, #0x64
_0201D1E8:
ldr r1, [r5, #0x1c]
ldrh r0, [r5, #0x14]
orr r2, r4, r2, lsl #8
add r0, r1, r0, lsl #1
strh r2, [r0, #8]
ldrh r1, [r5, #0x14]
mov r0, #0x81
add r1, r1, #1
strh r1, [r5, #0x14]
strh r0, [r5]
b _0201D288
_0201D214:
bl sub_03028988
ldr r1, _0201D2A8 ; =0x0380FFF4
mov r0, #0x13
ldr r1, [r1]
add r1, r1, #0x300
ldrh r1, [r1, #0x2e]
strh r1, [r4, #0xc]
ldrh r1, [r5, #0xe]
bl sub_02019DE0
ldrh r1, [r5, #0x10]
mov r0, #0x35
bl sub_02019DE0
ldrh r0, [r5, #0xc]
bl sub_020194D0
ldrh r2, [r5, #0x16]
ldr r1, [r5, #0x1c]
mov r0, #0
strh r2, [r1, #4]
strh r0, [r5]
ldrh r2, [r5, #0x14]
mov r1, r0
b _0201D27C
_0201D26C:
ldr r0, [r5, #0x1c]
add r0, r0, r2, lsl #1
strh r1, [r0, #8]
add r2, r2, #1
_0201D27C:
cmp r2, #0x10
blo _0201D26C
bl sub_0201D304
_0201D288:
ldrh r0, [r5]
cmp r0, #0
beq _0201D2A0
mov r0, #2
mov r1, #5
bl sub_03027D88
_0201D2A0:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201D2A8: .word 0x0380FFF4
_0201D2AC: .word 0x04808040
_0201D2B0: .word 0x027EDAC8
_0201D2B4: .word 0x0480819C
arm_func_end sub_0201D048
arm_func_start sub_0201D2B8
sub_0201D2B8: ; 0x0201D2B8
ldr r0, _0201D2DC ; =0x0380FFF4
ldr ip, _0201D2E0 ; =sub_037F8598
ldr r1, [r0]
mov r3, #0x83
add r2, r1, #0x400
mov r0, #2
mov r1, #5
strh r3, [r2, #4]
bx ip
.align 2, 0
_0201D2DC: .word 0x0380FFF4
_0201D2E0: .word sub_037F8598
arm_func_end sub_0201D2B8
arm_func_start sub_0201D2E4
sub_0201D2E4: ; 0x0201D2E4
ldr r0, _0201D2FC ; =0x0380FFF4
ldr ip, _0201D300 ; =sub_027EDEC0
ldr r0, [r0]
add r0, r0, #0xc6
add r0, r0, #0x300
bx ip
.align 2, 0
_0201D2FC: .word 0x0380FFF4
_0201D300: .word sub_027EDEC0
arm_func_end sub_0201D2E4
arm_func_start sub_0201D304
sub_0201D304: ; 0x0201D304
stmdb sp!, {r4, lr}
ldr r0, _0201D354 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x24
add r1, r0, #0x400
ldrh r0, [r1, #4]
add r4, r2, #0x17c
bic r0, r0, #1
strh r0, [r1, #4]
ldr r1, [r2, #0x424]
add r0, r4, #0x84
bl sub_03028548
ldrh r0, [r4, #0x8c]
cmp r0, #0
beq _0201D34C
mov r0, #2
mov r1, #0xb
bl sub_03027D88
_0201D34C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201D354: .word 0x0380FFF4
arm_func_end sub_0201D304
arm_func_start sub_0201D358
sub_0201D358: ; 0x0201D358
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _0201D3D0 ; =0x0380FFF4
mov r5, r1
ldr r1, [r2]
mov r6, r0
add r0, r1, #0x188
mov r1, #0x18
bl sub_0302805C
movs r4, r0
bne _0201D390
mov r0, #1
bl sub_0201A85C
mov r0, #0
b _0201D3C8
_0201D390:
mov r0, #0x84
strh r0, [r4, #0xc]
mov r2, #4
mov r1, r6
add r0, r4, #0x10
strh r2, [r4, #0xe]
bl sub_020198D0
ldr r0, _0201D3D0 ; =0x0380FFF4
strh r5, [r4, #0x16]
ldr r0, [r0]
mov r1, r4
add r0, r0, #0x188
bl sub_03028548
mov r0, #1
_0201D3C8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201D3D0: .word 0x0380FFF4
arm_func_end sub_0201D358
arm_func_start sub_0201D3D4
sub_0201D3D4: ; 0x0201D3D4
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _0201D44C ; =0x0380FFF4
mov r5, r1
ldr r1, [r2]
mov r6, r0
add r0, r1, #0x188
mov r1, #0x18
bl sub_0302805C
movs r4, r0
bne _0201D40C
mov r0, #1
bl sub_0201A85C
mov r0, #0
b _0201D444
_0201D40C:
mov r0, #0x85
strh r0, [r4, #0xc]
mov r2, #4
mov r1, r6
add r0, r4, #0x10
strh r2, [r4, #0xe]
bl sub_020198D0
ldr r0, _0201D44C ; =0x0380FFF4
strh r5, [r4, #0x16]
ldr r0, [r0]
mov r1, r4
add r0, r0, #0x188
bl sub_03028548
mov r0, #1
_0201D444:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201D44C: .word 0x0380FFF4
arm_func_end sub_0201D3D4
arm_func_start sub_0201D450
sub_0201D450: ; 0x0201D450
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _0201D540 ; =0x0380FFF4
mov r5, r1
ldr r1, [r3]
mov r7, r0
add r0, r1, #0x188
mov r1, #0x3a
mov r6, r2
bl sub_0302805C
movs r4, r0
bne _0201D48C
mov r0, #1
bl sub_0201A85C
mov r0, #0
b _0201D538
_0201D48C:
mov r0, #0x86
strh r0, [r4, #0xc]
mov r2, #0x15
mov r1, r7
add r0, r4, #0x10
strh r2, [r4, #0xe]
bl sub_020198D0
ldr r1, _0201D544 ; =0x00000FFF
add r0, r6, #1
and r1, r5, r1
strh r1, [r4, #0x16]
bl sub_0201A540
add r7, r6, #2
strh r0, [r4, #0x18]
mov r5, #0
add r6, r4, #0x1a
b _0201D4F0
_0201D4D0:
cmp r5, #0x20
bhs _0201D4FC
add r0, r7, r5
bl sub_0201A540
mov r1, r0
add r0, r6, r5
bl sub_0201A514
add r5, r5, #1
_0201D4F0:
ldrh r0, [r4, #0x18]
cmp r5, r0
blo _0201D4D0
_0201D4FC:
add r7, r4, #0x1a
mov r6, #0
b _0201D518
_0201D508:
mov r1, r6
add r0, r7, r5
bl sub_0201A514
add r5, r5, #1
_0201D518:
cmp r5, #0x20
blo _0201D508
ldr r0, _0201D540 ; =0x0380FFF4
mov r1, r4
ldr r0, [r0]
add r0, r0, #0x188
bl sub_03028548
mov r0, #1
_0201D538:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201D540: .word 0x0380FFF4
_0201D544: .word 0x00000FFF
arm_func_end sub_0201D450
arm_func_start sub_0201D548
sub_0201D548: ; 0x0201D548
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _0201D630 ; =0x0380FFF4
mov r6, r1
ldr r1, [r3]
mov r7, r0
add r0, r1, #0x188
mov r1, #0x3a
mov r5, r2
bl sub_0302805C
movs r4, r0
bne _0201D584
mov r0, #1
bl sub_0201A85C
mov r0, #0
b _0201D628
_0201D584:
mov r0, #0x87
strh r0, [r4, #0xc]
mov r0, #0x15
strh r0, [r4, #0xe]
mov r1, r7
add r0, r4, #0x10
bl sub_020198D0
strh r6, [r4, #0x16]
add r0, r5, #1
bl sub_0201A540
add r6, r5, #2
strh r0, [r4, #0x18]
mov r7, #0
add r5, r4, #0x1a
b _0201D5E0
_0201D5C0:
cmp r7, #0x20
bhs _0201D5EC
add r0, r6, r7
bl sub_0201A540
mov r1, r0
add r0, r5, r7
bl sub_0201A514
add r7, r7, #1
_0201D5E0:
ldrh r0, [r4, #0x18]
cmp r7, r0
blo _0201D5C0
_0201D5EC:
add r6, r4, #0x1a
mov r5, #0
b _0201D608
_0201D5F8:
mov r1, r5
add r0, r6, r7
bl sub_0201A514
add r7, r7, #1
_0201D608:
cmp r7, #0x20
blo _0201D5F8
ldr r0, _0201D630 ; =0x0380FFF4
mov r1, r4
ldr r0, [r0]
add r0, r0, #0x188
bl sub_03028548
mov r0, #1
_0201D628:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201D630: .word 0x0380FFF4
arm_func_end sub_0201D548
arm_func_start sub_0201D634
sub_0201D634: ; 0x0201D634
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _0201D6AC ; =0x0380FFF4
mov r5, r1
ldr r1, [r2]
mov r6, r0
add r0, r1, #0x188
mov r1, #0x18
bl sub_0302805C
movs r4, r0
bne _0201D66C
mov r0, #1
bl sub_0201A85C
mov r0, #0
b _0201D6A4
_0201D66C:
mov r0, #0x88
strh r0, [r4, #0xc]
mov r2, #4
mov r1, r6
add r0, r4, #0x10
strh r2, [r4, #0xe]
bl sub_020198D0
ldr r0, _0201D6AC ; =0x0380FFF4
strh r5, [r4, #0x16]
ldr r0, [r0]
mov r1, r4
add r0, r0, #0x188
bl sub_03028548
mov r0, #1
_0201D6A4:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0201D6AC: .word 0x0380FFF4
arm_func_end sub_0201D634
arm_func_start sub_0201D6B0
sub_0201D6B0: ; 0x0201D6B0
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _0201D720 ; =0x0380FFF4
mov r5, r0
ldr r0, [r1]
mov r1, #0x16
add r0, r0, #0x188
bl sub_0302805C
movs r4, r0
bne _0201D6E4
mov r0, #1
bl sub_0201A85C
mov r0, #0
b _0201D718
_0201D6E4:
mov r0, #0x8b
strh r0, [r4, #0xc]
mov r2, #3
mov r1, r5
add r0, r4, #0x10
strh r2, [r4, #0xe]
bl sub_020198D0
ldr r0, _0201D720 ; =0x0380FFF4
mov r1, r4
ldr r0, [r0]
add r0, r0, #0x188
bl sub_03028548
mov r0, #1
_0201D718:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201D720: .word 0x0380FFF4
arm_func_end sub_0201D6B0
arm_func_start sub_0201D724
sub_0201D724: ; 0x0201D724
stmdb sp!, {r3, lr}
ldr r0, _0201D780 ; =0x0380FFF4
mov r1, #0x10
ldr r0, [r0]
add r0, r0, #0x188
bl sub_0302805C
movs r1, r0
bne _0201D754
mov r0, #1
bl sub_0201A85C
mov r0, #0
b _0201D778
_0201D754:
mov r0, #0x8c
strh r0, [r1, #0xc]
mov r2, #0
ldr r0, _0201D780 ; =0x0380FFF4
strh r2, [r1, #0xe]
ldr r0, [r0]
add r0, r0, #0x188
bl sub_03028548
mov r0, #1
_0201D778:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201D780: .word 0x0380FFF4
arm_func_end sub_0201D724
arm_func_start sub_0201D784
sub_0201D784: ; 0x0201D784
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _0201D89C ; =0x0380FFF4
mov r6, r0
ldr r2, [r1]
add r0, r2, #0x300
ldrh r1, [r0, #0xe4]
add r0, r2, #0x188
add r1, r1, #0x3e
add r4, r2, #0x344
bl sub_0302805C
movs r5, r0
bne _0201D7C4
mov r0, #1
bl sub_0201A85C
mov r0, #0
b _0201D894
_0201D7C4:
mov r0, #0x8d
strh r0, [r5, #0xc]
ldrh r1, [r4, #0xa0]
add r0, r5, #0x1f
add r1, r1, #1
add r1, r1, r1, lsr #31
mov r1, r1, asr #1
add r1, r1, #0x16
strh r1, [r5, #0xe]
ldrh r1, [r6, #0x12]
and r1, r1, #0xff
bl sub_0201A514
ldrh r1, [r6, #0xe]
add r0, r5, #0x1e
and r1, r1, #0xff
bl sub_0201A514
add r0, r5, #0x2e
add r1, r6, #0x1e
bl sub_020198D0
ldrh r2, [r4, #0xa0]
strh r2, [r5, #0x16]
cmp r2, #0
beq _0201D87C
ldrh r0, [r4, #0xa2]
tst r0, #1
ldr r0, [r4, #0x9c]
beq _0201D870
add r7, r5, #0x3c
add r6, r0, #1
mov r4, #0
b _0201D860
_0201D840:
mov r0, r6
bl sub_0201A540
mov r1, r0
mov r0, r7
bl sub_0201A514
add r6, r6, #1
add r7, r7, #1
add r4, r4, #1
_0201D860:
ldrh r0, [r5, #0x16]
cmp r4, r0
blo _0201D840
b _0201D87C
_0201D870:
add r1, r5, #0x3c
add r2, r2, #1
bl sub_0302D78C
_0201D87C:
ldr r0, _0201D89C ; =0x0380FFF4
mov r1, r5
ldr r0, [r0]
add r0, r0, #0x188
bl sub_03028548
mov r0, #1
_0201D894:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201D89C: .word 0x0380FFF4
arm_func_end sub_0201D784
arm_func_start sub_0201D8A0
sub_0201D8A0: ; 0x0201D8A0
ldr r1, _0201D8C0 ; =0x0380FFF4
ldr ip, _0201D8C4 ; =sub_037FDF74
ldr r1, [r1]
mov r0, #0
add r1, r1, #4
mov r2, #0x20
add r1, r1, #0x400
bx ip
.align 2, 0
_0201D8C0: .word 0x0380FFF4
_0201D8C4: .word sub_037FDF74
arm_func_end sub_0201D8A0
arm_func_start sub_0201D8C8
sub_0201D8C8: ; 0x0201D8C8
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _0201D9B0 ; =0x0380FFF4
mov r5, r0
mov r0, #1
strh r0, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
bne _0201D9A8
add r0, r5, #0x10
bl sub_0201864C
mov r4, r0
ldrh r0, [r5, #0x16]
bl sub_020186AC
orr r4, r4, r0
ldrh r0, [r5, #0x18]
bl sub_020186E0
orr r4, r4, r0
ldrh r0, [r5, #0x1c]
bl sub_02018720
orr r4, r4, r0
ldrh r0, [r5, #0x1e]
bl sub_020187A0
orr r4, r4, r0
ldrh r0, [r5, #0x20]
bl sub_020187D4
orr r4, r4, r0
ldrh r0, [r5, #0x22]
bl sub_02018874
orr r4, r4, r0
add r0, r5, #0x24
bl sub_02018898
orr r4, r4, r0
ldrh r0, [r5, #0x74]
bl sub_020188F8
orr r4, r4, r0
ldrh r0, [r5, #0x76]
bl sub_02018930
orr r4, r4, r0
ldrh r0, [r5, #0x78]
bl sub_02018968
orr r4, r4, r0
ldrh r0, [r5, #0x7a]
mov r1, #0
bl sub_020189A0
orr r4, r4, r0
add r0, r5, #0x7c
bl sub_02018A50
orr r4, r4, r0
ldrh r0, [r5, #0x9c]
bl sub_02018A80
orr r4, r4, r0
ldrh r0, [r5, #0x9e]
bl sub_02018B28
orr r0, r4, r0
_0201D9A8:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201D9B0: .word 0x0380FFF4
arm_func_end sub_0201D8C8
arm_func_start sub_0201D9B4
sub_0201D9B4: ; 0x0201D9B4
stmdb sp!, {r3, lr}
ldr r2, _0201D9F0 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
bne _0201D9E4
add r0, r0, #0x10
bl sub_0201864C
mov r3, r0
_0201D9E4:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201D9F0: .word 0x0380FFF4
arm_func_end sub_0201D9B4
arm_func_start sub_0201D9F4
sub_0201D9F4: ; 0x0201D9F4
mov r2, #1
strh r2, [r1, #2]
ldr ip, _0201DA08 ; =sub_027E8EBC
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_0201DA08: .word sub_027E8EBC
arm_func_end sub_0201D9F4
arm_func_start sub_0201DA0C
sub_0201DA0C: ; 0x0201DA0C
stmdb sp!, {r3, lr}
ldr r2, _0201DA48 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
bne _0201DA3C
ldrh r0, [r0, #0x10]
bl sub_020186E0
mov r3, r0
_0201DA3C:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DA48: .word 0x0380FFF4
arm_func_end sub_0201DA0C
arm_func_start sub_0201DA4C
sub_0201DA4C: ; 0x0201DA4C
stmdb sp!, {r3, lr}
ldr r2, _0201DA98 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r2, [r1, #0x4c]
cmp r2, #0x20
movhi r0, r3
bhi _0201DA90
bne _0201DA88
ldrh r1, [r1, #0x56]
cmp r1, #0
movne r0, r3
bne _0201DA90
_0201DA88:
ldrh r0, [r0, #0x10]
bl sub_02018720
_0201DA90:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DA98: .word 0x0380FFF4
arm_func_end sub_0201DA4C
arm_func_start sub_0201DA9C
sub_0201DA9C: ; 0x0201DA9C
mov r2, #1
strh r2, [r1, #2]
ldr ip, _0201DAB0 ; =sub_027E8FB0
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_0201DAB0: .word sub_027E8FB0
arm_func_end sub_0201DA9C
arm_func_start sub_0201DAB4
sub_0201DAB4: ; 0x0201DAB4
mov r2, #1
strh r2, [r1, #2]
ldr ip, _0201DAC8 ; =sub_027E8FE4
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_0201DAC8: .word sub_027E8FE4
arm_func_end sub_0201DAB4
arm_func_start sub_0201DACC
sub_0201DACC: ; 0x0201DACC
mov r2, #1
strh r2, [r1, #2]
ldr ip, _0201DAE0 ; =sub_027E9084
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_0201DAE0: .word sub_027E9084
arm_func_end sub_0201DACC
arm_func_start sub_0201DAE4
sub_0201DAE4: ; 0x0201DAE4
ldr ip, _0201DAF8 ; =sub_027E90A8
mov r2, #1
add r0, r0, #0x10
strh r2, [r1, #2]
bx ip
.align 2, 0
_0201DAF8: .word sub_027E90A8
arm_func_end sub_0201DAE4
arm_func_start sub_0201DAFC
sub_0201DAFC: ; 0x0201DAFC
stmdb sp!, {r3, lr}
ldr r2, _0201DB38 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x20
bhi _0201DB2C
ldrh r0, [r0, #0x10]
bl sub_020188F8
mov r3, r0
_0201DB2C:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DB38: .word 0x0380FFF4
arm_func_end sub_0201DAFC
arm_func_start sub_0201DB3C
sub_0201DB3C: ; 0x0201DB3C
mov r2, #1
strh r2, [r1, #2]
ldr ip, _0201DB50 ; =sub_027E9140
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_0201DB50: .word sub_027E9140
arm_func_end sub_0201DB3C
arm_func_start sub_0201DB54
sub_0201DB54: ; 0x0201DB54
mov r2, #1
strh r2, [r1, #2]
ldr ip, _0201DB68 ; =sub_027E9178
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_0201DB68: .word sub_027E9178
arm_func_end sub_0201DB54
arm_func_start sub_0201DB6C
sub_0201DB6C: ; 0x0201DB6C
mov r2, #1
strh r2, [r1, #2]
ldr ip, _0201DB84 ; =sub_027E91B0
ldrh r0, [r0, #0x10]
mov r1, #0
bx ip
.align 2, 0
_0201DB84: .word sub_027E91B0
arm_func_end sub_0201DB6C
arm_func_start sub_0201DB88
sub_0201DB88: ; 0x0201DB88
ldr ip, _0201DB9C ; =sub_027E9260
mov r2, #1
add r0, r0, #0x10
strh r2, [r1, #2]
bx ip
.align 2, 0
_0201DB9C: .word sub_027E9260
arm_func_end sub_0201DB88
arm_func_start sub_0201DBA0
sub_0201DBA0: ; 0x0201DBA0
mov r2, #1
strh r2, [r1, #2]
ldr ip, _0201DBB4 ; =sub_027E9290
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_0201DBB4: .word sub_027E9290
arm_func_end sub_0201DBA0
arm_func_start sub_0201DBB8
sub_0201DBB8: ; 0x0201DBB8
mov r2, #1
strh r2, [r1, #2]
ldr ip, _0201DBCC ; =sub_027E9338
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_0201DBCC: .word sub_027E9338
arm_func_end sub_0201DBB8
arm_func_start sub_0201DBD0
sub_0201DBD0: ; 0x0201DBD0
stmdb sp!, {r3, r4, r5, lr}
mov r2, #1
strh r2, [r1, #2]
mov r5, r0
ldrh r0, [r5, #0x14]
cmp r0, #0x3f
movhi r0, #5
bhi _0201DC14
ldrh r0, [r5, #0x10]
ldrh r1, [r5, #0x12]
bl sub_02018B4C
movs r4, r0
bne _0201DC10
ldrh r1, [r5, #0x14]
mov r0, #0x2e
bl sub_02019DE0
_0201DC10:
mov r0, r4
_0201DC14:
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_0201DBD0
arm_func_start sub_0201DC1C
sub_0201DC1C: ; 0x0201DC1C
stmdb sp!, {r4, lr}
ldr ip, _0201DD1C ; =0x0380FFF4
mov r3, #1
ldr r2, [ip]
ldr r2, [r2, #0x31c]
strh r3, [r1, #2]
ldr r1, [ip]
ldrh r4, [r0, #0x10]
add r1, r1, #0x300
ldrh r1, [r1, #0x22]
cmp r4, r1
blo _0201DC5C
rsb r1, r3, #0x10000
cmp r4, r1
movne r0, #5
bne _0201DD14
_0201DC5C:
ldrh r3, [r0, #0x14]
cmp r3, #0x3f
bls _0201DC78
ldr r1, _0201DD20 ; =0x0000FFFF
cmp r3, r1
movne r0, #5
bne _0201DD14
_0201DC78:
ldr r1, _0201DD20 ; =0x0000FFFF
cmp r4, r1
bne _0201DCCC
ldr ip, _0201DD1C ; =0x0380FFF4
mov r4, #1
mov r3, #0x1c
b _0201DCB4
_0201DC94:
mla lr, r4, r3, r2
ldrh r1, [r0, #0x12]
add r4, r4, #1
strh r1, [lr, #0x1a]
ldrh r1, [lr, #0x18]
cmp r1, #0
ldrneh r1, [r0, #0x12]
strneh r1, [lr, #0x18]
_0201DCB4:
ldr r1, [ip]
add r1, r1, #0x300
ldrh r1, [r1, #0x22]
cmp r4, r1
blo _0201DC94
b _0201DD00
_0201DCCC:
cmp r4, #0
beq _0201DD00
mov r1, #0x1c
mla r3, r4, r1, r2
ldrh lr, [r0, #0x12]
add ip, r2, #0x18
strh lr, [r3, #0x1a]
ldrh r2, [r0, #0x10]
mul r3, r2, r1
ldrh r1, [ip, r3]
cmp r1, #0
ldrneh r1, [r0, #0x12]
strneh r1, [ip, r3]
_0201DD00:
ldrh r0, [r0, #0x14]
cmp r0, #0
beq _0201DD10
bl sub_02019620
_0201DD10:
mov r0, #0
_0201DD14:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201DD1C: .word 0x0380FFF4
_0201DD20: .word 0x0000FFFF
arm_func_end sub_0201DC1C
arm_func_start sub_0201DD24
sub_0201DD24: ; 0x0201DD24
ldr r2, _0201DD78 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x20
movhi r0, r3
bxhi lr
ldrh r1, [r0, #0x10]
add r1, r1, #1
strh r1, [r0, #0x10]
ldr r1, [r2]
ldrh r2, [r0, #0x10]
add r0, r1, #0x300
ldrh r1, [r0, #0x20]
cmp r2, r1
movhi r0, #5
strlsh r2, [r0, #0x22]
movls r0, #0
bx lr
.align 2, 0
_0201DD78: .word 0x0380FFF4
arm_func_end sub_0201DD24
arm_func_start sub_0201DD7C
sub_0201DD7C: ; 0x0201DD7C
stmdb sp!, {r3, lr}
ldr r2, _0201DDB8 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
blo _0201DDAC
ldrh r0, [r0, #0x10]
bl sub_02018B90
mov r3, r0
_0201DDAC:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DDB8: .word 0x0380FFF4
arm_func_end sub_0201DD7C
arm_func_start sub_0201DDBC
sub_0201DDBC: ; 0x0201DDBC
stmdb sp!, {r3, lr}
ldr r2, _0201DDF8 ; =0x0380FFF4
mov r3, r0
mov r0, #1
strh r0, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
blo _0201DDF0
ldrh r0, [r3, #0x10]
ldrh r1, [r3, #0x12]
bl sub_02018BF8
_0201DDF0:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DDF8: .word 0x0380FFF4
arm_func_end sub_0201DDBC
arm_func_start sub_0201DDFC
sub_0201DDFC: ; 0x0201DDFC
stmdb sp!, {r3, lr}
ldr r2, _0201DE38 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
blo _0201DE2C
ldrh r0, [r0, #0x10]
bl sub_02018CCC
mov r3, r0
_0201DE2C:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DE38: .word 0x0380FFF4
arm_func_end sub_0201DDFC
arm_func_start sub_0201DE3C
sub_0201DE3C: ; 0x0201DE3C
stmdb sp!, {r3, lr}
ldr r2, _0201DE78 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
blo _0201DE6C
ldrh r0, [r0, #0x10]
bl sub_02018D0C
mov r3, r0
_0201DE6C:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DE78: .word 0x0380FFF4
arm_func_end sub_0201DE3C
arm_func_start sub_0201DE7C
sub_0201DE7C: ; 0x0201DE7C
ldr ip, _0201DE90 ; =sub_027E956C
mov r2, #1
add r0, r0, #0x10
strh r2, [r1, #2]
bx ip
.align 2, 0
_0201DE90: .word sub_027E956C
arm_func_end sub_0201DE7C
arm_func_start sub_0201DE94
sub_0201DE94: ; 0x0201DE94
mov r2, #1
strh r2, [r1, #2]
mov r1, r0
ldrh r0, [r1, #0x10]
ldr ip, _0201DEB0 ; =sub_027E95D0
add r1, r1, #0x12
bx ip
.align 2, 0
_0201DEB0: .word sub_027E95D0
arm_func_end sub_0201DE94
arm_func_start sub_0201DEB4
sub_0201DEB4: ; 0x0201DEB4
stmdb sp!, {r3, lr}
ldr r2, _0201DEEC ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x2e]
cmp r1, #1
movne r0, #0xb
bne _0201DEE4
ldrh r0, [r0, #0x10]
bl sub_02018ED0
_0201DEE4:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DEEC: .word 0x0380FFF4
arm_func_end sub_0201DEB4
arm_func_start sub_0201DEF0
sub_0201DEF0: ; 0x0201DEF0
stmdb sp!, {r3, lr}
ldr r2, _0201DF28 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x2e]
cmp r1, #1
movne r0, #0xb
bne _0201DF20
ldrh r0, [r0, #0x10]
bl sub_02018F28
_0201DF20:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DF28: .word 0x0380FFF4
arm_func_end sub_0201DEF0
arm_func_start sub_0201DF2C
sub_0201DF2C: ; 0x0201DF2C
stmdb sp!, {r3, lr}
ldr r2, _0201DF68 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x2e]
cmp r1, #2
cmpne r1, #3
movne r0, #0xb
bne _0201DF60
ldrh r0, [r0, #0x10]
bl sub_02018F6C
_0201DF60:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DF68: .word 0x0380FFF4
arm_func_end sub_0201DF2C
arm_func_start sub_0201DF6C
sub_0201DF6C: ; 0x0201DF6C
stmdb sp!, {r3, lr}
ldr r2, _0201DFCC ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
mov r3, r0
add r0, r1, #0x300
ldrh r0, [r0, #0x2e]
cmp r0, #1
movne r0, #0xb
bne _0201DFC4
ldrh r0, [r3, #0x10]
ldrh r2, [r3, #0xe]
add r1, r0, #1
add r1, r1, r1, lsr #31
mov r1, r1, asr #1
add r1, r1, #1
cmp r2, r1
movlt r0, #4
blt _0201DFC4
add r1, r3, #0x12
bl sub_02019744
_0201DFC4:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201DFCC: .word 0x0380FFF4
arm_func_end sub_0201DF6C
arm_func_start sub_0201DFD0
sub_0201DFD0: ; 0x0201DFD0
stmdb sp!, {r4, lr}
ldr r0, _0201E104 ; =0x0380FFF4
mov r4, r1
mov r1, #0x21
strh r1, [r4, #2]
ldr r1, [r0]
add r0, r4, #6
add r1, r1, #0x324
bl sub_020198D0
ldr r0, _0201E104 ; =0x0380FFF4
add r1, r4, #0x22
ldr r3, [r0]
mov r2, #0x20
add r3, r3, #0x300
ldrh r3, [r3, #0x2a]
strh r3, [r4, #0xc]
ldr r3, [r0]
add r3, r3, #0x300
ldrh r3, [r3, #0x2c]
strh r3, [r4, #0xe]
ldr r3, [r0]
add r3, r3, #0x300
ldrh r3, [r3, #0xbe]
strh r3, [r4, #0x10]
ldr r3, [r0]
add r3, r3, #0x300
ldrh r3, [r3, #0x2e]
strh r3, [r4, #0x12]
ldr r3, [r0]
add r3, r3, #0x300
ldrh r3, [r3, #0x30]
strh r3, [r4, #0x14]
ldr r3, [r0]
add r3, r3, #0x300
ldrh r3, [r3, #0x34]
strh r3, [r4, #0x16]
ldr r3, [r0]
add r3, r3, #0x300
ldrh r3, [r3, #0x36]
strh r3, [r4, #0x18]
ldr r3, [r0]
add r3, r3, #0x300
ldrh r3, [r3, #0x3a]
mov r3, r3, lsl #0x1f
mov r3, r3, lsr #0x1f
strh r3, [r4, #0x1a]
ldr r3, [r0]
add r3, r3, #0x300
ldrh r3, [r3, #0x3a]
mov r3, r3, lsl #0x1e
mov r3, r3, lsr #0x1f
strh r3, [r4, #0x1c]
ldr r3, [r0]
add r3, r3, #0x300
ldrh r3, [r3, #0xc2]
strh r3, [r4, #0x1e]
ldr r3, [r0]
add r3, r3, #0x300
ldrh r3, [r3, #0x3c]
strh r3, [r4, #0x20]
ldr r0, [r0]
add r0, r0, #0x384
bl sub_0302D78C
ldr r2, _0201E104 ; =0x0380FFF4
mov r0, #0
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x3a]
mov r1, r1, lsl #0x1d
mov r1, r1, lsr #0x1f
strh r1, [r4, #0x42]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x32]
strh r1, [r4, #0x44]
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201E104: .word 0x0380FFF4
arm_func_end sub_0201DFD0
arm_func_start sub_0201E108
sub_0201E108: ; 0x0201E108
stmdb sp!, {r3, lr}
ldr r0, _0201E134 ; =0x0380FFF4
mov r2, #4
strh r2, [r1, #2]
ldr r2, [r0]
add r0, r1, #6
add r1, r2, #0x324
bl sub_020198D0
mov r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201E134: .word 0x0380FFF4
arm_func_end sub_0201E108
arm_func_start sub_0201E138
sub_0201E138: ; 0x0201E138
ldr r0, _0201E15C ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x2a]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E15C: .word 0x0380FFF4
arm_func_end sub_0201E138
arm_func_start sub_0201E160
sub_0201E160: ; 0x0201E160
ldr r3, _0201E194 ; =0x0380FFF4
mov r0, #3
strh r0, [r1, #2]
ldr r2, [r3]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x2c]
strh r2, [r1, #6]
ldr r2, [r3]
add r2, r2, #0x300
ldrh r2, [r2, #0xbe]
strh r2, [r1, #8]
bx lr
.align 2, 0
_0201E194: .word 0x0380FFF4
arm_func_end sub_0201E160
arm_func_start sub_0201E198
sub_0201E198: ; 0x0201E198
ldr r0, _0201E1BC ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x2e]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E1BC: .word 0x0380FFF4
arm_func_end sub_0201E198
arm_func_start sub_0201E1C0
sub_0201E1C0: ; 0x0201E1C0
ldr r0, _0201E1E4 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x30]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E1E4: .word 0x0380FFF4
arm_func_end sub_0201E1C0
arm_func_start sub_0201E1E8
sub_0201E1E8: ; 0x0201E1E8
ldr r0, _0201E20C ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x34]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E20C: .word 0x0380FFF4
arm_func_end sub_0201E1E8
arm_func_start sub_0201E210
sub_0201E210: ; 0x0201E210
ldr r0, _0201E234 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x36]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E234: .word 0x0380FFF4
arm_func_end sub_0201E210
arm_func_start sub_0201E238
sub_0201E238: ; 0x0201E238
ldr r0, _0201E264 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x3a]
mov r2, r2, lsl #0x1f
mov r2, r2, lsr #0x1f
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E264: .word 0x0380FFF4
arm_func_end sub_0201E238
arm_func_start sub_0201E268
sub_0201E268: ; 0x0201E268
ldr r0, _0201E294 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x3a]
mov r2, r2, lsl #0x1e
mov r2, r2, lsr #0x1f
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E294: .word 0x0380FFF4
arm_func_end sub_0201E268
arm_func_start sub_0201E298
sub_0201E298: ; 0x0201E298
ldr r0, _0201E2BC ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0xc2]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E2BC: .word 0x0380FFF4
arm_func_end sub_0201E298
arm_func_start sub_0201E2C0
sub_0201E2C0: ; 0x0201E2C0
ldr r0, _0201E2E4 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x3c]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E2E4: .word 0x0380FFF4
arm_func_end sub_0201E2C0
arm_func_start sub_0201E2E8
sub_0201E2E8: ; 0x0201E2E8
ldr r0, _0201E320 ; =0x0380FFF4
mov r2, #0x11
strh r2, [r1, #2]
ldr r0, [r0]
add r3, r1, #6
add r2, r0, #0x384
mov r1, #0
_0201E304:
ldrh r0, [r2], #2
add r1, r1, #1
cmp r1, #0x10
strh r0, [r3], #2
blo _0201E304
mov r0, #0
bx lr
.align 2, 0
_0201E320: .word 0x0380FFF4
arm_func_end sub_0201E2E8
arm_func_start sub_0201E324
sub_0201E324: ; 0x0201E324
ldr r0, _0201E350 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x3a]
mov r2, r2, lsl #0x1d
mov r2, r2, lsr #0x1f
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E350: .word 0x0380FFF4
arm_func_end sub_0201E324
arm_func_start sub_0201E354
sub_0201E354: ; 0x0201E354
ldr r0, _0201E378 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x32]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E378: .word 0x0380FFF4
arm_func_end sub_0201E354
arm_func_start sub_0201E37C
sub_0201E37C: ; 0x0201E37C
stmdb sp!, {r4, lr}
mov r4, r1
mov r0, #4
strh r0, [r4, #2]
mov r0, #0x13
bl sub_02019DB4
strh r0, [r4, #6]
mov r0, #0x35
bl sub_02019DB4
strh r0, [r4, #8]
mov r0, #0x2e
bl sub_02019DB4
strh r0, [r4, #0xa]
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_0201E37C
arm_func_start sub_0201E3BC
sub_0201E3BC: ; 0x0201E3BC
ldr r0, _0201E3E4 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x22]
sub r2, r2, #1
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E3E4: .word 0x0380FFF4
arm_func_end sub_0201E3BC
arm_func_start sub_0201E3E8
sub_0201E3E8: ; 0x0201E3E8
ldr r0, _0201E420 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r2, [r0, #0x4c]
cmp r2, #0x10
movlo r0, #1
ldrhsh r2, [r0, #0x3a]
movhs r0, #0
movhs r2, r2, lsl #0x1c
movhs r2, r2, lsr #0x1f
strhsh r2, [r1, #6]
bx lr
.align 2, 0
_0201E420: .word 0x0380FFF4
arm_func_end sub_0201E3E8
arm_func_start sub_0201E424
sub_0201E424: ; 0x0201E424
ldr r3, _0201E480 ; =0x0380FFF4
mov r0, #3
strh r0, [r1, #2]
ldr r0, [r3]
add r0, r0, #0x300
ldrh r2, [r0, #0x4c]
cmp r2, #0x10
movlo r0, #1
bxlo lr
ldrh r2, [r0, #0x3a]
mov r0, #0
mov r2, r2, lsl #0x1b
mov r2, r2, lsr #0x1f
strh r2, [r1, #6]
ldr r2, [r3]
add r2, r2, #0x300
ldrh r3, [r2, #0x3a]
mov r2, r3, lsl #0x1c
mov r3, r3, lsl #0x1a
mov r2, r2, lsr #0x1f
eor r2, r2, r3, lsr #31
strh r2, [r1, #8]
bx lr
.align 2, 0
_0201E480: .word 0x0380FFF4
arm_func_end sub_0201E424
arm_func_start sub_0201E484
sub_0201E484: ; 0x0201E484
ldr r0, _0201E4BC ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r2, [r0, #0x4c]
cmp r2, #0x10
movlo r0, #1
ldrhsh r2, [r0, #0x3a]
movhs r0, #0
movhs r2, r2, lsl #0x19
movhs r2, r2, lsr #0x1f
strhsh r2, [r1, #6]
bx lr
.align 2, 0
_0201E4BC: .word 0x0380FFF4
arm_func_end sub_0201E484
arm_func_start sub_0201E4C0
sub_0201E4C0: ; 0x0201E4C0
ldr r0, _0201E4F8 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r2, [r0, #0x4c]
cmp r2, #0x10
movlo r0, #1
ldrhsh r2, [r0, #0x3a]
movhs r0, #0
movhs r2, r2, lsl #0x18
movhs r2, r2, lsr #0x1f
strhsh r2, [r1, #6]
bx lr
.align 2, 0
_0201E4F8: .word 0x0380FFF4
arm_func_end sub_0201E4C0
arm_func_start sub_0201E4FC
sub_0201E4FC: ; 0x0201E4FC
stmdb sp!, {r3, lr}
ldr r0, _0201E528 ; =0x0380FFF4
mov r2, #4
strh r2, [r1, #2]
ldr r2, [r0]
add r0, r1, #6
add r1, r2, #0x3a8
bl sub_020198D0
mov r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201E528: .word 0x0380FFF4
arm_func_end sub_0201E4FC
arm_func_start sub_0201E52C
sub_0201E52C: ; 0x0201E52C
ldr r2, _0201E574 ; =0x0380FFF4
mov r0, #0x12
strh r0, [r1, #2]
ldr r0, [r2]
add ip, r1, #8
add r0, r0, #0x300
ldrh r0, [r0, #0x62]
mov r3, #0
strh r0, [r1, #6]
ldr r0, [r2]
add r1, r0, #0x364
_0201E558:
ldrh r0, [r1], #2
add r3, r3, #2
cmp r3, #0x20
strh r0, [ip], #2
blo _0201E558
mov r0, #0
bx lr
.align 2, 0
_0201E574: .word 0x0380FFF4
arm_func_end sub_0201E52C
arm_func_start sub_0201E578
sub_0201E578: ; 0x0201E578
ldr r0, _0201E59C ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0xb2]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E59C: .word 0x0380FFF4
arm_func_end sub_0201E578
arm_func_start sub_0201E5A0
sub_0201E5A0: ; 0x0201E5A0
ldr r0, _0201E5C4 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0xb8]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E5C4: .word 0x0380FFF4
arm_func_end sub_0201E5A0
arm_func_start sub_0201E5C8
sub_0201E5C8: ; 0x0201E5C8
ldr r0, _0201E5EC ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0xb4]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E5EC: .word 0x0380FFF4
arm_func_end sub_0201E5C8
arm_func_start sub_0201E5F0
sub_0201E5F0: ; 0x0201E5F0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r1
ldrh r0, [r4, #2]
ldr r1, _0201E6C4 ; =0x0380FFF4
cmp r0, #1
ldrhi r0, _0201E6C4 ; =0x0380FFF4
ldrhi r0, [r0]
addhi r0, r0, #0x300
ldrhih r0, [r0, #0xe4]
strhih r0, [r4, #6]
ldrh r0, [r4, #2]
ldr r3, [r1]
sub r1, r0, #2
add r0, r3, #0x300
ldrh r2, [r0, #0xe4]
cmp r2, r1, lsl #1
movgt r0, #4
bgt _0201E6BC
ldrh r2, [r4, #6]
cmp r2, #0
beq _0201E6A0
ldrh r0, [r0, #0xe6]
tst r0, #1
ldr r0, [r3, #0x3e0]
beq _0201E694
add r6, r4, #8
add r5, r0, #1
mov r7, #0
b _0201E684
_0201E664:
mov r0, r5
bl sub_0201A540
mov r1, r0
mov r0, r6
bl sub_0201A514
add r6, r6, #1
add r5, r5, #1
add r7, r7, #1
_0201E684:
ldrh r0, [r4, #6]
cmp r7, r0
blo _0201E664
b _0201E6A0
_0201E694:
add r1, r4, #8
add r2, r2, #1
bl sub_0302D78C
_0201E6A0:
ldrh r1, [r4, #6]
mov r0, #0
add r1, r1, #1
add r1, r1, r1, lsr #31
mov r1, r1, asr #1
add r1, r1, #2
strh r1, [r4, #2]
_0201E6BC:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_0201E6C4: .word 0x0380FFF4
arm_func_end sub_0201E5F0
arm_func_start sub_0201E6C8
sub_0201E6C8: ; 0x0201E6C8
stmdb sp!, {r3, lr}
ldr r2, _0201E704 ; =0x0380FFF4
mov r0, #1
strh r0, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0
cmpne r1, #0x10
bne _0201E6FC
mov r0, #0
bl sub_03028A28
mov r0, #0
_0201E6FC:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201E704: .word 0x0380FFF4
arm_func_end sub_0201E6C8
arm_func_start sub_0201E708
sub_0201E708: ; 0x0201E708
stmdb sp!, {r3, lr}
ldr r2, _0201E760 ; =0x0380FFF4
mov r0, #1
strh r0, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r2, [r1, #0x4c]
cmp r2, #0x20
bhi _0201E758
ldrh r1, [r1, #0x56]
cmp r1, #0
bne _0201E758
mov r0, #0
bl sub_0202451C
cmp r0, #0
movne r0, #0xe
bne _0201E758
mov r0, #0x10
bl sub_03028A28
mov r0, #0
_0201E758:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201E760: .word 0x0380FFF4
arm_func_end sub_0201E708
arm_func_start sub_0201E764
sub_0201E764: ; 0x0201E764
stmdb sp!, {r3, lr}
ldr r0, _0201E7B4 ; =0x0380FFF4
mov r2, #1
strh r2, [r1, #2]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x4c]
cmp r1, #0x10
beq _0201E798
cmp r1, #0x20
ldreqh r0, [r0, #0x56]
cmpeq r0, #0
bne _0201E7A8
_0201E798:
mov r0, #0x20
bl sub_03028A28
mov r0, #0
b _0201E7AC
_0201E7A8:
mov r0, #1
_0201E7AC:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201E7B4: .word 0x0380FFF4
arm_func_end sub_0201E764
arm_func_start sub_0201E7B8
sub_0201E7B8: ; 0x0201E7B8
stmdb sp!, {r3, lr}
ldr r0, _0201E7F0 ; =0x0380FFF4
mov r2, #1
strh r2, [r1, #2]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0x20
blo _0201E7E0
bl sub_03028988
_0201E7E0:
bl sub_02018184
mov r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201E7F0: .word 0x0380FFF4
arm_func_end sub_0201E7B8
arm_func_start sub_0201E7F4
sub_0201E7F4: ; 0x0201E7F4
stmdb sp!, {r3, lr}
ldr r0, _0201E828 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0
mov r0, #1
beq _0201E820
strh r0, [r1, #2]
bl sub_0201996C
mov r0, #0
_0201E820:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0201E828: .word 0x0380FFF4
arm_func_end sub_0201E7F4
arm_func_start sub_0201E82C
sub_0201E82C: ; 0x0201E82C
stmdb sp!, {r4, lr}
ldr r0, _0201E8C0 ; =0x027F7868
mov r4, r1
mov r3, #9
add r1, r4, #6
mov r2, #8
strh r3, [r4, #2]
bl sub_0302D78C
ldr r1, _0201E8C4 ; =0x04808000
ldr r0, _0201E8C8 ; =0x0380FFF4
ldrh r1, [r1]
strh r1, [r4, #0xe]
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #0x8000
moveq r1, #0x6d
ldreq r0, _0201E8CC ; =0x0000933D
streqh r1, [r4, #0x10]
beq _0201E88C
mov r0, #0
bl sub_02019DB4
strh r0, [r4, #0x10]
bl sub_02019E30
_0201E88C:
strh r0, [r4, #0x12]
ldr r0, _0201E8C8 ; =0x0380FFF4
ldr r1, [r0]
add r0, r1, #0x600
ldrh r0, [r0, #0x90]
tst r0, #0x4000
addne r0, r1, #0x500
ldrneh r0, [r0, #0xf8]
moveq r0, #2
strh r0, [r4, #0x14]
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201E8C0: .word 0x027F7868
_0201E8C4: .word 0x04808000
_0201E8C8: .word 0x0380FFF4
_0201E8CC: .word 0x0000933D
arm_func_end sub_0201E82C
arm_func_start sub_0201E8D0
sub_0201E8D0: ; 0x0201E8D0
stmdb sp!, {r4, lr}
ldr r0, _0201E928 ; =0x0380FFF4
mov r4, r1
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0
moveq r0, #1
beq _0201E920
mov r0, #0x5c
strh r0, [r4, #2]
bl sub_0201999C
ldr r0, _0201E928 ; =0x0380FFF4
add r1, r4, #8
ldr r0, [r0]
mov r2, #0xb4
add r0, r0, #0x13c
add r0, r0, #0x400
bl sub_0302D7DC
mov r0, #0
_0201E920:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201E928: .word 0x0380FFF4
arm_func_end sub_0201E8D0
arm_func_start sub_0201E92C
sub_0201E92C: ; 0x0201E92C
ldr r0, _0201E950 ; =0x0380FFF4
mov r2, #2
strh r2, [r1, #2]
ldr r2, [r0]
mov r0, #0
add r2, r2, #0x300
ldrh r2, [r2, #0x4c]
strh r2, [r1, #6]
bx lr
.align 2, 0
_0201E950: .word 0x0380FFF4
arm_func_end sub_0201E92C
arm_func_start sub_0201E954
sub_0201E954: ; 0x0201E954
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r2, _0201EC7C ; =0x0380FFF4
mov r5, r0
ldr r2, [r2]
mov r0, #1
strh r0, [r1, #2]
add r4, r2, #0x344
ldrh r1, [r4, #8]
and r1, r1, #0xf0
cmp r1, #0x10
bne _0201EC70
ldrh r0, [r5, #0x10]
cmp r0, #1
movhi r0, #5
bhi _0201EC70
ldrh r0, [r5, #0x14]
cmp r0, #0xa
cmpne r0, #0x14
movne r0, #5
bne _0201EC70
ldrh r0, [r5, #0x12]
cmp r0, #4
movhi r0, #5
bhi _0201EC70
mov r0, #0
bl sub_0202451C
cmp r0, #0
movne r0, #0xe
bne _0201EC70
ldrh r0, [r5, #0x10]
cmp r0, #0
beq _0201EBE4
cmp r0, #1
bne _0201EC6C
ldrh r0, [r4, #8]
cmp r0, #0x10
movne r0, #1
bne _0201EC70
mov r0, #0
str r0, [sp]
add r2, sp, #0
mov r0, #0x65
mov r1, #1
bl sub_02024660
ldr r6, [sp]
mov r0, #1
bl sub_02019DB4
cmp r6, r0
beq _0201EA30
mov r1, r6
mov r0, #1
bl sub_02019DE0
ldr r0, _0201EC80 ; =0x00001388
bl sub_0201A198
_0201EA30:
ldrh r0, [r5, #0x12]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _0201EC6C
_0201EA40: ; jump table
b _0201EA54 ; case 0
b _0201EA54 ; case 1
b _0201EA54 ; case 2
b _0201EAEC ; case 3
b _0201EAEC ; case 4
_0201EA54:
mov r0, #0x11
strh r0, [r4, #8]
ldrh r0, [r5, #0x16]
mov r1, #1
bl sub_020190F0
ldr r1, _0201EC84 ; =0x04808040
mov r2, #0x8000
ldr r0, _0201EC88 ; =0x000005DC
strh r2, [r1]
bl sub_0201A198
ldrh r1, [r5, #0x14]
mov r0, #2
strh r1, [r4, #0x16]
bl sub_02019DB4
str r0, [sp]
ldrh r1, [r5, #0x12]
ldr r2, _0201EC8C ; =0x048081A4
cmp r1, #1
orrls r0, r0, #0x10
strls r0, [sp]
ldrh r0, [r5, #0x14]
strh r0, [r2]
ldrh r0, [r5, #0x12]
cmp r0, #1
strneh r0, [r2, #-2]
bne _0201EAD0
ldr r1, [sp]
mov r0, #3
orr r1, r1, #0x20
str r1, [sp]
strh r0, [r2, #-2]
_0201EAD0:
ldr r1, [sp]
mov r0, #2
bl sub_02019DE0
ldr r1, _0201EC90 ; =0x00000823
ldr r0, _0201EC94 ; =0x048081A0
strh r1, [r0]
b _0201EC6C
_0201EAEC:
ldr r0, _0201EC7C ; =0x0380FFF4
ldr r0, [r0]
add r4, r0, #0x344
bl sub_030285D0
bl sub_03028988
mov r0, #6
bl sub_02019DB4
strh r0, [r4, #0xac]
ldrh r0, [r5, #0x12]
cmp r0, #4
bne _0201EB24
mov r0, #6
mov r1, #0
bl sub_02019DE0
_0201EB24:
ldr r1, _0201EC98 ; =0x04804000
mov r0, #0
mov r2, #0xc
bl sub_0302D764
ldr r1, _0201EC98 ; =0x04804000
mov r0, #0x14
strh r0, [r1, #8]
mov r0, #0x7d0
strh r0, [r1, #0xa]
add r3, r1, #0xc
ldr r1, _0201EC9C ; =0x00005555
ldr r0, _0201ECA0 ; =0x000007EC
mov r2, #0
_0201EB58:
add r2, r2, #2
cmp r2, r0
strh r1, [r3], #2
blo _0201EB58
ldr r1, _0201EC98 ; =0x04804000
mov r2, #8
ldr r0, _0201ECA4 ; =0x04808194
strh r2, [r1, #0xc]
mov r1, #6
strh r1, [r0]
mov r0, #0x12
strh r0, [r4, #8]
mov r1, #1
strh r1, [r4, #0x18]
ldrh r0, [r5, #0x16]
bl sub_020190F0
ldr r1, _0201EC84 ; =0x04808040
mov r2, #0x8000
ldr r0, _0201EC88 ; =0x000005DC
strh r2, [r1]
bl sub_0201A198
mov r2, #1
ldr r3, _0201ECA8 ; =0x04808012
mov r0, #2
strh r0, [r3]
strh r2, [r3, #-0xe]
ldr r1, _0201EC98 ; =0x04804000
rsb r0, r2, #0x4000
and r0, r1, r0
mov r0, r0, lsl #0xf
mov r0, r0, lsr #0x10
strh r2, [r3, #0x9c]
orr r0, r0, #0x8000
strh r0, [r3, #0x8e]
b _0201EC6C
_0201EBE4:
ldrh r0, [r4, #8]
cmp r0, #0x11
bne _0201EC2C
bl sub_0201A23C
ldr r1, _0201EC94 ; =0x048081A0
mov r2, #0
strh r2, [r1]
mov r0, #1
strh r0, [r1, #2]
sub r0, r1, #0x160
strh r2, [r0]
mov r0, #2
bl sub_02019DB4
bic r1, r0, #0x30
mov r0, #2
str r1, [sp]
bl sub_02019DE0
b _0201EC64
_0201EC2C:
cmp r0, #0x12
bne _0201EC5C
ldr r1, _0201ECAC ; =0x04808004
mov r0, #0
strh r0, [r4, #0x18]
_0201EC40:
ldrh r0, [r1]
cmp r0, #0
bne _0201EC40
ldrh r1, [r4, #0xac]
mov r0, #6
bl sub_02019DE0
b _0201EC64
_0201EC5C:
mov r0, #1
b _0201EC70
_0201EC64:
mov r0, #0x10
strh r0, [r4, #8]
_0201EC6C:
mov r0, #0
_0201EC70:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, lr}
bx lr
.align 2, 0
_0201EC7C: .word 0x0380FFF4
_0201EC80: .word 0x00001388
_0201EC84: .word 0x04808040
_0201EC88: .word 0x000005DC
_0201EC8C: .word 0x048081A4
_0201EC90: .word 0x00000823
_0201EC94: .word 0x048081A0
_0201EC98: .word 0x04804000
_0201EC9C: .word 0x00005555
_0201ECA0: .word 0x000007EC
_0201ECA4: .word 0x04808194
_0201ECA8: .word 0x04808012
_0201ECAC: .word 0x04808004
arm_func_end sub_0201E954
arm_func_start sub_0201ECB0
sub_0201ECB0: ; 0x0201ECB0
ldr r0, _0201ED1C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x5c]
cmp r0, #0
beq _0201ECEC
ldr r0, _0201ED20 ; =0x04804000
mov r2, #0
strh r2, [r0]
ldr r1, _0201ED24 ; =0x048080A0
strh r2, [r0, #4]
ldrh r0, [r1]
orr r0, r0, #0x8000
strh r0, [r1]
bx lr
_0201ECEC:
ldr r2, _0201ED28 ; =0x048080AC
mov r3, #1
strh r3, [r2]
mov r1, #0
strh r1, [r2, #-0xa8]
mov r0, #2
strh r0, [r2, #-0x9a]
rsb r0, r3, #0x10000
strh r0, [r2, #-0x9c]
strh r1, [r2, #0xe8]
strh r1, [r2, #-0x6c]
bx lr
.align 2, 0
_0201ED1C: .word 0x0380FFF4
_0201ED20: .word 0x04804000
_0201ED24: .word 0x048080A0
_0201ED28: .word 0x048080AC
arm_func_end sub_0201ECB0
arm_func_start sub_0201ED2C
sub_0201ED2C: ; 0x0201ED2C
stmdb sp!, {r4, lr}
ldr r2, _0201EDD8 ; =0x0380FFF4
mov r3, #1
ldr r2, [r2]
strh r3, [r1, #2]
add r4, r2, #0x344
ldrh r2, [r4, #8]
and r1, r2, #0xf0
cmp r1, #0x10
movne r0, r3
bne _0201EDD0
ldrh r1, [r0, #0x10]
cmp r1, #0
beq _0201EDA4
cmp r1, #1
bne _0201EDCC
cmp r2, #0x10
movne r0, r3
bne _0201EDD0
ldrh r0, [r0, #0x12]
mov r1, r3
bl sub_020190F0
mov r0, #0
strh r0, [r4, #0xc]
bl sub_030285D0
mov r0, #0x8000
bl sub_020194D0
mov r0, #0x11
strh r0, [r4, #8]
b _0201EDCC
_0201EDA4:
cmp r2, #0x11
bne _0201EDBC
mov r0, #0
bl sub_020194D0
bl sub_03028988
b _0201EDC4
_0201EDBC:
mov r0, r3
b _0201EDD0
_0201EDC4:
mov r0, #0x10
strh r0, [r4, #8]
_0201EDCC:
mov r0, #0
_0201EDD0:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201EDD8: .word 0x0380FFF4
arm_func_end sub_0201ED2C
arm_func_start sub_0201EDDC
sub_0201EDDC: ; 0x0201EDDC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r1, _0201EFA0 ; =0x0380FFF4
mov r8, r0
ldr r4, [r1]
ldrh r1, [r8, #0x16]
ldr r0, _0201EFA4 ; =0x000005E4
add r5, r4, #0x344
cmp r1, r0
add r6, r4, #0x31c
movhi r0, #5
bhi _0201EF98
ldrh r0, [r6, #0x12]
cmp r0, #1
bne _0201EE3C
add r0, r8, #0x28
bl sub_0201B0F0
mov r7, r0
cmp r7, #0xff
beq _0201EE34
bl sub_0201B7D0
cmp r0, #0x40
beq _0201EE40
_0201EE34:
mov r0, #0xa
b _0201EF98
_0201EE3C:
ldrh r7, [r5, #0x88]
_0201EE40:
ldr r0, _0201EFA0 ; =0x0380FFF4
strh r7, [r8, #0x12]
ldr r0, [r0]
ldr r0, [r0, #0x3ec]
strh r0, [r8, #0x14]
ldrh r0, [r8, #0x1e]
tst r0, #0xff
strneh r0, [r8, #0x20]
movne r0, #0
strneh r0, [r8, #0x1e]
bne _0201EE78
mov r0, r7
bl sub_0201B890
strh r0, [r8, #0x20]
_0201EE78:
ldrh r0, [r8, #0x16]
cmp r0, #0
bne _0201EEA0
ldrh r1, [r5, #0x8a]
mov r0, #0x1c
orr r1, r1, #0x40
bic r1, r1, #0x4000
strh r1, [r8, #0x24]
strh r0, [r8, #0x22]
b _0201EEC4
_0201EEA0:
ldrh r0, [r5, #0x8a]
strh r0, [r8, #0x24]
ldrh r0, [r6, #0x18]
cmp r0, #0
ldrh r0, [r8, #0x16]
addeq r0, r0, #0x1c
streqh r0, [r8, #0x22]
addne r0, r0, #0x24
strneh r0, [r8, #0x22]
_0201EEC4:
ldrh r0, [r6, #0x12]
cmp r0, #1
beq _0201EEE0
cmp r0, #2
cmpne r0, #3
beq _0201EF5C
b _0201EF94
_0201EEE0:
add r0, r8, #0x34
add r1, r8, #0x2e
bl sub_020198D0
add r0, r8, #0x2e
add r1, r5, #0x64
bl sub_020198D0
cmp r7, #0
bne _0201EF38
mov r1, r8
add r0, r4, #0x200
bl sub_0201B2D8
ldr r0, _0201EFA0 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x500
ldrh r1, [r0, #0x32]
ldrh r2, [r0, #0x2e]
mvn r0, r1
tst r2, r0
bne _0201EF94
mov r0, #2
bl sub_0201F6E4
b _0201EF94
_0201EF38:
add r0, r8, #0x10
bl sub_0201B334
mov r2, r8
add r0, r4, #0x200
add r1, r4, #0x194
bl sub_03028178
mov r0, #0
bl sub_0201F6E4
b _0201EF94
_0201EF5C:
add r0, r8, #0x34
add r1, r8, #0x28
bl sub_020198D0
add r0, r8, #0x28
add r1, r5, #0x64
bl sub_020198D0
add r0, r8, #0x10
bl sub_0201B334
mov r2, r8
add r0, r4, #0x200
add r1, r4, #0x194
bl sub_03028178
mov r0, #0
bl sub_0201F6E4
_0201EF94:
mov r0, #0x81
_0201EF98:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_0201EFA0: .word 0x0380FFF4
_0201EFA4: .word 0x000005E4
arm_func_end sub_0201EDDC
arm_func_start sub_0201EFA8
sub_0201EFA8: ; 0x0201EFA8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r2, _0201F134 ; =0x0380FFF4
mov sl, r0
ldr r2, [r2]
mov sb, #1
add r0, r2, #0x600
ldrh r6, [r0, #0x90]
add r4, r2, #0x31c
strh sb, [r1, #2]
ldrh r1, [r4, #0x12]
add r0, r2, #0x2c
add r5, r0, #0x400
cmp r1, #2
movne r0, #0xb
bne _0201F12C
ldrh r0, [sl, #0x10]
cmp r0, #0x204
movhi r0, #5
bhi _0201F12C
ldrh r0, [r5, #0x50]
add fp, r5, #0x50
cmp r0, #0
moveq sb, #0
mov r0, #0x14
mul r8, sb, r0
ldrh r1, [fp, r8]
cmp r1, #0
movne r0, #8
bne _0201F12C
ldr r1, _0201F138 ; =0x04808094
ldrh r1, [r1]
tst r1, #0x8000
movne r0, #8
bne _0201F12C
add r1, r5, r8
ldr r7, [r1, #0x58]
mov r1, #0
strh r1, [r7]
strh r1, [r7, #4]
strh r0, [r7, #8]
ldrh r0, [sl, #0x10]
ldr r3, _0201F13C ; =0x027F74AC
add r0, r0, #0x1e
strh r0, [r7, #0xa]
mov r0, #0x118
strh r0, [r7, #0xc]
add r0, r7, #0x10
add r1, r2, #0x3a8
add r2, r4, #8
bl sub_02019920
ldrh r0, [sl, #0x12]
strh r0, [r7, #0x24]
ldrh r0, [sl, #0x10]
cmp r0, #0
beq _0201F0A0
cmp sb, #0
bne _0201F090
bl sub_0201999C
_0201F090:
ldr r1, [sl, #0x14]
ldrh r2, [sl, #0x10]
add r0, r7, #0x26
bl sub_0201A46C
_0201F0A0:
tst r6, #4
beq _0201F0D0
ldrh r0, [sl, #0x10]
add r1, r7, #0x24
add r0, r0, #2
add r0, r1, r0
add r0, r0, #3
ldr r1, _0201F140 ; =0x0000B6B8
bic r2, r0, #3
ldr r0, _0201F144 ; =0x00001D46
strh r1, [r2]
strh r0, [r2, #2]
_0201F0D0:
mov r0, #0x1000000
bl sub_0302B118
mov r2, #2
ldr r1, _0201F148 ; =0x00003FFF
strh r2, [fp, r8]
add r5, r5, #0x52
ldrh r2, [r5, r8]
and r1, r7, r1
add r3, r2, #1
mov r2, r1, lsr #1
ldr r1, _0201F138 ; =0x04808094
strh r3, [r5, r8]
orr r2, r2, #0x8000
strh r2, [r1]
ldrh r1, [r4, #0x1e]
mov r4, r0
mov r0, r1, lsl #0x18
movs r0, r0, lsr #0x1f
bne _0201F120
bl sub_02019888
_0201F120:
mov r0, r4
bl sub_0302B0E0
mov r0, #0
_0201F12C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0201F134: .word 0x0380FFF4
_0201F138: .word 0x04808094
_0201F13C: .word 0x027F74AC
_0201F140: .word 0x0000B6B8
_0201F144: .word 0x00001D46
_0201F148: .word 0x00003FFF
arm_func_end sub_0201EFA8
arm_func_start sub_0201F14C
sub_0201F14C: ; 0x0201F14C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
ldr r2, _0201F5D8 ; =0x0380FFF4
mov sl, r0
ldr r4, [r2]
mov sb, #1
add r0, r4, #0x600
ldrh r0, [r0, #0x90]
add r7, r4, #0x31c
strh sb, [r1, #2]
ldrh r1, [r7, #0x12]
str r0, [sp, #4]
add r0, r4, #0x2c
add r6, r0, #0x400
cmp r1, #1
movne r0, #0xb
bne _0201F5CC
ldrh r0, [r6, #0x3c]
cmp r0, #0
movne r0, #8
bne _0201F5CC
ldrh r0, [sl, #0x10]
ldr r5, [r6, #0x44]
tst r0, #0x8000
beq _0201F1F0
tst r0, #2
ldreqh r0, [r6, #0x94]
streqh r0, [sl, #0x14]
ldrh r0, [sl, #0x10]
tst r0, #4
ldreqh r0, [r6, #0xa0]
streqh r0, [sl, #0x16]
ldrh r0, [sl, #0x10]
tst r0, #8
ldreqh r0, [r6, #0x96]
streqh r0, [sl, #0x18]
ldrh r0, [sl, #0x10]
tst r0, #0x10
ldreqh r0, [r6, #0x9c]
moveq sb, #0
streqh r0, [sl, #0x1c]
_0201F1F0:
ldrh r0, [sl, #0x1c]
cmp r0, #0x204
movhi r0, #5
bhi _0201F5CC
mov r1, #2
mov r8, #0
b _0201F220
_0201F20C:
ldrh r0, [sl, #0x16]
tst r0, r1
mov r0, r1, lsl #0x11
addne r8, r8, #1
mov r1, r0, lsr #0x10
_0201F220:
cmp r1, #0
bne _0201F20C
ldrh r0, [sl, #0x14]
strh r0, [r6, #0x94]
ldrh r0, [sl, #0x14]
tst r0, #0x8000
beq _0201F26C
ldr r1, _0201F5DC ; =0x00007FFF
mov r2, #0xea
and r0, r0, r1
strh r0, [sl, #0x14]
ldrh r0, [sl, #0x14]
sub r0, r0, #0xd0
mov r0, r0, lsr #2
strh r2, [r5, #0xe]
cmp r0, #0x10000
bls _0201F2BC
mov r0, #5
b _0201F5CC
_0201F26C:
ldr r1, [sp, #4]
tst r1, #2
movne fp, #1
moveq fp, #0
add r3, fp, #6
movne r1, #2
movne r2, #6
add r0, r0, fp
add r3, r3, #0x200
moveq r1, fp
moveq r2, fp
cmp r0, r3
movhi r0, #5
bhi _0201F5CC
mov r3, r0, lsl #2
add r3, r3, #0xd0
add r1, r1, r3
strh r1, [sl, #0x14]
add r1, r2, #0xea
strh r1, [r5, #0xe]
_0201F2BC:
add r0, r0, #9
bic fp, r0, #1
mul r0, fp, r8
str r0, [sp]
ldr r1, [sp]
add r0, r4, #0x188
add r1, r1, #0x1a
bl sub_0302805C
str r0, [r6, #0x90]
cmp r0, #0
moveq r0, #8
beq _0201F5CC
mov r0, #1
strh r0, [r6, #0x3c]
ldrh r0, [r6, #0x3e]
mov r2, #0
add r0, r0, #1
strh r0, [r6, #0x3e]
ldrh r0, [sl, #0x18]
add r3, r7, #8
strh r0, [r6, #0x96]
ldrh r0, [sl, #0x16]
mov ip, #0x14
strh r0, [r6, #0x98]
strh r2, [r6, #0x9a]
ldrh r0, [sl, #0x1c]
mov lr, #0x228
strh r0, [r6, #0x9c]
ldrh r1, [sl, #0x12]
add r0, r5, #0x10
strh r1, [r6, #0x9e]
strh r2, [r5]
ldrh r7, [sl, #0x16]
ldr r1, _0201F5E0 ; =0x027F74BC
strh r7, [r5, #2]
strh r2, [r5, #4]
strh ip, [r5, #8]
ldrh r7, [sl, #0x1c]
add r2, r4, #0x3a8
add r7, r7, #0x22
strh r7, [r5, #0xa]
strh lr, [r5, #0xc]
ldrh ip, [sl, #0x14]
ldrh r7, [r5, #0xe]
add ip, ip, #0xa
mla r7, ip, r8, r7
strh r7, [r5, #0xe]
bl sub_02019920
ldrh r0, [sl, #0x10]
tst r0, #0x8000
ldrneh r1, [r5, #0x22]
ldrne r0, _0201F5E4 ; =0x0000FFFF
cmpne r1, r0
ldreq r0, _0201F5E4 ; =0x0000FFFF
movne r7, #0x4000
streqh r0, [r5, #0x22]
ldrh r0, [sl, #0x14]
moveq r7, #0
strh r0, [r5, #0x24]
ldrh r0, [sl, #0x16]
cmp sb, #0
strh r0, [r5, #0x26]
ldrh r0, [sl, #0x1e]
strh r0, [r5, #0x28]
ldrneh r0, [sl, #0x1c]
cmpne r0, #0
beq _0201F3DC
bl sub_0201999C
ldr r1, [sl, #0x20]
ldrh r2, [sl, #0x1c]
add r0, r5, #0x2a
bl sub_0201A46C
_0201F3DC:
ldr r0, [sp, #4]
tst r0, #4
beq _0201F410
ldrh r0, [sl, #0x1c]
add r1, r5, #0x28
add r0, r0, #2
add r0, r1, r0
add r0, r0, #3
ldr r1, _0201F5E8 ; =0x0000B6B8
bic r2, r0, #3
ldr r0, _0201F5EC ; =0x00001D46
strh r1, [r2]
strh r0, [r2, #2]
_0201F410:
ldr r0, [r6, #0x90]
mov r1, #0x184
strh r1, [r0, #0xc]
ldr r0, [sp]
ldr r1, [r6, #0x90]
add r0, r0, #0xb
mov r0, r0, lsr #1
strh r0, [r1, #0xe]
ldrh r1, [sl, #0x16]
ldr r0, [r6, #0x90]
mov r3, #0
strh r1, [r0, #0x10]
ldr r0, [r6, #0x90]
ldr sb, _0201F5E4 ; =0x0000FFFF
strh r8, [r0, #0x14]
ldr r0, [r6, #0x90]
mov r1, #1
strh fp, [r0, #0x16]
ldr r0, [r6, #0x90]
mov r2, #2
strh r3, [r0, #0x18]
ldr r0, [r6, #0x90]
add r0, r0, #0x1a
b _0201F498
_0201F470:
ldrh ip, [sl, #0x16]
tst ip, r2
strneh sb, [r0]
strneh r3, [r0, #2]
strneh r3, [r0, #6]
strneh r1, [r0, #4]
mov r2, r2, lsl #0x11
addne r0, r0, fp
mov r2, r2, lsr #0x10
add r1, r1, #1
_0201F498:
cmp r2, #0
bne _0201F470
ldrh r0, [sl, #0x14]
ldr r2, _0201F5F0 ; =0x048080C4
strh r0, [r2]
ldrh r0, [r5, #0xe]
strh r0, [r2, #-4]
ldrh r1, [sl, #0x1a]
ldrh r0, [sl, #0x18]
rsb sb, r1, #0x10000
cmp r0, #0
bne _0201F530
ldrh r0, [r2, #-0xc4]
ldrh r1, [sl, #0x1c]
cmp r0, #0x1440
ldrh r0, [sl, #0x14]
add r1, r1, #0x22
mul r2, r0, r8
mov r1, r1, lsl #2
add r3, r1, #0x60
addne r3, r3, #0x3e8
add r0, r2, #0x388
add r0, r3, r0
mov r1, #0xa
add r0, r0, #0x32
bl sub_030365C4
mov r4, r0
bl sub_0302D4F0
ldr r1, _0201F5F4 ; =0x00003FFF
ldr r2, _0201F5F8 ; =0x04808118
and r1, r5, r1
mov r1, r1, lsr #1
orr r1, r1, #0x8000
strh r4, [r2]
orr r1, r1, r7
strh r1, [r2, #-0x88]
bl sub_0302D504
b _0201F5C8
_0201F530:
bl sub_0302D4F0
ldr r1, _0201F5FC ; =0x048080F8
mov r8, r0
ldrh r0, [r1]
mov r1, #0xa
add r0, sb, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_030365C4
ldrh r3, [sl, #0x18]
add r1, r0, #3
cmp r1, r3
bhs _0201F598
ldr r1, _0201F5F4 ; =0x00003FFF
ldr r2, _0201F5F8 ; =0x04808118
sub r3, r3, r0
and r0, r5, r1
sub r1, r3, #1
mov r0, r0, lsr #1
orr r0, r0, #0x8000
strh r1, [r2]
orr r1, r0, r7
mov r0, r8
strh r1, [r2, #-0x88]
bl sub_0302D504
b _0201F5C8
_0201F598:
mov r0, r8
bl sub_0302D504
ldr r1, [r6, #0x90]
add r0, r4, #0x188
bl sub_030280F8
mov r0, #0
strh r0, [r6, #0x3c]
ldrh r1, [r6, #0x3e]
mov r0, #5
sub r1, r1, #1
strh r1, [r6, #0x3e]
b _0201F5CC
_0201F5C8:
mov r0, #0
_0201F5CC:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0201F5D8: .word 0x0380FFF4
_0201F5DC: .word 0x00007FFF
_0201F5E0: .word 0x027F74BC
_0201F5E4: .word 0x0000FFFF
_0201F5E8: .word 0x0000B6B8
_0201F5EC: .word 0x00001D46
_0201F5F0: .word 0x048080C4
_0201F5F4: .word 0x00003FFF
_0201F5F8: .word 0x04808118
_0201F5FC: .word 0x048080F8
arm_func_end sub_0201F14C
arm_func_start sub_0201F600
sub_0201F600: ; 0x0201F600
stmdb sp!, {r4, lr}
mov r2, #1
strh r2, [r1, #2]
mov r4, r0
rsb r0, r2, #0x10000
strh r0, [r4, #0xc]
mov r0, #0
strh r0, [r4, #0x12]
ldrh r1, [r4, #0x16]
add r0, r4, #0x10
strh r1, [r4, #0x22]
bl sub_0201B334
ldr r0, _0201F65C ; =0x0380FFF4
mov r2, r4
ldr r1, [r0]
add r0, r1, #0x200
add r1, r1, #0x194
bl sub_03028178
mov r0, #0
bl sub_0201F6E4
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0201F65C: .word 0x0380FFF4
arm_func_end sub_0201F600
arm_func_start sub_0201F660
sub_0201F660: ; 0x0201F660
stmdb sp!, {r4, lr}
mov r2, #1
strh r2, [r1, #2]
mov r4, r0
ldrh r0, [r4, #0x10]
tst r0, #1
beq _0201F680
bl sub_020202F0
_0201F680:
ldrh r0, [r4, #0x10]
tst r0, #2
beq _0201F690
bl sub_02020364
_0201F690:
ldrh r0, [r4, #0x10]
tst r0, #4
beq _0201F6A0
bl sub_020203B8
_0201F6A0:
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_0201F660
arm_func_start sub_0201F6AC
sub_0201F6AC: ; 0x0201F6AC
stmdb sp!, {r3, lr}
ldrh r2, [r1, #0xe]
mov r3, #2
add lr, r1, r2, lsl #1
ldrh ip, [lr, #0x10]
mov r2, #0
strh ip, [r1, #0xc]
strh r3, [lr, #0x12]
strh r2, [lr, #0x14]
ldrh r2, [r1, #0x18]
strh r2, [lr, #0x16]
bl sub_03028548
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_0201F6AC
arm_func_start sub_0201F6E4
sub_0201F6E4: ; 0x0201F6E4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
ldr r1, _0201F8F8 ; =0x0380FFF4
mov sl, r0
ldr r2, [r1]
mov r0, #0xc
add r1, r2, #0x194
mla fp, sl, r0, r1
add r0, r2, #0x2c
ldrh r1, [fp, #8]
add r5, r0, #0x400
mov r0, #0x14
mla r6, sl, r0, r5
cmp r1, #0
add r4, r2, #0x344
beq _0201F8EC
mov r0, #0x1000000
bl sub_0302B118
ldrh r1, [r6]
str r0, [sp]
cmp r1, #0
beq _0201F744
bl sub_0302B0E0
b _0201F8EC
_0201F744:
ldr r7, [fp]
mvn r0, #0
str r0, [sp, #8]
_0201F750:
ldr r0, [sp, #8]
cmp r7, r0
bne _0201F768
ldr r0, [sp]
bl sub_0302B0E0
b _0201F8EC
_0201F768:
mov r0, r7
str r7, [sp, #4]
bl sub_03028270
mov r1, r7
add r8, r1, #0x10
mov r7, r0
ldrh sb, [r8, #2]
mov r0, r8
bl sub_0201FA6C
cmp r0, #0
beq _0201F7CC
ldrh r1, [r5, #0xae]
mov r0, r8
add r1, r1, #1
strh r1, [r5, #0xae]
mov r1, #2
strh r1, [r8, #8]
ldrh r2, [r6, #4]
mov r1, #0
add r2, r2, #1
strh r2, [r6, #4]
ldr r2, [r6, #0x10]
mov lr, pc
bx r2
_0201F7C8:
b _0201F750
_0201F7CC:
cmp sl, #0
beq _0201F7EC
cmp sl, #1
bne _0201F82C
mov r0, sb
bl sub_0201B7D0
cmp r0, #0x40
bne _0201F82C
_0201F7EC:
mov r0, sb
bl sub_0201B7F0
cmp r0, #0
beq _0201F750
mov r0, sb
bl sub_0201B7D0
cmp r0, #0x40
beq _0201F82C
mov r2, #2
mov r0, fp
sub r1, r8, #0x10
strh r2, [r8, #8]
bl sub_0201F6AC
mov r0, r8
bl sub_0201B3C4
b _0201F750
_0201F82C:
mov r0, #1
strh r0, [r6]
ldrh r0, [r6, #2]
add r0, r0, #1
strh r0, [r6, #2]
str r8, [r6, #0xc]
ldrh r0, [r4, #0x10]
ldr r5, [r6, #8]
cmp r0, #0
bne _0201F85C
mov r0, #2
bl sub_020194A4
_0201F85C:
ldr r1, [sp, #4]
mov r0, r5
bl sub_0201F904
ldrh r0, [r4, #0xc]
cmp r0, #1
bne _0201F88C
mov r0, sb
bl sub_0201B8DC
cmp r0, #1
ldrhih r0, [r5, #0xc]
orrhi r0, r0, #0x2000
strhih r0, [r5, #0xc]
_0201F88C:
ldr r1, _0201F8FC ; =0x00003FFF
ldr r0, _0201F900 ; =0x048080A0
ldrh r4, [r8, #0x14]
and r2, r5, r1
and r1, r4, #0xc
cmp r1, #4
mov r1, r2, lsr #1
add r3, r0, sl, lsl #2
moveq r0, r1, lsl #0x10
moveq r0, r0, lsr #0x10
orreq r0, r0, #0xa000
streqh r0, [r3]
beq _0201F8E4
and r0, r4, #0xfc
cmp r0, #0x50
mov r0, r1, lsl #0x10
moveq r0, r0, lsr #0x10
orreq r0, r0, #0x9000
streqh r0, [r3]
movne r0, r0, lsr #0x10
orrne r0, r0, #0x8000
strneh r0, [r3]
_0201F8E4:
ldr r0, [sp]
bl sub_0302B0E0
_0201F8EC:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0201F8F8: .word 0x0380FFF4
_0201F8FC: .word 0x00003FFF
_0201F900: .word 0x048080A0
arm_func_end sub_0201F6E4
arm_func_start sub_0201F904
sub_0201F904: ; 0x0201F904
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
ldrh r1, [r4, #0x24]
mov r5, r0
tst r1, #0x4000
beq _0201F9E0
ldr r0, _0201FA58 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #3
bne _0201F938
bl sub_0201999C
_0201F938:
ldrh r1, [r4, #0xc]
ldr r0, _0201FA5C ; =0x0000FFFF
cmp r1, r0
bne _0201F960
ldrh r3, [r4, #0x16]
mov r0, r5
add r1, r4, #0x18
add r2, r4, #0x3c
bl sub_0201A4D0
b _0201F974
_0201F960:
ldr r2, [r4, #0x3c]
ldrh r3, [r4, #0x16]
mov r0, r5
add r1, r4, #0x18
bl sub_0201A4D0
_0201F974:
ldr r3, _0201FA60 ; =0x04808044
ldr r1, _0201FA58 ; =0x0380FFF4
ldrh r2, [r3]
ldrh r0, [r3]
add r0, r2, r0, lsl #8
strh r0, [r5, #0x24]
ldr r0, [r1]
ldrh r2, [r3]
add r0, r0, #0x300
ldrh r0, [r0, #0x36]
and r2, r2, #0xff
orr r0, r2, r0, lsl #14
strh r0, [r5, #0x26]
ldr r0, [r1]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #8
beq _0201FA14
ldrh r0, [r4, #0x22]
add r1, r5, #0xc
add r0, r1, r0
sub r0, r0, #7
bic r1, r0, #1
mov r0, #0
strh r0, [r1]
strh r0, [r1, #2]
b _0201FA14
_0201F9E0:
ldrh r2, [r4, #0xc]
ldr r1, _0201FA5C ; =0x0000FFFF
cmp r2, r1
bne _0201FA04
ldrh r2, [r4, #0x16]
add r1, r4, #0x18
add r2, r2, #0x24
bl sub_0201A46C
b _0201FA14
_0201FA04:
ldr r2, [r4, #0x3c]
ldrh r3, [r4, #0x16]
add r1, r4, #0x18
bl sub_0201A48C
_0201FA14:
ldr r0, _0201FA58 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #4
beq _0201FA50
ldrh r0, [r4, #0x22]
add r1, r5, #0xc
add r0, r1, r0
sub r0, r0, #1
ldr r1, _0201FA64 ; =0x0000B6B8
bic r2, r0, #3
ldr r0, _0201FA68 ; =0x00001D46
strh r1, [r2]
strh r0, [r2, #2]
_0201FA50:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0201FA58: .word 0x0380FFF4
_0201FA5C: .word 0x0000FFFF
_0201FA60: .word 0x04808044
_0201FA64: .word 0x0000B6B8
_0201FA68: .word 0x00001D46
arm_func_end sub_0201F904
arm_func_start sub_0201FA6C
sub_0201FA6C: ; 0x0201FA6C
ldr r1, _0201FAE8 ; =0x0380FFF4
ldrh r2, [r0, #0x14]
ldr r3, [r1]
mov r1, r2, lsl #0x1c
add ip, r3, #0x344
ldrh r3, [ip, #0x8c]
movs r1, r1, lsr #0x1e
mov r1, r3, lsl #0x13
mov r3, r1, lsr #0x10
bne _0201FAC0
ldrh r1, [ip, #0xc]
cmp r1, #1
bne _0201FAC8
mov r1, r2, lsl #0x18
mov r1, r1, lsr #0x1c
cmp r1, #1
cmpne r1, #3
cmpne r1, #0xb
moveq r1, r3, lsl #0xd
moveq r3, r1, lsr #0x10
b _0201FAC8
_0201FAC0:
mov r1, r3, lsl #0xd
mov r3, r1, lsr #0x10
_0201FAC8:
ldr r1, [ip, #0xa8]
ldrh r0, [r0, #4]
sub r0, r1, r0
mov r0, r0, lsl #0x10
cmp r3, r0, lsr #16
movlo r0, #1
movhs r0, #0
bx lr
.align 2, 0
_0201FAE8: .word 0x0380FFF4
arm_func_end sub_0201FA6C
arm_func_start sub_0201FAEC
sub_0201FAEC: ; 0x0201FAEC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _0201FC64 ; =0x0380FFF4
mov sb, r0
ldr r4, [r2]
mov r8, r1
add r5, r4, #0x194
add r6, r4, #0x344
sub r7, sb, #0x10
bl sub_0201B3C4
ldrh r0, [sb, #8]
tst r0, #2
bne _0201FB80
ldr r0, [r4, #0x53c]
add r0, r0, #1
str r0, [r4, #0x53c]
ldrh r0, [sb, #0x14]
mov r0, r0, lsl #0x17
movs r0, r0, lsr #0x1f
beq _0201FB5C
ldrh r0, [sb, #0x24]
tst r0, #1
ldrne r0, [r4, #0x550]
addne r0, r0, #1
strne r0, [r4, #0x550]
ldreq r0, [r4, #0x54c]
addeq r0, r0, #1
streq r0, [r4, #0x54c]
b _0201FB8C
_0201FB5C:
ldrh r0, [sb, #0x18]
tst r0, #1
ldrne r0, [r4, #0x550]
addne r0, r0, #1
strne r0, [r4, #0x550]
ldreq r0, [r4, #0x54c]
addeq r0, r0, #1
streq r0, [r4, #0x54c]
b _0201FB8C
_0201FB80:
ldr r0, [r4, #0x540]
add r0, r0, #1
str r0, [r4, #0x540]
_0201FB8C:
ldrh r0, [sb, #0x14]
mov r1, r7
mov r0, r0, lsl #0x11
movs r0, r0, lsr #0x1f
ldrne r0, [r4, #0x554]
addne r0, r0, #1
strne r0, [r4, #0x554]
mov r0, r5
bl sub_0201F6AC
ldr r0, _0201FC64 ; =0x0380FFF4
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x400
strh r1, [r0, #0x2c]
ldrh r0, [sb, #2]
bl sub_0201B810
cmp r0, #0
beq _0201FBE8
ldrh r0, [sb, #0x14]
tst r0, #0x2000
bne _0201FBE8
ldrh r0, [sb, #2]
bl sub_0201B598
_0201FBE8:
cmp r8, #0
beq _0201FC5C
ldrh r0, [r5, #8]
cmp r0, #0
beq _0201FC08
mov r0, #0
bl sub_0201F6E4
b _0201FC5C
_0201FC08:
ldrh r0, [r6, #0xc]
add r0, r0, #0xfe
add r0, r0, #0xff00
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _0201FC5C
ldrh r0, [r6, #8]
cmp r0, #0x40
bne _0201FC5C
ldrh r0, [r6, #0xe]
cmp r0, #0
beq _0201FC5C
ldrh r0, [r6, #0x88]
bl sub_0201B8DC
cmp r0, #0
ldreqh r0, [r6, #0x8e]
cmpeq r0, #0
bne _0201FC5C
mov r0, #1
bl sub_020194A4
_0201FC5C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0201FC64: .word 0x0380FFF4
arm_func_end sub_0201FAEC
arm_func_start sub_0201FC68
sub_0201FC68: ; 0x0201FC68
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r2, _02020130 ; =0x0380FFF4
mov sl, r0
ldr r4, [r2]
ldrh r2, [sl, #8]
add r0, r4, #4
ldrh r7, [sl, #2]
mov sb, r1
tst r2, #2
add r8, r4, #0x344
add r5, r0, #0x400
add r6, r4, #0x1a0
bne _0201FCF0
ldr r0, [r4, #0x53c]
add r0, r0, #1
str r0, [r4, #0x53c]
ldrh r0, [sl, #0x18]
tst r0, #1
ldrne r0, [r4, #0x550]
addne r0, r0, #1
strne r0, [r4, #0x550]
ldreq r0, [r4, #0x54c]
addeq r0, r0, #1
streq r0, [r4, #0x54c]
mov r0, r7
bl sub_0201B810
cmp r0, #0
beq _0201FCFC
ldrh r0, [sl, #0x14]
tst r0, #0x2000
bne _0201FCFC
mov r0, r7
bl sub_0201B598
b _0201FCFC
_0201FCF0:
ldr r0, [r4, #0x540]
add r0, r0, #1
str r0, [r4, #0x540]
_0201FCFC:
ldrh r0, [sl, #0x14]
mov r0, r0, lsl #0x11
movs r0, r0, lsr #0x1f
ldrne r0, [r4, #0x554]
addne r0, r0, #1
strne r0, [r4, #0x554]
ldrh r0, [sl, #0xc]
ldr r1, [r4, #0x544]
and r0, r0, #0xff
add r0, r1, r0
str r0, [r4, #0x544]
ldrh r0, [sl, #0x14]
and r4, r0, #0xfc
cmp r4, #0xa0
bhi _0201FD58
bhs _0201FEC0
cmp r4, #0x10
bhi _0201FD4C
beq _0201FDFC
b _020200E8
_0201FD4C:
cmp r4, #0x30
beq _0201FDFC
b _020200E8
_0201FD58:
cmp r4, #0xb0
bhi _0201FD68
beq _0201FD74
b _020200E8
_0201FD68:
cmp r4, #0xc0
beq _0201FFA4
b _020200E8
_0201FD74:
cmp r7, #0
beq _020200E8
ldrh r0, [sl, #8]
tst r0, #2
bne _020200E8
ldrh r1, [sl, #0x2c]
cmp r1, #0
ldreqh r0, [sl, #0x2e]
cmpeq r0, #2
ldreqh r0, [sl, #0x30]
cmpeq r0, #0
bne _0201FDC4
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x30
bl sub_0201B434
ldrh r1, [sl, #0x2c]
add r0, sl, #0x18
bl sub_0201D358
b _020200E8
_0201FDC4:
cmp r1, #1
ldreqh r0, [sl, #0x2e]
cmpeq r0, #4
ldreqh r0, [sl, #0x30]
cmpeq r0, #0
bne _020200E8
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x30
bl sub_0201B434
ldrh r1, [sl, #0x2c]
add r0, sl, #0x18
bl sub_0201D358
b _020200E8
_0201FDFC:
cmp r7, #0
beq _020200E8
ldrh r0, [sl, #8]
tst r0, #2
bne _0201FE74
ldrh r0, [sl, #0x2e]
cmp r0, #0
bne _020200E8
mov r0, r7
bl sub_0201B7D0
cmp r0, #0x30
bne _020200E8
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x40
bl sub_0201B434
ldrh r2, [sl, #0x12]
cmp r4, #0x10
add r3, sl, #0x14
bne _0201FE60
ldrh r1, [sl, #0x30]
add r0, sl, #0x18
add r2, r3, r2
bl sub_0201D450
b _020200E8
_0201FE60:
ldrh r1, [sl, #0x30]
add r0, sl, #0x18
add r2, r3, r2
bl sub_0201D548
b _020200E8
_0201FE74:
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0201B750
add r0, sl, #0x18
mov r1, #1
mov r2, #0
bl sub_020216AC
cmp r0, #0
beq _020200E8
mov r1, #2
strh r1, [r0]
cmp sb, #0
beq _0201FEB8
bl sub_02020884
mov r0, #1
bl sub_0201F6E4
b _020200E8
_0201FEB8:
bl sub_02020884
b _020200E8
_0201FEC0:
ldrh r0, [r8, #0xc]
cmp r0, #1
bne _0201FF50
cmp r7, #0
beq _0201FEF8
mov r0, r7
bl sub_0201B7D0
cmp r0, #0x30
bls _0201FF68
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x30
bl sub_0201B434
b _0201FF68
_0201FEF8:
ldrh r0, [sl, #0x18]
tst r0, #1
beq _0201FF68
ldr r4, _02020130 ; =0x0380FFF4
mov r8, #1
mov r7, #0x30
b _0201FF38
_0201FF14:
mov r0, r8
bl sub_0201B7D0
cmp r0, #0x30
bls _0201FF34
mov r0, r8, lsl #0x10
mov r1, r7
mov r0, r0, lsr #0x10
bl sub_0201B434
_0201FF34:
add r8, r8, #1
_0201FF38:
ldr r0, [r4]
add r0, r0, #0x300
ldrh r0, [r0, #0x22]
cmp r8, r0
blo _0201FF14
b _0201FF68
_0201FF50:
ldrh r0, [r8, #8]
cmp r0, #0x30
bls _0201FF68
mov r0, #0x30
bl sub_03028A28
bl sub_0201982C
_0201FF68:
ldrh r0, [r5]
cmp r0, #0x71
ldreq r0, [r5, #4]
cmpeq sl, r0
bne _020200E8
ldrh r0, [sl, #8]
tst r0, #2
ldr r0, [r5, #0x1c]
moveq r1, #0
movne r1, #0xc
strh r1, [r0, #4]
mov r0, #0
strh r0, [r5]
bl sub_0201D304
b _020200E8
_0201FFA4:
ldrh r0, [r8, #0xc]
cmp r0, #1
bne _02020034
cmp r7, #0
beq _0201FFDC
mov r0, r7
bl sub_0201B7D0
cmp r0, #0x20
bls _0202004C
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_0201B434
b _0202004C
_0201FFDC:
ldrh r0, [sl, #0x18]
tst r0, #1
beq _0202004C
ldr r4, _02020130 ; =0x0380FFF4
mov r8, #1
mov fp, #0x20
b _0202001C
_0201FFF8:
mov r0, r8
bl sub_0201B7D0
cmp r0, #0x20
bls _02020018
mov r0, r8, lsl #0x10
mov r1, fp
mov r0, r0, lsr #0x10
bl sub_0201B434
_02020018:
add r8, r8, #1
_0202001C:
ldr r0, [r4]
add r0, r0, #0x300
ldrh r0, [r0, #0x22]
cmp r8, r0
blo _0201FFF8
b _0202004C
_02020034:
ldrh r0, [r8, #8]
cmp r0, #0x20
bls _0202004C
mov r0, #0x20
bl sub_03028A28
bl sub_0201982C
_0202004C:
ldrh r0, [r5]
cmp r0, #0x41
ldreq r0, [r5, #4]
cmpeq sl, r0
bne _02020084
ldrh r0, [sl, #8]
tst r0, #2
ldr r0, [r5, #0x1c]
moveq r1, #0
movne r1, #0xc
strh r1, [r0, #4]
mov r0, #0
strh r0, [r5]
bl sub_0201D304
_02020084:
ldrh r0, [sl]
cmp r0, #1
bne _020200D4
cmp r7, #0
beq _020200C4
ldr r0, _02020130 ; =0x0380FFF4
mov r2, #1
ldr r1, [r0]
mov r0, r7, lsl #0x10
add r1, r1, #0x500
ldrh r3, [r1, #0x34]
mvn r2, r2, lsl r7
and r2, r3, r2
mov r0, r0, lsr #0x10
strh r2, [r1, #0x34]
bl sub_0201BC1C
_020200C4:
add r0, sl, #0x18
mov r1, #1
bl sub_0201D3D4
b _020200E8
_020200D4:
cmp r0, #2
bne _020200E8
ldrh r1, [sl, #0x2c]
add r0, sl, #0x18
bl sub_0201D3D4
_020200E8:
mov r0, sl
bl sub_0201B3C4
mov r0, r6
sub r1, sl, #0x10
bl sub_030280F8
ldr r0, _02020130 ; =0x0380FFF4
mov r1, #0
ldr r0, [r0]
cmp sb, #0
add r0, r0, #0x400
strh r1, [r0, #0x40]
ldrneh r0, [r6, #8]
cmpne r0, #0
beq _02020128
mov r0, #1
bl sub_0201F6E4
_02020128:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02020130: .word 0x0380FFF4
arm_func_end sub_0201FC68
arm_func_start sub_02020134
sub_02020134: ; 0x02020134
ldr r2, _02020198 ; =0x0380FFF4
ldrh r1, [r0, #4]
ldr r3, [r2]
and r1, r1, #0xff
ldr r2, [r3, #0x544]
add r1, r2, r1
str r1, [r3, #0x544]
ldrh r0, [r0]
tst r0, #2
ldrne r0, [r3, #0x540]
addne r0, r0, #1
strne r0, [r3, #0x540]
bne _02020180
ldr r0, [r3, #0x53c]
add r0, r0, #1
str r0, [r3, #0x53c]
ldr r0, [r3, #0x54c]
add r0, r0, #1
str r0, [r3, #0x54c]
_02020180:
ldr r0, _02020198 ; =0x0380FFF4
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x400
strh r1, [r0, #0x54]
bx lr
.align 2, 0
_02020198: .word 0x0380FFF4
arm_func_end sub_02020134
arm_func_start sub_0202019C
sub_0202019C: ; 0x0202019C
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _020202A0 ; =0x0380FFF4
mov r6, r0
ldr r2, [r2]
mov r5, r1
ldr r1, [r2, #0x550]
add r4, r2, #0x17c
add r1, r1, #1
str r1, [r2, #0x550]
ldrh r1, [r6, #0x14]
mov r1, r1, lsl #0x1c
movs r1, r1, lsr #0x1e
bne _020201F4
bl sub_0201B334
add r0, r4, #0x30
add r1, r4, #0x24
sub r2, r6, #0x10
bl sub_03028178
mov r0, r6
mov r1, #0
bl sub_0201FC68
b _02020200
_020201F4:
add r0, r4, #0x30
sub r1, r6, #0x10
bl sub_0201F6AC
_02020200:
ldr r1, _020202A0 ; =0x0380FFF4
mov r2, #0
ldr r0, [r1]
add r0, r0, #0x400
strh r2, [r0, #0x54]
ldr r0, [r1]
ldr r0, [r0, #0x45c]
ldrh r0, [r0, #0xc]
mov r0, r0, lsl #0x12
movs r0, r0, lsr #0x1f
bne _02020270
ldr r1, _020202A4 ; =0x048080AC
mov r0, #8
strh r0, [r1]
mov r0, #5
strh r0, [r1, #2]
cmp r5, #0
beq _02020270
ldrh r0, [r4, #0x2c]
cmp r0, #0
beq _0202025C
mov r0, #1
bl sub_0201F6E4
_0202025C:
ldrh r0, [r4, #0x20]
cmp r0, #0
beq _02020270
mov r0, #0
bl sub_0201F6E4
_02020270:
ldrh r0, [r4, #0x38]
cmp r0, #0
beq _02020290
cmp r5, #0
beq _02020298
mov r0, #2
bl sub_0201F6E4
b _02020298
_02020290:
mov r0, #0
bl sub_0201B9B8
_02020298:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_020202A0: .word 0x0380FFF4
_020202A4: .word 0x048080AC
arm_func_end sub_0202019C
arm_func_start sub_020202A8
sub_020202A8: ; 0x020202A8
ldr r2, [r0, #8]
ldr r1, _020202EC ; =0x0380FFF4
ldrh r3, [r2, #4]
ldr r2, [r1]
ands r3, r3, #0xff
ldreq r1, [r2, #0x5a8]
addeq r1, r1, #1
streq r1, [r2, #0x5a8]
ldrne r1, [r2, #0x5a4]
addne r1, r1, r3
strne r1, [r2, #0x5a4]
ldrh r2, [r0, #4]
mov r1, #0
add r2, r2, #1
strh r2, [r0, #4]
strh r1, [r0]
bx lr
.align 2, 0
_020202EC: .word 0x0380FFF4
arm_func_end sub_020202A8
arm_func_start sub_020202F0
sub_020202F0: ; 0x020202F0
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _0202035C ; =0x0380FFF4
mov r0, #0x1000000
ldr r1, [r1]
add r1, r1, #0x2c
add r4, r1, #0x400
bl sub_0302B118
ldr r1, _0202035C ; =0x0380FFF4
mov r5, r0
ldr r0, [r1]
add r0, r0, #0x300
ldrh r0, [r0, #0x3a]
mov r0, r0, lsl #0x18
movs r0, r0, lsr #0x1f
bne _02020334
mov r0, #0
bl sub_020198AC
_02020334:
ldr r0, _02020360 ; =0x048080B4
mov r1, #0xc0
strh r1, [r0]
mov r1, #0
strh r1, [r4, #0x50]
mov r0, r5
strh r1, [r4, #0x64]
bl sub_0302B0E0
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_0202035C: .word 0x0380FFF4
_02020360: .word 0x048080B4
arm_func_end sub_020202F0
arm_func_start sub_02020364
sub_02020364: ; 0x02020364
stmdb sp!, {r4, lr}
ldr r1, _020203B0 ; =0x0380FFF4
mov r0, #0x1000000
ldr r1, [r1]
add r1, r1, #0x2c
add r4, r1, #0x400
bl sub_0302B118
ldr r1, _020203B4 ; =0x048080B4
mov r2, #2
strh r2, [r1]
ldrh r1, [r4, #0x3c]
mov r4, r0
cmp r1, #0
beq _020203A0
bl sub_0302A4A4
_020203A0:
mov r0, r4
bl sub_0302B0E0
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020203B0: .word 0x0380FFF4
_020203B4: .word 0x048080B4
arm_func_end sub_02020364
arm_func_start sub_020203B8
sub_020203B8: ; 0x020203B8
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02020458 ; =0x0380FFF4
mov r0, #0x1000000
ldr r1, [r1]
add r1, r1, #0x2c
add r4, r1, #0x400
bl sub_0302B118
ldr r1, _02020458 ; =0x0380FFF4
mov r5, r0
ldr r0, [r1]
add r0, r0, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #1
ldr r0, _0202045C ; =0x048080B4
bne _02020420
mov r1, #9
strh r1, [r0]
ldrh r0, [r4, #0x28]
cmp r0, #0
beq _02020410
mov r0, #2
bl sub_02020460
_02020410:
mov r0, #2
mov r1, #1
bl sub_020207E0
b _02020428
_02020420:
mov r1, #1
strh r1, [r0]
_02020428:
ldrh r0, [r4]
cmp r0, #0
beq _0202043C
mov r0, #0
bl sub_02020460
_0202043C:
mov r0, #0
mov r1, #1
bl sub_020207E0
mov r0, r5
bl sub_0302B0E0
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02020458: .word 0x0380FFF4
_0202045C: .word 0x048080B4
arm_func_end sub_020203B8
arm_func_start sub_02020460
sub_02020460: ; 0x02020460
stmdb sp!, {r3, lr}
ldr r2, _020204C0 ; =0x0380FFF4
mov r1, #0x14
ldr r2, [r2]
mul r1, r0, r1
add r0, r2, #0x2c
add r2, r0, #0x400
ldrh r0, [r2, r1]
add r2, r2, r1
cmp r0, #0
beq _020204B8
ldr r0, [r2, #8]
ldrh r1, [r0]
ldr r0, [r2, #0xc]
cmp r1, #0
moveq r1, #2
strh r1, [r0, #8]
ldr r0, [r2, #0xc]
ldr r2, [r2, #0x10]
mov r1, #0
mov lr, pc
bx r2
_020204B8:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_020204C0: .word 0x0380FFF4
arm_func_end sub_02020460
arm_func_start sub_020204C4
sub_020204C4: ; 0x020204C4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _02020544 ; =0x0380FFF4
mov r7, r0
mov r0, #0x14
ldr r1, [r1]
mul r4, r7, r0
add r0, r1, #0x2c
add r5, r0, #0x400
mov r0, #0x1000000
add r6, r5, r4
bl sub_0302B118
ldr r1, _02020548 ; =0x027F7870
mov r2, r7, lsl #1
ldrh r2, [r1, r2]
ldr r1, _0202054C ; =0x048080B4
strh r2, [r1]
ldrh r1, [r5, r4]
cmp r1, #0
beq _02020538
ldr r2, [r6, #0xc]
ldrh r1, [r2, #0x14]
tst r1, #0x4000
ldreq r1, [r6, #8]
ldreqh r1, [r1, #4]
streqh r1, [r2, #0xc]
ldr r2, [r6, #8]
ldr r1, [r6, #0xc]
ldrh r2, [r2, #0x22]
strh r2, [r1, #0x2a]
_02020538:
bl sub_0302B0E0
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02020544: .word 0x0380FFF4
_02020548: .word 0x027F7870
_0202054C: .word 0x048080B4
arm_func_end sub_020204C4
arm_func_start sub_02020550
sub_02020550: ; 0x02020550
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov fp, r0
mov r7, #0
bl sub_0201B8DC
cmp r0, #0
beq _0202063C
mov r8, r7
_0202056C:
ldr r0, _02020644 ; =0x0380FFF4
mov r1, #0xc
ldr r2, [r0]
mul sl, r8, r1
sub r0, r1, #0xd
add r1, r2, sl
ldr r5, [r1, #0x194]
cmp r5, r0
beq _02020630
mov r0, #0x14
mul sb, r8, r0
mvn r4, #0
_0202059C:
mov r0, r5
bl sub_03028270
add r6, r5, #0x10
ldrh r1, [r6, #2]
str r0, [sp]
cmp r1, fp
bne _02020620
cmp r8, #1
ldrne r0, _02020644 ; =0x0380FFF4
ldrne r0, [r0]
addne r0, sb, r0
ldrne r0, [r0, #0x438]
cmpne r6, r0
bne _020205F0
mov r0, r6
bl sub_0201B3C4
mov r1, #0
mov r0, r6
strh r1, [r6, #2]
bl sub_0201B334
b _02020620
_020205F0:
mov r0, #2
strh r0, [r6, #8]
mov r0, r6
bl sub_0201B3C4
ldr r0, _02020644 ; =0x0380FFF4
mov r1, r5
ldr r0, [r0]
add r0, r0, #0x194
add r0, r0, sl
bl sub_0201F6AC
cmp r7, #0
moveq r7, #1
_02020620:
ldr r5, [sp]
mov r0, r5
cmp r0, r4
bne _0202059C
_02020630:
add r8, r8, #1
cmp r8, #3
blo _0202056C
_0202063C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02020644: .word 0x0380FFF4
arm_func_end sub_02020550
arm_func_start sub_02020648
sub_02020648: ; 0x02020648
stmdb sp!, {r3, r4, r5, lr}
ldr r4, _020206F4 ; =0x0380FFF4
ldrh r1, [r0]
ldr r2, [r4]
tst r1, #1
beq _0202069C
add r0, r2, #0x300
ldrh r0, [r0, #0x22]
mov r5, #1
cmp r0, #1
bls _020206EC
b _02020684
_02020678:
mov r0, r5
bl sub_02020550
add r5, r5, #1
_02020684:
ldr r0, [r4]
add r0, r0, #0x300
ldrh r0, [r0, #0x22]
cmp r5, r0
blo _02020678
b _020206EC
_0202069C:
bl sub_0201B0F0
mov r4, r0
cmp r4, #0xff
beq _020206B0
bl sub_02020550
_020206B0:
ldr r0, _020206F4 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x2e]
cmp r0, #1
bne _020206EC
mov r0, r4
bl sub_0201B7D0
cmp r0, #0x40
bne _020206EC
mov r0, r4, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_0201B434
bl sub_020202F0
_020206EC:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020206F4: .word 0x0380FFF4
arm_func_end sub_02020648
arm_func_start sub_020206F8
sub_020206F8: ; 0x020206F8
stmdb sp!, {r4, lr}
ldr r0, _020207DC ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x300
ldrh r1, [r0, #0x50]
add r0, r2, #0x2c
cmp r1, #1
add r4, r0, #0x400
beq _0202072C
cmp r1, #2
cmpne r1, #3
beq _02020788
b _020207B0
_0202072C:
mov r0, #0
mov r1, #1
bl sub_020207E0
mov r0, #1
mov r1, #0
bl sub_020207E0
mov r0, #2
mov r1, #1
bl sub_020207E0
ldrh r0, [r4, #0x3c]
cmp r0, #0
beq _020207D4
mov r0, #0
strh r0, [r4, #0x3c]
ldrh r1, [r4, #0x3e]
ldr r0, _020207DC ; =0x0380FFF4
sub r1, r1, #1
strh r1, [r4, #0x3e]
ldr r0, [r0]
ldr r1, [r4, #0x90]
add r0, r0, #0x188
bl sub_030280F8
b _020207D4
_02020788:
mov r0, #0
mov r1, #1
bl sub_020207E0
mov r0, #1
mov r1, #0
bl sub_020207E0
mov r0, #2
mov r1, #0
bl sub_020207E0
b _020207D4
_020207B0:
mov r0, #0
mov r1, r0
bl sub_020207E0
mov r0, #1
mov r1, #0
bl sub_020207E0
mov r0, #2
mov r1, #0
bl sub_020207E0
_020207D4:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020207DC: .word 0x0380FFF4
arm_func_end sub_020206F8
arm_func_start sub_020207E0
sub_020207E0: ; 0x020207E0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r5, _02020868 ; =0x0380FFF4
mov r2, #0xc
mov sl, r0
mul r8, sl, r2
ldr r3, [r5]
sub r0, r2, #0xd
add r2, r3, r8
ldr r6, [r2, #0x194]
mov sb, r1
cmp r6, r0
beq _02020860
mov fp, #2
mvn r4, #0
_02020818:
mov r0, r6
bl sub_03028270
mov r7, r0
cmp sl, #2
beq _02020834
add r0, r6, #0x10
bl sub_0201B3C4
_02020834:
strh fp, [r6, #0x18]
cmp sb, #0
beq _02020854
ldr r0, [r5]
mov r1, r6
add r0, r0, #0x194
add r0, r0, r8
bl sub_0201F6AC
_02020854:
mov r6, r7
cmp r7, r4
bne _02020818
_02020860:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02020868: .word 0x0380FFF4
arm_func_end sub_020207E0
arm_func_start sub_0202086C
sub_0202086C: ; 0x0202086C
stmdb sp!, {r3, lr}
bl sub_02020884
mov r0, #1
bl sub_0201F6E4
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_0202086C
arm_func_start sub_02020884
sub_02020884: ; 0x02020884
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x18
bl sub_0201B0F0
strh r0, [r4, #2]
ldrh r0, [r4, #2]
cmp r0, #0xff
moveq r0, #0
streqh r0, [r4, #2]
ldr r0, _020208F4 ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x3ec]
strh r0, [r4, #4]
ldrh r0, [r4, #0x14]
tst r0, #0x4000
ldrneh r0, [r4, #0x12]
addne r0, r0, #8
strneh r0, [r4, #0x12]
mov r0, r4
bl sub_0201B334
ldr r0, _020208F4 ; =0x0380FFF4
sub r2, r4, #0x10
ldr r1, [r0]
add r0, r1, #0x188
add r1, r1, #0x1a0
bl sub_03028178
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020208F4: .word 0x0380FFF4
arm_func_end sub_02020884
arm_func_start sub_020208F8
sub_020208F8: ; 0x020208F8
stmdb sp!, {r4, lr}
ldr r0, _02020980 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x54
add r4, r0, #0x400
ldrh r1, [r4, #2]
add r0, r2, #0x400
add r1, r1, #1
strh r1, [r4, #2]
ldrh r0, [r0, #0x54]
mov r1, #0
cmp r0, #0
ldrne r0, [r4, #8]
strneh r1, [r0, #4]
bne _02020978
mov r0, #1
strh r0, [r4]
ldr r0, [r4, #8]
strh r1, [r0]
ldr r0, [r4, #8]
strh r1, [r0, #4]
bl sub_02019D68
ldr r2, [r4, #8]
ldr r1, _02020984 ; =0x00003FFF
strh r0, [r2, #8]
ldr r0, [r4, #8]
ldr r2, _02020988 ; =0x048080A8
and r0, r0, r1
mov r0, r0, lsl #0xf
mov r0, r0, lsr #0x10
orr r0, r0, #0x8000
strh r0, [r2]
_02020978:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02020980: .word 0x0380FFF4
_02020984: .word 0x00003FFF
_02020988: .word 0x048080A8
arm_func_end sub_020208F8
arm_func_start sub_0202098C
sub_0202098C: ; 0x0202098C
ldr r0, _020209C4 ; =0x0380FFF4
mov r2, #1
ldr r3, [r0]
rsb r1, r2, #0x4000
add r0, r3, #0x400
strh r2, [r0, #0xa4]
add r0, r3, #0xa4
ldr r2, [r0, #0x408]
ldr r0, _020209C8 ; =0x04808080
and r1, r2, r1
mov r1, r1, lsr #1
orr r1, r1, #0x8000
strh r1, [r0]
bx lr
.align 2, 0
_020209C4: .word 0x0380FFF4
_020209C8: .word 0x04808080
arm_func_end sub_0202098C
arm_func_start sub_020209CC
sub_020209CC: ; 0x020209CC
ldr r1, _020209EC ; =0x0380FFF4
ldr r0, _020209F0 ; =0x04808080
ldr r2, [r1]
mov r1, #0
strh r1, [r0]
add r0, r2, #0x400
strh r1, [r0, #0xa4]
bx lr
.align 2, 0
_020209EC: .word 0x0380FFF4
_020209F0: .word 0x04808080
arm_func_end sub_020209CC
arm_func_start sub_020209F4
sub_020209F4: ; 0x020209F4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r1, _02020D50 ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
ldr r8, [r1, #0x4ac]
add r5, r1, #0x31c
strh r0, [r8]
strh r0, [r8, #2]
strh r0, [r8, #4]
strh r0, [r8, #6]
add r6, r1, #0x344
bl sub_02019D68
strh r0, [r8, #8]
mov r0, #0x80
strh r0, [r8, #0xc]
mov r0, #0
add r2, r5, #8
strh r0, [r8, #0xe]
ldr r1, _02020D54 ; =0x027F74A4
add r0, r8, #0x10
mov r3, r2
bl sub_02019920
mov r1, #0
strh r1, [r8, #0x22]
add sl, r8, #0x24
str r1, [r8, #0x24]
str r1, [sl, #4]
ldrh r0, [r6, #0x6e]
add sb, sl, #0xc
strh r0, [sl, #8]
ldrh r0, [r6, #0x7c]
strh r0, [sl, #0xa]
ldrh r0, [r5, #0x1e]
mov r0, r0, lsl #0x1f
movs r0, r0, lsr #0x1f
bne _02020AF4
sub r0, sb, sl
strh r0, [r6, #0x92]
mov r0, sb
bl sub_0201A514
ldrh r1, [r6, #0x1e]
add r0, sb, #1
and r1, r1, #0xff
add sb, sb, #2
bl sub_0201A514
mov r7, #0
add r4, r6, #0x20
b _02020AD0
_02020AB4:
add r0, r4, r7
bl sub_0201A540
mov r1, r0
mov r0, sb
bl sub_0201A514
add sb, sb, #1
add r7, r7, #1
_02020AD0:
ldrh r0, [r6, #0x1e]
cmp r7, r0
blo _02020AB4
mvn r0, #0
sub r0, r0, r7
add r0, sb, r0
and r1, r7, #0xff
bl sub_0201A514
b _02020AF8
_02020AF4:
strh r1, [r6, #0x92]
_02020AF8:
mov r0, sb
bl sub_020218C0
add sb, sb, r0
mov r0, sb
mov r1, #3
bl sub_0201A514
add r0, sb, #1
mov r1, #1
bl sub_0201A514
ldrh r1, [r6, #0x7a]
add r0, sb, #2
and r1, r1, #0xff
bl sub_0201A514
add r0, sb, #3
sub r1, r0, sl
strh r1, [r6, #0x94]
ldrh r2, [r6, #0x94]
ldr r1, _02020D58 ; =0x04808084
add r2, r2, #2
strh r2, [r1]
mov r1, #5
bl sub_0201A514
add r0, sb, #4
mov r1, #5
bl sub_0201A514
add r0, sb, #5
mov r1, #0
bl sub_0201A514
add r0, sb, #6
ldrh r1, [r6, #0x74]
and r1, r1, #0xff
bl sub_0201A514
add r0, sb, #7
mov r1, #0
bl sub_0201A514
add r0, sb, #8
mov r1, #0
bl sub_0201A514
add r0, sb, #9
mov r1, #0
bl sub_0201A514
add r0, sb, #0xa
sub r1, r0, sl
strh r1, [r6, #0x96]
ldrh r2, [r6, #0x96]
mov r1, #0xdd
and r2, r2, #1
strh r2, [r6, #0xa2]
bl sub_0201A514
add r0, sb, #0xb
ldrh r1, [r6, #0xa0]
add r1, r1, #8
and r1, r1, #0xff
bl sub_0201A514
add r0, sb, #0xc
mov r1, #0
bl sub_0201A514
add r0, sb, #0xd
mov r1, #9
bl sub_0201A514
add r0, sb, #0xe
mov r1, #0xbf
bl sub_0201A514
add r0, sb, #0xf
mov r1, #0
bl sub_0201A514
ldrh r0, [r6, #0xe]
cmp r0, #1
bne _02020C38
ldrh r1, [r5, #0x20]
add r0, sb, #0x10
and r1, r1, #0xff
bl sub_0201A514
ldrh r1, [r5, #0x20]
add r0, sb, #0x11
mov r1, r1, asr #8
and r1, r1, #0xff
add sb, sb, #0x12
bl sub_0201A514
b _02020C54
_02020C38:
add r0, sb, #0x10
mov r1, #0xff
bl sub_0201A514
add r0, sb, #0x11
mov r1, #0xff
add sb, sb, #0x12
bl sub_0201A514
_02020C54:
ldr r1, _02020D5C ; =0x0380FFF0
mov r0, sb
ldrh r4, [r1]
and r1, r4, #0xff
bl sub_0201A514
mov r1, r4, lsr #8
add r0, sb, #1
and r1, r1, #0xff
add sb, sb, #2
bl sub_0201A514
ldr r4, [r6, #0x9c]
mov r5, #0
b _02020CA8
_02020C88:
mov r0, r4
bl sub_0201A540
mov r1, r0
mov r0, sb
bl sub_0201A514
add sb, sb, #1
add r4, r4, #1
add r5, r5, #1
_02020CA8:
ldrh r1, [r6, #0xa0]
cmp r5, r1
blo _02020C88
ldrh r0, [r6, #0xa2]
cmp r0, #0
beq _02020D04
ldr r0, [r6, #0x9c]
cmp r1, #0
add r0, r0, r1
sub r5, r0, #1
mov r4, #0
bls _02020D04
b _02020CF8
_02020CDC:
mov r0, r5
bl sub_0201A540
mov r1, r0
add r0, r5, #1
bl sub_0201A514
add r4, r4, #1
sub r5, r5, #1
_02020CF8:
ldrh r0, [r6, #0xa0]
cmp r4, r0
blo _02020CDC
_02020D04:
ldr r0, _02020D50 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #4
beq _02020D34
ldr r1, _02020D60 ; =0x0000B6B8
add r0, sb, #3
bic r2, r0, #3
ldr r0, _02020D64 ; =0x00001D46
strh r1, [r2]
strh r0, [r2, #2]
_02020D34:
mov r1, #0
add r0, sb, #0x1c
strh r1, [r6, #0xa4]
sub r0, r0, sl
strh r0, [r8, #0xa]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_02020D50: .word 0x0380FFF4
_02020D54: .word 0x027F74A4
_02020D58: .word 0x04808084
_02020D5C: .word 0x0380FFF0
_02020D60: .word 0x0000B6B8
_02020D64: .word 0x00001D46
arm_func_end sub_020209F4
arm_func_start sub_02020D68
sub_02020D68: ; 0x02020D68
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _02020E54 ; =0x0380FFF4
ldr r0, [r0]
add r4, r0, #0x344
ldr r1, [r0, #0x4ac]
ldrh r2, [r4, #0xa0]
ldrh r0, [r4, #0x96]
add r1, r1, #0x24
cmp r2, #0
add r5, r1, r0
beq _02020DD8
ldrh r0, [r4, #0xa2]
ldr r1, [r4, #0x9c]
tst r0, #1
add r0, r5, #0xa
beq _02020DD0
sub r0, r0, #1
add r2, r2, #2
bl sub_0201A46C
ldr r1, _02020E58 ; =0x0380FFF0
add r0, r5, #9
ldrh r1, [r1]
mov r1, r1, asr #8
and r1, r1, #0xff
bl sub_0201A514
b _02020DD8
_02020DD0:
add r2, r2, #1
bl sub_0201A46C
_02020DD8:
ldr r0, _02020E54 ; =0x0380FFF4
ldrh r2, [r4, #0x96]
ldr r0, [r0]
ldrh r1, [r4, #0xa0]
add r2, r2, #0x26
ldr r0, [r0, #0x4ac]
add r1, r2, r1
strh r1, [r0, #0xa]
ldrh r1, [r4, #0xa0]
add r0, r5, #1
add r1, r1, #8
and r1, r1, #0xff
bl sub_0201A514
ldr r0, _02020E54 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #4
beq _02020E44
ldrh r0, [r4, #0xa0]
add r1, r5, #0xd
add r0, r1, r0
ldr r1, _02020E5C ; =0x0000B6B8
bic r2, r0, #3
ldr r0, _02020E60 ; =0x00001D46
strh r1, [r2]
strh r0, [r2, #2]
_02020E44:
mov r0, #0
strh r0, [r4, #0xa4]
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02020E54: .word 0x0380FFF4
_02020E58: .word 0x0380FFF0
_02020E5C: .word 0x0000B6B8
_02020E60: .word 0x00001D46
arm_func_end sub_02020D68
arm_func_start sub_02020E64
sub_02020E64: ; 0x02020E64
ldr r0, _02020E90 ; =0x0380FFF4
ldr r0, [r0]
add r1, r0, #0x500
add r0, r0, #0x100
ldrh r1, [r1, #0x38]
ldrh r2, [r0, #0xa8]
rsb r0, r1, #0x18
cmp r2, r0
movlt r0, #1
movge r0, #0
bx lr
.align 2, 0
_02020E90: .word 0x0380FFF4
arm_func_end sub_02020E64
arm_func_start sub_02020E94
sub_02020E94: ; 0x02020E94
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _02020F08 ; =0x0380FFF4
mov r5, r1
ldr r1, [r2]
mov r6, r0
add r0, r1, #0x188
mov r1, #0x36
bl sub_0302805C
movs r4, r0
bne _02020ECC
mov r0, #2
bl sub_0201A85C
mov r0, r4
b _02020F00
_02020ECC:
ldr r0, _02020F0C ; =0x0000FFFF
mov r1, r6
strh r0, [r4, #0xc]
add r0, r4, #0x10
bl sub_02021798
strh r5, [r4, #0x3c]
mov r0, #2
strh r0, [r4, #0x16]
add r0, r0, #0x1c
strh r0, [r4, #0x22]
mov r0, #0xa0
strh r0, [r4, #0x24]
add r0, r4, #0x10
_02020F00:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02020F08: .word 0x0380FFF4
_02020F0C: .word 0x0000FFFF
arm_func_end sub_02020E94
arm_func_start sub_02020F10
sub_02020F10: ; 0x02020F10
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02020FB0 ; =0x0380FFF4
mov r6, r0
ldr r2, [r1]
mov r1, #0x5e
add r0, r2, #0x188
add r5, r2, #0x344
bl sub_0302805C
movs r4, r0
bne _02020F48
mov r0, #2
bl sub_0201A85C
mov r0, r4
b _02020FA8
_02020F48:
ldr r0, _02020FB4 ; =0x0000FFFF
mov r1, r6
strh r0, [r4, #0xc]
add r0, r4, #0x10
bl sub_02021798
ldrh r1, [r5, #0x7c]
add r0, r4, #0x40
strh r1, [r4, #0x3c]
ldrh r1, [r5, #0x70]
strh r1, [r4, #0x3e]
bl sub_0202184C
mov r5, r0
add r0, r4, #0x40
add r0, r0, r5
bl sub_020218C0
add r0, r5, r0
add r0, r0, #4
strh r0, [r4, #0x16]
ldrh r1, [r4, #0x16]
mov r0, #0
add r1, r1, #0x1c
strh r1, [r4, #0x22]
strh r0, [r4, #0x24]
add r0, r4, #0x10
_02020FA8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02020FB0: .word 0x0380FFF4
_02020FB4: .word 0x0000FFFF
arm_func_end sub_02020F10
arm_func_start sub_02020FB8
sub_02020FB8: ; 0x02020FB8
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02021064 ; =0x0380FFF4
mov r6, r0
ldr r2, [r1]
mov r1, #0x64
add r0, r2, #0x188
add r5, r2, #0x344
bl sub_0302805C
movs r4, r0
bne _02020FF0
mov r0, #2
bl sub_0201A85C
mov r0, r4
b _0202105C
_02020FF0:
ldr r0, _02021068 ; =0x0000FFFF
mov r1, r6
strh r0, [r4, #0xc]
add r0, r4, #0x10
bl sub_02021798
ldrh r1, [r5, #0x7c]
add r0, r4, #0x40
strh r1, [r4, #0x3c]
ldrh r2, [r5, #0x70]
add r1, r5, #0x82
strh r2, [r4, #0x3e]
bl sub_020198D0
add r0, r4, #0x46
bl sub_0202184C
mov r5, r0
add r0, r4, #0x46
add r0, r0, r5
bl sub_020218C0
add r0, r5, r0
add r0, r0, #0xa
strh r0, [r4, #0x16]
ldrh r1, [r4, #0x16]
mov r0, #0x20
add r1, r1, #0x1c
strh r1, [r4, #0x22]
strh r0, [r4, #0x24]
add r0, r4, #0x10
_0202105C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02021064: .word 0x0380FFF4
_02021068: .word 0x0000FFFF
arm_func_end sub_02020FB8
arm_func_start sub_0202106C
sub_0202106C: ; 0x0202106C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r3, _020211D8 ; =0x0380FFF4
mov r7, r1
ldr r1, [r3]
mov r8, r0
add r0, r1, #0x188
mov r1, #0x60
mov r6, r2
bl sub_0302805C
movs r4, r0
bne _020210A8
mov r0, #2
bl sub_0201A85C
mov r0, r4
b _020211D0
_020210A8:
ldr r0, _020211DC ; =0x0000FFFF
cmp r7, #0
strh r0, [r4, #0xc]
bne _020210CC
mov r0, r8
bl sub_0201B6A0
movs r5, r0
moveq r7, #0x13
b _020210D0
_020210CC:
mov r5, #0
_020210D0:
mov r0, r8
bl sub_0201B830
mov r1, r0
add r0, r4, #0x10
bl sub_02021798
ldr r0, _020211D8 ; =0x0380FFF4
cmp r5, #0
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0xc0]
strh r0, [r4, #0x3c]
strh r7, [r4, #0x3e]
strh r5, [r4, #0x40]
ldrneh r0, [r4, #0x40]
orrne r0, r0, #0xc000
strneh r0, [r4, #0x40]
add r0, r4, #0x42
bl sub_020218C0
add r0, r0, #6
strh r0, [r4, #0x16]
ldrh r1, [r4, #0x16]
mov r0, #0x10
add r1, r1, #0x1c
strh r1, [r4, #0x22]
strh r0, [r4, #0x24]
ldrh r0, [r4, #0x22]
add r1, r4, #0x24
cmp r6, #0
add r8, r1, r0
beq _020211B4
add r0, r6, #1
bl sub_0201A540
mov sb, r0
mov r0, r6
bl sub_0201A540
mov r1, r0
mov r0, r8
bl sub_0201A514
add r0, r8, #1
and r1, sb, #0xff
add r8, r8, #2
bl sub_0201A514
cmp sb, #0
mov r7, #0
bls _020211CC
add r5, r6, #2
b _020211A8
_0202118C:
add r0, r5, r7
bl sub_0201A540
mov r1, r0
mov r0, r8
bl sub_0201A514
add r7, r7, #1
add r8, r8, #1
_020211A8:
cmp r7, sb
blo _0202118C
b _020211CC
_020211B4:
mov r0, r8
mov r1, #0
bl sub_0201A514
add r0, r8, #1
mov r1, #0
bl sub_0201A514
_020211CC:
add r0, r4, #0x10
_020211D0:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_020211D8: .word 0x0380FFF4
_020211DC: .word 0x0000FFFF
arm_func_end sub_0202106C
arm_func_start sub_020211E0
sub_020211E0: ; 0x020211E0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r3, _02021338 ; =0x0380FFF4
mov r6, r1
ldr r1, [r3]
mov r8, r0
add r0, r1, #0x188
mov r1, #0x60
mov r5, r2
bl sub_0302805C
movs r4, r0
bne _0202121C
mov r0, #2
bl sub_0201A85C
mov r0, r4
b _02021330
_0202121C:
ldr r0, _0202133C ; =0x0000FFFF
cmp r6, #0
strh r0, [r4, #0xc]
bne _02021240
mov r0, r8
bl sub_0201B6A0
movs r7, r0
moveq r6, #0x13
b _02021244
_02021240:
mov r7, #0
_02021244:
mov r0, r8
bl sub_0201B830
mov r1, r0
add r0, r4, #0x10
bl sub_02021798
ldr r0, _02021338 ; =0x0380FFF4
orr r2, r7, #0xc000
ldr r1, [r0]
add r0, r4, #0x42
add r1, r1, #0x300
ldrh r1, [r1, #0xc0]
strh r1, [r4, #0x3c]
strh r6, [r4, #0x3e]
strh r2, [r4, #0x40]
bl sub_020218C0
add r0, r0, #6
strh r0, [r4, #0x16]
ldrh r1, [r4, #0x16]
mov r0, #0x30
add r1, r1, #0x1c
strh r1, [r4, #0x22]
strh r0, [r4, #0x24]
ldrh r0, [r4, #0x22]
add r1, r4, #0x24
cmp r5, #0
add r7, r1, r0
beq _02021314
add r0, r5, #1
bl sub_0201A540
mov r8, r0
mov r0, r5
bl sub_0201A540
mov r1, r0
mov r0, r7
bl sub_0201A514
add r0, r7, #1
and r1, r8, #0xff
bl sub_0201A514
add r7, r7, #2
mov r6, #0
add r5, r5, #2
b _02021308
_020212EC:
add r0, r5, r6
bl sub_0201A540
mov r1, r0
mov r0, r7
bl sub_0201A514
add r7, r7, #1
add r6, r6, #1
_02021308:
cmp r6, r8
blo _020212EC
b _0202132C
_02021314:
mov r0, r7
mov r1, #0
bl sub_0201A514
add r0, r7, #1
mov r1, #0
bl sub_0201A514
_0202132C:
add r0, r4, #0x10
_02021330:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_02021338: .word 0x0380FFF4
_0202133C: .word 0x0000FFFF
arm_func_end sub_020211E0
arm_func_start sub_02021340
sub_02021340: ; 0x02021340
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020213C4 ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
mov r1, #0x5a
add r0, r0, #0x188
bl sub_0302805C
movs r5, r0
bne _02021374
mov r0, #2
bl sub_0201A85C
mov r0, r5
b _020213BC
_02021374:
ldr r2, _020213C8 ; =0x0000FFFF
mov r1, r4
add r0, r5, #0x10
strh r2, [r5, #0xc]
bl sub_02021798
add r0, r5, #0x3c
bl sub_0202184C
mov r4, r0
add r0, r5, #0x3c
add r0, r0, r4
bl sub_020218C0
add r0, r4, r0
strh r0, [r5, #0x16]
add r0, r0, #0x1c
strh r0, [r5, #0x22]
mov r0, #0x40
strh r0, [r5, #0x24]
add r0, r5, #0x10
_020213BC:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020213C4: .word 0x0380FFF4
_020213C8: .word 0x0000FFFF
arm_func_end sub_02021340
arm_func_start sub_020213CC
sub_020213CC: ; 0x020213CC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r1, _020215E0 ; =0x0380FFF4
mov r5, r0
ldr r0, [r1]
add r4, r0, #0x344
bl sub_02020E64
cmp r0, #0
moveq r0, #0
beq _020215D8
ldr r1, _020215E0 ; =0x0380FFF4
ldrh r0, [r4, #0xa0]
ldr r2, [r1]
add r1, r0, #0x78
add r0, r2, #0x188
bl sub_0302805C
movs r6, r0
bne _02021420
mov r0, #2
bl sub_0201A85C
mov r0, r6
b _020215D8
_02021420:
ldr r0, _020215E4 ; =0x0000FFFF
mov r1, r5
strh r0, [r6, #0xc]
add r0, r6, #0x10
bl sub_02021798
ldrh r1, [r4, #0x6e]
add r0, r6, #0x48
strh r1, [r6, #0x44]
ldrh r1, [r4, #0x7c]
strh r1, [r6, #0x46]
bl sub_0202184C
mov r4, r0
add r0, r6, #0x48
add r0, r0, r4
bl sub_020218C0
add r7, r4, r0
add r0, r6, #0x48
add r4, r0, r7
mov r0, r4
mov r1, #3
bl sub_0201A514
add r0, r4, #1
mov r1, #1
bl sub_0201A514
ldr r1, _020215E0 ; =0x0380FFF4
add r0, r4, #2
ldr r1, [r1]
add r1, r1, #0x300
ldrh r1, [r1, #0xbe]
and r1, r1, #0xff
bl sub_0201A514
ldr r0, _020215E0 ; =0x0380FFF4
add r7, r7, #3
ldr r1, [r0]
add r0, r6, #0x48
add r5, r0, r7
add r4, r1, #0x344
add r8, r1, #0x31c
mov r0, r5
mov r1, #0xdd
mov sl, #0
bl sub_0201A514
ldr r1, _020215E0 ; =0x0380FFF4
add r0, r5, #1
ldr r1, [r1]
add r1, r1, #0x300
ldrh r1, [r1, #0xe4]
add r1, r1, #8
and r1, r1, #0xff
bl sub_0201A514
add r0, r5, #2
mov r1, sl
bl sub_0201A514
add r0, r5, #3
mov r1, #9
bl sub_0201A514
add r0, r5, #4
mov r1, #0xbf
bl sub_0201A514
add r0, r5, #5
mov r1, sl
bl sub_0201A514
ldrh r1, [r8, #0x20]
add r0, r5, #6
and r1, r1, #0xff
bl sub_0201A514
ldrh r1, [r8, #0x20]
add r0, r5, #7
mov r1, r1, asr #8
and r1, r1, #0xff
bl sub_0201A514
ldr r1, _020215E8 ; =0x0380FFF0
add r0, r5, #8
ldrh r8, [r1]
and r1, r8, #0xff
bl sub_0201A514
mov r1, r8, lsr #8
add r0, r5, #9
and r1, r1, #0xff
bl sub_0201A514
ldrh r0, [r4, #0xa0]
add sl, sl, #0xa
cmp r0, #0
beq _020215B4
ldrh r0, [r4, #0xa2]
ldr r8, [r4, #0x9c]
tst r0, #1
addne r8, r8, #1
mov sb, #0
b _020215A8
_02021588:
mov r0, r8
bl sub_0201A540
mov r1, r0
add r0, r5, sl
bl sub_0201A514
add sl, sl, #1
add r8, r8, #1
add sb, sb, #1
_020215A8:
ldrh r0, [r4, #0xa0]
cmp sb, r0
blo _02021588
_020215B4:
add r0, r7, sl
add r0, r0, #0xc
strh r0, [r6, #0x16]
ldrh r1, [r6, #0x16]
mov r0, #0x50
add r1, r1, #0x1c
strh r1, [r6, #0x22]
strh r0, [r6, #0x24]
add r0, r6, #0x10
_020215D8:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_020215E0: .word 0x0380FFF4
_020215E4: .word 0x0000FFFF
_020215E8: .word 0x0380FFF0
arm_func_end sub_020213CC
arm_func_start sub_020215EC
sub_020215EC: ; 0x020215EC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
cmp r2, #0
beq _02021610
bl sub_02020E64
cmp r0, #0
moveq r0, #0
beq _0202169C
_02021610:
ldr r0, _020216A4 ; =0x0380FFF4
add r1, r5, #0x3d
ldr r0, [r0]
add r0, r0, #0x188
bl sub_0302805C
movs r4, r0
bne _0202163C
mov r0, #2
bl sub_0201A85C
mov r0, r4
b _0202169C
_0202163C:
ldr r2, _020216A8 ; =0x0000FFFF
mov r1, r6
add r0, r4, #0x10
strh r2, [r4, #0xc]
bl sub_02021798
cmp r5, #0
beq _0202167C
add r0, r4, #0x42
mov r1, #0x10
bl sub_0201A514
add r0, r4, #0x43
and r1, r5, #0xff
bl sub_0201A514
add r0, r5, #2
mov r0, r0, lsl #0x10
mov r5, r0, lsr #0x10
_0202167C:
add r0, r5, #6
strh r0, [r4, #0x16]
ldrh r1, [r4, #0x16]
mov r0, #0xb0
add r1, r1, #0x1c
strh r1, [r4, #0x22]
strh r0, [r4, #0x24]
add r0, r4, #0x10
_0202169C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_020216A4: .word 0x0380FFF4
_020216A8: .word 0x0000FFFF
arm_func_end sub_020215EC
arm_func_start sub_020216AC
sub_020216AC: ; 0x020216AC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
cmp r2, #0
beq _020216D0
bl sub_02020E64
cmp r0, #0
moveq r0, #0
beq _02021730
_020216D0:
ldr r0, _02021738 ; =0x0380FFF4
mov r1, #0x36
ldr r0, [r0]
add r0, r0, #0x188
bl sub_0302805C
movs r4, r0
bne _020216FC
mov r0, #2
bl sub_0201A85C
mov r0, r4
b _02021730
_020216FC:
ldr r0, _0202173C ; =0x0000FFFF
mov r1, r6
strh r0, [r4, #0xc]
add r0, r4, #0x10
bl sub_02021798
strh r5, [r4, #0x3c]
mov r0, #2
strh r0, [r4, #0x16]
add r0, r0, #0x1c
strh r0, [r4, #0x22]
mov r0, #0xc0
strh r0, [r4, #0x24]
add r0, r4, #0x10
_02021730:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02021738: .word 0x0380FFF4
_0202173C: .word 0x0000FFFF
arm_func_end sub_020216AC
arm_func_start sub_02021740
sub_02021740: ; 0x02021740
stmdb sp!, {r3, lr}
ldr ip, _02021794 ; =0x0380FFF4
mov r2, #0
ldr r3, [ip]
mov r1, #0x14
ldr r3, [r3, #0x45c]
orr r0, r0, #0xc000
strh r2, [r3]
strh r2, [r3, #2]
strh r2, [r3, #4]
strh r1, [r3, #0xa]
mov r1, #0xa4
strh r1, [r3, #0xc]
strh r0, [r3, #0xe]
ldr r2, [ip]
add r0, r3, #0x10
add r1, r2, #0x3a8
add r2, r2, #0x324
bl sub_020198EC
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02021794: .word 0x0380FFF4
arm_func_end sub_02021740
arm_func_start sub_02021798
sub_02021798: ; 0x02021798
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r1, r5
mov r0, #0
mov r2, #0x2c
bl sub_0302D764
bl sub_02019D68
strh r0, [r5, #0x10]
ldr r0, _020217E0 ; =0x0380FFF4
mov r1, r4
ldr r3, [r0]
add r0, r5, #0x18
add r2, r3, #0x324
add r3, r3, #0x3a8
bl sub_02019920
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020217E0: .word 0x0380FFF4
arm_func_end sub_02021798
arm_func_start sub_020217E4
sub_020217E4: ; 0x020217E4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _02021848 ; =0x0380FFF4
mov r7, r0
ldr r0, [r2]
mov r6, r1
ldr r5, [r0, #0x1a0]
mvn r4, #0
b _02021834
_02021804:
ldrh r0, [r5, #0x24]
cmp r0, r6
bne _02021828
mov r1, r7
add r0, r5, #0x28
bl sub_02019C64
cmp r0, #0
movne r0, #1
bne _02021840
_02021828:
mov r0, r5
bl sub_03028270
mov r5, r0
_02021834:
cmp r5, r4
bne _02021804
mov r0, #0
_02021840:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02021848: .word 0x0380FFF4
arm_func_end sub_020217E4
arm_func_start sub_0202184C
sub_0202184C: ; 0x0202184C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r1, _020218BC ; =0x0380FFF4
mov r5, #0
ldr r1, [r1]
mov r8, r0
add r4, r1, #0x344
ldrh r6, [r4, #0x1e]
mov r1, r5
bl sub_0201A514
add r0, r8, #1
and r1, r6, #0xff
bl sub_0201A514
add r5, r5, #2
mov r7, #0
add r4, r4, #0x20
b _020218A8
_0202188C:
add r0, r4, r7
bl sub_0201A540
mov r1, r0
add r0, r8, r5
bl sub_0201A514
add r5, r5, #1
add r7, r7, #1
_020218A8:
cmp r7, r6
blo _0202188C
mov r0, r5
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_020218BC: .word 0x0380FFF4
arm_func_end sub_0202184C
arm_func_start sub_020218C0
sub_020218C0: ; 0x020218C0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _0202195C ; =0x0380FFF4
mov r1, #1
ldr r2, [r2]
mov sb, r0
add r6, r2, #0x344
mov r7, #0
bl sub_0201A514
ldr r4, _02021960 ; =0x027F74C4
add r7, r7, #2
mov r8, #0
mov r5, #1
_020218F0:
ldrh r0, [r6, #0x62]
tst r0, r5, lsl r8
beq _02021934
ldrh r0, [r6, #0x60]
tst r0, r5, lsl r8
mov r0, r8, lsl #1
ldrh r1, [r4, r0]
beq _02021924
orr r1, r1, #0x80
add r0, sb, r7
and r1, r1, #0xff
bl sub_0201A514
b _02021930
_02021924:
add r0, sb, r7
and r1, r1, #0xff
bl sub_0201A514
_02021930:
add r7, r7, #1
_02021934:
add r8, r8, #1
cmp r8, #0x10
blo _020218F0
sub r1, r7, #2
add r0, sb, #1
and r1, r1, #0xff
bl sub_0201A514
mov r0, r7
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_0202195C: .word 0x0380FFF4
_02021960: .word 0x027F74C4
arm_func_end sub_020218C0
arm_func_start sub_02021964
sub_02021964: ; 0x02021964
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _02021C30 ; =0x0380FFF4
mvn r0, #0
ldr r4, [r1]
add r7, r4, #0x17c
ldr r5, [r7, #0x48]
add r6, r4, #0x344
cmp r5, r0
beq _02021C28
ldrh r0, [r6, #8]
cmp r0, #0x40
beq _020219A4
mov r1, r5
add r0, r7, #0x48
bl sub_030280F8
b _02021C28
_020219A4:
ldrh r0, [r5, #0x24]
mov r0, r0, lsl #0x17
movs r0, r0, lsr #0x1f
beq _020219BC
ldrh r0, [r5, #0x34]
b _020219C0
_020219BC:
ldrh r0, [r5, #0x28]
_020219C0:
tst r0, #1
ldrne r0, [r4, #0x568]
mov sb, #1
addne r0, r0, #1
strne r0, [r4, #0x568]
ldreq r0, [r4, #0x564]
addeq r0, r0, #1
streq r0, [r4, #0x564]
ldrh r0, [r5, #0x18]
ldr r2, [r4, #0x560]
and r1, r0, #0xf0
mov r0, r1, asr #3
add r0, r1, r0, lsr #28
mov r0, r0, asr #4
sub r0, r0, #1
add r0, r2, r0
str r0, [r4, #0x560]
ldrh r2, [r6, #0xc]
cmp r2, #1
beq _02021A20
cmp r2, #2
cmpne r2, #3
beq _02021AFC
b _02021B9C
_02021A20:
ldrh r0, [r5, #0x24]
tst r0, #1
bne _02021B9C
add r0, r5, #0x2e
bl sub_0201B0F0
mov r8, r0
cmp r8, #0xff
beq _02021A4C
bl sub_0201B7D0
cmp r0, #0x40
beq _02021AB0
_02021A4C:
mov r0, r8
bl sub_0201B7D0
cmp r0, #0x30
add r0, r5, #0x2e
bne _02021A80
mov r1, #0xa0
bl sub_020217E4
cmp r0, #0
bne _02021B9C
add r0, r5, #0x2e
mov r1, #7
bl sub_02020E94
b _02021AA0
_02021A80:
mov r1, #0xc0
bl sub_020217E4
cmp r0, #0
bne _02021B9C
add r0, r5, #0x2e
mov r1, #7
mov r2, #1
bl sub_020216AC
_02021AA0:
cmp r0, #0
beq _02021B9C
bl sub_0202086C
b _02021B9C
_02021AB0:
ldrh r1, [r5, #0x24]
mov r0, r8, lsl #0x10
mov r1, r1, lsl #0x13
mov r0, r0, lsr #0x10
mov r1, r1, lsr #0x1f
bl sub_0201B53C
mov r0, r8
bl sub_0201B870
ldrh r1, [r5, #0x3a]
cmp r1, r0
ldreq r0, [r4, #0x578]
addeq r0, r0, #1
streq r0, [r4, #0x578]
beq _02021B9C
add r0, r5, #0x28
add r1, r5, #0x34
bl sub_020198D0
mov sb, #0
b _02021B9C
_02021AFC:
ldrh r1, [r5, #0x24]
tst r1, #1
bne _02021B9C
ldrh r0, [r6, #0xe]
cmp r0, #0
beq _02021B68
tst r1, #0x2000
bne _02021B68
ldrh r0, [r5, #0x28]
tst r0, #1
ldrneh r0, [r6, #0x8e]
bicne r0, r0, #1
strneh r0, [r6, #0x8e]
bne _02021B44
cmp r2, #3
ldrneh r0, [r6, #0x8e]
bicne r0, r0, #2
strneh r0, [r6, #0x8e]
_02021B44:
ldrh r0, [r6, #0x8e]
cmp r0, #0
ldreqh r0, [r7, #0x20]
cmpeq r0, #0
ldreqh r0, [r7, #0x2c]
cmpeq r0, #0
bne _02021B68
mov r0, #1
bl sub_020194A4
_02021B68:
ldrh r8, [r6, #0x88]
mov r0, r8
bl sub_0201B870
ldrh r1, [r5, #0x3a]
cmp r1, r0
ldreq r0, [r4, #0x578]
addeq r0, r0, #1
streq r0, [r4, #0x578]
beq _02021B9C
add r0, r5, #0x2e
add r1, r5, #0x34
bl sub_020198D0
mov sb, #0
_02021B9C:
cmp sb, #0
bne _02021C04
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
strh r0, [r5, #0x12]
ldrh r1, [r5, #0x22]
and r1, r1, #0xff
bl sub_0201B51C
ldrh r1, [r5, #0x3a]
mov r0, r8
bl sub_0201B63C
mov r0, r8
bl sub_0201B67C
ldrh r1, [r5, #0x20]
mov r0, #0x180
sub r1, r1, #0x18
strh r1, [r5, #0x16]
strh r0, [r5, #0xc]
ldrh r0, [r5, #0x16]
mov r1, r5
add r0, r0, #0x2d
mov r2, r0, lsr #1
add r0, r7, #0x48
strh r2, [r5, #0xe]
bl sub_03028548
b _02021C10
_02021C04:
mov r1, r5
add r0, r7, #0x48
bl sub_030280F8
_02021C10:
ldrh r0, [r7, #0x50]
cmp r0, #0
beq _02021C28
mov r0, #2
mov r1, #6
bl sub_03027D88
_02021C28:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_02021C30: .word 0x0380FFF4
arm_func_end sub_02021964
arm_func_start sub_02021C34
sub_02021C34: ; 0x02021C34
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02021DA0 ; =0x0380FFF4
mov r6, r0
ldr r0, [r1]
add r4, r0, #0x344
ldrh r1, [r4, #8]
add r0, r0, #0xdc
cmp r1, #0x40
add r5, r0, #0x400
movne r0, #1
bne _02021D98
add r0, r6, #0x1e
add r1, r4, #0x64
bl sub_02019C64
cmp r0, #0
beq _02021C88
add r0, r6, #0x24
add r1, r4, #0x82
bl sub_02019C64
cmp r0, #0
bne _02021C90
_02021C88:
mov r0, #1
b _02021D98
_02021C90:
ldrh r0, [r4, #0x6a]
mov r1, #1
mov r0, r1, lsl r0
ldrh r1, [r6, #0x2e]
mov r0, r0, lsl #0x10
tst r1, r0, lsr #16
moveq r0, #0
movne r0, #0x2000
strh r0, [r5, #6]
ldr r0, _02021DA4 ; =0x04808098
ldrh r0, [r0]
tst r0, #0x8000
beq _02021CE8
mov r0, r0, lsl #0x11
mov r0, r0, lsr #0x10
add r0, r0, #0x4800000
add r0, r0, #0x4000
ldrh r0, [r0, #4]
cmp r0, #0
ldrneh r0, [r5, #6]
orrne r0, r0, #0x4000
strneh r0, [r5, #6]
_02021CE8:
ldrh r0, [r4, #0x88]
bl sub_0201B67C
ldrh r1, [r6, #0x10]
ldr r0, _02021DA8 ; =0x00000182
sub r1, r1, #0x1c
strh r1, [r6, #6]
sub r1, r6, #0x10
strh r0, [r1, #0xc]
ldrh r2, [r6, #6]
mov r0, #0
add r2, r2, #0x31
mov r2, r2, lsr #1
strh r2, [r1, #0xe]
ldrh r2, [r1, #0x3e]
b _02021D34
_02021D24:
tst r2, #1
mov r2, r2, lsl #0xf
addne r0, r0, #1
mov r2, r2, lsr #0x10
_02021D34:
cmp r2, #0
bne _02021D24
ldr r2, _02021DAC ; =0x04808094
ldrh r3, [r5, #6]
ldrh r4, [r2]
ldrh r2, [r2, #4]
ldrh r5, [r1, #0x18]
and r2, r2, #0x8000
and r4, r4, #0x8000
orr r2, r3, r2, asr #4
orr r2, r2, r4, asr #3
orr r2, r5, r2
strh r2, [r1, #0x18]
ldrh r2, [r1, #0x3c]
ldrh r3, [r1, #0x1c]
add r2, r2, #0xa
mul r2, r0, r2
add r0, r2, #0xfc
add r2, r3, r0, lsr #4
ldr r0, _02021DA0 ; =0x0380FFF4
strh r2, [r1, #0x1a]
ldr r0, [r0]
add r0, r0, #0x188
bl sub_03028548
mov r0, #0
_02021D98:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_02021DA0: .word 0x0380FFF4
_02021DA4: .word 0x04808098
_02021DA8: .word 0x00000182
_02021DAC: .word 0x04808094
arm_func_end sub_02021C34
arm_func_start sub_02021DB0
sub_02021DB0: ; 0x02021DB0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _02021F58 ; =0x0380FFF4
mov r7, r0
ldr r1, [r1]
add r0, r1, #0x2c
add r5, r0, #0x400
ldrh r0, [r5, #0x3c]
ldr r4, [r5, #0x90]
cmp r0, #0
beq _02021F50
add r0, r7, #0x18
add r1, r1, #0x3a8
bl sub_02019C64
cmp r0, #0
beq _02021F50
ldrh r1, [r7, #0x10]
ldrh r0, [r4, #0x16]
sub r1, r1, #0x18
sub r0, r0, #8
cmp r1, r0
bgt _02021F50
add r0, r7, #0x1e
bl sub_0201B0F0
mov r6, r0
cmp r6, #0xff
beq _02021E2C
cmp r6, #0
beq _02021E68
bl sub_0201B7D0
cmp r0, #0x40
beq _02021E68
_02021E2C:
add r0, r7, #0x1e
mov r1, #0xc0
bl sub_020217E4
cmp r0, #0
bne _02021F50
add r0, r7, #0x1e
mov r1, #7
mov r2, #0
bl sub_020216AC
cmp r0, #0
beq _02021F50
mov r1, #2
strh r1, [r0]
bl sub_0202086C
b _02021F50
_02021E68:
cmp r6, #0
beq _02021F50
ldrh r1, [r7, #0x14]
mov r0, r6, lsl #0x10
mov r1, r1, lsl #0x13
mov r0, r0, lsr #0x10
mov r1, r1, lsr #0x1f
bl sub_0201B53C
mov r0, r6
bl sub_0201B67C
mov r0, r6
bl sub_0201B8BC
mov r1, #1
mov r0, r1, lsl r0
mov r0, r0, lsl #0x10
ldrh r1, [r5, #0x9a]
mov r2, r0, lsr #0x10
tst r2, r1
bne _02021F50
ldrh r0, [r5, #0x98]
tst r2, r0
beq _02021F50
orr r0, r1, r2
strh r0, [r5, #0x9a]
ldrh r1, [r4, #0x10]
mvn r0, r2
and r1, r1, r0
mov r0, r2, lsl #0xf
strh r1, [r4, #0x10]
add r6, r4, #0x1a
mov r1, r0, lsr #0x10
b _02021F00
_02021EE8:
ldrh r0, [r5, #0x98]
tst r1, r0
ldrneh r0, [r4, #0x16]
addne r6, r6, r0
mov r0, r1, lsl #0xf
mov r1, r0, lsr #0x10
_02021F00:
cmp r1, #1
bne _02021EE8
ldrh r1, [r7, #0x10]
add r0, r6, #3
sub r1, r1, #0x18
strh r1, [r6]
ldrh r1, [r7, #0x12]
and r1, r1, #0xff
bl sub_0201A514
ldrh r1, [r7, #0xe]
add r0, r6, #2
and r1, r1, #0xff
bl sub_0201A514
ldrh r2, [r6]
cmp r2, #0
beq _02021F50
add r0, r7, #0x2c
add r1, r6, #8
add r2, r2, #1
bl sub_0302D78C
_02021F50:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02021F58: .word 0x0380FFF4
arm_func_end sub_02021DB0
arm_func_start sub_02021F5C
sub_02021F5C: ; 0x02021F5C
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02022024 ; =0x0380FFF4
mov r4, r0
ldr r1, [r1]
add r0, r1, #0x300
ldrh r0, [r0, #0x4c]
add r5, r1, #0x344
cmp r0, #0x40
movne r0, #1
bne _0202201C
add r0, r4, #0x1e
add r1, r5, #0x64
bl sub_02019C64
cmp r0, #0
beq _02021FAC
add r0, r4, #0x24
add r1, r5, #0x82
bl sub_02019C64
cmp r0, #0
bne _02021FB4
_02021FAC:
mov r0, #1
b _0202201C
_02021FB4:
ldrh r1, [r4, #0x10]
ldr r0, _02022028 ; =0x00000185
sub r1, r1, #0x1c
strh r1, [r4, #6]
sub r1, r4, #0x10
strh r0, [r1, #0xc]
mov r0, #0x18
strh r0, [r1, #0xe]
ldr r4, _02022024 ; =0x0380FFF4
ldr r2, _0202202C ; =0x04808094
ldr r0, [r4]
ldrh ip, [r2]
add r0, r0, #0x400
ldrh r2, [r2, #4]
ldrh r3, [r0, #0xe2]
and r0, r2, #0x8000
ldrh lr, [r1, #0x18]
and r2, ip, #0x8000
orr r0, r3, r0, asr #4
orr r0, r0, r2, asr #3
orr r0, lr, r0
strh r0, [r1, #0x18]
ldr r0, [r4]
add r0, r0, #0x188
bl sub_03028548
mov r0, #0
_0202201C:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02022024: .word 0x0380FFF4
_02022028: .word 0x00000185
_0202202C: .word 0x04808094
arm_func_end sub_02021F5C
arm_func_start sub_02022030
sub_02022030: ; 0x02022030
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x44
ldr r1, _02022658 ; =0x0380FFF4
mov sl, r0
ldr r3, [r1]
add r0, sl, #0x1e
ldr r2, [r3, #0x570]
add r1, r3, #4
add r2, r2, #1
str r2, [r3, #0x570]
add r4, r3, #0x344
add r5, r1, #0x400
add r6, r3, #0x31c
add r7, r3, #0x17c
bl sub_0201B198
mov r8, r0
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
strh r0, [sl, #2]
cmp r8, #0xff
beq _0202264C
ldrh r1, [sl, #0x12]
bl sub_0201B51C
ldrh sb, [sl, #6]
cmp sb, #0xc
bls _0202264C
add r1, sp, #0x18
mov r0, #0
mov r2, #0x2c
bl sub_0302D7C0
add r2, sl, #0x38
sub r1, sb, #0xc
mov r0, #2
str r2, [sp, #0x18]
strh r1, [sp, #0x20]
strh r0, [sp, #0x22]
ldrh r0, [r4, #0x1e]
cmp r0, #0
ldreqh r0, [sp, #0x22]
orreq r0, r0, #1
streqh r0, [sp, #0x22]
mov r0, #0x38
strh r0, [sp, #0x24]
ldrh r1, [sl, #8]
add r0, sp, #0x18
strh r1, [sp, #0x1c]
ldrh r1, [sl, #0x36]
strh r1, [sp, #0x1e]
bl sub_02023400
ldr sb, [sp, #0x38]
cmp sb, #0
beq _0202212C
ldrh r0, [sl, #0x16]
tst r0, #0x8000
beq _0202212C
add r0, sb, #6
bl sub_0201A540
mov fp, r0
add r0, sb, #7
bl sub_0201A540
ldr r1, _0202265C ; =0x0480810C
add r0, fp, r0, lsl #8
strh r0, [r1]
_0202212C:
ldrh r1, [r5]
cmp r1, #0x13
ldreq r0, [r5, #0x18]
ldreqh r0, [r0, #0x38]
cmpeq r0, #1
bne _02022164
ldrh r0, [sp, #0x22]
and r0, r0, #9
cmp r0, #9
bne _02022634
add r1, sp, #0x18
mov r0, sl
bl sub_020229E0
b _02022634
_02022164:
ldrh r0, [sp, #0x22]
tst r0, #8
beq _02022634
cmp r1, #0x21
bne _020222EC
bl sub_0201A3D0
ldrh r0, [sp, #0x22]
and r0, r0, #0x30
cmp r0, #0x30
movne r0, #0xc
strneh r0, [r5, #4]
movne r0, #0xa
strneh r0, [r5, #6]
bne _020222C8
ldrh r0, [sl, #0x34]
cmp r0, #0x3e8
movhi r0, #0xc
strhih r0, [r5, #4]
movhi r0, #1
strhih r0, [r5, #6]
bhi _020222C8
mov r1, #0
strh r1, [r5, #4]
ldrh r0, [sp, #0x24]
tst r0, #2
beq _020221E0
ldrh r0, [sp, #0x22]
tst r0, #2
bne _020221E0
ldrh r0, [sp, #0x2a]
bl sub_020190F0
_020221E0:
ldrh r1, [sp, #0x2e]
mov r0, r8
bl sub_0201B61C
ldrh r0, [r4, #0xc]
cmp r0, #2
bne _02022270
ldr sb, [sp, #0x40]
cmp sb, #0
beq _02022258
add r0, sb, #6
bl sub_0201A540
mov fp, r0
add r0, sb, #7
bl sub_0201A540
add r0, fp, r0, lsl #8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #1
bl sub_020189A0
ldr r0, [sp, #0x40]
add r0, r0, #8
bl sub_0201A540
ldr r1, [sp, #0x40]
mov sb, r0
add r0, r1, #9
bl sub_0201A540
add r1, sb, r0, lsl #8
ldr r0, _02022660 ; =0x0380FFF0
strh r1, [r0]
b _02022270
_02022258:
ldr r0, _02022664 ; =0x0000FFFF
mov r1, #1
bl sub_020189A0
ldr r0, _02022660 ; =0x0380FFF0
mov r1, #0
strh r1, [r0]
_02022270:
ldr r0, [sp, #0x3c]
add r0, r0, #3
bl sub_0201A540
bl sub_02018F28
ldr r0, [sp, #0x3c]
add r0, r0, #2
bl sub_0201A540
strh r0, [r4, #0x76]
ldrh r0, [sl, #0x34]
bl sub_02018ED0
mov r0, #1
strh r0, [r4, #0x12]
strh r0, [r4, #0x1a]
ldrh r0, [r4, #0xc]
cmp r0, #2
ldreq r0, _02022668 ; =0x04808048
moveq r1, #3
streqh r1, [r0]
ldr r1, _0202266C ; =0x04808038
ldrh r0, [r1]
orr r0, r0, #1
strh r0, [r1]
_020222C8:
ldr r0, [r5, #0x1c]
add r1, sl, #0x1e
add r0, r0, #8
bl sub_020198D0
mov r2, #0x25
mov r0, #2
mov r1, #1
strh r2, [r5]
bl sub_03027D88
_020222EC:
ldrh r0, [r4, #0xc]
cmp r0, #2
beq _02022304
cmp r0, #3
beq _020223BC
b _0202261C
_02022304:
ldr sb, [sp, #0x40]
cmp sb, #0
beq _020223BC
add r0, sb, #6
bl sub_0201A540
mov r5, r0
add r0, sb, #7
bl sub_0201A540
add r0, r5, r0, lsl #8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0
bl sub_020189A0
ldr r0, [sp, #0x40]
add r0, r0, #8
bl sub_0201A540
ldr r1, [sp, #0x40]
mov r5, r0
add r0, r1, #9
bl sub_0201A540
ldr r1, _02022660 ; =0x0380FFF0
add r0, r5, r0, lsl #8
strh r0, [r1]
ldr r0, [sp, #0x40]
add r0, r0, #1
bl sub_0201A540
sub r0, r0, #8
strh r0, [r4, #0xa0]
ldrh r2, [r4, #0xa0]
cmp r2, #0
beq _020223BC
ldr r0, [sp, #0x40]
ldr r1, [r4, #0x9c]
tst r0, #1
beq _020223A8
add r0, r0, #9
add r2, r2, #2
bl sub_0302D78C
mov r0, #1
strh r0, [r4, #0xa2]
b _020223BC
_020223A8:
add r0, r0, #0xa
add r2, r2, #1
bl sub_0302D78C
mov r0, #0
strh r0, [r4, #0xa2]
_020223BC:
mov r1, #0
mov r0, r8
strh r1, [r4, #0x80]
bl sub_0201B67C
add r1, sl, #0x2c
add r0, sp, #0x10
ldmia r1, {r2, r3}
stmia r0, {r2, r3}
ldrh r0, [r4, #0x6e]
mov r5, #0
mov r8, r0, lsl #0xa
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
mov r2, r8
mov r3, r5
bl sub_03036370
adds fp, r0, #1
umull r3, r0, fp, r8
adc sb, r1, #0
mla r0, fp, r5, r0
mla r0, sb, r8, r0
add r2, sp, #0x10
str r0, [sp, #0x14]
ldr r1, _02022670 ; =0x048080F6
ldrh r0, [r2, #6]
str r3, [sp, #0x10]
strh r0, [r1]
ldrh r0, [r2, #4]
strh r0, [r1, #-2]
ldrh r0, [r2, #2]
strh r0, [r1, #-4]
ldrh r0, [r2]
orr r0, r0, #1
strh r0, [r1, #-6]
ldrh r0, [r4, #0xc]
cmp r0, #2
bne _02022524
ldrh r0, [r4, #0x1a]
cmp r0, #0
beq _02022524
ldr r1, [sp, #0x10]
ldr r0, [sp, #0x14]
subs r1, r1, r8
sbc r0, r0, r5
str r1, [sp, #0x10]
str r0, [sp, #0x14]
bl sub_0302D4F0
ldr r1, _02022674 ; =0x048080F8
ldrh ip, [r1]
ldrh fp, [r1, #2]
ldrh sb, [r1, #4]
ldrh r8, [r1, #6]
ldrh r5, [r1]
ldrh r3, [r1, #2]
ldrh r2, [r1, #4]
ldrh r1, [r1, #6]
strh ip, [sp, #8]
strh r5, [sp]
strh fp, [sp, #0xa]
strh sb, [sp, #0xc]
strh r8, [sp, #0xe]
strh r3, [sp, #2]
strh r2, [sp, #4]
strh r1, [sp, #6]
bl sub_0302D504
ldrh r1, [sp, #8]
ldrh r0, [sp]
cmp r1, r0
bhs _020224E8
ldr r2, [sp, #8]
ldr r0, [sp, #0x10]
ldr r1, [sp, #0xc]
subs r2, r2, r0
ldr r0, [sp, #0x14]
b _020224FC
_020224E8:
ldr r2, [sp]
ldr r0, [sp, #0x10]
ldr r1, [sp, #4]
subs r2, r2, r0
ldr r0, [sp, #0x14]
_020224FC:
sbc r0, r1, r0
mov r2, r2, lsr #0xa
orr r2, r2, r0, lsl #22
ldrh r1, [r6, #0x20]
ldr r0, _02022678 ; =0x04808134
cmp r2, r1
sublo r1, r1, r2
strloh r1, [r0]
movhs r1, #0
strhsh r1, [r0]
_02022524:
ldrh r0, [r4, #8]
cmp r0, #0x40
bne _0202261C
ldr r1, [sp, #0x3c]
cmp r1, #0
beq _0202261C
ldrh r0, [r4, #0xe]
cmp r0, #1
bne _0202261C
add r0, r1, #2
bl sub_0201A540
ldrh r1, [r4, #0x76]
cmp r1, r0
strneh r0, [r4, #0x76]
mov r1, #0
strh r1, [r4, #0x8e]
cmp r0, #0
bne _02022588
ldr r0, [sp, #0x3c]
add r0, r0, #4
bl sub_0201A540
tst r0, #1
ldrneh r0, [r4, #0x8e]
orrne r0, r0, #1
strneh r0, [r4, #0x8e]
_02022588:
ldr r0, [sp, #0x3c]
add r0, r0, #4
bl sub_0201A540
ldr r1, [sp, #0x3c]
and r8, r0, #0xfe
add r0, r1, #1
mov r5, r8, lsl #3
bl sub_0201A540
ldrh r1, [r4, #0x6a]
add r0, r8, r0
cmp r1, r8, lsl #3
sub r0, r0, #3
blo _020225F8
cmp r1, r0, lsl #3
bhi _020225F8
ldr r0, [sp, #0x3c]
sub r5, r1, r5
add r0, r0, #5
add r0, r0, r5, lsr #3
bl sub_0201A540
and r1, r5, #7
mov r2, #1
tst r0, r2, lsl r1
beq _020225F8
ldrh r0, [r4, #0x8e]
orr r0, r0, #2
strh r0, [r4, #0x8e]
bl sub_020208F8
_020225F8:
ldrh r0, [r7, #0x20]
cmp r0, #0
ldreqh r0, [r7, #0x2c]
cmpeq r0, #0
ldreqh r0, [r4, #0x8e]
cmpeq r0, #0
bne _0202261C
mov r0, #1
bl sub_020194A4
_0202261C:
ldrh r0, [r6, #0x1e]
mov r0, r0, lsl #0x19
movs r0, r0, lsr #0x1f
beq _02022634
mov r0, sl
bl sub_0201D784
_02022634:
ldr r2, [sp, #0x34]
cmp r2, #0
beq _0202264C
ldrh r0, [sp, #0x2a]
mov r1, sl
bl sub_0202436C
_0202264C:
add sp, sp, #0x44
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02022658: .word 0x0380FFF4
_0202265C: .word 0x0480810C
_02022660: .word 0x0380FFF0
_02022664: .word 0x0000FFFF
_02022668: .word 0x04808048
_0202266C: .word 0x04808038
_02022670: .word 0x048080F6
_02022674: .word 0x048080F8
_02022678: .word 0x04808134
arm_func_end sub_02022030
arm_func_start sub_0202267C
sub_0202267C: ; 0x0202267C
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02022758 ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
ldrh r5, [r4, #2]
add r1, r0, #0x344
ldrh r0, [r1, #0xc]
cmp r0, #1
beq _020226B0
cmp r0, #2
cmpne r0, #3
beq _02022718
b _02022750
_020226B0:
mov r0, r5
bl sub_0201B7D0
cmp r0, #0x40
bne _020226E8
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x30
bl sub_0201B434
ldrh r1, [r4, #0x2c]
add r0, r4, #0x1e
bl sub_0201D634
mov r0, r5
bl sub_02020550
b _02022750
_020226E8:
cmp r0, #0x30
add r0, r4, #0x1e
mov r1, #7
bne _02022700
bl sub_02020E94
b _02022708
_02022700:
mov r2, #1
bl sub_020216AC
_02022708:
cmp r0, #0
beq _02022750
bl sub_0202086C
b _02022750
_02022718:
ldrh r0, [r1, #8]
cmp r0, #0x40
bne _02022750
add r0, r4, #0x1e
add r1, r1, #0x82
bl sub_02019C64
cmp r0, #0
beq _02022750
mov r0, #0x30
bl sub_03028A28
bl sub_0201982C
ldrh r1, [r4, #0x2c]
add r0, r4, #0x1e
bl sub_0201D634
_02022750:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02022758: .word 0x0380FFF4
arm_func_end sub_0202267C
arm_func_start sub_0202275C
sub_0202275C: ; 0x0202275C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x2c
ldr r1, _02022924 ; =0x0380FFF4
mov r7, r0
ldr r0, [r1]
ldrh r5, [r7, #6]
add r4, r0, #0x31c
cmp r5, #4
bls _02022918
add r0, r0, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #1
bne _02022918
add r0, r7, #0x1e
mov r1, #0x10
bl sub_020217E4
cmp r0, #0
bne _02022918
ldrh r6, [r7, #2]
cmp r6, #0
beq _020227C0
mov r0, r6
bl sub_0201B7D0
cmp r0, #0x30
bhs _020227F4
_020227C0:
add r0, r7, #0x1e
mov r1, #0xc0
bl sub_020217E4
cmp r0, #0
bne _02022918
add r0, r7, #0x1e
mov r1, #6
mov r2, #1
bl sub_020216AC
cmp r0, #0
beq _02022918
bl sub_0202086C
b _02022918
_020227F4:
mov r0, r6
bl sub_0201B7D0
cmp r0, #0x40
mov r0, r6
bne _02022820
mov r1, #0x30
bl sub_0201B434
add r0, r7, #0x1e
mov r1, #1
bl sub_0201D634
b _0202282C
_02022820:
bl sub_0201B8BC
cmp r0, #0
bne _02022918
_0202282C:
add r1, sp, #0
mov r0, #0
mov r2, #0x2c
bl sub_0302D7C0
add r2, r7, #0x30
sub r1, r5, #4
str r2, [sp]
strh r1, [sp, #8]
add r0, sp, #0
bl sub_02023400
ldrh r1, [r7, #0x2c]
ldr r0, _02022928 ; =0x0000FFC2
tst r1, r0
bne _020228C4
mov r0, r1, lsl #0x1f
movs r0, r0, lsr #0x1f
beq _020228C4
ldrh r2, [r4, #0x18]
cmp r2, #0
moveq r0, r1, lsl #0x1b
moveq r0, r0, lsr #0x1f
cmpeq r0, #1
beq _020228C4
cmp r2, #0
beq _020228A0
ldrh r0, [r7, #0x2c]
mov r0, r0, lsl #0x1b
movs r0, r0, lsr #0x1f
beq _020228C4
_020228A0:
ldrh r0, [r4, #0x1e]
mov r0, r0, lsl #0x1d
mov r0, r0, lsr #0x1f
cmp r0, #1
bne _020228CC
ldrh r0, [r7, #0x2c]
mov r0, r0, lsl #0x1a
movs r0, r0, lsr #0x1f
bne _020228CC
_020228C4:
mov r1, #0xa
b _02022900
_020228CC:
mov r0, r6
bl sub_0201B5FC
ldrh r0, [sp, #0xa]
tst r0, #1
moveq r1, #1
beq _02022900
tst r0, #4
moveq r1, #0x12
beq _02022900
ldrh r1, [sp, #0x16]
mov r0, r6
bl sub_0201B61C
mov r1, #0
_02022900:
ldr r2, [sp, #0x1c]
mov r0, r6
bl sub_0202106C
cmp r0, #0
beq _02022918
bl sub_0202086C
_02022918:
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02022924: .word 0x0380FFF4
_02022928: .word 0x0000FFC2
arm_func_end sub_0202275C
arm_func_start sub_0202292C
sub_0202292C: ; 0x0202292C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x2c
mov r4, r0
add r0, r4, #0x1e
mov r1, #0x50
bl sub_020217E4
cmp r0, #0
bne _020229D0
ldrh r0, [r4, #0x24]
tst r0, #1
bne _02022964
ldrh r0, [r4, #8]
tst r0, #0x8000
beq _020229D0
_02022964:
add r1, sp, #0
mov r0, #0
mov r2, #0x2c
bl sub_0302D7C0
add r0, r4, #0x2c
str r0, [sp]
ldrh r1, [r4, #6]
ldr r0, _020229DC ; =0x0380FFF4
strh r1, [sp, #8]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x3a]
mov r0, r0, lsl #0x1e
movs r0, r0, lsr #0x1f
moveq r0, #0x800
streqh r0, [sp, #0xc]
add r0, sp, #0
bl sub_02023400
ldrh r0, [sp, #0xa]
and r0, r0, #1
cmp r0, #1
bne _020229D0
add r0, r4, #0x1e
bl sub_020213CC
cmp r0, #0
beq _020229D0
bl sub_0202086C
_020229D0:
add sp, sp, #0x2c
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_020229DC: .word 0x0380FFF4
arm_func_end sub_0202292C
arm_func_start sub_020229E0
sub_020229E0: ; 0x020229E0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x30
ldr r2, _02022DA8 ; =0x0380FFF4
mov r7, r0
ldr r2, [r2]
mov sl, r1
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
cmp r1, #0x13
add r4, r0, #0x400
bne _02022D9C
ldr r0, [r4, #0x18]
ldr r5, [r4, #0x1c]
add r8, r0, #0x4e
mov r6, #0
b _02022A50
_02022A24:
mov r0, r8
add r1, r7, #0x24
bl sub_02019C64
cmp r0, #0
ldrneh r1, [r5, #6]
movne r0, #1
orrne r0, r1, r0, lsl r6
strneh r0, [r5, #6]
bne _02022D9C
add r8, r8, #6
add r6, r6, #1
_02022A50:
ldr r0, [r4, #0x18]
ldrh r0, [r0, #0x4c]
cmp r6, r0
blo _02022A24
add r6, r5, #0xa
mov r8, #0
b _02022A8C
_02022A6C:
add r0, r7, #0x24
add r1, r6, #4
bl sub_02019C64
cmp r0, #0
bne _02022D9C
ldrh r0, [r6]
add r8, r8, #1
add r6, r6, r0, lsl #1
_02022A8C:
ldrh r0, [r5, #8]
cmp r8, r0
blo _02022A6C
mov r1, r6
mov r0, #0
mov r2, #0x40
bl sub_0302D764
ldrh r8, [r7, #6]
cmp r8, #0xc
bls _02022D9C
cmp sl, #0
bne _02022B08
add r1, sp, #4
mov r0, #0
mov r2, #0x2c
bl sub_0302D7C0
add r3, r7, #0x38
sub r2, r8, #0xc
mov r0, #0x38
strh r0, [sp, #0x10]
mov r1, #3
str r3, [sp, #4]
strh r2, [sp, #0xc]
strh r1, [sp, #0xe]
ldrh r1, [r7, #8]
add r0, sp, #4
strh r1, [sp, #8]
ldrh r1, [r7, #0x36]
strh r1, [sp, #0xa]
bl sub_02023400
add sl, sp, #4
_02022B08:
ldr r0, [sl, #0x28]
cmp r0, #0
ldreqh r0, [sl, #0x1a]
beq _02022B2C
add r0, r0, #1
bl sub_0201A540
sub r0, r0, #8
strh r0, [r6, #0x3c]
ldrh r0, [r6, #0x3c]
_02022B2C:
add r0, r0, #0x41
mov r0, r0, lsr #1
strh r0, [r6]
ldrh r0, [sl, #0xa]
and r0, r0, #1
cmp r0, #1
bne _02022D90
ldr r0, _02022DA8 ; =0x0380FFF4
ldrh r1, [r6]
ldr r0, [r0]
add r0, r0, #0x400
ldrh r0, [r0, #8]
cmp r0, r1
blo _02022D90
ldrh r1, [r7, #0x36]
add r0, r6, #4
strh r1, [r6, #0x2c]
add r1, r7, #0x24
bl sub_020198D0
ldrh r0, [r7, #0x34]
strh r0, [r6, #0x32]
ldrh r0, [r7, #0x12]
and r0, r0, #0xff
strh r0, [r6, #2]
ldr r0, [sl, #0x28]
cmp r0, #0
beq _02022BD4
mov r7, #0
add r8, r6, #0x40
b _02022BC4
_02022BA4:
ldr r0, [sl, #0x28]
add r0, r0, #0xa
add r0, r0, r7
bl sub_0201A540
mov r1, r0
add r0, r8, r7
bl sub_0201A514
add r7, r7, #1
_02022BC4:
ldrh r0, [r6, #0x3c]
cmp r7, r0
blo _02022BA4
b _02022C78
_02022BD4:
ldrh r0, [sl, #0x18]
strh r0, [r6, #0x3e]
ldrh r0, [sl, #0x18]
cmp r0, #0
beq _02022C78
add r7, r7, #0x38
add fp, r6, #0x40
mov r8, #0
b _02022C6C
_02022BF8:
mov r0, r7
bl sub_0201A540
mov sb, r0
add r0, r7, #1
bl sub_0201A540
cmp sb, #6
bls _02022C64
ldr r1, [sl, #0x28]
cmp r7, r1
beq _02022C64
add r0, r0, #2
mov sb, #0
str r0, [sp]
b _02022C50
_02022C30:
mov r0, r7
bl sub_0201A540
mov r1, r0
mov r0, fp
bl sub_0201A514
add fp, fp, #1
add r7, r7, #1
add sb, sb, #1
_02022C50:
ldr r0, [sp]
cmp sb, r0
blo _02022C30
add r8, r8, #1
b _02022C6C
_02022C64:
add r0, r0, #2
add r7, r7, r0
_02022C6C:
ldrh r0, [sl, #0x18]
cmp r8, r0
blo _02022BF8
_02022C78:
ldr r0, [sl, #0x1c]
cmp r0, #0
beq _02022CCC
add r0, r0, #1
bl sub_0201A540
strh r0, [r6, #0xa]
mov r7, #0
add r8, r6, #0xc
b _02022CBC
_02022C9C:
ldr r0, [sl, #0x1c]
add r0, r0, #2
add r0, r0, r7
bl sub_0201A540
mov r1, r0
add r0, r8, r7
bl sub_0201A514
add r7, r7, #1
_02022CBC:
ldrh r0, [r6, #0xa]
cmp r7, r0
blo _02022C9C
b _02022CF4
_02022CCC:
mov sb, #0
strh sb, [r6, #0xa]
add r8, r6, #0xc
mov r7, sb
_02022CDC:
mov r1, r7
add r0, r8, sb
bl sub_0201A514
add sb, sb, #1
cmp sb, #0x20
blo _02022CDC
_02022CF4:
ldrh r0, [sl, #0x14]
strh r0, [r6, #0x2e]
ldrh r0, [sl, #0x16]
strh r0, [r6, #0x30]
ldrh r0, [sl, #0x12]
strh r0, [r6, #0x36]
ldr r0, [sl, #0x20]
cmp r0, #0
beq _02022D24
add r0, r0, #3
bl sub_0201A540
strh r0, [r6, #0x38]
_02022D24:
ldr r0, [sl, #0x24]
cmp r0, #0
beq _02022D3C
add r0, r0, #3
bl sub_0201A540
strh r0, [r6, #0x34]
_02022D3C:
ldrh r1, [r5, #2]
ldrh r0, [r6]
add r0, r1, r0
strh r0, [r5, #2]
ldrh r0, [r5, #8]
add r0, r0, #1
strh r0, [r5, #8]
ldrh r1, [r4, #4]
ldrh r0, [r6]
sub r0, r1, r0
strh r0, [r4, #4]
ldrh r0, [r4, #4]
cmp r0, #0x20
bhs _02022D9C
bl sub_0201A3D0
mov r2, #0x15
mov r0, #2
mov r1, #0
strh r2, [r4]
bl sub_03027D88
b _02022D9C
_02022D90:
ldr r1, _02022DAC ; =0x027F74B4
add r0, r6, #4
bl sub_020198D0
_02022D9C:
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02022DA8: .word 0x0380FFF4
_02022DAC: .word 0x027F74B4
arm_func_end sub_020229E0
arm_func_start sub_02022DB0
sub_02022DB0: ; 0x02022DB0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r1, _0202333C ; =0x0380FFF4
mov sl, r0
ldr r2, [r1]
add r0, r2, #0x600
ldrh r1, [r0, #0x90]
add r0, r2, #4
tst r1, #8
add r4, r2, #0x344
add sb, r0, #0x400
beq _02022E50
ldr r1, _02023340 ; =0x048080B0
add r0, r2, #0x2c
ldrh r2, [r1]
add r1, r0, #0x400
tst r2, #1
ldrneh r0, [r1]
cmpne r0, #0
bne _02022E50
tst r2, #4
ldrneh r0, [r1, #0x14]
cmpne r0, #0
bne _02022E50
tst r2, #8
ldrneh r0, [r1, #0x28]
cmpne r0, #0
bne _02022E50
ldr r0, _02023344 ; =0x0480819C
ldrh r0, [r0]
tst r0, #1
bne _02022E50
ldr r2, _02023348 ; =0x04808032
mov r3, #0
strh r3, [r2]
mov r1, #0x8000
ldr r0, _0202333C ; =0x0380FFF4
strh r1, [r2]
ldr r0, [r0]
add r0, r0, #0x400
strh r3, [r0, #0xde]
_02022E50:
add r0, sl, #0x1e
mov r1, #0xb0
bl sub_020217E4
cmp r0, #0
bne _02023334
ldrh r0, [sl, #0x2e]
ldrh r8, [sl, #2]
add r0, r0, #1
mov r0, r0, lsl #0x10
cmp r8, #0
mov r5, #0
mov r6, r0, lsr #0x10
moveq r7, #0x13
moveq r5, #1
beq _020232F8
ldrh r0, [r4, #0xc]
cmp r0, #1
bne _02022F00
mov r0, r8
bl sub_0201B7D0
cmp r0, #0x20
bls _02022EC4
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_0201B434
add r0, sl, #0x1e
mov r1, #1
bl sub_0201D3D4
_02022EC4:
ldrh r0, [sl, #8]
tst r0, #0x400
beq _02022F00
mov r0, r8
bl sub_0201B850
cmp r0, #0
beq _02022F00
mov r5, #1
mov r0, r8
mov r1, #0
strh r5, [sl, #0x2c]
mov r7, #0xf
mov r6, #4
bl sub_0201B65C
b _020232F8
_02022F00:
ldrh r0, [sl, #0x2c]
cmp r0, #0
beq _02022F18
cmp r0, #1
beq _02022FF4
b _020232E8
_02022F18:
ldrh r1, [r4, #0xc]
cmp r1, #1
ldreq r0, _0202333C ; =0x0380FFF4
ldreq r0, [r0]
addeq r0, r0, #0x300
ldreqh r0, [r0, #0x32]
cmpeq r0, #1
moveq r7, #0xd
moveq r5, #1
beq _020232F8
cmp r1, #1
bne _02022F64
ldrh r0, [sl, #0x2e]
mov r5, #1
cmp r0, #1
moveq r7, #0
movne r7, #0xe
movne r6, #2
b _020232F8
_02022F64:
beq _020232F8
ldrh r0, [sl, #0x2e]
cmp r0, #2
ldreq r1, [sb, #0x18]
ldreqh r0, [r1, #0x16]
cmpeq r0, #0
bne _020232F8
add r0, r1, #0x10
add r1, sl, #0x1e
bl sub_02019C64
cmp r0, #0
beq _020232F8
ldrh r0, [sb]
cmp r0, #0x31
bne _020232F8
bl sub_0201A3D0
ldrh r0, [sl, #0x30]
cmp r0, #0
ldrne r0, [sb, #0x1c]
movne r1, #0xc
strneh r1, [r0, #4]
ldrneh r1, [sl, #0x30]
bne _02022FD4
mov r0, #0x30
bl sub_03028A28
ldr r0, [sb, #0x1c]
mov r1, #0
strh r1, [r0, #4]
_02022FD4:
ldr r0, [sb, #0x1c]
mov r2, #0x35
strh r1, [r0, #6]
mov r0, #2
mov r1, r0
strh r2, [sb]
bl sub_03027D88
b _020232F8
_02022FF4:
ldrh r0, [r4, #0xc]
cmp r0, #1
bne _02023194
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_0201B434
ldrh r0, [sl, #0x2e]
cmp r0, #1
bne _020230B0
add r0, sl, #0x1e
mov r1, #0x80
mov r2, #1
bl sub_020215EC
movs r4, r0
beq _020232F8
ldrh r1, [sl, #0x2c]
ldr r0, _0202334C ; =0x04808044
strh r1, [r4, #0x2c]
strh r6, [r4, #0x2e]
mov r1, #0
strh r1, [r4, #0x30]
ldrh r1, [r0]
ldrh r0, [r0]
add r0, r1, r0, lsl #8
mov r0, r0, lsl #0x10
movs sb, r0, lsr #0x10
moveq sb, #1
mov r0, sb
bl sub_0201A590
mov r0, r8
mov r1, sb
bl sub_0201B65C
add r0, r4, #0x33
add sb, r4, #0x34
bl sub_0201A540
mov fp, r0
mov r8, #0
b _0202309C
_02023090:
bl sub_0201A5A8
strh r0, [sb], #2
add r8, r8, #2
_0202309C:
cmp r8, fp
blo _02023090
mov r0, r4
bl sub_0202086C
b _020232F8
_020230B0:
cmp r0, #3
mov r0, r8
bne _0202317C
bl sub_0201B7D0
cmp r0, #0x20
bne _020230D8
mov r0, r8
bl sub_0201B850
cmp r0, #0
bne _020230E4
_020230D8:
mov r7, #1
mov r5, r7
b _020232F8
_020230E4:
ldrh r0, [sl, #2]
bl sub_0201B850
bl sub_0201A590
add r0, sl, #0x33
add r7, sl, #0x34
bl sub_0201A540
mov r4, r0
mov r5, #0
b _02023120
_02023108:
bl sub_0201A5A8
ldrh r1, [r7], #2
cmp r1, r0
movne r0, #0
bne _02023150
add r5, r5, #1
_02023120:
cmp r5, r4, lsr #1
blo _02023108
tst r4, #1
beq _0202314C
bl sub_0201A5A8
ldrh r1, [r7]
and r0, r0, #0xff
and r1, r1, #0xff
cmp r1, r0
movne r0, #0
bne _02023150
_0202314C:
mov r0, #1
_02023150:
cmp r0, #0
mov r0, r8
mov r1, #0
mov r5, #1
bne _02023170
mov r7, #0xf
bl sub_0201B65C
b _020232F8
_02023170:
bl sub_0201B65C
mov r7, #0
b _020232F8
_0202317C:
mov r1, #0
bl sub_0201B65C
mov r7, #0xe
mov r6, #2
mov r5, #1
b _020232F8
_02023194:
ldr r1, [sb, #0x18]
ldrh r0, [r1, #0x16]
cmp r0, #1
bne _020232F8
add r0, r1, #0x10
add r1, sl, #0x1e
bl sub_02019C64
cmp r0, #0
beq _020232F8
ldrh r0, [sl, #0x2e]
cmp r0, #2
bne _02023284
ldrh r0, [sb]
cmp r0, #0x31
bne _020232F8
ldrh r0, [sl, #0x30]
cmp r0, #0
beq _02023218
bl sub_0201A3D0
mov r0, #0x35
strh r0, [sb]
ldr r0, [sb, #0x1c]
mov r1, #0xc
strh r1, [r0, #4]
mov r0, #2
ldrh r3, [sl, #0x30]
ldr r2, [sb, #0x1c]
mov r1, r0
strh r3, [r2, #6]
bl sub_03027D88
mov r0, #0x20
bl sub_03028A28
b _020232F8
_02023218:
mov r1, #0x33
add r0, sl, #0x33
strh r1, [sb]
bl sub_0201A540
mov r1, r0
add r0, sl, #0x1e
mov r2, #1
bl sub_020215EC
movs r4, r0
beq _020232F8
ldrh r1, [r4, #0x14]
add r0, sl, #0x2c
orr r1, r1, #0x4000
strh r1, [r4, #0x14]
ldrh r2, [sl, #6]
add r1, r4, #0x2c
add r2, r2, #1
bl sub_0302D78C
ldrh r1, [sl, #0x2c]
mov r0, #3
strh r1, [r4, #0x2c]
strh r0, [r4, #0x2e]
mov r1, #0
mov r0, r4
strh r1, [r4, #0x30]
bl sub_0202086C
b _020232F8
_02023284:
cmp r0, #4
ldreqh r0, [sb]
cmpeq r0, #0x33
bne _020232F8
bl sub_0201A3D0
ldrh r0, [sl, #0x30]
cmp r0, #0
ldrne r0, [sb, #0x1c]
movne r1, #0xc
strneh r1, [r0, #4]
ldrneh r1, [sl, #0x30]
bne _020232C8
mov r0, #0x30
bl sub_03028A28
ldr r0, [sb, #0x1c]
mov r1, #0
strh r1, [r0, #4]
_020232C8:
ldr r0, [sb, #0x1c]
mov r2, #0x35
strh r1, [r0, #6]
mov r0, #2
mov r1, r0
strh r2, [sb]
bl sub_03027D88
b _020232F8
_020232E8:
ldrh r0, [r4, #0xc]
cmp r0, #1
moveq r7, #0xd
moveq r5, #1
_020232F8:
cmp r5, #0
beq _02023334
cmp r7, #0
movne r2, #1
moveq r2, #0
add r0, sl, #0x1e
mov r1, #0
bl sub_020215EC
cmp r0, #0
beq _02023334
ldrh r1, [sl, #0x2c]
strh r1, [r0, #0x2c]
strh r6, [r0, #0x2e]
strh r7, [r0, #0x30]
bl sub_0202086C
_02023334:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_0202333C: .word 0x0380FFF4
_02023340: .word 0x048080B0
_02023344: .word 0x0480819C
_02023348: .word 0x04808032
_0202334C: .word 0x04808044
arm_func_end sub_02022DB0
arm_func_start sub_02023350
sub_02023350: ; 0x02023350
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020233FC ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
ldrh r5, [r4, #2]
add r1, r0, #0x344
ldrh r0, [r1, #0xc]
cmp r0, #1
beq _02023384
cmp r0, #2
cmpne r0, #3
beq _020233BC
b _020233F4
_02023384:
mov r0, r5
bl sub_0201B7D0
cmp r0, #0x20
bls _020233F4
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_0201B434
ldrh r1, [r4, #0x2c]
add r0, r4, #0x1e
bl sub_0201D3D4
mov r0, r5
bl sub_02020550
b _020233F4
_020233BC:
ldrh r0, [r1, #8]
cmp r0, #0x20
bls _020233F4
add r0, r4, #0x1e
add r1, r1, #0x82
bl sub_02019C64
cmp r0, #0
beq _020233F4
mov r0, #0x20
bl sub_03028A28
bl sub_0201982C
ldrh r1, [r4, #0x2c]
add r0, r4, #0x1e
bl sub_0201D3D4
_020233F4:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_020233FC: .word 0x0380FFF4
arm_func_end sub_02023350
arm_func_start sub_02023400
sub_02023400: ; 0x02023400
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r1, _02023720 ; =0x0380FFF4
mov sb, r0
ldr r0, [r1]
ldr r5, [sb]
add r4, r0, #0x344
ldrh r0, [r4, #0x7a]
ldr sl, _02023720 ; =0x0380FFF4
strh r0, [sb, #0x12]
ldrh r0, [sb, #0xc]
tst r0, #0x800
ldrneh r0, [sb, #0xa]
orrne r0, r0, #1
strneh r0, [sb, #0xa]
ldrh r6, [sb, #8]
b _02023694
_02023440:
mov r0, r5
bl sub_0201A540
mov r8, r0
add r0, r5, #1
add r5, r5, #2
bl sub_0201A540
mov r7, r0
cmp r8, #6
addls pc, pc, r8, lsl #2
b _02023484
_02023468: ; jump table
b _02023490 ; case 0
b _020234FC ; case 1
b _02023688 ; case 2
b _02023560 ; case 3
b _020235CC ; case 4
b _020235AC ; case 5
b _02023688 ; case 6
_02023484:
cmp r8, #0xdd
beq _020235EC
b _0202366C
_02023490:
cmp r7, #0x20
bhi _02023688
ldrh r1, [sb, #0xc]
sub r0, r5, #2
orr r1, r1, #1
strh r1, [sb, #0xc]
str r0, [sb, #0x1c]
cmp r7, #0
bne _020234CC
ldrh r0, [sb, #0xc]
tst r0, #0x800
ldrneh r0, [sb, #0xa]
orrne r0, r0, #1
strneh r0, [sb, #0xa]
bne _02023688
_020234CC:
ldrh r1, [sb, #0xa]
mov r0, r7, lsl #0x10
bic r2, r1, #1
strh r2, [sb, #0xa]
mov r1, r5
mov r0, r0, lsr #0x10
bl sub_02019B94
cmp r0, #0
ldrneh r0, [sb, #0xa]
orrne r0, r0, #1
strneh r0, [sb, #0xa]
b _02023688
_020234FC:
cmp r7, #1
blo _02023688
ldrh r1, [sb, #0xc]
sub r0, r5, #2
orr r1, r1, #4
strh r1, [sb, #0xc]
add r1, sb, #0x14
bl sub_02019CB4
ldrh r0, [r4, #0x60]
ldrh r1, [r4, #0x62]
ldrh r2, [sb, #0x14]
orr r1, r0, r1
mvn r1, r1
tst r2, r1
ldreqh r1, [sb, #0x16]
orreq r1, r2, r1
andeq r1, r0, r1
cmpeq r0, r1
ldreqh r0, [sb, #0xa]
orreq r0, r0, #4
streqh r0, [sb, #0xa]
ldrneh r0, [sb, #0xa]
bicne r0, r0, #4
strneh r0, [sb, #0xa]
b _02023688
_02023560:
cmp r7, #1
blo _02023688
ldrh r1, [sb, #0xc]
mov r0, r5
orr r1, r1, #2
strh r1, [sb, #0xc]
bl sub_0201A540
strh r0, [sb, #0x12]
ldr r0, [sl]
ldrh r1, [sb, #0x12]
ldr r0, [r0, #0x41c]
ldrh r0, [r0, #0x4a]
cmp r1, r0
ldrh r0, [sb, #0xa]
orreq r0, r0, #2
streqh r0, [sb, #0xa]
bicne r0, r0, #2
strneh r0, [sb, #0xa]
b _02023688
_020235AC:
cmp r7, #3
blo _02023688
ldrh r1, [sb, #0xc]
sub r0, r5, #2
orr r1, r1, #0x100
strh r1, [sb, #0xc]
str r0, [sb, #0x24]
b _02023688
_020235CC:
cmp r7, #6
blo _02023688
ldrh r1, [sb, #0xc]
sub r0, r5, #2
orr r1, r1, #0x200
strh r1, [sb, #0xc]
str r0, [sb, #0x20]
b _02023688
_020235EC:
cmp r7, #8
blo _02023634
mov r0, r5
bl sub_0201A540
cmp r0, #0
bne _02023634
add r0, r5, #1
bl sub_0201A540
cmp r0, #9
bne _02023634
add r0, r5, #2
bl sub_0201A540
cmp r0, #0xbf
bne _02023634
add r0, r5, #3
bl sub_0201A540
cmp r0, #0
beq _02023654
_02023634:
ldrh r1, [sb, #0x18]
add r0, r7, #2
add r1, r1, #1
strh r1, [sb, #0x18]
ldrh r1, [sb, #0x1a]
add r0, r1, r0
strh r0, [sb, #0x1a]
b _02023688
_02023654:
ldrh r1, [sb, #0xc]
sub r0, r5, #2
orr r1, r1, #0x400
strh r1, [sb, #0xc]
str r0, [sb, #0x28]
b _02023688
_0202366C:
ldrh r1, [sb, #0x18]
add r0, r7, #2
add r1, r1, #1
strh r1, [sb, #0x18]
ldrh r1, [sb, #0x1a]
add r0, r1, r0
strh r0, [sb, #0x1a]
_02023688:
add r0, r7, #2
add r5, r5, r7
sub r6, r6, r0
_02023694:
cmp r6, #0
bgt _02023440
ldrh r0, [sb, #0xc]
tst r0, #8
beq _020236CC
ldrh r0, [r4, #0x64]
tst r0, #1
bne _020236C0
ldrh r0, [sb, #4]
tst r0, #0x8000
beq _020236CC
_020236C0:
ldrh r0, [sb, #0xa]
orr r0, r0, #8
strh r0, [sb, #0xa]
_020236CC:
ldrh r0, [sb, #0xc]
tst r0, #0x30
beq _02023718
ldrh r1, [sb, #6]
ldrh r0, [r4, #0x7c]
and r1, r1, #3
and r0, r0, #3
cmp r1, r0
ldreqh r0, [sb, #0xa]
orreq r0, r0, #0x10
streqh r0, [sb, #0xa]
ldrh r1, [sb, #6]
ldrh r0, [r4, #0x7c]
and r1, r1, #0x10
and r0, r0, #0x10
cmp r1, r0
ldreqh r0, [sb, #0xa]
orreq r0, r0, #0x20
streqh r0, [sb, #0xa]
_02023718:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_02023720: .word 0x0380FFF4
arm_func_end sub_02023400
arm_func_start sub_02023724
sub_02023724: ; 0x02023724
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2c
ldr r0, _02023DCC ; =0x0380FFF4
mvn r1, #0
ldr r4, [r0]
add sl, r4, #0x17c
ldr r6, [sl, #0x60]
add r0, r4, #0x300
ldrh r5, [r0, #0x50]
cmp r6, r1
beq _02023DC0
ldrh r0, [r6, #0x28]
tst r0, #1
ldrne r0, [r4, #0x568]
addne r0, r0, #1
strne r0, [r4, #0x568]
ldreq r0, [r4, #0x564]
addeq r0, r0, #1
streq r0, [r4, #0x564]
ldrh r0, [r6, #0x18]
ldr r2, [r4, #0x560]
and r1, r0, #0xf0
mov r0, r1, asr #3
add r0, r1, r0, lsr #28
mov r0, r0, asr #4
sub r0, r0, #1
add r0, r2, r0
str r0, [r4, #0x560]
ldrh r1, [r6, #0x24]
add r0, r6, #0x2e
mov r2, r1, lsl #0x1c
mov r1, r1, lsl #0x18
mov r8, r2, lsr #0x1e
mov sb, r1, lsr #0x1c
bl sub_0201B198
mov r7, r0
strh r7, [r6, #0x12]
cmp r7, #0xff
bne _02023814
mov r0, #0
strh r0, [r6, #0x12]
cmp r5, #1
bne _02023D9C
cmp r8, #0
bne _02023D9C
cmp sb, #0
beq _02023808
cmp sb, #4
beq _020237FC
cmp sb, #0xb
bne _02023D9C
add r0, r6, #0x10
bl sub_02022DB0
b _02023D9C
_020237FC:
add r0, r6, #0x10
bl sub_0202292C
b _02023D9C
_02023808:
add r0, r6, #0x10
bl sub_0202275C
b _02023D9C
_02023814:
bl sub_0201B67C
ldrh r1, [r6, #0x22]
mov r0, r7, lsl #0x10
and r1, r1, #0xff
mov r0, r0, lsr #0x10
bl sub_0201B51C
cmp r8, #0
bne _02023860
ldrh fp, [r6, #0x3a]
mov r0, r7
bl sub_0201B870
cmp fp, r0
ldreq r0, [r4, #0x578]
addeq r0, r0, #1
streq r0, [r4, #0x578]
beq _02023D9C
mov r0, r7
mov r1, fp
bl sub_0201B63C
_02023860:
cmp r5, #1
beq _02023878
cmp r5, #2
cmpne r5, #3
beq _02023B18
b _02023D9C
_02023878:
ldrh r1, [r6, #0x24]
mov r0, r7, lsl #0x10
mov r1, r1, lsl #0x13
mov r0, r0, lsr #0x10
mov r1, r1, lsr #0x1f
bl sub_0201B53C
cmp r8, #0
bne _02023AB4
cmp sb, #0xc
addls pc, pc, sb, lsl #2
b _02023D9C
_020238A4: ; jump table
b _020238E4 ; case 0
b _02023D9C ; case 1
b _020238F0 ; case 2
b _02023D9C ; case 3
b _02023A74 ; case 4
b _02023A80 ; case 5
b _02023D9C ; case 6
b _02023D9C ; case 7
b _020238D8 ; case 8
b _02023D9C ; case 9
b _02023A90 ; case 10
b _02023A9C ; case 11
b _02023AA8 ; case 12
_020238D8:
add r0, r6, #0x10
bl sub_02022030
b _02023D9C
_020238E4:
add r0, r6, #0x10
bl sub_0202275C
b _02023D9C
_020238F0:
ldr r0, _02023DCC ; =0x0380FFF4
ldrh r4, [r6, #0x16]
ldr r5, [r0]
cmp r4, #0xa
bls _02023D9C
add r0, r5, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #1
bne _02023D9C
add r0, r6, #0x2e
mov r1, #0x30
bl sub_020217E4
cmp r0, #0
bne _02023D9C
ldrh r7, [r6, #0x12]
mov r0, r7
bl sub_0201B7D0
cmp r0, #0x30
bhs _02023970
add r0, r6, #0x2e
mov r1, #0xc0
bl sub_020217E4
cmp r0, #0
bne _02023D9C
add r0, r6, #0x2e
mov r1, #6
mov r2, #1
bl sub_020216AC
cmp r0, #0
beq _02023D9C
bl sub_0202086C
b _02023D9C
_02023970:
mov r0, r7
bl sub_0201B7D0
cmp r0, #0x40
mov r0, r7
bne _0202399C
mov r1, #0x30
bl sub_0201B434
add r0, r6, #0x2e
mov r1, #1
bl sub_0201D634
b _020239A8
_0202399C:
bl sub_0201B8BC
cmp r0, #0
bne _02023D9C
_020239A8:
add r1, sp, #0
mov r0, #0
mov r2, #0x2c
bl sub_0302D7C0
add r3, r6, #0x46
sub r2, r4, #0xa
mov r1, #0x800
str r3, [sp]
strh r2, [sp, #8]
strh r1, [sp, #0xc]
add r0, sp, #0
bl sub_02023400
ldrh r1, [r6, #0x3c]
ldr r0, _02023DD0 ; =0x0000FFC2
tst r1, r0
bne _02023A1C
add r0, r5, #0x300
ldrh r2, [r0, #0x34]
cmp r2, #0
moveq r0, r1, lsl #0x1b
moveq r0, r0, lsr #0x1f
cmpeq r0, #1
beq _02023A1C
cmp r2, #0
beq _02023A24
ldrh r0, [r6, #0x3c]
mov r0, r0, lsl #0x1b
movs r0, r0, lsr #0x1f
bne _02023A24
_02023A1C:
mov r1, #0xa
b _02023A58
_02023A24:
mov r0, r7
bl sub_0201B5FC
ldrh r0, [sp, #0xa]
tst r0, #1
moveq r1, #1
beq _02023A58
tst r0, #4
moveq r1, #0x12
beq _02023A58
ldrh r1, [sp, #0x16]
mov r0, r7
bl sub_0201B61C
mov r1, #0
_02023A58:
ldr r2, [sp, #0x1c]
mov r0, r7
bl sub_020211E0
cmp r0, #0
beq _02023D9C
bl sub_0202086C
b _02023D9C
_02023A74:
add r0, r6, #0x10
bl sub_0202292C
b _02023D9C
_02023A80:
add r0, r6, #0x10
mov r1, #0
bl sub_020229E0
b _02023D9C
_02023A90:
add r0, r6, #0x10
bl sub_0202267C
b _02023D9C
_02023A9C:
add r0, r6, #0x10
bl sub_02022DB0
b _02023D9C
_02023AA8:
add r0, r6, #0x10
bl sub_02023350
b _02023D9C
_02023AB4:
cmp r8, #1
bne _02023D9C
cmp sb, #0xa
bne _02023D9C
ldr r0, _02023DCC ; =0x0380FFF4
ldrh r4, [r6, #0x12]
ldr r1, [r0]
mov r0, r4
add r5, r1, #0x17c
bl sub_0201B7D0
cmp r0, #0x40
bne _02023D9C
mov r0, r4
bl sub_0201B5D8
ldrh r0, [r5, #0x2c]
cmp r0, #0
beq _02023B00
mov r0, #1
bl sub_0201F6E4
_02023B00:
ldrh r0, [r5, #0x20]
cmp r0, #0
beq _02023D9C
mov r0, #0
bl sub_0201F6E4
b _02023D9C
_02023B18:
cmp r8, #0
bne _02023D9C
cmp sb, #0xc
addls pc, pc, sb, lsl #2
b _02023D9C
_02023B2C: ; jump table
b _02023D9C ; case 0
b _02023B6C ; case 1
b _02023D9C ; case 2
b _02023C68 ; case 3
b _02023D9C ; case 4
b _02023D6C ; case 5
b _02023D9C ; case 6
b _02023D9C ; case 7
b _02023B60 ; case 8
b _02023D9C ; case 9
b _02023D7C ; case 10
b _02023D88 ; case 11
b _02023D94 ; case 12
_02023B60:
add r0, r6, #0x10
bl sub_02022030
b _02023D9C
_02023B6C:
ldr r0, _02023DCC ; =0x0380FFF4
ldr r0, [r0]
add r5, r0, #0x344
ldrh r1, [r5, #0xc]
add r0, r0, #4
cmp r1, #2
add r4, r0, #0x400
cmpne r1, #3
bne _02023D9C
ldrh r0, [r4]
cmp r0, #0x51
bne _02023D9C
ldr r0, [r4, #0x18]
add r1, r6, #0x2e
add r0, r0, #0x10
bl sub_02019C64
cmp r0, #0
beq _02023D9C
bl sub_0201A3D0
ldrh r0, [r6, #0x3e]
cmp r0, #0
bne _02023C08
ldrh r1, [r6, #0x40]
ldr r0, _02023DD4 ; =0x00000FFF
and r0, r1, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_020197F0
ldrh r0, [r5, #0x6a]
bl sub_02021740
add r0, r5, #0x82
add r1, r6, #0x2e
bl sub_020198D0
add r0, r6, #0x2e
bl sub_0201B0F0
strh r0, [r5, #0x88]
ldrh r0, [r5, #0x88]
mov r1, #0x40
bl sub_0201B434
_02023C08:
ldrh r0, [r6, #0x3e]
cmp r0, #0
ldr r0, [r4, #0x1c]
movne r1, #0xc
strneh r1, [r0, #4]
ldrneh r1, [r6, #0x3e]
ldrne r0, [r4, #0x1c]
strneh r1, [r0, #6]
bne _02023C44
mov r2, #0
strh r2, [r0, #4]
ldr r1, [r4, #0x1c]
mov r0, #0x40
strh r2, [r1, #6]
bl sub_03028A28
_02023C44:
ldrh r1, [r5, #0x6a]
ldr r0, [r4, #0x1c]
mov r2, #0x53
strh r1, [r0, #8]
mov r0, #2
mov r1, #3
strh r2, [r4]
bl sub_03027D88
b _02023D9C
_02023C68:
ldr r0, _02023DCC ; =0x0380FFF4
ldr r0, [r0]
add r5, r0, #0x344
ldrh r1, [r5, #0xc]
add r0, r0, #4
cmp r1, #2
add r4, r0, #0x400
cmpne r1, #3
bne _02023D9C
ldrh r0, [r4]
cmp r0, #0x61
bne _02023D9C
ldr r0, [r4, #0x18]
add r1, r6, #0x2e
add r0, r0, #0x10
bl sub_02019C64
cmp r0, #0
beq _02023D9C
bl sub_0201A3D0
ldrh r0, [r6, #0x3e]
cmp r0, #0
bne _02023D0C
ldrh r1, [r6, #0x40]
ldr r0, _02023DD4 ; =0x00000FFF
and r0, r1, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_020197F0
ldrh r0, [r5, #0x6a]
bl sub_02021740
add r0, r5, #0x82
add r1, r6, #0x2e
bl sub_020198D0
add r0, r6, #0x2e
bl sub_0201B0F0
strh r0, [r5, #0x88]
ldrh r0, [r5, #0x88]
mov r1, #0x40
bl sub_0201B434
mov r0, #0x40
bl sub_03028A28
_02023D0C:
ldrh r0, [r6, #0x3e]
cmp r0, #0
ldr r0, [r4, #0x1c]
movne r1, #0xc
strneh r1, [r0, #4]
ldrneh r1, [r6, #0x3e]
ldrne r0, [r4, #0x1c]
strneh r1, [r0, #6]
bne _02023D48
mov r2, #0
strh r2, [r0, #4]
ldr r1, [r4, #0x1c]
mov r0, #0x40
strh r2, [r1, #6]
bl sub_03028A28
_02023D48:
ldrh r1, [r5, #0x6a]
ldr r0, [r4, #0x1c]
mov r2, #0x63
strh r1, [r0, #8]
mov r0, #2
mov r1, #4
strh r2, [r4]
bl sub_03027D88
b _02023D9C
_02023D6C:
add r0, r6, #0x10
mov r1, #0
bl sub_020229E0
b _02023D9C
_02023D7C:
add r0, r6, #0x10
bl sub_0202267C
b _02023D9C
_02023D88:
add r0, r6, #0x10
bl sub_02022DB0
b _02023D9C
_02023D94:
add r0, r6, #0x10
bl sub_02023350
_02023D9C:
mov r1, r6
add r0, sl, #0x60
bl sub_030280F8
ldrh r0, [sl, #0x68]
cmp r0, #0
beq _02023DC0
mov r0, #1
mov r1, #7
bl sub_03027D88
_02023DC0:
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_02023DCC: .word 0x0380FFF4
_02023DD0: .word 0x0000FFC2
_02023DD4: .word 0x00000FFF
arm_func_end sub_02023724
arm_func_start sub_02023DD8
sub_02023DD8: ; 0x02023DD8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x18
ldr r0, _020242F0 ; =0x0380FFF4
mvn r1, #0
ldr r2, [r0]
add r0, r2, #0x17c
ldr r5, [r0, #0x6c]
str r0, [sp, #4]
cmp r5, r1
beq _020242E4
add r0, r2, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0x40
bne _020242B8
ldrh r1, [r5, #0x20]
ldr r0, _020242F4 ; =0x000005FC
cmp r1, r0
bhi _020242B8
ldrh r4, [r5, #0x24]
add r0, sp, #8
tst r4, #0x100
beq _02023E50
add r1, r5, #0x34
bl sub_020198D0
tst r4, #0x200
bne _020242B8
add r0, sp, #0xe
add r1, r5, #0x2e
bl sub_020198D0
b _02023E78
_02023E50:
add r1, r5, #0x28
bl sub_020198D0
tst r4, #0x200
add r0, sp, #0xe
beq _02023E70
add r1, r5, #0x34
bl sub_020198D0
b _02023E78
_02023E70:
add r1, r5, #0x2e
bl sub_020198D0
_02023E78:
ldrh r0, [r5, #0x3a]
tst r4, #0x400
strh r0, [sp, #0x14]
beq _020240B0
ldrh r0, [r5, #0x3a]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1c
bne _020240B0
ldr r0, _020242F0 ; =0x0380FFF4
mvn r6, #0
ldr r0, [r0]
mov r7, #0
add r0, r0, #0xe4
add r8, r0, #0x400
add fp, sp, #8
mov r4, #0x18
b _02023FC0
_02023EBC:
mul sb, r7, r4
ldrh r0, [r8, sb]
add sl, r8, sb
cmp r0, #0
beq _02023FB8
mov r1, fp
add r0, sl, #4
bl sub_02019C64
cmp r0, #0
beq _02023FBC
add r1, sp, #0xe
add r0, sl, #0xa
bl sub_02019C64
cmp r0, #0
beq _02023FBC
ldrh r0, [sp, #0x14]
ldrh r1, [sl, #0x10]
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x14
mov r0, r1, lsl #0x10
cmp r2, r0, lsr #20
bne _02023FBC
ldrh r0, [r5, #0x18]
mov r1, r1, lsl #0x1c
and r2, r0, #0xf0
mov r0, r2, asr #3
add r0, r2, r0, lsr #28
mov r7, r0, asr #4
subs r0, r7, r1, lsr #28
beq _020242B8
tst r0, #0x80000000
bne _020242B8
mov r0, sl
ldr r4, [r0, #0x14]
ldrh r0, [r5, #0x20]
ldrh r3, [r4, #0x20]
sub r0, r0, r3
subs r6, r0, #0x18
beq _020242B8
tst r6, #0x80000000
bne _020242B8
add r0, r5, #0x3c
add r1, r4, #0x3c
mov r2, r6
add r0, r0, r3
add r1, r1, r3
bl sub_0302D78C
ldrh r1, [r4, #0x20]
mov r0, r7, lsl #0x10
add r1, r1, r6
strh r1, [r4, #0x20]
ldrh r1, [sl, #0x10]
mov r0, r0, lsr #0x10
bic r1, r1, #0xf
and r0, r0, #0xf
orr r1, r1, r0
ldr r0, _020242F0 ; =0x0380FFF4
strh r1, [sl, #0x10]
ldr r1, [r0]
ldr r0, [r1, #0x560]
add r0, r0, r7
str r0, [r1, #0x560]
b _020242B8
_02023FB8:
mov r6, r7
_02023FBC:
add r7, r7, #1
_02023FC0:
cmp r7, #3
blo _02023EBC
mvn r0, #0
cmp r6, r0
beq _020242B8
ldr r0, _020242F0 ; =0x0380FFF4
ldr r1, _020242F8 ; =0x00000622
ldr r0, [r0]
add r0, r0, #0x188
bl sub_0302805C
movs r4, r0
beq _020240A4
mov r0, #0x18
mul r7, r6, r0
add r6, r8, r7
add r0, sp, #8
add r1, r6, #4
mov r2, #0x10
bl sub_0302D78C
mov r0, #5
strh r0, [r8, r7]
mov r0, r6
str r4, [r0, #0x14]
ldrh r2, [r5, #0x20]
add r0, r5, #0x18
add r1, r4, #0x18
add r2, r2, #0xc
bl sub_0302D78C
ldr r0, _020242F0 ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x30c]
bl sub_0302D678
ldrh r1, [r4, #0x18]
ldrh r0, [r6, #0x10]
and r1, r1, #0xf0
bic r3, r0, #0xf
mov r0, r1, asr #3
add r0, r1, r0, lsr #28
mov r1, r0, asr #4
mov r2, r1, lsl #0x10
mov r2, r2, lsr #0x10
and r2, r2, #0xf
orr r2, r3, r2
strh r2, [r6, #0x10]
ldr r2, _020242F0 ; =0x0380FFF4
ldr r3, [r2]
ldr r2, [r3, #0x560]
add r0, r2, r0, asr #4
str r0, [r3, #0x560]
ldrh r0, [r5, #0x20]
sub r0, r0, #0x18
strh r0, [r4, #0x20]
ldrh r0, [r4, #0x20]
bl sub_030365C4
mov r1, r6
strh r0, [r1, #2]
b _020242B8
_020240A4:
mov r0, #4
bl sub_0201A85C
b _020242B8
_020240B0:
ldr r1, _020242F0 ; =0x0380FFF4
ldrh r0, [r5, #0x20]
ldr r4, [r1]
sub r1, r0, #0x18
add r0, r4, #0xe4
strh r1, [r5, #0x20]
add r8, r0, #0x400
mov r7, #0
b _0202416C
_020240D4:
mov r0, #0x18
mul sb, r7, r0
ldrh r0, [r8, sb]
add sl, r8, sb
cmp r0, #0
beq _02024168
add r1, sp, #8
add r0, sl, #4
bl sub_02019C64
cmp r0, #0
beq _02024168
add r1, sp, #0xe
add r0, sl, #0xa
bl sub_02019C64
cmp r0, #0
beq _02024168
ldrh r2, [sp, #0x14]
ldrh r0, [sl, #0x10]
mov r1, r2, lsl #0x10
mov r1, r1, lsr #0x14
mov r0, r0, lsl #0x10
cmp r1, r0, lsr #20
bne _02024168
mov r1, sl
ldrh r0, [r1, #0x10]
sub fp, r0, r2
tst fp, #0x80000000
bne _020242B8
ldrh r0, [r1, #2]
ldrh r1, [r5, #0x20]
mul r0, fp, r0
str r0, [sp]
subs r6, r1, r0
beq _020242B8
tst r6, #0x80000000
beq _02024174
b _020242B8
_02024168:
add r7, r7, #1
_0202416C:
cmp r7, #3
blo _020240D4
_02024174:
cmp r7, #3
beq _020242B8
mov r0, #0x18
mul sb, r7, r0
add r0, r8, sb
ldr r1, [r0, #0x14]
ldr r0, _020242FC ; =0x000005E4
add r7, r1, #0x10
ldrh r1, [r7, #0x10]
add sl, r1, r6
cmp sl, r0
bls _020241BC
add r0, r4, #0x188
sub r1, r7, #0x10
bl sub_030280F8
mov r0, #0
strh r0, [r8, sb]
b _020242B8
_020241BC:
ldr r0, [sp]
add r3, r5, #0x3c
add r2, r7, #0x2c
add r1, r2, r1
add r0, r3, r0
add r2, r6, #1
bl sub_0302D78C
strh sl, [r7, #0x10]
ldrh r1, [r5, #0x18]
add r0, r8, sb
ldrh r6, [r0, #0x10]
and r2, r1, #0xf0
mov r1, r2, asr #3
add r1, r2, r1, lsr #28
mov r3, r6, lsl #0x1c
rsb r2, fp, r1, asr #4
add r2, r2, r3, lsr #28
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
bic r3, r6, #0xf
and r2, r2, #0xf
orr r3, r3, r2
ldr r2, _020242F0 ; =0x0380FFF4
strh r3, [r0, #0x10]
ldr r3, [r2]
ldr r2, [r3, #0x560]
add r1, r2, r1, asr #4
str r1, [r3, #0x560]
ldrh r1, [r5, #0x18]
tst r1, #0x100
bne _020242B8
mov r1, #0
strh r1, [r0]
ldrh r0, [r7, #8]
bic r0, r0, #0xf0
add r0, r0, #0x10
strh r0, [r7, #8]
ldrh r0, [r7, #0x10]
add r0, r0, #0x18
strh r0, [r7, #0x10]
ldrh r0, [r7, #8]
ands r0, r0, #0xf
beq _02024290
cmp r0, #8
add r0, r4, #0x188
bne _020242B0
add r1, r4, #0x1c4
sub r2, r7, #0x10
bl sub_03028178
mov r0, #2
mov r1, #6
bl sub_03027D88
b _020242B8
_02024290:
add r0, r4, #0x188
add r1, r4, #0x1dc
sub r2, r7, #0x10
bl sub_03028178
mov r0, #1
mov r1, #7
bl sub_03027D88
b _020242B8
_020242B0:
sub r1, r7, #0x10
bl sub_030280F8
_020242B8:
ldr r0, [sp, #4]
mov r1, r5
add r0, r0, #0x6c
bl sub_030280F8
ldr r0, [sp, #4]
ldrh r0, [r0, #0x74]
cmp r0, #0
beq _020242E4
mov r0, #2
mov r1, #9
bl sub_03027D88
_020242E4:
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_020242F0: .word 0x0380FFF4
_020242F4: .word 0x000005FC
_020242F8: .word 0x00000622
_020242FC: .word 0x000005E4
arm_func_end sub_02023DD8
arm_func_start sub_02024300
sub_02024300: ; 0x02024300
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _02024368 ; =0x0380FFF4
mov r6, #0
ldr r0, [r4]
mov r7, #0x18
add r0, r0, #0xe4
add r5, r0, #0x400
_0202431C:
mul r1, r6, r7
ldrh r0, [r5, r1]
add r1, r5, r1
cmp r0, #0
beq _02024354
sub r0, r0, #1
strh r0, [r1]
ldrh r0, [r1]
cmp r0, #0
bne _02024354
ldr r0, [r4]
ldr r1, [r1, #0x14]
add r0, r0, #0x188
bl sub_030280F8
_02024354:
add r6, r6, #1
cmp r6, #3
blo _0202431C
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_02024368: .word 0x0380FFF4
arm_func_end sub_02024300
arm_func_start sub_0202436C
sub_0202436C: ; 0x0202436C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r3, _020244AC ; =0x0380FFF4
mov sb, r2
ldr r2, [r3]
mov fp, r0
add r0, sb, #1
mov sl, r1
add r4, r2, #0x23c
bl sub_0201A540
cmp r0, #0x20
bhi _020244A4
mov r6, #4
mov r7, r6
mov r8, #0x400
mov r5, #0
b _020243EC
_020243AC:
ldrh r0, [r4]
cmp r0, #0
beq _020243E0
add r0, r4, #6
add r1, sl, #0x24
bl sub_02019C64
cmp r0, #0
bne _0202440C
ldrh r0, [r4, #0x30]
cmp r0, r8
movlo r8, r0
movlo r7, r5
b _020243E4
_020243E0:
mov r6, r5
_020243E4:
add r5, r5, #1
add r4, r4, #0x32
_020243EC:
cmp r5, #4
blo _020243AC
cmp r6, #4
movne r5, r6
bne _0202440C
cmp r7, #4
movne r5, r7
beq _020244A4
_0202440C:
ldr r0, _020244AC ; =0x0380FFF4
mov r2, #0x32
mul r4, r5, r2
ldr r0, [r0]
add r5, r0, #0x23c
add r6, r5, r4
mov r1, r6
mov r0, #0
bl sub_0302D764
mov r0, #0x400
strh r0, [r6, #0x30]
ldrh r1, [sl, #0x12]
add r0, r6, #6
and r1, r1, #0xff
strh r1, [r5, r4]
strh fp, [r6, #2]
add r1, sl, #0x24
bl sub_020198D0
add r0, sb, #1
bl sub_0201A540
strh r0, [r6, #0xc]
mov r7, #0
add r5, sb, #2
add r4, r6, #0xe
b _02024488
_02024470:
add r0, r5, r7
bl sub_0201A540
mov r1, r0
add r0, r4, r7
bl sub_0201A514
add r7, r7, #1
_02024488:
ldrh r0, [r6, #0xc]
cmp r7, r0
blo _02024470
ldrh r0, [sl, #0x34]
strh r0, [r6, #0x2e]
ldrh r0, [sl, #0x36]
strh r0, [r6, #4]
_020244A4:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_020244AC: .word 0x0380FFF4
arm_func_end sub_0202436C
arm_func_start sub_020244B0
sub_020244B0: ; 0x020244B0
ldr r1, _020244CC ; =0x0380FFF4
ldr ip, _020244D0 ; =sub_037FDF74
ldr r1, [r1]
mov r0, #0
mov r2, #0xc8
add r1, r1, #0x23c
bx ip
.align 2, 0
_020244CC: .word 0x0380FFF4
_020244D0: .word sub_037FDF74
arm_func_end sub_020244B0
arm_func_start sub_020244D4
sub_020244D4: ; 0x020244D4
ldr r0, _02024518 ; =0x0380FFF4
mov r3, #0
ldr r0, [r0]
add r2, r0, #0x23c
mov r0, r3
_020244E8:
ldrh r1, [r2, #0x30]
cmp r1, #0
beq _02024508
sub r1, r1, #1
strh r1, [r2, #0x30]
ldrh r1, [r2, #0x30]
cmp r1, #0
streqh r0, [r2]
_02024508:
add r3, r3, #1
cmp r3, #4
blo _020244E8
bx lr
.align 2, 0
_02024518: .word 0x0380FFF4
arm_func_end sub_020244D4
arm_func_start sub_0202451C
sub_0202451C: ; 0x0202451C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _020245B8 ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
ldr r1, [r0, #0x318]
ldrh r6, [r1, #2]
cmp r6, #0xa4
blo _02024548
ldr r0, _020245BC ; =0x000001D6
cmp r6, r0
bls _02024550
_02024548:
mov r0, #2
b _020245B0
_02024550:
add r7, r1, #2
mov r5, #0
b _02024580
_0202455C:
mov r0, r7
bl sub_0201A540
mov r1, r5, lsl #0x10
and r0, r0, #0xff
mov r1, r1, lsr #0x10
add r7, r7, #1
bl sub_0201A5D8
mov r5, r0
sub r6, r6, #1
_02024580:
cmp r6, #0
bne _0202455C
ldr r0, _020245B8 ; =0x0380FFF4
cmp r4, #0
ldr r0, [r0]
ldr r0, [r0, #0x318]
ldrh r1, [r0]
orrne r0, r1, r5, lsl #16
strne r0, [r4]
cmp r5, r1
movne r0, #1
moveq r0, #0
_020245B0:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_020245B8: .word 0x0380FFF4
_020245BC: .word 0x000001D6
arm_func_end sub_0202451C
arm_func_start sub_020245C0
sub_020245C0: ; 0x020245C0
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
add r4, sp, #0
_020245CC:
mov r0, r4
bl sub_02024D38
ldr r0, [sp]
tst r0, #0x20
beq _020245E8
bl sub_02025474
b _020245CC
_020245E8:
ldr r0, [sp]
tst r0, #1
bne _020245CC
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_020245C0
arm_func_start sub_02024600
sub_02024600: ; 0x02024600
stmdb sp!, {r4, r5, r6, lr}
ldr r3, _0202465C ; =0x0380FFF4
mov r6, r1
ldr r1, [r3]
mov r5, r2
ldr r1, [r1, #0x318]
cmp r1, #0
beq _02024654
add r0, r1, r0
sub r4, r0, #0x2a
b _0202464C
_0202462C:
mov r0, r4
bl sub_0201A540
mov r1, r0
mov r0, r5
add r4, r4, #1
bl sub_0201A514
add r5, r5, #1
sub r6, r6, #1
_0202464C:
cmp r6, #0
bne _0202462C
_02024654:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_0202465C: .word 0x0380FFF4
arm_func_end sub_02024600
arm_func_start sub_02024660
sub_02024660: ; 0x02024660
stmdb sp!, {r4, r5, r6, lr}
ldr r3, _020246AC ; =0x0380FFF4
mov r6, r0
ldr r0, [r3]
mov r5, r1
ldr r0, [r0, #0x314]
mov r4, r2
bl sub_0303317C
bl sub_020245C0
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_02024DA8
ldr r0, _020246AC ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x314]
bl sub_030331D8
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_020246AC: .word 0x0380FFF4
arm_func_end sub_02024660
arm_func_start sub_020246B0
sub_020246B0: ; 0x020246B0
stmdb sp!, {r3, lr}
ldr r0, _02024794 ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x314]
bl sub_0303317C
bl sub_020245C0
mov r3, #0
add r2, sp, #0
mov r0, #0x2c
mov r1, #2
str r3, [sp]
bl sub_02024DA8
ldr r0, _02024794 ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x314]
bl sub_030331D8
ldr r1, [sp]
cmp r1, #0xa4
blo _02024708
ldr r0, _02024798 ; =0x000001D6
cmp r1, r0
bls _02024710
_02024708:
mov r0, #0
b _0202478C
_02024710:
ldr r0, _02024794 ; =0x0380FFF4
add r1, r1, #2
str r1, [sp]
ldr r0, [r0]
add r0, r0, #0x188
bl sub_0302805C
ldr r2, _02024794 ; =0x0380FFF4
ldr r1, [r2]
str r0, [r1, #0x318]
ldr r1, [r2]
ldr r0, [r1, #0x318]
cmp r0, #0
moveq r0, #0
beq _0202478C
add r0, r0, #0xc
str r0, [r1, #0x318]
ldr r0, [r2]
ldr r0, [r0, #0x314]
bl sub_0303317C
bl sub_020245C0
ldr r0, _02024794 ; =0x0380FFF4
ldr r1, [sp]
ldr r2, [r0]
mov r0, #0x2a
ldr r2, [r2, #0x318]
bl sub_02024DA8
ldr r0, _02024794 ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x314]
bl sub_030331D8
mov r0, #1
_0202478C:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_02024794: .word 0x0380FFF4
_02024798: .word 0x000001D6
arm_func_end sub_020246B0
arm_func_start sub_0202479C
sub_0202479C: ; 0x0202479C
ldr r0, _020247C0 ; =0x027F8E08
mov r3, #0
mov r2, r3
_020247A8:
mov r1, r3, lsl #1
add r3, r3, #1
strh r2, [r0, r1]
cmp r3, #0x10
blt _020247A8
bx lr
.align 2, 0
_020247C0: .word 0x027F8E08
arm_func_end sub_0202479C
arm_func_start sub_020247C4
sub_020247C4: ; 0x020247C4
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
tst r0, #0x2000000
beq _020247F4
ldr r2, _02024964 ; =0x027F8E08
mov r5, #0
mov lr, r5
_020247E0:
mov r4, r5, lsl #1
add r5, r5, #1
strh lr, [r2, r4]
cmp r5, #0x10
blt _020247E0
_020247F4:
ldr r2, _02024964 ; =0x027F8E08
and r4, r0, #0xf0000
mov r4, r4, lsr #0x10
mov r4, r4, lsl #1
strh r0, [r2, r4]
tst r0, #0x1000000
beq _02024958
ldr lr, _02024968 ; =0x027F8E08
ldrh r0, [lr]
and r2, r0, #0xff00
mov r2, r2, lsl #8
mov r4, r2, lsr #0x10
sub r2, r4, #0x22
cmp r2, #0xa
addls pc, pc, r2, lsl #2
b _0202492C
_02024834: ; jump table
b _02024860 ; case 0
b _02024898 ; case 1
b _02024898 ; case 2
b _020248E0 ; case 3
b _020248E0 ; case 4
b _02024920 ; case 5
b _02024920 ; case 6
b _0202492C ; case 7
b _0202492C ; case 8
b _0202492C ; case 9
b _02024860 ; case 10
_02024860:
ldrh ip, [lr, #4]
ldrh r2, [lr, #2]
mov r0, r0, lsl #0x18
and ip, ip, #0xff00
orr r0, r0, r2, lsl #8
orr ip, r0, ip, lsr #8
cmp ip, #0x2000000
blo _02024888
cmp ip, #0x2800000
blo _0202492C
_02024888:
mov r0, r4
mov r1, #2
bl sub_03033238
b _02024958
_02024898:
ldrh r2, [lr, #8]
ldrh r1, [lr, #0xa]
orr ip, r1, r2, lsl #16
cmp ip, #0x2000000
blo _020248B4
cmp ip, #0x2800000
blo _020248C4
_020248B4:
mov r0, r4
mov r1, #2
bl sub_03033238
b _02024958
_020248C4:
ldrh r2, [lr, #2]
mov r3, r0, lsl #0x18
ldrh r1, [lr, #4]
ldrh r0, [lr, #6]
orr r3, r2, r3, lsr #8
orr r1, r0, r1, lsl #16
b _0202492C
_020248E0:
ldrh r2, [lr, #6]
ldrh r1, [lr, #8]
orr ip, r1, r2, lsl #16
cmp ip, #0x2000000
blo _020248FC
cmp ip, #0x2800000
blo _0202490C
_020248FC:
mov r0, r4
mov r1, #2
bl sub_03033238
b _02024958
_0202490C:
ldrh r2, [lr, #2]
mov r0, r0, lsl #0x18
ldrh r1, [lr, #4]
orr r3, r2, r0, lsr #8
b _0202492C
_02024920:
ldrh r2, [lr, #2]
mov r0, r0, lsl #0x18
orr r3, r2, r0, lsr #8
_0202492C:
str r1, [sp]
mov r1, r4
mov r0, #1
mov r2, #3
str ip, [sp, #4]
bl sub_0303336C
cmp r0, #0
bne _02024958
mov r0, r4
mov r1, #4
bl sub_03033238
_02024958:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02024964: .word 0x027F8E08
_02024968: .word 0x027F8E08
arm_func_end sub_020247C4
arm_func_start sub_0202496C
sub_0202496C: ; 0x0202496C
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
bl sub_0302D4F0
mov r5, r0
mov r0, #1
bl sub_030332FC
cmp r0, #0
bne _020249AC
mov r0, r5
bl sub_0302D504
ldr r0, [r4, #4]
mov r1, #4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03033238
b _02024C38
_020249AC:
mov r0, #1
bl sub_03033318
mov r0, r5
bl sub_0302D504
ldr r0, [r4, #4]
sub r0, r0, #0x20
cmp r0, #0xd
addls pc, pc, r0, lsl #2
b _02024BFC
_020249D0: ; jump table
b _02024A08 ; case 0
b _02024A10 ; case 1
b _02024A18 ; case 2
b _02024A24 ; case 3
b _02024A64 ; case 4
b _02024AA4 ; case 5
b _02024AEC ; case 6
b _02024B34 ; case 7
b _02024B6C ; case 8
b _02024BA4 ; case 9
b _02024BAC ; case 10
b _02024BB4 ; case 11
b _02024BE8 ; case 12
b _02024BF4 ; case 13
_02024A08:
bl sub_02024C94
b _02024C1C
_02024A10:
bl sub_02024CF8
b _02024C1C
_02024A18:
ldr r0, [r4, #0x10]
bl sub_02024D38
b _02024C1C
_02024A24:
bl sub_02024C40
cmp r0, #0
bne _02024A50
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03033238
mov r0, #1
bl sub_03033330
b _02024C38
_02024A50:
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
bl sub_02024DA8
b _02024C1C
_02024A64:
bl sub_02024C40
cmp r0, #0
bne _02024A90
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03033238
mov r0, #1
bl sub_03033330
b _02024C38
_02024A90:
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
bl sub_02024ED0
b _02024C1C
_02024AA4:
bl sub_02024C64
cmp r0, #0
bne _02024AD0
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03033238
mov r0, #1
bl sub_03033330
b _02024C38
_02024AD0:
ldr r1, [r4, #0xc]
ldr r0, [r4, #8]
mov r1, r1, lsl #0x10
ldr r2, [r4, #0x10]
mov r1, r1, lsr #0x10
bl sub_02024FF0
b _02024C1C
_02024AEC:
bl sub_02024C64
cmp r0, #0
bne _02024B18
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03033238
mov r0, #1
bl sub_03033330
b _02024C38
_02024B18:
ldr r1, [r4, #0xc]
ldr r0, [r4, #8]
mov r1, r1, lsl #0x10
ldr r2, [r4, #0x10]
mov r1, r1, lsr #0x10
bl sub_020250FC
b _02024C1C
_02024B34:
bl sub_02024C64
cmp r0, #0
bne _02024B60
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03033238
mov r0, #1
bl sub_03033330
b _02024C38
_02024B60:
ldr r0, [r4, #8]
bl sub_02025208
b _02024C1C
_02024B6C:
bl sub_02024C64
cmp r0, #0
bne _02024B98
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03033238
mov r0, #1
bl sub_03033330
b _02024C38
_02024B98:
ldr r0, [r4, #8]
bl sub_02025290
b _02024C1C
_02024BA4:
bl sub_02025318
b _02024C1C
_02024BAC:
bl sub_02025358
b _02024C1C
_02024BB4:
bl sub_02024C64
cmp r0, #0
bne _02024BE0
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03033238
mov r0, #1
bl sub_03033330
b _02024C38
_02024BE0:
bl sub_02025398
b _02024C1C
_02024BE8:
ldr r0, [r4, #0x10]
bl sub_020253D8
b _02024C1C
_02024BF4:
bl sub_02025474
b _02024C1C
_02024BFC:
mov r0, #1
bl sub_03033330
ldr r0, [r4, #4]
mov r1, #1
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03033238
b _02024C38
_02024C1C:
ldr r0, [r4, #4]
mov r1, #0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03033238
mov r0, #1
bl sub_03033330
_02024C38:
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_0202496C
arm_func_start sub_02024C40
sub_02024C40: ; 0x02024C40
stmdb sp!, {r3, lr}
add r0, sp, #0
bl sub_02024D38
ldrh r0, [sp]
tst r0, #1
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_02024C40
arm_func_start sub_02024C64
sub_02024C64: ; 0x02024C64
stmdb sp!, {r3, lr}
add r0, sp, #0
bl sub_02024D38
ldrh r0, [sp]
tst r0, #1
movne r0, #0
bne _02024C8C
tst r0, #2
movne r0, #1
moveq r0, #0
_02024C8C:
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_02024C64
arm_func_start sub_02024C94
sub_02024C94: ; 0x02024C94
ldr r2, _02024CCC ; =0x040001C0
_02024C98:
ldrh r0, [r2]
tst r0, #0x80
bne _02024C98
ldr r0, _02024CD0 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #6
strh r1, [r0]
sub r1, r0, #2
_02024CBC:
ldrh r0, [r1]
tst r0, #0x80
bne _02024CBC
bx lr
.align 2, 0
_02024CCC: .word 0x040001C0
_02024CD0: .word 0x040001C2
arm_func_end sub_02024C94
arm_func_start sub_02024CD4
sub_02024CD4: ; 0x02024CD4
ldr r1, _02024CF4 ; =0x040001C2
and r0, r0, #0xff
strh r0, [r1]
sub r1, r1, #2
_02024CE4:
ldrh r0, [r1]
tst r0, #0x80
bne _02024CE4
bx lr
.align 2, 0
_02024CF4: .word 0x040001C2
arm_func_end sub_02024CD4
arm_func_start sub_02024CF8
sub_02024CF8: ; 0x02024CF8
ldr r2, _02024D30 ; =0x040001C0
_02024CFC:
ldrh r0, [r2]
tst r0, #0x80
bne _02024CFC
ldr r0, _02024D34 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #4
strh r1, [r0]
sub r1, r0, #2
_02024D20:
ldrh r0, [r1]
tst r0, #0x80
bne _02024D20
bx lr
.align 2, 0
_02024D30: .word 0x040001C0
_02024D34: .word 0x040001C2
arm_func_end sub_02024CF8
arm_func_start sub_02024D38
sub_02024D38: ; 0x02024D38
ldr r3, _02024DA0 ; =0x040001C0
_02024D3C:
ldrh r1, [r3]
tst r1, #0x80
bne _02024D3C
ldr r1, _02024DA4 ; =0x040001C2
mov r2, #0x8900
strh r2, [r3]
mov r2, #5
strh r2, [r1]
sub r3, r1, #2
_02024D60:
ldrh r1, [r3]
tst r1, #0x80
bne _02024D60
ldr r1, _02024DA4 ; =0x040001C2
mov r2, #0x8100
strh r2, [r3]
mov r2, #0
strh r2, [r1]
sub r2, r1, #2
_02024D84:
ldrh r1, [r2]
tst r1, #0x80
bne _02024D84
ldr r1, _02024DA4 ; =0x040001C2
ldrh r1, [r1]
strb r1, [r0]
bx lr
.align 2, 0
_02024DA0: .word 0x040001C0
_02024DA4: .word 0x040001C2
arm_func_end sub_02024D38
arm_func_start sub_02024DA8
sub_02024DA8: ; 0x02024DA8
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r2
cmp r1, #1
blo _02024E98
and r2, r0, #0xff00
mov r2, r2, lsr #8
and r3, r0, #0xff0000
strh r2, [sp, #2]
mov r3, r3, lsr #0x10
and r0, r0, #0xff
ldr r2, _02024EA4 ; =0x040001C0
strh r3, [sp]
strh r0, [sp, #4]
_02024DE0:
ldrh r0, [r2]
tst r0, #0x80
bne _02024DE0
ldr r4, _02024EA8 ; =0x040001C2
mov r0, #0x8900
strh r0, [r2]
mov r0, #3
strh r0, [r4]
mov ip, #0
add r2, sp, #0
sub r3, r4, #2
_02024E0C:
ldrh r0, [r3]
tst r0, #0x80
bne _02024E0C
mov r0, ip, lsl #1
ldrh r0, [r2, r0]
add ip, ip, #1
and r0, r0, #0xff
strh r0, [r4]
cmp ip, #3
blt _02024E0C
ldr r2, _02024EA4 ; =0x040001C0
_02024E38:
ldrh r0, [r2]
tst r0, #0x80
bne _02024E38
mov r4, #0
ldr r2, _02024EA4 ; =0x040001C0
sub r0, r1, #1
mov r3, r4
b _02024E74
_02024E58:
strh r3, [r2, #2]
_02024E5C:
ldrh r1, [r2]
tst r1, #0x80
bne _02024E5C
ldrh r1, [r2, #2]
strb r1, [r5, r4]
add r4, r4, #1
_02024E74:
cmp r4, r0
blo _02024E58
ldr r0, _02024EA4 ; =0x040001C0
mov r1, #0x8100
strh r1, [r0]
bl sub_02024EAC
ldr r0, _02024EA8 ; =0x040001C2
ldrh r0, [r0]
strb r0, [r5, r4]
_02024E98:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02024EA4: .word 0x040001C0
_02024EA8: .word 0x040001C2
arm_func_end sub_02024DA8
arm_func_start sub_02024EAC
sub_02024EAC: ; 0x02024EAC
ldr r0, _02024ECC ; =0x040001C2
mov r1, #0
strh r1, [r0]
sub r1, r0, #2
_02024EBC:
ldrh r0, [r1]
tst r0, #0x80
bne _02024EBC
bx lr
.align 2, 0
_02024ECC: .word 0x040001C2
arm_func_end sub_02024EAC
arm_func_start sub_02024ED0
sub_02024ED0: ; 0x02024ED0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r2
cmp r1, #1
blo _02024FDC
and r2, r0, #0xff00
mov r2, r2, lsr #8
and r3, r0, #0xff0000
strh r2, [sp, #2]
mov r3, r3, lsr #0x10
and r0, r0, #0xff
ldr r2, _02024FE8 ; =0x040001C0
strh r3, [sp]
strh r0, [sp, #4]
_02024F08:
ldrh r0, [r2]
tst r0, #0x80
bne _02024F08
ldr r4, _02024FEC ; =0x040001C2
mov r0, #0x8900
strh r0, [r2]
mov r0, #0xb
strh r0, [r4]
mov ip, #0
add r2, sp, #0
sub r3, r4, #2
_02024F34:
ldrh r0, [r3]
tst r0, #0x80
bne _02024F34
mov r0, ip, lsl #1
ldrh r0, [r2, r0]
add ip, ip, #1
and r0, r0, #0xff
strh r0, [r4]
cmp ip, #3
blt _02024F34
ldr r2, _02024FE8 ; =0x040001C0
_02024F60:
ldrh r0, [r2]
tst r0, #0x80
bne _02024F60
ldr r0, _02024FEC ; =0x040001C2
mov r2, #0
strh r2, [r0]
sub r2, r0, #2
_02024F7C:
ldrh r0, [r2]
tst r0, #0x80
bne _02024F7C
mov r4, #0
ldr r2, _02024FE8 ; =0x040001C0
sub r0, r1, #1
mov r3, r4
b _02024FB8
_02024F9C:
strh r3, [r2, #2]
_02024FA0:
ldrh r1, [r2]
tst r1, #0x80
bne _02024FA0
ldrh r1, [r2, #2]
strb r1, [r5, r4]
add r4, r4, #1
_02024FB8:
cmp r4, r0
blo _02024F9C
ldr r0, _02024FE8 ; =0x040001C0
mov r1, #0x8100
strh r1, [r0]
bl sub_02024EAC
ldr r0, _02024FEC ; =0x040001C2
ldrh r0, [r0]
strb r0, [r5, r4]
_02024FDC:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02024FE8: .word 0x040001C0
_02024FEC: .word 0x040001C2
arm_func_end sub_02024ED0
arm_func_start sub_02024FF0
sub_02024FF0: ; 0x02024FF0
stmdb sp!, {r4, lr}
sub sp, sp, #8
cmp r1, #1
blo _020250E8
add r3, r0, r1
sub r3, r3, #1
mov r3, r3, lsr #8
cmp r3, r0, lsr #8
and r3, r0, #0xff00
mov r3, r3, lsr #8
andhi r1, r0, #0xff
and ip, r0, #0xff0000
strh r3, [sp, #2]
rsbhi r1, r1, #0x100
mov ip, ip, lsr #0x10
and r0, r0, #0xff
movhi r1, r1, lsl #0x10
ldr r3, _020250F4 ; =0x040001C0
strh ip, [sp]
strh r0, [sp, #4]
movhi r1, r1, lsr #0x10
_02025044:
ldrh r0, [r3]
tst r0, #0x80
bne _02025044
ldr lr, _020250F8 ; =0x040001C2
mov r0, #0x8900
strh r0, [r3]
mov r0, #0xa
strh r0, [lr]
mov r4, #0
add r3, sp, #0
sub ip, lr, #2
_02025070:
ldrh r0, [ip]
tst r0, #0x80
bne _02025070
mov r0, r4, lsl #1
ldrh r0, [r3, r0]
add r4, r4, #1
and r0, r0, #0xff
strh r0, [lr]
cmp r4, #3
blt _02025070
sub r3, r1, #1
ldr r1, _020250F4 ; =0x040001C0
mov r4, #0
b _020250C0
_020250A8:
ldrh r0, [r1]
tst r0, #0x80
bne _020250A8
ldrb r0, [r2, r4]
add r4, r4, #1
strh r0, [r1, #2]
_020250C0:
cmp r4, r3
blt _020250A8
ldr r1, _020250F4 ; =0x040001C0
_020250CC:
ldrh r0, [r1]
tst r0, #0x80
bne _020250CC
mov r0, #0x8100
strh r0, [r1]
ldrb r0, [r2, r4]
bl sub_02024CD4
_020250E8:
add sp, sp, #8
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_020250F4: .word 0x040001C0
_020250F8: .word 0x040001C2
arm_func_end sub_02024FF0
arm_func_start sub_020250FC
sub_020250FC: ; 0x020250FC
stmdb sp!, {r4, lr}
sub sp, sp, #8
cmp r1, #1
blo _020251F4
add r3, r0, r1
sub r3, r3, #1
mov r3, r3, lsr #8
cmp r3, r0, lsr #8
and r3, r0, #0xff00
mov r3, r3, lsr #8
andhi r1, r0, #0xff
and ip, r0, #0xff0000
strh r3, [sp, #2]
rsbhi r1, r1, #0x100
mov ip, ip, lsr #0x10
and r0, r0, #0xff
movhi r1, r1, lsl #0x10
ldr r3, _02025200 ; =0x040001C0
strh ip, [sp]
strh r0, [sp, #4]
movhi r1, r1, lsr #0x10
_02025150:
ldrh r0, [r3]
tst r0, #0x80
bne _02025150
ldr lr, _02025204 ; =0x040001C2
mov r0, #0x8900
strh r0, [r3]
mov r0, #2
strh r0, [lr]
mov r4, #0
add r3, sp, #0
sub ip, lr, #2
_0202517C:
ldrh r0, [ip]
tst r0, #0x80
bne _0202517C
mov r0, r4, lsl #1
ldrh r0, [r3, r0]
add r4, r4, #1
and r0, r0, #0xff
strh r0, [lr]
cmp r4, #3
blt _0202517C
sub r3, r1, #1
ldr r1, _02025200 ; =0x040001C0
mov r4, #0
b _020251CC
_020251B4:
ldrh r0, [r1]
tst r0, #0x80
bne _020251B4
ldrb r0, [r2, r4]
add r4, r4, #1
strh r0, [r1, #2]
_020251CC:
cmp r4, r3
blt _020251B4
ldr r1, _02025200 ; =0x040001C0
_020251D8:
ldrh r0, [r1]
tst r0, #0x80
bne _020251D8
mov r0, #0x8100
strh r0, [r1]
ldrb r0, [r2, r4]
bl sub_02024CD4
_020251F4:
add sp, sp, #8
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_02025200: .word 0x040001C0
_02025204: .word 0x040001C2
arm_func_end sub_020250FC
arm_func_start sub_02025208
sub_02025208: ; 0x02025208
stmdb sp!, {r3, r4, r5, lr}
and r1, r0, #0xff0000
mov r1, r1, lsr #0x10
and r2, r0, #0xff00
mov r2, r2, lsl #8
ldr r3, _02025288 ; =0x040001C0
mov r1, r1, lsl #0x10
and r5, r0, #0xff
mov r0, r1, lsr #0x10
mov r4, r2, lsr #0x10
_02025230:
ldrh r1, [r3]
tst r1, #0x80
bne _02025230
ldr r1, _0202528C ; =0x040001C2
mov r2, #0x8900
strh r2, [r3]
mov r2, #0xdb
strh r2, [r1]
sub r2, r1, #2
_02025254:
ldrh r1, [r2]
tst r1, #0x80
bne _02025254
bl sub_02024CD4
mov r0, r4
bl sub_02024CD4
ldr r1, _02025288 ; =0x040001C0
mov r2, #0x8100
mov r0, r5
strh r2, [r1]
bl sub_02024CD4
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02025288: .word 0x040001C0
_0202528C: .word 0x040001C2
arm_func_end sub_02025208
arm_func_start sub_02025290
sub_02025290: ; 0x02025290
stmdb sp!, {r3, r4, r5, lr}
and r1, r0, #0xff0000
mov r1, r1, lsr #0x10
and r2, r0, #0xff00
mov r2, r2, lsl #8
ldr r3, _02025310 ; =0x040001C0
mov r1, r1, lsl #0x10
and r5, r0, #0xff
mov r0, r1, lsr #0x10
mov r4, r2, lsr #0x10
_020252B8:
ldrh r1, [r3]
tst r1, #0x80
bne _020252B8
ldr r1, _02025314 ; =0x040001C2
mov r2, #0x8900
strh r2, [r3]
mov r2, #0xd8
strh r2, [r1]
sub r2, r1, #2
_020252DC:
ldrh r1, [r2]
tst r1, #0x80
bne _020252DC
bl sub_02024CD4
mov r0, r4
bl sub_02024CD4
ldr r1, _02025310 ; =0x040001C0
mov r2, #0x8100
mov r0, r5
strh r2, [r1]
bl sub_02024CD4
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_02025310: .word 0x040001C0
_02025314: .word 0x040001C2
arm_func_end sub_02025290
arm_func_start sub_02025318
sub_02025318: ; 0x02025318
ldr r2, _02025350 ; =0x040001C0
_0202531C:
ldrh r0, [r2]
tst r0, #0x80
bne _0202531C
ldr r0, _02025354 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #0xb9
strh r1, [r0]
sub r1, r0, #2
_02025340:
ldrh r0, [r1]
tst r0, #0x80
bne _02025340
bx lr
.align 2, 0
_02025350: .word 0x040001C0
_02025354: .word 0x040001C2
arm_func_end sub_02025318
arm_func_start sub_02025358
sub_02025358: ; 0x02025358
ldr r2, _02025390 ; =0x040001C0
_0202535C:
ldrh r0, [r2]
tst r0, #0x80
bne _0202535C
ldr r0, _02025394 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #0xab
strh r1, [r0]
sub r1, r0, #2
_02025380:
ldrh r0, [r1]
tst r0, #0x80
bne _02025380
bx lr
.align 2, 0
_02025390: .word 0x040001C0
_02025394: .word 0x040001C2
arm_func_end sub_02025358
arm_func_start sub_02025398
sub_02025398: ; 0x02025398
ldr r2, _020253D0 ; =0x040001C0
_0202539C:
ldrh r0, [r2]
tst r0, #0x80
bne _0202539C
ldr r0, _020253D4 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #0xc7
strh r1, [r0]
sub r1, r0, #2
_020253C0:
ldrh r0, [r1]
tst r0, #0x80
bne _020253C0
bx lr
.align 2, 0
_020253D0: .word 0x040001C0
_020253D4: .word 0x040001C2
arm_func_end sub_02025398
arm_func_start sub_020253D8
sub_020253D8: ; 0x020253D8
stmdb sp!, {r3, lr}
ldr r3, _0202546C ; =0x040001C0
_020253E0:
ldrh r1, [r3]
tst r1, #0x80
bne _020253E0
ldr r1, _02025470 ; =0x040001C2
mov r2, #0x8900
strh r2, [r3]
mov r2, #0x9f
strh r2, [r1]
sub r2, r1, #2
_02025404:
ldrh r1, [r2]
tst r1, #0x80
bne _02025404
ldr r1, _02025470 ; =0x040001C2
mov r2, #0
strh r2, [r1]
sub lr, r1, #2
_02025420:
ldrh r1, [lr]
tst r1, #0x80
bne _02025420
ldr ip, _02025470 ; =0x040001C2
mov r2, #0x8100
ldrh r3, [ip]
mov r1, #0
strb r3, [r0]
strh r2, [lr]
strh r1, [ip]
sub r2, ip, #2
_0202544C:
ldrh r1, [r2]
tst r1, #0x80
bne _0202544C
ldr r1, _02025470 ; =0x040001C2
ldrh r1, [r1]
strb r1, [r0, #1]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_0202546C: .word 0x040001C0
_02025470: .word 0x040001C2
arm_func_end sub_020253D8
arm_func_start sub_02025474
sub_02025474: ; 0x02025474
ldr r2, _020254AC ; =0x040001C0
_02025478:
ldrh r0, [r2]
tst r0, #0x80
bne _02025478
ldr r0, _020254B0 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #0xff
strh r1, [r0]
sub r1, r0, #2
_0202549C:
ldrh r0, [r1]
tst r0, #0x80
bne _0202549C
bx lr
.align 2, 0
_020254AC: .word 0x040001C0
_020254B0: .word 0x040001C2
arm_func_end sub_02025474
arm_func_start sub_020254B4
sub_020254B4: ; 0x020254B4
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0xc
ldr r1, _020256F0 ; =0x027F8E28
mov r8, r0
ldrh r0, [r1]
cmp r0, #0
bne _020256E4
mov r2, #1
strh r2, [r1]
add r0, sp, #8
str r2, [r1, #0x1d8]
bl sub_020262F4
add r0, sp, #0xa
bl sub_02026358
ldrh r0, [sp, #8]
mov r1, r0, lsl #0x18
movs r1, r1, lsr #0x1f
bne _02025518
mov r0, r0, lsl #0x19
movs r0, r0, lsr #0x1f
bne _02025518
ldrh r0, [sp, #0xa]
mov r0, r0, lsl #0x18
movs r0, r0, lsr #0x1f
beq _02025530
_02025518:
ldrh r1, [sp, #8]
add r0, sp, #8
bic r1, r1, #1
orr r1, r1, #1
strh r1, [sp, #8]
bl sub_02026320
_02025530:
ldrh r0, [sp, #8]
mov r1, r0, lsl #0x1b
movs r1, r1, lsr #0x1f
bne _0202554C
mov r0, r0, lsl #0x1a
movs r0, r0, lsr #0x1f
beq _0202556C
_0202554C:
ldrh r1, [sp, #0xa]
add r0, sp, #0xa
bic r1, r1, #0xf
strh r1, [sp, #0xa]
ldrh r1, [sp, #0xa]
bic r1, r1, #0x40
strh r1, [sp, #0xa]
bl sub_02026384
_0202556C:
ldr r0, _020256F4 ; =0x027FFDE8
bl sub_02025F84
ldr r0, _020256F4 ; =0x027FFDE8
ldr r0, [r0]
mov r0, r0, lsl #0xa
mov r0, r0, lsr #0x1a
bl sub_02025DAC
ldr r1, _020256F4 ; =0x027FFDE8
mov r5, r0
ldr r0, [r1]
mov r0, r0, lsl #0x13
mov r0, r0, lsr #0x1b
bl sub_02025DAC
ldr r1, _020256F4 ; =0x027FFDE8
mov r6, r0
ldr r0, [r1]
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x18
bl sub_02025DAC
sub r1, r6, #1
cmp r1, #1
add r7, r0, #0x7d0
subls r7, r7, #1
mov r0, r7
mov r1, #0x190
addls r6, r6, #0xc
bl sub_030365C4
mov r4, r0
mov r0, r7
mov r1, #0x64
bl sub_030365C4
mov r1, #0xd
mul r1, r6, r1
mov r6, r0
add r0, r1, #8
mov r1, #5
bl sub_030365C4
add r1, r7, r7, lsr #2
sub r1, r1, r6
add r1, r4, r1
add r0, r1, r0
add r0, r5, r0
mov r1, #7
bl sub_030365C4
ldr r0, _020256F4 ; =0x027FFDE8
ldr r2, [r0]
mov r3, r2, lsl #5
mov r3, r3, lsr #0x1d
cmp r3, r1
beq _02025648
bic r2, r2, #0x7000000
mov r1, r1, lsl #0x1d
orr r1, r2, r1, lsr #5
str r1, [r0]
bl sub_02025FB0
_02025648:
mov r0, #1
bl sub_02025E60
ldr r0, _020256F0 ; =0x027F8E28
mov r1, #0
str r1, [r0, #0x1d8]
bl sub_0302DAA4
ldr r1, _020256F8 ; =0x027F5F24
mov r0, #5
bl sub_0302DB8C
ldr r0, _020256FC ; =0x027F8E2C
ldr r1, _02025700 ; =0x027F8E4C
mov r2, #4
bl sub_0302BE9C
mov r0, #0x100
stmia sp, {r0, r8}
ldr r0, _02025704 ; =0x027F8E5C
ldr r1, _02025708 ; =0x027F60A8
ldr r3, _0202570C ; =0x027F9000
mov r2, #0
bl sub_0302B844
ldr r0, _02025704 ; =0x027F8E5C
bl sub_0302BB5C
mov r0, #0x8000
bl sub_0302DD98
mov r0, #0x40
mov r1, #0
bl sub_0302DD78
mov r0, #0x100
mov r1, r0
bl sub_0302DD78
bl sub_0302D4F0
mov r4, r0
ldr r1, _02025710 ; =0x027F652C
mov r0, #0x80
bl sub_0302AFAC
mov r0, #0x80
bl sub_0302B0E0
mov r0, r4
bl sub_0302D504
_020256E4:
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_020256F0: .word 0x027F8E28
_020256F4: .word 0x027FFDE8
_020256F8: .word 0x027F5F24
_020256FC: .word 0x027F8E2C
_02025700: .word 0x027F8E4C
_02025704: .word 0x027F8E5C
_02025708: .word 0x027F60A8
_0202570C: .word 0x027F9000
_02025710: .word 0x027F652C
arm_func_end sub_020254B4
arm_func_start sub_02025714
sub_02025714: ; 0x02025714
stmdb sp!, {r4, lr}
cmp r2, #0
bne _02025844
and r0, r1, #0x7f00
mov r0, r0, lsl #8
mov r4, r0, lsr #0x10
cmp r4, #0x29
addls pc, pc, r4, lsl #2
b _02025838
_02025738: ; jump table
b _020257E0 ; case 0
b _020257E0 ; case 1
b _02025838 ; case 2
b _02025838 ; case 3
b _02025838 ; case 4
b _02025838 ; case 5
b _02025838 ; case 6
b _02025838 ; case 7
b _02025838 ; case 8
b _02025838 ; case 9
b _02025838 ; case 10
b _02025838 ; case 11
b _02025838 ; case 12
b _02025838 ; case 13
b _02025838 ; case 14
b _02025838 ; case 15
b _020257E0 ; case 16
b _020257E0 ; case 17
b _020257E0 ; case 18
b _020257E0 ; case 19
b _020257E0 ; case 20
b _020257E0 ; case 21
b _020257E0 ; case 22
b _020257E0 ; case 23
b _020257E0 ; case 24
b _020257E0 ; case 25
b _02025838 ; case 26
b _02025838 ; case 27
b _02025838 ; case 28
b _02025838 ; case 29
b _02025838 ; case 30
b _02025838 ; case 31
b _02025838 ; case 32
b _02025838 ; case 33
b _02025838 ; case 34
b _020257E0 ; case 35
b _020257E0 ; case 36
b _020257E0 ; case 37
b _020257E0 ; case 38
b _020257E0 ; case 39
b _020257E0 ; case 40
b _020257E0 ; case 41
_020257E0:
ldr r0, _0202584C ; =0x027F8E28
ldr r1, [r0, #0x1d8]
cmp r1, #0
beq _02025800
mov r0, r4
mov r1, #3
bl sub_02025858
b _02025844
_02025800:
ldr r3, _02025850 ; =0x027F8F28
mov r1, #1
str r1, [r0, #0x1d8]
mov r1, #0
ldr r0, _02025854 ; =0x027F8E2C
mov r2, r1
strh r4, [r3, #0xdc]
bl sub_0302BEC4
cmp r0, #0
bne _02025844
mov r0, r4
mov r1, #4
bl sub_02025858
b _02025844
_02025838:
mov r0, r4
mov r1, #1
bl sub_02025858
_02025844:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_0202584C: .word 0x027F8E28
_02025850: .word 0x027F8F28
_02025854: .word 0x027F8E2C
arm_func_end sub_02025714
arm_func_start sub_02025858
sub_02025858: ; 0x02025858
stmdb sp!, {r4, r5, r6, lr}
mov r0, r0, lsl #8
and r0, r0, #0x7f00
orr r2, r0, #0x8000
and r0, r1, #0xff
orr r6, r2, r0
mov r5, #5
mov r4, #0
_02025878:
mov r0, r5
mov r1, r6
mov r2, r4
bl sub_0302DC00
cmp r0, #0
blt _02025878
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_02025858
arm_func_start sub_02025898
sub_02025898: ; 0x02025898
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr sb, _02025D0C ; =0x027FFDE8
mov r8, #0
ldr r4, _02025D10 ; =0x027F8E28
mov r7, r8
mov r6, r8
mov r5, r8
mov sl, r8
mov fp, r8
_020258BC:
ldr r0, _02025D14 ; =0x027F8E2C
add r1, sp, #0
mov r2, #1
bl sub_0302BF50
ldr r0, _02025D18 ; =0x027F8F28
ldrh r0, [r0, #0xdc]
cmp r0, #0x29
addls pc, pc, r0, lsl #2
b _02025CF8
_020258E0: ; jump table
b _02025988 ; case 0
b _020259A0 ; case 1
b _02025CF8 ; case 2
b _02025CF8 ; case 3
b _02025CF8 ; case 4
b _02025CF8 ; case 5
b _02025CF8 ; case 6
b _02025CF8 ; case 7
b _02025CF8 ; case 8
b _02025CF8 ; case 9
b _02025CF8 ; case 10
b _02025CF8 ; case 11
b _02025CF8 ; case 12
b _02025CF8 ; case 13
b _02025CF8 ; case 14
b _02025CF8 ; case 15
b _020259C8 ; case 16
b _020259E8 ; case 17
b _02025A08 ; case 18
b _02025A28 ; case 19
b _02025A64 ; case 20
b _02025AA0 ; case 21
b _02025ADC ; case 22
b _02025AFC ; case 23
b _02025B1C ; case 24
b _02025B3C ; case 25
b _02025CF8 ; case 26
b _02025CF8 ; case 27
b _02025CF8 ; case 28
b _02025CF8 ; case 29
b _02025CF8 ; case 30
b _02025CF8 ; case 31
b _02025B5C ; case 32
b _02025B7C ; case 33
b _02025BA4 ; case 34
b _02025BC4 ; case 35
b _02025C00 ; case 36
b _02025C3C ; case 37
b _02025C78 ; case 38
b _02025C98 ; case 39
b _02025CB8 ; case 40
b _02025CD8 ; case 41
_02025988:
bl sub_02025E1C
mov r0, #0
mov r1, r0
str r0, [r4, #0x1d8]
bl sub_02025858
b _020258BC
_020259A0:
ldrh r0, [sb]
mov r0, r0, lsl #0x1e
mov r0, r0, lsr #0x1f
bl sub_02025E60
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #1
mov r1, #0
bl sub_02025858
b _020258BC
_020259C8:
mov r0, sb
bl sub_02025F84
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x10
mov r1, #0
bl sub_02025858
b _020258BC
_020259E8:
mov r0, sb
bl sub_02025FE8
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x11
mov r1, #0
bl sub_02025858
b _020258BC
_02025A08:
add r0, sb, #4
bl sub_02026014
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x12
mov r1, #0
bl sub_02025858
b _020258BC
_02025A28:
add r0, sb, #4
bl sub_02026078
cmp r0, #0
bne _02025A4C
mov r0, #0x13
mov r1, #2
str r8, [r4, #0x1d8]
bl sub_02025858
b _020258BC
_02025A4C:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x13
mov r1, #0
bl sub_02025858
b _020258BC
_02025A64:
add r0, sb, #4
bl sub_02026154
cmp r0, #0
bne _02025A88
mov r0, #0x14
mov r1, #2
str r7, [r4, #0x1d8]
bl sub_02025858
b _020258BC
_02025A88:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x14
mov r1, #0
bl sub_02025858
b _020258BC
_02025AA0:
add r0, sb, #4
bl sub_02026228
cmp r0, #0
bne _02025AC4
mov r0, #0x15
mov r1, #2
str r6, [r4, #0x1d8]
bl sub_02025858
b _020258BC
_02025AC4:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x15
mov r1, #0
bl sub_02025858
b _020258BC
_02025ADC:
mov r0, sb
bl sub_020262F4
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x16
mov r1, #0
bl sub_02025858
b _020258BC
_02025AFC:
add r0, sb, #2
bl sub_02026358
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x17
mov r1, #0
bl sub_02025858
b _020258BC
_02025B1C:
add r0, sb, #4
bl sub_020263BC
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x18
mov r1, #0
bl sub_02025858
b _020258BC
_02025B3C:
add r0, sb, #4
bl sub_02026420
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x19
mov r1, #0
bl sub_02025858
b _020258BC
_02025B5C:
mov r0, sb
bl sub_02025FB0
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x20
mov r1, #0
bl sub_02025858
b _020258BC
_02025B7C:
add r0, sb, #4
bl sub_02026014
mov r0, sb
bl sub_02025FB0
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x21
mov r1, #0
bl sub_02025858
b _020258BC
_02025BA4:
add r0, sb, #4
bl sub_02026040
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x22
mov r1, #0
bl sub_02025858
b _020258BC
_02025BC4:
add r0, sb, #4
bl sub_020260E0
cmp r0, #0
bne _02025BE8
mov r0, #0x23
mov r1, #2
str r5, [r4, #0x1d8]
bl sub_02025858
b _020258BC
_02025BE8:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x23
mov r1, #0
bl sub_02025858
b _020258BC
_02025C00:
add r0, sb, #4
bl sub_020261B8
cmp r0, #0
bne _02025C24
mov r0, #0x24
mov r1, #2
str sl, [r4, #0x1d8]
bl sub_02025858
b _020258BC
_02025C24:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x24
mov r1, #0
bl sub_02025858
b _020258BC
_02025C3C:
add r0, sb, #4
bl sub_02026288
cmp r0, #0
bne _02025C60
mov r0, #0x25
mov r1, #2
str fp, [r4, #0x1d8]
bl sub_02025858
b _020258BC
_02025C60:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x25
mov r1, #0
bl sub_02025858
b _020258BC
_02025C78:
mov r0, sb
bl sub_02026320
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x26
mov r1, #0
bl sub_02025858
b _020258BC
_02025C98:
add r0, sb, #2
bl sub_02026384
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x27
mov r1, #0
bl sub_02025858
b _020258BC
_02025CB8:
add r0, sb, #4
bl sub_020263E8
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x28
mov r1, #0
bl sub_02025858
b _020258BC
_02025CD8:
add r0, sb, #4
bl sub_0202644C
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x29
mov r1, #0
bl sub_02025858
b _020258BC
_02025CF8:
mov r1, #0
str r1, [r4, #0x1d8]
mov r1, #1
bl sub_02025858
b _020258BC
.align 2, 0
_02025D0C: .word 0x027FFDE8
_02025D10: .word 0x027F8E28
_02025D14: .word 0x027F8E2C
_02025D18: .word 0x027F8F28
arm_func_end sub_02025898
arm_func_start sub_02025D1C
sub_02025D1C: ; 0x02025D1C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
add r0, sp, #2
bl sub_020262F4
ldrh r0, [sp, #2]
mov r1, r0, lsl #0x1b
movs r1, r1, lsr #0x1f
bne _02025D48
mov r0, r0, lsl #0x1a
movs r0, r0, lsr #0x1f
beq _02025DA0
_02025D48:
add r0, sp, #0
bl sub_02026358
ldrh r0, [sp, #2]
mov r4, #0
mov r0, r0, lsl #0x1b
movs r0, r0, lsr #0x1f
ldrneh r0, [sp]
orrne r4, r4, #1
bicne r0, r0, #0xf
strneh r0, [sp]
ldrh r0, [sp, #2]
mov r0, r0, lsl #0x1a
movs r0, r0, lsr #0x1f
ldrneh r0, [sp]
orrne r4, r4, #2
bicne r0, r0, #0x40
strneh r0, [sp]
add r0, sp, #0
bl sub_02026384
mov r1, r4
mov r0, #0x30
bl sub_02025858
_02025DA0:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_02025D1C
arm_func_start sub_02025DAC
sub_02025DAC: ; 0x02025DAC
stmdb sp!, {r4, lr}
mov ip, #0
mov r2, ip
b _02025DD8
_02025DBC:
mov r1, r2, lsl #2
mov r1, r0, lsr r1
and r1, r1, #0xf
cmp r1, #0xa
movhs r0, #0
bhs _02025E14
add r2, r2, #1
_02025DD8:
cmp r2, #8
blt _02025DBC
mov r4, #0
mov lr, #1
mov r2, #0xa
_02025DEC:
mov r1, r4, lsl #2
mov r1, r0, lsr r1
and r3, r1, #0xf
mul r1, lr, r2
mla ip, lr, r3, ip
add r4, r4, #1
mov lr, r1
cmp r4, #8
blt _02025DEC
mov r0, ip
_02025E14:
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02025DAC
arm_func_start sub_02025E1C
sub_02025E1C: ; 0x02025E1C
stmdb sp!, {r3, lr}
mov r0, #0x8000
bl sub_0302DD98
ldrh r0, [sp]
bic r0, r0, #1
orr r0, r0, #1
strh r0, [sp]
bl sub_02026700
mov r0, #6
mov r1, #0
bl sub_02026774
add r0, sp, #0
mov r1, #1
bl sub_020267F4
bl sub_02026740
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_02025E1C
arm_func_start sub_02025E60
sub_02025E60: ; 0x02025E60
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
and r4, r4, #1
cmp r4, #1
bne _02025F78
mov r0, #0x8000
bl sub_0302DD98
add r2, sp, #0
mov r0, #0x86
mov r1, #0
mov r3, #1
bl sub_020266A4
ldrh r0, [sp]
mov r1, r0, lsl #0x1e
mov r1, r1, lsr #0x1f
cmp r1, r4
beq _02025F78
bic r1, r0, #2
mov r0, r4, lsl #0x1f
orr r1, r1, r0, lsr #30
mov r0, #0x8000
strh r1, [sp]
bl sub_0302DD98
bl sub_02026700
mov r0, #6
mov r1, #0
bl sub_02026774
add r0, sp, #0
mov r1, #1
bl sub_020267F4
bl sub_02026740
mov r0, #0x86
mov r1, #0x10
add r2, sp, #4
mov r3, #3
bl sub_020266A4
cmp r4, #0
add r0, sp, #4
bne _02025F08
bl sub_02026484
b _02025F0C
_02025F08:
bl sub_02026594
_02025F0C:
bl sub_02026700
mov r0, #6
mov r1, #0x10
bl sub_02026774
add r0, sp, #4
mov r1, #3
bl sub_020267F4
bl sub_02026740
mov r0, #0x86
mov r1, #0x50
add r2, sp, #4
mov r3, #3
bl sub_020266A4
cmp r4, #0
add r0, sp, #4
bne _02025F54
bl sub_02026484
b _02025F58
_02025F54:
bl sub_02026594
_02025F58:
bl sub_02026700
mov r0, #6
mov r1, #0x50
bl sub_02026774
add r0, sp, #4
mov r1, #3
bl sub_020267F4
bl sub_02026740
_02025F78:
add sp, sp, #8
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02025E60
arm_func_start sub_02025F84
sub_02025F84: ; 0x02025F84
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
mov r2, r4
mov r0, #0x86
mov r1, #0x20
mov r3, #7
bl sub_020266A4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02025F84
arm_func_start sub_02025FB0
sub_02025FB0: ; 0x02025FB0
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
bl sub_02026700
mov r0, #6
mov r1, #0x20
bl sub_02026774
mov r0, r4
mov r1, #7
bl sub_020267F4
bl sub_02026740
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02025FB0
arm_func_start sub_02025FE8
sub_02025FE8: ; 0x02025FE8
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
mov r2, r4
mov r0, #0x86
mov r1, #0x20
mov r3, #4
bl sub_020266A4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02025FE8
arm_func_start sub_02026014
sub_02026014: ; 0x02026014
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
mov r2, r4
mov r0, #0x86
mov r1, #0x60
mov r3, #3
bl sub_020266A4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02026014
arm_func_start sub_02026040
sub_02026040: ; 0x02026040
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
bl sub_02026700
mov r0, #6
mov r1, #0x60
bl sub_02026774
mov r0, r4
mov r1, #3
bl sub_020267F4
bl sub_02026740
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02026040
arm_func_start sub_02026078
sub_02026078: ; 0x02026078
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_020266A4
ldrh r0, [sp]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1c
and r0, r0, #0xb
cmp r0, #1
movne r0, #0
bne _020260D4
mov r2, r4
mov r0, #0x86
mov r1, #0x10
mov r3, #1
bl sub_020266A4
mov r0, #1
_020260D4:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_02026078
arm_func_start sub_020260E0
sub_020260E0: ; 0x020260E0
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_020266A4
ldrh r0, [sp]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1c
and r0, r0, #0xb
cmp r0, #1
movne r0, #0
bne _02026148
bl sub_02026700
mov r0, #6
mov r1, #0x10
bl sub_02026774
mov r0, r4
mov r1, #1
bl sub_020267F4
bl sub_02026740
mov r0, #1
_02026148:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_020260E0
arm_func_start sub_02026154
sub_02026154: ; 0x02026154
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_020266A4
ldrh r0, [sp]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1c
cmp r0, #4
movne r0, #0
bne _020261AC
mov r2, r4
mov r0, #0x86
mov r1, #0x10
mov r3, #3
bl sub_020266A4
mov r0, #1
_020261AC:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_02026154
arm_func_start sub_020261B8
sub_020261B8: ; 0x020261B8
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_020266A4
ldrh r0, [sp]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1c
cmp r0, #4
movne r0, #0
bne _0202621C
bl sub_02026700
mov r0, #6
mov r1, #0x10
bl sub_02026774
mov r0, r4
mov r1, #3
bl sub_020267F4
bl sub_02026740
mov r0, #1
_0202621C:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_020261B8
arm_func_start sub_02026228
sub_02026228: ; 0x02026228
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_020266A4
ldrh r0, [sp]
mov r0, r0, lsl #0x19
movs r0, r0, lsr #0x1f
moveq r0, #0
beq _0202627C
mov r2, r4
mov r0, #0x86
mov r1, #0x50
mov r3, #3
bl sub_020266A4
mov r0, #1
_0202627C:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_02026228
arm_func_start sub_02026288
sub_02026288: ; 0x02026288
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_020266A4
ldrh r0, [sp]
mov r0, r0, lsl #0x19
movs r0, r0, lsr #0x1f
moveq r0, #0
beq _020262E8
bl sub_02026700
mov r0, #6
mov r1, #0x50
bl sub_02026774
mov r0, r4
mov r1, #3
bl sub_020267F4
bl sub_02026740
mov r0, #1
_020262E8:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_02026288
arm_func_start sub_020262F4
sub_020262F4: ; 0x020262F4
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
mov r2, r4
mov r0, #0x86
mov r1, #0
mov r3, #1
bl sub_020266A4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_020262F4
arm_func_start sub_02026320
sub_02026320: ; 0x02026320
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
bl sub_02026700
mov r0, #6
mov r1, #0
bl sub_02026774
mov r0, r4
mov r1, #1
bl sub_020267F4
bl sub_02026740
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02026320
arm_func_start sub_02026358
sub_02026358: ; 0x02026358
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
mov r2, r4
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_020266A4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02026358
arm_func_start sub_02026384
sub_02026384: ; 0x02026384
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
bl sub_02026700
mov r0, #6
mov r1, #0x40
bl sub_02026774
mov r0, r4
mov r1, #1
bl sub_020267F4
bl sub_02026740
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02026384
arm_func_start sub_020263BC
sub_020263BC: ; 0x020263BC
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
mov r2, r4
mov r0, #0x86
mov r1, #0x30
mov r3, #1
bl sub_020266A4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_020263BC
arm_func_start sub_020263E8
sub_020263E8: ; 0x020263E8
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
bl sub_02026700
mov r0, #6
mov r1, #0x30
bl sub_02026774
mov r0, r4
mov r1, #1
bl sub_020267F4
bl sub_02026740
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_020263E8
arm_func_start sub_02026420
sub_02026420: ; 0x02026420
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
mov r2, r4
mov r0, #0x86
mov r1, #0x70
mov r3, #1
bl sub_020266A4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_02026420
arm_func_start sub_0202644C
sub_0202644C: ; 0x0202644C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_0302DD98
bl sub_02026700
mov r0, #6
mov r1, #0x70
bl sub_02026774
mov r0, r4
mov r1, #1
bl sub_020267F4
bl sub_02026740
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_0202644C
arm_func_start sub_02026484
sub_02026484: ; 0x02026484
ldr r1, [r0]
mov r2, r1, lsl #0x12
mov r2, r2, lsr #0x1a
cmp r2, #0x23
addls pc, pc, r2, lsl #2
b _02026580
_0202649C: ; jump table
b _0202652C ; case 0
b _0202652C ; case 1
b _0202652C ; case 2
b _0202652C ; case 3
b _0202652C ; case 4
b _0202652C ; case 5
b _0202652C ; case 6
b _0202652C ; case 7
b _0202652C ; case 8
b _0202652C ; case 9
b _02026580 ; case 10
b _02026580 ; case 11
b _02026580 ; case 12
b _02026580 ; case 13
b _02026580 ; case 14
b _02026580 ; case 15
b _0202652C ; case 16
b _0202652C ; case 17
b _02026538 ; case 18
b _02026538 ; case 19
b _02026538 ; case 20
b _02026538 ; case 21
b _02026538 ; case 22
b _02026538 ; case 23
b _02026538 ; case 24
b _02026538 ; case 25
b _02026580 ; case 26
b _02026580 ; case 27
b _02026580 ; case 28
b _02026580 ; case 29
b _02026580 ; case 30
b _02026580 ; case 31
b _0202655C ; case 32
b _0202655C ; case 33
b _02026538 ; case 34
b _02026538 ; case 35
_0202652C:
bic r1, r1, #0x4000
str r1, [r0]
bx lr
_02026538:
orr r2, r1, #0x4000
mov r1, r2, lsl #0x12
mov r1, r1, lsr #0x1a
sub r1, r1, #0x12
bic r2, r2, #0x3f00
mov r1, r1, lsl #0x1a
orr r1, r2, r1, lsr #18
str r1, [r0]
bx lr
_0202655C:
orr r2, r1, #0x4000
mov r1, r2, lsl #0x12
mov r1, r1, lsr #0x1a
sub r1, r1, #0x18
bic r2, r2, #0x3f00
mov r1, r1, lsl #0x1a
orr r1, r2, r1, lsr #18
str r1, [r0]
bx lr
_02026580:
ldr r1, [r0]
bic r1, r1, #0x4000
bic r1, r1, #0x3f00
str r1, [r0]
bx lr
arm_func_end sub_02026484
arm_func_start sub_02026594
sub_02026594: ; 0x02026594
ldr r2, [r0]
mov r1, r2, lsl #0x12
mov r3, r1, lsr #0x1a
cmp r3, #0x23
addls pc, pc, r3, lsl #2
b _02026690
_020265AC: ; jump table
b _0202663C ; case 0
b _0202663C ; case 1
b _0202663C ; case 2
b _0202663C ; case 3
b _0202663C ; case 4
b _0202663C ; case 5
b _0202663C ; case 6
b _0202663C ; case 7
b _02026660 ; case 8
b _02026660 ; case 9
b _02026690 ; case 10
b _02026690 ; case 11
b _02026690 ; case 12
b _02026690 ; case 13
b _02026690 ; case 14
b _02026690 ; case 15
b _0202663C ; case 16
b _0202663C ; case 17
b _02026684 ; case 18
b _02026684 ; case 19
b _02026684 ; case 20
b _02026684 ; case 21
b _02026684 ; case 22
b _02026684 ; case 23
b _02026684 ; case 24
b _02026684 ; case 25
b _02026690 ; case 26
b _02026690 ; case 27
b _02026690 ; case 28
b _02026690 ; case 29
b _02026690 ; case 30
b _02026690 ; case 31
b _02026684 ; case 32
b _02026684 ; case 33
b _02026684 ; case 34
b _02026684 ; case 35
_0202663C:
mov r1, r2, lsl #0x11
movs r1, r1, lsr #0x1f
bxeq lr
add r1, r3, #0x12
bic r2, r2, #0x3f00
mov r1, r1, lsl #0x1a
orr r1, r2, r1, lsr #18
str r1, [r0]
bx lr
_02026660:
mov r1, r2, lsl #0x11
movs r1, r1, lsr #0x1f
bxeq lr
add r1, r3, #0x18
bic r2, r2, #0x3f00
mov r1, r1, lsl #0x1a
orr r1, r2, r1, lsr #18
str r1, [r0]
bx lr
_02026684:
orr r1, r2, #0x4000
str r1, [r0]
bx lr
_02026690:
ldr r1, [r0]
bic r1, r1, #0x4000
bic r1, r1, #0x3f00
str r1, [r0]
bx lr
arm_func_end sub_02026594
arm_func_start sub_020266A4
sub_020266A4: ; 0x020266A4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_02026700
mov r0, r7
mov r1, r6
bl sub_02026774
cmp r7, #6
beq _020266E8
cmp r7, #0x86
bne _020266F4
mov r0, r5
mov r1, r4
bl sub_020268AC
b _020266F4
_020266E8:
mov r0, r5
mov r1, r4
bl sub_020267F4
_020266F4:
bl sub_02026740
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_020266A4
arm_func_start sub_02026700
sub_02026700: ; 0x02026700
mov ip, #0x4000000
add ip, ip, #0x138
ldrh r0, [ip]
bic r0, r0, #0x77
orr r0, r0, #0x72
strh r0, [ip]
mov r3, #2
_0202671C:
subs r3, r3, #1
bne _0202671C
bic r0, r0, #4
orr r0, r0, #4
strh r0, [ip]
mov r3, #2
_02026734:
subs r3, r3, #1
bne _02026734
bx lr
arm_func_end sub_02026700
arm_func_start sub_02026740
sub_02026740: ; 0x02026740
mov ip, #0x4000000
add ip, ip, #0x138
mov r3, #2
_0202674C:
subs r3, r3, #1
bne _0202674C
ldrh r0, [ip]
bic r0, r0, #4
orr r0, r0, #0
strh r0, [ip]
mov r3, #2
_02026768:
subs r3, r3, #1
bne _02026768
bx lr
arm_func_end sub_02026740
arm_func_start sub_02026774
sub_02026774: ; 0x02026774
mov ip, #0x4000000
add ip, ip, #0x138
orr r1, r0, r1
ldrh r0, [ip]
bic r0, r0, #0x77
orr r0, r0, #0x74
mov r2, #0
_02026790:
bic r0, r0, #3
orr r0, r0, #0
mov r3, #1
tst r3, r1, lsr r2
bne _020267A8
b _020267AC
_020267A8:
mov r3, #1
_020267AC:
beq _020267B4
b _020267B8
_020267B4:
mov r3, #0
_020267B8:
orr r0, r0, r3
strh r0, [ip]
mov r3, #9
_020267C4:
subs r3, r3, #1
bne _020267C4
bic r0, r0, #2
orr r0, r0, #2
strh r0, [ip]
mov r3, #9
_020267DC:
subs r3, r3, #1
bne _020267DC
add r2, r2, #1
cmp r2, #8
bne _02026790
bx lr
arm_func_end sub_02026774
arm_func_start sub_020267F4
sub_020267F4: ; 0x020267F4
mov ip, #0x4000000
add ip, ip, #0x138
_020267FC:
stmdb sp!, {r0, r1}
tst r0, #1
beq _0202680C
b _02026810
_0202680C:
ldrh r1, [r0]
_02026810:
bne _02026818
b _0202681C
_02026818:
ldrh r1, [r0, #-1]
_0202681C:
bne _02026824
b _02026828
_02026824:
mov r1, r1, lsr #8
_02026828:
ldrh r0, [ip]
bic r0, r0, #0x77
orr r0, r0, #0x74
mov r2, #0
_02026838:
bic r0, r0, #3
orr r0, r0, #0
mov r3, #1
tst r3, r1, lsr r2
bne _02026850
b _02026854
_02026850:
mov r3, #1
_02026854:
beq _0202685C
b _02026860
_0202685C:
mov r3, #0
_02026860:
orr r0, r0, r3
strh r0, [ip]
mov r3, #9
_0202686C:
subs r3, r3, #1
bne _0202686C
bic r0, r0, #2
orr r0, r0, #2
strh r0, [ip]
mov r3, #9
_02026884:
subs r3, r3, #1
bne _02026884
add r2, r2, #1
cmp r2, #8
bne _02026838
ldmia sp!, {r0, r1}
add r0, r0, #1
subs r1, r1, #1
bne _020267FC
bx lr
arm_func_end sub_020267F4
arm_func_start sub_020268AC
sub_020268AC: ; 0x020268AC
mov ip, #0x4000000
add ip, ip, #0x138
_020268B4:
stmdb sp!, {r0, r1}
ldrh r0, [ip]
bic r0, r0, #0x77
orr r0, r0, #0x64
mov r2, #0
mov r1, #0
_020268CC:
bic r0, r0, #3
orr r0, r0, #0
strh r0, [ip]
mov r3, #9
_020268DC:
subs r3, r3, #1
bne _020268DC
ldrh r0, [ip]
and r3, r0, #1
cmp r3, #1
beq _020268F8
b _020268FC
_020268F8:
mov r3, #0x80
_020268FC:
bne _02026904
b _02026908
_02026904:
mov r3, #0
_02026908:
orr r2, r3, r2, lsr #1
bic r0, r0, #2
orr r0, r0, #2
strh r0, [ip]
mov r3, #9
_0202691C:
subs r3, r3, #1
bne _0202691C
add r1, r1, #1
cmp r1, #8
bne _020268CC
ldmia sp!, {r0, r1}
tst r0, #1
beq _02026954
ldrh r3, [r0, #-1]
bic r3, r3, #0xff00
mov r2, r2, lsl #8
orr r3, r2, r3
strh r3, [r0, #-1]
b _02026964
_02026954:
ldrh r3, [r0]
bic r3, r3, #0xff
orr r3, r3, r2
strh r3, [r0]
_02026964:
add r0, r0, #1
subs r1, r1, #1
bne _020268B4
bx lr
arm_func_end sub_020268AC
; 0x02026974