summaryrefslogtreecommitdiff
path: root/asm/code_80223C54.s
blob: fbc4289f2944261b9fc21de9803ccc314694acf8 (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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global func_80223C54
func_80223C54:
/* 80223C54 0021F8B4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80223C58 0021F8B8  7C 08 02 A6 */	mflr r0
/* 80223C5C 0021F8BC  90 01 00 24 */	stw r0, 0x24(r1)
/* 80223C60 0021F8C0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80223C64 0021F8C4  3F E0 88 89 */	lis r31, 0x8889
/* 80223C68 0021F8C8  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80223C6C 0021F8CC  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80223C70 0021F8D0  7C 7D 1B 78 */	mr r29, r3
/* 80223C74 0021F8D4  80 8D A3 2C */	lwz r4, lbl_8063F5EC-_SDA_BASE_(r13)
/* 80223C78 0021F8D8  48 00 00 68 */	b lbl_80223CE0
lbl_80223C7C:
/* 80223C7C 0021F8DC  80 04 00 08 */	lwz r0, 8(r4)
/* 80223C80 0021F8E0  83 C4 00 04 */	lwz r30, 4(r4)
/* 80223C84 0021F8E4  7C 00 E8 00 */	cmpw r0, r29
/* 80223C88 0021F8E8  40 82 00 54 */	bne lbl_80223CDC
/* 80223C8C 0021F8EC  88 04 00 11 */	lbz r0, 0x11(r4)
/* 80223C90 0021F8F0  2C 00 00 00 */	cmpwi r0, 0
/* 80223C94 0021F8F4  40 82 00 48 */	bne lbl_80223CDC
/* 80223C98 0021F8F8  88 0D A3 20 */	lbz r0, lbl_8063F5E0-_SDA_BASE_(r13)
/* 80223C9C 0021F8FC  2C 00 00 00 */	cmpwi r0, 0
/* 80223CA0 0021F900  41 82 00 10 */	beq lbl_80223CB0
/* 80223CA4 0021F904  80 04 00 0C */	lwz r0, 0xc(r4)
/* 80223CA8 0021F908  2C 00 00 00 */	cmpwi r0, 0
/* 80223CAC 0021F90C  40 82 00 30 */	bne lbl_80223CDC
lbl_80223CB0:
/* 80223CB0 0021F910  80 0D A3 10 */	lwz r0, lbl_8063F5D0-_SDA_BASE_(r13)
/* 80223CB4 0021F914  38 7F 88 89 */	addi r3, r31, -30583
/* 80223CB8 0021F918  90 8D A3 28 */	stw r4, lbl_8063F5E8-_SDA_BASE_(r13)
/* 80223CBC 0021F91C  7C 00 20 50 */	subf r0, r0, r4
/* 80223CC0 0021F920  7C 03 00 16 */	mulhwu r0, r3, r0
/* 80223CC4 0021F924  81 84 00 38 */	lwz r12, 0x38(r4)
/* 80223CC8 0021F928  80 84 00 34 */	lwz r4, 0x34(r4)
/* 80223CCC 0021F92C  54 03 D9 7E */	srwi r3, r0, 5
/* 80223CD0 0021F930  38 63 00 01 */	addi r3, r3, 1
/* 80223CD4 0021F934  7D 89 03 A6 */	mtctr r12
/* 80223CD8 0021F938  4E 80 04 21 */	bctrl
lbl_80223CDC:
/* 80223CDC 0021F93C  7F C4 F3 78 */	mr r4, r30
lbl_80223CE0:
/* 80223CE0 0021F940  2C 04 00 00 */	cmpwi r4, 0
/* 80223CE4 0021F944  40 82 FF 98 */	bne lbl_80223C7C
/* 80223CE8 0021F948  38 00 00 00 */	li r0, 0
/* 80223CEC 0021F94C  90 0D A3 28 */	stw r0, lbl_8063F5E8-_SDA_BASE_(r13)
/* 80223CF0 0021F950  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80223CF4 0021F954  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80223CF8 0021F958  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80223CFC 0021F95C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80223D00 0021F960  7C 08 03 A6 */	mtlr r0
/* 80223D04 0021F964  38 21 00 20 */	addi r1, r1, 0x20
/* 80223D08 0021F968  4E 80 00 20 */	blr
lbl_80223D0C:
/* 80223D0C 0021F96C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80223D10 0021F970  7C 08 02 A6 */	mflr r0
/* 80223D14 0021F974  90 01 00 14 */	stw r0, 0x14(r1)
/* 80223D18 0021F978  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80223D1C 0021F97C  7C 7F 1B 78 */	mr r31, r3
/* 80223D20 0021F980  38 60 00 03 */	li r3, 3
/* 80223D24 0021F984  4B FF FF 31 */	bl func_80223C54
/* 80223D28 0021F988  81 8D A3 34 */	lwz r12, lbl_8063F5F4-_SDA_BASE_(r13)
/* 80223D2C 0021F98C  2C 0C 00 00 */	cmpwi r12, 0
/* 80223D30 0021F990  41 82 00 10 */	beq lbl_80223D40
/* 80223D34 0021F994  7F E3 FB 78 */	mr r3, r31
/* 80223D38 0021F998  7D 89 03 A6 */	mtctr r12
/* 80223D3C 0021F99C  4E 80 04 21 */	bctrl
lbl_80223D40:
/* 80223D40 0021F9A0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80223D44 0021F9A4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80223D48 0021F9A8  7C 08 03 A6 */	mtlr r0
/* 80223D4C 0021F9AC  38 21 00 10 */	addi r1, r1, 0x10
/* 80223D50 0021F9B0  4E 80 00 20 */	blr
lbl_80223D54:
/* 80223D54 0021F9B4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80223D58 0021F9B8  7C 08 02 A6 */	mflr r0
/* 80223D5C 0021F9BC  90 01 00 24 */	stw r0, 0x24(r1)
/* 80223D60 0021F9C0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80223D64 0021F9C4  3B E0 00 00 */	li r31, 0
/* 80223D68 0021F9C8  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80223D6C 0021F9CC  93 A1 00 14 */	stw r29, 0x14(r1)
lbl_80223D70:
/* 80223D70 0021F9D0  38 60 00 02 */	li r3, 2
/* 80223D74 0021F9D4  4B FF FE E1 */	bl func_80223C54
/* 80223D78 0021F9D8  48 04 A9 E5 */	bl OSDisableInterrupts
/* 80223D7C 0021F9DC  80 8D A3 30 */	lwz r4, lbl_8063F5F0-_SDA_BASE_(r13)
/* 80223D80 0021F9E0  7C 7D 1B 78 */	mr r29, r3
/* 80223D84 0021F9E4  48 00 00 14 */	b lbl_80223D98
lbl_80223D88:
/* 80223D88 0021F9E8  83 C4 00 04 */	lwz r30, 4(r4)
/* 80223D8C 0021F9EC  7C 83 23 78 */	mr r3, r4
/* 80223D90 0021F9F0  48 00 00 71 */	bl func_80223E00
/* 80223D94 0021F9F4  7F C4 F3 78 */	mr r4, r30
lbl_80223D98:
/* 80223D98 0021F9F8  2C 04 00 00 */	cmpwi r4, 0
/* 80223D9C 0021F9FC  40 82 FF EC */	bne lbl_80223D88
/* 80223DA0 0021FA00  93 ED A3 30 */	stw r31, lbl_8063F5F0-_SDA_BASE_(r13)
/* 80223DA4 0021FA04  7F A3 EB 78 */	mr r3, r29
/* 80223DA8 0021FA08  48 04 A9 DD */	bl OSRestoreInterrupts
/* 80223DAC 0021FA0C  4B FF FF C4 */	b lbl_80223D70

.global func_80223DB0
func_80223DB0:
/* 80223DB0 0021FA10  2C 03 00 02 */	cmpwi r3, 2
/* 80223DB4 0021FA14  40 82 00 1C */	bne lbl_80223DD0
/* 80223DB8 0021FA18  80 0D A3 14 */	lwz r0, lbl_8063F5D4-_SDA_BASE_(r13)
/* 80223DBC 0021FA1C  80 6D A3 10 */	lwz r3, lbl_8063F5D0-_SDA_BASE_(r13)
/* 80223DC0 0021FA20  1C 00 00 3C */	mulli r0, r0, 0x3c
/* 80223DC4 0021FA24  80 8D A3 18 */	lwz r4, lbl_8063F5D8-_SDA_BASE_(r13)
/* 80223DC8 0021FA28  7C 63 02 14 */	add r3, r3, r0
/* 80223DCC 0021FA2C  48 00 00 0C */	b lbl_80223DD8
lbl_80223DD0:
/* 80223DD0 0021FA30  80 6D A3 10 */	lwz r3, lbl_8063F5D0-_SDA_BASE_(r13)
/* 80223DD4 0021FA34  80 8D A3 14 */	lwz r4, lbl_8063F5D4-_SDA_BASE_(r13)
lbl_80223DD8:
/* 80223DD8 0021FA38  7C 89 03 A6 */	mtctr r4
/* 80223DDC 0021FA3C  2C 04 00 00 */	cmpwi r4, 0
/* 80223DE0 0021FA40  41 82 00 18 */	beq lbl_80223DF8
lbl_80223DE4:
/* 80223DE4 0021FA44  80 03 00 08 */	lwz r0, 8(r3)
/* 80223DE8 0021FA48  2C 00 00 00 */	cmpwi r0, 0
/* 80223DEC 0021FA4C  4D 82 00 20 */	beqlr
/* 80223DF0 0021FA50  38 63 00 3C */	addi r3, r3, 0x3c
/* 80223DF4 0021FA54  42 00 FF F0 */	bdnz lbl_80223DE4
lbl_80223DF8:
/* 80223DF8 0021FA58  38 60 00 00 */	li r3, 0
/* 80223DFC 0021FA5C  4E 80 00 20 */	blr

.global func_80223E00
func_80223E00:
/* 80223E00 0021FA60  80 CD A3 2C */	lwz r6, lbl_8063F5EC-_SDA_BASE_(r13)
/* 80223E04 0021FA64  48 00 00 08 */	b lbl_80223E0C
lbl_80223E08:
/* 80223E08 0021FA68  7C A6 2B 78 */	mr r6, r5
lbl_80223E0C:
/* 80223E0C 0021FA6C  80 A6 00 04 */	lwz r5, 4(r6)
/* 80223E10 0021FA70  2C 05 00 00 */	cmpwi r5, 0
/* 80223E14 0021FA74  41 82 00 14 */	beq lbl_80223E28
/* 80223E18 0021FA78  88 86 00 10 */	lbz r4, 0x10(r6)
/* 80223E1C 0021FA7C  88 03 00 10 */	lbz r0, 0x10(r3)
/* 80223E20 0021FA80  7C 04 00 40 */	cmplw r4, r0
/* 80223E24 0021FA84  41 80 FF E4 */	blt lbl_80223E08
lbl_80223E28:
/* 80223E28 0021FA88  2C 05 00 00 */	cmpwi r5, 0
/* 80223E2C 0021FA8C  40 82 00 28 */	bne lbl_80223E54
/* 80223E30 0021FA90  88 86 00 10 */	lbz r4, 0x10(r6)
/* 80223E34 0021FA94  88 03 00 10 */	lbz r0, 0x10(r3)
/* 80223E38 0021FA98  7C 04 00 40 */	cmplw r4, r0
/* 80223E3C 0021FA9C  40 80 00 18 */	bge lbl_80223E54
/* 80223E40 0021FAA0  38 00 00 00 */	li r0, 0
/* 80223E44 0021FAA4  90 C3 00 00 */	stw r6, 0(r3)
/* 80223E48 0021FAA8  90 03 00 04 */	stw r0, 4(r3)
/* 80223E4C 0021FAAC  90 66 00 04 */	stw r3, 4(r6)
/* 80223E50 0021FAB0  4E 80 00 20 */	blr
lbl_80223E54:
/* 80223E54 0021FAB4  80 86 00 00 */	lwz r4, 0(r6)
/* 80223E58 0021FAB8  2C 04 00 00 */	cmpwi r4, 0
/* 80223E5C 0021FABC  41 82 00 08 */	beq lbl_80223E64
/* 80223E60 0021FAC0  90 64 00 04 */	stw r3, 4(r4)
lbl_80223E64:
/* 80223E64 0021FAC4  80 06 00 00 */	lwz r0, 0(r6)
/* 80223E68 0021FAC8  90 03 00 00 */	stw r0, 0(r3)
/* 80223E6C 0021FACC  90 C3 00 04 */	stw r6, 4(r3)
/* 80223E70 0021FAD0  90 66 00 00 */	stw r3, 0(r6)
/* 80223E74 0021FAD4  80 0D A3 2C */	lwz r0, lbl_8063F5EC-_SDA_BASE_(r13)
/* 80223E78 0021FAD8  7C 00 30 40 */	cmplw r0, r6
/* 80223E7C 0021FADC  4C 82 00 20 */	bnelr
/* 80223E80 0021FAE0  90 6D A3 2C */	stw r3, lbl_8063F5EC-_SDA_BASE_(r13)
/* 80223E84 0021FAE4  4E 80 00 20 */	blr

.global func_80223E88
func_80223E88:
/* 80223E88 0021FAE8  80 0D A3 30 */	lwz r0, lbl_8063F5F0-_SDA_BASE_(r13)
/* 80223E8C 0021FAEC  90 03 00 04 */	stw r0, 4(r3)
/* 80223E90 0021FAF0  90 6D A3 30 */	stw r3, lbl_8063F5F0-_SDA_BASE_(r13)
/* 80223E94 0021FAF4  4E 80 00 20 */	blr

.global func_80223E98
func_80223E98:
/* 80223E98 0021FAF8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80223E9C 0021FAFC  7C 08 02 A6 */	mflr r0
/* 80223EA0 0021FB00  90 01 00 14 */	stw r0, 0x14(r1)
/* 80223EA4 0021FB04  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80223EA8 0021FB08  93 C1 00 08 */	stw r30, 8(r1)
/* 80223EAC 0021FB0C  7C 7E 1B 78 */	mr r30, r3
/* 80223EB0 0021FB10  80 0D A3 2C */	lwz r0, lbl_8063F5EC-_SDA_BASE_(r13)
/* 80223EB4 0021FB14  2C 00 00 00 */	cmpwi r0, 0
/* 80223EB8 0021FB18  40 82 00 0C */	bne lbl_80223EC4
/* 80223EBC 0021FB1C  90 6D A3 2C */	stw r3, lbl_8063F5EC-_SDA_BASE_(r13)
/* 80223EC0 0021FB20  48 00 00 34 */	b lbl_80223EF4
lbl_80223EC4:
/* 80223EC4 0021FB24  48 04 A8 99 */	bl OSDisableInterrupts
/* 80223EC8 0021FB28  80 1E 00 08 */	lwz r0, 8(r30)
/* 80223ECC 0021FB2C  7C 7F 1B 78 */	mr r31, r3
/* 80223ED0 0021FB30  2C 00 00 02 */	cmpwi r0, 2
/* 80223ED4 0021FB34  40 82 00 10 */	bne lbl_80223EE4
/* 80223ED8 0021FB38  7F C3 F3 78 */	mr r3, r30
/* 80223EDC 0021FB3C  4B FF FF AD */	bl func_80223E88
/* 80223EE0 0021FB40  48 00 00 0C */	b lbl_80223EEC
lbl_80223EE4:
/* 80223EE4 0021FB44  7F C3 F3 78 */	mr r3, r30
/* 80223EE8 0021FB48  4B FF FF 19 */	bl func_80223E00
lbl_80223EEC:
/* 80223EEC 0021FB4C  7F E3 FB 78 */	mr r3, r31
/* 80223EF0 0021FB50  48 04 A8 95 */	bl OSRestoreInterrupts
lbl_80223EF4:
/* 80223EF4 0021FB54  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80223EF8 0021FB58  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80223EFC 0021FB5C  83 C1 00 08 */	lwz r30, 8(r1)
/* 80223F00 0021FB60  7C 08 03 A6 */	mtlr r0
/* 80223F04 0021FB64  38 21 00 10 */	addi r1, r1, 0x10
/* 80223F08 0021FB68  4E 80 00 20 */	blr

.global func_80223F0C
func_80223F0C:
/* 80223F0C 0021FB6C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80223F10 0021FB70  7C 08 02 A6 */	mflr r0
/* 80223F14 0021FB74  90 01 00 14 */	stw r0, 0x14(r1)
/* 80223F18 0021FB78  7C 03 22 14 */	add r0, r3, r4
/* 80223F1C 0021FB7C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80223F20 0021FB80  3B E0 00 00 */	li r31, 0
/* 80223F24 0021FB84  90 6D A3 14 */	stw r3, lbl_8063F5D4-_SDA_BASE_(r13)
/* 80223F28 0021FB88  1C 60 00 3C */	mulli r3, r0, 0x3c
/* 80223F2C 0021FB8C  90 8D A3 18 */	stw r4, lbl_8063F5D8-_SDA_BASE_(r13)
/* 80223F30 0021FB90  90 0D A3 1C */	stw r0, lbl_8063F5DC-_SDA_BASE_(r13)
/* 80223F34 0021FB94  93 ED A3 28 */	stw r31, lbl_8063F5E8-_SDA_BASE_(r13)
/* 80223F38 0021FB98  4B FB 6E 2D */	bl func_801DAD64
/* 80223F3C 0021FB9C  2C 03 00 00 */	cmpwi r3, 0
/* 80223F40 0021FBA0  90 6D A3 10 */	stw r3, lbl_8063F5D0-_SDA_BASE_(r13)
/* 80223F44 0021FBA4  41 82 00 78 */	beq lbl_80223FBC
/* 80223F48 0021FBA8  38 A0 00 00 */	li r5, 0
/* 80223F4C 0021FBAC  38 80 00 00 */	li r4, 0
/* 80223F50 0021FBB0  48 00 00 18 */	b lbl_80223F68
lbl_80223F54:
/* 80223F54 0021FBB4  80 0D A3 10 */	lwz r0, lbl_8063F5D0-_SDA_BASE_(r13)
/* 80223F58 0021FBB8  38 A5 00 01 */	addi r5, r5, 1
/* 80223F5C 0021FBBC  7C 60 22 14 */	add r3, r0, r4
/* 80223F60 0021FBC0  38 84 00 3C */	addi r4, r4, 0x3c
/* 80223F64 0021FBC4  93 E3 00 08 */	stw r31, 8(r3)
lbl_80223F68:
/* 80223F68 0021FBC8  80 0D A3 1C */	lwz r0, lbl_8063F5DC-_SDA_BASE_(r13)
/* 80223F6C 0021FBCC  7C 05 00 40 */	cmplw r5, r0
/* 80223F70 0021FBD0  41 80 FF E4 */	blt lbl_80223F54
/* 80223F74 0021FBD4  38 60 20 00 */	li r3, 0x2000
/* 80223F78 0021FBD8  4B FB 6D ED */	bl func_801DAD64
/* 80223F7C 0021FBDC  7C 65 1B 78 */	mr r5, r3
/* 80223F80 0021FBE0  90 6D A3 24 */	stw r3, lbl_8063F5E4-_SDA_BASE_(r13)
/* 80223F84 0021FBE4  3C 60 80 22 */	lis r3, lbl_80223D54@ha
/* 80223F88 0021FBE8  38 80 00 00 */	li r4, 0
/* 80223F8C 0021FBEC  38 63 3D 54 */	addi r3, r3, lbl_80223D54@l
/* 80223F90 0021FBF0  38 A5 1F FC */	addi r5, r5, 0x1ffc
/* 80223F94 0021FBF4  38 C0 1F FC */	li r6, 0x1ffc
/* 80223F98 0021FBF8  48 04 E6 B1 */	bl OSSetIdleFunction
/* 80223F9C 0021FBFC  80 8D A4 C8 */	lwz r4, lbl_8063F788-_SDA_BASE_(r13)
/* 80223FA0 0021FC00  2C 04 00 00 */	cmpwi r4, 0
/* 80223FA4 0021FC04  41 82 00 18 */	beq lbl_80223FBC
/* 80223FA8 0021FC08  3C 60 80 22 */	lis r3, lbl_80223D0C@ha
/* 80223FAC 0021FC0C  80 04 00 74 */	lwz r0, 0x74(r4)
/* 80223FB0 0021FC10  38 63 3D 0C */	addi r3, r3, lbl_80223D0C@l
/* 80223FB4 0021FC14  90 64 00 74 */	stw r3, 0x74(r4)
/* 80223FB8 0021FC18  90 0D A3 34 */	stw r0, lbl_8063F5F4-_SDA_BASE_(r13)
lbl_80223FBC:
/* 80223FBC 0021FC1C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80223FC0 0021FC20  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80223FC4 0021FC24  7C 08 03 A6 */	mtlr r0
/* 80223FC8 0021FC28  38 21 00 10 */	addi r1, r1, 0x10
/* 80223FCC 0021FC2C  4E 80 00 20 */	blr

.global func_80223FD0
func_80223FD0:
/* 80223FD0 0021FC30  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80223FD4 0021FC34  7C 08 02 A6 */	mflr r0
/* 80223FD8 0021FC38  90 01 00 24 */	stw r0, 0x24(r1)
/* 80223FDC 0021FC3C  39 61 00 20 */	addi r11, r1, 0x20
/* 80223FE0 0021FC40  4B FA 31 49 */	bl _savegpr_27
/* 80223FE4 0021FC44  7C 7B 1B 78 */	mr r27, r3
/* 80223FE8 0021FC48  7C 9C 23 78 */	mr r28, r4
/* 80223FEC 0021FC4C  7C BD 2B 78 */	mr r29, r5
/* 80223FF0 0021FC50  7C DE 33 78 */	mr r30, r6
/* 80223FF4 0021FC54  4B FF FD BD */	bl func_80223DB0
/* 80223FF8 0021FC58  2C 03 00 00 */	cmpwi r3, 0
/* 80223FFC 0021FC5C  7C 7F 1B 78 */	mr r31, r3
/* 80224000 0021FC60  40 82 00 0C */	bne lbl_8022400C
/* 80224004 0021FC64  38 60 00 00 */	li r3, 0
/* 80224008 0021FC68  48 00 00 4C */	b lbl_80224054
lbl_8022400C:
/* 8022400C 0021FC6C  38 00 00 00 */	li r0, 0
/* 80224010 0021FC70  90 03 00 00 */	stw r0, 0(r3)
/* 80224014 0021FC74  90 03 00 04 */	stw r0, 4(r3)
/* 80224018 0021FC78  93 63 00 08 */	stw r27, 8(r3)
/* 8022401C 0021FC7C  9B 83 00 10 */	stb r28, 0x10(r3)
/* 80224020 0021FC80  98 03 00 11 */	stb r0, 0x11(r3)
/* 80224024 0021FC84  93 A3 00 34 */	stw r29, 0x34(r3)
/* 80224028 0021FC88  93 C3 00 38 */	stw r30, 0x38(r3)
/* 8022402C 0021FC8C  90 03 00 0C */	stw r0, 0xc(r3)
/* 80224030 0021FC90  98 03 00 14 */	stb r0, 0x14(r3)
/* 80224034 0021FC94  4B FF FE 65 */	bl func_80223E98
/* 80224038 0021FC98  80 0D A3 10 */	lwz r0, lbl_8063F5D0-_SDA_BASE_(r13)
/* 8022403C 0021FC9C  3C 60 88 89 */	lis r3, 0x88888889@ha
/* 80224040 0021FCA0  38 63 88 89 */	addi r3, r3, 0x88888889@l
/* 80224044 0021FCA4  7C 00 F8 50 */	subf r0, r0, r31
/* 80224048 0021FCA8  7C 03 00 16 */	mulhwu r0, r3, r0
/* 8022404C 0021FCAC  54 03 D9 7E */	srwi r3, r0, 5
/* 80224050 0021FCB0  38 63 00 01 */	addi r3, r3, 1
lbl_80224054:
/* 80224054 0021FCB4  39 61 00 20 */	addi r11, r1, 0x20
/* 80224058 0021FCB8  4B FA 31 1D */	bl _restgpr_27
/* 8022405C 0021FCBC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80224060 0021FCC0  7C 08 03 A6 */	mtlr r0
/* 80224064 0021FCC4  38 21 00 20 */	addi r1, r1, 0x20
/* 80224068 0021FCC8  4E 80 00 20 */	blr

.global func_8022406C
func_8022406C:
/* 8022406C 0021FCCC  38 60 00 01 */	li r3, 1
/* 80224070 0021FCD0  4B FF FB E4 */	b func_80223C54

.global func_80224074
func_80224074:
/* 80224074 0021FCD4  80 6D A3 2C */	lwz r3, lbl_8063F5EC-_SDA_BASE_(r13)
/* 80224078 0021FCD8  48 00 00 08 */	b lbl_80224080
lbl_8022407C:
/* 8022407C 0021FCDC  80 63 00 04 */	lwz r3, 4(r3)
lbl_80224080:
/* 80224080 0021FCE0  2C 03 00 00 */	cmpwi r3, 0
/* 80224084 0021FCE4  40 82 FF F8 */	bne lbl_8022407C
/* 80224088 0021FCE8  4E 80 00 20 */	blr

.global func_8022408C
func_8022408C:
/* 8022408C 0021FCEC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80224090 0021FCF0  7C 08 02 A6 */	mflr r0
/* 80224094 0021FCF4  2C 04 00 00 */	cmpwi r4, 0
/* 80224098 0021FCF8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8022409C 0021FCFC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802240A0 0021FD00  41 82 00 30 */	beq lbl_802240D0
/* 802240A4 0021FD04  2C 03 00 00 */	cmpwi r3, 0
/* 802240A8 0021FD08  41 82 00 28 */	beq lbl_802240D0
/* 802240AC 0021FD0C  38 03 FF FF */	addi r0, r3, -1
/* 802240B0 0021FD10  80 6D A3 10 */	lwz r3, lbl_8063F5D0-_SDA_BASE_(r13)
/* 802240B4 0021FD14  1C 00 00 3C */	mulli r0, r0, 0x3c
/* 802240B8 0021FD18  38 A0 00 1F */	li r5, 0x1f
/* 802240BC 0021FD1C  7F E3 02 14 */	add r31, r3, r0
/* 802240C0 0021FD20  38 7F 00 14 */	addi r3, r31, 0x14
/* 802240C4 0021FD24  4B DD FF 3D */	bl memcpy
/* 802240C8 0021FD28  38 00 00 00 */	li r0, 0
/* 802240CC 0021FD2C  98 1F 00 33 */	stb r0, 0x33(r31)
lbl_802240D0:
/* 802240D0 0021FD30  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802240D4 0021FD34  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802240D8 0021FD38  7C 08 03 A6 */	mtlr r0
/* 802240DC 0021FD3C  38 21 00 10 */	addi r1, r1, 0x10
/* 802240E0 0021FD40  4E 80 00 20 */	blr

.global func_802240E4
func_802240E4:
/* 802240E4 0021FD44  38 A0 00 01 */	li r5, 1
/* 802240E8 0021FD48  38 6D A3 08 */	addi r3, r13, lbl_8063F5C8-_SDA_BASE_
/* 802240EC 0021FD4C  38 80 00 04 */	li r4, 4
/* 802240F0 0021FD50  38 00 00 00 */	li r0, 0
/* 802240F4 0021FD54  98 AD A3 08 */	stb r5, lbl_8063F5C8-_SDA_BASE_(r13)
/* 802240F8 0021FD58  B0 83 00 02 */	sth r4, 2(r3)
/* 802240FC 0021FD5C  98 03 00 04 */	stb r0, 4(r3)
/* 80224100 0021FD60  4E 80 00 20 */	blr