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

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

.global __ct__Q34nw4r3snd12SoundArchiveFv
__ct__Q34nw4r3snd12SoundArchiveFv:
/* 80376F8C 00372BEC  3C A0 80 45 */	lis r5, lbl_8044CE48@ha
/* 80376F90 00372BF0  38 80 00 00 */	li r4, 0
/* 80376F94 00372BF4  38 A5 CE 48 */	addi r5, r5, lbl_8044CE48@l
/* 80376F98 00372BF8  38 00 00 2F */	li r0, 0x2f
/* 80376F9C 00372BFC  90 A3 00 00 */	stw r5, 0(r3)
/* 80376FA0 00372C00  90 83 00 04 */	stw r4, 4(r3)
/* 80376FA4 00372C04  98 03 00 08 */	stb r0, 8(r3)
/* 80376FA8 00372C08  98 83 00 09 */	stb r4, 9(r3)
/* 80376FAC 00372C0C  4E 80 00 20 */	blr

.global __dt__Q34nw4r3snd12SoundArchiveFv
__dt__Q34nw4r3snd12SoundArchiveFv:
/* 80376FB0 00372C10  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80376FB4 00372C14  7C 08 02 A6 */	mflr r0
/* 80376FB8 00372C18  2C 03 00 00 */	cmpwi r3, 0
/* 80376FBC 00372C1C  90 01 00 14 */	stw r0, 0x14(r1)
/* 80376FC0 00372C20  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80376FC4 00372C24  7C 7F 1B 78 */	mr r31, r3
/* 80376FC8 00372C28  41 82 00 10 */	beq lbl_80376FD8
/* 80376FCC 00372C2C  2C 04 00 00 */	cmpwi r4, 0
/* 80376FD0 00372C30  40 81 00 08 */	ble lbl_80376FD8
/* 80376FD4 00372C34  4B E6 3A E5 */	bl __dl__FPv
lbl_80376FD8:
/* 80376FD8 00372C38  7F E3 FB 78 */	mr r3, r31
/* 80376FDC 00372C3C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80376FE0 00372C40  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80376FE4 00372C44  7C 08 03 A6 */	mtlr r0
/* 80376FE8 00372C48  38 21 00 10 */	addi r1, r1, 0x10
/* 80376FEC 00372C4C  4E 80 00 20 */	blr

.global IsAvailable__Q34nw4r3snd12SoundArchiveCFv
IsAvailable__Q34nw4r3snd12SoundArchiveCFv:
/* 80376FF0 00372C50  80 63 00 04 */	lwz r3, 4(r3)
/* 80376FF4 00372C54  7C 03 00 D0 */	neg r0, r3
/* 80376FF8 00372C58  7C 00 1B 78 */	or r0, r0, r3
/* 80376FFC 00372C5C  54 03 0F FE */	srwi r3, r0, 0x1f
/* 80377000 00372C60  4E 80 00 20 */	blr

.global Setup__Q34nw4r3snd12SoundArchiveFPQ44nw4r3snd6detail22SoundArchiveFileReader
Setup__Q34nw4r3snd12SoundArchiveFPQ44nw4r3snd6detail22SoundArchiveFileReader:
/* 80377004 00372C64  90 83 00 04 */	stw r4, 4(r3)
/* 80377008 00372C68  4E 80 00 20 */	blr

.global Shutdown__Q34nw4r3snd12SoundArchiveFv
Shutdown__Q34nw4r3snd12SoundArchiveFv:
/* 8037700C 00372C6C  38 80 00 00 */	li r4, 0
/* 80377010 00372C70  38 00 00 2F */	li r0, 0x2f
/* 80377014 00372C74  90 83 00 04 */	stw r4, 4(r3)
/* 80377018 00372C78  98 03 00 08 */	stb r0, 8(r3)
/* 8037701C 00372C7C  98 83 00 09 */	stb r4, 9(r3)
/* 80377020 00372C80  4E 80 00 20 */	blr

.global func_80377024
func_80377024:
/* 80377024 00372C84  80 63 00 04 */	lwz r3, 4(r3)
/* 80377028 00372C88  48 00 0E 08 */	b GetSoundCount__Q44nw4r3snd6detail22SoundArchiveFileReaderCFv

.global func_8037702C
func_8037702C:
/* 8037702C 00372C8C  80 63 00 04 */	lwz r3, 4(r3)
/* 80377030 00372C90  48 00 0E 40 */	b GetPlayerCount__Q44nw4r3snd6detail22SoundArchiveFileReaderCFv

