summaryrefslogtreecommitdiff
path: root/asm/SDK/VF/pf_fat.s
blob: 8845e523b3449c39e73232db6c2bd1d72bdab216 (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
.include "macros.inc"

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

.global VFiPFFAT_ReadFATSector
VFiPFFAT_ReadFATSector:
/* 8030E538 0030A198  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8030E53C 0030A19C  7C 08 02 A6 */	mflr r0
/* 8030E540 0030A1A0  90 01 00 24 */	stw r0, 0x24(r1)
/* 8030E544 0030A1A4  39 61 00 20 */	addi r11, r1, 0x20
/* 8030E548 0030A1A8  4B EB 8B E1 */	bl _savegpr_27
/* 8030E54C 0030A1AC  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030E550 0030A1B0  7C 7B 1B 78 */	mr r27, r3
/* 8030E554 0030A1B4  7C 9C 23 78 */	mr r28, r4
/* 8030E558 0030A1B8  2C 00 00 01 */	cmpwi r0, 1
/* 8030E55C 0030A1BC  41 82 00 30 */	beq lbl_8030E58C
/* 8030E560 0030A1C0  40 80 00 10 */	bge lbl_8030E570
/* 8030E564 0030A1C4  2C 00 00 00 */	cmpwi r0, 0
/* 8030E568 0030A1C8  40 80 00 14 */	bge lbl_8030E57C
/* 8030E56C 0030A1CC  48 00 00 30 */	b lbl_8030E59C
lbl_8030E570:
/* 8030E570 0030A1D0  2C 00 00 03 */	cmpwi r0, 3
/* 8030E574 0030A1D4  40 80 00 28 */	bge lbl_8030E59C
/* 8030E578 0030A1D8  48 00 00 1C */	b lbl_8030E594
lbl_8030E57C:
/* 8030E57C 0030A1DC  54 A0 F8 7E */	srwi r0, r5, 1
/* 8030E580 0030A1E0  7C 05 02 14 */	add r0, r5, r0
/* 8030E584 0030A1E4  54 06 04 3E */	clrlwi r6, r0, 0x10
/* 8030E588 0030A1E8  48 00 00 1C */	b lbl_8030E5A4
lbl_8030E58C:
/* 8030E58C 0030A1EC  54 A6 08 3C */	slwi r6, r5, 1
/* 8030E590 0030A1F0  48 00 00 14 */	b lbl_8030E5A4
lbl_8030E594:
/* 8030E594 0030A1F4  54 A6 10 3A */	slwi r6, r5, 2
/* 8030E598 0030A1F8  48 00 00 0C */	b lbl_8030E5A4
lbl_8030E59C:
/* 8030E59C 0030A1FC  38 60 00 0F */	li r3, 0xf
/* 8030E5A0 0030A200  48 00 00 B0 */	b lbl_8030E650
lbl_8030E5A4:
/* 8030E5A4 0030A204  A0 A3 00 18 */	lhz r5, 0x18(r3)
/* 8030E5A8 0030A208  3B C0 00 01 */	li r30, 1
/* 8030E5AC 0030A20C  88 83 00 20 */	lbz r4, 0x20(r3)
/* 8030E5B0 0030A210  54 A0 06 31 */	rlwinm. r0, r5, 0, 0x18, 0x18
/* 8030E5B4 0030A214  80 63 00 28 */	lwz r3, 0x28(r3)
/* 8030E5B8 0030A218  7C C0 24 30 */	srw r0, r6, r4
/* 8030E5BC 0030A21C  7C 03 02 14 */	add r0, r3, r0
/* 8030E5C0 0030A220  54 1D 04 3E */	clrlwi r29, r0, 0x10
/* 8030E5C4 0030A224  41 82 00 08 */	beq lbl_8030E5CC
/* 8030E5C8 0030A228  54 BE 07 7E */	clrlwi r30, r5, 0x1d
lbl_8030E5CC:
/* 8030E5CC 0030A22C  7F 63 DB 78 */	mr r3, r27
/* 8030E5D0 0030A230  7F A4 EB 78 */	mr r4, r29
/* 8030E5D4 0030A234  7F 85 E3 78 */	mr r5, r28
/* 8030E5D8 0030A238  4B FF C2 75 */	bl VFiPFCACHE_ReadFATPage
/* 8030E5DC 0030A23C  2C 03 10 00 */	cmpwi r3, 0x1000
/* 8030E5E0 0030A240  7C 7F 1B 78 */	mr r31, r3
/* 8030E5E4 0030A244  40 82 00 50 */	bne lbl_8030E634
/* 8030E5E8 0030A248  81 9B 18 90 */	lwz r12, 0x1890(r27)
/* 8030E5EC 0030A24C  2C 0C 00 00 */	cmpwi r12, 0
/* 8030E5F0 0030A250  41 82 00 44 */	beq lbl_8030E634
/* 8030E5F4 0030A254  80 7B 18 70 */	lwz r3, 0x1870(r27)
/* 8030E5F8 0030A258  7D 89 03 A6 */	mtctr r12
/* 8030E5FC 0030A25C  4E 80 04 21 */	bctrl
/* 8030E600 0030A260  2C 03 00 00 */	cmpwi r3, 0
/* 8030E604 0030A264  41 82 00 40 */	beq lbl_8030E644
/* 8030E608 0030A268  2C 03 00 01 */	cmpwi r3, 1
/* 8030E60C 0030A26C  40 82 00 28 */	bne lbl_8030E634
/* 8030E610 0030A270  88 1B 00 22 */	lbz r0, 0x22(r27)
/* 8030E614 0030A274  28 00 00 02 */	cmplwi r0, 2
/* 8030E618 0030A278  41 80 00 1C */	blt lbl_8030E634
/* 8030E61C 0030A27C  7C 1E 00 40 */	cmplw r30, r0
/* 8030E620 0030A280  40 80 00 14 */	bge lbl_8030E634
/* 8030E624 0030A284  80 1B 00 0C */	lwz r0, 0xc(r27)
/* 8030E628 0030A288  3B DE 00 01 */	addi r30, r30, 1
/* 8030E62C 0030A28C  7F BD 02 14 */	add r29, r29, r0
/* 8030E630 0030A290  48 00 00 14 */	b lbl_8030E644
lbl_8030E634:
/* 8030E634 0030A294  2C 1F 00 00 */	cmpwi r31, 0
/* 8030E638 0030A298  41 82 00 0C */	beq lbl_8030E644
/* 8030E63C 0030A29C  7F E3 FB 78 */	mr r3, r31
/* 8030E640 0030A2A0  48 00 00 10 */	b lbl_8030E650
lbl_8030E644:
/* 8030E644 0030A2A4  2C 1F 00 00 */	cmpwi r31, 0
/* 8030E648 0030A2A8  40 82 FF 84 */	bne lbl_8030E5CC
/* 8030E64C 0030A2AC  7F E3 FB 78 */	mr r3, r31
lbl_8030E650:
/* 8030E650 0030A2B0  39 61 00 20 */	addi r11, r1, 0x20
/* 8030E654 0030A2B4  4B EB 8B 21 */	bl _restgpr_27
/* 8030E658 0030A2B8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8030E65C 0030A2BC  7C 08 03 A6 */	mtlr r0
/* 8030E660 0030A2C0  38 21 00 20 */	addi r1, r1, 0x20
/* 8030E664 0030A2C4  4E 80 00 20 */	blr

.global VFiPFFAT_SearchForNumFreeClusters
VFiPFFAT_SearchForNumFreeClusters:
/* 8030E668 0030A2C8  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 8030E66C 0030A2CC  7C 08 02 A6 */	mflr r0
/* 8030E670 0030A2D0  90 01 00 54 */	stw r0, 0x54(r1)
/* 8030E674 0030A2D4  39 61 00 50 */	addi r11, r1, 0x50
/* 8030E678 0030A2D8  4B EB 8A 91 */	bl _savegpr_19
/* 8030E67C 0030A2DC  38 00 FF FF */	li r0, -1
/* 8030E680 0030A2E0  28 04 00 02 */	cmplwi r4, 2
/* 8030E684 0030A2E4  90 07 00 00 */	stw r0, 0(r7)
/* 8030E688 0030A2E8  7C 74 1B 78 */	mr r20, r3
/* 8030E68C 0030A2EC  7C 95 23 78 */	mr r21, r4
/* 8030E690 0030A2F0  7C B6 2B 78 */	mr r22, r5
/* 8030E694 0030A2F4  90 08 00 00 */	stw r0, 0(r8)
/* 8030E698 0030A2F8  7C D7 33 78 */	mr r23, r6
/* 8030E69C 0030A2FC  7C F8 3B 78 */	mr r24, r7
/* 8030E6A0 0030A300  7D 19 43 78 */	mr r25, r8
/* 8030E6A4 0030A304  80 63 00 34 */	lwz r3, 0x34(r3)
/* 8030E6A8 0030A308  3B 60 00 00 */	li r27, 0
/* 8030E6AC 0030A30C  3B C0 00 00 */	li r30, 0
/* 8030E6B0 0030A310  3B A0 FF FF */	li r29, -1
/* 8030E6B4 0030A314  3B E3 00 02 */	addi r31, r3, 2
/* 8030E6B8 0030A318  3B 80 00 00 */	li r28, 0
/* 8030E6BC 0030A31C  41 80 00 0C */	blt lbl_8030E6C8
/* 8030E6C0 0030A320  7C 04 F8 40 */	cmplw r4, r31
/* 8030E6C4 0030A324  41 80 00 08 */	blt lbl_8030E6CC
lbl_8030E6C8:
/* 8030E6C8 0030A328  3A A0 00 02 */	li r21, 2
lbl_8030E6CC:
/* 8030E6CC 0030A32C  28 05 00 02 */	cmplwi r5, 2
/* 8030E6D0 0030A330  41 80 00 0C */	blt lbl_8030E6DC
/* 8030E6D4 0030A334  7C 05 F8 40 */	cmplw r5, r31
/* 8030E6D8 0030A338  41 80 00 08 */	blt lbl_8030E6E0
lbl_8030E6DC:
/* 8030E6DC 0030A33C  3A DF FF FF */	addi r22, r31, -1
lbl_8030E6E0:
/* 8030E6E0 0030A340  7E BA AB 78 */	mr r26, r21
/* 8030E6E4 0030A344  7E 83 A3 78 */	mr r3, r20
/* 8030E6E8 0030A348  7E A5 AB 78 */	mr r5, r21
/* 8030E6EC 0030A34C  38 81 00 08 */	addi r4, r1, 8
/* 8030E6F0 0030A350  4B FF FE 49 */	bl VFiPFFAT_ReadFATSector
/* 8030E6F4 0030A354  2C 03 00 00 */	cmpwi r3, 0
/* 8030E6F8 0030A358  41 82 00 08 */	beq lbl_8030E700
/* 8030E6FC 0030A35C  48 00 01 58 */	b lbl_8030E854
lbl_8030E700:
/* 8030E700 0030A360  80 61 00 08 */	lwz r3, 8(r1)
/* 8030E704 0030A364  38 00 00 00 */	li r0, 0
/* 8030E708 0030A368  3A 60 FF FF */	li r19, -1
/* 8030E70C 0030A36C  B0 03 00 02 */	sth r0, 2(r3)
/* 8030E710 0030A370  48 00 01 10 */	b lbl_8030E820
lbl_8030E714:
/* 8030E714 0030A374  7C 1F A8 40 */	cmplw r31, r21
/* 8030E718 0030A378  41 81 00 08 */	bgt lbl_8030E720
/* 8030E71C 0030A37C  3A A0 00 02 */	li r21, 2
lbl_8030E720:
/* 8030E720 0030A380  80 14 00 1C */	lwz r0, 0x1c(r20)
/* 8030E724 0030A384  2C 00 00 01 */	cmpwi r0, 1
/* 8030E728 0030A388  41 82 00 38 */	beq lbl_8030E760
/* 8030E72C 0030A38C  40 80 00 10 */	bge lbl_8030E73C
/* 8030E730 0030A390  2C 00 00 00 */	cmpwi r0, 0
/* 8030E734 0030A394  40 80 00 14 */	bge lbl_8030E748
/* 8030E738 0030A398  48 00 00 58 */	b lbl_8030E790
lbl_8030E73C:
/* 8030E73C 0030A39C  2C 00 00 03 */	cmpwi r0, 3
/* 8030E740 0030A3A0  40 80 00 50 */	bge lbl_8030E790
/* 8030E744 0030A3A4  48 00 00 34 */	b lbl_8030E778
lbl_8030E748:
/* 8030E748 0030A3A8  7E 83 A3 78 */	mr r3, r20
/* 8030E74C 0030A3AC  56 A4 04 3E */	clrlwi r4, r21, 0x10
/* 8030E750 0030A3B0  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030E754 0030A3B4  38 C1 00 08 */	addi r6, r1, 8
/* 8030E758 0030A3B8  48 00 2B FD */	bl VFiPFFAT12_ReadFATEntryPage
/* 8030E75C 0030A3BC  48 00 00 38 */	b lbl_8030E794
lbl_8030E760:
/* 8030E760 0030A3C0  7E 83 A3 78 */	mr r3, r20
/* 8030E764 0030A3C4  7E A4 AB 78 */	mr r4, r21
/* 8030E768 0030A3C8  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030E76C 0030A3CC  38 C1 00 08 */	addi r6, r1, 8
/* 8030E770 0030A3D0  48 00 36 4D */	bl VFiPFFAT16_ReadFATEntryPage
/* 8030E774 0030A3D4  48 00 00 20 */	b lbl_8030E794
lbl_8030E778:
/* 8030E778 0030A3D8  7E 83 A3 78 */	mr r3, r20
/* 8030E77C 0030A3DC  7E A4 AB 78 */	mr r4, r21
/* 8030E780 0030A3E0  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030E784 0030A3E4  38 C1 00 08 */	addi r6, r1, 8
/* 8030E788 0030A3E8  48 00 3B BD */	bl VFiPFFAT32_ReadFATEntryPage
/* 8030E78C 0030A3EC  48 00 00 08 */	b lbl_8030E794
lbl_8030E790:
/* 8030E790 0030A3F0  38 60 00 0F */	li r3, 0xf
lbl_8030E794:
/* 8030E794 0030A3F4  2C 03 00 00 */	cmpwi r3, 0
/* 8030E798 0030A3F8  41 82 00 08 */	beq lbl_8030E7A0
/* 8030E79C 0030A3FC  48 00 00 B8 */	b lbl_8030E854
lbl_8030E7A0:
/* 8030E7A0 0030A400  80 01 00 0C */	lwz r0, 0xc(r1)
/* 8030E7A4 0030A404  2C 00 00 00 */	cmpwi r0, 0
/* 8030E7A8 0030A408  40 82 00 30 */	bne lbl_8030E7D8
/* 8030E7AC 0030A40C  80 78 00 00 */	lwz r3, 0(r24)
/* 8030E7B0 0030A410  3C 03 00 01 */	addis r0, r3, 1
/* 8030E7B4 0030A414  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030E7B8 0030A418  40 82 00 08 */	bne lbl_8030E7C0
/* 8030E7BC 0030A41C  92 B8 00 00 */	stw r21, 0(r24)
lbl_8030E7C0:
/* 8030E7C0 0030A420  3B DE 00 01 */	addi r30, r30, 1
/* 8030E7C4 0030A424  7C 1E B8 40 */	cmplw r30, r23
/* 8030E7C8 0030A428  41 80 00 28 */	blt lbl_8030E7F0
/* 8030E7CC 0030A42C  92 B9 00 00 */	stw r21, 0(r25)
/* 8030E7D0 0030A430  38 60 00 00 */	li r3, 0
/* 8030E7D4 0030A434  48 00 00 80 */	b lbl_8030E854
lbl_8030E7D8:
/* 8030E7D8 0030A438  7C 1C F0 40 */	cmplw r28, r30
/* 8030E7DC 0030A43C  40 80 00 0C */	bge lbl_8030E7E8
/* 8030E7E0 0030A440  83 B8 00 00 */	lwz r29, 0(r24)
/* 8030E7E4 0030A444  7F DC F3 78 */	mr r28, r30
lbl_8030E7E8:
/* 8030E7E8 0030A448  92 78 00 00 */	stw r19, 0(r24)
/* 8030E7EC 0030A44C  3B C0 00 00 */	li r30, 0
lbl_8030E7F0:
/* 8030E7F0 0030A450  2C 1B 00 00 */	cmpwi r27, 0
/* 8030E7F4 0030A454  3A B5 00 01 */	addi r21, r21, 1
/* 8030E7F8 0030A458  40 82 00 28 */	bne lbl_8030E820
/* 8030E7FC 0030A45C  2C 1E 00 00 */	cmpwi r30, 0
/* 8030E800 0030A460  40 82 00 20 */	bne lbl_8030E820
/* 8030E804 0030A464  28 15 00 02 */	cmplwi r21, 2
/* 8030E808 0030A468  40 81 00 18 */	ble lbl_8030E820
/* 8030E80C 0030A46C  7C 15 B0 40 */	cmplw r21, r22
/* 8030E810 0030A470  40 82 00 10 */	bne lbl_8030E820
/* 8030E814 0030A474  7F 56 D3 78 */	mr r22, r26
/* 8030E818 0030A478  3A A0 00 02 */	li r21, 2
/* 8030E81C 0030A47C  3B 60 00 01 */	li r27, 1
lbl_8030E820:
/* 8030E820 0030A480  7C 15 B0 40 */	cmplw r21, r22
/* 8030E824 0030A484  40 81 FE F0 */	ble lbl_8030E714
/* 8030E828 0030A488  7C 1C F0 40 */	cmplw r28, r30
/* 8030E82C 0030A48C  40 80 00 0C */	bge lbl_8030E838
/* 8030E830 0030A490  83 B8 00 00 */	lwz r29, 0(r24)
/* 8030E834 0030A494  7F DC F3 78 */	mr r28, r30
lbl_8030E838:
/* 8030E838 0030A498  2C 1C 00 00 */	cmpwi r28, 0
/* 8030E83C 0030A49C  41 82 00 14 */	beq lbl_8030E850
/* 8030E840 0030A4A0  7C 7C EA 14 */	add r3, r28, r29
/* 8030E844 0030A4A4  93 B8 00 00 */	stw r29, 0(r24)
/* 8030E848 0030A4A8  38 03 FF FF */	addi r0, r3, -1
/* 8030E84C 0030A4AC  90 19 00 00 */	stw r0, 0(r25)
lbl_8030E850:
/* 8030E850 0030A4B0  38 60 00 00 */	li r3, 0
lbl_8030E854:
/* 8030E854 0030A4B4  39 61 00 50 */	addi r11, r1, 0x50
/* 8030E858 0030A4B8  4B EB 88 FD */	bl _restgpr_19
/* 8030E85C 0030A4BC  80 01 00 54 */	lwz r0, 0x54(r1)
/* 8030E860 0030A4C0  7C 08 03 A6 */	mtlr r0
/* 8030E864 0030A4C4  38 21 00 50 */	addi r1, r1, 0x50
/* 8030E868 0030A4C8  4E 80 00 20 */	blr

.global VFiPFFAT_FindClusterLink
VFiPFFAT_FindClusterLink:
/* 8030E86C 0030A4CC  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8030E870 0030A4D0  7C 08 02 A6 */	mflr r0
/* 8030E874 0030A4D4  90 01 00 34 */	stw r0, 0x34(r1)
/* 8030E878 0030A4D8  39 61 00 30 */	addi r11, r1, 0x30
/* 8030E87C 0030A4DC  4B EB 88 AD */	bl _savegpr_27
/* 8030E880 0030A4E0  38 E0 FF FF */	li r7, -1
/* 8030E884 0030A4E4  38 00 00 00 */	li r0, 0
/* 8030E888 0030A4E8  90 E1 00 0C */	stw r7, 0xc(r1)
/* 8030E88C 0030A4EC  7C 7B 1B 78 */	mr r27, r3
/* 8030E890 0030A4F0  7C BE 2B 78 */	mr r30, r5
/* 8030E894 0030A4F4  7C DF 33 78 */	mr r31, r6
/* 8030E898 0030A4F8  90 06 00 00 */	stw r0, 0(r6)
/* 8030E89C 0030A4FC  80 03 00 24 */	lwz r0, 0x24(r3)
/* 8030E8A0 0030A500  2C 00 00 00 */	cmpwi r0, 0
/* 8030E8A4 0030A504  40 82 00 0C */	bne lbl_8030E8B0
/* 8030E8A8 0030A508  38 60 00 00 */	li r3, 0
/* 8030E8AC 0030A50C  48 00 01 64 */	b lbl_8030EA10
lbl_8030E8B0:
/* 8030E8B0 0030A510  80 03 00 2C */	lwz r0, 0x2c(r3)
/* 8030E8B4 0030A514  7C 00 20 40 */	cmplw r0, r4
/* 8030E8B8 0030A518  41 80 01 4C */	blt lbl_8030EA04
/* 8030E8BC 0030A51C  A0 E3 00 20 */	lhz r7, 0x20(r3)
/* 8030E8C0 0030A520  38 07 00 01 */	addi r0, r7, 1
/* 8030E8C4 0030A524  7C E4 03 96 */	divwu r7, r4, r0
/* 8030E8C8 0030A528  7C 07 01 D6 */	mullw r0, r7, r0
/* 8030E8CC 0030A52C  7F 80 20 51 */	subf. r28, r0, r4
/* 8030E8D0 0030A530  40 82 00 20 */	bne lbl_8030E8F0
/* 8030E8D4 0030A534  80 83 00 1C */	lwz r4, 0x1c(r3)
/* 8030E8D8 0030A538  54 E3 10 3A */	slwi r3, r7, 2
/* 8030E8DC 0030A53C  38 00 00 01 */	li r0, 1
/* 8030E8E0 0030A540  7C 64 18 2E */	lwzx r3, r4, r3
/* 8030E8E4 0030A544  90 65 00 00 */	stw r3, 0(r5)
/* 8030E8E8 0030A548  90 06 00 00 */	stw r0, 0(r6)
/* 8030E8EC 0030A54C  48 00 01 20 */	b lbl_8030EA0C
lbl_8030E8F0:
/* 8030E8F0 0030A550  80 A3 00 1C */	lwz r5, 0x1c(r3)
/* 8030E8F4 0030A554  54 E0 10 3A */	slwi r0, r7, 2
/* 8030E8F8 0030A558  80 63 00 34 */	lwz r3, 0x34(r3)
/* 8030E8FC 0030A55C  38 81 00 08 */	addi r4, r1, 8
/* 8030E900 0030A560  7F A5 00 2E */	lwzx r29, r5, r0
/* 8030E904 0030A564  7F A5 EB 78 */	mr r5, r29
/* 8030E908 0030A568  4B FF FC 31 */	bl VFiPFFAT_ReadFATSector
/* 8030E90C 0030A56C  2C 03 00 00 */	cmpwi r3, 0
/* 8030E910 0030A570  41 82 00 9C */	beq lbl_8030E9AC
/* 8030E914 0030A574  48 00 00 FC */	b lbl_8030EA10
/* 8030E918 0030A578  48 00 00 94 */	b lbl_8030E9AC
lbl_8030E91C:
/* 8030E91C 0030A57C  80 7B 00 34 */	lwz r3, 0x34(r27)
/* 8030E920 0030A580  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030E924 0030A584  2C 00 00 01 */	cmpwi r0, 1
/* 8030E928 0030A588  41 82 00 34 */	beq lbl_8030E95C
/* 8030E92C 0030A58C  40 80 00 10 */	bge lbl_8030E93C
/* 8030E930 0030A590  2C 00 00 00 */	cmpwi r0, 0
/* 8030E934 0030A594  40 80 00 14 */	bge lbl_8030E948
/* 8030E938 0030A598  48 00 00 4C */	b lbl_8030E984
lbl_8030E93C:
/* 8030E93C 0030A59C  2C 00 00 03 */	cmpwi r0, 3
/* 8030E940 0030A5A0  40 80 00 44 */	bge lbl_8030E984
/* 8030E944 0030A5A4  48 00 00 2C */	b lbl_8030E970
lbl_8030E948:
/* 8030E948 0030A5A8  57 A4 04 3E */	clrlwi r4, r29, 0x10
/* 8030E94C 0030A5AC  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030E950 0030A5B0  38 C1 00 08 */	addi r6, r1, 8
/* 8030E954 0030A5B4  48 00 2A 01 */	bl VFiPFFAT12_ReadFATEntryPage
/* 8030E958 0030A5B8  48 00 00 30 */	b lbl_8030E988
lbl_8030E95C:
/* 8030E95C 0030A5BC  7F A4 EB 78 */	mr r4, r29
/* 8030E960 0030A5C0  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030E964 0030A5C4  38 C1 00 08 */	addi r6, r1, 8
/* 8030E968 0030A5C8  48 00 34 55 */	bl VFiPFFAT16_ReadFATEntryPage
/* 8030E96C 0030A5CC  48 00 00 1C */	b lbl_8030E988
lbl_8030E970:
/* 8030E970 0030A5D0  7F A4 EB 78 */	mr r4, r29
/* 8030E974 0030A5D4  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030E978 0030A5D8  38 C1 00 08 */	addi r6, r1, 8
/* 8030E97C 0030A5DC  48 00 39 C9 */	bl VFiPFFAT32_ReadFATEntryPage
/* 8030E980 0030A5E0  48 00 00 08 */	b lbl_8030E988
lbl_8030E984:
/* 8030E984 0030A5E4  38 60 00 0F */	li r3, 0xf
lbl_8030E988:
/* 8030E988 0030A5E8  2C 03 00 00 */	cmpwi r3, 0
/* 8030E98C 0030A5EC  41 82 00 08 */	beq lbl_8030E994
/* 8030E990 0030A5F0  48 00 00 80 */	b lbl_8030EA10
lbl_8030E994:
/* 8030E994 0030A5F4  83 A1 00 0C */	lwz r29, 0xc(r1)
/* 8030E998 0030A5F8  2C 1D 00 00 */	cmpwi r29, 0
/* 8030E99C 0030A5FC  40 82 00 0C */	bne lbl_8030E9A8
/* 8030E9A0 0030A600  38 60 00 0D */	li r3, 0xd
/* 8030E9A4 0030A604  48 00 00 6C */	b lbl_8030EA10
lbl_8030E9A8:
/* 8030E9A8 0030A608  3B 9C FF FF */	addi r28, r28, -1
lbl_8030E9AC:
/* 8030E9AC 0030A60C  2C 1C 00 00 */	cmpwi r28, 0
/* 8030E9B0 0030A610  40 82 FF 6C */	bne lbl_8030E91C
/* 8030E9B4 0030A614  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 8030E9B8 0030A618  2C 05 00 00 */	cmpwi r5, 0
/* 8030E9BC 0030A61C  40 82 00 0C */	bne lbl_8030E9C8
/* 8030E9C0 0030A620  38 60 00 0D */	li r3, 0xd
/* 8030E9C4 0030A624  48 00 00 4C */	b lbl_8030EA10
lbl_8030E9C8:
/* 8030E9C8 0030A628  80 7B 00 34 */	lwz r3, 0x34(r27)
/* 8030E9CC 0030A62C  3C 80 80 40 */	lis r4, lbl_803FE280@ha
/* 8030E9D0 0030A630  38 84 E2 80 */	addi r4, r4, lbl_803FE280@l
/* 8030E9D4 0030A634  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030E9D8 0030A638  1C 00 00 14 */	mulli r0, r0, 0x14
/* 8030E9DC 0030A63C  7C 64 02 14 */	add r3, r4, r0
/* 8030E9E0 0030A640  80 03 00 08 */	lwz r0, 8(r3)
/* 8030E9E4 0030A644  7C 05 00 40 */	cmplw r5, r0
/* 8030E9E8 0030A648  40 82 00 0C */	bne lbl_8030E9F4
/* 8030E9EC 0030A64C  38 60 00 00 */	li r3, 0
/* 8030E9F0 0030A650  48 00 00 20 */	b lbl_8030EA10
lbl_8030E9F4:
/* 8030E9F4 0030A654  90 BE 00 00 */	stw r5, 0(r30)
/* 8030E9F8 0030A658  38 00 00 01 */	li r0, 1
/* 8030E9FC 0030A65C  90 1F 00 00 */	stw r0, 0(r31)
/* 8030EA00 0030A660  48 00 00 0C */	b lbl_8030EA0C
lbl_8030EA04:
/* 8030EA04 0030A664  38 60 00 00 */	li r3, 0
/* 8030EA08 0030A668  48 00 00 08 */	b lbl_8030EA10
lbl_8030EA0C:
/* 8030EA0C 0030A66C  38 60 00 00 */	li r3, 0
lbl_8030EA10:
/* 8030EA10 0030A670  39 61 00 30 */	addi r11, r1, 0x30
/* 8030EA14 0030A674  4B EB 87 61 */	bl _restgpr_27
/* 8030EA18 0030A678  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030EA1C 0030A67C  7C 08 03 A6 */	mtlr r0
/* 8030EA20 0030A680  38 21 00 30 */	addi r1, r1, 0x30
/* 8030EA24 0030A684  4E 80 00 20 */	blr

.global VFiPFFAT_FindClusterLinkPage
VFiPFFAT_FindClusterLinkPage:
/* 8030EA28 0030A688  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8030EA2C 0030A68C  7C 08 02 A6 */	mflr r0
/* 8030EA30 0030A690  39 00 FF FF */	li r8, -1
/* 8030EA34 0030A694  90 01 00 24 */	stw r0, 0x24(r1)
/* 8030EA38 0030A698  38 00 00 00 */	li r0, 0
/* 8030EA3C 0030A69C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8030EA40 0030A6A0  7C DF 33 78 */	mr r31, r6
/* 8030EA44 0030A6A4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8030EA48 0030A6A8  7C BE 2B 78 */	mr r30, r5
/* 8030EA4C 0030A6AC  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8030EA50 0030A6B0  93 81 00 10 */	stw r28, 0x10(r1)
/* 8030EA54 0030A6B4  7C 7C 1B 78 */	mr r28, r3
/* 8030EA58 0030A6B8  90 E1 00 08 */	stw r7, 8(r1)
/* 8030EA5C 0030A6BC  91 01 00 0C */	stw r8, 0xc(r1)
/* 8030EA60 0030A6C0  90 06 00 00 */	stw r0, 0(r6)
/* 8030EA64 0030A6C4  80 03 00 24 */	lwz r0, 0x24(r3)
/* 8030EA68 0030A6C8  2C 00 00 00 */	cmpwi r0, 0
/* 8030EA6C 0030A6CC  40 82 00 0C */	bne lbl_8030EA78
/* 8030EA70 0030A6D0  38 60 00 00 */	li r3, 0
/* 8030EA74 0030A6D4  48 00 01 40 */	b lbl_8030EBB4
lbl_8030EA78:
/* 8030EA78 0030A6D8  80 03 00 2C */	lwz r0, 0x2c(r3)
/* 8030EA7C 0030A6DC  7C 00 20 40 */	cmplw r0, r4
/* 8030EA80 0030A6E0  41 80 01 28 */	blt lbl_8030EBA8
/* 8030EA84 0030A6E4  A0 E3 00 20 */	lhz r7, 0x20(r3)
/* 8030EA88 0030A6E8  38 07 00 01 */	addi r0, r7, 1
/* 8030EA8C 0030A6EC  7C E4 03 96 */	divwu r7, r4, r0
/* 8030EA90 0030A6F0  7C 07 01 D6 */	mullw r0, r7, r0
/* 8030EA94 0030A6F4  7F A0 20 51 */	subf. r29, r0, r4
/* 8030EA98 0030A6F8  40 82 00 20 */	bne lbl_8030EAB8
/* 8030EA9C 0030A6FC  80 83 00 1C */	lwz r4, 0x1c(r3)
/* 8030EAA0 0030A700  54 E3 10 3A */	slwi r3, r7, 2
/* 8030EAA4 0030A704  38 00 00 01 */	li r0, 1
/* 8030EAA8 0030A708  7C 64 18 2E */	lwzx r3, r4, r3
/* 8030EAAC 0030A70C  90 65 00 00 */	stw r3, 0(r5)
/* 8030EAB0 0030A710  90 06 00 00 */	stw r0, 0(r6)
/* 8030EAB4 0030A714  48 00 00 FC */	b lbl_8030EBB0
lbl_8030EAB8:
/* 8030EAB8 0030A718  80 63 00 1C */	lwz r3, 0x1c(r3)
/* 8030EABC 0030A71C  54 E0 10 3A */	slwi r0, r7, 2
/* 8030EAC0 0030A720  7C 83 00 2E */	lwzx r4, r3, r0
/* 8030EAC4 0030A724  48 00 00 8C */	b lbl_8030EB50
lbl_8030EAC8:
/* 8030EAC8 0030A728  80 7C 00 34 */	lwz r3, 0x34(r28)
/* 8030EACC 0030A72C  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030EAD0 0030A730  2C 00 00 01 */	cmpwi r0, 1
/* 8030EAD4 0030A734  41 82 00 34 */	beq lbl_8030EB08
/* 8030EAD8 0030A738  40 80 00 10 */	bge lbl_8030EAE8
/* 8030EADC 0030A73C  2C 00 00 00 */	cmpwi r0, 0
/* 8030EAE0 0030A740  40 80 00 14 */	bge lbl_8030EAF4
/* 8030EAE4 0030A744  48 00 00 44 */	b lbl_8030EB28
lbl_8030EAE8:
/* 8030EAE8 0030A748  2C 00 00 03 */	cmpwi r0, 3
/* 8030EAEC 0030A74C  40 80 00 3C */	bge lbl_8030EB28
/* 8030EAF0 0030A750  48 00 00 28 */	b lbl_8030EB18
lbl_8030EAF4:
/* 8030EAF4 0030A754  54 84 04 3E */	clrlwi r4, r4, 0x10
/* 8030EAF8 0030A758  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030EAFC 0030A75C  38 C1 00 08 */	addi r6, r1, 8
/* 8030EB00 0030A760  48 00 28 55 */	bl VFiPFFAT12_ReadFATEntryPage
/* 8030EB04 0030A764  48 00 00 28 */	b lbl_8030EB2C
lbl_8030EB08:
/* 8030EB08 0030A768  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030EB0C 0030A76C  38 C1 00 08 */	addi r6, r1, 8
/* 8030EB10 0030A770  48 00 32 AD */	bl VFiPFFAT16_ReadFATEntryPage
/* 8030EB14 0030A774  48 00 00 18 */	b lbl_8030EB2C
lbl_8030EB18:
/* 8030EB18 0030A778  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030EB1C 0030A77C  38 C1 00 08 */	addi r6, r1, 8
/* 8030EB20 0030A780  48 00 38 25 */	bl VFiPFFAT32_ReadFATEntryPage
/* 8030EB24 0030A784  48 00 00 08 */	b lbl_8030EB2C
lbl_8030EB28:
/* 8030EB28 0030A788  38 60 00 0F */	li r3, 0xf
lbl_8030EB2C:
/* 8030EB2C 0030A78C  2C 03 00 00 */	cmpwi r3, 0
/* 8030EB30 0030A790  41 82 00 08 */	beq lbl_8030EB38
/* 8030EB34 0030A794  48 00 00 80 */	b lbl_8030EBB4
lbl_8030EB38:
/* 8030EB38 0030A798  80 81 00 0C */	lwz r4, 0xc(r1)
/* 8030EB3C 0030A79C  2C 04 00 00 */	cmpwi r4, 0
/* 8030EB40 0030A7A0  40 82 00 0C */	bne lbl_8030EB4C
/* 8030EB44 0030A7A4  38 60 00 0D */	li r3, 0xd
/* 8030EB48 0030A7A8  48 00 00 6C */	b lbl_8030EBB4
lbl_8030EB4C:
/* 8030EB4C 0030A7AC  3B BD FF FF */	addi r29, r29, -1
lbl_8030EB50:
/* 8030EB50 0030A7B0  2C 1D 00 00 */	cmpwi r29, 0
/* 8030EB54 0030A7B4  40 82 FF 74 */	bne lbl_8030EAC8
/* 8030EB58 0030A7B8  80 A1 00 0C */	lwz r5, 0xc(r1)
/* 8030EB5C 0030A7BC  2C 05 00 00 */	cmpwi r5, 0
/* 8030EB60 0030A7C0  40 82 00 0C */	bne lbl_8030EB6C
/* 8030EB64 0030A7C4  38 60 00 0D */	li r3, 0xd
/* 8030EB68 0030A7C8  48 00 00 4C */	b lbl_8030EBB4
lbl_8030EB6C:
/* 8030EB6C 0030A7CC  80 7C 00 34 */	lwz r3, 0x34(r28)
/* 8030EB70 0030A7D0  3C 80 80 40 */	lis r4, lbl_803FE280@ha
/* 8030EB74 0030A7D4  38 84 E2 80 */	addi r4, r4, lbl_803FE280@l
/* 8030EB78 0030A7D8  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030EB7C 0030A7DC  1C 00 00 14 */	mulli r0, r0, 0x14
/* 8030EB80 0030A7E0  7C 64 02 14 */	add r3, r4, r0
/* 8030EB84 0030A7E4  80 03 00 08 */	lwz r0, 8(r3)
/* 8030EB88 0030A7E8  7C 05 00 40 */	cmplw r5, r0
/* 8030EB8C 0030A7EC  40 82 00 0C */	bne lbl_8030EB98
/* 8030EB90 0030A7F0  38 60 00 00 */	li r3, 0
/* 8030EB94 0030A7F4  48 00 00 20 */	b lbl_8030EBB4
lbl_8030EB98:
/* 8030EB98 0030A7F8  90 BE 00 00 */	stw r5, 0(r30)
/* 8030EB9C 0030A7FC  38 00 00 01 */	li r0, 1
/* 8030EBA0 0030A800  90 1F 00 00 */	stw r0, 0(r31)
/* 8030EBA4 0030A804  48 00 00 0C */	b lbl_8030EBB0
lbl_8030EBA8:
/* 8030EBA8 0030A808  38 60 00 00 */	li r3, 0
/* 8030EBAC 0030A80C  48 00 00 08 */	b lbl_8030EBB4
lbl_8030EBB0:
/* 8030EBB0 0030A810  38 60 00 00 */	li r3, 0
lbl_8030EBB4:
/* 8030EBB4 0030A814  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8030EBB8 0030A818  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8030EBBC 0030A81C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8030EBC0 0030A820  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8030EBC4 0030A824  83 81 00 10 */	lwz r28, 0x10(r1)
/* 8030EBC8 0030A828  7C 08 03 A6 */	mtlr r0
/* 8030EBCC 0030A82C  38 21 00 20 */	addi r1, r1, 0x20
/* 8030EBD0 0030A830  4E 80 00 20 */	blr

.global VFiPFFAT_ReadClusterPage
VFiPFFAT_ReadClusterPage:
/* 8030EBD4 0030A834  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8030EBD8 0030A838  7C 08 02 A6 */	mflr r0
/* 8030EBDC 0030A83C  90 01 00 24 */	stw r0, 0x24(r1)
/* 8030EBE0 0030A840  39 61 00 20 */	addi r11, r1, 0x20
/* 8030EBE4 0030A844  4B EB 85 41 */	bl _savegpr_26
/* 8030EBE8 0030A848  38 00 FF FF */	li r0, -1
/* 8030EBEC 0030A84C  7C 7E 1B 78 */	mr r30, r3
/* 8030EBF0 0030A850  90 06 00 00 */	stw r0, 0(r6)
/* 8030EBF4 0030A854  7C 9A 23 78 */	mr r26, r4
/* 8030EBF8 0030A858  7C BF 2B 78 */	mr r31, r5
/* 8030EBFC 0030A85C  7C DB 33 78 */	mr r27, r6
/* 8030EC00 0030A860  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030EC04 0030A864  7C FC 3B 78 */	mr r28, r7
/* 8030EC08 0030A868  7D 1D 43 78 */	mr r29, r8
/* 8030EC0C 0030A86C  2C 00 00 00 */	cmpwi r0, 0
/* 8030EC10 0030A870  41 82 00 30 */	beq lbl_8030EC40
/* 8030EC14 0030A874  80 07 00 00 */	lwz r0, 0(r7)
/* 8030EC18 0030A878  28 00 00 01 */	cmplwi r0, 1
/* 8030EC1C 0030A87C  40 82 00 24 */	bne lbl_8030EC40
/* 8030EC20 0030A880  80 E8 00 00 */	lwz r7, 0(r8)
/* 8030EC24 0030A884  7F E4 FB 78 */	mr r4, r31
/* 8030EC28 0030A888  7F 65 DB 78 */	mr r5, r27
/* 8030EC2C 0030A88C  7F 86 E3 78 */	mr r6, r28
/* 8030EC30 0030A890  4B FF FD F9 */	bl VFiPFFAT_FindClusterLinkPage
/* 8030EC34 0030A894  2C 03 00 00 */	cmpwi r3, 0
/* 8030EC38 0030A898  41 82 00 08 */	beq lbl_8030EC40
/* 8030EC3C 0030A89C  48 00 01 4C */	b lbl_8030ED88
lbl_8030EC40:
/* 8030EC40 0030A8A0  80 1E 00 1C */	lwz r0, 0x1c(r30)
/* 8030EC44 0030A8A4  2C 00 00 00 */	cmpwi r0, 0
/* 8030EC48 0030A8A8  41 82 00 10 */	beq lbl_8030EC58
/* 8030EC4C 0030A8AC  80 1C 00 00 */	lwz r0, 0(r28)
/* 8030EC50 0030A8B0  2C 00 00 00 */	cmpwi r0, 0
/* 8030EC54 0030A8B4  40 82 01 30 */	bne lbl_8030ED84
lbl_8030EC58:
/* 8030EC58 0030A8B8  80 7E 00 34 */	lwz r3, 0x34(r30)
/* 8030EC5C 0030A8BC  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030EC60 0030A8C0  2C 00 00 01 */	cmpwi r0, 1
/* 8030EC64 0030A8C4  41 82 00 34 */	beq lbl_8030EC98
/* 8030EC68 0030A8C8  40 80 00 10 */	bge lbl_8030EC78
/* 8030EC6C 0030A8CC  2C 00 00 00 */	cmpwi r0, 0
/* 8030EC70 0030A8D0  40 80 00 14 */	bge lbl_8030EC84
/* 8030EC74 0030A8D4  48 00 00 4C */	b lbl_8030ECC0
lbl_8030EC78:
/* 8030EC78 0030A8D8  2C 00 00 03 */	cmpwi r0, 3
/* 8030EC7C 0030A8DC  40 80 00 44 */	bge lbl_8030ECC0
/* 8030EC80 0030A8E0  48 00 00 2C */	b lbl_8030ECAC
lbl_8030EC84:
/* 8030EC84 0030A8E4  7F 65 DB 78 */	mr r5, r27
/* 8030EC88 0030A8E8  7F A6 EB 78 */	mr r6, r29
/* 8030EC8C 0030A8EC  57 44 04 3E */	clrlwi r4, r26, 0x10
/* 8030EC90 0030A8F0  48 00 26 C5 */	bl VFiPFFAT12_ReadFATEntryPage
/* 8030EC94 0030A8F4  48 00 00 30 */	b lbl_8030ECC4
lbl_8030EC98:
/* 8030EC98 0030A8F8  7F 44 D3 78 */	mr r4, r26
/* 8030EC9C 0030A8FC  7F 65 DB 78 */	mr r5, r27
/* 8030ECA0 0030A900  7F A6 EB 78 */	mr r6, r29
/* 8030ECA4 0030A904  48 00 31 19 */	bl VFiPFFAT16_ReadFATEntryPage
/* 8030ECA8 0030A908  48 00 00 1C */	b lbl_8030ECC4
lbl_8030ECAC:
/* 8030ECAC 0030A90C  7F 44 D3 78 */	mr r4, r26
/* 8030ECB0 0030A910  7F 65 DB 78 */	mr r5, r27
/* 8030ECB4 0030A914  7F A6 EB 78 */	mr r6, r29
/* 8030ECB8 0030A918  48 00 36 8D */	bl VFiPFFAT32_ReadFATEntryPage
/* 8030ECBC 0030A91C  48 00 00 08 */	b lbl_8030ECC4
lbl_8030ECC0:
/* 8030ECC0 0030A920  38 60 00 0F */	li r3, 0xf
lbl_8030ECC4:
/* 8030ECC4 0030A924  2C 03 00 00 */	cmpwi r3, 0
/* 8030ECC8 0030A928  41 82 00 08 */	beq lbl_8030ECD0
/* 8030ECCC 0030A92C  48 00 00 BC */	b lbl_8030ED88
lbl_8030ECD0:
/* 8030ECD0 0030A930  80 DB 00 00 */	lwz r6, 0(r27)
/* 8030ECD4 0030A934  2C 06 00 00 */	cmpwi r6, 0
/* 8030ECD8 0030A938  40 82 00 0C */	bne lbl_8030ECE4
/* 8030ECDC 0030A93C  38 60 00 0D */	li r3, 0xd
/* 8030ECE0 0030A940  48 00 00 A8 */	b lbl_8030ED88
lbl_8030ECE4:
/* 8030ECE4 0030A944  3C 06 00 01 */	addis r0, r6, 1
/* 8030ECE8 0030A948  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030ECEC 0030A94C  40 82 00 0C */	bne lbl_8030ECF8
/* 8030ECF0 0030A950  38 60 00 06 */	li r3, 6
/* 8030ECF4 0030A954  48 00 00 94 */	b lbl_8030ED88
lbl_8030ECF8:
/* 8030ECF8 0030A958  80 BE 00 1C */	lwz r5, 0x1c(r30)
/* 8030ECFC 0030A95C  2C 05 00 00 */	cmpwi r5, 0
/* 8030ED00 0030A960  41 82 00 84 */	beq lbl_8030ED84
/* 8030ED04 0030A964  80 7E 00 34 */	lwz r3, 0x34(r30)
/* 8030ED08 0030A968  3C 80 80 40 */	lis r4, lbl_803FE280@ha
/* 8030ED0C 0030A96C  38 84 E2 80 */	addi r4, r4, lbl_803FE280@l
/* 8030ED10 0030A970  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030ED14 0030A974  1C 00 00 14 */	mulli r0, r0, 0x14
/* 8030ED18 0030A978  7C 64 02 14 */	add r3, r4, r0
/* 8030ED1C 0030A97C  80 03 00 08 */	lwz r0, 8(r3)
/* 8030ED20 0030A980  7C 06 00 40 */	cmplw r6, r0
/* 8030ED24 0030A984  41 82 00 60 */	beq lbl_8030ED84
/* 8030ED28 0030A988  80 9E 00 24 */	lwz r4, 0x24(r30)
/* 8030ED2C 0030A98C  80 1E 00 28 */	lwz r0, 0x28(r30)
/* 8030ED30 0030A990  7C 00 20 40 */	cmplw r0, r4
/* 8030ED34 0030A994  40 81 00 50 */	ble lbl_8030ED84
/* 8030ED38 0030A998  2C 00 00 00 */	cmpwi r0, 0
/* 8030ED3C 0030A99C  41 82 00 48 */	beq lbl_8030ED84
/* 8030ED40 0030A9A0  A0 7E 00 20 */	lhz r3, 0x20(r30)
/* 8030ED44 0030A9A4  38 03 00 01 */	addi r0, r3, 1
/* 8030ED48 0030A9A8  7C 04 01 D6 */	mullw r0, r4, r0
/* 8030ED4C 0030A9AC  7C 1F 00 40 */	cmplw r31, r0
/* 8030ED50 0030A9B0  40 82 00 24 */	bne lbl_8030ED74
/* 8030ED54 0030A9B4  38 60 00 00 */	li r3, 0
/* 8030ED58 0030A9B8  54 80 10 3A */	slwi r0, r4, 2
/* 8030ED5C 0030A9BC  B0 7E 00 22 */	sth r3, 0x22(r30)
/* 8030ED60 0030A9C0  7C C5 01 2E */	stwx r6, r5, r0
/* 8030ED64 0030A9C4  80 7E 00 24 */	lwz r3, 0x24(r30)
/* 8030ED68 0030A9C8  38 03 00 01 */	addi r0, r3, 1
/* 8030ED6C 0030A9CC  90 1E 00 24 */	stw r0, 0x24(r30)
/* 8030ED70 0030A9D0  48 00 00 10 */	b lbl_8030ED80
lbl_8030ED74:
/* 8030ED74 0030A9D4  A0 7E 00 22 */	lhz r3, 0x22(r30)
/* 8030ED78 0030A9D8  38 03 00 01 */	addi r0, r3, 1
/* 8030ED7C 0030A9DC  B0 1E 00 22 */	sth r0, 0x22(r30)
lbl_8030ED80:
/* 8030ED80 0030A9E0  93 FE 00 2C */	stw r31, 0x2c(r30)
lbl_8030ED84:
/* 8030ED84 0030A9E4  38 60 00 00 */	li r3, 0
lbl_8030ED88:
/* 8030ED88 0030A9E8  39 61 00 20 */	addi r11, r1, 0x20
/* 8030ED8C 0030A9EC  4B EB 83 E5 */	bl _restgpr_26
/* 8030ED90 0030A9F0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8030ED94 0030A9F4  7C 08 03 A6 */	mtlr r0
/* 8030ED98 0030A9F8  38 21 00 20 */	addi r1, r1, 0x20
/* 8030ED9C 0030A9FC  4E 80 00 20 */	blr

.global VFiPFFAT_WriteCluster
VFiPFFAT_WriteCluster:
/* 8030EDA0 0030AA00  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8030EDA4 0030AA04  7C 08 02 A6 */	mflr r0
/* 8030EDA8 0030AA08  90 01 00 24 */	stw r0, 0x24(r1)
/* 8030EDAC 0030AA0C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8030EDB0 0030AA10  7C BF 2B 78 */	mr r31, r5
/* 8030EDB4 0030AA14  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8030EDB8 0030AA18  7C 9E 23 78 */	mr r30, r4
/* 8030EDBC 0030AA1C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8030EDC0 0030AA20  7C 7D 1B 78 */	mr r29, r3
/* 8030EDC4 0030AA24  93 81 00 10 */	stw r28, 0x10(r1)
/* 8030EDC8 0030AA28  7C DC 33 78 */	mr r28, r6
/* 8030EDCC 0030AA2C  90 E1 00 08 */	stw r7, 8(r1)
/* 8030EDD0 0030AA30  80 63 00 34 */	lwz r3, 0x34(r3)
/* 8030EDD4 0030AA34  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030EDD8 0030AA38  2C 00 00 01 */	cmpwi r0, 1
/* 8030EDDC 0030AA3C  41 82 00 40 */	beq lbl_8030EE1C
/* 8030EDE0 0030AA40  40 80 00 10 */	bge lbl_8030EDF0
/* 8030EDE4 0030AA44  2C 00 00 00 */	cmpwi r0, 0
/* 8030EDE8 0030AA48  40 80 00 14 */	bge lbl_8030EDFC
/* 8030EDEC 0030AA4C  48 00 00 70 */	b lbl_8030EE5C
lbl_8030EDF0:
/* 8030EDF0 0030AA50  2C 00 00 03 */	cmpwi r0, 3
/* 8030EDF4 0030AA54  40 80 00 68 */	bge lbl_8030EE5C
/* 8030EDF8 0030AA58  48 00 00 40 */	b lbl_8030EE38
lbl_8030EDFC:
/* 8030EDFC 0030AA5C  28 06 0F FF */	cmplwi r6, 0xfff
/* 8030EE00 0030AA60  40 81 00 0C */	ble lbl_8030EE0C
/* 8030EE04 0030AA64  38 60 00 10 */	li r3, 0x10
/* 8030EE08 0030AA68  48 00 00 58 */	b lbl_8030EE60
lbl_8030EE0C:
/* 8030EE0C 0030AA6C  54 84 04 3E */	clrlwi r4, r4, 0x10
/* 8030EE10 0030AA70  54 C5 04 3E */	clrlwi r5, r6, 0x10
/* 8030EE14 0030AA74  48 00 28 15 */	bl VFiPFFAT12_WriteFATEntry
/* 8030EE18 0030AA78  48 00 00 48 */	b lbl_8030EE60
lbl_8030EE1C:
/* 8030EE1C 0030AA7C  28 06 FF FF */	cmplwi r6, 0xffff
/* 8030EE20 0030AA80  40 81 00 0C */	ble lbl_8030EE2C
/* 8030EE24 0030AA84  38 60 00 10 */	li r3, 0x10
/* 8030EE28 0030AA88  48 00 00 38 */	b lbl_8030EE60
lbl_8030EE2C:
/* 8030EE2C 0030AA8C  7F 85 E3 78 */	mr r5, r28
/* 8030EE30 0030AA90  48 00 31 49 */	bl VFiPFFAT16_WriteFATEntry
/* 8030EE34 0030AA94  48 00 00 2C */	b lbl_8030EE60
lbl_8030EE38:
/* 8030EE38 0030AA98  3C A0 10 00 */	lis r5, 0x0FFFFFFF@ha
/* 8030EE3C 0030AA9C  38 05 FF FF */	addi r0, r5, 0x0FFFFFFF@l
/* 8030EE40 0030AAA0  7C 06 00 40 */	cmplw r6, r0
/* 8030EE44 0030AAA4  40 81 00 0C */	ble lbl_8030EE50
/* 8030EE48 0030AAA8  38 60 00 10 */	li r3, 0x10
/* 8030EE4C 0030AAAC  48 00 00 14 */	b lbl_8030EE60
lbl_8030EE50:
/* 8030EE50 0030AAB0  7F 85 E3 78 */	mr r5, r28
/* 8030EE54 0030AAB4  48 00 36 BD */	bl VFiPFFAT32_WriteFATEntry
/* 8030EE58 0030AAB8  48 00 00 08 */	b lbl_8030EE60
lbl_8030EE5C:
/* 8030EE5C 0030AABC  38 60 00 0F */	li r3, 0xf
lbl_8030EE60:
/* 8030EE60 0030AAC0  2C 03 00 00 */	cmpwi r3, 0
/* 8030EE64 0030AAC4  41 82 00 08 */	beq lbl_8030EE6C
/* 8030EE68 0030AAC8  48 00 01 3C */	b lbl_8030EFA4
lbl_8030EE6C:
/* 8030EE6C 0030AACC  80 BD 00 1C */	lwz r5, 0x1c(r29)
/* 8030EE70 0030AAD0  2C 05 00 00 */	cmpwi r5, 0
/* 8030EE74 0030AAD4  41 82 01 2C */	beq lbl_8030EFA0
/* 8030EE78 0030AAD8  80 01 00 08 */	lwz r0, 8(r1)
/* 8030EE7C 0030AADC  28 00 00 01 */	cmplwi r0, 1
/* 8030EE80 0030AAE0  40 82 01 20 */	bne lbl_8030EFA0
/* 8030EE84 0030AAE4  2C 1C 00 00 */	cmpwi r28, 0
/* 8030EE88 0030AAE8  40 82 00 68 */	bne lbl_8030EEF0
/* 8030EE8C 0030AAEC  A0 7D 00 20 */	lhz r3, 0x20(r29)
/* 8030EE90 0030AAF0  80 1D 00 28 */	lwz r0, 0x28(r29)
/* 8030EE94 0030AAF4  38 83 00 01 */	addi r4, r3, 1
/* 8030EE98 0030AAF8  7C 7F 23 96 */	divwu r3, r31, r4
/* 8030EE9C 0030AAFC  7C 00 18 40 */	cmplw r0, r3
/* 8030EEA0 0030AB00  41 80 01 00 */	blt lbl_8030EFA0
/* 8030EEA4 0030AB04  7C 03 21 D6 */	mullw r0, r3, r4
/* 8030EEA8 0030AB08  7C 00 F8 51 */	subf. r0, r0, r31
/* 8030EEAC 0030AB0C  40 82 00 10 */	bne lbl_8030EEBC
/* 8030EEB0 0030AB10  54 60 10 3A */	slwi r0, r3, 2
/* 8030EEB4 0030AB14  38 60 00 00 */	li r3, 0
/* 8030EEB8 0030AB18  7C 65 01 2E */	stwx r3, r5, r0
lbl_8030EEBC:
/* 8030EEBC 0030AB1C  80 1D 00 2C */	lwz r0, 0x2c(r29)
/* 8030EEC0 0030AB20  7C 00 F8 40 */	cmplw r0, r31
/* 8030EEC4 0030AB24  41 80 00 DC */	blt lbl_8030EFA0
/* 8030EEC8 0030AB28  A0 7D 00 20 */	lhz r3, 0x20(r29)
/* 8030EECC 0030AB2C  38 9F FF FF */	addi r4, r31, -1
/* 8030EED0 0030AB30  90 9D 00 2C */	stw r4, 0x2c(r29)
/* 8030EED4 0030AB34  38 03 00 01 */	addi r0, r3, 1
/* 8030EED8 0030AB38  7C 64 03 96 */	divwu r3, r4, r0
/* 8030EEDC 0030AB3C  7C 03 01 D6 */	mullw r0, r3, r0
/* 8030EEE0 0030AB40  90 7D 00 24 */	stw r3, 0x24(r29)
/* 8030EEE4 0030AB44  7C 00 20 50 */	subf r0, r0, r4
/* 8030EEE8 0030AB48  B0 1D 00 22 */	sth r0, 0x22(r29)
/* 8030EEEC 0030AB4C  48 00 00 B4 */	b lbl_8030EFA0
lbl_8030EEF0:
/* 8030EEF0 0030AB50  80 7D 00 34 */	lwz r3, 0x34(r29)
/* 8030EEF4 0030AB54  3C 80 80 40 */	lis r4, lbl_803FE280@ha
/* 8030EEF8 0030AB58  38 84 E2 80 */	addi r4, r4, lbl_803FE280@l
/* 8030EEFC 0030AB5C  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030EF00 0030AB60  1C 00 00 14 */	mulli r0, r0, 0x14
/* 8030EF04 0030AB64  7C 64 02 14 */	add r3, r4, r0
/* 8030EF08 0030AB68  80 03 00 08 */	lwz r0, 8(r3)
/* 8030EF0C 0030AB6C  7C 1E 00 40 */	cmplw r30, r0
/* 8030EF10 0030AB70  41 82 00 90 */	beq lbl_8030EFA0
/* 8030EF14 0030AB74  7F A3 EB 78 */	mr r3, r29
/* 8030EF18 0030AB78  7F E4 FB 78 */	mr r4, r31
/* 8030EF1C 0030AB7C  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030EF20 0030AB80  38 C1 00 08 */	addi r6, r1, 8
/* 8030EF24 0030AB84  4B FF F9 49 */	bl VFiPFFAT_FindClusterLink
/* 8030EF28 0030AB88  2C 03 00 00 */	cmpwi r3, 0
/* 8030EF2C 0030AB8C  41 82 00 08 */	beq lbl_8030EF34
/* 8030EF30 0030AB90  48 00 00 74 */	b lbl_8030EFA4
lbl_8030EF34:
/* 8030EF34 0030AB94  80 01 00 08 */	lwz r0, 8(r1)
/* 8030EF38 0030AB98  2C 00 00 00 */	cmpwi r0, 0
/* 8030EF3C 0030AB9C  40 82 00 64 */	bne lbl_8030EFA0
/* 8030EF40 0030ABA0  80 9D 00 24 */	lwz r4, 0x24(r29)
/* 8030EF44 0030ABA4  80 1D 00 28 */	lwz r0, 0x28(r29)
/* 8030EF48 0030ABA8  7C 00 20 40 */	cmplw r0, r4
/* 8030EF4C 0030ABAC  40 81 00 54 */	ble lbl_8030EFA0
/* 8030EF50 0030ABB0  2C 00 00 00 */	cmpwi r0, 0
/* 8030EF54 0030ABB4  41 82 00 4C */	beq lbl_8030EFA0
/* 8030EF58 0030ABB8  A0 7D 00 20 */	lhz r3, 0x20(r29)
/* 8030EF5C 0030ABBC  38 03 00 01 */	addi r0, r3, 1
/* 8030EF60 0030ABC0  7C 04 01 D6 */	mullw r0, r4, r0
/* 8030EF64 0030ABC4  7C 1F 00 40 */	cmplw r31, r0
/* 8030EF68 0030ABC8  40 82 00 28 */	bne lbl_8030EF90
/* 8030EF6C 0030ABCC  38 00 00 00 */	li r0, 0
/* 8030EF70 0030ABD0  80 7D 00 1C */	lwz r3, 0x1c(r29)
/* 8030EF74 0030ABD4  B0 1D 00 22 */	sth r0, 0x22(r29)
/* 8030EF78 0030ABD8  54 80 10 3A */	slwi r0, r4, 2
/* 8030EF7C 0030ABDC  7F C3 01 2E */	stwx r30, r3, r0
/* 8030EF80 0030ABE0  80 7D 00 24 */	lwz r3, 0x24(r29)
/* 8030EF84 0030ABE4  38 03 00 01 */	addi r0, r3, 1
/* 8030EF88 0030ABE8  90 1D 00 24 */	stw r0, 0x24(r29)
/* 8030EF8C 0030ABEC  48 00 00 10 */	b lbl_8030EF9C
lbl_8030EF90:
/* 8030EF90 0030ABF0  A0 7D 00 22 */	lhz r3, 0x22(r29)
/* 8030EF94 0030ABF4  38 03 00 01 */	addi r0, r3, 1
/* 8030EF98 0030ABF8  B0 1D 00 22 */	sth r0, 0x22(r29)
lbl_8030EF9C:
/* 8030EF9C 0030ABFC  93 FD 00 2C */	stw r31, 0x2c(r29)
lbl_8030EFA0:
/* 8030EFA0 0030AC00  38 60 00 00 */	li r3, 0
lbl_8030EFA4:
/* 8030EFA4 0030AC04  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8030EFA8 0030AC08  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8030EFAC 0030AC0C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8030EFB0 0030AC10  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8030EFB4 0030AC14  83 81 00 10 */	lwz r28, 0x10(r1)
/* 8030EFB8 0030AC18  7C 08 03 A6 */	mtlr r0
/* 8030EFBC 0030AC1C  38 21 00 20 */	addi r1, r1, 0x20
/* 8030EFC0 0030AC20  4E 80 00 20 */	blr

.global VFiPFFAT_WriteClusterPage
VFiPFFAT_WriteClusterPage:
/* 8030EFC4 0030AC24  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8030EFC8 0030AC28  7C 08 02 A6 */	mflr r0
/* 8030EFCC 0030AC2C  90 01 00 34 */	stw r0, 0x34(r1)
/* 8030EFD0 0030AC30  39 61 00 30 */	addi r11, r1, 0x30
/* 8030EFD4 0030AC34  4B EB 81 55 */	bl _savegpr_27
/* 8030EFD8 0030AC38  90 E1 00 08 */	stw r7, 8(r1)
/* 8030EFDC 0030AC3C  7C 7D 1B 78 */	mr r29, r3
/* 8030EFE0 0030AC40  7C 9E 23 78 */	mr r30, r4
/* 8030EFE4 0030AC44  7C BF 2B 78 */	mr r31, r5
/* 8030EFE8 0030AC48  80 63 00 34 */	lwz r3, 0x34(r3)
/* 8030EFEC 0030AC4C  7C DB 33 78 */	mr r27, r6
/* 8030EFF0 0030AC50  7D 1C 43 78 */	mr r28, r8
/* 8030EFF4 0030AC54  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030EFF8 0030AC58  2C 00 00 01 */	cmpwi r0, 1
/* 8030EFFC 0030AC5C  41 82 00 44 */	beq lbl_8030F040
/* 8030F000 0030AC60  40 80 00 10 */	bge lbl_8030F010
/* 8030F004 0030AC64  2C 00 00 00 */	cmpwi r0, 0
/* 8030F008 0030AC68  40 80 00 14 */	bge lbl_8030F01C
/* 8030F00C 0030AC6C  48 00 00 7C */	b lbl_8030F088
lbl_8030F010:
/* 8030F010 0030AC70  2C 00 00 03 */	cmpwi r0, 3
/* 8030F014 0030AC74  40 80 00 74 */	bge lbl_8030F088
/* 8030F018 0030AC78  48 00 00 48 */	b lbl_8030F060
lbl_8030F01C:
/* 8030F01C 0030AC7C  28 06 0F FF */	cmplwi r6, 0xfff
/* 8030F020 0030AC80  40 81 00 0C */	ble lbl_8030F02C
/* 8030F024 0030AC84  38 60 00 10 */	li r3, 0x10
/* 8030F028 0030AC88  48 00 00 64 */	b lbl_8030F08C
lbl_8030F02C:
/* 8030F02C 0030AC8C  54 C5 04 3E */	clrlwi r5, r6, 0x10
/* 8030F030 0030AC90  7F 86 E3 78 */	mr r6, r28
/* 8030F034 0030AC94  54 84 04 3E */	clrlwi r4, r4, 0x10
/* 8030F038 0030AC98  48 00 27 95 */	bl VFiPFFAT12_WriteFATEntryPage
/* 8030F03C 0030AC9C  48 00 00 50 */	b lbl_8030F08C
lbl_8030F040:
/* 8030F040 0030ACA0  28 06 FF FF */	cmplwi r6, 0xffff
/* 8030F044 0030ACA4  40 81 00 0C */	ble lbl_8030F050
/* 8030F048 0030ACA8  38 60 00 10 */	li r3, 0x10
/* 8030F04C 0030ACAC  48 00 00 40 */	b lbl_8030F08C
lbl_8030F050:
/* 8030F050 0030ACB0  7F 65 DB 78 */	mr r5, r27
/* 8030F054 0030ACB4  7F 86 E3 78 */	mr r6, r28
/* 8030F058 0030ACB8  48 00 2F B9 */	bl VFiPFFAT16_WriteFATEntryPage
/* 8030F05C 0030ACBC  48 00 00 30 */	b lbl_8030F08C
lbl_8030F060:
/* 8030F060 0030ACC0  3C A0 10 00 */	lis r5, 0x0FFFFFFF@ha
/* 8030F064 0030ACC4  38 05 FF FF */	addi r0, r5, 0x0FFFFFFF@l
/* 8030F068 0030ACC8  7C 06 00 40 */	cmplw r6, r0
/* 8030F06C 0030ACCC  40 81 00 0C */	ble lbl_8030F078
/* 8030F070 0030ACD0  38 60 00 10 */	li r3, 0x10
/* 8030F074 0030ACD4  48 00 00 18 */	b lbl_8030F08C
lbl_8030F078:
/* 8030F078 0030ACD8  7F 65 DB 78 */	mr r5, r27
/* 8030F07C 0030ACDC  7F 86 E3 78 */	mr r6, r28
/* 8030F080 0030ACE0  48 00 35 B1 */	bl VFiPFFAT32_WriteFATEntryPage
/* 8030F084 0030ACE4  48 00 00 08 */	b lbl_8030F08C
lbl_8030F088:
/* 8030F088 0030ACE8  38 60 00 0F */	li r3, 0xf
lbl_8030F08C:
/* 8030F08C 0030ACEC  2C 03 00 00 */	cmpwi r3, 0
/* 8030F090 0030ACF0  41 82 00 08 */	beq lbl_8030F098
/* 8030F094 0030ACF4  48 00 01 40 */	b lbl_8030F1D4
lbl_8030F098:
/* 8030F098 0030ACF8  80 BD 00 1C */	lwz r5, 0x1c(r29)
/* 8030F09C 0030ACFC  2C 05 00 00 */	cmpwi r5, 0
/* 8030F0A0 0030AD00  41 82 01 30 */	beq lbl_8030F1D0
/* 8030F0A4 0030AD04  80 01 00 08 */	lwz r0, 8(r1)
/* 8030F0A8 0030AD08  28 00 00 01 */	cmplwi r0, 1
/* 8030F0AC 0030AD0C  40 82 01 24 */	bne lbl_8030F1D0
/* 8030F0B0 0030AD10  2C 1B 00 00 */	cmpwi r27, 0
/* 8030F0B4 0030AD14  40 82 00 68 */	bne lbl_8030F11C
/* 8030F0B8 0030AD18  A0 7D 00 20 */	lhz r3, 0x20(r29)
/* 8030F0BC 0030AD1C  80 1D 00 28 */	lwz r0, 0x28(r29)
/* 8030F0C0 0030AD20  38 83 00 01 */	addi r4, r3, 1
/* 8030F0C4 0030AD24  7C 7F 23 96 */	divwu r3, r31, r4
/* 8030F0C8 0030AD28  7C 00 18 40 */	cmplw r0, r3
/* 8030F0CC 0030AD2C  41 80 01 04 */	blt lbl_8030F1D0
/* 8030F0D0 0030AD30  7C 03 21 D6 */	mullw r0, r3, r4
/* 8030F0D4 0030AD34  7C 00 F8 51 */	subf. r0, r0, r31
/* 8030F0D8 0030AD38  40 82 00 10 */	bne lbl_8030F0E8
/* 8030F0DC 0030AD3C  54 60 10 3A */	slwi r0, r3, 2
/* 8030F0E0 0030AD40  38 60 00 00 */	li r3, 0
/* 8030F0E4 0030AD44  7C 65 01 2E */	stwx r3, r5, r0
lbl_8030F0E8:
/* 8030F0E8 0030AD48  80 1D 00 2C */	lwz r0, 0x2c(r29)
/* 8030F0EC 0030AD4C  7C 00 F8 40 */	cmplw r0, r31
/* 8030F0F0 0030AD50  41 80 00 E0 */	blt lbl_8030F1D0
/* 8030F0F4 0030AD54  A0 7D 00 20 */	lhz r3, 0x20(r29)
/* 8030F0F8 0030AD58  38 9F FF FF */	addi r4, r31, -1
/* 8030F0FC 0030AD5C  90 9D 00 2C */	stw r4, 0x2c(r29)
/* 8030F100 0030AD60  38 03 00 01 */	addi r0, r3, 1
/* 8030F104 0030AD64  7C 64 03 96 */	divwu r3, r4, r0
/* 8030F108 0030AD68  7C 03 01 D6 */	mullw r0, r3, r0
/* 8030F10C 0030AD6C  90 7D 00 24 */	stw r3, 0x24(r29)
/* 8030F110 0030AD70  7C 00 20 50 */	subf r0, r0, r4
/* 8030F114 0030AD74  B0 1D 00 22 */	sth r0, 0x22(r29)
/* 8030F118 0030AD78  48 00 00 B8 */	b lbl_8030F1D0
lbl_8030F11C:
/* 8030F11C 0030AD7C  80 7D 00 34 */	lwz r3, 0x34(r29)
/* 8030F120 0030AD80  3C 80 80 40 */	lis r4, lbl_803FE280@ha
/* 8030F124 0030AD84  38 84 E2 80 */	addi r4, r4, lbl_803FE280@l
/* 8030F128 0030AD88  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030F12C 0030AD8C  1C 00 00 14 */	mulli r0, r0, 0x14
/* 8030F130 0030AD90  7C 64 02 14 */	add r3, r4, r0
/* 8030F134 0030AD94  80 03 00 08 */	lwz r0, 8(r3)
/* 8030F138 0030AD98  7C 1E 00 40 */	cmplw r30, r0
/* 8030F13C 0030AD9C  41 82 00 94 */	beq lbl_8030F1D0
/* 8030F140 0030ADA0  80 FC 00 00 */	lwz r7, 0(r28)
/* 8030F144 0030ADA4  7F A3 EB 78 */	mr r3, r29
/* 8030F148 0030ADA8  7F E4 FB 78 */	mr r4, r31
/* 8030F14C 0030ADAC  38 A1 00 0C */	addi r5, r1, 0xc
/* 8030F150 0030ADB0  38 C1 00 08 */	addi r6, r1, 8
/* 8030F154 0030ADB4  4B FF F8 D5 */	bl VFiPFFAT_FindClusterLinkPage
/* 8030F158 0030ADB8  2C 03 00 00 */	cmpwi r3, 0
/* 8030F15C 0030ADBC  41 82 00 08 */	beq lbl_8030F164
/* 8030F160 0030ADC0  48 00 00 74 */	b lbl_8030F1D4
lbl_8030F164:
/* 8030F164 0030ADC4  80 01 00 08 */	lwz r0, 8(r1)
/* 8030F168 0030ADC8  2C 00 00 00 */	cmpwi r0, 0
/* 8030F16C 0030ADCC  40 82 00 64 */	bne lbl_8030F1D0
/* 8030F170 0030ADD0  80 9D 00 24 */	lwz r4, 0x24(r29)
/* 8030F174 0030ADD4  80 1D 00 28 */	lwz r0, 0x28(r29)
/* 8030F178 0030ADD8  7C 00 20 40 */	cmplw r0, r4
/* 8030F17C 0030ADDC  40 81 00 54 */	ble lbl_8030F1D0
/* 8030F180 0030ADE0  2C 00 00 00 */	cmpwi r0, 0
/* 8030F184 0030ADE4  41 82 00 4C */	beq lbl_8030F1D0
/* 8030F188 0030ADE8  A0 7D 00 20 */	lhz r3, 0x20(r29)
/* 8030F18C 0030ADEC  38 03 00 01 */	addi r0, r3, 1
/* 8030F190 0030ADF0  7C 04 01 D6 */	mullw r0, r4, r0
/* 8030F194 0030ADF4  7C 1F 00 40 */	cmplw r31, r0
/* 8030F198 0030ADF8  40 82 00 28 */	bne lbl_8030F1C0
/* 8030F19C 0030ADFC  38 00 00 00 */	li r0, 0
/* 8030F1A0 0030AE00  80 7D 00 1C */	lwz r3, 0x1c(r29)
/* 8030F1A4 0030AE04  B0 1D 00 22 */	sth r0, 0x22(r29)
/* 8030F1A8 0030AE08  54 80 10 3A */	slwi r0, r4, 2
/* 8030F1AC 0030AE0C  7F C3 01 2E */	stwx r30, r3, r0
/* 8030F1B0 0030AE10  80 7D 00 24 */	lwz r3, 0x24(r29)
/* 8030F1B4 0030AE14  38 03 00 01 */	addi r0, r3, 1
/* 8030F1B8 0030AE18  90 1D 00 24 */	stw r0, 0x24(r29)
/* 8030F1BC 0030AE1C  48 00 00 10 */	b lbl_8030F1CC
lbl_8030F1C0:
/* 8030F1C0 0030AE20  A0 7D 00 22 */	lhz r3, 0x22(r29)
/* 8030F1C4 0030AE24  38 03 00 01 */	addi r0, r3, 1
/* 8030F1C8 0030AE28  B0 1D 00 22 */	sth r0, 0x22(r29)
lbl_8030F1CC:
/* 8030F1CC 0030AE2C  93 FD 00 2C */	stw r31, 0x2c(r29)
lbl_8030F1D0:
/* 8030F1D0 0030AE30  38 60 00 00 */	li r3, 0
lbl_8030F1D4:
/* 8030F1D4 0030AE34  39 61 00 30 */	addi r11, r1, 0x30
/* 8030F1D8 0030AE38  4B EB 7F 9D */	bl _restgpr_27
/* 8030F1DC 0030AE3C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030F1E0 0030AE40  7C 08 03 A6 */	mtlr r0
/* 8030F1E4 0030AE44  38 21 00 30 */	addi r1, r1, 0x30
/* 8030F1E8 0030AE48  4E 80 00 20 */	blr

.global VFiPFFAT_DoAllocateChain
VFiPFFAT_DoAllocateChain:
/* 8030F1EC 0030AE4C  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8030F1F0 0030AE50  7C 08 02 A6 */	mflr r0
/* 8030F1F4 0030AE54  90 01 00 44 */	stw r0, 0x44(r1)
/* 8030F1F8 0030AE58  39 61 00 40 */	addi r11, r1, 0x40
/* 8030F1FC 0030AE5C  4B EB 7F 25 */	bl _savegpr_25
/* 8030F200 0030AE60  83 E3 00 34 */	lwz r31, 0x34(r3)
/* 8030F204 0030AE64  7C 79 1B 78 */	mr r25, r3
/* 8030F208 0030AE68  3D 00 80 40 */	lis r8, lbl_803FE280@ha
/* 8030F20C 0030AE6C  38 00 FF FF */	li r0, -1
/* 8030F210 0030AE70  80 7F 00 1C */	lwz r3, 0x1c(r31)
/* 8030F214 0030AE74  39 08 E2 80 */	addi r8, r8, lbl_803FE280@l
/* 8030F218 0030AE78  7C BA 2B 78 */	mr r26, r5
/* 8030F21C 0030AE7C  7C DB 33 78 */	mr r27, r6
/* 8030F220 0030AE80  90 06 00 00 */	stw r0, 0(r6)
/* 8030F224 0030AE84  1C 63 00 14 */	mulli r3, r3, 0x14
/* 8030F228 0030AE88  7C 86 23 78 */	mr r6, r4
/* 8030F22C 0030AE8C  90 07 00 00 */	stw r0, 0(r7)
/* 8030F230 0030AE90  7C FC 3B 78 */	mr r28, r7
/* 8030F234 0030AE94  7C A8 1A 14 */	add r5, r8, r3
/* 8030F238 0030AE98  38 E1 00 10 */	addi r7, r1, 0x10
/* 8030F23C 0030AE9C  90 01 00 0C */	stw r0, 0xc(r1)
/* 8030F240 0030AEA0  7F E3 FB 78 */	mr r3, r31
/* 8030F244 0030AEA4  83 C5 00 08 */	lwz r30, 8(r5)
/* 8030F248 0030AEA8  39 01 00 0C */	addi r8, r1, 0xc
/* 8030F24C 0030AEAC  80 9F 00 3C */	lwz r4, 0x3c(r31)
/* 8030F250 0030AEB0  38 A0 FF FF */	li r5, -1
/* 8030F254 0030AEB4  4B FF F4 15 */	bl VFiPFFAT_SearchForNumFreeClusters
/* 8030F258 0030AEB8  2C 03 00 00 */	cmpwi r3, 0
/* 8030F25C 0030AEBC  41 82 00 08 */	beq lbl_8030F264
/* 8030F260 0030AEC0  48 00 02 20 */	b lbl_8030F480
lbl_8030F264:
/* 8030F264 0030AEC4  80 A1 00 10 */	lwz r5, 0x10(r1)
/* 8030F268 0030AEC8  3C 05 00 01 */	addis r0, r5, 1
/* 8030F26C 0030AECC  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030F270 0030AED0  40 82 00 0C */	bne lbl_8030F27C
/* 8030F274 0030AED4  38 60 00 00 */	li r3, 0
/* 8030F278 0030AED8  48 00 02 08 */	b lbl_8030F480
lbl_8030F27C:
/* 8030F27C 0030AEDC  7F E3 FB 78 */	mr r3, r31
/* 8030F280 0030AEE0  38 81 00 08 */	addi r4, r1, 8
/* 8030F284 0030AEE4  4B FF F2 B5 */	bl VFiPFFAT_ReadFATSector
/* 8030F288 0030AEE8  2C 03 00 00 */	cmpwi r3, 0
/* 8030F28C 0030AEEC  41 82 00 08 */	beq lbl_8030F294
/* 8030F290 0030AEF0  48 00 01 F0 */	b lbl_8030F480
lbl_8030F294:
/* 8030F294 0030AEF4  80 61 00 08 */	lwz r3, 8(r1)
/* 8030F298 0030AEF8  38 00 00 00 */	li r0, 0
/* 8030F29C 0030AEFC  B0 03 00 02 */	sth r0, 2(r3)
/* 8030F2A0 0030AF00  83 A1 00 10 */	lwz r29, 0x10(r1)
/* 8030F2A4 0030AF04  48 00 00 98 */	b lbl_8030F33C
lbl_8030F2A8:
/* 8030F2A8 0030AF08  7F 23 CB 78 */	mr r3, r25
/* 8030F2AC 0030AF0C  7F A4 EB 78 */	mr r4, r29
/* 8030F2B0 0030AF10  7F 45 D3 78 */	mr r5, r26
/* 8030F2B4 0030AF14  38 DD 00 01 */	addi r6, r29, 1
/* 8030F2B8 0030AF18  39 01 00 08 */	addi r8, r1, 8
/* 8030F2BC 0030AF1C  38 E0 00 01 */	li r7, 1
/* 8030F2C0 0030AF20  4B FF FD 05 */	bl VFiPFFAT_WriteClusterPage
/* 8030F2C4 0030AF24  2C 03 00 00 */	cmpwi r3, 0
/* 8030F2C8 0030AF28  41 82 00 08 */	beq lbl_8030F2D0
/* 8030F2CC 0030AF2C  48 00 01 B4 */	b lbl_8030F480
lbl_8030F2D0:
/* 8030F2D0 0030AF30  A0 1F 18 7C */	lhz r0, 0x187c(r31)
/* 8030F2D4 0030AF34  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 8030F2D8 0030AF38  41 82 00 44 */	beq lbl_8030F31C
/* 8030F2DC 0030AF3C  80 7F 00 38 */	lwz r3, 0x38(r31)
/* 8030F2E0 0030AF40  3C 03 00 01 */	addis r0, r3, 1
/* 8030F2E4 0030AF44  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030F2E8 0030AF48  41 82 00 34 */	beq lbl_8030F31C
/* 8030F2EC 0030AF4C  2C 03 00 00 */	cmpwi r3, 0
/* 8030F2F0 0030AF50  41 82 00 2C */	beq lbl_8030F31C
/* 8030F2F4 0030AF54  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 8030F2F8 0030AF58  2C 00 00 02 */	cmpwi r0, 2
/* 8030F2FC 0030AF5C  40 82 00 14 */	bne lbl_8030F310
/* 8030F300 0030AF60  80 61 00 0C */	lwz r3, 0xc(r1)
/* 8030F304 0030AF64  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 8030F308 0030AF68  7C 03 00 40 */	cmplw r3, r0
/* 8030F30C 0030AF6C  41 82 00 10 */	beq lbl_8030F31C
lbl_8030F310:
/* 8030F310 0030AF70  80 7F 00 38 */	lwz r3, 0x38(r31)
/* 8030F314 0030AF74  38 03 FF FF */	addi r0, r3, -1
/* 8030F318 0030AF78  90 1F 00 38 */	stw r0, 0x38(r31)
lbl_8030F31C:
/* 8030F31C 0030AF7C  80 7B 00 00 */	lwz r3, 0(r27)
/* 8030F320 0030AF80  3C 03 00 01 */	addis r0, r3, 1
/* 8030F324 0030AF84  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030F328 0030AF88  40 82 00 08 */	bne lbl_8030F330
/* 8030F32C 0030AF8C  93 BB 00 00 */	stw r29, 0(r27)
lbl_8030F330:
/* 8030F330 0030AF90  93 BC 00 00 */	stw r29, 0(r28)
/* 8030F334 0030AF94  3B 5A 00 01 */	addi r26, r26, 1
/* 8030F338 0030AF98  3B BD 00 01 */	addi r29, r29, 1
lbl_8030F33C:
/* 8030F33C 0030AF9C  80 81 00 0C */	lwz r4, 0xc(r1)
/* 8030F340 0030AFA0  7C 1D 20 40 */	cmplw r29, r4
/* 8030F344 0030AFA4  41 80 FF 64 */	blt lbl_8030F2A8
/* 8030F348 0030AFA8  3C 04 00 01 */	addis r0, r4, 1
/* 8030F34C 0030AFAC  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030F350 0030AFB0  41 82 00 80 */	beq lbl_8030F3D0
/* 8030F354 0030AFB4  7F 23 CB 78 */	mr r3, r25
/* 8030F358 0030AFB8  7F 45 D3 78 */	mr r5, r26
/* 8030F35C 0030AFBC  7F C6 F3 78 */	mr r6, r30
/* 8030F360 0030AFC0  39 01 00 08 */	addi r8, r1, 8
/* 8030F364 0030AFC4  38 E0 00 01 */	li r7, 1
/* 8030F368 0030AFC8  4B FF FC 5D */	bl VFiPFFAT_WriteClusterPage
/* 8030F36C 0030AFCC  2C 03 00 00 */	cmpwi r3, 0
/* 8030F370 0030AFD0  41 82 00 08 */	beq lbl_8030F378
/* 8030F374 0030AFD4  48 00 01 0C */	b lbl_8030F480
lbl_8030F378:
/* 8030F378 0030AFD8  80 7B 00 00 */	lwz r3, 0(r27)
/* 8030F37C 0030AFDC  3C 03 00 01 */	addis r0, r3, 1
/* 8030F380 0030AFE0  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030F384 0030AFE4  40 82 00 08 */	bne lbl_8030F38C
/* 8030F388 0030AFE8  93 BB 00 00 */	stw r29, 0(r27)
lbl_8030F38C:
/* 8030F38C 0030AFEC  93 BC 00 00 */	stw r29, 0(r28)
/* 8030F390 0030AFF0  80 7F 00 38 */	lwz r3, 0x38(r31)
/* 8030F394 0030AFF4  3C 03 00 01 */	addis r0, r3, 1
/* 8030F398 0030AFF8  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030F39C 0030AFFC  41 82 00 34 */	beq lbl_8030F3D0
/* 8030F3A0 0030B000  2C 03 00 00 */	cmpwi r3, 0
/* 8030F3A4 0030B004  41 82 00 2C */	beq lbl_8030F3D0
/* 8030F3A8 0030B008  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 8030F3AC 0030B00C  2C 00 00 02 */	cmpwi r0, 2
/* 8030F3B0 0030B010  40 82 00 14 */	bne lbl_8030F3C4
/* 8030F3B4 0030B014  80 61 00 0C */	lwz r3, 0xc(r1)
/* 8030F3B8 0030B018  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 8030F3BC 0030B01C  7C 03 00 40 */	cmplw r3, r0
/* 8030F3C0 0030B020  41 82 00 10 */	beq lbl_8030F3D0
lbl_8030F3C4:
/* 8030F3C4 0030B024  80 7F 00 38 */	lwz r3, 0x38(r31)
/* 8030F3C8 0030B028  38 03 FF FF */	addi r0, r3, -1
/* 8030F3CC 0030B02C  90 1F 00 38 */	stw r0, 0x38(r31)
lbl_8030F3D0:
/* 8030F3D0 0030B030  80 81 00 0C */	lwz r4, 0xc(r1)
/* 8030F3D4 0030B034  38 60 00 00 */	li r3, 0
/* 8030F3D8 0030B038  38 04 00 01 */	addi r0, r4, 1
/* 8030F3DC 0030B03C  90 1F 00 3C */	stw r0, 0x3c(r31)
/* 8030F3E0 0030B040  80 01 00 0C */	lwz r0, 0xc(r1)
/* 8030F3E4 0030B044  90 19 00 0C */	stw r0, 0xc(r25)
/* 8030F3E8 0030B048  93 59 00 10 */	stw r26, 0x10(r25)
/* 8030F3EC 0030B04C  80 01 00 0C */	lwz r0, 0xc(r1)
/* 8030F3F0 0030B050  90 1C 00 00 */	stw r0, 0(r28)
/* 8030F3F4 0030B054  80 81 00 08 */	lwz r4, 8(r1)
/* 8030F3F8 0030B058  A0 04 00 00 */	lhz r0, 0(r4)
/* 8030F3FC 0030B05C  54 00 07 BC */	rlwinm r0, r0, 0, 0x1e, 0x1e
/* 8030F400 0030B060  2C 00 00 02 */	cmpwi r0, 2
/* 8030F404 0030B064  40 82 00 0C */	bne lbl_8030F410
/* 8030F408 0030B068  7F E3 FB 78 */	mr r3, r31
/* 8030F40C 0030B06C  4B FF B5 71 */	bl VFiPFCACHE_WriteFATPage
lbl_8030F410:
/* 8030F410 0030B070  2C 03 00 00 */	cmpwi r3, 0
/* 8030F414 0030B074  41 82 00 08 */	beq lbl_8030F41C
/* 8030F418 0030B078  48 00 00 68 */	b lbl_8030F480
lbl_8030F41C:
/* 8030F41C 0030B07C  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 8030F420 0030B080  2C 80 00 02 */	cmpwi cr1, r0, 2
/* 8030F424 0030B084  40 86 00 58 */	bne cr1, lbl_8030F47C
/* 8030F428 0030B088  A0 1F 18 7C */	lhz r0, 0x187c(r31)
/* 8030F42C 0030B08C  54 03 07 BD */	rlwinm. r3, r0, 0, 0x1e, 0x1e
/* 8030F430 0030B090  41 82 00 4C */	beq lbl_8030F47C
/* 8030F434 0030B094  38 60 00 00 */	li r3, 0
/* 8030F438 0030B098  41 86 00 0C */	beq cr1, lbl_8030F444
/* 8030F43C 0030B09C  38 60 00 0C */	li r3, 0xc
/* 8030F440 0030B0A0  48 00 00 20 */	b lbl_8030F460
lbl_8030F444:
/* 8030F444 0030B0A4  40 82 00 0C */	bne lbl_8030F450
/* 8030F448 0030B0A8  38 60 00 24 */	li r3, 0x24
/* 8030F44C 0030B0AC  48 00 00 14 */	b lbl_8030F460
lbl_8030F450:
/* 8030F450 0030B0B0  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 8030F454 0030B0B4  41 82 00 0C */	beq lbl_8030F460
/* 8030F458 0030B0B8  7F E3 FB 78 */	mr r3, r31
/* 8030F45C 0030B0BC  4B FF 67 41 */	bl VFiPFDRV_StoreFreeCountToFSINFO
lbl_8030F460:
/* 8030F460 0030B0C0  2C 03 00 00 */	cmpwi r3, 0
/* 8030F464 0030B0C4  41 82 00 18 */	beq lbl_8030F47C
/* 8030F468 0030B0C8  38 00 FF FF */	li r0, -1
/* 8030F46C 0030B0CC  90 1F 00 38 */	stw r0, 0x38(r31)
/* 8030F470 0030B0D0  A0 1F 18 7C */	lhz r0, 0x187c(r31)
/* 8030F474 0030B0D4  54 00 07 B8 */	rlwinm r0, r0, 0, 0x1e, 0x1c
/* 8030F478 0030B0D8  B0 1F 18 7C */	sth r0, 0x187c(r31)
lbl_8030F47C:
/* 8030F47C 0030B0DC  38 60 00 00 */	li r3, 0
lbl_8030F480:
/* 8030F480 0030B0E0  39 61 00 40 */	addi r11, r1, 0x40
/* 8030F484 0030B0E4  4B EB 7C E9 */	bl _restgpr_25
/* 8030F488 0030B0E8  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8030F48C 0030B0EC  7C 08 03 A6 */	mtlr r0
/* 8030F490 0030B0F0  38 21 00 40 */	addi r1, r1, 0x40
/* 8030F494 0030B0F4  4E 80 00 20 */	blr

.global VFiPFFAT_GetClusterInChain
VFiPFFAT_GetClusterInChain:
/* 8030F498 0030B0F8  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 8030F49C 0030B0FC  7C 08 02 A6 */	mflr r0
/* 8030F4A0 0030B100  90 01 00 54 */	stw r0, 0x54(r1)
/* 8030F4A4 0030B104  39 61 00 50 */	addi r11, r1, 0x50
/* 8030F4A8 0030B108  4B EB 7C 69 */	bl _savegpr_21
/* 8030F4AC 0030B10C  38 00 00 00 */	li r0, 0
/* 8030F4B0 0030B110  3D 20 80 40 */	lis r9, lbl_803FE280@ha
/* 8030F4B4 0030B114  90 01 00 08 */	stw r0, 8(r1)
/* 8030F4B8 0030B118  38 00 FF FF */	li r0, -1
/* 8030F4BC 0030B11C  7D 19 43 78 */	mr r25, r8
/* 8030F4C0 0030B120  39 29 E2 80 */	addi r9, r9, lbl_803FE280@l
/* 8030F4C4 0030B124  81 43 00 34 */	lwz r10, 0x34(r3)
/* 8030F4C8 0030B128  7C F8 3B 78 */	mr r24, r7
/* 8030F4CC 0030B12C  7C 76 1B 78 */	mr r22, r3
/* 8030F4D0 0030B130  7C B7 2B 78 */	mr r23, r5
/* 8030F4D4 0030B134  81 4A 00 1C */	lwz r10, 0x1c(r10)
/* 8030F4D8 0030B138  90 08 00 00 */	stw r0, 0(r8)
/* 8030F4DC 0030B13C  1D 0A 00 14 */	mulli r8, r10, 0x14
/* 8030F4E0 0030B140  90 07 00 00 */	stw r0, 0(r7)
/* 8030F4E4 0030B144  7C E9 42 14 */	add r7, r9, r8
/* 8030F4E8 0030B148  7F E9 40 2E */	lwzx r31, r9, r8
/* 8030F4EC 0030B14C  80 03 00 14 */	lwz r0, 0x14(r3)
/* 8030F4F0 0030B150  83 C7 00 04 */	lwz r30, 4(r7)
/* 8030F4F4 0030B154  2C 00 00 00 */	cmpwi r0, 0
/* 8030F4F8 0030B158  41 82 00 28 */	beq lbl_8030F520
/* 8030F4FC 0030B15C  7C 00 20 40 */	cmplw r0, r4
/* 8030F500 0030B160  41 81 00 20 */	bgt lbl_8030F520
/* 8030F504 0030B164  80 03 00 18 */	lwz r0, 0x18(r3)
/* 8030F508 0030B168  3B 41 00 10 */	addi r26, r1, 0x10
/* 8030F50C 0030B16C  90 01 00 10 */	stw r0, 0x10(r1)
/* 8030F510 0030B170  80 E3 00 14 */	lwz r7, 0x14(r3)
/* 8030F514 0030B174  7F 87 20 50 */	subf r28, r7, r4
/* 8030F518 0030B178  3B 67 00 01 */	addi r27, r7, 1
/* 8030F51C 0030B17C  48 00 00 10 */	b lbl_8030F52C
lbl_8030F520:
/* 8030F520 0030B180  83 43 00 08 */	lwz r26, 8(r3)
/* 8030F524 0030B184  7C 9C 23 78 */	mr r28, r4
/* 8030F528 0030B188  3B 60 00 01 */	li r27, 1
lbl_8030F52C:
/* 8030F52C 0030B18C  83 BA 00 00 */	lwz r29, 0(r26)
/* 8030F530 0030B190  28 05 00 02 */	cmplwi r5, 2
/* 8030F534 0030B194  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8030F538 0030B198  40 82 00 74 */	bne lbl_8030F5AC
/* 8030F53C 0030B19C  2C 1C 00 00 */	cmpwi r28, 0
/* 8030F540 0030B1A0  41 82 00 18 */	beq lbl_8030F558
/* 8030F544 0030B1A4  2C 06 00 00 */	cmpwi r6, 0
/* 8030F548 0030B1A8  41 82 00 10 */	beq lbl_8030F558
/* 8030F54C 0030B1AC  7C BC 32 14 */	add r5, r28, r6
/* 8030F550 0030B1B0  3B 85 FF FF */	addi r28, r5, -1
/* 8030F554 0030B1B4  48 00 00 08 */	b lbl_8030F55C
lbl_8030F558:
/* 8030F558 0030B1B8  7C DC 33 78 */	mr r28, r6
lbl_8030F55C:
/* 8030F55C 0030B1BC  81 23 00 0C */	lwz r9, 0xc(r3)
/* 8030F560 0030B1C0  7F 88 E3 78 */	mr r8, r28
/* 8030F564 0030B1C4  2C 09 00 00 */	cmpwi r9, 0
/* 8030F568 0030B1C8  41 82 00 5C */	beq lbl_8030F5C4
/* 8030F56C 0030B1CC  80 A3 00 34 */	lwz r5, 0x34(r3)
/* 8030F570 0030B1D0  3C E0 80 40 */	lis r7, lbl_803FE280@ha
/* 8030F574 0030B1D4  81 03 00 10 */	lwz r8, 0x10(r3)
/* 8030F578 0030B1D8  38 E7 E2 80 */	addi r7, r7, lbl_803FE280@l
/* 8030F57C 0030B1DC  80 05 00 1C */	lwz r0, 0x1c(r5)
/* 8030F580 0030B1E0  7D 3D 4B 78 */	mr r29, r9
/* 8030F584 0030B1E4  7C A8 32 14 */	add r5, r8, r6
/* 8030F588 0030B1E8  3B 80 00 00 */	li r28, 0
/* 8030F58C 0030B1EC  1C 00 00 14 */	mulli r0, r0, 0x14
/* 8030F590 0030B1F0  7D 04 28 50 */	subf r8, r4, r5
/* 8030F594 0030B1F4  7C 87 02 14 */	add r4, r7, r0
/* 8030F598 0030B1F8  80 04 00 08 */	lwz r0, 8(r4)
/* 8030F59C 0030B1FC  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030F5A0 0030B200  80 83 00 10 */	lwz r4, 0x10(r3)
/* 8030F5A4 0030B204  3B 64 00 01 */	addi r27, r4, 1
/* 8030F5A8 0030B208  48 00 00 1C */	b lbl_8030F5C4
lbl_8030F5AC:
/* 8030F5AC 0030B20C  28 05 00 01 */	cmplwi r5, 1
/* 8030F5B0 0030B210  40 82 00 10 */	bne lbl_8030F5C0
/* 8030F5B4 0030B214  2C 1D 00 00 */	cmpwi r29, 0
/* 8030F5B8 0030B218  40 82 00 08 */	bne lbl_8030F5C0
/* 8030F5BC 0030B21C  3B 9C 00 01 */	addi r28, r28, 1
lbl_8030F5C0:
/* 8030F5C0 0030B220  7F 88 E3 78 */	mr r8, r28
lbl_8030F5C4:
/* 8030F5C4 0030B224  2C 1C 00 00 */	cmpwi r28, 0
/* 8030F5C8 0030B228  41 82 00 FC */	beq lbl_8030F6C4
/* 8030F5CC 0030B22C  80 63 00 34 */	lwz r3, 0x34(r3)
/* 8030F5D0 0030B230  7F A5 EB 78 */	mr r5, r29
/* 8030F5D4 0030B234  38 81 00 08 */	addi r4, r1, 8
/* 8030F5D8 0030B238  4B FF EF 61 */	bl VFiPFFAT_ReadFATSector
/* 8030F5DC 0030B23C  2C 03 00 00 */	cmpwi r3, 0
/* 8030F5E0 0030B240  41 82 00 08 */	beq lbl_8030F5E8
/* 8030F5E4 0030B244  48 00 01 C4 */	b lbl_8030F7A8
lbl_8030F5E8:
/* 8030F5E8 0030B248  80 61 00 08 */	lwz r3, 8(r1)
/* 8030F5EC 0030B24C  38 80 00 00 */	li r4, 0
/* 8030F5F0 0030B250  3E A0 80 40 */	lis r21, lbl_803FE280@ha
/* 8030F5F4 0030B254  38 00 00 01 */	li r0, 1
/* 8030F5F8 0030B258  B0 83 00 02 */	sth r4, 2(r3)
/* 8030F5FC 0030B25C  3A B5 E2 80 */	addi r21, r21, lbl_803FE280@l
/* 8030F600 0030B260  90 01 00 0C */	stw r0, 0xc(r1)
/* 8030F604 0030B264  48 00 00 A8 */	b lbl_8030F6AC
lbl_8030F608:
/* 8030F608 0030B268  2C 1D 00 00 */	cmpwi r29, 0
/* 8030F60C 0030B26C  41 82 00 3C */	beq lbl_8030F648
/* 8030F610 0030B270  7E C3 B3 78 */	mr r3, r22
/* 8030F614 0030B274  7F A4 EB 78 */	mr r4, r29
/* 8030F618 0030B278  7F 65 DB 78 */	mr r5, r27
/* 8030F61C 0030B27C  38 C1 00 14 */	addi r6, r1, 0x14
/* 8030F620 0030B280  38 E1 00 0C */	addi r7, r1, 0xc
/* 8030F624 0030B284  39 01 00 08 */	addi r8, r1, 8
/* 8030F628 0030B288  4B FF F5 AD */	bl VFiPFFAT_ReadClusterPage
/* 8030F62C 0030B28C  2C 03 00 00 */	cmpwi r3, 0
/* 8030F630 0030B290  41 82 00 34 */	beq lbl_8030F664
/* 8030F634 0030B294  80 81 00 14 */	lwz r4, 0x14(r1)
/* 8030F638 0030B298  3C 04 00 01 */	addis r0, r4, 1
/* 8030F63C 0030B29C  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030F640 0030B2A0  41 82 00 24 */	beq lbl_8030F664
/* 8030F644 0030B2A4  48 00 01 64 */	b lbl_8030F7A8
lbl_8030F648:
/* 8030F648 0030B2A8  80 76 00 34 */	lwz r3, 0x34(r22)
/* 8030F64C 0030B2AC  3B 7B FF FF */	addi r27, r27, -1
/* 8030F650 0030B2B0  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030F654 0030B2B4  1C 00 00 14 */	mulli r0, r0, 0x14
/* 8030F658 0030B2B8  7C 75 02 14 */	add r3, r21, r0
/* 8030F65C 0030B2BC  80 03 00 08 */	lwz r0, 8(r3)
/* 8030F660 0030B2C0  90 01 00 14 */	stw r0, 0x14(r1)
lbl_8030F664:
/* 8030F664 0030B2C4  80 81 00 14 */	lwz r4, 0x14(r1)
/* 8030F668 0030B2C8  28 04 00 02 */	cmplwi r4, 2
/* 8030F66C 0030B2CC  41 80 00 18 */	blt lbl_8030F684
/* 8030F670 0030B2D0  80 76 00 34 */	lwz r3, 0x34(r22)
/* 8030F674 0030B2D4  80 63 00 34 */	lwz r3, 0x34(r3)
/* 8030F678 0030B2D8  38 03 00 02 */	addi r0, r3, 2
/* 8030F67C 0030B2DC  7C 04 00 40 */	cmplw r4, r0
/* 8030F680 0030B2E0  41 80 00 14 */	blt lbl_8030F694
lbl_8030F684:
/* 8030F684 0030B2E4  7C 04 F0 40 */	cmplw r4, r30
/* 8030F688 0030B2E8  40 80 00 0C */	bge lbl_8030F694
/* 8030F68C 0030B2EC  38 60 00 0E */	li r3, 0xe
/* 8030F690 0030B2F0  48 00 01 18 */	b lbl_8030F7A8
lbl_8030F694:
/* 8030F694 0030B2F4  2C 17 00 00 */	cmpwi r23, 0
/* 8030F698 0030B2F8  41 82 00 0C */	beq lbl_8030F6A4
/* 8030F69C 0030B2FC  7C 04 F0 40 */	cmplw r4, r30
/* 8030F6A0 0030B300  40 80 00 20 */	bge lbl_8030F6C0
lbl_8030F6A4:
/* 8030F6A4 0030B304  7C 9D 23 78 */	mr r29, r4
/* 8030F6A8 0030B308  3B 7B 00 01 */	addi r27, r27, 1
lbl_8030F6AC:
/* 8030F6AC 0030B30C  2C 1C 00 00 */	cmpwi r28, 0
/* 8030F6B0 0030B310  3B 9C FF FF */	addi r28, r28, -1
/* 8030F6B4 0030B314  41 82 00 0C */	beq lbl_8030F6C0
/* 8030F6B8 0030B318  7C 1D F8 40 */	cmplw r29, r31
/* 8030F6BC 0030B31C  41 80 FF 4C */	blt lbl_8030F608
lbl_8030F6C0:
/* 8030F6C0 0030B320  7F 88 E3 78 */	mr r8, r28
lbl_8030F6C4:
/* 8030F6C4 0030B324  2C 17 00 00 */	cmpwi r23, 0
/* 8030F6C8 0030B328  41 82 00 D8 */	beq lbl_8030F7A0
/* 8030F6CC 0030B32C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030F6D0 0030B330  7C 00 F0 40 */	cmplw r0, r30
/* 8030F6D4 0030B334  41 80 00 CC */	blt lbl_8030F7A0
/* 8030F6D8 0030B338  38 00 00 00 */	li r0, 0
/* 8030F6DC 0030B33C  7E C3 B3 78 */	mr r3, r22
/* 8030F6E0 0030B340  90 18 00 00 */	stw r0, 0(r24)
/* 8030F6E4 0030B344  7F 65 DB 78 */	mr r5, r27
/* 8030F6E8 0030B348  7F 06 C3 78 */	mr r6, r24
/* 8030F6EC 0030B34C  38 88 00 01 */	addi r4, r8, 1
/* 8030F6F0 0030B350  38 E1 00 14 */	addi r7, r1, 0x14
/* 8030F6F4 0030B354  4B FF FA F9 */	bl VFiPFFAT_DoAllocateChain
/* 8030F6F8 0030B358  2C 03 00 00 */	cmpwi r3, 0
/* 8030F6FC 0030B35C  7C 75 1B 78 */	mr r21, r3
/* 8030F700 0030B360  41 82 00 34 */	beq lbl_8030F734
/* 8030F704 0030B364  80 98 00 00 */	lwz r4, 0(r24)
/* 8030F708 0030B368  3C 04 00 01 */	addis r0, r4, 1
/* 8030F70C 0030B36C  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030F710 0030B370  41 82 00 14 */	beq lbl_8030F724
/* 8030F714 0030B374  7E C3 B3 78 */	mr r3, r22
/* 8030F718 0030B378  7F 65 DB 78 */	mr r5, r27
/* 8030F71C 0030B37C  38 C0 FF FF */	li r6, -1
/* 8030F720 0030B380  48 00 0D 09 */	bl VFiPFFAT_FreeChain
lbl_8030F724:
/* 8030F724 0030B384  38 00 FF FF */	li r0, -1
/* 8030F728 0030B388  90 18 00 00 */	stw r0, 0(r24)
/* 8030F72C 0030B38C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030F730 0030B390  48 00 00 08 */	b lbl_8030F738
lbl_8030F734:
/* 8030F734 0030B394  3A A0 00 00 */	li r21, 0
lbl_8030F738:
/* 8030F738 0030B398  2C 15 00 00 */	cmpwi r21, 0
/* 8030F73C 0030B39C  41 82 00 0C */	beq lbl_8030F748
/* 8030F740 0030B3A0  7E A3 AB 78 */	mr r3, r21
/* 8030F744 0030B3A4  48 00 00 64 */	b lbl_8030F7A8
lbl_8030F748:
/* 8030F748 0030B3A8  80 61 00 14 */	lwz r3, 0x14(r1)
/* 8030F74C 0030B3AC  3C 03 00 01 */	addis r0, r3, 1
/* 8030F750 0030B3B0  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030F754 0030B3B4  40 82 00 0C */	bne lbl_8030F760
/* 8030F758 0030B3B8  38 60 00 06 */	li r3, 6
/* 8030F75C 0030B3BC  48 00 00 4C */	b lbl_8030F7A8
lbl_8030F760:
/* 8030F760 0030B3C0  80 1A 00 00 */	lwz r0, 0(r26)
/* 8030F764 0030B3C4  2C 00 00 00 */	cmpwi r0, 0
/* 8030F768 0030B3C8  40 82 00 10 */	bne lbl_8030F778
/* 8030F76C 0030B3CC  80 18 00 00 */	lwz r0, 0(r24)
/* 8030F770 0030B3D0  90 1A 00 00 */	stw r0, 0(r26)
/* 8030F774 0030B3D4  48 00 00 28 */	b lbl_8030F79C
lbl_8030F778:
/* 8030F778 0030B3D8  80 D8 00 00 */	lwz r6, 0(r24)
/* 8030F77C 0030B3DC  7E C3 B3 78 */	mr r3, r22
/* 8030F780 0030B3E0  7F A4 EB 78 */	mr r4, r29
/* 8030F784 0030B3E4  38 BB FF FF */	addi r5, r27, -1
/* 8030F788 0030B3E8  38 E0 00 01 */	li r7, 1
/* 8030F78C 0030B3EC  4B FF F6 15 */	bl VFiPFFAT_WriteCluster
/* 8030F790 0030B3F0  2C 03 00 00 */	cmpwi r3, 0
/* 8030F794 0030B3F4  41 82 00 08 */	beq lbl_8030F79C
/* 8030F798 0030B3F8  48 00 00 10 */	b lbl_8030F7A8
lbl_8030F79C:
/* 8030F79C 0030B3FC  83 A1 00 14 */	lwz r29, 0x14(r1)
lbl_8030F7A0:
/* 8030F7A0 0030B400  93 B9 00 00 */	stw r29, 0(r25)
/* 8030F7A4 0030B404  38 60 00 00 */	li r3, 0
lbl_8030F7A8:
/* 8030F7A8 0030B408  39 61 00 50 */	addi r11, r1, 0x50
/* 8030F7AC 0030B40C  4B EB 79 B1 */	bl _restgpr_21
/* 8030F7B0 0030B410  80 01 00 54 */	lwz r0, 0x54(r1)
/* 8030F7B4 0030B414  7C 08 03 A6 */	mtlr r0
/* 8030F7B8 0030B418  38 21 00 50 */	addi r1, r1, 0x50
/* 8030F7BC 0030B41C  4E 80 00 20 */	blr

.global VFiPFFAT_GetClusterContinuousSectorInChain
VFiPFFAT_GetClusterContinuousSectorInChain:
/* 8030F7C0 0030B420  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8030F7C4 0030B424  7C 08 02 A6 */	mflr r0
/* 8030F7C8 0030B428  90 01 00 34 */	stw r0, 0x34(r1)
/* 8030F7CC 0030B42C  39 61 00 30 */	addi r11, r1, 0x30
/* 8030F7D0 0030B430  4B EB 79 55 */	bl _savegpr_26
/* 8030F7D4 0030B434  83 E3 00 34 */	lwz r31, 0x34(r3)
/* 8030F7D8 0030B438  39 00 FF FF */	li r8, -1
/* 8030F7DC 0030B43C  38 00 00 01 */	li r0, 1
/* 8030F7E0 0030B440  7C 7B 1B 78 */	mr r27, r3
/* 8030F7E4 0030B444  91 01 00 10 */	stw r8, 0x10(r1)
/* 8030F7E8 0030B448  7C BC 2B 78 */	mr r28, r5
/* 8030F7EC 0030B44C  7C DD 33 78 */	mr r29, r6
/* 8030F7F0 0030B450  7C FE 3B 78 */	mr r30, r7
/* 8030F7F4 0030B454  90 01 00 0C */	stw r0, 0xc(r1)
/* 8030F7F8 0030B458  7C 9A 23 78 */	mr r26, r4
/* 8030F7FC 0030B45C  7C 85 23 78 */	mr r5, r4
/* 8030F800 0030B460  7F E3 FB 78 */	mr r3, r31
/* 8030F804 0030B464  38 81 00 08 */	addi r4, r1, 8
/* 8030F808 0030B468  4B FF ED 31 */	bl VFiPFFAT_ReadFATSector
/* 8030F80C 0030B46C  2C 03 00 00 */	cmpwi r3, 0
/* 8030F810 0030B470  41 82 00 B8 */	beq lbl_8030F8C8
/* 8030F814 0030B474  48 00 00 C4 */	b lbl_8030F8D8
/* 8030F818 0030B478  48 00 00 B0 */	b lbl_8030F8C8
lbl_8030F81C:
/* 8030F81C 0030B47C  7F 63 DB 78 */	mr r3, r27
/* 8030F820 0030B480  7F 44 D3 78 */	mr r4, r26
/* 8030F824 0030B484  7F 85 E3 78 */	mr r5, r28
/* 8030F828 0030B488  38 C1 00 10 */	addi r6, r1, 0x10
/* 8030F82C 0030B48C  38 E1 00 0C */	addi r7, r1, 0xc
/* 8030F830 0030B490  39 01 00 08 */	addi r8, r1, 8
/* 8030F834 0030B494  4B FF F3 A1 */	bl VFiPFFAT_ReadClusterPage
/* 8030F838 0030B498  2C 03 00 00 */	cmpwi r3, 0
/* 8030F83C 0030B49C  41 82 00 08 */	beq lbl_8030F844
/* 8030F840 0030B4A0  48 00 00 98 */	b lbl_8030F8D8
lbl_8030F844:
/* 8030F844 0030B4A4  80 81 00 10 */	lwz r4, 0x10(r1)
/* 8030F848 0030B4A8  38 1A 00 01 */	addi r0, r26, 1
/* 8030F84C 0030B4AC  7C 00 20 40 */	cmplw r0, r4
/* 8030F850 0030B4B0  41 82 00 34 */	beq lbl_8030F884
/* 8030F854 0030B4B4  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 8030F858 0030B4B8  3C 60 80 40 */	lis r3, lbl_803FE280@ha
/* 8030F85C 0030B4BC  38 63 E2 80 */	addi r3, r3, lbl_803FE280@l
/* 8030F860 0030B4C0  1C 00 00 14 */	mulli r0, r0, 0x14
/* 8030F864 0030B4C4  7C 63 02 14 */	add r3, r3, r0
/* 8030F868 0030B4C8  80 03 00 08 */	lwz r0, 8(r3)
/* 8030F86C 0030B4CC  7C 04 00 40 */	cmplw r4, r0
/* 8030F870 0030B4D0  40 82 00 64 */	bne lbl_8030F8D4
/* 8030F874 0030B4D4  38 1C FF FF */	addi r0, r28, -1
/* 8030F878 0030B4D8  93 5B 00 0C */	stw r26, 0xc(r27)
/* 8030F87C 0030B4DC  90 1B 00 10 */	stw r0, 0x10(r27)
/* 8030F880 0030B4E0  48 00 00 54 */	b lbl_8030F8D4
lbl_8030F884:
/* 8030F884 0030B4E4  80 9B 00 30 */	lwz r4, 0x30(r27)
/* 8030F888 0030B4E8  80 64 00 00 */	lwz r3, 0(r4)
/* 8030F88C 0030B4EC  38 03 00 01 */	addi r0, r3, 1
/* 8030F890 0030B4F0  90 04 00 00 */	stw r0, 0(r4)
/* 8030F894 0030B4F4  80 01 00 10 */	lwz r0, 0x10(r1)
/* 8030F898 0030B4F8  80 7B 00 30 */	lwz r3, 0x30(r27)
/* 8030F89C 0030B4FC  90 03 00 04 */	stw r0, 4(r3)
/* 8030F8A0 0030B500  80 7E 00 00 */	lwz r3, 0(r30)
/* 8030F8A4 0030B504  88 1F 00 06 */	lbz r0, 6(r31)
/* 8030F8A8 0030B508  7C 63 02 14 */	add r3, r3, r0
/* 8030F8AC 0030B50C  90 7E 00 00 */	stw r3, 0(r30)
/* 8030F8B0 0030B510  88 1F 00 20 */	lbz r0, 0x20(r31)
/* 8030F8B4 0030B514  7C 60 00 30 */	slw r0, r3, r0
/* 8030F8B8 0030B518  7C 00 E8 40 */	cmplw r0, r29
/* 8030F8BC 0030B51C  40 80 00 18 */	bge lbl_8030F8D4
/* 8030F8C0 0030B520  83 41 00 10 */	lwz r26, 0x10(r1)
/* 8030F8C4 0030B524  3B 9C 00 01 */	addi r28, r28, 1
lbl_8030F8C8:
/* 8030F8C8 0030B528  80 01 00 10 */	lwz r0, 0x10(r1)
/* 8030F8CC 0030B52C  2C 00 00 00 */	cmpwi r0, 0
/* 8030F8D0 0030B530  40 82 FF 4C */	bne lbl_8030F81C
lbl_8030F8D4:
/* 8030F8D4 0030B534  38 60 00 00 */	li r3, 0
lbl_8030F8D8:
/* 8030F8D8 0030B538  39 61 00 30 */	addi r11, r1, 0x30
/* 8030F8DC 0030B53C  4B EB 78 95 */	bl _restgpr_26
/* 8030F8E0 0030B540  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030F8E4 0030B544  7C 08 03 A6 */	mtlr r0
/* 8030F8E8 0030B548  38 21 00 30 */	addi r1, r1, 0x30
/* 8030F8EC 0030B54C  4E 80 00 20 */	blr

.global VFiPFFAT_GetClusterAllocatedInChain
VFiPFFAT_GetClusterAllocatedInChain:
/* 8030F8F0 0030B550  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8030F8F4 0030B554  7C 08 02 A6 */	mflr r0
/* 8030F8F8 0030B558  90 01 00 44 */	stw r0, 0x44(r1)
/* 8030F8FC 0030B55C  39 61 00 40 */	addi r11, r1, 0x40
/* 8030F900 0030B560  4B EB 78 1D */	bl _savegpr_24
/* 8030F904 0030B564  83 E3 00 34 */	lwz r31, 0x34(r3)
/* 8030F908 0030B568  39 00 FF FF */	li r8, -1
/* 8030F90C 0030B56C  38 00 00 01 */	li r0, 1
/* 8030F910 0030B570  7C 79 1B 78 */	mr r25, r3
/* 8030F914 0030B574  91 01 00 10 */	stw r8, 0x10(r1)
/* 8030F918 0030B578  7C BA 2B 78 */	mr r26, r5
/* 8030F91C 0030B57C  7C DB 33 78 */	mr r27, r6
/* 8030F920 0030B580  7C FC 3B 78 */	mr r28, r7
/* 8030F924 0030B584  90 01 00 0C */	stw r0, 0xc(r1)
/* 8030F928 0030B588  7C 9E 23 78 */	mr r30, r4
/* 8030F92C 0030B58C  7C 85 23 78 */	mr r5, r4
/* 8030F930 0030B590  7F E3 FB 78 */	mr r3, r31
/* 8030F934 0030B594  38 81 00 08 */	addi r4, r1, 8
/* 8030F938 0030B598  3B A0 00 00 */	li r29, 0
/* 8030F93C 0030B59C  4B FF EB FD */	bl VFiPFFAT_ReadFATSector
/* 8030F940 0030B5A0  2C 03 00 00 */	cmpwi r3, 0
/* 8030F944 0030B5A4  41 82 00 08 */	beq lbl_8030F94C
/* 8030F948 0030B5A8  48 00 00 A0 */	b lbl_8030F9E8
lbl_8030F94C:
/* 8030F94C 0030B5AC  3F 00 80 40 */	lis r24, lbl_803FE280@ha
/* 8030F950 0030B5B0  3B 18 E2 80 */	addi r24, r24, lbl_803FE280@l
/* 8030F954 0030B5B4  48 00 00 84 */	b lbl_8030F9D8
lbl_8030F958:
/* 8030F958 0030B5B8  A0 9F 00 00 */	lhz r4, 0(r31)
/* 8030F95C 0030B5BC  88 1F 00 21 */	lbz r0, 0x21(r31)
/* 8030F960 0030B5C0  80 7C 00 00 */	lwz r3, 0(r28)
/* 8030F964 0030B5C4  7C 80 00 30 */	slw r0, r4, r0
/* 8030F968 0030B5C8  7F BD 02 14 */	add r29, r29, r0
/* 8030F96C 0030B5CC  38 03 00 01 */	addi r0, r3, 1
/* 8030F970 0030B5D0  7C 1D D8 40 */	cmplw r29, r27
/* 8030F974 0030B5D4  90 1C 00 00 */	stw r0, 0(r28)
/* 8030F978 0030B5D8  40 80 00 6C */	bge lbl_8030F9E4
/* 8030F97C 0030B5DC  7F 23 CB 78 */	mr r3, r25
/* 8030F980 0030B5E0  7F C4 F3 78 */	mr r4, r30
/* 8030F984 0030B5E4  7F 45 D3 78 */	mr r5, r26
/* 8030F988 0030B5E8  38 C1 00 10 */	addi r6, r1, 0x10
/* 8030F98C 0030B5EC  38 E1 00 0C */	addi r7, r1, 0xc
/* 8030F990 0030B5F0  39 01 00 08 */	addi r8, r1, 8
/* 8030F994 0030B5F4  4B FF F2 41 */	bl VFiPFFAT_ReadClusterPage
/* 8030F998 0030B5F8  2C 03 00 00 */	cmpwi r3, 0
/* 8030F99C 0030B5FC  41 82 00 08 */	beq lbl_8030F9A4
/* 8030F9A0 0030B600  48 00 00 48 */	b lbl_8030F9E8
lbl_8030F9A4:
/* 8030F9A4 0030B604  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 8030F9A8 0030B608  80 81 00 10 */	lwz r4, 0x10(r1)
/* 8030F9AC 0030B60C  1C 00 00 14 */	mulli r0, r0, 0x14
/* 8030F9B0 0030B610  7C 78 02 14 */	add r3, r24, r0
/* 8030F9B4 0030B614  80 03 00 08 */	lwz r0, 8(r3)
/* 8030F9B8 0030B618  7C 04 00 40 */	cmplw r4, r0
/* 8030F9BC 0030B61C  40 82 00 14 */	bne lbl_8030F9D0
/* 8030F9C0 0030B620  38 1A FF FF */	addi r0, r26, -1
/* 8030F9C4 0030B624  93 D9 00 0C */	stw r30, 0xc(r25)
/* 8030F9C8 0030B628  90 19 00 10 */	stw r0, 0x10(r25)
/* 8030F9CC 0030B62C  48 00 00 18 */	b lbl_8030F9E4
lbl_8030F9D0:
/* 8030F9D0 0030B630  7C 9E 23 78 */	mr r30, r4
/* 8030F9D4 0030B634  3B 5A 00 01 */	addi r26, r26, 1
lbl_8030F9D8:
/* 8030F9D8 0030B638  80 01 00 10 */	lwz r0, 0x10(r1)
/* 8030F9DC 0030B63C  2C 00 00 00 */	cmpwi r0, 0
/* 8030F9E0 0030B640  40 82 FF 78 */	bne lbl_8030F958
lbl_8030F9E4:
/* 8030F9E4 0030B644  38 60 00 00 */	li r3, 0
lbl_8030F9E8:
/* 8030F9E8 0030B648  39 61 00 40 */	addi r11, r1, 0x40
/* 8030F9EC 0030B64C  4B EB 77 7D */	bl _restgpr_24
/* 8030F9F0 0030B650  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8030F9F4 0030B654  7C 08 03 A6 */	mtlr r0
/* 8030F9F8 0030B658  38 21 00 40 */	addi r1, r1, 0x40
/* 8030F9FC 0030B65C  4E 80 00 20 */	blr

.global VFiPFFAT_GetClusterSpecified
VFiPFFAT_GetClusterSpecified:
/* 8030FA00 0030B660  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8030FA04 0030B664  7C 08 02 A6 */	mflr r0
/* 8030FA08 0030B668  90 01 00 34 */	stw r0, 0x34(r1)
/* 8030FA0C 0030B66C  39 61 00 30 */	addi r11, r1, 0x30
/* 8030FA10 0030B670  4B EB 77 19 */	bl _savegpr_27
/* 8030FA14 0030B674  80 E3 00 08 */	lwz r7, 8(r3)
/* 8030FA18 0030B678  7C 9D 23 78 */	mr r29, r4
/* 8030FA1C 0030B67C  81 03 00 34 */	lwz r8, 0x34(r3)
/* 8030FA20 0030B680  7C 7C 1B 78 */	mr r28, r3
/* 8030FA24 0030B684  80 07 00 00 */	lwz r0, 0(r7)
/* 8030FA28 0030B688  7C BB 2B 78 */	mr r27, r5
/* 8030FA2C 0030B68C  80 88 00 1C */	lwz r4, 0x1c(r8)
/* 8030FA30 0030B690  7C DE 33 78 */	mr r30, r6
/* 8030FA34 0030B694  2C 00 00 00 */	cmpwi r0, 0
/* 8030FA38 0030B698  83 E3 00 30 */	lwz r31, 0x30(r3)
/* 8030FA3C 0030B69C  40 82 00 1C */	bne lbl_8030FA58
/* 8030FA40 0030B6A0  2C 05 00 00 */	cmpwi r5, 0
/* 8030FA44 0030B6A4  40 82 00 14 */	bne lbl_8030FA58
/* 8030FA48 0030B6A8  38 00 FF FF */	li r0, -1
/* 8030FA4C 0030B6AC  38 60 00 00 */	li r3, 0
/* 8030FA50 0030B6B0  90 06 00 00 */	stw r0, 0(r6)
/* 8030FA54 0030B6B4  48 00 01 24 */	b lbl_8030FB78
lbl_8030FA58:
/* 8030FA58 0030B6B8  28 00 00 01 */	cmplwi r0, 1
/* 8030FA5C 0030B6BC  40 82 00 24 */	bne lbl_8030FA80
/* 8030FA60 0030B6C0  28 04 00 01 */	cmplwi r4, 1
/* 8030FA64 0030B6C4  41 81 00 14 */	bgt lbl_8030FA78
/* 8030FA68 0030B6C8  38 00 FF FF */	li r0, -1
/* 8030FA6C 0030B6CC  38 60 00 00 */	li r3, 0
/* 8030FA70 0030B6D0  90 06 00 00 */	stw r0, 0(r6)
/* 8030FA74 0030B6D4  48 00 01 04 */	b lbl_8030FB78
lbl_8030FA78:
/* 8030FA78 0030B6D8  80 08 00 10 */	lwz r0, 0x10(r8)
/* 8030FA7C 0030B6DC  90 07 00 00 */	stw r0, 0(r7)
lbl_8030FA80:
/* 8030FA80 0030B6E0  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 8030FA84 0030B6E4  2C 00 00 00 */	cmpwi r0, 0
/* 8030FA88 0030B6E8  41 82 00 54 */	beq lbl_8030FADC
/* 8030FA8C 0030B6EC  2C 05 00 00 */	cmpwi r5, 0
/* 8030FA90 0030B6F0  40 82 00 4C */	bne lbl_8030FADC
/* 8030FA94 0030B6F4  7F 83 E3 78 */	mr r3, r28
/* 8030FA98 0030B6F8  7F A4 EB 78 */	mr r4, r29
/* 8030FA9C 0030B6FC  7F C5 F3 78 */	mr r5, r30
/* 8030FAA0 0030B700  38 C1 00 10 */	addi r6, r1, 0x10
/* 8030FAA4 0030B704  4B FF ED C9 */	bl VFiPFFAT_FindClusterLink
/* 8030FAA8 0030B708  2C 03 00 00 */	cmpwi r3, 0
/* 8030FAAC 0030B70C  41 82 00 08 */	beq lbl_8030FAB4
/* 8030FAB0 0030B710  48 00 00 C8 */	b lbl_8030FB78
lbl_8030FAB4:
/* 8030FAB4 0030B714  80 01 00 10 */	lwz r0, 0x10(r1)
/* 8030FAB8 0030B718  28 00 00 01 */	cmplwi r0, 1
/* 8030FABC 0030B71C  40 82 00 20 */	bne lbl_8030FADC
/* 8030FAC0 0030B720  80 1C 00 00 */	lwz r0, 0(r28)
/* 8030FAC4 0030B724  38 60 00 00 */	li r3, 0
/* 8030FAC8 0030B728  90 1F 00 08 */	stw r0, 8(r31)
/* 8030FACC 0030B72C  93 BF 00 00 */	stw r29, 0(r31)
/* 8030FAD0 0030B730  80 1E 00 00 */	lwz r0, 0(r30)
/* 8030FAD4 0030B734  90 1F 00 04 */	stw r0, 4(r31)
/* 8030FAD8 0030B738  48 00 00 A0 */	b lbl_8030FB78
lbl_8030FADC:
/* 8030FADC 0030B73C  7C 1B 00 D0 */	neg r0, r27
/* 8030FAE0 0030B740  38 60 FF FF */	li r3, -1
/* 8030FAE4 0030B744  7C 00 DB 78 */	or r0, r0, r27
/* 8030FAE8 0030B748  90 7E 00 00 */	stw r3, 0(r30)
/* 8030FAEC 0030B74C  7F 83 E3 78 */	mr r3, r28
/* 8030FAF0 0030B750  7F A4 EB 78 */	mr r4, r29
/* 8030FAF4 0030B754  54 05 0F FE */	srwi r5, r0, 0x1f
/* 8030FAF8 0030B758  38 E1 00 08 */	addi r7, r1, 8
/* 8030FAFC 0030B75C  39 01 00 0C */	addi r8, r1, 0xc
/* 8030FB00 0030B760  38 C0 00 00 */	li r6, 0
/* 8030FB04 0030B764  4B FF F9 95 */	bl VFiPFFAT_GetClusterInChain
/* 8030FB08 0030B768  2C 03 00 00 */	cmpwi r3, 0
/* 8030FB0C 0030B76C  41 82 00 08 */	beq lbl_8030FB14
/* 8030FB10 0030B770  48 00 00 2C */	b lbl_8030FB3C
lbl_8030FB14:
/* 8030FB14 0030B774  80 81 00 0C */	lwz r4, 0xc(r1)
/* 8030FB18 0030B778  28 04 00 02 */	cmplwi r4, 2
/* 8030FB1C 0030B77C  41 80 00 1C */	blt lbl_8030FB38
/* 8030FB20 0030B780  80 7C 00 34 */	lwz r3, 0x34(r28)
/* 8030FB24 0030B784  80 63 00 34 */	lwz r3, 0x34(r3)
/* 8030FB28 0030B788  38 03 00 02 */	addi r0, r3, 2
/* 8030FB2C 0030B78C  7C 04 00 40 */	cmplw r4, r0
/* 8030FB30 0030B790  40 80 00 08 */	bge lbl_8030FB38
/* 8030FB34 0030B794  90 9E 00 00 */	stw r4, 0(r30)
lbl_8030FB38:
/* 8030FB38 0030B798  38 60 00 00 */	li r3, 0
lbl_8030FB3C:
/* 8030FB3C 0030B79C  2C 03 00 00 */	cmpwi r3, 0
/* 8030FB40 0030B7A0  41 82 00 08 */	beq lbl_8030FB48
/* 8030FB44 0030B7A4  48 00 00 34 */	b lbl_8030FB78
lbl_8030FB48:
/* 8030FB48 0030B7A8  80 7E 00 00 */	lwz r3, 0(r30)
/* 8030FB4C 0030B7AC  3C 03 00 01 */	addis r0, r3, 1
/* 8030FB50 0030B7B0  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030FB54 0030B7B4  40 82 00 0C */	bne lbl_8030FB60
/* 8030FB58 0030B7B8  38 60 00 00 */	li r3, 0
/* 8030FB5C 0030B7BC  48 00 00 1C */	b lbl_8030FB78
lbl_8030FB60:
/* 8030FB60 0030B7C0  80 1C 00 00 */	lwz r0, 0(r28)
/* 8030FB64 0030B7C4  38 60 00 00 */	li r3, 0
/* 8030FB68 0030B7C8  90 1F 00 08 */	stw r0, 8(r31)
/* 8030FB6C 0030B7CC  93 BF 00 00 */	stw r29, 0(r31)
/* 8030FB70 0030B7D0  80 1E 00 00 */	lwz r0, 0(r30)
/* 8030FB74 0030B7D4  90 1F 00 04 */	stw r0, 4(r31)
lbl_8030FB78:
/* 8030FB78 0030B7D8  39 61 00 30 */	addi r11, r1, 0x30
/* 8030FB7C 0030B7DC  4B EB 75 F9 */	bl _restgpr_27
/* 8030FB80 0030B7E0  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030FB84 0030B7E4  7C 08 03 A6 */	mtlr r0
/* 8030FB88 0030B7E8  38 21 00 30 */	addi r1, r1, 0x30
/* 8030FB8C 0030B7EC  4E 80 00 20 */	blr

.global VFiPFFAT_GetClusterAllocated
VFiPFFAT_GetClusterAllocated:
/* 8030FB90 0030B7F0  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8030FB94 0030B7F4  7C 08 02 A6 */	mflr r0
/* 8030FB98 0030B7F8  90 01 00 34 */	stw r0, 0x34(r1)
/* 8030FB9C 0030B7FC  39 61 00 30 */	addi r11, r1, 0x30
/* 8030FBA0 0030B800  4B EB 75 89 */	bl _savegpr_27
/* 8030FBA4 0030B804  81 03 00 08 */	lwz r8, 8(r3)
/* 8030FBA8 0030B808  7C 9D 23 78 */	mr r29, r4
/* 8030FBAC 0030B80C  81 23 00 34 */	lwz r9, 0x34(r3)
/* 8030FBB0 0030B810  7C 7C 1B 78 */	mr r28, r3
/* 8030FBB4 0030B814  80 08 00 00 */	lwz r0, 0(r8)
/* 8030FBB8 0030B818  7C DE 33 78 */	mr r30, r6
/* 8030FBBC 0030B81C  80 89 00 1C */	lwz r4, 0x1c(r9)
/* 8030FBC0 0030B820  7C FB 3B 78 */	mr r27, r7
/* 8030FBC4 0030B824  28 00 00 01 */	cmplwi r0, 1
/* 8030FBC8 0030B828  83 E3 00 30 */	lwz r31, 0x30(r3)
/* 8030FBCC 0030B82C  40 82 00 24 */	bne lbl_8030FBF0
/* 8030FBD0 0030B830  28 04 00 01 */	cmplwi r4, 1
/* 8030FBD4 0030B834  41 81 00 14 */	bgt lbl_8030FBE8
/* 8030FBD8 0030B838  38 00 FF FF */	li r0, -1
/* 8030FBDC 0030B83C  38 60 00 00 */	li r3, 0
/* 8030FBE0 0030B840  90 06 00 00 */	stw r0, 0(r6)
/* 8030FBE4 0030B844  48 00 00 B4 */	b lbl_8030FC98
lbl_8030FBE8:
/* 8030FBE8 0030B848  80 09 00 10 */	lwz r0, 0x10(r9)
/* 8030FBEC 0030B84C  90 08 00 00 */	stw r0, 0(r8)
lbl_8030FBF0:
/* 8030FBF0 0030B850  38 00 FF FF */	li r0, -1
/* 8030FBF4 0030B854  7F 83 E3 78 */	mr r3, r28
/* 8030FBF8 0030B858  90 06 00 00 */	stw r0, 0(r6)
/* 8030FBFC 0030B85C  7C A6 2B 78 */	mr r6, r5
/* 8030FC00 0030B860  7F A4 EB 78 */	mr r4, r29
/* 8030FC04 0030B864  38 E1 00 08 */	addi r7, r1, 8
/* 8030FC08 0030B868  39 01 00 0C */	addi r8, r1, 0xc
/* 8030FC0C 0030B86C  38 A0 00 02 */	li r5, 2
/* 8030FC10 0030B870  4B FF F8 89 */	bl VFiPFFAT_GetClusterInChain
/* 8030FC14 0030B874  2C 03 00 00 */	cmpwi r3, 0
/* 8030FC18 0030B878  41 82 00 08 */	beq lbl_8030FC20
/* 8030FC1C 0030B87C  48 00 00 40 */	b lbl_8030FC5C
lbl_8030FC20:
/* 8030FC20 0030B880  80 61 00 08 */	lwz r3, 8(r1)
/* 8030FC24 0030B884  80 01 00 0C */	lwz r0, 0xc(r1)
/* 8030FC28 0030B888  7C 63 00 50 */	subf r3, r3, r0
/* 8030FC2C 0030B88C  38 03 00 01 */	addi r0, r3, 1
/* 8030FC30 0030B890  90 1B 00 00 */	stw r0, 0(r27)
/* 8030FC34 0030B894  80 81 00 08 */	lwz r4, 8(r1)
/* 8030FC38 0030B898  28 04 00 02 */	cmplwi r4, 2
/* 8030FC3C 0030B89C  41 80 00 1C */	blt lbl_8030FC58
/* 8030FC40 0030B8A0  80 7C 00 34 */	lwz r3, 0x34(r28)
/* 8030FC44 0030B8A4  80 63 00 34 */	lwz r3, 0x34(r3)
/* 8030FC48 0030B8A8  38 03 00 02 */	addi r0, r3, 2
/* 8030FC4C 0030B8AC  7C 04 00 40 */	cmplw r4, r0
/* 8030FC50 0030B8B0  40 80 00 08 */	bge lbl_8030FC58
/* 8030FC54 0030B8B4  90 9E 00 00 */	stw r4, 0(r30)
lbl_8030FC58:
/* 8030FC58 0030B8B8  38 60 00 00 */	li r3, 0
lbl_8030FC5C:
/* 8030FC5C 0030B8BC  2C 03 00 00 */	cmpwi r3, 0
/* 8030FC60 0030B8C0  41 82 00 08 */	beq lbl_8030FC68
/* 8030FC64 0030B8C4  48 00 00 34 */	b lbl_8030FC98
lbl_8030FC68:
/* 8030FC68 0030B8C8  80 7E 00 00 */	lwz r3, 0(r30)
/* 8030FC6C 0030B8CC  3C 03 00 01 */	addis r0, r3, 1
/* 8030FC70 0030B8D0  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030FC74 0030B8D4  40 82 00 0C */	bne lbl_8030FC80
/* 8030FC78 0030B8D8  38 60 00 00 */	li r3, 0
/* 8030FC7C 0030B8DC  48 00 00 1C */	b lbl_8030FC98
lbl_8030FC80:
/* 8030FC80 0030B8E0  80 1C 00 00 */	lwz r0, 0(r28)
/* 8030FC84 0030B8E4  38 60 00 00 */	li r3, 0
/* 8030FC88 0030B8E8  90 1F 00 08 */	stw r0, 8(r31)
/* 8030FC8C 0030B8EC  93 BF 00 00 */	stw r29, 0(r31)
/* 8030FC90 0030B8F0  80 1E 00 00 */	lwz r0, 0(r30)
/* 8030FC94 0030B8F4  90 1F 00 04 */	stw r0, 4(r31)
lbl_8030FC98:
/* 8030FC98 0030B8F8  39 61 00 30 */	addi r11, r1, 0x30
/* 8030FC9C 0030B8FC  4B EB 74 D9 */	bl _restgpr_27
/* 8030FCA0 0030B900  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030FCA4 0030B904  7C 08 03 A6 */	mtlr r0
/* 8030FCA8 0030B908  38 21 00 30 */	addi r1, r1, 0x30
/* 8030FCAC 0030B90C  4E 80 00 20 */	blr

.global VFiPFFAT_GetSector
VFiPFFAT_GetSector:
/* 8030FCB0 0030B910  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8030FCB4 0030B914  7C 08 02 A6 */	mflr r0
/* 8030FCB8 0030B918  90 01 00 24 */	stw r0, 0x24(r1)
/* 8030FCBC 0030B91C  38 00 00 00 */	li r0, 0
/* 8030FCC0 0030B920  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8030FCC4 0030B924  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8030FCC8 0030B928  7D 1E 43 78 */	mr r30, r8
/* 8030FCCC 0030B92C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8030FCD0 0030B930  7C FD 3B 78 */	mr r29, r7
/* 8030FCD4 0030B934  93 81 00 10 */	stw r28, 0x10(r1)
/* 8030FCD8 0030B938  7C 9C 23 78 */	mr r28, r4
/* 8030FCDC 0030B93C  90 01 00 08 */	stw r0, 8(r1)
/* 8030FCE0 0030B940  81 23 00 08 */	lwz r9, 8(r3)
/* 8030FCE4 0030B944  83 E3 00 34 */	lwz r31, 0x34(r3)
/* 8030FCE8 0030B948  80 09 00 00 */	lwz r0, 0(r9)
/* 8030FCEC 0030B94C  81 1F 00 1C */	lwz r8, 0x1c(r31)
/* 8030FCF0 0030B950  28 00 00 01 */	cmplwi r0, 1
/* 8030FCF4 0030B954  40 82 00 64 */	bne lbl_8030FD58
/* 8030FCF8 0030B958  28 08 00 01 */	cmplwi r8, 1
/* 8030FCFC 0030B95C  41 81 00 5C */	bgt lbl_8030FD58
/* 8030FD00 0030B960  2C 08 00 00 */	cmpwi r8, 0
/* 8030FD04 0030B964  41 82 00 14 */	beq lbl_8030FD18
/* 8030FD08 0030B968  2C 08 00 01 */	cmpwi r8, 1
/* 8030FD0C 0030B96C  41 82 00 0C */	beq lbl_8030FD18
/* 8030FD10 0030B970  38 60 00 0C */	li r3, 0xc
/* 8030FD14 0030B974  48 00 00 30 */	b lbl_8030FD44
lbl_8030FD18:
/* 8030FD18 0030B978  A0 1F 00 24 */	lhz r0, 0x24(r31)
/* 8030FD1C 0030B97C  7C 04 00 40 */	cmplw r4, r0
/* 8030FD20 0030B980  41 80 00 14 */	blt lbl_8030FD34
/* 8030FD24 0030B984  38 00 FF FF */	li r0, -1
/* 8030FD28 0030B988  38 60 00 00 */	li r3, 0
/* 8030FD2C 0030B98C  90 07 00 00 */	stw r0, 0(r7)
/* 8030FD30 0030B990  48 00 00 14 */	b lbl_8030FD44
lbl_8030FD34:
/* 8030FD34 0030B994  80 1F 00 2C */	lwz r0, 0x2c(r31)
/* 8030FD38 0030B998  38 60 00 00 */	li r3, 0
/* 8030FD3C 0030B99C  7C 00 22 14 */	add r0, r0, r4
/* 8030FD40 0030B9A0  90 07 00 00 */	stw r0, 0(r7)
lbl_8030FD44:
/* 8030FD44 0030B9A4  7C 03 00 D0 */	neg r0, r3
/* 8030FD48 0030B9A8  7C 00 1B 78 */	or r0, r0, r3
/* 8030FD4C 0030B9AC  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030FD50 0030B9B0  7C 63 00 38 */	and r3, r3, r0
/* 8030FD54 0030B9B4  48 00 00 F4 */	b lbl_8030FE48
lbl_8030FD58:
/* 8030FD58 0030B9B8  89 3F 00 21 */	lbz r9, 0x21(r31)
/* 8030FD5C 0030B9BC  28 05 00 02 */	cmplwi r5, 2
/* 8030FD60 0030B9C0  7C 84 4C 30 */	srw r4, r4, r9
/* 8030FD64 0030B9C4  40 82 00 74 */	bne lbl_8030FDD8
/* 8030FD68 0030B9C8  A0 BF 00 00 */	lhz r5, 0(r31)
/* 8030FD6C 0030B9CC  89 1F 00 20 */	lbz r8, 0x20(r31)
/* 8030FD70 0030B9D0  38 05 FF FF */	addi r0, r5, -1
/* 8030FD74 0030B9D4  88 BF 00 06 */	lbz r5, 6(r31)
/* 8030FD78 0030B9D8  7C C7 00 38 */	and r7, r6, r0
/* 8030FD7C 0030B9DC  7C C8 44 30 */	srw r8, r6, r8
/* 8030FD80 0030B9E0  7C C7 00 D0 */	neg r6, r7
/* 8030FD84 0030B9E4  38 05 FF FF */	addi r0, r5, -1
/* 8030FD88 0030B9E8  7C C5 3B 78 */	or r5, r6, r7
/* 8030FD8C 0030B9EC  38 E1 00 08 */	addi r7, r1, 8
/* 8030FD90 0030B9F0  54 A5 0F FE */	srwi r5, r5, 0x1f
/* 8030FD94 0030B9F4  38 C1 00 0C */	addi r6, r1, 0xc
/* 8030FD98 0030B9F8  7D 08 2A 14 */	add r8, r8, r5
/* 8030FD9C 0030B9FC  7C 05 40 38 */	and r5, r0, r8
/* 8030FDA0 0030BA00  7C 05 00 D0 */	neg r0, r5
/* 8030FDA4 0030BA04  7D 08 4C 30 */	srw r8, r8, r9
/* 8030FDA8 0030BA08  7C 00 2B 78 */	or r0, r0, r5
/* 8030FDAC 0030BA0C  54 00 0F FE */	srwi r0, r0, 0x1f
/* 8030FDB0 0030BA10  7C A8 02 14 */	add r5, r8, r0
/* 8030FDB4 0030BA14  4B FF FD DD */	bl VFiPFFAT_GetClusterAllocated
/* 8030FDB8 0030BA18  2C 03 00 00 */	cmpwi r3, 0
/* 8030FDBC 0030BA1C  41 82 00 08 */	beq lbl_8030FDC4
/* 8030FDC0 0030BA20  48 00 00 88 */	b lbl_8030FE48
lbl_8030FDC4:
/* 8030FDC4 0030BA24  80 61 00 08 */	lwz r3, 8(r1)
/* 8030FDC8 0030BA28  88 1F 00 21 */	lbz r0, 0x21(r31)
/* 8030FDCC 0030BA2C  7C 60 00 30 */	slw r0, r3, r0
/* 8030FDD0 0030BA30  90 1E 00 00 */	stw r0, 0(r30)
/* 8030FDD4 0030BA34  48 00 00 28 */	b lbl_8030FDFC
lbl_8030FDD8:
/* 8030FDD8 0030BA38  38 C1 00 0C */	addi r6, r1, 0xc
/* 8030FDDC 0030BA3C  4B FF FC 25 */	bl VFiPFFAT_GetClusterSpecified
/* 8030FDE0 0030BA40  2C 03 00 00 */	cmpwi r3, 0
/* 8030FDE4 0030BA44  41 82 00 08 */	beq lbl_8030FDEC
/* 8030FDE8 0030BA48  48 00 00 60 */	b lbl_8030FE48
lbl_8030FDEC:
/* 8030FDEC 0030BA4C  88 1F 00 21 */	lbz r0, 0x21(r31)
/* 8030FDF0 0030BA50  38 60 00 01 */	li r3, 1
/* 8030FDF4 0030BA54  7C 60 00 30 */	slw r0, r3, r0
/* 8030FDF8 0030BA58  90 1E 00 00 */	stw r0, 0(r30)
lbl_8030FDFC:
/* 8030FDFC 0030BA5C  80 61 00 0C */	lwz r3, 0xc(r1)
/* 8030FE00 0030BA60  3C 03 00 01 */	addis r0, r3, 1
/* 8030FE04 0030BA64  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030FE08 0030BA68  40 82 00 14 */	bne lbl_8030FE1C
/* 8030FE0C 0030BA6C  38 00 FF FF */	li r0, -1
/* 8030FE10 0030BA70  38 60 00 00 */	li r3, 0
/* 8030FE14 0030BA74  90 1D 00 00 */	stw r0, 0(r29)
/* 8030FE18 0030BA78  48 00 00 30 */	b lbl_8030FE48
lbl_8030FE1C:
/* 8030FE1C 0030BA7C  88 9F 00 06 */	lbz r4, 6(r31)
/* 8030FE20 0030BA80  38 C3 FF FE */	addi r6, r3, -2
/* 8030FE24 0030BA84  88 BF 00 21 */	lbz r5, 0x21(r31)
/* 8030FE28 0030BA88  38 60 00 00 */	li r3, 0
/* 8030FE2C 0030BA8C  38 04 FF FF */	addi r0, r4, -1
/* 8030FE30 0030BA90  80 FF 00 30 */	lwz r7, 0x30(r31)
/* 8030FE34 0030BA94  7C C5 28 30 */	slw r5, r6, r5
/* 8030FE38 0030BA98  7F 84 00 38 */	and r4, r28, r0
/* 8030FE3C 0030BA9C  7C 07 2A 14 */	add r0, r7, r5
/* 8030FE40 0030BAA0  7C 04 02 14 */	add r0, r4, r0
/* 8030FE44 0030BAA4  90 1D 00 00 */	stw r0, 0(r29)
lbl_8030FE48:
/* 8030FE48 0030BAA8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8030FE4C 0030BAAC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8030FE50 0030BAB0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8030FE54 0030BAB4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8030FE58 0030BAB8  83 81 00 10 */	lwz r28, 0x10(r1)
/* 8030FE5C 0030BABC  7C 08 03 A6 */	mtlr r0
/* 8030FE60 0030BAC0  38 21 00 20 */	addi r1, r1, 0x20
/* 8030FE64 0030BAC4  4E 80 00 20 */	blr

.global VFiPFFAT_UpdateFATEntry
VFiPFFAT_UpdateFATEntry:
/* 8030FE68 0030BAC8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030FE6C 0030BACC  7C 08 02 A6 */	mflr r0
/* 8030FE70 0030BAD0  38 A0 00 00 */	li r5, 0
/* 8030FE74 0030BAD4  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030FE78 0030BAD8  A0 04 00 00 */	lhz r0, 0(r4)
/* 8030FE7C 0030BADC  54 00 07 BC */	rlwinm r0, r0, 0, 0x1e, 0x1e
/* 8030FE80 0030BAE0  2C 00 00 02 */	cmpwi r0, 2
/* 8030FE84 0030BAE4  40 82 00 0C */	bne lbl_8030FE90
/* 8030FE88 0030BAE8  4B FF AA F5 */	bl VFiPFCACHE_WriteFATPage
/* 8030FE8C 0030BAEC  7C 65 1B 78 */	mr r5, r3
lbl_8030FE90:
/* 8030FE90 0030BAF0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030FE94 0030BAF4  7C A3 2B 78 */	mr r3, r5
/* 8030FE98 0030BAF8  7C 08 03 A6 */	mtlr r0
/* 8030FE9C 0030BAFC  38 21 00 10 */	addi r1, r1, 0x10
/* 8030FEA0 0030BB00  4E 80 00 20 */	blr

.global VFiPFFAT_UpdateAlternateFATEntry
VFiPFFAT_UpdateAlternateFATEntry:
/* 8030FEA4 0030BB04  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8030FEA8 0030BB08  7C 08 02 A6 */	mflr r0
/* 8030FEAC 0030BB0C  90 01 00 34 */	stw r0, 0x34(r1)
/* 8030FEB0 0030BB10  39 61 00 30 */	addi r11, r1, 0x30
/* 8030FEB4 0030BB14  4B EB 72 71 */	bl _savegpr_26
/* 8030FEB8 0030BB18  A0 03 00 02 */	lhz r0, 2(r3)
/* 8030FEBC 0030BB1C  7C 7A 1B 78 */	mr r26, r3
/* 8030FEC0 0030BB20  80 63 00 0C */	lwz r3, 0xc(r3)
/* 8030FEC4 0030BB24  7C 9B 23 78 */	mr r27, r4
/* 8030FEC8 0030BB28  7C 80 28 50 */	subf r4, r0, r5
/* 8030FECC 0030BB2C  7C DD 33 78 */	mr r29, r6
/* 8030FED0 0030BB30  7C 04 1B 97 */	divwu. r0, r4, r3
/* 8030FED4 0030BB34  3B E0 00 00 */	li r31, 0
/* 8030FED8 0030BB38  41 82 00 14 */	beq lbl_8030FEEC
/* 8030FEDC 0030BB3C  7C 00 19 D6 */	mullw r0, r0, r3
/* 8030FEE0 0030BB40  3B C0 00 00 */	li r30, 0
/* 8030FEE4 0030BB44  7F 80 20 50 */	subf r28, r0, r4
/* 8030FEE8 0030BB48  48 00 00 58 */	b lbl_8030FF40
lbl_8030FEEC:
/* 8030FEEC 0030BB4C  7F 85 1A 14 */	add r28, r5, r3
/* 8030FEF0 0030BB50  3B C0 00 01 */	li r30, 1
/* 8030FEF4 0030BB54  48 00 00 4C */	b lbl_8030FF40
lbl_8030FEF8:
/* 8030FEF8 0030BB58  7F 43 D3 78 */	mr r3, r26
/* 8030FEFC 0030BB5C  7F 64 DB 78 */	mr r4, r27
/* 8030FF00 0030BB60  7F 85 E3 78 */	mr r5, r28
/* 8030FF04 0030BB64  7F A6 EB 78 */	mr r6, r29
/* 8030FF08 0030BB68  38 E1 00 08 */	addi r7, r1, 8
/* 8030FF0C 0030BB6C  4B FF 63 35 */	bl VFiPFDRV_lwrite
/* 8030FF10 0030BB70  2C 03 00 00 */	cmpwi r3, 0
/* 8030FF14 0030BB74  41 82 00 10 */	beq lbl_8030FF24
/* 8030FF18 0030BB78  2C 1F 00 00 */	cmpwi r31, 0
/* 8030FF1C 0030BB7C  40 82 00 08 */	bne lbl_8030FF24
/* 8030FF20 0030BB80  7C 7F 1B 78 */	mr r31, r3
lbl_8030FF24:
/* 8030FF24 0030BB84  80 01 00 08 */	lwz r0, 8(r1)
/* 8030FF28 0030BB88  7C 00 E8 40 */	cmplw r0, r29
/* 8030FF2C 0030BB8C  41 82 00 08 */	beq lbl_8030FF34
/* 8030FF30 0030BB90  3B E0 00 11 */	li r31, 0x11
lbl_8030FF34:
/* 8030FF34 0030BB94  80 1A 00 0C */	lwz r0, 0xc(r26)
/* 8030FF38 0030BB98  3B DE 00 01 */	addi r30, r30, 1
/* 8030FF3C 0030BB9C  7F 9C 02 14 */	add r28, r28, r0
lbl_8030FF40:
/* 8030FF40 0030BBA0  88 1A 00 22 */	lbz r0, 0x22(r26)
/* 8030FF44 0030BBA4  7C 1E 00 40 */	cmplw r30, r0
/* 8030FF48 0030BBA8  41 80 FF B0 */	blt lbl_8030FEF8
/* 8030FF4C 0030BBAC  39 61 00 30 */	addi r11, r1, 0x30
/* 8030FF50 0030BBB0  7F E3 FB 78 */	mr r3, r31
/* 8030FF54 0030BBB4  4B EB 72 1D */	bl _restgpr_26
/* 8030FF58 0030BBB8  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030FF5C 0030BBBC  7C 08 03 A6 */	mtlr r0
/* 8030FF60 0030BBC0  38 21 00 30 */	addi r1, r1, 0x30
/* 8030FF64 0030BBC4  4E 80 00 20 */	blr

.global VFiPFFAT_GetSectorSpecified
VFiPFFAT_GetSectorSpecified:
/* 8030FF68 0030BBC8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030FF6C 0030BBCC  7C 08 02 A6 */	mflr r0
/* 8030FF70 0030BBD0  2C 03 00 00 */	cmpwi r3, 0
/* 8030FF74 0030BBD4  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030FF78 0030BBD8  40 82 00 0C */	bne lbl_8030FF84
/* 8030FF7C 0030BBDC  38 60 00 0A */	li r3, 0xa
/* 8030FF80 0030BBE0  48 00 00 B0 */	b lbl_80310030
lbl_8030FF84:
/* 8030FF84 0030BBE4  81 03 00 30 */	lwz r8, 0x30(r3)
/* 8030FF88 0030BBE8  2C 08 00 00 */	cmpwi r8, 0
/* 8030FF8C 0030BBEC  40 82 00 0C */	bne lbl_8030FF98
/* 8030FF90 0030BBF0  38 60 00 0A */	li r3, 0xa
/* 8030FF94 0030BBF4  48 00 00 9C */	b lbl_80310030
lbl_8030FF98:
/* 8030FF98 0030BBF8  80 E3 00 00 */	lwz r7, 0(r3)
/* 8030FF9C 0030BBFC  2C 07 00 00 */	cmpwi r7, 0
/* 8030FFA0 0030BC00  40 82 00 0C */	bne lbl_8030FFAC
/* 8030FFA4 0030BC04  38 60 00 0A */	li r3, 0xa
/* 8030FFA8 0030BC08  48 00 00 88 */	b lbl_80310030
lbl_8030FFAC:
/* 8030FFAC 0030BC0C  80 08 00 08 */	lwz r0, 8(r8)
/* 8030FFB0 0030BC10  7C 00 38 40 */	cmplw r0, r7
/* 8030FFB4 0030BC14  40 81 00 0C */	ble lbl_8030FFC0
/* 8030FFB8 0030BC18  38 60 00 0A */	li r3, 0xa
/* 8030FFBC 0030BC1C  48 00 00 74 */	b lbl_80310030
lbl_8030FFC0:
/* 8030FFC0 0030BC20  80 E3 00 34 */	lwz r7, 0x34(r3)
/* 8030FFC4 0030BC24  88 07 18 7A */	lbz r0, 0x187a(r7)
/* 8030FFC8 0030BC28  7C 00 07 74 */	extsb r0, r0
/* 8030FFCC 0030BC2C  2C 00 00 41 */	cmpwi r0, 0x41
/* 8030FFD0 0030BC30  41 80 00 0C */	blt lbl_8030FFDC
/* 8030FFD4 0030BC34  2C 00 00 5A */	cmpwi r0, 0x5a
/* 8030FFD8 0030BC38  40 81 00 0C */	ble lbl_8030FFE4
lbl_8030FFDC:
/* 8030FFDC 0030BC3C  38 60 00 23 */	li r3, 0x23
/* 8030FFE0 0030BC40  48 00 00 50 */	b lbl_80310030
lbl_8030FFE4:
/* 8030FFE4 0030BC44  88 07 00 20 */	lbz r0, 0x20(r7)
/* 8030FFE8 0030BC48  38 E0 FF FF */	li r7, -1
/* 8030FFEC 0030BC4C  7C E7 04 30 */	srw r7, r7, r0
/* 8030FFF0 0030BC50  38 07 00 01 */	addi r0, r7, 1
/* 8030FFF4 0030BC54  7C 04 00 40 */	cmplw r4, r0
/* 8030FFF8 0030BC58  41 80 00 0C */	blt lbl_80310004
/* 8030FFFC 0030BC5C  38 60 00 25 */	li r3, 0x25
/* 80310000 0030BC60  48 00 00 30 */	b lbl_80310030
lbl_80310004:
/* 80310004 0030BC64  7C 05 00 D0 */	neg r0, r5
/* 80310008 0030BC68  7C C7 33 78 */	mr r7, r6
/* 8031000C 0030BC6C  7C 00 2B 78 */	or r0, r0, r5
/* 80310010 0030BC70  39 01 00 08 */	addi r8, r1, 8
/* 80310014 0030BC74  54 05 0F FE */	srwi r5, r0, 0x1f
/* 80310018 0030BC78  38 C0 00 00 */	li r6, 0
/* 8031001C 0030BC7C  4B FF FC 95 */	bl VFiPFFAT_GetSector
/* 80310020 0030BC80  2C 03 00 00 */	cmpwi r3, 0
/* 80310024 0030BC84  41 82 00 08 */	beq lbl_8031002C
/* 80310028 0030BC88  48 00 00 08 */	b lbl_80310030
lbl_8031002C:
/* 8031002C 0030BC8C  38 60 00 00 */	li r3, 0
lbl_80310030:
/* 80310030 0030BC90  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80310034 0030BC94  7C 08 03 A6 */	mtlr r0
/* 80310038 0030BC98  38 21 00 10 */	addi r1, r1, 0x10
/* 8031003C 0030BC9C  4E 80 00 20 */	blr

.global VFiPFFAT_GetSectorAllocated
VFiPFFAT_GetSectorAllocated:
/* 80310040 0030BCA0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80310044 0030BCA4  7C 08 02 A6 */	mflr r0
/* 80310048 0030BCA8  2C 03 00 00 */	cmpwi r3, 0
/* 8031004C 0030BCAC  7C C9 33 78 */	mr r9, r6
/* 80310050 0030BCB0  90 01 00 14 */	stw r0, 0x14(r1)
/* 80310054 0030BCB4  7C E8 3B 78 */	mr r8, r7
/* 80310058 0030BCB8  40 82 00 0C */	bne lbl_80310064
/* 8031005C 0030BCBC  38 60 00 0A */	li r3, 0xa
/* 80310060 0030BCC0  48 00 00 A4 */	b lbl_80310104
lbl_80310064:
/* 80310064 0030BCC4  80 E3 00 30 */	lwz r7, 0x30(r3)
/* 80310068 0030BCC8  2C 07 00 00 */	cmpwi r7, 0
/* 8031006C 0030BCCC  40 82 00 0C */	bne lbl_80310078
/* 80310070 0030BCD0  38 60 00 0A */	li r3, 0xa
/* 80310074 0030BCD4  48 00 00 90 */	b lbl_80310104
lbl_80310078:
/* 80310078 0030BCD8  80 C3 00 00 */	lwz r6, 0(r3)
/* 8031007C 0030BCDC  2C 06 00 00 */	cmpwi r6, 0
/* 80310080 0030BCE0  40 82 00 0C */	bne lbl_8031008C
/* 80310084 0030BCE4  38 60 00 0A */	li r3, 0xa
/* 80310088 0030BCE8  48 00 00 7C */	b lbl_80310104
lbl_8031008C:
/* 8031008C 0030BCEC  80 07 00 08 */	lwz r0, 8(r7)
/* 80310090 0030BCF0  7C 00 30 40 */	cmplw r0, r6
/* 80310094 0030BCF4  40 81 00 0C */	ble lbl_803100A0
/* 80310098 0030BCF8  38 60 00 0A */	li r3, 0xa
/* 8031009C 0030BCFC  48 00 00 68 */	b lbl_80310104
lbl_803100A0:
/* 803100A0 0030BD00  80 C3 00 34 */	lwz r6, 0x34(r3)
/* 803100A4 0030BD04  88 06 18 7A */	lbz r0, 0x187a(r6)
/* 803100A8 0030BD08  7C 00 07 74 */	extsb r0, r0
/* 803100AC 0030BD0C  2C 00 00 41 */	cmpwi r0, 0x41
/* 803100B0 0030BD10  41 80 00 0C */	blt lbl_803100BC
/* 803100B4 0030BD14  2C 00 00 5A */	cmpwi r0, 0x5a
/* 803100B8 0030BD18  40 81 00 0C */	ble lbl_803100C4
lbl_803100BC:
/* 803100BC 0030BD1C  38 60 00 23 */	li r3, 0x23
/* 803100C0 0030BD20  48 00 00 44 */	b lbl_80310104
lbl_803100C4:
/* 803100C4 0030BD24  88 06 00 20 */	lbz r0, 0x20(r6)
/* 803100C8 0030BD28  38 C0 FF FF */	li r6, -1
/* 803100CC 0030BD2C  7C C6 04 30 */	srw r6, r6, r0
/* 803100D0 0030BD30  38 06 00 01 */	addi r0, r6, 1
/* 803100D4 0030BD34  7C 04 00 40 */	cmplw r4, r0
/* 803100D8 0030BD38  41 80 00 0C */	blt lbl_803100E4
/* 803100DC 0030BD3C  38 60 00 25 */	li r3, 0x25
/* 803100E0 0030BD40  48 00 00 24 */	b lbl_80310104
lbl_803100E4:
/* 803100E4 0030BD44  7C A6 2B 78 */	mr r6, r5
/* 803100E8 0030BD48  7D 27 4B 78 */	mr r7, r9
/* 803100EC 0030BD4C  38 A0 00 02 */	li r5, 2
/* 803100F0 0030BD50  4B FF FB C1 */	bl VFiPFFAT_GetSector
/* 803100F4 0030BD54  7C 03 00 D0 */	neg r0, r3
/* 803100F8 0030BD58  7C 00 1B 78 */	or r0, r0, r3
/* 803100FC 0030BD5C  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 80310100 0030BD60  7C 63 00 38 */	and r3, r3, r0
lbl_80310104:
/* 80310104 0030BD64  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80310108 0030BD68  7C 08 03 A6 */	mtlr r0
/* 8031010C 0030BD6C  38 21 00 10 */	addi r1, r1, 0x10
/* 80310110 0030BD70  4E 80 00 20 */	blr

.global VFiPFFAT_GetContinuousSector
VFiPFFAT_GetContinuousSector:
/* 80310114 0030BD74  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80310118 0030BD78  7C 08 02 A6 */	mflr r0
/* 8031011C 0030BD7C  90 01 00 34 */	stw r0, 0x34(r1)
/* 80310120 0030BD80  39 61 00 30 */	addi r11, r1, 0x30
/* 80310124 0030BD84  4B EB 6F FD */	bl _savegpr_25
/* 80310128 0030BD88  2C 03 00 00 */	cmpwi r3, 0
/* 8031012C 0030BD8C  7C 79 1B 78 */	mr r25, r3
/* 80310130 0030BD90  7C 9A 23 78 */	mr r26, r4
/* 80310134 0030BD94  7C BB 2B 78 */	mr r27, r5
/* 80310138 0030BD98  7C DC 33 78 */	mr r28, r6
/* 8031013C 0030BD9C  7C FD 3B 78 */	mr r29, r7
/* 80310140 0030BDA0  3B C0 FF FF */	li r30, -1
/* 80310144 0030BDA4  40 82 00 0C */	bne lbl_80310150
/* 80310148 0030BDA8  38 60 00 0A */	li r3, 0xa
/* 8031014C 0030BDAC  48 00 01 6C */	b lbl_803102B8
lbl_80310150:
/* 80310150 0030BDB0  80 E3 00 30 */	lwz r7, 0x30(r3)
/* 80310154 0030BDB4  2C 07 00 00 */	cmpwi r7, 0
/* 80310158 0030BDB8  40 82 00 0C */	bne lbl_80310164
/* 8031015C 0030BDBC  38 60 00 0A */	li r3, 0xa
/* 80310160 0030BDC0  48 00 01 58 */	b lbl_803102B8
lbl_80310164:
/* 80310164 0030BDC4  80 A3 00 00 */	lwz r5, 0(r3)
/* 80310168 0030BDC8  2C 05 00 00 */	cmpwi r5, 0
/* 8031016C 0030BDCC  40 82 00 0C */	bne lbl_80310178
/* 80310170 0030BDD0  38 60 00 0A */	li r3, 0xa
/* 80310174 0030BDD4  48 00 01 44 */	b lbl_803102B8
lbl_80310178:
/* 80310178 0030BDD8  80 07 00 08 */	lwz r0, 8(r7)
/* 8031017C 0030BDDC  7C 00 28 40 */	cmplw r0, r5
/* 80310180 0030BDE0  40 81 00 0C */	ble lbl_8031018C
/* 80310184 0030BDE4  38 60 00 0A */	li r3, 0xa
/* 80310188 0030BDE8  48 00 01 30 */	b lbl_803102B8
lbl_8031018C:
/* 8031018C 0030BDEC  83 E3 00 34 */	lwz r31, 0x34(r3)
/* 80310190 0030BDF0  88 1F 18 7A */	lbz r0, 0x187a(r31)
/* 80310194 0030BDF4  7C 00 07 74 */	extsb r0, r0
/* 80310198 0030BDF8  2C 00 00 41 */	cmpwi r0, 0x41
/* 8031019C 0030BDFC  41 80 00 0C */	blt lbl_803101A8
/* 803101A0 0030BE00  2C 00 00 5A */	cmpwi r0, 0x5a
/* 803101A4 0030BE04  40 81 00 0C */	ble lbl_803101B0
lbl_803101A8:
/* 803101A8 0030BE08  38 60 00 23 */	li r3, 0x23
/* 803101AC 0030BE0C  48 00 01 0C */	b lbl_803102B8
lbl_803101B0:
/* 803101B0 0030BE10  88 1F 00 20 */	lbz r0, 0x20(r31)
/* 803101B4 0030BE14  38 A0 FF FF */	li r5, -1
/* 803101B8 0030BE18  7C A5 04 30 */	srw r5, r5, r0
/* 803101BC 0030BE1C  38 05 00 01 */	addi r0, r5, 1
/* 803101C0 0030BE20  7C 04 00 40 */	cmplw r4, r0
/* 803101C4 0030BE24  41 80 00 0C */	blt lbl_803101D0
/* 803101C8 0030BE28  38 60 00 25 */	li r3, 0x25
/* 803101CC 0030BE2C  48 00 00 EC */	b lbl_803102B8
lbl_803101D0:
/* 803101D0 0030BE30  80 A6 00 00 */	lwz r5, 0(r6)
/* 803101D4 0030BE34  3C 05 00 01 */	addis r0, r5, 1
/* 803101D8 0030BE38  28 00 FF FF */	cmplwi r0, 0xffff
/* 803101DC 0030BE3C  41 82 00 1C */	beq lbl_803101F8
/* 803101E0 0030BE40  80 7F 00 30 */	lwz r3, 0x30(r31)
/* 803101E4 0030BE44  88 1F 00 21 */	lbz r0, 0x21(r31)
/* 803101E8 0030BE48  7C 63 28 50 */	subf r3, r3, r5
/* 803101EC 0030BE4C  7C 63 04 30 */	srw r3, r3, r0
/* 803101F0 0030BE50  3B C3 00 02 */	addi r30, r3, 2
/* 803101F4 0030BE54  48 00 00 3C */	b lbl_80310230
lbl_803101F8:
/* 803101F8 0030BE58  38 A0 00 00 */	li r5, 0
/* 803101FC 0030BE5C  4B FF FD 6D */	bl VFiPFFAT_GetSectorSpecified
/* 80310200 0030BE60  2C 03 00 00 */	cmpwi r3, 0
/* 80310204 0030BE64  41 82 00 08 */	beq lbl_8031020C
/* 80310208 0030BE68  48 00 00 B0 */	b lbl_803102B8
lbl_8031020C:
/* 8031020C 0030BE6C  80 BC 00 00 */	lwz r5, 0(r28)
/* 80310210 0030BE70  3C 05 00 01 */	addis r0, r5, 1
/* 80310214 0030BE74  28 00 FF FF */	cmplwi r0, 0xffff
/* 80310218 0030BE78  41 82 00 18 */	beq lbl_80310230
/* 8031021C 0030BE7C  80 7F 00 30 */	lwz r3, 0x30(r31)
/* 80310220 0030BE80  88 1F 00 21 */	lbz r0, 0x21(r31)
/* 80310224 0030BE84  7C 63 28 50 */	subf r3, r3, r5
/* 80310228 0030BE88  7C 63 04 30 */	srw r3, r3, r0
/* 8031022C 0030BE8C  3B C3 00 02 */	addi r30, r3, 2
lbl_80310230:
/* 80310230 0030BE90  3C 05 00 01 */	addis r0, r5, 1
/* 80310234 0030BE94  28 00 FF FF */	cmplwi r0, 0xffff
/* 80310238 0030BE98  41 82 00 24 */	beq lbl_8031025C
/* 8031023C 0030BE9C  88 1F 00 21 */	lbz r0, 0x21(r31)
/* 80310240 0030BEA0  38 7E FF FF */	addi r3, r30, -1
/* 80310244 0030BEA4  80 9F 00 30 */	lwz r4, 0x30(r31)
/* 80310248 0030BEA8  7C 60 00 30 */	slw r0, r3, r0
/* 8031024C 0030BEAC  7C 04 02 14 */	add r0, r4, r0
/* 80310250 0030BEB0  7C 05 00 50 */	subf r0, r5, r0
/* 80310254 0030BEB4  90 1D 00 00 */	stw r0, 0(r29)
/* 80310258 0030BEB8  48 00 00 0C */	b lbl_80310264
lbl_8031025C:
/* 8031025C 0030BEBC  38 00 00 00 */	li r0, 0
/* 80310260 0030BEC0  90 1D 00 00 */	stw r0, 0(r29)
lbl_80310264:
/* 80310264 0030BEC4  80 7C 00 00 */	lwz r3, 0(r28)
/* 80310268 0030BEC8  3C 03 00 01 */	addis r0, r3, 1
/* 8031026C 0030BECC  28 00 FF FF */	cmplwi r0, 0xffff
/* 80310270 0030BED0  41 82 00 44 */	beq lbl_803102B4
/* 80310274 0030BED4  80 7D 00 00 */	lwz r3, 0(r29)
/* 80310278 0030BED8  88 1F 00 20 */	lbz r0, 0x20(r31)
/* 8031027C 0030BEDC  7C 60 00 30 */	slw r0, r3, r0
/* 80310280 0030BEE0  7C 00 D8 40 */	cmplw r0, r27
/* 80310284 0030BEE4  40 80 00 30 */	bge lbl_803102B4
/* 80310288 0030BEE8  88 1F 00 21 */	lbz r0, 0x21(r31)
/* 8031028C 0030BEEC  7F 23 CB 78 */	mr r3, r25
/* 80310290 0030BEF0  7F C4 F3 78 */	mr r4, r30
/* 80310294 0030BEF4  7F 66 DB 78 */	mr r6, r27
/* 80310298 0030BEF8  7F 45 04 30 */	srw r5, r26, r0
/* 8031029C 0030BEFC  7F A7 EB 78 */	mr r7, r29
/* 803102A0 0030BF00  38 A5 00 01 */	addi r5, r5, 1
/* 803102A4 0030BF04  4B FF F5 1D */	bl VFiPFFAT_GetClusterContinuousSectorInChain
/* 803102A8 0030BF08  2C 03 00 00 */	cmpwi r3, 0
/* 803102AC 0030BF0C  41 82 00 08 */	beq lbl_803102B4
/* 803102B0 0030BF10  48 00 00 08 */	b lbl_803102B8
lbl_803102B4:
/* 803102B4 0030BF14  38 60 00 00 */	li r3, 0
lbl_803102B8:
/* 803102B8 0030BF18  39 61 00 30 */	addi r11, r1, 0x30
/* 803102BC 0030BF1C  4B EB 6E B1 */	bl _restgpr_25
/* 803102C0 0030BF20  80 01 00 34 */	lwz r0, 0x34(r1)
/* 803102C4 0030BF24  7C 08 03 A6 */	mtlr r0
/* 803102C8 0030BF28  38 21 00 30 */	addi r1, r1, 0x30
/* 803102CC 0030BF2C  4E 80 00 20 */	blr

.global VFiPFFAT_CountAllocatedClusters
VFiPFFAT_CountAllocatedClusters:
/* 803102D0 0030BF30  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 803102D4 0030BF34  7C 08 02 A6 */	mflr r0
/* 803102D8 0030BF38  2C 03 00 00 */	cmpwi r3, 0
/* 803102DC 0030BF3C  7C 86 23 78 */	mr r6, r4
/* 803102E0 0030BF40  90 01 00 14 */	stw r0, 0x14(r1)
/* 803102E4 0030BF44  38 00 00 00 */	li r0, 0
/* 803102E8 0030BF48  7C A7 2B 78 */	mr r7, r5
/* 803102EC 0030BF4C  90 05 00 00 */	stw r0, 0(r5)
/* 803102F0 0030BF50  40 82 00 0C */	bne lbl_803102FC
/* 803102F4 0030BF54  38 60 00 0A */	li r3, 0xa
/* 803102F8 0030BF58  48 00 01 20 */	b lbl_80310418
lbl_803102FC:
/* 803102FC 0030BF5C  81 23 00 30 */	lwz r9, 0x30(r3)
/* 80310300 0030BF60  2C 09 00 00 */	cmpwi r9, 0
/* 80310304 0030BF64  40 82 00 0C */	bne lbl_80310310
/* 80310308 0030BF68  38 60 00 0A */	li r3, 0xa
/* 8031030C 0030BF6C  48 00 01 0C */	b lbl_80310418
lbl_80310310:
/* 80310310 0030BF70  81 03 00 00 */	lwz r8, 0(r3)
/* 80310314 0030BF74  2C 08 00 00 */	cmpwi r8, 0
/* 80310318 0030BF78  40 82 00 0C */	bne lbl_80310324
/* 8031031C 0030BF7C  38 60 00 0A */	li r3, 0xa
/* 80310320 0030BF80  48 00 00 F8 */	b lbl_80310418
lbl_80310324:
/* 80310324 0030BF84  80 09 00 08 */	lwz r0, 8(r9)
/* 80310328 0030BF88  7C 00 40 40 */	cmplw r0, r8
/* 8031032C 0030BF8C  40 81 00 0C */	ble lbl_80310338
/* 80310330 0030BF90  38 60 00 0A */	li r3, 0xa
/* 80310334 0030BF94  48 00 00 E4 */	b lbl_80310418
lbl_80310338:
/* 80310338 0030BF98  81 43 00 34 */	lwz r10, 0x34(r3)
/* 8031033C 0030BF9C  88 0A 18 7A */	lbz r0, 0x187a(r10)
/* 80310340 0030BFA0  7C 00 07 74 */	extsb r0, r0
/* 80310344 0030BFA4  2C 00 00 41 */	cmpwi r0, 0x41
/* 80310348 0030BFA8  41 80 00 0C */	blt lbl_80310354
/* 8031034C 0030BFAC  2C 00 00 5A */	cmpwi r0, 0x5a
/* 80310350 0030BFB0  40 81 00 0C */	ble lbl_8031035C
lbl_80310354:
/* 80310354 0030BFB4  38 60 00 23 */	li r3, 0x23
/* 80310358 0030BFB8  48 00 00 C0 */	b lbl_80310418
lbl_8031035C:
/* 8031035C 0030BFBC  81 03 00 08 */	lwz r8, 8(r3)
/* 80310360 0030BFC0  81 68 00 00 */	lwz r11, 0(r8)
/* 80310364 0030BFC4  28 0B 00 02 */	cmplwi r11, 2
/* 80310368 0030BFC8  40 80 00 0C */	bge lbl_80310374
/* 8031036C 0030BFCC  38 60 00 00 */	li r3, 0
/* 80310370 0030BFD0  48 00 00 A8 */	b lbl_80310418
lbl_80310374:
/* 80310374 0030BFD4  80 03 00 0C */	lwz r0, 0xc(r3)
/* 80310378 0030BFD8  2C 00 00 00 */	cmpwi r0, 0
/* 8031037C 0030BFDC  41 82 00 18 */	beq lbl_80310394
/* 80310380 0030BFE0  80 83 00 10 */	lwz r4, 0x10(r3)
/* 80310384 0030BFE4  38 60 00 00 */	li r3, 0
/* 80310388 0030BFE8  38 04 00 01 */	addi r0, r4, 1
/* 8031038C 0030BFEC  90 05 00 00 */	stw r0, 0(r5)
/* 80310390 0030BFF0  48 00 00 88 */	b lbl_80310418
lbl_80310394:
/* 80310394 0030BFF4  80 09 00 04 */	lwz r0, 4(r9)
/* 80310398 0030BFF8  2C 00 00 00 */	cmpwi r0, 0
/* 8031039C 0030BFFC  41 82 00 60 */	beq lbl_803103FC
/* 803103A0 0030C000  81 09 00 00 */	lwz r8, 0(r9)
/* 803103A4 0030C004  88 CA 00 20 */	lbz r6, 0x20(r10)
/* 803103A8 0030C008  88 0A 00 21 */	lbz r0, 0x21(r10)
/* 803103AC 0030C00C  39 28 00 01 */	addi r9, r8, 1
/* 803103B0 0030C010  7C 06 02 14 */	add r0, r6, r0
/* 803103B4 0030C014  7D 20 00 30 */	slw r0, r9, r0
/* 803103B8 0030C018  7C 04 00 40 */	cmplw r4, r0
/* 803103BC 0030C01C  41 81 00 10 */	bgt lbl_803103CC
/* 803103C0 0030C020  91 25 00 00 */	stw r9, 0(r5)
/* 803103C4 0030C024  38 60 00 00 */	li r3, 0
/* 803103C8 0030C028  48 00 00 50 */	b lbl_80310418
lbl_803103CC:
/* 803103CC 0030C02C  91 05 00 00 */	stw r8, 0(r5)
/* 803103D0 0030C030  81 03 00 34 */	lwz r8, 0x34(r3)
/* 803103D4 0030C034  80 C3 00 30 */	lwz r6, 0x30(r3)
/* 803103D8 0030C038  88 A8 00 20 */	lbz r5, 0x20(r8)
/* 803103DC 0030C03C  88 08 00 21 */	lbz r0, 0x21(r8)
/* 803103E0 0030C040  81 06 00 00 */	lwz r8, 0(r6)
/* 803103E4 0030C044  7C 05 02 14 */	add r0, r5, r0
/* 803103E8 0030C048  81 66 00 04 */	lwz r11, 4(r6)
/* 803103EC 0030C04C  7D 00 00 30 */	slw r0, r8, r0
/* 803103F0 0030C050  38 A8 00 01 */	addi r5, r8, 1
/* 803103F4 0030C054  7C C0 20 50 */	subf r6, r0, r4
/* 803103F8 0030C058  48 00 00 08 */	b lbl_80310400
lbl_803103FC:
/* 803103FC 0030C05C  38 A0 00 01 */	li r5, 1
lbl_80310400:
/* 80310400 0030C060  7D 64 5B 78 */	mr r4, r11
/* 80310404 0030C064  4B FF F4 ED */	bl VFiPFFAT_GetClusterAllocatedInChain
/* 80310408 0030C068  2C 03 00 00 */	cmpwi r3, 0
/* 8031040C 0030C06C  41 82 00 08 */	beq lbl_80310414
/* 80310410 0030C070  48 00 00 08 */	b lbl_80310418
lbl_80310414:
/* 80310414 0030C074  38 60 00 00 */	li r3, 0
lbl_80310418:
/* 80310418 0030C078  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031041C 0030C07C  7C 08 03 A6 */	mtlr r0
/* 80310420 0030C080  38 21 00 10 */	addi r1, r1, 0x10
/* 80310424 0030C084  4E 80 00 20 */	blr

.global VFiPFFAT_FreeChain
VFiPFFAT_FreeChain:
/* 80310428 0030C088  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8031042C 0030C08C  7C 08 02 A6 */	mflr r0
/* 80310430 0030C090  90 01 00 44 */	stw r0, 0x44(r1)
/* 80310434 0030C094  39 61 00 40 */	addi r11, r1, 0x40
/* 80310438 0030C098  4B EB 6C E1 */	bl _savegpr_23
/* 8031043C 0030C09C  83 E3 00 34 */	lwz r31, 0x34(r3)
/* 80310440 0030C0A0  7C 78 1B 78 */	mr r24, r3
/* 80310444 0030C0A4  7C 99 23 78 */	mr r25, r4
/* 80310448 0030C0A8  7C BA 2B 78 */	mr r26, r5
/* 8031044C 0030C0AC  2C 1F 00 00 */	cmpwi r31, 0
/* 80310450 0030C0B0  7C DB 33 78 */	mr r27, r6
/* 80310454 0030C0B4  40 82 00 0C */	bne lbl_80310460
/* 80310458 0030C0B8  38 60 00 0A */	li r3, 0xa
/* 8031045C 0030C0BC  48 00 03 34 */	b lbl_80310790
lbl_80310460:
/* 80310460 0030C0C0  28 04 00 02 */	cmplwi r4, 2
/* 80310464 0030C0C4  41 80 00 14 */	blt lbl_80310478
/* 80310468 0030C0C8  80 7F 00 34 */	lwz r3, 0x34(r31)
/* 8031046C 0030C0CC  38 03 00 02 */	addi r0, r3, 2
/* 80310470 0030C0D0  7C 04 00 40 */	cmplw r4, r0
/* 80310474 0030C0D4  41 80 00 14 */	blt lbl_80310488
lbl_80310478:
/* 80310478 0030C0D8  2C 04 00 00 */	cmpwi r4, 0
/* 8031047C 0030C0DC  41 82 00 0C */	beq lbl_80310488
/* 80310480 0030C0E0  38 60 00 0E */	li r3, 0xe
/* 80310484 0030C0E4  48 00 03 0C */	b lbl_80310790
lbl_80310488:
/* 80310488 0030C0E8  2C 04 00 00 */	cmpwi r4, 0
/* 8031048C 0030C0EC  40 82 00 0C */	bne lbl_80310498
/* 80310490 0030C0F0  38 60 00 00 */	li r3, 0
/* 80310494 0030C0F4  48 00 02 FC */	b lbl_80310790
lbl_80310498:
/* 80310498 0030C0F8  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 8031049C 0030C0FC  3C 60 80 40 */	lis r3, lbl_803FE280@ha
/* 803104A0 0030C100  38 63 E2 80 */	addi r3, r3, lbl_803FE280@l
/* 803104A4 0030C104  2C 06 00 00 */	cmpwi r6, 0
/* 803104A8 0030C108  1C 00 00 14 */	mulli r0, r0, 0x14
/* 803104AC 0030C10C  7C 63 02 14 */	add r3, r3, r0
/* 803104B0 0030C110  83 C3 00 04 */	lwz r30, 4(r3)
/* 803104B4 0030C114  41 82 00 18 */	beq lbl_803104CC
/* 803104B8 0030C118  A0 7F 00 00 */	lhz r3, 0(r31)
/* 803104BC 0030C11C  7F 7D DB 78 */	mr r29, r27
/* 803104C0 0030C120  88 1F 00 21 */	lbz r0, 0x21(r31)
/* 803104C4 0030C124  7C 7C 00 30 */	slw r28, r3, r0
/* 803104C8 0030C128  48 00 00 0C */	b lbl_803104D4
lbl_803104CC:
/* 803104CC 0030C12C  38 60 00 00 */	li r3, 0
/* 803104D0 0030C130  48 00 02 C0 */	b lbl_80310790
lbl_803104D4:
/* 803104D4 0030C134  7F E3 FB 78 */	mr r3, r31
/* 803104D8 0030C138  7F 25 CB 78 */	mr r5, r25
/* 803104DC 0030C13C  38 81 00 08 */	addi r4, r1, 8
/* 803104E0 0030C140  4B FF E0 59 */	bl VFiPFFAT_ReadFATSector
/* 803104E4 0030C144  2C 03 00 00 */	cmpwi r3, 0
/* 803104E8 0030C148  41 82 00 08 */	beq lbl_803104F0
/* 803104EC 0030C14C  48 00 02 A4 */	b lbl_80310790
lbl_803104F0:
/* 803104F0 0030C150  80 61 00 08 */	lwz r3, 8(r1)
/* 803104F4 0030C154  38 00 00 01 */	li r0, 1
/* 803104F8 0030C158  B0 03 00 02 */	sth r0, 2(r3)
/* 803104FC 0030C15C  93 21 00 0C */	stw r25, 0xc(r1)
/* 80310500 0030C160  48 00 01 F8 */	b lbl_803106F8
lbl_80310504:
/* 80310504 0030C164  2C 1B 00 00 */	cmpwi r27, 0
/* 80310508 0030C168  41 82 00 0C */	beq lbl_80310514
/* 8031050C 0030C16C  2C 1D 00 00 */	cmpwi r29, 0
/* 80310510 0030C170  41 82 01 F0 */	beq lbl_80310700
lbl_80310514:
/* 80310514 0030C174  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80310518 0030C178  80 61 00 08 */	lwz r3, 8(r1)
/* 8031051C 0030C17C  2C 00 00 01 */	cmpwi r0, 1
/* 80310520 0030C180  82 E3 00 18 */	lwz r23, 0x18(r3)
/* 80310524 0030C184  41 82 00 38 */	beq lbl_8031055C
/* 80310528 0030C188  40 80 00 10 */	bge lbl_80310538
/* 8031052C 0030C18C  2C 00 00 00 */	cmpwi r0, 0
/* 80310530 0030C190  40 80 00 14 */	bge lbl_80310544
/* 80310534 0030C194  48 00 00 58 */	b lbl_8031058C
lbl_80310538:
/* 80310538 0030C198  2C 00 00 03 */	cmpwi r0, 3
/* 8031053C 0030C19C  40 80 00 50 */	bge lbl_8031058C
/* 80310540 0030C1A0  48 00 00 34 */	b lbl_80310574
lbl_80310544:
/* 80310544 0030C1A4  7F E3 FB 78 */	mr r3, r31
/* 80310548 0030C1A8  57 24 04 3E */	clrlwi r4, r25, 0x10
/* 8031054C 0030C1AC  38 A1 00 0C */	addi r5, r1, 0xc
/* 80310550 0030C1B0  38 C1 00 08 */	addi r6, r1, 8
/* 80310554 0030C1B4  48 00 0E 01 */	bl VFiPFFAT12_ReadFATEntryPage
/* 80310558 0030C1B8  48 00 00 38 */	b lbl_80310590
lbl_8031055C:
/* 8031055C 0030C1BC  7F E3 FB 78 */	mr r3, r31
/* 80310560 0030C1C0  7F 24 CB 78 */	mr r4, r25
/* 80310564 0030C1C4  38 A1 00 0C */	addi r5, r1, 0xc
/* 80310568 0030C1C8  38 C1 00 08 */	addi r6, r1, 8
/* 8031056C 0030C1CC  48 00 18 51 */	bl VFiPFFAT16_ReadFATEntryPage
/* 80310570 0030C1D0  48 00 00 20 */	b lbl_80310590
lbl_80310574:
/* 80310574 0030C1D4  7F E3 FB 78 */	mr r3, r31
/* 80310578 0030C1D8  7F 24 CB 78 */	mr r4, r25
/* 8031057C 0030C1DC  38 A1 00 0C */	addi r5, r1, 0xc
/* 80310580 0030C1E0  38 C1 00 08 */	addi r6, r1, 8
/* 80310584 0030C1E4  48 00 1D C1 */	bl VFiPFFAT32_ReadFATEntryPage
/* 80310588 0030C1E8  48 00 00 08 */	b lbl_80310590
lbl_8031058C:
/* 8031058C 0030C1EC  38 60 00 0F */	li r3, 0xf
lbl_80310590:
/* 80310590 0030C1F0  2C 03 00 00 */	cmpwi r3, 0
/* 80310594 0030C1F4  41 82 00 08 */	beq lbl_8031059C
/* 80310598 0030C1F8  48 00 01 F8 */	b lbl_80310790
lbl_8031059C:
/* 8031059C 0030C1FC  80 01 00 0C */	lwz r0, 0xc(r1)
/* 803105A0 0030C200  2C 00 00 00 */	cmpwi r0, 0
/* 803105A4 0030C204  40 82 00 38 */	bne lbl_803105DC
/* 803105A8 0030C208  80 81 00 08 */	lwz r4, 8(r1)
/* 803105AC 0030C20C  38 60 00 00 */	li r3, 0
/* 803105B0 0030C210  A0 04 00 00 */	lhz r0, 0(r4)
/* 803105B4 0030C214  54 00 07 BC */	rlwinm r0, r0, 0, 0x1e, 0x1e
/* 803105B8 0030C218  2C 00 00 02 */	cmpwi r0, 2
/* 803105BC 0030C21C  40 82 00 0C */	bne lbl_803105C8
/* 803105C0 0030C220  7F E3 FB 78 */	mr r3, r31
/* 803105C4 0030C224  4B FF A3 B9 */	bl VFiPFCACHE_WriteFATPage
lbl_803105C8:
/* 803105C8 0030C228  2C 03 00 00 */	cmpwi r3, 0
/* 803105CC 0030C22C  41 82 00 08 */	beq lbl_803105D4
/* 803105D0 0030C230  48 00 01 C0 */	b lbl_80310790
lbl_803105D4:
/* 803105D4 0030C234  38 60 00 00 */	li r3, 0
/* 803105D8 0030C238  48 00 01 B8 */	b lbl_80310790
lbl_803105DC:
/* 803105DC 0030C23C  80 61 00 08 */	lwz r3, 8(r1)
/* 803105E0 0030C240  80 03 00 18 */	lwz r0, 0x18(r3)
/* 803105E4 0030C244  7C 17 00 40 */	cmplw r23, r0
/* 803105E8 0030C248  41 82 00 20 */	beq lbl_80310608
/* 803105EC 0030C24C  7F E3 FB 78 */	mr r3, r31
/* 803105F0 0030C250  7F 25 CB 78 */	mr r5, r25
/* 803105F4 0030C254  38 81 00 08 */	addi r4, r1, 8
/* 803105F8 0030C258  4B FF DF 41 */	bl VFiPFFAT_ReadFATSector
/* 803105FC 0030C25C  2C 03 00 00 */	cmpwi r3, 0
/* 80310600 0030C260  41 82 00 08 */	beq lbl_80310608
/* 80310604 0030C264  48 00 01 8C */	b lbl_80310790
lbl_80310608:
/* 80310608 0030C268  3C 1A 00 01 */	addis r0, r26, 1
/* 8031060C 0030C26C  28 00 FF FF */	cmplwi r0, 0xffff
/* 80310610 0030C270  41 82 00 28 */	beq lbl_80310638
/* 80310614 0030C274  7F 03 C3 78 */	mr r3, r24
/* 80310618 0030C278  7F 24 CB 78 */	mr r4, r25
/* 8031061C 0030C27C  7F 45 D3 78 */	mr r5, r26
/* 80310620 0030C280  39 01 00 08 */	addi r8, r1, 8
/* 80310624 0030C284  38 C0 00 00 */	li r6, 0
/* 80310628 0030C288  38 E0 00 01 */	li r7, 1
/* 8031062C 0030C28C  4B FF E9 99 */	bl VFiPFFAT_WriteClusterPage
/* 80310630 0030C290  3B 5A 00 01 */	addi r26, r26, 1
/* 80310634 0030C294  48 00 00 78 */	b lbl_803106AC
lbl_80310638:
/* 80310638 0030C298  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 8031063C 0030C29C  2C 00 00 01 */	cmpwi r0, 1
/* 80310640 0030C2A0  41 82 00 38 */	beq lbl_80310678
/* 80310644 0030C2A4  40 80 00 10 */	bge lbl_80310654
/* 80310648 0030C2A8  2C 00 00 00 */	cmpwi r0, 0
/* 8031064C 0030C2AC  40 80 00 14 */	bge lbl_80310660
/* 80310650 0030C2B0  48 00 00 58 */	b lbl_803106A8
lbl_80310654:
/* 80310654 0030C2B4  2C 00 00 03 */	cmpwi r0, 3
/* 80310658 0030C2B8  40 80 00 50 */	bge lbl_803106A8
/* 8031065C 0030C2BC  48 00 00 34 */	b lbl_80310690
lbl_80310660:
/* 80310660 0030C2C0  7F E3 FB 78 */	mr r3, r31
/* 80310664 0030C2C4  57 24 04 3E */	clrlwi r4, r25, 0x10
/* 80310668 0030C2C8  38 C1 00 08 */	addi r6, r1, 8
/* 8031066C 0030C2CC  38 A0 00 00 */	li r5, 0
/* 80310670 0030C2D0  48 00 11 5D */	bl VFiPFFAT12_WriteFATEntryPage
/* 80310674 0030C2D4  48 00 00 38 */	b lbl_803106AC
lbl_80310678:
/* 80310678 0030C2D8  7F E3 FB 78 */	mr r3, r31
/* 8031067C 0030C2DC  7F 24 CB 78 */	mr r4, r25
/* 80310680 0030C2E0  38 C1 00 08 */	addi r6, r1, 8
/* 80310684 0030C2E4  38 A0 00 00 */	li r5, 0
/* 80310688 0030C2E8  48 00 19 89 */	bl VFiPFFAT16_WriteFATEntryPage
/* 8031068C 0030C2EC  48 00 00 20 */	b lbl_803106AC
lbl_80310690:
/* 80310690 0030C2F0  7F E3 FB 78 */	mr r3, r31
/* 80310694 0030C2F4  7F 24 CB 78 */	mr r4, r25
/* 80310698 0030C2F8  38 C1 00 08 */	addi r6, r1, 8
/* 8031069C 0030C2FC  38 A0 00 00 */	li r5, 0
/* 803106A0 0030C300  48 00 1F 91 */	bl VFiPFFAT32_WriteFATEntryPage
/* 803106A4 0030C304  48 00 00 08 */	b lbl_803106AC
lbl_803106A8:
/* 803106A8 0030C308  38 60 00 0F */	li r3, 0xf
lbl_803106AC:
/* 803106AC 0030C30C  2C 03 00 00 */	cmpwi r3, 0
/* 803106B0 0030C310  41 82 00 08 */	beq lbl_803106B8
/* 803106B4 0030C314  48 00 00 DC */	b lbl_80310790
lbl_803106B8:
/* 803106B8 0030C318  2C 1B 00 00 */	cmpwi r27, 0
/* 803106BC 0030C31C  41 82 00 20 */	beq lbl_803106DC
/* 803106C0 0030C320  2C 1D 00 00 */	cmpwi r29, 0
/* 803106C4 0030C324  41 82 00 18 */	beq lbl_803106DC
/* 803106C8 0030C328  7C 1D E0 10 */	subfc r0, r29, r28
/* 803106CC 0030C32C  7C 7D 01 94 */	addze r3, r29
/* 803106D0 0030C330  7C 1C E8 50 */	subf r0, r28, r29
/* 803106D4 0030C334  7C 63 E8 50 */	subf r3, r3, r29
/* 803106D8 0030C338  7C 1D 18 78 */	andc r29, r0, r3
lbl_803106DC:
/* 803106DC 0030C33C  80 7F 00 38 */	lwz r3, 0x38(r31)
/* 803106E0 0030C340  3C 03 00 01 */	addis r0, r3, 1
/* 803106E4 0030C344  28 00 FF FF */	cmplwi r0, 0xffff
/* 803106E8 0030C348  41 82 00 0C */	beq lbl_803106F4
/* 803106EC 0030C34C  38 03 00 01 */	addi r0, r3, 1
/* 803106F0 0030C350  90 1F 00 38 */	stw r0, 0x38(r31)
lbl_803106F4:
/* 803106F4 0030C354  83 21 00 0C */	lwz r25, 0xc(r1)
lbl_803106F8:
/* 803106F8 0030C358  7C 19 F0 40 */	cmplw r25, r30
/* 803106FC 0030C35C  41 80 FE 08 */	blt lbl_80310504
lbl_80310700:
/* 80310700 0030C360  80 81 00 08 */	lwz r4, 8(r1)
/* 80310704 0030C364  38 60 00 00 */	li r3, 0
/* 80310708 0030C368  A0 04 00 00 */	lhz r0, 0(r4)
/* 8031070C 0030C36C  54 00 07 BC */	rlwinm r0, r0, 0, 0x1e, 0x1e
/* 80310710 0030C370  2C 00 00 02 */	cmpwi r0, 2
/* 80310714 0030C374  40 82 00 0C */	bne lbl_80310720
/* 80310718 0030C378  7F E3 FB 78 */	mr r3, r31
/* 8031071C 0030C37C  4B FF A2 61 */	bl VFiPFCACHE_WriteFATPage
lbl_80310720:
/* 80310720 0030C380  2C 03 00 00 */	cmpwi r3, 0
/* 80310724 0030C384  41 82 00 08 */	beq lbl_8031072C
/* 80310728 0030C388  48 00 00 68 */	b lbl_80310790
lbl_8031072C:
/* 8031072C 0030C38C  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80310730 0030C390  2C 80 00 02 */	cmpwi cr1, r0, 2
/* 80310734 0030C394  40 86 00 58 */	bne cr1, lbl_8031078C
/* 80310738 0030C398  A0 1F 18 7C */	lhz r0, 0x187c(r31)
/* 8031073C 0030C39C  54 03 07 BD */	rlwinm. r3, r0, 0, 0x1e, 0x1e
/* 80310740 0030C3A0  41 82 00 4C */	beq lbl_8031078C
/* 80310744 0030C3A4  38 60 00 00 */	li r3, 0
/* 80310748 0030C3A8  41 86 00 0C */	beq cr1, lbl_80310754
/* 8031074C 0030C3AC  38 60 00 0C */	li r3, 0xc
/* 80310750 0030C3B0  48 00 00 20 */	b lbl_80310770
lbl_80310754:
/* 80310754 0030C3B4  40 82 00 0C */	bne lbl_80310760
/* 80310758 0030C3B8  38 60 00 24 */	li r3, 0x24
/* 8031075C 0030C3BC  48 00 00 14 */	b lbl_80310770
lbl_80310760:
/* 80310760 0030C3C0  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80310764 0030C3C4  41 82 00 0C */	beq lbl_80310770
/* 80310768 0030C3C8  7F E3 FB 78 */	mr r3, r31
/* 8031076C 0030C3CC  4B FF 54 31 */	bl VFiPFDRV_StoreFreeCountToFSINFO
lbl_80310770:
/* 80310770 0030C3D0  2C 03 00 00 */	cmpwi r3, 0
/* 80310774 0030C3D4  41 82 00 18 */	beq lbl_8031078C
/* 80310778 0030C3D8  38 00 FF FF */	li r0, -1
/* 8031077C 0030C3DC  90 1F 00 38 */	stw r0, 0x38(r31)
/* 80310780 0030C3E0  A0 1F 18 7C */	lhz r0, 0x187c(r31)
/* 80310784 0030C3E4  54 00 07 B8 */	rlwinm r0, r0, 0, 0x1e, 0x1c
/* 80310788 0030C3E8  B0 1F 18 7C */	sth r0, 0x187c(r31)
lbl_8031078C:
/* 8031078C 0030C3EC  38 60 00 00 */	li r3, 0
lbl_80310790:
/* 80310790 0030C3F0  39 61 00 40 */	addi r11, r1, 0x40
/* 80310794 0030C3F4  4B EB 69 D1 */	bl _restgpr_23
/* 80310798 0030C3F8  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8031079C 0030C3FC  7C 08 03 A6 */	mtlr r0
/* 803107A0 0030C400  38 21 00 40 */	addi r1, r1, 0x40
/* 803107A4 0030C404  4E 80 00 20 */	blr

.global VFiPFFAT_GetBeforeChain
VFiPFFAT_GetBeforeChain:
/* 803107A8 0030C408  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 803107AC 0030C40C  7C 08 02 A6 */	mflr r0
/* 803107B0 0030C410  90 01 00 34 */	stw r0, 0x34(r1)
/* 803107B4 0030C414  39 61 00 30 */	addi r11, r1, 0x30
/* 803107B8 0030C418  4B EB 69 71 */	bl _savegpr_27
/* 803107BC 0030C41C  2C 03 00 00 */	cmpwi r3, 0
/* 803107C0 0030C420  7C 7C 1B 78 */	mr r28, r3
/* 803107C4 0030C424  7C 9D 23 78 */	mr r29, r4
/* 803107C8 0030C428  7C BE 2B 78 */	mr r30, r5
/* 803107CC 0030C42C  7C DF 33 78 */	mr r31, r6
/* 803107D0 0030C430  40 82 00 14 */	bne lbl_803107E4
/* 803107D4 0030C434  38 00 FF FF */	li r0, -1
/* 803107D8 0030C438  38 60 00 0A */	li r3, 0xa
/* 803107DC 0030C43C  90 06 00 00 */	stw r0, 0(r6)
/* 803107E0 0030C440  48 00 01 48 */	b lbl_80310928
lbl_803107E4:
/* 803107E4 0030C444  28 04 00 02 */	cmplwi r4, 2
/* 803107E8 0030C448  41 80 00 14 */	blt lbl_803107FC
/* 803107EC 0030C44C  80 A3 00 34 */	lwz r5, 0x34(r3)
/* 803107F0 0030C450  38 05 00 02 */	addi r0, r5, 2
/* 803107F4 0030C454  7C 04 00 40 */	cmplw r4, r0
/* 803107F8 0030C458  41 80 00 14 */	blt lbl_8031080C
lbl_803107FC:
/* 803107FC 0030C45C  38 00 FF FF */	li r0, -1
/* 80310800 0030C460  38 60 00 0A */	li r3, 0xa
/* 80310804 0030C464  90 06 00 00 */	stw r0, 0(r6)
/* 80310808 0030C468  48 00 01 20 */	b lbl_80310928
lbl_8031080C:
/* 8031080C 0030C46C  80 83 00 1C */	lwz r4, 0x1c(r3)
/* 80310810 0030C470  3D 00 80 40 */	lis r8, lbl_803FE280@ha
/* 80310814 0030C474  38 00 FF FF */	li r0, -1
/* 80310818 0030C478  7F A5 EB 78 */	mr r5, r29
/* 8031081C 0030C47C  1C E4 00 14 */	mulli r7, r4, 0x14
/* 80310820 0030C480  39 08 E2 80 */	addi r8, r8, lbl_803FE280@l
/* 80310824 0030C484  90 06 00 00 */	stw r0, 0(r6)
/* 80310828 0030C488  38 81 00 08 */	addi r4, r1, 8
/* 8031082C 0030C48C  7C C8 3A 14 */	add r6, r8, r7
/* 80310830 0030C490  83 66 00 04 */	lwz r27, 4(r6)
/* 80310834 0030C494  4B FF DD 05 */	bl VFiPFFAT_ReadFATSector
/* 80310838 0030C498  2C 03 00 00 */	cmpwi r3, 0
/* 8031083C 0030C49C  41 82 00 08 */	beq lbl_80310844
/* 80310840 0030C4A0  48 00 00 E8 */	b lbl_80310928
lbl_80310844:
/* 80310844 0030C4A4  80 61 00 08 */	lwz r3, 8(r1)
/* 80310848 0030C4A8  38 00 00 00 */	li r0, 0
/* 8031084C 0030C4AC  B0 03 00 02 */	sth r0, 2(r3)
/* 80310850 0030C4B0  48 00 00 CC */	b lbl_8031091C
lbl_80310854:
/* 80310854 0030C4B4  80 1C 00 1C */	lwz r0, 0x1c(r28)
/* 80310858 0030C4B8  2C 00 00 01 */	cmpwi r0, 1
/* 8031085C 0030C4BC  41 82 00 38 */	beq lbl_80310894
/* 80310860 0030C4C0  40 80 00 10 */	bge lbl_80310870
/* 80310864 0030C4C4  2C 00 00 00 */	cmpwi r0, 0
/* 80310868 0030C4C8  40 80 00 14 */	bge lbl_8031087C
/* 8031086C 0030C4CC  48 00 00 58 */	b lbl_803108C4
lbl_80310870:
/* 80310870 0030C4D0  2C 00 00 03 */	cmpwi r0, 3
/* 80310874 0030C4D4  40 80 00 50 */	bge lbl_803108C4
/* 80310878 0030C4D8  48 00 00 34 */	b lbl_803108AC
lbl_8031087C:
/* 8031087C 0030C4DC  7F 83 E3 78 */	mr r3, r28
/* 80310880 0030C4E0  57 A4 04 3E */	clrlwi r4, r29, 0x10
/* 80310884 0030C4E4  38 A1 00 0C */	addi r5, r1, 0xc
/* 80310888 0030C4E8  38 C1 00 08 */	addi r6, r1, 8
/* 8031088C 0030C4EC  48 00 0A C9 */	bl VFiPFFAT12_ReadFATEntryPage
/* 80310890 0030C4F0  48 00 00 38 */	b lbl_803108C8
lbl_80310894:
/* 80310894 0030C4F4  7F 83 E3 78 */	mr r3, r28
/* 80310898 0030C4F8  7F A4 EB 78 */	mr r4, r29
/* 8031089C 0030C4FC  38 A1 00 0C */	addi r5, r1, 0xc
/* 803108A0 0030C500  38 C1 00 08 */	addi r6, r1, 8
/* 803108A4 0030C504  48 00 15 19 */	bl VFiPFFAT16_ReadFATEntryPage
/* 803108A8 0030C508  48 00 00 20 */	b lbl_803108C8
lbl_803108AC:
/* 803108AC 0030C50C  7F 83 E3 78 */	mr r3, r28
/* 803108B0 0030C510  7F A4 EB 78 */	mr r4, r29
/* 803108B4 0030C514  38 A1 00 0C */	addi r5, r1, 0xc
/* 803108B8 0030C518  38 C1 00 08 */	addi r6, r1, 8
/* 803108BC 0030C51C  48 00 1A 89 */	bl VFiPFFAT32_ReadFATEntryPage
/* 803108C0 0030C520  48 00 00 08 */	b lbl_803108C8
lbl_803108C4:
/* 803108C4 0030C524  38 60 00 0F */	li r3, 0xf
lbl_803108C8:
/* 803108C8 0030C528  2C 03 00 00 */	cmpwi r3, 0
/* 803108CC 0030C52C  41 82 00 08 */	beq lbl_803108D4
/* 803108D0 0030C530  48 00 00 58 */	b lbl_80310928
lbl_803108D4:
/* 803108D4 0030C534  80 01 00 0C */	lwz r0, 0xc(r1)
/* 803108D8 0030C538  7C 1E 00 40 */	cmplw r30, r0
/* 803108DC 0030C53C  40 82 00 10 */	bne lbl_803108EC
/* 803108E0 0030C540  93 BF 00 00 */	stw r29, 0(r31)
/* 803108E4 0030C544  38 60 00 00 */	li r3, 0
/* 803108E8 0030C548  48 00 00 40 */	b lbl_80310928
lbl_803108EC:
/* 803108EC 0030C54C  3B BD FF FF */	addi r29, r29, -1
/* 803108F0 0030C550  28 1D 00 02 */	cmplwi r29, 2
/* 803108F4 0030C554  41 80 00 14 */	blt lbl_80310908
/* 803108F8 0030C558  80 7C 00 34 */	lwz r3, 0x34(r28)
/* 803108FC 0030C55C  38 03 00 02 */	addi r0, r3, 2
/* 80310900 0030C560  7C 1D 00 40 */	cmplw r29, r0
/* 80310904 0030C564  41 80 00 18 */	blt lbl_8031091C
lbl_80310908:
/* 80310908 0030C568  7C 1D D8 40 */	cmplw r29, r27
/* 8031090C 0030C56C  40 80 00 10 */	bge lbl_8031091C
/* 80310910 0030C570  93 DF 00 00 */	stw r30, 0(r31)
/* 80310914 0030C574  38 60 00 00 */	li r3, 0
/* 80310918 0030C578  48 00 00 10 */	b lbl_80310928
lbl_8031091C:
/* 8031091C 0030C57C  7C 1D D8 40 */	cmplw r29, r27
/* 80310920 0030C580  41 80 FF 34 */	blt lbl_80310854
/* 80310924 0030C584  38 60 00 0D */	li r3, 0xd
lbl_80310928:
/* 80310928 0030C588  39 61 00 30 */	addi r11, r1, 0x30
/* 8031092C 0030C58C  4B EB 68 49 */	bl _restgpr_27
/* 80310930 0030C590  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80310934 0030C594  7C 08 03 A6 */	mtlr r0
/* 80310938 0030C598  38 21 00 30 */	addi r1, r1, 0x30
/* 8031093C 0030C59C  4E 80 00 20 */	blr

.global VFiPFFAT_InitFATRegion
VFiPFFAT_InitFATRegion:
/* 80310940 0030C5A0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80310944 0030C5A4  7C 08 02 A6 */	mflr r0
/* 80310948 0030C5A8  2C 03 00 00 */	cmpwi r3, 0
/* 8031094C 0030C5AC  90 01 00 24 */	stw r0, 0x24(r1)
/* 80310950 0030C5B0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80310954 0030C5B4  7C 7F 1B 78 */	mr r31, r3
/* 80310958 0030C5B8  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8031095C 0030C5BC  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80310960 0030C5C0  40 82 00 0C */	bne lbl_8031096C
/* 80310964 0030C5C4  38 60 00 0A */	li r3, 0xa
/* 80310968 0030C5C8  48 00 02 40 */	b lbl_80310BA8
lbl_8031096C:
/* 8031096C 0030C5CC  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 80310970 0030C5D0  2C 00 00 00 */	cmpwi r0, 0
/* 80310974 0030C5D4  41 82 00 1C */	beq lbl_80310990
/* 80310978 0030C5D8  2C 00 00 01 */	cmpwi r0, 1
/* 8031097C 0030C5DC  41 82 00 14 */	beq lbl_80310990
/* 80310980 0030C5E0  2C 00 00 02 */	cmpwi r0, 2
/* 80310984 0030C5E4  41 82 00 0C */	beq lbl_80310990
/* 80310988 0030C5E8  38 60 00 0F */	li r3, 0xf
/* 8031098C 0030C5EC  48 00 02 1C */	b lbl_80310BA8
lbl_80310990:
/* 80310990 0030C5F0  7F E3 FB 78 */	mr r3, r31
/* 80310994 0030C5F4  38 A1 00 08 */	addi r5, r1, 8
/* 80310998 0030C5F8  38 80 FF FF */	li r4, -1
/* 8031099C 0030C5FC  4B FF 9C A9 */	bl VFiPFCACHE_AllocateFATPage
/* 803109A0 0030C600  2C 03 00 00 */	cmpwi r3, 0
/* 803109A4 0030C604  41 82 00 08 */	beq lbl_803109AC
/* 803109A8 0030C608  48 00 02 00 */	b lbl_80310BA8
lbl_803109AC:
/* 803109AC 0030C60C  80 61 00 08 */	lwz r3, 8(r1)
/* 803109B0 0030C610  38 80 00 00 */	li r4, 0
/* 803109B4 0030C614  A0 BF 00 00 */	lhz r5, 0(r31)
/* 803109B8 0030C618  80 63 00 08 */	lwz r3, 8(r3)
/* 803109BC 0030C61C  4B FF 46 19 */	bl VFipf_memset
/* 803109C0 0030C620  A3 BF 00 02 */	lhz r29, 2(r31)
/* 803109C4 0030C624  48 00 00 3C */	b lbl_80310A00
lbl_803109C8:
/* 803109C8 0030C628  80 81 00 08 */	lwz r4, 8(r1)
/* 803109CC 0030C62C  7F E3 FB 78 */	mr r3, r31
/* 803109D0 0030C630  7F A5 EB 78 */	mr r5, r29
/* 803109D4 0030C634  80 84 00 08 */	lwz r4, 8(r4)
/* 803109D8 0030C638  4B FF A0 1D */	bl VFiPFCACHE_WriteFATSectorAndFreeIfNeeded
/* 803109DC 0030C63C  2C 03 00 00 */	cmpwi r3, 0
/* 803109E0 0030C640  7C 7E 1B 78 */	mr r30, r3
/* 803109E4 0030C644  41 82 00 18 */	beq lbl_803109FC
/* 803109E8 0030C648  80 81 00 08 */	lwz r4, 8(r1)
/* 803109EC 0030C64C  7F E3 FB 78 */	mr r3, r31
/* 803109F0 0030C650  4B FF 9D 3D */	bl VFiPFCACHE_FreeFATPage
/* 803109F4 0030C654  7F C3 F3 78 */	mr r3, r30
/* 803109F8 0030C658  48 00 01 B0 */	b lbl_80310BA8
lbl_803109FC:
/* 803109FC 0030C65C  3B BD 00 01 */	addi r29, r29, 1
lbl_80310A00:
/* 80310A00 0030C660  80 1F 00 2C */	lwz r0, 0x2c(r31)
/* 80310A04 0030C664  7C 1D 00 40 */	cmplw r29, r0
/* 80310A08 0030C668  41 80 FF C0 */	blt lbl_803109C8
/* 80310A0C 0030C66C  80 81 00 08 */	lwz r4, 8(r1)
/* 80310A10 0030C670  7F E3 FB 78 */	mr r3, r31
/* 80310A14 0030C674  4B FF 9D 19 */	bl VFiPFCACHE_FreeFATPage
/* 80310A18 0030C678  80 DF 00 1C */	lwz r6, 0x1c(r31)
/* 80310A1C 0030C67C  3C 60 80 40 */	lis r3, lbl_803FE280@ha
/* 80310A20 0030C680  38 63 E2 80 */	addi r3, r3, lbl_803FE280@l
/* 80310A24 0030C684  88 9F 00 1A */	lbz r4, 0x1a(r31)
/* 80310A28 0030C688  1C 06 00 14 */	mulli r0, r6, 0x14
/* 80310A2C 0030C68C  2C 06 00 01 */	cmpwi r6, 1
/* 80310A30 0030C690  7C 63 02 14 */	add r3, r3, r0
/* 80310A34 0030C694  80 03 00 0C */	lwz r0, 0xc(r3)
/* 80310A38 0030C698  7C 85 03 78 */	or r5, r4, r0
/* 80310A3C 0030C69C  41 82 00 44 */	beq lbl_80310A80
/* 80310A40 0030C6A0  40 80 00 10 */	bge lbl_80310A50
/* 80310A44 0030C6A4  2C 06 00 00 */	cmpwi r6, 0
/* 80310A48 0030C6A8  40 80 00 14 */	bge lbl_80310A5C
/* 80310A4C 0030C6AC  48 00 00 7C */	b lbl_80310AC8
lbl_80310A50:
/* 80310A50 0030C6B0  2C 06 00 03 */	cmpwi r6, 3
/* 80310A54 0030C6B4  40 80 00 74 */	bge lbl_80310AC8
/* 80310A58 0030C6B8  48 00 00 48 */	b lbl_80310AA0
lbl_80310A5C:
/* 80310A5C 0030C6BC  28 05 0F FF */	cmplwi r5, 0xfff
/* 80310A60 0030C6C0  40 81 00 0C */	ble lbl_80310A6C
/* 80310A64 0030C6C4  38 60 00 10 */	li r3, 0x10
/* 80310A68 0030C6C8  48 00 00 64 */	b lbl_80310ACC
lbl_80310A6C:
/* 80310A6C 0030C6CC  7F E3 FB 78 */	mr r3, r31
/* 80310A70 0030C6D0  54 A5 04 3E */	clrlwi r5, r5, 0x10
/* 80310A74 0030C6D4  38 80 00 00 */	li r4, 0
/* 80310A78 0030C6D8  48 00 0B B1 */	bl VFiPFFAT12_WriteFATEntry
/* 80310A7C 0030C6DC  48 00 00 50 */	b lbl_80310ACC
lbl_80310A80:
/* 80310A80 0030C6E0  28 05 FF FF */	cmplwi r5, 0xffff
/* 80310A84 0030C6E4  40 81 00 0C */	ble lbl_80310A90
/* 80310A88 0030C6E8  38 60 00 10 */	li r3, 0x10
/* 80310A8C 0030C6EC  48 00 00 40 */	b lbl_80310ACC
lbl_80310A90:
/* 80310A90 0030C6F0  7F E3 FB 78 */	mr r3, r31
/* 80310A94 0030C6F4  38 80 00 00 */	li r4, 0
/* 80310A98 0030C6F8  48 00 14 E1 */	bl VFiPFFAT16_WriteFATEntry
/* 80310A9C 0030C6FC  48 00 00 30 */	b lbl_80310ACC
lbl_80310AA0:
/* 80310AA0 0030C700  3C 60 10 00 */	lis r3, 0x0FFFFFFF@ha
/* 80310AA4 0030C704  38 03 FF FF */	addi r0, r3, 0x0FFFFFFF@l
/* 80310AA8 0030C708  7C 05 00 40 */	cmplw r5, r0
/* 80310AAC 0030C70C  40 81 00 0C */	ble lbl_80310AB8
/* 80310AB0 0030C710  38 60 00 10 */	li r3, 0x10
/* 80310AB4 0030C714  48 00 00 18 */	b lbl_80310ACC
lbl_80310AB8:
/* 80310AB8 0030C718  7F E3 FB 78 */	mr r3, r31
/* 80310ABC 0030C71C  38 80 00 00 */	li r4, 0
/* 80310AC0 0030C720  48 00 1A 51 */	bl VFiPFFAT32_WriteFATEntry
/* 80310AC4 0030C724  48 00 00 08 */	b lbl_80310ACC
lbl_80310AC8:
/* 80310AC8 0030C728  38 60 00 0F */	li r3, 0xf
lbl_80310ACC:
/* 80310ACC 0030C72C  2C 03 00 00 */	cmpwi r3, 0
/* 80310AD0 0030C730  41 82 00 08 */	beq lbl_80310AD8
/* 80310AD4 0030C734  48 00 00 D4 */	b lbl_80310BA8
lbl_80310AD8:
/* 80310AD8 0030C738  80 9F 00 1C */	lwz r4, 0x1c(r31)
/* 80310ADC 0030C73C  3C 60 80 40 */	lis r3, lbl_803FE280@ha
/* 80310AE0 0030C740  38 63 E2 80 */	addi r3, r3, lbl_803FE280@l
/* 80310AE4 0030C744  1C 04 00 14 */	mulli r0, r4, 0x14
/* 80310AE8 0030C748  2C 04 00 01 */	cmpwi r4, 1
/* 80310AEC 0030C74C  7C 63 02 14 */	add r3, r3, r0
/* 80310AF0 0030C750  80 A3 00 10 */	lwz r5, 0x10(r3)
/* 80310AF4 0030C754  41 82 00 44 */	beq lbl_80310B38
/* 80310AF8 0030C758  40 80 00 10 */	bge lbl_80310B08
/* 80310AFC 0030C75C  2C 04 00 00 */	cmpwi r4, 0
/* 80310B00 0030C760  40 80 00 14 */	bge lbl_80310B14
/* 80310B04 0030C764  48 00 00 7C */	b lbl_80310B80
lbl_80310B08:
/* 80310B08 0030C768  2C 04 00 03 */	cmpwi r4, 3
/* 80310B0C 0030C76C  40 80 00 74 */	bge lbl_80310B80
/* 80310B10 0030C770  48 00 00 48 */	b lbl_80310B58
lbl_80310B14:
/* 80310B14 0030C774  28 05 0F FF */	cmplwi r5, 0xfff
/* 80310B18 0030C778  40 81 00 0C */	ble lbl_80310B24
/* 80310B1C 0030C77C  38 60 00 10 */	li r3, 0x10
/* 80310B20 0030C780  48 00 00 64 */	b lbl_80310B84
lbl_80310B24:
/* 80310B24 0030C784  7F E3 FB 78 */	mr r3, r31
/* 80310B28 0030C788  54 A5 04 3E */	clrlwi r5, r5, 0x10
/* 80310B2C 0030C78C  38 80 00 01 */	li r4, 1
/* 80310B30 0030C790  48 00 0A F9 */	bl VFiPFFAT12_WriteFATEntry
/* 80310B34 0030C794  48 00 00 50 */	b lbl_80310B84
lbl_80310B38:
/* 80310B38 0030C798  28 05 FF FF */	cmplwi r5, 0xffff
/* 80310B3C 0030C79C  40 81 00 0C */	ble lbl_80310B48
/* 80310B40 0030C7A0  38 60 00 10 */	li r3, 0x10
/* 80310B44 0030C7A4  48 00 00 40 */	b lbl_80310B84
lbl_80310B48:
/* 80310B48 0030C7A8  7F E3 FB 78 */	mr r3, r31
/* 80310B4C 0030C7AC  38 80 00 01 */	li r4, 1
/* 80310B50 0030C7B0  48 00 14 29 */	bl VFiPFFAT16_WriteFATEntry
/* 80310B54 0030C7B4  48 00 00 30 */	b lbl_80310B84
lbl_80310B58:
/* 80310B58 0030C7B8  3C 60 10 00 */	lis r3, 0x0FFFFFFF@ha
/* 80310B5C 0030C7BC  38 03 FF FF */	addi r0, r3, 0x0FFFFFFF@l
/* 80310B60 0030C7C0  7C 05 00 40 */	cmplw r5, r0
/* 80310B64 0030C7C4  40 81 00 0C */	ble lbl_80310B70
/* 80310B68 0030C7C8  38 60 00 10 */	li r3, 0x10
/* 80310B6C 0030C7CC  48 00 00 18 */	b lbl_80310B84
lbl_80310B70:
/* 80310B70 0030C7D0  7F E3 FB 78 */	mr r3, r31
/* 80310B74 0030C7D4  38 80 00 01 */	li r4, 1
/* 80310B78 0030C7D8  48 00 19 99 */	bl VFiPFFAT32_WriteFATEntry
/* 80310B7C 0030C7DC  48 00 00 08 */	b lbl_80310B84
lbl_80310B80:
/* 80310B80 0030C7E0  38 60 00 0F */	li r3, 0xf
lbl_80310B84:
/* 80310B84 0030C7E4  2C 03 00 00 */	cmpwi r3, 0
/* 80310B88 0030C7E8  41 82 00 08 */	beq lbl_80310B90
/* 80310B8C 0030C7EC  48 00 00 1C */	b lbl_80310BA8
lbl_80310B90:
/* 80310B90 0030C7F0  7F E3 FB 78 */	mr r3, r31
/* 80310B94 0030C7F4  4B FF 9F 1D */	bl VFiPFCACHE_FlushFATCache
/* 80310B98 0030C7F8  7C 03 00 D0 */	neg r0, r3
/* 80310B9C 0030C7FC  7C 00 1B 78 */	or r0, r0, r3
/* 80310BA0 0030C800  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 80310BA4 0030C804  7C 63 00 38 */	and r3, r3, r0
lbl_80310BA8:
/* 80310BA8 0030C808  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80310BAC 0030C80C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80310BB0 0030C810  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80310BB4 0030C814  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80310BB8 0030C818  7C 08 03 A6 */	mtlr r0
/* 80310BBC 0030C81C  38 21 00 20 */	addi r1, r1, 0x20
/* 80310BC0 0030C820  4E 80 00 20 */	blr

.global VFiPFFAT_MakeRootDir
VFiPFFAT_MakeRootDir:
/* 80310BC4 0030C824  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80310BC8 0030C828  7C 08 02 A6 */	mflr r0
/* 80310BCC 0030C82C  3C A0 80 40 */	lis r5, lbl_803FE280@ha
/* 80310BD0 0030C830  90 01 00 24 */	stw r0, 0x24(r1)
/* 80310BD4 0030C834  38 A5 E2 80 */	addi r5, r5, lbl_803FE280@l
/* 80310BD8 0030C838  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80310BDC 0030C83C  7C 7F 1B 78 */	mr r31, r3
/* 80310BE0 0030C840  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80310BE4 0030C844  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80310BE8 0030C848  93 81 00 10 */	stw r28, 0x10(r1)
/* 80310BEC 0030C84C  80 C3 00 1C */	lwz r6, 0x1c(r3)
/* 80310BF0 0030C850  80 83 00 10 */	lwz r4, 0x10(r3)
/* 80310BF4 0030C854  1C 06 00 14 */	mulli r0, r6, 0x14
/* 80310BF8 0030C858  2C 06 00 01 */	cmpwi r6, 1
/* 80310BFC 0030C85C  7C A5 02 14 */	add r5, r5, r0
/* 80310C00 0030C860  80 A5 00 08 */	lwz r5, 8(r5)
/* 80310C04 0030C864  41 82 00 40 */	beq lbl_80310C44
/* 80310C08 0030C868  40 80 00 10 */	bge lbl_80310C18
/* 80310C0C 0030C86C  2C 06 00 00 */	cmpwi r6, 0
/* 80310C10 0030C870  40 80 00 14 */	bge lbl_80310C24
/* 80310C14 0030C874  48 00 00 68 */	b lbl_80310C7C
lbl_80310C18:
/* 80310C18 0030C878  2C 06 00 03 */	cmpwi r6, 3
/* 80310C1C 0030C87C  40 80 00 60 */	bge lbl_80310C7C
/* 80310C20 0030C880  48 00 00 3C */	b lbl_80310C5C
lbl_80310C24:
/* 80310C24 0030C884  28 05 0F FF */	cmplwi r5, 0xfff
/* 80310C28 0030C888  40 81 00 0C */	ble lbl_80310C34
/* 80310C2C 0030C88C  38 60 00 10 */	li r3, 0x10
/* 80310C30 0030C890  48 00 00 50 */	b lbl_80310C80
lbl_80310C34:
/* 80310C34 0030C894  54 84 04 3E */	clrlwi r4, r4, 0x10
/* 80310C38 0030C898  54 A5 04 3E */	clrlwi r5, r5, 0x10
/* 80310C3C 0030C89C  48 00 09 ED */	bl VFiPFFAT12_WriteFATEntry
/* 80310C40 0030C8A0  48 00 00 40 */	b lbl_80310C80
lbl_80310C44:
/* 80310C44 0030C8A4  28 05 FF FF */	cmplwi r5, 0xffff
/* 80310C48 0030C8A8  40 81 00 0C */	ble lbl_80310C54
/* 80310C4C 0030C8AC  38 60 00 10 */	li r3, 0x10
/* 80310C50 0030C8B0  48 00 00 30 */	b lbl_80310C80
lbl_80310C54:
/* 80310C54 0030C8B4  48 00 13 25 */	bl VFiPFFAT16_WriteFATEntry
/* 80310C58 0030C8B8  48 00 00 28 */	b lbl_80310C80
lbl_80310C5C:
/* 80310C5C 0030C8BC  3C C0 10 00 */	lis r6, 0x0FFFFFFF@ha
/* 80310C60 0030C8C0  38 06 FF FF */	addi r0, r6, 0x0FFFFFFF@l
/* 80310C64 0030C8C4  7C 05 00 40 */	cmplw r5, r0
/* 80310C68 0030C8C8  40 81 00 0C */	ble lbl_80310C74
/* 80310C6C 0030C8CC  38 60 00 10 */	li r3, 0x10
/* 80310C70 0030C8D0  48 00 00 10 */	b lbl_80310C80
lbl_80310C74:
/* 80310C74 0030C8D4  48 00 18 9D */	bl VFiPFFAT32_WriteFATEntry
/* 80310C78 0030C8D8  48 00 00 08 */	b lbl_80310C80
lbl_80310C7C:
/* 80310C7C 0030C8DC  38 60 00 0F */	li r3, 0xf
lbl_80310C80:
/* 80310C80 0030C8E0  2C 03 00 00 */	cmpwi r3, 0
/* 80310C84 0030C8E4  41 82 00 08 */	beq lbl_80310C8C
/* 80310C88 0030C8E8  48 00 00 F0 */	b lbl_80310D78
lbl_80310C8C:
/* 80310C8C 0030C8EC  7F E3 FB 78 */	mr r3, r31
/* 80310C90 0030C8F0  4B FF 9E 21 */	bl VFiPFCACHE_FlushFATCache
/* 80310C94 0030C8F4  2C 03 00 00 */	cmpwi r3, 0
/* 80310C98 0030C8F8  41 82 00 08 */	beq lbl_80310CA0
/* 80310C9C 0030C8FC  48 00 00 DC */	b lbl_80310D78
lbl_80310CA0:
/* 80310CA0 0030C900  7F E3 FB 78 */	mr r3, r31
/* 80310CA4 0030C904  38 A1 00 08 */	addi r5, r1, 8
/* 80310CA8 0030C908  38 80 FF FF */	li r4, -1
/* 80310CAC 0030C90C  4B FF 9A 0D */	bl VFiPFCACHE_AllocateDataPage
/* 80310CB0 0030C910  2C 03 00 00 */	cmpwi r3, 0
/* 80310CB4 0030C914  41 82 00 08 */	beq lbl_80310CBC
/* 80310CB8 0030C918  48 00 00 C0 */	b lbl_80310D78
lbl_80310CBC:
/* 80310CBC 0030C91C  80 61 00 08 */	lwz r3, 8(r1)
/* 80310CC0 0030C920  38 80 00 00 */	li r4, 0
/* 80310CC4 0030C924  A0 BF 00 00 */	lhz r5, 0(r31)
/* 80310CC8 0030C928  80 63 00 08 */	lwz r3, 8(r3)
/* 80310CCC 0030C92C  4B FF 43 09 */	bl VFipf_memset
/* 80310CD0 0030C930  80 7F 00 10 */	lwz r3, 0x10(r31)
/* 80310CD4 0030C934  3B 80 00 00 */	li r28, 0
/* 80310CD8 0030C938  88 1F 00 21 */	lbz r0, 0x21(r31)
/* 80310CDC 0030C93C  38 63 FF FE */	addi r3, r3, -2
/* 80310CE0 0030C940  80 9F 00 30 */	lwz r4, 0x30(r31)
/* 80310CE4 0030C944  7C 60 00 30 */	slw r0, r3, r0
/* 80310CE8 0030C948  7F A4 02 14 */	add r29, r4, r0
/* 80310CEC 0030C94C  48 00 00 70 */	b lbl_80310D5C
lbl_80310CF0:
/* 80310CF0 0030C950  80 81 00 08 */	lwz r4, 8(r1)
/* 80310CF4 0030C954  7F E3 FB 78 */	mr r3, r31
/* 80310CF8 0030C958  A0 FF 00 00 */	lhz r7, 0(r31)
/* 80310CFC 0030C95C  7C BD E2 14 */	add r5, r29, r28
/* 80310D00 0030C960  80 84 00 08 */	lwz r4, 8(r4)
/* 80310D04 0030C964  39 01 00 0C */	addi r8, r1, 0xc
/* 80310D08 0030C968  38 C0 00 00 */	li r6, 0
/* 80310D0C 0030C96C  39 20 00 00 */	li r9, 0
/* 80310D10 0030C970  48 00 80 D9 */	bl VFiPFSEC_WriteData
/* 80310D14 0030C974  2C 03 00 00 */	cmpwi r3, 0
/* 80310D18 0030C978  7C 7E 1B 78 */	mr r30, r3
/* 80310D1C 0030C97C  41 82 00 18 */	beq lbl_80310D34
/* 80310D20 0030C980  80 81 00 08 */	lwz r4, 8(r1)
/* 80310D24 0030C984  7F E3 FB 78 */	mr r3, r31
/* 80310D28 0030C988  4B FF 9A 95 */	bl VFiPFCACHE_FreeDataPage
/* 80310D2C 0030C98C  7F C3 F3 78 */	mr r3, r30
/* 80310D30 0030C990  48 00 00 48 */	b lbl_80310D78
lbl_80310D34:
/* 80310D34 0030C994  80 61 00 0C */	lwz r3, 0xc(r1)
/* 80310D38 0030C998  A0 1F 00 00 */	lhz r0, 0(r31)
/* 80310D3C 0030C99C  7C 03 00 40 */	cmplw r3, r0
/* 80310D40 0030C9A0  41 82 00 18 */	beq lbl_80310D58
/* 80310D44 0030C9A4  80 81 00 08 */	lwz r4, 8(r1)
/* 80310D48 0030C9A8  7F E3 FB 78 */	mr r3, r31
/* 80310D4C 0030C9AC  4B FF 9A 71 */	bl VFiPFCACHE_FreeDataPage
/* 80310D50 0030C9B0  38 60 00 11 */	li r3, 0x11
/* 80310D54 0030C9B4  48 00 00 24 */	b lbl_80310D78
lbl_80310D58:
/* 80310D58 0030C9B8  3B 9C 00 01 */	addi r28, r28, 1
lbl_80310D5C:
/* 80310D5C 0030C9BC  88 1F 00 06 */	lbz r0, 6(r31)
/* 80310D60 0030C9C0  7C 1C 00 40 */	cmplw r28, r0
/* 80310D64 0030C9C4  41 80 FF 8C */	blt lbl_80310CF0
/* 80310D68 0030C9C8  80 81 00 08 */	lwz r4, 8(r1)
/* 80310D6C 0030C9CC  7F E3 FB 78 */	mr r3, r31
/* 80310D70 0030C9D0  4B FF 9A 4D */	bl VFiPFCACHE_FreeDataPage
/* 80310D74 0030C9D4  38 60 00 00 */	li r3, 0
lbl_80310D78:
/* 80310D78 0030C9D8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80310D7C 0030C9DC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80310D80 0030C9E0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80310D84 0030C9E4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80310D88 0030C9E8  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80310D8C 0030C9EC  7C 08 03 A6 */	mtlr r0
/* 80310D90 0030C9F0  38 21 00 20 */	addi r1, r1, 0x20
/* 80310D94 0030C9F4  4E 80 00 20 */	blr

.global VFiPFFAT_InitHint
VFiPFFAT_InitHint:
/* 80310D98 0030C9F8  38 00 00 00 */	li r0, 0
/* 80310D9C 0030C9FC  90 03 00 00 */	stw r0, 0(r3)
/* 80310DA0 0030CA00  90 03 00 04 */	stw r0, 4(r3)
/* 80310DA4 0030CA04  90 03 00 08 */	stw r0, 8(r3)
/* 80310DA8 0030CA08  4E 80 00 20 */	blr

.global VFiPFFAT_TraceClustersChain
VFiPFFAT_TraceClustersChain:
/* 80310DAC 0030CA0C  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 80310DB0 0030CA10  7C 08 02 A6 */	mflr r0
/* 80310DB4 0030CA14  90 01 00 44 */	stw r0, 0x44(r1)
/* 80310DB8 0030CA18  39 61 00 40 */	addi r11, r1, 0x40
/* 80310DBC 0030CA1C  4B EB 63 59 */	bl _savegpr_22
/* 80310DC0 0030CA20  38 00 00 00 */	li r0, 0
/* 80310DC4 0030CA24  7C 99 23 78 */	mr r25, r4
/* 80310DC8 0030CA28  90 06 00 00 */	stw r0, 0(r6)
/* 80310DCC 0030CA2C  2C 03 00 00 */	cmpwi r3, 0
/* 80310DD0 0030CA30  7C 78 1B 78 */	mr r24, r3
/* 80310DD4 0030CA34  7C DA 33 78 */	mr r26, r6
/* 80310DD8 0030CA38  90 07 00 00 */	stw r0, 0(r7)
/* 80310DDC 0030CA3C  7C FB 3B 78 */	mr r27, r7
/* 80310DE0 0030CA40  7F 3E CB 78 */	mr r30, r25
/* 80310DE4 0030CA44  40 82 00 0C */	bne lbl_80310DF0
/* 80310DE8 0030CA48  38 60 00 0A */	li r3, 0xa
/* 80310DEC 0030CA4C  48 00 01 E8 */	b lbl_80310FD4
lbl_80310DF0:
/* 80310DF0 0030CA50  81 23 00 30 */	lwz r9, 0x30(r3)
/* 80310DF4 0030CA54  2C 09 00 00 */	cmpwi r9, 0
/* 80310DF8 0030CA58  40 82 00 0C */	bne lbl_80310E04
/* 80310DFC 0030CA5C  38 60 00 0A */	li r3, 0xa
/* 80310E00 0030CA60  48 00 01 D4 */	b lbl_80310FD4
lbl_80310E04:
/* 80310E04 0030CA64  81 03 00 00 */	lwz r8, 0(r3)
/* 80310E08 0030CA68  2C 08 00 00 */	cmpwi r8, 0
/* 80310E0C 0030CA6C  40 82 00 0C */	bne lbl_80310E18
/* 80310E10 0030CA70  38 60 00 0A */	li r3, 0xa
/* 80310E14 0030CA74  48 00 01 C0 */	b lbl_80310FD4
lbl_80310E18:
/* 80310E18 0030CA78  80 09 00 08 */	lwz r0, 8(r9)
/* 80310E1C 0030CA7C  7C 00 40 40 */	cmplw r0, r8
/* 80310E20 0030CA80  40 81 00 0C */	ble lbl_80310E2C
/* 80310E24 0030CA84  38 60 00 0A */	li r3, 0xa
/* 80310E28 0030CA88  48 00 01 AC */	b lbl_80310FD4
lbl_80310E2C:
/* 80310E2C 0030CA8C  83 E3 00 34 */	lwz r31, 0x34(r3)
/* 80310E30 0030CA90  88 1F 18 7A */	lbz r0, 0x187a(r31)
/* 80310E34 0030CA94  7C 00 07 74 */	extsb r0, r0
/* 80310E38 0030CA98  2C 00 00 41 */	cmpwi r0, 0x41
/* 80310E3C 0030CA9C  41 80 00 0C */	blt lbl_80310E48
/* 80310E40 0030CAA0  2C 00 00 5A */	cmpwi r0, 0x5a
/* 80310E44 0030CAA4  40 81 00 0C */	ble lbl_80310E50
lbl_80310E48:
/* 80310E48 0030CAA8  38 60 00 23 */	li r3, 0x23
/* 80310E4C 0030CAAC  48 00 01 88 */	b lbl_80310FD4
lbl_80310E50:
/* 80310E50 0030CAB0  2C 1F 00 00 */	cmpwi r31, 0
/* 80310E54 0030CAB4  40 82 00 0C */	bne lbl_80310E60
/* 80310E58 0030CAB8  38 60 00 0A */	li r3, 0xa
/* 80310E5C 0030CABC  48 00 01 78 */	b lbl_80310FD4
lbl_80310E60:
/* 80310E60 0030CAC0  81 03 00 08 */	lwz r8, 8(r3)
/* 80310E64 0030CAC4  81 08 00 00 */	lwz r8, 0(r8)
/* 80310E68 0030CAC8  28 08 00 02 */	cmplwi r8, 2
/* 80310E6C 0030CACC  40 80 00 0C */	bge lbl_80310E78
/* 80310E70 0030CAD0  38 60 00 00 */	li r3, 0
/* 80310E74 0030CAD4  48 00 01 60 */	b lbl_80310FD4
lbl_80310E78:
/* 80310E78 0030CAD8  28 04 00 02 */	cmplwi r4, 2
/* 80310E7C 0030CADC  40 80 00 0C */	bge lbl_80310E88
/* 80310E80 0030CAE0  38 60 00 00 */	li r3, 0
/* 80310E84 0030CAE4  48 00 01 50 */	b lbl_80310FD4
lbl_80310E88:
/* 80310E88 0030CAE8  2C 05 00 00 */	cmpwi r5, 0
/* 80310E8C 0030CAEC  40 82 00 0C */	bne lbl_80310E98
/* 80310E90 0030CAF0  38 60 00 00 */	li r3, 0
/* 80310E94 0030CAF4  48 00 01 40 */	b lbl_80310FD4
lbl_80310E98:
/* 80310E98 0030CAF8  3C 05 00 01 */	addis r0, r5, 1
/* 80310E9C 0030CAFC  28 00 FF FF */	cmplwi r0, 0xffff
/* 80310EA0 0030CB00  40 82 00 38 */	bne lbl_80310ED8
/* 80310EA4 0030CB04  80 03 00 0C */	lwz r0, 0xc(r3)
/* 80310EA8 0030CB08  2C 00 00 00 */	cmpwi r0, 0
/* 80310EAC 0030CB0C  41 82 00 2C */	beq lbl_80310ED8
/* 80310EB0 0030CB10  90 06 00 00 */	stw r0, 0(r6)
/* 80310EB4 0030CB14  3C 80 80 40 */	lis r4, lbl_803FE280@ha
/* 80310EB8 0030CB18  38 84 E2 80 */	addi r4, r4, lbl_803FE280@l
/* 80310EBC 0030CB1C  38 60 00 00 */	li r3, 0
/* 80310EC0 0030CB20  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80310EC4 0030CB24  1C 00 00 14 */	mulli r0, r0, 0x14
/* 80310EC8 0030CB28  7C 84 02 14 */	add r4, r4, r0
/* 80310ECC 0030CB2C  80 04 00 08 */	lwz r0, 8(r4)
/* 80310ED0 0030CB30  90 07 00 00 */	stw r0, 0(r7)
/* 80310ED4 0030CB34  48 00 01 00 */	b lbl_80310FD4
lbl_80310ED8:
/* 80310ED8 0030CB38  A0 7F 00 00 */	lhz r3, 0(r31)
/* 80310EDC 0030CB3C  88 1F 00 21 */	lbz r0, 0x21(r31)
/* 80310EE0 0030CB40  7C 60 00 30 */	slw r0, r3, r0
/* 80310EE4 0030CB44  7F 85 03 96 */	divwu r28, r5, r0
/* 80310EE8 0030CB48  7C 1C 01 D6 */	mullw r0, r28, r0
/* 80310EEC 0030CB4C  7C 00 28 51 */	subf. r0, r0, r5
/* 80310EF0 0030CB50  41 82 00 08 */	beq lbl_80310EF8
/* 80310EF4 0030CB54  3B 9C 00 01 */	addi r28, r28, 1
lbl_80310EF8:
/* 80310EF8 0030CB58  7C 08 20 40 */	cmplw r8, r4
/* 80310EFC 0030CB5C  40 82 00 0C */	bne lbl_80310F08
/* 80310F00 0030CB60  3B A0 00 01 */	li r29, 1
/* 80310F04 0030CB64  48 00 00 0C */	b lbl_80310F10
lbl_80310F08:
/* 80310F08 0030CB68  80 69 00 00 */	lwz r3, 0(r9)
/* 80310F0C 0030CB6C  3B A3 00 01 */	addi r29, r3, 1
lbl_80310F10:
/* 80310F10 0030CB70  38 60 FF FF */	li r3, -1
/* 80310F14 0030CB74  38 00 00 01 */	li r0, 1
/* 80310F18 0030CB78  90 61 00 10 */	stw r3, 0x10(r1)
/* 80310F1C 0030CB7C  7F E3 FB 78 */	mr r3, r31
/* 80310F20 0030CB80  7F 25 CB 78 */	mr r5, r25
/* 80310F24 0030CB84  38 81 00 08 */	addi r4, r1, 8
/* 80310F28 0030CB88  90 01 00 0C */	stw r0, 0xc(r1)
/* 80310F2C 0030CB8C  4B FF D6 0D */	bl VFiPFFAT_ReadFATSector
/* 80310F30 0030CB90  2C 03 00 00 */	cmpwi r3, 0
/* 80310F34 0030CB94  41 82 00 08 */	beq lbl_80310F3C
/* 80310F38 0030CB98  48 00 00 9C */	b lbl_80310FD4
lbl_80310F3C:
/* 80310F3C 0030CB9C  3E E0 80 40 */	lis r23, lbl_803FE280@ha
/* 80310F40 0030CBA0  3A C0 00 00 */	li r22, 0
/* 80310F44 0030CBA4  3A F7 E2 80 */	addi r23, r23, lbl_803FE280@l
/* 80310F48 0030CBA8  48 00 00 68 */	b lbl_80310FB0
lbl_80310F4C:
/* 80310F4C 0030CBAC  7F 03 C3 78 */	mr r3, r24
/* 80310F50 0030CBB0  7F 24 CB 78 */	mr r4, r25
/* 80310F54 0030CBB4  7F A5 EB 78 */	mr r5, r29
/* 80310F58 0030CBB8  38 C1 00 10 */	addi r6, r1, 0x10
/* 80310F5C 0030CBBC  38 E1 00 0C */	addi r7, r1, 0xc
/* 80310F60 0030CBC0  39 01 00 08 */	addi r8, r1, 8
/* 80310F64 0030CBC4  4B FF DC 71 */	bl VFiPFFAT_ReadClusterPage
/* 80310F68 0030CBC8  2C 03 00 00 */	cmpwi r3, 0
/* 80310F6C 0030CBCC  41 82 00 08 */	beq lbl_80310F74
/* 80310F70 0030CBD0  48 00 00 64 */	b lbl_80310FD4
lbl_80310F74:
/* 80310F74 0030CBD4  80 1F 00 1C */	lwz r0, 0x1c(r31)
/* 80310F78 0030CBD8  7F 3E CB 78 */	mr r30, r25
/* 80310F7C 0030CBDC  80 81 00 10 */	lwz r4, 0x10(r1)
/* 80310F80 0030CBE0  1C 00 00 14 */	mulli r0, r0, 0x14
/* 80310F84 0030CBE4  7C 77 02 14 */	add r3, r23, r0
/* 80310F88 0030CBE8  80 03 00 08 */	lwz r0, 8(r3)
/* 80310F8C 0030CBEC  7C 04 00 40 */	cmplw r4, r0
/* 80310F90 0030CBF0  40 82 00 14 */	bne lbl_80310FA4
/* 80310F94 0030CBF4  38 1D FF FF */	addi r0, r29, -1
/* 80310F98 0030CBF8  93 38 00 0C */	stw r25, 0xc(r24)
/* 80310F9C 0030CBFC  90 18 00 10 */	stw r0, 0x10(r24)
/* 80310FA0 0030CC00  48 00 00 18 */	b lbl_80310FB8
lbl_80310FA4:
/* 80310FA4 0030CC04  7C 99 23 78 */	mr r25, r4
/* 80310FA8 0030CC08  3B BD 00 01 */	addi r29, r29, 1
/* 80310FAC 0030CC0C  3A D6 00 01 */	addi r22, r22, 1
lbl_80310FB0:
/* 80310FB0 0030CC10  7C 16 E0 40 */	cmplw r22, r28
/* 80310FB4 0030CC14  41 80 FF 98 */	blt lbl_80310F4C
lbl_80310FB8:
/* 80310FB8 0030CC18  80 98 00 30 */	lwz r4, 0x30(r24)
/* 80310FBC 0030CC1C  38 1D FF FF */	addi r0, r29, -1
/* 80310FC0 0030CC20  38 60 00 00 */	li r3, 0
/* 80310FC4 0030CC24  90 04 00 00 */	stw r0, 0(r4)
/* 80310FC8 0030CC28  93 DA 00 00 */	stw r30, 0(r26)
/* 80310FCC 0030CC2C  80 01 00 10 */	lwz r0, 0x10(r1)
/* 80310FD0 0030CC30  90 1B 00 00 */	stw r0, 0(r27)
lbl_80310FD4:
/* 80310FD4 0030CC34  39 61 00 40 */	addi r11, r1, 0x40
/* 80310FD8 0030CC38  4B EB 61 89 */	bl _restgpr_22
/* 80310FDC 0030CC3C  80 01 00 44 */	lwz r0, 0x44(r1)
/* 80310FE0 0030CC40  7C 08 03 A6 */	mtlr r0
/* 80310FE4 0030CC44  38 21 00 40 */	addi r1, r1, 0x40
/* 80310FE8 0030CC48  4E 80 00 20 */	blr

.global VFiPFFAT_ReadValueToSpecifiedCluster
VFiPFFAT_ReadValueToSpecifiedCluster:
/* 80310FEC 0030CC4C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80310FF0 0030CC50  7C 08 02 A6 */	mflr r0
/* 80310FF4 0030CC54  90 01 00 14 */	stw r0, 0x14(r1)
/* 80310FF8 0030CC58  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 80310FFC 0030CC5C  2C 00 00 01 */	cmpwi r0, 1
/* 80311000 0030CC60  41 82 00 2C */	beq lbl_8031102C
/* 80311004 0030CC64  40 80 00 10 */	bge lbl_80311014
/* 80311008 0030CC68  2C 00 00 00 */	cmpwi r0, 0
/* 8031100C 0030CC6C  40 80 00 14 */	bge lbl_80311020
/* 80311010 0030CC70  48 00 00 2C */	b lbl_8031103C
lbl_80311014:
/* 80311014 0030CC74  2C 00 00 03 */	cmpwi r0, 3
/* 80311018 0030CC78  40 80 00 24 */	bge lbl_8031103C
/* 8031101C 0030CC7C  48 00 00 18 */	b lbl_80311034
lbl_80311020:
/* 80311020 0030CC80  54 84 04 3E */	clrlwi r4, r4, 0x10
/* 80311024 0030CC84  48 00 01 4D */	bl VFiPFFAT12_ReadFATEntry
/* 80311028 0030CC88  48 00 00 20 */	b lbl_80311048
lbl_8031102C:
/* 8031102C 0030CC8C  48 00 0C 2D */	bl VFiPFFAT16_ReadFATEntry
/* 80311030 0030CC90  48 00 00 18 */	b lbl_80311048
lbl_80311034:
/* 80311034 0030CC94  48 00 11 9D */	bl VFiPFFAT32_ReadFATEntry
/* 80311038 0030CC98  48 00 00 10 */	b lbl_80311048
lbl_8031103C:
/* 8031103C 0030CC9C  38 00 FF FF */	li r0, -1
/* 80311040 0030CCA0  38 60 00 0F */	li r3, 0xf
/* 80311044 0030CCA4  90 05 00 00 */	stw r0, 0(r5)
lbl_80311048:
/* 80311048 0030CCA8  7C 03 00 D0 */	neg r0, r3
/* 8031104C 0030CCAC  7C 00 1B 78 */	or r0, r0, r3
/* 80311050 0030CCB0  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 80311054 0030CCB4  7C 63 00 38 */	and r3, r3, r0
/* 80311058 0030CCB8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031105C 0030CCBC  7C 08 03 A6 */	mtlr r0
/* 80311060 0030CCC0  38 21 00 10 */	addi r1, r1, 0x10
/* 80311064 0030CCC4  4E 80 00 20 */	blr

.global VFiPFFAT_ResetFFD
VFiPFFAT_ResetFFD:
/* 80311068 0030CCC8  2C 03 00 00 */	cmpwi r3, 0
/* 8031106C 0030CCCC  40 82 00 0C */	bne lbl_80311078
/* 80311070 0030CCD0  38 60 00 0A */	li r3, 0xa
/* 80311074 0030CCD4  4E 80 00 20 */	blr
lbl_80311078:
/* 80311078 0030CCD8  2C 04 00 00 */	cmpwi r4, 0
/* 8031107C 0030CCDC  40 82 00 0C */	bne lbl_80311088
/* 80311080 0030CCE0  38 60 00 0A */	li r3, 0xa
/* 80311084 0030CCE4  4E 80 00 20 */	blr
lbl_80311088:
/* 80311088 0030CCE8  80 A3 00 30 */	lwz r5, 0x30(r3)
/* 8031108C 0030CCEC  38 00 00 01 */	li r0, 1
/* 80311090 0030CCF0  90 83 00 08 */	stw r4, 8(r3)
/* 80311094 0030CCF4  2C 05 00 00 */	cmpwi r5, 0
/* 80311098 0030CCF8  90 03 00 00 */	stw r0, 0(r3)
/* 8031109C 0030CCFC  41 82 00 0C */	beq lbl_803110A8
/* 803110A0 0030CD00  38 00 00 00 */	li r0, 0
/* 803110A4 0030CD04  90 05 00 08 */	stw r0, 8(r5)
lbl_803110A8:
/* 803110A8 0030CD08  38 00 00 00 */	li r0, 0
/* 803110AC 0030CD0C  90 03 00 18 */	stw r0, 0x18(r3)
/* 803110B0 0030CD10  90 03 00 14 */	stw r0, 0x14(r3)
/* 803110B4 0030CD14  90 03 00 0C */	stw r0, 0xc(r3)
/* 803110B8 0030CD18  90 03 00 10 */	stw r0, 0x10(r3)
/* 803110BC 0030CD1C  90 03 00 1C */	stw r0, 0x1c(r3)
/* 803110C0 0030CD20  38 60 00 00 */	li r3, 0
/* 803110C4 0030CD24  4E 80 00 20 */	blr

.global VFiPFFAT_InitFFD
VFiPFFAT_InitFFD:
/* 803110C8 0030CD28  2C 83 00 00 */	cmpwi cr1, r3, 0
/* 803110CC 0030CD2C  40 86 00 0C */	bne cr1, lbl_803110D8
/* 803110D0 0030CD30  38 60 00 0A */	li r3, 0xa
/* 803110D4 0030CD34  4E 80 00 20 */	blr
lbl_803110D8:
/* 803110D8 0030CD38  2C 06 00 00 */	cmpwi r6, 0
/* 803110DC 0030CD3C  40 82 00 0C */	bne lbl_803110E8
/* 803110E0 0030CD40  38 60 00 0A */	li r3, 0xa
/* 803110E4 0030CD44  4E 80 00 20 */	blr
lbl_803110E8:
/* 803110E8 0030CD48  90 83 00 30 */	stw r4, 0x30(r3)
/* 803110EC 0030CD4C  90 A3 00 34 */	stw r5, 0x34(r3)
/* 803110F0 0030CD50  41 86 00 3C */	beq cr1, lbl_8031112C
/* 803110F4 0030CD54  41 82 00 38 */	beq lbl_8031112C
/* 803110F8 0030CD58  38 00 00 01 */	li r0, 1
/* 803110FC 0030CD5C  2C 04 00 00 */	cmpwi r4, 0
/* 80311100 0030CD60  90 C3 00 08 */	stw r6, 8(r3)
/* 80311104 0030CD64  90 03 00 00 */	stw r0, 0(r3)
/* 80311108 0030CD68  41 82 00 0C */	beq lbl_80311114
/* 8031110C 0030CD6C  38 00 00 00 */	li r0, 0
/* 80311110 0030CD70  90 04 00 08 */	stw r0, 8(r4)
lbl_80311114:
/* 80311114 0030CD74  38 00 00 00 */	li r0, 0
/* 80311118 0030CD78  90 03 00 18 */	stw r0, 0x18(r3)
/* 8031111C 0030CD7C  90 03 00 14 */	stw r0, 0x14(r3)
/* 80311120 0030CD80  90 03 00 0C */	stw r0, 0xc(r3)
/* 80311124 0030CD84  90 03 00 10 */	stw r0, 0x10(r3)
/* 80311128 0030CD88  90 03 00 1C */	stw r0, 0x1c(r3)
lbl_8031112C:
/* 8031112C 0030CD8C  38 60 00 00 */	li r3, 0
/* 80311130 0030CD90  4E 80 00 20 */	blr

.global VFiPFFAT_FinalizeFFD
VFiPFFAT_FinalizeFFD:
/* 80311134 0030CD94  2C 03 00 00 */	cmpwi r3, 0
/* 80311138 0030CD98  40 82 00 0C */	bne lbl_80311144
/* 8031113C 0030CD9C  38 60 00 0A */	li r3, 0xa
/* 80311140 0030CDA0  4E 80 00 20 */	blr
lbl_80311144:
/* 80311144 0030CDA4  38 00 00 00 */	li r0, 0
/* 80311148 0030CDA8  90 03 00 1C */	stw r0, 0x1c(r3)
/* 8031114C 0030CDAC  38 60 00 00 */	li r3, 0
/* 80311150 0030CDB0  4E 80 00 20 */	blr

.global VFiPFFAT_GetValueOfEOC2
VFiPFFAT_GetValueOfEOC2:
/* 80311154 0030CDB4  80 03 00 1C */	lwz r0, 0x1c(r3)
/* 80311158 0030CDB8  3C 60 80 40 */	lis r3, lbl_803FE280@ha
/* 8031115C 0030CDBC  38 63 E2 80 */	addi r3, r3, lbl_803FE280@l
/* 80311160 0030CDC0  1C 00 00 14 */	mulli r0, r0, 0x14
/* 80311164 0030CDC4  7C 63 02 14 */	add r3, r3, r0
/* 80311168 0030CDC8  80 63 00 08 */	lwz r3, 8(r3)
/* 8031116C 0030CDCC  4E 80 00 20 */	blr