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

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

.global GetInstance__Q44nw4r3snd6detail11SoundThreadFv
GetInstance__Q44nw4r3snd6detail11SoundThreadFv:
/* 8037C450 003780B0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8037C454 003780B4  7C 08 02 A6 */	mflr r0
/* 8037C458 003780B8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037C45C 003780BC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8037C460 003780C0  88 0D B2 78 */	lbz r0, lbl_80640538-_SDA_BASE_(r13)
/* 8037C464 003780C4  7C 00 07 75 */	extsb. r0, r0
/* 8037C468 003780C8  40 82 00 90 */	bne lbl_8037C4F8
/* 8037C46C 003780CC  3F E0 80 64 */	lis r31, lbl_806389C0@ha
/* 8037C470 003780D0  38 00 00 00 */	li r0, 0
/* 8037C474 003780D4  3B FF 89 C0 */	addi r31, r31, lbl_806389C0@l
/* 8037C478 003780D8  38 A0 00 04 */	li r5, 4
/* 8037C47C 003780DC  90 1F 03 7C */	stw r0, 0x37c(r31)
/* 8037C480 003780E0  38 FF 03 7C */	addi r7, r31, 0x37c
/* 8037C484 003780E4  38 DF 03 88 */	addi r6, r31, 0x388
/* 8037C488 003780E8  38 7F 03 20 */	addi r3, r31, 0x320
/* 8037C48C 003780EC  90 1F 03 80 */	stw r0, 0x380(r31)
/* 8037C490 003780F0  38 9F 03 40 */	addi r4, r31, 0x340
/* 8037C494 003780F4  90 1F 03 88 */	stw r0, 0x388(r31)
/* 8037C498 003780F8  90 1F 03 8C */	stw r0, 0x38c(r31)
/* 8037C49C 003780FC  90 1F 03 50 */	stw r0, 0x350(r31)
/* 8037C4A0 00378100  90 1F 03 6C */	stw r0, 0x36c(r31)
/* 8037C4A4 00378104  90 1F 03 70 */	stw r0, 0x370(r31)
/* 8037C4A8 00378108  90 1F 03 78 */	stw r0, 0x378(r31)
/* 8037C4AC 0037810C  90 FF 03 7C */	stw r7, 0x37c(r31)
/* 8037C4B0 00378110  90 FF 03 80 */	stw r7, 0x380(r31)
/* 8037C4B4 00378114  90 1F 03 84 */	stw r0, 0x384(r31)
/* 8037C4B8 00378118  90 DF 03 88 */	stw r6, 0x388(r31)
/* 8037C4BC 0037811C  90 DF 03 8C */	stw r6, 0x38c(r31)
/* 8037C4C0 00378120  98 1F 03 94 */	stb r0, 0x394(r31)
/* 8037C4C4 00378124  4B EF 2A 35 */	bl OSInitMessageQueue
/* 8037C4C8 00378128  38 7F 03 18 */	addi r3, r31, 0x318
/* 8037C4CC 0037812C  4B EF 4E 1D */	bl OSInitThreadQueue
/* 8037C4D0 00378130  38 7F 03 54 */	addi r3, r31, 0x354
/* 8037C4D4 00378134  4B EF 34 3D */	bl OSInitMutex
/* 8037C4D8 00378138  3C 80 80 38 */	lis r4, __dt__Q44nw4r3snd6detail11SoundThreadFv@ha
/* 8037C4DC 0037813C  3C A0 80 64 */	lis r5, lbl_806389B0@ha
/* 8037C4E0 00378140  7F E3 FB 78 */	mr r3, r31
/* 8037C4E4 00378144  38 84 C5 14 */	addi r4, r4, __dt__Q44nw4r3snd6detail11SoundThreadFv@l
/* 8037C4E8 00378148  38 A5 89 B0 */	addi r5, r5, lbl_806389B0@l
/* 8037C4EC 0037814C  4B E4 A7 5D */	bl __register_global_object_tmp
/* 8037C4F0 00378150  38 00 00 01 */	li r0, 1
/* 8037C4F4 00378154  98 0D B2 78 */	stb r0, lbl_80640538-_SDA_BASE_(r13)
lbl_8037C4F8:
/* 8037C4F8 00378158  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8037C4FC 0037815C  3C 60 80 64 */	lis r3, lbl_806389C0@ha
/* 8037C500 00378160  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8037C504 00378164  38 63 89 C0 */	addi r3, r3, lbl_806389C0@l
/* 8037C508 00378168  7C 08 03 A6 */	mtlr r0
/* 8037C50C 0037816C  38 21 00 10 */	addi r1, r1, 0x10
/* 8037C510 00378170  4E 80 00 20 */	blr

