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

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

.global __ct__Q44nw4r3snd6detail18SoundArchiveLoaderFRCQ34nw4r3snd12SoundArchive
__ct__Q44nw4r3snd6detail18SoundArchiveLoaderFRCQ34nw4r3snd12SoundArchive:
/* 80378350 00373FB0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80378354 00373FB4  7C 08 02 A6 */	mflr r0
/* 80378358 00373FB8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037835C 00373FBC  38 00 00 00 */	li r0, 0
/* 80378360 00373FC0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80378364 00373FC4  7C 7F 1B 78 */	mr r31, r3
/* 80378368 00373FC8  90 83 00 18 */	stw r4, 0x18(r3)
/* 8037836C 00373FCC  90 03 02 1C */	stw r0, 0x21c(r3)
/* 80378370 00373FD0  4B EF 75 A1 */	bl OSInitMutex
/* 80378374 00373FD4  7F E3 FB 78 */	mr r3, r31
/* 80378378 00373FD8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8037837C 00373FDC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80378380 00373FE0  7C 08 03 A6 */	mtlr r0
/* 80378384 00373FE4  38 21 00 10 */	addi r1, r1, 0x10
/* 80378388 00373FE8  4E 80 00 20 */	blr

.global __dt__Q44nw4r3snd6detail18SoundArchiveLoaderFv
__dt__Q44nw4r3snd6detail18SoundArchiveLoaderFv:
/* 8037838C 00373FEC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80378390 00373FF0  7C 08 02 A6 */	mflr r0
/* 80378394 00373FF4  2C 03 00 00 */	cmpwi r3, 0
/* 80378398 00373FF8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037839C 00373FFC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 803783A0 00374000  7C 7F 1B 78 */	mr r31, r3
/* 803783A4 00374004  41 82 00 10 */	beq lbl_803783B4
/* 803783A8 00374008  2C 04 00 00 */	cmpwi r4, 0
/* 803783AC 0037400C  40 81 00 08 */	ble lbl_803783B4
/* 803783B0 00374010  4B E6 27 09 */	bl __dl__FPv
lbl_803783B4:
/* 803783B4 00374014  7F E3 FB 78 */	mr r3, r31
/* 803783B8 00374018  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803783BC 0037401C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803783C0 00374020  7C 08 03 A6 */	mtlr r0
/* 803783C4 00374024  38 21 00 10 */	addi r1, r1, 0x10
/* 803783C8 00374028  4E 80 00 20 */	blr

