summaryrefslogtreecommitdiff
path: root/asm/SDK/VF/pf_volume.s
blob: 8b69c9945fa91772aa612da1d098963194d9c76b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
.include "macros.inc"

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

.global VFiPFVOL_DoMountVolume
VFiPFVOL_DoMountVolume:
/* 80319060 00314CC0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80319064 00314CC4  7C 08 02 A6 */	mflr r0
/* 80319068 00314CC8  90 01 00 24 */	stw r0, 0x24(r1)
/* 8031906C 00314CCC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80319070 00314CD0  7C 7F 1B 78 */	mr r31, r3
/* 80319074 00314CD4  4B FE CD 61 */	bl VFiPFDRV_mount
/* 80319078 00314CD8  2C 03 00 00 */	cmpwi r3, 0
/* 8031907C 00314CDC  41 82 00 08 */	beq lbl_80319084
/* 80319080 00314CE0  48 00 01 4C */	b lbl_803191CC
lbl_80319084:
/* 80319084 00314CE4  A0 1F 00 00 */	lhz r0, 0(r31)
/* 80319088 00314CE8  2C 00 00 00 */	cmpwi r0, 0
/* 8031908C 00314CEC  41 82 00 0C */	beq lbl_80319098
/* 80319090 00314CF0  54 00 05 FF */	clrlwi. r0, r0, 0x17
/* 80319094 00314CF4  41 82 00 0C */	beq lbl_803190A0
lbl_80319098:
/* 80319098 00314CF8  38 60 00 0F */	li r3, 0xf
/* 8031909C 00314CFC  48 00 01 30 */	b lbl_803191CC
lbl_803190A0:
/* 803190A0 00314D00  7F E3 FB 78 */	mr r3, r31
/* 803190A4 00314D04  4B FF 14 85 */	bl VFiPFCACHE_InitCaches
/* 803190A8 00314D08  2C 03 00 00 */	cmpwi r3, 0
/* 803190AC 00314D0C  41 82 00 08 */	beq lbl_803190B4
/* 803190B0 00314D10  48 00 01 1C */	b lbl_803191CC
lbl_803190B4:
/* 803190B4 00314D14  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803190B8 00314D18  60 03 00 02 */	ori r3, r0, 2
/* 803190BC 00314D1C  54 60 07 BD */	rlwinm. r0, r3, 0, 0x1e, 0x1e
/* 803190C0 00314D20  B0 7F 18 78 */	sth r3, 0x1878(r31)
/* 803190C4 00314D24  40 82 00 0C */	bne lbl_803190D0
/* 803190C8 00314D28  38 60 00 09 */	li r3, 9
/* 803190CC 00314D2C  48 00 00 A0 */	b lbl_8031916C
lbl_803190D0:
/* 803190D0 00314D30  38 61 00 08 */	addi r3, r1, 8
/* 803190D4 00314D34  48 00 13 59 */	bl VFiPFSYS_GetCurrentContextID
/* 803190D8 00314D38  80 1F 16 18 */	lwz r0, 0x1618(r31)
/* 803190DC 00314D3C  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 803190E0 00314D40  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 803190E4 00314D44  38 80 00 01 */	li r4, 1
/* 803190E8 00314D48  60 00 00 01 */	ori r0, r0, 1
/* 803190EC 00314D4C  90 1F 16 18 */	stw r0, 0x1618(r31)
/* 803190F0 00314D50  38 A3 00 08 */	addi r5, r3, 8
/* 803190F4 00314D54  80 61 00 08 */	lwz r3, 8(r1)
/* 803190F8 00314D58  48 00 00 30 */	b lbl_80319128
lbl_803190FC:
/* 803190FC 00314D5C  80 05 00 40 */	lwz r0, 0x40(r5)
/* 80319100 00314D60  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80319104 00314D64  90 05 00 40 */	stw r0, 0x40(r5)
/* 80319108 00314D68  41 82 00 18 */	beq lbl_80319120
/* 8031910C 00314D6C  80 05 00 44 */	lwz r0, 0x44(r5)
/* 80319110 00314D70  7C 03 00 00 */	cmpw r3, r0
/* 80319114 00314D74  40 82 00 0C */	bne lbl_80319120
/* 80319118 00314D78  38 00 00 01 */	li r0, 1
/* 8031911C 00314D7C  48 00 00 18 */	b lbl_80319134
lbl_80319120:
/* 80319120 00314D80  38 A5 00 08 */	addi r5, r5, 8
/* 80319124 00314D84  38 84 00 01 */	addi r4, r4, 1
lbl_80319128:
/* 80319128 00314D88  28 04 00 01 */	cmplwi r4, 1
/* 8031912C 00314D8C  41 80 FF D0 */	blt lbl_803190FC
/* 80319130 00314D90  38 00 00 00 */	li r0, 0
lbl_80319134:
/* 80319134 00314D94  2C 00 00 00 */	cmpwi r0, 0
/* 80319138 00314D98  41 82 00 18 */	beq lbl_80319150
/* 8031913C 00314D9C  80 1F 18 60 */	lwz r0, 0x1860(r31)
/* 80319140 00314DA0  60 00 00 01 */	ori r0, r0, 1
/* 80319144 00314DA4  90 1F 18 60 */	stw r0, 0x1860(r31)
/* 80319148 00314DA8  80 01 00 08 */	lwz r0, 8(r1)
/* 8031914C 00314DAC  90 1F 18 64 */	stw r0, 0x1864(r31)
lbl_80319150:
/* 80319150 00314DB0  38 9F 16 20 */	addi r4, r31, 0x1620
/* 80319154 00314DB4  7F E3 FB 78 */	mr r3, r31
/* 80319158 00314DB8  4B FF 35 AD */	bl VFiPFENT_GetRootDir
/* 8031915C 00314DBC  2C 03 00 00 */	cmpwi r3, 0
/* 80319160 00314DC0  41 82 00 08 */	beq lbl_80319168
/* 80319164 00314DC4  48 00 00 08 */	b lbl_8031916C
lbl_80319168:
/* 80319168 00314DC8  38 60 00 00 */	li r3, 0
lbl_8031916C:
/* 8031916C 00314DCC  2C 03 00 00 */	cmpwi r3, 0
/* 80319170 00314DD0  40 82 00 48 */	bne lbl_803191B8
/* 80319174 00314DD4  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 80319178 00314DD8  54 00 06 F7 */	rlwinm. r0, r0, 0, 0x1b, 0x1b
/* 8031917C 00314DDC  41 82 00 3C */	beq lbl_803191B8
/* 80319180 00314DE0  80 9F 18 94 */	lwz r4, 0x1894(r31)
/* 80319184 00314DE4  7F E3 FB 78 */	mr r3, r31
/* 80319188 00314DE8  4B FE CF 0D */	bl VFiPFDRV_format
/* 8031918C 00314DEC  2C 03 00 00 */	cmpwi r3, 0
/* 80319190 00314DF0  40 82 00 28 */	bne lbl_803191B8
/* 80319194 00314DF4  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 80319198 00314DF8  54 00 06 B5 */	rlwinm. r0, r0, 0, 0x1a, 0x1a
/* 8031919C 00314DFC  40 82 00 1C */	bne lbl_803191B8
/* 803191A0 00314E00  7F E3 FB 78 */	mr r3, r31
/* 803191A4 00314E04  4B FF 77 9D */	bl VFiPFFAT_InitFATRegion
/* 803191A8 00314E08  2C 03 00 00 */	cmpwi r3, 0
/* 803191AC 00314E0C  40 82 00 0C */	bne lbl_803191B8
/* 803191B0 00314E10  7F E3 FB 78 */	mr r3, r31
/* 803191B4 00314E14  4B FF 35 F9 */	bl VFiPFENT_MakeRootDir
lbl_803191B8:
/* 803191B8 00314E18  2C 03 00 00 */	cmpwi r3, 0
/* 803191BC 00314E1C  41 82 00 10 */	beq lbl_803191CC
/* 803191C0 00314E20  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803191C4 00314E24  54 00 07 FA */	rlwinm r0, r0, 0, 0x1f, 0x1d
/* 803191C8 00314E28  B0 1F 18 78 */	sth r0, 0x1878(r31)
lbl_803191CC:
/* 803191CC 00314E2C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803191D0 00314E30  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 803191D4 00314E34  7C 08 03 A6 */	mtlr r0
/* 803191D8 00314E38  38 21 00 20 */	addi r1, r1, 0x20
/* 803191DC 00314E3C  4E 80 00 20 */	blr