.global __dt__Q44nw4r3snd6detail11SoundThreadFv
__dt__Q44nw4r3snd6detail11SoundThreadFv:
/* 8037C514 00378174  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8037C518 00378178  7C 08 02 A6 */	mflr r0
/* 8037C51C 0037817C  2C 03 00 00 */	cmpwi r3, 0
/* 8037C520 00378180  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037C524 00378184  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8037C528 00378188  7C 9F 23 78 */	mr r31, r4
/* 8037C52C 0037818C  93 C1 00 08 */	stw r30, 8(r1)
/* 8037C530 00378190  7C 7E 1B 78 */	mr r30, r3
/* 8037C534 00378194  41 82 00 34 */	beq lbl_8037C568
/* 8037C538 00378198  34 63 03 84 */	addic. r3, r3, 0x384
/* 8037C53C 0037819C  41 82 00 0C */	beq lbl_8037C548
/* 8037C540 003781A0  38 80 00 00 */	li r4, 0
/* 8037C544 003781A4  4B FE 65 F5 */	bl __dt__Q44nw4r2ut6detail12LinkListImplFv
lbl_8037C548:
/* 8037C548 003781A8  34 7E 03 78 */	addic. r3, r30, 0x378
/* 8037C54C 003781AC  41 82 00 0C */	beq lbl_8037C558
/* 8037C550 003781B0  38 80 00 00 */	li r4, 0
/* 8037C554 003781B4  4B FE 65 E5 */	bl __dt__Q44nw4r2ut6detail12LinkListImplFv
lbl_8037C558:
/* 8037C558 003781B8  2C 1F 00 00 */	cmpwi r31, 0
/* 8037C55C 003781BC  40 81 00 0C */	ble lbl_8037C568
/* 8037C560 003781C0  7F C3 F3 78 */	mr r3, r30
/* 8037C564 003781C4  4B E5 E5 55 */	bl __dl__FPv
lbl_8037C568:
/* 8037C568 003781C8  7F C3 F3 78 */	mr r3, r30
/* 8037C56C 003781CC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8037C570 003781D0  83 C1 00 08 */	lwz r30, 8(r1)
/* 8037C574 003781D4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8037C578 003781D8  7C 08 03 A6 */	mtlr r0
/* 8037C57C 003781DC  38 21 00 10 */	addi r1, r1, 0x10
/* 8037C580 003781E0  4E 80 00 20 */	blr

