mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-20 07:44:54 -05:00
2475 lines
43 KiB
ArmAsm
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
|