.global func_80377034
func_80377034:
/* 80377034 00372C94  80 63 00 04 */	lwz r3, 4(r3)
/* 80377038 00372C98  48 00 0E 78 */	b GetGroupCount__Q44nw4r3snd6detail22SoundArchiveFileReaderCFv

.global ConvertLabelStringToSoundId__Q34nw4r3snd12SoundArchiveCFPCc
ConvertLabelStringToSoundId__Q34nw4r3snd12SoundArchiveCFPCc:
/* 8037703C 00372C9C  80 63 00 04 */	lwz r3, 4(r3)
/* 80377040 00372CA0  7C 85 23 78 */	mr r5, r4
/* 80377044 00372CA4  80 83 00 34 */	lwz r4, 0x34(r3)
/* 80377048 00372CA8  48 00 10 CC */	b ConvertLabelStringToId__Q44nw4r3snd6detail22SoundArchiveFileReaderCFPCQ54nw4r3snd6detail16SoundArchiveFile10StringTreePCc

.global func_8037704C
func_8037704C:
/* 8037704C 00372CAC  80 63 00 04 */	lwz r3, 4(r3)
/* 80377050 00372CB0  48 00 06 0C */	b GetSoundType__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUl

.global func_80377054
func_80377054:
/* 80377054 00372CB4  80 63 00 04 */	lwz r3, 4(r3)
/* 80377058 00372CB8  48 00 06 F4 */	b ReadSoundInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive9SoundInfo

.global func_8037705C
func_8037705C:
/* 8037705C 00372CBC  80 63 00 04 */	lwz r3, 4(r3)
/* 80377060 00372CC0  48 00 08 0C */	b ReadSeqSoundInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive12SeqSoundInfo

.global func_80377064
func_80377064:
/* 80377064 00372CC4  80 63 00 04 */	lwz r3, 4(r3)
/* 80377068 00372CC8  48 00 08 B0 */	b ReadStrmSoundInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive13StrmSoundInfo

.global func_8037706C
func_8037706C:
/* 8037706C 00372CCC  80 63 00 04 */	lwz r3, 4(r3)
/* 80377070 00372CD0  48 00 08 F4 */	b ReadWaveSoundInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive13WaveSoundInfo

.global func_80377074
func_80377074:
/* 80377074 00372CD4  80 63 00 04 */	lwz r3, 4(r3)
/* 80377078 00372CD8  48 00 0A 34 */	b ReadPlayerInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive10PlayerInfo

.global func_8037707C
func_8037707C:
/* 8037707C 00372CDC  80 63 00 04 */	lwz r3, 4(r3)
/* 80377080 00372CE0  48 00 0D 2C */	b ReadSoundArchivePlayerInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFPQ44nw4r3snd12SoundArchive22SoundArchivePlayerInfo

.global func_80377084
func_80377084:
/* 80377084 00372CE4  80 63 00 04 */	lwz r3, 4(r3)
/* 80377088 00372CE8  48 00 09 78 */	b ReadBankInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive8BankInfo

.global func_8037708C
func_8037708C:
/* 8037708C 00372CEC  80 63 00 04 */	lwz r3, 4(r3)
/* 80377090 00372CF0  48 00 0A D4 */	b ReadGroupInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive9GroupInfo

.global func_80377094
func_80377094:
/* 80377094 00372CF4  80 63 00 04 */	lwz r3, 4(r3)
/* 80377098 00372CF8  48 00 0B DC */	b ReadGroupItemInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlUlPQ44nw4r3snd12SoundArchive13GroupItemInfo

.global func_8037709C
func_8037709C:
/* 8037709C 00372CFC  80 63 00 04 */	lwz r3, 4(r3)
/* 803770A0 00372D00  48 00 0E 54 */	b ReadFileInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive8FileInfo

.global func_803770A4
func_803770A4:
/* 803770A4 00372D04  80 63 00 04 */	lwz r3, 4(r3)
/* 803770A8 00372D08  48 00 0F 4C */	b ReadFilePos__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlUlPQ44nw4r3snd12SoundArchive7FilePos