.global Create__Q44nw4r3snd6detail11SoundThreadFlPvUl
Create__Q44nw4r3snd6detail11SoundThreadFlPvUl:
/* 8037C584 003781E4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8037C588 003781E8  7C 08 02 A6 */	mflr r0
/* 8037C58C 003781EC  90 01 00 24 */	stw r0, 0x24(r1)
/* 8037C590 003781F0  39 61 00 20 */	addi r11, r1, 0x20
/* 8037C594 003781F4  4B E4 AB 91 */	bl _savegpr_26
/* 8037C598 003781F8  88 03 03 94 */	lbz r0, 0x394(r3)
/* 8037C59C 003781FC  7C 7A 1B 78 */	mr r26, r3
/* 8037C5A0 00378200  7C 9B 23 78 */	mr r27, r4
/* 8037C5A4 00378204  7C BC 2B 78 */	mr r28, r5
/* 8037C5A8 00378208  2C 00 00 00 */	cmpwi r0, 0
/* 8037C5AC 0037820C  7C DD 33 78 */	mr r29, r6
/* 8037C5B0 00378210  41 82 00 0C */	beq lbl_8037C5BC
/* 8037C5B4 00378214  38 60 00 01 */	li r3, 1
/* 8037C5B8 00378218  48 00 00 EC */	b lbl_8037C6A4
lbl_8037C5BC:
/* 8037C5BC 0037821C  3B E0 00 01 */	li r31, 1
/* 8037C5C0 00378220  90 A3 03 50 */	stw r5, 0x350(r3)
/* 8037C5C4 00378224  9B E3 03 94 */	stb r31, 0x394(r3)
/* 8037C5C8 00378228  88 0D B2 78 */	lbz r0, lbl_80640538-_SDA_BASE_(r13)
/* 8037C5CC 0037822C  7C 00 07 75 */	extsb. r0, r0
/* 8037C5D0 00378230  40 82 00 8C */	bne lbl_8037C65C
/* 8037C5D4 00378234  3F C0 80 64 */	lis r30, lbl_806389C0@ha
/* 8037C5D8 00378238  38 00 00 00 */	li r0, 0
/* 8037C5DC 0037823C  3B DE 89 C0 */	addi r30, r30, lbl_806389C0@l
/* 8037C5E0 00378240  38 A0 00 04 */	li r5, 4
/* 8037C5E4 00378244  90 1E 03 7C */	stw r0, 0x37c(r30)
/* 8037C5E8 00378248  38 DE 03 7C */	addi r6, r30, 0x37c
/* 8037C5EC 0037824C  38 FE 03 88 */	addi r7, r30, 0x388
/* 8037C5F0 00378250  38 7E 03 20 */	addi r3, r30, 0x320
/* 8037C5F4 00378254  90 1E 03 80 */	stw r0, 0x380(r30)
/* 8037C5F8 00378258  38 9E 03 40 */	addi r4, r30, 0x340
/* 8037C5FC 0037825C  90 1E 03 88 */	stw r0, 0x388(r30)
/* 8037C600 00378260  90 1E 03 8C */	stw r0, 0x38c(r30)
/* 8037C604 00378264  90 1E 03 50 */	stw r0, 0x350(r30)
/* 8037C608 00378268  90 1E 03 6C */	stw r0, 0x36c(r30)
/* 8037C60C 0037826C  90 1E 03 70 */	stw r0, 0x370(r30)
/* 8037C610 00378270  90 1E 03 78 */	stw r0, 0x378(r30)
/* 8037C614 00378274  90 DE 03 7C */	stw r6, 0x37c(r30)
/* 8037C618 00378278  90 DE 03 80 */	stw r6, 0x380(r30)
/* 8037C61C 0037827C  90 1E 03 84 */	stw r0, 0x384(r30)
/* 8037C620 00378280  90 FE 03 88 */	stw r7, 0x388(r30)
/* 8037C624 00378284  90 FE 03 8C */	stw r7, 0x38c(r30)
/* 8037C628 00378288  98 1E 03 94 */	stb r0, 0x394(r30)
/* 8037C62C 0037828C  4B EF 28 CD */	bl OSInitMessageQueue
/* 8037C630 00378290  38 7E 03 18 */	addi r3, r30, 0x318
/* 8037C634 00378294  4B EF 4C B5 */	bl OSInitThreadQueue
/* 8037C638 00378298  38 7E 03 54 */	addi r3, r30, 0x354
/* 8037C63C 0037829C  4B EF 32 D5 */	bl OSInitMutex
/* 8037C640 003782A0  3C 80 80 38 */	lis r4, __dt__Q44nw4r3snd6detail11SoundThreadFv@ha
/* 8037C644 003782A4  3C A0 80 64 */	lis r5, lbl_806389B0@ha
/* 8037C648 003782A8  7F C3 F3 78 */	mr r3, r30
/* 8037C64C 003782AC  38 84 C5 14 */	addi r4, r4, __dt__Q44nw4r3snd6detail11SoundThreadFv@l
/* 8037C650 003782B0  38 A5 89 B0 */	addi r5, r5, lbl_806389B0@l
/* 8037C654 003782B4  4B E4 A5 F5 */	bl __register_global_object_tmp
/* 8037C658 003782B8  9B ED B2 78 */	stb r31, lbl_80640538-_SDA_BASE_(r13)
lbl_8037C65C:
/* 8037C65C 003782BC  3C 80 80 38 */	lis r4, SoundThreadFunc__Q44nw4r3snd6detail11SoundThreadFPv@ha
/* 8037C660 003782C0  3C A0 80 64 */	lis r5, lbl_806389C0@ha
/* 8037C664 003782C4  7F 43 D3 78 */	mr r3, r26
/* 8037C668 003782C8  7F A7 EB 78 */	mr r7, r29
/* 8037C66C 003782CC  7F 68 DB 78 */	mr r8, r27
/* 8037C670 003782D0  38 84 C7 C8 */	addi r4, r4, SoundThreadFunc__Q44nw4r3snd6detail11SoundThreadFPv@l
/* 8037C674 003782D4  38 A5 89 C0 */	addi r5, r5, lbl_806389C0@l
/* 8037C678 003782D8  7C DC EA 14 */	add r6, r28, r29
/* 8037C67C 003782DC  39 20 00 00 */	li r9, 0
/* 8037C680 003782E0  4B EF 52 61 */	bl OSCreateThread
/* 8037C684 003782E4  2C 03 00 00 */	cmpwi r3, 0
/* 8037C688 003782E8  7C 7F 1B 78 */	mr r31, r3
/* 8037C68C 003782EC  41 82 00 0C */	beq lbl_8037C698
/* 8037C690 003782F0  7F 43 D3 78 */	mr r3, r26
/* 8037C694 003782F4  4B EF 58 B5 */	bl OSResumeThread
lbl_8037C698:
/* 8037C698 003782F8  7C 1F 00 D0 */	neg r0, r31
/* 8037C69C 003782FC  7C 00 FB 78 */	or r0, r0, r31
/* 8037C6A0 00378300  54 03 0F FE */	srwi r3, r0, 0x1f
lbl_8037C6A4:
/* 8037C6A4 00378304  39 61 00 20 */	addi r11, r1, 0x20
/* 8037C6A8 00378308  4B E4 AA C9 */	bl _restgpr_26
/* 8037C6AC 0037830C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8037C6B0 00378310  7C 08 03 A6 */	mtlr r0
/* 8037C6B4 00378314  38 21 00 20 */	addi r1, r1, 0x20
/* 8037C6B8 00378318  4E 80 00 20 */	blr

