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

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

.global GetInstance__Q44nw4r3snd6detail12VoiceManagerFv
GetInstance__Q44nw4r3snd6detail12VoiceManagerFv:
/* 80382900 0037E560  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80382904 0037E564  7C 08 02 A6 */	mflr r0
/* 80382908 0037E568  90 01 00 14 */	stw r0, 0x14(r1)
/* 8038290C 0037E56C  88 0D B2 98 */	lbz r0, lbl_80640558-_SDA_BASE_(r13)
/* 80382910 0037E570  7C 00 07 75 */	extsb. r0, r0
/* 80382914 0037E574  40 82 00 60 */	bne lbl_80382974
/* 80382918 0037E578  3C C0 80 64 */	lis r6, lbl_8063CDEC@ha
/* 8038291C 0037E57C  38 00 00 00 */	li r0, 0
/* 80382920 0037E580  38 66 CD EC */	addi r3, r6, lbl_8063CDEC@l
/* 80382924 0037E584  3C 80 80 38 */	lis r4, __dt__Q44nw4r3snd6detail12VoiceManagerFv@ha
/* 80382928 0037E588  90 03 00 08 */	stw r0, 8(r3)
/* 8038292C 0037E58C  39 03 00 08 */	addi r8, r3, 8
/* 80382930 0037E590  38 E3 00 14 */	addi r7, r3, 0x14
/* 80382934 0037E594  3C A0 80 64 */	lis r5, lbl_8063CDE0@ha
/* 80382938 0037E598  90 03 00 0C */	stw r0, 0xc(r3)
/* 8038293C 0037E59C  38 84 29 8C */	addi r4, r4, __dt__Q44nw4r3snd6detail12VoiceManagerFv@l
/* 80382940 0037E5A0  38 A5 CD E0 */	addi r5, r5, lbl_8063CDE0@l
/* 80382944 0037E5A4  90 03 00 14 */	stw r0, 0x14(r3)
/* 80382948 0037E5A8  90 03 00 18 */	stw r0, 0x18(r3)
/* 8038294C 0037E5AC  98 06 CD EC */	stb r0, -0x3214(r6)
/* 80382950 0037E5B0  90 03 00 04 */	stw r0, 4(r3)
/* 80382954 0037E5B4  91 03 00 08 */	stw r8, 8(r3)
/* 80382958 0037E5B8  91 03 00 0C */	stw r8, 0xc(r3)
/* 8038295C 0037E5BC  90 03 00 10 */	stw r0, 0x10(r3)
/* 80382960 0037E5C0  90 E3 00 14 */	stw r7, 0x14(r3)
/* 80382964 0037E5C4  90 E3 00 18 */	stw r7, 0x18(r3)
/* 80382968 0037E5C8  4B E4 42 E1 */	bl __register_global_object_tmp
/* 8038296C 0037E5CC  38 00 00 01 */	li r0, 1
/* 80382970 0037E5D0  98 0D B2 98 */	stb r0, lbl_80640558-_SDA_BASE_(r13)
lbl_80382974:
/* 80382974 0037E5D4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80382978 0037E5D8  3C 60 80 64 */	lis r3, lbl_8063CDEC@ha
/* 8038297C 0037E5DC  38 63 CD EC */	addi r3, r3, lbl_8063CDEC@l
/* 80382980 0037E5E0  7C 08 03 A6 */	mtlr r0
/* 80382984 0037E5E4  38 21 00 10 */	addi r1, r1, 0x10
/* 80382988 0037E5E8  4E 80 00 20 */	blr 

.global __dt__Q44nw4r3snd6detail12VoiceManagerFv
__dt__Q44nw4r3snd6detail12VoiceManagerFv:
/* 8038298C 0037E5EC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80382990 0037E5F0  7C 08 02 A6 */	mflr r0
/* 80382994 0037E5F4  2C 03 00 00 */	cmpwi r3, 0
/* 80382998 0037E5F8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8038299C 0037E5FC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 803829A0 0037E600  7C 9F 23 78 */	mr r31, r4
/* 803829A4 0037E604  93 C1 00 08 */	stw r30, 8(r1)
/* 803829A8 0037E608  7C 7E 1B 78 */	mr r30, r3
/* 803829AC 0037E60C  41 82 00 34 */	beq lbl_803829E0
/* 803829B0 0037E610  34 63 00 10 */	addic. r3, r3, 0x10
/* 803829B4 0037E614  41 82 00 0C */	beq lbl_803829C0
/* 803829B8 0037E618  38 80 00 00 */	li r4, 0
/* 803829BC 0037E61C  4B FE 01 7D */	bl __dt__Q44nw4r2ut6detail12LinkListImplFv
lbl_803829C0:
/* 803829C0 0037E620  34 7E 00 04 */	addic. r3, r30, 4
/* 803829C4 0037E624  41 82 00 0C */	beq lbl_803829D0
/* 803829C8 0037E628  38 80 00 00 */	li r4, 0
/* 803829CC 0037E62C  4B FE 01 6D */	bl __dt__Q44nw4r2ut6detail12LinkListImplFv
lbl_803829D0:
/* 803829D0 0037E630  2C 1F 00 00 */	cmpwi r31, 0
/* 803829D4 0037E634  40 81 00 0C */	ble lbl_803829E0
/* 803829D8 0037E638  7F C3 F3 78 */	mr r3, r30
/* 803829DC 0037E63C  4B E5 80 DD */	bl __dl__FPv
lbl_803829E0:
/* 803829E0 0037E640  7F C3 F3 78 */	mr r3, r30
/* 803829E4 0037E644  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803829E8 0037E648  83 C1 00 08 */	lwz r30, 8(r1)
/* 803829EC 0037E64C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803829F0 0037E650  7C 08 03 A6 */	mtlr r0
/* 803829F4 0037E654  38 21 00 10 */	addi r1, r1, 0x10
/* 803829F8 0037E658  4E 80 00 20 */	blr 

