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

2475 lines
43 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.section .rodata
.global UNK_020EE6D8
UNK_020EE6D8: ; 0x020EE6D8
.word 2
.global UNK_020EE6DC
UNK_020EE6DC: ; 0x020EE6DC
.word 36
.global UNK_020EE6E0
UNK_020EE6E0: ; 0x020EE6E0
.word 0x00, 0x20, FUN_0202B034, FUN_0202B03C
.word 0x01, 0x23, FUN_0202AC20, FUN_0202AC28
.global UNK_020EE700
UNK_020EE700: ; 0x020EE700
.word 0x00, 0x00, FUN_0202376C, FUN_02023770
.word 0x01, 0x00, FUN_020238C4, FUN_020238C8
.word 0x02, 0x00, FUN_0206B8A4, FUN_0206B8C0
.word 0x03, 0x00, FUN_0206EB80, FUN_0206EBA0
.word 0x04, 0x00, FUN_02046294, FUN_0204629C
.word 0x05, 0x00, FUN_0204BE14, FUN_0204BE18
.word 0x06, 0x00, FUN_02034D7C, FUN_02034D98
.word 0x07, 0x00, FUN_02023D64, FUN_02024378
.word 0x08, 0x00, FUN_02023C40, FUN_02023C48
.word 0x09, 0x00, FUN_020254B8, FUN_020254CC
.word 0x0A, 0x00, FUN_02024E64, FUN_02024E6C
.word 0x0B, 0x00, FUN_02034D80, FUN_02034D88
.word 0x0C, 0x00, FUN_02025954, FUN_0202597C
.word 0x0D, 0x00, FUN_02023AC8, FUN_02023AD8
.word 0x0E, 0x00, FUN_02026FD8, FUN_02026F60
.word 0x0F, 0x00, FUN_02025844, FUN_0202584C
.word 0x10, 0x00, FUN_02028054, FUN_0202805C
.word 0x11, 0x00, FUN_020286F8, FUN_02028724
.word 0x12, 0x00, FUN_02028980, FUN_02028994
.word 0x13, 0x00, FUN_02029A84, FUN_02029A8C
.word 0x14, 0x00, FUN_02029FB0, FUN_02029FB8
.word 0x15, 0x00, FUN_02029C58, FUN_02029C60
.word 0x16, 0x00, FUN_02029EC4, FUN_02029ECC
.word 0x17, 0x00, FUN_0202A89C, FUN_0202A8A4
.word 0x18, 0x00, FUN_0202A8F4, FUN_0202A8F8
.word 0x19, 0x00, FUN_0202A924, FUN_0202A92C
.word 0x1A, 0x00, FUN_0202ABC8, FUN_0202ABCC
.word 0x1B, 0x00, FUN_0202B374, FUN_0202B37C
.word 0x1C, 0x00, FUN_0202B8B0, FUN_0202B8B8
.word 0x1D, 0x00, FUN_020281E0, FUN_020281E8
.word 0x1E, 0x00, FUN_02029AE0, FUN_02029AE8
.word 0x1F, 0x00, FUN_0202AC20, FUN_0202AC28
.word 0x20, 0x00, FUN_0202BE98, FUN_0202BEA0
.word 0x21, 0x00, FUN_0202C0E0, FUN_0202C0E4
.word 0x22, 0x00, FUN_02013B28, FUN_02013B2C
.word 0x23, 0x01, FUN_0206B178, FUN_0206B16C
.section .bss
.global UNK_021C59C8
UNK_021C59C8: ; 0x021C59C8
.space 0x8
.text
thumb_func_start FUN_0202254C
FUN_0202254C: ; 0x0202254C
push {r4, lr}
ldr r1, _020225E0 ; =0x000204A8
mov r0, #0x1
bl AllocFromHeap
add r4, r0, #0x0
ldr r2, _020225E0 ; =0x000204A8
mov r0, #0x0
add r1, r4, #0x0
bl MIi_CpuClearFast
ldr r0, _020225E4 ; =UNK_021C59C8
str r4, [r0, #0x0]
bl FUN_02023570
str r0, [r4, #0x0]
mov r0, #0x0
str r0, [r4, #0x4]
mov r0, #0x1
str r0, [r4, #0x8]
str r0, [r4, #0xc]
add r0, r4, #0x0
ldr r1, _020225E8 ; =0x00001021
add r0, #0x14
bl MATHi_CRC16InitTable
ldr r0, _020225EC ; =0x00020224
add r0, r4, r0
bl FUN_020230E4
ldr r0, _020225F0 ; =0x00020464
ldr r1, _020225EC ; =0x00020224
add r0, r4, r0
add r1, r4, r1
bl FUN_02023160
ldr r1, _020225F4 ; =0x00020218
mov r0, #0x0
add r1, r4, r1
mov r2, #0x8
bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_02022AD8
str r0, [r4, #0x10]
cmp r0, #0x3
bhi _020225DA
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_020225B8: ; jump table (using 16-bit offset)
.short _020225D4 - _020225B8 - 2; case 0
.short _020225C0 - _020225B8 - 2; case 1
.short _020225C4 - _020225B8 - 2; case 2
.short _020225D4 - _020225B8 - 2; case 3
_020225C0:
mov r0, #0x0
str r0, [r4, #0xc]
_020225C4:
add r0, r4, #0x0
bl FUN_02022D08
mov r0, #0x1
str r0, [r4, #0x4]
mov r0, #0x0
str r0, [r4, #0x8]
b _020225DA
_020225D4:
add r0, r4, #0x0
bl FUN_020227DC
_020225DA:
add r0, r4, #0x0
pop {r4, pc}
nop
_020225E0: .word 0x000204A8
_020225E4: .word UNK_021C59C8
_020225E8: .word 0x00001021
_020225EC: .word 0x00020224
_020225F0: .word 0x00020464
_020225F4: .word 0x00020218
thumb_func_start FUN_020225F8
FUN_020225F8: ; 0x020225F8
push {r3, lr}
ldr r0, _0202260C ; =UNK_021C59C8
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02022606
bl ErrorHandling
_02022606:
ldr r0, _0202260C ; =UNK_021C59C8
ldr r0, [r0, #0x0]
pop {r3, pc}
.balign 4
_0202260C: .word UNK_021C59C8
thumb_func_start FUN_02022610
FUN_02022610: ; 0x02022610
push {r3-r5, lr}
add r4, r1, #0x0
add r5, r0, #0x0
cmp r4, #0x24
blt _0202261E
bl ErrorHandling
_0202261E:
mov r0, #0x85
lsl r0, r0, #0x2
add r2, r5, r0
lsl r0, r4, #0x4
add r1, r5, r0
ldr r0, _02022630 ; =0x0002022C
ldr r0, [r1, r0]
add r0, r2, r0
pop {r3-r5, pc}
.balign 4
_02022630: .word 0x0002022C
thumb_func_start FUN_02022634
FUN_02022634: ; 0x02022634
ldr r3, _02022638 ; =FUN_02022610
bx r3
.balign 4
_02022638: .word FUN_02022610
thumb_func_start FUN_0202263C
FUN_0202263C: ; 0x0202263C
push {r3-r7, lr}
mov r1, #0x1
str r0, [sp, #0x0]
mov r0, #0x3
lsl r1, r1, #0xc
bl AllocFromHeapAtEnd
add r6, r0, #0x0
mov r0, #0x1
bl FUN_02016444
ldr r1, _020226F4 ; =0x00020220
ldr r0, [sp, #0x0]
ldrb r0, [r0, r1]
cmp r0, #0x0
bne _02022660
mov r2, #0x1
b _02022662
_02022660:
mov r2, #0x0
_02022662:
ldr r0, [sp, #0x0]
mov r1, #0x0
bl FUN_02023074
ldr r1, _020226F8 ; =0x00020221
ldr r0, [sp, #0x0]
ldrb r0, [r0, r1]
cmp r0, #0x0
bne _02022678
mov r2, #0x1
b _0202267A
_02022678:
mov r2, #0x0
_0202267A:
ldr r0, [sp, #0x0]
mov r1, #0x1
bl FUN_02023074
ldr r0, [sp, #0x0]
ldr r3, _020226F4 ; =0x00020220
add r2, r0, #0x0
ldrb r2, [r2, r3]
mov r1, #0x0
bl FUN_02023074
ldr r0, [sp, #0x0]
ldr r3, _020226F8 ; =0x00020221
add r2, r0, #0x0
ldrb r2, [r2, r3]
mov r1, #0x1
bl FUN_02023074
mov r0, #0x0
mov r2, #0x1
mvn r0, r0
add r1, r6, #0x0
lsl r2, r2, #0xc
bl MIi_CpuClearFast
mov r4, #0x0
mov r7, #0x1
add r5, r4, #0x0
lsl r7, r7, #0xc
_020226B4:
add r0, r5, #0x0
add r1, r6, #0x0
add r2, r7, #0x0
bl FUN_020235D0
add r0, r4, #0x0
add r0, #0x40
lsl r0, r0, #0xc
add r1, r6, #0x0
add r2, r7, #0x0
bl FUN_020235D0
mov r0, #0x1
lsl r0, r0, #0xc
add r4, r4, #0x1
add r5, r5, r0
cmp r4, #0x40
blt _020226B4
add r0, r6, #0x0
bl FreeToHeap
ldr r0, [sp, #0x0]
bl FUN_020227DC
ldr r0, [sp, #0x0]
mov r1, #0x0
str r1, [r0, #0x4]
mov r0, #0x1
bl FUN_02016454
mov r0, #0x1
pop {r3-r7, pc}
.balign 4
_020226F4: .word 0x00020220
_020226F8: .word 0x00020221
thumb_func_start FUN_020226FC
FUN_020226FC: ; 0x020226FC
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0x0]
cmp r1, #0x0
bne _0202270A
mov r0, #0x0
pop {r4, pc}
_0202270A:
bl FUN_02022D08
cmp r0, #0x0
beq _0202271C
mov r0, #0x1
str r0, [r4, #0x4]
mov r1, #0x0
str r1, [r4, #0x8]
pop {r4, pc}
_0202271C:
mov r0, #0x0
pop {r4, pc}
thumb_func_start FUN_02022720
FUN_02022720: ; 0x02022720
push {r4, lr}
add r4, r0, #0x0
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _0202272E
mov r0, #0x3
pop {r4, pc}
_0202272E:
ldr r0, [r4, #0x8]
cmp r0, #0x0
beq _02022784
mov r0, #0x1
bl FUN_02016444
ldr r0, _02022798 ; =0x00020220
ldrb r0, [r4, r0]
cmp r0, #0x0
bne _02022746
mov r2, #0x1
b _02022748
_02022746:
mov r2, #0x0
_02022748:
add r0, r4, #0x0
mov r1, #0x0
bl FUN_02023074
ldr r0, _0202279C ; =0x00020221
ldrb r0, [r4, r0]
cmp r0, #0x0
bne _0202275C
mov r2, #0x1
b _0202275E
_0202275C:
mov r2, #0x0
_0202275E:
add r0, r4, #0x0
mov r1, #0x1
bl FUN_02023074
ldr r2, _02022798 ; =0x00020220
add r0, r4, #0x0
ldrb r2, [r4, r2]
mov r1, #0x0
bl FUN_02023074
ldr r2, _0202279C ; =0x00020221
add r0, r4, #0x0
ldrb r2, [r4, r2]
mov r1, #0x1
bl FUN_02023074
mov r0, #0x1
bl FUN_02016454
_02022784:
add r0, r4, #0x0
bl FUN_02023044
cmp r0, #0x2
bne _02022796
mov r1, #0x1
str r1, [r4, #0x4]
mov r1, #0x0
str r1, [r4, #0x8]
_02022796:
pop {r4, pc}
.balign 4
_02022798: .word 0x00020220
_0202279C: .word 0x00020221
thumb_func_start FUN_020227A0
FUN_020227A0: ; 0x020227A0
push {r3-r5, lr}
add r4, r1, #0x0
add r5, r0, #0x0
cmp r4, #0x2
blt _020227AE
bl ErrorHandling
_020227AE:
ldr r0, [r5, #0x8]
cmp r0, #0x0
beq _020227B8
bl ErrorHandling
_020227B8:
ldr r0, [r5, #0x4]
cmp r0, #0x1
beq _020227C2
bl ErrorHandling
_020227C2:
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02022840
_020227CA:
add r0, r5, #0x0
bl FUN_02022854
cmp r0, #0x0
beq _020227CA
cmp r0, #0x1
beq _020227CA
pop {r3-r5, pc}
.balign 4
thumb_func_start FUN_020227DC
FUN_020227DC: ; 0x020227DC
add r2, r0, #0x0
mov r0, #0x1
str r0, [r2, #0x8]
str r0, [r2, #0xc]
mov r0, #0x85
ldr r1, _020227F4 ; =0x00020224
lsl r0, r0, #0x2
ldr r3, _020227F8 ; =FUN_020231F4
add r0, r2, r0
add r1, r2, r1
bx r3
nop
_020227F4: .word 0x00020224
_020227F8: .word FUN_020231F4
thumb_func_start FUN_020227FC
FUN_020227FC: ; 0x020227FC
ldr r0, [r0, #0x0]
bx lr
thumb_func_start FUN_02022800
FUN_02022800: ; 0x02022800
ldr r0, [r0, #0x10]
bx lr
thumb_func_start FUN_02022804
FUN_02022804: ; 0x02022804
ldr r0, [r0, #0x4]
bx lr
thumb_func_start FUN_02022808
FUN_02022808: ; 0x02022808
ldr r0, [r0, #0x8]
bx lr
thumb_func_start FUN_0202280C
FUN_0202280C: ; 0x0202280C
push {r4, lr}
add r4, r0, #0x0
bl FUN_02022808
cmp r0, #0x0
beq _02022826
add r0, r4, #0x0
bl FUN_02022804
cmp r0, #0x0
beq _02022826
mov r0, #0x1
pop {r4, pc}
_02022826:
mov r0, #0x0
pop {r4, pc}
.balign 4
thumb_func_start FUN_0202282C
FUN_0202282C: ; 0x0202282C
ldr r0, [r0, #0xc]
bx lr
thumb_func_start FUN_02022830
FUN_02022830: ; 0x02022830
ldr r0, _0202283C ; =UNK_021C59C8
mov r1, #0x1
ldr r0, [r0, #0x0]
str r1, [r0, #0xc]
bx lr
nop
_0202283C: .word UNK_021C59C8
thumb_func_start FUN_02022840
FUN_02022840: ; 0x02022840
add r2, r1, #0x0
ldr r1, _0202284C ; =0x0002047C
ldr r3, _02022850 ; =FUN_02022DFC
add r1, r0, r1
bx r3
nop
_0202284C: .word 0x0002047C
_02022850: .word FUN_02022DFC
thumb_func_start FUN_02022854
FUN_02022854: ; 0x02022854
push {r3-r5, lr}
ldr r1, _02022878 ; =0x0002047C
add r5, r0, #0x0
add r1, r5, r1
bl FUN_02022E78
add r4, r0, #0x0
beq _02022874
cmp r4, #0x1
beq _02022874
ldr r1, _02022878 ; =0x0002047C
add r0, r5, #0x0
add r1, r5, r1
add r2, r4, #0x0
bl FUN_02022F80
_02022874:
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
_02022878: .word 0x0002047C
thumb_func_start FUN_0202287C
FUN_0202287C: ; 0x0202287C
ldr r1, _02022884 ; =0x0002047C
ldr r3, _02022888 ; =FUN_02022FF0
add r1, r0, r1
bx r3
.balign 4
_02022884: .word 0x0002047C
_02022888: .word FUN_02022FF0
thumb_func_start FUN_0202288C
FUN_0202288C: ; 0x0202288C
mov r1, #0x0
str r1, [r0, #0x0]
str r1, [r0, #0x4]
str r1, [r0, #0x8]
bx lr
.balign 4
thumb_func_start FUN_02022898
FUN_02022898: ; 0x02022898
ldr r3, _020228A0 ; =MATH_CalcCRC16CCITT
add r0, #0x14
sub r2, #0x14
bx r3
.balign 4
_020228A0: .word MATH_CalcCRC16CCITT
thumb_func_start FUN_020228A4
FUN_020228A4: ; 0x020228A4
cmp r0, #0x0
bne _020228AC
mov r2, #0x0
b _020228B0
_020228AC:
mov r2, #0x1
lsl r2, r2, #0x12
_020228B0:
ldr r0, [r1, #0x4]
add r0, r2, r0
bx lr
.balign 4
thumb_func_start FUN_020228B8
FUN_020228B8: ; 0x020228B8
push {r3-r5, lr}
ldr r3, _020228DC ; =0x00020464
add r3, r0, r3
mov r0, #0xc
mul r0, r2
add r5, r3, r0
ldr r0, [r5, #0x4]
add r4, r1, r0
ldr r0, [r5, #0x8]
cmp r0, #0x0
bne _020228D2
bl ErrorHandling
_020228D2:
ldr r0, [r5, #0x8]
add r0, r4, r0
sub r0, #0x14
pop {r3-r5, pc}
nop
_020228DC: .word 0x00020464
thumb_func_start FUN_020228E0
FUN_020228E0: ; 0x020228E0
push {r3-r7, lr}
ldr r4, _02022934 ; =0x00020464
add r3, r0, #0x0
add r3, r3, r4
add r5, r2, #0x0
mov r4, #0xc
mul r4, r5
str r0, [sp, #0x0]
add r7, r1, #0x0
add r6, r3, r4
bl FUN_020228B8
add r4, r0, #0x0
ldr r2, [r6, #0x8]
ldr r0, [r4, #0x8]
ldr r1, [r6, #0x4]
cmp r0, r2
beq _02022908
mov r0, #0x0
pop {r3-r7, pc}
_02022908:
ldr r3, [r4, #0xc]
ldr r0, _02022938 ; =0x20060623
cmp r3, r0
beq _02022914
mov r0, #0x0
pop {r3-r7, pc}
_02022914:
ldrb r0, [r4, #0x10]
cmp r0, r5
beq _0202291E
mov r0, #0x0
pop {r3-r7, pc}
_0202291E:
ldr r0, [sp, #0x0]
add r1, r7, r1
bl FUN_02022898
ldrh r1, [r4, #0x12]
cmp r1, r0
bne _02022930
mov r0, #0x1
pop {r3-r7, pc}
_02022930:
mov r0, #0x0
pop {r3-r7, pc}
.balign 4
_02022934: .word 0x00020464
_02022938: .word 0x20060623
thumb_func_start FUN_0202293C
FUN_0202293C: ; 0x0202293C
push {r3-r7, lr}
add r7, r2, #0x0
add r6, r1, #0x0
add r5, r0, #0x0
str r3, [sp, #0x0]
add r0, r6, #0x0
add r1, r7, #0x0
add r2, r3, #0x0
bl FUN_020228B8
add r4, r0, #0x0
ldr r2, [sp, #0x0]
add r0, r6, #0x0
add r1, r7, #0x0
bl FUN_020228E0
str r0, [r5, #0x0]
ldr r0, [r4, #0x0]
str r0, [r5, #0x4]
ldr r0, [r4, #0x4]
str r0, [r5, #0x8]
pop {r3-r7, pc}
thumb_func_start FUN_02022968
FUN_02022968: ; 0x02022968
push {r3-r7, lr}
ldr r3, _020229AC ; =0x00020464
add r5, r0, #0x0
add r7, r2, #0x0
mov r4, #0xc
add r3, r5, r3
mul r4, r7
str r1, [sp, #0x0]
add r6, r3, r4
bl FUN_020228B8
ldr r2, _020229B0 ; =0x00020214
add r4, r0, #0x0
ldr r0, [r5, r2]
ldr r1, [r6, #0x4]
add r2, r2, #0x4
str r0, [r4, #0x0]
lsl r0, r7, #0x2
add r0, r5, r0
ldr r0, [r0, r2]
ldr r2, [sp, #0x0]
str r0, [r4, #0x4]
ldr r0, [r6, #0x8]
add r1, r2, r1
str r0, [r4, #0x8]
ldr r0, _020229B4 ; =0x20060623
str r0, [r4, #0xc]
strb r7, [r4, #0x10]
ldr r2, [r6, #0x8]
add r0, r5, #0x0
bl FUN_02022898
strh r0, [r4, #0x12]
pop {r3-r7, pc}
.balign 4
_020229AC: .word 0x00020464
_020229B0: .word 0x00020214
_020229B4: .word 0x20060623
thumb_func_start FUN_020229B8
FUN_020229B8: ; 0x020229B8
mov r2, #0x0
mvn r2, r2
cmp r0, r2
bne _020229C8
cmp r1, #0x0
bne _020229C8
add r0, r2, #0x0
bx lr
_020229C8:
cmp r0, #0x0
bne _020229D8
mov r2, #0x0
mvn r2, r2
cmp r1, r2
bne _020229D8
mov r0, #0x1
bx lr
_020229D8:
cmp r0, r1
bls _020229E0
mov r0, #0x1
bx lr
_020229E0:
cmp r0, r1
bhs _020229E8
mov r0, #0x1
b _020229EA
_020229E8:
mov r0, #0x0
_020229EA:
neg r0, r0
bx lr
.balign 4
thumb_func_start FUN_020229F0
FUN_020229F0: ; 0x020229F0
push {r3-r7, lr}
add r7, r0, #0x0
add r6, r1, #0x0
ldr r0, [r7, #0x4]
ldr r1, [r6, #0x4]
add r5, r2, #0x0
add r4, r3, #0x0
bl FUN_020229B8
str r0, [sp, #0x0]
ldr r0, [r7, #0x8]
ldr r1, [r6, #0x8]
bl FUN_020229B8
ldr r2, [r7, #0x0]
cmp r2, #0x0
beq _02022A6A
ldr r1, [r6, #0x0]
cmp r1, #0x0
beq _02022A6A
ldr r1, [sp, #0x0]
cmp r1, #0x0
ble _02022A30
cmp r0, #0x0
bgt _02022A26
bl ErrorHandling
_02022A26:
mov r0, #0x0
str r0, [r5, #0x0]
mov r0, #0x1
str r0, [r4, #0x0]
b _02022A66
_02022A30:
bge _02022A44
cmp r0, #0x0
blt _02022A3A
bl ErrorHandling
_02022A3A:
mov r0, #0x1
str r0, [r5, #0x0]
mov r0, #0x0
str r0, [r4, #0x0]
b _02022A66
_02022A44:
cmp r0, #0x0
ble _02022A52
mov r0, #0x0
str r0, [r5, #0x0]
mov r0, #0x1
str r0, [r4, #0x0]
b _02022A66
_02022A52:
bge _02022A5E
mov r0, #0x1
str r0, [r5, #0x0]
mov r0, #0x0
str r0, [r4, #0x0]
b _02022A66
_02022A5E:
mov r0, #0x0
str r0, [r5, #0x0]
mov r0, #0x1
str r0, [r4, #0x0]
_02022A66:
mov r0, #0x2
pop {r3-r7, pc}
_02022A6A:
cmp r2, #0x0
beq _02022A80
ldr r0, [r6, #0x0]
cmp r0, #0x0
bne _02022A80
mov r0, #0x0
str r0, [r5, #0x0]
mov r0, #0x2
str r0, [r4, #0x0]
mov r0, #0x1
pop {r3-r7, pc}
_02022A80:
cmp r2, #0x0
bne _02022A94
ldr r0, [r6, #0x0]
cmp r0, #0x0
beq _02022A94
mov r0, #0x1
str r0, [r5, #0x0]
mov r1, #0x2
str r1, [r4, #0x0]
pop {r3-r7, pc}
_02022A94:
mov r0, #0x2
str r0, [r5, #0x0]
str r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
.balign 4
thumb_func_start FUN_02022AA0
FUN_02022AA0: ; 0x02022AA0
push {r3-r6}
mov r4, #0xc
add r5, r3, #0x0
mul r5, r4
add r6, r1, r5
ldr r5, [r6, #0x4]
ldr r1, _02022AD4 ; =0x00020214
str r5, [r0, r1]
ldr r6, [r6, #0x8]
add r5, r1, #0x4
str r6, [r0, r5]
ldr r5, [sp, #0x10]
mul r4, r5
add r2, r2, r4
ldr r4, [r2, #0x8]
add r2, r1, #0x0
add r2, #0x8
str r4, [r0, r2]
add r2, r1, #0x0
add r2, #0xc
strb r3, [r0, r2]
add r1, #0xd
strb r5, [r0, r1]
pop {r3-r6}
bx lr
nop
_02022AD4: .word 0x00020214
thumb_func_start FUN_02022AD8
FUN_02022AD8: ; 0x02022AD8
push {r3-r6, lr}
sub sp, #0x44
mov r1, #0x2
add r5, r0, #0x0
mov r0, #0x3
lsl r1, r1, #0x10
bl AllocFromHeapAtEnd
mov r1, #0x2
add r6, r0, #0x0
mov r0, #0x3
lsl r1, r1, #0x10
bl AllocFromHeapAtEnd
mov r2, #0x2
add r4, r0, #0x0
mov r0, #0x0
add r1, r6, #0x0
lsl r2, r2, #0x10
bl FUN_020235EC
cmp r0, #0x0
add r0, sp, #0x2c
beq _02022B20
add r1, r5, #0x0
add r2, r6, #0x0
mov r3, #0x0
bl FUN_0202293C
add r0, sp, #0x14
add r1, r5, #0x0
add r2, r6, #0x0
mov r3, #0x1
bl FUN_0202293C
b _02022B2A
_02022B20:
bl FUN_0202288C
add r0, sp, #0x14
bl FUN_0202288C
_02022B2A:
mov r0, #0x1
lsl r0, r0, #0x12
add r1, r4, #0x0
lsr r2, r0, #0x1
bl FUN_020235EC
cmp r0, #0x0
add r0, sp, #0x38
beq _02022B54
add r1, r5, #0x0
add r2, r4, #0x0
mov r3, #0x0
bl FUN_0202293C
add r0, sp, #0x20
add r1, r5, #0x0
add r2, r4, #0x0
mov r3, #0x1
bl FUN_0202293C
b _02022B5E
_02022B54:
bl FUN_0202288C
add r0, sp, #0x20
bl FUN_0202288C
_02022B5E:
add r0, r6, #0x0
bl FreeToHeap
add r0, r4, #0x0
bl FreeToHeap
add r0, sp, #0x2c
add r1, sp, #0x38
add r2, sp, #0x10
add r3, sp, #0x8
bl FUN_020229F0
add r4, r0, #0x0
add r0, sp, #0x14
add r1, sp, #0x20
add r2, sp, #0xc
add r3, sp, #0x4
bl FUN_020229F0
cmp r4, #0x0
bne _02022B92
cmp r0, #0x0
bne _02022B92
add sp, #0x44
mov r0, #0x0
pop {r3-r6, pc}
_02022B92:
cmp r4, #0x0
beq _02022B9A
cmp r0, #0x0
bne _02022BA0
_02022B9A:
add sp, #0x44
mov r0, #0x3
pop {r3-r6, pc}
_02022BA0:
cmp r4, #0x2
bne _02022BE4
cmp r0, #0x2
bne _02022BE4
ldr r3, [sp, #0x10]
ldr r1, [sp, #0xc]
mov r2, #0xc
add r4, r3, #0x0
mul r4, r2
add r0, sp, #0x30
ldr r0, [r0, r4]
add r4, r1, #0x0
mul r4, r2
add r2, sp, #0x18
ldr r2, [r2, r4]
cmp r0, r2
str r1, [sp, #0x0]
add r1, sp, #0x2c
bne _02022BD4
add r0, r5, #0x0
add r2, sp, #0x14
bl FUN_02022AA0
add sp, #0x44
mov r0, #0x1
pop {r3-r6, pc}
_02022BD4:
ldr r3, [sp, #0x8]
add r0, r5, #0x0
add r2, sp, #0x14
bl FUN_02022AA0
add sp, #0x44
mov r0, #0x2
pop {r3-r6, pc}
_02022BE4:
cmp r4, #0x1
bne _02022C3A
cmp r0, #0x2
bne _02022C3A
ldr r3, [sp, #0x10]
ldr r0, [sp, #0xc]
mov r4, #0xc
add r2, r3, #0x0
add r6, r0, #0x0
mul r2, r4
add r1, sp, #0x30
ldr r2, [r1, r2]
mul r6, r4
add r1, sp, #0x18
ldr r6, [r1, r6]
cmp r2, r6
bne _02022C18
str r0, [sp, #0x0]
add r0, r5, #0x0
add r1, sp, #0x2c
add r2, sp, #0x14
bl FUN_02022AA0
add sp, #0x44
mov r0, #0x2
pop {r3-r6, pc}
_02022C18:
ldr r0, [sp, #0x4]
mul r4, r0
ldr r1, [r1, r4]
cmp r2, r1
bne _02022C34
str r0, [sp, #0x0]
add r0, r5, #0x0
add r1, sp, #0x2c
add r2, sp, #0x14
bl FUN_02022AA0
add sp, #0x44
mov r0, #0x2
pop {r3-r6, pc}
_02022C34:
add sp, #0x44
mov r0, #0x3
pop {r3-r6, pc}
_02022C3A:
cmp r4, #0x2
bne _02022C7E
cmp r0, #0x1
bne _02022C7E
ldr r3, [sp, #0x10]
ldr r1, [sp, #0xc]
mov r2, #0xc
add r4, r3, #0x0
mul r4, r2
add r0, sp, #0x30
ldr r0, [r0, r4]
add r4, r1, #0x0
mul r4, r2
add r2, sp, #0x18
ldr r2, [r2, r4]
cmp r0, r2
str r1, [sp, #0x0]
add r1, sp, #0x2c
bne _02022C6E
add r0, r5, #0x0
add r2, sp, #0x14
bl FUN_02022AA0
add sp, #0x44
mov r0, #0x1
pop {r3-r6, pc}
_02022C6E:
ldr r3, [sp, #0x8]
add r0, r5, #0x0
add r2, sp, #0x14
bl FUN_02022AA0
add sp, #0x44
mov r0, #0x2
pop {r3-r6, pc}
_02022C7E:
cmp r4, #0x1
bne _02022CBC
cmp r0, #0x1
bne _02022CBC
ldr r0, [sp, #0xc]
ldr r2, [sp, #0x10]
cmp r2, r0
bne _02022CBC
add r3, r2, #0x0
mov r1, #0xc
mul r3, r1
add r2, sp, #0x30
mul r1, r0
add r0, sp, #0x18
ldr r2, [r2, r3]
ldr r0, [r0, r1]
cmp r2, r0
beq _02022CA6
bl ErrorHandling
_02022CA6:
ldr r0, [sp, #0xc]
add r1, sp, #0x2c
str r0, [sp, #0x0]
ldr r3, [sp, #0x10]
add r0, r5, #0x0
add r2, sp, #0x14
bl FUN_02022AA0
add sp, #0x44
mov r0, #0x1
pop {r3-r6, pc}
_02022CBC:
ldr r1, [sp, #0x10]
mov r0, #0xc
add r2, r1, #0x0
mul r2, r0
add r1, sp, #0x30
ldr r3, [r1, r2]
ldr r1, [sp, #0xc]
add r2, r1, #0x0
mul r2, r0
add r0, sp, #0x18
ldr r0, [r0, r2]
cmp r3, r0
beq _02022CDA
bl ErrorHandling
_02022CDA:
ldr r0, [sp, #0xc]
add r1, sp, #0x2c
str r0, [sp, #0x0]
ldr r3, [sp, #0x10]
add r0, r5, #0x0
add r2, sp, #0x14
bl FUN_02022AA0
mov r0, #0x2
add sp, #0x44
pop {r3-r6, pc}
thumb_func_start FUN_02022CF0
FUN_02022CF0: ; 0x02022CF0
push {r3-r5, lr}
add r5, r1, #0x0
add r4, r2, #0x0
bl FUN_020228A4
ldr r1, [r5, #0x4]
ldr r2, [r5, #0x8]
add r1, r4, r1
bl FUN_020235EC
pop {r3-r5, pc}
.balign 4
thumb_func_start FUN_02022D08
FUN_02022D08: ; 0x02022D08
push {r3-r7, lr}
add r5, r0, #0x0
ldr r0, _02022D4C ; =0x00020464
mov r7, #0x85
mov r4, #0x0
add r6, r5, r0
lsl r7, r7, #0x2
_02022D16:
ldr r0, _02022D50 ; =0x00020220
add r1, r5, r4
ldrb r0, [r1, r0]
add r1, r6, #0x0
add r2, r5, r7
bl FUN_02022CF0
cmp r0, #0x0
bne _02022D2C
mov r0, #0x0
pop {r3-r7, pc}
_02022D2C:
add r0, r5, #0x0
add r1, r5, r7
add r2, r4, #0x0
bl FUN_020228E0
cmp r0, #0x0
bne _02022D3E
mov r0, #0x0
pop {r3-r7, pc}
_02022D3E:
add r4, r4, #0x1
add r6, #0xc
cmp r4, #0x2
blt _02022D16
mov r0, #0x1
pop {r3-r7, pc}
nop
_02022D4C: .word 0x00020464
_02022D50: .word 0x00020220
thumb_func_start FUN_02022D54
FUN_02022D54: ; 0x02022D54
push {r4-r6, lr}
add r3, r1, #0x0
ldr r1, _02022D90 ; =0x00020464
add r5, r0, #0x0
add r6, r2, #0x0
add r2, r5, r1
mov r1, #0xc
mul r1, r3
add r4, r2, r1
mov r1, #0x85
lsl r1, r1, #0x2
add r1, r5, r1
add r2, r3, #0x0
bl FUN_02022968
add r0, r6, #0x0
add r1, r4, #0x0
bl FUN_020228A4
mov r1, #0x85
lsl r1, r1, #0x2
add r2, r5, r1
ldr r1, [r4, #0x4]
add r1, r2, r1
ldr r2, [r4, #0x8]
sub r2, #0x14
bl FUN_02023668
pop {r4-r6, pc}
nop
_02022D90: .word 0x00020464
thumb_func_start FUN_02022D94
FUN_02022D94: ; 0x02022D94
push {r4-r6, lr}
add r6, r0, #0x0
ldr r0, _02022DC4 ; =0x00020464
add r3, r6, r0
mov r0, #0xc
mul r0, r1
add r4, r3, r0
add r0, r2, #0x0
add r1, r4, #0x0
ldr r5, [r4, #0x8]
bl FUN_020228A4
mov r1, #0x2
lsl r1, r1, #0x8
add r2, r6, r1
ldr r1, [r4, #0x4]
add r0, r5, r0
add r1, r2, r1
sub r0, #0x14
add r1, r1, r5
mov r2, #0x14
bl FUN_02023668
pop {r4-r6, pc}
.balign 4
_02022DC4: .word 0x00020464
thumb_func_start FUN_02022DC8
FUN_02022DC8: ; 0x02022DC8
push {r4-r6, lr}
add r6, r0, #0x0
ldr r0, _02022DF8 ; =0x00020464
add r3, r6, r0
mov r0, #0xc
mul r0, r1
add r4, r3, r0
add r0, r2, #0x0
add r1, r4, #0x0
ldr r5, [r4, #0x8]
bl FUN_020228A4
mov r1, #0x82
lsl r1, r1, #0x2
add r2, r6, r1
ldr r1, [r4, #0x4]
add r0, r5, r0
add r1, r2, r1
sub r0, #0xc
add r1, r1, r5
mov r2, #0x8
bl FUN_02023668
pop {r4-r6, pc}
.balign 4
_02022DF8: .word 0x00020464
thumb_func_start FUN_02022DFC
FUN_02022DFC: ; 0x02022DFC
push {r3-r7, lr}
ldr r7, _02022E70 ; =0x00020218
add r4, r1, #0x0
mov r12, r2
mov r1, #0x0
add r2, r0, #0x0
add r3, r4, #0x0
add r6, r7, #0x0
_02022E0C:
ldr r5, _02022E70 ; =0x00020218
add r1, r1, #0x1
ldr r5, [r2, r5]
str r5, [r3, #0x1c]
ldr r5, [r2, r7]
add r3, r3, #0x4
add r5, r5, #0x1
str r5, [r2, r6]
add r2, r2, #0x4
cmp r1, #0x2
blt _02022E0C
mov r1, #0x0
str r1, [r4, #0x14]
mov r2, r12
str r1, [r4, #0x0]
cmp r2, #0x2
bne _02022E58
ldr r2, [r0, #0xc]
cmp r2, #0x0
beq _02022E4E
mov r2, #0x1
str r2, [r4, #0x0]
ldr r2, _02022E74 ; =0x00020214
ldr r3, [r0, r2]
str r3, [r4, #0x18]
ldr r3, [r0, r2]
add r3, r3, #0x1
str r3, [r0, r2]
str r1, [r4, #0x4]
str r1, [r4, #0x8]
mov r0, #0x2
str r0, [r4, #0xc]
b _02022E66
_02022E4E:
str r1, [r4, #0x4]
str r1, [r4, #0x8]
mov r0, #0x1
str r0, [r4, #0xc]
b _02022E66
_02022E58:
mov r0, r12
str r0, [r4, #0x4]
mov r0, r12
str r0, [r4, #0x8]
mov r0, r12
add r0, r0, #0x1
str r0, [r4, #0xc]
_02022E66:
mov r0, #0x1
bl FUN_02016444
pop {r3-r7, pc}
nop
_02022E70: .word 0x00020218
_02022E74: .word 0x00020214
thumb_func_start FUN_02022E78
FUN_02022E78: ; 0x02022E78
push {r3-r5, lr}
add r4, r1, #0x0
add r5, r0, #0x0
ldr r0, [r4, #0x14]
cmp r0, #0x5
bhi _02022F78
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02022E90: ; jump table (using 16-bit offset)
.short _02022E9C - _02022E90 - 2; case 0
.short _02022EC0 - _02022E90 - 2; case 1
.short _02022EDC - _02022E90 - 2; case 2
.short _02022F00 - _02022E90 - 2; case 3
.short _02022F2A - _02022E90 - 2; case 4
.short _02022F4E - _02022E90 - 2; case 5
_02022E9C:
ldr r1, [r4, #0x8]
ldr r0, _02022F7C ; =0x00020220
add r2, r5, r1
ldrb r0, [r2, r0]
cmp r0, #0x0
bne _02022EAC
mov r2, #0x1
b _02022EAE
_02022EAC:
mov r2, #0x0
_02022EAE:
lsl r2, r2, #0x18
add r0, r5, #0x0
lsr r2, r2, #0x18
bl FUN_02022D54
str r0, [r4, #0x10]
ldr r0, [r4, #0x14]
add r0, r0, #0x1
str r0, [r4, #0x14]
_02022EC0:
ldr r0, [r4, #0x10]
add r1, sp, #0x0
bl FUN_020236E4
cmp r0, #0x0
beq _02022F78
ldr r0, [sp, #0x0]
cmp r0, #0x0
bne _02022ED6
mov r0, #0x3
pop {r3-r5, pc}
_02022ED6:
ldr r0, [r4, #0x14]
add r0, r0, #0x1
str r0, [r4, #0x14]
_02022EDC:
ldr r1, [r4, #0x8]
ldr r0, _02022F7C ; =0x00020220
add r2, r5, r1
ldrb r0, [r2, r0]
cmp r0, #0x0
bne _02022EEC
mov r2, #0x1
b _02022EEE
_02022EEC:
mov r2, #0x0
_02022EEE:
lsl r2, r2, #0x18
add r0, r5, #0x0
lsr r2, r2, #0x18
bl FUN_02022DC8
str r0, [r4, #0x10]
ldr r0, [r4, #0x14]
add r0, r0, #0x1
str r0, [r4, #0x14]
_02022F00:
ldr r0, [r4, #0x10]
add r1, sp, #0x0
bl FUN_020236E4
cmp r0, #0x0
beq _02022F78
ldr r0, [sp, #0x0]
cmp r0, #0x0
bne _02022F16
mov r0, #0x3
pop {r3-r5, pc}
_02022F16:
ldr r0, [r4, #0x14]
add r0, r0, #0x1
str r0, [r4, #0x14]
ldr r0, [r4, #0x8]
add r1, r0, #0x1
ldr r0, [r4, #0xc]
cmp r1, r0
bne _02022F2A
mov r0, #0x1
pop {r3-r5, pc}
_02022F2A:
ldr r1, [r4, #0x8]
ldr r0, _02022F7C ; =0x00020220
add r2, r5, r1
ldrb r0, [r2, r0]
cmp r0, #0x0
bne _02022F3A
mov r2, #0x1
b _02022F3C
_02022F3A:
mov r2, #0x0
_02022F3C:
lsl r2, r2, #0x18
add r0, r5, #0x0
lsr r2, r2, #0x18
bl FUN_02022D94
str r0, [r4, #0x10]
ldr r0, [r4, #0x14]
add r0, r0, #0x1
str r0, [r4, #0x14]
_02022F4E:
ldr r0, [r4, #0x10]
add r1, sp, #0x0
bl FUN_020236E4
cmp r0, #0x0
beq _02022F78
ldr r0, [sp, #0x0]
cmp r0, #0x0
bne _02022F64
mov r0, #0x3
pop {r3-r5, pc}
_02022F64:
ldr r0, [r4, #0x8]
add r1, r0, #0x1
str r1, [r4, #0x8]
ldr r0, [r4, #0xc]
cmp r1, r0
bne _02022F74
mov r0, #0x2
pop {r3-r5, pc}
_02022F74:
mov r0, #0x0
str r0, [r4, #0x14]
_02022F78:
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
_02022F7C: .word 0x00020220
thumb_func_start FUN_02022F80
FUN_02022F80: ; 0x02022F80
push {r3-r7, lr}
add r3, r0, #0x0
add r0, r1, #0x0
cmp r2, #0x3
bne _02022FAA
ldr r1, [r0, #0x0]
cmp r1, #0x0
beq _02022F96
ldr r2, [r0, #0x18]
ldr r1, _02022FE4 ; =0x00020214
str r2, [r3, r1]
_02022F96:
ldr r1, _02022FE8 ; =0x00020218
mov r4, #0x0
_02022F9A:
ldr r2, [r0, #0x1c]
add r4, r4, #0x1
str r2, [r3, r1]
add r0, r0, #0x4
add r3, r3, #0x4
cmp r4, #0x2
blt _02022F9A
b _02022FDA
_02022FAA:
ldr r6, [r0, #0x4]
ldr r1, [r0, #0xc]
cmp r6, r1
bge _02022FD0
ldr r1, _02022FEC ; =0x00020220
mov r7, #0x1
add r2, r1, #0x0
_02022FB8:
add r5, r3, r6
ldrb r4, [r5, r2]
cmp r4, #0x0
bne _02022FC4
add r4, r7, #0x0
b _02022FC6
_02022FC4:
mov r4, #0x0
_02022FC6:
strb r4, [r5, r1]
ldr r4, [r0, #0xc]
add r6, r6, #0x1
cmp r6, r4
blt _02022FB8
_02022FD0:
mov r0, #0x1
str r0, [r3, #0x4]
mov r0, #0x0
str r0, [r3, #0x8]
str r0, [r3, #0xc]
_02022FDA:
mov r0, #0x1
bl FUN_02016454
pop {r3-r7, pc}
nop
_02022FE4: .word 0x00020214
_02022FE8: .word 0x00020218
_02022FEC: .word 0x00020220
thumb_func_start FUN_02022FF0
FUN_02022FF0: ; 0x02022FF0
push {r3-r5, lr}
add r4, r1, #0x0
ldr r1, [r4, #0x0]
cmp r1, #0x0
beq _02023000
ldr r2, [r4, #0x18]
ldr r1, _0202303C ; =0x00020214
str r2, [r0, r1]
_02023000:
ldr r1, _02023040 ; =0x00020218
mov r3, #0x0
add r5, r4, #0x0
_02023006:
ldr r2, [r5, #0x1c]
add r3, r3, #0x1
str r2, [r0, r1]
add r5, r5, #0x4
add r0, r0, #0x4
cmp r3, #0x2
blt _02023006
bl CARD_TryWaitBackupAsync
cmp r0, #0x0
bne _02023034
bl CARD_CancelBackupAsync
ldr r0, [r4, #0x10]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl CARD_UnlockBackup
ldr r0, [r4, #0x10]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl OS_ReleaseLockID
_02023034:
mov r0, #0x1
bl FUN_02016454
pop {r3-r5, pc}
.balign 4
_0202303C: .word 0x00020214
_02023040: .word 0x00020218
thumb_func_start FUN_02023044
FUN_02023044: ; 0x02023044
push {r3-r6, lr}
sub sp, #0x24
add r1, sp, #0x0
mov r2, #0x2
add r5, r0, #0x0
bl FUN_02022DFC
add r6, sp, #0x0
_02023054:
add r0, r5, #0x0
add r1, r6, #0x0
bl FUN_02022E78
add r4, r0, #0x0
beq _02023054
cmp r4, #0x1
beq _02023054
add r0, r5, #0x0
add r1, sp, #0x0
add r2, r4, #0x0
bl FUN_02022F80
add r0, r4, #0x0
add sp, #0x24
pop {r3-r6, pc}
thumb_func_start FUN_02023074
FUN_02023074: ; 0x02023074
push {r4-r5, lr}
sub sp, #0x14
add r4, r2, #0x0
ldr r2, _020230A8 ; =0x00020464
add r2, r0, r2
mov r0, #0xc
mul r0, r1
add r5, r2, r0
add r0, sp, #0x0
mov r1, #0xff
mov r2, #0x14
bl MI_CpuFill8
add r0, r4, #0x0
add r1, r5, #0x0
bl FUN_020228A4
ldr r1, [r5, #0x8]
mov r2, #0x14
add r0, r1, r0
sub r0, #0x14
add r1, sp, #0x0
bl FUN_020235D0
add sp, #0x14
pop {r4-r5, pc}
.balign 4
_020230A8: .word 0x00020464
thumb_func_start FUN_020230AC
FUN_020230AC: ; 0x020230AC
push {r3-r5, lr}
add r5, r0, #0x0
ldr r0, _020230DC ; =UNK_020EE6DC
ldr r4, _020230E0 ; =UNK_020EE700
ldr r0, [r0, #0x0]
cmp r5, r0
blt _020230BE
bl ErrorHandling
_020230BE:
lsl r0, r5, #0x4
add r0, r4, r0
ldr r0, [r0, #0x8]
blx r0
lsr r3, r0, #0x1f
lsl r2, r0, #0x1e
sub r2, r2, r3
mov r1, #0x1e
ror r2, r1
add r2, r3, r2
mov r1, #0x4
sub r1, r1, r2
add r0, r0, r1
pop {r3-r5, pc}
nop
_020230DC: .word UNK_020EE6DC
_020230E0: .word UNK_020EE700
thumb_func_start FUN_020230E4
FUN_020230E4: ; 0x020230E4
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
ldr r0, _02023158 ; =UNK_020EE6DC
ldr r4, _0202315C ; =UNK_020EE700
ldr r0, [r0, #0x0]
mov r7, #0x0
str r0, [sp, #0x0]
cmp r0, #0x24
beq _020230FC
bl ErrorHandling
_020230FC:
ldr r0, [sp, #0x0]
mov r6, #0x0
cmp r0, #0x0
ble _02023148
sub r0, r0, #0x1
str r0, [sp, #0x4]
_02023108:
ldr r0, [r4, #0x0]
cmp r6, r0
beq _02023112
bl ErrorHandling
_02023112:
ldr r0, [r4, #0x0]
str r0, [r5, #0x0]
add r0, r6, #0x0
bl FUN_020230AC
str r0, [r5, #0x4]
str r7, [r5, #0x8]
mov r0, #0x0
strh r0, [r5, #0xc]
ldr r0, [r4, #0x4]
strh r0, [r5, #0xe]
ldr r0, [r5, #0x4]
add r7, r7, r0
ldr r0, [sp, #0x4]
cmp r6, r0
beq _0202313A
ldr r1, [r4, #0x4]
ldr r0, [r4, #0x14]
cmp r1, r0
beq _0202313C
_0202313A:
add r7, #0x14
_0202313C:
ldr r0, [sp, #0x0]
add r6, r6, #0x1
add r4, #0x10
add r5, #0x10
cmp r6, r0
blt _02023108
_02023148:
mov r0, #0x2
lsl r0, r0, #0x10
cmp r7, r0
ble _02023154
bl ErrorHandling
_02023154:
add sp, #0x8
pop {r3-r7, pc}
.balign 4
_02023158: .word UNK_020EE6DC
_0202315C: .word UNK_020EE700
thumb_func_start FUN_02023160
FUN_02023160: ; 0x02023160
push {r3-r7, lr}
sub sp, #0x8
str r0, [sp, #0x0]
mov r0, #0x0
str r0, [sp, #0x4]
mov r12, r0
add r3, r0, #0x0
add r6, r0, #0x0
ldr r0, _020231EC ; =UNK_020EE6DC
ldr r4, [sp, #0x0]
ldr r7, [r0, #0x0]
add r5, r1, #0x0
_02023178:
add r2, r4, #0x0
strb r6, [r4, #0x0]
mov r0, #0x0
str r0, [r4, #0x8]
add r2, #0x8
b _02023190
_02023184:
ldr r0, [r5, #0x4]
ldr r1, [r2, #0x0]
add r5, #0x10
add r0, r1, r0
str r0, [r2, #0x0]
add r3, r3, #0x1
_02023190:
ldrh r0, [r5, #0xe]
cmp r6, r0
bne _0202319A
cmp r3, r7
blt _02023184
_0202319A:
ldr r0, [r4, #0x8]
add r6, r6, #0x1
add r0, #0x14
str r0, [r4, #0x8]
ldr r0, [sp, #0x4]
strb r0, [r4, #0x1]
mov r0, r12
str r0, [r4, #0x4]
ldr r1, [r4, #0x8]
ldr r0, _020231F0 ; =0x00000FFF
add r0, r1, r0
lsr r0, r0, #0xc
strb r0, [r4, #0x2]
ldrb r1, [r4, #0x2]
ldr r0, [sp, #0x4]
add r0, r0, r1
str r0, [sp, #0x4]
ldr r0, [r4, #0x8]
mov r1, r12
add r0, r1, r0
add r4, #0xc
mov r12, r0
cmp r6, #0x2
blt _02023178
ldr r0, [sp, #0x0]
ldrb r1, [r0, #0xd]
ldrb r0, [r0, #0xe]
add r1, r1, r0
ldr r0, [sp, #0x4]
cmp r0, r1
beq _020231DC
bl ErrorHandling
_020231DC:
ldr r0, [sp, #0x4]
cmp r0, #0x20
ble _020231E6
bl ErrorHandling
_020231E6:
add sp, #0x8
pop {r3-r7, pc}
nop
_020231EC: .word UNK_020EE6DC
_020231F0: .word 0x00000FFF
thumb_func_start FUN_020231F4
FUN_020231F4: ; 0x020231F4
push {r3-r7, lr}
sub sp, #0x8
add r6, r0, #0x0
mov r2, #0x2
add r5, r1, #0x0
mov r0, #0x0
add r1, r6, #0x0
lsl r2, r2, #0x10
ldr r4, _02023240 ; =UNK_020EE700
bl MIi_CpuClearFast
ldr r0, _02023244 ; =UNK_020EE6DC
mov r7, #0x0
ldr r0, [r0, #0x0]
str r0, [sp, #0x0]
cmp r0, #0x0
ble _0202323A
_02023216:
ldr r0, [r5, #0x8]
ldr r2, [r5, #0x4]
str r0, [sp, #0x4]
ldr r1, [sp, #0x4]
mov r0, #0x0
add r1, r6, r1
bl MIi_CpuClearFast
ldr r0, [sp, #0x4]
ldr r1, [r4, #0xc]
add r0, r6, r0
blx r1
ldr r0, [sp, #0x0]
add r7, r7, #0x1
add r5, #0x10
add r4, #0x10
cmp r7, r0
blt _02023216
_0202323A:
add sp, #0x8
pop {r3-r7, pc}
nop
_02023240: .word UNK_020EE700
_02023244: .word UNK_020EE6DC
thumb_func_start FUN_02023248
FUN_02023248: ; 0x02023248
push {r3-r5, lr}
ldr r5, _0202326C ; =0x20060623
add r4, r1, r3
str r5, [r1, r3]
ldr r5, _02023270 ; =0x000204A4
ldr r5, [r0, r5]
add r0, #0x14
add r5, r5, #0x1
str r5, [r4, #0x4]
str r3, [r4, #0x8]
add r3, #0xe
strh r2, [r4, #0xc]
add r2, r3, #0x0
bl MATH_CalcCRC16CCITT
strh r0, [r4, #0xe]
pop {r3-r5, pc}
nop
_0202326C: .word 0x20060623
_02023270: .word 0x000204A4
thumb_func_start FUN_02023274
FUN_02023274: ; 0x02023274
push {r4-r6, lr}
ldr r6, [r1, r3]
ldr r5, _020232B0 ; =0x20060623
add r4, r1, r3
cmp r6, r5
beq _02023284
mov r0, #0x0
pop {r4-r6, pc}
_02023284:
ldr r5, [r4, #0x8]
cmp r5, r3
beq _0202328E
mov r0, #0x0
pop {r4-r6, pc}
_0202328E:
ldrh r5, [r4, #0xc]
cmp r5, r2
beq _02023298
mov r0, #0x0
pop {r4-r6, pc}
_02023298:
add r3, #0xe
add r0, #0x14
add r2, r3, #0x0
bl MATH_CalcCRC16CCITT
ldrh r1, [r4, #0xe]
cmp r1, r0
bne _020232AC
mov r0, #0x1
pop {r4-r6, pc}
_020232AC:
mov r0, #0x0
pop {r4-r6, pc}
.balign 4
_020232B0: .word 0x20060623
thumb_func_start FUN_020232B4
FUN_020232B4: ; 0x020232B4
add r0, r0, r1
ldr r0, [r0, #0x4]
bx lr
.balign 4
thumb_func_start FUN_020232BC
FUN_020232BC: ; 0x020232BC
push {r3-r7, lr}
sub sp, #0x8
add r7, r0, #0x0
mov r0, #0x1
add r5, r1, #0x0
add r6, r2, #0x0
bl FUN_02016444
ldr r0, _020233FC ; =UNK_020EE6D8
ldr r0, [r0, #0x0]
cmp r5, r0
blt _020232D8
bl ErrorHandling
_020232D8:
ldr r1, _02023400 ; =UNK_020EE6E0
lsl r0, r5, #0x4
add r4, r1, r0
ldr r0, [r1, r0]
cmp r0, r5
beq _020232E8
bl ErrorHandling
_020232E8:
ldr r0, [r4, #0x8]
blx r0
str r0, [sp, #0x4]
add r0, #0x10
str r0, [sp, #0x4]
ldr r0, _02023404 ; =0x000204A0
ldr r0, [r7, r0]
cmp r0, #0x1
ldr r0, [r4, #0x8]
bne _0202336E
blx r0
add r3, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
bl FUN_02023248
ldr r0, [r4, #0x4]
ldr r2, [sp, #0x4]
lsl r0, r0, #0xc
add r1, r6, #0x0
bl FUN_020235D0
str r0, [sp, #0x0]
ldr r0, [r4, #0x8]
blx r0
add r3, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
bl FUN_02023274
cmp r0, #0x1
beq _02023330
bl ErrorHandling
_02023330:
ldr r0, [r4, #0x8]
blx r0
add r3, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
bl FUN_02023248
ldr r0, [r4, #0x4]
ldr r2, [sp, #0x4]
add r0, #0x40
lsl r0, r0, #0xc
add r1, r6, #0x0
bl FUN_020235D0
ldr r1, [sp, #0x0]
orr r0, r1
str r0, [sp, #0x0]
ldr r0, [r4, #0x8]
blx r0
add r3, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
bl FUN_02023274
cmp r0, #0x1
beq _020233DE
bl ErrorHandling
b _020233DE
_0202336E:
blx r0
add r3, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
bl FUN_02023248
ldr r0, [r4, #0x4]
ldr r2, [sp, #0x4]
add r0, #0x40
lsl r0, r0, #0xc
add r1, r6, #0x0
bl FUN_020235D0
str r0, [sp, #0x0]
ldr r0, [r4, #0x8]
blx r0
add r3, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
bl FUN_02023274
cmp r0, #0x1
beq _020233A4
bl ErrorHandling
_020233A4:
ldr r0, [r4, #0x8]
blx r0
add r3, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
bl FUN_02023248
ldr r0, [r4, #0x4]
ldr r2, [sp, #0x4]
lsl r0, r0, #0xc
add r1, r6, #0x0
bl FUN_020235D0
ldr r1, [sp, #0x0]
orr r0, r1
str r0, [sp, #0x0]
ldr r0, [r4, #0x8]
blx r0
add r3, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
bl FUN_02023274
cmp r0, #0x1
beq _020233DE
bl ErrorHandling
_020233DE:
ldr r0, [sp, #0x0]
cmp r0, #0x1
bne _020233F0
mov r0, #0x1
bl FUN_02016454
add sp, #0x8
mov r0, #0x2
pop {r3-r7, pc}
_020233F0:
mov r0, #0x1
bl FUN_02016454
mov r0, #0x3
add sp, #0x8
pop {r3-r7, pc}
.balign 4
_020233FC: .word UNK_020EE6D8
_02023400: .word UNK_020EE6E0
_02023404: .word 0x000204A0
thumb_func_start FUN_02023408
FUN_02023408: ; 0x02023408
push {r4-r7, lr}
sub sp, #0x14
add r5, r0, #0x0
ldr r0, _02023564 ; =UNK_020EE6D8
add r7, r2, #0x0
ldr r0, [r0, #0x0]
add r6, r1, #0x0
str r3, [sp, #0x0]
cmp r7, r0
blt _02023420
bl ErrorHandling
_02023420:
ldr r1, _02023568 ; =UNK_020EE6E0
lsl r0, r7, #0x4
add r4, r1, r0
ldr r0, [r1, r0]
cmp r0, r7
beq _02023430
bl ErrorHandling
_02023430:
ldr r0, [r4, #0x8]
blx r0
str r0, [sp, #0x10]
add r0, #0x10
str r0, [sp, #0x10]
ldr r1, [sp, #0x10]
add r0, r6, #0x0
bl AllocFromHeap
add r6, r0, #0x0
ldr r0, [r4, #0x4]
ldr r2, [sp, #0x10]
lsl r0, r0, #0xc
add r1, r6, #0x0
bl FUN_020235EC
ldr r0, [r4, #0x8]
blx r0
add r3, r0, #0x0
add r0, r5, #0x0
add r1, r6, #0x0
add r2, r7, #0x0
bl FUN_02023274
str r0, [sp, #0xc]
ldr r0, [r4, #0x8]
blx r0
add r1, r0, #0x0
add r0, r6, #0x0
bl FUN_020232B4
str r0, [sp, #0x8]
ldr r0, [r4, #0x4]
ldr r2, [sp, #0x10]
add r0, #0x40
lsl r0, r0, #0xc
add r1, r6, #0x0
bl FUN_020235EC
ldr r0, [r4, #0x8]
blx r0
add r3, r0, #0x0
add r0, r5, #0x0
add r1, r6, #0x0
add r2, r7, #0x0
bl FUN_02023274
add r7, r0, #0x0
ldr r0, [r4, #0x8]
blx r0
add r1, r0, #0x0
add r0, r6, #0x0
bl FUN_020232B4
str r0, [sp, #0x4]
ldr r0, [sp, #0x0]
mov r1, #0x1
str r1, [r0, #0x0]
ldr r0, [sp, #0xc]
cmp r0, #0x1
bne _020234CC
cmp r7, #0x0
bne _020234CC
ldr r0, _0202356C ; =0x000204A0
mov r1, #0x0
str r1, [r5, r0]
add r1, r0, #0x4
ldr r0, [sp, #0x8]
ldr r2, [sp, #0x10]
str r0, [r5, r1]
ldr r0, [r4, #0x4]
add r1, r6, #0x0
lsl r0, r0, #0xc
bl FUN_020235EC
add sp, #0x14
add r0, r6, #0x0
pop {r4-r7, pc}
_020234CC:
ldr r0, [sp, #0xc]
cmp r0, #0x0
bne _020234F6
cmp r7, #0x1
bne _020234F6
ldr r0, _0202356C ; =0x000204A0
mov r1, #0x1
str r1, [r5, r0]
add r1, r0, #0x4
ldr r0, [sp, #0x4]
ldr r2, [sp, #0x10]
str r0, [r5, r1]
ldr r0, [r4, #0x4]
add r1, r6, #0x0
add r0, #0x40
lsl r0, r0, #0xc
bl FUN_020235EC
add sp, #0x14
add r0, r6, #0x0
pop {r4-r7, pc}
_020234F6:
ldr r0, [sp, #0xc]
cmp r0, #0x1
bne _0202354C
cmp r7, #0x1
bne _0202354C
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x4]
bl FUN_020229B8
mov r1, #0x0
mvn r1, r1
cmp r0, r1
ldr r0, _0202356C ; =0x000204A0
beq _0202352E
mov r1, #0x0
str r1, [r5, r0]
add r1, r0, #0x4
ldr r0, [sp, #0x8]
ldr r2, [sp, #0x10]
str r0, [r5, r1]
ldr r0, [r4, #0x4]
add r1, r6, #0x0
lsl r0, r0, #0xc
bl FUN_020235EC
add sp, #0x14
add r0, r6, #0x0
pop {r4-r7, pc}
_0202352E:
mov r1, #0x1
str r1, [r5, r0]
add r1, r0, #0x4
ldr r0, [sp, #0x4]
ldr r2, [sp, #0x10]
str r0, [r5, r1]
ldr r0, [r4, #0x4]
add r1, r6, #0x0
add r0, #0x40
lsl r0, r0, #0xc
bl FUN_020235EC
add sp, #0x14
add r0, r6, #0x0
pop {r4-r7, pc}
_0202354C:
ldr r0, [sp, #0x0]
mov r1, #0x2
str r1, [r0, #0x0]
ldr r0, _0202356C ; =0x000204A0
mov r1, #0x0
str r1, [r5, r0]
add r0, r0, #0x4
str r1, [r5, r0]
add r0, r6, #0x0
add sp, #0x14
pop {r4-r7, pc}
nop
_02023564: .word UNK_020EE6D8
_02023568: .word UNK_020EE6E0
_0202356C: .word 0x000204A0
thumb_func_start FUN_02023570
FUN_02023570: ; 0x02023570
push {r3-r5, lr}
bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
cmp r4, r0
bne _02023584
bl ErrorHandling
_02023584:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
bl CARD_LockBackup
ldr r0, _020235C8 ; =0x00001302
bl CARD_IdentifyBackup
cmp r0, #0x0
beq _0202359A
ldr r5, _020235C8 ; =0x00001302
b _020235AA
_0202359A:
ldr r0, _020235CC ; =0x00001202
bl CARD_IdentifyBackup
cmp r0, #0x0
beq _020235A8
ldr r5, _020235CC ; =0x00001202
b _020235AA
_020235A8:
mov r5, #0x0
_020235AA:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
bl CARD_UnlockBackup
lsl r0, r4, #0x10
lsr r0, r0, #0x10
bl OS_ReleaseLockID
cmp r5, #0x0
beq _020235C2
mov r0, #0x1
pop {r3-r5, pc}
_020235C2:
mov r0, #0x0
pop {r3-r5, pc}
nop
_020235C8: .word 0x00001302
_020235CC: .word 0x00001202
thumb_func_start FUN_020235D0
FUN_020235D0: ; 0x020235D0
push {r3-r5, lr}
bl FUN_02023668
add r5, r0, #0x0
add r4, sp, #0x0
_020235DA:
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_020236E4
cmp r0, #0x0
beq _020235DA
ldr r0, [sp, #0x0]
pop {r3-r5, pc}
.balign 4
thumb_func_start FUN_020235EC
FUN_020235EC: ; 0x020235EC
push {r4-r7, lr}
sub sp, #0x14
add r5, r0, #0x0
add r6, r1, #0x0
add r7, r2, #0x0
bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
cmp r4, r0
bne _02023608
bl ErrorHandling
_02023608:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
bl CARD_LockBackup
mov r3, #0x0
str r3, [sp, #0x0]
mov r1, #0x1
str r1, [sp, #0x4]
mov r0, #0x6
str r0, [sp, #0x8]
str r1, [sp, #0xc]
add r0, r5, #0x0
add r1, r6, #0x0
add r2, r7, #0x0
str r3, [sp, #0x10]
bl CARDi_RequestStreamCommand
bl CARD_WaitBackupAsync
add r5, r0, #0x0
lsl r0, r4, #0x10
lsr r0, r0, #0x10
bl CARD_UnlockBackup
lsl r0, r4, #0x10
lsr r0, r0, #0x10
bl OS_ReleaseLockID
cmp r5, #0x0
bne _02023652
ldr r0, _02023658 ; =UNK_021C59C8
ldr r0, [r0, #0x0]
bl FreeToHeap
mov r0, #0x1
bl FUN_02089D90
_02023652:
add r0, r5, #0x0
add sp, #0x14
pop {r4-r7, pc}
.balign 4
_02023658: .word UNK_021C59C8
thumb_func_start FUN_0202365C
FUN_0202365C: ; 0x0202365C
ldr r0, _02023664 ; =UNK_021C59C8
mov r1, #0x1
str r1, [r0, #0x4]
bx lr
.balign 4
_02023664: .word UNK_021C59C8
thumb_func_start FUN_02023668
FUN_02023668: ; 0x02023668
push {r3-r7, lr}
sub sp, #0x18
add r5, r0, #0x0
add r6, r1, #0x0
add r7, r2, #0x0
bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
cmp r4, r0
bne _02023684
bl ErrorHandling
_02023684:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
bl CARD_LockBackup
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
mov r1, #0x6
str r1, [sp, #0x8]
mov r1, #0x1
str r1, [sp, #0xc]
add r1, sp, #0x14
mov r2, #0x4
add r3, r0, #0x0
str r0, [sp, #0x10]
bl CARDi_RequestStreamCommand
cmp r0, #0x0
bne _020236B2
add r0, r4, #0x0
mov r1, #0x1
bl FUN_02023740
_020236B2:
ldr r0, _020236DC ; =UNK_021C59C8
mov r1, #0x0
str r1, [r0, #0x4]
str r1, [sp, #0x0]
mov r0, #0x1
str r0, [sp, #0x4]
mov r0, #0x7
str r0, [sp, #0x8]
mov r0, #0xa
str r0, [sp, #0xc]
mov r0, #0x2
str r0, [sp, #0x10]
ldr r3, _020236E0 ; =FUN_0202365C
add r0, r6, #0x0
add r1, r5, #0x0
add r2, r7, #0x0
bl CARDi_RequestStreamCommand
add r0, r4, #0x0
add sp, #0x18
pop {r3-r7, pc}
.balign 4
_020236DC: .word UNK_021C59C8
_020236E0: .word FUN_0202365C
thumb_func_start FUN_020236E4
FUN_020236E4: ; 0x020236E4
push {r3-r5, lr}
add r5, r0, #0x0
ldr r0, _0202373C ; =UNK_021C59C8
add r4, r1, #0x0
ldr r0, [r0, #0x4]
cmp r0, #0x1
bne _02023738
lsl r0, r5, #0x10
lsr r0, r0, #0x10
bl CARD_UnlockBackup
lsl r0, r5, #0x10
lsr r0, r0, #0x10
bl OS_ReleaseLockID
bl CARD_GetResultCode
cmp r0, #0x0
beq _02023714
cmp r0, #0x4
beq _0202371E
cmp r0, #0x6
beq _02023728
b _0202371A
_02023714:
mov r0, #0x1
str r0, [r4, #0x0]
b _02023734
_0202371A:
bl ErrorHandling
_0202371E:
mov r1, #0x0
add r0, r5, #0x0
str r1, [r4, #0x0]
bl FUN_02023740
_02023728:
mov r0, #0x0
str r0, [r4, #0x0]
add r0, r5, #0x0
mov r1, #0x1
bl FUN_02023740
_02023734:
mov r0, #0x1
pop {r3-r5, pc}
_02023738:
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
_0202373C: .word UNK_021C59C8
thumb_func_start FUN_02023740
FUN_02023740: ; 0x02023740
push {r3-r5, lr}
add r5, r0, #0x0
lsl r0, r5, #0x10
lsr r0, r0, #0x10
add r4, r1, #0x0
bl CARD_UnlockBackup
lsl r0, r5, #0x10
lsr r0, r0, #0x10
bl OS_ReleaseLockID
ldr r0, _02023768 ; =UNK_021C59C8
ldr r0, [r0, #0x0]
bl FreeToHeap
mov r0, #0x1
add r1, r4, #0x0
bl FUN_0208A0B8
pop {r3-r5, pc}
.balign 4
_02023768: .word UNK_021C59C8