.global AxCallbackFunc__Q44nw4r3snd6detail11SoundThreadFv
AxCallbackFunc__Q44nw4r3snd6detail11SoundThreadFv:
/* 8037C6BC 0037831C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8037C6C0 00378320  7C 08 02 A6 */	mflr r0
/* 8037C6C4 00378324  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037C6C8 00378328  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8037C6CC 0037832C  93 C1 00 08 */	stw r30, 8(r1)
/* 8037C6D0 00378330  88 0D B2 78 */	lbz r0, lbl_80640538-_SDA_BASE_(r13)
/* 8037C6D4 00378334  7C 00 07 75 */	extsb. r0, r0
/* 8037C6D8 00378338  40 82 00 90 */	bne lbl_8037C768
/* 8037C6DC 0037833C  3F C0 80 64 */	lis r30, lbl_806389C0@ha
/* 8037C6E0 00378340  38 00 00 00 */	li r0, 0
/* 8037C6E4 00378344  3B DE 89 C0 */	addi r30, r30, lbl_806389C0@l
/* 8037C6E8 00378348  38 A0 00 04 */	li r5, 4
/* 8037C6EC 0037834C  90 1E 03 7C */	stw r0, 0x37c(r30)
/* 8037C6F0 00378350  38 DE 03 7C */	addi r6, r30, 0x37c
/* 8037C6F4 00378354  38 FE 03 88 */	addi r7, r30, 0x388
/* 8037C6F8 00378358  38 7E 03 20 */	addi r3, r30, 0x320
/* 8037C6FC 0037835C  90 1E 03 80 */	stw r0, 0x380(r30)
/* 8037C700 00378360  38 9E 03 40 */	addi r4, r30, 0x340
/* 8037C704 00378364  90 1E 03 88 */	stw r0, 0x388(r30)
/* 8037C708 00378368  90 1E 03 8C */	stw r0, 0x38c(r30)
/* 8037C70C 0037836C  90 1E 03 50 */	stw r0, 0x350(r30)
/* 8037C710 00378370  90 1E 03 6C */	stw r0, 0x36c(r30)
/* 8037C714 00378374  90 1E 03 70 */	stw r0, 0x370(r30)
/* 8037C718 00378378  90 1E 03 78 */	stw r0, 0x378(r30)
/* 8037C71C 0037837C  90 DE 03 7C */	stw r6, 0x37c(r30)
/* 8037C720 00378380  90 DE 03 80 */	stw r6, 0x380(r30)
/* 8037C724 00378384  90 1E 03 84 */	stw r0, 0x384(r30)
/* 8037C728 00378388  90 FE 03 88 */	stw r7, 0x388(r30)
/* 8037C72C 0037838C  90 FE 03 8C */	stw r7, 0x38c(r30)
/* 8037C730 00378390  98 1E 03 94 */	stb r0, 0x394(r30)
/* 8037C734 00378394  4B EF 27 C5 */	bl OSInitMessageQueue
/* 8037C738 00378398  38 7E 03 18 */	addi r3, r30, 0x318
/* 8037C73C 0037839C  4B EF 4B AD */	bl OSInitThreadQueue
/* 8037C740 003783A0  38 7E 03 54 */	addi r3, r30, 0x354
/* 8037C744 003783A4  4B EF 31 CD */	bl OSInitMutex
/* 8037C748 003783A8  3C 80 80 38 */	lis r4, __dt__Q44nw4r3snd6detail11SoundThreadFv@ha
/* 8037C74C 003783AC  3C A0 80 64 */	lis r5, lbl_806389B0@ha
/* 8037C750 003783B0  7F C3 F3 78 */	mr r3, r30
/* 8037C754 003783B4  38 84 C5 14 */	addi r4, r4, __dt__Q44nw4r3snd6detail11SoundThreadFv@l
/* 8037C758 003783B8  38 A5 89 B0 */	addi r5, r5, lbl_806389B0@l
/* 8037C75C 003783BC  4B E4 A4 ED */	bl __register_global_object_tmp
/* 8037C760 003783C0  38 00 00 01 */	li r0, 1
/* 8037C764 003783C4  98 0D B2 78 */	stb r0, lbl_80640538-_SDA_BASE_(r13)
lbl_8037C768:
/* 8037C768 003783C8  3F C0 80 64 */	lis r30, lbl_806389C0@ha
/* 8037C76C 003783CC  38 80 00 01 */	li r4, 1
/* 8037C770 003783D0  3B DE 89 C0 */	addi r30, r30, lbl_806389C0@l
/* 8037C774 003783D4  38 A0 00 00 */	li r5, 0
/* 8037C778 003783D8  38 7E 03 20 */	addi r3, r30, 0x320
/* 8037C77C 003783DC  4B EF 27 DD */	bl OSSendMessage
/* 8037C780 003783E0  87 FE 03 88 */	lwzu r31, 0x388(r30)
/* 8037C784 003783E4  48 00 00 1C */	b lbl_8037C7A0
lbl_8037C788:
/* 8037C788 003783E8  7F E3 FB 78 */	mr r3, r31
/* 8037C78C 003783EC  83 FF 00 00 */	lwz r31, 0(r31)
/* 8037C790 003783F0  81 83 00 08 */	lwz r12, 8(r3)
/* 8037C794 003783F4  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 8037C798 003783F8  7D 89 03 A6 */	mtctr r12
/* 8037C79C 003783FC  4E 80 04 21 */	bctrl
lbl_8037C7A0:
/* 8037C7A0 00378400  7C 1F F0 40 */	cmplw r31, r30
/* 8037C7A4 00378404  40 82 FF E4 */	bne lbl_8037C788
/* 8037C7A8 00378408  48 00 61 59 */	bl GetInstance__Q44nw4r3snd6detail12VoiceManagerFv
/* 8037C7AC 0037840C  48 00 66 1D */	bl NotifyVoiceUpdate__Q44nw4r3snd6detail12VoiceManagerFv
/* 8037C7B0 00378410  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8037C7B4 00378414  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8037C7B8 00378418  83 C1 00 08 */	lwz r30, 8(r1)
/* 8037C7BC 0037841C  7C 08 03 A6 */	mtlr r0
/* 8037C7C0 00378420  38 21 00 10 */	addi r1, r1, 0x10
/* 8037C7C4 00378424  4E 80 00 20 */	blr