.global VFiPFVOL_InitModule
VFiPFVOL_InitModule:
/* 803191E0 00314E40  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 803191E4 00314E44  7C 08 02 A6 */	mflr r0
/* 803191E8 00314E48  90 01 00 14 */	stw r0, 0x14(r1)
/* 803191EC 00314E4C  54 60 04 1B */	rlwinm. r0, r3, 0, 0x10, 0xd
/* 803191F0 00314E50  93 E1 00 0C */	stw r31, 0xc(r1)
/* 803191F4 00314E54  93 C1 00 08 */	stw r30, 8(r1)
/* 803191F8 00314E58  41 82 00 1C */	beq lbl_80319214
/* 803191FC 00314E5C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80319200 00314E60  38 00 00 0A */	li r0, 0xa
/* 80319204 00314E64  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80319208 00314E68  38 60 00 0A */	li r3, 0xa
/* 8031920C 00314E6C  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80319210 00314E70  48 00 01 44 */	b lbl_80319354
lbl_80319214:
/* 80319214 00314E74  54 65 03 9E */	rlwinm r5, r3, 0, 0xe, 0xf
/* 80319218 00314E78  3C 05 FF FD */	addis r0, r5, 0xfffd
/* 8031921C 00314E7C  28 00 00 00 */	cmplwi r0, 0
/* 80319220 00314E80  40 82 00 1C */	bne lbl_8031923C
/* 80319224 00314E84  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80319228 00314E88  38 00 00 0A */	li r0, 0xa
/* 8031922C 00314E8C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80319230 00314E90  38 60 00 0A */	li r3, 0xa
/* 80319234 00314E94  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80319238 00314E98  48 00 01 1C */	b lbl_80319354
lbl_8031923C:
/* 8031923C 00314E9C  54 65 03 DF */	rlwinm. r5, r3, 0, 0xf, 0xf
/* 80319240 00314EA0  41 82 00 1C */	beq lbl_8031925C
/* 80319244 00314EA4  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80319248 00314EA8  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 8031924C 00314EAC  80 03 00 14 */	lwz r0, 0x14(r3)
/* 80319250 00314EB0  64 00 00 01 */	oris r0, r0, 1
/* 80319254 00314EB4  90 03 00 14 */	stw r0, 0x14(r3)
/* 80319258 00314EB8  48 00 00 18 */	b lbl_80319270
lbl_8031925C:
/* 8031925C 00314EBC  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80319260 00314EC0  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319264 00314EC4  80 03 00 14 */	lwz r0, 0x14(r3)
/* 80319268 00314EC8  54 00 04 1C */	rlwinm r0, r0, 0, 0x10, 0xe
/* 8031926C 00314ECC  90 03 00 14 */	stw r0, 0x14(r3)
lbl_80319270:
/* 80319270 00314ED0  3C E0 80 58 */	lis r7, lbl_8057F5C8@ha
/* 80319274 00314ED4  2C 05 00 00 */	cmpwi r5, 0
/* 80319278 00314ED8  80 67 F5 C8 */	lwz r3, lbl_8057F5C8@l(r7)
/* 8031927C 00314EDC  38 C7 F5 C8 */	addi r6, r7, -2616
/* 80319280 00314EE0  38 00 00 00 */	li r0, 0
/* 80319284 00314EE4  38 A6 00 48 */	addi r5, r6, 0x48
/* 80319288 00314EE8  60 63 00 01 */	ori r3, r3, 1
/* 8031928C 00314EEC  90 A6 00 08 */	stw r5, 8(r6)
/* 80319290 00314EF0  90 67 F5 C8 */	stw r3, -0xa38(r7)
/* 80319294 00314EF4  90 06 00 0C */	stw r0, 0xc(r6)
/* 80319298 00314EF8  90 06 00 10 */	stw r0, 0x10(r6)
/* 8031929C 00314EFC  41 82 00 14 */	beq lbl_803192B0
/* 803192A0 00314F00  80 06 00 14 */	lwz r0, 0x14(r6)
/* 803192A4 00314F04  64 00 00 01 */	oris r0, r0, 1
/* 803192A8 00314F08  90 06 00 14 */	stw r0, 0x14(r6)
/* 803192AC 00314F0C  48 00 00 10 */	b lbl_803192BC
lbl_803192B0:
/* 803192B0 00314F10  80 06 00 14 */	lwz r0, 0x14(r6)
/* 803192B4 00314F14  54 00 04 1C */	rlwinm r0, r0, 0, 0x10, 0xe
/* 803192B8 00314F18  90 06 00 14 */	stw r0, 0x14(r6)
lbl_803192BC:
/* 803192BC 00314F1C  3D 60 80 58 */	lis r11, lbl_8057F5C8@ha
/* 803192C0 00314F20  3D 20 80 32 */	lis r9, VFiPFCODE_CP932_OEM2Unicode@ha
/* 803192C4 00314F24  39 6B F5 C8 */	addi r11, r11, lbl_8057F5C8@l
/* 803192C8 00314F28  39 40 00 00 */	li r10, 0
/* 803192CC 00314F2C  3D 00 80 32 */	lis r8, VFiPFCODE_CP932_Unicode2OEM@ha
/* 803192D0 00314F30  3C E0 80 32 */	lis r7, VFiPFCODE_CP932_OEMCharWidth@ha
/* 803192D4 00314F34  3C C0 80 32 */	lis r6, VFiPFCODE_CP932_isOEMMBchar@ha
/* 803192D8 00314F38  3C A0 80 32 */	lis r5, VFiPFCODE_CP932_UnicodeCharWidth@ha
/* 803192DC 00314F3C  3C 60 80 32 */	lis r3, VFiPFCODE_CP932_isUnicodeMBchar@ha
/* 803192E0 00314F40  39 29 9C 00 */	addi r9, r9, VFiPFCODE_CP932_OEM2Unicode@l
/* 803192E4 00314F44  39 08 9D BC */	addi r8, r8, VFiPFCODE_CP932_Unicode2OEM@l
/* 803192E8 00314F48  38 E7 A0 24 */	addi r7, r7, VFiPFCODE_CP932_OEMCharWidth@l
/* 803192EC 00314F4C  38 C6 A0 58 */	addi r6, r6, VFiPFCODE_CP932_isOEMMBchar@l
/* 803192F0 00314F50  38 A5 A0 D4 */	addi r5, r5, VFiPFCODE_CP932_UnicodeCharWidth@l
/* 803192F4 00314F54  38 63 A1 08 */	addi r3, r3, VFiPFCODE_CP932_isUnicodeMBchar@l
/* 803192F8 00314F58  38 00 00 01 */	li r0, 1
/* 803192FC 00314F5C  90 8B 00 18 */	stw r4, 0x18(r11)
/* 80319300 00314F60  3B EB 00 48 */	addi r31, r11, 0x48
/* 80319304 00314F64  3B C0 00 00 */	li r30, 0
/* 80319308 00314F68  91 4B 00 1C */	stw r10, 0x1c(r11)
/* 8031930C 00314F6C  91 4B 00 20 */	stw r10, 0x20(r11)
/* 80319310 00314F70  90 0B 00 3C */	stw r0, 0x3c(r11)
/* 80319314 00314F74  91 2B 00 24 */	stw r9, 0x24(r11)
/* 80319318 00314F78  91 0B 00 28 */	stw r8, 0x28(r11)
/* 8031931C 00314F7C  90 EB 00 2C */	stw r7, 0x2c(r11)
/* 80319320 00314F80  90 CB 00 30 */	stw r6, 0x30(r11)
/* 80319324 00314F84  90 AB 00 34 */	stw r5, 0x34(r11)
/* 80319328 00314F88  90 6B 00 38 */	stw r3, 0x38(r11)
lbl_8031932C:
/* 8031932C 00314F8C  7F E3 FB 78 */	mr r3, r31
/* 80319330 00314F90  38 80 00 00 */	li r4, 0
/* 80319334 00314F94  38 A0 18 98 */	li r5, 0x1898
/* 80319338 00314F98  4B FE BC 9D */	bl VFipf_memset
/* 8031933C 00314F9C  3B DE 00 01 */	addi r30, r30, 1
/* 80319340 00314FA0  3B FF 18 98 */	addi r31, r31, 0x1898
/* 80319344 00314FA4  2C 1E 00 1A */	cmpwi r30, 0x1a
/* 80319348 00314FA8  41 80 FF E4 */	blt lbl_8031932C
/* 8031934C 00314FAC  48 00 10 C9 */	bl VFiPF_InitLockFile
/* 80319350 00314FB0  38 60 00 00 */	li r3, 0
lbl_80319354:
/* 80319354 00314FB4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80319358 00314FB8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8031935C 00314FBC  83 C1 00 08 */	lwz r30, 8(r1)
/* 80319360 00314FC0  7C 08 03 A6 */	mtlr r0
/* 80319364 00314FC4  38 21 00 10 */	addi r1, r1, 0x10
/* 80319368 00314FC8  4E 80 00 20 */	blr

