summaryrefslogtreecommitdiff
path: root/arm9/asm/unk_02029AE0.s
blob: 68c9a3c8a938d572072eab2890eca9a8499f755d (plain)
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
	.include "asm/macros.inc"
	.include "global.inc"

	.text

	thumb_func_start FUN_02029AE0
FUN_02029AE0: ; 0x02029AE0
	ldr r0, _02029AE4 ; =0x00000FF8
	bx lr
	.balign 4
_02029AE4: .word 0x00000FF8

	thumb_func_start FUN_02029AE8
FUN_02029AE8: ; 0x02029AE8
	ldr r3, _02029AF4 ; =MIi_CpuClear32
	add r1, r0, #0x0
	mov r0, #0x0
	ldr r2, _02029AF8 ; =0x00000FF8
	bx r3
	nop
_02029AF4: .word MIi_CpuClear32
_02029AF8: .word 0x00000FF8

	thumb_func_start FUN_02029AFC
FUN_02029AFC: ; 0x02029AFC
	ldr r3, _02029B04 ; =SavArray_get
	mov r1, #0x1e
	bx r3
	nop
_02029B04: .word SavArray_get

	thumb_func_start FUN_02029B08
FUN_02029B08: ; 0x02029B08
	push {r4-r6, lr}
	add r6, r0, #0x0
	mov r0, #0x1
	add r5, r1, #0x0
	lsl r0, r0, #0x8
	add r4, r2, #0x0
	cmp r5, r0
	blt _02029B1C
	bl GF_AssertFail
_02029B1C:
	cmp r4, #0x40
	blt _02029B24
	bl GF_AssertFail
_02029B24:
	strb r5, [r6, #0x5]
	add r0, r6, #0x0
	add r1, r5, #0x0
	add r2, r4, #0x0
	mov r3, #0x3
	strb r4, [r6, #0x6]
	bl FUN_02029B90
	pop {r4-r6, pc}
	.balign 4

	thumb_func_start FUN_02029B38
FUN_02029B38: ; 0x02029B38
	ldrb r0, [r0, #0x5]
	bx lr

	thumb_func_start FUN_02029B3C
FUN_02029B3C: ; 0x02029B3C
	ldrb r0, [r0, #0x6]
	bx lr

	thumb_func_start FUN_02029B40
FUN_02029B40: ; 0x02029B40
	push {r4-r6, lr}
	add r6, r0, #0x0
	mov r0, #0x1
	add r5, r1, #0x0
	lsl r0, r0, #0x8
	add r4, r2, #0x0
	cmp r5, r0
	blt _02029B54
	bl GF_AssertFail
_02029B54:
	cmp r4, #0x40
	blt _02029B5C
	bl GF_AssertFail
_02029B5C:
	cmp r5, #0x0
	bne _02029B64
	mov r0, #0x0
	pop {r4-r6, pc}
_02029B64:
	asr r0, r4, #0x1
	lsr r0, r0, #0x1e
	add r0, r4, r0
	asr r1, r0, #0x2
	sub r0, r5, #0x1
	lsl r0, r0, #0x4
	add r0, r1, r0
	add r0, r6, r0
	ldrb r3, [r0, #0x7]
	lsr r2, r4, #0x1f
	lsl r1, r4, #0x1e
	sub r1, r1, r2
	mov r0, #0x1e
	ror r1, r0
	add r0, r2, r1
	lsl r0, r0, #0x1
	add r1, r3, #0x0
	asr r1, r0
	mov r0, #0x3
	and r0, r1
	pop {r4-r6, pc}
	.balign 4

	thumb_func_start FUN_02029B90
FUN_02029B90: ; 0x02029B90
	push {r3-r7, lr}
	add r7, r0, #0x0
	add r5, r1, #0x0
	add r4, r2, #0x0
	str r3, [sp, #0x0]
	cmp r3, #0x4
	blt _02029BA2
	bl GF_AssertFail
_02029BA2:
	mov r0, #0x1
	lsl r0, r0, #0x8
	cmp r5, r0
	blt _02029BAE
	bl GF_AssertFail
_02029BAE:
	cmp r4, #0x40
	blt _02029BB6
	bl GF_AssertFail
_02029BB6:
	cmp r5, #0x0
	beq _02029BFE
	asr r0, r4, #0x1
	lsr r0, r0, #0x1e
	add r0, r4, r0
	asr r2, r0, #0x2
	sub r0, r5, #0x1
	lsl r0, r0, #0x4
	add r0, r2, r0
	lsr r2, r4, #0x1f
	lsl r4, r4, #0x1e
	sub r4, r4, r2
	mov r3, #0x1e
	ror r4, r3
	add r2, r2, r4
	lsl r6, r2, #0x1
	mov r2, #0x3
	add r3, r2, #0x0
	add r1, r7, #0x7
	ldrb r4, [r1, r0]
	lsl r3, r6
	mov r2, #0xff
	eor r2, r3
	and r2, r4
	ldr r3, [sp, #0x0]
	strb r2, [r1, r0]
	ldrb r2, [r1, r0]
	lsl r3, r6
	orr r2, r3
	strb r2, [r1, r0]
	cmp r5, #0x67
	beq _02029BFE
	add r0, r7, #0x0
	mov r1, #0x1
	bl FUN_02029C04
_02029BFE:
	pop {r3-r7, pc}

	thumb_func_start FUN_02029C00
FUN_02029C00: ; 0x02029C00
	ldrb r0, [r0, #0x4]
	bx lr

	thumb_func_start FUN_02029C04
FUN_02029C04: ; 0x02029C04
	strb r1, [r0, #0x4]
	bx lr

	thumb_func_start FUN_02029C08
FUN_02029C08: ; 0x02029C08
	push {r3-r7, lr}
	mov lr, r0
	mov r0, #0x3
	mov r7, #0x0
	mov r4, #0x2
	mov r6, #0xff
	add r3, r0, #0x0
_02029C16:
	mov r1, lr
	add r1, r1, r7
	ldrb r2, [r1, #0x7]
	mov r12, r1
	mov r1, #0x0
_02029C20:
	add r5, r2, #0x0
	asr r5, r1
	and r5, r3
	cmp r5, #0x1
	bne _02029C40
	add r5, r0, #0x0
	lsl r5, r1
	eor r5, r6
	and r2, r5
	lsl r2, r2, #0x18
	lsr r5, r2, #0x18
	add r2, r4, #0x0
	lsl r2, r1
	orr r2, r5
	lsl r2, r2, #0x18
	lsr r2, r2, #0x18
_02029C40:
	add r1, r1, #0x2
	cmp r1, #0x8
	blt _02029C20
	mov r1, r12
	strb r2, [r1, #0x7]
	mov r1, #0xff
	add r7, r7, #0x1
	lsl r1, r1, #0x4
	cmp r7, r1
	blt _02029C16
	pop {r3-r7, pc}
	.balign 4