summaryrefslogtreecommitdiff
path: root/asm/SDK/VF/pf_file.s
blob: d1cb8fe15b6e0697ab2e8c8c1b7bb8b9b60bebc7 (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
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
.include "macros.inc"

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

.global VFiPFFILE_Cursor_AdvanceToRead
VFiPFFILE_Cursor_AdvanceToRead:
/* 80312814 0030E474  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80312818 0030E478  7C 08 02 A6 */	mflr r0
/* 8031281C 0030E47C  2C 03 00 00 */	cmpwi r3, 0
/* 80312820 0030E480  90 01 00 14 */	stw r0, 0x14(r1)
/* 80312824 0030E484  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80312828 0030E488  3B E0 00 01 */	li r31, 1
/* 8031282C 0030E48C  40 82 00 0C */	bne lbl_80312838
/* 80312830 0030E490  39 20 00 00 */	li r9, 0
/* 80312834 0030E494  48 00 00 0C */	b lbl_80312840
lbl_80312838:
/* 80312838 0030E498  80 C3 00 08 */	lwz r6, 8(r3)
/* 8031283C 0030E49C  81 26 02 68 */	lwz r9, 0x268(r6)
lbl_80312840:
/* 80312840 0030E4A0  80 C3 00 08 */	lwz r6, 8(r3)
/* 80312844 0030E4A4  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 80312848 0030E4A8  A1 03 00 28 */	lhz r8, 0x28(r3)
/* 8031284C 0030E4AC  81 46 02 64 */	lwz r10, 0x264(r6)
/* 80312850 0030E4B0  7C 00 22 14 */	add r0, r0, r4
/* 80312854 0030E4B4  88 E9 00 20 */	lbz r7, 0x20(r9)
/* 80312858 0030E4B8  7D 08 22 14 */	add r8, r8, r4
/* 8031285C 0030E4BC  7C 00 50 40 */	cmplw r0, r10
/* 80312860 0030E4C0  7D 00 3C 30 */	srw r0, r8, r7
/* 80312864 0030E4C4  7C E5 02 14 */	add r7, r5, r0
/* 80312868 0030E4C8  40 80 00 34 */	bge lbl_8031289C
/* 8031286C 0030E4CC  A0 A9 00 00 */	lhz r5, 0(r9)
/* 80312870 0030E4D0  38 05 FF FF */	addi r0, r5, -1
/* 80312874 0030E4D4  7C 00 40 39 */	and. r0, r0, r8
/* 80312878 0030E4D8  41 82 00 0C */	beq lbl_80312884
/* 8031287C 0030E4DC  90 E3 00 20 */	stw r7, 0x20(r3)
/* 80312880 0030E4E0  48 00 00 0C */	b lbl_8031288C
lbl_80312884:
/* 80312884 0030E4E4  38 00 FF FF */	li r0, -1
/* 80312888 0030E4E8  90 03 00 20 */	stw r0, 0x20(r3)
lbl_8031288C:
/* 8031288C 0030E4EC  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 80312890 0030E4F0  7C 00 22 14 */	add r0, r0, r4
/* 80312894 0030E4F4  90 03 00 1C */	stw r0, 0x1c(r3)
/* 80312898 0030E4F8  48 00 00 40 */	b lbl_803128D8
lbl_8031289C:
/* 8031289C 0030E4FC  2C 0A 00 00 */	cmpwi r10, 0
/* 803128A0 0030E500  40 82 00 24 */	bne lbl_803128C4
/* 803128A4 0030E504  38 A0 FF FF */	li r5, -1
/* 803128A8 0030E508  38 00 00 00 */	li r0, 0
/* 803128AC 0030E50C  2C 04 00 00 */	cmpwi r4, 0
/* 803128B0 0030E510  90 A3 00 20 */	stw r5, 0x20(r3)
/* 803128B4 0030E514  90 03 00 1C */	stw r0, 0x1c(r3)
/* 803128B8 0030E518  41 82 00 20 */	beq lbl_803128D8
/* 803128BC 0030E51C  3B E0 00 00 */	li r31, 0
/* 803128C0 0030E520  48 00 00 18 */	b lbl_803128D8
lbl_803128C4:
/* 803128C4 0030E524  38 00 FF FF */	li r0, -1
/* 803128C8 0030E528  3B E0 00 00 */	li r31, 0
/* 803128CC 0030E52C  90 03 00 20 */	stw r0, 0x20(r3)
/* 803128D0 0030E530  80 06 02 64 */	lwz r0, 0x264(r6)
/* 803128D4 0030E534  90 03 00 1C */	stw r0, 0x1c(r3)
lbl_803128D8:
/* 803128D8 0030E538  2C 03 00 00 */	cmpwi r3, 0
/* 803128DC 0030E53C  40 82 00 0C */	bne lbl_803128E8
/* 803128E0 0030E540  38 A0 00 00 */	li r5, 0
/* 803128E4 0030E544  48 00 00 0C */	b lbl_803128F0
lbl_803128E8:
/* 803128E8 0030E548  80 83 00 08 */	lwz r4, 8(r3)
/* 803128EC 0030E54C  80 A4 02 68 */	lwz r5, 0x268(r4)
lbl_803128F0:
/* 803128F0 0030E550  80 C3 00 1C */	lwz r6, 0x1c(r3)
/* 803128F4 0030E554  7C E4 3B 78 */	mr r4, r7
/* 803128F8 0030E558  88 05 00 20 */	lbz r0, 0x20(r5)
/* 803128FC 0030E55C  7C C0 04 30 */	srw r0, r6, r0
/* 80312900 0030E560  90 03 00 24 */	stw r0, 0x24(r3)
/* 80312904 0030E564  A0 A5 00 00 */	lhz r5, 0(r5)
/* 80312908 0030E568  38 05 FF FF */	addi r0, r5, -1
/* 8031290C 0030E56C  7C C0 00 38 */	and r0, r6, r0
/* 80312910 0030E570  B0 03 00 28 */	sth r0, 0x28(r3)
/* 80312914 0030E574  4B FF 84 6D */	bl VFiPFCLUSTER_UpdateLastAccessCluster
/* 80312918 0030E578  7F E3 FB 78 */	mr r3, r31
/* 8031291C 0030E57C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80312920 0030E580  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80312924 0030E584  7C 08 03 A6 */	mtlr r0
/* 80312928 0030E588  38 21 00 10 */	addi r1, r1, 0x10
/* 8031292C 0030E58C  4E 80 00 20 */	blr

.global VFiPFFILE_Cursor_ReadHeadSector
VFiPFFILE_Cursor_ReadHeadSector:
/* 80312930 0030E590  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80312934 0030E594  7C 08 02 A6 */	mflr r0
/* 80312938 0030E598  90 01 00 34 */	stw r0, 0x34(r1)
/* 8031293C 0030E59C  39 61 00 30 */	addi r11, r1, 0x30
/* 80312940 0030E5A0  4B EB 47 E9 */	bl _savegpr_27
/* 80312944 0030E5A4  38 00 00 00 */	li r0, 0
/* 80312948 0030E5A8  7C BD 2B 78 */	mr r29, r5
/* 8031294C 0030E5AC  90 07 00 00 */	stw r0, 0(r7)
/* 80312950 0030E5B0  7C 7B 1B 78 */	mr r27, r3
/* 80312954 0030E5B4  7C 9C 23 78 */	mr r28, r4
/* 80312958 0030E5B8  7C DE 33 78 */	mr r30, r6
/* 8031295C 0030E5BC  A0 A4 00 28 */	lhz r5, 0x28(r4)
/* 80312960 0030E5C0  7C FF 3B 78 */	mr r31, r7
/* 80312964 0030E5C4  2C 05 00 00 */	cmpwi r5, 0
/* 80312968 0030E5C8  40 82 00 0C */	bne lbl_80312974
/* 8031296C 0030E5CC  38 60 00 00 */	li r3, 0
/* 80312970 0030E5D0  48 00 02 40 */	b lbl_80312BB0
lbl_80312974:
/* 80312974 0030E5D4  A0 03 00 00 */	lhz r0, 0(r3)
/* 80312978 0030E5D8  7C E5 00 50 */	subf r7, r5, r0
/* 8031297C 0030E5DC  7C 06 38 40 */	cmplw r6, r7
/* 80312980 0030E5E0  40 81 00 08 */	ble lbl_80312988
/* 80312984 0030E5E4  7C FE 3B 78 */	mr r30, r7
lbl_80312988:
/* 80312988 0030E5E8  80 C4 00 08 */	lwz r6, 8(r4)
/* 8031298C 0030E5EC  80 64 00 1C */	lwz r3, 0x1c(r4)
/* 80312990 0030E5F0  80 A6 02 64 */	lwz r5, 0x264(r6)
/* 80312994 0030E5F4  7C 03 F2 14 */	add r0, r3, r30
/* 80312998 0030E5F8  7C 00 28 40 */	cmplw r0, r5
/* 8031299C 0030E5FC  40 81 00 18 */	ble lbl_803129B4
/* 803129A0 0030E600  7F C3 28 50 */	subf r30, r3, r5
/* 803129A4 0030E604  7C 1E 38 40 */	cmplw r30, r7
/* 803129A8 0030E608  40 80 00 0C */	bge lbl_803129B4
/* 803129AC 0030E60C  38 60 00 00 */	li r3, 0
/* 803129B0 0030E610  48 00 02 00 */	b lbl_80312BB0
lbl_803129B4:
/* 803129B4 0030E614  80 A4 00 20 */	lwz r5, 0x20(r4)
/* 803129B8 0030E618  3C 05 00 01 */	addis r0, r5, 1
/* 803129BC 0030E61C  28 00 FF FF */	cmplwi r0, 0xffff
/* 803129C0 0030E620  40 82 01 A0 */	bne lbl_80312B60
/* 803129C4 0030E624  80 84 00 24 */	lwz r4, 0x24(r4)
/* 803129C8 0030E628  38 66 00 04 */	addi r3, r6, 4
/* 803129CC 0030E62C  38 DC 00 20 */	addi r6, r28, 0x20
/* 803129D0 0030E630  38 A0 00 00 */	li r5, 0
/* 803129D4 0030E634  4B FF D5 95 */	bl VFiPFFAT_GetSectorSpecified
/* 803129D8 0030E638  2C 03 00 00 */	cmpwi r3, 0
/* 803129DC 0030E63C  41 82 00 08 */	beq lbl_803129E4
/* 803129E0 0030E640  48 00 01 D0 */	b lbl_80312BB0
lbl_803129E4:
/* 803129E4 0030E644  80 BC 00 20 */	lwz r5, 0x20(r28)
/* 803129E8 0030E648  3C 05 00 01 */	addis r0, r5, 1
/* 803129EC 0030E64C  28 00 FF FF */	cmplwi r0, 0xffff
/* 803129F0 0030E650  40 82 00 B4 */	bne lbl_80312AA4
/* 803129F4 0030E654  80 7C 00 08 */	lwz r3, 8(r28)
/* 803129F8 0030E658  2C 1C 00 00 */	cmpwi r28, 0
/* 803129FC 0030E65C  81 03 02 64 */	lwz r8, 0x264(r3)
/* 80312A00 0030E660  40 82 00 0C */	bne lbl_80312A0C
/* 80312A04 0030E664  38 80 00 00 */	li r4, 0
/* 80312A08 0030E668  48 00 00 08 */	b lbl_80312A10
lbl_80312A0C:
/* 80312A0C 0030E66C  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80312A10:
/* 80312A10 0030E670  A0 64 00 00 */	lhz r3, 0(r4)
/* 80312A14 0030E674  80 1C 00 1C */	lwz r0, 0x1c(r28)
/* 80312A18 0030E678  38 63 FF FF */	addi r3, r3, -1
/* 80312A1C 0030E67C  88 84 00 20 */	lbz r4, 0x20(r4)
/* 80312A20 0030E680  7C 07 18 38 */	and r7, r0, r3
/* 80312A24 0030E684  7C 05 24 30 */	srw r5, r0, r4
/* 80312A28 0030E688  7D 03 18 38 */	and r3, r8, r3
/* 80312A2C 0030E68C  7C C7 00 D0 */	neg r6, r7
/* 80312A30 0030E690  7D 04 24 30 */	srw r4, r8, r4
/* 80312A34 0030E694  7C 03 00 D0 */	neg r0, r3
/* 80312A38 0030E698  7C 00 1B 78 */	or r0, r0, r3
/* 80312A3C 0030E69C  7C C6 3B 78 */	or r6, r6, r7
/* 80312A40 0030E6A0  54 C3 0F FE */	srwi r3, r6, 0x1f
/* 80312A44 0030E6A4  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80312A48 0030E6A8  7C 65 1A 14 */	add r3, r5, r3
/* 80312A4C 0030E6AC  7C 04 02 14 */	add r0, r4, r0
/* 80312A50 0030E6B0  7C 03 00 40 */	cmplw r3, r0
/* 80312A54 0030E6B4  41 82 00 0C */	beq lbl_80312A60
/* 80312A58 0030E6B8  38 00 FF FF */	li r0, -1
/* 80312A5C 0030E6BC  90 1C 00 20 */	stw r0, 0x20(r28)
lbl_80312A60:
/* 80312A60 0030E6C0  2C 1C 00 00 */	cmpwi r28, 0
/* 80312A64 0030E6C4  91 1C 00 1C */	stw r8, 0x1c(r28)
/* 80312A68 0030E6C8  40 82 00 0C */	bne lbl_80312A74
/* 80312A6C 0030E6CC  38 80 00 00 */	li r4, 0
/* 80312A70 0030E6D0  48 00 00 0C */	b lbl_80312A7C
lbl_80312A74:
/* 80312A74 0030E6D4  80 7C 00 08 */	lwz r3, 8(r28)
/* 80312A78 0030E6D8  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80312A7C:
/* 80312A7C 0030E6DC  80 BC 00 1C */	lwz r5, 0x1c(r28)
/* 80312A80 0030E6E0  38 60 00 1C */	li r3, 0x1c
/* 80312A84 0030E6E4  88 04 00 20 */	lbz r0, 0x20(r4)
/* 80312A88 0030E6E8  7C A0 04 30 */	srw r0, r5, r0
/* 80312A8C 0030E6EC  90 1C 00 24 */	stw r0, 0x24(r28)
/* 80312A90 0030E6F0  A0 84 00 00 */	lhz r4, 0(r4)
/* 80312A94 0030E6F4  38 04 FF FF */	addi r0, r4, -1
/* 80312A98 0030E6F8  7C A0 00 38 */	and r0, r5, r0
/* 80312A9C 0030E6FC  B0 1C 00 28 */	sth r0, 0x28(r28)
/* 80312AA0 0030E700  48 00 01 10 */	b lbl_80312BB0
lbl_80312AA4:
/* 80312AA4 0030E704  80 7C 00 08 */	lwz r3, 8(r28)
/* 80312AA8 0030E708  80 DC 00 1C */	lwz r6, 0x1c(r28)
/* 80312AAC 0030E70C  81 03 02 64 */	lwz r8, 0x264(r3)
/* 80312AB0 0030E710  7C 06 F2 14 */	add r0, r6, r30
/* 80312AB4 0030E714  7C 00 40 40 */	cmplw r0, r8
/* 80312AB8 0030E718  40 81 00 A8 */	ble lbl_80312B60
/* 80312ABC 0030E71C  2C 1C 00 00 */	cmpwi r28, 0
/* 80312AC0 0030E720  40 82 00 0C */	bne lbl_80312ACC
/* 80312AC4 0030E724  38 80 00 00 */	li r4, 0
/* 80312AC8 0030E728  48 00 00 08 */	b lbl_80312AD0
lbl_80312ACC:
/* 80312ACC 0030E72C  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80312AD0:
/* 80312AD0 0030E730  A0 64 00 00 */	lhz r3, 0(r4)
/* 80312AD4 0030E734  88 84 00 20 */	lbz r4, 0x20(r4)
/* 80312AD8 0030E738  38 03 FF FF */	addi r0, r3, -1
/* 80312ADC 0030E73C  7C C7 00 38 */	and r7, r6, r0
/* 80312AE0 0030E740  7C C5 24 30 */	srw r5, r6, r4
/* 80312AE4 0030E744  7D 03 00 38 */	and r3, r8, r0
/* 80312AE8 0030E748  7D 04 24 30 */	srw r4, r8, r4
/* 80312AEC 0030E74C  7C C7 00 D0 */	neg r6, r7
/* 80312AF0 0030E750  7C 03 00 D0 */	neg r0, r3
/* 80312AF4 0030E754  7C 00 1B 78 */	or r0, r0, r3
/* 80312AF8 0030E758  7C C6 3B 78 */	or r6, r6, r7
/* 80312AFC 0030E75C  54 C3 0F FE */	srwi r3, r6, 0x1f
/* 80312B00 0030E760  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80312B04 0030E764  7C 65 1A 14 */	add r3, r5, r3
/* 80312B08 0030E768  7C 04 02 14 */	add r0, r4, r0
/* 80312B0C 0030E76C  7C 03 00 40 */	cmplw r3, r0
/* 80312B10 0030E770  41 82 00 0C */	beq lbl_80312B1C
/* 80312B14 0030E774  38 00 FF FF */	li r0, -1
/* 80312B18 0030E778  90 1C 00 20 */	stw r0, 0x20(r28)
lbl_80312B1C:
/* 80312B1C 0030E77C  2C 1C 00 00 */	cmpwi r28, 0
/* 80312B20 0030E780  91 1C 00 1C */	stw r8, 0x1c(r28)
/* 80312B24 0030E784  40 82 00 0C */	bne lbl_80312B30
/* 80312B28 0030E788  38 80 00 00 */	li r4, 0
/* 80312B2C 0030E78C  48 00 00 0C */	b lbl_80312B38
lbl_80312B30:
/* 80312B30 0030E790  80 7C 00 08 */	lwz r3, 8(r28)
/* 80312B34 0030E794  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80312B38:
/* 80312B38 0030E798  80 BC 00 1C */	lwz r5, 0x1c(r28)
/* 80312B3C 0030E79C  38 60 00 1B */	li r3, 0x1b
/* 80312B40 0030E7A0  88 04 00 20 */	lbz r0, 0x20(r4)
/* 80312B44 0030E7A4  7C A0 04 30 */	srw r0, r5, r0
/* 80312B48 0030E7A8  90 1C 00 24 */	stw r0, 0x24(r28)
/* 80312B4C 0030E7AC  A0 84 00 00 */	lhz r4, 0(r4)
/* 80312B50 0030E7B0  38 04 FF FF */	addi r0, r4, -1
/* 80312B54 0030E7B4  7C A0 00 38 */	and r0, r5, r0
/* 80312B58 0030E7B8  B0 1C 00 28 */	sth r0, 0x28(r28)
/* 80312B5C 0030E7BC  48 00 00 54 */	b lbl_80312BB0
lbl_80312B60:
/* 80312B60 0030E7C0  A0 DC 00 28 */	lhz r6, 0x28(r28)
/* 80312B64 0030E7C4  7F 63 DB 78 */	mr r3, r27
/* 80312B68 0030E7C8  7F A4 EB 78 */	mr r4, r29
/* 80312B6C 0030E7CC  7F C7 F3 78 */	mr r7, r30
/* 80312B70 0030E7D0  39 01 00 08 */	addi r8, r1, 8
/* 80312B74 0030E7D4  39 20 00 01 */	li r9, 1
/* 80312B78 0030E7D8  48 00 5E B1 */	bl VFiPFSEC_ReadData
/* 80312B7C 0030E7DC  2C 03 00 00 */	cmpwi r3, 0
/* 80312B80 0030E7E0  41 82 00 14 */	beq lbl_80312B94
/* 80312B84 0030E7E4  80 01 00 08 */	lwz r0, 8(r1)
/* 80312B88 0030E7E8  2C 00 00 00 */	cmpwi r0, 0
/* 80312B8C 0030E7EC  40 82 00 08 */	bne lbl_80312B94
/* 80312B90 0030E7F0  48 00 00 20 */	b lbl_80312BB0
lbl_80312B94:
/* 80312B94 0030E7F4  80 01 00 08 */	lwz r0, 8(r1)
/* 80312B98 0030E7F8  7F 83 E3 78 */	mr r3, r28
/* 80312B9C 0030E7FC  90 1F 00 00 */	stw r0, 0(r31)
/* 80312BA0 0030E800  80 81 00 08 */	lwz r4, 8(r1)
/* 80312BA4 0030E804  80 BC 00 20 */	lwz r5, 0x20(r28)
/* 80312BA8 0030E808  4B FF FC 6D */	bl VFiPFFILE_Cursor_AdvanceToRead
/* 80312BAC 0030E80C  38 60 00 00 */	li r3, 0
lbl_80312BB0:
/* 80312BB0 0030E810  39 61 00 30 */	addi r11, r1, 0x30
/* 80312BB4 0030E814  4B EB 45 C1 */	bl _restgpr_27
/* 80312BB8 0030E818  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80312BBC 0030E81C  7C 08 03 A6 */	mtlr r0
/* 80312BC0 0030E820  38 21 00 30 */	addi r1, r1, 0x30
/* 80312BC4 0030E824  4E 80 00 20 */	blr

.global VFiPFFILE_Cursor_ReadBodySectors
VFiPFFILE_Cursor_ReadBodySectors:
/* 80312BC8 0030E828  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80312BCC 0030E82C  7C 08 02 A6 */	mflr r0
/* 80312BD0 0030E830  90 01 00 34 */	stw r0, 0x34(r1)
/* 80312BD4 0030E834  39 61 00 30 */	addi r11, r1, 0x30
/* 80312BD8 0030E838  4B EB 45 51 */	bl _savegpr_27
/* 80312BDC 0030E83C  38 00 00 00 */	li r0, 0
/* 80312BE0 0030E840  7C 7B 1B 78 */	mr r27, r3
/* 80312BE4 0030E844  90 07 00 00 */	stw r0, 0(r7)
/* 80312BE8 0030E848  7C FE 3B 78 */	mr r30, r7
/* 80312BEC 0030E84C  7C 9F 23 78 */	mr r31, r4
/* 80312BF0 0030E850  7C DD 33 78 */	mr r29, r6
/* 80312BF4 0030E854  90 01 00 0C */	stw r0, 0xc(r1)
/* 80312BF8 0030E858  7C BC 2B 78 */	mr r28, r5
/* 80312BFC 0030E85C  7F A5 EB 78 */	mr r5, r29
/* 80312C00 0030E860  38 DF 00 20 */	addi r6, r31, 0x20
/* 80312C04 0030E864  80 64 00 08 */	lwz r3, 8(r4)
/* 80312C08 0030E868  38 E1 00 0C */	addi r7, r1, 0xc
/* 80312C0C 0030E86C  80 84 00 24 */	lwz r4, 0x24(r4)
/* 80312C10 0030E870  38 63 00 04 */	addi r3, r3, 4
/* 80312C14 0030E874  4B FF D5 01 */	bl VFiPFFAT_GetContinuousSector
/* 80312C18 0030E878  2C 03 00 00 */	cmpwi r3, 0
/* 80312C1C 0030E87C  41 82 00 08 */	beq lbl_80312C24
/* 80312C20 0030E880  48 00 01 68 */	b lbl_80312D88
lbl_80312C24:
/* 80312C24 0030E884  80 BF 00 20 */	lwz r5, 0x20(r31)
/* 80312C28 0030E888  3C 05 00 01 */	addis r0, r5, 1
/* 80312C2C 0030E88C  28 00 FF FF */	cmplwi r0, 0xffff
/* 80312C30 0030E890  40 82 00 B4 */	bne lbl_80312CE4
/* 80312C34 0030E894  80 7F 00 08 */	lwz r3, 8(r31)
/* 80312C38 0030E898  2C 1F 00 00 */	cmpwi r31, 0
/* 80312C3C 0030E89C  81 03 02 64 */	lwz r8, 0x264(r3)
/* 80312C40 0030E8A0  40 82 00 0C */	bne lbl_80312C4C
/* 80312C44 0030E8A4  38 80 00 00 */	li r4, 0
/* 80312C48 0030E8A8  48 00 00 08 */	b lbl_80312C50
lbl_80312C4C:
/* 80312C4C 0030E8AC  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80312C50:
/* 80312C50 0030E8B0  A0 64 00 00 */	lhz r3, 0(r4)
/* 80312C54 0030E8B4  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80312C58 0030E8B8  38 63 FF FF */	addi r3, r3, -1
/* 80312C5C 0030E8BC  88 84 00 20 */	lbz r4, 0x20(r4)
/* 80312C60 0030E8C0  7C 07 18 38 */	and r7, r0, r3
/* 80312C64 0030E8C4  7C 05 24 30 */	srw r5, r0, r4
/* 80312C68 0030E8C8  7D 03 18 38 */	and r3, r8, r3
/* 80312C6C 0030E8CC  7C C7 00 D0 */	neg r6, r7
/* 80312C70 0030E8D0  7D 04 24 30 */	srw r4, r8, r4
/* 80312C74 0030E8D4  7C 03 00 D0 */	neg r0, r3
/* 80312C78 0030E8D8  7C 00 1B 78 */	or r0, r0, r3
/* 80312C7C 0030E8DC  7C C6 3B 78 */	or r6, r6, r7
/* 80312C80 0030E8E0  54 C3 0F FE */	srwi r3, r6, 0x1f
/* 80312C84 0030E8E4  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80312C88 0030E8E8  7C 65 1A 14 */	add r3, r5, r3
/* 80312C8C 0030E8EC  7C 04 02 14 */	add r0, r4, r0
/* 80312C90 0030E8F0  7C 03 00 40 */	cmplw r3, r0
/* 80312C94 0030E8F4  41 82 00 0C */	beq lbl_80312CA0
/* 80312C98 0030E8F8  38 00 FF FF */	li r0, -1
/* 80312C9C 0030E8FC  90 1F 00 20 */	stw r0, 0x20(r31)
lbl_80312CA0:
/* 80312CA0 0030E900  2C 1F 00 00 */	cmpwi r31, 0
/* 80312CA4 0030E904  91 1F 00 1C */	stw r8, 0x1c(r31)
/* 80312CA8 0030E908  40 82 00 0C */	bne lbl_80312CB4
/* 80312CAC 0030E90C  38 80 00 00 */	li r4, 0
/* 80312CB0 0030E910  48 00 00 0C */	b lbl_80312CBC
lbl_80312CB4:
/* 80312CB4 0030E914  80 7F 00 08 */	lwz r3, 8(r31)
/* 80312CB8 0030E918  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80312CBC:
/* 80312CBC 0030E91C  80 BF 00 1C */	lwz r5, 0x1c(r31)
/* 80312CC0 0030E920  38 60 00 1C */	li r3, 0x1c
/* 80312CC4 0030E924  88 04 00 20 */	lbz r0, 0x20(r4)
/* 80312CC8 0030E928  7C A0 04 30 */	srw r0, r5, r0
/* 80312CCC 0030E92C  90 1F 00 24 */	stw r0, 0x24(r31)
/* 80312CD0 0030E930  A0 84 00 00 */	lhz r4, 0(r4)
/* 80312CD4 0030E934  38 04 FF FF */	addi r0, r4, -1
/* 80312CD8 0030E938  7C A0 00 38 */	and r0, r5, r0
/* 80312CDC 0030E93C  B0 1F 00 28 */	sth r0, 0x28(r31)
/* 80312CE0 0030E940  48 00 00 A8 */	b lbl_80312D88
lbl_80312CE4:
/* 80312CE4 0030E944  80 61 00 0C */	lwz r3, 0xc(r1)
/* 80312CE8 0030E948  88 1B 00 20 */	lbz r0, 0x20(r27)
/* 80312CEC 0030E94C  7C 60 00 30 */	slw r0, r3, r0
/* 80312CF0 0030E950  7C 1D 00 40 */	cmplw r29, r0
/* 80312CF4 0030E954  40 81 00 08 */	ble lbl_80312CFC
/* 80312CF8 0030E958  7C 1D 03 78 */	mr r29, r0
lbl_80312CFC:
/* 80312CFC 0030E95C  80 7F 00 08 */	lwz r3, 8(r31)
/* 80312D00 0030E960  80 9F 00 1C */	lwz r4, 0x1c(r31)
/* 80312D04 0030E964  80 63 02 64 */	lwz r3, 0x264(r3)
/* 80312D08 0030E968  7C 04 EA 14 */	add r0, r4, r29
/* 80312D0C 0030E96C  7C 00 18 40 */	cmplw r0, r3
/* 80312D10 0030E970  40 81 00 28 */	ble lbl_80312D38
/* 80312D14 0030E974  A0 DB 00 00 */	lhz r6, 0(r27)
/* 80312D18 0030E978  7F A4 18 50 */	subf r29, r4, r3
/* 80312D1C 0030E97C  38 06 FF FF */	addi r0, r6, -1
/* 80312D20 0030E980  7F A0 00 38 */	and r0, r29, r0
/* 80312D24 0030E984  7F A0 E8 50 */	subf r29, r0, r29
/* 80312D28 0030E988  7C 1D 30 40 */	cmplw r29, r6
/* 80312D2C 0030E98C  40 80 00 0C */	bge lbl_80312D38
/* 80312D30 0030E990  38 60 00 00 */	li r3, 0
/* 80312D34 0030E994  48 00 00 54 */	b lbl_80312D88
lbl_80312D38:
/* 80312D38 0030E998  A0 DF 00 28 */	lhz r6, 0x28(r31)
/* 80312D3C 0030E99C  7F 63 DB 78 */	mr r3, r27
/* 80312D40 0030E9A0  7F 84 E3 78 */	mr r4, r28
/* 80312D44 0030E9A4  7F A7 EB 78 */	mr r7, r29
/* 80312D48 0030E9A8  39 01 00 08 */	addi r8, r1, 8
/* 80312D4C 0030E9AC  39 20 00 01 */	li r9, 1
/* 80312D50 0030E9B0  48 00 5C D9 */	bl VFiPFSEC_ReadData
/* 80312D54 0030E9B4  2C 03 00 00 */	cmpwi r3, 0
/* 80312D58 0030E9B8  41 82 00 14 */	beq lbl_80312D6C
/* 80312D5C 0030E9BC  80 01 00 08 */	lwz r0, 8(r1)
/* 80312D60 0030E9C0  2C 00 00 00 */	cmpwi r0, 0
/* 80312D64 0030E9C4  40 82 00 08 */	bne lbl_80312D6C
/* 80312D68 0030E9C8  48 00 00 20 */	b lbl_80312D88
lbl_80312D6C:
/* 80312D6C 0030E9CC  80 01 00 08 */	lwz r0, 8(r1)
/* 80312D70 0030E9D0  7F E3 FB 78 */	mr r3, r31
/* 80312D74 0030E9D4  90 1E 00 00 */	stw r0, 0(r30)
/* 80312D78 0030E9D8  80 81 00 08 */	lwz r4, 8(r1)
/* 80312D7C 0030E9DC  80 BF 00 20 */	lwz r5, 0x20(r31)
/* 80312D80 0030E9E0  4B FF FA 95 */	bl VFiPFFILE_Cursor_AdvanceToRead
/* 80312D84 0030E9E4  38 60 00 00 */	li r3, 0
lbl_80312D88:
/* 80312D88 0030E9E8  39 61 00 30 */	addi r11, r1, 0x30
/* 80312D8C 0030E9EC  4B EB 43 E9 */	bl _restgpr_27
/* 80312D90 0030E9F0  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80312D94 0030E9F4  7C 08 03 A6 */	mtlr r0
/* 80312D98 0030E9F8  38 21 00 30 */	addi r1, r1, 0x30
/* 80312D9C 0030E9FC  4E 80 00 20 */	blr

.global VFiPFFILE_Cursor_ReadTailSector
VFiPFFILE_Cursor_ReadTailSector:
/* 80312DA0 0030EA00  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80312DA4 0030EA04  7C 08 02 A6 */	mflr r0
/* 80312DA8 0030EA08  90 01 00 34 */	stw r0, 0x34(r1)
/* 80312DAC 0030EA0C  39 61 00 30 */	addi r11, r1, 0x30
/* 80312DB0 0030EA10  4B EB 43 79 */	bl _savegpr_27
/* 80312DB4 0030EA14  38 00 00 00 */	li r0, 0
/* 80312DB8 0030EA18  2C 06 00 00 */	cmpwi r6, 0
/* 80312DBC 0030EA1C  90 07 00 00 */	stw r0, 0(r7)
/* 80312DC0 0030EA20  7C 7B 1B 78 */	mr r27, r3
/* 80312DC4 0030EA24  7C 9F 23 78 */	mr r31, r4
/* 80312DC8 0030EA28  7C BC 2B 78 */	mr r28, r5
/* 80312DCC 0030EA2C  7C DD 33 78 */	mr r29, r6
/* 80312DD0 0030EA30  7C FE 3B 78 */	mr r30, r7
/* 80312DD4 0030EA34  40 82 00 0C */	bne lbl_80312DE0
/* 80312DD8 0030EA38  38 60 00 00 */	li r3, 0
/* 80312DDC 0030EA3C  48 00 02 28 */	b lbl_80313004
lbl_80312DE0:
/* 80312DE0 0030EA40  80 E4 00 08 */	lwz r7, 8(r4)
/* 80312DE4 0030EA44  80 64 00 1C */	lwz r3, 0x1c(r4)
/* 80312DE8 0030EA48  80 A7 02 64 */	lwz r5, 0x264(r7)
/* 80312DEC 0030EA4C  7C 03 32 14 */	add r0, r3, r6
/* 80312DF0 0030EA50  7C 00 28 40 */	cmplw r0, r5
/* 80312DF4 0030EA54  40 81 00 14 */	ble lbl_80312E08
/* 80312DF8 0030EA58  7F A3 28 51 */	subf. r29, r3, r5
/* 80312DFC 0030EA5C  40 82 00 0C */	bne lbl_80312E08
/* 80312E00 0030EA60  38 60 00 00 */	li r3, 0
/* 80312E04 0030EA64  48 00 02 00 */	b lbl_80313004
lbl_80312E08:
/* 80312E08 0030EA68  80 A4 00 20 */	lwz r5, 0x20(r4)
/* 80312E0C 0030EA6C  3C 05 00 01 */	addis r0, r5, 1
/* 80312E10 0030EA70  28 00 FF FF */	cmplwi r0, 0xffff
/* 80312E14 0030EA74  40 82 01 A0 */	bne lbl_80312FB4
/* 80312E18 0030EA78  80 84 00 24 */	lwz r4, 0x24(r4)
/* 80312E1C 0030EA7C  38 67 00 04 */	addi r3, r7, 4
/* 80312E20 0030EA80  38 DF 00 20 */	addi r6, r31, 0x20
/* 80312E24 0030EA84  38 A0 00 00 */	li r5, 0
/* 80312E28 0030EA88  4B FF D1 41 */	bl VFiPFFAT_GetSectorSpecified
/* 80312E2C 0030EA8C  2C 03 00 00 */	cmpwi r3, 0
/* 80312E30 0030EA90  41 82 00 08 */	beq lbl_80312E38
/* 80312E34 0030EA94  48 00 01 D0 */	b lbl_80313004
lbl_80312E38:
/* 80312E38 0030EA98  80 BF 00 20 */	lwz r5, 0x20(r31)
/* 80312E3C 0030EA9C  3C 05 00 01 */	addis r0, r5, 1
/* 80312E40 0030EAA0  28 00 FF FF */	cmplwi r0, 0xffff
/* 80312E44 0030EAA4  40 82 00 B4 */	bne lbl_80312EF8
/* 80312E48 0030EAA8  80 7F 00 08 */	lwz r3, 8(r31)
/* 80312E4C 0030EAAC  2C 1F 00 00 */	cmpwi r31, 0
/* 80312E50 0030EAB0  81 03 02 64 */	lwz r8, 0x264(r3)
/* 80312E54 0030EAB4  40 82 00 0C */	bne lbl_80312E60
/* 80312E58 0030EAB8  38 80 00 00 */	li r4, 0
/* 80312E5C 0030EABC  48 00 00 08 */	b lbl_80312E64
lbl_80312E60:
/* 80312E60 0030EAC0  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80312E64:
/* 80312E64 0030EAC4  A0 64 00 00 */	lhz r3, 0(r4)
/* 80312E68 0030EAC8  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80312E6C 0030EACC  38 63 FF FF */	addi r3, r3, -1
/* 80312E70 0030EAD0  88 84 00 20 */	lbz r4, 0x20(r4)
/* 80312E74 0030EAD4  7C 07 18 38 */	and r7, r0, r3
/* 80312E78 0030EAD8  7C 05 24 30 */	srw r5, r0, r4
/* 80312E7C 0030EADC  7D 03 18 38 */	and r3, r8, r3
/* 80312E80 0030EAE0  7C C7 00 D0 */	neg r6, r7
/* 80312E84 0030EAE4  7D 04 24 30 */	srw r4, r8, r4
/* 80312E88 0030EAE8  7C 03 00 D0 */	neg r0, r3
/* 80312E8C 0030EAEC  7C 00 1B 78 */	or r0, r0, r3
/* 80312E90 0030EAF0  7C C6 3B 78 */	or r6, r6, r7
/* 80312E94 0030EAF4  54 C3 0F FE */	srwi r3, r6, 0x1f
/* 80312E98 0030EAF8  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80312E9C 0030EAFC  7C 65 1A 14 */	add r3, r5, r3
/* 80312EA0 0030EB00  7C 04 02 14 */	add r0, r4, r0
/* 80312EA4 0030EB04  7C 03 00 40 */	cmplw r3, r0
/* 80312EA8 0030EB08  41 82 00 0C */	beq lbl_80312EB4
/* 80312EAC 0030EB0C  38 00 FF FF */	li r0, -1
/* 80312EB0 0030EB10  90 1F 00 20 */	stw r0, 0x20(r31)
lbl_80312EB4:
/* 80312EB4 0030EB14  2C 1F 00 00 */	cmpwi r31, 0
/* 80312EB8 0030EB18  91 1F 00 1C */	stw r8, 0x1c(r31)
/* 80312EBC 0030EB1C  40 82 00 0C */	bne lbl_80312EC8
/* 80312EC0 0030EB20  38 80 00 00 */	li r4, 0
/* 80312EC4 0030EB24  48 00 00 0C */	b lbl_80312ED0
lbl_80312EC8:
/* 80312EC8 0030EB28  80 7F 00 08 */	lwz r3, 8(r31)
/* 80312ECC 0030EB2C  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80312ED0:
/* 80312ED0 0030EB30  80 BF 00 1C */	lwz r5, 0x1c(r31)
/* 80312ED4 0030EB34  38 60 00 1C */	li r3, 0x1c
/* 80312ED8 0030EB38  88 04 00 20 */	lbz r0, 0x20(r4)
/* 80312EDC 0030EB3C  7C A0 04 30 */	srw r0, r5, r0
/* 80312EE0 0030EB40  90 1F 00 24 */	stw r0, 0x24(r31)
/* 80312EE4 0030EB44  A0 84 00 00 */	lhz r4, 0(r4)
/* 80312EE8 0030EB48  38 04 FF FF */	addi r0, r4, -1
/* 80312EEC 0030EB4C  7C A0 00 38 */	and r0, r5, r0
/* 80312EF0 0030EB50  B0 1F 00 28 */	sth r0, 0x28(r31)
/* 80312EF4 0030EB54  48 00 01 10 */	b lbl_80313004
lbl_80312EF8:
/* 80312EF8 0030EB58  80 7F 00 08 */	lwz r3, 8(r31)
/* 80312EFC 0030EB5C  80 DF 00 1C */	lwz r6, 0x1c(r31)
/* 80312F00 0030EB60  81 03 02 64 */	lwz r8, 0x264(r3)
/* 80312F04 0030EB64  7C 06 EA 14 */	add r0, r6, r29
/* 80312F08 0030EB68  7C 00 40 40 */	cmplw r0, r8
/* 80312F0C 0030EB6C  40 81 00 A8 */	ble lbl_80312FB4
/* 80312F10 0030EB70  2C 1F 00 00 */	cmpwi r31, 0
/* 80312F14 0030EB74  40 82 00 0C */	bne lbl_80312F20
/* 80312F18 0030EB78  38 80 00 00 */	li r4, 0
/* 80312F1C 0030EB7C  48 00 00 08 */	b lbl_80312F24
lbl_80312F20:
/* 80312F20 0030EB80  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80312F24:
/* 80312F24 0030EB84  A0 64 00 00 */	lhz r3, 0(r4)
/* 80312F28 0030EB88  88 84 00 20 */	lbz r4, 0x20(r4)
/* 80312F2C 0030EB8C  38 03 FF FF */	addi r0, r3, -1
/* 80312F30 0030EB90  7C C7 00 38 */	and r7, r6, r0
/* 80312F34 0030EB94  7C C5 24 30 */	srw r5, r6, r4
/* 80312F38 0030EB98  7D 03 00 38 */	and r3, r8, r0
/* 80312F3C 0030EB9C  7D 04 24 30 */	srw r4, r8, r4
/* 80312F40 0030EBA0  7C C7 00 D0 */	neg r6, r7
/* 80312F44 0030EBA4  7C 03 00 D0 */	neg r0, r3
/* 80312F48 0030EBA8  7C 00 1B 78 */	or r0, r0, r3
/* 80312F4C 0030EBAC  7C C6 3B 78 */	or r6, r6, r7
/* 80312F50 0030EBB0  54 C3 0F FE */	srwi r3, r6, 0x1f
/* 80312F54 0030EBB4  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80312F58 0030EBB8  7C 65 1A 14 */	add r3, r5, r3
/* 80312F5C 0030EBBC  7C 04 02 14 */	add r0, r4, r0
/* 80312F60 0030EBC0  7C 03 00 40 */	cmplw r3, r0
/* 80312F64 0030EBC4  41 82 00 0C */	beq lbl_80312F70
/* 80312F68 0030EBC8  38 00 FF FF */	li r0, -1
/* 80312F6C 0030EBCC  90 1F 00 20 */	stw r0, 0x20(r31)
lbl_80312F70:
/* 80312F70 0030EBD0  2C 1F 00 00 */	cmpwi r31, 0
/* 80312F74 0030EBD4  91 1F 00 1C */	stw r8, 0x1c(r31)
/* 80312F78 0030EBD8  40 82 00 0C */	bne lbl_80312F84
/* 80312F7C 0030EBDC  38 80 00 00 */	li r4, 0
/* 80312F80 0030EBE0  48 00 00 0C */	b lbl_80312F8C
lbl_80312F84:
/* 80312F84 0030EBE4  80 7F 00 08 */	lwz r3, 8(r31)
/* 80312F88 0030EBE8  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80312F8C:
/* 80312F8C 0030EBEC  80 BF 00 1C */	lwz r5, 0x1c(r31)
/* 80312F90 0030EBF0  38 60 00 1B */	li r3, 0x1b
/* 80312F94 0030EBF4  88 04 00 20 */	lbz r0, 0x20(r4)
/* 80312F98 0030EBF8  7C A0 04 30 */	srw r0, r5, r0
/* 80312F9C 0030EBFC  90 1F 00 24 */	stw r0, 0x24(r31)
/* 80312FA0 0030EC00  A0 84 00 00 */	lhz r4, 0(r4)
/* 80312FA4 0030EC04  38 04 FF FF */	addi r0, r4, -1
/* 80312FA8 0030EC08  7C A0 00 38 */	and r0, r5, r0
/* 80312FAC 0030EC0C  B0 1F 00 28 */	sth r0, 0x28(r31)
/* 80312FB0 0030EC10  48 00 00 54 */	b lbl_80313004
lbl_80312FB4:
/* 80312FB4 0030EC14  A0 DF 00 28 */	lhz r6, 0x28(r31)
/* 80312FB8 0030EC18  7F 63 DB 78 */	mr r3, r27
/* 80312FBC 0030EC1C  7F 84 E3 78 */	mr r4, r28
/* 80312FC0 0030EC20  7F A7 EB 78 */	mr r7, r29
/* 80312FC4 0030EC24  39 01 00 08 */	addi r8, r1, 8
/* 80312FC8 0030EC28  39 20 00 01 */	li r9, 1
/* 80312FCC 0030EC2C  48 00 5A 5D */	bl VFiPFSEC_ReadData
/* 80312FD0 0030EC30  2C 03 00 00 */	cmpwi r3, 0
/* 80312FD4 0030EC34  41 82 00 14 */	beq lbl_80312FE8
/* 80312FD8 0030EC38  80 01 00 08 */	lwz r0, 8(r1)
/* 80312FDC 0030EC3C  2C 00 00 00 */	cmpwi r0, 0
/* 80312FE0 0030EC40  40 82 00 08 */	bne lbl_80312FE8
/* 80312FE4 0030EC44  48 00 00 20 */	b lbl_80313004
lbl_80312FE8:
/* 80312FE8 0030EC48  80 01 00 08 */	lwz r0, 8(r1)
/* 80312FEC 0030EC4C  7F E3 FB 78 */	mr r3, r31
/* 80312FF0 0030EC50  90 1E 00 00 */	stw r0, 0(r30)
/* 80312FF4 0030EC54  80 81 00 08 */	lwz r4, 8(r1)
/* 80312FF8 0030EC58  80 BF 00 20 */	lwz r5, 0x20(r31)
/* 80312FFC 0030EC5C  4B FF F8 19 */	bl VFiPFFILE_Cursor_AdvanceToRead
/* 80313000 0030EC60  38 60 00 00 */	li r3, 0
lbl_80313004:
/* 80313004 0030EC64  39 61 00 30 */	addi r11, r1, 0x30
/* 80313008 0030EC68  4B EB 41 6D */	bl _restgpr_27
/* 8031300C 0030EC6C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80313010 0030EC70  7C 08 03 A6 */	mtlr r0
/* 80313014 0030EC74  38 21 00 30 */	addi r1, r1, 0x30
/* 80313018 0030EC78  4E 80 00 20 */	blr

.global VFiPFFILE_Cursor_Read
VFiPFFILE_Cursor_Read:
/* 8031301C 0030EC7C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80313020 0030EC80  7C 08 02 A6 */	mflr r0
/* 80313024 0030EC84  90 01 00 34 */	stw r0, 0x34(r1)
/* 80313028 0030EC88  39 61 00 30 */	addi r11, r1, 0x30
/* 8031302C 0030EC8C  4B EB 40 FD */	bl _savegpr_27
/* 80313030 0030EC90  80 E3 00 08 */	lwz r7, 8(r3)
/* 80313034 0030EC94  39 03 00 0C */	addi r8, r3, 0xc
/* 80313038 0030EC98  2C 03 00 00 */	cmpwi r3, 0
/* 8031303C 0030EC9C  38 00 00 00 */	li r0, 0
/* 80313040 0030ECA0  91 07 00 34 */	stw r8, 0x34(r7)
/* 80313044 0030ECA4  7C 7C 1B 78 */	mr r28, r3
/* 80313048 0030ECA8  7C 9D 23 78 */	mr r29, r4
/* 8031304C 0030ECAC  7C BE 2B 78 */	mr r30, r5
/* 80313050 0030ECB0  90 06 00 00 */	stw r0, 0(r6)
/* 80313054 0030ECB4  7C DF 33 78 */	mr r31, r6
/* 80313058 0030ECB8  40 82 00 0C */	bne lbl_80313064
/* 8031305C 0030ECBC  3B 60 00 00 */	li r27, 0
/* 80313060 0030ECC0  48 00 00 0C */	b lbl_8031306C
lbl_80313064:
/* 80313064 0030ECC4  80 63 00 08 */	lwz r3, 8(r3)
/* 80313068 0030ECC8  83 63 02 68 */	lwz r27, 0x268(r3)
lbl_8031306C:
/* 8031306C 0030ECCC  7F 63 DB 78 */	mr r3, r27
/* 80313070 0030ECD0  7F 84 E3 78 */	mr r4, r28
/* 80313074 0030ECD4  7F A5 EB 78 */	mr r5, r29
/* 80313078 0030ECD8  7F C6 F3 78 */	mr r6, r30
/* 8031307C 0030ECDC  38 E1 00 08 */	addi r7, r1, 8
/* 80313080 0030ECE0  4B FF F8 B1 */	bl VFiPFFILE_Cursor_ReadHeadSector
/* 80313084 0030ECE4  80 9F 00 00 */	lwz r4, 0(r31)
/* 80313088 0030ECE8  2C 03 00 00 */	cmpwi r3, 0
/* 8031308C 0030ECEC  80 01 00 08 */	lwz r0, 8(r1)
/* 80313090 0030ECF0  7C 04 02 14 */	add r0, r4, r0
/* 80313094 0030ECF4  90 1F 00 00 */	stw r0, 0(r31)
/* 80313098 0030ECF8  41 82 00 08 */	beq lbl_803130A0
/* 8031309C 0030ECFC  48 00 00 B0 */	b lbl_8031314C
lbl_803130A0:
/* 803130A0 0030ED00  80 01 00 08 */	lwz r0, 8(r1)
/* 803130A4 0030ED04  7C 00 F0 40 */	cmplw r0, r30
/* 803130A8 0030ED08  41 80 00 0C */	blt lbl_803130B4
/* 803130AC 0030ED0C  38 60 00 00 */	li r3, 0
/* 803130B0 0030ED10  48 00 00 9C */	b lbl_8031314C
lbl_803130B4:
/* 803130B4 0030ED14  7F C0 F0 50 */	subf r30, r0, r30
/* 803130B8 0030ED18  48 00 00 4C */	b lbl_80313104
lbl_803130BC:
/* 803130BC 0030ED1C  80 1F 00 00 */	lwz r0, 0(r31)
/* 803130C0 0030ED20  7F 63 DB 78 */	mr r3, r27
/* 803130C4 0030ED24  7F 84 E3 78 */	mr r4, r28
/* 803130C8 0030ED28  7F C6 F3 78 */	mr r6, r30
/* 803130CC 0030ED2C  7C BD 02 14 */	add r5, r29, r0
/* 803130D0 0030ED30  38 E1 00 08 */	addi r7, r1, 8
/* 803130D4 0030ED34  4B FF FA F5 */	bl VFiPFFILE_Cursor_ReadBodySectors
/* 803130D8 0030ED38  80 9F 00 00 */	lwz r4, 0(r31)
/* 803130DC 0030ED3C  2C 03 00 00 */	cmpwi r3, 0
/* 803130E0 0030ED40  80 01 00 08 */	lwz r0, 8(r1)
/* 803130E4 0030ED44  7C 04 02 14 */	add r0, r4, r0
/* 803130E8 0030ED48  90 1F 00 00 */	stw r0, 0(r31)
/* 803130EC 0030ED4C  41 82 00 08 */	beq lbl_803130F4
/* 803130F0 0030ED50  48 00 00 5C */	b lbl_8031314C
lbl_803130F4:
/* 803130F4 0030ED54  80 01 00 08 */	lwz r0, 8(r1)
/* 803130F8 0030ED58  2C 00 00 00 */	cmpwi r0, 0
/* 803130FC 0030ED5C  41 82 00 14 */	beq lbl_80313110
/* 80313100 0030ED60  7F C0 F0 50 */	subf r30, r0, r30
lbl_80313104:
/* 80313104 0030ED64  A0 1B 00 00 */	lhz r0, 0(r27)
/* 80313108 0030ED68  7C 1E 00 40 */	cmplw r30, r0
/* 8031310C 0030ED6C  40 80 FF B0 */	bge lbl_803130BC
lbl_80313110:
/* 80313110 0030ED70  80 1F 00 00 */	lwz r0, 0(r31)
/* 80313114 0030ED74  7F 63 DB 78 */	mr r3, r27
/* 80313118 0030ED78  7F 84 E3 78 */	mr r4, r28
/* 8031311C 0030ED7C  7F C6 F3 78 */	mr r6, r30
/* 80313120 0030ED80  7C BD 02 14 */	add r5, r29, r0
/* 80313124 0030ED84  38 E1 00 08 */	addi r7, r1, 8
/* 80313128 0030ED88  4B FF FC 79 */	bl VFiPFFILE_Cursor_ReadTailSector
/* 8031312C 0030ED8C  80 9F 00 00 */	lwz r4, 0(r31)
/* 80313130 0030ED90  2C 03 00 00 */	cmpwi r3, 0
/* 80313134 0030ED94  80 01 00 08 */	lwz r0, 8(r1)
/* 80313138 0030ED98  7C 04 02 14 */	add r0, r4, r0
/* 8031313C 0030ED9C  90 1F 00 00 */	stw r0, 0(r31)
/* 80313140 0030EDA0  41 82 00 08 */	beq lbl_80313148
/* 80313144 0030EDA4  48 00 00 08 */	b lbl_8031314C
lbl_80313148:
/* 80313148 0030EDA8  38 60 00 00 */	li r3, 0
lbl_8031314C:
/* 8031314C 0030EDAC  39 61 00 30 */	addi r11, r1, 0x30
/* 80313150 0030EDB0  4B EB 40 25 */	bl _restgpr_27
/* 80313154 0030EDB4  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80313158 0030EDB8  7C 08 03 A6 */	mtlr r0
/* 8031315C 0030EDBC  38 21 00 30 */	addi r1, r1, 0x30
/* 80313160 0030EDC0  4E 80 00 20 */	blr

.global VFiPFFILE_Cursor_WriteHeadSector
VFiPFFILE_Cursor_WriteHeadSector:
/* 80313164 0030EDC4  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80313168 0030EDC8  7C 08 02 A6 */	mflr r0
/* 8031316C 0030EDCC  90 01 00 34 */	stw r0, 0x34(r1)
/* 80313170 0030EDD0  39 61 00 30 */	addi r11, r1, 0x30
/* 80313174 0030EDD4  4B EB 3F B5 */	bl _savegpr_27
/* 80313178 0030EDD8  38 00 00 00 */	li r0, 0
/* 8031317C 0030EDDC  7C BC 2B 78 */	mr r28, r5
/* 80313180 0030EDE0  90 07 00 00 */	stw r0, 0(r7)
/* 80313184 0030EDE4  7C 7B 1B 78 */	mr r27, r3
/* 80313188 0030EDE8  7C 9F 23 78 */	mr r31, r4
/* 8031318C 0030EDEC  7C DD 33 78 */	mr r29, r6
/* 80313190 0030EDF0  A0 A4 00 28 */	lhz r5, 0x28(r4)
/* 80313194 0030EDF4  7C FE 3B 78 */	mr r30, r7
/* 80313198 0030EDF8  2C 05 00 00 */	cmpwi r5, 0
/* 8031319C 0030EDFC  40 82 00 0C */	bne lbl_803131A8
/* 803131A0 0030EE00  38 60 00 00 */	li r3, 0
/* 803131A4 0030EE04  48 00 02 00 */	b lbl_803133A4
lbl_803131A8:
/* 803131A8 0030EE08  A0 03 00 00 */	lhz r0, 0(r3)
/* 803131AC 0030EE0C  7C 05 00 50 */	subf r0, r5, r0
/* 803131B0 0030EE10  7C 06 00 40 */	cmplw r6, r0
/* 803131B4 0030EE14  40 81 00 08 */	ble lbl_803131BC
/* 803131B8 0030EE18  7C 1D 03 78 */	mr r29, r0
lbl_803131BC:
/* 803131BC 0030EE1C  80 A4 00 20 */	lwz r5, 0x20(r4)
/* 803131C0 0030EE20  3C 05 00 01 */	addis r0, r5, 1
/* 803131C4 0030EE24  28 00 FF FF */	cmplwi r0, 0xffff
/* 803131C8 0030EE28  40 82 00 E8 */	bne lbl_803132B0
/* 803131CC 0030EE2C  80 64 00 08 */	lwz r3, 8(r4)
/* 803131D0 0030EE30  38 DF 00 20 */	addi r6, r31, 0x20
/* 803131D4 0030EE34  80 84 00 24 */	lwz r4, 0x24(r4)
/* 803131D8 0030EE38  38 A0 00 00 */	li r5, 0
/* 803131DC 0030EE3C  38 63 00 04 */	addi r3, r3, 4
/* 803131E0 0030EE40  4B FF CD 89 */	bl VFiPFFAT_GetSectorSpecified
/* 803131E4 0030EE44  2C 03 00 00 */	cmpwi r3, 0
/* 803131E8 0030EE48  41 82 00 08 */	beq lbl_803131F0
/* 803131EC 0030EE4C  48 00 01 B8 */	b lbl_803133A4
lbl_803131F0:
/* 803131F0 0030EE50  80 BF 00 20 */	lwz r5, 0x20(r31)
/* 803131F4 0030EE54  3C 05 00 01 */	addis r0, r5, 1
/* 803131F8 0030EE58  28 00 FF FF */	cmplwi r0, 0xffff
/* 803131FC 0030EE5C  40 82 00 B4 */	bne lbl_803132B0
/* 80313200 0030EE60  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313204 0030EE64  2C 1F 00 00 */	cmpwi r31, 0
/* 80313208 0030EE68  81 03 02 64 */	lwz r8, 0x264(r3)
/* 8031320C 0030EE6C  40 82 00 0C */	bne lbl_80313218
/* 80313210 0030EE70  38 80 00 00 */	li r4, 0
/* 80313214 0030EE74  48 00 00 08 */	b lbl_8031321C
lbl_80313218:
/* 80313218 0030EE78  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_8031321C:
/* 8031321C 0030EE7C  A0 64 00 00 */	lhz r3, 0(r4)
/* 80313220 0030EE80  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80313224 0030EE84  38 63 FF FF */	addi r3, r3, -1
/* 80313228 0030EE88  88 84 00 20 */	lbz r4, 0x20(r4)
/* 8031322C 0030EE8C  7C 07 18 38 */	and r7, r0, r3
/* 80313230 0030EE90  7C 05 24 30 */	srw r5, r0, r4
/* 80313234 0030EE94  7D 03 18 38 */	and r3, r8, r3
/* 80313238 0030EE98  7C C7 00 D0 */	neg r6, r7
/* 8031323C 0030EE9C  7D 04 24 30 */	srw r4, r8, r4
/* 80313240 0030EEA0  7C 03 00 D0 */	neg r0, r3
/* 80313244 0030EEA4  7C 00 1B 78 */	or r0, r0, r3
/* 80313248 0030EEA8  7C C6 3B 78 */	or r6, r6, r7
/* 8031324C 0030EEAC  54 C3 0F FE */	srwi r3, r6, 0x1f
/* 80313250 0030EEB0  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80313254 0030EEB4  7C 65 1A 14 */	add r3, r5, r3
/* 80313258 0030EEB8  7C 04 02 14 */	add r0, r4, r0
/* 8031325C 0030EEBC  7C 03 00 40 */	cmplw r3, r0
/* 80313260 0030EEC0  41 82 00 0C */	beq lbl_8031326C
/* 80313264 0030EEC4  38 00 FF FF */	li r0, -1
/* 80313268 0030EEC8  90 1F 00 20 */	stw r0, 0x20(r31)
lbl_8031326C:
/* 8031326C 0030EECC  2C 1F 00 00 */	cmpwi r31, 0
/* 80313270 0030EED0  91 1F 00 1C */	stw r8, 0x1c(r31)
/* 80313274 0030EED4  40 82 00 0C */	bne lbl_80313280
/* 80313278 0030EED8  38 80 00 00 */	li r4, 0
/* 8031327C 0030EEDC  48 00 00 0C */	b lbl_80313288
lbl_80313280:
/* 80313280 0030EEE0  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313284 0030EEE4  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80313288:
/* 80313288 0030EEE8  80 BF 00 1C */	lwz r5, 0x1c(r31)
/* 8031328C 0030EEEC  38 60 00 1C */	li r3, 0x1c
/* 80313290 0030EEF0  88 04 00 20 */	lbz r0, 0x20(r4)
/* 80313294 0030EEF4  7C A0 04 30 */	srw r0, r5, r0
/* 80313298 0030EEF8  90 1F 00 24 */	stw r0, 0x24(r31)
/* 8031329C 0030EEFC  A0 84 00 00 */	lhz r4, 0(r4)
/* 803132A0 0030EF00  38 04 FF FF */	addi r0, r4, -1
/* 803132A4 0030EF04  7C A0 00 38 */	and r0, r5, r0
/* 803132A8 0030EF08  B0 1F 00 28 */	sth r0, 0x28(r31)
/* 803132AC 0030EF0C  48 00 00 F8 */	b lbl_803133A4
lbl_803132B0:
/* 803132B0 0030EF10  A0 DF 00 28 */	lhz r6, 0x28(r31)
/* 803132B4 0030EF14  7F 63 DB 78 */	mr r3, r27
/* 803132B8 0030EF18  7F 84 E3 78 */	mr r4, r28
/* 803132BC 0030EF1C  7F A7 EB 78 */	mr r7, r29
/* 803132C0 0030EF20  39 01 00 08 */	addi r8, r1, 8
/* 803132C4 0030EF24  39 20 00 01 */	li r9, 1
/* 803132C8 0030EF28  48 00 5B 21 */	bl VFiPFSEC_WriteData
/* 803132CC 0030EF2C  2C 03 00 00 */	cmpwi r3, 0
/* 803132D0 0030EF30  41 82 00 14 */	beq lbl_803132E4
/* 803132D4 0030EF34  80 01 00 08 */	lwz r0, 8(r1)
/* 803132D8 0030EF38  2C 00 00 00 */	cmpwi r0, 0
/* 803132DC 0030EF3C  40 82 00 08 */	bne lbl_803132E4
/* 803132E0 0030EF40  48 00 00 C4 */	b lbl_803133A4
lbl_803132E4:
/* 803132E4 0030EF44  80 01 00 08 */	lwz r0, 8(r1)
/* 803132E8 0030EF48  2C 1F 00 00 */	cmpwi r31, 0
/* 803132EC 0030EF4C  90 1E 00 00 */	stw r0, 0(r30)
/* 803132F0 0030EF50  80 DF 00 20 */	lwz r6, 0x20(r31)
/* 803132F4 0030EF54  80 A1 00 08 */	lwz r5, 8(r1)
/* 803132F8 0030EF58  40 82 00 0C */	bne lbl_80313304
/* 803132FC 0030EF5C  38 80 00 00 */	li r4, 0
/* 80313300 0030EF60  48 00 00 0C */	b lbl_8031330C
lbl_80313304:
/* 80313304 0030EF64  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313308 0030EF68  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_8031330C:
/* 8031330C 0030EF6C  A0 1F 00 28 */	lhz r0, 0x28(r31)
/* 80313310 0030EF70  A0 64 00 00 */	lhz r3, 0(r4)
/* 80313314 0030EF74  7C E0 2A 14 */	add r7, r0, r5
/* 80313318 0030EF78  88 84 00 20 */	lbz r4, 0x20(r4)
/* 8031331C 0030EF7C  38 03 FF FF */	addi r0, r3, -1
/* 80313320 0030EF80  7C 00 38 39 */	and. r0, r0, r7
/* 80313324 0030EF84  7C E0 24 30 */	srw r0, r7, r4
/* 80313328 0030EF88  7C 86 02 14 */	add r4, r6, r0
/* 8031332C 0030EF8C  41 82 00 0C */	beq lbl_80313338
/* 80313330 0030EF90  90 9F 00 20 */	stw r4, 0x20(r31)
/* 80313334 0030EF94  48 00 00 0C */	b lbl_80313340
lbl_80313338:
/* 80313338 0030EF98  38 00 FF FF */	li r0, -1
/* 8031333C 0030EF9C  90 1F 00 20 */	stw r0, 0x20(r31)
lbl_80313340:
/* 80313340 0030EFA0  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80313344 0030EFA4  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313348 0030EFA8  7C A0 2A 14 */	add r5, r0, r5
/* 8031334C 0030EFAC  90 BF 00 1C */	stw r5, 0x1c(r31)
/* 80313350 0030EFB0  80 03 02 64 */	lwz r0, 0x264(r3)
/* 80313354 0030EFB4  7C 05 00 40 */	cmplw r5, r0
/* 80313358 0030EFB8  40 81 00 08 */	ble lbl_80313360
/* 8031335C 0030EFBC  90 A3 02 64 */	stw r5, 0x264(r3)
lbl_80313360:
/* 80313360 0030EFC0  2C 1F 00 00 */	cmpwi r31, 0
/* 80313364 0030EFC4  40 82 00 0C */	bne lbl_80313370
/* 80313368 0030EFC8  38 A0 00 00 */	li r5, 0
/* 8031336C 0030EFCC  48 00 00 0C */	b lbl_80313378
lbl_80313370:
/* 80313370 0030EFD0  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313374 0030EFD4  80 A3 02 68 */	lwz r5, 0x268(r3)
lbl_80313378:
/* 80313378 0030EFD8  80 DF 00 1C */	lwz r6, 0x1c(r31)
/* 8031337C 0030EFDC  7F E3 FB 78 */	mr r3, r31
/* 80313380 0030EFE0  88 05 00 20 */	lbz r0, 0x20(r5)
/* 80313384 0030EFE4  7C C0 04 30 */	srw r0, r6, r0
/* 80313388 0030EFE8  90 1F 00 24 */	stw r0, 0x24(r31)
/* 8031338C 0030EFEC  A0 A5 00 00 */	lhz r5, 0(r5)
/* 80313390 0030EFF0  38 05 FF FF */	addi r0, r5, -1
/* 80313394 0030EFF4  7C C0 00 38 */	and r0, r6, r0
/* 80313398 0030EFF8  B0 1F 00 28 */	sth r0, 0x28(r31)
/* 8031339C 0030EFFC  4B FF 79 E5 */	bl VFiPFCLUSTER_UpdateLastAccessCluster
/* 803133A0 0030F000  38 60 00 00 */	li r3, 0
lbl_803133A4:
/* 803133A4 0030F004  39 61 00 30 */	addi r11, r1, 0x30
/* 803133A8 0030F008  4B EB 3D CD */	bl _restgpr_27
/* 803133AC 0030F00C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 803133B0 0030F010  7C 08 03 A6 */	mtlr r0
/* 803133B4 0030F014  38 21 00 30 */	addi r1, r1, 0x30
/* 803133B8 0030F018  4E 80 00 20 */	blr

.global VFiPFFILE_Cursor_WriteTailSector
VFiPFFILE_Cursor_WriteTailSector:
/* 803133BC 0030F01C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 803133C0 0030F020  7C 08 02 A6 */	mflr r0
/* 803133C4 0030F024  90 01 00 34 */	stw r0, 0x34(r1)
/* 803133C8 0030F028  38 00 00 00 */	li r0, 0
/* 803133CC 0030F02C  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 803133D0 0030F030  7C 9F 23 78 */	mr r31, r4
/* 803133D4 0030F034  93 C1 00 28 */	stw r30, 0x28(r1)
/* 803133D8 0030F038  7D 1E 43 78 */	mr r30, r8
/* 803133DC 0030F03C  93 A1 00 24 */	stw r29, 0x24(r1)
/* 803133E0 0030F040  7C BD 2B 78 */	mr r29, r5
/* 803133E4 0030F044  93 81 00 20 */	stw r28, 0x20(r1)
/* 803133E8 0030F048  7C 7C 1B 78 */	mr r28, r3
/* 803133EC 0030F04C  90 C1 00 08 */	stw r6, 8(r1)
/* 803133F0 0030F050  90 08 00 00 */	stw r0, 0(r8)
/* 803133F4 0030F054  80 A1 00 08 */	lwz r5, 8(r1)
/* 803133F8 0030F058  2C 05 00 00 */	cmpwi r5, 0
/* 803133FC 0030F05C  40 82 00 0C */	bne lbl_80313408
/* 80313400 0030F060  38 60 00 00 */	li r3, 0
/* 80313404 0030F064  48 00 02 5C */	b lbl_80313660
lbl_80313408:
/* 80313408 0030F068  A0 63 00 00 */	lhz r3, 0(r3)
/* 8031340C 0030F06C  A0 04 00 28 */	lhz r0, 0x28(r4)
/* 80313410 0030F070  7C 00 18 50 */	subf r0, r0, r3
/* 80313414 0030F074  7C 05 00 40 */	cmplw r5, r0
/* 80313418 0030F078  41 81 00 0C */	bgt lbl_80313424
/* 8031341C 0030F07C  7C 05 18 40 */	cmplw r5, r3
/* 80313420 0030F080  40 81 00 0C */	ble lbl_8031342C
lbl_80313424:
/* 80313424 0030F084  38 60 00 1A */	li r3, 0x1a
/* 80313428 0030F088  48 00 02 38 */	b lbl_80313660
lbl_8031342C:
/* 8031342C 0030F08C  2C 07 00 00 */	cmpwi r7, 0
/* 80313430 0030F090  41 82 00 44 */	beq lbl_80313474
/* 80313434 0030F094  7F E3 FB 78 */	mr r3, r31
/* 80313438 0030F098  7C E4 3B 78 */	mr r4, r7
/* 8031343C 0030F09C  38 A1 00 08 */	addi r5, r1, 8
/* 80313440 0030F0A0  38 C1 00 10 */	addi r6, r1, 0x10
/* 80313444 0030F0A4  4B FF 7A 11 */	bl VFiPFCLUSTER_AppendCluster
/* 80313448 0030F0A8  2C 03 00 00 */	cmpwi r3, 0
/* 8031344C 0030F0AC  41 82 00 08 */	beq lbl_80313454
/* 80313450 0030F0B0  48 00 02 10 */	b lbl_80313660
lbl_80313454:
/* 80313454 0030F0B4  80 01 00 08 */	lwz r0, 8(r1)
/* 80313458 0030F0B8  2C 00 00 00 */	cmpwi r0, 0
/* 8031345C 0030F0BC  40 82 00 0C */	bne lbl_80313468
/* 80313460 0030F0C0  38 60 00 00 */	li r3, 0
/* 80313464 0030F0C4  48 00 01 FC */	b lbl_80313660
lbl_80313468:
/* 80313468 0030F0C8  80 01 00 10 */	lwz r0, 0x10(r1)
/* 8031346C 0030F0CC  90 1F 00 20 */	stw r0, 0x20(r31)
/* 80313470 0030F0D0  48 00 00 F8 */	b lbl_80313568
lbl_80313474:
/* 80313474 0030F0D4  80 64 00 20 */	lwz r3, 0x20(r4)
/* 80313478 0030F0D8  3C 03 00 01 */	addis r0, r3, 1
/* 8031347C 0030F0DC  28 00 FF FF */	cmplwi r0, 0xffff
/* 80313480 0030F0E0  40 82 00 E8 */	bne lbl_80313568
/* 80313484 0030F0E4  80 64 00 08 */	lwz r3, 8(r4)
/* 80313488 0030F0E8  38 DF 00 20 */	addi r6, r31, 0x20
/* 8031348C 0030F0EC  80 84 00 24 */	lwz r4, 0x24(r4)
/* 80313490 0030F0F0  38 A0 00 00 */	li r5, 0
/* 80313494 0030F0F4  38 63 00 04 */	addi r3, r3, 4
/* 80313498 0030F0F8  4B FF CA D1 */	bl VFiPFFAT_GetSectorSpecified
/* 8031349C 0030F0FC  2C 03 00 00 */	cmpwi r3, 0
/* 803134A0 0030F100  41 82 00 08 */	beq lbl_803134A8
/* 803134A4 0030F104  48 00 01 BC */	b lbl_80313660
lbl_803134A8:
/* 803134A8 0030F108  80 7F 00 20 */	lwz r3, 0x20(r31)
/* 803134AC 0030F10C  3C 03 00 01 */	addis r0, r3, 1
/* 803134B0 0030F110  28 00 FF FF */	cmplwi r0, 0xffff
/* 803134B4 0030F114  40 82 00 B4 */	bne lbl_80313568
/* 803134B8 0030F118  80 7F 00 08 */	lwz r3, 8(r31)
/* 803134BC 0030F11C  2C 1F 00 00 */	cmpwi r31, 0
/* 803134C0 0030F120  81 03 02 64 */	lwz r8, 0x264(r3)
/* 803134C4 0030F124  40 82 00 0C */	bne lbl_803134D0
/* 803134C8 0030F128  38 80 00 00 */	li r4, 0
/* 803134CC 0030F12C  48 00 00 08 */	b lbl_803134D4
lbl_803134D0:
/* 803134D0 0030F130  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_803134D4:
/* 803134D4 0030F134  A0 64 00 00 */	lhz r3, 0(r4)
/* 803134D8 0030F138  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 803134DC 0030F13C  38 63 FF FF */	addi r3, r3, -1
/* 803134E0 0030F140  88 84 00 20 */	lbz r4, 0x20(r4)
/* 803134E4 0030F144  7C 07 18 38 */	and r7, r0, r3
/* 803134E8 0030F148  7C 05 24 30 */	srw r5, r0, r4
/* 803134EC 0030F14C  7D 03 18 38 */	and r3, r8, r3
/* 803134F0 0030F150  7C C7 00 D0 */	neg r6, r7
/* 803134F4 0030F154  7D 04 24 30 */	srw r4, r8, r4
/* 803134F8 0030F158  7C 03 00 D0 */	neg r0, r3
/* 803134FC 0030F15C  7C 00 1B 78 */	or r0, r0, r3
/* 80313500 0030F160  7C C6 3B 78 */	or r6, r6, r7
/* 80313504 0030F164  54 C3 0F FE */	srwi r3, r6, 0x1f
/* 80313508 0030F168  54 00 0F FE */	srwi r0, r0, 0x1f
/* 8031350C 0030F16C  7C 65 1A 14 */	add r3, r5, r3
/* 80313510 0030F170  7C 04 02 14 */	add r0, r4, r0
/* 80313514 0030F174  7C 03 00 40 */	cmplw r3, r0
/* 80313518 0030F178  41 82 00 0C */	beq lbl_80313524
/* 8031351C 0030F17C  38 00 FF FF */	li r0, -1
/* 80313520 0030F180  90 1F 00 20 */	stw r0, 0x20(r31)
lbl_80313524:
/* 80313524 0030F184  2C 1F 00 00 */	cmpwi r31, 0
/* 80313528 0030F188  91 1F 00 1C */	stw r8, 0x1c(r31)
/* 8031352C 0030F18C  40 82 00 0C */	bne lbl_80313538
/* 80313530 0030F190  38 80 00 00 */	li r4, 0
/* 80313534 0030F194  48 00 00 0C */	b lbl_80313540
lbl_80313538:
/* 80313538 0030F198  80 7F 00 08 */	lwz r3, 8(r31)
/* 8031353C 0030F19C  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80313540:
/* 80313540 0030F1A0  80 BF 00 1C */	lwz r5, 0x1c(r31)
/* 80313544 0030F1A4  38 60 00 1C */	li r3, 0x1c
/* 80313548 0030F1A8  88 04 00 20 */	lbz r0, 0x20(r4)
/* 8031354C 0030F1AC  7C A0 04 30 */	srw r0, r5, r0
/* 80313550 0030F1B0  90 1F 00 24 */	stw r0, 0x24(r31)
/* 80313554 0030F1B4  A0 84 00 00 */	lhz r4, 0(r4)
/* 80313558 0030F1B8  38 04 FF FF */	addi r0, r4, -1
/* 8031355C 0030F1BC  7C A0 00 38 */	and r0, r5, r0
/* 80313560 0030F1C0  B0 1F 00 28 */	sth r0, 0x28(r31)
/* 80313564 0030F1C4  48 00 00 FC */	b lbl_80313660
lbl_80313568:
/* 80313568 0030F1C8  80 BF 00 20 */	lwz r5, 0x20(r31)
/* 8031356C 0030F1CC  7F 83 E3 78 */	mr r3, r28
/* 80313570 0030F1D0  A0 DF 00 28 */	lhz r6, 0x28(r31)
/* 80313574 0030F1D4  7F A4 EB 78 */	mr r4, r29
/* 80313578 0030F1D8  80 E1 00 08 */	lwz r7, 8(r1)
/* 8031357C 0030F1DC  39 01 00 0C */	addi r8, r1, 0xc
/* 80313580 0030F1E0  39 20 00 01 */	li r9, 1
/* 80313584 0030F1E4  48 00 58 65 */	bl VFiPFSEC_WriteData
/* 80313588 0030F1E8  2C 03 00 00 */	cmpwi r3, 0
/* 8031358C 0030F1EC  41 82 00 14 */	beq lbl_803135A0
/* 80313590 0030F1F0  80 01 00 0C */	lwz r0, 0xc(r1)
/* 80313594 0030F1F4  2C 00 00 00 */	cmpwi r0, 0
/* 80313598 0030F1F8  40 82 00 08 */	bne lbl_803135A0
/* 8031359C 0030F1FC  48 00 00 C4 */	b lbl_80313660
lbl_803135A0:
/* 803135A0 0030F200  80 01 00 0C */	lwz r0, 0xc(r1)
/* 803135A4 0030F204  2C 1F 00 00 */	cmpwi r31, 0
/* 803135A8 0030F208  90 1E 00 00 */	stw r0, 0(r30)
/* 803135AC 0030F20C  80 DF 00 20 */	lwz r6, 0x20(r31)
/* 803135B0 0030F210  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 803135B4 0030F214  40 82 00 0C */	bne lbl_803135C0
/* 803135B8 0030F218  38 80 00 00 */	li r4, 0
/* 803135BC 0030F21C  48 00 00 0C */	b lbl_803135C8
lbl_803135C0:
/* 803135C0 0030F220  80 7F 00 08 */	lwz r3, 8(r31)
/* 803135C4 0030F224  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_803135C8:
/* 803135C8 0030F228  A0 1F 00 28 */	lhz r0, 0x28(r31)
/* 803135CC 0030F22C  A0 64 00 00 */	lhz r3, 0(r4)
/* 803135D0 0030F230  7C E0 2A 14 */	add r7, r0, r5
/* 803135D4 0030F234  88 84 00 20 */	lbz r4, 0x20(r4)
/* 803135D8 0030F238  38 03 FF FF */	addi r0, r3, -1
/* 803135DC 0030F23C  7C 00 38 39 */	and. r0, r0, r7
/* 803135E0 0030F240  7C E0 24 30 */	srw r0, r7, r4
/* 803135E4 0030F244  7C 86 02 14 */	add r4, r6, r0
/* 803135E8 0030F248  41 82 00 0C */	beq lbl_803135F4
/* 803135EC 0030F24C  90 9F 00 20 */	stw r4, 0x20(r31)
/* 803135F0 0030F250  48 00 00 0C */	b lbl_803135FC
lbl_803135F4:
/* 803135F4 0030F254  38 00 FF FF */	li r0, -1
/* 803135F8 0030F258  90 1F 00 20 */	stw r0, 0x20(r31)
lbl_803135FC:
/* 803135FC 0030F25C  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80313600 0030F260  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313604 0030F264  7C A0 2A 14 */	add r5, r0, r5
/* 80313608 0030F268  90 BF 00 1C */	stw r5, 0x1c(r31)
/* 8031360C 0030F26C  80 03 02 64 */	lwz r0, 0x264(r3)
/* 80313610 0030F270  7C 05 00 40 */	cmplw r5, r0
/* 80313614 0030F274  40 81 00 08 */	ble lbl_8031361C
/* 80313618 0030F278  90 A3 02 64 */	stw r5, 0x264(r3)
lbl_8031361C:
/* 8031361C 0030F27C  2C 1F 00 00 */	cmpwi r31, 0
/* 80313620 0030F280  40 82 00 0C */	bne lbl_8031362C
/* 80313624 0030F284  38 A0 00 00 */	li r5, 0
/* 80313628 0030F288  48 00 00 0C */	b lbl_80313634
lbl_8031362C:
/* 8031362C 0030F28C  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313630 0030F290  80 A3 02 68 */	lwz r5, 0x268(r3)
lbl_80313634:
/* 80313634 0030F294  80 DF 00 1C */	lwz r6, 0x1c(r31)
/* 80313638 0030F298  7F E3 FB 78 */	mr r3, r31
/* 8031363C 0030F29C  88 05 00 20 */	lbz r0, 0x20(r5)
/* 80313640 0030F2A0  7C C0 04 30 */	srw r0, r6, r0
/* 80313644 0030F2A4  90 1F 00 24 */	stw r0, 0x24(r31)
/* 80313648 0030F2A8  A0 A5 00 00 */	lhz r5, 0(r5)
/* 8031364C 0030F2AC  38 05 FF FF */	addi r0, r5, -1
/* 80313650 0030F2B0  7C C0 00 38 */	and r0, r6, r0
/* 80313654 0030F2B4  B0 1F 00 28 */	sth r0, 0x28(r31)
/* 80313658 0030F2B8  4B FF 77 29 */	bl VFiPFCLUSTER_UpdateLastAccessCluster
/* 8031365C 0030F2BC  38 60 00 00 */	li r3, 0
lbl_80313660:
/* 80313660 0030F2C0  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80313664 0030F2C4  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 80313668 0030F2C8  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 8031366C 0030F2CC  83 A1 00 24 */	lwz r29, 0x24(r1)
/* 80313670 0030F2D0  83 81 00 20 */	lwz r28, 0x20(r1)
/* 80313674 0030F2D4  7C 08 03 A6 */	mtlr r0
/* 80313678 0030F2D8  38 21 00 30 */	addi r1, r1, 0x30
/* 8031367C 0030F2DC  4E 80 00 20 */	blr

.global VFiPFFILE_Cursor_Write_Overwrite
VFiPFFILE_Cursor_Write_Overwrite:
/* 80313680 0030F2E0  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80313684 0030F2E4  7C 08 02 A6 */	mflr r0
/* 80313688 0030F2E8  90 01 00 34 */	stw r0, 0x34(r1)
/* 8031368C 0030F2EC  39 61 00 30 */	addi r11, r1, 0x30
/* 80313690 0030F2F0  4B EB 3A 99 */	bl _savegpr_27
/* 80313694 0030F2F4  38 00 00 00 */	li r0, 0
/* 80313698 0030F2F8  7C DF 33 78 */	mr r31, r6
/* 8031369C 0030F2FC  90 07 00 00 */	stw r0, 0(r7)
/* 803136A0 0030F300  7C BC 2B 78 */	mr r28, r5
/* 803136A4 0030F304  7C FE 3B 78 */	mr r30, r7
/* 803136A8 0030F308  7C 9D 23 78 */	mr r29, r4
/* 803136AC 0030F30C  80 C4 00 08 */	lwz r6, 8(r4)
/* 803136B0 0030F310  7C 7B 1B 78 */	mr r27, r3
/* 803136B4 0030F314  80 84 00 24 */	lwz r4, 0x24(r4)
/* 803136B8 0030F318  7F E5 FB 78 */	mr r5, r31
/* 803136BC 0030F31C  38 66 00 04 */	addi r3, r6, 4
/* 803136C0 0030F320  38 DD 00 20 */	addi r6, r29, 0x20
/* 803136C4 0030F324  38 E1 00 0C */	addi r7, r1, 0xc
/* 803136C8 0030F328  4B FF CA 4D */	bl VFiPFFAT_GetContinuousSector
/* 803136CC 0030F32C  2C 03 00 00 */	cmpwi r3, 0
/* 803136D0 0030F330  41 82 00 08 */	beq lbl_803136D8
/* 803136D4 0030F334  48 00 01 EC */	b lbl_803138C0
lbl_803136D8:
/* 803136D8 0030F338  80 61 00 0C */	lwz r3, 0xc(r1)
/* 803136DC 0030F33C  2C 03 00 00 */	cmpwi r3, 0
/* 803136E0 0030F340  41 82 00 14 */	beq lbl_803136F4
/* 803136E4 0030F344  80 BD 00 20 */	lwz r5, 0x20(r29)
/* 803136E8 0030F348  3C 05 00 01 */	addis r0, r5, 1
/* 803136EC 0030F34C  28 00 FF FF */	cmplwi r0, 0xffff
/* 803136F0 0030F350  40 82 00 B4 */	bne lbl_803137A4
lbl_803136F4:
/* 803136F4 0030F354  80 7D 00 08 */	lwz r3, 8(r29)
/* 803136F8 0030F358  2C 1D 00 00 */	cmpwi r29, 0
/* 803136FC 0030F35C  81 03 02 64 */	lwz r8, 0x264(r3)
/* 80313700 0030F360  40 82 00 0C */	bne lbl_8031370C
/* 80313704 0030F364  38 80 00 00 */	li r4, 0
/* 80313708 0030F368  48 00 00 08 */	b lbl_80313710
lbl_8031370C:
/* 8031370C 0030F36C  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80313710:
/* 80313710 0030F370  A0 64 00 00 */	lhz r3, 0(r4)
/* 80313714 0030F374  80 1D 00 1C */	lwz r0, 0x1c(r29)
/* 80313718 0030F378  38 63 FF FF */	addi r3, r3, -1
/* 8031371C 0030F37C  88 84 00 20 */	lbz r4, 0x20(r4)
/* 80313720 0030F380  7C 07 18 38 */	and r7, r0, r3
/* 80313724 0030F384  7C 05 24 30 */	srw r5, r0, r4
/* 80313728 0030F388  7D 03 18 38 */	and r3, r8, r3
/* 8031372C 0030F38C  7C C7 00 D0 */	neg r6, r7
/* 80313730 0030F390  7D 04 24 30 */	srw r4, r8, r4
/* 80313734 0030F394  7C 03 00 D0 */	neg r0, r3
/* 80313738 0030F398  7C 00 1B 78 */	or r0, r0, r3
/* 8031373C 0030F39C  7C C6 3B 78 */	or r6, r6, r7
/* 80313740 0030F3A0  54 C3 0F FE */	srwi r3, r6, 0x1f
/* 80313744 0030F3A4  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80313748 0030F3A8  7C 65 1A 14 */	add r3, r5, r3
/* 8031374C 0030F3AC  7C 04 02 14 */	add r0, r4, r0
/* 80313750 0030F3B0  7C 03 00 40 */	cmplw r3, r0
/* 80313754 0030F3B4  41 82 00 0C */	beq lbl_80313760
/* 80313758 0030F3B8  38 00 FF FF */	li r0, -1
/* 8031375C 0030F3BC  90 1D 00 20 */	stw r0, 0x20(r29)
lbl_80313760:
/* 80313760 0030F3C0  2C 1D 00 00 */	cmpwi r29, 0
/* 80313764 0030F3C4  91 1D 00 1C */	stw r8, 0x1c(r29)
/* 80313768 0030F3C8  40 82 00 0C */	bne lbl_80313774
/* 8031376C 0030F3CC  38 80 00 00 */	li r4, 0
/* 80313770 0030F3D0  48 00 00 0C */	b lbl_8031377C
lbl_80313774:
/* 80313774 0030F3D4  80 7D 00 08 */	lwz r3, 8(r29)
/* 80313778 0030F3D8  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_8031377C:
/* 8031377C 0030F3DC  80 BD 00 1C */	lwz r5, 0x1c(r29)
/* 80313780 0030F3E0  38 60 00 1C */	li r3, 0x1c
/* 80313784 0030F3E4  88 04 00 20 */	lbz r0, 0x20(r4)
/* 80313788 0030F3E8  7C A0 04 30 */	srw r0, r5, r0
/* 8031378C 0030F3EC  90 1D 00 24 */	stw r0, 0x24(r29)
/* 80313790 0030F3F0  A0 84 00 00 */	lhz r4, 0(r4)
/* 80313794 0030F3F4  38 04 FF FF */	addi r0, r4, -1
/* 80313798 0030F3F8  7C A0 00 38 */	and r0, r5, r0
/* 8031379C 0030F3FC  B0 1D 00 28 */	sth r0, 0x28(r29)
/* 803137A0 0030F400  48 00 01 20 */	b lbl_803138C0
lbl_803137A4:
/* 803137A4 0030F404  88 1B 00 20 */	lbz r0, 0x20(r27)
/* 803137A8 0030F408  7C 60 00 30 */	slw r0, r3, r0
/* 803137AC 0030F40C  7C 1F 00 40 */	cmplw r31, r0
/* 803137B0 0030F410  40 81 00 08 */	ble lbl_803137B8
/* 803137B4 0030F414  7C 1F 03 78 */	mr r31, r0
lbl_803137B8:
/* 803137B8 0030F418  80 1E 00 00 */	lwz r0, 0(r30)
/* 803137BC 0030F41C  7F E7 FB 78 */	mr r7, r31
/* 803137C0 0030F420  A0 DD 00 28 */	lhz r6, 0x28(r29)
/* 803137C4 0030F424  7F 63 DB 78 */	mr r3, r27
/* 803137C8 0030F428  7C 9C 02 14 */	add r4, r28, r0
/* 803137CC 0030F42C  39 01 00 08 */	addi r8, r1, 8
/* 803137D0 0030F430  3B E0 00 00 */	li r31, 0
/* 803137D4 0030F434  39 20 00 01 */	li r9, 1
/* 803137D8 0030F438  48 00 56 11 */	bl VFiPFSEC_WriteData
/* 803137DC 0030F43C  2C 03 00 00 */	cmpwi r3, 0
/* 803137E0 0030F440  41 82 00 14 */	beq lbl_803137F4
/* 803137E4 0030F444  80 01 00 08 */	lwz r0, 8(r1)
/* 803137E8 0030F448  2C 00 00 00 */	cmpwi r0, 0
/* 803137EC 0030F44C  40 82 00 08 */	bne lbl_803137F4
/* 803137F0 0030F450  48 00 00 BC */	b lbl_803138AC
lbl_803137F4:
/* 803137F4 0030F454  2C 1D 00 00 */	cmpwi r29, 0
/* 803137F8 0030F458  83 E1 00 08 */	lwz r31, 8(r1)
/* 803137FC 0030F45C  80 BD 00 20 */	lwz r5, 0x20(r29)
/* 80313800 0030F460  40 82 00 0C */	bne lbl_8031380C
/* 80313804 0030F464  38 80 00 00 */	li r4, 0
/* 80313808 0030F468  48 00 00 0C */	b lbl_80313814
lbl_8031380C:
/* 8031380C 0030F46C  80 7D 00 08 */	lwz r3, 8(r29)
/* 80313810 0030F470  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80313814:
/* 80313814 0030F474  A0 1D 00 28 */	lhz r0, 0x28(r29)
/* 80313818 0030F478  A0 64 00 00 */	lhz r3, 0(r4)
/* 8031381C 0030F47C  7C C0 FA 14 */	add r6, r0, r31
/* 80313820 0030F480  88 84 00 20 */	lbz r4, 0x20(r4)
/* 80313824 0030F484  38 03 FF FF */	addi r0, r3, -1
/* 80313828 0030F488  7C 00 30 39 */	and. r0, r0, r6
/* 8031382C 0030F48C  7C C0 24 30 */	srw r0, r6, r4
/* 80313830 0030F490  7C 85 02 14 */	add r4, r5, r0
/* 80313834 0030F494  41 82 00 0C */	beq lbl_80313840
/* 80313838 0030F498  90 9D 00 20 */	stw r4, 0x20(r29)
/* 8031383C 0030F49C  48 00 00 0C */	b lbl_80313848
lbl_80313840:
/* 80313840 0030F4A0  38 00 FF FF */	li r0, -1
/* 80313844 0030F4A4  90 1D 00 20 */	stw r0, 0x20(r29)
lbl_80313848:
/* 80313848 0030F4A8  80 1D 00 1C */	lwz r0, 0x1c(r29)
/* 8031384C 0030F4AC  80 7D 00 08 */	lwz r3, 8(r29)
/* 80313850 0030F4B0  7C A0 FA 14 */	add r5, r0, r31
/* 80313854 0030F4B4  90 BD 00 1C */	stw r5, 0x1c(r29)
/* 80313858 0030F4B8  80 03 02 64 */	lwz r0, 0x264(r3)
/* 8031385C 0030F4BC  7C 05 00 40 */	cmplw r5, r0
/* 80313860 0030F4C0  40 81 00 08 */	ble lbl_80313868
/* 80313864 0030F4C4  90 A3 02 64 */	stw r5, 0x264(r3)
lbl_80313868:
/* 80313868 0030F4C8  2C 1D 00 00 */	cmpwi r29, 0
/* 8031386C 0030F4CC  40 82 00 0C */	bne lbl_80313878
/* 80313870 0030F4D0  38 A0 00 00 */	li r5, 0
/* 80313874 0030F4D4  48 00 00 0C */	b lbl_80313880
lbl_80313878:
/* 80313878 0030F4D8  80 7D 00 08 */	lwz r3, 8(r29)
/* 8031387C 0030F4DC  80 A3 02 68 */	lwz r5, 0x268(r3)
lbl_80313880:
/* 80313880 0030F4E0  80 DD 00 1C */	lwz r6, 0x1c(r29)
/* 80313884 0030F4E4  7F A3 EB 78 */	mr r3, r29
/* 80313888 0030F4E8  88 05 00 20 */	lbz r0, 0x20(r5)
/* 8031388C 0030F4EC  7C C0 04 30 */	srw r0, r6, r0
/* 80313890 0030F4F0  90 1D 00 24 */	stw r0, 0x24(r29)
/* 80313894 0030F4F4  A0 A5 00 00 */	lhz r5, 0(r5)
/* 80313898 0030F4F8  38 05 FF FF */	addi r0, r5, -1
/* 8031389C 0030F4FC  7C C0 00 38 */	and r0, r6, r0
/* 803138A0 0030F500  B0 1D 00 28 */	sth r0, 0x28(r29)
/* 803138A4 0030F504  4B FF 74 DD */	bl VFiPFCLUSTER_UpdateLastAccessCluster
/* 803138A8 0030F508  38 60 00 00 */	li r3, 0
lbl_803138AC:
/* 803138AC 0030F50C  2C 03 00 00 */	cmpwi r3, 0
/* 803138B0 0030F510  93 FE 00 00 */	stw r31, 0(r30)
/* 803138B4 0030F514  41 82 00 08 */	beq lbl_803138BC
/* 803138B8 0030F518  48 00 00 08 */	b lbl_803138C0
lbl_803138BC:
/* 803138BC 0030F51C  38 60 00 00 */	li r3, 0
lbl_803138C0:
/* 803138C0 0030F520  39 61 00 30 */	addi r11, r1, 0x30
/* 803138C4 0030F524  4B EB 38 B1 */	bl _restgpr_27
/* 803138C8 0030F528  80 01 00 34 */	lwz r0, 0x34(r1)
/* 803138CC 0030F52C  7C 08 03 A6 */	mtlr r0
/* 803138D0 0030F530  38 21 00 30 */	addi r1, r1, 0x30
/* 803138D4 0030F534  4E 80 00 20 */	blr

.global VFiPFFILE_Cursor_Write
VFiPFFILE_Cursor_Write:
/* 803138D8 0030F538  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 803138DC 0030F53C  7C 08 02 A6 */	mflr r0
/* 803138E0 0030F540  90 01 00 54 */	stw r0, 0x54(r1)
/* 803138E4 0030F544  39 61 00 50 */	addi r11, r1, 0x50
/* 803138E8 0030F548  4B EB 38 2D */	bl _savegpr_22
/* 803138EC 0030F54C  80 E3 00 08 */	lwz r7, 8(r3)
/* 803138F0 0030F550  39 03 00 0C */	addi r8, r3, 0xc
/* 803138F4 0030F554  38 00 00 00 */	li r0, 0
/* 803138F8 0030F558  7C D9 33 78 */	mr r25, r6
/* 803138FC 0030F55C  91 07 00 34 */	stw r8, 0x34(r7)
/* 80313900 0030F560  7C 76 1B 78 */	mr r22, r3
/* 80313904 0030F564  7C 97 23 78 */	mr r23, r4
/* 80313908 0030F568  7C B8 2B 78 */	mr r24, r5
/* 8031390C 0030F56C  90 06 00 00 */	stw r0, 0(r6)
/* 80313910 0030F570  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 80313914 0030F574  20 C0 FF FF */	subfic r6, r0, -1
/* 80313918 0030F578  7C 06 28 40 */	cmplw r6, r5
/* 8031391C 0030F57C  40 80 00 28 */	bge lbl_80313944
/* 80313920 0030F580  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80313924 0030F584  38 00 00 25 */	li r0, 0x25
/* 80313928 0030F588  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 8031392C 0030F58C  7C D8 33 78 */	mr r24, r6
/* 80313930 0030F590  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80313934 0030F594  80 83 00 08 */	lwz r4, 8(r3)
/* 80313938 0030F598  80 84 00 38 */	lwz r4, 0x38(r4)
/* 8031393C 0030F59C  90 04 18 6C */	stw r0, 0x186c(r4)
/* 80313940 0030F5A0  90 03 00 18 */	stw r0, 0x18(r3)
lbl_80313944:
/* 80313944 0030F5A4  2C 03 00 00 */	cmpwi r3, 0
/* 80313948 0030F5A8  40 82 00 0C */	bne lbl_80313954
/* 8031394C 0030F5AC  3B A0 00 00 */	li r29, 0
/* 80313950 0030F5B0  48 00 00 0C */	b lbl_8031395C
lbl_80313954:
/* 80313954 0030F5B4  80 63 00 08 */	lwz r3, 8(r3)
/* 80313958 0030F5B8  83 A3 02 68 */	lwz r29, 0x268(r3)
lbl_8031395C:
/* 8031395C 0030F5BC  7F A3 EB 78 */	mr r3, r29
/* 80313960 0030F5C0  7E C4 B3 78 */	mr r4, r22
/* 80313964 0030F5C4  7E E5 BB 78 */	mr r5, r23
/* 80313968 0030F5C8  7F 06 C3 78 */	mr r6, r24
/* 8031396C 0030F5CC  38 E1 00 18 */	addi r7, r1, 0x18
/* 80313970 0030F5D0  4B FF F7 F5 */	bl VFiPFFILE_Cursor_WriteHeadSector
/* 80313974 0030F5D4  80 99 00 00 */	lwz r4, 0(r25)
/* 80313978 0030F5D8  2C 03 00 00 */	cmpwi r3, 0
/* 8031397C 0030F5DC  80 01 00 18 */	lwz r0, 0x18(r1)
/* 80313980 0030F5E0  7C 04 02 14 */	add r0, r4, r0
/* 80313984 0030F5E4  90 19 00 00 */	stw r0, 0(r25)
/* 80313988 0030F5E8  41 82 00 08 */	beq lbl_80313990
/* 8031398C 0030F5EC  48 00 02 C4 */	b lbl_80313C50
lbl_80313990:
/* 80313990 0030F5F0  80 01 00 18 */	lwz r0, 0x18(r1)
/* 80313994 0030F5F4  7C 00 C0 40 */	cmplw r0, r24
/* 80313998 0030F5F8  41 80 00 0C */	blt lbl_803139A4
/* 8031399C 0030F5FC  38 60 00 00 */	li r3, 0
/* 803139A0 0030F600  48 00 02 B0 */	b lbl_80313C50
lbl_803139A4:
/* 803139A4 0030F604  80 76 00 08 */	lwz r3, 8(r22)
/* 803139A8 0030F608  7F 00 C0 50 */	subf r24, r0, r24
/* 803139AC 0030F60C  80 16 00 1C */	lwz r0, 0x1c(r22)
/* 803139B0 0030F610  38 A1 00 14 */	addi r5, r1, 0x14
/* 803139B4 0030F614  38 63 00 04 */	addi r3, r3, 4
/* 803139B8 0030F618  7C 80 C2 14 */	add r4, r0, r24
/* 803139BC 0030F61C  4B FF C9 15 */	bl VFiPFFAT_CountAllocatedClusters
/* 803139C0 0030F620  2C 03 00 00 */	cmpwi r3, 0
/* 803139C4 0030F624  41 82 00 08 */	beq lbl_803139CC
/* 803139C8 0030F628  48 00 02 88 */	b lbl_80313C50
lbl_803139CC:
/* 803139CC 0030F62C  88 9D 00 20 */	lbz r4, 0x20(r29)
/* 803139D0 0030F630  88 7D 00 21 */	lbz r3, 0x21(r29)
/* 803139D4 0030F634  80 16 00 1C */	lwz r0, 0x1c(r22)
/* 803139D8 0030F638  7C 64 1A 14 */	add r3, r4, r3
/* 803139DC 0030F63C  80 A1 00 14 */	lwz r5, 0x14(r1)
/* 803139E0 0030F640  7C 80 C2 14 */	add r4, r0, r24
/* 803139E4 0030F644  7C A0 18 30 */	slw r0, r5, r3
/* 803139E8 0030F648  7C 04 00 40 */	cmplw r4, r0
/* 803139EC 0030F64C  40 81 00 10 */	ble lbl_803139FC
/* 803139F0 0030F650  7F 40 20 50 */	subf r26, r0, r4
/* 803139F4 0030F654  7F 7A C0 50 */	subf r27, r26, r24
/* 803139F8 0030F658  48 00 00 54 */	b lbl_80313A4C
lbl_803139FC:
/* 803139FC 0030F65C  7F 1B C3 78 */	mr r27, r24
/* 80313A00 0030F660  3B 40 00 00 */	li r26, 0
/* 80313A04 0030F664  48 00 00 48 */	b lbl_80313A4C
lbl_80313A08:
/* 80313A08 0030F668  80 19 00 00 */	lwz r0, 0(r25)
/* 80313A0C 0030F66C  7F A3 EB 78 */	mr r3, r29
/* 80313A10 0030F670  7E C4 B3 78 */	mr r4, r22
/* 80313A14 0030F674  7F 66 DB 78 */	mr r6, r27
/* 80313A18 0030F678  7C B7 02 14 */	add r5, r23, r0
/* 80313A1C 0030F67C  38 E1 00 18 */	addi r7, r1, 0x18
/* 80313A20 0030F680  4B FF FC 61 */	bl VFiPFFILE_Cursor_Write_Overwrite
/* 80313A24 0030F684  80 99 00 00 */	lwz r4, 0(r25)
/* 80313A28 0030F688  2C 03 00 00 */	cmpwi r3, 0
/* 80313A2C 0030F68C  80 01 00 18 */	lwz r0, 0x18(r1)
/* 80313A30 0030F690  7C 04 02 14 */	add r0, r4, r0
/* 80313A34 0030F694  90 19 00 00 */	stw r0, 0(r25)
/* 80313A38 0030F698  41 82 00 08 */	beq lbl_80313A40
/* 80313A3C 0030F69C  48 00 02 14 */	b lbl_80313C50
lbl_80313A40:
/* 80313A40 0030F6A0  80 01 00 18 */	lwz r0, 0x18(r1)
/* 80313A44 0030F6A4  7F 60 D8 50 */	subf r27, r0, r27
/* 80313A48 0030F6A8  7F 00 C0 50 */	subf r24, r0, r24
lbl_80313A4C:
/* 80313A4C 0030F6AC  2C 1B 00 00 */	cmpwi r27, 0
/* 80313A50 0030F6B0  41 82 00 10 */	beq lbl_80313A60
/* 80313A54 0030F6B4  A0 1D 00 00 */	lhz r0, 0(r29)
/* 80313A58 0030F6B8  7C 1B 00 40 */	cmplw r27, r0
/* 80313A5C 0030F6BC  40 80 FF AC */	bge lbl_80313A08
lbl_80313A60:
/* 80313A60 0030F6C0  3B C0 00 00 */	li r30, 0
/* 80313A64 0030F6C4  3B E0 FF FF */	li r31, -1
/* 80313A68 0030F6C8  48 00 01 94 */	b lbl_80313BFC
lbl_80313A6C:
/* 80313A6C 0030F6CC  80 19 00 00 */	lwz r0, 0(r25)
/* 80313A70 0030F6D0  7E C3 B3 78 */	mr r3, r22
/* 80313A74 0030F6D4  7F 44 D3 78 */	mr r4, r26
/* 80313A78 0030F6D8  38 A1 00 0C */	addi r5, r1, 0xc
/* 80313A7C 0030F6DC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80313A80 0030F6E0  7F 97 02 14 */	add r28, r23, r0
/* 80313A84 0030F6E4  38 C1 00 08 */	addi r6, r1, 8
/* 80313A88 0030F6E8  3B 60 00 00 */	li r27, 0
/* 80313A8C 0030F6EC  4B FF 73 C9 */	bl VFiPFCLUSTER_AppendCluster
/* 80313A90 0030F6F0  2C 03 00 00 */	cmpwi r3, 0
/* 80313A94 0030F6F4  41 82 00 08 */	beq lbl_80313A9C
/* 80313A98 0030F6F8  48 00 01 2C */	b lbl_80313BC4
lbl_80313A9C:
/* 80313A9C 0030F6FC  80 A1 00 08 */	lwz r5, 8(r1)
/* 80313AA0 0030F700  90 B6 00 20 */	stw r5, 0x20(r22)
/* 80313AA4 0030F704  80 E1 00 0C */	lwz r7, 0xc(r1)
/* 80313AA8 0030F708  2C 07 00 00 */	cmpwi r7, 0
/* 80313AAC 0030F70C  40 82 00 0C */	bne lbl_80313AB8
/* 80313AB0 0030F710  38 60 00 00 */	li r3, 0
/* 80313AB4 0030F714  48 00 01 10 */	b lbl_80313BC4
lbl_80313AB8:
/* 80313AB8 0030F718  80 01 00 18 */	lwz r0, 0x18(r1)
/* 80313ABC 0030F71C  7C FB 3B 78 */	mr r27, r7
/* 80313AC0 0030F720  A0 D6 00 28 */	lhz r6, 0x28(r22)
/* 80313AC4 0030F724  7F A3 EB 78 */	mr r3, r29
/* 80313AC8 0030F728  7C 9C 02 14 */	add r4, r28, r0
/* 80313ACC 0030F72C  39 01 00 10 */	addi r8, r1, 0x10
/* 80313AD0 0030F730  3B 80 00 00 */	li r28, 0
/* 80313AD4 0030F734  39 20 00 01 */	li r9, 1
/* 80313AD8 0030F738  48 00 53 11 */	bl VFiPFSEC_WriteData
/* 80313ADC 0030F73C  2C 03 00 00 */	cmpwi r3, 0
/* 80313AE0 0030F740  41 82 00 14 */	beq lbl_80313AF4
/* 80313AE4 0030F744  80 01 00 10 */	lwz r0, 0x10(r1)
/* 80313AE8 0030F748  2C 00 00 00 */	cmpwi r0, 0
/* 80313AEC 0030F74C  40 82 00 08 */	bne lbl_80313AF4
/* 80313AF0 0030F750  48 00 00 B8 */	b lbl_80313BA8
lbl_80313AF4:
/* 80313AF4 0030F754  2C 16 00 00 */	cmpwi r22, 0
/* 80313AF8 0030F758  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80313AFC 0030F75C  80 B6 00 20 */	lwz r5, 0x20(r22)
/* 80313B00 0030F760  40 82 00 0C */	bne lbl_80313B0C
/* 80313B04 0030F764  38 80 00 00 */	li r4, 0
/* 80313B08 0030F768  48 00 00 0C */	b lbl_80313B14
lbl_80313B0C:
/* 80313B0C 0030F76C  80 76 00 08 */	lwz r3, 8(r22)
/* 80313B10 0030F770  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80313B14:
/* 80313B14 0030F774  A0 16 00 28 */	lhz r0, 0x28(r22)
/* 80313B18 0030F778  A0 64 00 00 */	lhz r3, 0(r4)
/* 80313B1C 0030F77C  7C C0 E2 14 */	add r6, r0, r28
/* 80313B20 0030F780  88 84 00 20 */	lbz r4, 0x20(r4)
/* 80313B24 0030F784  38 03 FF FF */	addi r0, r3, -1
/* 80313B28 0030F788  7C 00 30 39 */	and. r0, r0, r6
/* 80313B2C 0030F78C  7C C0 24 30 */	srw r0, r6, r4
/* 80313B30 0030F790  7C 85 02 14 */	add r4, r5, r0
/* 80313B34 0030F794  41 82 00 0C */	beq lbl_80313B40
/* 80313B38 0030F798  90 96 00 20 */	stw r4, 0x20(r22)
/* 80313B3C 0030F79C  48 00 00 08 */	b lbl_80313B44
lbl_80313B40:
/* 80313B40 0030F7A0  93 F6 00 20 */	stw r31, 0x20(r22)
lbl_80313B44:
/* 80313B44 0030F7A4  80 16 00 1C */	lwz r0, 0x1c(r22)
/* 80313B48 0030F7A8  80 76 00 08 */	lwz r3, 8(r22)
/* 80313B4C 0030F7AC  7C A0 E2 14 */	add r5, r0, r28
/* 80313B50 0030F7B0  90 B6 00 1C */	stw r5, 0x1c(r22)
/* 80313B54 0030F7B4  80 03 02 64 */	lwz r0, 0x264(r3)
/* 80313B58 0030F7B8  7C 05 00 40 */	cmplw r5, r0
/* 80313B5C 0030F7BC  40 81 00 08 */	ble lbl_80313B64
/* 80313B60 0030F7C0  90 A3 02 64 */	stw r5, 0x264(r3)
lbl_80313B64:
/* 80313B64 0030F7C4  2C 16 00 00 */	cmpwi r22, 0
/* 80313B68 0030F7C8  40 82 00 0C */	bne lbl_80313B74
/* 80313B6C 0030F7CC  38 A0 00 00 */	li r5, 0
/* 80313B70 0030F7D0  48 00 00 0C */	b lbl_80313B7C
lbl_80313B74:
/* 80313B74 0030F7D4  80 76 00 08 */	lwz r3, 8(r22)
/* 80313B78 0030F7D8  80 A3 02 68 */	lwz r5, 0x268(r3)
lbl_80313B7C:
/* 80313B7C 0030F7DC  80 D6 00 1C */	lwz r6, 0x1c(r22)
/* 80313B80 0030F7E0  7E C3 B3 78 */	mr r3, r22
/* 80313B84 0030F7E4  88 05 00 20 */	lbz r0, 0x20(r5)
/* 80313B88 0030F7E8  7C C0 04 30 */	srw r0, r6, r0
/* 80313B8C 0030F7EC  90 16 00 24 */	stw r0, 0x24(r22)
/* 80313B90 0030F7F0  A0 A5 00 00 */	lhz r5, 0(r5)
/* 80313B94 0030F7F4  38 05 FF FF */	addi r0, r5, -1
/* 80313B98 0030F7F8  7C C0 00 38 */	and r0, r6, r0
/* 80313B9C 0030F7FC  B0 16 00 28 */	sth r0, 0x28(r22)
/* 80313BA0 0030F800  4B FF 71 E1 */	bl VFiPFCLUSTER_UpdateLastAccessCluster
/* 80313BA4 0030F804  38 60 00 00 */	li r3, 0
lbl_80313BA8:
/* 80313BA8 0030F808  80 81 00 18 */	lwz r4, 0x18(r1)
/* 80313BAC 0030F80C  7C 03 00 D0 */	neg r0, r3
/* 80313BB0 0030F810  7C 00 1B 78 */	or r0, r0, r3
/* 80313BB4 0030F814  7C 84 E2 14 */	add r4, r4, r28
/* 80313BB8 0030F818  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 80313BBC 0030F81C  90 81 00 18 */	stw r4, 0x18(r1)
/* 80313BC0 0030F820  7C 63 00 38 */	and r3, r3, r0
lbl_80313BC4:
/* 80313BC4 0030F824  80 99 00 00 */	lwz r4, 0(r25)
/* 80313BC8 0030F828  2C 03 00 00 */	cmpwi r3, 0
/* 80313BCC 0030F82C  80 01 00 18 */	lwz r0, 0x18(r1)
/* 80313BD0 0030F830  7C 04 02 14 */	add r0, r4, r0
/* 80313BD4 0030F834  90 19 00 00 */	stw r0, 0(r25)
/* 80313BD8 0030F838  41 82 00 08 */	beq lbl_80313BE0
/* 80313BDC 0030F83C  48 00 00 74 */	b lbl_80313C50
lbl_80313BE0:
/* 80313BE0 0030F840  2C 1B 00 00 */	cmpwi r27, 0
/* 80313BE4 0030F844  40 82 00 0C */	bne lbl_80313BF0
/* 80313BE8 0030F848  38 60 00 00 */	li r3, 0
/* 80313BEC 0030F84C  48 00 00 64 */	b lbl_80313C50
lbl_80313BF0:
/* 80313BF0 0030F850  80 01 00 18 */	lwz r0, 0x18(r1)
/* 80313BF4 0030F854  7F 5B D0 50 */	subf r26, r27, r26
/* 80313BF8 0030F858  7F 00 C0 50 */	subf r24, r0, r24
lbl_80313BFC:
/* 80313BFC 0030F85C  2C 1A 00 00 */	cmpwi r26, 0
/* 80313C00 0030F860  41 82 00 10 */	beq lbl_80313C10
/* 80313C04 0030F864  A0 1D 00 00 */	lhz r0, 0(r29)
/* 80313C08 0030F868  7C 18 00 40 */	cmplw r24, r0
/* 80313C0C 0030F86C  40 80 FE 60 */	bge lbl_80313A6C
lbl_80313C10:
/* 80313C10 0030F870  80 19 00 00 */	lwz r0, 0(r25)
/* 80313C14 0030F874  7F A3 EB 78 */	mr r3, r29
/* 80313C18 0030F878  7E C4 B3 78 */	mr r4, r22
/* 80313C1C 0030F87C  7F 06 C3 78 */	mr r6, r24
/* 80313C20 0030F880  7F 47 D3 78 */	mr r7, r26
/* 80313C24 0030F884  7C B7 02 14 */	add r5, r23, r0
/* 80313C28 0030F888  39 01 00 18 */	addi r8, r1, 0x18
/* 80313C2C 0030F88C  4B FF F7 91 */	bl VFiPFFILE_Cursor_WriteTailSector
/* 80313C30 0030F890  80 99 00 00 */	lwz r4, 0(r25)
/* 80313C34 0030F894  2C 03 00 00 */	cmpwi r3, 0
/* 80313C38 0030F898  80 01 00 18 */	lwz r0, 0x18(r1)
/* 80313C3C 0030F89C  7C 04 02 14 */	add r0, r4, r0
/* 80313C40 0030F8A0  90 19 00 00 */	stw r0, 0(r25)
/* 80313C44 0030F8A4  41 82 00 08 */	beq lbl_80313C4C
/* 80313C48 0030F8A8  48 00 00 08 */	b lbl_80313C50
lbl_80313C4C:
/* 80313C4C 0030F8AC  38 60 00 00 */	li r3, 0
lbl_80313C50:
/* 80313C50 0030F8B0  39 61 00 50 */	addi r11, r1, 0x50
/* 80313C54 0030F8B4  4B EB 35 0D */	bl _restgpr_22
/* 80313C58 0030F8B8  80 01 00 54 */	lwz r0, 0x54(r1)
/* 80313C5C 0030F8BC  7C 08 03 A6 */	mtlr r0
/* 80313C60 0030F8C0  38 21 00 50 */	addi r1, r1, 0x50
/* 80313C64 0030F8C4  4E 80 00 20 */	blr

.global VFiPFFILE_Cursor_MoveToClusterEnd
VFiPFFILE_Cursor_MoveToClusterEnd:
/* 80313C68 0030F8C8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80313C6C 0030F8CC  7C 08 02 A6 */	mflr r0
/* 80313C70 0030F8D0  2C 03 00 00 */	cmpwi r3, 0
/* 80313C74 0030F8D4  90 01 00 24 */	stw r0, 0x24(r1)
/* 80313C78 0030F8D8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80313C7C 0030F8DC  7C 7F 1B 78 */	mr r31, r3
/* 80313C80 0030F8E0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80313C84 0030F8E4  40 82 00 0C */	bne lbl_80313C90
/* 80313C88 0030F8E8  3B C0 00 00 */	li r30, 0
/* 80313C8C 0030F8EC  48 00 00 0C */	b lbl_80313C98
lbl_80313C90:
/* 80313C90 0030F8F0  80 A3 00 08 */	lwz r5, 8(r3)
/* 80313C94 0030F8F4  83 C5 02 68 */	lwz r30, 0x268(r5)
lbl_80313C98:
/* 80313C98 0030F8F8  80 63 00 08 */	lwz r3, 8(r3)
/* 80313C9C 0030F8FC  38 A1 00 08 */	addi r5, r1, 8
/* 80313CA0 0030F900  38 63 00 04 */	addi r3, r3, 4
/* 80313CA4 0030F904  4B FF C6 2D */	bl VFiPFFAT_CountAllocatedClusters
/* 80313CA8 0030F908  88 9E 00 20 */	lbz r4, 0x20(r30)
/* 80313CAC 0030F90C  38 00 FF FF */	li r0, -1
/* 80313CB0 0030F910  88 7E 00 21 */	lbz r3, 0x21(r30)
/* 80313CB4 0030F914  80 A1 00 08 */	lwz r5, 8(r1)
/* 80313CB8 0030F918  7C 64 1A 14 */	add r3, r4, r3
/* 80313CBC 0030F91C  7C 00 1C 30 */	srw r0, r0, r3
/* 80313CC0 0030F920  7C 05 00 40 */	cmplw r5, r0
/* 80313CC4 0030F924  40 81 00 AC */	ble lbl_80313D70
/* 80313CC8 0030F928  2C 1F 00 00 */	cmpwi r31, 0
/* 80313CCC 0030F92C  40 82 00 0C */	bne lbl_80313CD8
/* 80313CD0 0030F930  38 A0 00 00 */	li r5, 0
/* 80313CD4 0030F934  48 00 00 0C */	b lbl_80313CE0
lbl_80313CD8:
/* 80313CD8 0030F938  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313CDC 0030F93C  80 A3 02 68 */	lwz r5, 0x268(r3)
lbl_80313CE0:
/* 80313CE0 0030F940  A0 65 00 00 */	lhz r3, 0(r5)
/* 80313CE4 0030F944  38 80 FF FF */	li r4, -1
/* 80313CE8 0030F948  80 FF 00 1C */	lwz r7, 0x1c(r31)
/* 80313CEC 0030F94C  39 03 FF FF */	addi r8, r3, -1
/* 80313CF0 0030F950  89 25 00 20 */	lbz r9, 0x20(r5)
/* 80313CF4 0030F954  7C E5 40 38 */	and r5, r7, r8
/* 80313CF8 0030F958  7C 65 00 D0 */	neg r3, r5
/* 80313CFC 0030F95C  7C 08 00 D0 */	neg r0, r8
/* 80313D00 0030F960  7C 66 2B 78 */	or r6, r3, r5
/* 80313D04 0030F964  7C E5 4C 30 */	srw r5, r7, r9
/* 80313D08 0030F968  7C 00 43 78 */	or r0, r0, r8
/* 80313D0C 0030F96C  7C 83 4C 30 */	srw r3, r4, r9
/* 80313D10 0030F970  54 C6 0F FE */	srwi r6, r6, 0x1f
/* 80313D14 0030F974  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80313D18 0030F978  7C A5 32 14 */	add r5, r5, r6
/* 80313D1C 0030F97C  7C 03 02 14 */	add r0, r3, r0
/* 80313D20 0030F980  7C 05 00 40 */	cmplw r5, r0
/* 80313D24 0030F984  41 82 00 08 */	beq lbl_80313D2C
/* 80313D28 0030F988  90 9F 00 20 */	stw r4, 0x20(r31)
lbl_80313D2C:
/* 80313D2C 0030F98C  38 00 FF FF */	li r0, -1
/* 80313D30 0030F990  2C 1F 00 00 */	cmpwi r31, 0
/* 80313D34 0030F994  90 1F 00 1C */	stw r0, 0x1c(r31)
/* 80313D38 0030F998  40 82 00 0C */	bne lbl_80313D44
/* 80313D3C 0030F99C  38 60 00 00 */	li r3, 0
/* 80313D40 0030F9A0  48 00 00 0C */	b lbl_80313D4C
lbl_80313D44:
/* 80313D44 0030F9A4  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313D48 0030F9A8  80 63 02 68 */	lwz r3, 0x268(r3)
lbl_80313D4C:
/* 80313D4C 0030F9AC  80 9F 00 1C */	lwz r4, 0x1c(r31)
/* 80313D50 0030F9B0  88 03 00 20 */	lbz r0, 0x20(r3)
/* 80313D54 0030F9B4  7C 80 04 30 */	srw r0, r4, r0
/* 80313D58 0030F9B8  90 1F 00 24 */	stw r0, 0x24(r31)
/* 80313D5C 0030F9BC  A0 63 00 00 */	lhz r3, 0(r3)
/* 80313D60 0030F9C0  38 03 FF FF */	addi r0, r3, -1
/* 80313D64 0030F9C4  7C 80 00 38 */	and r0, r4, r0
/* 80313D68 0030F9C8  B0 1F 00 28 */	sth r0, 0x28(r31)
/* 80313D6C 0030F9CC  48 00 00 AC */	b lbl_80313E18
lbl_80313D70:
/* 80313D70 0030F9D0  2C 1F 00 00 */	cmpwi r31, 0
/* 80313D74 0030F9D4  7C A8 18 30 */	slw r8, r5, r3
/* 80313D78 0030F9D8  40 82 00 0C */	bne lbl_80313D84
/* 80313D7C 0030F9DC  38 80 00 00 */	li r4, 0
/* 80313D80 0030F9E0  48 00 00 0C */	b lbl_80313D8C
lbl_80313D84:
/* 80313D84 0030F9E4  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313D88 0030F9E8  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80313D8C:
/* 80313D8C 0030F9EC  A0 64 00 00 */	lhz r3, 0(r4)
/* 80313D90 0030F9F0  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80313D94 0030F9F4  38 63 FF FF */	addi r3, r3, -1
/* 80313D98 0030F9F8  88 84 00 20 */	lbz r4, 0x20(r4)
/* 80313D9C 0030F9FC  7C 07 18 38 */	and r7, r0, r3
/* 80313DA0 0030FA00  7C 05 24 30 */	srw r5, r0, r4
/* 80313DA4 0030FA04  7D 03 18 38 */	and r3, r8, r3
/* 80313DA8 0030FA08  7C C7 00 D0 */	neg r6, r7
/* 80313DAC 0030FA0C  7D 04 24 30 */	srw r4, r8, r4
/* 80313DB0 0030FA10  7C 03 00 D0 */	neg r0, r3
/* 80313DB4 0030FA14  7C 00 1B 78 */	or r0, r0, r3
/* 80313DB8 0030FA18  7C C6 3B 78 */	or r6, r6, r7
/* 80313DBC 0030FA1C  54 C3 0F FE */	srwi r3, r6, 0x1f
/* 80313DC0 0030FA20  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80313DC4 0030FA24  7C 65 1A 14 */	add r3, r5, r3
/* 80313DC8 0030FA28  7C 04 02 14 */	add r0, r4, r0
/* 80313DCC 0030FA2C  7C 03 00 40 */	cmplw r3, r0
/* 80313DD0 0030FA30  41 82 00 0C */	beq lbl_80313DDC
/* 80313DD4 0030FA34  38 00 FF FF */	li r0, -1
/* 80313DD8 0030FA38  90 1F 00 20 */	stw r0, 0x20(r31)
lbl_80313DDC:
/* 80313DDC 0030FA3C  2C 1F 00 00 */	cmpwi r31, 0
/* 80313DE0 0030FA40  91 1F 00 1C */	stw r8, 0x1c(r31)
/* 80313DE4 0030FA44  40 82 00 0C */	bne lbl_80313DF0
/* 80313DE8 0030FA48  38 60 00 00 */	li r3, 0
/* 80313DEC 0030FA4C  48 00 00 0C */	b lbl_80313DF8
lbl_80313DF0:
/* 80313DF0 0030FA50  80 7F 00 08 */	lwz r3, 8(r31)
/* 80313DF4 0030FA54  80 63 02 68 */	lwz r3, 0x268(r3)
lbl_80313DF8:
/* 80313DF8 0030FA58  80 9F 00 1C */	lwz r4, 0x1c(r31)
/* 80313DFC 0030FA5C  88 03 00 20 */	lbz r0, 0x20(r3)
/* 80313E00 0030FA60  7C 80 04 30 */	srw r0, r4, r0
/* 80313E04 0030FA64  90 1F 00 24 */	stw r0, 0x24(r31)
/* 80313E08 0030FA68  A0 63 00 00 */	lhz r3, 0(r3)
/* 80313E0C 0030FA6C  38 03 FF FF */	addi r0, r3, -1
/* 80313E10 0030FA70  7C 80 00 38 */	and r0, r4, r0
/* 80313E14 0030FA74  B0 1F 00 28 */	sth r0, 0x28(r31)
lbl_80313E18:
/* 80313E18 0030FA78  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80313E1C 0030FA7C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80313E20 0030FA80  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80313E24 0030FA84  7C 08 03 A6 */	mtlr r0
/* 80313E28 0030FA88  38 21 00 20 */	addi r1, r1, 0x20
/* 80313E2C 0030FA8C  4E 80 00 20 */	blr

.global VFiPFFILE_GetSFD
VFiPFFILE_GetSFD:
/* 80313E30 0030FA90  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80313E34 0030FA94  7C 08 02 A6 */	mflr r0
/* 80313E38 0030FA98  90 01 00 24 */	stw r0, 0x24(r1)
/* 80313E3C 0030FA9C  39 61 00 20 */	addi r11, r1, 0x20
/* 80313E40 0030FAA0  4B EB 32 E9 */	bl _savegpr_27
/* 80313E44 0030FAA4  7C 7C 1B 78 */	mr r28, r3
/* 80313E48 0030FAA8  38 00 00 05 */	li r0, 5
/* 80313E4C 0030FAAC  7C 9D 23 78 */	mr r29, r4
/* 80313E50 0030FAB0  38 E3 00 40 */	addi r7, r3, 0x40
/* 80313E54 0030FAB4  7F 86 E3 78 */	mr r6, r28
/* 80313E58 0030FAB8  3B E0 00 00 */	li r31, 0
/* 80313E5C 0030FABC  3B C0 00 00 */	li r30, 0
/* 80313E60 0030FAC0  39 00 00 00 */	li r8, 0
/* 80313E64 0030FAC4  7C 09 03 A6 */	mtctr r0
lbl_80313E68:
/* 80313E68 0030FAC8  80 06 00 40 */	lwz r0, 0x40(r6)
/* 80313E6C 0030FACC  54 05 07 FF */	clrlwi. r5, r0, 0x1f
/* 80313E70 0030FAD0  41 82 00 14 */	beq lbl_80313E84
/* 80313E74 0030FAD4  41 82 00 24 */	beq lbl_80313E98
/* 80313E78 0030FAD8  7C 00 00 34 */	cntlzw r0, r0
/* 80313E7C 0030FADC  54 00 DF BD */	rlwinm. r0, r0, 0x1b, 0x1e, 0x1e
/* 80313E80 0030FAE0  41 82 00 18 */	beq lbl_80313E98
lbl_80313E84:
/* 80313E84 0030FAE4  2C 1E 00 00 */	cmpwi r30, 0
/* 80313E88 0030FAE8  40 82 00 5C */	bne lbl_80313EE4
/* 80313E8C 0030FAEC  7C FE 3B 78 */	mr r30, r7
/* 80313E90 0030FAF0  7D 1F 43 78 */	mr r31, r8
/* 80313E94 0030FAF4  48 00 00 50 */	b lbl_80313EE4
lbl_80313E98:
/* 80313E98 0030FAF8  80 A4 02 2C */	lwz r5, 0x22c(r4)
/* 80313E9C 0030FAFC  80 06 02 A8 */	lwz r0, 0x2a8(r6)
/* 80313EA0 0030FB00  7C 05 00 40 */	cmplw r5, r0
/* 80313EA4 0030FB04  40 82 00 40 */	bne lbl_80313EE4
/* 80313EA8 0030FB08  80 A4 02 38 */	lwz r5, 0x238(r4)
/* 80313EAC 0030FB0C  80 06 02 B4 */	lwz r0, 0x2b4(r6)
/* 80313EB0 0030FB10  7C 05 00 40 */	cmplw r5, r0
/* 80313EB4 0030FB14  40 82 00 30 */	bne lbl_80313EE4
/* 80313EB8 0030FB18  A0 A4 02 3C */	lhz r5, 0x23c(r4)
/* 80313EBC 0030FB1C  A0 06 02 B8 */	lhz r0, 0x2b8(r6)
/* 80313EC0 0030FB20  7C 05 00 40 */	cmplw r5, r0
/* 80313EC4 0030FB24  40 82 00 20 */	bne lbl_80313EE4
/* 80313EC8 0030FB28  1C 08 02 90 */	mulli r0, r8, 0x290
/* 80313ECC 0030FB2C  7C A3 02 14 */	add r5, r3, r0
/* 80313ED0 0030FB30  A0 85 02 CC */	lhz r4, 0x2cc(r5)
/* 80313ED4 0030FB34  38 65 00 40 */	addi r3, r5, 0x40
/* 80313ED8 0030FB38  38 04 00 01 */	addi r0, r4, 1
/* 80313EDC 0030FB3C  B0 05 02 CC */	sth r0, 0x2cc(r5)
/* 80313EE0 0030FB40  48 00 01 08 */	b lbl_80313FE8
lbl_80313EE4:
/* 80313EE4 0030FB44  38 C6 02 90 */	addi r6, r6, 0x290
/* 80313EE8 0030FB48  38 E7 02 90 */	addi r7, r7, 0x290
/* 80313EEC 0030FB4C  39 08 00 01 */	addi r8, r8, 1
/* 80313EF0 0030FB50  42 00 FF 78 */	bdnz lbl_80313E68
/* 80313EF4 0030FB54  2C 1E 00 00 */	cmpwi r30, 0
/* 80313EF8 0030FB58  40 82 00 0C */	bne lbl_80313F04
/* 80313EFC 0030FB5C  38 60 00 00 */	li r3, 0
/* 80313F00 0030FB60  48 00 00 E8 */	b lbl_80313FE8
lbl_80313F04:
/* 80313F04 0030FB64  38 00 00 03 */	li r0, 3
/* 80313F08 0030FB68  38 60 00 01 */	li r3, 1
/* 80313F0C 0030FB6C  90 1E 00 00 */	stw r0, 0(r30)
/* 80313F10 0030FB70  38 00 00 48 */	li r0, 0x48
/* 80313F14 0030FB74  38 BE 00 38 */	addi r5, r30, 0x38
/* 80313F18 0030FB78  38 84 FF FC */	addi r4, r4, -4
/* 80313F1C 0030FB7C  B0 7E 02 8C */	sth r3, 0x28c(r30)
/* 80313F20 0030FB80  7C 09 03 A6 */	mtctr r0
lbl_80313F24:
/* 80313F24 0030FB84  80 64 00 04 */	lwz r3, 4(r4)
/* 80313F28 0030FB88  84 04 00 08 */	lwzu r0, 8(r4)
/* 80313F2C 0030FB8C  90 65 00 04 */	stw r3, 4(r5)
/* 80313F30 0030FB90  94 05 00 08 */	stwu r0, 8(r5)
/* 80313F34 0030FB94  42 00 FF F0 */	bdnz lbl_80313F24
/* 80313F38 0030FB98  3B 60 00 00 */	li r27, 0
/* 80313F3C 0030FB9C  38 7E 00 04 */	addi r3, r30, 4
/* 80313F40 0030FBA0  B3 7E 02 7C */	sth r27, 0x27c(r30)
/* 80313F44 0030FBA4  38 DE 02 70 */	addi r6, r30, 0x270
/* 80313F48 0030FBA8  38 80 00 00 */	li r4, 0
/* 80313F4C 0030FBAC  B3 7E 02 7E */	sth r27, 0x27e(r30)
/* 80313F50 0030FBB0  93 7E 02 80 */	stw r27, 0x280(r30)
/* 80313F54 0030FBB4  93 7E 02 84 */	stw r27, 0x284(r30)
/* 80313F58 0030FBB8  93 7E 02 88 */	stw r27, 0x288(r30)
/* 80313F5C 0030FBBC  80 BD 02 2C */	lwz r5, 0x22c(r29)
/* 80313F60 0030FBC0  4B FF D1 69 */	bl VFiPFFAT_InitFFD
/* 80313F64 0030FBC4  A0 1C 18 80 */	lhz r0, 0x1880(r28)
/* 80313F68 0030FBC8  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80313F6C 0030FBCC  41 82 00 78 */	beq lbl_80313FE4
/* 80313F70 0030FBD0  80 1C 18 88 */	lwz r0, 0x1888(r28)
/* 80313F74 0030FBD4  38 80 00 00 */	li r4, 0
/* 80313F78 0030FBD8  80 7C 18 84 */	lwz r3, 0x1884(r28)
/* 80313F7C 0030FBDC  7C 1F 01 D6 */	mullw r0, r31, r0
/* 80313F80 0030FBE0  54 00 10 3A */	slwi r0, r0, 2
/* 80313F84 0030FBE4  7C 63 02 14 */	add r3, r3, r0
/* 80313F88 0030FBE8  90 7E 00 20 */	stw r3, 0x20(r30)
/* 80313F8C 0030FBEC  80 1C 18 88 */	lwz r0, 0x1888(r28)
/* 80313F90 0030FBF0  54 05 10 3A */	slwi r5, r0, 2
/* 80313F94 0030FBF4  4B FF 10 41 */	bl VFipf_memset
/* 80313F98 0030FBF8  80 1C 18 88 */	lwz r0, 0x1888(r28)
/* 80313F9C 0030FBFC  90 1E 00 2C */	stw r0, 0x2c(r30)
/* 80313FA0 0030FC00  A0 1C 18 82 */	lhz r0, 0x1882(r28)
/* 80313FA4 0030FC04  B0 1E 00 24 */	sth r0, 0x24(r30)
/* 80313FA8 0030FC08  B3 7E 00 26 */	sth r27, 0x26(r30)
/* 80313FAC 0030FC0C  93 7E 00 28 */	stw r27, 0x28(r30)
/* 80313FB0 0030FC10  93 7E 00 30 */	stw r27, 0x30(r30)
/* 80313FB4 0030FC14  80 1D 02 28 */	lwz r0, 0x228(r29)
/* 80313FB8 0030FC18  2C 00 00 00 */	cmpwi r0, 0
/* 80313FBC 0030FC1C  41 82 00 28 */	beq lbl_80313FE4
/* 80313FC0 0030FC20  80 1E 00 2C */	lwz r0, 0x2c(r30)
/* 80313FC4 0030FC24  2C 00 00 00 */	cmpwi r0, 0
/* 80313FC8 0030FC28  41 82 00 1C */	beq lbl_80313FE4
/* 80313FCC 0030FC2C  80 1D 02 34 */	lwz r0, 0x234(r29)
/* 80313FD0 0030FC30  80 7E 00 20 */	lwz r3, 0x20(r30)
/* 80313FD4 0030FC34  90 03 00 00 */	stw r0, 0(r3)
/* 80313FD8 0030FC38  80 7E 00 28 */	lwz r3, 0x28(r30)
/* 80313FDC 0030FC3C  38 03 00 01 */	addi r0, r3, 1
/* 80313FE0 0030FC40  90 1E 00 28 */	stw r0, 0x28(r30)
lbl_80313FE4:
/* 80313FE4 0030FC44  7F C3 F3 78 */	mr r3, r30
lbl_80313FE8:
/* 80313FE8 0030FC48  39 61 00 20 */	addi r11, r1, 0x20
/* 80313FEC 0030FC4C  4B EB 31 89 */	bl _restgpr_27
/* 80313FF0 0030FC50  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80313FF4 0030FC54  7C 08 03 A6 */	mtlr r0
/* 80313FF8 0030FC58  38 21 00 20 */	addi r1, r1, 0x20
/* 80313FFC 0030FC5C  4E 80 00 20 */	blr

.global VFiPFFILE_createEmptyFile
VFiPFFILE_createEmptyFile:
/* 80314000 0030FC60  94 21 FD 20 */	stwu r1, -0x2e0(r1)
/* 80314004 0030FC64  7C 08 02 A6 */	mflr r0
/* 80314008 0030FC68  90 01 02 E4 */	stw r0, 0x2e4(r1)
/* 8031400C 0030FC6C  39 61 02 E0 */	addi r11, r1, 0x2e0
/* 80314010 0030FC70  4B EB 31 0D */	bl _savegpr_24
/* 80314014 0030FC74  38 00 00 48 */	li r0, 0x48
/* 80314018 0030FC78  7C 9D 23 78 */	mr r29, r4
/* 8031401C 0030FC7C  7C BE 2B 78 */	mr r30, r5
/* 80314020 0030FC80  7C 7C 1B 78 */	mr r28, r3
/* 80314024 0030FC84  7C DF 33 78 */	mr r31, r6
/* 80314028 0030FC88  38 A1 00 7C */	addi r5, r1, 0x7c
/* 8031402C 0030FC8C  38 84 FF FC */	addi r4, r4, -4
/* 80314030 0030FC90  7C 09 03 A6 */	mtctr r0
lbl_80314034:
/* 80314034 0030FC94  80 64 00 04 */	lwz r3, 4(r4)
/* 80314038 0030FC98  84 04 00 08 */	lwzu r0, 8(r4)
/* 8031403C 0030FC9C  90 65 00 04 */	stw r3, 4(r5)
/* 80314040 0030FCA0  94 05 00 08 */	stwu r0, 8(r5)
/* 80314044 0030FCA4  42 00 FF F0 */	bdnz lbl_80314034
/* 80314048 0030FCA8  80 A1 02 AC */	lwz r5, 0x2ac(r1)
/* 8031404C 0030FCAC  38 61 00 48 */	addi r3, r1, 0x48
/* 80314050 0030FCB0  38 81 00 18 */	addi r4, r1, 0x18
/* 80314054 0030FCB4  38 C1 02 B4 */	addi r6, r1, 0x2b4
/* 80314058 0030FCB8  4B FF D0 71 */	bl VFiPFFAT_InitFFD
/* 8031405C 0030FCBC  80 1C 15 E0 */	lwz r0, 0x15e0(r28)
/* 80314060 0030FCC0  2C 00 00 05 */	cmpwi r0, 5
/* 80314064 0030FCC4  41 80 00 0C */	blt lbl_80314070
/* 80314068 0030FCC8  38 60 00 15 */	li r3, 0x15
/* 8031406C 0030FCCC  48 00 02 90 */	b lbl_803142FC
lbl_80314070:
/* 80314070 0030FCD0  7F C4 F3 78 */	mr r4, r30
/* 80314074 0030FCD4  38 7D 02 0E */	addi r3, r29, 0x20e
/* 80314078 0030FCD8  48 00 3A 2D */	bl VFiPFPATH_parseShortName
/* 8031407C 0030FCDC  2C 03 00 00 */	cmpwi r3, 0
/* 80314080 0030FCE0  41 82 00 18 */	beq lbl_80314098
/* 80314084 0030FCE4  88 1D 02 0E */	lbz r0, 0x20e(r29)
/* 80314088 0030FCE8  7C 00 07 75 */	extsb. r0, r0
/* 8031408C 0030FCEC  40 82 00 0C */	bne lbl_80314098
/* 80314090 0030FCF0  38 60 00 01 */	li r3, 1
/* 80314094 0030FCF4  48 00 02 68 */	b lbl_803142FC
lbl_80314098:
/* 80314098 0030FCF8  2C 03 00 00 */	cmpwi r3, 0
/* 8031409C 0030FCFC  41 82 00 64 */	beq lbl_80314100
/* 803140A0 0030FD00  38 61 00 80 */	addi r3, r1, 0x80
/* 803140A4 0030FD04  38 9D 02 0E */	addi r4, r29, 0x20e
/* 803140A8 0030FD08  4B FF 89 F5 */	bl VFiPFENT_AdjustSFN
/* 803140AC 0030FD0C  2C 03 00 00 */	cmpwi r3, 0
/* 803140B0 0030FD10  41 82 00 08 */	beq lbl_803140B8
/* 803140B4 0030FD14  48 00 02 48 */	b lbl_803142FC
lbl_803140B8:
/* 803140B8 0030FD18  7F C3 F3 78 */	mr r3, r30
/* 803140BC 0030FD1C  4B FF 12 25 */	bl VFiPFSTR_GetCodeMode
/* 803140C0 0030FD20  28 03 00 01 */	cmplwi r3, 1
/* 803140C4 0030FD24  40 82 00 20 */	bne lbl_803140E4
/* 803140C8 0030FD28  7F C3 F3 78 */	mr r3, r30
/* 803140CC 0030FD2C  38 80 00 01 */	li r4, 1
/* 803140D0 0030FD30  4B FF 12 41 */	bl VFiPFSTR_GetStrPos
/* 803140D4 0030FD34  7C 64 1B 78 */	mr r4, r3
/* 803140D8 0030FD38  7F A3 EB 78 */	mr r3, r29
/* 803140DC 0030FD3C  48 00 39 31 */	bl VFiPFPATH_transformInUnicode
/* 803140E0 0030FD40  48 00 00 28 */	b lbl_80314108
lbl_803140E4:
/* 803140E4 0030FD44  7F C3 F3 78 */	mr r3, r30
/* 803140E8 0030FD48  38 80 00 01 */	li r4, 1
/* 803140EC 0030FD4C  4B FF 12 25 */	bl VFiPFSTR_GetStrPos
/* 803140F0 0030FD50  7C 64 1B 78 */	mr r4, r3
/* 803140F4 0030FD54  7F A3 EB 78 */	mr r3, r29
/* 803140F8 0030FD58  4B FF 17 8D */	bl VFipf_w_strcpy
/* 803140FC 0030FD5C  48 00 00 0C */	b lbl_80314108
lbl_80314100:
/* 80314100 0030FD60  38 00 00 00 */	li r0, 0
/* 80314104 0030FD64  B0 1D 00 00 */	sth r0, 0(r29)
lbl_80314108:
/* 80314108 0030FD68  80 1C 00 1C */	lwz r0, 0x1c(r28)
/* 8031410C 0030FD6C  2C 00 00 02 */	cmpwi r0, 2
/* 80314110 0030FD70  40 82 00 10 */	bne lbl_80314120
/* 80314114 0030FD74  38 00 00 01 */	li r0, 1
/* 80314118 0030FD78  90 1D 02 34 */	stw r0, 0x234(r29)
/* 8031411C 0030FD7C  48 00 00 0C */	b lbl_80314128
lbl_80314120:
/* 80314120 0030FD80  38 00 00 00 */	li r0, 0
/* 80314124 0030FD84  90 1D 02 34 */	stw r0, 0x234(r29)
lbl_80314128:
/* 80314128 0030FD88  38 A0 00 00 */	li r5, 0
/* 8031412C 0030FD8C  38 00 00 20 */	li r0, 0x20
/* 80314130 0030FD90  90 BD 02 28 */	stw r5, 0x228(r29)
/* 80314134 0030FD94  38 7D 02 20 */	addi r3, r29, 0x220
/* 80314138 0030FD98  38 9D 02 1E */	addi r4, r29, 0x21e
/* 8031413C 0030FD9C  93 9D 02 2C */	stw r28, 0x22c(r29)
/* 80314140 0030FDA0  98 BD 02 1B */	stb r5, 0x21b(r29)
/* 80314144 0030FDA4  98 1D 02 1C */	stb r0, 0x21c(r29)
/* 80314148 0030FDA8  4B FF 8A 31 */	bl VFiPFENT_getcurrentDateTimeForEnt
/* 8031414C 0030FDAC  A0 1D 00 00 */	lhz r0, 0(r29)
/* 80314150 0030FDB0  A0 BD 02 20 */	lhz r5, 0x220(r29)
/* 80314154 0030FDB4  A0 9D 02 1E */	lhz r4, 0x21e(r29)
/* 80314158 0030FDB8  2C 00 00 00 */	cmpwi r0, 0
/* 8031415C 0030FDBC  98 7D 02 1D */	stb r3, 0x21d(r29)
/* 80314160 0030FDC0  B0 BD 02 22 */	sth r5, 0x222(r29)
/* 80314164 0030FDC4  B0 9D 02 24 */	sth r4, 0x224(r29)
/* 80314168 0030FDC8  B0 BD 02 26 */	sth r5, 0x226(r29)
/* 8031416C 0030FDCC  41 82 01 4C */	beq lbl_803142B8
/* 80314170 0030FDD0  88 1D 02 1B */	lbz r0, 0x21b(r29)
/* 80314174 0030FDD4  54 00 06 F9 */	rlwinm. r0, r0, 0, 0x1b, 0x1c
/* 80314178 0030FDD8  40 82 01 40 */	bne lbl_803142B8
/* 8031417C 0030FDDC  3C 80 4E C5 */	lis r4, 0x4EC4EC4F@ha
/* 80314180 0030FDE0  7F A3 EB 78 */	mr r3, r29
/* 80314184 0030FDE4  38 04 EC 4F */	addi r0, r4, 0x4EC4EC4F@l
/* 80314188 0030FDE8  7F C7 F3 78 */	mr r7, r30
/* 8031418C 0030FDEC  7C 00 F8 16 */	mulhwu r0, r0, r31
/* 80314190 0030FDF0  38 A1 00 48 */	addi r5, r1, 0x48
/* 80314194 0030FDF4  38 C1 00 10 */	addi r6, r1, 0x10
/* 80314198 0030FDF8  39 01 00 08 */	addi r8, r1, 8
/* 8031419C 0030FDFC  54 09 F0 BE */	srwi r9, r0, 2
/* 803141A0 0030FE00  1C 09 00 0D */	mulli r0, r9, 0xd
/* 803141A4 0030FE04  7C 80 F8 50 */	subf r4, r0, r31
/* 803141A8 0030FE08  7C 04 00 D0 */	neg r0, r4
/* 803141AC 0030FE0C  7C 00 23 78 */	or r0, r0, r4
/* 803141B0 0030FE10  54 00 0F FE */	srwi r0, r0, 0x1f
/* 803141B4 0030FE14  7C 09 02 14 */	add r0, r9, r0
/* 803141B8 0030FE18  54 1A 06 3E */	clrlwi r26, r0, 0x18
/* 803141BC 0030FE1C  38 1A 00 01 */	addi r0, r26, 1
/* 803141C0 0030FE20  54 04 06 3E */	clrlwi r4, r0, 0x18
/* 803141C4 0030FE24  4B FF 82 01 */	bl VFiPFENT_allocateEntryPos
/* 803141C8 0030FE28  2C 03 00 00 */	cmpwi r3, 0
/* 803141CC 0030FE2C  41 82 00 08 */	beq lbl_803141D4
/* 803141D0 0030FE30  48 00 01 2C */	b lbl_803142FC
lbl_803141D4:
/* 803141D4 0030FE34  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 803141D8 0030FE38  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 803141DC 0030FE3C  80 03 00 3C */	lwz r0, 0x3c(r3)
/* 803141E0 0030FE40  54 00 07 BC */	rlwinm r0, r0, 0, 0x1e, 0x1e
/* 803141E4 0030FE44  28 00 00 02 */	cmplwi r0, 2
/* 803141E8 0030FE48  40 82 00 10 */	bne lbl_803141F8
/* 803141EC 0030FE4C  80 81 00 08 */	lwz r4, 8(r1)
/* 803141F0 0030FE50  38 7D 02 0E */	addi r3, r29, 0x20e
/* 803141F4 0030FE54  48 00 47 09 */	bl VFiPFPATH_AdjustExtShortName
lbl_803141F8:
/* 803141F8 0030FE58  9B 5D 02 0A */	stb r26, 0x20a(r29)
/* 803141FC 0030FE5C  7F A3 EB 78 */	mr r3, r29
/* 80314200 0030FE60  83 1D 02 38 */	lwz r24, 0x238(r29)
/* 80314204 0030FE64  4B FF 79 A5 */	bl VFiPFENT_CalcCheckSum
/* 80314208 0030FE68  7C 7F 1B 78 */	mr r31, r3
/* 8031420C 0030FE6C  7F 59 D3 78 */	mr r25, r26
/* 80314210 0030FE70  3B 61 00 10 */	addi r27, r1, 0x10
/* 80314214 0030FE74  3B C0 00 00 */	li r30, 0
/* 80314218 0030FE78  48 00 00 90 */	b lbl_803142A8
lbl_8031421C:
/* 8031421C 0030FE7C  7C 19 D0 50 */	subf r0, r25, r26
/* 80314220 0030FE80  7F A4 EB 78 */	mr r4, r29
/* 80314224 0030FE84  7C 00 00 34 */	cntlzw r0, r0
/* 80314228 0030FE88  38 61 00 28 */	addi r3, r1, 0x28
/* 8031422C 0030FE8C  57 25 06 3E */	clrlwi r5, r25, 0x18
/* 80314230 0030FE90  57 E6 06 3E */	clrlwi r6, r31, 0x18
/* 80314234 0030FE94  54 07 D9 7E */	srwi r7, r0, 5
/* 80314238 0030FE98  4B FF 7C AD */	bl VFiPFENT_storeLFNEntryFieldsToBuf
/* 8031423C 0030FE9C  A0 DD 02 3C */	lhz r6, 0x23c(r29)
/* 80314240 0030FEA0  7F 83 E3 78 */	mr r3, r28
/* 80314244 0030FEA4  7F 05 C3 78 */	mr r5, r24
/* 80314248 0030FEA8  38 81 00 28 */	addi r4, r1, 0x28
/* 8031424C 0030FEAC  39 01 00 0C */	addi r8, r1, 0xc
/* 80314250 0030FEB0  38 E0 00 20 */	li r7, 0x20
/* 80314254 0030FEB4  39 20 00 00 */	li r9, 0
/* 80314258 0030FEB8  48 00 4B 91 */	bl VFiPFSEC_WriteData
/* 8031425C 0030FEBC  2C 03 00 00 */	cmpwi r3, 0
/* 80314260 0030FEC0  41 82 00 08 */	beq lbl_80314268
/* 80314264 0030FEC4  48 00 00 98 */	b lbl_803142FC
lbl_80314268:
/* 80314268 0030FEC8  80 01 00 0C */	lwz r0, 0xc(r1)
/* 8031426C 0030FECC  28 00 00 20 */	cmplwi r0, 0x20
/* 80314270 0030FED0  41 82 00 0C */	beq lbl_8031427C
/* 80314274 0030FED4  38 60 00 11 */	li r3, 0x11
/* 80314278 0030FED8  48 00 00 84 */	b lbl_803142FC
lbl_8031427C:
/* 8031427C 0030FEDC  A0 7D 02 3C */	lhz r3, 0x23c(r29)
/* 80314280 0030FEE0  38 03 00 20 */	addi r0, r3, 0x20
/* 80314284 0030FEE4  B0 1D 02 3C */	sth r0, 0x23c(r29)
/* 80314288 0030FEE8  54 03 04 3E */	clrlwi r3, r0, 0x10
/* 8031428C 0030FEEC  A0 1C 00 00 */	lhz r0, 0(r28)
/* 80314290 0030FEF0  7C 03 00 40 */	cmplw r3, r0
/* 80314294 0030FEF4  41 80 00 10 */	blt lbl_803142A4
/* 80314298 0030FEF8  B3 DD 02 3C */	sth r30, 0x23c(r29)
/* 8031429C 0030FEFC  83 1B 00 00 */	lwz r24, 0(r27)
/* 803142A0 0030FF00  3B 7B 00 04 */	addi r27, r27, 4
lbl_803142A4:
/* 803142A4 0030FF04  3B 39 FF FF */	addi r25, r25, -1
lbl_803142A8:
/* 803142A8 0030FF08  28 19 00 01 */	cmplwi r25, 1
/* 803142AC 0030FF0C  40 80 FF 70 */	bge lbl_8031421C
/* 803142B0 0030FF10  93 1D 02 38 */	stw r24, 0x238(r29)
/* 803142B4 0030FF14  48 00 00 28 */	b lbl_803142DC
lbl_803142B8:
/* 803142B8 0030FF18  7F A3 EB 78 */	mr r3, r29
/* 803142BC 0030FF1C  7F C7 F3 78 */	mr r7, r30
/* 803142C0 0030FF20  38 A1 00 48 */	addi r5, r1, 0x48
/* 803142C4 0030FF24  38 C1 00 10 */	addi r6, r1, 0x10
/* 803142C8 0030FF28  38 80 00 01 */	li r4, 1
/* 803142CC 0030FF2C  4B FF 84 15 */	bl VFiPFENT_allocateEntry
/* 803142D0 0030FF30  2C 03 00 00 */	cmpwi r3, 0
/* 803142D4 0030FF34  41 82 00 08 */	beq lbl_803142DC
/* 803142D8 0030FF38  48 00 00 24 */	b lbl_803142FC
lbl_803142DC:
/* 803142DC 0030FF3C  80 1D 02 34 */	lwz r0, 0x234(r29)
/* 803142E0 0030FF40  28 00 00 01 */	cmplwi r0, 1
/* 803142E4 0030FF44  40 82 00 0C */	bne lbl_803142F0
/* 803142E8 0030FF48  38 00 00 00 */	li r0, 0
/* 803142EC 0030FF4C  90 1D 02 34 */	stw r0, 0x234(r29)
lbl_803142F0:
/* 803142F0 0030FF50  7F A3 EB 78 */	mr r3, r29
/* 803142F4 0030FF54  38 80 00 01 */	li r4, 1
/* 803142F8 0030FF58  4B FF 85 F9 */	bl VFiPFENT_updateEntry
lbl_803142FC:
/* 803142FC 0030FF5C  39 61 02 E0 */	addi r11, r1, 0x2e0
/* 80314300 0030FF60  4B EB 2E 69 */	bl _restgpr_24
/* 80314304 0030FF64  80 01 02 E4 */	lwz r0, 0x2e4(r1)
/* 80314308 0030FF68  7C 08 03 A6 */	mtlr r0
/* 8031430C 0030FF6C  38 21 02 E0 */	addi r1, r1, 0x2e0
/* 80314310 0030FF70  4E 80 00 20 */	blr

.global VFiPFFILE_p_fopen
VFiPFFILE_p_fopen:
/* 80314314 0030FF74  94 21 FA C0 */	stwu r1, -0x540(r1)
/* 80314318 0030FF78  7C 08 02 A6 */	mflr r0
/* 8031431C 0030FF7C  38 E0 00 01 */	li r7, 1
/* 80314320 0030FF80  90 01 05 44 */	stw r0, 0x544(r1)
/* 80314324 0030FF84  38 00 00 00 */	li r0, 0
/* 80314328 0030FF88  93 E1 05 3C */	stw r31, 0x53c(r1)
/* 8031432C 0030FF8C  7C 9F 23 78 */	mr r31, r4
/* 80314330 0030FF90  38 81 02 E8 */	addi r4, r1, 0x2e8
/* 80314334 0030FF94  93 C1 05 38 */	stw r30, 0x538(r1)
/* 80314338 0030FF98  7C DE 33 78 */	mr r30, r6
/* 8031433C 0030FF9C  93 A1 05 34 */	stw r29, 0x534(r1)
/* 80314340 0030FFA0  7C BD 2B 78 */	mr r29, r5
/* 80314344 0030FFA4  93 81 05 30 */	stw r28, 0x530(r1)
/* 80314348 0030FFA8  7C 7C 1B 78 */	mr r28, r3
/* 8031434C 0030FFAC  7F 85 E3 78 */	mr r5, r28
/* 80314350 0030FFB0  38 61 00 78 */	addi r3, r1, 0x78
/* 80314354 0030FFB4  90 06 00 00 */	stw r0, 0(r6)
/* 80314358 0030FFB8  7F E6 FB 78 */	mr r6, r31
/* 8031435C 0030FFBC  4B FF A1 D1 */	bl VFiPFENT_ITER_GetEntryOfPath
/* 80314360 0030FFC0  2C 03 00 00 */	cmpwi r3, 0
/* 80314364 0030FFC4  41 82 00 08 */	beq lbl_8031436C
/* 80314368 0030FFC8  48 00 04 7C */	b lbl_803147E4
lbl_8031436C:
/* 8031436C 0030FFCC  88 01 05 04 */	lbz r0, 0x504(r1)
/* 80314370 0030FFD0  54 00 06 F7 */	rlwinm. r0, r0, 0, 0x1b, 0x1b
/* 80314374 0030FFD4  40 82 00 0C */	bne lbl_80314380
/* 80314378 0030FFD8  38 60 00 01 */	li r3, 1
/* 8031437C 0030FFDC  48 00 04 68 */	b lbl_803147E4
lbl_80314380:
/* 80314380 0030FFE0  7F E3 FB 78 */	mr r3, r31
/* 80314384 0030FFE4  38 81 00 20 */	addi r4, r1, 0x20
/* 80314388 0030FFE8  38 A1 00 30 */	addi r5, r1, 0x30
/* 8031438C 0030FFEC  48 00 2B 01 */	bl VFiPFPATH_SplitPath
/* 80314390 0030FFF0  2C 03 00 00 */	cmpwi r3, 0
/* 80314394 0030FFF4  41 82 00 0C */	beq lbl_803143A0
/* 80314398 0030FFF8  38 60 00 01 */	li r3, 1
/* 8031439C 0030FFFC  48 00 04 48 */	b lbl_803147E4
lbl_803143A0:
/* 803143A0 00310000  38 61 00 30 */	addi r3, r1, 0x30
/* 803143A4 00310004  38 80 00 01 */	li r4, 1
/* 803143A8 00310008  4B FF 11 35 */	bl VFiPFSTR_StrNumChar
/* 803143AC 0031000C  54 7F 04 3E */	clrlwi r31, r3, 0x10
/* 803143B0 00310010  2C 1F 00 FF */	cmpwi r31, 0xff
/* 803143B4 00310014  40 81 00 0C */	ble lbl_803143C0
/* 803143B8 00310018  38 60 00 01 */	li r3, 1
/* 803143BC 0031001C  48 00 04 28 */	b lbl_803147E4
lbl_803143C0:
/* 803143C0 00310020  38 61 00 30 */	addi r3, r1, 0x30
/* 803143C4 00310024  4B FF 0F 1D */	bl VFiPFSTR_GetCodeMode
/* 803143C8 00310028  28 03 00 02 */	cmplwi r3, 2
/* 803143CC 0031002C  40 82 00 1C */	bne lbl_803143E8
/* 803143D0 00310030  38 61 00 30 */	addi r3, r1, 0x30
/* 803143D4 00310034  38 80 00 01 */	li r4, 1
/* 803143D8 00310038  4B FF 0F 39 */	bl VFiPFSTR_GetStrPos
/* 803143DC 0031003C  7C 64 1B 78 */	mr r4, r3
/* 803143E0 00310040  38 61 00 E8 */	addi r3, r1, 0xe8
/* 803143E4 00310044  48 00 34 FD */	bl VFiPFPATH_transformFromUnicodeToNormal
lbl_803143E8:
/* 803143E8 00310048  38 61 00 30 */	addi r3, r1, 0x30
/* 803143EC 0031004C  38 81 00 E8 */	addi r4, r1, 0xe8
/* 803143F0 00310050  4B FF 0E F9 */	bl VFiPFSTR_SetLocalStr
/* 803143F4 00310054  57 A0 07 BD */	rlwinm. r0, r29, 0, 0x1e, 0x1e
/* 803143F8 00310058  41 82 00 84 */	beq lbl_8031447C
/* 803143FC 0031005C  80 A1 05 14 */	lwz r5, 0x514(r1)
/* 80314400 00310060  38 61 00 40 */	addi r3, r1, 0x40
/* 80314404 00310064  38 81 00 10 */	addi r4, r1, 0x10
/* 80314408 00310068  38 C1 05 1C */	addi r6, r1, 0x51c
/* 8031440C 0031006C  4B FF CC BD */	bl VFiPFFAT_InitFFD
/* 80314410 00310070  38 61 00 40 */	addi r3, r1, 0x40
/* 80314414 00310074  38 81 02 E8 */	addi r4, r1, 0x2e8
/* 80314418 00310078  38 C1 00 30 */	addi r6, r1, 0x30
/* 8031441C 0031007C  38 A0 00 00 */	li r5, 0
/* 80314420 00310080  38 E0 00 7F */	li r7, 0x7f
/* 80314424 00310084  39 00 00 00 */	li r8, 0
/* 80314428 00310088  4B FF 7F 75 */	bl VFiPFENT_findEntry
/* 8031442C 0031008C  2C 03 00 00 */	cmpwi r3, 0
/* 80314430 00310090  41 82 00 0C */	beq lbl_8031443C
/* 80314434 00310094  38 60 00 03 */	li r3, 3
/* 80314438 00310098  48 00 03 AC */	b lbl_803147E4
lbl_8031443C:
/* 8031443C 0031009C  57 A0 07 39 */	rlwinm. r0, r29, 0, 0x1c, 0x1c
/* 80314440 003100A0  41 82 00 18 */	beq lbl_80314458
/* 80314444 003100A4  88 01 05 04 */	lbz r0, 0x504(r1)
/* 80314448 003100A8  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8031444C 003100AC  41 82 00 0C */	beq lbl_80314458
/* 80314450 003100B0  38 60 00 0A */	li r3, 0xa
/* 80314454 003100B4  48 00 03 90 */	b lbl_803147E4
lbl_80314458:
/* 80314458 003100B8  88 01 05 04 */	lbz r0, 0x504(r1)
/* 8031445C 003100BC  54 00 06 F7 */	rlwinm. r0, r0, 0, 0x1b, 0x1b
/* 80314460 003100C0  41 82 00 0C */	beq lbl_8031446C
/* 80314464 003100C4  38 60 00 17 */	li r3, 0x17
/* 80314468 003100C8  48 00 03 7C */	b lbl_803147E4
lbl_8031446C:
/* 8031446C 003100CC  38 61 05 0A */	addi r3, r1, 0x50a
/* 80314470 003100D0  38 81 00 08 */	addi r4, r1, 8
/* 80314474 003100D4  4B FF 87 05 */	bl VFiPFENT_getcurrentDateTimeForEnt
/* 80314478 003100D8  48 00 01 44 */	b lbl_803145BC
lbl_8031447C:
/* 8031447C 003100DC  80 01 05 18 */	lwz r0, 0x518(r1)
/* 80314480 003100E0  7C 1F 02 14 */	add r0, r31, r0
/* 80314484 003100E4  28 00 01 03 */	cmplwi r0, 0x103
/* 80314488 003100E8  40 81 00 0C */	ble lbl_80314494
/* 8031448C 003100EC  38 60 00 01 */	li r3, 1
/* 80314490 003100F0  48 00 03 54 */	b lbl_803147E4
lbl_80314494:
/* 80314494 003100F4  7F 83 E3 78 */	mr r3, r28
/* 80314498 003100F8  7F E6 FB 78 */	mr r6, r31
/* 8031449C 003100FC  38 81 02 E8 */	addi r4, r1, 0x2e8
/* 803144A0 00310100  38 A1 00 30 */	addi r5, r1, 0x30
/* 803144A4 00310104  4B FF FB 5D */	bl VFiPFFILE_createEmptyFile
/* 803144A8 00310108  2C 03 00 08 */	cmpwi r3, 8
/* 803144AC 0031010C  40 82 01 04 */	bne lbl_803145B0
/* 803144B0 00310110  57 A0 06 F7 */	rlwinm. r0, r29, 0, 0x1b, 0x1b
/* 803144B4 00310114  41 82 00 0C */	beq lbl_803144C0
/* 803144B8 00310118  38 60 00 08 */	li r3, 8
/* 803144BC 0031011C  48 00 03 28 */	b lbl_803147E4
lbl_803144C0:
/* 803144C0 00310120  57 BF 07 FF */	clrlwi. r31, r29, 0x1f
/* 803144C4 00310124  41 82 00 44 */	beq lbl_80314508
/* 803144C8 00310128  38 00 00 00 */	li r0, 0
/* 803144CC 0031012C  34 61 02 E8 */	addic. r3, r1, 0x2e8
/* 803144D0 00310130  90 01 00 0C */	stw r0, 0xc(r1)
/* 803144D4 00310134  40 82 00 0C */	bne lbl_803144E0
/* 803144D8 00310138  38 00 00 00 */	li r0, 0
/* 803144DC 0031013C  48 00 00 1C */	b lbl_803144F8
lbl_803144E0:
/* 803144E0 00310140  38 81 00 0C */	addi r4, r1, 0xc
/* 803144E4 00310144  48 00 07 61 */	bl VFiPFFILE_GetOpenedFile
/* 803144E8 00310148  80 61 00 0C */	lwz r3, 0xc(r1)
/* 803144EC 0031014C  7C 03 00 D0 */	neg r0, r3
/* 803144F0 00310150  7C 00 1B 78 */	or r0, r0, r3
/* 803144F4 00310154  54 00 0F FE */	srwi r0, r0, 0x1f
lbl_803144F8:
/* 803144F8 00310158  2C 00 00 00 */	cmpwi r0, 0
/* 803144FC 0031015C  41 82 00 0C */	beq lbl_80314508
/* 80314500 00310160  38 60 00 08 */	li r3, 8
/* 80314504 00310164  48 00 02 E0 */	b lbl_803147E4
lbl_80314508:
/* 80314508 00310168  88 61 05 04 */	lbz r3, 0x504(r1)
/* 8031450C 0031016C  54 60 07 FF */	clrlwi. r0, r3, 0x1f
/* 80314510 00310170  41 82 00 24 */	beq lbl_80314534
/* 80314514 00310174  2C 1F 00 00 */	cmpwi r31, 0
/* 80314518 00310178  40 82 00 14 */	bne lbl_8031452C
/* 8031451C 0031017C  57 A0 07 7B */	rlwinm. r0, r29, 0, 0x1d, 0x1d
/* 80314520 00310180  40 82 00 0C */	bne lbl_8031452C
/* 80314524 00310184  57 A0 07 39 */	rlwinm. r0, r29, 0, 0x1c, 0x1c
/* 80314528 00310188  41 82 00 0C */	beq lbl_80314534
lbl_8031452C:
/* 8031452C 0031018C  38 60 00 0A */	li r3, 0xa
/* 80314530 00310190  48 00 02 B4 */	b lbl_803147E4
lbl_80314534:
/* 80314534 00310194  54 60 06 F7 */	rlwinm. r0, r3, 0, 0x1b, 0x1b
/* 80314538 00310198  41 82 00 0C */	beq lbl_80314544
/* 8031453C 0031019C  38 60 00 17 */	li r3, 0x17
/* 80314540 003101A0  48 00 02 A4 */	b lbl_803147E4
lbl_80314544:
/* 80314544 003101A4  2C 1F 00 00 */	cmpwi r31, 0
/* 80314548 003101A8  41 82 00 58 */	beq lbl_803145A0
/* 8031454C 003101AC  80 81 05 1C */	lwz r4, 0x51c(r1)
/* 80314550 003101B0  28 04 00 02 */	cmplwi r4, 2
/* 80314554 003101B4  41 80 00 28 */	blt lbl_8031457C
/* 80314558 003101B8  3C 04 00 01 */	addis r0, r4, 1
/* 8031455C 003101BC  28 00 FF FF */	cmplwi r0, 0xffff
/* 80314560 003101C0  41 82 00 1C */	beq lbl_8031457C
/* 80314564 003101C4  80 C1 05 10 */	lwz r6, 0x510(r1)
/* 80314568 003101C8  2C 06 00 00 */	cmpwi r6, 0
/* 8031456C 003101CC  41 82 00 10 */	beq lbl_8031457C
/* 80314570 003101D0  38 61 00 80 */	addi r3, r1, 0x80
/* 80314574 003101D4  38 A0 FF FF */	li r5, -1
/* 80314578 003101D8  4B FF BE B1 */	bl VFiPFFAT_FreeChain
lbl_8031457C:
/* 8031457C 003101DC  38 00 00 00 */	li r0, 0
/* 80314580 003101E0  38 61 05 0E */	addi r3, r1, 0x50e
/* 80314584 003101E4  90 01 05 1C */	stw r0, 0x51c(r1)
/* 80314588 003101E8  38 81 05 0C */	addi r4, r1, 0x50c
/* 8031458C 003101EC  90 01 05 10 */	stw r0, 0x510(r1)
/* 80314590 003101F0  4B FF 85 E9 */	bl VFiPFENT_getcurrentDateTimeForEnt
/* 80314594 003101F4  A0 01 05 0E */	lhz r0, 0x50e(r1)
/* 80314598 003101F8  B0 01 05 0A */	sth r0, 0x50a(r1)
/* 8031459C 003101FC  48 00 00 20 */	b lbl_803145BC
lbl_803145A0:
/* 803145A0 00310200  38 61 05 0A */	addi r3, r1, 0x50a
/* 803145A4 00310204  38 81 00 08 */	addi r4, r1, 8
/* 803145A8 00310208  4B FF 85 D1 */	bl VFiPFENT_getcurrentDateTimeForEnt
/* 803145AC 0031020C  48 00 00 10 */	b lbl_803145BC
lbl_803145B0:
/* 803145B0 00310210  2C 03 00 00 */	cmpwi r3, 0
/* 803145B4 00310214  41 82 00 08 */	beq lbl_803145BC
/* 803145B8 00310218  48 00 02 2C */	b lbl_803147E4
lbl_803145BC:
/* 803145BC 0031021C  83 81 05 14 */	lwz r28, 0x514(r1)
/* 803145C0 00310220  38 81 02 E8 */	addi r4, r1, 0x2e8
/* 803145C4 00310224  7F 83 E3 78 */	mr r3, r28
/* 803145C8 00310228  4B FF F8 69 */	bl VFiPFFILE_GetSFD
/* 803145CC 0031022C  2C 03 00 00 */	cmpwi r3, 0
/* 803145D0 00310230  40 82 00 0C */	bne lbl_803145DC
/* 803145D4 00310234  38 60 00 15 */	li r3, 0x15
/* 803145D8 00310238  48 00 02 0C */	b lbl_803147E4
lbl_803145DC:
/* 803145DC 0031023C  38 00 00 05 */	li r0, 5
/* 803145E0 00310240  7F 85 E3 78 */	mr r5, r28
/* 803145E4 00310244  38 80 00 00 */	li r4, 0
/* 803145E8 00310248  7C 09 03 A6 */	mtctr r0
lbl_803145EC:
/* 803145EC 0031024C  80 05 0D 10 */	lwz r0, 0xd10(r5)
/* 803145F0 00310250  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 803145F4 00310254  40 82 00 14 */	bne lbl_80314608
/* 803145F8 00310258  1C 04 00 30 */	mulli r0, r4, 0x30
/* 803145FC 0031025C  7C 9C 02 14 */	add r4, r28, r0
/* 80314600 00310260  3B E4 0D 10 */	addi r31, r4, 0xd10
/* 80314604 00310264  48 00 00 14 */	b lbl_80314618
lbl_80314608:
/* 80314608 00310268  38 A5 00 30 */	addi r5, r5, 0x30
/* 8031460C 0031026C  38 84 00 01 */	addi r4, r4, 1
/* 80314610 00310270  42 00 FF DC */	bdnz lbl_803145EC
/* 80314614 00310274  3B E0 00 00 */	li r31, 0
lbl_80314618:
/* 80314618 00310278  2C 1F 00 00 */	cmpwi r31, 0
/* 8031461C 0031027C  40 82 00 34 */	bne lbl_80314650
/* 80314620 00310280  A0 83 02 8C */	lhz r4, 0x28c(r3)
/* 80314624 00310284  38 84 FF FF */	addi r4, r4, -1
/* 80314628 00310288  54 80 04 3F */	clrlwi. r0, r4, 0x10
/* 8031462C 0031028C  B0 83 02 8C */	sth r4, 0x28c(r3)
/* 80314630 00310290  40 82 00 18 */	bne lbl_80314648
/* 80314634 00310294  80 83 00 00 */	lwz r4, 0(r3)
/* 80314638 00310298  38 00 00 00 */	li r0, 0
/* 8031463C 0031029C  54 84 00 3C */	rlwinm r4, r4, 0, 0, 0x1e
/* 80314640 003102A0  90 83 00 00 */	stw r4, 0(r3)
/* 80314644 003102A4  90 03 00 20 */	stw r0, 0x20(r3)
lbl_80314648:
/* 80314648 003102A8  38 60 00 16 */	li r3, 0x16
/* 8031464C 003102AC  48 00 01 98 */	b lbl_803147E4
lbl_80314650:
/* 80314650 003102B0  90 7F 00 08 */	stw r3, 8(r31)
/* 80314654 003102B4  38 80 00 01 */	li r4, 1
/* 80314658 003102B8  38 00 00 00 */	li r0, 0
/* 8031465C 003102BC  38 7F 00 0C */	addi r3, r31, 0xc
/* 80314660 003102C0  90 9F 00 00 */	stw r4, 0(r31)
/* 80314664 003102C4  93 BF 00 04 */	stw r29, 4(r31)
/* 80314668 003102C8  90 1F 00 18 */	stw r0, 0x18(r31)
/* 8031466C 003102CC  B0 1F 00 2C */	sth r0, 0x2c(r31)
/* 80314670 003102D0  4B FF C7 29 */	bl VFiPFFAT_InitHint
/* 80314674 003102D4  38 00 FF FF */	li r0, -1
/* 80314678 003102D8  2C 1F 00 00 */	cmpwi r31, 0
/* 8031467C 003102DC  90 1F 00 20 */	stw r0, 0x20(r31)
/* 80314680 003102E0  40 82 00 0C */	bne lbl_8031468C
/* 80314684 003102E4  38 80 00 00 */	li r4, 0
/* 80314688 003102E8  48 00 00 0C */	b lbl_80314694
lbl_8031468C:
/* 8031468C 003102EC  80 7F 00 08 */	lwz r3, 8(r31)
/* 80314690 003102F0  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_80314694:
/* 80314694 003102F4  A0 64 00 00 */	lhz r3, 0(r4)
/* 80314698 003102F8  80 BF 00 1C */	lwz r5, 0x1c(r31)
/* 8031469C 003102FC  38 03 FF FF */	addi r0, r3, -1
/* 803146A0 00310300  88 84 00 20 */	lbz r4, 0x20(r4)
/* 803146A4 00310304  7C A3 00 38 */	and r3, r5, r0
/* 803146A8 00310308  7C 03 00 D0 */	neg r0, r3
/* 803146AC 0031030C  7C A4 24 30 */	srw r4, r5, r4
/* 803146B0 00310310  7C 00 1B 78 */	or r0, r0, r3
/* 803146B4 00310314  54 00 0F FE */	srwi r0, r0, 0x1f
/* 803146B8 00310318  7C 04 02 15 */	add. r0, r4, r0
/* 803146BC 0031031C  41 82 00 0C */	beq lbl_803146C8
/* 803146C0 00310320  38 00 FF FF */	li r0, -1
/* 803146C4 00310324  90 1F 00 20 */	stw r0, 0x20(r31)
lbl_803146C8:
/* 803146C8 00310328  38 00 00 00 */	li r0, 0
/* 803146CC 0031032C  2C 1F 00 00 */	cmpwi r31, 0
/* 803146D0 00310330  90 1F 00 1C */	stw r0, 0x1c(r31)
/* 803146D4 00310334  40 82 00 0C */	bne lbl_803146E0
/* 803146D8 00310338  38 80 00 00 */	li r4, 0
/* 803146DC 0031033C  48 00 00 0C */	b lbl_803146E8
lbl_803146E0:
/* 803146E0 00310340  80 7F 00 08 */	lwz r3, 8(r31)
/* 803146E4 00310344  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_803146E8:
/* 803146E8 00310348  57 A0 07 FF */	clrlwi. r0, r29, 0x1f
/* 803146EC 0031034C  80 7F 00 1C */	lwz r3, 0x1c(r31)
/* 803146F0 00310350  88 04 00 20 */	lbz r0, 0x20(r4)
/* 803146F4 00310354  7C 60 04 30 */	srw r0, r3, r0
/* 803146F8 00310358  90 1F 00 24 */	stw r0, 0x24(r31)
/* 803146FC 0031035C  A0 64 00 00 */	lhz r3, 0(r4)
/* 80314700 00310360  80 9F 00 1C */	lwz r4, 0x1c(r31)
/* 80314704 00310364  38 03 FF FF */	addi r0, r3, -1
/* 80314708 00310368  7C 80 00 38 */	and r0, r4, r0
/* 8031470C 0031036C  B0 1F 00 28 */	sth r0, 0x28(r31)
/* 80314710 00310370  41 82 00 14 */	beq lbl_80314724
/* 80314714 00310374  80 7F 00 08 */	lwz r3, 8(r31)
/* 80314718 00310378  80 03 00 00 */	lwz r0, 0(r3)
/* 8031471C 0031037C  60 00 00 04 */	ori r0, r0, 4
/* 80314720 00310380  90 03 00 00 */	stw r0, 0(r3)
lbl_80314724:
/* 80314724 00310384  80 1F 00 04 */	lwz r0, 4(r31)
/* 80314728 00310388  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 8031472C 0031038C  41 82 00 B0 */	beq lbl_803147DC
/* 80314730 00310390  80 7F 00 08 */	lwz r3, 8(r31)
/* 80314734 00310394  2C 1F 00 00 */	cmpwi r31, 0
/* 80314738 00310398  81 03 02 64 */	lwz r8, 0x264(r3)
/* 8031473C 0031039C  40 82 00 0C */	bne lbl_80314748
/* 80314740 003103A0  38 80 00 00 */	li r4, 0
/* 80314744 003103A4  48 00 00 08 */	b lbl_8031474C
lbl_80314748:
/* 80314748 003103A8  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_8031474C:
/* 8031474C 003103AC  A0 64 00 00 */	lhz r3, 0(r4)
/* 80314750 003103B0  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80314754 003103B4  38 63 FF FF */	addi r3, r3, -1
/* 80314758 003103B8  88 84 00 20 */	lbz r4, 0x20(r4)
/* 8031475C 003103BC  7C 07 18 38 */	and r7, r0, r3
/* 80314760 003103C0  7C 05 24 30 */	srw r5, r0, r4
/* 80314764 003103C4  7D 03 18 38 */	and r3, r8, r3
/* 80314768 003103C8  7C C7 00 D0 */	neg r6, r7
/* 8031476C 003103CC  7D 04 24 30 */	srw r4, r8, r4
/* 80314770 003103D0  7C 03 00 D0 */	neg r0, r3
/* 80314774 003103D4  7C 00 1B 78 */	or r0, r0, r3
/* 80314778 003103D8  7C C6 3B 78 */	or r6, r6, r7
/* 8031477C 003103DC  54 C3 0F FE */	srwi r3, r6, 0x1f
/* 80314780 003103E0  54 00 0F FE */	srwi r0, r0, 0x1f
/* 80314784 003103E4  7C 65 1A 14 */	add r3, r5, r3
/* 80314788 003103E8  7C 04 02 14 */	add r0, r4, r0
/* 8031478C 003103EC  7C 03 00 40 */	cmplw r3, r0
/* 80314790 003103F0  41 82 00 0C */	beq lbl_8031479C
/* 80314794 003103F4  38 00 FF FF */	li r0, -1
/* 80314798 003103F8  90 1F 00 20 */	stw r0, 0x20(r31)
lbl_8031479C:
/* 8031479C 003103FC  2C 1F 00 00 */	cmpwi r31, 0
/* 803147A0 00310400  91 1F 00 1C */	stw r8, 0x1c(r31)
/* 803147A4 00310404  40 82 00 0C */	bne lbl_803147B0
/* 803147A8 00310408  38 80 00 00 */	li r4, 0
/* 803147AC 0031040C  48 00 00 0C */	b lbl_803147B8
lbl_803147B0:
/* 803147B0 00310410  80 7F 00 08 */	lwz r3, 8(r31)
/* 803147B4 00310414  80 83 02 68 */	lwz r4, 0x268(r3)
lbl_803147B8:
/* 803147B8 00310418  80 7F 00 1C */	lwz r3, 0x1c(r31)
/* 803147BC 0031041C  88 04 00 20 */	lbz r0, 0x20(r4)
/* 803147C0 00310420  7C 60 04 30 */	srw r0, r3, r0
/* 803147C4 00310424  90 1F 00 24 */	stw r0, 0x24(r31)
/* 803147C8 00310428  A0 64 00 00 */	lhz r3, 0(r4)
/* 803147CC 0031042C  80 9F 00 1C */	lwz r4, 0x1c(r31)
/* 803147D0 00310430  38 03 FF FF */	addi r0, r3, -1
/* 803147D4 00310434  7C 80 00 38 */	and r0, r4, r0
/* 803147D8 00310438  B0 1F 00 28 */	sth r0, 0x28(r31)
lbl_803147DC:
/* 803147DC 0031043C  93 FE 00 00 */	stw r31, 0(r30)
/* 803147E0 00310440  38 60 00 00 */	li r3, 0
lbl_803147E4:
/* 803147E4 00310444  80 01 05 44 */	lwz r0, 0x544(r1)
/* 803147E8 00310448  83 E1 05 3C */	lwz r31, 0x53c(r1)
/* 803147EC 0031044C  83 C1 05 38 */	lwz r30, 0x538(r1)
/* 803147F0 00310450  83 A1 05 34 */	lwz r29, 0x534(r1)
/* 803147F4 00310454  83 81 05 30 */	lwz r28, 0x530(r1)
/* 803147F8 00310458  7C 08 03 A6 */	mtlr r0
/* 803147FC 0031045C  38 21 05 40 */	addi r1, r1, 0x540
/* 80314800 00310460  4E 80 00 20 */	blr

.global VFiPFFILE_p_fread
VFiPFFILE_p_fread:
/* 80314804 00310464  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80314808 00310468  7C 08 02 A6 */	mflr r0
/* 8031480C 0031046C  90 01 00 24 */	stw r0, 0x24(r1)
/* 80314810 00310470  38 00 00 00 */	li r0, 0
/* 80314814 00310474  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80314818 00310478  7D 1F 43 78 */	mr r31, r8
/* 8031481C 0031047C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80314820 00310480  7C BE 2B 78 */	mr r30, r5
/* 80314824 00310484  90 01 00 08 */	stw r0, 8(r1)
/* 80314828 00310488  90 08 00 00 */	stw r0, 0(r8)
/* 8031482C 0031048C  80 67 00 04 */	lwz r3, 4(r7)
/* 80314830 00310490  54 60 07 39 */	rlwinm. r0, r3, 0, 0x1c, 0x1c
/* 80314834 00310494  40 82 00 1C */	bne lbl_80314850
/* 80314838 00310498  54 60 07 FF */	clrlwi. r0, r3, 0x1f
/* 8031483C 0031049C  40 82 00 0C */	bne lbl_80314848
/* 80314840 003104A0  54 60 07 7B */	rlwinm. r0, r3, 0, 0x1d, 0x1d
/* 80314844 003104A4  41 82 00 0C */	beq lbl_80314850
lbl_80314848:
/* 80314848 003104A8  38 60 00 0A */	li r3, 0xa
/* 8031484C 003104AC  48 00 00 6C */	b lbl_803148B8
lbl_80314850:
/* 80314850 003104B0  81 07 00 08 */	lwz r8, 8(r7)
/* 80314854 003104B4  A0 08 02 7C */	lhz r0, 0x27c(r8)
/* 80314858 003104B8  54 00 07 BF */	clrlwi. r0, r0, 0x1e
/* 8031485C 003104BC  41 82 00 18 */	beq lbl_80314874
/* 80314860 003104C0  A0 07 00 2C */	lhz r0, 0x2c(r7)
/* 80314864 003104C4  2C 00 00 00 */	cmpwi r0, 0
/* 80314868 003104C8  40 82 00 0C */	bne lbl_80314874
/* 8031486C 003104CC  38 60 00 19 */	li r3, 0x19
/* 80314870 003104D0  48 00 00 48 */	b lbl_803148B8
lbl_80314874:
/* 80314874 003104D4  80 67 00 1C */	lwz r3, 0x1c(r7)
/* 80314878 003104D8  80 08 02 64 */	lwz r0, 0x264(r8)
/* 8031487C 003104DC  7C 03 00 40 */	cmplw r3, r0
/* 80314880 003104E0  41 80 00 0C */	blt lbl_8031488C
/* 80314884 003104E4  38 60 00 1C */	li r3, 0x1c
/* 80314888 003104E8  48 00 00 30 */	b lbl_803148B8
lbl_8031488C:
/* 8031488C 003104EC  7C A5 31 D6 */	mullw r5, r5, r6
/* 80314890 003104F0  7C E3 3B 78 */	mr r3, r7
/* 80314894 003104F4  38 C1 00 08 */	addi r6, r1, 8
/* 80314898 003104F8  4B FF E7 85 */	bl VFiPFFILE_Cursor_Read
/* 8031489C 003104FC  80 81 00 08 */	lwz r4, 8(r1)
/* 803148A0 00310500  7C 03 00 D0 */	neg r0, r3
/* 803148A4 00310504  7C 00 1B 78 */	or r0, r0, r3
/* 803148A8 00310508  7C 84 F3 96 */	divwu r4, r4, r30
/* 803148AC 0031050C  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 803148B0 00310510  7C 63 00 38 */	and r3, r3, r0
/* 803148B4 00310514  90 9F 00 00 */	stw r4, 0(r31)
lbl_803148B8:
/* 803148B8 00310518  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803148BC 0031051C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 803148C0 00310520  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 803148C4 00310524  7C 08 03 A6 */	mtlr r0
/* 803148C8 00310528  38 21 00 20 */	addi r1, r1, 0x20
/* 803148CC 0031052C  4E 80 00 20 */	blr

.global VFiPFFILE_p_fwrite
VFiPFFILE_p_fwrite:
/* 803148D0 00310530  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 803148D4 00310534  7C 08 02 A6 */	mflr r0
/* 803148D8 00310538  90 01 00 34 */	stw r0, 0x34(r1)
/* 803148DC 0031053C  39 61 00 30 */	addi r11, r1, 0x30
/* 803148E0 00310540  4B EB 28 41 */	bl _savegpr_25
/* 803148E4 00310544  38 00 00 00 */	li r0, 0
/* 803148E8 00310548  7C 9B 23 78 */	mr r27, r4
/* 803148EC 0031054C  90 01 00 08 */	stw r0, 8(r1)
/* 803148F0 00310550  7C 7A 1B 78 */	mr r26, r3
/* 803148F4 00310554  7C BC 2B 78 */	mr r28, r5
/* 803148F8 00310558  7C DD 33 78 */	mr r29, r6
/* 803148FC 0031055C  90 08 00 00 */	stw r0, 0(r8)
/* 80314900 00310560  7C FE 3B 78 */	mr r30, r7
/* 80314904 00310564  7D 1F 43 78 */	mr r31, r8
/* 80314908 00310568  80 87 00 04 */	lwz r4, 4(r7)
/* 8031490C 0031056C  54 80 07 39 */	rlwinm. r0, r4, 0, 0x1c, 0x1c
/* 80314910 00310570  40 82 00 14 */	bne lbl_80314924
/* 80314914 00310574  54 80 07 BD */	rlwinm. r0, r4, 0, 0x1e, 0x1e
/* 80314918 00310578  41 82 00 0C */	beq lbl_80314924
/* 8031491C 0031057C  38 60 00 0A */	li r3, 0xa
/* 80314920 00310580  48 00 01 EC */	b lbl_80314B0C
lbl_80314924:
/* 80314924 00310584  80 A7 00 08 */	lwz r5, 8(r7)
/* 80314928 00310588  A0 C5 02 7C */	lhz r6, 0x27c(r5)
/* 8031492C 0031058C  54 C0 07 BF */	clrlwi. r0, r6, 0x1e
/* 80314930 00310590  41 82 00 28 */	beq lbl_80314958
/* 80314934 00310594  54 C0 07 FF */	clrlwi. r0, r6, 0x1f
/* 80314938 00310598  40 82 00 18 */	bne lbl_80314950
/* 8031493C 0031059C  54 C0 07 BD */	rlwinm. r0, r6, 0, 0x1e, 0x1e
/* 80314940 003105A0  41 82 00 18 */	beq lbl_80314958
/* 80314944 003105A4  A0 07 00 2C */	lhz r0, 0x2c(r7)
/* 80314948 003105A8  2C 00 00 00 */	cmpwi r0, 0
/* 8031494C 003105AC  40 82 00 0C */	bne lbl_80314958
lbl_80314950:
/* 80314950 003105B0  38 60 00 19 */	li r3, 0x19
/* 80314954 003105B4  48 00 01 B8 */	b lbl_80314B0C
lbl_80314958:
/* 80314958 003105B8  54 80 07 7B */	rlwinm. r0, r4, 0, 0x1d, 0x1d
/* 8031495C 003105BC  41 82 00 A8 */	beq lbl_80314A04
/* 80314960 003105C0  2C 07 00 00 */	cmpwi r7, 0
/* 80314964 003105C4  81 45 02 64 */	lwz r10, 0x264(r5)
/* 80314968 003105C8  40 82 00 0C */	bne lbl_80314974
/* 8031496C 003105CC  38 A0 00 00 */	li r5, 0
/* 80314970 003105D0  48 00 00 08 */	b lbl_80314978
lbl_80314974:
/* 80314974 003105D4  80 A5 02 68 */	lwz r5, 0x268(r5)
lbl_80314978:
/* 80314978 003105D8  A0 85 00 00 */	lhz r4, 0(r5)
/* 8031497C 003105DC  80 07 00 1C */	lwz r0, 0x1c(r7)
/* 80314980 003105E0  38 84 FF FF */	addi r4, r4, -1
/* 80314984 003105E4  88 A5 00 20 */	lbz r5, 0x20(r5)
/* 80314988 003105E8  7C 09 20 38 */	and r9, r0, r4
/* 8031498C 003105EC  7C 06 2C 30 */	srw r6, r0, r5
/* 80314990 003105F0  7D 44 20 38 */	and r4, r10, r4
/* 80314994 003105F4  7D 09 00 D0 */	neg r8, r9
/* 80314998 003105F8  7D 45 2C 30 */	srw r5, r10, r5
/* 8031499C 003105FC  7C 04 00 D0 */	neg r0, r4
/* 803149A0 00310600  7C 00 23 78 */	or r0, r0, r4
/* 803149A4 00310604  7D 08 4B 78 */	or r8, r8, r9
/* 803149A8 00310608  55 04 0F FE */	srwi r4, r8, 0x1f
/* 803149AC 0031060C  54 00 0F FE */	srwi r0, r0, 0x1f
/* 803149B0 00310610  7C 86 22 14 */	add r4, r6, r4
/* 803149B4 00310614  7C 05 02 14 */	add r0, r5, r0
/* 803149B8 00310618  7C 04 00 40 */	cmplw r4, r0
/* 803149BC 0031061C  41 82 00 0C */	beq lbl_803149C8
/* 803149C0 00310620  38 00 FF FF */	li r0, -1
/* 803149C4 00310624  90 07 00 20 */	stw r0, 0x20(r7)
lbl_803149C8:
/* 803149C8 00310628  2C 07 00 00 */	cmpwi r7, 0
/* 803149CC 0031062C  91 47 00 1C */	stw r10, 0x1c(r7)
/* 803149D0 00310630  40 82 00 0C */	bne lbl_803149DC
/* 803149D4 00310634  38 80 00 00 */	li r4, 0
/* 803149D8 00310638  48 00 00 0C */	b lbl_803149E4
lbl_803149DC:
/* 803149DC 0031063C  80 87 00 08 */	lwz r4, 8(r7)
/* 803149E0 00310640  80 84 02 68 */	lwz r4, 0x268(r4)
lbl_803149E4:
/* 803149E4 00310644  80 A7 00 1C */	lwz r5, 0x1c(r7)
/* 803149E8 00310648  88 04 00 20 */	lbz r0, 0x20(r4)
/* 803149EC 0031064C  7C A0 04 30 */	srw r0, r5, r0
/* 803149F0 00310650  90 07 00 24 */	stw r0, 0x24(r7)
/* 803149F4 00310654  A0 84 00 00 */	lhz r4, 0(r4)
/* 803149F8 00310658  38 04 FF FF */	addi r0, r4, -1
/* 803149FC 0031065C  7C A0 00 38 */	and r0, r5, r0
/* 80314A00 00310660  B0 07 00 28 */	sth r0, 0x28(r7)
lbl_80314A04:
/* 80314A04 00310664  80 87 00 08 */	lwz r4, 8(r7)
/* 80314A08 00310668  80 07 00 1C */	lwz r0, 0x1c(r7)
/* 80314A0C 0031066C  81 04 02 64 */	lwz r8, 0x264(r4)
/* 80314A10 00310670  7C 00 40 40 */	cmplw r0, r8
/* 80314A14 00310674  40 81 00 C8 */	ble lbl_80314ADC
/* 80314A18 00310678  91 07 00 1C */	stw r8, 0x1c(r7)
/* 80314A1C 0031067C  7F 28 00 50 */	subf r25, r8, r0
/* 80314A20 00310680  38 A1 00 0C */	addi r5, r1, 0xc
/* 80314A24 00310684  38 80 FF FF */	li r4, -1
/* 80314A28 00310688  88 03 00 20 */	lbz r0, 0x20(r3)
/* 80314A2C 0031068C  7D 00 04 30 */	srw r0, r8, r0
/* 80314A30 00310690  90 07 00 24 */	stw r0, 0x24(r7)
/* 80314A34 00310694  A0 C3 00 00 */	lhz r6, 0(r3)
/* 80314A38 00310698  7F 43 D3 78 */	mr r3, r26
/* 80314A3C 0031069C  38 06 FF FF */	addi r0, r6, -1
/* 80314A40 003106A0  7D 00 00 38 */	and r0, r8, r0
/* 80314A44 003106A4  B0 07 00 28 */	sth r0, 0x28(r7)
/* 80314A48 003106A8  4B FF 5C 71 */	bl VFiPFCACHE_AllocateDataPage
/* 80314A4C 003106AC  2C 03 00 00 */	cmpwi r3, 0
/* 80314A50 003106B0  41 82 00 08 */	beq lbl_80314A58
/* 80314A54 003106B4  48 00 00 B8 */	b lbl_80314B0C
lbl_80314A58:
/* 80314A58 003106B8  80 61 00 0C */	lwz r3, 0xc(r1)
/* 80314A5C 003106BC  38 80 00 00 */	li r4, 0
/* 80314A60 003106C0  A0 BA 00 00 */	lhz r5, 0(r26)
/* 80314A64 003106C4  80 63 00 08 */	lwz r3, 8(r3)
/* 80314A68 003106C8  4B FF 05 6D */	bl VFipf_memset
/* 80314A6C 003106CC  48 00 00 5C */	b lbl_80314AC8
lbl_80314A70:
/* 80314A70 003106D0  A0 BA 00 00 */	lhz r5, 0(r26)
/* 80314A74 003106D4  7C 19 28 40 */	cmplw r25, r5
/* 80314A78 003106D8  40 81 00 24 */	ble lbl_80314A9C
/* 80314A7C 003106DC  80 81 00 0C */	lwz r4, 0xc(r1)
/* 80314A80 003106E0  7F C3 F3 78 */	mr r3, r30
/* 80314A84 003106E4  38 C1 00 08 */	addi r6, r1, 8
/* 80314A88 003106E8  80 84 00 08 */	lwz r4, 8(r4)
/* 80314A8C 003106EC  4B FF EE 4D */	bl VFiPFFILE_Cursor_Write
/* 80314A90 003106F0  2C 03 00 00 */	cmpwi r3, 0
/* 80314A94 003106F4  41 82 00 2C */	beq lbl_80314AC0
/* 80314A98 003106F8  48 00 00 74 */	b lbl_80314B0C
lbl_80314A9C:
/* 80314A9C 003106FC  80 81 00 0C */	lwz r4, 0xc(r1)
/* 80314AA0 00310700  7F C3 F3 78 */	mr r3, r30
/* 80314AA4 00310704  7F 25 CB 78 */	mr r5, r25
/* 80314AA8 00310708  38 C1 00 08 */	addi r6, r1, 8
/* 80314AAC 0031070C  80 84 00 08 */	lwz r4, 8(r4)
/* 80314AB0 00310710  4B FF EE 29 */	bl VFiPFFILE_Cursor_Write
/* 80314AB4 00310714  2C 03 00 00 */	cmpwi r3, 0
/* 80314AB8 00310718  41 82 00 18 */	beq lbl_80314AD0
/* 80314ABC 0031071C  48 00 00 50 */	b lbl_80314B0C
lbl_80314AC0:
/* 80314AC0 00310720  A0 1A 00 00 */	lhz r0, 0(r26)
/* 80314AC4 00310724  7F 20 C8 50 */	subf r25, r0, r25
lbl_80314AC8:
/* 80314AC8 00310728  2C 19 00 00 */	cmpwi r25, 0
/* 80314ACC 0031072C  40 82 FF A4 */	bne lbl_80314A70
lbl_80314AD0:
/* 80314AD0 00310730  80 81 00 0C */	lwz r4, 0xc(r1)
/* 80314AD4 00310734  7F 43 D3 78 */	mr r3, r26
/* 80314AD8 00310738  4B FF 5C E5 */	bl VFiPFCACHE_FreeDataPage
lbl_80314ADC:
/* 80314ADC 0031073C  7C BC E9 D6 */	mullw r5, r28, r29
/* 80314AE0 00310740  7F C3 F3 78 */	mr r3, r30
/* 80314AE4 00310744  7F 64 DB 78 */	mr r4, r27
/* 80314AE8 00310748  38 C1 00 08 */	addi r6, r1, 8
/* 80314AEC 0031074C  4B FF ED ED */	bl VFiPFFILE_Cursor_Write
/* 80314AF0 00310750  80 01 00 08 */	lwz r0, 8(r1)
/* 80314AF4 00310754  2C 03 00 00 */	cmpwi r3, 0
/* 80314AF8 00310758  7C 00 E3 96 */	divwu r0, r0, r28
/* 80314AFC 0031075C  90 1F 00 00 */	stw r0, 0(r31)
/* 80314B00 00310760  41 82 00 08 */	beq lbl_80314B08
/* 80314B04 00310764  48 00 00 08 */	b lbl_80314B0C
lbl_80314B08:
/* 80314B08 00310768  38 60 00 00 */	li r3, 0
lbl_80314B0C:
/* 80314B0C 0031076C  39 61 00 30 */	addi r11, r1, 0x30
/* 80314B10 00310770  4B EB 26 5D */	bl _restgpr_25
/* 80314B14 00310774  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80314B18 00310778  7C 08 03 A6 */	mtlr r0
/* 80314B1C 0031077C  38 21 00 30 */	addi r1, r1, 0x30
/* 80314B20 00310780  4E 80 00 20 */	blr

.global VFiPFFILE_p_finfo
VFiPFFILE_p_finfo:
/* 80314B24 00310784  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80314B28 00310788  7C 08 02 A6 */	mflr r0
/* 80314B2C 0031078C  2C 03 00 00 */	cmpwi r3, 0
/* 80314B30 00310790  90 01 00 24 */	stw r0, 0x24(r1)
/* 80314B34 00310794  38 03 00 0C */	addi r0, r3, 0xc
/* 80314B38 00310798  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80314B3C 0031079C  7C 9F 23 78 */	mr r31, r4
/* 80314B40 003107A0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80314B44 003107A4  7C 7E 1B 78 */	mr r30, r3
/* 80314B48 003107A8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80314B4C 003107AC  80 A3 00 08 */	lwz r5, 8(r3)
/* 80314B50 003107B0  90 05 00 34 */	stw r0, 0x34(r5)
/* 80314B54 003107B4  40 82 00 0C */	bne lbl_80314B60
/* 80314B58 003107B8  38 C0 00 00 */	li r6, 0
/* 80314B5C 003107BC  48 00 00 0C */	b lbl_80314B68
lbl_80314B60:
/* 80314B60 003107C0  80 A3 00 08 */	lwz r5, 8(r3)
/* 80314B64 003107C4  80 C5 02 68 */	lwz r6, 0x268(r5)
lbl_80314B68:
/* 80314B68 003107C8  80 A3 00 08 */	lwz r5, 8(r3)
/* 80314B6C 003107CC  80 05 02 64 */	lwz r0, 0x264(r5)
/* 80314B70 003107D0  90 04 00 00 */	stw r0, 0(r4)
/* 80314B74 003107D4  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 80314B78 003107D8  90 04 00 04 */	stw r0, 4(r4)
/* 80314B7C 003107DC  80 63 00 08 */	lwz r3, 8(r3)
/* 80314B80 003107E0  A0 A6 00 00 */	lhz r5, 0(r6)
/* 80314B84 003107E4  80 03 02 70 */	lwz r0, 0x270(r3)
/* 80314B88 003107E8  88 66 00 21 */	lbz r3, 0x21(r6)
/* 80314B8C 003107EC  2C 00 00 00 */	cmpwi r0, 0
/* 80314B90 003107F0  7C BD 18 30 */	slw r29, r5, r3
/* 80314B94 003107F4  41 82 00 54 */	beq lbl_80314BE8
/* 80314B98 003107F8  7F C3 F3 78 */	mr r3, r30
/* 80314B9C 003107FC  38 84 00 0C */	addi r4, r4, 0xc
/* 80314BA0 00310800  4B FF 64 F1 */	bl VFiPFCLUSTER_GetAppendSize
/* 80314BA4 00310804  2C 03 00 00 */	cmpwi r3, 0
/* 80314BA8 00310808  41 82 00 08 */	beq lbl_80314BB0
/* 80314BAC 0031080C  48 00 00 7C */	b lbl_80314C28
lbl_80314BB0:
/* 80314BB0 00310810  80 7E 00 08 */	lwz r3, 8(r30)
/* 80314BB4 00310814  80 9F 00 0C */	lwz r4, 0xc(r31)
/* 80314BB8 00310818  80 63 02 64 */	lwz r3, 0x264(r3)
/* 80314BBC 0031081C  7C 03 EB 96 */	divwu r0, r3, r29
/* 80314BC0 00310820  7C 00 E9 D6 */	mullw r0, r0, r29
/* 80314BC4 00310824  7C A0 18 50 */	subf r5, r0, r3
/* 80314BC8 00310828  7C 05 00 D0 */	neg r0, r5
/* 80314BCC 0031082C  7C 03 2B 78 */	or r3, r0, r5
/* 80314BD0 00310830  7C 05 E8 50 */	subf r0, r5, r29
/* 80314BD4 00310834  7C 63 FE 70 */	srawi r3, r3, 0x1f
/* 80314BD8 00310838  7C 00 18 38 */	and r0, r0, r3
/* 80314BDC 0031083C  7C 04 02 14 */	add r0, r4, r0
/* 80314BE0 00310840  90 1F 00 08 */	stw r0, 8(r31)
/* 80314BE4 00310844  48 00 00 10 */	b lbl_80314BF4
lbl_80314BE8:
/* 80314BE8 00310848  38 00 00 00 */	li r0, 0
/* 80314BEC 0031084C  90 04 00 0C */	stw r0, 0xc(r4)
/* 80314BF0 00310850  90 04 00 08 */	stw r0, 8(r4)
lbl_80314BF4:
/* 80314BF4 00310854  80 9E 00 08 */	lwz r4, 8(r30)
/* 80314BF8 00310858  38 60 00 00 */	li r3, 0
/* 80314BFC 0031085C  A0 04 02 7C */	lhz r0, 0x27c(r4)
/* 80314C00 00310860  54 00 07 BE */	clrlwi r0, r0, 0x1e
/* 80314C04 00310864  90 1F 00 10 */	stw r0, 0x10(r31)
/* 80314C08 00310868  80 9E 00 08 */	lwz r4, 8(r30)
/* 80314C0C 0031086C  80 04 02 84 */	lwz r0, 0x284(r4)
/* 80314C10 00310870  90 1F 00 14 */	stw r0, 0x14(r31)
/* 80314C14 00310874  A0 1E 00 2C */	lhz r0, 0x2c(r30)
/* 80314C18 00310878  90 1F 00 18 */	stw r0, 0x18(r31)
/* 80314C1C 0031087C  80 9E 00 08 */	lwz r4, 8(r30)
/* 80314C20 00310880  A0 04 02 7E */	lhz r0, 0x27e(r4)
/* 80314C24 00310884  90 1F 00 1C */	stw r0, 0x1c(r31)
lbl_80314C28:
/* 80314C28 00310888  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80314C2C 0031088C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80314C30 00310890  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80314C34 00310894  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80314C38 00310898  7C 08 03 A6 */	mtlr r0
/* 80314C3C 0031089C  38 21 00 20 */	addi r1, r1, 0x20
/* 80314C40 003108A0  4E 80 00 20 */	blr

.global VFiPFFILE_GetOpenedFile
VFiPFFILE_GetOpenedFile:
/* 80314C44 003108A4  2C 03 00 00 */	cmpwi r3, 0
/* 80314C48 003108A8  41 82 00 18 */	beq lbl_80314C60
/* 80314C4C 003108AC  2C 04 00 00 */	cmpwi r4, 0
/* 80314C50 003108B0  41 82 00 10 */	beq lbl_80314C60
/* 80314C54 003108B4  80 03 02 2C */	lwz r0, 0x22c(r3)
/* 80314C58 003108B8  2C 00 00 00 */	cmpwi r0, 0
/* 80314C5C 003108BC  40 82 00 0C */	bne lbl_80314C68
lbl_80314C60:
/* 80314C60 003108C0  38 60 00 0A */	li r3, 0xa
/* 80314C64 003108C4  4E 80 00 20 */	blr
lbl_80314C68:
/* 80314C68 003108C8  38 A0 00 00 */	li r5, 0
/* 80314C6C 003108CC  38 00 00 05 */	li r0, 5
/* 80314C70 003108D0  90 A4 00 00 */	stw r5, 0(r4)
/* 80314C74 003108D4  38 C0 00 00 */	li r6, 0
/* 80314C78 003108D8  7C 09 03 A6 */	mtctr r0
lbl_80314C7C:
/* 80314C7C 003108DC  81 03 02 2C */	lwz r8, 0x22c(r3)
/* 80314C80 003108E0  7C E8 32 14 */	add r7, r8, r6
/* 80314C84 003108E4  80 A7 00 40 */	lwz r5, 0x40(r7)
/* 80314C88 003108E8  54 A0 07 FF */	clrlwi. r0, r5, 0x1f
/* 80314C8C 003108EC  41 82 00 40 */	beq lbl_80314CCC
/* 80314C90 003108F0  54 A0 07 BD */	rlwinm. r0, r5, 0, 0x1e, 0x1e
/* 80314C94 003108F4  41 82 00 38 */	beq lbl_80314CCC
/* 80314C98 003108F8  80 07 02 A8 */	lwz r0, 0x2a8(r7)
/* 80314C9C 003108FC  7C 08 00 40 */	cmplw r8, r0
/* 80314CA0 00310900  40 82 00 2C */	bne lbl_80314CCC
/* 80314CA4 00310904  80 A3 02 38 */	lwz r5, 0x238(r3)
/* 80314CA8 00310908  80 07 02 B4 */	lwz r0, 0x2b4(r7)
/* 80314CAC 0031090C  7C 05 00 40 */	cmplw r5, r0
/* 80314CB0 00310910  40 82 00 1C */	bne lbl_80314CCC
/* 80314CB4 00310914  A0 A3 02 3C */	lhz r5, 0x23c(r3)
/* 80314CB8 00310918  A0 07 02 B8 */	lhz r0, 0x2b8(r7)
/* 80314CBC 0031091C  7C 05 00 40 */	cmplw r5, r0
/* 80314CC0 00310920  40 82 00 0C */	bne lbl_80314CCC
/* 80314CC4 00310924  38 07 00 7C */	addi r0, r7, 0x7c
/* 80314CC8 00310928  90 04 00 00 */	stw r0, 0(r4)
lbl_80314CCC:
/* 80314CCC 0031092C  38 C6 02 90 */	addi r6, r6, 0x290
/* 80314CD0 00310930  42 00 FF AC */	bdnz lbl_80314C7C
/* 80314CD4 00310934  38 60 00 00 */	li r3, 0
/* 80314CD8 00310938  4E 80 00 20 */	blr

.global VFiPFFILE_FinalizeAllFiles
VFiPFFILE_FinalizeAllFiles:
/* 80314CDC 0031093C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80314CE0 00310940  7C 08 02 A6 */	mflr r0
/* 80314CE4 00310944  90 01 00 24 */	stw r0, 0x24(r1)
/* 80314CE8 00310948  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80314CEC 0031094C  3B E0 00 00 */	li r31, 0
/* 80314CF0 00310950  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80314CF4 00310954  3B C0 00 00 */	li r30, 0
/* 80314CF8 00310958  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80314CFC 0031095C  7C 7D 1B 78 */	mr r29, r3
lbl_80314D00:
/* 80314D00 00310960  57 C0 04 3E */	clrlwi r0, r30, 0x10
/* 80314D04 00310964  1C 00 02 90 */	mulli r0, r0, 0x290
/* 80314D08 00310968  7C 7D 02 14 */	add r3, r29, r0
/* 80314D0C 0031096C  93 E3 00 40 */	stw r31, 0x40(r3)
/* 80314D10 00310970  38 63 00 44 */	addi r3, r3, 0x44
/* 80314D14 00310974  4B FF C4 21 */	bl VFiPFFAT_FinalizeFFD
/* 80314D18 00310978  3B DE 00 01 */	addi r30, r30, 1
/* 80314D1C 0031097C  28 1E 00 05 */	cmplwi r30, 5
/* 80314D20 00310980  41 80 FF E0 */	blt lbl_80314D00
/* 80314D24 00310984  80 9D 0D 10 */	lwz r4, 0xd10(r29)
/* 80314D28 00310988  38 00 00 00 */	li r0, 0
/* 80314D2C 0031098C  80 7D 0D 40 */	lwz r3, 0xd40(r29)
/* 80314D30 00310990  54 87 00 3C */	rlwinm r7, r4, 0, 0, 0x1e
/* 80314D34 00310994  80 BD 0D 70 */	lwz r5, 0xd70(r29)
/* 80314D38 00310998  54 66 00 3C */	rlwinm r6, r3, 0, 0, 0x1e
/* 80314D3C 0031099C  80 9D 0D A0 */	lwz r4, 0xda0(r29)
/* 80314D40 003109A0  80 7D 0D D0 */	lwz r3, 0xdd0(r29)
/* 80314D44 003109A4  54 A5 00 3C */	rlwinm r5, r5, 0, 0, 0x1e
/* 80314D48 003109A8  54 84 00 3C */	rlwinm r4, r4, 0, 0, 0x1e
/* 80314D4C 003109AC  90 FD 0D 10 */	stw r7, 0xd10(r29)
/* 80314D50 003109B0  54 63 00 3C */	rlwinm r3, r3, 0, 0, 0x1e
/* 80314D54 003109B4  90 DD 0D 40 */	stw r6, 0xd40(r29)
/* 80314D58 003109B8  90 BD 0D 70 */	stw r5, 0xd70(r29)
/* 80314D5C 003109BC  90 9D 0D A0 */	stw r4, 0xda0(r29)
/* 80314D60 003109C0  90 7D 0D D0 */	stw r3, 0xdd0(r29)
/* 80314D64 003109C4  90 1D 15 E0 */	stw r0, 0x15e0(r29)
/* 80314D68 003109C8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80314D6C 003109CC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80314D70 003109D0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80314D74 003109D4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80314D78 003109D8  7C 08 03 A6 */	mtlr r0
/* 80314D7C 003109DC  38 21 00 20 */	addi r1, r1, 0x20
/* 80314D80 003109E0  4E 80 00 20 */	blr

.global VFiPFFILE_fopen
VFiPFFILE_fopen:
/* 80314D84 003109E4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80314D88 003109E8  7C 08 02 A6 */	mflr r0
/* 80314D8C 003109EC  2C 05 00 00 */	cmpwi r5, 0
/* 80314D90 003109F0  90 01 00 24 */	stw r0, 0x24(r1)
/* 80314D94 003109F4  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80314D98 003109F8  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80314D9C 003109FC  7C BE 2B 78 */	mr r30, r5
/* 80314DA0 00310A00  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80314DA4 00310A04  7C 9D 23 78 */	mr r29, r4
/* 80314DA8 00310A08  93 81 00 10 */	stw r28, 0x10(r1)
/* 80314DAC 00310A0C  7C 7C 1B 78 */	mr r28, r3
/* 80314DB0 00310A10  40 82 00 1C */	bne lbl_80314DCC
/* 80314DB4 00310A14  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314DB8 00310A18  38 00 00 0A */	li r0, 0xa
/* 80314DBC 00310A1C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314DC0 00310A20  38 60 00 0A */	li r3, 0xa
/* 80314DC4 00310A24  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80314DC8 00310A28  48 00 00 D0 */	b lbl_80314E98
lbl_80314DCC:
/* 80314DCC 00310A2C  38 00 00 00 */	li r0, 0
/* 80314DD0 00310A30  2C 03 00 00 */	cmpwi r3, 0
/* 80314DD4 00310A34  90 05 00 00 */	stw r0, 0(r5)
/* 80314DD8 00310A38  40 82 00 1C */	bne lbl_80314DF4
/* 80314DDC 00310A3C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314DE0 00310A40  38 00 00 0A */	li r0, 0xa
/* 80314DE4 00310A44  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314DE8 00310A48  38 60 00 0A */	li r3, 0xa
/* 80314DEC 00310A4C  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80314DF0 00310A50  48 00 00 A8 */	b lbl_80314E98
lbl_80314DF4:
/* 80314DF4 00310A54  48 00 20 A1 */	bl VFiPFPATH_GetVolumeFromPath
/* 80314DF8 00310A58  2C 03 00 00 */	cmpwi r3, 0
/* 80314DFC 00310A5C  7C 7F 1B 78 */	mr r31, r3
/* 80314E00 00310A60  40 82 00 1C */	bne lbl_80314E1C
/* 80314E04 00310A64  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314E08 00310A68  38 00 00 0A */	li r0, 0xa
/* 80314E0C 00310A6C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314E10 00310A70  38 60 00 0A */	li r3, 0xa
/* 80314E14 00310A74  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80314E18 00310A78  48 00 00 80 */	b lbl_80314E98
lbl_80314E1C:
/* 80314E1C 00310A7C  48 00 45 51 */	bl VFiPFVOL_CheckForRead
/* 80314E20 00310A80  2C 03 00 00 */	cmpwi r3, 0
/* 80314E24 00310A84  41 82 00 18 */	beq lbl_80314E3C
/* 80314E28 00310A88  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314E2C 00310A8C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314E30 00310A90  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80314E34 00310A94  90 7F 18 6C */	stw r3, 0x186c(r31)
/* 80314E38 00310A98  48 00 00 60 */	b lbl_80314E98
lbl_80314E3C:
/* 80314E3C 00310A9C  7F E3 FB 78 */	mr r3, r31
/* 80314E40 00310AA0  4B FF 0F 69 */	bl VFiPFDRV_IsWProtected
/* 80314E44 00310AA4  2C 03 00 00 */	cmpwi r3, 0
/* 80314E48 00310AA8  41 82 00 14 */	beq lbl_80314E5C
/* 80314E4C 00310AAC  2C 1D 00 02 */	cmpwi r29, 2
/* 80314E50 00310AB0  41 82 00 0C */	beq lbl_80314E5C
/* 80314E54 00310AB4  38 60 00 0B */	li r3, 0xb
/* 80314E58 00310AB8  48 00 00 40 */	b lbl_80314E98
lbl_80314E5C:
/* 80314E5C 00310ABC  7F E3 FB 78 */	mr r3, r31
/* 80314E60 00310AC0  7F 84 E3 78 */	mr r4, r28
/* 80314E64 00310AC4  7F A5 EB 78 */	mr r5, r29
/* 80314E68 00310AC8  7F C6 F3 78 */	mr r6, r30
/* 80314E6C 00310ACC  4B FF F4 A9 */	bl VFiPFFILE_p_fopen
/* 80314E70 00310AD0  2C 03 00 00 */	cmpwi r3, 0
/* 80314E74 00310AD4  41 82 00 18 */	beq lbl_80314E8C
/* 80314E78 00310AD8  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314E7C 00310ADC  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314E80 00310AE0  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80314E84 00310AE4  90 7F 18 6C */	stw r3, 0x186c(r31)
/* 80314E88 00310AE8  48 00 00 10 */	b lbl_80314E98
lbl_80314E8C:
/* 80314E8C 00310AEC  80 9F 15 E0 */	lwz r4, 0x15e0(r31)
/* 80314E90 00310AF0  38 04 00 01 */	addi r0, r4, 1
/* 80314E94 00310AF4  90 1F 15 E0 */	stw r0, 0x15e0(r31)
lbl_80314E98:
/* 80314E98 00310AF8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80314E9C 00310AFC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80314EA0 00310B00  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80314EA4 00310B04  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80314EA8 00310B08  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80314EAC 00310B0C  7C 08 03 A6 */	mtlr r0
/* 80314EB0 00310B10  38 21 00 20 */	addi r1, r1, 0x20
/* 80314EB4 00310B14  4E 80 00 20 */	blr

.global VFiPFFILE_fclose
VFiPFFILE_fclose:
/* 80314EB8 00310B18  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80314EBC 00310B1C  7C 08 02 A6 */	mflr r0
/* 80314EC0 00310B20  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314EC4 00310B24  90 01 00 24 */	stw r0, 0x24(r1)
/* 80314EC8 00310B28  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314ECC 00310B2C  7C 04 18 40 */	cmplw r4, r3
/* 80314ED0 00310B30  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80314ED4 00310B34  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80314ED8 00310B38  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80314EDC 00310B3C  7C 7D 1B 78 */	mr r29, r3
/* 80314EE0 00310B40  41 81 00 14 */	bgt lbl_80314EF4
/* 80314EE4 00310B44  3C 84 00 02 */	addis r4, r4, 2
/* 80314EE8 00310B48  38 04 7F B8 */	addi r0, r4, 0x7fb8
/* 80314EEC 00310B4C  7C 00 18 40 */	cmplw r0, r3
/* 80314EF0 00310B50  40 80 00 1C */	bge lbl_80314F0C
lbl_80314EF4:
/* 80314EF4 00310B54  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314EF8 00310B58  38 00 00 0A */	li r0, 0xa
/* 80314EFC 00310B5C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314F00 00310B60  38 60 00 0A */	li r3, 0xa
/* 80314F04 00310B64  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80314F08 00310B68  48 00 02 F0 */	b lbl_803151F8
lbl_80314F0C:
/* 80314F0C 00310B6C  2C 03 00 00 */	cmpwi r3, 0
/* 80314F10 00310B70  40 82 00 0C */	bne lbl_80314F1C
/* 80314F14 00310B74  3B E0 00 00 */	li r31, 0
/* 80314F18 00310B78  48 00 00 0C */	b lbl_80314F24
lbl_80314F1C:
/* 80314F1C 00310B7C  80 63 00 08 */	lwz r3, 8(r3)
/* 80314F20 00310B80  83 E3 02 68 */	lwz r31, 0x268(r3)
lbl_80314F24:
/* 80314F24 00310B84  2C 1F 00 00 */	cmpwi r31, 0
/* 80314F28 00310B88  40 82 00 1C */	bne lbl_80314F44
/* 80314F2C 00310B8C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314F30 00310B90  38 00 00 0A */	li r0, 0xa
/* 80314F34 00310B94  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314F38 00310B98  38 60 00 0A */	li r3, 0xa
/* 80314F3C 00310B9C  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80314F40 00310BA0  48 00 02 B8 */	b lbl_803151F8
lbl_80314F44:
/* 80314F44 00310BA4  7F E3 FB 78 */	mr r3, r31
/* 80314F48 00310BA8  48 00 44 25 */	bl VFiPFVOL_CheckForRead
/* 80314F4C 00310BAC  2C 03 00 00 */	cmpwi r3, 0
/* 80314F50 00310BB0  7C 7E 1B 78 */	mr r30, r3
/* 80314F54 00310BB4  41 82 00 18 */	beq lbl_80314F6C
/* 80314F58 00310BB8  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314F5C 00310BBC  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314F60 00310BC0  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80314F64 00310BC4  90 7F 18 6C */	stw r3, 0x186c(r31)
/* 80314F68 00310BC8  48 00 02 90 */	b lbl_803151F8
lbl_80314F6C:
/* 80314F6C 00310BCC  7F E3 FB 78 */	mr r3, r31
/* 80314F70 00310BD0  4B FF 0E 39 */	bl VFiPFDRV_IsWProtected
/* 80314F74 00310BD4  2C 03 00 00 */	cmpwi r3, 0
/* 80314F78 00310BD8  41 82 00 18 */	beq lbl_80314F90
/* 80314F7C 00310BDC  80 1D 00 04 */	lwz r0, 4(r29)
/* 80314F80 00310BE0  2C 00 00 02 */	cmpwi r0, 2
/* 80314F84 00310BE4  41 82 00 0C */	beq lbl_80314F90
/* 80314F88 00310BE8  38 60 00 0B */	li r3, 0xb
/* 80314F8C 00310BEC  48 00 02 6C */	b lbl_803151F8
lbl_80314F90:
/* 80314F90 00310BF0  2C 1D 00 00 */	cmpwi r29, 0
/* 80314F94 00310BF4  41 82 00 34 */	beq lbl_80314FC8
/* 80314F98 00310BF8  80 7D 00 08 */	lwz r3, 8(r29)
/* 80314F9C 00310BFC  2C 03 00 00 */	cmpwi r3, 0
/* 80314FA0 00310C00  41 82 00 28 */	beq lbl_80314FC8
/* 80314FA4 00310C04  80 1D 00 00 */	lwz r0, 0(r29)
/* 80314FA8 00310C08  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80314FAC 00310C0C  41 82 00 1C */	beq lbl_80314FC8
/* 80314FB0 00310C10  80 03 00 00 */	lwz r0, 0(r3)
/* 80314FB4 00310C14  54 03 07 FE */	clrlwi r3, r0, 0x1f
/* 80314FB8 00310C18  2C 83 00 00 */	cmpwi cr1, r3, 0
/* 80314FBC 00310C1C  41 86 00 0C */	beq cr1, lbl_80314FC8
/* 80314FC0 00310C20  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80314FC4 00310C24  40 82 00 20 */	bne lbl_80314FE4
lbl_80314FC8:
/* 80314FC8 00310C28  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314FCC 00310C2C  38 00 00 0A */	li r0, 0xa
/* 80314FD0 00310C30  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314FD4 00310C34  38 60 00 0A */	li r3, 0xa
/* 80314FD8 00310C38  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80314FDC 00310C3C  90 1F 18 6C */	stw r0, 0x186c(r31)
/* 80314FE0 00310C40  48 00 02 18 */	b lbl_803151F8
lbl_80314FE4:
/* 80314FE4 00310C44  41 86 00 08 */	beq cr1, lbl_80314FEC
/* 80314FE8 00310C48  40 82 00 20 */	bne lbl_80315008
lbl_80314FEC:
/* 80314FEC 00310C4C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80314FF0 00310C50  38 00 00 0A */	li r0, 0xa
/* 80314FF4 00310C54  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80314FF8 00310C58  38 60 00 0A */	li r3, 0xa
/* 80314FFC 00310C5C  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315000 00310C60  90 1F 18 6C */	stw r0, 0x186c(r31)
/* 80315004 00310C64  48 00 01 F4 */	b lbl_803151F8
lbl_80315008:
/* 80315008 00310C68  93 BF 16 08 */	stw r29, 0x1608(r31)
/* 8031500C 00310C6C  80 9D 00 08 */	lwz r4, 8(r29)
/* 80315010 00310C70  A0 64 02 8C */	lhz r3, 0x28c(r4)
/* 80315014 00310C74  34 03 FF FF */	addic. r0, r3, -1
/* 80315018 00310C78  41 81 00 50 */	bgt lbl_80315068
/* 8031501C 00310C7C  88 04 02 58 */	lbz r0, 0x258(r4)
/* 80315020 00310C80  70 00 00 19 */	andi. r0, r0, 0x19
/* 80315024 00310C84  40 82 00 44 */	bne lbl_80315068
/* 80315028 00310C88  7F E3 FB 78 */	mr r3, r31
/* 8031502C 00310C8C  4B FF 0D 7D */	bl VFiPFDRV_IsWProtected
/* 80315030 00310C90  2C 03 00 00 */	cmpwi r3, 0
/* 80315034 00310C94  40 82 00 34 */	bne lbl_80315068
/* 80315038 00310C98  80 7D 00 08 */	lwz r3, 8(r29)
/* 8031503C 00310C9C  80 03 00 00 */	lwz r0, 0(r3)
/* 80315040 00310CA0  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80315044 00310CA4  40 82 00 14 */	bne lbl_80315058
/* 80315048 00310CA8  80 1F 18 74 */	lwz r0, 0x1874(r31)
/* 8031504C 00310CAC  54 00 07 FE */	clrlwi r0, r0, 0x1f
/* 80315050 00310CB0  28 00 00 01 */	cmplwi r0, 1
/* 80315054 00310CB4  41 82 00 14 */	beq lbl_80315068
lbl_80315058:
/* 80315058 00310CB8  38 63 00 3C */	addi r3, r3, 0x3c
/* 8031505C 00310CBC  38 80 00 01 */	li r4, 1
/* 80315060 00310CC0  4B FF 78 91 */	bl VFiPFENT_updateEntry
/* 80315064 00310CC4  7C 7E 1B 78 */	mr r30, r3
lbl_80315068:
/* 80315068 00310CC8  A0 9D 00 2C */	lhz r4, 0x2c(r29)
/* 8031506C 00310CCC  2C 04 00 00 */	cmpwi r4, 0
/* 80315070 00310CD0  41 82 00 94 */	beq lbl_80315104
/* 80315074 00310CD4  80 BD 00 08 */	lwz r5, 8(r29)
/* 80315078 00310CD8  A0 05 02 7C */	lhz r0, 0x27c(r5)
/* 8031507C 00310CDC  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80315080 00310CE0  41 82 00 44 */	beq lbl_803150C4
/* 80315084 00310CE4  A0 65 02 7E */	lhz r3, 0x27e(r5)
/* 80315088 00310CE8  38 00 00 00 */	li r0, 0
/* 8031508C 00310CEC  7C 64 18 50 */	subf r3, r4, r3
/* 80315090 00310CF0  B0 65 02 7E */	sth r3, 0x27e(r5)
/* 80315094 00310CF4  B0 1D 00 2C */	sth r0, 0x2c(r29)
/* 80315098 00310CF8  80 7D 00 08 */	lwz r3, 8(r29)
/* 8031509C 00310CFC  A0 03 02 7E */	lhz r0, 0x27e(r3)
/* 803150A0 00310D00  2C 00 00 00 */	cmpwi r0, 0
/* 803150A4 00310D04  40 82 00 0C */	bne lbl_803150B0
/* 803150A8 00310D08  7F A3 EB 78 */	mr r3, r29
/* 803150AC 00310D0C  48 00 53 75 */	bl VFiPF_UnLockFile
lbl_803150B0:
/* 803150B0 00310D10  80 7D 00 08 */	lwz r3, 8(r29)
/* 803150B4 00310D14  A0 03 02 7C */	lhz r0, 0x27c(r3)
/* 803150B8 00310D18  54 00 04 3A */	rlwinm r0, r0, 0, 0x10, 0x1d
/* 803150BC 00310D1C  B0 03 02 7C */	sth r0, 0x27c(r3)
/* 803150C0 00310D20  48 00 00 44 */	b lbl_80315104
lbl_803150C4:
/* 803150C4 00310D24  80 05 02 84 */	lwz r0, 0x284(r5)
/* 803150C8 00310D28  7C 00 E8 40 */	cmplw r0, r29
/* 803150CC 00310D2C  41 82 00 0C */	beq lbl_803150D8
/* 803150D0 00310D30  3B C0 00 19 */	li r30, 0x19
/* 803150D4 00310D34  48 00 00 30 */	b lbl_80315104
lbl_803150D8:
/* 803150D8 00310D38  38 00 00 00 */	li r0, 0
/* 803150DC 00310D3C  7F A3 EB 78 */	mr r3, r29
/* 803150E0 00310D40  B0 05 02 7E */	sth r0, 0x27e(r5)
/* 803150E4 00310D44  B0 1D 00 2C */	sth r0, 0x2c(r29)
/* 803150E8 00310D48  80 9D 00 08 */	lwz r4, 8(r29)
/* 803150EC 00310D4C  90 04 02 84 */	stw r0, 0x284(r4)
/* 803150F0 00310D50  48 00 53 31 */	bl VFiPF_UnLockFile
/* 803150F4 00310D54  80 7D 00 08 */	lwz r3, 8(r29)
/* 803150F8 00310D58  A0 03 02 7C */	lhz r0, 0x27c(r3)
/* 803150FC 00310D5C  54 00 04 3A */	rlwinm r0, r0, 0, 0x10, 0x1d
/* 80315100 00310D60  B0 03 02 7C */	sth r0, 0x27c(r3)
lbl_80315104:
/* 80315104 00310D64  2C 1E 00 00 */	cmpwi r30, 0
/* 80315108 00310D68  41 82 00 24 */	beq lbl_8031512C
/* 8031510C 00310D6C  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80315110 00310D70  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80315114 00310D74  93 C3 00 1C */	stw r30, 0x1c(r3)
/* 80315118 00310D78  80 7D 00 08 */	lwz r3, 8(r29)
/* 8031511C 00310D7C  80 63 00 38 */	lwz r3, 0x38(r3)
/* 80315120 00310D80  93 C3 18 6C */	stw r30, 0x186c(r3)
/* 80315124 00310D84  93 DD 00 18 */	stw r30, 0x18(r29)
/* 80315128 00310D88  48 00 00 C4 */	b lbl_803151EC
lbl_8031512C:
/* 8031512C 00310D8C  80 1F 15 E8 */	lwz r0, 0x15e8(r31)
/* 80315130 00310D90  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80315134 00310D94  41 82 00 6C */	beq lbl_803151A0
/* 80315138 00310D98  7F E3 FB 78 */	mr r3, r31
/* 8031513C 00310D9C  4B FF 59 75 */	bl VFiPFCACHE_FlushFATCache
/* 80315140 00310DA0  2C 03 00 00 */	cmpwi r3, 0
/* 80315144 00310DA4  7C 7E 1B 78 */	mr r30, r3
/* 80315148 00310DA8  41 82 00 24 */	beq lbl_8031516C
/* 8031514C 00310DAC  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315150 00310DB0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315154 00310DB4  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80315158 00310DB8  80 9D 00 08 */	lwz r4, 8(r29)
/* 8031515C 00310DBC  80 84 00 38 */	lwz r4, 0x38(r4)
/* 80315160 00310DC0  90 64 18 6C */	stw r3, 0x186c(r4)
/* 80315164 00310DC4  90 7D 00 18 */	stw r3, 0x18(r29)
/* 80315168 00310DC8  48 00 00 38 */	b lbl_803151A0
lbl_8031516C:
/* 8031516C 00310DCC  7F E3 FB 78 */	mr r3, r31
/* 80315170 00310DD0  7F A4 EB 78 */	mr r4, r29
/* 80315174 00310DD4  4B FF 59 71 */	bl VFiPFCACHE_FlushDataCacheSpecific
/* 80315178 00310DD8  2C 03 00 00 */	cmpwi r3, 0
/* 8031517C 00310DDC  7C 7E 1B 78 */	mr r30, r3
/* 80315180 00310DE0  41 82 00 20 */	beq lbl_803151A0
/* 80315184 00310DE4  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315188 00310DE8  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 8031518C 00310DEC  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80315190 00310DF0  80 9D 00 08 */	lwz r4, 8(r29)
/* 80315194 00310DF4  80 84 00 38 */	lwz r4, 0x38(r4)
/* 80315198 00310DF8  90 64 18 6C */	stw r3, 0x186c(r4)
/* 8031519C 00310DFC  90 7D 00 18 */	stw r3, 0x18(r29)
lbl_803151A0:
/* 803151A0 00310E00  2C 1E 00 00 */	cmpwi r30, 0
/* 803151A4 00310E04  40 82 00 48 */	bne lbl_803151EC
/* 803151A8 00310E08  80 9D 00 08 */	lwz r4, 8(r29)
/* 803151AC 00310E0C  A0 64 02 8C */	lhz r3, 0x28c(r4)
/* 803151B0 00310E10  38 63 FF FF */	addi r3, r3, -1
/* 803151B4 00310E14  54 60 04 3F */	clrlwi. r0, r3, 0x10
/* 803151B8 00310E18  B0 64 02 8C */	sth r3, 0x28c(r4)
/* 803151BC 00310E1C  40 82 00 18 */	bne lbl_803151D4
/* 803151C0 00310E20  80 64 00 00 */	lwz r3, 0(r4)
/* 803151C4 00310E24  38 00 00 00 */	li r0, 0
/* 803151C8 00310E28  54 63 00 3C */	rlwinm r3, r3, 0, 0, 0x1e
/* 803151CC 00310E2C  90 64 00 00 */	stw r3, 0(r4)
/* 803151D0 00310E30  90 04 00 20 */	stw r0, 0x20(r4)
lbl_803151D4:
/* 803151D4 00310E34  80 1D 00 00 */	lwz r0, 0(r29)
/* 803151D8 00310E38  54 00 00 3C */	rlwinm r0, r0, 0, 0, 0x1e
/* 803151DC 00310E3C  90 1D 00 00 */	stw r0, 0(r29)
/* 803151E0 00310E40  80 7F 15 E0 */	lwz r3, 0x15e0(r31)
/* 803151E4 00310E44  38 03 FF FF */	addi r0, r3, -1
/* 803151E8 00310E48  90 1F 15 E0 */	stw r0, 0x15e0(r31)
lbl_803151EC:
/* 803151EC 00310E4C  38 00 00 00 */	li r0, 0
/* 803151F0 00310E50  7F C3 F3 78 */	mr r3, r30
/* 803151F4 00310E54  90 1F 16 08 */	stw r0, 0x1608(r31)
lbl_803151F8:
/* 803151F8 00310E58  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803151FC 00310E5C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80315200 00310E60  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80315204 00310E64  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80315208 00310E68  7C 08 03 A6 */	mtlr r0
/* 8031520C 00310E6C  38 21 00 20 */	addi r1, r1, 0x20
/* 80315210 00310E70  4E 80 00 20 */	blr

.global VFiPFFILE_fread
VFiPFFILE_fread:
/* 80315214 00310E74  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80315218 00310E78  7C 08 02 A6 */	mflr r0
/* 8031521C 00310E7C  90 01 00 34 */	stw r0, 0x34(r1)
/* 80315220 00310E80  39 61 00 30 */	addi r11, r1, 0x30
/* 80315224 00310E84  4B EB 1F 01 */	bl _savegpr_26
/* 80315228 00310E88  2C 07 00 00 */	cmpwi r7, 0
/* 8031522C 00310E8C  7C 7A 1B 78 */	mr r26, r3
/* 80315230 00310E90  7C 9B 23 78 */	mr r27, r4
/* 80315234 00310E94  7C BC 2B 78 */	mr r28, r5
/* 80315238 00310E98  7C DF 33 78 */	mr r31, r6
/* 8031523C 00310E9C  7C FD 3B 78 */	mr r29, r7
/* 80315240 00310EA0  40 82 00 1C */	bne lbl_8031525C
/* 80315244 00310EA4  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315248 00310EA8  38 00 00 0A */	li r0, 0xa
/* 8031524C 00310EAC  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315250 00310EB0  38 60 00 0A */	li r3, 0xa
/* 80315254 00310EB4  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315258 00310EB8  48 00 01 BC */	b lbl_80315414
lbl_8031525C:
/* 8031525C 00310EBC  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80315260 00310EC0  38 00 00 00 */	li r0, 0
/* 80315264 00310EC4  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80315268 00310EC8  90 07 00 00 */	stw r0, 0(r7)
/* 8031526C 00310ECC  7C 03 30 40 */	cmplw r3, r6
/* 80315270 00310ED0  41 81 00 14 */	bgt lbl_80315284
/* 80315274 00310ED4  3C 63 00 02 */	addis r3, r3, 2
/* 80315278 00310ED8  38 03 7F B8 */	addi r0, r3, 0x7fb8
/* 8031527C 00310EDC  7C 00 30 40 */	cmplw r0, r6
/* 80315280 00310EE0  40 80 00 1C */	bge lbl_8031529C
lbl_80315284:
/* 80315284 00310EE4  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315288 00310EE8  38 00 00 0A */	li r0, 0xa
/* 8031528C 00310EEC  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315290 00310EF0  38 60 00 0A */	li r3, 0xa
/* 80315294 00310EF4  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315298 00310EF8  48 00 01 7C */	b lbl_80315414
lbl_8031529C:
/* 8031529C 00310EFC  2C 06 00 00 */	cmpwi r6, 0
/* 803152A0 00310F00  40 82 00 0C */	bne lbl_803152AC
/* 803152A4 00310F04  3B C0 00 00 */	li r30, 0
/* 803152A8 00310F08  48 00 00 0C */	b lbl_803152B4
lbl_803152AC:
/* 803152AC 00310F0C  80 66 00 08 */	lwz r3, 8(r6)
/* 803152B0 00310F10  83 C3 02 68 */	lwz r30, 0x268(r3)
lbl_803152B4:
/* 803152B4 00310F14  2C 1E 00 00 */	cmpwi r30, 0
/* 803152B8 00310F18  40 82 00 2C */	bne lbl_803152E4
/* 803152BC 00310F1C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803152C0 00310F20  38 00 00 26 */	li r0, 0x26
/* 803152C4 00310F24  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803152C8 00310F28  38 60 00 26 */	li r3, 0x26
/* 803152CC 00310F2C  90 04 00 1C */	stw r0, 0x1c(r4)
/* 803152D0 00310F30  80 86 00 08 */	lwz r4, 8(r6)
/* 803152D4 00310F34  80 84 00 38 */	lwz r4, 0x38(r4)
/* 803152D8 00310F38  90 04 18 6C */	stw r0, 0x186c(r4)
/* 803152DC 00310F3C  90 06 00 18 */	stw r0, 0x18(r6)
/* 803152E0 00310F40  48 00 01 34 */	b lbl_80315414
lbl_803152E4:
/* 803152E4 00310F44  7F C3 F3 78 */	mr r3, r30
/* 803152E8 00310F48  48 00 40 85 */	bl VFiPFVOL_CheckForRead
/* 803152EC 00310F4C  2C 03 00 00 */	cmpwi r3, 0
/* 803152F0 00310F50  41 82 00 18 */	beq lbl_80315308
/* 803152F4 00310F54  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803152F8 00310F58  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803152FC 00310F5C  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80315300 00310F60  90 7E 18 6C */	stw r3, 0x186c(r30)
/* 80315304 00310F64  48 00 01 10 */	b lbl_80315414
lbl_80315308:
/* 80315308 00310F68  2C 1F 00 00 */	cmpwi r31, 0
/* 8031530C 00310F6C  41 82 00 34 */	beq lbl_80315340
/* 80315310 00310F70  80 7F 00 08 */	lwz r3, 8(r31)
/* 80315314 00310F74  2C 03 00 00 */	cmpwi r3, 0
/* 80315318 00310F78  41 82 00 28 */	beq lbl_80315340
/* 8031531C 00310F7C  80 1F 00 00 */	lwz r0, 0(r31)
/* 80315320 00310F80  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80315324 00310F84  41 82 00 1C */	beq lbl_80315340
/* 80315328 00310F88  80 03 00 00 */	lwz r0, 0(r3)
/* 8031532C 00310F8C  54 03 07 FE */	clrlwi r3, r0, 0x1f
/* 80315330 00310F90  2C 83 00 00 */	cmpwi cr1, r3, 0
/* 80315334 00310F94  41 86 00 0C */	beq cr1, lbl_80315340
/* 80315338 00310F98  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 8031533C 00310F9C  40 82 00 20 */	bne lbl_8031535C
lbl_80315340:
/* 80315340 00310FA0  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315344 00310FA4  38 00 00 26 */	li r0, 0x26
/* 80315348 00310FA8  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 8031534C 00310FAC  38 60 00 26 */	li r3, 0x26
/* 80315350 00310FB0  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315354 00310FB4  90 1E 18 6C */	stw r0, 0x186c(r30)
/* 80315358 00310FB8  48 00 00 BC */	b lbl_80315414
lbl_8031535C:
/* 8031535C 00310FBC  41 86 00 08 */	beq cr1, lbl_80315364
/* 80315360 00310FC0  40 82 00 20 */	bne lbl_80315380
lbl_80315364:
/* 80315364 00310FC4  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315368 00310FC8  38 00 00 26 */	li r0, 0x26
/* 8031536C 00310FCC  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315370 00310FD0  38 60 00 26 */	li r3, 0x26
/* 80315374 00310FD4  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315378 00310FD8  90 1E 18 6C */	stw r0, 0x186c(r30)
/* 8031537C 00310FDC  48 00 00 98 */	b lbl_80315414
lbl_80315380:
/* 80315380 00310FE0  2C 1A 00 00 */	cmpwi r26, 0
/* 80315384 00310FE4  41 82 00 14 */	beq lbl_80315398
/* 80315388 00310FE8  2C 1C 00 00 */	cmpwi r28, 0
/* 8031538C 00310FEC  41 82 00 0C */	beq lbl_80315398
/* 80315390 00310FF0  2C 1B 00 00 */	cmpwi r27, 0
/* 80315394 00310FF4  40 82 00 2C */	bne lbl_803153C0
lbl_80315398:
/* 80315398 00310FF8  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 8031539C 00310FFC  38 00 00 0A */	li r0, 0xa
/* 803153A0 00311000  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803153A4 00311004  38 60 00 0A */	li r3, 0xa
/* 803153A8 00311008  90 04 00 1C */	stw r0, 0x1c(r4)
/* 803153AC 0031100C  80 9F 00 08 */	lwz r4, 8(r31)
/* 803153B0 00311010  80 84 00 38 */	lwz r4, 0x38(r4)
/* 803153B4 00311014  90 04 18 6C */	stw r0, 0x186c(r4)
/* 803153B8 00311018  90 1F 00 18 */	stw r0, 0x18(r31)
/* 803153BC 0031101C  48 00 00 58 */	b lbl_80315414
lbl_803153C0:
/* 803153C0 00311020  93 FE 16 08 */	stw r31, 0x1608(r30)
/* 803153C4 00311024  7F C3 F3 78 */	mr r3, r30
/* 803153C8 00311028  7F 44 D3 78 */	mr r4, r26
/* 803153CC 0031102C  7F 65 DB 78 */	mr r5, r27
/* 803153D0 00311030  7F 86 E3 78 */	mr r6, r28
/* 803153D4 00311034  7F E7 FB 78 */	mr r7, r31
/* 803153D8 00311038  39 01 00 08 */	addi r8, r1, 8
/* 803153DC 0031103C  4B FF F4 29 */	bl VFiPFFILE_p_fread
/* 803153E0 00311040  80 81 00 08 */	lwz r4, 8(r1)
/* 803153E4 00311044  2C 03 00 00 */	cmpwi r3, 0
/* 803153E8 00311048  38 00 00 00 */	li r0, 0
/* 803153EC 0031104C  90 9D 00 00 */	stw r4, 0(r29)
/* 803153F0 00311050  90 1E 16 08 */	stw r0, 0x1608(r30)
/* 803153F4 00311054  41 82 00 20 */	beq lbl_80315414
/* 803153F8 00311058  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803153FC 0031105C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315400 00311060  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80315404 00311064  80 9F 00 08 */	lwz r4, 8(r31)
/* 80315408 00311068  80 84 00 38 */	lwz r4, 0x38(r4)
/* 8031540C 0031106C  90 64 18 6C */	stw r3, 0x186c(r4)
/* 80315410 00311070  90 7F 00 18 */	stw r3, 0x18(r31)
lbl_80315414:
/* 80315414 00311074  39 61 00 30 */	addi r11, r1, 0x30
/* 80315418 00311078  4B EB 1D 59 */	bl _restgpr_26
/* 8031541C 0031107C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80315420 00311080  7C 08 03 A6 */	mtlr r0
/* 80315424 00311084  38 21 00 30 */	addi r1, r1, 0x30
/* 80315428 00311088  4E 80 00 20 */	blr

.global VFiPFFILE_fwrite
VFiPFFILE_fwrite:
/* 8031542C 0031108C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80315430 00311090  7C 08 02 A6 */	mflr r0
/* 80315434 00311094  90 01 00 34 */	stw r0, 0x34(r1)
/* 80315438 00311098  39 61 00 30 */	addi r11, r1, 0x30
/* 8031543C 0031109C  4B EB 1C E9 */	bl _savegpr_26
/* 80315440 003110A0  2C 07 00 00 */	cmpwi r7, 0
/* 80315444 003110A4  7C 7A 1B 78 */	mr r26, r3
/* 80315448 003110A8  7C 9B 23 78 */	mr r27, r4
/* 8031544C 003110AC  7C BD 2B 78 */	mr r29, r5
/* 80315450 003110B0  7C DF 33 78 */	mr r31, r6
/* 80315454 003110B4  7C FC 3B 78 */	mr r28, r7
/* 80315458 003110B8  40 82 00 1C */	bne lbl_80315474
/* 8031545C 003110BC  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315460 003110C0  38 00 00 0A */	li r0, 0xa
/* 80315464 003110C4  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315468 003110C8  38 60 00 0A */	li r3, 0xa
/* 8031546C 003110CC  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315470 003110D0  48 00 01 FC */	b lbl_8031566C
lbl_80315474:
/* 80315474 003110D4  3C 60 80 58 */	lis r3, lbl_8057F5C8@ha
/* 80315478 003110D8  38 00 00 00 */	li r0, 0
/* 8031547C 003110DC  38 63 F5 C8 */	addi r3, r3, lbl_8057F5C8@l
/* 80315480 003110E0  90 07 00 00 */	stw r0, 0(r7)
/* 80315484 003110E4  7C 03 30 40 */	cmplw r3, r6
/* 80315488 003110E8  41 81 00 14 */	bgt lbl_8031549C
/* 8031548C 003110EC  3C 63 00 02 */	addis r3, r3, 2
/* 80315490 003110F0  38 03 7F B8 */	addi r0, r3, 0x7fb8
/* 80315494 003110F4  7C 00 30 40 */	cmplw r0, r6
/* 80315498 003110F8  40 80 00 1C */	bge lbl_803154B4
lbl_8031549C:
/* 8031549C 003110FC  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803154A0 00311100  38 00 00 0A */	li r0, 0xa
/* 803154A4 00311104  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803154A8 00311108  38 60 00 0A */	li r3, 0xa
/* 803154AC 0031110C  90 04 00 1C */	stw r0, 0x1c(r4)
/* 803154B0 00311110  48 00 01 BC */	b lbl_8031566C
lbl_803154B4:
/* 803154B4 00311114  2C 06 00 00 */	cmpwi r6, 0
/* 803154B8 00311118  40 82 00 0C */	bne lbl_803154C4
/* 803154BC 0031111C  3B C0 00 00 */	li r30, 0
/* 803154C0 00311120  48 00 00 0C */	b lbl_803154CC
lbl_803154C4:
/* 803154C4 00311124  80 66 00 08 */	lwz r3, 8(r6)
/* 803154C8 00311128  83 C3 02 68 */	lwz r30, 0x268(r3)
lbl_803154CC:
/* 803154CC 0031112C  2C 1E 00 00 */	cmpwi r30, 0
/* 803154D0 00311130  40 82 00 2C */	bne lbl_803154FC
/* 803154D4 00311134  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803154D8 00311138  38 00 00 26 */	li r0, 0x26
/* 803154DC 0031113C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803154E0 00311140  38 60 00 26 */	li r3, 0x26
/* 803154E4 00311144  90 04 00 1C */	stw r0, 0x1c(r4)
/* 803154E8 00311148  80 86 00 08 */	lwz r4, 8(r6)
/* 803154EC 0031114C  80 84 00 38 */	lwz r4, 0x38(r4)
/* 803154F0 00311150  90 04 18 6C */	stw r0, 0x186c(r4)
/* 803154F4 00311154  90 06 00 18 */	stw r0, 0x18(r6)
/* 803154F8 00311158  48 00 01 74 */	b lbl_8031566C
lbl_803154FC:
/* 803154FC 0031115C  7F C3 F3 78 */	mr r3, r30
/* 80315500 00311160  48 00 40 29 */	bl VFiPFVOL_CheckForWrite
/* 80315504 00311164  2C 03 00 00 */	cmpwi r3, 0
/* 80315508 00311168  41 82 00 18 */	beq lbl_80315520
/* 8031550C 0031116C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315510 00311170  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315514 00311174  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80315518 00311178  90 7E 18 6C */	stw r3, 0x186c(r30)
/* 8031551C 0031117C  48 00 01 50 */	b lbl_8031566C
lbl_80315520:
/* 80315520 00311180  2C 1F 00 00 */	cmpwi r31, 0
/* 80315524 00311184  41 82 00 34 */	beq lbl_80315558
/* 80315528 00311188  80 7F 00 08 */	lwz r3, 8(r31)
/* 8031552C 0031118C  2C 03 00 00 */	cmpwi r3, 0
/* 80315530 00311190  41 82 00 28 */	beq lbl_80315558
/* 80315534 00311194  80 1F 00 00 */	lwz r0, 0(r31)
/* 80315538 00311198  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8031553C 0031119C  41 82 00 1C */	beq lbl_80315558
/* 80315540 003111A0  80 03 00 00 */	lwz r0, 0(r3)
/* 80315544 003111A4  54 03 07 FE */	clrlwi r3, r0, 0x1f
/* 80315548 003111A8  2C 83 00 00 */	cmpwi cr1, r3, 0
/* 8031554C 003111AC  41 86 00 0C */	beq cr1, lbl_80315558
/* 80315550 003111B0  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80315554 003111B4  40 82 00 20 */	bne lbl_80315574
lbl_80315558:
/* 80315558 003111B8  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 8031555C 003111BC  38 00 00 26 */	li r0, 0x26
/* 80315560 003111C0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315564 003111C4  38 60 00 26 */	li r3, 0x26
/* 80315568 003111C8  90 04 00 1C */	stw r0, 0x1c(r4)
/* 8031556C 003111CC  90 1E 18 6C */	stw r0, 0x186c(r30)
/* 80315570 003111D0  48 00 00 FC */	b lbl_8031566C
lbl_80315574:
/* 80315574 003111D4  41 86 00 08 */	beq cr1, lbl_8031557C
/* 80315578 003111D8  40 82 00 20 */	bne lbl_80315598
lbl_8031557C:
/* 8031557C 003111DC  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315580 003111E0  38 00 00 26 */	li r0, 0x26
/* 80315584 003111E4  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315588 003111E8  38 60 00 26 */	li r3, 0x26
/* 8031558C 003111EC  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315590 003111F0  90 1E 18 6C */	stw r0, 0x186c(r30)
/* 80315594 003111F4  48 00 00 D8 */	b lbl_8031566C
lbl_80315598:
/* 80315598 003111F8  2C 1A 00 00 */	cmpwi r26, 0
/* 8031559C 003111FC  41 82 00 14 */	beq lbl_803155B0
/* 803155A0 00311200  2C 1D 00 00 */	cmpwi r29, 0
/* 803155A4 00311204  41 82 00 0C */	beq lbl_803155B0
/* 803155A8 00311208  2C 1B 00 00 */	cmpwi r27, 0
/* 803155AC 0031120C  40 82 00 2C */	bne lbl_803155D8
lbl_803155B0:
/* 803155B0 00311210  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803155B4 00311214  38 00 00 0A */	li r0, 0xa
/* 803155B8 00311218  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803155BC 0031121C  38 60 00 0A */	li r3, 0xa
/* 803155C0 00311220  90 04 00 1C */	stw r0, 0x1c(r4)
/* 803155C4 00311224  80 9F 00 08 */	lwz r4, 8(r31)
/* 803155C8 00311228  80 84 00 38 */	lwz r4, 0x38(r4)
/* 803155CC 0031122C  90 04 18 6C */	stw r0, 0x186c(r4)
/* 803155D0 00311230  90 1F 00 18 */	stw r0, 0x18(r31)
/* 803155D4 00311234  48 00 00 98 */	b lbl_8031566C
lbl_803155D8:
/* 803155D8 00311238  93 FE 16 08 */	stw r31, 0x1608(r30)
/* 803155DC 0031123C  7F C3 F3 78 */	mr r3, r30
/* 803155E0 00311240  7F 44 D3 78 */	mr r4, r26
/* 803155E4 00311244  7F 65 DB 78 */	mr r5, r27
/* 803155E8 00311248  7F A6 EB 78 */	mr r6, r29
/* 803155EC 0031124C  7F E7 FB 78 */	mr r7, r31
/* 803155F0 00311250  39 01 00 08 */	addi r8, r1, 8
/* 803155F4 00311254  4B FF F2 DD */	bl VFiPFFILE_p_fwrite
/* 803155F8 00311258  80 81 00 08 */	lwz r4, 8(r1)
/* 803155FC 0031125C  2C 03 00 00 */	cmpwi r3, 0
/* 80315600 00311260  38 00 00 00 */	li r0, 0
/* 80315604 00311264  7C 7D 1B 78 */	mr r29, r3
/* 80315608 00311268  90 9C 00 00 */	stw r4, 0(r28)
/* 8031560C 0031126C  90 1E 16 08 */	stw r0, 0x1608(r30)
/* 80315610 00311270  41 82 00 20 */	beq lbl_80315630
/* 80315614 00311274  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315618 00311278  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 8031561C 0031127C  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80315620 00311280  80 9F 00 08 */	lwz r4, 8(r31)
/* 80315624 00311284  80 84 00 38 */	lwz r4, 0x38(r4)
/* 80315628 00311288  90 64 18 6C */	stw r3, 0x186c(r4)
/* 8031562C 0031128C  90 7F 00 18 */	stw r3, 0x18(r31)
lbl_80315630:
/* 80315630 00311290  80 01 00 08 */	lwz r0, 8(r1)
/* 80315634 00311294  2C 00 00 00 */	cmpwi r0, 0
/* 80315638 00311298  41 82 00 30 */	beq lbl_80315668
/* 8031563C 0031129C  80 9F 00 08 */	lwz r4, 8(r31)
/* 80315640 003112A0  38 64 02 62 */	addi r3, r4, 0x262
/* 80315644 003112A4  38 84 02 60 */	addi r4, r4, 0x260
/* 80315648 003112A8  4B FF 75 31 */	bl VFiPFENT_getcurrentDateTimeForEnt
/* 8031564C 003112AC  80 7F 00 08 */	lwz r3, 8(r31)
/* 80315650 003112B0  A0 03 02 62 */	lhz r0, 0x262(r3)
/* 80315654 003112B4  B0 03 02 5E */	sth r0, 0x25e(r3)
/* 80315658 003112B8  80 7F 00 08 */	lwz r3, 8(r31)
/* 8031565C 003112BC  80 03 00 00 */	lwz r0, 0(r3)
/* 80315660 003112C0  60 00 00 04 */	ori r0, r0, 4
/* 80315664 003112C4  90 03 00 00 */	stw r0, 0(r3)
lbl_80315668:
/* 80315668 003112C8  7F A3 EB 78 */	mr r3, r29
lbl_8031566C:
/* 8031566C 003112CC  39 61 00 30 */	addi r11, r1, 0x30
/* 80315670 003112D0  4B EB 1B 01 */	bl _restgpr_26
/* 80315674 003112D4  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80315678 003112D8  7C 08 03 A6 */	mtlr r0
/* 8031567C 003112DC  38 21 00 30 */	addi r1, r1, 0x30
/* 80315680 003112E0  4E 80 00 20 */	blr

.global VFiPFFILE_fseek
VFiPFFILE_fseek:
/* 80315684 003112E4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80315688 003112E8  7C 08 02 A6 */	mflr r0
/* 8031568C 003112EC  3C C0 80 58 */	lis r6, lbl_8057F5C8@ha
/* 80315690 003112F0  90 01 00 24 */	stw r0, 0x24(r1)
/* 80315694 003112F4  38 C6 F5 C8 */	addi r6, r6, lbl_8057F5C8@l
/* 80315698 003112F8  7C 06 18 40 */	cmplw r6, r3
/* 8031569C 003112FC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 803156A0 00311300  7C 7F 1B 78 */	mr r31, r3
/* 803156A4 00311304  93 C1 00 18 */	stw r30, 0x18(r1)
/* 803156A8 00311308  93 A1 00 14 */	stw r29, 0x14(r1)
/* 803156AC 0031130C  7C BD 2B 78 */	mr r29, r5
/* 803156B0 00311310  93 81 00 10 */	stw r28, 0x10(r1)
/* 803156B4 00311314  7C 9C 23 78 */	mr r28, r4
/* 803156B8 00311318  41 81 00 14 */	bgt lbl_803156CC
/* 803156BC 0031131C  3C 86 00 02 */	addis r4, r6, 2
/* 803156C0 00311320  38 04 7F B8 */	addi r0, r4, 0x7fb8
/* 803156C4 00311324  7C 00 18 40 */	cmplw r0, r3
/* 803156C8 00311328  40 80 00 1C */	bge lbl_803156E4
lbl_803156CC:
/* 803156CC 0031132C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803156D0 00311330  38 00 00 0A */	li r0, 0xa
/* 803156D4 00311334  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803156D8 00311338  38 60 00 0A */	li r3, 0xa
/* 803156DC 0031133C  90 04 00 1C */	stw r0, 0x1c(r4)
/* 803156E0 00311340  48 00 02 F8 */	b lbl_803159D8
lbl_803156E4:
/* 803156E4 00311344  2C 03 00 00 */	cmpwi r3, 0
/* 803156E8 00311348  40 82 00 0C */	bne lbl_803156F4
/* 803156EC 0031134C  3B C0 00 00 */	li r30, 0
/* 803156F0 00311350  48 00 00 0C */	b lbl_803156FC
lbl_803156F4:
/* 803156F4 00311354  80 63 00 08 */	lwz r3, 8(r3)
/* 803156F8 00311358  83 C3 02 68 */	lwz r30, 0x268(r3)
lbl_803156FC:
/* 803156FC 0031135C  2C 1E 00 00 */	cmpwi r30, 0
/* 80315700 00311360  40 82 00 1C */	bne lbl_8031571C
/* 80315704 00311364  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315708 00311368  38 00 00 26 */	li r0, 0x26
/* 8031570C 0031136C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315710 00311370  38 60 00 26 */	li r3, 0x26
/* 80315714 00311374  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315718 00311378  48 00 02 C0 */	b lbl_803159D8
lbl_8031571C:
/* 8031571C 0031137C  7F C3 F3 78 */	mr r3, r30
/* 80315720 00311380  48 00 3C 4D */	bl VFiPFVOL_CheckForRead
/* 80315724 00311384  2C 03 00 00 */	cmpwi r3, 0
/* 80315728 00311388  41 82 00 18 */	beq lbl_80315740
/* 8031572C 0031138C  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315730 00311390  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315734 00311394  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80315738 00311398  90 7E 18 6C */	stw r3, 0x186c(r30)
/* 8031573C 0031139C  48 00 02 9C */	b lbl_803159D8
lbl_80315740:
/* 80315740 003113A0  2C 1F 00 00 */	cmpwi r31, 0
/* 80315744 003113A4  41 82 00 34 */	beq lbl_80315778
/* 80315748 003113A8  80 9F 00 08 */	lwz r4, 8(r31)
/* 8031574C 003113AC  2C 04 00 00 */	cmpwi r4, 0
/* 80315750 003113B0  41 82 00 28 */	beq lbl_80315778
/* 80315754 003113B4  80 1F 00 00 */	lwz r0, 0(r31)
/* 80315758 003113B8  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8031575C 003113BC  41 82 00 1C */	beq lbl_80315778
/* 80315760 003113C0  80 04 00 00 */	lwz r0, 0(r4)
/* 80315764 003113C4  54 05 07 FE */	clrlwi r5, r0, 0x1f
/* 80315768 003113C8  2C 85 00 00 */	cmpwi cr1, r5, 0
/* 8031576C 003113CC  41 86 00 0C */	beq cr1, lbl_80315778
/* 80315770 003113D0  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80315774 003113D4  40 82 00 20 */	bne lbl_80315794
lbl_80315778:
/* 80315778 003113D8  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 8031577C 003113DC  38 00 00 26 */	li r0, 0x26
/* 80315780 003113E0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315784 003113E4  38 60 00 26 */	li r3, 0x26
/* 80315788 003113E8  90 04 00 1C */	stw r0, 0x1c(r4)
/* 8031578C 003113EC  90 1E 18 6C */	stw r0, 0x186c(r30)
/* 80315790 003113F0  48 00 02 48 */	b lbl_803159D8
lbl_80315794:
/* 80315794 003113F4  41 86 00 08 */	beq cr1, lbl_8031579C
/* 80315798 003113F8  40 82 00 20 */	bne lbl_803157B8
lbl_8031579C:
/* 8031579C 003113FC  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803157A0 00311400  38 00 00 26 */	li r0, 0x26
/* 803157A4 00311404  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 803157A8 00311408  38 60 00 26 */	li r3, 0x26
/* 803157AC 0031140C  90 04 00 1C */	stw r0, 0x1c(r4)
/* 803157B0 00311410  90 1E 18 6C */	stw r0, 0x186c(r30)
/* 803157B4 00311414  48 00 02 24 */	b lbl_803159D8
lbl_803157B8:
/* 803157B8 00311418  2C 1D 00 01 */	cmpwi r29, 1
/* 803157BC 0031141C  41 82 00 20 */	beq lbl_803157DC
/* 803157C0 00311420  40 80 00 10 */	bge lbl_803157D0
/* 803157C4 00311424  2C 1D 00 00 */	cmpwi r29, 0
/* 803157C8 00311428  40 80 00 1C */	bge lbl_803157E4
/* 803157CC 0031142C  48 00 00 28 */	b lbl_803157F4
lbl_803157D0:
/* 803157D0 00311430  2C 1D 00 03 */	cmpwi r29, 3
/* 803157D4 00311434  40 80 00 20 */	bge lbl_803157F4
/* 803157D8 00311438  48 00 00 14 */	b lbl_803157EC
lbl_803157DC:
/* 803157DC 0031143C  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 803157E0 00311440  48 00 00 3C */	b lbl_8031581C
lbl_803157E4:
/* 803157E4 00311444  38 00 00 00 */	li r0, 0
/* 803157E8 00311448  48 00 00 34 */	b lbl_8031581C
lbl_803157EC:
/* 803157EC 0031144C  80 04 02 64 */	lwz r0, 0x264(r4)
/* 803157F0 00311450  48 00 00 2C */	b lbl_8031581C
lbl_803157F4:
/* 803157F4 00311454  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 803157F8 00311458  38 00 00 0A */	li r0, 0xa
/* 803157FC 0031145C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315800 00311460  38 60 00 0A */	li r3, 0xa
/* 80315804 00311464  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315808 00311468  80 9F 00 08 */	lwz r4, 8(r31)
/* 8031580C 0031146C  80 84 00 38 */	lwz r4, 0x38(r4)
/* 80315810 00311470  90 04 18 6C */	stw r0, 0x186c(r4)
/* 80315814 00311474  90 1F 00 18 */	stw r0, 0x18(r31)
/* 80315818 00311478  48 00 01 C0 */	b lbl_803159D8
lbl_8031581C:
/* 8031581C 0031147C  57 84 00 01 */	rlwinm. r4, r28, 0, 0, 0
/* 80315820 00311480  41 82 00 48 */	beq lbl_80315868
/* 80315824 00311484  7F 84 E0 F8 */	nor r4, r28, r28
/* 80315828 00311488  54 84 00 7E */	clrlwi r4, r4, 1
/* 8031582C 0031148C  38 84 00 01 */	addi r4, r4, 1
/* 80315830 00311490  7C 00 20 40 */	cmplw r0, r4
/* 80315834 00311494  40 80 00 2C */	bge lbl_80315860
/* 80315838 00311498  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 8031583C 0031149C  38 00 00 0A */	li r0, 0xa
/* 80315840 003114A0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315844 003114A4  38 60 00 0A */	li r3, 0xa
/* 80315848 003114A8  90 04 00 1C */	stw r0, 0x1c(r4)
/* 8031584C 003114AC  80 9F 00 08 */	lwz r4, 8(r31)
/* 80315850 003114B0  80 84 00 38 */	lwz r4, 0x38(r4)
/* 80315854 003114B4  90 04 18 6C */	stw r0, 0x186c(r4)
/* 80315858 003114B8  90 1F 00 18 */	stw r0, 0x18(r31)
/* 8031585C 003114BC  48 00 01 7C */	b lbl_803159D8
lbl_80315860:
/* 80315860 003114C0  7C 04 00 50 */	subf r0, r4, r0
/* 80315864 003114C4  48 00 00 3C */	b lbl_803158A0
lbl_80315868:
/* 80315868 003114C8  20 80 FF FF */	subfic r4, r0, -1
/* 8031586C 003114CC  7C 1C 20 40 */	cmplw r28, r4
/* 80315870 003114D0  40 81 00 2C */	ble lbl_8031589C
/* 80315874 003114D4  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315878 003114D8  38 00 00 25 */	li r0, 0x25
/* 8031587C 003114DC  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315880 003114E0  38 60 00 25 */	li r3, 0x25
/* 80315884 003114E4  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315888 003114E8  80 9F 00 08 */	lwz r4, 8(r31)
/* 8031588C 003114EC  80 84 00 38 */	lwz r4, 0x38(r4)
/* 80315890 003114F0  90 04 18 6C */	stw r0, 0x186c(r4)
/* 80315894 003114F4  90 1F 00 18 */	stw r0, 0x18(r31)
/* 80315898 003114F8  48 00 01 40 */	b lbl_803159D8
lbl_8031589C:
/* 8031589C 003114FC  7C 00 E2 14 */	add r0, r0, r28
lbl_803158A0:
/* 803158A0 00311500  38 80 FF FF */	li r4, -1
/* 803158A4 00311504  2C 1F 00 00 */	cmpwi r31, 0
/* 803158A8 00311508  90 9F 00 20 */	stw r4, 0x20(r31)
/* 803158AC 0031150C  40 82 00 0C */	bne lbl_803158B8
/* 803158B0 00311510  38 A0 00 00 */	li r5, 0
/* 803158B4 00311514  48 00 00 0C */	b lbl_803158C0
lbl_803158B8:
/* 803158B8 00311518  80 9F 00 08 */	lwz r4, 8(r31)
/* 803158BC 0031151C  80 A4 02 68 */	lwz r5, 0x268(r4)
lbl_803158C0:
/* 803158C0 00311520  A0 85 00 00 */	lhz r4, 0(r5)
/* 803158C4 00311524  80 FF 00 1C */	lwz r7, 0x1c(r31)
/* 803158C8 00311528  38 84 FF FF */	addi r4, r4, -1
/* 803158CC 0031152C  88 C5 00 20 */	lbz r6, 0x20(r5)
/* 803158D0 00311530  7C E5 20 38 */	and r5, r7, r4
/* 803158D4 00311534  7C 85 00 D0 */	neg r4, r5
/* 803158D8 00311538  7C E6 34 30 */	srw r6, r7, r6
/* 803158DC 0031153C  7C 84 2B 78 */	or r4, r4, r5
/* 803158E0 00311540  54 84 0F FE */	srwi r4, r4, 0x1f
/* 803158E4 00311544  7C 86 22 15 */	add. r4, r6, r4
/* 803158E8 00311548  41 82 00 0C */	beq lbl_803158F4
/* 803158EC 0031154C  38 80 FF FF */	li r4, -1
/* 803158F0 00311550  90 9F 00 20 */	stw r4, 0x20(r31)
lbl_803158F4:
/* 803158F4 00311554  38 80 00 00 */	li r4, 0
/* 803158F8 00311558  2C 1F 00 00 */	cmpwi r31, 0
/* 803158FC 0031155C  90 9F 00 1C */	stw r4, 0x1c(r31)
/* 80315900 00311560  40 82 00 0C */	bne lbl_8031590C
/* 80315904 00311564  38 C0 00 00 */	li r6, 0
/* 80315908 00311568  48 00 00 0C */	b lbl_80315914
lbl_8031590C:
/* 8031590C 0031156C  80 9F 00 08 */	lwz r4, 8(r31)
/* 80315910 00311570  80 C4 02 68 */	lwz r6, 0x268(r4)
lbl_80315914:
/* 80315914 00311574  80 BF 00 1C */	lwz r5, 0x1c(r31)
/* 80315918 00311578  2C 1F 00 00 */	cmpwi r31, 0
/* 8031591C 0031157C  88 86 00 20 */	lbz r4, 0x20(r6)
/* 80315920 00311580  7C A4 24 30 */	srw r4, r5, r4
/* 80315924 00311584  90 9F 00 24 */	stw r4, 0x24(r31)
/* 80315928 00311588  A0 86 00 00 */	lhz r4, 0(r6)
/* 8031592C 0031158C  38 84 FF FF */	addi r4, r4, -1
/* 80315930 00311590  7C A4 20 38 */	and r4, r5, r4
/* 80315934 00311594  B0 9F 00 28 */	sth r4, 0x28(r31)
/* 80315938 00311598  40 82 00 0C */	bne lbl_80315944
/* 8031593C 0031159C  38 A0 00 00 */	li r5, 0
/* 80315940 003115A0  48 00 00 0C */	b lbl_8031594C
lbl_80315944:
/* 80315944 003115A4  80 9F 00 08 */	lwz r4, 8(r31)
/* 80315948 003115A8  80 A4 02 68 */	lwz r5, 0x268(r4)
lbl_8031594C:
/* 8031594C 003115AC  A0 85 00 00 */	lhz r4, 0(r5)
/* 80315950 003115B0  80 DF 00 1C */	lwz r6, 0x1c(r31)
/* 80315954 003115B4  38 84 FF FF */	addi r4, r4, -1
/* 80315958 003115B8  89 45 00 20 */	lbz r10, 0x20(r5)
/* 8031595C 003115BC  7C C9 20 38 */	and r9, r6, r4
/* 80315960 003115C0  7C 05 20 38 */	and r5, r0, r4
/* 80315964 003115C4  7C C7 54 30 */	srw r7, r6, r10
/* 80315968 003115C8  7D 09 00 D0 */	neg r8, r9
/* 8031596C 003115CC  7C 06 54 30 */	srw r6, r0, r10
/* 80315970 003115D0  7C 85 00 D0 */	neg r4, r5
/* 80315974 003115D4  7C 84 2B 78 */	or r4, r4, r5
/* 80315978 003115D8  7D 08 4B 78 */	or r8, r8, r9
/* 8031597C 003115DC  55 05 0F FE */	srwi r5, r8, 0x1f
/* 80315980 003115E0  54 84 0F FE */	srwi r4, r4, 0x1f
/* 80315984 003115E4  7C A7 2A 14 */	add r5, r7, r5
/* 80315988 003115E8  7C 86 22 14 */	add r4, r6, r4
/* 8031598C 003115EC  7C 05 20 40 */	cmplw r5, r4
/* 80315990 003115F0  41 82 00 0C */	beq lbl_8031599C
/* 80315994 003115F4  38 80 FF FF */	li r4, -1
/* 80315998 003115F8  90 9F 00 20 */	stw r4, 0x20(r31)
lbl_8031599C:
/* 8031599C 003115FC  2C 1F 00 00 */	cmpwi r31, 0
/* 803159A0 00311600  90 1F 00 1C */	stw r0, 0x1c(r31)
/* 803159A4 00311604  40 82 00 0C */	bne lbl_803159B0
/* 803159A8 00311608  38 80 00 00 */	li r4, 0
/* 803159AC 0031160C  48 00 00 0C */	b lbl_803159B8
lbl_803159B0:
/* 803159B0 00311610  80 9F 00 08 */	lwz r4, 8(r31)
/* 803159B4 00311614  80 84 02 68 */	lwz r4, 0x268(r4)
lbl_803159B8:
/* 803159B8 00311618  80 BF 00 1C */	lwz r5, 0x1c(r31)
/* 803159BC 0031161C  88 04 00 20 */	lbz r0, 0x20(r4)
/* 803159C0 00311620  7C A0 04 30 */	srw r0, r5, r0
/* 803159C4 00311624  90 1F 00 24 */	stw r0, 0x24(r31)
/* 803159C8 00311628  A0 84 00 00 */	lhz r4, 0(r4)
/* 803159CC 0031162C  38 04 FF FF */	addi r0, r4, -1
/* 803159D0 00311630  7C A0 00 38 */	and r0, r5, r0
/* 803159D4 00311634  B0 1F 00 28 */	sth r0, 0x28(r31)
lbl_803159D8:
/* 803159D8 00311638  80 01 00 24 */	lwz r0, 0x24(r1)
/* 803159DC 0031163C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 803159E0 00311640  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 803159E4 00311644  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 803159E8 00311648  83 81 00 10 */	lwz r28, 0x10(r1)
/* 803159EC 0031164C  7C 08 03 A6 */	mtlr r0
/* 803159F0 00311650  38 21 00 20 */	addi r1, r1, 0x20
/* 803159F4 00311654  4E 80 00 20 */	blr

.global VFiPFFILE_finfo
VFiPFFILE_finfo:
/* 803159F8 00311658  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 803159FC 0031165C  7C 08 02 A6 */	mflr r0
/* 80315A00 00311660  3C A0 80 58 */	lis r5, lbl_8057F5C8@ha
/* 80315A04 00311664  90 01 00 44 */	stw r0, 0x44(r1)
/* 80315A08 00311668  38 A5 F5 C8 */	addi r5, r5, lbl_8057F5C8@l
/* 80315A0C 0031166C  7C 05 18 40 */	cmplw r5, r3
/* 80315A10 00311670  93 E1 00 3C */	stw r31, 0x3c(r1)
/* 80315A14 00311674  93 C1 00 38 */	stw r30, 0x38(r1)
/* 80315A18 00311678  7C 7E 1B 78 */	mr r30, r3
/* 80315A1C 0031167C  93 A1 00 34 */	stw r29, 0x34(r1)
/* 80315A20 00311680  7C 9D 23 78 */	mr r29, r4
/* 80315A24 00311684  41 81 00 14 */	bgt lbl_80315A38
/* 80315A28 00311688  3C 85 00 02 */	addis r4, r5, 2
/* 80315A2C 0031168C  38 04 7F B8 */	addi r0, r4, 0x7fb8
/* 80315A30 00311690  7C 00 18 40 */	cmplw r0, r3
/* 80315A34 00311694  40 80 00 1C */	bge lbl_80315A50
lbl_80315A38:
/* 80315A38 00311698  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315A3C 0031169C  38 00 00 0A */	li r0, 0xa
/* 80315A40 003116A0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315A44 003116A4  38 60 00 0A */	li r3, 0xa
/* 80315A48 003116A8  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315A4C 003116AC  48 00 01 C8 */	b lbl_80315C14
lbl_80315A50:
/* 80315A50 003116B0  2C 03 00 00 */	cmpwi r3, 0
/* 80315A54 003116B4  40 82 00 0C */	bne lbl_80315A60
/* 80315A58 003116B8  3B E0 00 00 */	li r31, 0
/* 80315A5C 003116BC  48 00 00 0C */	b lbl_80315A68
lbl_80315A60:
/* 80315A60 003116C0  80 63 00 08 */	lwz r3, 8(r3)
/* 80315A64 003116C4  83 E3 02 68 */	lwz r31, 0x268(r3)
lbl_80315A68:
/* 80315A68 003116C8  2C 1F 00 00 */	cmpwi r31, 0
/* 80315A6C 003116CC  40 82 00 1C */	bne lbl_80315A88
/* 80315A70 003116D0  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315A74 003116D4  38 00 00 26 */	li r0, 0x26
/* 80315A78 003116D8  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315A7C 003116DC  38 60 00 26 */	li r3, 0x26
/* 80315A80 003116E0  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315A84 003116E4  48 00 01 90 */	b lbl_80315C14
lbl_80315A88:
/* 80315A88 003116E8  7F E3 FB 78 */	mr r3, r31
/* 80315A8C 003116EC  48 00 38 E1 */	bl VFiPFVOL_CheckForRead
/* 80315A90 003116F0  2C 03 00 00 */	cmpwi r3, 0
/* 80315A94 003116F4  41 82 00 24 */	beq lbl_80315AB8
/* 80315A98 003116F8  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315A9C 003116FC  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315AA0 00311700  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80315AA4 00311704  80 9E 00 08 */	lwz r4, 8(r30)
/* 80315AA8 00311708  80 84 00 38 */	lwz r4, 0x38(r4)
/* 80315AAC 0031170C  90 64 18 6C */	stw r3, 0x186c(r4)
/* 80315AB0 00311710  90 7E 00 18 */	stw r3, 0x18(r30)
/* 80315AB4 00311714  48 00 01 60 */	b lbl_80315C14
lbl_80315AB8:
/* 80315AB8 00311718  2C 1E 00 00 */	cmpwi r30, 0
/* 80315ABC 0031171C  41 82 00 34 */	beq lbl_80315AF0
/* 80315AC0 00311720  80 7E 00 08 */	lwz r3, 8(r30)
/* 80315AC4 00311724  2C 03 00 00 */	cmpwi r3, 0
/* 80315AC8 00311728  41 82 00 28 */	beq lbl_80315AF0
/* 80315ACC 0031172C  80 1E 00 00 */	lwz r0, 0(r30)
/* 80315AD0 00311730  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80315AD4 00311734  41 82 00 1C */	beq lbl_80315AF0
/* 80315AD8 00311738  80 03 00 00 */	lwz r0, 0(r3)
/* 80315ADC 0031173C  54 03 07 FE */	clrlwi r3, r0, 0x1f
/* 80315AE0 00311740  2C 83 00 00 */	cmpwi cr1, r3, 0
/* 80315AE4 00311744  41 86 00 0C */	beq cr1, lbl_80315AF0
/* 80315AE8 00311748  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80315AEC 0031174C  40 82 00 20 */	bne lbl_80315B0C
lbl_80315AF0:
/* 80315AF0 00311750  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315AF4 00311754  38 00 00 26 */	li r0, 0x26
/* 80315AF8 00311758  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315AFC 0031175C  38 60 00 26 */	li r3, 0x26
/* 80315B00 00311760  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315B04 00311764  90 1F 18 6C */	stw r0, 0x186c(r31)
/* 80315B08 00311768  48 00 01 0C */	b lbl_80315C14
lbl_80315B0C:
/* 80315B0C 0031176C  41 86 00 08 */	beq cr1, lbl_80315B14
/* 80315B10 00311770  40 82 00 20 */	bne lbl_80315B30
lbl_80315B14:
/* 80315B14 00311774  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315B18 00311778  38 00 00 26 */	li r0, 0x26
/* 80315B1C 0031177C  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315B20 00311780  38 60 00 26 */	li r3, 0x26
/* 80315B24 00311784  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315B28 00311788  90 1F 18 6C */	stw r0, 0x186c(r31)
/* 80315B2C 0031178C  48 00 00 E8 */	b lbl_80315C14
lbl_80315B30:
/* 80315B30 00311790  2C 1D 00 00 */	cmpwi r29, 0
/* 80315B34 00311794  40 82 00 2C */	bne lbl_80315B60
/* 80315B38 00311798  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315B3C 0031179C  38 00 00 0A */	li r0, 0xa
/* 80315B40 003117A0  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315B44 003117A4  38 60 00 0A */	li r3, 0xa
/* 80315B48 003117A8  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80315B4C 003117AC  80 9E 00 08 */	lwz r4, 8(r30)
/* 80315B50 003117B0  80 84 00 38 */	lwz r4, 0x38(r4)
/* 80315B54 003117B4  90 04 18 6C */	stw r0, 0x186c(r4)
/* 80315B58 003117B8  90 1E 00 18 */	stw r0, 0x18(r30)
/* 80315B5C 003117BC  48 00 00 B8 */	b lbl_80315C14
lbl_80315B60:
/* 80315B60 003117C0  93 DF 16 08 */	stw r30, 0x1608(r31)
/* 80315B64 003117C4  7F C3 F3 78 */	mr r3, r30
/* 80315B68 003117C8  7F A4 EB 78 */	mr r4, r29
/* 80315B6C 003117CC  81 5E 00 1C */	lwz r10, 0x1c(r30)
/* 80315B70 003117D0  81 3E 00 20 */	lwz r9, 0x20(r30)
/* 80315B74 003117D4  81 1E 00 24 */	lwz r8, 0x24(r30)
/* 80315B78 003117D8  80 FE 00 28 */	lwz r7, 0x28(r30)
/* 80315B7C 003117DC  80 DE 00 0C */	lwz r6, 0xc(r30)
/* 80315B80 003117E0  80 BE 00 10 */	lwz r5, 0x10(r30)
/* 80315B84 003117E4  80 1E 00 14 */	lwz r0, 0x14(r30)
/* 80315B88 003117E8  91 41 00 18 */	stw r10, 0x18(r1)
/* 80315B8C 003117EC  91 21 00 1C */	stw r9, 0x1c(r1)
/* 80315B90 003117F0  91 01 00 20 */	stw r8, 0x20(r1)
/* 80315B94 003117F4  90 E1 00 24 */	stw r7, 0x24(r1)
/* 80315B98 003117F8  90 C1 00 08 */	stw r6, 8(r1)
/* 80315B9C 003117FC  90 A1 00 0C */	stw r5, 0xc(r1)
/* 80315BA0 00311800  90 01 00 10 */	stw r0, 0x10(r1)
/* 80315BA4 00311804  4B FF EF 81 */	bl VFiPFFILE_p_finfo
/* 80315BA8 00311808  81 41 00 18 */	lwz r10, 0x18(r1)
/* 80315BAC 0031180C  2C 03 00 00 */	cmpwi r3, 0
/* 80315BB0 00311810  81 21 00 1C */	lwz r9, 0x1c(r1)
/* 80315BB4 00311814  38 00 00 00 */	li r0, 0
/* 80315BB8 00311818  81 01 00 20 */	lwz r8, 0x20(r1)
/* 80315BBC 0031181C  80 E1 00 24 */	lwz r7, 0x24(r1)
/* 80315BC0 00311820  80 C1 00 08 */	lwz r6, 8(r1)
/* 80315BC4 00311824  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 80315BC8 00311828  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80315BCC 0031182C  91 5E 00 1C */	stw r10, 0x1c(r30)
/* 80315BD0 00311830  91 3E 00 20 */	stw r9, 0x20(r30)
/* 80315BD4 00311834  91 1E 00 24 */	stw r8, 0x24(r30)
/* 80315BD8 00311838  90 FE 00 28 */	stw r7, 0x28(r30)
/* 80315BDC 0031183C  90 DE 00 0C */	stw r6, 0xc(r30)
/* 80315BE0 00311840  90 BE 00 10 */	stw r5, 0x10(r30)
/* 80315BE4 00311844  90 9E 00 14 */	stw r4, 0x14(r30)
/* 80315BE8 00311848  90 1F 16 08 */	stw r0, 0x1608(r31)
/* 80315BEC 0031184C  41 82 00 24 */	beq lbl_80315C10
/* 80315BF0 00311850  3C 80 80 58 */	lis r4, lbl_8057F5C8@ha
/* 80315BF4 00311854  38 84 F5 C8 */	addi r4, r4, lbl_8057F5C8@l
/* 80315BF8 00311858  90 64 00 1C */	stw r3, 0x1c(r4)
/* 80315BFC 0031185C  80 9E 00 08 */	lwz r4, 8(r30)
/* 80315C00 00311860  80 84 00 38 */	lwz r4, 0x38(r4)
/* 80315C04 00311864  90 64 18 6C */	stw r3, 0x186c(r4)
/* 80315C08 00311868  90 7E 00 18 */	stw r3, 0x18(r30)
/* 80315C0C 0031186C  48 00 00 08 */	b lbl_80315C14
lbl_80315C10:
/* 80315C10 00311870  38 60 00 00 */	li r3, 0
lbl_80315C14:
/* 80315C14 00311874  80 01 00 44 */	lwz r0, 0x44(r1)
/* 80315C18 00311878  83 E1 00 3C */	lwz r31, 0x3c(r1)
/* 80315C1C 0031187C  83 C1 00 38 */	lwz r30, 0x38(r1)
/* 80315C20 00311880  83 A1 00 34 */	lwz r29, 0x34(r1)
/* 80315C24 00311884  7C 08 03 A6 */	mtlr r0
/* 80315C28 00311888  38 21 00 40 */	addi r1, r1, 0x40
/* 80315C2C 0031188C  4E 80 00 20 */	blr