.global SoundThreadFunc__Q44nw4r3snd6detail11SoundThreadFPv
SoundThreadFunc__Q44nw4r3snd6detail11SoundThreadFPv:
/* 8037C7C8 00378428  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8037C7CC 0037842C  7C 08 02 A6 */	mflr r0
/* 8037C7D0 00378430  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037C7D4 00378434  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8037C7D8 00378438  7C 7F 1B 78 */	mr r31, r3
/* 8037C7DC 0037843C  4B FE BC E9 */	bl GetInstance__Q44nw4r3snd6detail9AxManagerFv
/* 8037C7E0 00378440  3C A0 80 38 */	lis r5, AxCallbackFunc__Q44nw4r3snd6detail11SoundThreadFv@ha
/* 8037C7E4 00378444  38 9F 03 6C */	addi r4, r31, 0x36c
/* 8037C7E8 00378448  38 A5 C6 BC */	addi r5, r5, AxCallbackFunc__Q44nw4r3snd6detail11SoundThreadFv@l
/* 8037C7EC 0037844C  4B FE C3 29 */	bl RegisterCallback__Q44nw4r3snd6detail9AxManagerFPQ54nw4r3snd6detail9AxManager16CallbackListNodePFv_v
/* 8037C7F0 00378450  7F E3 FB 78 */	mr r3, r31
/* 8037C7F4 00378454  48 00 00 E5 */	bl SoundThreadProc__Q44nw4r3snd6detail11SoundThreadFv
/* 8037C7F8 00378458  4B FE BC CD */	bl GetInstance__Q44nw4r3snd6detail9AxManagerFv
/* 8037C7FC 0037845C  38 9F 03 6C */	addi r4, r31, 0x36c
/* 8037C800 00378460  4B FE C3 81 */	bl UnregisterCallback__Q44nw4r3snd6detail9AxManagerFPQ54nw4r3snd6detail9AxManager16CallbackListNode
/* 8037C804 00378464  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8037C808 00378468  38 60 00 00 */	li r3, 0
/* 8037C80C 0037846C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8037C810 00378470  7C 08 03 A6 */	mtlr r0
/* 8037C814 00378474  38 21 00 10 */	addi r1, r1, 0x10
/* 8037C818 00378478  4E 80 00 20 */	blr

.global RegisterPlayerCallback__Q44nw4r3snd6detail11SoundThreadFPQ54nw4r3snd6detail11SoundThread14PlayerCallback
RegisterPlayerCallback__Q44nw4r3snd6detail11SoundThreadFPQ54nw4r3snd6detail11SoundThread14PlayerCallback:
/* 8037C81C 0037847C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8037C820 00378480  7C 08 02 A6 */	mflr r0
/* 8037C824 00378484  90 01 00 24 */	stw r0, 0x24(r1)
/* 8037C828 00378488  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8037C82C 0037848C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8037C830 00378490  7C 9E 23 78 */	mr r30, r4
/* 8037C834 00378494  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8037C838 00378498  7C 7D 1B 78 */	mr r29, r3
/* 8037C83C 0037849C  4B EF 1F 21 */	bl OSDisableInterrupts
/* 8037C840 003784A0  38 1D 03 88 */	addi r0, r29, 0x388
/* 8037C844 003784A4  7C 7F 1B 78 */	mr r31, r3
/* 8037C848 003784A8  90 01 00 08 */	stw r0, 8(r1)
/* 8037C84C 003784AC  7F C5 F3 78 */	mr r5, r30
/* 8037C850 003784B0  38 7D 03 84 */	addi r3, r29, 0x384
/* 8037C854 003784B4  38 81 00 08 */	addi r4, r1, 8
/* 8037C858 003784B8  4B FE 63 F1 */	bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
/* 8037C85C 003784BC  7F E3 FB 78 */	mr r3, r31
/* 8037C860 003784C0  4B EF 1F 25 */	bl OSRestoreInterrupts
/* 8037C864 003784C4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8037C868 003784C8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8037C86C 003784CC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8037C870 003784D0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8037C874 003784D4  7C 08 03 A6 */	mtlr r0
/* 8037C878 003784D8  38 21 00 20 */	addi r1, r1, 0x20
/* 8037C87C 003784DC  4E 80 00 20 */	blr

