mirror of
https://github.com/pret/pmd-sky.git
synced 2026-04-24 14:59:13 -05:00
Compared/synced by hand from the pokeheartgold asm. Some of the functions had labels corresponding to libgcc counterparts; rename them all for consistency. Note that some of the functions have multiple names in pokeheartgold (of which at most one is actually used). Instead of polluting the xMAP files with multiple symbols (some with zero length), which makes it really hard for scripts to parse, just add these alternate names as comments. This makes them searchable without having an effect on build artifacts.
19368 lines
345 KiB
ArmAsm
19368 lines
345 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "asm/include/wram.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start NitroSpMain
|
|
NitroSpMain: ; 0x037F8000
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x210
|
|
bl sub_037FC9EC
|
|
bl sub_037FBF64
|
|
add r2, sp, #4
|
|
mov r0, #0x20
|
|
mov r1, #2
|
|
bl sub_027F55B8
|
|
ldr r0, [sp, #4]
|
|
add r2, sp, #0x10
|
|
mov r0, r0, lsl #3
|
|
str r0, [sp, #4]
|
|
mov r1, #0x100
|
|
bl sub_027F55B8
|
|
ldr r0, [sp, #4]
|
|
add r2, sp, #0x110
|
|
add r0, r0, #0x100
|
|
mov r1, #0x100
|
|
bl sub_027F55B8
|
|
mov r0, #0x1d
|
|
mov r1, #1
|
|
add r2, sp, #0
|
|
mov r6, #0
|
|
bl sub_027F55B8
|
|
ldrb r0, [sp]
|
|
cmp r0, #0xff
|
|
moveq r0, r6
|
|
beq _037F807C
|
|
tst r0, #0x50
|
|
movne r0, #1
|
|
moveq r0, r6
|
|
_037F807C:
|
|
cmp r0, #0
|
|
beq _037F8150
|
|
bl sub_037F8484
|
|
mov r8, r0
|
|
mov fp, #1
|
|
and r7, r8, #0x40
|
|
mov sl, #0
|
|
add r5, sp, #0x10
|
|
mov r4, fp
|
|
b _037F8144
|
|
_037F80A4:
|
|
ldr r0, _037F8454 ; =0x0000FFFF
|
|
add sb, r5, sl, lsl #8
|
|
mov r1, sb
|
|
mov r2, #0x70
|
|
bl sub_037F846C
|
|
mov r2, sb
|
|
ldrh r1, [r2, #0x72]
|
|
cmp r0, r1
|
|
bne _037F8138
|
|
ldrh r0, [r2, #0x70]
|
|
cmp r0, #0x80
|
|
bhs _037F8138
|
|
ldr r0, _037F8454 ; =0x0000FFFF
|
|
mov r2, #0x8a
|
|
add r1, sb, #0x74
|
|
bl sub_037F846C
|
|
mov r2, sb
|
|
ldrh r1, [r2, #0xfe]
|
|
cmp r0, r1
|
|
bne _037F8138
|
|
ldrh r1, [r2, #0x76]
|
|
ldrb r0, [r2, #0x75]
|
|
tst r1, r4, lsl r0
|
|
beq _037F8138
|
|
tst r8, r1
|
|
ldrneh r1, [sb, #0x64]
|
|
andne r0, r0, #7
|
|
bicne r1, r1, #7
|
|
orrne r0, r1, r0
|
|
strneh r0, [sb, #0x64]
|
|
add r0, r5, sl, lsl #8
|
|
ldrh r0, [r0, #0x76]
|
|
mvn r0, r0
|
|
tst r7, r0
|
|
movne r6, #3
|
|
bne _037F81F0
|
|
orr r6, r6, fp, lsl sl
|
|
_037F8138:
|
|
add r0, sl, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov sl, r0, lsr #0x10
|
|
_037F8144:
|
|
cmp sl, #2
|
|
blo _037F80A4
|
|
b _037F81B4
|
|
_037F8150:
|
|
bl sub_037F8484
|
|
tst r0, #0x40
|
|
movne r6, #3
|
|
bne _037F81F0
|
|
ldr r8, _037F8454 ; =0x0000FFFF
|
|
mov sb, #0
|
|
add r7, sp, #0x10
|
|
mov r4, #1
|
|
mov r5, #0x70
|
|
_037F8174:
|
|
mov r0, r8
|
|
mov r2, r5
|
|
add r1, r7, sb, lsl #8
|
|
bl sub_037F846C
|
|
add r2, r7, sb, lsl #8
|
|
ldrh r1, [r2, #0x72]
|
|
cmp r0, r1
|
|
bne _037F81A0
|
|
ldrh r0, [r2, #0x70]
|
|
cmp r0, #0x80
|
|
orrlo r6, r6, r4, lsl sb
|
|
_037F81A0:
|
|
add r0, sb, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov sb, r0, lsr #0x10
|
|
cmp sb, #2
|
|
blo _037F8174
|
|
_037F81B4:
|
|
cmp r6, #1
|
|
cmpne r6, #2
|
|
beq _037F81F0
|
|
cmp r6, #3
|
|
bne _037F81EC
|
|
ldrh r1, [sp, #0x80]
|
|
add r0, sp, #0x100
|
|
add r1, r1, #1
|
|
ldrh r0, [r0, #0x80]
|
|
and r1, r1, #0x7f
|
|
cmp r1, r0
|
|
moveq r6, #2
|
|
movne r6, #1
|
|
b _037F81F0
|
|
_037F81EC:
|
|
mov r6, #0
|
|
_037F81F0:
|
|
cmp r6, #3
|
|
blt _037F820C
|
|
ldr r1, _037F8458 ; =0x027FFC80
|
|
mvn r0, #0
|
|
mov r2, #0x74
|
|
bl sub_037FDFD0
|
|
b _037F82C8
|
|
_037F820C:
|
|
cmp r6, #0
|
|
beq _037F82B8
|
|
ldr r0, _037F845C ; =0xFFFFFF2A
|
|
mov r1, r6, lsl #8
|
|
add r0, sp, r0
|
|
ldrb r0, [r0, r6, lsl #8]
|
|
cmp r0, #0xa
|
|
bhs _037F8258
|
|
add r0, sp, #0x10
|
|
mov r3, #0xa
|
|
mov r2, #0
|
|
add r1, r0, r1
|
|
b _037F824C
|
|
_037F8240:
|
|
add r0, r1, r3, lsl #1
|
|
strh r2, [r0, #-0xfc]
|
|
sub r3, r3, #1
|
|
_037F824C:
|
|
ldrb r0, [r1, #-0xe6]
|
|
cmp r3, r0
|
|
bgt _037F8240
|
|
_037F8258:
|
|
ldr r0, _037F8460 ; =0xFFFFFF60
|
|
mov r1, r6, lsl #8
|
|
add r0, sp, r0
|
|
ldrb r0, [r0, r6, lsl #8]
|
|
cmp r0, #0x1a
|
|
bhs _037F829C
|
|
add r0, sp, #0x10
|
|
mov r3, #0x1a
|
|
mov r2, #0
|
|
add r1, r0, r1
|
|
b _037F8290
|
|
_037F8284:
|
|
add r0, r1, r3, lsl #1
|
|
strh r2, [r0, #-0xe6]
|
|
sub r3, r3, #1
|
|
_037F8290:
|
|
ldrb r0, [r1, #-0xb0]
|
|
cmp r3, r0
|
|
bgt _037F8284
|
|
_037F829C:
|
|
ldr r1, _037F8458 ; =0x027FFC80
|
|
add r2, sp, #0x10
|
|
sub r0, r6, #1
|
|
add r0, r2, r0, lsl #8
|
|
mov r2, #0x74
|
|
bl sub_037FDFEC
|
|
b _037F82C8
|
|
_037F82B8:
|
|
ldr r1, _037F8458 ; =0x027FFC80
|
|
mov r0, #0
|
|
mov r2, #0x74
|
|
bl sub_037FDFD0
|
|
_037F82C8:
|
|
add r2, sp, #8
|
|
mov r0, #0x36
|
|
mov r1, #6
|
|
bl sub_027F55B8
|
|
ldr r4, _037F8458 ; =0x027FFC80
|
|
add r0, sp, #8
|
|
add r1, r4, #0x74
|
|
mov r2, #6
|
|
bl sub_037FE12C
|
|
add r2, sp, #2
|
|
mov r0, #0x3c
|
|
mov r1, #2
|
|
bl sub_027F55B8
|
|
ldrh r0, [sp, #2]
|
|
mov r0, r0, lsl #0xf
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_038073D4
|
|
strh r0, [r4, #0x7a]
|
|
bl sub_037FE2B4
|
|
mov r0, #8
|
|
bl sub_037FCA94
|
|
mov r4, r0
|
|
mov r0, #8
|
|
bl sub_037FCAA8
|
|
mov r1, r0
|
|
mov r2, r4
|
|
mov r0, #8
|
|
mov r3, #1
|
|
bl sub_037FCE24
|
|
mov r4, r0
|
|
mov r0, #8
|
|
bl sub_037FCA94
|
|
sub r2, r0, r4
|
|
mov r0, r4
|
|
mov r1, #0
|
|
bl sub_037FE070
|
|
mov r1, r4
|
|
mov r0, #8
|
|
bl sub_037FCB90
|
|
mov r0, #8
|
|
bl sub_037FCA94
|
|
mov r4, r0
|
|
mov r0, #8
|
|
bl sub_037FCAA8
|
|
mov r1, r0
|
|
mov r2, r4
|
|
mov r0, #8
|
|
bl sub_037FCECC
|
|
movs r4, r0
|
|
bpl _037F8394
|
|
bl sub_037FDE70
|
|
_037F8394:
|
|
mov r1, r4
|
|
mov r0, #8
|
|
bl sub_037FCDF0
|
|
mov r1, r4
|
|
mov r0, #8
|
|
bl sub_037FCF6C
|
|
cmp r0, #0x2100
|
|
bhs _037F83B8
|
|
bl sub_037FDE70
|
|
_037F83B8:
|
|
mov r0, #6
|
|
bl sub_037FEEF8
|
|
bl sub_037FE5C0
|
|
ldr r1, _037F8464 ; =sub_037F84BC
|
|
mov r0, #1
|
|
bl sub_037FB7BC
|
|
mov r0, #1
|
|
bl sub_037FB8F0
|
|
ldr r3, _037F8468 ; =0x04000004
|
|
mov r0, #1
|
|
ldrh r1, [r3]
|
|
ldrh r1, [r3]
|
|
add r2, r3, #0x204
|
|
orr r1, r1, #8
|
|
strh r1, [r3]
|
|
ldrh r1, [r2]
|
|
strh r0, [r2]
|
|
bl ClearIrqFlag
|
|
mvn r0, #0
|
|
bl sub_03802618
|
|
mov r0, #0xf
|
|
bl sub_038026E0
|
|
mov r0, #0xc
|
|
bl sub_027F5CC4
|
|
mov r0, r4
|
|
bl sub_03805248
|
|
mov r0, #2
|
|
bl sub_03803874
|
|
mov r4, #0
|
|
_037F842C:
|
|
bl sub_037F8478
|
|
bl sub_037FDDB4
|
|
cmp r0, #0
|
|
beq _037F8448
|
|
mov r0, r4
|
|
bl sub_03806610
|
|
bl sub_037FDDF8
|
|
_037F8448:
|
|
bl sub_03806848
|
|
bl sub_038036BC
|
|
b _037F842C
|
|
.align 2, 0
|
|
_037F8454: .word 0x0000FFFF
|
|
_037F8458: .word 0x027FFC80
|
|
_037F845C: .word 0xFFFFFF2A
|
|
_037F8460: .word 0xFFFFFF60
|
|
_037F8464: .word sub_037F84BC
|
|
_037F8468: .word 0x04000004
|
|
arm_func_end NitroSpMain
|
|
|
|
arm_func_start sub_037F846C
|
|
sub_037F846C: ; 0x037F846C
|
|
ldr ip, _037F8474 ; =sub_03803804
|
|
bx ip
|
|
.align 2, 0
|
|
_037F8474: .word sub_03803804 + 1
|
|
arm_func_end sub_037F846C
|
|
|
|
arm_func_start sub_037F8478
|
|
sub_037F8478: ; 0x037F8478
|
|
ldr ip, _037F8480 ; =sub_038037D2
|
|
bx ip
|
|
.align 2, 0
|
|
_037F8480: .word sub_038037D2 + 1
|
|
arm_func_end sub_037F8478
|
|
|
|
arm_func_start sub_037F8484
|
|
sub_037F8484: ; 0x037F8484
|
|
ldr r1, _037F84B8 ; =0x027FFE1D
|
|
mov r0, #0
|
|
ldrb r1, [r1]
|
|
cmp r1, #0x80
|
|
orreq r0, r0, #0x40
|
|
moveq r0, r0, lsl #0x10
|
|
moveq r0, r0, lsr #0x10
|
|
bxeq lr
|
|
cmp r1, #0x40
|
|
orreq r0, r0, #0x80
|
|
moveq r0, r0, lsl #0x10
|
|
moveq r0, r0, lsr #0x10
|
|
bx lr
|
|
.align 2, 0
|
|
_037F84B8: .word 0x027FFE1D
|
|
arm_func_end sub_037F8484
|
|
|
|
arm_func_start sub_037F84BC
|
|
sub_037F84BC: ; 0x037F84BC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _037F84DC ; =_03809E50
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _037F84D4
|
|
bl sub_038050FC
|
|
_037F84D4:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F84DC: .word _03809E50
|
|
arm_func_end sub_037F84BC
|
|
|
|
arm_func_start sub_037F84E0
|
|
sub_037F84E0: ; 0x037F84E0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r7, _037F858C ; =0x0380FFF4
|
|
mov r0, #0
|
|
ldr r8, [r7]
|
|
ldr r4, _037F8590 ; =0x01000010
|
|
strh r0, [r8, #0x10]
|
|
ldr sb, _037F8594 ; =0x0000FFFF
|
|
strh r0, [r8, #0x14]
|
|
add r6, sp, #0
|
|
mov r5, r0
|
|
_037F8508:
|
|
ldr r0, [r7]
|
|
mov r1, r6
|
|
ldr r0, [r0, #0x308]
|
|
mov r2, r5
|
|
bl sub_037FC760
|
|
cmp r0, #0
|
|
beq _037F852C
|
|
mov r0, r6
|
|
bl sub_037F8704
|
|
_037F852C:
|
|
mov r0, r4
|
|
bl ClearIeFlag
|
|
ldrh r1, [r8, #0x10]
|
|
strh r1, [r8, #0x12]
|
|
mov r1, r1, lsl #1
|
|
ldrh r1, [r8, r1]
|
|
cmp r1, sb
|
|
bne _037F8560
|
|
ldrh r1, [r8, #0x10]
|
|
add r1, r1, #1
|
|
strh r1, [r8, #0x10]
|
|
bl sub_037FB8F0
|
|
b _037F8508
|
|
_037F8560:
|
|
bl sub_037FB8F0
|
|
ldrh r0, [r8, #0x12]
|
|
bl sub_037F8650
|
|
strh r0, [r8, #0x14]
|
|
ldrh r0, [r8, #0x14]
|
|
add r0, r8, r0, lsl #3
|
|
ldr r0, [r0, #0xc0]
|
|
mov lr, pc
|
|
bx r0
|
|
_037F8584: ; 0x037F8584
|
|
strh sb, [r8, #0x14]
|
|
b _037F8508
|
|
.align 2, 0
|
|
_037F858C: .word 0x0380FFF4
|
|
_037F8590: .word 0x01000010
|
|
_037F8594: .word 0x0000FFFF
|
|
arm_func_end sub_037F84E0
|
|
|
|
arm_func_start sub_037F8598
|
|
sub_037F8598: ; 0x037F8598
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r2, _037F8648 ; =0x0380FFF4
|
|
mov r7, r0
|
|
ldr r4, [r2]
|
|
ldr r0, _037F864C ; =0x01000010
|
|
mov r6, r1
|
|
add r5, r4, #0xbc
|
|
bl ClearIeFlag
|
|
add r2, r5, r6, lsl #3
|
|
ldrh r1, [r2, #2]
|
|
mov ip, r6, lsl #3
|
|
cmp r1, #0
|
|
bne _037F8610
|
|
mov r3, #1
|
|
strh r3, [r2, #2]
|
|
rsb r1, r3, #0x10000
|
|
strh r1, [r5, ip]
|
|
add r1, r4, r7, lsl #1
|
|
ldrh r2, [r1, #8]
|
|
rsb r1, r3, #0x10000
|
|
cmp r2, r1
|
|
mov r1, r7, lsl #1
|
|
streqh r6, [r4, r1]
|
|
addne r1, r4, r2, lsl #3
|
|
strneh r6, [r1, #0xbc]
|
|
add r1, r4, r7, lsl #1
|
|
strh r6, [r1, #8]
|
|
ldrh r1, [r4, #0x10]
|
|
cmp r7, r1
|
|
strlth r7, [r4, #0x10]
|
|
_037F8610:
|
|
bl sub_037FB8F0
|
|
cmp r7, #3
|
|
beq _037F8640
|
|
ldrh r0, [r4, #0x12]
|
|
cmp r0, #3
|
|
bne _037F8640
|
|
ldr r0, _037F8648 ; =0x0380FFF4
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
mov r2, r1
|
|
ldr r0, [r0, #0x308]
|
|
bl sub_037FC6D4
|
|
_037F8640:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F8648: .word 0x0380FFF4
|
|
_037F864C: .word 0x01000010
|
|
arm_func_end sub_037F8598
|
|
|
|
arm_func_start sub_037F8650
|
|
sub_037F8650: ; 0x037F8650
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _037F86BC ; =0x0380FFF4
|
|
mov r5, r0
|
|
ldr r0, _037F86C0 ; =0x01000010
|
|
ldr r4, [r1]
|
|
bl ClearIeFlag
|
|
mov lr, r5, lsl #1
|
|
ldrh r5, [r4, lr]
|
|
ldr r2, _037F86C4 ; =0x0000FFFF
|
|
cmp r5, r2
|
|
beq _037F86AC
|
|
add ip, r4, #0xbc
|
|
add r1, ip, r5, lsl #3
|
|
mov r3, #0
|
|
strh r3, [r1, #2]
|
|
mov r3, r5, lsl #3
|
|
ldrh r1, [ip, r3]
|
|
cmp r1, r2
|
|
streqh r2, [r4, lr]
|
|
addeq r1, r4, lr
|
|
streqh r2, [r1, #8]
|
|
strneh r1, [r4, lr]
|
|
strneh r2, [ip, r3]
|
|
_037F86AC:
|
|
bl sub_037FB8F0
|
|
mov r0, r5
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F86BC: .word 0x0380FFF4
|
|
_037F86C0: .word 0x01000010
|
|
_037F86C4: .word 0x0000FFFF
|
|
arm_func_end sub_037F8650
|
|
|
|
arm_func_start sub_037F86C8
|
|
sub_037F86C8: ; 0x037F86C8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _037F8700 ; =0x0380FFF4
|
|
add r1, sp, #0
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
ldr r0, [r0, #0x308]
|
|
bl sub_037FC760
|
|
add r0, sp, #0
|
|
bl sub_037F8704
|
|
mov r0, #3
|
|
mov r1, #0xc
|
|
bl sub_037F8598
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F8700: .word 0x0380FFF4
|
|
arm_func_end sub_037F86C8
|
|
|
|
arm_func_start sub_037F8704
|
|
sub_037F8704: ; 0x037F8704
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
beq _037F8730
|
|
ldr r0, _037F8738 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x200
|
|
bl sub_037F873C
|
|
mov r0, #2
|
|
mov r1, #0xb
|
|
bl sub_037F8598
|
|
_037F8730:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F8738: .word 0x0380FFF4
|
|
arm_func_end sub_037F8704
|
|
|
|
arm_func_start sub_037F873C
|
|
sub_037F873C: ; 0x037F873C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r0, #0x1000000
|
|
mov r4, r1
|
|
bl ClearIeFlag
|
|
ldrh r1, [r5, #8]
|
|
cmp r1, #0
|
|
mvneq r1, #0
|
|
streq r1, [r4]
|
|
streq r4, [r5]
|
|
ldrne r1, [r5, #4]
|
|
strne r1, [r4]
|
|
strne r4, [r1, #4]
|
|
mvn r1, #0
|
|
str r1, [r4, #4]
|
|
ldrh r2, [r5, #0xa]
|
|
ldr r1, _037F87A8 ; =0x0000BF1D
|
|
strh r2, [r4, #8]
|
|
strh r1, [r4, #0xa]
|
|
str r4, [r5, #4]
|
|
ldrh r1, [r5, #8]
|
|
add r1, r1, #1
|
|
strh r1, [r5, #8]
|
|
bl sub_037FB8F0
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F87A8: .word 0x0000BF1D
|
|
arm_func_end sub_037F873C
|
|
|
|
arm_func_start sub_037F87AC
|
|
sub_037F87AC: ; 0x037F87AC
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
ldrh r2, [r4, #0xa]
|
|
ldr r1, _037F8868 ; =0x0000BF1D
|
|
mov r5, r0
|
|
cmp r2, r1
|
|
movne r0, #1
|
|
bne _037F8860
|
|
ldrh r1, [r4, #8]
|
|
ldrh r0, [r5, #0xa]
|
|
cmp r1, r0
|
|
movne r0, #2
|
|
bne _037F8860
|
|
mov r0, #0x1000000
|
|
bl ClearIeFlag
|
|
ldrh r1, [r5, #8]
|
|
sub r1, r1, #1
|
|
strh r1, [r5, #8]
|
|
ldrh r1, [r5, #8]
|
|
cmp r1, #0
|
|
mvneq r1, #0
|
|
streq r1, [r5]
|
|
streq r1, [r5, #4]
|
|
beq _037F8850
|
|
ldr r1, [r5]
|
|
cmp r4, r1
|
|
ldreq r2, [r4, #4]
|
|
mvneq r1, #0
|
|
streq r2, [r5]
|
|
streq r1, [r2]
|
|
beq _037F8850
|
|
ldr r1, [r5, #4]
|
|
ldr r2, [r4]
|
|
cmp r4, r1
|
|
streq r2, [r5, #4]
|
|
mvneq r1, #0
|
|
streq r1, [r2, #4]
|
|
ldrne r1, [r4, #4]
|
|
strne r2, [r1]
|
|
ldmneia r4, {r1, r2}
|
|
strne r2, [r1, #4]
|
|
_037F8850:
|
|
mov r1, #0
|
|
strh r1, [r4, #8]
|
|
bl sub_037FB8F0
|
|
mov r0, #0
|
|
_037F8860:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F8868: .word 0x0000BF1D
|
|
arm_func_end sub_037F87AC
|
|
|
|
arm_func_start sub_037F886C
|
|
sub_037F886C: ; 0x037F886C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r2, _037F8900 ; =0x0380FFF4
|
|
movs r3, r1
|
|
ldr r1, [r2]
|
|
mov r5, r0
|
|
moveq r0, #0
|
|
beq _037F88F8
|
|
ldr r0, [r1, #0x17c]
|
|
cmp r0, #0
|
|
beq _037F88A0
|
|
cmp r0, #1
|
|
beq _037F88B8
|
|
b _037F88CC
|
|
_037F88A0:
|
|
ldr r0, [r1, #0x180]
|
|
ldr r1, [r1, #0x184]
|
|
add r2, r3, #0xc
|
|
bl sub_037FCC74
|
|
mov r4, r0
|
|
b _037F88CC
|
|
_037F88B8:
|
|
ldr r1, [r1, #0x180]
|
|
add r0, r3, #0xc
|
|
mov lr, pc
|
|
bx r1
|
|
_037F88C8:
|
|
mov r4, r0
|
|
_037F88CC:
|
|
cmp r4, #0
|
|
moveq r0, #0
|
|
beq _037F88F8
|
|
ldr r1, _037F8904 ; =0x0000BF1D
|
|
mov r0, r5
|
|
strh r1, [r4, #0xa]
|
|
mov r2, #0
|
|
mov r1, r4
|
|
strh r2, [r4, #8]
|
|
bl sub_037F89F4
|
|
mov r0, r4
|
|
_037F88F8:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F8900: .word 0x0380FFF4
|
|
_037F8904: .word 0x0000BF1D
|
|
arm_func_end sub_037F886C
|
|
|
|
arm_func_start sub_037F8908
|
|
sub_037F8908: ; 0x037F8908
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r4, r1
|
|
ldr r5, _037F8980 ; =0x0380FFF4
|
|
ldrh r3, [r4, #0xa]
|
|
ldr r2, _037F8984 ; =0x0000BF1D
|
|
ldr r5, [r5]
|
|
cmp r3, r2
|
|
movne r0, #1
|
|
bne _037F8978
|
|
bl sub_037F87AC
|
|
movs r6, r0
|
|
bne _037F8974
|
|
ldr r0, [r5, #0x17c]
|
|
cmp r0, #0
|
|
beq _037F8950
|
|
cmp r0, #1
|
|
beq _037F8964
|
|
b _037F8974
|
|
_037F8950:
|
|
ldr r0, [r5, #0x180]
|
|
ldr r1, [r5, #0x184]
|
|
mov r2, r4
|
|
bl sub_037FCD84
|
|
b _037F8974
|
|
_037F8964:
|
|
ldr r1, [r5, #0x184]
|
|
mov r0, r4
|
|
mov lr, pc
|
|
bx r1
|
|
_037F8974:
|
|
mov r0, r6
|
|
_037F8978:
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F8980: .word 0x0380FFF4
|
|
_037F8984: .word 0x0000BF1D
|
|
arm_func_end sub_037F8908
|
|
|
|
arm_func_start sub_037F8988
|
|
sub_037F8988: ; 0x037F8988
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r6, r2
|
|
ldrh r3, [r6, #0xa]
|
|
ldr r2, _037F89F0 ; =0x0000BF1D
|
|
mov r4, r0
|
|
cmp r3, r2
|
|
mov r7, r1
|
|
movne r0, #1
|
|
bne _037F89E8
|
|
mov r0, #0x1000000
|
|
bl ClearIeFlag
|
|
mov r5, r0
|
|
mov r0, r4
|
|
mov r1, r6
|
|
bl sub_037F87AC
|
|
movs r4, r0
|
|
bne _037F89DC
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl sub_037F89F4
|
|
mov r4, r0
|
|
_037F89DC:
|
|
mov r0, r5
|
|
bl sub_037FB8F0
|
|
mov r0, r4
|
|
_037F89E8:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F89F0: .word 0x0000BF1D
|
|
arm_func_end sub_037F8988
|
|
|
|
arm_func_start sub_037F89F4
|
|
sub_037F89F4: ; 0x037F89F4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
ldrh r2, [r4, #0xa]
|
|
ldr r1, _037F8A7C ; =0x0000BF1D
|
|
mov r5, r0
|
|
cmp r2, r1
|
|
movne r0, #1
|
|
bne _037F8A74
|
|
ldrh r0, [r4, #8]
|
|
cmp r0, #0
|
|
movne r0, #2
|
|
bne _037F8A74
|
|
mov r0, #0x1000000
|
|
bl ClearIeFlag
|
|
ldrh r1, [r5, #8]
|
|
cmp r1, #0
|
|
mvneq r1, #0
|
|
streq r1, [r4]
|
|
streq r4, [r5]
|
|
ldrne r1, [r5, #4]
|
|
strne r1, [r4]
|
|
strne r4, [r1, #4]
|
|
mvn r1, #0
|
|
str r1, [r4, #4]
|
|
ldrh r1, [r5, #0xa]
|
|
strh r1, [r4, #8]
|
|
str r4, [r5, #4]
|
|
ldrh r1, [r5, #8]
|
|
add r1, r1, #1
|
|
strh r1, [r5, #8]
|
|
bl sub_037FB8F0
|
|
mov r0, #0
|
|
_037F8A74:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F8A7C: .word 0x0000BF1D
|
|
arm_func_end sub_037F89F4
|
|
|
|
arm_func_start sub_037F8A80
|
|
sub_037F8A80: ; 0x037F8A80
|
|
ldr r0, [r0, #4]
|
|
bx lr
|
|
arm_func_end sub_037F8A80
|
|
|
|
arm_func_start sub_037F8A88
|
|
sub_037F8A88: ; 0x037F8A88
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r4, _037F8D38 ; =0x0380FFF4
|
|
mov r3, #0
|
|
ldr r2, [r4]
|
|
mov r6, r3
|
|
add r0, r2, #0x24
|
|
add r5, r0, #0x400
|
|
ldrh r0, [r5, #4]
|
|
cmp r0, #0
|
|
bne _037F8D30
|
|
ldr r0, [r2, #0x200]
|
|
sub r2, r3, #1
|
|
str r0, [r5]
|
|
cmp r0, r2
|
|
beq _037F8D30
|
|
ldr r2, [r4]
|
|
ldrh r4, [r0, #0xe]
|
|
add ip, r2, #0x300
|
|
ldrh r2, [ip, #0x3e]
|
|
add r4, r0, r4, lsl #1
|
|
cmp r2, #0
|
|
movne r0, #1
|
|
strneh r0, [r4, #0x12]
|
|
movne r0, #6
|
|
strneh r0, [r4, #0x14]
|
|
bne _037F8CE8
|
|
ldrh r7, [r0, #0xc]
|
|
ldrh r2, [r4, #0x10]
|
|
cmp r7, r2
|
|
movne r0, #0xd
|
|
strneh r0, [r4, #0x14]
|
|
bne _037F8CE8
|
|
and r2, r7, #0xff00
|
|
cmp r2, #0x100
|
|
bgt _037F8B24
|
|
bge _037F8B70
|
|
cmp r2, #0
|
|
beq _037F8B40
|
|
b _037F8C50
|
|
_037F8B24:
|
|
cmp r2, #0x200
|
|
bgt _037F8B34
|
|
beq _037F8B90
|
|
b _037F8C50
|
|
_037F8B34:
|
|
cmp r2, #0x300
|
|
beq _037F8C3C
|
|
b _037F8C50
|
|
_037F8B40:
|
|
ldrh r6, [r5, #4]
|
|
ldr r1, _037F8D3C ; =_027F7648
|
|
tst r6, #1
|
|
and r2, r7, #0xff
|
|
mov r6, #1
|
|
mov lr, #0xb
|
|
movne r3, #2
|
|
bne _037F8C58
|
|
ldrh r7, [ip, #0x4c]
|
|
cmp r7, #0x20
|
|
movlo r3, r6
|
|
b _037F8C58
|
|
_037F8B70:
|
|
ldrh r6, [ip, #0x4c]
|
|
ldr r1, _037F8D40 ; =_027F75C0
|
|
cmp r6, #0x40
|
|
and r2, r7, #0xff
|
|
mov r6, #2
|
|
mov lr, #5
|
|
movne r3, #1
|
|
b _037F8C58
|
|
_037F8B90:
|
|
and r2, r7, #0xff
|
|
cmp r2, #0x40
|
|
bhs _037F8BB8
|
|
ldrh r1, [ip, #0x4c]
|
|
mov r6, #4
|
|
cmp r1, #0x10
|
|
ldr r1, _037F8D44 ; =_027F77B0
|
|
movlo r3, #1
|
|
mov lr, #0x17
|
|
b _037F8C58
|
|
_037F8BB8:
|
|
cmp r2, #0x80
|
|
bhs _037F8BE8
|
|
ldrh r1, [ip, #0x4c]
|
|
mov r6, #8
|
|
cmp r1, #0x40
|
|
sub r1, r2, #0x40
|
|
mov r2, r1, lsl #0x10
|
|
ldr r1, _037F8D48 ; =_027F7618
|
|
movne r3, #1
|
|
mov r2, r2, lsr #0x10
|
|
mov lr, #6
|
|
b _037F8C58
|
|
_037F8BE8:
|
|
ldrh r1, [ip, #0x4c]
|
|
cmp r2, #0xc0
|
|
bhs _037F8C18
|
|
cmp r1, #0x10
|
|
sub r1, r2, #0x80
|
|
mov r2, r1, lsl #0x10
|
|
ldr r1, _037F8D4C ; =_027F76F8
|
|
movlo r3, #1
|
|
mov r2, r2, lsr #0x10
|
|
mov r6, #0x10
|
|
mov lr, #0x17
|
|
b _037F8C58
|
|
_037F8C18:
|
|
cmp r1, #0x10
|
|
sub r1, r2, #0xc0
|
|
mov r2, r1, lsl #0x10
|
|
ldr r1, _037F8D50 ; =_027F75E8
|
|
movlo r3, #1
|
|
mov r2, r2, lsr #0x10
|
|
mov r6, #0x20
|
|
mov lr, #6
|
|
b _037F8C58
|
|
_037F8C3C:
|
|
ldr r1, _037F8D54 ; =_027F76A0
|
|
and r2, r7, #0xff
|
|
mov r6, #0x40
|
|
mov lr, #0xb
|
|
b _037F8C58
|
|
_037F8C50:
|
|
mov r2, #1
|
|
mov lr, #0
|
|
_037F8C58:
|
|
cmp r2, lr
|
|
movhi r3, #3
|
|
bhi _037F8C88
|
|
mov lr, r2, lsl #3
|
|
ldrh r7, [r0, #0xe]
|
|
ldrh ip, [r1, lr]
|
|
cmp r7, ip
|
|
addhs ip, r1, lr
|
|
ldrhsh lr, [r4, #0x12]
|
|
ldrhsh ip, [ip, #2]
|
|
cmphs lr, ip
|
|
movlo r3, #4
|
|
_037F8C88:
|
|
cmp r3, #0
|
|
movne r0, #1
|
|
strneh r0, [r4, #0x12]
|
|
strneh r3, [r4, #0x14]
|
|
bne _037F8CE8
|
|
ldrh r3, [r5, #4]
|
|
add r1, r1, r2, lsl #3
|
|
orr r2, r3, r6
|
|
strh r2, [r5, #4]
|
|
ldr r2, [r1, #4]
|
|
add r1, r4, #0x10
|
|
mov lr, pc
|
|
bx r2
|
|
_037F8CBC:
|
|
strh r0, [r4, #0x14]
|
|
ldrh r0, [r4, #0x14]
|
|
cmp r0, #0x80
|
|
beq _037F8D30
|
|
cmp r0, #0x81
|
|
bne _037F8CE8
|
|
ldrh r1, [r5, #4]
|
|
mvn r0, r6
|
|
and r0, r1, r0
|
|
strh r0, [r5, #4]
|
|
b _037F8D0C
|
|
_037F8CE8:
|
|
ldrh r1, [r5, #4]
|
|
mvn r0, r6
|
|
and r0, r1, r0
|
|
strh r0, [r5, #4]
|
|
ldr r0, _037F8D38 ; =0x0380FFF4
|
|
ldr r1, [r5]
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x200
|
|
bl sub_037F8D58
|
|
_037F8D0C:
|
|
ldr r0, _037F8D38 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x200
|
|
ldrh r0, [r0, #8]
|
|
cmp r0, #0
|
|
beq _037F8D30
|
|
mov r0, #2
|
|
mov r1, #0xb
|
|
bl sub_037F8598
|
|
_037F8D30:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F8D38: .word 0x0380FFF4
|
|
_037F8D3C: .word _027F7648
|
|
_037F8D40: .word _027F75C0
|
|
_037F8D44: .word _027F77B0
|
|
_037F8D48: .word _027F7618
|
|
_037F8D4C: .word _027F76F8
|
|
_037F8D50: .word _027F75E8
|
|
_037F8D54: .word _027F76A0
|
|
arm_func_end sub_037F8A88
|
|
|
|
arm_func_start sub_037F8D58
|
|
sub_037F8D58: ; 0x037F8D58
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r2, _037F8DDC ; =0x0380FFF4
|
|
mov r5, r0
|
|
ldr r3, [r2]
|
|
mov r4, r1
|
|
add r2, r3, #0x100
|
|
ldrh r2, [r2, #0xfc]
|
|
cmp r2, #0
|
|
beq _037F8D98
|
|
mov r2, r4
|
|
add r1, r3, #0x1f4
|
|
bl sub_037F8988
|
|
mov r0, #2
|
|
mov r1, #0x13
|
|
bl sub_037F8598
|
|
b _037F8DD4
|
|
_037F8D98:
|
|
ldr r0, [r3, #0x304]
|
|
mov r2, #0
|
|
bl sub_037FC6D4
|
|
cmp r0, #0
|
|
beq _037F8DBC
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_037F87AC
|
|
b _037F8DD4
|
|
_037F8DBC:
|
|
ldr r1, _037F8DDC ; =0x0380FFF4
|
|
mov r0, r5
|
|
ldr r1, [r1]
|
|
mov r2, r4
|
|
add r1, r1, #0x1f4
|
|
bl sub_037F8988
|
|
_037F8DD4:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F8DDC: .word 0x0380FFF4
|
|
arm_func_end sub_037F8D58
|
|
|
|
arm_func_start sub_037F8DE0
|
|
sub_037F8DE0: ; 0x037F8DE0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #8
|
|
ldr r0, _037F914C ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r6, r0, #0x344
|
|
add r4, r0, #0x31c
|
|
bl sub_037F9198
|
|
ldr r1, _037F9150 ; =0x04808044
|
|
ldrh r2, [r1]
|
|
ldrh r0, [r1]
|
|
ldrh r1, [r1]
|
|
add r0, r2, r0, lsl #8
|
|
bl sub_027EAD6C
|
|
mov r0, #1
|
|
strh r0, [r6, #0x7c]
|
|
ldrh r0, [r4, #0x1e]
|
|
ldr r2, _037F9154 ; =0x04808032
|
|
mov r0, r0, lsl #0x1d
|
|
mov r0, r0, lsr #0x1f
|
|
cmp r0, #1
|
|
ldreqh r0, [r6, #0x7c]
|
|
ldr r1, _037F9158 ; =0x04808134
|
|
orreq r0, r0, #0x20
|
|
streqh r0, [r6, #0x7c]
|
|
ldrh r0, [r4, #0x18]
|
|
mov r4, #0
|
|
cmp r0, #0
|
|
ldrneh r0, [r6, #0x7c]
|
|
mov r3, #0x8000
|
|
orrne r0, r0, #0x10
|
|
strneh r0, [r6, #0x7c]
|
|
strh r4, [r6, #0x12]
|
|
ldr r0, _037F915C ; =0x0000FFFF
|
|
strh r3, [r2]
|
|
strh r0, [r1]
|
|
strh r4, [r2, #-8]
|
|
sub r0, r1, #0x10c
|
|
strh r4, [r0]
|
|
mov r0, #0xf
|
|
strh r0, [r1, #-0xfc]
|
|
bl sub_027EC510
|
|
bl sub_027F4CC0
|
|
bl sub_037FAEC0
|
|
bl sub_037FB1E0
|
|
ldr r2, _037F9160 ; =0x04808030
|
|
mov r1, #0x8000
|
|
strh r1, [r2]
|
|
ldr r0, _037F915C ; =0x0000FFFF
|
|
ldr r1, _037F9164 ; =0x048081AE
|
|
strh r0, [r2, #-0x20]
|
|
sub r2, r0, #0xe000
|
|
ldr r0, _037F914C ; =0x0380FFF4
|
|
strh r2, [r1]
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrh r0, [r0, #0x90]
|
|
tst r0, #8
|
|
movne r0, #0x400
|
|
strneh r0, [r1, #-4]
|
|
moveq r0, r4
|
|
streqh r0, [r1, #-4]
|
|
ldr r2, _037F9168 ; =0x04808008
|
|
mov r3, #0
|
|
strh r3, [r2]
|
|
strh r3, [r2, #2]
|
|
ldrh r0, [r6, #0xc]
|
|
cmp r0, #4
|
|
addls pc, pc, r0, lsl #2
|
|
b _037F9110
|
|
_037F8EF4: ; jump table
|
|
b _037F8F08 ; case 0
|
|
b _037F8F38 ; case 1
|
|
b _037F901C ; case 2
|
|
b _037F909C ; case 3
|
|
b _037F90F4 ; case 4
|
|
_037F8F08:
|
|
ldr r0, _037F915C ; =0x0000FFFF
|
|
mov r1, #0x3f
|
|
strh r1, [r2, #0xa]
|
|
strh r0, [r2, #0xc8]
|
|
mov r0, #8
|
|
strh r0, [r2, #0xd8]
|
|
strh r3, [r2]
|
|
strh r3, [r2, #2]
|
|
strh r3, [r2, #0xe0]
|
|
mov r0, #1
|
|
strh r0, [r2, #-4]
|
|
b _037F9110
|
|
_037F8F38:
|
|
ldr r3, _037F916C ; =0x0000703F
|
|
ldr r0, _037F9170 ; =0x00001FFF
|
|
ldr r1, _037F9164 ; =0x048081AE
|
|
strh r3, [r2, #0xa]
|
|
strh r0, [r1]
|
|
rsb r0, r0, #0x2300
|
|
strh r0, [r1, #-0xde]
|
|
mov r0, #0xd
|
|
strh r0, [r1, #-0xce]
|
|
mov r0, #0xe000
|
|
strh r0, [r2]
|
|
mov r0, #1
|
|
strh r0, [r2, #-4]
|
|
ldrh r0, [r1, #-0xb6]
|
|
add r7, sp, #0
|
|
strh r0, [r7]
|
|
ldrh r0, [r1, #-0xb4]
|
|
mov r4, #0
|
|
strh r0, [r7, #2]
|
|
ldrh r2, [r1, #-0xb2]
|
|
ldr r0, [sp]
|
|
strh r2, [r7, #4]
|
|
ldrh r1, [r1, #-0xb0]
|
|
mov r3, r4
|
|
strh r1, [r7, #6]
|
|
ldrh r2, [r6, #0x6e]
|
|
ldr r1, [sp, #4]
|
|
mov r5, r2, lsl #0xa
|
|
mov r2, r5
|
|
bl sub_03806B80
|
|
adds r3, r0, #1
|
|
umull r2, r0, r3, r5
|
|
mla r0, r3, r4, r0
|
|
adc r1, r1, #0
|
|
mla r0, r1, r5, r0
|
|
str r0, [sp, #4]
|
|
ldrh r0, [r7, #6]
|
|
ldr r3, _037F9174 ; =0x048080F6
|
|
str r2, [sp]
|
|
strh r0, [r3]
|
|
ldrh r0, [r7, #4]
|
|
mov r1, #1
|
|
strh r0, [r3, #-2]
|
|
ldrh r2, [r7, #2]
|
|
mov r0, #0x40
|
|
strh r2, [r3, #-4]
|
|
ldrh r2, [r7]
|
|
orr r2, r2, #1
|
|
strh r2, [r3, #-6]
|
|
strh r1, [r3, #-0xe]
|
|
strh r1, [r3, #-0xc]
|
|
bl sub_037F9238
|
|
bl sub_027F119C
|
|
ldr r0, _037F9178 ; =0x048080AE
|
|
mov r1, #2
|
|
strh r1, [r0]
|
|
b _037F9110
|
|
_037F901C:
|
|
ldr r1, _037F917C ; =0x0000E0BF
|
|
ldr r0, _037F914C ; =0x0380FFF4
|
|
strh r1, [r2, #0xa]
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrh r0, [r0, #0x90]
|
|
tst r0, #0x20
|
|
beq _037F9058
|
|
ldrh r0, [r2, #0xa]
|
|
ldr r1, _037F9180 ; =0x048081AA
|
|
orr r0, r0, #0x40
|
|
strh r0, [r2, #0xa]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #0x68
|
|
strh r0, [r1]
|
|
_037F9058:
|
|
ldrh r0, [r6, #0x64]
|
|
tst r0, #1
|
|
ldr r0, _037F9184 ; =0x048080D0
|
|
ldrne r1, _037F9188 ; =0x00000581
|
|
strneh r1, [r0]
|
|
ldreq r1, _037F918C ; =0x00000181
|
|
streqh r1, [r0]
|
|
ldr r2, _037F9190 ; =0x048080E0
|
|
mov r0, #0xb
|
|
strh r0, [r2]
|
|
mov r1, #1
|
|
strh r1, [r2, #-0xdc]
|
|
strh r1, [r2, #8]
|
|
mov r0, #0x20
|
|
strh r1, [r2, #0xa]
|
|
bl sub_037F9238
|
|
b _037F9110
|
|
_037F909C:
|
|
ldr r1, _037F915C ; =0x0000FFFF
|
|
strh r1, [r2, #8]
|
|
sub r0, r1, #0x3fc0
|
|
strh r0, [r2, #0xa]
|
|
ldrh r0, [r6, #0x64]
|
|
tst r0, #1
|
|
rsbne r0, r1, #0x10400
|
|
strneh r0, [r2, #0xc8]
|
|
moveq r0, #1
|
|
streqh r0, [r2, #0xc8]
|
|
ldr r2, _037F9190 ; =0x048080E0
|
|
mov r0, #0xb
|
|
strh r0, [r2]
|
|
mov r0, #1
|
|
strh r0, [r2, #-0xdc]
|
|
strh r0, [r2, #8]
|
|
strh r0, [r2, #0xa]
|
|
mov r1, #0
|
|
mov r0, #0x20
|
|
strh r1, [r2, #-0x98]
|
|
bl sub_037F9238
|
|
b _037F9110
|
|
_037F90F4:
|
|
ldr r0, _037F9164 ; =0x048081AE
|
|
strh r3, [r2, #0xa]
|
|
strh r3, [r0]
|
|
mov r1, #1
|
|
mov r0, #0x20
|
|
strh r1, [r2, #-4]
|
|
bl sub_037F9238
|
|
_037F9110:
|
|
ldr r0, _037F9194 ; =0x04808048
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
bl sub_027E9E94
|
|
ldr r1, _037F9178 ; =0x048080AE
|
|
mov r0, #2
|
|
strh r0, [r1]
|
|
ldrh r1, [r6, #0xe]
|
|
cmp r1, #1
|
|
bne _037F913C
|
|
bl sub_027E9CB4
|
|
_037F913C:
|
|
bl sub_037FB300
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F914C: .word 0x0380FFF4
|
|
_037F9150: .word 0x04808044
|
|
_037F9154: .word 0x04808032
|
|
_037F9158: .word 0x04808134
|
|
_037F915C: .word 0x0000FFFF
|
|
_037F9160: .word 0x04808030
|
|
_037F9164: .word 0x048081AE
|
|
_037F9168: .word 0x04808008
|
|
_037F916C: .word 0x0000703F
|
|
_037F9170: .word 0x00001FFF
|
|
_037F9174: .word 0x048080F6
|
|
_037F9178: .word 0x048080AE
|
|
_037F917C: .word 0x0000E0BF
|
|
_037F9180: .word 0x048081AA
|
|
_037F9184: .word 0x048080D0
|
|
_037F9188: .word 0x00000581
|
|
_037F918C: .word 0x00000181
|
|
_037F9190: .word 0x048080E0
|
|
_037F9194: .word 0x04808048
|
|
arm_func_end sub_037F8DE0
|
|
|
|
arm_func_start sub_037F9198
|
|
sub_037F9198: ; 0x037F9198
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _037F9228 ; =0x0380FFF4
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x208
|
|
add r0, r0, #0x400
|
|
add r4, r1, #0x344
|
|
bl sub_037FD5C0
|
|
ldr r0, _037F9228 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x234
|
|
add r0, r0, #0x400
|
|
bl sub_037FD5C0
|
|
mov r0, #0x20
|
|
bl sub_037F9238
|
|
mov r1, #0
|
|
strh r1, [r4, #0xa4]
|
|
ldr r0, _037F922C ; =0x04808012
|
|
strh r1, [r4, #0x12]
|
|
strh r1, [r0]
|
|
strh r1, [r0, #-0xe]
|
|
strh r1, [r0, #0xd8]
|
|
strh r1, [r0, #0xd6]
|
|
strh r1, [r0, #-0xa]
|
|
strh r1, [r0, #-8]
|
|
ldrh r0, [r4, #0xc]
|
|
cmp r0, #1
|
|
bne _037F9208
|
|
bl sub_027F11DC
|
|
_037F9208:
|
|
ldr r1, _037F9230 ; =0x0000FFFF
|
|
ldr r0, _037F9234 ; =0x048080AC
|
|
strh r1, [r0]
|
|
strh r1, [r0, #8]
|
|
bl sub_027F0F08
|
|
bl sub_027E8D44
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F9228: .word 0x0380FFF4
|
|
_037F922C: .word 0x04808012
|
|
_037F9230: .word 0x0000FFFF
|
|
_037F9234: .word 0x048080AC
|
|
arm_func_end sub_037F9198
|
|
|
|
arm_func_start sub_037F9238
|
|
sub_037F9238: ; 0x037F9238
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _037F92D0 ; =0x0380FFF4
|
|
mov r5, r0
|
|
ldr r1, [r1]
|
|
add r4, r1, #0x344
|
|
ldrh r0, [r4, #8]
|
|
cmp r0, r5
|
|
beq _037F92C8
|
|
cmp r0, #0x40
|
|
bne _037F926C
|
|
add r0, r1, #0x234
|
|
add r0, r0, #0x400
|
|
bl sub_037FD5C0
|
|
_037F926C:
|
|
cmp r5, #0
|
|
beq _037F9288
|
|
cmp r5, #0x10
|
|
beq _037F9290
|
|
cmp r5, #0x40
|
|
beq _037F92A8
|
|
b _037F92C4
|
|
_037F9288:
|
|
bl sub_027E9CF4
|
|
b _037F92C4
|
|
_037F9290:
|
|
ldr r0, _037F92D4 ; =0x04808040
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
bl sub_037F9198
|
|
bl sub_027E9D7C
|
|
b _037F92C4
|
|
_037F92A8:
|
|
ldrh r0, [r4, #0xc]
|
|
cmp r0, #2
|
|
bne _037F92B8
|
|
bl sub_027E9EE0
|
|
_037F92B8:
|
|
ldr r1, _037F92D8 ; =sub_027EAA6C
|
|
mov r0, #0x64
|
|
bl sub_027EA9BC
|
|
_037F92C4:
|
|
strh r5, [r4, #8]
|
|
_037F92C8:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F92D0: .word 0x0380FFF4
|
|
_037F92D4: .word 0x04808040
|
|
_037F92D8: .word sub_027EAA6C
|
|
arm_func_end sub_037F9238
|
|
|
|
arm_func_start sub_037F92DC
|
|
sub_037F92DC: ; 0x037F92DC
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r5, _037F93A8 ; =0x04808010
|
|
mov r4, #1
|
|
_037F92E8:
|
|
ldrh r1, [r5]
|
|
ldrh r0, [r5, #2]
|
|
ands r6, r1, r0
|
|
beq _037F9390
|
|
tst r6, #0x80
|
|
beq _037F9304
|
|
bl sub_037FA21C
|
|
_037F9304:
|
|
tst r6, #0x40
|
|
beq _037F9310
|
|
bl sub_037FA328
|
|
_037F9310:
|
|
tst r6, #0x8000
|
|
beq _037F931C
|
|
bl sub_037F93B0
|
|
_037F931C:
|
|
tst r6, #0x4000
|
|
beq _037F9328
|
|
bl sub_037F943C
|
|
_037F9328:
|
|
tst r6, #0x2000
|
|
beq _037F9334
|
|
bl sub_037F96E0
|
|
_037F9334:
|
|
tst r6, #0x800
|
|
beq _037F9340
|
|
bl sub_027EB830
|
|
_037F9340:
|
|
tst r6, #8
|
|
beq _037F934C
|
|
bl sub_037F977C
|
|
_037F934C:
|
|
tst r6, #4
|
|
beq _037F9358
|
|
bl sub_037F988C
|
|
_037F9358:
|
|
tst r6, #1
|
|
beq _037F9364
|
|
bl sub_037F9C70
|
|
_037F9364:
|
|
tst r6, #0x30
|
|
beq _037F9370
|
|
bl sub_037F974C
|
|
_037F9370:
|
|
tst r6, #2
|
|
beq _037F937C
|
|
bl sub_037F9A08
|
|
_037F937C:
|
|
tst r6, #0x1000
|
|
beq _037F92E8
|
|
mov r0, r4
|
|
bl sub_037FA12C
|
|
b _037F92E8
|
|
_037F9390:
|
|
ldr r1, _037F93AC ; =0x0380FFF8
|
|
ldr r0, [r1]
|
|
orr r0, r0, #0x1000000
|
|
str r0, [r1]
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F93A8: .word 0x04808010
|
|
_037F93AC: .word 0x0380FFF8
|
|
arm_func_end sub_037F92DC
|
|
|
|
arm_func_start sub_037F93B0
|
|
sub_037F93B0: ; 0x037F93B0
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _037F9434 ; =0x0380FFF4
|
|
ldr r0, _037F9438 ; =0x04808010
|
|
ldr r2, [r1]
|
|
mov r1, #0x8000
|
|
strh r1, [r0]
|
|
add r4, r2, #0x344
|
|
ldrh r0, [r4, #8]
|
|
cmp r0, #0x40
|
|
bne _037F9424
|
|
ldrh r0, [r4, #0x7e]
|
|
cmp r0, #0
|
|
beq _037F9424
|
|
ldrh r1, [r4, #0x72]
|
|
ldrh r0, [r4, #0x70]
|
|
cmp r1, r0
|
|
bne _037F9424
|
|
ldrh r0, [r4, #0x80]
|
|
add r0, r0, #1
|
|
strh r0, [r4, #0x80]
|
|
ldrh r1, [r4, #0x80]
|
|
ldrh r0, [r4, #0x7e]
|
|
cmp r1, r0
|
|
bls _037F9424
|
|
mov r2, #0
|
|
mov r0, #1
|
|
mov r1, #0xd
|
|
strh r2, [r4, #0x80]
|
|
bl sub_037F8598
|
|
_037F9424:
|
|
mov r0, #1
|
|
strh r0, [r4, #0x10]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F9434: .word 0x0380FFF4
|
|
_037F9438: .word 0x04808010
|
|
arm_func_end sub_037F93B0
|
|
|
|
arm_func_start sub_037F943C
|
|
sub_037F943C: ; 0x037F943C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
ldr r6, _037F96C0 ; =0x0380FFF4
|
|
ldr r2, _037F96C4 ; =0x04808010
|
|
ldr r3, [r6]
|
|
mov r0, #0x4000
|
|
strh r0, [r2]
|
|
add r4, r3, #0x344
|
|
ldrh r1, [r4, #0xc]
|
|
add r0, r3, #0x2c
|
|
cmp r1, #1
|
|
add r5, r3, #0x31c
|
|
add r7, r0, #0x400
|
|
beq _037F9484
|
|
cmp r1, #2
|
|
beq _037F9538
|
|
cmp r1, #3
|
|
beq _037F957C
|
|
b _037F96B8
|
|
_037F9484:
|
|
ldr r1, [r7, #0x80]
|
|
ldrh r6, [r6, #-4]
|
|
ldrh r0, [r4, #0x96]
|
|
add r1, r1, #0x24
|
|
add r8, r1, r0
|
|
add r0, r8, #8
|
|
and r1, r6, #0xff
|
|
bl sub_027EAD24
|
|
mov r1, r6, lsr #8
|
|
add r0, r8, #9
|
|
and r1, r1, #0xff
|
|
bl sub_027EAD24
|
|
ldrh r0, [r4, #0xe]
|
|
cmp r0, #1
|
|
bne _037F94D8
|
|
ldr r1, _037F96C8 ; =0x04808134
|
|
ldrh r2, [r5, #0x20]
|
|
ldrh r0, [r1]
|
|
add r0, r2, r0
|
|
add r0, r0, #1
|
|
strh r0, [r1]
|
|
_037F94D8:
|
|
ldr r0, _037F96C0 ; =0x0380FFF4
|
|
ldr r1, _037F96CC ; =0x048080B6
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x500
|
|
ldrh r3, [r0, #0x2e]
|
|
ldrh r2, [r0, #0x32]
|
|
mvn r3, r3
|
|
orr r2, r3, r2
|
|
strh r2, [r0, #0x30]
|
|
ldrh r0, [r1]
|
|
tst r0, #0x18
|
|
bne _037F9514
|
|
and r0, r0, #6
|
|
cmp r0, #2
|
|
bne _037F9528
|
|
_037F9514:
|
|
ldr r0, [r7, #0x8c]
|
|
bic r0, r0, #2
|
|
str r0, [r7, #0x8c]
|
|
bl sub_037FA598
|
|
b _037F96B8
|
|
_037F9528:
|
|
ldr r0, [r7, #0x8c]
|
|
orr r0, r0, #2
|
|
str r0, [r7, #0x8c]
|
|
b _037F96B8
|
|
_037F9538:
|
|
ldrh r0, [r4, #0x12]
|
|
cmp r0, #0
|
|
ldreq r1, _037F96D0 ; =0x0000FFFF
|
|
addeq r0, r2, #0x124
|
|
streqh r1, [r0]
|
|
beq _037F9568
|
|
add r1, r2, #0x124
|
|
ldrh r2, [r5, #0x20]
|
|
ldrh r0, [r1]
|
|
add r0, r2, r0
|
|
add r0, r0, #1
|
|
strh r0, [r1]
|
|
_037F9568:
|
|
ldrh r0, [r4, #0x1a]
|
|
cmp r0, #2
|
|
bne _037F957C
|
|
mov r0, #2
|
|
bl sub_027E9CB4
|
|
_037F957C:
|
|
ldrh r0, [r4, #8]
|
|
cmp r0, #0x40
|
|
movne r1, #1
|
|
bne _037F95C8
|
|
ldrh r0, [r4, #0x72]
|
|
mov r1, #0
|
|
cmp r0, #1
|
|
ldrh r0, [r4, #0x14]
|
|
moveq r1, #1
|
|
cmp r0, #0
|
|
beq _037F95C8
|
|
ldrh r0, [r4, #0x76]
|
|
cmp r0, #1
|
|
beq _037F95C4
|
|
cmp r0, #0
|
|
ldreqh r0, [r4, #0x74]
|
|
cmpeq r0, #1
|
|
bne _037F95C8
|
|
_037F95C4:
|
|
mov r1, #1
|
|
_037F95C8:
|
|
cmp r1, #0
|
|
ldr r1, _037F96D4 ; =0x04808038
|
|
ldrneh r0, [r1]
|
|
orrne r0, r0, #1
|
|
strneh r0, [r1]
|
|
ldreqh r0, [r1]
|
|
biceq r0, r0, #1
|
|
streqh r0, [r1]
|
|
ldr r1, _037F96D8 ; =0x04808118
|
|
mov r8, #0
|
|
ldrh r0, [r1]
|
|
mov r6, #2
|
|
cmp r0, #0xa
|
|
movhi r0, #0
|
|
strhih r0, [r1, #-0xd0]
|
|
ldrh r0, [r4, #0x72]
|
|
mov r5, r8
|
|
sub r0, r0, #1
|
|
strh r0, [r4, #0x72]
|
|
ldrh r0, [r4, #0x72]
|
|
mov sl, #0x14
|
|
cmp r0, #0
|
|
ldreqh r0, [r4, #0x70]
|
|
streqh r0, [r4, #0x72]
|
|
ldrh r1, [r4, #0x76]
|
|
sub r0, r1, #1
|
|
strh r0, [r4, #0x76]
|
|
cmp r1, #0
|
|
ldreqh r0, [r4, #0x74]
|
|
subeq r0, r0, #1
|
|
streqh r0, [r4, #0x76]
|
|
mov r4, #0xe
|
|
_037F9648:
|
|
mul r1, r8, sl
|
|
ldrh r0, [r7, r1]
|
|
add sb, r7, r1
|
|
cmp r0, #0
|
|
beq _037F96A0
|
|
ldr r0, [sb, #0xc]
|
|
ldrh r1, [r0, #8]
|
|
cmp r1, #0
|
|
bne _037F96A0
|
|
bl sub_027F027C
|
|
cmp r0, #0
|
|
beq _037F96A0
|
|
mov r0, r8
|
|
bl sub_027F0CD4
|
|
ldr r1, [sb, #8]
|
|
mov r0, r5
|
|
strh r6, [r1]
|
|
mov r1, r4
|
|
bl sub_037F8598
|
|
ldrh r0, [r7, #0xae]
|
|
add r0, r0, #1
|
|
strh r0, [r7, #0xae]
|
|
_037F96A0:
|
|
add r8, r8, #1
|
|
cmp r8, #2
|
|
blo _037F9648
|
|
ldr r0, _037F96DC ; =0x048080AE
|
|
mov r1, #0xd
|
|
strh r1, [r0]
|
|
_037F96B8:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F96C0: .word 0x0380FFF4
|
|
_037F96C4: .word 0x04808010
|
|
_037F96C8: .word 0x04808134
|
|
_037F96CC: .word 0x048080B6
|
|
_037F96D0: .word 0x0000FFFF
|
|
_037F96D4: .word 0x04808038
|
|
_037F96D8: .word 0x04808118
|
|
_037F96DC: .word 0x048080AE
|
|
arm_func_end sub_037F943C
|
|
|
|
arm_func_start sub_037F96E0
|
|
sub_037F96E0: ; 0x037F96E0
|
|
ldr r0, _037F9744 ; =0x0380FFF4
|
|
ldr r1, _037F9748 ; =0x04808010
|
|
ldr r2, [r0]
|
|
mov r0, #0x2000
|
|
strh r0, [r1]
|
|
mov r0, #0xd
|
|
add r2, r2, #0x344
|
|
strh r0, [r1, #0x9c]
|
|
ldrh r0, [r2, #0x1a]
|
|
cmp r0, #1
|
|
moveq r0, #2
|
|
streqh r0, [r2, #0x1a]
|
|
bxeq lr
|
|
cmp r0, #2
|
|
moveq r0, #0
|
|
streqh r0, [r2, #0x1a]
|
|
bxeq lr
|
|
ldrh r0, [r2, #0xc]
|
|
cmp r0, #2
|
|
bxne lr
|
|
ldrh r0, [r2, #8]
|
|
cmp r0, #0x40
|
|
movne r0, #0
|
|
strneh r0, [r1, #0x38]
|
|
bx lr
|
|
.align 2, 0
|
|
_037F9744: .word 0x0380FFF4
|
|
_037F9748: .word 0x04808010
|
|
arm_func_end sub_037F96E0
|
|
|
|
arm_func_start sub_037F974C
|
|
sub_037F974C: ; 0x037F974C
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_027EA1AC
|
|
ldr r1, _037F9774 ; =0x048081AC
|
|
ldr r2, _037F9778 ; =0x0000FFFF
|
|
sub r0, r1, #0x19c
|
|
strh r2, [r1]
|
|
mov r1, #0x30
|
|
strh r1, [r0]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F9774: .word 0x048081AC
|
|
_037F9778: .word 0x0000FFFF
|
|
arm_func_end sub_037F974C
|
|
|
|
arm_func_start sub_037F977C
|
|
sub_037F977C: ; 0x037F977C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r1, _037F9880 ; =0x04808010
|
|
mov r2, #8
|
|
ldr r0, _037F9884 ; =0x0380FFF4
|
|
strh r2, [r1]
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x300
|
|
ldrh r0, [r0, #0x3a]
|
|
mov r0, r0, lsl #0x1b
|
|
movs r0, r0, lsr #0x1f
|
|
beq _037F97C4
|
|
add r0, r1, #0x18c
|
|
ldrh r0, [r0]
|
|
tst r0, #1
|
|
addeq r1, r1, #0x280
|
|
ldreqh r0, [r1]
|
|
eoreq r0, r0, #1
|
|
streqh r0, [r1]
|
|
_037F97C4:
|
|
ldr r0, _037F9884 ; =0x0380FFF4
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x600
|
|
ldrh r0, [r0, #0x90]
|
|
tst r0, #8
|
|
beq _037F9878
|
|
ldr r4, _037F9888 ; =0x04808032
|
|
add r0, r1, #0x2c
|
|
mov r2, #0
|
|
add r1, r1, #0x344
|
|
add r3, r0, #0x400
|
|
mov r5, r2
|
|
mov lr, #0x8000
|
|
mov ip, #0x14
|
|
_037F97FC:
|
|
mul r6, r2, ip
|
|
ldrh r0, [r3, r6]
|
|
add r6, r3, r6
|
|
cmp r0, #0
|
|
beq _037F986C
|
|
ldr r0, [r6, #8]
|
|
ldrh r6, [r0, #0xc]
|
|
tst r6, #0x4000
|
|
beq _037F986C
|
|
ldrh r6, [r0, #4]
|
|
tst r6, #0xff
|
|
beq _037F986C
|
|
ldrh r6, [r0, #0xa]
|
|
add r7, r0, #0xc
|
|
add r6, r7, r6
|
|
sub r6, r6, #7
|
|
bic r7, r6, #1
|
|
ldrh r6, [r7]
|
|
cmp r6, #0
|
|
ldreqh r6, [r7, #2]
|
|
cmpeq r6, #0
|
|
bne _037F986C
|
|
strh r5, [r0, #4]
|
|
strh r5, [r4]
|
|
strh lr, [r4]
|
|
ldrh r0, [r1, #0xba]
|
|
add r0, r0, #1
|
|
strh r0, [r1, #0xba]
|
|
_037F986C:
|
|
add r2, r2, #1
|
|
cmp r2, #3
|
|
blo _037F97FC
|
|
_037F9878:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F9880: .word 0x04808010
|
|
_037F9884: .word 0x0380FFF4
|
|
_037F9888: .word 0x04808032
|
|
arm_func_end sub_037F977C
|
|
|
|
arm_func_start sub_037F988C
|
|
sub_037F988C: ; 0x037F988C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _037F99EC ; =0x0380FFF4
|
|
ldr ip, _037F99F0 ; =0x04808010
|
|
ldr r2, [r1]
|
|
mov r0, #4
|
|
strh r0, [ip]
|
|
ldr r0, [r1]
|
|
add r1, ip, #0x198
|
|
add r0, r0, #0x600
|
|
ldrh r3, [r0, #0x90]
|
|
add r0, r2, #0xdc
|
|
add r2, r2, #0x2c
|
|
ldrh r1, [r1]
|
|
tst r3, #8
|
|
add r0, r0, #0x400
|
|
add r3, r2, #0x400
|
|
beq _037F997C
|
|
tst r1, #0x400
|
|
beq _037F997C
|
|
ldrh ip, [ip, #0xa0]
|
|
tst ip, #1
|
|
ldrneh r2, [r3]
|
|
cmpne r2, #0
|
|
bne _037F9938
|
|
tst ip, #4
|
|
ldrneh r2, [r3, #0x14]
|
|
cmpne r2, #0
|
|
bne _037F9938
|
|
tst ip, #8
|
|
ldrneh r2, [r3, #0x28]
|
|
cmpne r2, #0
|
|
bne _037F9938
|
|
ldr r2, _037F99F4 ; =0x0480819C
|
|
ldrh r2, [r2]
|
|
tst r2, #1
|
|
bne _037F9938
|
|
ldr r3, _037F99F8 ; =0x04808032
|
|
mov ip, #0
|
|
strh ip, [r3]
|
|
mov r2, #0x8000
|
|
strh r2, [r3]
|
|
strh ip, [r0, #2]
|
|
b _037F997C
|
|
_037F9938:
|
|
ldrh r3, [r0, #2]
|
|
add r2, r3, #1
|
|
strh r2, [r0, #2]
|
|
cmp r3, #0xc
|
|
bls _037F997C
|
|
ldr r3, _037F99F8 ; =0x04808032
|
|
mov r2, #0
|
|
strh r2, [r0, #2]
|
|
strh r2, [r3]
|
|
mov r2, #0x8000
|
|
ldr r0, _037F99EC ; =0x0380FFF4
|
|
strh r2, [r3]
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x300
|
|
ldrh r2, [r0, #0xfe]
|
|
add r2, r2, #1
|
|
strh r2, [r0, #0xfe]
|
|
_037F997C:
|
|
ldr r0, _037F99EC ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrh r0, [r0, #0x90]
|
|
tst r0, #1
|
|
beq _037F99E4
|
|
tst r1, #0x60
|
|
beq _037F99E4
|
|
ldr r2, _037F99FC ; =0x04808054
|
|
ldrh r1, [r2]
|
|
ldrh r0, [r2, #-2]
|
|
sub r0, r0, #0x4000
|
|
add r0, r0, r0, lsr #31
|
|
cmp r1, r0, asr #1
|
|
bge _037F99CC
|
|
ldrh r0, [r2, #-4]
|
|
sub r0, r0, #0x4000
|
|
add r0, r0, r0, lsr #31
|
|
cmp r1, r0, asr #1
|
|
bge _037F99E0
|
|
_037F99CC:
|
|
ldr r2, _037F9A00 ; =0x0480805A
|
|
ldr r0, _037F9A04 ; =0x00008001
|
|
ldrh r1, [r2]
|
|
strh r1, [r2, #-4]
|
|
strh r0, [r2, #-0x2a]
|
|
_037F99E0:
|
|
bl sub_027EAF70
|
|
_037F99E4:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F99EC: .word 0x0380FFF4
|
|
_037F99F0: .word 0x04808010
|
|
_037F99F4: .word 0x0480819C
|
|
_037F99F8: .word 0x04808032
|
|
_037F99FC: .word 0x04808054
|
|
_037F9A00: .word 0x0480805A
|
|
_037F9A04: .word 0x00008001
|
|
arm_func_end sub_037F988C
|
|
|
|
arm_func_start sub_037F9A08
|
|
sub_037F9A08: ; 0x037F9A08
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r3, _037F9C50 ; =0x0380FFF4
|
|
ldr r0, _037F9C54 ; =0x04808010
|
|
ldr r2, [r3]
|
|
mov r1, #2
|
|
strh r1, [r0]
|
|
ldr r3, [r3]
|
|
add r2, r2, #0x2c
|
|
add r3, r3, #0x300
|
|
ldrh r3, [r3, #0x4c]
|
|
add r4, r2, #0x400
|
|
cmp r3, #0x12
|
|
bne _037F9A44
|
|
bl sub_027EF4C0
|
|
b _037F9C48
|
|
_037F9A44:
|
|
ldrh r2, [r0, #0xa8]
|
|
and r5, r2, #0xf00
|
|
cmp r5, #0x300
|
|
beq _037F9A68
|
|
cmp r5, #0x800
|
|
beq _037F9A9C
|
|
cmp r5, #0xb00
|
|
beq _037F9AD8
|
|
b _037F9BD4
|
|
_037F9A68:
|
|
ldr r0, [r4, #0x8c]
|
|
tst r0, #2
|
|
beq _037F9A78
|
|
bl sub_037FA598
|
|
_037F9A78:
|
|
ldr r1, _037F9C50 ; =0x0380FFF4
|
|
mov r0, #0
|
|
ldr r3, [r1]
|
|
mov r1, #8
|
|
ldr r2, [r3, #0x558]
|
|
add r2, r2, #1
|
|
str r2, [r3, #0x558]
|
|
bl sub_037F8598
|
|
b _037F9BD4
|
|
_037F9A9C:
|
|
ldr r2, [r4, #0x44]
|
|
ldrh r3, [r4, #0x9e]
|
|
ldrh r2, [r2, #4]
|
|
and r2, r2, #0xff
|
|
mov r2, r2, lsl #0x10
|
|
cmp r3, r2, lsr #16
|
|
strlsh r1, [r0, #0x9c]
|
|
ldrlsh r0, [r4, #0xa8]
|
|
addls r0, r0, #1
|
|
strlsh r0, [r4, #0xa8]
|
|
ldr r1, [r4, #0x90]
|
|
ldrh r0, [r1, #0x18]
|
|
add r0, r0, #1
|
|
strh r0, [r1, #0x18]
|
|
b _037F9BD4
|
|
_037F9AD8:
|
|
ldr r3, _037F9C58 ; =0x0000FFFF
|
|
ldr r2, _037F9C5C ; =0x04805F70
|
|
ldr r1, _037F9C60 ; =0x0480824E
|
|
strh r3, [r2]
|
|
strh r3, [r2, #2]
|
|
add r0, r0, #0x23c
|
|
strh r3, [r0]
|
|
strh r3, [r1]
|
|
ldrh r0, [r4, #0x3c]
|
|
cmp r0, #0
|
|
beq _037F9B30
|
|
ldr r1, [r4, #0x44]
|
|
ldrh r0, [r1, #0x22]
|
|
cmp r0, r3
|
|
bne _037F9B30
|
|
ldrh r0, [r1, #4]
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
strneh r0, [r1, #4]
|
|
ldrneh r1, [r4, #0x98]
|
|
ldrne r0, [r4, #0x44]
|
|
strneh r1, [r0, #2]
|
|
_037F9B30:
|
|
ldr r0, [r4, #0x44]
|
|
ldr r2, [r4, #0x90]
|
|
ldrh r1, [r0, #2]
|
|
ldrh r0, [r4, #0x98]
|
|
cmp r1, #1
|
|
add r2, r2, #0x1a
|
|
bls _037F9B80
|
|
ldr r3, _037F9C50 ; =0x0380FFF4
|
|
ldr r3, [r3]
|
|
add r3, r3, #0x300
|
|
ldrh r3, [r3, #0x3a]
|
|
mov r3, r3, lsl #0x1b
|
|
movs r3, r3, lsr #0x1f
|
|
beq _037F9B80
|
|
ldr ip, _037F9C64 ; =0x0480819C
|
|
ldrh r3, [ip]
|
|
tst r3, #1
|
|
ldreqh r3, [ip, #0xf4]
|
|
eoreq r3, r3, #1
|
|
streqh r3, [ip, #0xf4]
|
|
_037F9B80:
|
|
ldr r3, _037F9C50 ; =0x0380FFF4
|
|
ldr r3, [r3]
|
|
add r3, r3, #0x600
|
|
ldrh r3, [r3, #0x90]
|
|
tst r3, #0x40
|
|
beq _037F9BD4
|
|
b _037F9BCC
|
|
_037F9B9C:
|
|
mov r1, r1, lsl #0xf
|
|
mov r1, r1, lsr #0x10
|
|
tst r1, #1
|
|
ldrneh r3, [r2, #6]
|
|
mov r0, r0, lsl #0xf
|
|
addne r3, r3, #1
|
|
mov r0, r0, lsr #0x10
|
|
strneh r3, [r2, #6]
|
|
tst r0, #1
|
|
ldrne r3, [r4, #0x90]
|
|
ldrneh r3, [r3, #0x16]
|
|
addne r2, r2, r3
|
|
_037F9BCC:
|
|
cmp r1, #1
|
|
bhi _037F9B9C
|
|
_037F9BD4:
|
|
cmp r5, #0x800
|
|
beq _037F9C3C
|
|
ldr r2, _037F9C68 ; =0x048080B0
|
|
ldrh r0, [r2]
|
|
tst r0, #2
|
|
bne _037F9C3C
|
|
ldrh r0, [r4, #0x3c]
|
|
cmp r0, #0
|
|
beq _037F9C30
|
|
mov r0, #2
|
|
strh r0, [r2, #4]
|
|
mov r1, #0
|
|
strh r1, [r2, #-0x68]
|
|
ldrh r1, [r2, #-0xa0]
|
|
tst r1, #0x1000
|
|
ldrneh r0, [r4, #0xac]
|
|
addne r0, r0, #1
|
|
strneh r0, [r4, #0xac]
|
|
bne _037F9C24
|
|
bl sub_037FA12C
|
|
_037F9C24:
|
|
ldrh r0, [r4, #0xaa]
|
|
add r0, r0, #1
|
|
strh r0, [r4, #0xaa]
|
|
_037F9C30:
|
|
ldr r0, _037F9C6C ; =0x048080AE
|
|
mov r1, #2
|
|
strh r1, [r0]
|
|
_037F9C3C:
|
|
mov r0, #0
|
|
mov r1, #0xe
|
|
bl sub_037F8598
|
|
_037F9C48:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037F9C50: .word 0x0380FFF4
|
|
_037F9C54: .word 0x04808010
|
|
_037F9C58: .word 0x0000FFFF
|
|
_037F9C5C: .word 0x04805F70
|
|
_037F9C60: .word 0x0480824E
|
|
_037F9C64: .word 0x0480819C
|
|
_037F9C68: .word 0x048080B0
|
|
_037F9C6C: .word 0x048080AE
|
|
arm_func_end sub_037F9A08
|
|
|
|
arm_func_start sub_037F9C70
|
|
sub_037F9C70: ; 0x037F9C70
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x38
|
|
ldr r0, _037FA100 ; =0x0380FFF4
|
|
ldr r2, _037FA104 ; =0x04808010
|
|
ldr r3, [r0]
|
|
mov r1, #1
|
|
add r0, r3, #0x600
|
|
ldrh r4, [r0, #0x90]
|
|
add r6, r3, #0x344
|
|
strh r1, [r2]
|
|
ldrh r1, [r6, #0xc]
|
|
add r0, r3, #0xdc
|
|
cmp r1, #0
|
|
add r7, r0, #0x400
|
|
ldreqh r0, [r2, #0x44]
|
|
and r4, r4, #1
|
|
streqh r0, [r2, #0x4a]
|
|
ldr r0, _037FA108 ; =0x04808098
|
|
sub fp, r0, #0x70
|
|
add r0, r0, #0x1b4
|
|
str r0, [sp, #0x24]
|
|
ldr r0, _037FA10C ; =0x0480824E
|
|
sub r0, r0, #0x154
|
|
str r0, [sp, #0x14]
|
|
ldr r0, _037FA108 ; =0x04808098
|
|
sub r0, r0, #0x44
|
|
str r0, [sp, #0x10]
|
|
ldr r0, _037FA110 ; =0x000008EF
|
|
sub r0, r0, #0x29
|
|
str r0, [sp, #0x28]
|
|
ldr r0, _037FA110 ; =0x000008EF
|
|
add r0, r0, #0x3d
|
|
str r0, [sp, #0x2c]
|
|
ldr r0, _037FA114 ; =0x04805F7E
|
|
sub r0, r0, #0x24
|
|
str r0, [sp, #0x30]
|
|
ldr r0, _037FA110 ; =0x000008EF
|
|
add r0, r0, #0x710
|
|
str r0, [sp, #0x34]
|
|
_037F9D0C:
|
|
ldr r0, [sp, #0x10]
|
|
ldrh sb, [r7, #4]
|
|
ldrh sl, [r0]
|
|
cmp sb, sl
|
|
beq _037FA080
|
|
ldr r0, _037FA108 ; =0x04808098
|
|
ldr r1, [sp, #0x14]
|
|
ldrh r0, [r0, #0x60]
|
|
ldrh r3, [r1]
|
|
ldr r1, _037FA108 ; =0x04808098
|
|
ldrh r2, [r1, #0x60]
|
|
ldr r1, [sp, #0x14]
|
|
cmp r0, r2
|
|
ldrh r1, [r1]
|
|
movhi r0, r1, lsl #0xc
|
|
orrhi r0, r0, r2, lsr #4
|
|
strhi r0, [sp, #4]
|
|
movls r1, r3, lsl #0xc
|
|
orrls r0, r1, r0, lsr #4
|
|
strls r0, [sp, #4]
|
|
ldr r0, [sp, #0x28]
|
|
cmp sb, r0
|
|
blo _037F9D78
|
|
ldr r0, _037FA110 ; =0x000008EF
|
|
cmp sb, r0
|
|
bhi _037F9D78
|
|
bl sub_027EA1AC
|
|
_037F9D78:
|
|
mov r0, sb, lsl #1
|
|
str r0, [sp, #0x18]
|
|
add r0, r0, #0x4000
|
|
add r8, r0, #0x4800000
|
|
add r0, r8, #2
|
|
bl sub_037FA6C8
|
|
mov r5, r0
|
|
add r0, r5, #2
|
|
bl sub_037FA6C8
|
|
str r0, [sp, #0x1c]
|
|
add r0, r0, #4
|
|
bl sub_037FA6C8
|
|
str r0, [sp, #0x20]
|
|
add r0, r8, #0xe
|
|
bl sub_037FA6C8
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sp, #0x18]
|
|
ldrh r1, [r5]
|
|
add r0, r0, #0x4800000
|
|
add r0, r0, #0x4000
|
|
mov r1, r1, lsl #1
|
|
ldrh r2, [r0]
|
|
and r1, r1, #0x400
|
|
orr r1, r2, r1
|
|
strh r1, [r0]
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [sp, #0x1c]
|
|
strh r1, [r0]
|
|
ldr r0, [sp, #0x20]
|
|
ldrh r1, [r0]
|
|
add r0, r1, sb, lsl #1
|
|
add r0, r0, #0xf
|
|
mov r0, r0, lsr #2
|
|
mov sb, r0, lsl #1
|
|
cmp sb, #0xfb0
|
|
ldrhsh r0, [r6, #0x9a]
|
|
subhs sb, sb, r0, lsr #1
|
|
ldr r0, [sp, #0x2c]
|
|
cmp r1, r0
|
|
bls _037F9E34
|
|
ldr r0, _037FA118 ; =0x0000FFFF
|
|
mov sb, sl
|
|
strh r0, [r8]
|
|
ldrh r0, [r6, #0xb4]
|
|
add r0, r0, #1
|
|
strh r0, [r6, #0xb4]
|
|
b _037F9EBC
|
|
_037F9E34:
|
|
cmp r4, #0
|
|
cmpne sb, sl
|
|
beq _037F9EBC
|
|
ldr r3, [sp, #0x30]
|
|
mov r2, sb, lsl #1
|
|
add r0, r2, #0x4000
|
|
add r0, r0, #0x4800000
|
|
cmp r0, r3
|
|
ldrloh r0, [r0, #6]
|
|
add r2, r2, #0x4800000
|
|
add r2, r2, #0x4000
|
|
ldrhsh r3, [r6, #0x9a]
|
|
andlo r0, r0, #0xff
|
|
subhs r0, r0, r3
|
|
ldrh r2, [r2]
|
|
ldrhsh r0, [r0, #6]
|
|
tst r2, #0x7c00
|
|
bne _037F9E94
|
|
cmp r0, #0xa
|
|
cmpne r0, #0x14
|
|
bne _037F9E94
|
|
ldr r0, [sp, #0x34]
|
|
cmp r1, r0
|
|
bls _037F9EBC
|
|
_037F9E94:
|
|
ldrh r0, [r6, #0xb4]
|
|
ldr r1, _037FA118 ; =0x0000FFFF
|
|
add r0, r0, #1
|
|
strh r0, [r6, #0xb4]
|
|
mov r0, sl, lsl #0x10
|
|
strh r1, [r8]
|
|
mov r0, r0, lsr #0x10
|
|
strh r0, [r7, #4]
|
|
strh r0, [r5]
|
|
b _037FA080
|
|
_037F9EBC:
|
|
ldrh r0, [r8]
|
|
and r0, r0, #0xf
|
|
cmp r0, #0xc
|
|
bne _037FA01C
|
|
add r0, r8, #0xc
|
|
bl sub_037FA6C8
|
|
ldrh r0, [r0]
|
|
str r0, [sp, #8]
|
|
add r0, r8, #0x22
|
|
bl sub_037FA6C8
|
|
ldrh sl, [r0]
|
|
ldrh r0, [r7]
|
|
cmp r0, sl
|
|
bne _037F9F20
|
|
ldr r0, [sp, #8]
|
|
tst r0, #0x800
|
|
beq _037F9F20
|
|
ldr r0, _037FA100 ; =0x0380FFF4
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x57c]
|
|
add r0, r0, #1
|
|
str r0, [r1, #0x57c]
|
|
ldr r0, _037FA118 ; =0x0000FFFF
|
|
strh r0, [r8]
|
|
b _037F9FF4
|
|
_037F9F20:
|
|
ldr r0, _037FA100 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r1, r0, #0x300
|
|
ldrh r2, [r1, #0x3a]
|
|
mov r2, r2, lsl #0x18
|
|
movs r2, r2, lsr #0x1f
|
|
ldreqh r1, [r1, #0x4c]
|
|
cmpeq r1, #0x40
|
|
bne _037F9FF4
|
|
ldrh r1, [fp]
|
|
cmp r1, #0
|
|
beq _037F9FCC
|
|
ldr r1, _037FA108 ; =0x04808098
|
|
ldrh r1, [r1]
|
|
tst r1, #0x8000
|
|
beq _037F9FCC
|
|
add r0, r0, #0x660
|
|
bl sub_037FD5C0
|
|
ldr r0, [sp, #0xc]
|
|
mov r3, #0
|
|
ldrh r1, [r0]
|
|
ldr r0, _037FA11C ; =0x000082EA
|
|
mov r2, #0x3e8
|
|
umull ip, r8, r1, r0
|
|
mov r0, r3
|
|
mla r8, r1, r0, r8
|
|
mov r0, ip, lsr #6
|
|
ldr r1, _037FA11C ; =0x000082EA
|
|
mov ip, r3
|
|
mla r8, ip, r1, r8
|
|
mov r1, r8, lsr #6
|
|
orr r0, r0, r8, lsl #26
|
|
bl sub_03806B80
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
mov r2, r1
|
|
mov r1, r0
|
|
ldr r0, _037FA100 ; =0x0380FFF4
|
|
ldr r3, _037FA120 ; =sub_027EA0BC
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x660
|
|
bl sub_037FD4DC
|
|
b _037F9FF4
|
|
_037F9FCC:
|
|
ldr r1, _037FA118 ; =0x0000FFFF
|
|
ldr r0, _037FA114 ; =0x04805F7E
|
|
mov sl, r1
|
|
strh r1, [r0]
|
|
ldr r0, [sp, #0x24]
|
|
strh r1, [r0]
|
|
ldr r0, _037FA10C ; =0x0480824E
|
|
strh r1, [r0]
|
|
mov r0, r1
|
|
strh r0, [r8]
|
|
_037F9FF4:
|
|
strh sl, [r7]
|
|
bl sub_037FA6F0
|
|
tst r0, #1
|
|
beq _037FA06C
|
|
ldr r0, _037FA100 ; =0x0380FFF4
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x5a8]
|
|
add r0, r0, #1
|
|
str r0, [r1, #0x5a8]
|
|
b _037FA06C
|
|
_037FA01C:
|
|
cmp r0, #0xd
|
|
bne _037FA06C
|
|
ldr r0, _037FA100 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x300
|
|
ldrh r1, [r0, #0x3a]
|
|
mov r1, r1, lsl #0x18
|
|
movs r1, r1, lsr #0x1f
|
|
ldreqh r0, [r0, #0x4c]
|
|
cmpeq r0, #0x40
|
|
bne _037FA06C
|
|
ldrh r0, [fp]
|
|
cmp r0, #0
|
|
beq _037FA064
|
|
ldr r0, _037FA108 ; =0x04808098
|
|
ldrh r0, [r0]
|
|
tst r0, #0x8000
|
|
bne _037FA06C
|
|
_037FA064:
|
|
ldr r0, _037FA118 ; =0x0000FFFF
|
|
strh r0, [r8]
|
|
_037FA06C:
|
|
mov r0, sb, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
strh r0, [r7, #4]
|
|
strh r0, [r5]
|
|
b _037F9D0C
|
|
_037FA080:
|
|
cmp r4, #0
|
|
beq _037FA0D4
|
|
ldr r0, _037FA124 ; =0x04808054
|
|
ldrh r4, [r0]
|
|
bl sub_037FA6F0
|
|
mov r0, r0, lsl #0x10
|
|
movs r1, r0, lsr #0x10
|
|
beq _037FA0D4
|
|
ldr r0, _037FA124 ; =0x04808054
|
|
ldrh r0, [r0]
|
|
cmp r4, r0
|
|
bne _037FA0D4
|
|
tst r1, #2
|
|
beq _037FA0C4
|
|
mov r0, #0x80
|
|
bl sub_027EB06C
|
|
b _037FA0D4
|
|
_037FA0C4:
|
|
tst r1, #1
|
|
beq _037FA0D4
|
|
mov r0, #0x100
|
|
bl sub_027EB06C
|
|
_037FA0D4:
|
|
ldr r0, _037FA128 ; =0x0480805A
|
|
ldrh r1, [r0]
|
|
ldrh r0, [r0, #-6]
|
|
cmp r1, r0
|
|
beq _037FA0F4
|
|
mov r0, #0
|
|
mov r1, #0xf
|
|
bl sub_037F8598
|
|
_037FA0F4:
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FA100: .word 0x0380FFF4
|
|
_037FA104: .word 0x04808010
|
|
_037FA108: .word 0x04808098
|
|
_037FA10C: .word 0x0480824E
|
|
_037FA110: .word 0x000008EF
|
|
_037FA114: .word 0x04805F7E
|
|
_037FA118: .word 0x0000FFFF
|
|
_037FA11C: .word 0x000082EA
|
|
_037FA120: .word sub_027EA0BC
|
|
_037FA124: .word 0x04808054
|
|
_037FA128: .word 0x0480805A
|
|
arm_func_end sub_037F9C70
|
|
|
|
arm_func_start sub_037FA12C
|
|
sub_037FA12C: ; 0x037FA12C
|
|
stmdb sp!, {r3, lr}
|
|
ldr ip, _037FA210 ; =0x0380FFF4
|
|
ldr r2, _037FA214 ; =0x04808010
|
|
ldr r1, [ip]
|
|
mov r3, #0x1000
|
|
add r1, r1, #0x2c
|
|
strh r3, [r2]
|
|
add r3, r1, #0x400
|
|
ldrh r1, [r3, #0x3c]
|
|
cmp r1, #0
|
|
beq _037FA208
|
|
ldr r1, [ip]
|
|
add r1, r1, #0x600
|
|
ldrh r1, [r1, #0x90]
|
|
tst r1, #0x10
|
|
cmpne r0, #0
|
|
beq _037FA1FC
|
|
add r0, r2, #0x204
|
|
ldrh r1, [r2, #0xa6]
|
|
ldrh r0, [r0]
|
|
cmp r0, #3
|
|
cmpne r0, #5
|
|
bne _037FA1FC
|
|
cmp r1, #0
|
|
bne _037FA1FC
|
|
ldr r3, [r3, #0x44]
|
|
mov r2, #0
|
|
ldrh r0, [r3, #2]
|
|
b _037FA1B0
|
|
_037FA1A0:
|
|
and r1, r0, #1
|
|
mov r0, r0, lsl #0xf
|
|
add r2, r2, r1
|
|
mov r0, r0, lsr #0x10
|
|
_037FA1B0:
|
|
cmp r0, #0
|
|
bne _037FA1A0
|
|
ldrh r0, [r3, #0x24]
|
|
ldrh r1, [r3, #0xa]
|
|
add r0, r0, #0xa
|
|
mul r0, r2, r0
|
|
add r0, r0, #0xc0
|
|
add r0, r0, r1, lsl #2
|
|
mov r0, r0, lsl #0x10
|
|
ldr r1, _037FA218 ; =sub_037FA660
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_027EAB5C
|
|
ldr r0, _037FA210 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x400
|
|
ldrh r1, [r0]
|
|
add r1, r1, #1
|
|
strh r1, [r0]
|
|
b _037FA208
|
|
_037FA1FC:
|
|
mov r0, #0
|
|
mov r1, #0x10
|
|
bl sub_037F8598
|
|
_037FA208:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FA210: .word 0x0380FFF4
|
|
_037FA214: .word 0x04808010
|
|
_037FA218: .word sub_037FA660
|
|
arm_func_end sub_037FA12C
|
|
|
|
arm_func_start sub_037FA21C
|
|
sub_037FA21C: ; 0x037FA21C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _037FA318 ; =0x0380FFF4
|
|
ldr r0, _037FA31C ; =0x04808010
|
|
ldr r2, [r3]
|
|
mov r1, #0x80
|
|
strh r1, [r0]
|
|
ldr r1, [r3]
|
|
add r2, r2, #0x2c
|
|
add r1, r1, #0x600
|
|
ldrh r1, [r1, #0x90]
|
|
tst r1, #0x20
|
|
beq _037FA2B0
|
|
add r1, r0, #0x204
|
|
ldrh r3, [r1]
|
|
add r1, r0, #0x258
|
|
and r3, r3, #0xff
|
|
ldrh ip, [r1]
|
|
cmp r3, #3
|
|
blo _037FA2B0
|
|
cmp r3, #5
|
|
bhi _037FA2B0
|
|
ldr r3, [r2, #0x458]
|
|
ldr r1, _037FA320 ; =0x00000FFF
|
|
and r3, r1, r3, lsr #1
|
|
cmp ip, r3
|
|
blo _037FA2B0
|
|
ldr r2, [r2, #0x430]
|
|
and r1, r1, r2, lsr #1
|
|
cmp ip, r1
|
|
bhi _037FA2B0
|
|
add r1, r0, #0x234
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #0x80
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #0x80
|
|
strh r0, [r1]
|
|
_037FA2B0:
|
|
ldr r1, _037FA324 ; =0x04808000
|
|
ldrh r0, [r1]
|
|
cmp r0, #0x1440
|
|
beq _037FA310
|
|
add r0, r1, #0x19c
|
|
ldrh r0, [r0]
|
|
and r0, r0, #0x42
|
|
cmp r0, #0x42
|
|
bne _037FA310
|
|
add r1, r1, #0x2b8
|
|
ldrh r2, [r1]
|
|
cmp r2, #0
|
|
beq _037FA310
|
|
mov r3, #0
|
|
b _037FA304
|
|
_037FA2EC:
|
|
cmp r3, #0x3e8
|
|
add r3, r3, #1
|
|
bls _037FA304
|
|
mov r0, #0x40
|
|
bl sub_027EB06C
|
|
b _037FA310
|
|
_037FA304:
|
|
ldrh r0, [r1]
|
|
cmp r2, r0
|
|
beq _037FA2EC
|
|
_037FA310:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FA318: .word 0x0380FFF4
|
|
_037FA31C: .word 0x04808010
|
|
_037FA320: .word 0x00000FFF
|
|
_037FA324: .word 0x04808000
|
|
arm_func_end sub_037FA21C
|
|
|
|
arm_func_start sub_037FA328
|
|
sub_037FA328: ; 0x037FA328
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r2, _037FA57C ; =0x0380FFF4
|
|
ldr r0, _037FA580 ; =0x04808010
|
|
ldr r3, [r2]
|
|
mov r1, #0x40
|
|
strh r1, [r0]
|
|
ldr r2, [r2]
|
|
add r1, r3, #0x2c
|
|
add r2, r2, #0x600
|
|
ldrh r2, [r2, #0x90]
|
|
add r4, r3, #0x344
|
|
tst r2, #0x20
|
|
add r5, r1, #0x400
|
|
beq _037FA574
|
|
ldrh r2, [r5, #0xa4]
|
|
ldr r1, _037FA584 ; =0x0000FFFF
|
|
cmp r2, r1
|
|
addeq r2, r0, #0x18c
|
|
ldreqh r2, [r2]
|
|
andeq r2, r2, #3
|
|
cmpeq r2, #3
|
|
bne _037FA574
|
|
add r2, r0, #0x258
|
|
ldrh r3, [r2]
|
|
ldrh r2, [r0, #0x40]
|
|
sub r1, r1, #0xf000
|
|
and r1, r1, r2, lsr #1
|
|
cmp r3, r1
|
|
blt _037FA574
|
|
ldrh r7, [r0, #0x44]
|
|
mov r0, r7, lsl #1
|
|
add r0, r0, #0x4000
|
|
add r0, r0, #0x4800000
|
|
add r0, r0, #8
|
|
bl sub_037FA6C8
|
|
add r0, r0, #4
|
|
bl sub_037FA6C8
|
|
ldrh r2, [r0]
|
|
ldr r1, _037FA588 ; =0x0000E7FF
|
|
and r1, r2, r1
|
|
cmp r1, #0x228
|
|
bne _037FA574
|
|
add r0, r0, #2
|
|
bl sub_037FA6C8
|
|
ldr r2, _037FA58C ; =0x048080F8
|
|
ldrh r1, [r2]
|
|
sub r6, r1, #0x10000
|
|
add r1, r2, #0x170
|
|
_037FA3E8:
|
|
ldrh r3, [r1]
|
|
sub r3, r3, r7
|
|
mov r3, r3, lsl #0x10
|
|
mov r8, r3, lsr #0x10
|
|
tst r8, #0x8000
|
|
ldrneh r3, [r4, #0x9a]
|
|
addne r3, r8, r3, lsr #1
|
|
movne r3, r3, lsl #0x10
|
|
movne r8, r3, lsr #0x10
|
|
cmp r8, #0xe
|
|
bhi _037FA430
|
|
ldrh r3, [r2]
|
|
sub r3, r3, r6
|
|
mov r3, r3, lsl #0x10
|
|
mov r3, r3, lsr #0x10
|
|
cmp r3, #0x40
|
|
bhi _037FA574
|
|
b _037FA3E8
|
|
_037FA430:
|
|
add r0, r0, #8
|
|
mov r8, #0
|
|
b _037FA458
|
|
_037FA43C:
|
|
bl sub_037FA6C8
|
|
add r1, r4, r8, lsl #1
|
|
ldrh r2, [r0], #2
|
|
ldrh r1, [r1, #0x64]
|
|
cmp r2, r1
|
|
bne _037FA574
|
|
add r8, r8, #1
|
|
_037FA458:
|
|
cmp r8, #3
|
|
blo _037FA43C
|
|
add r0, r0, #0xa
|
|
bl sub_037FA6C8
|
|
ldr r3, _037FA58C ; =0x048080F8
|
|
add r1, r3, #0x170
|
|
_037FA470:
|
|
ldrh r2, [r1]
|
|
sub r2, r2, r7
|
|
mov r2, r2, lsl #0x10
|
|
mov r8, r2, lsr #0x10
|
|
tst r8, #0x8000
|
|
ldrneh r2, [r4, #0x9a]
|
|
addne r2, r8, r2, lsr #1
|
|
movne r2, r2, lsl #0x10
|
|
movne r8, r2, lsr #0x10
|
|
cmp r8, #0x14
|
|
bhi _037FA4B8
|
|
ldrh r2, [r3]
|
|
sub r2, r2, r6
|
|
mov r2, r2, lsl #0x10
|
|
mov r2, r2, lsr #0x10
|
|
cmp r2, #0x70
|
|
bhi _037FA574
|
|
b _037FA470
|
|
_037FA4B8:
|
|
ldr r2, _037FA590 ; =0x04808028
|
|
ldrh r3, [r0]
|
|
ldrh r0, [r2]
|
|
mov r1, #1
|
|
tst r3, r1, lsl r0
|
|
bne _037FA574
|
|
ldrh r1, [r2, #0x70]
|
|
mov r0, #0x40
|
|
strh r1, [r5, #0xa4]
|
|
strh r0, [r2, #0x8c]
|
|
ldrh r0, [r4, #0xbe]
|
|
add r1, r2, #0x174
|
|
add r0, r0, #1
|
|
strh r0, [r4, #0xbe]
|
|
_037FA4F0:
|
|
ldrh r0, [r1]
|
|
and r0, r0, #3
|
|
cmp r0, #3
|
|
beq _037FA4F0
|
|
ldr r0, _037FA594 ; =0x04808244
|
|
mov r2, #8
|
|
ldrh r1, [r0]
|
|
sub r3, r0, #0x1c
|
|
orr r1, r1, #0x40
|
|
strh r1, [r0]
|
|
ldrh r4, [r0]
|
|
ldr r1, _037FA57C ; =0x0380FFF4
|
|
bic r4, r4, #0x40
|
|
strh r4, [r0]
|
|
strh r2, [r3]
|
|
mov r2, #0
|
|
strh r2, [r3]
|
|
ldr r1, [r1]
|
|
ldr r2, _037FA584 ; =0x0000FFFF
|
|
add r1, r1, #0x2c
|
|
add r6, r1, #0x400
|
|
ldrh r5, [r6, #0xa4]
|
|
cmp r5, r2
|
|
beq _037FA574
|
|
sub r4, r0, #0x1b0
|
|
ldrh r3, [r4]
|
|
sub r1, r0, #0x214
|
|
strh r5, [r4]
|
|
ldrh r0, [r1]
|
|
orr r0, r0, #0x80
|
|
strh r0, [r1]
|
|
strh r3, [r4]
|
|
strh r2, [r6, #0xa4]
|
|
_037FA574:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FA57C: .word 0x0380FFF4
|
|
_037FA580: .word 0x04808010
|
|
_037FA584: .word 0x0000FFFF
|
|
_037FA588: .word 0x0000E7FF
|
|
_037FA58C: .word 0x048080F8
|
|
_037FA590: .word 0x04808028
|
|
_037FA594: .word 0x04808244
|
|
arm_func_end sub_037FA328
|
|
|
|
arm_func_start sub_037FA598
|
|
sub_037FA598: ; 0x037FA598
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _037FA65C ; =0x0380FFF4
|
|
mov r0, #2
|
|
ldr r1, [r1]
|
|
mov r5, #0
|
|
add r1, r1, #0x2c
|
|
add r4, r1, #0x400
|
|
bl sub_027F0CD4
|
|
mov r0, #1
|
|
bl sub_027F0CD4
|
|
mov r0, r5
|
|
bl sub_027F0CD4
|
|
ldrh r0, [r4, #0x28]
|
|
cmp r0, #0
|
|
beq _037FA5EC
|
|
ldr r0, [r4, #0x30]
|
|
ldrh r0, [r0]
|
|
cmp r0, #0
|
|
movne r5, #1
|
|
moveq r0, r5
|
|
streqh r0, [r4, #0x28]
|
|
_037FA5EC:
|
|
ldrh r0, [r4, #0x14]
|
|
cmp r0, #0
|
|
beq _037FA610
|
|
ldr r0, [r4, #0x1c]
|
|
ldrh r0, [r0]
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
streqh r0, [r4, #0x14]
|
|
movne r5, #1
|
|
_037FA610:
|
|
ldrh r0, [r4]
|
|
cmp r0, #0
|
|
beq _037FA634
|
|
ldr r0, [r4, #8]
|
|
ldrh r0, [r0]
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
streqh r0, [r4]
|
|
movne r5, #1
|
|
_037FA634:
|
|
cmp r5, #0
|
|
beq _037FA648
|
|
mov r0, #0
|
|
mov r1, #0xe
|
|
bl sub_037F8598
|
|
_037FA648:
|
|
mov r0, #0
|
|
mov r1, #0x14
|
|
bl sub_037F8598
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FA65C: .word 0x0380FFF4
|
|
arm_func_end sub_037FA598
|
|
|
|
arm_func_start sub_037FA660
|
|
sub_037FA660: ; 0x037FA660
|
|
stmdb sp!, {r4, lr}
|
|
mov r0, #0x1000000
|
|
bl ClearIeFlag
|
|
ldr r2, _037FA6C0 ; =0x04808210
|
|
mov r1, #0x1000
|
|
ldrh r3, [r2]
|
|
mov r4, r0
|
|
strh r1, [r2, #0x34]
|
|
mov r1, #0x64
|
|
b _037FA698
|
|
_037FA688:
|
|
ldrh r0, [r2]
|
|
cmp r3, r0
|
|
bne _037FA6A0
|
|
sub r1, r1, #1
|
|
_037FA698:
|
|
cmp r1, #0
|
|
bne _037FA688
|
|
_037FA6A0:
|
|
ldr r1, _037FA6C4 ; =0x04808244
|
|
mov r0, #0
|
|
strh r0, [r1]
|
|
bl sub_037FA12C
|
|
mov r0, r4
|
|
bl sub_037FB8F0
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FA6C0: .word 0x04808210
|
|
_037FA6C4: .word 0x04808244
|
|
arm_func_end sub_037FA660
|
|
|
|
arm_func_start sub_037FA6C8
|
|
sub_037FA6C8: ; 0x037FA6C8
|
|
ldr r1, _037FA6E8 ; =0x04805F60
|
|
cmp r0, r1
|
|
ldrhs r1, _037FA6EC ; =0x0380FFF4
|
|
ldrhs r1, [r1]
|
|
addhs r1, r1, #0x300
|
|
ldrhsh r1, [r1, #0xde]
|
|
subhs r0, r0, r1
|
|
bx lr
|
|
.align 2, 0
|
|
_037FA6E8: .word 0x04805F60
|
|
_037FA6EC: .word 0x0380FFF4
|
|
arm_func_end sub_037FA6C8
|
|
|
|
arm_func_start sub_037FA6F0
|
|
sub_037FA6F0: ; 0x037FA6F0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r0, _037FA724 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2c
|
|
add r5, r0, #0x400
|
|
add r0, r5, #0x50
|
|
bl sub_027EB844
|
|
mov r4, r0
|
|
add r0, r5, #0x64
|
|
bl sub_027EB844
|
|
orr r0, r4, r0
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FA724: .word 0x0380FFF4
|
|
arm_func_end sub_037FA6F0
|
|
|
|
arm_func_start sub_037FA728
|
|
sub_037FA728: ; 0x037FA728
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _037FA770 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x300
|
|
ldrh r0, [r0, #0xe8]
|
|
cmp r0, #0
|
|
beq _037FA748
|
|
bl sub_027F1578
|
|
_037FA748:
|
|
ldr r0, _037FA770 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x300
|
|
ldrh r0, [r0, #0x3a]
|
|
mov r0, r0, lsl #0x19
|
|
movs r0, r0, lsr #0x1f
|
|
beq _037FA768
|
|
bl sub_027EDF34
|
|
_037FA768:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FA770: .word 0x0380FFF4
|
|
arm_func_end sub_037FA728
|
|
|
|
arm_func_start sub_037FA774
|
|
sub_037FA774: ; 0x037FA774
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
ldr r7, _037FA940 ; =0x0380FFF4
|
|
mov sl, #2
|
|
ldr r1, [r7]
|
|
mov fp, #0
|
|
add r0, r1, #0x2c
|
|
add r8, r0, #0x400
|
|
ldr r0, _037FA944 ; =0x04808032
|
|
add r6, r1, #0x344
|
|
add r4, r0, #0x6e
|
|
_037FA79C:
|
|
mov r0, #0x14
|
|
mov r5, sl, lsl #2
|
|
mla sb, sl, r0, r8
|
|
add r0, r5, #0x4800000
|
|
add r0, r0, #0x8000
|
|
ldrh r0, [r0, #0xa0]
|
|
tst r0, #0x8000
|
|
bne _037FA930
|
|
ldrh r0, [sb]
|
|
cmp r0, #0
|
|
beq _037FA930
|
|
ldr r1, [sb, #0xc]
|
|
cmp r1, #0
|
|
beq _037FA910
|
|
ldr r0, [sb, #8]
|
|
ldrh r0, [r0]
|
|
strh r0, [r1, #8]
|
|
ldr r1, [sb, #8]
|
|
ldr r0, [sb, #0xc]
|
|
ldrh r1, [r1, #0xc]
|
|
strh r1, [r0, #0x14]
|
|
ldr r0, [sb, #8]
|
|
ldrh r1, [r0, #0xc]
|
|
tst r1, #0x4000
|
|
beq _037FA8DC
|
|
ldr r1, [r7]
|
|
add r1, r1, #0x600
|
|
ldrh r1, [r1, #0x90]
|
|
tst r1, #8
|
|
beq _037FA8C0
|
|
ldrh r1, [r0, #0xa]
|
|
add r2, r0, #0xc
|
|
add r1, r2, r1
|
|
sub r1, r1, #7
|
|
bic r2, r1, #1
|
|
ldrh r1, [r2]
|
|
cmp r1, #0
|
|
ldreqh r1, [r2, #2]
|
|
cmpeq r1, #0
|
|
bne _037FA8C0
|
|
ldr r0, _037FA944 ; =0x04808032
|
|
mov r1, #0x8000
|
|
strh fp, [r0]
|
|
strh r1, [r0]
|
|
ldrh r0, [r6, #0xba]
|
|
add r0, r0, #1
|
|
strh r0, [r6, #0xba]
|
|
ldr r0, [sb, #0xc]
|
|
bl sub_027F027C
|
|
cmp r0, #0
|
|
beq _037FA8A4
|
|
ldr r2, [sb, #0xc]
|
|
mov r0, #2
|
|
strh r0, [r2, #8]
|
|
ldrh r0, [sb, #4]
|
|
mov r1, #1
|
|
add r0, r0, #1
|
|
strh r0, [sb, #4]
|
|
ldrh r0, [r8, #0xae]
|
|
add r0, r0, #1
|
|
strh r0, [r8, #0xae]
|
|
ldr r0, [sb, #0xc]
|
|
ldr r2, [sb, #0x10]
|
|
mov lr, pc
|
|
bx r2
|
|
_037FA8A0:
|
|
b _037FA930
|
|
_037FA8A4:
|
|
ldr r1, [sb, #0xc]
|
|
mov r0, #0
|
|
strh r0, [r1, #0xc]
|
|
ldrh r0, [r5, r4]
|
|
orr r0, r0, #0x8000
|
|
strh r0, [r5, r4]
|
|
b _037FA930
|
|
_037FA8C0:
|
|
ldrh r0, [r0, #4]
|
|
ldr r2, [sb, #0xc]
|
|
and r0, r0, #0xff
|
|
ldrh r1, [r2, #0xc]
|
|
add r0, r1, r0
|
|
strh r0, [r2, #0xc]
|
|
b _037FA8EC
|
|
_037FA8DC:
|
|
ldrh r1, [r0, #4]
|
|
ldr r0, [sb, #0xc]
|
|
and r1, r1, #0xff
|
|
strh r1, [r0, #0xc]
|
|
_037FA8EC:
|
|
ldrh r0, [sb, #4]
|
|
mov r1, #2
|
|
add r0, r0, #1
|
|
strh r0, [sb, #4]
|
|
ldr r0, [sb, #0xc]
|
|
ldr r2, [sb, #0x10]
|
|
mov lr, pc
|
|
bx r2
|
|
_037FA90C:
|
|
b _037FA930
|
|
_037FA910:
|
|
ldrh r0, [sb, #4]
|
|
mov r1, #3
|
|
add r0, r0, #1
|
|
strh r0, [sb, #4]
|
|
ldr r0, [sb, #8]
|
|
ldr r2, [sb, #0x10]
|
|
mov lr, pc
|
|
bx r2
|
|
_037FA930:
|
|
subs sl, sl, #1
|
|
bpl _037FA79C
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FA940: .word 0x0380FFF4
|
|
_037FA944: .word 0x04808032
|
|
arm_func_end sub_037FA774
|
|
|
|
arm_func_start sub_037FA948
|
|
sub_037FA948: ; 0x037FA948
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r0, _037FAC98 ; =0x0380FFF4
|
|
ldr r4, [r0]
|
|
add r0, r4, #0xdc
|
|
add r5, r0, #0x400
|
|
_037FA95C:
|
|
ldr r1, _037FAC9C ; =0x0480805A
|
|
ldrh r0, [r5, #4]
|
|
ldrh r6, [r1]
|
|
cmp r6, r0
|
|
beq _037FAC90
|
|
ldr r0, _037FACA0 ; =0x000008C6
|
|
cmp r6, r0
|
|
blo _037FA980
|
|
bl sub_027EA1AC
|
|
_037FA980:
|
|
mov r6, r6, lsl #1
|
|
add r0, r6, #0x4000
|
|
add r7, r0, #0x4800000
|
|
add r0, r7, #2
|
|
bl sub_037FA6C8
|
|
add r1, r6, #0x4800000
|
|
add r1, r1, #0x4000
|
|
ldrh r2, [r1]
|
|
ldr r1, _037FACA4 ; =0x0000FFFF
|
|
ldrh r6, [r0]
|
|
cmp r2, r1
|
|
ldreq r0, _037FAC9C ; =0x0480805A
|
|
streqh r6, [r0]
|
|
beq _037FA95C
|
|
add r0, r7, #8
|
|
bl sub_037FA6C8
|
|
ldrh r1, [r0]
|
|
mov r0, r7
|
|
bl sub_037FAE50
|
|
ldr r1, _037FAC9C ; =0x0480805A
|
|
movs r8, r0
|
|
strh r6, [r1]
|
|
bne _037FAA04
|
|
ldrh r0, [r7]
|
|
and r0, r0, #0xf
|
|
cmp r0, #0xc
|
|
bne _037FA9F8
|
|
mov r0, #0x10
|
|
bl sub_027EB06C
|
|
b _037FA95C
|
|
_037FA9F8:
|
|
mov r0, #8
|
|
bl sub_027EB06C
|
|
b _037FA95C
|
|
_037FAA04:
|
|
ldr r0, _037FAC98 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x600
|
|
ldrh r0, [r0, #0x90]
|
|
tst r0, #8
|
|
beq _037FAA2C
|
|
ldrh r0, [r8, #0x14]
|
|
tst r0, #0x4000
|
|
movne r0, #0
|
|
strneh r0, [r5, #2]
|
|
_037FAA2C:
|
|
ldrh r0, [r8, #8]
|
|
mov r6, #1
|
|
tst r0, #0x200
|
|
beq _037FAA84
|
|
ldrh r0, [r8, #0x14]
|
|
mov r0, r0, lsl #0x15
|
|
mov r0, r0, lsr #0x1f
|
|
cmp r0, #1
|
|
beq _037FAA60
|
|
ldrh r0, [r8, #0x2a]
|
|
mov r0, r0, lsl #0x1c
|
|
movs r0, r0, lsr #0x1c
|
|
beq _037FAC30
|
|
_037FAA60:
|
|
add r0, r4, #0x188
|
|
add r1, r4, #0x1e8
|
|
sub r2, r8, #0x10
|
|
mov r6, #0
|
|
bl sub_037F8988
|
|
mov r0, #2
|
|
mov r1, #9
|
|
bl sub_037F8598
|
|
b _037FAC30
|
|
_037FAA84:
|
|
and r0, r0, #0xf
|
|
cmp r0, #0xf
|
|
addls pc, pc, r0, lsl #2
|
|
b _037FAC30
|
|
_037FAA94: ; jump table
|
|
b _037FAB20 ; case 0
|
|
b _037FAB08 ; case 1
|
|
b _037FAC30 ; case 2
|
|
b _037FAC30 ; case 3
|
|
b _037FAC30 ; case 4
|
|
b _037FAB50 ; case 5
|
|
b _037FAC30 ; case 6
|
|
b _037FAC30 ; case 7
|
|
b _037FAAD4 ; case 8
|
|
b _037FAC30 ; case 9
|
|
b _037FAC30 ; case 10
|
|
b _037FAC30 ; case 11
|
|
b _037FABA8 ; case 12
|
|
b _037FABFC ; case 13
|
|
b _037FAB88 ; case 14
|
|
b _037FAB88 ; case 15
|
|
_037FAAD4:
|
|
ldrh r0, [r8, #0x14]
|
|
and r0, r0, #0xf
|
|
cmp r0, #8
|
|
bne _037FAC30
|
|
add r0, r4, #0x188
|
|
add r1, r4, #0x1c4
|
|
sub r2, r8, #0x10
|
|
mov r6, #0
|
|
bl sub_037F8988
|
|
mov r0, #2
|
|
mov r1, #6
|
|
bl sub_037F8598
|
|
b _037FAC30
|
|
_037FAB08:
|
|
ldrh r0, [r8, #0x14]
|
|
cmp r0, #0x80
|
|
bne _037FAC30
|
|
mov r0, r8
|
|
bl sub_027F2840
|
|
b _037FAC30
|
|
_037FAB20:
|
|
ldrh r0, [r8, #0x14]
|
|
tst r0, #0xf
|
|
bne _037FAC30
|
|
add r0, r4, #0x188
|
|
add r1, r4, #0x1dc
|
|
sub r2, r8, #0x10
|
|
mov r6, #0
|
|
bl sub_037F8988
|
|
mov r0, #1
|
|
mov r1, #7
|
|
bl sub_037F8598
|
|
b _037FAC30
|
|
_037FAB50:
|
|
ldrh r1, [r8, #0x14]
|
|
rsb r0, r6, #0xe800
|
|
and r0, r1, r0
|
|
cmp r0, #0xa4
|
|
bne _037FAC30
|
|
add r0, r4, #0x188
|
|
add r1, r4, #0x1dc
|
|
sub r2, r8, #0x10
|
|
mov r6, #0
|
|
bl sub_037F8988
|
|
mov r0, #1
|
|
mov r1, #7
|
|
bl sub_037F8598
|
|
b _037FAC30
|
|
_037FAB88:
|
|
ldrh r1, [r8, #0x14]
|
|
ldr r0, _037FACA8 ; =0x0000E7BF
|
|
and r0, r1, r0
|
|
cmp r0, #0x118
|
|
bne _037FAC30
|
|
mov r0, r8
|
|
bl sub_027F25C0
|
|
b _037FAC30
|
|
_037FABA8:
|
|
ldrh r1, [r8, #0x14]
|
|
rsb r0, r6, #0xe800
|
|
and r0, r1, r0
|
|
cmp r0, #0x228
|
|
bne _037FAC30
|
|
ldr r0, _037FAC98 ; =0x0380FFF4
|
|
ldr r1, _037FAC98 ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x300
|
|
ldrh r0, [r0, #0x54]
|
|
cmp r0, #0
|
|
ldreq r0, _037FACAC ; =0x0480803C
|
|
streqh r6, [r0]
|
|
ldr r2, [r1]
|
|
mov r0, r8
|
|
ldr r1, [r2, #0x5ac]
|
|
add r1, r1, #1
|
|
str r1, [r2, #0x5ac]
|
|
bl sub_027F2444
|
|
mov r6, r0
|
|
b _037FAC30
|
|
_037FABFC:
|
|
ldrh r1, [r8, #0x14]
|
|
rsb r0, r6, #0xe800
|
|
and r0, r1, r0
|
|
cmp r0, #0x218
|
|
bne _037FAC30
|
|
ldr r1, _037FAC98 ; =0x0380FFF4
|
|
mov r0, r8
|
|
ldr r2, [r1]
|
|
ldr r1, [r2, #0x5b0]
|
|
add r1, r1, #1
|
|
str r1, [r2, #0x5b0]
|
|
bl sub_027F276C
|
|
mov r6, r0
|
|
_037FAC30:
|
|
cmp r6, #0
|
|
beq _037FAC44
|
|
add r0, r4, #0x188
|
|
sub r1, r8, #0x10
|
|
bl sub_037F8908
|
|
_037FAC44:
|
|
ldr r3, _037FAC98 ; =0x0380FFF4
|
|
ldr r0, [r3]
|
|
add r0, r0, #0x600
|
|
ldrh r0, [r0, #0x90]
|
|
tst r0, #1
|
|
beq _037FA95C
|
|
ldr r2, _037FACA4 ; =0x0000FFFF
|
|
ldr r1, _037FACB0 ; =0x04805F60
|
|
mov r6, #0
|
|
_037FAC68:
|
|
cmp r7, r1
|
|
ldrhs r0, [r3]
|
|
add r6, r6, #1
|
|
addhs r0, r0, #0x300
|
|
ldrhsh r0, [r0, #0xde]
|
|
subhs r7, r7, r0
|
|
cmp r6, #7
|
|
strh r2, [r7], #2
|
|
blo _037FAC68
|
|
b _037FA95C
|
|
_037FAC90:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FAC98: .word 0x0380FFF4
|
|
_037FAC9C: .word 0x0480805A
|
|
_037FACA0: .word 0x000008C6
|
|
_037FACA4: .word 0x0000FFFF
|
|
_037FACA8: .word 0x0000E7BF
|
|
_037FACAC: .word 0x0480803C
|
|
_037FACB0: .word 0x04805F60
|
|
arm_func_end sub_037FA948
|
|
|
|
arm_func_start sub_037FACB4
|
|
sub_037FACB4: ; 0x037FACB4
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _037FAD8C ; =0x0380FFF4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2c
|
|
add r4, r0, #0x400
|
|
ldrh r0, [r4, #0x3c]
|
|
cmp r0, #0
|
|
beq _037FAD84
|
|
ldr r1, [r4, #0x90]
|
|
ldr r0, [r4, #0x44]
|
|
ldrh r1, [r1, #0x10]
|
|
ldrh r0, [r0, #2]
|
|
cmp r1, r0
|
|
beq _037FACF0
|
|
bl sub_037FA948
|
|
_037FACF0:
|
|
ldr r0, [r4, #0x44]
|
|
ldrh r0, [r0, #4]
|
|
ands r2, r0, #0xff
|
|
ldr r0, _037FAD8C ; =0x0380FFF4
|
|
ldrne r1, [r0]
|
|
ldrne r0, [r1, #0x5a0]
|
|
addne r0, r0, r2
|
|
ldreq r1, [r0]
|
|
ldreq r0, [r1, #0x5a0]
|
|
addeq r0, r0, #1
|
|
str r0, [r1, #0x5a0]
|
|
ldrh r1, [r4, #0x40]
|
|
ldr r0, _037FAD8C ; =0x0380FFF4
|
|
add r1, r1, #1
|
|
strh r1, [r4, #0x40]
|
|
ldr ip, [r4, #0x90]
|
|
ldr r1, [r4, #0x44]
|
|
ldrh r3, [ip, #0x10]
|
|
ldrh r2, [r1, #2]
|
|
mov r1, #0
|
|
eor r2, r3, r2
|
|
strh r2, [ip, #0x12]
|
|
ldr r2, [r4, #0x90]
|
|
ldrh r2, [r2, #0x10]
|
|
strh r2, [r4, #0xa0]
|
|
strh r1, [r4, #0x3c]
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x300
|
|
ldrh r0, [r0, #0xea]
|
|
cmp r0, #0
|
|
beq _037FAD70
|
|
bl sub_027E9E94
|
|
_037FAD70:
|
|
ldr r0, _037FAD8C ; =0x0380FFF4
|
|
ldr r1, [r4, #0x90]
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x188
|
|
bl sub_037F8D58
|
|
_037FAD84:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FAD8C: .word 0x0380FFF4
|
|
arm_func_end sub_037FACB4
|
|
|
|
arm_func_start sub_037FAD90
|
|
sub_037FAD90: ; 0x037FAD90
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _037FAE44 ; =0x0380FFF4
|
|
ldr r2, _037FAE48 ; =0x04808088
|
|
ldr r1, [r0]
|
|
ldrh r0, [r2]
|
|
add r4, r1, #0x17c
|
|
cmp r0, #0
|
|
bne _037FADD0
|
|
ldrh r0, [r4, #0x38]
|
|
cmp r0, #0
|
|
beq _037FADD0
|
|
mov r1, #8
|
|
mov r0, #2
|
|
strh r1, [r2, #0x26]
|
|
bl sub_027EFEF4
|
|
b _037FAE3C
|
|
_037FADD0:
|
|
add r0, r1, #0x500
|
|
ldrh r1, [r0, #0x32]
|
|
ldrh r2, [r0, #0x2e]
|
|
mvn r0, r1
|
|
tst r2, r0
|
|
bne _037FAE08
|
|
ldr r0, _037FAE4C ; =0x048080AE
|
|
mov r1, #8
|
|
strh r1, [r0]
|
|
ldrh r0, [r4, #0x38]
|
|
cmp r0, #0
|
|
beq _037FAE08
|
|
mov r0, #2
|
|
bl sub_027EFEF4
|
|
_037FAE08:
|
|
ldr r0, _037FAE4C ; =0x048080AE
|
|
mov r1, #5
|
|
strh r1, [r0]
|
|
ldrh r0, [r4, #0x2c]
|
|
cmp r0, #0
|
|
beq _037FAE28
|
|
mov r0, #1
|
|
bl sub_027EFEF4
|
|
_037FAE28:
|
|
ldrh r0, [r4, #0x20]
|
|
cmp r0, #0
|
|
beq _037FAE3C
|
|
mov r0, #0
|
|
bl sub_027EFEF4
|
|
_037FAE3C:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FAE44: .word 0x0380FFF4
|
|
_037FAE48: .word 0x04808088
|
|
_037FAE4C: .word 0x048080AE
|
|
arm_func_end sub_037FAD90
|
|
|
|
arm_func_start sub_037FAE50
|
|
sub_037FAE50: ; 0x037FAE50
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r2, _037FAEBC ; =0x0380FFF4
|
|
mov r5, r1
|
|
ldr r1, [r2]
|
|
mov r6, r0
|
|
add r0, r1, #0x188
|
|
add r1, r5, #0x22
|
|
bl sub_037F886C
|
|
movs r4, r0
|
|
moveq r0, #0
|
|
beq _037FAEB4
|
|
mov r1, r6
|
|
add r0, r4, #0x18
|
|
add r2, r5, #0xc
|
|
bl sub_027EAC00
|
|
sub r0, r5, #0x18
|
|
strh r0, [r4, #0x16]
|
|
ldrh r0, [r4, #0x22]
|
|
ldrh r1, [r4, #0x1e]
|
|
and r0, r0, #0xff
|
|
and r1, r1, #0xff
|
|
mov r0, r0, lsl #0x10
|
|
orr r0, r1, r0, lsr #8
|
|
strh r0, [r4, #0x1e]
|
|
add r0, r4, #0x10
|
|
_037FAEB4:
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FAEBC: .word 0x0380FFF4
|
|
arm_func_end sub_037FAE50
|
|
|
|
arm_func_start sub_037FAEC0
|
|
sub_037FAEC0: ; 0x037FAEC0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r1, _037FB190 ; =0x0380FFF4
|
|
mov r0, #0
|
|
ldr r7, [r1]
|
|
mov r2, #0xb0
|
|
add r1, r7, #0x2c
|
|
add r4, r1, #0x400
|
|
mov r1, r4
|
|
add r5, r7, #0x344
|
|
add r6, r7, #0x31c
|
|
bl sub_037FDFD0
|
|
add r0, r7, #0x400
|
|
mov r1, #0
|
|
strh r1, [r0, #0x2c]
|
|
str r1, [r4, #0xc]
|
|
strh r1, [r4, #0x14]
|
|
str r1, [r4, #0x20]
|
|
strh r1, [r4, #0x28]
|
|
ldr r0, _037FB194 ; =0x0000FFFF
|
|
str r1, [r4, #0x34]
|
|
strh r0, [r4, #0xa2]
|
|
strh r0, [r4, #0xa4]
|
|
ldrh r0, [r5, #0xc]
|
|
cmp r0, #3
|
|
addls pc, pc, r0, lsl #2
|
|
b _037FB174
|
|
_037FAF28: ; jump table
|
|
b _037FAF38 ; case 0
|
|
b _037FAFB4 ; case 1
|
|
b _037FB050 ; case 2
|
|
b _037FB0FC ; case 3
|
|
_037FAF38:
|
|
ldr r7, _037FB198 ; =0x04804170
|
|
ldr r0, _037FB19C ; =0x04804026
|
|
str r7, [r4, #8]
|
|
sub r1, r7, #0x148
|
|
str r1, [r4, #0x1c]
|
|
sub r2, r7, #0x170
|
|
ldr r1, _037FB1A0 ; =sub_027F02FC
|
|
str r2, [r4, #0x30]
|
|
ldr r2, _037FB1A4 ; =sub_027F0478
|
|
str r1, [r4, #0x10]
|
|
ldr r1, _037FB1A8 ; =sub_027F0944
|
|
str r2, [r4, #0x24]
|
|
ldr r3, _037FB1AC ; =0x0000B6B8
|
|
str r1, [r4, #0x38]
|
|
sub r1, r7, #0x14c
|
|
ldr r2, _037FB1B0 ; =0x00001D46
|
|
strh r3, [r1]
|
|
strh r2, [r0]
|
|
strh r3, [r7, #-4]
|
|
add r0, r0, #0x148
|
|
strh r2, [r0]
|
|
add r1, r7, #0x620
|
|
ldr r0, _037FB1B4 ; =0x04804792
|
|
strh r3, [r1]
|
|
strh r2, [r0]
|
|
mov r1, #8
|
|
ldr r0, _037FB1B8 ; =0x048080AE
|
|
strh r1, [r5, #0x8a]
|
|
mov r1, #1
|
|
strh r1, [r0]
|
|
b _037FB174
|
|
_037FAFB4:
|
|
ldr r3, _037FB1BC ; =0x04804AA0
|
|
ldr r2, _037FB1C0 ; =0x04804334
|
|
str r3, [r4, #8]
|
|
sub r0, r3, #0x148
|
|
str r0, [r4, #0x1c]
|
|
ldr r0, _037FB1A0 ; =sub_027F02FC
|
|
str r2, [r4, #0x30]
|
|
ldr r1, _037FB1A4 ; =sub_027F0478
|
|
str r0, [r4, #0x10]
|
|
ldr r0, _037FB1C4 ; =sub_027F09AC
|
|
str r1, [r4, #0x24]
|
|
ldr ip, _037FB1C8 ; =0x04804956
|
|
str r0, [r4, #0x38]
|
|
sub r1, r2, #0xfc
|
|
str r1, [r4, #0x80]
|
|
sub r7, r2, #0x334
|
|
ldr r0, _037FB1AC ; =0x0000B6B8
|
|
str r7, [r4, #0x44]
|
|
sub r7, r2, #0x100
|
|
ldr lr, _037FB1B0 ; =0x00001D46
|
|
strh r0, [r7]
|
|
strh lr, [r2, #-0xfe]
|
|
strh r0, [r2, #-4]
|
|
strh lr, [r2, #-2]
|
|
add r2, r2, #0x620
|
|
strh r0, [r2]
|
|
strh lr, [ip]
|
|
strh r0, [r3, #-4]
|
|
add r2, ip, #0x148
|
|
strh lr, [r2]
|
|
add r3, r3, #0x620
|
|
ldr r2, _037FB1CC ; =0x048050C2
|
|
strh r0, [r3]
|
|
strh lr, [r2]
|
|
mov r0, #0x208
|
|
strh r0, [r5, #0x8a]
|
|
str r1, [r4, #0x80]
|
|
bl sub_027F1204
|
|
b _037FB174
|
|
_037FB050:
|
|
ldr r1, _037FB1D0 ; =0x048045D8
|
|
ldr r3, _037FB1D4 ; =0x04804232
|
|
str r1, [r4, #8]
|
|
sub r0, r1, #0x148
|
|
str r0, [r4, #0x1c]
|
|
sub r2, r1, #0x170
|
|
ldr ip, _037FB1D8 ; =0x04804000
|
|
ldr r0, _037FB1A0 ; =sub_027F02FC
|
|
str r2, [r4, #0x30]
|
|
ldr r2, _037FB1A4 ; =sub_027F0478
|
|
str r0, [r4, #0x10]
|
|
ldr r0, _037FB1A8 ; =sub_027F0944
|
|
str r2, [r4, #0x24]
|
|
str r0, [r4, #0x38]
|
|
str ip, [r4, #0x58]
|
|
add r2, ip, #0x234
|
|
ldr r0, _037FB1AC ; =0x0000B6B8
|
|
str r2, [r4, #0x6c]
|
|
add r2, ip, #0x230
|
|
ldr r4, _037FB1B0 ; =0x00001D46
|
|
strh r0, [r2]
|
|
strh r4, [r3]
|
|
sub r2, r1, #0x174
|
|
strh r0, [r2]
|
|
add r2, r3, #0x234
|
|
strh r4, [r2]
|
|
sub r2, r1, #0x14c
|
|
strh r0, [r2]
|
|
add r2, r3, #0x25c
|
|
strh r4, [r2]
|
|
strh r0, [r1, #-4]
|
|
add r2, r3, #0x3a4
|
|
strh r4, [r2]
|
|
add r2, r1, #0x620
|
|
ldr r1, _037FB1DC ; =0x04804BFA
|
|
strh r0, [r2]
|
|
strh r4, [r1]
|
|
mov r1, #0x108
|
|
ldr r0, _037FB1B8 ; =0x048080AE
|
|
strh r1, [r5, #0x8a]
|
|
mov r1, #0xd
|
|
strh r1, [r0]
|
|
b _037FB174
|
|
_037FB0FC:
|
|
ldr ip, _037FB198 ; =0x04804170
|
|
ldr r0, _037FB19C ; =0x04804026
|
|
str ip, [r4, #8]
|
|
sub r1, ip, #0x148
|
|
str r1, [r4, #0x1c]
|
|
sub r2, ip, #0x170
|
|
ldr r1, _037FB1A0 ; =sub_027F02FC
|
|
str r2, [r4, #0x30]
|
|
ldr r2, _037FB1A4 ; =sub_027F0478
|
|
str r1, [r4, #0x10]
|
|
ldr r1, _037FB1A8 ; =sub_027F0944
|
|
str r2, [r4, #0x24]
|
|
ldr r3, _037FB1AC ; =0x0000B6B8
|
|
str r1, [r4, #0x38]
|
|
sub r1, ip, #0x14c
|
|
ldr r2, _037FB1B0 ; =0x00001D46
|
|
strh r3, [r1]
|
|
strh r2, [r0]
|
|
strh r3, [ip, #-4]
|
|
add r0, r0, #0x148
|
|
strh r2, [r0]
|
|
add r1, ip, #0x620
|
|
ldr r0, _037FB1B4 ; =0x04804792
|
|
strh r3, [r1]
|
|
strh r2, [r0]
|
|
mov r1, #0x108
|
|
ldr r0, _037FB1B8 ; =0x048080AE
|
|
strh r1, [r5, #0x8a]
|
|
mov r1, #0xd
|
|
strh r1, [r0]
|
|
_037FB174:
|
|
ldrh r0, [r6, #0x18]
|
|
cmp r0, #0
|
|
ldrneh r0, [r5, #0x8a]
|
|
orrne r0, r0, #0x4000
|
|
strneh r0, [r5, #0x8a]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB190: .word 0x0380FFF4
|
|
_037FB194: .word 0x0000FFFF
|
|
_037FB198: .word 0x04804170
|
|
_037FB19C: .word 0x04804026
|
|
_037FB1A0: .word sub_027F02FC
|
|
_037FB1A4: .word sub_027F0478
|
|
_037FB1A8: .word sub_027F0944
|
|
_037FB1AC: .word 0x0000B6B8
|
|
_037FB1B0: .word 0x00001D46
|
|
_037FB1B4: .word 0x04804792
|
|
_037FB1B8: .word 0x048080AE
|
|
_037FB1BC: .word 0x04804AA0
|
|
_037FB1C0: .word 0x04804334
|
|
_037FB1C4: .word sub_027F09AC
|
|
_037FB1C8: .word 0x04804956
|
|
_037FB1CC: .word 0x048050C2
|
|
_037FB1D0: .word 0x048045D8
|
|
_037FB1D4: .word 0x04804232
|
|
_037FB1D8: .word 0x04804000
|
|
_037FB1DC: .word 0x04804BFA
|
|
arm_func_end sub_037FAEC0
|
|
|
|
arm_func_start sub_037FB1E0
|
|
sub_037FB1E0: ; 0x037FB1E0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _037FB2D8 ; =0x0380FFF4
|
|
mov r0, #0
|
|
ldr r3, [r1]
|
|
mov r2, #0x50
|
|
add r1, r3, #0xdc
|
|
add r5, r1, #0x400
|
|
mov r1, r5
|
|
add r4, r3, #0x344
|
|
bl sub_037FDFD0
|
|
ldr r1, _037FB2DC ; =0x04808030
|
|
mov r2, #0x8000
|
|
ldr r0, _037FB2D8 ; =0x0380FFF4
|
|
strh r2, [r1]
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x300
|
|
ldrh r0, [r0, #0x50]
|
|
cmp r0, #3
|
|
addls pc, pc, r0, lsl #2
|
|
b _037FB25C
|
|
_037FB230: ; jump table
|
|
b _037FB240 ; case 0
|
|
b _037FB248 ; case 1
|
|
b _037FB250 ; case 2
|
|
b _037FB258 ; case 3
|
|
_037FB240:
|
|
ldr r6, _037FB2E0 ; =0x00000794
|
|
b _037FB25C
|
|
_037FB248:
|
|
ldr r6, _037FB2E4 ; =0x000010C4
|
|
b _037FB25C
|
|
_037FB250:
|
|
ldr r6, _037FB2E8 ; =0x00000BFC
|
|
b _037FB25C
|
|
_037FB258:
|
|
ldr r6, _037FB2E0 ; =0x00000794
|
|
_037FB25C:
|
|
ldr r3, _037FB2EC ; =0x04808050
|
|
add r0, r6, #0x4000
|
|
ldr r1, _037FB2F0 ; =0x00005F60
|
|
add r2, r0, #0x4800000
|
|
mov r0, r6, lsl #0xf
|
|
strh r2, [r3]
|
|
mov r0, r0, lsr #0x10
|
|
strh r0, [r3, #6]
|
|
strh r1, [r3, #2]
|
|
strh r0, [r3, #0xa]
|
|
ldr r2, _037FB2F4 ; =0x0000FFFF
|
|
strh r0, [r5, #4]
|
|
sub r0, r1, #0x4000
|
|
strh r2, [r5]
|
|
sub r0, r0, r6
|
|
strh r0, [r4, #0x9a]
|
|
sub r0, r1, #2
|
|
strh r0, [r3, #0x12]
|
|
rsb r0, r2, #0x18000
|
|
strh r0, [r3, #-0x20]
|
|
add r0, r3, #0x1fc
|
|
ldr r1, _037FB2F8 ; =0x0480824E
|
|
strh r2, [r0]
|
|
ldr r0, _037FB2FC ; =0x04805F70
|
|
strh r2, [r1]
|
|
strh r2, [r0]
|
|
strh r2, [r0, #2]
|
|
strh r2, [r0, #0xe]
|
|
strh r2, [r0, #6]
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB2D8: .word 0x0380FFF4
|
|
_037FB2DC: .word 0x04808030
|
|
_037FB2E0: .word 0x00000794
|
|
_037FB2E4: .word 0x000010C4
|
|
_037FB2E8: .word 0x00000BFC
|
|
_037FB2EC: .word 0x04808050
|
|
_037FB2F0: .word 0x00005F60
|
|
_037FB2F4: .word 0x0000FFFF
|
|
_037FB2F8: .word 0x0480824E
|
|
_037FB2FC: .word 0x04805F70
|
|
arm_func_end sub_037FB1E0
|
|
|
|
arm_func_start sub_037FB300
|
|
sub_037FB300: ; 0x037FB300
|
|
ldr r1, _037FB328 ; =0x0480819C
|
|
mov r2, #0xfa0
|
|
b _037FB31C
|
|
_037FB30C:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bxne lr
|
|
sub r2, r2, #1
|
|
_037FB31C:
|
|
cmp r2, #0
|
|
bne _037FB30C
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB328: .word 0x0480819C
|
|
arm_func_end sub_037FB300
|
|
|
|
arm_func_start sub_037FB32C
|
|
sub_037FB32C: ; 0x037FB32C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #8
|
|
ldr r2, _037FB3AC ; =0x000082EA
|
|
mov r3, #0
|
|
umull lr, ip, r0, r2
|
|
mla ip, r0, r3, ip
|
|
mov r0, r3
|
|
mla ip, r0, r2, ip
|
|
mov r0, lr, lsr #6
|
|
mov r4, #1
|
|
mov r5, r1
|
|
mov r1, ip, lsr #6
|
|
orr r0, r0, ip, lsl #26
|
|
mov r2, #0x3e8
|
|
str r4, [sp, #4]
|
|
bl sub_03806B80
|
|
add r3, sp, #4
|
|
str r3, [sp]
|
|
ldr r2, _037FB3B0 ; =0x0380FFF4
|
|
mov r3, r5
|
|
ldr r2, [r2]
|
|
add ip, r2, #0x234
|
|
mov r2, r1
|
|
mov r1, r0
|
|
add r0, ip, #0x400
|
|
bl sub_037FD4DC
|
|
_037FB394:
|
|
ldr r0, [sp, #4]
|
|
cmp r0, #0
|
|
bne _037FB394
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB3AC: .word 0x000082EA
|
|
_037FB3B0: .word 0x0380FFF4
|
|
arm_func_end sub_037FB32C
|
|
|
|
arm_func_start sub_037FB3B4
|
|
sub_037FB3B4: ; 0x037FB3B4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _037FB418 ; =0x04808028
|
|
ldr lr, _037FB41C ; =0x04000208
|
|
mov r5, #1
|
|
add r2, r1, #0x1ec
|
|
add r3, r1, #0x174
|
|
mov ip, #0
|
|
b _037FB408
|
|
_037FB3D4:
|
|
ldrh r4, [lr]
|
|
strh ip, [lr]
|
|
ldrh r0, [r3]
|
|
and r0, r0, #3
|
|
cmp r0, #3
|
|
ldrneh r0, [r2]
|
|
cmpne r0, #5
|
|
cmpne r0, #7
|
|
cmpne r0, #8
|
|
strneh ip, [r1]
|
|
ldrh r0, [lr]
|
|
movne r5, ip
|
|
strh r4, [lr]
|
|
_037FB408:
|
|
cmp r5, #0
|
|
bne _037FB3D4
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB418: .word 0x04808028
|
|
_037FB41C: .word 0x04000208
|
|
arm_func_end sub_037FB3B4
|
|
|
|
arm_func_start sub_037FB420
|
|
sub_037FB420: ; 0x037FB420
|
|
ldr r1, _037FB450 ; =0x0480815E
|
|
mov r2, #0
|
|
b _037FB440
|
|
_037FB42C:
|
|
ldrh r0, [r1]
|
|
tst r0, #1
|
|
moveq r0, #0
|
|
bxeq lr
|
|
add r2, r2, #1
|
|
_037FB440:
|
|
cmp r2, #0x2800
|
|
blo _037FB42C
|
|
mov r0, #1
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB450: .word 0x0480815E
|
|
arm_func_end sub_037FB420
|
|
|
|
arm_func_start sub_037FB454
|
|
sub_037FB454: ; 0x037FB454
|
|
ldr r1, _037FB484 ; =0x04808180
|
|
mov r2, #0
|
|
b _037FB474
|
|
_037FB460:
|
|
ldrh r0, [r1]
|
|
tst r0, #1
|
|
moveq r0, #0
|
|
bxeq lr
|
|
add r2, r2, #1
|
|
_037FB474:
|
|
cmp r2, #0x2800
|
|
blo _037FB460
|
|
mov r0, #1
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB484: .word 0x04808180
|
|
arm_func_end sub_037FB454
|
|
|
|
arm_func_start HardwareInterrupt
|
|
HardwareInterrupt: ; 0x037FB488
|
|
stmdb sp!, {lr}
|
|
mov ip, #0x4000000
|
|
add ip, ip, #0x210
|
|
ldr r1, [ip, #-8]
|
|
cmp r1, #0
|
|
beq _037FB4A4
|
|
b _037FB4A8
|
|
_037FB4A4:
|
|
ldmia sp!, {pc}
|
|
_037FB4A8:
|
|
ldmia ip, {r1, r2}
|
|
ands r1, r1, r2
|
|
beq _037FB4B8
|
|
b _037FB4BC
|
|
_037FB4B8:
|
|
ldmia sp!, {pc}
|
|
_037FB4BC:
|
|
mov r3, #1
|
|
mov r0, #0
|
|
_037FB4C4:
|
|
ands r2, r1, r3, lsl r0
|
|
beq _037FB4D0
|
|
b _037FB4D4
|
|
_037FB4D0:
|
|
add r0, r0, #1
|
|
_037FB4D4:
|
|
beq _037FB4C4
|
|
str r2, [ip, #4]
|
|
ldr r1, _037FB4EC ; =_038074F4
|
|
ldr r0, [r1, r0, lsl #2]
|
|
ldr lr, _037FB4F0 ; =ReturnFromInterrupt
|
|
bx r0
|
|
.align 2, 0
|
|
_037FB4EC: .word _038074F4
|
|
_037FB4F0: .word ReturnFromInterrupt
|
|
arm_func_end HardwareInterrupt
|
|
|
|
arm_func_start ReturnFromInterrupt
|
|
ReturnFromInterrupt: ; 0x037FB4F4
|
|
ldr ip, _037FB630 ; =_03807608
|
|
mov r3, #0
|
|
ldr ip, [ip]
|
|
mov r2, #1
|
|
cmp ip, #0
|
|
beq _037FB544
|
|
_037FB50C:
|
|
str r2, [ip, #0x48]
|
|
str r3, [ip, #0x5c]
|
|
str r3, [ip, #0x60]
|
|
ldr r0, [ip, #0x64]
|
|
str r3, [ip, #0x64]
|
|
mov ip, r0
|
|
cmp ip, #0
|
|
bne _037FB50C
|
|
ldr ip, _037FB630 ; =_03807608
|
|
str r3, [ip]
|
|
str r3, [ip, #4]
|
|
ldr ip, _037FB634 ; =_038076A4
|
|
mov r1, #1
|
|
strh r1, [ip]
|
|
_037FB544:
|
|
ldr ip, _037FB634 ; =_038076A4
|
|
ldrh r1, [ip]
|
|
cmp r1, #0
|
|
beq _037FB558
|
|
b _037FB55C
|
|
_037FB558:
|
|
ldr pc, [sp], #0x4
|
|
_037FB55C:
|
|
mov r1, #0
|
|
strh r1, [ip]
|
|
mov r3, #0xd2
|
|
msr cpsr_c, r3
|
|
add r2, ip, #8
|
|
ldr r1, [r2]
|
|
_037FB574:
|
|
cmp r1, #0
|
|
bne _037FB580
|
|
b _037FB584
|
|
_037FB580:
|
|
ldrh r0, [r1, #0x48]
|
|
_037FB584:
|
|
bne _037FB58C
|
|
b _037FB590
|
|
_037FB58C:
|
|
cmp r0, #1
|
|
_037FB590:
|
|
bne _037FB598
|
|
b _037FB59C
|
|
_037FB598:
|
|
ldr r1, [r1, #0x4c]
|
|
_037FB59C:
|
|
bne _037FB574
|
|
cmp r1, #0
|
|
bne _037FB5B4
|
|
_037FB5A8:
|
|
mov r3, #0x92
|
|
msr cpsr_c, r3
|
|
ldr pc, [sp], #0x4
|
|
_037FB5B4:
|
|
ldr r0, [ip, #4]
|
|
cmp r1, r0
|
|
beq _037FB5A8
|
|
ldr r3, [ip, #0xc]
|
|
cmp r3, #0
|
|
beq _037FB5DC
|
|
stmdb sp!, {r0, r1, ip}
|
|
mov lr, pc
|
|
bx r3
|
|
_037FB5D8:
|
|
ldmia sp!, {r0, r1, ip}
|
|
_037FB5DC:
|
|
str r1, [ip, #4]
|
|
mrs r2, spsr
|
|
str r2, [r0, #0]!
|
|
ldmib sp!, {r2, r3}
|
|
stmib r0!, {r2, r3}
|
|
ldmib sp!, {r2, r3, ip, lr}
|
|
stmib r0!, {r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^
|
|
stmib r0!, {lr}
|
|
mov r3, #0xd3
|
|
msr cpsr_c, r3
|
|
stmib r0!, {sp}
|
|
ldr sp, [r1, #0x44]
|
|
mov r3, #0xd2
|
|
msr cpsr_c, r3
|
|
ldr r2, [r1, #0]!
|
|
msr spsr_fc, r2
|
|
ldr lr, [r1, #0x40]
|
|
ldmib r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^
|
|
mov r0, r0
|
|
stmda sp!, {r0, r1, r2, r3, ip, lr}
|
|
ldmia sp!, {pc}
|
|
.align 2, 0
|
|
_037FB630: .word _03807608
|
|
_037FB634: .word _038076A4
|
|
arm_func_end ReturnFromInterrupt
|
|
|
|
arm_func_start sub_037FB638
|
|
sub_037FB638: ; 0x037FB638
|
|
bx lr
|
|
arm_func_end sub_037FB638
|
|
|
|
arm_func_start AudioInterrupt
|
|
AudioInterrupt: ; 0x037FB63C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r1, #0xc
|
|
mul r5, r0, r1
|
|
ldr r2, _037FB6B4 ; =_03807610
|
|
ldr r3, _037FB6B8 ; =_038074E0
|
|
mov r4, r0, lsl #1
|
|
ldr r1, [r2, r5]
|
|
mov r0, #0
|
|
ldrh r3, [r3, r4]
|
|
mov r4, #1
|
|
str r0, [r2, r5]
|
|
cmp r1, #0
|
|
mov r4, r4, lsl r3
|
|
beq _037FB684
|
|
ldr r0, _037FB6BC ; =_03807618
|
|
ldr r0, [r0, r5]
|
|
mov lr, pc
|
|
bx r1
|
|
_037FB684:
|
|
ldr r2, _037FB6C0 ; =0x0380FFF8
|
|
ldr r0, _037FB6C4 ; =_03807614
|
|
ldr r1, [r2]
|
|
orr r1, r1, r4
|
|
str r1, [r2]
|
|
ldr r0, [r0, r5]
|
|
cmp r0, #0
|
|
bne _037FB6AC
|
|
mov r0, r4
|
|
bl ClearIeFlag
|
|
_037FB6AC:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB6B4: .word _03807610
|
|
_037FB6B8: .word _038074E0
|
|
_037FB6BC: .word _03807618
|
|
_037FB6C0: .word 0x0380FFF8
|
|
_037FB6C4: .word _03807614
|
|
arm_func_end AudioInterrupt
|
|
|
|
arm_func_start sub_037FB6C8
|
|
sub_037FB6C8: ; 0x037FB6C8
|
|
ldr ip, _037FB6D4 ; =AudioInterrupt
|
|
mov r0, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_037FB6D4: .word AudioInterrupt
|
|
arm_func_end sub_037FB6C8
|
|
|
|
arm_func_start sub_037FB6D8
|
|
sub_037FB6D8: ; 0x037FB6D8
|
|
ldr ip, _037FB6E4 ; =AudioInterrupt
|
|
mov r0, #1
|
|
bx ip
|
|
.align 2, 0
|
|
_037FB6E4: .word AudioInterrupt
|
|
arm_func_end sub_037FB6D8
|
|
|
|
arm_func_start sub_037FB6E8
|
|
sub_037FB6E8: ; 0x037FB6E8
|
|
ldr ip, _037FB6F4 ; =AudioInterrupt
|
|
mov r0, #2
|
|
bx ip
|
|
.align 2, 0
|
|
_037FB6F4: .word AudioInterrupt
|
|
arm_func_end sub_037FB6E8
|
|
|
|
arm_func_start sub_037FB6F8
|
|
sub_037FB6F8: ; 0x037FB6F8
|
|
ldr ip, _037FB704 ; =AudioInterrupt
|
|
mov r0, #3
|
|
bx ip
|
|
.align 2, 0
|
|
_037FB704: .word AudioInterrupt
|
|
arm_func_end sub_037FB6F8
|
|
|
|
arm_func_start sub_037FB708
|
|
sub_037FB708: ; 0x037FB708
|
|
ldr ip, _037FB714 ; =AudioInterrupt
|
|
mov r0, #4
|
|
bx ip
|
|
.align 2, 0
|
|
_037FB714: .word AudioInterrupt
|
|
arm_func_end sub_037FB708
|
|
|
|
arm_func_start sub_037FB718
|
|
sub_037FB718: ; 0x037FB718
|
|
ldr ip, _037FB724 ; =AudioInterrupt
|
|
mov r0, #5
|
|
bx ip
|
|
.align 2, 0
|
|
_037FB724: .word AudioInterrupt
|
|
arm_func_end sub_037FB718
|
|
|
|
arm_func_start sub_037FB728
|
|
sub_037FB728: ; 0x037FB728
|
|
ldr ip, _037FB734 ; =AudioInterrupt
|
|
mov r0, #6
|
|
bx ip
|
|
.align 2, 0
|
|
_037FB734: .word AudioInterrupt
|
|
arm_func_end sub_037FB728
|
|
|
|
arm_func_start sub_037FB738
|
|
sub_037FB738: ; 0x037FB738
|
|
ldr ip, _037FB744 ; =AudioInterrupt
|
|
mov r0, #7
|
|
bx ip
|
|
.align 2, 0
|
|
_037FB744: .word AudioInterrupt
|
|
arm_func_end sub_037FB738
|
|
|
|
arm_func_start sub_037FB748
|
|
sub_037FB748: ; 0x037FB748
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _037FB78C ; =0x027FFC3C
|
|
ldr r0, _037FB790 ; =_03807610
|
|
ldr r1, [r2]
|
|
ldr r3, [r0, #0x60]
|
|
add r0, r1, #1
|
|
str r0, [r2]
|
|
cmp r3, #0
|
|
beq _037FB774
|
|
mov lr, pc
|
|
bx r3
|
|
_037FB774:
|
|
ldr r1, _037FB794 ; =0x0380FFF8
|
|
ldr r0, [r1]
|
|
orr r0, r0, #1
|
|
str r0, [r1]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB78C: .word 0x027FFC3C
|
|
_037FB790: .word _03807610
|
|
_037FB794: .word 0x0380FFF8
|
|
arm_func_end sub_037FB748
|
|
|
|
arm_func_start sub_037FB798
|
|
sub_037FB798: ; 0x037FB798
|
|
ldr r0, _037FB7B4 ; =_03807608
|
|
mov r2, #0
|
|
str r2, [r0, #4]
|
|
ldr r1, _037FB7B8 ; =0x027FFC3C
|
|
str r2, [r0]
|
|
str r2, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB7B4: .word _03807608
|
|
_037FB7B8: .word 0x027FFC3C
|
|
arm_func_end sub_037FB798
|
|
|
|
arm_func_start sub_037FB7BC
|
|
sub_037FB7BC: ; 0x037FB7BC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
ldr r4, _037FB84C ; =_038074F4
|
|
mov sb, #0
|
|
mov r2, #0xc
|
|
ldr r5, _037FB850 ; =_03807670
|
|
ldr r7, _037FB854 ; =_03807610
|
|
mov r8, sb
|
|
mov lr, sb
|
|
mov ip, #1
|
|
mov r3, r2
|
|
_037FB7E4:
|
|
tst r0, #1
|
|
beq _037FB834
|
|
mov sl, r8
|
|
cmp sb, #8
|
|
blt _037FB808
|
|
cmp sb, #0xb
|
|
suble r6, sb, #8
|
|
mlale sl, r6, r3, r7
|
|
ble _037FB82C
|
|
_037FB808:
|
|
cmp sb, #3
|
|
blt _037FB820
|
|
cmp sb, #6
|
|
addle r6, sb, #1
|
|
mlale sl, r6, r2, r7
|
|
ble _037FB82C
|
|
_037FB820:
|
|
cmp sb, #0
|
|
strne r1, [r4, sb, lsl #2]
|
|
moveq sl, r5
|
|
_037FB82C:
|
|
cmp sl, #0
|
|
stmneia sl, {r1, ip, lr}
|
|
_037FB834:
|
|
add sb, sb, #1
|
|
cmp sb, #0x19
|
|
mov r0, r0, lsr #1
|
|
blt _037FB7E4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB84C: .word _038074F4
|
|
_037FB850: .word _03807670
|
|
_037FB854: .word _03807610
|
|
arm_func_end sub_037FB7BC
|
|
|
|
arm_func_start sub_037FB858
|
|
sub_037FB858: ; 0x037FB858
|
|
stmdb sp!, {r4, lr}
|
|
mov r3, #0xc
|
|
mul r4, r0, r3
|
|
ldr ip, _037FB898 ; =_03807640
|
|
ldr r3, _037FB89C ; =_03807648
|
|
str r1, [ip, r4]
|
|
add r0, r0, #3
|
|
mov r1, #1
|
|
mov r0, r1, lsl r0
|
|
str r2, [r3, r4]
|
|
bl sub_037FB8F0
|
|
ldr r0, _037FB8A0 ; =_03807644
|
|
mov r1, #1
|
|
str r1, [r0, r4]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB898: .word _03807640
|
|
_037FB89C: .word _03807648
|
|
_037FB8A0: .word _03807644
|
|
arm_func_end sub_037FB858
|
|
|
|
arm_func_start sub_037FB8A4
|
|
sub_037FB8A4: ; 0x037FB8A4
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl ClearImeFlag
|
|
ldr r1, _037FB8D4 ; =0x04000210
|
|
ldr r3, [r1]
|
|
sub r2, r1, #8
|
|
str r4, [r1]
|
|
ldrh r1, [r2]
|
|
strh r0, [r2]
|
|
mov r0, r3
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB8D4: .word 0x04000210
|
|
arm_func_end sub_037FB8A4
|
|
|
|
arm_func_start ClearImeFlag
|
|
ClearImeFlag: ; 0x037FB8D8
|
|
ldr r2, _037FB8EC ; =0x04000208
|
|
mov r1, #0
|
|
ldrh r0, [r2]
|
|
strh r1, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB8EC: .word 0x04000208
|
|
arm_func_end ClearImeFlag
|
|
|
|
arm_func_start sub_037FB8F0
|
|
sub_037FB8F0: ; 0x037FB8F0
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl ClearImeFlag
|
|
ldr ip, _037FB924 ; =0x04000210
|
|
ldr r3, [ip]
|
|
sub r2, ip, #8
|
|
orr r1, r3, r4
|
|
str r1, [ip]
|
|
ldrh r1, [r2]
|
|
strh r0, [r2]
|
|
mov r0, r3
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB924: .word 0x04000210
|
|
arm_func_end sub_037FB8F0
|
|
|
|
arm_func_start ClearIeFlag
|
|
ClearIeFlag: ; 0x037FB928
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl ClearImeFlag
|
|
ldr ip, _037FB960 ; =0x04000210
|
|
mvn r1, r4
|
|
ldr r3, [ip]
|
|
sub r2, ip, #8
|
|
and r1, r3, r1
|
|
str r1, [ip]
|
|
ldrh r1, [r2]
|
|
strh r0, [r2]
|
|
mov r0, r3
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB960: .word 0x04000210
|
|
arm_func_end ClearIeFlag
|
|
|
|
arm_func_start sub_037FB964
|
|
sub_037FB964: ; 0x037FB964
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl ClearImeFlag
|
|
ldr r1, _037FB994 ; =0x04000214
|
|
ldr r3, [r1]
|
|
sub r2, r1, #0xc
|
|
str r4, [r1]
|
|
ldrh r1, [r2]
|
|
strh r0, [r2]
|
|
mov r0, r3
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FB994: .word 0x04000214
|
|
arm_func_end sub_037FB964
|
|
|
|
arm_func_start sub_037FB998
|
|
sub_037FB998: ; 0x037FB998
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r0, _037FBA00 ; =_0380767C
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
bne _037FB9F8
|
|
ldr r4, _037FBA04 ; =0x027FFFF0
|
|
mov r2, #1
|
|
mov r1, #0
|
|
str r2, [r0]
|
|
strh r1, [r4, #6]
|
|
mov r5, #0x400
|
|
b _037FB9D0
|
|
_037FB9C8:
|
|
mov r0, r5
|
|
bl sub_037FBA0C
|
|
_037FB9D0:
|
|
ldrh r0, [r4, #4]
|
|
cmp r0, #0x7f
|
|
bne _037FB9C8
|
|
ldr r1, _037FBA08 ; =0x027FFFB8
|
|
mvn r0, #0
|
|
str r0, [r1]
|
|
mov r0, r0, lsl #0x10
|
|
str r0, [r1, #4]
|
|
mov r0, #0xbf
|
|
strh r0, [r4, #6]
|
|
_037FB9F8:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FBA00: .word _0380767C
|
|
_037FBA04: .word 0x027FFFF0
|
|
_037FBA08: .word 0x027FFFB8
|
|
arm_func_end sub_037FB998
|
|
|
|
arm_func_start sub_037FBA0C
|
|
sub_037FBA0C: ; 0x037FBA0C
|
|
ldr ip, _037FBA14 ; =sub_038037B8
|
|
bx ip
|
|
.align 2, 0
|
|
_037FBA14: .word sub_038037B8 + 1
|
|
arm_func_end sub_037FBA0C
|
|
|
|
arm_func_start sub_037FBA18
|
|
sub_037FBA18: ; 0x037FBA18
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r1
|
|
ldrh r1, [r7, #4]
|
|
mov r6, r2
|
|
cmp r0, r1
|
|
mov r5, r3
|
|
mvnne r0, #1
|
|
bne _037FBA8C
|
|
cmp r5, #0
|
|
beq _037FBA48
|
|
bl EnableIrqFiqFlags
|
|
b _037FBA4C
|
|
_037FBA48:
|
|
bl EnableIrqFlag
|
|
_037FBA4C:
|
|
mov r4, r0
|
|
mov r0, #0
|
|
strh r0, [r7, #4]
|
|
cmp r6, #0
|
|
beq _037FBA68
|
|
mov lr, pc
|
|
bx r6
|
|
_037FBA68:
|
|
mov r0, #0
|
|
str r0, [r7]
|
|
cmp r5, #0
|
|
mov r0, r4
|
|
beq _037FBA84
|
|
bl SetIrqFiqFlags
|
|
b _037FBA88
|
|
_037FBA84:
|
|
bl SetIrqFlag
|
|
_037FBA88:
|
|
mov r0, #0
|
|
_037FBA8C:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
arm_func_end sub_037FBA18
|
|
|
|
arm_func_start sub_037FBA94
|
|
sub_037FBA94: ; 0x037FBA94
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
movs r6, r3
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov r7, r2
|
|
beq _037FBAB4
|
|
bl EnableIrqFiqFlags
|
|
b _037FBAB8
|
|
_037FBAB4:
|
|
bl EnableIrqFlag
|
|
_037FBAB8:
|
|
mov r5, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl sub_037FE2AC
|
|
movs r4, r0
|
|
bne _037FBAE4
|
|
cmp r7, #0
|
|
beq _037FBAE0
|
|
mov lr, pc
|
|
bx r7
|
|
_037FBAE0:
|
|
strh sb, [r8, #4]
|
|
_037FBAE4:
|
|
cmp r6, #0
|
|
mov r0, r5
|
|
beq _037FBAF8
|
|
bl SetIrqFiqFlags
|
|
b _037FBAFC
|
|
_037FBAF8:
|
|
bl SetIrqFlag
|
|
_037FBAFC:
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
arm_func_end sub_037FBA94
|
|
|
|
arm_func_start sub_037FBB08
|
|
sub_037FBB08: ; 0x037FBB08
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r6, _037FBB50 ; =0x027FFFE8
|
|
ldr r5, _037FBB54 ; =sub_037FBBA4
|
|
mov r8, r0
|
|
mov r7, #0x400
|
|
mov r4, #1
|
|
b _037FBB2C
|
|
_037FBB24:
|
|
mov r0, r7
|
|
bl sub_037FBA0C
|
|
_037FBB2C:
|
|
mov r0, r8
|
|
mov r1, r6
|
|
mov r2, r5
|
|
mov r3, r4
|
|
bl sub_037FBA94
|
|
cmp r0, #0
|
|
bgt _037FBB24
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FBB50: .word 0x027FFFE8
|
|
_037FBB54: .word sub_037FBBA4
|
|
arm_func_end sub_037FBB08
|
|
|
|
arm_func_start sub_037FBB58
|
|
sub_037FBB58: ; 0x037FBB58
|
|
ldr ip, _037FBB6C ; =sub_037FBA18
|
|
ldr r1, _037FBB70 ; =0x027FFFE8
|
|
ldr r2, _037FBB74 ; =sub_037FBBA8
|
|
mov r3, #1
|
|
bx ip
|
|
.align 2, 0
|
|
_037FBB6C: .word sub_037FBA18
|
|
_037FBB70: .word 0x027FFFE8
|
|
_037FBB74: .word sub_037FBBA8
|
|
arm_func_end sub_037FBB58
|
|
|
|
arm_func_start sub_037FBB78
|
|
sub_037FBB78: ; 0x037FBB78
|
|
ldr r1, _037FBB80 ; =sub_037FBB58
|
|
bx r1
|
|
.align 2, 0
|
|
_037FBB80: .word sub_037FBB58
|
|
arm_func_end sub_037FBB78
|
|
|
|
arm_func_start sub_037FBB84
|
|
sub_037FBB84: ; 0x037FBB84
|
|
ldr ip, _037FBB98 ; =sub_037FBA94
|
|
ldr r1, _037FBB9C ; =0x027FFFE8
|
|
ldr r2, _037FBBA0 ; =sub_037FBBA4
|
|
mov r3, #1
|
|
bx ip
|
|
.align 2, 0
|
|
_037FBB98: .word sub_037FBA94
|
|
_037FBB9C: .word 0x027FFFE8
|
|
_037FBBA0: .word sub_037FBBA4
|
|
arm_func_end sub_037FBB84
|
|
|
|
arm_func_start sub_037FBBA4
|
|
sub_037FBBA4: ; 0x037FBBA4
|
|
bx lr
|
|
arm_func_end sub_037FBBA4
|
|
|
|
arm_func_start sub_037FBBA8
|
|
sub_037FBBA8: ; 0x037FBBA8
|
|
bx lr
|
|
arm_func_end sub_037FBBA8
|
|
|
|
arm_func_start sub_037FBBAC
|
|
sub_037FBBAC: ; 0x037FBBAC
|
|
ldr ip, _037FBBC0 ; =sub_037FBA18
|
|
ldr r1, _037FBBC4 ; =0x027FFFE0
|
|
ldr r2, _037FBBC8 ; =sub_037FBBF0
|
|
mov r3, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_037FBBC0: .word sub_037FBA18
|
|
_037FBBC4: .word 0x027FFFE0
|
|
_037FBBC8: .word sub_037FBBF0
|
|
arm_func_end sub_037FBBAC
|
|
|
|
arm_func_start sub_037FBBCC
|
|
sub_037FBBCC: ; 0x037FBBCC
|
|
ldr ip, _037FBBE0 ; =sub_037FBA94
|
|
ldr r1, _037FBBE4 ; =0x027FFFE0
|
|
ldr r2, _037FBBE8 ; =sub_037FBBEC
|
|
mov r3, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_037FBBE0: .word sub_037FBA94
|
|
_037FBBE4: .word 0x027FFFE0
|
|
_037FBBE8: .word sub_037FBBEC
|
|
arm_func_end sub_037FBBCC
|
|
|
|
arm_func_start sub_037FBBEC
|
|
sub_037FBBEC: ; 0x037FBBEC
|
|
bx lr
|
|
arm_func_end sub_037FBBEC
|
|
|
|
arm_func_start sub_037FBBF0
|
|
sub_037FBBF0: ; 0x037FBBF0
|
|
bx lr
|
|
arm_func_end sub_037FBBF0
|
|
|
|
arm_func_start sub_037FBBF4
|
|
sub_037FBBF4: ; 0x037FBBF4
|
|
ldrh r0, [r0, #4]
|
|
bx lr
|
|
arm_func_end sub_037FBBF4
|
|
|
|
arm_func_start sub_037FBBFC
|
|
sub_037FBBFC: ; 0x037FBBFC
|
|
ldr r3, _037FBC9C ; =0x027FFFB8
|
|
ldr r1, [r3]
|
|
mov r2, #0
|
|
mov r0, #0x80000000
|
|
_037FBC0C:
|
|
tst r1, r0
|
|
bne _037FBC28
|
|
add r2, r2, #1
|
|
cmp r2, #0x20
|
|
beq _037FBC28
|
|
mov r0, r0, lsr #1
|
|
b _037FBC0C
|
|
_037FBC28:
|
|
cmp r2, #0x20
|
|
bne _037FBC34
|
|
b _037FBC38
|
|
_037FBC34:
|
|
mov r0, #0x80
|
|
_037FBC38:
|
|
bne _037FBC80
|
|
add r3, r3, #4
|
|
ldr r1, [r3]
|
|
mov r2, #0
|
|
mov r0, #0x80000000
|
|
_037FBC4C:
|
|
tst r1, r0
|
|
bne _037FBC68
|
|
add r2, r2, #1
|
|
cmp r2, #0x20
|
|
beq _037FBC68
|
|
mov r0, r0, lsr #1
|
|
b _037FBC4C
|
|
_037FBC68:
|
|
cmp r2, #0x20
|
|
ldr r0, _037FBCA0 ; =0xFFFFFFFD
|
|
beq _037FBC78
|
|
b _037FBC7C
|
|
_037FBC78:
|
|
bx lr
|
|
_037FBC7C:
|
|
mov r0, #0xa0
|
|
_037FBC80:
|
|
add r0, r0, r2
|
|
mov r1, #0x80000000
|
|
mov r1, r1, lsr r2
|
|
ldr r2, [r3]
|
|
bic r2, r2, r1
|
|
str r2, [r3]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FBC9C: .word 0x027FFFB8
|
|
_037FBCA0: .word 0xFFFFFFFD
|
|
arm_func_end sub_037FBBFC
|
|
|
|
arm_func_start sub_037FBCA4
|
|
sub_037FBCA4: ; 0x037FBCA4
|
|
ldr r3, _037FBCE8 ; =0x027FFFB8
|
|
cmp r0, #0xa0
|
|
bpl _037FBCB4
|
|
b _037FBCB8
|
|
_037FBCB4:
|
|
add r3, r3, #4
|
|
_037FBCB8:
|
|
bpl _037FBCC0
|
|
b _037FBCC4
|
|
_037FBCC0:
|
|
sub r0, r0, #0xa0
|
|
_037FBCC4:
|
|
bmi _037FBCCC
|
|
b _037FBCD0
|
|
_037FBCCC:
|
|
sub r0, r0, #0x80
|
|
_037FBCD0:
|
|
mov r1, #0x80000000
|
|
mov r1, r1, lsr r0
|
|
ldr r2, [r3]
|
|
orr r2, r2, r1
|
|
str r2, [r3]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FBCE8: .word 0x027FFFB8
|
|
arm_func_end sub_037FBCA4
|
|
|
|
arm_func_start sub_037FBCEC
|
|
sub_037FBCEC: ; 0x037FBCEC
|
|
ldr ip, [r0]
|
|
b _037FBD00
|
|
_037FBCF4:
|
|
cmp ip, r1
|
|
bxeq lr
|
|
ldr ip, [ip, #0x64]
|
|
_037FBD00:
|
|
cmp ip, #0
|
|
beq _037FBD18
|
|
ldr r3, [ip, #0x54]
|
|
ldr r2, [r1, #0x54]
|
|
cmp r3, r2
|
|
bls _037FBCF4
|
|
_037FBD18:
|
|
cmp ip, #0
|
|
bne _037FBD44
|
|
ldr r2, [r0, #4]
|
|
cmp r2, #0
|
|
streq r1, [r0]
|
|
strne r1, [r2, #0x64]
|
|
str r2, [r1, #0x60]
|
|
mov r2, #0
|
|
str r2, [r1, #0x64]
|
|
str r1, [r0, #4]
|
|
bx lr
|
|
_037FBD44:
|
|
ldr r2, [ip, #0x60]
|
|
cmp r2, #0
|
|
streq r1, [r0]
|
|
strne r1, [r2, #0x64]
|
|
str r2, [r1, #0x60]
|
|
str ip, [r1, #0x64]
|
|
str r1, [ip, #0x60]
|
|
bx lr
|
|
arm_func_end sub_037FBCEC
|
|
|
|
arm_func_start sub_037FBD64
|
|
sub_037FBD64: ; 0x037FBD64
|
|
stmdb sp!, {r3, lr}
|
|
ldr lr, [r0]
|
|
mov r2, lr
|
|
b _037FBDA8
|
|
_037FBD74:
|
|
ldr r3, [r2, #0x64]
|
|
cmp r2, r1
|
|
bne _037FBDA4
|
|
ldr ip, [r2, #0x60]
|
|
cmp lr, r2
|
|
streq r3, [r0]
|
|
strne r3, [ip, #0x64]
|
|
ldr r1, [r0, #4]
|
|
cmp r1, r2
|
|
streq ip, [r0, #4]
|
|
strne ip, [r3, #0x60]
|
|
b _037FBDB0
|
|
_037FBDA4:
|
|
mov r2, r3
|
|
_037FBDA8:
|
|
cmp r2, #0
|
|
bne _037FBD74
|
|
_037FBDB0:
|
|
mov r0, r2
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
arm_func_end sub_037FBD64
|
|
|
|
arm_func_start sub_037FBDBC
|
|
sub_037FBDBC: ; 0x037FBDBC
|
|
ldr r2, [r0]
|
|
cmp r2, #0
|
|
beq _037FBDE4
|
|
ldr r1, [r2, #0x10]
|
|
str r1, [r0]
|
|
cmp r1, #0
|
|
movne r0, #0
|
|
strne r0, [r1, #0x14]
|
|
moveq r1, #0
|
|
streq r1, [r0, #4]
|
|
_037FBDE4:
|
|
mov r0, r2
|
|
bx lr
|
|
arm_func_end sub_037FBDBC
|
|
|
|
arm_func_start sub_037FBDEC
|
|
sub_037FBDEC: ; 0x037FBDEC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _037FBE48 ; =_03807680
|
|
mov ip, #0
|
|
ldr lr, [r1, #0x2c]
|
|
mov r3, lr
|
|
b _037FBE0C
|
|
_037FBE04:
|
|
mov ip, r3
|
|
ldr r3, [r3, #0x4c]
|
|
_037FBE0C:
|
|
cmp r3, #0
|
|
beq _037FBE24
|
|
ldr r2, [r3, #0x54]
|
|
ldr r1, [r0, #0x54]
|
|
cmp r2, r1
|
|
blo _037FBE04
|
|
_037FBE24:
|
|
cmp ip, #0
|
|
ldreq r1, _037FBE48 ; =_03807680
|
|
streq lr, [r0, #0x4c]
|
|
streq r0, [r1, #0x2c]
|
|
ldrne r1, [ip, #0x4c]
|
|
strne r1, [r0, #0x4c]
|
|
strne r0, [ip, #0x4c]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FBE48: .word _03807680
|
|
arm_func_end sub_037FBDEC
|
|
|
|
arm_func_start sub_037FBE4C
|
|
sub_037FBE4C: ; 0x037FBE4C
|
|
ldr r1, _037FBE8C ; =_03807680
|
|
mov r2, #0
|
|
ldr r1, [r1, #0x2c]
|
|
b _037FBE64
|
|
_037FBE5C:
|
|
mov r2, r1
|
|
ldr r1, [r1, #0x4c]
|
|
_037FBE64:
|
|
cmp r1, #0
|
|
cmpne r1, r0
|
|
bne _037FBE5C
|
|
cmp r2, #0
|
|
ldreq r1, [r0, #0x4c]
|
|
ldreq r0, _037FBE8C ; =_03807680
|
|
streq r1, [r0, #0x2c]
|
|
ldrne r0, [r0, #0x4c]
|
|
strne r0, [r2, #0x4c]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FBE8C: .word _03807680
|
|
arm_func_end sub_037FBE4C
|
|
|
|
arm_func_start sub_037FBE90
|
|
sub_037FBE90: ; 0x037FBE90
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r0, _037FBF5C ; =_03807680
|
|
ldr r1, [r0, #4]
|
|
cmp r1, #0
|
|
bne _037FBF54
|
|
ldrh r0, [r0, #0x26]
|
|
ldr r4, _037FBF60 ; =_038076A4
|
|
cmp r0, #0
|
|
bne _037FBEC0
|
|
bl GetProcessorMode
|
|
cmp r0, #0x12
|
|
bne _037FBECC
|
|
_037FBEC0:
|
|
mov r0, #1
|
|
strh r0, [r4]
|
|
b _037FBF54
|
|
_037FBECC:
|
|
ldr r0, _037FBF5C ; =_03807680
|
|
ldr r0, [r0, #8]
|
|
ldr r6, [r0]
|
|
bl sub_037FC398
|
|
mov r5, r0
|
|
cmp r6, r5
|
|
cmpne r5, #0
|
|
beq _037FBF54
|
|
ldr r0, [r6, #0x48]
|
|
cmp r0, #2
|
|
beq _037FBF08
|
|
mov r0, r6
|
|
bl sub_037FC64C
|
|
cmp r0, #0
|
|
bne _037FBF54
|
|
_037FBF08:
|
|
ldr r0, _037FBF5C ; =_03807680
|
|
ldr r2, [r0]
|
|
cmp r2, #0
|
|
beq _037FBF28
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov lr, pc
|
|
bx r2
|
|
_037FBF28:
|
|
ldr r2, [r4, #0xc]
|
|
cmp r2, #0
|
|
beq _037FBF44
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov lr, pc
|
|
bx r2
|
|
_037FBF44:
|
|
ldr r1, _037FBF5C ; =_03807680
|
|
mov r0, r5
|
|
str r5, [r1, #0x28]
|
|
bl sub_037FC680
|
|
_037FBF54:
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FBF5C: .word _03807680
|
|
_037FBF60: .word _038076A4
|
|
arm_func_end sub_037FBE90
|
|
|
|
arm_func_start sub_037FBF64
|
|
sub_037FBF64: ; 0x037FBF64
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _037FC028 ; =_03807680
|
|
ldr r1, [r0, #0xc]
|
|
cmp r1, #0
|
|
bne _037FC020
|
|
ldr r1, _037FC02C ; =_038076A8
|
|
mov r2, #1
|
|
str r2, [r0, #0xc]
|
|
str r1, [r0, #8]
|
|
mov r1, #0x10
|
|
str r1, [r0, #0x12c]
|
|
mov r3, #0
|
|
str r3, [r0, #0x128]
|
|
str r2, [r0, #0x120]
|
|
str r3, [r0, #0x124]
|
|
ldr r2, _037FC030 ; =0x00000400
|
|
ldr r1, _037FC034 ; =_03807758
|
|
str r3, [r0, #0x130]
|
|
str r1, [r0, #0x2c]
|
|
str r1, [r0, #0x28]
|
|
cmp r2, #0
|
|
ldrle r0, _037FC038 ; =NitroSpMain
|
|
ldrgt r1, _037FC03C ; =0x00000400
|
|
ldrgt r0, _037FC040 ; =0x0380FF80
|
|
subgt r0, r0, r1
|
|
sub ip, r0, r2
|
|
ldr r2, _037FC03C ; =0x00000400
|
|
ldr r0, _037FC040 ; =0x0380FF80
|
|
ldr r1, _037FC028 ; =_03807680
|
|
sub r3, r0, r2
|
|
str r3, [r1, #0x150]
|
|
str ip, [r1, #0x14c]
|
|
mov r0, #0
|
|
ldr r2, _037FC044 ; =0xD73BFDF7
|
|
str r0, [r1, #0x154]
|
|
str r2, [r3, #-4]
|
|
ldr r2, [r1, #0x14c]
|
|
ldr ip, _037FC048 ; =0xFBDD37BB
|
|
ldr r3, _037FC04C ; =_038076A4
|
|
str ip, [r2]
|
|
str r0, [r1, #0x15c]
|
|
str r0, [r1, #0x158]
|
|
strh r0, [r1, #0x24]
|
|
ldr r2, _037FC050 ; =0x027FFFA4
|
|
strh r0, [r1, #0x26]
|
|
str r3, [r2]
|
|
bl sub_037FC52C
|
|
_037FC020:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC028: .word _03807680
|
|
_037FC02C: .word _038076A8
|
|
_037FC030: .word 0x00000400
|
|
_037FC034: .word _03807758
|
|
_037FC038: .word NitroSpMain
|
|
_037FC03C: .word 0x00000400
|
|
_037FC040: .word 0x0380FF80
|
|
_037FC044: .word 0xD73BFDF7
|
|
_037FC048: .word 0xFBDD37BB
|
|
_037FC04C: .word _038076A4
|
|
_037FC050: .word 0x027FFFA4
|
|
arm_func_end sub_037FBF64
|
|
|
|
arm_func_start sub_037FC054
|
|
sub_037FC054: ; 0x037FC054
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r8, r0
|
|
mov r5, r1
|
|
mov r7, r2
|
|
mov r6, r3
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FC14C ; =_03807680
|
|
ldr r2, [sp, #0x1c]
|
|
ldr r3, [r1, #0x20]
|
|
mov r4, r0
|
|
add r0, r3, #1
|
|
str r0, [r1, #0x20]
|
|
str r2, [r8, #0x54]
|
|
str r0, [r8, #0x50]
|
|
mov r1, #0
|
|
str r1, [r8, #0x48]
|
|
mov r0, r8
|
|
str r1, [r8, #0x58]
|
|
bl sub_037FBDEC
|
|
ldr r0, [sp, #0x18]
|
|
mov r1, r5
|
|
str r6, [r8, #0x78]
|
|
sub r5, r6, r0
|
|
sub r2, r6, #4
|
|
str r5, [r8, #0x74]
|
|
mov ip, #0
|
|
str ip, [r8, #0x7c]
|
|
ldr r6, _037FC150 ; =0xD73BFDF7
|
|
ldr r0, [r8, #0x78]
|
|
ldr r3, _037FC154 ; =0xFBDD37BB
|
|
str r6, [r0, #-4]
|
|
ldr r0, [r8, #0x74]
|
|
str r3, [r0]
|
|
str ip, [r8, #0x84]
|
|
mov r0, r8
|
|
str ip, [r8, #0x80]
|
|
bl sub_037FC5C8
|
|
ldr r2, _037FC158 ; =sub_037FC15C
|
|
str r7, [r8, #4]
|
|
str r2, [r8, #0x3c]
|
|
ldr r2, [sp, #0x18]
|
|
add r1, r5, #4
|
|
mov r0, #0
|
|
sub r2, r2, #8
|
|
bl sub_037FDFD0
|
|
mov r0, #0
|
|
str r0, [r8, #0x68]
|
|
str r0, [r8, #0x6c]
|
|
str r0, [r8, #0x70]
|
|
str r0, [r8, #0x98]
|
|
str r0, [r8, #0x5c]
|
|
str r0, [r8, #0x64]
|
|
str r0, [r8, #0x60]
|
|
add r1, r8, #0x88
|
|
mov r2, #0xc
|
|
bl sub_037FDFD0
|
|
mov r1, #0
|
|
mov r0, r4
|
|
str r1, [r8, #0x94]
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC14C: .word _03807680
|
|
_037FC150: .word 0xD73BFDF7
|
|
_037FC154: .word 0xFBDD37BB
|
|
_037FC158: .word sub_037FC15C
|
|
arm_func_end sub_037FC054
|
|
|
|
arm_func_start sub_037FC15C
|
|
sub_037FC15C: ; 0x037FC15C
|
|
stmdb sp!, {r3, lr}
|
|
bl EnableIrqFlag
|
|
ldr r0, _037FC17C ; =_03807680
|
|
mov r1, #0
|
|
ldr r0, [r0, #0x28]
|
|
bl sub_037FC180
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC17C: .word _03807680
|
|
arm_func_end sub_037FC15C
|
|
|
|
arm_func_start sub_037FC180
|
|
sub_037FC180: ; 0x037FC180
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r2, _037FC1D8 ; =_03807680
|
|
mov r5, r0
|
|
ldr r2, [r2, #0x1c]
|
|
mov r4, r1
|
|
cmp r2, #0
|
|
beq _037FC1C8
|
|
ldr r1, _037FC1DC ; =sub_037FC1E0
|
|
bl sub_037FC5C8
|
|
str r4, [r5, #4]
|
|
ldr r1, [r5]
|
|
mov r0, r5
|
|
orr r1, r1, #0x80
|
|
str r1, [r5]
|
|
mov r1, #1
|
|
str r1, [r5, #0x48]
|
|
bl sub_037FC680
|
|
b _037FC1D0
|
|
_037FC1C8:
|
|
mov r0, r4
|
|
bl sub_037FC1E0
|
|
_037FC1D0:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC1D8: .word _03807680
|
|
_037FC1DC: .word sub_037FC1E0
|
|
arm_func_end sub_037FC180
|
|
|
|
arm_func_start sub_037FC1E0
|
|
sub_037FC1E0: ; 0x037FC1E0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _037FC21C ; =_03807680
|
|
ldr r1, [r1, #8]
|
|
ldr r3, [r1]
|
|
ldr r2, [r3, #0x98]
|
|
cmp r2, #0
|
|
beq _037FC210
|
|
mov r1, #0
|
|
str r1, [r3, #0x98]
|
|
mov lr, pc
|
|
bx r2
|
|
_037FC20C:
|
|
bl EnableIrqFlag
|
|
_037FC210:
|
|
bl sub_037FC220
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC21C: .word _03807680
|
|
arm_func_end sub_037FC1E0
|
|
|
|
arm_func_start sub_037FC220
|
|
sub_037FC220: ; 0x037FC220
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _037FC28C ; =_03807680
|
|
ldr r0, [r0, #8]
|
|
ldr r4, [r0]
|
|
bl sub_037FC558
|
|
mov r0, r4
|
|
bl sub_037FC96C
|
|
ldr r0, [r4, #0x5c]
|
|
cmp r0, #0
|
|
beq _037FC250
|
|
mov r1, r4
|
|
bl sub_037FBD64
|
|
_037FC250:
|
|
mov r0, r4
|
|
bl sub_037FBE4C
|
|
mov r1, #2
|
|
add r0, r4, #0x80
|
|
str r1, [r4, #0x48]
|
|
bl sub_037FC2E4
|
|
bl sub_037FC590
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
bl sub_037FBE90
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
bl sub_037FDE70
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC28C: .word _03807680
|
|
arm_func_end sub_037FC220
|
|
|
|
arm_func_start sub_037FC290
|
|
sub_037FC290: ; 0x037FC290
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FC2E0 ; =_03807680
|
|
mov r4, r0
|
|
ldr r0, [r1, #8]
|
|
cmp r6, #0
|
|
ldr r5, [r0]
|
|
beq _037FC2C4
|
|
mov r0, r6
|
|
mov r1, r5
|
|
str r6, [r5, #0x5c]
|
|
bl sub_037FBCEC
|
|
_037FC2C4:
|
|
mov r0, #0
|
|
str r0, [r5, #0x48]
|
|
bl sub_037FBE90
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC2E0: .word _03807680
|
|
arm_func_end sub_037FC290
|
|
|
|
arm_func_start sub_037FC2E4
|
|
sub_037FC2E4: ; 0x037FC2E4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl EnableIrqFlag
|
|
ldr r1, [r5]
|
|
mov r4, r0
|
|
cmp r1, #0
|
|
beq _037FC35C
|
|
mov r2, #0
|
|
mov r3, r2
|
|
mov r1, #1
|
|
mov r0, r2
|
|
b _037FC340
|
|
_037FC314:
|
|
beq _037FC330
|
|
ldr ip, [lr, #0x64]
|
|
str ip, [r5]
|
|
cmp ip, #0
|
|
strne r3, [ip, #0x60]
|
|
streq r2, [r5, #4]
|
|
streq r2, [lr, #0x5c]
|
|
_037FC330:
|
|
str r1, [lr, #0x48]
|
|
str r0, [lr, #0x5c]
|
|
str r0, [lr, #0x64]
|
|
str r0, [lr, #0x60]
|
|
_037FC340:
|
|
ldr lr, [r5]
|
|
cmp lr, #0
|
|
bne _037FC314
|
|
mov r0, #0
|
|
str r0, [r5, #4]
|
|
str r0, [r5]
|
|
bl sub_037FBE90
|
|
_037FC35C:
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_037FC2E4
|
|
|
|
arm_func_start sub_037FC36C
|
|
sub_037FC36C: ; 0x037FC36C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl EnableIrqFlag
|
|
mov r1, #1
|
|
mov r4, r0
|
|
str r1, [r5, #0x48]
|
|
bl sub_037FBE90
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_037FC36C
|
|
|
|
arm_func_start sub_037FC398
|
|
sub_037FC398: ; 0x037FC398
|
|
ldr r0, _037FC3BC ; =_03807680
|
|
ldr r0, [r0, #0x2c]
|
|
b _037FC3A8
|
|
_037FC3A4:
|
|
ldr r0, [r0, #0x4c]
|
|
_037FC3A8:
|
|
cmp r0, #0
|
|
ldrne r1, [r0, #0x48]
|
|
cmpne r1, #1
|
|
bne _037FC3A4
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC3BC: .word _03807680
|
|
arm_func_end sub_037FC398
|
|
|
|
arm_func_start sub_037FC3C0
|
|
sub_037FC3C0: ; 0x037FC3C0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r2, _037FC460 ; =_03807680
|
|
mov r7, r0
|
|
ldr r8, [r2, #0x2c]
|
|
mov r6, r1
|
|
mov r4, #0
|
|
bl EnableIrqFlag
|
|
mov r5, r0
|
|
b _037FC3EC
|
|
_037FC3E4:
|
|
mov r4, r8
|
|
ldr r8, [r8, #0x4c]
|
|
_037FC3EC:
|
|
cmp r8, #0
|
|
cmpne r8, r7
|
|
bne _037FC3E4
|
|
cmp r8, #0
|
|
ldrne r0, _037FC464 ; =_038076B4
|
|
cmpne r8, r0
|
|
bne _037FC418
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
mov r0, #0
|
|
b _037FC458
|
|
_037FC418:
|
|
ldr r0, [r8, #0x54]
|
|
cmp r0, r6
|
|
beq _037FC44C
|
|
cmp r4, #0
|
|
ldreq r1, [r7, #0x4c]
|
|
ldreq r0, _037FC460 ; =_03807680
|
|
streq r1, [r0, #0x2c]
|
|
ldrne r0, [r7, #0x4c]
|
|
strne r0, [r4, #0x4c]
|
|
mov r0, r7
|
|
str r6, [r7, #0x54]
|
|
bl sub_037FBDEC
|
|
bl sub_037FBE90
|
|
_037FC44C:
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
mov r0, #1
|
|
_037FC458:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC460: .word _03807680
|
|
_037FC464: .word _038076B4
|
|
arm_func_end sub_037FC3C0
|
|
|
|
arm_func_start sub_037FC468
|
|
sub_037FC468: ; 0x037FC468
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x34
|
|
mov r4, r0
|
|
add r0, sp, #8
|
|
bl sub_037FD3A0
|
|
ldr r0, _037FC500 ; =_03807680
|
|
ldr r0, [r0, #8]
|
|
ldr r0, [r0]
|
|
str r0, [sp, #4]
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FC504 ; =0x000082EA
|
|
mov r2, #0
|
|
umull ip, r3, r4, r1
|
|
mla r3, r4, r2, r3
|
|
mla r3, r2, r1, r3
|
|
mov r5, r0
|
|
mov r1, ip, lsr #6
|
|
ldr r4, [sp, #4]
|
|
add r0, sp, #8
|
|
str r0, [r4, #0x94]
|
|
add r2, sp, #4
|
|
str r2, [sp]
|
|
mov r2, r3, lsr #6
|
|
orr r1, r1, r3, lsl #26
|
|
ldr r3, _037FC508 ; =sub_037FC50C
|
|
bl sub_037FD4DC
|
|
mov r4, #0
|
|
b _037FC4E0
|
|
_037FC4D8:
|
|
mov r0, r4
|
|
bl sub_037FC290
|
|
_037FC4E0:
|
|
ldr r0, [sp, #4]
|
|
cmp r0, #0
|
|
bne _037FC4D8
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
add sp, sp, #0x34
|
|
ldmia sp!, {r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC500: .word _03807680
|
|
_037FC504: .word 0x000082EA
|
|
_037FC508: .word sub_037FC50C
|
|
arm_func_end sub_037FC468
|
|
|
|
arm_func_start sub_037FC50C
|
|
sub_037FC50C: ; 0x037FC50C
|
|
ldr r2, [r0]
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldr ip, _037FC528 ; =sub_037FC36C
|
|
mov r0, r2
|
|
str r1, [r2, #0x94]
|
|
bx ip
|
|
.align 2, 0
|
|
_037FC528: .word sub_037FC36C
|
|
arm_func_end sub_037FC50C
|
|
|
|
arm_func_start sub_037FC52C
|
|
sub_037FC52C: ; 0x037FC52C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FC554 ; =_03807680
|
|
ldr r4, [r1, #0x30]
|
|
str r5, [r1, #0x30]
|
|
bl SetIrqFlag
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC554: .word _03807680
|
|
arm_func_end sub_037FC52C
|
|
|
|
arm_func_start sub_037FC558
|
|
sub_037FC558: ; 0x037FC558
|
|
stmdb sp!, {r4, lr}
|
|
bl EnableIrqFlag
|
|
ldr r2, _037FC58C ; =_03807680
|
|
mvn r1, #0
|
|
ldr r3, [r2, #4]
|
|
cmp r3, r1
|
|
addlo r1, r3, #1
|
|
strlo r1, [r2, #4]
|
|
movlo r4, r3
|
|
bl SetIrqFlag
|
|
mov r0, r4
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC58C: .word _03807680
|
|
arm_func_end sub_037FC558
|
|
|
|
arm_func_start sub_037FC590
|
|
sub_037FC590: ; 0x037FC590
|
|
stmdb sp!, {r4, lr}
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FC5C4 ; =_03807680
|
|
mov r4, #0
|
|
ldr r3, [r1, #4]
|
|
cmp r3, #0
|
|
subne r2, r3, #1
|
|
strne r2, [r1, #4]
|
|
movne r4, r3
|
|
bl SetIrqFlag
|
|
mov r0, r4
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC5C4: .word _03807680
|
|
arm_func_end sub_037FC590
|
|
|
|
arm_func_start sub_037FC5C8
|
|
sub_037FC5C8: ; 0x037FC5C8
|
|
add r1, r1, #4
|
|
str r1, [r0, #0x40]
|
|
str r2, [r0, #0x44]
|
|
sub r2, r2, #0x40
|
|
tst r2, #4
|
|
bne _037FC5E4
|
|
b _037FC5E8
|
|
_037FC5E4:
|
|
sub r2, r2, #4
|
|
_037FC5E8:
|
|
str r2, [r0, #0x38]
|
|
ands r1, r1, #1
|
|
bne _037FC5F8
|
|
b _037FC5FC
|
|
_037FC5F8:
|
|
mov r1, #0x3f
|
|
_037FC5FC:
|
|
beq _037FC604
|
|
b _037FC608
|
|
_037FC604:
|
|
mov r1, #0x1f
|
|
_037FC608:
|
|
str r1, [r0]
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
str r1, [r0, #8]
|
|
str r1, [r0, #0xc]
|
|
str r1, [r0, #0x10]
|
|
str r1, [r0, #0x14]
|
|
str r1, [r0, #0x18]
|
|
str r1, [r0, #0x1c]
|
|
str r1, [r0, #0x20]
|
|
str r1, [r0, #0x24]
|
|
str r1, [r0, #0x28]
|
|
str r1, [r0, #0x2c]
|
|
str r1, [r0, #0x30]
|
|
str r1, [r0, #0x34]
|
|
str r1, [r0, #0x3c]
|
|
bx lr
|
|
arm_func_end sub_037FC5C8
|
|
|
|
arm_func_start sub_037FC64C
|
|
sub_037FC64C: ; 0x037FC64C
|
|
add r1, r0, #0
|
|
mrs r2, cpsr
|
|
str r2, [r1], #4
|
|
mov r0, #0xd3
|
|
msr cpsr_c, r0
|
|
str sp, [r1, #0x40]
|
|
msr cpsr_c, r2
|
|
mov r0, #1
|
|
stmia r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr}
|
|
add r0, pc, #0x8 ; =sub_037FC680
|
|
str r0, [r1, #0x3c]
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end sub_037FC64C
|
|
|
|
arm_func_start sub_037FC680
|
|
sub_037FC680: ; 0x037FC680
|
|
mrs r1, cpsr
|
|
bic r1, r1, #0x1f
|
|
orr r1, r1, #0xd3
|
|
msr cpsr_c, r1
|
|
ldr r1, [r0], #4
|
|
msr spsr_fsxc, r1
|
|
ldr sp, [r0, #0x40]
|
|
ldr lr, [r0, #0x3c]
|
|
ldmia r0, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^
|
|
mov r0, r0
|
|
subs pc, lr, #4
|
|
arm_func_end sub_037FC680
|
|
|
|
arm_func_start sub_037FC6AC
|
|
sub_037FC6AC: ; 0x037FC6AC
|
|
mov r3, #0
|
|
str r3, [r0, #4]
|
|
str r3, [r0]
|
|
str r3, [r0, #0xc]
|
|
str r3, [r0, #8]
|
|
str r1, [r0, #0x10]
|
|
str r2, [r0, #0x14]
|
|
str r3, [r0, #0x18]
|
|
str r3, [r0, #0x1c]
|
|
bx lr
|
|
arm_func_end sub_037FC6AC
|
|
|
|
arm_func_start sub_037FC6D4
|
|
sub_037FC6D4: ; 0x037FC6D4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r2
|
|
mov r6, r0
|
|
mov r5, r1
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
and r7, r7, #1
|
|
b _037FC714
|
|
_037FC6F4:
|
|
cmp r7, #0
|
|
bne _037FC70C
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
mov r0, #0
|
|
b _037FC758
|
|
_037FC70C:
|
|
mov r0, r6
|
|
bl sub_037FC290
|
|
_037FC714:
|
|
ldr r2, [r6, #0x1c]
|
|
ldr r1, [r6, #0x14]
|
|
cmp r1, r2
|
|
ble _037FC6F4
|
|
ldr r0, [r6, #0x18]
|
|
add r0, r0, r2
|
|
bl _s32_div_f
|
|
ldr r2, [r6, #0x10]
|
|
add r0, r6, #8
|
|
str r5, [r2, r1, lsl #2]
|
|
ldr r1, [r6, #0x1c]
|
|
add r1, r1, #1
|
|
str r1, [r6, #0x1c]
|
|
bl sub_037FC2E4
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
mov r0, #1
|
|
_037FC758:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
arm_func_end sub_037FC6D4
|
|
|
|
arm_func_start sub_037FC760
|
|
sub_037FC760: ; 0x037FC760
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r2
|
|
mov r6, r0
|
|
mov r5, r1
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
and r7, r7, #1
|
|
b _037FC7A0
|
|
_037FC780:
|
|
cmp r7, #0
|
|
bne _037FC798
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
mov r0, #0
|
|
b _037FC7F4
|
|
_037FC798:
|
|
add r0, r6, #8
|
|
bl sub_037FC290
|
|
_037FC7A0:
|
|
ldr r0, [r6, #0x1c]
|
|
cmp r0, #0
|
|
beq _037FC780
|
|
cmp r5, #0
|
|
ldrne r1, [r6, #0x10]
|
|
ldrne r0, [r6, #0x18]
|
|
ldrne r0, [r1, r0, lsl #2]
|
|
strne r0, [r5]
|
|
ldr r0, [r6, #0x18]
|
|
ldr r1, [r6, #0x14]
|
|
add r0, r0, #1
|
|
bl _s32_div_f
|
|
str r1, [r6, #0x18]
|
|
ldr r1, [r6, #0x1c]
|
|
mov r0, r6
|
|
sub r1, r1, #1
|
|
str r1, [r6, #0x1c]
|
|
bl sub_037FC2E4
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
mov r0, #1
|
|
_037FC7F4:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
arm_func_end sub_037FC760
|
|
|
|
arm_func_start sub_037FC7FC
|
|
sub_037FC7FC: ; 0x037FC7FC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r6, r2
|
|
mov r7, r0
|
|
mov r4, r1
|
|
bl EnableIrqFlag
|
|
mov r5, r0
|
|
and r6, r6, #1
|
|
b _037FC83C
|
|
_037FC81C:
|
|
cmp r6, #0
|
|
bne _037FC834
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
mov r0, #0
|
|
b _037FC868
|
|
_037FC834:
|
|
add r0, r7, #8
|
|
bl sub_037FC290
|
|
_037FC83C:
|
|
ldr r0, [r7, #0x1c]
|
|
cmp r0, #0
|
|
beq _037FC81C
|
|
cmp r4, #0
|
|
ldrne r1, [r7, #0x10]
|
|
ldrne r0, [r7, #0x18]
|
|
ldrne r0, [r1, r0, lsl #2]
|
|
strne r0, [r4]
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
mov r0, #1
|
|
_037FC868:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
arm_func_end sub_037FC7FC
|
|
|
|
arm_func_start sub_037FC870
|
|
sub_037FC870: ; 0x037FC870
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
str r1, [r0]
|
|
str r1, [r0, #8]
|
|
str r1, [r0, #0xc]
|
|
bx lr
|
|
arm_func_end sub_037FC870
|
|
|
|
arm_func_start sub_037FC888
|
|
sub_037FC888: ; 0x037FC888
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r5, r0
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FC908 ; =_038076A4
|
|
mov r4, r0
|
|
ldr r7, [r1, #4]
|
|
mov r6, #0
|
|
_037FC8A4:
|
|
ldr r0, [r5, #8]
|
|
cmp r0, #0
|
|
bne _037FC8D0
|
|
str r7, [r5, #8]
|
|
ldr r1, [r5, #0xc]
|
|
mov r0, r7
|
|
add r2, r1, #1
|
|
mov r1, r5
|
|
str r2, [r5, #0xc]
|
|
bl sub_037FC9A4
|
|
b _037FC8F8
|
|
_037FC8D0:
|
|
cmp r0, r7
|
|
ldreq r0, [r5, #0xc]
|
|
addeq r0, r0, #1
|
|
streq r0, [r5, #0xc]
|
|
beq _037FC8F8
|
|
str r5, [r7, #0x68]
|
|
mov r0, r5
|
|
bl sub_037FC290
|
|
str r6, [r7, #0x68]
|
|
b _037FC8A4
|
|
_037FC8F8:
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC908: .word _038076A4
|
|
arm_func_end sub_037FC888
|
|
|
|
arm_func_start sub_037FC90C
|
|
sub_037FC90C: ; 0x037FC90C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FC968 ; =_038076A4
|
|
mov r4, r0
|
|
ldr r0, [r1, #4]
|
|
ldr r1, [r5, #8]
|
|
cmp r1, r0
|
|
bne _037FC958
|
|
ldr r1, [r5, #0xc]
|
|
subs r1, r1, #1
|
|
str r1, [r5, #0xc]
|
|
bne _037FC958
|
|
mov r1, r5
|
|
bl sub_037FC9C8
|
|
mov r1, #0
|
|
mov r0, r5
|
|
str r1, [r5, #8]
|
|
bl sub_037FC2E4
|
|
_037FC958:
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FC968: .word _038076A4
|
|
arm_func_end sub_037FC90C
|
|
|
|
arm_func_start sub_037FC96C
|
|
sub_037FC96C: ; 0x037FC96C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, #0
|
|
b _037FC990
|
|
_037FC97C:
|
|
add r0, r5, #0x6c
|
|
bl sub_037FBDBC
|
|
str r4, [r0, #0xc]
|
|
str r4, [r0, #8]
|
|
bl sub_037FC2E4
|
|
_037FC990:
|
|
ldr r0, [r5, #0x6c]
|
|
cmp r0, #0
|
|
bne _037FC97C
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_037FC96C
|
|
|
|
arm_func_start sub_037FC9A4
|
|
sub_037FC9A4: ; 0x037FC9A4
|
|
ldr r2, [r0, #0x70]
|
|
cmp r2, #0
|
|
streq r1, [r0, #0x6c]
|
|
strne r1, [r2, #0x10]
|
|
str r2, [r1, #0x14]
|
|
mov r2, #0
|
|
str r2, [r1, #0x10]
|
|
str r1, [r0, #0x70]
|
|
bx lr
|
|
arm_func_end sub_037FC9A4
|
|
|
|
arm_func_start sub_037FC9C8
|
|
sub_037FC9C8: ; 0x037FC9C8
|
|
ldr r2, [r1, #0x10]
|
|
ldr r1, [r1, #0x14]
|
|
cmp r2, #0
|
|
streq r1, [r0, #0x70]
|
|
strne r1, [r2, #0x14]
|
|
cmp r1, #0
|
|
streq r2, [r0, #0x6c]
|
|
strne r2, [r1, #0x10]
|
|
bx lr
|
|
arm_func_end sub_037FC9C8
|
|
|
|
arm_func_start sub_037FC9EC
|
|
sub_037FC9EC: ; 0x037FC9EC
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_037FCA1C
|
|
bl sub_037FE2B4
|
|
bl sub_037FB998
|
|
bl sub_037FB798
|
|
bl sub_037FD128
|
|
bl sub_037FD34C
|
|
bl sub_037FBF64
|
|
bl sub_037FDD7C
|
|
bl sub_03806388
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
arm_func_end sub_037FC9EC
|
|
|
|
arm_func_start sub_037FCA1C
|
|
sub_037FCA1C: ; 0x037FCA1C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _037FCA54 ; =_038077FC
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
bne _037FCA4C
|
|
mov r0, #1
|
|
str r0, [r1]
|
|
bl sub_037FCA58
|
|
mov r0, #7
|
|
bl sub_037FCA58
|
|
mov r0, #8
|
|
bl sub_037FCA58
|
|
_037FCA4C:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FCA54: .word _038077FC
|
|
arm_func_end sub_037FCA1C
|
|
|
|
arm_func_start sub_037FCA58
|
|
sub_037FCA58: ; 0x037FCA58
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl sub_037FCABC
|
|
mov r1, r4, lsl #2
|
|
add r1, r1, #0x2700000
|
|
add r1, r1, #0xff000
|
|
str r0, [r1, #0xdc4]
|
|
mov r0, r4
|
|
bl sub_037FCB38
|
|
mov r1, r4, lsl #2
|
|
add r1, r1, #0x2700000
|
|
add r1, r1, #0xff000
|
|
str r0, [r1, #0xda0]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_037FCA58
|
|
|
|
arm_func_start sub_037FCA94
|
|
sub_037FCA94: ; 0x037FCA94
|
|
mov r0, r0, lsl #2
|
|
add r0, r0, #0x2700000
|
|
add r0, r0, #0xff000
|
|
ldr r0, [r0, #0xdc4]
|
|
bx lr
|
|
arm_func_end sub_037FCA94
|
|
|
|
arm_func_start sub_037FCAA8
|
|
sub_037FCAA8: ; 0x037FCAA8
|
|
mov r0, r0, lsl #2
|
|
add r0, r0, #0x2700000
|
|
add r0, r0, #0xff000
|
|
ldr r0, [r0, #0xda0]
|
|
bx lr
|
|
arm_func_end sub_037FCAA8
|
|
|
|
arm_func_start sub_037FCABC
|
|
sub_037FCABC: ; 0x037FCABC
|
|
cmp r0, #1
|
|
beq _037FCAD8
|
|
cmp r0, #7
|
|
beq _037FCAE0
|
|
cmp r0, #8
|
|
beq _037FCAE8
|
|
b _037FCB1C
|
|
_037FCAD8:
|
|
ldr r0, _037FCB24 ; =0x027FF000
|
|
bx lr
|
|
_037FCAE0:
|
|
mov r0, #0x3800000
|
|
bx lr
|
|
_037FCAE8:
|
|
ldr r2, _037FCB28 ; =0x00000400
|
|
ldr r0, _037FCB2C ; =0x0380FF80
|
|
ldr r1, _037FCB30 ; =SDK_WRAM_ARENA_LO
|
|
sub r2, r0, r2
|
|
mov r0, #0x3800000
|
|
cmp r1, #0x3800000
|
|
movhi r0, r1
|
|
ldr r1, _037FCB34 ; =0x00000400
|
|
cmp r1, #0
|
|
bxeq lr
|
|
sublt r0, r0, r1
|
|
subge r0, r2, r1
|
|
bx lr
|
|
_037FCB1C:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_037FCB24: .word 0x027FF000
|
|
_037FCB28: .word 0x00000400
|
|
_037FCB2C: .word 0x0380FF80
|
|
_037FCB30: .word SDK_WRAM_ARENA_LO
|
|
_037FCB34: .word 0x00000400
|
|
arm_func_end sub_037FCABC
|
|
|
|
arm_func_start sub_037FCB38
|
|
sub_037FCB38: ; 0x037FCB38
|
|
cmp r0, #1
|
|
beq _037FCB54
|
|
cmp r0, #7
|
|
beq _037FCB5C
|
|
cmp r0, #8
|
|
beq _037FCB6C
|
|
b _037FCB80
|
|
_037FCB54:
|
|
ldr r0, _037FCB88 ; =SDK_SUBPRIV_ARENA_LO
|
|
bx lr
|
|
_037FCB5C:
|
|
ldr r0, _037FCB8C ; =SDK_WRAM_ARENA_LO
|
|
cmp r0, #0x3800000
|
|
movhi r0, #0x3800000
|
|
bx lr
|
|
_037FCB6C:
|
|
ldr r1, _037FCB8C ; =SDK_WRAM_ARENA_LO
|
|
mov r0, #0x3800000
|
|
cmp r1, #0x3800000
|
|
movhi r0, r1
|
|
bx lr
|
|
_037FCB80:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_037FCB88: .word SDK_SUBPRIV_ARENA_LO
|
|
_037FCB8C: .word SDK_WRAM_ARENA_LO
|
|
arm_func_end sub_037FCB38
|
|
|
|
arm_func_start sub_037FCB90
|
|
sub_037FCB90: ; 0x037FCB90
|
|
mov r0, r0, lsl #2
|
|
add r0, r0, #0x2700000
|
|
add r0, r0, #0xff000
|
|
str r1, [r0, #0xda0]
|
|
bx lr
|
|
arm_func_end sub_037FCB90
|
|
|
|
arm_func_start sub_037FCBA4
|
|
sub_037FCBA4: ; 0x037FCBA4
|
|
ldr r3, [r1, #4]
|
|
cmp r3, #0
|
|
ldrne r2, [r1]
|
|
strne r2, [r3]
|
|
ldr r2, [r1]
|
|
cmp r2, #0
|
|
ldreq r0, [r1, #4]
|
|
ldrne r1, [r1, #4]
|
|
strne r1, [r2, #4]
|
|
bx lr
|
|
arm_func_end sub_037FCBA4
|
|
|
|
arm_func_start sub_037FCBCC
|
|
sub_037FCBCC: ; 0x037FCBCC
|
|
stmdb sp!, {r3, lr}
|
|
mov lr, r0
|
|
mov ip, #0
|
|
b _037FCBEC
|
|
_037FCBDC:
|
|
cmp r1, lr
|
|
bls _037FCBF4
|
|
mov ip, lr
|
|
ldr lr, [lr, #4]
|
|
_037FCBEC:
|
|
cmp lr, #0
|
|
bne _037FCBDC
|
|
_037FCBF4:
|
|
stmia r1, {ip, lr}
|
|
cmp lr, #0
|
|
beq _037FCC30
|
|
str r1, [lr]
|
|
ldr r3, [r1, #8]
|
|
add r2, r1, r3
|
|
cmp r2, lr
|
|
bne _037FCC30
|
|
ldr r2, [lr, #8]
|
|
add r2, r3, r2
|
|
str r2, [r1, #8]
|
|
ldr lr, [lr, #4]
|
|
str lr, [r1, #4]
|
|
cmp lr, #0
|
|
strne r1, [lr]
|
|
_037FCC30:
|
|
cmp ip, #0
|
|
beq _037FCC68
|
|
str r1, [ip, #4]
|
|
ldr r2, [ip, #8]
|
|
add r3, ip, r2
|
|
cmp r3, r1
|
|
bne _037FCC6C
|
|
ldr r1, [r1, #8]
|
|
cmp lr, #0
|
|
add r1, r2, r1
|
|
str r1, [ip, #8]
|
|
str lr, [ip, #4]
|
|
strne ip, [lr]
|
|
b _037FCC6C
|
|
_037FCC68:
|
|
mov r0, r1
|
|
_037FCC6C:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
arm_func_end sub_037FCBCC
|
|
|
|
arm_func_start sub_037FCC74
|
|
sub_037FCC74: ; 0x037FCC74
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r4, r0
|
|
mov r5, r1
|
|
mov r7, r2
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FCD80 ; =_03807800
|
|
mov r6, r0
|
|
ldr r1, [r1, r4, lsl #2]
|
|
cmp r1, #0
|
|
bne _037FCCA8
|
|
bl SetIrqFlag
|
|
mov r0, #0
|
|
b _037FCD78
|
|
_037FCCA8:
|
|
cmp r5, #0
|
|
ldrlt r5, [r1]
|
|
ldr r1, [r1, #0x10]
|
|
mov r0, #0xc
|
|
mla r4, r5, r0, r1
|
|
ldr r0, [r4, #4]
|
|
add r1, r7, #0x3f
|
|
mov r5, r0
|
|
bic r7, r1, #0x1f
|
|
b _037FCCE0
|
|
_037FCCD0:
|
|
ldr r1, [r5, #8]
|
|
cmp r7, r1
|
|
ble _037FCCE8
|
|
ldr r5, [r5, #4]
|
|
_037FCCE0:
|
|
cmp r5, #0
|
|
bne _037FCCD0
|
|
_037FCCE8:
|
|
cmp r5, #0
|
|
bne _037FCD00
|
|
mov r0, r6
|
|
bl SetIrqFlag
|
|
mov r0, #0
|
|
b _037FCD78
|
|
_037FCD00:
|
|
ldr r1, [r5, #8]
|
|
sub r1, r1, r7
|
|
cmp r1, #0x40
|
|
bhs _037FCD20
|
|
mov r1, r5
|
|
bl sub_037FCBA4
|
|
str r0, [r4, #4]
|
|
b _037FCD54
|
|
_037FCD20:
|
|
str r7, [r5, #8]
|
|
add r2, r5, r7
|
|
str r1, [r2, #8]
|
|
ldr r0, [r5]
|
|
str r0, [r5, r7]
|
|
ldr r0, [r5, #4]
|
|
str r0, [r2, #4]
|
|
cmp r0, #0
|
|
strne r2, [r0]
|
|
ldr r0, [r2]
|
|
cmp r0, #0
|
|
strne r2, [r0, #4]
|
|
streq r2, [r4, #4]
|
|
_037FCD54:
|
|
ldr r1, [r4, #8]
|
|
mov r0, #0
|
|
stmia r5, {r0, r1}
|
|
cmp r1, #0
|
|
strne r5, [r1]
|
|
mov r0, r6
|
|
str r5, [r4, #8]
|
|
bl SetIrqFlag
|
|
add r0, r5, #0x20
|
|
_037FCD78:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FCD80: .word _03807800
|
|
arm_func_end sub_037FCC74
|
|
|
|
arm_func_start sub_037FCD84
|
|
sub_037FCD84: ; 0x037FCD84
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FCDEC ; =_03807800
|
|
mov r4, r0
|
|
ldr r0, [r1, r7, lsl #2]
|
|
cmp r6, #0
|
|
ldrlt r6, [r0]
|
|
ldr r1, [r0, #0x10]
|
|
mov r0, #0xc
|
|
mla r7, r6, r0, r1
|
|
sub r5, r5, #0x20
|
|
ldr r0, [r7, #8]
|
|
mov r1, r5
|
|
bl sub_037FCBA4
|
|
str r0, [r7, #8]
|
|
ldr r0, [r7, #4]
|
|
mov r1, r5
|
|
bl sub_037FCBCC
|
|
str r0, [r7, #4]
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FCDEC: .word _03807800
|
|
arm_func_end sub_037FCD84
|
|
|
|
arm_func_start sub_037FCDF0
|
|
sub_037FCDF0: ; 0x037FCDF0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
mov r5, r1
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FCE20 ; =_03807800
|
|
ldr r1, [r1, r4, lsl #2]
|
|
ldr r4, [r1]
|
|
str r5, [r1]
|
|
bl SetIrqFlag
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FCE20: .word _03807800
|
|
arm_func_end sub_037FCDF0
|
|
|
|
arm_func_start sub_037FCE24
|
|
sub_037FCE24: ; 0x037FCE24
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
mov r6, r3
|
|
bl EnableIrqFlag
|
|
ldr r2, _037FCEC8 ; =_03807800
|
|
mov r1, #0xc
|
|
str r5, [r2, r7, lsl #2]
|
|
add r2, r5, #0x14
|
|
str r2, [r5, #0x10]
|
|
mov r7, #0
|
|
mul r1, r6, r1
|
|
str r6, [r5, #4]
|
|
mvn lr, #0
|
|
mov ip, r7
|
|
mov r2, #0xc
|
|
b _037FCE88
|
|
_037FCE6C:
|
|
mul r3, r7, r2
|
|
ldr r6, [r5, #0x10]
|
|
add r7, r7, #1
|
|
str lr, [r6, r3]
|
|
add r3, r6, r3
|
|
str ip, [r3, #8]
|
|
str ip, [r3, #4]
|
|
_037FCE88:
|
|
ldr r3, [r5, #4]
|
|
cmp r7, r3
|
|
blt _037FCE6C
|
|
mvn r2, #0
|
|
str r2, [r5]
|
|
ldr r3, [r5, #0x10]
|
|
bic r2, r4, #0x1f
|
|
add r1, r3, r1
|
|
add r1, r1, #0x1f
|
|
bic r1, r1, #0x1f
|
|
str r1, [r5, #8]
|
|
str r2, [r5, #0xc]
|
|
bl SetIrqFlag
|
|
ldr r0, [r5, #8]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FCEC8: .word _03807800
|
|
arm_func_end sub_037FCE24
|
|
|
|
arm_func_start sub_037FCECC
|
|
sub_037FCECC: ; 0x037FCECC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r4, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
bl EnableIrqFlag
|
|
ldr r2, _037FCF68 ; =_03807800
|
|
add r1, r6, #0x1f
|
|
ldr lr, [r2, r4, lsl #2]
|
|
bic r6, r1, #0x1f
|
|
ldr r7, [lr, #4]
|
|
bic r5, r5, #0x1f
|
|
mov r4, #0
|
|
mov r1, #0xc
|
|
b _037FCF50
|
|
_037FCF04:
|
|
mul r3, r4, r1
|
|
ldr ip, [lr, #0x10]
|
|
ldr r2, [ip, r3]
|
|
add r3, ip, r3
|
|
cmp r2, #0
|
|
bge _037FCF4C
|
|
sub r1, r5, r6
|
|
str r1, [r3]
|
|
mov r2, #0
|
|
str r2, [r6]
|
|
str r2, [r6, #4]
|
|
ldr r1, [r3]
|
|
str r1, [r6, #8]
|
|
str r6, [r3, #4]
|
|
str r2, [r3, #8]
|
|
bl SetIrqFlag
|
|
mov r0, r4
|
|
b _037FCF60
|
|
_037FCF4C:
|
|
add r4, r4, #1
|
|
_037FCF50:
|
|
cmp r4, r7
|
|
blt _037FCF04
|
|
bl SetIrqFlag
|
|
mvn r0, #0
|
|
_037FCF60:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FCF68: .word _03807800
|
|
arm_func_end sub_037FCECC
|
|
|
|
arm_func_start sub_037FCF6C
|
|
sub_037FCF6C: ; 0x037FCF6C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r4, #0
|
|
mov r8, r0
|
|
mov r7, r1
|
|
mov r5, r4
|
|
sub r6, r4, #1
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FD108 ; =_03807800
|
|
mvn r2, #0
|
|
ldr r1, [r1, r8, lsl #2]
|
|
cmp r7, r2
|
|
ldr ip, [r1, #0x10]
|
|
ldreq r7, [r1]
|
|
cmp ip, #0
|
|
beq _037FD0F8
|
|
cmp r7, #0
|
|
blt _037FD0F8
|
|
ldr r2, [r1, #4]
|
|
cmp r7, r2
|
|
bge _037FD0F8
|
|
mov r2, #0xc
|
|
mul r3, r7, r2
|
|
ldr r2, [ip, r3]
|
|
add r7, ip, r3
|
|
cmp r2, #0
|
|
blt _037FD0F8
|
|
ldr ip, [r7, #8]
|
|
cmp ip, #0
|
|
ldrne r3, [ip]
|
|
cmpne r3, #0
|
|
bne _037FD0F8
|
|
b _037FD04C
|
|
_037FCFEC:
|
|
ldr r3, [r1, #8]
|
|
cmp r3, ip
|
|
bhi _037FD0F8
|
|
ldr r3, [r1, #0xc]
|
|
cmp ip, r3
|
|
bhs _037FD0F8
|
|
tst ip, #0x1f
|
|
bne _037FD0F8
|
|
ldr lr, [ip, #4]
|
|
cmp lr, #0
|
|
ldrne r3, [lr]
|
|
cmpne r3, ip
|
|
bne _037FD0F8
|
|
ldr r3, [ip, #8]
|
|
cmp r3, #0x40
|
|
blo _037FD0F8
|
|
tst r3, #0x1f
|
|
bne _037FD0F8
|
|
add r4, r4, r3
|
|
cmp r4, #0
|
|
ble _037FD0F8
|
|
cmp r4, r2
|
|
bgt _037FD0F8
|
|
mov ip, lr
|
|
_037FD04C:
|
|
cmp ip, #0
|
|
bne _037FCFEC
|
|
ldr lr, [r7, #4]
|
|
cmp lr, #0
|
|
ldrne r3, [lr]
|
|
cmpne r3, #0
|
|
bne _037FD0F8
|
|
b _037FD0E8
|
|
_037FD06C:
|
|
ldr r3, [r1, #8]
|
|
cmp r3, lr
|
|
bhi _037FD0F8
|
|
ldr r3, [r1, #0xc]
|
|
cmp lr, r3
|
|
bhs _037FD0F8
|
|
tst lr, #0x1f
|
|
bne _037FD0F8
|
|
ldr r7, [lr, #4]
|
|
cmp r7, #0
|
|
ldrne r3, [r7]
|
|
cmpne r3, lr
|
|
bne _037FD0F8
|
|
ldr ip, [lr, #8]
|
|
cmp ip, #0x40
|
|
blo _037FD0F8
|
|
tst ip, #0x1f
|
|
bne _037FD0F8
|
|
cmp r7, #0
|
|
beq _037FD0C8
|
|
add r3, lr, ip
|
|
cmp r3, r7
|
|
bhs _037FD0F8
|
|
_037FD0C8:
|
|
add r4, r4, ip
|
|
sub r3, ip, #0x20
|
|
cmp r4, #0
|
|
add r5, r5, r3
|
|
ble _037FD0F8
|
|
cmp r4, r2
|
|
bgt _037FD0F8
|
|
mov lr, r7
|
|
_037FD0E8:
|
|
cmp lr, #0
|
|
bne _037FD06C
|
|
cmp r4, r2
|
|
moveq r6, r5
|
|
_037FD0F8:
|
|
bl SetIrqFlag
|
|
mov r0, r6
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD108: .word _03807800
|
|
arm_func_end sub_037FCF6C
|
|
|
|
arm_func_start sub_037FD10C
|
|
sub_037FD10C: ; 0x037FD10C
|
|
ldr r1, _037FD124 ; =_03807824
|
|
mov r2, #1
|
|
ldrh r3, [r1]
|
|
orr r0, r3, r2, lsl r0
|
|
strh r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD124: .word _03807824
|
|
arm_func_end sub_037FD10C
|
|
|
|
arm_func_start sub_037FD128
|
|
sub_037FD128: ; 0x037FD128
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _037FD198 ; =_03807828
|
|
ldrh r0, [r1]
|
|
cmp r0, #0
|
|
bne _037FD190
|
|
mov r2, #1
|
|
mov r0, #0
|
|
strh r2, [r1]
|
|
bl sub_037FD10C
|
|
ldr r0, _037FD198 ; =_03807828
|
|
mov r2, #0
|
|
str r2, [r0, #8]
|
|
ldr r3, _037FD19C ; =0x04000102
|
|
str r2, [r0, #0xc]
|
|
strh r2, [r3]
|
|
ldr r1, _037FD1A0 ; =sub_037FD1B4
|
|
strh r2, [r3, #-2]
|
|
mov r2, #0xc1
|
|
mov r0, #8
|
|
strh r2, [r3]
|
|
bl sub_037FB7BC
|
|
mov r0, #8
|
|
bl sub_037FB8F0
|
|
ldr r0, _037FD198 ; =_03807828
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
_037FD190:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD198: .word _03807828
|
|
_037FD19C: .word 0x04000102
|
|
_037FD1A0: .word sub_037FD1B4
|
|
arm_func_end sub_037FD128
|
|
|
|
arm_func_start sub_037FD1A4
|
|
sub_037FD1A4: ; 0x037FD1A4
|
|
ldr r0, _037FD1B0 ; =_03807828
|
|
ldrh r0, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD1B0: .word _03807828
|
|
arm_func_end sub_037FD1A4
|
|
|
|
arm_func_start sub_037FD1B4
|
|
sub_037FD1B4: ; 0x037FD1B4
|
|
ldr r0, _037FD20C ; =_03807828
|
|
mov r3, #0
|
|
ldr r2, [r0, #8]
|
|
ldr r1, [r0, #0xc]
|
|
adds r2, r2, #1
|
|
str r2, [r0, #8]
|
|
adc r1, r1, #0
|
|
str r1, [r0, #0xc]
|
|
ldr r1, [r0, #4]
|
|
cmp r1, #0
|
|
beq _037FD1F8
|
|
ldr r2, _037FD210 ; =0x04000102
|
|
mov r1, #0xc1
|
|
strh r3, [r2]
|
|
strh r3, [r2, #-2]
|
|
strh r1, [r2]
|
|
str r3, [r0, #4]
|
|
_037FD1F8:
|
|
ldr ip, _037FD214 ; =sub_037FB858
|
|
mov r0, #0
|
|
ldr r1, _037FD218 ; =sub_037FD1B4
|
|
mov r2, r0
|
|
bx ip
|
|
.align 2, 0
|
|
_037FD20C: .word _03807828
|
|
_037FD210: .word 0x04000102
|
|
_037FD214: .word sub_037FB858
|
|
_037FD218: .word sub_037FD1B4
|
|
arm_func_end sub_037FD1B4
|
|
|
|
arm_func_start GetCurrentPlaybackTime
|
|
GetCurrentPlaybackTime: ; 0x037FD21C
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #0xc
|
|
bl EnableIrqFlag
|
|
ldr lr, _037FD2B4 ; =0x04000100
|
|
ldr r1, _037FD2B8 ; =_03807828
|
|
ldrh r3, [lr]
|
|
ldr r2, _037FD2BC ; =0x0000FFFF
|
|
strh r3, [sp]
|
|
ldr ip, [r1, #8]
|
|
ldr r3, [r1, #0xc]
|
|
sub r1, r2, #0x10000
|
|
and ip, ip, r1
|
|
and r1, r3, r2
|
|
str ip, [sp, #4]
|
|
str r1, [sp, #8]
|
|
ldr r1, [lr, #0x114]
|
|
tst r1, #8
|
|
beq _037FD288
|
|
ldrh r1, [sp]
|
|
tst r1, #0x8000
|
|
bne _037FD288
|
|
ldr r2, [sp, #4]
|
|
ldr r1, [sp, #8]
|
|
adds r2, r2, #1
|
|
adc r1, r1, #0
|
|
str r2, [sp, #4]
|
|
str r1, [sp, #8]
|
|
_037FD288:
|
|
bl SetIrqFlag
|
|
ldr r2, [sp, #4]
|
|
ldr r1, [sp, #8]
|
|
ldrh r0, [sp]
|
|
mov r1, r1, lsl #0x10
|
|
orr r1, r1, r2, lsr #16
|
|
orr r1, r1, r0, asr #31
|
|
orr r0, r0, r2, lsl #16
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD2B4: .word 0x04000100
|
|
_037FD2B8: .word _03807828
|
|
_037FD2BC: .word 0x0000FFFF
|
|
arm_func_end GetCurrentPlaybackTime
|
|
|
|
arm_func_start sub_037FD2C0
|
|
sub_037FD2C0: ; 0x037FD2C0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
bl GetCurrentPlaybackTime
|
|
ldr r3, _037FD33C ; =0x04000106
|
|
mov r2, #0
|
|
strh r2, [r3]
|
|
ldr ip, [r4, #0xc]
|
|
ldr r3, [r4, #0x10]
|
|
subs r5, ip, r0
|
|
sbc r4, r3, r1
|
|
ldr r1, _037FD340 ; =sub_037FD648
|
|
mov r0, #1
|
|
bl sub_037FB858
|
|
subs r0, r5, #0
|
|
mov r3, #0
|
|
sbcs r0, r4, #0
|
|
ldrlt r3, _037FD344 ; =0x0000FFFE
|
|
blt _037FD31C
|
|
subs r0, r5, #0x10000
|
|
sbcs r0, r4, r3
|
|
mvnlt r0, r5
|
|
movlt r0, r0, lsl #0x10
|
|
movlt r3, r0, lsr #0x10
|
|
_037FD31C:
|
|
ldr r2, _037FD348 ; =0x04000104
|
|
mov r1, #0xc1
|
|
strh r3, [r2]
|
|
mov r0, #0x10
|
|
strh r1, [r2, #2]
|
|
bl sub_037FB8F0
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD33C: .word 0x04000106
|
|
_037FD340: .word sub_037FD648
|
|
_037FD344: .word 0x0000FFFE
|
|
_037FD348: .word 0x04000104
|
|
arm_func_end sub_037FD2C0
|
|
|
|
arm_func_start sub_037FD34C
|
|
sub_037FD34C: ; 0x037FD34C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _037FD38C ; =_03807838
|
|
ldrh r0, [r1]
|
|
cmp r0, #0
|
|
bne _037FD384
|
|
mov r0, #1
|
|
strh r0, [r1]
|
|
bl sub_037FD10C
|
|
ldr r1, _037FD38C ; =_03807838
|
|
mov r2, #0
|
|
str r2, [r1, #4]
|
|
mov r0, #0x10
|
|
str r2, [r1, #8]
|
|
bl ClearIeFlag
|
|
_037FD384:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD38C: .word _03807838
|
|
arm_func_end sub_037FD34C
|
|
|
|
arm_func_start sub_037FD390
|
|
sub_037FD390: ; 0x037FD390
|
|
ldr r0, _037FD39C ; =_03807838
|
|
ldrh r0, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD39C: .word _03807838
|
|
arm_func_end sub_037FD390
|
|
|
|
arm_func_start sub_037FD3A0
|
|
sub_037FD3A0: ; 0x037FD3A0
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
str r1, [r0, #8]
|
|
bx lr
|
|
arm_func_end sub_037FD3A0
|
|
|
|
arm_func_start sub_037FD3B0
|
|
sub_037FD3B0: ; 0x037FD3B0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r8, r0
|
|
ldr r0, [r8, #0x20]
|
|
ldr r3, [r8, #0x1c]
|
|
cmp r0, #0
|
|
mov r7, r1
|
|
mov r6, r2
|
|
cmpeq r3, #0
|
|
beq _037FD424
|
|
bl GetCurrentPlaybackTime
|
|
ldr r6, [r8, #0x28]
|
|
ldr r7, [r8, #0x24]
|
|
cmp r6, r1
|
|
cmpeq r7, r0
|
|
bhs _037FD424
|
|
ldr r5, [r8, #0x1c]
|
|
ldr r4, [r8, #0x20]
|
|
subs r0, r0, r7
|
|
mov r2, r5
|
|
mov r3, r4
|
|
sbc r1, r1, r6
|
|
bl sub_03806B80
|
|
adds r2, r0, #1
|
|
adc r0, r1, #0
|
|
umull r3, r1, r5, r2
|
|
mla r1, r5, r0, r1
|
|
mla r1, r4, r2, r1
|
|
adds r7, r7, r3
|
|
adc r6, r6, r1
|
|
_037FD424:
|
|
str r7, [r8, #0xc]
|
|
ldr r0, _037FD4D8 ; =_03807838
|
|
str r6, [r8, #0x10]
|
|
mov r2, #0
|
|
ldr r5, [r0, #4]
|
|
mov r1, r2
|
|
b _037FD494
|
|
_037FD440:
|
|
ldr r3, [r5, #0xc]
|
|
ldr r0, [r5, #0x10]
|
|
subs r4, r7, r3
|
|
sbc r3, r6, r0
|
|
subs r0, r4, r1
|
|
sbcs r0, r3, r2
|
|
bge _037FD490
|
|
ldr r0, [r5, #0x14]
|
|
str r0, [r8, #0x14]
|
|
str r8, [r5, #0x14]
|
|
str r5, [r8, #0x18]
|
|
ldr r0, [r8, #0x14]
|
|
cmp r0, #0
|
|
strne r8, [r0, #0x18]
|
|
bne _037FD4D0
|
|
ldr r1, _037FD4D8 ; =_03807838
|
|
mov r0, r8
|
|
str r8, [r1, #4]
|
|
bl sub_037FD2C0
|
|
b _037FD4D0
|
|
_037FD490:
|
|
ldr r5, [r5, #0x18]
|
|
_037FD494:
|
|
cmp r5, #0
|
|
bne _037FD440
|
|
ldr r1, _037FD4D8 ; =_03807838
|
|
mov r0, #0
|
|
str r0, [r8, #0x18]
|
|
ldr r0, [r1, #8]
|
|
str r8, [r1, #8]
|
|
str r0, [r8, #0x14]
|
|
cmp r0, #0
|
|
strne r8, [r0, #0x18]
|
|
bne _037FD4D0
|
|
str r8, [r1, #8]
|
|
mov r0, r8
|
|
str r8, [r1, #4]
|
|
bl sub_037FD2C0
|
|
_037FD4D0:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD4D8: .word _03807838
|
|
arm_func_end sub_037FD3B0
|
|
|
|
arm_func_start sub_037FD4DC
|
|
sub_037FD4DC: ; 0x037FD4DC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
movs r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
mov r7, r3
|
|
beq _037FD500
|
|
ldr r0, [r6]
|
|
cmp r0, #0
|
|
beq _037FD504
|
|
_037FD500:
|
|
bl sub_037FDE70
|
|
_037FD504:
|
|
bl EnableIrqFlag
|
|
mov r1, #0
|
|
str r1, [r6, #0x1c]
|
|
str r1, [r6, #0x20]
|
|
str r7, [r6]
|
|
ldr r1, [sp, #0x18]
|
|
mov r7, r0
|
|
str r1, [r6, #4]
|
|
bl GetCurrentPlaybackTime
|
|
adds r3, r5, r0
|
|
adc r2, r4, r1
|
|
mov r0, r6
|
|
mov r1, r3
|
|
bl sub_037FD3B0
|
|
mov r0, r7
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
arm_func_end sub_037FD4DC
|
|
|
|
arm_func_start sub_037FD54C
|
|
sub_037FD54C: ; 0x037FD54C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r5, [sp, #0x18]
|
|
movs r4, r0
|
|
mov r8, r1
|
|
mov r7, r2
|
|
mov r6, r3
|
|
beq _037FD574
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _037FD578
|
|
_037FD574:
|
|
bl sub_037FDE70
|
|
_037FD578:
|
|
bl EnableIrqFlag
|
|
str r6, [r4, #0x1c]
|
|
str r5, [r4, #0x20]
|
|
str r8, [r4, #0x24]
|
|
mov r1, #0
|
|
mov r5, r0
|
|
ldr r0, [sp, #0x1c]
|
|
str r7, [r4, #0x28]
|
|
ldr r3, [sp, #0x20]
|
|
str r0, [r4]
|
|
mov r0, r4
|
|
mov r2, r1
|
|
str r3, [r4, #4]
|
|
bl sub_037FD3B0
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
arm_func_end sub_037FD54C
|
|
|
|
arm_func_start sub_037FD5C0
|
|
sub_037FD5C0: ; 0x037FD5C0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl EnableIrqFlag
|
|
ldr r1, [r5]
|
|
mov r4, r0
|
|
cmp r1, #0
|
|
bne _037FD5E4
|
|
bl SetIrqFlag
|
|
b _037FD63C
|
|
_037FD5E4:
|
|
ldr r0, [r5, #0x18]
|
|
cmp r0, #0
|
|
ldreq r2, [r5, #0x14]
|
|
ldreq r1, _037FD644 ; =_03807838
|
|
streq r2, [r1, #8]
|
|
ldrne r1, [r5, #0x14]
|
|
strne r1, [r0, #0x14]
|
|
ldr r1, [r5, #0x14]
|
|
cmp r1, #0
|
|
strne r0, [r1, #0x18]
|
|
bne _037FD624
|
|
ldr r1, _037FD644 ; =_03807838
|
|
cmp r0, #0
|
|
str r0, [r1, #4]
|
|
beq _037FD624
|
|
bl sub_037FD2C0
|
|
_037FD624:
|
|
mov r1, #0
|
|
str r1, [r5]
|
|
str r1, [r5, #0x1c]
|
|
mov r0, r4
|
|
str r1, [r5, #0x20]
|
|
bl SetIrqFlag
|
|
_037FD63C:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD644: .word _03807838
|
|
arm_func_end sub_037FD5C0
|
|
|
|
arm_func_start sub_037FD648
|
|
sub_037FD648: ; 0x037FD648
|
|
stmdb sp!, {r0, lr}
|
|
bl sub_037FD658
|
|
ldmia sp!, {r0, lr}
|
|
bx lr
|
|
arm_func_end sub_037FD648
|
|
|
|
arm_func_start sub_037FD658
|
|
sub_037FD658: ; 0x037FD658
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _037FD740 ; =0x04000106
|
|
mov r2, #0
|
|
mov r0, #0x10
|
|
strh r2, [r1]
|
|
bl ClearIeFlag
|
|
ldr r1, _037FD744 ; =0x0380FFF8
|
|
ldr r0, [r1]
|
|
orr r0, r0, #0x10
|
|
str r0, [r1]
|
|
bl GetCurrentPlaybackTime
|
|
ldr r2, _037FD748 ; =_03807838
|
|
ldr r4, [r2, #4]
|
|
cmp r4, #0
|
|
beq _037FD738
|
|
ldr r3, [r4, #0x10]
|
|
ldr ip, [r4, #0xc]
|
|
cmp r1, r3
|
|
cmpeq r0, ip
|
|
bhs _037FD6B4
|
|
mov r0, r4
|
|
bl sub_037FD2C0
|
|
b _037FD738
|
|
_037FD6B4:
|
|
ldr r1, [r4, #0x18]
|
|
mov r0, #0
|
|
str r1, [r2, #4]
|
|
cmp r1, #0
|
|
streq r0, [r2, #8]
|
|
strne r0, [r1, #0x14]
|
|
ldr r0, [r4, #0x20]
|
|
ldr r1, [r4, #0x1c]
|
|
cmp r0, #0
|
|
ldr r5, [r4]
|
|
mov r0, #0
|
|
cmpeq r1, #0
|
|
streq r0, [r4]
|
|
cmp r5, #0
|
|
beq _037FD6FC
|
|
ldr r0, [r4, #4]
|
|
mov lr, pc
|
|
bx r5
|
|
_037FD6FC:
|
|
ldr r0, [r4, #0x20]
|
|
ldr r1, [r4, #0x1c]
|
|
cmp r0, #0
|
|
cmpeq r1, #0
|
|
mov r1, #0
|
|
beq _037FD724
|
|
mov r0, r4
|
|
mov r2, r1
|
|
str r5, [r4]
|
|
bl sub_037FD3B0
|
|
_037FD724:
|
|
ldr r0, _037FD748 ; =_03807838
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
beq _037FD738
|
|
bl sub_037FD2C0
|
|
_037FD738:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD740: .word 0x04000106
|
|
_037FD744: .word 0x0380FFF8
|
|
_037FD748: .word _03807838
|
|
arm_func_end sub_037FD658
|
|
|
|
arm_func_start sub_037FD74C
|
|
sub_037FD74C: ; 0x037FD74C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _037FD794 ; =_03807844
|
|
ldrh r0, [r1]
|
|
cmp r0, #0
|
|
bne _037FD78C
|
|
mov r0, #1
|
|
strh r0, [r1]
|
|
mov r2, #0
|
|
str r2, [r1, #0xc]
|
|
mov r0, #4
|
|
str r2, [r1, #0x10]
|
|
bl ClearIeFlag
|
|
ldr r0, _037FD794 ; =_03807844
|
|
mov r1, #0
|
|
str r1, [r0, #8]
|
|
str r1, [r0, #4]
|
|
_037FD78C:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD794: .word _03807844
|
|
arm_func_end sub_037FD74C
|
|
|
|
arm_func_start sub_037FD798
|
|
sub_037FD798: ; 0x037FD798
|
|
ldr r0, _037FD7A4 ; =_03807844
|
|
ldrh r0, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD7A4: .word _03807844
|
|
arm_func_end sub_037FD798
|
|
|
|
arm_func_start sub_037FD7A8
|
|
sub_037FD7A8: ; 0x037FD7A8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _037FD848 ; =_03807844
|
|
ldr r3, [r1, #0xc]
|
|
b _037FD80C
|
|
_037FD7B8:
|
|
ldr r2, [r0, #0xc]
|
|
ldr r1, [r3, #0xc]
|
|
cmp r1, r2
|
|
blo _037FD808
|
|
bne _037FD7DC
|
|
ldrsh r2, [r3, #0x10]
|
|
ldrsh r1, [r0, #0x10]
|
|
cmp r2, r1
|
|
ble _037FD808
|
|
_037FD7DC:
|
|
ldr r1, [r3, #0x14]
|
|
str r1, [r0, #0x14]
|
|
str r3, [r0, #0x18]
|
|
str r0, [r3, #0x14]
|
|
cmp r1, #0
|
|
strne r0, [r1, #0x18]
|
|
bne _037FD840
|
|
ldr r1, _037FD848 ; =_03807844
|
|
str r0, [r1, #0xc]
|
|
bl sub_037FD9B8
|
|
b _037FD840
|
|
_037FD808:
|
|
ldr r3, [r3, #0x18]
|
|
_037FD80C:
|
|
cmp r3, #0
|
|
bne _037FD7B8
|
|
ldr r1, _037FD848 ; =_03807844
|
|
mov r2, #0
|
|
ldr r3, [r1, #0x10]
|
|
str r3, [r0, #0x14]
|
|
str r2, [r0, #0x18]
|
|
str r0, [r1, #0x10]
|
|
cmp r3, #0
|
|
strne r0, [r3, #0x18]
|
|
bne _037FD840
|
|
str r0, [r1, #0xc]
|
|
bl sub_037FD9B8
|
|
_037FD840:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD848: .word _03807844
|
|
arm_func_end sub_037FD7A8
|
|
|
|
arm_func_start sub_037FD84C
|
|
sub_037FD84C: ; 0x037FD84C
|
|
cmp r0, #0
|
|
bxeq lr
|
|
ldr r2, [r0, #0x18]
|
|
ldr r1, [r0, #0x14]
|
|
cmp r2, #0
|
|
ldreq r0, _037FD880 ; =_03807844
|
|
strne r1, [r2, #0x14]
|
|
streq r1, [r0, #0x10]
|
|
cmp r1, #0
|
|
ldreq r0, _037FD880 ; =_03807844
|
|
strne r2, [r1, #0x18]
|
|
streq r2, [r0, #0xc]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD880: .word _03807844
|
|
arm_func_end sub_037FD84C
|
|
|
|
arm_func_start sub_037FD884
|
|
sub_037FD884: ; 0x037FD884
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
str r1, [r0, #8]
|
|
str r1, [r0, #0x20]
|
|
bx lr
|
|
arm_func_end sub_037FD884
|
|
|
|
arm_func_start sub_037FD898
|
|
sub_037FD898: ; 0x037FD898
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
mov r8, r0
|
|
mov r7, r1
|
|
mov r6, r2
|
|
mov r5, r3
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
cmp r8, #0
|
|
beq _037FD8C8
|
|
ldr r0, [r8]
|
|
cmp r0, #0
|
|
beq _037FD8CC
|
|
_037FD8C8:
|
|
bl sub_037FDE70
|
|
_037FD8CC:
|
|
ldr r0, _037FD924 ; =0x04000006
|
|
ldrh sb, [r0]
|
|
mov r0, sb
|
|
bl sub_037FDCA8
|
|
mov r1, #0
|
|
str r1, [r8, #0x1c]
|
|
cmp r7, sb
|
|
strh r7, [r8, #0x10]
|
|
addle r0, r0, #1
|
|
str r0, [r8, #0xc]
|
|
strh r6, [r8, #0x12]
|
|
ldr r0, [sp, #0x20]
|
|
str r5, [r8]
|
|
str r0, [r8, #4]
|
|
mov r1, #0
|
|
mov r0, r8
|
|
str r1, [r8, #0x24]
|
|
bl sub_037FD7A8
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD924: .word 0x04000006
|
|
arm_func_end sub_037FD898
|
|
|
|
arm_func_start sub_037FD928
|
|
sub_037FD928: ; 0x037FD928
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
mov r8, r0
|
|
mov r7, r1
|
|
mov r6, r2
|
|
mov r5, r3
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
cmp r8, #0
|
|
beq _037FD958
|
|
ldr r0, [r8]
|
|
cmp r0, #0
|
|
beq _037FD95C
|
|
_037FD958:
|
|
bl sub_037FDE70
|
|
_037FD95C:
|
|
ldr r0, _037FD9B4 ; =0x04000006
|
|
ldrh sb, [r0]
|
|
mov r0, sb
|
|
bl sub_037FDCA8
|
|
mov r1, #1
|
|
str r1, [r8, #0x1c]
|
|
cmp r7, sb
|
|
strh r7, [r8, #0x10]
|
|
addle r0, r0, #1
|
|
str r0, [r8, #0xc]
|
|
strh r6, [r8, #0x12]
|
|
ldr r0, [sp, #0x20]
|
|
str r5, [r8]
|
|
str r0, [r8, #4]
|
|
mov r1, #0
|
|
mov r0, r8
|
|
str r1, [r8, #0x24]
|
|
bl sub_037FD7A8
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FD9B4: .word 0x04000006
|
|
arm_func_end sub_037FD928
|
|
|
|
arm_func_start sub_037FD9B8
|
|
sub_037FD9B8: ; 0x037FD9B8
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _037FDA0C ; =sub_037FDAF8
|
|
mov r4, r0
|
|
mov r0, #4
|
|
bl sub_037FB7BC
|
|
ldrsh r3, [r4, #0x10]
|
|
ldr r2, _037FDA10 ; =0x04000004
|
|
mov r0, r3, lsl #0x18
|
|
ldrh r1, [r2]
|
|
and r3, r3, #0x100
|
|
and r1, r1, #0x3f
|
|
orr r0, r1, r0, lsr #16
|
|
orr r0, r0, r3, asr #1
|
|
strh r0, [r2]
|
|
ldrh r1, [r2]
|
|
mov r0, #4
|
|
orr r1, r1, #0x20
|
|
strh r1, [r2]
|
|
bl sub_037FB8F0
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FDA0C: .word sub_037FDAF8
|
|
_037FDA10: .word 0x04000004
|
|
arm_func_end sub_037FD9B8
|
|
|
|
arm_func_start sub_037FDA14
|
|
sub_037FDA14: ; 0x037FDA14
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
movs r4, r1
|
|
mov r5, r0
|
|
bne _037FDA28
|
|
bl sub_037FDE70
|
|
_037FDA28:
|
|
cmp r5, #0
|
|
strne r4, [r5, #8]
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_037FDA14
|
|
|
|
arm_func_start sub_037FDA38
|
|
sub_037FDA38: ; 0x037FDA38
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl EnableIrqFlag
|
|
mov r1, #1
|
|
str r1, [r5, #0x24]
|
|
ldr r1, [r5]
|
|
mov r4, r0
|
|
cmp r1, #0
|
|
bne _037FDA64
|
|
bl SetIrqFlag
|
|
b _037FDA7C
|
|
_037FDA64:
|
|
mov r0, r5
|
|
bl sub_037FD84C
|
|
mov r1, #0
|
|
mov r0, r4
|
|
str r1, [r5]
|
|
bl SetIrqFlag
|
|
_037FDA7C:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_037FDA38
|
|
|
|
arm_func_start sub_037FDA84
|
|
sub_037FDA84: ; 0x037FDA84
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
bl EnableIrqFlag
|
|
mov r5, r0
|
|
cmp r7, #0
|
|
bne _037FDAA0
|
|
bl sub_037FDE70
|
|
_037FDAA0:
|
|
ldr r0, _037FDAF4 ; =_03807844
|
|
mov r4, #0
|
|
ldr r0, [r0, #0xc]
|
|
cmp r0, #0
|
|
ldrne r6, [r0, #0x18]
|
|
moveq r6, #0
|
|
b _037FDADC
|
|
_037FDABC:
|
|
ldr r1, [r0, #8]
|
|
cmp r1, r7
|
|
bne _037FDACC
|
|
bl sub_037FDA38
|
|
_037FDACC:
|
|
mov r0, r6
|
|
cmp r6, #0
|
|
ldrne r6, [r6, #0x18]
|
|
moveq r6, r4
|
|
_037FDADC:
|
|
cmp r0, #0
|
|
bne _037FDABC
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FDAF4: .word _03807844
|
|
arm_func_end sub_037FDA84
|
|
|
|
arm_func_start sub_037FDAF8
|
|
sub_037FDAF8: ; 0x037FDAF8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov r0, #4
|
|
bl ClearIeFlag
|
|
ldr r2, _037FDC98 ; =0x04000004
|
|
ldr r1, _037FDC9C ; =0x0380FFF8
|
|
ldrh r0, [r2]
|
|
bic r0, r0, #0x20
|
|
strh r0, [r2]
|
|
ldr r0, [r1]
|
|
orr r0, r0, #4
|
|
str r0, [r1]
|
|
ldrh r0, [r2]
|
|
mov r1, r0, asr #8
|
|
mov r0, r0, lsl #1
|
|
and r1, r1, #0xff
|
|
and r0, r0, #0x100
|
|
orr r0, r1, r0
|
|
sub r0, r0, #1
|
|
bl sub_037FDCA8
|
|
ldr sl, _037FDCA0 ; =0x04000006
|
|
mov r6, #0
|
|
ldr r5, _037FDCA4 ; =_03807844
|
|
sub r7, sl, #2
|
|
mov fp, #1
|
|
mov r8, r6
|
|
b _037FDC84
|
|
_037FDB60:
|
|
ldrh sb, [sl]
|
|
mov r0, sb
|
|
bl sub_037FDCA8
|
|
ldrsh r1, [r4, #0x10]
|
|
ldr r2, [r4, #0xc]
|
|
sub r1, sb, r1
|
|
mov sb, r0
|
|
subs r0, sb, r2
|
|
bmi _037FDB94
|
|
cmp r0, #0
|
|
bne _037FDB9C
|
|
cmp r1, #0
|
|
bge _037FDB9C
|
|
_037FDB94:
|
|
mov r0, r8
|
|
b _037FDBB8
|
|
_037FDB9C:
|
|
cmp r1, #0
|
|
addlt r0, r1, #7
|
|
addlt r1, r0, #0x100
|
|
ldrsh r0, [r4, #0x12]
|
|
cmp r1, r0
|
|
movle r0, fp
|
|
movgt r0, #2
|
|
_037FDBB8:
|
|
cmp r0, #0
|
|
beq _037FDBD4
|
|
cmp r0, #1
|
|
beq _037FDC10
|
|
cmp r0, #2
|
|
beq _037FDC68
|
|
b _037FDC84
|
|
_037FDBD4:
|
|
mov r0, r4
|
|
bl sub_037FD9B8
|
|
ldrh r1, [sl]
|
|
ldrsh r0, [r4, #0x10]
|
|
cmp r0, r1
|
|
ldreq r0, [r4, #0xc]
|
|
cmpeq r0, sb
|
|
bne _037FDC90
|
|
mov r0, #4
|
|
bl ClearIeFlag
|
|
ldrh r1, [r7]
|
|
mov r0, #4
|
|
bic r1, r1, #0x20
|
|
strh r1, [r7]
|
|
bl sub_037FB964
|
|
_037FDC10:
|
|
ldr sb, [r4]
|
|
mov r0, r4
|
|
bl sub_037FD84C
|
|
str r6, [r4]
|
|
cmp sb, #0
|
|
beq _037FDC34
|
|
ldr r0, [r4, #4]
|
|
mov lr, pc
|
|
bx sb
|
|
_037FDC34:
|
|
ldr r0, [r4, #0x1c]
|
|
cmp r0, #0
|
|
beq _037FDC84
|
|
ldr r0, [r4, #0x24]
|
|
cmp r0, #0
|
|
bne _037FDC84
|
|
str sb, [r4]
|
|
ldr r1, [r5, #8]
|
|
mov r0, r4
|
|
add r1, r1, #1
|
|
str r1, [r4, #0xc]
|
|
bl sub_037FD7A8
|
|
b _037FDC84
|
|
_037FDC68:
|
|
mov r0, r4
|
|
bl sub_037FD84C
|
|
ldr r1, [r5, #8]
|
|
mov r0, r4
|
|
add r1, r1, #1
|
|
str r1, [r4, #0xc]
|
|
bl sub_037FD7A8
|
|
_037FDC84:
|
|
ldr r4, [r5, #0xc]
|
|
cmp r4, #0
|
|
bne _037FDB60
|
|
_037FDC90:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FDC98: .word 0x04000004
|
|
_037FDC9C: .word 0x0380FFF8
|
|
_037FDCA0: .word 0x04000006
|
|
_037FDCA4: .word _03807844
|
|
arm_func_end sub_037FDAF8
|
|
|
|
arm_func_start sub_037FDCA8
|
|
sub_037FDCA8: ; 0x037FDCA8
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FDCE8 ; =_03807844
|
|
ldr r2, [r1, #4]
|
|
cmp r4, r2
|
|
ldrlt r2, [r1, #8]
|
|
addlt r2, r2, #1
|
|
strlt r2, [r1, #8]
|
|
ldr r1, _037FDCE8 ; =_03807844
|
|
str r4, [r1, #4]
|
|
bl SetIrqFlag
|
|
ldr r0, _037FDCE8 ; =_03807844
|
|
ldr r0, [r0, #8]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FDCE8: .word _03807844
|
|
arm_func_end sub_037FDCA8
|
|
|
|
arm_func_start ClearIrqFlag
|
|
ClearIrqFlag: ; 0x037FDCEC
|
|
mrs r0, cpsr
|
|
bic r1, r0, #0x80
|
|
msr cpsr_c, r1
|
|
and r0, r0, #0x80
|
|
bx lr
|
|
arm_func_end ClearIrqFlag
|
|
|
|
arm_func_start EnableIrqFlag
|
|
EnableIrqFlag: ; 0x037FDD00
|
|
mrs r0, cpsr
|
|
orr r1, r0, #0x80
|
|
msr cpsr_c, r1
|
|
and r0, r0, #0x80
|
|
bx lr
|
|
arm_func_end EnableIrqFlag
|
|
|
|
arm_func_start SetIrqFlag
|
|
SetIrqFlag: ; 0x037FDD14
|
|
mrs r1, cpsr
|
|
bic r2, r1, #0x80
|
|
orr r2, r2, r0
|
|
msr cpsr_c, r2
|
|
and r0, r1, #0x80
|
|
bx lr
|
|
arm_func_end SetIrqFlag
|
|
|
|
arm_func_start EnableIrqFiqFlags
|
|
EnableIrqFiqFlags: ; 0x037FDD2C
|
|
mrs r0, cpsr
|
|
orr r1, r0, #0xc0
|
|
msr cpsr_c, r1
|
|
and r0, r0, #0xc0
|
|
bx lr
|
|
arm_func_end EnableIrqFiqFlags
|
|
|
|
arm_func_start SetIrqFiqFlags
|
|
SetIrqFiqFlags: ; 0x037FDD40
|
|
mrs r1, cpsr
|
|
bic r2, r1, #0xc0
|
|
orr r2, r2, r0
|
|
msr cpsr_c, r2
|
|
and r0, r1, #0xc0
|
|
bx lr
|
|
arm_func_end SetIrqFiqFlags
|
|
|
|
arm_func_start GetProcessorMode
|
|
GetProcessorMode: ; 0x037FDD58
|
|
mrs r0, cpsr
|
|
and r0, r0, #0x1f
|
|
bx lr
|
|
arm_func_end GetProcessorMode
|
|
|
|
arm_func_start sub_037FDD64
|
|
sub_037FDD64: ; 0x037FDD64
|
|
ldr ip, _037FDD78 ; =sub_038037B8
|
|
mov r1, r0, asr #1
|
|
add r0, r0, r1, lsr #30
|
|
mov r0, r0, asr #2
|
|
bx ip
|
|
.align 2, 0
|
|
_037FDD78: .word sub_038037B8 + 1
|
|
arm_func_end sub_037FDD64
|
|
|
|
arm_func_start sub_037FDD7C
|
|
sub_037FDD7C: ; 0x037FDD7C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _037FDDAC ; =_03807858
|
|
ldrh r0, [r2]
|
|
cmp r0, #0
|
|
bne _037FDDA4
|
|
ldr r1, _037FDDB0 ; =sub_037FDDC4
|
|
mov r3, #1
|
|
mov r0, #0xc
|
|
strh r3, [r2]
|
|
bl sub_037FE39C
|
|
_037FDDA4:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FDDAC: .word _03807858
|
|
_037FDDB0: .word sub_037FDDC4
|
|
arm_func_end sub_037FDD7C
|
|
|
|
arm_func_start sub_037FDDB4
|
|
sub_037FDDB4: ; 0x037FDDB4
|
|
ldr r0, _037FDDC0 ; =_03807858
|
|
ldrh r0, [r0, #2]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FDDC0: .word _03807858
|
|
arm_func_end sub_037FDDB4
|
|
|
|
arm_func_start sub_037FDDC4
|
|
sub_037FDDC4: ; 0x037FDDC4
|
|
stmdb sp!, {r3, lr}
|
|
and r0, r1, #0x7f00
|
|
mov r0, r0, lsl #8
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #0x10
|
|
ldreq r0, _037FDDF4 ; =_03807858
|
|
moveq r1, #1
|
|
streqh r1, [r0, #2]
|
|
beq _037FDDEC
|
|
bl sub_037FDE70
|
|
_037FDDEC:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FDDF4: .word _03807858
|
|
arm_func_end sub_037FDDC4
|
|
|
|
arm_func_start sub_037FDDF8
|
|
sub_037FDDF8: ; 0x037FDDF8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r0, #0
|
|
bl sub_037FDEF4
|
|
mov r0, #1
|
|
bl sub_037FDEF4
|
|
mov r0, #2
|
|
bl sub_037FDEF4
|
|
mov r0, #3
|
|
bl sub_037FDEF4
|
|
mov r0, #0x40000
|
|
bl sub_037FB8A4
|
|
mvn r0, #0
|
|
bl sub_037FB964
|
|
bl sub_037FE6B4
|
|
mov r6, #0xc
|
|
mov r5, #0x1000
|
|
mov r4, #0
|
|
_037FDE3C:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl sub_037FE410
|
|
cmp r0, #0
|
|
bne _037FDE3C
|
|
ldr r0, _037FDE6C ; =0x04000208
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
bl sub_038072C0
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FDE6C: .word 0x04000208
|
|
arm_func_end sub_037FDDF8
|
|
|
|
arm_func_start sub_037FDE70
|
|
sub_037FDE70: ; 0x037FDE70
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0
|
|
bl sub_03806610
|
|
_037FDE7C:
|
|
bl EnableIrqFlag
|
|
bl sub_037F8478
|
|
b _037FDE7C
|
|
arm_func_end sub_037FDE70
|
|
|
|
arm_func_start sub_037FDE88
|
|
sub_037FDE88: ; 0x037FDE88
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl EnableIrqFlag
|
|
add r1, r4, r4, lsl #1
|
|
add r1, r1, #2
|
|
mov r1, r1, lsl #2
|
|
add r1, r1, #0xb0
|
|
add r2, r1, #0x4000000
|
|
_037FDEA8:
|
|
ldr r1, [r2]
|
|
tst r1, #0x80000000
|
|
bne _037FDEA8
|
|
cmp r4, #0
|
|
bne _037FDEE4
|
|
mov r1, #0xc
|
|
mul r1, r4, r1
|
|
add r2, r1, #0x4000000
|
|
mov r3, #0
|
|
add r1, r1, #0xb0
|
|
str r3, [r2, #0xb0]
|
|
add r2, r1, #0x4000000
|
|
ldr r1, _037FDEF0 ; =0x81400001
|
|
str r3, [r2, #4]
|
|
str r1, [r2, #8]
|
|
_037FDEE4:
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FDEF0: .word 0x81400001
|
|
arm_func_end sub_037FDE88
|
|
|
|
arm_func_start sub_037FDEF4
|
|
sub_037FDEF4: ; 0x037FDEF4
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl EnableIrqFlag
|
|
mov r1, #6
|
|
mul r1, r4, r1
|
|
add r1, r1, #5
|
|
mov r1, r1, lsl #1
|
|
add r1, r1, #0x4000000
|
|
ldrh r2, [r1, #0xb0]
|
|
cmp r4, #0
|
|
bic r2, r2, #0x3200
|
|
strh r2, [r1, #0xb0]
|
|
ldrh r2, [r1, #0xb0]
|
|
bic r2, r2, #0x8000
|
|
strh r2, [r1, #0xb0]
|
|
ldrh r2, [r1, #0xb0]
|
|
ldrh r1, [r1, #0xb0]
|
|
bne _037FDF64
|
|
mov r1, #0xc
|
|
mul r1, r4, r1
|
|
add r2, r1, #0x4000000
|
|
mov r3, #0
|
|
add r1, r1, #0xb0
|
|
str r3, [r2, #0xb0]
|
|
add r2, r1, #0x4000000
|
|
ldr r1, _037FDF70 ; =0x81400001
|
|
str r3, [r2, #4]
|
|
str r1, [r2, #8]
|
|
_037FDF64:
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FDF70: .word 0x81400001
|
|
arm_func_end sub_037FDEF4
|
|
|
|
arm_func_start sub_037FDF74
|
|
sub_037FDF74: ; 0x037FDF74
|
|
mov r3, #0
|
|
_037FDF78:
|
|
cmp r3, r2
|
|
blt _037FDF84
|
|
b _037FDF88
|
|
_037FDF84:
|
|
strh r0, [r1, r3]
|
|
_037FDF88:
|
|
blt _037FDF90
|
|
b _037FDF94
|
|
_037FDF90:
|
|
add r3, r3, #2
|
|
_037FDF94:
|
|
blt _037FDF78
|
|
bx lr
|
|
arm_func_end sub_037FDF74
|
|
|
|
arm_func_start sub_037FDF9C
|
|
sub_037FDF9C: ; 0x037FDF9C
|
|
mov ip, #0
|
|
_037FDFA0:
|
|
cmp ip, r2
|
|
blt _037FDFAC
|
|
b _037FDFB0
|
|
_037FDFAC:
|
|
ldrh r3, [r0, ip]
|
|
_037FDFB0:
|
|
blt _037FDFB8
|
|
b _037FDFBC
|
|
_037FDFB8:
|
|
strh r3, [r1, ip]
|
|
_037FDFBC:
|
|
blt _037FDFC4
|
|
b _037FDFC8
|
|
_037FDFC4:
|
|
add ip, ip, #2
|
|
_037FDFC8:
|
|
blt _037FDFA0
|
|
bx lr
|
|
arm_func_end sub_037FDF9C
|
|
|
|
arm_func_start sub_037FDFD0
|
|
sub_037FDFD0: ; 0x037FDFD0
|
|
add ip, r1, r2
|
|
_037FDFD4:
|
|
cmp r1, ip
|
|
blt _037FDFE0
|
|
b _037FDFE4
|
|
_037FDFE0:
|
|
stmia r1!, {r0}
|
|
_037FDFE4:
|
|
blt _037FDFD4
|
|
bx lr
|
|
arm_func_end sub_037FDFD0
|
|
|
|
arm_func_start sub_037FDFEC
|
|
sub_037FDFEC: ; 0x037FDFEC
|
|
add ip, r1, r2
|
|
_037FDFF0:
|
|
cmp r1, ip
|
|
blt _037FDFFC
|
|
b _037FE000
|
|
_037FDFFC:
|
|
ldmia r0!, {r2}
|
|
_037FE000:
|
|
blt _037FE008
|
|
b _037FE00C
|
|
_037FE008:
|
|
stmia r1!, {r2}
|
|
_037FE00C:
|
|
blt _037FDFF0
|
|
bx lr
|
|
arm_func_end sub_037FDFEC
|
|
|
|
arm_func_start sub_037FE014
|
|
sub_037FE014: ; 0x037FE014
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb}
|
|
add sb, r1, r2
|
|
mov ip, r2, lsr #5
|
|
add ip, r1, ip, lsl #5
|
|
mov r2, r0
|
|
mov r3, r2
|
|
mov r4, r2
|
|
mov r5, r2
|
|
mov r6, r2
|
|
mov r7, r2
|
|
mov r8, r2
|
|
_037FE040:
|
|
cmp r1, ip
|
|
blt _037FE04C
|
|
b _037FE050
|
|
_037FE04C:
|
|
stmia r1!, {r0, r2, r3, r4, r5, r6, r7, r8}
|
|
_037FE050:
|
|
blt _037FE040
|
|
_037FE054:
|
|
cmp r1, sb
|
|
blt _037FE060
|
|
b _037FE064
|
|
_037FE060:
|
|
stmia r1!, {r0}
|
|
_037FE064:
|
|
blt _037FE054
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb}
|
|
bx lr
|
|
arm_func_end sub_037FE014
|
|
|
|
arm_func_start sub_037FE070
|
|
sub_037FE070: ; 0x037FE070
|
|
cmp r2, #0
|
|
beq _037FE07C
|
|
b _037FE080
|
|
_037FE07C:
|
|
bx lr
|
|
_037FE080:
|
|
tst r0, #1
|
|
beq _037FE0AC
|
|
ldrh ip, [r0, #-1]
|
|
and ip, ip, #0xff
|
|
orr r3, ip, r1, lsl #8
|
|
strh r3, [r0, #-1]
|
|
add r0, r0, #1
|
|
subs r2, r2, #1
|
|
beq _037FE0A8
|
|
b _037FE0AC
|
|
_037FE0A8:
|
|
bx lr
|
|
_037FE0AC:
|
|
cmp r2, #2
|
|
blo _037FE104
|
|
orr r1, r1, r1, lsl #8
|
|
tst r0, #2
|
|
beq _037FE0D4
|
|
strh r1, [r0], #2
|
|
subs r2, r2, #2
|
|
beq _037FE0D0
|
|
b _037FE0D4
|
|
_037FE0D0:
|
|
bx lr
|
|
_037FE0D4:
|
|
orr r1, r1, r1, lsl #16
|
|
bics r3, r2, #3
|
|
beq _037FE0F4
|
|
sub r2, r2, r3
|
|
add ip, r3, r0
|
|
_037FE0E8:
|
|
str r1, [r0], #4
|
|
cmp r0, ip
|
|
blo _037FE0E8
|
|
_037FE0F4:
|
|
tst r2, #2
|
|
bne _037FE100
|
|
b _037FE104
|
|
_037FE100:
|
|
strh r1, [r0], #2
|
|
_037FE104:
|
|
tst r2, #1
|
|
beq _037FE110
|
|
b _037FE114
|
|
_037FE110:
|
|
bx lr
|
|
_037FE114:
|
|
ldrh r3, [r0]
|
|
and r3, r3, #0xff00
|
|
and r1, r1, #0xff
|
|
orr r1, r1, r3
|
|
strh r1, [r0]
|
|
bx lr
|
|
arm_func_end sub_037FE070
|
|
|
|
arm_func_start sub_037FE12C
|
|
sub_037FE12C: ; 0x037FE12C
|
|
cmp r2, #0
|
|
beq _037FE138
|
|
b _037FE13C
|
|
_037FE138:
|
|
bx lr
|
|
_037FE13C:
|
|
tst r1, #1
|
|
beq _037FE194
|
|
ldrh ip, [r1, #-1]
|
|
and ip, ip, #0xff
|
|
tst r0, #1
|
|
bne _037FE158
|
|
b _037FE15C
|
|
_037FE158:
|
|
ldrh r3, [r0, #-1]
|
|
_037FE15C:
|
|
bne _037FE164
|
|
b _037FE168
|
|
_037FE164:
|
|
mov r3, r3, lsr #8
|
|
_037FE168:
|
|
beq _037FE170
|
|
b _037FE174
|
|
_037FE170:
|
|
ldrh r3, [r0]
|
|
_037FE174:
|
|
orr r3, ip, r3, lsl #8
|
|
strh r3, [r1, #-1]
|
|
add r0, r0, #1
|
|
add r1, r1, #1
|
|
subs r2, r2, #1
|
|
beq _037FE190
|
|
b _037FE194
|
|
_037FE190:
|
|
bx lr
|
|
_037FE194:
|
|
eor ip, r1, r0
|
|
tst ip, #1
|
|
beq _037FE1F0
|
|
bic r0, r0, #1
|
|
ldrh ip, [r0], #2
|
|
mov r3, ip, lsr #8
|
|
subs r2, r2, #2
|
|
blo _037FE1CC
|
|
_037FE1B4:
|
|
ldrh ip, [r0], #2
|
|
orr ip, r3, ip, lsl #8
|
|
strh ip, [r1], #2
|
|
mov r3, ip, lsr #0x10
|
|
subs r2, r2, #2
|
|
bhs _037FE1B4
|
|
_037FE1CC:
|
|
tst r2, #1
|
|
beq _037FE1D8
|
|
b _037FE1DC
|
|
_037FE1D8:
|
|
bx lr
|
|
_037FE1DC:
|
|
ldrh ip, [r1]
|
|
and ip, ip, #0xff00
|
|
orr ip, ip, r3
|
|
strh ip, [r1]
|
|
bx lr
|
|
_037FE1F0:
|
|
tst ip, #2
|
|
beq _037FE21C
|
|
bics r3, r2, #1
|
|
beq _037FE280
|
|
sub r2, r2, r3
|
|
add ip, r3, r1
|
|
_037FE208:
|
|
ldrh r3, [r0], #2
|
|
strh r3, [r1], #2
|
|
cmp r1, ip
|
|
blo _037FE208
|
|
b _037FE280
|
|
_037FE21C:
|
|
cmp r2, #2
|
|
blo _037FE280
|
|
tst r1, #2
|
|
beq _037FE244
|
|
ldrh r3, [r0], #2
|
|
strh r3, [r1], #2
|
|
subs r2, r2, #2
|
|
beq _037FE240
|
|
b _037FE244
|
|
_037FE240:
|
|
bx lr
|
|
_037FE244:
|
|
bics r3, r2, #3
|
|
beq _037FE264
|
|
sub r2, r2, r3
|
|
add ip, r3, r1
|
|
_037FE254:
|
|
ldr r3, [r0], #4
|
|
str r3, [r1], #4
|
|
cmp r1, ip
|
|
blo _037FE254
|
|
_037FE264:
|
|
tst r2, #2
|
|
bne _037FE270
|
|
b _037FE274
|
|
_037FE270:
|
|
ldrh r3, [r0], #2
|
|
_037FE274:
|
|
bne _037FE27C
|
|
b _037FE280
|
|
_037FE27C:
|
|
strh r3, [r1], #2
|
|
_037FE280:
|
|
tst r2, #1
|
|
beq _037FE28C
|
|
b _037FE290
|
|
_037FE28C:
|
|
bx lr
|
|
_037FE290:
|
|
ldrh r2, [r1]
|
|
ldrh r0, [r0]
|
|
and r2, r2, #0xff00
|
|
and r0, r0, #0xff
|
|
orr r0, r2, r0
|
|
strh r0, [r1]
|
|
bx lr
|
|
arm_func_end sub_037FE12C
|
|
|
|
arm_func_start sub_037FE2AC
|
|
sub_037FE2AC: ; 0x037FE2AC
|
|
.word 0xE1010090
|
|
bx lr
|
|
arm_func_end sub_037FE2AC
|
|
|
|
arm_func_start sub_037FE2B4
|
|
sub_037FE2B4: ; 0x037FE2B4
|
|
ldr ip, _037FE2BC ; =sub_037FE2C0
|
|
bx ip
|
|
.align 2, 0
|
|
_037FE2BC: .word sub_037FE2C0
|
|
arm_func_end sub_037FE2B4
|
|
|
|
arm_func_start sub_037FE2C0
|
|
sub_037FE2C0: ; 0x037FE2C0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FE380 ; =_0380785C
|
|
mov r4, r0
|
|
ldrh r0, [r1]
|
|
cmp r0, #0
|
|
bne _037FE370
|
|
ldr r0, _037FE384 ; =0x027FFC00
|
|
mov r2, #1
|
|
strh r2, [r1]
|
|
mov r2, #0
|
|
str r2, [r0, #0x38c]
|
|
ldr r0, _037FE388 ; =_03807860
|
|
mov r1, r2
|
|
_037FE2F8:
|
|
str r1, [r0, r2, lsl #2]
|
|
add r2, r2, #1
|
|
cmp r2, #0x20
|
|
blt _037FE2F8
|
|
ldr r2, _037FE38C ; =0x0000C408
|
|
ldr r1, _037FE390 ; =0x04000184
|
|
mov r0, #0x40000
|
|
strh r2, [r1]
|
|
bl sub_037FB964
|
|
ldr r1, _037FE394 ; =sub_037FE4A8
|
|
mov r0, #0x40000
|
|
bl sub_037FB7BC
|
|
mov r0, #0x40000
|
|
bl sub_037FB8F0
|
|
mov r5, #8
|
|
ldr r8, _037FE398 ; =0x04000180
|
|
mov r6, r5
|
|
mov r7, #0x3e8
|
|
b _037FE368
|
|
_037FE344:
|
|
mov r0, r5, lsl #8
|
|
strh r0, [r8]
|
|
mov r0, r7
|
|
bl sub_037FDD64
|
|
ldrh r0, [r8]
|
|
and r0, r0, #0xf
|
|
cmp r0, r5
|
|
movne r5, r6
|
|
sub r5, r5, #1
|
|
_037FE368:
|
|
cmp r5, #0
|
|
bge _037FE344
|
|
_037FE370:
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE380: .word _0380785C
|
|
_037FE384: .word 0x027FFC00
|
|
_037FE388: .word _03807860
|
|
_037FE38C: .word 0x0000C408
|
|
_037FE390: .word 0x04000184
|
|
_037FE394: .word sub_037FE4A8
|
|
_037FE398: .word 0x04000180
|
|
arm_func_end sub_037FE2C0
|
|
|
|
arm_func_start sub_037FE39C
|
|
sub_037FE39C: ; 0x037FE39C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
mov r5, r1
|
|
bl EnableIrqFlag
|
|
ldr r1, _037FE3E4 ; =_03807860
|
|
ldr r3, _037FE3E8 ; =0x027FFC00
|
|
str r5, [r1, r4, lsl #2]
|
|
cmp r5, #0
|
|
ldrne r2, [r3, #0x38c]
|
|
mov r1, #1
|
|
orrne r1, r2, r1, lsl r4
|
|
ldreq r2, [r3, #0x38c]
|
|
mvneq r1, r1, lsl r4
|
|
andeq r1, r2, r1
|
|
str r1, [r3, #0x38c]
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE3E4: .word _03807860
|
|
_037FE3E8: .word 0x027FFC00
|
|
arm_func_end sub_037FE39C
|
|
|
|
arm_func_start sub_037FE3EC
|
|
sub_037FE3EC: ; 0x037FE3EC
|
|
ldr r2, _037FE40C ; =0x027FFC00
|
|
mov r3, #1
|
|
add r1, r2, r1, lsl #2
|
|
ldr r1, [r1, #0x388]
|
|
tst r1, r3, lsl r0
|
|
moveq r3, #0
|
|
mov r0, r3
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE40C: .word 0x027FFC00
|
|
arm_func_end sub_037FE3EC
|
|
|
|
arm_func_start sub_037FE410
|
|
sub_037FE410: ; 0x037FE410
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, [sp]
|
|
and r0, r0, #0x1f
|
|
bic r3, r3, #0x1f
|
|
orr r0, r3, r0
|
|
bic r3, r0, #0x20
|
|
mov r0, r2, lsl #0x1f
|
|
orr r0, r3, r0, lsr #26
|
|
and r0, r0, #0x3f
|
|
orr r0, r0, r1, lsl #6
|
|
str r0, [sp]
|
|
bl sub_037FE448
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
arm_func_end sub_037FE410
|
|
|
|
arm_func_start sub_037FE448
|
|
sub_037FE448: ; 0x037FE448
|
|
stmdb sp!, {r4, lr}
|
|
ldr r2, _037FE4A4 ; =0x04000184
|
|
mov r4, r0
|
|
ldrh r0, [r2]
|
|
tst r0, #0x4000
|
|
ldrneh r1, [r2]
|
|
mvnne r0, #0
|
|
orrne r1, r1, #0xc000
|
|
strneh r1, [r2]
|
|
bne _037FE49C
|
|
bl EnableIrqFlag
|
|
ldr r2, _037FE4A4 ; =0x04000184
|
|
ldrh r1, [r2]
|
|
tst r1, #2
|
|
beq _037FE490
|
|
bl SetIrqFlag
|
|
mvn r0, #1
|
|
b _037FE49C
|
|
_037FE490:
|
|
str r4, [r2, #4]
|
|
bl SetIrqFlag
|
|
mov r0, #0
|
|
_037FE49C:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE4A4: .word 0x04000184
|
|
arm_func_end sub_037FE448
|
|
|
|
arm_func_start sub_037FE4A8
|
|
sub_037FE4A8: ; 0x037FE4A8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #4
|
|
ldr r6, [sp]
|
|
mvn r8, #3
|
|
ldr r4, _037FE580 ; =_03807860
|
|
ldr sb, _037FE584 ; =0x04000184
|
|
add sl, r8, #1
|
|
mov r7, #0x4100000
|
|
mov r5, #0
|
|
_037FE4CC:
|
|
ldrh r0, [sb]
|
|
tst r0, #0x4000
|
|
ldrneh r0, [sb]
|
|
addne r1, r8, #1
|
|
orrne r0, r0, #0xc000
|
|
strneh r0, [sb]
|
|
bne _037FE514
|
|
bl EnableIrqFlag
|
|
ldrh r1, [sb]
|
|
tst r1, #0x100
|
|
beq _037FE504
|
|
bl SetIrqFlag
|
|
mov r1, r8
|
|
b _037FE514
|
|
_037FE504:
|
|
ldr r6, [r7]
|
|
str r6, [sp]
|
|
bl SetIrqFlag
|
|
mov r1, r5
|
|
_037FE514:
|
|
cmp r1, r8
|
|
beq _037FE574
|
|
cmp r1, sl
|
|
beq _037FE4CC
|
|
mov r0, r6, lsl #0x1b
|
|
movs r0, r0, lsr #0x1b
|
|
beq _037FE4CC
|
|
ldr r3, [r4, r0, lsl #2]
|
|
cmp r3, #0
|
|
beq _037FE554
|
|
mov r2, r6, lsl #0x1a
|
|
mov r1, r6, lsr #6
|
|
mov r2, r2, lsr #0x1f
|
|
mov lr, pc
|
|
bx r3
|
|
_037FE550:
|
|
b _037FE4CC
|
|
_037FE554:
|
|
mov r0, r6, lsl #0x1a
|
|
movs r0, r0, lsr #0x1f
|
|
bne _037FE4CC
|
|
orr r6, r6, #0x20
|
|
mov r0, r6
|
|
str r6, [sp]
|
|
bl sub_037FE448
|
|
b _037FE4CC
|
|
_037FE574:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE580: .word _03807860
|
|
_037FE584: .word 0x04000184
|
|
arm_func_end sub_037FE4A8
|
|
|
|
arm_func_start sub_037FE588
|
|
sub_037FE588: ; 0x037FE588
|
|
ldr r2, _037FE5A4 ; =0x04000134
|
|
mvn r3, r0
|
|
ldrh r0, [r2]
|
|
and r0, r3, r0
|
|
orr r0, r1, r0
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE5A4: .word 0x04000134
|
|
arm_func_end sub_037FE588
|
|
|
|
arm_func_start sub_037FE5A8
|
|
sub_037FE5A8: ; 0x037FE5A8
|
|
ldr ip, _037FE5BC ; =sub_037FE588
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r0, lsr #0x10
|
|
mov r0, #0xc000
|
|
bx ip
|
|
.align 2, 0
|
|
_037FE5BC: .word sub_037FE588
|
|
arm_func_end sub_037FE5A8
|
|
|
|
arm_func_start sub_037FE5C0
|
|
sub_037FE5C0: ; 0x037FE5C0
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #0xc
|
|
bl sub_037FD1A4
|
|
cmp r0, #0
|
|
beq _037FE5E0
|
|
bl sub_037FD390
|
|
cmp r0, #0
|
|
bne _037FE5E8
|
|
_037FE5E0:
|
|
mov r0, #0
|
|
b _037FE640
|
|
_037FE5E8:
|
|
ldr r0, _037FE64C ; =_038078E0
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
bne _037FE640
|
|
ldr r0, _037FE650 ; =_038078E4
|
|
bl sub_037FD3A0
|
|
bl GetCurrentPlaybackTime
|
|
ldr r2, _037FE654 ; =sub_037FE65C
|
|
ldr r3, _037FE658 ; =0x0000082E
|
|
str r2, [sp, #4]
|
|
adds ip, r0, r3
|
|
mov lr, #0
|
|
str lr, [sp, #8]
|
|
adc r2, r1, #0
|
|
ldr r0, _037FE650 ; =_038078E4
|
|
mov r1, ip
|
|
str lr, [sp]
|
|
bl sub_037FD54C
|
|
ldr r1, _037FE64C ; =_038078E0
|
|
mov r0, #1
|
|
str r0, [r1]
|
|
_037FE640:
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE64C: .word _038078E0
|
|
_037FE650: .word _038078E4
|
|
_037FE654: .word sub_037FE65C
|
|
_037FE658: .word 0x0000082E
|
|
arm_func_end sub_037FE5C0
|
|
|
|
arm_func_start sub_037FE65C
|
|
sub_037FE65C: ; 0x037FE65C
|
|
stmdb sp!, {r4, lr}
|
|
mov r0, #0x8000
|
|
mov r4, #0
|
|
bl sub_037FE5A8
|
|
ldr r0, _037FE694 ; =0x04000136
|
|
ldrh r1, [r0]
|
|
ldr r0, _037FE698 ; =0x027FFFA8
|
|
tst r1, #0x80
|
|
movne r4, #0x8000
|
|
and r1, r1, #0xb
|
|
orr r1, r4, r1, lsl #10
|
|
strh r1, [r0]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE694: .word 0x04000136
|
|
_037FE698: .word 0x027FFFA8
|
|
arm_func_end sub_037FE65C
|
|
|
|
arm_func_start sub_037FE69C
|
|
sub_037FE69C: ; 0x037FE69C
|
|
ldr r1, _037FE6B0 ; =0x04000501
|
|
ldrb r0, [r1]
|
|
orr r0, r0, #0x80
|
|
strb r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE6B0: .word 0x04000501
|
|
arm_func_end sub_037FE69C
|
|
|
|
arm_func_start sub_037FE6B4
|
|
sub_037FE6B4: ; 0x037FE6B4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _037FE700 ; =0x04000501
|
|
mov r5, #0
|
|
ldrb r0, [r1]
|
|
bic r0, r0, #0x80
|
|
strb r0, [r1]
|
|
mov r4, #1
|
|
_037FE6D0:
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_037FEA20
|
|
add r5, r5, #1
|
|
cmp r5, #0x10
|
|
blt _037FE6D0
|
|
ldr r0, _037FE704 ; =0x04000508
|
|
mov r1, #0
|
|
strb r1, [r0]
|
|
strb r1, [r0, #1]
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE700: .word 0x04000501
|
|
_037FE704: .word 0x04000508
|
|
arm_func_end sub_037FE6B4
|
|
|
|
arm_func_start sub_037FE708
|
|
sub_037FE708: ; 0x037FE708
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _037FE74C ; =0x04000501
|
|
mov r0, #0x80
|
|
ldrb r1, [r2]
|
|
bic r1, r1, #0x80
|
|
strb r1, [r2]
|
|
bl sub_037FE754
|
|
mov r0, #0x40000
|
|
bl sub_037FDD64
|
|
mov r0, #1
|
|
bl sub_03804D64
|
|
ldr r1, _037FE750 ; =0x04000304
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #1
|
|
strh r0, [r1]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE74C: .word 0x04000501
|
|
_037FE750: .word 0x04000304
|
|
arm_func_end sub_037FE708
|
|
|
|
arm_func_start sub_037FE754
|
|
sub_037FE754: ; 0x037FE754
|
|
ldr ip, _037FE75C ; =sub_038037E6
|
|
bx ip
|
|
.align 2, 0
|
|
_037FE75C: .word sub_038037E6 + 1
|
|
arm_func_end sub_037FE754
|
|
|
|
arm_func_start sub_037FE760
|
|
sub_037FE760: ; 0x037FE760
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _037FE7A4 ; =0x04000304
|
|
mov r0, #1
|
|
ldrh r1, [r2]
|
|
orr r1, r1, #1
|
|
strh r1, [r2]
|
|
bl sub_03804D40
|
|
mov r0, #0x100
|
|
bl sub_037FE7B0
|
|
ldr r0, _037FE7A8 ; =0x0007AB80
|
|
bl sub_037FDD64
|
|
ldr r1, _037FE7AC ; =0x04000501
|
|
ldrb r0, [r1]
|
|
orr r0, r0, #0x80
|
|
strb r0, [r1]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE7A4: .word 0x04000304
|
|
_037FE7A8: .word 0x0007AB80
|
|
_037FE7AC: .word 0x04000501
|
|
arm_func_end sub_037FE760
|
|
|
|
arm_func_start sub_037FE7B0
|
|
sub_037FE7B0: ; 0x037FE7B0
|
|
ldr ip, _037FE7B8 ; =sub_038037DE
|
|
bx ip
|
|
.align 2, 0
|
|
_037FE7B8: .word sub_038037DE + 1
|
|
arm_func_end sub_037FE7B0
|
|
|
|
arm_func_start sub_037FE7BC
|
|
sub_037FE7BC: ; 0x037FE7BC
|
|
ldr r1, _037FE7C8 ; =0x04000500
|
|
strb r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE7C8: .word 0x04000500
|
|
arm_func_end sub_037FE7BC
|
|
|
|
arm_func_start sub_037FE7CC
|
|
sub_037FE7CC: ; 0x037FE7CC
|
|
ldr ip, _037FE800 ; =0x04000501
|
|
mov r3, r3, lsl #5
|
|
ldrb ip, [ip]
|
|
tst ip, #0x80
|
|
movne ip, #1
|
|
moveq ip, #0
|
|
orr r3, r3, ip, lsl #7
|
|
orr r2, r3, r2, lsl #4
|
|
orr r2, r2, r1, lsl #2
|
|
ldr r1, _037FE800 ; =0x04000501
|
|
orr r0, r0, r2
|
|
strb r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE800: .word 0x04000501
|
|
arm_func_end sub_037FE7CC
|
|
|
|
arm_func_start sub_037FE804
|
|
sub_037FE804: ; 0x037FE804
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r4, _037FE8BC ; =_03807558
|
|
mov r8, r1
|
|
ldr lr, [r4]
|
|
ldr r1, _037FE8C0 ; =_03807910
|
|
mov r7, r2
|
|
ldr r5, [sp, #0x2c]
|
|
ldr r4, _037FE8C4 ; =_03807914
|
|
ldr ip, [sp, #0x20]
|
|
ldr r2, _037FE8C8 ; =_03807924
|
|
strb r5, [r4, r0]
|
|
cmp lr, #0
|
|
ldr r1, [r1]
|
|
movge r5, lr
|
|
mov r6, r3
|
|
mov r4, r0, lsl #4
|
|
strb ip, [r2, r0]
|
|
cmp r1, #0
|
|
ble _037FE870
|
|
ldr r1, _037FE8CC ; =0x0000FFF5
|
|
mov r2, #1
|
|
tst r1, r2, lsl r0
|
|
beq _037FE870
|
|
mov r0, ip
|
|
mov r1, r5
|
|
bl sub_037FEC40
|
|
mov ip, r0
|
|
_037FE870:
|
|
ldr r2, [sp, #0x24]
|
|
mov r0, r6, lsl #0x1b
|
|
orr r0, r0, r7, lsl #29
|
|
orr r1, r0, r5, lsl #16
|
|
ldr r0, [sp, #0x28]
|
|
orr r2, r1, r2, lsl #8
|
|
add r1, r4, #0x4000000
|
|
orr r2, ip, r2
|
|
str r2, [r1, #0x400]
|
|
ldr r3, [sp, #0x18]
|
|
rsb r2, r0, #0x10000
|
|
add r0, r1, #0x400
|
|
strh r2, [r0, #8]
|
|
ldr r2, [sp, #0x1c]
|
|
strh r3, [r0, #0xa]
|
|
str r2, [r1, #0x40c]
|
|
str r8, [r1, #0x404]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE8BC: .word _03807558
|
|
_037FE8C0: .word _03807910
|
|
_037FE8C4: .word _03807914
|
|
_037FE8C8: .word _03807924
|
|
_037FE8CC: .word 0x0000FFF5
|
|
arm_func_end sub_037FE804
|
|
|
|
arm_func_start sub_037FE8D0
|
|
sub_037FE8D0: ; 0x037FE8D0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r4, _037FE968 ; =_03807558
|
|
mov r7, r1
|
|
ldr ip, [r4]
|
|
ldr r1, _037FE96C ; =_03807910
|
|
mov r6, r3
|
|
ldr r3, _037FE970 ; =_03807924
|
|
ldr r5, [sp, #0x1c]
|
|
ldr r4, _037FE974 ; =_03807914
|
|
ldr r1, [r1]
|
|
strb r5, [r4, r0]
|
|
cmp ip, #0
|
|
movge r5, ip
|
|
mov r4, r0, lsl #4
|
|
strb r2, [r3, r0]
|
|
cmp r1, #0
|
|
ble _037FE934
|
|
ldr r1, _037FE978 ; =0x0000FFF5
|
|
mov r3, #1
|
|
tst r1, r3, lsl r0
|
|
beq _037FE934
|
|
mov r0, r2
|
|
mov r1, r5
|
|
bl sub_037FEC40
|
|
mov r2, r0
|
|
_037FE934:
|
|
mov r0, r7, lsl #0x18
|
|
orr r0, r0, #0x60000000
|
|
orr r0, r0, r5, lsl #16
|
|
ldr r1, [sp, #0x18]
|
|
orr r3, r0, r6, lsl #8
|
|
add r0, r4, #0x4000000
|
|
orr r2, r2, r3
|
|
str r2, [r0, #0x400]
|
|
rsb r1, r1, #0x10000
|
|
add r0, r0, #0x400
|
|
strh r1, [r0, #8]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FE968: .word _03807558
|
|
_037FE96C: .word _03807910
|
|
_037FE970: .word _03807924
|
|
_037FE974: .word _03807914
|
|
_037FE978: .word 0x0000FFF5
|
|
arm_func_end sub_037FE8D0
|
|
|
|
arm_func_start sub_037FE97C
|
|
sub_037FE97C: ; 0x037FE97C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r4, _037FEA0C ; =_03807558
|
|
mov r7, r2
|
|
ldr ip, [r4]
|
|
ldr r2, _037FEA10 ; =_03807910
|
|
mov r6, r3
|
|
ldr r3, _037FEA14 ; =_03807924
|
|
ldr r5, [sp, #0x18]
|
|
ldr r4, _037FEA18 ; =_03807914
|
|
ldr r2, [r2]
|
|
strb r5, [r4, r0]
|
|
cmp ip, #0
|
|
movge r5, ip
|
|
mov r4, r0, lsl #4
|
|
strb r1, [r3, r0]
|
|
cmp r2, #0
|
|
ble _037FE9E0
|
|
ldr r2, _037FEA1C ; =0x0000FFF5
|
|
mov r3, #1
|
|
tst r2, r3, lsl r0
|
|
beq _037FE9E0
|
|
mov r0, r1
|
|
mov r1, r5
|
|
bl sub_037FEC40
|
|
mov r1, r0
|
|
_037FE9E0:
|
|
mov r0, r5, lsl #0x10
|
|
orr r0, r0, #0x60000000
|
|
orr r2, r0, r7, lsl #8
|
|
add r0, r4, #0x4000000
|
|
orr r1, r1, r2
|
|
str r1, [r0, #0x400]
|
|
rsb r1, r6, #0x10000
|
|
add r0, r0, #0x400
|
|
strh r1, [r0, #8]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEA0C: .word _03807558
|
|
_037FEA10: .word _03807910
|
|
_037FEA14: .word _03807924
|
|
_037FEA18: .word _03807914
|
|
_037FEA1C: .word 0x0000FFF5
|
|
arm_func_end sub_037FE97C
|
|
|
|
arm_func_start sub_037FEA20
|
|
sub_037FEA20: ; 0x037FEA20
|
|
mov r3, r0, lsl #4
|
|
add r0, r3, #0x4000000
|
|
ldr r2, [r0, #0x400]
|
|
add r0, r3, #0x400
|
|
tst r1, #1
|
|
bic r1, r2, #0x80000000
|
|
add r0, r0, #0x4000000
|
|
orrne r1, r1, #0x8000
|
|
str r1, [r0]
|
|
bx lr
|
|
arm_func_end sub_037FEA20
|
|
|
|
arm_func_start sub_037FEA48
|
|
sub_037FEA48: ; 0x037FEA48
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r3, _037FEAB4 ; =_03807910
|
|
ldr ip, _037FEAB8 ; =_03807924
|
|
ldr r3, [r3]
|
|
mov r5, r0
|
|
mov r4, r2
|
|
strb r1, [ip, r5]
|
|
cmp r3, #0
|
|
ble _037FEA98
|
|
ldr r0, _037FEABC ; =0x0000FFF5
|
|
mov r2, #1
|
|
tst r0, r2, lsl r5
|
|
beq _037FEA98
|
|
mov r0, r5, lsl #4
|
|
add r0, r0, #0x4000000
|
|
ldrb r2, [r0, #0x402]
|
|
mov r0, r1
|
|
mov r1, r2
|
|
bl sub_037FEC40
|
|
mov r1, r0
|
|
_037FEA98:
|
|
mov r0, r5, lsl #4
|
|
add r0, r0, #0x4000000
|
|
orr r1, r1, r4, lsl #8
|
|
add r0, r0, #0x400
|
|
strh r1, [r0]
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEAB4: .word _03807910
|
|
_037FEAB8: .word _03807924
|
|
_037FEABC: .word 0x0000FFF5
|
|
arm_func_end sub_037FEA48
|
|
|
|
arm_func_start sub_037FEAC0
|
|
sub_037FEAC0: ; 0x037FEAC0
|
|
mov r0, r0, lsl #4
|
|
add r0, r0, #0x4000000
|
|
rsb r1, r1, #0x10000
|
|
add r0, r0, #0x400
|
|
strh r1, [r0, #8]
|
|
bx lr
|
|
arm_func_end sub_037FEAC0
|
|
|
|
arm_func_start sub_037FEAD8
|
|
sub_037FEAD8: ; 0x037FEAD8
|
|
stmdb sp!, {r4, lr}
|
|
ldr r2, _037FEB3C ; =_03807558
|
|
ldr r3, _037FEB40 ; =_03807914
|
|
ldr r2, [r2]
|
|
strb r1, [r3, r0]
|
|
cmp r2, #0
|
|
ldr r3, _037FEB44 ; =_03807910
|
|
mov r4, r0, lsl #4
|
|
movge r1, r2
|
|
add r2, r4, #0x4000000
|
|
strb r1, [r2, #0x402]
|
|
ldr r2, [r3]
|
|
cmp r2, #0
|
|
ble _037FEB34
|
|
ldr r2, _037FEB48 ; =0x0000FFF5
|
|
mov r3, #1
|
|
tst r2, r3, lsl r0
|
|
beq _037FEB34
|
|
ldr r2, _037FEB4C ; =_03807924
|
|
ldrb r0, [r2, r0]
|
|
bl sub_037FEC40
|
|
add r1, r4, #0x4000000
|
|
strb r0, [r1, #0x400]
|
|
_037FEB34:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEB3C: .word _03807558
|
|
_037FEB40: .word _03807914
|
|
_037FEB44: .word _03807910
|
|
_037FEB48: .word 0x0000FFF5
|
|
_037FEB4C: .word _03807924
|
|
arm_func_end sub_037FEAD8
|
|
|
|
arm_func_start sub_037FEB50
|
|
sub_037FEB50: ; 0x037FEB50
|
|
mov r0, r0, lsl #4
|
|
add r0, r0, #0x4000000
|
|
ldrb r0, [r0, #0x403]
|
|
tst r0, #0x80
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
bx lr
|
|
arm_func_end sub_037FEB50
|
|
|
|
arm_func_start sub_037FEB6C
|
|
sub_037FEB6C: ; 0x037FEB6C
|
|
ldr r1, _037FEBC8 ; =_03807558
|
|
cmp r0, #0
|
|
str r0, [r1]
|
|
blt _037FEBA0
|
|
mov r2, #0
|
|
and r1, r0, #0xff
|
|
_037FEB84:
|
|
mov r0, r2, lsl #4
|
|
add r0, r0, #0x4000000
|
|
add r2, r2, #1
|
|
strb r1, [r0, #0x402]
|
|
cmp r2, #0x10
|
|
blt _037FEB84
|
|
bx lr
|
|
_037FEBA0:
|
|
ldr r2, _037FEBCC ; =_03807914
|
|
mov r3, #0
|
|
_037FEBA8:
|
|
ldrb r1, [r2, r3]
|
|
mov r0, r3, lsl #4
|
|
add r0, r0, #0x4000000
|
|
add r3, r3, #1
|
|
strb r1, [r0, #0x402]
|
|
cmp r3, #0x10
|
|
blt _037FEBA8
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEBC8: .word _03807558
|
|
_037FEBCC: .word _03807914
|
|
arm_func_end sub_037FEB6C
|
|
|
|
arm_func_start sub_037FEBD0
|
|
sub_037FEBD0: ; 0x037FEBD0
|
|
mov r0, r0, lsl #4
|
|
add r0, r0, #0x4000000
|
|
ldr r0, [r0, #0x400]
|
|
bx lr
|
|
arm_func_end sub_037FEBD0
|
|
|
|
arm_func_start sub_037FEBE0
|
|
sub_037FEBE0: ; 0x037FEBE0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r1, _037FEC34 ; =_03807910
|
|
ldr r5, _037FEC38 ; =_03807924
|
|
ldr r4, _037FEC3C ; =0x0000FFF5
|
|
str r0, [r1]
|
|
mov r7, #0
|
|
mov r6, #1
|
|
_037FEBFC:
|
|
tst r4, r6, lsl r7
|
|
beq _037FEC20
|
|
mov r8, r7, lsl #4
|
|
add r0, r8, #0x4000000
|
|
ldrb r1, [r0, #0x402]
|
|
ldrb r0, [r5, r7]
|
|
bl sub_037FEC40
|
|
add r1, r8, #0x4000000
|
|
strb r0, [r1, #0x400]
|
|
_037FEC20:
|
|
add r7, r7, #1
|
|
cmp r7, #0x10
|
|
blt _037FEBFC
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEC34: .word _03807910
|
|
_037FEC38: .word _03807924
|
|
_037FEC3C: .word 0x0000FFF5
|
|
arm_func_end sub_037FEBE0
|
|
|
|
arm_func_start sub_037FEC40
|
|
sub_037FEC40: ; 0x037FEC40
|
|
cmp r1, #0x18
|
|
bge _037FEC70
|
|
ldr r2, _037FECA4 ; =_03807910
|
|
add r3, r1, #0x28
|
|
ldr ip, [r2]
|
|
ldr r1, _037FECA8 ; =0x00007FFF
|
|
mul r2, ip, r3
|
|
sub r1, r1, ip
|
|
add r1, r2, r1, lsl #6
|
|
mul r1, r0, r1
|
|
mov r0, r1, asr #0x15
|
|
bx lr
|
|
_037FEC70:
|
|
cmp r1, #0x68
|
|
bxle lr
|
|
ldr r2, _037FECA4 ; =_03807910
|
|
sub r1, r1, #0x28
|
|
ldr ip, [r2]
|
|
rsb r2, ip, #0
|
|
mul r3, r2, r1
|
|
add r1, ip, #0xff
|
|
add r1, r1, #0x7f00
|
|
add r1, r3, r1, lsl #6
|
|
mul r1, r0, r1
|
|
mov r0, r1, asr #0x15
|
|
bx lr
|
|
.align 2, 0
|
|
_037FECA4: .word _03807910
|
|
_037FECA8: .word 0x00007FFF
|
|
arm_func_end sub_037FEC40
|
|
|
|
arm_func_start sub_037FECAC
|
|
sub_037FECAC: ; 0x037FECAC
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
rsb r0, r1, #0
|
|
mov r4, #0
|
|
b _037FECC8
|
|
_037FECC0:
|
|
sub r4, r4, #1
|
|
add r0, r0, #0x300
|
|
_037FECC8:
|
|
cmp r0, #0
|
|
blt _037FECC0
|
|
b _037FECDC
|
|
_037FECD4:
|
|
add r4, r4, #1
|
|
sub r0, r0, #0x300
|
|
_037FECDC:
|
|
cmp r0, #0x300
|
|
bge _037FECD4
|
|
bl sub_037FEDCC
|
|
adds r3, r0, #0x10000
|
|
mov r0, r5, asr #0x1f
|
|
umull r2, r1, r3, r5
|
|
mov ip, #0
|
|
mla r1, r3, r0, r1
|
|
adc r3, ip, #0
|
|
sub r0, r4, #0x10
|
|
mla r1, r3, r5, r1
|
|
cmp r0, #0
|
|
mov r4, #0x10000
|
|
bgt _037FED34
|
|
rsb r3, r0, #0
|
|
mov r4, r2, lsr r3
|
|
rsb r0, r3, #0x20
|
|
orr r4, r4, r1, lsl r0
|
|
sub r0, r3, #0x20
|
|
mov r3, r1, lsr r3
|
|
orr r4, r4, r1, lsr r0
|
|
b _037FED90
|
|
_037FED34:
|
|
cmp r0, #0x20
|
|
bge _037FED88
|
|
rsb r5, r0, #0x20
|
|
sub lr, ip, #1
|
|
mov r6, lr, lsl r5
|
|
rsb r3, r5, #0x20
|
|
orr r6, r6, lr, lsr r3
|
|
sub r3, r5, #0x20
|
|
orr r6, r6, lr, lsl r3
|
|
and r3, r1, r6
|
|
and r6, r2, lr, lsl r5
|
|
cmp r3, ip
|
|
cmpeq r6, ip
|
|
subne r0, r4, #1
|
|
bne _037FEDC0
|
|
mov r3, r1, lsl r0
|
|
orr r3, r3, r2, lsr r5
|
|
sub r1, r0, #0x20
|
|
mov r4, r2, lsl r0
|
|
orr r3, r3, r2, lsl r1
|
|
b _037FED90
|
|
_037FED88:
|
|
sub r0, r4, #1
|
|
b _037FEDC0
|
|
_037FED90:
|
|
mov r0, #0x10
|
|
cmp r3, #0
|
|
cmpeq r4, #0x10
|
|
mov r1, #0
|
|
movlo r4, r0
|
|
blo _037FEDB8
|
|
ldr r0, _037FEDC8 ; =0x0000FFFF
|
|
cmp r3, r1
|
|
cmpeq r4, r0
|
|
movhi r4, r0
|
|
_037FEDB8:
|
|
mov r0, r4, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
_037FEDC0:
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEDC8: .word 0x0000FFFF
|
|
arm_func_end sub_037FECAC
|
|
|
|
arm_func_start sub_037FEDCC
|
|
sub_037FEDCC: ; 0x037FEDCC
|
|
ldr ip, _037FEDD4 ; =sub_03803828
|
|
bx ip
|
|
.align 2, 0
|
|
_037FEDD4: .word sub_03803828 + 1
|
|
arm_func_end sub_037FEDCC
|
|
|
|
arm_func_start sub_037FEDD8
|
|
sub_037FEDD8: ; 0x037FEDD8
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _037FEE48 ; =0xFFFFFD2D
|
|
mov r4, r0
|
|
cmp r4, r1
|
|
movlt r4, r1
|
|
blt _037FEDF8
|
|
cmp r4, #0
|
|
movgt r4, #0
|
|
_037FEDF8:
|
|
add r0, r4, #0xd3
|
|
add r0, r0, #0x200
|
|
bl sub_037FEE4C
|
|
mvn r2, #0xef
|
|
cmp r4, r2
|
|
movlt r1, #3
|
|
blt _037FEE34
|
|
add r1, r2, #0x78
|
|
cmp r4, r1
|
|
movlt r1, #2
|
|
blt _037FEE34
|
|
add r1, r2, #0xb4
|
|
cmp r4, r1
|
|
movlt r1, #1
|
|
movge r1, #0
|
|
_037FEE34:
|
|
orr r0, r0, r1, lsl #8
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEE48: .word 0xFFFFFD2D
|
|
arm_func_end sub_037FEDD8
|
|
|
|
arm_func_start sub_037FEE4C
|
|
sub_037FEE4C: ; 0x037FEE4C
|
|
ldr ip, _037FEE54 ; =sub_0380382C
|
|
bx ip
|
|
.align 2, 0
|
|
_037FEE54: .word sub_0380382C + 1
|
|
arm_func_end sub_037FEE4C
|
|
|
|
arm_func_start sub_037FEE58
|
|
sub_037FEE58: ; 0x037FEE58
|
|
cmp r0, #0x20
|
|
ldrlt r1, _037FEEC0 ; =_03806FB8
|
|
ldrltsb r0, [r1, r0]
|
|
bxlt lr
|
|
cmp r0, #0x40
|
|
ldrlt r1, _037FEEC0 ; =_03806FB8
|
|
rsblt r0, r0, #0x40
|
|
ldrltsb r0, [r1, r0]
|
|
bxlt lr
|
|
cmp r0, #0x60
|
|
bge _037FEEA0
|
|
ldr r1, _037FEEC0 ; =_03806FB8
|
|
sub r0, r0, #0x40
|
|
ldrsb r0, [r1, r0]
|
|
rsb r0, r0, #0
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
bx lr
|
|
_037FEEA0:
|
|
ldr r1, _037FEEC0 ; =_03806FB8
|
|
sub r0, r0, #0x60
|
|
rsb r0, r0, #0x20
|
|
ldrsb r0, [r1, r0]
|
|
rsb r0, r0, #0
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEEC0: .word _03806FB8
|
|
arm_func_end sub_037FEE58
|
|
|
|
arm_func_start sub_037FEEC4
|
|
sub_037FEEC4: ; 0x037FEEC4
|
|
ldr r2, _037FEEEC ; =_0380755C
|
|
ldr r0, _037FEEF0 ; =0x0019660D
|
|
ldr r3, [r2]
|
|
ldr r1, _037FEEF4 ; =0x3C6EF35F
|
|
mla r1, r3, r0, r1
|
|
mov r0, r1, lsr #0x10
|
|
mov r0, r0, lsl #0x10
|
|
str r1, [r2]
|
|
mov r0, r0, lsr #0x10
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEEEC: .word _0380755C
|
|
_037FEEF0: .word 0x0019660D
|
|
_037FEEF4: .word 0x3C6EF35F
|
|
arm_func_end sub_037FEEC4
|
|
|
|
arm_func_start sub_037FEEF8
|
|
sub_037FEEF8: ; 0x037FEEF8
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #8
|
|
ldr r1, _037FEF54 ; =_03807934
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
bne _037FEF48
|
|
mov r0, #1
|
|
str r0, [r1]
|
|
bl sub_03801ED8
|
|
mov r0, #0x400
|
|
str r0, [sp]
|
|
ldr r0, _037FEF58 ; =_038079A4
|
|
ldr r1, _037FEF5C ; =sub_037FF008
|
|
ldr r3, _037FEF60 ; =_03807E48
|
|
mov r2, #0
|
|
str r4, [sp, #4]
|
|
bl sub_037FC054
|
|
ldr r0, _037FEF58 ; =_038079A4
|
|
bl sub_037FC36C
|
|
_037FEF48:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEF54: .word _03807934
|
|
_037FEF58: .word _038079A4
|
|
_037FEF5C: .word sub_037FF008
|
|
_037FEF60: .word _03807E48
|
|
arm_func_end sub_037FEEF8
|
|
|
|
arm_func_start sub_037FEF64
|
|
sub_037FEF64: ; 0x037FEF64
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #0xc
|
|
bl GetCurrentPlaybackTime
|
|
ldr r3, _037FEFA8 ; =sub_037FEFEC
|
|
adds ip, r0, #0x10000
|
|
str r3, [sp, #4]
|
|
mov lr, #0
|
|
str lr, [sp, #8]
|
|
adc r2, r1, #0
|
|
ldr r3, _037FEFAC ; =0x00000AA8
|
|
ldr r0, _037FEFB0 ; =_03807978
|
|
mov r1, ip
|
|
str lr, [sp]
|
|
bl sub_037FD54C
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FEFA8: .word sub_037FEFEC
|
|
_037FEFAC: .word 0x00000AA8
|
|
_037FEFB0: .word _03807978
|
|
arm_func_end sub_037FEF64
|
|
|
|
arm_func_start sub_037FEFB4
|
|
sub_037FEFB4: ; 0x037FEFB4
|
|
ldr ip, _037FEFC0 ; =sub_037FD5C0
|
|
ldr r0, _037FEFC4 ; =_03807978
|
|
bx ip
|
|
.align 2, 0
|
|
_037FEFC0: .word sub_037FD5C0
|
|
_037FEFC4: .word _03807978
|
|
arm_func_end sub_037FEFB4
|
|
|
|
arm_func_start sub_037FEFC8
|
|
sub_037FEFC8: ; 0x037FEFC8
|
|
ldr ip, _037FEFDC ; =sub_037FC6D4
|
|
ldr r0, _037FEFE0 ; =_03807958
|
|
mov r1, #2
|
|
mov r2, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_037FEFDC: .word sub_037FC6D4
|
|
_037FEFE0: .word _03807958
|
|
arm_func_end sub_037FEFC8
|
|
|
|
arm_func_start sub_037FEFE4
|
|
sub_037FEFE4: ; 0x037FEFE4
|
|
bx lr
|
|
arm_func_end sub_037FEFE4
|
|
|
|
arm_func_start sub_037FEFE8
|
|
sub_037FEFE8: ; 0x037FEFE8
|
|
bx lr
|
|
arm_func_end sub_037FEFE8
|
|
|
|
arm_func_start sub_037FEFEC
|
|
sub_037FEFEC: ; 0x037FEFEC
|
|
ldr ip, _037FF000 ; =sub_037FC6D4
|
|
ldr r0, _037FF004 ; =_03807958
|
|
mov r1, #1
|
|
mov r2, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_037FF000: .word sub_037FC6D4
|
|
_037FF004: .word _03807958
|
|
arm_func_end sub_037FEFEC
|
|
|
|
arm_func_start sub_037FF008
|
|
sub_037FF008: ; 0x037FF008
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0x10
|
|
ldr r0, _037FF0E8 ; =_03807958
|
|
ldr r1, _037FF0EC ; =_03807938
|
|
mov r2, #8
|
|
bl sub_037FC6AC
|
|
ldr r0, _037FF0F0 ; =_03807978
|
|
bl sub_037FD3A0
|
|
bl sub_037FF164
|
|
bl sub_037FFEF0
|
|
bl sub_03801D24
|
|
bl sub_037FE69C
|
|
mov r0, #0
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
bl sub_037FE7CC
|
|
mov r0, #0x7f
|
|
bl sub_037FE7BC
|
|
bl GetCurrentPlaybackTime
|
|
ldr r2, _037FF0F4 ; =sub_037FEFEC
|
|
adds r4, r0, #0x10000
|
|
str r2, [sp, #4]
|
|
mov r0, #0
|
|
str r0, [sp, #8]
|
|
str r0, [sp]
|
|
adc r2, r1, #0
|
|
ldr r3, _037FF0F8 ; =0x00000AA8
|
|
ldr r0, _037FF0F0 ; =_03807978
|
|
mov r1, r4
|
|
bl sub_037FD54C
|
|
ldr r7, _037FF0E8 ; =_03807958
|
|
mov r4, #1
|
|
add r6, sp, #0xc
|
|
mov r8, #0
|
|
mov r5, r4
|
|
_037FF098:
|
|
mov r0, r7
|
|
mov r1, r6
|
|
mov r2, r5
|
|
mov sb, r8
|
|
bl sub_037FC760
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #1
|
|
beq _037FF0C0
|
|
cmp r0, #2
|
|
b _037FF0C4
|
|
_037FF0C0:
|
|
mov sb, r4
|
|
_037FF0C4:
|
|
bl sub_037FF1C0
|
|
bl sub_03801F1C
|
|
mov r0, sb
|
|
bl sub_037FFF54
|
|
mov r0, sb
|
|
bl sub_037FF3AC
|
|
bl sub_03801C8C
|
|
bl sub_037FEEC4
|
|
b _037FF098
|
|
.align 2, 0
|
|
_037FF0E8: .word _03807958
|
|
_037FF0EC: .word _03807938
|
|
_037FF0F0: .word _03807978
|
|
_037FF0F4: .word sub_037FEFEC
|
|
_037FF0F8: .word 0x00000AA8
|
|
arm_func_end sub_037FF008
|
|
|
|
arm_func_start sub_037FF0FC
|
|
sub_037FF0FC: ; 0x037FF0FC
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r4, [sp, #0x10]
|
|
mov r5, r0, lsl #3
|
|
cmp r4, #0
|
|
movne r4, #0
|
|
moveq r4, #1
|
|
mov ip, r4, lsl #2
|
|
ldr lr, [sp, #0x14]
|
|
orr r1, ip, r1, lsl #3
|
|
orr ip, r1, lr, lsl #1
|
|
ldr r4, [sp, #0x18]
|
|
add r0, r0, #0x4000000
|
|
orr r4, r4, ip
|
|
strb r4, [r0, #0x508]
|
|
add r1, r5, #0x4000000
|
|
str r2, [r1, #0x510]
|
|
add r0, r1, #0x500
|
|
strh r3, [r0, #0x14]
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_037FF0FC
|
|
|
|
arm_func_start sub_037FF14C
|
|
sub_037FF14C: ; 0x037FF14C
|
|
add r0, r0, #0x4000000
|
|
ldrb r0, [r0, #0x508]
|
|
tst r0, #0x80
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
bx lr
|
|
arm_func_end sub_037FF14C
|
|
|
|
arm_func_start sub_037FF164
|
|
sub_037FF164: ; 0x037FF164
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _037FF1B8 ; =_03807E70
|
|
mov lr, #0
|
|
mov r0, #0x54
|
|
_037FF174:
|
|
mul r1, lr, r0
|
|
add ip, r3, r1
|
|
strb lr, [r3, r1]
|
|
ldrb r1, [ip, #3]
|
|
add lr, lr, #1
|
|
bic r2, r1, #0xf8
|
|
and r1, r2, #0xff
|
|
bic r1, r1, #1
|
|
strb r1, [ip, #3]
|
|
cmp lr, #0x10
|
|
blt _037FF174
|
|
ldr r0, _037FF1BC ; =_03807E48
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FF1B8: .word _03807E70
|
|
_037FF1BC: .word _03807E48
|
|
arm_func_end sub_037FF164
|
|
|
|
arm_func_start sub_037FF1C0
|
|
sub_037FF1C0: ; 0x037FF1C0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #0x18
|
|
ldr r7, _037FF3A8 ; =_03807E70
|
|
mov sb, #0
|
|
mov r4, #2
|
|
mov r5, #1
|
|
mov r6, sb
|
|
mov sl, #0x54
|
|
_037FF1E0:
|
|
mla r8, sb, sl, r7
|
|
ldrb r0, [r8, #3]
|
|
mov r0, r0, lsl #0x18
|
|
movs r0, r0, lsr #0x1b
|
|
beq _037FF340
|
|
tst r0, #2
|
|
beq _037FF208
|
|
mov r0, sb
|
|
mov r1, r6
|
|
bl sub_037FEA20
|
|
_037FF208:
|
|
ldrb r0, [r8, #3]
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, lsr #0x1b
|
|
tst r0, #1
|
|
beq _037FF2E4
|
|
ldrb r0, [r8, #1]
|
|
cmp r0, #0
|
|
beq _037FF23C
|
|
cmp r0, #1
|
|
beq _037FF294
|
|
cmp r0, #2
|
|
beq _037FF2C0
|
|
b _037FF340
|
|
_037FF23C:
|
|
ldrb r0, [r8, #0x39]
|
|
ldrh ip, [r8, #0x24]
|
|
cmp r0, #0
|
|
ldrh r0, [r8, #0x3e]
|
|
movne r3, r5
|
|
str r0, [sp]
|
|
ldr r2, [r8, #0x40]
|
|
and r1, ip, #0xff
|
|
str r2, [sp, #4]
|
|
str r1, [sp, #8]
|
|
mov r0, ip, asr #8
|
|
str r0, [sp, #0xc]
|
|
ldrh r1, [r8, #0x26]
|
|
moveq r3, r4
|
|
str r1, [sp, #0x10]
|
|
ldrb r1, [r8, #0x23]
|
|
mov r0, sb
|
|
str r1, [sp, #0x14]
|
|
ldr r1, [r8, #0x44]
|
|
ldrb r2, [r8, #0x38]
|
|
bl sub_037FE804
|
|
b _037FF340
|
|
_037FF294:
|
|
ldrh r3, [r8, #0x24]
|
|
ldrh r1, [r8, #0x26]
|
|
mov r0, sb
|
|
str r1, [sp]
|
|
ldrb r1, [r8, #0x23]
|
|
and r2, r3, #0xff
|
|
str r1, [sp, #4]
|
|
ldr r1, [r8, #0x44]
|
|
mov r3, r3, asr #8
|
|
bl sub_037FE8D0
|
|
b _037FF340
|
|
_037FF2C0:
|
|
ldrh r2, [r8, #0x24]
|
|
ldrb r1, [r8, #0x23]
|
|
mov r0, sb
|
|
str r1, [sp]
|
|
ldrh r3, [r8, #0x26]
|
|
and r1, r2, #0xff
|
|
mov r2, r2, asr #8
|
|
bl sub_037FE97C
|
|
b _037FF340
|
|
_037FF2E4:
|
|
tst r0, #4
|
|
beq _037FF2F8
|
|
ldrh r1, [r8, #0x26]
|
|
mov r0, sb
|
|
bl sub_037FEAC0
|
|
_037FF2F8:
|
|
ldrb r0, [r8, #3]
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, lsr #0x1b
|
|
tst r0, #8
|
|
beq _037FF320
|
|
ldrh r2, [r8, #0x24]
|
|
mov r0, sb
|
|
and r1, r2, #0xff
|
|
mov r2, r2, asr #8
|
|
bl sub_037FEA48
|
|
_037FF320:
|
|
ldrb r0, [r8, #3]
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, lsr #0x1b
|
|
tst r0, #0x10
|
|
beq _037FF340
|
|
ldrb r1, [r8, #0x23]
|
|
mov r0, sb
|
|
bl sub_037FEAD8
|
|
_037FF340:
|
|
add sb, sb, #1
|
|
cmp sb, #0x10
|
|
blt _037FF1E0
|
|
ldr r3, _037FF3A8 ; =_03807E70
|
|
mov r4, #0
|
|
mov r1, #0x54
|
|
_037FF358:
|
|
mla r5, r4, r1, r3
|
|
ldrb r0, [r5, #3]
|
|
mov r0, r0, lsl #0x18
|
|
movs r0, r0, lsr #0x1b
|
|
beq _037FF390
|
|
tst r0, #1
|
|
movne r0, r4, lsl #4
|
|
addne r0, r0, #0x4000000
|
|
ldrneb r2, [r0, #0x403]
|
|
orrne r2, r2, #0x80
|
|
strneb r2, [r0, #0x403]
|
|
ldrb r0, [r5, #3]
|
|
bic r0, r0, #0xf8
|
|
strb r0, [r5, #3]
|
|
_037FF390:
|
|
add r4, r4, #1
|
|
cmp r4, #0x10
|
|
blt _037FF358
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FF3A8: .word _03807E70
|
|
arm_func_end sub_037FF1C0
|
|
|
|
arm_func_start sub_037FF3AC
|
|
sub_037FF3AC: ; 0x037FF3AC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov fp, #0x8000
|
|
mov sl, r0
|
|
mov r5, #0
|
|
rsb fp, fp, #0
|
|
_037FF3C0:
|
|
ldr r0, _037FF750 ; =_03807E70
|
|
mov r1, #0x54
|
|
mla r4, r5, r1, r0
|
|
ldrb r2, [r4, #3]
|
|
mov r6, #0
|
|
mov r0, r2, lsl #0x1f
|
|
mov r7, r6
|
|
mov r8, r6
|
|
movs r0, r0, lsr #0x1f
|
|
beq _037FF73C
|
|
mov r0, r2, lsl #0x1e
|
|
movs r0, r0, lsr #0x1f
|
|
beq _037FF424
|
|
bic r1, r2, #0xf8
|
|
mov r0, r2, lsl #0x18
|
|
mov r0, r0, lsr #0x1b
|
|
orr r0, r0, #1
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1b
|
|
orr r0, r1, r0, lsr #24
|
|
strb r0, [r4, #3]
|
|
and r0, r0, #0xff
|
|
bic r0, r0, #2
|
|
strb r0, [r4, #3]
|
|
b _037FF474
|
|
_037FF424:
|
|
mov r0, r5
|
|
bl sub_037FEB50
|
|
cmp r0, #0
|
|
bne _037FF474
|
|
ldr r3, [r4, #0x48]
|
|
cmp r3, #0
|
|
moveq r0, r6
|
|
streqb r0, [r4, #0x22]
|
|
beq _037FF45C
|
|
ldr r2, [r4, #0x4c]
|
|
mov r0, r4
|
|
mov r1, #1
|
|
mov lr, pc
|
|
bx r3
|
|
_037FF45C:
|
|
mov r0, #0
|
|
strh r0, [r4, #0x24]
|
|
ldrb r0, [r4, #3]
|
|
bic r0, r0, #1
|
|
strb r0, [r4, #3]
|
|
b _037FF73C
|
|
_037FF474:
|
|
ldrb r0, [r4, #9]
|
|
ldrb r1, [r4, #8]
|
|
mov r2, r0, lsl #1
|
|
ldr r0, _037FF754 ; =_03806FDC
|
|
ldrsh r2, [r0, r2]
|
|
ldrb r0, [r4, #5]
|
|
add r6, r6, r2
|
|
sub r0, r1, r0
|
|
add r7, r7, r0, lsl #6
|
|
mov r0, r4
|
|
mov r1, sl
|
|
bl sub_037FF82C
|
|
ldrsh r3, [r4, #0x32]
|
|
add r6, r6, r0
|
|
cmp r3, #0
|
|
moveq r0, #0
|
|
beq _037FF4FC
|
|
ldr r0, [r4, #0x14]
|
|
ldr r2, [r4, #0x18]
|
|
cmp r0, r2
|
|
movge r0, #0
|
|
bge _037FF4FC
|
|
sub r0, r2, r0
|
|
smull r0, r1, r3, r0
|
|
mov r3, r2, asr #0x1f
|
|
bl sub_038069D0
|
|
cmp sl, #0
|
|
beq _037FF4FC
|
|
ldrb r1, [r4, #3]
|
|
mov r1, r1, lsl #0x1d
|
|
movs r1, r1, lsr #0x1f
|
|
ldrne r1, [r4, #0x14]
|
|
addne r1, r1, #1
|
|
strne r1, [r4, #0x14]
|
|
_037FF4FC:
|
|
ldrsh r1, [r4, #0xc]
|
|
add r2, r7, r0
|
|
ldrsh r0, [r4, #6]
|
|
add r1, r6, r1
|
|
add r6, r1, r0
|
|
ldrsh r1, [r4, #0xe]
|
|
add r0, r4, #0x28
|
|
add r7, r2, r1
|
|
bl sub_037FFE14
|
|
mov r1, r0, asr #0x1f
|
|
cmp r1, #0
|
|
mov sb, r0
|
|
cmpeq r0, #0
|
|
beq _037FF590
|
|
ldrb r2, [r4, #0x28]
|
|
cmp r2, #0
|
|
beq _037FF57C
|
|
cmp r2, #1
|
|
beq _037FF55C
|
|
cmp r2, #2
|
|
moveq r1, r1, lsl #6
|
|
orreq r1, r1, r0, lsr #26
|
|
moveq sb, r0, lsl #6
|
|
b _037FF588
|
|
_037FF55C:
|
|
mov r2, #0x3c
|
|
umull sb, r3, r0, r2
|
|
mov r2, #0
|
|
mla r3, r0, r2, r3
|
|
mov r0, #0x3c
|
|
mla r3, r1, r0, r3
|
|
mov r1, r3
|
|
b _037FF588
|
|
_037FF57C:
|
|
mov r1, r1, lsl #6
|
|
orr r1, r1, r0, lsr #26
|
|
mov sb, r0, lsl #6
|
|
_037FF588:
|
|
mov sb, sb, lsr #0xe
|
|
orr sb, sb, r1, lsl #18
|
|
_037FF590:
|
|
cmp sl, #0
|
|
beq _037FF5A0
|
|
add r0, r4, #0x28
|
|
bl sub_037FFDB4
|
|
_037FF5A0:
|
|
ldrb r0, [r4, #0x28]
|
|
cmp r0, #0
|
|
beq _037FF5CC
|
|
cmp r0, #1
|
|
beq _037FF5C0
|
|
cmp r0, #2
|
|
addeq r8, r8, sb
|
|
b _037FF5D0
|
|
_037FF5C0:
|
|
cmp r6, fp
|
|
addgt r6, r6, sb
|
|
b _037FF5D0
|
|
_037FF5CC:
|
|
add r7, r7, sb
|
|
_037FF5D0:
|
|
ldrsb r1, [r4, #0xa]
|
|
ldrb r0, [r4, #4]
|
|
add r8, r8, r1
|
|
cmp r0, #0x7f
|
|
mulne r0, r8, r0
|
|
addne r0, r0, #0x40
|
|
movne r8, r0, asr #7
|
|
ldrsb r1, [r4, #0xb]
|
|
ldrb r0, [r4, #2]
|
|
add r8, r8, r1
|
|
cmp r0, #3
|
|
bne _037FF65C
|
|
ldr r0, _037FF758 ; =0xFFFFFD2D
|
|
cmp r6, r0
|
|
bgt _037FF65C
|
|
ldrb r0, [r4, #3]
|
|
bic r0, r0, #0xf8
|
|
orr r0, r0, #0x10
|
|
strb r0, [r4, #3]
|
|
ldr r3, [r4, #0x48]
|
|
cmp r3, #0
|
|
moveq r0, #0
|
|
streqb r0, [r4, #0x22]
|
|
beq _037FF644
|
|
ldr r2, [r4, #0x4c]
|
|
mov r0, r4
|
|
mov r1, #1
|
|
mov lr, pc
|
|
bx r3
|
|
_037FF644:
|
|
mov r0, #0
|
|
strh r0, [r4, #0x24]
|
|
ldrb r0, [r4, #3]
|
|
bic r0, r0, #1
|
|
strb r0, [r4, #3]
|
|
b _037FF73C
|
|
_037FF65C:
|
|
mov r0, r6
|
|
bl sub_037FEDD8
|
|
mov r6, r0
|
|
ldrh r0, [r4, #0x3c]
|
|
mov r1, r7
|
|
bl sub_037FECAC
|
|
ldrb r1, [r4, #1]
|
|
cmp r1, #1
|
|
ldreq r1, _037FF75C ; =0x0000FFFC
|
|
andeq r0, r0, r1
|
|
moveq r0, r0, lsl #0x10
|
|
moveq r0, r0, lsr #0x10
|
|
adds r8, r8, #0x40
|
|
movmi r8, #0
|
|
bmi _037FF6A0
|
|
cmp r8, #0x7f
|
|
movgt r8, #0x7f
|
|
_037FF6A0:
|
|
ldrh r1, [r4, #0x24]
|
|
cmp r6, r1
|
|
beq _037FF6D4
|
|
strh r6, [r4, #0x24]
|
|
ldrb r1, [r4, #3]
|
|
bic r2, r1, #0xf8
|
|
mov r1, r1, lsl #0x18
|
|
mov r1, r1, lsr #0x1b
|
|
orr r1, r1, #8
|
|
and r1, r1, #0xff
|
|
mov r1, r1, lsl #0x1b
|
|
orr r1, r2, r1, lsr #24
|
|
strb r1, [r4, #3]
|
|
_037FF6D4:
|
|
ldrh r1, [r4, #0x26]
|
|
cmp r0, r1
|
|
beq _037FF708
|
|
strh r0, [r4, #0x26]
|
|
ldrb r0, [r4, #3]
|
|
bic r1, r0, #0xf8
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, lsr #0x1b
|
|
orr r0, r0, #4
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1b
|
|
orr r0, r1, r0, lsr #24
|
|
strb r0, [r4, #3]
|
|
_037FF708:
|
|
ldrb r0, [r4, #0x23]
|
|
cmp r8, r0
|
|
beq _037FF73C
|
|
strb r8, [r4, #0x23]
|
|
ldrb r0, [r4, #3]
|
|
bic r1, r0, #0xf8
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, lsr #0x1b
|
|
orr r0, r0, #0x10
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1b
|
|
orr r0, r1, r0, lsr #24
|
|
strb r0, [r4, #3]
|
|
_037FF73C:
|
|
add r5, r5, #1
|
|
cmp r5, #0x10
|
|
blt _037FF3C0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FF750: .word _03807E70
|
|
_037FF754: .word _03806FDC
|
|
_037FF758: .word 0xFFFFFD2D
|
|
_037FF75C: .word 0x0000FFFC
|
|
arm_func_end sub_037FF3AC
|
|
|
|
arm_func_start sub_037FF760
|
|
sub_037FF760: ; 0x037FF760
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
mov lr, r2
|
|
add ip, r4, #0x38
|
|
ldmia r1, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
mov r0, r4
|
|
mov r1, r3
|
|
str lr, [r4, #0x44]
|
|
bl sub_037FFEB8
|
|
mov r0, #1
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_037FF760
|
|
|
|
arm_func_start sub_037FF79C
|
|
sub_037FF79C: ; 0x037FF79C
|
|
stmdb sp!, {r3, lr}
|
|
ldrb r3, [r0]
|
|
cmp r3, #8
|
|
movlo r0, #0
|
|
blo _037FF7DC
|
|
cmp r3, #0xd
|
|
movhi r0, #0
|
|
bhi _037FF7DC
|
|
mov r3, #1
|
|
strb r3, [r0, #1]
|
|
str r1, [r0, #0x44]
|
|
ldr r3, _037FF7E4 ; =0x00001F46
|
|
mov r1, r2
|
|
strh r3, [r0, #0x3c]
|
|
bl sub_037FFEB8
|
|
mov r0, #1
|
|
_037FF7DC:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FF7E4: .word 0x00001F46
|
|
arm_func_end sub_037FF79C
|
|
|
|
arm_func_start sub_037FF7E8
|
|
sub_037FF7E8: ; 0x037FF7E8
|
|
stmdb sp!, {r3, lr}
|
|
ldrb r2, [r0]
|
|
cmp r2, #0xe
|
|
movlo r0, #0
|
|
blo _037FF820
|
|
cmp r2, #0xf
|
|
movhi r0, #0
|
|
bhi _037FF820
|
|
ldr r2, _037FF828 ; =0x00001F46
|
|
mov r3, #2
|
|
strb r3, [r0, #1]
|
|
strh r2, [r0, #0x3c]
|
|
bl sub_037FFEB8
|
|
mov r0, #1
|
|
_037FF820:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FF828: .word 0x00001F46
|
|
arm_func_end sub_037FF7E8
|
|
|
|
arm_func_start sub_037FF82C
|
|
sub_037FF82C: ; 0x037FF82C
|
|
cmp r1, #0
|
|
beq _037FF8C4
|
|
ldrb r1, [r0, #2]
|
|
cmp r1, #3
|
|
addls pc, pc, r1, lsl #2
|
|
b _037FF8C4
|
|
_037FF844: ; jump table
|
|
b _037FF854 ; case 0
|
|
b _037FF87C ; case 1
|
|
b _037FF8C4 ; case 2
|
|
b _037FF8B4 ; case 3
|
|
_037FF854:
|
|
ldr r2, [r0, #0x10]
|
|
ldrb r1, [r0, #0x1c]
|
|
rsb r2, r2, #0
|
|
mul r1, r2, r1
|
|
mov r1, r1, asr #8
|
|
rsbs r1, r1, #0
|
|
str r1, [r0, #0x10]
|
|
moveq r1, #1
|
|
streqb r1, [r0, #2]
|
|
b _037FF8C4
|
|
_037FF87C:
|
|
ldrb r2, [r0, #0x1d]
|
|
ldr r1, _037FF8D0 ; =_03806FDC
|
|
mov r2, r2, lsl #1
|
|
ldrsh r3, [r1, r2]
|
|
ldr r2, [r0, #0x10]
|
|
ldrh r1, [r0, #0x1e]
|
|
mov ip, r3, lsl #7
|
|
sub r1, r2, r1
|
|
str r1, [r0, #0x10]
|
|
cmp r1, r3, lsl #7
|
|
strle ip, [r0, #0x10]
|
|
movle r1, #2
|
|
strleb r1, [r0, #2]
|
|
b _037FF8C4
|
|
_037FF8B4:
|
|
ldr r2, [r0, #0x10]
|
|
ldrh r1, [r0, #0x20]
|
|
sub r1, r2, r1
|
|
str r1, [r0, #0x10]
|
|
_037FF8C4:
|
|
ldr r0, [r0, #0x10]
|
|
mov r0, r0, asr #7
|
|
bx lr
|
|
.align 2, 0
|
|
_037FF8D0: .word _03806FDC
|
|
arm_func_end sub_037FF82C
|
|
|
|
arm_func_start sub_037FF8D4
|
|
sub_037FF8D4: ; 0x037FF8D4
|
|
cmp r1, #0x6d
|
|
ldrge r2, _037FF8F0 ; =_038071F0
|
|
rsblt r1, r1, #0xff
|
|
rsbge r1, r1, #0x7f
|
|
ldrgeb r1, [r2, r1]
|
|
strb r1, [r0, #0x1c]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FF8F0: .word _038071F0
|
|
arm_func_end sub_037FF8D4
|
|
|
|
arm_func_start sub_037FF8F4
|
|
sub_037FF8F4: ; 0x037FF8F4
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, r1
|
|
bl sub_037FFE64
|
|
strh r0, [r4, #0x1e]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_037FF8F4
|
|
|
|
arm_func_start sub_037FF910
|
|
sub_037FF910: ; 0x037FF910
|
|
strb r1, [r0, #0x1d]
|
|
bx lr
|
|
arm_func_end sub_037FF910
|
|
|
|
arm_func_start sub_037FF918
|
|
sub_037FF918: ; 0x037FF918
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, r1
|
|
bl sub_037FFE64
|
|
strh r0, [r4, #0x20]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_037FF918
|
|
|
|
arm_func_start sub_037FF934
|
|
sub_037FF934: ; 0x037FF934
|
|
mov r1, #3
|
|
strb r1, [r0, #2]
|
|
bx lr
|
|
arm_func_end sub_037FF934
|
|
|
|
arm_func_start sub_037FF940
|
|
sub_037FF940: ; 0x037FF940
|
|
ldrb r0, [r0, #3]
|
|
mov r0, r0, lsl #0x1f
|
|
mov r0, r0, lsr #0x1f
|
|
bx lr
|
|
arm_func_end sub_037FF940
|
|
|
|
arm_func_start sub_037FF950
|
|
sub_037FF950: ; 0x037FF950
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
ldr r4, _037FFB08 ; =_03807E48
|
|
mov r6, r1
|
|
ldr r1, [r4, #4]
|
|
mov r5, r3
|
|
mvn r1, r1
|
|
cmp r2, #0
|
|
and r0, r0, r1
|
|
ldreq r1, [r4]
|
|
mov r4, #0
|
|
mvneq r1, r1
|
|
andeq r0, r0, r1
|
|
ldr r3, _037FFB0C ; =_038071DC
|
|
ldr r8, _037FFB10 ; =_038071E0
|
|
mov sb, r4
|
|
mvn r1, #0
|
|
mov fp, #1
|
|
_037FF994:
|
|
ldrb ip, [r8, sb]
|
|
tst r0, fp, lsl ip
|
|
beq _037FFA14
|
|
ldr r2, _037FFB14 ; =_03807E70
|
|
mov r7, #0x54
|
|
mla sl, ip, r7, r2
|
|
cmp r4, #0
|
|
moveq r4, sl
|
|
beq _037FFA14
|
|
ldrb r7, [r4, #0x22]
|
|
ldrb r2, [sl, #0x22]
|
|
cmp r2, r7
|
|
bhi _037FFA14
|
|
bne _037FFA10
|
|
ldrh r2, [r4, #0x24]
|
|
ldrh r7, [sl, #0x24]
|
|
mov ip, r2, lsl #0x18
|
|
mov ip, ip, lsr #0x14
|
|
ldrb r2, [r3, r2, asr #8]
|
|
mov lr, r7, lsl #0x18
|
|
mov r2, ip, asr r2
|
|
mov ip, lr, lsr #0x14
|
|
ldrb r7, [r3, r7, asr #8]
|
|
cmp r2, ip, asr r7
|
|
beq _037FFA04
|
|
movlt r2, fp
|
|
movge r2, r1
|
|
b _037FFA08
|
|
_037FFA04:
|
|
mov r2, #0
|
|
_037FFA08:
|
|
cmp r2, #0
|
|
bge _037FFA14
|
|
_037FFA10:
|
|
mov r4, sl
|
|
_037FFA14:
|
|
add sb, sb, #1
|
|
cmp sb, #0x10
|
|
blt _037FF994
|
|
cmp r4, #0
|
|
moveq r0, #0
|
|
beq _037FFB00
|
|
ldrb r0, [r4, #0x22]
|
|
cmp r6, r0
|
|
movlt r0, #0
|
|
blt _037FFB00
|
|
ldr r3, [r4, #0x48]
|
|
cmp r3, #0
|
|
beq _037FFA5C
|
|
ldr r2, [r4, #0x4c]
|
|
mov r0, r4
|
|
mov r1, #0
|
|
mov lr, pc
|
|
bx r3
|
|
_037FFA5C:
|
|
ldrb r0, [r4, #3]
|
|
mov r7, #0
|
|
bic r0, r0, #0xf8
|
|
orr r1, r0, #0x10
|
|
and r0, r1, #0xff
|
|
bic r0, r0, #1
|
|
strb r0, [r4, #3]
|
|
str r7, [r4, #0x50]
|
|
ldr r0, [sp, #0x28]
|
|
str r5, [r4, #0x48]
|
|
str r0, [r4, #0x4c]
|
|
str r7, [r4, #0x34]
|
|
strb r6, [r4, #0x22]
|
|
mov r3, #0x7f
|
|
strh r3, [r4, #0x24]
|
|
ldrb r1, [r4, #3]
|
|
mov r0, #0x3c
|
|
bic r2, r1, #2
|
|
and r1, r2, #0xff
|
|
orr r1, r1, #4
|
|
strb r1, [r4, #3]
|
|
strb r0, [r4, #8]
|
|
strb r0, [r4, #5]
|
|
strb r3, [r4, #9]
|
|
strb r7, [r4, #0xa]
|
|
strh r7, [r4, #0xc]
|
|
strh r7, [r4, #6]
|
|
strh r7, [r4, #0xe]
|
|
strb r7, [r4, #0xb]
|
|
strb r3, [r4, #4]
|
|
strh r7, [r4, #0x32]
|
|
str r7, [r4, #0x18]
|
|
str r7, [r4, #0x14]
|
|
ldr r1, _037FFB18 ; =0x0000FFFF
|
|
strb r7, [r4, #0x1c]
|
|
strh r1, [r4, #0x1e]
|
|
strb r3, [r4, #0x1d]
|
|
add r0, r4, #0x28
|
|
strh r1, [r4, #0x20]
|
|
bl sub_037FFD90
|
|
mov r0, r4
|
|
_037FFB00:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FFB08: .word _03807E48
|
|
_037FFB0C: .word _038071DC
|
|
_037FFB10: .word _038071E0
|
|
_037FFB14: .word _03807E70
|
|
_037FFB18: .word 0x0000FFFF
|
|
arm_func_end sub_037FF950
|
|
|
|
arm_func_start sub_037FFB1C
|
|
sub_037FFB1C: ; 0x037FFB1C
|
|
cmp r0, #0
|
|
movne r1, #0
|
|
strne r1, [r0, #0x48]
|
|
strne r1, [r0, #0x4c]
|
|
bx lr
|
|
arm_func_end sub_037FFB1C
|
|
|
|
arm_func_start sub_037FFB30
|
|
sub_037FFB30: ; 0x037FFB30
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sb, #0
|
|
ldr r7, _037FFBD8 ; =_03807E70
|
|
ldr r4, _037FFBDC ; =_03807E48
|
|
mov sl, r0
|
|
mov r5, sb
|
|
mov r6, #1
|
|
mov fp, #0x54
|
|
b _037FFBC0
|
|
_037FFB54:
|
|
tst sl, #1
|
|
beq _037FFBB8
|
|
ldr r0, [r4, #4]
|
|
mla r8, sb, fp, r7
|
|
tst r0, r6, lsl sb
|
|
bne _037FFBB8
|
|
ldr r3, [r8, #0x48]
|
|
cmp r3, #0
|
|
beq _037FFB8C
|
|
ldr r2, [r8, #0x4c]
|
|
mov r0, r8
|
|
mov r1, #0
|
|
mov lr, pc
|
|
bx r3
|
|
_037FFB8C:
|
|
mov r0, sb
|
|
mov r1, #0
|
|
bl sub_037FEA20
|
|
strb r5, [r8, #0x22]
|
|
mov r0, r8
|
|
bl sub_037FFB1C
|
|
ldrb r0, [r8, #3]
|
|
bic r1, r0, #0xf8
|
|
and r0, r1, #0xff
|
|
bic r0, r0, #1
|
|
strb r0, [r8, #3]
|
|
_037FFBB8:
|
|
add sb, sb, #1
|
|
mov sl, sl, lsr #1
|
|
_037FFBC0:
|
|
cmp sb, #0x10
|
|
bge _037FFBD0
|
|
cmp sl, #0
|
|
bne _037FFB54
|
|
_037FFBD0:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FFBD8: .word _03807E70
|
|
_037FFBDC: .word _03807E48
|
|
arm_func_end sub_037FFB30
|
|
|
|
arm_func_start sub_037FFBE0
|
|
sub_037FFBE0: ; 0x037FFBE0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sl, r0
|
|
mov r8, #0
|
|
ldr r5, _037FFCB8 ; =_03807E70
|
|
mov sb, r1
|
|
mov r7, sl
|
|
mov fp, r8
|
|
mov r4, #1
|
|
b _037FFC7C
|
|
_037FFC04:
|
|
tst r7, #1
|
|
beq _037FFC74
|
|
ldr r0, _037FFCBC ; =_03807E48
|
|
ldr r1, [r0, #4]
|
|
mov r0, #0x54
|
|
mla r6, r8, r0, r5
|
|
tst r1, r4, lsl r8
|
|
bne _037FFC74
|
|
ldr r3, [r6, #0x48]
|
|
cmp r3, #0
|
|
beq _037FFC44
|
|
ldr r2, [r6, #0x4c]
|
|
mov r0, r6
|
|
mov r1, #0
|
|
mov lr, pc
|
|
bx r3
|
|
_037FFC44:
|
|
mov r0, r8
|
|
mov r1, #0
|
|
bl sub_037FEA20
|
|
strb fp, [r6, #0x22]
|
|
mov r0, r6
|
|
bl sub_037FFB1C
|
|
ldrb r0, [r6, #3]
|
|
bic r0, r0, #0xf8
|
|
strb r0, [r6, #3]
|
|
and r0, r0, #0xff
|
|
bic r0, r0, #1
|
|
strb r0, [r6, #3]
|
|
_037FFC74:
|
|
add r8, r8, #1
|
|
mov r7, r7, lsr #1
|
|
_037FFC7C:
|
|
cmp r8, #0x10
|
|
bge _037FFC8C
|
|
cmp r7, #0
|
|
bne _037FFC04
|
|
_037FFC8C:
|
|
tst sb, #1
|
|
ldrne r0, _037FFCBC ; =_03807E48
|
|
ldrne r1, [r0]
|
|
orrne r1, r1, sl
|
|
strne r1, [r0]
|
|
ldreq r0, _037FFCBC ; =_03807E48
|
|
ldreq r1, [r0, #4]
|
|
orreq r1, r1, sl
|
|
streq r1, [r0, #4]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FFCB8: .word _03807E70
|
|
_037FFCBC: .word _03807E48
|
|
arm_func_end sub_037FFBE0
|
|
|
|
arm_func_start sub_037FFCC0
|
|
sub_037FFCC0: ; 0x037FFCC0
|
|
tst r1, #1
|
|
ldreq r1, _037FFCF4 ; =_03807E48
|
|
mvneq r0, r0
|
|
ldreq r2, [r1, #4]
|
|
andeq r0, r2, r0
|
|
streq r0, [r1, #4]
|
|
bxeq lr
|
|
ldr r1, _037FFCF4 ; =_03807E48
|
|
mvn r0, r0
|
|
ldr r2, [r1]
|
|
and r0, r2, r0
|
|
str r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FFCF4: .word _03807E48
|
|
arm_func_end sub_037FFCC0
|
|
|
|
arm_func_start sub_037FFCF8
|
|
sub_037FFCF8: ; 0x037FFCF8
|
|
tst r0, #1
|
|
ldrne r0, _037FFD10 ; =_03807E48
|
|
ldrne r0, [r0]
|
|
ldreq r0, _037FFD10 ; =_03807E48
|
|
ldreq r0, [r0, #4]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FFD10: .word _03807E48
|
|
arm_func_end sub_037FFCF8
|
|
|
|
arm_func_start sub_037FFD14
|
|
sub_037FFD14: ; 0x037FFD14
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r5, _037FFD8C ; =_03807E70
|
|
mov r6, #0
|
|
mov r8, r0
|
|
mov r7, r1
|
|
mov r4, r6
|
|
mov sb, #0x54
|
|
_037FFD30:
|
|
mla r2, r6, sb, r5
|
|
ldrb r1, [r2, #3]
|
|
mov r0, r1, lsl #0x1f
|
|
movs r0, r0, lsr #0x1f
|
|
beq _037FFD74
|
|
ldrb r0, [r2, #1]
|
|
cmp r0, #0
|
|
bne _037FFD74
|
|
ldr r0, [r2, #0x44]
|
|
cmp r8, r0
|
|
cmpls r0, r7
|
|
bhi _037FFD74
|
|
bic r3, r1, #2
|
|
mov r0, r6
|
|
mov r1, r4
|
|
strb r3, [r2, #3]
|
|
bl sub_037FEA20
|
|
_037FFD74:
|
|
add r0, r6, #1
|
|
and r6, r0, #0xff
|
|
cmp r6, #0x10
|
|
blo _037FFD30
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FFD8C: .word _03807E70
|
|
arm_func_end sub_037FFD14
|
|
|
|
arm_func_start sub_037FFD90
|
|
sub_037FFD90: ; 0x037FFD90
|
|
mov r2, #0
|
|
strb r2, [r0]
|
|
strb r2, [r0, #2]
|
|
mov r1, #1
|
|
strb r1, [r0, #3]
|
|
mov r1, #0x10
|
|
strb r1, [r0, #1]
|
|
strh r2, [r0, #4]
|
|
bx lr
|
|
arm_func_end sub_037FFD90
|
|
|
|
arm_func_start sub_037FFDB4
|
|
sub_037FFDB4: ; 0x037FFDB4
|
|
ldrh r2, [r0, #6]
|
|
ldrh r1, [r0, #4]
|
|
cmp r2, r1
|
|
addlo r1, r2, #1
|
|
strloh r1, [r0, #6]
|
|
bxlo lr
|
|
ldrh r1, [r0, #8]
|
|
ldrb r2, [r0, #1]
|
|
add r1, r1, r2, lsl #6
|
|
mov r3, r1, lsr #8
|
|
b _037FFDE4
|
|
_037FFDE0:
|
|
sub r3, r3, #0x80
|
|
_037FFDE4:
|
|
cmp r3, #0x80
|
|
bhs _037FFDE0
|
|
ldrh r1, [r0, #8]
|
|
add r1, r1, r2, lsl #6
|
|
strh r1, [r0, #8]
|
|
ldrh r1, [r0, #8]
|
|
and r1, r1, #0xff
|
|
strh r1, [r0, #8]
|
|
ldrh r1, [r0, #8]
|
|
orr r1, r1, r3, lsl #8
|
|
strh r1, [r0, #8]
|
|
bx lr
|
|
arm_func_end sub_037FFDB4
|
|
|
|
arm_func_start sub_037FFE14
|
|
sub_037FFE14: ; 0x037FFE14
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldrb r0, [r4, #2]
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
beq _037FFE5C
|
|
ldrh r1, [r4, #6]
|
|
ldrh r0, [r4, #4]
|
|
cmp r1, r0
|
|
movlo r0, #0
|
|
blo _037FFE5C
|
|
ldrh r0, [r4, #8]
|
|
mov r0, r0, lsr #8
|
|
bl sub_037FEE58
|
|
ldrb r1, [r4, #2]
|
|
ldrb r2, [r4, #3]
|
|
mul r0, r1, r0
|
|
mul r0, r2, r0
|
|
_037FFE5C:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_037FFE14
|
|
|
|
arm_func_start sub_037FFE64
|
|
sub_037FFE64: ; 0x037FFE64
|
|
stmdb sp!, {r3, lr}
|
|
cmp r0, #0x7f
|
|
ldreq r0, _037FFEB4 ; =0x0000FFFF
|
|
beq _037FFEAC
|
|
cmp r0, #0x7e
|
|
moveq r0, #0x3c00
|
|
beq _037FFEAC
|
|
cmp r0, #0x32
|
|
movlt r0, r0, lsl #1
|
|
addlt r0, r0, #1
|
|
movlt r0, r0, lsl #0x10
|
|
movlt r0, r0, lsr #0x10
|
|
blt _037FFEAC
|
|
rsb r1, r0, #0x7e
|
|
mov r0, #0x1e00
|
|
bl _s32_div_f
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
_037FFEAC:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FFEB4: .word 0x0000FFFF
|
|
arm_func_end sub_037FFE64
|
|
|
|
arm_func_start sub_037FFEB8
|
|
sub_037FFEB8: ; 0x037FFEB8
|
|
ldr r3, _037FFEEC ; =0xFFFE9680
|
|
mov r2, #0
|
|
str r3, [r0, #0x10]
|
|
strb r2, [r0, #2]
|
|
str r1, [r0, #0x34]
|
|
strh r2, [r0, #0x30]
|
|
strh r2, [r0, #0x2e]
|
|
ldrb r1, [r0, #3]
|
|
orr r2, r1, #2
|
|
bic r1, r2, #1
|
|
orr r1, r1, #1
|
|
strb r1, [r0, #3]
|
|
bx lr
|
|
.align 2, 0
|
|
_037FFEEC: .word 0xFFFE9680
|
|
arm_func_end sub_037FFEB8
|
|
|
|
arm_func_start sub_037FFEF0
|
|
sub_037FFEF0: ; 0x037FFEF0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _037FFF4C ; =_038083B0
|
|
mov lr, #0
|
|
mov r0, #0x24
|
|
_037FFF00:
|
|
mul r2, lr, r0
|
|
ldrb r1, [r3, r2]
|
|
add ip, r3, r2
|
|
bic r1, r1, #1
|
|
strb r1, [r3, r2]
|
|
strb lr, [ip, #1]
|
|
add lr, lr, #1
|
|
cmp lr, #0x10
|
|
blt _037FFF00
|
|
ldr r1, _037FFF50 ; =_038085F0
|
|
mov r2, #0
|
|
_037FFF2C:
|
|
ldrb r0, [r1, r2, lsl #6]
|
|
bic r0, r0, #1
|
|
strb r0, [r1, r2, lsl #6]
|
|
add r2, r2, #1
|
|
cmp r2, #0x20
|
|
blt _037FFF2C
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_037FFF4C: .word _038083B0
|
|
_037FFF50: .word _038085F0
|
|
arm_func_end sub_037FFEF0
|
|
|
|
arm_func_start sub_037FFF54
|
|
sub_037FFF54: ; 0x037FFF54
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r6, #0
|
|
mov sb, r0
|
|
mov r5, r6
|
|
_037FFF64:
|
|
mov r0, #0x24
|
|
mul r0, r5, r0
|
|
ldr r2, _038000AC ; =_038083B0
|
|
ldrb r1, [r2, r0]
|
|
add r4, r2, r0
|
|
mov r0, r1, lsl #0x1f
|
|
movs r0, r0, lsr #0x1f
|
|
beq _03800088
|
|
mov r0, r1, lsl #0x1e
|
|
movs r0, r0, lsr #0x1f
|
|
beq _03800074
|
|
cmp sb, #0
|
|
beq _03800040
|
|
mov r0, r1, lsl #0x1d
|
|
movs r0, r0, lsr #0x1f
|
|
bne _03800040
|
|
mov r8, #0
|
|
b _037FFFBC
|
|
_037FFFAC:
|
|
ldrh r0, [r4, #0x1c]
|
|
add r8, r8, #1
|
|
sub r0, r0, #0xf0
|
|
strh r0, [r4, #0x1c]
|
|
_037FFFBC:
|
|
ldrh r0, [r4, #0x1c]
|
|
cmp r0, #0xf0
|
|
bhs _037FFFAC
|
|
mov r7, #0
|
|
mov sl, #1
|
|
b _037FFFF8
|
|
_037FFFD4:
|
|
mov r0, r4
|
|
mov r1, sl
|
|
bl sub_03800CF0
|
|
cmp r0, #0
|
|
beq _037FFFF4
|
|
mov r0, r4
|
|
bl sub_03800B00
|
|
b _03800000
|
|
_037FFFF4:
|
|
add r7, r7, #1
|
|
_037FFFF8:
|
|
cmp r7, r8
|
|
blt _037FFFD4
|
|
_03800000:
|
|
ldr r0, _038000B0 ; =_03807E6C
|
|
ldr r2, [r0]
|
|
cmp r2, #0
|
|
beq _03800028
|
|
ldrb r1, [r4, #1]
|
|
mov r0, #0x24
|
|
mla r2, r1, r0, r2
|
|
ldr r0, [r2, #0x40]
|
|
add r0, r0, r7
|
|
str r0, [r2, #0x40]
|
|
_03800028:
|
|
ldrh r2, [r4, #0x18]
|
|
ldrh r1, [r4, #0x1a]
|
|
ldrh r0, [r4, #0x1c]
|
|
mul r1, r2, r1
|
|
add r0, r0, r1, asr #8
|
|
strh r0, [r4, #0x1c]
|
|
_03800040:
|
|
mov r8, #0
|
|
mov r7, #1
|
|
_03800048:
|
|
mov r0, r4
|
|
mov r1, r8
|
|
bl sub_03800A7C
|
|
cmp r0, #0
|
|
beq _03800068
|
|
mov r1, r4
|
|
mov r2, r7
|
|
bl sub_03800B98
|
|
_03800068:
|
|
add r8, r8, #1
|
|
cmp r8, #0x10
|
|
blt _03800048
|
|
_03800074:
|
|
ldrb r0, [r4]
|
|
mov r0, r0, lsl #0x1f
|
|
movs r0, r0, lsr #0x1f
|
|
movne r0, #1
|
|
orrne r6, r6, r0, lsl r5
|
|
_03800088:
|
|
add r5, r5, #1
|
|
cmp r5, #0x10
|
|
blt _037FFF64
|
|
ldr r0, _038000B0 ; =_03807E6C
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
strne r6, [r0, #4]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038000AC: .word _038083B0
|
|
_038000B0: .word _03807E6C
|
|
arm_func_end sub_037FFF54
|
|
|
|
arm_func_start sub_038000B4
|
|
sub_038000B4: ; 0x038000B4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
mov sb, r0
|
|
mov r0, #0x24
|
|
mul r5, sb, r0
|
|
ldr r6, _03800284 ; =_038083B0
|
|
mov r8, r1
|
|
ldrb r0, [r6, r5]
|
|
mov r7, r2
|
|
mov r0, r0, lsl #0x1f
|
|
mov r4, r3
|
|
add r5, r6, r5
|
|
movs r0, r0, lsr #0x1f
|
|
beq _038000F0
|
|
mov r0, r5
|
|
bl sub_03800B00
|
|
_038000F0:
|
|
ldrb r1, [r5]
|
|
mov r0, #0x78
|
|
bic r1, r1, #4
|
|
strb r1, [r5]
|
|
str r4, [r5, #0x20]
|
|
strh r0, [r5, #0x18]
|
|
mov r0, #0x100
|
|
strh r0, [r5, #0x1a]
|
|
mov r0, #0xf0
|
|
strh r0, [r5, #0x1c]
|
|
mov r0, #0x7f
|
|
strb r0, [r5, #5]
|
|
mov r2, #0
|
|
strh r2, [r5, #6]
|
|
mov r0, #0x40
|
|
strb r0, [r5, #4]
|
|
mov r1, #0xff
|
|
_03800134:
|
|
add r0, r5, r2
|
|
add r2, r2, #1
|
|
strb r1, [r0, #8]
|
|
cmp r2, #0x10
|
|
blt _03800134
|
|
ldr r1, _03800288 ; =_03807E6C
|
|
ldr r3, [r1]
|
|
cmp r3, #0
|
|
beq _03800194
|
|
ldrb r2, [r5, #1]
|
|
mov r0, #0x24
|
|
mla r0, r2, r0, r3
|
|
mov r6, #0
|
|
str r6, [r0, #0x40]
|
|
mvn r4, #0
|
|
mov r0, #0x24
|
|
_03800174:
|
|
ldr r2, [r1]
|
|
ldrb r3, [r5, #1]
|
|
mla r2, r3, r0, r2
|
|
add r2, r2, r6, lsl #1
|
|
add r6, r6, #1
|
|
strh r4, [r2, #0x20]
|
|
cmp r6, #0x10
|
|
blt _03800174
|
|
_03800194:
|
|
bl sub_03801884
|
|
movs r4, r0
|
|
bmi _0380027C
|
|
ldr r0, _0380028C ; =_038085F0
|
|
add r6, r0, r4, lsl #6
|
|
mov r0, r6
|
|
bl sub_038008F0
|
|
str r8, [r6, #0x24]
|
|
add r0, r8, r7
|
|
str r0, [r6, #0x28]
|
|
strb r4, [r5, #8]
|
|
ldr r0, [r6, #0x28]
|
|
bl sub_03800784
|
|
mov r0, r6
|
|
bl sub_03800290
|
|
cmp r0, #0xfe
|
|
ldrne r0, [r6, #0x28]
|
|
subne r0, r0, #1
|
|
strne r0, [r6, #0x28]
|
|
bne _03800248
|
|
mov r0, r6
|
|
bl sub_03800290
|
|
mov r4, r0
|
|
mov r0, r6
|
|
bl sub_03800290
|
|
orr r0, r4, r0, lsl #8
|
|
mov r0, r0, lsl #0x10
|
|
ldr r4, _0380028C ; =_038085F0
|
|
mov r8, r0, lsr #0x11
|
|
mov r7, #1
|
|
b _03800240
|
|
_03800210:
|
|
tst r8, #1
|
|
beq _03800234
|
|
bl sub_03801884
|
|
movs r6, r0
|
|
bmi _03800248
|
|
add r0, r4, r6, lsl #6
|
|
bl sub_038008F0
|
|
add r0, r5, r7
|
|
strb r6, [r0, #8]
|
|
_03800234:
|
|
mov r0, r8, lsl #0xf
|
|
add r7, r7, #1
|
|
mov r8, r0, lsr #0x10
|
|
_03800240:
|
|
cmp r8, #0
|
|
bne _03800210
|
|
_03800248:
|
|
ldrb r1, [r5]
|
|
ldr r0, _03800288 ; =_03807E6C
|
|
bic r1, r1, #1
|
|
ldr r2, [r0]
|
|
orr r1, r1, #1
|
|
and r0, r1, #0xff
|
|
bic r0, r0, #2
|
|
strb r0, [r5]
|
|
cmp r2, #0
|
|
ldrne r1, [r2, #4]
|
|
movne r0, #1
|
|
orrne r0, r1, r0, lsl sb
|
|
strne r0, [r2, #4]
|
|
_0380027C:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03800284: .word _038083B0
|
|
_03800288: .word _03807E6C
|
|
_0380028C: .word _038085F0
|
|
arm_func_end sub_038000B4
|
|
|
|
arm_func_start sub_03800290
|
|
sub_03800290: ; 0x03800290
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _038002E8 ; =_03807E50
|
|
mov r5, r0
|
|
ldr r4, [r5, #0x28]
|
|
ldr r0, [r1, #4]
|
|
cmp r4, r0
|
|
blo _038002B8
|
|
ldr r0, [r1, #8]
|
|
cmp r4, r0
|
|
blo _038002C0
|
|
_038002B8:
|
|
mov r0, r4
|
|
bl sub_03800784
|
|
_038002C0:
|
|
ldr r0, _038002E8 ; =_03807E50
|
|
ldr r1, [r5, #0x28]
|
|
ldr r2, [r0, #4]
|
|
ldr r0, _038002EC ; =_03807E5C
|
|
sub r2, r4, r2
|
|
ldrb r0, [r0, r2]
|
|
add r1, r1, #1
|
|
str r1, [r5, #0x28]
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038002E8: .word _03807E50
|
|
_038002EC: .word _03807E5C
|
|
arm_func_end sub_03800290
|
|
|
|
arm_func_start sub_038002F0
|
|
sub_038002F0: ; 0x038002F0
|
|
mov r1, #0x24
|
|
mul r1, r0, r1
|
|
ldr r2, _0380030C ; =_038083B0
|
|
ldrb r0, [r2, r1]
|
|
orr r0, r0, #2
|
|
strb r0, [r2, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0380030C: .word _038083B0
|
|
arm_func_end sub_038002F0
|
|
|
|
arm_func_start sub_03800310
|
|
sub_03800310: ; 0x03800310
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl sub_038000B4
|
|
mov r0, #0x24
|
|
mul r1, r4, r0
|
|
ldr r2, _0380033C ; =_038083B0
|
|
ldrb r0, [r2, r1]
|
|
orr r0, r0, #2
|
|
strb r0, [r2, r1]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0380033C: .word _038083B0
|
|
arm_func_end sub_03800310
|
|
|
|
arm_func_start sub_03800340
|
|
sub_03800340: ; 0x03800340
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, #0x24
|
|
mul r1, r4, r0
|
|
ldr r2, _03800394 ; =_038083B0
|
|
ldrb r0, [r2, r1]
|
|
mov r0, r0, lsl #0x1f
|
|
movs r0, r0, lsr #0x1f
|
|
beq _0380038C
|
|
add r0, r2, r1
|
|
bl sub_03800B00
|
|
ldr r0, _03800398 ; =_03807E6C
|
|
ldr r2, [r0]
|
|
cmp r2, #0
|
|
movne r0, #1
|
|
ldrne r1, [r2, #4]
|
|
mvnne r0, r0, lsl r4
|
|
andne r0, r1, r0
|
|
strne r0, [r2, #4]
|
|
_0380038C:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03800394: .word _038083B0
|
|
_03800398: .word _03807E6C
|
|
arm_func_end sub_03800340
|
|
|
|
arm_func_start sub_0380039C
|
|
sub_0380039C: ; 0x0380039C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r2, #0x24
|
|
mul r4, r0, r2
|
|
ldr r5, _03800410 ; =_038083B0
|
|
and r0, r1, #0xff
|
|
ldrb r2, [r5, r4]
|
|
mov r0, r0, lsl #0x1f
|
|
bic r2, r2, #4
|
|
orr r0, r2, r0, lsr #29
|
|
strb r0, [r5, r4]
|
|
cmp r1, #0
|
|
beq _03800408
|
|
mov r8, #0
|
|
mov r6, #0x7f
|
|
_038003D4:
|
|
mov r1, r8
|
|
add r0, r5, r4
|
|
bl sub_03800A7C
|
|
movs r7, r0
|
|
beq _038003FC
|
|
mov r2, r6
|
|
add r1, r5, r4
|
|
bl sub_038009E0
|
|
mov r0, r7
|
|
bl sub_03800A48
|
|
_038003FC:
|
|
add r8, r8, #1
|
|
cmp r8, #0x10
|
|
blt _038003D4
|
|
_03800408:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03800410: .word _038083B0
|
|
arm_func_end sub_0380039C
|
|
|
|
arm_func_start sub_03800414
|
|
sub_03800414: ; 0x03800414
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r3, _038004D8 ; =_038083B0
|
|
mov r2, #0x24
|
|
mla r6, r0, r2, r3
|
|
mov r8, r1
|
|
mov r7, #0
|
|
mov r4, #0x7f
|
|
_03800430:
|
|
mov r0, r6
|
|
mov r1, r7
|
|
bl sub_03800A7C
|
|
movs r5, r0
|
|
beq _03800458
|
|
mov r1, r6
|
|
mov r2, r4
|
|
bl sub_038009E0
|
|
mov r0, r5
|
|
bl sub_03800A48
|
|
_03800458:
|
|
add r7, r7, #1
|
|
cmp r7, #0x10
|
|
blt _03800430
|
|
bl sub_037FEFB4
|
|
mov r4, #0
|
|
mov r5, r4
|
|
b _03800498
|
|
_03800474:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl sub_03800CF0
|
|
cmp r0, #0
|
|
beq _03800494
|
|
mov r0, r6
|
|
bl sub_03800B00
|
|
b _038004A0
|
|
_03800494:
|
|
add r4, r4, #1
|
|
_03800498:
|
|
cmp r4, r8
|
|
blo _03800474
|
|
_038004A0:
|
|
bl sub_037FEF64
|
|
ldr r0, _038004DC ; =_03807E6C
|
|
ldr r3, [r0]
|
|
cmp r3, #0
|
|
beq _038004D0
|
|
ldrb r1, [r6, #1]
|
|
mov r0, #0x24
|
|
mul r2, r1, r0
|
|
add r1, r3, #0x40
|
|
ldr r0, [r1, r2]
|
|
add r0, r0, r4
|
|
str r0, [r1, r2]
|
|
_038004D0:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038004D8: .word _038083B0
|
|
_038004DC: .word _03807E6C
|
|
arm_func_end sub_03800414
|
|
|
|
arm_func_start sub_038004E0
|
|
sub_038004E0: ; 0x038004E0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r3, #0x24
|
|
mul r4, r0, r3
|
|
ldr r5, _03800548 ; =_038083B0
|
|
mov r8, r1
|
|
mov r7, r2
|
|
mov r6, #0
|
|
b _03800530
|
|
_03800500:
|
|
tst r8, #1
|
|
beq _03800528
|
|
mov r1, r6
|
|
add r0, r5, r4
|
|
bl sub_03800A7C
|
|
cmp r0, #0
|
|
beq _03800528
|
|
mov r2, r7
|
|
add r1, r5, r4
|
|
bl sub_038018C8
|
|
_03800528:
|
|
add r6, r6, #1
|
|
mov r8, r8, lsr #1
|
|
_03800530:
|
|
cmp r6, #0x10
|
|
bge _03800540
|
|
cmp r8, #0
|
|
bne _03800500
|
|
_03800540:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03800548: .word _038083B0
|
|
arm_func_end sub_038004E0
|
|
|
|
arm_func_start sub_0380054C
|
|
sub_0380054C: ; 0x0380054C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r3, #0x24
|
|
mul r4, r0, r3
|
|
mov r0, r2, lsl #0x10
|
|
ldr r5, _038005B8 ; =_038083B0
|
|
mov r7, r1
|
|
mov r6, #0
|
|
mov r8, r0, lsr #0x10
|
|
b _038005A0
|
|
_03800570:
|
|
tst r7, #1
|
|
beq _03800598
|
|
mov r1, r6
|
|
add r0, r5, r4
|
|
bl sub_03800A7C
|
|
cmp r0, #0
|
|
strneh r8, [r0, #0x1e]
|
|
ldrneb r1, [r0]
|
|
orrne r1, r1, #0x80
|
|
strneb r1, [r0]
|
|
_03800598:
|
|
add r6, r6, #1
|
|
mov r7, r7, lsr #1
|
|
_038005A0:
|
|
cmp r6, #0x10
|
|
bge _038005B0
|
|
cmp r7, #0
|
|
bne _03800570
|
|
_038005B0:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038005B8: .word _038083B0
|
|
arm_func_end sub_0380054C
|
|
|
|
arm_func_start sub_038005BC
|
|
sub_038005BC: ; 0x038005BC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
ldr r6, _03800644 ; =_038083B0
|
|
mov r7, #0
|
|
mov sl, r0
|
|
mov sb, r1
|
|
mov fp, r7
|
|
mov r4, #0x24
|
|
_038005D8:
|
|
mul r5, r7, r4
|
|
ldrb r0, [r6, r5]
|
|
mov r0, r0, lsl #0x1f
|
|
movs r0, r0, lsr #0x1f
|
|
beq _03800630
|
|
mov r8, fp
|
|
b _03800628
|
|
_038005F4:
|
|
mov r1, r8
|
|
add r0, r6, r5
|
|
bl sub_03800A7C
|
|
cmp r0, #0
|
|
beq _03800624
|
|
ldr r0, [r0, #0x28]
|
|
cmp sl, r0
|
|
cmpls r0, sb
|
|
bhi _03800624
|
|
add r0, r6, r5
|
|
bl sub_03800B00
|
|
b _03800630
|
|
_03800624:
|
|
add r8, r8, #1
|
|
_03800628:
|
|
cmp r8, #0x10
|
|
blt _038005F4
|
|
_03800630:
|
|
add r7, r7, #1
|
|
cmp r7, #0x10
|
|
blt _038005D8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03800644: .word _038083B0
|
|
arm_func_end sub_038005BC
|
|
|
|
arm_func_start sub_03800648
|
|
sub_03800648: ; 0x03800648
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r4, _038006A0 ; =_038083B0
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r5, #0
|
|
mov r8, #0x24
|
|
_03800660:
|
|
mul r0, r5, r8
|
|
ldrb r1, [r4, r0]
|
|
add r0, r4, r0
|
|
mov r1, r1, lsl #0x1f
|
|
movs r1, r1, lsr #0x1f
|
|
beq _0380068C
|
|
ldr r1, [r0, #0x20]
|
|
cmp r7, r1
|
|
cmpls r1, r6
|
|
bhi _0380068C
|
|
bl sub_03800B00
|
|
_0380068C:
|
|
add r5, r5, #1
|
|
cmp r5, #0x10
|
|
blt _03800660
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038006A0: .word _038083B0
|
|
arm_func_end sub_03800648
|
|
|
|
arm_func_start sub_038006A4
|
|
sub_038006A4: ; 0x038006A4
|
|
stmdb sp!, {r3, lr}
|
|
ldr lr, _038006E4 ; =_038083B0
|
|
mov ip, #0x24
|
|
mla ip, r0, ip, lr
|
|
cmp r3, #1
|
|
beq _038006D0
|
|
cmp r3, #2
|
|
beq _038006D8
|
|
cmp r3, #4
|
|
streq r2, [ip, r1]
|
|
b _038006DC
|
|
_038006D0:
|
|
strb r2, [ip, r1]
|
|
b _038006DC
|
|
_038006D8:
|
|
strh r2, [ip, r1]
|
|
_038006DC:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038006E4: .word _038083B0
|
|
arm_func_end sub_038006A4
|
|
|
|
arm_func_start sub_038006E8
|
|
sub_038006E8: ; 0x038006E8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov r4, #0x24
|
|
mul r5, r0, r4
|
|
mov r8, r3
|
|
mov r0, r8, lsl #0x10
|
|
ldr r7, [sp, #0x28]
|
|
mov sl, r1
|
|
mov sb, r2
|
|
mov r6, #0
|
|
mov fp, r0, lsr #0x10
|
|
and r4, r8, #0xff
|
|
b _03800768
|
|
_03800718:
|
|
tst sl, #1
|
|
beq _03800760
|
|
ldr r0, _03800780 ; =_038083B0
|
|
mov r1, r6
|
|
add r0, r0, r5
|
|
bl sub_03800A7C
|
|
cmp r0, #0
|
|
beq _03800760
|
|
cmp r7, #1
|
|
beq _03800754
|
|
cmp r7, #2
|
|
beq _0380075C
|
|
cmp r7, #4
|
|
streq r8, [r0, sb]
|
|
b _03800760
|
|
_03800754:
|
|
strb r4, [r0, sb]
|
|
b _03800760
|
|
_0380075C:
|
|
strh fp, [r0, sb]
|
|
_03800760:
|
|
add r6, r6, #1
|
|
mov sl, sl, lsr #1
|
|
_03800768:
|
|
cmp r6, #0x10
|
|
bge _03800778
|
|
cmp sl, #0
|
|
bne _03800718
|
|
_03800778:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03800780: .word _038083B0
|
|
arm_func_end sub_038006E8
|
|
|
|
arm_func_start sub_03800784
|
|
sub_03800784: ; 0x03800784
|
|
ldr r1, _038007BC ; =_03807E50
|
|
bic r2, r0, #3
|
|
str r2, [r1, #4]
|
|
add r0, r2, #0x10
|
|
str r0, [r1, #8]
|
|
ldr r0, [r2]
|
|
str r0, [r1, #0xc]
|
|
ldr r0, [r2, #4]
|
|
str r0, [r1, #0x10]
|
|
ldr r0, [r2, #8]
|
|
str r0, [r1, #0x14]
|
|
ldr r0, [r2, #0xc]
|
|
str r0, [r1, #0x18]
|
|
bx lr
|
|
.align 2, 0
|
|
_038007BC: .word _03807E50
|
|
arm_func_end sub_03800784
|
|
|
|
arm_func_start sub_038007C0
|
|
sub_038007C0: ; 0x038007C0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl sub_03800290
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl sub_03800290
|
|
orr r4, r4, r0, lsl #8
|
|
mov r0, r5
|
|
bl sub_03800290
|
|
orr r0, r4, r0, lsl #16
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_038007C0
|
|
|
|
arm_func_start sub_038007F0
|
|
sub_038007F0: ; 0x038007F0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
mov r6, r1
|
|
cmp r2, #4
|
|
addls pc, pc, r2, lsl #2
|
|
b _038008E4
|
|
_03800808: ; jump table
|
|
b _0380081C ; case 0
|
|
b _03800828 ; case 1
|
|
b _03800848 ; case 2
|
|
b _03800884 ; case 3
|
|
b _03800868 ; case 4
|
|
_0380081C:
|
|
bl sub_03800290
|
|
mov r5, r0
|
|
b _038008E4
|
|
_03800828:
|
|
bl sub_03800290
|
|
mov r5, r0
|
|
mov r0, r4
|
|
bl sub_03800290
|
|
orr r0, r5, r0, lsl #8
|
|
mov r0, r0, lsl #0x10
|
|
mov r5, r0, lsr #0x10
|
|
b _038008E4
|
|
_03800848:
|
|
mov r5, #0
|
|
_0380084C:
|
|
mov r0, r4
|
|
bl sub_03800290
|
|
and r1, r0, #0x7f
|
|
tst r0, #0x80
|
|
orr r5, r1, r5, lsl #7
|
|
bne _0380084C
|
|
b _038008E4
|
|
_03800868:
|
|
bl sub_03800290
|
|
mov r1, r0
|
|
mov r0, r6
|
|
bl sub_03801840
|
|
cmp r0, #0
|
|
ldrnesh r5, [r0]
|
|
b _038008E4
|
|
_03800884:
|
|
bl sub_03800290
|
|
mov r5, r0
|
|
mov r0, r4
|
|
bl sub_03800290
|
|
orr r0, r5, r0, lsl #8
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r0, lsr #0x10
|
|
mov r0, r4
|
|
mov r5, r1, lsl #0x10
|
|
bl sub_03800290
|
|
mov r6, r0
|
|
mov r0, r4
|
|
bl sub_03800290
|
|
orr r0, r6, r0, lsl #8
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
bl sub_037FEEC4
|
|
mov r1, r4, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
sub r1, r1, r5, asr #16
|
|
add r1, r1, #1
|
|
mul r1, r0, r1
|
|
mov r0, r1, asr #0x10
|
|
add r5, r0, r5, asr #16
|
|
_038008E4:
|
|
mov r0, r5
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
arm_func_end sub_038007F0
|
|
|
|
arm_func_start sub_038008F0
|
|
sub_038008F0: ; 0x038008F0
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, #0
|
|
str r0, [r4, #0x24]
|
|
str r0, [r4, #0x28]
|
|
ldrb r1, [r4]
|
|
mov r2, #0xff
|
|
orr r1, r1, #2
|
|
bic ip, r1, #4
|
|
strb r1, [r4]
|
|
and r1, ip, #0xff
|
|
bic r3, r1, #8
|
|
strb ip, [r4]
|
|
and r1, r3, #0xff
|
|
bic ip, r1, #0x10
|
|
strb r3, [r4]
|
|
and r1, ip, #0xff
|
|
bic r3, r1, #0x20
|
|
and r1, r3, #0xff
|
|
orr r1, r1, #0x40
|
|
strb ip, [r4]
|
|
bic r1, r1, #0x80
|
|
strb r1, [r4]
|
|
strb r0, [r4, #0x3b]
|
|
strh r0, [r4, #2]
|
|
mov r1, #0x40
|
|
strb r1, [r4, #0x12]
|
|
mov r1, #0x7f
|
|
strb r1, [r4, #4]
|
|
strb r1, [r4, #5]
|
|
strh r0, [r4, #0xa]
|
|
strb r0, [r4, #8]
|
|
strb r0, [r4, #9]
|
|
strb r0, [r4, #6]
|
|
strh r0, [r4, #0xc]
|
|
strb r2, [r4, #0xe]
|
|
strb r2, [r4, #0xf]
|
|
strb r2, [r4, #0x10]
|
|
strb r2, [r4, #0x11]
|
|
strb r1, [r4, #1]
|
|
mov r1, #2
|
|
strb r1, [r4, #7]
|
|
mov r1, #0x3c
|
|
strb r1, [r4, #0x14]
|
|
strb r0, [r4, #0x15]
|
|
strh r0, [r4, #0x16]
|
|
strb r0, [r4, #0x13]
|
|
add r0, r2, #0xff00
|
|
strh r0, [r4, #0x1e]
|
|
add r0, r4, #0x18
|
|
bl sub_037FFD90
|
|
mov r0, #0
|
|
str r0, [r4, #0x20]
|
|
str r0, [r4, #0x3c]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_038008F0
|
|
|
|
arm_func_start sub_038009D0
|
|
sub_038009D0: ; 0x038009D0
|
|
str r1, [r0, #0x24]
|
|
add r1, r1, r2
|
|
str r1, [r0, #0x28]
|
|
bx lr
|
|
arm_func_end sub_038009D0
|
|
|
|
arm_func_start sub_038009E0
|
|
sub_038009E0: ; 0x038009E0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r2
|
|
mov r4, r0
|
|
mov r2, #0
|
|
bl sub_03800B98
|
|
ldr r5, [r4, #0x3c]
|
|
and r6, r7, #0xff
|
|
mov r4, #1
|
|
b _03800A38
|
|
_03800A04:
|
|
mov r0, r5
|
|
bl sub_037FF940
|
|
cmp r0, #0
|
|
beq _03800A34
|
|
cmp r7, #0
|
|
blt _03800A28
|
|
mov r0, r5
|
|
mov r1, r6
|
|
bl sub_037FF918
|
|
_03800A28:
|
|
mov r0, r5
|
|
strb r4, [r5, #0x22]
|
|
bl sub_037FF934
|
|
_03800A34:
|
|
ldr r5, [r5, #0x50]
|
|
_03800A38:
|
|
cmp r5, #0
|
|
bne _03800A04
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
arm_func_end sub_038009E0
|
|
|
|
arm_func_start sub_03800A48
|
|
sub_03800A48: ; 0x03800A48
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
ldr r4, [r5, #0x3c]
|
|
b _03800A64
|
|
_03800A58:
|
|
mov r0, r4
|
|
bl sub_037FFB1C
|
|
ldr r4, [r4, #0x50]
|
|
_03800A64:
|
|
cmp r4, #0
|
|
bne _03800A58
|
|
mov r0, #0
|
|
str r0, [r5, #0x3c]
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_03800A48
|
|
|
|
arm_func_start sub_03800A7C
|
|
sub_03800A7C: ; 0x03800A7C
|
|
cmp r1, #0xf
|
|
movgt r0, #0
|
|
bxgt lr
|
|
add r0, r0, r1
|
|
ldrb r1, [r0, #8]
|
|
cmp r1, #0xff
|
|
moveq r0, #0
|
|
ldrne r0, _03800AA4 ; =_038085F0
|
|
addne r0, r0, r1, lsl #6
|
|
bx lr
|
|
.align 2, 0
|
|
_03800AA4: .word _038085F0
|
|
arm_func_end sub_03800A7C
|
|
|
|
arm_func_start sub_03800AA8
|
|
sub_03800AA8: ; 0x03800AA8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r4, r1
|
|
bl sub_03800A7C
|
|
movs r5, r0
|
|
beq _03800AF4
|
|
mov r1, r6
|
|
mvn r2, #0
|
|
bl sub_038009E0
|
|
mov r0, r5
|
|
bl sub_03800A48
|
|
add ip, r6, #8
|
|
ldrb r2, [ip, r4]
|
|
ldr r3, _03800AFC ; =_038085F0
|
|
mov r0, #0xff
|
|
ldrb r1, [r3, r2, lsl #6]
|
|
bic r1, r1, #1
|
|
strb r1, [r3, r2, lsl #6]
|
|
strb r0, [ip, r4]
|
|
_03800AF4:
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03800AFC: .word _038085F0
|
|
arm_func_end sub_03800AA8
|
|
|
|
arm_func_start sub_03800B00
|
|
sub_03800B00: ; 0x03800B00
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, #0
|
|
_03800B0C:
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_03800AA8
|
|
add r4, r4, #1
|
|
cmp r4, #0x10
|
|
blt _03800B0C
|
|
ldrb r0, [r5]
|
|
bic r0, r0, #1
|
|
strb r0, [r5]
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_03800B00
|
|
|
|
arm_func_start sub_03800B38
|
|
sub_03800B38: ; 0x03800B38
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r2
|
|
cmp r1, #1
|
|
bne _03800B58
|
|
mov r1, #0
|
|
strb r1, [r5, #0x22]
|
|
bl sub_037FFB1C
|
|
_03800B58:
|
|
ldr r1, [r4, #0x3c]
|
|
cmp r1, r5
|
|
ldreq r0, [r5, #0x50]
|
|
streq r0, [r4, #0x3c]
|
|
beq _03800B90
|
|
b _03800B84
|
|
_03800B70:
|
|
cmp r0, r5
|
|
ldreq r0, [r5, #0x50]
|
|
streq r0, [r1, #0x50]
|
|
beq _03800B90
|
|
mov r1, r0
|
|
_03800B84:
|
|
ldr r0, [r1, #0x50]
|
|
cmp r0, #0
|
|
bne _03800B70
|
|
_03800B90:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_03800B38
|
|
|
|
arm_func_start sub_03800B98
|
|
sub_03800B98: ; 0x03800B98
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sl, r0
|
|
ldrb r0, [sl, #7]
|
|
ldrb r6, [sl, #4]
|
|
ldrb r3, [sl, #5]
|
|
ldrb fp, [r1, #5]
|
|
mov r5, r0, lsl #6
|
|
mov r8, r3, lsl #1
|
|
ldrb r4, [sl, #1]
|
|
ldrsb r7, [sl, #6]
|
|
mov sb, r6, lsl #1
|
|
ldr r0, _03800CEC ; =_03806FDC
|
|
mul r6, r7, r5
|
|
mov r3, fp, lsl #1
|
|
ldrsh sb, [r0, sb]
|
|
ldrsh r7, [r0, r8]
|
|
ldrsh r0, [r0, r3]
|
|
add r8, sb, r7
|
|
ldrsb r3, [sl, #8]
|
|
cmp r4, #0x7f
|
|
mulne r4, r3, r4
|
|
addne r3, r4, #0x40
|
|
mov r4, #0x8000
|
|
ldrsh r5, [sl, #0xc]
|
|
mov sb, r2
|
|
add r2, r5, r6, asr #7
|
|
ldrsh r7, [sl, #0xa]
|
|
ldrsh r1, [r1, #6]
|
|
ldrsb r5, [sl, #9]
|
|
movne r3, r3, asr #7
|
|
add r0, r0, r8
|
|
rsb r4, r4, #0
|
|
cmp r0, r4
|
|
movlt r0, r4
|
|
mov r4, #0x8000
|
|
add r1, r7, r1
|
|
rsb r4, r4, #0
|
|
cmp r1, r4
|
|
movlt r1, r4
|
|
add r3, r3, r5
|
|
mvn r4, #0x7f
|
|
cmp r3, r4
|
|
movlt r3, r4
|
|
blt _03800C50
|
|
cmp r3, #0x7f
|
|
movgt r3, #0x7f
|
|
_03800C50:
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r2, lsl #0x10
|
|
mov r3, r3, lsl #0x18
|
|
mov r1, r1, lsl #0x10
|
|
ldr r8, [sl, #0x3c]
|
|
mov r6, r0, asr #0x10
|
|
mov r5, r2, asr #0x10
|
|
mov r4, r3, asr #0x18
|
|
mov r7, r1, asr #0x10
|
|
mov fp, #1
|
|
b _03800CDC
|
|
_03800C7C:
|
|
strh r7, [r8, #6]
|
|
ldrb r0, [r8, #2]
|
|
cmp r0, #3
|
|
beq _03800CD8
|
|
strh r6, [r8, #0xc]
|
|
strh r5, [r8, #0xe]
|
|
strb r4, [r8, #0xb]
|
|
ldrb r0, [sl, #1]
|
|
strb r0, [r8, #4]
|
|
ldrh r0, [sl, #0x18]
|
|
strh r0, [r8, #0x28]
|
|
ldrh r0, [sl, #0x1a]
|
|
strh r0, [r8, #0x2a]
|
|
ldrh r0, [sl, #0x1c]
|
|
strh r0, [r8, #0x2c]
|
|
ldr r0, [r8, #0x34]
|
|
cmp r0, #0
|
|
bne _03800CD8
|
|
cmp sb, #0
|
|
beq _03800CD8
|
|
mov r0, r8
|
|
strb fp, [r8, #0x22]
|
|
bl sub_037FF934
|
|
_03800CD8:
|
|
ldr r8, [r8, #0x50]
|
|
_03800CDC:
|
|
cmp r8, #0
|
|
bne _03800C7C
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03800CEC: .word _03806FDC
|
|
arm_func_end sub_03800B98
|
|
|
|
arm_func_start sub_03800CF0
|
|
sub_03800CF0: ; 0x03800CF0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x24
|
|
mov r2, #0
|
|
str r2, [sp, #0x10]
|
|
str r1, [sp, #8]
|
|
mov r7, r0
|
|
mov sl, r2
|
|
_03800D0C:
|
|
mov r0, r7
|
|
mov r1, sl
|
|
bl sub_03800A7C
|
|
movs r8, r0
|
|
ldrne r0, [r8, #0x28]
|
|
cmpne r0, #0
|
|
beq _0380180C
|
|
ldr r0, [r8, #0x3c]
|
|
b _03800D68
|
|
_03800D30:
|
|
ldr r1, [r0, #0x34]
|
|
cmp r1, #0
|
|
subgt r1, r1, #1
|
|
strgt r1, [r0, #0x34]
|
|
ldrb r1, [r0, #3]
|
|
mov r1, r1, lsl #0x1d
|
|
movs r1, r1, lsr #0x1f
|
|
bne _03800D64
|
|
ldr r2, [r0, #0x14]
|
|
ldr r1, [r0, #0x18]
|
|
cmp r2, r1
|
|
addlt r1, r2, #1
|
|
strlt r1, [r0, #0x14]
|
|
_03800D64:
|
|
ldr r0, [r0, #0x50]
|
|
_03800D68:
|
|
cmp r0, #0
|
|
bne _03800D30
|
|
ldrb r1, [r8]
|
|
mov r0, r1, lsl #0x1b
|
|
movs r0, r0, lsr #0x1f
|
|
beq _03800D98
|
|
ldr r0, [r8, #0x3c]
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
bne _038017F0
|
|
bic r0, r1, #0x10
|
|
strb r0, [r8]
|
|
_03800D98:
|
|
ldr r0, [r8, #0x20]
|
|
cmp r0, #0
|
|
subgt r0, r0, #1
|
|
strgt r0, [r8, #0x20]
|
|
cmpgt r0, #0
|
|
movgt r0, #0
|
|
bgt _038017F0
|
|
ldr r0, [r8, #0x28]
|
|
bl sub_03800784
|
|
ldr r0, _03801834 ; =0x0000FFFF
|
|
sub fp, r0, #0x10000
|
|
b _038017D0
|
|
_03800DC8:
|
|
mov r0, r8
|
|
mov sb, #0
|
|
mov r4, #1
|
|
bl sub_03800290
|
|
mov r6, r0
|
|
cmp r6, #0xa2
|
|
bne _03800DFC
|
|
mov r0, r8
|
|
bl sub_03800290
|
|
mov r6, r0
|
|
ldrb r0, [r8]
|
|
mov r0, r0, lsl #0x19
|
|
mov r4, r0, lsr #0x1f
|
|
_03800DFC:
|
|
cmp r6, #0xa0
|
|
bne _03800E18
|
|
mov r0, r8
|
|
bl sub_03800290
|
|
mov r6, r0
|
|
mov r5, #3
|
|
mov sb, #1
|
|
_03800E18:
|
|
cmp r6, #0xa1
|
|
bne _03800E34
|
|
mov r0, r8
|
|
bl sub_03800290
|
|
mov r6, r0
|
|
mov r5, #4
|
|
mov sb, #1
|
|
_03800E34:
|
|
tst r6, #0x80
|
|
bne _038010B8
|
|
mov r0, r8
|
|
bl sub_03800290
|
|
cmp sb, #0
|
|
str r0, [sp, #0xc]
|
|
movne r2, r5
|
|
moveq r2, #2
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl sub_038007F0
|
|
cmp r4, #0
|
|
mov r4, r0
|
|
ldrsb r0, [r8, #0x13]
|
|
add sb, r6, r0
|
|
beq _038017D0
|
|
cmp sb, #0
|
|
movlt sb, #0
|
|
blt _03800E88
|
|
cmp sb, #0x7f
|
|
movgt sb, #0x7f
|
|
_03800E88:
|
|
ldrb r1, [r8]
|
|
mov r0, r1, lsl #0x1d
|
|
movs r0, r0, lsr #0x1f
|
|
bne _0380108C
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
beq _0380108C
|
|
mov r0, r1, lsl #0x1c
|
|
mov r6, #0
|
|
movs r0, r0, lsr #0x1f
|
|
ldrne r6, [r8, #0x3c]
|
|
cmpne r6, #0
|
|
strneb sb, [r6, #8]
|
|
ldrne r0, [sp, #0xc]
|
|
strneb r0, [r6, #9]
|
|
cmp r6, #0
|
|
bne _03800FBC
|
|
ldr r0, [r7, #0x20]
|
|
ldrh r1, [r8, #2]
|
|
mov r2, sb
|
|
add r3, sp, #0x16
|
|
bl sub_03801948
|
|
cmp r0, #0
|
|
beq _0380108C
|
|
ldrb r0, [sp, #0x16]
|
|
cmp r0, #4
|
|
addls pc, pc, r0, lsl #2
|
|
b _0380108C
|
|
_03800EF8: ; jump table
|
|
b _0380108C ; case 0
|
|
b _03800F0C ; case 1
|
|
b _03800F14 ; case 2
|
|
b _03800F1C ; case 3
|
|
b _03800F0C ; case 4
|
|
_03800F0C:
|
|
ldr r1, _03801834 ; =0x0000FFFF
|
|
b _03800F20
|
|
_03800F14:
|
|
mov r1, #0x3f00
|
|
b _03800F20
|
|
_03800F1C:
|
|
mov r1, #0xc000
|
|
_03800F20:
|
|
ldrh r0, [r8, #0x1e]
|
|
ldr r3, _03801838 ; =sub_03800B38
|
|
str r8, [sp]
|
|
ldrb r2, [r8]
|
|
and r0, r1, r0
|
|
mov r2, r2, lsl #0x18
|
|
ldrb r6, [r7, #4]
|
|
ldrb r1, [r8, #0x12]
|
|
mov r2, r2, lsr #0x1f
|
|
add r1, r6, r1
|
|
bl sub_037FF950
|
|
movs r6, r0
|
|
beq _0380108C
|
|
ldrb r0, [r8]
|
|
mov r0, r0, lsl #0x1c
|
|
movs r0, r0, lsr #0x1f
|
|
movne r3, fp
|
|
bne _03800F74
|
|
cmp r4, #0
|
|
movgt r3, r4
|
|
movle r3, fp
|
|
_03800F74:
|
|
ldr r2, [sp, #0xc]
|
|
ldr r1, [r7, #0x20]
|
|
mov r0, r6
|
|
str r1, [sp]
|
|
add r1, sp, #0x16
|
|
str r1, [sp, #4]
|
|
mov r1, sb
|
|
bl sub_03801B08
|
|
cmp r0, #0
|
|
bne _03800FB0
|
|
mov r0, #0
|
|
strb r0, [r6, #0x22]
|
|
mov r0, r6
|
|
bl sub_037FFB1C
|
|
b _0380108C
|
|
_03800FB0:
|
|
ldr r0, [r8, #0x3c]
|
|
str r0, [r6, #0x50]
|
|
str r6, [r8, #0x3c]
|
|
_03800FBC:
|
|
ldrb r1, [r8, #0xe]
|
|
cmp r1, #0xff
|
|
beq _03800FD0
|
|
mov r0, r6
|
|
bl sub_037FF8D4
|
|
_03800FD0:
|
|
ldrb r1, [r8, #0xf]
|
|
cmp r1, #0xff
|
|
beq _03800FE4
|
|
mov r0, r6
|
|
bl sub_037FF8F4
|
|
_03800FE4:
|
|
ldrb r1, [r8, #0x10]
|
|
cmp r1, #0xff
|
|
beq _03800FF8
|
|
mov r0, r6
|
|
bl sub_037FF910
|
|
_03800FF8:
|
|
ldrb r1, [r8, #0x11]
|
|
cmp r1, #0xff
|
|
beq _0380100C
|
|
mov r0, r6
|
|
bl sub_037FF918
|
|
_0380100C:
|
|
ldrsh r0, [r8, #0x16]
|
|
strh r0, [r6, #0x32]
|
|
ldrb r0, [r8]
|
|
mov r0, r0, lsl #0x1a
|
|
movs r0, r0, lsr #0x1f
|
|
beq _0380103C
|
|
ldrsh r1, [r6, #0x32]
|
|
ldrb r0, [r8, #0x14]
|
|
sub r0, r0, sb
|
|
mov r0, r0, lsl #0x16
|
|
add r0, r1, r0, asr #16
|
|
strh r0, [r6, #0x32]
|
|
_0380103C:
|
|
ldrb r0, [r8, #0x15]
|
|
cmp r0, #0
|
|
bne _03801068
|
|
cmp r4, #0
|
|
movgt r0, r4
|
|
movle r0, fp
|
|
str r0, [r6, #0x18]
|
|
ldrb r0, [r6, #3]
|
|
bic r0, r0, #4
|
|
strb r0, [r6, #3]
|
|
b _03801084
|
|
_03801068:
|
|
mul r1, r0, r0
|
|
ldrsh r0, [r6, #0x32]
|
|
cmp r0, #0
|
|
rsblt r0, r0, #0
|
|
mul r0, r1, r0
|
|
mov r0, r0, asr #0xb
|
|
str r0, [r6, #0x18]
|
|
_03801084:
|
|
mov r0, #0
|
|
str r0, [r6, #0x14]
|
|
_0380108C:
|
|
strb sb, [r8, #0x14]
|
|
ldrb r0, [r8]
|
|
mov r0, r0, lsl #0x1e
|
|
movs r0, r0, lsr #0x1f
|
|
beq _038017D0
|
|
str r4, [r8, #0x20]
|
|
cmp r4, #0
|
|
ldreqb r0, [r8]
|
|
orreq r0, r0, #0x10
|
|
streqb r0, [r8]
|
|
b _038017D0
|
|
_038010B8:
|
|
and r0, r6, #0xf0
|
|
cmp r0, #0xc0
|
|
bgt _038010EC
|
|
bge _03801234
|
|
cmp r0, #0x90
|
|
bgt _038010E0
|
|
bge _03801158
|
|
cmp r0, #0x80
|
|
beq _03801110
|
|
b _038017D0
|
|
_038010E0:
|
|
cmp r0, #0xb0
|
|
beq _038014E4
|
|
b _038017D0
|
|
_038010EC:
|
|
cmp r0, #0xe0
|
|
bgt _03801104
|
|
bge _03801490
|
|
cmp r0, #0xd0
|
|
beq _03801234
|
|
b _038017D0
|
|
_03801104:
|
|
cmp r0, #0xf0
|
|
beq _0380172C
|
|
b _038017D0
|
|
_03801110:
|
|
cmp sb, #0
|
|
movne r2, r5
|
|
moveq r2, #2
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl sub_038007F0
|
|
cmp r4, #0
|
|
beq _038017D0
|
|
cmp r6, #0x80
|
|
beq _03801144
|
|
cmp r6, #0x81
|
|
beq _0380114C
|
|
b _038017D0
|
|
_03801144:
|
|
str r0, [r8, #0x20]
|
|
b _038017D0
|
|
_0380114C:
|
|
cmp r0, #0x10000
|
|
strlth r0, [r8, #2]
|
|
b _038017D0
|
|
_03801158:
|
|
cmp r6, #0x93
|
|
beq _03801174
|
|
cmp r6, #0x94
|
|
beq _038011D4
|
|
cmp r6, #0x95
|
|
beq _038011F0
|
|
b _038017D0
|
|
_03801174:
|
|
mov r0, r8
|
|
bl sub_03800290
|
|
mov r6, r0
|
|
mov r0, r8
|
|
bl sub_038007C0
|
|
cmp r4, #0
|
|
mov sb, r0
|
|
beq _038017D0
|
|
mov r1, r6
|
|
mov r0, r7
|
|
bl sub_03800A7C
|
|
movs r4, r0
|
|
cmpne r4, r8
|
|
beq _038017D0
|
|
mov r1, r7
|
|
mov r2, fp
|
|
bl sub_038009E0
|
|
mov r0, r4
|
|
bl sub_03800A48
|
|
mov r0, r4
|
|
mov r2, sb
|
|
ldr r1, [r8, #0x24]
|
|
bl sub_038009D0
|
|
b _038017D0
|
|
_038011D4:
|
|
mov r0, r8
|
|
bl sub_038007C0
|
|
cmp r4, #0
|
|
ldrne r1, [r8, #0x24]
|
|
addne r0, r1, r0
|
|
strne r0, [r8, #0x28]
|
|
b _038017D0
|
|
_038011F0:
|
|
mov r0, r8
|
|
bl sub_038007C0
|
|
cmp r4, #0
|
|
beq _038017D0
|
|
ldrb r1, [r8, #0x3b]
|
|
cmp r1, #3
|
|
bhs _038017D0
|
|
add r1, r8, r1, lsl #2
|
|
ldr r2, [r8, #0x28]
|
|
str r2, [r1, #0x2c]
|
|
ldrb r1, [r8, #0x3b]
|
|
add r1, r1, #1
|
|
strb r1, [r8, #0x3b]
|
|
ldr r1, [r8, #0x24]
|
|
add r0, r1, r0
|
|
str r0, [r8, #0x28]
|
|
b _038017D0
|
|
_03801234:
|
|
cmp sb, #0
|
|
movne r2, r5
|
|
moveq r2, #0
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl sub_038007F0
|
|
cmp r4, #0
|
|
strb r0, [sp, #0x14]
|
|
beq _038017D0
|
|
sub r1, r6, #0xc0
|
|
cmp r1, #0x17
|
|
addls pc, pc, r1, lsl #2
|
|
b _038017D0
|
|
_03801268: ; jump table
|
|
b _03801460 ; case 0
|
|
b _038012C8 ; case 1
|
|
b _038012E0 ; case 2
|
|
b _03801448 ; case 3
|
|
b _03801454 ; case 4
|
|
b _038012EC ; case 5
|
|
b _038012F8 ; case 6
|
|
b _03801304 ; case 7
|
|
b _038013C4 ; case 8
|
|
b _0380140C ; case 9
|
|
b _0380132C ; case 10
|
|
b _03801338 ; case 11
|
|
b _03801344 ; case 12
|
|
b _03801350 ; case 13
|
|
b _0380142C ; case 14
|
|
b _03801320 ; case 15
|
|
b _0380135C ; case 16
|
|
b _03801368 ; case 17
|
|
b _03801374 ; case 18
|
|
b _03801380 ; case 19
|
|
b _0380138C ; case 20
|
|
b _038012D4 ; case 21
|
|
b _03801470 ; case 22
|
|
b _038013F8 ; case 23
|
|
_038012C8:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #4]
|
|
b _038017D0
|
|
_038012D4:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #5]
|
|
b _038017D0
|
|
_038012E0:
|
|
and r0, r0, #0xff
|
|
strb r0, [r7, #5]
|
|
b _038017D0
|
|
_038012EC:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #7]
|
|
b _038017D0
|
|
_038012F8:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #0x12]
|
|
b _038017D0
|
|
_03801304:
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1f
|
|
ldrb r1, [r8]
|
|
bic r1, r1, #2
|
|
orr r0, r1, r0, lsr #30
|
|
strb r0, [r8]
|
|
b _038017D0
|
|
_03801320:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #0x15]
|
|
b _038017D0
|
|
_0380132C:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #0x1a]
|
|
b _038017D0
|
|
_03801338:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #0x19]
|
|
b _038017D0
|
|
_03801344:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #0x18]
|
|
b _038017D0
|
|
_03801350:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #0x1b]
|
|
b _038017D0
|
|
_0380135C:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #0xe]
|
|
b _038017D0
|
|
_03801368:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #0xf]
|
|
b _038017D0
|
|
_03801374:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #0x10]
|
|
b _038017D0
|
|
_03801380:
|
|
and r0, r0, #0xff
|
|
strb r0, [r8, #0x11]
|
|
b _038017D0
|
|
_0380138C:
|
|
ldrb r1, [r8, #0x3b]
|
|
cmp r1, #3
|
|
bhs _038017D0
|
|
add r2, r8, r1, lsl #2
|
|
and r1, r0, #0xff
|
|
ldr r0, [r8, #0x28]
|
|
str r0, [r2, #0x2c]
|
|
ldrb r0, [r8, #0x3b]
|
|
add r0, r8, r0
|
|
strb r1, [r0, #0x38]
|
|
ldrb r0, [r8, #0x3b]
|
|
add r0, r0, #1
|
|
strb r0, [r8, #0x3b]
|
|
b _038017D0
|
|
_038013C4:
|
|
and r0, r0, #0xff
|
|
mov r1, r0, lsl #0x1f
|
|
ldrb r2, [r8]
|
|
mov r0, r8
|
|
bic r2, r2, #8
|
|
orr r1, r2, r1, lsr #28
|
|
strb r1, [r8]
|
|
mov r1, r7
|
|
mov r2, fp
|
|
bl sub_038009E0
|
|
mov r0, r8
|
|
bl sub_03800A48
|
|
b _038017D0
|
|
_038013F8:
|
|
and r2, r0, #0xff
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl sub_038018C8
|
|
b _038017D0
|
|
_0380140C:
|
|
and r1, r0, #0xff
|
|
ldrsb r0, [r8, #0x13]
|
|
add r0, r1, r0
|
|
strb r0, [r8, #0x14]
|
|
ldrb r0, [r8]
|
|
orr r0, r0, #0x20
|
|
strb r0, [r8]
|
|
b _038017D0
|
|
_0380142C:
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1f
|
|
ldrb r1, [r8]
|
|
bic r1, r1, #0x20
|
|
orr r0, r1, r0, lsr #26
|
|
strb r0, [r8]
|
|
b _038017D0
|
|
_03801448:
|
|
ldrsb r0, [sp, #0x14]
|
|
strb r0, [r8, #0x13]
|
|
b _038017D0
|
|
_03801454:
|
|
ldrsb r0, [sp, #0x14]
|
|
strb r0, [r8, #6]
|
|
b _038017D0
|
|
_03801460:
|
|
and r0, r0, #0xff
|
|
sub r0, r0, #0x40
|
|
strb r0, [r8, #8]
|
|
b _038017D0
|
|
_03801470:
|
|
ldr r1, _0380183C ; =_03807E50
|
|
ldr r1, [r1]
|
|
cmp r1, #0
|
|
beq _038017D0
|
|
and r1, r0, #0xff
|
|
mov r0, r7
|
|
bl sub_03801840
|
|
b _038017D0
|
|
_03801490:
|
|
cmp sb, #0
|
|
movne r2, r5
|
|
moveq r2, #1
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl sub_038007F0
|
|
mov r0, r0, lsl #0x10
|
|
cmp r4, #0
|
|
mov r0, r0, asr #0x10
|
|
beq _038017D0
|
|
cmp r6, #0xe0
|
|
beq _038014DC
|
|
cmp r6, #0xe1
|
|
beq _038014D4
|
|
cmp r6, #0xe3
|
|
streqh r0, [r8, #0x16]
|
|
b _038017D0
|
|
_038014D4:
|
|
strh r0, [r7, #0x18]
|
|
b _038017D0
|
|
_038014DC:
|
|
strh r0, [r8, #0x1c]
|
|
b _038017D0
|
|
_038014E4:
|
|
mov r0, r8
|
|
bl sub_03800290
|
|
cmp sb, #0
|
|
movne r2, r5
|
|
mov sb, r0
|
|
moveq r2, #1
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl sub_038007F0
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, sb
|
|
mov sb, r0, asr #0x10
|
|
mov r0, r7
|
|
bl sub_03801840
|
|
cmp r4, #0
|
|
mov r4, r0
|
|
cmpne r4, #0
|
|
beq _038017D0
|
|
sub r0, r6, #0xb0
|
|
cmp r0, #0xd
|
|
addls pc, pc, r0, lsl #2
|
|
b _038017D0
|
|
_0380153C: ; jump table
|
|
b _03801574 ; case 0
|
|
b _0380157C ; case 1
|
|
b _0380158C ; case 2
|
|
b _0380159C ; case 3
|
|
b _038015AC ; case 4
|
|
b _038015C8 ; case 5
|
|
b _038015EC ; case 6
|
|
b _038017D0 ; case 7
|
|
b _03801624 ; case 8
|
|
b _03801650 ; case 9
|
|
b _0380167C ; case 10
|
|
b _038016A8 ; case 11
|
|
b _038016D4 ; case 12
|
|
b _03801700 ; case 13
|
|
_03801574:
|
|
strh sb, [r4]
|
|
b _038017D0
|
|
_0380157C:
|
|
ldrsh r0, [r4]
|
|
add r0, r0, sb
|
|
strh r0, [r4]
|
|
b _038017D0
|
|
_0380158C:
|
|
ldrsh r0, [r4]
|
|
sub r0, r0, sb
|
|
strh r0, [r4]
|
|
b _038017D0
|
|
_0380159C:
|
|
ldrsh r0, [r4]
|
|
mul r1, r0, sb
|
|
strh r1, [r4]
|
|
b _038017D0
|
|
_038015AC:
|
|
cmp sb, #0
|
|
beq _038017D0
|
|
mov r1, sb
|
|
ldrsh r0, [r4]
|
|
bl _s32_div_f
|
|
strh r0, [r4]
|
|
b _038017D0
|
|
_038015C8:
|
|
cmp sb, #0
|
|
ldrgesh r0, [r4]
|
|
movge r0, r0, lsl sb
|
|
strgeh r0, [r4]
|
|
ldrltsh r1, [r4]
|
|
rsblt r0, sb, #0
|
|
movlt r0, r1, asr r0
|
|
strlth r0, [r4]
|
|
b _038017D0
|
|
_038015EC:
|
|
cmp sb, #0
|
|
rsblt r0, sb, #0
|
|
movlt r0, r0, lsl #0x10
|
|
mov r6, #0
|
|
movlt sb, r0, asr #0x10
|
|
movlt r6, #1
|
|
bl sub_037FEEC4
|
|
add r1, sb, #1
|
|
mul r1, r0, r1
|
|
mov r0, r1, asr #0x10
|
|
cmp r6, #0
|
|
rsbne r0, r0, #0
|
|
strh r0, [r4]
|
|
b _038017D0
|
|
_03801624:
|
|
ldrsh r0, [r4]
|
|
ldrb r1, [r8]
|
|
cmp r0, sb
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1f
|
|
bic r1, r1, #0x40
|
|
orr r0, r1, r0, lsr #25
|
|
strb r0, [r8]
|
|
b _038017D0
|
|
_03801650:
|
|
ldrsh r0, [r4]
|
|
ldrb r1, [r8]
|
|
cmp r0, sb
|
|
movge r0, #1
|
|
movlt r0, #0
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1f
|
|
bic r1, r1, #0x40
|
|
orr r0, r1, r0, lsr #25
|
|
strb r0, [r8]
|
|
b _038017D0
|
|
_0380167C:
|
|
ldrsh r0, [r4]
|
|
ldrb r1, [r8]
|
|
cmp r0, sb
|
|
movgt r0, #1
|
|
movle r0, #0
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1f
|
|
bic r1, r1, #0x40
|
|
orr r0, r1, r0, lsr #25
|
|
strb r0, [r8]
|
|
b _038017D0
|
|
_038016A8:
|
|
ldrsh r0, [r4]
|
|
ldrb r1, [r8]
|
|
cmp r0, sb
|
|
movle r0, #1
|
|
movgt r0, #0
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1f
|
|
bic r1, r1, #0x40
|
|
orr r0, r1, r0, lsr #25
|
|
strb r0, [r8]
|
|
b _038017D0
|
|
_038016D4:
|
|
ldrsh r0, [r4]
|
|
ldrb r1, [r8]
|
|
cmp r0, sb
|
|
movlt r0, #1
|
|
movge r0, #0
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1f
|
|
bic r1, r1, #0x40
|
|
orr r0, r1, r0, lsr #25
|
|
strb r0, [r8]
|
|
b _038017D0
|
|
_03801700:
|
|
ldrsh r0, [r4]
|
|
ldrb r1, [r8]
|
|
cmp r0, sb
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
mov r0, r0, lsl #0x1f
|
|
bic r1, r1, #0x40
|
|
orr r0, r1, r0, lsr #25
|
|
strb r0, [r8]
|
|
b _038017D0
|
|
_0380172C:
|
|
cmp r4, #0
|
|
beq _038017D0
|
|
sub r0, r6, #0xfc
|
|
cmp r0, #3
|
|
addls pc, pc, r0, lsl #2
|
|
b _038017D0
|
|
_03801744: ; jump table
|
|
b _0380177C ; case 0
|
|
b _03801754 ; case 1
|
|
b _038017D0 ; case 2
|
|
b _038017C8 ; case 3
|
|
_03801754:
|
|
ldrb r0, [r8, #0x3b]
|
|
cmp r0, #0
|
|
beq _038017D0
|
|
sub r0, r0, #1
|
|
strb r0, [r8, #0x3b]
|
|
and r0, r0, #0xff
|
|
add r0, r8, r0, lsl #2
|
|
ldr r0, [r0, #0x2c]
|
|
str r0, [r8, #0x28]
|
|
b _038017D0
|
|
_0380177C:
|
|
ldrb r0, [r8, #0x3b]
|
|
cmp r0, #0
|
|
beq _038017D0
|
|
add r1, r8, r0
|
|
ldrb r0, [r1, #0x37]
|
|
cmp r0, #0
|
|
beq _038017B0
|
|
sub r0, r0, #1
|
|
ands r0, r0, #0xff
|
|
ldreqb r0, [r8, #0x3b]
|
|
subeq r0, r0, #1
|
|
streqb r0, [r8, #0x3b]
|
|
beq _038017D0
|
|
_038017B0:
|
|
strb r0, [r1, #0x37]
|
|
ldrb r0, [r8, #0x3b]
|
|
add r0, r8, r0, lsl #2
|
|
ldr r0, [r0, #0x28]
|
|
str r0, [r8, #0x28]
|
|
b _038017D0
|
|
_038017C8:
|
|
mvn r0, #0
|
|
b _038017F0
|
|
_038017D0:
|
|
ldr r0, [r8, #0x20]
|
|
cmp r0, #0
|
|
bne _038017EC
|
|
ldrb r0, [r8]
|
|
mov r0, r0, lsl #0x1b
|
|
movs r0, r0, lsr #0x1f
|
|
beq _03800DC8
|
|
_038017EC:
|
|
mov r0, #0
|
|
_038017F0:
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
streq r0, [sp, #0x10]
|
|
beq _0380180C
|
|
mov r0, r7
|
|
mov r1, sl
|
|
bl sub_03800AA8
|
|
_0380180C:
|
|
add sl, sl, #1
|
|
cmp sl, #0x10
|
|
blt _03800D0C
|
|
ldr r0, [sp, #0x10]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
add sp, sp, #0x24
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03801834: .word 0x0000FFFF
|
|
_03801838: .word sub_03800B38
|
|
_0380183C: .word _03807E50
|
|
arm_func_end sub_03800CF0
|
|
|
|
arm_func_start sub_03801840
|
|
sub_03801840: ; 0x03801840
|
|
ldr r2, _03801880 ; =_03807E6C
|
|
ldr r3, [r2]
|
|
cmp r3, #0
|
|
moveq r0, #0
|
|
bxeq lr
|
|
cmp r1, #0x10
|
|
addge r2, r3, #0x260
|
|
subge r0, r1, #0x10
|
|
addge r0, r2, r0, lsl #1
|
|
bxge lr
|
|
ldrb r2, [r0, #1]
|
|
add r3, r3, #0x20
|
|
mov r0, #0x24
|
|
mla r0, r2, r0, r3
|
|
add r0, r0, r1, lsl #1
|
|
bx lr
|
|
.align 2, 0
|
|
_03801880: .word _03807E6C
|
|
arm_func_end sub_03801840
|
|
|
|
arm_func_start sub_03801884
|
|
sub_03801884: ; 0x03801884
|
|
ldr ip, _038018C4 ; =_038085F0
|
|
mov r0, #0
|
|
b _038018B4
|
|
_03801890:
|
|
ldrb r1, [ip, r0, lsl #6]
|
|
mov r3, r0, lsl #6
|
|
mov r2, r1, lsl #0x1f
|
|
movs r2, r2, lsr #0x1f
|
|
biceq r1, r1, #1
|
|
orreq r1, r1, #1
|
|
streqb r1, [ip, r3]
|
|
bxeq lr
|
|
add r0, r0, #1
|
|
_038018B4:
|
|
cmp r0, #0x20
|
|
blt _03801890
|
|
mvn r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_038018C4: .word _038085F0
|
|
arm_func_end sub_03801884
|
|
|
|
arm_func_start sub_038018C8
|
|
sub_038018C8: ; 0x038018C8
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
cmp r2, #3
|
|
addls pc, pc, r2, lsl #2
|
|
b _03801940
|
|
_038018DC: ; jump table
|
|
b _038018EC ; case 0
|
|
b _038018FC ; case 1
|
|
b _0380190C ; case 2
|
|
b _03801924 ; case 3
|
|
_038018EC:
|
|
ldrb r0, [r4]
|
|
bic r0, r0, #4
|
|
strb r0, [r4]
|
|
b _03801940
|
|
_038018FC:
|
|
ldrb r0, [r4]
|
|
orr r0, r0, #4
|
|
strb r0, [r4]
|
|
b _03801940
|
|
_0380190C:
|
|
ldrb r3, [r4]
|
|
mvn r2, #0
|
|
orr r3, r3, #4
|
|
strb r3, [r4]
|
|
bl sub_038009E0
|
|
b _03801940
|
|
_03801924:
|
|
ldrb r3, [r4]
|
|
mov r2, #0x7f
|
|
orr r3, r3, #4
|
|
strb r3, [r4]
|
|
bl sub_038009E0
|
|
mov r0, r4
|
|
bl sub_03800A48
|
|
_03801940:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_038018C8
|
|
|
|
arm_func_start sub_03801948
|
|
sub_03801948: ; 0x03801948
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
movs r7, r1
|
|
mov r6, r0
|
|
mov r5, r2
|
|
mov r4, r3
|
|
movmi r0, #0
|
|
bmi _03801AC0
|
|
bl sub_037FEFE4
|
|
ldr r0, [r6, #0x38]
|
|
cmp r7, r0
|
|
blo _03801980
|
|
bl sub_037FEFE8
|
|
mov r0, #0
|
|
b _03801AC0
|
|
_03801980:
|
|
add r0, r6, r7, lsl #2
|
|
ldr r1, [r0, #0x3c]
|
|
and r0, r1, #0xff
|
|
strb r1, [r4]
|
|
cmp r0, #0x11
|
|
mov r1, r1, lsr #8
|
|
addls pc, pc, r0, lsl #2
|
|
b _03801AAC
|
|
_038019A0: ; jump table
|
|
b _03801AAC ; case 0
|
|
b _038019E8 ; case 1
|
|
b _038019E8 ; case 2
|
|
b _038019E8 ; case 3
|
|
b _038019E8 ; case 4
|
|
b _038019E8 ; case 5
|
|
b _03801AAC ; case 6
|
|
b _03801AAC ; case 7
|
|
b _03801AAC ; case 8
|
|
b _03801AAC ; case 9
|
|
b _03801AAC ; case 10
|
|
b _03801AAC ; case 11
|
|
b _03801AAC ; case 12
|
|
b _03801AAC ; case 13
|
|
b _03801AAC ; case 14
|
|
b _03801AAC ; case 15
|
|
b _03801A08 ; case 16
|
|
b _03801A58 ; case 17
|
|
_038019E8:
|
|
add r3, r6, r1
|
|
add r2, r4, #2
|
|
mov r1, #5
|
|
_038019F4:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _038019F4
|
|
b _03801AB8
|
|
_03801A08:
|
|
ldrb r0, [r6, r1]
|
|
add r2, r6, r1
|
|
ldrb r1, [r2, #1]
|
|
cmp r5, r0
|
|
blt _03801A24
|
|
cmp r5, r1
|
|
ble _03801A30
|
|
_03801A24:
|
|
bl sub_037FEFE8
|
|
mov r0, #0
|
|
b _03801AC0
|
|
_03801A30:
|
|
sub r1, r5, r0
|
|
mov r0, #0xc
|
|
mla r0, r1, r0, r2
|
|
add r2, r0, #2
|
|
mov r1, #6
|
|
_03801A44:
|
|
ldrh r0, [r2], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r4], #2
|
|
bne _03801A44
|
|
b _03801AB8
|
|
_03801A58:
|
|
add r2, r6, r1
|
|
mov r1, #0
|
|
b _03801A7C
|
|
_03801A64:
|
|
add r1, r1, #1
|
|
cmp r1, #8
|
|
blt _03801A7C
|
|
bl sub_037FEFE8
|
|
mov r0, #0
|
|
b _03801AC0
|
|
_03801A7C:
|
|
ldrb r0, [r2, r1]
|
|
cmp r5, r0
|
|
bgt _03801A64
|
|
mov r0, #0xc
|
|
mla r0, r1, r0, r2
|
|
add r2, r0, #8
|
|
mov r1, #6
|
|
_03801A98:
|
|
ldrh r0, [r2], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r4], #2
|
|
bne _03801A98
|
|
b _03801AB8
|
|
_03801AAC:
|
|
bl sub_037FEFE8
|
|
mov r0, #0
|
|
b _03801AC0
|
|
_03801AB8:
|
|
bl sub_037FEFE8
|
|
mov r0, #1
|
|
_03801AC0:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
arm_func_end sub_03801948
|
|
|
|
arm_func_start sub_03801AC8
|
|
sub_03801AC8: ; 0x03801AC8
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl sub_037FEFE4
|
|
add r0, r5, r4, lsl #2
|
|
ldr r4, [r0, #0x3c]
|
|
cmp r4, #0
|
|
beq _03801AF4
|
|
cmp r4, #0x2000000
|
|
addlo r4, r5, r4
|
|
b _03801AF8
|
|
_03801AF4:
|
|
mov r4, #0
|
|
_03801AF8:
|
|
bl sub_037FEFE8
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
arm_func_end sub_03801AC8
|
|
|
|
arm_func_start sub_03801B08
|
|
sub_03801B08: ; 0x03801B08
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r5, [sp, #0x24]
|
|
mov sb, r0
|
|
ldrb r4, [r5, #0xa]
|
|
ldrb r0, [r5]
|
|
cmp r4, #0xff
|
|
mov r6, r3
|
|
mov r8, r1
|
|
mov r7, r2
|
|
mvneq r6, #0
|
|
moveq r4, #0
|
|
cmp r0, #4
|
|
addls pc, pc, r0, lsl #2
|
|
b _03801BE8
|
|
_03801B40: ; jump table
|
|
b _03801BE8 ; case 0
|
|
b _03801B54 ; case 1
|
|
b _03801BC4 ; case 2
|
|
b _03801BD8 ; case 3
|
|
b _03801B54 ; case 4
|
|
_03801B54:
|
|
cmp r0, #1
|
|
bne _03801B98
|
|
ldr r2, [sp, #0x20]
|
|
ldrh r0, [r5, #4]
|
|
ldrh r1, [r5, #2]
|
|
add r0, r2, r0, lsl #3
|
|
ldr r0, [r0, #0x18]
|
|
cmp r0, #0
|
|
moveq r1, #0
|
|
beq _03801BA4
|
|
ldr r2, [r0, #0x38]
|
|
cmp r1, r2
|
|
movhs r1, #0
|
|
bhs _03801BA4
|
|
bl sub_03801AC8
|
|
mov r1, r0
|
|
b _03801BA4
|
|
_03801B98:
|
|
ldrh r1, [r5, #4]
|
|
ldrh r0, [r5, #2]
|
|
orr r1, r0, r1, lsl #16
|
|
_03801BA4:
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
beq _03801BEC
|
|
mov r0, sb
|
|
mov r3, r6
|
|
add r2, r1, #0xc
|
|
bl sub_037FF760
|
|
b _03801BEC
|
|
_03801BC4:
|
|
ldrh r1, [r5, #2]
|
|
mov r0, sb
|
|
mov r2, r6
|
|
bl sub_037FF79C
|
|
b _03801BEC
|
|
_03801BD8:
|
|
mov r0, sb
|
|
mov r1, r6
|
|
bl sub_037FF7E8
|
|
b _03801BEC
|
|
_03801BE8:
|
|
mov r0, #0
|
|
_03801BEC:
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
beq _03801C48
|
|
strb r8, [sb, #8]
|
|
ldrb r1, [r5, #6]
|
|
mov r0, sb
|
|
strb r1, [sb, #5]
|
|
strb r7, [sb, #9]
|
|
ldrb r1, [r5, #7]
|
|
bl sub_037FF8D4
|
|
ldrb r1, [r5, #8]
|
|
mov r0, sb
|
|
bl sub_037FF8F4
|
|
ldrb r1, [r5, #9]
|
|
mov r0, sb
|
|
bl sub_037FF910
|
|
mov r0, sb
|
|
mov r1, r4
|
|
bl sub_037FF918
|
|
ldrb r1, [r5, #0xb]
|
|
mov r0, #1
|
|
sub r1, r1, #0x40
|
|
strb r1, [sb, #0xa]
|
|
_03801C48:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
arm_func_end sub_03801B08
|
|
|
|
arm_func_start sub_03801C50
|
|
sub_03801C50: ; 0x03801C50
|
|
ldr ip, _03801C6C ; =_03807E6C
|
|
mov r3, #0x24
|
|
ldr ip, [ip]
|
|
mla r3, r0, r3, ip
|
|
add r0, r3, r1, lsl #1
|
|
strh r2, [r0, #0x20]
|
|
bx lr
|
|
.align 2, 0
|
|
_03801C6C: .word _03807E6C
|
|
arm_func_end sub_03801C50
|
|
|
|
arm_func_start sub_03801C70
|
|
sub_03801C70: ; 0x03801C70
|
|
ldr r2, _03801C88 ; =_03807E6C
|
|
ldr r2, [r2]
|
|
add r0, r2, r0, lsl #1
|
|
add r0, r0, #0x200
|
|
strh r1, [r0, #0x60]
|
|
bx lr
|
|
.align 2, 0
|
|
_03801C88: .word _03807E6C
|
|
arm_func_end sub_03801C70
|
|
|
|
arm_func_start sub_03801C8C
|
|
sub_03801C8C: ; 0x03801C8C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r0, _03801D20 ; =_03807E6C
|
|
mov r4, #0
|
|
ldr r0, [r0]
|
|
mov r5, r4
|
|
cmp r0, #0
|
|
beq _03801D18
|
|
mov r7, r4
|
|
mov r6, #1
|
|
_03801CB0:
|
|
mov r0, r7
|
|
bl sub_037FEB50
|
|
cmp r0, #0
|
|
orrne r0, r4, r6, lsl r7
|
|
movne r0, r0, lsl #0x10
|
|
add r7, r7, #1
|
|
movne r4, r0, lsr #0x10
|
|
cmp r7, #0x10
|
|
blt _03801CB0
|
|
mov r0, #0
|
|
bl sub_037FF14C
|
|
cmp r0, #0
|
|
orrne r0, r5, #1
|
|
movne r0, r0, lsl #0x10
|
|
movne r5, r0, lsr #0x10
|
|
mov r0, #1
|
|
bl sub_037FF14C
|
|
cmp r0, #0
|
|
orrne r0, r5, #2
|
|
movne r0, r0, lsl #0x10
|
|
movne r5, r0, lsr #0x10
|
|
ldr r0, _03801D20 ; =_03807E6C
|
|
ldr r1, [r0]
|
|
strh r4, [r1, #8]
|
|
ldr r0, [r0]
|
|
strh r5, [r0, #0xa]
|
|
_03801D18:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03801D20: .word _03807E6C
|
|
arm_func_end sub_03801C8C
|
|
|
|
arm_func_start sub_03801D24
|
|
sub_03801D24: ; 0x03801D24
|
|
ldr r1, _03801D4C ; =_03807E70
|
|
mov r3, #0
|
|
mov r2, r3
|
|
_03801D30:
|
|
add r0, r1, r3, lsl #6
|
|
strb r2, [r0, #0xf80]
|
|
add r3, r3, #1
|
|
strb r2, [r0, #0xf81]
|
|
cmp r3, #8
|
|
blt _03801D30
|
|
bx lr
|
|
.align 2, 0
|
|
_03801D4C: .word _03807E70
|
|
arm_func_end sub_03801D24
|
|
|
|
arm_func_start sub_03801D50
|
|
sub_03801D50: ; 0x03801D50
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr lr, _03801DA8 ; =_03808DF0
|
|
ldr r4, [sp, #0x18]
|
|
ldrb ip, [lr, r0, lsl #6]
|
|
mov r7, r1
|
|
mov r6, r2
|
|
mov r5, r3
|
|
cmp ip, #0
|
|
add r8, lr, r0, lsl #6
|
|
beq _03801D88
|
|
add r0, r8, #0x14
|
|
bl sub_037FD5C0
|
|
mov r0, #0
|
|
strb r0, [r8]
|
|
_03801D88:
|
|
str r7, [r8, #4]
|
|
str r6, [r8, #8]
|
|
str r5, [r8, #0xc]
|
|
ldr r0, [sp, #0x1c]
|
|
str r4, [r8, #0x10]
|
|
strb r0, [r8, #1]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03801DA8: .word _03808DF0
|
|
arm_func_end sub_03801D50
|
|
|
|
arm_func_start sub_03801DAC
|
|
sub_03801DAC: ; 0x03801DAC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0xc
|
|
ldr r1, _03801E60 ; =_03808DF0
|
|
mov sb, r0
|
|
ldrb r0, [r1, sb, lsl #6]
|
|
add r8, r1, sb, lsl #6
|
|
cmp r0, #0
|
|
beq _03801DDC
|
|
add r0, r8, #0x14
|
|
bl sub_037FD5C0
|
|
mov r0, #0
|
|
strb r0, [r8]
|
|
_03801DDC:
|
|
ldrb r1, [r8, #1]
|
|
ldr r7, [r8, #0xc]
|
|
ldr r6, [r8, #0x10]
|
|
add r0, r8, #0x14
|
|
ldr r5, [r8, #4]
|
|
ldr r4, [r8, #8]
|
|
orr sb, sb, r1, lsl #8
|
|
bl sub_037FD3A0
|
|
cmp r6, #0
|
|
cmpeq r7, #0
|
|
bne _03801E24
|
|
ldr r3, _03801E64 ; =sub_03801EA8
|
|
mov r1, r5
|
|
mov r2, r4
|
|
add r0, r8, #0x14
|
|
str sb, [sp]
|
|
bl sub_037FD4DC
|
|
b _03801E4C
|
|
_03801E24:
|
|
bl GetCurrentPlaybackTime
|
|
ldr r2, _03801E64 ; =sub_03801EA8
|
|
adds r0, r5, r0
|
|
stmib sp, {r2, sb}
|
|
adc r2, r4, r1
|
|
mov r1, r0
|
|
mov r3, r7
|
|
add r0, r8, #0x14
|
|
str r6, [sp]
|
|
bl sub_037FD54C
|
|
_03801E4C:
|
|
mov r0, #1
|
|
strb r0, [r8]
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03801E60: .word _03808DF0
|
|
_03801E64: .word sub_03801EA8
|
|
arm_func_end sub_03801DAC
|
|
|
|
arm_func_start sub_03801E68
|
|
sub_03801E68: ; 0x03801E68
|
|
stmdb sp!, {r4, lr}
|
|
ldr r2, _03801EA4 ; =_03808DF0
|
|
ldrb r1, [r2, r0, lsl #6]
|
|
add r4, r2, r0, lsl #6
|
|
cmp r1, #0
|
|
beq _03801E9C
|
|
add r0, r4, #0x14
|
|
bl sub_037FD5C0
|
|
ldrb r1, [r4, #1]
|
|
mov r0, #0
|
|
add r1, r1, #1
|
|
strb r1, [r4, #1]
|
|
strb r0, [r4]
|
|
_03801E9C:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03801EA4: .word _03808DF0
|
|
arm_func_end sub_03801E68
|
|
|
|
arm_func_start sub_03801EA8
|
|
sub_03801EA8: ; 0x03801EA8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, #7
|
|
mov r4, #0
|
|
_03801EB8:
|
|
mov r0, r5
|
|
mov r1, r6
|
|
mov r2, r4
|
|
bl sub_037FE410
|
|
cmp r0, #0
|
|
blt _03801EB8
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
arm_func_end sub_03801EA8
|
|
|
|
arm_func_start sub_03801ED8
|
|
sub_03801ED8: ; 0x03801ED8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _03801F0C ; =_03808FF0
|
|
ldr r1, _03801F10 ; =_03809010
|
|
mov r2, #8
|
|
bl sub_037FC6AC
|
|
ldr r1, _03801F14 ; =sub_038025CC
|
|
mov r0, #7
|
|
bl sub_037FE39C
|
|
ldr r0, _03801F18 ; =_03807E6C
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03801F0C: .word _03808FF0
|
|
_03801F10: .word _03809010
|
|
_03801F14: .word sub_038025CC
|
|
_03801F18: .word _03807E6C
|
|
arm_func_end sub_03801ED8
|
|
|
|
arm_func_start sub_03801F1C
|
|
sub_03801F1C: ; 0x03801F1C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x34
|
|
b _03802594
|
|
_03801F28:
|
|
ldr sl, _038025B8 ; =0x04000509
|
|
ldr r6, [sp, #0x18]
|
|
sub r4, sl, #1
|
|
b _03802578
|
|
_03801F38:
|
|
add r5, sp, #0x1c
|
|
ldmia r6!, {r0, r1, r2, r3}
|
|
stmia r5!, {r0, r1, r2, r3}
|
|
ldmia r6, {r0, r1}
|
|
stmia r5, {r0, r1}
|
|
ldr r0, [sp, #0x20]
|
|
cmp r0, #0x21
|
|
addls pc, pc, r0, lsl #2
|
|
b _03802574
|
|
_03801F5C: ; jump table
|
|
b _03801FE4 ; case 0
|
|
b _03801FFC ; case 1
|
|
b _03802008 ; case 2
|
|
b _03802020 ; case 3
|
|
b _0380202C ; case 4
|
|
b _0380203C ; case 5
|
|
b _0380204C ; case 6
|
|
b _03802064 ; case 7
|
|
b _0380208C ; case 8
|
|
b _038020A0 ; case 9
|
|
b _038020B4 ; case 10
|
|
b _038020D0 ; case 11
|
|
b _038020E8 ; case 12
|
|
b _038021B0 ; case 13
|
|
b _0380238C ; case 14
|
|
b _0380240C ; case 15
|
|
b _03802444 ; case 16
|
|
b _03802254 ; case 17
|
|
b _0380229C ; case 18
|
|
b _038022C4 ; case 19
|
|
b _03802304 ; case 20
|
|
b _0380234C ; case 21
|
|
b _03802474 ; case 22
|
|
b _03802480 ; case 23
|
|
b _0380248C ; case 24
|
|
b _03802498 ; case 25
|
|
b _038024B0 ; case 26
|
|
b _038024C0 ; case 27
|
|
b _038024D0 ; case 28
|
|
b _03802510 ; case 29
|
|
b _038024E0 ; case 30
|
|
b _038024F0 ; case 31
|
|
b _03802500 ; case 32
|
|
b _03802520 ; case 33
|
|
_03801FE4:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
ldr r3, [sp, #0x30]
|
|
bl sub_03800310
|
|
b _03802574
|
|
_03801FFC:
|
|
ldr r0, [sp, #0x24]
|
|
bl sub_03800340
|
|
b _03802574
|
|
_03802008:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
ldr r3, [sp, #0x30]
|
|
bl sub_038000B4
|
|
b _03802574
|
|
_03802020:
|
|
ldr r0, [sp, #0x24]
|
|
bl sub_038002F0
|
|
b _03802574
|
|
_0380202C:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
bl sub_0380039C
|
|
b _03802574
|
|
_0380203C:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
bl sub_03800414
|
|
b _03802574
|
|
_0380204C:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
ldr r3, [sp, #0x30]
|
|
bl sub_038006A4
|
|
b _03802574
|
|
_03802064:
|
|
ldr r1, [sp, #0x24]
|
|
mov r0, r1, lsr #0x18
|
|
and r0, r0, #0xff
|
|
str r0, [sp]
|
|
bic r0, r1, #0xff000000
|
|
ldr r1, [sp, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
ldr r3, [sp, #0x30]
|
|
bl sub_038006E8
|
|
b _03802574
|
|
_0380208C:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
bl sub_038004E0
|
|
b _03802574
|
|
_038020A0:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
bl sub_0380054C
|
|
b _03802574
|
|
_038020B4:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
mov r2, r2, lsl #0x10
|
|
mov r2, r2, asr #0x10
|
|
bl sub_03801C50
|
|
b _03802574
|
|
_038020D0:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
bl sub_03801C70
|
|
b _03802574
|
|
_038020E8:
|
|
ldr r7, [sp, #0x2c]
|
|
ldr r6, [sp, #0x28]
|
|
ldr r5, [sp, #0x24]
|
|
bl EnableIrqFlag
|
|
mov r8, r0
|
|
mov r2, #0
|
|
b _03802124
|
|
_03802104:
|
|
tst r5, #1
|
|
movne r0, r2, lsl #4
|
|
addne r0, r0, #0x4000000
|
|
ldrneb r1, [r0, #0x403]
|
|
add r2, r2, #1
|
|
orrne r1, r1, #0x80
|
|
strneb r1, [r0, #0x403]
|
|
mov r5, r5, lsr #1
|
|
_03802124:
|
|
cmp r2, #0x10
|
|
bge _03802134
|
|
cmp r5, #0
|
|
bne _03802104
|
|
_03802134:
|
|
tst r6, #1
|
|
beq _03802160
|
|
tst r6, #2
|
|
ldrneh r1, [r4]
|
|
orrne r0, r1, #0x80
|
|
orrne r0, r0, #0x8000
|
|
strneh r0, [r4]
|
|
ldreqb r0, [r4]
|
|
orreq r0, r0, #0x80
|
|
streqb r0, [r4]
|
|
b _03802170
|
|
_03802160:
|
|
tst r6, #2
|
|
ldrneb r0, [sl]
|
|
orrne r0, r0, #0x80
|
|
strneb r0, [sl]
|
|
_03802170:
|
|
mov r5, #0
|
|
b _03802190
|
|
_03802178:
|
|
tst r7, #1
|
|
beq _03802188
|
|
mov r0, r5
|
|
bl sub_03801DAC
|
|
_03802188:
|
|
add r5, r5, #1
|
|
mov r7, r7, lsr #1
|
|
_03802190:
|
|
cmp r5, #8
|
|
bge _038021A0
|
|
cmp r7, #0
|
|
bne _03802178
|
|
_038021A0:
|
|
mov r0, r8
|
|
bl SetIrqFlag
|
|
bl sub_03801C8C
|
|
b _03802574
|
|
_038021B0:
|
|
ldr sb, [sp, #0x30]
|
|
ldr r7, [sp, #0x2c]
|
|
ldr r6, [sp, #0x28]
|
|
ldr r5, [sp, #0x24]
|
|
bl EnableIrqFlag
|
|
mov fp, r0
|
|
mov r8, #0
|
|
b _038021E8
|
|
_038021D0:
|
|
tst r7, #1
|
|
beq _038021E0
|
|
mov r0, r8
|
|
bl sub_03801E68
|
|
_038021E0:
|
|
add r8, r8, #1
|
|
mov r7, r7, lsr #1
|
|
_038021E8:
|
|
cmp r8, #8
|
|
bge _038021F8
|
|
cmp r7, #0
|
|
bne _038021D0
|
|
_038021F8:
|
|
mov r7, #0
|
|
b _0380221C
|
|
_03802200:
|
|
tst r5, #1
|
|
beq _03802214
|
|
mov r0, r7
|
|
mov r1, sb
|
|
bl sub_037FEA20
|
|
_03802214:
|
|
add r7, r7, #1
|
|
mov r5, r5, lsr #1
|
|
_0380221C:
|
|
cmp r7, #0x10
|
|
bge _0380222C
|
|
cmp r5, #0
|
|
bne _03802200
|
|
_0380222C:
|
|
tst r6, #1
|
|
movne r0, #0
|
|
strneb r0, [r4]
|
|
tst r6, #2
|
|
movne r0, #0
|
|
strneb r0, [sl]
|
|
mov r0, fp
|
|
bl SetIrqFlag
|
|
bl sub_03801C8C
|
|
b _03802574
|
|
_03802254:
|
|
ldr r1, [sp, #0x2c]
|
|
mov r0, r1, lsr #0x1d
|
|
and r0, r0, #1
|
|
str r0, [sp]
|
|
mov r0, r1, lsr #0x1c
|
|
and r0, r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, r1, lsr #0x1b
|
|
and r0, r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, r1, lsr #0x1f
|
|
and r0, r0, #1
|
|
mov r1, r1, lsr #0x1e
|
|
and r1, r1, #1
|
|
ldr r2, [sp, #0x24]
|
|
ldr r3, [sp, #0x28]
|
|
bl sub_037FF0FC
|
|
b _03802574
|
|
_0380229C:
|
|
ldr r0, [sp, #0x30]
|
|
mov r2, #0
|
|
str r0, [sp, #4]
|
|
ldr r3, [sp, #0x2c]
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
bl sub_03801D50
|
|
b _03802574
|
|
_038022C4:
|
|
ldr r6, [sp, #0x28]
|
|
ldr r5, [sp, #0x24]
|
|
mov r7, #0
|
|
b _038022F0
|
|
_038022D4:
|
|
tst r5, #1
|
|
beq _038022E8
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl sub_037FEAC0
|
|
_038022E8:
|
|
add r7, r7, #1
|
|
mov r5, r5, lsr #1
|
|
_038022F0:
|
|
cmp r7, #0x10
|
|
bge _03802574
|
|
cmp r5, #0
|
|
bne _038022D4
|
|
b _03802574
|
|
_03802304:
|
|
ldr r7, [sp, #0x2c]
|
|
ldr r6, [sp, #0x28]
|
|
ldr r5, [sp, #0x24]
|
|
mov r8, #0
|
|
b _03802338
|
|
_03802318:
|
|
tst r5, #1
|
|
beq _03802330
|
|
mov r0, r8
|
|
mov r1, r6
|
|
mov r2, r7
|
|
bl sub_037FEA48
|
|
_03802330:
|
|
add r8, r8, #1
|
|
mov r5, r5, lsr #1
|
|
_03802338:
|
|
cmp r8, #0x10
|
|
bge _03802574
|
|
cmp r5, #0
|
|
bne _03802318
|
|
b _03802574
|
|
_0380234C:
|
|
ldr r6, [sp, #0x28]
|
|
ldr r5, [sp, #0x24]
|
|
mov r7, #0
|
|
b _03802378
|
|
_0380235C:
|
|
tst r5, #1
|
|
beq _03802370
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl sub_037FEAD8
|
|
_03802370:
|
|
add r7, r7, #1
|
|
mov r5, r5, lsr #1
|
|
_03802378:
|
|
cmp r7, #0x10
|
|
bge _03802574
|
|
cmp r5, #0
|
|
bne _0380235C
|
|
b _03802574
|
|
_0380238C:
|
|
ldr r3, [sp, #0x30]
|
|
ldr r0, [sp, #0x24]
|
|
mov r1, r3, lsl #0x10
|
|
ldr r2, [sp, #0x2c]
|
|
mov r1, r1, lsr #0x10
|
|
str r1, [sp]
|
|
ldr r1, _038025BC ; =0x003FFFFF
|
|
and r1, r2, r1
|
|
str r1, [sp, #4]
|
|
mov r1, r2, lsr #0x18
|
|
and r1, r1, #0x7f
|
|
str r1, [sp, #8]
|
|
mov r1, r2, lsr #0x16
|
|
and r1, r1, #3
|
|
str r1, [sp, #0xc]
|
|
mov r1, r0, lsr #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
str r1, [sp, #0x10]
|
|
mov r1, r3, lsr #0x10
|
|
mov r2, r3, lsr #0x18
|
|
and r1, r1, #0x7f
|
|
str r1, [sp, #0x14]
|
|
ldr r1, [sp, #0x28]
|
|
mov r0, r0, lsl #0x10
|
|
mov r3, r3, lsr #0x1a
|
|
mov r0, r0, lsr #0x10
|
|
bic r1, r1, #0xf8000000
|
|
and r2, r2, #3
|
|
and r3, r3, #3
|
|
bl sub_037FE804
|
|
b _03802574
|
|
_0380240C:
|
|
ldr r1, [sp, #0x2c]
|
|
ldr r3, [sp, #0x28]
|
|
mov r0, r1, lsl #8
|
|
mov r0, r0, lsr #0x10
|
|
str r0, [sp]
|
|
and r0, r1, #0x7f
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x30]
|
|
and r2, r3, #0x7f
|
|
mov r3, r3, lsr #8
|
|
and r3, r3, #3
|
|
bl sub_037FE8D0
|
|
b _03802574
|
|
_03802444:
|
|
ldr r1, [sp, #0x2c]
|
|
ldr r2, [sp, #0x28]
|
|
and r0, r1, #0x7f
|
|
str r0, [sp]
|
|
mov r0, r1, lsl #8
|
|
mov r3, r0, lsr #0x10
|
|
ldr r0, [sp, #0x24]
|
|
and r1, r2, #0x7f
|
|
mov r2, r2, lsr #8
|
|
and r2, r2, #3
|
|
bl sub_037FE97C
|
|
b _03802574
|
|
_03802474:
|
|
ldr r0, [sp, #0x24]
|
|
bl sub_037FEBE0
|
|
b _03802574
|
|
_03802480:
|
|
ldr r0, [sp, #0x24]
|
|
bl sub_037FE7BC
|
|
b _03802574
|
|
_0380248C:
|
|
ldr r0, [sp, #0x24]
|
|
bl sub_037FEB6C
|
|
b _03802574
|
|
_03802498:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
ldr r3, [sp, #0x30]
|
|
bl sub_037FE7CC
|
|
b _03802574
|
|
_038024B0:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
bl sub_037FFBE0
|
|
b _03802574
|
|
_038024C0:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
bl sub_037FFCC0
|
|
b _03802574
|
|
_038024D0:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
bl sub_037FFB30
|
|
b _03802574
|
|
_038024E0:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
bl sub_038005BC
|
|
b _03802574
|
|
_038024F0:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
bl sub_03800648
|
|
b _03802574
|
|
_03802500:
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
bl sub_037FFD14
|
|
b _03802574
|
|
_03802510:
|
|
ldr r1, [sp, #0x24]
|
|
ldr r0, _038025C0 ; =_03807E6C
|
|
str r1, [r0]
|
|
b _03802574
|
|
_03802520:
|
|
ldr r5, [sp, #0x24]
|
|
ldr r0, _038025C4 ; =_03807E70
|
|
mov r1, r5
|
|
mov r2, #0x1180
|
|
bl sub_037FDFEC
|
|
ldr r0, _038025C4 ; =_03807E70
|
|
add r1, r5, #0x1000
|
|
str r0, [r1, #0x1c0]
|
|
mov r6, #0
|
|
_03802544:
|
|
mov r0, r6
|
|
bl sub_037FEBD0
|
|
add r1, r5, r6, lsl #2
|
|
add r1, r1, #0x1000
|
|
str r0, [r1, #0x180]
|
|
add r6, r6, #1
|
|
cmp r6, #0x10
|
|
blt _03802544
|
|
mov r0, #0
|
|
bl sub_037FFCF8
|
|
add r1, r5, #0x1000
|
|
str r0, [r1, #0x1c4]
|
|
_03802574:
|
|
ldr r6, [sp, #0x1c]
|
|
_03802578:
|
|
cmp r6, #0
|
|
bne _03801F38
|
|
ldr r0, _038025C0 ; =_03807E6C
|
|
ldr r1, [r0]
|
|
ldr r0, [r1]
|
|
add r0, r0, #1
|
|
str r0, [r1]
|
|
_03802594:
|
|
ldr r0, _038025C8 ; =_03808FF0
|
|
add r1, sp, #0x18
|
|
mov r2, #0
|
|
bl sub_037FC760
|
|
cmp r0, #0
|
|
bne _03801F28
|
|
add sp, sp, #0x34
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038025B8: .word 0x04000509
|
|
_038025BC: .word 0x003FFFFF
|
|
_038025C0: .word _03807E6C
|
|
_038025C4: .word _03807E70
|
|
_038025C8: .word _03808FF0
|
|
arm_func_end sub_03801F1C
|
|
|
|
arm_func_start sub_038025CC
|
|
sub_038025CC: ; 0x038025CC
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r1
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
cmp r5, #0x2000000
|
|
blo _038025F8
|
|
ldr r0, _03802614 ; =_03808FF0
|
|
mov r1, r5
|
|
mov r2, #0
|
|
bl sub_037FC6D4
|
|
b _03802604
|
|
_038025F8:
|
|
cmp r5, #0
|
|
bne _03802604
|
|
bl sub_037FEFC8
|
|
_03802604:
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802614: .word _03808FF0
|
|
arm_func_end sub_038025CC
|
|
|
|
arm_func_start sub_03802618
|
|
sub_03802618: ; 0x03802618
|
|
ldr ip, _03802620 ; =sub_03803168
|
|
bx ip
|
|
.align 2, 0
|
|
_03802620: .word sub_03803168
|
|
arm_func_end sub_03802618
|
|
|
|
arm_func_start sub_03802624
|
|
sub_03802624: ; 0x03802624
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #8
|
|
ldr r4, _038026C8 ; =_03809060
|
|
mov r2, #0
|
|
mvn r1, #2
|
|
str r1, [r4, #0xc]
|
|
mov r0, #4
|
|
str r0, [r4, #0xf0]
|
|
str r2, [r4, #0x10]
|
|
str r2, [r4, #0x1c]
|
|
str r2, [r4]
|
|
str r2, [r4, #8]
|
|
str r2, [r4, #0x18]
|
|
str r2, [r4, #0x14]
|
|
str r2, [r4, #0xf8]
|
|
str r2, [r4, #0xf4]
|
|
mov r0, #0x400
|
|
str r0, [sp]
|
|
ldr ip, [r4, #0xf0]
|
|
ldr r1, _038026CC ; =sub_038032B8
|
|
ldr r3, _038026D0 ; =_03809660
|
|
add r0, r4, #0x48
|
|
str ip, [sp, #4]
|
|
bl sub_037FC054
|
|
add r0, r4, #0x48
|
|
bl sub_037FC36C
|
|
ldr r1, _038026D4 ; =sub_038031D4
|
|
mov r0, #0xb
|
|
bl sub_037FE39C
|
|
ldr r0, _038026D8 ; =0x027FFC40
|
|
ldrh r0, [r0]
|
|
cmp r0, #2
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
ldreq r0, _038026DC ; =_03809040
|
|
moveq r1, #1
|
|
streq r1, [r0]
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038026C8: .word _03809060
|
|
_038026CC: .word sub_038032B8
|
|
_038026D0: .word _03809660
|
|
_038026D4: .word sub_038031D4
|
|
_038026D8: .word 0x027FFC40
|
|
_038026DC: .word _03809040
|
|
arm_func_end sub_03802624
|
|
|
|
arm_func_start sub_038026E0
|
|
sub_038026E0: ; 0x038026E0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r5, _0380271C ; =_03809060
|
|
mov r7, r0
|
|
bl EnableIrqFlag
|
|
ldr r6, [r5, #0xf0]
|
|
mov r4, r0
|
|
mov r1, r7
|
|
add r0, r5, #0x48
|
|
str r7, [r5, #0xf0]
|
|
bl sub_037FC3C0
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
mov r0, r6
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0380271C: .word _03809060
|
|
arm_func_end sub_038026E0
|
|
|
|
arm_func_start sub_03802720
|
|
sub_03802720: ; 0x03802720
|
|
ldr r0, _03802728 ; =0x027FFA80
|
|
bx lr
|
|
.align 2, 0
|
|
_03802728: .word 0x027FFA80
|
|
arm_func_end sub_03802720
|
|
|
|
arm_func_start sub_0380272C
|
|
sub_0380272C: ; 0x0380272C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
adds r1, r5, r4
|
|
beq _038027C4
|
|
cmp r5, #0
|
|
beq _0380274C
|
|
bl sub_037FC468
|
|
_0380274C:
|
|
cmp r4, #0
|
|
beq _038027A0
|
|
sub r7, r4, r5
|
|
mov r4, #0
|
|
mov r5, #1
|
|
mov r6, #5
|
|
b _03802780
|
|
_03802768:
|
|
cmp r7, #5
|
|
movlt r8, r7
|
|
movge r8, r6
|
|
mov r0, r8
|
|
bl sub_037FC468
|
|
sub r7, r7, r8
|
|
_03802780:
|
|
bl sub_038027D0
|
|
tst r0, #1
|
|
moveq r0, r5
|
|
movne r0, r4
|
|
cmp r0, #0
|
|
bne _038027A0
|
|
cmp r7, #0
|
|
bgt _03802768
|
|
_038027A0:
|
|
bl sub_038027D0
|
|
tst r0, #1
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
ldreq r0, _038027CC ; =_03809060
|
|
moveq r1, #4
|
|
ldreq r0, [r0]
|
|
streq r1, [r0]
|
|
_038027C4:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038027CC: .word _03809060
|
|
arm_func_end sub_0380272C
|
|
|
|
arm_func_start sub_038027D0
|
|
sub_038027D0: ; 0x038027D0
|
|
stmdb sp!, {r3, lr}
|
|
ldr ip, _03802814 ; =_03809660
|
|
mov lr, #2
|
|
ldr r0, _03802818 ; =_0380720C
|
|
ldr r3, _0380281C ; =sub_03802924
|
|
mov r1, #0
|
|
mov r2, #1
|
|
str lr, [ip, #4]
|
|
bl sub_03802860
|
|
ldr r3, _03802820 ; =sub_038028E4
|
|
add r1, sp, #0
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl sub_03802860
|
|
ldrb r0, [sp]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802814: .word _03809660
|
|
_03802818: .word _0380720C
|
|
_0380281C: .word sub_03802924
|
|
_03802820: .word sub_038028E4
|
|
arm_func_end sub_038027D0
|
|
|
|
arm_func_start sub_03802824
|
|
sub_03802824: ; 0x03802824
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0
|
|
mov r1, #0x32
|
|
bl sub_0380272C
|
|
ldr r0, _0380285C ; =_03809060
|
|
ldr r1, [r0]
|
|
ldr r0, [r1]
|
|
cmp r0, #4
|
|
moveq r0, #6
|
|
streq r0, [r1]
|
|
moveq r0, #0
|
|
movne r0, #1
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0380285C: .word _03809060
|
|
arm_func_end sub_03802824
|
|
|
|
arm_func_start sub_03802860
|
|
sub_03802860: ; 0x03802860
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r5, _038028D8 ; =_03809664
|
|
ldr r8, _038028DC ; =0x0000A040
|
|
ldr r4, _038028E0 ; =0x040001A0
|
|
stmib r5, {r0, r1}
|
|
strh r8, [r4]
|
|
mov r7, r2
|
|
mov r6, r3
|
|
mov r8, #0xa000
|
|
b _038028B4
|
|
_03802888:
|
|
ldr r0, [r5]
|
|
subs r0, r0, #1
|
|
str r0, [r5]
|
|
streqh r8, [r4]
|
|
_03802898:
|
|
ldrh r0, [r4]
|
|
tst r0, #0x80
|
|
bne _03802898
|
|
mov r0, r5
|
|
mov lr, pc
|
|
bx r6
|
|
_038028B0:
|
|
sub r7, r7, #1
|
|
_038028B4:
|
|
cmp r7, #0
|
|
bne _03802888
|
|
ldr r0, [r5]
|
|
cmp r0, #0
|
|
ldreq r0, _038028E0 ; =0x040001A0
|
|
moveq r1, #0
|
|
streqh r1, [r0]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038028D8: .word _03809664
|
|
_038028DC: .word 0x0000A040
|
|
_038028E0: .word 0x040001A0
|
|
arm_func_end sub_03802860
|
|
|
|
arm_func_start sub_038028E4
|
|
sub_038028E4: ; 0x038028E4
|
|
ldr r1, _03802920 ; =0x040001A2
|
|
mov r2, #0
|
|
strh r2, [r1]
|
|
sub r2, r1, #2
|
|
_038028F4:
|
|
ldrh r1, [r2]
|
|
tst r1, #0x80
|
|
bne _038028F4
|
|
ldr r2, _03802920 ; =0x040001A2
|
|
ldr r1, [r0, #8]
|
|
ldrh r2, [r2]
|
|
strb r2, [r1]
|
|
ldr r1, [r0, #8]
|
|
add r1, r1, #1
|
|
str r1, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_03802920: .word 0x040001A2
|
|
arm_func_end sub_038028E4
|
|
|
|
arm_func_start sub_03802924
|
|
sub_03802924: ; 0x03802924
|
|
stmdb sp!, {r3}
|
|
sub sp, sp, #4
|
|
ldr r1, [r0, #4]
|
|
ldr r2, _03802970 ; =0x040001A2
|
|
ldrb r1, [r1]
|
|
strh r1, [r2]
|
|
ldr r1, [r0, #4]
|
|
add r1, r1, #1
|
|
str r1, [r0, #4]
|
|
sub r1, r2, #2
|
|
_0380294C:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _0380294C
|
|
ldr r0, _03802970 ; =0x040001A2
|
|
ldrh r0, [r0]
|
|
strh r0, [sp]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802970: .word 0x040001A2
|
|
arm_func_end sub_03802924
|
|
|
|
arm_func_start sub_03802974
|
|
sub_03802974: ; 0x03802974
|
|
ldr r1, _038029D4 ; =0x040001A2
|
|
mov r2, #0
|
|
strh r2, [r1]
|
|
sub r2, r1, #2
|
|
_03802984:
|
|
ldrh r1, [r2]
|
|
tst r1, #0x80
|
|
bne _03802984
|
|
ldr r2, _038029D4 ; =0x040001A2
|
|
ldr r1, [r0, #4]
|
|
ldrh r2, [r2]
|
|
ldrb r1, [r1]
|
|
and r2, r2, #0xff
|
|
cmp r2, r1
|
|
beq _038029C4
|
|
mov r1, #0
|
|
str r1, [r0, #0xc]
|
|
ldr r1, [r0]
|
|
cmp r1, #1
|
|
movhi r1, #1
|
|
strhi r1, [r0]
|
|
_038029C4:
|
|
ldr r1, [r0, #4]
|
|
add r1, r1, #1
|
|
str r1, [r0, #4]
|
|
bx lr
|
|
.align 2, 0
|
|
_038029D4: .word 0x040001A2
|
|
arm_func_end sub_03802974
|
|
|
|
arm_func_start sub_038029D8
|
|
sub_038029D8: ; 0x038029D8
|
|
stmdb sp!, {r3, lr}
|
|
ldr ip, _03802A00 ; =_03809660
|
|
mov r2, #1
|
|
ldr r0, _03802A04 ; =_03807204
|
|
ldr r3, _03802A08 ; =sub_03802924
|
|
mov r1, #0
|
|
str r2, [ip, #4]
|
|
bl sub_03802860
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802A00: .word _03809660
|
|
_03802A04: .word _03807204
|
|
_03802A08: .word sub_03802924
|
|
arm_func_end sub_038029D8
|
|
|
|
arm_func_start sub_03802A0C
|
|
sub_03802A0C: ; 0x03802A0C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _03802AA4 ; =_03809060
|
|
ldr r2, [r2]
|
|
ldr r2, [r2, #0x28]
|
|
cmp r2, #1
|
|
beq _03802A38
|
|
cmp r2, #2
|
|
beq _03802A54
|
|
cmp r2, #3
|
|
beq _03802A6C
|
|
b _03802A88
|
|
_03802A38:
|
|
mov r3, r0, lsr #5
|
|
and r3, r3, #8
|
|
mov ip, r0, lsl #0x18
|
|
orr r0, r1, r3
|
|
orr r0, r0, ip, lsr #16
|
|
str r0, [sp]
|
|
b _03802A88
|
|
_03802A54:
|
|
and r3, r0, #0xff00
|
|
mov ip, r0, lsl #0x18
|
|
orr r0, r1, r3
|
|
orr r0, r0, ip, lsr #8
|
|
str r0, [sp]
|
|
b _03802A88
|
|
_03802A6C:
|
|
mov r3, r0, lsr #8
|
|
and r3, r3, #0xff00
|
|
and ip, r0, #0xff00
|
|
orr r1, r1, r3
|
|
orr r1, r1, ip, lsl #8
|
|
orr r0, r1, r0, lsl #24
|
|
str r0, [sp]
|
|
_03802A88:
|
|
ldr r3, _03802AA8 ; =sub_03802924
|
|
add r0, sp, #0
|
|
add r2, r2, #1
|
|
mov r1, #0
|
|
bl sub_03802860
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802AA4: .word _03809060
|
|
_03802AA8: .word sub_03802924
|
|
arm_func_end sub_03802A0C
|
|
|
|
arm_func_start sub_03802AAC
|
|
sub_03802AAC: ; 0x03802AAC
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _03802AFC ; =_03809060
|
|
ldr r0, [r0]
|
|
ldrb r4, [r0, #0x54]
|
|
cmp r4, #0xff
|
|
beq _03802AF4
|
|
ldr r0, _03802B00 ; =_03809660
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _03802AF4
|
|
bl sub_038027D0
|
|
cmp r4, r0
|
|
beq _03802AE8
|
|
mov r0, r4
|
|
bl sub_03802F04
|
|
_03802AE8:
|
|
ldr r0, _03802B00 ; =_03809660
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
_03802AF4:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802AFC: .word _03809060
|
|
_03802B00: .word _03809660
|
|
arm_func_end sub_03802AAC
|
|
|
|
arm_func_start sub_03802B04
|
|
sub_03802B04: ; 0x03802B04
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
bl sub_03802824
|
|
cmp r0, #0
|
|
beq _03802B5C
|
|
ldr r0, _03802B64 ; =_03809060
|
|
ldr r2, _03802B68 ; =_03809660
|
|
ldr r1, [r0]
|
|
mov r0, r6
|
|
ldr r3, [r1, #0x28]
|
|
mov r1, #3
|
|
add r3, r3, #1
|
|
add r3, r3, r4
|
|
str r3, [r2, #4]
|
|
bl sub_03802A0C
|
|
ldr r3, _03802B6C ; =sub_038028E4
|
|
mov r1, r5
|
|
mov r2, r4
|
|
mov r0, #0
|
|
bl sub_03802860
|
|
_03802B5C:
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802B64: .word _03809060
|
|
_03802B68: .word _03809660
|
|
_03802B6C: .word sub_038028E4
|
|
arm_func_end sub_03802B04
|
|
|
|
arm_func_start sub_03802B70
|
|
sub_03802B70: ; 0x03802B70
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sl, r0
|
|
mov sb, r1
|
|
mov r8, r2
|
|
bl sub_03802824
|
|
cmp r0, #0
|
|
beq _03802C14
|
|
ldr r0, _03802C1C ; =_03809060
|
|
ldr fp, _03802C20 ; =_03809660
|
|
ldr r5, [r0]
|
|
ldr r6, [r5, #0x24]
|
|
sub r4, r6, #1
|
|
b _03802C0C
|
|
_03802BA4:
|
|
and r0, sl, r4
|
|
sub r7, r6, r0
|
|
cmp r7, r8
|
|
movhi r7, r8
|
|
bl sub_038029D8
|
|
ldr r1, [r5, #0x28]
|
|
mov r0, sl
|
|
add r1, r1, #1
|
|
add r1, r1, r7
|
|
str r1, [fp, #4]
|
|
mov r1, #2
|
|
bl sub_03802A0C
|
|
ldr r3, _03802C24 ; =sub_03802924
|
|
mov r0, sb
|
|
mov r1, #0
|
|
mov r2, r7
|
|
bl sub_03802860
|
|
ldr r0, [r5, #0x2c]
|
|
mov r1, #0
|
|
bl sub_0380272C
|
|
ldr r0, [r5]
|
|
cmp r0, #0
|
|
bne _03802C14
|
|
add sb, sb, r7
|
|
add sl, sl, r7
|
|
sub r8, r8, r7
|
|
_03802C0C:
|
|
cmp r8, #0
|
|
bne _03802BA4
|
|
_03802C14:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802C1C: .word _03809060
|
|
_03802C20: .word _03809660
|
|
_03802C24: .word sub_03802924
|
|
arm_func_end sub_03802B70
|
|
|
|
arm_func_start sub_03802C28
|
|
sub_03802C28: ; 0x03802C28
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sl, r0
|
|
mov sb, r1
|
|
mov r8, r2
|
|
bl sub_03802824
|
|
cmp r0, #0
|
|
beq _03802CCC
|
|
ldr r0, _03802CD4 ; =_03809060
|
|
ldr fp, _03802CD8 ; =_03809660
|
|
ldr r5, [r0]
|
|
ldr r6, [r5, #0x24]
|
|
sub r4, r6, #1
|
|
b _03802CC4
|
|
_03802C5C:
|
|
and r0, sl, r4
|
|
sub r7, r6, r0
|
|
cmp r7, r8
|
|
movhi r7, r8
|
|
bl sub_038029D8
|
|
ldr r1, [r5, #0x28]
|
|
mov r0, sl
|
|
add r1, r1, #1
|
|
add r1, r1, r7
|
|
str r1, [fp, #4]
|
|
mov r1, #0xa
|
|
bl sub_03802A0C
|
|
ldr r3, _03802CDC ; =sub_03802924
|
|
mov r0, sb
|
|
mov r1, #0
|
|
mov r2, r7
|
|
bl sub_03802860
|
|
ldr r0, [r5, #0x30]
|
|
ldr r1, [r5, #0x34]
|
|
bl sub_0380272C
|
|
ldr r0, [r5]
|
|
cmp r0, #0
|
|
bne _03802CCC
|
|
add sb, sb, r7
|
|
add sl, sl, r7
|
|
sub r8, r8, r7
|
|
_03802CC4:
|
|
cmp r8, #0
|
|
bne _03802C5C
|
|
_03802CCC:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802CD4: .word _03809060
|
|
_03802CD8: .word _03809660
|
|
_03802CDC: .word sub_03802924
|
|
arm_func_end sub_03802C28
|
|
|
|
arm_func_start sub_03802CE0
|
|
sub_03802CE0: ; 0x03802CE0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
bl sub_03802824
|
|
cmp r0, #0
|
|
beq _03802D5C
|
|
ldr r0, _03802D64 ; =_03809060
|
|
ldr r2, _03802D68 ; =_03809660
|
|
ldr r4, [r0]
|
|
mov r0, #1
|
|
str r0, [r2, #0x10]
|
|
ldr r1, [r4, #0x28]
|
|
mov r0, r7
|
|
add r1, r1, #1
|
|
add r3, r1, r5
|
|
mov r1, #3
|
|
str r3, [r2, #4]
|
|
bl sub_03802A0C
|
|
ldr r3, _03802D6C ; =sub_03802974
|
|
mov r0, r6
|
|
mov r2, r5
|
|
mov r1, #0
|
|
bl sub_03802860
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
ldreq r0, _03802D68 ; =_03809660
|
|
ldreq r0, [r0, #0x10]
|
|
cmpeq r0, #0
|
|
moveq r0, #1
|
|
streq r0, [r4]
|
|
_03802D5C:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802D64: .word _03809060
|
|
_03802D68: .word _03809660
|
|
_03802D6C: .word sub_03802974
|
|
arm_func_end sub_03802CE0
|
|
|
|
arm_func_start sub_03802D70
|
|
sub_03802D70: ; 0x03802D70
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r2, _03802E04 ; =_03809060
|
|
mov r7, r0
|
|
ldr r4, [r2]
|
|
mov r6, r1
|
|
ldr r5, [r4, #0x1c]
|
|
orr r0, r7, r6
|
|
sub r1, r5, #1
|
|
tst r1, r0
|
|
movne r0, #2
|
|
strne r0, [r4]
|
|
bne _03802DFC
|
|
bl sub_03802824
|
|
cmp r0, #0
|
|
beq _03802DFC
|
|
ldr r8, _03802E08 ; =_03809660
|
|
mov sb, #0xd8
|
|
b _03802DF4
|
|
_03802DB8:
|
|
bl sub_038029D8
|
|
ldr r1, [r4, #0x28]
|
|
mov r0, r7
|
|
add r1, r1, #1
|
|
str r1, [r8, #4]
|
|
mov r1, sb
|
|
bl sub_03802A0C
|
|
ldr r0, [r4, #0x40]
|
|
ldr r1, [r4, #0x44]
|
|
bl sub_0380272C
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
bne _03802DFC
|
|
add r7, r7, r5
|
|
sub r6, r6, r5
|
|
_03802DF4:
|
|
cmp r6, #0
|
|
bne _03802DB8
|
|
_03802DFC:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802E04: .word _03809060
|
|
_03802E08: .word _03809660
|
|
arm_func_end sub_03802D70
|
|
|
|
arm_func_start sub_03802E0C
|
|
sub_03802E0C: ; 0x03802E0C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r2, _03802EA0 ; =_03809060
|
|
mov r7, r0
|
|
ldr r4, [r2]
|
|
mov r6, r1
|
|
ldr r5, [r4, #0x20]
|
|
orr r0, r7, r6
|
|
sub r1, r5, #1
|
|
tst r1, r0
|
|
movne r0, #2
|
|
strne r0, [r4]
|
|
bne _03802E98
|
|
bl sub_03802824
|
|
cmp r0, #0
|
|
beq _03802E98
|
|
ldr r8, _03802EA4 ; =_03809660
|
|
mov sb, #0x20
|
|
b _03802E90
|
|
_03802E54:
|
|
bl sub_038029D8
|
|
ldr r1, [r4, #0x28]
|
|
mov r0, r7
|
|
add r1, r1, #1
|
|
str r1, [r8, #4]
|
|
mov r1, sb
|
|
bl sub_03802A0C
|
|
ldr r0, [r4, #0x48]
|
|
ldr r1, [r4, #0x4c]
|
|
bl sub_0380272C
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
bne _03802E98
|
|
add r7, r7, r5
|
|
sub r6, r6, r5
|
|
_03802E90:
|
|
cmp r6, #0
|
|
bne _03802E54
|
|
_03802E98:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802EA0: .word _03809060
|
|
_03802EA4: .word _03809660
|
|
arm_func_end sub_03802E0C
|
|
|
|
arm_func_start sub_03802EA8
|
|
sub_03802EA8: ; 0x03802EA8
|
|
stmdb sp!, {r4, lr}
|
|
bl sub_03802824
|
|
cmp r0, #0
|
|
beq _03802EEC
|
|
ldr r0, _03802EF4 ; =_03809060
|
|
ldr r4, [r0]
|
|
bl sub_038029D8
|
|
ldr r1, _03802EF8 ; =_03809660
|
|
mov r2, #1
|
|
ldr r0, _03802EFC ; =_03807208
|
|
ldr r3, _03802F00 ; =sub_03802924
|
|
str r2, [r1, #4]
|
|
mov r1, #0
|
|
bl sub_03802860
|
|
ldr r0, [r4, #0x38]
|
|
ldr r1, [r4, #0x3c]
|
|
bl sub_0380272C
|
|
_03802EEC:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802EF4: .word _03809060
|
|
_03802EF8: .word _03809660
|
|
_03802EFC: .word _03807208
|
|
_03802F00: .word sub_03802924
|
|
arm_func_end sub_03802EA8
|
|
|
|
arm_func_start sub_03802F04
|
|
sub_03802F04: ; 0x03802F04
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov r4, r0
|
|
bl sub_03802824
|
|
cmp r0, #0
|
|
beq _03802F88
|
|
ldr r0, _03802F90 ; =_03809060
|
|
strb r4, [sp, #1]
|
|
mov r1, #1
|
|
ldr sb, [r0]
|
|
ldr r5, _03802F94 ; =sub_03802924
|
|
ldr r4, _03802F98 ; =_03809660
|
|
strb r1, [sp]
|
|
mov sl, #0xa
|
|
add r7, sp, #0
|
|
mov r8, #2
|
|
mov r6, #0
|
|
mov fp, #5
|
|
_03802F48:
|
|
bl sub_038029D8
|
|
mov r0, r7
|
|
str r8, [r4, #4]
|
|
mov r1, r6
|
|
mov r2, r8
|
|
mov r3, r5
|
|
bl sub_03802860
|
|
mov r0, fp
|
|
mov r1, #0
|
|
bl sub_0380272C
|
|
ldr r0, [sb]
|
|
cmp r0, #4
|
|
bne _03802F88
|
|
sub sl, sl, #1
|
|
cmp sl, #0
|
|
bgt _03802F48
|
|
_03802F88:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03802F90: .word _03809060
|
|
_03802F94: .word sub_03802924
|
|
_03802F98: .word _03809660
|
|
arm_func_end sub_03802F04
|
|
|
|
arm_func_start sub_03802F9C
|
|
sub_03802F9C: ; 0x03802F9C
|
|
ldr r3, _03802FF4 ; =0x040001A4
|
|
_03802FA0:
|
|
ldr r2, [r3]
|
|
tst r2, #0x80000000
|
|
bne _03802FA0
|
|
ldr r3, _03802FF8 ; =0x040001A1
|
|
mov r2, #0xc0
|
|
strb r2, [r3]
|
|
mov r2, r0, lsr #0x18
|
|
strb r2, [r3, #7]
|
|
mov r2, r0, lsr #0x10
|
|
strb r2, [r3, #8]
|
|
mov r2, r0, lsr #8
|
|
strb r2, [r3, #9]
|
|
strb r0, [r3, #0xa]
|
|
mov r0, r1, lsr #0x18
|
|
strb r0, [r3, #0xb]
|
|
mov r0, r1, lsr #0x10
|
|
strb r0, [r3, #0xc]
|
|
mov r0, r1, lsr #8
|
|
strb r0, [r3, #0xd]
|
|
strb r1, [r3, #0xe]
|
|
bx lr
|
|
.align 2, 0
|
|
_03802FF4: .word 0x040001A4
|
|
_03802FF8: .word 0x040001A1
|
|
arm_func_end sub_03802F9C
|
|
|
|
arm_func_start sub_03802FFC
|
|
sub_03802FFC: ; 0x03802FFC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r4, _0380306C ; =_03809060
|
|
mov r1, #0
|
|
ldr r0, [r4]
|
|
str r1, [r0]
|
|
ldr r7, [r4, #0x3c]
|
|
ldr r6, [r4, #0x40]
|
|
bl EnableIrqFlag
|
|
ldr r1, [r4, #0xfc]
|
|
mov r5, r0
|
|
bic r0, r1, #0x4c
|
|
str r0, [r4, #0xfc]
|
|
add r0, r4, #0xf4
|
|
bl sub_037FC2E4
|
|
ldr r0, [r4, #0xfc]
|
|
tst r0, #0x10
|
|
beq _03803048
|
|
add r0, r4, #0x48
|
|
bl sub_037FC36C
|
|
_03803048:
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
cmp r7, #0
|
|
beq _03803064
|
|
mov r0, r6
|
|
mov lr, pc
|
|
bx r7
|
|
_03803064:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0380306C: .word _03809060
|
|
arm_func_end sub_03802FFC
|
|
|
|
arm_func_start sub_03803070
|
|
sub_03803070: ; 0x03803070
|
|
ldr r1, _0380308C ; =_03807560
|
|
ldr r1, [r1]
|
|
ldr r1, [r1, #0x60]
|
|
bic r1, r1, #0x7000000
|
|
orr r0, r1, r0
|
|
orr r0, r0, #0xa0000000
|
|
bx lr
|
|
.align 2, 0
|
|
_0380308C: .word _03807560
|
|
arm_func_end sub_03803070
|
|
|
|
arm_func_start sub_03803090
|
|
sub_03803090: ; 0x03803090
|
|
bx lr
|
|
arm_func_end sub_03803090
|
|
|
|
arm_func_start sub_03803094
|
|
sub_03803094: ; 0x03803094
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0xb8000000
|
|
mov r1, #0
|
|
bl sub_03802F9C
|
|
mov r0, #0x7000000
|
|
bl sub_03803070
|
|
mov r1, #0x2000
|
|
rsb r1, r1, #0
|
|
ldr r2, _038030DC ; =0x040001A4
|
|
and r0, r0, r1
|
|
str r0, [r2]
|
|
_038030C0:
|
|
ldr r0, [r2]
|
|
tst r0, #0x800000
|
|
beq _038030C0
|
|
ldr r0, _038030E0 ; =0x04100010
|
|
ldr r0, [r0]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038030DC: .word 0x040001A4
|
|
_038030E0: .word 0x04100010
|
|
arm_func_end sub_03803094
|
|
|
|
arm_func_start sub_038030E4
|
|
sub_038030E4: ; 0x038030E4
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _03803110 ; =_03809060
|
|
mov r1, #0
|
|
mov r2, r1
|
|
bl sub_03803114
|
|
bl sub_03803094
|
|
mov r4, r0
|
|
bl sub_03802FFC
|
|
mov r0, r4
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03803110: .word _03809060
|
|
arm_func_end sub_038030E4
|
|
|
|
arm_func_start sub_03803114
|
|
sub_03803114: ; 0x03803114
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
b _03803138
|
|
_03803130:
|
|
add r0, r7, #0xf4
|
|
bl sub_037FC290
|
|
_03803138:
|
|
ldr r0, [r7, #0xfc]
|
|
tst r0, #4
|
|
bne _03803130
|
|
ldr r1, [r7, #0xfc]
|
|
mov r0, r4
|
|
orr r1, r1, #4
|
|
str r1, [r7, #0xfc]
|
|
str r6, [r7, #0x3c]
|
|
str r5, [r7, #0x40]
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
arm_func_end sub_03803114
|
|
|
|
arm_func_start sub_03803168
|
|
sub_03803168: ; 0x03803168
|
|
stmdb sp!, {r3, lr}
|
|
ldr ip, _038031C8 ; =_03809060
|
|
ldr r0, [ip, #0xfc]
|
|
cmp r0, #0
|
|
bne _038031C0
|
|
ldr r0, _038031CC ; =_03809680
|
|
mov r2, #0
|
|
sub r1, r2, #1
|
|
mov r3, #1
|
|
str r3, [ip, #0xfc]
|
|
str r2, [ip, #0x28]
|
|
str r2, [ip, #0x24]
|
|
str r2, [ip, #0x20]
|
|
str r1, [ip, #0x2c]
|
|
str r2, [ip, #0x3c]
|
|
str r2, [ip, #0x40]
|
|
str r2, [r0]
|
|
bl sub_03802624
|
|
ldr r1, _038031D0 ; =sub_03803090
|
|
ldr r0, _038031CC ; =_03809680
|
|
str r1, [r0, #0x20]
|
|
bl sub_038034EC
|
|
_038031C0:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038031C8: .word _03809060
|
|
_038031CC: .word _03809680
|
|
_038031D0: .word sub_03803090
|
|
arm_func_end sub_03803168
|
|
|
|
arm_func_start sub_038031D4
|
|
sub_038031D4: ; 0x038031D4
|
|
stmdb sp!, {r3, lr}
|
|
cmp r0, #0xb
|
|
bne _038032AC
|
|
cmp r2, #0
|
|
beq _038032AC
|
|
ldr r0, _038032B4 ; =_03809060
|
|
ldr r2, [r0, #8]
|
|
cmp r2, #0
|
|
streq r1, [r0, #4]
|
|
ldr r2, [r0, #4]
|
|
cmp r2, #0xf
|
|
addls pc, pc, r2, lsl #2
|
|
b _03803278
|
|
_03803208: ; jump table
|
|
b _03803248 ; case 0
|
|
b _03803278 ; case 1
|
|
b _0380326C ; case 2
|
|
b _0380326C ; case 3
|
|
b _0380326C ; case 4
|
|
b _0380326C ; case 5
|
|
b _0380326C ; case 6
|
|
b _0380326C ; case 7
|
|
b _0380326C ; case 8
|
|
b _0380326C ; case 9
|
|
b _0380326C ; case 10
|
|
b _0380326C ; case 11
|
|
b _0380326C ; case 12
|
|
b _0380326C ; case 13
|
|
b _0380326C ; case 14
|
|
b _0380326C ; case 15
|
|
_03803248:
|
|
ldr r2, [r0, #8]
|
|
cmp r2, #0
|
|
beq _03803278
|
|
cmp r2, #1
|
|
ldreq r2, [r0, #0xfc]
|
|
streq r1, [r0]
|
|
orreq r1, r2, #0x10
|
|
streq r1, [r0, #0xfc]
|
|
b _03803278
|
|
_0380326C:
|
|
ldr r1, [r0, #0xfc]
|
|
orr r1, r1, #0x10
|
|
str r1, [r0, #0xfc]
|
|
_03803278:
|
|
ldr r1, [r0, #0xfc]
|
|
tst r1, #0x10
|
|
ldreq r1, [r0, #8]
|
|
addeq r1, r1, #1
|
|
streq r1, [r0, #8]
|
|
beq _038032AC
|
|
ldr r1, [r0, #0xfc]
|
|
mov r2, #0
|
|
str r2, [r0, #8]
|
|
tst r1, #4
|
|
ldrne r0, [r0, #0xec]
|
|
addeq r0, r0, #0x48
|
|
bl sub_037FC36C
|
|
_038032AC:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038032B4: .word _03809060
|
|
arm_func_end sub_038031D4
|
|
|
|
arm_func_start sub_038032B8
|
|
sub_038032B8: ; 0x038032B8
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r4, _038034E8 ; =_03809060
|
|
_038032C0:
|
|
mov r5, #0
|
|
bl EnableIrqFlag
|
|
mov r6, r0
|
|
add r8, r4, #0x48
|
|
mov r7, r5
|
|
_038032D4:
|
|
ldr r0, [r4, #0xfc]
|
|
tst r0, #4
|
|
bne _0380330C
|
|
ldr r0, [r4, #0xfc]
|
|
tst r0, #0x10
|
|
beq _03803318
|
|
ldr r0, [r4, #0xfc]
|
|
mov r5, #1
|
|
orr r0, r0, #4
|
|
str r0, [r4, #0xfc]
|
|
ldr r0, [r4, #0xfc]
|
|
bic r0, r0, #0x10
|
|
str r0, [r4, #0xfc]
|
|
b _03803328
|
|
_0380330C:
|
|
ldr r0, [r4, #0xfc]
|
|
tst r0, #8
|
|
bne _03803328
|
|
_03803318:
|
|
mov r0, r7
|
|
str r8, [r4, #0xec]
|
|
bl sub_037FC290
|
|
b _038032D4
|
|
_03803328:
|
|
mov r0, r6
|
|
bl SetIrqFlag
|
|
cmp r5, #0
|
|
beq _038034D4
|
|
ldr r0, [r4]
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldr r3, [r4]
|
|
ldr r2, [r4, #4]
|
|
ldr r1, [r3, #0x58]
|
|
mov r0, #1
|
|
tst r1, r0, lsl r2
|
|
moveq r0, #3
|
|
streq r0, [r3]
|
|
beq _03803478
|
|
cmp r2, #0xf
|
|
addls pc, pc, r2, lsl #2
|
|
b _03803470
|
|
_03803370: ; jump table
|
|
b _03803478 ; case 0
|
|
b _03803478 ; case 1
|
|
b _038033B0 ; case 2
|
|
b _038033B8 ; case 3
|
|
b _038033C8 ; case 4
|
|
b _03803470 ; case 5
|
|
b _038033D4 ; case 6
|
|
b _038033E8 ; case 7
|
|
b _038033FC ; case 8
|
|
b _03803410 ; case 9
|
|
b _03803470 ; case 10
|
|
b _03803424 ; case 11
|
|
b _03803444 ; case 12
|
|
b _0380344C ; case 13
|
|
b _03803460 ; case 14
|
|
b _03803434 ; case 15
|
|
_038033B0:
|
|
bl sub_03802AAC
|
|
b _03803478
|
|
_038033B8:
|
|
bl sub_03803094
|
|
ldr r1, [r4]
|
|
str r0, [r1, #8]
|
|
b _03803478
|
|
_038033C8:
|
|
mov r0, #3
|
|
str r0, [r3]
|
|
b _03803478
|
|
_038033D4:
|
|
ldr r0, [r3, #0xc]
|
|
ldr r1, [r3, #0x10]
|
|
ldr r2, [r3, #0x14]
|
|
bl sub_03802B04
|
|
b _03803478
|
|
_038033E8:
|
|
ldr r0, [r3, #0x10]
|
|
ldr r1, [r3, #0xc]
|
|
ldr r2, [r3, #0x14]
|
|
bl sub_03802C28
|
|
b _03803478
|
|
_038033FC:
|
|
ldr r0, [r3, #0x10]
|
|
ldr r1, [r3, #0xc]
|
|
ldr r2, [r3, #0x14]
|
|
bl sub_03802B70
|
|
b _03803478
|
|
_03803410:
|
|
ldr r0, [r3, #0x10]
|
|
ldr r1, [r3, #0xc]
|
|
ldr r2, [r3, #0x14]
|
|
bl sub_03802CE0
|
|
b _03803478
|
|
_03803424:
|
|
ldr r0, [r3, #0x10]
|
|
ldr r1, [r3, #0x14]
|
|
bl sub_03802D70
|
|
b _03803478
|
|
_03803434:
|
|
ldr r0, [r3, #0x10]
|
|
ldr r1, [r3, #0x14]
|
|
bl sub_03802E0C
|
|
b _03803478
|
|
_03803444:
|
|
bl sub_03802EA8
|
|
b _03803478
|
|
_0380344C:
|
|
bl sub_038027D0
|
|
ldr r1, [r4]
|
|
ldr r1, [r1, #0x10]
|
|
strb r0, [r1]
|
|
b _03803478
|
|
_03803460:
|
|
ldr r0, [r3, #0xc]
|
|
ldrb r0, [r0]
|
|
bl sub_03802F04
|
|
b _03803478
|
|
_03803470:
|
|
mov r0, #3
|
|
str r0, [r3]
|
|
_03803478:
|
|
mov r6, #0xb
|
|
mov r5, #1
|
|
_03803480:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r5
|
|
bl sub_037FE410
|
|
cmp r0, #0
|
|
blt _03803480
|
|
bl EnableIrqFlag
|
|
ldr r1, [r4, #0xfc]
|
|
mov r5, r0
|
|
bic r0, r1, #0x4c
|
|
str r0, [r4, #0xfc]
|
|
add r0, r4, #0xf4
|
|
bl sub_037FC2E4
|
|
ldr r0, [r4, #0xfc]
|
|
tst r0, #0x10
|
|
beq _038034C8
|
|
add r0, r4, #0x48
|
|
bl sub_037FC36C
|
|
_038034C8:
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
b _038032C0
|
|
_038034D4:
|
|
ldr r1, [r4, #0x44]
|
|
mov r0, r4
|
|
mov lr, pc
|
|
bx r1
|
|
_038034E4:
|
|
b _038032C0
|
|
.align 2, 0
|
|
_038034E8: .word _03809060
|
|
arm_func_end sub_038032B8
|
|
|
|
arm_func_start sub_038034EC
|
|
sub_038034EC: ; 0x038034EC
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r0, _0380353C ; =_038098C0
|
|
ldr r1, [r0, #8]
|
|
cmp r1, #0
|
|
bne _03803534
|
|
mov r1, #1
|
|
str r1, [r0, #8]
|
|
bl sub_037FE2B4
|
|
mov r5, #0xe
|
|
mov r4, #0
|
|
_03803514:
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_037FE3EC
|
|
cmp r0, #0
|
|
beq _03803514
|
|
ldr r1, _03803540 ; =sub_03803544
|
|
mov r0, #0xe
|
|
bl sub_037FE39C
|
|
_03803534:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0380353C: .word _038098C0
|
|
_03803540: .word sub_03803544
|
|
arm_func_end sub_038034EC
|
|
|
|
arm_func_start sub_03803544
|
|
sub_03803544: ; 0x03803544
|
|
stmdb sp!, {r4, lr}
|
|
and r0, r1, #0x3f
|
|
cmp r0, #1
|
|
bne _0380359C
|
|
mov r0, #0
|
|
bl sub_037FDEF4
|
|
mov r0, #1
|
|
bl sub_037FDEF4
|
|
mov r0, #2
|
|
bl sub_037FDEF4
|
|
mov r0, #3
|
|
bl sub_037FDEF4
|
|
mov r0, #0
|
|
bl sub_03806610
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
bl sub_037FE708
|
|
bl sub_0380528C
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
bl sub_037FDE70
|
|
b _038035A0
|
|
_0380359C:
|
|
bl sub_037FDE70
|
|
_038035A0:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_03803544
|
|
|
|
arm_func_start sub_038035A8
|
|
sub_038035A8: ; 0x038035A8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _038035E8 ; =_038098C0
|
|
ldr r0, [r0, #0xc]
|
|
cmp r0, #0
|
|
bne _038035D8
|
|
ldr r0, _038035EC ; =0x027FFE1F
|
|
ldrb r0, [r0]
|
|
tst r0, #0x80
|
|
beq _038035D4
|
|
bl sub_038035F0
|
|
b _038035D8
|
|
_038035D4:
|
|
bl sub_03803690
|
|
_038035D8:
|
|
ldr r0, _038035E8 ; =_038098C0
|
|
ldr r0, [r0, #0xc]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038035E8: .word _038098C0
|
|
_038035EC: .word 0x027FFE1F
|
|
arm_func_end sub_038035A8
|
|
|
|
arm_func_start sub_038035F0
|
|
sub_038035F0: ; 0x038035F0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, #1
|
|
bl sub_037FBBFC
|
|
mov r4, r0
|
|
mvn r0, #2
|
|
cmp r4, r0
|
|
beq _03803668
|
|
mov r0, r4, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_037FBBCC
|
|
cmp r0, #0
|
|
bne _0380365C
|
|
ldr r1, _03803688 ; =0x027FFC10
|
|
ldrh r0, [r1]
|
|
cmp r0, #0
|
|
subeq r0, r1, #0x410
|
|
subne r0, r1, #0x10
|
|
ldr r0, [r0]
|
|
str r0, [sp]
|
|
bl sub_038030E4
|
|
ldr r1, [sp]
|
|
cmp r0, r1
|
|
mov r0, r4, lsl #0x10
|
|
moveq r5, #1
|
|
mov r0, r0, lsr #0x10
|
|
movne r5, #0
|
|
bl sub_037FBBAC
|
|
_0380365C:
|
|
mov r0, r4, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_037FBCA4
|
|
_03803668:
|
|
ldr r1, _0380368C ; =_038098C0
|
|
cmp r5, #0
|
|
moveq r2, #1
|
|
movne r2, #0
|
|
str r2, [r1, #0xc]
|
|
mov r0, r5
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03803688: .word 0x027FFC10
|
|
_0380368C: .word _038098C0
|
|
arm_func_end sub_038035F0
|
|
|
|
arm_func_start sub_03803690
|
|
sub_03803690: ; 0x03803690
|
|
ldr r0, _038036B4 ; =0x04000214
|
|
mov r2, #1
|
|
ldr r1, [r0]
|
|
mov r0, r2
|
|
tst r1, #0x100000
|
|
ldrne r1, _038036B8 ; =_038098C0
|
|
movne r0, #0
|
|
strne r2, [r1, #0xc]
|
|
bx lr
|
|
.align 2, 0
|
|
_038036B4: .word 0x04000214
|
|
_038036B8: .word _038098C0
|
|
arm_func_end sub_03803690
|
|
|
|
arm_func_start sub_038036BC
|
|
sub_038036BC: ; 0x038036BC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r0, _038037A8 ; =_038098C0
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
bne _038037A0
|
|
ldr r2, _038037AC ; =0x027FFC40
|
|
ldrh r0, [r2]
|
|
cmp r0, #2
|
|
beq _038037A0
|
|
ldr r1, _038037B0 ; =_03807564
|
|
mvn r0, #0
|
|
ldr r3, [r1]
|
|
cmp r3, r0
|
|
ldreq r0, [r2, #-4]
|
|
addeq r0, r0, #0xa
|
|
streq r0, [r1]
|
|
beq _038037A0
|
|
ldr r0, [r2, #-4]!
|
|
cmp r0, r3
|
|
blo _038037A0
|
|
ldr r0, [r2]
|
|
add r0, r0, #0xa
|
|
str r0, [r1]
|
|
bl sub_038035A8
|
|
cmp r0, #0
|
|
beq _03803750
|
|
ldr r0, _038037A8 ; =_038098C0
|
|
mov r1, #1
|
|
str r1, [r0, #4]
|
|
bl sub_03802720
|
|
ldr r0, [r0, #0xc]
|
|
cmp r0, #0
|
|
bne _03803750
|
|
ldr r0, _038037B0 ; =_03807564
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
bne _038037A0
|
|
_03803750:
|
|
ldr r0, _038037A8 ; =_038098C0
|
|
ldr r1, _038037B0 ; =_03807564
|
|
ldr r0, [r0, #4]
|
|
mov r2, #0
|
|
str r2, [r1, #4]
|
|
cmp r0, #0
|
|
beq _038037A0
|
|
mov r7, #0x64
|
|
mov r6, #0xe
|
|
mov r5, #0x11
|
|
mov r4, r2
|
|
b _03803788
|
|
_03803780:
|
|
mov r0, r7
|
|
bl sub_037FBA0C
|
|
_03803788:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl sub_037FE410
|
|
cmp r0, #0
|
|
bne _03803780
|
|
_038037A0:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038037A8: .word _038098C0
|
|
_038037AC: .word 0x027FFC40
|
|
_038037B0: .word _03807564
|
|
arm_func_end sub_038036BC
|
|
|
|
thumb_func_start sub_038037B4
|
|
sub_038037B4: ; 0x038037B4
|
|
swi 0
|
|
bx lr
|
|
thumb_func_end sub_038037B4
|
|
|
|
thumb_func_start sub_038037B8
|
|
sub_038037B8: ; 0x038037B8
|
|
swi 3
|
|
bx lr
|
|
thumb_func_end sub_038037B8
|
|
|
|
thumb_func_start sub_038037BC
|
|
sub_038037BC: ; 0x038037BC
|
|
ldr r2, _038037C8 ; =0x04000000
|
|
mov ip, r2
|
|
mov r2, #0
|
|
swi 4
|
|
bx lr
|
|
.align 2, 0
|
|
_038037C8: .word 0x04000000
|
|
thumb_func_end sub_038037BC
|
|
|
|
thumb_func_start sub_038037CC
|
|
sub_038037CC: ; 0x038037CC
|
|
mov r2, #0
|
|
swi 5
|
|
bx lr
|
|
thumb_func_end sub_038037CC
|
|
|
|
non_word_aligned_thumb_func_start sub_038037D2
|
|
sub_038037D2: ; 0x038037D2
|
|
swi 6
|
|
bx lr
|
|
thumb_func_end sub_038037D2
|
|
|
|
non_word_aligned_thumb_func_start sub_038037D6
|
|
sub_038037D6: ; 0x038037D6
|
|
swi 7
|
|
bx lr
|
|
thumb_func_end sub_038037D6
|
|
|
|
non_word_aligned_thumb_func_start sub_038037DA
|
|
sub_038037DA: ; 0x038037DA
|
|
swi 8
|
|
bx lr
|
|
thumb_func_end sub_038037DA
|
|
|
|
non_word_aligned_thumb_func_start sub_038037DE
|
|
sub_038037DE: ; 0x038037DE
|
|
add r1, r0, #0
|
|
mov r0, #1
|
|
swi 8
|
|
bx lr
|
|
thumb_func_end sub_038037DE
|
|
|
|
non_word_aligned_thumb_func_start sub_038037E6
|
|
sub_038037E6: ; 0x038037E6
|
|
add r1, r0, #0
|
|
mov r0, #0
|
|
swi 8
|
|
bx lr
|
|
thumb_func_end sub_038037E6
|
|
|
|
non_word_aligned_thumb_func_start sub_038037EE
|
|
sub_038037EE: ; 0x038037EE
|
|
swi 9
|
|
bx lr
|
|
thumb_func_end sub_038037EE
|
|
|
|
non_word_aligned_thumb_func_start sub_038037F2
|
|
sub_038037F2: ; 0x038037F2
|
|
swi 9
|
|
add r0, r1, #0
|
|
bx lr
|
|
thumb_func_end sub_038037F2
|
|
|
|
thumb_func_start sub_038037F8
|
|
sub_038037F8: ; 0x038037F8
|
|
swi 0xb
|
|
bx lr
|
|
thumb_func_end sub_038037F8
|
|
|
|
thumb_func_start sub_038037FC
|
|
sub_038037FC: ; 0x038037FC
|
|
swi 0xc
|
|
bx lr
|
|
thumb_func_end sub_038037FC
|
|
|
|
thumb_func_start sub_03803800
|
|
sub_03803800: ; 0x03803800
|
|
swi 0xd
|
|
bx lr
|
|
thumb_func_end sub_03803800
|
|
|
|
thumb_func_start sub_03803804
|
|
sub_03803804: ; 0x03803804
|
|
swi 0xe
|
|
bx lr
|
|
thumb_func_end sub_03803804
|
|
|
|
thumb_func_start sub_03803808
|
|
sub_03803808: ; 0x03803808
|
|
swi 0xf
|
|
bx lr
|
|
thumb_func_end sub_03803808
|
|
|
|
thumb_func_start sub_0380380C
|
|
sub_0380380C: ; 0x0380380C
|
|
swi 0x10
|
|
bx lr
|
|
thumb_func_end sub_0380380C
|
|
|
|
thumb_func_start sub_03803810
|
|
sub_03803810: ; 0x03803810
|
|
swi 0x11
|
|
bx lr
|
|
thumb_func_end sub_03803810
|
|
|
|
thumb_func_start sub_03803814
|
|
sub_03803814: ; 0x03803814
|
|
swi 0x12
|
|
bx lr
|
|
thumb_func_end sub_03803814
|
|
|
|
thumb_func_start sub_03803818
|
|
sub_03803818: ; 0x03803818
|
|
swi 0x13
|
|
bx lr
|
|
thumb_func_end sub_03803818
|
|
|
|
thumb_func_start sub_0380381C
|
|
sub_0380381C: ; 0x0380381C
|
|
swi 0x14
|
|
bx lr
|
|
thumb_func_end sub_0380381C
|
|
|
|
thumb_func_start sub_03803820
|
|
sub_03803820: ; 0x03803820
|
|
swi 0x15
|
|
bx lr
|
|
thumb_func_end sub_03803820
|
|
|
|
thumb_func_start sub_03803824
|
|
sub_03803824: ; 0x03803824
|
|
swi 0x1a
|
|
bx lr
|
|
thumb_func_end sub_03803824
|
|
|
|
thumb_func_start sub_03803828
|
|
sub_03803828: ; 0x03803828
|
|
swi 0x1b
|
|
bx lr
|
|
thumb_func_end sub_03803828
|
|
|
|
thumb_func_start sub_0380382C
|
|
sub_0380382C: ; 0x0380382C
|
|
swi 0x1c
|
|
bx lr
|
|
thumb_func_end sub_0380382C
|
|
|
|
arm_func_start sub_03803830
|
|
sub_03803830: ; 0x03803830
|
|
ldr r1, _03803868 ; =0x55555555
|
|
ldr r2, _0380386C ; =0x33333333
|
|
and r1, r1, r0, lsr #1
|
|
sub r1, r0, r1
|
|
ldr r0, _03803870 ; =0x0F0F0F0F
|
|
and r3, r1, r2
|
|
and r1, r2, r1, lsr #2
|
|
add r1, r3, r1
|
|
add r1, r1, r1, lsr #4
|
|
and r0, r1, r0
|
|
add r0, r0, r0, lsr #8
|
|
add r0, r0, r0, lsr #16
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_03803868: .word 0x55555555
|
|
_0380386C: .word 0x33333333
|
|
_03803870: .word 0x0F0F0F0F
|
|
arm_func_end sub_03803830
|
|
|
|
arm_func_start sub_03803874
|
|
sub_03803874: ; 0x03803874
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #8
|
|
ldr r1, _03803970 ; =_038098D0
|
|
mov r4, r0
|
|
ldrh r0, [r1]
|
|
cmp r0, #0
|
|
bne _03803964
|
|
mov r0, #1
|
|
strh r0, [r1]
|
|
mov r0, #0
|
|
str r0, [r1, #4]
|
|
mov r0, #5
|
|
str r0, [r1, #8]
|
|
bl sub_03803D50
|
|
bl sub_027F4FAC
|
|
bl sub_03805360
|
|
bl sub_038048A4
|
|
bl sub_037FE2B4
|
|
ldr r1, _03803974 ; =sub_03803CE8
|
|
mov r0, #6
|
|
bl sub_037FE39C
|
|
ldr r1, _03803974 ; =sub_03803CE8
|
|
mov r0, #9
|
|
bl sub_037FE39C
|
|
ldr r1, _03803974 ; =sub_03803CE8
|
|
mov r0, #8
|
|
bl sub_037FE39C
|
|
ldr r1, _03803974 ; =sub_03803CE8
|
|
mov r0, #4
|
|
bl sub_037FE39C
|
|
ldr r0, _03803978 ; =_03809B80
|
|
ldr r1, _0380397C ; =_03809BA0
|
|
mov r2, #0x10
|
|
bl sub_037FC6AC
|
|
mov sb, #0
|
|
mov r6, #0x18
|
|
ldr r8, _03803980 ; =_03809BE0
|
|
mov r7, sb
|
|
mov r5, r6
|
|
_03803910:
|
|
mla r0, sb, r5, r8
|
|
mov r1, r7
|
|
mov r2, r6
|
|
bl sub_037FE070
|
|
add sb, sb, #1
|
|
cmp sb, #0x10
|
|
blt _03803910
|
|
ldr r0, _03803970 ; =_038098D0
|
|
mov r2, #0
|
|
str r2, [r0, #0x490]
|
|
str r2, [r0, #0x498]
|
|
str r2, [r0, #0x494]
|
|
mov r0, #0x200
|
|
str r0, [sp]
|
|
ldr r0, _03803984 ; =_038098DC
|
|
ldr r1, _03803988 ; =sub_03803C7C
|
|
ldr r3, _03803978 ; =_03809B80
|
|
str r4, [sp, #4]
|
|
bl sub_037FC054
|
|
ldr r0, _03803984 ; =_038098DC
|
|
bl sub_037FC36C
|
|
_03803964:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03803970: .word _038098D0
|
|
_03803974: .word sub_03803CE8
|
|
_03803978: .word _03809B80
|
|
_0380397C: .word _03809BA0
|
|
_03803980: .word _03809BE0
|
|
_03803984: .word _038098DC
|
|
_03803988: .word sub_03803C7C
|
|
arm_func_end sub_03803874
|
|
|
|
arm_func_start sub_0380398C
|
|
sub_0380398C: ; 0x0380398C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r5, _038039E0 ; =_03809D64
|
|
ldr r4, _038039E4 ; =_038098D0
|
|
mov r6, r0
|
|
_0380399C:
|
|
bl EnableIrqFlag
|
|
ldr r1, [r4, #4]
|
|
cmp r1, #0
|
|
beq _038039BC
|
|
bl SetIrqFlag
|
|
mov r0, r5
|
|
bl sub_037FC290
|
|
b _0380399C
|
|
_038039BC:
|
|
ldr r1, _038039E4 ; =_038098D0
|
|
mov r2, #1
|
|
str r2, [r1, #4]
|
|
mov r2, #4
|
|
str r2, [r1, #8]
|
|
str r6, [r1, #0x49c]
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038039E0: .word _03809D64
|
|
_038039E4: .word _038098D0
|
|
arm_func_end sub_0380398C
|
|
|
|
arm_func_start sub_038039E8
|
|
sub_038039E8: ; 0x038039E8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _03803A40 ; =_038098D0
|
|
ldr r2, [r1, #4]
|
|
cmp r2, #0
|
|
beq _03803A38
|
|
ldr r2, [r1, #8]
|
|
cmp r2, #4
|
|
ldreq r1, [r1, #0x49c]
|
|
cmpeq r1, r0
|
|
bne _03803A38
|
|
bl EnableIrqFlag
|
|
ldr r1, _03803A40 ; =_038098D0
|
|
mov r2, #5
|
|
str r2, [r1, #8]
|
|
mov r2, #0
|
|
str r2, [r1, #4]
|
|
str r2, [r1, #0x49c]
|
|
bl SetIrqFlag
|
|
ldr r0, _03803A44 ; =_03809D64
|
|
bl sub_037FC2E4
|
|
_03803A38:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03803A40: .word _038098D0
|
|
_03803A44: .word _03809D64
|
|
arm_func_end sub_038039E8
|
|
|
|
arm_func_start sub_03803A48
|
|
sub_03803A48: ; 0x03803A48
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
and r2, r0, #0x70
|
|
cmp r2, #0x30
|
|
bgt _03803A80
|
|
bge _03803ACC
|
|
cmp r2, #0x10
|
|
bgt _03803A74
|
|
bge _03803AB4
|
|
cmp r2, #0
|
|
beq _03803AB4
|
|
b _03803AD0
|
|
_03803A74:
|
|
cmp r2, #0x20
|
|
beq _03803ACC
|
|
b _03803AD0
|
|
_03803A80:
|
|
cmp r2, #0x50
|
|
bgt _03803A98
|
|
bge _03803ABC
|
|
cmp r2, #0x40
|
|
beq _03803ABC
|
|
b _03803AD0
|
|
_03803A98:
|
|
cmp r2, #0x60
|
|
bgt _03803AA8
|
|
beq _03803AC4
|
|
b _03803AD0
|
|
_03803AA8:
|
|
cmp r2, #0x70
|
|
beq _03803AC4
|
|
b _03803AD0
|
|
_03803AB4:
|
|
mov r4, #6
|
|
b _03803AD0
|
|
_03803ABC:
|
|
mov r4, #9
|
|
b _03803AD0
|
|
_03803AC4:
|
|
mov r4, #8
|
|
b _03803AD0
|
|
_03803ACC:
|
|
mov r4, #4
|
|
_03803AD0:
|
|
and r0, r0, #0xff
|
|
orr r0, r0, #0x80
|
|
mov r0, r0, lsl #8
|
|
orr r2, r0, #0x3000000
|
|
and r0, r1, #0xff
|
|
orr r6, r2, r0
|
|
mov r5, #0
|
|
_03803AEC:
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl sub_037FE410
|
|
cmp r0, #0
|
|
blt _03803AEC
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
arm_func_end sub_03803A48
|
|
|
|
arm_func_start sub_03803B0C
|
|
sub_03803B0C: ; 0x03803B0C
|
|
ldr r0, _03803B24 ; =_038098D0
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_03803B24: .word _038098D0
|
|
arm_func_end sub_03803B0C
|
|
|
|
arm_func_start sub_03803B28
|
|
sub_03803B28: ; 0x03803B28
|
|
ldr r1, _03803B3C ; =_038098D0
|
|
mov r2, #1
|
|
str r2, [r1, #4]
|
|
str r0, [r1, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_03803B3C: .word _038098D0
|
|
arm_func_end sub_03803B28
|
|
|
|
arm_func_start sub_03803B40
|
|
sub_03803B40: ; 0x03803B40
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _03803B74 ; =_038098D0
|
|
ldr r2, [r1, #8]
|
|
cmp r2, r0
|
|
bne _03803B6C
|
|
ldr r0, _03803B78 ; =_03809D64
|
|
mov r2, #5
|
|
str r2, [r1, #8]
|
|
mov r2, #0
|
|
str r2, [r1, #4]
|
|
bl sub_037FC2E4
|
|
_03803B6C:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03803B74: .word _038098D0
|
|
_03803B78: .word _03809D64
|
|
arm_func_end sub_03803B40
|
|
|
|
arm_func_start sub_03803B7C
|
|
sub_03803B7C: ; 0x03803B7C
|
|
stmdb sp!, {r0, r1, r2, r3}
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldrh r2, [sp, #0x18]
|
|
mov r5, r0
|
|
cmp r2, #4
|
|
mov r4, r1
|
|
movhi r0, #0
|
|
bhi _03803C3C
|
|
bl EnableIrqFlag
|
|
ldr r3, _03803C48 ; =_038098D0
|
|
add r2, sp, #0x18
|
|
ldr ip, [r3, #0x490]
|
|
mov r1, #0x18
|
|
mul r6, ip, r1
|
|
ldr lr, _03803C4C ; =_03809BE0
|
|
ldr ip, _03803C50 ; =_03809BE4
|
|
str r5, [lr, r6]
|
|
ldr r5, [r3, #0x490]
|
|
bic r2, r2, #3
|
|
mul lr, r5, r1
|
|
str r4, [ip, lr]
|
|
add r6, r2, #4
|
|
ldrh r1, [sp, #0x18]
|
|
ldr r5, _03803C54 ; =_038098D4
|
|
mov lr, #0
|
|
mov r2, #0x18
|
|
b _03803C04
|
|
_03803BE8:
|
|
ldr ip, [r3, #0x490]
|
|
add r6, r6, #4
|
|
mla r4, ip, r2, r5
|
|
add r4, r4, lr, lsl #2
|
|
ldr ip, [r6, #-4]
|
|
add lr, lr, #1
|
|
str ip, [r4, #0x314]
|
|
_03803C04:
|
|
cmp lr, r1
|
|
blt _03803BE8
|
|
ldr r1, _03803C48 ; =_038098D0
|
|
ldr r4, [r1, #0x490]
|
|
add r2, r4, #1
|
|
and r2, r2, #0xf
|
|
str r2, [r1, #0x490]
|
|
bl SetIrqFlag
|
|
ldr r1, _03803C4C ; =_03809BE0
|
|
mov r0, #0x18
|
|
mla r1, r4, r0, r1
|
|
ldr r0, _03803C58 ; =_03809B80
|
|
mov r2, #0
|
|
bl sub_037FC6D4
|
|
_03803C3C:
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.align 2, 0
|
|
_03803C48: .word _038098D0
|
|
_03803C4C: .word _03809BE0
|
|
_03803C50: .word _03809BE4
|
|
_03803C54: .word _038098D4
|
|
_03803C58: .word _03809B80
|
|
arm_func_end sub_03803B7C
|
|
|
|
arm_func_start sub_03803C5C
|
|
sub_03803C5C: ; 0x03803C5C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _03803C78 ; =_03809B80
|
|
add r1, sp, #0
|
|
mov r2, #0
|
|
bl sub_037FC7FC
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03803C78: .word _03809B80
|
|
arm_func_end sub_03803C5C
|
|
|
|
arm_func_start sub_03803C7C
|
|
sub_03803C7C: ; 0x03803C7C
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
ldr r6, _03803CE4 ; =_03809B80
|
|
add r5, sp, #0
|
|
mov r4, #1
|
|
_03803C90:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl sub_037FC760
|
|
ldr r0, [sp]
|
|
ldr r1, [r0]
|
|
cmp r1, #3
|
|
addls pc, pc, r1, lsl #2
|
|
b _03803C90
|
|
_03803CB4: ; jump table
|
|
b _03803CC4 ; case 0
|
|
b _03803CDC ; case 1
|
|
b _03803CCC ; case 2
|
|
b _03803CD4 ; case 3
|
|
_03803CC4:
|
|
bl sub_03804048
|
|
b _03803C90
|
|
_03803CCC:
|
|
bl sub_03805714
|
|
b _03803C90
|
|
_03803CD4:
|
|
bl sub_03804A9C
|
|
b _03803C90
|
|
_03803CDC:
|
|
bl sub_027F517C
|
|
b _03803C90
|
|
.align 2, 0
|
|
_03803CE4: .word _03809B80
|
|
arm_func_end sub_03803C7C
|
|
|
|
arm_func_start sub_03803CE8
|
|
sub_03803CE8: ; 0x03803CE8
|
|
stmdb sp!, {r3, lr}
|
|
cmp r2, #0
|
|
bne _03803D48
|
|
sub r0, r0, #4
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _03803D48
|
|
_03803D04: ; jump table
|
|
b _03803D40 ; case 0
|
|
b _03803D48 ; case 1
|
|
b _03803D1C ; case 2
|
|
b _03803D48 ; case 3
|
|
b _03803D34 ; case 4
|
|
b _03803D28 ; case 5
|
|
_03803D1C:
|
|
mov r0, r1
|
|
bl sub_03803E60
|
|
b _03803D48
|
|
_03803D28:
|
|
mov r0, r1
|
|
bl sub_038053A8
|
|
b _03803D48
|
|
_03803D34:
|
|
mov r0, r1
|
|
bl sub_038048E0
|
|
b _03803D48
|
|
_03803D40:
|
|
mov r0, r1
|
|
bl sub_027F4FD4
|
|
_03803D48:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
arm_func_end sub_03803CE8
|
|
|
|
arm_func_start sub_03803D50
|
|
sub_03803D50: ; 0x03803D50
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r0, _03803E1C ; =_03809D70
|
|
mov r3, #0
|
|
str r3, [r0, #0x24]
|
|
mov r1, #0x14
|
|
str r1, [r0, #0x28]
|
|
str r1, [r0, #0x2c]
|
|
ldr r0, _03803E20 ; =_03809D74
|
|
mov r2, r3
|
|
_03803D74:
|
|
mov r1, r3, lsl #1
|
|
add r3, r3, #1
|
|
strh r2, [r0, r1]
|
|
cmp r3, #0x10
|
|
blt _03803D74
|
|
bl sub_037FD798
|
|
cmp r0, #0
|
|
bne _03803D98
|
|
bl sub_037FD74C
|
|
_03803D98:
|
|
ldr r7, _03803E24 ; =_03809DA0
|
|
ldr r5, _03803E28 ; =0x54505641
|
|
mov r8, #0
|
|
mov r4, #0x28
|
|
_03803DA8:
|
|
mul r6, r8, r4
|
|
add r0, r7, r6
|
|
bl sub_037FD884
|
|
mov r1, r5
|
|
add r0, r7, r6
|
|
bl sub_037FDA14
|
|
add r8, r8, #1
|
|
cmp r8, #4
|
|
blt _03803DA8
|
|
ldr r2, _03803E2C ; =0x040001C0
|
|
_03803DD0:
|
|
ldrh r0, [r2]
|
|
tst r0, #0x80
|
|
bne _03803DD0
|
|
ldr r1, _03803E30 ; =0x00008A01
|
|
ldr r0, _03803E34 ; =0x040001C2
|
|
strh r1, [r2]
|
|
mov r1, #0x84
|
|
strh r1, [r0]
|
|
sub r1, r0, #2
|
|
_03803DF4:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _03803DF4
|
|
bl sub_03803E3C
|
|
ldr r1, _03803E38 ; =0x00008201
|
|
ldr r0, _03803E2C ; =0x040001C0
|
|
strh r1, [r0]
|
|
bl sub_03803E3C
|
|
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03803E1C: .word _03809D70
|
|
_03803E20: .word _03809D74
|
|
_03803E24: .word _03809DA0
|
|
_03803E28: .word 0x54505641
|
|
_03803E2C: .word 0x040001C0
|
|
_03803E30: .word 0x00008A01
|
|
_03803E34: .word 0x040001C2
|
|
_03803E38: .word 0x00008201
|
|
arm_func_end sub_03803D50
|
|
|
|
arm_func_start sub_03803E3C
|
|
sub_03803E3C: ; 0x03803E3C
|
|
ldr r0, _03803E5C ; =0x040001C2
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
sub r1, r0, #2
|
|
_03803E4C:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _03803E4C
|
|
bx lr
|
|
.align 2, 0
|
|
_03803E5C: .word 0x040001C2
|
|
arm_func_end sub_03803E3C
|
|
|
|
arm_func_start sub_03803E60
|
|
sub_03803E60: ; 0x03803E60
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
tst r0, #0x2000000
|
|
beq _03803E90
|
|
ldr r1, _0380403C ; =_03809D74
|
|
mov r4, #0
|
|
mov r3, r4
|
|
_03803E7C:
|
|
mov r2, r4, lsl #1
|
|
add r4, r4, #1
|
|
strh r3, [r1, r2]
|
|
cmp r4, #0x10
|
|
blt _03803E7C
|
|
_03803E90:
|
|
ldr r1, _0380403C ; =_03809D74
|
|
and r2, r0, #0xf0000
|
|
mov r2, r2, lsr #0x10
|
|
mov r2, r2, lsl #1
|
|
strh r0, [r1, r2]
|
|
tst r0, #0x1000000
|
|
beq _03804030
|
|
ldr r2, _03804040 ; =_03809D70
|
|
ldrh r1, [r2, #4]
|
|
and r0, r1, #0xff00
|
|
mov r0, r0, lsl #8
|
|
mov r4, r0, lsr #0x10
|
|
cmp r4, #3
|
|
addls pc, pc, r4, lsl #2
|
|
b _03804024
|
|
_03803ECC: ; jump table
|
|
b _03803F10 ; case 0
|
|
b _03803F38 ; case 1
|
|
b _03803FD4 ; case 2
|
|
b _03803EDC ; case 3
|
|
_03803EDC:
|
|
and r0, r1, #0xff
|
|
mov r0, r0, lsl #0x10
|
|
movs r3, r0, lsr #0x10
|
|
mov r0, #3
|
|
bne _03803EFC
|
|
mov r1, #2
|
|
bl sub_03803A48
|
|
b _03804030
|
|
_03803EFC:
|
|
str r3, [r2, #0x28]
|
|
mov r1, #0
|
|
str r3, [r2, #0x2c]
|
|
bl sub_03803A48
|
|
b _03804030
|
|
_03803F10:
|
|
mov r0, #0
|
|
mov r1, r4
|
|
mov r2, r0
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
bne _03804030
|
|
mov r0, r4
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
b _03804030
|
|
_03803F38:
|
|
ldr r0, [r2, #0x24]
|
|
cmp r0, #0
|
|
beq _03803F54
|
|
mov r0, r4
|
|
mov r1, #3
|
|
bl sub_03803A48
|
|
b _03804030
|
|
_03803F54:
|
|
and r0, r1, #0xff
|
|
mov r0, r0, lsl #0x10
|
|
movs r3, r0, lsr #0x10
|
|
beq _03803F6C
|
|
cmp r3, #4
|
|
bls _03803F7C
|
|
_03803F6C:
|
|
mov r0, r4
|
|
mov r1, #2
|
|
bl sub_03803A48
|
|
b _03804030
|
|
_03803F7C:
|
|
ldrh ip, [r2, #6]
|
|
ldr r0, _03804044 ; =0x00000107
|
|
cmp ip, r0
|
|
blo _03803F9C
|
|
mov r0, r4
|
|
mov r1, #2
|
|
bl sub_03803A48
|
|
b _03804030
|
|
_03803F9C:
|
|
mov r1, r4
|
|
mov r0, #0
|
|
mov r2, #2
|
|
str ip, [sp]
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
ldrne r0, _03804040 ; =_03809D70
|
|
movne r1, #1
|
|
strne r1, [r0, #0x24]
|
|
bne _03804030
|
|
mov r0, r4
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
b _03804030
|
|
_03803FD4:
|
|
ldr r0, [r2, #0x24]
|
|
cmp r0, #2
|
|
beq _03803FF0
|
|
mov r0, r4
|
|
mov r1, #3
|
|
bl sub_03803A48
|
|
b _03804030
|
|
_03803FF0:
|
|
mov r0, #0
|
|
mov r1, r4
|
|
mov r2, r0
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
ldrne r0, _03804040 ; =_03809D70
|
|
movne r1, #3
|
|
strne r1, [r0, #0x24]
|
|
bne _03804030
|
|
mov r0, r4
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
b _03804030
|
|
_03804024:
|
|
mov r0, r4
|
|
mov r1, #1
|
|
bl sub_03803A48
|
|
_03804030:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0380403C: .word _03809D74
|
|
_03804040: .word _03809D70
|
|
_03804044: .word 0x00000107
|
|
arm_func_end sub_03803E60
|
|
|
|
arm_func_start sub_03804048
|
|
sub_03804048: ; 0x03804048
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0xc
|
|
mov sl, r0
|
|
ldr r1, [sl, #4]
|
|
cmp r1, #2
|
|
bhi _0380407C
|
|
cmp r1, #0
|
|
beq _03804094
|
|
cmp r1, #1
|
|
beq _03804200
|
|
cmp r1, #2
|
|
beq _038042C8
|
|
b _03804314
|
|
_0380407C:
|
|
cmp r1, #0x10
|
|
bne _03804314
|
|
ldr r0, _03804320 ; =_03809D70
|
|
ldr r0, [r0, #0x24]
|
|
cmp r0, #2
|
|
bne _03804314
|
|
_03804094:
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
mov r0, #0
|
|
bl sub_03803B0C
|
|
cmp r0, #0
|
|
bne _038040CC
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldr r0, [sl, #4]
|
|
mov r1, #4
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_03803A48
|
|
b _03804314
|
|
_038040CC:
|
|
mov r0, #0
|
|
bl sub_03803B28
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldr r1, _03804320 ; =_03809D70
|
|
add r0, sp, #8
|
|
ldr r1, [r1, #0x28]
|
|
add r2, sp, #4
|
|
bl sub_038046AC
|
|
ldr r0, [sp, #8]
|
|
ldrh r2, [sp, #4]
|
|
mov r1, r0, lsl #7
|
|
movs r1, r1, lsr #0x1f
|
|
ldreq r0, _03804320 ; =_03809D70
|
|
moveq r1, #0
|
|
streqb r1, [r0, #1]
|
|
streqb r1, [r0]
|
|
beq _038041AC
|
|
mov r0, r0, lsl #5
|
|
movs r0, r0, lsr #0x1e
|
|
beq _0380415C
|
|
ldr r0, _03804320 ; =_03809D70
|
|
mov r3, #0
|
|
strb r3, [r0]
|
|
ldrb r1, [r0, #1]
|
|
add r2, r1, #1
|
|
and r1, r2, #0xff
|
|
strb r2, [r0, #1]
|
|
cmp r1, #4
|
|
blo _038041AC
|
|
strb r3, [r0, #1]
|
|
ldr r1, [r0, #0x28]
|
|
cmp r1, #0x23
|
|
addlt r1, r1, #1
|
|
strlt r1, [r0, #0x28]
|
|
b _038041AC
|
|
_0380415C:
|
|
ldr r0, _03804320 ; =_03809D70
|
|
mov r4, #0
|
|
strb r4, [r0, #1]
|
|
ldr r3, [r0, #0x28]
|
|
cmp r2, r3, asr #1
|
|
strgeb r4, [r0]
|
|
bge _038041AC
|
|
ldrb r1, [r0]
|
|
add r2, r1, #1
|
|
and r1, r2, #0xff
|
|
strb r2, [r0]
|
|
cmp r1, #4
|
|
blo _038041AC
|
|
strb r4, [r0]
|
|
ldr r1, [r0, #0x2c]
|
|
cmp r3, r1
|
|
subgt r1, r3, #1
|
|
strgt r1, [r0, #0x28]
|
|
movgt r1, #3
|
|
strgtb r1, [r0, #1]
|
|
_038041AC:
|
|
ldrh r0, [sp, #8]
|
|
ldr r1, _03804324 ; =0x027FFFAA
|
|
strh r0, [r1]
|
|
ldrh r0, [sp, #0xa]
|
|
strh r0, [r1, #2]
|
|
ldr r0, [sl, #4]
|
|
cmp r0, #0
|
|
bne _038041E0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
mov r1, #0
|
|
bl sub_03803A48
|
|
b _038041F4
|
|
_038041E0:
|
|
ldr r1, [sl, #8]
|
|
mov r0, r0, lsl #0x10
|
|
and r1, r1, #0xff
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_03803A48
|
|
_038041F4:
|
|
mov r0, #0
|
|
bl sub_03803B40
|
|
b _03804314
|
|
_03804200:
|
|
ldr r0, _03804320 ; =_03809D70
|
|
ldr r0, [r0, #0x24]
|
|
cmp r0, #1
|
|
bne _038042B4
|
|
ldr r8, _03804328 ; =0x00000107
|
|
ldr r6, _0380432C ; =_03809D74
|
|
ldr r5, _03804330 ; =_03809DA0
|
|
mov sb, #0
|
|
mov r7, #0xd7
|
|
mov fp, #0xa
|
|
mov r4, #0x28
|
|
b _03804284
|
|
_03804230:
|
|
mul r0, sb, r8
|
|
bl _u32_div_f
|
|
ldr r2, [sl, #0xc]
|
|
mov r1, r8
|
|
add r0, r2, r0
|
|
bl _u32_div_f
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #0xc8
|
|
blo _03804260
|
|
cmp r0, #0xd7
|
|
movlo r0, r7
|
|
_03804260:
|
|
add r1, r6, sb, lsl #1
|
|
strh r0, [r1, #0xcc]
|
|
str sb, [sp]
|
|
mla r0, sb, r4, r5
|
|
ldrsh r1, [r1, #0xcc]
|
|
ldr r3, _03804334 ; =sub_0380433C
|
|
mov r2, fp
|
|
bl sub_037FD928
|
|
add sb, sb, #1
|
|
_03804284:
|
|
ldr r1, [sl, #8]
|
|
cmp sb, r1
|
|
blo _03804230
|
|
ldr r0, [sl, #4]
|
|
mov r1, #0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_03803A48
|
|
ldr r0, _03804320 ; =_03809D70
|
|
mov r1, #2
|
|
str r1, [r0, #0x24]
|
|
b _03804314
|
|
_038042B4:
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
mov r1, #3
|
|
bl sub_03803A48
|
|
b _03804314
|
|
_038042C8:
|
|
ldr r0, _03804320 ; =_03809D70
|
|
ldr r0, [r0, #0x24]
|
|
cmp r0, #3
|
|
bne _03804304
|
|
ldr r0, _03804338 ; =0x54505641
|
|
bl sub_037FDA84
|
|
ldr r0, [sl, #4]
|
|
mov r1, #0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_03803A48
|
|
ldr r0, _03804320 ; =_03809D70
|
|
mov r1, #0
|
|
str r1, [r0, #0x24]
|
|
b _03804314
|
|
_03804304:
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
mov r1, #3
|
|
bl sub_03803A48
|
|
_03804314:
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03804320: .word _03809D70
|
|
_03804324: .word 0x027FFFAA
|
|
_03804328: .word 0x00000107
|
|
_0380432C: .word _03809D74
|
|
_03804330: .word _03809DA0
|
|
_03804334: .word sub_0380433C
|
|
_03804338: .word 0x54505641
|
|
arm_func_end sub_03804048
|
|
|
|
arm_func_start sub_0380433C
|
|
sub_0380433C: ; 0x0380433C
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
mov r3, r4
|
|
mov r0, #0
|
|
mov r1, #0x10
|
|
mov r2, #1
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
bne _03804394
|
|
ldr r0, [sp]
|
|
ldr r3, _038043A0 ; =0x027FFFAA
|
|
bic r0, r0, #0x6000000
|
|
orr r0, r0, #0x6000000
|
|
str r0, [sp]
|
|
ldrh r0, [sp]
|
|
ldrh r2, [sp, #2]
|
|
strh r0, [r3]
|
|
and r1, r4, #0xff
|
|
mov r0, #0x10
|
|
strh r2, [r3, #2]
|
|
bl sub_03803A48
|
|
_03804394:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038043A0: .word 0x027FFFAA
|
|
arm_func_end sub_0380433C
|
|
|
|
arm_func_start sub_038043A4
|
|
sub_038043A4: ; 0x038043A4
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0x8000
|
|
bl sub_037FE5A8
|
|
ldr r2, _03804480 ; =0x040001C0
|
|
_038043B4:
|
|
ldrh r0, [r2]
|
|
tst r0, #0x80
|
|
bne _038043B4
|
|
ldr r1, _03804484 ; =0x00008A01
|
|
ldr r0, _03804488 ; =0x040001C2
|
|
strh r1, [r2]
|
|
mov r1, #0x84
|
|
strh r1, [r0]
|
|
sub r1, r0, #2
|
|
_038043D8:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _038043D8
|
|
bl sub_03804498
|
|
ldr r1, _0380448C ; =0x00008201
|
|
ldr r0, _03804480 ; =0x040001C0
|
|
strh r1, [r0]
|
|
bl sub_03804498
|
|
ldr r0, _03804490 ; =_03809E48
|
|
ldrh r0, [r0]
|
|
cmp r0, #0
|
|
bne _03804420
|
|
ldr r0, _03804494 ; =0x04000136
|
|
ldrh r0, [r0]
|
|
tst r0, #0x40
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
b _03804478
|
|
_03804420:
|
|
ldr r2, _03804494 ; =0x04000136
|
|
ldrh r0, [r2]
|
|
tst r0, #0x40
|
|
moveq r0, #1
|
|
beq _03804478
|
|
ldr r1, _03804484 ; =0x00008A01
|
|
mov r0, #0x84
|
|
strh r1, [r2, #0x8a]
|
|
strh r0, [r2, #0x8c]
|
|
_03804444:
|
|
ldrh r0, [r2, #0x8a]
|
|
tst r0, #0x80
|
|
bne _03804444
|
|
bl sub_03804498
|
|
ldr r1, _0380448C ; =0x00008201
|
|
ldr r0, _03804480 ; =0x040001C0
|
|
strh r1, [r0]
|
|
bl sub_03804498
|
|
ldr r0, _03804494 ; =0x04000136
|
|
ldrh r0, [r0]
|
|
tst r0, #0x40
|
|
movne r0, #0
|
|
moveq r0, #2
|
|
_03804478:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03804480: .word 0x040001C0
|
|
_03804484: .word 0x00008A01
|
|
_03804488: .word 0x040001C2
|
|
_0380448C: .word 0x00008201
|
|
_03804490: .word _03809E48
|
|
_03804494: .word 0x04000136
|
|
arm_func_end sub_038043A4
|
|
|
|
arm_func_start sub_03804498
|
|
sub_03804498: ; 0x03804498
|
|
ldr r0, _038044B8 ; =0x040001C2
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
sub r1, r0, #2
|
|
_038044A8:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _038044A8
|
|
bx lr
|
|
.align 2, 0
|
|
_038044B8: .word 0x040001C2
|
|
arm_func_end sub_03804498
|
|
|
|
arm_func_start sub_038044BC
|
|
sub_038044BC: ; 0x038044BC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0x14
|
|
cmp r2, #0
|
|
ldr r2, _03804698 ; =0x040001C0
|
|
mov r5, r3
|
|
moveq r3, #0xd1
|
|
moveq r4, #1
|
|
mov r7, r0
|
|
mov r6, r1
|
|
movne r3, #0x91
|
|
movne r4, #2
|
|
_038044E8:
|
|
ldrh r0, [r2]
|
|
tst r0, #0x80
|
|
bne _038044E8
|
|
ldr r1, _0380469C ; =0x00008A01
|
|
ldr r0, _038046A0 ; =0x040001C2
|
|
strh r1, [r2]
|
|
and r2, r3, #0xff
|
|
strh r2, [r0]
|
|
sub r1, r0, #2
|
|
_0380450C:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _0380450C
|
|
mov r0, r2, lsl #0x10
|
|
ldr r2, _03804698 ; =0x040001C0
|
|
mov ip, #0
|
|
ldr r8, _038046A4 ; =0x00007FF8
|
|
add r1, sp, #0
|
|
mov r0, r0, lsr #0x10
|
|
mov r3, ip
|
|
_03804534:
|
|
strh r3, [r2, #2]
|
|
_03804538:
|
|
ldrh sb, [r2]
|
|
tst sb, #0x80
|
|
bne _03804538
|
|
ldrh sb, [r2, #2]
|
|
and sb, sb, #0xff
|
|
mov lr, sb, lsl #0x10
|
|
mov sb, lr, lsr #8
|
|
str sb, [r1, ip, lsl #2]
|
|
strh r0, [r2, #2]
|
|
_0380455C:
|
|
ldrh sb, [r2]
|
|
tst sb, #0x80
|
|
bne _0380455C
|
|
ldrh lr, [r2, #2]
|
|
ldr sb, [r1, ip, lsl #2]
|
|
and lr, lr, #0xff
|
|
mov lr, lr, lsl #0x10
|
|
orr sb, sb, lr, lsr #16
|
|
and lr, sb, r8
|
|
mov lr, lr, asr #3
|
|
str lr, [r1, ip, lsl #2]
|
|
add ip, ip, #1
|
|
cmp ip, #5
|
|
blt _03804534
|
|
ldr r0, _038046A8 ; =0x00008201
|
|
strh r0, [r2]
|
|
bl sub_03804498
|
|
mov r8, #0
|
|
mov sb, r8
|
|
add r2, sp, #0
|
|
_038045AC:
|
|
ldr r1, [r2, sb, lsl #2]
|
|
add r3, sb, #1
|
|
b _038045D0
|
|
_038045B8:
|
|
ldr r0, [r2, r3, lsl #2]
|
|
add r3, r3, #1
|
|
subs r0, r1, r0
|
|
rsbmi r0, r0, #0
|
|
cmp r0, r8
|
|
movgt r8, r0
|
|
_038045D0:
|
|
cmp r3, #5
|
|
blt _038045B8
|
|
add sb, sb, #1
|
|
cmp sb, #4
|
|
blt _038045AC
|
|
strh r8, [r5]
|
|
mov r8, #0
|
|
add r0, sp, #0
|
|
b _03804668
|
|
_038045F4:
|
|
ldr r3, [r0, r8, lsl #2]
|
|
add sb, r8, #1
|
|
b _0380465C
|
|
_03804600:
|
|
ldr r2, [r0, sb, lsl #2]
|
|
subs r1, r3, r2
|
|
rsbmi r1, r1, #0
|
|
cmp r1, r6
|
|
bgt _03804658
|
|
add r1, sb, #1
|
|
b _03804650
|
|
_0380461C:
|
|
ldr r5, [r0, r1, lsl #2]
|
|
subs ip, r3, r5
|
|
rsbmi ip, ip, #0
|
|
cmp ip, r6
|
|
bgt _0380464C
|
|
add r0, r2, r3, lsl #1
|
|
add r0, r5, r0
|
|
mov r0, r0, asr #2
|
|
bic r0, r0, #7
|
|
strh r0, [r7]
|
|
mov r0, #0
|
|
b _0380468C
|
|
_0380464C:
|
|
add r1, r1, #1
|
|
_03804650:
|
|
cmp r1, #5
|
|
blt _0380461C
|
|
_03804658:
|
|
add sb, sb, #1
|
|
_0380465C:
|
|
cmp sb, #4
|
|
blt _03804600
|
|
add r8, r8, #1
|
|
_03804668:
|
|
cmp r8, #3
|
|
blt _038045F4
|
|
ldr r2, [sp]
|
|
ldr r1, [sp, #0x10]
|
|
mov r0, r4
|
|
add r1, r2, r1
|
|
mov r1, r1, asr #1
|
|
bic r1, r1, #7
|
|
strh r1, [r7]
|
|
_0380468C:
|
|
add sp, sp, #0x14
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03804698: .word 0x040001C0
|
|
_0380469C: .word 0x00008A01
|
|
_038046A0: .word 0x040001C2
|
|
_038046A4: .word 0x00007FF8
|
|
_038046A8: .word 0x00008201
|
|
arm_func_end sub_038044BC
|
|
|
|
arm_func_start sub_038046AC
|
|
sub_038046AC: ; 0x038046AC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #8
|
|
movs r6, r1
|
|
mov r5, r2
|
|
mov r1, #0
|
|
mov r7, r0
|
|
strh r1, [r5]
|
|
rsbmi r6, r6, #0
|
|
bl sub_038043A4
|
|
movs r4, r0
|
|
bne _03804714
|
|
ldr r1, [r7]
|
|
mov r0, #0x1000
|
|
rsb r0, r0, #0
|
|
and r1, r1, r0
|
|
ldr r0, _03804890 ; =0xFF000FFF
|
|
and r0, r1, r0
|
|
bic r1, r0, #0x1000000
|
|
bic r0, r1, #0x6000000
|
|
str r1, [r7]
|
|
orr r1, r0, #0x6000000
|
|
str r1, [r7]
|
|
ldr r0, _03804894 ; =_03809E48
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
b _03804884
|
|
_03804714:
|
|
add r0, sp, #4
|
|
add r3, sp, #2
|
|
mov r1, r6
|
|
mov r2, #0
|
|
bl sub_038044BC
|
|
ldr r1, [r7]
|
|
mov r0, r0, lsl #0x1e
|
|
bic r1, r1, #0x6000000
|
|
orr ip, r1, r0, lsr #5
|
|
str ip, [r7]
|
|
mov r1, #0x1000
|
|
rsb r1, r1, #0
|
|
ldrh r2, [sp, #4]
|
|
and ip, ip, r1
|
|
and r1, r2, r1, lsr #20
|
|
orr ip, ip, r1
|
|
add r0, sp, #4
|
|
add r3, sp, #0
|
|
mov r1, r6
|
|
mov r2, #1
|
|
str ip, [r7]
|
|
bl sub_038044BC
|
|
cmp r0, #2
|
|
bne _03804794
|
|
ldr r1, [r7]
|
|
mov r0, r1, lsl #5
|
|
mov r0, r0, lsr #0x1e
|
|
orr r0, r0, #2
|
|
bic r1, r1, #0x6000000
|
|
mov r0, r0, lsl #0x1e
|
|
orr r0, r1, r0, lsr #5
|
|
str r0, [r7]
|
|
_03804794:
|
|
ldrh r1, [sp, #4]
|
|
ldr r2, [r7]
|
|
ldr r0, _03804890 ; =0xFF000FFF
|
|
mov r1, r1, lsl #0x14
|
|
and r0, r2, r0
|
|
orr r2, r0, r1, lsr #8
|
|
ldr r1, _03804898 ; =0x00008A01
|
|
ldr r0, _0380489C ; =0x040001C0
|
|
str r2, [r7]
|
|
strh r1, [r0]
|
|
mov r6, #0
|
|
_038047C0:
|
|
bl sub_03804498
|
|
add r6, r6, #1
|
|
cmp r6, #0xc
|
|
blt _038047C0
|
|
ldr r1, _038048A0 ; =0x00008201
|
|
ldr r0, _0380489C ; =0x040001C0
|
|
strh r1, [r0]
|
|
bl sub_03804498
|
|
cmp r4, #2
|
|
ldreq r0, [r7]
|
|
biceq r0, r0, #0x6000000
|
|
orreq r0, r0, #0x6000000
|
|
streq r0, [r7]
|
|
bl sub_038043A4
|
|
cmp r0, #0
|
|
beq _03804864
|
|
cmp r0, #1
|
|
beq _03804834
|
|
cmp r0, #2
|
|
bne _03804880
|
|
ldr r1, [r7]
|
|
ldr r0, _03804894 ; =_03809E48
|
|
orr r2, r1, #0x1000000
|
|
bic r1, r2, #0x6000000
|
|
orr r1, r1, #0x6000000
|
|
str r1, [r7]
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
b _03804884
|
|
_03804834:
|
|
ldr r1, [r7]
|
|
ldr r0, _03804894 ; =_03809E48
|
|
orr r1, r1, #0x1000000
|
|
str r1, [r7]
|
|
mov r2, #1
|
|
ldrh r1, [sp]
|
|
ldrh r3, [sp, #2]
|
|
strh r2, [r0]
|
|
cmp r3, r1
|
|
movlo r3, r1
|
|
strh r3, [r5]
|
|
b _03804884
|
|
_03804864:
|
|
ldr r1, [r7]
|
|
ldr r0, _03804894 ; =_03809E48
|
|
bic r1, r1, #0x1000000
|
|
str r1, [r7]
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
b _03804884
|
|
_03804880:
|
|
bl sub_037FDE70
|
|
_03804884:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03804890: .word 0xFF000FFF
|
|
_03804894: .word _03809E48
|
|
_03804898: .word 0x00008A01
|
|
_0380489C: .word 0x040001C0
|
|
_038048A0: .word 0x00008201
|
|
arm_func_end sub_038046AC
|
|
|
|
arm_func_start sub_038048A4
|
|
sub_038048A4: ; 0x038048A4
|
|
ldr r0, _038048D8 ; =_03809E4C
|
|
mov r1, #1
|
|
str r1, [r0, #4]
|
|
mov r3, #0
|
|
str r3, [r0, #0x28]
|
|
ldr r0, _038048DC ; =_03809E54
|
|
mov r2, r3
|
|
_038048C0:
|
|
mov r1, r3, lsl #1
|
|
add r3, r3, #1
|
|
strh r2, [r0, r1]
|
|
cmp r3, #0x10
|
|
blt _038048C0
|
|
bx lr
|
|
.align 2, 0
|
|
_038048D8: .word _03809E4C
|
|
_038048DC: .word _03809E54
|
|
arm_func_end sub_038048A4
|
|
|
|
arm_func_start sub_038048E0
|
|
sub_038048E0: ; 0x038048E0
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
tst r0, #0x2000000
|
|
beq _03804910
|
|
ldr r1, _03804A94 ; =_03809E54
|
|
mov r4, #0
|
|
mov r3, r4
|
|
_038048FC:
|
|
mov r2, r4, lsl #1
|
|
add r4, r4, #1
|
|
strh r3, [r1, r2]
|
|
cmp r4, #0x10
|
|
blt _038048FC
|
|
_03804910:
|
|
ldr r1, _03804A94 ; =_03809E54
|
|
and r2, r0, #0xf0000
|
|
mov r2, r2, lsr #0x10
|
|
mov r2, r2, lsl #1
|
|
strh r0, [r1, r2]
|
|
tst r0, #0x1000000
|
|
beq _03804A88
|
|
ldr r1, _03804A98 ; =_03809E4C
|
|
ldrh r2, [r1, #8]
|
|
and r0, r2, #0xff00
|
|
mov r0, r0, lsl #8
|
|
mov r4, r0, lsr #0x10
|
|
sub r0, r4, #0x60
|
|
cmp r0, #7
|
|
addls pc, pc, r0, lsl #2
|
|
b _03804A7C
|
|
_03804950: ; jump table
|
|
b _03804970 ; case 0
|
|
b _03804980 ; case 1
|
|
b _03804A7C ; case 2
|
|
b _03804A18 ; case 3
|
|
b _038049B4 ; case 4
|
|
b _038049E8 ; case 5
|
|
b _03804A4C ; case 6
|
|
b _03804A64 ; case 7
|
|
_03804970:
|
|
mov r0, #0x60
|
|
mov r1, #0
|
|
bl sub_03803A48
|
|
b _03804A88
|
|
_03804980:
|
|
ldrh ip, [r1, #0xa]
|
|
mov r1, r4
|
|
and r3, r2, #0xff
|
|
mov r0, #3
|
|
mov r2, #2
|
|
str ip, [sp]
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
bne _03804A88
|
|
mov r0, r4
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
b _03804A88
|
|
_038049B4:
|
|
ldrh ip, [r1, #0xa]
|
|
mov r1, r4
|
|
and r3, r2, #0xff
|
|
mov r0, #3
|
|
mov r2, #2
|
|
str ip, [sp]
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
bne _03804A88
|
|
mov r0, r4
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
b _03804A88
|
|
_038049E8:
|
|
mov r0, r2, lsl #0x10
|
|
mov r1, r4
|
|
mov r3, r0, lsr #0x10
|
|
mov r0, #3
|
|
mov r2, #1
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
bne _03804A88
|
|
mov r0, r4
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
b _03804A88
|
|
_03804A18:
|
|
ldrh r0, [r1, #0xa]
|
|
mov r2, r2, lsl #0x18
|
|
mov r1, r4
|
|
orr r3, r0, r2, lsr #8
|
|
mov r0, #3
|
|
mov r2, #1
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
bne _03804A88
|
|
mov r0, r4
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
b _03804A88
|
|
_03804A4C:
|
|
and r0, r2, #0xff
|
|
bl sub_0380521C
|
|
mov r0, #0x66
|
|
mov r1, #0
|
|
bl sub_03803A48
|
|
b _03804A88
|
|
_03804A64:
|
|
bl sub_03805238
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r0, lsr #0x10
|
|
mov r0, #0x67
|
|
bl sub_03803A48
|
|
b _03804A88
|
|
_03804A7C:
|
|
mov r0, r4
|
|
mov r1, #1
|
|
bl sub_03803A48
|
|
_03804A88:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03804A94: .word _03809E54
|
|
_03804A98: .word _03809E4C
|
|
arm_func_end sub_038048E0
|
|
|
|
arm_func_start sub_03804A9C
|
|
sub_03804A9C: ; 0x03804A9C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
bl EnableIrqFlag
|
|
mov r5, r0
|
|
mov r0, #3
|
|
bl sub_03803B0C
|
|
cmp r0, #0
|
|
bne _03804ADC
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
ldr r0, [r4, #4]
|
|
mov r1, #4
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_03803A48
|
|
b _03804C00
|
|
_03804ADC:
|
|
mov r0, #3
|
|
bl sub_03803B28
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
ldr r1, [r4, #4]
|
|
sub r0, r1, #0x61
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _03804BE8
|
|
_03804B00: ; jump table
|
|
b _03804B18 ; case 0
|
|
b _03804BE8 ; case 1
|
|
b _03804BB4 ; case 2
|
|
b _03804B3C ; case 3
|
|
b _03804B78 ; case 4
|
|
b _03804BDC ; case 5
|
|
_03804B18:
|
|
ldr r0, _03804C08 ; =_03809E4C
|
|
mov r1, #1
|
|
str r1, [r0, #0x28]
|
|
ldr r1, [r4, #8]
|
|
strh r1, [r0, #2]
|
|
ldr r1, [r4, #0xc]
|
|
strh r1, [r0]
|
|
bl sub_03804F1C
|
|
b _03804BF8
|
|
_03804B3C:
|
|
ldr r2, _03804C08 ; =_03809E4C
|
|
mov r0, #4
|
|
str r0, [r2, #0x28]
|
|
ldr r0, [r4, #8]
|
|
str r0, [r2, #0x30]
|
|
ldr r3, [r4, #0xc]
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
and r1, r3, #0xff
|
|
str r3, [r2, #0x2c]
|
|
bl sub_03804C50
|
|
mov r0, #0x64
|
|
mov r1, #0
|
|
bl sub_03803A48
|
|
b _03804BF8
|
|
_03804B78:
|
|
ldr r1, _03804C08 ; =_03809E4C
|
|
mov r0, #3
|
|
str r0, [r1, #0x28]
|
|
ldr r2, [r4, #8]
|
|
mov r0, r2, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
mov r0, r4
|
|
str r2, [r1, #0x30]
|
|
bl sub_03804CCC
|
|
add r1, r4, #0x70
|
|
mov r2, r1, lsl #0x10
|
|
mov r1, r0
|
|
mov r0, r2, lsr #0x10
|
|
bl sub_03803A48
|
|
b _03804BF8
|
|
_03804BB4:
|
|
ldr r1, _03804C08 ; =_03809E4C
|
|
mov r0, #2
|
|
str r0, [r1, #0x28]
|
|
ldr r0, [r4, #8]
|
|
str r0, [r1, #0x2c]
|
|
bl sub_03804D90
|
|
mov r0, #0x63
|
|
mov r1, #0
|
|
bl sub_03803A48
|
|
b _03804BF8
|
|
_03804BDC:
|
|
ldr r0, [r4, #8]
|
|
bl sub_03804EB4
|
|
b _03804BF8
|
|
_03804BE8:
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
mov r1, #1
|
|
bl sub_03803A48
|
|
_03804BF8:
|
|
mov r0, #3
|
|
bl sub_03803B40
|
|
_03804C00:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03804C08: .word _03809E4C
|
|
arm_func_end sub_03804A9C
|
|
|
|
arm_func_start sub_03804C0C
|
|
sub_03804C0C: ; 0x03804C0C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
and r1, r1, #0x3f0000
|
|
and r3, r0, #0x3c00000
|
|
mov r1, r1, lsl #0x10
|
|
mov r0, r2, lsl #0x10
|
|
orr r1, r1, r3, lsl #22
|
|
orr r6, r1, r0, lsr #16
|
|
mov r5, #8
|
|
mov r4, #0
|
|
_03804C30:
|
|
mov r0, r5
|
|
mov r1, r6
|
|
mov r2, r4
|
|
bl sub_037FE410
|
|
cmp r0, #0
|
|
bne _03804C30
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
arm_func_end sub_03804C0C
|
|
|
|
arm_func_start sub_03804C50
|
|
sub_03804C50: ; 0x03804C50
|
|
stmdb sp!, {r4, lr}
|
|
ldr r2, _03804C9C ; =0x040001C0
|
|
mov r4, r1
|
|
_03804C5C:
|
|
ldrh r1, [r2]
|
|
tst r1, #0x80
|
|
bne _03804C5C
|
|
ldr r1, _03804CA0 ; =0x00008202
|
|
and r0, r0, #0xff
|
|
strh r1, [r2]
|
|
add r1, r1, #0x600
|
|
strh r1, [r2]
|
|
bl sub_03804CA8
|
|
ldr r2, _03804CA4 ; =0x00008002
|
|
ldr r1, _03804C9C ; =0x040001C0
|
|
and r0, r4, #0xff
|
|
strh r2, [r1]
|
|
strh r0, [r1, #2]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03804C9C: .word 0x040001C0
|
|
_03804CA0: .word 0x00008202
|
|
_03804CA4: .word 0x00008002
|
|
arm_func_end sub_03804C50
|
|
|
|
arm_func_start sub_03804CA8
|
|
sub_03804CA8: ; 0x03804CA8
|
|
ldr r1, _03804CC8 ; =0x040001C2
|
|
and r0, r0, #0xff
|
|
strh r0, [r1]
|
|
sub r1, r1, #2
|
|
_03804CB8:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _03804CB8
|
|
bx lr
|
|
.align 2, 0
|
|
_03804CC8: .word 0x040001C2
|
|
arm_func_end sub_03804CA8
|
|
|
|
arm_func_start sub_03804CCC
|
|
sub_03804CCC: ; 0x03804CCC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _03804D30 ; =0x040001C0
|
|
_03804CD4:
|
|
ldrh r1, [r2]
|
|
tst r1, #0x80
|
|
bne _03804CD4
|
|
ldr r1, _03804D34 ; =0x00008202
|
|
orr r0, r0, #0x80
|
|
strh r1, [r2]
|
|
add r1, r1, #0x600
|
|
and r0, r0, #0xff
|
|
strh r1, [r2]
|
|
bl sub_03804CA8
|
|
ldr r2, _03804D38 ; =0x00008002
|
|
ldr r1, _03804D30 ; =0x040001C0
|
|
mov r0, #0
|
|
strh r2, [r1]
|
|
strh r0, [r1, #2]
|
|
_03804D10:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _03804D10
|
|
ldr r0, _03804D3C ; =0x040001C2
|
|
ldrh r0, [r0]
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03804D30: .word 0x040001C0
|
|
_03804D34: .word 0x00008202
|
|
_03804D38: .word 0x00008002
|
|
_03804D3C: .word 0x040001C2
|
|
arm_func_end sub_03804CCC
|
|
|
|
arm_func_start sub_03804D40
|
|
sub_03804D40: ; 0x03804D40
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, #0
|
|
bl sub_03804CCC
|
|
orr r1, r0, r4
|
|
mov r0, #0
|
|
bl sub_03804C50
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_03804D40
|
|
|
|
arm_func_start sub_03804D64
|
|
sub_03804D64: ; 0x03804D64
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, #0
|
|
bl sub_03804CCC
|
|
mvn r1, r4
|
|
and r0, r0, r1
|
|
and r1, r0, #0xff
|
|
mov r0, #0
|
|
bl sub_03804C50
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_03804D64
|
|
|
|
arm_func_start sub_03804D90
|
|
sub_03804D90: ; 0x03804D90
|
|
stmdb sp!, {r3, lr}
|
|
cmp r0, #0xf
|
|
addls pc, pc, r0, lsl #2
|
|
b _03804EAC
|
|
_03804DA0: ; jump table
|
|
b _03804EAC ; case 0
|
|
b _03804DE0 ; case 1
|
|
b _03804DF4 ; case 2
|
|
b _03804E08 ; case 3
|
|
b _03804E1C ; case 4
|
|
b _03804E28 ; case 5
|
|
b _03804E34 ; case 6
|
|
b _03804E40 ; case 7
|
|
b _03804E4C ; case 8
|
|
b _03804E58 ; case 9
|
|
b _03804E64 ; case 10
|
|
b _03804E70 ; case 11
|
|
b _03804E7C ; case 12
|
|
b _03804E88 ; case 13
|
|
b _03804EA0 ; case 14
|
|
b _03804E94 ; case 15
|
|
_03804DE0:
|
|
mov r0, #1
|
|
bl sub_0380521C
|
|
mov r0, #1
|
|
bl sub_03804EB4
|
|
b _03804EAC
|
|
_03804DF4:
|
|
mov r0, #3
|
|
bl sub_0380521C
|
|
mov r0, #3
|
|
bl sub_03804EB4
|
|
b _03804EAC
|
|
_03804E08:
|
|
mov r0, #2
|
|
bl sub_0380521C
|
|
mov r0, #2
|
|
bl sub_03804EB4
|
|
b _03804EAC
|
|
_03804E1C:
|
|
mov r0, #4
|
|
bl sub_03804D40
|
|
b _03804EAC
|
|
_03804E28:
|
|
mov r0, #4
|
|
bl sub_03804D64
|
|
b _03804EAC
|
|
_03804E34:
|
|
mov r0, #8
|
|
bl sub_03804D40
|
|
b _03804EAC
|
|
_03804E40:
|
|
mov r0, #8
|
|
bl sub_03804D64
|
|
b _03804EAC
|
|
_03804E4C:
|
|
mov r0, #0xc
|
|
bl sub_03804D40
|
|
b _03804EAC
|
|
_03804E58:
|
|
mov r0, #0xc
|
|
bl sub_03804D64
|
|
b _03804EAC
|
|
_03804E64:
|
|
mov r0, #1
|
|
bl sub_03804D40
|
|
b _03804EAC
|
|
_03804E70:
|
|
mov r0, #1
|
|
bl sub_03804D64
|
|
b _03804EAC
|
|
_03804E7C:
|
|
mov r0, #2
|
|
bl sub_03804D64
|
|
b _03804EAC
|
|
_03804E88:
|
|
mov r0, #2
|
|
bl sub_03804D40
|
|
b _03804EAC
|
|
_03804E94:
|
|
mov r0, #0x40
|
|
bl sub_03804D64
|
|
b _03804EAC
|
|
_03804EA0:
|
|
bl sub_037FE708
|
|
mov r0, #0x40
|
|
bl sub_03804D40
|
|
_03804EAC:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
arm_func_end sub_03804D90
|
|
|
|
arm_func_start sub_03804EB4
|
|
sub_03804EB4: ; 0x03804EB4
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
cmp r4, #1
|
|
beq _03804ED8
|
|
cmp r4, #2
|
|
beq _03804EF0
|
|
cmp r4, #3
|
|
beq _03804EE4
|
|
b _03804F04
|
|
_03804ED8:
|
|
mov r0, #0x10
|
|
bl sub_03804D64
|
|
b _03804F08
|
|
_03804EE4:
|
|
mov r0, #0x30
|
|
bl sub_03804D40
|
|
b _03804F08
|
|
_03804EF0:
|
|
mov r0, #0x20
|
|
bl sub_03804D64
|
|
mov r0, #0x10
|
|
bl sub_03804D40
|
|
b _03804F08
|
|
_03804F04:
|
|
bl sub_037FDE70
|
|
_03804F08:
|
|
ldr r0, _03804F18 ; =_0380756C
|
|
str r4, [r0]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03804F18: .word _0380756C
|
|
arm_func_end sub_03804EB4
|
|
|
|
arm_func_start sub_03804F1C
|
|
sub_03804F1C: ; 0x03804F1C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r0, _038050D8 ; =0x04000208
|
|
mov r8, #0
|
|
ldrh sb, [r0]
|
|
strh r8, [r0]
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
mvn r0, #0xfe000000
|
|
bl ClearIeFlag
|
|
mov r5, r0
|
|
mov r0, r8
|
|
bl sub_03804CCC
|
|
mov r6, r0
|
|
mov r0, #2
|
|
bl sub_0380521C
|
|
mov r0, #2
|
|
bl sub_03804EB4
|
|
mov r0, #2
|
|
bl sub_03804EB4
|
|
bl sub_037FE708
|
|
mov r0, #1
|
|
bl sub_03804D64
|
|
ldr r0, _038050DC ; =_03809E4E
|
|
ldrh r0, [r0]
|
|
tst r0, #1
|
|
beq _03804FA0
|
|
ldr r0, _038050E0 ; =_03809E4C
|
|
ldr r1, _038050E4 ; =0x04000132
|
|
ldrh r2, [r0]
|
|
mov r0, #0x1000
|
|
orr r2, r2, #0x4000
|
|
strh r2, [r1]
|
|
bl sub_037FB8F0
|
|
_03804FA0:
|
|
ldr r0, _038050DC ; =_03809E4E
|
|
ldrh r0, [r0]
|
|
tst r0, #4
|
|
beq _03804FB8
|
|
mov r0, #0x400000
|
|
bl sub_037FB8F0
|
|
_03804FB8:
|
|
ldr r0, _038050DC ; =_03809E4E
|
|
ldrh r0, [r0]
|
|
tst r0, #2
|
|
beq _03804FFC
|
|
ldr r1, _038050E8 ; =0x04000134
|
|
mov r0, #0x8000
|
|
ldrh r7, [r1]
|
|
mov r8, #1
|
|
bl sub_037FE5A8
|
|
mov r0, #0x40
|
|
mov r1, #0
|
|
bl sub_037FE588
|
|
mov r0, #0x100
|
|
mov r1, r0
|
|
bl sub_037FE588
|
|
mov r0, #0x80
|
|
bl sub_037FB8F0
|
|
_03804FFC:
|
|
ldr r0, _038050DC ; =_03809E4E
|
|
ldrh r0, [r0]
|
|
tst r0, #8
|
|
beq _03805014
|
|
mov r0, #0x100000
|
|
bl sub_037FB8F0
|
|
_03805014:
|
|
ldr r0, _038050DC ; =_03809E4E
|
|
ldrh r0, [r0]
|
|
tst r0, #0x10
|
|
beq _0380502C
|
|
mov r0, #0x2000
|
|
bl sub_037FB8F0
|
|
_0380502C:
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldr r2, _038050D8 ; =0x04000208
|
|
mov r0, #1
|
|
ldrh r1, [r2]
|
|
strh r0, [r2]
|
|
bl sub_038050F0
|
|
mov r1, r6
|
|
mov r0, #0
|
|
bl sub_03804C50
|
|
ldr r0, _038050DC ; =_03809E4E
|
|
ldrh r1, [r0]
|
|
tst r1, #0x20
|
|
movne r0, #6
|
|
moveq r0, #7
|
|
tst r1, #0x40
|
|
movne r6, #4
|
|
moveq r6, #5
|
|
bl sub_03804D90
|
|
mov r0, r6
|
|
bl sub_03804D90
|
|
cmp r8, #0
|
|
ldrne r0, _038050E8 ; =0x04000134
|
|
strneh r7, [r0]
|
|
mov r0, #1
|
|
bl sub_03804D40
|
|
bl sub_037FE760
|
|
mov r1, #0
|
|
ldr r3, _038050EC ; =_03809E54
|
|
mov r2, r1
|
|
mov r0, #0x62
|
|
str r1, [r3, #0x20]
|
|
bl sub_03804C0C
|
|
bl EnableIrqFlag
|
|
mov r0, r5
|
|
bl sub_037FB8A4
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldr r1, _038050D8 ; =0x04000208
|
|
ldrh r0, [r1]
|
|
strh sb, [r1]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038050D8: .word 0x04000208
|
|
_038050DC: .word _03809E4E
|
|
_038050E0: .word _03809E4C
|
|
_038050E4: .word 0x04000132
|
|
_038050E8: .word 0x04000134
|
|
_038050EC: .word _03809E54
|
|
arm_func_end sub_03804F1C
|
|
|
|
arm_func_start sub_038050F0
|
|
sub_038050F0: ; 0x038050F0
|
|
ldr ip, _038050F8 ; =sub_038037D6
|
|
bx ip
|
|
.align 2, 0
|
|
_038050F8: .word sub_038037D6 + 1
|
|
arm_func_end sub_038050F0
|
|
|
|
arm_func_start sub_038050FC
|
|
sub_038050FC: ; 0x038050FC
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _03805210 ; =_03809E80
|
|
ldr r3, [r1, #4]
|
|
cmp r3, #0
|
|
bne _03805138
|
|
mov r2, #1
|
|
mov r3, r2
|
|
mov r0, #3
|
|
mov r1, #0x66
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
beq _03805208
|
|
mov r0, #1
|
|
bl sub_0380521C
|
|
b _03805208
|
|
_03805138:
|
|
cmp r3, #4
|
|
bge _03805164
|
|
ldr r0, _03805214 ; =_0380756C
|
|
ldr r0, [r0]
|
|
cmp r3, r0
|
|
beq _03805208
|
|
mov r0, #3
|
|
mov r1, #0x66
|
|
mov r2, #1
|
|
bl sub_03803B7C
|
|
b _03805208
|
|
_03805164:
|
|
sub r2, r3, #4
|
|
mov r0, #0xc
|
|
mul r4, r2, r0
|
|
ldr r5, _03805218 ; =_03807570
|
|
ldr r0, [r1]
|
|
add r6, r5, r4
|
|
ldrh r1, [r6, #0xa]
|
|
bl _u32_div_f
|
|
mov r1, #0
|
|
mov r3, r1, lsr r0
|
|
ldr ip, [r6, #4]
|
|
mov r2, #0x80000000
|
|
rsb r1, r0, #0x20
|
|
orr r3, r3, r2, lsl r1
|
|
sub r1, r0, #0x20
|
|
and ip, ip, r2, lsr r0
|
|
orr r3, r3, r2, lsr r1
|
|
ldr r0, [r5, r4]
|
|
cmp ip, #0
|
|
and r0, r0, r3
|
|
cmpeq r0, #0
|
|
movne r3, #1
|
|
ldrh r2, [r6, #8]
|
|
ldrh r1, [r6, #0xa]
|
|
ldr r0, _03805210 ; =_03809E80
|
|
mul r1, r2, r1
|
|
ldr r2, [r0]
|
|
moveq r3, #2
|
|
add r2, r2, #1
|
|
cmp r2, r1
|
|
str r2, [r0]
|
|
movhs r1, #0
|
|
strhs r1, [r0]
|
|
ldr r0, _03805214 ; =_0380756C
|
|
ldr r0, [r0]
|
|
cmp r3, r0
|
|
beq _03805208
|
|
mov r0, #3
|
|
mov r1, #0x66
|
|
mov r2, #1
|
|
bl sub_03803B7C
|
|
_03805208:
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805210: .word _03809E80
|
|
_03805214: .word _0380756C
|
|
_03805218: .word _03807570
|
|
arm_func_end sub_038050FC
|
|
|
|
arm_func_start sub_0380521C
|
|
sub_0380521C: ; 0x0380521C
|
|
cmp r0, #0xf
|
|
ldrle r1, _03805234 ; =_03809E80
|
|
movle r2, #0
|
|
strle r0, [r1, #4]
|
|
strle r2, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_03805234: .word _03809E80
|
|
arm_func_end sub_0380521C
|
|
|
|
arm_func_start sub_03805238
|
|
sub_03805238: ; 0x03805238
|
|
ldr r0, _03805244 ; =_03809E80
|
|
ldr r0, [r0, #4]
|
|
bx lr
|
|
.align 2, 0
|
|
_03805244: .word _03809E80
|
|
arm_func_end sub_03805238
|
|
|
|
arm_func_start sub_03805248
|
|
sub_03805248: ; 0x03805248
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r3, _03805284 ; =_03809E88
|
|
mov r1, #0
|
|
ldr r0, _03805288 ; =_03809E98
|
|
mov r2, #0xa4
|
|
stmib r3, {r1, r4}
|
|
bl sub_037FE070
|
|
mov r0, r4
|
|
bl sub_038052BC
|
|
ldr r0, _03805284 ; =_03809E88
|
|
mov r1, #3
|
|
strb r1, [r0]
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805284: .word _03809E88
|
|
_03805288: .word _03809E98
|
|
arm_func_end sub_03805248
|
|
|
|
arm_func_start sub_0380528C
|
|
sub_0380528C: ; 0x0380528C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _038052B8 ; =0x04000304
|
|
mov r0, #1
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #2
|
|
strh r1, [r2]
|
|
bl sub_0380521C
|
|
mov r0, #1
|
|
bl sub_03804EB4
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038052B8: .word 0x04000304
|
|
arm_func_end sub_0380528C
|
|
|
|
arm_func_start sub_038052BC
|
|
sub_038052BC: ; 0x038052BC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #0x50
|
|
str r0, [sp, #0x44]
|
|
ldr r0, _03805354 ; =_0380AAFC
|
|
mov sb, #4
|
|
mov r7, #8
|
|
mov r4, #3
|
|
ldr r1, _03805358 ; =_0380AAFC
|
|
ldr r6, _0380535C ; =_03809F3C
|
|
mov sl, #0x600
|
|
mov r8, #0
|
|
mov r5, #0x1c0
|
|
mov lr, #0x40
|
|
mov ip, #5
|
|
mov r3, #7
|
|
mov r2, #9
|
|
str r0, [sp, #0x1c]
|
|
str r1, [sp, #0x20]
|
|
add r0, sp, #0x1c
|
|
add r1, sp, #0
|
|
str sl, [sp, #0x24]
|
|
str sb, [sp, #0x28]
|
|
str r8, [sp, #0x3c]
|
|
str r7, [sp, #0x40]
|
|
str r6, [sp, #0x48]
|
|
str r5, [sp, #0x4c]
|
|
str r4, [sp]
|
|
str lr, [sp, #0x38]
|
|
str r4, [sp, #8]
|
|
str sb, [sp, #0x18]
|
|
str ip, [sp, #0x10]
|
|
str r3, [sp, #4]
|
|
str r7, [sp, #0x14]
|
|
str r2, [sp, #0xc]
|
|
bl sub_027E0000
|
|
add sp, sp, #0x50
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805354: .word _0380AAFC
|
|
_03805358: .word _0380AAFC
|
|
_0380535C: .word _03809F3C
|
|
arm_func_end sub_038052BC
|
|
|
|
arm_func_start sub_03805360
|
|
sub_03805360: ; 0x03805360
|
|
ldr r0, _0380539C ; =_0380B1FC
|
|
mov r3, #0
|
|
str r3, [r0, #0x20]
|
|
ldr r0, _038053A0 ; =_0380B1FC
|
|
mov r2, r3
|
|
_03805374:
|
|
mov r1, r3, lsl #1
|
|
add r3, r3, #1
|
|
strh r2, [r0, r1]
|
|
cmp r3, #0x10
|
|
blt _03805374
|
|
ldr r1, _038053A4 ; =0x0400010E
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #0x80
|
|
strh r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0380539C: .word _0380B1FC
|
|
_038053A0: .word _0380B1FC
|
|
_038053A4: .word 0x0400010E
|
|
arm_func_end sub_03805360
|
|
|
|
arm_func_start sub_038053A8
|
|
sub_038053A8: ; 0x038053A8
|
|
stmdb sp!, {r4, lr}
|
|
tst r0, #0x2000000
|
|
beq _038053D4
|
|
ldr r1, _03805660 ; =_0380B1FC
|
|
mov r4, #0
|
|
mov r3, r4
|
|
_038053C0:
|
|
mov r2, r4, lsl #1
|
|
add r4, r4, #1
|
|
strh r3, [r1, r2]
|
|
cmp r4, #0x10
|
|
blt _038053C0
|
|
_038053D4:
|
|
ldr r1, _03805660 ; =_0380B1FC
|
|
and r2, r0, #0xf0000
|
|
mov r2, r2, lsr #0x10
|
|
mov r2, r2, lsl #1
|
|
strh r0, [r1, r2]
|
|
tst r0, #0x1000000
|
|
beq _03805658
|
|
ldr r1, _03805664 ; =_0380B1FC
|
|
ldrh r2, [r1]
|
|
and r0, r2, #0xff00
|
|
mov r0, r0, lsl #8
|
|
mov r4, r0, lsr #0x10
|
|
sub r0, r4, #0x40
|
|
cmp r0, #3
|
|
addls pc, pc, r0, lsl #2
|
|
b _0380564C
|
|
_03805414: ; jump table
|
|
b _03805424 ; case 0
|
|
b _03805460 ; case 1
|
|
b _03805564 ; case 2
|
|
b _038055C8 ; case 3
|
|
_03805424:
|
|
mov r1, r4
|
|
and r3, r2, #0xff
|
|
mov r0, #2
|
|
mov r2, #1
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
bne _0380544C
|
|
mov r0, r4
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
_0380544C:
|
|
ldr r0, _03805668 ; =0x027FFF94
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
str r1, [r0, #-4]
|
|
b _03805658
|
|
_03805460:
|
|
ldr r0, [r1, #0x20]
|
|
cmp r0, #0
|
|
beq _0380547C
|
|
mov r0, r4
|
|
mov r1, #3
|
|
bl sub_03803A48
|
|
b _03805658
|
|
_0380547C:
|
|
and r0, r2, #0xff
|
|
strh r0, [r1, #0x24]
|
|
ldrh r2, [r1, #2]
|
|
ldrh r0, [r1, #4]
|
|
orr r3, r0, r2, lsl #16
|
|
cmp r3, #0x2000000
|
|
blo _038054A0
|
|
cmp r3, #0x2400000
|
|
blo _038054B0
|
|
_038054A0:
|
|
mov r0, r4
|
|
mov r1, #2
|
|
bl sub_03803A48
|
|
b _03805658
|
|
_038054B0:
|
|
str r3, [r1, #0x28]
|
|
ldrh r2, [r1, #6]
|
|
ldrh r0, [r1, #8]
|
|
orr r2, r0, r2, lsl #16
|
|
add r0, r3, r2
|
|
cmp r0, #0x2400000
|
|
bls _038054DC
|
|
mov r0, r4
|
|
mov r1, #2
|
|
bl sub_03803A48
|
|
b _03805658
|
|
_038054DC:
|
|
str r2, [r1, #0x30]
|
|
ldrh r2, [r1, #0xa]
|
|
ldrh r0, [r1, #0xc]
|
|
orr r0, r0, r2, lsl #16
|
|
bl sub_03805670
|
|
cmp r0, #0
|
|
bne _03805508
|
|
mov r0, r4
|
|
mov r1, #2
|
|
bl sub_03803A48
|
|
b _03805658
|
|
_03805508:
|
|
ldr r3, _03805664 ; =_0380B1FC
|
|
mov r2, #0
|
|
str r2, [r3, #0x2c]
|
|
ldrh r0, [r3, #0x24]
|
|
mov r1, r4
|
|
and ip, r0, #7
|
|
mov r0, #2
|
|
strh ip, [r3, #0x26]
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
bne _03805544
|
|
mov r0, r4
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
b _03805658
|
|
_03805544:
|
|
ldr r1, _03805668 ; =0x027FFF94
|
|
mov r2, #0
|
|
strh r2, [r1]
|
|
ldr r0, _03805664 ; =_0380B1FC
|
|
str r2, [r1, #-4]
|
|
mov r1, #1
|
|
str r1, [r0, #0x20]
|
|
b _03805658
|
|
_03805564:
|
|
ldr r0, [r1, #0x20]
|
|
cmp r0, #2
|
|
beq _03805580
|
|
mov r0, r4
|
|
mov r1, #3
|
|
bl sub_03803A48
|
|
b _03805658
|
|
_03805580:
|
|
mov r1, r4
|
|
mov r0, #2
|
|
mov r2, #0
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
bne _038055A8
|
|
mov r0, r4
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
b _03805658
|
|
_038055A8:
|
|
ldr r0, _03805664 ; =_0380B1FC
|
|
mov r2, #3
|
|
ldr r1, _0380566C ; =0x0400010E
|
|
str r2, [r0, #0x20]
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #0x80
|
|
strh r0, [r1]
|
|
b _03805658
|
|
_038055C8:
|
|
ldr r0, [r1, #0x20]
|
|
cmp r0, #2
|
|
beq _038055E4
|
|
mov r0, r4
|
|
mov r1, #3
|
|
bl sub_03803A48
|
|
b _03805658
|
|
_038055E4:
|
|
ldrh r2, [r1, #2]
|
|
ldrh r0, [r1, #4]
|
|
orr r0, r0, r2, lsl #16
|
|
bl sub_03805670
|
|
cmp r0, #0
|
|
bne _0380560C
|
|
mov r0, r4
|
|
mov r1, #2
|
|
bl sub_03803A48
|
|
b _03805658
|
|
_0380560C:
|
|
bl EnableIrqFlag
|
|
ldr r3, _0380566C ; =0x0400010E
|
|
ldr r1, _03805664 ; =_0380B1FC
|
|
ldrh r2, [r3]
|
|
bic r2, r2, #0x80
|
|
strh r2, [r3]
|
|
ldrh r2, [r1, #0x34]
|
|
strh r2, [r3, #-2]
|
|
ldrh r1, [r1, #0x36]
|
|
orr r1, r1, #0xc0
|
|
strh r1, [r3]
|
|
bl SetIrqFlag
|
|
mov r0, r4
|
|
mov r1, #0
|
|
bl sub_03803A48
|
|
b _03805658
|
|
_0380564C:
|
|
mov r0, r4
|
|
mov r1, #1
|
|
bl sub_03803A48
|
|
_03805658:
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805660: .word _0380B1FC
|
|
_03805664: .word _0380B1FC
|
|
_03805668: .word 0x027FFF94
|
|
_0380566C: .word 0x0400010E
|
|
arm_func_end sub_038053A8
|
|
|
|
arm_func_start sub_03805670
|
|
sub_03805670: ; 0x03805670
|
|
cmp r0, #0x10000
|
|
bhs _03805694
|
|
ldr r1, _03805710 ; =_0380B1FC
|
|
mov r2, #0
|
|
strh r2, [r1, #0x36]
|
|
rsb r0, r0, #0x10000
|
|
strh r0, [r1, #0x34]
|
|
mov r0, #1
|
|
bx lr
|
|
_03805694:
|
|
cmp r0, #0x400000
|
|
bhs _038056BC
|
|
ldr r1, _03805710 ; =_0380B1FC
|
|
mov r3, #1
|
|
mov r0, r0, lsr #6
|
|
rsb r2, r0, #0x10000
|
|
strh r3, [r1, #0x36]
|
|
mov r0, r3
|
|
strh r2, [r1, #0x34]
|
|
bx lr
|
|
_038056BC:
|
|
cmp r0, #0x1000000
|
|
bhs _038056E4
|
|
ldr r1, _03805710 ; =_0380B1FC
|
|
mov r2, #2
|
|
mov r0, r0, lsr #8
|
|
strh r2, [r1, #0x36]
|
|
rsb r0, r0, #0x10000
|
|
strh r0, [r1, #0x34]
|
|
mov r0, #1
|
|
bx lr
|
|
_038056E4:
|
|
cmp r0, #0x4000000
|
|
movhs r0, #0
|
|
bxhs lr
|
|
ldr r1, _03805710 ; =_0380B1FC
|
|
mov r2, #3
|
|
mov r0, r0, lsr #0xa
|
|
strh r2, [r1, #0x36]
|
|
rsb r0, r0, #0x10000
|
|
strh r0, [r1, #0x34]
|
|
mov r0, #1
|
|
bx lr
|
|
.align 2, 0
|
|
_03805710: .word _0380B1FC
|
|
arm_func_end sub_03805670
|
|
|
|
arm_func_start sub_03805714
|
|
sub_03805714: ; 0x03805714
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
ldr r2, [r4, #4]
|
|
cmp r2, #0x40
|
|
beq _0380573C
|
|
cmp r2, #0x41
|
|
beq _038057EC
|
|
cmp r2, #0x42
|
|
beq _03805884
|
|
b _03805920
|
|
_0380573C:
|
|
bl EnableIrqFlag
|
|
mov r5, r0
|
|
mov r0, #2
|
|
bl sub_03803B0C
|
|
cmp r0, #0
|
|
bne _03805774
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
ldr r0, [r4, #4]
|
|
mov r1, #4
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_03803A48
|
|
b _03805920
|
|
_03805774:
|
|
mov r0, #2
|
|
bl sub_03803B28
|
|
mov r0, r5
|
|
bl SetIrqFlag
|
|
ldr r0, [r4, #8]
|
|
and r0, r0, #1
|
|
cmp r0, #1
|
|
bne _038057A8
|
|
bl sub_03805C64
|
|
ldr r1, [r4, #8]
|
|
tst r1, #2
|
|
eorne r0, r0, #0x8000
|
|
b _038057B8
|
|
_038057A8:
|
|
bl sub_03805B10
|
|
ldr r1, [r4, #8]
|
|
tst r1, #2
|
|
eorne r0, r0, #0x80
|
|
_038057B8:
|
|
ldr r1, _03805928 ; =0x027FFF94
|
|
movne r0, r0, lsl #0x10
|
|
movne r0, r0, lsr #0x10
|
|
strh r0, [r1]
|
|
str r1, [r1, #-4]
|
|
ldr r0, [r4, #4]
|
|
mov r1, #0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_03803A48
|
|
mov r0, #2
|
|
bl sub_03803B40
|
|
b _03805920
|
|
_038057EC:
|
|
ldr r0, _0380592C ; =_0380B1FC
|
|
ldr r1, [r0, #0x20]
|
|
cmp r1, #1
|
|
bne _03805870
|
|
mov r1, #0
|
|
strh r1, [r0, #0x3a]
|
|
strh r1, [r0, #0x38]
|
|
bl EnableIrqFlag
|
|
mov r5, r0
|
|
mov r0, #0x40
|
|
bl sub_037FB8F0
|
|
ldr r1, _03805930 ; =sub_0380593C
|
|
mov r0, #0x40
|
|
bl sub_03805D98
|
|
bl sub_03805DC0
|
|
ldr r1, _0380592C ; =_0380B1FC
|
|
ldr r2, _03805934 ; =0x0400010C
|
|
ldrh r3, [r1, #0x34]
|
|
mov r0, r5
|
|
strh r3, [r2]
|
|
ldrh r1, [r1, #0x36]
|
|
orr r1, r1, #0xc0
|
|
strh r1, [r2, #2]
|
|
bl SetIrqFlag
|
|
ldr r0, [r4, #4]
|
|
mov r1, #0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl sub_03803A48
|
|
ldr r0, _0380592C ; =_0380B1FC
|
|
mov r1, #2
|
|
str r1, [r0, #0x20]
|
|
b _03805920
|
|
_03805870:
|
|
mov r0, r2, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
mov r1, #3
|
|
bl sub_03803A48
|
|
b _03805920
|
|
_03805884:
|
|
ldr r0, _0380592C ; =_0380B1FC
|
|
ldr r1, [r0, #0x20]
|
|
sub r0, r1, #3
|
|
cmp r0, #1
|
|
bhi _03805900
|
|
ldr r1, _03805938 ; =0x0400010E
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #0x80
|
|
strh r0, [r1]
|
|
bl EnableIrqFlag
|
|
mov r4, r0
|
|
mov r0, #0x40
|
|
mov r1, #0
|
|
bl sub_03805D98
|
|
bl sub_03805E20
|
|
mov r0, r4
|
|
bl SetIrqFlag
|
|
ldr r0, _0380592C ; =_0380B1FC
|
|
mov r1, #0
|
|
ldr r0, [r0, #0x20]
|
|
cmp r0, #3
|
|
bne _038058E8
|
|
mov r0, #0x42
|
|
bl sub_03803A48
|
|
b _038058F0
|
|
_038058E8:
|
|
mov r0, #0x51
|
|
bl sub_03803A48
|
|
_038058F0:
|
|
ldr r0, _0380592C ; =_0380B1FC
|
|
mov r1, #0
|
|
str r1, [r0, #0x20]
|
|
b _03805920
|
|
_03805900:
|
|
cmp r1, #3
|
|
mov r1, #3
|
|
bne _03805918
|
|
mov r0, #0x42
|
|
bl sub_03803A48
|
|
b _03805920
|
|
_03805918:
|
|
mov r0, #0x51
|
|
bl sub_03803A48
|
|
_03805920:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805928: .word 0x027FFF94
|
|
_0380592C: .word _0380B1FC
|
|
_03805930: .word sub_0380593C
|
|
_03805934: .word 0x0400010C
|
|
_03805938: .word 0x0400010E
|
|
arm_func_end sub_03805714
|
|
|
|
arm_func_start sub_0380593C
|
|
sub_0380593C: ; 0x0380593C
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_03805970
|
|
ldr r3, _03805968 ; =0x0380FFF8
|
|
ldr r0, _0380596C ; =0x04000214
|
|
ldr r2, [r3]
|
|
mov r1, #0x40
|
|
orr r2, r2, #0x40
|
|
str r2, [r3]
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805968: .word 0x0380FFF8
|
|
_0380596C: .word 0x04000214
|
|
arm_func_end sub_0380593C
|
|
|
|
arm_func_start sub_03805970
|
|
sub_03805970: ; 0x03805970
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
ldr r4, _03805B00 ; =_0380B1FC
|
|
ldrh r5, [r4, #0x26]
|
|
and r0, r5, #4
|
|
cmp r0, #4
|
|
ldrh r6, [r4, #0x38]
|
|
bne _03805990
|
|
b _03805994
|
|
_03805990:
|
|
ldrh r7, [r4, #0x3a]
|
|
_03805994:
|
|
beq _0380599C
|
|
b _038059A0
|
|
_0380599C:
|
|
ldr r7, _03805B04 ; =0x0000FFFF
|
|
_038059A0:
|
|
bl sub_03803C5C
|
|
cmp r0, #0
|
|
bne _03805A0C
|
|
mov r0, #2
|
|
bl sub_03803B0C
|
|
cmp r0, #0
|
|
beq _03805A0C
|
|
and r0, r5, #1
|
|
cmp r0, #1
|
|
bne _038059EC
|
|
bl sub_03805C64
|
|
tst r5, #2
|
|
beq _038059D8
|
|
b _038059DC
|
|
_038059D8:
|
|
mov r7, r0
|
|
_038059DC:
|
|
bne _038059E4
|
|
b _038059E8
|
|
_038059E4:
|
|
eor r7, r0, #0x8000
|
|
_038059E8:
|
|
b _03805A0C
|
|
_038059EC:
|
|
bl sub_03805B10
|
|
tst r5, #2
|
|
beq _038059FC
|
|
b _03805A00
|
|
_038059FC:
|
|
mov r7, r0
|
|
_03805A00:
|
|
bne _03805A08
|
|
b _03805A0C
|
|
_03805A08:
|
|
eor r7, r0, #0x80
|
|
_03805A0C:
|
|
and r0, r5, #1
|
|
ldr r3, _03805B08 ; =0x027FFC00
|
|
ldr r1, [r4, #0x2c]
|
|
cmp r0, #1
|
|
bne _03805A3C
|
|
ldr r2, [r4, #0x28]
|
|
strh r7, [r2, r1]!
|
|
str r2, [r3, #0x390]
|
|
add r3, r3, #0x394
|
|
strh r7, [r3]
|
|
add r1, r1, #2
|
|
b _03805A74
|
|
_03805A3C:
|
|
and r7, r7, #0xff
|
|
tst r1, #1
|
|
bne _03805A54
|
|
mov r6, r7
|
|
add r1, r1, #1
|
|
b _03805A74
|
|
_03805A54:
|
|
orr r0, r6, r7, lsl #8
|
|
ldr r2, [r4, #0x28]
|
|
sub r1, r1, #1
|
|
strh r0, [r2, r1]!
|
|
str r2, [r3, #0x390]
|
|
add r3, r3, #0x394
|
|
strh r0, [r3]
|
|
add r1, r1, #2
|
|
_03805A74:
|
|
strh r6, [r4, #0x38]
|
|
strh r7, [r4, #0x3a]
|
|
ldr r0, [r4, #0x30]
|
|
cmp r1, r0
|
|
bhs _03805A8C
|
|
b _03805A90
|
|
_03805A8C:
|
|
mov r1, #0
|
|
_03805A90:
|
|
str r1, [r4, #0x2c]
|
|
blo _03805AF8
|
|
ldrh r0, [r4, #0x24]
|
|
and r0, r0, #0x10
|
|
cmp r0, #0x10
|
|
bne _03805AB8
|
|
mov r0, #0x51
|
|
mov r1, #0
|
|
bl sub_03803A48
|
|
b _03805AF8
|
|
_03805AB8:
|
|
mov r0, #2
|
|
mov r1, #0x42
|
|
mov r2, #0
|
|
bl sub_03803B7C
|
|
cmp r0, #0
|
|
bne _03805AE0
|
|
mov r0, #0x51
|
|
mov r1, #4
|
|
bl sub_03803A48
|
|
b _03805AF8
|
|
_03805AE0:
|
|
mov r0, #4
|
|
str r0, [r4, #0x20]
|
|
ldr r1, _03805B0C ; =0x0400010E
|
|
ldrh r0, [r1]
|
|
bic r0, r0, #0x80
|
|
strh r0, [r1]
|
|
_03805AF8:
|
|
ldmia sp!, {r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805B00: .word _0380B1FC
|
|
_03805B04: .word 0x0000FFFF
|
|
_03805B08: .word 0x027FFC00
|
|
_03805B0C: .word 0x0400010E
|
|
arm_func_end sub_03805970
|
|
|
|
arm_func_start sub_03805B10
|
|
sub_03805B10: ; 0x03805B10
|
|
stmdb sp!, {r4, lr}
|
|
ldr r2, _03805C1C ; =0x040001C0
|
|
_03805B18:
|
|
ldrh r0, [r2]
|
|
tst r0, #0x80
|
|
bne _03805B18
|
|
ldr r1, _03805C20 ; =0x00008A01
|
|
ldr r0, _03805C24 ; =0x040001C2
|
|
strh r1, [r2]
|
|
mov r1, #0xec
|
|
strh r1, [r0]
|
|
sub r1, r0, #2
|
|
_03805B3C:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _03805B3C
|
|
bl sub_03805C34
|
|
ldr r2, _03805C28 ; =0x00008201
|
|
ldr r1, _03805C1C ; =0x040001C0
|
|
mov r4, r0, lsl #0x18
|
|
strh r2, [r1]
|
|
bl sub_03805C34
|
|
ldr r2, _03805C2C ; =_0380B238
|
|
ldr r1, _03805C30 ; =0x00007F80
|
|
orr r0, r0, r4, lsr #16
|
|
and r1, r0, r1
|
|
ldr r0, [r2, #0x10]
|
|
mov r1, r1, lsl #9
|
|
add r3, r0, r1, lsr #16
|
|
str r3, [r2, #0x10]
|
|
ldr r0, [r2, #0xc]
|
|
add r0, r0, #1
|
|
str r0, [r2, #0xc]
|
|
cmp r0, #0x1000
|
|
blo _03805BEC
|
|
ldrsb r4, [r2]
|
|
mov r0, r3, lsr #0xc
|
|
sub r0, r0, #0x80
|
|
mov r0, r0, lsl #0x18
|
|
cmp r4, r0, asr #24
|
|
mov r0, r0, asr #0x18
|
|
cmplt r4, #0xc
|
|
addlt r0, r4, #1
|
|
strltb r0, [r2]
|
|
blt _03805BDC
|
|
cmp r0, r4
|
|
bge _03805BDC
|
|
mvn r0, #0xb
|
|
cmp r4, r0
|
|
ldrgt r0, _03805C2C ; =_0380B238
|
|
ldrgtsb r2, [r0]
|
|
subgt r2, r2, #1
|
|
strgtb r2, [r0]
|
|
_03805BDC:
|
|
ldr r0, _03805C2C ; =_0380B238
|
|
mov r2, #0
|
|
str r2, [r0, #0xc]
|
|
str r2, [r0, #0x10]
|
|
_03805BEC:
|
|
ldr r0, _03805C2C ; =_0380B238
|
|
ldrsb r0, [r0]
|
|
rsb r0, r0, r1, lsr #16
|
|
cmp r0, #0xff
|
|
movgt r0, #0xff
|
|
bgt _03805C0C
|
|
cmp r0, #0
|
|
movlt r0, #0
|
|
_03805C0C:
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805C1C: .word 0x040001C0
|
|
_03805C20: .word 0x00008A01
|
|
_03805C24: .word 0x040001C2
|
|
_03805C28: .word 0x00008201
|
|
_03805C2C: .word _0380B238
|
|
_03805C30: .word 0x00007F80
|
|
arm_func_end sub_03805B10
|
|
|
|
arm_func_start sub_03805C34
|
|
sub_03805C34: ; 0x03805C34
|
|
ldr r0, _03805C60 ; =0x040001C2
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
sub r1, r0, #2
|
|
_03805C44:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _03805C44
|
|
ldr r0, _03805C60 ; =0x040001C2
|
|
ldrh r0, [r0]
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_03805C60: .word 0x040001C2
|
|
arm_func_end sub_03805C34
|
|
|
|
arm_func_start sub_03805C64
|
|
sub_03805C64: ; 0x03805C64
|
|
stmdb sp!, {r4, lr}
|
|
ldr r2, _03805D7C ; =0x040001C0
|
|
_03805C6C:
|
|
ldrh r0, [r2]
|
|
tst r0, #0x80
|
|
bne _03805C6C
|
|
ldr r1, _03805D80 ; =0x00008A01
|
|
ldr r0, _03805D84 ; =0x040001C2
|
|
strh r1, [r2]
|
|
mov r1, #0xe4
|
|
strh r1, [r0]
|
|
sub r1, r0, #2
|
|
_03805C90:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x80
|
|
bne _03805C90
|
|
bl sub_03805C34
|
|
ldr r2, _03805D88 ; =0x00008201
|
|
ldr r1, _03805D7C ; =0x040001C0
|
|
mov r4, r0, lsl #0x18
|
|
strh r2, [r1]
|
|
bl sub_03805C34
|
|
ldr r3, _03805D8C ; =_0380B238
|
|
ldr r1, _03805D90 ; =0x00007FF8
|
|
orr r0, r0, r4, lsr #16
|
|
and r2, r0, r1
|
|
ldr r0, [r3, #4]
|
|
mov r2, r2, lsl #0x11
|
|
add r4, r0, r2, lsr #16
|
|
str r4, [r3, #4]
|
|
ldr r0, [r3, #8]
|
|
add r0, r0, #1
|
|
str r0, [r3, #8]
|
|
cmp r0, #0x100
|
|
blo _03805D48
|
|
mov r0, r1, lsl #1
|
|
and r0, r0, r4, lsr #8
|
|
ldrsh r4, [r3, #2]
|
|
sub r0, r0, #0x8000
|
|
mov r0, r0, lsl #0x10
|
|
cmp r4, r0, asr #16
|
|
mov r1, r0, asr #0x10
|
|
cmplt r4, #0xc00
|
|
addlt r0, r4, #0x10
|
|
strlth r0, [r3, #2]
|
|
blt _03805D38
|
|
cmp r1, r4
|
|
bge _03805D38
|
|
mov r0, #0xc00
|
|
rsb r0, r0, #0
|
|
cmp r4, r0
|
|
ldrgt r0, _03805D8C ; =_0380B238
|
|
ldrgtsh r1, [r0, #2]
|
|
subgt r1, r1, #0x10
|
|
strgth r1, [r0, #2]
|
|
_03805D38:
|
|
ldr r0, _03805D8C ; =_0380B238
|
|
mov r1, #0
|
|
str r1, [r0, #8]
|
|
str r1, [r0, #4]
|
|
_03805D48:
|
|
ldr r1, _03805D8C ; =_0380B238
|
|
ldr r0, _03805D94 ; =0x0000FFF0
|
|
ldrsh r1, [r1, #2]
|
|
rsb r1, r1, r2, lsr #16
|
|
cmp r1, r0
|
|
movgt r1, r0
|
|
bgt _03805D6C
|
|
cmp r1, #0
|
|
movlt r1, #0
|
|
_03805D6C:
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805D7C: .word 0x040001C0
|
|
_03805D80: .word 0x00008A01
|
|
_03805D84: .word 0x040001C2
|
|
_03805D88: .word 0x00008201
|
|
_03805D8C: .word _0380B238
|
|
_03805D90: .word 0x00007FF8
|
|
_03805D94: .word 0x0000FFF0
|
|
arm_func_end sub_03805C64
|
|
|
|
arm_func_start sub_03805D98
|
|
sub_03805D98: ; 0x03805D98
|
|
ldr r2, _03805DBC ; =_038074F4
|
|
mov r3, #0
|
|
_03805DA0:
|
|
tst r0, #1
|
|
strne r1, [r2, r3, lsl #2]
|
|
add r3, r3, #1
|
|
cmp r3, #0x19
|
|
mov r0, r0, lsr #1
|
|
blt _03805DA0
|
|
bx lr
|
|
.align 2, 0
|
|
_03805DBC: .word _038074F4
|
|
arm_func_end sub_03805D98
|
|
|
|
arm_func_start sub_03805DC0
|
|
sub_03805DC0: ; 0x03805DC0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _03805E14 ; =0x0380FFFC
|
|
ldr r0, _03805E18 ; =sub_03805E64
|
|
ldr r2, [r3]
|
|
cmp r2, r0
|
|
beq _03805E0C
|
|
ldr r0, _03805E1C ; =_0380B24C
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
sub r1, r3, #0x17c
|
|
str r1, [r0, #4]
|
|
mov r1, #0x40
|
|
str r1, [r0, #8]
|
|
str r2, [r0, #0xc]
|
|
bl EnableIrqFlag
|
|
ldr r2, _03805E18 ; =sub_03805E64
|
|
ldr r1, _03805E14 ; =0x0380FFFC
|
|
str r2, [r1]
|
|
bl SetIrqFlag
|
|
_03805E0C:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805E14: .word 0x0380FFFC
|
|
_03805E18: .word sub_03805E64
|
|
_03805E1C: .word _0380B24C
|
|
arm_func_end sub_03805DC0
|
|
|
|
arm_func_start sub_03805E20
|
|
sub_03805E20: ; 0x03805E20
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _03805E58 ; =0x0380FFFC
|
|
ldr r0, _03805E5C ; =sub_03805E64
|
|
ldr r1, [r1]
|
|
cmp r1, r0
|
|
bne _03805E50
|
|
bl EnableIrqFlag
|
|
ldr r1, _03805E60 ; =_0380B24C
|
|
ldr r2, _03805E58 ; =0x0380FFFC
|
|
ldr r1, [r1, #0xc]
|
|
str r1, [r2]
|
|
bl SetIrqFlag
|
|
_03805E50:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03805E58: .word 0x0380FFFC
|
|
_03805E5C: .word sub_03805E64
|
|
_03805E60: .word _0380B24C
|
|
arm_func_end sub_03805E20
|
|
|
|
arm_func_start sub_03805E64
|
|
sub_03805E64: ; 0x03805E64
|
|
mov ip, #0x4000000
|
|
add r1, ip, #0x208
|
|
ldrh r0, [r1]
|
|
tst r0, r0
|
|
beq _03805E7C
|
|
b _03805E80
|
|
_03805E7C:
|
|
bx lr
|
|
_03805E80:
|
|
ldr r3, [ip, #0x210]
|
|
ldr r1, [ip, #0x214]
|
|
ands r2, r1, r3
|
|
beq _03805E94
|
|
b _03805E98
|
|
_03805E94:
|
|
bx lr
|
|
_03805E98:
|
|
ldr r0, _03806080 ; =0x01DF3FFF
|
|
tst r2, r0
|
|
beq _03805EA8
|
|
b _03805EAC
|
|
_03805EA8:
|
|
str r2, [ip, #0x214]
|
|
_03805EAC:
|
|
beq _03805EB4
|
|
b _03805EB8
|
|
_03805EB4:
|
|
bx lr
|
|
_03805EB8:
|
|
stmdb sp!, {lr}
|
|
mrs r0, spsr
|
|
stmdb sp!, {r0}
|
|
stmdb sp, {sp, lr} ^
|
|
sub sp, sp, #8
|
|
mov r0, #0x9f
|
|
msr cpsr_c, r0
|
|
ldr r1, _03806084 ; =_038076A4
|
|
ldrh r0, [r1, #2]
|
|
add r0, r0, #1
|
|
strh r0, [r1, #2]
|
|
ldr r1, _03806088 ; =_0380B24C
|
|
cmp r0, #1
|
|
beq _03805EF4
|
|
b _03805EF8
|
|
_03805EF4:
|
|
mov r0, sp
|
|
_03805EF8:
|
|
beq _03805F00
|
|
b _03805F04
|
|
_03805F00:
|
|
ldr sp, [r1, #4]
|
|
_03805F04:
|
|
beq _03805F0C
|
|
b _03805F10
|
|
_03805F0C:
|
|
str r0, [r1, #4]
|
|
_03805F10:
|
|
stmdb sp!, {r3}
|
|
ldr r1, _0380608C ; =_03807210
|
|
ldr r0, [r1]
|
|
tst r0, r2
|
|
bne _03805F28
|
|
b _03805F2C
|
|
_03805F28:
|
|
str r0, [ip, #0x214]
|
|
_03805F2C:
|
|
bne _03805F34
|
|
b _03805F38
|
|
_03805F34:
|
|
ldr r0, [r1, #4]
|
|
_03805F38:
|
|
bne _03805F40
|
|
b _03805F44
|
|
_03805F40:
|
|
ldr r3, _03806090 ; =_038074F4
|
|
_03805F44:
|
|
bne _03805F4C
|
|
b _03805F50
|
|
_03805F4C:
|
|
ldr r0, [r3, r0, lsl #2]
|
|
_03805F50:
|
|
bne _03805FC0
|
|
mov r3, #1
|
|
_03805F58:
|
|
ldr r0, [r1, r3, lsl #3]
|
|
tst r0, r2
|
|
beq _03805F68
|
|
b _03805F6C
|
|
_03805F68:
|
|
add r3, r3, #1
|
|
_03805F6C:
|
|
beq _03805F58
|
|
str r0, [ip, #0x214]
|
|
add r0, r1, r3, lsl #3
|
|
ldr r2, [r0, #4]
|
|
ldr r3, _03806090 ; =_038074F4
|
|
ldr r0, [r3, r2, lsl #2]
|
|
ldr r2, _03806084 ; =_038076A4
|
|
ldrh r3, [r2, #2]
|
|
cmp r3, #1
|
|
beq _03805F98
|
|
b _03805F9C
|
|
_03805F98:
|
|
ldr r2, [r1]
|
|
_03805F9C:
|
|
beq _03805FA4
|
|
b _03805FA8
|
|
_03805FA4:
|
|
str r2, [ip, #0x210]
|
|
_03805FA8:
|
|
beq _03805FB0
|
|
b _03805FB4
|
|
_03805FB0:
|
|
mov r2, #0x1f
|
|
_03805FB4:
|
|
beq _03805FBC
|
|
b _03805FC0
|
|
_03805FBC:
|
|
msr cpsr_c, r2
|
|
_03805FC0:
|
|
ldr r1, [ip, #0x210]
|
|
stmdb sp!, {r1}
|
|
add lr, pc, #0x0 ; =sub_03805FD0
|
|
bx r0
|
|
arm_func_end sub_03805E64
|
|
|
|
arm_func_start sub_03805FD0
|
|
sub_03805FD0: ; 0x03805FD0
|
|
mov r0, #0x9f
|
|
msr cpsr_c, r0
|
|
mov ip, #0x4000000
|
|
ldmia sp!, {r0}
|
|
ldr r1, [ip, #0x210]
|
|
eor r2, r0, r1
|
|
and r1, r2, r1
|
|
and r0, r2, r0
|
|
ldmia sp!, {r3}
|
|
orr r3, r3, r1
|
|
bic r3, r3, r0
|
|
str r3, [ip, #0x210]
|
|
ldr r2, _03806084 ; =_038076A4
|
|
ldr r3, _03806088 ; =_0380B24C
|
|
ldrh r0, [r2, #2]
|
|
subs r1, r0, #1
|
|
strh r1, [r2, #2]
|
|
beq _0380601C
|
|
b _03806020
|
|
_0380601C:
|
|
mov r0, sp
|
|
_03806020:
|
|
beq _03806028
|
|
b _0380602C
|
|
_03806028:
|
|
ldr sp, [r3, #4]
|
|
_0380602C:
|
|
beq _03806034
|
|
b _03806038
|
|
_03806034:
|
|
str r0, [r3, #4]
|
|
_03806038:
|
|
mov r0, #0x92
|
|
msr cpsr_c, r0
|
|
ldmia sp, {sp, lr} ^
|
|
mov r0, r0
|
|
add sp, sp, #8
|
|
ldmia sp!, {r0}
|
|
msr spsr_fc, r0
|
|
tst r1, r1
|
|
beq _03806060
|
|
b _03806064
|
|
_03806060:
|
|
ldr r0, _03806094 ; =ReturnFromInterrupt
|
|
_03806064:
|
|
beq _0380606C
|
|
b _03806070
|
|
_0380606C:
|
|
add lr, pc, #0x0 ; =0x0200E25C
|
|
_03806070:
|
|
beq _03806078
|
|
b _0380607C
|
|
_03806078:
|
|
bx r0
|
|
_0380607C:
|
|
ldmia sp!, {pc}
|
|
.align 2, 0
|
|
_03806080: .word 0x01DF3FFF
|
|
_03806084: .word _038076A4
|
|
_03806088: .word _0380B24C
|
|
_0380608C: .word _03807210
|
|
_03806090: .word _038074F4
|
|
arm_func_end sub_03805FD0
|
|
_03806094: .word ReturnFromInterrupt
|
|
|
|
arm_func_start sub_03806098
|
|
sub_03806098: ; 0x03806098
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _038060C8 ; =_0380B260
|
|
mov r3, #0
|
|
ldr r2, _038060CC ; =0x05000001
|
|
add r0, sp, #0
|
|
str r3, [sp]
|
|
bl sub_038060D4
|
|
bl sub_037FBBFC
|
|
ldr r1, _038060D0 ; =_0380B25C
|
|
strh r0, [r1, #6]
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038060C8: .word _0380B260
|
|
_038060CC: .word 0x05000001
|
|
_038060D0: .word _0380B25C
|
|
arm_func_end sub_03806098
|
|
|
|
arm_func_start sub_038060D4
|
|
sub_038060D4: ; 0x038060D4
|
|
ldr ip, _038060DC ; =sub_038037F8
|
|
bx ip
|
|
.align 2, 0
|
|
_038060DC: .word sub_038037F8 + 1
|
|
arm_func_end sub_038060D4
|
|
|
|
arm_func_start sub_038060E0
|
|
sub_038060E0: ; 0x038060E0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _03806128 ; =0x027FFC30
|
|
ldr r0, _0380612C ; =0x0000FFFF
|
|
ldrh r1, [r2]
|
|
cmp r1, r0
|
|
moveq r0, #0
|
|
beq _03806120
|
|
ldrb r0, [r2, #5]
|
|
mov r0, r0, lsl #0x1e
|
|
movs r0, r0, lsr #0x1f
|
|
bne _03806110
|
|
bl sub_03806130
|
|
_03806110:
|
|
ldr r0, _03806128 ; =0x027FFC30
|
|
ldrb r0, [r0, #5]
|
|
mov r0, r0, lsl #0x1e
|
|
mov r0, r0, lsr #0x1f
|
|
_03806120:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03806128: .word 0x027FFC30
|
|
_0380612C: .word 0x0000FFFF
|
|
arm_func_end sub_038060E0
|
|
|
|
arm_func_start sub_03806130
|
|
sub_03806130: ; 0x03806130
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x10
|
|
ldr r2, _03806248 ; =0x027FFC30
|
|
mov r4, #1
|
|
ldrh r1, [r2]
|
|
rsb r0, r4, #0x10000
|
|
cmp r1, r0
|
|
moveq r0, #0
|
|
beq _0380623C
|
|
ldrb r0, [r2, #5]
|
|
mov r0, r0, lsl #0x1e
|
|
mov r0, r0, lsr #0x1f
|
|
cmp r0, #1
|
|
moveq r0, #0
|
|
beq _0380623C
|
|
ldr r0, _0380624C ; =_0380B25C
|
|
add r1, sp, #8
|
|
ldrh r0, [r0, #6]
|
|
bl sub_038062D0
|
|
cmp r0, #0
|
|
bne _03806194
|
|
ldr r0, [sp, #0xc]
|
|
bl SetIrqFlag
|
|
mov r0, r4
|
|
b _0380623C
|
|
_03806194:
|
|
add r0, sp, #0
|
|
bl sub_03806254
|
|
mov r0, #0x8000000
|
|
ldrb r2, [r0, #0xb2]
|
|
cmp r2, #0x96
|
|
bne _038061C0
|
|
ldr r1, _03806248 ; =0x027FFC30
|
|
ldrh r0, [r0, #0xbe]
|
|
ldrh r1, [r1]
|
|
cmp r1, r0
|
|
bne _03806204
|
|
_038061C0:
|
|
cmp r2, #0x96
|
|
ldrne r1, _03806248 ; =0x027FFC30
|
|
ldrne r0, _03806250 ; =0x0801FFFE
|
|
ldrneh r1, [r1]
|
|
ldrneh r0, [r0]
|
|
cmpne r1, r0
|
|
bne _03806204
|
|
ldr r2, _03806248 ; =0x027FFC30
|
|
mov r0, #0x8000000
|
|
ldr r1, [r2, #8]
|
|
ldr r0, [r0, #0xac]
|
|
cmp r1, r0
|
|
beq _03806218
|
|
ldrb r0, [r2, #5]
|
|
mov r0, r0, lsl #0x1f
|
|
movs r0, r0, lsr #0x1f
|
|
beq _03806218
|
|
_03806204:
|
|
ldr r1, _03806248 ; =0x027FFC30
|
|
mov r4, #0
|
|
ldrb r0, [r1, #5]
|
|
orr r0, r0, #2
|
|
strb r0, [r1, #5]
|
|
_03806218:
|
|
ldr r0, [sp]
|
|
bl sub_03806298
|
|
ldr r0, [sp, #4]
|
|
bl sub_038062B4
|
|
ldr r0, _0380624C ; =_0380B25C
|
|
add r1, sp, #8
|
|
ldrh r0, [r0, #6]
|
|
bl sub_03806320
|
|
mov r0, r4
|
|
_0380623C:
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03806248: .word 0x027FFC30
|
|
_0380624C: .word _0380B25C
|
|
_03806250: .word 0x0801FFFE
|
|
arm_func_end sub_03806130
|
|
|
|
arm_func_start sub_03806254
|
|
sub_03806254: ; 0x03806254
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _03806294 ; =0x04000204
|
|
ldrh r1, [r2]
|
|
and r1, r1, #0xc
|
|
mov r1, r1, asr #2
|
|
str r1, [r0]
|
|
ldrh r1, [r2]
|
|
and r1, r1, #0x10
|
|
mov r1, r1, asr #4
|
|
str r1, [r0, #4]
|
|
mov r0, #3
|
|
bl sub_03806298
|
|
mov r0, #0
|
|
bl sub_038062B4
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03806294: .word 0x04000204
|
|
arm_func_end sub_03806254
|
|
|
|
arm_func_start sub_03806298
|
|
sub_03806298: ; 0x03806298
|
|
ldr r2, _038062B0 ; =0x04000204
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #0xc
|
|
orr r0, r1, r0, lsl #2
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_038062B0: .word 0x04000204
|
|
arm_func_end sub_03806298
|
|
|
|
arm_func_start sub_038062B4
|
|
sub_038062B4: ; 0x038062B4
|
|
ldr r2, _038062CC ; =0x04000204
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #0x10
|
|
orr r0, r1, r0, lsl #4
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_038062CC: .word 0x04000204
|
|
arm_func_end sub_038062B4
|
|
|
|
arm_func_start sub_038062D0
|
|
sub_038062D0: ; 0x038062D0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
mov r5, r0
|
|
bl EnableIrqFlag
|
|
str r0, [r4, #4]
|
|
ldr r0, _0380631C ; =0x027FFFE8
|
|
bl sub_037FBBF4
|
|
ands r0, r0, #0x80
|
|
str r0, [r4]
|
|
bne _03806308
|
|
mov r0, r5
|
|
bl sub_037FBB84
|
|
cmp r0, #0
|
|
bne _03806310
|
|
_03806308:
|
|
mov r0, #1
|
|
b _03806314
|
|
_03806310:
|
|
mov r0, #0
|
|
_03806314:
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0380631C: .word 0x027FFFE8
|
|
arm_func_end sub_038062D0
|
|
|
|
arm_func_start sub_03806320
|
|
sub_03806320: ; 0x03806320
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r1
|
|
ldr r1, [r4]
|
|
cmp r1, #0
|
|
bne _03806338
|
|
bl sub_037FBB78
|
|
_03806338:
|
|
ldr r0, [r4, #4]
|
|
bl SetIrqFlag
|
|
ldmia sp!, {r4, lr}
|
|
bx lr
|
|
arm_func_end sub_03806320
|
|
|
|
arm_func_start sub_03806348
|
|
sub_03806348: ; 0x03806348
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, #1
|
|
mov r5, #0xd
|
|
mov r4, #0
|
|
b _03806368
|
|
_03806360:
|
|
mov r0, r6
|
|
bl sub_037FBA0C
|
|
_03806368:
|
|
mov r0, r5
|
|
mov r1, r7
|
|
mov r2, r4
|
|
bl sub_037FE410
|
|
cmp r0, #0
|
|
bne _03806360
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
arm_func_end sub_03806348
|
|
|
|
arm_func_start sub_03806388
|
|
sub_03806388: ; 0x03806388
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_037FD128
|
|
bl sub_037FD34C
|
|
ldr r0, _03806410 ; =_0380B294
|
|
bl sub_037FD3A0
|
|
ldr r0, _03806414 ; =_0380B264
|
|
ldr r1, [r0, #0x14]
|
|
cmp r1, #0
|
|
bne _03806408
|
|
mov r1, #1
|
|
str r1, [r0, #0x14]
|
|
bl sub_03806098
|
|
bl sub_037FBBFC
|
|
mvn r1, #2
|
|
cmp r0, r1
|
|
beq _03806408
|
|
ldr r1, _03806414 ; =_0380B264
|
|
strh r0, [r1]
|
|
bl sub_037FE2B4
|
|
ldr r1, _03806418 ; =sub_0380659C
|
|
mov r0, #0xd
|
|
bl sub_037FE39C
|
|
bl sub_03806428
|
|
ldr r1, _0380641C ; =sub_038065CC
|
|
mov r0, #0xd
|
|
bl sub_037FE39C
|
|
ldr r1, _03806420 ; =sub_03806600
|
|
mov r0, #0x10
|
|
bl sub_037FE39C
|
|
ldr r1, _03806424 ; =sub_03806944
|
|
mov r0, #0x11
|
|
bl sub_037FE39C
|
|
_03806408:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03806410: .word _0380B294
|
|
_03806414: .word _0380B264
|
|
_03806418: .word sub_0380659C
|
|
_0380641C: .word sub_038065CC
|
|
_03806420: .word sub_03806600
|
|
_03806424: .word sub_03806944
|
|
arm_func_end sub_03806388
|
|
|
|
arm_func_start sub_03806428
|
|
sub_03806428: ; 0x03806428
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
ldr r0, _03806584 ; =_0380B264
|
|
ldr r1, [r0, #8]
|
|
cmp r1, #0
|
|
bne _0380657C
|
|
ldr r1, _03806588 ; =0x04000300
|
|
mov r2, #1
|
|
ldrh r1, [r1]
|
|
str r2, [r0, #8]
|
|
tst r1, #1
|
|
beq _0380657C
|
|
mov r0, #0x40000
|
|
bl sub_037FB8A4
|
|
ldr r2, _0380658C ; =0x04000208
|
|
mov r1, #1
|
|
ldrh sb, [r2]
|
|
ldr r5, _03806584 ; =_0380B264
|
|
mov r4, r0
|
|
strh r1, [r2]
|
|
mov r6, #0x100
|
|
b _03806484
|
|
_0380647C:
|
|
mov r0, r6
|
|
bl sub_037FBA0C
|
|
_03806484:
|
|
ldr r0, [r5, #0x28]
|
|
cmp r0, #1
|
|
bne _0380647C
|
|
ldr r0, _03806584 ; =_0380B264
|
|
mov r1, #0x8000000
|
|
ldr r2, [r0, #0x18]
|
|
ldr r0, _03806590 ; =0x01FFFFC0
|
|
add r8, r1, #4
|
|
and r0, r2, r0
|
|
mov r0, r0, lsr #6
|
|
mov r0, r0, lsl #5
|
|
add r5, r0, #0x2000000
|
|
mov r6, #1
|
|
bl sub_037FBBFC
|
|
mov r0, r0, lsl #0x10
|
|
mov r7, r0, lsr #0x10
|
|
mov r0, r7
|
|
bl sub_037FBB08
|
|
ldr ip, _03806594 ; =0x0000FFFF
|
|
mov sl, #0
|
|
eor r0, ip, #3
|
|
eor r1, ip, #0x84
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r2, r0, lsr #0x10
|
|
mov r3, r1, lsr #0x10
|
|
b _0380652C
|
|
_038064F0:
|
|
mov lr, ip
|
|
cmp sl, #0x4c
|
|
moveq lr, r3
|
|
beq _03806508
|
|
cmp sl, #0x4d
|
|
moveq lr, r2
|
|
_03806508:
|
|
add r0, r5, sl, lsl #1
|
|
mov r1, sl, lsl #1
|
|
ldrh r0, [r0, #4]
|
|
ldrh r1, [r8, r1]
|
|
and r0, lr, r0
|
|
cmp r0, r1
|
|
movne r6, #0
|
|
bne _03806534
|
|
add sl, sl, #1
|
|
_0380652C:
|
|
cmp sl, #0x4e
|
|
blt _038064F0
|
|
_03806534:
|
|
mov r0, r7
|
|
bl sub_037FBB78
|
|
mov r0, r7
|
|
bl sub_037FBCA4
|
|
ldr r2, _03806598 ; =0x027FFC30
|
|
and r0, r6, #0xff
|
|
ldrb r1, [r2, #5]
|
|
and r0, r0, #1
|
|
bic r1, r1, #1
|
|
orr r1, r1, r0
|
|
mov r0, #1
|
|
strb r1, [r2, #5]
|
|
bl sub_03806348
|
|
ldr r2, _0380658C ; =0x04000208
|
|
mov r0, r4
|
|
ldrh r1, [r2]
|
|
strh sb, [r2]
|
|
bl sub_037FB8A4
|
|
_0380657C:
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03806584: .word _0380B264
|
|
_03806588: .word 0x04000300
|
|
_0380658C: .word 0x04000208
|
|
_03806590: .word 0x01FFFFC0
|
|
_03806594: .word 0x0000FFFF
|
|
_03806598: .word 0x027FFC30
|
|
arm_func_end sub_03806428
|
|
|
|
arm_func_start sub_0380659C
|
|
sub_0380659C: ; 0x0380659C
|
|
stmdb sp!, {r3, lr}
|
|
and r0, r1, #0x3f
|
|
cmp r0, #1
|
|
ldreq r0, _038065C8 ; =_0380B264
|
|
moveq r2, #1
|
|
streq r1, [r0, #0x18]
|
|
streq r2, [r0, #0x28]
|
|
beq _038065C0
|
|
bl sub_037FDE70
|
|
_038065C0:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038065C8: .word _0380B264
|
|
arm_func_end sub_0380659C
|
|
|
|
arm_func_start sub_038065CC
|
|
sub_038065CC: ; 0x038065CC
|
|
stmdb sp!, {r3, lr}
|
|
and r0, r1, #0x3f
|
|
cmp r0, #2
|
|
bne _038065F4
|
|
mov r0, #0
|
|
bl sub_03806610
|
|
bl sub_037FE708
|
|
bl sub_0380528C
|
|
bl sub_037FDE70
|
|
b _038065F8
|
|
_038065F4:
|
|
bl sub_037FDE70
|
|
_038065F8:
|
|
ldmia sp!, {r3, lr}
|
|
bx lr
|
|
arm_func_end sub_038065CC
|
|
|
|
arm_func_start sub_03806600
|
|
sub_03806600: ; 0x03806600
|
|
ldr ip, _0380660C ; =sub_03806610
|
|
mov r0, r1
|
|
bx ip
|
|
.align 2, 0
|
|
_0380660C: .word sub_03806610
|
|
arm_func_end sub_03806600
|
|
|
|
arm_func_start sub_03806610
|
|
sub_03806610: ; 0x03806610
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
movs r5, r0
|
|
beq _0380664C
|
|
ldr r0, [r5]
|
|
cmp r0, #0
|
|
bne _0380664C
|
|
ldr r0, [r5, #0x44]
|
|
add r0, r0, #1
|
|
str r0, [r5, #0x44]
|
|
ldr r1, [r5, #0x40]
|
|
cmp r1, #0
|
|
beq _0380664C
|
|
ldr r0, [r5, #0x44]
|
|
cmp r0, r1
|
|
movhi r5, #0
|
|
_0380664C:
|
|
cmp r5, #0
|
|
ldrne r0, [r5, #0x3c]
|
|
cmpne r0, #0
|
|
bne _038066F0
|
|
bl EnableIrqFlag
|
|
ldr r4, _0380682C ; =_0380B264
|
|
mov sb, r0
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #2
|
|
bne _038066DC
|
|
mov sl, #0
|
|
ldr r7, _03806830 ; =0x027FFFE8
|
|
ldr r5, _03806834 ; =0x08001000
|
|
mov r6, sl
|
|
mov fp, #1
|
|
b _038066D4
|
|
_0380668C:
|
|
mov r0, r7
|
|
bl sub_037FBBF4
|
|
ands r8, r0, #0x80
|
|
bne _038066AC
|
|
ldrh r0, [r4]
|
|
bl sub_037FBB84
|
|
cmp r0, #0
|
|
bne _038066CC
|
|
_038066AC:
|
|
str r6, [r4, #4]
|
|
mov sl, fp
|
|
strh r6, [r5]
|
|
cmp r8, #0
|
|
bne _038066D4
|
|
ldrh r0, [r4]
|
|
bl sub_037FBB58
|
|
b _038066D4
|
|
_038066CC:
|
|
ldr r0, _03806838 ; =0x000080E8
|
|
bl sub_037FDD64
|
|
_038066D4:
|
|
cmp sl, #0
|
|
beq _0380668C
|
|
_038066DC:
|
|
ldr r0, _0380683C ; =_0380B294
|
|
bl sub_037FD5C0
|
|
mov r0, sb
|
|
bl SetIrqFlag
|
|
b _03806824
|
|
_038066F0:
|
|
cmp r5, #0
|
|
beq _03806824
|
|
ldr r0, _03806830 ; =0x027FFFE8
|
|
bl sub_037FBBF4
|
|
ands r4, r0, #0x80
|
|
bne _0380671C
|
|
ldr r0, _0380682C ; =_0380B264
|
|
ldrh r0, [r0]
|
|
bl sub_037FBB84
|
|
cmp r0, #0
|
|
bne _0380680C
|
|
_0380671C:
|
|
ldr r1, [r5]
|
|
ldr r0, [r5, #4]
|
|
cmp r1, r0
|
|
bne _03806764
|
|
ldr r0, _0380682C ; =_0380B264
|
|
mov r2, #0
|
|
ldr r1, _03806834 ; =0x08001000
|
|
str r2, [r0, #4]
|
|
strh r2, [r1]
|
|
str r5, [sp]
|
|
ldr r1, [r5, #8]
|
|
ldr r0, _0380683C ; =_0380B294
|
|
ldr r3, _03806840 ; =sub_03806610
|
|
mov r2, #0
|
|
bl sub_037FD4DC
|
|
mov r0, #0
|
|
str r0, [r5]
|
|
b _038067F4
|
|
_03806764:
|
|
tst r1, #1
|
|
ldr r1, _03806834 ; =0x08001000
|
|
beq _038067B4
|
|
ldr r0, _0380682C ; =_0380B264
|
|
mov r2, #0
|
|
str r2, [r0, #4]
|
|
strh r2, [r1]
|
|
str r5, [sp]
|
|
ldr r1, [r5]
|
|
ldr r0, _0380683C ; =_0380B294
|
|
mov r1, r1, lsr #1
|
|
add r1, r5, r1, lsl #2
|
|
ldr r1, [r1, #0x24]
|
|
ldr r3, _03806840 ; =sub_03806610
|
|
mov r2, #0
|
|
bl sub_037FD4DC
|
|
ldr r0, [r5]
|
|
add r0, r0, #1
|
|
str r0, [r5]
|
|
b _038067F4
|
|
_038067B4:
|
|
ldr r0, _0380682C ; =_0380B264
|
|
mov r2, #2
|
|
str r2, [r0, #4]
|
|
strh r2, [r1]
|
|
str r5, [sp]
|
|
ldr r1, [r5]
|
|
ldr r0, _0380683C ; =_0380B294
|
|
mov r1, r1, lsr #1
|
|
add r1, r5, r1, lsl #2
|
|
ldr r1, [r1, #0xc]
|
|
ldr r3, _03806840 ; =sub_03806610
|
|
mov r2, #0
|
|
bl sub_037FD4DC
|
|
ldr r0, [r5]
|
|
add r0, r0, #1
|
|
str r0, [r5]
|
|
_038067F4:
|
|
cmp r4, #0
|
|
bne _03806824
|
|
ldr r0, _0380682C ; =_0380B264
|
|
ldrh r0, [r0]
|
|
bl sub_037FBB58
|
|
b _03806824
|
|
_0380680C:
|
|
ldr r0, _0380683C ; =_0380B294
|
|
ldr r1, _03806844 ; =0x0000020B
|
|
ldr r3, _03806840 ; =sub_03806610
|
|
mov r2, #0
|
|
str r5, [sp]
|
|
bl sub_037FD4DC
|
|
_03806824:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0380682C: .word _0380B264
|
|
_03806830: .word 0x027FFFE8
|
|
_03806834: .word 0x08001000
|
|
_03806838: .word 0x000080E8
|
|
_0380683C: .word _0380B294
|
|
_03806840: .word sub_03806610
|
|
_03806844: .word 0x0000020B
|
|
arm_func_end sub_03806610
|
|
|
|
arm_func_start sub_03806848
|
|
sub_03806848: ; 0x03806848
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r1, _03806938 ; =_03807600
|
|
mvn r0, #0
|
|
ldr r3, [r1, #4]
|
|
cmp r3, r0
|
|
ldreq r0, _0380693C ; =0x027FFC3C
|
|
ldreq r0, [r0]
|
|
addeq r0, r0, #0xa
|
|
streq r0, [r1, #4]
|
|
beq _03806930
|
|
ldr r0, _03806940 ; =_0380B264
|
|
ldr r2, [r0, #0x10]
|
|
cmp r2, #0
|
|
ldreq r0, [r0, #0xc]
|
|
cmpeq r0, #0
|
|
bne _03806930
|
|
ldr r2, _0380693C ; =0x027FFC3C
|
|
ldr r0, [r2]
|
|
cmp r0, r3
|
|
blo _03806930
|
|
ldr r0, [r2]
|
|
add r0, r0, #0xa
|
|
str r0, [r1, #4]
|
|
bl sub_038060E0
|
|
ldr r1, _03806940 ; =_0380B264
|
|
str r0, [r1, #0xc]
|
|
bl sub_03806130
|
|
cmp r0, #0
|
|
bne _038068E0
|
|
ldr r0, _03806938 ; =_03807600
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldrne r0, _03806940 ; =_0380B264
|
|
strne r1, [r0, #0x10]
|
|
bne _03806930
|
|
ldr r0, _03806940 ; =_0380B264
|
|
str r1, [r0, #0xc]
|
|
_038068E0:
|
|
ldr r0, _03806940 ; =_0380B264
|
|
ldr r1, _03806938 ; =_03807600
|
|
ldr r0, [r0, #0xc]
|
|
mov r2, #0
|
|
str r2, [r1]
|
|
cmp r0, #0
|
|
beq _03806930
|
|
mov r7, #0x64
|
|
mov r6, #0xd
|
|
mov r5, #0x11
|
|
mov r4, r2
|
|
b _03806918
|
|
_03806910:
|
|
mov r0, r7
|
|
bl sub_037FC468
|
|
_03806918:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl sub_037FE410
|
|
cmp r0, #0
|
|
bne _03806910
|
|
_03806930:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_03806938: .word _03807600
|
|
_0380693C: .word 0x027FFC3C
|
|
_03806940: .word _0380B264
|
|
arm_func_end sub_03806848
|
|
|
|
arm_func_start sub_03806944
|
|
sub_03806944: ; 0x03806944
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
and r0, r1, #0x3f
|
|
cmp r0, #3
|
|
bne _038069AC
|
|
ldr r3, _038069B8 ; =0x04000204
|
|
ldr r0, _038069BC ; =0x01FFFFC0
|
|
ldrh r2, [r3]
|
|
and r0, r1, r0
|
|
mov r1, r0, lsr #6
|
|
bic r0, r2, #0x60
|
|
orr r0, r0, r1, lsl #5
|
|
strh r0, [r3]
|
|
mov r7, #1
|
|
mov r6, #0x11
|
|
mov r5, #0x12
|
|
mov r4, #0
|
|
b _03806990
|
|
_03806988:
|
|
mov r0, r7
|
|
bl sub_037FBA0C
|
|
_03806990:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl sub_037FE410
|
|
cmp r0, #0
|
|
bne _03806988
|
|
b _038069B0
|
|
_038069AC:
|
|
bl sub_037FDE70
|
|
_038069B0:
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038069B8: .word 0x04000204
|
|
_038069BC: .word 0x01FFFFC0
|
|
arm_func_end sub_03806944
|
|
|
|
arm_func_start sub_038069C0
|
|
sub_038069C0: ; 0x038069C0
|
|
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
mov r4, r1
|
|
orr r4, r4, #1
|
|
b _038069E0
|
|
arm_func_end sub_038069C0
|
|
|
|
arm_func_start sub_038069D0
|
|
sub_038069D0: ; 0x038069D0
|
|
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
eor r4, r1, r3
|
|
mov r4, r4, asr #1
|
|
mov r4, r4, lsl #1
|
|
_038069E0:
|
|
orrs r5, r3, r2
|
|
bne _038069F0
|
|
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
bx lr
|
|
_038069F0:
|
|
mov r5, r0, lsr #0x1f
|
|
add r5, r5, r1
|
|
mov r6, r2, lsr #0x1f
|
|
add r6, r6, r3
|
|
orrs r6, r5, r6
|
|
bne _03806A24
|
|
mov r1, r2
|
|
bl _s32_div_f
|
|
ands r4, r4, #1
|
|
movne r0, r1
|
|
mov r1, r0, asr #0x1f
|
|
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
bx lr
|
|
_03806A24:
|
|
cmp r1, #0
|
|
bge _03806A34
|
|
rsbs r0, r0, #0
|
|
rsc r1, r1, #0
|
|
_03806A34:
|
|
cmp r3, #0
|
|
bge _03806A44
|
|
rsbs r2, r2, #0
|
|
rsc r3, r3, #0
|
|
_03806A44:
|
|
orrs r5, r1, r0
|
|
beq _03806B68
|
|
mov r5, #0
|
|
mov r6, #1
|
|
cmp r3, #0
|
|
bmi _03806A70
|
|
_03806A5C:
|
|
add r5, r5, #1
|
|
adds r2, r2, r2
|
|
adcs r3, r3, r3
|
|
bpl _03806A5C
|
|
add r6, r6, r5
|
|
_03806A70:
|
|
cmp r1, #0
|
|
blt _03806A90
|
|
_03806A78:
|
|
cmp r6, #1
|
|
beq _03806A90
|
|
sub r6, r6, #1
|
|
adds r0, r0, r0
|
|
adcs r1, r1, r1
|
|
bpl _03806A78
|
|
_03806A90:
|
|
mov r7, #0
|
|
mov ip, #0
|
|
mov fp, #0
|
|
b _03806AB8
|
|
_03806AA0:
|
|
orr ip, ip, #1
|
|
subs r6, r6, #1
|
|
beq _03806B10
|
|
adds r0, r0, r0
|
|
adcs r1, r1, r1
|
|
adcs r7, r7, r7
|
|
_03806AB8:
|
|
subs r0, r0, r2
|
|
sbcs r1, r1, r3
|
|
sbcs r7, r7, #0
|
|
adds ip, ip, ip
|
|
adc fp, fp, fp
|
|
cmp r7, #0
|
|
bge _03806AA0
|
|
_03806AD4:
|
|
subs r6, r6, #1
|
|
beq _03806B08
|
|
adds r0, r0, r0
|
|
adcs r1, r1, r1
|
|
adc r7, r7, r7
|
|
adds r0, r0, r2
|
|
adcs r1, r1, r3
|
|
adc r7, r7, #0
|
|
adds ip, ip, ip
|
|
adc fp, fp, fp
|
|
cmp r7, #0
|
|
bge _03806AA0
|
|
b _03806AD4
|
|
_03806B08:
|
|
adds r0, r0, r2
|
|
adc r1, r1, r3
|
|
_03806B10:
|
|
ands r7, r4, #1
|
|
moveq r0, ip
|
|
moveq r1, fp
|
|
beq _03806B48
|
|
subs r7, r5, #0x20
|
|
movge r0, r1, lsr r7
|
|
bge _03806B6C
|
|
rsb r7, r5, #0x20
|
|
mov r0, r0, lsr r5
|
|
orr r0, r0, r1, lsl r7
|
|
mov r1, r1, lsr r5
|
|
b _03806B48
|
|
_03806B40:
|
|
mov r0, r1, lsr r7
|
|
mov r1, #0
|
|
_03806B48:
|
|
cmp r4, #0
|
|
blt _03806B58
|
|
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
bx lr
|
|
_03806B58:
|
|
rsbs r0, r0, #0
|
|
rsc r1, r1, #0
|
|
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
bx lr
|
|
_03806B68:
|
|
mov r0, #0
|
|
_03806B6C:
|
|
mov r1, #0
|
|
cmp r4, #0
|
|
blt _03806B58
|
|
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
bx lr
|
|
arm_func_end sub_038069D0
|
|
|
|
arm_func_start sub_03806B80
|
|
sub_03806B80: ; 0x03806B80
|
|
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
mov r4, #0
|
|
b _03806B94
|
|
_03806B8C:
|
|
stmdb sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
mov r4, #1
|
|
_03806B94:
|
|
orrs r5, r3, r2
|
|
bne _03806BA4
|
|
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
bx lr
|
|
_03806BA4:
|
|
orrs r5, r1, r3
|
|
bne _03806A44
|
|
mov r1, r2
|
|
bl _u32_div_not_0_f
|
|
cmp r4, #0
|
|
movne r0, r1
|
|
mov r1, #0
|
|
ldmia sp!, {r4, r5, r6, r7, fp, ip, lr}
|
|
bx lr
|
|
arm_func_end sub_03806B80
|
|
|
|
arm_func_start _s32_div_f
|
|
_s32_div_f: ; 0x03806BC8
|
|
eor ip, r0, r1
|
|
and ip, ip, #0x80000000
|
|
cmp r0, #0
|
|
rsblt r0, r0, #0
|
|
addlt ip, ip, #1
|
|
cmp r1, #0
|
|
rsblt r1, r1, #0
|
|
beq _03806DC0
|
|
cmp r0, r1
|
|
movlo r1, r0
|
|
movlo r0, #0
|
|
blo _03806DC0
|
|
mov r2, #0x1c
|
|
mov r3, r0, lsr #4
|
|
cmp r1, r3, lsr #12
|
|
suble r2, r2, #0x10
|
|
movle r3, r3, lsr #0x10
|
|
cmp r1, r3, lsr #4
|
|
suble r2, r2, #8
|
|
movle r3, r3, lsr #8
|
|
cmp r1, r3
|
|
suble r2, r2, #4
|
|
movle r3, r3, lsr #4
|
|
mov r0, r0, lsl r2
|
|
rsb r1, r1, #0
|
|
adds r0, r0, r0
|
|
add r2, r2, r2, lsl #1
|
|
add pc, pc, r2, lsl #2
|
|
mov r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
mov r1, r3
|
|
_03806DC0:
|
|
ands r3, ip, #0x80000000
|
|
rsbne r0, r0, #0
|
|
ands r3, ip, #1
|
|
rsbne r1, r1, #0
|
|
bx lr
|
|
arm_func_end _s32_div_f
|
|
|
|
arm_func_start _u32_div_f
|
|
_u32_div_f: ; 0x03806DD4
|
|
cmp r1, #0
|
|
bxeq lr
|
|
arm_func_end _u32_div_f
|
|
|
|
arm_func_start _u32_div_not_0_f
|
|
_u32_div_not_0_f: ; 0x03806DDC
|
|
cmp r0, r1
|
|
movlo r1, r0
|
|
movlo r0, #0
|
|
bxlo lr
|
|
mov r2, #0x1c
|
|
mov r3, r0, lsr #4
|
|
cmp r1, r3, lsr #12
|
|
suble r2, r2, #0x10
|
|
movle r3, r3, lsr #0x10
|
|
cmp r1, r3, lsr #4
|
|
suble r2, r2, #8
|
|
movle r3, r3, lsr #8
|
|
cmp r1, r3
|
|
suble r2, r2, #4
|
|
movle r3, r3, lsr #4
|
|
mov r0, r0, lsl r2
|
|
rsb r1, r1, #0
|
|
adds r0, r0, r0
|
|
add r2, r2, r2, lsl #1
|
|
add pc, pc, r2, lsl #2
|
|
mov r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
adcs r3, r1, r3, lsl #1
|
|
sublo r3, r3, r1
|
|
adcs r0, r0, r0
|
|
mov r1, r3
|
|
bx lr
|
|
arm_func_end _u32_div_not_0_f
|
|
|
|
_03806FB8:
|
|
.byte 0x00, 0x06, 0x0C, 0x13, 0x19, 0x1F, 0x25, 0x2B, 0x31, 0x36, 0x3C, 0x41, 0x47, 0x4C, 0x51, 0x55
|
|
.byte 0x5A, 0x5E, 0x62, 0x66, 0x6A, 0x6D, 0x70, 0x73, 0x75, 0x78, 0x7A, 0x7B, 0x7D, 0x7E, 0x7E, 0x7F
|
|
.byte 0x7F, 0x00, 0x00, 0x00
|
|
.global _03806FDC
|
|
_03806FDC:
|
|
.byte 0x00, 0x80, 0x2E, 0xFD, 0x2F, 0xFD, 0x75, 0xFD, 0xA7, 0xFD, 0xCE, 0xFD
|
|
.byte 0xEE, 0xFD, 0x09, 0xFE, 0x20, 0xFE, 0x34, 0xFE, 0x46, 0xFE, 0x57, 0xFE, 0x66, 0xFE, 0x74, 0xFE
|
|
.byte 0x81, 0xFE, 0x8D, 0xFE, 0x98, 0xFE, 0xA3, 0xFE, 0xAD, 0xFE, 0xB6, 0xFE, 0xBF, 0xFE, 0xC7, 0xFE
|
|
.byte 0xCF, 0xFE, 0xD7, 0xFE, 0xDF, 0xFE, 0xE6, 0xFE, 0xEC, 0xFE, 0xF3, 0xFE, 0xF9, 0xFE, 0xFF, 0xFE
|
|
.byte 0x05, 0xFF, 0x0B, 0xFF, 0x11, 0xFF, 0x16, 0xFF, 0x1B, 0xFF, 0x20, 0xFF, 0x25, 0xFF, 0x2A, 0xFF
|
|
.byte 0x2E, 0xFF, 0x33, 0xFF, 0x37, 0xFF, 0x3C, 0xFF, 0x40, 0xFF, 0x44, 0xFF, 0x48, 0xFF, 0x4C, 0xFF
|
|
.byte 0x50, 0xFF, 0x53, 0xFF, 0x57, 0xFF, 0x5B, 0xFF, 0x5E, 0xFF, 0x62, 0xFF, 0x65, 0xFF, 0x68, 0xFF
|
|
.byte 0x6B, 0xFF, 0x6F, 0xFF, 0x72, 0xFF, 0x75, 0xFF, 0x78, 0xFF, 0x7B, 0xFF, 0x7E, 0xFF, 0x81, 0xFF
|
|
.byte 0x83, 0xFF, 0x86, 0xFF, 0x89, 0xFF, 0x8C, 0xFF, 0x8E, 0xFF, 0x91, 0xFF, 0x93, 0xFF, 0x96, 0xFF
|
|
.byte 0x99, 0xFF, 0x9B, 0xFF, 0x9D, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA5, 0xFF, 0xA7, 0xFF, 0xA9, 0xFF
|
|
.byte 0xAB, 0xFF, 0xAE, 0xFF, 0xB0, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF, 0xB6, 0xFF, 0xB8, 0xFF, 0xBA, 0xFF
|
|
.byte 0xBC, 0xFF, 0xBE, 0xFF, 0xC0, 0xFF, 0xC2, 0xFF, 0xC4, 0xFF, 0xC6, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF
|
|
.byte 0xCC, 0xFF, 0xCE, 0xFF, 0xCF, 0xFF, 0xD1, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF, 0xD6, 0xFF, 0xD8, 0xFF
|
|
.byte 0xDA, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF, 0xDF, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF
|
|
.byte 0xE7, 0xFF, 0xE9, 0xFF, 0xEA, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF2, 0xFF
|
|
.byte 0xF3, 0xFF, 0xF5, 0xFF, 0xF6, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF, 0xFA, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF
|
|
.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0x5B, 0xFE, 0x97, 0xFE, 0xBB, 0xFE, 0xD4, 0xFE, 0xE7, 0xFE
|
|
.byte 0xF7, 0xFE, 0x04, 0xFF, 0x10, 0xFF, 0x1A, 0xFF, 0x23, 0xFF, 0x2C, 0xFF, 0x33, 0xFF, 0x3A, 0xFF
|
|
.byte 0x40, 0xFF, 0x46, 0xFF, 0x4C, 0xFF, 0x51, 0xFF, 0x56, 0xFF, 0x5B, 0xFF, 0x5F, 0xFF, 0x64, 0xFF
|
|
.byte 0x68, 0xFF, 0x6C, 0xFF, 0x6F, 0xFF, 0x73, 0xFF, 0x76, 0xFF, 0x7A, 0xFF, 0x7D, 0xFF, 0x80, 0xFF
|
|
.byte 0x83, 0xFF, 0x86, 0xFF, 0x88, 0xFF, 0x8B, 0xFF, 0x8E, 0xFF, 0x90, 0xFF, 0x92, 0xFF, 0x95, 0xFF
|
|
.byte 0x97, 0xFF, 0x99, 0xFF, 0x9C, 0xFF, 0x9E, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA4, 0xFF, 0xA6, 0xFF
|
|
.byte 0xA8, 0xFF, 0xAA, 0xFF, 0xAB, 0xFF, 0xAD, 0xFF, 0xAF, 0xFF, 0xB1, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF
|
|
.byte 0xB6, 0xFF, 0xB7, 0xFF, 0xB9, 0xFF, 0xBA, 0xFF, 0xBC, 0xFF, 0xBD, 0xFF, 0xBF, 0xFF, 0xC0, 0xFF
|
|
.byte 0xC2, 0xFF, 0xC3, 0xFF, 0xC4, 0xFF, 0xC6, 0xFF, 0xC7, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF, 0xCB, 0xFF
|
|
.byte 0xCC, 0xFF, 0xCD, 0xFF, 0xCF, 0xFF, 0xD0, 0xFF, 0xD1, 0xFF, 0xD2, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF
|
|
.byte 0xD6, 0xFF, 0xD7, 0xFF, 0xD8, 0xFF, 0xD9, 0xFF, 0xDA, 0xFF, 0xDB, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF
|
|
.byte 0xDE, 0xFF, 0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE3, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF
|
|
.byte 0xE6, 0xFF, 0xE7, 0xFF, 0xE8, 0xFF, 0xE9, 0xFF, 0xE9, 0xFF, 0xEA, 0xFF, 0xEB, 0xFF, 0xEC, 0xFF
|
|
.byte 0xED, 0xFF, 0xEE, 0xFF, 0xEF, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF1, 0xFF, 0xF2, 0xFF, 0xF3, 0xFF
|
|
.byte 0xF4, 0xFF, 0xF4, 0xFF, 0xF5, 0xFF, 0xF6, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF
|
|
.byte 0xFA, 0xFF, 0xFA, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF
|
|
.byte 0xFF, 0xFF, 0x00, 0x00
|
|
.global _038071DC
|
|
_038071DC:
|
|
.byte 0x00, 0x01, 0x02, 0x04
|
|
.global _038071E0
|
|
_038071E0:
|
|
.byte 0x04, 0x05, 0x06, 0x07, 0x02, 0x00, 0x03, 0x01
|
|
.byte 0x08, 0x09, 0x0A, 0x0B, 0x0E, 0x0C, 0x0F, 0x0D
|
|
.global _038071F0
|
|
_038071F0:
|
|
.byte 0x00, 0x01, 0x05, 0x0E, 0x1A, 0x26, 0x33, 0x3F
|
|
.byte 0x49, 0x54, 0x5C, 0x64, 0x6D, 0x74, 0x7B, 0x7F, 0x84, 0x89, 0x8F, 0x00
|
|
.global _03807204
|
|
_03807204:
|
|
.byte 0x06, 0x00, 0x00, 0x00
|
|
.global _03807208
|
|
_03807208:
|
|
.byte 0xC7, 0x00, 0x00, 0x00
|
|
.global _0380720C
|
|
_0380720C:
|
|
.byte 0x05, 0x00, 0x00, 0x00
|
|
.global _03807210
|
|
_03807210:
|
|
.byte 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x13, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00
|
|
.byte 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
|
|
.byte 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x02, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x08, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x20, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x16, 0x00, 0x00, 0x00
|
|
.byte 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x80, 0x00, 0x17, 0x00, 0x00, 0x00
|
|
|
|
arm_func_start sub_038072C0
|
|
sub_038072C0: ; 0x038072C0
|
|
mov ip, #0x4000000
|
|
str ip, [ip, #0x208]
|
|
ldr r1, _03807328 ; =0x0380FFFC
|
|
mov r0, #0
|
|
str r0, [r1]
|
|
ldr r1, _0380732C ; =0x04000180
|
|
mov r0, #0x100
|
|
strh r0, [r1]
|
|
_038072E0:
|
|
ldrh r0, [r1]
|
|
and r0, r0, #0xf
|
|
cmp r0, #1
|
|
bne _038072E0
|
|
ldr r1, _0380732C ; =0x04000180
|
|
mov r0, #0
|
|
strh r0, [r1]
|
|
_038072FC:
|
|
ldrh r0, [r1]
|
|
cmp r0, #1
|
|
beq _038072FC
|
|
ldr r3, _03807330 ; =0x027FFE00
|
|
ldr ip, [r3, #0x34]
|
|
mov lr, ip
|
|
mov r0, #0
|
|
mov r1, #0
|
|
mov r2, #0
|
|
mov r3, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_03807328: .word 0x0380FFFC
|
|
_0380732C: .word 0x04000180
|
|
_03807330: .word 0x027FFE00
|
|
arm_func_end sub_038072C0
|
|
|
|
arm_func_start sub_03807334
|
|
sub_03807334: ; 0x03807334
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, #0x100
|
|
mov r5, #0xa
|
|
mov r4, #0
|
|
b _03807354
|
|
_0380734C:
|
|
mov r0, r6
|
|
bl sub_037FBA0C
|
|
_03807354:
|
|
mov r0, r5
|
|
mov r1, r7
|
|
mov r2, r4
|
|
bl sub_037FE410
|
|
cmp r0, #0
|
|
blt _0380734C
|
|
ldr r0, _0380737C ; =_027F8DA0
|
|
bl sub_037FC90C
|
|
ldmia sp!, {r3, r4, r5, r6, r7, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_0380737C: .word _027F8DA0
|
|
arm_func_end sub_03807334
|
|
|
|
arm_func_start sub_03807380
|
|
sub_03807380: ; 0x03807380
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r0, _038073C8 ; =_027F8DA0
|
|
bl sub_037FC888
|
|
ldr r4, _038073CC ; =0x027FFF96
|
|
mov r5, #0x100
|
|
b _038073A0
|
|
_03807398:
|
|
mov r0, r5
|
|
bl sub_037FBA0C
|
|
_038073A0:
|
|
ldrh r1, [r4]
|
|
tst r1, #1
|
|
bne _03807398
|
|
ldr r0, _038073D0 ; =_027F8878
|
|
orr r1, r1, #1
|
|
strh r1, [r4]
|
|
ldr r0, [r0, #0x54c]
|
|
ldr r0, [r0, #8]
|
|
ldmia sp!, {r3, r4, r5, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038073C8: .word _027F8DA0
|
|
_038073CC: .word 0x027FFF96
|
|
_038073D0: .word _027F8878
|
|
arm_func_end sub_03807380
|
|
|
|
arm_func_start sub_038073D4
|
|
sub_038073D4: ; 0x038073D4
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _038074DC ; =0x00001FFF
|
|
and r0, r0, r1
|
|
mov r0, r0, lsl #0x10
|
|
movs r2, r0, lsr #0x10
|
|
moveq r0, #0
|
|
beq _038074D4
|
|
mov r1, #0
|
|
mov r0, #1
|
|
b _03807408
|
|
_038073FC:
|
|
tst r2, r0, lsl r1
|
|
bne _03807410
|
|
add r1, r1, #1
|
|
_03807408:
|
|
cmp r1, #0x10
|
|
blt _038073FC
|
|
_03807410:
|
|
mov r0, #0xf
|
|
mov r3, #1
|
|
b _03807428
|
|
_0380741C:
|
|
tst r2, r3, lsl r0
|
|
bne _03807430
|
|
sub r0, r0, #1
|
|
_03807428:
|
|
cmp r0, #0
|
|
bne _0380741C
|
|
_03807430:
|
|
sub r6, r0, r1
|
|
cmp r6, #5
|
|
movlt r0, #1
|
|
movlt r0, r0, lsl r1
|
|
movlt r0, r0, lsl #0x10
|
|
movlt r0, r0, lsr #0x10
|
|
blt _038074D4
|
|
add r3, r0, r1
|
|
add r3, r3, r3, lsr #31
|
|
mov r4, r3, asr #1
|
|
mov r5, #0
|
|
mov lr, #1
|
|
b _03807488
|
|
_03807464:
|
|
mov ip, r5, lsr #0x1f
|
|
rsb r3, ip, r5, lsl #31
|
|
add r3, ip, r3, ror #31
|
|
mov r3, r3, lsl #1
|
|
sub r3, r3, #1
|
|
mla r4, r5, r3, r4
|
|
tst r2, lr, lsl r4
|
|
bne _03807490
|
|
add r5, r5, #1
|
|
_03807488:
|
|
cmp r5, r6
|
|
blt _03807464
|
|
_03807490:
|
|
sub r2, r0, r4
|
|
cmp r2, #5
|
|
subge r2, r4, r1
|
|
cmpge r2, #5
|
|
bge _038074BC
|
|
mov r2, #1
|
|
mov r0, r2, lsl r0
|
|
orr r0, r0, r2, lsl r1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
b _038074D4
|
|
_038074BC:
|
|
mov r3, #1
|
|
mov r2, r3, lsl r4
|
|
orr r0, r2, r3, lsl r0
|
|
orr r0, r0, r3, lsl r1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
_038074D4:
|
|
ldmia sp!, {r4, r5, r6, lr}
|
|
bx lr
|
|
.align 2, 0
|
|
_038074DC: .word 0x00001FFF
|
|
arm_func_end sub_038073D4
|
|
_038074E0:
|
|
.byte 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00
|
|
.byte 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global _038074F4
|
|
_038074F4:
|
|
.word sub_037FB748
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB708
|
|
.word sub_037FB718
|
|
.word sub_037FB728
|
|
.word sub_037FB738
|
|
.word sub_037FB638
|
|
.word sub_037FB6C8
|
|
.word sub_037FB6D8
|
|
.word sub_037FB6E8
|
|
.word sub_037FB6F8
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.word sub_037FB638
|
|
.global _03807558
|
|
_03807558:
|
|
.byte 0xFF, 0xFF, 0xFF, 0xFF
|
|
.global _0380755C
|
|
_0380755C:
|
|
.byte 0x78, 0x56, 0x34, 0x12
|
|
.global _03807560
|
|
_03807560:
|
|
.byte 0x00, 0xFE, 0x7F, 0x02
|
|
.global _03807564
|
|
_03807564:
|
|
.byte 0xFF, 0xFF, 0xFF, 0xFF
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.global _0380756C
|
|
_0380756C:
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.global _03807570
|
|
_03807570:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA
|
|
.byte 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x08, 0x00, 0x01, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE3, 0x0C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0xF0, 0xF0, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xF8
|
|
.byte 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0C, 0x00, 0x01, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0xC0, 0xFF, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF
|
|
.byte 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x20, 0x00, 0x01, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0xC3, 0x28, 0x00, 0x02, 0x00
|
|
.global _03807600
|
|
_03807600:
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
|
|
|
|
.bss
|
|
.global _03807608
|
|
_03807608:
|
|
.space 0x8
|
|
.global _03807610
|
|
_03807610:
|
|
.space 0x4
|
|
.global _03807614
|
|
_03807614:
|
|
.space 0x4
|
|
.global _03807618
|
|
_03807618:
|
|
.space 0x28
|
|
.global _03807640
|
|
_03807640:
|
|
.space 0x4
|
|
.global _03807644
|
|
_03807644:
|
|
.space 0x4
|
|
.global _03807648
|
|
_03807648:
|
|
.space 0x28
|
|
.global _03807670
|
|
_03807670:
|
|
.space 0xC
|
|
.global _0380767C
|
|
_0380767C:
|
|
.space 0x4
|
|
.global _03807680
|
|
_03807680:
|
|
.space 0x24
|
|
.global _038076A4
|
|
_038076A4:
|
|
.space 0x4
|
|
.global _038076A8
|
|
_038076A8:
|
|
.space 0xC
|
|
.global _038076B4
|
|
_038076B4:
|
|
.space 0xA4
|
|
.global _03807758
|
|
_03807758:
|
|
.space 0xA4
|
|
.global _038077FC
|
|
_038077FC:
|
|
.space 0x4
|
|
.global _03807800
|
|
_03807800:
|
|
.space 0x24
|
|
.global _03807824
|
|
_03807824:
|
|
.space 0x4
|
|
.global _03807828
|
|
_03807828:
|
|
.space 0x10
|
|
.global _03807838
|
|
_03807838:
|
|
.space 0xC
|
|
.global _03807844
|
|
_03807844:
|
|
.space 0x14
|
|
.global _03807858
|
|
_03807858:
|
|
.space 0x4
|
|
.global _0380785C
|
|
_0380785C:
|
|
.space 0x4
|
|
.global _03807860
|
|
_03807860:
|
|
.space 0x80
|
|
.global _038078E0
|
|
_038078E0:
|
|
.space 0x4
|
|
.global _038078E4
|
|
_038078E4:
|
|
.space 0x2C
|
|
.global _03807910
|
|
_03807910:
|
|
.space 0x4
|
|
.global _03807914
|
|
_03807914:
|
|
.space 0x10
|
|
.global _03807924
|
|
_03807924:
|
|
.space 0x10
|
|
.global _03807934
|
|
_03807934:
|
|
.space 0x4
|
|
.global _03807938
|
|
_03807938:
|
|
.space 0x20
|
|
.global _03807958
|
|
_03807958:
|
|
.space 0x20
|
|
.global _03807978
|
|
_03807978:
|
|
.space 0x2C
|
|
.global _038079A4
|
|
_038079A4:
|
|
.space 0x4A4
|
|
.global _03807E48
|
|
_03807E48:
|
|
.space 0x8
|
|
.global _03807E50
|
|
_03807E50:
|
|
.space 0xC
|
|
.global _03807E5C
|
|
_03807E5C:
|
|
.space 0x10
|
|
.global _03807E6C
|
|
_03807E6C:
|
|
.space 0x4
|
|
.global _03807E70
|
|
_03807E70:
|
|
.space 0x540
|
|
.global _038083B0
|
|
_038083B0:
|
|
.space 0x240
|
|
.global _038085F0
|
|
_038085F0:
|
|
.space 0x800
|
|
.global _03808DF0
|
|
_03808DF0:
|
|
.space 0x200
|
|
.global _03808FF0
|
|
_03808FF0:
|
|
.space 0x20
|
|
.global _03809010
|
|
_03809010:
|
|
.space 0x30
|
|
.global _03809040
|
|
_03809040:
|
|
.space 0x20
|
|
.global _03809060
|
|
_03809060:
|
|
.space 0x600
|
|
.global _03809660
|
|
_03809660:
|
|
.space 0x4
|
|
.global _03809664
|
|
_03809664:
|
|
.space 0x1C
|
|
.global _03809680
|
|
_03809680:
|
|
.space 0x240
|
|
.global _038098C0
|
|
_038098C0:
|
|
.space 0x10
|
|
.global _038098D0
|
|
_038098D0:
|
|
.space 0x4
|
|
.global _038098D4
|
|
_038098D4:
|
|
.space 0x8
|
|
.global _038098DC
|
|
_038098DC:
|
|
.space 0x2A4
|
|
.global _03809B80
|
|
_03809B80:
|
|
.space 0x20
|
|
.global _03809BA0
|
|
_03809BA0:
|
|
.space 0x40
|
|
.global _03809BE0
|
|
_03809BE0:
|
|
.space 0x4
|
|
.global _03809BE4
|
|
_03809BE4:
|
|
.space 0x180
|
|
.global _03809D64
|
|
_03809D64:
|
|
.space 0xC
|
|
.global _03809D70
|
|
_03809D70:
|
|
.space 0x4
|
|
.global _03809D74
|
|
_03809D74:
|
|
.space 0x2C
|
|
.global _03809DA0
|
|
_03809DA0:
|
|
.space 0xA8
|
|
.global _03809E48
|
|
_03809E48:
|
|
.space 0x4
|
|
.global _03809E4C
|
|
_03809E4C:
|
|
.space 0x2
|
|
.global _03809E4E
|
|
_03809E4E:
|
|
.space 0x2
|
|
.global _03809E50
|
|
_03809E50:
|
|
.space 0x4
|
|
.global _03809E54
|
|
_03809E54:
|
|
.space 0x2C
|
|
.global _03809E80
|
|
_03809E80:
|
|
.space 0x8
|
|
.global _03809E88
|
|
_03809E88:
|
|
.space 0x10
|
|
.global _03809E98
|
|
_03809E98:
|
|
.space 0xA4
|
|
.global _03809F3C
|
|
_03809F3C:
|
|
.space 0xBC0
|
|
.global _0380AAFC
|
|
_0380AAFC:
|
|
.space 0x700
|
|
.global _0380B1FC
|
|
_0380B1FC:
|
|
.space 0x3C
|
|
.global _0380B238
|
|
_0380B238:
|
|
.space 0x14
|
|
.global _0380B24C
|
|
_0380B24C:
|
|
.space 0x10
|
|
.global _0380B25C
|
|
_0380B25C:
|
|
.space 0x4
|
|
.global _0380B260
|
|
_0380B260:
|
|
.space 0x4
|
|
.global _0380B264
|
|
_0380B264:
|
|
.space 0x30
|
|
.global _0380B294
|
|
_0380B294:
|
|
.space 0x2C
|
|
.global _0380B2C0
|
|
_0380B2C0:
|
|
.space 0xA4
|
|
.global _0380B364
|
|
_0380B364:
|
|
.space 0xA4
|
|
.global _0380B408
|
|
_0380B408:
|
|
.space 0x2C
|
|
.global _0380B434
|
|
_0380B434:
|
|
.space 0x2C
|
|
.global _0380B460
|
|
_0380B460:
|
|
.space 0x28
|