summaryrefslogtreecommitdiff
path: root/asm/SDK/VF/d_vf_sys.s
blob: 824a774c9e91bb644a7274f06d2ef889035e7fdc (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
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
.include "macros.inc"

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

.global VFSysSetLastError
VFSysSetLastError:
/* 8031AA6C 003166CC  2C 03 00 00 */	cmpwi r3, 0
/* 8031AA70 003166D0  4D 82 00 20 */	beqlr
/* 8031AA74 003166D4  90 6D AF F4 */	stw r3, lbl_806402B4-_SDA_BASE_(r13)
/* 8031AA78 003166D8  4E 80 00 20 */	blr

.global VFSysGetHandleP
VFSysGetHandleP:
/* 8031AA7C 003166DC  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031AA80 003166E0  7C 03 00 40 */	cmplw r3, r0
/* 8031AA84 003166E4  40 80 00 1C */	bge lbl_8031AAA0
/* 8031AA88 003166E8  80 8D B0 00 */	lwz r4, lbl_806402C0-_SDA_BASE_(r13)
/* 8031AA8C 003166EC  2C 04 00 00 */	cmpwi r4, 0
/* 8031AA90 003166F0  41 82 00 10 */	beq lbl_8031AAA0
/* 8031AA94 003166F4  1C 03 01 40 */	mulli r0, r3, 0x140
/* 8031AA98 003166F8  7C 64 02 14 */	add r3, r4, r0
/* 8031AA9C 003166FC  4E 80 00 20 */	blr
lbl_8031AAA0:
/* 8031AAA0 00316700  38 60 00 00 */	li r3, 0
/* 8031AAA4 00316704  4E 80 00 20 */	blr

.global VFSysHandleP2Idx
VFSysHandleP2Idx:
/* 8031AAA8 00316708  2C 03 00 00 */	cmpwi r3, 0
/* 8031AAAC 0031670C  41 82 00 54 */	beq lbl_8031AB00
/* 8031AAB0 00316710  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031AAB4 00316714  2C 00 00 00 */	cmpwi r0, 0
/* 8031AAB8 00316718  41 82 00 14 */	beq lbl_8031AACC
/* 8031AABC 0031671C  80 8D B0 00 */	lwz r4, lbl_806402C0-_SDA_BASE_(r13)
/* 8031AAC0 00316720  2C 04 00 00 */	cmpwi r4, 0
/* 8031AAC4 00316724  41 82 00 08 */	beq lbl_8031AACC
/* 8031AAC8 00316728  48 00 00 08 */	b lbl_8031AAD0
lbl_8031AACC:
/* 8031AACC 0031672C  38 80 00 00 */	li r4, 0
lbl_8031AAD0:
/* 8031AAD0 00316730  1C 00 01 40 */	mulli r0, r0, 0x140
/* 8031AAD4 00316734  38 A0 00 00 */	li r5, 0
/* 8031AAD8 00316738  7C 04 02 14 */	add r0, r4, r0
/* 8031AADC 0031673C  48 00 00 1C */	b lbl_8031AAF8
lbl_8031AAE0:
/* 8031AAE0 00316740  7C 03 20 40 */	cmplw r3, r4
/* 8031AAE4 00316744  40 82 00 0C */	bne lbl_8031AAF0
/* 8031AAE8 00316748  7C A3 2B 78 */	mr r3, r5
/* 8031AAEC 0031674C  4E 80 00 20 */	blr
lbl_8031AAF0:
/* 8031AAF0 00316750  38 84 01 40 */	addi r4, r4, 0x140
/* 8031AAF4 00316754  38 A5 00 01 */	addi r5, r5, 1
lbl_8031AAF8:
/* 8031AAF8 00316758  7C 04 00 40 */	cmplw r4, r0
/* 8031AAFC 0031675C  40 82 FF E4 */	bne lbl_8031AAE0
lbl_8031AB00:
/* 8031AB00 00316760  38 60 FF FF */	li r3, -1
/* 8031AB04 00316764  4E 80 00 20 */	blr

.global VFSysVol2HandleP
VFSysVol2HandleP:
/* 8031AB08 00316768  2C 03 00 00 */	cmpwi r3, 0
/* 8031AB0C 0031676C  41 82 00 68 */	beq lbl_8031AB74
/* 8031AB10 00316770  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031AB14 00316774  2C 00 00 00 */	cmpwi r0, 0
/* 8031AB18 00316778  41 82 00 14 */	beq lbl_8031AB2C
/* 8031AB1C 0031677C  80 AD B0 00 */	lwz r5, lbl_806402C0-_SDA_BASE_(r13)
/* 8031AB20 00316780  2C 05 00 00 */	cmpwi r5, 0
/* 8031AB24 00316784  41 82 00 08 */	beq lbl_8031AB2C
/* 8031AB28 00316788  48 00 00 08 */	b lbl_8031AB30
lbl_8031AB2C:
/* 8031AB2C 0031678C  38 A0 00 00 */	li r5, 0
lbl_8031AB30:
/* 8031AB30 00316790  1C 00 01 40 */	mulli r0, r0, 0x140
/* 8031AB34 00316794  7C C5 02 14 */	add r6, r5, r0
/* 8031AB38 00316798  48 00 00 34 */	b lbl_8031AB6C
lbl_8031AB3C:
/* 8031AB3C 0031679C  80 05 00 00 */	lwz r0, 0(r5)
/* 8031AB40 003167A0  2C 00 00 00 */	cmpwi r0, 0
/* 8031AB44 003167A4  41 82 00 24 */	beq lbl_8031AB68
/* 8031AB48 003167A8  88 85 00 14 */	lbz r4, 0x14(r5)
/* 8031AB4C 003167AC  88 03 18 7A */	lbz r0, 0x187a(r3)
/* 8031AB50 003167B0  7C 84 07 74 */	extsb r4, r4
/* 8031AB54 003167B4  7C 00 07 74 */	extsb r0, r0
/* 8031AB58 003167B8  7C 04 00 00 */	cmpw r4, r0
/* 8031AB5C 003167BC  40 82 00 0C */	bne lbl_8031AB68
/* 8031AB60 003167C0  7C A3 2B 78 */	mr r3, r5
/* 8031AB64 003167C4  4E 80 00 20 */	blr
lbl_8031AB68:
/* 8031AB68 003167C8  38 A5 01 40 */	addi r5, r5, 0x140
lbl_8031AB6C:
/* 8031AB6C 003167CC  7C 05 30 40 */	cmplw r5, r6
/* 8031AB70 003167D0  40 82 FF CC */	bne lbl_8031AB3C
lbl_8031AB74:
/* 8031AB74 003167D4  38 60 00 00 */	li r3, 0
/* 8031AB78 003167D8  4E 80 00 20 */	blr

.global VFSysPDMDisk2HandleIdx
VFSysPDMDisk2HandleIdx:
/* 8031AB7C 003167DC  2C 03 00 00 */	cmpwi r3, 0
/* 8031AB80 003167E0  38 80 FF FF */	li r4, -1
/* 8031AB84 003167E4  41 82 00 54 */	beq lbl_8031ABD8
/* 8031AB88 003167E8  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031AB8C 003167EC  2C 00 00 00 */	cmpwi r0, 0
/* 8031AB90 003167F0  41 82 00 14 */	beq lbl_8031ABA4
/* 8031AB94 003167F4  80 AD B0 00 */	lwz r5, lbl_806402C0-_SDA_BASE_(r13)
/* 8031AB98 003167F8  2C 05 00 00 */	cmpwi r5, 0
/* 8031AB9C 003167FC  41 82 00 08 */	beq lbl_8031ABA4
/* 8031ABA0 00316800  48 00 00 08 */	b lbl_8031ABA8
lbl_8031ABA4:
/* 8031ABA4 00316804  38 A0 00 00 */	li r5, 0
lbl_8031ABA8:
/* 8031ABA8 00316808  38 C0 00 00 */	li r6, 0
/* 8031ABAC 0031680C  7C 09 03 A6 */	mtctr r0
/* 8031ABB0 00316810  28 00 00 00 */	cmplwi r0, 0
/* 8031ABB4 00316814  40 81 00 24 */	ble lbl_8031ABD8
lbl_8031ABB8:
/* 8031ABB8 00316818  80 05 00 08 */	lwz r0, 8(r5)
/* 8031ABBC 0031681C  7C 03 00 40 */	cmplw r3, r0
/* 8031ABC0 00316820  40 82 00 0C */	bne lbl_8031ABCC
/* 8031ABC4 00316824  7C C4 33 78 */	mr r4, r6
/* 8031ABC8 00316828  48 00 00 10 */	b lbl_8031ABD8
lbl_8031ABCC:
/* 8031ABCC 0031682C  38 A5 01 40 */	addi r5, r5, 0x140
/* 8031ABD0 00316830  38 C6 00 01 */	addi r6, r6, 1
/* 8031ABD4 00316834  42 00 FF E4 */	bdnz lbl_8031ABB8
lbl_8031ABD8:
/* 8031ABD8 00316838  7C 83 23 78 */	mr r3, r4
/* 8031ABDC 0031683C  4E 80 00 20 */	blr

.global VFSysGetDriveP
VFSysGetDriveP:
/* 8031ABE0 00316840  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031ABE4 00316844  7C 03 00 40 */	cmplw r3, r0
/* 8031ABE8 00316848  40 80 00 1C */	bge lbl_8031AC04
/* 8031ABEC 0031684C  80 8D B0 00 */	lwz r4, lbl_806402C0-_SDA_BASE_(r13)
/* 8031ABF0 00316850  2C 04 00 00 */	cmpwi r4, 0
/* 8031ABF4 00316854  41 82 00 10 */	beq lbl_8031AC04
/* 8031ABF8 00316858  1C 03 01 40 */	mulli r0, r3, 0x140
/* 8031ABFC 0031685C  7C 64 02 14 */	add r3, r4, r0
/* 8031AC00 00316860  48 00 00 08 */	b lbl_8031AC08
lbl_8031AC04:
/* 8031AC04 00316864  38 60 00 00 */	li r3, 0
lbl_8031AC08:
/* 8031AC08 00316868  2C 03 00 00 */	cmpwi r3, 0
/* 8031AC0C 0031686C  41 82 00 0C */	beq lbl_8031AC18
/* 8031AC10 00316870  38 63 00 04 */	addi r3, r3, 4
/* 8031AC14 00316874  4E 80 00 20 */	blr
lbl_8031AC18:
/* 8031AC18 00316878  38 60 00 00 */	li r3, 0
/* 8031AC1C 0031687C  4E 80 00 20 */	blr

.global VFSysInit
VFSysInit:
/* 8031AC20 00316880  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8031AC24 00316884  7C 08 02 A6 */	mflr r0
/* 8031AC28 00316888  2C 03 00 00 */	cmpwi r3, 0
/* 8031AC2C 0031688C  90 01 00 24 */	stw r0, 0x24(r1)
/* 8031AC30 00316890  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8031AC34 00316894  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8031AC38 00316898  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8031AC3C 0031689C  54 9D 93 BE */	srwi r29, r4, 0xe
/* 8031AC40 003168A0  41 82 00 24 */	beq lbl_8031AC64
/* 8031AC44 003168A4  2C 04 00 00 */	cmpwi r4, 0
/* 8031AC48 003168A8  41 82 00 1C */	beq lbl_8031AC64
/* 8031AC4C 003168AC  80 0D AF F8 */	lwz r0, lbl_806402B8-_SDA_BASE_(r13)
/* 8031AC50 003168B0  2C 00 00 00 */	cmpwi r0, 0
/* 8031AC54 003168B4  40 82 00 10 */	bne lbl_8031AC64
/* 8031AC58 003168B8  38 A0 00 00 */	li r5, 0
/* 8031AC5C 003168BC  4B F7 C1 ED */	bl MEMCreateExpHeapEx
/* 8031AC60 003168C0  90 6D AF F8 */	stw r3, lbl_806402B8-_SDA_BASE_(r13)
lbl_8031AC64:
/* 8031AC64 003168C4  28 1D 00 1A */	cmplwi r29, 0x1a
/* 8031AC68 003168C8  38 80 00 1A */	li r4, 0x1a
/* 8031AC6C 003168CC  41 81 00 08 */	bgt lbl_8031AC74
/* 8031AC70 003168D0  7F A4 EB 78 */	mr r4, r29
lbl_8031AC74:
/* 8031AC74 003168D4  80 0D B0 00 */	lwz r0, lbl_806402C0-_SDA_BASE_(r13)
/* 8031AC78 003168D8  90 8D AF F0 */	stw r4, lbl_806402B0-_SDA_BASE_(r13)
/* 8031AC7C 003168DC  2C 00 00 00 */	cmpwi r0, 0
/* 8031AC80 003168E0  40 82 00 28 */	bne lbl_8031ACA8
/* 8031AC84 003168E4  80 6D AF F8 */	lwz r3, lbl_806402B8-_SDA_BASE_(r13)
/* 8031AC88 003168E8  2C 03 00 00 */	cmpwi r3, 0
/* 8031AC8C 003168EC  40 82 00 0C */	bne lbl_8031AC98
/* 8031AC90 003168F0  38 60 00 00 */	li r3, 0
/* 8031AC94 003168F4  48 00 00 10 */	b lbl_8031ACA4
lbl_8031AC98:
/* 8031AC98 003168F8  1C 84 01 40 */	mulli r4, r4, 0x140
/* 8031AC9C 003168FC  38 A0 00 20 */	li r5, 0x20
/* 8031ACA0 00316900  4B F7 C2 89 */	bl MEMAllocFromExpHeapEx
lbl_8031ACA4:
/* 8031ACA4 00316904  90 6D B0 00 */	stw r3, lbl_806402C0-_SDA_BASE_(r13)
lbl_8031ACA8:
/* 8031ACA8 00316908  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031ACAC 0031690C  2C 00 00 00 */	cmpwi r0, 0
/* 8031ACB0 00316910  41 82 00 14 */	beq lbl_8031ACC4
/* 8031ACB4 00316914  83 AD B0 00 */	lwz r29, lbl_806402C0-_SDA_BASE_(r13)
/* 8031ACB8 00316918  2C 1D 00 00 */	cmpwi r29, 0
/* 8031ACBC 0031691C  41 82 00 08 */	beq lbl_8031ACC4
/* 8031ACC0 00316920  48 00 00 08 */	b lbl_8031ACC8
lbl_8031ACC4:
/* 8031ACC4 00316924  3B A0 00 00 */	li r29, 0
lbl_8031ACC8:
/* 8031ACC8 00316928  1C 00 01 40 */	mulli r0, r0, 0x140
/* 8031ACCC 0031692C  3B E0 00 00 */	li r31, 0
/* 8031ACD0 00316930  7F DD 02 14 */	add r30, r29, r0
/* 8031ACD4 00316934  48 00 00 30 */	b lbl_8031AD04
lbl_8031ACD8:
/* 8031ACD8 00316938  7F A3 EB 78 */	mr r3, r29
/* 8031ACDC 0031693C  38 80 00 00 */	li r4, 0
/* 8031ACE0 00316940  38 A0 01 40 */	li r5, 0x140
/* 8031ACE4 00316944  4B FE A2 F1 */	bl VFipf_memset
/* 8031ACE8 00316948  34 1D 00 1C */	addic. r0, r29, 0x1c
/* 8031ACEC 0031694C  41 82 00 14 */	beq lbl_8031AD00
/* 8031ACF0 00316950  93 FD 00 1C */	stw r31, 0x1c(r29)
/* 8031ACF4 00316954  93 FD 00 20 */	stw r31, 0x20(r29)
/* 8031ACF8 00316958  93 FD 00 24 */	stw r31, 0x24(r29)
/* 8031ACFC 0031695C  93 FD 00 28 */	stw r31, 0x28(r29)
lbl_8031AD00:
/* 8031AD00 00316960  3B BD 01 40 */	addi r29, r29, 0x140
lbl_8031AD04:
/* 8031AD04 00316964  7C 1D F0 40 */	cmplw r29, r30
/* 8031AD08 00316968  40 82 FF D0 */	bne lbl_8031ACD8
/* 8031AD0C 0031696C  80 0D AF FC */	lwz r0, lbl_806402BC-_SDA_BASE_(r13)
/* 8031AD10 00316970  83 CD AF F0 */	lwz r30, lbl_806402B0-_SDA_BASE_(r13)
/* 8031AD14 00316974  2C 00 00 00 */	cmpwi r0, 0
/* 8031AD18 00316978  40 82 00 50 */	bne lbl_8031AD68
/* 8031AD1C 0031697C  3F A0 80 61 */	lis r29, lbl_8060F5A0@ha
/* 8031AD20 00316980  3B E0 00 00 */	li r31, 0
/* 8031AD24 00316984  3B BD F5 A0 */	addi r29, r29, lbl_8060F5A0@l
/* 8031AD28 00316988  48 00 00 30 */	b lbl_8031AD58
lbl_8031AD2C:
/* 8031AD2C 0031698C  80 6D AF F8 */	lwz r3, lbl_806402B8-_SDA_BASE_(r13)
/* 8031AD30 00316990  2C 03 00 00 */	cmpwi r3, 0
/* 8031AD34 00316994  40 82 00 0C */	bne lbl_8031AD40
/* 8031AD38 00316998  38 60 00 00 */	li r3, 0
/* 8031AD3C 0031699C  48 00 00 10 */	b lbl_8031AD4C
lbl_8031AD40:
/* 8031AD40 003169A0  38 80 00 A0 */	li r4, 0xa0
/* 8031AD44 003169A4  38 A0 00 20 */	li r5, 0x20
/* 8031AD48 003169A8  4B F7 C1 E1 */	bl MEMAllocFromExpHeapEx
lbl_8031AD4C:
/* 8031AD4C 003169AC  90 7D 00 00 */	stw r3, 0(r29)
/* 8031AD50 003169B0  3B BD 00 04 */	addi r29, r29, 4
/* 8031AD54 003169B4  3B FF 00 01 */	addi r31, r31, 1
lbl_8031AD58:
/* 8031AD58 003169B8  7C 1F F0 40 */	cmplw r31, r30
/* 8031AD5C 003169BC  41 80 FF D0 */	blt lbl_8031AD2C
/* 8031AD60 003169C0  38 00 00 01 */	li r0, 1
/* 8031AD64 003169C4  90 0D AF FC */	stw r0, lbl_806402BC-_SDA_BASE_(r13)
lbl_8031AD68:
/* 8031AD68 003169C8  48 00 0E 79 */	bl dCommon_initDriveInfo
/* 8031AD6C 003169CC  38 80 00 00 */	li r4, 0
/* 8031AD70 003169D0  38 60 00 02 */	li r3, 2
/* 8031AD74 003169D4  38 00 00 08 */	li r0, 8
/* 8031AD78 003169D8  90 8D AF F4 */	stw r4, lbl_806402B4-_SDA_BASE_(r13)
/* 8031AD7C 003169DC  90 6D B0 0C */	stw r3, lbl_806402CC-_SDA_BASE_(r13)
/* 8031AD80 003169E0  90 0D B0 08 */	stw r0, lbl_806402C8-_SDA_BASE_(r13)
/* 8031AD84 003169E4  48 00 13 9D */	bl VFi_InitSDWrok
/* 8031AD88 003169E8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8031AD8C 003169EC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8031AD90 003169F0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8031AD94 003169F4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8031AD98 003169F8  7C 08 03 A6 */	mtlr r0
/* 8031AD9C 003169FC  38 21 00 20 */	addi r1, r1, 0x20
/* 8031ADA0 00316A00  4E 80 00 20 */	blr

.global VFSysFinalize
VFSysFinalize:
/* 8031ADA4 00316A04  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8031ADA8 00316A08  7C 08 02 A6 */	mflr r0
/* 8031ADAC 00316A0C  90 01 00 24 */	stw r0, 0x24(r1)
/* 8031ADB0 00316A10  39 61 00 20 */	addi r11, r1, 0x20
/* 8031ADB4 00316A14  4B EA C3 75 */	bl _savegpr_27
/* 8031ADB8 00316A18  83 6D B0 00 */	lwz r27, lbl_806402C0-_SDA_BASE_(r13)
/* 8031ADBC 00316A1C  2C 9B 00 00 */	cmpwi cr1, r27, 0
/* 8031ADC0 00316A20  41 86 00 DC */	beq cr1, lbl_8031AE9C
/* 8031ADC4 00316A24  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031ADC8 00316A28  2C 00 00 00 */	cmpwi r0, 0
/* 8031ADCC 00316A2C  41 82 00 0C */	beq lbl_8031ADD8
/* 8031ADD0 00316A30  41 86 00 08 */	beq cr1, lbl_8031ADD8
/* 8031ADD4 00316A34  48 00 00 08 */	b lbl_8031ADDC
lbl_8031ADD8:
/* 8031ADD8 00316A38  3B 60 00 00 */	li r27, 0
lbl_8031ADDC:
/* 8031ADDC 00316A3C  2C 1B 00 00 */	cmpwi r27, 0
/* 8031ADE0 00316A40  41 82 00 A0 */	beq lbl_8031AE80
/* 8031ADE4 00316A44  1C 00 01 40 */	mulli r0, r0, 0x140
/* 8031ADE8 00316A48  3B E0 00 00 */	li r31, 0
/* 8031ADEC 00316A4C  7F DB 02 14 */	add r30, r27, r0
/* 8031ADF0 00316A50  48 00 00 88 */	b lbl_8031AE78
lbl_8031ADF4:
/* 8031ADF4 00316A54  2C 1B 00 00 */	cmpwi r27, 0
/* 8031ADF8 00316A58  41 82 00 7C */	beq lbl_8031AE74
/* 8031ADFC 00316A5C  37 BB 00 1C */	addic. r29, r27, 0x1c
/* 8031AE00 00316A60  83 9D 00 00 */	lwz r28, 0(r29)
/* 8031AE04 00316A64  41 82 00 54 */	beq lbl_8031AE58
/* 8031AE08 00316A68  80 9D 00 08 */	lwz r4, 8(r29)
/* 8031AE0C 00316A6C  2C 04 00 00 */	cmpwi r4, 0
/* 8031AE10 00316A70  41 82 00 14 */	beq lbl_8031AE24
/* 8031AE14 00316A74  2C 1C 00 00 */	cmpwi r28, 0
/* 8031AE18 00316A78  41 82 00 0C */	beq lbl_8031AE24
/* 8031AE1C 00316A7C  7F 83 E3 78 */	mr r3, r28
/* 8031AE20 00316A80  4B F7 C3 A5 */	bl MEMFreeToExpHeap
lbl_8031AE24:
/* 8031AE24 00316A84  80 9D 00 0C */	lwz r4, 0xc(r29)
/* 8031AE28 00316A88  2C 04 00 00 */	cmpwi r4, 0
/* 8031AE2C 00316A8C  41 82 00 14 */	beq lbl_8031AE40
/* 8031AE30 00316A90  80 7D 00 00 */	lwz r3, 0(r29)
/* 8031AE34 00316A94  2C 03 00 00 */	cmpwi r3, 0
/* 8031AE38 00316A98  41 82 00 08 */	beq lbl_8031AE40
/* 8031AE3C 00316A9C  4B F7 C3 89 */	bl MEMFreeToExpHeap
lbl_8031AE40:
/* 8031AE40 00316AA0  2C 1D 00 00 */	cmpwi r29, 0
/* 8031AE44 00316AA4  41 82 00 14 */	beq lbl_8031AE58
/* 8031AE48 00316AA8  93 FD 00 00 */	stw r31, 0(r29)
/* 8031AE4C 00316AAC  93 FD 00 04 */	stw r31, 4(r29)
/* 8031AE50 00316AB0  93 FD 00 08 */	stw r31, 8(r29)
/* 8031AE54 00316AB4  93 FD 00 0C */	stw r31, 0xc(r29)
lbl_8031AE58:
/* 8031AE58 00316AB8  80 0D AF F8 */	lwz r0, lbl_806402B8-_SDA_BASE_(r13)
/* 8031AE5C 00316ABC  7C 1C 00 40 */	cmplw r28, r0
/* 8031AE60 00316AC0  41 82 00 14 */	beq lbl_8031AE74
/* 8031AE64 00316AC4  2C 1C 00 00 */	cmpwi r28, 0
/* 8031AE68 00316AC8  41 82 00 0C */	beq lbl_8031AE74
/* 8031AE6C 00316ACC  7F 83 E3 78 */	mr r3, r28
/* 8031AE70 00316AD0  4B F7 C0 89 */	bl MEMDestroyExpHeap
lbl_8031AE74:
/* 8031AE74 00316AD4  3B 7B 01 40 */	addi r27, r27, 0x140
lbl_8031AE78:
/* 8031AE78 00316AD8  7C 1B F0 40 */	cmplw r27, r30
/* 8031AE7C 00316ADC  40 82 FF 78 */	bne lbl_8031ADF4
lbl_8031AE80:
/* 8031AE80 00316AE0  80 6D AF F8 */	lwz r3, lbl_806402B8-_SDA_BASE_(r13)
/* 8031AE84 00316AE4  80 8D B0 00 */	lwz r4, lbl_806402C0-_SDA_BASE_(r13)
/* 8031AE88 00316AE8  2C 03 00 00 */	cmpwi r3, 0
/* 8031AE8C 00316AEC  41 82 00 08 */	beq lbl_8031AE94
/* 8031AE90 00316AF0  4B F7 C3 35 */	bl MEMFreeToExpHeap
lbl_8031AE94:
/* 8031AE94 00316AF4  38 00 00 00 */	li r0, 0
/* 8031AE98 00316AF8  90 0D B0 00 */	stw r0, lbl_806402C0-_SDA_BASE_(r13)
lbl_8031AE9C:
/* 8031AE9C 00316AFC  80 0D AF FC */	lwz r0, lbl_806402BC-_SDA_BASE_(r13)
/* 8031AEA0 00316B00  83 AD AF F0 */	lwz r29, lbl_806402B0-_SDA_BASE_(r13)
/* 8031AEA4 00316B04  2C 00 00 00 */	cmpwi r0, 0
/* 8031AEA8 00316B08  41 82 00 50 */	beq lbl_8031AEF8
/* 8031AEAC 00316B0C  3F 80 80 61 */	lis r28, lbl_8060F5A0@ha
/* 8031AEB0 00316B10  3B C0 00 00 */	li r30, 0
/* 8031AEB4 00316B14  3B 9C F5 A0 */	addi r28, r28, lbl_8060F5A0@l
/* 8031AEB8 00316B18  3B E0 00 00 */	li r31, 0
/* 8031AEBC 00316B1C  48 00 00 2C */	b lbl_8031AEE8
lbl_8031AEC0:
/* 8031AEC0 00316B20  80 9C 00 00 */	lwz r4, 0(r28)
/* 8031AEC4 00316B24  2C 04 00 00 */	cmpwi r4, 0
/* 8031AEC8 00316B28  41 82 00 18 */	beq lbl_8031AEE0
/* 8031AECC 00316B2C  80 6D AF F8 */	lwz r3, lbl_806402B8-_SDA_BASE_(r13)
/* 8031AED0 00316B30  2C 03 00 00 */	cmpwi r3, 0
/* 8031AED4 00316B34  41 82 00 08 */	beq lbl_8031AEDC
/* 8031AED8 00316B38  4B F7 C2 ED */	bl MEMFreeToExpHeap
lbl_8031AEDC:
/* 8031AEDC 00316B3C  93 FC 00 00 */	stw r31, 0(r28)
lbl_8031AEE0:
/* 8031AEE0 00316B40  3B 9C 00 04 */	addi r28, r28, 4
/* 8031AEE4 00316B44  3B DE 00 01 */	addi r30, r30, 1
lbl_8031AEE8:
/* 8031AEE8 00316B48  7C 1E E8 40 */	cmplw r30, r29
/* 8031AEEC 00316B4C  41 80 FF D4 */	blt lbl_8031AEC0
/* 8031AEF0 00316B50  38 00 00 00 */	li r0, 0
/* 8031AEF4 00316B54  90 0D AF FC */	stw r0, lbl_806402BC-_SDA_BASE_(r13)
lbl_8031AEF8:
/* 8031AEF8 00316B58  80 6D AF F8 */	lwz r3, lbl_806402B8-_SDA_BASE_(r13)
/* 8031AEFC 00316B5C  2C 03 00 00 */	cmpwi r3, 0
/* 8031AF00 00316B60  41 82 00 10 */	beq lbl_8031AF10
/* 8031AF04 00316B64  4B F7 BF F5 */	bl MEMDestroyExpHeap
/* 8031AF08 00316B68  38 00 00 00 */	li r0, 0
/* 8031AF0C 00316B6C  90 0D AF F8 */	stw r0, lbl_806402B8-_SDA_BASE_(r13)
lbl_8031AF10:
/* 8031AF10 00316B70  38 00 00 00 */	li r0, 0
/* 8031AF14 00316B74  39 61 00 20 */	addi r11, r1, 0x20
/* 8031AF18 00316B78  90 0D AF F0 */	stw r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031AF1C 00316B7C  4B EA C2 59 */	bl _restgpr_27
/* 8031AF20 00316B80  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8031AF24 00316B84  7C 08 03 A6 */	mtlr r0
/* 8031AF28 00316B88  38 21 00 20 */	addi r1, r1, 0x20
/* 8031AF2C 00316B8C  4E 80 00 20 */	blr

.global VFSysOpenFile_current
VFSysOpenFile_current:
/* 8031AF30 00316B90  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8031AF34 00316B94  7C 08 02 A6 */	mflr r0
/* 8031AF38 00316B98  90 01 00 14 */	stw r0, 0x14(r1)
/* 8031AF3C 00316B9C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8031AF40 00316BA0  7C 9F 23 78 */	mr r31, r4
/* 8031AF44 00316BA4  93 C1 00 08 */	stw r30, 8(r1)
/* 8031AF48 00316BA8  7C 7E 1B 78 */	mr r30, r3
/* 8031AF4C 00316BAC  4B FF EA B9 */	bl VFiPFVOL_GetCurrentVolume
/* 8031AF50 00316BB0  2C 03 00 00 */	cmpwi r3, 0
/* 8031AF54 00316BB4  41 82 00 64 */	beq lbl_8031AFB8
/* 8031AF58 00316BB8  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031AF5C 00316BBC  2C 00 00 00 */	cmpwi r0, 0
/* 8031AF60 00316BC0  41 82 00 14 */	beq lbl_8031AF74
/* 8031AF64 00316BC4  80 CD B0 00 */	lwz r6, lbl_806402C0-_SDA_BASE_(r13)
/* 8031AF68 00316BC8  2C 06 00 00 */	cmpwi r6, 0
/* 8031AF6C 00316BCC  41 82 00 08 */	beq lbl_8031AF74
/* 8031AF70 00316BD0  48 00 00 08 */	b lbl_8031AF78
lbl_8031AF74:
/* 8031AF74 00316BD4  38 C0 00 00 */	li r6, 0
lbl_8031AF78:
/* 8031AF78 00316BD8  1C 00 01 40 */	mulli r0, r0, 0x140
/* 8031AF7C 00316BDC  7C A6 02 14 */	add r5, r6, r0
/* 8031AF80 00316BE0  48 00 00 30 */	b lbl_8031AFB0
lbl_8031AF84:
/* 8031AF84 00316BE4  80 06 00 00 */	lwz r0, 0(r6)
/* 8031AF88 00316BE8  2C 00 00 00 */	cmpwi r0, 0
/* 8031AF8C 00316BEC  41 82 00 20 */	beq lbl_8031AFAC
/* 8031AF90 00316BF0  88 86 00 14 */	lbz r4, 0x14(r6)
/* 8031AF94 00316BF4  88 03 18 7A */	lbz r0, 0x187a(r3)
/* 8031AF98 00316BF8  7C 84 07 74 */	extsb r4, r4
/* 8031AF9C 00316BFC  7C 00 07 74 */	extsb r0, r0
/* 8031AFA0 00316C00  7C 04 00 00 */	cmpw r4, r0
/* 8031AFA4 00316C04  40 82 00 08 */	bne lbl_8031AFAC
/* 8031AFA8 00316C08  48 00 00 14 */	b lbl_8031AFBC
lbl_8031AFAC:
/* 8031AFAC 00316C0C  38 C6 01 40 */	addi r6, r6, 0x140
lbl_8031AFB0:
/* 8031AFB0 00316C10  7C 06 28 40 */	cmplw r6, r5
/* 8031AFB4 00316C14  40 82 FF D0 */	bne lbl_8031AF84
lbl_8031AFB8:
/* 8031AFB8 00316C18  38 C0 00 00 */	li r6, 0
lbl_8031AFBC:
/* 8031AFBC 00316C1C  2C 06 00 00 */	cmpwi r6, 0
/* 8031AFC0 00316C20  41 82 00 18 */	beq lbl_8031AFD8
/* 8031AFC4 00316C24  80 66 00 08 */	lwz r3, 8(r6)
/* 8031AFC8 00316C28  2C 03 00 00 */	cmpwi r3, 0
/* 8031AFCC 00316C2C  41 82 00 0C */	beq lbl_8031AFD8
/* 8031AFD0 00316C30  38 80 00 00 */	li r4, 0
/* 8031AFD4 00316C34  48 00 0D 4D */	bl dCommon_setLastDeviceErrorToDisk
lbl_8031AFD8:
/* 8031AFD8 00316C38  7F C3 F3 78 */	mr r3, r30
/* 8031AFDC 00316C3C  7F E4 FB 78 */	mr r4, r31
/* 8031AFE0 00316C40  4B FF F2 E5 */	bl VFipf2_fopen
/* 8031AFE4 00316C44  2C 03 00 00 */	cmpwi r3, 0
/* 8031AFE8 00316C48  7C 7F 1B 78 */	mr r31, r3
/* 8031AFEC 00316C4C  40 82 00 14 */	bne lbl_8031B000
/* 8031AFF0 00316C50  4B FF F2 69 */	bl VFipf2_errnum
/* 8031AFF4 00316C54  2C 03 00 00 */	cmpwi r3, 0
/* 8031AFF8 00316C58  41 82 00 08 */	beq lbl_8031B000
/* 8031AFFC 00316C5C  90 6D AF F4 */	stw r3, lbl_806402B4-_SDA_BASE_(r13)
lbl_8031B000:
/* 8031B000 00316C60  7F E3 FB 78 */	mr r3, r31
/* 8031B004 00316C64  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8031B008 00316C68  83 C1 00 08 */	lwz r30, 8(r1)
/* 8031B00C 00316C6C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031B010 00316C70  7C 08 03 A6 */	mtlr r0
/* 8031B014 00316C74  38 21 00 10 */	addi r1, r1, 0x10
/* 8031B018 00316C78  4E 80 00 20 */	blr

.global VFSysOpenFile
VFSysOpenFile:
/* 8031B01C 00316C7C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8031B020 00316C80  7C 08 02 A6 */	mflr r0
/* 8031B024 00316C84  90 01 00 24 */	stw r0, 0x24(r1)
/* 8031B028 00316C88  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8031B02C 00316C8C  7C BF 2B 78 */	mr r31, r5
/* 8031B030 00316C90  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8031B034 00316C94  7C 9E 23 78 */	mr r30, r4
/* 8031B038 00316C98  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8031B03C 00316C9C  7C 7D 1B 78 */	mr r29, r3
/* 8031B040 00316CA0  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031B044 00316CA4  7C 03 00 40 */	cmplw r3, r0
/* 8031B048 00316CA8  40 80 00 1C */	bge lbl_8031B064
/* 8031B04C 00316CAC  80 8D B0 00 */	lwz r4, lbl_806402C0-_SDA_BASE_(r13)
/* 8031B050 00316CB0  2C 04 00 00 */	cmpwi r4, 0
/* 8031B054 00316CB4  41 82 00 10 */	beq lbl_8031B064
/* 8031B058 00316CB8  1C 03 01 40 */	mulli r0, r3, 0x140
/* 8031B05C 00316CBC  7C 64 02 14 */	add r3, r4, r0
/* 8031B060 00316CC0  48 00 00 08 */	b lbl_8031B068
lbl_8031B064:
/* 8031B064 00316CC4  38 60 00 00 */	li r3, 0
lbl_8031B068:
/* 8031B068 00316CC8  2C 03 00 00 */	cmpwi r3, 0
/* 8031B06C 00316CCC  41 82 00 3C */	beq lbl_8031B0A8
/* 8031B070 00316CD0  88 03 00 14 */	lbz r0, 0x14(r3)
/* 8031B074 00316CD4  7C 03 07 74 */	extsb r3, r0
/* 8031B078 00316CD8  4B FF EA E1 */	bl VFiPFVOL_GetVolumeFromDrvChar
/* 8031B07C 00316CDC  2C 03 00 00 */	cmpwi r3, 0
/* 8031B080 00316CE0  41 82 00 10 */	beq lbl_8031B090
/* 8031B084 00316CE4  4B FF E8 35 */	bl VFiPFVOL_SetCurrentVolume
/* 8031B088 00316CE8  38 60 00 00 */	li r3, 0
/* 8031B08C 00316CEC  48 00 00 24 */	b lbl_8031B0B0
lbl_8031B090:
/* 8031B090 00316CF0  4B FF F1 C9 */	bl VFipf2_errnum
/* 8031B094 00316CF4  2C 03 00 00 */	cmpwi r3, 0
/* 8031B098 00316CF8  40 82 00 18 */	bne lbl_8031B0B0
/* 8031B09C 00316CFC  38 60 FF FF */	li r3, -1
/* 8031B0A0 00316D00  48 00 00 10 */	b lbl_8031B0B0
/* 8031B0A4 00316D04  48 00 00 0C */	b lbl_8031B0B0
lbl_8031B0A8:
/* 8031B0A8 00316D08  3C 60 00 01 */	lis r3, 0x0000B003@ha
/* 8031B0AC 00316D0C  38 63 B0 03 */	addi r3, r3, 0x0000B003@l
lbl_8031B0B0:
/* 8031B0B0 00316D10  2C 03 00 00 */	cmpwi r3, 0
/* 8031B0B4 00316D14  40 82 00 7C */	bne lbl_8031B130
/* 8031B0B8 00316D18  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031B0BC 00316D1C  7C 1D 00 40 */	cmplw r29, r0
/* 8031B0C0 00316D20  40 80 00 1C */	bge lbl_8031B0DC
/* 8031B0C4 00316D24  80 6D B0 00 */	lwz r3, lbl_806402C0-_SDA_BASE_(r13)
/* 8031B0C8 00316D28  2C 03 00 00 */	cmpwi r3, 0
/* 8031B0CC 00316D2C  41 82 00 10 */	beq lbl_8031B0DC
/* 8031B0D0 00316D30  1C 1D 01 40 */	mulli r0, r29, 0x140
/* 8031B0D4 00316D34  7C 63 02 14 */	add r3, r3, r0
/* 8031B0D8 00316D38  48 00 00 08 */	b lbl_8031B0E0
lbl_8031B0DC:
/* 8031B0DC 00316D3C  38 60 00 00 */	li r3, 0
lbl_8031B0E0:
/* 8031B0E0 00316D40  2C 03 00 00 */	cmpwi r3, 0
/* 8031B0E4 00316D44  41 82 00 1C */	beq lbl_8031B100
/* 8031B0E8 00316D48  41 82 00 18 */	beq lbl_8031B100
/* 8031B0EC 00316D4C  80 63 00 08 */	lwz r3, 8(r3)
/* 8031B0F0 00316D50  2C 03 00 00 */	cmpwi r3, 0
/* 8031B0F4 00316D54  41 82 00 0C */	beq lbl_8031B100
/* 8031B0F8 00316D58  38 80 00 00 */	li r4, 0
/* 8031B0FC 00316D5C  48 00 0C 25 */	bl dCommon_setLastDeviceErrorToDisk
lbl_8031B100:
/* 8031B100 00316D60  7F C3 F3 78 */	mr r3, r30
/* 8031B104 00316D64  7F E4 FB 78 */	mr r4, r31
/* 8031B108 00316D68  4B FF F1 BD */	bl VFipf2_fopen
/* 8031B10C 00316D6C  2C 03 00 00 */	cmpwi r3, 0
/* 8031B110 00316D70  7C 7F 1B 78 */	mr r31, r3
/* 8031B114 00316D74  40 82 00 14 */	bne lbl_8031B128
/* 8031B118 00316D78  4B FF F1 41 */	bl VFipf2_errnum
/* 8031B11C 00316D7C  2C 03 00 00 */	cmpwi r3, 0
/* 8031B120 00316D80  41 82 00 08 */	beq lbl_8031B128
/* 8031B124 00316D84  90 6D AF F4 */	stw r3, lbl_806402B4-_SDA_BASE_(r13)
lbl_8031B128:
/* 8031B128 00316D88  7F E3 FB 78 */	mr r3, r31
/* 8031B12C 00316D8C  48 00 00 10 */	b lbl_8031B13C
lbl_8031B130:
/* 8031B130 00316D90  41 82 00 08 */	beq lbl_8031B138
/* 8031B134 00316D94  90 6D AF F4 */	stw r3, lbl_806402B4-_SDA_BASE_(r13)
lbl_8031B138:
/* 8031B138 00316D98  38 60 00 00 */	li r3, 0
lbl_8031B13C:
/* 8031B13C 00316D9C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8031B140 00316DA0  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8031B144 00316DA4  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8031B148 00316DA8  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8031B14C 00316DAC  7C 08 03 A6 */	mtlr r0
/* 8031B150 00316DB0  38 21 00 20 */	addi r1, r1, 0x20
/* 8031B154 00316DB4  4E 80 00 20 */	blr

.global VFSysCloseFile
VFSysCloseFile:
/* 8031B158 00316DB8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8031B15C 00316DBC  7C 08 02 A6 */	mflr r0
/* 8031B160 00316DC0  2C 03 00 00 */	cmpwi r3, 0
/* 8031B164 00316DC4  38 C0 00 00 */	li r6, 0
/* 8031B168 00316DC8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8031B16C 00316DCC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8031B170 00316DD0  7C 7F 1B 78 */	mr r31, r3
/* 8031B174 00316DD4  41 82 00 80 */	beq lbl_8031B1F4
/* 8031B178 00316DD8  80 63 00 08 */	lwz r3, 8(r3)
/* 8031B17C 00316DDC  2C 03 00 00 */	cmpwi r3, 0
/* 8031B180 00316DE0  41 82 00 74 */	beq lbl_8031B1F4
/* 8031B184 00316DE4  80 83 00 38 */	lwz r4, 0x38(r3)
/* 8031B188 00316DE8  2C 04 00 00 */	cmpwi r4, 0
/* 8031B18C 00316DEC  41 82 00 64 */	beq lbl_8031B1F0
/* 8031B190 00316DF0  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031B194 00316DF4  2C 00 00 00 */	cmpwi r0, 0
/* 8031B198 00316DF8  41 82 00 14 */	beq lbl_8031B1AC
/* 8031B19C 00316DFC  80 CD B0 00 */	lwz r6, lbl_806402C0-_SDA_BASE_(r13)
/* 8031B1A0 00316E00  2C 06 00 00 */	cmpwi r6, 0
/* 8031B1A4 00316E04  41 82 00 08 */	beq lbl_8031B1AC
/* 8031B1A8 00316E08  48 00 00 08 */	b lbl_8031B1B0
lbl_8031B1AC:
/* 8031B1AC 00316E0C  38 C0 00 00 */	li r6, 0
lbl_8031B1B0:
/* 8031B1B0 00316E10  1C 00 01 40 */	mulli r0, r0, 0x140
/* 8031B1B4 00316E14  7C A6 02 14 */	add r5, r6, r0
/* 8031B1B8 00316E18  48 00 00 30 */	b lbl_8031B1E8
lbl_8031B1BC:
/* 8031B1BC 00316E1C  80 06 00 00 */	lwz r0, 0(r6)
/* 8031B1C0 00316E20  2C 00 00 00 */	cmpwi r0, 0
/* 8031B1C4 00316E24  41 82 00 20 */	beq lbl_8031B1E4
/* 8031B1C8 00316E28  88 66 00 14 */	lbz r3, 0x14(r6)
/* 8031B1CC 00316E2C  88 04 18 7A */	lbz r0, 0x187a(r4)
/* 8031B1D0 00316E30  7C 63 07 74 */	extsb r3, r3
/* 8031B1D4 00316E34  7C 00 07 74 */	extsb r0, r0
/* 8031B1D8 00316E38  7C 03 00 00 */	cmpw r3, r0
/* 8031B1DC 00316E3C  40 82 00 08 */	bne lbl_8031B1E4
/* 8031B1E0 00316E40  48 00 00 14 */	b lbl_8031B1F4
lbl_8031B1E4:
/* 8031B1E4 00316E44  38 C6 01 40 */	addi r6, r6, 0x140
lbl_8031B1E8:
/* 8031B1E8 00316E48  7C 06 28 40 */	cmplw r6, r5
/* 8031B1EC 00316E4C  40 82 FF D0 */	bne lbl_8031B1BC
lbl_8031B1F0:
/* 8031B1F0 00316E50  38 C0 00 00 */	li r6, 0
lbl_8031B1F4:
/* 8031B1F4 00316E54  2C 06 00 00 */	cmpwi r6, 0
/* 8031B1F8 00316E58  41 82 00 18 */	beq lbl_8031B210
/* 8031B1FC 00316E5C  80 66 00 08 */	lwz r3, 8(r6)
/* 8031B200 00316E60  2C 03 00 00 */	cmpwi r3, 0
/* 8031B204 00316E64  41 82 00 0C */	beq lbl_8031B210
/* 8031B208 00316E68  38 80 00 00 */	li r4, 0
/* 8031B20C 00316E6C  48 00 0B 15 */	bl dCommon_setLastDeviceErrorToDisk
lbl_8031B210:
/* 8031B210 00316E70  7F E3 FB 78 */	mr r3, r31
/* 8031B214 00316E74  4B FF F0 69 */	bl VFipf2_fclose
/* 8031B218 00316E78  2C 03 00 00 */	cmpwi r3, 0
/* 8031B21C 00316E7C  40 82 00 0C */	bne lbl_8031B228
/* 8031B220 00316E80  38 60 00 00 */	li r3, 0
/* 8031B224 00316E84  48 00 00 08 */	b lbl_8031B22C
lbl_8031B228:
/* 8031B228 00316E88  4B FF F0 31 */	bl VFipf2_errnum
lbl_8031B22C:
/* 8031B22C 00316E8C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031B230 00316E90  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8031B234 00316E94  7C 08 03 A6 */	mtlr r0
/* 8031B238 00316E98  38 21 00 10 */	addi r1, r1, 0x10
/* 8031B23C 00316E9C  4E 80 00 20 */	blr

.global VFSysSeekFile
VFSysSeekFile:
/* 8031B240 00316EA0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8031B244 00316EA4  7C 08 02 A6 */	mflr r0
/* 8031B248 00316EA8  2C 03 00 00 */	cmpwi r3, 0
/* 8031B24C 00316EAC  38 C0 00 00 */	li r6, 0
/* 8031B250 00316EB0  90 01 00 24 */	stw r0, 0x24(r1)
/* 8031B254 00316EB4  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8031B258 00316EB8  7C BF 2B 78 */	mr r31, r5
/* 8031B25C 00316EBC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8031B260 00316EC0  7C 9E 23 78 */	mr r30, r4
/* 8031B264 00316EC4  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8031B268 00316EC8  7C 7D 1B 78 */	mr r29, r3
/* 8031B26C 00316ECC  41 82 00 80 */	beq lbl_8031B2EC
/* 8031B270 00316ED0  80 63 00 08 */	lwz r3, 8(r3)
/* 8031B274 00316ED4  2C 03 00 00 */	cmpwi r3, 0
/* 8031B278 00316ED8  41 82 00 74 */	beq lbl_8031B2EC
/* 8031B27C 00316EDC  80 83 00 38 */	lwz r4, 0x38(r3)
/* 8031B280 00316EE0  2C 04 00 00 */	cmpwi r4, 0
/* 8031B284 00316EE4  41 82 00 64 */	beq lbl_8031B2E8
/* 8031B288 00316EE8  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031B28C 00316EEC  2C 00 00 00 */	cmpwi r0, 0
/* 8031B290 00316EF0  41 82 00 14 */	beq lbl_8031B2A4
/* 8031B294 00316EF4  80 CD B0 00 */	lwz r6, lbl_806402C0-_SDA_BASE_(r13)
/* 8031B298 00316EF8  2C 06 00 00 */	cmpwi r6, 0
/* 8031B29C 00316EFC  41 82 00 08 */	beq lbl_8031B2A4
/* 8031B2A0 00316F00  48 00 00 08 */	b lbl_8031B2A8
lbl_8031B2A4:
/* 8031B2A4 00316F04  38 C0 00 00 */	li r6, 0
lbl_8031B2A8:
/* 8031B2A8 00316F08  1C 00 01 40 */	mulli r0, r0, 0x140
/* 8031B2AC 00316F0C  7C A6 02 14 */	add r5, r6, r0
/* 8031B2B0 00316F10  48 00 00 30 */	b lbl_8031B2E0
lbl_8031B2B4:
/* 8031B2B4 00316F14  80 06 00 00 */	lwz r0, 0(r6)
/* 8031B2B8 00316F18  2C 00 00 00 */	cmpwi r0, 0
/* 8031B2BC 00316F1C  41 82 00 20 */	beq lbl_8031B2DC
/* 8031B2C0 00316F20  88 66 00 14 */	lbz r3, 0x14(r6)
/* 8031B2C4 00316F24  88 04 18 7A */	lbz r0, 0x187a(r4)
/* 8031B2C8 00316F28  7C 63 07 74 */	extsb r3, r3
/* 8031B2CC 00316F2C  7C 00 07 74 */	extsb r0, r0
/* 8031B2D0 00316F30  7C 03 00 00 */	cmpw r3, r0
/* 8031B2D4 00316F34  40 82 00 08 */	bne lbl_8031B2DC
/* 8031B2D8 00316F38  48 00 00 14 */	b lbl_8031B2EC
lbl_8031B2DC:
/* 8031B2DC 00316F3C  38 C6 01 40 */	addi r6, r6, 0x140
lbl_8031B2E0:
/* 8031B2E0 00316F40  7C 06 28 40 */	cmplw r6, r5
/* 8031B2E4 00316F44  40 82 FF D0 */	bne lbl_8031B2B4
lbl_8031B2E8:
/* 8031B2E8 00316F48  38 C0 00 00 */	li r6, 0
lbl_8031B2EC:
/* 8031B2EC 00316F4C  2C 06 00 00 */	cmpwi r6, 0
/* 8031B2F0 00316F50  41 82 00 18 */	beq lbl_8031B308
/* 8031B2F4 00316F54  80 66 00 08 */	lwz r3, 8(r6)
/* 8031B2F8 00316F58  2C 03 00 00 */	cmpwi r3, 0
/* 8031B2FC 00316F5C  41 82 00 0C */	beq lbl_8031B308
/* 8031B300 00316F60  38 80 00 00 */	li r4, 0
/* 8031B304 00316F64  48 00 0A 1D */	bl dCommon_setLastDeviceErrorToDisk
lbl_8031B308:
/* 8031B308 00316F68  7F A3 EB 78 */	mr r3, r29
/* 8031B30C 00316F6C  7F C4 F3 78 */	mr r4, r30
/* 8031B310 00316F70  7F E5 FB 78 */	mr r5, r31
/* 8031B314 00316F74  4B FF F0 75 */	bl VFipf2_fseek
/* 8031B318 00316F78  2C 03 00 00 */	cmpwi r3, 0
/* 8031B31C 00316F7C  40 82 00 0C */	bne lbl_8031B328
/* 8031B320 00316F80  38 60 00 00 */	li r3, 0
/* 8031B324 00316F84  48 00 00 08 */	b lbl_8031B32C
lbl_8031B328:
/* 8031B328 00316F88  4B FF EF 31 */	bl VFipf2_errnum
lbl_8031B32C:
/* 8031B32C 00316F8C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8031B330 00316F90  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8031B334 00316F94  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8031B338 00316F98  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8031B33C 00316F9C  7C 08 03 A6 */	mtlr r0
/* 8031B340 00316FA0  38 21 00 20 */	addi r1, r1, 0x20
/* 8031B344 00316FA4  4E 80 00 20 */	blr

.global VFSysReadFile
VFSysReadFile:
/* 8031B348 00316FA8  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8031B34C 00316FAC  7C 08 02 A6 */	mflr r0
/* 8031B350 00316FB0  90 01 00 44 */	stw r0, 0x44(r1)
/* 8031B354 00316FB4  39 61 00 40 */	addi r11, r1, 0x40
/* 8031B358 00316FB8  4B EA BD D1 */	bl _savegpr_27
/* 8031B35C 00316FBC  2C 03 00 00 */	cmpwi r3, 0
/* 8031B360 00316FC0  7C 7C 1B 78 */	mr r28, r3
/* 8031B364 00316FC4  7C 9D 23 78 */	mr r29, r4
/* 8031B368 00316FC8  7C BE 2B 78 */	mr r30, r5
/* 8031B36C 00316FCC  7C DF 33 78 */	mr r31, r6
/* 8031B370 00316FD0  41 82 00 0C */	beq lbl_8031B37C
/* 8031B374 00316FD4  38 00 00 00 */	li r0, 0
/* 8031B378 00316FD8  90 03 00 00 */	stw r0, 0(r3)
lbl_8031B37C:
/* 8031B37C 00316FDC  7F E3 FB 78 */	mr r3, r31
/* 8031B380 00316FE0  38 81 00 08 */	addi r4, r1, 8
/* 8031B384 00316FE4  4B FF EF 1D */	bl VFipf2_finfo
/* 8031B388 00316FE8  2C 03 00 00 */	cmpwi r3, 0
/* 8031B38C 00316FEC  40 82 01 18 */	bne lbl_8031B4A4
/* 8031B390 00316FF0  80 7F 00 1C */	lwz r3, 0x1c(r31)
/* 8031B394 00316FF4  80 01 00 08 */	lwz r0, 8(r1)
/* 8031B398 00316FF8  7F 63 00 50 */	subf r27, r3, r0
/* 8031B39C 00316FFC  7C 1E D8 40 */	cmplw r30, r27
/* 8031B3A0 00317000  40 81 00 18 */	ble lbl_8031B3B8
/* 8031B3A4 00317004  7F A3 EB 78 */	mr r3, r29
/* 8031B3A8 00317008  7F C5 F3 78 */	mr r5, r30
/* 8031B3AC 0031700C  38 80 00 00 */	li r4, 0
/* 8031B3B0 00317010  4B FE 9C 25 */	bl VFipf_memset
/* 8031B3B4 00317014  7F 7E DB 78 */	mr r30, r27
lbl_8031B3B8:
/* 8031B3B8 00317018  2C 1F 00 00 */	cmpwi r31, 0
/* 8031B3BC 0031701C  38 C0 00 00 */	li r6, 0
/* 8031B3C0 00317020  41 82 00 80 */	beq lbl_8031B440
/* 8031B3C4 00317024  80 7F 00 08 */	lwz r3, 8(r31)
/* 8031B3C8 00317028  2C 03 00 00 */	cmpwi r3, 0
/* 8031B3CC 0031702C  41 82 00 74 */	beq lbl_8031B440
/* 8031B3D0 00317030  80 83 00 38 */	lwz r4, 0x38(r3)
/* 8031B3D4 00317034  2C 04 00 00 */	cmpwi r4, 0
/* 8031B3D8 00317038  41 82 00 64 */	beq lbl_8031B43C
/* 8031B3DC 0031703C  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031B3E0 00317040  2C 00 00 00 */	cmpwi r0, 0
/* 8031B3E4 00317044  41 82 00 14 */	beq lbl_8031B3F8
/* 8031B3E8 00317048  80 CD B0 00 */	lwz r6, lbl_806402C0-_SDA_BASE_(r13)
/* 8031B3EC 0031704C  2C 06 00 00 */	cmpwi r6, 0
/* 8031B3F0 00317050  41 82 00 08 */	beq lbl_8031B3F8
/* 8031B3F4 00317054  48 00 00 08 */	b lbl_8031B3FC
lbl_8031B3F8:
/* 8031B3F8 00317058  38 C0 00 00 */	li r6, 0
lbl_8031B3FC:
/* 8031B3FC 0031705C  1C 00 01 40 */	mulli r0, r0, 0x140
/* 8031B400 00317060  7C A6 02 14 */	add r5, r6, r0
/* 8031B404 00317064  48 00 00 30 */	b lbl_8031B434
lbl_8031B408:
/* 8031B408 00317068  80 06 00 00 */	lwz r0, 0(r6)
/* 8031B40C 0031706C  2C 00 00 00 */	cmpwi r0, 0
/* 8031B410 00317070  41 82 00 20 */	beq lbl_8031B430
/* 8031B414 00317074  88 66 00 14 */	lbz r3, 0x14(r6)
/* 8031B418 00317078  88 04 18 7A */	lbz r0, 0x187a(r4)
/* 8031B41C 0031707C  7C 63 07 74 */	extsb r3, r3
/* 8031B420 00317080  7C 00 07 74 */	extsb r0, r0
/* 8031B424 00317084  7C 03 00 00 */	cmpw r3, r0
/* 8031B428 00317088  40 82 00 08 */	bne lbl_8031B430
/* 8031B42C 0031708C  48 00 00 14 */	b lbl_8031B440
lbl_8031B430:
/* 8031B430 00317090  38 C6 01 40 */	addi r6, r6, 0x140
lbl_8031B434:
/* 8031B434 00317094  7C 06 28 40 */	cmplw r6, r5
/* 8031B438 00317098  40 82 FF D0 */	bne lbl_8031B408
lbl_8031B43C:
/* 8031B43C 0031709C  38 C0 00 00 */	li r6, 0
lbl_8031B440:
/* 8031B440 003170A0  2C 06 00 00 */	cmpwi r6, 0
/* 8031B444 003170A4  41 82 00 18 */	beq lbl_8031B45C
/* 8031B448 003170A8  80 66 00 08 */	lwz r3, 8(r6)
/* 8031B44C 003170AC  2C 03 00 00 */	cmpwi r3, 0
/* 8031B450 003170B0  41 82 00 0C */	beq lbl_8031B45C
/* 8031B454 003170B4  38 80 00 00 */	li r4, 0
/* 8031B458 003170B8  48 00 08 C9 */	bl dCommon_setLastDeviceErrorToDisk
lbl_8031B45C:
/* 8031B45C 003170BC  2C 1E 00 00 */	cmpwi r30, 0
/* 8031B460 003170C0  41 82 00 3C */	beq lbl_8031B49C
/* 8031B464 003170C4  7F A3 EB 78 */	mr r3, r29
/* 8031B468 003170C8  7F C4 F3 78 */	mr r4, r30
/* 8031B46C 003170CC  7F E6 FB 78 */	mr r6, r31
/* 8031B470 003170D0  38 A0 00 01 */	li r5, 1
/* 8031B474 003170D4  4B FF EE ED */	bl VFipf2_fread
/* 8031B478 003170D8  28 03 00 01 */	cmplwi r3, 1
/* 8031B47C 003170DC  40 82 00 18 */	bne lbl_8031B494
/* 8031B480 003170E0  2C 1C 00 00 */	cmpwi r28, 0
/* 8031B484 003170E4  41 82 00 08 */	beq lbl_8031B48C
/* 8031B488 003170E8  93 DC 00 00 */	stw r30, 0(r28)
lbl_8031B48C:
/* 8031B48C 003170EC  38 60 00 00 */	li r3, 0
/* 8031B490 003170F0  48 00 00 18 */	b lbl_8031B4A8
lbl_8031B494:
/* 8031B494 003170F4  4B FF ED C5 */	bl VFipf2_errnum
/* 8031B498 003170F8  48 00 00 10 */	b lbl_8031B4A8
lbl_8031B49C:
/* 8031B49C 003170FC  38 60 00 00 */	li r3, 0
/* 8031B4A0 00317100  48 00 00 08 */	b lbl_8031B4A8
lbl_8031B4A4:
/* 8031B4A4 00317104  4B FF ED B5 */	bl VFipf2_errnum
lbl_8031B4A8:
/* 8031B4A8 00317108  39 61 00 40 */	addi r11, r1, 0x40
/* 8031B4AC 0031710C  4B EA BC C9 */	bl _restgpr_27
/* 8031B4B0 00317110  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8031B4B4 00317114  7C 08 03 A6 */	mtlr r0
/* 8031B4B8 00317118  38 21 00 40 */	addi r1, r1, 0x40
/* 8031B4BC 0031711C  4E 80 00 20 */	blr

.global VFSysWriteFile
VFSysWriteFile:
/* 8031B4C0 00317120  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8031B4C4 00317124  7C 08 02 A6 */	mflr r0
/* 8031B4C8 00317128  2C 05 00 00 */	cmpwi r5, 0
/* 8031B4CC 0031712C  38 C0 00 00 */	li r6, 0
/* 8031B4D0 00317130  90 01 00 24 */	stw r0, 0x24(r1)
/* 8031B4D4 00317134  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8031B4D8 00317138  7C BF 2B 78 */	mr r31, r5
/* 8031B4DC 0031713C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8031B4E0 00317140  7C 9E 23 78 */	mr r30, r4
/* 8031B4E4 00317144  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8031B4E8 00317148  7C 7D 1B 78 */	mr r29, r3
/* 8031B4EC 0031714C  41 82 00 80 */	beq lbl_8031B56C
/* 8031B4F0 00317150  80 65 00 08 */	lwz r3, 8(r5)
/* 8031B4F4 00317154  2C 03 00 00 */	cmpwi r3, 0
/* 8031B4F8 00317158  41 82 00 74 */	beq lbl_8031B56C
/* 8031B4FC 0031715C  80 83 00 38 */	lwz r4, 0x38(r3)
/* 8031B500 00317160  2C 04 00 00 */	cmpwi r4, 0
/* 8031B504 00317164  41 82 00 64 */	beq lbl_8031B568
/* 8031B508 00317168  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031B50C 0031716C  2C 00 00 00 */	cmpwi r0, 0
/* 8031B510 00317170  41 82 00 14 */	beq lbl_8031B524
/* 8031B514 00317174  80 CD B0 00 */	lwz r6, lbl_806402C0-_SDA_BASE_(r13)
/* 8031B518 00317178  2C 06 00 00 */	cmpwi r6, 0
/* 8031B51C 0031717C  41 82 00 08 */	beq lbl_8031B524
/* 8031B520 00317180  48 00 00 08 */	b lbl_8031B528
lbl_8031B524:
/* 8031B524 00317184  38 C0 00 00 */	li r6, 0
lbl_8031B528:
/* 8031B528 00317188  1C 00 01 40 */	mulli r0, r0, 0x140
/* 8031B52C 0031718C  7C A6 02 14 */	add r5, r6, r0
/* 8031B530 00317190  48 00 00 30 */	b lbl_8031B560
lbl_8031B534:
/* 8031B534 00317194  80 06 00 00 */	lwz r0, 0(r6)
/* 8031B538 00317198  2C 00 00 00 */	cmpwi r0, 0
/* 8031B53C 0031719C  41 82 00 20 */	beq lbl_8031B55C
/* 8031B540 003171A0  88 66 00 14 */	lbz r3, 0x14(r6)
/* 8031B544 003171A4  88 04 18 7A */	lbz r0, 0x187a(r4)
/* 8031B548 003171A8  7C 63 07 74 */	extsb r3, r3
/* 8031B54C 003171AC  7C 00 07 74 */	extsb r0, r0
/* 8031B550 003171B0  7C 03 00 00 */	cmpw r3, r0
/* 8031B554 003171B4  40 82 00 08 */	bne lbl_8031B55C
/* 8031B558 003171B8  48 00 00 14 */	b lbl_8031B56C
lbl_8031B55C:
/* 8031B55C 003171BC  38 C6 01 40 */	addi r6, r6, 0x140
lbl_8031B560:
/* 8031B560 003171C0  7C 06 28 40 */	cmplw r6, r5
/* 8031B564 003171C4  40 82 FF D0 */	bne lbl_8031B534
lbl_8031B568:
/* 8031B568 003171C8  38 C0 00 00 */	li r6, 0
lbl_8031B56C:
/* 8031B56C 003171CC  2C 06 00 00 */	cmpwi r6, 0
/* 8031B570 003171D0  41 82 00 18 */	beq lbl_8031B588
/* 8031B574 003171D4  80 66 00 08 */	lwz r3, 8(r6)
/* 8031B578 003171D8  2C 03 00 00 */	cmpwi r3, 0
/* 8031B57C 003171DC  41 82 00 0C */	beq lbl_8031B588
/* 8031B580 003171E0  38 80 00 00 */	li r4, 0
/* 8031B584 003171E4  48 00 07 9D */	bl dCommon_setLastDeviceErrorToDisk
lbl_8031B588:
/* 8031B588 003171E8  7F A3 EB 78 */	mr r3, r29
/* 8031B58C 003171EC  7F C4 F3 78 */	mr r4, r30
/* 8031B590 003171F0  7F E6 FB 78 */	mr r6, r31
/* 8031B594 003171F4  38 A0 00 01 */	li r5, 1
/* 8031B598 003171F8  4B FF EE 15 */	bl VFipf2_fwrite
/* 8031B59C 003171FC  28 03 00 01 */	cmplwi r3, 1
/* 8031B5A0 00317200  40 82 00 0C */	bne lbl_8031B5AC
/* 8031B5A4 00317204  38 60 00 00 */	li r3, 0
/* 8031B5A8 00317208  48 00 00 08 */	b lbl_8031B5B0
lbl_8031B5AC:
/* 8031B5AC 0031720C  4B FF EC AD */	bl VFipf2_errnum
lbl_8031B5B0:
/* 8031B5B0 00317210  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8031B5B4 00317214  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8031B5B8 00317218  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8031B5BC 0031721C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8031B5C0 00317220  7C 08 03 A6 */	mtlr r0
/* 8031B5C4 00317224  38 21 00 20 */	addi r1, r1, 0x20
/* 8031B5C8 00317228  4E 80 00 20 */	blr

.global VFSysGetFileSizeByFd
VFSysGetFileSizeByFd:
/* 8031B5CC 0031722C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8031B5D0 00317230  7C 08 02 A6 */	mflr r0
/* 8031B5D4 00317234  2C 04 00 00 */	cmpwi r4, 0
/* 8031B5D8 00317238  90 01 00 34 */	stw r0, 0x34(r1)
/* 8031B5DC 0031723C  38 00 FF FF */	li r0, -1
/* 8031B5E0 00317240  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 8031B5E4 00317244  7C 7F 1B 78 */	mr r31, r3
/* 8031B5E8 00317248  90 03 00 00 */	stw r0, 0(r3)
/* 8031B5EC 0031724C  41 82 00 30 */	beq lbl_8031B61C
/* 8031B5F0 00317250  7C 83 23 78 */	mr r3, r4
/* 8031B5F4 00317254  38 81 00 08 */	addi r4, r1, 8
/* 8031B5F8 00317258  4B FF EC A9 */	bl VFipf2_finfo
/* 8031B5FC 0031725C  2C 03 00 00 */	cmpwi r3, 0
/* 8031B600 00317260  40 82 00 14 */	bne lbl_8031B614
/* 8031B604 00317264  80 01 00 08 */	lwz r0, 8(r1)
/* 8031B608 00317268  38 60 00 00 */	li r3, 0
/* 8031B60C 0031726C  90 1F 00 00 */	stw r0, 0(r31)
/* 8031B610 00317270  48 00 00 10 */	b lbl_8031B620
lbl_8031B614:
/* 8031B614 00317274  4B FF EC 45 */	bl VFipf2_errnum
/* 8031B618 00317278  48 00 00 08 */	b lbl_8031B620
lbl_8031B61C:
/* 8031B61C 0031727C  38 60 FF FF */	li r3, -1
lbl_8031B620:
/* 8031B620 00317280  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8031B624 00317284  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 8031B628 00317288  7C 08 03 A6 */	mtlr r0
/* 8031B62C 0031728C  38 21 00 30 */	addi r1, r1, 0x30
/* 8031B630 00317290  4E 80 00 20 */	blr

.global VFSysGetLastError
VFSysGetLastError:
/* 8031B634 00317294  80 6D AF F4 */	lwz r3, lbl_806402B4-_SDA_BASE_(r13)
/* 8031B638 00317298  4E 80 00 20 */	blr

.global VFSysGetLastDeviceError_current
VFSysGetLastDeviceError_current:
/* 8031B63C 0031729C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8031B640 003172A0  7C 08 02 A6 */	mflr r0
/* 8031B644 003172A4  90 01 00 14 */	stw r0, 0x14(r1)
/* 8031B648 003172A8  4B FF E3 BD */	bl VFiPFVOL_GetCurrentVolume
/* 8031B64C 003172AC  2C 03 00 00 */	cmpwi r3, 0
/* 8031B650 003172B0  41 82 00 64 */	beq lbl_8031B6B4
/* 8031B654 003172B4  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031B658 003172B8  2C 00 00 00 */	cmpwi r0, 0
/* 8031B65C 003172BC  41 82 00 14 */	beq lbl_8031B670
/* 8031B660 003172C0  80 CD B0 00 */	lwz r6, lbl_806402C0-_SDA_BASE_(r13)
/* 8031B664 003172C4  2C 06 00 00 */	cmpwi r6, 0
/* 8031B668 003172C8  41 82 00 08 */	beq lbl_8031B670
/* 8031B66C 003172CC  48 00 00 08 */	b lbl_8031B674
lbl_8031B670:
/* 8031B670 003172D0  38 C0 00 00 */	li r6, 0
lbl_8031B674:
/* 8031B674 003172D4  1C 00 01 40 */	mulli r0, r0, 0x140
/* 8031B678 003172D8  7C A6 02 14 */	add r5, r6, r0
/* 8031B67C 003172DC  48 00 00 30 */	b lbl_8031B6AC
lbl_8031B680:
/* 8031B680 003172E0  80 06 00 00 */	lwz r0, 0(r6)
/* 8031B684 003172E4  2C 00 00 00 */	cmpwi r0, 0
/* 8031B688 003172E8  41 82 00 20 */	beq lbl_8031B6A8
/* 8031B68C 003172EC  88 86 00 14 */	lbz r4, 0x14(r6)
/* 8031B690 003172F0  88 03 18 7A */	lbz r0, 0x187a(r3)
/* 8031B694 003172F4  7C 84 07 74 */	extsb r4, r4
/* 8031B698 003172F8  7C 00 07 74 */	extsb r0, r0
/* 8031B69C 003172FC  7C 04 00 00 */	cmpw r4, r0
/* 8031B6A0 00317300  40 82 00 08 */	bne lbl_8031B6A8
/* 8031B6A4 00317304  48 00 00 14 */	b lbl_8031B6B8
lbl_8031B6A8:
/* 8031B6A8 00317308  38 C6 01 40 */	addi r6, r6, 0x140
lbl_8031B6AC:
/* 8031B6AC 0031730C  7C 06 28 40 */	cmplw r6, r5
/* 8031B6B0 00317310  40 82 FF D0 */	bne lbl_8031B680
lbl_8031B6B4:
/* 8031B6B4 00317314  38 C0 00 00 */	li r6, 0
lbl_8031B6B8:
/* 8031B6B8 00317318  2C 06 00 00 */	cmpwi r6, 0
/* 8031B6BC 0031731C  41 82 00 18 */	beq lbl_8031B6D4
/* 8031B6C0 00317320  80 66 00 08 */	lwz r3, 8(r6)
/* 8031B6C4 00317324  2C 03 00 00 */	cmpwi r3, 0
/* 8031B6C8 00317328  41 82 00 0C */	beq lbl_8031B6D4
/* 8031B6CC 0031732C  48 00 06 01 */	bl dCommon_getLastDeviceErrorFromDisk
/* 8031B6D0 00317330  48 00 00 08 */	b lbl_8031B6D8
lbl_8031B6D4:
/* 8031B6D4 00317334  38 60 FF FF */	li r3, -1
lbl_8031B6D8:
/* 8031B6D8 00317338  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031B6DC 0031733C  7C 08 03 A6 */	mtlr r0
/* 8031B6E0 00317340  38 21 00 10 */	addi r1, r1, 0x10
/* 8031B6E4 00317344  4E 80 00 20 */	blr

.global VFSysGetLastDeviceError
VFSysGetLastDeviceError:
/* 8031B6E8 00317348  80 0D AF F0 */	lwz r0, lbl_806402B0-_SDA_BASE_(r13)
/* 8031B6EC 0031734C  7C 03 00 40 */	cmplw r3, r0
/* 8031B6F0 00317350  40 80 00 1C */	bge lbl_8031B70C
/* 8031B6F4 00317354  80 8D B0 00 */	lwz r4, lbl_806402C0-_SDA_BASE_(r13)
/* 8031B6F8 00317358  2C 04 00 00 */	cmpwi r4, 0
/* 8031B6FC 0031735C  41 82 00 10 */	beq lbl_8031B70C
/* 8031B700 00317360  1C 03 01 40 */	mulli r0, r3, 0x140
/* 8031B704 00317364  7C 64 02 14 */	add r3, r4, r0
/* 8031B708 00317368  48 00 00 08 */	b lbl_8031B710
lbl_8031B70C:
/* 8031B70C 0031736C  38 60 00 00 */	li r3, 0
lbl_8031B710:
/* 8031B710 00317370  2C 03 00 00 */	cmpwi r3, 0
/* 8031B714 00317374  41 82 00 14 */	beq lbl_8031B728
/* 8031B718 00317378  80 63 00 08 */	lwz r3, 8(r3)
/* 8031B71C 0031737C  2C 03 00 00 */	cmpwi r3, 0
/* 8031B720 00317380  41 82 00 08 */	beq lbl_8031B728
/* 8031B724 00317384  48 00 05 A8 */	b dCommon_getLastDeviceErrorFromDisk
lbl_8031B728:
/* 8031B728 00317388  38 60 FF FF */	li r3, -1
/* 8031B72C 0031738C  4E 80 00 20 */	blr