summaryrefslogtreecommitdiff
path: root/asm/code_8022063C.s
blob: 0a6035c8babcbba5c78eda3b25ceabde65509b25 (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
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
.include "macros.inc"

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

.global func_8022063C
func_8022063C:
/* 8022063C 0021C29C  94 21 FF 00 */	stwu r1, -0x100(r1)
/* 80220640 0021C2A0  7C 08 02 A6 */	mflr r0
/* 80220644 0021C2A4  90 01 01 04 */	stw r0, 0x104(r1)
/* 80220648 0021C2A8  80 03 00 18 */	lwz r0, 0x18(r3)
/* 8022064C 0021C2AC  93 E1 00 FC */	stw r31, 0xfc(r1)
/* 80220650 0021C2B0  2C 00 00 00 */	cmpwi r0, 0
/* 80220654 0021C2B4  93 C1 00 F8 */	stw r30, 0xf8(r1)
/* 80220658 0021C2B8  7C 7E 1B 78 */	mr r30, r3
/* 8022065C 0021C2BC  41 82 01 E0 */	beq lbl_8022083C
/* 80220660 0021C2C0  7C 03 03 78 */	mr r3, r0
/* 80220664 0021C2C4  7F C4 F3 78 */	mr r4, r30
/* 80220668 0021C2C8  38 A1 00 EC */	addi r5, r1, 0xec
/* 8022066C 0021C2CC  48 05 C3 91 */	bl PSMTXMultVec
/* 80220670 0021C2D0  C0 BE 00 14 */	lfs f5, 0x14(r30)
/* 80220674 0021C2D4  3C 60 80 49 */	lis r3, lbl_80493250@ha
/* 80220678 0021C2D8  C0 41 00 EC */	lfs f2, 0xec(r1)
/* 8022067C 0021C2DC  3B E3 32 50 */	addi r31, r3, lbl_80493250@l
/* 80220680 0021C2E0  C0 21 00 F0 */	lfs f1, 0xf0(r1)
/* 80220684 0021C2E4  38 81 00 D4 */	addi r4, r1, 0xd4
/* 80220688 0021C2E8  C0 01 00 F4 */	lfs f0, 0xf4(r1)
/* 8022068C 0021C2EC  38 A1 00 E0 */	addi r5, r1, 0xe0
/* 80220690 0021C2F0  C0 9E 00 04 */	lfs f4, 4(r30)
/* 80220694 0021C2F4  C0 7E 00 00 */	lfs f3, 0(r30)
/* 80220698 0021C2F8  D0 43 32 50 */	stfs f2, 0x3250(r3)
/* 8022069C 0021C2FC  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 802206A0 0021C300  D0 3F 00 04 */	stfs f1, 4(r31)
/* 802206A4 0021C304  D0 1F 00 08 */	stfs f0, 8(r31)
/* 802206A8 0021C308  D0 61 00 D4 */	stfs f3, 0xd4(r1)
/* 802206AC 0021C30C  D0 81 00 D8 */	stfs f4, 0xd8(r1)
/* 802206B0 0021C310  D0 A1 00 DC */	stfs f5, 0xdc(r1)
/* 802206B4 0021C314  48 05 C3 49 */	bl PSMTXMultVec
/* 802206B8 0021C318  C0 41 00 E0 */	lfs f2, 0xe0(r1)
/* 802206BC 0021C31C  38 81 00 BC */	addi r4, r1, 0xbc
/* 802206C0 0021C320  C0 21 00 E4 */	lfs f1, 0xe4(r1)
/* 802206C4 0021C324  38 A1 00 C8 */	addi r5, r1, 0xc8
/* 802206C8 0021C328  C0 01 00 E8 */	lfs f0, 0xe8(r1)
/* 802206CC 0021C32C  C0 BE 00 08 */	lfs f5, 8(r30)
/* 802206D0 0021C330  C0 9E 00 10 */	lfs f4, 0x10(r30)
/* 802206D4 0021C334  C0 7E 00 00 */	lfs f3, 0(r30)
/* 802206D8 0021C338  D0 5F 00 0C */	stfs f2, 0xc(r31)
/* 802206DC 0021C33C  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 802206E0 0021C340  D0 3F 00 10 */	stfs f1, 0x10(r31)
/* 802206E4 0021C344  D0 1F 00 14 */	stfs f0, 0x14(r31)
/* 802206E8 0021C348  D0 61 00 BC */	stfs f3, 0xbc(r1)
/* 802206EC 0021C34C  D0 81 00 C0 */	stfs f4, 0xc0(r1)
/* 802206F0 0021C350  D0 A1 00 C4 */	stfs f5, 0xc4(r1)
/* 802206F4 0021C354  48 05 C3 09 */	bl PSMTXMultVec
/* 802206F8 0021C358  C0 41 00 C8 */	lfs f2, 0xc8(r1)
/* 802206FC 0021C35C  38 81 00 A4 */	addi r4, r1, 0xa4
/* 80220700 0021C360  C0 21 00 CC */	lfs f1, 0xcc(r1)
/* 80220704 0021C364  38 A1 00 B0 */	addi r5, r1, 0xb0
/* 80220708 0021C368  C0 01 00 D0 */	lfs f0, 0xd0(r1)
/* 8022070C 0021C36C  C0 BE 00 14 */	lfs f5, 0x14(r30)
/* 80220710 0021C370  C0 9E 00 10 */	lfs f4, 0x10(r30)
/* 80220714 0021C374  C0 7E 00 00 */	lfs f3, 0(r30)
/* 80220718 0021C378  D0 5F 00 18 */	stfs f2, 0x18(r31)
/* 8022071C 0021C37C  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 80220720 0021C380  D0 3F 00 1C */	stfs f1, 0x1c(r31)
/* 80220724 0021C384  D0 1F 00 20 */	stfs f0, 0x20(r31)
/* 80220728 0021C388  D0 61 00 A4 */	stfs f3, 0xa4(r1)
/* 8022072C 0021C38C  D0 81 00 A8 */	stfs f4, 0xa8(r1)
/* 80220730 0021C390  D0 A1 00 AC */	stfs f5, 0xac(r1)
/* 80220734 0021C394  48 05 C2 C9 */	bl PSMTXMultVec
/* 80220738 0021C398  C0 41 00 B0 */	lfs f2, 0xb0(r1)
/* 8022073C 0021C39C  38 81 00 8C */	addi r4, r1, 0x8c
/* 80220740 0021C3A0  C0 21 00 B4 */	lfs f1, 0xb4(r1)
/* 80220744 0021C3A4  38 A1 00 98 */	addi r5, r1, 0x98
/* 80220748 0021C3A8  C0 01 00 B8 */	lfs f0, 0xb8(r1)
/* 8022074C 0021C3AC  C0 BE 00 08 */	lfs f5, 8(r30)
/* 80220750 0021C3B0  C0 9E 00 04 */	lfs f4, 4(r30)
/* 80220754 0021C3B4  C0 7E 00 0C */	lfs f3, 0xc(r30)
/* 80220758 0021C3B8  D0 5F 00 24 */	stfs f2, 0x24(r31)
/* 8022075C 0021C3BC  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 80220760 0021C3C0  D0 3F 00 28 */	stfs f1, 0x28(r31)
/* 80220764 0021C3C4  D0 1F 00 2C */	stfs f0, 0x2c(r31)
/* 80220768 0021C3C8  D0 61 00 8C */	stfs f3, 0x8c(r1)
/* 8022076C 0021C3CC  D0 81 00 90 */	stfs f4, 0x90(r1)
/* 80220770 0021C3D0  D0 A1 00 94 */	stfs f5, 0x94(r1)
/* 80220774 0021C3D4  48 05 C2 89 */	bl PSMTXMultVec
/* 80220778 0021C3D8  C0 41 00 98 */	lfs f2, 0x98(r1)
/* 8022077C 0021C3DC  38 81 00 74 */	addi r4, r1, 0x74
/* 80220780 0021C3E0  C0 21 00 9C */	lfs f1, 0x9c(r1)
/* 80220784 0021C3E4  38 A1 00 80 */	addi r5, r1, 0x80
/* 80220788 0021C3E8  C0 01 00 A0 */	lfs f0, 0xa0(r1)
/* 8022078C 0021C3EC  C0 BE 00 14 */	lfs f5, 0x14(r30)
/* 80220790 0021C3F0  C0 9E 00 04 */	lfs f4, 4(r30)
/* 80220794 0021C3F4  C0 7E 00 0C */	lfs f3, 0xc(r30)
/* 80220798 0021C3F8  D0 5F 00 30 */	stfs f2, 0x30(r31)
/* 8022079C 0021C3FC  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 802207A0 0021C400  D0 3F 00 34 */	stfs f1, 0x34(r31)
/* 802207A4 0021C404  D0 1F 00 38 */	stfs f0, 0x38(r31)
/* 802207A8 0021C408  D0 61 00 74 */	stfs f3, 0x74(r1)
/* 802207AC 0021C40C  D0 81 00 78 */	stfs f4, 0x78(r1)
/* 802207B0 0021C410  D0 A1 00 7C */	stfs f5, 0x7c(r1)
/* 802207B4 0021C414  48 05 C2 49 */	bl PSMTXMultVec
/* 802207B8 0021C418  C0 41 00 80 */	lfs f2, 0x80(r1)
/* 802207BC 0021C41C  38 81 00 5C */	addi r4, r1, 0x5c
/* 802207C0 0021C420  C0 21 00 84 */	lfs f1, 0x84(r1)
/* 802207C4 0021C424  38 A1 00 68 */	addi r5, r1, 0x68
/* 802207C8 0021C428  C0 01 00 88 */	lfs f0, 0x88(r1)
/* 802207CC 0021C42C  C0 BE 00 08 */	lfs f5, 8(r30)
/* 802207D0 0021C430  C0 9E 00 10 */	lfs f4, 0x10(r30)
/* 802207D4 0021C434  C0 7E 00 0C */	lfs f3, 0xc(r30)
/* 802207D8 0021C438  D0 5F 00 3C */	stfs f2, 0x3c(r31)
/* 802207DC 0021C43C  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 802207E0 0021C440  D0 3F 00 40 */	stfs f1, 0x40(r31)
/* 802207E4 0021C444  D0 1F 00 44 */	stfs f0, 0x44(r31)
/* 802207E8 0021C448  D0 61 00 5C */	stfs f3, 0x5c(r1)
/* 802207EC 0021C44C  D0 81 00 60 */	stfs f4, 0x60(r1)
/* 802207F0 0021C450  D0 A1 00 64 */	stfs f5, 0x64(r1)
/* 802207F4 0021C454  48 05 C2 09 */	bl PSMTXMultVec
/* 802207F8 0021C458  C0 41 00 68 */	lfs f2, 0x68(r1)
/* 802207FC 0021C45C  38 9E 00 0C */	addi r4, r30, 0xc
/* 80220800 0021C460  C0 21 00 6C */	lfs f1, 0x6c(r1)
/* 80220804 0021C464  38 A1 00 50 */	addi r5, r1, 0x50
/* 80220808 0021C468  C0 01 00 70 */	lfs f0, 0x70(r1)
/* 8022080C 0021C46C  D0 5F 00 48 */	stfs f2, 0x48(r31)
/* 80220810 0021C470  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 80220814 0021C474  D0 3F 00 4C */	stfs f1, 0x4c(r31)
/* 80220818 0021C478  D0 1F 00 50 */	stfs f0, 0x50(r31)
/* 8022081C 0021C47C  48 05 C1 E1 */	bl PSMTXMultVec
/* 80220820 0021C480  C0 41 00 50 */	lfs f2, 0x50(r1)
/* 80220824 0021C484  C0 21 00 54 */	lfs f1, 0x54(r1)
/* 80220828 0021C488  C0 01 00 58 */	lfs f0, 0x58(r1)
/* 8022082C 0021C48C  D0 5F 00 54 */	stfs f2, 0x54(r31)
/* 80220830 0021C490  D0 3F 00 58 */	stfs f1, 0x58(r31)
/* 80220834 0021C494  D0 1F 00 5C */	stfs f0, 0x5c(r31)
/* 80220838 0021C498  48 00 00 CC */	b lbl_80220904
lbl_8022083C:
/* 8022083C 0021C49C  C0 43 00 00 */	lfs f2, 0(r3)
/* 80220840 0021C4A0  3C A0 80 49 */	lis r5, lbl_80493250@ha
/* 80220844 0021C4A4  C0 23 00 04 */	lfs f1, 4(r3)
/* 80220848 0021C4A8  38 85 32 50 */	addi r4, r5, lbl_80493250@l
/* 8022084C 0021C4AC  C0 03 00 08 */	lfs f0, 8(r3)
/* 80220850 0021C4B0  C0 63 00 14 */	lfs f3, 0x14(r3)
/* 80220854 0021C4B4  C0 83 00 10 */	lfs f4, 0x10(r3)
/* 80220858 0021C4B8  C0 A3 00 0C */	lfs f5, 0xc(r3)
/* 8022085C 0021C4BC  D0 45 32 50 */	stfs f2, 0x3250(r5)
/* 80220860 0021C4C0  D0 24 00 04 */	stfs f1, 4(r4)
/* 80220864 0021C4C4  D0 04 00 08 */	stfs f0, 8(r4)
/* 80220868 0021C4C8  D0 41 00 44 */	stfs f2, 0x44(r1)
/* 8022086C 0021C4CC  D0 21 00 48 */	stfs f1, 0x48(r1)
/* 80220870 0021C4D0  D0 61 00 4C */	stfs f3, 0x4c(r1)
/* 80220874 0021C4D4  D0 44 00 0C */	stfs f2, 0xc(r4)
/* 80220878 0021C4D8  D0 24 00 10 */	stfs f1, 0x10(r4)
/* 8022087C 0021C4DC  D0 64 00 14 */	stfs f3, 0x14(r4)
/* 80220880 0021C4E0  D0 41 00 38 */	stfs f2, 0x38(r1)
/* 80220884 0021C4E4  D0 81 00 3C */	stfs f4, 0x3c(r1)
/* 80220888 0021C4E8  D0 01 00 40 */	stfs f0, 0x40(r1)
/* 8022088C 0021C4EC  D0 44 00 18 */	stfs f2, 0x18(r4)
/* 80220890 0021C4F0  D0 84 00 1C */	stfs f4, 0x1c(r4)
/* 80220894 0021C4F4  D0 04 00 20 */	stfs f0, 0x20(r4)
/* 80220898 0021C4F8  D0 41 00 2C */	stfs f2, 0x2c(r1)
/* 8022089C 0021C4FC  D0 81 00 30 */	stfs f4, 0x30(r1)
/* 802208A0 0021C500  D0 61 00 34 */	stfs f3, 0x34(r1)
/* 802208A4 0021C504  D0 44 00 24 */	stfs f2, 0x24(r4)
/* 802208A8 0021C508  D0 84 00 28 */	stfs f4, 0x28(r4)
/* 802208AC 0021C50C  D0 64 00 2C */	stfs f3, 0x2c(r4)
/* 802208B0 0021C510  D0 A1 00 20 */	stfs f5, 0x20(r1)
/* 802208B4 0021C514  D0 21 00 24 */	stfs f1, 0x24(r1)
/* 802208B8 0021C518  D0 01 00 28 */	stfs f0, 0x28(r1)
/* 802208BC 0021C51C  D0 A4 00 30 */	stfs f5, 0x30(r4)
/* 802208C0 0021C520  D0 24 00 34 */	stfs f1, 0x34(r4)
/* 802208C4 0021C524  D0 04 00 38 */	stfs f0, 0x38(r4)
/* 802208C8 0021C528  D0 A1 00 14 */	stfs f5, 0x14(r1)
/* 802208CC 0021C52C  D0 21 00 18 */	stfs f1, 0x18(r1)
/* 802208D0 0021C530  D0 61 00 1C */	stfs f3, 0x1c(r1)
/* 802208D4 0021C534  D0 A4 00 3C */	stfs f5, 0x3c(r4)
/* 802208D8 0021C538  D0 24 00 40 */	stfs f1, 0x40(r4)
/* 802208DC 0021C53C  D0 64 00 44 */	stfs f3, 0x44(r4)
/* 802208E0 0021C540  D0 A1 00 08 */	stfs f5, 8(r1)
/* 802208E4 0021C544  D0 81 00 0C */	stfs f4, 0xc(r1)
/* 802208E8 0021C548  D0 01 00 10 */	stfs f0, 0x10(r1)
/* 802208EC 0021C54C  D0 A4 00 48 */	stfs f5, 0x48(r4)
/* 802208F0 0021C550  D0 84 00 4C */	stfs f4, 0x4c(r4)
/* 802208F4 0021C554  D0 04 00 50 */	stfs f0, 0x50(r4)
/* 802208F8 0021C558  D0 A4 00 54 */	stfs f5, 0x54(r4)
/* 802208FC 0021C55C  D0 84 00 58 */	stfs f4, 0x58(r4)
/* 80220900 0021C560  D0 64 00 5C */	stfs f3, 0x5c(r4)
lbl_80220904:
/* 80220904 0021C564  80 01 01 04 */	lwz r0, 0x104(r1)
/* 80220908 0021C568  83 E1 00 FC */	lwz r31, 0xfc(r1)
/* 8022090C 0021C56C  83 C1 00 F8 */	lwz r30, 0xf8(r1)
/* 80220910 0021C570  7C 08 03 A6 */	mtlr r0
/* 80220914 0021C574  38 21 01 00 */	addi r1, r1, 0x100
/* 80220918 0021C578  4E 80 00 20 */	blr

.global func_8022091C
func_8022091C:
/* 8022091C 0021C57C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80220920 0021C580  7C 08 02 A6 */	mflr r0
/* 80220924 0021C584  90 01 00 24 */	stw r0, 0x24(r1)
/* 80220928 0021C588  38 A1 00 08 */	addi r5, r1, 8
/* 8022092C 0021C58C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80220930 0021C590  7C 9F 23 78 */	mr r31, r4
/* 80220934 0021C594  38 84 00 0C */	addi r4, r4, 0xc
/* 80220938 0021C598  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8022093C 0021C59C  7C 7E 1B 78 */	mr r30, r3
/* 80220940 0021C5A0  7F E3 FB 78 */	mr r3, r31
/* 80220944 0021C5A4  48 05 C3 81 */	bl PSVECAdd
/* 80220948 0021C5A8  C0 22 9B F0 */	lfs f1, lbl_806421F0-_SDA2_BASE_(r2)
/* 8022094C 0021C5AC  7F C4 F3 78 */	mr r4, r30
/* 80220950 0021C5B0  38 61 00 08 */	addi r3, r1, 8
/* 80220954 0021C5B4  48 05 C3 B9 */	bl PSVECScale
/* 80220958 0021C5B8  80 7F 00 18 */	lwz r3, 0x18(r31)
/* 8022095C 0021C5BC  2C 03 00 00 */	cmpwi r3, 0
/* 80220960 0021C5C0  41 82 00 10 */	beq lbl_80220970
/* 80220964 0021C5C4  7F C4 F3 78 */	mr r4, r30
/* 80220968 0021C5C8  7F C5 F3 78 */	mr r5, r30
/* 8022096C 0021C5CC  48 05 C0 91 */	bl PSMTXMultVec
lbl_80220970:
/* 80220970 0021C5D0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80220974 0021C5D4  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80220978 0021C5D8  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8022097C 0021C5DC  7C 08 03 A6 */	mtlr r0
/* 80220980 0021C5E0  38 21 00 20 */	addi r1, r1, 0x20
/* 80220984 0021C5E4  4E 80 00 20 */	blr

.global func_80220988
func_80220988:
/* 80220988 0021C5E8  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8022098C 0021C5EC  7C 08 02 A6 */	mflr r0
/* 80220990 0021C5F0  90 01 00 44 */	stw r0, 0x44(r1)
/* 80220994 0021C5F4  80 04 00 18 */	lwz r0, 0x18(r4)
/* 80220998 0021C5F8  93 E1 00 3C */	stw r31, 0x3c(r1)
/* 8022099C 0021C5FC  2C 00 00 00 */	cmpwi r0, 0
/* 802209A0 0021C600  93 C1 00 38 */	stw r30, 0x38(r1)
/* 802209A4 0021C604  93 A1 00 34 */	stw r29, 0x34(r1)
/* 802209A8 0021C608  7C 9D 23 78 */	mr r29, r4
/* 802209AC 0021C60C  93 81 00 30 */	stw r28, 0x30(r1)
/* 802209B0 0021C610  7C 7C 1B 78 */	mr r28, r3
/* 802209B4 0021C614  40 82 00 14 */	bne lbl_802209C8
/* 802209B8 0021C618  7F 85 E3 78 */	mr r5, r28
/* 802209BC 0021C61C  38 64 00 0C */	addi r3, r4, 0xc
/* 802209C0 0021C620  48 05 C3 29 */	bl PSVECSubtract
/* 802209C4 0021C624  48 00 01 0C */	b lbl_80220AD0
lbl_802209C8:
/* 802209C8 0021C628  7F A3 EB 78 */	mr r3, r29
/* 802209CC 0021C62C  4B FF FC 71 */	bl func_8022063C
/* 802209D0 0021C630  3F E0 80 49 */	lis r31, lbl_80493250@ha
/* 802209D4 0021C634  80 7D 00 18 */	lwz r3, 0x18(r29)
/* 802209D8 0021C638  38 9F 32 50 */	addi r4, r31, lbl_80493250@l
/* 802209DC 0021C63C  7C 85 23 78 */	mr r5, r4
/* 802209E0 0021C640  48 05 C0 71 */	bl PSMTXMultVecSR
/* 802209E4 0021C644  38 7F 32 50 */	addi r3, r31, 0x3250
/* 802209E8 0021C648  C0 5F 32 50 */	lfs f2, 0x3250(r31)
/* 802209EC 0021C64C  C0 23 00 04 */	lfs f1, 4(r3)
/* 802209F0 0021C650  3B E3 00 0C */	addi r31, r3, 0xc
/* 802209F4 0021C654  C0 03 00 08 */	lfs f0, 8(r3)
/* 802209F8 0021C658  3B C0 00 01 */	li r30, 1
/* 802209FC 0021C65C  D0 41 00 20 */	stfs f2, 0x20(r1)
/* 80220A00 0021C660  D0 21 00 24 */	stfs f1, 0x24(r1)
/* 80220A04 0021C664  D0 01 00 28 */	stfs f0, 0x28(r1)
/* 80220A08 0021C668  D0 41 00 14 */	stfs f2, 0x14(r1)
/* 80220A0C 0021C66C  D0 21 00 18 */	stfs f1, 0x18(r1)
/* 80220A10 0021C670  D0 01 00 1C */	stfs f0, 0x1c(r1)
lbl_80220A14:
/* 80220A14 0021C674  80 7D 00 18 */	lwz r3, 0x18(r29)
/* 80220A18 0021C678  7F E4 FB 78 */	mr r4, r31
/* 80220A1C 0021C67C  7F E5 FB 78 */	mr r5, r31
/* 80220A20 0021C680  48 05 C0 31 */	bl PSMTXMultVecSR
/* 80220A24 0021C684  C0 7F 00 00 */	lfs f3, 0(r31)
/* 80220A28 0021C688  C0 01 00 20 */	lfs f0, 0x20(r1)
/* 80220A2C 0021C68C  C0 5F 00 04 */	lfs f2, 4(r31)
/* 80220A30 0021C690  C0 3F 00 08 */	lfs f1, 8(r31)
/* 80220A34 0021C694  FC 03 00 40 */	fcmpo cr0, f3, f0
/* 80220A38 0021C698  D0 61 00 08 */	stfs f3, 8(r1)
/* 80220A3C 0021C69C  D0 41 00 0C */	stfs f2, 0xc(r1)
/* 80220A40 0021C6A0  D0 21 00 10 */	stfs f1, 0x10(r1)
/* 80220A44 0021C6A4  40 80 00 08 */	bge lbl_80220A4C
/* 80220A48 0021C6A8  D0 61 00 20 */	stfs f3, 0x20(r1)
lbl_80220A4C:
/* 80220A4C 0021C6AC  C0 21 00 08 */	lfs f1, 8(r1)
/* 80220A50 0021C6B0  C0 01 00 14 */	lfs f0, 0x14(r1)
/* 80220A54 0021C6B4  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220A58 0021C6B8  40 81 00 08 */	ble lbl_80220A60
/* 80220A5C 0021C6BC  D0 21 00 14 */	stfs f1, 0x14(r1)
lbl_80220A60:
/* 80220A60 0021C6C0  C0 21 00 0C */	lfs f1, 0xc(r1)
/* 80220A64 0021C6C4  C0 01 00 24 */	lfs f0, 0x24(r1)
/* 80220A68 0021C6C8  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220A6C 0021C6CC  40 80 00 08 */	bge lbl_80220A74
/* 80220A70 0021C6D0  D0 21 00 24 */	stfs f1, 0x24(r1)
lbl_80220A74:
/* 80220A74 0021C6D4  C0 21 00 0C */	lfs f1, 0xc(r1)
/* 80220A78 0021C6D8  C0 01 00 18 */	lfs f0, 0x18(r1)
/* 80220A7C 0021C6DC  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220A80 0021C6E0  40 81 00 08 */	ble lbl_80220A88
/* 80220A84 0021C6E4  D0 21 00 18 */	stfs f1, 0x18(r1)
lbl_80220A88:
/* 80220A88 0021C6E8  C0 21 00 10 */	lfs f1, 0x10(r1)
/* 80220A8C 0021C6EC  C0 01 00 28 */	lfs f0, 0x28(r1)
/* 80220A90 0021C6F0  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220A94 0021C6F4  40 80 00 08 */	bge lbl_80220A9C
/* 80220A98 0021C6F8  D0 21 00 28 */	stfs f1, 0x28(r1)
lbl_80220A9C:
/* 80220A9C 0021C6FC  C0 21 00 10 */	lfs f1, 0x10(r1)
/* 80220AA0 0021C700  C0 01 00 1C */	lfs f0, 0x1c(r1)
/* 80220AA4 0021C704  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220AA8 0021C708  40 81 00 08 */	ble lbl_80220AB0
/* 80220AAC 0021C70C  D0 21 00 1C */	stfs f1, 0x1c(r1)
lbl_80220AB0:
/* 80220AB0 0021C710  3B DE 00 01 */	addi r30, r30, 1
/* 80220AB4 0021C714  3B FF 00 0C */	addi r31, r31, 0xc
/* 80220AB8 0021C718  2C 1E 00 08 */	cmpwi r30, 8
/* 80220ABC 0021C71C  41 80 FF 58 */	blt lbl_80220A14
/* 80220AC0 0021C720  7F 85 E3 78 */	mr r5, r28
/* 80220AC4 0021C724  38 61 00 14 */	addi r3, r1, 0x14
/* 80220AC8 0021C728  38 81 00 20 */	addi r4, r1, 0x20
/* 80220ACC 0021C72C  48 05 C2 1D */	bl PSVECSubtract
lbl_80220AD0:
/* 80220AD0 0021C730  80 01 00 44 */	lwz r0, 0x44(r1)
/* 80220AD4 0021C734  83 E1 00 3C */	lwz r31, 0x3c(r1)
/* 80220AD8 0021C738  83 C1 00 38 */	lwz r30, 0x38(r1)
/* 80220ADC 0021C73C  83 A1 00 34 */	lwz r29, 0x34(r1)
/* 80220AE0 0021C740  83 81 00 30 */	lwz r28, 0x30(r1)
/* 80220AE4 0021C744  7C 08 03 A6 */	mtlr r0
/* 80220AE8 0021C748  38 21 00 40 */	addi r1, r1, 0x40
/* 80220AEC 0021C74C  4E 80 00 20 */	blr

.global func_80220AF0
func_80220AF0:
/* 80220AF0 0021C750  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80220AF4 0021C754  7C 08 02 A6 */	mflr r0
/* 80220AF8 0021C758  90 01 00 14 */	stw r0, 0x14(r1)
/* 80220AFC 0021C75C  4B FF FB 41 */	bl func_8022063C
/* 80220B00 0021C760  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80220B04 0021C764  3C 60 80 49 */	lis r3, lbl_80493250@ha
/* 80220B08 0021C768  38 63 32 50 */	addi r3, r3, lbl_80493250@l
/* 80220B0C 0021C76C  7C 08 03 A6 */	mtlr r0
/* 80220B10 0021C770  38 21 00 10 */	addi r1, r1, 0x10
/* 80220B14 0021C774  4E 80 00 20 */	blr

.global func_80220B18
func_80220B18:
/* 80220B18 0021C778  94 21 FF 90 */	stwu r1, -0x70(r1)
/* 80220B1C 0021C77C  7C 08 02 A6 */	mflr r0
/* 80220B20 0021C780  90 01 00 74 */	stw r0, 0x74(r1)
/* 80220B24 0021C784  4B FF FB 19 */	bl func_8022063C
/* 80220B28 0021C788  3C A0 80 49 */	lis r5, lbl_80493250@ha
/* 80220B2C 0021C78C  80 6D A3 D8 */	lwz r3, render_context_ptr-_SDA_BASE_(r13)
/* 80220B30 0021C790  38 81 00 08 */	addi r4, r1, 8
/* 80220B34 0021C794  38 C0 00 08 */	li r6, 8
/* 80220B38 0021C798  38 A5 32 50 */	addi r5, r5, lbl_80493250@l
/* 80220B3C 0021C79C  48 01 21 E9 */	bl func_80232D24
/* 80220B40 0021C7A0  2C 03 00 00 */	cmpwi r3, 0
/* 80220B44 0021C7A4  41 82 00 28 */	beq lbl_80220B6C
/* 80220B48 0021C7A8  41 80 00 2C */	blt lbl_80220B74
/* 80220B4C 0021C7AC  2C 03 00 03 */	cmpwi r3, 3
/* 80220B50 0021C7B0  40 80 00 24 */	bge lbl_80220B74
/* 80220B54 0021C7B4  80 6D A3 D8 */	lwz r3, render_context_ptr-_SDA_BASE_(r13)
/* 80220B58 0021C7B8  38 A1 00 08 */	addi r5, r1, 8
/* 80220B5C 0021C7BC  38 C0 00 08 */	li r6, 8
/* 80220B60 0021C7C0  38 83 00 A8 */	addi r4, r3, 0xa8
/* 80220B64 0021C7C4  48 01 26 BD */	bl func_80233220
/* 80220B68 0021C7C8  48 00 00 10 */	b lbl_80220B78
lbl_80220B6C:
/* 80220B6C 0021C7CC  38 60 00 00 */	li r3, 0
/* 80220B70 0021C7D0  48 00 00 08 */	b lbl_80220B78
lbl_80220B74:
/* 80220B74 0021C7D4  38 60 00 01 */	li r3, 1
lbl_80220B78:
/* 80220B78 0021C7D8  80 01 00 74 */	lwz r0, 0x74(r1)
/* 80220B7C 0021C7DC  7C 08 03 A6 */	mtlr r0
/* 80220B80 0021C7E0  38 21 00 70 */	addi r1, r1, 0x70
/* 80220B84 0021C7E4  4E 80 00 20 */	blr

.global func_80220B88
func_80220B88:
/* 80220B88 0021C7E8  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 80220B8C 0021C7EC  7C 08 02 A6 */	mflr r0
/* 80220B90 0021C7F0  C0 44 00 00 */	lfs f2, 0(r4)
/* 80220B94 0021C7F4  90 01 00 54 */	stw r0, 0x54(r1)
/* 80220B98 0021C7F8  80 03 00 18 */	lwz r0, 0x18(r3)
/* 80220B9C 0021C7FC  93 E1 00 4C */	stw r31, 0x4c(r1)
/* 80220BA0 0021C800  7C 7F 1B 78 */	mr r31, r3
/* 80220BA4 0021C804  C0 24 00 04 */	lfs f1, 4(r4)
/* 80220BA8 0021C808  2C 00 00 00 */	cmpwi r0, 0
/* 80220BAC 0021C80C  C0 04 00 08 */	lfs f0, 8(r4)
/* 80220BB0 0021C810  D0 41 00 08 */	stfs f2, 8(r1)
/* 80220BB4 0021C814  D0 21 00 0C */	stfs f1, 0xc(r1)
/* 80220BB8 0021C818  D0 01 00 10 */	stfs f0, 0x10(r1)
/* 80220BBC 0021C81C  41 82 00 20 */	beq lbl_80220BDC
/* 80220BC0 0021C820  7C 03 03 78 */	mr r3, r0
/* 80220BC4 0021C824  38 81 00 18 */	addi r4, r1, 0x18
/* 80220BC8 0021C828  48 05 B4 E1 */	bl PSMTXInverse
/* 80220BCC 0021C82C  38 81 00 08 */	addi r4, r1, 8
/* 80220BD0 0021C830  38 61 00 18 */	addi r3, r1, 0x18
/* 80220BD4 0021C834  7C 85 23 78 */	mr r5, r4
/* 80220BD8 0021C838  48 05 BE 25 */	bl PSMTXMultVec
lbl_80220BDC:
/* 80220BDC 0021C83C  C0 61 00 08 */	lfs f3, 8(r1)
/* 80220BE0 0021C840  C0 1F 00 00 */	lfs f0, 0(r31)
/* 80220BE4 0021C844  FC 03 00 40 */	fcmpo cr0, f3, f0
/* 80220BE8 0021C848  40 80 00 0C */	bge lbl_80220BF4
/* 80220BEC 0021C84C  38 60 00 00 */	li r3, 0
/* 80220BF0 0021C850  48 00 00 74 */	b lbl_80220C64
lbl_80220BF4:
/* 80220BF4 0021C854  C0 41 00 0C */	lfs f2, 0xc(r1)
/* 80220BF8 0021C858  C0 1F 00 04 */	lfs f0, 4(r31)
/* 80220BFC 0021C85C  FC 02 00 40 */	fcmpo cr0, f2, f0
/* 80220C00 0021C860  40 80 00 0C */	bge lbl_80220C0C
/* 80220C04 0021C864  38 60 00 00 */	li r3, 0
/* 80220C08 0021C868  48 00 00 5C */	b lbl_80220C64
lbl_80220C0C:
/* 80220C0C 0021C86C  C0 21 00 10 */	lfs f1, 0x10(r1)
/* 80220C10 0021C870  C0 1F 00 08 */	lfs f0, 8(r31)
/* 80220C14 0021C874  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220C18 0021C878  40 80 00 0C */	bge lbl_80220C24
/* 80220C1C 0021C87C  38 60 00 00 */	li r3, 0
/* 80220C20 0021C880  48 00 00 44 */	b lbl_80220C64
lbl_80220C24:
/* 80220C24 0021C884  C0 1F 00 0C */	lfs f0, 0xc(r31)
/* 80220C28 0021C888  FC 03 00 40 */	fcmpo cr0, f3, f0
/* 80220C2C 0021C88C  40 81 00 0C */	ble lbl_80220C38
/* 80220C30 0021C890  38 60 00 00 */	li r3, 0
/* 80220C34 0021C894  48 00 00 30 */	b lbl_80220C64
lbl_80220C38:
/* 80220C38 0021C898  C0 1F 00 10 */	lfs f0, 0x10(r31)
/* 80220C3C 0021C89C  FC 02 00 40 */	fcmpo cr0, f2, f0
/* 80220C40 0021C8A0  40 81 00 0C */	ble lbl_80220C4C
/* 80220C44 0021C8A4  38 60 00 00 */	li r3, 0
/* 80220C48 0021C8A8  48 00 00 1C */	b lbl_80220C64
lbl_80220C4C:
/* 80220C4C 0021C8AC  C0 1F 00 14 */	lfs f0, 0x14(r31)
/* 80220C50 0021C8B0  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220C54 0021C8B4  7C 00 00 26 */	mfcr r0
/* 80220C58 0021C8B8  54 00 17 FE */	rlwinm r0, r0, 2, 0x1f, 0x1f
/* 80220C5C 0021C8BC  7C 00 00 34 */	cntlzw r0, r0
/* 80220C60 0021C8C0  54 03 D9 7E */	srwi r3, r0, 5
lbl_80220C64:
/* 80220C64 0021C8C4  80 01 00 54 */	lwz r0, 0x54(r1)
/* 80220C68 0021C8C8  83 E1 00 4C */	lwz r31, 0x4c(r1)
/* 80220C6C 0021C8CC  7C 08 03 A6 */	mtlr r0
/* 80220C70 0021C8D0  38 21 00 50 */	addi r1, r1, 0x50
/* 80220C74 0021C8D4  4E 80 00 20 */	blr

.global func_80220C78
func_80220C78:
/* 80220C78 0021C8D8  94 21 FF A0 */	stwu r1, -0x60(r1)
/* 80220C7C 0021C8DC  7C 08 02 A6 */	mflr r0
/* 80220C80 0021C8E0  90 01 00 64 */	stw r0, 0x64(r1)
/* 80220C84 0021C8E4  93 E1 00 5C */	stw r31, 0x5c(r1)
/* 80220C88 0021C8E8  93 C1 00 58 */	stw r30, 0x58(r1)
/* 80220C8C 0021C8EC  93 A1 00 54 */	stw r29, 0x54(r1)
/* 80220C90 0021C8F0  7C 7D 1B 78 */	mr r29, r3
/* 80220C94 0021C8F4  7C 83 23 78 */	mr r3, r4
/* 80220C98 0021C8F8  4B FF F9 A5 */	bl func_8022063C
/* 80220C9C 0021C8FC  3F E0 80 49 */	lis r31, lbl_80493250@ha
/* 80220CA0 0021C900  3B C0 00 00 */	li r30, 0
/* 80220CA4 0021C904  3B FF 32 50 */	addi r31, r31, lbl_80493250@l
lbl_80220CA8:
/* 80220CA8 0021C908  C0 5F 00 00 */	lfs f2, 0(r31)
/* 80220CAC 0021C90C  C0 3F 00 04 */	lfs f1, 4(r31)
/* 80220CB0 0021C910  C0 1F 00 08 */	lfs f0, 8(r31)
/* 80220CB4 0021C914  D0 41 00 08 */	stfs f2, 8(r1)
/* 80220CB8 0021C918  D0 21 00 0C */	stfs f1, 0xc(r1)
/* 80220CBC 0021C91C  D0 01 00 10 */	stfs f0, 0x10(r1)
/* 80220CC0 0021C920  80 7D 00 18 */	lwz r3, 0x18(r29)
/* 80220CC4 0021C924  2C 03 00 00 */	cmpwi r3, 0
/* 80220CC8 0021C928  41 82 00 1C */	beq lbl_80220CE4
/* 80220CCC 0021C92C  38 81 00 18 */	addi r4, r1, 0x18
/* 80220CD0 0021C930  48 05 B3 D9 */	bl PSMTXInverse
/* 80220CD4 0021C934  38 81 00 08 */	addi r4, r1, 8
/* 80220CD8 0021C938  38 61 00 18 */	addi r3, r1, 0x18
/* 80220CDC 0021C93C  7C 85 23 78 */	mr r5, r4
/* 80220CE0 0021C940  48 05 BD 1D */	bl PSMTXMultVec
lbl_80220CE4:
/* 80220CE4 0021C944  C0 21 00 08 */	lfs f1, 8(r1)
/* 80220CE8 0021C948  C0 1D 00 00 */	lfs f0, 0(r29)
/* 80220CEC 0021C94C  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220CF0 0021C950  40 80 00 08 */	bge lbl_80220CF8
/* 80220CF4 0021C954  D0 3D 00 00 */	stfs f1, 0(r29)
lbl_80220CF8:
/* 80220CF8 0021C958  C0 21 00 08 */	lfs f1, 8(r1)
/* 80220CFC 0021C95C  C0 1D 00 0C */	lfs f0, 0xc(r29)
/* 80220D00 0021C960  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220D04 0021C964  40 81 00 08 */	ble lbl_80220D0C
/* 80220D08 0021C968  D0 3D 00 0C */	stfs f1, 0xc(r29)
lbl_80220D0C:
/* 80220D0C 0021C96C  C0 21 00 0C */	lfs f1, 0xc(r1)
/* 80220D10 0021C970  C0 1D 00 04 */	lfs f0, 4(r29)
/* 80220D14 0021C974  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220D18 0021C978  40 80 00 08 */	bge lbl_80220D20
/* 80220D1C 0021C97C  D0 3D 00 04 */	stfs f1, 4(r29)
lbl_80220D20:
/* 80220D20 0021C980  C0 21 00 0C */	lfs f1, 0xc(r1)
/* 80220D24 0021C984  C0 1D 00 10 */	lfs f0, 0x10(r29)
/* 80220D28 0021C988  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220D2C 0021C98C  40 81 00 08 */	ble lbl_80220D34
/* 80220D30 0021C990  D0 3D 00 10 */	stfs f1, 0x10(r29)
lbl_80220D34:
/* 80220D34 0021C994  C0 21 00 10 */	lfs f1, 0x10(r1)
/* 80220D38 0021C998  C0 1D 00 08 */	lfs f0, 8(r29)
/* 80220D3C 0021C99C  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220D40 0021C9A0  40 80 00 08 */	bge lbl_80220D48
/* 80220D44 0021C9A4  D0 3D 00 08 */	stfs f1, 8(r29)
lbl_80220D48:
/* 80220D48 0021C9A8  C0 21 00 10 */	lfs f1, 0x10(r1)
/* 80220D4C 0021C9AC  C0 1D 00 14 */	lfs f0, 0x14(r29)
/* 80220D50 0021C9B0  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80220D54 0021C9B4  40 81 00 08 */	ble lbl_80220D5C
/* 80220D58 0021C9B8  D0 3D 00 14 */	stfs f1, 0x14(r29)
lbl_80220D5C:
/* 80220D5C 0021C9BC  3B DE 00 01 */	addi r30, r30, 1
/* 80220D60 0021C9C0  3B FF 00 0C */	addi r31, r31, 0xc
/* 80220D64 0021C9C4  2C 1E 00 08 */	cmpwi r30, 8
/* 80220D68 0021C9C8  41 80 FF 40 */	blt lbl_80220CA8
/* 80220D6C 0021C9CC  80 01 00 64 */	lwz r0, 0x64(r1)
/* 80220D70 0021C9D0  83 E1 00 5C */	lwz r31, 0x5c(r1)
/* 80220D74 0021C9D4  83 C1 00 58 */	lwz r30, 0x58(r1)
/* 80220D78 0021C9D8  83 A1 00 54 */	lwz r29, 0x54(r1)
/* 80220D7C 0021C9DC  7C 08 03 A6 */	mtlr r0
/* 80220D80 0021C9E0  38 21 00 60 */	addi r1, r1, 0x60
/* 80220D84 0021C9E4  4E 80 00 20 */	blr

.global func_80220D88
func_80220D88:
/* 80220D88 0021C9E8  38 C0 00 01 */	li r6, 1
/* 80220D8C 0021C9EC  39 0D A2 B0 */	addi r8, r13, lbl_8063F570-_SDA_BASE_
/* 80220D90 0021C9F0  38 A0 00 04 */	li r5, 4
/* 80220D94 0021C9F4  38 00 00 00 */	li r0, 0
/* 80220D98 0021C9F8  3C 60 80 49 */	lis r3, lbl_80493250@ha
/* 80220D9C 0021C9FC  3C 80 80 03 */	lis r4, func_8002A294@ha
/* 80220DA0 0021CA00  98 CD A2 B0 */	stb r6, lbl_8063F570-_SDA_BASE_(r13)
/* 80220DA4 0021CA04  38 63 32 50 */	addi r3, r3, lbl_80493250@l
/* 80220DA8 0021CA08  38 84 A2 94 */	addi r4, r4, func_8002A294@l
/* 80220DAC 0021CA0C  38 C0 00 0C */	li r6, 0xc
/* 80220DB0 0021CA10  B0 A8 00 02 */	sth r5, 2(r8)
/* 80220DB4 0021CA14  38 A0 00 00 */	li r5, 0
/* 80220DB8 0021CA18  38 E0 00 08 */	li r7, 8
/* 80220DBC 0021CA1C  98 08 00 04 */	stb r0, 4(r8)
/* 80220DC0 0021CA20  4B FA 60 A8 */	b __construct_array