.global GetRequiredMemSize__Q44nw4r3snd6detail12VoiceManagerFv
GetRequiredMemSize__Q44nw4r3snd6detail12VoiceManagerFv:
/* 803829FC 0037E65C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80382A00 0037E660  7C 08 02 A6 */	mflr r0
/* 80382A04 0037E664  90 01 00 14 */	stw r0, 0x14(r1)
/* 80382A08 0037E668  4B F0 F9 15 */	bl AXGetMaxVoices
/* 80382A0C 0037E66C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80382A10 0037E670  1C 63 01 2C */	mulli r3, r3, 0x12c
/* 80382A14 0037E674  7C 08 03 A6 */	mtlr r0
/* 80382A18 0037E678  38 21 00 10 */	addi r1, r1, 0x10
/* 80382A1C 0037E67C  4E 80 00 20 */	blr 

.global Setup__Q44nw4r3snd6detail12VoiceManagerFPvUl
Setup__Q44nw4r3snd6detail12VoiceManagerFPvUl:
/* 80382A20 0037E680  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80382A24 0037E684  7C 08 02 A6 */	mflr r0
/* 80382A28 0037E688  90 01 00 34 */	stw r0, 0x34(r1)
/* 80382A2C 0037E68C  39 61 00 30 */	addi r11, r1, 0x30
/* 80382A30 0037E690  4B E4 46 F9 */	bl _savegpr_27
/* 80382A34 0037E694  88 03 00 00 */	lbz r0, 0(r3)
/* 80382A38 0037E698  7C 7B 1B 78 */	mr r27, r3
/* 80382A3C 0037E69C  2C 00 00 00 */	cmpwi r0, 0
/* 80382A40 0037E6A0  40 82 00 6C */	bne lbl_80382AAC
/* 80382A44 0037E6A4  3C C0 1B 4F */	lis r6, 0x1B4E81B5@ha
/* 80382A48 0037E6A8  7C 9D 23 78 */	mr r29, r4
/* 80382A4C 0037E6AC  38 06 81 B5 */	addi r0, r6, 0x1B4E81B5@l
/* 80382A50 0037E6B0  3B 80 00 00 */	li r28, 0
/* 80382A54 0037E6B4  7C 00 28 16 */	mulhwu r0, r0, r5
/* 80382A58 0037E6B8  54 1E D9 7F */	rlwinm. r30, r0, 0x1b, 5, 0x1f
/* 80382A5C 0037E6BC  41 82 00 48 */	beq lbl_80382AA4
/* 80382A60 0037E6C0  3B E3 00 14 */	addi r31, r3, 0x14
/* 80382A64 0037E6C4  48 00 00 38 */	b lbl_80382A9C
lbl_80382A68:
/* 80382A68 0037E6C8  2C 1D 00 00 */	cmpwi r29, 0
/* 80382A6C 0037E6CC  7F A5 EB 78 */	mr r5, r29
/* 80382A70 0037E6D0  41 82 00 10 */	beq lbl_80382A80
/* 80382A74 0037E6D4  7F A3 EB 78 */	mr r3, r29
/* 80382A78 0037E6D8  4B FF D7 55 */	bl __ct__Q44nw4r3snd6detail5VoiceFv
/* 80382A7C 0037E6DC  7C 65 1B 78 */	mr r5, r3
lbl_80382A80:
/* 80382A80 0037E6E0  93 E1 00 08 */	stw r31, 8(r1)
/* 80382A84 0037E6E4  38 7B 00 10 */	addi r3, r27, 0x10
/* 80382A88 0037E6E8  38 81 00 08 */	addi r4, r1, 8
/* 80382A8C 0037E6EC  38 A5 01 24 */	addi r5, r5, 0x124
/* 80382A90 0037E6F0  4B FE 01 B9 */	bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
/* 80382A94 0037E6F4  3B BD 01 2C */	addi r29, r29, 0x12c
/* 80382A98 0037E6F8  3B 9C 00 01 */	addi r28, r28, 1
lbl_80382A9C:
/* 80382A9C 0037E6FC  7C 1C F0 40 */	cmplw r28, r30
/* 80382AA0 0037E700  41 80 FF C8 */	blt lbl_80382A68
lbl_80382AA4:
/* 80382AA4 0037E704  38 00 00 01 */	li r0, 1
/* 80382AA8 0037E708  98 1B 00 00 */	stb r0, 0(r27)
lbl_80382AAC:
/* 80382AAC 0037E70C  39 61 00 30 */	addi r11, r1, 0x30
/* 80382AB0 0037E710  4B E4 46 C5 */	bl _restgpr_27
/* 80382AB4 0037E714  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80382AB8 0037E718  7C 08 03 A6 */	mtlr r0
/* 80382ABC 0037E71C  38 21 00 30 */	addi r1, r1, 0x30
/* 80382AC0 0037E720  4E 80 00 20 */	blr 