.global VFiPFVOL_CheckForRead
VFiPFVOL_CheckForRead:
/* 8031936C 00314FCC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80319370 00314FD0  7C 08 02 A6 */	mflr r0
/* 80319374 00314FD4  2C 03 00 00 */	cmpwi r3, 0
/* 80319378 00314FD8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8031937C 00314FDC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80319380 00314FE0  7C 7F 1B 78 */	mr r31, r3
/* 80319384 00314FE4  40 82 00 0C */	bne lbl_80319390
/* 80319388 00314FE8  38 60 00 0A */	li r3, 0xa
/* 8031938C 00314FEC  48 00 01 88 */	b lbl_80319514
lbl_80319390:
/* 80319390 00314FF0  4B FE C9 C1 */	bl VFiPFDRV_IsInserted
/* 80319394 00314FF4  2C 03 00 00 */	cmpwi r3, 0
/* 80319398 00314FF8  41 82 00 D0 */	beq lbl_80319468
/* 8031939C 00314FFC  7F E3 FB 78 */	mr r3, r31
/* 803193A0 00315000  4B FE C9 DD */	bl VFiPFDRV_IsDetected
/* 803193A4 00315004  2C 03 00 00 */	cmpwi r3, 0
/* 803193A8 00315008  41 82 01 48 */	beq lbl_803194F0
/* 803193AC 0031500C  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803193B0 00315010  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 803193B4 00315014  41 82 00 64 */	beq lbl_80319418
/* 803193B8 00315018  7F E3 FB 78 */	mr r3, r31
/* 803193BC 0031501C  4B FF B9 21 */	bl VFiPFFILE_FinalizeAllFiles
/* 803193C0 00315020  7F E3 FB 78 */	mr r3, r31
/* 803193C4 00315024  4B FF 1E 75 */	bl VFiPFDIR_FinalizeAllDirs
/* 803193C8 00315028  7F E3 FB 78 */	mr r3, r31
/* 803193CC 0031502C  4B FF 18 79 */	bl VFiPFCACHE_FreeAllCaches
/* 803193D0 00315030  7F E3 FB 78 */	mr r3, r31
/* 803193D4 00315034  38 80 00 01 */	li r4, 1
/* 803193D8 00315038  4B FE CC 35 */	bl VFiPFDRV_unmount
/* 803193DC 0031503C  2C 03 00 00 */	cmpwi r3, 0
/* 803193E0 00315040  40 82 00 24 */	bne lbl_80319404
/* 803193E4 00315044  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803193E8 00315048  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 803193EC 0031504C  41 82 00 0C */	beq lbl_803193F8
/* 803193F0 00315050  38 00 00 00 */	li r0, 0
/* 803193F4 00315054  90 1F 16 18 */	stw r0, 0x1618(r31)
lbl_803193F8:
/* 803193F8 00315058  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803193FC 0031505C  54 00 07 FA */	rlwinm r0, r0, 0, 0x1f, 0x1d
/* 80319400 00315060  B0 1F 18 78 */	sth r0, 0x1878(r31)
lbl_80319404:
/* 80319404 00315064  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80319408 00315068  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 8031940C 0031506C  80 64 00 10 */	lwz r3, 0x10(r4)
/* 80319410 00315070  38 03 FF FF */	addi r0, r3, -1
/* 80319414 00315074  90 04 00 10 */	stw r0, 0x10(r4)
lbl_80319418:
/* 80319418 00315078  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 8031941C 0031507C  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80319420 00315080  40 82 00 38 */	bne lbl_80319458
/* 80319424 00315084  7F E3 FB 78 */	mr r3, r31
/* 80319428 00315088  4B FF FC 39 */	bl VFiPFVOL_DoMountVolume
/* 8031942C 0031508C  2C 03 00 00 */	cmpwi r3, 0
/* 80319430 00315090  41 82 00 08 */	beq lbl_80319438
/* 80319434 00315094  48 00 00 28 */	b lbl_8031945C
lbl_80319438:
/* 80319438 00315098  A0 1F 18 7C */	lhz r0, 0x187c(r31)
/* 8031943C 0031509C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80319440 003150A0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80319444 003150A4  54 00 04 38 */	rlwinm r0, r0, 0, 0x10, 0x1c
/* 80319448 003150A8  B0 1F 18 7C */	sth r0, 0x187c(r31)
/* 8031944C 003150AC  80 64 00 10 */	lwz r3, 0x10(r4)
/* 80319450 003150B0  38 03 00 01 */	addi r0, r3, 1
/* 80319454 003150B4  90 04 00 10 */	stw r0, 0x10(r4)
lbl_80319458:
/* 80319458 003150B8  38 60 00 00 */	li r3, 0
lbl_8031945C:
/* 8031945C 003150BC  2C 03 00 00 */	cmpwi r3, 0
/* 80319460 003150C0  41 82 00 90 */	beq lbl_803194F0
/* 80319464 003150C4  48 00 00 90 */	b lbl_803194F4
lbl_80319468:
/* 80319468 003150C8  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 8031946C 003150CC  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80319470 003150D0  41 82 00 80 */	beq lbl_803194F0
/* 80319474 003150D4  7F E3 FB 78 */	mr r3, r31
/* 80319478 003150D8  4B FE C9 05 */	bl VFiPFDRV_IsDetected
/* 8031947C 003150DC  2C 03 00 00 */	cmpwi r3, 0
/* 80319480 003150E0  41 82 00 64 */	beq lbl_803194E4
/* 80319484 003150E4  7F E3 FB 78 */	mr r3, r31
/* 80319488 003150E8  4B FF B8 55 */	bl VFiPFFILE_FinalizeAllFiles
/* 8031948C 003150EC  7F E3 FB 78 */	mr r3, r31
/* 80319490 003150F0  4B FF 1D A9 */	bl VFiPFDIR_FinalizeAllDirs
/* 80319494 003150F4  7F E3 FB 78 */	mr r3, r31
/* 80319498 003150F8  4B FF 17 AD */	bl VFiPFCACHE_FreeAllCaches
/* 8031949C 003150FC  7F E3 FB 78 */	mr r3, r31
/* 803194A0 00315100  38 80 00 01 */	li r4, 1
/* 803194A4 00315104  4B FE CB 69 */	bl VFiPFDRV_unmount
/* 803194A8 00315108  2C 03 00 00 */	cmpwi r3, 0
/* 803194AC 0031510C  40 82 00 24 */	bne lbl_803194D0
/* 803194B0 00315110  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803194B4 00315114  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 803194B8 00315118  41 82 00 0C */	beq lbl_803194C4
/* 803194BC 0031511C  38 00 00 00 */	li r0, 0
/* 803194C0 00315120  90 1F 16 18 */	stw r0, 0x1618(r31)
lbl_803194C4:
/* 803194C4 00315124  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803194C8 00315128  54 00 07 FA */	rlwinm r0, r0, 0, 0x1f, 0x1d
/* 803194CC 0031512C  B0 1F 18 78 */	sth r0, 0x1878(r31)
lbl_803194D0:
/* 803194D0 00315130  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803194D4 00315134  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803194D8 00315138  80 64 00 10 */	lwz r3, 0x10(r4)
/* 803194DC 0031513C  38 03 FF FF */	addi r0, r3, -1
/* 803194E0 00315140  90 04 00 10 */	stw r0, 0x10(r4)
lbl_803194E4:
/* 803194E4 00315144  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803194E8 00315148  54 00 07 FA */	rlwinm r0, r0, 0, 0x1f, 0x1d
/* 803194EC 0031514C  B0 1F 18 78 */	sth r0, 0x1878(r31)
lbl_803194F0:
/* 803194F0 00315150  38 60 00 00 */	li r3, 0
lbl_803194F4:
/* 803194F4 00315154  2C 03 00 00 */	cmpwi r3, 0
/* 803194F8 00315158  41 82 00 08 */	beq lbl_80319500
/* 803194FC 0031515C  48 00 00 18 */	b lbl_80319514
lbl_80319500:
/* 80319500 00315160  A0 7F 18 78 */	lhz r3, 0x1878(r31)
/* 80319504 00315164  38 00 00 09 */	li r0, 9
/* 80319508 00315168  54 63 FF FE */	rlwinm r3, r3, 0x1f, 0x1f, 0x1f
/* 8031950C 0031516C  7C 63 00 D0 */	neg r3, r3
/* 80319510 00315170  7C 03 18 78 */	andc r3, r0, r3
lbl_80319514:
/* 80319514 00315174  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80319518 00315178  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8031951C 0031517C  7C 08 03 A6 */	mtlr r0
/* 80319520 00315180  38 21 00 10 */	addi r1, r1, 0x10
/* 80319524 00315184  4E 80 00 20 */	blr

