pmd-sky/sub/asm/main.s
2023-08-07 00:12:51 -04:00

27594 lines
494 KiB
ArmAsm

.include "asm/macros.inc"
.include "asm/include/main.inc"
.text
arm_func_start sub_027E0000
sub_027E0000: ; 0x027E0000
.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_end sub_027E0000
arm_func_start sub_027E01CC
sub_027E01CC: ; 0x027E01CC
stmdb sp!, {r3, lr}
mov r1, r0
ldr r0, _027E023C ; =0x027F7878
mov r2, #1
bl sub_037FC6D4
ldr r0, _027E0240 ; =0x027F78D0
add r1, sp, #0
mov r2, #1
bl sub_037FC760
ldr r1, [sp]
ldrh r0, [r1, #0xe]
add r0, r1, r0, lsl #1
ldrh r0, [r0, #0x14]
cmp r0, #0xe
bne _027E0230
bl sub_03807380
mov r1, #0x80
strh r1, [r0]
mov r1, #0x13
strh r1, [r0, #2]
mov r1, #0x18
strh r1, [r0, #4]
bl sub_03807334
bl sub_037FE708
bl sub_037FDE70
_027E0230:
ldr r0, [sp]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E023C: .word 0x027F7878
_027E0240: .word 0x027F78D0
arm_func_end sub_027E01CC
arm_func_start sub_027E0244
sub_027E0244: ; 0x027E0244
stmdb sp!, {r4, lr}
mov r4, r1
cmp r2, #0
bne _027E029C
ldr r0, _027E02A4 ; =0x027F7900
mov r2, #0
bl sub_037FC6D4
cmp r0, #0
bne _027E029C
ldr r0, _027E02A8 ; =0x027F8878
ldr r0, [r0, #0x54c]
cmp r0, #0
beq _027E029C
bl sub_03807380
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_03807334
_027E029C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E02A4: .word 0x027F7900
_027E02A8: .word 0x027F8878
arm_func_end sub_027E0244
arm_func_start sub_027E02AC
sub_027E02AC: ; 0x027E02AC
ldr r1, _027E0308 ; =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
_027E0308: .word 0x027F8878
arm_func_end sub_027E02AC
arm_func_start sub_027E030C
sub_027E030C: ; 0x027E030C
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 _027E03A0
ldrh r0, [r1, #0x36]
cmp r0, #8
movhs r0, #8
bhs _027E03A4
_027E03A0:
ldrh r0, [r1, #0x36]
_027E03A4:
strh r0, [r2, #0xe]
ldrb r3, [r2, #0xa]
cmp r3, #0
beq _027E03C8
ldr r0, [r1]
add r3, r3, #1
add r1, r2, #0x10
bic r2, r3, #1
bl sub_037FE12C
_027E03C8:
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027E030C
arm_func_start sub_027E03D0
sub_027E03D0: ; 0x027E03D0
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _027E0518 ; =0x027F8878
mov r5, r1
ldr r4, [r2, #0x550]
mov r6, r0
add r0, r4, #0xe0
add r1, r5, #0x10
mov r2, #6
bl sub_037FE12C
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 _027E0444
mov r0, #0
strh r0, [r5, #0x20]
add r1, r5, #0x24
mov r2, #0x50
strh r0, [r5, #0x22]
bl sub_037FDF74
mov r0, #0
b _027E0468
_027E0444:
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_037FE12C
mov r0, #1
_027E0468:
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 _027E04B0
mov r2, #0x20
bl sub_037FDF74
b _027E04C8
_027E04B0:
mov r2, #8
bl sub_037FDF74
ldr r0, _027E051C ; =0x0000FFFF
add r1, r5, #0x84
mov r2, #0x18
bl sub_037FDF74
_027E04C8:
add r0, r4, #0x100
ldrh r1, [r0, #0xee]
mov r0, r5
strh r1, [r5, #0x9c]
bl sub_027E2404
ldrh r4, [r0, #4]
cmp r4, #0
moveq r0, #1
beq _027E0510
bl sub_03807380
strh r6, [r0]
mov r1, #1
strh r1, [r0, #2]
mov r1, #0x200
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03807334
mov r0, #0
_027E0510:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027E0518: .word 0x027F8878
_027E051C: .word 0x0000FFFF
arm_func_end sub_027E03D0
arm_func_start sub_027E0520
sub_027E0520: ; 0x027E0520
ldr r1, _027E0558 ; =0x027F8878
ldr r3, _027E055C ; =0x027F8DCC
ldr ip, [r1, #0x574]
ldr r2, _027E0560 ; =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
_027E0558: .word 0x027F8878
_027E055C: .word 0x027F8DCC
_027E0560: .word 0x027FFF98
arm_func_end sub_027E0520
arm_func_start sub_027E0564
sub_027E0564: ; 0x027E0564
ldr r2, _027E0594 ; =0x027F7878
mov r3, #0
_027E056C:
add r1, r2, r3
add r1, r1, #0x1000
add r3, r3, #1
strb r0, [r1, #0x554]
cmp r3, #0x20
blt _027E056C
ldr r0, _027E0598 ; =0x027F8878
mov r1, #0
str r1, [r0, #0x574]
bx lr
.align 2, 0
_027E0594: .word 0x027F7878
_027E0598: .word 0x027F8878
arm_func_end sub_027E0564
arm_func_start sub_027E059C
sub_027E059C: ; 0x027E059C
ldr r1, _027E05D0 ; =0x027F7878
mov r3, #0
mov r2, r3
_027E05A8:
add r0, r1, r2
add r0, r0, #0x1000
ldrb r0, [r0, #0x554]
add r2, r2, #1
cmp r2, #0x20
add r3, r3, r0
blt _027E05A8
ldr ip, _027E05D4 ; =sub_027E05D8
mov r0, r3, lsr #5
bx ip
.align 2, 0
_027E05D0: .word 0x027F7878
_027E05D4: .word sub_027E05D8
arm_func_end sub_027E059C
arm_func_start sub_027E05D8
sub_027E05D8: ; 0x027E05D8
ldr r1, _027E063C ; =0x027F8878
ldr r1, [r1, #0x54c]
ldrb r1, [r1, #0x53]
cmp r1, #8
bne _027E0614
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
_027E0614:
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
_027E063C: .word 0x027F8878
arm_func_end sub_027E05D8
arm_func_start sub_027E0640
sub_027E0640: ; 0x027E0640
stmdb sp!, {r4, lr}
bl sub_037FDD00
mov r4, r0
bl sub_037FC558
ldr r1, _027E0694 ; =0x027F8878
ldr r0, _027E0698 ; =0x0380B2C0
ldr r1, [r1, #0x58c]
bl sub_037FC3C0
bl sub_027E8BB0
ldr r1, _027E0694 ; =0x027F8878
ldr r1, [r1, #0x588]
bl sub_037FC3C0
ldr r1, _027E0694 ; =0x027F8878
ldr r0, _027E069C ; =0x0380B364
ldr r1, [r1, #0x584]
bl sub_037FC3C0
bl sub_037FC590
mov r0, r4
bl sub_037FDD14
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E0694: .word 0x027F8878
_027E0698: .word 0x0380B2C0
_027E069C: .word 0x0380B364
arm_func_end sub_027E0640
arm_func_start sub_027E06A0
sub_027E06A0: ; 0x027E06A0
stmdb sp!, {r4, lr}
bl sub_037FDD00
mov r4, r0
bl sub_037FC558
ldr r1, _027E06F4 ; =0x027F8878
ldr r0, _027E06F8 ; =0x0380B364
ldr r1, [r1, #0x578]
bl sub_037FC3C0
bl sub_027E8BB0
ldr r1, _027E06F4 ; =0x027F8878
ldr r1, [r1, #0x57c]
bl sub_037FC3C0
ldr r1, _027E06F4 ; =0x027F8878
ldr r0, _027E06FC ; =0x0380B2C0
ldr r1, [r1, #0x580]
bl sub_037FC3C0
bl sub_037FC590
mov r0, r4
bl sub_037FDD14
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E06F4: .word 0x027F8878
_027E06F8: .word 0x0380B364
_027E06FC: .word 0x0380B2C0
arm_func_end sub_027E06A0
arm_func_start sub_027E0700
sub_027E0700: ; 0x027E0700
stmdb sp!, {r4, lr}
mov r4, #0
bl sub_037FDD00
ldr r1, _027E0768 ; =0x027F8878
ldr r2, [r1, #0x54c]
cmp r2, #0
beq _027E0758
mov r3, r4
b _027E0750
_027E0724:
add r1, r2, r3, lsl #4
ldr r1, [r1, #0xd0]
tst r1, #0x8000
beq _027E074C
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 _027E0758
_027E074C:
add r3, r3, #1
_027E0750:
cmp r3, #0x20
blt _027E0724
_027E0758:
bl sub_037FDD14
mov r0, r4
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E0768: .word 0x027F8878
arm_func_end sub_027E0700
arm_func_start sub_027E076C
sub_027E076C: ; 0x027E076C
ldr r0, _027E079C ; =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
_027E079C: .word 0x027F8878
arm_func_end sub_027E076C
arm_func_start sub_027E07A0
sub_027E07A0: ; 0x027E07A0
ldr r1, _027E07EC ; =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
_027E07EC: .word 0x027F8878
arm_func_end sub_027E07A0
arm_func_start sub_027E07F0
sub_027E07F0: ; 0x027E07F0
ldr r1, _027E083C ; =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
_027E083C: .word 0x027F8878
arm_func_end sub_027E07F0
arm_func_start sub_027E0840
sub_027E0840: ; 0x027E0840
ldr r1, _027E0868 ; =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
_027E0868: .word 0x027F8878
arm_func_end sub_027E0840
arm_func_start sub_027E086C
sub_027E086C: ; 0x027E086C
ldr r1, _027E0894 ; =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
_027E0894: .word 0x027F8878
arm_func_end sub_027E086C
arm_func_start sub_027E0898
sub_027E0898: ; 0x027E0898
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x20
_027E08A0:
ldr r0, _027E16F0 ; =0x027F7878
add r1, sp, #0x1c
add r0, r0, #0x28
mov r2, #1
bl sub_037FC760
ldr sb, [sp, #0x1c]
cmp sb, #0
bne _027E08C8
bl sub_037FC15C
b _027E19F0
_027E08C8:
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 _027E19D8
tst r1, #0x80
beq _027E19D8
ldr r0, _027E16F4 ; =0x027F8878
ldr r1, [r0, #0x54c]
cmp r1, #0
ldrne r8, [r0, #0x550]
ldrneh r3, [r8]
cmpne r3, #1
beq _027E08A0
ldrh r2, [sb, #0xc]
ldr r1, _027E16F8 ; =0x00000182
cmp r2, r1
bgt _027E0964
bge _027E101C
cmp r2, #0x8d
bgt _027E0958
subs r0, r2, #0x84
addpl pc, pc, r0, lsl #2
b _027E19CC
_027E0930: ; jump table
b _027E0990 ; case 0
b _027E09B4 ; case 1
b _027E0C40 ; case 2
b _027E0DA4 ; case 3
b _027E0DC8 ; case 4
b _027E19CC ; case 5
b _027E19CC ; case 6
b _027E0DEC ; case 7
b _027E0E1C ; case 8
b _027E0E4C ; case 9
_027E0958:
cmp r2, #0x180
beq _027E0F64
b _027E19CC
_027E0964:
add r0, r1, #3
cmp r2, r0
bgt _027E0980
bge _027E1670
cmp r2, #0x184
beq _027E1318
b _027E19CC
_027E0980:
add r0, r1, #4
cmp r2, r0
beq _027E18D4
b _027E19CC
_027E0990:
bl sub_03807380
mov r1, #0x80
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0x13
strh r1, [r0, #4]
bl sub_03807334
b _027E19CC
_027E09B4:
cmp r3, #7
cmpne r3, #9
bne _027E0B3C
add r1, sp, #0x14
add r0, sb, #0x10
mov r2, #6
bl sub_037FE12C
mov r6, #0
mov r5, r6
add r4, r8, #0x100
mov sl, #1
b _027E0AB4
_027E09E4:
bl sub_037FDD00
ldrh r2, [r4, #0x82]
add r1, r5, #1
mov r7, r0
tst r2, sl, lsl r1
beq _027E0AA8
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 _027E0AA8
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_037FE070
mov r0, r7
bl sub_037FDD14
b _027E0ABC
_027E0AA8:
mov r0, r7
bl sub_037FDD14
add r5, r5, #1
_027E0AB4:
cmp r5, #0xf
blt _027E09E4
_027E0ABC:
cmp r6, #0
beq _027E19CC
bl sub_03807380
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_037FE12C
ldrh r1, [r8, #0x30]
mov r0, r4
strh r1, [r4, #0x2c]
ldrh r1, [r8, #0x32]
strh r1, [r4, #0x2e]
bl sub_03807334
ldr r0, [r8, #0xc]
cmp r0, #1
bne _027E19CC
mov r0, #1
mov r0, r0, lsl r6
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_027E781C
b _027E19CC
_027E0B3C:
mov r5, #0
bl sub_037FDD00
add r1, r8, #0x100
ldrh r1, [r1, #0x82]
mov r4, r0
cmp r1, #0
bne _027E0B60
bl sub_037FDD14
b _027E19CC
_027E0B60:
ldr r0, [r8, #0xc]
cmp r0, #1
bne _027E0B80
mov r0, r5
str r0, [r8, #0xc]
mov r5, #1
bl sub_027E5B8C
bl sub_027E0640
_027E0B80:
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_037FE070
bl sub_027E076C
mov r0, #0
strh r0, [r8, #0xc2]
mov r1, #3
mov r0, r4
strh r1, [r8]
bl sub_037FDD14
bl sub_03807380
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_037FE12C
ldrh r1, [r8, #0x30]
mov r0, r4
strh r1, [r4, #0x16]
ldrh r1, [r8, #0x32]
strh r1, [r4, #0x18]
bl sub_03807334
cmp r5, #0
beq _027E19CC
mov r0, #1
bl sub_027E781C
b _027E19CC
_027E0C40:
ldrh r5, [sb, #0x16]
cmp r5, #0
beq _027E19CC
cmp r5, #0x10
bhs _027E19CC
ldrh r0, [r8, #0xf6]
cmp r0, #0
bne _027E0CCC
bl sub_027E0700
movs r4, r0
moveq r0, #0
beq _027E0C98
mov r3, #0x22
add r0, sb, #0x10
add r1, r4, #4
mov r2, #6
str r3, [r4]
bl sub_037FE12C
ldr r0, _027E16FC ; =0x027F7900
mov r1, r4
mov r2, #0
bl sub_037FC6D4
_027E0C98:
cmp r0, #0
bne _027E19CC
bl sub_03807380
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_03807334
b _027E19CC
_027E0CCC:
bl sub_037FDD00
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_037FD21C
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_037FE12C
mov r0, r4
bl sub_037FDD14
mov r0, #1
add r1, r8, #0x1f8
add r1, r1, r5, lsl #4
mov r2, #0x10
bl sub_037FDF74
bl sub_03807380
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_037FE12C
strh r5, [r4, #0x10]
add r0, sb, #0x22
add r1, r4, #0x14
mov r2, #0x18
bl sub_037FDF9C
ldrh r1, [r8, #0x30]
mov r0, r4
strh r1, [r4, #0x2c]
ldrh r1, [r8, #0x32]
strh r1, [r4, #0x2e]
bl sub_03807334
b _027E19CC
_027E0DA4:
bl sub_03807380
mov r1, #0x80
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0x12
strh r1, [r0, #4]
bl sub_03807334
b _027E19CC
_027E0DC8:
bl sub_03807380
mov r1, #0x80
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0x11
strh r1, [r0, #4]
bl sub_03807334
b _027E19CC
_027E0DEC:
ldrh r0, [r8, #0xc2]
cmp r0, #0
beq _027E19CC
bl sub_03807380
mov r1, #0xc
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #8
strh r1, [r0, #8]
bl sub_03807334
b _027E19CC
_027E0E1C:
ldrh r0, [r8, #0xc2]
cmp r0, #0
beq _027E19CC
bl sub_03807380
mov r1, #8
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #2
strh r1, [r0, #8]
bl sub_03807334
b _027E19CC
_027E0E4C:
ldrb r0, [sb, #0x1f]
bl sub_027E1A40
ldr r2, _027E1700 ; =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 _027E19CC
ldrh r1, [r8, #0xba]
ldrh r0, [sb, #0x44]
cmp r1, r0
beq _027E0EF0
bl sub_027E0700
movs r1, r0
moveq r0, #0
beq _027E0EBC
mov r0, #0x25
str r0, [r1]
mov r0, #1
ldr r3, _027E1704 ; =0x00008002
str r0, [r1, #4]
ldr r0, _027E16FC ; =0x027F7900
mov r2, #0
str r3, [r1, #8]
bl sub_037FC6D4
_027E0EBC:
cmp r0, #0
bne _027E19CC
bl sub_03807380
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_03807334
b _027E19CC
_027E0EF0:
ldr r0, _027E16F4 ; =0x027F8878
ldr r0, [r0, #0x550]
ldrh r0, [r0, #0xc2]
cmp r0, #0
beq _027E19CC
bl sub_03807380
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 _027E0F58
add r2, r0, #1
add r0, sb, #0x3c
add r1, r4, #0xc
bic r2, r2, #1
bl sub_037FDF9C
_027E0F58:
mov r0, r4
bl sub_03807334
b _027E19CC
_027E0F64:
ldr r0, [r8, #0x10]
cmp r0, #0
beq _027E19CC
ldrb r0, [sb, #0x1f]
bl sub_027E1A40
bl sub_027E0520
bl sub_027E059C
strh r0, [r8, #0xbc]
add r0, sb, #0x2e
bl sub_027E02AC
cmp r0, #1
beq _027E19CC
ldrh r1, [sb, #0x16]
ldr r0, _027E1708 ; =0x000005E4
cmp r1, r0
bhi _027E19CC
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_037FE12C
add r0, sb, #0x28
add r1, r4, #0x18
mov r2, #6
bl sub_037FE12C
add r0, sb, #0x2e
add r1, r4, #0x1e
mov r2, #6
bl sub_037FE12C
bl sub_03807380
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_03807334
b _027E19CC
_027E101C:
ldrb r0, [sb, #0x1f]
bl sub_027E1A40
ldrh r1, [r8, #0xbe]
cmp r1, r0
strhih r0, [r8, #0xbe]
ldr r0, [r8, #0xc]
cmp r0, #0
beq _027E19CC
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_037FE12C
bl sub_037FDD00
ldrh r1, [r8, #0x84]
mov fp, r0
cmp r1, #1
mov r5, #0
bne _027E10AC
ldr r0, _027E170C ; =0x0380B408
mov r5, #1
bl sub_037FD5C0
_027E10AC:
mov r7, #1
strh r7, [r8, #0x84]
ldrh r0, [r4, #0xa]
mov ip, #0
strh r0, [r8, #0x82]
ldrh r6, [sb, #0x18]
ldr r0, _027E1710 ; =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, _027E170C ; =0x0380B408
mov r2, r3, lsr #0xa
orr r1, r1, r3, lsl #22
ldr r3, _027E1714 ; =0x027E1B68
bl sub_037FD4DC
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 _027E11B8
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 _027E11B8
ldrh r0, [r8, #0x32]
cmp r1, #0x200
movgt r1, #0x200
cmp r1, r0
beq _027E11B8
mov r0, r1, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_027E086C
_027E11B8:
mov r0, fp
bl sub_037FDD14
cmp r5, #0
beq _027E1204
cmp sl, #1
bne _027E11DC
mov r0, r5
mov r1, #0
bl sub_027E74EC
_027E11DC:
bl sub_03807380
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_03807334
_027E1204:
cmp r7, #0
bne _027E1230
ldrh r0, [r4, #6]
cmp r0, #2
blo _027E19CC
ldrh r0, [r4, #0x30]
tst r0, #0x8000
movne r0, #1
moveq r0, #0
strh r0, [r8, #0x5e]
b _027E19CC
_027E1230:
add r0, sb, #0x28
add r1, r4, #0x18
mov r2, #6
bl sub_037FE12C
add r0, sb, #0x2e
add r1, r4, #0x1e
mov r2, #6
bl sub_037FE12C
ldrh r0, [r4, #6]
cmp r0, #2
blo _027E12C0
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_03807380
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_03807334
ldrh r3, [r4, #6]
cmp r3, #0
beq _027E12EC
str r4, [sp]
ldrh r1, [r4, #0x30]
add r2, r4, #0x32
mov r0, #0
bl sub_027E7A10
b _027E12EC
_027E12C0:
mov r0, #0
strh r0, [r4, #6]
strh r0, [r8, #0x5e]
bl sub_03807380
mov r1, #0xe
strh r1, [r0]
strh r1, [r0, #2]
mov r1, #0xc
strh r1, [r0, #4]
str r4, [r0, #8]
bl sub_03807334
_027E12EC:
ldr r0, [r8, #0x7bc]
ldr r1, [r8, #0x7b8]
cmp r0, #0
cmpeq r1, #0
beq _027E19CC
bl sub_037FD21C
orr r0, r0, #1
str r0, [r8, #0x738]
orr r0, r1, #0
str r0, [r8, #0x73c]
b _027E19CC
_027E1318:
ldr r0, [r8, #0xc]
mov fp, #0
cmp r0, #0
beq _027E19CC
ldrh r0, [sb, #0x12]
cmp r0, #0
bne _027E134C
ldrh r1, [r8, #0x66]
cmp r1, #1
bne _027E1354
ldrh r0, [sb, #0x10]
cmp r0, #0
beq _027E1354
_027E134C:
bl sub_027E1A54
b _027E19CC
_027E1354:
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_037FE12C
ldr r0, _027E16F4 ; =0x027F8878
ldrh r1, [r4]
ldr r7, [r0, #0x550]
cmp r1, #0
ldrh r5, [r7, #0xbe]
bne _027E13F0
ldrh r0, [sb, #0x14]
cmp r0, #1
blo _027E13F0
add sl, sb, #0x1a
mov r6, #0
b _027E13E0
_027E13C4:
ldrh r1, [sb, #0x16]
mla r0, r1, r6, sl
ldrb r0, [r0, #3]
bl sub_027E1A40
cmp r0, r5
movlo r5, r0
add r6, r6, #1
_027E13E0:
ldrh r0, [sb, #0x14]
cmp r6, r0
blt _027E13C4
strh r5, [r7, #0xbe]
_027E13F0:
bl sub_037FD21C
orr r0, r0, #1
str r0, [sp, #8]
ldr r0, _027E1718 ; =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 _027E1588
_027E1420:
ldrh r7, [r5, #4]
ldrh r1, [r5]
cmp r7, #1
blo _027E1574
cmp r7, #0xf
bhi _027E1574
cmp r1, #2
blo _027E149C
ldr r0, [sp, #0x10]
cmp r1, r0
beq _027E149C
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 _027E1574
mov r0, r7
str r4, [sp]
ldrh r1, [r5, #8]
add r2, r5, #0xa
bl sub_027E7A10
b _027E1574
_027E149C:
cmp r1, #0
bne _027E1574
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 _027E1574
cmp r1, r3
cmpeq r2, r3
beq _027E1574
ldr r3, [sp, #8]
subs r3, r3, r2
ldr r2, [sp, #0xc]
sbc r1, r2, r1
cmp r1, ip
cmpeq r3, r0
bls _027E1574
bl sub_027E0700
movs r1, r0
add r2, r8, r7, lsl #3
mov r0, #0
str r0, [r2, #0x738]
str r0, [r2, #0x73c]
beq _027E1544
mov r0, #0x25
str r0, [r1]
ldr r0, [sp, #4]
mov r2, #0
str r0, [r1, #4]
ldr r0, _027E1718 ; =0x00008001
str r0, [r1, #8]
ldr r0, _027E16FC ; =0x027F7900
bl sub_037FC6D4
_027E1544:
cmp r0, #0
bne _027E1574
bl sub_03807380
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_03807334
_027E1574:
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, lsr #0x10
ldrh r0, [r4, #6]
add r5, r5, r0
_027E1588:
ldrh r0, [r4, #4]
cmp sl, r0
blo _027E1420
mov r0, r6, lsl #0x10
mov r1, r0, lsr #0x10
mov r0, #0
bl sub_027E74EC
ldrh r0, [r4]
cmp r0, #0
movne fp, #1
bl sub_03807380
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_03807334
ldrh r0, [r8, #0x70]
eor r0, r0, #1
strh r0, [r8, #0x70]
bl sub_037FDD00
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_037FDD14
cmp r4, #0
beq _027E19CC
cmp fp, #1
ldreqh r4, [sb, #0x10]
ldrh r0, [r8, #0x44]
ldrne r4, _027E171C ; =0x0000FFFF
cmp r0, #0
beq _027E1664
ldr r0, _027E1720 ; =0x0380B434
bl sub_037FD5C0
str r4, [sp]
ldr r1, [r8, #0x48]
ldr r2, [r8, #0x4c]
ldr r0, _027E1720 ; =0x0380B434
ldr r3, _027E1724 ; =0x027E1AD4
bl sub_037FD4DC
b _027E19CC
_027E1664:
mov r0, r4
bl sub_027E1AE8
b _027E19CC
_027E1670:
ldr r0, [r8, #0xc]
mov r5, #0
cmp r0, #0
beq _027E19CC
ldrh r0, [sb, #0xe]
cmp r0, #0
bne _027E16D0
ldr r1, _027E1728 ; =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 _027E19CC
b _027E16D4
_027E16D0:
mov r4, r5
_027E16D4:
bl sub_037FDD00
ldrh r1, [r8, #0x84]
mov r7, r0
cmp r1, #0
bne _027E172C
bl sub_037FDD14
b _027E19CC
.align 2, 0
_027E16F0: .word 0x027F7878
_027E16F4: .word 0x027F8878
_027E16F8: .word 0x00000182
_027E16FC: .word 0x027F7900
_027E1700: .word 0x027FFF98
_027E1704: .word 0x00008002
_027E1708: .word 0x000005E4
_027E170C: .word 0x0380B408
_027E1710: .word 0x000082EA
_027E1714: .word 0x027E1B68
_027E1718: .word 0x00008001
_027E171C: .word 0x0000FFFF
_027E1720: .word 0x0380B434
_027E1724: .word 0x027E1AD4
_027E1728: .word 0x048080F8
_027E172C:
ldr r0, _027E170C ; =0x0380B408
mov r1, #0
strh r1, [r8, #0x84]
ldrh r6, [r8, #0x90]
bl sub_037FD5C0
mov r0, r7
bl sub_037FDD14
ldrh r3, [r8, #0x8c]
mov r2, #1
cmp r3, #0
beq _027E1778
cmp r4, #0
bne _027E1774
add r0, r8, #0x100
ldrh r1, [sb, #0x3e]
ldrh r0, [r0, #0x88]
tst r1, r2, lsl r0
bne _027E1778
_027E1774:
mov r2, #0
_027E1778:
cmp r3, #0
movne r0, #0
strneh r0, [r8, #0x8c]
ldrh r0, [r8, #0x8e]
cmp r0, #0
beq _027E17B4
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_027E74EC
mov r5, r0
_027E17B4:
cmp r6, #0
beq _027E19CC
bl sub_03807380
mov r7, r0
mov r0, #0xe
strh r0, [r7]
cmp r4, #0
movne r0, #9
strneh r0, [r7, #2]
bne _027E1800
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]
_027E1800:
mov r0, #0xd
strh r0, [r7, #4]
mov r0, #0
str r0, [r7, #8]
cmp r4, #0
bne _027E1860
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_037FE12C
add r0, sb, #0x2e
add r1, r7, #0x16
mov r2, #6
bl sub_037FE12C
ldrh r0, [sb, #0x3a]
strh r0, [r7, #0x1c]
ldrh r0, [sb, #0x3c]
strh r0, [r7, #0x1e]
ldrh r0, [sb, #0x3e]
strh r0, [r7, #0x20]
_027E1860:
mov r0, r7
bl sub_03807334
cmp r6, #0
beq _027E19CC
cmp r5, #1
ldrneh r0, [r8, #0x5e]
cmpne r0, #0
bne _027E18BC
ldrh r0, [r8, #0x46]
cmp r0, #0
beq _027E18B4
ldr r0, _027E1720 ; =0x0380B434
bl sub_037FD5C0
mov r0, #0
str r0, [sp]
ldr r1, [r8, #0x50]
ldr r2, [r8, #0x54]
ldr r0, _027E1720 ; =0x0380B434
ldr r3, _027E19FC ; =0x027E1C00
bl sub_037FD4DC
b _027E19CC
_027E18B4:
bl sub_027E1C0C
b _027E19CC
_027E18BC:
mov r1, #0
strh r1, [r8, #0x5e]
mov r0, #1
strh r0, [r8, #0x60]
strh r1, [r8, #0x88]
b _027E19CC
_027E18D4:
add r0, r8, #0x700
ldrh r0, [r0, #0xcc]
cmp r0, #1
ldreqh r0, [sb, #0x10]
cmpeq r0, #0x20
bne _027E1948
bl sub_037FDD00
mov r4, r0
ldr r0, _027E170C ; =0x0380B408
bl sub_037FD5C0
mov r1, #0
mov r0, r4
strh r1, [r8, #0x84]
bl sub_037FDD14
mov r1, #0
strh r1, [r8, #0x8a]
mov r0, #1
bl sub_027E74EC
bl sub_03807380
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_03807334
b _027E19CC
_027E1948:
bl sub_027E0700
movs r1, r0
moveq r0, #0
beq _027E199C
ldr r0, _027E1A00 ; =0x00008003
mov r2, #0x25
str r2, [r1]
str r0, [r1, #8]
ldrh r0, [r8]
cmp r0, #9
cmpne r0, #7
ldreq r0, _027E1A04 ; =0x00007FFE
streq r0, [r1, #4]
beq _027E1990
cmp r0, #0xa
cmpne r0, #8
moveq r0, #1
streq r0, [r1, #4]
_027E1990:
ldr r0, _027E16FC ; =0x027F7900
mov r2, #0
bl sub_037FC6D4
_027E199C:
cmp r0, #0
bne _027E19CC
bl sub_03807380
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_03807334
_027E19CC:
mov r0, sb
bl sub_027E1A08
b _027E08A0
_027E19D8:
ldr r0, _027E16F0 ; =0x027F7878
mov r1, sb
add r0, r0, #0x58
mov r2, #1
bl sub_037FC6D4
b _027E08A0
_027E19F0:
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E19FC: .word 0x027E1C00
_027E1A00: .word 0x00008003
_027E1A04: .word 0x00007FFE
arm_func_end sub_027E0898
arm_func_start sub_027E1A08
sub_027E1A08: ; 0x027E1A08
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_037FDD00
ldr r1, _027E1A3C ; =0x027F8878
mov r4, r0
ldr r0, [r1, #0x544]
ldr r1, [r1, #0x548]
mov r2, r5
bl sub_037FCD84
mov r0, r4
bl sub_037FDD14
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E1A3C: .word 0x027F8878
arm_func_end sub_027E1A08
arm_func_start sub_027E1A40
sub_027E1A40: ; 0x027E1A40
tst r0, #2
mov r0, r0, asr #2
addeq r0, r0, #0x19
and r0, r0, #0xff
bx lr
arm_func_end sub_027E1A40
arm_func_start sub_027E1A54
sub_027E1A54: ; 0x027E1A54
stmdb sp!, {r4, lr}
ldr r0, _027E1ACC ; =0x027F8878
ldr r4, [r0, #0x550]
bl sub_027E0700
movs r1, r0
moveq r0, #0
beq _027E1A8C
mov r0, #0x2d
str r0, [r1]
ldrh r3, [r4, #0x68]
ldr r0, _027E1AD0 ; =0x027F7900
mov r2, #0
str r3, [r1, #4]
bl sub_037FC6D4
_027E1A8C:
cmp r0, #0
movne r0, #1
strneh r0, [r4, #0x66]
bne _027E1AC4
bl sub_03807380
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_03807334
_027E1AC4:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E1ACC: .word 0x027F8878
_027E1AD0: .word 0x027F7900
arm_func_end sub_027E1A54
arm_func_start sub_027E1AD4
sub_027E1AD4: ; 0x027E1AD4
ldr ip, _027E1AE4 ; =sub_027E1AE8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx ip
.align 2, 0
_027E1AE4: .word sub_027E1AE8
arm_func_end sub_027E1AD4
arm_func_start sub_027E1AE8
sub_027E1AE8: ; 0x027E1AE8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_027E0700
movs r1, r0
ldr r4, _027E1B64 ; =0x027F7878
moveq r0, #0
beq _027E1B1C
mov r0, #0x2b
str r0, [r1]
add r0, r4, #0x88
mov r2, #0
str r5, [r1, #4]
bl sub_037FC6D4
_027E1B1C:
cmp r0, #0
bne _027E1B5C
add r0, r4, #0x1000
ldr r0, [r0, #0x54c]
cmp r0, #0
beq _027E1B5C
bl sub_03807380
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_03807334
_027E1B5C:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E1B64: .word 0x027F7878
arm_func_end sub_027E1AE8
arm_func_start sub_027E1B68
sub_027E1B68: ; 0x027E1B68
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _027E1BF0 ; =0x027F8878
mov r2, #0x40
ldr r0, [r1, #0x544]
ldr r1, [r1, #0x548]
ldr r5, _027E1BF4 ; =0x027F7878
bl sub_037FCC74
mov r4, r0
ldr r1, _027E1BF8 ; =0x00000185
ldr r0, _027E1BFC ; =0x027F78A0
strh r1, [r4, #0xc]
mov r2, #0
mov r1, r4
strh r2, [r4, #0xe]
bl sub_037FC6D4
cmp r0, #0
bne _027E1BE8
mov r0, r4
bl sub_027E1A08
add r0, r5, #0x1000
ldr r0, [r0, #0x54c]
cmp r0, #0
beq _027E1BE8
bl sub_03807380
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_03807334
_027E1BE8:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E1BF0: .word 0x027F8878
_027E1BF4: .word 0x027F7878
_027E1BF8: .word 0x00000185
_027E1BFC: .word 0x027F78A0
arm_func_end sub_027E1B68
arm_func_start sub_027E1C00
sub_027E1C00: ; 0x027E1C00
ldr ip, _027E1C08 ; =sub_027E1C0C
bx ip
.align 2, 0
_027E1C08: .word sub_027E1C0C
arm_func_end sub_027E1C00
arm_func_start sub_027E1C0C
sub_027E1C0C: ; 0x027E1C0C
stmdb sp!, {r4, lr}
bl sub_027E0700
ldr r2, _027E1C94 ; =0x027F8878
movs r1, r0
ldr r0, [r2, #0x550]
mov r2, #0
strh r2, [r0, #0x5e]
strh r2, [r0, #0x60]
ldr r4, _027E1C98 ; =0x027F7878
strh r2, [r0, #0x88]
beq _027E1C4C
mov r3, #0x2c
add r0, r4, #0x88
str r3, [r1]
bl sub_037FC6D4
mov r2, r0
_027E1C4C:
cmp r2, #0
bne _027E1C8C
add r0, r4, #0x1000
ldr r0, [r0, #0x54c]
cmp r0, #0
beq _027E1C8C
bl sub_03807380
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_03807334
_027E1C8C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E1C94: .word 0x027F8878
_027E1C98: .word 0x027F7878
arm_func_end sub_027E1C0C
arm_func_start sub_027E1C9C
sub_027E1C9C: ; 0x027E1C9C
stmdb sp!, {r3, lr}
ldr r0, _027E1CB8 ; =0x0380B434
bl sub_037FD3A0
ldr r0, _027E1CBC ; =0x0380B408
bl sub_037FD3A0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E1CB8: .word 0x0380B434
_027E1CBC: .word 0x0380B408
arm_func_end sub_027E1C9C
arm_func_start sub_027E1CC0
sub_027E1CC0: ; 0x027E1CC0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r0, _027E1D58 ; =0x027F8878
mov r6, #1
ldr r8, _027E1D5C ; =0x027F7878
ldr sb, [r0, #0x550]
ldr r5, _027E1D60 ; =0x027F7184
add r7, sp, #0
mov r4, #0
mov fp, r6
_027E1CE4:
mov r1, r7
mov r2, fp
add r0, r8, #0x88
bl sub_037FC760
ldr r0, [sp]
cmp r0, #0
bne _027E1D08
bl sub_037FC15C
b _027E1D50
_027E1D08:
ldrh sl, [r0]
tst sl, #0x8000
bicne r0, sl, #0x8000
movne r0, r0, lsl #0x10
movne sl, r0, lsr #0x10
cmp sl, #0x2e
bhs _027E1D40
str r6, [sb, #4]
strh sl, [sb, #2]
ldr r0, [sp]
ldr r1, [r5, sl, lsl #2]
mov lr, pc
bx r1
_027E1D3C:
str r4, [sb, #4]
_027E1D40:
ldr r0, [sp]
orr r1, sl, #0x8000
strh r1, [r0]
b _027E1CE4
_027E1D50:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E1D58: .word 0x027F8878
_027E1D5C: .word 0x027F7878
_027E1D60: .word 0x027F7184
arm_func_end sub_027E1CC0
arm_func_start sub_027E1D64
sub_027E1D64: ; 0x027E1D64
bx lr
arm_func_end sub_027E1D64
arm_func_start sub_027E1D68
sub_027E1D68: ; 0x027E1D68
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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027E1D68
arm_func_start sub_027E1DBC
sub_027E1DBC: ; 0x027E1DBC
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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027E1DBC
arm_func_start sub_027E1E1C
sub_027E1E1C: ; 0x027E1E1C
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_037FDF9C
ldr r0, [sp, #0x18]
add r1, r4, #0x18
mov r2, #0x20
strh r6, [r4, #0x16]
bl sub_037FDF9C
ldrh r2, [sp, #0x1c]
ldr r0, [sp, #0x20]
add r1, r4, #0x3a
strh r2, [r4, #0x38]
mov r2, #0x10
bl sub_037FDF9C
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_027E01CC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_027E1E1C
arm_func_start sub_027E1ED4
sub_027E1ED4: ; 0x027E1ED4
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_037FDF9C
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_027E01CC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E1ED4
arm_func_start sub_027E1F4C
sub_027E1F4C: ; 0x027E1F4C
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_037FDF9C
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_027E01CC
add r0, r5, #0x10
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_027E1F4C
arm_func_start sub_027E1FCC
sub_027E1FCC: ; 0x027E1FCC
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_037FDF9C
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_027E01CC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E1FCC
arm_func_start sub_027E2044
sub_027E2044: ; 0x027E2044
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_037FDF9C
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_027E01CC
add r0, r5, #0x10
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_027E2044
arm_func_start sub_027E20C0
sub_027E20C0: ; 0x027E20C0
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_037FDF9C
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_037FDF9C
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_027E01CC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E20C0
arm_func_start sub_027E2180
sub_027E2180: ; 0x027E2180
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_037FDF9C
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_027E01CC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E2180
arm_func_start sub_027E2200
sub_027E2200: ; 0x027E2200
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_037FDF9C
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_027E01CC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E2200
arm_func_start sub_027E22AC
sub_027E22AC: ; 0x027E22AC
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, _027E2310 ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E2310: .word 0x00000101
arm_func_end sub_027E22AC
arm_func_start sub_027E2314
sub_027E2314: ; 0x027E2314
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, _027E23A8 ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E23A8: .word 0x00000102
arm_func_end sub_027E2314
arm_func_start sub_027E23AC
sub_027E23AC: ; 0x027E23AC
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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027E23AC
arm_func_start sub_027E2404
sub_027E2404: ; 0x027E2404
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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027E2404
arm_func_start sub_027E2458
sub_027E2458: ; 0x027E2458
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, _027E24B0 ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E24B0: .word 0x00000207
arm_func_end sub_027E2458
arm_func_start sub_027E24B4
sub_027E24B4: ; 0x027E24B4
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, _027E250C ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E250C: .word 0x0000020B
arm_func_end sub_027E24B4
arm_func_start sub_027E2510
sub_027E2510: ; 0x027E2510
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, _027E2580 ; =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_037FDF9C
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_027E01CC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E2580: .word 0x0000020D
arm_func_end sub_027E2510
arm_func_start sub_027E2584
sub_027E2584: ; 0x027E2584
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, _027E25DC ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E25DC: .word 0x0000020E
arm_func_end sub_027E2584
arm_func_start sub_027E25E0
sub_027E25E0: ; 0x027E25E0
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, _027E2644 ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E2644: .word 0x00000211
arm_func_end sub_027E25E0
arm_func_start sub_027E2648
sub_027E2648: ; 0x027E2648
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, _027E26A0 ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E26A0: .word 0x00000212
arm_func_end sub_027E2648
arm_func_start sub_027E26A4
sub_027E26A4: ; 0x027E26A4
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, _027E26FC ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E26FC: .word 0x00000215
arm_func_end sub_027E26A4
arm_func_start sub_027E2700
sub_027E2700: ; 0x027E2700
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, _027E2758 ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E2758: .word 0x00000216
arm_func_end sub_027E2700
arm_func_start sub_027E275C
sub_027E275C: ; 0x027E275C
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, _027E27B4 ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E27B4: .word 0x00000242
arm_func_end sub_027E275C
arm_func_start sub_027E27B8
sub_027E27B8: ; 0x027E27B8
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, _027E2838 ; =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_037FDF9C
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_027E01CC
add r0, r5, #0x10
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E2838: .word 0x00000245
arm_func_end sub_027E27B8
arm_func_start sub_027E283C
sub_027E283C: ; 0x027E283C
ldr ip, _027E284C ; =sub_027E29A8
ldr r1, _027E2850 ; =0x00000281
mov r2, #4
bx ip
.align 2, 0
_027E284C: .word sub_027E29A8
_027E2850: .word 0x00000281
arm_func_end sub_027E283C
arm_func_start sub_027E2854
sub_027E2854: ; 0x027E2854
ldr ip, _027E2864 ; =sub_027E29A8
ldr r1, _027E2868 ; =0x00000283
mov r2, #3
bx ip
.align 2, 0
_027E2864: .word sub_027E29A8
_027E2868: .word 0x00000283
arm_func_end sub_027E2854
arm_func_start sub_027E286C
sub_027E286C: ; 0x027E286C
ldr ip, _027E287C ; =sub_027E29A8
mov r1, #0x284
mov r2, #2
bx ip
.align 2, 0
_027E287C: .word sub_027E29A8
arm_func_end sub_027E286C
arm_func_start sub_027E2880
sub_027E2880: ; 0x027E2880
ldr ip, _027E2890 ; =sub_027E29A8
ldr r1, _027E2894 ; =0x00000301
mov r2, #1
bx ip
.align 2, 0
_027E2890: .word sub_027E29A8
_027E2894: .word 0x00000301
arm_func_end sub_027E2880
arm_func_start sub_027E2898
sub_027E2898: ; 0x027E2898
ldr ip, _027E28A8 ; =sub_027E29A8
ldr r1, _027E28AC ; =0x00000302
mov r2, #1
bx ip
.align 2, 0
_027E28A8: .word sub_027E29A8
_027E28AC: .word 0x00000302
arm_func_end sub_027E2898
arm_func_start sub_027E28B0
sub_027E28B0: ; 0x027E28B0
ldr ip, _027E28C0 ; =sub_027E29A8
ldr r1, _027E28C4 ; =0x00000303
mov r2, #1
bx ip
.align 2, 0
_027E28C0: .word sub_027E29A8
_027E28C4: .word 0x00000303
arm_func_end sub_027E28B0
arm_func_start sub_027E28C8
sub_027E28C8: ; 0x027E28C8
ldr ip, _027E28D8 ; =sub_027E29A8
mov r1, #0x304
mov r2, #1
bx ip
.align 2, 0
_027E28D8: .word sub_027E29A8
arm_func_end sub_027E28C8
arm_func_start sub_027E28DC
sub_027E28DC: ; 0x027E28DC
ldr ip, _027E28EC ; =sub_027E29A8
ldr r1, _027E28F0 ; =0x00000305
mov r2, #1
bx ip
.align 2, 0
_027E28EC: .word sub_027E29A8
_027E28F0: .word 0x00000305
arm_func_end sub_027E28DC
arm_func_start sub_027E28F4
sub_027E28F4: ; 0x027E28F4
ldr ip, _027E2904 ; =sub_027E29A8
ldr r1, _027E2908 ; =0x00000306
mov r2, #9
bx ip
.align 2, 0
_027E2904: .word sub_027E29A8
_027E2908: .word 0x00000306
arm_func_end sub_027E28F4
arm_func_start sub_027E290C
sub_027E290C: ; 0x027E290C
ldr ip, _027E291C ; =sub_027E29A8
ldr r1, _027E2920 ; =0x00000307
mov r2, #0x5c
bx ip
.align 2, 0
_027E291C: .word sub_027E29A8
_027E2920: .word 0x00000307
arm_func_end sub_027E290C
arm_func_start sub_027E2924
sub_027E2924: ; 0x027E2924
ldr ip, _027E2934 ; =sub_027E29A8
mov r1, #0x308
mov r2, #2
bx ip
.align 2, 0
_027E2934: .word sub_027E29A8
arm_func_end sub_027E2924
arm_func_start sub_027E2938
sub_027E2938: ; 0x027E2938
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, _027E29A4 ; =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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E29A4: .word 0x00000309
arm_func_end sub_027E2938
arm_func_start sub_027E29A8
sub_027E29A8: ; 0x027E29A8
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_027E01CC
add r0, r4, #0x10
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027E29A8
arm_func_start sub_027E29F0
sub_027E29F0: ; 0x027E29F0
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r4, [r0, #4]
ldr r1, _027E2A8C ; =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_027E7E48
add r0, sp, #2
add r1, sp, #0
bl sub_027E8104
cmp r0, #0
bne _027E2A60
bl sub_03807380
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_03807334
b _027E2A80
_027E2A60:
ldr r0, [r4]
mov r1, #2
strh r1, [r0]
bl sub_03807380
mov r1, #0
strh r1, [r0]
strh r1, [r0, #2]
bl sub_03807334
_027E2A80:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_027E2A8C: .word 0x027F8878
arm_func_end sub_027E29F0
arm_func_start sub_027E2A90
sub_027E2A90: ; 0x027E2A90
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x210
ldr r0, _027E2E5C ; =0x027F8878
mov r4, #0
ldr r8, [r0, #0x550]
bl sub_037FDD00
ldr r1, [r8, #0xc]
mov r5, r0
cmp r1, #1
bne _027E2AEC
mov r0, r4
str r0, [r8, #0xc]
mov r4, #1
bl sub_027E5B8C
bl sub_027E0640
ldrh r0, [r8]
cmp r0, #0xa
moveq r0, #8
streqh r0, [r8]
beq _027E2AEC
cmp r0, #9
moveq r0, #7
streqh r0, [r8]
_027E2AEC:
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 _027E2B20
add r0, r8, #0x100
cmp r1, #7
moveq sl, #1
ldrh sb, [r0, #0x82]
movne sl, #0
b _027E2B24
_027E2B20:
mov sb, #0
_027E2B24:
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_037FDD14
cmp r4, #0
beq _027E2B5C
ldr r0, _027E2E60 ; =0x0000FFFF
bl sub_027E781C
_027E2B5C:
cmp sl, #0
movne r0, #0
strneh r0, [r8, #0xf6]
cmp sb, #0
beq _027E2BB8
mov r7, #0
add r5, r8, #0x128
add r4, r8, #0x8a
mov r6, #1
mov fp, #6
_027E2B84:
tst sb, r6, lsl r7
beq _027E2BAC
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_027E4A88
_027E2BAC:
add r7, r7, #1
cmp r7, #0x10
blt _027E2B84
_027E2BB8:
add r0, r8, #0x128
mov r1, #0
mov r2, #0x5a
bl sub_037FE070
add r0, sp, #0x10
bl sub_027E2924
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E2BE8
mov r0, #0x308
bl sub_027E2E70
b _027E2E50
_027E2BE8:
ldrh r4, [r0, #6]
add r0, sp, #0x10
bl sub_027E286C
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E2C0C
mov r0, #0x284
bl sub_027E2E70
b _027E2E50
_027E2C0C:
ldrh r1, [r0, #6]
cmp r4, #0x20
bgt _027E2C50
bge _027E2D24
cmp r4, #0
bgt _027E2C2C
beq _027E2D48
b _027E2E28
_027E2C2C:
cmp r4, #0x12
bgt _027E2E28
cmp r4, #0x10
blt _027E2E28
beq _027E2D68
cmp r4, #0x11
cmpne r4, #0x12
beq _027E2DC0
b _027E2E28
_027E2C50:
cmp r4, #0x30
bgt _027E2C60
beq _027E2C68
b _027E2E28
_027E2C60:
cmp r4, #0x40
bne _027E2E28
_027E2C68:
add r0, r1, #0xfe
add r0, r0, #0xff00
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _027E2CEC
add r0, r8, #0x8a
add r1, sp, #0xa
add r0, r0, #0x100
mov r2, #6
bl sub_037FE12C
mov r6, #0
add r5, sp, #0xa
mov r4, #3
b _027E2CE0
_027E2CA4:
add r0, sp, #0x10
mov r1, r5
mov r2, r4
bl sub_027E1FCC
ldrh r0, [r0, #4]
cmp r0, #0
beq _027E2CD0
cmp r0, #7
cmpne r0, #0xc
beq _027E2CDC
b _027E2D24
_027E2CD0:
mov r0, #3
strh r0, [r8]
b _027E2D24
_027E2CDC:
add r6, r6, #1
_027E2CE0:
cmp r6, #2
blt _027E2CA4
b _027E2D24
_027E2CEC:
cmp r1, #1
bne _027E2D24
add r0, sp, #4
mov r1, #0xff
mov r2, #6
bl sub_037FE070
add r1, sp, #4
add r0, sp, #0x10
mov r2, #3
bl sub_027E1FCC
ldrh r0, [r0, #4]
cmp r0, #0
moveq r0, #3
streqh r0, [r8]
_027E2D24:
add r0, sp, #0x10
mov r1, #1
bl sub_027E1D68
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E2D48
mov r0, #0
bl sub_027E2E70
b _027E2E50
_027E2D48:
add r0, sp, #0x10
bl sub_027E2898
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E2D68
ldr r0, _027E2E64 ; =0x00000302
bl sub_027E2E70
b _027E2E50
_027E2D68:
add r0, r8, #0x100
ldrh r0, [r0, #0xee]
cmp r0, #0
bne _027E2DA8
add r0, sp, #0x10
mov r1, #1
bl sub_027E2584
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E2D9C
ldr r0, _027E2E68 ; =0x0000020E
bl sub_027E2E70
b _027E2E50
_027E2D9C:
add r0, r8, #0x100
mov r1, #1
strh r1, [r0, #0xee]
_027E2DA8:
mov r0, #2
strh r0, [r8]
mov r0, #0
str r0, [r8, #0x198]
bl sub_027E076C
b _027E2E38
_027E2DC0:
cmp r1, #0
bne _027E2DFC
mov r0, #1
mov r1, #0
str r0, [sp]
add r0, sp, #0x10
mov r2, r1
mov r3, #0x14
bl sub_027E2938
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E2DFC
ldr r0, _027E2E6C ; =0x00000309
bl sub_027E2E70
b _027E2E50
_027E2DFC:
add r0, sp, #0x10
bl sub_027E2898
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E2E1C
ldr r0, _027E2E64 ; =0x00000302
bl sub_027E2E70
b _027E2E50
_027E2E1C:
mov r0, #2
strh r0, [r8]
b _027E2E38
_027E2E28:
mov r0, #0x308
mov r1, #0
bl sub_027E2E70
b _027E2E50
_027E2E38:
bl sub_03807380
mov r1, #1
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E2E50:
add sp, sp, #0x210
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E2E5C: .word 0x027F8878
_027E2E60: .word 0x0000FFFF
_027E2E64: .word 0x00000302
_027E2E68: .word 0x0000020E
_027E2E6C: .word 0x00000309
arm_func_end sub_027E2A90
arm_func_start sub_027E2E70
sub_027E2E70: ; 0x027E2E70
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03807380
mov r1, #1
strh r1, [r0]
strh r1, [r0, #2]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03807334
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E2E70
arm_func_start sub_027E2EA0
sub_027E2EA0: ; 0x027E2EA0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x200
ldr r0, _027E2F4C ; =0x027F8878
ldr r4, [r0, #0x550]
ldrh r0, [r4]
cmp r0, #2
beq _027E2ED8
bl sub_03807380
mov r1, #2
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03807334
b _027E2F40
_027E2ED8:
add r0, sp, #0
bl sub_027E2880
ldrh r5, [r0, #4]
cmp r5, #0
beq _027E2F14
bl sub_03807380
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_03807334
b _027E2F40
_027E2F14:
mov r0, #1
strh r0, [r4]
bl sub_0380521C
mov r0, #0
strh r0, [r4]
bl sub_03807380
mov r1, #2
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E2F40:
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E2F4C: .word 0x027F8878
arm_func_end sub_027E2EA0
arm_func_start sub_027E2F50
sub_027E2F50: ; 0x027E2F50
stmdb sp!, {r4, lr}
sub sp, sp, #0x200
ldr r1, _027E3008 ; =0x027F8878
ldr r0, [r0, #4]
ldr r4, [r1, #0x550]
mov r2, #0x40
add r1, r4, #0xe8
bl sub_037FE12C
add r0, r4, #0x100
ldrh r1, [r0, #0x1a]
ldrh r0, [r0, #0xf4]
mov r2, #1
tst r0, r2, lsl r1
bne _027E2FA4
bl sub_03807380
mov r1, #7
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
bl sub_03807334
b _027E2FFC
_027E2FA4:
ldrh r1, [r4, #0xf8]
add r0, sp, #0
bl sub_027E2648
ldrh r4, [r0, #4]
cmp r4, #0
beq _027E2FE4
bl sub_03807380
mov r1, #7
strh r1, [r0]
mov r2, #1
ldr r1, _027E300C ; =0x00000212
strh r2, [r0, #2]
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03807334
b _027E2FFC
_027E2FE4:
bl sub_03807380
mov r1, #7
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E2FFC:
add sp, sp, #0x200
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E3008: .word 0x027F8878
_027E300C: .word 0x00000212
arm_func_end sub_027E2F50
arm_func_start sub_027E3010
sub_027E3010: ; 0x027E3010
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x2b8
ldr r1, _027E3294 ; =0x027F8878
add r5, sp, #0xb8
ldr r4, [r1, #0x550]
ldrh r1, [r4]
cmp r1, #2
bne _027E303C
ldr r1, [r4, #0xc8]
tst r1, #1
beq _027E3060
_027E303C:
bl sub_03807380
mov r1, #8
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #0
strh r1, [r0, #8]
bl sub_03807334
b _027E3288
_027E3060:
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 _027E30A4
bl sub_03807380
mov r1, #8
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
mov r1, #0
strh r1, [r0, #8]
bl sub_03807334
b _027E3288
_027E30A4:
strh r3, [r4, #0xe6]
mov r0, #0
strh r0, [r1, #0x88]
bl sub_037FDD00
add r1, r4, #0x100
mov r2, #0
strh r2, [r1, #0x82]
strh r2, [r4, #0x86]
bl sub_037FDD14
mov r1, r5
add r2, r4, #0x100
mov r3, #1
mov r0, #8
strh r3, [r2, #0xee]
bl sub_027E03D0
cmp r0, #0
beq _027E3288
mov r0, r5
bl sub_027E28B0
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E3108
ldr r0, _027E3298 ; =0x00000303
bl sub_027E329C
b _027E3288
_027E3108:
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_027E1DBC
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E3148
mov r0, #1
bl sub_027E329C
b _027E3288
_027E3148:
strh r6, [r4, #0xc6]
add r1, sp, #0x38
mov r0, #0
mov r2, #0x80
add r6, r4, #0xe8
bl sub_037FDF74
add r0, sp, #0x38
mov r1, r6
bl sub_027E030C
add r1, sp, #0x18
mov r0, #0
mov r2, #0x20
bl sub_037FDF74
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_027E20C0
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E3204
mov r0, #9
bl sub_027E329C
b _027E3288
_027E3204:
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_027E07A0
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_027E07F0
bl sub_03807380
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_03807334
mov r0, #1
strh r0, [r4, #0xc2]
_027E3288:
add sp, sp, #0x2b8
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027E3294: .word 0x027F8878
_027E3298: .word 0x00000303
arm_func_end sub_027E3010
arm_func_start sub_027E329C
sub_027E329C: ; 0x027E329C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03807380
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_03807334
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E329C
arm_func_start sub_027E32D8
sub_027E32D8: ; 0x027E32D8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x208
ldr r0, _027E3494 ; =0x027F8878
ldr sl, [r0, #0x550]
ldrh r0, [sl]
cmp r0, #7
beq _027E3310
bl sub_03807380
mov r1, #9
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03807334
b _027E3488
_027E3310:
mov r0, #0
strh r0, [sl, #0xf6]
mov r8, #1
_027E331C:
add r0, sl, #0x100
ldrh r0, [r0, #0x82]
mov r7, #1
tst r0, r7, lsl r8
beq _027E33EC
add r0, sl, #0x128
sub r1, r8, #1
mov r2, #6
mla r0, r1, r2, r0
add r1, sp, #0
bl sub_037FE12C
mov sb, #0
add r6, sp, #8
add r5, sp, #0
mov r4, #3
b _027E3388
_027E335C:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_027E1FCC
ldrh r0, [r0, #4]
cmp r0, #0
beq _027E3390
cmp r0, #7
cmpne r0, #0xc
bne _027E3390
add sb, sb, #1
_027E3388:
cmp sb, #2
blt _027E335C
_027E3390:
bl sub_037FDD00
add r1, sl, #0x100
ldrh r2, [r1, #0x82]
tst r2, r7, lsl r8
beq _027E33E8
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_037FDD14
mov r0, r8, lsl #0x10
mov r1, r0, lsr #0x10
add r2, sp, #0
mov r0, #1
bl sub_027E4A88
b _027E33EC
_027E33E8:
bl sub_037FDD14
_027E33EC:
add r8, r8, #1
cmp r8, #0x10
blt _027E331C
add r0, sp, #8
mov r1, #1
bl sub_027E1D68
ldrh r1, [r0, #4]
mov r0, #0
cmp r1, #0
beq _027E341C
bl sub_027E349C
b _027E3488
_027E341C:
strh r0, [sl, #0xc2]
mov r1, #3
strh r1, [sl]
add r0, sp, #8
bl sub_027E2898
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E3448
ldr r0, _027E3498 ; =0x00000302
bl sub_027E349C
b _027E3488
_027E3448:
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_037FE070
bl sub_027E076C
bl sub_03807380
mov r1, #9
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E3488:
add sp, sp, #0x208
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_027E3494: .word 0x027F8878
_027E3498: .word 0x00000302
arm_func_end sub_027E32D8
arm_func_start sub_027E349C
sub_027E349C: ; 0x027E349C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03807380
mov r1, #9
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03807334
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E349C
arm_func_start sub_027E34D0
sub_027E34D0: ; 0x027E34D0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x248
ldr r1, _027E3820 ; =0x027F8878
add r4, sp, #0x48
ldr r7, [r1, #0x550]
ldrh r1, [r7]
cmp r1, #2
cmpne r1, #3
cmpne r1, #5
beq _027E351C
bl sub_03807380
mov r1, #0xa
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
bl sub_03807334
b _027E3814
_027E351C:
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_037FE12C
ldrh r1, [sp, #0x10]
ldr r0, _027E3824 ; =0x0000FFFF
cmp r1, r0
beq _027E3560
tst r1, #1
bicne r0, r1, #1
strneh r0, [sp, #0x10]
_027E3560:
cmp r5, #0
bne _027E358C
bl sub_03807380
mov r1, #0xa
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
bl sub_03807334
b _027E3814
_027E358C:
add r0, r7, #0x100
ldrh r0, [r0, #0xf4]
mov r1, #1
tst r0, r1, lsl r5
bne _027E35C4
bl sub_03807380
mov r1, #0xa
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
bl sub_03807334
b _027E3814
_027E35C4:
mov r0, #2
strh r0, [r7, #0xe6]
mov r0, r4
bl sub_027E2924
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E35F0
mov r0, #0x308
mov r2, #0
bl sub_027E3D74
b _027E3814
_027E35F0:
ldrh r0, [r0, #6]
cmp r0, #0x10
bne _027E366C
mov r1, r4
mov r0, #0xa
bl sub_027E03D0
cmp r0, #0
beq _027E3814
mov r0, r4
bl sub_027E28B0
ldrh r1, [r0, #4]
mov r2, #0
cmp r1, #0
beq _027E3634
ldr r0, _027E3828 ; =0x00000303
bl sub_027E3D74
b _027E3814
_027E3634:
mov r0, #3
mov r1, #1
strh r0, [r7]
mov r0, r4
mov r3, r1
bl sub_027E1DBC
ldrh r1, [r0, #4]
mov r0, #1
cmp r1, #0
beq _027E3668
mov r2, #0
bl sub_027E3D74
b _027E3814
_027E3668:
strh r0, [r7, #0xc6]
_027E366C:
ldr r0, _027E3824 ; =0x0000FFFF
mov r3, #5
strh r3, [r7]
add r1, sp, #0x26
mov r2, #0x20
bl sub_037FDF74
add r0, sp, #0x17
mov r1, #0
mov r2, #0xf
strb r5, [sp, #0x16]
bl sub_037FE070
add r1, sp, #0x26
str r1, [sp]
mov r1, #1
str r1, [sp, #4]
add r0, sp, #0x16
str r0, [sp, #8]
ldr r1, _027E382C ; =0x0000011E
add r2, sp, #0x10
str r6, [sp, #0xc]
mov r0, r4
mov r3, #0
bl sub_027E1E1C
mov r4, r0
ldrh r1, [r4, #4]
cmp r1, #0
beq _027E36E8
mov r0, #2
mov r2, #0
bl sub_027E3D74
b _027E3814
_027E36E8:
bl sub_03807380
ldrh r1, [r4, #8]
mov r6, r0
cmp r1, #0
bne _027E3720
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 _027E380C
_027E3720:
ldr r1, [r7, #0x184]
mov r0, #0
add r1, r1, #0x40
mov r2, #0x80
bl sub_037FDF74
ldrh r2, [r4, #0xa]
ldr r1, [r7, #0x184]
add r0, r4, #0xa
mov r2, r2, lsl #1
bl sub_037FE12C
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_027E3830
mov r7, r0
bl sub_027E05D8
strh r0, [r6, #0x12]
mov r0, r7
bl sub_027E3844
ldrh r1, [r4, #0x14]
add r0, r4, #0xe
strh r1, [r6, #0x14]
add r1, r6, #0xa
mov r2, #6
bl sub_037FE12C
add r0, r4, #0x16
add r1, r6, #0x16
mov r2, #0x20
bl sub_037FDF9C
ldrh r0, [r4, #0x46]
strh r0, [r6, #0x36]
cmp r0, #0x80
bls _027E37E4
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 _027E380C
_027E37E4:
add r1, r6, #0x38
mov r0, #0
mov r2, #0x80
bl sub_037FDF74
ldrh r1, [r6, #0x36]
add r0, r4, #0x4a
add r2, r1, #1
add r1, r6, #0x38
bic r2, r2, #1
bl sub_037FDF9C
_027E380C:
mov r0, r6
bl sub_03807334
_027E3814:
add sp, sp, #0x248
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027E3820: .word 0x027F8878
_027E3824: .word 0x0000FFFF
_027E3828: .word 0x00000303
_027E382C: .word 0x0000011E
arm_func_end sub_027E34D0
arm_func_start sub_027E3830
sub_027E3830: ; 0x027E3830
tst r0, #2
mov r0, r0, asr #2
addeq r0, r0, #0x19
and r0, r0, #0xff
bx lr
arm_func_end sub_027E3830
arm_func_start sub_027E3844
sub_027E3844: ; 0x027E3844
ldr r2, _027E385C ; =0x027FFF98
ldrh r1, [r2]
eor r0, r0, r1, lsl #1
eor r0, r0, r0, lsr #16
strh r0, [r2]
bx lr
.align 2, 0
_027E385C: .word 0x027FFF98
arm_func_end sub_027E3844
arm_func_start sub_027E3860
sub_027E3860: ; 0x027E3860
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc8
sub sp, sp, #0x400
ldr r1, _027E3D60 ; =0x027F8878
mov sb, r0
ldr r8, [r1, #0x550]
ldrh r0, [r8]
cmp r0, #2
cmpne r0, #3
cmpne r0, #5
beq _027E38B0
bl sub_03807380
mov r1, #0x26
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
bl sub_03807334
b _027E3D50
_027E38B0:
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_037FE12C
ldrh r5, [sb, #0x12]
ldrh fp, [sb, #0x36]
cmp r5, #2
beq _027E38F8
cmp r5, #3
beq _027E3904
b _027E3910
_027E38F8:
mov r6, #1
mov r5, #0
b _027E3914
_027E3904:
mov r6, #1
mov r5, r6
b _027E3914
_027E3910:
mov r6, #0
_027E3914:
add r1, sp, #0x4e
add r0, sb, #0x16
mov r2, #0x20
ldrh r4, [sb, #0x14]
bl sub_037FE12C
ldrh r1, [sp, #0x18]
ldr r0, _027E3D64 ; =0x0000FFFF
ldrh r7, [sb, #8]
cmp r1, r0
beq _027E3948
tst r1, #1
bicne r0, r1, #1
strneh r0, [sp, #0x18]
_027E3948:
add r0, r8, #0x100
ldrh r1, [r0, #0xf4]
mov r0, sl, lsl #0x11
ands sl, r1, r0, lsr #16
beq _027E398C
ldr r0, [r8, #0xc8]
tst r0, #1
cmpne r5, #1
bne _027E398C
ldr r0, [sb, #4]
cmp r0, #0
beq _027E398C
tst r0, #3
bne _027E398C
ldrh r0, [sb, #8]
cmp r0, #0x40
bhs _027E39B0
_027E398C:
bl sub_03807380
mov r1, #0x26
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
mov r1, #4
strh r1, [r0, #8]
bl sub_03807334
b _027E3D50
_027E39B0:
mov r0, #2
strh r0, [r8, #0xe6]
add r0, sp, #0x70
bl sub_027E2924
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E39DC
mov r0, #0x308
mov r2, #1
bl sub_027E3D74
b _027E3D50
_027E39DC:
ldrh r0, [r0, #6]
cmp r0, #0x10
bne _027E3A5C
add r1, sp, #0x70
mov r0, #0x26
bl sub_027E03D0
cmp r0, #0
beq _027E3D50
add r0, sp, #0x70
bl sub_027E28B0
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E3A20
ldr r0, _027E3D68 ; =0x00000303
mov r2, #1
bl sub_027E3D74
b _027E3D50
_027E3A20:
mov r0, #3
mov r1, #1
strh r0, [r8]
add r0, sp, #0x70
mov r3, r1
mov r2, #0
bl sub_027E1DBC
ldrh r1, [r0, #4]
mov r0, #1
cmp r1, #0
beq _027E3A58
mov r2, r0
bl sub_027E3D74
b _027E3D50
_027E3A58:
strh r0, [r8, #0xc6]
_027E3A5C:
add r0, r8, #0x100
ldrh r0, [r0, #0xee]
cmp r5, #0
bne _027E3AAC
cmp r0, #1
bne _027E3AE8
add r0, sp, #0x70
mov r1, #0
bl sub_027E2584
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E3A9C
ldr r0, _027E3D6C ; =0x0000020E
mov r2, #1
bl sub_027E3D74
b _027E3D50
_027E3A9C:
add r0, r8, #0x100
mov r1, #0
strh r1, [r0, #0xee]
b _027E3AE8
_027E3AAC:
cmp r0, #0
bne _027E3AE8
add r0, sp, #0x70
mov r1, #1
bl sub_027E2584
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E3ADC
ldr r0, _027E3D6C ; =0x0000020E
mov r2, #1
bl sub_027E3D74
b _027E3D50
_027E3ADC:
add r0, r8, #0x100
mov r1, #1
strh r1, [r0, #0xee]
_027E3AE8:
cmp r6, #1
bne _027E3B40
add r0, sp, #0x2e
mov r1, #0xff
mov r2, #0x20
bl sub_037FE070
cmp fp, #0x20
bhi _027E3B18
add r0, sp, #0x2e
mov r2, fp
mov r1, #0
bl sub_037FE070
_027E3B18:
add r1, sp, #0x2e
add r0, sp, #0x70
bl sub_027E2510
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E3B40
ldr r0, _027E3D70 ; =0x0000020D
mov r2, #1
bl sub_027E3D74
b _027E3D50
_027E3B40:
mov r6, #0
mov r3, #5
add r0, sp, #0x1e
mov r1, r6
mov r2, #0x10
strh r3, [r8]
bl sub_037FE070
mov r3, #1
add r1, sp, #0x1e
mov r2, r3
_027E3B68:
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 _027E3B68
sub r0, r7, #0x40
mov r1, #0x42
bl sub_03806DD4
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_027E1E1C
mov r5, r0
ldrh r1, [r5, #4]
cmp r1, #0
beq _027E3BEC
mov r0, #2
mov r2, #1
bl sub_027E3D74
b _027E3D50
_027E3BEC:
bl sub_03807380
ldrh r1, [r5, #8]
mov r6, r0
cmp r1, #0
bne _027E3C28
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 _027E3D48
_027E3C28:
ldr sb, [r8, #0x184]
mov r2, r7
mov r1, sb
mov r0, #0
add r8, r5, #0xa
bl sub_037FDF74
mov r7, #0
b _027E3D14
_027E3C48:
ldrh r1, [r8]
mov r0, r8
mov r1, r1, lsl #0x11
mov fp, r1, lsr #0x10
mov r1, sb
mov r2, fp
bl sub_037FE12C
cmp r4, #0
beq _027E3CD0
ldrh r2, [sb, #0xa]
cmp r2, #0
moveq r0, #0
beq _027E3CB4
cmp r2, #0x20
movhi r0, #0
bhi _027E3CB4
mov r1, #0
b _027E3CA8
_027E3C90:
add r0, sb, r1
ldrb r0, [r0, #0xc]
cmp r0, #0
movne r0, #1
bne _027E3CB4
add r1, r1, #1
_027E3CA8:
cmp r1, r2
blt _027E3C90
mov r0, #0
_027E3CB4:
cmp r0, #0
bne _027E3CD0
add r0, sp, #0x4e
add r1, sb, #0xc
mov r2, #0x20
strh r4, [sb, #0xa]
bl sub_037FE12C
_027E3CD0:
add r0, r6, r7, lsl #2
str sb, [r0, #0x10]
ldrh r0, [r8, #2]
and r0, r0, #0xff
bl sub_027E3830
str r0, [sp, #0x14]
bl sub_027E05D8
add r1, r6, r7, lsl #1
strh r0, [r1, #0x50]
ldr r0, [sp, #0x14]
bl sub_027E3844
add sb, sb, fp
tst sb, #2
addne r0, sb, #2
add r8, r8, fp
bicne sb, r0, #3
add r7, r7, #1
_027E3D14:
ldrh r0, [r5, #8]
cmp r7, r0
blt _027E3C48
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]
_027E3D48:
mov r0, r6
bl sub_03807334
_027E3D50:
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
_027E3D60: .word 0x027F8878
_027E3D64: .word 0x0000FFFF
_027E3D68: .word 0x00000303
_027E3D6C: .word 0x0000020E
_027E3D70: .word 0x0000020D
arm_func_end sub_027E3860
arm_func_start sub_027E3D74
sub_027E3D74: ; 0x027E3D74
stmdb sp!, {r4, r5, r6, lr}
mov r4, r2
mov r6, r0
mov r5, r1
bl sub_03807380
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_03807334
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_027E3D74
arm_func_start sub_027E3DBC
sub_027E3DBC: ; 0x027E3DBC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x200
ldr r0, _027E3E84 ; =0x027F8878
add r4, sp, #0
ldr r5, [r0, #0x550]
ldrh r0, [r5]
cmp r0, #5
beq _027E3DF8
bl sub_03807380
mov r1, #0xb
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03807334
b _027E3E78
_027E3DF8:
mov r0, r4
bl sub_027E2898
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E3E18
ldr r0, _027E3E88 ; =0x00000302
bl sub_027E3E90
b _027E3E78
_027E3E18:
mov r0, #2
strh r0, [r5]
add r0, r5, #0x100
ldrh r0, [r0, #0xee]
cmp r0, #0
bne _027E3E60
mov r0, r4
mov r1, #1
bl sub_027E2584
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E3E54
ldr r0, _027E3E8C ; =0x0000020E
bl sub_027E3E90
b _027E3E78
_027E3E54:
add r0, r5, #0x100
mov r1, #1
strh r1, [r0, #0xee]
_027E3E60:
bl sub_03807380
mov r1, #0xb
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E3E78:
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E3E84: .word 0x027F8878
_027E3E88: .word 0x00000302
_027E3E8C: .word 0x0000020E
arm_func_end sub_027E3DBC
arm_func_start sub_027E3E90
sub_027E3E90: ; 0x027E3E90
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03807380
mov r1, #0xb
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03807334
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E3E90
arm_func_start sub_027E3EC4
sub_027E3EC4: ; 0x027E3EC4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x250
ldr r1, _027E4454 ; =0x027F8878
add r4, sp, #0x50
ldr r7, [r1, #0x550]
ldr r5, [r1, #0x54c]
ldrh r1, [r7]
mov r6, r0
cmp r1, #2
bne _027E3EF8
ldr r0, [r7, #0xc8]
tst r0, #1
beq _027E3F1C
_027E3EF8:
bl sub_03807380
mov r1, #0xc
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #6
strh r1, [r0, #8]
bl sub_03807334
b _027E4448
_027E3F1C:
ldr r0, [r6, #4]
add r1, r5, #0x10
mov r2, #0xc0
bl sub_037FE12C
ldrh r0, [r5, #0x4c]
cmp r0, #0x10
blo _027E3F68
ldrb r0, [r5, #0x5b]
tst r0, #1
bne _027E3F68
bl sub_03807380
mov r1, #0xc
strh r1, [r0]
mov r1, #0xb
strh r1, [r0, #2]
mov r1, #6
strh r1, [r0, #8]
bl sub_03807334
b _027E4448
_027E3F68:
ldrh r1, [r5, #0x46]
add r0, r7, #0x100
mov r2, #1
ldrh r0, [r0, #0xf4]
mov r1, r2, lsl r1
tst r1, r0
beq _027E3F90
rsb r0, r2, #0x2000
tst r0, r1, asr #1
bne _027E3FB0
_027E3F90:
bl sub_03807380
mov r1, #0xc
strh r1, [r0]
mov r1, #6
strh r1, [r0, #2]
strh r1, [r0, #8]
bl sub_03807334
b _027E4448
_027E3FB0:
bl sub_03807380
mov r1, #0xc
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #6
strh r1, [r0, #8]
bl sub_03807334
add r0, r7, #0x100
ldrh r1, [r0, #0xec]
cmp r1, #1
ldrh r1, [r5, #0x3e]
bne _027E3FF8
tst r1, #1
movne r1, #1
strneh r1, [r0, #0xec]
moveq r1, #2
b _027E4008
_027E3FF8:
tst r1, #2
movne r1, #2
strneh r1, [r0, #0xec]
moveq r1, #1
_027E4008:
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_027E03D0
cmp r0, #0
beq _027E4448
mov r0, r4
mov r1, #0
bl sub_027E2700
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E4074
ldr r0, _027E4458 ; =0x00000216
mov r2, #0
bl sub_027E4468
b _027E4448
_027E4074:
ldrh r0, [r5, #0x4c]
cmp r0, #0x10
bhs _027E40D0
ldrh r1, [r5, #0x42]
cmp r1, #0
moveq r0, #1
beq _027E409C
ldr r0, _027E445C ; =0x00002710
bl sub_03806BC8
add r0, r0, #1
_027E409C:
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
cmp r1, #0xff
movhi r1, #0xff
mov r0, r4
bl sub_027E24B4
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E40D0
ldr r0, _027E4460 ; =0x0000020B
mov r2, #0
bl sub_027E4468
b _027E4448
_027E40D0:
mov r0, r4
bl sub_027E28B0
ldrh r1, [r0, #4]
mov r2, #0
cmp r1, #0
beq _027E40F4
ldr r0, _027E4464 ; =0x00000303
bl sub_027E4468
b _027E4448
_027E40F4:
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_027E1DBC
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E4140
mov r0, #1
mov r2, #0
bl sub_027E4468
b _027E4448
_027E4140:
strh r8, [r7, #0xc6]
add r1, sp, #0xc
add r0, r5, #0x10
mov r2, #0x40
bl sub_037FE12C
ldrh r0, [r7, #0xe6]
cmp r0, #2
bne _027E419C
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_037FE12C
_027E419C:
add r2, sp, #0xc
mov r0, r4
mov r1, #0x7d0
bl sub_027E1ED4
ldrh r1, [r0, #4]
cmp r1, #0
ldreqh r2, [r0, #6]
cmpeq r2, #0
beq _027E41D0
ldrh r2, [r0, #6]
mov r0, #3
bl sub_027E4468
b _027E4448
_027E41D0:
add r1, r7, #0x8a
add r0, r0, #8
add r1, r1, #0x100
mov r2, #6
bl sub_037FE12C
add r0, r7, #0x8a
add r1, sp, #6
add r0, r0, #0x100
mov r2, #6
bl sub_037FE12C
ldrh r2, [r6, #0x26]
add r1, sp, #6
mov r0, r4
mov r3, #0x7d0
bl sub_027E1F4C
ldrh r1, [r0, #4]
cmp r1, #0xc
ldreqh r2, [r0, #6]
cmpeq r2, #0x13
bne _027E4240
bl sub_03807380
mov r1, #0xc
strh r1, [r0]
strh r1, [r0, #2]
mov r1, #6
strh r1, [r0, #8]
bl sub_03807334
b _027E4448
_027E4240:
cmp r1, #0
ldreqh r2, [r0, #6]
cmpeq r2, #0
beq _027E4260
ldrh r2, [r0, #6]
mov r0, #4
bl sub_027E4468
b _027E4448
_027E4260:
add r0, r7, #0x8a
add r1, sp, #0
add r0, r0, #0x100
mov r2, #6
bl sub_037FE12C
add r1, sp, #0
mov r0, r4
mov r2, #1
mov r3, #0x7d0
bl sub_027E2044
mov r4, r0
bl sub_037FDD00
ldrh r2, [r4, #4]
mov r6, r0
cmp r2, #0xc
ldreqh r1, [r4, #6]
cmpeq r1, #0x13
bne _027E42CC
bl sub_037FDD14
bl sub_03807380
mov r1, #0xc
strh r1, [r0]
strh r1, [r0, #2]
mov r1, #6
strh r1, [r0, #8]
bl sub_03807334
b _027E4448
_027E42CC:
cmp r2, #0
ldreqh r0, [r4, #6]
cmpeq r0, #0
beq _027E42F8
mov r0, r6
bl sub_037FDD14
ldrh r1, [r4, #4]
ldrh r2, [r4, #6]
mov r0, #6
bl sub_027E4468
b _027E4448
_027E42F8:
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_037FDF74
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_027E05D8
strh r0, [r7, #0xbc]
mov r0, r4
bl sub_027E0564
bl sub_037FDD00
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 _027E4388
bl sub_037FD21C
orr r0, r0, #1
str r0, [r7, #0x738]
orr r0, r1, #0
str r0, [r7, #0x73c]
_027E4388:
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_027E07A0
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_027E07F0
mov r0, r4
bl sub_037FDD14
mov r0, #1
strh r0, [r7, #0xc2]
bl sub_03807380
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_037FE12C
ldrh r1, [r7, #0x30]
mov r0, r4
strh r1, [r4, #0x16]
ldrh r1, [r7, #0x32]
strh r1, [r4, #0x18]
bl sub_03807334
mov r0, r6
bl sub_037FDD14
_027E4448:
add sp, sp, #0x250
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027E4454: .word 0x027F8878
_027E4458: .word 0x00000216
_027E445C: .word 0x00002710
_027E4460: .word 0x0000020B
_027E4464: .word 0x00000303
arm_func_end sub_027E3EC4
arm_func_start sub_027E4468
sub_027E4468: ; 0x027E4468
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_03807380
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_03807334
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_027E4468
arm_func_start sub_027E44A4
sub_027E44A4: ; 0x027E44A4
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_027E44FC
cmp r0, #1
bne _027E44F0
bl sub_03807380
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_03807334
_027E44F0:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_027E44A4
arm_func_start sub_027E44FC
sub_027E44FC: ; 0x027E44FC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x220
ldr r3, _027E4A80 ; =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 _027E455C
ldr r0, [r7, #0xc]
cmp r0, #1
moveq r5, #1
b _027E4654
_027E455C:
cmp r1, #0xa
cmpne r1, #8
bne _027E4618
bl sub_037FDD00
add r1, r7, #0x100
ldrh r1, [r1, #0x82]
mov r4, r0
cmp r1, #0
bne _027E45C0
bl sub_037FDD14
cmp sl, #0
bne _027E45B8
bl sub_03807380
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_03807334
_027E45B8:
mov r0, #0
b _027E4A74
_027E45C0:
ldr r0, [r7, #0xc]
cmp r0, #1
bne _027E45F0
mov r0, #0
str r0, [r7, #0xc]
mov r5, #1
bl sub_027E5B8C
bl sub_027E0640
ldrh r0, [r7]
cmp r0, #0xa
moveq r0, #8
streqh r0, [r7]
_027E45F0:
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_037FDD14
b _027E4654
_027E4618:
cmp sl, #0
bne _027E464C
bl sub_03807380
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_03807334
_027E464C:
mov r0, #0
b _027E4A74
_027E4654:
ldrh r0, [r7]
cmp r0, #0xa
cmpne r0, #8
bne _027E487C
add r0, r7, #0x8a
add r1, sp, #0x1a
add r0, r0, #0x100
mov r2, #6
bl sub_037FE12C
mov sb, #0
add r6, sp, #0x1a
mov r4, #3
b _027E470C
_027E4688:
add r0, sp, #0x20
mov r1, r6
mov r2, r4
bl sub_027E1FCC
ldrh r1, [r0, #4]
cmp r1, #7
bgt _027E46C4
bge _027E46CC
cmp r1, #1
bgt _027E46D4
cmp r1, #0
blt _027E46D4
cmpne r1, #1
beq _027E4714
b _027E46D4
_027E46C4:
cmp r1, #0xc
bne _027E46D4
_027E46CC:
add sb, sb, #1
b _027E470C
_027E46D4:
cmp sl, #0
mov r2, r8
mov r0, #5
mov r3, #0
beq _027E46F0
bl sub_027E4B90
b _027E46F4
_027E46F0:
bl sub_027E4B4C
_027E46F4:
cmp r5, #0
beq _027E4704
mov r0, #1
bl sub_027E781C
_027E4704:
mov r0, #0
b _027E4A74
_027E470C:
cmp sb, #2
blt _027E4688
_027E4714:
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_027E1D68
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E4778
cmp sl, #0
mov r2, r8
mov r0, #0
mov r3, fp
beq _027E475C
bl sub_027E4B90
b _027E4760
_027E475C:
bl sub_027E4B4C
_027E4760:
cmp r5, #0
beq _027E4770
mov r0, #1
bl sub_027E781C
_027E4770:
mov r0, #0
b _027E4A74
_027E4778:
add r0, sp, #0x20
bl sub_027E2898
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E47C8
ldr r0, _027E4A84 ; =0x00000302
cmp sl, #0
mov r2, r8
beq _027E47A8
mov r3, fp
bl sub_027E4B90
b _027E47B0
_027E47A8:
mov r3, fp
bl sub_027E4B4C
_027E47B0:
cmp r5, #0
beq _027E47C0
mov r0, #1
bl sub_027E781C
_027E47C0:
mov r0, #0
b _027E4A74
_027E47C8:
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_037FE070
bl sub_027E076C
cmp sl, #1
bne _027E4858
bl sub_03807380
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_037FE12C
ldrh r1, [r7, #0x30]
mov r0, r4
strh r1, [r4, #0x16]
ldrh r1, [r7, #0x32]
strh r1, [r4, #0x18]
bl sub_03807334
b _027E4868
_027E4858:
mov r0, #0
add r2, sp, #0x1a
mov r1, r0
bl sub_027E4A88
_027E4868:
cmp r5, #0
beq _027E4A64
mov r0, #1
bl sub_027E781C
b _027E4A64
_027E487C:
mov r6, #1
b _027E4A5C
_027E4884:
add r0, r7, #0x100
ldrh r0, [r0, #0x82]
mov r1, #1
mov sb, r1, lsl r6
and r0, r0, r8
tst sb, r0
beq _027E4A58
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_037FE12C
mov r4, #0
b _027E4948
_027E48E0:
add r0, sp, #0x20
add r1, sp, #0x14
mov r2, #3
bl sub_027E1FCC
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E4950
cmp r1, #7
cmpne r1, #0xc
bne _027E4910
add r4, r4, #1
b _027E4948
_027E4910:
cmp sl, #0
mov r2, r8
mov r0, #5
mov r3, fp
beq _027E492C
bl sub_027E4B90
b _027E4930
_027E492C:
bl sub_027E4B4C
_027E4930:
cmp r5, #0
beq _027E4940
mov r0, #1
bl sub_027E781C
_027E4940:
mov r0, #0
b _027E4A74
_027E4948:
cmp r4, #2
blt _027E48E0
_027E4950:
bl sub_037FDD00
mov r4, r0
add r1, r7, #0x100
ldrh r3, [r1, #0x82]
tst r3, sb
beq _027E4A54
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_037FE070
mov r0, r4
bl sub_037FDD14
cmp sl, #1
bne _027E4A28
bl sub_03807380
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_037FE12C
ldrh r1, [r7, #0x30]
mov r0, r4
strh r1, [r4, #0x2c]
ldrh r1, [r7, #0x32]
strh r1, [r4, #0x2e]
bl sub_03807334
b _027E4A3C
_027E4A28:
mov r0, r6, lsl #0x10
mov r1, r0, lsr #0x10
add r2, sp, #0x14
mov r0, #1
bl sub_027E4A88
_027E4A3C:
cmp r5, #0
beq _027E4A58
mov r0, sb, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_027E781C
b _027E4A58
_027E4A54:
bl sub_037FDD14
_027E4A58:
add r6, r6, #1
_027E4A5C:
cmp r6, #0x10
blt _027E4884
_027E4A64:
ldr r0, [sp]
cmp r0, #0
strneh fp, [r0]
mov r0, #1
_027E4A74:
add sp, sp, #0x220
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E4A80: .word 0x027F8878
_027E4A84: .word 0x00000302
arm_func_end sub_027E44FC
arm_func_start sub_027E4A88
sub_027E4A88: ; 0x027E4A88
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r3, _027E4B44 ; =0x027F8878
mov r8, r0
ldr r5, [r3, #0x550]
mov r7, r1
mov r6, r2
bl sub_03807380
mov r4, r0
mov r0, #0
strh r0, [r4, #2]
cmp r8, #0
mov r1, #0x1a
mov r2, #6
beq _027E4AF8
mov r0, #8
strh r0, [r4]
strh r1, [r4, #8]
ldr r0, _027E4B48 ; =0x0000F001
add r1, r4, #0xa
strh r0, [r4, #0x12]
strh r7, [r4, #0x10]
mov r0, r6
bl sub_037FE12C
ldrh r0, [r5, #0x30]
strh r0, [r4, #0x2c]
ldrh r0, [r5, #0x32]
strh r0, [r4, #0x2e]
b _027E4B34
_027E4AF8:
mov r0, #0xc
strh r0, [r4]
ldr r0, _027E4B48 ; =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_037FE12C
ldrh r0, [r5, #0x30]
strh r0, [r4, #0x16]
ldrh r0, [r5, #0x32]
strh r0, [r4, #0x18]
_027E4B34:
mov r0, r4
bl sub_03807334
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027E4B44: .word 0x027F8878
_027E4B48: .word 0x0000F001
arm_func_end sub_027E4A88
arm_func_start sub_027E4B4C
sub_027E4B4C: ; 0x027E4B4C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_03807380
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_03807334
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_027E4B4C
arm_func_start sub_027E4B90
sub_027E4B90: ; 0x027E4B90
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_03807380
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_03807334
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_027E4B90
arm_func_start sub_027E4BD4
sub_027E4BD4: ; 0x027E4BD4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x204
ldr r1, _027E4F5C ; =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, _027E4F60 ; =0x027F7878
cmp r1, #0
mov r7, #0
bne _027E4C58
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 _027E4C4C
ldrh r2, [r8, #0x3e]
ldrh r1, [r8, #0xf8]
add r2, r2, #0xc
mul r1, r2, r1
add r1, r1, #0x29
_027E4C4C:
bic r1, r1, #0x1f
cmp r4, r1
movlo r7, #6
_027E4C58:
ldrh r1, [r8, #0xe6]
cmp r1, #2
bne _027E4C88
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
_027E4C88:
cmp r7, #0
beq _027E4CB0
bl sub_03807380
mov r1, #0xe
strh r1, [r0]
strh r7, [r0, #2]
mov r1, #0xa
strh r1, [r0, #4]
bl sub_03807334
b _027E4F50
_027E4CB0:
ldr r0, [r8, #0xc]
mov r1, #0
cmp r0, #0
strne r1, [r8, #0xc]
movne r1, #1
cmp r1, #0
beq _027E4CD4
ldr r0, _027E4F64 ; =0x0000FFFF
bl sub_027E781C
_027E4CD4:
bl sub_027E6370
bl sub_037FDD00
str r0, [sp]
add r0, sl, #0x14
mov r1, #0
bl sub_027E841C
ldr r0, _027E4F5C ; =0x027F8878
ldr r7, [sl, #0x30]
ldr sb, [r0, #0x550]
ldrh r0, [sb]
cmp r0, #9
cmpne r0, #0xa
beq _027E4DC8
bl sub_037FDD00
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_037FDD14
_027E4DC8:
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 _027E4F28
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_037FD21C
orr r1, r1, #0
orr r2, r0, #1
mov r3, #0
_027E4E68:
add r0, r8, r3, lsl #3
str r2, [r0, #0x738]
add r3, r3, #1
str r1, [r0, #0x73c]
cmp r3, #0x10
blt _027E4E68
bl sub_027E06A0
mov r0, #0
strh r0, [r8, #0xce]
bl sub_027E5BA0
ldrh r0, [r8]
cmp r0, #8
moveq r0, #0xa
streqh r0, [r8]
beq _027E4EB0
cmp r0, #7
moveq r0, #9
streqh r0, [r8]
_027E4EB0:
bl sub_03807380
mov r1, #0xe
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0xa
strh r1, [r0, #4]
bl sub_03807334
mov r1, #1
ldr r0, [sp]
str r1, [r8, #0xc]
bl sub_037FDD14
add r0, sp, #4
mov r1, #1
bl sub_027E2700
mov r4, r0
ldrh r0, [r4, #4]
cmp r0, #0
beq _027E4F50
bl sub_03807380
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_03807334
b _027E4F50
_027E4F28:
ldr r0, [sp]
bl sub_037FDD14
bl sub_03807380
mov r1, #0xe
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
mov r1, #0xa
strh r1, [r0, #4]
bl sub_03807334
_027E4F50:
add sp, sp, #0x204
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E4F5C: .word 0x027F8878
_027E4F60: .word 0x027F7878
_027E4F64: .word 0x0000FFFF
arm_func_end sub_027E4BD4
arm_func_start sub_027E4F68
sub_027E4F68: ; 0x027E4F68
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
ldr r1, _027E509C ; =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 _027E4FFC
tst r5, sb
moveq r8, #0
beq _027E4FFC
str fp, [sp]
stmib sp, {r4, r6, r7}
ldr r2, [sp, #0x10]
mov r0, sb
mov r3, r5
bl sub_027E73B8
mov r8, r0
_027E4FFC:
cmp r8, #2
beq _027E5090
bl sub_03807380
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, _027E50A0 ; =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_03807334
_027E5090:
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E509C: .word 0x027F8878
_027E50A0: .word 0x0000FFFF
arm_func_end sub_027E4F68
arm_func_start sub_027E50A4
sub_027E50A4: ; 0x027E50A4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x200
ldr r0, _027E51B4 ; =0x027F8878
mov r4, #0
ldr r6, [r0, #0x550]
ldrh r0, [r6]
cmp r0, #9
cmpne r0, #0xa
beq _027E50E4
bl sub_03807380
mov r1, #0x10
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03807334
b _027E51A8
_027E50E4:
bl sub_037FDD00
ldr r1, [r6, #0xc]
mov r5, r0
mov r0, #0
cmp r1, #1
str r0, [r6, #0xc]
moveq r4, #1
bl sub_027E5B8C
bl sub_027E0640
ldrh r0, [r6]
cmp r0, #0xa
moveq r0, #8
streqh r0, [r6]
beq _027E5128
cmp r0, #9
moveq r0, #7
streqh r0, [r6]
_027E5128:
mov r0, r5
bl sub_037FDD14
add r0, sp, #0
mov r1, #0
bl sub_027E2700
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E5154
ldr r0, _027E51B8 ; =0x00000216
bl sub_027E51C0
b _027E51A8
_027E5154:
add r0, sp, #0
mov r1, #7
bl sub_027E23AC
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E5178
mov r0, #0x104
bl sub_027E51C0
b _027E51A8
_027E5178:
mov r0, #0
strh r0, [r6, #0x8a]
cmp r4, #0
beq _027E5190
ldr r0, _027E51BC ; =0x0000FFFF
bl sub_027E781C
_027E5190:
bl sub_03807380
mov r1, #0x10
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E51A8:
add sp, sp, #0x200
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027E51B4: .word 0x027F8878
_027E51B8: .word 0x00000216
_027E51BC: .word 0x0000FFFF
arm_func_end sub_027E50A4
arm_func_start sub_027E51C0
sub_027E51C0: ; 0x027E51C0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03807380
mov r1, #0x10
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03807334
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E51C0
arm_func_start sub_027E51F4
sub_027E51F4: ; 0x027E51F4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _027E527C ; =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_037FDD00
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_03807380
mov r1, #0x11
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
mov r1, #0xe
strh r1, [r0, #4]
bl sub_03807334
mov r1, #1
mov r0, r5
str r1, [r4, #0x10]
bl sub_037FDD14
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027E527C: .word 0x027F8878
arm_func_end sub_027E51F4
arm_func_start sub_027E5280
sub_027E5280: ; 0x027E5280
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x230
ldr r1, _027E5374 ; =0x027F8878
mov r5, r0
ldr r4, [r1, #0x550]
add r0, r5, #4
add r1, r4, #0xa2
mov r2, #6
bl sub_037FE12C
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_037FDF74
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_037FE12C
add r1, sp, #0x1e
add r0, r4, #0xe0
mov r2, #6
bl sub_037FE12C
ldr r2, [r5, #0xc]
add r0, sp, #0x30
add r1, sp, #0
str r2, [sp, #0x2c]
bl sub_027E2200
mov r4, r0
bl sub_03807380
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_03807334
add sp, sp, #0x230
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E5374: .word 0x027F8878
arm_func_end sub_027E5280
arm_func_start sub_027E5378
sub_027E5378: ; 0x027E5378
stmdb sp!, {r4, lr}
sub sp, sp, #0x200
ldr r0, _027E5430 ; =0x027F8878
ldr r4, [r0, #0x550]
bl sub_037FDD00
ldrh r1, [r4]
cmp r1, #0xb
beq _027E53B8
bl sub_037FDD14
bl sub_03807380
mov r1, #0x13
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03807334
b _027E5424
_027E53B8:
mov r1, #0
str r1, [r4, #0x10]
mov r1, #8
strh r1, [r4]
bl sub_037FDD14
add r0, sp, #0
mov r1, #7
bl sub_027E23AC
ldrh r4, [r0, #4]
cmp r4, #0
beq _027E540C
bl sub_03807380
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_03807334
b _027E5424
_027E540C:
bl sub_03807380
mov r1, #0x13
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E5424:
add sp, sp, #0x200
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E5430: .word 0x027F8878
arm_func_end sub_027E5378
arm_func_start sub_027E5434
sub_027E5434: ; 0x027E5434
stmdb sp!, {r3, lr}
ldr r1, _027E54D8 ; =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 _027E5484
_027E545C: ; jump table
b _027E546C ; case 0
b _027E5478 ; case 1
b _027E5478 ; case 2
b _027E5478 ; case 3
_027E546C:
mov r1, #0
str r1, [r3, #0x198]
b _027E548C
_027E5478:
mov r1, #1
str r1, [r3, #0x198]
b _027E548C
_027E5484:
mov r1, #0
str r1, [r3, #0x198]
_027E548C:
ldr r1, [r3, #0x198]
mov r2, #0x50
cmp r1, #1
bne _027E54AC
ldr r0, [r0, #8]
add r1, r3, #0x19c
bl sub_037FE12C
b _027E54B8
_027E54AC:
add r0, r3, #0x19c
mov r1, #0
bl sub_037FE070
_027E54B8:
bl sub_03807380
mov r1, #0x14
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E54D8: .word 0x027F8878
arm_func_end sub_027E5434
arm_func_start sub_027E54DC
sub_027E54DC: ; 0x027E54DC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x200
ldr r1, _027E55D0 ; =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 _027E5534
_027E550C: ; jump table
b _027E551C ; case 0
b _027E5528 ; case 1
b _027E5528 ; case 2
b _027E5528 ; case 3
_027E551C:
mov r0, #0
str r0, [r4, #0x198]
b _027E553C
_027E5528:
mov r0, #1
str r0, [r4, #0x198]
b _027E553C
_027E5534:
mov r0, #0
str r0, [r4, #0x198]
_027E553C:
ldr r0, [r4, #0x198]
mov r2, #0x50
cmp r0, #1
bne _027E555C
ldr r0, [r5, #8]
add r1, r4, #0x19c
bl sub_037FE12C
b _027E5568
_027E555C:
add r0, r4, #0x19c
mov r1, #0
bl sub_037FE070
_027E5568:
ldr r1, [r5, #0xc]
add r0, sp, #0
strh r1, [r4, #0xc4]
ldrh r1, [r4, #0xc4]
bl sub_027E2458
ldrh r4, [r0, #4]
cmp r4, #0
beq _027E55AC
bl sub_03807380
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_03807334
_027E55AC:
bl sub_03807380
mov r1, #0x27
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E55D0: .word 0x027F8878
arm_func_end sub_027E54DC
arm_func_start sub_027E55D4
sub_027E55D4: ; 0x027E55D4
stmdb sp!, {r4, lr}
sub sp, sp, #0x280
ldr r1, _027E56C0 ; =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_027E030C
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_027E27B8
mov r4, r0
bl sub_03807380
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, _027E56C4 ; =0x00000245
strneh r1, [r0, #4]
ldrneh r1, [r4, #4]
strneh r1, [r0, #6]
bl sub_03807334
add sp, sp, #0x280
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E56C0: .word 0x027F8878
_027E56C4: .word 0x00000245
arm_func_end sub_027E55D4
arm_func_start sub_027E56C8
sub_027E56C8: ; 0x027E56C8
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_027E26A4
ldrh r4, [r0, #4]
cmp r4, #0
beq _027E5718
bl sub_03807380
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_03807334
b _027E5730
_027E5718:
bl sub_03807380
mov r1, #0x19
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E5730:
add sp, sp, #0x200
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027E56C8
arm_func_start sub_027E573C
sub_027E573C: ; 0x027E573C
stmdb sp!, {r3, lr}
bl sub_03807380
mov r1, #0x1a
strh r1, [r0]
mov r1, #4
strh r1, [r0, #2]
bl sub_03807334
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027E573C
arm_func_start sub_027E5760
sub_027E5760: ; 0x027E5760
stmdb sp!, {r3, lr}
bl sub_03807380
mov r1, #0x1b
strh r1, [r0]
mov r1, #4
strh r1, [r0, #2]
bl sub_03807334
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027E5760
arm_func_start sub_027E5784
sub_027E5784: ; 0x027E5784
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, _027E58A4 ; =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_027E25E0
ldrh r6, [r0, #4]
cmp r6, #0
beq _027E57F8
bl sub_03807380
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_03807334
b _027E5898
_027E57F8:
ldr r0, _027E58A8 ; =0x0000FFFF
cmp r5, r0
beq _027E584C
cmp r5, #0
moveq r1, #1
moveq r0, #0
beq _027E5840
mov r0, #0x64
mul r2, r5, r0
ldr r0, _027E58AC ; =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
_027E5840:
str r1, [r4, #0x7b8]
str r0, [r4, #0x7bc]
b _027E5858
_027E584C:
mov r0, #0
str r0, [r4, #0x7b8]
str r0, [r4, #0x7bc]
_027E5858:
bl sub_037FD21C
orr r1, r1, #0
orr r2, r0, #1
mov r3, #0
_027E5868:
add r0, r4, r3, lsl #3
str r2, [r0, #0x738]
add r3, r3, #1
str r1, [r0, #0x73c]
cmp r3, #0x10
blt _027E5868
bl sub_03807380
mov r1, #0x1d
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E5898:
add sp, sp, #0x200
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027E58A4: .word 0x027F8878
_027E58A8: .word 0x0000FFFF
_027E58AC: .word 0x000082EA
arm_func_end sub_027E5784
arm_func_start sub_027E58B0
sub_027E58B0: ; 0x027E58B0
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x214
ldr r1, _027E5A4C ; =0x027F8878
mov r7, r0
ldr r6, [r1, #0x550]
add r4, sp, #0x14
ldrh r0, [r6]
cmp r0, #2
beq _027E58F0
bl sub_03807380
mov r1, #0x1e
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03807334
b _027E5A40
_027E58F0:
mov r0, r4
bl sub_027E2924
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E5910
mov r0, #0x308
bl sub_027E5A58
b _027E5A40
_027E5910:
ldrh r1, [r0, #6]
mov r0, #2
strh r0, [r6, #0xe6]
cmp r1, #0x10
bne _027E5990
mov r1, r4
mov r0, #0xa
bl sub_027E03D0
cmp r0, #0
beq _027E5A40
mov r0, r4
bl sub_027E28B0
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E5958
ldr r0, _027E5A50 ; =0x00000303
bl sub_027E5A58
b _027E5A40
_027E5958:
mov r0, #3
mov r1, #1
strh r0, [r6]
mov r0, r4
mov r3, r1
mov r2, #0
bl sub_027E1DBC
ldrh r1, [r0, #4]
mov r0, #1
cmp r1, #0
beq _027E598C
bl sub_027E5A58
b _027E5A40
_027E598C:
strh r0, [r6, #0xc6]
_027E5990:
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_037FE070
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_027E2180
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E59E8
mov r0, #0xa
bl sub_027E5A58
b _027E5A40
_027E59E8:
ldrh r1, [r0, #8]
mov r0, r4
and r4, r1, #0xff
mov r1, r1, lsl #8
mov r5, r1, lsr #0x10
bl sub_027E2898
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E5A18
ldr r0, _027E5A54 ; =0x00000302
bl sub_027E5A58
b _027E5A40
_027E5A18:
mov r0, #2
strh r0, [r6]
bl sub_03807380
mov r1, #0x1e
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
strh r4, [r0, #8]
strh r5, [r0, #0xa]
bl sub_03807334
_027E5A40:
add sp, sp, #0x214
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_027E5A4C: .word 0x027F8878
_027E5A50: .word 0x00000303
_027E5A54: .word 0x00000302
arm_func_end sub_027E58B0
arm_func_start sub_027E5A58
sub_027E5A58: ; 0x027E5A58
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_03807380
mov r1, #0x1e
strh r1, [r0]
mov r1, #1
strh r1, [r0, #2]
strh r5, [r0, #4]
strh r4, [r0, #6]
bl sub_03807334
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E5A58
arm_func_start sub_027E5A8C
sub_027E5A8C: ; 0x027E5A8C
stmdb sp!, {r4, lr}
sub sp, sp, #0x200
add r0, sp, #0
bl sub_027E28DC
ldrh r4, [r0, #4]
cmp r4, #0
beq _027E5AD0
bl sub_03807380
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_03807334
b _027E5AE8
_027E5AD0:
bl sub_03807380
mov r1, #0x1f
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E5AE8:
add sp, sp, #0x200
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027E5A8C
arm_func_start sub_027E5AF4
sub_027E5AF4: ; 0x027E5AF4
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x200
add r0, sp, #0
bl sub_027E290C
mov r5, r0
ldrh r4, [r5, #4]
cmp r4, #0
beq _027E5B3C
bl sub_03807380
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_03807334
b _027E5B6C
_027E5B3C:
bl sub_03807380
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_037FDF9C
mov r0, r4
bl sub_03807334
_027E5B6C:
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027E5AF4
arm_func_start sub_027E5B78
sub_027E5B78: ; 0x027E5B78
ldr ip, _027E5B84 ; =sub_037FD884
ldr r0, _027E5B88 ; =0x0380B460
bx ip
.align 2, 0
_027E5B84: .word sub_037FD884
_027E5B88: .word 0x0380B460
arm_func_end sub_027E5B78
arm_func_start sub_027E5B8C
sub_027E5B8C: ; 0x027E5B8C
ldr ip, _027E5B98 ; =sub_037FDA38
ldr r0, _027E5B9C ; =0x0380B460
bx ip
.align 2, 0
_027E5B98: .word sub_037FDA38
_027E5B9C: .word 0x0380B460
arm_func_end sub_027E5B8C
arm_func_start sub_027E5BA0
sub_027E5BA0: ; 0x027E5BA0
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r1, _027E5C40 ; =0x027F8878
ldr r0, _027E5C44 ; =0x0380B460
ldr r4, [r1, #0x550]
ldrh r1, [r4, #0xe6]
cmp r1, #1
bne _027E5BF0
ldr r1, [r0]
cmp r1, #0
beq _027E5BD0
bl sub_037FDA38
_027E5BD0:
ldr r0, _027E5C44 ; =0x0380B460
mov r1, #0xcb
mov ip, #3
ldr r3, _027E5C48 ; =0x027E5F8C
add r2, r1, #0x3c
str ip, [sp]
bl sub_037FD898
b _027E5C34
_027E5BF0:
cmp r1, #2
bne _027E5C34
mov r1, #0
str r1, [r4, #0x1c]
ldr r1, [r0]
cmp r1, #0
beq _027E5C10
bl sub_037FDA38
_027E5C10:
ldr r0, _027E5C44 ; =0x0380B460
mov r2, #1
mov r1, #0xc8
ldr r3, _027E5C4C ; =0x027E5C50
str r2, [sp]
add r2, r1, #0x3f
bl sub_037FD898
mov r0, #0
str r0, [r4, #0xd8]
_027E5C34:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_027E5C40: .word 0x027F8878
_027E5C44: .word 0x0380B460
_027E5C48: .word 0x027E5F8C
_027E5C4C: .word 0x027E5C50
arm_func_end sub_027E5BA0
arm_func_start sub_027E5C50
sub_027E5C50: ; 0x027E5C50
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r1, _027E5D8C ; =0x027F8878
ldr r2, _027E5D90 ; =0x0380FFF0
ldr r0, [r1, #0x550]
ldrh r3, [r2]
str r3, [r0, #0xd0]
ldr r2, [r0, #0xd4]
cmp r2, r3
beq _027E5D30
str r3, [r0, #0xd4]
ldr r1, [r1, #0x550]
ldr r3, _027E5D94 ; =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, _027E5D98 ; =0x04000006
ldr r2, _027E5D9C ; =0x00000107
ldrh ip, [r3]
ldr r3, _027E5DA0 ; =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 _027E5D30
mov ip, #1
b _027E5D20
_027E5CE8:
ldr r2, [r1, #0xd0]
add r2, r2, #0x4b
add r3, r2, #0x4100
str r3, [r1, #0xd0]
cmp r3, lr
bls _027E5D1C
ldr r2, _027E5DA4 ; =0x0000400E
sub r3, r3, lr
cmp r3, r2
str r3, [r1, #0xd8]
movhi r2, #0
strhi r2, [r1, #0xd8]
b _027E5D30
_027E5D1C:
add ip, ip, #1
_027E5D20:
cmp ip, #0x1e
blt _027E5CE8
mov r2, #0
str r2, [r1, #0xd8]
_027E5D30:
ldr r1, [r0, #0xd8]
cmp r1, #0x7f
bls _027E5D5C
ldr r0, _027E5DA8 ; =0x0380B460
mov r1, #0xd0
mov ip, #2
ldr r3, _027E5DAC ; =0x027E5DB4
add r2, r1, #0x37
str ip, [sp]
bl sub_037FD898
b _027E5D80
_027E5D5C:
mov r2, #1
str r2, [r0, #0x1c]
mov r1, #4
str r1, [sp]
ldrsh r1, [r0, #0x42]
ldr r0, _027E5DA8 ; =0x0380B460
ldr r3, _027E5DB0 ; =0x027E5E74
rsb r2, r2, #0x108
bl sub_037FD898
_027E5D80:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_027E5D8C: .word 0x027F8878
_027E5D90: .word 0x0380FFF0
_027E5D94: .word 0x048080F8
_027E5D98: .word 0x04000006
_027E5D9C: .word 0x00000107
_027E5DA0: .word 0x003FFFC0
_027E5DA4: .word 0x0000400E
_027E5DA8: .word 0x0380B460
_027E5DAC: .word 0x027E5DB4
_027E5DB0: .word 0x027E5E74
arm_func_end sub_027E5C50
arm_func_start sub_027E5DB4
sub_027E5DB4: ; 0x027E5DB4
stmdb sp!, {r3, lr}
ldr r1, _027E5E60 ; =0x04000006
ldr r0, _027E5E64 ; =0x027F8878
ldrh ip, [r1]
ldr r0, [r0, #0x550]
cmp ip, #0xd0
blt _027E5E2C
cmp ip, #0xd2
bge _027E5E2C
ldr r1, [r0, #0xd8]
cmp r1, #0x7f
blo _027E5E2C
mov r3, #1
b _027E5E04
_027E5DEC:
ldr r2, [r0, #0xd8]
rsb r1, r3, r3, lsl #6
add r1, r1, #0x7f
cmp r2, r1
blo _027E5E0C
add r3, r3, #1
_027E5E04:
cmp r3, #7
blt _027E5DEC
_027E5E0C:
ldr r1, _027E5E60 ; =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]
_027E5E2C:
ldr r1, [r0, #0xd8]
ldr r2, _027E5E68 ; =0x00000107
cmp r1, #0x7f
movhs r1, #0
strhs r1, [r0, #0x1c]
mov r1, #4
str r1, [sp]
ldrsh r1, [r0, #0x42]
ldr r0, _027E5E6C ; =0x0380B460
ldr r3, _027E5E70 ; =0x027E5E74
bl sub_037FD898
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E5E60: .word 0x04000006
_027E5E64: .word 0x027F8878
_027E5E68: .word 0x00000107
_027E5E6C: .word 0x0380B460
_027E5E70: .word 0x027E5E74
arm_func_end sub_027E5DB4
arm_func_start sub_027E5E74
sub_027E5E74: ; 0x027E5E74
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r0, _027E5F78 ; =0x027F8878
ldr r4, [r0, #0x550]
ldr r0, [r4, #0xc]
cmp r0, #1
bne _027E5F6C
ldr r0, _027E5F7C ; =0x0380B460
mov r2, #1
mov r1, #0xc8
ldr r3, _027E5F80 ; =0x027E5C50
str r2, [sp]
add r2, r1, #0x3f
bl sub_037FD898
ldr r0, [r4, #0x7bc]
ldr r1, [r4, #0x7b8]
cmp r0, #0
cmpeq r1, #0
beq _027E5F68
bl sub_037FD21C
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 _027E5F68
ldr r2, [r4, #0x7b8]
subs ip, r1, ip
ldr r1, [r4, #0x7bc]
sbc r3, lr, r3
cmp r3, r1
cmpeq ip, r2
bls _027E5F68
str r0, [r4, #0x738]
str r0, [r4, #0x73c]
bl sub_027E0700
movs r1, r0
moveq r0, #0
beq _027E5F34
mov r0, #0x25
str r0, [r1]
ldr r3, _027E5F84 ; =0x00008001
mov r2, #0
ldr r0, _027E5F88 ; =0x027F7900
stmib r1, {r2, r3}
bl sub_037FC6D4
_027E5F34:
cmp r0, #0
bne _027E5F6C
bl sub_03807380
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_03807334
b _027E5F6C
_027E5F68:
bl sub_027E6090
_027E5F6C:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_027E5F78: .word 0x027F8878
_027E5F7C: .word 0x0380B460
_027E5F80: .word 0x027E5C50
_027E5F84: .word 0x00008001
_027E5F88: .word 0x027F7900
arm_func_end sub_027E5E74
arm_func_start sub_027E5F8C
sub_027E5F8C: ; 0x027E5F8C
stmdb sp!, {r3, lr}
ldr r0, _027E602C ; =0x027F8878
ldr r0, [r0, #0x550]
ldrh r1, [r0, #0xdc]
cmp r1, #0x3c
blo _027E5FC8
ldr r2, _027E6030 ; =0x04000006
ldrh r1, [r2]
cmp r1, #0xcb
blt _027E5FD0
cmp r1, #0xd2
strlth r1, [r2]
movlt r1, #0
strlth r1, [r0, #0xdc]
b _027E5FD0
_027E5FC8:
add r1, r1, #1
strh r1, [r0, #0xdc]
_027E5FD0:
ldr r1, _027E6030 ; =0x04000006
ldr r2, _027E6034 ; =0x048080F8
ldrh lr, [r1]
ldrh r1, [r2]
ldrh r3, [r2, #2]
ldrh ip, [r2]
cmp r1, ip
ldrhih r3, [r2, #2]
ldr r1, _027E6038 ; =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, _027E603C ; =0x0380B460
ldr r3, _027E6040 ; =0x027E6044
rsb r2, r2, #0x10c
bl sub_037FD898
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E602C: .word 0x027F8878
_027E6030: .word 0x04000006
_027E6034: .word 0x048080F8
_027E6038: .word 0x0380FFF0
_027E603C: .word 0x0380B460
_027E6040: .word 0x027E6044
arm_func_end sub_027E5F8C
arm_func_start sub_027E6044
sub_027E6044: ; 0x027E6044
stmdb sp!, {r3, lr}
ldr r0, _027E6084 ; =0x027F8878
ldr r0, [r0, #0x550]
ldr r0, [r0, #0xc]
cmp r0, #1
bne _027E607C
ldr r0, _027E6088 ; =0x0380B460
mov r1, #0xcb
mov ip, #3
ldr r3, _027E608C ; =0x027E5F8C
add r2, r1, #0x3c
str ip, [sp]
bl sub_037FD898
bl sub_027E6090
_027E607C:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E6084: .word 0x027F8878
_027E6088: .word 0x0380B460
_027E608C: .word 0x027E5F8C
arm_func_end sub_027E6044
arm_func_start sub_027E6090
sub_027E6090: ; 0x027E6090
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _027E6138 ; =0x027F8878
ldr r4, _027E613C ; =0x027F7878
ldr r5, [r0, #0x550]
bl sub_037FDD00
ldrh r1, [r5, #0xce]
cmp r1, #1
bne _027E60B8
bl sub_037FDD14
b _027E6130
_027E60B8:
mov r1, #1
strh r1, [r5, #0xce]
bl sub_037FDD14
bl sub_027E0700
movs r1, r0
moveq r0, #0
beq _027E60E8
mov r3, #0x1c
add r0, r4, #0x88
mov r2, #0
str r3, [r1]
bl sub_037FC6D4
_027E60E8:
cmp r0, #0
bne _027E6130
mov r0, #0
strh r0, [r5, #0xce]
add r0, r4, #0x1000
ldr r0, [r0, #0x54c]
cmp r0, #0
beq _027E6130
bl sub_03807380
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_03807334
_027E6130:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E6138: .word 0x027F8878
_027E613C: .word 0x027F7878
arm_func_end sub_027E6090
arm_func_start sub_027E6140
sub_027E6140: ; 0x027E6140
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _027E62D8 ; =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 _027E61AC
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_027E0520
bl sub_027E059C
strh r0, [r4, #0xbc]
ldr r1, _027E62DC ; =0x0000FFFF
mov r0, #1
strh r1, [r4, #0xbe]
strh r0, [r4, #0xc0]
_027E61AC:
ldrh r0, [r4]
cmp r0, #9
bne _027E629C
bl sub_037FDD00
add r1, r4, #0x100
ldrh r1, [r1, #0x82]
cmp r1, #0
bne _027E61DC
mov r1, #0
strh r1, [r4, #0x62]
bl sub_037FDD14
b _027E62D0
_027E61DC:
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 _027E6250
ldrsh r1, [r4, #0x62]
cmp r1, #0
ldrgtsh r1, [r4, #0x64]
cmpgt r1, #0
movgt r5, #1
bgt _027E6254
_027E6250:
mov r5, #0
_027E6254:
bl sub_037FDD14
cmp r5, #0
beq _027E6268
ldr r0, _027E62DC ; =0x0000FFFF
bl sub_027E6920
_027E6268:
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 _027E62D0
_027E629C:
cmp r0, #0xa
bne _027E62D0
mov r5, #0
bl sub_037FDD00
ldr r1, [r4, #0x734]
cmp r1, #1
movne r1, r5
movne r5, #1
strneh r1, [r4, #0x60]
bl sub_037FDD14
cmp r5, #1
bne _027E62D0
bl sub_027E6428
_027E62D0:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E62D8: .word 0x027F8878
_027E62DC: .word 0x0000FFFF
arm_func_end sub_027E6140
arm_func_start sub_027E62E0
sub_027E62E0: ; 0x027E62E0
stmdb sp!, {r3, lr}
ldr r1, _027E6310 ; =0x027F8878
ldr r1, [r1, #0x550]
ldrh r1, [r1]
cmp r1, #9
bne _027E6308
ldr r0, [r0, #4]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_027E6920
_027E6308:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E6310: .word 0x027F8878
arm_func_end sub_027E62E0
arm_func_start sub_027E6314
sub_027E6314: ; 0x027E6314
stmdb sp!, {r3, lr}
ldr r0, _027E6338 ; =0x027F8878
ldr r0, [r0, #0x550]
ldrh r0, [r0]
cmp r0, #0xa
bne _027E6330
bl sub_027E6428
_027E6330:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E6338: .word 0x027F8878
arm_func_end sub_027E6314
arm_func_start sub_027E633C
sub_027E633C: ; 0x027E633C
stmdb sp!, {r3, lr}
ldr r1, _027E636C ; =0x027F8878
ldr r1, [r1, #0x550]
ldrh r1, [r1]
cmp r1, #9
bne _027E6364
ldr r0, [r0, #4]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_027E72C8
_027E6364:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E636C: .word 0x027F8878
arm_func_end sub_027E633C
arm_func_start sub_027E6370
sub_027E6370: ; 0x027E6370
stmdb sp!, {r4, lr}
ldr r0, _027E6420 ; =0x027F8878
ldr r4, [r0, #0x550]
add r0, r4, #0x31c
add r0, r0, #0x400
bl sub_037FC888
add r1, r4, #0x2f8
mov r0, #0
mov r2, #0x400
bl sub_037FDF74
mov r3, #0
_027E639C:
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 _027E639C
ldr r2, _027E6424 ; =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]
_027E63DC:
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 _027E63DC
add r0, r4, #0x31c
add r0, r0, #0x400
bl sub_037FC90C
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E6420: .word 0x027F8878
_027E6424: .word 0x0000FFFF
arm_func_end sub_027E6370
arm_func_start sub_027E6428
sub_027E6428: ; 0x027E6428
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x260
ldr r1, _027E6918 ; =0x027F8878
ldr fp, [r1, #0x550]
add r0, fp, #0x100
ldrh r0, [r0, #0x82]
cmp r0, #0
beq _027E690C
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 _027E68B8
add r1, r8, #0x100
ldrh r1, [r1, #0x88]
cmp r1, #0x10
bhs _027E68B8
ldrh r1, [r8]
cmp r1, #9
beq _027E64AC
cmp r1, #0xa
streq r0, [sp, #0x14]
bne _027E68B8
_027E64AC:
ldr r0, [sp, #0x34]
mov r6, #0
strh r6, [r0]
mov r0, #1
cmp sb, #0
strlt r0, [sp, #0x14]
blt _027E68B8
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
cmp r0, #0
beq _027E64EC
add r0, r8, #0x700
ldrh r0, [r0, #0xc6]
cmp r0, #0
strne r6, [sp, #0x18]
b _027E64F0
_027E64EC:
str r6, [sp, #0x18]
_027E64F0:
add r0, r8, #0x31c
mov r1, #0
str r1, [sp, #0xc]
mov r1, #1
add r0, r0, #0x400
str r1, [sp, #0x10]
bl sub_037FC888
ldr r0, [r8, #0x734]
cmp r0, #1
bne _027E6530
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_037FC90C
mov r0, #1
str r0, [sp, #0x14]
b _027E68B8
_027E6530:
mov r0, #1
str r0, [r8, #0x734]
add r0, r8, #0x2f8
str r0, [sp, #0x1c]
mov r5, #0
b _027E6894
_027E6548:
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, _027E691C ; =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 _027E687C
_027E65C0:
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 _027E6840
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 _027E660C
bics r1, r1, #1
bne _027E6840
_027E660C:
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 _027E6840
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_037FDF9C
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 _027E6774
ldrh r0, [r4, #0x10]
tst r0, #1
moveq r2, r0, asr #1
beq _027E6760
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]
_027E6760:
ldr r0, [sp, #0x44]
add r6, r6, #2
and r0, r2, r0
strh r0, [r7], #2
sub sb, sb, #2
_027E6774:
ldr r0, [sp]
cmp r0, #1
bne _027E67A4
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
_027E67A4:
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 _027E68A4
_027E6840:
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]
_027E687C:
ldr r0, [sp, #0x58]
cmp sl, r0
beq _027E6890
cmp sb, #2
bgt _027E65C0
_027E6890:
add r5, r5, #1
_027E6894:
cmp r5, #4
bhs _027E68A4
cmp sb, #2
bgt _027E6548
_027E68A4:
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_037FC90C
mov r0, #0
str r0, [sp, #0x14]
_027E68B8:
ldr r0, [sp, #0x14]
cmp r0, #1
moveq r0, #0
streqh r0, [fp, #0x8a]
beq _027E690C
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_027E22AC
ldrh r0, [r0, #4]
cmp r0, #0
cmpne r0, #8
movne r0, #0
strneh r0, [fp, #0x8a]
_027E690C:
add sp, sp, #0x260
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E6918: .word 0x027F8878
_027E691C: .word 0x0000FFFF
arm_func_end sub_027E6428
arm_func_start sub_027E6920
sub_027E6920: ; 0x027E6920
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2c8
ldr r1, _027E72B8 ; =0x027F8878
str r0, [sp, #0x18]
ldr r7, [r1, #0x550]
bl sub_037FDD00
add r1, r7, #0x100
ldrh r1, [r1, #0x82]
ldrh r4, [r7, #0x86]
str r1, [sp, #0x74]
bl sub_037FDD14
mov r1, #0
strh r1, [sp, #0xc4]
ldrh r0, [r7, #0x88]
cmp r0, #1
ldreq r0, _027E72BC ; =0x0000FFFF
streq r0, [sp, #0x18]
streqh r1, [r7, #0x88]
ldrh r0, [r7, #0x9e]
cmp r0, #0
bne _027E7208
ldr r1, _027E72B8 ; =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 _027E6E48
add r0, r8, #0x100
ldrh r0, [r0, #0x88]
cmp r0, #0x10
movhs r0, #1
bhs _027E6E48
ldrh r0, [r8]
cmp r0, #9
moveq r0, #1
streq r0, [sp, #0x48]
beq _027E69EC
cmp r0, #0xa
moveq r0, #0
streq r0, [sp, #0x48]
beq _027E69EC
mov r0, #1
b _027E6E48
_027E69EC:
ldr r0, [sp, #0x70]
mov r5, #0
mov sl, r5
mov fp, r5
strh r5, [r0]
cmp sb, #0
movlt r0, #1
blt _027E6E48
ldr r0, [sp, #0x48]
str r4, [sp, #0x50]
cmp r0, #0
mov r0, #1
str r0, [sp, #0x4c]
beq _027E6A40
add r0, r8, #0x700
ldrh r0, [r0, #0xc6]
cmp r0, #0
ldrne r0, [sp, #0x74]
strne r5, [sp, #0x4c]
strne r0, [sp, #0x50]
b _027E6A44
_027E6A40:
str r5, [sp, #0x4c]
_027E6A44:
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_037FC888
ldr r0, [r8, #0x734]
cmp r0, #1
bne _027E6A88
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_037FC90C
mov r0, #1
b _027E6E48
_027E6A88:
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 _027E6E20
_027E6AAC:
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, _027E72BC ; =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 _027E6E00
_027E6B30:
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 _027E6DC4
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 _027E6B88
mov r2, r1
ldr r1, [sp, #0x2c]
tst r2, r1
bne _027E6DC4
_027E6B88:
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 _027E6DC4
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_037FDF9C
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 _027E6CF0
ldrh r0, [r4, #0x10]
tst r0, #1
moveq r2, r0, asr #1
beq _027E6CDC
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]
_027E6CDC:
ldr r0, [sp, #0x94]
add fp, fp, #2
and r0, r2, r0
strh r0, [r6], #2
sub sb, sb, #2
_027E6CF0:
ldr r0, [sp, #0x1c]
cmp r0, #1
bne _027E6D20
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
_027E6D20:
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 _027E6E34
_027E6DC4:
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]
_027E6E00:
ldr r0, [sp, #0xa8]
cmp sl, r0
beq _027E6E14
cmp sb, #2
bgt _027E6B30
_027E6E14:
ldr r0, [sp, #0x58]
add r0, r0, #1
str r0, [sp, #0x58]
_027E6E20:
ldr r0, [sp, #0x58]
cmp r0, #4
bhs _027E6E34
cmp sb, #2
bgt _027E6AAC
_027E6E34:
add r0, r8, #0x31c
add r0, r0, #0x400
mov sl, fp
bl sub_037FC90C
mov r0, #0
_027E6E48:
cmp r0, #1
moveq r0, #0
streqh r0, [r7, #0x62]
streqh r0, [r7, #0x64]
beq _027E72AC
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_03803830
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 _027E71C8
ldr r0, _027E72B8 ; =0x027F8878
ldr sb, [r0, #0x550]
ldrh r0, [sb]
add r8, sb, #0x2f8
cmp r0, #9
moveq r4, #1
beq _027E6ECC
cmp r0, #0xa
bne _027E71B8
mov r4, #0
_027E6ECC:
add r0, sb, #0x31c
add r0, r0, #0x400
bl sub_037FC888
ldr r0, [sb, #0x734]
cmp r0, #0
bne _027E6EF4
add r0, sb, #0x31c
add r0, r0, #0x400
bl sub_037FC90C
b _027E71B8
_027E6EF4:
cmp r4, #0
moveq r0, #1
streq r0, [sp, #0x3c]
beq _027E6F18
bl sub_037FDD00
add r1, sb, #0x100
ldrh r1, [r1, #0x82]
str r1, [sp, #0x3c]
bl sub_037FDD14
_027E6F18:
mov r0, r5, lsl #0x10
mvn r0, r0, lsr #16
str r0, [sp, #0x30]
mov sl, #0
_027E6F28:
ldr r0, _027E72BC ; =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 _027E7144
_027E6F88:
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 _027E7058
ldrh r0, [r4, #2]
tst r0, #8
ldreqh r0, [r4, #0x12]
cmpeq r0, #0
beq _027E7058
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 _027E7140
_027E7058:
bl sub_03807380
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_03807334
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]
_027E7140:
ldrh r5, [r6]
_027E7144:
ldr r0, [sp, #0xc0]
cmp r5, r0
bne _027E6F88
ldr r2, _027E72BC ; =0x0000FFFF
ldr r0, [sp, #0x38]
cmp r0, r2
beq _027E7198
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]
_027E7198:
add sl, sl, #1
cmp sl, #4
blt _027E6F28
add r0, sb, #0x31c
mov r1, #0
add r0, r0, #0x400
str r1, [sb, #0x734]
bl sub_037FC90C
_027E71B8:
mov r0, #0
strh r0, [r7, #0x62]
strh r0, [r7, #0x64]
b _027E72AC
_027E71C8:
ldrsh r0, [r7, #0x62]
cmp r0, #1
ldrnesh r0, [r7, #0x64]
cmpne r0, #1
movne r6, #0
bne _027E7248
ldrh r3, [r7, #0x40]
mov r0, sl
mov r1, r4
mov r2, r5
bl sub_027E7C14
ldrh r1, [sp, #0xc4]
mov r6, r0
orr r0, r1, #0x8000
strh r0, [sp, #0xc4]
b _027E7248
_027E7208:
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, _027E72C0 ; =0x000080D6
bl sub_037FDD00
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_037FDD14
_027E7248:
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
str r0, [sp]
ldr r0, _027E72C4 ; =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_027E2314
strh r5, [r7, #0x68]
ldrh r0, [sp, #0xc4]
strh r0, [r7, #0x6a]
strh r4, [r7, #0x6c]
strh sl, [r7, #0x6e]
_027E72AC:
add sp, sp, #0x2c8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E72B8: .word 0x027F8878
_027E72BC: .word 0x0000FFFF
_027E72C0: .word 0x000080D6
_027E72C4: .word 0x048080F8
arm_func_end sub_027E6920
arm_func_start sub_027E72C8
sub_027E72C8: ; 0x027E72C8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x218
ldr r1, _027E73AC ; =0x027F8878
mov r4, r0
ldr r7, [r1, #0x550]
bl sub_037FDD00
bl sub_037FDD14
add r0, r7, #0x100
ldrh r0, [r0, #0x82]
ldr r1, _027E73B0 ; =0x048080F8
and r4, r4, r0
ldrh r8, [r7, #0x3a]
mov r0, r4
ldrh r5, [r1]
ldrh r6, [r7, #0x6a]
bl sub_03803830
add r1, r8, #0xc
mul r0, r1, r0
add r0, r0, #0x29
ldrh r1, [r7, #0x72]
bic r0, r0, #0x1f
cmp r1, r0
bge _027E7334
mov r0, #2
bl sub_037FC468
bl sub_027E1A54
b _027E73A0
_027E7334:
ldrsh r0, [r7, #0x62]
cmp r0, #1
ldrnesh r0, [r7, #0x64]
cmpne r0, #1
bicne r6, r6, #0x8000
movne r0, #0
bne _027E7368
ldrh r0, [r7, #0x6e]
ldrh r1, [r7, #0x6c]
ldrh r3, [r7, #0x40]
mov r2, r4
bl sub_027E7C14
orr r6, r6, #0x8000
_027E7368:
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, _027E73B4 ; =0x0000800C
add r0, sp, #0x18
mov r3, r2
str r2, [sp, #0x14]
bl sub_027E2314
_027E73A0:
add sp, sp, #0x218
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027E73AC: .word 0x027F8878
_027E73B0: .word 0x048080F8
_027E73B4: .word 0x0000800C
arm_func_end sub_027E72C8
arm_func_start sub_027E73B8
sub_027E73B8: ; 0x027E73B8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r4, _027E74E4 ; =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 _027E74DC
ldrh r0, [sp, #0x24]
tst r6, #8
movne r1, #2
moveq r1, #0
add r0, r0, r1
cmp r0, #0x204
movgt r0, #6
bgt _027E74DC
add r0, r4, #0x31c
add r0, r0, #0x400
bl sub_037FC888
add r2, r4, #0x600
ldrh r1, [r2, #0xf8]
ldr r3, _027E74E8 ; =0x0000FFFF
cmp r1, r3
bne _027E7444
add r0, r4, #0x31c
add r0, r0, #0x400
bl sub_037FC90C
mov r0, #0xa
b _027E74DC
_027E7444:
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, _027E74E8 ; =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_037FC90C
mov r0, #2
_027E74DC:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_027E74E4: .word 0x027F8878
_027E74E8: .word 0x0000FFFF
arm_func_end sub_027E73B8
arm_func_start sub_027E74EC
sub_027E74EC: ; 0x027E74EC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x3c
ldr r2, _027E7814 ; =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 _027E752C
cmp r1, #0xa
moveq r6, r0
bne _027E7808
_027E752C:
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_037FC888
ldr r0, [r8, #0x734]
cmp r0, #0
bne _027E7558
add r0, r8, #0x31c
add r0, r0, #0x400
bl sub_037FC90C
mov r0, #0
b _027E7808
_027E7558:
cmp r6, #0
moveq r0, #1
streq r0, [sp, #0x10]
beq _027E757C
bl sub_037FDD00
add r1, r8, #0x100
ldrh r1, [r1, #0x82]
str r1, [sp, #0x10]
bl sub_037FDD14
_027E757C:
mvn r0, r5
str r0, [sp, #4]
mov sl, #0
_027E7588:
add r0, r8, #0x2fc
add r1, r0, #0x400
ldr sb, _027E7818 ; =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 _027E779C
_027E75D8:
ldr r0, [sp]
add r7, r4, r5, lsl #5
cmp r0, #0
bne _027E7614
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]
_027E7614:
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 _027E76B0
ldrh r0, [r7, #2]
tst r0, #8
ldreqh r0, [r7, #0x12]
cmpeq r0, #0
beq _027E76B0
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 _027E7798
_027E76B0:
bl sub_03807380
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_03807334
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]
_027E7798:
ldrh r5, [r6]
_027E779C:
ldr r0, [sp, #0x38]
cmp r5, r0
bne _027E75D8
ldr r1, _027E7818 ; =0x0000FFFF
cmp sb, r1
beq _027E77E4
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]
_027E77E4:
add sl, sl, #1
cmp sl, #4
blt _027E7588
add r0, r8, #0x31c
mov r1, #0
add r0, r0, #0x400
str r1, [r8, #0x734]
bl sub_037FC90C
ldr r0, [sp, #0xc]
_027E7808:
add sp, sp, #0x3c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E7814: .word 0x027F8878
_027E7818: .word 0x0000FFFF
arm_func_end sub_027E74EC
arm_func_start sub_027E781C
sub_027E781C: ; 0x027E781C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
ldr r1, _027E7A08 ; =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_037FC888
add r0, sb, #0x30c
add r0, r0, #0x400
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
_027E7860:
add r0, sb, #0x100
str r0, [sp, #0x10]
mov r6, #0
add r4, sb, #0x600
_027E7870:
ldr r0, [sp, #8]
mov r1, r6, lsl #2
add r7, r0, r6, lsl #2
ldrh sl, [r0, r1]
ldr r0, _027E7A0C ; =0x0000FFFF
str r7, [sp, #4]
str r0, [sp]
b _027E79C4
_027E7890:
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 _027E7998
bl sub_03807380
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_03807334
ldrh r1, [r8]
ldr r0, _027E7A0C ; =0x0000FFFF
cmp r1, r0
ldreq r0, [sp]
streqh r0, [r7, #2]
ldrh r1, [r8]
ldr r0, [sp, #4]
strh r1, [r0]
ldr r0, _027E7A0C ; =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]
_027E7998:
ldr r0, _027E7A0C ; =0x0000FFFF
str sl, [sp]
cmp sl, r0
addne r0, r5, sl, lsl #5
strne r0, [sp, #4]
ldr r0, _027E7A0C ; =0x0000FFFF
streq r7, [sp, #4]
cmp sl, r0
movne r0, sl, lsl #5
ldrneh sl, [r5, r0]
ldreqh sl, [r7]
_027E79C4:
ldr r0, _027E7A0C ; =0x0000FFFF
cmp sl, r0
bne _027E7890
add r6, r6, #1
cmp r6, #4
blt _027E7870
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #2
blt _027E7860
add r0, sb, #0x31c
add r0, r0, #0x400
bl sub_037FC90C
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E7A08: .word 0x027F8878
_027E7A0C: .word 0x0000FFFF
arm_func_end sub_027E781C
arm_func_start sub_027E7A10
sub_027E7A10: ; 0x027E7A10
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
ldr r4, _027E7C0C ; =0x027F8878
ldr r1, [sp, #0x40]
ldr r5, [r4, #0x550]
movs sb, r3
str r1, [sp, #0x40]
mov sl, r0
str r2, [sp]
beq _027E7BFC
cmp sb, #0x204
bhi _027E7BFC
add r4, r5, #0x100
ldrh r0, [r4, #0x88]
cmp sl, r0
beq _027E7BFC
cmp sl, #0x10
bhs _027E7BFC
tst sb, #1
bne _027E7BFC
add r0, r5, #0x1f8
add r8, r0, sl, lsl #4
mov r0, #1
str r0, [sp, #8]
b _027E7BF4
_027E7A78:
ldr r0, [sp, #8]
ldr r7, _027E7C10 ; =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 _027E7BFC
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 _027E7B5C
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 _027E7B5C
mov r7, r7, lsl #1
sub r3, r3, r7
mov r3, r3, lsl #0x10
mov r3, r3, lsr #0x10
cmp r3, #0x100
blo _027E7BF4
strh r7, [r8, r0]
_027E7B5C:
cmp r2, #1
bne _027E7B78
ldrh r2, [r1]
ldrh r1, [r4, #0x88]
mov r0, #1
tst r2, r0, lsl r1
beq _027E7BF4
_027E7B78:
cmp r6, #0
ble _027E7BF4
bl sub_03807380
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_03807334
_027E7BF4:
cmp sb, #0
bgt _027E7A78
_027E7BFC:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_027E7C0C: .word 0x027F8878
_027E7C10: .word 0x0000FFFF
arm_func_end sub_027E7A10
arm_func_start sub_027E7C14
sub_027E7C14: ; 0x027E7C14
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r0
tst r6, #0x8000
ldrne r0, _027E7CB0 ; =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_03803830
mul r2, r6, r0
ldr r1, _027E7CB4 ; =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 _027E7C7C
_027E7C70:
add r0, r3, #7
adds r3, r0, #0x100
bmi _027E7C70
_027E7C7C:
ldr r2, _027E7CB8 ; =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
_027E7CB0: .word 0x00007FFF
_027E7CB4: .word 0x04000006
_027E7CB8: .word 0x66666667
arm_func_end sub_027E7C14
arm_func_start sub_027E7CBC
sub_027E7CBC: ; 0x027E7CBC
stmdb sp!, {r4, lr}
sub sp, sp, #0x280
ldr r1, _027E7D48 ; =0x027F8878
ldr r2, [r0, #4]
ldr r4, [r1, #0x550]
add r0, sp, #0
strh r2, [r4, #0xf6]
add r1, r4, #0xe8
bl sub_027E030C
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_027E27B8
mov r4, r0
bl sub_03807380
mov r1, #0x21
strh r1, [r0]
ldrh r1, [r4, #4]
cmp r1, #0
moveq r1, #0
streqh r1, [r0, #2]
beq _027E7D38
mov r1, #1
strh r1, [r0, #2]
add r1, r1, #0x244
strh r1, [r0, #4]
ldrh r1, [r4, #4]
strh r1, [r0, #6]
_027E7D38:
bl sub_03807334
add sp, sp, #0x280
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E7D48: .word 0x027F8878
arm_func_end sub_027E7CBC
arm_func_start sub_027E7D4C
sub_027E7D4C: ; 0x027E7D4C
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_037FE12C
mov r8, #0
add r7, sp, #8
add r6, sp, #0
mov r5, #0x13
b _027E7DA8
_027E7D78:
mov r0, r7
mov r1, r6
mov r2, r5
bl sub_027E1FCC
mov r4, r0
ldrh r0, [r4, #4]
cmp r0, #0
beq _027E7DB0
cmp r0, #7
cmpne r0, #0xc
bne _027E7DB0
add r8, r8, #1
_027E7DA8:
cmp r8, #2
blt _027E7D78
_027E7DB0:
bl sub_03807380
mov r1, #0x22
strh r1, [r0]
ldrh r1, [r4, #4]
cmp r1, #0
moveq r1, #0
streqh r1, [r0, #2]
beq _027E7DE8
mov r1, #1
strh r1, [r0, #2]
mov r1, #5
strh r1, [r0, #4]
ldrh r1, [r4, #4]
strh r1, [r0, #6]
_027E7DE8:
bl sub_03807334
add sp, sp, #0x208
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
arm_func_end sub_027E7D4C
arm_func_start sub_027E7DF8
sub_027E7DF8: ; 0x027E7DF8
stmdb sp!, {r3, lr}
ldr r3, [r0, #4]
ldr r1, _027E7E44 ; =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_027E7E48
bl sub_03807380
mov r1, #3
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E7E44: .word 0x027F8878
arm_func_end sub_027E7DF8
arm_func_start sub_027E7E48
sub_027E7E48: ; 0x027E7E48
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r1, _027E7FE8 ; =0x027F8878
mov r8, r0
ldr r7, [r1, #0x550]
ldr r4, [r1, #0x54c]
mov r5, #0
bl sub_037FDD00
ldr r1, [r7, #0xc]
mov r6, r0
cmp r1, #1
bne _027E7E88
mov r0, r5
str r0, [r7, #0xc]
mov r5, #1
bl sub_027E5B8C
bl sub_027E0640
_027E7E88:
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_037FE070
bl sub_027E076C
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, _027E7FEC ; =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_037FDD14
cmp r5, #0
beq _027E7F88
ldr r0, _027E7FF0 ; =0x0000FFFF
bl sub_027E781C
_027E7F88:
mov r2, #0
mov r1, #0x8000
_027E7F90:
add r0, r4, r2, lsl #4
add r2, r2, #1
str r1, [r0, #0xd0]
cmp r2, #0x20
blt _027E7F90
add r1, r7, #0x1f8
mov r0, #1
mov r2, #0x100
bl sub_037FDF74
bl sub_027E1C9C
add r0, r7, #0x31c
add r0, r0, #0x400
bl sub_037FC870
bl sub_027E5B78
tst r8, #2
bne _027E7FD8
mov r0, #0xf
bl sub_0380521C
_027E7FD8:
mov r0, #1
strh r0, [r7]
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027E7FE8: .word 0x027F8878
_027E7FEC: .word 0x0000020B
_027E7FF0: .word 0x0000FFFF
arm_func_end sub_027E7E48
arm_func_start sub_027E7FF4
sub_027E7FF4: ; 0x027E7FF4
stmdb sp!, {r4, lr}
ldr r0, _027E8058 ; =0x027F8878
ldr r4, [r0, #0x550]
ldrh r0, [r4]
cmp r0, #1
beq _027E8028
bl sub_03807380
mov r1, #4
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03807334
b _027E8050
_027E8028:
mov r0, #1
bl sub_0380521C
mov r0, #0
strh r0, [r4]
bl sub_03807380
mov r1, #4
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E8050:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E8058: .word 0x027F8878
arm_func_end sub_027E7FF4
arm_func_start sub_027E805C
sub_027E805C: ; 0x027E805C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r0, _027E8100 ; =0x027F8878
ldr r4, [r0, #0x550]
ldrh r0, [r4]
cmp r0, #1
beq _027E8094
bl sub_03807380
mov r1, #5
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03807334
b _027E80F4
_027E8094:
add r0, sp, #2
add r1, sp, #0
bl sub_027E8104
cmp r0, #0
bne _027E80D4
bl sub_03807380
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_03807334
b _027E80F4
_027E80D4:
mov r0, #2
strh r0, [r4]
bl sub_03807380
mov r1, #5
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E80F4:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_027E8100: .word 0x027F8878
arm_func_end sub_027E805C
arm_func_start sub_027E8104
sub_027E8104: ; 0x027E8104
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x200
ldr r2, _027E82EC ; =0x027F8878
mov r7, r0
add r0, sp, #0
mov r6, r1
ldr r5, [r2, #0x550]
bl sub_027E28C8
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E8148
mov r1, #0x304
strh r1, [r7]
ldrh r1, [r0, #4]
mov r0, #0
strh r1, [r6]
b _027E82E0
_027E8148:
add r0, sp, #0
bl sub_027E2898
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E8174
ldr r1, _027E82F0 ; =0x00000302
strh r1, [r7]
ldrh r1, [r0, #4]
mov r0, #0
strh r1, [r6]
b _027E82E0
_027E8174:
ldr r2, _027E82F4 ; =0x04808124
mov r0, #0xc8
strh r0, [r2]
mov r0, #0x7d0
strh r0, [r2, #4]
ldr r1, _027E82F8 ; =0x00000202
add r0, sp, #0
strh r1, [r2, #0x2c]
bl sub_027E2854
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E81BC
ldr r1, _027E82FC ; =0x00000283
strh r1, [r7]
ldrh r1, [r0, #4]
mov r0, #0
strh r1, [r6]
b _027E82E0
_027E81BC:
ldrh r2, [r0, #6]
add r0, r5, #0x100
mov r1, r2, lsl #0xf
strh r2, [r0, #0xf4]
mov r0, r1, lsr #0x10
bl sub_038073D4
add r1, r5, #0x100
strh r0, [r1, #0xf6]
ldr r1, _027E8300 ; =0x0000FFFF
add r0, sp, #0
mov r2, #0x28
mov r3, #5
bl sub_027E25E0
ldr r1, _027E8304 ; =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_027E28F4
mov r4, r0
ldrh r0, [r4, #4]
cmp r0, #0
beq _027E8244
ldr r1, _027E8308 ; =0x00000306
mov r0, #0
strh r1, [r7]
ldrh r1, [r4, #4]
strh r1, [r6]
b _027E82E0
_027E8244:
add r0, r4, #6
add r1, r5, #0x20
mov r2, #8
bl sub_037FDF9C
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_027E283C
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E82A0
ldr r1, _027E830C ; =0x00000281
strh r1, [r7]
ldrh r1, [r0, #4]
mov r0, #0
strh r1, [r6]
b _027E82E0
_027E82A0:
add r0, r0, #6
add r1, r5, #0xe0
mov r2, #6
bl sub_037FE12C
add r0, sp, #0
mov r1, #1
bl sub_027E26A4
ldrh r1, [r0, #4]
cmp r1, #0
moveq r0, #1
beq _027E82E0
ldr r1, _027E8310 ; =0x00000215
strh r1, [r7]
ldrh r1, [r0, #4]
mov r0, #0
strh r1, [r6]
_027E82E0:
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027E82EC: .word 0x027F8878
_027E82F0: .word 0x00000302
_027E82F4: .word 0x04808124
_027E82F8: .word 0x00000202
_027E82FC: .word 0x00000283
_027E8300: .word 0x0000FFFF
_027E8304: .word 0x001FF621
_027E8308: .word 0x00000306
_027E830C: .word 0x00000281
_027E8310: .word 0x00000215
arm_func_end sub_027E8104
arm_func_start sub_027E8314
sub_027E8314: ; 0x027E8314
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x200
ldr r0, _027E83BC ; =0x027F8878
ldr r5, [r0, #0x550]
ldrh r0, [r5]
cmp r0, #2
beq _027E834C
bl sub_03807380
mov r1, #6
strh r1, [r0]
mov r1, #3
strh r1, [r0, #2]
bl sub_03807334
b _027E83B0
_027E834C:
add r0, sp, #0
bl sub_027E2880
mov r4, r0
ldrh r0, [r4, #4]
cmp r0, #0
beq _027E8390
bl sub_03807380
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_03807334
b _027E83B0
_027E8390:
mov r0, #1
strh r0, [r5]
bl sub_03807380
mov r1, #6
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E83B0:
add sp, sp, #0x200
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E83BC: .word 0x027F8878
arm_func_end sub_027E8314
arm_func_start sub_027E83C0
sub_027E83C0: ; 0x027E83C0
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x1c
mov r6, r0
add r1, sp, #0
add r0, r6, #4
bl sub_027E841C
mov r5, r0
bl sub_03807380
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_037FE12C
mov r0, r4
bl sub_03807334
add sp, sp, #0x1c
ldmia sp!, {r3, r4, r5, r6, lr}
bx lr
arm_func_end sub_027E83C0
arm_func_start sub_027E841C
sub_027E841C: ; 0x027E841C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _027E872C ; =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 _027E8460
tst r7, #0x2c00
bicne r7, r7, #0x2c00
movne r6, #3
_027E8460:
bl sub_037FDD00
mov r5, r0
cmp sb, #0
beq _027E84E8
ldr r0, _027E8730 ; =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]
_027E84E8:
tst r7, #1
beq _027E8508
ldrh r1, [r4, #4]
add r0, r8, #0x700
cmp r1, #0
moveq r1, #0x10
strh r1, [r8, #0x58]
strh r1, [r0, #0xc0]
_027E8508:
tst r7, #2
beq _027E8534
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]
_027E8534:
tst r7, #4
beq _027E8560
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]
_027E8560:
tst r7, #8
beq _027E858C
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 _027E858C
bl sub_027E0840
_027E858C:
tst r7, #0x10
beq _027E85B8
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 _027E85B8
bl sub_027E086C
_027E85B8:
tst r7, #0x20
beq _027E860C
ldrh r0, [r4, #0xe]
ldr r1, _027E8734 ; =0x00002710
cmp r0, r1
movhi r6, #6
bhi _027E860C
ldr r1, _027E8738 ; =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]
_027E860C:
tst r7, #0x40
beq _027E8660
ldrh r0, [r4, #0x10]
ldr r1, _027E8734 ; =0x00002710
cmp r0, r1
movhi r6, #6
bhi _027E8660
ldr r1, _027E8738 ; =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]
_027E8660:
tst r7, #0x80
beq _027E8694
ldrh r1, [r4, #0x12]
cmp r1, #0xbe
bls _027E8688
cmp r1, #0xdc
blo _027E8690
ldr r0, _027E873C ; =0x00000106
cmp r1, r0
bhi _027E8690
_027E8688:
strh r1, [r8, #0x40]
b _027E8694
_027E8690:
mov r6, #6
_027E8694:
tst r7, #0x100
beq _027E86C8
ldrh r1, [r4, #0x14]
cmp r1, #0xbe
bls _027E86BC
cmp r1, #0xdc
blo _027E86C4
ldr r0, _027E873C ; =0x00000106
cmp r1, r0
bhi _027E86C4
_027E86BC:
strh r1, [r8, #0x42]
b _027E86C8
_027E86C4:
mov r6, #6
_027E86C8:
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_037FDD14
mov r0, r6
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_027E872C: .word 0x027F8878
_027E8730: .word 0x00003FFF
_027E8734: .word 0x00002710
_027E8738: .word 0x000082EA
_027E873C: .word 0x00000106
arm_func_end sub_027E841C
arm_func_start sub_027E8740
sub_027E8740: ; 0x027E8740
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_027E275C
ldrh r4, [r0, #4]
cmp r4, #0
beq _027E8790
bl sub_03807380
mov r1, #0x24
strh r1, [r0]
mov r2, #1
ldr r1, _027E87B4 ; =0x00000242
strh r2, [r0, #2]
strh r1, [r0, #4]
strh r4, [r0, #6]
bl sub_03807334
b _027E87A8
_027E8790:
bl sub_03807380
mov r1, #0x24
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bl sub_03807334
_027E87A8:
add sp, sp, #0x200
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E87B4: .word 0x00000242
arm_func_end sub_027E8740
arm_func_start sub_027E87B8
sub_027E87B8: ; 0x027E87B8
ldr ip, _027E87C8 ; =sub_027E44FC
mov r1, #1
mov r2, #0
bx ip
.align 2, 0
_027E87C8: .word sub_027E44FC
arm_func_end sub_027E87B8
arm_func_start sub_027E87CC
sub_027E87CC: ; 0x027E87CC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x230
ldr r1, _027E8948 ; =0x027F8878
mov r7, r0
ldr r6, [r1, #0x550]
add r5, sp, #0x30
bl sub_03807380
mov r4, r0
mov r1, #0x28
strh r1, [r4]
ldrh r1, [r6]
cmp r1, #0xb
beq _027E8810
mov r1, #3
strh r1, [r4, #2]
bl sub_03807334
b _027E893C
_027E8810:
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_027E1DBC
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E8864
mov r1, #1
strh r1, [r4, #2]
strh r1, [r4, #4]
ldrh r1, [r0, #4]
mov r0, r4
strh r1, [r4, #6]
bl sub_03807334
b _027E893C
_027E8864:
ldr r0, _027E8948 ; =0x027F8878
mov r2, #6
ldr r5, [r0, #0x550]
add r0, r5, #0x8a
add r0, r0, #0x100
add r1, r5, #0xa2
bl sub_037FE12C
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_037FDF74
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_037FE12C
add r1, sp, #0x1e
add r0, r5, #0xe0
mov r2, #6
bl sub_037FE12C
add r0, sp, #0x30
str r0, [sp, #0x2c]
add r1, sp, #0
bl sub_027E2200
ldrh r1, [r0, #4]
cmp r1, #0
beq _027E892C
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_03807334
b _027E893C
_027E892C:
mov r1, #0
mov r0, r4
strh r1, [r4, #2]
bl sub_03807334
_027E893C:
add sp, sp, #0x230
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027E8948: .word 0x027F8878
arm_func_end sub_027E87CC
arm_func_start sub_027E894C
sub_027E894C: ; 0x027E894C
stmdb sp!, {r3, lr}
bl sub_03807380
mov r1, #0x29
strh r1, [r0]
mov r1, #4
strh r1, [r0, #2]
bl sub_03807334
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027E894C
arm_func_start sub_027E8970
sub_027E8970: ; 0x027E8970
stmdb sp!, {r3, lr}
bl sub_03807380
mov r1, #0x2a
strh r1, [r0]
mov r1, #4
strh r1, [r0, #2]
bl sub_03807334
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027E8970
arm_func_start sub_027E8994
sub_027E8994: ; 0x027E8994
stmdb sp!, {r3, lr}
bl sub_027EABE0
bl sub_027E9CF4
bl sub_027EA720
bl sub_027E8D44
bl sub_027E8BC4
ldr r0, _027E89DC ; =0x0380FFF4
ldr r0, [r0]
add r1, r0, #0x300
ldr r0, [r0, #0x31c]
ldrh r1, [r1, #0x20]
bl sub_027E8DDC
bl sub_027EC6E4
bl sub_027EE0B0
bl sub_027EC474
bl sub_027E97B0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E89DC: .word 0x0380FFF4
arm_func_end sub_027E8994
arm_func_start sub_027E89E0
sub_027E89E0: ; 0x027E89E0
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0xc
mov r4, r0
ldr r1, [r4]
ldr r3, _027E8BA0 ; =0x0380FFF4
ldr r2, _027E8BA4 ; =0x00000694
mov r0, #0
str r1, [r3]
bl sub_037FE014
bl sub_037FBBFC
ldr r2, _027E8BA0 ; =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_027E8C6C
bl sub_027F4EC0
ldr r3, _027E8BA8 ; =0x04000304
ldr r1, _027E8BA0 ; =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_027F4E10
ldr r1, _027E8BA0 ; =0x0380FFF4
mov r0, #0x3e
ldr r2, [r1]
mov r1, #2
add r2, r2, #0x690
bl sub_027F4E10
ldr r2, _027E8BA0 ; =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_03806DD4
mov r1, r0
ldr r0, [r4, #0x2c]
bl sub_027E8DDC
bl sub_027E8BC4
bl sub_027EC6E4
bl sub_027EE0B0
bl sub_027EC474
bl sub_027EA948
add r0, sp, #8
bl sub_027F4D2C
cmp r0, #0
beq _027E8B1C
ldr r0, _027E8BA0 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x3e]
orr r1, r1, #0x80
strh r1, [r0, #0x3e]
b _027E8B44
_027E8B1C:
bl sub_027EA6B0
bl sub_027EB220
bl sub_027E9D7C
bl sub_027EA720
bl sub_027EA7C0
bl sub_027EB3C4
bl sub_027EB550
bl sub_027EA758
bl sub_027E97B0
bl sub_027E9CF4
_027E8B44:
ldr r1, [r4, #8]
ldr r0, _027E8BA0 ; =0x0380FFF4
str r1, [sp]
ldr r2, [r4, #0xc]
ldr r1, _027E8BAC ; =0x037F84E0
str r2, [sp, #4]
ldr r0, [r0]
ldr r3, [r4, #4]
add r0, r0, #0x18
mov r2, #0
bl sub_037FC054
ldr r0, _027E8BA0 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x18
bl sub_037FC36C
bl sub_027EB8BC
ldr r0, _027E8BA0 ; =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
_027E8BA0: .word 0x0380FFF4
_027E8BA4: .word 0x00000694
_027E8BA8: .word 0x04000304
_027E8BAC: .word 0x037F84E0
arm_func_end sub_027E89E0
arm_func_start sub_027E8BB0
sub_027E8BB0: ; 0x027E8BB0
ldr r0, _027E8BC0 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x18
bx lr
.align 2, 0
_027E8BC0: .word 0x0380FFF4
arm_func_end sub_027E8BB0
arm_func_start sub_027E8BC4
sub_027E8BC4: ; 0x027E8BC4
stmdb sp!, {r4, lr}
ldr r0, _027E8C44 ; =0x0380FFF4
mov r3, #0
ldr lr, [r0]
ldr r2, _027E8C48 ; =0x0000FFFF
strh r3, [lr, #0x10]
strh r3, [lr, #0x12]
_027E8BE0:
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 _027E8BE0
ldr ip, _027E8C48 ; =0x0000FFFF
mov r4, #0
ldr r1, _027E8C4C ; =0x027F723C
mov r2, r4
_027E8C10:
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 _027E8C10
mov r0, #3
mov r1, #0xc
bl sub_037F8598
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E8C44: .word 0x0380FFF4
_027E8C48: .word 0x0000FFFF
_027E8C4C: .word 0x027F723C
arm_func_end sub_027E8BC4
arm_func_start sub_027E8C50
sub_027E8C50: ; 0x027E8C50
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_027E8C50
arm_func_start sub_027E8C6C
sub_027E8C6C: ; 0x027E8C6C
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _027E8D40 ; =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_027E8C50
add r0, r4, #0x194
mov r1, #3
bl sub_027E8C50
add r0, r4, #0x1a0
mov r1, #4
bl sub_027E8C50
add r0, r4, #0x1ac
mov r1, #5
bl sub_027E8C50
add r0, r4, #0x1b8
mov r1, #6
bl sub_027E8C50
add r0, r4, #0x1c4
mov r1, #7
bl sub_027E8C50
add r0, r4, #0x1d0
mov r1, #8
bl sub_027E8C50
add r0, r4, #0x1dc
mov r1, #9
bl sub_027E8C50
add r0, r4, #0x1e8
mov r1, #0xa
bl sub_027E8C50
add r0, r4, #0x1f4
mov r1, #0xb
bl sub_027E8C50
add r0, r4, #0x200
mov r1, #0xc
bl sub_027E8C50
add r0, r4, #0x188
mov r1, #0x81
bl sub_037F886C
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
_027E8D40: .word 0x0380FFF4
arm_func_end sub_027E8C6C
arm_func_start sub_027E8D44
sub_027E8D44: ; 0x027E8D44
stmdb sp!, {r4, lr}
ldr r0, _027E8D98 ; =0x0380FFF4
ldr r4, [r0]
add r0, r4, #0x194
bl sub_027E8D9C
add r0, r4, #0x1a0
bl sub_027E8D9C
add r0, r4, #0x1ac
bl sub_027E8D9C
add r0, r4, #0x1b8
bl sub_027E8D9C
add r0, r4, #0x1c4
bl sub_027E8D9C
add r0, r4, #0x1d0
bl sub_027E8D9C
add r0, r4, #0x1dc
bl sub_027E8D9C
add r0, r4, #0x1e8
bl sub_027E8D9C
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E8D98: .word 0x0380FFF4
arm_func_end sub_027E8D44
arm_func_start sub_027E8D9C
sub_027E8D9C: ; 0x027E8D9C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldrh r0, [r6, #8]
ldr r1, [r6]
cmp r0, #0
beq _027E8DD4
mvn r4, #0
b _027E8DCC
_027E8DBC:
ldr r5, [r1, #4]
mov r0, r6
bl sub_037F8908
mov r1, r5
_027E8DCC:
cmp r1, r4
bne _027E8DBC
_027E8DD4:
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_027E8D9C
arm_func_start sub_027E8DDC
sub_027E8DDC: ; 0x027E8DDC
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _027E8E58 ; =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_037FDF74
ldr r1, _027E8E58 ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
mov r2, #0xc0
add r1, r1, #0x344
bl sub_037FDF74
ldr r3, _027E8E58 ; =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
_027E8E58: .word 0x0380FFF4
arm_func_end sub_027E8DDC
arm_func_start sub_027E8E5C
sub_027E8E5C: ; 0x027E8E5C
stmdb sp!, {r4, lr}
mov r4, r0
ldrh r0, [r4]
tst r0, #1
movne r0, #5
bne _027E8EAC
ldr r0, _027E8EB4 ; =0x0380FFF4
mov r1, r4
ldr r0, [r0]
add r0, r0, #0x324
bl sub_027EA0E0
ldr r0, _027E8EB8 ; =0x04808018
mov r1, r4
bl sub_027EA0E0
ldr r1, _027E8EB4 ; =0x0380FFF4
mov r0, #0
ldr r2, [r1]
ldr r1, [r2, #0x340]
orr r1, r1, #2
str r1, [r2, #0x340]
_027E8EAC:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E8EB4: .word 0x0380FFF4
_027E8EB8: .word 0x04808018
arm_func_end sub_027E8E5C
arm_func_start sub_027E8EBC
sub_027E8EBC: ; 0x027E8EBC
cmp r0, #0xff
movhi r0, #5
bxhi lr
ldr r1, _027E8EE8 ; =0x0380FFF4
ldr r2, _027E8EEC ; =0x0480802C
ldr r1, [r1]
add r1, r1, #0x300
strh r0, [r1, #0x2a]
strh r0, [r2]
mov r0, #0
bx lr
.align 2, 0
_027E8EE8: .word 0x0380FFF4
_027E8EEC: .word 0x0480802C
arm_func_end sub_027E8EBC
arm_func_start sub_027E8EF0
sub_027E8EF0: ; 0x027E8EF0
ldr r1, _027E8F28 ; =0x00007FFE
tst r0, r1
moveq r0, #5
bxeq lr
ldr r2, _027E8F2C ; =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
_027E8F28: .word 0x00007FFE
_027E8F2C: .word 0x0380FFF4
arm_func_end sub_027E8EF0
arm_func_start sub_027E8F30
sub_027E8F30: ; 0x027E8F30
stmdb sp!, {r3, lr}
cmp r0, #3
movhi r0, #5
bhi _027E8F9C
ldr ip, _027E8FA4 ; =0x0380FFF4
ldr r3, _027E8FA8 ; =0x04808006
ldr r1, [ip]
ldr r2, _027E8FAC ; =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_027E9C4C
ldr r1, _027E8FA4 ; =0x0380FFF4
mov r0, #0
ldr r2, [r1]
ldr r1, [r2, #0x340]
orr r1, r1, #8
str r1, [r2, #0x340]
_027E8F9C:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E8FA4: .word 0x0380FFF4
_027E8FA8: .word 0x04808006
_027E8FAC: .word 0x0000FFF8
arm_func_end sub_027E8F30
arm_func_start sub_027E8FB0
sub_027E8FB0: ; 0x027E8FB0
stmdb sp!, {r3, lr}
cmp r0, #2
movhi r0, #5
bhi _027E8FD8
ldr r1, _027E8FE0 ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x300
strh r0, [r1, #0x30]
bl sub_027E9BCC
mov r0, #0
_027E8FD8:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E8FE0: .word 0x0380FFF4
arm_func_end sub_027E8FB0
arm_func_start sub_027E8FE4
sub_027E8FE4: ; 0x027E8FE4
ldr r1, _027E9078 ; =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, _027E907C ; =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, _027E9078 ; =0x0380FFF4
ldreqh r2, [r2, #0x7c]
ldreq r1, [r1]
ldreq r1, [r1, #0x4ac]
streqh r2, [r1, #0x2e]
cmp r0, #0
ldr r1, _027E9080 ; =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
_027E9078: .word 0x0380FFF4
_027E907C: .word 0x04808006
_027E9080: .word 0x0000FFC7
arm_func_end sub_027E8FE4
arm_func_start sub_027E9084
sub_027E9084: ; 0x027E9084
cmp r0, #3
ldrls r1, _027E90A4 ; =0x0380FFF4
movhi r0, #5
ldrls r1, [r1]
addls r1, r1, #0x300
strlsh r0, [r1, #0x36]
movls r0, #0
bx lr
.align 2, 0
_027E90A4: .word 0x0380FFF4
arm_func_end sub_027E9084
arm_func_start sub_027E90A8
sub_027E90A8: ; 0x027E90A8
stmdb sp!, {r4, lr}
ldr r1, _027E90F8 ; =0x04805F80
mov r2, #0x14
mov r4, r0
bl sub_037FDF9C
ldr r1, _027E90FC ; =0x04805FA0
add r0, r4, #0x14
mov r2, #0x14
bl sub_037FDF9C
ldr r1, _027E9100 ; =0x04805FC0
add r0, r4, #0x28
mov r2, #0x14
bl sub_037FDF9C
ldr r1, _027E9104 ; =0x04805FE0
add r0, r4, #0x3c
mov r2, #0x14
bl sub_037FDF9C
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E90F8: .word 0x04805F80
_027E90FC: .word 0x04805FA0
_027E9100: .word 0x04805FC0
_027E9104: .word 0x04805FE0
arm_func_end sub_027E90A8
arm_func_start sub_027E9108
sub_027E9108: ; 0x027E9108
cmp r0, #1
movhi r0, #5
bxhi lr
ldr r1, _027E913C ; =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
_027E913C: .word 0x0380FFF4
arm_func_end sub_027E9108
arm_func_start sub_027E9140
sub_027E9140: ; 0x027E9140
cmp r0, #1
movhi r0, #5
bxhi lr
ldr r1, _027E9174 ; =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
_027E9174: .word 0x0380FFF4
arm_func_end sub_027E9140
arm_func_start sub_027E9178
sub_027E9178: ; 0x027E9178
cmp r0, #0xff
movhi r0, #5
bxhi lr
ldr r2, _027E91AC ; =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
_027E91AC: .word 0x0380FFF4
arm_func_end sub_027E9178
arm_func_start sub_027E91B0
sub_027E91B0: ; 0x027E91B0
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
cmp r4, #0xa
movlo r0, #5
blo _027E9250
ldr r0, _027E9258 ; =0x0380FFF4
cmp r1, #0
ldr r0, [r0]
add r0, r0, #0x300
strh r4, [r0, #0x3c]
ldrne r0, _027E925C ; =0x04808134
strneh r4, [r0]
ldr r0, _027E9258 ; =0x0380FFF4
ldr r1, [r0]
add r0, r1, #0x400
ldrh r0, [r0, #0xa4]
cmp r0, #0
beq _027E924C
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 _027E9238
and r1, r4, #0xff
bl sub_027EAD24
mov r1, r4, asr #8
add r0, r5, #7
and r1, r1, #0xff
bl sub_027EAD24
b _027E924C
_027E9238:
mov r1, #0xff
bl sub_027EAD24
add r0, r5, #7
mov r1, #0xff
bl sub_027EAD24
_027E924C:
mov r0, #0
_027E9250:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E9258: .word 0x0380FFF4
_027E925C: .word 0x04808134
arm_func_end sub_027E91B0
arm_func_start sub_027E9260
sub_027E9260: ; 0x027E9260
ldr r1, _027E928C ; =0x0380FFF4
mov r2, #0
ldr r1, [r1]
add r3, r1, #0x384
_027E9270:
ldrh r1, [r0], #2
add r2, r2, #1
cmp r2, #0x10
strh r1, [r3], #2
blo _027E9270
mov r0, #0
bx lr
.align 2, 0
_027E928C: .word 0x0380FFF4
arm_func_end sub_027E9260
arm_func_start sub_027E9290
sub_027E9290: ; 0x027E9290
stmdb sp!, {r3, lr}
ldr r1, _027E9330 ; =0x0380FFF4
cmp r0, #1
ldr r2, [r1]
movhi r0, #5
add r1, r2, #0x344
bhi _027E9328
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, _027E9330 ; =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, _027E9334 ; =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_027E9BCC
mov r0, #0
_027E9328:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E9330: .word 0x0380FFF4
_027E9334: .word 0x048080BC
arm_func_end sub_027E9290
arm_func_start sub_027E9338
sub_027E9338: ; 0x027E9338
cmp r0, #1
ldrls r1, _027E9358 ; =0x0380FFF4
movhi r0, #5
ldrls r1, [r1]
addls r1, r1, #0x300
strlsh r0, [r1, #0x32]
movls r0, #0
bx lr
.align 2, 0
_027E9358: .word 0x0380FFF4
arm_func_end sub_027E9338
arm_func_start sub_027E935C
sub_027E935C: ; 0x027E935C
stmdb sp!, {r4, lr}
cmp r0, #3
mov r4, r1
movhi r0, #5
bhi _027E9398
cmp r4, #0x3f
movhi r0, #5
bhi _027E9398
mov r1, r0
mov r0, #0x13
bl sub_027EA5F0
mov r1, r4
mov r0, #0x35
bl sub_027EA5F0
mov r0, #0
_027E9398:
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027E935C
arm_func_start sub_027E93A0
sub_027E93A0: ; 0x027E93A0
cmp r0, #1
movhi r0, #5
bxhi lr
ldr r3, _027E9400 ; =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, _027E9404 ; =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
_027E9400: .word 0x0380FFF4
_027E9404: .word 0x04808290
arm_func_end sub_027E93A0
arm_func_start sub_027E9408
sub_027E9408: ; 0x027E9408
cmp r0, #1
cmpls r1, #1
movhi r0, #5
bxhi lr
cmp r0, #0
beq _027E942C
cmp r0, #1
beq _027E9458
b _027E9480
_027E942C:
ldr r2, _027E94D4 ; =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 _027E9480
_027E9458:
ldr r1, _027E94D4 ; =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]
_027E9480:
ldr r3, _027E94D4 ; =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, _027E94D8 ; =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
_027E94D4: .word 0x0380FFF4
_027E94D8: .word 0x04808290
arm_func_end sub_027E9408
arm_func_start sub_027E94DC
sub_027E94DC: ; 0x027E94DC
cmp r0, #1
movhi r0, #5
bxhi lr
ldr r1, _027E9518 ; =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
_027E9518: .word 0x0380FFF4
arm_func_end sub_027E94DC
arm_func_start sub_027E951C
sub_027E951C: ; 0x027E951C
cmp r0, #1
movhi r0, #5
bxhi lr
ldr r2, _027E9564 ; =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, _027E9568 ; =0x0480802A
ldreqh r0, [r1]
streqh r0, [r1, #-2]
mov r0, #0
bx lr
.align 2, 0
_027E9564: .word 0x0380FFF4
_027E9568: .word 0x0480802A
arm_func_end sub_027E951C
arm_func_start sub_027E956C
sub_027E956C: ; 0x027E956C
stmdb sp!, {r4, lr}
ldr r1, _027E95C4 ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
mov r1, r4
add r0, r0, #0x3a8
bl sub_027EA0E0
ldr r0, _027E95C8 ; =0x04808020
mov r1, r4
bl sub_027EA0E0
ldrh r0, [r4]
ldr r1, _027E95CC ; =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
_027E95C4: .word 0x0380FFF4
_027E95C8: .word 0x04808020
_027E95CC: .word 0x048080D0
arm_func_end sub_027E956C
arm_func_start sub_027E95D0
sub_027E95D0: ; 0x027E95D0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _027E96DC ; =0x0380FFF4
mov r8, r0
ldr r2, [r2]
cmp r8, #0x20
mov r7, r1
add r4, r2, #0x344
mov r6, #0
movhi r0, #5
bhi _027E96D4
ldrh r0, [r4, #8]
cmp r0, #0x40
addeq r0, r2, #0x300
ldreqh r0, [r0, #0x2e]
cmpeq r0, #1
bne _027E962C
ldrh r0, [r4, #0x1e]
cmp r0, r8
movne r0, #6
bne _027E96D4
ldrh r0, [r4, #0x92]
cmp r0, #0
movne r6, #1
_027E962C:
mov r5, #0
add sb, r4, #0x20
b _027E9654
_027E9638:
mov r0, r7
bl sub_027EAD50
mov r1, r0
add r0, sb, r5
bl sub_027EAD24
add r7, r7, #1
add r5, r5, #1
_027E9654:
cmp r5, r8
blo _027E9638
add sb, r4, #0x20
mov r7, #0
b _027E9678
_027E9668:
mov r1, r7
add r0, sb, r5
bl sub_027EAD24
add r5, r5, #1
_027E9678:
cmp r5, #0x20
blo _027E9668
strh r8, [r4, #0x1e]
cmp r6, #0
beq _027E96D0
ldr r1, _027E96DC ; =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 _027E96C8
_027E96B0:
add r0, r4, r5
bl sub_027EAD50
mov r1, r0
add r0, r6, r5
bl sub_027EAD24
add r5, r5, #1
_027E96C8:
cmp r5, r8
blo _027E96B0
_027E96D0:
mov r0, #0
_027E96D4:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_027E96DC: .word 0x0380FFF4
arm_func_end sub_027E95D0
arm_func_start sub_027E96E0
sub_027E96E0: ; 0x027E96E0
stmdb sp!, {r3, lr}
cmp r0, #0xa
blo _027E96F4
cmp r0, #0x3e8
bls _027E96FC
_027E96F4:
mov r0, #5
b _027E9728
_027E96FC:
ldr r3, _027E9730 ; =0x0380FFF4
ldr r2, _027E9734 ; =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_027E9E30
mov r0, #0
_027E9728:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E9730: .word 0x0380FFF4
_027E9734: .word 0x0480808C
arm_func_end sub_027E96E0
arm_func_start sub_027E9738
sub_027E9738: ; 0x027E9738
cmp r0, #1
blo _027E9748
cmp r0, #0xff
bls _027E9750
_027E9748:
mov r0, #5
bx lr
_027E9750:
ldr r1, _027E9774 ; =0x0380FFF4
ldr r2, _027E9778 ; =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
_027E9774: .word 0x0380FFF4
_027E9778: .word 0x0480808E
arm_func_end sub_027E9738
arm_func_start sub_027E977C
sub_027E977C: ; 0x027E977C
cmp r0, #1
blo _027E978C
cmp r0, #0xff
bls _027E9794
_027E978C:
mov r0, #5
bx lr
_027E9794:
ldr r1, _027E97AC ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x300
strh r0, [r1, #0xb4]
mov r0, #0
bx lr
.align 2, 0
_027E97AC: .word 0x0380FFF4
arm_func_end sub_027E977C
arm_func_start sub_027E97B0
sub_027E97B0: ; 0x027E97B0
stmdb sp!, {r3, lr}
sub sp, sp, #8
add r2, sp, #2
mov r0, #0x36
mov r1, #6
bl sub_027F4E10
add r2, sp, #0
mov r0, #0x3c
mov r1, #2
bl sub_027F4E10
add r0, sp, #2
bl sub_027E8E5C
mov r0, #7
bl sub_027E8EBC
ldrh r1, [sp]
ldr r0, _027E98E4 ; =0x00007FFE
and r0, r1, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_027E8EF0
mov r0, #2
bl sub_027E8F30
mov r0, #0
bl sub_027E8FB0
mov r0, #0
bl sub_027E8FE4
mov r0, #0
bl sub_027E9084
ldr r0, _027E98E8 ; =0x027F7300
bl sub_027E90A8
mov r0, #0x1f4
bl sub_027E96E0
mov r0, #0
bl sub_027E9108
mov r0, #0
bl sub_027E9140
mov r0, #0x10
bl sub_027E9178
ldr r0, _027E98EC ; =0x0000FFFF
mov r1, #0
bl sub_027E91B0
ldr r0, _027E98F0 ; =0x027F72A0
bl sub_027E9260
mov r0, #1
bl sub_027E9290
mov r0, #0
bl sub_027E9338
ldr r0, _027E98F4 ; =0x027F729C
bl sub_027E9B8C
mov r0, #0
mov r1, #0x1f
bl sub_027E935C
mov r0, #5
bl sub_027E9E30
mov r0, #0
mov r1, r0
bl sub_027E9408
mov r0, #0
bl sub_027E93A0
mov r0, #0
bl sub_027E94DC
mov r0, #0
bl sub_027E951C
ldr r1, _027E98F8 ; =0x04808044
ldrh r2, [r1]
ldrh r0, [r1]
ldrh r1, [r1]
add r0, r2, r0, lsl #8
bl sub_027EAD6C
ldr r0, _027E98FC ; =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
_027E98E4: .word 0x00007FFE
_027E98E8: .word 0x027F7300
_027E98EC: .word 0x0000FFFF
_027E98F0: .word 0x027F72A0
_027E98F4: .word 0x027F729C
_027E98F8: .word 0x04808044
_027E98FC: .word 0x0380FFF4
arm_func_end sub_027E97B0
arm_func_start sub_027E9900
sub_027E9900: ; 0x027E9900
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
mov sl, r0
ldr r0, _027E9B7C ; =0x0380FFF4
cmp r1, #0
ldr r0, [r0]
ldrne sb, _027E9B80 ; =0x027F4E70
add r0, r0, #0x300
ldrh r0, [r0, #0x2c]
ldreq sb, _027E9B84 ; =sub_027F4E10
mov r2, #1
tst r0, r2, lsl sl
moveq r0, #5
beq _027E9B70
ldr r1, _027E9B88 ; =0x04808040
add r0, r2, #0x8000
ldrh r6, [r1]
strh r0, [r1]
sub r3, r1, #4
add r1, r1, #0x1d4
_027E9950:
ldrh r2, [r3]
ldrh r0, [r1]
mov r2, r2, asr #8
cmp r2, #2
bne _027E9950
cmp r0, #0
cmpne r0, #9
bne _027E9950
ldr r5, _027E9B7C ; =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 _027E99A4
cmp r1, #3
beq _027E9A74
cmp r1, #5
bne _027E9B5C
_027E99A4:
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
_027E99CC:
ldr r0, [sp, #4]
bl sub_027EA620
add r2, sp, #4
add r0, r5, #0xf5
mov r1, #3
mov lr, pc
bx sb
_027E99E8:
ldr r0, [sp, #4]
bl sub_027EA620
mov r1, #0
ldr r0, _027E9B7C ; =0x0380FFF4
str r1, [sp, #4]
ldr r0, [r0]
ldr r0, [r0, #0x604]
tst r0, #0x10000
beq _027E9A4C
tst r0, #0x8000
bne _027E9B5C
add r2, sp, #4
add r0, r4, #0x154
mov r1, #1
mov lr, pc
bx sb
sub_027E9A28: ; 0x027E9A28
ldr r1, _027E9B7C ; =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_027EA620
b _027E9B5C
_027E9A4C:
add r0, r4, #0x46
add r2, sp, #4
add r0, r0, #0x100
mov r1, #1
mov lr, pc
bx sb
_027E9A64:
ldr r1, [sp, #4]
mov r0, #0x1e
bl sub_027EA5F0
b _027E9B5C
_027E9A74:
ldrh r0, [r0, #0xfc]
mov r8, #0
add r7, r0, #0xcf
mov r4, r8
mov fp, #1
b _027E9AD0
_027E9A8C:
mov r0, r7
mov r1, fp
add r2, sp, #0
str r4, [sp, #4]
str r4, [sp]
mov lr, pc
bx sb
_027E9AA8:
add r0, r7, sl
mov r1, #1
add r2, sp, #4
mov lr, pc
bx sb
_027E9ABC:
ldr r0, [sp]
ldr r1, [sp, #4]
bl sub_027EA5F0
add r7, r7, #0xf
add r8, r8, #1
_027E9AD0:
ldr r0, [r5]
add r0, r0, #0x600
ldrh r0, [r0]
cmp r8, r0
blo _027E9A8C
mov r8, #0
ldr r4, _027E9B7C ; =0x0380FFF4
mov r5, r8
mov fp, #1
b _027E9B48
_027E9AF8:
str r5, [sp, #4]
mov r0, r7
mov r1, fp
add r2, sp, #4
mov lr, pc
bx sb
_027E9B10:
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
_027E9B30:
ldr r0, [sp, #4]
orr r0, r0, #0x50000
str r0, [sp, #4]
bl sub_027EA620
add r7, r7, #0xf
add r8, r8, #1
_027E9B48:
ldr r0, [r4]
add r0, r0, #0x500
ldrh r0, [r0, #0xfe]
cmp r8, r0
blo _027E9AF8
_027E9B5C:
ldr r1, _027E9B88 ; =0x04808040
mov r0, #3
strh r6, [r1]
strh r0, [r1, #8]
mov r0, #0
_027E9B70:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027E9B7C: .word 0x0380FFF4
_027E9B80: .word 0x027F4E70
_027E9B84: .word sub_027F4E10
_027E9B88: .word 0x04808040
arm_func_end sub_027E9900
arm_func_start sub_027E9B8C
sub_027E9B8C: ; 0x027E9B8C
stmdb sp!, {r3, lr}
ldr r1, _027E9BC8 ; =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_027E9BCC
mov r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E9BC8: .word 0x0380FFF4
arm_func_end sub_027E9B8C
arm_func_start sub_027E9BCC
sub_027E9BCC: ; 0x027E9BCC
stmdb sp!, {r3, lr}
ldr r0, _027E9C40 ; =0x0000E2E2
add r2, sp, #0
str r0, [sp]
mov r0, #0x58
mov r1, #2
bl sub_027F4E10
ldr r0, [sp]
add r0, r0, #2
add r0, r0, #0x200
str r0, [sp]
bl sub_027EA578
cmp r0, #0x14
bne _027E9C2C
ldr r1, [sp]
ldr r0, _027E9C44 ; =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]
_027E9C2C:
ldr r1, [sp]
ldr r0, _027E9C48 ; =0x04808140
strh r1, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E9C40: .word 0x0000E2E2
_027E9C44: .word 0x048080BC
_027E9C48: .word 0x04808140
arm_func_end sub_027E9BCC
arm_func_start sub_027E9C4C
sub_027E9C4C: ; 0x027E9C4C
stmdb sp!, {r3, lr}
ldr r1, _027E9CAC ; =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, _027E9CB0 ; =0x04808006
ldrneh r0, [r1]
orrne r0, r0, #0x40
strneh r0, [r1]
bne _027E9CA0
ldr r2, _027E9CB0 ; =0x04808006
mov r1, #0
ldrh r0, [r2]
bic r0, r0, #0x40
strh r0, [r2]
ldrh r0, [r3, #0x20]
bl sub_027E91B0
_027E9CA0:
mov r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E9CAC: .word 0x0380FFF4
_027E9CB0: .word 0x04808006
arm_func_end sub_027E9C4C
arm_func_start sub_027E9CB4
sub_027E9CB4: ; 0x027E9CB4
ldr r1, _027E9CD8 ; =0x0380FFF4
ldr r2, _027E9CDC ; =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
_027E9CD8: .word 0x0380FFF4
_027E9CDC: .word 0x0480803C
arm_func_end sub_027E9CB4
arm_func_start sub_027E9CE0
sub_027E9CE0: ; 0x027E9CE0
ldr r1, _027E9CF0 ; =0x04808040
strh r0, [r1]
mov r0, #0
bx lr
.align 2, 0
_027E9CF0: .word 0x04808040
arm_func_end sub_027E9CE0
arm_func_start sub_027E9CF4
sub_027E9CF4: ; 0x027E9CF4
stmdb sp!, {r3, lr}
ldr r0, _027E9D5C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x500
ldrh r0, [r0, #0xf8]
cmp r0, #2
bne _027E9D18
ldr r0, _027E9D60 ; =0x0000C008
bl sub_027EA620
_027E9D18:
ldr r1, _027E9D64 ; =0x0000601E
ldr r0, _027E9D68 ; =0x04808158
strh r1, [r0]
bl sub_037FB420
ldr r1, _027E9D6C ; =0x0480815C
mov r0, #0x1e
ldrh r1, [r1]
orr r1, r1, #0x3f
bl sub_027EA5F0
ldr r2, _027E9D70 ; =0x0000800D
ldr r1, _027E9D74 ; =0x04808168
ldr r0, _027E9D78 ; =0x04808036
strh r2, [r1]
mov r1, #1
strh r1, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027E9D5C: .word 0x0380FFF4
_027E9D60: .word 0x0000C008
_027E9D64: .word 0x0000601E
_027E9D68: .word 0x04808158
_027E9D6C: .word 0x0480815C
_027E9D70: .word 0x0000800D
_027E9D74: .word 0x04808168
_027E9D78: .word 0x04808036
arm_func_end sub_027E9CF4
arm_func_start sub_027E9D7C
sub_027E9D7C: ; 0x027E9D7C
stmdb sp!, {r4, lr}
ldr r2, _027E9E14 ; =0x04808036
mov r3, #0
ldr r1, _027E9E18 ; =0x027EA99C
mov r0, #0x1f40
strh r3, [r2]
bl sub_037FB32C
ldr r1, _027E9E1C ; =0x04808168
mov r2, #0
ldr r0, _027E9E20 ; =0x0380FFF4
strh r2, [r1]
ldr r0, [r0]
add r0, r0, #0x500
ldrh r0, [r0, #0xf8]
cmp r0, #2
beq _027E9DC8
cmp r0, #3
beq _027E9E08
b _027E9E0C
_027E9DC8:
ldr r0, _027E9E24 ; =0x00006001
strh r0, [r1, #-0x10]
bl sub_037FB420
ldr r1, _027E9E28 ; =0x0480815C
mov r0, #1
ldrh r4, [r1]
and r1, r4, #0x7f
bl sub_027EA5F0
mov r1, r4
mov r0, #1
bl sub_027EA5F0
ldr r0, _027E9E2C ; =0x00009C40
ldr r1, _027E9E18 ; =0x027EA99C
bl sub_037FB32C
bl sub_027EA7C0
b _027E9E0C
_027E9E08:
bl sub_027EA7C0
_027E9E0C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027E9E14: .word 0x04808036
_027E9E18: .word 0x027EA99C
_027E9E1C: .word 0x04808168
_027E9E20: .word 0x0380FFF4
_027E9E24: .word 0x00006001
_027E9E28: .word 0x0480815C
_027E9E2C: .word 0x00009C40
arm_func_end sub_027E9D7C
arm_func_start sub_027E9E30
sub_027E9E30: ; 0x027E9E30
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _027E9E8C ; =0x0380FFF4
ldr r1, _027E9E90 ; =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 _027E9E80
ldrh r0, [r4, #0x6e]
mov r1, #0x64
mul r0, r6, r0
bl sub_03806DD4
cmp r0, #0x10000
movhi r0, #5
bhi _027E9E84
strh r6, [r5, #0x1c]
strh r0, [r4, #0x8c]
_027E9E80:
mov r0, #0
_027E9E84:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027E9E8C: .word 0x0380FFF4
_027E9E90: .word 0x0000FFFF
arm_func_end sub_027E9E30
arm_func_start sub_027E9E94
sub_027E9E94: ; 0x027E9E94
ldr r1, _027E9ED8 ; =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, _027E9EDC ; =0x04808038
mov r0, #0
ldrh r1, [r2]
bic r1, r1, #2
strh r1, [r2]
strh r0, [r2, #0x10]
bx lr
.align 2, 0
_027E9ED8: .word 0x0380FFF4
_027E9EDC: .word 0x04808038
arm_func_end sub_027E9E94
arm_func_start sub_027E9EE0
sub_027E9EE0: ; 0x027E9EE0
ldr r0, _027E9F08 ; =0x0380FFF4
ldr r1, _027E9F0C ; =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
_027E9F08: .word 0x0380FFF4
_027E9F0C: .word 0x04808038
arm_func_end sub_027E9EE0
arm_func_start sub_027E9F10
sub_027E9F10: ; 0x027E9F10
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _027E9F50 ; =0x0380FFF4
mov r5, r0
ldr r0, [r2]
cmp r5, #0x80
add r4, r0, #0x344
movhi r0, #4
bhi _027E9F48
mov r0, r1
ldr r1, [r4, #0x9c]
add r2, r5, #1
bl sub_037FDF9C
strh r5, [r4, #0xa0]
mov r0, #0
_027E9F48:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027E9F50: .word 0x0380FFF4
arm_func_end sub_027E9F10
arm_func_start sub_027E9F54
sub_027E9F54: ; 0x027E9F54
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r2, _027E9FFC ; =0x0380FFF4
mov r4, r0
ldr r0, [r2]
mov r8, r1
cmp r4, #0x80
add r5, r0, #0x344
movhi r0, #4
bhi _027E9FF4
cmp r4, #0
beq _027E9FE4
ldrh r0, [r5, #0xa2]
tst r0, #1
beq _027E9FD4
ldr r6, [r5, #0x9c]
mov r1, #0xff
mov r0, r6
bl sub_027EAD24
add r6, r6, #1
mov r7, #0
b _027E9FC8
_027E9FA8:
mov r0, r8
bl sub_027EAD50
mov r1, r0
mov r0, r6
bl sub_027EAD24
add r6, r6, #1
add r8, r8, #1
add r7, r7, #1
_027E9FC8:
cmp r7, r4
blo _027E9FA8
b _027E9FE4
_027E9FD4:
ldr r1, [r5, #0x9c]
mov r0, r8
add r2, r4, #1
bl sub_037FDF9C
_027E9FE4:
strh r4, [r5, #0xa0]
mov r0, #1
strh r0, [r5, #0xa4]
mov r0, #0
_027E9FF4:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027E9FFC: .word 0x0380FFF4
arm_func_end sub_027E9F54
arm_func_start sub_027EA000
sub_027EA000: ; 0x027EA000
ldr r3, _027EA034 ; =0x0380FFF4
ldr r2, _027EA038 ; =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
_027EA034: .word 0x0380FFF4
_027EA038: .word 0x0480802A
arm_func_end sub_027EA000
arm_func_start sub_027EA03C
sub_027EA03C: ; 0x027EA03C
stmdb sp!, {r4, lr}
ldr r1, _027EA090 ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
add r4, r1, #0x344
strh r0, [r4, #0x6a]
bl sub_037FB3B4
ldr r0, _027EA094 ; =0x0480802A
mov r1, #0
strh r1, [r0]
ldrh r0, [r4, #0x88]
cmp r0, #0
beq _027EA088
bl sub_027F0D60
ldrh r0, [r4, #0x88]
mov r1, #0x20
bl sub_027EBC44
mov r0, #0
strh r0, [r4, #0x88]
_027EA088:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EA090: .word 0x0380FFF4
_027EA094: .word 0x0480802A
arm_func_end sub_027EA03C
arm_func_start sub_027EA098
sub_027EA098: ; 0x027EA098
ldr r0, _027EA0B4 ; =0x0380FFF4
ldr r1, _027EA0B8 ; =0x04808028
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0xae]
strh r0, [r1]
bx lr
.align 2, 0
_027EA0B4: .word 0x0380FFF4
_027EA0B8: .word 0x04808028
arm_func_end sub_027EA098
arm_func_start sub_027EA0BC
sub_027EA0BC: ; 0x027EA0BC
stmdb sp!, {r3, lr}
ldr r0, _027EA0DC ; =0x04808094
ldrh r0, [r0]
tst r0, #0x8000
bne _027EA0D4
bl sub_037FB3B4
_027EA0D4:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EA0DC: .word 0x04808094
arm_func_end sub_027EA0BC
arm_func_start sub_027EA0E0
sub_027EA0E0: ; 0x027EA0E0
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_027EA0E0
arm_func_start sub_027EA0FC
sub_027EA0FC: ; 0x027EA0FC
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_027EA0FC
arm_func_start sub_027EA130
sub_027EA130: ; 0x027EA130
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_027EA130
arm_func_start sub_027EA17C
sub_027EA17C: ; 0x027EA17C
stmdb sp!, {r3, lr}
bl sub_027EA1AC
ldr r1, _027EA1A8 ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
mov r2, #0xb4
add r1, r1, #0x13c
add r1, r1, #0x400
bl sub_037FDFD0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EA1A8: .word 0x0380FFF4
arm_func_end sub_027EA17C
arm_func_start sub_027EA1AC
sub_027EA1AC: ; 0x027EA1AC
ldr r1, _027EA39C ; =0x0380FFF4
ldr r0, _027EA3A0 ; =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
_027EA39C: .word 0x0380FFF4
_027EA3A0: .word 0x048081B0
arm_func_end sub_027EA1AC
arm_func_start sub_027EA3A4
sub_027EA3A4: ; 0x027EA3A4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r2, _027EA470 ; =0x0380FFF4
mov sb, r0
ldr r0, [r2]
mov r8, r1
cmp sb, #0x20
add r2, r0, #0x344
movhi r0, #0
bhi _027EA468
ldrh r1, [r2, #0x1e]
cmp r1, #0
moveq r0, #1
beq _027EA468
add r0, r0, #0x400
ldrh r0, [r0, #4]
cmp r0, #0x13
bne _027EA3FC
cmp sb, r1
movlo r0, #0
blo _027EA468
mov sb, r1
b _027EA408
_027EA3FC:
cmp sb, r1
movne r0, #0
bne _027EA468
_027EA408:
add r5, r2, #0x20
add r6, r2, #0x40
mov r7, #0
b _027EA45C
_027EA418:
mov r0, r6
bl sub_027EAD50
mov r4, r0
mov r0, r8
add r6, r6, #1
bl sub_027EAD50
mov sl, r0
mov r0, r5
add r8, r8, #1
bl sub_027EAD50
orr r1, sl, r4
orr r0, r0, r4
cmp r1, r0
add r5, r5, #1
movne r0, #0
bne _027EA468
add r7, r7, #1
_027EA45C:
cmp r7, sb
blo _027EA418
mov r0, #1
_027EA468:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_027EA470: .word 0x0380FFF4
arm_func_end sub_027EA3A4
arm_func_start sub_027EA474
sub_027EA474: ; 0x027EA474
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_027EA474
arm_func_start sub_027EA4A4
sub_027EA4A4: ; 0x027EA4A4
ldr r1, _027EA4C0 ; =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
_027EA4C0: .word 0x0380FFF4
arm_func_end sub_027EA4A4
arm_func_start sub_027EA4C4
sub_027EA4C4: ; 0x027EA4C4
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_027EAD50
add r6, r4, #2
ldr r5, _027EA574 ; =0x027F73B4
mov r8, r0
mov r7, #0
mov r4, #1
b _027EA564
_027EA4FC:
add r0, r6, r7
bl sub_027EAD50
and r1, r0, #0x7f
sub r1, r1, #1
cmp r1, #0x78
bhs _027EA544
mov r1, r1, lsl #1
ldrh r2, [r5, r1]
cmp r2, #0xff
beq _027EA544
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 _027EA560
_027EA544:
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]
_027EA560:
add r7, r7, #1
_027EA564:
cmp r7, r8
blo _027EA4FC
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_027EA574: .word 0x027F73B4
arm_func_end sub_027EA4C4
arm_func_start sub_027EA578
sub_027EA578: ; 0x027EA578
ldr r0, _027EA5C0 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x30]
cmp r1, #0
beq _027EA59C
cmp r1, #1
beq _027EA5B0
b _027EA5B8
_027EA59C:
ldrh r0, [r0, #0xa4]
tst r0, #1
beq _027EA5B8
mov r0, #0xa
bx lr
_027EA5B0:
mov r0, #0xa
bx lr
_027EA5B8:
mov r0, #0x14
bx lr
.align 2, 0
_027EA5C0: .word 0x0380FFF4
arm_func_end sub_027EA578
arm_func_start sub_027EA5C4
sub_027EA5C4: ; 0x027EA5C4
stmdb sp!, {r3, lr}
ldr r1, _027EA5E8 ; =0x04808158
orr r0, r0, #0x6000
strh r0, [r1]
bl sub_037FB420
ldr r0, _027EA5EC ; =0x0480815C
ldrh r0, [r0]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EA5E8: .word 0x04808158
_027EA5EC: .word 0x0480815C
arm_func_end sub_027EA5C4
arm_func_start sub_027EA5F0
sub_027EA5F0: ; 0x027EA5F0
stmdb sp!, {r3, lr}
ldr r2, _027EA61C ; =0x0480815A
orr r0, r0, #0x5000
strh r1, [r2]
strh r0, [r2, #-2]
bl sub_037FB420
cmp r0, #0
mvnne r0, #0
moveq r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EA61C: .word 0x0480815A
arm_func_end sub_027EA5F0
arm_func_start sub_027EA620
sub_027EA620: ; 0x027EA620
ldr r2, _027EA638 ; =0x0480817E
ldr ip, _027EA63C ; =sub_037FB454
strh r0, [r2]
mov r1, r0, lsr #0x10
strh r1, [r2, #-2]
bx ip
.align 2, 0
_027EA638: .word 0x0480817E
_027EA63C: .word sub_037FB454
arm_func_end sub_027EA620
arm_func_start sub_027EA640
sub_027EA640: ; 0x027EA640
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
_027EA660:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_027F4E10
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_027EADE8
add r7, r7, #1
mov r8, r0
cmp r7, #0x69
add r6, r6, #1
blo _027EA660
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, lr}
bx lr
arm_func_end sub_027EA640
arm_func_start sub_027EA6B0
sub_027EA6B0: ; 0x027EA6B0
stmdb sp!, {r4, lr}
ldr r1, _027EA71C ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
mov r2, #0x10
add r1, r1, #0x1f8
add r4, r1, #0x400
mov r1, r4
bl sub_037FDF74
mov r2, r4
mov r0, #0x40
mov r1, #1
bl sub_027F4E10
add r2, r4, #2
mov r0, #0x41
mov r1, #1
bl sub_027F4E10
add r2, r4, #4
mov r0, #0x42
mov r1, #1
bl sub_027F4E10
add r2, r4, #6
mov r0, #0x43
mov r1, #1
bl sub_027F4E10
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EA71C: .word 0x0380FFF4
arm_func_end sub_027EA6B0
arm_func_start sub_027EA720
sub_027EA720: ; 0x027EA720
ldr r2, _027EA754 ; =0x027F7350
mov r3, #0
_027EA728:
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 _027EA728
bx lr
.align 2, 0
_027EA754: .word 0x027F7350
arm_func_end sub_027EA720
arm_func_start sub_027EA758
sub_027EA758: ; 0x027EA758
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r0, _027EA7BC ; =0x04808160
mov r1, #0x100
strh r1, [r0]
mov r6, #0
str r6, [sp]
mov r7, #0x64
add r4, sp, #0
mov r5, #1
_027EA77C:
mov r0, r7
mov r1, r5
mov r2, r4
bl sub_027F4E10
ldr r1, [sp]
mov r0, r6
bl sub_027EA5F0
add r6, r6, #1
cmp r6, #0x69
add r7, r7, #1
blo _027EA77C
mov r0, #0x5a
mov r1, #2
bl sub_027EA5F0
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027EA7BC: .word 0x04808160
arm_func_end sub_027EA758
arm_func_start sub_027EA7C0
sub_027EA7C0: ; 0x027EA7C0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #8
ldr r0, _027EA93C ; =0x0380FFF4
ldr r5, _027EA940 ; =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
_027EA7EC:
mov r0, r8, lsl #1
mov r1, r7
mov r2, r6
add r0, r0, #0x44
bl sub_027F4E10
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 _027EA7EC
ldrh r1, [r4, #2]
ldr r0, _027EA944 ; =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 _027EA8DC
add r0, r8, #0xce
add r2, r4, #8
mov r1, #1
bl sub_027F4E10
mov sb, #0
add r4, sp, #4
mov r6, sb
mov r5, #1
b _027EA8D0
_027EA89C:
str r6, [sp, #4]
mov r0, r7
mov r1, r5
mov r2, r4
bl sub_027F4E10
mov r0, sb, lsl #8
ldr r1, [sp, #4]
add r0, r0, #0x50000
orr r0, r1, r0
str r0, [sp, #4]
bl sub_027EA620
add sb, sb, #1
add r7, r7, #1
_027EA8D0:
cmp sb, r8
blo _027EA89C
b _027EA930
_027EA8DC:
mov r0, #0
str r0, [sp, #4]
add r5, sp, #4
b _027EA928
_027EA8EC:
mov r0, r7
mov r1, r6
mov r2, r5
bl sub_027F4E10
ldr r0, [sp, #4]
bl sub_027EA620
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]
_027EA928:
cmp r8, #0
bne _027EA8EC
_027EA930:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_027EA93C: .word 0x0380FFF4
_027EA940: .word 0x027F72E0
_027EA944: .word 0x04808184
arm_func_end sub_027EA7C0
arm_func_start sub_027EA948
sub_027EA948: ; 0x027EA948
stmdb sp!, {r4, lr}
ldr r0, _027EA998 ; =0x0380FFF4
ldr r4, [r0]
bl sub_037FD390
cmp r0, #0
addeq r0, r4, #0x300
ldreqh r1, [r0, #0x3e]
orreq r1, r1, #0x40
streqh r1, [r0, #0x3e]
beq _027EA990
add r0, r4, #0x208
add r0, r0, #0x400
bl sub_037FD3A0
add r0, r4, #0x234
add r0, r0, #0x400
bl sub_037FD3A0
add r0, r4, #0x660
bl sub_037FD3A0
_027EA990:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EA998: .word 0x0380FFF4
arm_func_end sub_027EA948
arm_func_start sub_027EA99C
sub_027EA99C: ; 0x027EA99C
mov r1, #0
str r1, [r0]
bx lr
arm_func_end sub_027EA99C
arm_func_start sub_027EA9A8
sub_027EA9A8: ; 0x027EA9A8
ldr ip, _027EA9B4 ; =sub_037FB32C
ldr r1, _027EA9B8 ; =0x027EA99C
bx ip
.align 2, 0
_027EA9B4: .word sub_037FB32C
_027EA9B8: .word 0x027EA99C
arm_func_end sub_027EA9A8
arm_func_start sub_027EA9BC
sub_027EA9BC: ; 0x027EA9BC
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0xc
ldr r2, _027EAA44 ; =0x0380FFF4
mov r5, r0
ldr r0, [r2]
mov r4, r1
add r0, r0, #0x208
add r0, r0, #0x400
bl sub_037FD5C0
ldr r0, _027EAA48 ; =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_037FD21C
adds r0, r6, r0
adc r2, r1, #0
mov r1, r0
str r4, [sp, #4]
mov r0, r5
str r0, [sp, #8]
ldr r0, _027EAA44 ; =0x0380FFF4
str r5, [sp]
ldr r0, [r0]
mov r3, r6
add r0, r0, #0x208
add r0, r0, #0x400
bl sub_037FD54C
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, lr}
bx lr
.align 2, 0
_027EAA44: .word 0x0380FFF4
_027EAA48: .word 0x000082EA
arm_func_end sub_027EA9BC
arm_func_start sub_027EAA4C
sub_027EAA4C: ; 0x027EAA4C
ldr r0, _027EAA64 ; =0x0380FFF4
ldr ip, _027EAA68 ; =sub_037FD5C0
ldr r0, [r0]
add r0, r0, #0x208
add r0, r0, #0x400
bx ip
.align 2, 0
_027EAA64: .word 0x0380FFF4
_027EAA68: .word sub_037FD5C0
arm_func_end sub_027EAA4C
arm_func_start sub_027EAA6C
sub_027EAA6C: ; 0x027EAA6C
stmdb sp!, {r4, lr}
ldr r1, _027EAAE8 ; =0x0380FFF4
mov r0, #1
ldr r4, [r1]
mov r1, #0xa
ldr r2, [r4, #0x3ec]
add r2, r2, #1
str r2, [r4, #0x3ec]
bl sub_037F8598
mov r0, #2
mov r1, #0x12
bl sub_037F8598
mov r0, #1
mov r1, #0x11
bl sub_037F8598
add r0, r4, #0x100
ldrh r0, [r0, #0xfc]
cmp r0, #0
beq _027EAAC4
mov r0, #2
mov r1, #0x13
bl sub_037F8598
_027EAAC4:
add r0, r4, #0x300
ldrh r0, [r0, #0xf4]
cmp r0, #0
beq _027EAAE0
mov r0, #2
mov r1, #0x15
bl sub_037F8598
_027EAAE0:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EAAE8: .word 0x0380FFF4
arm_func_end sub_027EAA6C
arm_func_start sub_027EAAEC
sub_027EAAEC: ; 0x027EAAEC
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _027EAB54 ; =0x0380FFF4
mov r5, r0
ldr r0, [r2]
mov r4, r1
add r0, r0, #0x234
add r0, r0, #0x400
bl sub_037FD5C0
mov r3, #0
ldr r0, _027EAB58 ; =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, _027EAB54 ; =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_037FD4DC
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027EAB54: .word 0x0380FFF4
_027EAB58: .word 0x000082EA
arm_func_end sub_027EAAEC
arm_func_start sub_027EAB5C
sub_027EAB5C: ; 0x027EAB5C
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _027EABD8 ; =0x0380FFF4
mov r5, r0
ldr r0, [r2]
mov r4, r1
add r0, r0, #0x234
add r0, r0, #0x400
bl sub_037FD5C0
ldr r0, _027EABDC ; =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_03806B80
mov r2, r1
mov r1, r0
mov r0, #0
str r0, [sp]
ldr r0, _027EABD8 ; =0x0380FFF4
mov r3, r4
ldr r0, [r0]
add r0, r0, #0x234
add r0, r0, #0x400
bl sub_037FD4DC
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027EABD8: .word 0x0380FFF4
_027EABDC: .word 0x000082EA
arm_func_end sub_027EAB5C
arm_func_start sub_027EABE0
sub_027EABE0: ; 0x027EABE0
ldr r0, _027EABF8 ; =0x0380FFF4
ldr ip, _027EABFC ; =sub_037FD5C0
ldr r0, [r0]
add r0, r0, #0x234
add r0, r0, #0x400
bx ip
.align 2, 0
_027EABF8: .word 0x0380FFF4
_027EABFC: .word sub_037FD5C0
arm_func_end sub_027EABE0
arm_func_start sub_027EAC00
sub_027EAC00: ; 0x027EAC00
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _027EAC74 ; =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_037FDF9C
cmp r7, #0
beq _027EAC6C
ldr r0, _027EAC78 ; =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_037FDF9C
_027EAC6C:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027EAC74: .word 0x04805F60
_027EAC78: .word 0x0380FFF4
arm_func_end sub_027EAC00
arm_func_start sub_027EAC7C
sub_027EAC7C: ; 0x027EAC7C
ldr ip, _027EAC98 ; =sub_037FDF9C
mov r3, r0
add r2, r2, #1
mov r0, r1
mov r1, r3
bic r2, r2, #1
bx ip
.align 2, 0
_027EAC98: .word sub_037FDF9C
arm_func_end sub_027EAC7C
arm_func_start sub_027EAC9C
sub_027EAC9C: ; 0x027EAC9C
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_037FDF9C
cmp r4, #0
beq _027EACD8
add r2, r4, #1
mov r0, r5
add r1, r6, #0x24
bic r2, r2, #1
bl sub_037FDF9C
_027EACD8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_027EAC9C
arm_func_start sub_027EACE0
sub_027EACE0: ; 0x027EACE0
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_037FDF9C
cmp r4, #0
beq _027EAD1C
add r2, r4, #1
mov r0, r5
add r1, r6, #0x28
bic r2, r2, #1
bl sub_037FDF9C
_027EAD1C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_027EACE0
arm_func_start sub_027EAD24
sub_027EAD24: ; 0x027EAD24
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_027EAD24
arm_func_start sub_027EAD50
sub_027EAD50: ; 0x027EAD50
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_027EAD50
arm_func_start sub_027EAD6C
sub_027EAD6C: ; 0x027EAD6C
ldr r3, _027EAD98 ; =0x0380FFF4
ldr r2, _027EAD9C ; =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
_027EAD98: .word 0x0380FFF4
_027EAD9C: .word 0x0000FFF8
arm_func_end sub_027EAD6C
arm_func_start sub_027EADA0
sub_027EADA0: ; 0x027EADA0
ldr r1, _027EADB4 ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x500
strh r0, [r1, #0xf4]
bx lr
.align 2, 0
_027EADB4: .word 0x0380FFF4
arm_func_end sub_027EADA0
arm_func_start sub_027EADB8
sub_027EADB8: ; 0x027EADB8
ldr r0, _027EADE4 ; =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
_027EADE4: .word 0x0380FFF4
arm_func_end sub_027EADB8
arm_func_start sub_027EADE8
sub_027EADE8: ; 0x027EADE8
stmdb sp!, {r4, lr}
ldr r2, _027EAE60 ; =0x027F72C0
mov r4, r1, lsl #0x1c
ldr r3, _027EAE64 ; =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
_027EAE60: .word 0x027F72C0
_027EAE64: .word 0x00000FFF
arm_func_end sub_027EADE8
arm_func_start sub_027EAE68
sub_027EAE68: ; 0x027EAE68
stmdb sp!, {r4, lr}
ldr r4, [r0, #8]
ldr r1, _027EAEDC ; =0x0000B6B8
ldrh r2, [r4, #-4]
sub lr, r4, #4
cmp r2, r1
ldreqh r2, [lr, #2]
ldreq r1, _027EAEE0 ; =0x00001D46
cmpeq r2, r1
moveq r0, #0
beq _027EAED4
ldr r3, _027EAEDC ; =0x0000B6B8
mov ip, #1
strh ip, [r4, #0xa]
ldr r2, _027EAEE0 ; =0x00001D46
strh r3, [lr]
strh r2, [lr, #2]
ldr r1, [r0, #8]
ldr r0, _027EAEE4 ; =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]
_027EAED4:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EAEDC: .word 0x0000B6B8
_027EAEE0: .word 0x00001D46
_027EAEE4: .word 0x0380FFF4
arm_func_end sub_027EAE68
arm_func_start sub_027EAEE8
sub_027EAEE8: ; 0x027EAEE8
ldr r0, _027EAF20 ; =0x04808004
mov r1, #0
strh r1, [r0]
mov r2, #0x10
add r1, r0, #0x210
b _027EAF14
_027EAF00:
ldrh r0, [r1]
cmp r0, #0
cmpne r0, #9
bxeq lr
sub r2, r2, #1
_027EAF14:
cmp r2, #0
bne _027EAF00
bx lr
.align 2, 0
_027EAF20: .word 0x04808004
arm_func_end sub_027EAEE8
arm_func_start sub_027EAF24
sub_027EAF24: ; 0x027EAF24
stmdb sp!, {r4, lr}
mov r4, r0
ldrh r0, [r4]
cmp r0, #0
beq _027EAF64
bl sub_027EAEE8
ldr r1, [r4, #0xc]
ldr r0, [r4, #8]
sub r1, r1, #0x10
bl sub_027F0114
ldr r0, _027EAF6C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0xfc]
add r1, r1, #1
strh r1, [r0, #0xfc]
_027EAF64:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EAF6C: .word 0x0380FFF4
arm_func_end sub_027EAF24
arm_func_start sub_027EAF70
sub_027EAF70: ; 0x027EAF70
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _027EB064 ; =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 _027EAFA8
cmp r1, #2
beq _027EAFDC
cmp r1, #3
b _027EB018
_027EAFA8:
add r0, r5, #0x78
bl sub_027EAE68
cmp r0, #0
beq _027EAFC0
bl sub_027EAEE8
bl sub_027F1204
_027EAFC0:
add r0, r5, #0x28
bl sub_027EAE68
cmp r0, #0
beq _027EB018
add r0, r5, #0x28
bl sub_027EAF24
b _027EB018
_027EAFDC:
add r0, r5, #0x64
bl sub_027EAE68
add r0, r5, #0x28
bl sub_027EAE68
cmp r0, #0
beq _027EB018
ldrh r0, [r5, #0x28]
cmp r0, #0
beq _027EB004
bl sub_027EAEE8
_027EB004:
ldrh r0, [r4, #0x6a]
bl sub_027F1F50
ldrh r0, [r4, #0xb8]
add r0, r0, #1
strh r0, [r4, #0xb8]
_027EB018:
add r0, r5, #0x14
bl sub_027EAE68
cmp r0, #0
beq _027EB030
add r0, r5, #0x14
bl sub_027EAF24
_027EB030:
mov r0, r5
bl sub_027EAE68
cmp r0, #0
beq _027EB048
mov r0, r5
bl sub_027EAF24
_027EB048:
ldr r1, _027EB068 ; =0x04808004
ldrh r0, [r1]
cmp r0, #0
moveq r0, #1
streqh r0, [r1]
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027EB064: .word 0x0380FFF4
_027EB068: .word 0x04808004
arm_func_end sub_027EAF70
arm_func_start sub_027EB06C
sub_027EB06C: ; 0x027EB06C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x1000000
bl sub_037FB928
ldr r1, _027EB0AC ; =0x0380FFF4
ldr r1, [r1]
add r1, r1, #0x300
ldrh r2, [r1, #0xf4]
orr r2, r2, r4
strh r2, [r1, #0xf4]
bl sub_037FB8F0
mov r0, #2
mov r1, #0x15
bl sub_037F8598
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EB0AC: .word 0x0380FFF4
arm_func_end sub_027EB06C
arm_func_start sub_027EB0B0
sub_027EB0B0: ; 0x027EB0B0
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _027EB128 ; =0x0380FFF4
ldr r1, [r0]
add r4, r1, #0x344
ldrh r0, [r4, #0xb0]
cmp r0, #0
beq _027EB120
add r0, r1, #0x188
mov r1, #0x12
bl sub_037F886C
movs r5, r0
beq _027EB120
ldr r1, _027EB12C ; =0x00000186
mov r0, #1
strh r1, [r5, #0xc]
strh r0, [r5, #0xe]
mov r0, #0x1000000
bl sub_037FB928
ldrh r2, [r4, #0xb0]
mov r1, #0
strh r2, [r5, #0x10]
strh r1, [r4, #0xb0]
bl sub_037FB8F0
ldr r0, _027EB128 ; =0x0380FFF4
mov r1, r5
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F8D58
_027EB120:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027EB128: .word 0x0380FFF4
_027EB12C: .word 0x00000186
arm_func_end sub_027EB0B0
arm_func_start sub_027EB130
sub_027EB130: ; 0x027EB130
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _027EB1C8 ; =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 _027EB19C
bl sub_037F9198
ldr r2, _027EB1C8 ; =0x0380FFF4
ldr r0, [r2]
add r0, r0, #0x400
ldrh r1, [r0, #4]
cmp r1, #0
beq _027EB198
mov r1, #0
strh r1, [r0, #4]
ldr r0, [r2]
mov r1, #6
ldr r0, [r0, #0x420]
strh r1, [r0, #4]
bl sub_027EDB14
_027EB198:
bl sub_027E9CF4
_027EB19C:
ldr r4, _027EB1CC ; =0x0000FFFF
mov r5, #3
_027EB1A4:
mov r0, r5
bl sub_037F8650
cmp r0, r4
bne _027EB1A4
mov r0, #3
mov r1, #0x17
bl sub_037F8598
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027EB1C8: .word 0x0380FFF4
_027EB1CC: .word 0x0000FFFF
arm_func_end sub_027EB130
arm_func_start sub_027EB1D0
sub_027EB1D0: ; 0x027EB1D0
stmdb sp!, {r4, lr}
ldr r0, _027EB21C ; =0x0380FFF4
ldr r4, [r0]
bl sub_027EB8E0
ldr r1, _027EB21C ; =0x0380FFF4
add r0, r4, #0x188
ldr r1, [r1]
ldr r1, [r1, #0x318]
sub r1, r1, #0xc
bl sub_037F8908
ldr r1, _027EB21C ; =0x0380FFF4
add r0, r4, #0x188
ldr r1, [r1]
ldr r1, [r1, #0x3e0]
sub r1, r1, #0xc
bl sub_037F8908
bl sub_037FC15C
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EB21C: .word 0x0380FFF4
arm_func_end sub_027EB1D0
arm_func_start sub_027EB220
sub_027EB220: ; 0x027EB220
stmdb sp!, {r4, r5, r6, lr}
mov ip, #0
ldr r0, _027EB3B4 ; =0x027F7554
ldr r6, _027EB3B8 ; =0x027F74E4
mov r3, ip
mov r1, ip
b _027EB294
_027EB23C:
mov r4, r3, lsl #1
ldrh r5, [r6, r4]
mov r2, r1
b _027EB288
_027EB24C:
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 _027EB284
cmp ip, #0x20
add ip, ip, #1
bhi _027EB38C
_027EB284:
add r2, r2, #1
_027EB288:
cmp r2, #0x1b
blo _027EB24C
add r3, r3, #1
_027EB294:
cmp r3, #3
blo _027EB23C
ldr r4, _027EB3BC ; =0x00001234
ldr r3, _027EB3B4 ; =0x027F7554
mov r5, #0
_027EB2A8:
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 _027EB2A8
ldr r5, _027EB3BC ; =0x00001234
ldr r3, _027EB3B4 ; =0x027F7554
mov r4, #0
b _027EB33C
_027EB2F4:
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 _027EB328
cmp ip, #0x20
add ip, ip, #1
bhi _027EB38C
_027EB328:
add r0, r5, #0x234
add r0, r0, #0x1000
mov r0, r0, lsl #0x10
mov r5, r0, lsr #0x10
add r4, r4, #1
_027EB33C:
cmp r4, #0x1b
blo _027EB2F4
mov r3, #0
ldr r2, _027EB3B4 ; =0x027F7554
mov r1, r3
b _027EB384
_027EB354:
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 _027EB380
cmp ip, #0x20
add ip, ip, #1
bhi _027EB38C
_027EB380:
add r3, r3, #1
_027EB384:
cmp r3, #0x1b
blo _027EB354
_027EB38C:
cmp ip, #0
beq _027EB3AC
ldr r0, _027EB3C0 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x3e]
orr r1, r1, #1
strh r1, [r0, #0x3e]
_027EB3AC:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027EB3B4: .word 0x027F7554
_027EB3B8: .word 0x027F74E4
_027EB3BC: .word 0x00001234
_027EB3C0: .word 0x0380FFF4
arm_func_end sub_027EB220
arm_func_start sub_027EB3C4
sub_027EB3C4: ; 0x027EB3C4
stmdb sp!, {r3, lr}
ldr lr, _027EB53C ; =0x04804000
mov r0, #0
ldr r3, _027EB540 ; =0x0000FFFF
mov r2, r0
_027EB3D8:
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 _027EB3D8
ldr r2, _027EB53C ; =0x04804000
ldr r3, _027EB540 ; =0x0000FFFF
mov ip, #0
b _027EB434
_027EB408:
ldrh r1, [r2]
cmp r1, r3
beq _027EB420
cmp r0, #0x20
add r0, r0, #1
bhi _027EB514
_027EB420:
sub r1, r3, #1
mov r1, r1, lsl #0x10
add ip, ip, #2
add r2, r2, #2
mov r3, r1, lsr #0x10
_027EB434:
cmp ip, #0x2000
blo _027EB408
ldr r2, _027EB53C ; =0x04804000
ldr r3, _027EB544 ; =0x00005A5A
mov ip, #0
_027EB448:
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 _027EB448
ldr r2, _027EB53C ; =0x04804000
ldr r3, _027EB544 ; =0x00005A5A
mov ip, #0
b _027EB4A0
_027EB474:
ldrh r1, [r2]
cmp r1, r3
beq _027EB48C
cmp r0, #0x20
add r0, r0, #1
bhi _027EB514
_027EB48C:
mvn r1, r3
mov r1, r1, lsl #0x10
add ip, ip, #2
add r2, r2, #2
mov r3, r1, lsr #0x10
_027EB4A0:
cmp ip, #0x2000
blo _027EB474
ldr r2, _027EB53C ; =0x04804000
ldr r3, _027EB548 ; =0x0000A5A5
mov ip, #0
_027EB4B4:
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 _027EB4B4
ldr r2, _027EB53C ; =0x04804000
ldr r3, _027EB548 ; =0x0000A5A5
mov ip, #0
b _027EB50C
_027EB4E0:
ldrh r1, [r2]
cmp r1, r3
beq _027EB4F8
cmp r0, #0x20
add r0, r0, #1
bhi _027EB514
_027EB4F8:
mvn r1, r3
mov r1, r1, lsl #0x10
add ip, ip, #2
add r2, r2, #2
mov r3, r1, lsr #0x10
_027EB50C:
cmp ip, #0x2000
blo _027EB4E0
_027EB514:
cmp r0, #0
beq _027EB534
ldr r0, _027EB54C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x3e]
orr r1, r1, #2
strh r1, [r0, #0x3e]
_027EB534:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EB53C: .word 0x04804000
_027EB540: .word 0x0000FFFF
_027EB544: .word 0x00005A5A
_027EB548: .word 0x0000A5A5
_027EB54C: .word 0x0380FFF4
arm_func_end sub_027EB3C4
arm_func_start sub_027EB550
sub_027EB550: ; 0x027EB550
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r0, _027EB824 ; =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, _027EB828 ; =0x027F74EA
mvn r4, #0
ldrne sl, _027EB82C ; =0x027F751C
b _027EB5A0
_027EB584:
mov r0, r6
mov r1, r5
bl sub_027EA5F0
cmp r0, r4
moveq r7, #1
beq _027EB7FC
add r6, r6, #1
_027EB5A0:
cmp r6, #0x69
blo _027EB584
mov r5, #0
mov r4, r5
b _027EB5F0
_027EB5B4:
mov r0, r4, lsl #1
ldrh r0, [sl, r0]
cmp r5, r0
addeq r4, r4, #1
beq _027EB5EC
mov r0, r5
bl sub_027EA5C4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #0xff
beq _027EB5EC
cmp r7, #0x20
add r7, r7, #1
bhi _027EB7FC
_027EB5EC:
add r5, r5, #1
_027EB5F0:
cmp r5, #0x69
blo _027EB5B4
mov r5, #0
mov r4, r5
_027EB600:
mov r0, r5
mov r1, r4
bl sub_027EA5F0
add r5, r5, #1
cmp r5, #0x69
blo _027EB600
mov r4, #0
mov r5, r4
b _027EB65C
_027EB624:
mov r0, r5, lsl #1
ldrh r0, [sl, r0]
cmp r4, r0
addeq r5, r5, #1
beq _027EB658
mov r0, r4
bl sub_027EA5C4
mov r0, r0, lsl #0x10
movs r0, r0, lsr #0x10
beq _027EB658
cmp r7, #0x20
add r7, r7, #1
bhi _027EB7FC
_027EB658:
add r4, r4, #1
_027EB65C:
cmp r4, #0x69
blo _027EB624
mov r4, #0x55
mov r5, #0
_027EB66C:
mov r0, r5
mov r1, r4
bl sub_027EA5F0
mvn r0, r4
add r5, r5, #1
mov r0, r0, lsl #0x10
cmp r5, #0x69
mov r4, r0, lsr #0x10
blo _027EB66C
mov r4, #0
mov r6, r4
mov r5, #0x55
b _027EB6E4
_027EB6A0:
mov r0, r6, lsl #1
ldrh r0, [sl, r0]
cmp r4, r0
addeq r6, r6, #1
beq _027EB6D8
mov r0, r4
bl sub_027EA5C4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, r5
beq _027EB6D8
cmp r7, #0x20
add r7, r7, #1
bhi _027EB7FC
_027EB6D8:
mvn r0, r5
and r5, r0, #0xff
add r4, r4, #1
_027EB6E4:
cmp r4, #0x69
blo _027EB6A0
mov r5, #0xff
mov r4, #0
_027EB6F4:
mov r0, r4
mov r1, r5
bl sub_027EA5F0
sub r0, r5, #1
add r4, r4, #1
mov r0, r0, lsl #0x10
cmp r4, #0x69
mov r5, r0, lsr #0x10
blo _027EB6F4
mov r4, #0
mov r6, r4
mov r5, #0xff
b _027EB770
_027EB728:
mov r0, r6, lsl #1
ldrh r0, [sl, r0]
cmp r4, r0
addeq r6, r6, #1
beq _027EB760
mov r0, r4
bl sub_027EA5C4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, r5
beq _027EB760
cmp r7, #0x20
add r7, r7, #1
bhi _027EB7FC
_027EB760:
sub r0, r5, #1
mov r0, r0, lsl #0x10
add r4, r4, #1
mov r5, r0, lsr #0x10
_027EB770:
cmp r4, #0x69
blo _027EB728
mov r8, #0
mov sb, r8
mov r4, #1
mov fp, r8
b _027EB7F4
_027EB78C:
mov r0, sb, lsl #1
ldrh r0, [sl, r0]
cmp r8, r0
addeq sb, sb, #1
beq _027EB7F0
mov r6, r4
mov r5, fp
b _027EB7E8
_027EB7AC:
mov r0, r8
mov r1, r6
bl sub_027EA5F0
mov r0, r8
bl sub_027EA5C4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, r6
beq _027EB7DC
cmp r7, #0x20
add r7, r7, #1
bhi _027EB7FC
_027EB7DC:
mov r0, r6, lsl #1
and r6, r0, #0xff
add r5, r5, #1
_027EB7E8:
cmp r5, #9
blo _027EB7AC
_027EB7F0:
add r8, r8, #1
_027EB7F4:
cmp r8, #0x69
blo _027EB78C
_027EB7FC:
cmp r7, #0
beq _027EB81C
ldr r0, _027EB824 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x3e]
orr r1, r1, #8
strh r1, [r0, #0x3e]
_027EB81C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027EB824: .word 0x0380FFF4
_027EB828: .word 0x027F74EA
_027EB82C: .word 0x027F751C
arm_func_end sub_027EB550
arm_func_start sub_027EB830
sub_027EB830: ; 0x027EB830
ldr r0, _027EB840 ; =0x04808010
mov r1, #0x800
strh r1, [r0]
bx lr
.align 2, 0
_027EB840: .word 0x04808010
arm_func_end sub_027EB830
arm_func_start sub_027EB844
sub_027EB844: ; 0x027EB844
stmdb sp!, {r4, lr}
ldrh r1, [r0]
mov r4, #0
cmp r1, #2
bne _027EB884
ldr r2, _027EB8B4 ; =0x04808094
ldr r3, [r0, #8]
ldr r1, _027EB8B8 ; =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
_027EB884:
ldrh r1, [r0]
cmp r1, #1
bne _027EB8A8
ldr r1, [r0, #8]
ldrh r1, [r1]
tst r1, #1
beq _027EB8A8
bl sub_027F0AB8
orr r4, r4, #2
_027EB8A8:
mov r0, r4
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EB8B4: .word 0x04808094
_027EB8B8: .word 0x00003FFF
arm_func_end sub_027EB844
arm_func_start sub_027EB8BC
sub_027EB8BC: ; 0x027EB8BC
stmdb sp!, {r3, lr}
ldr r1, _027EB8DC ; =0x037F92DC
mov r0, #0x1000000
bl sub_037FB7BC
mov r0, #0x1000000
bl sub_037FB8F0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EB8DC: .word 0x037F92DC
arm_func_end sub_027EB8BC
arm_func_start sub_027EB8E0
sub_027EB8E0: ; 0x027EB8E0
stmdb sp!, {r3, lr}
mov r0, #0x1000000
bl sub_037FB928
mov r0, #0x1000000
mov r1, #0
bl sub_037FB7BC
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027EB8E0
arm_func_start sub_027EB900
sub_027EB900: ; 0x027EB900
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldrh r0, [r8]
tst r0, #1
movne r0, #0
bne _027EB99C
ldr r4, _027EB9A4 ; =0x0380FFF4
ldr r0, [r4]
add r1, r0, #0x500
ldrh r1, [r1, #0x2c]
cmp r1, #1
bls _027EB998
ldr r1, [r0, #0x31c]
mov r7, #0
add r5, r1, #0x1c
mov r6, #1
b _027EB988
_027EB944:
ldrh r1, [r5]
cmp r1, #0
beq _027EB980
mov r1, r8
add r0, r5, #4
bl sub_027EA474
cmp r0, #0
movne r0, r6
bne _027EB99C
ldr r0, [r4]
add r7, r7, #1
add r1, r0, #0x500
ldrh r1, [r1, #0x2c]
cmp r7, r1
bhs _027EB998
_027EB980:
add r6, r6, #1
add r5, r5, #0x1c
_027EB988:
add r1, r0, #0x300
ldrh r1, [r1, #0x22]
cmp r6, r1
blo _027EB944
_027EB998:
mov r0, #0xff
_027EB99C:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027EB9A4: .word 0x0380FFF4
arm_func_end sub_027EB900
arm_func_start sub_027EB9A8
sub_027EB9A8: ; 0x027EB9A8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r5, _027EBAE4 ; =0x0380FFF4
mov r4, r0
ldr r0, [r5]
ldrh r1, [r4]
add r6, r0, #0x31c
tst r1, #1
movne r0, #0
bne _027EBADC
add r1, r0, #0x500
ldrh r1, [r1, #0x2c]
mov r8, #1
cmp r1, #1
bls _027EBA58
ldr r1, [r6]
mov sl, #0
mov sb, sl
add r7, r1, #0x1c
b _027EBA44
_027EB9F4:
ldrh r1, [r7]
cmp r1, #0
beq _027EBA34
mov r1, r4
add r0, r7, #4
bl sub_027EA474
cmp r0, #0
movne r0, r8
bne _027EBADC
ldr r0, [r5]
add sb, sb, #1
add r1, r0, #0x500
ldrh r1, [r1, #0x2c]
cmp sb, r1
bhs _027EBA50
b _027EBA3C
_027EBA34:
cmp sl, #0
moveq sl, r8
_027EBA3C:
add r8, r8, #1
add r7, r7, #0x1c
_027EBA44:
ldrh r1, [r6, #6]
cmp r8, r1
blo _027EB9F4
_027EBA50:
cmp sl, #0
movne r8, sl
_027EBA58:
add r0, r0, #0x300
ldrh r0, [r0, #0x22]
cmp r8, r0
blo _027EBACC
ldr r7, [r6]
ldrh r5, [r6, #6]
mov r3, #0x10000
mov r6, #1
mov r8, #0
mov r0, #0x1c
b _027EBAB8
_027EBA84:
mul r2, r6, r0
ldrh r1, [r7, r2]
add r2, r7, r2
cmp r1, #0x30
bhs _027EBAB4
ldrh r1, [r2, #0x16]
cmp r1, #0
bne _027EBAB4
ldrh r1, [r2, #0x18]
cmp r3, r1
movhi r3, r1
movhi r8, r6
_027EBAB4:
add r6, r6, #1
_027EBAB8:
cmp r6, r5
blo _027EBA84
cmp r8, #0
moveq r0, #0xff
beq _027EBADC
_027EBACC:
mov r0, r8
mov r1, r4
bl sub_027EC598
mov r0, r8
_027EBADC:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_027EBAE4: .word 0x0380FFF4
arm_func_end sub_027EB9A8
arm_func_start sub_027EBAE8
sub_027EBAE8: ; 0x027EBAE8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _027EBB40 ; =0x0380FFF4
mov r7, r0
ldr r2, [r2]
mov r0, #0x1000000
add r4, r2, #0x1ac
mov r6, r1
bl sub_037FB928
ldrh r1, [r4, #8]
mov r5, r0
cmp r1, #0
bne _027EBB20
mov r0, #0
bl sub_027EC10C
_027EBB20:
mov r0, r7
mov r1, r4
mov r2, r6
bl sub_037F8988
mov r0, r5
bl sub_037FB8F0
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027EBB40: .word 0x0380FFF4
arm_func_end sub_027EBAE8
arm_func_start sub_027EBB44
sub_027EBB44: ; 0x027EBB44
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _027EBBD0 ; =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_037FB928
ldr r1, _027EBBD0 ; =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 _027EBB94
mov r0, r5
bl sub_027EC10C
_027EBB94:
ldrh r1, [r6, #0x16]
mov r0, r4
add r1, r1, #1
strh r1, [r6, #0x16]
bl sub_037FB8F0
ldr r0, _027EBBD0 ; =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
_027EBBD0: .word 0x0380FFF4
arm_func_end sub_027EBB44
arm_func_start sub_027EBBD4
sub_027EBBD4: ; 0x027EBBD4
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _027EBC40 ; =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_037FB928
ldr r1, _027EBC40 ; =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 _027EBC24
mov r0, r5
bl sub_027EC1C8
_027EBC24:
ldrh r1, [r6, #0x16]
mov r0, r4
sub r1, r1, #1
strh r1, [r6, #0x16]
bl sub_037FB8F0
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027EBC40: .word 0x0380FFF4
arm_func_end sub_027EBBD4
arm_func_start sub_027EBC44
sub_027EBC44: ; 0x027EBC44
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #0x1000000
mov r5, r1
bl sub_037FB928
ldr r3, _027EBD28 ; =0x0380FFF4
mov r4, r0
cmp r5, #0x40
bhs _027EBCC4
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 _027EBD00
mov r0, r6
bl sub_027EC0CC
cmp r0, #0
beq _027EBD00
mov r0, r6
bl sub_027EBF60
b _027EBD00
_027EBCC4:
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 _027EBD00
mov r0, r6
bl sub_027EBDA8
_027EBD00:
ldr r1, _027EBD28 ; =0x0380FFF4
mov r0, #0x1c
ldr r2, [r1]
mul r1, r6, r0
ldr r2, [r2, #0x31c]
mov r0, r4
strh r5, [r2, r1]
bl sub_037FB8F0
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027EBD28: .word 0x0380FFF4
arm_func_end sub_027EBC44
arm_func_start sub_027EBD2C
sub_027EBD2C: ; 0x027EBD2C
ldr r3, _027EBD48 ; =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
_027EBD48: .word 0x0380FFF4
arm_func_end sub_027EBD2C
arm_func_start sub_027EBD4C
sub_027EBD4C: ; 0x027EBD4C
ldr r3, _027EBD9C ; =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, _027EBDA0 ; =0x048080AC
mov r1, #8
strneh r1, [r0]
ldreq r0, _027EBDA4 ; =0x048080AE
streqh r1, [r0]
bx lr
.align 2, 0
_027EBD9C: .word 0x0380FFF4
_027EBDA0: .word 0x048080AC
_027EBDA4: .word 0x048080AE
arm_func_end sub_027EBD4C
arm_func_start sub_027EBDA8
sub_027EBDA8: ; 0x027EBDA8
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_027EBFE0
cmp r0, #0x40
bne _027EBDDC
ldr r1, _027EBDE4 ; =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]
_027EBDDC:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EBDE4: .word 0x0380FFF4
arm_func_end sub_027EBDA8
arm_func_start sub_027EBDE8
sub_027EBDE8: ; 0x027EBDE8
ldr r1, _027EBE08 ; =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
_027EBE08: .word 0x0380FFF4
arm_func_end sub_027EBDE8
arm_func_start sub_027EBE0C
sub_027EBE0C: ; 0x027EBE0C
ldr r3, _027EBE28 ; =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
_027EBE28: .word 0x0380FFF4
arm_func_end sub_027EBE0C
arm_func_start sub_027EBE2C
sub_027EBE2C: ; 0x027EBE2C
ldr r3, _027EBE48 ; =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
_027EBE48: .word 0x0380FFF4
arm_func_end sub_027EBE2C
arm_func_start sub_027EBE4C
sub_027EBE4C: ; 0x027EBE4C
ldr r3, _027EBE68 ; =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
_027EBE68: .word 0x0380FFF4
arm_func_end sub_027EBE4C
arm_func_start sub_027EBE6C
sub_027EBE6C: ; 0x027EBE6C
ldr r3, _027EBE88 ; =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
_027EBE88: .word 0x0380FFF4
arm_func_end sub_027EBE6C
arm_func_start sub_027EBE8C
sub_027EBE8C: ; 0x027EBE8C
ldr r2, _027EBEAC ; =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
_027EBEAC: .word 0x0380FFF4
arm_func_end sub_027EBE8C
arm_func_start sub_027EBEB0
sub_027EBEB0: ; 0x027EBEB0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _027EBF5C ; =0x0380FFF4
mov r7, r0
ldr r1, [r1]
mov r0, #0x1000000
add r1, r1, #0x12c
add r4, r1, #0x400
bl sub_037FB928
mov r6, r0
mov r5, #1
mov r1, #2
b _027EBF40
_027EBEE0:
ldrh r0, [r4, #0xe]
tst r0, r1
bne _027EBF38
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 _027EBF10
bl sub_027E9EE0
_027EBF10:
ldr r0, _027EBF5C ; =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_037FB8F0
mov r0, r5
b _027EBF54
_027EBF38:
add r5, r5, #1
mov r1, r1, lsl #1
_027EBF40:
cmp r5, #0x10
blo _027EBEE0
mov r0, r6
bl sub_037FB8F0
mov r0, #0
_027EBF54:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027EBF5C: .word 0x0380FFF4
arm_func_end sub_027EBEB0
arm_func_start sub_027EBF60
sub_027EBF60: ; 0x027EBF60
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _027EBFDC ; =0x0380FFF4
mov r5, r0
ldr r4, [r1]
bl sub_027EC1C8
mov r0, r5
bl sub_027EC0CC
cmp r0, #0
beq _027EBFD4
ldr r1, _027EBFDC ; =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 _027EBFD4
bl sub_027E9E94
_027EBFD4:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027EBFDC: .word 0x0380FFF4
arm_func_end sub_027EBF60
arm_func_start sub_027EBFE0
sub_027EBFE0: ; 0x027EBFE0
ldr r2, _027EBFFC ; =0x0380FFF4
mov r1, #0x1c
ldr r2, [r2]
mul r1, r0, r1
ldr r0, [r2, #0x31c]
ldrh r0, [r0, r1]
bx lr
.align 2, 0
_027EBFFC: .word 0x0380FFF4
arm_func_end sub_027EBFE0
arm_func_start sub_027EC000
sub_027EC000: ; 0x027EC000
ldr r1, _027EC01C ; =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
_027EC01C: .word 0x0380FFF4
arm_func_end sub_027EC000
arm_func_start sub_027EC020
sub_027EC020: ; 0x027EC020
ldr r1, _027EC03C ; =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
_027EC03C: .word 0x0380FFF4
arm_func_end sub_027EC020
arm_func_start sub_027EC040
sub_027EC040: ; 0x027EC040
ldr r2, _027EC05C ; =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
_027EC05C: .word 0x0380FFF4
arm_func_end sub_027EC040
arm_func_start sub_027EC060
sub_027EC060: ; 0x027EC060
ldr r2, _027EC07C ; =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
_027EC07C: .word 0x0380FFF4
arm_func_end sub_027EC060
arm_func_start sub_027EC080
sub_027EC080: ; 0x027EC080
ldr r2, _027EC09C ; =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
_027EC09C: .word 0x0380FFF4
arm_func_end sub_027EC080
arm_func_start sub_027EC0A0
sub_027EC0A0: ; 0x027EC0A0
ldr r2, _027EC0C8 ; =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
_027EC0C8: .word 0x0380FFF4
arm_func_end sub_027EC0A0
arm_func_start sub_027EC0CC
sub_027EC0CC: ; 0x027EC0CC
ldr r2, _027EC0E8 ; =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
_027EC0E8: .word 0x0380FFF4
arm_func_end sub_027EC0CC
arm_func_start sub_027EC0EC
sub_027EC0EC: ; 0x027EC0EC
ldr r2, _027EC108 ; =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
_027EC108: .word 0x0380FFF4
arm_func_end sub_027EC0EC
arm_func_start sub_027EC10C
sub_027EC10C: ; 0x027EC10C
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
bl sub_027EBFE0
cmp r0, #0x40
bne _027EC1B8
ldr r0, _027EC1C0 ; =0x0380FFF4
mov r1, #1
ldr r2, [r0]
add r0, r2, #0x500
ldrh r0, [r0, #0x34]
tst r0, r1, lsl r5
bne _027EC1B8
add r0, r2, #0x300
ldrh r2, [r0, #0xd8]
ldr r1, _027EC1C4 ; =0x0480425C
mov r0, #0x1000000
add r6, r2, r1
bl sub_037FB928
mov r4, r0
cmp r5, #0
bne _027EC17C
add r0, r6, #4
bl sub_027EAD50
orr r1, r0, #1
add r0, r6, #4
and r1, r1, #0xff
bl sub_027EAD24
b _027EC1B0
_027EC17C:
mov r0, r5
bl sub_027EC0CC
mov r5, r0
add r0, r6, #5
add r6, r0, r5, lsr #3
mov r0, r6
bl sub_027EAD50
and r1, r5, #7
mov r2, #1
orr r1, r0, r2, lsl r1
mov r0, r6
and r1, r1, #0xff
bl sub_027EAD24
_027EC1B0:
mov r0, r4
bl sub_037FB8F0
_027EC1B8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027EC1C0: .word 0x0380FFF4
_027EC1C4: .word 0x0480425C
arm_func_end sub_027EC10C
arm_func_start sub_027EC1C8
sub_027EC1C8: ; 0x027EC1C8
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
bl sub_027EBFE0
cmp r0, #0x40
bne _027EC264
ldr r0, _027EC26C ; =0x0380FFF4
ldr r2, _027EC270 ; =0x0480425C
ldr r1, [r0]
mov r0, #0x1000000
add r1, r1, #0x300
ldrh r1, [r1, #0xd8]
add r6, r1, r2
bl sub_037FB928
mov r4, r0
cmp r5, #0
bne _027EC224
add r0, r6, #4
bl sub_027EAD50
and r1, r0, #0xfe
add r0, r6, #4
and r1, r1, #0xff
bl sub_027EAD24
b _027EC25C
_027EC224:
mov r0, r5
bl sub_027EC0CC
mov r5, r0
add r0, r6, #5
add r6, r0, r5, lsr #3
mov r0, r6
bl sub_027EAD50
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_027EAD24
_027EC25C:
mov r0, r4
bl sub_037FB8F0
_027EC264:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027EC26C: .word 0x0380FFF4
_027EC270: .word 0x0480425C
arm_func_end sub_027EC1C8
arm_func_start sub_027EC274
sub_027EC274: ; 0x027EC274
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr fp, _027EC424 ; =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 _027EC410
_027EC2A8:
ldrh r0, [r7]
cmp r0, #0
beq _027EC400
ldrh r1, [r7, #0x18]
cmp r1, #0
ldrne r0, _027EC428 ; =0x0000FFFF
cmpne r1, r0
beq _027EC3FC
sub r0, r1, #1
strh r0, [r7, #0x18]
ldrh r0, [r7, #0x18]
cmp r0, #0
bne _027EC3FC
ldrh r0, [r7]
cmp r0, #0x20
blo _027EC3E8
mov r0, r8
bl sub_027EBFE0
mov r6, r0
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_027EBC44
mov r0, r8
bl sub_027F0D60
ldrh r0, [r4, #0x50]
cmp r0, #1
bne _027EC398
cmp r6, #0x20
bls _027EC3E8
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_027EBD4C
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_027F1EBC
cmp r0, #0
mov r1, #1
beq _027EC38C
strh r1, [r0]
bl sub_027F107C
add sb, sb, #1
b _027EC408
_027EC38C:
add r0, r7, #4
bl sub_027EDBE4
b _027EC3E8
_027EC398:
ldrh r0, [r4, #0xcc]
cmp r8, r0
bne _027EC3E8
add r0, r7, #4
mov r1, #1
mov r2, #0
bl sub_027F1EBC
cmp r0, #0
beq _027EC3D0
mov r1, #1
strh r1, [r0]
bl sub_027F107C
add sb, sb, #1
b _027EC408
_027EC3D0:
mov r0, #0x20
bl sub_037F9238
bl sub_027EA03C
add r0, r7, #4
mov r1, #1
bl sub_027EDBE4
_027EC3E8:
mov r0, #0
strh r0, [r7]
ldrh r0, [r5]
sub r0, r0, #1
strh r0, [r5]
_027EC3FC:
add sb, sb, #1
_027EC400:
cmp sb, sl
bhs _027EC41C
_027EC408:
add r8, r8, #1
add r7, r7, #0x1c
_027EC410:
ldrh r0, [r4, #0x22]
cmp r8, r0
blo _027EC2A8
_027EC41C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027EC424: .word 0x0380FFF4
_027EC428: .word 0x0000FFFF
arm_func_end sub_027EC274
arm_func_start sub_027EC42C
sub_027EC42C: ; 0x027EC42C
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_027F0D60
ldr r2, _027EC470 ; =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
_027EC470: .word 0x0380FFF4
arm_func_end sub_027EC42C
arm_func_start sub_027EC474
sub_027EC474: ; 0x027EC474
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _027EC504 ; =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_037FDF74
ldr r1, _027EC504 ; =0x0380FFF4
mov r0, #0
ldr r1, [r1]
mov r2, #0x10
add r1, r1, #0x12c
add r1, r1, #0x400
bl sub_037FDF74
ldr r2, _027EC508 ; =0x0000FFFF
mov r3, #1
strh r2, [r4, #0x1a]
mov r0, #0x1c
b _027EC4DC
_027EC4D0:
mla r1, r3, r0, r4
strh r2, [r1, #0x1a]
add r3, r3, #1
_027EC4DC:
cmp r3, r5
blo _027EC4D0
ldr r1, _027EC50C ; =0x027F74A4
mov r0, #0
bl sub_027EC598
mov r0, #0
mov r1, #0x40
bl sub_027EBC44
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027EC504: .word 0x0380FFF4
_027EC508: .word 0x0000FFFF
_027EC50C: .word 0x027F74A4
arm_func_end sub_027EC474
arm_func_start sub_027EC510
sub_027EC510: ; 0x027EC510
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r0, _027EC590 ; =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 _027EC558
_027EC544:
mla r1, r6, r8, r4
mov r0, sl
mov r2, sb
bl sub_037FDF74
add r6, r6, #1
_027EC558:
cmp r6, r7
blo _027EC544
mov r2, #1
strh r2, [r5]
mov r1, #0
strh r1, [r5, #2]
ldr r0, _027EC594 ; =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
_027EC590: .word 0x0380FFF4
_027EC594: .word 0x0000FFFE
arm_func_end sub_027EC510
arm_func_start sub_027EC598
sub_027EC598: ; 0x027EC598
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _027EC674 ; =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_037FDF74
ldr r0, _027EC674 ; =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_027EBD4C
ldr r0, _027EC674 ; =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_027EA0E0
ldr r2, _027EC678 ; =0x0000FFFF
mov r0, r7, lsl #0x10
ldr r1, _027EC674 ; =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_027EBC44
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027EC674: .word 0x0380FFF4
_027EC678: .word 0x0000FFFF
arm_func_end sub_027EC598
arm_func_start sub_027EC67C
sub_027EC67C: ; 0x027EC67C
mov r0, #3
bx lr
arm_func_end sub_027EC67C
arm_func_start sub_027EC684
sub_027EC684: ; 0x027EC684
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r6, _027EC6E0 ; =0x0380FFF4
mov r5, #0
ldr r0, [r6]
mvn r4, #0
ldr r7, [r0, #0x1f4]
b _027EC6D0
_027EC6A0:
ldr r0, [r0, #0x304]
mov r1, r7
mov r2, r5
bl sub_037FC6D4
cmp r0, #0
beq _027EC6D8
ldr r0, [r6]
mov r1, r7
add r0, r0, #0x1f4
bl sub_037F87AC
ldr r0, [r6]
ldr r7, [r0, #0x1f4]
_027EC6D0:
cmp r7, r4
bne _027EC6A0
_027EC6D8:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027EC6E0: .word 0x0380FFF4
arm_func_end sub_027EC684
arm_func_start sub_027EC6E4
sub_027EC6E4: ; 0x027EC6E4
ldr r0, _027EC6FC ; =0x0380FFF4
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x400
strh r1, [r0, #0x28]
bx lr
.align 2, 0
_027EC6FC: .word 0x0380FFF4
arm_func_end sub_027EC6E4
arm_func_start sub_027EC700
sub_027EC700: ; 0x027EC700
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 _027EC738
bl sub_037F9198
ldrh r0, [r4, #0x10]
cmp r0, #1
bne _027EC734
bl sub_027EA17C
_027EC734:
mov r0, #0
_027EC738:
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027EC700
arm_func_start sub_027EC740
sub_027EC740: ; 0x027EC740
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 _027EC7DC
ldrh r1, [r4, #0x12]
cmp r1, #1
movhi r0, #5
bhi _027EC7DC
ldrh r1, [r4, #0x14]
cmp r1, #1
movhi r0, #5
bhi _027EC7DC
bl sub_027E9C4C
ldrh r0, [r4, #0x10]
cmp r0, #1
bne _027EC7C8
ldrh r0, [r4, #0x12]
cmp r0, #1
bne _027EC7A8
ldr r0, _027EC7E4 ; =0x00008001
bl sub_027E9CE0
b _027EC7B0
_027EC7A8:
mov r0, #0
bl sub_027E9CE0
_027EC7B0:
ldr r0, _027EC7E8 ; =0x0380FFF4
ldrh r1, [r4, #0x14]
ldr r0, [r0]
add r0, r0, #0x300
strh r1, [r0, #0x58]
b _027EC7D8
_027EC7C8:
mov r0, #0x8000
bl sub_027E9CE0
mov r0, #2
bl sub_027E9CB4
_027EC7D8:
mov r0, #0
_027EC7DC:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EC7E4: .word 0x00008001
_027EC7E8: .word 0x0380FFF4
arm_func_end sub_027EC740
arm_func_start sub_027EC7EC
sub_027EC7EC: ; 0x027EC7EC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r2, _027EC928 ; =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 _027EC920
ldr r0, _027EC928 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0x20
movlo r0, #1
blo _027EC920
ldrh r0, [r6, #0x16]
cmp r0, #0x20
movhi r0, #5
bhi _027EC920
ldrh r0, [r6, #0x38]
cmp r0, #1
movhi r0, #5
bhi _027EC920
add r0, r6, #0x3a
bl sub_027EAD50
cmp r0, #0
moveq r0, #5
beq _027EC920
ldrh r0, [r6, #0x4a]
cmp r0, #0x3e8
movhi r0, #5
bhi _027EC920
cmp r0, #0xa
movlo r0, #5
blo _027EC920
ldrh r0, [r6, #0x4c]
cmp r0, #0x10
movhi r0, #5
bhi _027EC920
mov r8, #0
add r7, r6, #0x3a
b _027EC8E4
_027EC8C0:
add r0, r7, r8
bl sub_027EAD50
cmp r0, #0
beq _027EC8EC
bl sub_027EA4A4
cmp r0, #0
moveq r0, #5
beq _027EC920
add r8, r8, #1
_027EC8E4:
cmp r8, #0x10
blo _027EC8C0
_027EC8EC:
add r0, r6, #0x10
bl sub_027E956C
ldrh r0, [r6, #0x16]
add r1, r6, #0x18
bl sub_027E95D0
str r6, [r4, #0x18]
str r5, [r4, #0x1c]
mov r2, #0x10
mov r0, #2
mov r1, #0
strh r2, [r4]
bl sub_037F8598
mov r0, #0x80
_027EC920:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027EC928: .word 0x0380FFF4
arm_func_end sub_027EC7EC
arm_func_start sub_027EC92C
sub_027EC92C: ; 0x027EC92C
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _027ECADC ; =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 _027ECAD4
ldrh r0, [r0, #8]
cmp r0, #0x20
movlo r0, #1
blo _027ECAD4
mov r0, #0x20
bl sub_037F9238
ldrh r0, [r6, #0x18]
tst r0, #1
movne r0, #5
bne _027ECAD4
ldrh r0, [r6, #0x1e]
cmp r0, #0
moveq r0, #5
beq _027ECAD4
cmp r0, #0x20
movhi r0, #5
bhi _027ECAD4
ldrh r0, [r6, #0x46]
cmp r0, #0xa
movlo r0, #5
blo _027ECAD4
cmp r0, #0x3e8
movhi r0, #5
bhi _027ECAD4
ldrh r0, [r6, #0x48]
cmp r0, #0xff
movhi r0, #5
bhi _027ECAD4
ldrh r0, [r6, #0x4a]
ldr r1, _027ECAE0 ; =0x0000FFF0
tst r0, r1
movne r0, #5
bne _027ECAD4
bl sub_027EA4A4
cmp r0, #0
moveq r0, #5
beq _027ECAD4
ldrh r2, [r6, #0x42]
mov r0, #0x1000
rsb r0, r0, #0
tst r2, r0
movne r0, #5
bne _027ECAD4
ldrh r1, [r6, #0x44]
tst r1, r0
movne r0, #5
bne _027ECAD4
cmp r2, #0
moveq r0, #5
beq _027ECAD4
orrs r0, r1, r2
moveq r0, #5
beq _027ECAD4
ldrh r0, [r6, #0x10]
cmp r0, #0x7d0
movhi r0, #5
bhi _027ECAD4
mov r0, #0
bl sub_027F4D2C
cmp r0, #0
movne r0, #0xe
bne _027ECAD4
ldrh r0, [r6, #0x40]
tst r0, #0x20
beq _027ECA7C
mov r0, #1
bl sub_027E9290
b _027ECA84
_027ECA7C:
mov r0, #0
bl sub_027E9290
_027ECA84:
add r0, r6, #0x18
bl sub_027E956C
ldrh r0, [r6, #0x1e]
add r1, r6, #0x20
bl sub_027E95D0
ldrh r0, [r6, #0x46]
bl sub_027E96E0
ldrh r0, [r6, #0x4a]
mov r1, #0
bl sub_027E9900
add r0, r6, #0x42
bl sub_027E9B8C
str r6, [r4, #0x18]
str r5, [r4, #0x1c]
mov r2, #0x20
mov r0, #2
mov r1, #1
strh r2, [r4]
bl sub_037F8598
mov r0, #0x80
_027ECAD4:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027ECADC: .word 0x0380FFF4
_027ECAE0: .word 0x0000FFF0
arm_func_end sub_027EC92C
arm_func_start sub_027ECAE4
sub_027ECAE4: ; 0x027ECAE4
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _027ECBB4 ; =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 _027ECBAC
ldrh r0, [r0, #8]
cmp r0, #0x20
movlo r0, #1
blo _027ECBAC
ldrh r0, [r6, #0x10]
tst r0, #1
movne r0, #5
bne _027ECBAC
ldrh r0, [r6, #0x16]
cmp r0, #1
movhi r0, #5
bhi _027ECBAC
ldrh r0, [r6, #0x18]
cmp r0, #0x7d0
movhi r0, #5
bhi _027ECBAC
cmp r0, #0xa
movlo r0, #5
blo _027ECBAC
mov r0, #0x20
bl sub_037F9238
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_027EA0E0
bl sub_027ED544
mov r0, #0x80
_027ECBAC:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027ECBB4: .word 0x0380FFF4
arm_func_end sub_027ECAE4
arm_func_start sub_027ECBB8
sub_027ECBB8: ; 0x027ECBB8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _027ECCE8 ; =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 _027ECCE0
add r0, r3, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0x30
movlo r0, #1
blo _027ECCE0
add r0, r2, #0xfe
add r0, r0, #0xff00
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _027ECC38
ldrh r0, [r7, #0x10]
tst r0, #1
movne r0, #5
bne _027ECCE0
_027ECC38:
add r0, r6, #6
add r1, r7, #0x10
bl sub_027EA0E0
ldrh r1, [r7, #0x16]
add r0, r6, #6
mov r2, #0
bl sub_027F1EBC
movs r4, r0
moveq r0, #8
beq _027ECCE0
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 _027ECCCC
ldr r2, _027ECCE8 ; =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_027EBAE8
ldr r0, _027ECCE8 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x500
ldrh r1, [r0, #0x32]
ldrh r2, [r0, #0x2e]
mvn r0, r1
tst r2, r0
bne _027ECCDC
mov r0, #2
bl sub_027EFEF4
b _027ECCDC
_027ECCCC:
add r0, r7, #0x10
bl sub_027F0E58
mov r0, r4
bl sub_027F107C
_027ECCDC:
mov r0, #0x80
_027ECCE0:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027ECCE8: .word 0x0380FFF4
arm_func_end sub_027ECBB8
arm_func_start sub_027ECCEC
sub_027ECCEC: ; 0x027ECCEC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _027ECDC0 ; =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 _027ECDB8
ldrh r0, [r4, #8]
cmp r0, #0x30
movlo r0, #1
blo _027ECDB8
ldrh r0, [r7, #0x10]
tst r0, #1
movne r0, #5
bne _027ECDB8
ldrh r0, [r7, #0x16]
cmp r0, #0
moveq r0, #5
beq _027ECDB8
cmp r0, #0xff
movhi r0, #5
bhi _027ECDB8
ldrh r0, [r7, #0x18]
cmp r0, #0x7d0
movhi r0, #5
bhi _027ECDB8
cmp r0, #0xa
movlo r0, #5
blo _027ECDB8
mov r0, #0x30
bl sub_037F9238
bl sub_027EA03C
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_027ED668
mov r0, #0x80
_027ECDB8:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027ECDC0: .word 0x0380FFF4
arm_func_end sub_027ECCEC
arm_func_start sub_027ECDC4
sub_027ECDC4: ; 0x027ECDC4
stmdb sp!, {r3, lr}
ldr r3, _027ECE80 ; =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 _027ECE78
ldrh r2, [ip, #8]
cmp r2, #0x30
movlo r0, #1
blo _027ECE78
ldrh r2, [r0, #0x10]
tst r2, #1
movne r0, #5
bne _027ECE78
ldrh r3, [r0, #0x16]
cmp r3, #1
movlo r0, #5
blo _027ECE78
cmp r3, #0xff
movhi r0, #5
bhi _027ECE78
ldrh r2, [r0, #0x18]
cmp r2, #0x7d0
movhi r0, #5
bhi _027ECE78
cmp r2, #0xa
movlo r0, #5
blo _027ECE78
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_027ED764
mov r0, #0x80
_027ECE78:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027ECE80: .word 0x0380FFF4
arm_func_end sub_027ECDC4
arm_func_start sub_027ECE84
sub_027ECE84: ; 0x027ECE84
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _027ECF8C ; =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 _027ECF84
cmp r2, #1
beq _027ECED8
ldrh r0, [r7, #0x10]
tst r0, #1
movne r0, #5
bne _027ECF84
_027ECED8:
add r0, r3, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0x40
movne r0, #1
bne _027ECF84
ldrh r1, [r7, #0x16]
add r0, r7, #0x10
bl sub_027F16A4
movs r4, r0
moveq r0, #8
beq _027ECF84
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 _027ECF70
ldr r2, _027ECF8C ; =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_027EBAE8
ldr r0, _027ECF8C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x500
ldrh r1, [r0, #0x32]
ldrh r2, [r0, #0x2e]
mvn r0, r1
tst r2, r0
bne _027ECF80
mov r0, #2
bl sub_027EFEF4
b _027ECF80
_027ECF70:
add r0, r7, #0x10
bl sub_027F0E58
mov r0, r4
bl sub_027F107C
_027ECF80:
mov r0, #0x80
_027ECF84:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027ECF8C: .word 0x0380FFF4
arm_func_end sub_027ECE84
arm_func_start sub_027ECF90
sub_027ECF90: ; 0x027ECF90
stmdb sp!, {r4, r5, r6, lr}
ldr r3, _027ED124 ; =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 _027ED11C
ldrh r0, [r4, #8]
cmp r0, #0x20
movne r0, #1
bne _027ED11C
ldrh r0, [r6, #0x10]
cmp r0, #0x20
movhi r0, #5
bhi _027ED11C
cmp r0, #0
moveq r0, #5
beq _027ED11C
ldrh r0, [r6, #0x32]
cmp r0, #0xa
movlo r0, #5
blo _027ED11C
cmp r0, #0x3e8
movhi r0, #5
bhi _027ED11C
ldrh r0, [r6, #0x34]
cmp r0, #0
moveq r0, #5
beq _027ED11C
cmp r0, #0xff
movhi r0, #5
bhi _027ED11C
ldrh r0, [r6, #0x36]
ldr r1, _027ED128 ; =0x0000FFF0
tst r0, r1
movne r0, #5
bne _027ED11C
bl sub_027EA4A4
cmp r0, #0
moveq r0, #5
beq _027ED11C
ldrh r1, [r6, #0x38]
cmp r1, #0
moveq r0, #5
beq _027ED11C
mov r0, #0x1000
rsb r0, r0, #0
tst r1, r0
movne r0, #5
bne _027ED11C
ldrh r1, [r6, #0x3a]
cmp r1, #0
moveq r0, #5
beq _027ED11C
tst r1, r0
movne r0, #5
bne _027ED11C
ldrh r0, [r6, #0x3c]
cmp r0, #0x80
movhi r0, #5
bhi _027ED11C
mov r0, #0
bl sub_027F4D2C
cmp r0, #0
movne r0, #0xe
bne _027ED11C
ldrh r0, [r5, #0x12]
cmp r0, #0
bne _027ED0C8
ldr r0, _027ED12C ; =0x027F74A4
bl sub_027E956C
b _027ED0D0
_027ED0C8:
add r0, r5, #8
bl sub_027E956C
_027ED0D0:
ldrh r0, [r6, #0x10]
add r1, r6, #0x12
bl sub_027E95D0
ldrh r0, [r6, #0x32]
bl sub_027E96E0
ldrh r0, [r6, #0x34]
bl sub_027E9738
ldrh r0, [r6, #0x36]
mov r1, #0
bl sub_027E9900
add r0, r6, #0x38
bl sub_027E9B8C
ldrh r0, [r6, #0x3c]
add r1, r6, #0x3e
bl sub_027E9F10
mov r0, #0
strh r0, [r4, #0xa4]
bl sub_037F8DE0
mov r0, #0
_027ED11C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027ED124: .word 0x0380FFF4
_027ED128: .word 0x0000FFF0
_027ED12C: .word 0x027F74A4
arm_func_end sub_027ECF90
arm_func_start sub_027ED130
sub_027ED130: ; 0x027ED130
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r2, _027ED210 ; =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 _027ED208
ldrh r0, [r6, #0x12]
cmp r0, #3
movhi r0, #5
bhi _027ED208
ldrh r0, [r6, #0x14]
cmp r0, #0x3f
movhi r0, #5
bhi _027ED208
ldrh r0, [r6, #0x16]
cmp r0, #0
moveq r0, #5
beq _027ED208
cmp r0, #0x3e8
movhi r0, #5
bhi _027ED208
mov r8, #0
add r7, r6, #0x18
b _027ED1D8
_027ED1B4:
add r0, r7, r8
bl sub_027EAD50
cmp r0, #0
beq _027ED1E0
bl sub_027EA4A4
cmp r0, #0
moveq r0, #5
beq _027ED208
add r8, r8, #1
_027ED1D8:
cmp r8, #0x10
blo _027ED1B4
_027ED1E0:
cmp r8, #0
moveq r0, #5
beq _027ED208
str r6, [r4, #0x18]
str r5, [r4, #0x1c]
mov r0, #0x80
strh r0, [r4]
strh r0, [r5, #4]
bl sub_027ED858
mov r0, #0x80
_027ED208:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027ED210: .word 0x0380FFF4
arm_func_end sub_027ED130
arm_func_start sub_027ED214
sub_027ED214: ; 0x027ED214
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _027ED3FC ; =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 _027ED3E0
_027ED248: ; jump table
b _027ED260 ; case 0
b _027ED2D8 ; case 1
b _027ED368 ; case 2
b _027ED368 ; case 3
b _027ED3E0 ; case 4
b _027ED3C0 ; case 5
_027ED260:
mov r0, #0x20
bl sub_037F9238
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 _027ED2C8
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 _027ED2CC
_027ED2C8:
strh r0, [r4, #0xc]
_027ED2CC:
ldr r0, [r4, #0x1c]
mov r1, #0
strh r1, [r0, #4]
_027ED2D8:
ldr r1, [r4, #0x18]
ldrh r0, [r4, #6]
add r1, r1, #0x3a
add r0, r1, r0
bl sub_027EAD50
movs r5, r0
moveq r0, #0x15
streqh r0, [r4]
moveq r6, #1
beq _027ED3E0
ldrh r1, [r4, #6]
mov r0, #0
add r1, r1, #1
strh r1, [r4, #6]
strh r0, [r4, #0xa]
bl sub_027F4D2C
cmp r0, #0
beq _027ED33C
ldr r0, [r4, #0x1c]
mov r1, #0xe
strh r1, [r0, #4]
mov r0, #0x15
strh r0, [r4]
mov r6, #1
b _027ED3E0
_027ED33C:
ldrh r0, [r4]
mov r1, #0
cmp r0, #0x10
mov r0, r5
bne _027ED35C
bl sub_027E9900
bl sub_037F8DE0
b _027ED360
_027ED35C:
bl sub_027E9900
_027ED360:
mov r0, #0x12
strh r0, [r4]
_027ED368:
mov r0, #0x13
strh r0, [r4]
ldr r1, [r4, #0x18]
ldrh r0, [r1, #0x38]
cmp r0, #0
bne _027ED3B0
add r0, r1, #0x10
bl sub_027F1B50
cmp r0, #0
bne _027ED3AC
ldr r0, [r4, #0x1c]
mov r1, #8
strh r1, [r0, #4]
mov r0, #0x15
strh r0, [r4]
mov r6, #1
b _027ED3E0
_027ED3AC:
bl sub_027F107C
_027ED3B0:
ldrh r0, [r4, #0xc]
ldr r1, _027ED400 ; =0x027ED404
bl sub_027EAAEC
b _027ED3E0
_027ED3C0:
strh r6, [r4]
bl sub_037F9198
ldr r0, _027ED3FC ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x2e]
strh r0, [r5, #0xc]
bl sub_027EDB14
_027ED3E0:
cmp r6, #0
beq _027ED3F4
mov r0, #2
mov r1, #0
bl sub_037F8598
_027ED3F4:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027ED3FC: .word 0x0380FFF4
_027ED400: .word 0x027ED404
arm_func_end sub_027ED214
arm_func_start sub_027ED404
sub_027ED404: ; 0x027ED404
ldr r0, _027ED460 ; =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 _027ED450
ldrh r0, [r2, #6]
cmp r0, #0x10
movlo r0, #0x11
strloh r0, [r2]
movhs r0, #0x15
strhsh r0, [r2]
_027ED450:
ldr ip, _027ED464 ; =sub_037F8598
mov r0, #2
mov r1, #0
bx ip
.align 2, 0
_027ED460: .word 0x0380FFF4
_027ED464: .word sub_037F8598
arm_func_end sub_027ED404
arm_func_start sub_027ED468
sub_027ED468: ; 0x027ED468
stmdb sp!, {r4, lr}
ldr r0, _027ED500 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
cmp r1, #0x20
add r4, r0, #0x400
beq _027ED498
cmp r1, #0x25
beq _027ED4C4
b _027ED4F8
_027ED498:
bl sub_037F8DE0
mov r0, #0
strh r0, [r4, #4]
strh r0, [r4, #6]
mov r0, #0x21
strh r0, [r4]
ldr r0, [r4, #0x18]
ldr r1, _027ED504 ; =0x027ED508
ldrh r0, [r0, #0x10]
bl sub_027EAAEC
b _027ED4F8
_027ED4C4:
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 _027ED4EC
bl sub_037F9198
_027ED4EC:
mov r0, #0
strh r0, [r4]
bl sub_027EDB14
_027ED4F8:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027ED500: .word 0x0380FFF4
_027ED504: .word 0x027ED508
arm_func_end sub_027ED468
arm_func_start sub_027ED508
sub_027ED508: ; 0x027ED508
ldr r0, _027ED53C ; =0x0380FFF4
ldr ip, _027ED540 ; =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
_027ED53C: .word 0x0380FFF4
_027ED540: .word sub_037F8598
arm_func_end sub_027ED508
arm_func_start sub_027ED544
sub_027ED544: ; 0x027ED544
stmdb sp!, {r4, lr}
ldr r0, _027ED620 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
cmp r1, #0x30
add r4, r0, #0x400
beq _027ED574
cmp r1, #0x35
beq _027ED5F0
b _027ED618
_027ED574:
ldr r0, [r4, #0x18]
mov r1, #0
mov r2, r1
add r0, r0, #0x10
bl sub_027F1DFC
cmp r0, #0
bne _027ED5B4
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_037F8598
b _027ED618
_027ED5B4:
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_027F107C
ldr r0, [r4, #0x18]
ldr r1, _027ED624 ; =0x027ED628
ldrh r0, [r0, #0x18]
bl sub_027EAAEC
b _027ED618
_027ED5F0:
mov r0, #1
bl sub_027F0CD4
mov r0, #1
bl sub_027F0C70
mov r0, #1
mov r1, #0
bl sub_027F0FF0
mov r0, #0
strh r0, [r4]
bl sub_027EDB14
_027ED618:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027ED620: .word 0x0380FFF4
_027ED624: .word 0x027ED628
arm_func_end sub_027ED544
arm_func_start sub_027ED628
sub_027ED628: ; 0x027ED628
stmdb sp!, {r3, lr}
ldr r1, _027ED664 ; =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_037F8598
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027ED664: .word 0x0380FFF4
arm_func_end sub_027ED628
arm_func_start sub_027ED668
sub_027ED668: ; 0x027ED668
stmdb sp!, {r4, lr}
ldr r0, _027ED720 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
cmp r1, #0x50
add r4, r0, #0x400
beq _027ED698
cmp r1, #0x53
beq _027ED6F0
b _027ED718
_027ED698:
ldr r0, [r4, #0x18]
add r0, r0, #0x10
bl sub_027F1720
cmp r0, #0
bne _027ED6D0
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_037F8598
b _027ED718
_027ED6D0:
mov r1, #0x51
strh r1, [r4]
bl sub_027F107C
ldr r0, [r4, #0x18]
ldr r1, _027ED724 ; =0x027ED728
ldrh r0, [r0, #0x18]
bl sub_027EAAEC
b _027ED718
_027ED6F0:
mov r0, #1
bl sub_027F0CD4
mov r0, #1
bl sub_027F0C70
mov r0, #1
mov r1, #0
bl sub_027F0FF0
mov r0, #0
strh r0, [r4]
bl sub_027EDB14
_027ED718:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027ED720: .word 0x0380FFF4
_027ED724: .word 0x027ED728
arm_func_end sub_027ED668
arm_func_start sub_027ED728
sub_027ED728: ; 0x027ED728
ldr r0, _027ED75C ; =0x0380FFF4
ldr ip, _027ED760 ; =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
_027ED75C: .word 0x0380FFF4
_027ED760: .word sub_037F8598
arm_func_end sub_027ED728
arm_func_start sub_027ED764
sub_027ED764: ; 0x027ED764
stmdb sp!, {r4, lr}
ldr r0, _027ED814 ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x400
ldrh r1, [r0, #4]
add r0, r2, #4
cmp r1, #0x60
add r4, r0, #0x400
beq _027ED794
cmp r1, #0x63
beq _027ED7EC
b _027ED80C
_027ED794:
ldr r0, [r4, #0x18]
add r0, r0, #0x10
bl sub_027F17C8
cmp r0, #0
bne _027ED7CC
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_037F8598
b _027ED80C
_027ED7CC:
mov r1, #0x61
strh r1, [r4]
bl sub_027F107C
ldr r0, [r4, #0x18]
ldr r1, _027ED818 ; =0x027ED81C
ldrh r0, [r0, #0x18]
bl sub_027EAAEC
b _027ED80C
_027ED7EC:
mov r0, #1
bl sub_027F0C70
mov r0, #1
mov r1, #0
bl sub_027F0FF0
mov r0, #0
strh r0, [r4]
bl sub_027EDB14
_027ED80C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027ED814: .word 0x0380FFF4
_027ED818: .word 0x027ED81C
arm_func_end sub_027ED764
arm_func_start sub_027ED81C
sub_027ED81C: ; 0x027ED81C
ldr r0, _027ED850 ; =0x0380FFF4
ldr ip, _027ED854 ; =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
_027ED850: .word 0x0380FFF4
_027ED854: .word sub_037F8598
arm_func_end sub_027ED81C
arm_func_start sub_027ED858
sub_027ED858: ; 0x027ED858
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _027EDAB8 ; =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 _027EDA98
_027ED888: ; jump table
b _027ED89C ; case 0
b _027ED8DC ; case 1
b _027ED990 ; case 2
b _027ED9B8 ; case 3
b _027EDA24 ; case 4
_027ED89C:
mov r0, #0
strh r0, [r5, #0x14]
mov r0, #0x13
bl sub_027EA5C4
strh r0, [r5, #0xe]
mov r0, #0x35
bl sub_027EA5C4
strh r0, [r5, #0x10]
ldr r1, [r5, #0x18]
ldrh r0, [r1, #0x12]
ldrh r1, [r1, #0x14]
bl sub_027E935C
mov r0, #4
strh r0, [r4, #0xc]
mov r0, #0
strh r0, [r5, #0x16]
_027ED8DC:
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_027EAD50
movs r4, r0
beq _027ED910
ldrh r0, [r5, #0x14]
cmp r0, #0x10
blo _027ED91C
_027ED910:
mov r0, #0x84
strh r0, [r5]
b _027EDA98
_027ED91C:
mov r0, #0
bl sub_027F4D2C
cmp r0, #0
movne r0, #0xe
strneh r0, [r5, #0x16]
movne r0, #0x84
strneh r0, [r5]
bne _027EDA98
ldrh r0, [r5]
mov r1, #0
cmp r0, #0x80
mov r0, r4, lsl #0x10
mov r0, r0, lsr #0x10
bne _027ED974
bl sub_027E9900
bl sub_037F8DE0
ldr r1, _027EDABC ; =0x04808040
mov r0, #0x8000
ldrh r1, [r1]
strh r1, [r5, #0xc]
bl sub_027E9CE0
b _027ED978
_027ED974:
bl sub_027E9900
_027ED978:
mov r0, #0x82
strh r0, [r5]
ldr r0, [r5, #0x18]
ldr r1, _027EDAC0 ; =0x027EDAC8
ldrh r0, [r0, #0x16]
bl sub_027EAAEC
_027ED990:
ldr r1, [r5, #4]
ldr r0, _027EDAC4 ; =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 _027EDA98
_027ED9B8:
ldr r1, [r5, #0x18]
ldrh r0, [r5, #0x14]
add r1, r1, #0x18
add r0, r1, r0
bl sub_027EAD50
ldr r1, [r5, #4]
mov r4, r0
cmp r1, #0
ldrne r0, [r5, #8]
mov r2, #0
cmpne r0, #0
beq _027ED9F8
bl sub_03806DD4
add r2, r0, #1
cmp r2, #0x64
movhi r2, #0x64
_027ED9F8:
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 _027EDA98
_027EDA24:
bl sub_037F9198
ldr r1, _027EDAB8 ; =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_027EA5F0
ldrh r1, [r5, #0x10]
mov r0, #0x35
bl sub_027EA5F0
ldrh r0, [r5, #0xc]
bl sub_027E9CE0
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 _027EDA8C
_027EDA7C:
ldr r0, [r5, #0x1c]
add r0, r0, r2, lsl #1
strh r1, [r0, #8]
add r2, r2, #1
_027EDA8C:
cmp r2, #0x10
blo _027EDA7C
bl sub_027EDB14
_027EDA98:
ldrh r0, [r5]
cmp r0, #0
beq _027EDAB0
mov r0, #2
mov r1, #5
bl sub_037F8598
_027EDAB0:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027EDAB8: .word 0x0380FFF4
_027EDABC: .word 0x04808040
_027EDAC0: .word 0x027EDAC8
_027EDAC4: .word 0x0480819C
arm_func_end sub_027ED858
arm_func_start sub_027EDAC8
sub_027EDAC8: ; 0x027EDAC8
ldr r0, _027EDAEC ; =0x0380FFF4
ldr ip, _027EDAF0 ; =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
_027EDAEC: .word 0x0380FFF4
_027EDAF0: .word sub_037F8598
arm_func_end sub_027EDAC8
arm_func_start sub_027EDAF4
sub_027EDAF4: ; 0x027EDAF4
ldr r0, _027EDB0C ; =0x0380FFF4
ldr ip, _027EDB10 ; =sub_027EDEC0
ldr r0, [r0]
add r0, r0, #0xc6
add r0, r0, #0x300
bx ip
.align 2, 0
_027EDB0C: .word 0x0380FFF4
_027EDB10: .word sub_027EDEC0
arm_func_end sub_027EDAF4
arm_func_start sub_027EDB14
sub_027EDB14: ; 0x027EDB14
stmdb sp!, {r4, lr}
ldr r0, _027EDB64 ; =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_037F8D58
ldrh r0, [r4, #0x8c]
cmp r0, #0
beq _027EDB5C
mov r0, #2
mov r1, #0xb
bl sub_037F8598
_027EDB5C:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EDB64: .word 0x0380FFF4
arm_func_end sub_027EDB14
arm_func_start sub_027EDB68
sub_027EDB68: ; 0x027EDB68
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _027EDBE0 ; =0x0380FFF4
mov r5, r1
ldr r1, [r2]
mov r6, r0
add r0, r1, #0x188
mov r1, #0x18
bl sub_037F886C
movs r4, r0
bne _027EDBA0
mov r0, #1
bl sub_027EB06C
mov r0, #0
b _027EDBD8
_027EDBA0:
mov r0, #0x84
strh r0, [r4, #0xc]
mov r2, #4
mov r1, r6
add r0, r4, #0x10
strh r2, [r4, #0xe]
bl sub_027EA0E0
ldr r0, _027EDBE0 ; =0x0380FFF4
strh r5, [r4, #0x16]
ldr r0, [r0]
mov r1, r4
add r0, r0, #0x188
bl sub_037F8D58
mov r0, #1
_027EDBD8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027EDBE0: .word 0x0380FFF4
arm_func_end sub_027EDB68
arm_func_start sub_027EDBE4
sub_027EDBE4: ; 0x027EDBE4
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _027EDC5C ; =0x0380FFF4
mov r5, r1
ldr r1, [r2]
mov r6, r0
add r0, r1, #0x188
mov r1, #0x18
bl sub_037F886C
movs r4, r0
bne _027EDC1C
mov r0, #1
bl sub_027EB06C
mov r0, #0
b _027EDC54
_027EDC1C:
mov r0, #0x85
strh r0, [r4, #0xc]
mov r2, #4
mov r1, r6
add r0, r4, #0x10
strh r2, [r4, #0xe]
bl sub_027EA0E0
ldr r0, _027EDC5C ; =0x0380FFF4
strh r5, [r4, #0x16]
ldr r0, [r0]
mov r1, r4
add r0, r0, #0x188
bl sub_037F8D58
mov r0, #1
_027EDC54:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027EDC5C: .word 0x0380FFF4
arm_func_end sub_027EDBE4
arm_func_start sub_027EDC60
sub_027EDC60: ; 0x027EDC60
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _027EDD50 ; =0x0380FFF4
mov r5, r1
ldr r1, [r3]
mov r7, r0
add r0, r1, #0x188
mov r1, #0x3a
mov r6, r2
bl sub_037F886C
movs r4, r0
bne _027EDC9C
mov r0, #1
bl sub_027EB06C
mov r0, #0
b _027EDD48
_027EDC9C:
mov r0, #0x86
strh r0, [r4, #0xc]
mov r2, #0x15
mov r1, r7
add r0, r4, #0x10
strh r2, [r4, #0xe]
bl sub_027EA0E0
ldr r1, _027EDD54 ; =0x00000FFF
add r0, r6, #1
and r1, r5, r1
strh r1, [r4, #0x16]
bl sub_027EAD50
add r7, r6, #2
strh r0, [r4, #0x18]
mov r5, #0
add r6, r4, #0x1a
b _027EDD00
_027EDCE0:
cmp r5, #0x20
bhs _027EDD0C
add r0, r7, r5
bl sub_027EAD50
mov r1, r0
add r0, r6, r5
bl sub_027EAD24
add r5, r5, #1
_027EDD00:
ldrh r0, [r4, #0x18]
cmp r5, r0
blo _027EDCE0
_027EDD0C:
add r7, r4, #0x1a
mov r6, #0
b _027EDD28
_027EDD18:
mov r1, r6
add r0, r7, r5
bl sub_027EAD24
add r5, r5, #1
_027EDD28:
cmp r5, #0x20
blo _027EDD18
ldr r0, _027EDD50 ; =0x0380FFF4
mov r1, r4
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F8D58
mov r0, #1
_027EDD48:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027EDD50: .word 0x0380FFF4
_027EDD54: .word 0x00000FFF
arm_func_end sub_027EDC60
arm_func_start sub_027EDD58
sub_027EDD58: ; 0x027EDD58
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _027EDE40 ; =0x0380FFF4
mov r6, r1
ldr r1, [r3]
mov r7, r0
add r0, r1, #0x188
mov r1, #0x3a
mov r5, r2
bl sub_037F886C
movs r4, r0
bne _027EDD94
mov r0, #1
bl sub_027EB06C
mov r0, #0
b _027EDE38
_027EDD94:
mov r0, #0x87
strh r0, [r4, #0xc]
mov r0, #0x15
strh r0, [r4, #0xe]
mov r1, r7
add r0, r4, #0x10
bl sub_027EA0E0
strh r6, [r4, #0x16]
add r0, r5, #1
bl sub_027EAD50
add r6, r5, #2
strh r0, [r4, #0x18]
mov r7, #0
add r5, r4, #0x1a
b _027EDDF0
_027EDDD0:
cmp r7, #0x20
bhs _027EDDFC
add r0, r6, r7
bl sub_027EAD50
mov r1, r0
add r0, r5, r7
bl sub_027EAD24
add r7, r7, #1
_027EDDF0:
ldrh r0, [r4, #0x18]
cmp r7, r0
blo _027EDDD0
_027EDDFC:
add r6, r4, #0x1a
mov r5, #0
b _027EDE18
_027EDE08:
mov r1, r5
add r0, r6, r7
bl sub_027EAD24
add r7, r7, #1
_027EDE18:
cmp r7, #0x20
blo _027EDE08
ldr r0, _027EDE40 ; =0x0380FFF4
mov r1, r4
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F8D58
mov r0, #1
_027EDE38:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027EDE40: .word 0x0380FFF4
arm_func_end sub_027EDD58
arm_func_start sub_027EDE44
sub_027EDE44: ; 0x027EDE44
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _027EDEBC ; =0x0380FFF4
mov r5, r1
ldr r1, [r2]
mov r6, r0
add r0, r1, #0x188
mov r1, #0x18
bl sub_037F886C
movs r4, r0
bne _027EDE7C
mov r0, #1
bl sub_027EB06C
mov r0, #0
b _027EDEB4
_027EDE7C:
mov r0, #0x88
strh r0, [r4, #0xc]
mov r2, #4
mov r1, r6
add r0, r4, #0x10
strh r2, [r4, #0xe]
bl sub_027EA0E0
ldr r0, _027EDEBC ; =0x0380FFF4
strh r5, [r4, #0x16]
ldr r0, [r0]
mov r1, r4
add r0, r0, #0x188
bl sub_037F8D58
mov r0, #1
_027EDEB4:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027EDEBC: .word 0x0380FFF4
arm_func_end sub_027EDE44
arm_func_start sub_027EDEC0
sub_027EDEC0: ; 0x027EDEC0
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _027EDF30 ; =0x0380FFF4
mov r5, r0
ldr r0, [r1]
mov r1, #0x16
add r0, r0, #0x188
bl sub_037F886C
movs r4, r0
bne _027EDEF4
mov r0, #1
bl sub_027EB06C
mov r0, #0
b _027EDF28
_027EDEF4:
mov r0, #0x8b
strh r0, [r4, #0xc]
mov r2, #3
mov r1, r5
add r0, r4, #0x10
strh r2, [r4, #0xe]
bl sub_027EA0E0
ldr r0, _027EDF30 ; =0x0380FFF4
mov r1, r4
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F8D58
mov r0, #1
_027EDF28:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027EDF30: .word 0x0380FFF4
arm_func_end sub_027EDEC0
arm_func_start sub_027EDF34
sub_027EDF34: ; 0x027EDF34
stmdb sp!, {r3, lr}
ldr r0, _027EDF90 ; =0x0380FFF4
mov r1, #0x10
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F886C
movs r1, r0
bne _027EDF64
mov r0, #1
bl sub_027EB06C
mov r0, #0
b _027EDF88
_027EDF64:
mov r0, #0x8c
strh r0, [r1, #0xc]
mov r2, #0
ldr r0, _027EDF90 ; =0x0380FFF4
strh r2, [r1, #0xe]
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F8D58
mov r0, #1
_027EDF88:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EDF90: .word 0x0380FFF4
arm_func_end sub_027EDF34
arm_func_start sub_027EDF94
sub_027EDF94: ; 0x027EDF94
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _027EE0AC ; =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_037F886C
movs r5, r0
bne _027EDFD4
mov r0, #1
bl sub_027EB06C
mov r0, #0
b _027EE0A4
_027EDFD4:
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_027EAD24
ldrh r1, [r6, #0xe]
add r0, r5, #0x1e
and r1, r1, #0xff
bl sub_027EAD24
add r0, r5, #0x2e
add r1, r6, #0x1e
bl sub_027EA0E0
ldrh r2, [r4, #0xa0]
strh r2, [r5, #0x16]
cmp r2, #0
beq _027EE08C
ldrh r0, [r4, #0xa2]
tst r0, #1
ldr r0, [r4, #0x9c]
beq _027EE080
add r7, r5, #0x3c
add r6, r0, #1
mov r4, #0
b _027EE070
_027EE050:
mov r0, r6
bl sub_027EAD50
mov r1, r0
mov r0, r7
bl sub_027EAD24
add r6, r6, #1
add r7, r7, #1
add r4, r4, #1
_027EE070:
ldrh r0, [r5, #0x16]
cmp r4, r0
blo _027EE050
b _027EE08C
_027EE080:
add r1, r5, #0x3c
add r2, r2, #1
bl sub_037FDF9C
_027EE08C:
ldr r0, _027EE0AC ; =0x0380FFF4
mov r1, r5
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F8D58
mov r0, #1
_027EE0A4:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027EE0AC: .word 0x0380FFF4
arm_func_end sub_027EDF94
arm_func_start sub_027EE0B0
sub_027EE0B0: ; 0x027EE0B0
ldr r1, _027EE0D0 ; =0x0380FFF4
ldr ip, _027EE0D4 ; =sub_037FDF74
ldr r1, [r1]
mov r0, #0
add r1, r1, #4
mov r2, #0x20
add r1, r1, #0x400
bx ip
.align 2, 0
_027EE0D0: .word 0x0380FFF4
_027EE0D4: .word sub_037FDF74
arm_func_end sub_027EE0B0
arm_func_start sub_027EE0D8
sub_027EE0D8: ; 0x027EE0D8
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _027EE1C0 ; =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 _027EE1B8
add r0, r5, #0x10
bl sub_027E8E5C
mov r4, r0
ldrh r0, [r5, #0x16]
bl sub_027E8EBC
orr r4, r4, r0
ldrh r0, [r5, #0x18]
bl sub_027E8EF0
orr r4, r4, r0
ldrh r0, [r5, #0x1c]
bl sub_027E8F30
orr r4, r4, r0
ldrh r0, [r5, #0x1e]
bl sub_027E8FB0
orr r4, r4, r0
ldrh r0, [r5, #0x20]
bl sub_027E8FE4
orr r4, r4, r0
ldrh r0, [r5, #0x22]
bl sub_027E9084
orr r4, r4, r0
add r0, r5, #0x24
bl sub_027E90A8
orr r4, r4, r0
ldrh r0, [r5, #0x74]
bl sub_027E9108
orr r4, r4, r0
ldrh r0, [r5, #0x76]
bl sub_027E9140
orr r4, r4, r0
ldrh r0, [r5, #0x78]
bl sub_027E9178
orr r4, r4, r0
ldrh r0, [r5, #0x7a]
mov r1, #0
bl sub_027E91B0
orr r4, r4, r0
add r0, r5, #0x7c
bl sub_027E9260
orr r4, r4, r0
ldrh r0, [r5, #0x9c]
bl sub_027E9290
orr r4, r4, r0
ldrh r0, [r5, #0x9e]
bl sub_027E9338
orr r0, r4, r0
_027EE1B8:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027EE1C0: .word 0x0380FFF4
arm_func_end sub_027EE0D8
arm_func_start sub_027EE1C4
sub_027EE1C4: ; 0x027EE1C4
stmdb sp!, {r3, lr}
ldr r2, _027EE200 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
bne _027EE1F4
add r0, r0, #0x10
bl sub_027E8E5C
mov r3, r0
_027EE1F4:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE200: .word 0x0380FFF4
arm_func_end sub_027EE1C4
arm_func_start sub_027EE204
sub_027EE204: ; 0x027EE204
mov r2, #1
strh r2, [r1, #2]
ldr ip, _027EE218 ; =sub_027E8EBC
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_027EE218: .word sub_027E8EBC
arm_func_end sub_027EE204
arm_func_start sub_027EE21C
sub_027EE21C: ; 0x027EE21C
stmdb sp!, {r3, lr}
ldr r2, _027EE258 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
bne _027EE24C
ldrh r0, [r0, #0x10]
bl sub_027E8EF0
mov r3, r0
_027EE24C:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE258: .word 0x0380FFF4
arm_func_end sub_027EE21C
arm_func_start sub_027EE25C
sub_027EE25C: ; 0x027EE25C
stmdb sp!, {r3, lr}
ldr r2, _027EE2A8 ; =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 _027EE2A0
bne _027EE298
ldrh r1, [r1, #0x56]
cmp r1, #0
movne r0, r3
bne _027EE2A0
_027EE298:
ldrh r0, [r0, #0x10]
bl sub_027E8F30
_027EE2A0:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE2A8: .word 0x0380FFF4
arm_func_end sub_027EE25C
arm_func_start sub_027EE2AC
sub_027EE2AC: ; 0x027EE2AC
mov r2, #1
strh r2, [r1, #2]
ldr ip, _027EE2C0 ; =sub_027E8FB0
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_027EE2C0: .word sub_027E8FB0
arm_func_end sub_027EE2AC
arm_func_start sub_027EE2C4
sub_027EE2C4: ; 0x027EE2C4
mov r2, #1
strh r2, [r1, #2]
ldr ip, _027EE2D8 ; =sub_027E8FE4
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_027EE2D8: .word sub_027E8FE4
arm_func_end sub_027EE2C4
arm_func_start sub_027EE2DC
sub_027EE2DC: ; 0x027EE2DC
mov r2, #1
strh r2, [r1, #2]
ldr ip, _027EE2F0 ; =sub_027E9084
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_027EE2F0: .word sub_027E9084
arm_func_end sub_027EE2DC
arm_func_start sub_027EE2F4
sub_027EE2F4: ; 0x027EE2F4
ldr ip, _027EE308 ; =sub_027E90A8
mov r2, #1
add r0, r0, #0x10
strh r2, [r1, #2]
bx ip
.align 2, 0
_027EE308: .word sub_027E90A8
arm_func_end sub_027EE2F4
arm_func_start sub_027EE30C
sub_027EE30C: ; 0x027EE30C
stmdb sp!, {r3, lr}
ldr r2, _027EE348 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x20
bhi _027EE33C
ldrh r0, [r0, #0x10]
bl sub_027E9108
mov r3, r0
_027EE33C:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE348: .word 0x0380FFF4
arm_func_end sub_027EE30C
arm_func_start sub_027EE34C
sub_027EE34C: ; 0x027EE34C
mov r2, #1
strh r2, [r1, #2]
ldr ip, _027EE360 ; =sub_027E9140
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_027EE360: .word sub_027E9140
arm_func_end sub_027EE34C
arm_func_start sub_027EE364
sub_027EE364: ; 0x027EE364
mov r2, #1
strh r2, [r1, #2]
ldr ip, _027EE378 ; =sub_027E9178
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_027EE378: .word sub_027E9178
arm_func_end sub_027EE364
arm_func_start sub_027EE37C
sub_027EE37C: ; 0x027EE37C
mov r2, #1
strh r2, [r1, #2]
ldr ip, _027EE394 ; =sub_027E91B0
ldrh r0, [r0, #0x10]
mov r1, #0
bx ip
.align 2, 0
_027EE394: .word sub_027E91B0
arm_func_end sub_027EE37C
arm_func_start sub_027EE398
sub_027EE398: ; 0x027EE398
ldr ip, _027EE3AC ; =sub_027E9260
mov r2, #1
add r0, r0, #0x10
strh r2, [r1, #2]
bx ip
.align 2, 0
_027EE3AC: .word sub_027E9260
arm_func_end sub_027EE398
arm_func_start sub_027EE3B0
sub_027EE3B0: ; 0x027EE3B0
mov r2, #1
strh r2, [r1, #2]
ldr ip, _027EE3C4 ; =sub_027E9290
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_027EE3C4: .word sub_027E9290
arm_func_end sub_027EE3B0
arm_func_start sub_027EE3C8
sub_027EE3C8: ; 0x027EE3C8
mov r2, #1
strh r2, [r1, #2]
ldr ip, _027EE3DC ; =sub_027E9338
ldrh r0, [r0, #0x10]
bx ip
.align 2, 0
_027EE3DC: .word sub_027E9338
arm_func_end sub_027EE3C8
arm_func_start sub_027EE3E0
sub_027EE3E0: ; 0x027EE3E0
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 _027EE424
ldrh r0, [r5, #0x10]
ldrh r1, [r5, #0x12]
bl sub_027E935C
movs r4, r0
bne _027EE420
ldrh r1, [r5, #0x14]
mov r0, #0x2e
bl sub_027EA5F0
_027EE420:
mov r0, r4
_027EE424:
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027EE3E0
arm_func_start sub_027EE42C
sub_027EE42C: ; 0x027EE42C
stmdb sp!, {r4, lr}
ldr ip, _027EE52C ; =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 _027EE46C
rsb r1, r3, #0x10000
cmp r4, r1
movne r0, #5
bne _027EE524
_027EE46C:
ldrh r3, [r0, #0x14]
cmp r3, #0x3f
bls _027EE488
ldr r1, _027EE530 ; =0x0000FFFF
cmp r3, r1
movne r0, #5
bne _027EE524
_027EE488:
ldr r1, _027EE530 ; =0x0000FFFF
cmp r4, r1
bne _027EE4DC
ldr ip, _027EE52C ; =0x0380FFF4
mov r4, #1
mov r3, #0x1c
b _027EE4C4
_027EE4A4:
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]
_027EE4C4:
ldr r1, [ip]
add r1, r1, #0x300
ldrh r1, [r1, #0x22]
cmp r4, r1
blo _027EE4A4
b _027EE510
_027EE4DC:
cmp r4, #0
beq _027EE510
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]
_027EE510:
ldrh r0, [r0, #0x14]
cmp r0, #0
beq _027EE520
bl sub_027E9E30
_027EE520:
mov r0, #0
_027EE524:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EE52C: .word 0x0380FFF4
_027EE530: .word 0x0000FFFF
arm_func_end sub_027EE42C
arm_func_start sub_027EE534
sub_027EE534: ; 0x027EE534
ldr r2, _027EE588 ; =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
_027EE588: .word 0x0380FFF4
arm_func_end sub_027EE534
arm_func_start sub_027EE58C
sub_027EE58C: ; 0x027EE58C
stmdb sp!, {r3, lr}
ldr r2, _027EE5C8 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
blo _027EE5BC
ldrh r0, [r0, #0x10]
bl sub_027E93A0
mov r3, r0
_027EE5BC:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE5C8: .word 0x0380FFF4
arm_func_end sub_027EE58C
arm_func_start sub_027EE5CC
sub_027EE5CC: ; 0x027EE5CC
stmdb sp!, {r3, lr}
ldr r2, _027EE608 ; =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 _027EE600
ldrh r0, [r3, #0x10]
ldrh r1, [r3, #0x12]
bl sub_027E9408
_027EE600:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE608: .word 0x0380FFF4
arm_func_end sub_027EE5CC
arm_func_start sub_027EE60C
sub_027EE60C: ; 0x027EE60C
stmdb sp!, {r3, lr}
ldr r2, _027EE648 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
blo _027EE63C
ldrh r0, [r0, #0x10]
bl sub_027E94DC
mov r3, r0
_027EE63C:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE648: .word 0x0380FFF4
arm_func_end sub_027EE60C
arm_func_start sub_027EE64C
sub_027EE64C: ; 0x027EE64C
stmdb sp!, {r3, lr}
ldr r2, _027EE688 ; =0x0380FFF4
mov r3, #1
strh r3, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r1, [r1, #0x4c]
cmp r1, #0x10
blo _027EE67C
ldrh r0, [r0, #0x10]
bl sub_027E951C
mov r3, r0
_027EE67C:
mov r0, r3
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE688: .word 0x0380FFF4
arm_func_end sub_027EE64C
arm_func_start sub_027EE68C
sub_027EE68C: ; 0x027EE68C
ldr ip, _027EE6A0 ; =sub_027E956C
mov r2, #1
add r0, r0, #0x10
strh r2, [r1, #2]
bx ip
.align 2, 0
_027EE6A0: .word sub_027E956C
arm_func_end sub_027EE68C
arm_func_start sub_027EE6A4
sub_027EE6A4: ; 0x027EE6A4
mov r2, #1
strh r2, [r1, #2]
mov r1, r0
ldrh r0, [r1, #0x10]
ldr ip, _027EE6C0 ; =sub_027E95D0
add r1, r1, #0x12
bx ip
.align 2, 0
_027EE6C0: .word sub_027E95D0
arm_func_end sub_027EE6A4
arm_func_start sub_027EE6C4
sub_027EE6C4: ; 0x027EE6C4
stmdb sp!, {r3, lr}
ldr r2, _027EE6FC ; =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 _027EE6F4
ldrh r0, [r0, #0x10]
bl sub_027E96E0
_027EE6F4:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE6FC: .word 0x0380FFF4
arm_func_end sub_027EE6C4
arm_func_start sub_027EE700
sub_027EE700: ; 0x027EE700
stmdb sp!, {r3, lr}
ldr r2, _027EE738 ; =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 _027EE730
ldrh r0, [r0, #0x10]
bl sub_027E9738
_027EE730:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE738: .word 0x0380FFF4
arm_func_end sub_027EE700
arm_func_start sub_027EE73C
sub_027EE73C: ; 0x027EE73C
stmdb sp!, {r3, lr}
ldr r2, _027EE778 ; =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 _027EE770
ldrh r0, [r0, #0x10]
bl sub_027E977C
_027EE770:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE778: .word 0x0380FFF4
arm_func_end sub_027EE73C
arm_func_start sub_027EE77C
sub_027EE77C: ; 0x027EE77C
stmdb sp!, {r3, lr}
ldr r2, _027EE7DC ; =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 _027EE7D4
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 _027EE7D4
add r1, r3, #0x12
bl sub_027E9F54
_027EE7D4:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE7DC: .word 0x0380FFF4
arm_func_end sub_027EE77C
arm_func_start sub_027EE7E0
sub_027EE7E0: ; 0x027EE7E0
stmdb sp!, {r4, lr}
ldr r0, _027EE914 ; =0x0380FFF4
mov r4, r1
mov r1, #0x21
strh r1, [r4, #2]
ldr r1, [r0]
add r0, r4, #6
add r1, r1, #0x324
bl sub_027EA0E0
ldr r0, _027EE914 ; =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_037FDF9C
ldr r2, _027EE914 ; =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
_027EE914: .word 0x0380FFF4
arm_func_end sub_027EE7E0
arm_func_start sub_027EE918
sub_027EE918: ; 0x027EE918
stmdb sp!, {r3, lr}
ldr r0, _027EE944 ; =0x0380FFF4
mov r2, #4
strh r2, [r1, #2]
ldr r2, [r0]
add r0, r1, #6
add r1, r2, #0x324
bl sub_027EA0E0
mov r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EE944: .word 0x0380FFF4
arm_func_end sub_027EE918
arm_func_start sub_027EE948
sub_027EE948: ; 0x027EE948
ldr r0, _027EE96C ; =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
_027EE96C: .word 0x0380FFF4
arm_func_end sub_027EE948
arm_func_start sub_027EE970
sub_027EE970: ; 0x027EE970
ldr r3, _027EE9A4 ; =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
_027EE9A4: .word 0x0380FFF4
arm_func_end sub_027EE970
arm_func_start sub_027EE9A8
sub_027EE9A8: ; 0x027EE9A8
ldr r0, _027EE9CC ; =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
_027EE9CC: .word 0x0380FFF4
arm_func_end sub_027EE9A8
arm_func_start sub_027EE9D0
sub_027EE9D0: ; 0x027EE9D0
ldr r0, _027EE9F4 ; =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
_027EE9F4: .word 0x0380FFF4
arm_func_end sub_027EE9D0
arm_func_start sub_027EE9F8
sub_027EE9F8: ; 0x027EE9F8
ldr r0, _027EEA1C ; =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
_027EEA1C: .word 0x0380FFF4
arm_func_end sub_027EE9F8
arm_func_start sub_027EEA20
sub_027EEA20: ; 0x027EEA20
ldr r0, _027EEA44 ; =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
_027EEA44: .word 0x0380FFF4
arm_func_end sub_027EEA20
arm_func_start sub_027EEA48
sub_027EEA48: ; 0x027EEA48
ldr r0, _027EEA74 ; =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
_027EEA74: .word 0x0380FFF4
arm_func_end sub_027EEA48
arm_func_start sub_027EEA78
sub_027EEA78: ; 0x027EEA78
ldr r0, _027EEAA4 ; =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
_027EEAA4: .word 0x0380FFF4
arm_func_end sub_027EEA78
arm_func_start sub_027EEAA8
sub_027EEAA8: ; 0x027EEAA8
ldr r0, _027EEACC ; =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
_027EEACC: .word 0x0380FFF4
arm_func_end sub_027EEAA8
arm_func_start sub_027EEAD0
sub_027EEAD0: ; 0x027EEAD0
ldr r0, _027EEAF4 ; =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
_027EEAF4: .word 0x0380FFF4
arm_func_end sub_027EEAD0
arm_func_start sub_027EEAF8
sub_027EEAF8: ; 0x027EEAF8
ldr r0, _027EEB30 ; =0x0380FFF4
mov r2, #0x11
strh r2, [r1, #2]
ldr r0, [r0]
add r3, r1, #6
add r2, r0, #0x384
mov r1, #0
_027EEB14:
ldrh r0, [r2], #2
add r1, r1, #1
cmp r1, #0x10
strh r0, [r3], #2
blo _027EEB14
mov r0, #0
bx lr
.align 2, 0
_027EEB30: .word 0x0380FFF4
arm_func_end sub_027EEAF8
arm_func_start sub_027EEB34
sub_027EEB34: ; 0x027EEB34
ldr r0, _027EEB60 ; =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
_027EEB60: .word 0x0380FFF4
arm_func_end sub_027EEB34
arm_func_start sub_027EEB64
sub_027EEB64: ; 0x027EEB64
ldr r0, _027EEB88 ; =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
_027EEB88: .word 0x0380FFF4
arm_func_end sub_027EEB64
arm_func_start sub_027EEB8C
sub_027EEB8C: ; 0x027EEB8C
stmdb sp!, {r4, lr}
mov r4, r1
mov r0, #4
strh r0, [r4, #2]
mov r0, #0x13
bl sub_027EA5C4
strh r0, [r4, #6]
mov r0, #0x35
bl sub_027EA5C4
strh r0, [r4, #8]
mov r0, #0x2e
bl sub_027EA5C4
strh r0, [r4, #0xa]
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027EEB8C
arm_func_start sub_027EEBCC
sub_027EEBCC: ; 0x027EEBCC
ldr r0, _027EEBF4 ; =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
_027EEBF4: .word 0x0380FFF4
arm_func_end sub_027EEBCC
arm_func_start sub_027EEBF8
sub_027EEBF8: ; 0x027EEBF8
ldr r0, _027EEC30 ; =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
_027EEC30: .word 0x0380FFF4
arm_func_end sub_027EEBF8
arm_func_start sub_027EEC34
sub_027EEC34: ; 0x027EEC34
ldr r3, _027EEC90 ; =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
_027EEC90: .word 0x0380FFF4
arm_func_end sub_027EEC34
arm_func_start sub_027EEC94
sub_027EEC94: ; 0x027EEC94
ldr r0, _027EECCC ; =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
_027EECCC: .word 0x0380FFF4
arm_func_end sub_027EEC94
arm_func_start sub_027EECD0
sub_027EECD0: ; 0x027EECD0
ldr r0, _027EED08 ; =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
_027EED08: .word 0x0380FFF4
arm_func_end sub_027EECD0
arm_func_start sub_027EED0C
sub_027EED0C: ; 0x027EED0C
stmdb sp!, {r3, lr}
ldr r0, _027EED38 ; =0x0380FFF4
mov r2, #4
strh r2, [r1, #2]
ldr r2, [r0]
add r0, r1, #6
add r1, r2, #0x3a8
bl sub_027EA0E0
mov r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EED38: .word 0x0380FFF4
arm_func_end sub_027EED0C
arm_func_start sub_027EED3C
sub_027EED3C: ; 0x027EED3C
ldr r2, _027EED84 ; =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
_027EED68:
ldrh r0, [r1], #2
add r3, r3, #2
cmp r3, #0x20
strh r0, [ip], #2
blo _027EED68
mov r0, #0
bx lr
.align 2, 0
_027EED84: .word 0x0380FFF4
arm_func_end sub_027EED3C
arm_func_start sub_027EED88
sub_027EED88: ; 0x027EED88
ldr r0, _027EEDAC ; =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
_027EEDAC: .word 0x0380FFF4
arm_func_end sub_027EED88
arm_func_start sub_027EEDB0
sub_027EEDB0: ; 0x027EEDB0
ldr r0, _027EEDD4 ; =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
_027EEDD4: .word 0x0380FFF4
arm_func_end sub_027EEDB0
arm_func_start sub_027EEDD8
sub_027EEDD8: ; 0x027EEDD8
ldr r0, _027EEDFC ; =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
_027EEDFC: .word 0x0380FFF4
arm_func_end sub_027EEDD8
arm_func_start sub_027EEE00
sub_027EEE00: ; 0x027EEE00
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r1
ldrh r0, [r4, #2]
ldr r1, _027EEED4 ; =0x0380FFF4
cmp r0, #1
ldrhi r0, _027EEED4 ; =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 _027EEECC
ldrh r2, [r4, #6]
cmp r2, #0
beq _027EEEB0
ldrh r0, [r0, #0xe6]
tst r0, #1
ldr r0, [r3, #0x3e0]
beq _027EEEA4
add r6, r4, #8
add r5, r0, #1
mov r7, #0
b _027EEE94
_027EEE74:
mov r0, r5
bl sub_027EAD50
mov r1, r0
mov r0, r6
bl sub_027EAD24
add r6, r6, #1
add r5, r5, #1
add r7, r7, #1
_027EEE94:
ldrh r0, [r4, #6]
cmp r7, r0
blo _027EEE74
b _027EEEB0
_027EEEA4:
add r1, r4, #8
add r2, r2, #1
bl sub_037FDF9C
_027EEEB0:
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]
_027EEECC:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027EEED4: .word 0x0380FFF4
arm_func_end sub_027EEE00
arm_func_start sub_027EEED8
sub_027EEED8: ; 0x027EEED8
stmdb sp!, {r3, lr}
ldr r2, _027EEF14 ; =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 _027EEF0C
mov r0, #0
bl sub_037F9238
mov r0, #0
_027EEF0C:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EEF14: .word 0x0380FFF4
arm_func_end sub_027EEED8
arm_func_start sub_027EEF18
sub_027EEF18: ; 0x027EEF18
stmdb sp!, {r3, lr}
ldr r2, _027EEF70 ; =0x0380FFF4
mov r0, #1
strh r0, [r1, #2]
ldr r1, [r2]
add r1, r1, #0x300
ldrh r2, [r1, #0x4c]
cmp r2, #0x20
bhi _027EEF68
ldrh r1, [r1, #0x56]
cmp r1, #0
bne _027EEF68
mov r0, #0
bl sub_027F4D2C
cmp r0, #0
movne r0, #0xe
bne _027EEF68
mov r0, #0x10
bl sub_037F9238
mov r0, #0
_027EEF68:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EEF70: .word 0x0380FFF4
arm_func_end sub_027EEF18
arm_func_start sub_027EEF74
sub_027EEF74: ; 0x027EEF74
stmdb sp!, {r3, lr}
ldr r0, _027EEFC4 ; =0x0380FFF4
mov r2, #1
strh r2, [r1, #2]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r1, [r0, #0x4c]
cmp r1, #0x10
beq _027EEFA8
cmp r1, #0x20
ldreqh r0, [r0, #0x56]
cmpeq r0, #0
bne _027EEFB8
_027EEFA8:
mov r0, #0x20
bl sub_037F9238
mov r0, #0
b _027EEFBC
_027EEFB8:
mov r0, #1
_027EEFBC:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EEFC4: .word 0x0380FFF4
arm_func_end sub_027EEF74
arm_func_start sub_027EEFC8
sub_027EEFC8: ; 0x027EEFC8
stmdb sp!, {r3, lr}
ldr r0, _027EF000 ; =0x0380FFF4
mov r2, #1
strh r2, [r1, #2]
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0x20
blo _027EEFF0
bl sub_037F9198
_027EEFF0:
bl sub_027E8994
mov r0, #0
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EF000: .word 0x0380FFF4
arm_func_end sub_027EEFC8
arm_func_start sub_027EF004
sub_027EF004: ; 0x027EF004
stmdb sp!, {r3, lr}
ldr r0, _027EF038 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0
mov r0, #1
beq _027EF030
strh r0, [r1, #2]
bl sub_027EA17C
mov r0, #0
_027EF030:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027EF038: .word 0x0380FFF4
arm_func_end sub_027EF004
arm_func_start sub_027EF03C
sub_027EF03C: ; 0x027EF03C
stmdb sp!, {r4, lr}
ldr r0, _027EF0D0 ; =0x027F7868
mov r4, r1
mov r3, #9
add r1, r4, #6
mov r2, #8
strh r3, [r4, #2]
bl sub_037FDF9C
ldr r1, _027EF0D4 ; =0x04808000
ldr r0, _027EF0D8 ; =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, _027EF0DC ; =0x0000933D
streqh r1, [r4, #0x10]
beq _027EF09C
mov r0, #0
bl sub_027EA5C4
strh r0, [r4, #0x10]
bl sub_027EA640
_027EF09C:
strh r0, [r4, #0x12]
ldr r0, _027EF0D8 ; =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
_027EF0D0: .word 0x027F7868
_027EF0D4: .word 0x04808000
_027EF0D8: .word 0x0380FFF4
_027EF0DC: .word 0x0000933D
arm_func_end sub_027EF03C
arm_func_start sub_027EF0E0
sub_027EF0E0: ; 0x027EF0E0
stmdb sp!, {r4, lr}
ldr r0, _027EF138 ; =0x0380FFF4
mov r4, r1
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0
moveq r0, #1
beq _027EF130
mov r0, #0x5c
strh r0, [r4, #2]
bl sub_027EA1AC
ldr r0, _027EF138 ; =0x0380FFF4
add r1, r4, #8
ldr r0, [r0]
mov r2, #0xb4
add r0, r0, #0x13c
add r0, r0, #0x400
bl sub_037FDFEC
mov r0, #0
_027EF130:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EF138: .word 0x0380FFF4
arm_func_end sub_027EF0E0
arm_func_start sub_027EF13C
sub_027EF13C: ; 0x027EF13C
ldr r0, _027EF160 ; =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
_027EF160: .word 0x0380FFF4
arm_func_end sub_027EF13C
arm_func_start sub_027EF164
sub_027EF164: ; 0x027EF164
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r2, _027EF48C ; =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 _027EF480
ldrh r0, [r5, #0x10]
cmp r0, #1
movhi r0, #5
bhi _027EF480
ldrh r0, [r5, #0x14]
cmp r0, #0xa
cmpne r0, #0x14
movne r0, #5
bne _027EF480
ldrh r0, [r5, #0x12]
cmp r0, #4
movhi r0, #5
bhi _027EF480
mov r0, #0
bl sub_027F4D2C
cmp r0, #0
movne r0, #0xe
bne _027EF480
ldrh r0, [r5, #0x10]
cmp r0, #0
beq _027EF3F4
cmp r0, #1
bne _027EF47C
ldrh r0, [r4, #8]
cmp r0, #0x10
movne r0, #1
bne _027EF480
mov r0, #0
str r0, [sp]
add r2, sp, #0
mov r0, #0x65
mov r1, #1
bl sub_027F4E70
ldr r6, [sp]
mov r0, #1
bl sub_027EA5C4
cmp r6, r0
beq _027EF240
mov r1, r6
mov r0, #1
bl sub_027EA5F0
ldr r0, _027EF490 ; =0x00001388
bl sub_027EA9A8
_027EF240:
ldrh r0, [r5, #0x12]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _027EF47C
_027EF250: ; jump table
b _027EF264 ; case 0
b _027EF264 ; case 1
b _027EF264 ; case 2
b _027EF2FC ; case 3
b _027EF2FC ; case 4
_027EF264:
mov r0, #0x11
strh r0, [r4, #8]
ldrh r0, [r5, #0x16]
mov r1, #1
bl sub_027E9900
ldr r1, _027EF494 ; =0x04808040
mov r2, #0x8000
ldr r0, _027EF498 ; =0x000005DC
strh r2, [r1]
bl sub_027EA9A8
ldrh r1, [r5, #0x14]
mov r0, #2
strh r1, [r4, #0x16]
bl sub_027EA5C4
str r0, [sp]
ldrh r1, [r5, #0x12]
ldr r2, _027EF49C ; =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 _027EF2E0
ldr r1, [sp]
mov r0, #3
orr r1, r1, #0x20
str r1, [sp]
strh r0, [r2, #-2]
_027EF2E0:
ldr r1, [sp]
mov r0, #2
bl sub_027EA5F0
ldr r1, _027EF4A0 ; =0x00000823
ldr r0, _027EF4A4 ; =0x048081A0
strh r1, [r0]
b _027EF47C
_027EF2FC:
ldr r0, _027EF48C ; =0x0380FFF4
ldr r0, [r0]
add r4, r0, #0x344
bl sub_037F8DE0
bl sub_037F9198
mov r0, #6
bl sub_027EA5C4
strh r0, [r4, #0xac]
ldrh r0, [r5, #0x12]
cmp r0, #4
bne _027EF334
mov r0, #6
mov r1, #0
bl sub_027EA5F0
_027EF334:
ldr r1, _027EF4A8 ; =0x04804000
mov r0, #0
mov r2, #0xc
bl sub_037FDF74
ldr r1, _027EF4A8 ; =0x04804000
mov r0, #0x14
strh r0, [r1, #8]
mov r0, #0x7d0
strh r0, [r1, #0xa]
add r3, r1, #0xc
ldr r1, _027EF4AC ; =0x00005555
ldr r0, _027EF4B0 ; =0x000007EC
mov r2, #0
_027EF368:
add r2, r2, #2
cmp r2, r0
strh r1, [r3], #2
blo _027EF368
ldr r1, _027EF4A8 ; =0x04804000
mov r2, #8
ldr r0, _027EF4B4 ; =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_027E9900
ldr r1, _027EF494 ; =0x04808040
mov r2, #0x8000
ldr r0, _027EF498 ; =0x000005DC
strh r2, [r1]
bl sub_027EA9A8
mov r2, #1
ldr r3, _027EF4B8 ; =0x04808012
mov r0, #2
strh r0, [r3]
strh r2, [r3, #-0xe]
ldr r1, _027EF4A8 ; =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 _027EF47C
_027EF3F4:
ldrh r0, [r4, #8]
cmp r0, #0x11
bne _027EF43C
bl sub_027EAA4C
ldr r1, _027EF4A4 ; =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_027EA5C4
bic r1, r0, #0x30
mov r0, #2
str r1, [sp]
bl sub_027EA5F0
b _027EF474
_027EF43C:
cmp r0, #0x12
bne _027EF46C
ldr r1, _027EF4BC ; =0x04808004
mov r0, #0
strh r0, [r4, #0x18]
_027EF450:
ldrh r0, [r1]
cmp r0, #0
bne _027EF450
ldrh r1, [r4, #0xac]
mov r0, #6
bl sub_027EA5F0
b _027EF474
_027EF46C:
mov r0, #1
b _027EF480
_027EF474:
mov r0, #0x10
strh r0, [r4, #8]
_027EF47C:
mov r0, #0
_027EF480:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, lr}
bx lr
.align 2, 0
_027EF48C: .word 0x0380FFF4
_027EF490: .word 0x00001388
_027EF494: .word 0x04808040
_027EF498: .word 0x000005DC
_027EF49C: .word 0x048081A4
_027EF4A0: .word 0x00000823
_027EF4A4: .word 0x048081A0
_027EF4A8: .word 0x04804000
_027EF4AC: .word 0x00005555
_027EF4B0: .word 0x000007EC
_027EF4B4: .word 0x04808194
_027EF4B8: .word 0x04808012
_027EF4BC: .word 0x04808004
arm_func_end sub_027EF164
arm_func_start sub_027EF4C0
sub_027EF4C0: ; 0x027EF4C0
ldr r0, _027EF52C ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x5c]
cmp r0, #0
beq _027EF4FC
ldr r0, _027EF530 ; =0x04804000
mov r2, #0
strh r2, [r0]
ldr r1, _027EF534 ; =0x048080A0
strh r2, [r0, #4]
ldrh r0, [r1]
orr r0, r0, #0x8000
strh r0, [r1]
bx lr
_027EF4FC:
ldr r2, _027EF538 ; =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
_027EF52C: .word 0x0380FFF4
_027EF530: .word 0x04804000
_027EF534: .word 0x048080A0
_027EF538: .word 0x048080AC
arm_func_end sub_027EF4C0
arm_func_start sub_027EF53C
sub_027EF53C: ; 0x027EF53C
stmdb sp!, {r4, lr}
ldr r2, _027EF5E8 ; =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 _027EF5E0
ldrh r1, [r0, #0x10]
cmp r1, #0
beq _027EF5B4
cmp r1, #1
bne _027EF5DC
cmp r2, #0x10
movne r0, r3
bne _027EF5E0
ldrh r0, [r0, #0x12]
mov r1, r3
bl sub_027E9900
mov r0, #0
strh r0, [r4, #0xc]
bl sub_037F8DE0
mov r0, #0x8000
bl sub_027E9CE0
mov r0, #0x11
strh r0, [r4, #8]
b _027EF5DC
_027EF5B4:
cmp r2, #0x11
bne _027EF5CC
mov r0, #0
bl sub_027E9CE0
bl sub_037F9198
b _027EF5D4
_027EF5CC:
mov r0, r3
b _027EF5E0
_027EF5D4:
mov r0, #0x10
strh r0, [r4, #8]
_027EF5DC:
mov r0, #0
_027EF5E0:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EF5E8: .word 0x0380FFF4
arm_func_end sub_027EF53C
arm_func_start sub_027EF5EC
sub_027EF5EC: ; 0x027EF5EC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r1, _027EF7B0 ; =0x0380FFF4
mov r8, r0
ldr r4, [r1]
ldrh r1, [r8, #0x16]
ldr r0, _027EF7B4 ; =0x000005E4
add r5, r4, #0x344
cmp r1, r0
add r6, r4, #0x31c
movhi r0, #5
bhi _027EF7A8
ldrh r0, [r6, #0x12]
cmp r0, #1
bne _027EF64C
add r0, r8, #0x28
bl sub_027EB900
mov r7, r0
cmp r7, #0xff
beq _027EF644
bl sub_027EBFE0
cmp r0, #0x40
beq _027EF650
_027EF644:
mov r0, #0xa
b _027EF7A8
_027EF64C:
ldrh r7, [r5, #0x88]
_027EF650:
ldr r0, _027EF7B0 ; =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 _027EF688
mov r0, r7
bl sub_027EC0A0
strh r0, [r8, #0x20]
_027EF688:
ldrh r0, [r8, #0x16]
cmp r0, #0
bne _027EF6B0
ldrh r1, [r5, #0x8a]
mov r0, #0x1c
orr r1, r1, #0x40
bic r1, r1, #0x4000
strh r1, [r8, #0x24]
strh r0, [r8, #0x22]
b _027EF6D4
_027EF6B0:
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]
_027EF6D4:
ldrh r0, [r6, #0x12]
cmp r0, #1
beq _027EF6F0
cmp r0, #2
cmpne r0, #3
beq _027EF76C
b _027EF7A4
_027EF6F0:
add r0, r8, #0x34
add r1, r8, #0x2e
bl sub_027EA0E0
add r0, r8, #0x2e
add r1, r5, #0x64
bl sub_027EA0E0
cmp r7, #0
bne _027EF748
mov r1, r8
add r0, r4, #0x200
bl sub_027EBAE8
ldr r0, _027EF7B0 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x500
ldrh r1, [r0, #0x32]
ldrh r2, [r0, #0x2e]
mvn r0, r1
tst r2, r0
bne _027EF7A4
mov r0, #2
bl sub_027EFEF4
b _027EF7A4
_027EF748:
add r0, r8, #0x10
bl sub_027EBB44
mov r2, r8
add r0, r4, #0x200
add r1, r4, #0x194
bl sub_037F8988
mov r0, #0
bl sub_027EFEF4
b _027EF7A4
_027EF76C:
add r0, r8, #0x34
add r1, r8, #0x28
bl sub_027EA0E0
add r0, r8, #0x28
add r1, r5, #0x64
bl sub_027EA0E0
add r0, r8, #0x10
bl sub_027EBB44
mov r2, r8
add r0, r4, #0x200
add r1, r4, #0x194
bl sub_037F8988
mov r0, #0
bl sub_027EFEF4
_027EF7A4:
mov r0, #0x81
_027EF7A8:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027EF7B0: .word 0x0380FFF4
_027EF7B4: .word 0x000005E4
arm_func_end sub_027EF5EC
arm_func_start sub_027EF7B8
sub_027EF7B8: ; 0x027EF7B8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r2, _027EF944 ; =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 _027EF93C
ldrh r0, [sl, #0x10]
cmp r0, #0x204
movhi r0, #5
bhi _027EF93C
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 _027EF93C
ldr r1, _027EF948 ; =0x04808094
ldrh r1, [r1]
tst r1, #0x8000
movne r0, #8
bne _027EF93C
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, _027EF94C ; =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_027EA130
ldrh r0, [sl, #0x12]
strh r0, [r7, #0x24]
ldrh r0, [sl, #0x10]
cmp r0, #0
beq _027EF8B0
cmp sb, #0
bne _027EF8A0
bl sub_027EA1AC
_027EF8A0:
ldr r1, [sl, #0x14]
ldrh r2, [sl, #0x10]
add r0, r7, #0x26
bl sub_027EAC7C
_027EF8B0:
tst r6, #4
beq _027EF8E0
ldrh r0, [sl, #0x10]
add r1, r7, #0x24
add r0, r0, #2
add r0, r1, r0
add r0, r0, #3
ldr r1, _027EF950 ; =0x0000B6B8
bic r2, r0, #3
ldr r0, _027EF954 ; =0x00001D46
strh r1, [r2]
strh r0, [r2, #2]
_027EF8E0:
mov r0, #0x1000000
bl sub_037FB928
mov r2, #2
ldr r1, _027EF958 ; =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, _027EF948 ; =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 _027EF930
bl sub_027EA098
_027EF930:
mov r0, r4
bl sub_037FB8F0
mov r0, #0
_027EF93C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027EF944: .word 0x0380FFF4
_027EF948: .word 0x04808094
_027EF94C: .word 0x027F74AC
_027EF950: .word 0x0000B6B8
_027EF954: .word 0x00001D46
_027EF958: .word 0x00003FFF
arm_func_end sub_027EF7B8
arm_func_start sub_027EF95C
sub_027EF95C: ; 0x027EF95C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
ldr r2, _027EFDE8 ; =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 _027EFDDC
ldrh r0, [r6, #0x3c]
cmp r0, #0
movne r0, #8
bne _027EFDDC
ldrh r0, [sl, #0x10]
ldr r5, [r6, #0x44]
tst r0, #0x8000
beq _027EFA00
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]
_027EFA00:
ldrh r0, [sl, #0x1c]
cmp r0, #0x204
movhi r0, #5
bhi _027EFDDC
mov r1, #2
mov r8, #0
b _027EFA30
_027EFA1C:
ldrh r0, [sl, #0x16]
tst r0, r1
mov r0, r1, lsl #0x11
addne r8, r8, #1
mov r1, r0, lsr #0x10
_027EFA30:
cmp r1, #0
bne _027EFA1C
ldrh r0, [sl, #0x14]
strh r0, [r6, #0x94]
ldrh r0, [sl, #0x14]
tst r0, #0x8000
beq _027EFA7C
ldr r1, _027EFDEC ; =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 _027EFACC
mov r0, #5
b _027EFDDC
_027EFA7C:
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 _027EFDDC
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]
_027EFACC:
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_037F886C
str r0, [r6, #0x90]
cmp r0, #0
moveq r0, #8
beq _027EFDDC
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, _027EFDF0 ; =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_027EA130
ldrh r0, [sl, #0x10]
tst r0, #0x8000
ldrneh r1, [r5, #0x22]
ldrne r0, _027EFDF4 ; =0x0000FFFF
cmpne r1, r0
ldreq r0, _027EFDF4 ; =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 _027EFBEC
bl sub_027EA1AC
ldr r1, [sl, #0x20]
ldrh r2, [sl, #0x1c]
add r0, r5, #0x2a
bl sub_027EAC7C
_027EFBEC:
ldr r0, [sp, #4]
tst r0, #4
beq _027EFC20
ldrh r0, [sl, #0x1c]
add r1, r5, #0x28
add r0, r0, #2
add r0, r1, r0
add r0, r0, #3
ldr r1, _027EFDF8 ; =0x0000B6B8
bic r2, r0, #3
ldr r0, _027EFDFC ; =0x00001D46
strh r1, [r2]
strh r0, [r2, #2]
_027EFC20:
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, _027EFDF4 ; =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 _027EFCA8
_027EFC80:
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
_027EFCA8:
cmp r2, #0
bne _027EFC80
ldrh r0, [sl, #0x14]
ldr r2, _027EFE00 ; =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 _027EFD40
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_03806DD4
mov r4, r0
bl sub_037FDD00
ldr r1, _027EFE04 ; =0x00003FFF
ldr r2, _027EFE08 ; =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_037FDD14
b _027EFDD8
_027EFD40:
bl sub_037FDD00
ldr r1, _027EFE0C ; =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_03806DD4
ldrh r3, [sl, #0x18]
add r1, r0, #3
cmp r1, r3
bhs _027EFDA8
ldr r1, _027EFE04 ; =0x00003FFF
ldr r2, _027EFE08 ; =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_037FDD14
b _027EFDD8
_027EFDA8:
mov r0, r8
bl sub_037FDD14
ldr r1, [r6, #0x90]
add r0, r4, #0x188
bl sub_037F8908
mov r0, #0
strh r0, [r6, #0x3c]
ldrh r1, [r6, #0x3e]
mov r0, #5
sub r1, r1, #1
strh r1, [r6, #0x3e]
b _027EFDDC
_027EFDD8:
mov r0, #0
_027EFDDC:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027EFDE8: .word 0x0380FFF4
_027EFDEC: .word 0x00007FFF
_027EFDF0: .word 0x027F74BC
_027EFDF4: .word 0x0000FFFF
_027EFDF8: .word 0x0000B6B8
_027EFDFC: .word 0x00001D46
_027EFE00: .word 0x048080C4
_027EFE04: .word 0x00003FFF
_027EFE08: .word 0x04808118
_027EFE0C: .word 0x048080F8
arm_func_end sub_027EF95C
arm_func_start sub_027EFE10
sub_027EFE10: ; 0x027EFE10
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_027EBB44
ldr r0, _027EFE6C ; =0x0380FFF4
mov r2, r4
ldr r1, [r0]
add r0, r1, #0x200
add r1, r1, #0x194
bl sub_037F8988
mov r0, #0
bl sub_027EFEF4
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027EFE6C: .word 0x0380FFF4
arm_func_end sub_027EFE10
arm_func_start sub_027EFE70
sub_027EFE70: ; 0x027EFE70
stmdb sp!, {r4, lr}
mov r2, #1
strh r2, [r1, #2]
mov r4, r0
ldrh r0, [r4, #0x10]
tst r0, #1
beq _027EFE90
bl sub_027F0B00
_027EFE90:
ldrh r0, [r4, #0x10]
tst r0, #2
beq _027EFEA0
bl sub_027F0B74
_027EFEA0:
ldrh r0, [r4, #0x10]
tst r0, #4
beq _027EFEB0
bl sub_027F0BC8
_027EFEB0:
mov r0, #0
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027EFE70
arm_func_start sub_027EFEBC
sub_027EFEBC: ; 0x027EFEBC
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_037F8D58
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027EFEBC
arm_func_start sub_027EFEF4
sub_027EFEF4: ; 0x027EFEF4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
ldr r1, _027F0108 ; =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 _027F00FC
mov r0, #0x1000000
bl sub_037FB928
ldrh r1, [r6]
str r0, [sp]
cmp r1, #0
beq _027EFF54
bl sub_037FB8F0
b _027F00FC
_027EFF54:
ldr r7, [fp]
mvn r0, #0
str r0, [sp, #8]
_027EFF60:
ldr r0, [sp, #8]
cmp r7, r0
bne _027EFF78
ldr r0, [sp]
bl sub_037FB8F0
b _027F00FC
_027EFF78:
mov r0, r7
str r7, [sp, #4]
bl sub_037F8A80
mov r1, r7
add r8, r1, #0x10
mov r7, r0
ldrh sb, [r8, #2]
mov r0, r8
bl sub_027F027C
cmp r0, #0
beq _027EFFDC
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
_027EFFD8:
b _027EFF60
_027EFFDC:
cmp sl, #0
beq _027EFFFC
cmp sl, #1
bne _027F003C
mov r0, sb
bl sub_027EBFE0
cmp r0, #0x40
bne _027F003C
_027EFFFC:
mov r0, sb
bl sub_027EC000
cmp r0, #0
beq _027EFF60
mov r0, sb
bl sub_027EBFE0
cmp r0, #0x40
beq _027F003C
mov r2, #2
mov r0, fp
sub r1, r8, #0x10
strh r2, [r8, #8]
bl sub_027EFEBC
mov r0, r8
bl sub_027EBBD4
b _027EFF60
_027F003C:
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 _027F006C
mov r0, #2
bl sub_027E9CB4
_027F006C:
ldr r1, [sp, #4]
mov r0, r5
bl sub_027F0114
ldrh r0, [r4, #0xc]
cmp r0, #1
bne _027F009C
mov r0, sb
bl sub_027EC0EC
cmp r0, #1
ldrhih r0, [r5, #0xc]
orrhi r0, r0, #0x2000
strhih r0, [r5, #0xc]
_027F009C:
ldr r1, _027F010C ; =0x00003FFF
ldr r0, _027F0110 ; =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 _027F00F4
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]
_027F00F4:
ldr r0, [sp]
bl sub_037FB8F0
_027F00FC:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027F0108: .word 0x0380FFF4
_027F010C: .word 0x00003FFF
_027F0110: .word 0x048080A0
arm_func_end sub_027EFEF4
arm_func_start sub_027F0114
sub_027F0114: ; 0x027F0114
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
ldrh r1, [r4, #0x24]
mov r5, r0
tst r1, #0x4000
beq _027F01F0
ldr r0, _027F0268 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #3
bne _027F0148
bl sub_027EA1AC
_027F0148:
ldrh r1, [r4, #0xc]
ldr r0, _027F026C ; =0x0000FFFF
cmp r1, r0
bne _027F0170
ldrh r3, [r4, #0x16]
mov r0, r5
add r1, r4, #0x18
add r2, r4, #0x3c
bl sub_027EACE0
b _027F0184
_027F0170:
ldr r2, [r4, #0x3c]
ldrh r3, [r4, #0x16]
mov r0, r5
add r1, r4, #0x18
bl sub_027EACE0
_027F0184:
ldr r3, _027F0270 ; =0x04808044
ldr r1, _027F0268 ; =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 _027F0224
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 _027F0224
_027F01F0:
ldrh r2, [r4, #0xc]
ldr r1, _027F026C ; =0x0000FFFF
cmp r2, r1
bne _027F0214
ldrh r2, [r4, #0x16]
add r1, r4, #0x18
add r2, r2, #0x24
bl sub_027EAC7C
b _027F0224
_027F0214:
ldr r2, [r4, #0x3c]
ldrh r3, [r4, #0x16]
add r1, r4, #0x18
bl sub_027EAC9C
_027F0224:
ldr r0, _027F0268 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #4
beq _027F0260
ldrh r0, [r4, #0x22]
add r1, r5, #0xc
add r0, r1, r0
sub r0, r0, #1
ldr r1, _027F0274 ; =0x0000B6B8
bic r2, r0, #3
ldr r0, _027F0278 ; =0x00001D46
strh r1, [r2]
strh r0, [r2, #2]
_027F0260:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F0268: .word 0x0380FFF4
_027F026C: .word 0x0000FFFF
_027F0270: .word 0x04808044
_027F0274: .word 0x0000B6B8
_027F0278: .word 0x00001D46
arm_func_end sub_027F0114
arm_func_start sub_027F027C
sub_027F027C: ; 0x027F027C
ldr r1, _027F02F8 ; =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 _027F02D0
ldrh r1, [ip, #0xc]
cmp r1, #1
bne _027F02D8
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 _027F02D8
_027F02D0:
mov r1, r3, lsl #0xd
mov r3, r1, lsr #0x10
_027F02D8:
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
_027F02F8: .word 0x0380FFF4
arm_func_end sub_027F027C
arm_func_start sub_027F02FC
sub_027F02FC: ; 0x027F02FC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _027F0474 ; =0x0380FFF4
mov sb, r0
ldr r4, [r2]
mov r8, r1
add r5, r4, #0x194
add r6, r4, #0x344
sub r7, sb, #0x10
bl sub_027EBBD4
ldrh r0, [sb, #8]
tst r0, #2
bne _027F0390
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 _027F036C
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 _027F039C
_027F036C:
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 _027F039C
_027F0390:
ldr r0, [r4, #0x540]
add r0, r0, #1
str r0, [r4, #0x540]
_027F039C:
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_027EFEBC
ldr r0, _027F0474 ; =0x0380FFF4
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x400
strh r1, [r0, #0x2c]
ldrh r0, [sb, #2]
bl sub_027EC020
cmp r0, #0
beq _027F03F8
ldrh r0, [sb, #0x14]
tst r0, #0x2000
bne _027F03F8
ldrh r0, [sb, #2]
bl sub_027EBDA8
_027F03F8:
cmp r8, #0
beq _027F046C
ldrh r0, [r5, #8]
cmp r0, #0
beq _027F0418
mov r0, #0
bl sub_027EFEF4
b _027F046C
_027F0418:
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 _027F046C
ldrh r0, [r6, #8]
cmp r0, #0x40
bne _027F046C
ldrh r0, [r6, #0xe]
cmp r0, #0
beq _027F046C
ldrh r0, [r6, #0x88]
bl sub_027EC0EC
cmp r0, #0
ldreqh r0, [r6, #0x8e]
cmpeq r0, #0
bne _027F046C
mov r0, #1
bl sub_027E9CB4
_027F046C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_027F0474: .word 0x0380FFF4
arm_func_end sub_027F02FC
arm_func_start sub_027F0478
sub_027F0478: ; 0x027F0478
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r2, _027F0940 ; =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 _027F0500
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_027EC020
cmp r0, #0
beq _027F050C
ldrh r0, [sl, #0x14]
tst r0, #0x2000
bne _027F050C
mov r0, r7
bl sub_027EBDA8
b _027F050C
_027F0500:
ldr r0, [r4, #0x540]
add r0, r0, #1
str r0, [r4, #0x540]
_027F050C:
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 _027F0568
bhs _027F06D0
cmp r4, #0x10
bhi _027F055C
beq _027F060C
b _027F08F8
_027F055C:
cmp r4, #0x30
beq _027F060C
b _027F08F8
_027F0568:
cmp r4, #0xb0
bhi _027F0578
beq _027F0584
b _027F08F8
_027F0578:
cmp r4, #0xc0
beq _027F07B4
b _027F08F8
_027F0584:
cmp r7, #0
beq _027F08F8
ldrh r0, [sl, #8]
tst r0, #2
bne _027F08F8
ldrh r1, [sl, #0x2c]
cmp r1, #0
ldreqh r0, [sl, #0x2e]
cmpeq r0, #2
ldreqh r0, [sl, #0x30]
cmpeq r0, #0
bne _027F05D4
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x30
bl sub_027EBC44
ldrh r1, [sl, #0x2c]
add r0, sl, #0x18
bl sub_027EDB68
b _027F08F8
_027F05D4:
cmp r1, #1
ldreqh r0, [sl, #0x2e]
cmpeq r0, #4
ldreqh r0, [sl, #0x30]
cmpeq r0, #0
bne _027F08F8
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x30
bl sub_027EBC44
ldrh r1, [sl, #0x2c]
add r0, sl, #0x18
bl sub_027EDB68
b _027F08F8
_027F060C:
cmp r7, #0
beq _027F08F8
ldrh r0, [sl, #8]
tst r0, #2
bne _027F0684
ldrh r0, [sl, #0x2e]
cmp r0, #0
bne _027F08F8
mov r0, r7
bl sub_027EBFE0
cmp r0, #0x30
bne _027F08F8
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x40
bl sub_027EBC44
ldrh r2, [sl, #0x12]
cmp r4, #0x10
add r3, sl, #0x14
bne _027F0670
ldrh r1, [sl, #0x30]
add r0, sl, #0x18
add r2, r3, r2
bl sub_027EDC60
b _027F08F8
_027F0670:
ldrh r1, [sl, #0x30]
add r0, sl, #0x18
add r2, r3, r2
bl sub_027EDD58
b _027F08F8
_027F0684:
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_027EBF60
add r0, sl, #0x18
mov r1, #1
mov r2, #0
bl sub_027F1EBC
cmp r0, #0
beq _027F08F8
mov r1, #2
strh r1, [r0]
cmp sb, #0
beq _027F06C8
bl sub_027F1094
mov r0, #1
bl sub_027EFEF4
b _027F08F8
_027F06C8:
bl sub_027F1094
b _027F08F8
_027F06D0:
ldrh r0, [r8, #0xc]
cmp r0, #1
bne _027F0760
cmp r7, #0
beq _027F0708
mov r0, r7
bl sub_027EBFE0
cmp r0, #0x30
bls _027F0778
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x30
bl sub_027EBC44
b _027F0778
_027F0708:
ldrh r0, [sl, #0x18]
tst r0, #1
beq _027F0778
ldr r4, _027F0940 ; =0x0380FFF4
mov r8, #1
mov r7, #0x30
b _027F0748
_027F0724:
mov r0, r8
bl sub_027EBFE0
cmp r0, #0x30
bls _027F0744
mov r0, r8, lsl #0x10
mov r1, r7
mov r0, r0, lsr #0x10
bl sub_027EBC44
_027F0744:
add r8, r8, #1
_027F0748:
ldr r0, [r4]
add r0, r0, #0x300
ldrh r0, [r0, #0x22]
cmp r8, r0
blo _027F0724
b _027F0778
_027F0760:
ldrh r0, [r8, #8]
cmp r0, #0x30
bls _027F0778
mov r0, #0x30
bl sub_037F9238
bl sub_027EA03C
_027F0778:
ldrh r0, [r5]
cmp r0, #0x71
ldreq r0, [r5, #4]
cmpeq sl, r0
bne _027F08F8
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_027EDB14
b _027F08F8
_027F07B4:
ldrh r0, [r8, #0xc]
cmp r0, #1
bne _027F0844
cmp r7, #0
beq _027F07EC
mov r0, r7
bl sub_027EBFE0
cmp r0, #0x20
bls _027F085C
mov r0, r7, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_027EBC44
b _027F085C
_027F07EC:
ldrh r0, [sl, #0x18]
tst r0, #1
beq _027F085C
ldr r4, _027F0940 ; =0x0380FFF4
mov r8, #1
mov fp, #0x20
b _027F082C
_027F0808:
mov r0, r8
bl sub_027EBFE0
cmp r0, #0x20
bls _027F0828
mov r0, r8, lsl #0x10
mov r1, fp
mov r0, r0, lsr #0x10
bl sub_027EBC44
_027F0828:
add r8, r8, #1
_027F082C:
ldr r0, [r4]
add r0, r0, #0x300
ldrh r0, [r0, #0x22]
cmp r8, r0
blo _027F0808
b _027F085C
_027F0844:
ldrh r0, [r8, #8]
cmp r0, #0x20
bls _027F085C
mov r0, #0x20
bl sub_037F9238
bl sub_027EA03C
_027F085C:
ldrh r0, [r5]
cmp r0, #0x41
ldreq r0, [r5, #4]
cmpeq sl, r0
bne _027F0894
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_027EDB14
_027F0894:
ldrh r0, [sl]
cmp r0, #1
bne _027F08E4
cmp r7, #0
beq _027F08D4
ldr r0, _027F0940 ; =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_027EC42C
_027F08D4:
add r0, sl, #0x18
mov r1, #1
bl sub_027EDBE4
b _027F08F8
_027F08E4:
cmp r0, #2
bne _027F08F8
ldrh r1, [sl, #0x2c]
add r0, sl, #0x18
bl sub_027EDBE4
_027F08F8:
mov r0, sl
bl sub_027EBBD4
mov r0, r6
sub r1, sl, #0x10
bl sub_037F8908
ldr r0, _027F0940 ; =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 _027F0938
mov r0, #1
bl sub_027EFEF4
_027F0938:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027F0940: .word 0x0380FFF4
arm_func_end sub_027F0478
arm_func_start sub_027F0944
sub_027F0944: ; 0x027F0944
ldr r2, _027F09A8 ; =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 _027F0990
ldr r0, [r3, #0x53c]
add r0, r0, #1
str r0, [r3, #0x53c]
ldr r0, [r3, #0x54c]
add r0, r0, #1
str r0, [r3, #0x54c]
_027F0990:
ldr r0, _027F09A8 ; =0x0380FFF4
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x400
strh r1, [r0, #0x54]
bx lr
.align 2, 0
_027F09A8: .word 0x0380FFF4
arm_func_end sub_027F0944
arm_func_start sub_027F09AC
sub_027F09AC: ; 0x027F09AC
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _027F0AB0 ; =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 _027F0A04
bl sub_027EBB44
add r0, r4, #0x30
add r1, r4, #0x24
sub r2, r6, #0x10
bl sub_037F8988
mov r0, r6
mov r1, #0
bl sub_027F0478
b _027F0A10
_027F0A04:
add r0, r4, #0x30
sub r1, r6, #0x10
bl sub_027EFEBC
_027F0A10:
ldr r1, _027F0AB0 ; =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 _027F0A80
ldr r1, _027F0AB4 ; =0x048080AC
mov r0, #8
strh r0, [r1]
mov r0, #5
strh r0, [r1, #2]
cmp r5, #0
beq _027F0A80
ldrh r0, [r4, #0x2c]
cmp r0, #0
beq _027F0A6C
mov r0, #1
bl sub_027EFEF4
_027F0A6C:
ldrh r0, [r4, #0x20]
cmp r0, #0
beq _027F0A80
mov r0, #0
bl sub_027EFEF4
_027F0A80:
ldrh r0, [r4, #0x38]
cmp r0, #0
beq _027F0AA0
cmp r5, #0
beq _027F0AA8
mov r0, #2
bl sub_027EFEF4
b _027F0AA8
_027F0AA0:
mov r0, #0
bl sub_027EC1C8
_027F0AA8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027F0AB0: .word 0x0380FFF4
_027F0AB4: .word 0x048080AC
arm_func_end sub_027F09AC
arm_func_start sub_027F0AB8
sub_027F0AB8: ; 0x027F0AB8
ldr r2, [r0, #8]
ldr r1, _027F0AFC ; =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
_027F0AFC: .word 0x0380FFF4
arm_func_end sub_027F0AB8
arm_func_start sub_027F0B00
sub_027F0B00: ; 0x027F0B00
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _027F0B6C ; =0x0380FFF4
mov r0, #0x1000000
ldr r1, [r1]
add r1, r1, #0x2c
add r4, r1, #0x400
bl sub_037FB928
ldr r1, _027F0B6C ; =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 _027F0B44
mov r0, #0
bl sub_027EA0BC
_027F0B44:
ldr r0, _027F0B70 ; =0x048080B4
mov r1, #0xc0
strh r1, [r0]
mov r1, #0
strh r1, [r4, #0x50]
mov r0, r5
strh r1, [r4, #0x64]
bl sub_037FB8F0
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F0B6C: .word 0x0380FFF4
_027F0B70: .word 0x048080B4
arm_func_end sub_027F0B00
arm_func_start sub_027F0B74
sub_027F0B74: ; 0x027F0B74
stmdb sp!, {r4, lr}
ldr r1, _027F0BC0 ; =0x0380FFF4
mov r0, #0x1000000
ldr r1, [r1]
add r1, r1, #0x2c
add r4, r1, #0x400
bl sub_037FB928
ldr r1, _027F0BC4 ; =0x048080B4
mov r2, #2
strh r2, [r1]
ldrh r1, [r4, #0x3c]
mov r4, r0
cmp r1, #0
beq _027F0BB0
bl sub_037FACB4
_027F0BB0:
mov r0, r4
bl sub_037FB8F0
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027F0BC0: .word 0x0380FFF4
_027F0BC4: .word 0x048080B4
arm_func_end sub_027F0B74
arm_func_start sub_027F0BC8
sub_027F0BC8: ; 0x027F0BC8
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _027F0C68 ; =0x0380FFF4
mov r0, #0x1000000
ldr r1, [r1]
add r1, r1, #0x2c
add r4, r1, #0x400
bl sub_037FB928
ldr r1, _027F0C68 ; =0x0380FFF4
mov r5, r0
ldr r0, [r1]
add r0, r0, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #1
ldr r0, _027F0C6C ; =0x048080B4
bne _027F0C30
mov r1, #9
strh r1, [r0]
ldrh r0, [r4, #0x28]
cmp r0, #0
beq _027F0C20
mov r0, #2
bl sub_027F0C70
_027F0C20:
mov r0, #2
mov r1, #1
bl sub_027F0FF0
b _027F0C38
_027F0C30:
mov r1, #1
strh r1, [r0]
_027F0C38:
ldrh r0, [r4]
cmp r0, #0
beq _027F0C4C
mov r0, #0
bl sub_027F0C70
_027F0C4C:
mov r0, #0
mov r1, #1
bl sub_027F0FF0
mov r0, r5
bl sub_037FB8F0
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F0C68: .word 0x0380FFF4
_027F0C6C: .word 0x048080B4
arm_func_end sub_027F0BC8
arm_func_start sub_027F0C70
sub_027F0C70: ; 0x027F0C70
stmdb sp!, {r3, lr}
ldr r2, _027F0CD0 ; =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 _027F0CC8
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
_027F0CC8:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027F0CD0: .word 0x0380FFF4
arm_func_end sub_027F0C70
arm_func_start sub_027F0CD4
sub_027F0CD4: ; 0x027F0CD4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _027F0D54 ; =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_037FB928
ldr r1, _027F0D58 ; =0x027F7870
mov r2, r7, lsl #1
ldrh r2, [r1, r2]
ldr r1, _027F0D5C ; =0x048080B4
strh r2, [r1]
ldrh r1, [r5, r4]
cmp r1, #0
beq _027F0D48
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]
_027F0D48:
bl sub_037FB8F0
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027F0D54: .word 0x0380FFF4
_027F0D58: .word 0x027F7870
_027F0D5C: .word 0x048080B4
arm_func_end sub_027F0CD4
arm_func_start sub_027F0D60
sub_027F0D60: ; 0x027F0D60
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov fp, r0
mov r7, #0
bl sub_027EC0EC
cmp r0, #0
beq _027F0E4C
mov r8, r7
_027F0D7C:
ldr r0, _027F0E54 ; =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 _027F0E40
mov r0, #0x14
mul sb, r8, r0
mvn r4, #0
_027F0DAC:
mov r0, r5
bl sub_037F8A80
add r6, r5, #0x10
ldrh r1, [r6, #2]
str r0, [sp]
cmp r1, fp
bne _027F0E30
cmp r8, #1
ldrne r0, _027F0E54 ; =0x0380FFF4
ldrne r0, [r0]
addne r0, sb, r0
ldrne r0, [r0, #0x438]
cmpne r6, r0
bne _027F0E00
mov r0, r6
bl sub_027EBBD4
mov r1, #0
mov r0, r6
strh r1, [r6, #2]
bl sub_027EBB44
b _027F0E30
_027F0E00:
mov r0, #2
strh r0, [r6, #8]
mov r0, r6
bl sub_027EBBD4
ldr r0, _027F0E54 ; =0x0380FFF4
mov r1, r5
ldr r0, [r0]
add r0, r0, #0x194
add r0, r0, sl
bl sub_027EFEBC
cmp r7, #0
moveq r7, #1
_027F0E30:
ldr r5, [sp]
mov r0, r5
cmp r0, r4
bne _027F0DAC
_027F0E40:
add r8, r8, #1
cmp r8, #3
blo _027F0D7C
_027F0E4C:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027F0E54: .word 0x0380FFF4
arm_func_end sub_027F0D60
arm_func_start sub_027F0E58
sub_027F0E58: ; 0x027F0E58
stmdb sp!, {r3, r4, r5, lr}
ldr r4, _027F0F04 ; =0x0380FFF4
ldrh r1, [r0]
ldr r2, [r4]
tst r1, #1
beq _027F0EAC
add r0, r2, #0x300
ldrh r0, [r0, #0x22]
mov r5, #1
cmp r0, #1
bls _027F0EFC
b _027F0E94
_027F0E88:
mov r0, r5
bl sub_027F0D60
add r5, r5, #1
_027F0E94:
ldr r0, [r4]
add r0, r0, #0x300
ldrh r0, [r0, #0x22]
cmp r5, r0
blo _027F0E88
b _027F0EFC
_027F0EAC:
bl sub_027EB900
mov r4, r0
cmp r4, #0xff
beq _027F0EC0
bl sub_027F0D60
_027F0EC0:
ldr r0, _027F0F04 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x300
ldrh r0, [r0, #0x2e]
cmp r0, #1
bne _027F0EFC
mov r0, r4
bl sub_027EBFE0
cmp r0, #0x40
bne _027F0EFC
mov r0, r4, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_027EBC44
bl sub_027F0B00
_027F0EFC:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F0F04: .word 0x0380FFF4
arm_func_end sub_027F0E58
arm_func_start sub_027F0F08
sub_027F0F08: ; 0x027F0F08
stmdb sp!, {r4, lr}
ldr r0, _027F0FEC ; =0x0380FFF4
ldr r2, [r0]
add r0, r2, #0x300
ldrh r1, [r0, #0x50]
add r0, r2, #0x2c
cmp r1, #1
add r4, r0, #0x400
beq _027F0F3C
cmp r1, #2
cmpne r1, #3
beq _027F0F98
b _027F0FC0
_027F0F3C:
mov r0, #0
mov r1, #1
bl sub_027F0FF0
mov r0, #1
mov r1, #0
bl sub_027F0FF0
mov r0, #2
mov r1, #1
bl sub_027F0FF0
ldrh r0, [r4, #0x3c]
cmp r0, #0
beq _027F0FE4
mov r0, #0
strh r0, [r4, #0x3c]
ldrh r1, [r4, #0x3e]
ldr r0, _027F0FEC ; =0x0380FFF4
sub r1, r1, #1
strh r1, [r4, #0x3e]
ldr r0, [r0]
ldr r1, [r4, #0x90]
add r0, r0, #0x188
bl sub_037F8908
b _027F0FE4
_027F0F98:
mov r0, #0
mov r1, #1
bl sub_027F0FF0
mov r0, #1
mov r1, #0
bl sub_027F0FF0
mov r0, #2
mov r1, #0
bl sub_027F0FF0
b _027F0FE4
_027F0FC0:
mov r0, #0
mov r1, r0
bl sub_027F0FF0
mov r0, #1
mov r1, #0
bl sub_027F0FF0
mov r0, #2
mov r1, #0
bl sub_027F0FF0
_027F0FE4:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027F0FEC: .word 0x0380FFF4
arm_func_end sub_027F0F08
arm_func_start sub_027F0FF0
sub_027F0FF0: ; 0x027F0FF0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r5, _027F1078 ; =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 _027F1070
mov fp, #2
mvn r4, #0
_027F1028:
mov r0, r6
bl sub_037F8A80
mov r7, r0
cmp sl, #2
beq _027F1044
add r0, r6, #0x10
bl sub_027EBBD4
_027F1044:
strh fp, [r6, #0x18]
cmp sb, #0
beq _027F1064
ldr r0, [r5]
mov r1, r6
add r0, r0, #0x194
add r0, r0, r8
bl sub_027EFEBC
_027F1064:
mov r6, r7
cmp r7, r4
bne _027F1028
_027F1070:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027F1078: .word 0x0380FFF4
arm_func_end sub_027F0FF0
arm_func_start sub_027F107C
sub_027F107C: ; 0x027F107C
stmdb sp!, {r3, lr}
bl sub_027F1094
mov r0, #1
bl sub_027EFEF4
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027F107C
arm_func_start sub_027F1094
sub_027F1094: ; 0x027F1094
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x18
bl sub_027EB900
strh r0, [r4, #2]
ldrh r0, [r4, #2]
cmp r0, #0xff
moveq r0, #0
streqh r0, [r4, #2]
ldr r0, _027F1104 ; =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_027EBB44
ldr r0, _027F1104 ; =0x0380FFF4
sub r2, r4, #0x10
ldr r1, [r0]
add r0, r1, #0x188
add r1, r1, #0x1a0
bl sub_037F8988
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027F1104: .word 0x0380FFF4
arm_func_end sub_027F1094
arm_func_start sub_027F1108
sub_027F1108: ; 0x027F1108
stmdb sp!, {r4, lr}
ldr r0, _027F1190 ; =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 _027F1188
mov r0, #1
strh r0, [r4]
ldr r0, [r4, #8]
strh r1, [r0]
ldr r0, [r4, #8]
strh r1, [r0, #4]
bl sub_027EA578
ldr r2, [r4, #8]
ldr r1, _027F1194 ; =0x00003FFF
strh r0, [r2, #8]
ldr r0, [r4, #8]
ldr r2, _027F1198 ; =0x048080A8
and r0, r0, r1
mov r0, r0, lsl #0xf
mov r0, r0, lsr #0x10
orr r0, r0, #0x8000
strh r0, [r2]
_027F1188:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027F1190: .word 0x0380FFF4
_027F1194: .word 0x00003FFF
_027F1198: .word 0x048080A8
arm_func_end sub_027F1108
arm_func_start sub_027F119C
sub_027F119C: ; 0x027F119C
ldr r0, _027F11D4 ; =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, _027F11D8 ; =0x04808080
and r1, r2, r1
mov r1, r1, lsr #1
orr r1, r1, #0x8000
strh r1, [r0]
bx lr
.align 2, 0
_027F11D4: .word 0x0380FFF4
_027F11D8: .word 0x04808080
arm_func_end sub_027F119C
arm_func_start sub_027F11DC
sub_027F11DC: ; 0x027F11DC
ldr r1, _027F11FC ; =0x0380FFF4
ldr r0, _027F1200 ; =0x04808080
ldr r2, [r1]
mov r1, #0
strh r1, [r0]
add r0, r2, #0x400
strh r1, [r0, #0xa4]
bx lr
.align 2, 0
_027F11FC: .word 0x0380FFF4
_027F1200: .word 0x04808080
arm_func_end sub_027F11DC
arm_func_start sub_027F1204
sub_027F1204: ; 0x027F1204
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r1, _027F1560 ; =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_027EA578
strh r0, [r8, #8]
mov r0, #0x80
strh r0, [r8, #0xc]
mov r0, #0
add r2, r5, #8
strh r0, [r8, #0xe]
ldr r1, _027F1564 ; =0x027F74A4
add r0, r8, #0x10
mov r3, r2
bl sub_027EA130
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 _027F1304
sub r0, sb, sl
strh r0, [r6, #0x92]
mov r0, sb
bl sub_027EAD24
ldrh r1, [r6, #0x1e]
add r0, sb, #1
and r1, r1, #0xff
add sb, sb, #2
bl sub_027EAD24
mov r7, #0
add r4, r6, #0x20
b _027F12E0
_027F12C4:
add r0, r4, r7
bl sub_027EAD50
mov r1, r0
mov r0, sb
bl sub_027EAD24
add sb, sb, #1
add r7, r7, #1
_027F12E0:
ldrh r0, [r6, #0x1e]
cmp r7, r0
blo _027F12C4
mvn r0, #0
sub r0, r0, r7
add r0, sb, r0
and r1, r7, #0xff
bl sub_027EAD24
b _027F1308
_027F1304:
strh r1, [r6, #0x92]
_027F1308:
mov r0, sb
bl sub_027F20D0
add sb, sb, r0
mov r0, sb
mov r1, #3
bl sub_027EAD24
add r0, sb, #1
mov r1, #1
bl sub_027EAD24
ldrh r1, [r6, #0x7a]
add r0, sb, #2
and r1, r1, #0xff
bl sub_027EAD24
add r0, sb, #3
sub r1, r0, sl
strh r1, [r6, #0x94]
ldrh r2, [r6, #0x94]
ldr r1, _027F1568 ; =0x04808084
add r2, r2, #2
strh r2, [r1]
mov r1, #5
bl sub_027EAD24
add r0, sb, #4
mov r1, #5
bl sub_027EAD24
add r0, sb, #5
mov r1, #0
bl sub_027EAD24
add r0, sb, #6
ldrh r1, [r6, #0x74]
and r1, r1, #0xff
bl sub_027EAD24
add r0, sb, #7
mov r1, #0
bl sub_027EAD24
add r0, sb, #8
mov r1, #0
bl sub_027EAD24
add r0, sb, #9
mov r1, #0
bl sub_027EAD24
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_027EAD24
add r0, sb, #0xb
ldrh r1, [r6, #0xa0]
add r1, r1, #8
and r1, r1, #0xff
bl sub_027EAD24
add r0, sb, #0xc
mov r1, #0
bl sub_027EAD24
add r0, sb, #0xd
mov r1, #9
bl sub_027EAD24
add r0, sb, #0xe
mov r1, #0xbf
bl sub_027EAD24
add r0, sb, #0xf
mov r1, #0
bl sub_027EAD24
ldrh r0, [r6, #0xe]
cmp r0, #1
bne _027F1448
ldrh r1, [r5, #0x20]
add r0, sb, #0x10
and r1, r1, #0xff
bl sub_027EAD24
ldrh r1, [r5, #0x20]
add r0, sb, #0x11
mov r1, r1, asr #8
and r1, r1, #0xff
add sb, sb, #0x12
bl sub_027EAD24
b _027F1464
_027F1448:
add r0, sb, #0x10
mov r1, #0xff
bl sub_027EAD24
add r0, sb, #0x11
mov r1, #0xff
add sb, sb, #0x12
bl sub_027EAD24
_027F1464:
ldr r1, _027F156C ; =0x0380FFF0
mov r0, sb
ldrh r4, [r1]
and r1, r4, #0xff
bl sub_027EAD24
mov r1, r4, lsr #8
add r0, sb, #1
and r1, r1, #0xff
add sb, sb, #2
bl sub_027EAD24
ldr r4, [r6, #0x9c]
mov r5, #0
b _027F14B8
_027F1498:
mov r0, r4
bl sub_027EAD50
mov r1, r0
mov r0, sb
bl sub_027EAD24
add sb, sb, #1
add r4, r4, #1
add r5, r5, #1
_027F14B8:
ldrh r1, [r6, #0xa0]
cmp r5, r1
blo _027F1498
ldrh r0, [r6, #0xa2]
cmp r0, #0
beq _027F1514
ldr r0, [r6, #0x9c]
cmp r1, #0
add r0, r0, r1
sub r5, r0, #1
mov r4, #0
bls _027F1514
b _027F1508
_027F14EC:
mov r0, r5
bl sub_027EAD50
mov r1, r0
add r0, r5, #1
bl sub_027EAD24
add r4, r4, #1
sub r5, r5, #1
_027F1508:
ldrh r0, [r6, #0xa0]
cmp r4, r0
blo _027F14EC
_027F1514:
ldr r0, _027F1560 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #4
beq _027F1544
ldr r1, _027F1570 ; =0x0000B6B8
add r0, sb, #3
bic r2, r0, #3
ldr r0, _027F1574 ; =0x00001D46
strh r1, [r2]
strh r0, [r2, #2]
_027F1544:
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
_027F1560: .word 0x0380FFF4
_027F1564: .word 0x027F74A4
_027F1568: .word 0x04808084
_027F156C: .word 0x0380FFF0
_027F1570: .word 0x0000B6B8
_027F1574: .word 0x00001D46
arm_func_end sub_027F1204
arm_func_start sub_027F1578
sub_027F1578: ; 0x027F1578
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _027F1664 ; =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 _027F15E8
ldrh r0, [r4, #0xa2]
ldr r1, [r4, #0x9c]
tst r0, #1
add r0, r5, #0xa
beq _027F15E0
sub r0, r0, #1
add r2, r2, #2
bl sub_027EAC7C
ldr r1, _027F1668 ; =0x0380FFF0
add r0, r5, #9
ldrh r1, [r1]
mov r1, r1, asr #8
and r1, r1, #0xff
bl sub_027EAD24
b _027F15E8
_027F15E0:
add r2, r2, #1
bl sub_027EAC7C
_027F15E8:
ldr r0, _027F1664 ; =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_027EAD24
ldr r0, _027F1664 ; =0x0380FFF4
ldr r0, [r0]
add r0, r0, #0x600
ldrh r0, [r0, #0x90]
tst r0, #4
beq _027F1654
ldrh r0, [r4, #0xa0]
add r1, r5, #0xd
add r0, r1, r0
ldr r1, _027F166C ; =0x0000B6B8
bic r2, r0, #3
ldr r0, _027F1670 ; =0x00001D46
strh r1, [r2]
strh r0, [r2, #2]
_027F1654:
mov r0, #0
strh r0, [r4, #0xa4]
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F1664: .word 0x0380FFF4
_027F1668: .word 0x0380FFF0
_027F166C: .word 0x0000B6B8
_027F1670: .word 0x00001D46
arm_func_end sub_027F1578
arm_func_start sub_027F1674
sub_027F1674: ; 0x027F1674
ldr r0, _027F16A0 ; =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
_027F16A0: .word 0x0380FFF4
arm_func_end sub_027F1674
arm_func_start sub_027F16A4
sub_027F16A4: ; 0x027F16A4
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _027F1718 ; =0x0380FFF4
mov r5, r1
ldr r1, [r2]
mov r6, r0
add r0, r1, #0x188
mov r1, #0x36
bl sub_037F886C
movs r4, r0
bne _027F16DC
mov r0, #2
bl sub_027EB06C
mov r0, r4
b _027F1710
_027F16DC:
ldr r0, _027F171C ; =0x0000FFFF
mov r1, r6
strh r0, [r4, #0xc]
add r0, r4, #0x10
bl sub_027F1FA8
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
_027F1710:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027F1718: .word 0x0380FFF4
_027F171C: .word 0x0000FFFF
arm_func_end sub_027F16A4
arm_func_start sub_027F1720
sub_027F1720: ; 0x027F1720
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _027F17C0 ; =0x0380FFF4
mov r6, r0
ldr r2, [r1]
mov r1, #0x5e
add r0, r2, #0x188
add r5, r2, #0x344
bl sub_037F886C
movs r4, r0
bne _027F1758
mov r0, #2
bl sub_027EB06C
mov r0, r4
b _027F17B8
_027F1758:
ldr r0, _027F17C4 ; =0x0000FFFF
mov r1, r6
strh r0, [r4, #0xc]
add r0, r4, #0x10
bl sub_027F1FA8
ldrh r1, [r5, #0x7c]
add r0, r4, #0x40
strh r1, [r4, #0x3c]
ldrh r1, [r5, #0x70]
strh r1, [r4, #0x3e]
bl sub_027F205C
mov r5, r0
add r0, r4, #0x40
add r0, r0, r5
bl sub_027F20D0
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
_027F17B8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027F17C0: .word 0x0380FFF4
_027F17C4: .word 0x0000FFFF
arm_func_end sub_027F1720
arm_func_start sub_027F17C8
sub_027F17C8: ; 0x027F17C8
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _027F1874 ; =0x0380FFF4
mov r6, r0
ldr r2, [r1]
mov r1, #0x64
add r0, r2, #0x188
add r5, r2, #0x344
bl sub_037F886C
movs r4, r0
bne _027F1800
mov r0, #2
bl sub_027EB06C
mov r0, r4
b _027F186C
_027F1800:
ldr r0, _027F1878 ; =0x0000FFFF
mov r1, r6
strh r0, [r4, #0xc]
add r0, r4, #0x10
bl sub_027F1FA8
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_027EA0E0
add r0, r4, #0x46
bl sub_027F205C
mov r5, r0
add r0, r4, #0x46
add r0, r0, r5
bl sub_027F20D0
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
_027F186C:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027F1874: .word 0x0380FFF4
_027F1878: .word 0x0000FFFF
arm_func_end sub_027F17C8
arm_func_start sub_027F187C
sub_027F187C: ; 0x027F187C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r3, _027F19E8 ; =0x0380FFF4
mov r7, r1
ldr r1, [r3]
mov r8, r0
add r0, r1, #0x188
mov r1, #0x60
mov r6, r2
bl sub_037F886C
movs r4, r0
bne _027F18B8
mov r0, #2
bl sub_027EB06C
mov r0, r4
b _027F19E0
_027F18B8:
ldr r0, _027F19EC ; =0x0000FFFF
cmp r7, #0
strh r0, [r4, #0xc]
bne _027F18DC
mov r0, r8
bl sub_027EBEB0
movs r5, r0
moveq r7, #0x13
b _027F18E0
_027F18DC:
mov r5, #0
_027F18E0:
mov r0, r8
bl sub_027EC040
mov r1, r0
add r0, r4, #0x10
bl sub_027F1FA8
ldr r0, _027F19E8 ; =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_027F20D0
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 _027F19C4
add r0, r6, #1
bl sub_027EAD50
mov sb, r0
mov r0, r6
bl sub_027EAD50
mov r1, r0
mov r0, r8
bl sub_027EAD24
add r0, r8, #1
and r1, sb, #0xff
add r8, r8, #2
bl sub_027EAD24
cmp sb, #0
mov r7, #0
bls _027F19DC
add r5, r6, #2
b _027F19B8
_027F199C:
add r0, r5, r7
bl sub_027EAD50
mov r1, r0
mov r0, r8
bl sub_027EAD24
add r7, r7, #1
add r8, r8, #1
_027F19B8:
cmp r7, sb
blo _027F199C
b _027F19DC
_027F19C4:
mov r0, r8
mov r1, #0
bl sub_027EAD24
add r0, r8, #1
mov r1, #0
bl sub_027EAD24
_027F19DC:
add r0, r4, #0x10
_027F19E0:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_027F19E8: .word 0x0380FFF4
_027F19EC: .word 0x0000FFFF
arm_func_end sub_027F187C
arm_func_start sub_027F19F0
sub_027F19F0: ; 0x027F19F0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r3, _027F1B48 ; =0x0380FFF4
mov r6, r1
ldr r1, [r3]
mov r8, r0
add r0, r1, #0x188
mov r1, #0x60
mov r5, r2
bl sub_037F886C
movs r4, r0
bne _027F1A2C
mov r0, #2
bl sub_027EB06C
mov r0, r4
b _027F1B40
_027F1A2C:
ldr r0, _027F1B4C ; =0x0000FFFF
cmp r6, #0
strh r0, [r4, #0xc]
bne _027F1A50
mov r0, r8
bl sub_027EBEB0
movs r7, r0
moveq r6, #0x13
b _027F1A54
_027F1A50:
mov r7, #0
_027F1A54:
mov r0, r8
bl sub_027EC040
mov r1, r0
add r0, r4, #0x10
bl sub_027F1FA8
ldr r0, _027F1B48 ; =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_027F20D0
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 _027F1B24
add r0, r5, #1
bl sub_027EAD50
mov r8, r0
mov r0, r5
bl sub_027EAD50
mov r1, r0
mov r0, r7
bl sub_027EAD24
add r0, r7, #1
and r1, r8, #0xff
bl sub_027EAD24
add r7, r7, #2
mov r6, #0
add r5, r5, #2
b _027F1B18
_027F1AFC:
add r0, r5, r6
bl sub_027EAD50
mov r1, r0
mov r0, r7
bl sub_027EAD24
add r7, r7, #1
add r6, r6, #1
_027F1B18:
cmp r6, r8
blo _027F1AFC
b _027F1B3C
_027F1B24:
mov r0, r7
mov r1, #0
bl sub_027EAD24
add r0, r7, #1
mov r1, #0
bl sub_027EAD24
_027F1B3C:
add r0, r4, #0x10
_027F1B40:
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027F1B48: .word 0x0380FFF4
_027F1B4C: .word 0x0000FFFF
arm_func_end sub_027F19F0
arm_func_start sub_027F1B50
sub_027F1B50: ; 0x027F1B50
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _027F1BD4 ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
mov r1, #0x5a
add r0, r0, #0x188
bl sub_037F886C
movs r5, r0
bne _027F1B84
mov r0, #2
bl sub_027EB06C
mov r0, r5
b _027F1BCC
_027F1B84:
ldr r2, _027F1BD8 ; =0x0000FFFF
mov r1, r4
add r0, r5, #0x10
strh r2, [r5, #0xc]
bl sub_027F1FA8
add r0, r5, #0x3c
bl sub_027F205C
mov r4, r0
add r0, r5, #0x3c
add r0, r0, r4
bl sub_027F20D0
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
_027F1BCC:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F1BD4: .word 0x0380FFF4
_027F1BD8: .word 0x0000FFFF
arm_func_end sub_027F1B50
arm_func_start sub_027F1BDC
sub_027F1BDC: ; 0x027F1BDC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r1, _027F1DF0 ; =0x0380FFF4
mov r5, r0
ldr r0, [r1]
add r4, r0, #0x344
bl sub_027F1674
cmp r0, #0
moveq r0, #0
beq _027F1DE8
ldr r1, _027F1DF0 ; =0x0380FFF4
ldrh r0, [r4, #0xa0]
ldr r2, [r1]
add r1, r0, #0x78
add r0, r2, #0x188
bl sub_037F886C
movs r6, r0
bne _027F1C30
mov r0, #2
bl sub_027EB06C
mov r0, r6
b _027F1DE8
_027F1C30:
ldr r0, _027F1DF4 ; =0x0000FFFF
mov r1, r5
strh r0, [r6, #0xc]
add r0, r6, #0x10
bl sub_027F1FA8
ldrh r1, [r4, #0x6e]
add r0, r6, #0x48
strh r1, [r6, #0x44]
ldrh r1, [r4, #0x7c]
strh r1, [r6, #0x46]
bl sub_027F205C
mov r4, r0
add r0, r6, #0x48
add r0, r0, r4
bl sub_027F20D0
add r7, r4, r0
add r0, r6, #0x48
add r4, r0, r7
mov r0, r4
mov r1, #3
bl sub_027EAD24
add r0, r4, #1
mov r1, #1
bl sub_027EAD24
ldr r1, _027F1DF0 ; =0x0380FFF4
add r0, r4, #2
ldr r1, [r1]
add r1, r1, #0x300
ldrh r1, [r1, #0xbe]
and r1, r1, #0xff
bl sub_027EAD24
ldr r0, _027F1DF0 ; =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_027EAD24
ldr r1, _027F1DF0 ; =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_027EAD24
add r0, r5, #2
mov r1, sl
bl sub_027EAD24
add r0, r5, #3
mov r1, #9
bl sub_027EAD24
add r0, r5, #4
mov r1, #0xbf
bl sub_027EAD24
add r0, r5, #5
mov r1, sl
bl sub_027EAD24
ldrh r1, [r8, #0x20]
add r0, r5, #6
and r1, r1, #0xff
bl sub_027EAD24
ldrh r1, [r8, #0x20]
add r0, r5, #7
mov r1, r1, asr #8
and r1, r1, #0xff
bl sub_027EAD24
ldr r1, _027F1DF8 ; =0x0380FFF0
add r0, r5, #8
ldrh r8, [r1]
and r1, r8, #0xff
bl sub_027EAD24
mov r1, r8, lsr #8
add r0, r5, #9
and r1, r1, #0xff
bl sub_027EAD24
ldrh r0, [r4, #0xa0]
add sl, sl, #0xa
cmp r0, #0
beq _027F1DC4
ldrh r0, [r4, #0xa2]
ldr r8, [r4, #0x9c]
tst r0, #1
addne r8, r8, #1
mov sb, #0
b _027F1DB8
_027F1D98:
mov r0, r8
bl sub_027EAD50
mov r1, r0
add r0, r5, sl
bl sub_027EAD24
add sl, sl, #1
add r8, r8, #1
add sb, sb, #1
_027F1DB8:
ldrh r0, [r4, #0xa0]
cmp sb, r0
blo _027F1D98
_027F1DC4:
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
_027F1DE8:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_027F1DF0: .word 0x0380FFF4
_027F1DF4: .word 0x0000FFFF
_027F1DF8: .word 0x0380FFF0
arm_func_end sub_027F1BDC
arm_func_start sub_027F1DFC
sub_027F1DFC: ; 0x027F1DFC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
cmp r2, #0
beq _027F1E20
bl sub_027F1674
cmp r0, #0
moveq r0, #0
beq _027F1EAC
_027F1E20:
ldr r0, _027F1EB4 ; =0x0380FFF4
add r1, r5, #0x3d
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F886C
movs r4, r0
bne _027F1E4C
mov r0, #2
bl sub_027EB06C
mov r0, r4
b _027F1EAC
_027F1E4C:
ldr r2, _027F1EB8 ; =0x0000FFFF
mov r1, r6
add r0, r4, #0x10
strh r2, [r4, #0xc]
bl sub_027F1FA8
cmp r5, #0
beq _027F1E8C
add r0, r4, #0x42
mov r1, #0x10
bl sub_027EAD24
add r0, r4, #0x43
and r1, r5, #0xff
bl sub_027EAD24
add r0, r5, #2
mov r0, r0, lsl #0x10
mov r5, r0, lsr #0x10
_027F1E8C:
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
_027F1EAC:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027F1EB4: .word 0x0380FFF4
_027F1EB8: .word 0x0000FFFF
arm_func_end sub_027F1DFC
arm_func_start sub_027F1EBC
sub_027F1EBC: ; 0x027F1EBC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
cmp r2, #0
beq _027F1EE0
bl sub_027F1674
cmp r0, #0
moveq r0, #0
beq _027F1F40
_027F1EE0:
ldr r0, _027F1F48 ; =0x0380FFF4
mov r1, #0x36
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F886C
movs r4, r0
bne _027F1F0C
mov r0, #2
bl sub_027EB06C
mov r0, r4
b _027F1F40
_027F1F0C:
ldr r0, _027F1F4C ; =0x0000FFFF
mov r1, r6
strh r0, [r4, #0xc]
add r0, r4, #0x10
bl sub_027F1FA8
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
_027F1F40:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027F1F48: .word 0x0380FFF4
_027F1F4C: .word 0x0000FFFF
arm_func_end sub_027F1EBC
arm_func_start sub_027F1F50
sub_027F1F50: ; 0x027F1F50
stmdb sp!, {r3, lr}
ldr ip, _027F1FA4 ; =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_027EA0FC
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027F1FA4: .word 0x0380FFF4
arm_func_end sub_027F1F50
arm_func_start sub_027F1FA8
sub_027F1FA8: ; 0x027F1FA8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r1, r5
mov r0, #0
mov r2, #0x2c
bl sub_037FDF74
bl sub_027EA578
strh r0, [r5, #0x10]
ldr r0, _027F1FF0 ; =0x0380FFF4
mov r1, r4
ldr r3, [r0]
add r0, r5, #0x18
add r2, r3, #0x324
add r3, r3, #0x3a8
bl sub_027EA130
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F1FF0: .word 0x0380FFF4
arm_func_end sub_027F1FA8
arm_func_start sub_027F1FF4
sub_027F1FF4: ; 0x027F1FF4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _027F2058 ; =0x0380FFF4
mov r7, r0
ldr r0, [r2]
mov r6, r1
ldr r5, [r0, #0x1a0]
mvn r4, #0
b _027F2044
_027F2014:
ldrh r0, [r5, #0x24]
cmp r0, r6
bne _027F2038
mov r1, r7
add r0, r5, #0x28
bl sub_027EA474
cmp r0, #0
movne r0, #1
bne _027F2050
_027F2038:
mov r0, r5
bl sub_037F8A80
mov r5, r0
_027F2044:
cmp r5, r4
bne _027F2014
mov r0, #0
_027F2050:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027F2058: .word 0x0380FFF4
arm_func_end sub_027F1FF4
arm_func_start sub_027F205C
sub_027F205C: ; 0x027F205C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r1, _027F20CC ; =0x0380FFF4
mov r5, #0
ldr r1, [r1]
mov r8, r0
add r4, r1, #0x344
ldrh r6, [r4, #0x1e]
mov r1, r5
bl sub_027EAD24
add r0, r8, #1
and r1, r6, #0xff
bl sub_027EAD24
add r5, r5, #2
mov r7, #0
add r4, r4, #0x20
b _027F20B8
_027F209C:
add r0, r4, r7
bl sub_027EAD50
mov r1, r0
add r0, r8, r5
bl sub_027EAD24
add r5, r5, #1
add r7, r7, #1
_027F20B8:
cmp r7, r6
blo _027F209C
mov r0, r5
ldmia sp!, {r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027F20CC: .word 0x0380FFF4
arm_func_end sub_027F205C
arm_func_start sub_027F20D0
sub_027F20D0: ; 0x027F20D0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r2, _027F216C ; =0x0380FFF4
mov r1, #1
ldr r2, [r2]
mov sb, r0
add r6, r2, #0x344
mov r7, #0
bl sub_027EAD24
ldr r4, _027F2170 ; =0x027F74C4
add r7, r7, #2
mov r8, #0
mov r5, #1
_027F2100:
ldrh r0, [r6, #0x62]
tst r0, r5, lsl r8
beq _027F2144
ldrh r0, [r6, #0x60]
tst r0, r5, lsl r8
mov r0, r8, lsl #1
ldrh r1, [r4, r0]
beq _027F2134
orr r1, r1, #0x80
add r0, sb, r7
and r1, r1, #0xff
bl sub_027EAD24
b _027F2140
_027F2134:
add r0, sb, r7
and r1, r1, #0xff
bl sub_027EAD24
_027F2140:
add r7, r7, #1
_027F2144:
add r8, r8, #1
cmp r8, #0x10
blo _027F2100
sub r1, r7, #2
add r0, sb, #1
and r1, r1, #0xff
bl sub_027EAD24
mov r0, r7
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_027F216C: .word 0x0380FFF4
_027F2170: .word 0x027F74C4
arm_func_end sub_027F20D0
arm_func_start sub_027F2174
sub_027F2174: ; 0x027F2174
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _027F2440 ; =0x0380FFF4
mvn r0, #0
ldr r4, [r1]
add r7, r4, #0x17c
ldr r5, [r7, #0x48]
add r6, r4, #0x344
cmp r5, r0
beq _027F2438
ldrh r0, [r6, #8]
cmp r0, #0x40
beq _027F21B4
mov r1, r5
add r0, r7, #0x48
bl sub_037F8908
b _027F2438
_027F21B4:
ldrh r0, [r5, #0x24]
mov r0, r0, lsl #0x17
movs r0, r0, lsr #0x1f
beq _027F21CC
ldrh r0, [r5, #0x34]
b _027F21D0
_027F21CC:
ldrh r0, [r5, #0x28]
_027F21D0:
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 _027F2230
cmp r2, #2
cmpne r2, #3
beq _027F230C
b _027F23AC
_027F2230:
ldrh r0, [r5, #0x24]
tst r0, #1
bne _027F23AC
add r0, r5, #0x2e
bl sub_027EB900
mov r8, r0
cmp r8, #0xff
beq _027F225C
bl sub_027EBFE0
cmp r0, #0x40
beq _027F22C0
_027F225C:
mov r0, r8
bl sub_027EBFE0
cmp r0, #0x30
add r0, r5, #0x2e
bne _027F2290
mov r1, #0xa0
bl sub_027F1FF4
cmp r0, #0
bne _027F23AC
add r0, r5, #0x2e
mov r1, #7
bl sub_027F16A4
b _027F22B0
_027F2290:
mov r1, #0xc0
bl sub_027F1FF4
cmp r0, #0
bne _027F23AC
add r0, r5, #0x2e
mov r1, #7
mov r2, #1
bl sub_027F1EBC
_027F22B0:
cmp r0, #0
beq _027F23AC
bl sub_027F107C
b _027F23AC
_027F22C0:
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_027EBD4C
mov r0, r8
bl sub_027EC080
ldrh r1, [r5, #0x3a]
cmp r1, r0
ldreq r0, [r4, #0x578]
addeq r0, r0, #1
streq r0, [r4, #0x578]
beq _027F23AC
add r0, r5, #0x28
add r1, r5, #0x34
bl sub_027EA0E0
mov sb, #0
b _027F23AC
_027F230C:
ldrh r1, [r5, #0x24]
tst r1, #1
bne _027F23AC
ldrh r0, [r6, #0xe]
cmp r0, #0
beq _027F2378
tst r1, #0x2000
bne _027F2378
ldrh r0, [r5, #0x28]
tst r0, #1
ldrneh r0, [r6, #0x8e]
bicne r0, r0, #1
strneh r0, [r6, #0x8e]
bne _027F2354
cmp r2, #3
ldrneh r0, [r6, #0x8e]
bicne r0, r0, #2
strneh r0, [r6, #0x8e]
_027F2354:
ldrh r0, [r6, #0x8e]
cmp r0, #0
ldreqh r0, [r7, #0x20]
cmpeq r0, #0
ldreqh r0, [r7, #0x2c]
cmpeq r0, #0
bne _027F2378
mov r0, #1
bl sub_027E9CB4
_027F2378:
ldrh r8, [r6, #0x88]
mov r0, r8
bl sub_027EC080
ldrh r1, [r5, #0x3a]
cmp r1, r0
ldreq r0, [r4, #0x578]
addeq r0, r0, #1
streq r0, [r4, #0x578]
beq _027F23AC
add r0, r5, #0x2e
add r1, r5, #0x34
bl sub_027EA0E0
mov sb, #0
_027F23AC:
cmp sb, #0
bne _027F2414
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
strh r0, [r5, #0x12]
ldrh r1, [r5, #0x22]
and r1, r1, #0xff
bl sub_027EBD2C
ldrh r1, [r5, #0x3a]
mov r0, r8
bl sub_027EBE4C
mov r0, r8
bl sub_027EBE8C
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_037F8D58
b _027F2420
_027F2414:
mov r1, r5
add r0, r7, #0x48
bl sub_037F8908
_027F2420:
ldrh r0, [r7, #0x50]
cmp r0, #0
beq _027F2438
mov r0, #2
mov r1, #6
bl sub_037F8598
_027F2438:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bx lr
.align 2, 0
_027F2440: .word 0x0380FFF4
arm_func_end sub_027F2174
arm_func_start sub_027F2444
sub_027F2444: ; 0x027F2444
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _027F25B0 ; =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 _027F25A8
add r0, r6, #0x1e
add r1, r4, #0x64
bl sub_027EA474
cmp r0, #0
beq _027F2498
add r0, r6, #0x24
add r1, r4, #0x82
bl sub_027EA474
cmp r0, #0
bne _027F24A0
_027F2498:
mov r0, #1
b _027F25A8
_027F24A0:
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, _027F25B4 ; =0x04808098
ldrh r0, [r0]
tst r0, #0x8000
beq _027F24F8
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]
_027F24F8:
ldrh r0, [r4, #0x88]
bl sub_027EBE8C
ldrh r1, [r6, #0x10]
ldr r0, _027F25B8 ; =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 _027F2544
_027F2534:
tst r2, #1
mov r2, r2, lsl #0xf
addne r0, r0, #1
mov r2, r2, lsr #0x10
_027F2544:
cmp r2, #0
bne _027F2534
ldr r2, _027F25BC ; =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, _027F25B0 ; =0x0380FFF4
strh r2, [r1, #0x1a]
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F8D58
mov r0, #0
_027F25A8:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027F25B0: .word 0x0380FFF4
_027F25B4: .word 0x04808098
_027F25B8: .word 0x00000182
_027F25BC: .word 0x04808094
arm_func_end sub_027F2444
arm_func_start sub_027F25C0
sub_027F25C0: ; 0x027F25C0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _027F2768 ; =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 _027F2760
add r0, r7, #0x18
add r1, r1, #0x3a8
bl sub_027EA474
cmp r0, #0
beq _027F2760
ldrh r1, [r7, #0x10]
ldrh r0, [r4, #0x16]
sub r1, r1, #0x18
sub r0, r0, #8
cmp r1, r0
bgt _027F2760
add r0, r7, #0x1e
bl sub_027EB900
mov r6, r0
cmp r6, #0xff
beq _027F263C
cmp r6, #0
beq _027F2678
bl sub_027EBFE0
cmp r0, #0x40
beq _027F2678
_027F263C:
add r0, r7, #0x1e
mov r1, #0xc0
bl sub_027F1FF4
cmp r0, #0
bne _027F2760
add r0, r7, #0x1e
mov r1, #7
mov r2, #0
bl sub_027F1EBC
cmp r0, #0
beq _027F2760
mov r1, #2
strh r1, [r0]
bl sub_027F107C
b _027F2760
_027F2678:
cmp r6, #0
beq _027F2760
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_027EBD4C
mov r0, r6
bl sub_027EBE8C
mov r0, r6
bl sub_027EC0CC
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 _027F2760
ldrh r0, [r5, #0x98]
tst r2, r0
beq _027F2760
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 _027F2710
_027F26F8:
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
_027F2710:
cmp r1, #1
bne _027F26F8
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_027EAD24
ldrh r1, [r7, #0xe]
add r0, r6, #2
and r1, r1, #0xff
bl sub_027EAD24
ldrh r2, [r6]
cmp r2, #0
beq _027F2760
add r0, r7, #0x2c
add r1, r6, #8
add r2, r2, #1
bl sub_037FDF9C
_027F2760:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027F2768: .word 0x0380FFF4
arm_func_end sub_027F25C0
arm_func_start sub_027F276C
sub_027F276C: ; 0x027F276C
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _027F2834 ; =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 _027F282C
add r0, r4, #0x1e
add r1, r5, #0x64
bl sub_027EA474
cmp r0, #0
beq _027F27BC
add r0, r4, #0x24
add r1, r5, #0x82
bl sub_027EA474
cmp r0, #0
bne _027F27C4
_027F27BC:
mov r0, #1
b _027F282C
_027F27C4:
ldrh r1, [r4, #0x10]
ldr r0, _027F2838 ; =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, _027F2834 ; =0x0380FFF4
ldr r2, _027F283C ; =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_037F8D58
mov r0, #0
_027F282C:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F2834: .word 0x0380FFF4
_027F2838: .word 0x00000185
_027F283C: .word 0x04808094
arm_func_end sub_027F276C
arm_func_start sub_027F2840
sub_027F2840: ; 0x027F2840
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x44
ldr r1, _027F2E68 ; =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_027EB9A8
mov r8, r0
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
strh r0, [sl, #2]
cmp r8, #0xff
beq _027F2E5C
ldrh r1, [sl, #0x12]
bl sub_027EBD2C
ldrh sb, [sl, #6]
cmp sb, #0xc
bls _027F2E5C
add r1, sp, #0x18
mov r0, #0
mov r2, #0x2c
bl sub_037FDFD0
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_027F3C10
ldr sb, [sp, #0x38]
cmp sb, #0
beq _027F293C
ldrh r0, [sl, #0x16]
tst r0, #0x8000
beq _027F293C
add r0, sb, #6
bl sub_027EAD50
mov fp, r0
add r0, sb, #7
bl sub_027EAD50
ldr r1, _027F2E6C ; =0x0480810C
add r0, fp, r0, lsl #8
strh r0, [r1]
_027F293C:
ldrh r1, [r5]
cmp r1, #0x13
ldreq r0, [r5, #0x18]
ldreqh r0, [r0, #0x38]
cmpeq r0, #1
bne _027F2974
ldrh r0, [sp, #0x22]
and r0, r0, #9
cmp r0, #9
bne _027F2E44
add r1, sp, #0x18
mov r0, sl
bl sub_027F31F0
b _027F2E44
_027F2974:
ldrh r0, [sp, #0x22]
tst r0, #8
beq _027F2E44
cmp r1, #0x21
bne _027F2AFC
bl sub_027EABE0
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 _027F2AD8
ldrh r0, [sl, #0x34]
cmp r0, #0x3e8
movhi r0, #0xc
strhih r0, [r5, #4]
movhi r0, #1
strhih r0, [r5, #6]
bhi _027F2AD8
mov r1, #0
strh r1, [r5, #4]
ldrh r0, [sp, #0x24]
tst r0, #2
beq _027F29F0
ldrh r0, [sp, #0x22]
tst r0, #2
bne _027F29F0
ldrh r0, [sp, #0x2a]
bl sub_027E9900
_027F29F0:
ldrh r1, [sp, #0x2e]
mov r0, r8
bl sub_027EBE2C
ldrh r0, [r4, #0xc]
cmp r0, #2
bne _027F2A80
ldr sb, [sp, #0x40]
cmp sb, #0
beq _027F2A68
add r0, sb, #6
bl sub_027EAD50
mov fp, r0
add r0, sb, #7
bl sub_027EAD50
add r0, fp, r0, lsl #8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #1
bl sub_027E91B0
ldr r0, [sp, #0x40]
add r0, r0, #8
bl sub_027EAD50
ldr r1, [sp, #0x40]
mov sb, r0
add r0, r1, #9
bl sub_027EAD50
add r1, sb, r0, lsl #8
ldr r0, _027F2E70 ; =0x0380FFF0
strh r1, [r0]
b _027F2A80
_027F2A68:
ldr r0, _027F2E74 ; =0x0000FFFF
mov r1, #1
bl sub_027E91B0
ldr r0, _027F2E70 ; =0x0380FFF0
mov r1, #0
strh r1, [r0]
_027F2A80:
ldr r0, [sp, #0x3c]
add r0, r0, #3
bl sub_027EAD50
bl sub_027E9738
ldr r0, [sp, #0x3c]
add r0, r0, #2
bl sub_027EAD50
strh r0, [r4, #0x76]
ldrh r0, [sl, #0x34]
bl sub_027E96E0
mov r0, #1
strh r0, [r4, #0x12]
strh r0, [r4, #0x1a]
ldrh r0, [r4, #0xc]
cmp r0, #2
ldreq r0, _027F2E78 ; =0x04808048
moveq r1, #3
streqh r1, [r0]
ldr r1, _027F2E7C ; =0x04808038
ldrh r0, [r1]
orr r0, r0, #1
strh r0, [r1]
_027F2AD8:
ldr r0, [r5, #0x1c]
add r1, sl, #0x1e
add r0, r0, #8
bl sub_027EA0E0
mov r2, #0x25
mov r0, #2
mov r1, #1
strh r2, [r5]
bl sub_037F8598
_027F2AFC:
ldrh r0, [r4, #0xc]
cmp r0, #2
beq _027F2B14
cmp r0, #3
beq _027F2BCC
b _027F2E2C
_027F2B14:
ldr sb, [sp, #0x40]
cmp sb, #0
beq _027F2BCC
add r0, sb, #6
bl sub_027EAD50
mov r5, r0
add r0, sb, #7
bl sub_027EAD50
add r0, r5, r0, lsl #8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0
bl sub_027E91B0
ldr r0, [sp, #0x40]
add r0, r0, #8
bl sub_027EAD50
ldr r1, [sp, #0x40]
mov r5, r0
add r0, r1, #9
bl sub_027EAD50
ldr r1, _027F2E70 ; =0x0380FFF0
add r0, r5, r0, lsl #8
strh r0, [r1]
ldr r0, [sp, #0x40]
add r0, r0, #1
bl sub_027EAD50
sub r0, r0, #8
strh r0, [r4, #0xa0]
ldrh r2, [r4, #0xa0]
cmp r2, #0
beq _027F2BCC
ldr r0, [sp, #0x40]
ldr r1, [r4, #0x9c]
tst r0, #1
beq _027F2BB8
add r0, r0, #9
add r2, r2, #2
bl sub_037FDF9C
mov r0, #1
strh r0, [r4, #0xa2]
b _027F2BCC
_027F2BB8:
add r0, r0, #0xa
add r2, r2, #1
bl sub_037FDF9C
mov r0, #0
strh r0, [r4, #0xa2]
_027F2BCC:
mov r1, #0
mov r0, r8
strh r1, [r4, #0x80]
bl sub_027EBE8C
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_03806B80
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, _027F2E80 ; =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 _027F2D34
ldrh r0, [r4, #0x1a]
cmp r0, #0
beq _027F2D34
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_037FDD00
ldr r1, _027F2E84 ; =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_037FDD14
ldrh r1, [sp, #8]
ldrh r0, [sp]
cmp r1, r0
bhs _027F2CF8
ldr r2, [sp, #8]
ldr r0, [sp, #0x10]
ldr r1, [sp, #0xc]
subs r2, r2, r0
ldr r0, [sp, #0x14]
b _027F2D0C
_027F2CF8:
ldr r2, [sp]
ldr r0, [sp, #0x10]
ldr r1, [sp, #4]
subs r2, r2, r0
ldr r0, [sp, #0x14]
_027F2D0C:
sbc r0, r1, r0
mov r2, r2, lsr #0xa
orr r2, r2, r0, lsl #22
ldrh r1, [r6, #0x20]
ldr r0, _027F2E88 ; =0x04808134
cmp r2, r1
sublo r1, r1, r2
strloh r1, [r0]
movhs r1, #0
strhsh r1, [r0]
_027F2D34:
ldrh r0, [r4, #8]
cmp r0, #0x40
bne _027F2E2C
ldr r1, [sp, #0x3c]
cmp r1, #0
beq _027F2E2C
ldrh r0, [r4, #0xe]
cmp r0, #1
bne _027F2E2C
add r0, r1, #2
bl sub_027EAD50
ldrh r1, [r4, #0x76]
cmp r1, r0
strneh r0, [r4, #0x76]
mov r1, #0
strh r1, [r4, #0x8e]
cmp r0, #0
bne _027F2D98
ldr r0, [sp, #0x3c]
add r0, r0, #4
bl sub_027EAD50
tst r0, #1
ldrneh r0, [r4, #0x8e]
orrne r0, r0, #1
strneh r0, [r4, #0x8e]
_027F2D98:
ldr r0, [sp, #0x3c]
add r0, r0, #4
bl sub_027EAD50
ldr r1, [sp, #0x3c]
and r8, r0, #0xfe
add r0, r1, #1
mov r5, r8, lsl #3
bl sub_027EAD50
ldrh r1, [r4, #0x6a]
add r0, r8, r0
cmp r1, r8, lsl #3
sub r0, r0, #3
blo _027F2E08
cmp r1, r0, lsl #3
bhi _027F2E08
ldr r0, [sp, #0x3c]
sub r5, r1, r5
add r0, r0, #5
add r0, r0, r5, lsr #3
bl sub_027EAD50
and r1, r5, #7
mov r2, #1
tst r0, r2, lsl r1
beq _027F2E08
ldrh r0, [r4, #0x8e]
orr r0, r0, #2
strh r0, [r4, #0x8e]
bl sub_027F1108
_027F2E08:
ldrh r0, [r7, #0x20]
cmp r0, #0
ldreqh r0, [r7, #0x2c]
cmpeq r0, #0
ldreqh r0, [r4, #0x8e]
cmpeq r0, #0
bne _027F2E2C
mov r0, #1
bl sub_027E9CB4
_027F2E2C:
ldrh r0, [r6, #0x1e]
mov r0, r0, lsl #0x19
movs r0, r0, lsr #0x1f
beq _027F2E44
mov r0, sl
bl sub_027EDF94
_027F2E44:
ldr r2, [sp, #0x34]
cmp r2, #0
beq _027F2E5C
ldrh r0, [sp, #0x2a]
mov r1, sl
bl sub_027F4B7C
_027F2E5C:
add sp, sp, #0x44
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027F2E68: .word 0x0380FFF4
_027F2E6C: .word 0x0480810C
_027F2E70: .word 0x0380FFF0
_027F2E74: .word 0x0000FFFF
_027F2E78: .word 0x04808048
_027F2E7C: .word 0x04808038
_027F2E80: .word 0x048080F6
_027F2E84: .word 0x048080F8
_027F2E88: .word 0x04808134
arm_func_end sub_027F2840
arm_func_start sub_027F2E8C
sub_027F2E8C: ; 0x027F2E8C
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _027F2F68 ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
ldrh r5, [r4, #2]
add r1, r0, #0x344
ldrh r0, [r1, #0xc]
cmp r0, #1
beq _027F2EC0
cmp r0, #2
cmpne r0, #3
beq _027F2F28
b _027F2F60
_027F2EC0:
mov r0, r5
bl sub_027EBFE0
cmp r0, #0x40
bne _027F2EF8
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x30
bl sub_027EBC44
ldrh r1, [r4, #0x2c]
add r0, r4, #0x1e
bl sub_027EDE44
mov r0, r5
bl sub_027F0D60
b _027F2F60
_027F2EF8:
cmp r0, #0x30
add r0, r4, #0x1e
mov r1, #7
bne _027F2F10
bl sub_027F16A4
b _027F2F18
_027F2F10:
mov r2, #1
bl sub_027F1EBC
_027F2F18:
cmp r0, #0
beq _027F2F60
bl sub_027F107C
b _027F2F60
_027F2F28:
ldrh r0, [r1, #8]
cmp r0, #0x40
bne _027F2F60
add r0, r4, #0x1e
add r1, r1, #0x82
bl sub_027EA474
cmp r0, #0
beq _027F2F60
mov r0, #0x30
bl sub_037F9238
bl sub_027EA03C
ldrh r1, [r4, #0x2c]
add r0, r4, #0x1e
bl sub_027EDE44
_027F2F60:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F2F68: .word 0x0380FFF4
arm_func_end sub_027F2E8C
arm_func_start sub_027F2F6C
sub_027F2F6C: ; 0x027F2F6C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x2c
ldr r1, _027F3134 ; =0x0380FFF4
mov r7, r0
ldr r0, [r1]
ldrh r5, [r7, #6]
add r4, r0, #0x31c
cmp r5, #4
bls _027F3128
add r0, r0, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #1
bne _027F3128
add r0, r7, #0x1e
mov r1, #0x10
bl sub_027F1FF4
cmp r0, #0
bne _027F3128
ldrh r6, [r7, #2]
cmp r6, #0
beq _027F2FD0
mov r0, r6
bl sub_027EBFE0
cmp r0, #0x30
bhs _027F3004
_027F2FD0:
add r0, r7, #0x1e
mov r1, #0xc0
bl sub_027F1FF4
cmp r0, #0
bne _027F3128
add r0, r7, #0x1e
mov r1, #6
mov r2, #1
bl sub_027F1EBC
cmp r0, #0
beq _027F3128
bl sub_027F107C
b _027F3128
_027F3004:
mov r0, r6
bl sub_027EBFE0
cmp r0, #0x40
mov r0, r6
bne _027F3030
mov r1, #0x30
bl sub_027EBC44
add r0, r7, #0x1e
mov r1, #1
bl sub_027EDE44
b _027F303C
_027F3030:
bl sub_027EC0CC
cmp r0, #0
bne _027F3128
_027F303C:
add r1, sp, #0
mov r0, #0
mov r2, #0x2c
bl sub_037FDFD0
add r2, r7, #0x30
sub r1, r5, #4
str r2, [sp]
strh r1, [sp, #8]
add r0, sp, #0
bl sub_027F3C10
ldrh r1, [r7, #0x2c]
ldr r0, _027F3138 ; =0x0000FFC2
tst r1, r0
bne _027F30D4
mov r0, r1, lsl #0x1f
movs r0, r0, lsr #0x1f
beq _027F30D4
ldrh r2, [r4, #0x18]
cmp r2, #0
moveq r0, r1, lsl #0x1b
moveq r0, r0, lsr #0x1f
cmpeq r0, #1
beq _027F30D4
cmp r2, #0
beq _027F30B0
ldrh r0, [r7, #0x2c]
mov r0, r0, lsl #0x1b
movs r0, r0, lsr #0x1f
beq _027F30D4
_027F30B0:
ldrh r0, [r4, #0x1e]
mov r0, r0, lsl #0x1d
mov r0, r0, lsr #0x1f
cmp r0, #1
bne _027F30DC
ldrh r0, [r7, #0x2c]
mov r0, r0, lsl #0x1a
movs r0, r0, lsr #0x1f
bne _027F30DC
_027F30D4:
mov r1, #0xa
b _027F3110
_027F30DC:
mov r0, r6
bl sub_027EBE0C
ldrh r0, [sp, #0xa]
tst r0, #1
moveq r1, #1
beq _027F3110
tst r0, #4
moveq r1, #0x12
beq _027F3110
ldrh r1, [sp, #0x16]
mov r0, r6
bl sub_027EBE2C
mov r1, #0
_027F3110:
ldr r2, [sp, #0x1c]
mov r0, r6
bl sub_027F187C
cmp r0, #0
beq _027F3128
bl sub_027F107C
_027F3128:
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027F3134: .word 0x0380FFF4
_027F3138: .word 0x0000FFC2
arm_func_end sub_027F2F6C
arm_func_start sub_027F313C
sub_027F313C: ; 0x027F313C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x2c
mov r4, r0
add r0, r4, #0x1e
mov r1, #0x50
bl sub_027F1FF4
cmp r0, #0
bne _027F31E0
ldrh r0, [r4, #0x24]
tst r0, #1
bne _027F3174
ldrh r0, [r4, #8]
tst r0, #0x8000
beq _027F31E0
_027F3174:
add r1, sp, #0
mov r0, #0
mov r2, #0x2c
bl sub_037FDFD0
add r0, r4, #0x2c
str r0, [sp]
ldrh r1, [r4, #6]
ldr r0, _027F31EC ; =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_027F3C10
ldrh r0, [sp, #0xa]
and r0, r0, #1
cmp r0, #1
bne _027F31E0
add r0, r4, #0x1e
bl sub_027F1BDC
cmp r0, #0
beq _027F31E0
bl sub_027F107C
_027F31E0:
add sp, sp, #0x2c
ldmia sp!, {r3, r4, lr}
bx lr
.align 2, 0
_027F31EC: .word 0x0380FFF4
arm_func_end sub_027F313C
arm_func_start sub_027F31F0
sub_027F31F0: ; 0x027F31F0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x30
ldr r2, _027F35B8 ; =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 _027F35AC
ldr r0, [r4, #0x18]
ldr r5, [r4, #0x1c]
add r8, r0, #0x4e
mov r6, #0
b _027F3260
_027F3234:
mov r0, r8
add r1, r7, #0x24
bl sub_027EA474
cmp r0, #0
ldrneh r1, [r5, #6]
movne r0, #1
orrne r0, r1, r0, lsl r6
strneh r0, [r5, #6]
bne _027F35AC
add r8, r8, #6
add r6, r6, #1
_027F3260:
ldr r0, [r4, #0x18]
ldrh r0, [r0, #0x4c]
cmp r6, r0
blo _027F3234
add r6, r5, #0xa
mov r8, #0
b _027F329C
_027F327C:
add r0, r7, #0x24
add r1, r6, #4
bl sub_027EA474
cmp r0, #0
bne _027F35AC
ldrh r0, [r6]
add r8, r8, #1
add r6, r6, r0, lsl #1
_027F329C:
ldrh r0, [r5, #8]
cmp r8, r0
blo _027F327C
mov r1, r6
mov r0, #0
mov r2, #0x40
bl sub_037FDF74
ldrh r8, [r7, #6]
cmp r8, #0xc
bls _027F35AC
cmp sl, #0
bne _027F3318
add r1, sp, #4
mov r0, #0
mov r2, #0x2c
bl sub_037FDFD0
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_027F3C10
add sl, sp, #4
_027F3318:
ldr r0, [sl, #0x28]
cmp r0, #0
ldreqh r0, [sl, #0x1a]
beq _027F333C
add r0, r0, #1
bl sub_027EAD50
sub r0, r0, #8
strh r0, [r6, #0x3c]
ldrh r0, [r6, #0x3c]
_027F333C:
add r0, r0, #0x41
mov r0, r0, lsr #1
strh r0, [r6]
ldrh r0, [sl, #0xa]
and r0, r0, #1
cmp r0, #1
bne _027F35A0
ldr r0, _027F35B8 ; =0x0380FFF4
ldrh r1, [r6]
ldr r0, [r0]
add r0, r0, #0x400
ldrh r0, [r0, #8]
cmp r0, r1
blo _027F35A0
ldrh r1, [r7, #0x36]
add r0, r6, #4
strh r1, [r6, #0x2c]
add r1, r7, #0x24
bl sub_027EA0E0
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 _027F33E4
mov r7, #0
add r8, r6, #0x40
b _027F33D4
_027F33B4:
ldr r0, [sl, #0x28]
add r0, r0, #0xa
add r0, r0, r7
bl sub_027EAD50
mov r1, r0
add r0, r8, r7
bl sub_027EAD24
add r7, r7, #1
_027F33D4:
ldrh r0, [r6, #0x3c]
cmp r7, r0
blo _027F33B4
b _027F3488
_027F33E4:
ldrh r0, [sl, #0x18]
strh r0, [r6, #0x3e]
ldrh r0, [sl, #0x18]
cmp r0, #0
beq _027F3488
add r7, r7, #0x38
add fp, r6, #0x40
mov r8, #0
b _027F347C
_027F3408:
mov r0, r7
bl sub_027EAD50
mov sb, r0
add r0, r7, #1
bl sub_027EAD50
cmp sb, #6
bls _027F3474
ldr r1, [sl, #0x28]
cmp r7, r1
beq _027F3474
add r0, r0, #2
mov sb, #0
str r0, [sp]
b _027F3460
_027F3440:
mov r0, r7
bl sub_027EAD50
mov r1, r0
mov r0, fp
bl sub_027EAD24
add fp, fp, #1
add r7, r7, #1
add sb, sb, #1
_027F3460:
ldr r0, [sp]
cmp sb, r0
blo _027F3440
add r8, r8, #1
b _027F347C
_027F3474:
add r0, r0, #2
add r7, r7, r0
_027F347C:
ldrh r0, [sl, #0x18]
cmp r8, r0
blo _027F3408
_027F3488:
ldr r0, [sl, #0x1c]
cmp r0, #0
beq _027F34DC
add r0, r0, #1
bl sub_027EAD50
strh r0, [r6, #0xa]
mov r7, #0
add r8, r6, #0xc
b _027F34CC
_027F34AC:
ldr r0, [sl, #0x1c]
add r0, r0, #2
add r0, r0, r7
bl sub_027EAD50
mov r1, r0
add r0, r8, r7
bl sub_027EAD24
add r7, r7, #1
_027F34CC:
ldrh r0, [r6, #0xa]
cmp r7, r0
blo _027F34AC
b _027F3504
_027F34DC:
mov sb, #0
strh sb, [r6, #0xa]
add r8, r6, #0xc
mov r7, sb
_027F34EC:
mov r1, r7
add r0, r8, sb
bl sub_027EAD24
add sb, sb, #1
cmp sb, #0x20
blo _027F34EC
_027F3504:
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 _027F3534
add r0, r0, #3
bl sub_027EAD50
strh r0, [r6, #0x38]
_027F3534:
ldr r0, [sl, #0x24]
cmp r0, #0
beq _027F354C
add r0, r0, #3
bl sub_027EAD50
strh r0, [r6, #0x34]
_027F354C:
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 _027F35AC
bl sub_027EABE0
mov r2, #0x15
mov r0, #2
mov r1, #0
strh r2, [r4]
bl sub_037F8598
b _027F35AC
_027F35A0:
ldr r1, _027F35BC ; =0x027F74B4
add r0, r6, #4
bl sub_027EA0E0
_027F35AC:
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027F35B8: .word 0x0380FFF4
_027F35BC: .word 0x027F74B4
arm_func_end sub_027F31F0
arm_func_start sub_027F35C0
sub_027F35C0: ; 0x027F35C0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r1, _027F3B4C ; =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 _027F3660
ldr r1, _027F3B50 ; =0x048080B0
add r0, r2, #0x2c
ldrh r2, [r1]
add r1, r0, #0x400
tst r2, #1
ldrneh r0, [r1]
cmpne r0, #0
bne _027F3660
tst r2, #4
ldrneh r0, [r1, #0x14]
cmpne r0, #0
bne _027F3660
tst r2, #8
ldrneh r0, [r1, #0x28]
cmpne r0, #0
bne _027F3660
ldr r0, _027F3B54 ; =0x0480819C
ldrh r0, [r0]
tst r0, #1
bne _027F3660
ldr r2, _027F3B58 ; =0x04808032
mov r3, #0
strh r3, [r2]
mov r1, #0x8000
ldr r0, _027F3B4C ; =0x0380FFF4
strh r1, [r2]
ldr r0, [r0]
add r0, r0, #0x400
strh r3, [r0, #0xde]
_027F3660:
add r0, sl, #0x1e
mov r1, #0xb0
bl sub_027F1FF4
cmp r0, #0
bne _027F3B44
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 _027F3B08
ldrh r0, [r4, #0xc]
cmp r0, #1
bne _027F3710
mov r0, r8
bl sub_027EBFE0
cmp r0, #0x20
bls _027F36D4
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_027EBC44
add r0, sl, #0x1e
mov r1, #1
bl sub_027EDBE4
_027F36D4:
ldrh r0, [sl, #8]
tst r0, #0x400
beq _027F3710
mov r0, r8
bl sub_027EC060
cmp r0, #0
beq _027F3710
mov r5, #1
mov r0, r8
mov r1, #0
strh r5, [sl, #0x2c]
mov r7, #0xf
mov r6, #4
bl sub_027EBE6C
b _027F3B08
_027F3710:
ldrh r0, [sl, #0x2c]
cmp r0, #0
beq _027F3728
cmp r0, #1
beq _027F3804
b _027F3AF8
_027F3728:
ldrh r1, [r4, #0xc]
cmp r1, #1
ldreq r0, _027F3B4C ; =0x0380FFF4
ldreq r0, [r0]
addeq r0, r0, #0x300
ldreqh r0, [r0, #0x32]
cmpeq r0, #1
moveq r7, #0xd
moveq r5, #1
beq _027F3B08
cmp r1, #1
bne _027F3774
ldrh r0, [sl, #0x2e]
mov r5, #1
cmp r0, #1
moveq r7, #0
movne r7, #0xe
movne r6, #2
b _027F3B08
_027F3774:
beq _027F3B08
ldrh r0, [sl, #0x2e]
cmp r0, #2
ldreq r1, [sb, #0x18]
ldreqh r0, [r1, #0x16]
cmpeq r0, #0
bne _027F3B08
add r0, r1, #0x10
add r1, sl, #0x1e
bl sub_027EA474
cmp r0, #0
beq _027F3B08
ldrh r0, [sb]
cmp r0, #0x31
bne _027F3B08
bl sub_027EABE0
ldrh r0, [sl, #0x30]
cmp r0, #0
ldrne r0, [sb, #0x1c]
movne r1, #0xc
strneh r1, [r0, #4]
ldrneh r1, [sl, #0x30]
bne _027F37E4
mov r0, #0x30
bl sub_037F9238
ldr r0, [sb, #0x1c]
mov r1, #0
strh r1, [r0, #4]
_027F37E4:
ldr r0, [sb, #0x1c]
mov r2, #0x35
strh r1, [r0, #6]
mov r0, #2
mov r1, r0
strh r2, [sb]
bl sub_037F8598
b _027F3B08
_027F3804:
ldrh r0, [r4, #0xc]
cmp r0, #1
bne _027F39A4
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_027EBC44
ldrh r0, [sl, #0x2e]
cmp r0, #1
bne _027F38C0
add r0, sl, #0x1e
mov r1, #0x80
mov r2, #1
bl sub_027F1DFC
movs r4, r0
beq _027F3B08
ldrh r1, [sl, #0x2c]
ldr r0, _027F3B5C ; =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_027EADA0
mov r0, r8
mov r1, sb
bl sub_027EBE6C
add r0, r4, #0x33
add sb, r4, #0x34
bl sub_027EAD50
mov fp, r0
mov r8, #0
b _027F38AC
_027F38A0:
bl sub_027EADB8
strh r0, [sb], #2
add r8, r8, #2
_027F38AC:
cmp r8, fp
blo _027F38A0
mov r0, r4
bl sub_027F107C
b _027F3B08
_027F38C0:
cmp r0, #3
mov r0, r8
bne _027F398C
bl sub_027EBFE0
cmp r0, #0x20
bne _027F38E8
mov r0, r8
bl sub_027EC060
cmp r0, #0
bne _027F38F4
_027F38E8:
mov r7, #1
mov r5, r7
b _027F3B08
_027F38F4:
ldrh r0, [sl, #2]
bl sub_027EC060
bl sub_027EADA0
add r0, sl, #0x33
add r7, sl, #0x34
bl sub_027EAD50
mov r4, r0
mov r5, #0
b _027F3930
_027F3918:
bl sub_027EADB8
ldrh r1, [r7], #2
cmp r1, r0
movne r0, #0
bne _027F3960
add r5, r5, #1
_027F3930:
cmp r5, r4, lsr #1
blo _027F3918
tst r4, #1
beq _027F395C
bl sub_027EADB8
ldrh r1, [r7]
and r0, r0, #0xff
and r1, r1, #0xff
cmp r1, r0
movne r0, #0
bne _027F3960
_027F395C:
mov r0, #1
_027F3960:
cmp r0, #0
mov r0, r8
mov r1, #0
mov r5, #1
bne _027F3980
mov r7, #0xf
bl sub_027EBE6C
b _027F3B08
_027F3980:
bl sub_027EBE6C
mov r7, #0
b _027F3B08
_027F398C:
mov r1, #0
bl sub_027EBE6C
mov r7, #0xe
mov r6, #2
mov r5, #1
b _027F3B08
_027F39A4:
ldr r1, [sb, #0x18]
ldrh r0, [r1, #0x16]
cmp r0, #1
bne _027F3B08
add r0, r1, #0x10
add r1, sl, #0x1e
bl sub_027EA474
cmp r0, #0
beq _027F3B08
ldrh r0, [sl, #0x2e]
cmp r0, #2
bne _027F3A94
ldrh r0, [sb]
cmp r0, #0x31
bne _027F3B08
ldrh r0, [sl, #0x30]
cmp r0, #0
beq _027F3A28
bl sub_027EABE0
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_037F8598
mov r0, #0x20
bl sub_037F9238
b _027F3B08
_027F3A28:
mov r1, #0x33
add r0, sl, #0x33
strh r1, [sb]
bl sub_027EAD50
mov r1, r0
add r0, sl, #0x1e
mov r2, #1
bl sub_027F1DFC
movs r4, r0
beq _027F3B08
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_037FDF9C
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_027F107C
b _027F3B08
_027F3A94:
cmp r0, #4
ldreqh r0, [sb]
cmpeq r0, #0x33
bne _027F3B08
bl sub_027EABE0
ldrh r0, [sl, #0x30]
cmp r0, #0
ldrne r0, [sb, #0x1c]
movne r1, #0xc
strneh r1, [r0, #4]
ldrneh r1, [sl, #0x30]
bne _027F3AD8
mov r0, #0x30
bl sub_037F9238
ldr r0, [sb, #0x1c]
mov r1, #0
strh r1, [r0, #4]
_027F3AD8:
ldr r0, [sb, #0x1c]
mov r2, #0x35
strh r1, [r0, #6]
mov r0, #2
mov r1, r0
strh r2, [sb]
bl sub_037F8598
b _027F3B08
_027F3AF8:
ldrh r0, [r4, #0xc]
cmp r0, #1
moveq r7, #0xd
moveq r5, #1
_027F3B08:
cmp r5, #0
beq _027F3B44
cmp r7, #0
movne r2, #1
moveq r2, #0
add r0, sl, #0x1e
mov r1, #0
bl sub_027F1DFC
cmp r0, #0
beq _027F3B44
ldrh r1, [sl, #0x2c]
strh r1, [r0, #0x2c]
strh r6, [r0, #0x2e]
strh r7, [r0, #0x30]
bl sub_027F107C
_027F3B44:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027F3B4C: .word 0x0380FFF4
_027F3B50: .word 0x048080B0
_027F3B54: .word 0x0480819C
_027F3B58: .word 0x04808032
_027F3B5C: .word 0x04808044
arm_func_end sub_027F35C0
arm_func_start sub_027F3B60
sub_027F3B60: ; 0x027F3B60
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _027F3C0C ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
ldrh r5, [r4, #2]
add r1, r0, #0x344
ldrh r0, [r1, #0xc]
cmp r0, #1
beq _027F3B94
cmp r0, #2
cmpne r0, #3
beq _027F3BCC
b _027F3C04
_027F3B94:
mov r0, r5
bl sub_027EBFE0
cmp r0, #0x20
bls _027F3C04
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, #0x20
bl sub_027EBC44
ldrh r1, [r4, #0x2c]
add r0, r4, #0x1e
bl sub_027EDBE4
mov r0, r5
bl sub_027F0D60
b _027F3C04
_027F3BCC:
ldrh r0, [r1, #8]
cmp r0, #0x20
bls _027F3C04
add r0, r4, #0x1e
add r1, r1, #0x82
bl sub_027EA474
cmp r0, #0
beq _027F3C04
mov r0, #0x20
bl sub_037F9238
bl sub_027EA03C
ldrh r1, [r4, #0x2c]
add r0, r4, #0x1e
bl sub_027EDBE4
_027F3C04:
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F3C0C: .word 0x0380FFF4
arm_func_end sub_027F3B60
arm_func_start sub_027F3C10
sub_027F3C10: ; 0x027F3C10
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r1, _027F3F30 ; =0x0380FFF4
mov sb, r0
ldr r0, [r1]
ldr r5, [sb]
add r4, r0, #0x344
ldrh r0, [r4, #0x7a]
ldr sl, _027F3F30 ; =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 _027F3EA4
_027F3C50:
mov r0, r5
bl sub_027EAD50
mov r8, r0
add r0, r5, #1
add r5, r5, #2
bl sub_027EAD50
mov r7, r0
cmp r8, #6
addls pc, pc, r8, lsl #2
b _027F3C94
_027F3C78: ; jump table
b _027F3CA0 ; case 0
b _027F3D0C ; case 1
b _027F3E98 ; case 2
b _027F3D70 ; case 3
b _027F3DDC ; case 4
b _027F3DBC ; case 5
b _027F3E98 ; case 6
_027F3C94:
cmp r8, #0xdd
beq _027F3DFC
b _027F3E7C
_027F3CA0:
cmp r7, #0x20
bhi _027F3E98
ldrh r1, [sb, #0xc]
sub r0, r5, #2
orr r1, r1, #1
strh r1, [sb, #0xc]
str r0, [sb, #0x1c]
cmp r7, #0
bne _027F3CDC
ldrh r0, [sb, #0xc]
tst r0, #0x800
ldrneh r0, [sb, #0xa]
orrne r0, r0, #1
strneh r0, [sb, #0xa]
bne _027F3E98
_027F3CDC:
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_027EA3A4
cmp r0, #0
ldrneh r0, [sb, #0xa]
orrne r0, r0, #1
strneh r0, [sb, #0xa]
b _027F3E98
_027F3D0C:
cmp r7, #1
blo _027F3E98
ldrh r1, [sb, #0xc]
sub r0, r5, #2
orr r1, r1, #4
strh r1, [sb, #0xc]
add r1, sb, #0x14
bl sub_027EA4C4
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 _027F3E98
_027F3D70:
cmp r7, #1
blo _027F3E98
ldrh r1, [sb, #0xc]
mov r0, r5
orr r1, r1, #2
strh r1, [sb, #0xc]
bl sub_027EAD50
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 _027F3E98
_027F3DBC:
cmp r7, #3
blo _027F3E98
ldrh r1, [sb, #0xc]
sub r0, r5, #2
orr r1, r1, #0x100
strh r1, [sb, #0xc]
str r0, [sb, #0x24]
b _027F3E98
_027F3DDC:
cmp r7, #6
blo _027F3E98
ldrh r1, [sb, #0xc]
sub r0, r5, #2
orr r1, r1, #0x200
strh r1, [sb, #0xc]
str r0, [sb, #0x20]
b _027F3E98
_027F3DFC:
cmp r7, #8
blo _027F3E44
mov r0, r5
bl sub_027EAD50
cmp r0, #0
bne _027F3E44
add r0, r5, #1
bl sub_027EAD50
cmp r0, #9
bne _027F3E44
add r0, r5, #2
bl sub_027EAD50
cmp r0, #0xbf
bne _027F3E44
add r0, r5, #3
bl sub_027EAD50
cmp r0, #0
beq _027F3E64
_027F3E44:
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 _027F3E98
_027F3E64:
ldrh r1, [sb, #0xc]
sub r0, r5, #2
orr r1, r1, #0x400
strh r1, [sb, #0xc]
str r0, [sb, #0x28]
b _027F3E98
_027F3E7C:
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]
_027F3E98:
add r0, r7, #2
add r5, r5, r7
sub r6, r6, r0
_027F3EA4:
cmp r6, #0
bgt _027F3C50
ldrh r0, [sb, #0xc]
tst r0, #8
beq _027F3EDC
ldrh r0, [r4, #0x64]
tst r0, #1
bne _027F3ED0
ldrh r0, [sb, #4]
tst r0, #0x8000
beq _027F3EDC
_027F3ED0:
ldrh r0, [sb, #0xa]
orr r0, r0, #8
strh r0, [sb, #0xa]
_027F3EDC:
ldrh r0, [sb, #0xc]
tst r0, #0x30
beq _027F3F28
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]
_027F3F28:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr
.align 2, 0
_027F3F30: .word 0x0380FFF4
arm_func_end sub_027F3C10
arm_func_start sub_027F3F34
sub_027F3F34: ; 0x027F3F34
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2c
ldr r0, _027F45DC ; =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 _027F45D0
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_027EB9A8
mov r7, r0
strh r7, [r6, #0x12]
cmp r7, #0xff
bne _027F4024
mov r0, #0
strh r0, [r6, #0x12]
cmp r5, #1
bne _027F45AC
cmp r8, #0
bne _027F45AC
cmp sb, #0
beq _027F4018
cmp sb, #4
beq _027F400C
cmp sb, #0xb
bne _027F45AC
add r0, r6, #0x10
bl sub_027F35C0
b _027F45AC
_027F400C:
add r0, r6, #0x10
bl sub_027F313C
b _027F45AC
_027F4018:
add r0, r6, #0x10
bl sub_027F2F6C
b _027F45AC
_027F4024:
bl sub_027EBE8C
ldrh r1, [r6, #0x22]
mov r0, r7, lsl #0x10
and r1, r1, #0xff
mov r0, r0, lsr #0x10
bl sub_027EBD2C
cmp r8, #0
bne _027F4070
ldrh fp, [r6, #0x3a]
mov r0, r7
bl sub_027EC080
cmp fp, r0
ldreq r0, [r4, #0x578]
addeq r0, r0, #1
streq r0, [r4, #0x578]
beq _027F45AC
mov r0, r7
mov r1, fp
bl sub_027EBE4C
_027F4070:
cmp r5, #1
beq _027F4088
cmp r5, #2
cmpne r5, #3
beq _027F4328
b _027F45AC
_027F4088:
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_027EBD4C
cmp r8, #0
bne _027F42C4
cmp sb, #0xc
addls pc, pc, sb, lsl #2
b _027F45AC
_027F40B4: ; jump table
b _027F40F4 ; case 0
b _027F45AC ; case 1
b _027F4100 ; case 2
b _027F45AC ; case 3
b _027F4284 ; case 4
b _027F4290 ; case 5
b _027F45AC ; case 6
b _027F45AC ; case 7
b _027F40E8 ; case 8
b _027F45AC ; case 9
b _027F42A0 ; case 10
b _027F42AC ; case 11
b _027F42B8 ; case 12
_027F40E8:
add r0, r6, #0x10
bl sub_027F2840
b _027F45AC
_027F40F4:
add r0, r6, #0x10
bl sub_027F2F6C
b _027F45AC
_027F4100:
ldr r0, _027F45DC ; =0x0380FFF4
ldrh r4, [r6, #0x16]
ldr r5, [r0]
cmp r4, #0xa
bls _027F45AC
add r0, r5, #0x300
ldrh r0, [r0, #0x50]
cmp r0, #1
bne _027F45AC
add r0, r6, #0x2e
mov r1, #0x30
bl sub_027F1FF4
cmp r0, #0
bne _027F45AC
ldrh r7, [r6, #0x12]
mov r0, r7
bl sub_027EBFE0
cmp r0, #0x30
bhs _027F4180
add r0, r6, #0x2e
mov r1, #0xc0
bl sub_027F1FF4
cmp r0, #0
bne _027F45AC
add r0, r6, #0x2e
mov r1, #6
mov r2, #1
bl sub_027F1EBC
cmp r0, #0
beq _027F45AC
bl sub_027F107C
b _027F45AC
_027F4180:
mov r0, r7
bl sub_027EBFE0
cmp r0, #0x40
mov r0, r7
bne _027F41AC
mov r1, #0x30
bl sub_027EBC44
add r0, r6, #0x2e
mov r1, #1
bl sub_027EDE44
b _027F41B8
_027F41AC:
bl sub_027EC0CC
cmp r0, #0
bne _027F45AC
_027F41B8:
add r1, sp, #0
mov r0, #0
mov r2, #0x2c
bl sub_037FDFD0
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_027F3C10
ldrh r1, [r6, #0x3c]
ldr r0, _027F45E0 ; =0x0000FFC2
tst r1, r0
bne _027F422C
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 _027F422C
cmp r2, #0
beq _027F4234
ldrh r0, [r6, #0x3c]
mov r0, r0, lsl #0x1b
movs r0, r0, lsr #0x1f
bne _027F4234
_027F422C:
mov r1, #0xa
b _027F4268
_027F4234:
mov r0, r7
bl sub_027EBE0C
ldrh r0, [sp, #0xa]
tst r0, #1
moveq r1, #1
beq _027F4268
tst r0, #4
moveq r1, #0x12
beq _027F4268
ldrh r1, [sp, #0x16]
mov r0, r7
bl sub_027EBE2C
mov r1, #0
_027F4268:
ldr r2, [sp, #0x1c]
mov r0, r7
bl sub_027F19F0
cmp r0, #0
beq _027F45AC
bl sub_027F107C
b _027F45AC
_027F4284:
add r0, r6, #0x10
bl sub_027F313C
b _027F45AC
_027F4290:
add r0, r6, #0x10
mov r1, #0
bl sub_027F31F0
b _027F45AC
_027F42A0:
add r0, r6, #0x10
bl sub_027F2E8C
b _027F45AC
_027F42AC:
add r0, r6, #0x10
bl sub_027F35C0
b _027F45AC
_027F42B8:
add r0, r6, #0x10
bl sub_027F3B60
b _027F45AC
_027F42C4:
cmp r8, #1
bne _027F45AC
cmp sb, #0xa
bne _027F45AC
ldr r0, _027F45DC ; =0x0380FFF4
ldrh r4, [r6, #0x12]
ldr r1, [r0]
mov r0, r4
add r5, r1, #0x17c
bl sub_027EBFE0
cmp r0, #0x40
bne _027F45AC
mov r0, r4
bl sub_027EBDE8
ldrh r0, [r5, #0x2c]
cmp r0, #0
beq _027F4310
mov r0, #1
bl sub_027EFEF4
_027F4310:
ldrh r0, [r5, #0x20]
cmp r0, #0
beq _027F45AC
mov r0, #0
bl sub_027EFEF4
b _027F45AC
_027F4328:
cmp r8, #0
bne _027F45AC
cmp sb, #0xc
addls pc, pc, sb, lsl #2
b _027F45AC
_027F433C: ; jump table
b _027F45AC ; case 0
b _027F437C ; case 1
b _027F45AC ; case 2
b _027F4478 ; case 3
b _027F45AC ; case 4
b _027F457C ; case 5
b _027F45AC ; case 6
b _027F45AC ; case 7
b _027F4370 ; case 8
b _027F45AC ; case 9
b _027F458C ; case 10
b _027F4598 ; case 11
b _027F45A4 ; case 12
_027F4370:
add r0, r6, #0x10
bl sub_027F2840
b _027F45AC
_027F437C:
ldr r0, _027F45DC ; =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 _027F45AC
ldrh r0, [r4]
cmp r0, #0x51
bne _027F45AC
ldr r0, [r4, #0x18]
add r1, r6, #0x2e
add r0, r0, #0x10
bl sub_027EA474
cmp r0, #0
beq _027F45AC
bl sub_027EABE0
ldrh r0, [r6, #0x3e]
cmp r0, #0
bne _027F4418
ldrh r1, [r6, #0x40]
ldr r0, _027F45E4 ; =0x00000FFF
and r0, r1, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_027EA000
ldrh r0, [r5, #0x6a]
bl sub_027F1F50
add r0, r5, #0x82
add r1, r6, #0x2e
bl sub_027EA0E0
add r0, r6, #0x2e
bl sub_027EB900
strh r0, [r5, #0x88]
ldrh r0, [r5, #0x88]
mov r1, #0x40
bl sub_027EBC44
_027F4418:
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 _027F4454
mov r2, #0
strh r2, [r0, #4]
ldr r1, [r4, #0x1c]
mov r0, #0x40
strh r2, [r1, #6]
bl sub_037F9238
_027F4454:
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_037F8598
b _027F45AC
_027F4478:
ldr r0, _027F45DC ; =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 _027F45AC
ldrh r0, [r4]
cmp r0, #0x61
bne _027F45AC
ldr r0, [r4, #0x18]
add r1, r6, #0x2e
add r0, r0, #0x10
bl sub_027EA474
cmp r0, #0
beq _027F45AC
bl sub_027EABE0
ldrh r0, [r6, #0x3e]
cmp r0, #0
bne _027F451C
ldrh r1, [r6, #0x40]
ldr r0, _027F45E4 ; =0x00000FFF
and r0, r1, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_027EA000
ldrh r0, [r5, #0x6a]
bl sub_027F1F50
add r0, r5, #0x82
add r1, r6, #0x2e
bl sub_027EA0E0
add r0, r6, #0x2e
bl sub_027EB900
strh r0, [r5, #0x88]
ldrh r0, [r5, #0x88]
mov r1, #0x40
bl sub_027EBC44
mov r0, #0x40
bl sub_037F9238
_027F451C:
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 _027F4558
mov r2, #0
strh r2, [r0, #4]
ldr r1, [r4, #0x1c]
mov r0, #0x40
strh r2, [r1, #6]
bl sub_037F9238
_027F4558:
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_037F8598
b _027F45AC
_027F457C:
add r0, r6, #0x10
mov r1, #0
bl sub_027F31F0
b _027F45AC
_027F458C:
add r0, r6, #0x10
bl sub_027F2E8C
b _027F45AC
_027F4598:
add r0, r6, #0x10
bl sub_027F35C0
b _027F45AC
_027F45A4:
add r0, r6, #0x10
bl sub_027F3B60
_027F45AC:
mov r1, r6
add r0, sl, #0x60
bl sub_037F8908
ldrh r0, [sl, #0x68]
cmp r0, #0
beq _027F45D0
mov r0, #1
mov r1, #7
bl sub_037F8598
_027F45D0:
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027F45DC: .word 0x0380FFF4
_027F45E0: .word 0x0000FFC2
_027F45E4: .word 0x00000FFF
arm_func_end sub_027F3F34
arm_func_start sub_027F45E8
sub_027F45E8: ; 0x027F45E8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x18
ldr r0, _027F4B00 ; =0x0380FFF4
mvn r1, #0
ldr r2, [r0]
add r0, r2, #0x17c
ldr r5, [r0, #0x6c]
str r0, [sp, #4]
cmp r5, r1
beq _027F4AF4
add r0, r2, #0x300
ldrh r0, [r0, #0x4c]
cmp r0, #0x40
bne _027F4AC8
ldrh r1, [r5, #0x20]
ldr r0, _027F4B04 ; =0x000005FC
cmp r1, r0
bhi _027F4AC8
ldrh r4, [r5, #0x24]
add r0, sp, #8
tst r4, #0x100
beq _027F4660
add r1, r5, #0x34
bl sub_027EA0E0
tst r4, #0x200
bne _027F4AC8
add r0, sp, #0xe
add r1, r5, #0x2e
bl sub_027EA0E0
b _027F4688
_027F4660:
add r1, r5, #0x28
bl sub_027EA0E0
tst r4, #0x200
add r0, sp, #0xe
beq _027F4680
add r1, r5, #0x34
bl sub_027EA0E0
b _027F4688
_027F4680:
add r1, r5, #0x2e
bl sub_027EA0E0
_027F4688:
ldrh r0, [r5, #0x3a]
tst r4, #0x400
strh r0, [sp, #0x14]
beq _027F48C0
ldrh r0, [r5, #0x3a]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1c
bne _027F48C0
ldr r0, _027F4B00 ; =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 _027F47D0
_027F46CC:
mul sb, r7, r4
ldrh r0, [r8, sb]
add sl, r8, sb
cmp r0, #0
beq _027F47C8
mov r1, fp
add r0, sl, #4
bl sub_027EA474
cmp r0, #0
beq _027F47CC
add r1, sp, #0xe
add r0, sl, #0xa
bl sub_027EA474
cmp r0, #0
beq _027F47CC
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 _027F47CC
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 _027F4AC8
tst r0, #0x80000000
bne _027F4AC8
mov r0, sl
ldr r4, [r0, #0x14]
ldrh r0, [r5, #0x20]
ldrh r3, [r4, #0x20]
sub r0, r0, r3
subs r6, r0, #0x18
beq _027F4AC8
tst r6, #0x80000000
bne _027F4AC8
add r0, r5, #0x3c
add r1, r4, #0x3c
mov r2, r6
add r0, r0, r3
add r1, r1, r3
bl sub_037FDF9C
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, _027F4B00 ; =0x0380FFF4
strh r1, [sl, #0x10]
ldr r1, [r0]
ldr r0, [r1, #0x560]
add r0, r0, r7
str r0, [r1, #0x560]
b _027F4AC8
_027F47C8:
mov r6, r7
_027F47CC:
add r7, r7, #1
_027F47D0:
cmp r7, #3
blo _027F46CC
mvn r0, #0
cmp r6, r0
beq _027F4AC8
ldr r0, _027F4B00 ; =0x0380FFF4
ldr r1, _027F4B08 ; =0x00000622
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F886C
movs r4, r0
beq _027F48B4
mov r0, #0x18
mul r7, r6, r0
add r6, r8, r7
add r0, sp, #8
add r1, r6, #4
mov r2, #0x10
bl sub_037FDF9C
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_037FDF9C
ldr r0, _027F4B00 ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x30c]
bl sub_037FDE88
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, _027F4B00 ; =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_03806DD4
mov r1, r6
strh r0, [r1, #2]
b _027F4AC8
_027F48B4:
mov r0, #4
bl sub_027EB06C
b _027F4AC8
_027F48C0:
ldr r1, _027F4B00 ; =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 _027F497C
_027F48E4:
mov r0, #0x18
mul sb, r7, r0
ldrh r0, [r8, sb]
add sl, r8, sb
cmp r0, #0
beq _027F4978
add r1, sp, #8
add r0, sl, #4
bl sub_027EA474
cmp r0, #0
beq _027F4978
add r1, sp, #0xe
add r0, sl, #0xa
bl sub_027EA474
cmp r0, #0
beq _027F4978
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 _027F4978
mov r1, sl
ldrh r0, [r1, #0x10]
sub fp, r0, r2
tst fp, #0x80000000
bne _027F4AC8
ldrh r0, [r1, #2]
ldrh r1, [r5, #0x20]
mul r0, fp, r0
str r0, [sp]
subs r6, r1, r0
beq _027F4AC8
tst r6, #0x80000000
beq _027F4984
b _027F4AC8
_027F4978:
add r7, r7, #1
_027F497C:
cmp r7, #3
blo _027F48E4
_027F4984:
cmp r7, #3
beq _027F4AC8
mov r0, #0x18
mul sb, r7, r0
add r0, r8, sb
ldr r1, [r0, #0x14]
ldr r0, _027F4B0C ; =0x000005E4
add r7, r1, #0x10
ldrh r1, [r7, #0x10]
add sl, r1, r6
cmp sl, r0
bls _027F49CC
add r0, r4, #0x188
sub r1, r7, #0x10
bl sub_037F8908
mov r0, #0
strh r0, [r8, sb]
b _027F4AC8
_027F49CC:
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_037FDF9C
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, _027F4B00 ; =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 _027F4AC8
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 _027F4AA0
cmp r0, #8
add r0, r4, #0x188
bne _027F4AC0
add r1, r4, #0x1c4
sub r2, r7, #0x10
bl sub_037F8988
mov r0, #2
mov r1, #6
bl sub_037F8598
b _027F4AC8
_027F4AA0:
add r0, r4, #0x188
add r1, r4, #0x1dc
sub r2, r7, #0x10
bl sub_037F8988
mov r0, #1
mov r1, #7
bl sub_037F8598
b _027F4AC8
_027F4AC0:
sub r1, r7, #0x10
bl sub_037F8908
_027F4AC8:
ldr r0, [sp, #4]
mov r1, r5
add r0, r0, #0x6c
bl sub_037F8908
ldr r0, [sp, #4]
ldrh r0, [r0, #0x74]
cmp r0, #0
beq _027F4AF4
mov r0, #2
mov r1, #9
bl sub_037F8598
_027F4AF4:
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027F4B00: .word 0x0380FFF4
_027F4B04: .word 0x000005FC
_027F4B08: .word 0x00000622
_027F4B0C: .word 0x000005E4
arm_func_end sub_027F45E8
arm_func_start sub_027F4B10
sub_027F4B10: ; 0x027F4B10
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _027F4B78 ; =0x0380FFF4
mov r6, #0
ldr r0, [r4]
mov r7, #0x18
add r0, r0, #0xe4
add r5, r0, #0x400
_027F4B2C:
mul r1, r6, r7
ldrh r0, [r5, r1]
add r1, r5, r1
cmp r0, #0
beq _027F4B64
sub r0, r0, #1
strh r0, [r1]
ldrh r0, [r1]
cmp r0, #0
bne _027F4B64
ldr r0, [r4]
ldr r1, [r1, #0x14]
add r0, r0, #0x188
bl sub_037F8908
_027F4B64:
add r6, r6, #1
cmp r6, #3
blo _027F4B2C
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027F4B78: .word 0x0380FFF4
arm_func_end sub_027F4B10
arm_func_start sub_027F4B7C
sub_027F4B7C: ; 0x027F4B7C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r3, _027F4CBC ; =0x0380FFF4
mov sb, r2
ldr r2, [r3]
mov fp, r0
add r0, sb, #1
mov sl, r1
add r4, r2, #0x23c
bl sub_027EAD50
cmp r0, #0x20
bhi _027F4CB4
mov r6, #4
mov r7, r6
mov r8, #0x400
mov r5, #0
b _027F4BFC
_027F4BBC:
ldrh r0, [r4]
cmp r0, #0
beq _027F4BF0
add r0, r4, #6
add r1, sl, #0x24
bl sub_027EA474
cmp r0, #0
bne _027F4C1C
ldrh r0, [r4, #0x30]
cmp r0, r8
movlo r8, r0
movlo r7, r5
b _027F4BF4
_027F4BF0:
mov r6, r5
_027F4BF4:
add r5, r5, #1
add r4, r4, #0x32
_027F4BFC:
cmp r5, #4
blo _027F4BBC
cmp r6, #4
movne r5, r6
bne _027F4C1C
cmp r7, #4
movne r5, r7
beq _027F4CB4
_027F4C1C:
ldr r0, _027F4CBC ; =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_037FDF74
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_027EA0E0
add r0, sb, #1
bl sub_027EAD50
strh r0, [r6, #0xc]
mov r7, #0
add r5, sb, #2
add r4, r6, #0xe
b _027F4C98
_027F4C80:
add r0, r5, r7
bl sub_027EAD50
mov r1, r0
add r0, r4, r7
bl sub_027EAD24
add r7, r7, #1
_027F4C98:
ldrh r0, [r6, #0xc]
cmp r7, r0
blo _027F4C80
ldrh r0, [sl, #0x34]
strh r0, [r6, #0x2e]
ldrh r0, [sl, #0x36]
strh r0, [r6, #4]
_027F4CB4:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
bx lr
.align 2, 0
_027F4CBC: .word 0x0380FFF4
arm_func_end sub_027F4B7C
arm_func_start sub_027F4CC0
sub_027F4CC0: ; 0x027F4CC0
ldr r1, _027F4CDC ; =0x0380FFF4
ldr ip, _027F4CE0 ; =sub_037FDF74
ldr r1, [r1]
mov r0, #0
mov r2, #0xc8
add r1, r1, #0x23c
bx ip
.align 2, 0
_027F4CDC: .word 0x0380FFF4
_027F4CE0: .word sub_037FDF74
arm_func_end sub_027F4CC0
arm_func_start sub_027F4CE4
sub_027F4CE4: ; 0x027F4CE4
ldr r0, _027F4D28 ; =0x0380FFF4
mov r3, #0
ldr r0, [r0]
add r2, r0, #0x23c
mov r0, r3
_027F4CF8:
ldrh r1, [r2, #0x30]
cmp r1, #0
beq _027F4D18
sub r1, r1, #1
strh r1, [r2, #0x30]
ldrh r1, [r2, #0x30]
cmp r1, #0
streqh r0, [r2]
_027F4D18:
add r3, r3, #1
cmp r3, #4
blo _027F4CF8
bx lr
.align 2, 0
_027F4D28: .word 0x0380FFF4
arm_func_end sub_027F4CE4
arm_func_start sub_027F4D2C
sub_027F4D2C: ; 0x027F4D2C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _027F4DC8 ; =0x0380FFF4
mov r4, r0
ldr r0, [r1]
ldr r1, [r0, #0x318]
ldrh r6, [r1, #2]
cmp r6, #0xa4
blo _027F4D58
ldr r0, _027F4DCC ; =0x000001D6
cmp r6, r0
bls _027F4D60
_027F4D58:
mov r0, #2
b _027F4DC0
_027F4D60:
add r7, r1, #2
mov r5, #0
b _027F4D90
_027F4D6C:
mov r0, r7
bl sub_027EAD50
mov r1, r5, lsl #0x10
and r0, r0, #0xff
mov r1, r1, lsr #0x10
add r7, r7, #1
bl sub_027EADE8
mov r5, r0
sub r6, r6, #1
_027F4D90:
cmp r6, #0
bne _027F4D6C
ldr r0, _027F4DC8 ; =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
_027F4DC0:
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
.align 2, 0
_027F4DC8: .word 0x0380FFF4
_027F4DCC: .word 0x000001D6
arm_func_end sub_027F4D2C
arm_func_start sub_027F4DD0
sub_027F4DD0: ; 0x027F4DD0
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
add r4, sp, #0
_027F4DDC:
mov r0, r4
bl sub_027F5548
ldr r0, [sp]
tst r0, #0x20
beq _027F4DF8
bl sub_027F5C84
b _027F4DDC
_027F4DF8:
ldr r0, [sp]
tst r0, #1
bne _027F4DDC
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_027F4DD0
arm_func_start sub_027F4E10
sub_027F4E10: ; 0x027F4E10
stmdb sp!, {r4, r5, r6, lr}
ldr r3, _027F4E6C ; =0x0380FFF4
mov r6, r1
ldr r1, [r3]
mov r5, r2
ldr r1, [r1, #0x318]
cmp r1, #0
beq _027F4E64
add r0, r1, r0
sub r4, r0, #0x2a
b _027F4E5C
_027F4E3C:
mov r0, r4
bl sub_027EAD50
mov r1, r0
mov r0, r5
add r4, r4, #1
bl sub_027EAD24
add r5, r5, #1
sub r6, r6, #1
_027F4E5C:
cmp r6, #0
bne _027F4E3C
_027F4E64:
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027F4E6C: .word 0x0380FFF4
arm_func_end sub_027F4E10
arm_func_start sub_027F4E70
sub_027F4E70: ; 0x027F4E70
stmdb sp!, {r4, r5, r6, lr}
ldr r3, _027F4EBC ; =0x0380FFF4
mov r6, r0
ldr r0, [r3]
mov r5, r1
ldr r0, [r0, #0x314]
mov r4, r2
bl sub_0380398C
bl sub_027F4DD0
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_027F55B8
ldr r0, _027F4EBC ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x314]
bl sub_038039E8
ldmia sp!, {r4, r5, r6, lr}
bx lr
.align 2, 0
_027F4EBC: .word 0x0380FFF4
arm_func_end sub_027F4E70
arm_func_start sub_027F4EC0
sub_027F4EC0: ; 0x027F4EC0
stmdb sp!, {r3, lr}
ldr r0, _027F4FA4 ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x314]
bl sub_0380398C
bl sub_027F4DD0
mov r3, #0
add r2, sp, #0
mov r0, #0x2c
mov r1, #2
str r3, [sp]
bl sub_027F55B8
ldr r0, _027F4FA4 ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x314]
bl sub_038039E8
ldr r1, [sp]
cmp r1, #0xa4
blo _027F4F18
ldr r0, _027F4FA8 ; =0x000001D6
cmp r1, r0
bls _027F4F20
_027F4F18:
mov r0, #0
b _027F4F9C
_027F4F20:
ldr r0, _027F4FA4 ; =0x0380FFF4
add r1, r1, #2
str r1, [sp]
ldr r0, [r0]
add r0, r0, #0x188
bl sub_037F886C
ldr r2, _027F4FA4 ; =0x0380FFF4
ldr r1, [r2]
str r0, [r1, #0x318]
ldr r1, [r2]
ldr r0, [r1, #0x318]
cmp r0, #0
moveq r0, #0
beq _027F4F9C
add r0, r0, #0xc
str r0, [r1, #0x318]
ldr r0, [r2]
ldr r0, [r0, #0x314]
bl sub_0380398C
bl sub_027F4DD0
ldr r0, _027F4FA4 ; =0x0380FFF4
ldr r1, [sp]
ldr r2, [r0]
mov r0, #0x2a
ldr r2, [r2, #0x318]
bl sub_027F55B8
ldr r0, _027F4FA4 ; =0x0380FFF4
ldr r0, [r0]
ldr r0, [r0, #0x314]
bl sub_038039E8
mov r0, #1
_027F4F9C:
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027F4FA4: .word 0x0380FFF4
_027F4FA8: .word 0x000001D6
arm_func_end sub_027F4EC0
arm_func_start sub_027F4FAC
sub_027F4FAC: ; 0x027F4FAC
ldr r0, _027F4FD0 ; =0x027F8E08
mov r3, #0
mov r2, r3
_027F4FB8:
mov r1, r3, lsl #1
add r3, r3, #1
strh r2, [r0, r1]
cmp r3, #0x10
blt _027F4FB8
bx lr
.align 2, 0
_027F4FD0: .word 0x027F8E08
arm_func_end sub_027F4FAC
arm_func_start sub_027F4FD4
sub_027F4FD4: ; 0x027F4FD4
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
tst r0, #0x2000000
beq _027F5004
ldr r2, _027F5174 ; =0x027F8E08
mov r5, #0
mov lr, r5
_027F4FF0:
mov r4, r5, lsl #1
add r5, r5, #1
strh lr, [r2, r4]
cmp r5, #0x10
blt _027F4FF0
_027F5004:
ldr r2, _027F5174 ; =0x027F8E08
and r4, r0, #0xf0000
mov r4, r4, lsr #0x10
mov r4, r4, lsl #1
strh r0, [r2, r4]
tst r0, #0x1000000
beq _027F5168
ldr lr, _027F5178 ; =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 _027F513C
_027F5044: ; jump table
b _027F5070 ; case 0
b _027F50A8 ; case 1
b _027F50A8 ; case 2
b _027F50F0 ; case 3
b _027F50F0 ; case 4
b _027F5130 ; case 5
b _027F5130 ; case 6
b _027F513C ; case 7
b _027F513C ; case 8
b _027F513C ; case 9
b _027F5070 ; case 10
_027F5070:
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 _027F5098
cmp ip, #0x2800000
blo _027F513C
_027F5098:
mov r0, r4
mov r1, #2
bl sub_03803A48
b _027F5168
_027F50A8:
ldrh r2, [lr, #8]
ldrh r1, [lr, #0xa]
orr ip, r1, r2, lsl #16
cmp ip, #0x2000000
blo _027F50C4
cmp ip, #0x2800000
blo _027F50D4
_027F50C4:
mov r0, r4
mov r1, #2
bl sub_03803A48
b _027F5168
_027F50D4:
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 _027F513C
_027F50F0:
ldrh r2, [lr, #6]
ldrh r1, [lr, #8]
orr ip, r1, r2, lsl #16
cmp ip, #0x2000000
blo _027F510C
cmp ip, #0x2800000
blo _027F511C
_027F510C:
mov r0, r4
mov r1, #2
bl sub_03803A48
b _027F5168
_027F511C:
ldrh r2, [lr, #2]
mov r0, r0, lsl #0x18
ldrh r1, [lr, #4]
orr r3, r2, r0, lsr #8
b _027F513C
_027F5130:
ldrh r2, [lr, #2]
mov r0, r0, lsl #0x18
orr r3, r2, r0, lsr #8
_027F513C:
str r1, [sp]
mov r1, r4
mov r0, #1
mov r2, #3
str ip, [sp, #4]
bl sub_03803B7C
cmp r0, #0
bne _027F5168
mov r0, r4
mov r1, #4
bl sub_03803A48
_027F5168:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F5174: .word 0x027F8E08
_027F5178: .word 0x027F8E08
arm_func_end sub_027F4FD4
arm_func_start sub_027F517C
sub_027F517C: ; 0x027F517C
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
bl sub_037FDD00
mov r5, r0
mov r0, #1
bl sub_03803B0C
cmp r0, #0
bne _027F51BC
mov r0, r5
bl sub_037FDD14
ldr r0, [r4, #4]
mov r1, #4
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03803A48
b _027F5448
_027F51BC:
mov r0, #1
bl sub_03803B28
mov r0, r5
bl sub_037FDD14
ldr r0, [r4, #4]
sub r0, r0, #0x20
cmp r0, #0xd
addls pc, pc, r0, lsl #2
b _027F540C
_027F51E0: ; jump table
b _027F5218 ; case 0
b _027F5220 ; case 1
b _027F5228 ; case 2
b _027F5234 ; case 3
b _027F5274 ; case 4
b _027F52B4 ; case 5
b _027F52FC ; case 6
b _027F5344 ; case 7
b _027F537C ; case 8
b _027F53B4 ; case 9
b _027F53BC ; case 10
b _027F53C4 ; case 11
b _027F53F8 ; case 12
b _027F5404 ; case 13
_027F5218:
bl sub_027F54A4
b _027F542C
_027F5220:
bl sub_027F5508
b _027F542C
_027F5228:
ldr r0, [r4, #0x10]
bl sub_027F5548
b _027F542C
_027F5234:
bl sub_027F5450
cmp r0, #0
bne _027F5260
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03803A48
mov r0, #1
bl sub_03803B40
b _027F5448
_027F5260:
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
bl sub_027F55B8
b _027F542C
_027F5274:
bl sub_027F5450
cmp r0, #0
bne _027F52A0
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03803A48
mov r0, #1
bl sub_03803B40
b _027F5448
_027F52A0:
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
bl sub_027F56E0
b _027F542C
_027F52B4:
bl sub_027F5474
cmp r0, #0
bne _027F52E0
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03803A48
mov r0, #1
bl sub_03803B40
b _027F5448
_027F52E0:
ldr r1, [r4, #0xc]
ldr r0, [r4, #8]
mov r1, r1, lsl #0x10
ldr r2, [r4, #0x10]
mov r1, r1, lsr #0x10
bl sub_027F5800
b _027F542C
_027F52FC:
bl sub_027F5474
cmp r0, #0
bne _027F5328
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03803A48
mov r0, #1
bl sub_03803B40
b _027F5448
_027F5328:
ldr r1, [r4, #0xc]
ldr r0, [r4, #8]
mov r1, r1, lsl #0x10
ldr r2, [r4, #0x10]
mov r1, r1, lsr #0x10
bl sub_027F590C
b _027F542C
_027F5344:
bl sub_027F5474
cmp r0, #0
bne _027F5370
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03803A48
mov r0, #1
bl sub_03803B40
b _027F5448
_027F5370:
ldr r0, [r4, #8]
bl sub_027F5A18
b _027F542C
_027F537C:
bl sub_027F5474
cmp r0, #0
bne _027F53A8
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03803A48
mov r0, #1
bl sub_03803B40
b _027F5448
_027F53A8:
ldr r0, [r4, #8]
bl sub_027F5AA0
b _027F542C
_027F53B4:
bl sub_027F5B28
b _027F542C
_027F53BC:
bl sub_027F5B68
b _027F542C
_027F53C4:
bl sub_027F5474
cmp r0, #0
bne _027F53F0
ldr r0, [r4, #4]
mov r1, #3
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03803A48
mov r0, #1
bl sub_03803B40
b _027F5448
_027F53F0:
bl sub_027F5BA8
b _027F542C
_027F53F8:
ldr r0, [r4, #0x10]
bl sub_027F5BE8
b _027F542C
_027F5404:
bl sub_027F5C84
b _027F542C
_027F540C:
mov r0, #1
bl sub_03803B40
ldr r0, [r4, #4]
mov r1, #1
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03803A48
b _027F5448
_027F542C:
ldr r0, [r4, #4]
mov r1, #0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_03803A48
mov r0, #1
bl sub_03803B40
_027F5448:
ldmia sp!, {r3, r4, r5, lr}
bx lr
arm_func_end sub_027F517C
arm_func_start sub_027F5450
sub_027F5450: ; 0x027F5450
stmdb sp!, {r3, lr}
add r0, sp, #0
bl sub_027F5548
ldrh r0, [sp]
tst r0, #1
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027F5450
arm_func_start sub_027F5474
sub_027F5474: ; 0x027F5474
stmdb sp!, {r3, lr}
add r0, sp, #0
bl sub_027F5548
ldrh r0, [sp]
tst r0, #1
movne r0, #0
bne _027F549C
tst r0, #2
movne r0, #1
moveq r0, #0
_027F549C:
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027F5474
arm_func_start sub_027F54A4
sub_027F54A4: ; 0x027F54A4
ldr r2, _027F54DC ; =0x040001C0
_027F54A8:
ldrh r0, [r2]
tst r0, #0x80
bne _027F54A8
ldr r0, _027F54E0 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #6
strh r1, [r0]
sub r1, r0, #2
_027F54CC:
ldrh r0, [r1]
tst r0, #0x80
bne _027F54CC
bx lr
.align 2, 0
_027F54DC: .word 0x040001C0
_027F54E0: .word 0x040001C2
arm_func_end sub_027F54A4
arm_func_start sub_027F54E4
sub_027F54E4: ; 0x027F54E4
ldr r1, _027F5504 ; =0x040001C2
and r0, r0, #0xff
strh r0, [r1]
sub r1, r1, #2
_027F54F4:
ldrh r0, [r1]
tst r0, #0x80
bne _027F54F4
bx lr
.align 2, 0
_027F5504: .word 0x040001C2
arm_func_end sub_027F54E4
arm_func_start sub_027F5508
sub_027F5508: ; 0x027F5508
ldr r2, _027F5540 ; =0x040001C0
_027F550C:
ldrh r0, [r2]
tst r0, #0x80
bne _027F550C
ldr r0, _027F5544 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #4
strh r1, [r0]
sub r1, r0, #2
_027F5530:
ldrh r0, [r1]
tst r0, #0x80
bne _027F5530
bx lr
.align 2, 0
_027F5540: .word 0x040001C0
_027F5544: .word 0x040001C2
arm_func_end sub_027F5508
arm_func_start sub_027F5548
sub_027F5548: ; 0x027F5548
ldr r3, _027F55B0 ; =0x040001C0
_027F554C:
ldrh r1, [r3]
tst r1, #0x80
bne _027F554C
ldr r1, _027F55B4 ; =0x040001C2
mov r2, #0x8900
strh r2, [r3]
mov r2, #5
strh r2, [r1]
sub r3, r1, #2
_027F5570:
ldrh r1, [r3]
tst r1, #0x80
bne _027F5570
ldr r1, _027F55B4 ; =0x040001C2
mov r2, #0x8100
strh r2, [r3]
mov r2, #0
strh r2, [r1]
sub r2, r1, #2
_027F5594:
ldrh r1, [r2]
tst r1, #0x80
bne _027F5594
ldr r1, _027F55B4 ; =0x040001C2
ldrh r1, [r1]
strb r1, [r0]
bx lr
.align 2, 0
_027F55B0: .word 0x040001C0
_027F55B4: .word 0x040001C2
arm_func_end sub_027F5548
arm_func_start sub_027F55B8
sub_027F55B8: ; 0x027F55B8
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r2
cmp r1, #1
blo _027F56A8
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, _027F56B4 ; =0x040001C0
strh r3, [sp]
strh r0, [sp, #4]
_027F55F0:
ldrh r0, [r2]
tst r0, #0x80
bne _027F55F0
ldr r4, _027F56B8 ; =0x040001C2
mov r0, #0x8900
strh r0, [r2]
mov r0, #3
strh r0, [r4]
mov ip, #0
add r2, sp, #0
sub r3, r4, #2
_027F561C:
ldrh r0, [r3]
tst r0, #0x80
bne _027F561C
mov r0, ip, lsl #1
ldrh r0, [r2, r0]
add ip, ip, #1
and r0, r0, #0xff
strh r0, [r4]
cmp ip, #3
blt _027F561C
ldr r2, _027F56B4 ; =0x040001C0
_027F5648:
ldrh r0, [r2]
tst r0, #0x80
bne _027F5648
mov r4, #0
ldr r2, _027F56B4 ; =0x040001C0
sub r0, r1, #1
mov r3, r4
b _027F5684
_027F5668:
strh r3, [r2, #2]
_027F566C:
ldrh r1, [r2]
tst r1, #0x80
bne _027F566C
ldrh r1, [r2, #2]
strb r1, [r5, r4]
add r4, r4, #1
_027F5684:
cmp r4, r0
blo _027F5668
ldr r0, _027F56B4 ; =0x040001C0
mov r1, #0x8100
strh r1, [r0]
bl sub_027F56BC
ldr r0, _027F56B8 ; =0x040001C2
ldrh r0, [r0]
strb r0, [r5, r4]
_027F56A8:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F56B4: .word 0x040001C0
_027F56B8: .word 0x040001C2
arm_func_end sub_027F55B8
arm_func_start sub_027F56BC
sub_027F56BC: ; 0x027F56BC
ldr r0, _027F56DC ; =0x040001C2
mov r1, #0
strh r1, [r0]
sub r1, r0, #2
_027F56CC:
ldrh r0, [r1]
tst r0, #0x80
bne _027F56CC
bx lr
.align 2, 0
_027F56DC: .word 0x040001C2
arm_func_end sub_027F56BC
arm_func_start sub_027F56E0
sub_027F56E0: ; 0x027F56E0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r2
cmp r1, #1
blo _027F57EC
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, _027F57F8 ; =0x040001C0
strh r3, [sp]
strh r0, [sp, #4]
_027F5718:
ldrh r0, [r2]
tst r0, #0x80
bne _027F5718
ldr r4, _027F57FC ; =0x040001C2
mov r0, #0x8900
strh r0, [r2]
mov r0, #0xb
strh r0, [r4]
mov ip, #0
add r2, sp, #0
sub r3, r4, #2
_027F5744:
ldrh r0, [r3]
tst r0, #0x80
bne _027F5744
mov r0, ip, lsl #1
ldrh r0, [r2, r0]
add ip, ip, #1
and r0, r0, #0xff
strh r0, [r4]
cmp ip, #3
blt _027F5744
ldr r2, _027F57F8 ; =0x040001C0
_027F5770:
ldrh r0, [r2]
tst r0, #0x80
bne _027F5770
ldr r0, _027F57FC ; =0x040001C2
mov r2, #0
strh r2, [r0]
sub r2, r0, #2
_027F578C:
ldrh r0, [r2]
tst r0, #0x80
bne _027F578C
mov r4, #0
ldr r2, _027F57F8 ; =0x040001C0
sub r0, r1, #1
mov r3, r4
b _027F57C8
_027F57AC:
strh r3, [r2, #2]
_027F57B0:
ldrh r1, [r2]
tst r1, #0x80
bne _027F57B0
ldrh r1, [r2, #2]
strb r1, [r5, r4]
add r4, r4, #1
_027F57C8:
cmp r4, r0
blo _027F57AC
ldr r0, _027F57F8 ; =0x040001C0
mov r1, #0x8100
strh r1, [r0]
bl sub_027F56BC
ldr r0, _027F57FC ; =0x040001C2
ldrh r0, [r0]
strb r0, [r5, r4]
_027F57EC:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F57F8: .word 0x040001C0
_027F57FC: .word 0x040001C2
arm_func_end sub_027F56E0
arm_func_start sub_027F5800
sub_027F5800: ; 0x027F5800
stmdb sp!, {r4, lr}
sub sp, sp, #8
cmp r1, #1
blo _027F58F8
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, _027F5904 ; =0x040001C0
strh ip, [sp]
strh r0, [sp, #4]
movhi r1, r1, lsr #0x10
_027F5854:
ldrh r0, [r3]
tst r0, #0x80
bne _027F5854
ldr lr, _027F5908 ; =0x040001C2
mov r0, #0x8900
strh r0, [r3]
mov r0, #0xa
strh r0, [lr]
mov r4, #0
add r3, sp, #0
sub ip, lr, #2
_027F5880:
ldrh r0, [ip]
tst r0, #0x80
bne _027F5880
mov r0, r4, lsl #1
ldrh r0, [r3, r0]
add r4, r4, #1
and r0, r0, #0xff
strh r0, [lr]
cmp r4, #3
blt _027F5880
sub r3, r1, #1
ldr r1, _027F5904 ; =0x040001C0
mov r4, #0
b _027F58D0
_027F58B8:
ldrh r0, [r1]
tst r0, #0x80
bne _027F58B8
ldrb r0, [r2, r4]
add r4, r4, #1
strh r0, [r1, #2]
_027F58D0:
cmp r4, r3
blt _027F58B8
ldr r1, _027F5904 ; =0x040001C0
_027F58DC:
ldrh r0, [r1]
tst r0, #0x80
bne _027F58DC
mov r0, #0x8100
strh r0, [r1]
ldrb r0, [r2, r4]
bl sub_027F54E4
_027F58F8:
add sp, sp, #8
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027F5904: .word 0x040001C0
_027F5908: .word 0x040001C2
arm_func_end sub_027F5800
arm_func_start sub_027F590C
sub_027F590C: ; 0x027F590C
stmdb sp!, {r4, lr}
sub sp, sp, #8
cmp r1, #1
blo _027F5A04
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, _027F5A10 ; =0x040001C0
strh ip, [sp]
strh r0, [sp, #4]
movhi r1, r1, lsr #0x10
_027F5960:
ldrh r0, [r3]
tst r0, #0x80
bne _027F5960
ldr lr, _027F5A14 ; =0x040001C2
mov r0, #0x8900
strh r0, [r3]
mov r0, #2
strh r0, [lr]
mov r4, #0
add r3, sp, #0
sub ip, lr, #2
_027F598C:
ldrh r0, [ip]
tst r0, #0x80
bne _027F598C
mov r0, r4, lsl #1
ldrh r0, [r3, r0]
add r4, r4, #1
and r0, r0, #0xff
strh r0, [lr]
cmp r4, #3
blt _027F598C
sub r3, r1, #1
ldr r1, _027F5A10 ; =0x040001C0
mov r4, #0
b _027F59DC
_027F59C4:
ldrh r0, [r1]
tst r0, #0x80
bne _027F59C4
ldrb r0, [r2, r4]
add r4, r4, #1
strh r0, [r1, #2]
_027F59DC:
cmp r4, r3
blt _027F59C4
ldr r1, _027F5A10 ; =0x040001C0
_027F59E8:
ldrh r0, [r1]
tst r0, #0x80
bne _027F59E8
mov r0, #0x8100
strh r0, [r1]
ldrb r0, [r2, r4]
bl sub_027F54E4
_027F5A04:
add sp, sp, #8
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027F5A10: .word 0x040001C0
_027F5A14: .word 0x040001C2
arm_func_end sub_027F590C
arm_func_start sub_027F5A18
sub_027F5A18: ; 0x027F5A18
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, _027F5A98 ; =0x040001C0
mov r1, r1, lsl #0x10
and r5, r0, #0xff
mov r0, r1, lsr #0x10
mov r4, r2, lsr #0x10
_027F5A40:
ldrh r1, [r3]
tst r1, #0x80
bne _027F5A40
ldr r1, _027F5A9C ; =0x040001C2
mov r2, #0x8900
strh r2, [r3]
mov r2, #0xdb
strh r2, [r1]
sub r2, r1, #2
_027F5A64:
ldrh r1, [r2]
tst r1, #0x80
bne _027F5A64
bl sub_027F54E4
mov r0, r4
bl sub_027F54E4
ldr r1, _027F5A98 ; =0x040001C0
mov r2, #0x8100
mov r0, r5
strh r2, [r1]
bl sub_027F54E4
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F5A98: .word 0x040001C0
_027F5A9C: .word 0x040001C2
arm_func_end sub_027F5A18
arm_func_start sub_027F5AA0
sub_027F5AA0: ; 0x027F5AA0
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, _027F5B20 ; =0x040001C0
mov r1, r1, lsl #0x10
and r5, r0, #0xff
mov r0, r1, lsr #0x10
mov r4, r2, lsr #0x10
_027F5AC8:
ldrh r1, [r3]
tst r1, #0x80
bne _027F5AC8
ldr r1, _027F5B24 ; =0x040001C2
mov r2, #0x8900
strh r2, [r3]
mov r2, #0xd8
strh r2, [r1]
sub r2, r1, #2
_027F5AEC:
ldrh r1, [r2]
tst r1, #0x80
bne _027F5AEC
bl sub_027F54E4
mov r0, r4
bl sub_027F54E4
ldr r1, _027F5B20 ; =0x040001C0
mov r2, #0x8100
mov r0, r5
strh r2, [r1]
bl sub_027F54E4
ldmia sp!, {r3, r4, r5, lr}
bx lr
.align 2, 0
_027F5B20: .word 0x040001C0
_027F5B24: .word 0x040001C2
arm_func_end sub_027F5AA0
arm_func_start sub_027F5B28
sub_027F5B28: ; 0x027F5B28
ldr r2, _027F5B60 ; =0x040001C0
_027F5B2C:
ldrh r0, [r2]
tst r0, #0x80
bne _027F5B2C
ldr r0, _027F5B64 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #0xb9
strh r1, [r0]
sub r1, r0, #2
_027F5B50:
ldrh r0, [r1]
tst r0, #0x80
bne _027F5B50
bx lr
.align 2, 0
_027F5B60: .word 0x040001C0
_027F5B64: .word 0x040001C2
arm_func_end sub_027F5B28
arm_func_start sub_027F5B68
sub_027F5B68: ; 0x027F5B68
ldr r2, _027F5BA0 ; =0x040001C0
_027F5B6C:
ldrh r0, [r2]
tst r0, #0x80
bne _027F5B6C
ldr r0, _027F5BA4 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #0xab
strh r1, [r0]
sub r1, r0, #2
_027F5B90:
ldrh r0, [r1]
tst r0, #0x80
bne _027F5B90
bx lr
.align 2, 0
_027F5BA0: .word 0x040001C0
_027F5BA4: .word 0x040001C2
arm_func_end sub_027F5B68
arm_func_start sub_027F5BA8
sub_027F5BA8: ; 0x027F5BA8
ldr r2, _027F5BE0 ; =0x040001C0
_027F5BAC:
ldrh r0, [r2]
tst r0, #0x80
bne _027F5BAC
ldr r0, _027F5BE4 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #0xc7
strh r1, [r0]
sub r1, r0, #2
_027F5BD0:
ldrh r0, [r1]
tst r0, #0x80
bne _027F5BD0
bx lr
.align 2, 0
_027F5BE0: .word 0x040001C0
_027F5BE4: .word 0x040001C2
arm_func_end sub_027F5BA8
arm_func_start sub_027F5BE8
sub_027F5BE8: ; 0x027F5BE8
stmdb sp!, {r3, lr}
ldr r3, _027F5C7C ; =0x040001C0
_027F5BF0:
ldrh r1, [r3]
tst r1, #0x80
bne _027F5BF0
ldr r1, _027F5C80 ; =0x040001C2
mov r2, #0x8900
strh r2, [r3]
mov r2, #0x9f
strh r2, [r1]
sub r2, r1, #2
_027F5C14:
ldrh r1, [r2]
tst r1, #0x80
bne _027F5C14
ldr r1, _027F5C80 ; =0x040001C2
mov r2, #0
strh r2, [r1]
sub lr, r1, #2
_027F5C30:
ldrh r1, [lr]
tst r1, #0x80
bne _027F5C30
ldr ip, _027F5C80 ; =0x040001C2
mov r2, #0x8100
ldrh r3, [ip]
mov r1, #0
strb r3, [r0]
strh r2, [lr]
strh r1, [ip]
sub r2, ip, #2
_027F5C5C:
ldrh r1, [r2]
tst r1, #0x80
bne _027F5C5C
ldr r1, _027F5C80 ; =0x040001C2
ldrh r1, [r1]
strb r1, [r0, #1]
ldmia sp!, {r3, lr}
bx lr
.align 2, 0
_027F5C7C: .word 0x040001C0
_027F5C80: .word 0x040001C2
arm_func_end sub_027F5BE8
arm_func_start sub_027F5C84
sub_027F5C84: ; 0x027F5C84
ldr r2, _027F5CBC ; =0x040001C0
_027F5C88:
ldrh r0, [r2]
tst r0, #0x80
bne _027F5C88
ldr r0, _027F5CC0 ; =0x040001C2
mov r1, #0x8100
strh r1, [r2]
mov r1, #0xff
strh r1, [r0]
sub r1, r0, #2
_027F5CAC:
ldrh r0, [r1]
tst r0, #0x80
bne _027F5CAC
bx lr
.align 2, 0
_027F5CBC: .word 0x040001C0
_027F5CC0: .word 0x040001C2
arm_func_end sub_027F5C84
arm_func_start sub_027F5CC4
sub_027F5CC4: ; 0x027F5CC4
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0xc
ldr r1, _027F5F00 ; =0x027F8E28
mov r8, r0
ldrh r0, [r1]
cmp r0, #0
bne _027F5EF4
mov r2, #1
strh r2, [r1]
add r0, sp, #8
str r2, [r1, #0x1d8]
bl sub_027F6B04
add r0, sp, #0xa
bl sub_027F6B68
ldrh r0, [sp, #8]
mov r1, r0, lsl #0x18
movs r1, r1, lsr #0x1f
bne _027F5D28
mov r0, r0, lsl #0x19
movs r0, r0, lsr #0x1f
bne _027F5D28
ldrh r0, [sp, #0xa]
mov r0, r0, lsl #0x18
movs r0, r0, lsr #0x1f
beq _027F5D40
_027F5D28:
ldrh r1, [sp, #8]
add r0, sp, #8
bic r1, r1, #1
orr r1, r1, #1
strh r1, [sp, #8]
bl sub_027F6B30
_027F5D40:
ldrh r0, [sp, #8]
mov r1, r0, lsl #0x1b
movs r1, r1, lsr #0x1f
bne _027F5D5C
mov r0, r0, lsl #0x1a
movs r0, r0, lsr #0x1f
beq _027F5D7C
_027F5D5C:
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_027F6B94
_027F5D7C:
ldr r0, _027F5F04 ; =0x027FFDE8
bl sub_027F6794
ldr r0, _027F5F04 ; =0x027FFDE8
ldr r0, [r0]
mov r0, r0, lsl #0xa
mov r0, r0, lsr #0x1a
bl sub_027F65BC
ldr r1, _027F5F04 ; =0x027FFDE8
mov r5, r0
ldr r0, [r1]
mov r0, r0, lsl #0x13
mov r0, r0, lsr #0x1b
bl sub_027F65BC
ldr r1, _027F5F04 ; =0x027FFDE8
mov r6, r0
ldr r0, [r1]
mov r0, r0, lsl #0x18
mov r0, r0, lsr #0x18
bl sub_027F65BC
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_03806DD4
mov r4, r0
mov r0, r7
mov r1, #0x64
bl sub_03806DD4
mov r1, #0xd
mul r1, r6, r1
mov r6, r0
add r0, r1, #8
mov r1, #5
bl sub_03806DD4
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_03806DD4
ldr r0, _027F5F04 ; =0x027FFDE8
ldr r2, [r0]
mov r3, r2, lsl #5
mov r3, r3, lsr #0x1d
cmp r3, r1
beq _027F5E58
bic r2, r2, #0x7000000
mov r1, r1, lsl #0x1d
orr r1, r2, r1, lsr #5
str r1, [r0]
bl sub_027F67C0
_027F5E58:
mov r0, #1
bl sub_027F6670
ldr r0, _027F5F00 ; =0x027F8E28
mov r1, #0
str r1, [r0, #0x1d8]
bl sub_037FE2B4
ldr r1, _027F5F08 ; =0x027F5F24
mov r0, #5
bl sub_037FE39C
ldr r0, _027F5F0C ; =0x027F8E2C
ldr r1, _027F5F10 ; =0x027F8E4C
mov r2, #4
bl sub_037FC6AC
mov r0, #0x100
stmia sp, {r0, r8}
ldr r0, _027F5F14 ; =0x027F8E5C
ldr r1, _027F5F18 ; =0x027F60A8
ldr r3, _027F5F1C ; =0x027F9000
mov r2, #0
bl sub_037FC054
ldr r0, _027F5F14 ; =0x027F8E5C
bl sub_037FC36C
mov r0, #0x8000
bl sub_037FE5A8
mov r0, #0x40
mov r1, #0
bl sub_037FE588
mov r0, #0x100
mov r1, r0
bl sub_037FE588
bl sub_037FDD00
mov r4, r0
ldr r1, _027F5F20 ; =0x027F652C
mov r0, #0x80
bl sub_037FB7BC
mov r0, #0x80
bl sub_037FB8F0
mov r0, r4
bl sub_037FDD14
_027F5EF4:
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, r7, r8, lr}
bx lr
.align 2, 0
_027F5F00: .word 0x027F8E28
_027F5F04: .word 0x027FFDE8
_027F5F08: .word 0x027F5F24
_027F5F0C: .word 0x027F8E2C
_027F5F10: .word 0x027F8E4C
_027F5F14: .word 0x027F8E5C
_027F5F18: .word 0x027F60A8
_027F5F1C: .word 0x027F9000
_027F5F20: .word 0x027F652C
arm_func_end sub_027F5CC4
arm_func_start sub_027F5F24
sub_027F5F24: ; 0x027F5F24
stmdb sp!, {r4, lr}
cmp r2, #0
bne _027F6054
and r0, r1, #0x7f00
mov r0, r0, lsl #8
mov r4, r0, lsr #0x10
cmp r4, #0x29
addls pc, pc, r4, lsl #2
b _027F6048
_027F5F48: ; jump table
b _027F5FF0 ; case 0
b _027F5FF0 ; case 1
b _027F6048 ; case 2
b _027F6048 ; case 3
b _027F6048 ; case 4
b _027F6048 ; case 5
b _027F6048 ; case 6
b _027F6048 ; case 7
b _027F6048 ; case 8
b _027F6048 ; case 9
b _027F6048 ; case 10
b _027F6048 ; case 11
b _027F6048 ; case 12
b _027F6048 ; case 13
b _027F6048 ; case 14
b _027F6048 ; case 15
b _027F5FF0 ; case 16
b _027F5FF0 ; case 17
b _027F5FF0 ; case 18
b _027F5FF0 ; case 19
b _027F5FF0 ; case 20
b _027F5FF0 ; case 21
b _027F5FF0 ; case 22
b _027F5FF0 ; case 23
b _027F5FF0 ; case 24
b _027F5FF0 ; case 25
b _027F6048 ; case 26
b _027F6048 ; case 27
b _027F6048 ; case 28
b _027F6048 ; case 29
b _027F6048 ; case 30
b _027F6048 ; case 31
b _027F6048 ; case 32
b _027F6048 ; case 33
b _027F6048 ; case 34
b _027F5FF0 ; case 35
b _027F5FF0 ; case 36
b _027F5FF0 ; case 37
b _027F5FF0 ; case 38
b _027F5FF0 ; case 39
b _027F5FF0 ; case 40
b _027F5FF0 ; case 41
_027F5FF0:
ldr r0, _027F605C ; =0x027F8E28
ldr r1, [r0, #0x1d8]
cmp r1, #0
beq _027F6010
mov r0, r4
mov r1, #3
bl sub_027F6068
b _027F6054
_027F6010:
ldr r3, _027F6060 ; =0x027F8F28
mov r1, #1
str r1, [r0, #0x1d8]
mov r1, #0
ldr r0, _027F6064 ; =0x027F8E2C
mov r2, r1
strh r4, [r3, #0xdc]
bl sub_037FC6D4
cmp r0, #0
bne _027F6054
mov r0, r4
mov r1, #4
bl sub_027F6068
b _027F6054
_027F6048:
mov r0, r4
mov r1, #1
bl sub_027F6068
_027F6054:
ldmia sp!, {r4, lr}
bx lr
.align 2, 0
_027F605C: .word 0x027F8E28
_027F6060: .word 0x027F8F28
_027F6064: .word 0x027F8E2C
arm_func_end sub_027F5F24
arm_func_start sub_027F6068
sub_027F6068: ; 0x027F6068
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
_027F6088:
mov r0, r5
mov r1, r6
mov r2, r4
bl sub_037FE410
cmp r0, #0
blt _027F6088
ldmia sp!, {r4, r5, r6, lr}
bx lr
arm_func_end sub_027F6068
arm_func_start sub_027F60A8
sub_027F60A8: ; 0x027F60A8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr sb, _027F651C ; =0x027FFDE8
mov r8, #0
ldr r4, _027F6520 ; =0x027F8E28
mov r7, r8
mov r6, r8
mov r5, r8
mov sl, r8
mov fp, r8
_027F60CC:
ldr r0, _027F6524 ; =0x027F8E2C
add r1, sp, #0
mov r2, #1
bl sub_037FC760
ldr r0, _027F6528 ; =0x027F8F28
ldrh r0, [r0, #0xdc]
cmp r0, #0x29
addls pc, pc, r0, lsl #2
b _027F6508
_027F60F0: ; jump table
b _027F6198 ; case 0
b _027F61B0 ; case 1
b _027F6508 ; case 2
b _027F6508 ; case 3
b _027F6508 ; case 4
b _027F6508 ; case 5
b _027F6508 ; case 6
b _027F6508 ; case 7
b _027F6508 ; case 8
b _027F6508 ; case 9
b _027F6508 ; case 10
b _027F6508 ; case 11
b _027F6508 ; case 12
b _027F6508 ; case 13
b _027F6508 ; case 14
b _027F6508 ; case 15
b _027F61D8 ; case 16
b _027F61F8 ; case 17
b _027F6218 ; case 18
b _027F6238 ; case 19
b _027F6274 ; case 20
b _027F62B0 ; case 21
b _027F62EC ; case 22
b _027F630C ; case 23
b _027F632C ; case 24
b _027F634C ; case 25
b _027F6508 ; case 26
b _027F6508 ; case 27
b _027F6508 ; case 28
b _027F6508 ; case 29
b _027F6508 ; case 30
b _027F6508 ; case 31
b _027F636C ; case 32
b _027F638C ; case 33
b _027F63B4 ; case 34
b _027F63D4 ; case 35
b _027F6410 ; case 36
b _027F644C ; case 37
b _027F6488 ; case 38
b _027F64A8 ; case 39
b _027F64C8 ; case 40
b _027F64E8 ; case 41
_027F6198:
bl sub_027F662C
mov r0, #0
mov r1, r0
str r0, [r4, #0x1d8]
bl sub_027F6068
b _027F60CC
_027F61B0:
ldrh r0, [sb]
mov r0, r0, lsl #0x1e
mov r0, r0, lsr #0x1f
bl sub_027F6670
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #1
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F61D8:
mov r0, sb
bl sub_027F6794
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x10
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F61F8:
mov r0, sb
bl sub_027F67F8
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x11
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F6218:
add r0, sb, #4
bl sub_027F6824
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x12
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F6238:
add r0, sb, #4
bl sub_027F6888
cmp r0, #0
bne _027F625C
mov r0, #0x13
mov r1, #2
str r8, [r4, #0x1d8]
bl sub_027F6068
b _027F60CC
_027F625C:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x13
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F6274:
add r0, sb, #4
bl sub_027F6964
cmp r0, #0
bne _027F6298
mov r0, #0x14
mov r1, #2
str r7, [r4, #0x1d8]
bl sub_027F6068
b _027F60CC
_027F6298:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x14
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F62B0:
add r0, sb, #4
bl sub_027F6A38
cmp r0, #0
bne _027F62D4
mov r0, #0x15
mov r1, #2
str r6, [r4, #0x1d8]
bl sub_027F6068
b _027F60CC
_027F62D4:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x15
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F62EC:
mov r0, sb
bl sub_027F6B04
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x16
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F630C:
add r0, sb, #2
bl sub_027F6B68
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x17
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F632C:
add r0, sb, #4
bl sub_027F6BCC
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x18
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F634C:
add r0, sb, #4
bl sub_027F6C30
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x19
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F636C:
mov r0, sb
bl sub_027F67C0
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x20
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F638C:
add r0, sb, #4
bl sub_027F6824
mov r0, sb
bl sub_027F67C0
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x21
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F63B4:
add r0, sb, #4
bl sub_027F6850
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x22
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F63D4:
add r0, sb, #4
bl sub_027F68F0
cmp r0, #0
bne _027F63F8
mov r0, #0x23
mov r1, #2
str r5, [r4, #0x1d8]
bl sub_027F6068
b _027F60CC
_027F63F8:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x23
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F6410:
add r0, sb, #4
bl sub_027F69C8
cmp r0, #0
bne _027F6434
mov r0, #0x24
mov r1, #2
str sl, [r4, #0x1d8]
bl sub_027F6068
b _027F60CC
_027F6434:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x24
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F644C:
add r0, sb, #4
bl sub_027F6A98
cmp r0, #0
bne _027F6470
mov r0, #0x25
mov r1, #2
str fp, [r4, #0x1d8]
bl sub_027F6068
b _027F60CC
_027F6470:
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x25
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F6488:
mov r0, sb
bl sub_027F6B30
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x26
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F64A8:
add r0, sb, #2
bl sub_027F6B94
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x27
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F64C8:
add r0, sb, #4
bl sub_027F6BF8
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x28
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F64E8:
add r0, sb, #4
bl sub_027F6C5C
mov r0, #0
str r0, [r4, #0x1d8]
mov r0, #0x29
mov r1, #0
bl sub_027F6068
b _027F60CC
_027F6508:
mov r1, #0
str r1, [r4, #0x1d8]
mov r1, #1
bl sub_027F6068
b _027F60CC
.align 2, 0
_027F651C: .word 0x027FFDE8
_027F6520: .word 0x027F8E28
_027F6524: .word 0x027F8E2C
_027F6528: .word 0x027F8F28
arm_func_end sub_027F60A8
arm_func_start sub_027F652C
sub_027F652C: ; 0x027F652C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
add r0, sp, #2
bl sub_027F6B04
ldrh r0, [sp, #2]
mov r1, r0, lsl #0x1b
movs r1, r1, lsr #0x1f
bne _027F6558
mov r0, r0, lsl #0x1a
movs r0, r0, lsr #0x1f
beq _027F65B0
_027F6558:
add r0, sp, #0
bl sub_027F6B68
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_027F6B94
mov r1, r4
mov r0, #0x30
bl sub_027F6068
_027F65B0:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_027F652C
arm_func_start sub_027F65BC
sub_027F65BC: ; 0x027F65BC
stmdb sp!, {r4, lr}
mov ip, #0
mov r2, ip
b _027F65E8
_027F65CC:
mov r1, r2, lsl #2
mov r1, r0, lsr r1
and r1, r1, #0xf
cmp r1, #0xa
movhs r0, #0
bhs _027F6624
add r2, r2, #1
_027F65E8:
cmp r2, #8
blt _027F65CC
mov r4, #0
mov lr, #1
mov r2, #0xa
_027F65FC:
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 _027F65FC
mov r0, ip
_027F6624:
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F65BC
arm_func_start sub_027F662C
sub_027F662C: ; 0x027F662C
stmdb sp!, {r3, lr}
mov r0, #0x8000
bl sub_037FE5A8
ldrh r0, [sp]
bic r0, r0, #1
orr r0, r0, #1
strh r0, [sp]
bl sub_027F6F10
mov r0, #6
mov r1, #0
bl sub_027F6F84
add r0, sp, #0
mov r1, #1
bl sub_027F7004
bl sub_027F6F50
ldmia sp!, {r3, lr}
bx lr
arm_func_end sub_027F662C
arm_func_start sub_027F6670
sub_027F6670: ; 0x027F6670
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
and r4, r4, #1
cmp r4, #1
bne _027F6788
mov r0, #0x8000
bl sub_037FE5A8
add r2, sp, #0
mov r0, #0x86
mov r1, #0
mov r3, #1
bl sub_027F6EB4
ldrh r0, [sp]
mov r1, r0, lsl #0x1e
mov r1, r1, lsr #0x1f
cmp r1, r4
beq _027F6788
bic r1, r0, #2
mov r0, r4, lsl #0x1f
orr r1, r1, r0, lsr #30
mov r0, #0x8000
strh r1, [sp]
bl sub_037FE5A8
bl sub_027F6F10
mov r0, #6
mov r1, #0
bl sub_027F6F84
add r0, sp, #0
mov r1, #1
bl sub_027F7004
bl sub_027F6F50
mov r0, #0x86
mov r1, #0x10
add r2, sp, #4
mov r3, #3
bl sub_027F6EB4
cmp r4, #0
add r0, sp, #4
bne _027F6718
bl sub_027F6C94
b _027F671C
_027F6718:
bl sub_027F6DA4
_027F671C:
bl sub_027F6F10
mov r0, #6
mov r1, #0x10
bl sub_027F6F84
add r0, sp, #4
mov r1, #3
bl sub_027F7004
bl sub_027F6F50
mov r0, #0x86
mov r1, #0x50
add r2, sp, #4
mov r3, #3
bl sub_027F6EB4
cmp r4, #0
add r0, sp, #4
bne _027F6764
bl sub_027F6C94
b _027F6768
_027F6764:
bl sub_027F6DA4
_027F6768:
bl sub_027F6F10
mov r0, #6
mov r1, #0x50
bl sub_027F6F84
add r0, sp, #4
mov r1, #3
bl sub_027F7004
bl sub_027F6F50
_027F6788:
add sp, sp, #8
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6670
arm_func_start sub_027F6794
sub_027F6794: ; 0x027F6794
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
mov r2, r4
mov r0, #0x86
mov r1, #0x20
mov r3, #7
bl sub_027F6EB4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6794
arm_func_start sub_027F67C0
sub_027F67C0: ; 0x027F67C0
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
bl sub_027F6F10
mov r0, #6
mov r1, #0x20
bl sub_027F6F84
mov r0, r4
mov r1, #7
bl sub_027F7004
bl sub_027F6F50
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F67C0
arm_func_start sub_027F67F8
sub_027F67F8: ; 0x027F67F8
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
mov r2, r4
mov r0, #0x86
mov r1, #0x20
mov r3, #4
bl sub_027F6EB4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F67F8
arm_func_start sub_027F6824
sub_027F6824: ; 0x027F6824
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
mov r2, r4
mov r0, #0x86
mov r1, #0x60
mov r3, #3
bl sub_027F6EB4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6824
arm_func_start sub_027F6850
sub_027F6850: ; 0x027F6850
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
bl sub_027F6F10
mov r0, #6
mov r1, #0x60
bl sub_027F6F84
mov r0, r4
mov r1, #3
bl sub_027F7004
bl sub_027F6F50
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6850
arm_func_start sub_027F6888
sub_027F6888: ; 0x027F6888
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_027F6EB4
ldrh r0, [sp]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1c
and r0, r0, #0xb
cmp r0, #1
movne r0, #0
bne _027F68E4
mov r2, r4
mov r0, #0x86
mov r1, #0x10
mov r3, #1
bl sub_027F6EB4
mov r0, #1
_027F68E4:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_027F6888
arm_func_start sub_027F68F0
sub_027F68F0: ; 0x027F68F0
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_027F6EB4
ldrh r0, [sp]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1c
and r0, r0, #0xb
cmp r0, #1
movne r0, #0
bne _027F6958
bl sub_027F6F10
mov r0, #6
mov r1, #0x10
bl sub_027F6F84
mov r0, r4
mov r1, #1
bl sub_027F7004
bl sub_027F6F50
mov r0, #1
_027F6958:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_027F68F0
arm_func_start sub_027F6964
sub_027F6964: ; 0x027F6964
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_027F6EB4
ldrh r0, [sp]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1c
cmp r0, #4
movne r0, #0
bne _027F69BC
mov r2, r4
mov r0, #0x86
mov r1, #0x10
mov r3, #3
bl sub_027F6EB4
mov r0, #1
_027F69BC:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_027F6964
arm_func_start sub_027F69C8
sub_027F69C8: ; 0x027F69C8
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_027F6EB4
ldrh r0, [sp]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1c
cmp r0, #4
movne r0, #0
bne _027F6A2C
bl sub_027F6F10
mov r0, #6
mov r1, #0x10
bl sub_027F6F84
mov r0, r4
mov r1, #3
bl sub_027F7004
bl sub_027F6F50
mov r0, #1
_027F6A2C:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_027F69C8
arm_func_start sub_027F6A38
sub_027F6A38: ; 0x027F6A38
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_027F6EB4
ldrh r0, [sp]
mov r0, r0, lsl #0x19
movs r0, r0, lsr #0x1f
moveq r0, #0
beq _027F6A8C
mov r2, r4
mov r0, #0x86
mov r1, #0x50
mov r3, #3
bl sub_027F6EB4
mov r0, #1
_027F6A8C:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_027F6A38
arm_func_start sub_027F6A98
sub_027F6A98: ; 0x027F6A98
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
add r2, sp, #0
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_027F6EB4
ldrh r0, [sp]
mov r0, r0, lsl #0x19
movs r0, r0, lsr #0x1f
moveq r0, #0
beq _027F6AF8
bl sub_027F6F10
mov r0, #6
mov r1, #0x50
bl sub_027F6F84
mov r0, r4
mov r1, #3
bl sub_027F7004
bl sub_027F6F50
mov r0, #1
_027F6AF8:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
bx lr
arm_func_end sub_027F6A98
arm_func_start sub_027F6B04
sub_027F6B04: ; 0x027F6B04
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
mov r2, r4
mov r0, #0x86
mov r1, #0
mov r3, #1
bl sub_027F6EB4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6B04
arm_func_start sub_027F6B30
sub_027F6B30: ; 0x027F6B30
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
bl sub_027F6F10
mov r0, #6
mov r1, #0
bl sub_027F6F84
mov r0, r4
mov r1, #1
bl sub_027F7004
bl sub_027F6F50
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6B30
arm_func_start sub_027F6B68
sub_027F6B68: ; 0x027F6B68
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
mov r2, r4
mov r0, #0x86
mov r1, #0x40
mov r3, #1
bl sub_027F6EB4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6B68
arm_func_start sub_027F6B94
sub_027F6B94: ; 0x027F6B94
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
bl sub_027F6F10
mov r0, #6
mov r1, #0x40
bl sub_027F6F84
mov r0, r4
mov r1, #1
bl sub_027F7004
bl sub_027F6F50
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6B94
arm_func_start sub_027F6BCC
sub_027F6BCC: ; 0x027F6BCC
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
mov r2, r4
mov r0, #0x86
mov r1, #0x30
mov r3, #1
bl sub_027F6EB4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6BCC
arm_func_start sub_027F6BF8
sub_027F6BF8: ; 0x027F6BF8
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
bl sub_027F6F10
mov r0, #6
mov r1, #0x30
bl sub_027F6F84
mov r0, r4
mov r1, #1
bl sub_027F7004
bl sub_027F6F50
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6BF8
arm_func_start sub_027F6C30
sub_027F6C30: ; 0x027F6C30
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
mov r2, r4
mov r0, #0x86
mov r1, #0x70
mov r3, #1
bl sub_027F6EB4
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6C30
arm_func_start sub_027F6C5C
sub_027F6C5C: ; 0x027F6C5C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x8000
bl sub_037FE5A8
bl sub_027F6F10
mov r0, #6
mov r1, #0x70
bl sub_027F6F84
mov r0, r4
mov r1, #1
bl sub_027F7004
bl sub_027F6F50
ldmia sp!, {r4, lr}
bx lr
arm_func_end sub_027F6C5C
arm_func_start sub_027F6C94
sub_027F6C94: ; 0x027F6C94
ldr r1, [r0]
mov r2, r1, lsl #0x12
mov r2, r2, lsr #0x1a
cmp r2, #0x23
addls pc, pc, r2, lsl #2
b _027F6D90
_027F6CAC: ; jump table
b _027F6D3C ; case 0
b _027F6D3C ; case 1
b _027F6D3C ; case 2
b _027F6D3C ; case 3
b _027F6D3C ; case 4
b _027F6D3C ; case 5
b _027F6D3C ; case 6
b _027F6D3C ; case 7
b _027F6D3C ; case 8
b _027F6D3C ; case 9
b _027F6D90 ; case 10
b _027F6D90 ; case 11
b _027F6D90 ; case 12
b _027F6D90 ; case 13
b _027F6D90 ; case 14
b _027F6D90 ; case 15
b _027F6D3C ; case 16
b _027F6D3C ; case 17
b _027F6D48 ; case 18
b _027F6D48 ; case 19
b _027F6D48 ; case 20
b _027F6D48 ; case 21
b _027F6D48 ; case 22
b _027F6D48 ; case 23
b _027F6D48 ; case 24
b _027F6D48 ; case 25
b _027F6D90 ; case 26
b _027F6D90 ; case 27
b _027F6D90 ; case 28
b _027F6D90 ; case 29
b _027F6D90 ; case 30
b _027F6D90 ; case 31
b _027F6D6C ; case 32
b _027F6D6C ; case 33
b _027F6D48 ; case 34
b _027F6D48 ; case 35
_027F6D3C:
bic r1, r1, #0x4000
str r1, [r0]
bx lr
_027F6D48:
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
_027F6D6C:
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
_027F6D90:
ldr r1, [r0]
bic r1, r1, #0x4000
bic r1, r1, #0x3f00
str r1, [r0]
bx lr
arm_func_end sub_027F6C94
arm_func_start sub_027F6DA4
sub_027F6DA4: ; 0x027F6DA4
ldr r2, [r0]
mov r1, r2, lsl #0x12
mov r3, r1, lsr #0x1a
cmp r3, #0x23
addls pc, pc, r3, lsl #2
b _027F6EA0
_027F6DBC: ; jump table
b _027F6E4C ; case 0
b _027F6E4C ; case 1
b _027F6E4C ; case 2
b _027F6E4C ; case 3
b _027F6E4C ; case 4
b _027F6E4C ; case 5
b _027F6E4C ; case 6
b _027F6E4C ; case 7
b _027F6E70 ; case 8
b _027F6E70 ; case 9
b _027F6EA0 ; case 10
b _027F6EA0 ; case 11
b _027F6EA0 ; case 12
b _027F6EA0 ; case 13
b _027F6EA0 ; case 14
b _027F6EA0 ; case 15
b _027F6E4C ; case 16
b _027F6E4C ; case 17
b _027F6E94 ; case 18
b _027F6E94 ; case 19
b _027F6E94 ; case 20
b _027F6E94 ; case 21
b _027F6E94 ; case 22
b _027F6E94 ; case 23
b _027F6E94 ; case 24
b _027F6E94 ; case 25
b _027F6EA0 ; case 26
b _027F6EA0 ; case 27
b _027F6EA0 ; case 28
b _027F6EA0 ; case 29
b _027F6EA0 ; case 30
b _027F6EA0 ; case 31
b _027F6E94 ; case 32
b _027F6E94 ; case 33
b _027F6E94 ; case 34
b _027F6E94 ; case 35
_027F6E4C:
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
_027F6E70:
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
_027F6E94:
orr r1, r2, #0x4000
str r1, [r0]
bx lr
_027F6EA0:
ldr r1, [r0]
bic r1, r1, #0x4000
bic r1, r1, #0x3f00
str r1, [r0]
bx lr
arm_func_end sub_027F6DA4
arm_func_start sub_027F6EB4
sub_027F6EB4: ; 0x027F6EB4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_027F6F10
mov r0, r7
mov r1, r6
bl sub_027F6F84
cmp r7, #6
beq _027F6EF8
cmp r7, #0x86
bne _027F6F04
mov r0, r5
mov r1, r4
bl sub_027F70BC
b _027F6F04
_027F6EF8:
mov r0, r5
mov r1, r4
bl sub_027F7004
_027F6F04:
bl sub_027F6F50
ldmia sp!, {r3, r4, r5, r6, r7, lr}
bx lr
arm_func_end sub_027F6EB4
arm_func_start sub_027F6F10
sub_027F6F10: ; 0x027F6F10
mov ip, #0x4000000
add ip, ip, #0x138
ldrh r0, [ip]
bic r0, r0, #0x77
orr r0, r0, #0x72
strh r0, [ip]
mov r3, #2
_027F6F2C:
subs r3, r3, #1
bne _027F6F2C
bic r0, r0, #4
orr r0, r0, #4
strh r0, [ip]
mov r3, #2
_027F6F44:
subs r3, r3, #1
bne _027F6F44
bx lr
arm_func_end sub_027F6F10
arm_func_start sub_027F6F50
sub_027F6F50: ; 0x027F6F50
mov ip, #0x4000000
add ip, ip, #0x138
mov r3, #2
_027F6F5C:
subs r3, r3, #1
bne _027F6F5C
ldrh r0, [ip]
bic r0, r0, #4
orr r0, r0, #0
strh r0, [ip]
mov r3, #2
_027F6F78:
subs r3, r3, #1
bne _027F6F78
bx lr
arm_func_end sub_027F6F50
arm_func_start sub_027F6F84
sub_027F6F84: ; 0x027F6F84
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
_027F6FA0:
bic r0, r0, #3
orr r0, r0, #0
mov r3, #1
tst r3, r1, lsr r2
bne _027F6FB8
b _027F6FBC
_027F6FB8:
mov r3, #1
_027F6FBC:
beq _027F6FC4
b _027F6FC8
_027F6FC4:
mov r3, #0
_027F6FC8:
orr r0, r0, r3
strh r0, [ip]
mov r3, #9
_027F6FD4:
subs r3, r3, #1
bne _027F6FD4
bic r0, r0, #2
orr r0, r0, #2
strh r0, [ip]
mov r3, #9
_027F6FEC:
subs r3, r3, #1
bne _027F6FEC
add r2, r2, #1
cmp r2, #8
bne _027F6FA0
bx lr
arm_func_end sub_027F6F84
arm_func_start sub_027F7004
sub_027F7004: ; 0x027F7004
mov ip, #0x4000000
add ip, ip, #0x138
_027F700C:
stmdb sp!, {r0, r1}
tst r0, #1
beq _027F701C
b _027F7020
_027F701C:
ldrh r1, [r0]
_027F7020:
bne _027F7028
b _027F702C
_027F7028:
ldrh r1, [r0, #-1]
_027F702C:
bne _027F7034
b _027F7038
_027F7034:
mov r1, r1, lsr #8
_027F7038:
ldrh r0, [ip]
bic r0, r0, #0x77
orr r0, r0, #0x74
mov r2, #0
_027F7048:
bic r0, r0, #3
orr r0, r0, #0
mov r3, #1
tst r3, r1, lsr r2
bne _027F7060
b _027F7064
_027F7060:
mov r3, #1
_027F7064:
beq _027F706C
b _027F7070
_027F706C:
mov r3, #0
_027F7070:
orr r0, r0, r3
strh r0, [ip]
mov r3, #9
_027F707C:
subs r3, r3, #1
bne _027F707C
bic r0, r0, #2
orr r0, r0, #2
strh r0, [ip]
mov r3, #9
_027F7094:
subs r3, r3, #1
bne _027F7094
add r2, r2, #1
cmp r2, #8
bne _027F7048
ldmia sp!, {r0, r1}
add r0, r0, #1
subs r1, r1, #1
bne _027F700C
bx lr
arm_func_end sub_027F7004
arm_func_start sub_027F70BC
sub_027F70BC: ; 0x027F70BC
mov ip, #0x4000000
add ip, ip, #0x138
_027F70C4:
stmdb sp!, {r0, r1}
ldrh r0, [ip]
bic r0, r0, #0x77
orr r0, r0, #0x64
mov r2, #0
mov r1, #0
_027F70DC:
bic r0, r0, #3
orr r0, r0, #0
strh r0, [ip]
mov r3, #9
_027F70EC:
subs r3, r3, #1
bne _027F70EC
ldrh r0, [ip]
and r3, r0, #1
cmp r3, #1
beq _027F7108
b _027F710C
_027F7108:
mov r3, #0x80
_027F710C:
bne _027F7114
b _027F7118
_027F7114:
mov r3, #0
_027F7118:
orr r2, r3, r2, lsr #1
bic r0, r0, #2
orr r0, r0, #2
strh r0, [ip]
mov r3, #9
_027F712C:
subs r3, r3, #1
bne _027F712C
add r1, r1, #1
cmp r1, #8
bne _027F70DC
ldmia sp!, {r0, r1}
tst r0, #1
beq _027F7164
ldrh r3, [r0, #-1]
bic r3, r3, #0xff00
mov r2, r2, lsl #8
orr r3, r2, r3
strh r3, [r0, #-1]
b _027F7174
_027F7164:
ldrh r3, [r0]
bic r3, r3, #0xff
orr r3, r3, r2
strh r3, [r0]
_027F7174:
add r0, r0, #1
subs r1, r1, #1
bne _027F70C4
bx lr
arm_func_end sub_027F70BC
; 0x02026974
.byte 0xF0, 0x29, 0x7E, 0x02, 0x90, 0x2A, 0x7E, 0x02, 0xA0, 0x2E, 0x7E, 0x02, 0xF8, 0x7D, 0x7E, 0x02
.byte 0xF4, 0x7F, 0x7E, 0x02, 0x5C, 0x80, 0x7E, 0x02, 0x14, 0x83, 0x7E, 0x02, 0x50, 0x2F, 0x7E, 0x02
.byte 0x10, 0x30, 0x7E, 0x02, 0xD8, 0x32, 0x7E, 0x02, 0xD0, 0x34, 0x7E, 0x02, 0xBC, 0x3D, 0x7E, 0x02
.byte 0xC4, 0x3E, 0x7E, 0x02, 0xA4, 0x44, 0x7E, 0x02, 0xD4, 0x4B, 0x7E, 0x02, 0x68, 0x4F, 0x7E, 0x02
.byte 0xA4, 0x50, 0x7E, 0x02, 0xF4, 0x51, 0x7E, 0x02, 0x80, 0x52, 0x7E, 0x02, 0x78, 0x53, 0x7E, 0x02
.byte 0x34, 0x54, 0x7E, 0x02, 0x64, 0x1D, 0x7E, 0x02, 0x64, 0x1D, 0x7E, 0x02, 0x64, 0x1D, 0x7E, 0x02
.byte 0xD4, 0x55, 0x7E, 0x02, 0xC8, 0x56, 0x7E, 0x02, 0x3C, 0x57, 0x7E, 0x02, 0x60, 0x57, 0x7E, 0x02
.byte 0x40, 0x61, 0x7E, 0x02, 0x84, 0x57, 0x7E, 0x02, 0xB0, 0x58, 0x7E, 0x02, 0x8C, 0x5A, 0x7E, 0x02
.byte 0xF4, 0x5A, 0x7E, 0x02, 0xBC, 0x7C, 0x7E, 0x02, 0x4C, 0x7D, 0x7E, 0x02, 0xC0, 0x83, 0x7E, 0x02
.byte 0x40, 0x87, 0x7E, 0x02, 0xB8, 0x87, 0x7E, 0x02, 0x60, 0x38, 0x7E, 0x02, 0xDC, 0x54, 0x7E, 0x02
.byte 0xCC, 0x87, 0x7E, 0x02, 0x4C, 0x89, 0x7E, 0x02, 0x70, 0x89, 0x7E, 0x02, 0xE0, 0x62, 0x7E, 0x02
.byte 0x14, 0x63, 0x7E, 0x02, 0x3C, 0x63, 0x7E, 0x02, 0x14, 0xD2, 0x7E, 0x02, 0x68, 0xD4, 0x7E, 0x02
.byte 0x44, 0xD5, 0x7E, 0x02, 0x68, 0xD6, 0x7E, 0x02, 0x64, 0xD7, 0x7E, 0x02, 0x58, 0xD8, 0x7E, 0x02
.byte 0x74, 0x21, 0x7F, 0x02, 0x34, 0x3F, 0x7F, 0x02, 0x28, 0xA7, 0x7F, 0x03, 0xE8, 0x45, 0x7F, 0x02
.byte 0x74, 0xC2, 0x7E, 0x02, 0x88, 0x8A, 0x7F, 0x03, 0xC8, 0x86, 0x7F, 0x03, 0xF4, 0xDA, 0x7E, 0x02
.byte 0x74, 0xA7, 0x7F, 0x03, 0x48, 0xA9, 0x7F, 0x03, 0xB4, 0xAC, 0x7F, 0x03, 0x10, 0x4B, 0x7F, 0x02
.byte 0xE4, 0x4C, 0x7F, 0x02, 0x84, 0xC6, 0x7E, 0x02, 0x90, 0xAD, 0x7F, 0x03, 0xB0, 0xB0, 0x7E, 0x02
.byte 0x30, 0xB1, 0x7E, 0x02, 0xD0, 0xB1, 0x7E, 0x02, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xCC
.byte 0x01, 0xD8, 0x00, 0x14, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x28, 0x01, 0xE4, 0x01, 0xA0, 0x00, 0x6C
.byte 0x00, 0x78, 0x01, 0xB4, 0x00, 0x50, 0x01, 0x9C, 0x01, 0x88, 0x00, 0x44, 0x46, 0x01, 0x48, 0x01
.byte 0x4A, 0x01, 0x4C, 0x01, 0x20, 0x01, 0x22, 0x01, 0x54, 0x01, 0x44, 0x01, 0x32, 0x01, 0x32, 0x01
.byte 0x40, 0x01, 0x42, 0x01, 0x38, 0x00, 0x24, 0x01, 0x28, 0x01, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0xFF, 0xFF
.byte 0x54, 0x02, 0x00, 0x00, 0xB4, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x01, 0x00
.byte 0x88, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00
.byte 0xEA, 0x00, 0x00, 0x00, 0xEE, 0x00, 0x01, 0x00, 0xEC, 0x00, 0x03, 0x3F, 0xA2, 0x01, 0x01, 0x00
.byte 0xA0, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x08, 0xBC, 0x00, 0x01, 0x00, 0xD4, 0x00, 0x03, 0x00
.byte 0xD8, 0x00, 0x04, 0x00, 0xDA, 0x00, 0x02, 0x06, 0x76, 0x00, 0x00, 0x00, 0x30, 0x01, 0x46, 0x01
.byte 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0x02, 0x00, 0x03, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0x00, 0x04, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x05, 0x00, 0xFF, 0x00, 0x06, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x07, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x08, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x09, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x0A, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x0B, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x09, 0xBF, 0x00, 0x00, 0x10, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x16, 0x00, 0x18, 0x00, 0x24, 0x00
.byte 0x30, 0x00, 0x48, 0x00, 0x60, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0xFF, 0xFF, 0x5A, 0x5A, 0xA5, 0xA5, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00
.byte 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x26, 0x00, 0x29, 0x00
.byte 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x30, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00
.byte 0x36, 0x00, 0x37, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00
.byte 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x14, 0x00
.byte 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x27, 0x00, 0x4D, 0x00
.byte 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00, 0x60, 0x00, 0x61, 0x00, 0x64, 0x00, 0x66, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x3F, 0x00, 0x18, 0x00, 0xFF, 0xFF, 0x1A, 0x00, 0xFF, 0xFF, 0x1C, 0x00, 0xFF, 0xFF
.byte 0x20, 0x00, 0xFF, 0xFF, 0x22, 0x00, 0xFF, 0xFF, 0x24, 0x00, 0xFF, 0xFF, 0x2A, 0x00, 0xFF, 0x07
.byte 0x50, 0x00, 0xFF, 0xFF, 0x52, 0x00, 0xFF, 0xFF, 0x56, 0x00, 0xFE, 0x0F, 0x58, 0x00, 0xFE, 0x1F
.byte 0x5A, 0x00, 0xFE, 0x0F, 0x5C, 0x00, 0xFF, 0x0F, 0x62, 0x00, 0xFE, 0x1F, 0x64, 0x00, 0xFF, 0x0F
.byte 0x68, 0x00, 0xFE, 0x1F, 0x6C, 0x00, 0xFF, 0x0F, 0x74, 0x00, 0xFE, 0x1F, 0x22, 0x01, 0xFF, 0xFF
.byte 0x24, 0x01, 0xFF, 0xFF, 0x28, 0x01, 0xFF, 0xFF, 0x30, 0x01, 0xFF, 0x0F, 0x32, 0x01, 0xFF, 0x8F
.byte 0x34, 0x01, 0xFF, 0xFF, 0x40, 0x01, 0xFF, 0xFF, 0x42, 0x01, 0xFF, 0xFF, 0x18, 0x00, 0x02, 0x00
.byte 0xEC, 0xF5, 0x7E, 0x02, 0x04, 0x00, 0x01, 0x00, 0xB8, 0xF7, 0x7E, 0x02, 0x0A, 0x00, 0x01, 0x00
.byte 0x5C, 0xF9, 0x7E, 0x02, 0x0C, 0x00, 0x01, 0x00, 0x10, 0xFE, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00
.byte 0x70, 0xFE, 0x7E, 0x02, 0x00, 0x00, 0x04, 0x00, 0x0C, 0xED, 0x7E, 0x02, 0x00, 0x00, 0x12, 0x00
.byte 0x3C, 0xED, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x88, 0xED, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00
.byte 0xB0, 0xED, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00, 0xD8, 0xED, 0x7E, 0x02, 0x00, 0x00, 0x01, 0x00
.byte 0x00, 0xEE, 0x7E, 0x02, 0x03, 0x00, 0x01, 0x00, 0x8C, 0xE6, 0x7E, 0x02, 0x11, 0x00, 0x01, 0x00
.byte 0xA4, 0xE6, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0xC4, 0xE6, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00
.byte 0x00, 0xE7, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0x3C, 0xE7, 0x7E, 0x02, 0x00, 0x00, 0x01, 0x00
.byte 0x7C, 0xE7, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0xC7, 0x7E, 0x02, 0x03, 0x00, 0x01, 0x00
.byte 0x40, 0xC7, 0x7E, 0x02, 0x1F, 0x00, 0x23, 0x00, 0xEC, 0xC7, 0x7E, 0x02, 0x22, 0x00, 0x05, 0x00
.byte 0x2C, 0xC9, 0x7E, 0x02, 0x05, 0x00, 0x06, 0x00, 0xE4, 0xCA, 0x7E, 0x02, 0x04, 0x00, 0x04, 0x00
.byte 0xB8, 0xCB, 0x7E, 0x02, 0x05, 0x00, 0x03, 0x00, 0xEC, 0xCC, 0x7E, 0x02, 0x05, 0x00, 0x03, 0x00
.byte 0xC4, 0xCD, 0x7E, 0x02, 0x04, 0x00, 0x01, 0x00, 0x84, 0xCE, 0x7E, 0x02, 0x17, 0x00, 0x01, 0x00
.byte 0x90, 0xCF, 0x7E, 0x02, 0x0C, 0x00, 0x12, 0x00, 0x30, 0xD1, 0x7E, 0x02, 0x00, 0x00, 0x01, 0x00
.byte 0x7C, 0xC6, 0x7E, 0x02, 0x00, 0x00, 0x01, 0x00, 0xD8, 0xEE, 0x7E, 0x02, 0x00, 0x00, 0x01, 0x00
.byte 0x18, 0xEF, 0x7E, 0x02, 0x00, 0x00, 0x01, 0x00, 0x74, 0xEF, 0x7E, 0x02, 0x00, 0x00, 0x01, 0x00
.byte 0xC8, 0xEF, 0x7E, 0x02, 0x00, 0x00, 0x01, 0x00, 0x04, 0xF0, 0x7E, 0x02, 0x00, 0x00, 0x09, 0x00
.byte 0x3C, 0xF0, 0x7E, 0x02, 0x00, 0x00, 0x5C, 0x00, 0xE0, 0xF0, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00
.byte 0x3C, 0xF1, 0x7E, 0x02, 0x04, 0x00, 0x01, 0x00, 0x64, 0xF1, 0x7E, 0x02, 0x02, 0x00, 0x01, 0x00
.byte 0x3C, 0xF5, 0x7E, 0x02, 0x00, 0x00, 0x21, 0x00, 0xE0, 0xE7, 0x7E, 0x02, 0x00, 0x00, 0x04, 0x00
.byte 0x18, 0xE9, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x48, 0xE9, 0x7E, 0x02, 0x00, 0x00, 0x03, 0x00
.byte 0x70, 0xE9, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00, 0xA8, 0xE9, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00
.byte 0xD0, 0xE9, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00, 0xF8, 0xE9, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00
.byte 0x20, 0xEA, 0x7E, 0x02, 0x00, 0x00, 0x01, 0x00, 0x7C, 0xC6, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00
.byte 0x48, 0xEA, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x78, 0xEA, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00
.byte 0xA8, 0xEA, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00, 0xD0, 0xEA, 0x7E, 0x02, 0x00, 0x00, 0x11, 0x00
.byte 0xF8, 0xEA, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x34, 0xEB, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00
.byte 0x64, 0xEB, 0x7E, 0x02, 0x00, 0x00, 0x04, 0x00, 0x8C, 0xEB, 0x7E, 0x02, 0x00, 0x00, 0x01, 0x00
.byte 0x7C, 0xC6, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00, 0xCC, 0xEB, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00
.byte 0xF8, 0xEB, 0x7E, 0x02, 0x00, 0x00, 0x03, 0x00, 0x34, 0xEC, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00
.byte 0x94, 0xEC, 0x7E, 0x02, 0x00, 0x00, 0x02, 0x00, 0xD0, 0xEC, 0x7E, 0x02, 0x48, 0x00, 0x01, 0x00
.byte 0xD8, 0xE0, 0x7E, 0x02, 0x03, 0x00, 0x01, 0x00, 0xC4, 0xE1, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00
.byte 0x04, 0xE2, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0x1C, 0xE2, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00
.byte 0x5C, 0xE2, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0xAC, 0xE2, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00
.byte 0xC4, 0xE2, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0xDC, 0xE2, 0x7E, 0x02, 0x28, 0x00, 0x01, 0x00
.byte 0xF4, 0xE2, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0x0C, 0xE3, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00
.byte 0x4C, 0xE3, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0x64, 0xE3, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00
.byte 0x7C, 0xE3, 0x7E, 0x02, 0x10, 0x00, 0x01, 0x00, 0x98, 0xE3, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00
.byte 0xB0, 0xE3, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0xC8, 0xE3, 0x7E, 0x02, 0x03, 0x00, 0x01, 0x00
.byte 0xE0, 0xE3, 0x7E, 0x02, 0x03, 0x00, 0x01, 0x00, 0x2C, 0xE4, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00
.byte 0x34, 0xE5, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0x8C, 0xE5, 0x7E, 0x02, 0x02, 0x00, 0x01, 0x00
.byte 0xCC, 0xE5, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00, 0x0C, 0xE6, 0x7E, 0x02, 0x01, 0x00, 0x01, 0x00
.byte 0x4C, 0xE6, 0x7E, 0x02, 0x32, 0x2E, 0x38, 0x33, 0x2E, 0x30, 0x30, 0x00, 0x01, 0x00, 0x04, 0x00
.byte 0x08, 0x00, 0x00, 0x00