.global AllocVoice__Q44nw4r3snd6detail12VoiceManagerFiiiPFPQ44nw4r3snd6detail5VoiceQ54nw4r3snd6detail5Voice19VoiceCallbackStatusPv_vPv
AllocVoice__Q44nw4r3snd6detail12VoiceManagerFiiiPFPQ44nw4r3snd6detail5VoiceQ54nw4r3snd6detail5Voice19VoiceCallbackStatusPv_vPv:
/* 80382AC4 0037E724  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 80382AC8 0037E728  7C 08 02 A6 */	mflr r0
/* 80382ACC 0037E72C  90 01 00 44 */	stw r0, 0x44(r1)
/* 80382AD0 0037E730  39 61 00 40 */	addi r11, r1, 0x40
/* 80382AD4 0037E734  4B E4 46 45 */	bl _savegpr_23
/* 80382AD8 0037E738  7C 7F 1B 78 */	mr r31, r3
/* 80382ADC 0037E73C  7C 97 23 78 */	mr r23, r4
/* 80382AE0 0037E740  7C B8 2B 78 */	mr r24, r5
/* 80382AE4 0037E744  7C D9 33 78 */	mr r25, r6
/* 80382AE8 0037E748  7C FA 3B 78 */	mr r26, r7
/* 80382AEC 0037E74C  7D 1B 43 78 */	mr r27, r8
/* 80382AF0 0037E750  4B EE BC 6D */	bl OSDisableInterrupts
/* 80382AF4 0037E754  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80382AF8 0037E758  7C 7E 1B 78 */	mr r30, r3
/* 80382AFC 0037E75C  2C 00 00 00 */	cmpwi r0, 0
/* 80382B00 0037E760  40 82 00 7C */	bne lbl_80382B7C
/* 80382B04 0037E764  3B A0 00 00 */	li r29, 0
/* 80382B08 0037E768  40 82 00 5C */	bne lbl_80382B64
/* 80382B0C 0037E76C  80 7F 00 08 */	lwz r3, 8(r31)
/* 80382B10 0037E770  80 03 FF 90 */	lwz r0, -0x70(r3)
/* 80382B14 0037E774  3B 83 FE DC */	addi r28, r3, -292
/* 80382B18 0037E778  7C 00 C8 00 */	cmpw r0, r25
/* 80382B1C 0037E77C  40 81 00 0C */	ble lbl_80382B28
/* 80382B20 0037E780  3B A0 00 00 */	li r29, 0
/* 80382B24 0037E784  48 00 00 40 */	b lbl_80382B64
lbl_80382B28:
/* 80382B28 0037E788  80 9C 00 9C */	lwz r4, 0x9c(r28)
/* 80382B2C 0037E78C  7F 83 E3 78 */	mr r3, r28
/* 80382B30 0037E790  80 1C 00 A0 */	lwz r0, 0xa0(r28)
/* 80382B34 0037E794  7F A4 01 D6 */	mullw r29, r4, r0
/* 80382B38 0037E798  4B FF E4 39 */	bl Stop__Q44nw4r3snd6detail5VoiceFv
/* 80382B3C 0037E79C  7F 83 E3 78 */	mr r3, r28
/* 80382B40 0037E7A0  4B FF E0 95 */	bl Free__Q44nw4r3snd6detail5VoiceFv
/* 80382B44 0037E7A4  81 9C 00 A4 */	lwz r12, 0xa4(r28)
/* 80382B48 0037E7A8  2C 0C 00 00 */	cmpwi r12, 0
/* 80382B4C 0037E7AC  41 82 00 18 */	beq lbl_80382B64
/* 80382B50 0037E7B0  7F 83 E3 78 */	mr r3, r28
/* 80382B54 0037E7B4  80 BC 00 A8 */	lwz r5, 0xa8(r28)
/* 80382B58 0037E7B8  38 80 00 02 */	li r4, 2
/* 80382B5C 0037E7BC  7D 89 03 A6 */	mtctr r12
/* 80382B60 0037E7C0  4E 80 04 21 */	bctrl 
lbl_80382B64:
/* 80382B64 0037E7C4  2C 1D 00 00 */	cmpwi r29, 0
/* 80382B68 0037E7C8  40 82 00 14 */	bne lbl_80382B7C
/* 80382B6C 0037E7CC  7F C3 F3 78 */	mr r3, r30
/* 80382B70 0037E7D0  4B EE BC 15 */	bl OSRestoreInterrupts
/* 80382B74 0037E7D4  38 60 00 00 */	li r3, 0
/* 80382B78 0037E7D8  48 00 00 F0 */	b lbl_80382C68
lbl_80382B7C:
/* 80382B7C 0037E7DC  80 7F 00 14 */	lwz r3, 0x14(r31)
/* 80382B80 0037E7E0  7E E4 BB 78 */	mr r4, r23
/* 80382B84 0037E7E4  7F 05 C3 78 */	mr r5, r24
/* 80382B88 0037E7E8  7F 26 CB 78 */	mr r6, r25
/* 80382B8C 0037E7EC  3B 83 FE DC */	addi r28, r3, -292
/* 80382B90 0037E7F0  7F 47 D3 78 */	mr r7, r26
/* 80382B94 0037E7F4  7F 83 E3 78 */	mr r3, r28
/* 80382B98 0037E7F8  7F 68 DB 78 */	mr r8, r27
/* 80382B9C 0037E7FC  4B FF DD FD */	bl Acquire__Q44nw4r3snd6detail5VoiceFiiiPFPQ44nw4r3snd6detail5VoiceQ54nw4r3snd6detail5Voice19VoiceCallbackStatusPv_vPv
/* 80382BA0 0037E800  2C 03 00 00 */	cmpwi r3, 0
/* 80382BA4 0037E804  40 82 00 14 */	bne lbl_80382BB8
/* 80382BA8 0037E808  7F C3 F3 78 */	mr r3, r30
/* 80382BAC 0037E80C  4B EE BB D9 */	bl OSRestoreInterrupts
/* 80382BB0 0037E810  38 60 00 00 */	li r3, 0
/* 80382BB4 0037E814  48 00 00 B4 */	b lbl_80382C68
lbl_80382BB8:
/* 80382BB8 0037E818  57 20 06 3E */	clrlwi r0, r25, 0x18
/* 80382BBC 0037E81C  90 1C 00 B4 */	stw r0, 0xb4(r28)
/* 80382BC0 0037E820  4B EE BB 9D */	bl OSDisableInterrupts
/* 80382BC4 0037E824  3B 7C 01 24 */	addi r27, r28, 0x124
/* 80382BC8 0037E828  7C 7D 1B 78 */	mr r29, r3
/* 80382BCC 0037E82C  7F 64 DB 78 */	mr r4, r27
/* 80382BD0 0037E830  38 7F 00 10 */	addi r3, r31, 0x10
/* 80382BD4 0037E834  4B FE 00 A1 */	bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
/* 80382BD8 0037E838  80 BF 00 08 */	lwz r5, 8(r31)
/* 80382BDC 0037E83C  38 7F 00 08 */	addi r3, r31, 8
/* 80382BE0 0037E840  48 00 00 1C */	b lbl_80382BFC
lbl_80382BE4:
/* 80382BE4 0037E844  80 C3 00 04 */	lwz r6, 4(r3)
/* 80382BE8 0037E848  80 1C 00 B4 */	lwz r0, 0xb4(r28)
/* 80382BEC 0037E84C  80 86 FF 90 */	lwz r4, -0x70(r6)
/* 80382BF0 0037E850  7C 04 00 00 */	cmpw r4, r0
/* 80382BF4 0037E854  40 81 00 10 */	ble lbl_80382C04
/* 80382BF8 0037E858  7C C3 33 78 */	mr r3, r6
lbl_80382BFC:
/* 80382BFC 0037E85C  7C 03 28 40 */	cmplw r3, r5
/* 80382C00 0037E860  40 82 FF E4 */	bne lbl_80382BE4
lbl_80382C04:
/* 80382C04 0037E864  90 61 00 08 */	stw r3, 8(r1)
/* 80382C08 0037E868  7F 65 DB 78 */	mr r5, r27
/* 80382C0C 0037E86C  38 7F 00 04 */	addi r3, r31, 4
/* 80382C10 0037E870  38 81 00 08 */	addi r4, r1, 8
/* 80382C14 0037E874  4B FE 00 35 */	bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
/* 80382C18 0037E878  7F A3 EB 78 */	mr r3, r29
/* 80382C1C 0037E87C  4B EE BB 69 */	bl OSRestoreInterrupts
/* 80382C20 0037E880  3B BF 00 08 */	addi r29, r31, 8
/* 80382C24 0037E884  48 00 00 24 */	b lbl_80382C48
lbl_80382C28:
/* 80382C28 0037E888  80 1B FF 90 */	lwz r0, -0x70(r27)
/* 80382C2C 0037E88C  38 7B FE DC */	addi r3, r27, -292
/* 80382C30 0037E890  2C 00 00 01 */	cmpwi r0, 1
/* 80382C34 0037E894  40 81 00 1C */	ble lbl_80382C50
/* 80382C38 0037E898  2C 00 00 FF */	cmpwi r0, 0xff
/* 80382C3C 0037E89C  41 82 00 08 */	beq lbl_80382C44
/* 80382C40 0037E8A0  4B FF E8 C1 */	bl UpdateVoicesPriority__Q44nw4r3snd6detail5VoiceFv
lbl_80382C44:
/* 80382C44 0037E8A4  83 7B 00 00 */	lwz r27, 0(r27)
lbl_80382C48:
/* 80382C48 0037E8A8  7C 1B E8 40 */	cmplw r27, r29
/* 80382C4C 0037E8AC  40 82 FF DC */	bne lbl_80382C28
lbl_80382C50:
/* 80382C50 0037E8B0  4B FE C6 09 */	bl GetInstance__Q44nw4r3snd6detail22DisposeCallbackManagerFv
/* 80382C54 0037E8B4  7F 84 E3 78 */	mr r4, r28
/* 80382C58 0037E8B8  4B FE C6 FD */	bl __dt__Q34nw4r2ut47LinkList$0Q44nw4r3snd6detail15DisposeCallback$40$1Fv
/* 80382C5C 0037E8BC  7F C3 F3 78 */	mr r3, r30
/* 80382C60 0037E8C0  4B EE BB 25 */	bl OSRestoreInterrupts
/* 80382C64 0037E8C4  7F 83 E3 78 */	mr r3, r28
lbl_80382C68:
/* 80382C68 0037E8C8  39 61 00 40 */	addi r11, r1, 0x40
/* 80382C6C 0037E8CC  4B E4 44 F9 */	bl _restgpr_23
/* 80382C70 0037E8D0  80 01 00 44 */	lwz r0, 0x44(r1)
/* 80382C74 0037E8D4  7C 08 03 A6 */	mtlr r0
/* 80382C78 0037E8D8  38 21 00 40 */	addi r1, r1, 0x40
/* 80382C7C 0037E8DC  4E 80 00 20 */	blr 