.global LoadGroup__Q44nw4r3snd6detail18SoundArchiveLoaderFUlPQ34nw4r3snd22SoundMemoryAllocatablePPvUl
LoadGroup__Q44nw4r3snd6detail18SoundArchiveLoaderFUlPQ34nw4r3snd22SoundMemoryAllocatablePPvUl:
/* 803783CC 0037402C  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 803783D0 00374030  7C 08 02 A6 */	mflr r0
/* 803783D4 00374034  90 01 00 54 */	stw r0, 0x54(r1)
/* 803783D8 00374038  39 61 00 50 */	addi r11, r1, 0x50
/* 803783DC 0037403C  4B E4 ED 3D */	bl _savegpr_23
/* 803783E0 00374040  7C 7F 1B 78 */	mr r31, r3
/* 803783E4 00374044  7C 9A 23 78 */	mr r26, r4
/* 803783E8 00374048  7C B9 2B 78 */	mr r25, r5
/* 803783EC 0037404C  7C D7 33 78 */	mr r23, r6
/* 803783F0 00374050  7C F8 3B 78 */	mr r24, r7
/* 803783F4 00374054  4B EF 75 55 */	bl OSLockMutex
/* 803783F8 00374058  80 7F 00 18 */	lwz r3, 0x18(r31)
/* 803783FC 0037405C  7F 44 D3 78 */	mr r4, r26
/* 80378400 00374060  38 BF 00 1C */	addi r5, r31, 0x1c
/* 80378404 00374064  38 C0 02 00 */	li r6, 0x200
/* 80378408 00374068  4B FF EE C9 */	bl detail_OpenGroupStream__Q34nw4r3snd12SoundArchiveCFUlPvi
/* 8037840C 0037406C  2C 03 00 00 */	cmpwi r3, 0
/* 80378410 00374070  7C 7D 1B 78 */	mr r29, r3
/* 80378414 00374074  40 82 00 28 */	bne lbl_8037843C
/* 80378418 00374078  41 82 00 14 */	beq lbl_8037842C
/* 8037841C 0037407C  81 83 00 00 */	lwz r12, 0(r3)
/* 80378420 00374080  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 80378424 00374084  7D 89 03 A6 */	mtctr r12
/* 80378428 00374088  4E 80 04 21 */	bctrl
lbl_8037842C:
/* 8037842C 0037408C  7F E3 FB 78 */	mr r3, r31
/* 80378430 00374090  4B EF 75 F5 */	bl OSUnlockMutex
/* 80378434 00374094  38 60 00 00 */	li r3, 0
/* 80378438 00374098  48 00 05 50 */	b lbl_80378988
lbl_8037843C:
/* 8037843C 0037409C  81 83 00 00 */	lwz r12, 0(r3)
/* 80378440 003740A0  81 8C 00 50 */	lwz r12, 0x50(r12)
/* 80378444 003740A4  7D 89 03 A6 */	mtctr r12
/* 80378448 003740A8  4E 80 04 21 */	bctrl
/* 8037844C 003740AC  2C 03 00 00 */	cmpwi r3, 0
/* 80378450 003740B0  41 82 00 20 */	beq lbl_80378470
/* 80378454 003740B4  81 9D 00 00 */	lwz r12, 0(r29)
/* 80378458 003740B8  7F A3 EB 78 */	mr r3, r29
/* 8037845C 003740BC  81 8C 00 2C */	lwz r12, 0x2c(r12)
/* 80378460 003740C0  7D 89 03 A6 */	mtctr r12
/* 80378464 003740C4  4E 80 04 21 */	bctrl
/* 80378468 003740C8  2C 03 00 00 */	cmpwi r3, 0
/* 8037846C 003740CC  40 82 00 30 */	bne lbl_8037849C
lbl_80378470:
/* 80378470 003740D0  2C 1D 00 00 */	cmpwi r29, 0
/* 80378474 003740D4  41 82 00 18 */	beq lbl_8037848C
/* 80378478 003740D8  81 9D 00 00 */	lwz r12, 0(r29)
/* 8037847C 003740DC  7F A3 EB 78 */	mr r3, r29
/* 80378480 003740E0  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 80378484 003740E4  7D 89 03 A6 */	mtctr r12
/* 80378488 003740E8  4E 80 04 21 */	bctrl
lbl_8037848C:
/* 8037848C 003740EC  7F E3 FB 78 */	mr r3, r31
/* 80378490 003740F0  4B EF 75 95 */	bl OSUnlockMutex
/* 80378494 003740F4  38 60 00 00 */	li r3, 0
/* 80378498 003740F8  48 00 04 F0 */	b lbl_80378988
lbl_8037849C:
/* 8037849C 003740FC  81 9D 00 00 */	lwz r12, 0(r29)
/* 803784A0 00374100  7F A3 EB 78 */	mr r3, r29
/* 803784A4 00374104  81 8C 00 40 */	lwz r12, 0x40(r12)
/* 803784A8 00374108  7D 89 03 A6 */	mtctr r12
/* 803784AC 0037410C  4E 80 04 21 */	bctrl
/* 803784B0 00374110  81 99 00 00 */	lwz r12, 0(r25)
/* 803784B4 00374114  7C 64 1B 78 */	mr r4, r3
/* 803784B8 00374118  7F 23 CB 78 */	mr r3, r25
/* 803784BC 0037411C  81 8C 00 0C */	lwz r12, 0xc(r12)
/* 803784C0 00374120  7D 89 03 A6 */	mtctr r12
/* 803784C4 00374124  4E 80 04 21 */	bctrl
/* 803784C8 00374128  2C 03 00 00 */	cmpwi r3, 0
/* 803784CC 0037412C  7C 7B 1B 78 */	mr r27, r3
/* 803784D0 00374130  40 82 00 30 */	bne lbl_80378500
/* 803784D4 00374134  2C 1D 00 00 */	cmpwi r29, 0
/* 803784D8 00374138  41 82 00 18 */	beq lbl_803784F0
/* 803784DC 0037413C  81 9D 00 00 */	lwz r12, 0(r29)
/* 803784E0 00374140  7F A3 EB 78 */	mr r3, r29
/* 803784E4 00374144  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 803784E8 00374148  7D 89 03 A6 */	mtctr r12
/* 803784EC 0037414C  4E 80 04 21 */	bctrl
lbl_803784F0:
/* 803784F0 00374150  7F E3 FB 78 */	mr r3, r31
/* 803784F4 00374154  4B EF 75 31 */	bl OSUnlockMutex
/* 803784F8 00374158  38 60 00 00 */	li r3, 0
/* 803784FC 0037415C  48 00 04 8C */	b lbl_80378988
lbl_80378500:
/* 80378500 00374160  2C 18 00 00 */	cmpwi r24, 0
/* 80378504 00374164  93 BF 02 1C */	stw r29, 0x21c(r31)
/* 80378508 00374168  40 82 00 70 */	bne lbl_80378578
/* 8037850C 0037416C  81 9D 00 00 */	lwz r12, 0(r29)
/* 80378510 00374170  7F A3 EB 78 */	mr r3, r29
/* 80378514 00374174  81 8C 00 40 */	lwz r12, 0x40(r12)
/* 80378518 00374178  7D 89 03 A6 */	mtctr r12
/* 8037851C 0037417C  4E 80 04 21 */	bctrl
/* 80378520 00374180  81 9D 00 00 */	lwz r12, 0(r29)
/* 80378524 00374184  7C 65 1B 78 */	mr r5, r3
/* 80378528 00374188  7F A3 EB 78 */	mr r3, r29
/* 8037852C 0037418C  7F 64 DB 78 */	mr r4, r27
/* 80378530 00374190  81 8C 00 14 */	lwz r12, 0x14(r12)
/* 80378534 00374194  7D 89 03 A6 */	mtctr r12
/* 80378538 00374198  4E 80 04 21 */	bctrl
/* 8037853C 0037419C  2C 03 00 00 */	cmpwi r3, 0
/* 80378540 003741A0  40 80 00 DC */	bge lbl_8037861C
/* 80378544 003741A4  38 00 00 00 */	li r0, 0
/* 80378548 003741A8  2C 1D 00 00 */	cmpwi r29, 0
/* 8037854C 003741AC  90 1F 02 1C */	stw r0, 0x21c(r31)
/* 80378550 003741B0  41 82 00 18 */	beq lbl_80378568
/* 80378554 003741B4  81 9D 00 00 */	lwz r12, 0(r29)
/* 80378558 003741B8  7F A3 EB 78 */	mr r3, r29
/* 8037855C 003741BC  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 80378560 003741C0  7D 89 03 A6 */	mtctr r12
/* 80378564 003741C4  4E 80 04 21 */	bctrl
lbl_80378568:
/* 80378568 003741C8  7F E3 FB 78 */	mr r3, r31
/* 8037856C 003741CC  4B EF 74 B9 */	bl OSUnlockMutex
/* 80378570 003741D0  38 60 00 00 */	li r3, 0
/* 80378574 003741D4  48 00 04 14 */	b lbl_80378988
lbl_80378578:
/* 80378578 003741D8  81 9D 00 00 */	lwz r12, 0(r29)
/* 8037857C 003741DC  7F A3 EB 78 */	mr r3, r29
/* 80378580 003741E0  7F 7C DB 78 */	mr r28, r27
/* 80378584 003741E4  81 8C 00 40 */	lwz r12, 0x40(r12)
/* 80378588 003741E8  7D 89 03 A6 */	mtctr r12
/* 8037858C 003741EC  4E 80 04 21 */	bctrl
/* 80378590 003741F0  7C 7E 1B 78 */	mr r30, r3
/* 80378594 003741F4  48 00 00 80 */	b lbl_80378614
lbl_80378598:
/* 80378598 003741F8  7C 18 F0 40 */	cmplw r24, r30
/* 8037859C 003741FC  7F A3 EB 78 */	mr r3, r29
/* 803785A0 00374200  7F 84 E3 78 */	mr r4, r28
/* 803785A4 00374204  7F 05 C3 78 */	mr r5, r24
/* 803785A8 00374208  40 81 00 08 */	ble lbl_803785B0
/* 803785AC 0037420C  7F C5 F3 78 */	mr r5, r30
lbl_803785B0:
/* 803785B0 00374210  81 83 00 00 */	lwz r12, 0(r3)
/* 803785B4 00374214  81 8C 00 14 */	lwz r12, 0x14(r12)
/* 803785B8 00374218  7D 89 03 A6 */	mtctr r12
/* 803785BC 0037421C  4E 80 04 21 */	bctrl
/* 803785C0 00374220  2C 03 00 00 */	cmpwi r3, 0
/* 803785C4 00374224  40 80 00 38 */	bge lbl_803785FC
/* 803785C8 00374228  38 00 00 00 */	li r0, 0
/* 803785CC 0037422C  2C 1D 00 00 */	cmpwi r29, 0
/* 803785D0 00374230  90 1F 02 1C */	stw r0, 0x21c(r31)
/* 803785D4 00374234  41 82 00 18 */	beq lbl_803785EC
/* 803785D8 00374238  81 9D 00 00 */	lwz r12, 0(r29)
/* 803785DC 0037423C  7F A3 EB 78 */	mr r3, r29
/* 803785E0 00374240  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 803785E4 00374244  7D 89 03 A6 */	mtctr r12
/* 803785E8 00374248  4E 80 04 21 */	bctrl
lbl_803785EC:
/* 803785EC 0037424C  7F E3 FB 78 */	mr r3, r31
/* 803785F0 00374250  4B EF 74 35 */	bl OSUnlockMutex
/* 803785F4 00374254  38 60 00 00 */	li r3, 0
/* 803785F8 00374258  48 00 03 90 */	b lbl_80378988
lbl_803785FC:
/* 803785FC 0037425C  7C 1E 18 40 */	cmplw r30, r3
/* 80378600 00374260  40 81 00 10 */	ble lbl_80378610
/* 80378604 00374264  7F C3 F0 50 */	subf r30, r3, r30
/* 80378608 00374268  7F 9C 1A 14 */	add r28, r28, r3
/* 8037860C 0037426C  48 00 00 08 */	b lbl_80378614
lbl_80378610:
/* 80378610 00374270  3B C0 00 00 */	li r30, 0
lbl_80378614:
/* 80378614 00374274  2C 1E 00 00 */	cmpwi r30, 0
/* 80378618 00374278  40 82 FF 80 */	bne lbl_80378598
lbl_8037861C:
/* 8037861C 0037427C  3B C0 00 00 */	li r30, 0
/* 80378620 00374280  80 7F 00 18 */	lwz r3, 0x18(r31)
/* 80378624 00374284  93 DF 02 1C */	stw r30, 0x21c(r31)
/* 80378628 00374288  7F 44 D3 78 */	mr r4, r26
/* 8037862C 0037428C  38 A1 00 08 */	addi r5, r1, 8
/* 80378630 00374290  4B FF EA 5D */	bl func_8037708C
/* 80378634 00374294  2C 03 00 00 */	cmpwi r3, 0
/* 80378638 00374298  40 82 00 30 */	bne lbl_80378668
/* 8037863C 0037429C  2C 1D 00 00 */	cmpwi r29, 0
/* 80378640 003742A0  41 82 00 18 */	beq lbl_80378658
/* 80378644 003742A4  81 9D 00 00 */	lwz r12, 0(r29)
/* 80378648 003742A8  7F A3 EB 78 */	mr r3, r29
/* 8037864C 003742AC  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 80378650 003742B0  7D 89 03 A6 */	mtctr r12
/* 80378654 003742B4  4E 80 04 21 */	bctrl
lbl_80378658:
/* 80378658 003742B8  7F E3 FB 78 */	mr r3, r31
/* 8037865C 003742BC  4B EF 73 C9 */	bl OSUnlockMutex
/* 80378660 003742C0  38 60 00 00 */	li r3, 0
/* 80378664 003742C4  48 00 03 24 */	b lbl_80378988
lbl_80378668:
/* 80378668 003742C8  80 01 00 1C */	lwz r0, 0x1c(r1)
/* 8037866C 003742CC  2C 00 00 00 */	cmpwi r0, 0
/* 80378670 003742D0  41 82 02 E4 */	beq lbl_80378954
/* 80378674 003742D4  80 7F 00 18 */	lwz r3, 0x18(r31)
/* 80378678 003742D8  7F 44 D3 78 */	mr r4, r26
/* 8037867C 003742DC  38 BF 00 1C */	addi r5, r31, 0x1c
/* 80378680 003742E0  38 C0 02 00 */	li r6, 0x200
/* 80378684 003742E4  4B FF ED 65 */	bl detail_OpenGroupWaveDataStream__Q34nw4r3snd12SoundArchiveCFUlPvi
/* 80378688 003742E8  2C 03 00 00 */	cmpwi r3, 0
/* 8037868C 003742EC  7C 7C 1B 78 */	mr r28, r3
/* 80378690 003742F0  40 82 00 44 */	bne lbl_803786D4
/* 80378694 003742F4  41 82 00 14 */	beq lbl_803786A8
/* 80378698 003742F8  81 83 00 00 */	lwz r12, 0(r3)
/* 8037869C 003742FC  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 803786A0 00374300  7D 89 03 A6 */	mtctr r12
/* 803786A4 00374304  4E 80 04 21 */	bctrl
lbl_803786A8:
/* 803786A8 00374308  2C 1D 00 00 */	cmpwi r29, 0
/* 803786AC 0037430C  41 82 00 18 */	beq lbl_803786C4
/* 803786B0 00374310  81 9D 00 00 */	lwz r12, 0(r29)
/* 803786B4 00374314  7F A3 EB 78 */	mr r3, r29
/* 803786B8 00374318  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 803786BC 0037431C  7D 89 03 A6 */	mtctr r12
/* 803786C0 00374320  4E 80 04 21 */	bctrl
lbl_803786C4:
/* 803786C4 00374324  7F E3 FB 78 */	mr r3, r31
/* 803786C8 00374328  4B EF 73 5D */	bl OSUnlockMutex
/* 803786CC 0037432C  38 60 00 00 */	li r3, 0
/* 803786D0 00374330  48 00 02 B8 */	b lbl_80378988
lbl_803786D4:
/* 803786D4 00374334  81 83 00 00 */	lwz r12, 0(r3)
/* 803786D8 00374338  81 8C 00 50 */	lwz r12, 0x50(r12)
/* 803786DC 0037433C  7D 89 03 A6 */	mtctr r12
/* 803786E0 00374340  4E 80 04 21 */	bctrl
/* 803786E4 00374344  2C 03 00 00 */	cmpwi r3, 0
/* 803786E8 00374348  41 82 00 20 */	beq lbl_80378708
/* 803786EC 0037434C  81 9C 00 00 */	lwz r12, 0(r28)
/* 803786F0 00374350  7F 83 E3 78 */	mr r3, r28
/* 803786F4 00374354  81 8C 00 2C */	lwz r12, 0x2c(r12)
/* 803786F8 00374358  7D 89 03 A6 */	mtctr r12
/* 803786FC 0037435C  4E 80 04 21 */	bctrl
/* 80378700 00374360  2C 03 00 00 */	cmpwi r3, 0
/* 80378704 00374364  40 82 00 4C */	bne lbl_80378750
lbl_80378708:
/* 80378708 00374368  2C 1C 00 00 */	cmpwi r28, 0
/* 8037870C 0037436C  41 82 00 18 */	beq lbl_80378724
/* 80378710 00374370  81 9C 00 00 */	lwz r12, 0(r28)
/* 80378714 00374374  7F 83 E3 78 */	mr r3, r28
/* 80378718 00374378  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 8037871C 0037437C  7D 89 03 A6 */	mtctr r12
/* 80378720 00374380  4E 80 04 21 */	bctrl
lbl_80378724:
/* 80378724 00374384  2C 1D 00 00 */	cmpwi r29, 0
/* 80378728 00374388  41 82 00 18 */	beq lbl_80378740
/* 8037872C 0037438C  81 9D 00 00 */	lwz r12, 0(r29)
/* 80378730 00374390  7F A3 EB 78 */	mr r3, r29
/* 80378734 00374394  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 80378738 00374398  7D 89 03 A6 */	mtctr r12
/* 8037873C 0037439C  4E 80 04 21 */	bctrl
lbl_80378740:
/* 80378740 003743A0  7F E3 FB 78 */	mr r3, r31
/* 80378744 003743A4  4B EF 72 E1 */	bl OSUnlockMutex
/* 80378748 003743A8  38 60 00 00 */	li r3, 0
/* 8037874C 003743AC  48 00 02 3C */	b lbl_80378988
lbl_80378750:
/* 80378750 003743B0  81 9C 00 00 */	lwz r12, 0(r28)
/* 80378754 003743B4  7F 83 E3 78 */	mr r3, r28
/* 80378758 003743B8  81 8C 00 40 */	lwz r12, 0x40(r12)
/* 8037875C 003743BC  7D 89 03 A6 */	mtctr r12
/* 80378760 003743C0  4E 80 04 21 */	bctrl
/* 80378764 003743C4  81 99 00 00 */	lwz r12, 0(r25)
/* 80378768 003743C8  7C 64 1B 78 */	mr r4, r3
/* 8037876C 003743CC  7F 23 CB 78 */	mr r3, r25
/* 80378770 003743D0  81 8C 00 0C */	lwz r12, 0xc(r12)
/* 80378774 003743D4  7D 89 03 A6 */	mtctr r12
/* 80378778 003743D8  4E 80 04 21 */	bctrl
/* 8037877C 003743DC  2C 03 00 00 */	cmpwi r3, 0
/* 80378780 003743E0  7C 7A 1B 78 */	mr r26, r3
/* 80378784 003743E4  40 82 00 4C */	bne lbl_803787D0
/* 80378788 003743E8  2C 1C 00 00 */	cmpwi r28, 0
/* 8037878C 003743EC  41 82 00 18 */	beq lbl_803787A4
/* 80378790 003743F0  81 9C 00 00 */	lwz r12, 0(r28)
/* 80378794 003743F4  7F 83 E3 78 */	mr r3, r28
/* 80378798 003743F8  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 8037879C 003743FC  7D 89 03 A6 */	mtctr r12
/* 803787A0 00374400  4E 80 04 21 */	bctrl
lbl_803787A4:
/* 803787A4 00374404  2C 1D 00 00 */	cmpwi r29, 0
/* 803787A8 00374408  41 82 00 18 */	beq lbl_803787C0
/* 803787AC 0037440C  81 9D 00 00 */	lwz r12, 0(r29)
/* 803787B0 00374410  7F A3 EB 78 */	mr r3, r29
/* 803787B4 00374414  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 803787B8 00374418  7D 89 03 A6 */	mtctr r12
/* 803787BC 0037441C  4E 80 04 21 */	bctrl
lbl_803787C0:
/* 803787C0 00374420  7F E3 FB 78 */	mr r3, r31
/* 803787C4 00374424  4B EF 72 61 */	bl OSUnlockMutex
/* 803787C8 00374428  38 60 00 00 */	li r3, 0
/* 803787CC 0037442C  48 00 01 BC */	b lbl_80378988
lbl_803787D0:
/* 803787D0 00374430  2C 18 00 00 */	cmpwi r24, 0
/* 803787D4 00374434  93 9F 02 1C */	stw r28, 0x21c(r31)
/* 803787D8 00374438  40 82 00 88 */	bne lbl_80378860
/* 803787DC 0037443C  81 9C 00 00 */	lwz r12, 0(r28)
/* 803787E0 00374440  7F 83 E3 78 */	mr r3, r28
/* 803787E4 00374444  81 8C 00 40 */	lwz r12, 0x40(r12)
/* 803787E8 00374448  7D 89 03 A6 */	mtctr r12
/* 803787EC 0037444C  4E 80 04 21 */	bctrl
/* 803787F0 00374450  81 9C 00 00 */	lwz r12, 0(r28)
/* 803787F4 00374454  7C 65 1B 78 */	mr r5, r3
/* 803787F8 00374458  7F 83 E3 78 */	mr r3, r28
/* 803787FC 0037445C  7F 44 D3 78 */	mr r4, r26
/* 80378800 00374460  81 8C 00 14 */	lwz r12, 0x14(r12)
/* 80378804 00374464  7D 89 03 A6 */	mtctr r12
/* 80378808 00374468  4E 80 04 21 */	bctrl
/* 8037880C 0037446C  2C 03 00 00 */	cmpwi r3, 0
/* 80378810 00374470  40 80 01 10 */	bge lbl_80378920
/* 80378814 00374474  2C 1C 00 00 */	cmpwi r28, 0
/* 80378818 00374478  93 DF 02 1C */	stw r30, 0x21c(r31)
/* 8037881C 0037447C  41 82 00 18 */	beq lbl_80378834
/* 80378820 00374480  81 9C 00 00 */	lwz r12, 0(r28)
/* 80378824 00374484  7F 83 E3 78 */	mr r3, r28
/* 80378828 00374488  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 8037882C 0037448C  7D 89 03 A6 */	mtctr r12
/* 80378830 00374490  4E 80 04 21 */	bctrl
lbl_80378834:
/* 80378834 00374494  2C 1D 00 00 */	cmpwi r29, 0
/* 80378838 00374498  41 82 00 18 */	beq lbl_80378850
/* 8037883C 0037449C  81 9D 00 00 */	lwz r12, 0(r29)
/* 80378840 003744A0  7F A3 EB 78 */	mr r3, r29
/* 80378844 003744A4  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 80378848 003744A8  7D 89 03 A6 */	mtctr r12
/* 8037884C 003744AC  4E 80 04 21 */	bctrl
lbl_80378850:
/* 80378850 003744B0  7F E3 FB 78 */	mr r3, r31
/* 80378854 003744B4  4B EF 71 D1 */	bl OSUnlockMutex
/* 80378858 003744B8  38 60 00 00 */	li r3, 0
/* 8037885C 003744BC  48 00 01 2C */	b lbl_80378988
lbl_80378860:
/* 80378860 003744C0  81 9C 00 00 */	lwz r12, 0(r28)
/* 80378864 003744C4  7F 83 E3 78 */	mr r3, r28
/* 80378868 003744C8  7F 5E D3 78 */	mr r30, r26
/* 8037886C 003744CC  81 8C 00 40 */	lwz r12, 0x40(r12)
/* 80378870 003744D0  7D 89 03 A6 */	mtctr r12
/* 80378874 003744D4  4E 80 04 21 */	bctrl
/* 80378878 003744D8  7C 79 1B 78 */	mr r25, r3
/* 8037887C 003744DC  48 00 00 9C */	b lbl_80378918
lbl_80378880:
/* 80378880 003744E0  7C 18 C8 40 */	cmplw r24, r25
/* 80378884 003744E4  7F 83 E3 78 */	mr r3, r28
/* 80378888 003744E8  7F C4 F3 78 */	mr r4, r30
/* 8037888C 003744EC  7F 05 C3 78 */	mr r5, r24
/* 80378890 003744F0  40 81 00 08 */	ble lbl_80378898
/* 80378894 003744F4  7F 25 CB 78 */	mr r5, r25
lbl_80378898:
/* 80378898 003744F8  81 83 00 00 */	lwz r12, 0(r3)
/* 8037889C 003744FC  81 8C 00 14 */	lwz r12, 0x14(r12)
/* 803788A0 00374500  7D 89 03 A6 */	mtctr r12
/* 803788A4 00374504  4E 80 04 21 */	bctrl
/* 803788A8 00374508  2C 03 00 00 */	cmpwi r3, 0
/* 803788AC 0037450C  40 80 00 54 */	bge lbl_80378900
/* 803788B0 00374510  38 00 00 00 */	li r0, 0
/* 803788B4 00374514  2C 1C 00 00 */	cmpwi r28, 0
/* 803788B8 00374518  90 1F 02 1C */	stw r0, 0x21c(r31)
/* 803788BC 0037451C  41 82 00 18 */	beq lbl_803788D4
/* 803788C0 00374520  81 9C 00 00 */	lwz r12, 0(r28)
/* 803788C4 00374524  7F 83 E3 78 */	mr r3, r28
/* 803788C8 00374528  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 803788CC 0037452C  7D 89 03 A6 */	mtctr r12
/* 803788D0 00374530  4E 80 04 21 */	bctrl
lbl_803788D4:
/* 803788D4 00374534  2C 1D 00 00 */	cmpwi r29, 0
/* 803788D8 00374538  41 82 00 18 */	beq lbl_803788F0
/* 803788DC 0037453C  81 9D 00 00 */	lwz r12, 0(r29)
/* 803788E0 00374540  7F A3 EB 78 */	mr r3, r29
/* 803788E4 00374544  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 803788E8 00374548  7D 89 03 A6 */	mtctr r12
/* 803788EC 0037454C  4E 80 04 21 */	bctrl
lbl_803788F0:
/* 803788F0 00374550  7F E3 FB 78 */	mr r3, r31
/* 803788F4 00374554  4B EF 71 31 */	bl OSUnlockMutex
/* 803788F8 00374558  38 60 00 00 */	li r3, 0
/* 803788FC 0037455C  48 00 00 8C */	b lbl_80378988
lbl_80378900:
/* 80378900 00374560  7C 19 18 40 */	cmplw r25, r3
/* 80378904 00374564  40 81 00 10 */	ble lbl_80378914
/* 80378908 00374568  7F 23 C8 50 */	subf r25, r3, r25
/* 8037890C 0037456C  7F DE 1A 14 */	add r30, r30, r3
/* 80378910 00374570  48 00 00 08 */	b lbl_80378918
lbl_80378914:
/* 80378914 00374574  3B 20 00 00 */	li r25, 0
lbl_80378918:
/* 80378918 00374578  2C 19 00 00 */	cmpwi r25, 0
/* 8037891C 0037457C  40 82 FF 64 */	bne lbl_80378880
lbl_80378920:
/* 80378920 00374580  38 00 00 00 */	li r0, 0
/* 80378924 00374584  2C 17 00 00 */	cmpwi r23, 0
/* 80378928 00374588  90 1F 02 1C */	stw r0, 0x21c(r31)
/* 8037892C 0037458C  41 82 00 08 */	beq lbl_80378934
/* 80378930 00374590  93 57 00 00 */	stw r26, 0(r23)
lbl_80378934:
/* 80378934 00374594  2C 1C 00 00 */	cmpwi r28, 0
/* 80378938 00374598  41 82 00 28 */	beq lbl_80378960
/* 8037893C 0037459C  81 9C 00 00 */	lwz r12, 0(r28)
/* 80378940 003745A0  7F 83 E3 78 */	mr r3, r28
/* 80378944 003745A4  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 80378948 003745A8  7D 89 03 A6 */	mtctr r12
/* 8037894C 003745AC  4E 80 04 21 */	bctrl
/* 80378950 003745B0  48 00 00 10 */	b lbl_80378960
lbl_80378954:
/* 80378954 003745B4  2C 17 00 00 */	cmpwi r23, 0
/* 80378958 003745B8  41 82 00 08 */	beq lbl_80378960
/* 8037895C 003745BC  93 D7 00 00 */	stw r30, 0(r23)
lbl_80378960:
/* 80378960 003745C0  2C 1D 00 00 */	cmpwi r29, 0
/* 80378964 003745C4  41 82 00 18 */	beq lbl_8037897C
/* 80378968 003745C8  81 9D 00 00 */	lwz r12, 0(r29)
/* 8037896C 003745CC  7F A3 EB 78 */	mr r3, r29
/* 80378970 003745D0  81 8C 00 10 */	lwz r12, 0x10(r12)
/* 80378974 003745D4  7D 89 03 A6 */	mtctr r12
/* 80378978 003745D8  4E 80 04 21 */	bctrl
lbl_8037897C:
/* 8037897C 003745DC  7F E3 FB 78 */	mr r3, r31
/* 80378980 003745E0  4B EF 70 A5 */	bl OSUnlockMutex
/* 80378984 003745E4  7F 63 DB 78 */	mr r3, r27
lbl_80378988:
/* 80378988 003745E8  39 61 00 50 */	addi r11, r1, 0x50
/* 8037898C 003745EC  4B E4 E7 D9 */	bl _restgpr_23
/* 80378990 003745F0  80 01 00 54 */	lwz r0, 0x54(r1)
/* 80378994 003745F4  7C 08 03 A6 */	mtlr r0
/* 80378998 003745F8  38 21 00 50 */	addi r1, r1, 0x50
/* 8037899C 003745FC  4E 80 00 20 */	blr