1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global VFiPFFILE_Cursor_AdvanceToRead
VFiPFFILE_Cursor_AdvanceToRead:
/* 80312814 0030E474 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80312818 0030E478 7C 08 02 A6 */ mflr r0
/* 8031281C 0030E47C 2C 03 00 00 */ cmpwi r3, 0
/* 80312820 0030E480 90 01 00 14 */ stw r0, 0x14(r1)
/* 80312824 0030E484 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80312828 0030E488 3B E0 00 01 */ li r31, 1
/* 8031282C 0030E48C 40 82 00 0C */ bne lbl_80312838
/* 80312830 0030E490 39 20 00 00 */ li r9, 0
/* 80312834 0030E494 48 00 00 0C */ b lbl_80312840
lbl_80312838:
/* 80312838 0030E498 80 C3 00 08 */ lwz r6, 8(r3)
/* 8031283C 0030E49C 81 26 02 68 */ lwz r9, 0x268(r6)
lbl_80312840:
/* 80312840 0030E4A0 80 C3 00 08 */ lwz r6, 8(r3)
/* 80312844 0030E4A4 80 03 00 1C */ lwz r0, 0x1c(r3)
/* 80312848 0030E4A8 A1 03 00 28 */ lhz r8, 0x28(r3)
/* 8031284C 0030E4AC 81 46 02 64 */ lwz r10, 0x264(r6)
/* 80312850 0030E4B0 7C 00 22 14 */ add r0, r0, r4
/* 80312854 0030E4B4 88 E9 00 20 */ lbz r7, 0x20(r9)
/* 80312858 0030E4B8 7D 08 22 14 */ add r8, r8, r4
/* 8031285C 0030E4BC 7C 00 50 40 */ cmplw r0, r10
/* 80312860 0030E4C0 7D 00 3C 30 */ srw r0, r8, r7
/* 80312864 0030E4C4 7C E5 02 14 */ add r7, r5, r0
/* 80312868 0030E4C8 40 80 00 34 */ bge lbl_8031289C
/* 8031286C 0030E4CC A0 A9 00 00 */ lhz r5, 0(r9)
/* 80312870 0030E4D0 38 05 FF FF */ addi r0, r5, -1
/* 80312874 0030E4D4 7C 00 40 39 */ and. r0, r0, r8
/* 80312878 0030E4D8 41 82 00 0C */ beq lbl_80312884
/* 8031287C 0030E4DC 90 E3 00 20 */ stw r7, 0x20(r3)
/* 80312880 0030E4E0 48 00 00 0C */ b lbl_8031288C
lbl_80312884:
/* 80312884 0030E4E4 38 00 FF FF */ li r0, -1
/* 80312888 0030E4E8 90 03 00 20 */ stw r0, 0x20(r3)
lbl_8031288C:
/* 8031288C 0030E4EC 80 03 00 1C */ lwz r0, 0x1c(r3)
/* 80312890 0030E4F0 7C 00 22 14 */ add r0, r0, r4
/* 80312894 0030E4F4 90 03 00 1C */ stw r0, 0x1c(r3)
/* 80312898 0030E4F8 48 00 00 40 */ b lbl_803128D8
lbl_8031289C:
/* 8031289C 0030E4FC 2C 0A 00 00 */ cmpwi r10, 0
/* 803128A0 0030E500 40 82 00 24 */ bne lbl_803128C4
/* 803128A4 0030E504 38 A0 FF FF */ li r5, -1
/* 803128A8 0030E508 38 00 00 00 */ li r0, 0
/* 803128AC 0030E50C 2C 04 00 00 */ cmpwi r4, 0
/* 803128B0 0030E510 90 A3 00 20 */ stw r5, 0x20(r3)
/* 803128B4 0030E514 90 03 00 1C */ stw r0, 0x1c(r3)
/* 803128B8 0030E518 41 82 00 20 */ beq lbl_803128D8
/* 803128BC 0030E51C 3B E0 00 00 */ li r31, 0
/* 803128C0 0030E520 48 00 00 18 */ b lbl_803128D8
lbl_803128C4:
/* 803128C4 0030E524 38 00 FF FF */ li r0, -1
/* 803128C8 0030E528 3B E0 00 00 */ li r31, 0
/* 803128CC 0030E52C 90 03 00 20 */ stw r0, 0x20(r3)
/* 803128D0 0030E530 80 06 02 64 */ lwz r0, 0x264(r6)
/* 803128D4 0030E534 90 03 00 1C */ stw r0, 0x1c(r3)
lbl_803128D8:
/* 803128D8 0030E538 2C 03 00 00 */ cmpwi r3, 0
/* 803128DC 0030E53C 40 82 00 0C */ bne lbl_803128E8
/* 803128E0 0030E540 38 A0 00 00 */ li r5, 0
/* 803128E4 0030E544 48 00 00 0C */ b lbl_803128F0
lbl_803128E8:
/* 803128E8 0030E548 80 83 00 08 */ lwz r4, 8(r3)
/* 803128EC 0030E54C 80 A4 02 68 */ lwz r5, 0x268(r4)
lbl_803128F0:
/* 803128F0 0030E550 80 C3 00 1C */ lwz r6, 0x1c(r3)
/* 803128F4 0030E554 7C E4 3B 78 */ mr r4, r7
/* 803128F8 0030E558 88 05 00 20 */ lbz r0, 0x20(r5)
/* 803128FC 0030E55C 7C C0 04 30 */ srw r0, r6, r0
/* 80312900 0030E560 90 03 00 24 */ stw r0, 0x24(r3)
/* 80312904 0030E564 A0 A5 00 00 */ lhz r5, 0(r5)
/* 80312908 0030E568 38 05 FF FF */ addi r0, r5, -1
/* 8031290C 0030E56C 7C C0 00 38 */ and r0, r6, r0
/* 80312910 0030E570 B0 03 00 28 */ sth r0, 0x28(r3)
/* 80312914 0030E574 4B FF 84 6D */ bl VFiPFCLUSTER_UpdateLastAccessCluster
/* 80312918 0030E578 7F E3 FB 78 */ mr r3, r31
/* 8031291C 0030E57C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80312920 0030E580 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80312924 0030E584 7C 08 03 A6 */ mtlr r0
/* 80312928 0030E588 38 21 00 10 */ addi r1, r1, 0x10
/* 8031292C 0030E58C 4E 80 00 20 */ blr
.global VFiPFFILE_Cursor_ReadHeadSector
VFiPFFILE_Cursor_ReadHeadSector:
/* 80312930 0030E590 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80312934 0030E594 7C 08 02 A6 */ mflr r0
/* 80312938 0030E598 90 01 00 34 */ stw r0, 0x34(r1)
/* 8031293C 0030E59C 39 61 00 30 */ addi r11, r1, 0x30
/* 80312940 0030E5A0 4B EB 47 E9 */ bl _savegpr_27
/* 80312944 0030E5A4 38 00 00 00 */ li r0, 0
/* 80312948 0030E5A8 7C BD 2B 78 */ mr r29, r5
/* 8031294C 0030E5AC 90 07 00 00 */ stw r0, 0(r7)
/* 80312950 0030E5B0 7C 7B 1B 78 */ mr r27, r3
/* 80312954 0030E5B4 7C 9C 23 78 */ mr r28, r4
/* 80312958 0030E5B8 7C DE 33 78 */ mr r30, r6
/* 8031295C 0030E5BC A0 A4 00 28 */ lhz r5, 0x28(r4)
/* 80312960 0030E5C0 7C FF 3B 78 */ mr r31, r7
/* 80312964 0030E5C4 2C 05 00 00 */ cmpwi r5, 0
/* 80312968 0030E5C8 40 82 00 0C */ bne lbl_80312974
/* 8031296C 0030E5CC 38 60 00 00 */ li r3, 0
/* 80312970 0030E5D0 48 00 02 40 */ b lbl_80312BB0
lbl_80312974:
/* 80312974 0030E5D4 A0 03 00 00 */ lhz r0, 0(r3)
/* 80312978 0030E5D8 7C E5 00 50 */ subf r7, r5, r0
/* 8031297C 0030E5DC 7C 06 38 40 */ cmplw r6, r7
/* 80312980 0030E5E0 40 81 00 08 */ ble lbl_80312988
/* 80312984 0030E5E4 7C FE 3B 78 */ mr r30, r7
lbl_80312988:
/* 80312988 0030E5E8 80 C4 00 08 */ lwz r6, 8(r4)
/* 8031298C 0030E5EC 80 64 00 1C */ lwz r3, 0x1c(r4)
/* 80312990 0030E5F0 80 A6 02 64 */ lwz r5, 0x264(r6)
/* 80312994 0030E5F4 7C 03 F2 14 */ add r0, r3, r30
/* 80312998 0030E5F8 7C 00 28 40 */ cmplw r0, r5
/* 8031299C 0030E5FC 40 81 00 18 */ ble lbl_803129B4
/* 803129A0 0030E600 7F C3 28 50 */ subf r30, r3, r5
/* 803129A4 0030E604 7C 1E 38 40 */ cmplw r30, r7
/* 803129A8 0030E608 40 80 00 0C */ bge lbl_803129B4
/* 803129AC 0030E60C 38 60 00 00 */ li r3, 0
/* 803129B0 0030E610 48 00 02 00 */ b lbl_80312BB0
lbl_803129B4:
/* 803129B4 0030E614 80 A4 00 20 */ lwz r5, 0x20(r4)
/* 803129B8 0030E618 3C 05 00 01 */ addis r0, r5, 1
/* 803129BC 0030E61C 28 00 FF FF */ cmplwi r0, 0xffff
/* 803129C0 0030E620 40 82 01 A0 */ bne lbl_80312B60
/* 803129C4 0030E624 80 84 00 24 */ lwz r4, 0x24(r4)
/* 803129C8 0030E628 38 66 00 04 */ addi r3, r6, 4
/* 803129CC 0030E62C 38 DC 00 20 */ addi r6, r28, 0x20
/* 803129D0 0030E630 38 A0 00 00 */ li r5, 0
/* 803129D4 0030E634 4B FF D5 95 */ bl VFiPFFAT_GetSectorSpecified
/* 803129D8 0030E638 2C 03 00 00 */ cmpwi r3, 0
/* 803129DC 0030E63C 41 82 00 08 */ beq lbl_803129E4
/* 803129E0 0030E640 48 00 01 D0 */ b lbl_80312BB0
lbl_803129E4:
/* 803129E4 0030E644 80 BC 00 20 */ lwz r5, 0x20(r28)
/* 803129E8 0030E648 3C 05 00 01 */ addis r0, r5, 1
/* 803129EC 0030E64C 28 00 FF FF */ cmplwi r0, 0xffff
/* 803129F0 0030E650 40 82 00 B4 */ bne lbl_80312AA4
/* 803129F4 0030E654 80 7C 00 08 */ lwz r3, 8(r28)
/* 803129F8 0030E658 2C 1C 00 00 */ cmpwi r28, 0
/* 803129FC 0030E65C 81 03 02 64 */ lwz r8, 0x264(r3)
/* 80312A00 0030E660 40 82 00 0C */ bne lbl_80312A0C
/* 80312A04 0030E664 38 80 00 00 */ li r4, 0
/* 80312A08 0030E668 48 00 00 08 */ b lbl_80312A10
lbl_80312A0C:
/* 80312A0C 0030E66C 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80312A10:
/* 80312A10 0030E670 A0 64 00 00 */ lhz r3, 0(r4)
/* 80312A14 0030E674 80 1C 00 1C */ lwz r0, 0x1c(r28)
/* 80312A18 0030E678 38 63 FF FF */ addi r3, r3, -1
/* 80312A1C 0030E67C 88 84 00 20 */ lbz r4, 0x20(r4)
/* 80312A20 0030E680 7C 07 18 38 */ and r7, r0, r3
/* 80312A24 0030E684 7C 05 24 30 */ srw r5, r0, r4
/* 80312A28 0030E688 7D 03 18 38 */ and r3, r8, r3
/* 80312A2C 0030E68C 7C C7 00 D0 */ neg r6, r7
/* 80312A30 0030E690 7D 04 24 30 */ srw r4, r8, r4
/* 80312A34 0030E694 7C 03 00 D0 */ neg r0, r3
/* 80312A38 0030E698 7C 00 1B 78 */ or r0, r0, r3
/* 80312A3C 0030E69C 7C C6 3B 78 */ or r6, r6, r7
/* 80312A40 0030E6A0 54 C3 0F FE */ srwi r3, r6, 0x1f
/* 80312A44 0030E6A4 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80312A48 0030E6A8 7C 65 1A 14 */ add r3, r5, r3
/* 80312A4C 0030E6AC 7C 04 02 14 */ add r0, r4, r0
/* 80312A50 0030E6B0 7C 03 00 40 */ cmplw r3, r0
/* 80312A54 0030E6B4 41 82 00 0C */ beq lbl_80312A60
/* 80312A58 0030E6B8 38 00 FF FF */ li r0, -1
/* 80312A5C 0030E6BC 90 1C 00 20 */ stw r0, 0x20(r28)
lbl_80312A60:
/* 80312A60 0030E6C0 2C 1C 00 00 */ cmpwi r28, 0
/* 80312A64 0030E6C4 91 1C 00 1C */ stw r8, 0x1c(r28)
/* 80312A68 0030E6C8 40 82 00 0C */ bne lbl_80312A74
/* 80312A6C 0030E6CC 38 80 00 00 */ li r4, 0
/* 80312A70 0030E6D0 48 00 00 0C */ b lbl_80312A7C
lbl_80312A74:
/* 80312A74 0030E6D4 80 7C 00 08 */ lwz r3, 8(r28)
/* 80312A78 0030E6D8 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80312A7C:
/* 80312A7C 0030E6DC 80 BC 00 1C */ lwz r5, 0x1c(r28)
/* 80312A80 0030E6E0 38 60 00 1C */ li r3, 0x1c
/* 80312A84 0030E6E4 88 04 00 20 */ lbz r0, 0x20(r4)
/* 80312A88 0030E6E8 7C A0 04 30 */ srw r0, r5, r0
/* 80312A8C 0030E6EC 90 1C 00 24 */ stw r0, 0x24(r28)
/* 80312A90 0030E6F0 A0 84 00 00 */ lhz r4, 0(r4)
/* 80312A94 0030E6F4 38 04 FF FF */ addi r0, r4, -1
/* 80312A98 0030E6F8 7C A0 00 38 */ and r0, r5, r0
/* 80312A9C 0030E6FC B0 1C 00 28 */ sth r0, 0x28(r28)
/* 80312AA0 0030E700 48 00 01 10 */ b lbl_80312BB0
lbl_80312AA4:
/* 80312AA4 0030E704 80 7C 00 08 */ lwz r3, 8(r28)
/* 80312AA8 0030E708 80 DC 00 1C */ lwz r6, 0x1c(r28)
/* 80312AAC 0030E70C 81 03 02 64 */ lwz r8, 0x264(r3)
/* 80312AB0 0030E710 7C 06 F2 14 */ add r0, r6, r30
/* 80312AB4 0030E714 7C 00 40 40 */ cmplw r0, r8
/* 80312AB8 0030E718 40 81 00 A8 */ ble lbl_80312B60
/* 80312ABC 0030E71C 2C 1C 00 00 */ cmpwi r28, 0
/* 80312AC0 0030E720 40 82 00 0C */ bne lbl_80312ACC
/* 80312AC4 0030E724 38 80 00 00 */ li r4, 0
/* 80312AC8 0030E728 48 00 00 08 */ b lbl_80312AD0
lbl_80312ACC:
/* 80312ACC 0030E72C 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80312AD0:
/* 80312AD0 0030E730 A0 64 00 00 */ lhz r3, 0(r4)
/* 80312AD4 0030E734 88 84 00 20 */ lbz r4, 0x20(r4)
/* 80312AD8 0030E738 38 03 FF FF */ addi r0, r3, -1
/* 80312ADC 0030E73C 7C C7 00 38 */ and r7, r6, r0
/* 80312AE0 0030E740 7C C5 24 30 */ srw r5, r6, r4
/* 80312AE4 0030E744 7D 03 00 38 */ and r3, r8, r0
/* 80312AE8 0030E748 7D 04 24 30 */ srw r4, r8, r4
/* 80312AEC 0030E74C 7C C7 00 D0 */ neg r6, r7
/* 80312AF0 0030E750 7C 03 00 D0 */ neg r0, r3
/* 80312AF4 0030E754 7C 00 1B 78 */ or r0, r0, r3
/* 80312AF8 0030E758 7C C6 3B 78 */ or r6, r6, r7
/* 80312AFC 0030E75C 54 C3 0F FE */ srwi r3, r6, 0x1f
/* 80312B00 0030E760 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80312B04 0030E764 7C 65 1A 14 */ add r3, r5, r3
/* 80312B08 0030E768 7C 04 02 14 */ add r0, r4, r0
/* 80312B0C 0030E76C 7C 03 00 40 */ cmplw r3, r0
/* 80312B10 0030E770 41 82 00 0C */ beq lbl_80312B1C
/* 80312B14 0030E774 38 00 FF FF */ li r0, -1
/* 80312B18 0030E778 90 1C 00 20 */ stw r0, 0x20(r28)
lbl_80312B1C:
/* 80312B1C 0030E77C 2C 1C 00 00 */ cmpwi r28, 0
/* 80312B20 0030E780 91 1C 00 1C */ stw r8, 0x1c(r28)
/* 80312B24 0030E784 40 82 00 0C */ bne lbl_80312B30
/* 80312B28 0030E788 38 80 00 00 */ li r4, 0
/* 80312B2C 0030E78C 48 00 00 0C */ b lbl_80312B38
lbl_80312B30:
/* 80312B30 0030E790 80 7C 00 08 */ lwz r3, 8(r28)
/* 80312B34 0030E794 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80312B38:
/* 80312B38 0030E798 80 BC 00 1C */ lwz r5, 0x1c(r28)
/* 80312B3C 0030E79C 38 60 00 1B */ li r3, 0x1b
/* 80312B40 0030E7A0 88 04 00 20 */ lbz r0, 0x20(r4)
/* 80312B44 0030E7A4 7C A0 04 30 */ srw r0, r5, r0
/* 80312B48 0030E7A8 90 1C 00 24 */ stw r0, 0x24(r28)
/* 80312B4C 0030E7AC A0 84 00 00 */ lhz r4, 0(r4)
/* 80312B50 0030E7B0 38 04 FF FF */ addi r0, r4, -1
/* 80312B54 0030E7B4 7C A0 00 38 */ and r0, r5, r0
/* 80312B58 0030E7B8 B0 1C 00 28 */ sth r0, 0x28(r28)
/* 80312B5C 0030E7BC 48 00 00 54 */ b lbl_80312BB0
lbl_80312B60:
/* 80312B60 0030E7C0 A0 DC 00 28 */ lhz r6, 0x28(r28)
/* 80312B64 0030E7C4 7F 63 DB 78 */ mr r3, r27
/* 80312B68 0030E7C8 7F A4 EB 78 */ mr r4, r29
/* 80312B6C 0030E7CC 7F C7 F3 78 */ mr r7, r30
/* 80312B70 0030E7D0 39 01 00 08 */ addi r8, r1, 8
/* 80312B74 0030E7D4 39 20 00 01 */ li r9, 1
/* 80312B78 0030E7D8 48 00 5E B1 */ bl VFiPFSEC_ReadData
/* 80312B7C 0030E7DC 2C 03 00 00 */ cmpwi r3, 0
/* 80312B80 0030E7E0 41 82 00 14 */ beq lbl_80312B94
/* 80312B84 0030E7E4 80 01 00 08 */ lwz r0, 8(r1)
/* 80312B88 0030E7E8 2C 00 00 00 */ cmpwi r0, 0
/* 80312B8C 0030E7EC 40 82 00 08 */ bne lbl_80312B94
/* 80312B90 0030E7F0 48 00 00 20 */ b lbl_80312BB0
lbl_80312B94:
/* 80312B94 0030E7F4 80 01 00 08 */ lwz r0, 8(r1)
/* 80312B98 0030E7F8 7F 83 E3 78 */ mr r3, r28
/* 80312B9C 0030E7FC 90 1F 00 00 */ stw r0, 0(r31)
/* 80312BA0 0030E800 80 81 00 08 */ lwz r4, 8(r1)
/* 80312BA4 0030E804 80 BC 00 20 */ lwz r5, 0x20(r28)
/* 80312BA8 0030E808 4B FF FC 6D */ bl VFiPFFILE_Cursor_AdvanceToRead
/* 80312BAC 0030E80C 38 60 00 00 */ li r3, 0
lbl_80312BB0:
/* 80312BB0 0030E810 39 61 00 30 */ addi r11, r1, 0x30
/* 80312BB4 0030E814 4B EB 45 C1 */ bl _restgpr_27
/* 80312BB8 0030E818 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80312BBC 0030E81C 7C 08 03 A6 */ mtlr r0
/* 80312BC0 0030E820 38 21 00 30 */ addi r1, r1, 0x30
/* 80312BC4 0030E824 4E 80 00 20 */ blr
.global VFiPFFILE_Cursor_ReadBodySectors
VFiPFFILE_Cursor_ReadBodySectors:
/* 80312BC8 0030E828 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80312BCC 0030E82C 7C 08 02 A6 */ mflr r0
/* 80312BD0 0030E830 90 01 00 34 */ stw r0, 0x34(r1)
/* 80312BD4 0030E834 39 61 00 30 */ addi r11, r1, 0x30
/* 80312BD8 0030E838 4B EB 45 51 */ bl _savegpr_27
/* 80312BDC 0030E83C 38 00 00 00 */ li r0, 0
/* 80312BE0 0030E840 7C 7B 1B 78 */ mr r27, r3
/* 80312BE4 0030E844 90 07 00 00 */ stw r0, 0(r7)
/* 80312BE8 0030E848 7C FE 3B 78 */ mr r30, r7
/* 80312BEC 0030E84C 7C 9F 23 78 */ mr r31, r4
/* 80312BF0 0030E850 7C DD 33 78 */ mr r29, r6
/* 80312BF4 0030E854 90 01 00 0C */ stw r0, 0xc(r1)
/* 80312BF8 0030E858 7C BC 2B 78 */ mr r28, r5
/* 80312BFC 0030E85C 7F A5 EB 78 */ mr r5, r29
/* 80312C00 0030E860 38 DF 00 20 */ addi r6, r31, 0x20
/* 80312C04 0030E864 80 64 00 08 */ lwz r3, 8(r4)
/* 80312C08 0030E868 38 E1 00 0C */ addi r7, r1, 0xc
/* 80312C0C 0030E86C 80 84 00 24 */ lwz r4, 0x24(r4)
/* 80312C10 0030E870 38 63 00 04 */ addi r3, r3, 4
/* 80312C14 0030E874 4B FF D5 01 */ bl VFiPFFAT_GetContinuousSector
/* 80312C18 0030E878 2C 03 00 00 */ cmpwi r3, 0
/* 80312C1C 0030E87C 41 82 00 08 */ beq lbl_80312C24
/* 80312C20 0030E880 48 00 01 68 */ b lbl_80312D88
lbl_80312C24:
/* 80312C24 0030E884 80 BF 00 20 */ lwz r5, 0x20(r31)
/* 80312C28 0030E888 3C 05 00 01 */ addis r0, r5, 1
/* 80312C2C 0030E88C 28 00 FF FF */ cmplwi r0, 0xffff
/* 80312C30 0030E890 40 82 00 B4 */ bne lbl_80312CE4
/* 80312C34 0030E894 80 7F 00 08 */ lwz r3, 8(r31)
/* 80312C38 0030E898 2C 1F 00 00 */ cmpwi r31, 0
/* 80312C3C 0030E89C 81 03 02 64 */ lwz r8, 0x264(r3)
/* 80312C40 0030E8A0 40 82 00 0C */ bne lbl_80312C4C
/* 80312C44 0030E8A4 38 80 00 00 */ li r4, 0
/* 80312C48 0030E8A8 48 00 00 08 */ b lbl_80312C50
lbl_80312C4C:
/* 80312C4C 0030E8AC 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80312C50:
/* 80312C50 0030E8B0 A0 64 00 00 */ lhz r3, 0(r4)
/* 80312C54 0030E8B4 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 80312C58 0030E8B8 38 63 FF FF */ addi r3, r3, -1
/* 80312C5C 0030E8BC 88 84 00 20 */ lbz r4, 0x20(r4)
/* 80312C60 0030E8C0 7C 07 18 38 */ and r7, r0, r3
/* 80312C64 0030E8C4 7C 05 24 30 */ srw r5, r0, r4
/* 80312C68 0030E8C8 7D 03 18 38 */ and r3, r8, r3
/* 80312C6C 0030E8CC 7C C7 00 D0 */ neg r6, r7
/* 80312C70 0030E8D0 7D 04 24 30 */ srw r4, r8, r4
/* 80312C74 0030E8D4 7C 03 00 D0 */ neg r0, r3
/* 80312C78 0030E8D8 7C 00 1B 78 */ or r0, r0, r3
/* 80312C7C 0030E8DC 7C C6 3B 78 */ or r6, r6, r7
/* 80312C80 0030E8E0 54 C3 0F FE */ srwi r3, r6, 0x1f
/* 80312C84 0030E8E4 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80312C88 0030E8E8 7C 65 1A 14 */ add r3, r5, r3
/* 80312C8C 0030E8EC 7C 04 02 14 */ add r0, r4, r0
/* 80312C90 0030E8F0 7C 03 00 40 */ cmplw r3, r0
/* 80312C94 0030E8F4 41 82 00 0C */ beq lbl_80312CA0
/* 80312C98 0030E8F8 38 00 FF FF */ li r0, -1
/* 80312C9C 0030E8FC 90 1F 00 20 */ stw r0, 0x20(r31)
lbl_80312CA0:
/* 80312CA0 0030E900 2C 1F 00 00 */ cmpwi r31, 0
/* 80312CA4 0030E904 91 1F 00 1C */ stw r8, 0x1c(r31)
/* 80312CA8 0030E908 40 82 00 0C */ bne lbl_80312CB4
/* 80312CAC 0030E90C 38 80 00 00 */ li r4, 0
/* 80312CB0 0030E910 48 00 00 0C */ b lbl_80312CBC
lbl_80312CB4:
/* 80312CB4 0030E914 80 7F 00 08 */ lwz r3, 8(r31)
/* 80312CB8 0030E918 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80312CBC:
/* 80312CBC 0030E91C 80 BF 00 1C */ lwz r5, 0x1c(r31)
/* 80312CC0 0030E920 38 60 00 1C */ li r3, 0x1c
/* 80312CC4 0030E924 88 04 00 20 */ lbz r0, 0x20(r4)
/* 80312CC8 0030E928 7C A0 04 30 */ srw r0, r5, r0
/* 80312CCC 0030E92C 90 1F 00 24 */ stw r0, 0x24(r31)
/* 80312CD0 0030E930 A0 84 00 00 */ lhz r4, 0(r4)
/* 80312CD4 0030E934 38 04 FF FF */ addi r0, r4, -1
/* 80312CD8 0030E938 7C A0 00 38 */ and r0, r5, r0
/* 80312CDC 0030E93C B0 1F 00 28 */ sth r0, 0x28(r31)
/* 80312CE0 0030E940 48 00 00 A8 */ b lbl_80312D88
lbl_80312CE4:
/* 80312CE4 0030E944 80 61 00 0C */ lwz r3, 0xc(r1)
/* 80312CE8 0030E948 88 1B 00 20 */ lbz r0, 0x20(r27)
/* 80312CEC 0030E94C 7C 60 00 30 */ slw r0, r3, r0
/* 80312CF0 0030E950 7C 1D 00 40 */ cmplw r29, r0
/* 80312CF4 0030E954 40 81 00 08 */ ble lbl_80312CFC
/* 80312CF8 0030E958 7C 1D 03 78 */ mr r29, r0
lbl_80312CFC:
/* 80312CFC 0030E95C 80 7F 00 08 */ lwz r3, 8(r31)
/* 80312D00 0030E960 80 9F 00 1C */ lwz r4, 0x1c(r31)
/* 80312D04 0030E964 80 63 02 64 */ lwz r3, 0x264(r3)
/* 80312D08 0030E968 7C 04 EA 14 */ add r0, r4, r29
/* 80312D0C 0030E96C 7C 00 18 40 */ cmplw r0, r3
/* 80312D10 0030E970 40 81 00 28 */ ble lbl_80312D38
/* 80312D14 0030E974 A0 DB 00 00 */ lhz r6, 0(r27)
/* 80312D18 0030E978 7F A4 18 50 */ subf r29, r4, r3
/* 80312D1C 0030E97C 38 06 FF FF */ addi r0, r6, -1
/* 80312D20 0030E980 7F A0 00 38 */ and r0, r29, r0
/* 80312D24 0030E984 7F A0 E8 50 */ subf r29, r0, r29
/* 80312D28 0030E988 7C 1D 30 40 */ cmplw r29, r6
/* 80312D2C 0030E98C 40 80 00 0C */ bge lbl_80312D38
/* 80312D30 0030E990 38 60 00 00 */ li r3, 0
/* 80312D34 0030E994 48 00 00 54 */ b lbl_80312D88
lbl_80312D38:
/* 80312D38 0030E998 A0 DF 00 28 */ lhz r6, 0x28(r31)
/* 80312D3C 0030E99C 7F 63 DB 78 */ mr r3, r27
/* 80312D40 0030E9A0 7F 84 E3 78 */ mr r4, r28
/* 80312D44 0030E9A4 7F A7 EB 78 */ mr r7, r29
/* 80312D48 0030E9A8 39 01 00 08 */ addi r8, r1, 8
/* 80312D4C 0030E9AC 39 20 00 01 */ li r9, 1
/* 80312D50 0030E9B0 48 00 5C D9 */ bl VFiPFSEC_ReadData
/* 80312D54 0030E9B4 2C 03 00 00 */ cmpwi r3, 0
/* 80312D58 0030E9B8 41 82 00 14 */ beq lbl_80312D6C
/* 80312D5C 0030E9BC 80 01 00 08 */ lwz r0, 8(r1)
/* 80312D60 0030E9C0 2C 00 00 00 */ cmpwi r0, 0
/* 80312D64 0030E9C4 40 82 00 08 */ bne lbl_80312D6C
/* 80312D68 0030E9C8 48 00 00 20 */ b lbl_80312D88
lbl_80312D6C:
/* 80312D6C 0030E9CC 80 01 00 08 */ lwz r0, 8(r1)
/* 80312D70 0030E9D0 7F E3 FB 78 */ mr r3, r31
/* 80312D74 0030E9D4 90 1E 00 00 */ stw r0, 0(r30)
/* 80312D78 0030E9D8 80 81 00 08 */ lwz r4, 8(r1)
/* 80312D7C 0030E9DC 80 BF 00 20 */ lwz r5, 0x20(r31)
/* 80312D80 0030E9E0 4B FF FA 95 */ bl VFiPFFILE_Cursor_AdvanceToRead
/* 80312D84 0030E9E4 38 60 00 00 */ li r3, 0
lbl_80312D88:
/* 80312D88 0030E9E8 39 61 00 30 */ addi r11, r1, 0x30
/* 80312D8C 0030E9EC 4B EB 43 E9 */ bl _restgpr_27
/* 80312D90 0030E9F0 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80312D94 0030E9F4 7C 08 03 A6 */ mtlr r0
/* 80312D98 0030E9F8 38 21 00 30 */ addi r1, r1, 0x30
/* 80312D9C 0030E9FC 4E 80 00 20 */ blr
.global VFiPFFILE_Cursor_ReadTailSector
VFiPFFILE_Cursor_ReadTailSector:
/* 80312DA0 0030EA00 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80312DA4 0030EA04 7C 08 02 A6 */ mflr r0
/* 80312DA8 0030EA08 90 01 00 34 */ stw r0, 0x34(r1)
/* 80312DAC 0030EA0C 39 61 00 30 */ addi r11, r1, 0x30
/* 80312DB0 0030EA10 4B EB 43 79 */ bl _savegpr_27
/* 80312DB4 0030EA14 38 00 00 00 */ li r0, 0
/* 80312DB8 0030EA18 2C 06 00 00 */ cmpwi r6, 0
/* 80312DBC 0030EA1C 90 07 00 00 */ stw r0, 0(r7)
/* 80312DC0 0030EA20 7C 7B 1B 78 */ mr r27, r3
/* 80312DC4 0030EA24 7C 9F 23 78 */ mr r31, r4
/* 80312DC8 0030EA28 7C BC 2B 78 */ mr r28, r5
/* 80312DCC 0030EA2C 7C DD 33 78 */ mr r29, r6
/* 80312DD0 0030EA30 7C FE 3B 78 */ mr r30, r7
/* 80312DD4 0030EA34 40 82 00 0C */ bne lbl_80312DE0
/* 80312DD8 0030EA38 38 60 00 00 */ li r3, 0
/* 80312DDC 0030EA3C 48 00 02 28 */ b lbl_80313004
lbl_80312DE0:
/* 80312DE0 0030EA40 80 E4 00 08 */ lwz r7, 8(r4)
/* 80312DE4 0030EA44 80 64 00 1C */ lwz r3, 0x1c(r4)
/* 80312DE8 0030EA48 80 A7 02 64 */ lwz r5, 0x264(r7)
/* 80312DEC 0030EA4C 7C 03 32 14 */ add r0, r3, r6
/* 80312DF0 0030EA50 7C 00 28 40 */ cmplw r0, r5
/* 80312DF4 0030EA54 40 81 00 14 */ ble lbl_80312E08
/* 80312DF8 0030EA58 7F A3 28 51 */ subf. r29, r3, r5
/* 80312DFC 0030EA5C 40 82 00 0C */ bne lbl_80312E08
/* 80312E00 0030EA60 38 60 00 00 */ li r3, 0
/* 80312E04 0030EA64 48 00 02 00 */ b lbl_80313004
lbl_80312E08:
/* 80312E08 0030EA68 80 A4 00 20 */ lwz r5, 0x20(r4)
/* 80312E0C 0030EA6C 3C 05 00 01 */ addis r0, r5, 1
/* 80312E10 0030EA70 28 00 FF FF */ cmplwi r0, 0xffff
/* 80312E14 0030EA74 40 82 01 A0 */ bne lbl_80312FB4
/* 80312E18 0030EA78 80 84 00 24 */ lwz r4, 0x24(r4)
/* 80312E1C 0030EA7C 38 67 00 04 */ addi r3, r7, 4
/* 80312E20 0030EA80 38 DF 00 20 */ addi r6, r31, 0x20
/* 80312E24 0030EA84 38 A0 00 00 */ li r5, 0
/* 80312E28 0030EA88 4B FF D1 41 */ bl VFiPFFAT_GetSectorSpecified
/* 80312E2C 0030EA8C 2C 03 00 00 */ cmpwi r3, 0
/* 80312E30 0030EA90 41 82 00 08 */ beq lbl_80312E38
/* 80312E34 0030EA94 48 00 01 D0 */ b lbl_80313004
lbl_80312E38:
/* 80312E38 0030EA98 80 BF 00 20 */ lwz r5, 0x20(r31)
/* 80312E3C 0030EA9C 3C 05 00 01 */ addis r0, r5, 1
/* 80312E40 0030EAA0 28 00 FF FF */ cmplwi r0, 0xffff
/* 80312E44 0030EAA4 40 82 00 B4 */ bne lbl_80312EF8
/* 80312E48 0030EAA8 80 7F 00 08 */ lwz r3, 8(r31)
/* 80312E4C 0030EAAC 2C 1F 00 00 */ cmpwi r31, 0
/* 80312E50 0030EAB0 81 03 02 64 */ lwz r8, 0x264(r3)
/* 80312E54 0030EAB4 40 82 00 0C */ bne lbl_80312E60
/* 80312E58 0030EAB8 38 80 00 00 */ li r4, 0
/* 80312E5C 0030EABC 48 00 00 08 */ b lbl_80312E64
lbl_80312E60:
/* 80312E60 0030EAC0 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80312E64:
/* 80312E64 0030EAC4 A0 64 00 00 */ lhz r3, 0(r4)
/* 80312E68 0030EAC8 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 80312E6C 0030EACC 38 63 FF FF */ addi r3, r3, -1
/* 80312E70 0030EAD0 88 84 00 20 */ lbz r4, 0x20(r4)
/* 80312E74 0030EAD4 7C 07 18 38 */ and r7, r0, r3
/* 80312E78 0030EAD8 7C 05 24 30 */ srw r5, r0, r4
/* 80312E7C 0030EADC 7D 03 18 38 */ and r3, r8, r3
/* 80312E80 0030EAE0 7C C7 00 D0 */ neg r6, r7
/* 80312E84 0030EAE4 7D 04 24 30 */ srw r4, r8, r4
/* 80312E88 0030EAE8 7C 03 00 D0 */ neg r0, r3
/* 80312E8C 0030EAEC 7C 00 1B 78 */ or r0, r0, r3
/* 80312E90 0030EAF0 7C C6 3B 78 */ or r6, r6, r7
/* 80312E94 0030EAF4 54 C3 0F FE */ srwi r3, r6, 0x1f
/* 80312E98 0030EAF8 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80312E9C 0030EAFC 7C 65 1A 14 */ add r3, r5, r3
/* 80312EA0 0030EB00 7C 04 02 14 */ add r0, r4, r0
/* 80312EA4 0030EB04 7C 03 00 40 */ cmplw r3, r0
/* 80312EA8 0030EB08 41 82 00 0C */ beq lbl_80312EB4
/* 80312EAC 0030EB0C 38 00 FF FF */ li r0, -1
/* 80312EB0 0030EB10 90 1F 00 20 */ stw r0, 0x20(r31)
lbl_80312EB4:
/* 80312EB4 0030EB14 2C 1F 00 00 */ cmpwi r31, 0
/* 80312EB8 0030EB18 91 1F 00 1C */ stw r8, 0x1c(r31)
/* 80312EBC 0030EB1C 40 82 00 0C */ bne lbl_80312EC8
/* 80312EC0 0030EB20 38 80 00 00 */ li r4, 0
/* 80312EC4 0030EB24 48 00 00 0C */ b lbl_80312ED0
lbl_80312EC8:
/* 80312EC8 0030EB28 80 7F 00 08 */ lwz r3, 8(r31)
/* 80312ECC 0030EB2C 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80312ED0:
/* 80312ED0 0030EB30 80 BF 00 1C */ lwz r5, 0x1c(r31)
/* 80312ED4 0030EB34 38 60 00 1C */ li r3, 0x1c
/* 80312ED8 0030EB38 88 04 00 20 */ lbz r0, 0x20(r4)
/* 80312EDC 0030EB3C 7C A0 04 30 */ srw r0, r5, r0
/* 80312EE0 0030EB40 90 1F 00 24 */ stw r0, 0x24(r31)
/* 80312EE4 0030EB44 A0 84 00 00 */ lhz r4, 0(r4)
/* 80312EE8 0030EB48 38 04 FF FF */ addi r0, r4, -1
/* 80312EEC 0030EB4C 7C A0 00 38 */ and r0, r5, r0
/* 80312EF0 0030EB50 B0 1F 00 28 */ sth r0, 0x28(r31)
/* 80312EF4 0030EB54 48 00 01 10 */ b lbl_80313004
lbl_80312EF8:
/* 80312EF8 0030EB58 80 7F 00 08 */ lwz r3, 8(r31)
/* 80312EFC 0030EB5C 80 DF 00 1C */ lwz r6, 0x1c(r31)
/* 80312F00 0030EB60 81 03 02 64 */ lwz r8, 0x264(r3)
/* 80312F04 0030EB64 7C 06 EA 14 */ add r0, r6, r29
/* 80312F08 0030EB68 7C 00 40 40 */ cmplw r0, r8
/* 80312F0C 0030EB6C 40 81 00 A8 */ ble lbl_80312FB4
/* 80312F10 0030EB70 2C 1F 00 00 */ cmpwi r31, 0
/* 80312F14 0030EB74 40 82 00 0C */ bne lbl_80312F20
/* 80312F18 0030EB78 38 80 00 00 */ li r4, 0
/* 80312F1C 0030EB7C 48 00 00 08 */ b lbl_80312F24
lbl_80312F20:
/* 80312F20 0030EB80 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80312F24:
/* 80312F24 0030EB84 A0 64 00 00 */ lhz r3, 0(r4)
/* 80312F28 0030EB88 88 84 00 20 */ lbz r4, 0x20(r4)
/* 80312F2C 0030EB8C 38 03 FF FF */ addi r0, r3, -1
/* 80312F30 0030EB90 7C C7 00 38 */ and r7, r6, r0
/* 80312F34 0030EB94 7C C5 24 30 */ srw r5, r6, r4
/* 80312F38 0030EB98 7D 03 00 38 */ and r3, r8, r0
/* 80312F3C 0030EB9C 7D 04 24 30 */ srw r4, r8, r4
/* 80312F40 0030EBA0 7C C7 00 D0 */ neg r6, r7
/* 80312F44 0030EBA4 7C 03 00 D0 */ neg r0, r3
/* 80312F48 0030EBA8 7C 00 1B 78 */ or r0, r0, r3
/* 80312F4C 0030EBAC 7C C6 3B 78 */ or r6, r6, r7
/* 80312F50 0030EBB0 54 C3 0F FE */ srwi r3, r6, 0x1f
/* 80312F54 0030EBB4 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80312F58 0030EBB8 7C 65 1A 14 */ add r3, r5, r3
/* 80312F5C 0030EBBC 7C 04 02 14 */ add r0, r4, r0
/* 80312F60 0030EBC0 7C 03 00 40 */ cmplw r3, r0
/* 80312F64 0030EBC4 41 82 00 0C */ beq lbl_80312F70
/* 80312F68 0030EBC8 38 00 FF FF */ li r0, -1
/* 80312F6C 0030EBCC 90 1F 00 20 */ stw r0, 0x20(r31)
lbl_80312F70:
/* 80312F70 0030EBD0 2C 1F 00 00 */ cmpwi r31, 0
/* 80312F74 0030EBD4 91 1F 00 1C */ stw r8, 0x1c(r31)
/* 80312F78 0030EBD8 40 82 00 0C */ bne lbl_80312F84
/* 80312F7C 0030EBDC 38 80 00 00 */ li r4, 0
/* 80312F80 0030EBE0 48 00 00 0C */ b lbl_80312F8C
lbl_80312F84:
/* 80312F84 0030EBE4 80 7F 00 08 */ lwz r3, 8(r31)
/* 80312F88 0030EBE8 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80312F8C:
/* 80312F8C 0030EBEC 80 BF 00 1C */ lwz r5, 0x1c(r31)
/* 80312F90 0030EBF0 38 60 00 1B */ li r3, 0x1b
/* 80312F94 0030EBF4 88 04 00 20 */ lbz r0, 0x20(r4)
/* 80312F98 0030EBF8 7C A0 04 30 */ srw r0, r5, r0
/* 80312F9C 0030EBFC 90 1F 00 24 */ stw r0, 0x24(r31)
/* 80312FA0 0030EC00 A0 84 00 00 */ lhz r4, 0(r4)
/* 80312FA4 0030EC04 38 04 FF FF */ addi r0, r4, -1
/* 80312FA8 0030EC08 7C A0 00 38 */ and r0, r5, r0
/* 80312FAC 0030EC0C B0 1F 00 28 */ sth r0, 0x28(r31)
/* 80312FB0 0030EC10 48 00 00 54 */ b lbl_80313004
lbl_80312FB4:
/* 80312FB4 0030EC14 A0 DF 00 28 */ lhz r6, 0x28(r31)
/* 80312FB8 0030EC18 7F 63 DB 78 */ mr r3, r27
/* 80312FBC 0030EC1C 7F 84 E3 78 */ mr r4, r28
/* 80312FC0 0030EC20 7F A7 EB 78 */ mr r7, r29
/* 80312FC4 0030EC24 39 01 00 08 */ addi r8, r1, 8
/* 80312FC8 0030EC28 39 20 00 01 */ li r9, 1
/* 80312FCC 0030EC2C 48 00 5A 5D */ bl VFiPFSEC_ReadData
/* 80312FD0 0030EC30 2C 03 00 00 */ cmpwi r3, 0
/* 80312FD4 0030EC34 41 82 00 14 */ beq lbl_80312FE8
/* 80312FD8 0030EC38 80 01 00 08 */ lwz r0, 8(r1)
/* 80312FDC 0030EC3C 2C 00 00 00 */ cmpwi r0, 0
/* 80312FE0 0030EC40 40 82 00 08 */ bne lbl_80312FE8
/* 80312FE4 0030EC44 48 00 00 20 */ b lbl_80313004
lbl_80312FE8:
/* 80312FE8 0030EC48 80 01 00 08 */ lwz r0, 8(r1)
/* 80312FEC 0030EC4C 7F E3 FB 78 */ mr r3, r31
/* 80312FF0 0030EC50 90 1E 00 00 */ stw r0, 0(r30)
/* 80312FF4 0030EC54 80 81 00 08 */ lwz r4, 8(r1)
/* 80312FF8 0030EC58 80 BF 00 20 */ lwz r5, 0x20(r31)
/* 80312FFC 0030EC5C 4B FF F8 19 */ bl VFiPFFILE_Cursor_AdvanceToRead
/* 80313000 0030EC60 38 60 00 00 */ li r3, 0
lbl_80313004:
/* 80313004 0030EC64 39 61 00 30 */ addi r11, r1, 0x30
/* 80313008 0030EC68 4B EB 41 6D */ bl _restgpr_27
/* 8031300C 0030EC6C 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80313010 0030EC70 7C 08 03 A6 */ mtlr r0
/* 80313014 0030EC74 38 21 00 30 */ addi r1, r1, 0x30
/* 80313018 0030EC78 4E 80 00 20 */ blr
.global VFiPFFILE_Cursor_Read
VFiPFFILE_Cursor_Read:
/* 8031301C 0030EC7C 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80313020 0030EC80 7C 08 02 A6 */ mflr r0
/* 80313024 0030EC84 90 01 00 34 */ stw r0, 0x34(r1)
/* 80313028 0030EC88 39 61 00 30 */ addi r11, r1, 0x30
/* 8031302C 0030EC8C 4B EB 40 FD */ bl _savegpr_27
/* 80313030 0030EC90 80 E3 00 08 */ lwz r7, 8(r3)
/* 80313034 0030EC94 39 03 00 0C */ addi r8, r3, 0xc
/* 80313038 0030EC98 2C 03 00 00 */ cmpwi r3, 0
/* 8031303C 0030EC9C 38 00 00 00 */ li r0, 0
/* 80313040 0030ECA0 91 07 00 34 */ stw r8, 0x34(r7)
/* 80313044 0030ECA4 7C 7C 1B 78 */ mr r28, r3
/* 80313048 0030ECA8 7C 9D 23 78 */ mr r29, r4
/* 8031304C 0030ECAC 7C BE 2B 78 */ mr r30, r5
/* 80313050 0030ECB0 90 06 00 00 */ stw r0, 0(r6)
/* 80313054 0030ECB4 7C DF 33 78 */ mr r31, r6
/* 80313058 0030ECB8 40 82 00 0C */ bne lbl_80313064
/* 8031305C 0030ECBC 3B 60 00 00 */ li r27, 0
/* 80313060 0030ECC0 48 00 00 0C */ b lbl_8031306C
lbl_80313064:
/* 80313064 0030ECC4 80 63 00 08 */ lwz r3, 8(r3)
/* 80313068 0030ECC8 83 63 02 68 */ lwz r27, 0x268(r3)
lbl_8031306C:
/* 8031306C 0030ECCC 7F 63 DB 78 */ mr r3, r27
/* 80313070 0030ECD0 7F 84 E3 78 */ mr r4, r28
/* 80313074 0030ECD4 7F A5 EB 78 */ mr r5, r29
/* 80313078 0030ECD8 7F C6 F3 78 */ mr r6, r30
/* 8031307C 0030ECDC 38 E1 00 08 */ addi r7, r1, 8
/* 80313080 0030ECE0 4B FF F8 B1 */ bl VFiPFFILE_Cursor_ReadHeadSector
/* 80313084 0030ECE4 80 9F 00 00 */ lwz r4, 0(r31)
/* 80313088 0030ECE8 2C 03 00 00 */ cmpwi r3, 0
/* 8031308C 0030ECEC 80 01 00 08 */ lwz r0, 8(r1)
/* 80313090 0030ECF0 7C 04 02 14 */ add r0, r4, r0
/* 80313094 0030ECF4 90 1F 00 00 */ stw r0, 0(r31)
/* 80313098 0030ECF8 41 82 00 08 */ beq lbl_803130A0
/* 8031309C 0030ECFC 48 00 00 B0 */ b lbl_8031314C
lbl_803130A0:
/* 803130A0 0030ED00 80 01 00 08 */ lwz r0, 8(r1)
/* 803130A4 0030ED04 7C 00 F0 40 */ cmplw r0, r30
/* 803130A8 0030ED08 41 80 00 0C */ blt lbl_803130B4
/* 803130AC 0030ED0C 38 60 00 00 */ li r3, 0
/* 803130B0 0030ED10 48 00 00 9C */ b lbl_8031314C
lbl_803130B4:
/* 803130B4 0030ED14 7F C0 F0 50 */ subf r30, r0, r30
/* 803130B8 0030ED18 48 00 00 4C */ b lbl_80313104
lbl_803130BC:
/* 803130BC 0030ED1C 80 1F 00 00 */ lwz r0, 0(r31)
/* 803130C0 0030ED20 7F 63 DB 78 */ mr r3, r27
/* 803130C4 0030ED24 7F 84 E3 78 */ mr r4, r28
/* 803130C8 0030ED28 7F C6 F3 78 */ mr r6, r30
/* 803130CC 0030ED2C 7C BD 02 14 */ add r5, r29, r0
/* 803130D0 0030ED30 38 E1 00 08 */ addi r7, r1, 8
/* 803130D4 0030ED34 4B FF FA F5 */ bl VFiPFFILE_Cursor_ReadBodySectors
/* 803130D8 0030ED38 80 9F 00 00 */ lwz r4, 0(r31)
/* 803130DC 0030ED3C 2C 03 00 00 */ cmpwi r3, 0
/* 803130E0 0030ED40 80 01 00 08 */ lwz r0, 8(r1)
/* 803130E4 0030ED44 7C 04 02 14 */ add r0, r4, r0
/* 803130E8 0030ED48 90 1F 00 00 */ stw r0, 0(r31)
/* 803130EC 0030ED4C 41 82 00 08 */ beq lbl_803130F4
/* 803130F0 0030ED50 48 00 00 5C */ b lbl_8031314C
lbl_803130F4:
/* 803130F4 0030ED54 80 01 00 08 */ lwz r0, 8(r1)
/* 803130F8 0030ED58 2C 00 00 00 */ cmpwi r0, 0
/* 803130FC 0030ED5C 41 82 00 14 */ beq lbl_80313110
/* 80313100 0030ED60 7F C0 F0 50 */ subf r30, r0, r30
lbl_80313104:
/* 80313104 0030ED64 A0 1B 00 00 */ lhz r0, 0(r27)
/* 80313108 0030ED68 7C 1E 00 40 */ cmplw r30, r0
/* 8031310C 0030ED6C 40 80 FF B0 */ bge lbl_803130BC
lbl_80313110:
/* 80313110 0030ED70 80 1F 00 00 */ lwz r0, 0(r31)
/* 80313114 0030ED74 7F 63 DB 78 */ mr r3, r27
/* 80313118 0030ED78 7F 84 E3 78 */ mr r4, r28
/* 8031311C 0030ED7C 7F C6 F3 78 */ mr r6, r30
/* 80313120 0030ED80 7C BD 02 14 */ add r5, r29, r0
/* 80313124 0030ED84 38 E1 00 08 */ addi r7, r1, 8
/* 80313128 0030ED88 4B FF FC 79 */ bl VFiPFFILE_Cursor_ReadTailSector
/* 8031312C 0030ED8C 80 9F 00 00 */ lwz r4, 0(r31)
/* 80313130 0030ED90 2C 03 00 00 */ cmpwi r3, 0
/* 80313134 0030ED94 80 01 00 08 */ lwz r0, 8(r1)
/* 80313138 0030ED98 7C 04 02 14 */ add r0, r4, r0
/* 8031313C 0030ED9C 90 1F 00 00 */ stw r0, 0(r31)
/* 80313140 0030EDA0 41 82 00 08 */ beq lbl_80313148
/* 80313144 0030EDA4 48 00 00 08 */ b lbl_8031314C
lbl_80313148:
/* 80313148 0030EDA8 38 60 00 00 */ li r3, 0
lbl_8031314C:
/* 8031314C 0030EDAC 39 61 00 30 */ addi r11, r1, 0x30
/* 80313150 0030EDB0 4B EB 40 25 */ bl _restgpr_27
/* 80313154 0030EDB4 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80313158 0030EDB8 7C 08 03 A6 */ mtlr r0
/* 8031315C 0030EDBC 38 21 00 30 */ addi r1, r1, 0x30
/* 80313160 0030EDC0 4E 80 00 20 */ blr
.global VFiPFFILE_Cursor_WriteHeadSector
VFiPFFILE_Cursor_WriteHeadSector:
/* 80313164 0030EDC4 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80313168 0030EDC8 7C 08 02 A6 */ mflr r0
/* 8031316C 0030EDCC 90 01 00 34 */ stw r0, 0x34(r1)
/* 80313170 0030EDD0 39 61 00 30 */ addi r11, r1, 0x30
/* 80313174 0030EDD4 4B EB 3F B5 */ bl _savegpr_27
/* 80313178 0030EDD8 38 00 00 00 */ li r0, 0
/* 8031317C 0030EDDC 7C BC 2B 78 */ mr r28, r5
/* 80313180 0030EDE0 90 07 00 00 */ stw r0, 0(r7)
/* 80313184 0030EDE4 7C 7B 1B 78 */ mr r27, r3
/* 80313188 0030EDE8 7C 9F 23 78 */ mr r31, r4
/* 8031318C 0030EDEC 7C DD 33 78 */ mr r29, r6
/* 80313190 0030EDF0 A0 A4 00 28 */ lhz r5, 0x28(r4)
/* 80313194 0030EDF4 7C FE 3B 78 */ mr r30, r7
/* 80313198 0030EDF8 2C 05 00 00 */ cmpwi r5, 0
/* 8031319C 0030EDFC 40 82 00 0C */ bne lbl_803131A8
/* 803131A0 0030EE00 38 60 00 00 */ li r3, 0
/* 803131A4 0030EE04 48 00 02 00 */ b lbl_803133A4
lbl_803131A8:
/* 803131A8 0030EE08 A0 03 00 00 */ lhz r0, 0(r3)
/* 803131AC 0030EE0C 7C 05 00 50 */ subf r0, r5, r0
/* 803131B0 0030EE10 7C 06 00 40 */ cmplw r6, r0
/* 803131B4 0030EE14 40 81 00 08 */ ble lbl_803131BC
/* 803131B8 0030EE18 7C 1D 03 78 */ mr r29, r0
lbl_803131BC:
/* 803131BC 0030EE1C 80 A4 00 20 */ lwz r5, 0x20(r4)
/* 803131C0 0030EE20 3C 05 00 01 */ addis r0, r5, 1
/* 803131C4 0030EE24 28 00 FF FF */ cmplwi r0, 0xffff
/* 803131C8 0030EE28 40 82 00 E8 */ bne lbl_803132B0
/* 803131CC 0030EE2C 80 64 00 08 */ lwz r3, 8(r4)
/* 803131D0 0030EE30 38 DF 00 20 */ addi r6, r31, 0x20
/* 803131D4 0030EE34 80 84 00 24 */ lwz r4, 0x24(r4)
/* 803131D8 0030EE38 38 A0 00 00 */ li r5, 0
/* 803131DC 0030EE3C 38 63 00 04 */ addi r3, r3, 4
/* 803131E0 0030EE40 4B FF CD 89 */ bl VFiPFFAT_GetSectorSpecified
/* 803131E4 0030EE44 2C 03 00 00 */ cmpwi r3, 0
/* 803131E8 0030EE48 41 82 00 08 */ beq lbl_803131F0
/* 803131EC 0030EE4C 48 00 01 B8 */ b lbl_803133A4
lbl_803131F0:
/* 803131F0 0030EE50 80 BF 00 20 */ lwz r5, 0x20(r31)
/* 803131F4 0030EE54 3C 05 00 01 */ addis r0, r5, 1
/* 803131F8 0030EE58 28 00 FF FF */ cmplwi r0, 0xffff
/* 803131FC 0030EE5C 40 82 00 B4 */ bne lbl_803132B0
/* 80313200 0030EE60 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313204 0030EE64 2C 1F 00 00 */ cmpwi r31, 0
/* 80313208 0030EE68 81 03 02 64 */ lwz r8, 0x264(r3)
/* 8031320C 0030EE6C 40 82 00 0C */ bne lbl_80313218
/* 80313210 0030EE70 38 80 00 00 */ li r4, 0
/* 80313214 0030EE74 48 00 00 08 */ b lbl_8031321C
lbl_80313218:
/* 80313218 0030EE78 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_8031321C:
/* 8031321C 0030EE7C A0 64 00 00 */ lhz r3, 0(r4)
/* 80313220 0030EE80 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 80313224 0030EE84 38 63 FF FF */ addi r3, r3, -1
/* 80313228 0030EE88 88 84 00 20 */ lbz r4, 0x20(r4)
/* 8031322C 0030EE8C 7C 07 18 38 */ and r7, r0, r3
/* 80313230 0030EE90 7C 05 24 30 */ srw r5, r0, r4
/* 80313234 0030EE94 7D 03 18 38 */ and r3, r8, r3
/* 80313238 0030EE98 7C C7 00 D0 */ neg r6, r7
/* 8031323C 0030EE9C 7D 04 24 30 */ srw r4, r8, r4
/* 80313240 0030EEA0 7C 03 00 D0 */ neg r0, r3
/* 80313244 0030EEA4 7C 00 1B 78 */ or r0, r0, r3
/* 80313248 0030EEA8 7C C6 3B 78 */ or r6, r6, r7
/* 8031324C 0030EEAC 54 C3 0F FE */ srwi r3, r6, 0x1f
/* 80313250 0030EEB0 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80313254 0030EEB4 7C 65 1A 14 */ add r3, r5, r3
/* 80313258 0030EEB8 7C 04 02 14 */ add r0, r4, r0
/* 8031325C 0030EEBC 7C 03 00 40 */ cmplw r3, r0
/* 80313260 0030EEC0 41 82 00 0C */ beq lbl_8031326C
/* 80313264 0030EEC4 38 00 FF FF */ li r0, -1
/* 80313268 0030EEC8 90 1F 00 20 */ stw r0, 0x20(r31)
lbl_8031326C:
/* 8031326C 0030EECC 2C 1F 00 00 */ cmpwi r31, 0
/* 80313270 0030EED0 91 1F 00 1C */ stw r8, 0x1c(r31)
/* 80313274 0030EED4 40 82 00 0C */ bne lbl_80313280
/* 80313278 0030EED8 38 80 00 00 */ li r4, 0
/* 8031327C 0030EEDC 48 00 00 0C */ b lbl_80313288
lbl_80313280:
/* 80313280 0030EEE0 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313284 0030EEE4 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80313288:
/* 80313288 0030EEE8 80 BF 00 1C */ lwz r5, 0x1c(r31)
/* 8031328C 0030EEEC 38 60 00 1C */ li r3, 0x1c
/* 80313290 0030EEF0 88 04 00 20 */ lbz r0, 0x20(r4)
/* 80313294 0030EEF4 7C A0 04 30 */ srw r0, r5, r0
/* 80313298 0030EEF8 90 1F 00 24 */ stw r0, 0x24(r31)
/* 8031329C 0030EEFC A0 84 00 00 */ lhz r4, 0(r4)
/* 803132A0 0030EF00 38 04 FF FF */ addi r0, r4, -1
/* 803132A4 0030EF04 7C A0 00 38 */ and r0, r5, r0
/* 803132A8 0030EF08 B0 1F 00 28 */ sth r0, 0x28(r31)
/* 803132AC 0030EF0C 48 00 00 F8 */ b lbl_803133A4
lbl_803132B0:
/* 803132B0 0030EF10 A0 DF 00 28 */ lhz r6, 0x28(r31)
/* 803132B4 0030EF14 7F 63 DB 78 */ mr r3, r27
/* 803132B8 0030EF18 7F 84 E3 78 */ mr r4, r28
/* 803132BC 0030EF1C 7F A7 EB 78 */ mr r7, r29
/* 803132C0 0030EF20 39 01 00 08 */ addi r8, r1, 8
/* 803132C4 0030EF24 39 20 00 01 */ li r9, 1
/* 803132C8 0030EF28 48 00 5B 21 */ bl VFiPFSEC_WriteData
/* 803132CC 0030EF2C 2C 03 00 00 */ cmpwi r3, 0
/* 803132D0 0030EF30 41 82 00 14 */ beq lbl_803132E4
/* 803132D4 0030EF34 80 01 00 08 */ lwz r0, 8(r1)
/* 803132D8 0030EF38 2C 00 00 00 */ cmpwi r0, 0
/* 803132DC 0030EF3C 40 82 00 08 */ bne lbl_803132E4
/* 803132E0 0030EF40 48 00 00 C4 */ b lbl_803133A4
lbl_803132E4:
/* 803132E4 0030EF44 80 01 00 08 */ lwz r0, 8(r1)
/* 803132E8 0030EF48 2C 1F 00 00 */ cmpwi r31, 0
/* 803132EC 0030EF4C 90 1E 00 00 */ stw r0, 0(r30)
/* 803132F0 0030EF50 80 DF 00 20 */ lwz r6, 0x20(r31)
/* 803132F4 0030EF54 80 A1 00 08 */ lwz r5, 8(r1)
/* 803132F8 0030EF58 40 82 00 0C */ bne lbl_80313304
/* 803132FC 0030EF5C 38 80 00 00 */ li r4, 0
/* 80313300 0030EF60 48 00 00 0C */ b lbl_8031330C
lbl_80313304:
/* 80313304 0030EF64 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313308 0030EF68 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_8031330C:
/* 8031330C 0030EF6C A0 1F 00 28 */ lhz r0, 0x28(r31)
/* 80313310 0030EF70 A0 64 00 00 */ lhz r3, 0(r4)
/* 80313314 0030EF74 7C E0 2A 14 */ add r7, r0, r5
/* 80313318 0030EF78 88 84 00 20 */ lbz r4, 0x20(r4)
/* 8031331C 0030EF7C 38 03 FF FF */ addi r0, r3, -1
/* 80313320 0030EF80 7C 00 38 39 */ and. r0, r0, r7
/* 80313324 0030EF84 7C E0 24 30 */ srw r0, r7, r4
/* 80313328 0030EF88 7C 86 02 14 */ add r4, r6, r0
/* 8031332C 0030EF8C 41 82 00 0C */ beq lbl_80313338
/* 80313330 0030EF90 90 9F 00 20 */ stw r4, 0x20(r31)
/* 80313334 0030EF94 48 00 00 0C */ b lbl_80313340
lbl_80313338:
/* 80313338 0030EF98 38 00 FF FF */ li r0, -1
/* 8031333C 0030EF9C 90 1F 00 20 */ stw r0, 0x20(r31)
lbl_80313340:
/* 80313340 0030EFA0 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 80313344 0030EFA4 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313348 0030EFA8 7C A0 2A 14 */ add r5, r0, r5
/* 8031334C 0030EFAC 90 BF 00 1C */ stw r5, 0x1c(r31)
/* 80313350 0030EFB0 80 03 02 64 */ lwz r0, 0x264(r3)
/* 80313354 0030EFB4 7C 05 00 40 */ cmplw r5, r0
/* 80313358 0030EFB8 40 81 00 08 */ ble lbl_80313360
/* 8031335C 0030EFBC 90 A3 02 64 */ stw r5, 0x264(r3)
lbl_80313360:
/* 80313360 0030EFC0 2C 1F 00 00 */ cmpwi r31, 0
/* 80313364 0030EFC4 40 82 00 0C */ bne lbl_80313370
/* 80313368 0030EFC8 38 A0 00 00 */ li r5, 0
/* 8031336C 0030EFCC 48 00 00 0C */ b lbl_80313378
lbl_80313370:
/* 80313370 0030EFD0 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313374 0030EFD4 80 A3 02 68 */ lwz r5, 0x268(r3)
lbl_80313378:
/* 80313378 0030EFD8 80 DF 00 1C */ lwz r6, 0x1c(r31)
/* 8031337C 0030EFDC 7F E3 FB 78 */ mr r3, r31
/* 80313380 0030EFE0 88 05 00 20 */ lbz r0, 0x20(r5)
/* 80313384 0030EFE4 7C C0 04 30 */ srw r0, r6, r0
/* 80313388 0030EFE8 90 1F 00 24 */ stw r0, 0x24(r31)
/* 8031338C 0030EFEC A0 A5 00 00 */ lhz r5, 0(r5)
/* 80313390 0030EFF0 38 05 FF FF */ addi r0, r5, -1
/* 80313394 0030EFF4 7C C0 00 38 */ and r0, r6, r0
/* 80313398 0030EFF8 B0 1F 00 28 */ sth r0, 0x28(r31)
/* 8031339C 0030EFFC 4B FF 79 E5 */ bl VFiPFCLUSTER_UpdateLastAccessCluster
/* 803133A0 0030F000 38 60 00 00 */ li r3, 0
lbl_803133A4:
/* 803133A4 0030F004 39 61 00 30 */ addi r11, r1, 0x30
/* 803133A8 0030F008 4B EB 3D CD */ bl _restgpr_27
/* 803133AC 0030F00C 80 01 00 34 */ lwz r0, 0x34(r1)
/* 803133B0 0030F010 7C 08 03 A6 */ mtlr r0
/* 803133B4 0030F014 38 21 00 30 */ addi r1, r1, 0x30
/* 803133B8 0030F018 4E 80 00 20 */ blr
.global VFiPFFILE_Cursor_WriteTailSector
VFiPFFILE_Cursor_WriteTailSector:
/* 803133BC 0030F01C 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 803133C0 0030F020 7C 08 02 A6 */ mflr r0
/* 803133C4 0030F024 90 01 00 34 */ stw r0, 0x34(r1)
/* 803133C8 0030F028 38 00 00 00 */ li r0, 0
/* 803133CC 0030F02C 93 E1 00 2C */ stw r31, 0x2c(r1)
/* 803133D0 0030F030 7C 9F 23 78 */ mr r31, r4
/* 803133D4 0030F034 93 C1 00 28 */ stw r30, 0x28(r1)
/* 803133D8 0030F038 7D 1E 43 78 */ mr r30, r8
/* 803133DC 0030F03C 93 A1 00 24 */ stw r29, 0x24(r1)
/* 803133E0 0030F040 7C BD 2B 78 */ mr r29, r5
/* 803133E4 0030F044 93 81 00 20 */ stw r28, 0x20(r1)
/* 803133E8 0030F048 7C 7C 1B 78 */ mr r28, r3
/* 803133EC 0030F04C 90 C1 00 08 */ stw r6, 8(r1)
/* 803133F0 0030F050 90 08 00 00 */ stw r0, 0(r8)
/* 803133F4 0030F054 80 A1 00 08 */ lwz r5, 8(r1)
/* 803133F8 0030F058 2C 05 00 00 */ cmpwi r5, 0
/* 803133FC 0030F05C 40 82 00 0C */ bne lbl_80313408
/* 80313400 0030F060 38 60 00 00 */ li r3, 0
/* 80313404 0030F064 48 00 02 5C */ b lbl_80313660
lbl_80313408:
/* 80313408 0030F068 A0 63 00 00 */ lhz r3, 0(r3)
/* 8031340C 0030F06C A0 04 00 28 */ lhz r0, 0x28(r4)
/* 80313410 0030F070 7C 00 18 50 */ subf r0, r0, r3
/* 80313414 0030F074 7C 05 00 40 */ cmplw r5, r0
/* 80313418 0030F078 41 81 00 0C */ bgt lbl_80313424
/* 8031341C 0030F07C 7C 05 18 40 */ cmplw r5, r3
/* 80313420 0030F080 40 81 00 0C */ ble lbl_8031342C
lbl_80313424:
/* 80313424 0030F084 38 60 00 1A */ li r3, 0x1a
/* 80313428 0030F088 48 00 02 38 */ b lbl_80313660
lbl_8031342C:
/* 8031342C 0030F08C 2C 07 00 00 */ cmpwi r7, 0
/* 80313430 0030F090 41 82 00 44 */ beq lbl_80313474
/* 80313434 0030F094 7F E3 FB 78 */ mr r3, r31
/* 80313438 0030F098 7C E4 3B 78 */ mr r4, r7
/* 8031343C 0030F09C 38 A1 00 08 */ addi r5, r1, 8
/* 80313440 0030F0A0 38 C1 00 10 */ addi r6, r1, 0x10
/* 80313444 0030F0A4 4B FF 7A 11 */ bl VFiPFCLUSTER_AppendCluster
/* 80313448 0030F0A8 2C 03 00 00 */ cmpwi r3, 0
/* 8031344C 0030F0AC 41 82 00 08 */ beq lbl_80313454
/* 80313450 0030F0B0 48 00 02 10 */ b lbl_80313660
lbl_80313454:
/* 80313454 0030F0B4 80 01 00 08 */ lwz r0, 8(r1)
/* 80313458 0030F0B8 2C 00 00 00 */ cmpwi r0, 0
/* 8031345C 0030F0BC 40 82 00 0C */ bne lbl_80313468
/* 80313460 0030F0C0 38 60 00 00 */ li r3, 0
/* 80313464 0030F0C4 48 00 01 FC */ b lbl_80313660
lbl_80313468:
/* 80313468 0030F0C8 80 01 00 10 */ lwz r0, 0x10(r1)
/* 8031346C 0030F0CC 90 1F 00 20 */ stw r0, 0x20(r31)
/* 80313470 0030F0D0 48 00 00 F8 */ b lbl_80313568
lbl_80313474:
/* 80313474 0030F0D4 80 64 00 20 */ lwz r3, 0x20(r4)
/* 80313478 0030F0D8 3C 03 00 01 */ addis r0, r3, 1
/* 8031347C 0030F0DC 28 00 FF FF */ cmplwi r0, 0xffff
/* 80313480 0030F0E0 40 82 00 E8 */ bne lbl_80313568
/* 80313484 0030F0E4 80 64 00 08 */ lwz r3, 8(r4)
/* 80313488 0030F0E8 38 DF 00 20 */ addi r6, r31, 0x20
/* 8031348C 0030F0EC 80 84 00 24 */ lwz r4, 0x24(r4)
/* 80313490 0030F0F0 38 A0 00 00 */ li r5, 0
/* 80313494 0030F0F4 38 63 00 04 */ addi r3, r3, 4
/* 80313498 0030F0F8 4B FF CA D1 */ bl VFiPFFAT_GetSectorSpecified
/* 8031349C 0030F0FC 2C 03 00 00 */ cmpwi r3, 0
/* 803134A0 0030F100 41 82 00 08 */ beq lbl_803134A8
/* 803134A4 0030F104 48 00 01 BC */ b lbl_80313660
lbl_803134A8:
/* 803134A8 0030F108 80 7F 00 20 */ lwz r3, 0x20(r31)
/* 803134AC 0030F10C 3C 03 00 01 */ addis r0, r3, 1
/* 803134B0 0030F110 28 00 FF FF */ cmplwi r0, 0xffff
/* 803134B4 0030F114 40 82 00 B4 */ bne lbl_80313568
/* 803134B8 0030F118 80 7F 00 08 */ lwz r3, 8(r31)
/* 803134BC 0030F11C 2C 1F 00 00 */ cmpwi r31, 0
/* 803134C0 0030F120 81 03 02 64 */ lwz r8, 0x264(r3)
/* 803134C4 0030F124 40 82 00 0C */ bne lbl_803134D0
/* 803134C8 0030F128 38 80 00 00 */ li r4, 0
/* 803134CC 0030F12C 48 00 00 08 */ b lbl_803134D4
lbl_803134D0:
/* 803134D0 0030F130 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_803134D4:
/* 803134D4 0030F134 A0 64 00 00 */ lhz r3, 0(r4)
/* 803134D8 0030F138 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 803134DC 0030F13C 38 63 FF FF */ addi r3, r3, -1
/* 803134E0 0030F140 88 84 00 20 */ lbz r4, 0x20(r4)
/* 803134E4 0030F144 7C 07 18 38 */ and r7, r0, r3
/* 803134E8 0030F148 7C 05 24 30 */ srw r5, r0, r4
/* 803134EC 0030F14C 7D 03 18 38 */ and r3, r8, r3
/* 803134F0 0030F150 7C C7 00 D0 */ neg r6, r7
/* 803134F4 0030F154 7D 04 24 30 */ srw r4, r8, r4
/* 803134F8 0030F158 7C 03 00 D0 */ neg r0, r3
/* 803134FC 0030F15C 7C 00 1B 78 */ or r0, r0, r3
/* 80313500 0030F160 7C C6 3B 78 */ or r6, r6, r7
/* 80313504 0030F164 54 C3 0F FE */ srwi r3, r6, 0x1f
/* 80313508 0030F168 54 00 0F FE */ srwi r0, r0, 0x1f
/* 8031350C 0030F16C 7C 65 1A 14 */ add r3, r5, r3
/* 80313510 0030F170 7C 04 02 14 */ add r0, r4, r0
/* 80313514 0030F174 7C 03 00 40 */ cmplw r3, r0
/* 80313518 0030F178 41 82 00 0C */ beq lbl_80313524
/* 8031351C 0030F17C 38 00 FF FF */ li r0, -1
/* 80313520 0030F180 90 1F 00 20 */ stw r0, 0x20(r31)
lbl_80313524:
/* 80313524 0030F184 2C 1F 00 00 */ cmpwi r31, 0
/* 80313528 0030F188 91 1F 00 1C */ stw r8, 0x1c(r31)
/* 8031352C 0030F18C 40 82 00 0C */ bne lbl_80313538
/* 80313530 0030F190 38 80 00 00 */ li r4, 0
/* 80313534 0030F194 48 00 00 0C */ b lbl_80313540
lbl_80313538:
/* 80313538 0030F198 80 7F 00 08 */ lwz r3, 8(r31)
/* 8031353C 0030F19C 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80313540:
/* 80313540 0030F1A0 80 BF 00 1C */ lwz r5, 0x1c(r31)
/* 80313544 0030F1A4 38 60 00 1C */ li r3, 0x1c
/* 80313548 0030F1A8 88 04 00 20 */ lbz r0, 0x20(r4)
/* 8031354C 0030F1AC 7C A0 04 30 */ srw r0, r5, r0
/* 80313550 0030F1B0 90 1F 00 24 */ stw r0, 0x24(r31)
/* 80313554 0030F1B4 A0 84 00 00 */ lhz r4, 0(r4)
/* 80313558 0030F1B8 38 04 FF FF */ addi r0, r4, -1
/* 8031355C 0030F1BC 7C A0 00 38 */ and r0, r5, r0
/* 80313560 0030F1C0 B0 1F 00 28 */ sth r0, 0x28(r31)
/* 80313564 0030F1C4 48 00 00 FC */ b lbl_80313660
lbl_80313568:
/* 80313568 0030F1C8 80 BF 00 20 */ lwz r5, 0x20(r31)
/* 8031356C 0030F1CC 7F 83 E3 78 */ mr r3, r28
/* 80313570 0030F1D0 A0 DF 00 28 */ lhz r6, 0x28(r31)
/* 80313574 0030F1D4 7F A4 EB 78 */ mr r4, r29
/* 80313578 0030F1D8 80 E1 00 08 */ lwz r7, 8(r1)
/* 8031357C 0030F1DC 39 01 00 0C */ addi r8, r1, 0xc
/* 80313580 0030F1E0 39 20 00 01 */ li r9, 1
/* 80313584 0030F1E4 48 00 58 65 */ bl VFiPFSEC_WriteData
/* 80313588 0030F1E8 2C 03 00 00 */ cmpwi r3, 0
/* 8031358C 0030F1EC 41 82 00 14 */ beq lbl_803135A0
/* 80313590 0030F1F0 80 01 00 0C */ lwz r0, 0xc(r1)
/* 80313594 0030F1F4 2C 00 00 00 */ cmpwi r0, 0
/* 80313598 0030F1F8 40 82 00 08 */ bne lbl_803135A0
/* 8031359C 0030F1FC 48 00 00 C4 */ b lbl_80313660
lbl_803135A0:
/* 803135A0 0030F200 80 01 00 0C */ lwz r0, 0xc(r1)
/* 803135A4 0030F204 2C 1F 00 00 */ cmpwi r31, 0
/* 803135A8 0030F208 90 1E 00 00 */ stw r0, 0(r30)
/* 803135AC 0030F20C 80 DF 00 20 */ lwz r6, 0x20(r31)
/* 803135B0 0030F210 80 A1 00 0C */ lwz r5, 0xc(r1)
/* 803135B4 0030F214 40 82 00 0C */ bne lbl_803135C0
/* 803135B8 0030F218 38 80 00 00 */ li r4, 0
/* 803135BC 0030F21C 48 00 00 0C */ b lbl_803135C8
lbl_803135C0:
/* 803135C0 0030F220 80 7F 00 08 */ lwz r3, 8(r31)
/* 803135C4 0030F224 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_803135C8:
/* 803135C8 0030F228 A0 1F 00 28 */ lhz r0, 0x28(r31)
/* 803135CC 0030F22C A0 64 00 00 */ lhz r3, 0(r4)
/* 803135D0 0030F230 7C E0 2A 14 */ add r7, r0, r5
/* 803135D4 0030F234 88 84 00 20 */ lbz r4, 0x20(r4)
/* 803135D8 0030F238 38 03 FF FF */ addi r0, r3, -1
/* 803135DC 0030F23C 7C 00 38 39 */ and. r0, r0, r7
/* 803135E0 0030F240 7C E0 24 30 */ srw r0, r7, r4
/* 803135E4 0030F244 7C 86 02 14 */ add r4, r6, r0
/* 803135E8 0030F248 41 82 00 0C */ beq lbl_803135F4
/* 803135EC 0030F24C 90 9F 00 20 */ stw r4, 0x20(r31)
/* 803135F0 0030F250 48 00 00 0C */ b lbl_803135FC
lbl_803135F4:
/* 803135F4 0030F254 38 00 FF FF */ li r0, -1
/* 803135F8 0030F258 90 1F 00 20 */ stw r0, 0x20(r31)
lbl_803135FC:
/* 803135FC 0030F25C 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 80313600 0030F260 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313604 0030F264 7C A0 2A 14 */ add r5, r0, r5
/* 80313608 0030F268 90 BF 00 1C */ stw r5, 0x1c(r31)
/* 8031360C 0030F26C 80 03 02 64 */ lwz r0, 0x264(r3)
/* 80313610 0030F270 7C 05 00 40 */ cmplw r5, r0
/* 80313614 0030F274 40 81 00 08 */ ble lbl_8031361C
/* 80313618 0030F278 90 A3 02 64 */ stw r5, 0x264(r3)
lbl_8031361C:
/* 8031361C 0030F27C 2C 1F 00 00 */ cmpwi r31, 0
/* 80313620 0030F280 40 82 00 0C */ bne lbl_8031362C
/* 80313624 0030F284 38 A0 00 00 */ li r5, 0
/* 80313628 0030F288 48 00 00 0C */ b lbl_80313634
lbl_8031362C:
/* 8031362C 0030F28C 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313630 0030F290 80 A3 02 68 */ lwz r5, 0x268(r3)
lbl_80313634:
/* 80313634 0030F294 80 DF 00 1C */ lwz r6, 0x1c(r31)
/* 80313638 0030F298 7F E3 FB 78 */ mr r3, r31
/* 8031363C 0030F29C 88 05 00 20 */ lbz r0, 0x20(r5)
/* 80313640 0030F2A0 7C C0 04 30 */ srw r0, r6, r0
/* 80313644 0030F2A4 90 1F 00 24 */ stw r0, 0x24(r31)
/* 80313648 0030F2A8 A0 A5 00 00 */ lhz r5, 0(r5)
/* 8031364C 0030F2AC 38 05 FF FF */ addi r0, r5, -1
/* 80313650 0030F2B0 7C C0 00 38 */ and r0, r6, r0
/* 80313654 0030F2B4 B0 1F 00 28 */ sth r0, 0x28(r31)
/* 80313658 0030F2B8 4B FF 77 29 */ bl VFiPFCLUSTER_UpdateLastAccessCluster
/* 8031365C 0030F2BC 38 60 00 00 */ li r3, 0
lbl_80313660:
/* 80313660 0030F2C0 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80313664 0030F2C4 83 E1 00 2C */ lwz r31, 0x2c(r1)
/* 80313668 0030F2C8 83 C1 00 28 */ lwz r30, 0x28(r1)
/* 8031366C 0030F2CC 83 A1 00 24 */ lwz r29, 0x24(r1)
/* 80313670 0030F2D0 83 81 00 20 */ lwz r28, 0x20(r1)
/* 80313674 0030F2D4 7C 08 03 A6 */ mtlr r0
/* 80313678 0030F2D8 38 21 00 30 */ addi r1, r1, 0x30
/* 8031367C 0030F2DC 4E 80 00 20 */ blr
.global VFiPFFILE_Cursor_Write_Overwrite
VFiPFFILE_Cursor_Write_Overwrite:
/* 80313680 0030F2E0 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80313684 0030F2E4 7C 08 02 A6 */ mflr r0
/* 80313688 0030F2E8 90 01 00 34 */ stw r0, 0x34(r1)
/* 8031368C 0030F2EC 39 61 00 30 */ addi r11, r1, 0x30
/* 80313690 0030F2F0 4B EB 3A 99 */ bl _savegpr_27
/* 80313694 0030F2F4 38 00 00 00 */ li r0, 0
/* 80313698 0030F2F8 7C DF 33 78 */ mr r31, r6
/* 8031369C 0030F2FC 90 07 00 00 */ stw r0, 0(r7)
/* 803136A0 0030F300 7C BC 2B 78 */ mr r28, r5
/* 803136A4 0030F304 7C FE 3B 78 */ mr r30, r7
/* 803136A8 0030F308 7C 9D 23 78 */ mr r29, r4
/* 803136AC 0030F30C 80 C4 00 08 */ lwz r6, 8(r4)
/* 803136B0 0030F310 7C 7B 1B 78 */ mr r27, r3
/* 803136B4 0030F314 80 84 00 24 */ lwz r4, 0x24(r4)
/* 803136B8 0030F318 7F E5 FB 78 */ mr r5, r31
/* 803136BC 0030F31C 38 66 00 04 */ addi r3, r6, 4
/* 803136C0 0030F320 38 DD 00 20 */ addi r6, r29, 0x20
/* 803136C4 0030F324 38 E1 00 0C */ addi r7, r1, 0xc
/* 803136C8 0030F328 4B FF CA 4D */ bl VFiPFFAT_GetContinuousSector
/* 803136CC 0030F32C 2C 03 00 00 */ cmpwi r3, 0
/* 803136D0 0030F330 41 82 00 08 */ beq lbl_803136D8
/* 803136D4 0030F334 48 00 01 EC */ b lbl_803138C0
lbl_803136D8:
/* 803136D8 0030F338 80 61 00 0C */ lwz r3, 0xc(r1)
/* 803136DC 0030F33C 2C 03 00 00 */ cmpwi r3, 0
/* 803136E0 0030F340 41 82 00 14 */ beq lbl_803136F4
/* 803136E4 0030F344 80 BD 00 20 */ lwz r5, 0x20(r29)
/* 803136E8 0030F348 3C 05 00 01 */ addis r0, r5, 1
/* 803136EC 0030F34C 28 00 FF FF */ cmplwi r0, 0xffff
/* 803136F0 0030F350 40 82 00 B4 */ bne lbl_803137A4
lbl_803136F4:
/* 803136F4 0030F354 80 7D 00 08 */ lwz r3, 8(r29)
/* 803136F8 0030F358 2C 1D 00 00 */ cmpwi r29, 0
/* 803136FC 0030F35C 81 03 02 64 */ lwz r8, 0x264(r3)
/* 80313700 0030F360 40 82 00 0C */ bne lbl_8031370C
/* 80313704 0030F364 38 80 00 00 */ li r4, 0
/* 80313708 0030F368 48 00 00 08 */ b lbl_80313710
lbl_8031370C:
/* 8031370C 0030F36C 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80313710:
/* 80313710 0030F370 A0 64 00 00 */ lhz r3, 0(r4)
/* 80313714 0030F374 80 1D 00 1C */ lwz r0, 0x1c(r29)
/* 80313718 0030F378 38 63 FF FF */ addi r3, r3, -1
/* 8031371C 0030F37C 88 84 00 20 */ lbz r4, 0x20(r4)
/* 80313720 0030F380 7C 07 18 38 */ and r7, r0, r3
/* 80313724 0030F384 7C 05 24 30 */ srw r5, r0, r4
/* 80313728 0030F388 7D 03 18 38 */ and r3, r8, r3
/* 8031372C 0030F38C 7C C7 00 D0 */ neg r6, r7
/* 80313730 0030F390 7D 04 24 30 */ srw r4, r8, r4
/* 80313734 0030F394 7C 03 00 D0 */ neg r0, r3
/* 80313738 0030F398 7C 00 1B 78 */ or r0, r0, r3
/* 8031373C 0030F39C 7C C6 3B 78 */ or r6, r6, r7
/* 80313740 0030F3A0 54 C3 0F FE */ srwi r3, r6, 0x1f
/* 80313744 0030F3A4 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80313748 0030F3A8 7C 65 1A 14 */ add r3, r5, r3
/* 8031374C 0030F3AC 7C 04 02 14 */ add r0, r4, r0
/* 80313750 0030F3B0 7C 03 00 40 */ cmplw r3, r0
/* 80313754 0030F3B4 41 82 00 0C */ beq lbl_80313760
/* 80313758 0030F3B8 38 00 FF FF */ li r0, -1
/* 8031375C 0030F3BC 90 1D 00 20 */ stw r0, 0x20(r29)
lbl_80313760:
/* 80313760 0030F3C0 2C 1D 00 00 */ cmpwi r29, 0
/* 80313764 0030F3C4 91 1D 00 1C */ stw r8, 0x1c(r29)
/* 80313768 0030F3C8 40 82 00 0C */ bne lbl_80313774
/* 8031376C 0030F3CC 38 80 00 00 */ li r4, 0
/* 80313770 0030F3D0 48 00 00 0C */ b lbl_8031377C
lbl_80313774:
/* 80313774 0030F3D4 80 7D 00 08 */ lwz r3, 8(r29)
/* 80313778 0030F3D8 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_8031377C:
/* 8031377C 0030F3DC 80 BD 00 1C */ lwz r5, 0x1c(r29)
/* 80313780 0030F3E0 38 60 00 1C */ li r3, 0x1c
/* 80313784 0030F3E4 88 04 00 20 */ lbz r0, 0x20(r4)
/* 80313788 0030F3E8 7C A0 04 30 */ srw r0, r5, r0
/* 8031378C 0030F3EC 90 1D 00 24 */ stw r0, 0x24(r29)
/* 80313790 0030F3F0 A0 84 00 00 */ lhz r4, 0(r4)
/* 80313794 0030F3F4 38 04 FF FF */ addi r0, r4, -1
/* 80313798 0030F3F8 7C A0 00 38 */ and r0, r5, r0
/* 8031379C 0030F3FC B0 1D 00 28 */ sth r0, 0x28(r29)
/* 803137A0 0030F400 48 00 01 20 */ b lbl_803138C0
lbl_803137A4:
/* 803137A4 0030F404 88 1B 00 20 */ lbz r0, 0x20(r27)
/* 803137A8 0030F408 7C 60 00 30 */ slw r0, r3, r0
/* 803137AC 0030F40C 7C 1F 00 40 */ cmplw r31, r0
/* 803137B0 0030F410 40 81 00 08 */ ble lbl_803137B8
/* 803137B4 0030F414 7C 1F 03 78 */ mr r31, r0
lbl_803137B8:
/* 803137B8 0030F418 80 1E 00 00 */ lwz r0, 0(r30)
/* 803137BC 0030F41C 7F E7 FB 78 */ mr r7, r31
/* 803137C0 0030F420 A0 DD 00 28 */ lhz r6, 0x28(r29)
/* 803137C4 0030F424 7F 63 DB 78 */ mr r3, r27
/* 803137C8 0030F428 7C 9C 02 14 */ add r4, r28, r0
/* 803137CC 0030F42C 39 01 00 08 */ addi r8, r1, 8
/* 803137D0 0030F430 3B E0 00 00 */ li r31, 0
/* 803137D4 0030F434 39 20 00 01 */ li r9, 1
/* 803137D8 0030F438 48 00 56 11 */ bl VFiPFSEC_WriteData
/* 803137DC 0030F43C 2C 03 00 00 */ cmpwi r3, 0
/* 803137E0 0030F440 41 82 00 14 */ beq lbl_803137F4
/* 803137E4 0030F444 80 01 00 08 */ lwz r0, 8(r1)
/* 803137E8 0030F448 2C 00 00 00 */ cmpwi r0, 0
/* 803137EC 0030F44C 40 82 00 08 */ bne lbl_803137F4
/* 803137F0 0030F450 48 00 00 BC */ b lbl_803138AC
lbl_803137F4:
/* 803137F4 0030F454 2C 1D 00 00 */ cmpwi r29, 0
/* 803137F8 0030F458 83 E1 00 08 */ lwz r31, 8(r1)
/* 803137FC 0030F45C 80 BD 00 20 */ lwz r5, 0x20(r29)
/* 80313800 0030F460 40 82 00 0C */ bne lbl_8031380C
/* 80313804 0030F464 38 80 00 00 */ li r4, 0
/* 80313808 0030F468 48 00 00 0C */ b lbl_80313814
lbl_8031380C:
/* 8031380C 0030F46C 80 7D 00 08 */ lwz r3, 8(r29)
/* 80313810 0030F470 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80313814:
/* 80313814 0030F474 A0 1D 00 28 */ lhz r0, 0x28(r29)
/* 80313818 0030F478 A0 64 00 00 */ lhz r3, 0(r4)
/* 8031381C 0030F47C 7C C0 FA 14 */ add r6, r0, r31
/* 80313820 0030F480 88 84 00 20 */ lbz r4, 0x20(r4)
/* 80313824 0030F484 38 03 FF FF */ addi r0, r3, -1
/* 80313828 0030F488 7C 00 30 39 */ and. r0, r0, r6
/* 8031382C 0030F48C 7C C0 24 30 */ srw r0, r6, r4
/* 80313830 0030F490 7C 85 02 14 */ add r4, r5, r0
/* 80313834 0030F494 41 82 00 0C */ beq lbl_80313840
/* 80313838 0030F498 90 9D 00 20 */ stw r4, 0x20(r29)
/* 8031383C 0030F49C 48 00 00 0C */ b lbl_80313848
lbl_80313840:
/* 80313840 0030F4A0 38 00 FF FF */ li r0, -1
/* 80313844 0030F4A4 90 1D 00 20 */ stw r0, 0x20(r29)
lbl_80313848:
/* 80313848 0030F4A8 80 1D 00 1C */ lwz r0, 0x1c(r29)
/* 8031384C 0030F4AC 80 7D 00 08 */ lwz r3, 8(r29)
/* 80313850 0030F4B0 7C A0 FA 14 */ add r5, r0, r31
/* 80313854 0030F4B4 90 BD 00 1C */ stw r5, 0x1c(r29)
/* 80313858 0030F4B8 80 03 02 64 */ lwz r0, 0x264(r3)
/* 8031385C 0030F4BC 7C 05 00 40 */ cmplw r5, r0
/* 80313860 0030F4C0 40 81 00 08 */ ble lbl_80313868
/* 80313864 0030F4C4 90 A3 02 64 */ stw r5, 0x264(r3)
lbl_80313868:
/* 80313868 0030F4C8 2C 1D 00 00 */ cmpwi r29, 0
/* 8031386C 0030F4CC 40 82 00 0C */ bne lbl_80313878
/* 80313870 0030F4D0 38 A0 00 00 */ li r5, 0
/* 80313874 0030F4D4 48 00 00 0C */ b lbl_80313880
lbl_80313878:
/* 80313878 0030F4D8 80 7D 00 08 */ lwz r3, 8(r29)
/* 8031387C 0030F4DC 80 A3 02 68 */ lwz r5, 0x268(r3)
lbl_80313880:
/* 80313880 0030F4E0 80 DD 00 1C */ lwz r6, 0x1c(r29)
/* 80313884 0030F4E4 7F A3 EB 78 */ mr r3, r29
/* 80313888 0030F4E8 88 05 00 20 */ lbz r0, 0x20(r5)
/* 8031388C 0030F4EC 7C C0 04 30 */ srw r0, r6, r0
/* 80313890 0030F4F0 90 1D 00 24 */ stw r0, 0x24(r29)
/* 80313894 0030F4F4 A0 A5 00 00 */ lhz r5, 0(r5)
/* 80313898 0030F4F8 38 05 FF FF */ addi r0, r5, -1
/* 8031389C 0030F4FC 7C C0 00 38 */ and r0, r6, r0
/* 803138A0 0030F500 B0 1D 00 28 */ sth r0, 0x28(r29)
/* 803138A4 0030F504 4B FF 74 DD */ bl VFiPFCLUSTER_UpdateLastAccessCluster
/* 803138A8 0030F508 38 60 00 00 */ li r3, 0
lbl_803138AC:
/* 803138AC 0030F50C 2C 03 00 00 */ cmpwi r3, 0
/* 803138B0 0030F510 93 FE 00 00 */ stw r31, 0(r30)
/* 803138B4 0030F514 41 82 00 08 */ beq lbl_803138BC
/* 803138B8 0030F518 48 00 00 08 */ b lbl_803138C0
lbl_803138BC:
/* 803138BC 0030F51C 38 60 00 00 */ li r3, 0
lbl_803138C0:
/* 803138C0 0030F520 39 61 00 30 */ addi r11, r1, 0x30
/* 803138C4 0030F524 4B EB 38 B1 */ bl _restgpr_27
/* 803138C8 0030F528 80 01 00 34 */ lwz r0, 0x34(r1)
/* 803138CC 0030F52C 7C 08 03 A6 */ mtlr r0
/* 803138D0 0030F530 38 21 00 30 */ addi r1, r1, 0x30
/* 803138D4 0030F534 4E 80 00 20 */ blr
.global VFiPFFILE_Cursor_Write
VFiPFFILE_Cursor_Write:
/* 803138D8 0030F538 94 21 FF B0 */ stwu r1, -0x50(r1)
/* 803138DC 0030F53C 7C 08 02 A6 */ mflr r0
/* 803138E0 0030F540 90 01 00 54 */ stw r0, 0x54(r1)
/* 803138E4 0030F544 39 61 00 50 */ addi r11, r1, 0x50
/* 803138E8 0030F548 4B EB 38 2D */ bl _savegpr_22
/* 803138EC 0030F54C 80 E3 00 08 */ lwz r7, 8(r3)
/* 803138F0 0030F550 39 03 00 0C */ addi r8, r3, 0xc
/* 803138F4 0030F554 38 00 00 00 */ li r0, 0
/* 803138F8 0030F558 7C D9 33 78 */ mr r25, r6
/* 803138FC 0030F55C 91 07 00 34 */ stw r8, 0x34(r7)
/* 80313900 0030F560 7C 76 1B 78 */ mr r22, r3
/* 80313904 0030F564 7C 97 23 78 */ mr r23, r4
/* 80313908 0030F568 7C B8 2B 78 */ mr r24, r5
/* 8031390C 0030F56C 90 06 00 00 */ stw r0, 0(r6)
/* 80313910 0030F570 80 03 00 1C */ lwz r0, 0x1c(r3)
/* 80313914 0030F574 20 C0 FF FF */ subfic r6, r0, -1
/* 80313918 0030F578 7C 06 28 40 */ cmplw r6, r5
/* 8031391C 0030F57C 40 80 00 28 */ bge lbl_80313944
/* 80313920 0030F580 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80313924 0030F584 38 00 00 25 */ li r0, 0x25
/* 80313928 0030F588 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 8031392C 0030F58C 7C D8 33 78 */ mr r24, r6
/* 80313930 0030F590 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80313934 0030F594 80 83 00 08 */ lwz r4, 8(r3)
/* 80313938 0030F598 80 84 00 38 */ lwz r4, 0x38(r4)
/* 8031393C 0030F59C 90 04 18 6C */ stw r0, 0x186c(r4)
/* 80313940 0030F5A0 90 03 00 18 */ stw r0, 0x18(r3)
lbl_80313944:
/* 80313944 0030F5A4 2C 03 00 00 */ cmpwi r3, 0
/* 80313948 0030F5A8 40 82 00 0C */ bne lbl_80313954
/* 8031394C 0030F5AC 3B A0 00 00 */ li r29, 0
/* 80313950 0030F5B0 48 00 00 0C */ b lbl_8031395C
lbl_80313954:
/* 80313954 0030F5B4 80 63 00 08 */ lwz r3, 8(r3)
/* 80313958 0030F5B8 83 A3 02 68 */ lwz r29, 0x268(r3)
lbl_8031395C:
/* 8031395C 0030F5BC 7F A3 EB 78 */ mr r3, r29
/* 80313960 0030F5C0 7E C4 B3 78 */ mr r4, r22
/* 80313964 0030F5C4 7E E5 BB 78 */ mr r5, r23
/* 80313968 0030F5C8 7F 06 C3 78 */ mr r6, r24
/* 8031396C 0030F5CC 38 E1 00 18 */ addi r7, r1, 0x18
/* 80313970 0030F5D0 4B FF F7 F5 */ bl VFiPFFILE_Cursor_WriteHeadSector
/* 80313974 0030F5D4 80 99 00 00 */ lwz r4, 0(r25)
/* 80313978 0030F5D8 2C 03 00 00 */ cmpwi r3, 0
/* 8031397C 0030F5DC 80 01 00 18 */ lwz r0, 0x18(r1)
/* 80313980 0030F5E0 7C 04 02 14 */ add r0, r4, r0
/* 80313984 0030F5E4 90 19 00 00 */ stw r0, 0(r25)
/* 80313988 0030F5E8 41 82 00 08 */ beq lbl_80313990
/* 8031398C 0030F5EC 48 00 02 C4 */ b lbl_80313C50
lbl_80313990:
/* 80313990 0030F5F0 80 01 00 18 */ lwz r0, 0x18(r1)
/* 80313994 0030F5F4 7C 00 C0 40 */ cmplw r0, r24
/* 80313998 0030F5F8 41 80 00 0C */ blt lbl_803139A4
/* 8031399C 0030F5FC 38 60 00 00 */ li r3, 0
/* 803139A0 0030F600 48 00 02 B0 */ b lbl_80313C50
lbl_803139A4:
/* 803139A4 0030F604 80 76 00 08 */ lwz r3, 8(r22)
/* 803139A8 0030F608 7F 00 C0 50 */ subf r24, r0, r24
/* 803139AC 0030F60C 80 16 00 1C */ lwz r0, 0x1c(r22)
/* 803139B0 0030F610 38 A1 00 14 */ addi r5, r1, 0x14
/* 803139B4 0030F614 38 63 00 04 */ addi r3, r3, 4
/* 803139B8 0030F618 7C 80 C2 14 */ add r4, r0, r24
/* 803139BC 0030F61C 4B FF C9 15 */ bl VFiPFFAT_CountAllocatedClusters
/* 803139C0 0030F620 2C 03 00 00 */ cmpwi r3, 0
/* 803139C4 0030F624 41 82 00 08 */ beq lbl_803139CC
/* 803139C8 0030F628 48 00 02 88 */ b lbl_80313C50
lbl_803139CC:
/* 803139CC 0030F62C 88 9D 00 20 */ lbz r4, 0x20(r29)
/* 803139D0 0030F630 88 7D 00 21 */ lbz r3, 0x21(r29)
/* 803139D4 0030F634 80 16 00 1C */ lwz r0, 0x1c(r22)
/* 803139D8 0030F638 7C 64 1A 14 */ add r3, r4, r3
/* 803139DC 0030F63C 80 A1 00 14 */ lwz r5, 0x14(r1)
/* 803139E0 0030F640 7C 80 C2 14 */ add r4, r0, r24
/* 803139E4 0030F644 7C A0 18 30 */ slw r0, r5, r3
/* 803139E8 0030F648 7C 04 00 40 */ cmplw r4, r0
/* 803139EC 0030F64C 40 81 00 10 */ ble lbl_803139FC
/* 803139F0 0030F650 7F 40 20 50 */ subf r26, r0, r4
/* 803139F4 0030F654 7F 7A C0 50 */ subf r27, r26, r24
/* 803139F8 0030F658 48 00 00 54 */ b lbl_80313A4C
lbl_803139FC:
/* 803139FC 0030F65C 7F 1B C3 78 */ mr r27, r24
/* 80313A00 0030F660 3B 40 00 00 */ li r26, 0
/* 80313A04 0030F664 48 00 00 48 */ b lbl_80313A4C
lbl_80313A08:
/* 80313A08 0030F668 80 19 00 00 */ lwz r0, 0(r25)
/* 80313A0C 0030F66C 7F A3 EB 78 */ mr r3, r29
/* 80313A10 0030F670 7E C4 B3 78 */ mr r4, r22
/* 80313A14 0030F674 7F 66 DB 78 */ mr r6, r27
/* 80313A18 0030F678 7C B7 02 14 */ add r5, r23, r0
/* 80313A1C 0030F67C 38 E1 00 18 */ addi r7, r1, 0x18
/* 80313A20 0030F680 4B FF FC 61 */ bl VFiPFFILE_Cursor_Write_Overwrite
/* 80313A24 0030F684 80 99 00 00 */ lwz r4, 0(r25)
/* 80313A28 0030F688 2C 03 00 00 */ cmpwi r3, 0
/* 80313A2C 0030F68C 80 01 00 18 */ lwz r0, 0x18(r1)
/* 80313A30 0030F690 7C 04 02 14 */ add r0, r4, r0
/* 80313A34 0030F694 90 19 00 00 */ stw r0, 0(r25)
/* 80313A38 0030F698 41 82 00 08 */ beq lbl_80313A40
/* 80313A3C 0030F69C 48 00 02 14 */ b lbl_80313C50
lbl_80313A40:
/* 80313A40 0030F6A0 80 01 00 18 */ lwz r0, 0x18(r1)
/* 80313A44 0030F6A4 7F 60 D8 50 */ subf r27, r0, r27
/* 80313A48 0030F6A8 7F 00 C0 50 */ subf r24, r0, r24
lbl_80313A4C:
/* 80313A4C 0030F6AC 2C 1B 00 00 */ cmpwi r27, 0
/* 80313A50 0030F6B0 41 82 00 10 */ beq lbl_80313A60
/* 80313A54 0030F6B4 A0 1D 00 00 */ lhz r0, 0(r29)
/* 80313A58 0030F6B8 7C 1B 00 40 */ cmplw r27, r0
/* 80313A5C 0030F6BC 40 80 FF AC */ bge lbl_80313A08
lbl_80313A60:
/* 80313A60 0030F6C0 3B C0 00 00 */ li r30, 0
/* 80313A64 0030F6C4 3B E0 FF FF */ li r31, -1
/* 80313A68 0030F6C8 48 00 01 94 */ b lbl_80313BFC
lbl_80313A6C:
/* 80313A6C 0030F6CC 80 19 00 00 */ lwz r0, 0(r25)
/* 80313A70 0030F6D0 7E C3 B3 78 */ mr r3, r22
/* 80313A74 0030F6D4 7F 44 D3 78 */ mr r4, r26
/* 80313A78 0030F6D8 38 A1 00 0C */ addi r5, r1, 0xc
/* 80313A7C 0030F6DC 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80313A80 0030F6E0 7F 97 02 14 */ add r28, r23, r0
/* 80313A84 0030F6E4 38 C1 00 08 */ addi r6, r1, 8
/* 80313A88 0030F6E8 3B 60 00 00 */ li r27, 0
/* 80313A8C 0030F6EC 4B FF 73 C9 */ bl VFiPFCLUSTER_AppendCluster
/* 80313A90 0030F6F0 2C 03 00 00 */ cmpwi r3, 0
/* 80313A94 0030F6F4 41 82 00 08 */ beq lbl_80313A9C
/* 80313A98 0030F6F8 48 00 01 2C */ b lbl_80313BC4
lbl_80313A9C:
/* 80313A9C 0030F6FC 80 A1 00 08 */ lwz r5, 8(r1)
/* 80313AA0 0030F700 90 B6 00 20 */ stw r5, 0x20(r22)
/* 80313AA4 0030F704 80 E1 00 0C */ lwz r7, 0xc(r1)
/* 80313AA8 0030F708 2C 07 00 00 */ cmpwi r7, 0
/* 80313AAC 0030F70C 40 82 00 0C */ bne lbl_80313AB8
/* 80313AB0 0030F710 38 60 00 00 */ li r3, 0
/* 80313AB4 0030F714 48 00 01 10 */ b lbl_80313BC4
lbl_80313AB8:
/* 80313AB8 0030F718 80 01 00 18 */ lwz r0, 0x18(r1)
/* 80313ABC 0030F71C 7C FB 3B 78 */ mr r27, r7
/* 80313AC0 0030F720 A0 D6 00 28 */ lhz r6, 0x28(r22)
/* 80313AC4 0030F724 7F A3 EB 78 */ mr r3, r29
/* 80313AC8 0030F728 7C 9C 02 14 */ add r4, r28, r0
/* 80313ACC 0030F72C 39 01 00 10 */ addi r8, r1, 0x10
/* 80313AD0 0030F730 3B 80 00 00 */ li r28, 0
/* 80313AD4 0030F734 39 20 00 01 */ li r9, 1
/* 80313AD8 0030F738 48 00 53 11 */ bl VFiPFSEC_WriteData
/* 80313ADC 0030F73C 2C 03 00 00 */ cmpwi r3, 0
/* 80313AE0 0030F740 41 82 00 14 */ beq lbl_80313AF4
/* 80313AE4 0030F744 80 01 00 10 */ lwz r0, 0x10(r1)
/* 80313AE8 0030F748 2C 00 00 00 */ cmpwi r0, 0
/* 80313AEC 0030F74C 40 82 00 08 */ bne lbl_80313AF4
/* 80313AF0 0030F750 48 00 00 B8 */ b lbl_80313BA8
lbl_80313AF4:
/* 80313AF4 0030F754 2C 16 00 00 */ cmpwi r22, 0
/* 80313AF8 0030F758 83 81 00 10 */ lwz r28, 0x10(r1)
/* 80313AFC 0030F75C 80 B6 00 20 */ lwz r5, 0x20(r22)
/* 80313B00 0030F760 40 82 00 0C */ bne lbl_80313B0C
/* 80313B04 0030F764 38 80 00 00 */ li r4, 0
/* 80313B08 0030F768 48 00 00 0C */ b lbl_80313B14
lbl_80313B0C:
/* 80313B0C 0030F76C 80 76 00 08 */ lwz r3, 8(r22)
/* 80313B10 0030F770 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80313B14:
/* 80313B14 0030F774 A0 16 00 28 */ lhz r0, 0x28(r22)
/* 80313B18 0030F778 A0 64 00 00 */ lhz r3, 0(r4)
/* 80313B1C 0030F77C 7C C0 E2 14 */ add r6, r0, r28
/* 80313B20 0030F780 88 84 00 20 */ lbz r4, 0x20(r4)
/* 80313B24 0030F784 38 03 FF FF */ addi r0, r3, -1
/* 80313B28 0030F788 7C 00 30 39 */ and. r0, r0, r6
/* 80313B2C 0030F78C 7C C0 24 30 */ srw r0, r6, r4
/* 80313B30 0030F790 7C 85 02 14 */ add r4, r5, r0
/* 80313B34 0030F794 41 82 00 0C */ beq lbl_80313B40
/* 80313B38 0030F798 90 96 00 20 */ stw r4, 0x20(r22)
/* 80313B3C 0030F79C 48 00 00 08 */ b lbl_80313B44
lbl_80313B40:
/* 80313B40 0030F7A0 93 F6 00 20 */ stw r31, 0x20(r22)
lbl_80313B44:
/* 80313B44 0030F7A4 80 16 00 1C */ lwz r0, 0x1c(r22)
/* 80313B48 0030F7A8 80 76 00 08 */ lwz r3, 8(r22)
/* 80313B4C 0030F7AC 7C A0 E2 14 */ add r5, r0, r28
/* 80313B50 0030F7B0 90 B6 00 1C */ stw r5, 0x1c(r22)
/* 80313B54 0030F7B4 80 03 02 64 */ lwz r0, 0x264(r3)
/* 80313B58 0030F7B8 7C 05 00 40 */ cmplw r5, r0
/* 80313B5C 0030F7BC 40 81 00 08 */ ble lbl_80313B64
/* 80313B60 0030F7C0 90 A3 02 64 */ stw r5, 0x264(r3)
lbl_80313B64:
/* 80313B64 0030F7C4 2C 16 00 00 */ cmpwi r22, 0
/* 80313B68 0030F7C8 40 82 00 0C */ bne lbl_80313B74
/* 80313B6C 0030F7CC 38 A0 00 00 */ li r5, 0
/* 80313B70 0030F7D0 48 00 00 0C */ b lbl_80313B7C
lbl_80313B74:
/* 80313B74 0030F7D4 80 76 00 08 */ lwz r3, 8(r22)
/* 80313B78 0030F7D8 80 A3 02 68 */ lwz r5, 0x268(r3)
lbl_80313B7C:
/* 80313B7C 0030F7DC 80 D6 00 1C */ lwz r6, 0x1c(r22)
/* 80313B80 0030F7E0 7E C3 B3 78 */ mr r3, r22
/* 80313B84 0030F7E4 88 05 00 20 */ lbz r0, 0x20(r5)
/* 80313B88 0030F7E8 7C C0 04 30 */ srw r0, r6, r0
/* 80313B8C 0030F7EC 90 16 00 24 */ stw r0, 0x24(r22)
/* 80313B90 0030F7F0 A0 A5 00 00 */ lhz r5, 0(r5)
/* 80313B94 0030F7F4 38 05 FF FF */ addi r0, r5, -1
/* 80313B98 0030F7F8 7C C0 00 38 */ and r0, r6, r0
/* 80313B9C 0030F7FC B0 16 00 28 */ sth r0, 0x28(r22)
/* 80313BA0 0030F800 4B FF 71 E1 */ bl VFiPFCLUSTER_UpdateLastAccessCluster
/* 80313BA4 0030F804 38 60 00 00 */ li r3, 0
lbl_80313BA8:
/* 80313BA8 0030F808 80 81 00 18 */ lwz r4, 0x18(r1)
/* 80313BAC 0030F80C 7C 03 00 D0 */ neg r0, r3
/* 80313BB0 0030F810 7C 00 1B 78 */ or r0, r0, r3
/* 80313BB4 0030F814 7C 84 E2 14 */ add r4, r4, r28
/* 80313BB8 0030F818 7C 00 FE 70 */ srawi r0, r0, 0x1f
/* 80313BBC 0030F81C 90 81 00 18 */ stw r4, 0x18(r1)
/* 80313BC0 0030F820 7C 63 00 38 */ and r3, r3, r0
lbl_80313BC4:
/* 80313BC4 0030F824 80 99 00 00 */ lwz r4, 0(r25)
/* 80313BC8 0030F828 2C 03 00 00 */ cmpwi r3, 0
/* 80313BCC 0030F82C 80 01 00 18 */ lwz r0, 0x18(r1)
/* 80313BD0 0030F830 7C 04 02 14 */ add r0, r4, r0
/* 80313BD4 0030F834 90 19 00 00 */ stw r0, 0(r25)
/* 80313BD8 0030F838 41 82 00 08 */ beq lbl_80313BE0
/* 80313BDC 0030F83C 48 00 00 74 */ b lbl_80313C50
lbl_80313BE0:
/* 80313BE0 0030F840 2C 1B 00 00 */ cmpwi r27, 0
/* 80313BE4 0030F844 40 82 00 0C */ bne lbl_80313BF0
/* 80313BE8 0030F848 38 60 00 00 */ li r3, 0
/* 80313BEC 0030F84C 48 00 00 64 */ b lbl_80313C50
lbl_80313BF0:
/* 80313BF0 0030F850 80 01 00 18 */ lwz r0, 0x18(r1)
/* 80313BF4 0030F854 7F 5B D0 50 */ subf r26, r27, r26
/* 80313BF8 0030F858 7F 00 C0 50 */ subf r24, r0, r24
lbl_80313BFC:
/* 80313BFC 0030F85C 2C 1A 00 00 */ cmpwi r26, 0
/* 80313C00 0030F860 41 82 00 10 */ beq lbl_80313C10
/* 80313C04 0030F864 A0 1D 00 00 */ lhz r0, 0(r29)
/* 80313C08 0030F868 7C 18 00 40 */ cmplw r24, r0
/* 80313C0C 0030F86C 40 80 FE 60 */ bge lbl_80313A6C
lbl_80313C10:
/* 80313C10 0030F870 80 19 00 00 */ lwz r0, 0(r25)
/* 80313C14 0030F874 7F A3 EB 78 */ mr r3, r29
/* 80313C18 0030F878 7E C4 B3 78 */ mr r4, r22
/* 80313C1C 0030F87C 7F 06 C3 78 */ mr r6, r24
/* 80313C20 0030F880 7F 47 D3 78 */ mr r7, r26
/* 80313C24 0030F884 7C B7 02 14 */ add r5, r23, r0
/* 80313C28 0030F888 39 01 00 18 */ addi r8, r1, 0x18
/* 80313C2C 0030F88C 4B FF F7 91 */ bl VFiPFFILE_Cursor_WriteTailSector
/* 80313C30 0030F890 80 99 00 00 */ lwz r4, 0(r25)
/* 80313C34 0030F894 2C 03 00 00 */ cmpwi r3, 0
/* 80313C38 0030F898 80 01 00 18 */ lwz r0, 0x18(r1)
/* 80313C3C 0030F89C 7C 04 02 14 */ add r0, r4, r0
/* 80313C40 0030F8A0 90 19 00 00 */ stw r0, 0(r25)
/* 80313C44 0030F8A4 41 82 00 08 */ beq lbl_80313C4C
/* 80313C48 0030F8A8 48 00 00 08 */ b lbl_80313C50
lbl_80313C4C:
/* 80313C4C 0030F8AC 38 60 00 00 */ li r3, 0
lbl_80313C50:
/* 80313C50 0030F8B0 39 61 00 50 */ addi r11, r1, 0x50
/* 80313C54 0030F8B4 4B EB 35 0D */ bl _restgpr_22
/* 80313C58 0030F8B8 80 01 00 54 */ lwz r0, 0x54(r1)
/* 80313C5C 0030F8BC 7C 08 03 A6 */ mtlr r0
/* 80313C60 0030F8C0 38 21 00 50 */ addi r1, r1, 0x50
/* 80313C64 0030F8C4 4E 80 00 20 */ blr
.global VFiPFFILE_Cursor_MoveToClusterEnd
VFiPFFILE_Cursor_MoveToClusterEnd:
/* 80313C68 0030F8C8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80313C6C 0030F8CC 7C 08 02 A6 */ mflr r0
/* 80313C70 0030F8D0 2C 03 00 00 */ cmpwi r3, 0
/* 80313C74 0030F8D4 90 01 00 24 */ stw r0, 0x24(r1)
/* 80313C78 0030F8D8 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80313C7C 0030F8DC 7C 7F 1B 78 */ mr r31, r3
/* 80313C80 0030F8E0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80313C84 0030F8E4 40 82 00 0C */ bne lbl_80313C90
/* 80313C88 0030F8E8 3B C0 00 00 */ li r30, 0
/* 80313C8C 0030F8EC 48 00 00 0C */ b lbl_80313C98
lbl_80313C90:
/* 80313C90 0030F8F0 80 A3 00 08 */ lwz r5, 8(r3)
/* 80313C94 0030F8F4 83 C5 02 68 */ lwz r30, 0x268(r5)
lbl_80313C98:
/* 80313C98 0030F8F8 80 63 00 08 */ lwz r3, 8(r3)
/* 80313C9C 0030F8FC 38 A1 00 08 */ addi r5, r1, 8
/* 80313CA0 0030F900 38 63 00 04 */ addi r3, r3, 4
/* 80313CA4 0030F904 4B FF C6 2D */ bl VFiPFFAT_CountAllocatedClusters
/* 80313CA8 0030F908 88 9E 00 20 */ lbz r4, 0x20(r30)
/* 80313CAC 0030F90C 38 00 FF FF */ li r0, -1
/* 80313CB0 0030F910 88 7E 00 21 */ lbz r3, 0x21(r30)
/* 80313CB4 0030F914 80 A1 00 08 */ lwz r5, 8(r1)
/* 80313CB8 0030F918 7C 64 1A 14 */ add r3, r4, r3
/* 80313CBC 0030F91C 7C 00 1C 30 */ srw r0, r0, r3
/* 80313CC0 0030F920 7C 05 00 40 */ cmplw r5, r0
/* 80313CC4 0030F924 40 81 00 AC */ ble lbl_80313D70
/* 80313CC8 0030F928 2C 1F 00 00 */ cmpwi r31, 0
/* 80313CCC 0030F92C 40 82 00 0C */ bne lbl_80313CD8
/* 80313CD0 0030F930 38 A0 00 00 */ li r5, 0
/* 80313CD4 0030F934 48 00 00 0C */ b lbl_80313CE0
lbl_80313CD8:
/* 80313CD8 0030F938 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313CDC 0030F93C 80 A3 02 68 */ lwz r5, 0x268(r3)
lbl_80313CE0:
/* 80313CE0 0030F940 A0 65 00 00 */ lhz r3, 0(r5)
/* 80313CE4 0030F944 38 80 FF FF */ li r4, -1
/* 80313CE8 0030F948 80 FF 00 1C */ lwz r7, 0x1c(r31)
/* 80313CEC 0030F94C 39 03 FF FF */ addi r8, r3, -1
/* 80313CF0 0030F950 89 25 00 20 */ lbz r9, 0x20(r5)
/* 80313CF4 0030F954 7C E5 40 38 */ and r5, r7, r8
/* 80313CF8 0030F958 7C 65 00 D0 */ neg r3, r5
/* 80313CFC 0030F95C 7C 08 00 D0 */ neg r0, r8
/* 80313D00 0030F960 7C 66 2B 78 */ or r6, r3, r5
/* 80313D04 0030F964 7C E5 4C 30 */ srw r5, r7, r9
/* 80313D08 0030F968 7C 00 43 78 */ or r0, r0, r8
/* 80313D0C 0030F96C 7C 83 4C 30 */ srw r3, r4, r9
/* 80313D10 0030F970 54 C6 0F FE */ srwi r6, r6, 0x1f
/* 80313D14 0030F974 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80313D18 0030F978 7C A5 32 14 */ add r5, r5, r6
/* 80313D1C 0030F97C 7C 03 02 14 */ add r0, r3, r0
/* 80313D20 0030F980 7C 05 00 40 */ cmplw r5, r0
/* 80313D24 0030F984 41 82 00 08 */ beq lbl_80313D2C
/* 80313D28 0030F988 90 9F 00 20 */ stw r4, 0x20(r31)
lbl_80313D2C:
/* 80313D2C 0030F98C 38 00 FF FF */ li r0, -1
/* 80313D30 0030F990 2C 1F 00 00 */ cmpwi r31, 0
/* 80313D34 0030F994 90 1F 00 1C */ stw r0, 0x1c(r31)
/* 80313D38 0030F998 40 82 00 0C */ bne lbl_80313D44
/* 80313D3C 0030F99C 38 60 00 00 */ li r3, 0
/* 80313D40 0030F9A0 48 00 00 0C */ b lbl_80313D4C
lbl_80313D44:
/* 80313D44 0030F9A4 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313D48 0030F9A8 80 63 02 68 */ lwz r3, 0x268(r3)
lbl_80313D4C:
/* 80313D4C 0030F9AC 80 9F 00 1C */ lwz r4, 0x1c(r31)
/* 80313D50 0030F9B0 88 03 00 20 */ lbz r0, 0x20(r3)
/* 80313D54 0030F9B4 7C 80 04 30 */ srw r0, r4, r0
/* 80313D58 0030F9B8 90 1F 00 24 */ stw r0, 0x24(r31)
/* 80313D5C 0030F9BC A0 63 00 00 */ lhz r3, 0(r3)
/* 80313D60 0030F9C0 38 03 FF FF */ addi r0, r3, -1
/* 80313D64 0030F9C4 7C 80 00 38 */ and r0, r4, r0
/* 80313D68 0030F9C8 B0 1F 00 28 */ sth r0, 0x28(r31)
/* 80313D6C 0030F9CC 48 00 00 AC */ b lbl_80313E18
lbl_80313D70:
/* 80313D70 0030F9D0 2C 1F 00 00 */ cmpwi r31, 0
/* 80313D74 0030F9D4 7C A8 18 30 */ slw r8, r5, r3
/* 80313D78 0030F9D8 40 82 00 0C */ bne lbl_80313D84
/* 80313D7C 0030F9DC 38 80 00 00 */ li r4, 0
/* 80313D80 0030F9E0 48 00 00 0C */ b lbl_80313D8C
lbl_80313D84:
/* 80313D84 0030F9E4 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313D88 0030F9E8 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80313D8C:
/* 80313D8C 0030F9EC A0 64 00 00 */ lhz r3, 0(r4)
/* 80313D90 0030F9F0 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 80313D94 0030F9F4 38 63 FF FF */ addi r3, r3, -1
/* 80313D98 0030F9F8 88 84 00 20 */ lbz r4, 0x20(r4)
/* 80313D9C 0030F9FC 7C 07 18 38 */ and r7, r0, r3
/* 80313DA0 0030FA00 7C 05 24 30 */ srw r5, r0, r4
/* 80313DA4 0030FA04 7D 03 18 38 */ and r3, r8, r3
/* 80313DA8 0030FA08 7C C7 00 D0 */ neg r6, r7
/* 80313DAC 0030FA0C 7D 04 24 30 */ srw r4, r8, r4
/* 80313DB0 0030FA10 7C 03 00 D0 */ neg r0, r3
/* 80313DB4 0030FA14 7C 00 1B 78 */ or r0, r0, r3
/* 80313DB8 0030FA18 7C C6 3B 78 */ or r6, r6, r7
/* 80313DBC 0030FA1C 54 C3 0F FE */ srwi r3, r6, 0x1f
/* 80313DC0 0030FA20 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80313DC4 0030FA24 7C 65 1A 14 */ add r3, r5, r3
/* 80313DC8 0030FA28 7C 04 02 14 */ add r0, r4, r0
/* 80313DCC 0030FA2C 7C 03 00 40 */ cmplw r3, r0
/* 80313DD0 0030FA30 41 82 00 0C */ beq lbl_80313DDC
/* 80313DD4 0030FA34 38 00 FF FF */ li r0, -1
/* 80313DD8 0030FA38 90 1F 00 20 */ stw r0, 0x20(r31)
lbl_80313DDC:
/* 80313DDC 0030FA3C 2C 1F 00 00 */ cmpwi r31, 0
/* 80313DE0 0030FA40 91 1F 00 1C */ stw r8, 0x1c(r31)
/* 80313DE4 0030FA44 40 82 00 0C */ bne lbl_80313DF0
/* 80313DE8 0030FA48 38 60 00 00 */ li r3, 0
/* 80313DEC 0030FA4C 48 00 00 0C */ b lbl_80313DF8
lbl_80313DF0:
/* 80313DF0 0030FA50 80 7F 00 08 */ lwz r3, 8(r31)
/* 80313DF4 0030FA54 80 63 02 68 */ lwz r3, 0x268(r3)
lbl_80313DF8:
/* 80313DF8 0030FA58 80 9F 00 1C */ lwz r4, 0x1c(r31)
/* 80313DFC 0030FA5C 88 03 00 20 */ lbz r0, 0x20(r3)
/* 80313E00 0030FA60 7C 80 04 30 */ srw r0, r4, r0
/* 80313E04 0030FA64 90 1F 00 24 */ stw r0, 0x24(r31)
/* 80313E08 0030FA68 A0 63 00 00 */ lhz r3, 0(r3)
/* 80313E0C 0030FA6C 38 03 FF FF */ addi r0, r3, -1
/* 80313E10 0030FA70 7C 80 00 38 */ and r0, r4, r0
/* 80313E14 0030FA74 B0 1F 00 28 */ sth r0, 0x28(r31)
lbl_80313E18:
/* 80313E18 0030FA78 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80313E1C 0030FA7C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80313E20 0030FA80 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80313E24 0030FA84 7C 08 03 A6 */ mtlr r0
/* 80313E28 0030FA88 38 21 00 20 */ addi r1, r1, 0x20
/* 80313E2C 0030FA8C 4E 80 00 20 */ blr
.global VFiPFFILE_GetSFD
VFiPFFILE_GetSFD:
/* 80313E30 0030FA90 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80313E34 0030FA94 7C 08 02 A6 */ mflr r0
/* 80313E38 0030FA98 90 01 00 24 */ stw r0, 0x24(r1)
/* 80313E3C 0030FA9C 39 61 00 20 */ addi r11, r1, 0x20
/* 80313E40 0030FAA0 4B EB 32 E9 */ bl _savegpr_27
/* 80313E44 0030FAA4 7C 7C 1B 78 */ mr r28, r3
/* 80313E48 0030FAA8 38 00 00 05 */ li r0, 5
/* 80313E4C 0030FAAC 7C 9D 23 78 */ mr r29, r4
/* 80313E50 0030FAB0 38 E3 00 40 */ addi r7, r3, 0x40
/* 80313E54 0030FAB4 7F 86 E3 78 */ mr r6, r28
/* 80313E58 0030FAB8 3B E0 00 00 */ li r31, 0
/* 80313E5C 0030FABC 3B C0 00 00 */ li r30, 0
/* 80313E60 0030FAC0 39 00 00 00 */ li r8, 0
/* 80313E64 0030FAC4 7C 09 03 A6 */ mtctr r0
lbl_80313E68:
/* 80313E68 0030FAC8 80 06 00 40 */ lwz r0, 0x40(r6)
/* 80313E6C 0030FACC 54 05 07 FF */ clrlwi. r5, r0, 0x1f
/* 80313E70 0030FAD0 41 82 00 14 */ beq lbl_80313E84
/* 80313E74 0030FAD4 41 82 00 24 */ beq lbl_80313E98
/* 80313E78 0030FAD8 7C 00 00 34 */ cntlzw r0, r0
/* 80313E7C 0030FADC 54 00 DF BD */ rlwinm. r0, r0, 0x1b, 0x1e, 0x1e
/* 80313E80 0030FAE0 41 82 00 18 */ beq lbl_80313E98
lbl_80313E84:
/* 80313E84 0030FAE4 2C 1E 00 00 */ cmpwi r30, 0
/* 80313E88 0030FAE8 40 82 00 5C */ bne lbl_80313EE4
/* 80313E8C 0030FAEC 7C FE 3B 78 */ mr r30, r7
/* 80313E90 0030FAF0 7D 1F 43 78 */ mr r31, r8
/* 80313E94 0030FAF4 48 00 00 50 */ b lbl_80313EE4
lbl_80313E98:
/* 80313E98 0030FAF8 80 A4 02 2C */ lwz r5, 0x22c(r4)
/* 80313E9C 0030FAFC 80 06 02 A8 */ lwz r0, 0x2a8(r6)
/* 80313EA0 0030FB00 7C 05 00 40 */ cmplw r5, r0
/* 80313EA4 0030FB04 40 82 00 40 */ bne lbl_80313EE4
/* 80313EA8 0030FB08 80 A4 02 38 */ lwz r5, 0x238(r4)
/* 80313EAC 0030FB0C 80 06 02 B4 */ lwz r0, 0x2b4(r6)
/* 80313EB0 0030FB10 7C 05 00 40 */ cmplw r5, r0
/* 80313EB4 0030FB14 40 82 00 30 */ bne lbl_80313EE4
/* 80313EB8 0030FB18 A0 A4 02 3C */ lhz r5, 0x23c(r4)
/* 80313EBC 0030FB1C A0 06 02 B8 */ lhz r0, 0x2b8(r6)
/* 80313EC0 0030FB20 7C 05 00 40 */ cmplw r5, r0
/* 80313EC4 0030FB24 40 82 00 20 */ bne lbl_80313EE4
/* 80313EC8 0030FB28 1C 08 02 90 */ mulli r0, r8, 0x290
/* 80313ECC 0030FB2C 7C A3 02 14 */ add r5, r3, r0
/* 80313ED0 0030FB30 A0 85 02 CC */ lhz r4, 0x2cc(r5)
/* 80313ED4 0030FB34 38 65 00 40 */ addi r3, r5, 0x40
/* 80313ED8 0030FB38 38 04 00 01 */ addi r0, r4, 1
/* 80313EDC 0030FB3C B0 05 02 CC */ sth r0, 0x2cc(r5)
/* 80313EE0 0030FB40 48 00 01 08 */ b lbl_80313FE8
lbl_80313EE4:
/* 80313EE4 0030FB44 38 C6 02 90 */ addi r6, r6, 0x290
/* 80313EE8 0030FB48 38 E7 02 90 */ addi r7, r7, 0x290
/* 80313EEC 0030FB4C 39 08 00 01 */ addi r8, r8, 1
/* 80313EF0 0030FB50 42 00 FF 78 */ bdnz lbl_80313E68
/* 80313EF4 0030FB54 2C 1E 00 00 */ cmpwi r30, 0
/* 80313EF8 0030FB58 40 82 00 0C */ bne lbl_80313F04
/* 80313EFC 0030FB5C 38 60 00 00 */ li r3, 0
/* 80313F00 0030FB60 48 00 00 E8 */ b lbl_80313FE8
lbl_80313F04:
/* 80313F04 0030FB64 38 00 00 03 */ li r0, 3
/* 80313F08 0030FB68 38 60 00 01 */ li r3, 1
/* 80313F0C 0030FB6C 90 1E 00 00 */ stw r0, 0(r30)
/* 80313F10 0030FB70 38 00 00 48 */ li r0, 0x48
/* 80313F14 0030FB74 38 BE 00 38 */ addi r5, r30, 0x38
/* 80313F18 0030FB78 38 84 FF FC */ addi r4, r4, -4
/* 80313F1C 0030FB7C B0 7E 02 8C */ sth r3, 0x28c(r30)
/* 80313F20 0030FB80 7C 09 03 A6 */ mtctr r0
lbl_80313F24:
/* 80313F24 0030FB84 80 64 00 04 */ lwz r3, 4(r4)
/* 80313F28 0030FB88 84 04 00 08 */ lwzu r0, 8(r4)
/* 80313F2C 0030FB8C 90 65 00 04 */ stw r3, 4(r5)
/* 80313F30 0030FB90 94 05 00 08 */ stwu r0, 8(r5)
/* 80313F34 0030FB94 42 00 FF F0 */ bdnz lbl_80313F24
/* 80313F38 0030FB98 3B 60 00 00 */ li r27, 0
/* 80313F3C 0030FB9C 38 7E 00 04 */ addi r3, r30, 4
/* 80313F40 0030FBA0 B3 7E 02 7C */ sth r27, 0x27c(r30)
/* 80313F44 0030FBA4 38 DE 02 70 */ addi r6, r30, 0x270
/* 80313F48 0030FBA8 38 80 00 00 */ li r4, 0
/* 80313F4C 0030FBAC B3 7E 02 7E */ sth r27, 0x27e(r30)
/* 80313F50 0030FBB0 93 7E 02 80 */ stw r27, 0x280(r30)
/* 80313F54 0030FBB4 93 7E 02 84 */ stw r27, 0x284(r30)
/* 80313F58 0030FBB8 93 7E 02 88 */ stw r27, 0x288(r30)
/* 80313F5C 0030FBBC 80 BD 02 2C */ lwz r5, 0x22c(r29)
/* 80313F60 0030FBC0 4B FF D1 69 */ bl VFiPFFAT_InitFFD
/* 80313F64 0030FBC4 A0 1C 18 80 */ lhz r0, 0x1880(r28)
/* 80313F68 0030FBC8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 80313F6C 0030FBCC 41 82 00 78 */ beq lbl_80313FE4
/* 80313F70 0030FBD0 80 1C 18 88 */ lwz r0, 0x1888(r28)
/* 80313F74 0030FBD4 38 80 00 00 */ li r4, 0
/* 80313F78 0030FBD8 80 7C 18 84 */ lwz r3, 0x1884(r28)
/* 80313F7C 0030FBDC 7C 1F 01 D6 */ mullw r0, r31, r0
/* 80313F80 0030FBE0 54 00 10 3A */ slwi r0, r0, 2
/* 80313F84 0030FBE4 7C 63 02 14 */ add r3, r3, r0
/* 80313F88 0030FBE8 90 7E 00 20 */ stw r3, 0x20(r30)
/* 80313F8C 0030FBEC 80 1C 18 88 */ lwz r0, 0x1888(r28)
/* 80313F90 0030FBF0 54 05 10 3A */ slwi r5, r0, 2
/* 80313F94 0030FBF4 4B FF 10 41 */ bl VFipf_memset
/* 80313F98 0030FBF8 80 1C 18 88 */ lwz r0, 0x1888(r28)
/* 80313F9C 0030FBFC 90 1E 00 2C */ stw r0, 0x2c(r30)
/* 80313FA0 0030FC00 A0 1C 18 82 */ lhz r0, 0x1882(r28)
/* 80313FA4 0030FC04 B0 1E 00 24 */ sth r0, 0x24(r30)
/* 80313FA8 0030FC08 B3 7E 00 26 */ sth r27, 0x26(r30)
/* 80313FAC 0030FC0C 93 7E 00 28 */ stw r27, 0x28(r30)
/* 80313FB0 0030FC10 93 7E 00 30 */ stw r27, 0x30(r30)
/* 80313FB4 0030FC14 80 1D 02 28 */ lwz r0, 0x228(r29)
/* 80313FB8 0030FC18 2C 00 00 00 */ cmpwi r0, 0
/* 80313FBC 0030FC1C 41 82 00 28 */ beq lbl_80313FE4
/* 80313FC0 0030FC20 80 1E 00 2C */ lwz r0, 0x2c(r30)
/* 80313FC4 0030FC24 2C 00 00 00 */ cmpwi r0, 0
/* 80313FC8 0030FC28 41 82 00 1C */ beq lbl_80313FE4
/* 80313FCC 0030FC2C 80 1D 02 34 */ lwz r0, 0x234(r29)
/* 80313FD0 0030FC30 80 7E 00 20 */ lwz r3, 0x20(r30)
/* 80313FD4 0030FC34 90 03 00 00 */ stw r0, 0(r3)
/* 80313FD8 0030FC38 80 7E 00 28 */ lwz r3, 0x28(r30)
/* 80313FDC 0030FC3C 38 03 00 01 */ addi r0, r3, 1
/* 80313FE0 0030FC40 90 1E 00 28 */ stw r0, 0x28(r30)
lbl_80313FE4:
/* 80313FE4 0030FC44 7F C3 F3 78 */ mr r3, r30
lbl_80313FE8:
/* 80313FE8 0030FC48 39 61 00 20 */ addi r11, r1, 0x20
/* 80313FEC 0030FC4C 4B EB 31 89 */ bl _restgpr_27
/* 80313FF0 0030FC50 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80313FF4 0030FC54 7C 08 03 A6 */ mtlr r0
/* 80313FF8 0030FC58 38 21 00 20 */ addi r1, r1, 0x20
/* 80313FFC 0030FC5C 4E 80 00 20 */ blr
.global VFiPFFILE_createEmptyFile
VFiPFFILE_createEmptyFile:
/* 80314000 0030FC60 94 21 FD 20 */ stwu r1, -0x2e0(r1)
/* 80314004 0030FC64 7C 08 02 A6 */ mflr r0
/* 80314008 0030FC68 90 01 02 E4 */ stw r0, 0x2e4(r1)
/* 8031400C 0030FC6C 39 61 02 E0 */ addi r11, r1, 0x2e0
/* 80314010 0030FC70 4B EB 31 0D */ bl _savegpr_24
/* 80314014 0030FC74 38 00 00 48 */ li r0, 0x48
/* 80314018 0030FC78 7C 9D 23 78 */ mr r29, r4
/* 8031401C 0030FC7C 7C BE 2B 78 */ mr r30, r5
/* 80314020 0030FC80 7C 7C 1B 78 */ mr r28, r3
/* 80314024 0030FC84 7C DF 33 78 */ mr r31, r6
/* 80314028 0030FC88 38 A1 00 7C */ addi r5, r1, 0x7c
/* 8031402C 0030FC8C 38 84 FF FC */ addi r4, r4, -4
/* 80314030 0030FC90 7C 09 03 A6 */ mtctr r0
lbl_80314034:
/* 80314034 0030FC94 80 64 00 04 */ lwz r3, 4(r4)
/* 80314038 0030FC98 84 04 00 08 */ lwzu r0, 8(r4)
/* 8031403C 0030FC9C 90 65 00 04 */ stw r3, 4(r5)
/* 80314040 0030FCA0 94 05 00 08 */ stwu r0, 8(r5)
/* 80314044 0030FCA4 42 00 FF F0 */ bdnz lbl_80314034
/* 80314048 0030FCA8 80 A1 02 AC */ lwz r5, 0x2ac(r1)
/* 8031404C 0030FCAC 38 61 00 48 */ addi r3, r1, 0x48
/* 80314050 0030FCB0 38 81 00 18 */ addi r4, r1, 0x18
/* 80314054 0030FCB4 38 C1 02 B4 */ addi r6, r1, 0x2b4
/* 80314058 0030FCB8 4B FF D0 71 */ bl VFiPFFAT_InitFFD
/* 8031405C 0030FCBC 80 1C 15 E0 */ lwz r0, 0x15e0(r28)
/* 80314060 0030FCC0 2C 00 00 05 */ cmpwi r0, 5
/* 80314064 0030FCC4 41 80 00 0C */ blt lbl_80314070
/* 80314068 0030FCC8 38 60 00 15 */ li r3, 0x15
/* 8031406C 0030FCCC 48 00 02 90 */ b lbl_803142FC
lbl_80314070:
/* 80314070 0030FCD0 7F C4 F3 78 */ mr r4, r30
/* 80314074 0030FCD4 38 7D 02 0E */ addi r3, r29, 0x20e
/* 80314078 0030FCD8 48 00 3A 2D */ bl VFiPFPATH_parseShortName
/* 8031407C 0030FCDC 2C 03 00 00 */ cmpwi r3, 0
/* 80314080 0030FCE0 41 82 00 18 */ beq lbl_80314098
/* 80314084 0030FCE4 88 1D 02 0E */ lbz r0, 0x20e(r29)
/* 80314088 0030FCE8 7C 00 07 75 */ extsb. r0, r0
/* 8031408C 0030FCEC 40 82 00 0C */ bne lbl_80314098
/* 80314090 0030FCF0 38 60 00 01 */ li r3, 1
/* 80314094 0030FCF4 48 00 02 68 */ b lbl_803142FC
lbl_80314098:
/* 80314098 0030FCF8 2C 03 00 00 */ cmpwi r3, 0
/* 8031409C 0030FCFC 41 82 00 64 */ beq lbl_80314100
/* 803140A0 0030FD00 38 61 00 80 */ addi r3, r1, 0x80
/* 803140A4 0030FD04 38 9D 02 0E */ addi r4, r29, 0x20e
/* 803140A8 0030FD08 4B FF 89 F5 */ bl VFiPFENT_AdjustSFN
/* 803140AC 0030FD0C 2C 03 00 00 */ cmpwi r3, 0
/* 803140B0 0030FD10 41 82 00 08 */ beq lbl_803140B8
/* 803140B4 0030FD14 48 00 02 48 */ b lbl_803142FC
lbl_803140B8:
/* 803140B8 0030FD18 7F C3 F3 78 */ mr r3, r30
/* 803140BC 0030FD1C 4B FF 12 25 */ bl VFiPFSTR_GetCodeMode
/* 803140C0 0030FD20 28 03 00 01 */ cmplwi r3, 1
/* 803140C4 0030FD24 40 82 00 20 */ bne lbl_803140E4
/* 803140C8 0030FD28 7F C3 F3 78 */ mr r3, r30
/* 803140CC 0030FD2C 38 80 00 01 */ li r4, 1
/* 803140D0 0030FD30 4B FF 12 41 */ bl VFiPFSTR_GetStrPos
/* 803140D4 0030FD34 7C 64 1B 78 */ mr r4, r3
/* 803140D8 0030FD38 7F A3 EB 78 */ mr r3, r29
/* 803140DC 0030FD3C 48 00 39 31 */ bl VFiPFPATH_transformInUnicode
/* 803140E0 0030FD40 48 00 00 28 */ b lbl_80314108
lbl_803140E4:
/* 803140E4 0030FD44 7F C3 F3 78 */ mr r3, r30
/* 803140E8 0030FD48 38 80 00 01 */ li r4, 1
/* 803140EC 0030FD4C 4B FF 12 25 */ bl VFiPFSTR_GetStrPos
/* 803140F0 0030FD50 7C 64 1B 78 */ mr r4, r3
/* 803140F4 0030FD54 7F A3 EB 78 */ mr r3, r29
/* 803140F8 0030FD58 4B FF 17 8D */ bl VFipf_w_strcpy
/* 803140FC 0030FD5C 48 00 00 0C */ b lbl_80314108
lbl_80314100:
/* 80314100 0030FD60 38 00 00 00 */ li r0, 0
/* 80314104 0030FD64 B0 1D 00 00 */ sth r0, 0(r29)
lbl_80314108:
/* 80314108 0030FD68 80 1C 00 1C */ lwz r0, 0x1c(r28)
/* 8031410C 0030FD6C 2C 00 00 02 */ cmpwi r0, 2
/* 80314110 0030FD70 40 82 00 10 */ bne lbl_80314120
/* 80314114 0030FD74 38 00 00 01 */ li r0, 1
/* 80314118 0030FD78 90 1D 02 34 */ stw r0, 0x234(r29)
/* 8031411C 0030FD7C 48 00 00 0C */ b lbl_80314128
lbl_80314120:
/* 80314120 0030FD80 38 00 00 00 */ li r0, 0
/* 80314124 0030FD84 90 1D 02 34 */ stw r0, 0x234(r29)
lbl_80314128:
/* 80314128 0030FD88 38 A0 00 00 */ li r5, 0
/* 8031412C 0030FD8C 38 00 00 20 */ li r0, 0x20
/* 80314130 0030FD90 90 BD 02 28 */ stw r5, 0x228(r29)
/* 80314134 0030FD94 38 7D 02 20 */ addi r3, r29, 0x220
/* 80314138 0030FD98 38 9D 02 1E */ addi r4, r29, 0x21e
/* 8031413C 0030FD9C 93 9D 02 2C */ stw r28, 0x22c(r29)
/* 80314140 0030FDA0 98 BD 02 1B */ stb r5, 0x21b(r29)
/* 80314144 0030FDA4 98 1D 02 1C */ stb r0, 0x21c(r29)
/* 80314148 0030FDA8 4B FF 8A 31 */ bl VFiPFENT_getcurrentDateTimeForEnt
/* 8031414C 0030FDAC A0 1D 00 00 */ lhz r0, 0(r29)
/* 80314150 0030FDB0 A0 BD 02 20 */ lhz r5, 0x220(r29)
/* 80314154 0030FDB4 A0 9D 02 1E */ lhz r4, 0x21e(r29)
/* 80314158 0030FDB8 2C 00 00 00 */ cmpwi r0, 0
/* 8031415C 0030FDBC 98 7D 02 1D */ stb r3, 0x21d(r29)
/* 80314160 0030FDC0 B0 BD 02 22 */ sth r5, 0x222(r29)
/* 80314164 0030FDC4 B0 9D 02 24 */ sth r4, 0x224(r29)
/* 80314168 0030FDC8 B0 BD 02 26 */ sth r5, 0x226(r29)
/* 8031416C 0030FDCC 41 82 01 4C */ beq lbl_803142B8
/* 80314170 0030FDD0 88 1D 02 1B */ lbz r0, 0x21b(r29)
/* 80314174 0030FDD4 54 00 06 F9 */ rlwinm. r0, r0, 0, 0x1b, 0x1c
/* 80314178 0030FDD8 40 82 01 40 */ bne lbl_803142B8
/* 8031417C 0030FDDC 3C 80 4E C5 */ lis r4, 0x4EC4EC4F@ha
/* 80314180 0030FDE0 7F A3 EB 78 */ mr r3, r29
/* 80314184 0030FDE4 38 04 EC 4F */ addi r0, r4, 0x4EC4EC4F@l
/* 80314188 0030FDE8 7F C7 F3 78 */ mr r7, r30
/* 8031418C 0030FDEC 7C 00 F8 16 */ mulhwu r0, r0, r31
/* 80314190 0030FDF0 38 A1 00 48 */ addi r5, r1, 0x48
/* 80314194 0030FDF4 38 C1 00 10 */ addi r6, r1, 0x10
/* 80314198 0030FDF8 39 01 00 08 */ addi r8, r1, 8
/* 8031419C 0030FDFC 54 09 F0 BE */ srwi r9, r0, 2
/* 803141A0 0030FE00 1C 09 00 0D */ mulli r0, r9, 0xd
/* 803141A4 0030FE04 7C 80 F8 50 */ subf r4, r0, r31
/* 803141A8 0030FE08 7C 04 00 D0 */ neg r0, r4
/* 803141AC 0030FE0C 7C 00 23 78 */ or r0, r0, r4
/* 803141B0 0030FE10 54 00 0F FE */ srwi r0, r0, 0x1f
/* 803141B4 0030FE14 7C 09 02 14 */ add r0, r9, r0
/* 803141B8 0030FE18 54 1A 06 3E */ clrlwi r26, r0, 0x18
/* 803141BC 0030FE1C 38 1A 00 01 */ addi r0, r26, 1
/* 803141C0 0030FE20 54 04 06 3E */ clrlwi r4, r0, 0x18
/* 803141C4 0030FE24 4B FF 82 01 */ bl VFiPFENT_allocateEntryPos
/* 803141C8 0030FE28 2C 03 00 00 */ cmpwi r3, 0
/* 803141CC 0030FE2C 41 82 00 08 */ beq lbl_803141D4
/* 803141D0 0030FE30 48 00 01 2C */ b lbl_803142FC
lbl_803141D4:
/* 803141D4 0030FE34 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
/* 803141D8 0030FE38 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
/* 803141DC 0030FE3C 80 03 00 3C */ lwz r0, 0x3c(r3)
/* 803141E0 0030FE40 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
/* 803141E4 0030FE44 28 00 00 02 */ cmplwi r0, 2
/* 803141E8 0030FE48 40 82 00 10 */ bne lbl_803141F8
/* 803141EC 0030FE4C 80 81 00 08 */ lwz r4, 8(r1)
/* 803141F0 0030FE50 38 7D 02 0E */ addi r3, r29, 0x20e
/* 803141F4 0030FE54 48 00 47 09 */ bl VFiPFPATH_AdjustExtShortName
lbl_803141F8:
/* 803141F8 0030FE58 9B 5D 02 0A */ stb r26, 0x20a(r29)
/* 803141FC 0030FE5C 7F A3 EB 78 */ mr r3, r29
/* 80314200 0030FE60 83 1D 02 38 */ lwz r24, 0x238(r29)
/* 80314204 0030FE64 4B FF 79 A5 */ bl VFiPFENT_CalcCheckSum
/* 80314208 0030FE68 7C 7F 1B 78 */ mr r31, r3
/* 8031420C 0030FE6C 7F 59 D3 78 */ mr r25, r26
/* 80314210 0030FE70 3B 61 00 10 */ addi r27, r1, 0x10
/* 80314214 0030FE74 3B C0 00 00 */ li r30, 0
/* 80314218 0030FE78 48 00 00 90 */ b lbl_803142A8
lbl_8031421C:
/* 8031421C 0030FE7C 7C 19 D0 50 */ subf r0, r25, r26
/* 80314220 0030FE80 7F A4 EB 78 */ mr r4, r29
/* 80314224 0030FE84 7C 00 00 34 */ cntlzw r0, r0
/* 80314228 0030FE88 38 61 00 28 */ addi r3, r1, 0x28
/* 8031422C 0030FE8C 57 25 06 3E */ clrlwi r5, r25, 0x18
/* 80314230 0030FE90 57 E6 06 3E */ clrlwi r6, r31, 0x18
/* 80314234 0030FE94 54 07 D9 7E */ srwi r7, r0, 5
/* 80314238 0030FE98 4B FF 7C AD */ bl VFiPFENT_storeLFNEntryFieldsToBuf
/* 8031423C 0030FE9C A0 DD 02 3C */ lhz r6, 0x23c(r29)
/* 80314240 0030FEA0 7F 83 E3 78 */ mr r3, r28
/* 80314244 0030FEA4 7F 05 C3 78 */ mr r5, r24
/* 80314248 0030FEA8 38 81 00 28 */ addi r4, r1, 0x28
/* 8031424C 0030FEAC 39 01 00 0C */ addi r8, r1, 0xc
/* 80314250 0030FEB0 38 E0 00 20 */ li r7, 0x20
/* 80314254 0030FEB4 39 20 00 00 */ li r9, 0
/* 80314258 0030FEB8 48 00 4B 91 */ bl VFiPFSEC_WriteData
/* 8031425C 0030FEBC 2C 03 00 00 */ cmpwi r3, 0
/* 80314260 0030FEC0 41 82 00 08 */ beq lbl_80314268
/* 80314264 0030FEC4 48 00 00 98 */ b lbl_803142FC
lbl_80314268:
/* 80314268 0030FEC8 80 01 00 0C */ lwz r0, 0xc(r1)
/* 8031426C 0030FECC 28 00 00 20 */ cmplwi r0, 0x20
/* 80314270 0030FED0 41 82 00 0C */ beq lbl_8031427C
/* 80314274 0030FED4 38 60 00 11 */ li r3, 0x11
/* 80314278 0030FED8 48 00 00 84 */ b lbl_803142FC
lbl_8031427C:
/* 8031427C 0030FEDC A0 7D 02 3C */ lhz r3, 0x23c(r29)
/* 80314280 0030FEE0 38 03 00 20 */ addi r0, r3, 0x20
/* 80314284 0030FEE4 B0 1D 02 3C */ sth r0, 0x23c(r29)
/* 80314288 0030FEE8 54 03 04 3E */ clrlwi r3, r0, 0x10
/* 8031428C 0030FEEC A0 1C 00 00 */ lhz r0, 0(r28)
/* 80314290 0030FEF0 7C 03 00 40 */ cmplw r3, r0
/* 80314294 0030FEF4 41 80 00 10 */ blt lbl_803142A4
/* 80314298 0030FEF8 B3 DD 02 3C */ sth r30, 0x23c(r29)
/* 8031429C 0030FEFC 83 1B 00 00 */ lwz r24, 0(r27)
/* 803142A0 0030FF00 3B 7B 00 04 */ addi r27, r27, 4
lbl_803142A4:
/* 803142A4 0030FF04 3B 39 FF FF */ addi r25, r25, -1
lbl_803142A8:
/* 803142A8 0030FF08 28 19 00 01 */ cmplwi r25, 1
/* 803142AC 0030FF0C 40 80 FF 70 */ bge lbl_8031421C
/* 803142B0 0030FF10 93 1D 02 38 */ stw r24, 0x238(r29)
/* 803142B4 0030FF14 48 00 00 28 */ b lbl_803142DC
lbl_803142B8:
/* 803142B8 0030FF18 7F A3 EB 78 */ mr r3, r29
/* 803142BC 0030FF1C 7F C7 F3 78 */ mr r7, r30
/* 803142C0 0030FF20 38 A1 00 48 */ addi r5, r1, 0x48
/* 803142C4 0030FF24 38 C1 00 10 */ addi r6, r1, 0x10
/* 803142C8 0030FF28 38 80 00 01 */ li r4, 1
/* 803142CC 0030FF2C 4B FF 84 15 */ bl VFiPFENT_allocateEntry
/* 803142D0 0030FF30 2C 03 00 00 */ cmpwi r3, 0
/* 803142D4 0030FF34 41 82 00 08 */ beq lbl_803142DC
/* 803142D8 0030FF38 48 00 00 24 */ b lbl_803142FC
lbl_803142DC:
/* 803142DC 0030FF3C 80 1D 02 34 */ lwz r0, 0x234(r29)
/* 803142E0 0030FF40 28 00 00 01 */ cmplwi r0, 1
/* 803142E4 0030FF44 40 82 00 0C */ bne lbl_803142F0
/* 803142E8 0030FF48 38 00 00 00 */ li r0, 0
/* 803142EC 0030FF4C 90 1D 02 34 */ stw r0, 0x234(r29)
lbl_803142F0:
/* 803142F0 0030FF50 7F A3 EB 78 */ mr r3, r29
/* 803142F4 0030FF54 38 80 00 01 */ li r4, 1
/* 803142F8 0030FF58 4B FF 85 F9 */ bl VFiPFENT_updateEntry
lbl_803142FC:
/* 803142FC 0030FF5C 39 61 02 E0 */ addi r11, r1, 0x2e0
/* 80314300 0030FF60 4B EB 2E 69 */ bl _restgpr_24
/* 80314304 0030FF64 80 01 02 E4 */ lwz r0, 0x2e4(r1)
/* 80314308 0030FF68 7C 08 03 A6 */ mtlr r0
/* 8031430C 0030FF6C 38 21 02 E0 */ addi r1, r1, 0x2e0
/* 80314310 0030FF70 4E 80 00 20 */ blr
.global VFiPFFILE_p_fopen
VFiPFFILE_p_fopen:
/* 80314314 0030FF74 94 21 FA C0 */ stwu r1, -0x540(r1)
/* 80314318 0030FF78 7C 08 02 A6 */ mflr r0
/* 8031431C 0030FF7C 38 E0 00 01 */ li r7, 1
/* 80314320 0030FF80 90 01 05 44 */ stw r0, 0x544(r1)
/* 80314324 0030FF84 38 00 00 00 */ li r0, 0
/* 80314328 0030FF88 93 E1 05 3C */ stw r31, 0x53c(r1)
/* 8031432C 0030FF8C 7C 9F 23 78 */ mr r31, r4
/* 80314330 0030FF90 38 81 02 E8 */ addi r4, r1, 0x2e8
/* 80314334 0030FF94 93 C1 05 38 */ stw r30, 0x538(r1)
/* 80314338 0030FF98 7C DE 33 78 */ mr r30, r6
/* 8031433C 0030FF9C 93 A1 05 34 */ stw r29, 0x534(r1)
/* 80314340 0030FFA0 7C BD 2B 78 */ mr r29, r5
/* 80314344 0030FFA4 93 81 05 30 */ stw r28, 0x530(r1)
/* 80314348 0030FFA8 7C 7C 1B 78 */ mr r28, r3
/* 8031434C 0030FFAC 7F 85 E3 78 */ mr r5, r28
/* 80314350 0030FFB0 38 61 00 78 */ addi r3, r1, 0x78
/* 80314354 0030FFB4 90 06 00 00 */ stw r0, 0(r6)
/* 80314358 0030FFB8 7F E6 FB 78 */ mr r6, r31
/* 8031435C 0030FFBC 4B FF A1 D1 */ bl VFiPFENT_ITER_GetEntryOfPath
/* 80314360 0030FFC0 2C 03 00 00 */ cmpwi r3, 0
/* 80314364 0030FFC4 41 82 00 08 */ beq lbl_8031436C
/* 80314368 0030FFC8 48 00 04 7C */ b lbl_803147E4
lbl_8031436C:
/* 8031436C 0030FFCC 88 01 05 04 */ lbz r0, 0x504(r1)
/* 80314370 0030FFD0 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
/* 80314374 0030FFD4 40 82 00 0C */ bne lbl_80314380
/* 80314378 0030FFD8 38 60 00 01 */ li r3, 1
/* 8031437C 0030FFDC 48 00 04 68 */ b lbl_803147E4
lbl_80314380:
/* 80314380 0030FFE0 7F E3 FB 78 */ mr r3, r31
/* 80314384 0030FFE4 38 81 00 20 */ addi r4, r1, 0x20
/* 80314388 0030FFE8 38 A1 00 30 */ addi r5, r1, 0x30
/* 8031438C 0030FFEC 48 00 2B 01 */ bl VFiPFPATH_SplitPath
/* 80314390 0030FFF0 2C 03 00 00 */ cmpwi r3, 0
/* 80314394 0030FFF4 41 82 00 0C */ beq lbl_803143A0
/* 80314398 0030FFF8 38 60 00 01 */ li r3, 1
/* 8031439C 0030FFFC 48 00 04 48 */ b lbl_803147E4
lbl_803143A0:
/* 803143A0 00310000 38 61 00 30 */ addi r3, r1, 0x30
/* 803143A4 00310004 38 80 00 01 */ li r4, 1
/* 803143A8 00310008 4B FF 11 35 */ bl VFiPFSTR_StrNumChar
/* 803143AC 0031000C 54 7F 04 3E */ clrlwi r31, r3, 0x10
/* 803143B0 00310010 2C 1F 00 FF */ cmpwi r31, 0xff
/* 803143B4 00310014 40 81 00 0C */ ble lbl_803143C0
/* 803143B8 00310018 38 60 00 01 */ li r3, 1
/* 803143BC 0031001C 48 00 04 28 */ b lbl_803147E4
lbl_803143C0:
/* 803143C0 00310020 38 61 00 30 */ addi r3, r1, 0x30
/* 803143C4 00310024 4B FF 0F 1D */ bl VFiPFSTR_GetCodeMode
/* 803143C8 00310028 28 03 00 02 */ cmplwi r3, 2
/* 803143CC 0031002C 40 82 00 1C */ bne lbl_803143E8
/* 803143D0 00310030 38 61 00 30 */ addi r3, r1, 0x30
/* 803143D4 00310034 38 80 00 01 */ li r4, 1
/* 803143D8 00310038 4B FF 0F 39 */ bl VFiPFSTR_GetStrPos
/* 803143DC 0031003C 7C 64 1B 78 */ mr r4, r3
/* 803143E0 00310040 38 61 00 E8 */ addi r3, r1, 0xe8
/* 803143E4 00310044 48 00 34 FD */ bl VFiPFPATH_transformFromUnicodeToNormal
lbl_803143E8:
/* 803143E8 00310048 38 61 00 30 */ addi r3, r1, 0x30
/* 803143EC 0031004C 38 81 00 E8 */ addi r4, r1, 0xe8
/* 803143F0 00310050 4B FF 0E F9 */ bl VFiPFSTR_SetLocalStr
/* 803143F4 00310054 57 A0 07 BD */ rlwinm. r0, r29, 0, 0x1e, 0x1e
/* 803143F8 00310058 41 82 00 84 */ beq lbl_8031447C
/* 803143FC 0031005C 80 A1 05 14 */ lwz r5, 0x514(r1)
/* 80314400 00310060 38 61 00 40 */ addi r3, r1, 0x40
/* 80314404 00310064 38 81 00 10 */ addi r4, r1, 0x10
/* 80314408 00310068 38 C1 05 1C */ addi r6, r1, 0x51c
/* 8031440C 0031006C 4B FF CC BD */ bl VFiPFFAT_InitFFD
/* 80314410 00310070 38 61 00 40 */ addi r3, r1, 0x40
/* 80314414 00310074 38 81 02 E8 */ addi r4, r1, 0x2e8
/* 80314418 00310078 38 C1 00 30 */ addi r6, r1, 0x30
/* 8031441C 0031007C 38 A0 00 00 */ li r5, 0
/* 80314420 00310080 38 E0 00 7F */ li r7, 0x7f
/* 80314424 00310084 39 00 00 00 */ li r8, 0
/* 80314428 00310088 4B FF 7F 75 */ bl VFiPFENT_findEntry
/* 8031442C 0031008C 2C 03 00 00 */ cmpwi r3, 0
/* 80314430 00310090 41 82 00 0C */ beq lbl_8031443C
/* 80314434 00310094 38 60 00 03 */ li r3, 3
/* 80314438 00310098 48 00 03 AC */ b lbl_803147E4
lbl_8031443C:
/* 8031443C 0031009C 57 A0 07 39 */ rlwinm. r0, r29, 0, 0x1c, 0x1c
/* 80314440 003100A0 41 82 00 18 */ beq lbl_80314458
/* 80314444 003100A4 88 01 05 04 */ lbz r0, 0x504(r1)
/* 80314448 003100A8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 8031444C 003100AC 41 82 00 0C */ beq lbl_80314458
/* 80314450 003100B0 38 60 00 0A */ li r3, 0xa
/* 80314454 003100B4 48 00 03 90 */ b lbl_803147E4
lbl_80314458:
/* 80314458 003100B8 88 01 05 04 */ lbz r0, 0x504(r1)
/* 8031445C 003100BC 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
/* 80314460 003100C0 41 82 00 0C */ beq lbl_8031446C
/* 80314464 003100C4 38 60 00 17 */ li r3, 0x17
/* 80314468 003100C8 48 00 03 7C */ b lbl_803147E4
lbl_8031446C:
/* 8031446C 003100CC 38 61 05 0A */ addi r3, r1, 0x50a
/* 80314470 003100D0 38 81 00 08 */ addi r4, r1, 8
/* 80314474 003100D4 4B FF 87 05 */ bl VFiPFENT_getcurrentDateTimeForEnt
/* 80314478 003100D8 48 00 01 44 */ b lbl_803145BC
lbl_8031447C:
/* 8031447C 003100DC 80 01 05 18 */ lwz r0, 0x518(r1)
/* 80314480 003100E0 7C 1F 02 14 */ add r0, r31, r0
/* 80314484 003100E4 28 00 01 03 */ cmplwi r0, 0x103
/* 80314488 003100E8 40 81 00 0C */ ble lbl_80314494
/* 8031448C 003100EC 38 60 00 01 */ li r3, 1
/* 80314490 003100F0 48 00 03 54 */ b lbl_803147E4
lbl_80314494:
/* 80314494 003100F4 7F 83 E3 78 */ mr r3, r28
/* 80314498 003100F8 7F E6 FB 78 */ mr r6, r31
/* 8031449C 003100FC 38 81 02 E8 */ addi r4, r1, 0x2e8
/* 803144A0 00310100 38 A1 00 30 */ addi r5, r1, 0x30
/* 803144A4 00310104 4B FF FB 5D */ bl VFiPFFILE_createEmptyFile
/* 803144A8 00310108 2C 03 00 08 */ cmpwi r3, 8
/* 803144AC 0031010C 40 82 01 04 */ bne lbl_803145B0
/* 803144B0 00310110 57 A0 06 F7 */ rlwinm. r0, r29, 0, 0x1b, 0x1b
/* 803144B4 00310114 41 82 00 0C */ beq lbl_803144C0
/* 803144B8 00310118 38 60 00 08 */ li r3, 8
/* 803144BC 0031011C 48 00 03 28 */ b lbl_803147E4
lbl_803144C0:
/* 803144C0 00310120 57 BF 07 FF */ clrlwi. r31, r29, 0x1f
/* 803144C4 00310124 41 82 00 44 */ beq lbl_80314508
/* 803144C8 00310128 38 00 00 00 */ li r0, 0
/* 803144CC 0031012C 34 61 02 E8 */ addic. r3, r1, 0x2e8
/* 803144D0 00310130 90 01 00 0C */ stw r0, 0xc(r1)
/* 803144D4 00310134 40 82 00 0C */ bne lbl_803144E0
/* 803144D8 00310138 38 00 00 00 */ li r0, 0
/* 803144DC 0031013C 48 00 00 1C */ b lbl_803144F8
lbl_803144E0:
/* 803144E0 00310140 38 81 00 0C */ addi r4, r1, 0xc
/* 803144E4 00310144 48 00 07 61 */ bl VFiPFFILE_GetOpenedFile
/* 803144E8 00310148 80 61 00 0C */ lwz r3, 0xc(r1)
/* 803144EC 0031014C 7C 03 00 D0 */ neg r0, r3
/* 803144F0 00310150 7C 00 1B 78 */ or r0, r0, r3
/* 803144F4 00310154 54 00 0F FE */ srwi r0, r0, 0x1f
lbl_803144F8:
/* 803144F8 00310158 2C 00 00 00 */ cmpwi r0, 0
/* 803144FC 0031015C 41 82 00 0C */ beq lbl_80314508
/* 80314500 00310160 38 60 00 08 */ li r3, 8
/* 80314504 00310164 48 00 02 E0 */ b lbl_803147E4
lbl_80314508:
/* 80314508 00310168 88 61 05 04 */ lbz r3, 0x504(r1)
/* 8031450C 0031016C 54 60 07 FF */ clrlwi. r0, r3, 0x1f
/* 80314510 00310170 41 82 00 24 */ beq lbl_80314534
/* 80314514 00310174 2C 1F 00 00 */ cmpwi r31, 0
/* 80314518 00310178 40 82 00 14 */ bne lbl_8031452C
/* 8031451C 0031017C 57 A0 07 7B */ rlwinm. r0, r29, 0, 0x1d, 0x1d
/* 80314520 00310180 40 82 00 0C */ bne lbl_8031452C
/* 80314524 00310184 57 A0 07 39 */ rlwinm. r0, r29, 0, 0x1c, 0x1c
/* 80314528 00310188 41 82 00 0C */ beq lbl_80314534
lbl_8031452C:
/* 8031452C 0031018C 38 60 00 0A */ li r3, 0xa
/* 80314530 00310190 48 00 02 B4 */ b lbl_803147E4
lbl_80314534:
/* 80314534 00310194 54 60 06 F7 */ rlwinm. r0, r3, 0, 0x1b, 0x1b
/* 80314538 00310198 41 82 00 0C */ beq lbl_80314544
/* 8031453C 0031019C 38 60 00 17 */ li r3, 0x17
/* 80314540 003101A0 48 00 02 A4 */ b lbl_803147E4
lbl_80314544:
/* 80314544 003101A4 2C 1F 00 00 */ cmpwi r31, 0
/* 80314548 003101A8 41 82 00 58 */ beq lbl_803145A0
/* 8031454C 003101AC 80 81 05 1C */ lwz r4, 0x51c(r1)
/* 80314550 003101B0 28 04 00 02 */ cmplwi r4, 2
/* 80314554 003101B4 41 80 00 28 */ blt lbl_8031457C
/* 80314558 003101B8 3C 04 00 01 */ addis r0, r4, 1
/* 8031455C 003101BC 28 00 FF FF */ cmplwi r0, 0xffff
/* 80314560 003101C0 41 82 00 1C */ beq lbl_8031457C
/* 80314564 003101C4 80 C1 05 10 */ lwz r6, 0x510(r1)
/* 80314568 003101C8 2C 06 00 00 */ cmpwi r6, 0
/* 8031456C 003101CC 41 82 00 10 */ beq lbl_8031457C
/* 80314570 003101D0 38 61 00 80 */ addi r3, r1, 0x80
/* 80314574 003101D4 38 A0 FF FF */ li r5, -1
/* 80314578 003101D8 4B FF BE B1 */ bl VFiPFFAT_FreeChain
lbl_8031457C:
/* 8031457C 003101DC 38 00 00 00 */ li r0, 0
/* 80314580 003101E0 38 61 05 0E */ addi r3, r1, 0x50e
/* 80314584 003101E4 90 01 05 1C */ stw r0, 0x51c(r1)
/* 80314588 003101E8 38 81 05 0C */ addi r4, r1, 0x50c
/* 8031458C 003101EC 90 01 05 10 */ stw r0, 0x510(r1)
/* 80314590 003101F0 4B FF 85 E9 */ bl VFiPFENT_getcurrentDateTimeForEnt
/* 80314594 003101F4 A0 01 05 0E */ lhz r0, 0x50e(r1)
/* 80314598 003101F8 B0 01 05 0A */ sth r0, 0x50a(r1)
/* 8031459C 003101FC 48 00 00 20 */ b lbl_803145BC
lbl_803145A0:
/* 803145A0 00310200 38 61 05 0A */ addi r3, r1, 0x50a
/* 803145A4 00310204 38 81 00 08 */ addi r4, r1, 8
/* 803145A8 00310208 4B FF 85 D1 */ bl VFiPFENT_getcurrentDateTimeForEnt
/* 803145AC 0031020C 48 00 00 10 */ b lbl_803145BC
lbl_803145B0:
/* 803145B0 00310210 2C 03 00 00 */ cmpwi r3, 0
/* 803145B4 00310214 41 82 00 08 */ beq lbl_803145BC
/* 803145B8 00310218 48 00 02 2C */ b lbl_803147E4
lbl_803145BC:
/* 803145BC 0031021C 83 81 05 14 */ lwz r28, 0x514(r1)
/* 803145C0 00310220 38 81 02 E8 */ addi r4, r1, 0x2e8
/* 803145C4 00310224 7F 83 E3 78 */ mr r3, r28
/* 803145C8 00310228 4B FF F8 69 */ bl VFiPFFILE_GetSFD
/* 803145CC 0031022C 2C 03 00 00 */ cmpwi r3, 0
/* 803145D0 00310230 40 82 00 0C */ bne lbl_803145DC
/* 803145D4 00310234 38 60 00 15 */ li r3, 0x15
/* 803145D8 00310238 48 00 02 0C */ b lbl_803147E4
lbl_803145DC:
/* 803145DC 0031023C 38 00 00 05 */ li r0, 5
/* 803145E0 00310240 7F 85 E3 78 */ mr r5, r28
/* 803145E4 00310244 38 80 00 00 */ li r4, 0
/* 803145E8 00310248 7C 09 03 A6 */ mtctr r0
lbl_803145EC:
/* 803145EC 0031024C 80 05 0D 10 */ lwz r0, 0xd10(r5)
/* 803145F0 00310250 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 803145F4 00310254 40 82 00 14 */ bne lbl_80314608
/* 803145F8 00310258 1C 04 00 30 */ mulli r0, r4, 0x30
/* 803145FC 0031025C 7C 9C 02 14 */ add r4, r28, r0
/* 80314600 00310260 3B E4 0D 10 */ addi r31, r4, 0xd10
/* 80314604 00310264 48 00 00 14 */ b lbl_80314618
lbl_80314608:
/* 80314608 00310268 38 A5 00 30 */ addi r5, r5, 0x30
/* 8031460C 0031026C 38 84 00 01 */ addi r4, r4, 1
/* 80314610 00310270 42 00 FF DC */ bdnz lbl_803145EC
/* 80314614 00310274 3B E0 00 00 */ li r31, 0
lbl_80314618:
/* 80314618 00310278 2C 1F 00 00 */ cmpwi r31, 0
/* 8031461C 0031027C 40 82 00 34 */ bne lbl_80314650
/* 80314620 00310280 A0 83 02 8C */ lhz r4, 0x28c(r3)
/* 80314624 00310284 38 84 FF FF */ addi r4, r4, -1
/* 80314628 00310288 54 80 04 3F */ clrlwi. r0, r4, 0x10
/* 8031462C 0031028C B0 83 02 8C */ sth r4, 0x28c(r3)
/* 80314630 00310290 40 82 00 18 */ bne lbl_80314648
/* 80314634 00310294 80 83 00 00 */ lwz r4, 0(r3)
/* 80314638 00310298 38 00 00 00 */ li r0, 0
/* 8031463C 0031029C 54 84 00 3C */ rlwinm r4, r4, 0, 0, 0x1e
/* 80314640 003102A0 90 83 00 00 */ stw r4, 0(r3)
/* 80314644 003102A4 90 03 00 20 */ stw r0, 0x20(r3)
lbl_80314648:
/* 80314648 003102A8 38 60 00 16 */ li r3, 0x16
/* 8031464C 003102AC 48 00 01 98 */ b lbl_803147E4
lbl_80314650:
/* 80314650 003102B0 90 7F 00 08 */ stw r3, 8(r31)
/* 80314654 003102B4 38 80 00 01 */ li r4, 1
/* 80314658 003102B8 38 00 00 00 */ li r0, 0
/* 8031465C 003102BC 38 7F 00 0C */ addi r3, r31, 0xc
/* 80314660 003102C0 90 9F 00 00 */ stw r4, 0(r31)
/* 80314664 003102C4 93 BF 00 04 */ stw r29, 4(r31)
/* 80314668 003102C8 90 1F 00 18 */ stw r0, 0x18(r31)
/* 8031466C 003102CC B0 1F 00 2C */ sth r0, 0x2c(r31)
/* 80314670 003102D0 4B FF C7 29 */ bl VFiPFFAT_InitHint
/* 80314674 003102D4 38 00 FF FF */ li r0, -1
/* 80314678 003102D8 2C 1F 00 00 */ cmpwi r31, 0
/* 8031467C 003102DC 90 1F 00 20 */ stw r0, 0x20(r31)
/* 80314680 003102E0 40 82 00 0C */ bne lbl_8031468C
/* 80314684 003102E4 38 80 00 00 */ li r4, 0
/* 80314688 003102E8 48 00 00 0C */ b lbl_80314694
lbl_8031468C:
/* 8031468C 003102EC 80 7F 00 08 */ lwz r3, 8(r31)
/* 80314690 003102F0 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_80314694:
/* 80314694 003102F4 A0 64 00 00 */ lhz r3, 0(r4)
/* 80314698 003102F8 80 BF 00 1C */ lwz r5, 0x1c(r31)
/* 8031469C 003102FC 38 03 FF FF */ addi r0, r3, -1
/* 803146A0 00310300 88 84 00 20 */ lbz r4, 0x20(r4)
/* 803146A4 00310304 7C A3 00 38 */ and r3, r5, r0
/* 803146A8 00310308 7C 03 00 D0 */ neg r0, r3
/* 803146AC 0031030C 7C A4 24 30 */ srw r4, r5, r4
/* 803146B0 00310310 7C 00 1B 78 */ or r0, r0, r3
/* 803146B4 00310314 54 00 0F FE */ srwi r0, r0, 0x1f
/* 803146B8 00310318 7C 04 02 15 */ add. r0, r4, r0
/* 803146BC 0031031C 41 82 00 0C */ beq lbl_803146C8
/* 803146C0 00310320 38 00 FF FF */ li r0, -1
/* 803146C4 00310324 90 1F 00 20 */ stw r0, 0x20(r31)
lbl_803146C8:
/* 803146C8 00310328 38 00 00 00 */ li r0, 0
/* 803146CC 0031032C 2C 1F 00 00 */ cmpwi r31, 0
/* 803146D0 00310330 90 1F 00 1C */ stw r0, 0x1c(r31)
/* 803146D4 00310334 40 82 00 0C */ bne lbl_803146E0
/* 803146D8 00310338 38 80 00 00 */ li r4, 0
/* 803146DC 0031033C 48 00 00 0C */ b lbl_803146E8
lbl_803146E0:
/* 803146E0 00310340 80 7F 00 08 */ lwz r3, 8(r31)
/* 803146E4 00310344 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_803146E8:
/* 803146E8 00310348 57 A0 07 FF */ clrlwi. r0, r29, 0x1f
/* 803146EC 0031034C 80 7F 00 1C */ lwz r3, 0x1c(r31)
/* 803146F0 00310350 88 04 00 20 */ lbz r0, 0x20(r4)
/* 803146F4 00310354 7C 60 04 30 */ srw r0, r3, r0
/* 803146F8 00310358 90 1F 00 24 */ stw r0, 0x24(r31)
/* 803146FC 0031035C A0 64 00 00 */ lhz r3, 0(r4)
/* 80314700 00310360 80 9F 00 1C */ lwz r4, 0x1c(r31)
/* 80314704 00310364 38 03 FF FF */ addi r0, r3, -1
/* 80314708 00310368 7C 80 00 38 */ and r0, r4, r0
/* 8031470C 0031036C B0 1F 00 28 */ sth r0, 0x28(r31)
/* 80314710 00310370 41 82 00 14 */ beq lbl_80314724
/* 80314714 00310374 80 7F 00 08 */ lwz r3, 8(r31)
/* 80314718 00310378 80 03 00 00 */ lwz r0, 0(r3)
/* 8031471C 0031037C 60 00 00 04 */ ori r0, r0, 4
/* 80314720 00310380 90 03 00 00 */ stw r0, 0(r3)
lbl_80314724:
/* 80314724 00310384 80 1F 00 04 */ lwz r0, 4(r31)
/* 80314728 00310388 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 8031472C 0031038C 41 82 00 B0 */ beq lbl_803147DC
/* 80314730 00310390 80 7F 00 08 */ lwz r3, 8(r31)
/* 80314734 00310394 2C 1F 00 00 */ cmpwi r31, 0
/* 80314738 00310398 81 03 02 64 */ lwz r8, 0x264(r3)
/* 8031473C 0031039C 40 82 00 0C */ bne lbl_80314748
/* 80314740 003103A0 38 80 00 00 */ li r4, 0
/* 80314744 003103A4 48 00 00 08 */ b lbl_8031474C
lbl_80314748:
/* 80314748 003103A8 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_8031474C:
/* 8031474C 003103AC A0 64 00 00 */ lhz r3, 0(r4)
/* 80314750 003103B0 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 80314754 003103B4 38 63 FF FF */ addi r3, r3, -1
/* 80314758 003103B8 88 84 00 20 */ lbz r4, 0x20(r4)
/* 8031475C 003103BC 7C 07 18 38 */ and r7, r0, r3
/* 80314760 003103C0 7C 05 24 30 */ srw r5, r0, r4
/* 80314764 003103C4 7D 03 18 38 */ and r3, r8, r3
/* 80314768 003103C8 7C C7 00 D0 */ neg r6, r7
/* 8031476C 003103CC 7D 04 24 30 */ srw r4, r8, r4
/* 80314770 003103D0 7C 03 00 D0 */ neg r0, r3
/* 80314774 003103D4 7C 00 1B 78 */ or r0, r0, r3
/* 80314778 003103D8 7C C6 3B 78 */ or r6, r6, r7
/* 8031477C 003103DC 54 C3 0F FE */ srwi r3, r6, 0x1f
/* 80314780 003103E0 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80314784 003103E4 7C 65 1A 14 */ add r3, r5, r3
/* 80314788 003103E8 7C 04 02 14 */ add r0, r4, r0
/* 8031478C 003103EC 7C 03 00 40 */ cmplw r3, r0
/* 80314790 003103F0 41 82 00 0C */ beq lbl_8031479C
/* 80314794 003103F4 38 00 FF FF */ li r0, -1
/* 80314798 003103F8 90 1F 00 20 */ stw r0, 0x20(r31)
lbl_8031479C:
/* 8031479C 003103FC 2C 1F 00 00 */ cmpwi r31, 0
/* 803147A0 00310400 91 1F 00 1C */ stw r8, 0x1c(r31)
/* 803147A4 00310404 40 82 00 0C */ bne lbl_803147B0
/* 803147A8 00310408 38 80 00 00 */ li r4, 0
/* 803147AC 0031040C 48 00 00 0C */ b lbl_803147B8
lbl_803147B0:
/* 803147B0 00310410 80 7F 00 08 */ lwz r3, 8(r31)
/* 803147B4 00310414 80 83 02 68 */ lwz r4, 0x268(r3)
lbl_803147B8:
/* 803147B8 00310418 80 7F 00 1C */ lwz r3, 0x1c(r31)
/* 803147BC 0031041C 88 04 00 20 */ lbz r0, 0x20(r4)
/* 803147C0 00310420 7C 60 04 30 */ srw r0, r3, r0
/* 803147C4 00310424 90 1F 00 24 */ stw r0, 0x24(r31)
/* 803147C8 00310428 A0 64 00 00 */ lhz r3, 0(r4)
/* 803147CC 0031042C 80 9F 00 1C */ lwz r4, 0x1c(r31)
/* 803147D0 00310430 38 03 FF FF */ addi r0, r3, -1
/* 803147D4 00310434 7C 80 00 38 */ and r0, r4, r0
/* 803147D8 00310438 B0 1F 00 28 */ sth r0, 0x28(r31)
lbl_803147DC:
/* 803147DC 0031043C 93 FE 00 00 */ stw r31, 0(r30)
/* 803147E0 00310440 38 60 00 00 */ li r3, 0
lbl_803147E4:
/* 803147E4 00310444 80 01 05 44 */ lwz r0, 0x544(r1)
/* 803147E8 00310448 83 E1 05 3C */ lwz r31, 0x53c(r1)
/* 803147EC 0031044C 83 C1 05 38 */ lwz r30, 0x538(r1)
/* 803147F0 00310450 83 A1 05 34 */ lwz r29, 0x534(r1)
/* 803147F4 00310454 83 81 05 30 */ lwz r28, 0x530(r1)
/* 803147F8 00310458 7C 08 03 A6 */ mtlr r0
/* 803147FC 0031045C 38 21 05 40 */ addi r1, r1, 0x540
/* 80314800 00310460 4E 80 00 20 */ blr
.global VFiPFFILE_p_fread
VFiPFFILE_p_fread:
/* 80314804 00310464 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80314808 00310468 7C 08 02 A6 */ mflr r0
/* 8031480C 0031046C 90 01 00 24 */ stw r0, 0x24(r1)
/* 80314810 00310470 38 00 00 00 */ li r0, 0
/* 80314814 00310474 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80314818 00310478 7D 1F 43 78 */ mr r31, r8
/* 8031481C 0031047C 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80314820 00310480 7C BE 2B 78 */ mr r30, r5
/* 80314824 00310484 90 01 00 08 */ stw r0, 8(r1)
/* 80314828 00310488 90 08 00 00 */ stw r0, 0(r8)
/* 8031482C 0031048C 80 67 00 04 */ lwz r3, 4(r7)
/* 80314830 00310490 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
/* 80314834 00310494 40 82 00 1C */ bne lbl_80314850
/* 80314838 00310498 54 60 07 FF */ clrlwi. r0, r3, 0x1f
/* 8031483C 0031049C 40 82 00 0C */ bne lbl_80314848
/* 80314840 003104A0 54 60 07 7B */ rlwinm. r0, r3, 0, 0x1d, 0x1d
/* 80314844 003104A4 41 82 00 0C */ beq lbl_80314850
lbl_80314848:
/* 80314848 003104A8 38 60 00 0A */ li r3, 0xa
/* 8031484C 003104AC 48 00 00 6C */ b lbl_803148B8
lbl_80314850:
/* 80314850 003104B0 81 07 00 08 */ lwz r8, 8(r7)
/* 80314854 003104B4 A0 08 02 7C */ lhz r0, 0x27c(r8)
/* 80314858 003104B8 54 00 07 BF */ clrlwi. r0, r0, 0x1e
/* 8031485C 003104BC 41 82 00 18 */ beq lbl_80314874
/* 80314860 003104C0 A0 07 00 2C */ lhz r0, 0x2c(r7)
/* 80314864 003104C4 2C 00 00 00 */ cmpwi r0, 0
/* 80314868 003104C8 40 82 00 0C */ bne lbl_80314874
/* 8031486C 003104CC 38 60 00 19 */ li r3, 0x19
/* 80314870 003104D0 48 00 00 48 */ b lbl_803148B8
lbl_80314874:
/* 80314874 003104D4 80 67 00 1C */ lwz r3, 0x1c(r7)
/* 80314878 003104D8 80 08 02 64 */ lwz r0, 0x264(r8)
/* 8031487C 003104DC 7C 03 00 40 */ cmplw r3, r0
/* 80314880 003104E0 41 80 00 0C */ blt lbl_8031488C
/* 80314884 003104E4 38 60 00 1C */ li r3, 0x1c
/* 80314888 003104E8 48 00 00 30 */ b lbl_803148B8
lbl_8031488C:
/* 8031488C 003104EC 7C A5 31 D6 */ mullw r5, r5, r6
/* 80314890 003104F0 7C E3 3B 78 */ mr r3, r7
/* 80314894 003104F4 38 C1 00 08 */ addi r6, r1, 8
/* 80314898 003104F8 4B FF E7 85 */ bl VFiPFFILE_Cursor_Read
/* 8031489C 003104FC 80 81 00 08 */ lwz r4, 8(r1)
/* 803148A0 00310500 7C 03 00 D0 */ neg r0, r3
/* 803148A4 00310504 7C 00 1B 78 */ or r0, r0, r3
/* 803148A8 00310508 7C 84 F3 96 */ divwu r4, r4, r30
/* 803148AC 0031050C 7C 00 FE 70 */ srawi r0, r0, 0x1f
/* 803148B0 00310510 7C 63 00 38 */ and r3, r3, r0
/* 803148B4 00310514 90 9F 00 00 */ stw r4, 0(r31)
lbl_803148B8:
/* 803148B8 00310518 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803148BC 0031051C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803148C0 00310520 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 803148C4 00310524 7C 08 03 A6 */ mtlr r0
/* 803148C8 00310528 38 21 00 20 */ addi r1, r1, 0x20
/* 803148CC 0031052C 4E 80 00 20 */ blr
.global VFiPFFILE_p_fwrite
VFiPFFILE_p_fwrite:
/* 803148D0 00310530 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 803148D4 00310534 7C 08 02 A6 */ mflr r0
/* 803148D8 00310538 90 01 00 34 */ stw r0, 0x34(r1)
/* 803148DC 0031053C 39 61 00 30 */ addi r11, r1, 0x30
/* 803148E0 00310540 4B EB 28 41 */ bl _savegpr_25
/* 803148E4 00310544 38 00 00 00 */ li r0, 0
/* 803148E8 00310548 7C 9B 23 78 */ mr r27, r4
/* 803148EC 0031054C 90 01 00 08 */ stw r0, 8(r1)
/* 803148F0 00310550 7C 7A 1B 78 */ mr r26, r3
/* 803148F4 00310554 7C BC 2B 78 */ mr r28, r5
/* 803148F8 00310558 7C DD 33 78 */ mr r29, r6
/* 803148FC 0031055C 90 08 00 00 */ stw r0, 0(r8)
/* 80314900 00310560 7C FE 3B 78 */ mr r30, r7
/* 80314904 00310564 7D 1F 43 78 */ mr r31, r8
/* 80314908 00310568 80 87 00 04 */ lwz r4, 4(r7)
/* 8031490C 0031056C 54 80 07 39 */ rlwinm. r0, r4, 0, 0x1c, 0x1c
/* 80314910 00310570 40 82 00 14 */ bne lbl_80314924
/* 80314914 00310574 54 80 07 BD */ rlwinm. r0, r4, 0, 0x1e, 0x1e
/* 80314918 00310578 41 82 00 0C */ beq lbl_80314924
/* 8031491C 0031057C 38 60 00 0A */ li r3, 0xa
/* 80314920 00310580 48 00 01 EC */ b lbl_80314B0C
lbl_80314924:
/* 80314924 00310584 80 A7 00 08 */ lwz r5, 8(r7)
/* 80314928 00310588 A0 C5 02 7C */ lhz r6, 0x27c(r5)
/* 8031492C 0031058C 54 C0 07 BF */ clrlwi. r0, r6, 0x1e
/* 80314930 00310590 41 82 00 28 */ beq lbl_80314958
/* 80314934 00310594 54 C0 07 FF */ clrlwi. r0, r6, 0x1f
/* 80314938 00310598 40 82 00 18 */ bne lbl_80314950
/* 8031493C 0031059C 54 C0 07 BD */ rlwinm. r0, r6, 0, 0x1e, 0x1e
/* 80314940 003105A0 41 82 00 18 */ beq lbl_80314958
/* 80314944 003105A4 A0 07 00 2C */ lhz r0, 0x2c(r7)
/* 80314948 003105A8 2C 00 00 00 */ cmpwi r0, 0
/* 8031494C 003105AC 40 82 00 0C */ bne lbl_80314958
lbl_80314950:
/* 80314950 003105B0 38 60 00 19 */ li r3, 0x19
/* 80314954 003105B4 48 00 01 B8 */ b lbl_80314B0C
lbl_80314958:
/* 80314958 003105B8 54 80 07 7B */ rlwinm. r0, r4, 0, 0x1d, 0x1d
/* 8031495C 003105BC 41 82 00 A8 */ beq lbl_80314A04
/* 80314960 003105C0 2C 07 00 00 */ cmpwi r7, 0
/* 80314964 003105C4 81 45 02 64 */ lwz r10, 0x264(r5)
/* 80314968 003105C8 40 82 00 0C */ bne lbl_80314974
/* 8031496C 003105CC 38 A0 00 00 */ li r5, 0
/* 80314970 003105D0 48 00 00 08 */ b lbl_80314978
lbl_80314974:
/* 80314974 003105D4 80 A5 02 68 */ lwz r5, 0x268(r5)
lbl_80314978:
/* 80314978 003105D8 A0 85 00 00 */ lhz r4, 0(r5)
/* 8031497C 003105DC 80 07 00 1C */ lwz r0, 0x1c(r7)
/* 80314980 003105E0 38 84 FF FF */ addi r4, r4, -1
/* 80314984 003105E4 88 A5 00 20 */ lbz r5, 0x20(r5)
/* 80314988 003105E8 7C 09 20 38 */ and r9, r0, r4
/* 8031498C 003105EC 7C 06 2C 30 */ srw r6, r0, r5
/* 80314990 003105F0 7D 44 20 38 */ and r4, r10, r4
/* 80314994 003105F4 7D 09 00 D0 */ neg r8, r9
/* 80314998 003105F8 7D 45 2C 30 */ srw r5, r10, r5
/* 8031499C 003105FC 7C 04 00 D0 */ neg r0, r4
/* 803149A0 00310600 7C 00 23 78 */ or r0, r0, r4
/* 803149A4 00310604 7D 08 4B 78 */ or r8, r8, r9
/* 803149A8 00310608 55 04 0F FE */ srwi r4, r8, 0x1f
/* 803149AC 0031060C 54 00 0F FE */ srwi r0, r0, 0x1f
/* 803149B0 00310610 7C 86 22 14 */ add r4, r6, r4
/* 803149B4 00310614 7C 05 02 14 */ add r0, r5, r0
/* 803149B8 00310618 7C 04 00 40 */ cmplw r4, r0
/* 803149BC 0031061C 41 82 00 0C */ beq lbl_803149C8
/* 803149C0 00310620 38 00 FF FF */ li r0, -1
/* 803149C4 00310624 90 07 00 20 */ stw r0, 0x20(r7)
lbl_803149C8:
/* 803149C8 00310628 2C 07 00 00 */ cmpwi r7, 0
/* 803149CC 0031062C 91 47 00 1C */ stw r10, 0x1c(r7)
/* 803149D0 00310630 40 82 00 0C */ bne lbl_803149DC
/* 803149D4 00310634 38 80 00 00 */ li r4, 0
/* 803149D8 00310638 48 00 00 0C */ b lbl_803149E4
lbl_803149DC:
/* 803149DC 0031063C 80 87 00 08 */ lwz r4, 8(r7)
/* 803149E0 00310640 80 84 02 68 */ lwz r4, 0x268(r4)
lbl_803149E4:
/* 803149E4 00310644 80 A7 00 1C */ lwz r5, 0x1c(r7)
/* 803149E8 00310648 88 04 00 20 */ lbz r0, 0x20(r4)
/* 803149EC 0031064C 7C A0 04 30 */ srw r0, r5, r0
/* 803149F0 00310650 90 07 00 24 */ stw r0, 0x24(r7)
/* 803149F4 00310654 A0 84 00 00 */ lhz r4, 0(r4)
/* 803149F8 00310658 38 04 FF FF */ addi r0, r4, -1
/* 803149FC 0031065C 7C A0 00 38 */ and r0, r5, r0
/* 80314A00 00310660 B0 07 00 28 */ sth r0, 0x28(r7)
lbl_80314A04:
/* 80314A04 00310664 80 87 00 08 */ lwz r4, 8(r7)
/* 80314A08 00310668 80 07 00 1C */ lwz r0, 0x1c(r7)
/* 80314A0C 0031066C 81 04 02 64 */ lwz r8, 0x264(r4)
/* 80314A10 00310670 7C 00 40 40 */ cmplw r0, r8
/* 80314A14 00310674 40 81 00 C8 */ ble lbl_80314ADC
/* 80314A18 00310678 91 07 00 1C */ stw r8, 0x1c(r7)
/* 80314A1C 0031067C 7F 28 00 50 */ subf r25, r8, r0
/* 80314A20 00310680 38 A1 00 0C */ addi r5, r1, 0xc
/* 80314A24 00310684 38 80 FF FF */ li r4, -1
/* 80314A28 00310688 88 03 00 20 */ lbz r0, 0x20(r3)
/* 80314A2C 0031068C 7D 00 04 30 */ srw r0, r8, r0
/* 80314A30 00310690 90 07 00 24 */ stw r0, 0x24(r7)
/* 80314A34 00310694 A0 C3 00 00 */ lhz r6, 0(r3)
/* 80314A38 00310698 7F 43 D3 78 */ mr r3, r26
/* 80314A3C 0031069C 38 06 FF FF */ addi r0, r6, -1
/* 80314A40 003106A0 7D 00 00 38 */ and r0, r8, r0
/* 80314A44 003106A4 B0 07 00 28 */ sth r0, 0x28(r7)
/* 80314A48 003106A8 4B FF 5C 71 */ bl VFiPFCACHE_AllocateDataPage
/* 80314A4C 003106AC 2C 03 00 00 */ cmpwi r3, 0
/* 80314A50 003106B0 41 82 00 08 */ beq lbl_80314A58
/* 80314A54 003106B4 48 00 00 B8 */ b lbl_80314B0C
lbl_80314A58:
/* 80314A58 003106B8 80 61 00 0C */ lwz r3, 0xc(r1)
/* 80314A5C 003106BC 38 80 00 00 */ li r4, 0
/* 80314A60 003106C0 A0 BA 00 00 */ lhz r5, 0(r26)
/* 80314A64 003106C4 80 63 00 08 */ lwz r3, 8(r3)
/* 80314A68 003106C8 4B FF 05 6D */ bl VFipf_memset
/* 80314A6C 003106CC 48 00 00 5C */ b lbl_80314AC8
lbl_80314A70:
/* 80314A70 003106D0 A0 BA 00 00 */ lhz r5, 0(r26)
/* 80314A74 003106D4 7C 19 28 40 */ cmplw r25, r5
/* 80314A78 003106D8 40 81 00 24 */ ble lbl_80314A9C
/* 80314A7C 003106DC 80 81 00 0C */ lwz r4, 0xc(r1)
/* 80314A80 003106E0 7F C3 F3 78 */ mr r3, r30
/* 80314A84 003106E4 38 C1 00 08 */ addi r6, r1, 8
/* 80314A88 003106E8 80 84 00 08 */ lwz r4, 8(r4)
/* 80314A8C 003106EC 4B FF EE 4D */ bl VFiPFFILE_Cursor_Write
/* 80314A90 003106F0 2C 03 00 00 */ cmpwi r3, 0
/* 80314A94 003106F4 41 82 00 2C */ beq lbl_80314AC0
/* 80314A98 003106F8 48 00 00 74 */ b lbl_80314B0C
lbl_80314A9C:
/* 80314A9C 003106FC 80 81 00 0C */ lwz r4, 0xc(r1)
/* 80314AA0 00310700 7F C3 F3 78 */ mr r3, r30
/* 80314AA4 00310704 7F 25 CB 78 */ mr r5, r25
/* 80314AA8 00310708 38 C1 00 08 */ addi r6, r1, 8
/* 80314AAC 0031070C 80 84 00 08 */ lwz r4, 8(r4)
/* 80314AB0 00310710 4B FF EE 29 */ bl VFiPFFILE_Cursor_Write
/* 80314AB4 00310714 2C 03 00 00 */ cmpwi r3, 0
/* 80314AB8 00310718 41 82 00 18 */ beq lbl_80314AD0
/* 80314ABC 0031071C 48 00 00 50 */ b lbl_80314B0C
lbl_80314AC0:
/* 80314AC0 00310720 A0 1A 00 00 */ lhz r0, 0(r26)
/* 80314AC4 00310724 7F 20 C8 50 */ subf r25, r0, r25
lbl_80314AC8:
/* 80314AC8 00310728 2C 19 00 00 */ cmpwi r25, 0
/* 80314ACC 0031072C 40 82 FF A4 */ bne lbl_80314A70
lbl_80314AD0:
/* 80314AD0 00310730 80 81 00 0C */ lwz r4, 0xc(r1)
/* 80314AD4 00310734 7F 43 D3 78 */ mr r3, r26
/* 80314AD8 00310738 4B FF 5C E5 */ bl VFiPFCACHE_FreeDataPage
lbl_80314ADC:
/* 80314ADC 0031073C 7C BC E9 D6 */ mullw r5, r28, r29
/* 80314AE0 00310740 7F C3 F3 78 */ mr r3, r30
/* 80314AE4 00310744 7F 64 DB 78 */ mr r4, r27
/* 80314AE8 00310748 38 C1 00 08 */ addi r6, r1, 8
/* 80314AEC 0031074C 4B FF ED ED */ bl VFiPFFILE_Cursor_Write
/* 80314AF0 00310750 80 01 00 08 */ lwz r0, 8(r1)
/* 80314AF4 00310754 2C 03 00 00 */ cmpwi r3, 0
/* 80314AF8 00310758 7C 00 E3 96 */ divwu r0, r0, r28
/* 80314AFC 0031075C 90 1F 00 00 */ stw r0, 0(r31)
/* 80314B00 00310760 41 82 00 08 */ beq lbl_80314B08
/* 80314B04 00310764 48 00 00 08 */ b lbl_80314B0C
lbl_80314B08:
/* 80314B08 00310768 38 60 00 00 */ li r3, 0
lbl_80314B0C:
/* 80314B0C 0031076C 39 61 00 30 */ addi r11, r1, 0x30
/* 80314B10 00310770 4B EB 26 5D */ bl _restgpr_25
/* 80314B14 00310774 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80314B18 00310778 7C 08 03 A6 */ mtlr r0
/* 80314B1C 0031077C 38 21 00 30 */ addi r1, r1, 0x30
/* 80314B20 00310780 4E 80 00 20 */ blr
.global VFiPFFILE_p_finfo
VFiPFFILE_p_finfo:
/* 80314B24 00310784 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80314B28 00310788 7C 08 02 A6 */ mflr r0
/* 80314B2C 0031078C 2C 03 00 00 */ cmpwi r3, 0
/* 80314B30 00310790 90 01 00 24 */ stw r0, 0x24(r1)
/* 80314B34 00310794 38 03 00 0C */ addi r0, r3, 0xc
/* 80314B38 00310798 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80314B3C 0031079C 7C 9F 23 78 */ mr r31, r4
/* 80314B40 003107A0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80314B44 003107A4 7C 7E 1B 78 */ mr r30, r3
/* 80314B48 003107A8 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80314B4C 003107AC 80 A3 00 08 */ lwz r5, 8(r3)
/* 80314B50 003107B0 90 05 00 34 */ stw r0, 0x34(r5)
/* 80314B54 003107B4 40 82 00 0C */ bne lbl_80314B60
/* 80314B58 003107B8 38 C0 00 00 */ li r6, 0
/* 80314B5C 003107BC 48 00 00 0C */ b lbl_80314B68
lbl_80314B60:
/* 80314B60 003107C0 80 A3 00 08 */ lwz r5, 8(r3)
/* 80314B64 003107C4 80 C5 02 68 */ lwz r6, 0x268(r5)
lbl_80314B68:
/* 80314B68 003107C8 80 A3 00 08 */ lwz r5, 8(r3)
/* 80314B6C 003107CC 80 05 02 64 */ lwz r0, 0x264(r5)
/* 80314B70 003107D0 90 04 00 00 */ stw r0, 0(r4)
/* 80314B74 003107D4 80 03 00 1C */ lwz r0, 0x1c(r3)
/* 80314B78 003107D8 90 04 00 04 */ stw r0, 4(r4)
/* 80314B7C 003107DC 80 63 00 08 */ lwz r3, 8(r3)
/* 80314B80 003107E0 A0 A6 00 00 */ lhz r5, 0(r6)
/* 80314B84 003107E4 80 03 02 70 */ lwz r0, 0x270(r3)
/* 80314B88 003107E8 88 66 00 21 */ lbz r3, 0x21(r6)
/* 80314B8C 003107EC 2C 00 00 00 */ cmpwi r0, 0
/* 80314B90 003107F0 7C BD 18 30 */ slw r29, r5, r3
/* 80314B94 003107F4 41 82 00 54 */ beq lbl_80314BE8
/* 80314B98 003107F8 7F C3 F3 78 */ mr r3, r30
/* 80314B9C 003107FC 38 84 00 0C */ addi r4, r4, 0xc
/* 80314BA0 00310800 4B FF 64 F1 */ bl VFiPFCLUSTER_GetAppendSize
/* 80314BA4 00310804 2C 03 00 00 */ cmpwi r3, 0
/* 80314BA8 00310808 41 82 00 08 */ beq lbl_80314BB0
/* 80314BAC 0031080C 48 00 00 7C */ b lbl_80314C28
lbl_80314BB0:
/* 80314BB0 00310810 80 7E 00 08 */ lwz r3, 8(r30)
/* 80314BB4 00310814 80 9F 00 0C */ lwz r4, 0xc(r31)
/* 80314BB8 00310818 80 63 02 64 */ lwz r3, 0x264(r3)
/* 80314BBC 0031081C 7C 03 EB 96 */ divwu r0, r3, r29
/* 80314BC0 00310820 7C 00 E9 D6 */ mullw r0, r0, r29
/* 80314BC4 00310824 7C A0 18 50 */ subf r5, r0, r3
/* 80314BC8 00310828 7C 05 00 D0 */ neg r0, r5
/* 80314BCC 0031082C 7C 03 2B 78 */ or r3, r0, r5
/* 80314BD0 00310830 7C 05 E8 50 */ subf r0, r5, r29
/* 80314BD4 00310834 7C 63 FE 70 */ srawi r3, r3, 0x1f
/* 80314BD8 00310838 7C 00 18 38 */ and r0, r0, r3
/* 80314BDC 0031083C 7C 04 02 14 */ add r0, r4, r0
/* 80314BE0 00310840 90 1F 00 08 */ stw r0, 8(r31)
/* 80314BE4 00310844 48 00 00 10 */ b lbl_80314BF4
lbl_80314BE8:
/* 80314BE8 00310848 38 00 00 00 */ li r0, 0
/* 80314BEC 0031084C 90 04 00 0C */ stw r0, 0xc(r4)
/* 80314BF0 00310850 90 04 00 08 */ stw r0, 8(r4)
lbl_80314BF4:
/* 80314BF4 00310854 80 9E 00 08 */ lwz r4, 8(r30)
/* 80314BF8 00310858 38 60 00 00 */ li r3, 0
/* 80314BFC 0031085C A0 04 02 7C */ lhz r0, 0x27c(r4)
/* 80314C00 00310860 54 00 07 BE */ clrlwi r0, r0, 0x1e
/* 80314C04 00310864 90 1F 00 10 */ stw r0, 0x10(r31)
/* 80314C08 00310868 80 9E 00 08 */ lwz r4, 8(r30)
/* 80314C0C 0031086C 80 04 02 84 */ lwz r0, 0x284(r4)
/* 80314C10 00310870 90 1F 00 14 */ stw r0, 0x14(r31)
/* 80314C14 00310874 A0 1E 00 2C */ lhz r0, 0x2c(r30)
/* 80314C18 00310878 90 1F 00 18 */ stw r0, 0x18(r31)
/* 80314C1C 0031087C 80 9E 00 08 */ lwz r4, 8(r30)
/* 80314C20 00310880 A0 04 02 7E */ lhz r0, 0x27e(r4)
/* 80314C24 00310884 90 1F 00 1C */ stw r0, 0x1c(r31)
lbl_80314C28:
/* 80314C28 00310888 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80314C2C 0031088C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80314C30 00310890 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80314C34 00310894 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80314C38 00310898 7C 08 03 A6 */ mtlr r0
/* 80314C3C 0031089C 38 21 00 20 */ addi r1, r1, 0x20
/* 80314C40 003108A0 4E 80 00 20 */ blr
.global VFiPFFILE_GetOpenedFile
VFiPFFILE_GetOpenedFile:
/* 80314C44 003108A4 2C 03 00 00 */ cmpwi r3, 0
/* 80314C48 003108A8 41 82 00 18 */ beq lbl_80314C60
/* 80314C4C 003108AC 2C 04 00 00 */ cmpwi r4, 0
/* 80314C50 003108B0 41 82 00 10 */ beq lbl_80314C60
/* 80314C54 003108B4 80 03 02 2C */ lwz r0, 0x22c(r3)
/* 80314C58 003108B8 2C 00 00 00 */ cmpwi r0, 0
/* 80314C5C 003108BC 40 82 00 0C */ bne lbl_80314C68
lbl_80314C60:
/* 80314C60 003108C0 38 60 00 0A */ li r3, 0xa
/* 80314C64 003108C4 4E 80 00 20 */ blr
lbl_80314C68:
/* 80314C68 003108C8 38 A0 00 00 */ li r5, 0
/* 80314C6C 003108CC 38 00 00 05 */ li r0, 5
/* 80314C70 003108D0 90 A4 00 00 */ stw r5, 0(r4)
/* 80314C74 003108D4 38 C0 00 00 */ li r6, 0
/* 80314C78 003108D8 7C 09 03 A6 */ mtctr r0
lbl_80314C7C:
/* 80314C7C 003108DC 81 03 02 2C */ lwz r8, 0x22c(r3)
/* 80314C80 003108E0 7C E8 32 14 */ add r7, r8, r6
/* 80314C84 003108E4 80 A7 00 40 */ lwz r5, 0x40(r7)
/* 80314C88 003108E8 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
/* 80314C8C 003108EC 41 82 00 40 */ beq lbl_80314CCC
/* 80314C90 003108F0 54 A0 07 BD */ rlwinm. r0, r5, 0, 0x1e, 0x1e
/* 80314C94 003108F4 41 82 00 38 */ beq lbl_80314CCC
/* 80314C98 003108F8 80 07 02 A8 */ lwz r0, 0x2a8(r7)
/* 80314C9C 003108FC 7C 08 00 40 */ cmplw r8, r0
/* 80314CA0 00310900 40 82 00 2C */ bne lbl_80314CCC
/* 80314CA4 00310904 80 A3 02 38 */ lwz r5, 0x238(r3)
/* 80314CA8 00310908 80 07 02 B4 */ lwz r0, 0x2b4(r7)
/* 80314CAC 0031090C 7C 05 00 40 */ cmplw r5, r0
/* 80314CB0 00310910 40 82 00 1C */ bne lbl_80314CCC
/* 80314CB4 00310914 A0 A3 02 3C */ lhz r5, 0x23c(r3)
/* 80314CB8 00310918 A0 07 02 B8 */ lhz r0, 0x2b8(r7)
/* 80314CBC 0031091C 7C 05 00 40 */ cmplw r5, r0
/* 80314CC0 00310920 40 82 00 0C */ bne lbl_80314CCC
/* 80314CC4 00310924 38 07 00 7C */ addi r0, r7, 0x7c
/* 80314CC8 00310928 90 04 00 00 */ stw r0, 0(r4)
lbl_80314CCC:
/* 80314CCC 0031092C 38 C6 02 90 */ addi r6, r6, 0x290
/* 80314CD0 00310930 42 00 FF AC */ bdnz lbl_80314C7C
/* 80314CD4 00310934 38 60 00 00 */ li r3, 0
/* 80314CD8 00310938 4E 80 00 20 */ blr
.global VFiPFFILE_FinalizeAllFiles
VFiPFFILE_FinalizeAllFiles:
/* 80314CDC 0031093C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80314CE0 00310940 7C 08 02 A6 */ mflr r0
/* 80314CE4 00310944 90 01 00 24 */ stw r0, 0x24(r1)
/* 80314CE8 00310948 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80314CEC 0031094C 3B E0 00 00 */ li r31, 0
/* 80314CF0 00310950 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80314CF4 00310954 3B C0 00 00 */ li r30, 0
/* 80314CF8 00310958 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80314CFC 0031095C 7C 7D 1B 78 */ mr r29, r3
lbl_80314D00:
/* 80314D00 00310960 57 C0 04 3E */ clrlwi r0, r30, 0x10
/* 80314D04 00310964 1C 00 02 90 */ mulli r0, r0, 0x290
/* 80314D08 00310968 7C 7D 02 14 */ add r3, r29, r0
/* 80314D0C 0031096C 93 E3 00 40 */ stw r31, 0x40(r3)
/* 80314D10 00310970 38 63 00 44 */ addi r3, r3, 0x44
/* 80314D14 00310974 4B FF C4 21 */ bl VFiPFFAT_FinalizeFFD
/* 80314D18 00310978 3B DE 00 01 */ addi r30, r30, 1
/* 80314D1C 0031097C 28 1E 00 05 */ cmplwi r30, 5
/* 80314D20 00310980 41 80 FF E0 */ blt lbl_80314D00
/* 80314D24 00310984 80 9D 0D 10 */ lwz r4, 0xd10(r29)
/* 80314D28 00310988 38 00 00 00 */ li r0, 0
/* 80314D2C 0031098C 80 7D 0D 40 */ lwz r3, 0xd40(r29)
/* 80314D30 00310990 54 87 00 3C */ rlwinm r7, r4, 0, 0, 0x1e
/* 80314D34 00310994 80 BD 0D 70 */ lwz r5, 0xd70(r29)
/* 80314D38 00310998 54 66 00 3C */ rlwinm r6, r3, 0, 0, 0x1e
/* 80314D3C 0031099C 80 9D 0D A0 */ lwz r4, 0xda0(r29)
/* 80314D40 003109A0 80 7D 0D D0 */ lwz r3, 0xdd0(r29)
/* 80314D44 003109A4 54 A5 00 3C */ rlwinm r5, r5, 0, 0, 0x1e
/* 80314D48 003109A8 54 84 00 3C */ rlwinm r4, r4, 0, 0, 0x1e
/* 80314D4C 003109AC 90 FD 0D 10 */ stw r7, 0xd10(r29)
/* 80314D50 003109B0 54 63 00 3C */ rlwinm r3, r3, 0, 0, 0x1e
/* 80314D54 003109B4 90 DD 0D 40 */ stw r6, 0xd40(r29)
/* 80314D58 003109B8 90 BD 0D 70 */ stw r5, 0xd70(r29)
/* 80314D5C 003109BC 90 9D 0D A0 */ stw r4, 0xda0(r29)
/* 80314D60 003109C0 90 7D 0D D0 */ stw r3, 0xdd0(r29)
/* 80314D64 003109C4 90 1D 15 E0 */ stw r0, 0x15e0(r29)
/* 80314D68 003109C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80314D6C 003109CC 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80314D70 003109D0 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80314D74 003109D4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80314D78 003109D8 7C 08 03 A6 */ mtlr r0
/* 80314D7C 003109DC 38 21 00 20 */ addi r1, r1, 0x20
/* 80314D80 003109E0 4E 80 00 20 */ blr
.global VFiPFFILE_fopen
VFiPFFILE_fopen:
/* 80314D84 003109E4 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80314D88 003109E8 7C 08 02 A6 */ mflr r0
/* 80314D8C 003109EC 2C 05 00 00 */ cmpwi r5, 0
/* 80314D90 003109F0 90 01 00 24 */ stw r0, 0x24(r1)
/* 80314D94 003109F4 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80314D98 003109F8 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80314D9C 003109FC 7C BE 2B 78 */ mr r30, r5
/* 80314DA0 00310A00 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80314DA4 00310A04 7C 9D 23 78 */ mr r29, r4
/* 80314DA8 00310A08 93 81 00 10 */ stw r28, 0x10(r1)
/* 80314DAC 00310A0C 7C 7C 1B 78 */ mr r28, r3
/* 80314DB0 00310A10 40 82 00 1C */ bne lbl_80314DCC
/* 80314DB4 00310A14 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314DB8 00310A18 38 00 00 0A */ li r0, 0xa
/* 80314DBC 00310A1C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314DC0 00310A20 38 60 00 0A */ li r3, 0xa
/* 80314DC4 00310A24 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80314DC8 00310A28 48 00 00 D0 */ b lbl_80314E98
lbl_80314DCC:
/* 80314DCC 00310A2C 38 00 00 00 */ li r0, 0
/* 80314DD0 00310A30 2C 03 00 00 */ cmpwi r3, 0
/* 80314DD4 00310A34 90 05 00 00 */ stw r0, 0(r5)
/* 80314DD8 00310A38 40 82 00 1C */ bne lbl_80314DF4
/* 80314DDC 00310A3C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314DE0 00310A40 38 00 00 0A */ li r0, 0xa
/* 80314DE4 00310A44 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314DE8 00310A48 38 60 00 0A */ li r3, 0xa
/* 80314DEC 00310A4C 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80314DF0 00310A50 48 00 00 A8 */ b lbl_80314E98
lbl_80314DF4:
/* 80314DF4 00310A54 48 00 20 A1 */ bl VFiPFPATH_GetVolumeFromPath
/* 80314DF8 00310A58 2C 03 00 00 */ cmpwi r3, 0
/* 80314DFC 00310A5C 7C 7F 1B 78 */ mr r31, r3
/* 80314E00 00310A60 40 82 00 1C */ bne lbl_80314E1C
/* 80314E04 00310A64 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314E08 00310A68 38 00 00 0A */ li r0, 0xa
/* 80314E0C 00310A6C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314E10 00310A70 38 60 00 0A */ li r3, 0xa
/* 80314E14 00310A74 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80314E18 00310A78 48 00 00 80 */ b lbl_80314E98
lbl_80314E1C:
/* 80314E1C 00310A7C 48 00 45 51 */ bl VFiPFVOL_CheckForRead
/* 80314E20 00310A80 2C 03 00 00 */ cmpwi r3, 0
/* 80314E24 00310A84 41 82 00 18 */ beq lbl_80314E3C
/* 80314E28 00310A88 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314E2C 00310A8C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314E30 00310A90 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80314E34 00310A94 90 7F 18 6C */ stw r3, 0x186c(r31)
/* 80314E38 00310A98 48 00 00 60 */ b lbl_80314E98
lbl_80314E3C:
/* 80314E3C 00310A9C 7F E3 FB 78 */ mr r3, r31
/* 80314E40 00310AA0 4B FF 0F 69 */ bl VFiPFDRV_IsWProtected
/* 80314E44 00310AA4 2C 03 00 00 */ cmpwi r3, 0
/* 80314E48 00310AA8 41 82 00 14 */ beq lbl_80314E5C
/* 80314E4C 00310AAC 2C 1D 00 02 */ cmpwi r29, 2
/* 80314E50 00310AB0 41 82 00 0C */ beq lbl_80314E5C
/* 80314E54 00310AB4 38 60 00 0B */ li r3, 0xb
/* 80314E58 00310AB8 48 00 00 40 */ b lbl_80314E98
lbl_80314E5C:
/* 80314E5C 00310ABC 7F E3 FB 78 */ mr r3, r31
/* 80314E60 00310AC0 7F 84 E3 78 */ mr r4, r28
/* 80314E64 00310AC4 7F A5 EB 78 */ mr r5, r29
/* 80314E68 00310AC8 7F C6 F3 78 */ mr r6, r30
/* 80314E6C 00310ACC 4B FF F4 A9 */ bl VFiPFFILE_p_fopen
/* 80314E70 00310AD0 2C 03 00 00 */ cmpwi r3, 0
/* 80314E74 00310AD4 41 82 00 18 */ beq lbl_80314E8C
/* 80314E78 00310AD8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314E7C 00310ADC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314E80 00310AE0 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80314E84 00310AE4 90 7F 18 6C */ stw r3, 0x186c(r31)
/* 80314E88 00310AE8 48 00 00 10 */ b lbl_80314E98
lbl_80314E8C:
/* 80314E8C 00310AEC 80 9F 15 E0 */ lwz r4, 0x15e0(r31)
/* 80314E90 00310AF0 38 04 00 01 */ addi r0, r4, 1
/* 80314E94 00310AF4 90 1F 15 E0 */ stw r0, 0x15e0(r31)
lbl_80314E98:
/* 80314E98 00310AF8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80314E9C 00310AFC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80314EA0 00310B00 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80314EA4 00310B04 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80314EA8 00310B08 83 81 00 10 */ lwz r28, 0x10(r1)
/* 80314EAC 00310B0C 7C 08 03 A6 */ mtlr r0
/* 80314EB0 00310B10 38 21 00 20 */ addi r1, r1, 0x20
/* 80314EB4 00310B14 4E 80 00 20 */ blr
.global VFiPFFILE_fclose
VFiPFFILE_fclose:
/* 80314EB8 00310B18 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80314EBC 00310B1C 7C 08 02 A6 */ mflr r0
/* 80314EC0 00310B20 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314EC4 00310B24 90 01 00 24 */ stw r0, 0x24(r1)
/* 80314EC8 00310B28 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314ECC 00310B2C 7C 04 18 40 */ cmplw r4, r3
/* 80314ED0 00310B30 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80314ED4 00310B34 93 C1 00 18 */ stw r30, 0x18(r1)
/* 80314ED8 00310B38 93 A1 00 14 */ stw r29, 0x14(r1)
/* 80314EDC 00310B3C 7C 7D 1B 78 */ mr r29, r3
/* 80314EE0 00310B40 41 81 00 14 */ bgt lbl_80314EF4
/* 80314EE4 00310B44 3C 84 00 02 */ addis r4, r4, 2
/* 80314EE8 00310B48 38 04 7F B8 */ addi r0, r4, 0x7fb8
/* 80314EEC 00310B4C 7C 00 18 40 */ cmplw r0, r3
/* 80314EF0 00310B50 40 80 00 1C */ bge lbl_80314F0C
lbl_80314EF4:
/* 80314EF4 00310B54 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314EF8 00310B58 38 00 00 0A */ li r0, 0xa
/* 80314EFC 00310B5C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314F00 00310B60 38 60 00 0A */ li r3, 0xa
/* 80314F04 00310B64 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80314F08 00310B68 48 00 02 F0 */ b lbl_803151F8
lbl_80314F0C:
/* 80314F0C 00310B6C 2C 03 00 00 */ cmpwi r3, 0
/* 80314F10 00310B70 40 82 00 0C */ bne lbl_80314F1C
/* 80314F14 00310B74 3B E0 00 00 */ li r31, 0
/* 80314F18 00310B78 48 00 00 0C */ b lbl_80314F24
lbl_80314F1C:
/* 80314F1C 00310B7C 80 63 00 08 */ lwz r3, 8(r3)
/* 80314F20 00310B80 83 E3 02 68 */ lwz r31, 0x268(r3)
lbl_80314F24:
/* 80314F24 00310B84 2C 1F 00 00 */ cmpwi r31, 0
/* 80314F28 00310B88 40 82 00 1C */ bne lbl_80314F44
/* 80314F2C 00310B8C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314F30 00310B90 38 00 00 0A */ li r0, 0xa
/* 80314F34 00310B94 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314F38 00310B98 38 60 00 0A */ li r3, 0xa
/* 80314F3C 00310B9C 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80314F40 00310BA0 48 00 02 B8 */ b lbl_803151F8
lbl_80314F44:
/* 80314F44 00310BA4 7F E3 FB 78 */ mr r3, r31
/* 80314F48 00310BA8 48 00 44 25 */ bl VFiPFVOL_CheckForRead
/* 80314F4C 00310BAC 2C 03 00 00 */ cmpwi r3, 0
/* 80314F50 00310BB0 7C 7E 1B 78 */ mr r30, r3
/* 80314F54 00310BB4 41 82 00 18 */ beq lbl_80314F6C
/* 80314F58 00310BB8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314F5C 00310BBC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314F60 00310BC0 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80314F64 00310BC4 90 7F 18 6C */ stw r3, 0x186c(r31)
/* 80314F68 00310BC8 48 00 02 90 */ b lbl_803151F8
lbl_80314F6C:
/* 80314F6C 00310BCC 7F E3 FB 78 */ mr r3, r31
/* 80314F70 00310BD0 4B FF 0E 39 */ bl VFiPFDRV_IsWProtected
/* 80314F74 00310BD4 2C 03 00 00 */ cmpwi r3, 0
/* 80314F78 00310BD8 41 82 00 18 */ beq lbl_80314F90
/* 80314F7C 00310BDC 80 1D 00 04 */ lwz r0, 4(r29)
/* 80314F80 00310BE0 2C 00 00 02 */ cmpwi r0, 2
/* 80314F84 00310BE4 41 82 00 0C */ beq lbl_80314F90
/* 80314F88 00310BE8 38 60 00 0B */ li r3, 0xb
/* 80314F8C 00310BEC 48 00 02 6C */ b lbl_803151F8
lbl_80314F90:
/* 80314F90 00310BF0 2C 1D 00 00 */ cmpwi r29, 0
/* 80314F94 00310BF4 41 82 00 34 */ beq lbl_80314FC8
/* 80314F98 00310BF8 80 7D 00 08 */ lwz r3, 8(r29)
/* 80314F9C 00310BFC 2C 03 00 00 */ cmpwi r3, 0
/* 80314FA0 00310C00 41 82 00 28 */ beq lbl_80314FC8
/* 80314FA4 00310C04 80 1D 00 00 */ lwz r0, 0(r29)
/* 80314FA8 00310C08 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 80314FAC 00310C0C 41 82 00 1C */ beq lbl_80314FC8
/* 80314FB0 00310C10 80 03 00 00 */ lwz r0, 0(r3)
/* 80314FB4 00310C14 54 03 07 FE */ clrlwi r3, r0, 0x1f
/* 80314FB8 00310C18 2C 83 00 00 */ cmpwi cr1, r3, 0
/* 80314FBC 00310C1C 41 86 00 0C */ beq cr1, lbl_80314FC8
/* 80314FC0 00310C20 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80314FC4 00310C24 40 82 00 20 */ bne lbl_80314FE4
lbl_80314FC8:
/* 80314FC8 00310C28 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314FCC 00310C2C 38 00 00 0A */ li r0, 0xa
/* 80314FD0 00310C30 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314FD4 00310C34 38 60 00 0A */ li r3, 0xa
/* 80314FD8 00310C38 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80314FDC 00310C3C 90 1F 18 6C */ stw r0, 0x186c(r31)
/* 80314FE0 00310C40 48 00 02 18 */ b lbl_803151F8
lbl_80314FE4:
/* 80314FE4 00310C44 41 86 00 08 */ beq cr1, lbl_80314FEC
/* 80314FE8 00310C48 40 82 00 20 */ bne lbl_80315008
lbl_80314FEC:
/* 80314FEC 00310C4C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80314FF0 00310C50 38 00 00 0A */ li r0, 0xa
/* 80314FF4 00310C54 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80314FF8 00310C58 38 60 00 0A */ li r3, 0xa
/* 80314FFC 00310C5C 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315000 00310C60 90 1F 18 6C */ stw r0, 0x186c(r31)
/* 80315004 00310C64 48 00 01 F4 */ b lbl_803151F8
lbl_80315008:
/* 80315008 00310C68 93 BF 16 08 */ stw r29, 0x1608(r31)
/* 8031500C 00310C6C 80 9D 00 08 */ lwz r4, 8(r29)
/* 80315010 00310C70 A0 64 02 8C */ lhz r3, 0x28c(r4)
/* 80315014 00310C74 34 03 FF FF */ addic. r0, r3, -1
/* 80315018 00310C78 41 81 00 50 */ bgt lbl_80315068
/* 8031501C 00310C7C 88 04 02 58 */ lbz r0, 0x258(r4)
/* 80315020 00310C80 70 00 00 19 */ andi. r0, r0, 0x19
/* 80315024 00310C84 40 82 00 44 */ bne lbl_80315068
/* 80315028 00310C88 7F E3 FB 78 */ mr r3, r31
/* 8031502C 00310C8C 4B FF 0D 7D */ bl VFiPFDRV_IsWProtected
/* 80315030 00310C90 2C 03 00 00 */ cmpwi r3, 0
/* 80315034 00310C94 40 82 00 34 */ bne lbl_80315068
/* 80315038 00310C98 80 7D 00 08 */ lwz r3, 8(r29)
/* 8031503C 00310C9C 80 03 00 00 */ lwz r0, 0(r3)
/* 80315040 00310CA0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80315044 00310CA4 40 82 00 14 */ bne lbl_80315058
/* 80315048 00310CA8 80 1F 18 74 */ lwz r0, 0x1874(r31)
/* 8031504C 00310CAC 54 00 07 FE */ clrlwi r0, r0, 0x1f
/* 80315050 00310CB0 28 00 00 01 */ cmplwi r0, 1
/* 80315054 00310CB4 41 82 00 14 */ beq lbl_80315068
lbl_80315058:
/* 80315058 00310CB8 38 63 00 3C */ addi r3, r3, 0x3c
/* 8031505C 00310CBC 38 80 00 01 */ li r4, 1
/* 80315060 00310CC0 4B FF 78 91 */ bl VFiPFENT_updateEntry
/* 80315064 00310CC4 7C 7E 1B 78 */ mr r30, r3
lbl_80315068:
/* 80315068 00310CC8 A0 9D 00 2C */ lhz r4, 0x2c(r29)
/* 8031506C 00310CCC 2C 04 00 00 */ cmpwi r4, 0
/* 80315070 00310CD0 41 82 00 94 */ beq lbl_80315104
/* 80315074 00310CD4 80 BD 00 08 */ lwz r5, 8(r29)
/* 80315078 00310CD8 A0 05 02 7C */ lhz r0, 0x27c(r5)
/* 8031507C 00310CDC 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 80315080 00310CE0 41 82 00 44 */ beq lbl_803150C4
/* 80315084 00310CE4 A0 65 02 7E */ lhz r3, 0x27e(r5)
/* 80315088 00310CE8 38 00 00 00 */ li r0, 0
/* 8031508C 00310CEC 7C 64 18 50 */ subf r3, r4, r3
/* 80315090 00310CF0 B0 65 02 7E */ sth r3, 0x27e(r5)
/* 80315094 00310CF4 B0 1D 00 2C */ sth r0, 0x2c(r29)
/* 80315098 00310CF8 80 7D 00 08 */ lwz r3, 8(r29)
/* 8031509C 00310CFC A0 03 02 7E */ lhz r0, 0x27e(r3)
/* 803150A0 00310D00 2C 00 00 00 */ cmpwi r0, 0
/* 803150A4 00310D04 40 82 00 0C */ bne lbl_803150B0
/* 803150A8 00310D08 7F A3 EB 78 */ mr r3, r29
/* 803150AC 00310D0C 48 00 53 75 */ bl VFiPF_UnLockFile
lbl_803150B0:
/* 803150B0 00310D10 80 7D 00 08 */ lwz r3, 8(r29)
/* 803150B4 00310D14 A0 03 02 7C */ lhz r0, 0x27c(r3)
/* 803150B8 00310D18 54 00 04 3A */ rlwinm r0, r0, 0, 0x10, 0x1d
/* 803150BC 00310D1C B0 03 02 7C */ sth r0, 0x27c(r3)
/* 803150C0 00310D20 48 00 00 44 */ b lbl_80315104
lbl_803150C4:
/* 803150C4 00310D24 80 05 02 84 */ lwz r0, 0x284(r5)
/* 803150C8 00310D28 7C 00 E8 40 */ cmplw r0, r29
/* 803150CC 00310D2C 41 82 00 0C */ beq lbl_803150D8
/* 803150D0 00310D30 3B C0 00 19 */ li r30, 0x19
/* 803150D4 00310D34 48 00 00 30 */ b lbl_80315104
lbl_803150D8:
/* 803150D8 00310D38 38 00 00 00 */ li r0, 0
/* 803150DC 00310D3C 7F A3 EB 78 */ mr r3, r29
/* 803150E0 00310D40 B0 05 02 7E */ sth r0, 0x27e(r5)
/* 803150E4 00310D44 B0 1D 00 2C */ sth r0, 0x2c(r29)
/* 803150E8 00310D48 80 9D 00 08 */ lwz r4, 8(r29)
/* 803150EC 00310D4C 90 04 02 84 */ stw r0, 0x284(r4)
/* 803150F0 00310D50 48 00 53 31 */ bl VFiPF_UnLockFile
/* 803150F4 00310D54 80 7D 00 08 */ lwz r3, 8(r29)
/* 803150F8 00310D58 A0 03 02 7C */ lhz r0, 0x27c(r3)
/* 803150FC 00310D5C 54 00 04 3A */ rlwinm r0, r0, 0, 0x10, 0x1d
/* 80315100 00310D60 B0 03 02 7C */ sth r0, 0x27c(r3)
lbl_80315104:
/* 80315104 00310D64 2C 1E 00 00 */ cmpwi r30, 0
/* 80315108 00310D68 41 82 00 24 */ beq lbl_8031512C
/* 8031510C 00310D6C 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
/* 80315110 00310D70 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
/* 80315114 00310D74 93 C3 00 1C */ stw r30, 0x1c(r3)
/* 80315118 00310D78 80 7D 00 08 */ lwz r3, 8(r29)
/* 8031511C 00310D7C 80 63 00 38 */ lwz r3, 0x38(r3)
/* 80315120 00310D80 93 C3 18 6C */ stw r30, 0x186c(r3)
/* 80315124 00310D84 93 DD 00 18 */ stw r30, 0x18(r29)
/* 80315128 00310D88 48 00 00 C4 */ b lbl_803151EC
lbl_8031512C:
/* 8031512C 00310D8C 80 1F 15 E8 */ lwz r0, 0x15e8(r31)
/* 80315130 00310D90 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80315134 00310D94 41 82 00 6C */ beq lbl_803151A0
/* 80315138 00310D98 7F E3 FB 78 */ mr r3, r31
/* 8031513C 00310D9C 4B FF 59 75 */ bl VFiPFCACHE_FlushFATCache
/* 80315140 00310DA0 2C 03 00 00 */ cmpwi r3, 0
/* 80315144 00310DA4 7C 7E 1B 78 */ mr r30, r3
/* 80315148 00310DA8 41 82 00 24 */ beq lbl_8031516C
/* 8031514C 00310DAC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315150 00310DB0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315154 00310DB4 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80315158 00310DB8 80 9D 00 08 */ lwz r4, 8(r29)
/* 8031515C 00310DBC 80 84 00 38 */ lwz r4, 0x38(r4)
/* 80315160 00310DC0 90 64 18 6C */ stw r3, 0x186c(r4)
/* 80315164 00310DC4 90 7D 00 18 */ stw r3, 0x18(r29)
/* 80315168 00310DC8 48 00 00 38 */ b lbl_803151A0
lbl_8031516C:
/* 8031516C 00310DCC 7F E3 FB 78 */ mr r3, r31
/* 80315170 00310DD0 7F A4 EB 78 */ mr r4, r29
/* 80315174 00310DD4 4B FF 59 71 */ bl VFiPFCACHE_FlushDataCacheSpecific
/* 80315178 00310DD8 2C 03 00 00 */ cmpwi r3, 0
/* 8031517C 00310DDC 7C 7E 1B 78 */ mr r30, r3
/* 80315180 00310DE0 41 82 00 20 */ beq lbl_803151A0
/* 80315184 00310DE4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315188 00310DE8 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 8031518C 00310DEC 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80315190 00310DF0 80 9D 00 08 */ lwz r4, 8(r29)
/* 80315194 00310DF4 80 84 00 38 */ lwz r4, 0x38(r4)
/* 80315198 00310DF8 90 64 18 6C */ stw r3, 0x186c(r4)
/* 8031519C 00310DFC 90 7D 00 18 */ stw r3, 0x18(r29)
lbl_803151A0:
/* 803151A0 00310E00 2C 1E 00 00 */ cmpwi r30, 0
/* 803151A4 00310E04 40 82 00 48 */ bne lbl_803151EC
/* 803151A8 00310E08 80 9D 00 08 */ lwz r4, 8(r29)
/* 803151AC 00310E0C A0 64 02 8C */ lhz r3, 0x28c(r4)
/* 803151B0 00310E10 38 63 FF FF */ addi r3, r3, -1
/* 803151B4 00310E14 54 60 04 3F */ clrlwi. r0, r3, 0x10
/* 803151B8 00310E18 B0 64 02 8C */ sth r3, 0x28c(r4)
/* 803151BC 00310E1C 40 82 00 18 */ bne lbl_803151D4
/* 803151C0 00310E20 80 64 00 00 */ lwz r3, 0(r4)
/* 803151C4 00310E24 38 00 00 00 */ li r0, 0
/* 803151C8 00310E28 54 63 00 3C */ rlwinm r3, r3, 0, 0, 0x1e
/* 803151CC 00310E2C 90 64 00 00 */ stw r3, 0(r4)
/* 803151D0 00310E30 90 04 00 20 */ stw r0, 0x20(r4)
lbl_803151D4:
/* 803151D4 00310E34 80 1D 00 00 */ lwz r0, 0(r29)
/* 803151D8 00310E38 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
/* 803151DC 00310E3C 90 1D 00 00 */ stw r0, 0(r29)
/* 803151E0 00310E40 80 7F 15 E0 */ lwz r3, 0x15e0(r31)
/* 803151E4 00310E44 38 03 FF FF */ addi r0, r3, -1
/* 803151E8 00310E48 90 1F 15 E0 */ stw r0, 0x15e0(r31)
lbl_803151EC:
/* 803151EC 00310E4C 38 00 00 00 */ li r0, 0
/* 803151F0 00310E50 7F C3 F3 78 */ mr r3, r30
/* 803151F4 00310E54 90 1F 16 08 */ stw r0, 0x1608(r31)
lbl_803151F8:
/* 803151F8 00310E58 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803151FC 00310E5C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 80315200 00310E60 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 80315204 00310E64 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 80315208 00310E68 7C 08 03 A6 */ mtlr r0
/* 8031520C 00310E6C 38 21 00 20 */ addi r1, r1, 0x20
/* 80315210 00310E70 4E 80 00 20 */ blr
.global VFiPFFILE_fread
VFiPFFILE_fread:
/* 80315214 00310E74 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80315218 00310E78 7C 08 02 A6 */ mflr r0
/* 8031521C 00310E7C 90 01 00 34 */ stw r0, 0x34(r1)
/* 80315220 00310E80 39 61 00 30 */ addi r11, r1, 0x30
/* 80315224 00310E84 4B EB 1F 01 */ bl _savegpr_26
/* 80315228 00310E88 2C 07 00 00 */ cmpwi r7, 0
/* 8031522C 00310E8C 7C 7A 1B 78 */ mr r26, r3
/* 80315230 00310E90 7C 9B 23 78 */ mr r27, r4
/* 80315234 00310E94 7C BC 2B 78 */ mr r28, r5
/* 80315238 00310E98 7C DF 33 78 */ mr r31, r6
/* 8031523C 00310E9C 7C FD 3B 78 */ mr r29, r7
/* 80315240 00310EA0 40 82 00 1C */ bne lbl_8031525C
/* 80315244 00310EA4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315248 00310EA8 38 00 00 0A */ li r0, 0xa
/* 8031524C 00310EAC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315250 00310EB0 38 60 00 0A */ li r3, 0xa
/* 80315254 00310EB4 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315258 00310EB8 48 00 01 BC */ b lbl_80315414
lbl_8031525C:
/* 8031525C 00310EBC 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
/* 80315260 00310EC0 38 00 00 00 */ li r0, 0
/* 80315264 00310EC4 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
/* 80315268 00310EC8 90 07 00 00 */ stw r0, 0(r7)
/* 8031526C 00310ECC 7C 03 30 40 */ cmplw r3, r6
/* 80315270 00310ED0 41 81 00 14 */ bgt lbl_80315284
/* 80315274 00310ED4 3C 63 00 02 */ addis r3, r3, 2
/* 80315278 00310ED8 38 03 7F B8 */ addi r0, r3, 0x7fb8
/* 8031527C 00310EDC 7C 00 30 40 */ cmplw r0, r6
/* 80315280 00310EE0 40 80 00 1C */ bge lbl_8031529C
lbl_80315284:
/* 80315284 00310EE4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315288 00310EE8 38 00 00 0A */ li r0, 0xa
/* 8031528C 00310EEC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315290 00310EF0 38 60 00 0A */ li r3, 0xa
/* 80315294 00310EF4 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315298 00310EF8 48 00 01 7C */ b lbl_80315414
lbl_8031529C:
/* 8031529C 00310EFC 2C 06 00 00 */ cmpwi r6, 0
/* 803152A0 00310F00 40 82 00 0C */ bne lbl_803152AC
/* 803152A4 00310F04 3B C0 00 00 */ li r30, 0
/* 803152A8 00310F08 48 00 00 0C */ b lbl_803152B4
lbl_803152AC:
/* 803152AC 00310F0C 80 66 00 08 */ lwz r3, 8(r6)
/* 803152B0 00310F10 83 C3 02 68 */ lwz r30, 0x268(r3)
lbl_803152B4:
/* 803152B4 00310F14 2C 1E 00 00 */ cmpwi r30, 0
/* 803152B8 00310F18 40 82 00 2C */ bne lbl_803152E4
/* 803152BC 00310F1C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 803152C0 00310F20 38 00 00 26 */ li r0, 0x26
/* 803152C4 00310F24 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 803152C8 00310F28 38 60 00 26 */ li r3, 0x26
/* 803152CC 00310F2C 90 04 00 1C */ stw r0, 0x1c(r4)
/* 803152D0 00310F30 80 86 00 08 */ lwz r4, 8(r6)
/* 803152D4 00310F34 80 84 00 38 */ lwz r4, 0x38(r4)
/* 803152D8 00310F38 90 04 18 6C */ stw r0, 0x186c(r4)
/* 803152DC 00310F3C 90 06 00 18 */ stw r0, 0x18(r6)
/* 803152E0 00310F40 48 00 01 34 */ b lbl_80315414
lbl_803152E4:
/* 803152E4 00310F44 7F C3 F3 78 */ mr r3, r30
/* 803152E8 00310F48 48 00 40 85 */ bl VFiPFVOL_CheckForRead
/* 803152EC 00310F4C 2C 03 00 00 */ cmpwi r3, 0
/* 803152F0 00310F50 41 82 00 18 */ beq lbl_80315308
/* 803152F4 00310F54 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 803152F8 00310F58 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 803152FC 00310F5C 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80315300 00310F60 90 7E 18 6C */ stw r3, 0x186c(r30)
/* 80315304 00310F64 48 00 01 10 */ b lbl_80315414
lbl_80315308:
/* 80315308 00310F68 2C 1F 00 00 */ cmpwi r31, 0
/* 8031530C 00310F6C 41 82 00 34 */ beq lbl_80315340
/* 80315310 00310F70 80 7F 00 08 */ lwz r3, 8(r31)
/* 80315314 00310F74 2C 03 00 00 */ cmpwi r3, 0
/* 80315318 00310F78 41 82 00 28 */ beq lbl_80315340
/* 8031531C 00310F7C 80 1F 00 00 */ lwz r0, 0(r31)
/* 80315320 00310F80 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 80315324 00310F84 41 82 00 1C */ beq lbl_80315340
/* 80315328 00310F88 80 03 00 00 */ lwz r0, 0(r3)
/* 8031532C 00310F8C 54 03 07 FE */ clrlwi r3, r0, 0x1f
/* 80315330 00310F90 2C 83 00 00 */ cmpwi cr1, r3, 0
/* 80315334 00310F94 41 86 00 0C */ beq cr1, lbl_80315340
/* 80315338 00310F98 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 8031533C 00310F9C 40 82 00 20 */ bne lbl_8031535C
lbl_80315340:
/* 80315340 00310FA0 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315344 00310FA4 38 00 00 26 */ li r0, 0x26
/* 80315348 00310FA8 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 8031534C 00310FAC 38 60 00 26 */ li r3, 0x26
/* 80315350 00310FB0 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315354 00310FB4 90 1E 18 6C */ stw r0, 0x186c(r30)
/* 80315358 00310FB8 48 00 00 BC */ b lbl_80315414
lbl_8031535C:
/* 8031535C 00310FBC 41 86 00 08 */ beq cr1, lbl_80315364
/* 80315360 00310FC0 40 82 00 20 */ bne lbl_80315380
lbl_80315364:
/* 80315364 00310FC4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315368 00310FC8 38 00 00 26 */ li r0, 0x26
/* 8031536C 00310FCC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315370 00310FD0 38 60 00 26 */ li r3, 0x26
/* 80315374 00310FD4 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315378 00310FD8 90 1E 18 6C */ stw r0, 0x186c(r30)
/* 8031537C 00310FDC 48 00 00 98 */ b lbl_80315414
lbl_80315380:
/* 80315380 00310FE0 2C 1A 00 00 */ cmpwi r26, 0
/* 80315384 00310FE4 41 82 00 14 */ beq lbl_80315398
/* 80315388 00310FE8 2C 1C 00 00 */ cmpwi r28, 0
/* 8031538C 00310FEC 41 82 00 0C */ beq lbl_80315398
/* 80315390 00310FF0 2C 1B 00 00 */ cmpwi r27, 0
/* 80315394 00310FF4 40 82 00 2C */ bne lbl_803153C0
lbl_80315398:
/* 80315398 00310FF8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 8031539C 00310FFC 38 00 00 0A */ li r0, 0xa
/* 803153A0 00311000 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 803153A4 00311004 38 60 00 0A */ li r3, 0xa
/* 803153A8 00311008 90 04 00 1C */ stw r0, 0x1c(r4)
/* 803153AC 0031100C 80 9F 00 08 */ lwz r4, 8(r31)
/* 803153B0 00311010 80 84 00 38 */ lwz r4, 0x38(r4)
/* 803153B4 00311014 90 04 18 6C */ stw r0, 0x186c(r4)
/* 803153B8 00311018 90 1F 00 18 */ stw r0, 0x18(r31)
/* 803153BC 0031101C 48 00 00 58 */ b lbl_80315414
lbl_803153C0:
/* 803153C0 00311020 93 FE 16 08 */ stw r31, 0x1608(r30)
/* 803153C4 00311024 7F C3 F3 78 */ mr r3, r30
/* 803153C8 00311028 7F 44 D3 78 */ mr r4, r26
/* 803153CC 0031102C 7F 65 DB 78 */ mr r5, r27
/* 803153D0 00311030 7F 86 E3 78 */ mr r6, r28
/* 803153D4 00311034 7F E7 FB 78 */ mr r7, r31
/* 803153D8 00311038 39 01 00 08 */ addi r8, r1, 8
/* 803153DC 0031103C 4B FF F4 29 */ bl VFiPFFILE_p_fread
/* 803153E0 00311040 80 81 00 08 */ lwz r4, 8(r1)
/* 803153E4 00311044 2C 03 00 00 */ cmpwi r3, 0
/* 803153E8 00311048 38 00 00 00 */ li r0, 0
/* 803153EC 0031104C 90 9D 00 00 */ stw r4, 0(r29)
/* 803153F0 00311050 90 1E 16 08 */ stw r0, 0x1608(r30)
/* 803153F4 00311054 41 82 00 20 */ beq lbl_80315414
/* 803153F8 00311058 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 803153FC 0031105C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315400 00311060 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80315404 00311064 80 9F 00 08 */ lwz r4, 8(r31)
/* 80315408 00311068 80 84 00 38 */ lwz r4, 0x38(r4)
/* 8031540C 0031106C 90 64 18 6C */ stw r3, 0x186c(r4)
/* 80315410 00311070 90 7F 00 18 */ stw r3, 0x18(r31)
lbl_80315414:
/* 80315414 00311074 39 61 00 30 */ addi r11, r1, 0x30
/* 80315418 00311078 4B EB 1D 59 */ bl _restgpr_26
/* 8031541C 0031107C 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80315420 00311080 7C 08 03 A6 */ mtlr r0
/* 80315424 00311084 38 21 00 30 */ addi r1, r1, 0x30
/* 80315428 00311088 4E 80 00 20 */ blr
.global VFiPFFILE_fwrite
VFiPFFILE_fwrite:
/* 8031542C 0031108C 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80315430 00311090 7C 08 02 A6 */ mflr r0
/* 80315434 00311094 90 01 00 34 */ stw r0, 0x34(r1)
/* 80315438 00311098 39 61 00 30 */ addi r11, r1, 0x30
/* 8031543C 0031109C 4B EB 1C E9 */ bl _savegpr_26
/* 80315440 003110A0 2C 07 00 00 */ cmpwi r7, 0
/* 80315444 003110A4 7C 7A 1B 78 */ mr r26, r3
/* 80315448 003110A8 7C 9B 23 78 */ mr r27, r4
/* 8031544C 003110AC 7C BD 2B 78 */ mr r29, r5
/* 80315450 003110B0 7C DF 33 78 */ mr r31, r6
/* 80315454 003110B4 7C FC 3B 78 */ mr r28, r7
/* 80315458 003110B8 40 82 00 1C */ bne lbl_80315474
/* 8031545C 003110BC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315460 003110C0 38 00 00 0A */ li r0, 0xa
/* 80315464 003110C4 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315468 003110C8 38 60 00 0A */ li r3, 0xa
/* 8031546C 003110CC 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315470 003110D0 48 00 01 FC */ b lbl_8031566C
lbl_80315474:
/* 80315474 003110D4 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
/* 80315478 003110D8 38 00 00 00 */ li r0, 0
/* 8031547C 003110DC 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
/* 80315480 003110E0 90 07 00 00 */ stw r0, 0(r7)
/* 80315484 003110E4 7C 03 30 40 */ cmplw r3, r6
/* 80315488 003110E8 41 81 00 14 */ bgt lbl_8031549C
/* 8031548C 003110EC 3C 63 00 02 */ addis r3, r3, 2
/* 80315490 003110F0 38 03 7F B8 */ addi r0, r3, 0x7fb8
/* 80315494 003110F4 7C 00 30 40 */ cmplw r0, r6
/* 80315498 003110F8 40 80 00 1C */ bge lbl_803154B4
lbl_8031549C:
/* 8031549C 003110FC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 803154A0 00311100 38 00 00 0A */ li r0, 0xa
/* 803154A4 00311104 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 803154A8 00311108 38 60 00 0A */ li r3, 0xa
/* 803154AC 0031110C 90 04 00 1C */ stw r0, 0x1c(r4)
/* 803154B0 00311110 48 00 01 BC */ b lbl_8031566C
lbl_803154B4:
/* 803154B4 00311114 2C 06 00 00 */ cmpwi r6, 0
/* 803154B8 00311118 40 82 00 0C */ bne lbl_803154C4
/* 803154BC 0031111C 3B C0 00 00 */ li r30, 0
/* 803154C0 00311120 48 00 00 0C */ b lbl_803154CC
lbl_803154C4:
/* 803154C4 00311124 80 66 00 08 */ lwz r3, 8(r6)
/* 803154C8 00311128 83 C3 02 68 */ lwz r30, 0x268(r3)
lbl_803154CC:
/* 803154CC 0031112C 2C 1E 00 00 */ cmpwi r30, 0
/* 803154D0 00311130 40 82 00 2C */ bne lbl_803154FC
/* 803154D4 00311134 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 803154D8 00311138 38 00 00 26 */ li r0, 0x26
/* 803154DC 0031113C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 803154E0 00311140 38 60 00 26 */ li r3, 0x26
/* 803154E4 00311144 90 04 00 1C */ stw r0, 0x1c(r4)
/* 803154E8 00311148 80 86 00 08 */ lwz r4, 8(r6)
/* 803154EC 0031114C 80 84 00 38 */ lwz r4, 0x38(r4)
/* 803154F0 00311150 90 04 18 6C */ stw r0, 0x186c(r4)
/* 803154F4 00311154 90 06 00 18 */ stw r0, 0x18(r6)
/* 803154F8 00311158 48 00 01 74 */ b lbl_8031566C
lbl_803154FC:
/* 803154FC 0031115C 7F C3 F3 78 */ mr r3, r30
/* 80315500 00311160 48 00 40 29 */ bl VFiPFVOL_CheckForWrite
/* 80315504 00311164 2C 03 00 00 */ cmpwi r3, 0
/* 80315508 00311168 41 82 00 18 */ beq lbl_80315520
/* 8031550C 0031116C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315510 00311170 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315514 00311174 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80315518 00311178 90 7E 18 6C */ stw r3, 0x186c(r30)
/* 8031551C 0031117C 48 00 01 50 */ b lbl_8031566C
lbl_80315520:
/* 80315520 00311180 2C 1F 00 00 */ cmpwi r31, 0
/* 80315524 00311184 41 82 00 34 */ beq lbl_80315558
/* 80315528 00311188 80 7F 00 08 */ lwz r3, 8(r31)
/* 8031552C 0031118C 2C 03 00 00 */ cmpwi r3, 0
/* 80315530 00311190 41 82 00 28 */ beq lbl_80315558
/* 80315534 00311194 80 1F 00 00 */ lwz r0, 0(r31)
/* 80315538 00311198 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 8031553C 0031119C 41 82 00 1C */ beq lbl_80315558
/* 80315540 003111A0 80 03 00 00 */ lwz r0, 0(r3)
/* 80315544 003111A4 54 03 07 FE */ clrlwi r3, r0, 0x1f
/* 80315548 003111A8 2C 83 00 00 */ cmpwi cr1, r3, 0
/* 8031554C 003111AC 41 86 00 0C */ beq cr1, lbl_80315558
/* 80315550 003111B0 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80315554 003111B4 40 82 00 20 */ bne lbl_80315574
lbl_80315558:
/* 80315558 003111B8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 8031555C 003111BC 38 00 00 26 */ li r0, 0x26
/* 80315560 003111C0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315564 003111C4 38 60 00 26 */ li r3, 0x26
/* 80315568 003111C8 90 04 00 1C */ stw r0, 0x1c(r4)
/* 8031556C 003111CC 90 1E 18 6C */ stw r0, 0x186c(r30)
/* 80315570 003111D0 48 00 00 FC */ b lbl_8031566C
lbl_80315574:
/* 80315574 003111D4 41 86 00 08 */ beq cr1, lbl_8031557C
/* 80315578 003111D8 40 82 00 20 */ bne lbl_80315598
lbl_8031557C:
/* 8031557C 003111DC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315580 003111E0 38 00 00 26 */ li r0, 0x26
/* 80315584 003111E4 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315588 003111E8 38 60 00 26 */ li r3, 0x26
/* 8031558C 003111EC 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315590 003111F0 90 1E 18 6C */ stw r0, 0x186c(r30)
/* 80315594 003111F4 48 00 00 D8 */ b lbl_8031566C
lbl_80315598:
/* 80315598 003111F8 2C 1A 00 00 */ cmpwi r26, 0
/* 8031559C 003111FC 41 82 00 14 */ beq lbl_803155B0
/* 803155A0 00311200 2C 1D 00 00 */ cmpwi r29, 0
/* 803155A4 00311204 41 82 00 0C */ beq lbl_803155B0
/* 803155A8 00311208 2C 1B 00 00 */ cmpwi r27, 0
/* 803155AC 0031120C 40 82 00 2C */ bne lbl_803155D8
lbl_803155B0:
/* 803155B0 00311210 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 803155B4 00311214 38 00 00 0A */ li r0, 0xa
/* 803155B8 00311218 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 803155BC 0031121C 38 60 00 0A */ li r3, 0xa
/* 803155C0 00311220 90 04 00 1C */ stw r0, 0x1c(r4)
/* 803155C4 00311224 80 9F 00 08 */ lwz r4, 8(r31)
/* 803155C8 00311228 80 84 00 38 */ lwz r4, 0x38(r4)
/* 803155CC 0031122C 90 04 18 6C */ stw r0, 0x186c(r4)
/* 803155D0 00311230 90 1F 00 18 */ stw r0, 0x18(r31)
/* 803155D4 00311234 48 00 00 98 */ b lbl_8031566C
lbl_803155D8:
/* 803155D8 00311238 93 FE 16 08 */ stw r31, 0x1608(r30)
/* 803155DC 0031123C 7F C3 F3 78 */ mr r3, r30
/* 803155E0 00311240 7F 44 D3 78 */ mr r4, r26
/* 803155E4 00311244 7F 65 DB 78 */ mr r5, r27
/* 803155E8 00311248 7F A6 EB 78 */ mr r6, r29
/* 803155EC 0031124C 7F E7 FB 78 */ mr r7, r31
/* 803155F0 00311250 39 01 00 08 */ addi r8, r1, 8
/* 803155F4 00311254 4B FF F2 DD */ bl VFiPFFILE_p_fwrite
/* 803155F8 00311258 80 81 00 08 */ lwz r4, 8(r1)
/* 803155FC 0031125C 2C 03 00 00 */ cmpwi r3, 0
/* 80315600 00311260 38 00 00 00 */ li r0, 0
/* 80315604 00311264 7C 7D 1B 78 */ mr r29, r3
/* 80315608 00311268 90 9C 00 00 */ stw r4, 0(r28)
/* 8031560C 0031126C 90 1E 16 08 */ stw r0, 0x1608(r30)
/* 80315610 00311270 41 82 00 20 */ beq lbl_80315630
/* 80315614 00311274 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315618 00311278 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 8031561C 0031127C 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80315620 00311280 80 9F 00 08 */ lwz r4, 8(r31)
/* 80315624 00311284 80 84 00 38 */ lwz r4, 0x38(r4)
/* 80315628 00311288 90 64 18 6C */ stw r3, 0x186c(r4)
/* 8031562C 0031128C 90 7F 00 18 */ stw r3, 0x18(r31)
lbl_80315630:
/* 80315630 00311290 80 01 00 08 */ lwz r0, 8(r1)
/* 80315634 00311294 2C 00 00 00 */ cmpwi r0, 0
/* 80315638 00311298 41 82 00 30 */ beq lbl_80315668
/* 8031563C 0031129C 80 9F 00 08 */ lwz r4, 8(r31)
/* 80315640 003112A0 38 64 02 62 */ addi r3, r4, 0x262
/* 80315644 003112A4 38 84 02 60 */ addi r4, r4, 0x260
/* 80315648 003112A8 4B FF 75 31 */ bl VFiPFENT_getcurrentDateTimeForEnt
/* 8031564C 003112AC 80 7F 00 08 */ lwz r3, 8(r31)
/* 80315650 003112B0 A0 03 02 62 */ lhz r0, 0x262(r3)
/* 80315654 003112B4 B0 03 02 5E */ sth r0, 0x25e(r3)
/* 80315658 003112B8 80 7F 00 08 */ lwz r3, 8(r31)
/* 8031565C 003112BC 80 03 00 00 */ lwz r0, 0(r3)
/* 80315660 003112C0 60 00 00 04 */ ori r0, r0, 4
/* 80315664 003112C4 90 03 00 00 */ stw r0, 0(r3)
lbl_80315668:
/* 80315668 003112C8 7F A3 EB 78 */ mr r3, r29
lbl_8031566C:
/* 8031566C 003112CC 39 61 00 30 */ addi r11, r1, 0x30
/* 80315670 003112D0 4B EB 1B 01 */ bl _restgpr_26
/* 80315674 003112D4 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80315678 003112D8 7C 08 03 A6 */ mtlr r0
/* 8031567C 003112DC 38 21 00 30 */ addi r1, r1, 0x30
/* 80315680 003112E0 4E 80 00 20 */ blr
.global VFiPFFILE_fseek
VFiPFFILE_fseek:
/* 80315684 003112E4 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80315688 003112E8 7C 08 02 A6 */ mflr r0
/* 8031568C 003112EC 3C C0 80 58 */ lis r6, lbl_8057F5C8@ha
/* 80315690 003112F0 90 01 00 24 */ stw r0, 0x24(r1)
/* 80315694 003112F4 38 C6 F5 C8 */ addi r6, r6, lbl_8057F5C8@l
/* 80315698 003112F8 7C 06 18 40 */ cmplw r6, r3
/* 8031569C 003112FC 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 803156A0 00311300 7C 7F 1B 78 */ mr r31, r3
/* 803156A4 00311304 93 C1 00 18 */ stw r30, 0x18(r1)
/* 803156A8 00311308 93 A1 00 14 */ stw r29, 0x14(r1)
/* 803156AC 0031130C 7C BD 2B 78 */ mr r29, r5
/* 803156B0 00311310 93 81 00 10 */ stw r28, 0x10(r1)
/* 803156B4 00311314 7C 9C 23 78 */ mr r28, r4
/* 803156B8 00311318 41 81 00 14 */ bgt lbl_803156CC
/* 803156BC 0031131C 3C 86 00 02 */ addis r4, r6, 2
/* 803156C0 00311320 38 04 7F B8 */ addi r0, r4, 0x7fb8
/* 803156C4 00311324 7C 00 18 40 */ cmplw r0, r3
/* 803156C8 00311328 40 80 00 1C */ bge lbl_803156E4
lbl_803156CC:
/* 803156CC 0031132C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 803156D0 00311330 38 00 00 0A */ li r0, 0xa
/* 803156D4 00311334 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 803156D8 00311338 38 60 00 0A */ li r3, 0xa
/* 803156DC 0031133C 90 04 00 1C */ stw r0, 0x1c(r4)
/* 803156E0 00311340 48 00 02 F8 */ b lbl_803159D8
lbl_803156E4:
/* 803156E4 00311344 2C 03 00 00 */ cmpwi r3, 0
/* 803156E8 00311348 40 82 00 0C */ bne lbl_803156F4
/* 803156EC 0031134C 3B C0 00 00 */ li r30, 0
/* 803156F0 00311350 48 00 00 0C */ b lbl_803156FC
lbl_803156F4:
/* 803156F4 00311354 80 63 00 08 */ lwz r3, 8(r3)
/* 803156F8 00311358 83 C3 02 68 */ lwz r30, 0x268(r3)
lbl_803156FC:
/* 803156FC 0031135C 2C 1E 00 00 */ cmpwi r30, 0
/* 80315700 00311360 40 82 00 1C */ bne lbl_8031571C
/* 80315704 00311364 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315708 00311368 38 00 00 26 */ li r0, 0x26
/* 8031570C 0031136C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315710 00311370 38 60 00 26 */ li r3, 0x26
/* 80315714 00311374 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315718 00311378 48 00 02 C0 */ b lbl_803159D8
lbl_8031571C:
/* 8031571C 0031137C 7F C3 F3 78 */ mr r3, r30
/* 80315720 00311380 48 00 3C 4D */ bl VFiPFVOL_CheckForRead
/* 80315724 00311384 2C 03 00 00 */ cmpwi r3, 0
/* 80315728 00311388 41 82 00 18 */ beq lbl_80315740
/* 8031572C 0031138C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315730 00311390 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315734 00311394 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80315738 00311398 90 7E 18 6C */ stw r3, 0x186c(r30)
/* 8031573C 0031139C 48 00 02 9C */ b lbl_803159D8
lbl_80315740:
/* 80315740 003113A0 2C 1F 00 00 */ cmpwi r31, 0
/* 80315744 003113A4 41 82 00 34 */ beq lbl_80315778
/* 80315748 003113A8 80 9F 00 08 */ lwz r4, 8(r31)
/* 8031574C 003113AC 2C 04 00 00 */ cmpwi r4, 0
/* 80315750 003113B0 41 82 00 28 */ beq lbl_80315778
/* 80315754 003113B4 80 1F 00 00 */ lwz r0, 0(r31)
/* 80315758 003113B8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 8031575C 003113BC 41 82 00 1C */ beq lbl_80315778
/* 80315760 003113C0 80 04 00 00 */ lwz r0, 0(r4)
/* 80315764 003113C4 54 05 07 FE */ clrlwi r5, r0, 0x1f
/* 80315768 003113C8 2C 85 00 00 */ cmpwi cr1, r5, 0
/* 8031576C 003113CC 41 86 00 0C */ beq cr1, lbl_80315778
/* 80315770 003113D0 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80315774 003113D4 40 82 00 20 */ bne lbl_80315794
lbl_80315778:
/* 80315778 003113D8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 8031577C 003113DC 38 00 00 26 */ li r0, 0x26
/* 80315780 003113E0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315784 003113E4 38 60 00 26 */ li r3, 0x26
/* 80315788 003113E8 90 04 00 1C */ stw r0, 0x1c(r4)
/* 8031578C 003113EC 90 1E 18 6C */ stw r0, 0x186c(r30)
/* 80315790 003113F0 48 00 02 48 */ b lbl_803159D8
lbl_80315794:
/* 80315794 003113F4 41 86 00 08 */ beq cr1, lbl_8031579C
/* 80315798 003113F8 40 82 00 20 */ bne lbl_803157B8
lbl_8031579C:
/* 8031579C 003113FC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 803157A0 00311400 38 00 00 26 */ li r0, 0x26
/* 803157A4 00311404 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 803157A8 00311408 38 60 00 26 */ li r3, 0x26
/* 803157AC 0031140C 90 04 00 1C */ stw r0, 0x1c(r4)
/* 803157B0 00311410 90 1E 18 6C */ stw r0, 0x186c(r30)
/* 803157B4 00311414 48 00 02 24 */ b lbl_803159D8
lbl_803157B8:
/* 803157B8 00311418 2C 1D 00 01 */ cmpwi r29, 1
/* 803157BC 0031141C 41 82 00 20 */ beq lbl_803157DC
/* 803157C0 00311420 40 80 00 10 */ bge lbl_803157D0
/* 803157C4 00311424 2C 1D 00 00 */ cmpwi r29, 0
/* 803157C8 00311428 40 80 00 1C */ bge lbl_803157E4
/* 803157CC 0031142C 48 00 00 28 */ b lbl_803157F4
lbl_803157D0:
/* 803157D0 00311430 2C 1D 00 03 */ cmpwi r29, 3
/* 803157D4 00311434 40 80 00 20 */ bge lbl_803157F4
/* 803157D8 00311438 48 00 00 14 */ b lbl_803157EC
lbl_803157DC:
/* 803157DC 0031143C 80 1F 00 1C */ lwz r0, 0x1c(r31)
/* 803157E0 00311440 48 00 00 3C */ b lbl_8031581C
lbl_803157E4:
/* 803157E4 00311444 38 00 00 00 */ li r0, 0
/* 803157E8 00311448 48 00 00 34 */ b lbl_8031581C
lbl_803157EC:
/* 803157EC 0031144C 80 04 02 64 */ lwz r0, 0x264(r4)
/* 803157F0 00311450 48 00 00 2C */ b lbl_8031581C
lbl_803157F4:
/* 803157F4 00311454 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 803157F8 00311458 38 00 00 0A */ li r0, 0xa
/* 803157FC 0031145C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315800 00311460 38 60 00 0A */ li r3, 0xa
/* 80315804 00311464 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315808 00311468 80 9F 00 08 */ lwz r4, 8(r31)
/* 8031580C 0031146C 80 84 00 38 */ lwz r4, 0x38(r4)
/* 80315810 00311470 90 04 18 6C */ stw r0, 0x186c(r4)
/* 80315814 00311474 90 1F 00 18 */ stw r0, 0x18(r31)
/* 80315818 00311478 48 00 01 C0 */ b lbl_803159D8
lbl_8031581C:
/* 8031581C 0031147C 57 84 00 01 */ rlwinm. r4, r28, 0, 0, 0
/* 80315820 00311480 41 82 00 48 */ beq lbl_80315868
/* 80315824 00311484 7F 84 E0 F8 */ nor r4, r28, r28
/* 80315828 00311488 54 84 00 7E */ clrlwi r4, r4, 1
/* 8031582C 0031148C 38 84 00 01 */ addi r4, r4, 1
/* 80315830 00311490 7C 00 20 40 */ cmplw r0, r4
/* 80315834 00311494 40 80 00 2C */ bge lbl_80315860
/* 80315838 00311498 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 8031583C 0031149C 38 00 00 0A */ li r0, 0xa
/* 80315840 003114A0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315844 003114A4 38 60 00 0A */ li r3, 0xa
/* 80315848 003114A8 90 04 00 1C */ stw r0, 0x1c(r4)
/* 8031584C 003114AC 80 9F 00 08 */ lwz r4, 8(r31)
/* 80315850 003114B0 80 84 00 38 */ lwz r4, 0x38(r4)
/* 80315854 003114B4 90 04 18 6C */ stw r0, 0x186c(r4)
/* 80315858 003114B8 90 1F 00 18 */ stw r0, 0x18(r31)
/* 8031585C 003114BC 48 00 01 7C */ b lbl_803159D8
lbl_80315860:
/* 80315860 003114C0 7C 04 00 50 */ subf r0, r4, r0
/* 80315864 003114C4 48 00 00 3C */ b lbl_803158A0
lbl_80315868:
/* 80315868 003114C8 20 80 FF FF */ subfic r4, r0, -1
/* 8031586C 003114CC 7C 1C 20 40 */ cmplw r28, r4
/* 80315870 003114D0 40 81 00 2C */ ble lbl_8031589C
/* 80315874 003114D4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315878 003114D8 38 00 00 25 */ li r0, 0x25
/* 8031587C 003114DC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315880 003114E0 38 60 00 25 */ li r3, 0x25
/* 80315884 003114E4 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315888 003114E8 80 9F 00 08 */ lwz r4, 8(r31)
/* 8031588C 003114EC 80 84 00 38 */ lwz r4, 0x38(r4)
/* 80315890 003114F0 90 04 18 6C */ stw r0, 0x186c(r4)
/* 80315894 003114F4 90 1F 00 18 */ stw r0, 0x18(r31)
/* 80315898 003114F8 48 00 01 40 */ b lbl_803159D8
lbl_8031589C:
/* 8031589C 003114FC 7C 00 E2 14 */ add r0, r0, r28
lbl_803158A0:
/* 803158A0 00311500 38 80 FF FF */ li r4, -1
/* 803158A4 00311504 2C 1F 00 00 */ cmpwi r31, 0
/* 803158A8 00311508 90 9F 00 20 */ stw r4, 0x20(r31)
/* 803158AC 0031150C 40 82 00 0C */ bne lbl_803158B8
/* 803158B0 00311510 38 A0 00 00 */ li r5, 0
/* 803158B4 00311514 48 00 00 0C */ b lbl_803158C0
lbl_803158B8:
/* 803158B8 00311518 80 9F 00 08 */ lwz r4, 8(r31)
/* 803158BC 0031151C 80 A4 02 68 */ lwz r5, 0x268(r4)
lbl_803158C0:
/* 803158C0 00311520 A0 85 00 00 */ lhz r4, 0(r5)
/* 803158C4 00311524 80 FF 00 1C */ lwz r7, 0x1c(r31)
/* 803158C8 00311528 38 84 FF FF */ addi r4, r4, -1
/* 803158CC 0031152C 88 C5 00 20 */ lbz r6, 0x20(r5)
/* 803158D0 00311530 7C E5 20 38 */ and r5, r7, r4
/* 803158D4 00311534 7C 85 00 D0 */ neg r4, r5
/* 803158D8 00311538 7C E6 34 30 */ srw r6, r7, r6
/* 803158DC 0031153C 7C 84 2B 78 */ or r4, r4, r5
/* 803158E0 00311540 54 84 0F FE */ srwi r4, r4, 0x1f
/* 803158E4 00311544 7C 86 22 15 */ add. r4, r6, r4
/* 803158E8 00311548 41 82 00 0C */ beq lbl_803158F4
/* 803158EC 0031154C 38 80 FF FF */ li r4, -1
/* 803158F0 00311550 90 9F 00 20 */ stw r4, 0x20(r31)
lbl_803158F4:
/* 803158F4 00311554 38 80 00 00 */ li r4, 0
/* 803158F8 00311558 2C 1F 00 00 */ cmpwi r31, 0
/* 803158FC 0031155C 90 9F 00 1C */ stw r4, 0x1c(r31)
/* 80315900 00311560 40 82 00 0C */ bne lbl_8031590C
/* 80315904 00311564 38 C0 00 00 */ li r6, 0
/* 80315908 00311568 48 00 00 0C */ b lbl_80315914
lbl_8031590C:
/* 8031590C 0031156C 80 9F 00 08 */ lwz r4, 8(r31)
/* 80315910 00311570 80 C4 02 68 */ lwz r6, 0x268(r4)
lbl_80315914:
/* 80315914 00311574 80 BF 00 1C */ lwz r5, 0x1c(r31)
/* 80315918 00311578 2C 1F 00 00 */ cmpwi r31, 0
/* 8031591C 0031157C 88 86 00 20 */ lbz r4, 0x20(r6)
/* 80315920 00311580 7C A4 24 30 */ srw r4, r5, r4
/* 80315924 00311584 90 9F 00 24 */ stw r4, 0x24(r31)
/* 80315928 00311588 A0 86 00 00 */ lhz r4, 0(r6)
/* 8031592C 0031158C 38 84 FF FF */ addi r4, r4, -1
/* 80315930 00311590 7C A4 20 38 */ and r4, r5, r4
/* 80315934 00311594 B0 9F 00 28 */ sth r4, 0x28(r31)
/* 80315938 00311598 40 82 00 0C */ bne lbl_80315944
/* 8031593C 0031159C 38 A0 00 00 */ li r5, 0
/* 80315940 003115A0 48 00 00 0C */ b lbl_8031594C
lbl_80315944:
/* 80315944 003115A4 80 9F 00 08 */ lwz r4, 8(r31)
/* 80315948 003115A8 80 A4 02 68 */ lwz r5, 0x268(r4)
lbl_8031594C:
/* 8031594C 003115AC A0 85 00 00 */ lhz r4, 0(r5)
/* 80315950 003115B0 80 DF 00 1C */ lwz r6, 0x1c(r31)
/* 80315954 003115B4 38 84 FF FF */ addi r4, r4, -1
/* 80315958 003115B8 89 45 00 20 */ lbz r10, 0x20(r5)
/* 8031595C 003115BC 7C C9 20 38 */ and r9, r6, r4
/* 80315960 003115C0 7C 05 20 38 */ and r5, r0, r4
/* 80315964 003115C4 7C C7 54 30 */ srw r7, r6, r10
/* 80315968 003115C8 7D 09 00 D0 */ neg r8, r9
/* 8031596C 003115CC 7C 06 54 30 */ srw r6, r0, r10
/* 80315970 003115D0 7C 85 00 D0 */ neg r4, r5
/* 80315974 003115D4 7C 84 2B 78 */ or r4, r4, r5
/* 80315978 003115D8 7D 08 4B 78 */ or r8, r8, r9
/* 8031597C 003115DC 55 05 0F FE */ srwi r5, r8, 0x1f
/* 80315980 003115E0 54 84 0F FE */ srwi r4, r4, 0x1f
/* 80315984 003115E4 7C A7 2A 14 */ add r5, r7, r5
/* 80315988 003115E8 7C 86 22 14 */ add r4, r6, r4
/* 8031598C 003115EC 7C 05 20 40 */ cmplw r5, r4
/* 80315990 003115F0 41 82 00 0C */ beq lbl_8031599C
/* 80315994 003115F4 38 80 FF FF */ li r4, -1
/* 80315998 003115F8 90 9F 00 20 */ stw r4, 0x20(r31)
lbl_8031599C:
/* 8031599C 003115FC 2C 1F 00 00 */ cmpwi r31, 0
/* 803159A0 00311600 90 1F 00 1C */ stw r0, 0x1c(r31)
/* 803159A4 00311604 40 82 00 0C */ bne lbl_803159B0
/* 803159A8 00311608 38 80 00 00 */ li r4, 0
/* 803159AC 0031160C 48 00 00 0C */ b lbl_803159B8
lbl_803159B0:
/* 803159B0 00311610 80 9F 00 08 */ lwz r4, 8(r31)
/* 803159B4 00311614 80 84 02 68 */ lwz r4, 0x268(r4)
lbl_803159B8:
/* 803159B8 00311618 80 BF 00 1C */ lwz r5, 0x1c(r31)
/* 803159BC 0031161C 88 04 00 20 */ lbz r0, 0x20(r4)
/* 803159C0 00311620 7C A0 04 30 */ srw r0, r5, r0
/* 803159C4 00311624 90 1F 00 24 */ stw r0, 0x24(r31)
/* 803159C8 00311628 A0 84 00 00 */ lhz r4, 0(r4)
/* 803159CC 0031162C 38 04 FF FF */ addi r0, r4, -1
/* 803159D0 00311630 7C A0 00 38 */ and r0, r5, r0
/* 803159D4 00311634 B0 1F 00 28 */ sth r0, 0x28(r31)
lbl_803159D8:
/* 803159D8 00311638 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803159DC 0031163C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803159E0 00311640 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 803159E4 00311644 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 803159E8 00311648 83 81 00 10 */ lwz r28, 0x10(r1)
/* 803159EC 0031164C 7C 08 03 A6 */ mtlr r0
/* 803159F0 00311650 38 21 00 20 */ addi r1, r1, 0x20
/* 803159F4 00311654 4E 80 00 20 */ blr
.global VFiPFFILE_finfo
VFiPFFILE_finfo:
/* 803159F8 00311658 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 803159FC 0031165C 7C 08 02 A6 */ mflr r0
/* 80315A00 00311660 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
/* 80315A04 00311664 90 01 00 44 */ stw r0, 0x44(r1)
/* 80315A08 00311668 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
/* 80315A0C 0031166C 7C 05 18 40 */ cmplw r5, r3
/* 80315A10 00311670 93 E1 00 3C */ stw r31, 0x3c(r1)
/* 80315A14 00311674 93 C1 00 38 */ stw r30, 0x38(r1)
/* 80315A18 00311678 7C 7E 1B 78 */ mr r30, r3
/* 80315A1C 0031167C 93 A1 00 34 */ stw r29, 0x34(r1)
/* 80315A20 00311680 7C 9D 23 78 */ mr r29, r4
/* 80315A24 00311684 41 81 00 14 */ bgt lbl_80315A38
/* 80315A28 00311688 3C 85 00 02 */ addis r4, r5, 2
/* 80315A2C 0031168C 38 04 7F B8 */ addi r0, r4, 0x7fb8
/* 80315A30 00311690 7C 00 18 40 */ cmplw r0, r3
/* 80315A34 00311694 40 80 00 1C */ bge lbl_80315A50
lbl_80315A38:
/* 80315A38 00311698 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315A3C 0031169C 38 00 00 0A */ li r0, 0xa
/* 80315A40 003116A0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315A44 003116A4 38 60 00 0A */ li r3, 0xa
/* 80315A48 003116A8 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315A4C 003116AC 48 00 01 C8 */ b lbl_80315C14
lbl_80315A50:
/* 80315A50 003116B0 2C 03 00 00 */ cmpwi r3, 0
/* 80315A54 003116B4 40 82 00 0C */ bne lbl_80315A60
/* 80315A58 003116B8 3B E0 00 00 */ li r31, 0
/* 80315A5C 003116BC 48 00 00 0C */ b lbl_80315A68
lbl_80315A60:
/* 80315A60 003116C0 80 63 00 08 */ lwz r3, 8(r3)
/* 80315A64 003116C4 83 E3 02 68 */ lwz r31, 0x268(r3)
lbl_80315A68:
/* 80315A68 003116C8 2C 1F 00 00 */ cmpwi r31, 0
/* 80315A6C 003116CC 40 82 00 1C */ bne lbl_80315A88
/* 80315A70 003116D0 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315A74 003116D4 38 00 00 26 */ li r0, 0x26
/* 80315A78 003116D8 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315A7C 003116DC 38 60 00 26 */ li r3, 0x26
/* 80315A80 003116E0 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315A84 003116E4 48 00 01 90 */ b lbl_80315C14
lbl_80315A88:
/* 80315A88 003116E8 7F E3 FB 78 */ mr r3, r31
/* 80315A8C 003116EC 48 00 38 E1 */ bl VFiPFVOL_CheckForRead
/* 80315A90 003116F0 2C 03 00 00 */ cmpwi r3, 0
/* 80315A94 003116F4 41 82 00 24 */ beq lbl_80315AB8
/* 80315A98 003116F8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315A9C 003116FC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315AA0 00311700 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80315AA4 00311704 80 9E 00 08 */ lwz r4, 8(r30)
/* 80315AA8 00311708 80 84 00 38 */ lwz r4, 0x38(r4)
/* 80315AAC 0031170C 90 64 18 6C */ stw r3, 0x186c(r4)
/* 80315AB0 00311710 90 7E 00 18 */ stw r3, 0x18(r30)
/* 80315AB4 00311714 48 00 01 60 */ b lbl_80315C14
lbl_80315AB8:
/* 80315AB8 00311718 2C 1E 00 00 */ cmpwi r30, 0
/* 80315ABC 0031171C 41 82 00 34 */ beq lbl_80315AF0
/* 80315AC0 00311720 80 7E 00 08 */ lwz r3, 8(r30)
/* 80315AC4 00311724 2C 03 00 00 */ cmpwi r3, 0
/* 80315AC8 00311728 41 82 00 28 */ beq lbl_80315AF0
/* 80315ACC 0031172C 80 1E 00 00 */ lwz r0, 0(r30)
/* 80315AD0 00311730 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 80315AD4 00311734 41 82 00 1C */ beq lbl_80315AF0
/* 80315AD8 00311738 80 03 00 00 */ lwz r0, 0(r3)
/* 80315ADC 0031173C 54 03 07 FE */ clrlwi r3, r0, 0x1f
/* 80315AE0 00311740 2C 83 00 00 */ cmpwi cr1, r3, 0
/* 80315AE4 00311744 41 86 00 0C */ beq cr1, lbl_80315AF0
/* 80315AE8 00311748 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80315AEC 0031174C 40 82 00 20 */ bne lbl_80315B0C
lbl_80315AF0:
/* 80315AF0 00311750 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315AF4 00311754 38 00 00 26 */ li r0, 0x26
/* 80315AF8 00311758 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315AFC 0031175C 38 60 00 26 */ li r3, 0x26
/* 80315B00 00311760 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315B04 00311764 90 1F 18 6C */ stw r0, 0x186c(r31)
/* 80315B08 00311768 48 00 01 0C */ b lbl_80315C14
lbl_80315B0C:
/* 80315B0C 0031176C 41 86 00 08 */ beq cr1, lbl_80315B14
/* 80315B10 00311770 40 82 00 20 */ bne lbl_80315B30
lbl_80315B14:
/* 80315B14 00311774 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315B18 00311778 38 00 00 26 */ li r0, 0x26
/* 80315B1C 0031177C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315B20 00311780 38 60 00 26 */ li r3, 0x26
/* 80315B24 00311784 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315B28 00311788 90 1F 18 6C */ stw r0, 0x186c(r31)
/* 80315B2C 0031178C 48 00 00 E8 */ b lbl_80315C14
lbl_80315B30:
/* 80315B30 00311790 2C 1D 00 00 */ cmpwi r29, 0
/* 80315B34 00311794 40 82 00 2C */ bne lbl_80315B60
/* 80315B38 00311798 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315B3C 0031179C 38 00 00 0A */ li r0, 0xa
/* 80315B40 003117A0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315B44 003117A4 38 60 00 0A */ li r3, 0xa
/* 80315B48 003117A8 90 04 00 1C */ stw r0, 0x1c(r4)
/* 80315B4C 003117AC 80 9E 00 08 */ lwz r4, 8(r30)
/* 80315B50 003117B0 80 84 00 38 */ lwz r4, 0x38(r4)
/* 80315B54 003117B4 90 04 18 6C */ stw r0, 0x186c(r4)
/* 80315B58 003117B8 90 1E 00 18 */ stw r0, 0x18(r30)
/* 80315B5C 003117BC 48 00 00 B8 */ b lbl_80315C14
lbl_80315B60:
/* 80315B60 003117C0 93 DF 16 08 */ stw r30, 0x1608(r31)
/* 80315B64 003117C4 7F C3 F3 78 */ mr r3, r30
/* 80315B68 003117C8 7F A4 EB 78 */ mr r4, r29
/* 80315B6C 003117CC 81 5E 00 1C */ lwz r10, 0x1c(r30)
/* 80315B70 003117D0 81 3E 00 20 */ lwz r9, 0x20(r30)
/* 80315B74 003117D4 81 1E 00 24 */ lwz r8, 0x24(r30)
/* 80315B78 003117D8 80 FE 00 28 */ lwz r7, 0x28(r30)
/* 80315B7C 003117DC 80 DE 00 0C */ lwz r6, 0xc(r30)
/* 80315B80 003117E0 80 BE 00 10 */ lwz r5, 0x10(r30)
/* 80315B84 003117E4 80 1E 00 14 */ lwz r0, 0x14(r30)
/* 80315B88 003117E8 91 41 00 18 */ stw r10, 0x18(r1)
/* 80315B8C 003117EC 91 21 00 1C */ stw r9, 0x1c(r1)
/* 80315B90 003117F0 91 01 00 20 */ stw r8, 0x20(r1)
/* 80315B94 003117F4 90 E1 00 24 */ stw r7, 0x24(r1)
/* 80315B98 003117F8 90 C1 00 08 */ stw r6, 8(r1)
/* 80315B9C 003117FC 90 A1 00 0C */ stw r5, 0xc(r1)
/* 80315BA0 00311800 90 01 00 10 */ stw r0, 0x10(r1)
/* 80315BA4 00311804 4B FF EF 81 */ bl VFiPFFILE_p_finfo
/* 80315BA8 00311808 81 41 00 18 */ lwz r10, 0x18(r1)
/* 80315BAC 0031180C 2C 03 00 00 */ cmpwi r3, 0
/* 80315BB0 00311810 81 21 00 1C */ lwz r9, 0x1c(r1)
/* 80315BB4 00311814 38 00 00 00 */ li r0, 0
/* 80315BB8 00311818 81 01 00 20 */ lwz r8, 0x20(r1)
/* 80315BBC 0031181C 80 E1 00 24 */ lwz r7, 0x24(r1)
/* 80315BC0 00311820 80 C1 00 08 */ lwz r6, 8(r1)
/* 80315BC4 00311824 80 A1 00 0C */ lwz r5, 0xc(r1)
/* 80315BC8 00311828 80 81 00 10 */ lwz r4, 0x10(r1)
/* 80315BCC 0031182C 91 5E 00 1C */ stw r10, 0x1c(r30)
/* 80315BD0 00311830 91 3E 00 20 */ stw r9, 0x20(r30)
/* 80315BD4 00311834 91 1E 00 24 */ stw r8, 0x24(r30)
/* 80315BD8 00311838 90 FE 00 28 */ stw r7, 0x28(r30)
/* 80315BDC 0031183C 90 DE 00 0C */ stw r6, 0xc(r30)
/* 80315BE0 00311840 90 BE 00 10 */ stw r5, 0x10(r30)
/* 80315BE4 00311844 90 9E 00 14 */ stw r4, 0x14(r30)
/* 80315BE8 00311848 90 1F 16 08 */ stw r0, 0x1608(r31)
/* 80315BEC 0031184C 41 82 00 24 */ beq lbl_80315C10
/* 80315BF0 00311850 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
/* 80315BF4 00311854 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
/* 80315BF8 00311858 90 64 00 1C */ stw r3, 0x1c(r4)
/* 80315BFC 0031185C 80 9E 00 08 */ lwz r4, 8(r30)
/* 80315C00 00311860 80 84 00 38 */ lwz r4, 0x38(r4)
/* 80315C04 00311864 90 64 18 6C */ stw r3, 0x186c(r4)
/* 80315C08 00311868 90 7E 00 18 */ stw r3, 0x18(r30)
/* 80315C0C 0031186C 48 00 00 08 */ b lbl_80315C14
lbl_80315C10:
/* 80315C10 00311870 38 60 00 00 */ li r3, 0
lbl_80315C14:
/* 80315C14 00311874 80 01 00 44 */ lwz r0, 0x44(r1)
/* 80315C18 00311878 83 E1 00 3C */ lwz r31, 0x3c(r1)
/* 80315C1C 0031187C 83 C1 00 38 */ lwz r30, 0x38(r1)
/* 80315C20 00311880 83 A1 00 34 */ lwz r29, 0x34(r1)
/* 80315C24 00311884 7C 08 03 A6 */ mtlr r0
/* 80315C28 00311888 38 21 00 40 */ addi r1, r1, 0x40
/* 80315C2C 0031188C 4E 80 00 20 */ blr
|