.global detail_OpenFileStream__Q34nw4r3snd12SoundArchiveCFUlPvi
detail_OpenFileStream__Q34nw4r3snd12SoundArchiveCFUlPvi:
/* 803770AC 00372D0C  94 21 FD 90 */	stwu r1, -0x270(r1)
/* 803770B0 00372D10  7C 08 02 A6 */	mflr r0
/* 803770B4 00372D14  90 01 02 74 */	stw r0, 0x274(r1)
/* 803770B8 00372D18  39 61 02 70 */	addi r11, r1, 0x270
/* 803770BC 00372D1C  4B E5 00 65 */	bl _savegpr_25
/* 803770C0 00372D20  7C 7D 1B 78 */	mr r29, r3
/* 803770C4 00372D24  80 63 00 04 */	lwz r3, 4(r3)
/* 803770C8 00372D28  7C BE 2B 78 */	mr r30, r5
/* 803770CC 00372D2C  7C 99 23 78 */	mr r25, r4
/* 803770D0 00372D30  7C DF 33 78 */	mr r31, r6
/* 803770D4 00372D34  38 A1 00 10 */	addi r5, r1, 0x10
/* 803770D8 00372D38  48 00 0E 1D */	bl ReadFileInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive8FileInfo
/* 803770DC 00372D3C  2C 03 00 00 */	cmpwi r3, 0
/* 803770E0 00372D40  40 82 00 0C */	bne lbl_803770EC
/* 803770E4 00372D44  38 60 00 00 */	li r3, 0
/* 803770E8 00372D48  48 00 01 D0 */	b lbl_803772B8
lbl_803770EC:
/* 803770EC 00372D4C  83 61 00 18 */	lwz r27, 0x18(r1)
/* 803770F0 00372D50  2C 1B 00 00 */	cmpwi r27, 0
/* 803770F4 00372D54  41 82 00 90 */	beq lbl_80377184
/* 803770F8 00372D58  88 1B 00 00 */	lbz r0, 0(r27)
/* 803770FC 00372D5C  2C 00 00 2F */	cmpwi r0, 0x2f
/* 80377100 00372D60  40 82 00 08 */	bne lbl_80377108
/* 80377104 00372D64  48 00 00 54 */	b lbl_80377158
lbl_80377108:
/* 80377108 00372D68  7F 63 DB 78 */	mr r3, r27
/* 8037710C 00372D6C  4B E4 FA 59 */	bl strlen
/* 80377110 00372D70  7C 7C 1B 78 */	mr r28, r3
/* 80377114 00372D74  38 7D 00 08 */	addi r3, r29, 8
/* 80377118 00372D78  4B E4 FA 4D */	bl strlen
/* 8037711C 00372D7C  7C 1C 1A 14 */	add r0, r28, r3
/* 80377120 00372D80  7C 65 1B 78 */	mr r5, r3
/* 80377124 00372D84  28 00 01 00 */	cmplwi r0, 0x100
/* 80377128 00372D88  41 80 00 0C */	blt lbl_80377134
/* 8037712C 00372D8C  38 60 00 00 */	li r3, 0
/* 80377130 00372D90  48 00 01 88 */	b lbl_803772B8
lbl_80377134:
/* 80377134 00372D94  38 61 01 50 */	addi r3, r1, 0x150
/* 80377138 00372D98  38 9D 00 08 */	addi r4, r29, 8
/* 8037713C 00372D9C  38 A5 00 01 */	addi r5, r5, 1
/* 80377140 00372DA0  4B E5 72 51 */	bl strncpy
/* 80377144 00372DA4  7F 64 DB 78 */	mr r4, r27
/* 80377148 00372DA8  38 61 01 50 */	addi r3, r1, 0x150
/* 8037714C 00372DAC  38 BC 00 01 */	addi r5, r28, 1
/* 80377150 00372DB0  4B E5 72 B1 */	bl strncat
/* 80377154 00372DB4  3B 61 01 50 */	addi r27, r1, 0x150
lbl_80377158:
/* 80377158 00372DB8  81 9D 00 00 */	lwz r12, 0(r29)
/* 8037715C 00372DBC  7F A3 EB 78 */	mr r3, r29
/* 80377160 00372DC0  7F C4 F3 78 */	mr r4, r30
/* 80377164 00372DC4  7F E5 FB 78 */	mr r5, r31
/* 80377168 00372DC8  81 8C 00 1C */	lwz r12, 0x1c(r12)
/* 8037716C 00372DCC  7F 66 DB 78 */	mr r6, r27
/* 80377170 00372DD0  38 E0 00 00 */	li r7, 0
/* 80377174 00372DD4  39 00 00 00 */	li r8, 0
/* 80377178 00372DD8  7D 89 03 A6 */	mtctr r12
/* 8037717C 00372DDC  4E 80 04 21 */	bctrl
/* 80377180 00372DE0  48 00 01 38 */	b lbl_803772B8
lbl_80377184:
/* 80377184 00372DE4  80 7D 00 04 */	lwz r3, 4(r29)
/* 80377188 00372DE8  7F 24 CB 78 */	mr r4, r25
/* 8037718C 00372DEC  38 C1 00 08 */	addi r6, r1, 8
/* 80377190 00372DF0  38 A0 00 00 */	li r5, 0
/* 80377194 00372DF4  48 00 0E 61 */	bl ReadFilePos__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlUlPQ44nw4r3snd12SoundArchive7FilePos
/* 80377198 00372DF8  2C 03 00 00 */	cmpwi r3, 0
/* 8037719C 00372DFC  40 82 00 0C */	bne lbl_803771A8
/* 803771A0 00372E00  38 60 00 00 */	li r3, 0
/* 803771A4 00372E04  48 00 01 14 */	b lbl_803772B8
lbl_803771A8:
/* 803771A8 00372E08  80 7D 00 04 */	lwz r3, 4(r29)
/* 803771AC 00372E0C  38 A1 00 38 */	addi r5, r1, 0x38
/* 803771B0 00372E10  80 81 00 08 */	lwz r4, 8(r1)
/* 803771B4 00372E14  48 00 09 B1 */	bl ReadGroupInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive9GroupInfo
/* 803771B8 00372E18  2C 03 00 00 */	cmpwi r3, 0
/* 803771BC 00372E1C  40 82 00 0C */	bne lbl_803771C8
/* 803771C0 00372E20  38 60 00 00 */	li r3, 0
/* 803771C4 00372E24  48 00 00 F4 */	b lbl_803772B8
lbl_803771C8:
/* 803771C8 00372E28  80 7D 00 04 */	lwz r3, 4(r29)
/* 803771CC 00372E2C  38 C1 00 20 */	addi r6, r1, 0x20
/* 803771D0 00372E30  80 81 00 08 */	lwz r4, 8(r1)
/* 803771D4 00372E34  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 803771D8 00372E38  48 00 0A 9D */	bl ReadGroupItemInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlUlPQ44nw4r3snd12SoundArchive13GroupItemInfo
/* 803771DC 00372E3C  2C 03 00 00 */	cmpwi r3, 0
/* 803771E0 00372E40  40 82 00 0C */	bne lbl_803771EC
/* 803771E4 00372E44  38 60 00 00 */	li r3, 0
/* 803771E8 00372E48  48 00 00 D0 */	b lbl_803772B8
lbl_803771EC:
/* 803771EC 00372E4C  83 61 00 3C */	lwz r27, 0x3c(r1)
/* 803771F0 00372E50  80 61 00 40 */	lwz r3, 0x40(r1)
/* 803771F4 00372E54  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803771F8 00372E58  2C 1B 00 00 */	cmpwi r27, 0
/* 803771FC 00372E5C  83 21 00 28 */	lwz r25, 0x28(r1)
/* 80377200 00372E60  7F 43 02 14 */	add r26, r3, r0
/* 80377204 00372E64  41 82 00 90 */	beq lbl_80377294
/* 80377208 00372E68  88 1B 00 00 */	lbz r0, 0(r27)
/* 8037720C 00372E6C  2C 00 00 2F */	cmpwi r0, 0x2f
/* 80377210 00372E70  40 82 00 08 */	bne lbl_80377218
/* 80377214 00372E74  48 00 00 54 */	b lbl_80377268
lbl_80377218:
/* 80377218 00372E78  7F 63 DB 78 */	mr r3, r27
/* 8037721C 00372E7C  4B E4 F9 49 */	bl strlen
/* 80377220 00372E80  7C 7C 1B 78 */	mr r28, r3
/* 80377224 00372E84  38 7D 00 08 */	addi r3, r29, 8
/* 80377228 00372E88  4B E4 F9 3D */	bl strlen
/* 8037722C 00372E8C  7C 1C 1A 14 */	add r0, r28, r3
/* 80377230 00372E90  7C 65 1B 78 */	mr r5, r3
/* 80377234 00372E94  28 00 01 00 */	cmplwi r0, 0x100
/* 80377238 00372E98  41 80 00 0C */	blt lbl_80377244
/* 8037723C 00372E9C  38 60 00 00 */	li r3, 0
/* 80377240 00372EA0  48 00 00 78 */	b lbl_803772B8
lbl_80377244:
/* 80377244 00372EA4  38 61 00 50 */	addi r3, r1, 0x50
/* 80377248 00372EA8  38 9D 00 08 */	addi r4, r29, 8
/* 8037724C 00372EAC  38 A5 00 01 */	addi r5, r5, 1
/* 80377250 00372EB0  4B E5 71 41 */	bl strncpy
/* 80377254 00372EB4  7F 64 DB 78 */	mr r4, r27
/* 80377258 00372EB8  38 61 00 50 */	addi r3, r1, 0x50
/* 8037725C 00372EBC  38 BC 00 01 */	addi r5, r28, 1
/* 80377260 00372EC0  4B E5 71 A1 */	bl strncat
/* 80377264 00372EC4  3B 61 00 50 */	addi r27, r1, 0x50
lbl_80377268:
/* 80377268 00372EC8  81 9D 00 00 */	lwz r12, 0(r29)
/* 8037726C 00372ECC  7F A3 EB 78 */	mr r3, r29
/* 80377270 00372ED0  7F C4 F3 78 */	mr r4, r30
/* 80377274 00372ED4  7F E5 FB 78 */	mr r5, r31
/* 80377278 00372ED8  81 8C 00 1C */	lwz r12, 0x1c(r12)
/* 8037727C 00372EDC  7F 66 DB 78 */	mr r6, r27
/* 80377280 00372EE0  7F 47 D3 78 */	mr r7, r26
/* 80377284 00372EE4  7F 28 CB 78 */	mr r8, r25
/* 80377288 00372EE8  7D 89 03 A6 */	mtctr r12
/* 8037728C 00372EEC  4E 80 04 21 */	bctrl
/* 80377290 00372EF0  48 00 00 28 */	b lbl_803772B8
lbl_80377294:
/* 80377294 00372EF4  81 9D 00 00 */	lwz r12, 0(r29)
/* 80377298 00372EF8  7F A3 EB 78 */	mr r3, r29
/* 8037729C 00372EFC  7F C4 F3 78 */	mr r4, r30
/* 803772A0 00372F00  7F E5 FB 78 */	mr r5, r31
/* 803772A4 00372F04  81 8C 00 18 */	lwz r12, 0x18(r12)
/* 803772A8 00372F08  7F 46 D3 78 */	mr r6, r26
/* 803772AC 00372F0C  7F 27 CB 78 */	mr r7, r25
/* 803772B0 00372F10  7D 89 03 A6 */	mtctr r12
/* 803772B4 00372F14  4E 80 04 21 */	bctrl
lbl_803772B8:
/* 803772B8 00372F18  39 61 02 70 */	addi r11, r1, 0x270
/* 803772BC 00372F1C  4B E4 FE B1 */	bl _restgpr_25
/* 803772C0 00372F20  80 01 02 74 */	lwz r0, 0x274(r1)
/* 803772C4 00372F24  7C 08 03 A6 */	mtlr r0
/* 803772C8 00372F28  38 21 02 70 */	addi r1, r1, 0x270
/* 803772CC 00372F2C  4E 80 00 20 */	blr