.global FreeVoice__Q44nw4r3snd6detail12VoiceManagerFPQ44nw4r3snd6detail5Voice
FreeVoice__Q44nw4r3snd6detail12VoiceManagerFPQ44nw4r3snd6detail5Voice:
/* 80382C80 0037E8E0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80382C84 0037E8E4  7C 08 02 A6 */	mflr r0
/* 80382C88 0037E8E8  90 01 00 24 */	stw r0, 0x24(r1)
/* 80382C8C 0037E8EC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80382C90 0037E8F0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80382C94 0037E8F4  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80382C98 0037E8F8  7C 9D 23 78 */	mr r29, r4
/* 80382C9C 0037E8FC  93 81 00 10 */	stw r28, 0x10(r1)
/* 80382CA0 0037E900  7C 7C 1B 78 */	mr r28, r3
/* 80382CA4 0037E904  4B EE BA B9 */	bl OSDisableInterrupts
/* 80382CA8 0037E908  7C 7F 1B 78 */	mr r31, r3
/* 80382CAC 0037E90C  4B FE C5 AD */	bl GetInstance__Q44nw4r3snd6detail22DisposeCallbackManagerFv
/* 80382CB0 0037E910  7F A4 EB 78 */	mr r4, r29
/* 80382CB4 0037E914  4B FE C6 F9 */	bl __ct__Q44nw4r3snd6detail22DisposeCallbackManagerFv
/* 80382CB8 0037E918  4B EE BA A5 */	bl OSDisableInterrupts
/* 80382CBC 0037E91C  3B BD 01 24 */	addi r29, r29, 0x124
/* 80382CC0 0037E920  7C 7E 1B 78 */	mr r30, r3
/* 80382CC4 0037E924  7F A4 EB 78 */	mr r4, r29
/* 80382CC8 0037E928  38 7C 00 04 */	addi r3, r28, 4
/* 80382CCC 0037E92C  4B FD FF A9 */	bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
/* 80382CD0 0037E930  38 1C 00 14 */	addi r0, r28, 0x14
/* 80382CD4 0037E934  7F A5 EB 78 */	mr r5, r29
/* 80382CD8 0037E938  90 01 00 08 */	stw r0, 8(r1)
/* 80382CDC 0037E93C  38 7C 00 10 */	addi r3, r28, 0x10
/* 80382CE0 0037E940  38 81 00 08 */	addi r4, r1, 8
/* 80382CE4 0037E944  4B FD FF 65 */	bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
/* 80382CE8 0037E948  7F C3 F3 78 */	mr r3, r30
/* 80382CEC 0037E94C  4B EE BA 99 */	bl OSRestoreInterrupts
/* 80382CF0 0037E950  7F E3 FB 78 */	mr r3, r31
/* 80382CF4 0037E954  4B EE BA 91 */	bl OSRestoreInterrupts
/* 80382CF8 0037E958  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80382CFC 0037E95C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80382D00 0037E960  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80382D04 0037E964  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80382D08 0037E968  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80382D0C 0037E96C  7C 08 03 A6 */	mtlr r0
/* 80382D10 0037E970  38 21 00 20 */	addi r1, r1, 0x20
/* 80382D14 0037E974  4E 80 00 20 */	blr 