.global VFiPFVOL_CheckForWrite
VFiPFVOL_CheckForWrite:
/* 80319528 00315188  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8031952C 0031518C  7C 08 02 A6 */	mflr r0
/* 80319530 00315190  2C 03 00 00 */	cmpwi r3, 0
/* 80319534 00315194  90 01 00 14 */	stw r0, 0x14(r1)
/* 80319538 00315198  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8031953C 0031519C  7C 7F 1B 78 */	mr r31, r3
/* 80319540 003151A0  40 82 00 0C */	bne lbl_8031954C
/* 80319544 003151A4  38 60 00 0A */	li r3, 0xa
/* 80319548 003151A8  48 00 01 A0 */	b lbl_803196E8
lbl_8031954C:
/* 8031954C 003151AC  4B FE C8 05 */	bl VFiPFDRV_IsInserted
/* 80319550 003151B0  2C 03 00 00 */	cmpwi r3, 0
/* 80319554 003151B4  41 82 00 D0 */	beq lbl_80319624
/* 80319558 003151B8  7F E3 FB 78 */	mr r3, r31
/* 8031955C 003151BC  4B FE C8 21 */	bl VFiPFDRV_IsDetected
/* 80319560 003151C0  2C 03 00 00 */	cmpwi r3, 0
/* 80319564 003151C4  41 82 01 48 */	beq lbl_803196AC
/* 80319568 003151C8  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 8031956C 003151CC  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80319570 003151D0  41 82 00 64 */	beq lbl_803195D4
/* 80319574 003151D4  7F E3 FB 78 */	mr r3, r31
/* 80319578 003151D8  4B FF B7 65 */	bl VFiPFFILE_FinalizeAllFiles
/* 8031957C 003151DC  7F E3 FB 78 */	mr r3, r31
/* 80319580 003151E0  4B FF 1C B9 */	bl VFiPFDIR_FinalizeAllDirs
/* 80319584 003151E4  7F E3 FB 78 */	mr r3, r31
/* 80319588 003151E8  4B FF 16 BD */	bl VFiPFCACHE_FreeAllCaches
/* 8031958C 003151EC  7F E3 FB 78 */	mr r3, r31
/* 80319590 003151F0  38 80 00 01 */	li r4, 1
/* 80319594 003151F4  4B FE CA 79 */	bl VFiPFDRV_unmount
/* 80319598 003151F8  2C 03 00 00 */	cmpwi r3, 0
/* 8031959C 003151FC  40 82 00 24 */	bne lbl_803195C0
/* 803195A0 00315200  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803195A4 00315204  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 803195A8 00315208  41 82 00 0C */	beq lbl_803195B4
/* 803195AC 0031520C  38 00 00 00 */	li r0, 0
/* 803195B0 00315210  90 1F 16 18 */	stw r0, 0x1618(r31)
lbl_803195B4:
/* 803195B4 00315214  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803195B8 00315218  54 00 07 FA */	rlwinm r0, r0, 0, 0x1f, 0x1d
/* 803195BC 0031521C  B0 1F 18 78 */	sth r0, 0x1878(r31)
lbl_803195C0:
/* 803195C0 00315220  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803195C4 00315224  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803195C8 00315228  80 64 00 10 */	lwz r3, 0x10(r4)
/* 803195CC 0031522C  38 03 FF FF */	addi r0, r3, -1
/* 803195D0 00315230  90 04 00 10 */	stw r0, 0x10(r4)
lbl_803195D4:
/* 803195D4 00315234  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803195D8 00315238  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 803195DC 0031523C  40 82 00 38 */	bne lbl_80319614
/* 803195E0 00315240  7F E3 FB 78 */	mr r3, r31
/* 803195E4 00315244  4B FF FA 7D */	bl VFiPFVOL_DoMountVolume
/* 803195E8 00315248  2C 03 00 00 */	cmpwi r3, 0
/* 803195EC 0031524C  41 82 00 08 */	beq lbl_803195F4
/* 803195F0 00315250  48 00 00 28 */	b lbl_80319618
lbl_803195F4:
/* 803195F4 00315254  A0 1F 18 7C */	lhz r0, 0x187c(r31)
/* 803195F8 00315258  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803195FC 0031525C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80319600 00315260  54 00 04 38 */	rlwinm r0, r0, 0, 0x10, 0x1c
/* 80319604 00315264  B0 1F 18 7C */	sth r0, 0x187c(r31)
/* 80319608 00315268  80 64 00 10 */	lwz r3, 0x10(r4)
/* 8031960C 0031526C  38 03 00 01 */	addi r0, r3, 1
/* 80319610 00315270  90 04 00 10 */	stw r0, 0x10(r4)
lbl_80319614:
/* 80319614 00315274  38 60 00 00 */	li r3, 0
lbl_80319618:
/* 80319618 00315278  2C 03 00 00 */	cmpwi r3, 0
/* 8031961C 0031527C  41 82 00 90 */	beq lbl_803196AC
/* 80319620 00315280  48 00 00 90 */	b lbl_803196B0
lbl_80319624:
/* 80319624 00315284  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 80319628 00315288  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 8031962C 0031528C  41 82 00 80 */	beq lbl_803196AC
/* 80319630 00315290  7F E3 FB 78 */	mr r3, r31
/* 80319634 00315294  4B FE C7 49 */	bl VFiPFDRV_IsDetected
/* 80319638 00315298  2C 03 00 00 */	cmpwi r3, 0
/* 8031963C 0031529C  41 82 00 64 */	beq lbl_803196A0
/* 80319640 003152A0  7F E3 FB 78 */	mr r3, r31
/* 80319644 003152A4  4B FF B6 99 */	bl VFiPFFILE_FinalizeAllFiles
/* 80319648 003152A8  7F E3 FB 78 */	mr r3, r31
/* 8031964C 003152AC  4B FF 1B ED */	bl VFiPFDIR_FinalizeAllDirs
/* 80319650 003152B0  7F E3 FB 78 */	mr r3, r31
/* 80319654 003152B4  4B FF 15 F1 */	bl VFiPFCACHE_FreeAllCaches
/* 80319658 003152B8  7F E3 FB 78 */	mr r3, r31
/* 8031965C 003152BC  38 80 00 01 */	li r4, 1
/* 80319660 003152C0  4B FE C9 AD */	bl VFiPFDRV_unmount
/* 80319664 003152C4  2C 03 00 00 */	cmpwi r3, 0
/* 80319668 003152C8  40 82 00 24 */	bne lbl_8031968C
/* 8031966C 003152CC  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 80319670 003152D0  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80319674 003152D4  41 82 00 0C */	beq lbl_80319680
/* 80319678 003152D8  38 00 00 00 */	li r0, 0
/* 8031967C 003152DC  90 1F 16 18 */	stw r0, 0x1618(r31)
lbl_80319680:
/* 80319680 003152E0  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 80319684 003152E4  54 00 07 FA */	rlwinm r0, r0, 0, 0x1f, 0x1d
/* 80319688 003152E8  B0 1F 18 78 */	sth r0, 0x1878(r31)
lbl_8031968C:
/* 8031968C 003152EC  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80319690 003152F0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80319694 003152F4  80 64 00 10 */	lwz r3, 0x10(r4)
/* 80319698 003152F8  38 03 FF FF */	addi r0, r3, -1
/* 8031969C 003152FC  90 04 00 10 */	stw r0, 0x10(r4)
lbl_803196A0:
/* 803196A0 00315300  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803196A4 00315304  54 00 07 FA */	rlwinm r0, r0, 0, 0x1f, 0x1d
/* 803196A8 00315308  B0 1F 18 78 */	sth r0, 0x1878(r31)
lbl_803196AC:
/* 803196AC 0031530C  38 60 00 00 */	li r3, 0
lbl_803196B0:
/* 803196B0 00315310  2C 03 00 00 */	cmpwi r3, 0
/* 803196B4 00315314  41 82 00 08 */	beq lbl_803196BC
/* 803196B8 00315318  48 00 00 30 */	b lbl_803196E8
lbl_803196BC:
/* 803196BC 0031531C  A0 1F 18 78 */	lhz r0, 0x1878(r31)
/* 803196C0 00315320  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 803196C4 00315324  40 82 00 0C */	bne lbl_803196D0
/* 803196C8 00315328  38 60 00 09 */	li r3, 9
/* 803196CC 0031532C  48 00 00 1C */	b lbl_803196E8
lbl_803196D0:
/* 803196D0 00315330  7F E3 FB 78 */	mr r3, r31
/* 803196D4 00315334  4B FE C6 D5 */	bl VFiPFDRV_IsWProtected
/* 803196D8 00315338  7C 03 00 D0 */	neg r0, r3
/* 803196DC 0031533C  7C 00 1B 78 */	or r0, r0, r3
/* 803196E0 00315340  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 803196E4 00315344  70 03 00 0B */	andi. r3, r0, 0xb
lbl_803196E8:
/* 803196E8 00315348  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803196EC 0031534C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803196F0 00315350  7C 08 03 A6 */	mtlr r0
/* 803196F4 00315354  38 21 00 10 */	addi r1, r1, 0x10
/* 803196F8 00315358  4E 80 00 20 */	blr