.global detail_OpenGroupStream__Q34nw4r3snd12SoundArchiveCFUlPvi
detail_OpenGroupStream__Q34nw4r3snd12SoundArchiveCFUlPvi:
/* 803772D0 00372F30  94 21 FE C0 */	stwu r1, -0x140(r1)
/* 803772D4 00372F34  7C 08 02 A6 */	mflr r0
/* 803772D8 00372F38  90 01 01 44 */	stw r0, 0x144(r1)
/* 803772DC 00372F3C  39 61 01 40 */	addi r11, r1, 0x140
/* 803772E0 00372F40  4B E4 FE 41 */	bl _savegpr_25
/* 803772E4 00372F44  7C 79 1B 78 */	mr r25, r3
/* 803772E8 00372F48  80 63 00 04 */	lwz r3, 4(r3)
/* 803772EC 00372F4C  7C BA 2B 78 */	mr r26, r5
/* 803772F0 00372F50  7C DB 33 78 */	mr r27, r6
/* 803772F4 00372F54  38 A1 00 08 */	addi r5, r1, 8
/* 803772F8 00372F58  48 00 08 6D */	bl ReadGroupInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive9GroupInfo
/* 803772FC 00372F5C  2C 03 00 00 */	cmpwi r3, 0
/* 80377300 00372F60  40 82 00 0C */	bne lbl_8037730C
/* 80377304 00372F64  38 60 00 00 */	li r3, 0
/* 80377308 00372F68  48 00 00 C8 */	b lbl_803773D0
lbl_8037730C:
/* 8037730C 00372F6C  83 81 00 0C */	lwz r28, 0xc(r1)
/* 80377310 00372F70  2C 1C 00 00 */	cmpwi r28, 0
/* 80377314 00372F74  41 82 00 98 */	beq lbl_803773AC
/* 80377318 00372F78  88 1C 00 00 */	lbz r0, 0(r28)
/* 8037731C 00372F7C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80377320 00372F80  2C 00 00 2F */	cmpwi r0, 0x2f
/* 80377324 00372F84  83 C1 00 10 */	lwz r30, 0x10(r1)
/* 80377328 00372F88  40 82 00 08 */	bne lbl_80377330
/* 8037732C 00372F8C  48 00 00 54 */	b lbl_80377380
lbl_80377330:
/* 80377330 00372F90  7F 83 E3 78 */	mr r3, r28
/* 80377334 00372F94  4B E4 F8 31 */	bl strlen
/* 80377338 00372F98  7C 7F 1B 78 */	mr r31, r3
/* 8037733C 00372F9C  38 79 00 08 */	addi r3, r25, 8
/* 80377340 00372FA0  4B E4 F8 25 */	bl strlen
/* 80377344 00372FA4  7C 1F 1A 14 */	add r0, r31, r3
/* 80377348 00372FA8  7C 65 1B 78 */	mr r5, r3
/* 8037734C 00372FAC  28 00 01 00 */	cmplwi r0, 0x100
/* 80377350 00372FB0  41 80 00 0C */	blt lbl_8037735C
/* 80377354 00372FB4  38 60 00 00 */	li r3, 0
/* 80377358 00372FB8  48 00 00 78 */	b lbl_803773D0
lbl_8037735C:
/* 8037735C 00372FBC  38 61 00 20 */	addi r3, r1, 0x20
/* 80377360 00372FC0  38 99 00 08 */	addi r4, r25, 8
/* 80377364 00372FC4  38 A5 00 01 */	addi r5, r5, 1
/* 80377368 00372FC8  4B E5 70 29 */	bl strncpy
/* 8037736C 00372FCC  7F 84 E3 78 */	mr r4, r28
/* 80377370 00372FD0  38 61 00 20 */	addi r3, r1, 0x20
/* 80377374 00372FD4  38 BF 00 01 */	addi r5, r31, 1
/* 80377378 00372FD8  4B E5 70 89 */	bl strncat
/* 8037737C 00372FDC  3B 81 00 20 */	addi r28, r1, 0x20
lbl_80377380:
/* 80377380 00372FE0  81 99 00 00 */	lwz r12, 0(r25)
/* 80377384 00372FE4  7F 23 CB 78 */	mr r3, r25
/* 80377388 00372FE8  7F 44 D3 78 */	mr r4, r26
/* 8037738C 00372FEC  7F 65 DB 78 */	mr r5, r27
/* 80377390 00372FF0  81 8C 00 1C */	lwz r12, 0x1c(r12)
/* 80377394 00372FF4  7F 86 E3 78 */	mr r6, r28
/* 80377398 00372FF8  7F C7 F3 78 */	mr r7, r30
/* 8037739C 00372FFC  7F A8 EB 78 */	mr r8, r29
/* 803773A0 00373000  7D 89 03 A6 */	mtctr r12
/* 803773A4 00373004  4E 80 04 21 */	bctrl
/* 803773A8 00373008  48 00 00 28 */	b lbl_803773D0
lbl_803773AC:
/* 803773AC 0037300C  81 99 00 00 */	lwz r12, 0(r25)
/* 803773B0 00373010  7F 23 CB 78 */	mr r3, r25
/* 803773B4 00373014  7F 44 D3 78 */	mr r4, r26
/* 803773B8 00373018  7F 65 DB 78 */	mr r5, r27
/* 803773BC 0037301C  81 8C 00 18 */	lwz r12, 0x18(r12)
/* 803773C0 00373020  80 C1 00 10 */	lwz r6, 0x10(r1)
/* 803773C4 00373024  80 E1 00 14 */	lwz r7, 0x14(r1)
/* 803773C8 00373028  7D 89 03 A6 */	mtctr r12
/* 803773CC 0037302C  4E 80 04 21 */	bctrl
lbl_803773D0:
/* 803773D0 00373030  39 61 01 40 */	addi r11, r1, 0x140
/* 803773D4 00373034  4B E4 FD 99 */	bl _restgpr_25
/* 803773D8 00373038  80 01 01 44 */	lwz r0, 0x144(r1)
/* 803773DC 0037303C  7C 08 03 A6 */	mtlr r0
/* 803773E0 00373040  38 21 01 40 */	addi r1, r1, 0x140
/* 803773E4 00373044  4E 80 00 20 */	blr