.global UpdateAllVoices__Q44nw4r3snd6detail12VoiceManagerFv
UpdateAllVoices__Q44nw4r3snd6detail12VoiceManagerFv:
/* 80382D18 0037E978  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80382D1C 0037E97C  7C 08 02 A6 */	mflr r0
/* 80382D20 0037E980  90 01 00 24 */	stw r0, 0x24(r1)
/* 80382D24 0037E984  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80382D28 0037E988  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80382D2C 0037E98C  3B C3 00 08 */	addi r30, r3, 8
/* 80382D30 0037E990  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80382D34 0037E994  7C 7D 1B 78 */	mr r29, r3
/* 80382D38 0037E998  83 E3 00 08 */	lwz r31, 8(r3)
/* 80382D3C 0037E99C  48 00 00 14 */	b lbl_80382D50
lbl_80382D40:
/* 80382D40 0037E9A0  7F E3 FB 78 */	mr r3, r31
/* 80382D44 0037E9A4  83 FF 00 00 */	lwz r31, 0(r31)
/* 80382D48 0037E9A8  38 63 FE DC */	addi r3, r3, -292
/* 80382D4C 0037E9AC  4B FF D6 25 */	bl StopFinished__Q44nw4r3snd6detail5VoiceFv
lbl_80382D50:
/* 80382D50 0037E9B0  7C 1F F0 40 */	cmplw r31, r30
/* 80382D54 0037E9B4  40 82 FF EC */	bne lbl_80382D40
/* 80382D58 0037E9B8  83 DD 00 08 */	lwz r30, 8(r29)
/* 80382D5C 0037E9BC  3B FD 00 08 */	addi r31, r29, 8
/* 80382D60 0037E9C0  48 00 00 14 */	b lbl_80382D74
lbl_80382D64:
/* 80382D64 0037E9C4  7F C3 F3 78 */	mr r3, r30
/* 80382D68 0037E9C8  83 DE 00 00 */	lwz r30, 0(r30)
/* 80382D6C 0037E9CC  38 63 FE DC */	addi r3, r3, -292
/* 80382D70 0037E9D0  4B FF D6 9D */	bl Calc__Q44nw4r3snd6detail5VoiceFv
lbl_80382D74:
/* 80382D74 0037E9D4  7C 1E F8 40 */	cmplw r30, r31
/* 80382D78 0037E9D8  40 82 FF EC */	bne lbl_80382D64
/* 80382D7C 0037E9DC  4B EE B9 E1 */	bl OSDisableInterrupts
/* 80382D80 0037E9E0  87 FD 00 08 */	lwzu r31, 8(r29)
/* 80382D84 0037E9E4  7C 7E 1B 78 */	mr r30, r3
/* 80382D88 0037E9E8  48 00 00 14 */	b lbl_80382D9C
lbl_80382D8C:
/* 80382D8C 0037E9EC  7F E3 FB 78 */	mr r3, r31
/* 80382D90 0037E9F0  83 FF 00 00 */	lwz r31, 0(r31)
/* 80382D94 0037E9F4  38 63 FE DC */	addi r3, r3, -292
/* 80382D98 0037E9F8  4B FF D8 C5 */	bl Update__Q44nw4r3snd6detail5VoiceFv
lbl_80382D9C:
/* 80382D9C 0037E9FC  7C 1F E8 40 */	cmplw r31, r29
/* 80382DA0 0037EA00  40 82 FF EC */	bne lbl_80382D8C
/* 80382DA4 0037EA04  7F C3 F3 78 */	mr r3, r30
/* 80382DA8 0037EA08  4B EE B9 DD */	bl OSRestoreInterrupts
/* 80382DAC 0037EA0C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80382DB0 0037EA10  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80382DB4 0037EA14  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80382DB8 0037EA18  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80382DBC 0037EA1C  7C 08 03 A6 */	mtlr r0
/* 80382DC0 0037EA20  38 21 00 20 */	addi r1, r1, 0x20
/* 80382DC4 0037EA24  4E 80 00 20 */	blr 