.global VFiPFVOL_GetCurrentDir
VFiPFVOL_GetCurrentDir:
/* 803196FC 0031535C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80319700 00315360  7C 08 02 A6 */	mflr r0
/* 80319704 00315364  2C 03 00 00 */	cmpwi r3, 0
/* 80319708 00315368  90 01 00 24 */	stw r0, 0x24(r1)
/* 8031970C 0031536C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80319710 00315370  7C 9F 23 78 */	mr r31, r4
/* 80319714 00315374  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80319718 00315378  7C 7E 1B 78 */	mr r30, r3
/* 8031971C 0031537C  40 82 00 0C */	bne lbl_80319728
/* 80319720 00315380  38 60 00 0A */	li r3, 0xa
/* 80319724 00315384  48 00 01 7C */	b lbl_803198A0
lbl_80319728:
/* 80319728 00315388  A0 03 18 78 */	lhz r0, 0x1878(r3)
/* 8031972C 0031538C  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80319730 00315390  40 82 00 0C */	bne lbl_8031973C
/* 80319734 00315394  38 60 00 09 */	li r3, 9
/* 80319738 00315398  48 00 01 68 */	b lbl_803198A0
lbl_8031973C:
/* 8031973C 0031539C  38 61 00 08 */	addi r3, r1, 8
/* 80319740 003153A0  48 00 0C ED */	bl VFiPFSYS_GetCurrentContextID
/* 80319744 003153A4  80 C1 00 08 */	lwz r6, 8(r1)
/* 80319748 003153A8  38 7E 02 48 */	addi r3, r30, 0x248
/* 8031974C 003153AC  38 E0 00 01 */	li r7, 1
/* 80319750 003153B0  48 00 00 54 */	b lbl_803197A4
lbl_80319754:
/* 80319754 003153B4  80 03 16 18 */	lwz r0, 0x1618(r3)
/* 80319758 003153B8  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8031975C 003153BC  41 82 00 40 */	beq lbl_8031979C
/* 80319760 003153C0  80 03 16 1C */	lwz r0, 0x161c(r3)
/* 80319764 003153C4  7C 06 00 00 */	cmpw r6, r0
/* 80319768 003153C8  40 82 00 34 */	bne lbl_8031979C
/* 8031976C 003153CC  1C 67 02 48 */	mulli r3, r7, 0x248
/* 80319770 003153D0  38 00 00 48 */	li r0, 0x48
/* 80319774 003153D4  38 BF FF FC */	addi r5, r31, -4
/* 80319778 003153D8  7C 7E 1A 14 */	add r3, r30, r3
/* 8031977C 003153DC  38 83 16 1C */	addi r4, r3, 0x161c
/* 80319780 003153E0  7C 09 03 A6 */	mtctr r0
lbl_80319784:
/* 80319784 003153E4  80 64 00 04 */	lwz r3, 4(r4)
/* 80319788 003153E8  84 04 00 08 */	lwzu r0, 8(r4)
/* 8031978C 003153EC  90 65 00 04 */	stw r3, 4(r5)
/* 80319790 003153F0  94 05 00 08 */	stwu r0, 8(r5)
/* 80319794 003153F4  42 00 FF F0 */	bdnz lbl_80319784
/* 80319798 003153F8  48 00 00 14 */	b lbl_803197AC
lbl_8031979C:
/* 8031979C 003153FC  38 63 02 48 */	addi r3, r3, 0x248
/* 803197A0 00315400  38 E7 00 01 */	addi r7, r7, 1
lbl_803197A4:
/* 803197A4 00315404  28 07 00 01 */	cmplwi r7, 1
/* 803197A8 00315408  41 80 FF AC */	blt lbl_80319754
lbl_803197AC:
/* 803197AC 0031540C  28 07 00 01 */	cmplwi r7, 1
/* 803197B0 00315410  40 82 00 EC */	bne lbl_8031989C
/* 803197B4 00315414  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 803197B8 00315418  38 80 00 01 */	li r4, 1
/* 803197BC 0031541C  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 803197C0 00315420  38 63 00 08 */	addi r3, r3, 8
/* 803197C4 00315424  48 00 00 30 */	b lbl_803197F4
lbl_803197C8:
/* 803197C8 00315428  80 03 00 40 */	lwz r0, 0x40(r3)
/* 803197CC 0031542C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 803197D0 00315430  90 03 00 40 */	stw r0, 0x40(r3)
/* 803197D4 00315434  41 82 00 18 */	beq lbl_803197EC
/* 803197D8 00315438  80 03 00 44 */	lwz r0, 0x44(r3)
/* 803197DC 0031543C  7C 06 00 00 */	cmpw r6, r0
/* 803197E0 00315440  40 82 00 0C */	bne lbl_803197EC
/* 803197E4 00315444  38 00 00 01 */	li r0, 1
/* 803197E8 00315448  48 00 00 18 */	b lbl_80319800
lbl_803197EC:
/* 803197EC 0031544C  38 63 00 08 */	addi r3, r3, 8
/* 803197F0 00315450  38 84 00 01 */	addi r4, r4, 1
lbl_803197F4:
/* 803197F4 00315454  28 04 00 01 */	cmplwi r4, 1
/* 803197F8 00315458  41 80 FF D0 */	blt lbl_803197C8
/* 803197FC 0031545C  38 00 00 00 */	li r0, 0
lbl_80319800:
/* 80319800 00315460  2C 00 00 00 */	cmpwi r0, 0
/* 80319804 00315464  41 82 00 74 */	beq lbl_80319878
/* 80319808 00315468  38 7E 02 48 */	addi r3, r30, 0x248
/* 8031980C 0031546C  38 80 00 01 */	li r4, 1
/* 80319810 00315470  48 00 00 5C */	b lbl_8031986C
lbl_80319814:
/* 80319814 00315474  80 03 16 18 */	lwz r0, 0x1618(r3)
/* 80319818 00315478  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8031981C 0031547C  40 82 00 48 */	bne lbl_80319864
/* 80319820 00315480  1C 64 02 48 */	mulli r3, r4, 0x248
/* 80319824 00315484  38 00 00 48 */	li r0, 0x48
/* 80319828 00315488  38 BF FF FC */	addi r5, r31, -4
/* 8031982C 0031548C  7C DE 1A 14 */	add r6, r30, r3
/* 80319830 00315490  80 66 16 18 */	lwz r3, 0x1618(r6)
/* 80319834 00315494  38 86 16 1C */	addi r4, r6, 0x161c
/* 80319838 00315498  60 63 00 01 */	ori r3, r3, 1
/* 8031983C 0031549C  90 66 16 18 */	stw r3, 0x1618(r6)
/* 80319840 003154A0  80 61 00 08 */	lwz r3, 8(r1)
/* 80319844 003154A4  90 66 16 1C */	stw r3, 0x161c(r6)
/* 80319848 003154A8  7C 09 03 A6 */	mtctr r0
lbl_8031984C:
/* 8031984C 003154AC  80 64 00 04 */	lwz r3, 4(r4)
/* 80319850 003154B0  84 04 00 08 */	lwzu r0, 8(r4)
/* 80319854 003154B4  90 65 00 04 */	stw r3, 4(r5)
/* 80319858 003154B8  94 05 00 08 */	stwu r0, 8(r5)
/* 8031985C 003154BC  42 00 FF F0 */	bdnz lbl_8031984C
/* 80319860 003154C0  48 00 00 3C */	b lbl_8031989C
lbl_80319864:
/* 80319864 003154C4  38 63 02 48 */	addi r3, r3, 0x248
/* 80319868 003154C8  38 84 00 01 */	addi r4, r4, 1
lbl_8031986C:
/* 8031986C 003154CC  28 04 00 01 */	cmplwi r4, 1
/* 80319870 003154D0  41 80 FF A4 */	blt lbl_80319814
/* 80319874 003154D4  48 00 00 28 */	b lbl_8031989C
lbl_80319878:
/* 80319878 003154D8  38 00 00 48 */	li r0, 0x48
/* 8031987C 003154DC  38 BF FF FC */	addi r5, r31, -4
/* 80319880 003154E0  38 9E 16 1C */	addi r4, r30, 0x161c
/* 80319884 003154E4  7C 09 03 A6 */	mtctr r0
lbl_80319888:
/* 80319888 003154E8  80 64 00 04 */	lwz r3, 4(r4)
/* 8031988C 003154EC  84 04 00 08 */	lwzu r0, 8(r4)
/* 80319890 003154F0  90 65 00 04 */	stw r3, 4(r5)
/* 80319894 003154F4  94 05 00 08 */	stwu r0, 8(r5)
/* 80319898 003154F8  42 00 FF F0 */	bdnz lbl_80319888
lbl_8031989C:
/* 8031989C 003154FC  38 60 00 00 */	li r3, 0
lbl_803198A0:
/* 803198A0 00315500  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803198A4 00315504  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 803198A8 00315508  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 803198AC 0031550C  7C 08 03 A6 */	mtlr r0
/* 803198B0 00315510  38 21 00 20 */	addi r1, r1, 0x20
/* 803198B4 00315514  4E 80 00 20 */	blr