.global UnregisterPlayerCallback__Q44nw4r3snd6detail11SoundThreadFPQ54nw4r3snd6detail11SoundThread14PlayerCallback
UnregisterPlayerCallback__Q44nw4r3snd6detail11SoundThreadFPQ54nw4r3snd6detail11SoundThread14PlayerCallback:
/* 8037C880 003784E0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8037C884 003784E4  7C 08 02 A6 */	mflr r0
/* 8037C888 003784E8  90 01 00 24 */	stw r0, 0x24(r1)
/* 8037C88C 003784EC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8037C890 003784F0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8037C894 003784F4  7C 9E 23 78 */	mr r30, r4
/* 8037C898 003784F8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8037C89C 003784FC  7C 7D 1B 78 */	mr r29, r3
/* 8037C8A0 00378500  4B EF 1E BD */	bl OSDisableInterrupts
/* 8037C8A4 00378504  7C 7F 1B 78 */	mr r31, r3
/* 8037C8A8 00378508  7F C4 F3 78 */	mr r4, r30
/* 8037C8AC 0037850C  38 7D 03 84 */	addi r3, r29, 0x384
/* 8037C8B0 00378510  4B FE 63 C5 */	bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
/* 8037C8B4 00378514  7F E3 FB 78 */	mr r3, r31
/* 8037C8B8 00378518  4B EF 1E CD */	bl OSRestoreInterrupts
/* 8037C8BC 0037851C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8037C8C0 00378520  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8037C8C4 00378524  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8037C8C8 00378528  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8037C8CC 0037852C  7C 08 03 A6 */	mtlr r0
/* 8037C8D0 00378530  38 21 00 20 */	addi r1, r1, 0x20
/* 8037C8D4 00378534  4E 80 00 20 */	blr