.global NotifyVoiceUpdate__Q44nw4r3snd6detail12VoiceManagerFv
NotifyVoiceUpdate__Q44nw4r3snd6detail12VoiceManagerFv:
/* 80382DC8 0037EA28  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80382DCC 0037EA2C  7C 08 02 A6 */	mflr r0
/* 80382DD0 0037EA30  90 01 00 24 */	stw r0, 0x24(r1)
/* 80382DD4 0037EA34  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80382DD8 0037EA38  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80382DDC 0037EA3C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80382DE0 0037EA40  7C 7D 1B 78 */	mr r29, r3
/* 80382DE4 0037EA44  4B EE B9 79 */	bl OSDisableInterrupts
/* 80382DE8 0037EA48  87 DD 00 08 */	lwzu r30, 8(r29)
/* 80382DEC 0037EA4C  7C 7F 1B 78 */	mr r31, r3
/* 80382DF0 0037EA50  48 00 00 14 */	b lbl_80382E04
lbl_80382DF4:
/* 80382DF4 0037EA54  7F C3 F3 78 */	mr r3, r30
/* 80382DF8 0037EA58  83 DE 00 00 */	lwz r30, 0(r30)
/* 80382DFC 0037EA5C  38 63 FE DC */	addi r3, r3, -292
/* 80382E00 0037EA60  4B FF EC 6D */	bl ResetDelta__Q44nw4r3snd6detail5VoiceFv
lbl_80382E04:
/* 80382E04 0037EA64  7C 1E E8 40 */	cmplw r30, r29
/* 80382E08 0037EA68  40 82 FF EC */	bne lbl_80382DF4
/* 80382E0C 0037EA6C  7F E3 FB 78 */	mr r3, r31
/* 80382E10 0037EA70  4B EE B9 75 */	bl OSRestoreInterrupts
/* 80382E14 0037EA74  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80382E18 0037EA78  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80382E1C 0037EA7C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80382E20 0037EA80  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80382E24 0037EA84  7C 08 03 A6 */	mtlr r0
/* 80382E28 0037EA88  38 21 00 20 */	addi r1, r1, 0x20
/* 80382E2C 0037EA8C  4E 80 00 20 */	blr 

