summaryrefslogtreecommitdiff
path: root/arm9/asm/save.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/asm/save.s')
-rw-r--r--arm9/asm/save.s2478
1 files changed, 0 insertions, 2478 deletions
diff --git a/arm9/asm/save.s b/arm9/asm/save.s
deleted file mode 100644
index a29733dc..00000000
--- a/arm9/asm/save.s
+++ /dev/null
@@ -1,2478 +0,0 @@
- .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, Sav2_PlayerData_sizeof, Sav2_PlayerData_init
- .word 0x02, 0x00, SavArray_Party_sizeof, SavArray_Party_init
- .word 0x03, 0x00, Sav2_Bag_sizeof, Sav2_Bag_init
- .word 0x04, 0x00, SavArray_Flags_sizeof, SavArray_Flags_init
- .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, PCStorage_sizeof, PCStorage_init
-
- .section .bss
-
- .global UNK_021C59C8
-UNK_021C59C8: ; 0x021C59C8
- .space 0x8
-
- .text
-
- thumb_func_start SaveBlock2_new
-SaveBlock2_new: ; 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 SaveDetectFlash
- 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 SaveBlock2_InitSubstructs
- 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 Sav2_InitDynamicRegion
-_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 SavArray_get
-SavArray_get: ; 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 ; =SavArray_get
- bx r3
- .balign 4
-_02022638: .word SavArray_get
-
- 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 FlashClobberChunkFooter
- 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 FlashClobberChunkFooter
- ldr r0, [sp, #0x0]
- ldr r3, _020226F4 ; =0x00020220
- add r2, r0, #0x0
- ldrb r2, [r2, r3]
- mov r1, #0x0
- bl FlashClobberChunkFooter
- ldr r0, [sp, #0x0]
- ldr r3, _020226F8 ; =0x00020221
- add r2, r0, #0x0
- ldrb r2, [r2, r3]
- mov r1, #0x1
- bl FlashClobberChunkFooter
- 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 FlashWriteChunk
- add r0, r4, #0x0
- add r0, #0x40
- lsl r0, r0, #0xc
- add r1, r6, #0x0
- add r2, r7, #0x0
- bl FlashWriteChunk
- 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 Sav2_InitDynamicRegion
- 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 FlashClobberChunkFooter
- 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 FlashClobberChunkFooter
- ldr r2, _02022798 ; =0x00020220
- add r0, r4, #0x0
- ldrb r2, [r4, r2]
- mov r1, #0x0
- bl FlashClobberChunkFooter
- ldr r2, _0202279C ; =0x00020221
- add r0, r4, #0x0
- ldrb r2, [r4, r2]
- mov r1, #0x1
- bl FlashClobberChunkFooter
- 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 Sav2_InitDynamicRegion
-Sav2_InitDynamicRegion: ; 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 ; =Sav2_InitDynamicRegion_Internal
- add r0, r2, r0
- add r1, r2, r1
- bx r3
- nop
-_020227F4: .word 0x00020224
-_020227F8: .word Sav2_InitDynamicRegion_Internal
-
- 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 SaveGetDirtyBit
-SaveGetDirtyBit: ; 0x0202282C
- ldr r0, [r0, #0xc]
- bx lr
-
- thumb_func_start SaveSetDirtyBit
-SaveSetDirtyBit: ; 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 GetChunkOffsetFromCurrentSaveSlot
-GetChunkOffsetFromCurrentSaveSlot: ; 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 FlashLoadChunk
- 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 FlashLoadChunk
- 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 GetChunkOffsetFromCurrentSaveSlot
- ldr r1, [r5, #0x4]
- ldr r2, [r5, #0x8]
- add r1, r4, r1
- bl FlashLoadChunk
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02022D08
-FUN_02022D08: ; 0x02022D08
- ; BOOL FUN_02022D08(struct SaveBlock2 * sav2) {
- push {r3-r7, lr}
- add r5, r0, #0x0
- ldr r0, _02022D4C ; =0x00020464 ; unk_20464
- mov r7, #0x85 ; dynamic_region
- mov r4, #0x0
- add r6, r5, r0
- lsl r7, r7, #0x2 ; dynamic_region
-_02022D16: ; for (int i = 0; i < 2; i++) {
- ldr r0, _02022D50 ; =0x00020220 ; unk_20220
- add r1, r5, r4
- ldrb r0, [r1, r0]
- add r1, r6, #0x0
- add r2, r5, r7
- bl FUN_02022CF0 ; if (!FUN_02022CF0(sav2->unk_20220[i], &sav2->unk_20464[i], sav2->dynamic_region)) return FALSE;
- 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 ; if (!FUN_020228E0(sav2, sav2->dynamic_region, i)) return FALSE;
- 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 ; return TRUE; }
- 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 GetChunkOffsetFromCurrentSaveSlot
- 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 FlashWriteChunkInternal
- 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 GetChunkOffsetFromCurrentSaveSlot
- 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 FlashWriteChunkInternal
- 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 GetChunkOffsetFromCurrentSaveSlot
- 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 FlashWriteChunkInternal
- 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 WaitFlashWrite
- 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 WaitFlashWrite
- 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 WaitFlashWrite
- 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 FlashClobberChunkFooter
-FlashClobberChunkFooter: ; 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 GetChunkOffsetFromCurrentSaveSlot
- ldr r1, [r5, #0x8]
- mov r2, #0x14
- add r0, r1, r0
- sub r0, #0x14
- add r1, sp, #0x0
- bl FlashWriteChunk
- add sp, #0x14
- pop {r4-r5, pc}
- .balign 4
-_020230A8: .word 0x00020464
-
- thumb_func_start SavArray_sizeof
-SavArray_sizeof: ; 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 SaveBlock2_InitSubstructs
-SaveBlock2_InitSubstructs: ; 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 SavArray_sizeof
- 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 Sav2_InitDynamicRegion_Internal
-Sav2_InitDynamicRegion_Internal: ; 0x020231F4
- ; r0: &sav2->dynamic_region
- ; r1: &sav2->arraySpecs
- 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 CreateChunkFooter
-CreateChunkFooter: ; 0x02023248
- ; void CreateChunkFooter(struct SaveBlock2 * sav2, void * data, u16 id, u32 size)
- 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 ValidateChunk
-ValidateChunk: ; 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 WriteSaveFileToFlash
-WriteSaveFileToFlash: ; 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 CreateChunkFooter
- ldr r0, [r4, #0x4]
- ldr r2, [sp, #0x4]
- lsl r0, r0, #0xc
- add r1, r6, #0x0
- bl FlashWriteChunk
- 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 ValidateChunk
- 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 CreateChunkFooter
- ldr r0, [r4, #0x4]
- ldr r2, [sp, #0x4]
- add r0, #0x40
- lsl r0, r0, #0xc
- add r1, r6, #0x0
- bl FlashWriteChunk
- 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 ValidateChunk
- 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 CreateChunkFooter
- ldr r0, [r4, #0x4]
- ldr r2, [sp, #0x4]
- add r0, #0x40
- lsl r0, r0, #0xc
- add r1, r6, #0x0
- bl FlashWriteChunk
- 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 ValidateChunk
- 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 CreateChunkFooter
- ldr r0, [r4, #0x4]
- ldr r2, [sp, #0x4]
- lsl r0, r0, #0xc
- add r1, r6, #0x0
- bl FlashWriteChunk
- 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 ValidateChunk
- 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 ReadSaveFileFromFlash
-ReadSaveFileFromFlash: ; 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 FlashLoadChunk
- ldr r0, [r4, #0x8]
- blx r0
- add r3, r0, #0x0
- add r0, r5, #0x0
- add r1, r6, #0x0
- add r2, r7, #0x0
- bl ValidateChunk
- 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 FlashLoadChunk
- ldr r0, [r4, #0x8]
- blx r0
- add r3, r0, #0x0
- add r0, r5, #0x0
- add r1, r6, #0x0
- add r2, r7, #0x0
- bl ValidateChunk
- 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 FlashLoadChunk
- 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 FlashLoadChunk
- 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 FlashLoadChunk
- 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 FlashLoadChunk
- 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 SaveDetectFlash
-SaveDetectFlash: ; 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 FlashWriteChunk
-FlashWriteChunk: ; 0x020235D0
- push {r3-r5, lr}
- bl FlashWriteChunkInternal
- add r5, r0, #0x0
- add r4, sp, #0x0
-_020235DA:
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl WaitFlashWrite
- cmp r0, #0x0
- beq _020235DA
- ldr r0, [sp, #0x0]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FlashLoadChunk
-FlashLoadChunk: ; 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 ; CARD_REQ_READ_BACKUP
- 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 FlashWriteCommandCallback
-FlashWriteCommandCallback: ; 0x0202365C
- ldr r0, _02023664 ; =UNK_021C59C8
- mov r1, #0x1
- str r1, [r0, #0x4]
- bx lr
- .balign 4
-_02023664: .word UNK_021C59C8
-
- thumb_func_start FlashWriteChunkInternal
-FlashWriteChunkInternal: ; 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 ; CARD_REQ_READ_BACKUP
- 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 SaveErrorHandling
-_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 ; CARD_REQ_WRITE_BACKUP
- str r0, [sp, #0x8]
- mov r0, #0xa
- str r0, [sp, #0xc]
- mov r0, #0x2
- str r0, [sp, #0x10]
- ldr r3, _020236E0 ; =FlashWriteCommandCallback
- 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 FlashWriteCommandCallback
-
- thumb_func_start WaitFlashWrite
-WaitFlashWrite: ; 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 SaveErrorHandling
-_02023728:
- mov r0, #0x0
- str r0, [r4, #0x0]
- add r0, r5, #0x0
- mov r1, #0x1
- bl SaveErrorHandling
-_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 SaveErrorHandling
-SaveErrorHandling: ; 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