.global detail_OpenGroupWaveDataStream__Q34nw4r3snd12SoundArchiveCFUlPvi
detail_OpenGroupWaveDataStream__Q34nw4r3snd12SoundArchiveCFUlPvi:
/* 803773E8 00373048  94 21 FE C0 */	stwu r1, -0x140(r1)
/* 803773EC 0037304C  7C 08 02 A6 */	mflr r0
/* 803773F0 00373050  90 01 01 44 */	stw r0, 0x144(r1)
/* 803773F4 00373054  39 61 01 40 */	addi r11, r1, 0x140
/* 803773F8 00373058  4B E4 FD 29 */	bl _savegpr_25
/* 803773FC 0037305C  7C 79 1B 78 */	mr r25, r3
/* 80377400 00373060  80 63 00 04 */	lwz r3, 4(r3)
/* 80377404 00373064  7C BA 2B 78 */	mr r26, r5
/* 80377408 00373068  7C DB 33 78 */	mr r27, r6
/* 8037740C 0037306C  38 A1 00 08 */	addi r5, r1, 8
/* 80377410 00373070  48 00 07 55 */	bl ReadGroupInfo__Q44nw4r3snd6detail22SoundArchiveFileReaderCFUlPQ44nw4r3snd12SoundArchive9GroupInfo
/* 80377414 00373074  2C 03 00 00 */	cmpwi r3, 0
/* 80377418 00373078  40 82 00 0C */	bne lbl_80377424
/* 8037741C 0037307C  38 60 00 00 */	li r3, 0
/* 80377420 00373080  48 00 00 C8 */	b lbl_803774E8
lbl_80377424:
/* 80377424 00373084  83 81 00 0C */	lwz r28, 0xc(r1)
/* 80377428 00373088  2C 1C 00 00 */	cmpwi r28, 0
/* 8037742C 0037308C  41 82 00 98 */	beq lbl_803774C4
/* 80377430 00373090  88 1C 00 00 */	lbz r0, 0(r28)
/* 80377434 00373094  83 A1 00 1C */	lwz r29, 0x1c(r1)
/* 80377438 00373098  2C 00 00 2F */	cmpwi r0, 0x2f
/* 8037743C 0037309C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80377440 003730A0  40 82 00 08 */	bne lbl_80377448
/* 80377444 003730A4  48 00 00 54 */	b lbl_80377498
lbl_80377448:
/* 80377448 003730A8  7F 83 E3 78 */	mr r3, r28
/* 8037744C 003730AC  4B E4 F7 19 */	bl strlen
/* 80377450 003730B0  7C 7F 1B 78 */	mr r31, r3
/* 80377454 003730B4  38 79 00 08 */	addi r3, r25, 8
/* 80377458 003730B8  4B E4 F7 0D */	bl strlen
/* 8037745C 003730BC  7C 1F 1A 14 */	add r0, r31, r3
/* 80377460 003730C0  7C 65 1B 78 */	mr r5, r3
/* 80377464 003730C4  28 00 01 00 */	cmplwi r0, 0x100
/* 80377468 003730C8  41 80 00 0C */	blt lbl_80377474
/* 8037746C 003730CC  38 60 00 00 */	li r3, 0
/* 80377470 003730D0  48 00 00 78 */	b lbl_803774E8
lbl_80377474:
/* 80377474 003730D4  38 61 00 20 */	addi r3, r1, 0x20
/* 80377478 003730D8  38 99 00 08 */	addi r4, r25, 8
/* 8037747C 003730DC  38 A5 00 01 */	addi r5, r5, 1
/* 80377480 003730E0  4B E5 6F 11 */	bl strncpy
/* 80377484 003730E4  7F 84 E3 78 */	mr r4, r28
/* 80377488 003730E8  38 61 00 20 */	addi r3, r1, 0x20
/* 8037748C 003730EC  38 BF 00 01 */	addi r5, r31, 1
/* 80377490 003730F0  4B E5 6F 71 */	bl strncat
/* 80377494 003730F4  3B 81 00 20 */	addi r28, r1, 0x20
lbl_80377498:
/* 80377498 003730F8  81 99 00 00 */	lwz r12, 0(r25)
/* 8037749C 003730FC  7F 23 CB 78 */	mr r3, r25
/* 803774A0 00373100  7F 44 D3 78 */	mr r4, r26
/* 803774A4 00373104  7F 65 DB 78 */	mr r5, r27
/* 803774A8 00373108  81 8C 00 1C */	lwz r12, 0x1c(r12)
/* 803774AC 0037310C  7F 86 E3 78 */	mr r6, r28
/* 803774B0 00373110  7F C7 F3 78 */	mr r7, r30
/* 803774B4 00373114  7F A8 EB 78 */	mr r8, r29
/* 803774B8 00373118  7D 89 03 A6 */	mtctr r12
/* 803774BC 0037311C  4E 80 04 21 */	bctrl
/* 803774C0 00373120  48 00 00 28 */	b lbl_803774E8
lbl_803774C4:
/* 803774C4 00373124  81 99 00 00 */	lwz r12, 0(r25)
/* 803774C8 00373128  7F 23 CB 78 */	mr r3, r25
/* 803774CC 0037312C  7F 44 D3 78 */	mr r4, r26
/* 803774D0 00373130  7F 65 DB 78 */	mr r5, r27
/* 803774D4 00373134  81 8C 00 18 */	lwz r12, 0x18(r12)
/* 803774D8 00373138  80 C1 00 18 */	lwz r6, 0x18(r1)
/* 803774DC 0037313C  80 E1 00 1C */	lwz r7, 0x1c(r1)
/* 803774E0 00373140  7D 89 03 A6 */	mtctr r12
/* 803774E4 00373144  4E 80 04 21 */	bctrl
lbl_803774E8:
/* 803774E8 00373148  39 61 01 40 */	addi r11, r1, 0x140
/* 803774EC 0037314C  4B E4 FC 81 */	bl _restgpr_25
/* 803774F0 00373150  80 01 01 44 */	lwz r0, 0x144(r1)
/* 803774F4 00373154  7C 08 03 A6 */	mtlr r0
/* 803774F8 00373158  38 21 01 40 */	addi r1, r1, 0x140
/* 803774FC 0037315C  4E 80 00 20 */	blr