.global ChangeVoicePriority__Q44nw4r3snd6detail12VoiceManagerFPQ44nw4r3snd6detail5Voice
ChangeVoicePriority__Q44nw4r3snd6detail12VoiceManagerFPQ44nw4r3snd6detail5Voice:
/* 80382E30 0037EA90  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80382E34 0037EA94  7C 08 02 A6 */	mflr r0
/* 80382E38 0037EA98  90 01 00 34 */	stw r0, 0x34(r1)
/* 80382E3C 0037EA9C  39 61 00 30 */	addi r11, r1, 0x30
/* 80382E40 0037EAA0  4B E4 42 E9 */	bl _savegpr_27
/* 80382E44 0037EAA4  7C 7B 1B 78 */	mr r27, r3
/* 80382E48 0037EAA8  7C 9C 23 78 */	mr r28, r4
/* 80382E4C 0037EAAC  4B EE B9 11 */	bl OSDisableInterrupts
/* 80382E50 0037EAB0  7C 7F 1B 78 */	mr r31, r3
/* 80382E54 0037EAB4  4B EE B9 09 */	bl OSDisableInterrupts
/* 80382E58 0037EAB8  3B BC 01 24 */	addi r29, r28, 0x124
/* 80382E5C 0037EABC  7C 7E 1B 78 */	mr r30, r3
/* 80382E60 0037EAC0  7F A4 EB 78 */	mr r4, r29
/* 80382E64 0037EAC4  38 7B 00 04 */	addi r3, r27, 4
/* 80382E68 0037EAC8  4B FD FE 0D */	bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
/* 80382E6C 0037EACC  38 1B 00 14 */	addi r0, r27, 0x14
/* 80382E70 0037EAD0  7F A5 EB 78 */	mr r5, r29
/* 80382E74 0037EAD4  90 01 00 0C */	stw r0, 0xc(r1)
/* 80382E78 0037EAD8  38 7B 00 10 */	addi r3, r27, 0x10
/* 80382E7C 0037EADC  38 81 00 0C */	addi r4, r1, 0xc
/* 80382E80 0037EAE0  4B FD FD C9 */	bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
/* 80382E84 0037EAE4  7F C3 F3 78 */	mr r3, r30
/* 80382E88 0037EAE8  4B EE B8 FD */	bl OSRestoreInterrupts
/* 80382E8C 0037EAEC  4B EE B8 D1 */	bl OSDisableInterrupts
/* 80382E90 0037EAF0  7C 7E 1B 78 */	mr r30, r3
/* 80382E94 0037EAF4  7F A4 EB 78 */	mr r4, r29
/* 80382E98 0037EAF8  38 7B 00 10 */	addi r3, r27, 0x10
/* 80382E9C 0037EAFC  4B FD FD D9 */	bl Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode
/* 80382EA0 0037EB00  80 BB 00 08 */	lwz r5, 8(r27)
/* 80382EA4 0037EB04  38 7B 00 08 */	addi r3, r27, 8
/* 80382EA8 0037EB08  48 00 00 1C */	b lbl_80382EC4
lbl_80382EAC:
/* 80382EAC 0037EB0C  80 C3 00 04 */	lwz r6, 4(r3)
/* 80382EB0 0037EB10  80 1C 00 B4 */	lwz r0, 0xb4(r28)
/* 80382EB4 0037EB14  80 86 FF 90 */	lwz r4, -0x70(r6)
/* 80382EB8 0037EB18  7C 04 00 00 */	cmpw r4, r0
/* 80382EBC 0037EB1C  40 81 00 10 */	ble lbl_80382ECC
/* 80382EC0 0037EB20  7C C3 33 78 */	mr r3, r6
lbl_80382EC4:
/* 80382EC4 0037EB24  7C 03 28 40 */	cmplw r3, r5
/* 80382EC8 0037EB28  40 82 FF E4 */	bne lbl_80382EAC
lbl_80382ECC:
/* 80382ECC 0037EB2C  90 61 00 08 */	stw r3, 8(r1)
/* 80382ED0 0037EB30  7F A5 EB 78 */	mr r5, r29
/* 80382ED4 0037EB34  38 7B 00 04 */	addi r3, r27, 4
/* 80382ED8 0037EB38  38 81 00 08 */	addi r4, r1, 8
/* 80382EDC 0037EB3C  4B FD FD 6D */	bl Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode
/* 80382EE0 0037EB40  7F C3 F3 78 */	mr r3, r30
/* 80382EE4 0037EB44  4B EE B8 A1 */	bl OSRestoreInterrupts
/* 80382EE8 0037EB48  3B DB 00 08 */	addi r30, r27, 8
/* 80382EEC 0037EB4C  48 00 00 24 */	b lbl_80382F10
lbl_80382EF0:
/* 80382EF0 0037EB50  80 1D FF 90 */	lwz r0, -0x70(r29)
/* 80382EF4 0037EB54  38 7D FE DC */	addi r3, r29, -292
/* 80382EF8 0037EB58  2C 00 00 01 */	cmpwi r0, 1
/* 80382EFC 0037EB5C  40 81 00 1C */	ble lbl_80382F18
/* 80382F00 0037EB60  2C 00 00 FF */	cmpwi r0, 0xff
/* 80382F04 0037EB64  41 82 00 08 */	beq lbl_80382F0C
/* 80382F08 0037EB68  4B FF E5 F9 */	bl UpdateVoicesPriority__Q44nw4r3snd6detail5VoiceFv
lbl_80382F0C:
/* 80382F0C 0037EB6C  83 BD 00 00 */	lwz r29, 0(r29)
lbl_80382F10:
/* 80382F10 0037EB70  7C 1D F0 40 */	cmplw r29, r30
/* 80382F14 0037EB74  40 82 FF DC */	bne lbl_80382EF0
lbl_80382F18:
/* 80382F18 0037EB78  7F E3 FB 78 */	mr r3, r31
/* 80382F1C 0037EB7C  4B EE B8 69 */	bl OSRestoreInterrupts
/* 80382F20 0037EB80  39 61 00 30 */	addi r11, r1, 0x30
/* 80382F24 0037EB84  4B E4 42 51 */	bl _restgpr_27
/* 80382F28 0037EB88  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80382F2C 0037EB8C  7C 08 03 A6 */	mtlr r0
/* 80382F30 0037EB90  38 21 00 30 */	addi r1, r1, 0x30
/* 80382F34 0037EB94  4E 80 00 20 */	blr 