.global VFiPFVOL_SetCurrentVolume
VFiPFVOL_SetCurrentVolume:
/* 803198B8 00315518  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 803198BC 0031551C  7C 08 02 A6 */	mflr r0
/* 803198C0 00315520  90 01 00 24 */	stw r0, 0x24(r1)
/* 803198C4 00315524  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 803198C8 00315528  7C 7F 1B 78 */	mr r31, r3
/* 803198CC 0031552C  38 61 00 08 */	addi r3, r1, 8
/* 803198D0 00315530  48 00 0B 5D */	bl VFiPFSYS_GetCurrentContextID
/* 803198D4 00315534  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 803198D8 00315538  80 A1 00 08 */	lwz r5, 8(r1)
/* 803198DC 0031553C  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 803198E0 00315540  38 80 00 01 */	li r4, 1
/* 803198E4 00315544  38 63 00 0C */	addi r3, r3, 0xc
/* 803198E8 00315548  48 00 00 3C */	b lbl_80319924
lbl_803198EC:
/* 803198EC 0031554C  80 03 00 00 */	lwz r0, 0(r3)
/* 803198F0 00315550  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 803198F4 00315554  41 82 00 28 */	beq lbl_8031991C
/* 803198F8 00315558  80 03 00 04 */	lwz r0, 4(r3)
/* 803198FC 0031555C  7C 05 00 00 */	cmpw r5, r0
/* 80319900 00315560  40 82 00 1C */	bne lbl_8031991C
/* 80319904 00315564  1C 04 00 0C */	mulli r0, r4, 0xc
/* 80319908 00315568  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 8031990C 0031556C  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319910 00315570  7C 63 02 14 */	add r3, r3, r0
/* 80319914 00315574  93 E3 00 08 */	stw r31, 8(r3)
/* 80319918 00315578  48 00 00 14 */	b lbl_8031992C
lbl_8031991C:
/* 8031991C 0031557C  38 63 00 0C */	addi r3, r3, 0xc
/* 80319920 00315580  38 84 00 01 */	addi r4, r4, 1
lbl_80319924:
/* 80319924 00315584  28 04 00 01 */	cmplwi r4, 1
/* 80319928 00315588  41 80 FF C4 */	blt lbl_803198EC
lbl_8031992C:
/* 8031992C 0031558C  28 04 00 01 */	cmplwi r4, 1
/* 80319930 00315590  40 82 00 B4 */	bne lbl_803199E4
/* 80319934 00315594  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80319938 00315598  38 80 00 01 */	li r4, 1
/* 8031993C 0031559C  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319940 003155A0  38 63 00 08 */	addi r3, r3, 8
/* 80319944 003155A4  48 00 00 30 */	b lbl_80319974
lbl_80319948:
/* 80319948 003155A8  80 03 00 40 */	lwz r0, 0x40(r3)
/* 8031994C 003155AC  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80319950 003155B0  90 03 00 40 */	stw r0, 0x40(r3)
/* 80319954 003155B4  41 82 00 18 */	beq lbl_8031996C
/* 80319958 003155B8  80 03 00 44 */	lwz r0, 0x44(r3)
/* 8031995C 003155BC  7C 05 00 00 */	cmpw r5, r0
/* 80319960 003155C0  40 82 00 0C */	bne lbl_8031996C
/* 80319964 003155C4  38 00 00 01 */	li r0, 1
/* 80319968 003155C8  48 00 00 18 */	b lbl_80319980
lbl_8031996C:
/* 8031996C 003155CC  38 63 00 08 */	addi r3, r3, 8
/* 80319970 003155D0  38 84 00 01 */	addi r4, r4, 1
lbl_80319974:
/* 80319974 003155D4  28 04 00 01 */	cmplwi r4, 1
/* 80319978 003155D8  41 80 FF D0 */	blt lbl_80319948
/* 8031997C 003155DC  38 00 00 00 */	li r0, 0
lbl_80319980:
/* 80319980 003155E0  2C 00 00 00 */	cmpwi r0, 0
/* 80319984 003155E4  41 82 00 60 */	beq lbl_803199E4
/* 80319988 003155E8  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 8031998C 003155EC  38 80 00 01 */	li r4, 1
/* 80319990 003155F0  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319994 003155F4  38 63 00 0C */	addi r3, r3, 0xc
/* 80319998 003155F8  48 00 00 44 */	b lbl_803199DC
lbl_8031999C:
/* 8031999C 003155FC  80 03 00 00 */	lwz r0, 0(r3)
/* 803199A0 00315600  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 803199A4 00315604  40 82 00 30 */	bne lbl_803199D4
/* 803199A8 00315608  1C C4 00 0C */	mulli r6, r4, 0xc
/* 803199AC 0031560C  3C A0 80 58 */	lis r5, lbl_8057F5C8@ha
/* 803199B0 00315610  80 01 00 08 */	lwz r0, 8(r1)
/* 803199B4 00315614  38 A5 F5 C8 */	addi r5, r5, lbl_8057F5C8@l
/* 803199B8 00315618  7C 85 30 2E */	lwzx r4, r5, r6
/* 803199BC 0031561C  7C 65 32 14 */	add r3, r5, r6
/* 803199C0 00315620  60 84 00 01 */	ori r4, r4, 1
/* 803199C4 00315624  7C 85 31 2E */	stwx r4, r5, r6
/* 803199C8 00315628  90 03 00 04 */	stw r0, 4(r3)
/* 803199CC 0031562C  93 E3 00 08 */	stw r31, 8(r3)
/* 803199D0 00315630  48 00 00 14 */	b lbl_803199E4
lbl_803199D4:
/* 803199D4 00315634  38 63 00 0C */	addi r3, r3, 0xc
/* 803199D8 00315638  38 84 00 01 */	addi r4, r4, 1
lbl_803199DC:
/* 803199DC 0031563C  28 04 00 01 */	cmplwi r4, 1
/* 803199E0 00315640  41 80 FF BC */	blt lbl_8031999C
lbl_803199E4:
/* 803199E4 00315644  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 803199E8 00315648  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 803199EC 0031564C  93 E3 00 08 */	stw r31, 8(r3)
/* 803199F0 00315650  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 803199F4 00315654  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803199F8 00315658  7C 08 03 A6 */	mtlr r0
/* 803199FC 0031565C  38 21 00 20 */	addi r1, r1, 0x20
/* 80319A00 00315660  4E 80 00 20 */	blr

