summaryrefslogtreecommitdiff
path: root/asm/code_80224104.s
blob: 3ee222505d5a4831515cf99da23883373e0e9391 (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
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
.include "macros.inc"

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

lbl_80224104:
/* 80224104 0021FD64  80 6D A3 40 */	lwz r3, lbl_8063F600-_SDA_BASE_(r13)
/* 80224108 0021FD68  48 00 02 34 */	b lbl_8022433C

.global func_8022410C
func_8022410C:
/* 8022410C 0021FD6C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80224110 0021FD70  7C 08 02 A6 */	mflr r0
/* 80224114 0021FD74  90 01 00 14 */	stw r0, 0x14(r1)
/* 80224118 0021FD78  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8022411C 0021FD7C  7C 7F 1B 78 */	mr r31, r3
/* 80224120 0021FD80  38 60 00 1C */	li r3, 0x1c
/* 80224124 0021FD84  4B FB 69 0D */	bl __nw__FUl
/* 80224128 0021FD88  2C 03 00 00 */	cmpwi r3, 0
/* 8022412C 0021FD8C  41 82 00 0C */	beq lbl_80224138
/* 80224130 0021FD90  7F E4 FB 78 */	mr r4, r31
/* 80224134 0021FD94  48 00 00 41 */	bl func_80224174
lbl_80224138:
/* 80224138 0021FD98  3C C0 80 22 */	lis r6, lbl_80224104@ha
/* 8022413C 0021FD9C  90 6D A3 40 */	stw r3, lbl_8063F600-_SDA_BASE_(r13)
/* 80224140 0021FDA0  38 C6 41 04 */	addi r6, r6, lbl_80224104@l
/* 80224144 0021FDA4  38 60 00 01 */	li r3, 1
/* 80224148 0021FDA8  38 80 00 00 */	li r4, 0
/* 8022414C 0021FDAC  38 A0 00 00 */	li r5, 0
/* 80224150 0021FDB0  4B FF FE 81 */	bl func_80223FD0
/* 80224154 0021FDB4  3C 80 80 42 */	lis r4, lbl_80423C10@ha
/* 80224158 0021FDB8  38 84 3C 10 */	addi r4, r4, lbl_80423C10@l
/* 8022415C 0021FDBC  4B FF FF 31 */	bl func_8022408C
/* 80224160 0021FDC0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80224164 0021FDC4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80224168 0021FDC8  7C 08 03 A6 */	mtlr r0
/* 8022416C 0021FDCC  38 21 00 10 */	addi r1, r1, 0x10
/* 80224170 0021FDD0  4E 80 00 20 */	blr

.global func_80224174
func_80224174:
/* 80224174 0021FDD4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80224178 0021FDD8  7C 08 02 A6 */	mflr r0
/* 8022417C 0021FDDC  90 01 00 14 */	stw r0, 0x14(r1)
/* 80224180 0021FDE0  38 00 00 00 */	li r0, 0
/* 80224184 0021FDE4  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80224188 0021FDE8  7C 9F 23 78 */	mr r31, r4
/* 8022418C 0021FDEC  93 C1 00 08 */	stw r30, 8(r1)
/* 80224190 0021FDF0  7C 7E 1B 78 */	mr r30, r3
/* 80224194 0021FDF4  90 83 00 00 */	stw r4, 0(r3)
/* 80224198 0021FDF8  90 03 00 14 */	stw r0, 0x14(r3)
/* 8022419C 0021FDFC  48 04 D1 5D */	bl OSGetCurrentThread
/* 802241A0 0021FE00  48 04 E4 A1 */	bl OSGetThreadPriority
/* 802241A4 0021FE04  90 7E 00 08 */	stw r3, 8(r30)
/* 802241A8 0021FE08  1C 7F 03 70 */	mulli r3, r31, 0x370
/* 802241AC 0021FE0C  4B FB 6B ED */	bl func_801DAD98
/* 802241B0 0021FE10  90 7E 00 04 */	stw r3, 4(r30)
/* 802241B4 0021FE14  48 04 D1 45 */	bl OSGetCurrentThread
/* 802241B8 0021FE18  90 7E 00 18 */	stw r3, 0x18(r30)
/* 802241BC 0021FE1C  38 7E 00 0C */	addi r3, r30, 0xc
/* 802241C0 0021FE20  48 04 D1 29 */	bl OSInitThreadQueue
/* 802241C4 0021FE24  7F C3 F3 78 */	mr r3, r30
/* 802241C8 0021FE28  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802241CC 0021FE2C  83 C1 00 08 */	lwz r30, 8(r1)
/* 802241D0 0021FE30  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802241D4 0021FE34  7C 08 03 A6 */	mtlr r0
/* 802241D8 0021FE38  38 21 00 10 */	addi r1, r1, 0x10
/* 802241DC 0021FE3C  4E 80 00 20 */	blr

.global func_802241E0
func_802241E0:
/* 802241E0 0021FE40  80 03 00 00 */	lwz r0, 0(r3)
/* 802241E4 0021FE44  80 63 00 04 */	lwz r3, 4(r3)
/* 802241E8 0021FE48  1C 00 03 70 */	mulli r0, r0, 0x370
/* 802241EC 0021FE4C  7C 83 02 14 */	add r4, r3, r0
/* 802241F0 0021FE50  48 00 00 14 */	b lbl_80224204
lbl_802241F4:
/* 802241F4 0021FE54  80 03 03 1C */	lwz r0, 0x31c(r3)
/* 802241F8 0021FE58  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 802241FC 0021FE5C  4D 82 00 20 */	beqlr
/* 80224200 0021FE60  38 63 03 70 */	addi r3, r3, 0x370
lbl_80224204:
/* 80224204 0021FE64  7C 03 20 40 */	cmplw r3, r4
/* 80224208 0021FE68  40 82 FF EC */	bne lbl_802241F4
/* 8022420C 0021FE6C  38 60 00 00 */	li r3, 0
/* 80224210 0021FE70  4E 80 00 20 */	blr

.global func_80224214
func_80224214:
/* 80224214 0021FE74  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80224218 0021FE78  7C 08 02 A6 */	mflr r0
/* 8022421C 0021FE7C  90 01 00 34 */	stw r0, 0x34(r1)
/* 80224220 0021FE80  39 61 00 30 */	addi r11, r1, 0x30
/* 80224224 0021FE84  4B FA 2E F5 */	bl _savegpr_23
/* 80224228 0021FE88  7C 77 1B 78 */	mr r23, r3
/* 8022422C 0021FE8C  7C 98 23 78 */	mr r24, r4
/* 80224230 0021FE90  7C B9 2B 78 */	mr r25, r5
/* 80224234 0021FE94  7C DA 33 78 */	mr r26, r6
/* 80224238 0021FE98  7C FB 3B 78 */	mr r27, r7
/* 8022423C 0021FE9C  7D 1C 43 78 */	mr r28, r8
/* 80224240 0021FEA0  7D 3D 4B 78 */	mr r29, r9
/* 80224244 0021FEA4  4B FF FF 9D */	bl func_802241E0
/* 80224248 0021FEA8  2C 03 00 00 */	cmpwi r3, 0
/* 8022424C 0021FEAC  7C 7E 1B 78 */	mr r30, r3
/* 80224250 0021FEB0  40 82 00 0C */	bne lbl_8022425C
/* 80224254 0021FEB4  38 60 00 00 */	li r3, 0
/* 80224258 0021FEB8  48 00 00 CC */	b lbl_80224324
lbl_8022425C:
/* 8022425C 0021FEBC  80 17 00 08 */	lwz r0, 8(r23)
/* 80224260 0021FEC0  7C 7C 02 14 */	add r3, r28, r0
/* 80224264 0021FEC4  3B 83 00 01 */	addi r28, r3, 1
/* 80224268 0021FEC8  2C 1C 00 1E */	cmpwi r28, 0x1e
/* 8022426C 0021FECC  41 80 00 08 */	blt lbl_80224274
/* 80224270 0021FED0  3B 80 00 1D */	li r28, 0x1d
lbl_80224274:
/* 80224274 0021FED4  7F 63 DB 78 */	mr r3, r27
/* 80224278 0021FED8  4B FB 6A ED */	bl func_801DAD64
/* 8022427C 0021FEDC  2C 03 00 00 */	cmpwi r3, 0
/* 80224280 0021FEE0  7C 7F 1B 78 */	mr r31, r3
/* 80224284 0021FEE4  40 82 00 0C */	bne lbl_80224290
/* 80224288 0021FEE8  38 60 00 00 */	li r3, 0
/* 8022428C 0021FEEC  48 00 00 98 */	b lbl_80224324
lbl_80224290:
/* 80224290 0021FEF0  2C 1E 00 00 */	cmpwi r30, 0
/* 80224294 0021FEF4  41 82 00 0C */	beq lbl_802242A0
/* 80224298 0021FEF8  7F C3 F3 78 */	mr r3, r30
/* 8022429C 0021FEFC  48 00 03 95 */	bl func_80224630
lbl_802242A0:
/* 802242A0 0021FF00  2C 1A 00 00 */	cmpwi r26, 0
/* 802242A4 0021FF04  40 82 00 08 */	bne lbl_802242AC
/* 802242A8 0021FF08  7F DA F3 78 */	mr r26, r30
lbl_802242AC:
/* 802242AC 0021FF0C  7F C3 F3 78 */	mr r3, r30
/* 802242B0 0021FF10  7F 24 CB 78 */	mr r4, r25
/* 802242B4 0021FF14  7F 45 D3 78 */	mr r5, r26
/* 802242B8 0021FF18  7F 67 DB 78 */	mr r7, r27
/* 802242BC 0021FF1C  7F 88 E3 78 */	mr r8, r28
/* 802242C0 0021FF20  7F A9 EB 78 */	mr r9, r29
/* 802242C4 0021FF24  7C DF DA 14 */	add r6, r31, r27
/* 802242C8 0021FF28  48 04 D6 19 */	bl OSCreateThread
/* 802242CC 0021FF2C  2C 03 00 00 */	cmpwi r3, 0
/* 802242D0 0021FF30  40 82 00 0C */	bne lbl_802242DC
/* 802242D4 0021FF34  38 60 00 00 */	li r3, 0
/* 802242D8 0021FF38  48 00 00 4C */	b lbl_80224324
lbl_802242DC:
/* 802242DC 0021FF3C  38 60 00 01 */	li r3, 1
/* 802242E0 0021FF40  38 00 00 00 */	li r0, 0
/* 802242E4 0021FF44  90 7E 03 1C */	stw r3, 0x31c(r30)
/* 802242E8 0021FF48  93 FE 03 18 */	stw r31, 0x318(r30)
/* 802242EC 0021FF4C  93 1E 03 20 */	stw r24, 0x320(r30)
/* 802242F0 0021FF50  90 1E 03 68 */	stw r0, 0x368(r30)
/* 802242F4 0021FF54  80 77 00 14 */	lwz r3, 0x14(r23)
/* 802242F8 0021FF58  2C 03 00 00 */	cmpwi r3, 0
/* 802242FC 0021FF5C  40 82 00 14 */	bne lbl_80224310
/* 80224300 0021FF60  93 D7 00 14 */	stw r30, 0x14(r23)
/* 80224304 0021FF64  48 00 00 1C */	b lbl_80224320
/* 80224308 0021FF68  48 00 00 08 */	b lbl_80224310
lbl_8022430C:
/* 8022430C 0021FF6C  7C 03 03 78 */	mr r3, r0
lbl_80224310:
/* 80224310 0021FF70  80 03 03 68 */	lwz r0, 0x368(r3)
/* 80224314 0021FF74  2C 00 00 00 */	cmpwi r0, 0
/* 80224318 0021FF78  40 82 FF F4 */	bne lbl_8022430C
/* 8022431C 0021FF7C  93 C3 03 68 */	stw r30, 0x368(r3)
lbl_80224320:
/* 80224320 0021FF80  7F C3 F3 78 */	mr r3, r30
lbl_80224324:
/* 80224324 0021FF84  39 61 00 30 */	addi r11, r1, 0x30
/* 80224328 0021FF88  4B FA 2E 3D */	bl _restgpr_23
/* 8022432C 0021FF8C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80224330 0021FF90  7C 08 03 A6 */	mtlr r0
/* 80224334 0021FF94  38 21 00 30 */	addi r1, r1, 0x30
/* 80224338 0021FF98  4E 80 00 20 */	blr
lbl_8022433C:
/* 8022433C 0021FF9C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80224340 0021FFA0  7C 08 02 A6 */	mflr r0
/* 80224344 0021FFA4  90 01 00 14 */	stw r0, 0x14(r1)
/* 80224348 0021FFA8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8022434C 0021FFAC  93 C1 00 08 */	stw r30, 8(r1)
/* 80224350 0021FFB0  7C 7E 1B 78 */	mr r30, r3
/* 80224354 0021FFB4  83 E3 00 04 */	lwz r31, 4(r3)
/* 80224358 0021FFB8  48 00 00 24 */	b lbl_8022437C
lbl_8022435C:
/* 8022435C 0021FFBC  7F E3 FB 78 */	mr r3, r31
/* 80224360 0021FFC0  48 00 03 E1 */	bl func_80224740
/* 80224364 0021FFC4  80 1F 03 1C */	lwz r0, 0x31c(r31)
/* 80224368 0021FFC8  7C 00 18 39 */	and. r0, r0, r3
/* 8022436C 0021FFCC  41 82 00 0C */	beq lbl_80224378
/* 80224370 0021FFD0  7F E3 FB 78 */	mr r3, r31
/* 80224374 0021FFD4  48 00 02 D1 */	bl func_80224644
lbl_80224378:
/* 80224378 0021FFD8  3B FF 03 70 */	addi r31, r31, 0x370
lbl_8022437C:
/* 8022437C 0021FFDC  80 1E 00 00 */	lwz r0, 0(r30)
/* 80224380 0021FFE0  80 7E 00 04 */	lwz r3, 4(r30)
/* 80224384 0021FFE4  1C 00 03 70 */	mulli r0, r0, 0x370
/* 80224388 0021FFE8  7C 03 02 14 */	add r0, r3, r0
/* 8022438C 0021FFEC  7C 1F 00 40 */	cmplw r31, r0
/* 80224390 0021FFF0  40 82 FF CC */	bne lbl_8022435C
/* 80224394 0021FFF4  38 7E 00 0C */	addi r3, r30, 0xc
/* 80224398 0021FFF8  48 04 E0 C9 */	bl OSWakeupThread
/* 8022439C 0021FFFC  48 04 CF 5D */	bl OSGetCurrentThread
/* 802243A0 00220000  38 80 00 1E */	li r4, 0x1e
/* 802243A4 00220004  48 04 E1 B1 */	bl OSSetThreadPriority
/* 802243A8 00220008  83 FE 00 14 */	lwz r31, 0x14(r30)
/* 802243AC 0022000C  48 00 00 20 */	b lbl_802243CC
lbl_802243B0:
/* 802243B0 00220010  7F E3 FB 78 */	mr r3, r31
/* 802243B4 00220014  48 04 CF 51 */	bl OSIsThreadSuspended
/* 802243B8 00220018  2C 03 00 00 */	cmpwi r3, 0
/* 802243BC 0022001C  41 82 00 0C */	beq lbl_802243C8
/* 802243C0 00220020  7F E3 FB 78 */	mr r3, r31
/* 802243C4 00220024  48 04 DB 85 */	bl OSResumeThread
lbl_802243C8:
/* 802243C8 00220028  83 FF 03 68 */	lwz r31, 0x368(r31)
lbl_802243CC:
/* 802243CC 0022002C  2C 1F 00 00 */	cmpwi r31, 0
/* 802243D0 00220030  40 82 FF E0 */	bne lbl_802243B0
/* 802243D4 00220034  38 00 00 00 */	li r0, 0
/* 802243D8 00220038  90 1E 00 14 */	stw r0, 0x14(r30)
/* 802243DC 0022003C  48 04 CF 1D */	bl OSGetCurrentThread
/* 802243E0 00220040  80 9E 00 08 */	lwz r4, 8(r30)
/* 802243E4 00220044  48 04 E1 71 */	bl OSSetThreadPriority
/* 802243E8 00220048  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802243EC 0022004C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802243F0 00220050  83 C1 00 08 */	lwz r30, 8(r1)
/* 802243F4 00220054  7C 08 03 A6 */	mtlr r0
/* 802243F8 00220058  38 21 00 10 */	addi r1, r1, 0x10
/* 802243FC 0022005C  4E 80 00 20 */	blr

.global func_80224400
func_80224400:
/* 80224400 00220060  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80224404 00220064  7C 08 02 A6 */	mflr r0
/* 80224408 00220068  90 01 00 24 */	stw r0, 0x24(r1)
/* 8022440C 0022006C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80224410 00220070  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80224414 00220074  7C 9E 23 78 */	mr r30, r4
/* 80224418 00220078  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8022441C 0022007C  7C 7D 1B 78 */	mr r29, r3
/* 80224420 00220080  83 E3 00 04 */	lwz r31, 4(r3)
/* 80224424 00220084  48 00 00 28 */	b lbl_8022444C
lbl_80224428:
/* 80224428 00220088  80 1F 03 1C */	lwz r0, 0x31c(r31)
/* 8022442C 0022008C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80224430 00220090  41 82 00 18 */	beq lbl_80224448
/* 80224434 00220094  80 1F 03 20 */	lwz r0, 0x320(r31)
/* 80224438 00220098  7C 1E 00 40 */	cmplw r30, r0
/* 8022443C 0022009C  40 82 00 0C */	bne lbl_80224448
/* 80224440 002200A0  7F E3 FB 78 */	mr r3, r31
/* 80224444 002200A4  48 00 02 E9 */	bl func_8022472C
lbl_80224448:
/* 80224448 002200A8  3B FF 03 70 */	addi r31, r31, 0x370
lbl_8022444C:
/* 8022444C 002200AC  80 1D 00 00 */	lwz r0, 0(r29)
/* 80224450 002200B0  80 7D 00 04 */	lwz r3, 4(r29)
/* 80224454 002200B4  1C 00 03 70 */	mulli r0, r0, 0x370
/* 80224458 002200B8  7C 03 02 14 */	add r0, r3, r0
/* 8022445C 002200BC  7C 1F 00 40 */	cmplw r31, r0
/* 80224460 002200C0  40 82 FF C8 */	bne lbl_80224428
/* 80224464 002200C4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80224468 002200C8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8022446C 002200CC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80224470 002200D0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80224474 002200D4  7C 08 03 A6 */	mtlr r0
/* 80224478 002200D8  38 21 00 20 */	addi r1, r1, 0x20
/* 8022447C 002200DC  4E 80 00 20 */	blr

.global func_80224480
func_80224480:
/* 80224480 002200E0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80224484 002200E4  7C 08 02 A6 */	mflr r0
/* 80224488 002200E8  90 01 00 24 */	stw r0, 0x24(r1)
/* 8022448C 002200EC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80224490 002200F0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80224494 002200F4  7C 9E 23 78 */	mr r30, r4
/* 80224498 002200F8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8022449C 002200FC  7C 7D 1B 78 */	mr r29, r3
/* 802244A0 00220100  83 E3 00 04 */	lwz r31, 4(r3)
/* 802244A4 00220104  48 00 00 28 */	b lbl_802244CC
lbl_802244A8:
/* 802244A8 00220108  80 1F 03 1C */	lwz r0, 0x31c(r31)
/* 802244AC 0022010C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 802244B0 00220110  41 82 00 18 */	beq lbl_802244C8
/* 802244B4 00220114  80 1F 03 20 */	lwz r0, 0x320(r31)
/* 802244B8 00220118  7C 1E 00 40 */	cmplw r30, r0
/* 802244BC 0022011C  40 82 00 0C */	bne lbl_802244C8
/* 802244C0 00220120  7F E3 FB 78 */	mr r3, r31
/* 802244C4 00220124  48 00 01 D5 */	bl func_80224698
lbl_802244C8:
/* 802244C8 00220128  3B FF 03 70 */	addi r31, r31, 0x370
lbl_802244CC:
/* 802244CC 0022012C  80 1D 00 00 */	lwz r0, 0(r29)
/* 802244D0 00220130  80 7D 00 04 */	lwz r3, 4(r29)
/* 802244D4 00220134  1C 00 03 70 */	mulli r0, r0, 0x370
/* 802244D8 00220138  7C 03 02 14 */	add r0, r3, r0
/* 802244DC 0022013C  7C 1F 00 40 */	cmplw r31, r0
/* 802244E0 00220140  40 82 FF C8 */	bne lbl_802244A8
/* 802244E4 00220144  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802244E8 00220148  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802244EC 0022014C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802244F0 00220150  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802244F4 00220154  7C 08 03 A6 */	mtlr r0
/* 802244F8 00220158  38 21 00 20 */	addi r1, r1, 0x20
/* 802244FC 0022015C  4E 80 00 20 */	blr

.global func_80224500
func_80224500:
/* 80224500 00220160  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80224504 00220164  7C 08 02 A6 */	mflr r0
/* 80224508 00220168  90 01 00 24 */	stw r0, 0x24(r1)
/* 8022450C 0022016C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80224510 00220170  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80224514 00220174  7C 9E 23 78 */	mr r30, r4
/* 80224518 00220178  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8022451C 0022017C  7C 7D 1B 78 */	mr r29, r3
/* 80224520 00220180  83 E3 00 04 */	lwz r31, 4(r3)
/* 80224524 00220184  48 00 00 2C */	b lbl_80224550
lbl_80224528:
/* 80224528 00220188  80 1F 03 1C */	lwz r0, 0x31c(r31)
/* 8022452C 0022018C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80224530 00220190  41 82 00 1C */	beq lbl_8022454C
/* 80224534 00220194  80 1F 03 20 */	lwz r0, 0x320(r31)
/* 80224538 00220198  7C 1E 00 40 */	cmplw r30, r0
/* 8022453C 0022019C  40 82 00 10 */	bne lbl_8022454C
/* 80224540 002201A0  7F E3 FB 78 */	mr r3, r31
/* 80224544 002201A4  38 80 00 00 */	li r4, 0
/* 80224548 002201A8  48 00 01 65 */	bl func_802246AC
lbl_8022454C:
/* 8022454C 002201AC  3B FF 03 70 */	addi r31, r31, 0x370
lbl_80224550:
/* 80224550 002201B0  80 1D 00 00 */	lwz r0, 0(r29)
/* 80224554 002201B4  80 7D 00 04 */	lwz r3, 4(r29)
/* 80224558 002201B8  1C 00 03 70 */	mulli r0, r0, 0x370
/* 8022455C 002201BC  7C 03 02 14 */	add r0, r3, r0
/* 80224560 002201C0  7C 1F 00 40 */	cmplw r31, r0
/* 80224564 002201C4  40 82 FF C4 */	bne lbl_80224528
/* 80224568 002201C8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8022456C 002201CC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80224570 002201D0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80224574 002201D4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80224578 002201D8  7C 08 03 A6 */	mtlr r0
/* 8022457C 002201DC  38 21 00 20 */	addi r1, r1, 0x20
/* 80224580 002201E0  4E 80 00 20 */	blr

.global func_80224584
func_80224584:
/* 80224584 002201E4  4E 80 00 20 */	blr

.global func_80224588
func_80224588:
/* 80224588 002201E8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8022458C 002201EC  7C 08 02 A6 */	mflr r0
/* 80224590 002201F0  90 01 00 14 */	stw r0, 0x14(r1)
/* 80224594 002201F4  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80224598 002201F8  7C 7F 1B 78 */	mr r31, r3
/* 8022459C 002201FC  48 00 00 29 */	bl func_802245C4
/* 802245A0 00220200  2C 03 00 00 */	cmpwi r3, 0
/* 802245A4 00220204  41 82 00 0C */	beq lbl_802245B0
/* 802245A8 00220208  38 7F 00 0C */	addi r3, r31, 0xc
/* 802245AC 0022020C  48 04 DD C9 */	bl OSSleepThread
lbl_802245B0:
/* 802245B0 00220210  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802245B4 00220214  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802245B8 00220218  7C 08 03 A6 */	mtlr r0
/* 802245BC 0022021C  38 21 00 10 */	addi r1, r1, 0x10
/* 802245C0 00220220  4E 80 00 20 */	blr

.global func_802245C4
func_802245C4:
/* 802245C4 00220224  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802245C8 00220228  7C 08 02 A6 */	mflr r0
/* 802245CC 0022022C  90 01 00 14 */	stw r0, 0x14(r1)
/* 802245D0 00220230  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802245D4 00220234  7C 7F 1B 78 */	mr r31, r3
/* 802245D8 00220238  48 04 CD 21 */	bl OSGetCurrentThread
/* 802245DC 0022023C  80 1F 00 00 */	lwz r0, 0(r31)
/* 802245E0 00220240  80 BF 00 04 */	lwz r5, 4(r31)
/* 802245E4 00220244  1C 00 03 70 */	mulli r0, r0, 0x370
/* 802245E8 00220248  7C 85 02 14 */	add r4, r5, r0
/* 802245EC 0022024C  48 00 00 24 */	b lbl_80224610
lbl_802245F0:
/* 802245F0 00220250  80 05 03 1C */	lwz r0, 0x31c(r5)
/* 802245F4 00220254  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 802245F8 00220258  41 82 00 14 */	beq lbl_8022460C
/* 802245FC 0022025C  7C 03 28 40 */	cmplw r3, r5
/* 80224600 00220260  40 82 00 0C */	bne lbl_8022460C
/* 80224604 00220264  38 60 00 01 */	li r3, 1
/* 80224608 00220268  48 00 00 14 */	b lbl_8022461C
lbl_8022460C:
/* 8022460C 0022026C  38 A5 03 70 */	addi r5, r5, 0x370
lbl_80224610:
/* 80224610 00220270  7C 05 20 40 */	cmplw r5, r4
/* 80224614 00220274  40 82 FF DC */	bne lbl_802245F0
/* 80224618 00220278  38 60 00 00 */	li r3, 0
lbl_8022461C:
/* 8022461C 0022027C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80224620 00220280  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80224624 00220284  7C 08 03 A6 */	mtlr r0
/* 80224628 00220288  38 21 00 10 */	addi r1, r1, 0x10
/* 8022462C 0022028C  4E 80 00 20 */	blr

.global func_80224630
func_80224630:
/* 80224630 00220290  38 00 00 00 */	li r0, 0
/* 80224634 00220294  90 03 03 1C */	stw r0, 0x31c(r3)
/* 80224638 00220298  4E 80 00 20 */	blr

.global func_8022463C
func_8022463C:
/* 8022463C 0022029C  80 6D A3 40 */	lwz r3, lbl_8063F600-_SDA_BASE_(r13)
/* 80224640 002202A0  4B FF FF 48 */	b func_80224588

.global func_80224644
func_80224644:
/* 80224644 002202A4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80224648 002202A8  7C 08 02 A6 */	mflr r0
/* 8022464C 002202AC  90 01 00 14 */	stw r0, 0x14(r1)
/* 80224650 002202B0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80224654 002202B4  7C 7F 1B 78 */	mr r31, r3
/* 80224658 002202B8  80 03 03 18 */	lwz r0, 0x318(r3)
/* 8022465C 002202BC  2C 00 00 00 */	cmpwi r0, 0
/* 80224660 002202C0  41 82 00 14 */	beq lbl_80224674
/* 80224664 002202C4  7C 03 03 78 */	mr r3, r0
/* 80224668 002202C8  4B FB 68 3D */	bl func_801DAEA4
/* 8022466C 002202CC  38 00 00 00 */	li r0, 0
/* 80224670 002202D0  90 1F 03 18 */	stw r0, 0x318(r31)
lbl_80224674:
/* 80224674 002202D4  38 00 00 00 */	li r0, 0
/* 80224678 002202D8  90 1F 03 1C */	stw r0, 0x31c(r31)
/* 8022467C 002202DC  90 1F 03 20 */	stw r0, 0x320(r31)
/* 80224680 002202E0  98 1F 03 48 */	stb r0, 0x348(r31)
/* 80224684 002202E4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80224688 002202E8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8022468C 002202EC  7C 08 03 A6 */	mtlr r0
/* 80224690 002202F0  38 21 00 10 */	addi r1, r1, 0x10
/* 80224694 002202F4  4E 80 00 20 */	blr

.global func_80224698
func_80224698:
/* 80224698 002202F8  80 03 03 1C */	lwz r0, 0x31c(r3)
/* 8022469C 002202FC  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 802246A0 00220300  4D 82 00 20 */	beqlr
/* 802246A4 00220304  48 04 D8 A4 */	b OSResumeThread
/* 802246A8 00220308  4E 80 00 20 */	blr

.global func_802246AC
func_802246AC:
/* 802246AC 0022030C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802246B0 00220310  7C 08 02 A6 */	mflr r0
/* 802246B4 00220314  90 01 00 24 */	stw r0, 0x24(r1)
/* 802246B8 00220318  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802246BC 0022031C  7C 9F 23 78 */	mr r31, r4
/* 802246C0 00220320  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802246C4 00220324  7C 7E 1B 78 */	mr r30, r3
/* 802246C8 00220328  80 03 03 1C */	lwz r0, 0x31c(r3)
/* 802246CC 0022032C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 802246D0 00220330  41 82 00 44 */	beq lbl_80224714
/* 802246D4 00220334  80 03 03 1C */	lwz r0, 0x31c(r3)
/* 802246D8 00220338  60 00 00 02 */	ori r0, r0, 2
/* 802246DC 0022033C  90 03 03 1C */	stw r0, 0x31c(r3)
/* 802246E0 00220340  48 04 CC 19 */	bl OSGetCurrentThread
/* 802246E4 00220344  7C 03 F0 40 */	cmplw r3, r30
/* 802246E8 00220348  40 82 00 10 */	bne lbl_802246F8
/* 802246EC 0022034C  38 60 00 00 */	li r3, 0
/* 802246F0 00220350  48 04 D4 5D */	bl OSExitThread
/* 802246F4 00220354  48 00 00 20 */	b lbl_80224714
lbl_802246F8:
/* 802246F8 00220358  7F C3 F3 78 */	mr r3, r30
/* 802246FC 0022035C  48 04 D5 35 */	bl OSCancelThread
/* 80224700 00220360  2C 1F 00 00 */	cmpwi r31, 0
/* 80224704 00220364  41 82 00 10 */	beq lbl_80224714
/* 80224708 00220368  7F C3 F3 78 */	mr r3, r30
/* 8022470C 0022036C  38 81 00 08 */	addi r4, r1, 8
/* 80224710 00220370  48 04 D6 F9 */	bl OSJoinThread
lbl_80224714:
/* 80224714 00220374  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80224718 00220378  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8022471C 0022037C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80224720 00220380  7C 08 03 A6 */	mtlr r0
/* 80224724 00220384  38 21 00 20 */	addi r1, r1, 0x20
/* 80224728 00220388  4E 80 00 20 */	blr

.global func_8022472C
func_8022472C:
/* 8022472C 0022038C  80 03 03 1C */	lwz r0, 0x31c(r3)
/* 80224730 00220390  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80224734 00220394  4D 82 00 20 */	beqlr
/* 80224738 00220398  48 04 DA A8 */	b OSSuspendThread
/* 8022473C 0022039C  4E 80 00 20 */	blr

.global func_80224740
func_80224740:
/* 80224740 002203A0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80224744 002203A4  7C 08 02 A6 */	mflr r0
/* 80224748 002203A8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8022474C 002203AC  80 03 03 1C */	lwz r0, 0x31c(r3)
/* 80224750 002203B0  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80224754 002203B4  40 82 00 0C */	bne lbl_80224760
/* 80224758 002203B8  38 60 00 01 */	li r3, 1
/* 8022475C 002203BC  48 00 00 14 */	b lbl_80224770
lbl_80224760:
/* 80224760 002203C0  48 04 CB B9 */	bl OSIsThreadTerminated
/* 80224764 002203C4  38 03 FF FF */	addi r0, r3, -1
/* 80224768 002203C8  7C 00 00 34 */	cntlzw r0, r0
/* 8022476C 002203CC  54 03 D9 7E */	srwi r3, r0, 5
lbl_80224770:
/* 80224770 002203D0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80224774 002203D4  7C 08 03 A6 */	mtlr r0
/* 80224778 002203D8  38 21 00 10 */	addi r1, r1, 0x10
/* 8022477C 002203DC  4E 80 00 20 */	blr

.global func_80224780
func_80224780:
/* 80224780 002203E0  38 A0 00 01 */	li r5, 1
/* 80224784 002203E4  38 6D A3 38 */	addi r3, r13, lbl_8063F5F8-_SDA_BASE_
/* 80224788 002203E8  38 80 00 04 */	li r4, 4
/* 8022478C 002203EC  38 00 00 00 */	li r0, 0
/* 80224790 002203F0  98 AD A3 38 */	stb r5, lbl_8063F5F8-_SDA_BASE_(r13)
/* 80224794 002203F4  B0 83 00 02 */	sth r4, 2(r3)
/* 80224798 002203F8  98 03 00 04 */	stb r0, 4(r3)
/* 8022479C 002203FC  4E 80 00 20 */	blr