.global UpdateAllVoicesSync__Q44nw4r3snd6detail12VoiceManagerFUl
UpdateAllVoicesSync__Q44nw4r3snd6detail12VoiceManagerFUl:
/* 80382F38 0037EB98  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80382F3C 0037EB9C  7C 08 02 A6 */	mflr r0
/* 80382F40 0037EBA0  90 01 00 14 */	stw r0, 0x14(r1)
/* 80382F44 0037EBA4  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80382F48 0037EBA8  7C 9F 23 78 */	mr r31, r4
/* 80382F4C 0037EBAC  93 C1 00 08 */	stw r30, 8(r1)
/* 80382F50 0037EBB0  7C 7E 1B 78 */	mr r30, r3
/* 80382F54 0037EBB4  4B EE B8 09 */	bl OSDisableInterrupts
/* 80382F58 0037EBB8  80 9E 00 08 */	lwz r4, 8(r30)
/* 80382F5C 0037EBBC  38 1E 00 08 */	addi r0, r30, 8
/* 80382F60 0037EBC0  48 00 00 24 */	b lbl_80382F84
lbl_80382F64:
/* 80382F64 0037EBC4  7C 86 23 78 */	mr r6, r4
/* 80382F68 0037EBC8  80 84 00 00 */	lwz r4, 0(r4)
/* 80382F6C 0037EBCC  88 A6 FF 88 */	lbz r5, -0x78(r6)
/* 80382F70 0037EBD0  2C 05 00 00 */	cmpwi r5, 0
/* 80382F74 0037EBD4  41 82 00 10 */	beq lbl_80382F84
/* 80382F78 0037EBD8  88 A6 FF 8D */	lbz r5, -0x73(r6)
/* 80382F7C 0037EBDC  7C A5 FB 78 */	or r5, r5, r31
/* 80382F80 0037EBE0  98 A6 FF 8D */	stb r5, -0x73(r6)
lbl_80382F84:
/* 80382F84 0037EBE4  7C 04 00 40 */	cmplw r4, r0
/* 80382F88 0037EBE8  40 82 FF DC */	bne lbl_80382F64
/* 80382F8C 0037EBEC  4B EE B7 F9 */	bl OSRestoreInterrupts
/* 80382F90 0037EBF0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80382F94 0037EBF4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80382F98 0037EBF8  83 C1 00 08 */	lwz r30, 8(r1)
/* 80382F9C 0037EBFC  7C 08 03 A6 */	mtlr r0
/* 80382FA0 0037EC00  38 21 00 10 */	addi r1, r1, 0x10
/* 80382FA4 0037EC04  4E 80 00 20 */	blr