.global VFiPFVOL_GetCurrentVolume
VFiPFVOL_GetCurrentVolume:
/* 80319A04 00315664  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80319A08 00315668  7C 08 02 A6 */	mflr r0
/* 80319A0C 0031566C  90 01 00 24 */	stw r0, 0x24(r1)
/* 80319A10 00315670  38 61 00 08 */	addi r3, r1, 8
/* 80319A14 00315674  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80319A18 00315678  3B E0 00 00 */	li r31, 0
/* 80319A1C 0031567C  48 00 0A 11 */	bl VFiPFSYS_GetCurrentContextID
/* 80319A20 00315680  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80319A24 00315684  80 A1 00 08 */	lwz r5, 8(r1)
/* 80319A28 00315688  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319A2C 0031568C  38 80 00 01 */	li r4, 1
/* 80319A30 00315690  38 63 00 0C */	addi r3, r3, 0xc
/* 80319A34 00315694  48 00 00 3C */	b lbl_80319A70
lbl_80319A38:
/* 80319A38 00315698  80 03 00 00 */	lwz r0, 0(r3)
/* 80319A3C 0031569C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80319A40 003156A0  41 82 00 28 */	beq lbl_80319A68
/* 80319A44 003156A4  80 03 00 04 */	lwz r0, 4(r3)
/* 80319A48 003156A8  7C 05 00 00 */	cmpw r5, r0
/* 80319A4C 003156AC  40 82 00 1C */	bne lbl_80319A68
/* 80319A50 003156B0  1C 04 00 0C */	mulli r0, r4, 0xc
/* 80319A54 003156B4  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80319A58 003156B8  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319A5C 003156BC  7C 63 02 14 */	add r3, r3, r0
/* 80319A60 003156C0  83 E3 00 08 */	lwz r31, 8(r3)
/* 80319A64 003156C4  48 00 00 14 */	b lbl_80319A78
lbl_80319A68:
/* 80319A68 003156C8  38 63 00 0C */	addi r3, r3, 0xc
/* 80319A6C 003156CC  38 84 00 01 */	addi r4, r4, 1
lbl_80319A70:
/* 80319A70 003156D0  28 04 00 01 */	cmplwi r4, 1
/* 80319A74 003156D4  41 80 FF C4 */	blt lbl_80319A38
lbl_80319A78:
/* 80319A78 003156D8  28 04 00 01 */	cmplwi r4, 1
/* 80319A7C 003156DC  40 82 00 C4 */	bne lbl_80319B40
/* 80319A80 003156E0  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80319A84 003156E4  38 80 00 01 */	li r4, 1
/* 80319A88 003156E8  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319A8C 003156EC  38 63 00 08 */	addi r3, r3, 8
/* 80319A90 003156F0  48 00 00 30 */	b lbl_80319AC0
lbl_80319A94:
/* 80319A94 003156F4  80 03 00 40 */	lwz r0, 0x40(r3)
/* 80319A98 003156F8  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80319A9C 003156FC  90 03 00 40 */	stw r0, 0x40(r3)
/* 80319AA0 00315700  41 82 00 18 */	beq lbl_80319AB8
/* 80319AA4 00315704  80 03 00 44 */	lwz r0, 0x44(r3)
/* 80319AA8 00315708  7C 05 00 00 */	cmpw r5, r0
/* 80319AAC 0031570C  40 82 00 0C */	bne lbl_80319AB8
/* 80319AB0 00315710  38 00 00 01 */	li r0, 1
/* 80319AB4 00315714  48 00 00 18 */	b lbl_80319ACC
lbl_80319AB8:
/* 80319AB8 00315718  38 63 00 08 */	addi r3, r3, 8
/* 80319ABC 0031571C  38 84 00 01 */	addi r4, r4, 1
lbl_80319AC0:
/* 80319AC0 00315720  28 04 00 01 */	cmplwi r4, 1
/* 80319AC4 00315724  41 80 FF D0 */	blt lbl_80319A94
/* 80319AC8 00315728  38 00 00 00 */	li r0, 0
lbl_80319ACC:
/* 80319ACC 0031572C  2C 00 00 00 */	cmpwi r0, 0
/* 80319AD0 00315730  41 82 00 64 */	beq lbl_80319B34
/* 80319AD4 00315734  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80319AD8 00315738  38 80 00 01 */	li r4, 1
/* 80319ADC 0031573C  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319AE0 00315740  38 63 00 0C */	addi r3, r3, 0xc
/* 80319AE4 00315744  48 00 00 44 */	b lbl_80319B28
lbl_80319AE8:
/* 80319AE8 00315748  80 03 00 00 */	lwz r0, 0(r3)
/* 80319AEC 0031574C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80319AF0 00315750  40 82 00 30 */	bne lbl_80319B20
/* 80319AF4 00315754  1C C4 00 0C */	mulli r6, r4, 0xc
/* 80319AF8 00315758  3C A0 80 58 */	lis r5, lbl_8057F5C8@ha
/* 80319AFC 0031575C  80 01 00 08 */	lwz r0, 8(r1)
/* 80319B00 00315760  38 A5 F5 C8 */	addi r5, r5, lbl_8057F5C8@l
/* 80319B04 00315764  7C 85 30 2E */	lwzx r4, r5, r6
/* 80319B08 00315768  7C 65 32 14 */	add r3, r5, r6
/* 80319B0C 0031576C  60 84 00 01 */	ori r4, r4, 1
/* 80319B10 00315770  7C 85 31 2E */	stwx r4, r5, r6
/* 80319B14 00315774  90 03 00 04 */	stw r0, 4(r3)
/* 80319B18 00315778  83 E3 00 08 */	lwz r31, 8(r3)
/* 80319B1C 0031577C  48 00 00 24 */	b lbl_80319B40
lbl_80319B20:
/* 80319B20 00315780  38 63 00 0C */	addi r3, r3, 0xc
/* 80319B24 00315784  38 84 00 01 */	addi r4, r4, 1
lbl_80319B28:
/* 80319B28 00315788  28 04 00 01 */	cmplwi r4, 1
/* 80319B2C 0031578C  41 80 FF BC */	blt lbl_80319AE8
/* 80319B30 00315790  48 00 00 10 */	b lbl_80319B40
lbl_80319B34:
/* 80319B34 00315794  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80319B38 00315798  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319B3C 0031579C  83 E3 00 08 */	lwz r31, 8(r3)
lbl_80319B40:
/* 80319B40 003157A0  7F E3 FB 78 */	mr r3, r31
/* 80319B44 003157A4  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80319B48 003157A8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80319B4C 003157AC  7C 08 03 A6 */	mtlr r0
/* 80319B50 003157B0  38 21 00 20 */	addi r1, r1, 0x20
/* 80319B54 003157B4  4E 80 00 20 */	blr

