1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
.include "asm/macros.inc"
.include "global.inc"
.extern UNK_02103FE8
.extern UNK_021D6B14
.extern UNK_021D6B30
.extern UNK_021D6B28
.extern UNK_021D6B1C
.extern UNK_021D6B24
.extern UNK_021D6B20
.extern UNK_021D6B4C
.extern UNK_021D6B0C
.extern UNK_02103FE4
.extern UNK_02103FF4
.extern UNK_021D6B34
.extern UNK_021D6B2C
.extern UNK_021D6B18
.text
arm_func_start CTRDG_IdentifyAgbBackup
CTRDG_IdentifyAgbBackup: ; 0x020DBD50
stmdb sp!, {r4-r7,lr}
sub sp, sp, #0x4
mov r7, r0
cmp r7, #0x1
mov r0, #0x1
bhi _020DBEAC
bl OS_GetLockID
ldr r1, _020DBED8 ; =UNK_021D6B0C
strh r0, [r1, #0x0]
ldrh r0, [r1, #0x0]
bl OS_LockCartridge
ldr r6, _020DBEDC ; =0x04000204
ldr r1, _020DBEE0 ; =UNK_02103FE4
ldrh r3, [r6, #0x0]
ldrh r2, [r6, #0x0]
ldr r0, _020DBEE4 ; =UNK_021D6B28
and r4, r3, #0x3
bic r2, r2, #0x3
orr r2, r2, #0x3
strh r2, [r6, #0x0]
str r1, [r0, #0x0]
bl CTRDGi_ReadFlashID
ldr r2, _020DBEDC ; =0x04000204
mov r6, r0
ldrh r1, [r2, #0x0]
cmp r7, #0x0
ldreq r5, _020DBEE8 ; =UNK_02103FF4
bic r1, r1, #0x3
orr r1, r1, r4
cmp r7, #0x1
ldr r0, _020DBED8 ; =UNK_021D6B0C
strh r1, [r2, #0x0]
ldrh r0, [r0, #0x0]
ldreq r5, _020DBEEC ; =UNK_02103FE8
bl OS_UnlockCartridge2
ldr r2, [r5, #0x0]
mov r0, #0x1
ldrh r1, [r2, #0x38]
cmp r1, #0x0
beq _020DBE14
and r3, r6, #0xff
_020DBDF4:
ldrh r1, [r2, #0x38]
cmp r3, r1
moveq r0, #0x0
beq _020DBE14
ldr r2, [r5, #0x4]!
ldrh r1, [r2, #0x38]
cmp r1, #0x0
bne _020DBDF4
_020DBE14:
ldr r2, [r2, #0x0]
ldr r1, _020DBEF0 ; =UNK_021D6B14
ldr r3, _020DBEF4 ; =UNK_021D6B34
str r2, [r1, #0x0]
ldr r1, [r5, #0x0]
ldr r2, _020DBEF8 ; =UNK_021D6B2C
ldr r4, [r1, #0x4]
ldr r1, _020DBEFC ; =UNK_021D6B18
str r4, [r3, #0x0]
ldr r3, [r5, #0x0]
ldr r6, _020DBF00 ; =UNK_021D6B1C
ldr r3, [r3, #0x8]
ldr r4, _020DBF04 ; =UNK_021D6B30
str r3, [r2, #0x0]
ldr r2, [r5, #0x0]
ldr r3, _020DBF08 ; =UNK_021D6B24
ldr r7, [r2, #0xc]
ldr r2, _020DBEE4 ; =UNK_021D6B28
str r7, [r1, #0x0]
ldr r7, [r5, #0x0]
ldr r1, _020DBF0C ; =UNK_021D6B20
ldr r7, [r7, #0x10]
add sp, sp, #0x4
str r7, [r6, #0x0]
ldr r6, [r5, #0x0]
ldr r6, [r6, #0x14]
str r6, [r4, #0x0]
ldr r4, [r5, #0x0]
ldr r4, [r4, #0x18]
str r4, [r3, #0x0]
ldr r3, [r5, #0x0]
ldr r3, [r3, #0x1c]
str r3, [r2, #0x0]
ldr r2, [r5, #0x0]
add r2, r2, #0x20
str r2, [r1, #0x0]
ldmia sp!, {r4-r7,lr}
bx lr
_020DBEAC:
cmp r7, #0x2
addne sp, sp, #0x4
ldmneia sp!, {r4-r7,lr}
bxne lr
bl OS_GetLockID
ldr r1, _020DBF10 ; =UNK_021D6B4C
strh r0, [r1, #0x0]
mov r0, #0x0
add sp, sp, #0x4
ldmia sp!, {r4-r7,lr}
bx lr
.balign 4
_020DBED8: .word UNK_021D6B0C
_020DBEDC: .word 0x04000204
_020DBEE0: .word UNK_02103FE4
_020DBEE4: .word UNK_021D6B28
_020DBEE8: .word UNK_02103FF4
_020DBEEC: .word UNK_02103FE8
_020DBEF0: .word UNK_021D6B14
_020DBEF4: .word UNK_021D6B34
_020DBEF8: .word UNK_021D6B2C
_020DBEFC: .word UNK_021D6B18
_020DBF00: .word UNK_021D6B1C
_020DBF04: .word UNK_021D6B30
_020DBF08: .word UNK_021D6B24
_020DBF0C: .word UNK_021D6B20
_020DBF10: .word UNK_021D6B4C
|