.global SetExternalFileRoot__Q34nw4r3snd12SoundArchiveFPCc
SetExternalFileRoot__Q34nw4r3snd12SoundArchiveFPCc:
/* 80377500 00373160  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80377504 00373164  7C 08 02 A6 */	mflr r0
/* 80377508 00373168  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037750C 0037316C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80377510 00373170  7C 9F 23 78 */	mr r31, r4
/* 80377514 00373174  93 C1 00 08 */	stw r30, 8(r1)
/* 80377518 00373178  7C 7E 1B 78 */	mr r30, r3
/* 8037751C 0037317C  7F E3 FB 78 */	mr r3, r31
/* 80377520 00373180  4B E4 F6 45 */	bl strlen
/* 80377524 00373184  7C 9F 1A 14 */	add r4, r31, r3
/* 80377528 00373188  88 04 FF FF */	lbz r0, -1(r4)
/* 8037752C 0037318C  7C 64 1B 78 */	mr r4, r3
/* 80377530 00373190  2C 00 00 2F */	cmpwi r0, 0x2f
/* 80377534 00373194  41 82 00 14 */	beq lbl_80377548
/* 80377538 00373198  7C 9E 1A 14 */	add r4, r30, r3
/* 8037753C 0037319C  38 00 00 2F */	li r0, 0x2f
/* 80377540 003731A0  98 04 00 08 */	stb r0, 8(r4)
/* 80377544 003731A4  38 83 00 01 */	addi r4, r3, 1
lbl_80377548:
/* 80377548 003731A8  7C 9E 22 14 */	add r4, r30, r4
/* 8037754C 003731AC  38 00 00 00 */	li r0, 0
/* 80377550 003731B0  98 04 00 08 */	stb r0, 8(r4)
/* 80377554 003731B4  7C 65 1B 78 */	mr r5, r3
/* 80377558 003731B8  7F E4 FB 78 */	mr r4, r31
/* 8037755C 003731BC  38 7E 00 08 */	addi r3, r30, 8
/* 80377560 003731C0  4B E5 6E 31 */	bl strncpy
/* 80377564 003731C4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80377568 003731C8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8037756C 003731CC  83 C1 00 08 */	lwz r30, 8(r1)
/* 80377570 003731D0  7C 08 03 A6 */	mtlr r0
/* 80377574 003731D4  38 21 00 10 */	addi r1, r1, 0x10
/* 80377578 003731D8  4E 80 00 20 */	blr