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
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global PSMTXIdentity
PSMTXIdentity:
/* 8027BF2C 00277B8C C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2)
/* 8027BF30 00277B90 C0 22 A0 70 */ lfs f1, lbl_80642670-_SDA2_BASE_(r2)
/* 8027BF34 00277B94 F0 03 00 08 */ psq_st f0, 8(r3), 0, qr0
/* 8027BF38 00277B98 10 41 04 A0 */ ps_merge10 f2, f1, f0
/* 8027BF3C 00277B9C 10 20 0C 60 */ ps_merge01 f1, f0, f1
/* 8027BF40 00277BA0 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0
/* 8027BF44 00277BA4 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0
/* 8027BF48 00277BA8 F0 23 00 10 */ psq_st f1, 16(r3), 0, qr0
/* 8027BF4C 00277BAC F0 43 00 00 */ psq_st f2, 0(r3), 0, qr0
/* 8027BF50 00277BB0 F0 43 00 28 */ psq_st f2, 40(r3), 0, qr0
/* 8027BF54 00277BB4 4E 80 00 20 */ blr
.global PSMTXCopy
PSMTXCopy:
/* 8027BF58 00277BB8 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
/* 8027BF5C 00277BBC F0 04 00 00 */ psq_st f0, 0(r4), 0, qr0
/* 8027BF60 00277BC0 E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0
/* 8027BF64 00277BC4 F0 24 00 08 */ psq_st f1, 8(r4), 0, qr0
/* 8027BF68 00277BC8 E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0
/* 8027BF6C 00277BCC F0 44 00 10 */ psq_st f2, 16(r4), 0, qr0
/* 8027BF70 00277BD0 E0 63 00 18 */ psq_l f3, 24(r3), 0, qr0
/* 8027BF74 00277BD4 F0 64 00 18 */ psq_st f3, 24(r4), 0, qr0
/* 8027BF78 00277BD8 E0 83 00 20 */ psq_l f4, 32(r3), 0, qr0
/* 8027BF7C 00277BDC F0 84 00 20 */ psq_st f4, 32(r4), 0, qr0
/* 8027BF80 00277BE0 E0 A3 00 28 */ psq_l f5, 40(r3), 0, qr0
/* 8027BF84 00277BE4 F0 A4 00 28 */ psq_st f5, 40(r4), 0, qr0
/* 8027BF88 00277BE8 4E 80 00 20 */ blr
.global PSMTXConcat
PSMTXConcat:
/* 8027BF8C 00277BEC 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 8027BF90 00277BF0 E0 03 00 00 */ psq_l f0, 0(r3), 0, qr0
/* 8027BF94 00277BF4 D9 C1 00 08 */ stfd f14, 8(r1)
/* 8027BF98 00277BF8 E0 C4 00 00 */ psq_l f6, 0(r4), 0, qr0
/* 8027BF9C 00277BFC 3C C0 80 64 */ lis r6, lbl_8063DB08@ha
/* 8027BFA0 00277C00 E0 E4 00 08 */ psq_l f7, 8(r4), 0, qr0
/* 8027BFA4 00277C04 D9 E1 00 10 */ stfd f15, 0x10(r1)
/* 8027BFA8 00277C08 38 C6 DB 08 */ addi r6, r6, lbl_8063DB08@l
/* 8027BFAC 00277C0C DB E1 00 28 */ stfd f31, 0x28(r1)
/* 8027BFB0 00277C10 E1 04 00 10 */ psq_l f8, 16(r4), 0, qr0
/* 8027BFB4 00277C14 11 86 00 18 */ ps_muls0 f12, f6, f0
/* 8027BFB8 00277C18 E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0
/* 8027BFBC 00277C1C 11 A7 00 18 */ ps_muls0 f13, f7, f0
/* 8027BFC0 00277C20 E3 E6 00 00 */ psq_l f31, 0(r6), 0, qr0
/* 8027BFC4 00277C24 11 C6 00 98 */ ps_muls0 f14, f6, f2
/* 8027BFC8 00277C28 E1 24 00 18 */ psq_l f9, 24(r4), 0, qr0
/* 8027BFCC 00277C2C 11 E7 00 98 */ ps_muls0 f15, f7, f2
/* 8027BFD0 00277C30 E0 23 00 08 */ psq_l f1, 8(r3), 0, qr0
/* 8027BFD4 00277C34 11 88 60 1E */ ps_madds1 f12, f8, f0, f12
/* 8027BFD8 00277C38 E0 63 00 18 */ psq_l f3, 24(r3), 0, qr0
/* 8027BFDC 00277C3C 11 C8 70 9E */ ps_madds1 f14, f8, f2, f14
/* 8027BFE0 00277C40 E1 44 00 20 */ psq_l f10, 32(r4), 0, qr0
/* 8027BFE4 00277C44 11 A9 68 1E */ ps_madds1 f13, f9, f0, f13
/* 8027BFE8 00277C48 E1 64 00 28 */ psq_l f11, 40(r4), 0, qr0
/* 8027BFEC 00277C4C 11 E9 78 9E */ ps_madds1 f15, f9, f2, f15
/* 8027BFF0 00277C50 E0 83 00 20 */ psq_l f4, 32(r3), 0, qr0
/* 8027BFF4 00277C54 E0 A3 00 28 */ psq_l f5, 40(r3), 0, qr0
/* 8027BFF8 00277C58 11 8A 60 5C */ ps_madds0 f12, f10, f1, f12
/* 8027BFFC 00277C5C 11 AB 68 5C */ ps_madds0 f13, f11, f1, f13
/* 8027C000 00277C60 11 CA 70 DC */ ps_madds0 f14, f10, f3, f14
/* 8027C004 00277C64 11 EB 78 DC */ ps_madds0 f15, f11, f3, f15
/* 8027C008 00277C68 F1 85 00 00 */ psq_st f12, 0(r5), 0, qr0
/* 8027C00C 00277C6C 10 46 01 18 */ ps_muls0 f2, f6, f4
/* 8027C010 00277C70 11 BF 68 5E */ ps_madds1 f13, f31, f1, f13
/* 8027C014 00277C74 10 07 01 18 */ ps_muls0 f0, f7, f4
/* 8027C018 00277C78 F1 C5 00 10 */ psq_st f14, 16(r5), 0, qr0
/* 8027C01C 00277C7C 11 FF 78 DE */ ps_madds1 f15, f31, f3, f15
/* 8027C020 00277C80 F1 A5 00 08 */ psq_st f13, 8(r5), 0, qr0
/* 8027C024 00277C84 10 48 11 1E */ ps_madds1 f2, f8, f4, f2
/* 8027C028 00277C88 10 09 01 1E */ ps_madds1 f0, f9, f4, f0
/* 8027C02C 00277C8C 10 4A 11 5C */ ps_madds0 f2, f10, f5, f2
/* 8027C030 00277C90 C9 C1 00 08 */ lfd f14, 8(r1)
/* 8027C034 00277C94 F1 E5 00 18 */ psq_st f15, 24(r5), 0, qr0
/* 8027C038 00277C98 10 0B 01 5C */ ps_madds0 f0, f11, f5, f0
/* 8027C03C 00277C9C F0 45 00 20 */ psq_st f2, 32(r5), 0, qr0
/* 8027C040 00277CA0 10 1F 01 5E */ ps_madds1 f0, f31, f5, f0
/* 8027C044 00277CA4 C9 E1 00 10 */ lfd f15, 0x10(r1)
/* 8027C048 00277CA8 F0 05 00 28 */ psq_st f0, 40(r5), 0, qr0
/* 8027C04C 00277CAC CB E1 00 28 */ lfd f31, 0x28(r1)
/* 8027C050 00277CB0 38 21 00 40 */ addi r1, r1, 0x40
/* 8027C054 00277CB4 4E 80 00 20 */ blr
.global PSMTXTranspose
PSMTXTranspose:
/* 8027C058 00277CB8 E0 23 00 00 */ psq_l f1, 0(r3), 0, qr0
/* 8027C05C 00277CBC E0 43 00 10 */ psq_l f2, 16(r3), 0, qr0
/* 8027C060 00277CC0 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2)
/* 8027C064 00277CC4 10 81 14 20 */ ps_merge00 f4, f1, f2
/* 8027C068 00277CC8 E0 63 80 08 */ psq_l f3, 8(r3), 1, qr0
/* 8027C06C 00277CCC 10 A1 14 E0 */ ps_merge11 f5, f1, f2
/* 8027C070 00277CD0 E0 43 80 18 */ psq_l f2, 24(r3), 1, qr0
/* 8027C074 00277CD4 E0 23 00 20 */ psq_l f1, 32(r3), 0, qr0
/* 8027C078 00277CD8 10 43 14 20 */ ps_merge00 f2, f3, f2
/* 8027C07C 00277CDC F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0
/* 8027C080 00277CE0 10 81 04 20 */ ps_merge00 f4, f1, f0
/* 8027C084 00277CE4 C0 63 00 28 */ lfs f3, 0x28(r3)
/* 8027C088 00277CE8 F0 A4 00 10 */ psq_st f5, 16(r4), 0, qr0
/* 8027C08C 00277CEC 10 A1 04 A0 */ ps_merge10 f5, f1, f0
/* 8027C090 00277CF0 D0 04 00 2C */ stfs f0, 0x2c(r4)
/* 8027C094 00277CF4 F0 44 00 20 */ psq_st f2, 32(r4), 0, qr0
/* 8027C098 00277CF8 F0 84 00 08 */ psq_st f4, 8(r4), 0, qr0
/* 8027C09C 00277CFC F0 A4 00 18 */ psq_st f5, 24(r4), 0, qr0
/* 8027C0A0 00277D00 D0 64 00 28 */ stfs f3, 0x28(r4)
/* 8027C0A4 00277D04 4E 80 00 20 */ blr
.global PSMTXInverse
PSMTXInverse:
/* 8027C0A8 00277D08 E0 03 80 00 */ psq_l f0, 0(r3), 1, qr0
/* 8027C0AC 00277D0C E0 23 00 04 */ psq_l f1, 4(r3), 0, qr0
/* 8027C0B0 00277D10 E0 43 80 10 */ psq_l f2, 16(r3), 1, qr0
/* 8027C0B4 00277D14 10 C1 04 A0 */ ps_merge10 f6, f1, f0
/* 8027C0B8 00277D18 E0 63 00 14 */ psq_l f3, 20(r3), 0, qr0
/* 8027C0BC 00277D1C E0 83 80 20 */ psq_l f4, 32(r3), 1, qr0
/* 8027C0C0 00277D20 10 E3 14 A0 */ ps_merge10 f7, f3, f2
/* 8027C0C4 00277D24 E0 A3 00 24 */ psq_l f5, 36(r3), 0, qr0
/* 8027C0C8 00277D28 11 63 01 B2 */ ps_mul f11, f3, f6
/* 8027C0CC 00277D2C 11 A5 01 F2 */ ps_mul f13, f5, f7
/* 8027C0D0 00277D30 11 05 24 A0 */ ps_merge10 f8, f5, f4
/* 8027C0D4 00277D34 11 61 59 F8 */ ps_msub f11, f1, f7, f11
/* 8027C0D8 00277D38 11 81 02 32 */ ps_mul f12, f1, f8
/* 8027C0DC 00277D3C 11 A3 6A 38 */ ps_msub f13, f3, f8, f13
/* 8027C0E0 00277D40 11 43 01 32 */ ps_mul f10, f3, f4
/* 8027C0E4 00277D44 11 85 61 B8 */ ps_msub f12, f5, f6, f12
/* 8027C0E8 00277D48 11 20 01 72 */ ps_mul f9, f0, f5
/* 8027C0EC 00277D4C 11 01 00 B2 */ ps_mul f8, f1, f2
/* 8027C0F0 00277D50 10 C6 30 28 */ ps_sub f6, f6, f6
/* 8027C0F4 00277D54 11 42 51 78 */ ps_msub f10, f2, f5, f10
/* 8027C0F8 00277D58 10 E0 03 72 */ ps_mul f7, f0, f13
/* 8027C0FC 00277D5C 11 21 49 38 */ ps_msub f9, f1, f4, f9
/* 8027C100 00277D60 10 E2 3B 3A */ ps_madd f7, f2, f12, f7
/* 8027C104 00277D64 11 00 40 F8 */ ps_msub f8, f0, f3, f8
/* 8027C108 00277D68 10 E4 3A FA */ ps_madd f7, f4, f11, f7
/* 8027C10C 00277D6C 10 07 30 40 */ ps_cmpo0 cr0, f7, f6
/* 8027C110 00277D70 40 82 00 0C */ bne lbl_8027C11C
/* 8027C114 00277D74 38 60 00 00 */ li r3, 0
/* 8027C118 00277D78 4E 80 00 20 */ blr
lbl_8027C11C:
/* 8027C11C 00277D7C EC 00 38 30 */ fres f0, f7
/* 8027C120 00277D80 10 C0 00 2A */ ps_add f6, f0, f0
/* 8027C124 00277D84 10 A0 00 32 */ ps_mul f5, f0, f0
/* 8027C128 00277D88 10 07 31 7C */ ps_nmsub f0, f7, f5, f6
/* 8027C12C 00277D8C C0 23 00 0C */ lfs f1, 0xc(r3)
/* 8027C130 00277D90 11 AD 00 18 */ ps_muls0 f13, f13, f0
/* 8027C134 00277D94 C0 43 00 1C */ lfs f2, 0x1c(r3)
/* 8027C138 00277D98 11 8C 00 18 */ ps_muls0 f12, f12, f0
/* 8027C13C 00277D9C C0 63 00 2C */ lfs f3, 0x2c(r3)
/* 8027C140 00277DA0 11 6B 00 18 */ ps_muls0 f11, f11, f0
/* 8027C144 00277DA4 10 AD 64 20 */ ps_merge00 f5, f13, f12
/* 8027C148 00277DA8 11 4A 00 18 */ ps_muls0 f10, f10, f0
/* 8027C14C 00277DAC 10 8D 64 E0 */ ps_merge11 f4, f13, f12
/* 8027C150 00277DB0 11 29 00 18 */ ps_muls0 f9, f9, f0
/* 8027C154 00277DB4 F0 A4 00 00 */ psq_st f5, 0(r4), 0, qr0
/* 8027C158 00277DB8 10 CD 00 72 */ ps_mul f6, f13, f1
/* 8027C15C 00277DBC F0 84 00 10 */ psq_st f4, 16(r4), 0, qr0
/* 8027C160 00277DC0 11 08 00 18 */ ps_muls0 f8, f8, f0
/* 8027C164 00277DC4 10 CC 30 BA */ ps_madd f6, f12, f2, f6
/* 8027C168 00277DC8 F1 44 80 20 */ psq_st f10, 32(r4), 1, qr0
/* 8027C16C 00277DCC 10 CB 30 FE */ ps_nmadd f6, f11, f3, f6
/* 8027C170 00277DD0 F1 24 80 24 */ psq_st f9, 36(r4), 1, qr0
/* 8027C174 00277DD4 10 EA 00 72 */ ps_mul f7, f10, f1
/* 8027C178 00277DD8 10 AB 34 20 */ ps_merge00 f5, f11, f6
/* 8027C17C 00277DDC F1 04 80 28 */ psq_st f8, 40(r4), 1, qr0
/* 8027C180 00277DE0 10 8B 34 E0 */ ps_merge11 f4, f11, f6
/* 8027C184 00277DE4 F0 A4 00 08 */ psq_st f5, 8(r4), 0, qr0
/* 8027C188 00277DE8 10 E9 38 BA */ ps_madd f7, f9, f2, f7
/* 8027C18C 00277DEC F0 84 00 18 */ psq_st f4, 24(r4), 0, qr0
/* 8027C190 00277DF0 10 E8 38 FE */ ps_nmadd f7, f8, f3, f7
/* 8027C194 00277DF4 38 60 00 01 */ li r3, 1
/* 8027C198 00277DF8 F0 E4 80 2C */ psq_st f7, 44(r4), 1, qr0
/* 8027C19C 00277DFC 4E 80 00 20 */ blr
.global PSMTXInvXpose
PSMTXInvXpose:
/* 8027C1A0 00277E00 E0 03 80 00 */ psq_l f0, 0(r3), 1, qr0
/* 8027C1A4 00277E04 E0 23 00 04 */ psq_l f1, 4(r3), 0, qr0
/* 8027C1A8 00277E08 E0 43 80 10 */ psq_l f2, 16(r3), 1, qr0
/* 8027C1AC 00277E0C 10 C1 04 A0 */ ps_merge10 f6, f1, f0
/* 8027C1B0 00277E10 E0 63 00 14 */ psq_l f3, 20(r3), 0, qr0
/* 8027C1B4 00277E14 E0 83 80 20 */ psq_l f4, 32(r3), 1, qr0
/* 8027C1B8 00277E18 10 E3 14 A0 */ ps_merge10 f7, f3, f2
/* 8027C1BC 00277E1C E0 A3 00 24 */ psq_l f5, 36(r3), 0, qr0
/* 8027C1C0 00277E20 11 63 01 B2 */ ps_mul f11, f3, f6
/* 8027C1C4 00277E24 11 05 24 A0 */ ps_merge10 f8, f5, f4
/* 8027C1C8 00277E28 11 A5 01 F2 */ ps_mul f13, f5, f7
/* 8027C1CC 00277E2C 11 61 59 F8 */ ps_msub f11, f1, f7, f11
/* 8027C1D0 00277E30 11 81 02 32 */ ps_mul f12, f1, f8
/* 8027C1D4 00277E34 11 A3 6A 38 */ ps_msub f13, f3, f8, f13
/* 8027C1D8 00277E38 11 85 61 B8 */ ps_msub f12, f5, f6, f12
/* 8027C1DC 00277E3C 11 43 01 32 */ ps_mul f10, f3, f4
/* 8027C1E0 00277E40 11 20 01 72 */ ps_mul f9, f0, f5
/* 8027C1E4 00277E44 11 01 00 B2 */ ps_mul f8, f1, f2
/* 8027C1E8 00277E48 11 42 51 78 */ ps_msub f10, f2, f5, f10
/* 8027C1EC 00277E4C 11 21 49 38 */ ps_msub f9, f1, f4, f9
/* 8027C1F0 00277E50 11 00 40 F8 */ ps_msub f8, f0, f3, f8
/* 8027C1F4 00277E54 10 E0 03 72 */ ps_mul f7, f0, f13
/* 8027C1F8 00277E58 10 21 08 28 */ ps_sub f1, f1, f1
/* 8027C1FC 00277E5C 10 E2 3B 3A */ ps_madd f7, f2, f12, f7
/* 8027C200 00277E60 10 E4 3A FA */ ps_madd f7, f4, f11, f7
/* 8027C204 00277E64 10 07 08 40 */ ps_cmpo0 cr0, f7, f1
/* 8027C208 00277E68 40 82 00 0C */ bne lbl_8027C214
/* 8027C20C 00277E6C 38 60 00 00 */ li r3, 0
/* 8027C210 00277E70 4E 80 00 20 */ blr
lbl_8027C214:
/* 8027C214 00277E74 EC 00 38 30 */ fres f0, f7
/* 8027C218 00277E78 F0 24 80 0C */ psq_st f1, 12(r4), 1, qr0
/* 8027C21C 00277E7C 10 C0 00 2A */ ps_add f6, f0, f0
/* 8027C220 00277E80 10 A0 00 32 */ ps_mul f5, f0, f0
/* 8027C224 00277E84 F0 24 80 1C */ psq_st f1, 28(r4), 1, qr0
/* 8027C228 00277E88 10 07 31 7C */ ps_nmsub f0, f7, f5, f6
/* 8027C22C 00277E8C F0 24 80 2C */ psq_st f1, 44(r4), 1, qr0
/* 8027C230 00277E90 11 AD 00 18 */ ps_muls0 f13, f13, f0
/* 8027C234 00277E94 11 8C 00 18 */ ps_muls0 f12, f12, f0
/* 8027C238 00277E98 11 6B 00 18 */ ps_muls0 f11, f11, f0
/* 8027C23C 00277E9C F1 A4 00 00 */ psq_st f13, 0(r4), 0, qr0
/* 8027C240 00277EA0 F1 84 00 10 */ psq_st f12, 16(r4), 0, qr0
/* 8027C244 00277EA4 11 4A 00 18 */ ps_muls0 f10, f10, f0
/* 8027C248 00277EA8 11 29 00 18 */ ps_muls0 f9, f9, f0
/* 8027C24C 00277EAC F1 64 00 20 */ psq_st f11, 32(r4), 0, qr0
/* 8027C250 00277EB0 F1 44 80 08 */ psq_st f10, 8(r4), 1, qr0
/* 8027C254 00277EB4 11 08 00 18 */ ps_muls0 f8, f8, f0
/* 8027C258 00277EB8 38 60 00 01 */ li r3, 1
/* 8027C25C 00277EBC F1 24 80 18 */ psq_st f9, 24(r4), 1, qr0
/* 8027C260 00277EC0 F1 04 80 28 */ psq_st f8, 40(r4), 1, qr0
/* 8027C264 00277EC4 4E 80 00 20 */ blr
.global PSMTXRotRad
PSMTXRotRad:
/* 8027C268 00277EC8 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 8027C26C 00277ECC 7C 08 02 A6 */ mflr r0
/* 8027C270 00277ED0 90 01 00 34 */ stw r0, 0x34(r1)
/* 8027C274 00277ED4 DB E1 00 20 */ stfd f31, 0x20(r1)
/* 8027C278 00277ED8 F3 E1 00 28 */ psq_st f31, 40(r1), 0, qr0
/* 8027C27C 00277EDC DB C1 00 10 */ stfd f30, 0x10(r1)
/* 8027C280 00277EE0 F3 C1 00 18 */ psq_st f30, 24(r1), 0, qr0
/* 8027C284 00277EE4 FF C0 08 90 */ fmr f30, f1
/* 8027C288 00277EE8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8027C28C 00277EEC 7C 9F 23 78 */ mr r31, r4
/* 8027C290 00277EF0 93 C1 00 08 */ stw r30, 8(r1)
/* 8027C294 00277EF4 7C 7E 1B 78 */ mr r30, r3
/* 8027C298 00277EF8 4B F5 81 ED */ bl sin
/* 8027C29C 00277EFC FF E0 08 18 */ frsp f31, f1
/* 8027C2A0 00277F00 FC 20 F0 90 */ fmr f1, f30
/* 8027C2A4 00277F04 4B F5 7D D5 */ bl cos
/* 8027C2A8 00277F08 FC 40 08 18 */ frsp f2, f1
/* 8027C2AC 00277F0C 7F C3 F3 78 */ mr r3, r30
/* 8027C2B0 00277F10 FC 20 F8 90 */ fmr f1, f31
/* 8027C2B4 00277F14 7F E4 07 74 */ extsb r4, r31
/* 8027C2B8 00277F18 48 00 00 2D */ bl PSMTXRotTrig
/* 8027C2BC 00277F1C E3 E1 00 28 */ psq_l f31, 40(r1), 0, qr0
/* 8027C2C0 00277F20 CB E1 00 20 */ lfd f31, 0x20(r1)
/* 8027C2C4 00277F24 E3 C1 00 18 */ psq_l f30, 24(r1), 0, qr0
/* 8027C2C8 00277F28 CB C1 00 10 */ lfd f30, 0x10(r1)
/* 8027C2CC 00277F2C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8027C2D0 00277F30 80 01 00 34 */ lwz r0, 0x34(r1)
/* 8027C2D4 00277F34 83 C1 00 08 */ lwz r30, 8(r1)
/* 8027C2D8 00277F38 7C 08 03 A6 */ mtlr r0
/* 8027C2DC 00277F3C 38 21 00 30 */ addi r1, r1, 0x30
/* 8027C2E0 00277F40 4E 80 00 20 */ blr
.global PSMTXRotTrig
PSMTXRotTrig:
/* 8027C2E4 00277F44 FC A0 08 18 */ frsp f5, f1
/* 8027C2E8 00277F48 60 80 00 20 */ ori r0, r4, 0x20
/* 8027C2EC 00277F4C FC 80 10 18 */ frsp f4, f2
/* 8027C2F0 00277F50 28 00 00 78 */ cmplwi r0, 0x78
/* 8027C2F4 00277F54 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2)
/* 8027C2F8 00277F58 10 40 28 50 */ ps_neg f2, f5
/* 8027C2FC 00277F5C C0 22 A0 70 */ lfs f1, lbl_80642670-_SDA2_BASE_(r2)
/* 8027C300 00277F60 41 82 00 18 */ beq lbl_8027C318
/* 8027C304 00277F64 28 00 00 79 */ cmplwi r0, 0x79
/* 8027C308 00277F68 41 82 00 38 */ beq lbl_8027C340
/* 8027C30C 00277F6C 28 00 00 7A */ cmplwi r0, 0x7a
/* 8027C310 00277F70 41 82 00 5C */ beq lbl_8027C36C
/* 8027C314 00277F74 4E 80 00 20 */ blr
lbl_8027C318:
/* 8027C318 00277F78 10 65 24 20 */ ps_merge00 f3, f5, f4
/* 8027C31C 00277F7C F0 23 80 00 */ psq_st f1, 0(r3), 1, qr0
/* 8027C320 00277F80 10 24 14 20 */ ps_merge00 f1, f4, f2
/* 8027C324 00277F84 F0 03 00 04 */ psq_st f0, 4(r3), 0, qr0
/* 8027C328 00277F88 F0 03 00 0C */ psq_st f0, 12(r3), 0, qr0
/* 8027C32C 00277F8C F0 03 00 1C */ psq_st f0, 28(r3), 0, qr0
/* 8027C330 00277F90 F0 03 80 2C */ psq_st f0, 44(r3), 1, qr0
/* 8027C334 00277F94 F0 63 00 24 */ psq_st f3, 36(r3), 0, qr0
/* 8027C338 00277F98 F0 23 00 14 */ psq_st f1, 20(r3), 0, qr0
/* 8027C33C 00277F9C 4E 80 00 20 */ blr
lbl_8027C340:
/* 8027C340 00277FA0 10 64 04 20 */ ps_merge00 f3, f4, f0
/* 8027C344 00277FA4 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0
/* 8027C348 00277FA8 10 20 0C 20 */ ps_merge00 f1, f0, f1
/* 8027C34C 00277FAC 10 42 04 20 */ ps_merge00 f2, f2, f0
/* 8027C350 00277FB0 10 05 04 20 */ ps_merge00 f0, f5, f0
/* 8027C354 00277FB4 F0 63 00 00 */ psq_st f3, 0(r3), 0, qr0
/* 8027C358 00277FB8 F0 63 00 28 */ psq_st f3, 40(r3), 0, qr0
/* 8027C35C 00277FBC F0 23 00 10 */ psq_st f1, 16(r3), 0, qr0
/* 8027C360 00277FC0 F0 03 00 08 */ psq_st f0, 8(r3), 0, qr0
/* 8027C364 00277FC4 F0 43 00 20 */ psq_st f2, 32(r3), 0, qr0
/* 8027C368 00277FC8 4E 80 00 20 */ blr
lbl_8027C36C:
/* 8027C36C 00277FCC 10 65 24 20 */ ps_merge00 f3, f5, f4
/* 8027C370 00277FD0 F0 03 00 08 */ psq_st f0, 8(r3), 0, qr0
/* 8027C374 00277FD4 10 44 14 20 */ ps_merge00 f2, f4, f2
/* 8027C378 00277FD8 10 21 04 20 */ ps_merge00 f1, f1, f0
/* 8027C37C 00277FDC F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0
/* 8027C380 00277FE0 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0
/* 8027C384 00277FE4 F0 63 00 10 */ psq_st f3, 16(r3), 0, qr0
/* 8027C388 00277FE8 F0 43 00 00 */ psq_st f2, 0(r3), 0, qr0
/* 8027C38C 00277FEC F0 23 00 28 */ psq_st f1, 40(r3), 0, qr0
/* 8027C390 00277FF0 4E 80 00 20 */ blr
.global __PSMTXRotAxisRadInternal
__PSMTXRotAxisRadInternal:
/* 8027C394 00277FF4 E0 64 00 00 */ psq_l f3, 0(r4), 0, qr0
/* 8027C398 00277FF8 FD 60 10 18 */ frsp f11, f2
/* 8027C39C 00277FFC C1 42 A0 78 */ lfs f10, lbl_80642678-_SDA2_BASE_(r2)
/* 8027C3A0 00278000 FD 80 08 18 */ frsp f12, f1
/* 8027C3A4 00278004 10 83 00 F2 */ ps_mul f4, f3, f3
/* 8027C3A8 00278008 C0 44 00 08 */ lfs f2, 8(r4)
/* 8027C3AC 0027800C ED 0A 50 2A */ fadds f8, f10, f10
/* 8027C3B0 00278010 C1 22 A0 7C */ lfs f9, lbl_8064267C-_SDA2_BASE_(r2)
/* 8027C3B4 00278014 EC 2A 50 28 */ fsubs f1, f10, f10
/* 8027C3B8 00278018 10 A2 20 BA */ ps_madd f5, f2, f2, f4
/* 8027C3BC 0027801C EC 08 58 28 */ fsubs f0, f8, f11
/* 8027C3C0 00278020 11 6B 5C 20 */ ps_merge00 f11, f11, f11
/* 8027C3C4 00278024 10 C5 20 94 */ ps_sum0 f6, f5, f2, f4
/* 8027C3C8 00278028 FC E0 30 34 */ frsqrte f7, f6
/* 8027C3CC 0027802C EC 87 01 F2 */ fmuls f4, f7, f7
/* 8027C3D0 00278030 EC A7 02 B2 */ fmuls f5, f7, f10
/* 8027C3D4 00278034 EC 84 49 BC */ fnmsubs f4, f4, f6, f9
/* 8027C3D8 00278038 EC E4 01 72 */ fmuls f7, f4, f5
/* 8027C3DC 0027803C 10 63 01 D8 */ ps_muls0 f3, f3, f7
/* 8027C3E0 00278040 10 42 01 D8 */ ps_muls0 f2, f2, f7
/* 8027C3E4 00278044 10 C3 00 18 */ ps_muls0 f6, f3, f0
/* 8027C3E8 00278048 10 E2 00 18 */ ps_muls0 f7, f2, f0
/* 8027C3EC 0027804C 11 43 03 18 */ ps_muls0 f10, f3, f12
/* 8027C3F0 00278050 10 A6 00 DA */ ps_muls1 f5, f6, f3
/* 8027C3F4 00278054 10 86 00 D8 */ ps_muls0 f4, f6, f3
/* 8027C3F8 00278058 10 C6 00 98 */ ps_muls0 f6, f6, f2
/* 8027C3FC 0027805C EC 02 2B 3C */ fnmsubs f0, f2, f12, f5
/* 8027C400 00278060 10 60 50 50 */ ps_neg f3, f10
/* 8027C404 00278064 ED 02 2B 3A */ fmadds f8, f2, f12, f5
/* 8027C408 00278068 10 84 58 14 */ ps_sum0 f4, f4, f0, f11
/* 8027C40C 0027806C 10 03 30 54 */ ps_sum0 f0, f3, f1, f6
/* 8027C410 00278070 10 E7 00 98 */ ps_muls0 f7, f7, f2
/* 8027C414 00278074 11 26 50 54 */ ps_sum0 f9, f6, f1, f10
/* 8027C418 00278078 F0 83 00 00 */ psq_st f4, 0(r3), 0, qr0
/* 8027C41C 0027807C 10 66 19 94 */ ps_sum0 f3, f6, f6, f3
/* 8027C420 00278080 10 AB 2A 16 */ ps_sum1 f5, f11, f8, f5
/* 8027C424 00278084 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0
/* 8027C428 00278088 10 E7 58 54 */ ps_sum0 f7, f7, f1, f11
/* 8027C42C 0027808C 10 CA 30 D6 */ ps_sum1 f6, f10, f3, f6
/* 8027C430 00278090 F1 23 00 08 */ psq_st f9, 8(r3), 0, qr0
/* 8027C434 00278094 F0 A3 00 10 */ psq_st f5, 16(r3), 0, qr0
/* 8027C438 00278098 F0 C3 00 20 */ psq_st f6, 32(r3), 0, qr0
/* 8027C43C 0027809C F0 E3 00 28 */ psq_st f7, 40(r3), 0, qr0
/* 8027C440 002780A0 4E 80 00 20 */ blr
.global PSMTXRotAxisRad
PSMTXRotAxisRad:
/* 8027C444 002780A4 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 8027C448 002780A8 7C 08 02 A6 */ mflr r0
/* 8027C44C 002780AC 90 01 00 34 */ stw r0, 0x34(r1)
/* 8027C450 002780B0 DB E1 00 20 */ stfd f31, 0x20(r1)
/* 8027C454 002780B4 F3 E1 00 28 */ psq_st f31, 40(r1), 0, qr0
/* 8027C458 002780B8 DB C1 00 10 */ stfd f30, 0x10(r1)
/* 8027C45C 002780BC F3 C1 00 18 */ psq_st f30, 24(r1), 0, qr0
/* 8027C460 002780C0 FF C0 08 90 */ fmr f30, f1
/* 8027C464 002780C4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8027C468 002780C8 7C 9F 23 78 */ mr r31, r4
/* 8027C46C 002780CC 93 C1 00 08 */ stw r30, 8(r1)
/* 8027C470 002780D0 7C 7E 1B 78 */ mr r30, r3
/* 8027C474 002780D4 4B F5 80 11 */ bl sin
/* 8027C478 002780D8 FF E0 08 18 */ frsp f31, f1
/* 8027C47C 002780DC FC 20 F0 90 */ fmr f1, f30
/* 8027C480 002780E0 4B F5 7B F9 */ bl cos
/* 8027C484 002780E4 FC 40 08 18 */ frsp f2, f1
/* 8027C488 002780E8 7F C3 F3 78 */ mr r3, r30
/* 8027C48C 002780EC FC 20 F8 90 */ fmr f1, f31
/* 8027C490 002780F0 7F E4 FB 78 */ mr r4, r31
/* 8027C494 002780F4 4B FF FF 01 */ bl __PSMTXRotAxisRadInternal
/* 8027C498 002780F8 E3 E1 00 28 */ psq_l f31, 40(r1), 0, qr0
/* 8027C49C 002780FC CB E1 00 20 */ lfd f31, 0x20(r1)
/* 8027C4A0 00278100 E3 C1 00 18 */ psq_l f30, 24(r1), 0, qr0
/* 8027C4A4 00278104 CB C1 00 10 */ lfd f30, 0x10(r1)
/* 8027C4A8 00278108 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8027C4AC 0027810C 80 01 00 34 */ lwz r0, 0x34(r1)
/* 8027C4B0 00278110 83 C1 00 08 */ lwz r30, 8(r1)
/* 8027C4B4 00278114 7C 08 03 A6 */ mtlr r0
/* 8027C4B8 00278118 38 21 00 30 */ addi r1, r1, 0x30
/* 8027C4BC 0027811C 4E 80 00 20 */ blr
.global PSMTXTrans
PSMTXTrans:
/* 8027C4C0 00278120 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2)
/* 8027C4C4 00278124 C0 82 A0 70 */ lfs f4, lbl_80642670-_SDA2_BASE_(r2)
/* 8027C4C8 00278128 D0 23 00 0C */ stfs f1, 0xc(r3)
/* 8027C4CC 0027812C D0 43 00 1C */ stfs f2, 0x1c(r3)
/* 8027C4D0 00278130 F0 03 00 04 */ psq_st f0, 4(r3), 0, qr0
/* 8027C4D4 00278134 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0
/* 8027C4D8 00278138 D0 03 00 10 */ stfs f0, 0x10(r3)
/* 8027C4DC 0027813C D0 83 00 14 */ stfs f4, 0x14(r3)
/* 8027C4E0 00278140 D0 03 00 18 */ stfs f0, 0x18(r3)
/* 8027C4E4 00278144 D0 83 00 28 */ stfs f4, 0x28(r3)
/* 8027C4E8 00278148 D0 63 00 2C */ stfs f3, 0x2c(r3)
/* 8027C4EC 0027814C D0 83 00 00 */ stfs f4, 0(r3)
/* 8027C4F0 00278150 4E 80 00 20 */ blr
.global PSMTXTransApply
PSMTXTransApply:
/* 8027C4F4 00278154 E0 83 00 00 */ psq_l f4, 0(r3), 0, qr0
/* 8027C4F8 00278158 FC 20 08 18 */ frsp f1, f1
/* 8027C4FC 0027815C E0 A3 00 08 */ psq_l f5, 8(r3), 0, qr0
/* 8027C500 00278160 FC 40 10 18 */ frsp f2, f2
/* 8027C504 00278164 E0 E3 00 18 */ psq_l f7, 24(r3), 0, qr0
/* 8027C508 00278168 FC 60 18 18 */ frsp f3, f3
/* 8027C50C 0027816C E1 03 00 28 */ psq_l f8, 40(r3), 0, qr0
/* 8027C510 00278170 F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0
/* 8027C514 00278174 10 A1 29 56 */ ps_sum1 f5, f1, f5, f5
/* 8027C518 00278178 E0 C3 00 10 */ psq_l f6, 16(r3), 0, qr0
/* 8027C51C 0027817C F0 A4 00 08 */ psq_st f5, 8(r4), 0, qr0
/* 8027C520 00278180 10 E2 39 D6 */ ps_sum1 f7, f2, f7, f7
/* 8027C524 00278184 E1 23 00 20 */ psq_l f9, 32(r3), 0, qr0
/* 8027C528 00278188 F0 C4 00 10 */ psq_st f6, 16(r4), 0, qr0
/* 8027C52C 0027818C 11 03 42 16 */ ps_sum1 f8, f3, f8, f8
/* 8027C530 00278190 F0 E4 00 18 */ psq_st f7, 24(r4), 0, qr0
/* 8027C534 00278194 F1 24 00 20 */ psq_st f9, 32(r4), 0, qr0
/* 8027C538 00278198 F1 04 00 28 */ psq_st f8, 40(r4), 0, qr0
/* 8027C53C 0027819C 4E 80 00 20 */ blr
.global PSMTXScale
PSMTXScale:
/* 8027C540 002781A0 C0 02 A0 74 */ lfs f0, lbl_80642674-_SDA2_BASE_(r2)
/* 8027C544 002781A4 D0 23 00 00 */ stfs f1, 0(r3)
/* 8027C548 002781A8 F0 03 00 04 */ psq_st f0, 4(r3), 0, qr0
/* 8027C54C 002781AC F0 03 00 0C */ psq_st f0, 12(r3), 0, qr0
/* 8027C550 002781B0 D0 43 00 14 */ stfs f2, 0x14(r3)
/* 8027C554 002781B4 F0 03 00 18 */ psq_st f0, 24(r3), 0, qr0
/* 8027C558 002781B8 F0 03 00 20 */ psq_st f0, 32(r3), 0, qr0
/* 8027C55C 002781BC D0 63 00 28 */ stfs f3, 0x28(r3)
/* 8027C560 002781C0 D0 03 00 2C */ stfs f0, 0x2c(r3)
/* 8027C564 002781C4 4E 80 00 20 */ blr
.global PSMTXScaleApply
PSMTXScaleApply:
/* 8027C568 002781C8 FC 20 08 18 */ frsp f1, f1
/* 8027C56C 002781CC E0 83 00 00 */ psq_l f4, 0(r3), 0, qr0
/* 8027C570 002781D0 FC 40 10 18 */ frsp f2, f2
/* 8027C574 002781D4 E0 A3 00 08 */ psq_l f5, 8(r3), 0, qr0
/* 8027C578 002781D8 FC 60 18 18 */ frsp f3, f3
/* 8027C57C 002781DC 10 84 00 58 */ ps_muls0 f4, f4, f1
/* 8027C580 002781E0 E0 C3 00 10 */ psq_l f6, 16(r3), 0, qr0
/* 8027C584 002781E4 10 A5 00 58 */ ps_muls0 f5, f5, f1
/* 8027C588 002781E8 E0 E3 00 18 */ psq_l f7, 24(r3), 0, qr0
/* 8027C58C 002781EC 10 C6 00 98 */ ps_muls0 f6, f6, f2
/* 8027C590 002781F0 E1 03 00 20 */ psq_l f8, 32(r3), 0, qr0
/* 8027C594 002781F4 F0 84 00 00 */ psq_st f4, 0(r4), 0, qr0
/* 8027C598 002781F8 10 E7 00 98 */ ps_muls0 f7, f7, f2
/* 8027C59C 002781FC E0 43 00 28 */ psq_l f2, 40(r3), 0, qr0
/* 8027C5A0 00278200 F0 A4 00 08 */ psq_st f5, 8(r4), 0, qr0
/* 8027C5A4 00278204 11 08 00 D8 */ ps_muls0 f8, f8, f3
/* 8027C5A8 00278208 F0 C4 00 10 */ psq_st f6, 16(r4), 0, qr0
/* 8027C5AC 0027820C 10 42 00 D8 */ ps_muls0 f2, f2, f3
/* 8027C5B0 00278210 F0 E4 00 18 */ psq_st f7, 24(r4), 0, qr0
/* 8027C5B4 00278214 F1 04 00 20 */ psq_st f8, 32(r4), 0, qr0
/* 8027C5B8 00278218 F0 44 00 28 */ psq_st f2, 40(r4), 0, qr0
/* 8027C5BC 0027821C 4E 80 00 20 */ blr
.global PSMTXQuat
PSMTXQuat:
/* 8027C5C0 00278220 E0 84 00 00 */ psq_l f4, 0(r4), 0, qr0
/* 8027C5C4 00278224 E0 A4 00 08 */ psq_l f5, 8(r4), 0, qr0
/* 8027C5C8 00278228 10 C4 01 32 */ ps_mul f6, f4, f4
/* 8027C5CC 0027822C C0 22 A0 70 */ lfs f1, lbl_80642670-_SDA2_BASE_(r2)
/* 8027C5D0 00278230 11 24 24 A0 */ ps_merge10 f9, f4, f4
/* 8027C5D4 00278234 EC 01 08 28 */ fsubs f0, f1, f1
/* 8027C5D8 00278238 11 05 31 7A */ ps_madd f8, f5, f5, f6
/* 8027C5DC 0027823C 11 45 01 5A */ ps_muls1 f10, f5, f5
/* 8027C5E0 00278240 EC 41 08 2A */ fadds f2, f1, f1
/* 8027C5E4 00278244 F0 03 80 0C */ psq_st f0, 12(r3), 1, qr0
/* 8027C5E8 00278248 10 68 42 14 */ ps_sum0 f3, f8, f8, f8
/* 8027C5EC 0027824C 10 E5 01 72 */ ps_mul f7, f5, f5
/* 8027C5F0 00278250 F0 03 80 2C */ psq_st f0, 44(r3), 1, qr0
/* 8027C5F4 00278254 11 84 52 7A */ ps_madd f12, f4, f9, f10
/* 8027C5F8 00278258 ED A0 18 30 */ fres f13, f3
/* 8027C5FC 0027825C 10 63 13 7C */ ps_nmsub f3, f3, f13, f2
/* 8027C600 00278260 11 69 01 5A */ ps_muls1 f11, f9, f5
/* 8027C604 00278264 11 44 52 78 */ ps_msub f10, f4, f9, f10
/* 8027C608 00278268 10 6D 00 F2 */ ps_mul f3, f13, f3
/* 8027C60C 0027826C 11 24 59 5C */ ps_madds0 f9, f4, f5, f11
/* 8027C610 00278270 11 07 32 16 */ ps_sum1 f8, f7, f8, f6
/* 8027C614 00278274 EC 63 00 B2 */ fmuls f3, f3, f2
/* 8027C618 00278278 11 6B 48 BC */ ps_nmsub f11, f11, f2, f9
/* 8027C61C 0027827C 10 C6 31 94 */ ps_sum0 f6, f6, f6, f6
/* 8027C620 00278280 11 29 00 F2 */ ps_mul f9, f9, f3
/* 8027C624 00278284 11 6B 00 F2 */ ps_mul f11, f11, f3
/* 8027C628 00278288 11 08 08 FC */ ps_nmsub f8, f8, f3, f1
/* 8027C62C 0027828C 11 8C 00 F2 */ ps_mul f12, f12, f3
/* 8027C630 00278290 F1 23 80 08 */ psq_st f9, 8(r3), 1, qr0
/* 8027C634 00278294 11 4A 00 F2 */ ps_mul f10, f10, f3
/* 8027C638 00278298 10 EB 04 A0 */ ps_merge10 f7, f11, f0
/* 8027C63C 0027829C 10 AC 44 20 */ ps_merge00 f5, f12, f8
/* 8027C640 002782A0 10 88 54 A0 */ ps_merge10 f4, f8, f10
/* 8027C644 002782A4 11 AB 4C 60 */ ps_merge01 f13, f11, f9
/* 8027C648 002782A8 F0 E3 00 18 */ psq_st f7, 24(r3), 0, qr0
/* 8027C64C 002782AC 10 C6 08 FC */ ps_nmsub f6, f6, f3, f1
/* 8027C650 002782B0 F0 A3 00 10 */ psq_st f5, 16(r3), 0, qr0
/* 8027C654 002782B4 F0 C3 80 28 */ psq_st f6, 40(r3), 1, qr0
/* 8027C658 002782B8 F0 83 00 00 */ psq_st f4, 0(r3), 0, qr0
/* 8027C65C 002782BC F1 A3 00 20 */ psq_st f13, 32(r3), 0, qr0
/* 8027C660 002782C0 4E 80 00 20 */ blr
.global C_MTXLookAt
C_MTXLookAt:
/* 8027C664 002782C4 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 8027C668 002782C8 7C 08 02 A6 */ mflr r0
/* 8027C66C 002782CC C0 24 00 00 */ lfs f1, 0(r4)
/* 8027C670 002782D0 90 01 00 44 */ stw r0, 0x44(r1)
/* 8027C674 002782D4 C0 06 00 00 */ lfs f0, 0(r6)
/* 8027C678 002782D8 93 E1 00 3C */ stw r31, 0x3c(r1)
/* 8027C67C 002782DC 7C BF 2B 78 */ mr r31, r5
/* 8027C680 002782E0 EC 81 00 28 */ fsubs f4, f1, f0
/* 8027C684 002782E4 C0 64 00 04 */ lfs f3, 4(r4)
/* 8027C688 002782E8 93 C1 00 38 */ stw r30, 0x38(r1)
/* 8027C68C 002782EC 7C 9E 23 78 */ mr r30, r4
/* 8027C690 002782F0 C0 46 00 04 */ lfs f2, 4(r6)
/* 8027C694 002782F4 93 A1 00 34 */ stw r29, 0x34(r1)
/* 8027C698 002782F8 EC 43 10 28 */ fsubs f2, f3, f2
/* 8027C69C 002782FC C0 24 00 08 */ lfs f1, 8(r4)
/* 8027C6A0 00278300 C0 06 00 08 */ lfs f0, 8(r6)
/* 8027C6A4 00278304 7C 7D 1B 78 */ mr r29, r3
/* 8027C6A8 00278308 38 61 00 20 */ addi r3, r1, 0x20
/* 8027C6AC 0027830C D0 81 00 20 */ stfs f4, 0x20(r1)
/* 8027C6B0 00278310 EC 01 00 28 */ fsubs f0, f1, f0
/* 8027C6B4 00278314 D0 41 00 24 */ stfs f2, 0x24(r1)
/* 8027C6B8 00278318 7C 64 1B 78 */ mr r4, r3
/* 8027C6BC 0027831C D0 01 00 28 */ stfs f0, 0x28(r1)
/* 8027C6C0 00278320 48 00 06 69 */ bl PSVECNormalize
/* 8027C6C4 00278324 7F E3 FB 78 */ mr r3, r31
/* 8027C6C8 00278328 38 81 00 20 */ addi r4, r1, 0x20
/* 8027C6CC 0027832C 38 A1 00 14 */ addi r5, r1, 0x14
/* 8027C6D0 00278330 48 00 07 19 */ bl PSVECCrossProduct
/* 8027C6D4 00278334 38 61 00 14 */ addi r3, r1, 0x14
/* 8027C6D8 00278338 7C 64 1B 78 */ mr r4, r3
/* 8027C6DC 0027833C 48 00 06 4D */ bl PSVECNormalize
/* 8027C6E0 00278340 38 61 00 20 */ addi r3, r1, 0x20
/* 8027C6E4 00278344 38 81 00 14 */ addi r4, r1, 0x14
/* 8027C6E8 00278348 38 A1 00 08 */ addi r5, r1, 8
/* 8027C6EC 0027834C 48 00 06 FD */ bl PSVECCrossProduct
/* 8027C6F0 00278350 C0 01 00 14 */ lfs f0, 0x14(r1)
/* 8027C6F4 00278354 C0 9E 00 00 */ lfs f4, 0(r30)
/* 8027C6F8 00278358 D0 1D 00 00 */ stfs f0, 0(r29)
/* 8027C6FC 0027835C C0 7E 00 04 */ lfs f3, 4(r30)
/* 8027C700 00278360 C0 01 00 18 */ lfs f0, 0x18(r1)
/* 8027C704 00278364 C0 BE 00 08 */ lfs f5, 8(r30)
/* 8027C708 00278368 D0 1D 00 04 */ stfs f0, 4(r29)
/* 8027C70C 0027836C C0 01 00 1C */ lfs f0, 0x1c(r1)
/* 8027C710 00278370 D0 1D 00 08 */ stfs f0, 8(r29)
/* 8027C714 00278374 C0 21 00 14 */ lfs f1, 0x14(r1)
/* 8027C718 00278378 C0 01 00 18 */ lfs f0, 0x18(r1)
/* 8027C71C 0027837C EC 24 00 72 */ fmuls f1, f4, f1
/* 8027C720 00278380 C0 41 00 1C */ lfs f2, 0x1c(r1)
/* 8027C724 00278384 EC 03 00 32 */ fmuls f0, f3, f0
/* 8027C728 00278388 EC 45 00 B2 */ fmuls f2, f5, f2
/* 8027C72C 0027838C EC 01 00 2A */ fadds f0, f1, f0
/* 8027C730 00278390 EC 02 00 2A */ fadds f0, f2, f0
/* 8027C734 00278394 FC 00 00 50 */ fneg f0, f0
/* 8027C738 00278398 D0 1D 00 0C */ stfs f0, 0xc(r29)
/* 8027C73C 0027839C C0 01 00 08 */ lfs f0, 8(r1)
/* 8027C740 002783A0 D0 1D 00 10 */ stfs f0, 0x10(r29)
/* 8027C744 002783A4 C0 01 00 0C */ lfs f0, 0xc(r1)
/* 8027C748 002783A8 D0 1D 00 14 */ stfs f0, 0x14(r29)
/* 8027C74C 002783AC C0 01 00 10 */ lfs f0, 0x10(r1)
/* 8027C750 002783B0 D0 1D 00 18 */ stfs f0, 0x18(r29)
/* 8027C754 002783B4 C0 21 00 08 */ lfs f1, 8(r1)
/* 8027C758 002783B8 C0 01 00 0C */ lfs f0, 0xc(r1)
/* 8027C75C 002783BC C0 41 00 10 */ lfs f2, 0x10(r1)
/* 8027C760 002783C0 EC 24 00 72 */ fmuls f1, f4, f1
/* 8027C764 002783C4 EC 03 00 32 */ fmuls f0, f3, f0
/* 8027C768 002783C8 EC 45 00 B2 */ fmuls f2, f5, f2
/* 8027C76C 002783CC EC 01 00 2A */ fadds f0, f1, f0
/* 8027C770 002783D0 EC 02 00 2A */ fadds f0, f2, f0
/* 8027C774 002783D4 FC 00 00 50 */ fneg f0, f0
/* 8027C778 002783D8 D0 1D 00 1C */ stfs f0, 0x1c(r29)
/* 8027C77C 002783DC C0 01 00 20 */ lfs f0, 0x20(r1)
/* 8027C780 002783E0 D0 1D 00 20 */ stfs f0, 0x20(r29)
/* 8027C784 002783E4 C0 01 00 24 */ lfs f0, 0x24(r1)
/* 8027C788 002783E8 D0 1D 00 24 */ stfs f0, 0x24(r29)
/* 8027C78C 002783EC C0 01 00 28 */ lfs f0, 0x28(r1)
/* 8027C790 002783F0 D0 1D 00 28 */ stfs f0, 0x28(r29)
/* 8027C794 002783F4 C0 21 00 20 */ lfs f1, 0x20(r1)
/* 8027C798 002783F8 C0 01 00 24 */ lfs f0, 0x24(r1)
/* 8027C79C 002783FC C0 41 00 28 */ lfs f2, 0x28(r1)
/* 8027C7A0 00278400 EC 24 00 72 */ fmuls f1, f4, f1
/* 8027C7A4 00278404 EC 03 00 32 */ fmuls f0, f3, f0
/* 8027C7A8 00278408 EC 45 00 B2 */ fmuls f2, f5, f2
/* 8027C7AC 0027840C EC 01 00 2A */ fadds f0, f1, f0
/* 8027C7B0 00278410 EC 02 00 2A */ fadds f0, f2, f0
/* 8027C7B4 00278414 FC 00 00 50 */ fneg f0, f0
/* 8027C7B8 00278418 D0 1D 00 2C */ stfs f0, 0x2c(r29)
/* 8027C7BC 0027841C 83 E1 00 3C */ lwz r31, 0x3c(r1)
/* 8027C7C0 00278420 83 C1 00 38 */ lwz r30, 0x38(r1)
/* 8027C7C4 00278424 83 A1 00 34 */ lwz r29, 0x34(r1)
/* 8027C7C8 00278428 80 01 00 44 */ lwz r0, 0x44(r1)
/* 8027C7CC 0027842C 7C 08 03 A6 */ mtlr r0
/* 8027C7D0 00278430 38 21 00 40 */ addi r1, r1, 0x40
/* 8027C7D4 00278434 4E 80 00 20 */ blr
.global C_MTXLightFrustum
C_MTXLightFrustum:
/* 8027C7D8 00278438 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8027C7DC 0027843C DB E1 00 10 */ stfd f31, 0x10(r1)
/* 8027C7E0 00278440 F3 E1 00 18 */ psq_st f31, 24(r1), 0, qr0
/* 8027C7E4 00278444 EC 04 18 28 */ fsubs f0, f4, f3
/* 8027C7E8 00278448 C1 42 A0 74 */ lfs f10, lbl_80642674-_SDA2_BASE_(r2)
/* 8027C7EC 0027844C C1 82 A0 70 */ lfs f12, lbl_80642670-_SDA2_BASE_(r2)
/* 8027C7F0 00278450 ED 21 10 28 */ fsubs f9, f1, f2
/* 8027C7F4 00278454 C1 62 A0 80 */ lfs f11, lbl_80642680-_SDA2_BASE_(r2)
/* 8027C7F8 00278458 EC 64 18 2A */ fadds f3, f4, f3
/* 8027C7FC 0027845C ED AC 00 24 */ fdivs f13, f12, f0
/* 8027C800 00278460 C0 02 A0 84 */ lfs f0, lbl_80642684-_SDA2_BASE_(r2)
/* 8027C804 00278464 C3 E1 00 28 */ lfs f31, 0x28(r1)
/* 8027C808 00278468 D0 03 00 28 */ stfs f0, 0x28(r3)
/* 8027C80C 0027846C D1 43 00 04 */ stfs f10, 4(r3)
/* 8027C810 00278470 D1 43 00 0C */ stfs f10, 0xc(r3)
/* 8027C814 00278474 EC 8B 01 72 */ fmuls f4, f11, f5
/* 8027C818 00278478 D1 43 00 10 */ stfs f10, 0x10(r3)
/* 8027C81C 0027847C EC 01 10 2A */ fadds f0, f1, f2
/* 8027C820 00278480 EC 2D 00 F2 */ fmuls f1, f13, f3
/* 8027C824 00278484 D1 43 00 1C */ stfs f10, 0x1c(r3)
/* 8027C828 00278488 EC AC 48 24 */ fdivs f5, f12, f9
/* 8027C82C 0027848C D1 43 00 20 */ stfs f10, 0x20(r3)
/* 8027C830 00278490 D1 43 00 24 */ stfs f10, 0x24(r3)
/* 8027C834 00278494 D1 43 00 2C */ stfs f10, 0x2c(r3)
/* 8027C838 00278498 EC 46 00 72 */ fmuls f2, f6, f1
/* 8027C83C 0027849C EC 05 00 32 */ fmuls f0, f5, f0
/* 8027C840 002784A0 EC 64 03 72 */ fmuls f3, f4, f13
/* 8027C844 002784A4 EC 24 01 72 */ fmuls f1, f4, f5
/* 8027C848 002784A8 EC 07 00 32 */ fmuls f0, f7, f0
/* 8027C84C 002784AC EC 66 00 F2 */ fmuls f3, f6, f3
/* 8027C850 002784B0 EC 42 40 28 */ fsubs f2, f2, f8
/* 8027C854 002784B4 EC 27 00 72 */ fmuls f1, f7, f1
/* 8027C858 002784B8 EC 00 F8 28 */ fsubs f0, f0, f31
/* 8027C85C 002784BC D0 63 00 00 */ stfs f3, 0(r3)
/* 8027C860 002784C0 D0 43 00 08 */ stfs f2, 8(r3)
/* 8027C864 002784C4 D0 23 00 14 */ stfs f1, 0x14(r3)
/* 8027C868 002784C8 D0 03 00 18 */ stfs f0, 0x18(r3)
/* 8027C86C 002784CC E3 E1 00 18 */ psq_l f31, 24(r1), 0, qr0
/* 8027C870 002784D0 CB E1 00 10 */ lfd f31, 0x10(r1)
/* 8027C874 002784D4 38 21 00 20 */ addi r1, r1, 0x20
/* 8027C878 002784D8 4E 80 00 20 */ blr
.global C_MTXLightPerspective
C_MTXLightPerspective:
/* 8027C87C 002784DC 94 21 FF A0 */ stwu r1, -0x60(r1)
/* 8027C880 002784E0 7C 08 02 A6 */ mflr r0
/* 8027C884 002784E4 90 01 00 64 */ stw r0, 0x64(r1)
/* 8027C888 002784E8 DB E1 00 50 */ stfd f31, 0x50(r1)
/* 8027C88C 002784EC F3 E1 00 58 */ psq_st f31, 88(r1), 0, qr0
/* 8027C890 002784F0 DB C1 00 40 */ stfd f30, 0x40(r1)
/* 8027C894 002784F4 F3 C1 00 48 */ psq_st f30, 72(r1), 0, qr0
/* 8027C898 002784F8 DB A1 00 30 */ stfd f29, 0x30(r1)
/* 8027C89C 002784FC F3 A1 00 38 */ psq_st f29, 56(r1), 0, qr0
/* 8027C8A0 00278500 DB 81 00 20 */ stfd f28, 0x20(r1)
/* 8027C8A4 00278504 F3 81 00 28 */ psq_st f28, 40(r1), 0, qr0
/* 8027C8A8 00278508 DB 61 00 10 */ stfd f27, 0x10(r1)
/* 8027C8AC 0027850C F3 61 00 18 */ psq_st f27, 24(r1), 0, qr0
/* 8027C8B0 00278510 FF 60 10 90 */ fmr f27, f2
/* 8027C8B4 00278514 C0 E2 A0 78 */ lfs f7, lbl_80642678-_SDA2_BASE_(r2)
/* 8027C8B8 00278518 FF 80 18 90 */ fmr f28, f3
/* 8027C8BC 0027851C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8027C8C0 00278520 FF A0 20 90 */ fmr f29, f4
/* 8027C8C4 00278524 EC 27 00 72 */ fmuls f1, f7, f1
/* 8027C8C8 00278528 C0 02 A0 88 */ lfs f0, lbl_80642688-_SDA2_BASE_(r2)
/* 8027C8CC 0027852C FF C0 28 90 */ fmr f30, f5
/* 8027C8D0 00278530 FF E0 30 90 */ fmr f31, f6
/* 8027C8D4 00278534 7C 7F 1B 78 */ mr r31, r3
/* 8027C8D8 00278538 EC 20 00 72 */ fmuls f1, f0, f1
/* 8027C8DC 0027853C 4B F5 7C 81 */ bl tan
/* 8027C8E0 00278540 FC A0 08 18 */ frsp f5, f1
/* 8027C8E4 00278544 C0 62 A0 74 */ lfs f3, lbl_80642674-_SDA2_BASE_(r2)
/* 8027C8E8 00278548 C0 82 A0 70 */ lfs f4, lbl_80642670-_SDA2_BASE_(r2)
/* 8027C8EC 0027854C FC 20 F8 50 */ fneg f1, f31
/* 8027C8F0 00278550 C0 02 A0 84 */ lfs f0, lbl_80642684-_SDA2_BASE_(r2)
/* 8027C8F4 00278554 FC 40 F0 50 */ fneg f2, f30
/* 8027C8F8 00278558 EC 84 28 24 */ fdivs f4, f4, f5
/* 8027C8FC 0027855C D0 3F 00 18 */ stfs f1, 0x18(r31)
/* 8027C900 00278560 D0 1F 00 28 */ stfs f0, 0x28(r31)
/* 8027C904 00278564 D0 7F 00 04 */ stfs f3, 4(r31)
/* 8027C908 00278568 D0 5F 00 08 */ stfs f2, 8(r31)
/* 8027C90C 0027856C D0 7F 00 0C */ stfs f3, 0xc(r31)
/* 8027C910 00278570 EC 24 D8 24 */ fdivs f1, f4, f27
/* 8027C914 00278574 D0 7F 00 10 */ stfs f3, 0x10(r31)
/* 8027C918 00278578 D0 7F 00 1C */ stfs f3, 0x1c(r31)
/* 8027C91C 0027857C D0 7F 00 20 */ stfs f3, 0x20(r31)
/* 8027C920 00278580 D0 7F 00 24 */ stfs f3, 0x24(r31)
/* 8027C924 00278584 D0 7F 00 2C */ stfs f3, 0x2c(r31)
/* 8027C928 00278588 EC 3C 00 72 */ fmuls f1, f28, f1
/* 8027C92C 0027858C EC 04 07 72 */ fmuls f0, f4, f29
/* 8027C930 00278590 D0 3F 00 00 */ stfs f1, 0(r31)
/* 8027C934 00278594 D0 1F 00 14 */ stfs f0, 0x14(r31)
/* 8027C938 00278598 E3 E1 00 58 */ psq_l f31, 88(r1), 0, qr0
/* 8027C93C 0027859C CB E1 00 50 */ lfd f31, 0x50(r1)
/* 8027C940 002785A0 E3 C1 00 48 */ psq_l f30, 72(r1), 0, qr0
/* 8027C944 002785A4 CB C1 00 40 */ lfd f30, 0x40(r1)
/* 8027C948 002785A8 E3 A1 00 38 */ psq_l f29, 56(r1), 0, qr0
/* 8027C94C 002785AC CB A1 00 30 */ lfd f29, 0x30(r1)
/* 8027C950 002785B0 E3 81 00 28 */ psq_l f28, 40(r1), 0, qr0
/* 8027C954 002785B4 CB 81 00 20 */ lfd f28, 0x20(r1)
/* 8027C958 002785B8 E3 61 00 18 */ psq_l f27, 24(r1), 0, qr0
/* 8027C95C 002785BC CB 61 00 10 */ lfd f27, 0x10(r1)
/* 8027C960 002785C0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8027C964 002785C4 80 01 00 64 */ lwz r0, 0x64(r1)
/* 8027C968 002785C8 7C 08 03 A6 */ mtlr r0
/* 8027C96C 002785CC 38 21 00 60 */ addi r1, r1, 0x60
/* 8027C970 002785D0 4E 80 00 20 */ blr
.global C_MTXLightOrtho
C_MTXLightOrtho:
/* 8027C974 002785D4 ED 64 18 28 */ fsubs f11, f4, f3
/* 8027C978 002785D8 C1 22 A0 74 */ lfs f9, lbl_80642674-_SDA2_BASE_(r2)
/* 8027C97C 002785DC C1 42 A0 70 */ lfs f10, lbl_80642670-_SDA2_BASE_(r2)
/* 8027C980 002785E0 EC 01 10 28 */ fsubs f0, f1, f2
/* 8027C984 002785E4 EC 64 18 2A */ fadds f3, f4, f3
/* 8027C988 002785E8 C0 82 A0 80 */ lfs f4, lbl_80642680-_SDA2_BASE_(r2)
/* 8027C98C 002785EC ED 8A 58 24 */ fdivs f12, f10, f11
/* 8027C990 002785F0 D1 23 00 04 */ stfs f9, 4(r3)
/* 8027C994 002785F4 D1 23 00 08 */ stfs f9, 8(r3)
/* 8027C998 002785F8 D1 23 00 10 */ stfs f9, 0x10(r3)
/* 8027C99C 002785FC D1 23 00 18 */ stfs f9, 0x18(r3)
/* 8027C9A0 00278600 D1 23 00 20 */ stfs f9, 0x20(r3)
/* 8027C9A4 00278604 ED 6A 00 24 */ fdivs f11, f10, f0
/* 8027C9A8 00278608 D1 23 00 24 */ stfs f9, 0x24(r3)
/* 8027C9AC 0027860C D1 23 00 28 */ stfs f9, 0x28(r3)
/* 8027C9B0 00278610 D1 43 00 2C */ stfs f10, 0x2c(r3)
/* 8027C9B4 00278614 EC 01 10 2A */ fadds f0, f1, f2
/* 8027C9B8 00278618 FC 20 18 50 */ fneg f1, f3
/* 8027C9BC 0027861C EC 64 03 32 */ fmuls f3, f4, f12
/* 8027C9C0 00278620 FC 00 00 50 */ fneg f0, f0
/* 8027C9C4 00278624 EC 4C 00 72 */ fmuls f2, f12, f1
/* 8027C9C8 00278628 EC 24 02 F2 */ fmuls f1, f4, f11
/* 8027C9CC 0027862C EC 0B 00 32 */ fmuls f0, f11, f0
/* 8027C9D0 00278630 EC 45 00 B2 */ fmuls f2, f5, f2
/* 8027C9D4 00278634 EC 63 01 72 */ fmuls f3, f3, f5
/* 8027C9D8 00278638 EC 06 00 32 */ fmuls f0, f6, f0
/* 8027C9DC 0027863C EC 47 10 2A */ fadds f2, f7, f2
/* 8027C9E0 00278640 EC 21 01 B2 */ fmuls f1, f1, f6
/* 8027C9E4 00278644 D0 63 00 00 */ stfs f3, 0(r3)
/* 8027C9E8 00278648 EC 08 00 2A */ fadds f0, f8, f0
/* 8027C9EC 0027864C D0 43 00 0C */ stfs f2, 0xc(r3)
/* 8027C9F0 00278650 D0 23 00 14 */ stfs f1, 0x14(r3)
/* 8027C9F4 00278654 D0 03 00 1C */ stfs f0, 0x1c(r3)
/* 8027C9F8 00278658 4E 80 00 20 */ blr
|