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
|