pmd-sky/asm/main_02003DB8.s
2026-02-09 12:33:16 -05:00

5226 lines
95 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_02003DB8.inc"
.text
arm_func_start HaltProcessDisp
HaltProcessDisp: ; 0x02003DB8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r0
bl sub_02002580
ldr r1, _02003EBC ; =_020AF078
cmp r0, r1
moveq r1, #1
movne r1, #0
ldr r0, _02003EC0 ; =_020AEF7C
and r2, r1, #0xff
ldrb r1, [r0, #0xf]
cmp r1, #0
bne _02003E28
mov r1, #1
strb r1, [r0, #0xf]
cmp r2, #0
beq _02003E24
mov r6, #0
ldr r5, _02003EC4 ; =_020AF050
b _02003E14
_02003E04:
mov r0, r6
bl OS_SleepThread
mov r0, r5
bl sub_020029B8
_02003E14:
bl sub_020081F0
cmp r0, #0
beq _02003E04
b _02003E28
_02003E24:
bl sub_020081C8
_02003E28:
mov r0, #1
bl sub_02002824
bl sub_020184A8
ldr r0, _02003EC8 ; =_02092540
mov r1, r4
bl Debug_Print0
cmp r4, #2
bne _02003E9C
mov r0, #1
bl sub_0200B76C
mov r7, #0
mov r6, #1
ldr r5, _02003EC0 ; =_020AEF7C
b _02003E7C
_02003E60:
ldrb r0, [r5, #0xd]
cmp r0, #0
bne _02003E84
mov r0, r6
mov r1, r6
bl sub_02078900
add r7, r7, #1
_02003E7C:
cmp r7, #0x12c
blt _02003E60
_02003E84:
ldr r0, _02003EC0 ; =_020AEF7C
ldrb r0, [r0, #0xd]
cmp r0, #0
bne _02003E9C
mov r0, #0
bl sub_02002448
_02003E9C:
cmp r4, #1
beq _02003EAC
mov r0, #0
bl sub_0200B76C
_02003EAC:
bl sub_020845F8
mov r0, #0
bl sub_020025F8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02003EBC: .word _020AF078
_02003EC0: .word _020AEF7C
_02003EC4: .word _020AF050
_02003EC8: .word _02092540
arm_func_end HaltProcessDisp
arm_func_start sub_02003ECC
sub_02003ECC: ; 0x02003ECC
bx lr
arm_func_end sub_02003ECC
; https://decomp.me/scratch/uxxU8
arm_func_start OverlayIsLoaded
OverlayIsLoaded: ; 0x02003ED0
stmdb sp!, {r3, lr}
sub sp, sp, #8
cmp r0, #0x24
addls pc, pc, r0, lsl #2
b _02004078
_02003EE4: ; jump table
b _02003F78 ; case 0
b _02003F80 ; case 1
b _02003F80 ; case 2
b _02003F80 ; case 3
b _02003F9C ; case 4
b _02003F9C ; case 5
b _02003FC8 ; case 6
b _02003FC8 ; case 7
b _02003FC8 ; case 8
b _02003FC8 ; case 9
b _02003FC8 ; case 10
b _02003FC8 ; case 11
b _02003FC8 ; case 12
b _02003FF4 ; case 13
b _02003FF4 ; case 14
b _02003FF4 ; case 15
b _02004020 ; case 16
b _02004020 ; case 17
b _02004020 ; case 18
b _02004020 ; case 19
b _02004020 ; case 20
b _02004020 ; case 21
b _02004020 ; case 22
b _02004020 ; case 23
b _02004020 ; case 24
b _02004020 ; case 25
b _02004020 ; case 26
b _02004020 ; case 27
b _02004020 ; case 28
b _02004020 ; case 29
b _02004020 ; case 30
b _02004020 ; case 31
b _02004020 ; case 32
b _0200404C ; case 33
b _0200404C ; case 34
b _0200404C ; case 35
b _0200404C ; case 36
_02003F78:
mov r0, #1
b _02004098
_02003F80:
ldr r1, _020040A0 ; =LOADED_OVERLAY_GROUP_0
ldr r1, [r1, #8]
cmp r1, r0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02004098
_02003F9C:
ldr r1, _020040A0 ; =LOADED_OVERLAY_GROUP_0
ldr r2, [r1, #8]
cmp r2, #1
movne r0, #0
bne _02004098
ldr r1, [r1, #4]
cmp r1, r0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02004098
_02003FC8:
ldr r1, _020040A0 ; =LOADED_OVERLAY_GROUP_0
ldr r2, [r1, #4]
cmp r2, #4
movne r0, #0
bne _02004098
ldr r1, [r1]
cmp r1, r0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02004098
_02003FF4:
ldr r1, _020040A0 ; =LOADED_OVERLAY_GROUP_0
ldr r2, [r1, #8]
cmp r2, #2
movne r0, #0
bne _02004098
ldr r1, [r1, #4]
cmp r1, r0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02004098
_02004020:
ldr r1, _020040A0 ; =LOADED_OVERLAY_GROUP_0
ldr r2, [r1, #4]
cmp r2, #0xd
movne r0, #0
bne _02004098
ldr r1, [r1]
cmp r1, r0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02004098
_0200404C:
ldr r1, _020040A0 ; =LOADED_OVERLAY_GROUP_0
ldr r2, [r1, #4]
cmp r2, #0xe
movne r0, #0
bne _02004098
ldr r1, [r1]
cmp r1, r0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02004098
_02004078:
ldr r1, _020040A4 ; =_02092558
add r0, sp, #0
ldr r2, [r1, #0x14]
ldr r3, [r1, #0x10]
ldr r1, _020040A8 ; =_0209258C
str r3, [sp]
str r2, [sp, #4]
bl Debug_FatalError
_02004098:
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_020040A0: .word LOADED_OVERLAY_GROUP_0
_020040A4: .word _02092558
_020040A8: .word _0209258C
arm_func_end OverlayIsLoaded
arm_func_start LoadOverlay
LoadOverlay: ; 0x020040AC
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x3c
mov r4, r0
cmp r4, #0x24
addls pc, pc, r4, lsl #2
b _020041A4
_020040C4: ; jump table
b _02004158 ; case 0
b _0200415C ; case 1
b _0200415C ; case 2
b _0200415C ; case 3
b _02004168 ; case 4
b _02004168 ; case 5
b _02004174 ; case 6
b _02004174 ; case 7
b _02004174 ; case 8
b _02004174 ; case 9
b _02004174 ; case 10
b _02004174 ; case 11
b _02004174 ; case 12
b _02004180 ; case 13
b _02004180 ; case 14
b _02004180 ; case 15
b _0200418C ; case 16
b _0200418C ; case 17
b _0200418C ; case 18
b _0200418C ; case 19
b _0200418C ; case 20
b _0200418C ; case 21
b _0200418C ; case 22
b _0200418C ; case 23
b _0200418C ; case 24
b _0200418C ; case 25
b _0200418C ; case 26
b _0200418C ; case 27
b _0200418C ; case 28
b _0200418C ; case 29
b _0200418C ; case 30
b _0200418C ; case 31
b _0200418C ; case 32
b _02004198 ; case 33
b _02004198 ; case 34
b _02004198 ; case 35
b _02004198 ; case 36
_02004158:
b _020047C4
_0200415C:
ldr r0, _020047CC ; =LOADED_OVERLAY_GROUP_0
str r4, [r0, #8]
b _020041C4
_02004168:
ldr r0, _020047CC ; =LOADED_OVERLAY_GROUP_0
str r4, [r0, #4]
b _020041C4
_02004174:
ldr r0, _020047CC ; =LOADED_OVERLAY_GROUP_0
str r4, [r0]
b _020041C4
_02004180:
ldr r0, _020047CC ; =LOADED_OVERLAY_GROUP_0
str r4, [r0, #4]
b _020041C4
_0200418C:
ldr r0, _020047CC ; =LOADED_OVERLAY_GROUP_0
str r4, [r0]
b _020041C4
_02004198:
ldr r0, _020047CC ; =LOADED_OVERLAY_GROUP_0
str r4, [r0]
b _020041C4
_020041A4:
ldr r1, _020047D0 ; =_02092558
add r0, sp, #8
ldr r2, [r1, #0x1c]
ldr r3, [r1, #0x18]
ldr r1, _020047D4 ; =_020925A0
str r3, [sp, #8]
str r2, [sp, #0xc]
bl Debug_FatalError
_020041C4:
bl FileRom_InitDataTransfer
bl sub_0207A324
bl DC_FlushAll
cmp r4, #0x24
addls pc, pc, r4, lsl #2
b _02004780
_020041DC: ; jump table
b _02004780 ; case 0
b _02004270 ; case 1
b _02004294 ; case 2
b _020042B8 ; case 3
b _020042DC ; case 4
b _02004300 ; case 5
b _02004324 ; case 6
b _02004348 ; case 7
b _0200436C ; case 8
b _02004390 ; case 9
b _020043B4 ; case 10
b _020043D8 ; case 11
b _020043FC ; case 12
b _02004420 ; case 13
b _02004444 ; case 14
b _02004468 ; case 15
b _0200448C ; case 16
b _020044B0 ; case 17
b _020044D4 ; case 18
b _020044F8 ; case 19
b _0200451C ; case 20
b _02004540 ; case 21
b _02004564 ; case 22
b _02004588 ; case 23
b _020045AC ; case 24
b _020045D0 ; case 25
b _020045F4 ; case 26
b _02004618 ; case 27
b _0200463C ; case 28
b _02004660 ; case 29
b _02004684 ; case 30
b _020046A8 ; case 31
b _020046CC ; case 32
b _020046F0 ; case 33
b _02004714 ; case 34
b _02004738 ; case 35
b _0200475C ; case 36
_02004270:
ldr r2, _020047D8 ; =0x00000000
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004294:
ldr r2, _020047DC ; =0x0000000A
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020042B8:
ldr r2, _020047E0 ; =0x00000023
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020042DC:
ldr r2, _020047E4 ; =0x00000001
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004300:
ldr r2, _020047E8 ; =0x00000002
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004324:
ldr r2, _020047EC ; =0x00000003
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004348:
ldr r2, _020047F0 ; =0x00000006
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_0200436C:
ldr r2, _020047F4 ; =0x00000004
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004390:
ldr r2, _020047F8 ; =0x00000005
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020043B4:
ldr r2, _020047FC ; =0x00000007
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020043D8:
ldr r2, _02004800 ; =0x00000008
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020043FC:
ldr r2, _02004804 ; =0x00000009
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004420:
ldr r2, _02004808 ; =0x0000000B
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004444:
ldr r2, _0200480C ; =0x0000001D
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004468:
ldr r2, _02004810 ; =0x00000022
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_0200448C:
ldr r2, _02004814 ; =0x0000000C
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020044B0:
ldr r2, _02004818 ; =0x0000000D
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020044D4:
ldr r2, _0200481C ; =0x0000000E
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020044F8:
ldr r2, _02004820 ; =0x0000000F
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_0200451C:
ldr r2, _02004824 ; =0x00000010
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004540:
ldr r2, _02004828 ; =0x00000011
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004564:
ldr r2, _0200482C ; =0x00000012
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004588:
ldr r2, _02004830 ; =0x00000013
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020045AC:
ldr r2, _02004834 ; =0x00000014
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020045D0:
ldr r2, _02004838 ; =0x00000015
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020045F4:
ldr r2, _0200483C ; =0x00000016
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004618:
ldr r2, _02004840 ; =0x00000017
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_0200463C:
ldr r2, _02004844 ; =0x00000018
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004660:
ldr r2, _02004848 ; =0x00000019
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004684:
ldr r2, _0200484C ; =0x0000001A
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020046A8:
ldr r2, _02004850 ; =0x0000001B
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020046CC:
ldr r2, _02004854 ; =0x0000001C
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_020046F0:
ldr r2, _02004858 ; =0x0000001E
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004714:
ldr r2, _0200485C ; =0x0000001F
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004738:
ldr r2, _02004860 ; =0x00000020
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_0200475C:
ldr r2, _02004864 ; =0x00000021
add r0, sp, #0x10
mov r1, #0
bl GetOverlayInfo
cmp r0, #0
bne _020047A0
mov r0, #1
bl CardPullOutWithStatus
b _020047A0
_02004780:
ldr r1, _020047D0 ; =_02092558
add r0, sp, #0
ldr r2, [r1, #0xc]
ldr r3, [r1, #8]
ldr r1, _020047D4 ; =_020925A0
str r3, [sp]
str r2, [sp, #4]
bl Debug_FatalError
_020047A0:
add r0, sp, #0x10
bl LoadOverlayInternal
cmp r0, #0
bne _020047B8
mov r0, #1
bl CardPullOutWithStatus
_020047B8:
add r0, sp, #0x10
bl InitOverlay
bl FileRom_StopDataTransfer
_020047C4:
add sp, sp, #0x3c
ldmia sp!, {r3, r4, pc}
.align 2, 0
_020047CC: .word LOADED_OVERLAY_GROUP_0
_020047D0: .word _02092558
_020047D4: .word _020925A0
_020047D8: .word 0x00000000
_020047DC: .word 0x0000000A
_020047E0: .word 0x00000023
_020047E4: .word 0x00000001
_020047E8: .word 0x00000002
_020047EC: .word 0x00000003
_020047F0: .word 0x00000006
_020047F4: .word 0x00000004
_020047F8: .word 0x00000005
_020047FC: .word 0x00000007
_02004800: .word 0x00000008
_02004804: .word 0x00000009
_02004808: .word 0x0000000B
_0200480C: .word 0x0000001D
_02004810: .word 0x00000022
_02004814: .word 0x0000000C
_02004818: .word 0x0000000D
_0200481C: .word 0x0000000E
_02004820: .word 0x0000000F
_02004824: .word 0x00000010
_02004828: .word 0x00000011
_0200482C: .word 0x00000012
_02004830: .word 0x00000013
_02004834: .word 0x00000014
_02004838: .word 0x00000015
_0200483C: .word 0x00000016
_02004840: .word 0x00000017
_02004844: .word 0x00000018
_02004848: .word 0x00000019
_0200484C: .word 0x0000001A
_02004850: .word 0x0000001B
_02004854: .word 0x0000001C
_02004858: .word 0x0000001E
_0200485C: .word 0x0000001F
_02004860: .word 0x00000020
_02004864: .word 0x00000021
arm_func_end LoadOverlay
arm_func_start UnloadOverlay
UnloadOverlay: ; 0x02004868
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
cmp r4, #0x24
addls pc, pc, r4, lsl #2
b _02004968
_02004880: ; jump table
b _02004914 ; case 0
b _02004918 ; case 1
b _02004918 ; case 2
b _02004918 ; case 3
b _02004928 ; case 4
b _02004928 ; case 5
b _02004938 ; case 6
b _02004938 ; case 7
b _02004938 ; case 8
b _02004938 ; case 9
b _02004938 ; case 10
b _02004938 ; case 11
b _02004938 ; case 12
b _02004928 ; case 13
b _02004928 ; case 14
b _02004928 ; case 15
b _02004948 ; case 16
b _02004948 ; case 17
b _02004948 ; case 18
b _02004948 ; case 19
b _02004948 ; case 20
b _02004948 ; case 21
b _02004948 ; case 22
b _02004948 ; case 23
b _02004948 ; case 24
b _02004948 ; case 25
b _02004948 ; case 26
b _02004948 ; case 27
b _02004948 ; case 28
b _02004948 ; case 29
b _02004948 ; case 30
b _02004948 ; case 31
b _02004948 ; case 32
b _02004958 ; case 33
b _02004958 ; case 34
b _02004958 ; case 35
b _02004958 ; case 36
_02004914:
b _02004ED0
_02004918:
ldr r0, _02004ED8 ; =LOADED_OVERLAY_GROUP_0
mov r1, #0
str r1, [r0, #8]
b _02004988
_02004928:
ldr r0, _02004ED8 ; =LOADED_OVERLAY_GROUP_0
mov r1, #0
str r1, [r0, #4]
b _02004988
_02004938:
ldr r0, _02004ED8 ; =LOADED_OVERLAY_GROUP_0
mov r1, #0
str r1, [r0]
b _02004988
_02004948:
ldr r0, _02004ED8 ; =LOADED_OVERLAY_GROUP_0
mov r1, #0
str r1, [r0]
b _02004988
_02004958:
ldr r0, _02004ED8 ; =LOADED_OVERLAY_GROUP_0
mov r1, #0
str r1, [r0]
b _02004988
_02004968:
ldr r1, _02004EDC ; =_02092558
add r0, sp, #8
ldr r2, [r1, #0x24]
ldr r3, [r1, #0x20]
ldr r1, _02004EE0 ; =_020925B4
str r3, [sp, #8]
str r2, [sp, #0xc]
bl Debug_FatalError
_02004988:
bl FileRom_InitDataTransfer
cmp r4, #0x24
addls pc, pc, r4, lsl #2
b _02004EAC
_02004998: ; jump table
b _02004EAC ; case 0
b _02004A2C ; case 1
b _02004A4C ; case 2
b _02004A6C ; case 3
b _02004A8C ; case 4
b _02004AAC ; case 5
b _02004ACC ; case 6
b _02004AEC ; case 7
b _02004B0C ; case 8
b _02004B2C ; case 9
b _02004B4C ; case 10
b _02004B6C ; case 11
b _02004B8C ; case 12
b _02004BAC ; case 13
b _02004BCC ; case 14
b _02004BEC ; case 15
b _02004C0C ; case 16
b _02004C2C ; case 17
b _02004C4C ; case 18
b _02004C6C ; case 19
b _02004C8C ; case 20
b _02004CAC ; case 21
b _02004CCC ; case 22
b _02004CEC ; case 23
b _02004D0C ; case 24
b _02004D2C ; case 25
b _02004D4C ; case 26
b _02004D6C ; case 27
b _02004D8C ; case 28
b _02004DAC ; case 29
b _02004DCC ; case 30
b _02004DEC ; case 31
b _02004E0C ; case 32
b _02004E2C ; case 33
b _02004E4C ; case 34
b _02004E6C ; case 35
b _02004E8C ; case 36
_02004A2C:
ldr r1, _02004EE4 ; =0x00000000
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004A4C:
ldr r1, _02004EE8 ; =0x0000000A
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004A6C:
ldr r1, _02004EEC ; =0x00000023
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004A8C:
ldr r1, _02004EF0 ; =0x00000001
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004AAC:
ldr r1, _02004EF4 ; =0x00000002
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004ACC:
ldr r1, _02004EF8 ; =0x00000003
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004AEC:
ldr r1, _02004EFC ; =0x00000006
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004B0C:
ldr r1, _02004F00 ; =0x00000004
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004B2C:
ldr r1, _02004F04 ; =0x00000005
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004B4C:
ldr r1, _02004F08 ; =0x00000007
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004B6C:
ldr r1, _02004F0C ; =0x00000008
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004B8C:
ldr r1, _02004F10 ; =0x00000009
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004BAC:
ldr r1, _02004F14 ; =0x0000000B
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004BCC:
ldr r1, _02004F18 ; =0x0000001D
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004BEC:
ldr r1, _02004F1C ; =0x00000022
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004C0C:
ldr r1, _02004F20 ; =0x0000000C
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004C2C:
ldr r1, _02004F24 ; =0x0000000D
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004C4C:
ldr r1, _02004F28 ; =0x0000000E
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004C6C:
ldr r1, _02004F2C ; =0x0000000F
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004C8C:
ldr r1, _02004F30 ; =0x00000010
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004CAC:
ldr r1, _02004F34 ; =0x00000011
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004CCC:
ldr r1, _02004F38 ; =0x00000012
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004CEC:
ldr r1, _02004F3C ; =0x00000013
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004D0C:
ldr r1, _02004F40 ; =0x00000014
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004D2C:
ldr r1, _02004F44 ; =0x00000015
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004D4C:
ldr r1, _02004F48 ; =0x00000016
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004D6C:
ldr r1, _02004F4C ; =0x00000017
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004D8C:
ldr r1, _02004F50 ; =0x00000018
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004DAC:
ldr r1, _02004F54 ; =0x00000019
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004DCC:
ldr r1, _02004F58 ; =0x0000001A
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004DEC:
ldr r1, _02004F5C ; =0x0000001B
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004E0C:
ldr r1, _02004F60 ; =0x0000001C
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004E2C:
ldr r1, _02004F64 ; =0x0000001E
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004E4C:
ldr r1, _02004F68 ; =0x0000001F
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004E6C:
ldr r1, _02004F6C ; =0x00000020
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004E8C:
ldr r1, _02004F70 ; =0x00000021
mov r0, #0
bl sub_020800B0
cmp r0, #0
bne _02004ECC
mov r0, #1
bl CardPullOutWithStatus
b _02004ECC
_02004EAC:
ldr r1, _02004EDC ; =_02092558
add r0, sp, #0
ldr r2, [r1, #4]
ldr r3, [r1]
ldr r1, _02004EE0 ; =_020925B4
str r3, [sp]
str r2, [sp, #4]
bl Debug_FatalError
_02004ECC:
bl FileRom_StopDataTransfer
_02004ED0:
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_02004ED8: .word LOADED_OVERLAY_GROUP_0
_02004EDC: .word _02092558
_02004EE0: .word _020925B4
_02004EE4: .word 0x00000000
_02004EE8: .word 0x0000000A
_02004EEC: .word 0x00000023
_02004EF0: .word 0x00000001
_02004EF4: .word 0x00000002
_02004EF8: .word 0x00000003
_02004EFC: .word 0x00000006
_02004F00: .word 0x00000004
_02004F04: .word 0x00000005
_02004F08: .word 0x00000007
_02004F0C: .word 0x00000008
_02004F10: .word 0x00000009
_02004F14: .word 0x0000000B
_02004F18: .word 0x0000001D
_02004F1C: .word 0x00000022
_02004F20: .word 0x0000000C
_02004F24: .word 0x0000000D
_02004F28: .word 0x0000000E
_02004F2C: .word 0x0000000F
_02004F30: .word 0x00000010
_02004F34: .word 0x00000011
_02004F38: .word 0x00000012
_02004F3C: .word 0x00000013
_02004F40: .word 0x00000014
_02004F44: .word 0x00000015
_02004F48: .word 0x00000016
_02004F4C: .word 0x00000017
_02004F50: .word 0x00000018
_02004F54: .word 0x00000019
_02004F58: .word 0x0000001A
_02004F5C: .word 0x0000001B
_02004F60: .word 0x0000001C
_02004F64: .word 0x0000001E
_02004F68: .word 0x0000001F
_02004F6C: .word 0x00000020
_02004F70: .word 0x00000021
arm_func_end UnloadOverlay
arm_func_start GetDsFirmwareUserSettingsVeneer
GetDsFirmwareUserSettingsVeneer: ; 0x02004F74
ldr ip, _02004F7C ; =GetDsFirmwareUserSettings
bx ip
.align 2, 0
_02004F7C: .word GetDsFirmwareUserSettings
arm_func_end GetDsFirmwareUserSettingsVeneer
arm_func_start sub_02004F80
sub_02004F80: ; 0x02004F80
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r4, r1
mov r0, #0x400
mov r1, #0xf
bl MemAlloc
ldr r1, _02004FC8 ; =0xEDB88320
mov r5, r0
bl sub_020850B4
mov r0, r5
mov r1, r6
mov r2, r4
bl sub_02085180
mov r4, r0
mov r0, r5
bl MemFree
mov r0, r4
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02004FC8: .word 0xEDB88320
arm_func_end sub_02004F80
arm_func_start Rgb8ToRgb5
Rgb8ToRgb5: ; 0x02004FCC
ldrb r2, [r1, #1]
ldrb r3, [r1, #2]
ldrb ip, [r1]
and r1, r2, #0xf8
and r2, r3, #0xf8
mov r1, r1, lsl #2
and r3, ip, #0xf8
orr r1, r1, r2, lsl #7
orr r1, r1, r3, asr #3
strh r1, [r0]
bx lr
arm_func_end Rgb8ToRgb5
arm_func_start sub_02004FF8
sub_02004FF8: ; 0x02004FF8
ldrh r2, [r1]
tst r2, #1
movne r3, #7
moveq r3, #0
mov r1, r2, lsl #0x1b
orr r1, r3, r1, lsr #24
tst r2, #0x20
movne r3, #7
strb r1, [r0]
moveq r3, #0
and r1, r2, #0x3e0
orr r1, r3, r1, asr #2
tst r2, #0x400
movne r3, #7
strb r1, [r0, #1]
moveq r3, #0
and r1, r2, #0x7c00
orr r1, r3, r1, asr #7
strb r1, [r0, #2]
mov r1, #0
strb r1, [r0, #3]
bx lr
arm_func_end sub_02004FF8
arm_func_start EuclideanNorm__02005050
EuclideanNorm__02005050: ; 0x02005050
stmdb sp!, {r4, r5, r6, lr}
ldmia r0, {r5, r6}
mov r0, r5
bl _fflt
mov r4, r0
mov r0, r5
bl _fflt
mov r1, r0
mov r0, r4
bl _fmul
mov r5, r0
mov r0, r6
bl _fflt
mov r4, r0
mov r0, r6
bl _fflt
mov r1, r0
mov r0, r4
bl _fmul
mov r1, r0
mov r0, r5
bl _fadd
bl sqrtf
ldmia sp!, {r4, r5, r6, pc}
arm_func_end EuclideanNorm__02005050
arm_func_start EuclideanNorm__020050B0
EuclideanNorm__020050B0: ; 0x020050B0
stmdb sp!, {r4, r5, r6, lr}
ldmia r0, {r5, r6}
mov r0, r5
bl _fflt
mov r4, r0
mov r0, r5
bl _fflt
mov r1, r0
mov r0, r4
bl _fmul
mov r5, r0
mov r0, r6
bl _fflt
mov r4, r0
mov r0, r6
bl _fflt
mov r1, r0
mov r0, r4
bl _fmul
mov r1, r0
mov r0, r5
bl _fadd
bl sqrtf
ldmia sp!, {r4, r5, r6, pc}
arm_func_end EuclideanNorm__020050B0
arm_func_start ClampComponentAbs
ClampComponentAbs: ; 0x02005110
ldr r3, [r0]
cmp r3, r1
strgt r1, [r0]
bgt _0200512C
rsb r2, r1, #0
cmp r3, r2
strlt r2, [r0]
_0200512C:
ldr r2, [r0, #4]
cmp r2, r1
strgt r1, [r0, #4]
bxgt lr
rsb r1, r1, #0
cmp r2, r1
strlt r1, [r0, #4]
bx lr
arm_func_end ClampComponentAbs
arm_func_start sub_0200514C
sub_0200514C: ; 0x0200514C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r2
ldr r4, [sp, #0x18]
ldr r2, [r6]
mov r7, r1
mul r1, r2, r4
mov r5, r3
ldr r2, [r7]
mov r8, r0
mla r0, r2, r5, r1
add r1, r5, r4
bl _s32_div_f
str r0, [r8]
ldr r0, [r6, #4]
ldr r2, [r7, #4]
mul r1, r0, r4
mla r0, r2, r5, r1
add r1, r5, r4
bl _s32_div_f
str r0, [r8, #4]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_0200514C
arm_func_start sub_020051A0
sub_020051A0: ; 0x020051A0
stmdb sp!, {r4, lr}
mov r4, r0
cmp r1, #0x13
addls pc, pc, r1, lsl #2
b _0200533C
_020051B4: ; jump table
b _0200533C ; case 0
b _02005204 ; case 1
b _0200521C ; case 2
b _02005234 ; case 3
b _0200524C ; case 4
b _02005264 ; case 5
b _0200527C ; case 6
b _020052DC ; case 7
b _02005304 ; case 8
b _0200531C ; case 9
b _0200533C ; case 10
b _0200533C ; case 11
b _02005330 ; case 12
b _02005330 ; case 13
b _02005330 ; case 14
b _02005330 ; case 15
b _02005330 ; case 16
b _02005330 ; case 17
b _02005330 ; case 18
b _02005330 ; case 19
_02005204:
cmp r4, #0
addge r0, r4, #7
andge r0, r0, #7
movge r0, r0, lsl #0x18
movge r4, r0, asr #0x18
b _0200533C
_0200521C:
cmp r4, #0
addge r0, r4, #1
andge r0, r0, #7
movge r0, r0, lsl #0x18
movge r4, r0, asr #0x18
b _0200533C
_02005234:
cmp r4, #0
addge r0, r4, #6
andge r0, r0, #7
movge r0, r0, lsl #0x18
movge r4, r0, asr #0x18
b _0200533C
_0200524C:
cmp r4, #0
addge r0, r4, #2
andge r0, r0, #7
movge r0, r0, lsl #0x18
movge r4, r0, asr #0x18
b _0200533C
_02005264:
cmp r4, #0
addge r0, r4, #4
andge r0, r0, #7
movge r0, r0, lsl #0x18
movge r4, r0, asr #0x18
b _0200533C
_0200527C:
tst r4, #1
beq _020052B0
mov r0, #2
bl RandInt
mov r0, r0, lsl #1
add r0, r0, #7
add r0, r4, r0
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #29
add r0, r1, r0, ror #29
mov r0, r0, lsl #0x18
mov r4, r0, asr #0x18
b _0200533C
_020052B0:
mov r0, #3
bl RandInt
mov r0, r0, lsl #1
add r0, r0, #6
add r0, r4, r0
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #29
add r0, r1, r0, ror #29
mov r0, r0, lsl #0x18
mov r4, r0, asr #0x18
b _0200533C
_020052DC:
mov r0, #3
bl RandInt
add r0, r0, #7
add r0, r4, r0
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #29
add r0, r1, r0, ror #29
mov r0, r0, lsl #0x18
mov r4, r0, asr #0x18
b _0200533C
_02005304:
mov r0, #8
bl RandInt
bic r0, r0, #1
mov r0, r0, lsl #0x18
mov r4, r0, asr #0x18
b _0200533C
_0200531C:
mov r0, #8
bl RandInt
mov r0, r0, lsl #0x18
mov r4, r0, asr #0x18
b _0200533C
_02005330:
sub r0, r1, #0xc
mov r0, r0, lsl #0x18
mov r4, r0, asr #0x18
_0200533C:
mov r0, r4
ldmia sp!, {r4, pc}
arm_func_end sub_020051A0
arm_func_start sub_02005344
sub_02005344: ; 0x02005344
stmdb sp!, {r4, lr}
mov r4, r1
cmp r0, r4
ldmeqia sp!, {r4, pc}
cmp r2, #0x13
addls pc, pc, r2, lsl #2
ldmia sp!, {r4, pc}
_02005360: ; jump table
ldmia sp!, {r4, pc} ; case 0
b _020053B0 ; case 1
b _020053C8 ; case 2
b _020053E0 ; case 3
b _020053F8 ; case 4
ldmia sp!, {r4, pc} ; case 5
ldmia sp!, {r4, pc} ; case 6
ldmia sp!, {r4, pc} ; case 7
ldmia sp!, {r4, pc} ; case 8
ldmia sp!, {r4, pc} ; case 9
b _02005414 ; case 10
b _02005410 ; case 11
b _02005420 ; case 12
b _02005420 ; case 13
b _02005420 ; case 14
b _02005420 ; case 15
b _02005420 ; case 16
b _02005420 ; case 17
b _02005420 ; case 18
b _02005420 ; case 19
_020053B0:
cmp r0, #0
addge r0, r0, #7
andge r0, r0, #7
movge r0, r0, lsl #0x18
movge r0, r0, asr #0x18
ldmia sp!, {r4, pc}
_020053C8:
cmp r0, #0
addge r0, r0, #1
andge r0, r0, #7
movge r0, r0, lsl #0x18
movge r0, r0, asr #0x18
ldmia sp!, {r4, pc}
_020053E0:
cmp r0, #0
addge r0, r0, #6
andge r0, r0, #7
movge r0, r0, lsl #0x18
movge r0, r0, asr #0x18
ldmia sp!, {r4, pc}
_020053F8:
cmp r0, #0
addge r0, r0, #2
andge r0, r0, #7
movge r0, r0, lsl #0x18
movge r0, r0, asr #0x18
ldmia sp!, {r4, pc}
_02005410:
bl sub_02005430
_02005414:
mov r1, r4
bl sub_02005430
ldmia sp!, {r4, pc}
_02005420:
sub r0, r2, #0xc
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
ldmia sp!, {r4, pc}
arm_func_end sub_02005344
arm_func_start sub_02005430
sub_02005430: ; 0x02005430
mvn r2, #0
cmp r1, r2
bxeq lr
add r1, r1, #8
sub r1, r1, r0
mov r2, r1, lsr #0x1f
rsb r1, r2, r1, lsl #29
adds r1, r2, r1, ror #29
bxeq lr
cmp r1, #4
bge _02005478
add r0, r0, #1
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #29
add r0, r1, r0, ror #29
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
bx lr
_02005478:
add r0, r0, #7
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #29
add r0, r1, r0, ror #29
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
bx lr
arm_func_end sub_02005430
arm_func_start sub_02005494
sub_02005494: ; 0x02005494
ldr ip, _020054BC ; =_020925F8
add r3, r0, #1
ldr r0, [ip, r3, lsl #3]
add ip, ip, r3, lsl #3
mul r3, r0, r2
str r3, [r1]
ldr r0, [ip, #4]
mul r2, r0, r2
str r2, [r1, #4]
bx lr
.align 2, 0
_020054BC: .word _020925F8
arm_func_end sub_02005494
arm_func_start sub_020054C0
sub_020054C0: ; 0x020054C0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
ldr r1, _020055C4 ; =_020925C8
mov r5, r0
ldr r4, [r5]
ldr r2, [r1, #0x20]
ldr r1, [r1, #0x24]
mov r0, r4
str r2, [sp]
str r1, [sp, #4]
bl abs
ldr r5, [r5, #4]
str r0, [sp]
mov r0, r5
bl abs
str r0, [sp, #4]
cmp r4, #0
bge _02005550
cmp r5, #0
bge _02005530
ldr r1, [sp]
cmp r0, r1, lsl #1
movgt r0, #4
bgt _020055BC
cmp r1, r0, lsl #1
movgt r0, #6
movle r0, #5
b _020055BC
_02005530:
ldr r1, [sp]
cmp r0, r1, lsl #1
movgt r0, #0
bgt _020055BC
cmp r1, r0, lsl #1
movgt r0, #6
movle r0, #7
b _020055BC
_02005550:
ble _0200559C
cmp r5, #0
bge _0200557C
ldr r1, [sp]
cmp r0, r1, lsl #1
movgt r0, #4
bgt _020055BC
cmp r1, r0, lsl #1
movgt r0, #2
movle r0, #3
b _020055BC
_0200557C:
ldr r1, [sp]
cmp r0, r1, lsl #1
movgt r0, #0
bgt _020055BC
cmp r1, r0, lsl #1
movgt r0, #2
movle r0, #1
b _020055BC
_0200559C:
cmp r5, #0
movlt r0, #4
blt _020055BC
movle r0, #1
movgt r0, #0
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
rsb r0, r0, #0
_020055BC:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020055C4: .word _020925C8
arm_func_end sub_020054C0
arm_func_start sub_020055C8
sub_020055C8: ; 0x020055C8
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
ldr r1, _020056CC ; =_020925C8
mov r5, r0
ldr r4, [r5]
ldr r2, [r1, #0x18]
ldr r1, [r1, #0x1c]
mov r0, r4
str r2, [sp]
str r1, [sp, #4]
bl abs
ldr r5, [r5, #4]
str r0, [sp]
mov r0, r5
bl abs
str r0, [sp, #4]
cmp r4, #0
bge _02005658
cmp r5, #0
bge _02005638
ldr r1, [sp]
cmp r0, r1, lsl #1
movgt r0, #4
bgt _020056C4
cmp r1, r0, lsl #1
movgt r0, #6
movle r0, #5
b _020056C4
_02005638:
ldr r1, [sp]
cmp r0, r1, lsl #1
movgt r0, #0
bgt _020056C4
cmp r1, r0, lsl #1
movgt r0, #6
movle r0, #7
b _020056C4
_02005658:
ble _020056A4
cmp r5, #0
bge _02005684
ldr r1, [sp]
cmp r0, r1, lsl #1
movgt r0, #4
bgt _020056C4
cmp r1, r0, lsl #1
movgt r0, #2
movle r0, #3
b _020056C4
_02005684:
ldr r1, [sp]
cmp r0, r1, lsl #1
movgt r0, #0
bgt _020056C4
cmp r1, r0, lsl #1
movgt r0, #2
movle r0, #1
b _020056C4
_020056A4:
cmp r5, #0
movlt r0, #4
blt _020056C4
movle r0, #1
movgt r0, #0
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
rsb r0, r0, #0
_020056C4:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020056CC: .word _020925C8
arm_func_end sub_020055C8
arm_func_start sub_020056D0
sub_020056D0: ; 0x020056D0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
ldr r1, _020057A4 ; =_020925C8
mov r5, r0
ldr r4, [r5]
ldr r2, [r1, #0x28]
ldr r1, [r1, #0x2c]
mov r0, r4
str r2, [sp]
str r1, [sp, #4]
bl abs
ldr r5, [r5, #4]
str r0, [sp]
mov r0, r5
bl abs
str r0, [sp, #4]
cmp r4, #0
bge _02005748
cmp r5, #0
bge _02005734
ldr r1, [sp]
cmp r0, r1
movgt r0, #4
movle r0, #6
b _0200579C
_02005734:
ldr r1, [sp]
cmp r0, r1
movgt r0, #0
movle r0, #6
b _0200579C
_02005748:
ble _0200577C
cmp r5, #0
bge _02005768
ldr r1, [sp]
cmp r0, r1
movgt r0, #4
movle r0, #2
b _0200579C
_02005768:
ldr r1, [sp]
cmp r0, r1
movgt r0, #0
movle r0, #2
b _0200579C
_0200577C:
cmp r5, #0
movlt r0, #4
blt _0200579C
movle r0, #1
movgt r0, #0
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
rsb r0, r0, #0
_0200579C:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020057A4: .word _020925C8
arm_func_end sub_020056D0
arm_func_start sub_020057A8
sub_020057A8: ; 0x020057A8
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr ip, _020058A4 ; =_020925C8
ldr lr, [ip, #4]
ldr ip, [ip]
str lr, [sp, #4]
str ip, [sp]
ldr lr, [r2]
ldr ip, [r0]
subs ip, lr, ip
str ip, [sp]
ldr r2, [r2, #4]
ldr r0, [r0, #4]
sub r0, r2, r0
str r0, [sp, #4]
ldr r2, [r1]
ldr r0, [r3]
bmi _02005814
add r0, r2, r0
add r0, r0, r0, lsr #31
mov r0, r0, asr #1
sub r0, r0, #1
subs r0, ip, r0
str r0, [sp]
movmi r0, #0
strmi r0, [sp]
b _02005838
_02005814:
add r0, r2, r0
add r0, r0, r0, lsr #31
mov r0, r0, asr #1
sub r0, r0, #1
add r0, ip, r0
str r0, [sp]
cmp r0, #0
movgt r0, #0
strgt r0, [sp]
_02005838:
ldr r0, [sp, #4]
ldr r2, [r1, #4]
cmp r0, #0
ldr r1, [r3, #4]
blt _02005870
add r1, r2, r1
add r1, r1, r1, lsr #31
mov r1, r1, asr #1
sub r1, r1, #1
subs r0, r0, r1
str r0, [sp, #4]
movmi r0, #0
strmi r0, [sp, #4]
b _02005894
_02005870:
add r1, r2, r1
add r1, r1, r1, lsr #31
mov r1, r1, asr #1
sub r1, r1, #1
add r0, r0, r1
str r0, [sp, #4]
cmp r0, #0
movgt r0, #0
strgt r0, [sp, #4]
_02005894:
add r0, sp, #0
bl sub_020056D0
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_020058A4: .word _020925C8
arm_func_end sub_020057A8
arm_func_start sub_020058A8
sub_020058A8: ; 0x020058A8
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr ip, _020059A4 ; =_020925C8
ldr lr, [ip, #0xc]
ldr ip, [ip, #8]
str lr, [sp, #4]
str ip, [sp]
ldr lr, [r2]
ldr ip, [r0]
subs ip, lr, ip
str ip, [sp]
ldr r2, [r2, #4]
ldr r0, [r0, #4]
sub r0, r2, r0
str r0, [sp, #4]
ldr r2, [r1]
ldr r0, [r3]
bmi _02005914
add r0, r2, r0
add r0, r0, r0, lsr #31
mov r0, r0, asr #1
sub r0, r0, #1
subs r0, ip, r0
str r0, [sp]
movmi r0, #0
strmi r0, [sp]
b _02005938
_02005914:
add r0, r2, r0
add r0, r0, r0, lsr #31
mov r0, r0, asr #1
sub r0, r0, #1
add r0, ip, r0
str r0, [sp]
cmp r0, #0
movgt r0, #0
strgt r0, [sp]
_02005938:
ldr r0, [sp, #4]
ldr r2, [r1, #4]
cmp r0, #0
ldr r1, [r3, #4]
blt _02005970
add r1, r2, r1
add r1, r1, r1, lsr #31
mov r1, r1, asr #1
sub r1, r1, #1
subs r0, r0, r1
str r0, [sp, #4]
movmi r0, #0
strmi r0, [sp, #4]
b _02005994
_02005970:
add r1, r2, r1
add r1, r1, r1, lsr #31
mov r1, r1, asr #1
sub r1, r1, #1
add r0, r0, r1
str r0, [sp, #4]
cmp r0, #0
movgt r0, #0
strgt r0, [sp, #4]
_02005994:
add r0, sp, #0
bl sub_020055C8
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_020059A4: .word _020925C8
arm_func_end sub_020058A8
arm_func_start sub_020059A8
sub_020059A8: ; 0x020059A8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0xac
ldr r0, _02005A8C ; =_020AF240
bl sub_02002C40
ldr r0, _02005A8C ; =_020AF240
mov r1, #7
bl sub_02002CAC
ldr r0, _02005A8C ; =_020AF240
bl sub_02002E98
ldr r8, _02005A90 ; =_022A3248
ldr r7, _02005A94 ; =_02092670
ldr r6, _02005A98 ; =_020926C0
add r5, sp, #0
mov sb, #0
mov r4, #0xa
_020059E4:
ldmia r6!, {r0, r1, r2, r3}
stmia r5!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _020059E4
ldmia r6, {r0, r1, r2}
stmia r5, {r0, r1, r2}
mov r5, #0
mov r6, #1
mov r4, r5
_02005A08:
ldrb r0, [r7, #8]
strh sb, [r8]
cmp r0, #0
beq _02005A2C
mov r1, r6
mov r2, r5
add r0, r8, #4
bl sub_02002A9C
b _02005A50
_02005A2C:
add sl, sp, #0
add lr, r8, #4
mov ip, #0xa
_02005A38:
ldmia sl!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _02005A38
ldmia sl, {r0, r1, r2}
stmia lr, {r0, r1, r2}
_02005A50:
strh r4, [r8, #0xb0]
str r4, [r8, #0xb8]
ldr r1, [r7, #0x10]
mov r0, sb
str r4, [r8, #0xb4]
bl sub_02005A9C
add r0, sb, #1
mov r0, r0, lsl #0x10
mov sb, r0, asr #0x10
cmp sb, #4
add r8, r8, #0xbc
add r7, r7, #0x14
blt _02005A08
add sp, sp, #0xac
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_02005A8C: .word _020AF240
_02005A90: .word _022A3248
_02005A94: .word _02092670
_02005A98: .word _020926C0
arm_func_end sub_020059A8
arm_func_start sub_02005A9C
sub_02005A9C: ; 0x02005A9C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r2, _02005B0C ; =_02092670
mov r4, r0
mov r0, #0x14
mla r0, r4, r0, r2
ldrh r0, [r0, #4]
ldr r3, _02005B10 ; =_022A3248
mov r2, #0xbc
mla r6, r4, r2, r3
mov r8, r1
cmp r0, #0
mov r7, #0
beq _02005B04
bl sub_020031C0
mov r5, r0
bl sub_0200302C
mov r0, r4
bl sub_02005D30
ldr r0, _02005B14 ; =_020AF240
bl sub_02002CB4
ldr r7, [r6, #0xb8]
ldr r0, _02005B14 ; =_020AF240
str r8, [r6, #0xb8]
bl sub_02002E98
mov r0, r5
bl sub_020030FC
_02005B04:
mov r0, r7
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02005B0C: .word _02092670
_02005B10: .word _022A3248
_02005B14: .word _020AF240
arm_func_end sub_02005A9C
arm_func_start sub_02005B18
sub_02005B18: ; 0x02005B18
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r6, r0
ldrsh ip, [r6]
ldrh r5, [r6, #2]
ldr r3, _02005D04 ; =_022A3248
mov r0, #0xbc
ldr r2, _02005D08 ; =_02092670
mov r1, #0x14
mla r4, ip, r0, r3
tst r5, #0x400
orrne r0, r5, #0x200
movne r0, r0, lsl #0x10
mla r1, ip, r1, r2
movne r5, r0, lsr #0x10
bne _02005B6C
tst r5, #0x800
ldreq r0, [r1, #0xc]
orreq r0, r5, r0
moveq r0, r0, lsl #0x10
moveq r5, r0, lsr #0x10
_02005B6C:
ldrh r0, [r1, #6]
bl sub_020031C0
ldrsh r0, [r6]
bl sub_02005D30
ldr r0, _02005D0C ; =_020AF240
bl sub_02002CB4
ldr r0, _02005D10 ; =_020AF23C
ldr r1, [r0]
add r2, r1, #1
str r2, [r4, #0xb4]
strh r5, [r4, #0xb0]
ldrh r1, [r4, #0xb0]
str r2, [r0]
and r0, r1, #0xff
cmp r0, #7
addls pc, pc, r0, lsl #2
b _02005CE0
_02005BB0: ; jump table
b _02005BD0 ; case 0
b _02005BF4 ; case 1
b _02005C18 ; case 2
b _02005C3C ; case 3
b _02005C60 ; case 4
b _02005C8C ; case 5
b _02005CB8 ; case 6
b _02005CE0 ; case 7
_02005BD0:
ldr r0, [r4, #0xb8]
ldr r0, [r0]
stmia sp, {r0, r4}
ldrsh r0, [r6]
ldr r1, [r6, #8]
ldr r2, [r6, #0xc]
ldr r3, [r6, #4]
bl sub_0207BFA4
b _02005CE0
_02005BF4:
ldr r0, [r4, #0xb8]
ldr r0, [r0]
stmia sp, {r0, r4}
ldrsh r0, [r6]
ldr r1, [r6, #8]
ldr r2, [r6, #0xc]
ldr r3, [r6, #4]
bl sub_0207BE6C
b _02005CE0
_02005C18:
ldr r0, [r4, #0xb8]
ldr r0, [r0]
stmia sp, {r0, r4}
ldrsh r0, [r6]
ldr r1, [r6, #8]
ldr r2, [r6, #0xc]
ldr r3, [r6, #4]
bl sub_0207C03C
b _02005CE0
_02005C3C:
ldr r0, [r4, #0xb8]
ldr r0, [r0]
stmia sp, {r0, r4}
ldrsh r0, [r6]
ldr r1, [r6, #8]
ldr r2, [r6, #0xc]
ldr r3, [r6, #4]
bl sub_0207BF04
b _02005CE0
_02005C60:
bl GX_BeginLoadBGExtPltt
ldr r0, [r4, #0xb8]
ldr r0, [r0]
stmia sp, {r0, r4}
ldrsh r0, [r6]
ldr r1, [r6, #8]
ldr r2, [r6, #0xc]
ldr r3, [r6, #4]
bl sub_0207BE6C
bl GX_EndLoadBGExtPltt
b _02005CE0
_02005C8C:
bl GX_BeginLoadOBJExtPltt
ldr r0, [r4, #0xb8]
ldr r0, [r0]
stmia sp, {r0, r4}
ldrsh r0, [r6]
ldr r1, [r6, #8]
ldr r2, [r6, #0xc]
ldr r3, [r6, #4]
bl sub_0207BE6C
bl GX_EndLoadOBJExtPltt
b _02005CE0
_02005CB8:
bl GXS_BeginLoadBGExtPltt
ldr r0, [r4, #0xb8]
ldr r0, [r0]
stmia sp, {r0, r4}
ldrsh r0, [r6]
ldr r1, [r6, #8]
ldr r2, [r6, #0xc]
ldr r3, [r6, #4]
bl sub_0207BE6C
bl GXS_EndLoadBGExtPltt
_02005CE0:
ldr r0, _02005D0C ; =_020AF240
bl sub_02002E98
ldrh r0, [r4, #0xb0]
tst r0, #0x100
beq _02005CFC
ldrsh r0, [r4]
bl sub_02005D30
_02005CFC:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02005D04: .word _022A3248
_02005D08: .word _02092670
_02005D0C: .word _020AF240
_02005D10: .word _020AF23C
arm_func_end sub_02005B18
arm_func_start sub_02005D14
sub_02005D14: ; 0x02005D14
stmdb sp!, {r3, lr}
ldrh r1, [r0, #0xb0]
tst r1, #0x200
ldmeqia sp!, {r3, pc}
add r0, r0, #4
bl sub_02002B38
ldmia sp!, {r3, pc}
arm_func_end sub_02005D14
arm_func_start sub_02005D30
sub_02005D30: ; 0x02005D30
stmdb sp!, {r4, lr}
ldr r1, _02005D88 ; =_02092670
mov r4, r0
mov r0, #0x14
mla r0, r4, r0, r1
ldrh r0, [r0, #6]
bl sub_020031C0
ldr r1, _02005D8C ; =_022A3248
mov r0, #0xbc
mla r0, r4, r0, r1
ldr r0, [r0, #0xb8]
cmp r0, #0
beq _02005D74
ldr r1, [r0, #8]
mov r0, r4
blx r1
ldmia sp!, {r4, pc}
_02005D74:
mov r0, r4
bl sub_0207C0DC
cmp r0, #0
bne _02005D74
ldmia sp!, {r4, pc}
.align 2, 0
_02005D88: .word _02092670
_02005D8C: .word _022A3248
arm_func_end sub_02005D30
arm_func_start sub_02005D90
sub_02005D90: ; 0x02005D90
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02005DDC ; =_022A3248
mov r5, r0
mov r0, #0xbc
smlabb r4, r5, r0, r1
ldrh r0, [r4, #0xb0]
tst r0, #0x200
beq _02005DC8
add r0, r4, #4
bl sub_02002B7C
ldrh r0, [r4, #0xb0]
bic r0, r0, #0x200
strh r0, [r4, #0xb0]
ldmia sp!, {r3, r4, r5, pc}
_02005DC8:
mov r0, r5
bl sub_0207C0DC
cmp r0, #0
bne _02005DC8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02005DDC: .word _022A3248
arm_func_end sub_02005D90
arm_func_start sub_02005DE0
sub_02005DE0: ; 0x02005DE0
stmdb sp!, {r3, lr}
ldr r2, _02005E0C ; =_022A3248
mov r1, #0xbc
smlabb r1, r0, r1, r2
ldrh r1, [r1, #0xb0]
tst r1, #0x200
movne r0, #1
ldmneia sp!, {r3, pc}
bl sub_0207C0DC
and r0, r0, #0xff
ldmia sp!, {r3, pc}
.align 2, 0
_02005E0C: .word _022A3248
arm_func_end sub_02005DE0
arm_func_start sub_02005E10
sub_02005E10: ; 0x02005E10
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
ldr ip, [sp, #0x18]
strh r0, [sp]
add r0, sp, #0
strh r1, [sp, #2]
str ip, [sp, #4]
str r3, [sp, #8]
str r2, [sp, #0xc]
bl sub_02005B18
add sp, sp, #0x10
ldmia sp!, {r3, pc}
arm_func_end sub_02005E10
arm_func_start sub_02005E40
sub_02005E40: ; 0x02005E40
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r0, _02005EA4 ; =_020AF264
bl sub_02002C40
ldr r0, _02005EA4 ; =_020AF264
mov r1, #8
bl sub_02002CAC
mov r8, #0
ldr r7, _02005EA8 ; =_022A353C
mov r6, r8
mov r5, r8
mov r4, #0xc
b _02005E8C
_02005E70:
mla r0, r8, r4, r7
mov r1, r6
bl sub_02005F14
mov r0, r8
mov r1, r5
bl sub_02005F30
add r8, r8, #1
_02005E8C:
cmp r8, #2
blt _02005E70
ldr r0, _02005EA4 ; =_020AF264
bl sub_02002E98
bl sub_02006030
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02005EA4: .word _020AF264
_02005EA8: .word _022A353C
arm_func_end sub_02005E40
arm_func_start sub_02005EAC
sub_02005EAC: ; 0x02005EAC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r6, _02005F10 ; =_022A3554
mov r7, #0
cmp r7, #2
ldmgeia sp!, {r3, r4, r5, r6, r7, pc}
mov r5, r7
mov r4, r7
b _02005F04
_02005ECC:
strh r5, [r6, #0x1e]
ldrh r1, [r6, #0x1e]
mov r0, r7
strh r1, [r6, #0x12]
bl sub_02006220
strh r4, [r6, #0x3c]
ldrh r1, [r6, #0x3c]
mov r0, r7
strh r1, [r6, #0x2c]
bl sub_020062C8
mov r0, r7
bl sub_020063A0
add r7, r7, #1
add r6, r6, #0x44
_02005F04:
cmp r7, #2
blt _02005ECC
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02005F10: .word _022A3554
arm_func_end sub_02005EAC
arm_func_start sub_02005F14
sub_02005F14: ; 0x02005F14
mov r2, #0
stmia r0, {r1, r2}
ldr r1, _02005F2C ; =0x00002FFF
strh r2, [r0, #8]
strh r1, [r0, #0xa]
bx lr
.align 2, 0
_02005F2C: .word 0x00002FFF
arm_func_end sub_02005F14
arm_func_start sub_02005F30
sub_02005F30: ; 0x02005F30
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _02005F80 ; =_022A3554
mov r5, r0
mov r0, #0x44
mla r4, r5, r0, r2
mov r0, r4
bl sub_02005F14
mov r1, #0
strh r1, [r4, #0x1e]
mov r0, r5
strh r1, [r4, #0x12]
bl sub_02006220
mov r1, #0
strh r1, [r4, #0x3c]
mov r0, r5
strh r1, [r4, #0x2c]
bl sub_020062C8
mov r0, r5
bl sub_020063A0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02005F80: .word _022A3554
arm_func_end sub_02005F30
arm_func_start sub_02005F84
sub_02005F84: ; 0x02005F84
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _0200601C ; =_022A353C
movs r5, r0
mov r0, #0xc
mla r4, r5, r0, r1
movne r6, #0
bne _02005FCC
ldr r1, _02006020 ; =0x04000130
ldr r0, _02006024 ; =0x027FFFA8
ldrh r3, [r1]
ldrh r2, [r0]
ldr r0, _02006028 ; =0x00002FFF
ldr r1, _0200602C ; =_022A3538
orr r2, r3, r2
eor r2, r2, r0
and r0, r2, r0
strh r0, [r1]
mov r6, #2
_02005FCC:
ldr r0, [r4]
cmp r6, r0
beq _02005FF0
mov r0, r4
mov r1, r6
bl sub_02005F14
mov r0, r5
mov r1, r6
bl sub_02005F30
_02005FF0:
ldr r1, _0200602C ; =_022A3538
mov r0, r6
ldrh r2, [r1]
strh r2, [r4, #8]
ldrh r1, [r4, #0xa]
and r1, r1, r2
strh r1, [r4, #0xa]
ldr r1, [r4, #4]
add r1, r1, #1
str r1, [r4, #4]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0200601C: .word _022A353C
_02006020: .word 0x04000130
_02006024: .word 0x027FFFA8
_02006028: .word 0x00002FFF
_0200602C: .word _022A3538
arm_func_end sub_02005F84
arm_func_start sub_02006030
sub_02006030: ; 0x02006030
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r0, _0200608C ; =_020AF264
bl sub_02002CB4
mov r7, #0
ldr r5, _02006090 ; =_022A353C
ldr r6, _02006094 ; =_022A3554
mov r4, r7
_0200604C:
mov r0, r7
bl sub_02005F84
cmp r0, #0
streq r4, [r6]
beq _0200606C
cmp r0, #1
ldmneia r5, {r0, r1, r2}
stmneia r6, {r0, r1, r2}
_0200606C:
add r7, r7, #1
cmp r7, #2
add r5, r5, #0xc
add r6, r6, #0x44
blt _0200604C
ldr r0, _0200608C ; =_020AF264
bl sub_02002E98
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0200608C: .word _020AF264
_02006090: .word _022A353C
_02006094: .word _022A3554
arm_func_end sub_02006030
arm_func_start sub_02006098
sub_02006098: ; 0x02006098
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r0, _020061D8 ; =_020AF264
bl sub_02002CB4
mov r6, #0
ldr r4, _020061DC ; =_022A353C
ldr r5, _020061E0 ; =_022A3554
ldr sb, _020061E4 ; =0x00002FFF
ldr r7, _020061E8 ; =0x00000F0F
mov lr, #1
mov ip, r6
mov r3, r6
mov r8, r6
_020060C8:
ldmia r4, {r0, r1, r2}
stmia r5, {r0, r1, r2}
ldr r0, [r4]
cmp r0, #0
beq _020061B8
ldrh r1, [r5, #0x14]
ldrh r0, [r5, #0xa]
and r0, r1, r0
strh r0, [r5, #0x14]
ldrh r0, [r5, #8]
strh r0, [r5, #0x12]
strb lr, [r5, #0x10]
ldrh r0, [r5, #0xa]
ldrh r1, [r5, #0x20]
orr r0, r0, #0xf0
and r0, r1, r0
strh r0, [r5, #0x20]
ldrh r0, [r5, #8]
strh r0, [r5, #0x1e]
strb lr, [r5, #0x1c]
ldrh r1, [r5, #0x2e]
ldrh r0, [r5, #0xa]
and r0, r1, r0
strh r0, [r5, #0x2e]
ldrh r0, [r5, #8]
and r0, r0, r7
strh r0, [r5, #0x2c]
strb lr, [r5, #0x24]
ldrh r1, [r5, #0x3e]
ldrh r0, [r5, #0xa]
and r0, r1, r0
strh r0, [r5, #0x3e]
ldrh r0, [r5, #8]
and r0, r0, #0xf0
strh r0, [r5, #0x3c]
strb lr, [r5, #0x34]
ldrh r0, [r5, #0x2c]
cmp r0, #0
streqb ip, [r5, #0x25]
streq ip, [r5, #0x28]
beq _02006184
ldrb r0, [r5, #0x25]
cmp r0, #0
ldreq r1, [r5, #0x28]
ldreq r0, [r4, #4]
subeq r0, r1, r0
streq r0, [r5, #0x28]
_02006184:
ldrh r0, [r5, #0x3c]
cmp r0, #0
streqb r3, [r5, #0x35]
streq r3, [r5, #0x38]
beq _020061B0
ldrb r0, [r5, #0x35]
cmp r0, #0
ldreq r1, [r5, #0x38]
ldreq r0, [r4, #4]
subeq r0, r1, r0
streq r0, [r5, #0x38]
_020061B0:
strh sb, [r4, #0xa]
str r8, [r4, #4]
_020061B8:
add r6, r6, #1
cmp r6, #2
add r4, r4, #0xc
add r5, r5, #0x44
blt _020060C8
ldr r0, _020061D8 ; =_020AF264
bl sub_02002E98
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_020061D8: .word _020AF264
_020061DC: .word _022A353C
_020061E0: .word _022A3554
_020061E4: .word 0x00002FFF
_020061E8: .word 0x00000F0F
arm_func_end sub_02006098
arm_func_start GetHeldButtons
GetHeldButtons: ; 0x020061EC
mov r2, #0x44
mul r2, r0, r2
ldr r3, _0200621C ; =_022A3554
add r0, r3, r2
ldrh r0, [r0, #8]
strh r0, [r1]
ldr r0, [r3, r2]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0200621C: .word _022A3554
arm_func_end GetHeldButtons
arm_func_start sub_02006220
sub_02006220: ; 0x02006220
ldr r2, _02006258 ; =_022A3554
mov r1, #0x44
mla r2, r0, r1, r2
mov r1, #0
str r0, [r2, #0xc]
strb r1, [r2, #0x1c]
strb r1, [r2, #0x10]
strh r1, [r2, #0x22]
strh r1, [r2, #0x16]
ldrh r0, [r2, #0x12]
strh r0, [r2, #0x14]
ldrh r0, [r2, #0x1e]
strh r0, [r2, #0x20]
bx lr
.align 2, 0
_02006258: .word _022A3554
arm_func_end sub_02006220
arm_func_start GetPressedButtons
GetPressedButtons: ; 0x0200625C
ldr r3, _020062C0 ; =_022A3554
mov r2, #0x44
mla ip, r0, r2, r3
ldrb r0, [ip, #0x10]
cmp r0, #0
beq _020062A0
mov r0, #0
strb r0, [ip, #0x10]
ldrh r3, [ip, #0x12]
ldrh r2, [ip, #0x14]
ldr r0, _020062C4 ; =0x00002FFF
and r2, r3, r2
eor r0, r2, r0
and r0, r3, r0
strh r0, [ip, #0x16]
ldrh r0, [ip, #0x12]
strh r0, [ip, #0x14]
_020062A0:
ldrh r0, [ip, #0x16]
strh r0, [r1]
ldr r0, [ip]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_020062C0: .word _022A3554
_020062C4: .word 0x00002FFF
arm_func_end GetPressedButtons
arm_func_start sub_020062C8
sub_020062C8: ; 0x020062C8
ldr r2, _020062F8 ; =_022A3554
mov r1, #0x44
mla r2, r0, r1, r2
mov r1, #0
strb r1, [r2, #0x24]
mov r0, #1
strb r0, [r2, #0x25]
str r0, [r2, #0x28]
ldrh r0, [r2, #0x2c]
strh r0, [r2, #0x2e]
strh r1, [r2, #0x30]
bx lr
.align 2, 0
_020062F8: .word _022A3554
arm_func_end sub_020062C8
arm_func_start sub_020062FC
sub_020062FC: ; 0x020062FC
stmdb sp!, {r3, lr}
ldr r3, _02006398 ; =_022A3554
mov r2, #0x44
mla r2, r0, r2, r3
ldrb r0, [r2, #0x24]
cmp r0, #0
beq _02006378
mov lr, #0
strb lr, [r2, #0x24]
ldrh r0, [r2, #0x2c]
strh r0, [r2, #0x30]
ldrh ip, [r2, #0x2e]
cmp ip, #0
beq _02006368
ldr r0, _0200639C ; =0x00002FFF
ldrh r3, [r2, #0x2c]
eor r0, ip, r0
tst r0, r3
movne r0, #0x1e
strne r0, [r2, #0x28]
bne _02006370
ldr r0, [r2, #0x28]
cmp r0, #0
movle r0, #6
strle r0, [r2, #0x28]
strgth lr, [r2, #0x30]
b _02006370
_02006368:
mov r0, #0x1e
str r0, [r2, #0x28]
_02006370:
ldrh r0, [r2, #0x2c]
strh r0, [r2, #0x2e]
_02006378:
ldrh r0, [r2, #0x30]
strh r0, [r1]
ldr r0, [r2]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
.align 2, 0
_02006398: .word _022A3554
_0200639C: .word 0x00002FFF
arm_func_end sub_020062FC
arm_func_start sub_020063A0
sub_020063A0: ; 0x020063A0
ldr r2, _020063D0 ; =_022A3554
mov r1, #0x44
mla r2, r0, r1, r2
mov r1, #0
strb r1, [r2, #0x34]
mov r0, #1
strb r0, [r2, #0x35]
str r0, [r2, #0x38]
ldrh r0, [r2, #0x3c]
strh r0, [r2, #0x3e]
strh r1, [r2, #0x40]
bx lr
.align 2, 0
_020063D0: .word _022A3554
arm_func_end sub_020063A0
arm_func_start sub_020063D4
sub_020063D4: ; 0x020063D4
ldr r2, _020063F0 ; =_022A3554
mov r1, #0x44
mla r1, r0, r1, r2
mov r0, #1
strb r0, [r1, #0x35]
str r0, [r1, #0x38]
bx lr
.align 2, 0
_020063F0: .word _022A3554
arm_func_end sub_020063D4
arm_func_start sub_020063F4
sub_020063F4: ; 0x020063F4
stmdb sp!, {r3, lr}
ldr r3, _02006490 ; =_022A3554
mov r2, #0x44
mla r2, r0, r2, r3
ldrb r0, [r2, #0x34]
cmp r0, #0
beq _02006470
mov lr, #0
strb lr, [r2, #0x34]
ldrh r0, [r2, #0x3c]
strh r0, [r2, #0x40]
ldrh ip, [r2, #0x3e]
cmp ip, #0
beq _02006460
ldr r0, _02006494 ; =0x00002FFF
ldrh r3, [r2, #0x3c]
eor r0, ip, r0
tst r0, r3
movne r0, #6
strne r0, [r2, #0x38]
bne _02006468
ldr r0, [r2, #0x38]
cmp r0, #0
movle r0, #6
strle r0, [r2, #0x38]
strgth lr, [r2, #0x40]
b _02006468
_02006460:
mov r0, #0x1e
str r0, [r2, #0x38]
_02006468:
ldrh r0, [r2, #0x3c]
strh r0, [r2, #0x3e]
_02006470:
ldrh r0, [r2, #0x40]
strh r0, [r1]
ldr r0, [r2]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
.align 2, 0
_02006490: .word _022A3554
_02006494: .word 0x00002FFF
arm_func_end sub_020063F4
arm_func_start sub_02006498
sub_02006498: ; 0x02006498
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r5, r1
mov r6, r0
bl GetPressedButtons
ldrh r2, [r5]
ldr r1, _02006500 ; =0x00000F0F
mov r4, r0
and r0, r2, r1
strh r0, [r5]
ldrh r0, [r5]
cmp r0, #0
beq _020064D8
mov r0, r6
bl sub_020063A0
b _020064F4
_020064D8:
add r1, sp, #0
mov r0, r6
bl sub_020063F4
ldrh r1, [r5]
ldrh r0, [sp]
orr r0, r1, r0
strh r0, [r5]
_020064F4:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02006500: .word 0x00000F0F
arm_func_end sub_02006498
arm_func_start sub_02006504
sub_02006504: ; 0x02006504
stmdb sp!, {r3, lr}
sub sp, sp, #8
bl sub_020811EC
add r0, sp, #0
bl sub_02081264
cmp r0, #0
beq _02006528
add r0, sp, #0
bl sub_020812F8
_02006528:
ldr r0, _0200655C ; =_020AF288
bl sub_02002C40
ldr r0, _0200655C ; =_020AF288
mov r1, #8
bl sub_02002CAC
bl sub_02006564
ldr r0, _02006560 ; =_022A35E8
bl sub_02006B54
ldr r0, _0200655C ; =_020AF288
bl sub_02002E98
bl sub_020065AC
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_0200655C: .word _020AF288
_02006560: .word _022A35E8
arm_func_end sub_02006504
arm_func_start sub_02006564
sub_02006564: ; 0x02006564
ldr r0, _020065A4 ; =TOUCHSCREEN_STATUS
mvn r1, #0
str r1, [r0]
str r1, [r0, #4]
mov r2, #0
strb r2, [r0, #8]
ldr r3, _020065A8 ; =_022A3614
mov r0, r2
_02006584:
str r1, [r3]
str r1, [r3, #4]
add r2, r2, #1
strb r0, [r3, #8]
cmp r2, #4
add r3, r3, #0xc
blt _02006584
bx lr
.align 2, 0
_020065A4: .word TOUCHSCREEN_STATUS
_020065A8: .word _022A3614
arm_func_end sub_02006564
arm_func_start sub_020065AC
sub_020065AC: ; 0x020065AC
stmdb sp!, {r4, lr}
sub sp, sp, #0x40
bl sub_02081420
add r0, sp, #0x20
bl sub_02081500
cmp r0, #0
bne _02006B34
ldr r0, _02006B3C ; =_020AF288
bl sub_02002CB4
ldr ip, _02006B40 ; =_022A362C
mov lr, #2
_020065D8:
add r3, ip, #0xc
ldmia ip, {r0, r1, r2}
stmia r3, {r0, r1, r2}
subs lr, lr, #1
sub ip, ip, #0xc
bpl _020065D8
ldrh r1, [sp, #0x26]
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
tst r1, #1
mvnne r2, #0
ldreqh r2, [sp, #0x20]
tst r1, #2
ldrh r1, [sp, #0x24]
str r2, [r0, #0x38]
mvnne r2, #0
ldreqh r2, [sp, #0x22]
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
cmp r1, #1
str r2, [r0, #0x3c]
moveq r1, #1
movne r1, #0
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
tst r1, #0xff
strb r1, [r0, #0x40]
ldreqb r1, [r0, #0x4c]
cmpeq r1, #0
beq _020066FC
ldr r0, _02006B48 ; =_022A3614
add r3, sp, #0x34
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
mov r4, #1
ldr lr, _02006B4C ; =_022A3620
mov r2, r4
mov r3, #0
mov r0, r4
b _020066B4
_0200666C:
ldrb r1, [lr, #8]
cmp r1, #0
beq _020066AC
ldr r1, [sp, #0x34]
mov ip, r3
cmp r1, #0
ldrlt r1, [lr]
movlt ip, r2
strlt r1, [sp, #0x34]
ldr r1, [sp, #0x38]
cmp r1, #0
ldrlt r1, [lr, #4]
movlt ip, r0
strlt r1, [sp, #0x38]
cmp ip, #0
beq _020066BC
_020066AC:
add r4, r4, #1
add lr, lr, #0xc
_020066B4:
cmp r4, #4
blt _0200666C
_020066BC:
ldr r0, [sp, #0x34]
cmp r0, #0
ldrge r0, [sp, #0x38]
cmpge r0, #0
addge r0, sp, #0x34
ldrge r3, _02006B50 ; =TOUCHSCREEN_STATUS
ldmgeia r0, {r0, r1, r2}
stmgeia r3, {r0, r1, r2}
bge _02006710
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
mvn r1, #0
str r1, [r0]
str r1, [r0, #4]
mov r1, #0
strb r1, [r0, #8]
b _02006710
_020066FC:
mvn r1, #0
str r1, [r0]
str r1, [r0, #4]
mov r1, #0
strb r1, [r0, #8]
_02006710:
ldr r0, _02006B50 ; =TOUCHSCREEN_STATUS
add r3, sp, #0x28
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
ldr r3, [sp, #0x28]
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
ldr r2, [sp, #0x2c]
str r3, [r0, #0x18]
str r2, [r0, #0x1c]
ldrh r1, [r0, #0xe]
tst r1, #1
beq _02006760
ldrb r1, [sp, #0x30]
cmp r1, #0
strne r3, [r0, #0x20]
strne r2, [r0, #0x24]
movne r1, #1
strneh r1, [r0, #0xe]
moveq r1, #4
b _0200677C
_02006760:
ldrb r1, [sp, #0x30]
cmp r1, #0
strne r3, [r0, #0x20]
strne r2, [r0, #0x24]
movne r1, #3
strneh r1, [r0, #0xe]
moveq r1, #0
_0200677C:
streqh r1, [r0, #0xe]
ldr r1, _02006B44 ; =TOUCHSCREEN_STATUS
ldrh ip, [r1, #0xc]
cmp ip, #6
addls pc, pc, ip, lsl #2
b _02006B2C
_02006794: ; jump table
b _020067B0 ; case 0
b _020067FC ; case 1
b _020068B0 ; case 2
b _02006988 ; case 3
b _02006A84 ; case 4
b _02006A84 ; case 5
b _02006AF8 ; case 6
_020067B0:
ldrh lr, [r1, #0xe]
mov r0, #0
tst lr, #1
streq r0, [r1, #0x10]
ldreq r0, [r1, #0x14]
addeq r0, r0, #1
streq r0, [r1, #0x14]
beq _02006B2C
mov ip, #1
str ip, [r1, #0x10]
str r0, [r1, #0x14]
ldr r3, [r1, #0x18]
ldr r2, [r1, #0x1c]
orr r0, lr, #0x40
str r3, [r1, #0x28]
str r2, [r1, #0x2c]
strh r0, [r1, #0xe]
strh ip, [r1, #0xc]
b _02006B2C
_020067FC:
ldrh r3, [r1, #0xe]
mov r0, #0
tst r3, #1
beq _02006890
ldr r2, [r1, #0x10]
add r2, r2, #1
str r2, [r1, #0x10]
str r0, [r1, #0x14]
orr r0, r3, #0x40
strh r0, [r1, #0xe]
cmp r2, #0xc
ble _02006B2C
ldr r3, [sp, #0x28]
ldr r0, [r1, #0x28]
ldr r2, [sp, #0x2c]
ldr r1, [r1, #0x2c]
sub r0, r3, r0
sub r1, r2, r1
str r0, [sp]
str r1, [sp, #4]
bl abs
cmp r0, #8
bge _02006874
ldr r0, [sp, #4]
bl abs
cmp r0, #8
ldrlt r0, _02006B44 ; =TOUCHSCREEN_STATUS
ldrlth r1, [r0, #0xe]
orrlt r1, r1, #0x400
strlth r1, [r0, #0xe]
_02006874:
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
mov r1, #4
ldrh r2, [r0, #0xe]
orr r2, r2, #0x2000
strh r2, [r0, #0xe]
strh r1, [r0, #0xc]
b _02006B2C
_02006890:
str r0, [r1, #0x10]
mov r0, #1
str r0, [r1, #0x14]
orr r0, r3, #8
strh r0, [r1, #0xe]
mov r0, #2
strh r0, [r1, #0xc]
b _02006B2C
_020068B0:
ldrh r3, [r1, #0xe]
tst r3, #1
beq _02006960
ldr lr, [sp, #0x28]
ldr r0, [r1, #0x28]
ldr ip, [sp, #0x2c]
ldr r3, [r1, #0x2c]
mov r2, #1
sub r0, lr, r0
sub r3, ip, r3
str r2, [r1, #0x10]
mov r2, #0
str r0, [sp, #8]
str r3, [sp, #0xc]
str r2, [r1, #0x14]
bl abs
cmp r0, #8
bge _02006934
ldr r0, [sp, #0xc]
bl abs
cmp r0, #8
bge _02006934
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
mov r1, #3
ldr r3, [r0, #0x18]
ldr r2, [r0, #0x1c]
str r3, [r0, #0x30]
str r2, [r0, #0x34]
ldrh r2, [r0, #0xe]
orr r2, r2, #0x80
strh r2, [r0, #0xe]
strh r1, [r0, #0xc]
b _02006B2C
_02006934:
ldr r3, [sp, #0x28]
ldr r2, [sp, #0x2c]
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
mov r1, #1
str r3, [r0, #0x28]
str r2, [r0, #0x2c]
ldrh r2, [r0, #0xe]
orr r2, r2, #0x40
strh r2, [r0, #0xe]
strh r1, [r0, #0xc]
b _02006B2C
_02006960:
mov r2, #0
str r2, [r1, #0x10]
ldr r0, [r1, #0x14]
add r0, r0, #1
str r0, [r1, #0x14]
cmp r0, #0xc
orrgt r0, r3, #0x10
strgth r0, [r1, #0xe]
strgth r2, [r1, #0xc]
b _02006B2C
_02006988:
ldrh r3, [r1, #0xe]
tst r3, #1
beq _02006A1C
ldr r2, [r1, #0x10]
mov r0, #0
add r2, r2, #1
str r2, [r1, #0x10]
str r0, [r1, #0x14]
orr r0, r3, #0x80
strh r0, [r1, #0xe]
cmp r2, #0xc
ble _02006B2C
ldr r3, [sp, #0x28]
ldr r0, [r1, #0x30]
ldr r2, [sp, #0x2c]
ldr r1, [r1, #0x34]
sub r0, r3, r0
sub r1, r2, r1
str r0, [sp, #0x10]
str r1, [sp, #0x14]
bl abs
cmp r0, #8
bge _02006A00
ldr r0, [sp, #0x14]
bl abs
cmp r0, #8
ldrlt r0, _02006B44 ; =TOUCHSCREEN_STATUS
ldrlth r1, [r0, #0xe]
orrlt r1, r1, #0x800
strlth r1, [r0, #0xe]
_02006A00:
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
mov r1, #5
ldrh r2, [r0, #0xe]
orr r2, r2, #0x4000
strh r2, [r0, #0xe]
strh r1, [r0, #0xc]
b _02006B2C
_02006A1C:
ldr lr, [r1, #0x20]
ldr r0, [r1, #0x28]
ldr ip, [r1, #0x24]
ldr r3, [r1, #0x2c]
mov r2, #0
sub r0, lr, r0
sub r3, ip, r3
str r2, [r1, #0x10]
mov r2, #1
str r0, [sp, #0x18]
str r3, [sp, #0x1c]
str r2, [r1, #0x14]
bl abs
cmp r0, #8
bge _02006A74
ldr r0, [sp, #0x1c]
bl abs
cmp r0, #8
ldrlt r0, _02006B44 ; =TOUCHSCREEN_STATUS
ldrlth r1, [r0, #0xe]
orrlt r1, r1, #0x20
strlth r1, [r0, #0xe]
_02006A74:
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
mov r1, #0
strh r1, [r0, #0xc]
b _02006B2C
_02006A84:
ldrh r3, [r1, #0xe]
tst r3, #1
beq _02006AE0
ldr r2, [r1, #0x10]
mov r0, #0
add r2, r2, #1
str r2, [r1, #0x10]
str r0, [r1, #0x14]
cmp ip, #4
orreq r0, r3, #0x140
orrne r0, r3, #0x280
strh r0, [r1, #0xe]
ldr r0, _02006B44 ; =TOUCHSCREEN_STATUS
ldr r1, [r0, #0x10]
cmp r1, #0x3c
ldrgth r1, [r0, #0xe]
orrgt r1, r1, #0x1000
strgth r1, [r0, #0xe]
bgt _02006B2C
ldreqh r1, [r0, #0xe]
orreq r1, r1, #0x9000
streqh r1, [r0, #0xe]
b _02006B2C
_02006AE0:
mov r2, #0
str r2, [r1, #0x10]
mov r0, #1
str r0, [r1, #0x14]
strh r2, [r1, #0xc]
b _02006B2C
_02006AF8:
ldrh r0, [r1, #0xe]
tst r0, #1
moveq r2, #0
streq r2, [r1, #0x10]
moveq r0, #1
streq r0, [r1, #0x14]
streqh r2, [r1, #0xc]
beq _02006B2C
ldr r2, [r1, #0x10]
mov r0, #0
add r2, r2, #1
str r2, [r1, #0x10]
str r0, [r1, #0x14]
_02006B2C:
ldr r0, _02006B3C ; =_020AF288
bl sub_02002E98
_02006B34:
add sp, sp, #0x40
ldmia sp!, {r4, pc}
.align 2, 0
_02006B3C: .word _020AF288
_02006B40: .word _022A362C
_02006B44: .word TOUCHSCREEN_STATUS
_02006B48: .word _022A3614
_02006B4C: .word _022A3620
_02006B50: .word TOUCHSCREEN_STATUS
arm_func_end sub_020065AC
arm_func_start sub_02006B54
sub_02006B54: ; 0x02006B54
mov r1, #6
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
str r1, [r0, #4]
str r1, [r0, #8]
bx lr
arm_func_end sub_02006B54
arm_func_start sub_02006B70
sub_02006B70: ; 0x02006B70
stmdb sp!, {r3, lr}
ldr r0, _02006B90 ; =_020AF288
bl sub_02002CB4
ldr r0, _02006B94 ; =_022A35E8
bl sub_02006B54
ldr r0, _02006B90 ; =_020AF288
bl sub_02002E98
ldmia sp!, {r3, pc}
.align 2, 0
_02006B90: .word _020AF288
_02006B94: .word _022A35E8
arm_func_end sub_02006B70
arm_func_start sub_02006B98
sub_02006B98: ; 0x02006B98
stmdb sp!, {r3, lr}
ldr r0, _02006BEC ; =_020AF288
bl sub_02002CB4
ldr r0, _02006BF0 ; =TOUCHSCREEN_STATUS
ldrb r1, [r0, #8]
cmp r1, #0
beq _02006BD8
mov r2, #4
ldr r1, _02006BF4 ; =0x00001101
strh r2, [r0, #0xc]
strh r1, [r0, #0xe]
mov r1, #0x3d
str r1, [r0, #0x10]
mov r1, #0
str r1, [r0, #0x14]
b _02006BE0
_02006BD8:
ldr r0, _02006BF8 ; =_022A35E8
bl sub_02006B54
_02006BE0:
ldr r0, _02006BEC ; =_020AF288
bl sub_02002E98
ldmia sp!, {r3, pc}
.align 2, 0
_02006BEC: .word _020AF288
_02006BF0: .word TOUCHSCREEN_STATUS
_02006BF4: .word 0x00001101
_02006BF8: .word _022A35E8
arm_func_end sub_02006B98
arm_func_start sub_02006BFC
sub_02006BFC: ; 0x02006BFC
mov r1, #0
strh r1, [r0]
sub r1, r1, #1
str r1, [r0, #4]
str r1, [r0, #8]
str r1, [r0, #0xc]
str r1, [r0, #0x10]
bx lr
arm_func_end sub_02006BFC
arm_func_start GetReleasedStylus
GetReleasedStylus: ; 0x02006C1C
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, _02006C84 ; =_020AF288
bl sub_02002CB4
ldr r1, _02006C88 ; =TOUCHSCREEN_STATUS
ldr r0, _02006C84 ; =_020AF288
ldrh r2, [r1, #0xe]
strh r2, [r4]
ldr r3, [r1, #0x18]
ldr r2, [r1, #0x1c]
str r3, [r4, #4]
str r2, [r4, #8]
ldr r3, [r1, #0x20]
ldr r2, [r1, #0x24]
str r3, [r4, #0xc]
str r2, [r4, #0x10]
ldr r3, [r1, #0x28]
ldr r2, [r1, #0x2c]
str r3, [r4, #0x14]
str r2, [r4, #0x18]
ldr r2, [r1, #0x30]
ldr r1, [r1, #0x34]
str r2, [r4, #0x1c]
str r1, [r4, #0x20]
bl sub_02002E98
ldmia sp!, {r4, pc}
.align 2, 0
_02006C84: .word _020AF288
_02006C88: .word TOUCHSCREEN_STATUS
arm_func_end GetReleasedStylus
arm_func_start sub_02006C8C
sub_02006C8C: ; 0x02006C8C
ldrh ip, [r0]
ldr r3, _02006D44 ; =0x00001CFA
and ip, r1, ip
tst ip, r3
beq _02006CE8
cmp r2, #0
moveq r0, #1
bxeq lr
ldr r3, [r0, #0x14]
ldr r1, [r2, #8]
cmp r3, r1
blt _02006CE8
ldr r1, [r2, #0xc]
cmp r3, r1
bgt _02006CE8
ldr r3, [r0, #0x18]
ldr r1, [r2]
cmp r3, r1
blt _02006CE8
ldr r1, [r2, #4]
cmp r3, r1
movle r0, #1
bxle lr
_02006CE8:
ldr r1, _02006D48 ; =0x00000301
tst ip, r1
beq _02006D3C
cmp r2, #0
moveq r0, #1
bxeq lr
ldr r3, [r0, #0xc]
ldr r1, [r2, #8]
cmp r3, r1
blt _02006D3C
ldr r1, [r2, #0xc]
cmp r3, r1
bgt _02006D3C
ldr r1, [r0, #0x10]
ldr r0, [r2]
cmp r1, r0
blt _02006D3C
ldr r0, [r2, #4]
cmp r1, r0
movle r0, #1
bxle lr
_02006D3C:
mov r0, #0
bx lr
.align 2, 0
_02006D44: .word 0x00001CFA
_02006D48: .word 0x00000301
arm_func_end sub_02006C8C
arm_func_start sub_02006D4C
sub_02006D4C: ; 0x02006D4C
stmdb sp!, {r3, lr}
ldr r0, _02006D9C ; =_022A3644
mov r3, #0
strb r3, [r0, #2]
strb r3, [r0, #1]
strb r3, [r0]
str r3, [r0, #0x10]
str r3, [r0, #0xc]
mov r1, #1
strb r1, [r0, #9]
ldr r1, _02006DA0 ; =_022A3644
mov r2, r3
_02006D7C:
add r0, r1, r3
add r3, r3, #1
strb r2, [r0, #3]
cmp r3, #6
blt _02006D7C
bl sub_02005E40
bl sub_02006504
ldmia sp!, {r3, pc}
.align 2, 0
_02006D9C: .word _022A3644
_02006DA0: .word _022A3644
arm_func_end sub_02006D4C
arm_func_start KeyWaitInit
KeyWaitInit: ; 0x02006DA4
stmdb sp!, {r3, lr}
mov r0, #0
bl sub_02006220
mov r0, #0
bl sub_020063A0
mov r0, #0
bl sub_020063D4
bl sub_02006B70
ldmia sp!, {r3, pc}
arm_func_end KeyWaitInit
arm_func_start sub_02006DC8
sub_02006DC8: ; 0x02006DC8
stmdb sp!, {r3, lr}
mov r0, #0
bl sub_02006220
mov r0, #0
bl sub_020063A0
mov r0, #0
bl sub_020063D4
bl sub_02006B98
ldmia sp!, {r3, pc}
arm_func_end sub_02006DC8
arm_func_start sub_02006DEC
sub_02006DEC: ; 0x02006DEC
stmdb sp!, {r3, lr}
bl sub_02006030
bl sub_020065AC
ldr r0, _02006E10 ; =_020AF2AC
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
blx r0
ldmia sp!, {r3, pc}
.align 2, 0
_02006E10: .word _020AF2AC
arm_func_end sub_02006DEC
arm_func_start sub_02006E14
sub_02006E14: ; 0x02006E14
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
add r1, sp, #0
mov r0, #0
bl GetHeldButtons
movs r3, #0
mov r4, r3
bne _02006E8C
mov r2, #4
ldr r1, _02006EBC ; =_022A3644
b _02006E6C
_02006E40:
add r0, r1, r2
ldrb r0, [r0, #3]
cmp r0, #0
beq _02006E68
ldr r0, _02006EC0 ; =_022A3644
mov r4, r2
ldr r0, [r0, #0x10]
cmp r0, r2
movne r3, #1
b _02006E74
_02006E68:
add r2, r2, #1
_02006E6C:
cmp r2, #5
ble _02006E40
_02006E74:
cmp r4, #0
bne _02006E8C
ldr r0, _02006EC0 ; =_022A3644
ldr r0, [r0, #0x10]
cmp r0, #0
movne r3, #1
_02006E8C:
cmp r3, #0
beq _02006EAC
mov r0, #0
bl sub_02006220
mov r0, #0
bl sub_020062C8
mov r0, #0
bl sub_020063A0
_02006EAC:
ldr r0, _02006EC0 ; =_022A3644
str r4, [r0, #0x10]
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_02006EBC: .word _022A3644
_02006EC0: .word _022A3644
arm_func_end sub_02006E14
arm_func_start sub_02006EC4
sub_02006EC4: ; 0x02006EC4
ldr r1, _02006ED0 ; =_020AF2AC
str r0, [r1]
bx lr
.align 2, 0
_02006ED0: .word _020AF2AC
arm_func_end sub_02006EC4
arm_func_start sub_02006ED4
sub_02006ED4: ; 0x02006ED4
mov r2, #0
str r2, [r0]
sub r1, r2, #1
stmib r0, {r1, r2}
strb r2, [r0, #0xc]
str r1, [r0, #0x10]
str r2, [r0, #0x14]
str r2, [r0, #0x18]
bx lr
arm_func_end sub_02006ED4
arm_func_start DebugPrintSystemClock
DebugPrintSystemClock: ; 0x02006EF8
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x3c
bl sub_0208266C
add r0, sp, #0x20
bl GetSystemClock
add r0, sp, #0x20
add r1, sp, #0
ldr r4, _02006F34 ; =_0209277C
bl SprintfSystemClock
ldr r0, _02006F38 ; =_0209278C
add r2, sp, #0
mov r1, r4
bl Debug_Print0
add sp, sp, #0x3c
ldmia sp!, {r3, r4, pc}
.align 2, 0
_02006F34: .word _0209277C
_02006F38: .word _0209278C
arm_func_end DebugPrintSystemClock
arm_func_start sub_02006F3C
sub_02006F3C: ; 0x02006F3C
str r1, [r0, #0x18]
str r2, [r0, #0x14]
ldr r1, [sp]
str r3, [r0, #0x10]
str r1, [r0, #0xc]
ldr r2, [sp, #4]
ldr r1, [sp, #8]
stmib r0, {r1, r2}
mov r1, #0
str r1, [r0]
bx lr
arm_func_end sub_02006F3C
arm_func_start GetSystemClock
GetSystemClock: ; 0x02006F68
stmdb sp!, {r4, lr}
sub sp, sp, #0x28
mov r4, r0
add r0, sp, #0x18
add r1, sp, #0xc
bl sub_020828A8
ldr r1, [sp, #0xc]
mov r0, r4
str r1, [sp]
ldr r1, [sp, #0x10]
str r1, [sp, #4]
ldr r1, [sp, #0x14]
str r1, [sp, #8]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x1c]
ldr r3, [sp, #0x20]
add r1, r1, #0x7d0
bl sub_02006F3C
add sp, sp, #0x28
ldmia sp!, {r4, pc}
arm_func_end GetSystemClock
arm_func_start SprintfSystemClock
SprintfSystemClock: ; 0x02006FB8
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mov r3, r0
ldr r2, [r3, #0x10]
mov r0, r1
str r2, [sp]
ldr r2, [r3, #0xc]
ldr r1, _02007000 ; =_02092798
str r2, [sp, #4]
ldr r2, [r3, #8]
str r2, [sp, #8]
ldr r2, [r3, #4]
str r2, [sp, #0xc]
ldr r2, [r3, #0x18]
ldr r3, [r3, #0x14]
bl sprintf
add sp, sp, #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_02007000: .word _02092798
arm_func_end SprintfSystemClock
arm_func_start sub_02007004
sub_02007004: ; 0x02007004
stmdb sp!, {r4, r5, r6, lr}
movs r6, r0
beq _02007060
mov r1, #0x3a
bl sub_02002368
movs r4, r0
beq _02007044
sub r5, r4, r6
ldr r0, _02007074 ; =_020AF2B8
mov r1, r6
mov r2, r5
bl strncpy
ldr r0, _02007074 ; =_020AF2B8
mov r1, #0
strb r1, [r0, r5]
add r6, r4, #1
_02007044:
ldrsb r0, [r6]
cmp r0, #0
beq _02007060
ldr r0, _02007078 ; =_020AF2C4
ldr r1, _0200707C ; =_020927B8
mov r2, r6
bl sprintf
_02007060:
ldr r0, _02007080 ; =_020927BC
ldr r1, _02007074 ; =_020AF2B8
ldr r2, _02007078 ; =_020AF2C4
bl Debug_Print0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02007074: .word _020AF2B8
_02007078: .word _020AF2C4
_0200707C: .word _020927B8
_02007080: .word _020927BC
arm_func_end sub_02007004
arm_func_start sub_02007084
sub_02007084: ; 0x02007084
ldr r0, _0200708C ; =_020AF2B8
bx lr
.align 2, 0
_0200708C: .word _020AF2B8
arm_func_end sub_02007084
arm_func_start sub_02007090
sub_02007090: ; 0x02007090
ldr r0, _02007098 ; =_020AF2C4
bx lr
.align 2, 0
_02007098: .word _020AF2C4
arm_func_end sub_02007090
arm_func_start sub_0200709C
sub_0200709C: ; 0x0200709C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r2
mov r8, r0
mov r7, r1
mov r0, r6
mov r1, #0x3a
bl sub_02002368
cmp r0, #0
addne r4, r0, #1
subne r5, r0, r6
bne _020070D8
mov r0, r6
bl strlen
mov r5, r0
add r4, r6, r5
_020070D8:
sub r0, r5, #1
ldrsb r0, [r6, r0]
cmp r0, #0x30
blt _020070FC
cmp r0, #0x39
suble r0, r0, #0x30
strle r0, [r7]
suble r5, r5, #1
ble _02007104
_020070FC:
mov r0, #0
str r0, [r7]
_02007104:
mov r0, r8
mov r1, r6
mov r2, r5
bl strncpy
mov r1, #0
mov r0, r4
strb r1, [r8, r5]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_0200709C
arm_func_start sub_02007124
sub_02007124: ; 0x02007124
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x100
mov r4, r1
mov sl, r0
mov r0, r4
mov r1, #0x3a
bl sub_02002368
cmp r0, #0
add r0, sp, #0x80
bne _02007160
ldr r1, _0200724C ; =_020927E4
ldr r2, _02007250 ; =_020AF2B8
mov r3, r4
bl sprintf
b _02007168
_02007160:
mov r1, r4
bl strcpy
_02007168:
add r0, sp, #0x80
mov r1, #0x3a
bl sub_02002368
add r0, sp, #0x80
bl sub_02007544
add r2, sp, #0x80
add r0, sl, #0xc
add r1, sl, #4
bl sub_0200709C
mov r8, r0
add r0, sl, #0xc
bl sub_0200746C
ldr r0, [r0]
mov r1, r8
str r0, [sl]
add r0, sl, #0x6c
bl strcpy
mov sb, #0
strb sb, [sl, #0x5c]
add r4, sl, #0x1c
mov r6, sb
add r7, sp, #0
mov r5, #0xa
_020071C4:
mov r1, r7
_020071C8:
ldrsb r0, [r8]
cmp r0, #0
cmpne r0, #0x2f
cmpne r0, #0x2e
addne r8, r8, #1
strneb r0, [r1], #1
bne _020071C8
strb r6, [r1]
ldrsb r0, [r8]
cmp r0, #0
bne _02007204
add r1, sp, #0
add r0, sl, #0x5c
bl strcat
b _02007240
_02007204:
cmp r0, #0x2e
bne _02007220
mov r1, r7
mov r2, r5
add r0, sl, #0x5c
bl sub_020023A8
b _02007238
_02007220:
cmp r0, #0x2f
bne _02007238
add r0, r4, sb, lsl #4
mov r1, r7
add sb, sb, #1
bl strcpy
_02007238:
add r8, r8, #1
b _020071C4
_02007240:
str sb, [sl, #8]
add sp, sp, #0x100
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0200724C: .word _020927E4
_02007250: .word _020AF2B8
arm_func_end sub_02007124
arm_func_start sub_02007254
sub_02007254: ; 0x02007254
add r3, r0, #0x5c
mov ip, #0
b _02007278
_02007260:
ldrsb r2, [r3]
cmp r2, #0x20
beq _02007280
add r3, r3, #1
strb r2, [r1], #1
add ip, ip, #1
_02007278:
cmp ip, #0xa
blt _02007260
_02007280:
ldrsb r2, [r0, #0x66]
add r3, r0, #0x66
cmp r2, #0
beq _020072C0
mov r0, #0x2e
strb r0, [r1], #1
mov r2, #0
b _020072B8
_020072A0:
ldrsb r0, [r3]
cmp r0, #0x20
beq _020072C0
add r3, r3, #1
strb r0, [r1], #1
add r2, r2, #1
_020072B8:
cmp r2, #5
blt _020072A0
_020072C0:
mov r0, #0
strb r0, [r1]
bx lr
arm_func_end sub_02007254
arm_func_start sub_020072CC
sub_020072CC: ; 0x020072CC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldr r0, [r8, #8]
mov r7, r1
cmp r0, #0
ble _0200732C
mov r0, r7
add r1, r8, #0x1c
bl strcpy
mov r6, #1
add r4, r8, #0x1c
ldr r5, _02007338 ; =_020927EC
b _0200731C
_02007300:
mov r0, r7
mov r1, r5
bl strcat
mov r0, r7
add r1, r4, r6, lsl #4
bl strcat
add r6, r6, #1
_0200731C:
ldr r0, [r8, #8]
cmp r6, r0
blt _02007300
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_0200732C:
mov r0, #0
strb r0, [r7]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02007338: .word _020927EC
arm_func_end sub_020072CC
arm_func_start sub_0200733C
sub_0200733C: ; 0x0200733C
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
bl sub_020072CC
mov r0, r4
bl strlen
mov r1, r0
cmp r0, #0
movgt r1, #0x2f
strgtb r1, [r4, r0]
addgt r1, r0, #1
movgt r0, #0
strgtb r0, [r4, r1]
mov r0, r5
add r1, r4, r1
bl sub_02007254
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0200733C
arm_func_start sub_02007380
sub_02007380: ; 0x02007380
bx lr
arm_func_end sub_02007380
arm_func_start sub_02007384
sub_02007384: ; 0x02007384
stmdb sp!, {r3, lr}
ldr r1, _020073A8 ; =_020AF344
mov r2, #0
ldr r0, _020073AC ; =_022A3670
str r2, [r1]
bl sub_0200844C
ldr r0, _020073B0 ; =_022A3658
bl sub_0200846C
ldmia sp!, {r3, pc}
.align 2, 0
_020073A8: .word _020AF344
_020073AC: .word _022A3670
_020073B0: .word _022A3658
arm_func_end sub_02007384
arm_func_start sub_020073B4
sub_020073B4: ; 0x020073B4
mov r1, #0
str r1, [r0]
strb r1, [r0, #4]
str r1, [r0, #0x14]
sub r1, r1, #1
str r1, [r0, #0x18]
str r1, [r0, #0x1c]
str r1, [r0, #0x20]
bx lr
arm_func_end sub_020073B4
arm_func_start sub_020073D8
sub_020073D8: ; 0x020073D8
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
ldr r6, _02007464 ; =_020AF354
bl sub_02007084
mov r1, r0
add r0, sp, #0
bl sub_020074DC
mov r7, r0
mov r5, #0xa
ldr r4, _02007468 ; =_02092844
mov r8, #0
b _02007450
_02007408:
ldr r2, [r0, #4]
mov r0, r5
mov r1, r4
bl Debug_Print
ldr r2, [r6]
ldr r0, [r7]
ldr r1, [r2]
cmp r1, r0
bne _02007440
bl sub_02007090
ldr r1, [r6]
ldr r1, [r1, #0xc]
blx r1
b _0200744C
_02007440:
ldr r1, [r2, #0xc]
mov r0, r8
blx r1
_0200744C:
add r6, r6, #4
_02007450:
ldr r0, [r6]
cmp r0, #0
bne _02007408
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02007464: .word _020AF354
_02007468: .word _02092844
arm_func_end sub_020073D8
arm_func_start sub_0200746C
sub_0200746C: ; 0x0200746C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r4, _020074B0 ; =_020AF354
b _02007498
_0200747C:
ldr r1, [r5, #8]
mov r0, r6
bl strcmp
cmp r0, #0
moveq r0, r5
ldmeqia sp!, {r4, r5, r6, pc}
add r4, r4, #4
_02007498:
ldr r5, [r4]
cmp r5, #0
bne _0200747C
ldr r0, _020074B4 ; =_020AF354
ldr r0, [r0]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020074B0: .word _020AF354
_020074B4: .word _020AF354
arm_func_end sub_0200746C
arm_func_start sub_020074B8
sub_020074B8: ; 0x020074B8
cmp r0, #0
ldreq r0, _020074D4 ; =_020AF354
ldreq r0, [r0]
ldrne r1, [r0]
ldrne r0, _020074D8 ; =_020AF354
ldrne r0, [r0, r1, lsl #2]
bx lr
.align 2, 0
_020074D4: .word _020AF354
_020074D8: .word _020AF354
arm_func_end sub_020074B8
arm_func_start sub_020074DC
sub_020074DC: ; 0x020074DC
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x80
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_0200709C
ldr r5, _0200753C ; =_020AF354
add r4, sp, #0
b _02007520
_02007504:
ldr r1, [r6, #8]
mov r0, r4
bl strcmp
cmp r0, #0
moveq r0, r6
beq _02007534
add r5, r5, #4
_02007520:
ldr r6, [r5]
cmp r6, #0
bne _02007504
ldr r0, _02007540 ; =_020AF354
ldr r0, [r0]
_02007534:
add sp, sp, #0x80
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0200753C: .word _020AF354
_02007540: .word _020AF354
arm_func_end sub_020074DC
arm_func_start sub_02007544
sub_02007544: ; 0x02007544
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
add r0, sp, #0
mov r1, r4
bl sub_020074DC
ldr r1, [r0, #0x10]
cmp r1, #0
beq _02007570
mov r0, r4
blx r1
_02007570:
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
arm_func_end sub_02007544
arm_func_start sub_02007578
sub_02007578: ; 0x02007578
stmdb sp!, {r4, lr}
sub sp, sp, #0x90
mov r4, r0
add r0, sp, #4
bl sub_02006ED4
add r0, sp, #0
mov r1, r4
bl sub_020074DC
ldr r2, [r0, #0x14]
add r0, sp, #4
mov r1, r4
blx r2
add sp, sp, #0x90
ldmia sp!, {r4, pc}
arm_func_end sub_02007578
arm_func_start sub_020075B0
sub_020075B0: ; 0x020075B0
stmdb sp!, {r4, lr}
sub sp, sp, #0x90
mov r4, r0
add r0, sp, #4
bl sub_02006ED4
add r0, sp, #0
mov r1, r4
bl sub_020074DC
ldr r2, [r0, #0x3c]
add r0, sp, #4
mov r1, r4
blx r2
add sp, sp, #0x90
ldmia sp!, {r4, pc}
arm_func_end sub_020075B0
arm_func_start sub_020075E8
sub_020075E8: ; 0x020075E8
ldr ip, _020075F0 ; =sub_02006ED4
bx ip
.align 2, 0
_020075F0: .word sub_02006ED4
arm_func_end sub_020075E8
arm_func_start sub_020075F4
sub_020075F4: ; 0x020075F4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl FileRom_InitDataTransfer
mov r0, #2
str r0, [r5]
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldmia r5, {r0, r1, r2}
stmia r4, {r0, r1, r2}
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020075F4
arm_func_start sub_02007624
sub_02007624: ; 0x02007624
stmdb sp!, {r3, lr}
mov lr, r0
mov r0, #0
mov ip, r1
str r0, [lr]
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
bl FileRom_StopDataTransfer
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end sub_02007624
arm_func_start sub_02007654
sub_02007654: ; 0x02007654
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0xec
mov r6, r2
mov r5, r0
mov r4, r1
bl sub_02006ED4
add r0, sp, #0
mov r1, r6
bl sub_02007124
add r0, sp, #0xc
bl sub_0200746C
mov r6, r0
ldr r1, [r6]
mov r0, #0
str r1, [r5]
ldr r1, [sp, #4]
mov lr, r5
str r1, [r5, #4]
str r0, [r5, #8]
mov ip, r4
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
ldr r2, [r6, #0x18]
mov r0, r5
add r1, sp, #0
blx r2
mov ip, r0
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldmia r5, {r0, r1, r2}
stmia r4, {r0, r1, r2}
mov r0, ip
add sp, sp, #0xec
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end sub_02007654
arm_func_start sub_020076E4
sub_020076E4: ; 0x020076E4
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0xec
mov r6, r2
mov r5, r0
mov r4, r1
bl sub_02006ED4
add r0, sp, #0
mov r1, r6
bl sub_02007124
add r0, sp, #0xc
bl sub_0200746C
mov r6, r0
ldr r1, [r6]
mov r0, #0
str r1, [r5]
ldr r1, [sp, #4]
mov lr, r5
str r1, [r5, #4]
str r0, [r5, #8]
mov ip, r4
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
ldr r2, [r6, #0x1c]
mov r0, r5
add r1, sp, #0
blx r2
mov ip, r0
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldmia r5, {r0, r1, r2}
stmia r4, {r0, r1, r2}
mov r0, ip
add sp, sp, #0xec
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end sub_020076E4
arm_func_start sub_02007774
sub_02007774: ; 0x02007774
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl sub_020074B8
ldr r1, [r0, #0x20]
mov r0, r5
blx r1
cmp r0, #0
mov r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
str r0, [r5]
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldmia r5, {r0, r1, r2}
stmia r4, {r0, r1, r2}
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02007774
arm_func_start sub_020077B8
sub_020077B8: ; 0x020077B8
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
mov r4, r1
bl sub_020074B8
mov r1, #0
str r1, [r5, #0x14]
mov r1, #1
mov lr, r5
mov ip, r4
str r1, [r5, #0x18]
mov r6, r0
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
ldr r1, [r6, #0x24]
mov r0, r5
blx r1
mov ip, r0
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldmia r5, {r0, r1, r2}
stmia r4, {r0, r1, r2}
mov r0, ip
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_020077B8
arm_func_start sub_0200781C
sub_0200781C: ; 0x0200781C
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
mov r4, r1
bl sub_020074B8
mov r1, #0
mov lr, r5
mov ip, r4
str r1, [r5, #0x18]
mov r6, r0
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
ldr r1, [r6, #0x28]
mov r0, r5
blx r1
mov ip, r0
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldmia r5, {r0, r1, r2}
stmia r4, {r0, r1, r2}
mov r0, ip
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0200781C
arm_func_start sub_02007878
sub_02007878: ; 0x02007878
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r7, r2
mov sb, r0
mov r8, r1
mov r6, r3
bl sub_020074B8
add r1, r7, #3
bic r1, r1, #3
mov r4, r0
cmp r7, r1
mvnne r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r5, #0
mov fp, #0x40000
b _0200792C
_020078B4:
ldrb r0, [sb, #0xc]
cmp r0, #0
mvnne r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp r6, #0x40000
movlt sl, r6
movge sl, fp
bl DC_FlushAll
ldr r3, [r4, #0x2c]
mov r0, sb
mov r1, r7
mov r2, sl
blx r3
movs sl, r0
mvnmi r0, #0
ldmmiia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r0, [sb, #0x14]
mov lr, sb
add r0, r0, sl
str r0, [sb, #0x14]
mov ip, r8
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
cmp sl, #0x40000
add r5, r5, sl
sub r6, r6, sl
add r7, r7, sl
blt _02007934
_0200792C:
cmp r6, #0
bgt _020078B4
_02007934:
ldrb r0, [sb, #0xc]
cmp r0, #0
mvnne r0, #0
moveq r0, r5
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_02007878
arm_func_start sub_02007948
sub_02007948: ; 0x02007948
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r7, r0
mov r6, r1
mov r0, #0
mov lr, r7
mov ip, r6
str r0, [r7, #0x14]
mov r5, r2
mov r4, r3
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
ldr sb, [sp, #0x20]
ldr r8, [sp, #0x24]
b _020079C8
_02007988:
cmp r4, r8
movlt r3, r4
movge r3, r8
mov r0, r7
mov r1, r6
mov r2, r5
bl sub_02007878
cmp r0, #0
mvnlt r0, #0
ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp sb, #0
add r5, r5, r0
sub r4, r4, r0
beq _020079C8
mov r0, sb
bl sub_02002B50
_020079C8:
cmp r4, #0
bgt _02007988
ldr r0, [r7, #0x14]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_02007948
arm_func_start sub_020079D8
sub_020079D8: ; 0x020079D8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
ldr r3, _02007A6C ; =_020927FC
mov r6, r2
ldr r4, [r3, #0x2c]
ldr ip, [r3, #0x28]
ldr r2, [sp, #0x20]
add r3, sp, #0
mov r8, r0
mov r7, r1
str ip, [sp]
str r4, [sp, #4]
bl sub_020076E4
cmp r0, #0
beq _02007A60
ldr r5, [r8, #0x10]
mov r0, r8
mov r1, r7
bl sub_020077B8
mov r0, r8
mov r1, r7
mov r2, r6
mov r3, r5
bl sub_02007878
mov r4, r0
mov r0, r8
mov r1, r7
bl sub_0200781C
mov r0, r8
mov r1, r7
bl sub_02007774
cmp r5, r4
moveq r0, r4
beq _02007A64
_02007A60:
mvn r0, #0
_02007A64:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02007A6C: .word _020927FC
arm_func_end sub_020079D8
arm_func_start sub_02007A70
sub_02007A70: ; 0x02007A70
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
ldr r6, _02007B10 ; =_020927FC
mov r5, r2
ldr ip, [r6, #0x24]
ldr lr, [r6, #0x20]
mov r4, r3
ldr r2, [sp, #0x20]
add r3, sp, #0
mov r7, r0
mov r6, r1
str lr, [sp]
str ip, [sp, #4]
bl sub_020076E4
cmp r0, #0
beq _02007B04
ldr r8, [r7, #0x10]
mov r0, r7
cmp r4, r8
movle r8, r4
mov r1, r6
bl sub_020077B8
mov r0, r7
mov r1, r6
mov r2, r5
mov r3, r8
bl sub_02007878
mov r4, r0
mov r0, r7
mov r1, r6
bl sub_0200781C
mov r0, r7
mov r1, r6
bl sub_02007774
cmp r8, r4
moveq r0, r4
beq _02007B08
_02007B04:
mvn r0, #0
_02007B08:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02007B10: .word _020927FC
arm_func_end sub_02007A70
arm_func_start sub_02007B14
sub_02007B14: ; 0x02007B14
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x10
ldr r3, _02007BC8 ; =_020927FC
mov r4, r2
ldr ip, [r3, #0x1c]
ldr lr, [r3, #0x18]
ldr r2, [sp, #0x28]
add r3, sp, #8
mov r6, r0
mov r5, r1
str lr, [sp, #8]
str ip, [sp, #0xc]
bl sub_020076E4
cmp r0, #0
beq _02007BBC
ldr r0, [sp, #0x2c]
ldr r7, [r6, #0x10]
cmp r0, #0
beq _02007B64
bl sub_02002B50
_02007B64:
mov r0, r6
mov r1, r5
bl sub_020077B8
ldr r0, [sp, #0x2c]
ldr ip, [sp, #0x30]
str r0, [sp]
mov r0, r6
mov r1, r5
mov r2, r4
mov r3, r7
str ip, [sp, #4]
bl sub_02007948
mov r4, r0
mov r0, r6
mov r1, r5
bl sub_0200781C
mov r0, r6
mov r1, r5
bl sub_02007774
cmp r7, r4
moveq r0, r4
beq _02007BC0
_02007BBC:
mvn r0, #0
_02007BC0:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02007BC8: .word _020927FC
arm_func_end sub_02007B14
arm_func_start sub_02007BCC
sub_02007BCC: ; 0x02007BCC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #8
ldr r4, _02007C9C ; =_020927FC
mov r5, r2
ldr r8, [r4, #0x34]
ldr r4, [r4, #0x30]
add r6, sp, #0
mov r2, r3
mov r3, r6
str r4, [sp]
mov r7, r0
mov r6, r1
str r8, [sp, #4]
mov r4, #0
bl sub_020076E4
cmp r0, #0
beq _02007C90
ldr sl, [r7, #0x10]
ldr r0, [sp, #0x28]
ldr r2, [sp, #0x2c]
mov r1, sl
str sl, [r5, #4]
bl MemLocateSet
mov sb, r0
mov r0, r7
mov r1, r6
str sb, [r5]
bl sub_020077B8
ldr r2, [r5]
mov r0, r7
mov r1, r6
mov r3, sl
bl sub_02007878
mov r8, r0
mov r0, r7
mov r1, r6
bl sub_0200781C
mov r0, r7
mov r1, r6
bl sub_02007774
cmp sl, r8
moveq r4, #1
beq _02007C90
mov r0, sb
bl MemFree
mov r0, r4
str r0, [r5]
sub r0, r0, #1
str r0, [r5, #4]
_02007C90:
mov r0, r4
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_02007C9C: .word _020927FC
arm_func_end sub_02007BCC
arm_func_start sub_02007CA0
sub_02007CA0: ; 0x02007CA0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x10
ldr r4, _02007D90 ; =_020927FC
mov r7, r2
ldr r6, [r4, #4]
ldr r4, [r4]
add r5, sp, #8
mov r2, r3
str r4, [sp, #8]
mov r3, r5
mov sb, r0
mov r8, r1
str r6, [sp, #0xc]
mov r4, #0
bl sub_020076E4
cmp r0, #0
beq _02007D84
ldr r5, [sb, #0x10]
ldr r0, [sp, #0x30]
ldr r2, [sp, #0x34]
mov r1, r5
str r5, [r7, #4]
bl MemLocateSet
mov r6, r0
ldr r0, [sp, #0x38]
str r6, [r7]
cmp r0, #0
beq _02007D14
bl sub_02002B50
_02007D14:
mov r0, sb
mov r1, r8
bl sub_020077B8
ldr r1, [sp, #0x38]
ldr r0, [sp, #0x3c]
str r1, [sp]
str r0, [sp, #4]
ldr r2, [r7]
mov r0, sb
mov r1, r8
mov r3, r5
bl sub_02007948
mov sl, r0
mov r0, sb
mov r1, r8
bl sub_0200781C
mov r0, sb
mov r1, r8
bl sub_02007774
cmp r5, sl
moveq r4, #1
beq _02007D84
mov r0, r6
bl MemFree
mov r0, #0
str r0, [r7]
sub r0, r0, #1
str r0, [r7, #4]
_02007D84:
mov r0, r4
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_02007D90: .word _020927FC
arm_func_end sub_02007CA0
arm_func_start sub_02007D94
sub_02007D94: ; 0x02007D94
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xec
mov r7, r0
mov r6, r1
add r0, sp, #0
mov r1, r2
mov r5, r3
bl sub_02007124
add r0, sp, #0xc
bl sub_0200746C
mov r4, r0
ldr r1, [r4]
mov r0, #0
str r1, [r7]
ldr r1, [sp, #4]
mov lr, r7
str r1, [r7, #4]
str r0, [r7, #8]
mov ip, r6
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
bl DC_FlushAll
ldr r4, [r4, #0x34]
ldr r3, [sp, #0x100]
mov r2, r5
mov r0, r7
add r1, sp, #0
blx r4
mov r4, r0
ldmia r7!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
ldmia r7, {r0, r1, r2}
stmia r6, {r0, r1, r2}
mov r0, r4
add sp, sp, #0xec
ldmia sp!, {r4, r5, r6, r7, pc}
arm_func_end sub_02007D94
arm_func_start sub_02007E2C
sub_02007E2C: ; 0x02007E2C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0xec
mov r5, r0
mov r4, r1
add r0, sp, #0
mov r1, r2
bl sub_02007124
add r0, sp, #0xc
bl sub_0200746C
mov r6, r0
ldr r1, [r6]
mov r0, #0
str r1, [r5]
ldr r1, [sp, #4]
mov lr, r5
str r1, [r5, #4]
str r0, [r5, #8]
mov ip, r4
ldmia lr!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
ldmia lr, {r0, r1, r2}
stmia ip, {r0, r1, r2}
ldr r2, [r6, #0x38]
mov r0, r5
add r1, sp, #0
blx r2
mov ip, r0
ldmia r5!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
ldmia r5, {r0, r1, r2}
stmia r4, {r0, r1, r2}
mov r0, ip
add sp, sp, #0xec
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end sub_02007E2C
arm_func_start sub_02007EB4
sub_02007EB4: ; 0x02007EB4
bx lr
arm_func_end sub_02007EB4
arm_func_start sub_02007EB8
sub_02007EB8: ; 0x02007EB8
mov r0, #1
bx lr
arm_func_end sub_02007EB8
arm_func_start sub_02007EC0
sub_02007EC0: ; 0x02007EC0
stmdb sp!, {r3, lr}
ldr r0, _02007ED8 ; =_020AF368
bl sub_02002C40
ldr r0, _02007ED8 ; =_020AF368
bl sub_02002E98
ldmia sp!, {r3, pc}
.align 2, 0
_02007ED8: .word _020AF368
arm_func_end sub_02007EC0
arm_func_start sub_02007EDC
sub_02007EDC: ; 0x02007EDC
stmdb sp!, {r4, lr}
ldr r0, _02007F08 ; =_020AF368
bl sub_02002CB4
bl sub_020845E8
and r4, r0, #0xff
ldr r0, _02007F08 ; =_020AF368
bl sub_02002E98
cmp r4, #0
movne r0, #2
moveq r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_02007F08: .word _020AF368
arm_func_end sub_02007EDC
arm_func_start sub_02007F0C
sub_02007F0C: ; 0x02007F0C
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x80
mov r5, r0
ldr r0, _02007FC8 ; =_020AF368
mov r4, r1
bl sub_02002CB4
add r0, r5, #0x40
bl FileInit
add r1, sp, #0
mov r0, r4
bl sub_0200733C
add r1, sp, #0
add r0, r5, #0x40
bl sub_0207F6C4
cmp r0, #0
bne _02007F64
mov r0, #1
bl CardPullOutWithStatus
ldr r0, _02007FC8 ; =_020AF368
bl sub_02002E98
mov r0, #0
b _02007FC0
_02007F64:
add r0, r5, #0x1c
bl sub_020073B4
mov r0, #0
str r0, [r5, #0x1c]
ldr r2, [r5, #0x68]
ldr r1, [r5, #0x64]
add r0, r5, #0x20
sub r1, r2, r1
str r1, [r5, #0x30]
ldr r3, [r5, #0x6c]
ldr r2, [r5, #0x64]
add r1, r4, #0x5c
sub r2, r3, r2
str r2, [r5, #0x34]
bl strcpy
mov r2, #0
str r2, [r5, #0x88]
ldr r1, [r5, #0x30]
ldr r0, _02007FC8 ; =_020AF368
str r1, [r5, #0x10]
str r2, [r5, #0x14]
bl sub_02002E98
mov r0, #1
_02007FC0:
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02007FC8: .word _020AF368
arm_func_end sub_02007F0C
arm_func_start sub_02007FCC
sub_02007FCC: ; 0x02007FCC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x80
mov r5, r0
ldr r0, _0200807C ; =_020AF368
mov r4, r1
bl sub_02002CB4
add r0, r5, #0x40
bl FileInit
add r1, sp, #0
mov r0, r4
bl sub_0200733C
mov r6, #1
add r7, sp, #0
_02008000:
mov r1, r7
add r0, r5, #0x40
bl sub_0207F6C4
cmp r0, #0
bne _02008020
mov r0, r6
bl CardPullOutWithStatus
b _02008000
_02008020:
add r0, r5, #0x1c
bl sub_020073B4
mov r0, #0
str r0, [r5, #0x1c]
ldr r2, [r5, #0x68]
ldr r1, [r5, #0x64]
add r0, r5, #0x20
sub r1, r2, r1
str r1, [r5, #0x30]
ldr r3, [r5, #0x6c]
ldr r2, [r5, #0x64]
add r1, r4, #0x5c
sub r2, r3, r2
str r2, [r5, #0x34]
bl strcpy
mov r2, #0
str r2, [r5, #0x88]
ldr r1, [r5, #0x30]
mov r0, #1
str r1, [r5, #0x10]
str r2, [r5, #0x14]
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0200807C: .word _020AF368
arm_func_end sub_02007FCC
arm_func_start sub_02008080
sub_02008080: ; 0x02008080
stmdb sp!, {r3, lr}
add r0, r0, #0x40
bl sub_0207F70C
cmp r0, #0
bne _0200809C
mov r0, #1
bl CardPullOutWithStatus
_0200809C:
ldr r0, _020080AC ; =_020AF368
bl sub_02002E98
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_020080AC: .word _020AF368
arm_func_end sub_02008080
arm_func_start sub_020080B0
sub_020080B0: ; 0x020080B0
mov r0, #1
bx lr
arm_func_end sub_020080B0
arm_func_start sub_020080B8
sub_020080B8: ; 0x020080B8
mov r0, #1
bx lr
arm_func_end sub_020080B8
arm_func_start sub_020080C0
sub_020080C0: ; 0x020080C0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r4, r0
ldr r3, [r4, #0x30]
ldr r0, [r4, #0x88]
mov r7, r2
sub r0, r3, r0, lsl #11
cmp r7, r0
mov r8, r1
movgt r7, r0
mov r6, #0
mov r5, #1
b _02008114
_020080F0:
add r0, r4, #0x40
add r1, r8, r6
sub r2, r7, r6
bl sub_0207F818
cmp r0, #0
addge r6, r6, r0
bge _02008114
mov r0, r5
bl CardPullOutWithStatus
_02008114:
cmp r7, r6
bgt _020080F0
mov r0, r6, asr #0xa
ldr r1, [r4, #0x88]
add r0, r6, r0, lsr #21
add r1, r1, r0, asr #11
mov r0, r6
str r1, [r4, #0x88]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_020080C0
arm_func_start sub_02008138
sub_02008138: ; 0x02008138
stmdb sp!, {r3, lr}
str r1, [r0, #0x88]
add r0, r0, #0x40
mov r1, r1, lsl #0xb
mov r2, #0
bl sub_0207F828
cmp r0, #0
bne _02008160
mov r0, #1
bl CardPullOutWithStatus
_02008160:
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end sub_02008138
; https://decomp.me/scratch/w0Zq6
arm_func_start FileRom_InitDataTransfer
FileRom_InitDataTransfer: ; 0x02008168
stmdb sp!, {r3, lr}
ldr r0, _0200818C ; =_020AF368
bl sub_02002CB4
bl sub_02002580
mov r1, #0x13
bl sub_020027F8
ldr r1, _02008190 ; =_020AF360
str r0, [r1, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_0200818C: .word _020AF368
_02008190: .word _020AF360
arm_func_end FileRom_InitDataTransfer
arm_func_start FileRom_StopDataTransfer
FileRom_StopDataTransfer: ; 0x02008194
stmdb sp!, {r4, lr}
ldr r1, _020081C0 ; =_020AF360
ldr r0, _020081C4 ; =_020AF368
ldr r4, [r1, #4]
mov r2, #0
str r2, [r1, #4]
bl sub_02002E98
bl sub_02002580
mov r1, r4
bl sub_020027F8
ldmia sp!, {r4, pc}
.align 2, 0
_020081C0: .word _020AF360
_020081C4: .word _020AF368
arm_func_end FileRom_StopDataTransfer
arm_func_start sub_020081C8
sub_020081C8: ; 0x020081C8
ldr ip, _020081D4 ; =sub_02002CB4
ldr r0, _020081D8 ; =_020AF368
bx ip
.align 2, 0
_020081D4: .word sub_02002CB4
_020081D8: .word _020AF368
arm_func_end sub_020081C8
arm_func_start sub_020081DC
sub_020081DC: ; 0x020081DC
ldr ip, _020081E8 ; =sub_02002E98
ldr r0, _020081EC ; =_020AF368
bx ip
.align 2, 0
_020081E8: .word sub_02002E98
_020081EC: .word _020AF368
arm_func_end sub_020081DC
arm_func_start sub_020081F0
sub_020081F0: ; 0x020081F0
ldr ip, _020081FC ; =sub_02002E10
ldr r0, _02008200 ; =_020AF368
bx ip
.align 2, 0
_020081FC: .word sub_02002E10
_02008200: .word _020AF368
arm_func_end sub_020081F0
arm_func_start FileRom_Veneer_FileInit
FileRom_Veneer_FileInit: ; 0x02008204
ldr ip, _0200820C ; =FileInit
bx ip
.align 2, 0
_0200820C: .word FileInit
arm_func_end FileRom_Veneer_FileInit