summaryrefslogtreecommitdiff
path: root/asm/nw4r/snd/snd_Sound3DManager.s
blob: b995a7bc77d593bcac8d1a7144beed5d1eac52ea (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
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
.include "macros.inc"

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

.global __ct__Q34nw4r3snd14Sound3DManagerFv
__ct__Q34nw4r3snd14Sound3DManagerFv:
/* 8037657C 003721DC  3C C0 80 45 */	lis r6, lbl_8044CE20@ha
/* 80376580 003721E0  C0 82 A7 00 */	lfs f4, lbl_80642D00-_SDA2_BASE_(r2)
/* 80376584 003721E4  38 C6 CE 20 */	addi r6, r6, lbl_8044CE20@l
/* 80376588 003721E8  C0 62 A7 04 */	lfs f3, lbl_80642D04-_SDA2_BASE_(r2)
/* 8037658C 003721EC  C0 42 A7 08 */	lfs f2, lbl_80642D08-_SDA2_BASE_(r2)
/* 80376590 003721F0  38 A6 00 0C */	addi r5, r6, 0xc
/* 80376594 003721F4  C0 22 A7 0C */	lfs f1, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376598 003721F8  38 80 00 00 */	li r4, 0
/* 8037659C 003721FC  C0 02 A7 10 */	lfs f0, lbl_80642D10-_SDA2_BASE_(r2)
/* 803765A0 00372200  38 00 00 20 */	li r0, 0x20
/* 803765A4 00372204  90 C3 00 00 */	stw r6, 0(r3)
/* 803765A8 00372208  90 A3 00 04 */	stw r5, 4(r3)
/* 803765AC 0037220C  90 83 00 08 */	stw r4, 8(r3)
/* 803765B0 00372210  90 03 00 10 */	stw r0, 0x10(r3)
/* 803765B4 00372214  D0 83 00 14 */	stfs f4, 0x14(r3)
/* 803765B8 00372218  D0 63 00 18 */	stfs f3, 0x18(r3)
/* 803765BC 0037221C  D0 43 00 1C */	stfs f2, 0x1c(r3)
/* 803765C0 00372220  D0 23 00 20 */	stfs f1, 0x20(r3)
/* 803765C4 00372224  D0 03 00 24 */	stfs f0, 0x24(r3)
/* 803765C8 00372228  4E 80 00 20 */	blr

.global GetRequiredMemSize__Q34nw4r3snd14Sound3DManagerFPCQ34nw4r3snd12SoundArchive
GetRequiredMemSize__Q34nw4r3snd14Sound3DManagerFPCQ34nw4r3snd12SoundArchive:
/* 803765CC 0037222C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 803765D0 00372230  7C 08 02 A6 */	mflr r0
/* 803765D4 00372234  7C 83 23 78 */	mr r3, r4
/* 803765D8 00372238  90 01 00 34 */	stw r0, 0x34(r1)
/* 803765DC 0037223C  38 81 00 08 */	addi r4, r1, 8
/* 803765E0 00372240  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 803765E4 00372244  3B E0 00 00 */	li r31, 0
/* 803765E8 00372248  48 00 0A 95 */	bl func_8037707C
/* 803765EC 0037224C  2C 03 00 00 */	cmpwi r3, 0
/* 803765F0 00372250  41 82 00 18 */	beq lbl_80376608
/* 803765F4 00372254  80 81 00 08 */	lwz r4, 8(r1)
/* 803765F8 00372258  80 61 00 10 */	lwz r3, 0x10(r1)
/* 803765FC 0037225C  80 01 00 1C */	lwz r0, 0x1c(r1)
/* 80376600 00372260  7F E4 1A 14 */	add r31, r4, r3
/* 80376604 00372264  7F FF 02 14 */	add r31, r31, r0
lbl_80376608:
/* 80376608 00372268  1C 7F 00 18 */	mulli r3, r31, 0x18
/* 8037660C 0037226C  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 80376610 00372270  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80376614 00372274  7C 08 03 A6 */	mtlr r0
/* 80376618 00372278  38 21 00 30 */	addi r1, r1, 0x30
/* 8037661C 0037227C  4E 80 00 20 */	blr

.global Setup__Q34nw4r3snd14Sound3DManagerFPCQ34nw4r3snd12SoundArchivePvUl
Setup__Q34nw4r3snd14Sound3DManagerFPCQ34nw4r3snd12SoundArchivePvUl:
/* 80376620 00372280  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80376624 00372284  7C 08 02 A6 */	mflr r0
/* 80376628 00372288  7C A4 2B 78 */	mr r4, r5
/* 8037662C 0037228C  7C C5 33 78 */	mr r5, r6
/* 80376630 00372290  90 01 00 14 */	stw r0, 0x14(r1)
/* 80376634 00372294  38 C0 00 18 */	li r6, 0x18
/* 80376638 00372298  38 63 00 08 */	addi r3, r3, 8
/* 8037663C 0037229C  4B FF B3 09 */	bl CreateImpl__Q44nw4r3snd6detail8PoolImplFPvUlUl
/* 80376640 003722A0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80376644 003722A4  38 60 00 01 */	li r3, 1
/* 80376648 003722A8  7C 08 03 A6 */	mtlr r0
/* 8037664C 003722AC  38 21 00 10 */	addi r1, r1, 0x10
/* 80376650 003722B0  4E 80 00 20 */	blr

.global detail_Update__Q34nw4r3snd14Sound3DManagerFPQ34nw4r3snd10SoundParamUlPQ44nw4r3snd6detail10BasicSoundPCvUl
detail_Update__Q34nw4r3snd14Sound3DManagerFPQ34nw4r3snd10SoundParamUlPQ44nw4r3snd6detail10BasicSoundPCvUl:
/* 80376654 003722B4  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80376658 003722B8  7C 08 02 A6 */	mflr r0
/* 8037665C 003722BC  90 01 00 34 */	stw r0, 0x34(r1)
/* 80376660 003722C0  39 61 00 30 */	addi r11, r1, 0x30
/* 80376664 003722C4  4B E5 0A C1 */	bl _savegpr_26
/* 80376668 003722C8  38 00 00 00 */	li r0, 0
/* 8037666C 003722CC  2C 06 00 00 */	cmpwi r6, 0
/* 80376670 003722D0  90 01 00 08 */	stw r0, 8(r1)
/* 80376674 003722D4  7C 7A 1B 78 */	mr r26, r3
/* 80376678 003722D8  7C 9B 23 78 */	mr r27, r4
/* 8037667C 003722DC  7C BC 2B 78 */	mr r28, r5
/* 80376680 003722E0  7C DF 33 78 */	mr r31, r6
/* 80376684 003722E4  7C FD 3B 78 */	mr r29, r7
/* 80376688 003722E8  7D 1E 43 78 */	mr r30, r8
/* 8037668C 003722EC  41 82 00 10 */	beq lbl_8037669C
/* 80376690 003722F0  7F E4 FB 78 */	mr r4, r31
/* 80376694 003722F4  38 61 00 08 */	addi r3, r1, 8
/* 80376698 003722F8  48 00 42 8D */	bl detail_AttachSoundAsTempHandle__Q34nw4r3snd11SoundHandleFPQ44nw4r3snd6detail10BasicSound
lbl_8037669C:
/* 8037669C 003722FC  81 9A 00 00 */	lwz r12, 0(r26)
/* 803766A0 00372300  7C 1F 00 D0 */	neg r0, r31
/* 803766A4 00372304  7C 00 FB 78 */	or r0, r0, r31
/* 803766A8 00372308  3B E1 00 08 */	addi r31, r1, 8
/* 803766AC 0037230C  81 8C 00 1C */	lwz r12, 0x1c(r12)
/* 803766B0 00372310  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 803766B4 00372314  7F 43 D3 78 */	mr r3, r26
/* 803766B8 00372318  7F 64 DB 78 */	mr r4, r27
/* 803766BC 0037231C  7F 85 E3 78 */	mr r5, r28
/* 803766C0 00372320  7F A7 EB 78 */	mr r7, r29
/* 803766C4 00372324  7F C8 F3 78 */	mr r8, r30
/* 803766C8 00372328  7F E6 00 38 */	and r6, r31, r0
/* 803766CC 0037232C  7D 89 03 A6 */	mtctr r12
/* 803766D0 00372330  4E 80 04 21 */	bctrl
/* 803766D4 00372334  7F E3 FB 78 */	mr r3, r31
/* 803766D8 00372338  48 00 43 15 */	bl DetachSound__Q34nw4r3snd11SoundHandleFv
/* 803766DC 0037233C  39 61 00 30 */	addi r11, r1, 0x30
/* 803766E0 00372340  4B E5 0A 91 */	bl _restgpr_26
/* 803766E4 00372344  80 01 00 34 */	lwz r0, 0x34(r1)
/* 803766E8 00372348  7C 08 03 A6 */	mtlr r0
/* 803766EC 0037234C  38 21 00 30 */	addi r1, r1, 0x30
/* 803766F0 00372350  4E 80 00 20 */	blr

.global Update__Q34nw4r3snd14Sound3DManagerFPQ34nw4r3snd10SoundParamUlPQ34nw4r3snd11SoundHandlePCvUl
Update__Q34nw4r3snd14Sound3DManagerFPQ34nw4r3snd10SoundParamUlPQ34nw4r3snd11SoundHandlePCvUl:
/* 803766F4 00372354  94 21 FF 50 */	stwu r1, -0xb0(r1)
/* 803766F8 00372358  7C 08 02 A6 */	mflr r0
/* 803766FC 0037235C  90 01 00 B4 */	stw r0, 0xb4(r1)
/* 80376700 00372360  DB E1 00 A0 */	stfd f31, 0xa0(r1)
/* 80376704 00372364  F3 E1 00 A8 */	psq_st f31, 168(r1), 0, qr0
/* 80376708 00372368  DB C1 00 90 */	stfd f30, 0x90(r1)
/* 8037670C 0037236C  F3 C1 00 98 */	psq_st f30, 152(r1), 0, qr0
/* 80376710 00372370  DB A1 00 80 */	stfd f29, 0x80(r1)
/* 80376714 00372374  F3 A1 00 88 */	psq_st f29, 136(r1), 0, qr0
/* 80376718 00372378  DB 81 00 70 */	stfd f28, 0x70(r1)
/* 8037671C 0037237C  F3 81 00 78 */	psq_st f28, 120(r1), 0, qr0
/* 80376720 00372380  DB 61 00 60 */	stfd f27, 0x60(r1)
/* 80376724 00372384  F3 61 00 68 */	psq_st f27, 104(r1), 0, qr0
/* 80376728 00372388  39 61 00 60 */	addi r11, r1, 0x60
/* 8037672C 0037238C  4B E5 09 FD */	bl _savegpr_27
/* 80376730 00372390  83 63 00 0C */	lwz r27, 0xc(r3)
/* 80376734 00372394  7C 7C 1B 78 */	mr r28, r3
/* 80376738 00372398  7C 9D 23 78 */	mr r29, r4
/* 8037673C 0037239C  7C FE 3B 78 */	mr r30, r7
/* 80376740 003723A0  2C 1B 00 00 */	cmpwi r27, 0
/* 80376744 003723A4  7D 1F 43 78 */	mr r31, r8
/* 80376748 003723A8  40 82 00 10 */	bne lbl_80376758
/* 8037674C 003723AC  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376750 003723B0  D0 04 00 00 */	stfs f0, 0(r4)
/* 80376754 003723B4  48 00 07 6C */	b lbl_80376EC0
lbl_80376758:
/* 80376758 003723B8  7F 63 DB 78 */	mr r3, r27
/* 8037675C 003723BC  38 87 00 0C */	addi r4, r7, 0xc
/* 80376760 003723C0  38 A1 00 20 */	addi r5, r1, 0x20
/* 80376764 003723C4  4B F0 62 99 */	bl PSMTXMultVec
/* 80376768 003723C8  38 61 00 20 */	addi r3, r1, 0x20
/* 8037676C 003723CC  4B F0 66 19 */	bl PSVECMag
/* 80376770 003723D0  73 E0 00 09 */	andi. r0, r31, 9
/* 80376774 003723D4  FF E0 08 90 */	fmr f31, f1
/* 80376778 003723D8  C3 A2 A7 14 */	lfs f29, lbl_80642D14-_SDA2_BASE_(r2)
/* 8037677C 003723DC  41 82 00 B4 */	beq lbl_80376830
/* 80376780 003723E0  C0 1B 00 34 */	lfs f0, 0x34(r27)
/* 80376784 003723E4  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80376788 003723E8  40 81 00 A8 */	ble lbl_80376830
/* 8037678C 003723EC  88 1E 00 08 */	lbz r0, 8(r30)
/* 80376790 003723F0  2C 00 00 02 */	cmpwi r0, 2
/* 80376794 003723F4  41 82 00 50 */	beq lbl_803767E4
/* 80376798 003723F8  40 80 00 98 */	bge lbl_80376830
/* 8037679C 003723FC  2C 00 00 01 */	cmpwi r0, 1
/* 803767A0 00372400  40 80 00 08 */	bge lbl_803767A8
/* 803767A4 00372404  48 00 00 8C */	b lbl_80376830
lbl_803767A8:
/* 803767A8 00372408  EC 01 00 28 */	fsubs f0, f1, f0
/* 803767AC 0037240C  C0 3B 00 38 */	lfs f1, 0x38(r27)
/* 803767B0 00372410  88 7E 00 09 */	lbz r3, 9(r30)
/* 803767B4 00372414  3C 00 43 30 */	lis r0, 0x4330
/* 803767B8 00372418  90 01 00 30 */	stw r0, 0x30(r1)
/* 803767BC 0037241C  EC 40 08 24 */	fdivs f2, f0, f1
/* 803767C0 00372420  90 61 00 34 */	stw r3, 0x34(r1)
/* 803767C4 00372424  C8 62 A7 40 */	lfd f3, lbl_80642D40-_SDA2_BASE_(r2)
/* 803767C8 00372428  C8 21 00 30 */	lfd f1, 0x30(r1)
/* 803767CC 0037242C  C0 02 A7 18 */	lfs f0, lbl_80642D18-_SDA2_BASE_(r2)
/* 803767D0 00372430  EC 21 18 28 */	fsubs f1, f1, f3
/* 803767D4 00372434  EC 21 00 32 */	fmuls f1, f1, f0
/* 803767D8 00372438  4B E5 DE 0D */	bl pow
/* 803767DC 0037243C  FF A0 08 18 */	frsp f29, f1
/* 803767E0 00372440  48 00 00 50 */	b lbl_80376830
lbl_803767E4:
/* 803767E4 00372444  EC 01 00 28 */	fsubs f0, f1, f0
/* 803767E8 00372448  C0 3B 00 38 */	lfs f1, 0x38(r27)
/* 803767EC 0037244C  88 7E 00 09 */	lbz r3, 9(r30)
/* 803767F0 00372450  3C 00 43 30 */	lis r0, 0x4330
/* 803767F4 00372454  90 01 00 30 */	stw r0, 0x30(r1)
/* 803767F8 00372458  EC 40 08 24 */	fdivs f2, f0, f1
/* 803767FC 0037245C  90 61 00 34 */	stw r3, 0x34(r1)
/* 80376800 00372460  C8 82 A7 40 */	lfd f4, lbl_80642D40-_SDA2_BASE_(r2)
/* 80376804 00372464  C8 61 00 30 */	lfd f3, 0x30(r1)
/* 80376808 00372468  C0 22 A7 18 */	lfs f1, lbl_80642D18-_SDA2_BASE_(r2)
/* 8037680C 0037246C  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376810 00372470  EC 63 20 28 */	fsubs f3, f3, f4
/* 80376814 00372474  EC 43 00 B2 */	fmuls f2, f3, f2
/* 80376818 00372478  EC 22 00 72 */	fmuls f1, f2, f1
/* 8037681C 0037247C  EF BD 08 28 */	fsubs f29, f29, f1
/* 80376820 00372480  FC 00 E8 40 */	fcmpo cr0, f0, f29
/* 80376824 00372484  40 80 00 08 */	bge lbl_8037682C
/* 80376828 00372488  48 00 00 08 */	b lbl_80376830
lbl_8037682C:
/* 8037682C 0037248C  FF A0 00 90 */	fmr f29, f0
lbl_80376830:
/* 80376830 00372490  57 E0 07 FF */	clrlwi. r0, r31, 0x1f
/* 80376834 00372494  41 82 00 14 */	beq lbl_80376848
/* 80376838 00372498  80 1E 00 04 */	lwz r0, 4(r30)
/* 8037683C 0037249C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80376840 003724A0  40 82 00 08 */	bne lbl_80376848
/* 80376844 003724A4  D3 BD 00 00 */	stfs f29, 0(r29)
lbl_80376848:
/* 80376848 003724A8  57 E0 07 7D */	rlwinm. r0, r31, 0, 0x1d, 0x1e
/* 8037684C 003724AC  41 82 05 F0 */	beq lbl_80376E3C
/* 80376850 003724B0  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376854 003724B4  FC 00 F8 00 */	fcmpu cr0, f0, f31
/* 80376858 003724B8  40 82 00 14 */	bne lbl_8037686C
/* 8037685C 003724BC  D0 01 00 1C */	stfs f0, 0x1c(r1)
/* 80376860 003724C0  D0 01 00 18 */	stfs f0, 0x18(r1)
/* 80376864 003724C4  D0 01 00 14 */	stfs f0, 0x14(r1)
/* 80376868 003724C8  48 00 00 80 */	b lbl_803768E8
lbl_8037686C:
/* 8037686C 003724CC  C0 41 00 28 */	lfs f2, 0x28(r1)
/* 80376870 003724D0  38 61 00 08 */	addi r3, r1, 8
/* 80376874 003724D4  C0 21 00 20 */	lfs f1, 0x20(r1)
/* 80376878 003724D8  D0 01 00 0C */	stfs f0, 0xc(r1)
/* 8037687C 003724DC  D0 21 00 08 */	stfs f1, 8(r1)
/* 80376880 003724E0  D0 41 00 10 */	stfs f2, 0x10(r1)
/* 80376884 003724E4  4B F0 65 01 */	bl PSVECMag
/* 80376888 003724E8  C0 1B 00 30 */	lfs f0, 0x30(r27)
/* 8037688C 003724EC  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80376890 003724F0  40 81 00 28 */	ble lbl_803768B8
/* 80376894 003724F4  EC 60 08 24 */	fdivs f3, f0, f1
/* 80376898 003724F8  C0 41 00 08 */	lfs f2, 8(r1)
/* 8037689C 003724FC  C0 01 00 10 */	lfs f0, 0x10(r1)
/* 803768A0 00372500  EC 42 00 F2 */	fmuls f2, f2, f3
/* 803768A4 00372504  D0 41 00 08 */	stfs f2, 8(r1)
/* 803768A8 00372508  C0 5B 00 30 */	lfs f2, 0x30(r27)
/* 803768AC 0037250C  EC 22 08 24 */	fdivs f1, f2, f1
/* 803768B0 00372510  EC 00 00 72 */	fmuls f0, f0, f1
/* 803768B4 00372514  D0 01 00 10 */	stfs f0, 0x10(r1)
lbl_803768B8:
/* 803768B8 00372518  38 61 00 08 */	addi r3, r1, 8
/* 803768BC 0037251C  4B F0 64 C9 */	bl PSVECMag
/* 803768C0 00372520  C0 41 00 20 */	lfs f2, 0x20(r1)
/* 803768C4 00372524  C0 01 00 28 */	lfs f0, 0x28(r1)
/* 803768C8 00372528  EC 62 00 72 */	fmuls f3, f2, f1
/* 803768CC 0037252C  C0 42 A7 0C */	lfs f2, lbl_80642D0C-_SDA2_BASE_(r2)
/* 803768D0 00372530  EC 00 00 72 */	fmuls f0, f0, f1
/* 803768D4 00372534  D0 41 00 18 */	stfs f2, 0x18(r1)
/* 803768D8 00372538  EC 23 F8 24 */	fdivs f1, f3, f31
/* 803768DC 0037253C  EC 00 F8 24 */	fdivs f0, f0, f31
/* 803768E0 00372540  D0 21 00 14 */	stfs f1, 0x14(r1)
/* 803768E4 00372544  D0 01 00 1C */	stfs f0, 0x1c(r1)
lbl_803768E8:
/* 803768E8 00372548  C0 01 00 1C */	lfs f0, 0x1c(r1)
/* 803768EC 0037254C  C0 21 00 14 */	lfs f1, 0x14(r1)
/* 803768F0 00372550  FC 40 00 50 */	fneg f2, f0
/* 803768F4 00372554  4B E5 DC E9 */	bl atan2
/* 803768F8 00372558  FF E0 08 18 */	frsp f31, f1
/* 803768FC 0037255C  38 61 00 14 */	addi r3, r1, 0x14
/* 80376900 00372560  4B F0 64 85 */	bl PSVECMag
/* 80376904 00372564  C0 1B 00 30 */	lfs f0, 0x30(r27)
/* 80376908 00372568  EF 81 00 24 */	fdivs f28, f1, f0
/* 8037690C 0037256C  4B FF 1B B9 */	bl GetInstance__Q44nw4r3snd6detail9AxManagerFv
/* 80376910 00372570  4B FF 23 49 */	bl GetOutputMode__Q44nw4r3snd6detail9AxManagerFv
/* 80376914 00372574  2C 03 00 03 */	cmpwi r3, 3
/* 80376918 00372578  41 82 05 1C */	beq lbl_80376E34
/* 8037691C 0037257C  40 80 05 18 */	bge lbl_80376E34
/* 80376920 00372580  2C 03 00 00 */	cmpwi r3, 0
/* 80376924 00372584  41 82 02 F8 */	beq lbl_80376C1C
/* 80376928 00372588  40 80 00 08 */	bge lbl_80376930
/* 8037692C 0037258C  48 00 05 08 */	b lbl_80376E34
lbl_80376930:
/* 80376930 00372590  88 0D B2 2C */	lbz r0, lbl_806404EC-_SDA_BASE_(r13)
/* 80376934 00372594  7C 00 07 75 */	extsb. r0, r0
/* 80376938 00372598  40 82 00 18 */	bne lbl_80376950
/* 8037693C 0037259C  C0 1C 00 1C */	lfs f0, 0x1c(r28)
/* 80376940 003725A0  38 00 00 01 */	li r0, 1
/* 80376944 003725A4  FC 00 00 50 */	fneg f0, f0
/* 80376948 003725A8  98 0D B2 2C */	stb r0, lbl_806404EC-_SDA_BASE_(r13)
/* 8037694C 003725AC  D0 0D B2 28 */	stfs f0, lbl_806404E8-_SDA_BASE_(r13)
lbl_80376950:
/* 80376950 003725B0  88 0D B2 34 */	lbz r0, lbl_806404F4-_SDA_BASE_(r13)
/* 80376954 003725B4  7C 00 07 75 */	extsb. r0, r0
/* 80376958 003725B8  40 82 00 18 */	bne lbl_80376970
/* 8037695C 003725BC  C0 1C 00 18 */	lfs f0, 0x18(r28)
/* 80376960 003725C0  38 00 00 01 */	li r0, 1
/* 80376964 003725C4  FC 00 00 50 */	fneg f0, f0
/* 80376968 003725C8  98 0D B2 34 */	stb r0, lbl_806404F4-_SDA_BASE_(r13)
/* 8037696C 003725CC  D0 0D B2 30 */	stfs f0, lbl_806404F0-_SDA_BASE_(r13)
lbl_80376970:
/* 80376970 003725D0  88 0D B2 3C */	lbz r0, lbl_806404FC-_SDA_BASE_(r13)
/* 80376974 003725D4  7C 00 07 75 */	extsb. r0, r0
/* 80376978 003725D8  40 82 00 14 */	bne lbl_8037698C
/* 8037697C 003725DC  C0 1C 00 18 */	lfs f0, 0x18(r28)
/* 80376980 003725E0  38 00 00 01 */	li r0, 1
/* 80376984 003725E4  D0 0D B2 38 */	stfs f0, lbl_806404F8-_SDA_BASE_(r13)
/* 80376988 003725E8  98 0D B2 3C */	stb r0, lbl_806404FC-_SDA_BASE_(r13)
lbl_8037698C:
/* 8037698C 003725EC  88 0D B2 44 */	lbz r0, lbl_80640504-_SDA_BASE_(r13)
/* 80376990 003725F0  7C 00 07 75 */	extsb. r0, r0
/* 80376994 003725F4  40 82 00 14 */	bne lbl_803769A8
/* 80376998 003725F8  C0 1C 00 1C */	lfs f0, 0x1c(r28)
/* 8037699C 003725FC  38 00 00 01 */	li r0, 1
/* 803769A0 00372600  D0 0D B2 40 */	stfs f0, lbl_80640500-_SDA_BASE_(r13)
/* 803769A4 00372604  98 0D B2 44 */	stb r0, lbl_80640504-_SDA_BASE_(r13)
lbl_803769A8:
/* 803769A8 00372608  C0 6D B2 28 */	lfs f3, lbl_806404E8-_SDA_BASE_(r13)
/* 803769AC 0037260C  FC 1F 18 40 */	fcmpo cr0, f31, f3
/* 803769B0 00372610  40 80 00 48 */	bge lbl_803769F8
/* 803769B4 00372614  C0 22 A7 1C */	lfs f1, lbl_80642D1C-_SDA2_BASE_(r2)
/* 803769B8 00372618  FC 01 18 00 */	fcmpu cr0, f1, f3
/* 803769BC 0037261C  40 82 00 0C */	bne lbl_803769C8
/* 803769C0 00372620  C3 C2 A7 20 */	lfs f30, lbl_80642D20-_SDA2_BASE_(r2)
/* 803769C4 00372624  48 00 00 2C */	b lbl_803769F0
lbl_803769C8:
/* 803769C8 00372628  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 803769CC 0037262C  EC 81 18 28 */	fsubs f4, f1, f3
/* 803769D0 00372630  C0 42 A7 14 */	lfs f2, lbl_80642D14-_SDA2_BASE_(r2)
/* 803769D4 00372634  EC 23 00 32 */	fmuls f1, f3, f0
/* 803769D8 00372638  C0 02 A7 24 */	lfs f0, lbl_80642D24-_SDA2_BASE_(r2)
/* 803769DC 0037263C  EC 5F 00 B2 */	fmuls f2, f31, f2
/* 803769E0 00372640  EC 00 08 28 */	fsubs f0, f0, f1
/* 803769E4 00372644  EC 22 20 24 */	fdivs f1, f2, f4
/* 803769E8 00372648  EC 00 20 24 */	fdivs f0, f0, f4
/* 803769EC 0037264C  EF C1 00 2A */	fadds f30, f1, f0
lbl_803769F0:
/* 803769F0 00372650  C3 62 A7 14 */	lfs f27, lbl_80642D14-_SDA2_BASE_(r2)
/* 803769F4 00372654  48 00 01 B4 */	b lbl_80376BA8
lbl_803769F8:
/* 803769F8 00372658  C0 A2 A7 28 */	lfs f5, lbl_80642D28-_SDA2_BASE_(r2)
/* 803769FC 0037265C  FC 1F 28 40 */	fcmpo cr0, f31, f5
/* 80376A00 00372660  40 80 00 40 */	bge lbl_80376A40
/* 80376A04 00372664  FC 03 28 00 */	fcmpu cr0, f3, f5
/* 80376A08 00372668  C3 C2 A7 2C */	lfs f30, lbl_80642D2C-_SDA2_BASE_(r2)
/* 80376A0C 0037266C  40 82 00 0C */	bne lbl_80376A18
/* 80376A10 00372670  C3 62 A7 30 */	lfs f27, lbl_80642D30-_SDA2_BASE_(r2)
/* 80376A14 00372674  48 00 01 94 */	b lbl_80376BA8
lbl_80376A18:
/* 80376A18 00372678  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376A1C 0037267C  EC 43 28 28 */	fsubs f2, f3, f5
/* 80376A20 00372680  C0 22 A7 14 */	lfs f1, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376A24 00372684  EC 03 00 32 */	fmuls f0, f3, f0
/* 80376A28 00372688  EC 3F 00 72 */	fmuls f1, f31, f1
/* 80376A2C 0037268C  EC 00 28 28 */	fsubs f0, f0, f5
/* 80376A30 00372690  EC 21 10 24 */	fdivs f1, f1, f2
/* 80376A34 00372694  EC 00 10 24 */	fdivs f0, f0, f2
/* 80376A38 00372698  EF 61 00 2A */	fadds f27, f1, f0
/* 80376A3C 0037269C  48 00 01 6C */	b lbl_80376BA8
lbl_80376A40:
/* 80376A40 003726A0  C0 8D B2 30 */	lfs f4, lbl_806404F0-_SDA_BASE_(r13)
/* 80376A44 003726A4  FC 1F 20 40 */	fcmpo cr0, f31, f4
/* 80376A48 003726A8  40 80 00 44 */	bge lbl_80376A8C
/* 80376A4C 003726AC  FC 05 20 00 */	fcmpu cr0, f5, f4
/* 80376A50 003726B0  C3 C2 A7 2C */	lfs f30, lbl_80642D2C-_SDA2_BASE_(r2)
/* 80376A54 003726B4  40 82 00 0C */	bne lbl_80376A60
/* 80376A58 003726B8  C3 62 A7 20 */	lfs f27, lbl_80642D20-_SDA2_BASE_(r2)
/* 80376A5C 003726BC  48 00 01 4C */	b lbl_80376BA8
lbl_80376A60:
/* 80376A60 003726C0  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376A64 003726C4  EC 65 20 28 */	fsubs f3, f5, f4
/* 80376A68 003726C8  C0 42 A7 14 */	lfs f2, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376A6C 003726CC  EC 24 00 32 */	fmuls f1, f4, f0
/* 80376A70 003726D0  C0 02 A7 34 */	lfs f0, lbl_80642D34-_SDA2_BASE_(r2)
/* 80376A74 003726D4  EC 5F 00 B2 */	fmuls f2, f31, f2
/* 80376A78 003726D8  EC 00 08 28 */	fsubs f0, f0, f1
/* 80376A7C 003726DC  EC 22 18 24 */	fdivs f1, f2, f3
/* 80376A80 003726E0  EC 00 18 24 */	fdivs f0, f0, f3
/* 80376A84 003726E4  EF 61 00 2A */	fadds f27, f1, f0
/* 80376A88 003726E8  48 00 01 20 */	b lbl_80376BA8
lbl_80376A8C:
/* 80376A8C 003726EC  C0 6D B2 38 */	lfs f3, lbl_806404F8-_SDA_BASE_(r13)
/* 80376A90 003726F0  FC 1F 18 40 */	fcmpo cr0, f31, f3
/* 80376A94 003726F4  40 80 00 48 */	bge lbl_80376ADC
/* 80376A98 003726F8  FC 04 18 00 */	fcmpu cr0, f4, f3
/* 80376A9C 003726FC  40 82 00 0C */	bne lbl_80376AA8
/* 80376AA0 00372700  C3 C2 A7 0C */	lfs f30, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376AA4 00372704  48 00 00 30 */	b lbl_80376AD4
lbl_80376AA8:
/* 80376AA8 00372708  C0 22 A7 14 */	lfs f1, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376AAC 0037270C  EC A4 18 28 */	fsubs f5, f4, f3
/* 80376AB0 00372710  C0 02 A7 2C */	lfs f0, lbl_80642D2C-_SDA2_BASE_(r2)
/* 80376AB4 00372714  EC 24 00 72 */	fmuls f1, f4, f1
/* 80376AB8 00372718  C0 42 A7 38 */	lfs f2, lbl_80642D38-_SDA2_BASE_(r2)
/* 80376ABC 0037271C  EC 03 00 32 */	fmuls f0, f3, f0
/* 80376AC0 00372720  EC 5F 00 B2 */	fmuls f2, f31, f2
/* 80376AC4 00372724  EC 01 00 28 */	fsubs f0, f1, f0
/* 80376AC8 00372728  EC 22 28 24 */	fdivs f1, f2, f5
/* 80376ACC 0037272C  EC 00 28 24 */	fdivs f0, f0, f5
/* 80376AD0 00372730  EF C1 00 2A */	fadds f30, f1, f0
lbl_80376AD4:
/* 80376AD4 00372734  C3 62 A7 2C */	lfs f27, lbl_80642D2C-_SDA2_BASE_(r2)
/* 80376AD8 00372738  48 00 00 D0 */	b lbl_80376BA8
lbl_80376ADC:
/* 80376ADC 0037273C  C0 42 A7 34 */	lfs f2, lbl_80642D34-_SDA2_BASE_(r2)
/* 80376AE0 00372740  FC 1F 10 40 */	fcmpo cr0, f31, f2
/* 80376AE4 00372744  40 80 00 40 */	bge lbl_80376B24
/* 80376AE8 00372748  FC 03 10 00 */	fcmpu cr0, f3, f2
/* 80376AEC 0037274C  C3 C2 A7 14 */	lfs f30, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376AF0 00372750  40 82 00 0C */	bne lbl_80376AFC
/* 80376AF4 00372754  C3 62 A7 20 */	lfs f27, lbl_80642D20-_SDA2_BASE_(r2)
/* 80376AF8 00372758  48 00 00 B0 */	b lbl_80376BA8
lbl_80376AFC:
/* 80376AFC 0037275C  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376B00 00372760  EC 43 10 28 */	fsubs f2, f3, f2
/* 80376B04 00372764  C0 22 A7 2C */	lfs f1, lbl_80642D2C-_SDA2_BASE_(r2)
/* 80376B08 00372768  EC 03 00 32 */	fmuls f0, f3, f0
/* 80376B0C 0037276C  EC 3F 00 72 */	fmuls f1, f31, f1
/* 80376B10 00372770  EC 00 28 28 */	fsubs f0, f0, f5
/* 80376B14 00372774  EC 21 10 24 */	fdivs f1, f1, f2
/* 80376B18 00372778  EC 00 10 24 */	fdivs f0, f0, f2
/* 80376B1C 0037277C  EF 61 00 2A */	fadds f27, f1, f0
/* 80376B20 00372780  48 00 00 88 */	b lbl_80376BA8
lbl_80376B24:
/* 80376B24 00372784  C0 6D B2 40 */	lfs f3, lbl_80640500-_SDA_BASE_(r13)
/* 80376B28 00372788  FC 1F 18 40 */	fcmpo cr0, f31, f3
/* 80376B2C 0037278C  40 80 00 40 */	bge lbl_80376B6C
/* 80376B30 00372790  FC 02 18 00 */	fcmpu cr0, f2, f3
/* 80376B34 00372794  C3 C2 A7 14 */	lfs f30, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376B38 00372798  40 82 00 0C */	bne lbl_80376B44
/* 80376B3C 0037279C  C3 62 A7 30 */	lfs f27, lbl_80642D30-_SDA2_BASE_(r2)
/* 80376B40 003727A0  48 00 00 68 */	b lbl_80376BA8
lbl_80376B44:
/* 80376B44 003727A4  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376B48 003727A8  EC 82 18 28 */	fsubs f4, f2, f3
/* 80376B4C 003727AC  C0 22 A7 2C */	lfs f1, lbl_80642D2C-_SDA2_BASE_(r2)
/* 80376B50 003727B0  EC 03 00 32 */	fmuls f0, f3, f0
/* 80376B54 003727B4  EC 3F 00 72 */	fmuls f1, f31, f1
/* 80376B58 003727B8  EC 02 00 28 */	fsubs f0, f2, f0
/* 80376B5C 003727BC  EC 21 20 24 */	fdivs f1, f1, f4
/* 80376B60 003727C0  EC 00 20 24 */	fdivs f0, f0, f4
/* 80376B64 003727C4  EF 61 00 2A */	fadds f27, f1, f0
/* 80376B68 003727C8  48 00 00 40 */	b lbl_80376BA8
lbl_80376B6C:
/* 80376B6C 003727CC  C0 42 A7 24 */	lfs f2, lbl_80642D24-_SDA2_BASE_(r2)
/* 80376B70 003727D0  FC 03 10 00 */	fcmpu cr0, f3, f2
/* 80376B74 003727D4  40 82 00 0C */	bne lbl_80376B80
/* 80376B78 003727D8  C3 C2 A7 30 */	lfs f30, lbl_80642D30-_SDA2_BASE_(r2)
/* 80376B7C 003727DC  48 00 00 28 */	b lbl_80376BA4
lbl_80376B80:
/* 80376B80 003727E0  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376B84 003727E4  EC 83 10 28 */	fsubs f4, f3, f2
/* 80376B88 003727E8  C0 22 A7 14 */	lfs f1, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376B8C 003727EC  EC 03 00 32 */	fmuls f0, f3, f0
/* 80376B90 003727F0  EC 3F 00 72 */	fmuls f1, f31, f1
/* 80376B94 003727F4  EC 00 10 28 */	fsubs f0, f0, f2
/* 80376B98 003727F8  EC 21 20 24 */	fdivs f1, f1, f4
/* 80376B9C 003727FC  EC 00 20 24 */	fdivs f0, f0, f4
/* 80376BA0 00372800  EF C1 00 2A */	fadds f30, f1, f0
lbl_80376BA4:
/* 80376BA4 00372804  C3 62 A7 14 */	lfs f27, lbl_80642D14-_SDA2_BASE_(r2)
lbl_80376BA8:
/* 80376BA8 00372808  C0 3C 00 1C */	lfs f1, 0x1c(r28)
/* 80376BAC 0037280C  4B E5 D4 CD */	bl cos
/* 80376BB0 00372810  C0 1C 00 18 */	lfs f0, 0x18(r28)
/* 80376BB4 00372814  FF E0 08 18 */	frsp f31, f1
/* 80376BB8 00372818  FC 20 00 90 */	fmr f1, f0
/* 80376BBC 0037281C  4B E5 D4 BD */	bl cos
/* 80376BC0 00372820  FC 40 08 18 */	frsp f2, f1
/* 80376BC4 00372824  C0 02 A7 30 */	lfs f0, lbl_80642D30-_SDA2_BASE_(r2)
/* 80376BC8 00372828  C0 3C 00 1C */	lfs f1, 0x1c(r28)
/* 80376BCC 0037282C  EC 42 F8 2A */	fadds f2, f2, f31
/* 80376BD0 00372830  EF E2 00 32 */	fmuls f31, f2, f0
/* 80376BD4 00372834  4B E5 D4 A5 */	bl cos
/* 80376BD8 00372838  FC 60 08 18 */	frsp f3, f1
/* 80376BDC 0037283C  C0 3C 00 24 */	lfs f1, 0x24(r28)
/* 80376BE0 00372840  C0 42 A7 14 */	lfs f2, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376BE4 00372844  EF DE 00 72 */	fmuls f30, f30, f1
/* 80376BE8 00372848  C0 1C 00 20 */	lfs f0, 0x20(r28)
/* 80376BEC 0037284C  FC 60 18 50 */	fneg f3, f3
/* 80376BF0 00372850  EF 7B 00 72 */	fmuls f27, f27, f1
/* 80376BF4 00372854  EC 22 E0 28 */	fsubs f1, f2, f28
/* 80376BF8 00372858  EC 9F 18 2A */	fadds f4, f31, f3
/* 80376BFC 0037285C  EC 7B 07 32 */	fmuls f3, f27, f28
/* 80376C00 00372860  EC BE 07 32 */	fmuls f5, f30, f28
/* 80376C04 00372864  EC 9F 20 24 */	fdivs f4, f31, f4
/* 80376C08 00372868  EC 24 00 72 */	fmuls f1, f4, f1
/* 80376C0C 0037286C  EC 23 08 2A */	fadds f1, f3, f1
/* 80376C10 00372870  EC 22 08 2A */	fadds f1, f2, f1
/* 80376C14 00372874  EC 00 08 2A */	fadds f0, f0, f1
/* 80376C18 00372878  48 00 02 24 */	b lbl_80376E3C
lbl_80376C1C:
/* 80376C1C 0037287C  88 0D B2 4C */	lbz r0, lbl_8064050C-_SDA_BASE_(r13)
/* 80376C20 00372880  7C 00 07 75 */	extsb. r0, r0
/* 80376C24 00372884  40 82 00 1C */	bne lbl_80376C40
/* 80376C28 00372888  C0 22 A7 1C */	lfs f1, lbl_80642D1C-_SDA2_BASE_(r2)
/* 80376C2C 0037288C  38 00 00 01 */	li r0, 1
/* 80376C30 00372890  C0 1C 00 14 */	lfs f0, 0x14(r28)
/* 80376C34 00372894  EC 01 00 2A */	fadds f0, f1, f0
/* 80376C38 00372898  98 0D B2 4C */	stb r0, lbl_8064050C-_SDA_BASE_(r13)
/* 80376C3C 0037289C  D0 0D B2 48 */	stfs f0, lbl_80640508-_SDA_BASE_(r13)
lbl_80376C40:
/* 80376C40 003728A0  88 0D B2 54 */	lbz r0, lbl_80640514-_SDA_BASE_(r13)
/* 80376C44 003728A4  7C 00 07 75 */	extsb. r0, r0
/* 80376C48 003728A8  40 82 00 18 */	bne lbl_80376C60
/* 80376C4C 003728AC  C0 1C 00 14 */	lfs f0, 0x14(r28)
/* 80376C50 003728B0  38 00 00 01 */	li r0, 1
/* 80376C54 003728B4  FC 00 00 50 */	fneg f0, f0
/* 80376C58 003728B8  98 0D B2 54 */	stb r0, lbl_80640514-_SDA_BASE_(r13)
/* 80376C5C 003728BC  D0 0D B2 50 */	stfs f0, lbl_80640510-_SDA_BASE_(r13)
lbl_80376C60:
/* 80376C60 003728C0  88 0D B2 5C */	lbz r0, lbl_8064051C-_SDA_BASE_(r13)
/* 80376C64 003728C4  7C 00 07 75 */	extsb. r0, r0
/* 80376C68 003728C8  40 82 00 14 */	bne lbl_80376C7C
/* 80376C6C 003728CC  C0 1C 00 14 */	lfs f0, 0x14(r28)
/* 80376C70 003728D0  38 00 00 01 */	li r0, 1
/* 80376C74 003728D4  D0 0D B2 58 */	stfs f0, lbl_80640518-_SDA_BASE_(r13)
/* 80376C78 003728D8  98 0D B2 5C */	stb r0, lbl_8064051C-_SDA_BASE_(r13)
lbl_80376C7C:
/* 80376C7C 003728DC  88 0D B2 64 */	lbz r0, lbl_80640524-_SDA_BASE_(r13)
/* 80376C80 003728E0  7C 00 07 75 */	extsb. r0, r0
/* 80376C84 003728E4  40 82 00 1C */	bne lbl_80376CA0
/* 80376C88 003728E8  C0 22 A7 24 */	lfs f1, lbl_80642D24-_SDA2_BASE_(r2)
/* 80376C8C 003728EC  38 00 00 01 */	li r0, 1
/* 80376C90 003728F0  C0 1C 00 14 */	lfs f0, 0x14(r28)
/* 80376C94 003728F4  EC 01 00 28 */	fsubs f0, f1, f0
/* 80376C98 003728F8  98 0D B2 64 */	stb r0, lbl_80640524-_SDA_BASE_(r13)
/* 80376C9C 003728FC  D0 0D B2 60 */	stfs f0, lbl_80640520-_SDA_BASE_(r13)
lbl_80376CA0:
/* 80376CA0 00372900  C0 8D B2 48 */	lfs f4, lbl_80640508-_SDA_BASE_(r13)
/* 80376CA4 00372904  FC 1F 20 40 */	fcmpo cr0, f31, f4
/* 80376CA8 00372908  40 80 00 48 */	bge lbl_80376CF0
/* 80376CAC 0037290C  C0 22 A7 1C */	lfs f1, lbl_80642D1C-_SDA2_BASE_(r2)
/* 80376CB0 00372910  FC 01 20 00 */	fcmpu cr0, f1, f4
/* 80376CB4 00372914  40 82 00 0C */	bne lbl_80376CC0
/* 80376CB8 00372918  C0 A2 A7 20 */	lfs f5, lbl_80642D20-_SDA2_BASE_(r2)
/* 80376CBC 0037291C  48 00 00 2C */	b lbl_80376CE8
lbl_80376CC0:
/* 80376CC0 00372920  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376CC4 00372924  EC 61 20 28 */	fsubs f3, f1, f4
/* 80376CC8 00372928  C0 42 A7 14 */	lfs f2, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376CCC 0037292C  EC 24 00 32 */	fmuls f1, f4, f0
/* 80376CD0 00372930  C0 02 A7 24 */	lfs f0, lbl_80642D24-_SDA2_BASE_(r2)
/* 80376CD4 00372934  EC 5F 00 B2 */	fmuls f2, f31, f2
/* 80376CD8 00372938  EC 00 08 28 */	fsubs f0, f0, f1
/* 80376CDC 0037293C  EC 22 18 24 */	fdivs f1, f2, f3
/* 80376CE0 00372940  EC 00 18 24 */	fdivs f0, f0, f3
/* 80376CE4 00372944  EC A1 00 2A */	fadds f5, f1, f0
lbl_80376CE8:
/* 80376CE8 00372948  C0 42 A7 14 */	lfs f2, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376CEC 0037294C  48 00 01 28 */	b lbl_80376E14
lbl_80376CF0:
/* 80376CF0 00372950  C0 6D B2 50 */	lfs f3, lbl_80640510-_SDA_BASE_(r13)
/* 80376CF4 00372954  FC 1F 18 40 */	fcmpo cr0, f31, f3
/* 80376CF8 00372958  40 80 00 44 */	bge lbl_80376D3C
/* 80376CFC 0037295C  FC 04 18 00 */	fcmpu cr0, f4, f3
/* 80376D00 00372960  C0 A2 A7 2C */	lfs f5, lbl_80642D2C-_SDA2_BASE_(r2)
/* 80376D04 00372964  40 82 00 0C */	bne lbl_80376D10
/* 80376D08 00372968  C0 42 A7 0C */	lfs f2, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376D0C 0037296C  48 00 01 08 */	b lbl_80376E14
lbl_80376D10:
/* 80376D10 00372970  C0 02 A7 14 */	lfs f0, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376D14 00372974  EC 24 01 72 */	fmuls f1, f4, f5
/* 80376D18 00372978  C0 42 A7 3C */	lfs f2, lbl_80642D3C-_SDA2_BASE_(r2)
/* 80376D1C 0037297C  EC 84 18 28 */	fsubs f4, f4, f3
/* 80376D20 00372980  EC 03 00 32 */	fmuls f0, f3, f0
/* 80376D24 00372984  EC 5F 00 B2 */	fmuls f2, f31, f2
/* 80376D28 00372988  EC 01 00 28 */	fsubs f0, f1, f0
/* 80376D2C 0037298C  EC 22 20 24 */	fdivs f1, f2, f4
/* 80376D30 00372990  EC 00 20 24 */	fdivs f0, f0, f4
/* 80376D34 00372994  EC 41 00 2A */	fadds f2, f1, f0
/* 80376D38 00372998  48 00 00 DC */	b lbl_80376E14
lbl_80376D3C:
/* 80376D3C 0037299C  C0 8D B2 58 */	lfs f4, lbl_80640518-_SDA_BASE_(r13)
/* 80376D40 003729A0  FC 1F 20 40 */	fcmpo cr0, f31, f4
/* 80376D44 003729A4  40 80 00 48 */	bge lbl_80376D8C
/* 80376D48 003729A8  FC 03 20 00 */	fcmpu cr0, f3, f4
/* 80376D4C 003729AC  40 82 00 0C */	bne lbl_80376D58
/* 80376D50 003729B0  C0 A2 A7 0C */	lfs f5, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376D54 003729B4  48 00 00 30 */	b lbl_80376D84
lbl_80376D58:
/* 80376D58 003729B8  C0 22 A7 14 */	lfs f1, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376D5C 003729BC  EC A3 20 28 */	fsubs f5, f3, f4
/* 80376D60 003729C0  C0 02 A7 2C */	lfs f0, lbl_80642D2C-_SDA2_BASE_(r2)
/* 80376D64 003729C4  EC 23 00 72 */	fmuls f1, f3, f1
/* 80376D68 003729C8  C0 42 A7 38 */	lfs f2, lbl_80642D38-_SDA2_BASE_(r2)
/* 80376D6C 003729CC  EC 04 00 32 */	fmuls f0, f4, f0
/* 80376D70 003729D0  EC 5F 00 B2 */	fmuls f2, f31, f2
/* 80376D74 003729D4  EC 01 00 28 */	fsubs f0, f1, f0
/* 80376D78 003729D8  EC 22 28 24 */	fdivs f1, f2, f5
/* 80376D7C 003729DC  EC 00 28 24 */	fdivs f0, f0, f5
/* 80376D80 003729E0  EC A1 00 2A */	fadds f5, f1, f0
lbl_80376D84:
/* 80376D84 003729E4  C0 42 A7 2C */	lfs f2, lbl_80642D2C-_SDA2_BASE_(r2)
/* 80376D88 003729E8  48 00 00 8C */	b lbl_80376E14
lbl_80376D8C:
/* 80376D8C 003729EC  C0 6D B2 60 */	lfs f3, lbl_80640520-_SDA_BASE_(r13)
/* 80376D90 003729F0  FC 1F 18 40 */	fcmpo cr0, f31, f3
/* 80376D94 003729F4  40 80 00 44 */	bge lbl_80376DD8
/* 80376D98 003729F8  FC 04 18 00 */	fcmpu cr0, f4, f3
/* 80376D9C 003729FC  C0 A2 A7 14 */	lfs f5, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376DA0 00372A00  40 82 00 0C */	bne lbl_80376DAC
/* 80376DA4 00372A04  C0 42 A7 0C */	lfs f2, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376DA8 00372A08  48 00 00 6C */	b lbl_80376E14
lbl_80376DAC:
/* 80376DAC 00372A0C  C0 02 A7 2C */	lfs f0, lbl_80642D2C-_SDA2_BASE_(r2)
/* 80376DB0 00372A10  EC 24 01 72 */	fmuls f1, f4, f5
/* 80376DB4 00372A14  C0 42 A7 38 */	lfs f2, lbl_80642D38-_SDA2_BASE_(r2)
/* 80376DB8 00372A18  EC 84 18 28 */	fsubs f4, f4, f3
/* 80376DBC 00372A1C  EC 03 00 32 */	fmuls f0, f3, f0
/* 80376DC0 00372A20  EC 5F 00 B2 */	fmuls f2, f31, f2
/* 80376DC4 00372A24  EC 01 00 28 */	fsubs f0, f1, f0
/* 80376DC8 00372A28  EC 22 20 24 */	fdivs f1, f2, f4
/* 80376DCC 00372A2C  EC 00 20 24 */	fdivs f0, f0, f4
/* 80376DD0 00372A30  EC 41 00 2A */	fadds f2, f1, f0
/* 80376DD4 00372A34  48 00 00 40 */	b lbl_80376E14
lbl_80376DD8:
/* 80376DD8 00372A38  C0 42 A7 24 */	lfs f2, lbl_80642D24-_SDA2_BASE_(r2)
/* 80376DDC 00372A3C  FC 03 10 00 */	fcmpu cr0, f3, f2
/* 80376DE0 00372A40  40 82 00 0C */	bne lbl_80376DEC
/* 80376DE4 00372A44  C0 A2 A7 30 */	lfs f5, lbl_80642D30-_SDA2_BASE_(r2)
/* 80376DE8 00372A48  48 00 00 28 */	b lbl_80376E10
lbl_80376DEC:
/* 80376DEC 00372A4C  C0 02 A7 0C */	lfs f0, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376DF0 00372A50  EC 83 10 28 */	fsubs f4, f3, f2
/* 80376DF4 00372A54  C0 22 A7 14 */	lfs f1, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376DF8 00372A58  EC 03 00 32 */	fmuls f0, f3, f0
/* 80376DFC 00372A5C  EC 3F 00 72 */	fmuls f1, f31, f1
/* 80376E00 00372A60  EC 00 10 28 */	fsubs f0, f0, f2
/* 80376E04 00372A64  EC 21 20 24 */	fdivs f1, f1, f4
/* 80376E08 00372A68  EC 00 20 24 */	fdivs f0, f0, f4
/* 80376E0C 00372A6C  EC A1 00 2A */	fadds f5, f1, f0
lbl_80376E10:
/* 80376E10 00372A70  C0 42 A7 14 */	lfs f2, lbl_80642D14-_SDA2_BASE_(r2)
lbl_80376E14:
/* 80376E14 00372A74  C0 3C 00 24 */	lfs f1, 0x24(r28)
/* 80376E18 00372A78  C0 02 A7 14 */	lfs f0, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376E1C 00372A7C  EC 42 00 72 */	fmuls f2, f2, f1
/* 80376E20 00372A80  EC A5 00 72 */	fmuls f5, f5, f1
/* 80376E24 00372A84  EC 22 07 32 */	fmuls f1, f2, f28
/* 80376E28 00372A88  EC A5 07 32 */	fmuls f5, f5, f28
/* 80376E2C 00372A8C  EC 00 08 2A */	fadds f0, f0, f1
/* 80376E30 00372A90  48 00 00 0C */	b lbl_80376E3C
lbl_80376E34:
/* 80376E34 00372A94  C0 A2 A7 0C */	lfs f5, lbl_80642D0C-_SDA2_BASE_(r2)
/* 80376E38 00372A98  FC 00 28 90 */	fmr f0, f5
lbl_80376E3C:
/* 80376E3C 00372A9C  57 E0 07 BD */	rlwinm. r0, r31, 0, 0x1e, 0x1e
/* 80376E40 00372AA0  41 82 00 14 */	beq lbl_80376E54
/* 80376E44 00372AA4  80 1E 00 04 */	lwz r0, 4(r30)
/* 80376E48 00372AA8  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80376E4C 00372AAC  40 82 00 08 */	bne lbl_80376E54
/* 80376E50 00372AB0  D0 BD 00 08 */	stfs f5, 8(r29)
lbl_80376E54:
/* 80376E54 00372AB4  57 E0 07 7B */	rlwinm. r0, r31, 0, 0x1d, 0x1d
/* 80376E58 00372AB8  41 82 00 14 */	beq lbl_80376E6C
/* 80376E5C 00372ABC  80 1E 00 04 */	lwz r0, 4(r30)
/* 80376E60 00372AC0  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80376E64 00372AC4  40 82 00 08 */	bne lbl_80376E6C
/* 80376E68 00372AC8  D0 1D 00 0C */	stfs f0, 0xc(r29)
lbl_80376E6C:
/* 80376E6C 00372ACC  57 E0 07 39 */	rlwinm. r0, r31, 0, 0x1c, 0x1c
/* 80376E70 00372AD0  41 82 00 50 */	beq lbl_80376EC0
/* 80376E74 00372AD4  80 1E 00 04 */	lwz r0, 4(r30)
/* 80376E78 00372AD8  54 00 07 39 */	rlwinm. r0, r0, 0, 0x1c, 0x1c
/* 80376E7C 00372ADC  40 82 00 44 */	bne lbl_80376EC0
/* 80376E80 00372AE0  80 7C 00 10 */	lwz r3, 0x10(r28)
/* 80376E84 00372AE4  3C 00 43 30 */	lis r0, 0x4330
/* 80376E88 00372AE8  C0 02 A7 14 */	lfs f0, lbl_80642D14-_SDA2_BASE_(r2)
/* 80376E8C 00372AEC  6C 63 80 00 */	xoris r3, r3, 0x8000
/* 80376E90 00372AF0  90 01 00 30 */	stw r0, 0x30(r1)
/* 80376E94 00372AF4  C8 22 A7 48 */	lfd f1, lbl_80642D48-_SDA2_BASE_(r2)
/* 80376E98 00372AF8  EC 40 E8 28 */	fsubs f2, f0, f29
/* 80376E9C 00372AFC  90 61 00 34 */	stw r3, 0x34(r1)
/* 80376EA0 00372B00  C8 01 00 30 */	lfd f0, 0x30(r1)
/* 80376EA4 00372B04  EC 00 08 28 */	fsubs f0, f0, f1
/* 80376EA8 00372B08  EC 02 00 32 */	fmuls f0, f2, f0
/* 80376EAC 00372B0C  FC 00 00 1E */	fctiwz f0, f0
/* 80376EB0 00372B10  D8 01 00 38 */	stfd f0, 0x38(r1)
/* 80376EB4 00372B14  80 01 00 3C */	lwz r0, 0x3c(r1)
/* 80376EB8 00372B18  7C 00 00 D0 */	neg r0, r0
/* 80376EBC 00372B1C  90 1D 00 18 */	stw r0, 0x18(r29)
lbl_80376EC0:
/* 80376EC0 00372B20  E3 E1 00 A8 */	psq_l f31, 168(r1), 0, qr0
/* 80376EC4 00372B24  CB E1 00 A0 */	lfd f31, 0xa0(r1)
/* 80376EC8 00372B28  E3 C1 00 98 */	psq_l f30, 152(r1), 0, qr0
/* 80376ECC 00372B2C  CB C1 00 90 */	lfd f30, 0x90(r1)
/* 80376ED0 00372B30  E3 A1 00 88 */	psq_l f29, 136(r1), 0, qr0
/* 80376ED4 00372B34  CB A1 00 80 */	lfd f29, 0x80(r1)
/* 80376ED8 00372B38  E3 81 00 78 */	psq_l f28, 120(r1), 0, qr0
/* 80376EDC 00372B3C  CB 81 00 70 */	lfd f28, 0x70(r1)
/* 80376EE0 00372B40  E3 61 00 68 */	psq_l f27, 104(r1), 0, qr0
/* 80376EE4 00372B44  39 61 00 60 */	addi r11, r1, 0x60
/* 80376EE8 00372B48  CB 61 00 60 */	lfd f27, 0x60(r1)
/* 80376EEC 00372B4C  4B E5 02 89 */	bl _restgpr_27
/* 80376EF0 00372B50  80 01 00 B4 */	lwz r0, 0xb4(r1)
/* 80376EF4 00372B54  7C 08 03 A6 */	mtlr r0
/* 80376EF8 00372B58  38 21 00 B0 */	addi r1, r1, 0xb0
/* 80376EFC 00372B5C  4E 80 00 20 */	blr

.global detail_AllocAmbientArg__Q34nw4r3snd14Sound3DManagerFUl
detail_AllocAmbientArg__Q34nw4r3snd14Sound3DManagerFUl:
/* 80376F00 00372B60  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80376F04 00372B64  7C 08 02 A6 */	mflr r0
/* 80376F08 00372B68  28 04 00 18 */	cmplwi r4, 0x18
/* 80376F0C 00372B6C  90 01 00 14 */	stw r0, 0x14(r1)
/* 80376F10 00372B70  41 82 00 0C */	beq lbl_80376F1C
/* 80376F14 00372B74  38 60 00 00 */	li r3, 0
/* 80376F18 00372B78  48 00 00 40 */	b lbl_80376F58
lbl_80376F1C:
/* 80376F1C 00372B7C  38 63 00 08 */	addi r3, r3, 8
/* 80376F20 00372B80  4B FF AC 39 */	bl AllocImpl__Q44nw4r3snd6detail8PoolImplFv
/* 80376F24 00372B84  2C 03 00 00 */	cmpwi r3, 0
/* 80376F28 00372B88  40 82 00 0C */	bne lbl_80376F34
/* 80376F2C 00372B8C  38 60 00 00 */	li r3, 0
/* 80376F30 00372B90  48 00 00 28 */	b lbl_80376F58
lbl_80376F34:
/* 80376F34 00372B94  41 82 00 24 */	beq lbl_80376F58
/* 80376F38 00372B98  38 00 FF FF */	li r0, -1
/* 80376F3C 00372B9C  38 A0 00 00 */	li r5, 0
/* 80376F40 00372BA0  90 03 00 00 */	stw r0, 0(r3)
/* 80376F44 00372BA4  38 80 00 01 */	li r4, 1
/* 80376F48 00372BA8  38 00 00 80 */	li r0, 0x80
/* 80376F4C 00372BAC  90 A3 00 04 */	stw r5, 4(r3)
/* 80376F50 00372BB0  98 83 00 08 */	stb r4, 8(r3)
/* 80376F54 00372BB4  98 03 00 09 */	stb r0, 9(r3)
lbl_80376F58:
/* 80376F58 00372BB8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80376F5C 00372BBC  7C 08 03 A6 */	mtlr r0
/* 80376F60 00372BC0  38 21 00 10 */	addi r1, r1, 0x10
/* 80376F64 00372BC4  4E 80 00 20 */	blr

.global detail_FreeAmbientArg__Q34nw4r3snd14Sound3DManagerFPvPCQ44nw4r3snd6detail10BasicSound
detail_FreeAmbientArg__Q34nw4r3snd14Sound3DManagerFPvPCQ44nw4r3snd6detail10BasicSound:
/* 80376F68 00372BC8  2C 04 00 00 */	cmpwi r4, 0
/* 80376F6C 00372BCC  4D 82 00 20 */	beqlr
/* 80376F70 00372BD0  38 63 00 08 */	addi r3, r3, 8
/* 80376F74 00372BD4  4B FF AC 40 */	b FreeImpl__Q44nw4r3snd6detail8PoolImplFPv
/* 80376F78 00372BD8  4E 80 00 20 */	blr

/* @4@detail_FreeAmbientArg__Q34nw4r3snd14Sound3DManagerFPvPCQ44nw4r3snd6detail10BasicSound */
.global func_80376F7C
func_80376F7C:
/* 80376F7C 00372BDC  38 63 FF FC */	addi r3, r3, -4
/* 80376F80 00372BE0  4B FF FF E8 */	b detail_FreeAmbientArg__Q34nw4r3snd14Sound3DManagerFPvPCQ44nw4r3snd6detail10BasicSound

/* @4@detail_AllocAmbientArg__Q34nw4r3snd14Sound3DManagerFUl */
.global func_80376F84
func_80376F84:
/* 80376F84 00372BE4  38 63 FF FC */	addi r3, r3, -4
/* 80376F88 00372BE8  4B FF FF 78 */	b detail_AllocAmbientArg__Q34nw4r3snd14Sound3DManagerFUl