.global SoundThreadProc__Q44nw4r3snd6detail11SoundThreadFv
SoundThreadProc__Q44nw4r3snd6detail11SoundThreadFv:
/* 8037C8D8 00378538  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8037C8DC 0037853C  7C 08 02 A6 */	mflr r0
/* 8037C8E0 00378540  90 01 00 34 */	stw r0, 0x34(r1)
/* 8037C8E4 00378544  39 61 00 30 */	addi r11, r1, 0x30
/* 8037C8E8 00378548  4B E4 A8 39 */	bl _savegpr_25
/* 8037C8EC 0037854C  7C 7F 1B 78 */	mr r31, r3
lbl_8037C8F0:
/* 8037C8F0 00378550  38 7F 03 20 */	addi r3, r31, 0x320
/* 8037C8F4 00378554  38 81 00 08 */	addi r4, r1, 8
/* 8037C8F8 00378558  38 A0 00 01 */	li r5, 1
/* 8037C8FC 0037855C  4B EF 27 25 */	bl OSReceiveMessage
/* 8037C900 00378560  80 01 00 08 */	lwz r0, 8(r1)
/* 8037C904 00378564  28 00 00 01 */	cmplwi r0, 1
/* 8037C908 00378568  40 82 01 50 */	bne lbl_8037CA58
/* 8037C90C 0037856C  3B 5F 03 54 */	addi r26, r31, 0x354
/* 8037C910 00378570  7F 43 D3 78 */	mr r3, r26
/* 8037C914 00378574  4B EF 30 35 */	bl OSLockMutex
/* 8037C918 00378578  4B EF 1E 45 */	bl OSDisableInterrupts
/* 8037C91C 0037857C  7C 79 1B 78 */	mr r25, r3
/* 8037C920 00378580  4B EF 1E 3D */	bl OSDisableInterrupts
/* 8037C924 00378584  83 BF 03 7C */	lwz r29, 0x37c(r31)
/* 8037C928 00378588  7C 7E 1B 78 */	mr r30, r3
/* 8037C92C 0037858C  3B 9F 03 7C */	addi r28, r31, 0x37c
/* 8037C930 00378590  48 00 00 30 */	b lbl_8037C960
lbl_8037C934:
/* 8037C934 00378594  7F BB EB 78 */	mr r27, r29
/* 8037C938 00378598  83 BD 00 00 */	lwz r29, 0(r29)
/* 8037C93C 0037859C  7F 23 CB 78 */	mr r3, r25
/* 8037C940 003785A0  4B EF 1E 45 */	bl OSRestoreInterrupts
/* 8037C944 003785A4  81 9B 00 08 */	lwz r12, 8(r27)
/* 8037C948 003785A8  7F 63 DB 78 */	mr r3, r27
/* 8037C94C 003785AC  81 8C 00 0C */	lwz r12, 0xc(r12)
/* 8037C950 003785B0  7D 89 03 A6 */	mtctr r12
/* 8037C954 003785B4  4E 80 04 21 */	bctrl
/* 8037C958 003785B8  4B EF 1E 05 */	bl OSDisableInterrupts
/* 8037C95C 003785BC  7C 79 1B 78 */	mr r25, r3
lbl_8037C960:
/* 8037C960 003785C0  7C 1D E0 40 */	cmplw r29, r28
/* 8037C964 003785C4  40 82 FF D0 */	bne lbl_8037C934
/* 8037C968 003785C8  7F 23 CB 78 */	mr r3, r25
/* 8037C96C 003785CC  4B EF 1E 19 */	bl OSRestoreInterrupts
/* 8037C970 003785D0  7F C3 F3 78 */	mr r3, r30
/* 8037C974 003785D4  4B EF 1E 11 */	bl OSRestoreInterrupts
/* 8037C978 003785D8  4B EF 5E 59 */	bl OSGetTick
/* 8037C97C 003785DC  7C 7B 1B 78 */	mr r27, r3
/* 8037C980 003785E0  4B FE F6 25 */	bl GetInstance__Q44nw4r3snd6detail14AxVoiceManagerFv
/* 8037C984 003785E4  4B FE FB E1 */	bl FreeAllReservedAxVoice__Q44nw4r3snd6detail14AxVoiceManagerFv
/* 8037C988 003785E8  4B FE BB 3D */	bl GetInstance__Q44nw4r3snd6detail9AxManagerFv
/* 8037C98C 003785EC  4B FE BD 55 */	bl Update__Q44nw4r3snd6detail9AxManagerFv
/* 8037C990 003785F0  4B FE BB 35 */	bl GetInstance__Q44nw4r3snd6detail9AxManagerFv
/* 8037C994 003785F4  88 03 00 1A */	lbz r0, 0x1a(r3)
/* 8037C998 003785F8  2C 00 00 00 */	cmpwi r0, 0
/* 8037C99C 003785FC  40 82 00 4C */	bne lbl_8037C9E8
/* 8037C9A0 00378600  4B EF 1D BD */	bl OSDisableInterrupts
/* 8037C9A4 00378604  83 9F 03 88 */	lwz r28, 0x388(r31)
/* 8037C9A8 00378608  3B BF 03 88 */	addi r29, r31, 0x388
/* 8037C9AC 0037860C  48 00 00 28 */	b lbl_8037C9D4
lbl_8037C9B0:
/* 8037C9B0 00378610  7F 9E E3 78 */	mr r30, r28
/* 8037C9B4 00378614  83 9C 00 00 */	lwz r28, 0(r28)
/* 8037C9B8 00378618  4B EF 1D CD */	bl OSRestoreInterrupts
/* 8037C9BC 0037861C  81 9E 00 08 */	lwz r12, 8(r30)
/* 8037C9C0 00378620  7F C3 F3 78 */	mr r3, r30
/* 8037C9C4 00378624  81 8C 00 0C */	lwz r12, 0xc(r12)
/* 8037C9C8 00378628  7D 89 03 A6 */	mtctr r12
/* 8037C9CC 0037862C  4E 80 04 21 */	bctrl
/* 8037C9D0 00378630  4B EF 1D 8D */	bl OSDisableInterrupts
lbl_8037C9D4:
/* 8037C9D4 00378634  7C 1C E8 40 */	cmplw r28, r29
/* 8037C9D8 00378638  40 82 FF D8 */	bne lbl_8037C9B0
/* 8037C9DC 0037863C  4B EF 1D A9 */	bl OSRestoreInterrupts
/* 8037C9E0 00378640  4B FF 17 B9 */	bl GetInstance__Q44nw4r3snd6detail14ChannelManagerFv
/* 8037C9E4 00378644  4B FF 19 61 */	bl __ct__Q44nw4r3snd6detail7ChannelFv
lbl_8037C9E8:
/* 8037C9E8 00378648  48 00 69 DD */	bl CalcRandom__Q44nw4r3snd6detail4UtilFv
/* 8037C9EC 0037864C  48 00 5F 15 */	bl GetInstance__Q44nw4r3snd6detail12VoiceManagerFv
/* 8037C9F0 00378650  48 00 63 29 */	bl UpdateAllVoices__Q44nw4r3snd6detail12VoiceManagerFv
/* 8037C9F4 00378654  4B EF 5D DD */	bl OSGetTick
/* 8037C9F8 00378658  7C 1B 18 50 */	subf r0, r27, r3
/* 8037C9FC 0037865C  90 1F 03 90 */	stw r0, 0x390(r31)
/* 8037CA00 00378660  4B EF 1D 5D */	bl OSDisableInterrupts
/* 8037CA04 00378664  83 9F 03 7C */	lwz r28, 0x37c(r31)
/* 8037CA08 00378668  7C 79 1B 78 */	mr r25, r3
/* 8037CA0C 0037866C  3B BF 03 7C */	addi r29, r31, 0x37c
/* 8037CA10 00378670  48 00 00 2C */	b lbl_8037CA3C
lbl_8037CA14:
/* 8037CA14 00378674  7F 9E E3 78 */	mr r30, r28
/* 8037CA18 00378678  83 9C 00 00 */	lwz r28, 0(r28)
/* 8037CA1C 0037867C  7F 23 CB 78 */	mr r3, r25
/* 8037CA20 00378680  4B EF 1D 65 */	bl OSRestoreInterrupts
/* 8037CA24 00378684  81 9E 00 08 */	lwz r12, 8(r30)
/* 8037CA28 00378688  7F C3 F3 78 */	mr r3, r30
/* 8037CA2C 0037868C  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 8037CA30 00378690  7D 89 03 A6 */	mtctr r12
/* 8037CA34 00378694  4E 80 04 21 */	bctrl
/* 8037CA38 00378698  4B EF 1D 25 */	bl OSDisableInterrupts
lbl_8037CA3C:
/* 8037CA3C 0037869C  7C 1C E8 40 */	cmplw r28, r29
/* 8037CA40 003786A0  40 82 FF D4 */	bne lbl_8037CA14
/* 8037CA44 003786A4  7F 23 CB 78 */	mr r3, r25
/* 8037CA48 003786A8  4B EF 1D 3D */	bl OSRestoreInterrupts
/* 8037CA4C 003786AC  7F 43 D3 78 */	mr r3, r26
/* 8037CA50 003786B0  4B EF 2F D5 */	bl OSUnlockMutex
/* 8037CA54 003786B4  4B FF FE 9C */	b lbl_8037C8F0
lbl_8037CA58:
/* 8037CA58 003786B8  28 00 00 02 */	cmplwi r0, 2
/* 8037CA5C 003786BC  40 82 FE 94 */	bne lbl_8037C8F0
/* 8037CA60 003786C0  4B EF 1C FD */	bl OSDisableInterrupts
/* 8037CA64 003786C4  83 9F 03 88 */	lwz r28, 0x388(r31)
/* 8037CA68 003786C8  7C 79 1B 78 */	mr r25, r3
/* 8037CA6C 003786CC  3B BF 03 88 */	addi r29, r31, 0x388
/* 8037CA70 003786D0  48 00 00 2C */	b lbl_8037CA9C
lbl_8037CA74:
/* 8037CA74 003786D4  7F 9E E3 78 */	mr r30, r28
/* 8037CA78 003786D8  83 9C 00 00 */	lwz r28, 0(r28)
/* 8037CA7C 003786DC  7F 23 CB 78 */	mr r3, r25
/* 8037CA80 003786E0  4B EF 1D 05 */	bl OSRestoreInterrupts
/* 8037CA84 003786E4  81 9E 00 08 */	lwz r12, 8(r30)
/* 8037CA88 003786E8  7F C3 F3 78 */	mr r3, r30
/* 8037CA8C 003786EC  81 8C 00 14 */	lwz r12, 0x14(r12)
/* 8037CA90 003786F0  7D 89 03 A6 */	mtctr r12
/* 8037CA94 003786F4  4E 80 04 21 */	bctrl
/* 8037CA98 003786F8  4B EF 1C C5 */	bl OSDisableInterrupts
lbl_8037CA9C:
/* 8037CA9C 003786FC  7C 1C E8 40 */	cmplw r28, r29
/* 8037CAA0 00378700  40 82 FF D4 */	bne lbl_8037CA74
/* 8037CAA4 00378704  7F 23 CB 78 */	mr r3, r25
/* 8037CAA8 00378708  4B EF 1C DD */	bl OSRestoreInterrupts
/* 8037CAAC 0037870C  39 61 00 30 */	addi r11, r1, 0x30
/* 8037CAB0 00378710  4B E4 A6 BD */	bl _restgpr_25
/* 8037CAB4 00378714  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8037CAB8 00378718  7C 08 03 A6 */	mtlr r0
/* 8037CABC 0037871C  38 21 00 30 */	addi r1, r1, 0x30
/* 8037CAC0 00378720  4E 80 00 20 */	blr