.global VFiPFVOL_GetVolumeFromDrvChar
VFiPFVOL_GetVolumeFromDrvChar:
/* 80319B58 003157B8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80319B5C 003157BC  7C 08 02 A6 */	mflr r0
/* 80319B60 003157C0  7C 63 07 74 */	extsb r3, r3
/* 80319B64 003157C4  90 01 00 14 */	stw r0, 0x14(r1)
/* 80319B68 003157C8  4B FE B3 2D */	bl VFipf_toupper
/* 80319B6C 003157CC  38 03 FF BF */	addi r0, r3, -65
/* 80319B70 003157D0  7C 00 07 35 */	extsh. r0, r0
/* 80319B74 003157D4  41 80 00 0C */	blt lbl_80319B80
/* 80319B78 003157D8  2C 00 00 1A */	cmpwi r0, 0x1a
/* 80319B7C 003157DC  41 80 00 0C */	blt lbl_80319B88
lbl_80319B80:
/* 80319B80 003157E0  38 60 00 00 */	li r3, 0
/* 80319B84 003157E4  48 00 00 18 */	b lbl_80319B9C
lbl_80319B88:
/* 80319B88 003157E8  1C 00 18 98 */	mulli r0, r0, 0x1898
/* 80319B8C 003157EC  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80319B90 003157F0  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319B94 003157F4  7C 63 02 14 */	add r3, r3, r0
/* 80319B98 003157F8  38 63 00 48 */	addi r3, r3, 0x48
lbl_80319B9C:
/* 80319B9C 003157FC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80319BA0 00315800  7C 08 03 A6 */	mtlr r0
/* 80319BA4 00315804  38 21 00 10 */	addi r1, r1, 0x10
/* 80319BA8 00315808  4E 80 00 20 */	blr

.global VFiPFVOL_LoadVolumeLabelFromBuf
VFiPFVOL_LoadVolumeLabelFromBuf:
/* 80319BAC 0031580C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80319BB0 00315810  7C 08 02 A6 */	mflr r0
/* 80319BB4 00315814  38 A0 00 0B */	li r5, 0xb
/* 80319BB8 00315818  90 01 00 14 */	stw r0, 0x14(r1)
/* 80319BBC 0031581C  7C 60 1B 78 */	mr r0, r3
/* 80319BC0 00315820  38 64 16 0C */	addi r3, r4, 0x160c
/* 80319BC4 00315824  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80319BC8 00315828  7C 9F 23 78 */	mr r31, r4
/* 80319BCC 0031582C  7C 04 03 78 */	mr r4, r0
/* 80319BD0 00315830  4B FE B2 DD */	bl VFipf_memcpy
/* 80319BD4 00315834  38 00 00 00 */	li r0, 0
/* 80319BD8 00315838  98 1F 16 17 */	stb r0, 0x1617(r31)
/* 80319BDC 0031583C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80319BE0 00315840  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80319BE4 00315844  7C 08 03 A6 */	mtlr r0
/* 80319BE8 00315848  38 21 00 10 */	addi r1, r1, 0x10
/* 80319BEC 0031584C  4E 80 00 20 */	blr

.global VFiPFVOL_errnum
VFiPFVOL_errnum:
/* 80319BF0 00315850  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80319BF4 00315854  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80319BF8 00315858  80 63 00 1C */	lwz r3, 0x1c(r3)
/* 80319BFC 0031585C  4E 80 00 20 */	blr