summaryrefslogtreecommitdiff
path: root/asm/SDK/VF/pf_cache.s
blob: 2b580903947765f793d4662584fdc851201a4307 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
.include "macros.inc"

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

.global VFiPFCACHE_InitPageList
VFiPFCACHE_InitPageList:
/* 80308ED8 00304B38  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80308EDC 00304B3C  7C 08 02 A6 */	mflr r0
/* 80308EE0 00304B40  90 01 00 34 */	stw r0, 0x34(r1)
/* 80308EE4 00304B44  39 61 00 30 */	addi r11, r1, 0x30
/* 80308EE8 00304B48  4B EB E2 39 */	bl _savegpr_25
/* 80308EEC 00304B4C  90 A4 00 00 */	stw r5, 0(r4)
/* 80308EF0 00304B50  28 09 00 01 */	cmplwi r9, 1
/* 80308EF4 00304B54  A0 03 00 00 */	lhz r0, 0(r3)
/* 80308EF8 00304B58  7C 00 4E 70 */	srawi r0, r0, 9
/* 80308EFC 00304B5C  7D 80 41 D6 */	mullw r12, r0, r8
/* 80308F00 00304B60  40 82 00 10 */	bne lbl_80308F10
/* 80308F04 00304B64  7C 07 63 96 */	divwu r0, r7, r12
/* 80308F08 00304B68  28 00 00 01 */	cmplwi r0, 1
/* 80308F0C 00304B6C  41 80 00 18 */	blt lbl_80308F24
lbl_80308F10:
/* 80308F10 00304B70  2C 09 00 00 */	cmpwi r9, 0
/* 80308F14 00304B74  40 82 00 18 */	bne lbl_80308F2C
/* 80308F18 00304B78  7C 07 63 96 */	divwu r0, r7, r12
/* 80308F1C 00304B7C  28 00 00 02 */	cmplwi r0, 2
/* 80308F20 00304B80  40 80 00 0C */	bge lbl_80308F2C
lbl_80308F24:
/* 80308F24 00304B84  38 60 00 1E */	li r3, 0x1e
/* 80308F28 00304B88  48 00 02 18 */	b lbl_80309140
lbl_80308F2C:
/* 80308F2C 00304B8C  7C 07 63 96 */	divwu r0, r7, r12
/* 80308F30 00304B90  28 00 00 01 */	cmplwi r0, 1
/* 80308F34 00304B94  40 82 00 64 */	bne lbl_80308F98
/* 80308F38 00304B98  A0 05 00 00 */	lhz r0, 0(r5)
/* 80308F3C 00304B9C  38 80 00 00 */	li r4, 0
/* 80308F40 00304BA0  38 60 FF FF */	li r3, -1
/* 80308F44 00304BA4  2C 09 00 00 */	cmpwi r9, 0
/* 80308F48 00304BA8  54 00 04 3A */	rlwinm r0, r0, 0, 0x10, 0x1d
/* 80308F4C 00304BAC  90 A5 00 24 */	stw r5, 0x24(r5)
/* 80308F50 00304BB0  90 A5 00 20 */	stw r5, 0x20(r5)
/* 80308F54 00304BB4  90 C5 00 04 */	stw r6, 4(r5)
/* 80308F58 00304BB8  90 C5 00 08 */	stw r6, 8(r5)
/* 80308F5C 00304BBC  90 85 00 0C */	stw r4, 0xc(r5)
/* 80308F60 00304BC0  90 85 00 10 */	stw r4, 0x10(r5)
/* 80308F64 00304BC4  91 05 00 14 */	stw r8, 0x14(r5)
/* 80308F68 00304BC8  90 65 00 18 */	stw r3, 0x18(r5)
/* 80308F6C 00304BCC  B0 85 00 02 */	sth r4, 2(r5)
/* 80308F70 00304BD0  90 85 00 1C */	stw r4, 0x1c(r5)
/* 80308F74 00304BD4  B0 05 00 00 */	sth r0, 0(r5)
/* 80308F78 00304BD8  41 82 00 10 */	beq lbl_80308F88
/* 80308F7C 00304BDC  60 00 00 04 */	ori r0, r0, 4
/* 80308F80 00304BE0  B0 05 00 00 */	sth r0, 0(r5)
/* 80308F84 00304BE4  48 00 00 0C */	b lbl_80308F90
lbl_80308F88:
/* 80308F88 00304BE8  54 00 07 B8 */	rlwinm r0, r0, 0, 0x1e, 0x1c
/* 80308F8C 00304BEC  B0 05 00 00 */	sth r0, 0(r5)
lbl_80308F90:
/* 80308F90 00304BF0  38 60 00 00 */	li r3, 0
/* 80308F94 00304BF4  48 00 01 AC */	b lbl_80309140
lbl_80308F98:
/* 80308F98 00304BF8  7C 60 61 D6 */	mullw r3, r0, r12
/* 80308F9C 00304BFC  3B C0 00 00 */	li r30, 0
/* 80308FA0 00304C00  A0 05 00 00 */	lhz r0, 0(r5)
/* 80308FA4 00304C04  3B A0 FF FF */	li r29, -1
/* 80308FA8 00304C08  2C 09 00 00 */	cmpwi r9, 0
/* 80308FAC 00304C0C  90 C5 00 04 */	stw r6, 4(r5)
/* 80308FB0 00304C10  54 1C 04 3A */	rlwinm r28, r0, 0, 0x10, 0x1d
/* 80308FB4 00304C14  7D 63 38 50 */	subf r11, r3, r7
/* 80308FB8 00304C18  7C 0B 38 50 */	subf r0, r11, r7
/* 80308FBC 00304C1C  90 C5 00 08 */	stw r6, 8(r5)
/* 80308FC0 00304C20  7D 4C 00 50 */	subf r10, r12, r0
/* 80308FC4 00304C24  1C 6A 00 28 */	mulli r3, r10, 0x28
/* 80308FC8 00304C28  93 C5 00 0C */	stw r30, 0xc(r5)
/* 80308FCC 00304C2C  93 C5 00 10 */	stw r30, 0x10(r5)
/* 80308FD0 00304C30  7C 85 1A 14 */	add r4, r5, r3
/* 80308FD4 00304C34  1C 0C 00 28 */	mulli r0, r12, 0x28
/* 80308FD8 00304C38  91 05 00 14 */	stw r8, 0x14(r5)
/* 80308FDC 00304C3C  90 85 00 24 */	stw r4, 0x24(r5)
/* 80308FE0 00304C40  7C 65 02 14 */	add r3, r5, r0
/* 80308FE4 00304C44  90 65 00 20 */	stw r3, 0x20(r5)
/* 80308FE8 00304C48  93 A5 00 18 */	stw r29, 0x18(r5)
/* 80308FEC 00304C4C  B3 C5 00 02 */	sth r30, 2(r5)
/* 80308FF0 00304C50  93 C5 00 1C */	stw r30, 0x1c(r5)
/* 80308FF4 00304C54  B3 85 00 00 */	sth r28, 0(r5)
/* 80308FF8 00304C58  41 82 00 10 */	beq lbl_80309008
/* 80308FFC 00304C5C  63 9C 00 04 */	ori r28, r28, 4
/* 80309000 00304C60  B3 85 00 00 */	sth r28, 0(r5)
/* 80309004 00304C64  48 00 00 0C */	b lbl_80309010
lbl_80309008:
/* 80309008 00304C68  57 9C 07 B8 */	rlwinm r28, r28, 0, 0x1e, 0x1c
/* 8030900C 00304C6C  B3 85 00 00 */	sth r28, 0(r5)
lbl_80309010:
/* 80309010 00304C70  55 9A 48 2C */	slwi r26, r12, 9
/* 80309014 00304C74  7D 99 63 78 */	mr r25, r12
/* 80309018 00304C78  3B A0 00 00 */	li r29, 0
/* 8030901C 00304C7C  3B C0 FF FF */	li r30, -1
/* 80309020 00304C80  7F 66 D2 14 */	add r27, r6, r26
/* 80309024 00304C84  48 00 00 80 */	b lbl_803090A4
lbl_80309028:
/* 80309028 00304C88  7F 8C C8 50 */	subf r28, r12, r25
/* 8030902C 00304C8C  7F F9 62 14 */	add r31, r25, r12
/* 80309030 00304C90  1F 9C 00 28 */	mulli r28, r28, 0x28
/* 80309034 00304C94  2C 09 00 00 */	cmpwi r9, 0
/* 80309038 00304C98  1F FF 00 28 */	mulli r31, r31, 0x28
/* 8030903C 00304C9C  7F 85 E2 14 */	add r28, r5, r28
/* 80309040 00304CA0  93 83 00 24 */	stw r28, 0x24(r3)
/* 80309044 00304CA4  7F E5 FA 14 */	add r31, r5, r31
/* 80309048 00304CA8  93 E3 00 20 */	stw r31, 0x20(r3)
/* 8030904C 00304CAC  93 63 00 04 */	stw r27, 4(r3)
/* 80309050 00304CB0  93 63 00 08 */	stw r27, 8(r3)
/* 80309054 00304CB4  93 A3 00 0C */	stw r29, 0xc(r3)
/* 80309058 00304CB8  93 A3 00 10 */	stw r29, 0x10(r3)
/* 8030905C 00304CBC  91 03 00 14 */	stw r8, 0x14(r3)
/* 80309060 00304CC0  93 C3 00 18 */	stw r30, 0x18(r3)
/* 80309064 00304CC4  B3 A3 00 02 */	sth r29, 2(r3)
/* 80309068 00304CC8  93 A3 00 1C */	stw r29, 0x1c(r3)
/* 8030906C 00304CCC  A3 E3 00 00 */	lhz r31, 0(r3)
/* 80309070 00304CD0  57 FF 04 3A */	rlwinm r31, r31, 0, 0x10, 0x1d
/* 80309074 00304CD4  B3 E3 00 00 */	sth r31, 0(r3)
/* 80309078 00304CD8  41 82 00 14 */	beq lbl_8030908C
/* 8030907C 00304CDC  A3 E3 00 00 */	lhz r31, 0(r3)
/* 80309080 00304CE0  63 FF 00 04 */	ori r31, r31, 4
/* 80309084 00304CE4  B3 E3 00 00 */	sth r31, 0(r3)
/* 80309088 00304CE8  48 00 00 10 */	b lbl_80309098
lbl_8030908C:
/* 8030908C 00304CEC  A3 E3 00 00 */	lhz r31, 0(r3)
/* 80309090 00304CF0  57 FF 07 B8 */	rlwinm r31, r31, 0, 0x1e, 0x1c
/* 80309094 00304CF4  B3 E3 00 00 */	sth r31, 0(r3)
lbl_80309098:
/* 80309098 00304CF8  7C 63 02 14 */	add r3, r3, r0
/* 8030909C 00304CFC  7F 7B D2 14 */	add r27, r27, r26
/* 803090A0 00304D00  7F 39 62 14 */	add r25, r25, r12
lbl_803090A4:
/* 803090A4 00304D04  7C 19 50 40 */	cmplw r25, r10
/* 803090A8 00304D08  41 80 FF 80 */	blt lbl_80309028
/* 803090AC 00304D0C  55 80 08 3C */	slwi r0, r12, 1
/* 803090B0 00304D10  7D 4B 38 50 */	subf r10, r11, r7
/* 803090B4 00304D14  7C 00 00 D0 */	neg r0, r0
/* 803090B8 00304D18  2C 09 00 00 */	cmpwi r9, 0
/* 803090BC 00304D1C  7C 0B 00 50 */	subf r0, r11, r0
/* 803090C0 00304D20  7D 6C 50 50 */	subf r11, r12, r10
/* 803090C4 00304D24  7D 40 3A 14 */	add r10, r0, r7
/* 803090C8 00304D28  38 60 00 00 */	li r3, 0
/* 803090CC 00304D2C  55 67 48 2C */	slwi r7, r11, 9
/* 803090D0 00304D30  38 00 FF FF */	li r0, -1
/* 803090D4 00304D34  7D 26 3A 14 */	add r9, r6, r7
/* 803090D8 00304D38  1D 8B 00 28 */	mulli r12, r11, 0x28
/* 803090DC 00304D3C  1C EA 00 28 */	mulli r7, r10, 0x28
/* 803090E0 00304D40  7C C5 62 14 */	add r6, r5, r12
/* 803090E4 00304D44  7C E5 3A 14 */	add r7, r5, r7
/* 803090E8 00304D48  90 E6 00 24 */	stw r7, 0x24(r6)
/* 803090EC 00304D4C  90 A6 00 20 */	stw r5, 0x20(r6)
/* 803090F0 00304D50  91 26 00 04 */	stw r9, 4(r6)
/* 803090F4 00304D54  91 26 00 08 */	stw r9, 8(r6)
/* 803090F8 00304D58  90 66 00 0C */	stw r3, 0xc(r6)
/* 803090FC 00304D5C  90 66 00 10 */	stw r3, 0x10(r6)
/* 80309100 00304D60  91 06 00 14 */	stw r8, 0x14(r6)
/* 80309104 00304D64  90 06 00 18 */	stw r0, 0x18(r6)
/* 80309108 00304D68  B0 66 00 02 */	sth r3, 2(r6)
/* 8030910C 00304D6C  90 66 00 1C */	stw r3, 0x1c(r6)
/* 80309110 00304D70  A0 04 00 00 */	lhz r0, 0(r4)
/* 80309114 00304D74  54 00 04 3A */	rlwinm r0, r0, 0, 0x10, 0x1d
/* 80309118 00304D78  B0 04 00 00 */	sth r0, 0(r4)
/* 8030911C 00304D7C  41 82 00 14 */	beq lbl_80309130
/* 80309120 00304D80  A0 04 00 00 */	lhz r0, 0(r4)
/* 80309124 00304D84  60 00 00 04 */	ori r0, r0, 4
/* 80309128 00304D88  B0 04 00 00 */	sth r0, 0(r4)
/* 8030912C 00304D8C  48 00 00 10 */	b lbl_8030913C
lbl_80309130:
/* 80309130 00304D90  A0 04 00 00 */	lhz r0, 0(r4)
/* 80309134 00304D94  54 00 07 B8 */	rlwinm r0, r0, 0, 0x1e, 0x1c
/* 80309138 00304D98  B0 04 00 00 */	sth r0, 0(r4)
lbl_8030913C:
/* 8030913C 00304D9C  38 60 00 00 */	li r3, 0
lbl_80309140:
/* 80309140 00304DA0  39 61 00 30 */	addi r11, r1, 0x30
/* 80309144 00304DA4  4B EB E0 29 */	bl _restgpr_25
/* 80309148 00304DA8  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030914C 00304DAC  7C 08 03 A6 */	mtlr r0
/* 80309150 00304DB0  38 21 00 30 */	addi r1, r1, 0x30
/* 80309154 00304DB4  4E 80 00 20 */	blr

.global VFiPFCACHE_SearchForPage
VFiPFCACHE_SearchForPage:
/* 80309158 00304DB8  3C 05 00 01 */	addis r0, r5, 1
/* 8030915C 00304DBC  28 00 FF FF */	cmplwi r0, 0xffff
/* 80309160 00304DC0  40 82 00 0C */	bne lbl_8030916C
/* 80309164 00304DC4  38 60 00 00 */	li r3, 0
/* 80309168 00304DC8  4E 80 00 20 */	blr
lbl_8030916C:
/* 8030916C 00304DCC  A0 04 00 00 */	lhz r0, 0(r4)
/* 80309170 00304DD0  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80309174 00304DD4  40 82 00 0C */	bne lbl_80309180
/* 80309178 00304DD8  38 60 00 00 */	li r3, 0
/* 8030917C 00304DDC  4E 80 00 20 */	blr
lbl_80309180:
/* 80309180 00304DE0  80 E4 00 18 */	lwz r7, 0x18(r4)
/* 80309184 00304DE4  7C 07 28 40 */	cmplw r7, r5
/* 80309188 00304DE8  41 81 00 38 */	bgt lbl_803091C0
/* 8030918C 00304DEC  80 04 00 14 */	lwz r0, 0x14(r4)
/* 80309190 00304DF0  7C C7 02 14 */	add r6, r7, r0
/* 80309194 00304DF4  38 06 FF FF */	addi r0, r6, -1
/* 80309198 00304DF8  7C 00 28 40 */	cmplw r0, r5
/* 8030919C 00304DFC  41 80 00 24 */	blt lbl_803091C0
/* 803091A0 00304E00  88 03 00 20 */	lbz r0, 0x20(r3)
/* 803091A4 00304E04  7C A7 28 50 */	subf r5, r7, r5
/* 803091A8 00304E08  80 C4 00 04 */	lwz r6, 4(r4)
/* 803091AC 00304E0C  7C 83 23 78 */	mr r3, r4
/* 803091B0 00304E10  7C A0 00 30 */	slw r0, r5, r0
/* 803091B4 00304E14  7C 06 02 14 */	add r0, r6, r0
/* 803091B8 00304E18  90 04 00 08 */	stw r0, 8(r4)
/* 803091BC 00304E1C  4E 80 00 20 */	blr
lbl_803091C0:
/* 803091C0 00304E20  81 04 00 20 */	lwz r8, 0x20(r4)
/* 803091C4 00304E24  48 00 00 5C */	b lbl_80309220
lbl_803091C8:
/* 803091C8 00304E28  A0 08 00 00 */	lhz r0, 0(r8)
/* 803091CC 00304E2C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 803091D0 00304E30  40 82 00 0C */	bne lbl_803091DC
/* 803091D4 00304E34  38 60 00 00 */	li r3, 0
/* 803091D8 00304E38  4E 80 00 20 */	blr
lbl_803091DC:
/* 803091DC 00304E3C  80 E8 00 18 */	lwz r7, 0x18(r8)
/* 803091E0 00304E40  7C 07 28 40 */	cmplw r7, r5
/* 803091E4 00304E44  41 81 00 38 */	bgt lbl_8030921C
/* 803091E8 00304E48  80 08 00 14 */	lwz r0, 0x14(r8)
/* 803091EC 00304E4C  7C C7 02 14 */	add r6, r7, r0
/* 803091F0 00304E50  38 06 FF FF */	addi r0, r6, -1
/* 803091F4 00304E54  7C 00 28 40 */	cmplw r0, r5
/* 803091F8 00304E58  41 80 00 24 */	blt lbl_8030921C
/* 803091FC 00304E5C  88 03 00 20 */	lbz r0, 0x20(r3)
/* 80309200 00304E60  7C 87 28 50 */	subf r4, r7, r5
/* 80309204 00304E64  80 A8 00 04 */	lwz r5, 4(r8)
/* 80309208 00304E68  7D 03 43 78 */	mr r3, r8
/* 8030920C 00304E6C  7C 80 00 30 */	slw r0, r4, r0
/* 80309210 00304E70  7C 05 02 14 */	add r0, r5, r0
/* 80309214 00304E74  90 08 00 08 */	stw r0, 8(r8)
/* 80309218 00304E78  4E 80 00 20 */	blr
lbl_8030921C:
/* 8030921C 00304E7C  81 08 00 20 */	lwz r8, 0x20(r8)
lbl_80309220:
/* 80309220 00304E80  7C 08 20 40 */	cmplw r8, r4
/* 80309224 00304E84  40 82 FF A4 */	bne lbl_803091C8
/* 80309228 00304E88  38 60 00 00 */	li r3, 0
/* 8030922C 00304E8C  4E 80 00 20 */	blr

.global VFiPFCACHE_SearchForFreePage
VFiPFCACHE_SearchForFreePage:
/* 80309230 00304E90  80 C3 00 24 */	lwz r6, 0x24(r3)
/* 80309234 00304E94  48 00 00 3C */	b lbl_80309270
lbl_80309238:
/* 80309238 00304E98  A0 06 00 00 */	lhz r0, 0(r6)
/* 8030923C 00304E9C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80309240 00304EA0  40 82 00 10 */	bne lbl_80309250
/* 80309244 00304EA4  90 C4 00 00 */	stw r6, 0(r4)
/* 80309248 00304EA8  38 60 00 01 */	li r3, 1
/* 8030924C 00304EAC  4E 80 00 20 */	blr
lbl_80309250:
/* 80309250 00304EB0  80 A6 00 18 */	lwz r5, 0x18(r6)
/* 80309254 00304EB4  3C 05 00 01 */	addis r0, r5, 1
/* 80309258 00304EB8  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030925C 00304EBC  41 82 00 10 */	beq lbl_8030926C
/* 80309260 00304EC0  90 C4 00 00 */	stw r6, 0(r4)
/* 80309264 00304EC4  38 60 00 00 */	li r3, 0
/* 80309268 00304EC8  4E 80 00 20 */	blr
lbl_8030926C:
/* 8030926C 00304ECC  80 C6 00 24 */	lwz r6, 0x24(r6)
lbl_80309270:
/* 80309270 00304ED0  7C 06 18 40 */	cmplw r6, r3
/* 80309274 00304ED4  40 82 FF C4 */	bne lbl_80309238
/* 80309278 00304ED8  A0 06 00 00 */	lhz r0, 0(r6)
/* 8030927C 00304EDC  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80309280 00304EE0  40 82 00 10 */	bne lbl_80309290
/* 80309284 00304EE4  90 C4 00 00 */	stw r6, 0(r4)
/* 80309288 00304EE8  38 60 00 01 */	li r3, 1
/* 8030928C 00304EEC  4E 80 00 20 */	blr
lbl_80309290:
/* 80309290 00304EF0  80 66 00 18 */	lwz r3, 0x18(r6)
/* 80309294 00304EF4  3C 03 00 01 */	addis r0, r3, 1
/* 80309298 00304EF8  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030929C 00304EFC  41 82 00 10 */	beq lbl_803092AC
/* 803092A0 00304F00  90 C4 00 00 */	stw r6, 0(r4)
/* 803092A4 00304F04  38 60 00 00 */	li r3, 0
/* 803092A8 00304F08  4E 80 00 20 */	blr
lbl_803092AC:
/* 803092AC 00304F0C  38 00 00 00 */	li r0, 0
/* 803092B0 00304F10  38 60 00 00 */	li r3, 0
/* 803092B4 00304F14  90 04 00 00 */	stw r0, 0(r4)
/* 803092B8 00304F18  4E 80 00 20 */	blr

.global VFiPFCACHE_FlushPageIfNeeded
VFiPFCACHE_FlushPageIfNeeded:
/* 803092BC 00304F1C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 803092C0 00304F20  7C 08 02 A6 */	mflr r0
/* 803092C4 00304F24  90 01 00 34 */	stw r0, 0x34(r1)
/* 803092C8 00304F28  39 61 00 30 */	addi r11, r1, 0x30
/* 803092CC 00304F2C  4B EB DE 5D */	bl _savegpr_27
/* 803092D0 00304F30  2C 04 00 00 */	cmpwi r4, 0
/* 803092D4 00304F34  7C 7E 1B 78 */	mr r30, r3
/* 803092D8 00304F38  7C 9F 23 78 */	mr r31, r4
/* 803092DC 00304F3C  41 82 00 C4 */	beq lbl_803093A0
/* 803092E0 00304F40  A0 04 00 00 */	lhz r0, 0(r4)
/* 803092E4 00304F44  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 803092E8 00304F48  41 82 00 B8 */	beq lbl_803093A0
/* 803092EC 00304F4C  81 04 00 18 */	lwz r8, 0x18(r4)
/* 803092F0 00304F50  3C 08 00 01 */	addis r0, r8, 1
/* 803092F4 00304F54  28 00 FF FF */	cmplwi r0, 0xffff
/* 803092F8 00304F58  41 82 00 A8 */	beq lbl_803093A0
/* 803092FC 00304F5C  83 A4 00 0C */	lwz r29, 0xc(r4)
/* 80309300 00304F60  38 E1 00 08 */	addi r7, r1, 8
/* 80309304 00304F64  89 23 00 20 */	lbz r9, 0x20(r3)
/* 80309308 00304F68  80 C4 00 04 */	lwz r6, 4(r4)
/* 8030930C 00304F6C  80 04 00 10 */	lwz r0, 0x10(r4)
/* 80309310 00304F70  7F A5 4C 30 */	srw r5, r29, r9
/* 80309314 00304F74  7C C6 E8 50 */	subf r6, r6, r29
/* 80309318 00304F78  7F A4 EB 78 */	mr r4, r29
/* 8030931C 00304F7C  7C 00 4C 30 */	srw r0, r0, r9
/* 80309320 00304F80  7C C6 4C 30 */	srw r6, r6, r9
/* 80309324 00304F84  7C A5 00 50 */	subf r5, r5, r0
/* 80309328 00304F88  7F 68 32 14 */	add r27, r8, r6
/* 8030932C 00304F8C  3B 85 00 01 */	addi r28, r5, 1
/* 80309330 00304F90  7F 65 DB 78 */	mr r5, r27
/* 80309334 00304F94  7F 86 E3 78 */	mr r6, r28
/* 80309338 00304F98  4B FF CF 09 */	bl VFiPFDRV_lwrite
/* 8030933C 00304F9C  2C 03 00 00 */	cmpwi r3, 0
/* 80309340 00304FA0  41 82 00 08 */	beq lbl_80309348
/* 80309344 00304FA4  48 00 00 60 */	b lbl_803093A4
lbl_80309348:
/* 80309348 00304FA8  80 01 00 08 */	lwz r0, 8(r1)
/* 8030934C 00304FAC  7C 00 E0 40 */	cmplw r0, r28
/* 80309350 00304FB0  41 82 00 0C */	beq lbl_8030935C
/* 80309354 00304FB4  38 60 00 11 */	li r3, 0x11
/* 80309358 00304FB8  48 00 00 4C */	b lbl_803093A4
lbl_8030935C:
/* 8030935C 00304FBC  A0 1F 00 00 */	lhz r0, 0(r31)
/* 80309360 00304FC0  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80309364 00304FC4  41 82 00 24 */	beq lbl_80309388
/* 80309368 00304FC8  7F C3 F3 78 */	mr r3, r30
/* 8030936C 00304FCC  7F A4 EB 78 */	mr r4, r29
/* 80309370 00304FD0  7F 65 DB 78 */	mr r5, r27
/* 80309374 00304FD4  7F 86 E3 78 */	mr r6, r28
/* 80309378 00304FD8  48 00 6B 2D */	bl VFiPFFAT_UpdateAlternateFATEntry
/* 8030937C 00304FDC  2C 03 00 00 */	cmpwi r3, 0
/* 80309380 00304FE0  41 82 00 08 */	beq lbl_80309388
/* 80309384 00304FE4  48 00 00 20 */	b lbl_803093A4
lbl_80309388:
/* 80309388 00304FE8  A0 1F 00 00 */	lhz r0, 0(r31)
/* 8030938C 00304FEC  38 60 00 00 */	li r3, 0
/* 80309390 00304FF0  90 7F 00 0C */	stw r3, 0xc(r31)
/* 80309394 00304FF4  54 00 07 FA */	rlwinm r0, r0, 0, 0x1f, 0x1d
/* 80309398 00304FF8  90 7F 00 10 */	stw r3, 0x10(r31)
/* 8030939C 00304FFC  B0 1F 00 00 */	sth r0, 0(r31)
lbl_803093A0:
/* 803093A0 00305000  38 60 00 00 */	li r3, 0
lbl_803093A4:
/* 803093A4 00305004  39 61 00 30 */	addi r11, r1, 0x30
/* 803093A8 00305008  4B EB DD CD */	bl _restgpr_27
/* 803093AC 0030500C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 803093B0 00305010  7C 08 03 A6 */	mtlr r0
/* 803093B4 00305014  38 21 00 30 */	addi r1, r1, 0x30
/* 803093B8 00305018  4E 80 00 20 */	blr

.global VFiPFCACHE_DoAllocatePage
VFiPFCACHE_DoAllocatePage:
/* 803093BC 0030501C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 803093C0 00305020  7C 08 02 A6 */	mflr r0
/* 803093C4 00305024  90 01 00 34 */	stw r0, 0x34(r1)
/* 803093C8 00305028  39 61 00 30 */	addi r11, r1, 0x30
/* 803093CC 0030502C  4B EB DD 55 */	bl _savegpr_25
/* 803093D0 00305030  7C 9D 23 78 */	mr r29, r4
/* 803093D4 00305034  80 84 00 00 */	lwz r4, 0(r4)
/* 803093D8 00305038  7C 7C 1B 78 */	mr r28, r3
/* 803093DC 0030503C  7C BE 2B 78 */	mr r30, r5
/* 803093E0 00305040  7C DF 33 78 */	mr r31, r6
/* 803093E4 00305044  7C F9 3B 78 */	mr r25, r7
/* 803093E8 00305048  3B 40 00 00 */	li r26, 0
/* 803093EC 0030504C  4B FF FD 6D */	bl VFiPFCACHE_SearchForPage
/* 803093F0 00305050  2C 03 00 00 */	cmpwi r3, 0
/* 803093F4 00305054  90 7F 00 00 */	stw r3, 0(r31)
/* 803093F8 00305058  41 82 00 10 */	beq lbl_80309408
/* 803093FC 0030505C  38 00 00 01 */	li r0, 1
/* 80309400 00305060  90 19 00 00 */	stw r0, 0(r25)
/* 80309404 00305064  48 00 01 B4 */	b lbl_803095B8
lbl_80309408:
/* 80309408 00305068  3B 60 00 00 */	li r27, 0
/* 8030940C 0030506C  7F E4 FB 78 */	mr r4, r31
/* 80309410 00305070  93 79 00 00 */	stw r27, 0(r25)
/* 80309414 00305074  80 7D 00 00 */	lwz r3, 0(r29)
/* 80309418 00305078  4B FF FE 19 */	bl VFiPFCACHE_SearchForFreePage
/* 8030941C 0030507C  2C 03 00 00 */	cmpwi r3, 0
/* 80309420 00305080  40 82 00 94 */	bne lbl_803094B4
/* 80309424 00305084  80 9F 00 00 */	lwz r4, 0(r31)
/* 80309428 00305088  2C 04 00 00 */	cmpwi r4, 0
/* 8030942C 0030508C  40 82 00 10 */	bne lbl_8030943C
/* 80309430 00305090  93 7F 00 00 */	stw r27, 0(r31)
/* 80309434 00305094  38 60 00 1E */	li r3, 0x1e
/* 80309438 00305098  48 00 01 E4 */	b lbl_8030961C
lbl_8030943C:
/* 8030943C 0030509C  41 82 00 24 */	beq lbl_80309460
/* 80309440 003050A0  A0 04 00 00 */	lhz r0, 0(r4)
/* 80309444 003050A4  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80309448 003050A8  41 82 00 18 */	beq lbl_80309460
/* 8030944C 003050AC  80 64 00 18 */	lwz r3, 0x18(r4)
/* 80309450 003050B0  3C 03 00 01 */	addis r0, r3, 1
/* 80309454 003050B4  28 00 FF FF */	cmplwi r0, 0xffff
/* 80309458 003050B8  41 82 00 08 */	beq lbl_80309460
/* 8030945C 003050BC  3B 40 00 01 */	li r26, 1
lbl_80309460:
/* 80309460 003050C0  7F 83 E3 78 */	mr r3, r28
/* 80309464 003050C4  4B FF FE 59 */	bl VFiPFCACHE_FlushPageIfNeeded
/* 80309468 003050C8  2C 03 00 00 */	cmpwi r3, 0
/* 8030946C 003050CC  41 82 00 10 */	beq lbl_8030947C
/* 80309470 003050D0  38 00 00 00 */	li r0, 0
/* 80309474 003050D4  90 1F 00 00 */	stw r0, 0(r31)
/* 80309478 003050D8  48 00 01 A4 */	b lbl_8030961C
lbl_8030947C:
/* 8030947C 003050DC  80 7F 00 00 */	lwz r3, 0(r31)
/* 80309480 003050E0  38 00 00 00 */	li r0, 0
/* 80309484 003050E4  2C 1A 00 00 */	cmpwi r26, 0
/* 80309488 003050E8  90 03 00 0C */	stw r0, 0xc(r3)
/* 8030948C 003050EC  80 7F 00 00 */	lwz r3, 0(r31)
/* 80309490 003050F0  90 03 00 10 */	stw r0, 0x10(r3)
/* 80309494 003050F4  41 82 00 20 */	beq lbl_803094B4
/* 80309498 003050F8  7F 83 E3 78 */	mr r3, r28
/* 8030949C 003050FC  38 80 00 01 */	li r4, 1
/* 803094A0 00305100  48 01 29 01 */	bl dCommon_FlushFromVol
/* 803094A4 00305104  2C 03 00 00 */	cmpwi r3, 0
/* 803094A8 00305108  41 82 00 0C */	beq lbl_803094B4
/* 803094AC 0030510C  38 60 00 11 */	li r3, 0x11
/* 803094B0 00305110  48 00 01 6C */	b lbl_8030961C
lbl_803094B4:
/* 803094B4 00305114  3C 1E 00 01 */	addis r0, r30, 1
/* 803094B8 00305118  28 00 FF FF */	cmplwi r0, 0xffff
/* 803094BC 0030511C  41 82 00 D8 */	beq lbl_80309594
/* 803094C0 00305120  80 9F 00 00 */	lwz r4, 0(r31)
/* 803094C4 00305124  A0 04 00 00 */	lhz r0, 0(r4)
/* 803094C8 00305128  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 803094CC 0030512C  41 82 00 48 */	beq lbl_80309514
/* 803094D0 00305130  80 64 00 14 */	lwz r3, 0x14(r4)
/* 803094D4 00305134  7C 1E 1B 96 */	divwu r0, r30, r3
/* 803094D8 00305138  7C 00 19 D6 */	mullw r0, r0, r3
/* 803094DC 0030513C  7C 00 F0 50 */	subf r0, r0, r30
/* 803094E0 00305140  7C 00 F0 50 */	subf r0, r0, r30
/* 803094E4 00305144  90 04 00 18 */	stw r0, 0x18(r4)
/* 803094E8 00305148  80 DF 00 00 */	lwz r6, 0(r31)
/* 803094EC 0030514C  88 1C 00 20 */	lbz r0, 0x20(r28)
/* 803094F0 00305150  80 86 00 14 */	lwz r4, 0x14(r6)
/* 803094F4 00305154  80 A6 00 04 */	lwz r5, 4(r6)
/* 803094F8 00305158  7C 7E 23 96 */	divwu r3, r30, r4
/* 803094FC 0030515C  7C 63 21 D6 */	mullw r3, r3, r4
/* 80309500 00305160  7C 63 F0 50 */	subf r3, r3, r30
/* 80309504 00305164  7C 60 00 30 */	slw r0, r3, r0
/* 80309508 00305168  7C 05 02 14 */	add r0, r5, r0
/* 8030950C 0030516C  90 06 00 08 */	stw r0, 8(r6)
/* 80309510 00305170  48 00 00 98 */	b lbl_803095A8
lbl_80309514:
/* 80309514 00305174  80 1C 00 1C */	lwz r0, 0x1c(r28)
/* 80309518 00305178  2C 00 00 02 */	cmpwi r0, 2
/* 8030951C 0030517C  40 82 00 30 */	bne lbl_8030954C
/* 80309520 00305180  80 1C 00 30 */	lwz r0, 0x30(r28)
/* 80309524 00305184  7C 1E 00 40 */	cmplw r30, r0
/* 80309528 00305188  41 80 00 10 */	blt lbl_80309538
/* 8030952C 0030518C  80 1C 00 08 */	lwz r0, 8(r28)
/* 80309530 00305190  7C 1E 00 40 */	cmplw r30, r0
/* 80309534 00305194  41 80 00 18 */	blt lbl_8030954C
lbl_80309538:
/* 80309538 00305198  A0 1C 00 14 */	lhz r0, 0x14(r28)
/* 8030953C 0030519C  7C 1E 00 40 */	cmplw r30, r0
/* 80309540 003051A0  40 82 00 0C */	bne lbl_8030954C
/* 80309544 003051A4  38 00 00 01 */	li r0, 1
/* 80309548 003051A8  90 04 00 14 */	stw r0, 0x14(r4)
lbl_8030954C:
/* 8030954C 003051AC  80 9F 00 00 */	lwz r4, 0(r31)
/* 80309550 003051B0  80 64 00 14 */	lwz r3, 0x14(r4)
/* 80309554 003051B4  7C 1E 1B 96 */	divwu r0, r30, r3
/* 80309558 003051B8  7C 00 19 D6 */	mullw r0, r0, r3
/* 8030955C 003051BC  7C 00 F0 50 */	subf r0, r0, r30
/* 80309560 003051C0  7C 00 F0 50 */	subf r0, r0, r30
/* 80309564 003051C4  90 04 00 18 */	stw r0, 0x18(r4)
/* 80309568 003051C8  80 DF 00 00 */	lwz r6, 0(r31)
/* 8030956C 003051CC  88 1C 00 20 */	lbz r0, 0x20(r28)
/* 80309570 003051D0  80 86 00 14 */	lwz r4, 0x14(r6)
/* 80309574 003051D4  80 A6 00 04 */	lwz r5, 4(r6)
/* 80309578 003051D8  7C 7E 23 96 */	divwu r3, r30, r4
/* 8030957C 003051DC  7C 63 21 D6 */	mullw r3, r3, r4
/* 80309580 003051E0  7C 63 F0 50 */	subf r3, r3, r30
/* 80309584 003051E4  7C 60 00 30 */	slw r0, r3, r0
/* 80309588 003051E8  7C 05 02 14 */	add r0, r5, r0
/* 8030958C 003051EC  90 06 00 08 */	stw r0, 8(r6)
/* 80309590 003051F0  48 00 00 18 */	b lbl_803095A8
lbl_80309594:
/* 80309594 003051F4  80 7F 00 00 */	lwz r3, 0(r31)
/* 80309598 003051F8  93 C3 00 18 */	stw r30, 0x18(r3)
/* 8030959C 003051FC  80 7F 00 00 */	lwz r3, 0(r31)
/* 803095A0 00305200  80 03 00 04 */	lwz r0, 4(r3)
/* 803095A4 00305204  90 03 00 08 */	stw r0, 8(r3)
lbl_803095A8:
/* 803095A8 00305208  80 7F 00 00 */	lwz r3, 0(r31)
/* 803095AC 0030520C  A0 03 00 00 */	lhz r0, 0(r3)
/* 803095B0 00305210  60 00 00 01 */	ori r0, r0, 1
/* 803095B4 00305214  B0 03 00 00 */	sth r0, 0(r3)
lbl_803095B8:
/* 803095B8 00305218  80 BF 00 00 */	lwz r5, 0(r31)
/* 803095BC 0030521C  80 7D 00 00 */	lwz r3, 0(r29)
/* 803095C0 00305220  7C 05 18 40 */	cmplw r5, r3
/* 803095C4 00305224  41 82 00 54 */	beq lbl_80309618
/* 803095C8 00305228  80 03 00 24 */	lwz r0, 0x24(r3)
/* 803095CC 0030522C  7C 05 00 40 */	cmplw r5, r0
/* 803095D0 00305230  40 82 00 0C */	bne lbl_803095DC
/* 803095D4 00305234  90 BD 00 00 */	stw r5, 0(r29)
/* 803095D8 00305238  48 00 00 40 */	b lbl_80309618
lbl_803095DC:
/* 803095DC 0030523C  80 05 00 20 */	lwz r0, 0x20(r5)
/* 803095E0 00305240  80 65 00 24 */	lwz r3, 0x24(r5)
/* 803095E4 00305244  90 03 00 20 */	stw r0, 0x20(r3)
/* 803095E8 00305248  80 05 00 24 */	lwz r0, 0x24(r5)
/* 803095EC 0030524C  80 65 00 20 */	lwz r3, 0x20(r5)
/* 803095F0 00305250  90 03 00 24 */	stw r0, 0x24(r3)
/* 803095F4 00305254  80 9D 00 00 */	lwz r4, 0(r29)
/* 803095F8 00305258  90 85 00 20 */	stw r4, 0x20(r5)
/* 803095FC 0030525C  80 7D 00 00 */	lwz r3, 0(r29)
/* 80309600 00305260  80 03 00 24 */	lwz r0, 0x24(r3)
/* 80309604 00305264  90 05 00 24 */	stw r0, 0x24(r5)
/* 80309608 00305268  90 A4 00 24 */	stw r5, 0x24(r4)
/* 8030960C 0030526C  80 65 00 24 */	lwz r3, 0x24(r5)
/* 80309610 00305270  90 A3 00 20 */	stw r5, 0x20(r3)
/* 80309614 00305274  90 BD 00 00 */	stw r5, 0(r29)
lbl_80309618:
/* 80309618 00305278  38 60 00 00 */	li r3, 0
lbl_8030961C:
/* 8030961C 0030527C  39 61 00 30 */	addi r11, r1, 0x30
/* 80309620 00305280  4B EB DB 4D */	bl _restgpr_25
/* 80309624 00305284  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80309628 00305288  7C 08 03 A6 */	mtlr r0
/* 8030962C 0030528C  38 21 00 30 */	addi r1, r1, 0x30
/* 80309630 00305290  4E 80 00 20 */	blr

.global VFiPFCACHE_DoReadPage
VFiPFCACHE_DoReadPage:
/* 80309634 00305294  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80309638 00305298  7C 08 02 A6 */	mflr r0
/* 8030963C 0030529C  90 01 00 24 */	stw r0, 0x24(r1)
/* 80309640 003052A0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80309644 003052A4  7C 9F 23 78 */	mr r31, r4
/* 80309648 003052A8  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8030964C 003052AC  7C FE 3B 78 */	mr r30, r7
/* 80309650 003052B0  38 E1 00 08 */	addi r7, r1, 8
/* 80309654 003052B4  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80309658 003052B8  7C DD 33 78 */	mr r29, r6
/* 8030965C 003052BC  93 81 00 10 */	stw r28, 0x10(r1)
/* 80309660 003052C0  7C 7C 1B 78 */	mr r28, r3
/* 80309664 003052C4  4B FF FD 59 */	bl VFiPFCACHE_DoAllocatePage
/* 80309668 003052C8  2C 03 00 00 */	cmpwi r3, 0
/* 8030966C 003052CC  41 82 00 08 */	beq lbl_80309674
/* 80309670 003052D0  48 00 01 B0 */	b lbl_80309820
lbl_80309674:
/* 80309674 003052D4  80 01 00 08 */	lwz r0, 8(r1)
/* 80309678 003052D8  2C 00 00 00 */	cmpwi r0, 0
/* 8030967C 003052DC  40 82 01 A0 */	bne lbl_8030981C
/* 80309680 003052E0  80 DD 00 00 */	lwz r6, 0(r29)
/* 80309684 003052E4  7F 83 E3 78 */	mr r3, r28
/* 80309688 003052E8  38 E1 00 0C */	addi r7, r1, 0xc
/* 8030968C 003052EC  80 86 00 04 */	lwz r4, 4(r6)
/* 80309690 003052F0  80 A6 00 18 */	lwz r5, 0x18(r6)
/* 80309694 003052F4  80 C6 00 14 */	lwz r6, 0x14(r6)
/* 80309698 003052F8  4B FF CB 25 */	bl VFiPFDRV_lread
/* 8030969C 003052FC  2C 03 00 00 */	cmpwi r3, 0
/* 803096A0 00305300  41 82 00 8C */	beq lbl_8030972C
/* 803096A4 00305304  80 DD 00 00 */	lwz r6, 0(r29)
/* 803096A8 00305308  38 80 00 00 */	li r4, 0
/* 803096AC 0030530C  38 00 FF FF */	li r0, -1
/* 803096B0 00305310  A0 A6 00 00 */	lhz r5, 0(r6)
/* 803096B4 00305314  54 A5 04 3A */	rlwinm r5, r5, 0, 0x10, 0x1d
/* 803096B8 00305318  B0 A6 00 00 */	sth r5, 0(r6)
/* 803096BC 0030531C  90 86 00 0C */	stw r4, 0xc(r6)
/* 803096C0 00305320  90 86 00 10 */	stw r4, 0x10(r6)
/* 803096C4 00305324  90 06 00 18 */	stw r0, 0x18(r6)
/* 803096C8 00305328  90 86 00 1C */	stw r4, 0x1c(r6)
/* 803096CC 0030532C  80 9F 00 00 */	lwz r4, 0(r31)
/* 803096D0 00305330  7C 06 20 40 */	cmplw r6, r4
/* 803096D4 00305334  40 82 00 10 */	bne lbl_803096E4
/* 803096D8 00305338  80 06 00 20 */	lwz r0, 0x20(r6)
/* 803096DC 0030533C  90 1F 00 00 */	stw r0, 0(r31)
/* 803096E0 00305340  48 00 01 40 */	b lbl_80309820
lbl_803096E4:
/* 803096E4 00305344  80 04 00 24 */	lwz r0, 0x24(r4)
/* 803096E8 00305348  7C 06 00 40 */	cmplw r6, r0
/* 803096EC 0030534C  41 82 01 34 */	beq lbl_80309820
/* 803096F0 00305350  80 06 00 20 */	lwz r0, 0x20(r6)
/* 803096F4 00305354  80 86 00 24 */	lwz r4, 0x24(r6)
/* 803096F8 00305358  90 04 00 20 */	stw r0, 0x20(r4)
/* 803096FC 0030535C  80 06 00 24 */	lwz r0, 0x24(r6)
/* 80309700 00305360  80 86 00 20 */	lwz r4, 0x20(r6)
/* 80309704 00305364  90 04 00 24 */	stw r0, 0x24(r4)
/* 80309708 00305368  80 BF 00 00 */	lwz r5, 0(r31)
/* 8030970C 0030536C  90 A6 00 20 */	stw r5, 0x20(r6)
/* 80309710 00305370  80 9F 00 00 */	lwz r4, 0(r31)
/* 80309714 00305374  80 04 00 24 */	lwz r0, 0x24(r4)
/* 80309718 00305378  90 06 00 24 */	stw r0, 0x24(r6)
/* 8030971C 0030537C  90 C5 00 24 */	stw r6, 0x24(r5)
/* 80309720 00305380  80 86 00 24 */	lwz r4, 0x24(r6)
/* 80309724 00305384  90 C4 00 20 */	stw r6, 0x20(r4)
/* 80309728 00305388  48 00 00 F8 */	b lbl_80309820
lbl_8030972C:
/* 8030972C 0030538C  80 BD 00 00 */	lwz r5, 0(r29)
/* 80309730 00305390  80 81 00 0C */	lwz r4, 0xc(r1)
/* 80309734 00305394  80 05 00 14 */	lwz r0, 0x14(r5)
/* 80309738 00305398  7C 04 00 40 */	cmplw r4, r0
/* 8030973C 0030539C  41 82 00 A0 */	beq lbl_803097DC
/* 80309740 003053A0  80 05 00 18 */	lwz r0, 0x18(r5)
/* 80309744 003053A4  80 7C 00 08 */	lwz r3, 8(r28)
/* 80309748 003053A8  7C 00 22 14 */	add r0, r0, r4
/* 8030974C 003053AC  7C 03 00 40 */	cmplw r3, r0
/* 80309750 003053B0  41 82 00 8C */	beq lbl_803097DC
/* 80309754 003053B4  A0 85 00 00 */	lhz r4, 0(r5)
/* 80309758 003053B8  38 60 00 00 */	li r3, 0
/* 8030975C 003053BC  38 00 FF FF */	li r0, -1
/* 80309760 003053C0  54 84 04 3A */	rlwinm r4, r4, 0, 0x10, 0x1d
/* 80309764 003053C4  B0 85 00 00 */	sth r4, 0(r5)
/* 80309768 003053C8  90 65 00 0C */	stw r3, 0xc(r5)
/* 8030976C 003053CC  90 65 00 10 */	stw r3, 0x10(r5)
/* 80309770 003053D0  90 05 00 18 */	stw r0, 0x18(r5)
/* 80309774 003053D4  90 65 00 1C */	stw r3, 0x1c(r5)
/* 80309778 003053D8  80 7F 00 00 */	lwz r3, 0(r31)
/* 8030977C 003053DC  7C 05 18 40 */	cmplw r5, r3
/* 80309780 003053E0  40 82 00 10 */	bne lbl_80309790
/* 80309784 003053E4  80 05 00 20 */	lwz r0, 0x20(r5)
/* 80309788 003053E8  90 1F 00 00 */	stw r0, 0(r31)
/* 8030978C 003053EC  48 00 00 48 */	b lbl_803097D4
lbl_80309790:
/* 80309790 003053F0  80 03 00 24 */	lwz r0, 0x24(r3)
/* 80309794 003053F4  7C 05 00 40 */	cmplw r5, r0
/* 80309798 003053F8  41 82 00 3C */	beq lbl_803097D4
/* 8030979C 003053FC  80 05 00 20 */	lwz r0, 0x20(r5)
/* 803097A0 00305400  80 65 00 24 */	lwz r3, 0x24(r5)
/* 803097A4 00305404  90 03 00 20 */	stw r0, 0x20(r3)
/* 803097A8 00305408  80 05 00 24 */	lwz r0, 0x24(r5)
/* 803097AC 0030540C  80 65 00 20 */	lwz r3, 0x20(r5)
/* 803097B0 00305410  90 03 00 24 */	stw r0, 0x24(r3)
/* 803097B4 00305414  80 9F 00 00 */	lwz r4, 0(r31)
/* 803097B8 00305418  90 85 00 20 */	stw r4, 0x20(r5)
/* 803097BC 0030541C  80 7F 00 00 */	lwz r3, 0(r31)
/* 803097C0 00305420  80 03 00 24 */	lwz r0, 0x24(r3)
/* 803097C4 00305424  90 05 00 24 */	stw r0, 0x24(r5)
/* 803097C8 00305428  90 A4 00 24 */	stw r5, 0x24(r4)
/* 803097CC 0030542C  80 65 00 24 */	lwz r3, 0x24(r5)
/* 803097D0 00305430  90 A3 00 20 */	stw r5, 0x20(r3)
lbl_803097D4:
/* 803097D4 00305434  38 60 00 11 */	li r3, 0x11
/* 803097D8 00305438  48 00 00 48 */	b lbl_80309820
lbl_803097DC:
/* 803097DC 0030543C  A0 65 00 00 */	lhz r3, 0(r5)
/* 803097E0 00305440  38 00 00 00 */	li r0, 0
/* 803097E4 00305444  2C 1E 00 00 */	cmpwi r30, 0
/* 803097E8 00305448  54 63 07 FA */	rlwinm r3, r3, 0, 0x1f, 0x1d
/* 803097EC 0030544C  B0 65 00 00 */	sth r3, 0(r5)
/* 803097F0 00305450  80 7D 00 00 */	lwz r3, 0(r29)
/* 803097F4 00305454  90 03 00 0C */	stw r0, 0xc(r3)
/* 803097F8 00305458  80 7D 00 00 */	lwz r3, 0(r29)
/* 803097FC 0030545C  90 03 00 10 */	stw r0, 0x10(r3)
/* 80309800 00305460  41 82 00 14 */	beq lbl_80309814
/* 80309804 00305464  80 1C 16 08 */	lwz r0, 0x1608(r28)
/* 80309808 00305468  80 7D 00 00 */	lwz r3, 0(r29)
/* 8030980C 0030546C  90 03 00 1C */	stw r0, 0x1c(r3)
/* 80309810 00305470  48 00 00 0C */	b lbl_8030981C
lbl_80309814:
/* 80309814 00305474  80 7D 00 00 */	lwz r3, 0(r29)
/* 80309818 00305478  90 03 00 1C */	stw r0, 0x1c(r3)
lbl_8030981C:
/* 8030981C 0030547C  38 60 00 00 */	li r3, 0
lbl_80309820:
/* 80309820 00305480  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80309824 00305484  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80309828 00305488  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8030982C 0030548C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80309830 00305490  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80309834 00305494  7C 08 03 A6 */	mtlr r0
/* 80309838 00305498  38 21 00 20 */	addi r1, r1, 0x20
/* 8030983C 0030549C  4E 80 00 20 */	blr

.global VFiPFCACHE_DoReadPageAndFlushIfNeeded
VFiPFCACHE_DoReadPageAndFlushIfNeeded:
/* 80309840 003054A0  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80309844 003054A4  7C 08 02 A6 */	mflr r0
/* 80309848 003054A8  90 01 00 34 */	stw r0, 0x34(r1)
/* 8030984C 003054AC  39 61 00 30 */	addi r11, r1, 0x30
/* 80309850 003054B0  4B EB D8 D9 */	bl _savegpr_27
/* 80309854 003054B4  7C FB 3B 78 */	mr r27, r7
/* 80309858 003054B8  7C 7D 1B 78 */	mr r29, r3
/* 8030985C 003054BC  7C 9E 23 78 */	mr r30, r4
/* 80309860 003054C0  7C DF 33 78 */	mr r31, r6
/* 80309864 003054C4  38 E1 00 08 */	addi r7, r1, 8
/* 80309868 003054C8  3B 80 00 01 */	li r28, 1
/* 8030986C 003054CC  4B FF FB 51 */	bl VFiPFCACHE_DoAllocatePage
/* 80309870 003054D0  2C 03 00 00 */	cmpwi r3, 0
/* 80309874 003054D4  41 82 00 08 */	beq lbl_8030987C
/* 80309878 003054D8  48 00 02 4C */	b lbl_80309AC4
lbl_8030987C:
/* 8030987C 003054DC  80 01 00 08 */	lwz r0, 8(r1)
/* 80309880 003054E0  2C 00 00 00 */	cmpwi r0, 0
/* 80309884 003054E4  40 82 01 A4 */	bne lbl_80309A28
/* 80309888 003054E8  80 DF 00 00 */	lwz r6, 0(r31)
/* 8030988C 003054EC  7F A3 EB 78 */	mr r3, r29
/* 80309890 003054F0  38 E1 00 0C */	addi r7, r1, 0xc
/* 80309894 003054F4  80 86 00 04 */	lwz r4, 4(r6)
/* 80309898 003054F8  80 A6 00 18 */	lwz r5, 0x18(r6)
/* 8030989C 003054FC  80 C6 00 14 */	lwz r6, 0x14(r6)
/* 803098A0 00305500  4B FF C9 1D */	bl VFiPFDRV_lread
/* 803098A4 00305504  2C 03 00 00 */	cmpwi r3, 0
/* 803098A8 00305508  41 82 00 8C */	beq lbl_80309934
/* 803098AC 0030550C  80 DF 00 00 */	lwz r6, 0(r31)
/* 803098B0 00305510  38 80 00 00 */	li r4, 0
/* 803098B4 00305514  38 00 FF FF */	li r0, -1
/* 803098B8 00305518  A0 A6 00 00 */	lhz r5, 0(r6)
/* 803098BC 0030551C  54 A5 04 3A */	rlwinm r5, r5, 0, 0x10, 0x1d
/* 803098C0 00305520  B0 A6 00 00 */	sth r5, 0(r6)
/* 803098C4 00305524  90 86 00 0C */	stw r4, 0xc(r6)
/* 803098C8 00305528  90 86 00 10 */	stw r4, 0x10(r6)
/* 803098CC 0030552C  90 06 00 18 */	stw r0, 0x18(r6)
/* 803098D0 00305530  90 86 00 1C */	stw r4, 0x1c(r6)
/* 803098D4 00305534  80 9E 00 00 */	lwz r4, 0(r30)
/* 803098D8 00305538  7C 06 20 40 */	cmplw r6, r4
/* 803098DC 0030553C  40 82 00 10 */	bne lbl_803098EC
/* 803098E0 00305540  80 06 00 20 */	lwz r0, 0x20(r6)
/* 803098E4 00305544  90 1E 00 00 */	stw r0, 0(r30)
/* 803098E8 00305548  48 00 01 DC */	b lbl_80309AC4
lbl_803098EC:
/* 803098EC 0030554C  80 04 00 24 */	lwz r0, 0x24(r4)
/* 803098F0 00305550  7C 06 00 40 */	cmplw r6, r0
/* 803098F4 00305554  41 82 01 D0 */	beq lbl_80309AC4
/* 803098F8 00305558  80 06 00 20 */	lwz r0, 0x20(r6)
/* 803098FC 0030555C  80 86 00 24 */	lwz r4, 0x24(r6)
/* 80309900 00305560  90 04 00 20 */	stw r0, 0x20(r4)
/* 80309904 00305564  80 06 00 24 */	lwz r0, 0x24(r6)
/* 80309908 00305568  80 86 00 20 */	lwz r4, 0x20(r6)
/* 8030990C 0030556C  90 04 00 24 */	stw r0, 0x24(r4)
/* 80309910 00305570  80 BE 00 00 */	lwz r5, 0(r30)
/* 80309914 00305574  90 A6 00 20 */	stw r5, 0x20(r6)
/* 80309918 00305578  80 9E 00 00 */	lwz r4, 0(r30)
/* 8030991C 0030557C  80 04 00 24 */	lwz r0, 0x24(r4)
/* 80309920 00305580  90 06 00 24 */	stw r0, 0x24(r6)
/* 80309924 00305584  90 C5 00 24 */	stw r6, 0x24(r5)
/* 80309928 00305588  80 86 00 24 */	lwz r4, 0x24(r6)
/* 8030992C 0030558C  90 C4 00 20 */	stw r6, 0x20(r4)
/* 80309930 00305590  48 00 01 94 */	b lbl_80309AC4
lbl_80309934:
/* 80309934 00305594  80 BF 00 00 */	lwz r5, 0(r31)
/* 80309938 00305598  80 81 00 0C */	lwz r4, 0xc(r1)
/* 8030993C 0030559C  80 05 00 14 */	lwz r0, 0x14(r5)
/* 80309940 003055A0  7C 04 00 40 */	cmplw r4, r0
/* 80309944 003055A4  41 82 00 A0 */	beq lbl_803099E4
/* 80309948 003055A8  80 05 00 18 */	lwz r0, 0x18(r5)
/* 8030994C 003055AC  80 7D 00 08 */	lwz r3, 8(r29)
/* 80309950 003055B0  7C 00 22 14 */	add r0, r0, r4
/* 80309954 003055B4  7C 03 00 40 */	cmplw r3, r0
/* 80309958 003055B8  41 82 00 8C */	beq lbl_803099E4
/* 8030995C 003055BC  A0 85 00 00 */	lhz r4, 0(r5)
/* 80309960 003055C0  38 60 00 00 */	li r3, 0
/* 80309964 003055C4  38 00 FF FF */	li r0, -1
/* 80309968 003055C8  54 84 04 3A */	rlwinm r4, r4, 0, 0x10, 0x1d
/* 8030996C 003055CC  B0 85 00 00 */	sth r4, 0(r5)
/* 80309970 003055D0  90 65 00 0C */	stw r3, 0xc(r5)
/* 80309974 003055D4  90 65 00 10 */	stw r3, 0x10(r5)
/* 80309978 003055D8  90 05 00 18 */	stw r0, 0x18(r5)
/* 8030997C 003055DC  90 65 00 1C */	stw r3, 0x1c(r5)
/* 80309980 003055E0  80 7E 00 00 */	lwz r3, 0(r30)
/* 80309984 003055E4  7C 05 18 40 */	cmplw r5, r3
/* 80309988 003055E8  40 82 00 10 */	bne lbl_80309998
/* 8030998C 003055EC  80 05 00 20 */	lwz r0, 0x20(r5)
/* 80309990 003055F0  90 1E 00 00 */	stw r0, 0(r30)
/* 80309994 003055F4  48 00 00 48 */	b lbl_803099DC
lbl_80309998:
/* 80309998 003055F8  80 03 00 24 */	lwz r0, 0x24(r3)
/* 8030999C 003055FC  7C 05 00 40 */	cmplw r5, r0
/* 803099A0 00305600  41 82 00 3C */	beq lbl_803099DC
/* 803099A4 00305604  80 05 00 20 */	lwz r0, 0x20(r5)
/* 803099A8 00305608  80 65 00 24 */	lwz r3, 0x24(r5)
/* 803099AC 0030560C  90 03 00 20 */	stw r0, 0x20(r3)
/* 803099B0 00305610  80 05 00 24 */	lwz r0, 0x24(r5)
/* 803099B4 00305614  80 65 00 20 */	lwz r3, 0x20(r5)
/* 803099B8 00305618  90 03 00 24 */	stw r0, 0x24(r3)
/* 803099BC 0030561C  80 9E 00 00 */	lwz r4, 0(r30)
/* 803099C0 00305620  90 85 00 20 */	stw r4, 0x20(r5)
/* 803099C4 00305624  80 7E 00 00 */	lwz r3, 0(r30)
/* 803099C8 00305628  80 03 00 24 */	lwz r0, 0x24(r3)
/* 803099CC 0030562C  90 05 00 24 */	stw r0, 0x24(r5)
/* 803099D0 00305630  90 A4 00 24 */	stw r5, 0x24(r4)
/* 803099D4 00305634  80 65 00 24 */	lwz r3, 0x24(r5)
/* 803099D8 00305638  90 A3 00 20 */	stw r5, 0x20(r3)
lbl_803099DC:
/* 803099DC 0030563C  38 60 00 11 */	li r3, 0x11
/* 803099E0 00305640  48 00 00 E4 */	b lbl_80309AC4
lbl_803099E4:
/* 803099E4 00305644  A0 65 00 00 */	lhz r3, 0(r5)
/* 803099E8 00305648  38 00 00 00 */	li r0, 0
/* 803099EC 0030564C  2C 1B 00 00 */	cmpwi r27, 0
/* 803099F0 00305650  54 63 07 FA */	rlwinm r3, r3, 0, 0x1f, 0x1d
/* 803099F4 00305654  B0 65 00 00 */	sth r3, 0(r5)
/* 803099F8 00305658  80 7F 00 00 */	lwz r3, 0(r31)
/* 803099FC 0030565C  90 03 00 0C */	stw r0, 0xc(r3)
/* 80309A00 00305660  80 7F 00 00 */	lwz r3, 0(r31)
/* 80309A04 00305664  90 03 00 10 */	stw r0, 0x10(r3)
/* 80309A08 00305668  41 82 00 14 */	beq lbl_80309A1C
/* 80309A0C 0030566C  80 1D 16 08 */	lwz r0, 0x1608(r29)
/* 80309A10 00305670  80 7F 00 00 */	lwz r3, 0(r31)
/* 80309A14 00305674  90 03 00 1C */	stw r0, 0x1c(r3)
/* 80309A18 00305678  48 00 00 A8 */	b lbl_80309AC0
lbl_80309A1C:
/* 80309A1C 0030567C  80 7F 00 00 */	lwz r3, 0(r31)
/* 80309A20 00305680  90 03 00 1C */	stw r0, 0x1c(r3)
/* 80309A24 00305684  48 00 00 9C */	b lbl_80309AC0
lbl_80309A28:
/* 80309A28 00305688  2C 1B 00 00 */	cmpwi r27, 0
/* 80309A2C 0030568C  41 82 00 94 */	beq lbl_80309AC0
/* 80309A30 00305690  80 9F 00 00 */	lwz r4, 0(r31)
/* 80309A34 00305694  A0 04 00 00 */	lhz r0, 0(r4)
/* 80309A38 00305698  54 00 07 BC */	rlwinm r0, r0, 0, 0x1e, 0x1e
/* 80309A3C 0030569C  2C 80 00 00 */	cmpwi cr1, r0, 0
/* 80309A40 003056A0  41 86 00 80 */	beq cr1, lbl_80309AC0
/* 80309A44 003056A4  80 1D 15 E8 */	lwz r0, 0x15e8(r29)
/* 80309A48 003056A8  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80309A4C 003056AC  41 82 00 74 */	beq lbl_80309AC0
/* 80309A50 003056B0  80 64 00 1C */	lwz r3, 0x1c(r4)
/* 80309A54 003056B4  80 1D 16 08 */	lwz r0, 0x1608(r29)
/* 80309A58 003056B8  7C 03 00 40 */	cmplw r3, r0
/* 80309A5C 003056BC  41 82 00 64 */	beq lbl_80309AC0
/* 80309A60 003056C0  2C 04 00 00 */	cmpwi r4, 0
/* 80309A64 003056C4  41 82 00 1C */	beq lbl_80309A80
/* 80309A68 003056C8  41 86 00 18 */	beq cr1, lbl_80309A80
/* 80309A6C 003056CC  80 64 00 18 */	lwz r3, 0x18(r4)
/* 80309A70 003056D0  3C 03 00 01 */	addis r0, r3, 1
/* 80309A74 003056D4  28 00 FF FF */	cmplwi r0, 0xffff
/* 80309A78 003056D8  41 82 00 08 */	beq lbl_80309A80
/* 80309A7C 003056DC  3B 80 00 01 */	li r28, 1
lbl_80309A80:
/* 80309A80 003056E0  7F A3 EB 78 */	mr r3, r29
/* 80309A84 003056E4  4B FF F8 39 */	bl VFiPFCACHE_FlushPageIfNeeded
/* 80309A88 003056E8  2C 03 00 00 */	cmpwi r3, 0
/* 80309A8C 003056EC  41 82 00 10 */	beq lbl_80309A9C
/* 80309A90 003056F0  38 00 00 00 */	li r0, 0
/* 80309A94 003056F4  90 1F 00 00 */	stw r0, 0(r31)
/* 80309A98 003056F8  48 00 00 2C */	b lbl_80309AC4
lbl_80309A9C:
/* 80309A9C 003056FC  2C 1C 00 00 */	cmpwi r28, 0
/* 80309AA0 00305700  41 82 00 20 */	beq lbl_80309AC0
/* 80309AA4 00305704  7F A3 EB 78 */	mr r3, r29
/* 80309AA8 00305708  38 80 00 01 */	li r4, 1
/* 80309AAC 0030570C  48 01 22 F5 */	bl dCommon_FlushFromVol
/* 80309AB0 00305710  2C 03 00 00 */	cmpwi r3, 0
/* 80309AB4 00305714  41 82 00 0C */	beq lbl_80309AC0
/* 80309AB8 00305718  38 60 00 11 */	li r3, 0x11
/* 80309ABC 0030571C  48 00 00 08 */	b lbl_80309AC4
lbl_80309AC0:
/* 80309AC0 00305720  38 60 00 00 */	li r3, 0
lbl_80309AC4:
/* 80309AC4 00305724  39 61 00 30 */	addi r11, r1, 0x30
/* 80309AC8 00305728  4B EB D6 AD */	bl _restgpr_27
/* 80309ACC 0030572C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 80309AD0 00305730  7C 08 03 A6 */	mtlr r0
/* 80309AD4 00305734  38 21 00 30 */	addi r1, r1, 0x30
/* 80309AD8 00305738  4E 80 00 20 */	blr

.global VFiPFCACHE_DoReadNumSector
VFiPFCACHE_DoReadNumSector:
/* 80309ADC 0030573C  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 80309AE0 00305740  7C 08 02 A6 */	mflr r0
/* 80309AE4 00305744  90 01 00 44 */	stw r0, 0x44(r1)
/* 80309AE8 00305748  39 61 00 40 */	addi r11, r1, 0x40
/* 80309AEC 0030574C  4B EB D6 25 */	bl _savegpr_21
/* 80309AF0 00305750  38 00 00 00 */	li r0, 0
/* 80309AF4 00305754  7C B8 2B 78 */	mr r24, r5
/* 80309AF8 00305758  7C D9 33 78 */	mr r25, r6
/* 80309AFC 0030575C  7C FA 3B 78 */	mr r26, r7
/* 80309B00 00305760  7D 1B 43 78 */	mr r27, r8
/* 80309B04 00305764  7C 97 23 78 */	mr r23, r4
/* 80309B08 00305768  90 08 00 00 */	stw r0, 0(r8)
/* 80309B0C 0030576C  7C 76 1B 78 */	mr r22, r3
/* 80309B10 00305770  7F 04 C3 78 */	mr r4, r24
/* 80309B14 00305774  7F 25 CB 78 */	mr r5, r25
/* 80309B18 00305778  7F 46 D3 78 */	mr r6, r26
/* 80309B1C 0030577C  7F 67 DB 78 */	mr r7, r27
/* 80309B20 00305780  4B FF C6 9D */	bl VFiPFDRV_lread
/* 80309B24 00305784  2C 03 00 00 */	cmpwi r3, 0
/* 80309B28 00305788  41 82 00 08 */	beq lbl_80309B30
/* 80309B2C 0030578C  48 00 01 EC */	b lbl_80309D18
lbl_80309B30:
/* 80309B30 00305790  83 FB 00 00 */	lwz r31, 0(r27)
/* 80309B34 00305794  3B A0 00 00 */	li r29, 0
/* 80309B38 00305798  7F FC FB 78 */	mr r28, r31
/* 80309B3C 0030579C  7F D9 FA 14 */	add r30, r25, r31
lbl_80309B40:
/* 80309B40 003057A0  2C 1D 00 00 */	cmpwi r29, 0
/* 80309B44 003057A4  40 82 00 0C */	bne lbl_80309B50
/* 80309B48 003057A8  83 B7 00 00 */	lwz r29, 0(r23)
/* 80309B4C 003057AC  48 00 00 40 */	b lbl_80309B8C
lbl_80309B50:
/* 80309B50 003057B0  83 BD 00 20 */	lwz r29, 0x20(r29)
/* 80309B54 003057B4  80 17 00 00 */	lwz r0, 0(r23)
/* 80309B58 003057B8  7C 1D 00 40 */	cmplw r29, r0
/* 80309B5C 003057BC  40 82 00 30 */	bne lbl_80309B8C
/* 80309B60 003057C0  3B A0 00 00 */	li r29, 0
/* 80309B64 003057C4  48 00 00 38 */	b lbl_80309B9C
/* 80309B68 003057C8  48 00 00 24 */	b lbl_80309B8C
lbl_80309B6C:
/* 80309B6C 003057CC  80 7D 00 18 */	lwz r3, 0x18(r29)
/* 80309B70 003057D0  3C 03 00 01 */	addis r0, r3, 1
/* 80309B74 003057D4  28 00 FF FF */	cmplwi r0, 0xffff
/* 80309B78 003057D8  41 82 00 10 */	beq lbl_80309B88
/* 80309B7C 003057DC  80 1D 00 04 */	lwz r0, 4(r29)
/* 80309B80 003057E0  90 1D 00 08 */	stw r0, 8(r29)
/* 80309B84 003057E4  48 00 00 18 */	b lbl_80309B9C
lbl_80309B88:
/* 80309B88 003057E8  83 BD 00 20 */	lwz r29, 0x20(r29)
lbl_80309B8C:
/* 80309B8C 003057EC  A0 1D 00 00 */	lhz r0, 0(r29)
/* 80309B90 003057F0  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 80309B94 003057F4  40 82 FF D8 */	bne lbl_80309B6C
/* 80309B98 003057F8  3B A0 00 00 */	li r29, 0
lbl_80309B9C:
/* 80309B9C 003057FC  2C 1D 00 00 */	cmpwi r29, 0
/* 80309BA0 00305800  41 82 01 40 */	beq lbl_80309CE0
/* 80309BA4 00305804  80 FD 00 18 */	lwz r7, 0x18(r29)
/* 80309BA8 00305808  3C 07 00 01 */	addis r0, r7, 1
/* 80309BAC 0030580C  28 00 FF FF */	cmplwi r0, 0xffff
/* 80309BB0 00305810  41 82 01 30 */	beq lbl_80309CE0
/* 80309BB4 00305814  7C 07 C8 40 */	cmplw r7, r25
/* 80309BB8 00305818  41 81 00 3C */	bgt lbl_80309BF4
/* 80309BBC 0030581C  80 1D 00 14 */	lwz r0, 0x14(r29)
/* 80309BC0 00305820  7C 07 02 14 */	add r0, r7, r0
/* 80309BC4 00305824  7C 00 F0 40 */	cmplw r0, r30
/* 80309BC8 00305828  41 80 00 2C */	blt lbl_80309BF4
/* 80309BCC 0030582C  88 B6 00 20 */	lbz r5, 0x20(r22)
/* 80309BD0 00305830  7C 07 C8 50 */	subf r0, r7, r25
/* 80309BD4 00305834  80 9D 00 04 */	lwz r4, 4(r29)
/* 80309BD8 00305838  7F 03 C3 78 */	mr r3, r24
/* 80309BDC 0030583C  7C 00 28 30 */	slw r0, r0, r5
/* 80309BE0 00305840  7F E5 28 30 */	slw r5, r31, r5
/* 80309BE4 00305844  7C 84 02 14 */	add r4, r4, r0
/* 80309BE8 00305848  4B FF B2 C5 */	bl VFipf_memcpy
/* 80309BEC 0030584C  7F 9F E0 50 */	subf r28, r31, r28
/* 80309BF0 00305850  48 00 00 F0 */	b lbl_80309CE0
lbl_80309BF4:
/* 80309BF4 00305854  7C 07 C8 40 */	cmplw r7, r25
/* 80309BF8 00305858  41 80 00 3C */	blt lbl_80309C34
/* 80309BFC 0030585C  80 7D 00 14 */	lwz r3, 0x14(r29)
/* 80309C00 00305860  7C 07 1A 14 */	add r0, r7, r3
/* 80309C04 00305864  7C 00 F0 40 */	cmplw r0, r30
/* 80309C08 00305868  41 81 00 2C */	bgt lbl_80309C34
/* 80309C0C 0030586C  88 B6 00 20 */	lbz r5, 0x20(r22)
/* 80309C10 00305870  7C 19 38 50 */	subf r0, r25, r7
/* 80309C14 00305874  80 9D 00 04 */	lwz r4, 4(r29)
/* 80309C18 00305878  7C 00 28 30 */	slw r0, r0, r5
/* 80309C1C 0030587C  7C 65 28 30 */	slw r5, r3, r5
/* 80309C20 00305880  7C 78 02 14 */	add r3, r24, r0
/* 80309C24 00305884  4B FF B2 89 */	bl VFipf_memcpy
/* 80309C28 00305888  80 1D 00 14 */	lwz r0, 0x14(r29)
/* 80309C2C 0030588C  7F 80 E0 50 */	subf r28, r0, r28
/* 80309C30 00305890  48 00 00 B0 */	b lbl_80309CE0
lbl_80309C34:
/* 80309C34 00305894  7C 07 C8 40 */	cmplw r7, r25
/* 80309C38 00305898  40 81 00 50 */	ble lbl_80309C88
/* 80309C3C 0030589C  7C 07 F0 40 */	cmplw r7, r30
/* 80309C40 003058A0  40 80 00 48 */	bge lbl_80309C88
/* 80309C44 003058A4  80 1D 00 14 */	lwz r0, 0x14(r29)
/* 80309C48 003058A8  7C 07 02 14 */	add r0, r7, r0
/* 80309C4C 003058AC  7C 00 F0 40 */	cmplw r0, r30
/* 80309C50 003058B0  41 80 00 38 */	blt lbl_80309C88
/* 80309C54 003058B4  88 B6 00 20 */	lbz r5, 0x20(r22)
/* 80309C58 003058B8  7C 19 38 50 */	subf r0, r25, r7
/* 80309C5C 003058BC  7E BF CA 14 */	add r21, r31, r25
/* 80309C60 003058C0  80 9D 00 04 */	lwz r4, 4(r29)
/* 80309C64 003058C4  7C 03 28 30 */	slw r3, r0, r5
/* 80309C68 003058C8  7C 07 A8 50 */	subf r0, r7, r21
/* 80309C6C 003058CC  7C 78 1A 14 */	add r3, r24, r3
/* 80309C70 003058D0  7C 05 28 30 */	slw r5, r0, r5
/* 80309C74 003058D4  4B FF B2 39 */	bl VFipf_memcpy
/* 80309C78 003058D8  80 1D 00 18 */	lwz r0, 0x18(r29)
/* 80309C7C 003058DC  7C 00 A8 50 */	subf r0, r0, r21
/* 80309C80 003058E0  7F 80 E0 50 */	subf r28, r0, r28
/* 80309C84 003058E4  48 00 00 5C */	b lbl_80309CE0
lbl_80309C88:
/* 80309C88 003058E8  7C 07 C8 40 */	cmplw r7, r25
/* 80309C8C 003058EC  40 80 00 54 */	bge lbl_80309CE0
/* 80309C90 003058F0  80 1D 00 14 */	lwz r0, 0x14(r29)
/* 80309C94 003058F4  7C 67 02 14 */	add r3, r7, r0
/* 80309C98 003058F8  7C 03 C8 40 */	cmplw r3, r25
/* 80309C9C 003058FC  40 81 00 44 */	ble lbl_80309CE0
/* 80309CA0 00305900  7C 03 F0 40 */	cmplw r3, r30
/* 80309CA4 00305904  41 81 00 3C */	bgt lbl_80309CE0
/* 80309CA8 00305908  88 D6 00 20 */	lbz r6, 0x20(r22)
/* 80309CAC 0030590C  7C 67 C8 50 */	subf r3, r7, r25
/* 80309CB0 00305910  80 BD 00 04 */	lwz r5, 4(r29)
/* 80309CB4 00305914  7C 03 00 50 */	subf r0, r3, r0
/* 80309CB8 00305918  7C 64 30 30 */	slw r4, r3, r6
/* 80309CBC 0030591C  7F 03 C3 78 */	mr r3, r24
/* 80309CC0 00305920  7C 85 22 14 */	add r4, r5, r4
/* 80309CC4 00305924  7C 05 30 30 */	slw r5, r0, r6
/* 80309CC8 00305928  4B FF B1 E5 */	bl VFipf_memcpy
/* 80309CCC 0030592C  80 7D 00 18 */	lwz r3, 0x18(r29)
/* 80309CD0 00305930  80 1D 00 14 */	lwz r0, 0x14(r29)
/* 80309CD4 00305934  7C 63 C8 50 */	subf r3, r3, r25
/* 80309CD8 00305938  7C 03 00 50 */	subf r0, r3, r0
/* 80309CDC 0030593C  7F 80 E0 50 */	subf r28, r0, r28
lbl_80309CE0:
/* 80309CE0 00305940  2C 1D 00 00 */	cmpwi r29, 0
/* 80309CE4 00305944  41 82 00 0C */	beq lbl_80309CF0
/* 80309CE8 00305948  2C 1C 00 00 */	cmpwi r28, 0
/* 80309CEC 0030594C  40 82 FE 54 */	bne lbl_80309B40
lbl_80309CF0:
/* 80309CF0 00305950  80 1B 00 00 */	lwz r0, 0(r27)
/* 80309CF4 00305954  7C 00 D0 40 */	cmplw r0, r26
/* 80309CF8 00305958  41 82 00 1C */	beq lbl_80309D14
/* 80309CFC 0030595C  80 76 00 08 */	lwz r3, 8(r22)
/* 80309D00 00305960  7C 19 02 14 */	add r0, r25, r0
/* 80309D04 00305964  7C 03 00 40 */	cmplw r3, r0
/* 80309D08 00305968  41 82 00 0C */	beq lbl_80309D14
/* 80309D0C 0030596C  38 60 00 11 */	li r3, 0x11
/* 80309D10 00305970  48 00 00 08 */	b lbl_80309D18
lbl_80309D14:
/* 80309D14 00305974  38 60 00 00 */	li r3, 0
lbl_80309D18:
/* 80309D18 00305978  39 61 00 40 */	addi r11, r1, 0x40
/* 80309D1C 0030597C  4B EB D4 41 */	bl _restgpr_21
/* 80309D20 00305980  80 01 00 44 */	lwz r0, 0x44(r1)
/* 80309D24 00305984  7C 08 03 A6 */	mtlr r0
/* 80309D28 00305988  38 21 00 40 */	addi r1, r1, 0x40
/* 80309D2C 0030598C  4E 80 00 20 */	blr

.global VFiPFCACHE_DoWritePage
VFiPFCACHE_DoWritePage:
/* 80309D30 00305990  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80309D34 00305994  7C 08 02 A6 */	mflr r0
/* 80309D38 00305998  90 01 00 14 */	stw r0, 0x14(r1)
/* 80309D3C 0030599C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80309D40 003059A0  3B E0 00 00 */	li r31, 0
/* 80309D44 003059A4  93 C1 00 08 */	stw r30, 8(r1)
/* 80309D48 003059A8  7C 7E 1B 78 */	mr r30, r3
/* 80309D4C 003059AC  80 E4 00 00 */	lwz r7, 0(r4)
/* 80309D50 003059B0  7C 05 38 40 */	cmplw r5, r7
/* 80309D54 003059B4  41 82 00 54 */	beq lbl_80309DA8
/* 80309D58 003059B8  80 07 00 24 */	lwz r0, 0x24(r7)
/* 80309D5C 003059BC  7C 05 00 40 */	cmplw r5, r0
/* 80309D60 003059C0  40 82 00 0C */	bne lbl_80309D6C
/* 80309D64 003059C4  90 A4 00 00 */	stw r5, 0(r4)
/* 80309D68 003059C8  48 00 00 40 */	b lbl_80309DA8
lbl_80309D6C:
/* 80309D6C 003059CC  80 05 00 20 */	lwz r0, 0x20(r5)
/* 80309D70 003059D0  80 E5 00 24 */	lwz r7, 0x24(r5)
/* 80309D74 003059D4  90 07 00 20 */	stw r0, 0x20(r7)
/* 80309D78 003059D8  80 05 00 24 */	lwz r0, 0x24(r5)
/* 80309D7C 003059DC  80 E5 00 20 */	lwz r7, 0x20(r5)
/* 80309D80 003059E0  90 07 00 24 */	stw r0, 0x24(r7)
/* 80309D84 003059E4  81 04 00 00 */	lwz r8, 0(r4)
/* 80309D88 003059E8  91 05 00 20 */	stw r8, 0x20(r5)
/* 80309D8C 003059EC  80 E4 00 00 */	lwz r7, 0(r4)
/* 80309D90 003059F0  80 07 00 24 */	lwz r0, 0x24(r7)
/* 80309D94 003059F4  90 05 00 24 */	stw r0, 0x24(r5)
/* 80309D98 003059F8  90 A8 00 24 */	stw r5, 0x24(r8)
/* 80309D9C 003059FC  80 E5 00 24 */	lwz r7, 0x24(r5)
/* 80309DA0 00305A00  90 A7 00 20 */	stw r5, 0x20(r7)
/* 80309DA4 00305A04  90 A4 00 00 */	stw r5, 0(r4)
lbl_80309DA8:
/* 80309DA8 00305A08  80 05 00 0C */	lwz r0, 0xc(r5)
/* 80309DAC 00305A0C  2C 00 00 00 */	cmpwi r0, 0
/* 80309DB0 00305A10  40 82 00 20 */	bne lbl_80309DD0
/* 80309DB4 00305A14  A0 85 00 00 */	lhz r4, 0(r5)
/* 80309DB8 00305A18  80 05 00 08 */	lwz r0, 8(r5)
/* 80309DBC 00305A1C  60 84 00 02 */	ori r4, r4, 2
/* 80309DC0 00305A20  B0 85 00 00 */	sth r4, 0(r5)
/* 80309DC4 00305A24  90 05 00 0C */	stw r0, 0xc(r5)
/* 80309DC8 00305A28  90 05 00 10 */	stw r0, 0x10(r5)
/* 80309DCC 00305A2C  48 00 00 28 */	b lbl_80309DF4
lbl_80309DD0:
/* 80309DD0 00305A30  80 85 00 08 */	lwz r4, 8(r5)
/* 80309DD4 00305A34  7C 04 00 40 */	cmplw r4, r0
/* 80309DD8 00305A38  40 80 00 0C */	bge lbl_80309DE4
/* 80309DDC 00305A3C  90 85 00 0C */	stw r4, 0xc(r5)
/* 80309DE0 00305A40  48 00 00 14 */	b lbl_80309DF4
lbl_80309DE4:
/* 80309DE4 00305A44  80 05 00 10 */	lwz r0, 0x10(r5)
/* 80309DE8 00305A48  7C 04 00 40 */	cmplw r4, r0
/* 80309DEC 00305A4C  40 81 00 08 */	ble lbl_80309DF4
/* 80309DF0 00305A50  90 85 00 10 */	stw r4, 0x10(r5)
lbl_80309DF4:
/* 80309DF4 00305A54  2C 06 00 00 */	cmpwi r6, 0
/* 80309DF8 00305A58  41 82 00 10 */	beq lbl_80309E08
/* 80309DFC 00305A5C  80 03 16 08 */	lwz r0, 0x1608(r3)
/* 80309E00 00305A60  90 05 00 1C */	stw r0, 0x1c(r5)
/* 80309E04 00305A64  48 00 00 0C */	b lbl_80309E10
lbl_80309E08:
/* 80309E08 00305A68  38 00 00 00 */	li r0, 0
/* 80309E0C 00305A6C  90 05 00 1C */	stw r0, 0x1c(r5)
lbl_80309E10:
/* 80309E10 00305A70  80 63 15 E8 */	lwz r3, 0x15e8(r3)
/* 80309E14 00305A74  54 60 07 FF */	clrlwi. r0, r3, 0x1f
/* 80309E18 00305A78  40 82 00 18 */	bne lbl_80309E30
/* 80309E1C 00305A7C  54 60 07 7B */	rlwinm. r0, r3, 0, 0x1d, 0x1d
/* 80309E20 00305A80  41 82 00 74 */	beq lbl_80309E94
/* 80309E24 00305A84  A0 05 00 00 */	lhz r0, 0(r5)
/* 80309E28 00305A88  54 00 07 7B */	rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 80309E2C 00305A8C  41 82 00 68 */	beq lbl_80309E94
lbl_80309E30:
/* 80309E30 00305A90  2C 05 00 00 */	cmpwi r5, 0
/* 80309E34 00305A94  41 82 00 24 */	beq lbl_80309E58
/* 80309E38 00305A98  A0 05 00 00 */	lhz r0, 0(r5)
/* 80309E3C 00305A9C  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80309E40 00305AA0  41 82 00 18 */	beq lbl_80309E58
/* 80309E44 00305AA4  80 65 00 18 */	lwz r3, 0x18(r5)
/* 80309E48 00305AA8  3C 03 00 01 */	addis r0, r3, 1
/* 80309E4C 00305AAC  28 00 FF FF */	cmplwi r0, 0xffff
/* 80309E50 00305AB0  41 82 00 08 */	beq lbl_80309E58
/* 80309E54 00305AB4  3B E0 00 01 */	li r31, 1
lbl_80309E58:
/* 80309E58 00305AB8  7F C3 F3 78 */	mr r3, r30
/* 80309E5C 00305ABC  7C A4 2B 78 */	mr r4, r5
/* 80309E60 00305AC0  4B FF F4 5D */	bl VFiPFCACHE_FlushPageIfNeeded
/* 80309E64 00305AC4  2C 03 00 00 */	cmpwi r3, 0
/* 80309E68 00305AC8  41 82 00 08 */	beq lbl_80309E70
/* 80309E6C 00305ACC  48 00 00 2C */	b lbl_80309E98
lbl_80309E70:
/* 80309E70 00305AD0  2C 1F 00 00 */	cmpwi r31, 0
/* 80309E74 00305AD4  41 82 00 20 */	beq lbl_80309E94
/* 80309E78 00305AD8  7F C3 F3 78 */	mr r3, r30
/* 80309E7C 00305ADC  38 80 00 01 */	li r4, 1
/* 80309E80 00305AE0  48 01 1F 21 */	bl dCommon_FlushFromVol
/* 80309E84 00305AE4  2C 03 00 00 */	cmpwi r3, 0
/* 80309E88 00305AE8  41 82 00 0C */	beq lbl_80309E94
/* 80309E8C 00305AEC  38 60 00 11 */	li r3, 0x11
/* 80309E90 00305AF0  48 00 00 08 */	b lbl_80309E98
lbl_80309E94:
/* 80309E94 00305AF4  38 60 00 00 */	li r3, 0
lbl_80309E98:
/* 80309E98 00305AF8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80309E9C 00305AFC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80309EA0 00305B00  83 C1 00 08 */	lwz r30, 8(r1)
/* 80309EA4 00305B04  7C 08 03 A6 */	mtlr r0
/* 80309EA8 00305B08  38 21 00 10 */	addi r1, r1, 0x10
/* 80309EAC 00305B0C  4E 80 00 20 */	blr

.global VFiPFCACHE_DoWriteSector
VFiPFCACHE_DoWriteSector:
/* 80309EB0 00305B10  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 80309EB4 00305B14  7C 08 02 A6 */	mflr r0
/* 80309EB8 00305B18  90 01 00 34 */	stw r0, 0x34(r1)
/* 80309EBC 00305B1C  39 61 00 30 */	addi r11, r1, 0x30
/* 80309EC0 00305B20  4B EB D2 69 */	bl _savegpr_27
/* 80309EC4 00305B24  7C DD 33 78 */	mr r29, r6
/* 80309EC8 00305B28  80 84 00 00 */	lwz r4, 0(r4)
/* 80309ECC 00305B2C  7C BC 2B 78 */	mr r28, r5
/* 80309ED0 00305B30  7C 7B 1B 78 */	mr r27, r3
/* 80309ED4 00305B34  7F A5 EB 78 */	mr r5, r29
/* 80309ED8 00305B38  3B C0 00 00 */	li r30, 0
/* 80309EDC 00305B3C  4B FF F2 7D */	bl VFiPFCACHE_SearchForPage
/* 80309EE0 00305B40  2C 03 00 00 */	cmpwi r3, 0
/* 80309EE4 00305B44  7C 7F 1B 78 */	mr r31, r3
/* 80309EE8 00305B48  41 82 00 C8 */	beq lbl_80309FB0
/* 80309EEC 00305B4C  80 63 00 08 */	lwz r3, 8(r3)
/* 80309EF0 00305B50  7F 84 E3 78 */	mr r4, r28
/* 80309EF4 00305B54  A0 BB 00 00 */	lhz r5, 0(r27)
/* 80309EF8 00305B58  4B FF AF B5 */	bl VFipf_memcpy
/* 80309EFC 00305B5C  80 1F 00 0C */	lwz r0, 0xc(r31)
/* 80309F00 00305B60  2C 00 00 00 */	cmpwi r0, 0
/* 80309F04 00305B64  40 82 00 24 */	bne lbl_80309F28
/* 80309F08 00305B68  A0 1F 00 00 */	lhz r0, 0(r31)
/* 80309F0C 00305B6C  60 00 00 02 */	ori r0, r0, 2
/* 80309F10 00305B70  B0 1F 00 00 */	sth r0, 0(r31)
/* 80309F14 00305B74  80 1F 00 08 */	lwz r0, 8(r31)
/* 80309F18 00305B78  90 1F 00 0C */	stw r0, 0xc(r31)
/* 80309F1C 00305B7C  80 1F 00 08 */	lwz r0, 8(r31)
/* 80309F20 00305B80  90 1F 00 10 */	stw r0, 0x10(r31)
/* 80309F24 00305B84  48 00 00 28 */	b lbl_80309F4C
lbl_80309F28:
/* 80309F28 00305B88  80 7F 00 08 */	lwz r3, 8(r31)
/* 80309F2C 00305B8C  7C 03 00 40 */	cmplw r3, r0
/* 80309F30 00305B90  40 80 00 0C */	bge lbl_80309F3C
/* 80309F34 00305B94  90 7F 00 0C */	stw r3, 0xc(r31)
/* 80309F38 00305B98  48 00 00 14 */	b lbl_80309F4C
lbl_80309F3C:
/* 80309F3C 00305B9C  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 80309F40 00305BA0  7C 03 00 40 */	cmplw r3, r0
/* 80309F44 00305BA4  40 81 00 08 */	ble lbl_80309F4C
/* 80309F48 00305BA8  90 7F 00 10 */	stw r3, 0x10(r31)
lbl_80309F4C:
/* 80309F4C 00305BAC  2C 1F 00 00 */	cmpwi r31, 0
/* 80309F50 00305BB0  41 82 00 24 */	beq lbl_80309F74
/* 80309F54 00305BB4  A0 1F 00 00 */	lhz r0, 0(r31)
/* 80309F58 00305BB8  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 80309F5C 00305BBC  41 82 00 18 */	beq lbl_80309F74
/* 80309F60 00305BC0  80 7F 00 18 */	lwz r3, 0x18(r31)
/* 80309F64 00305BC4  3C 03 00 01 */	addis r0, r3, 1
/* 80309F68 00305BC8  28 00 FF FF */	cmplwi r0, 0xffff
/* 80309F6C 00305BCC  41 82 00 08 */	beq lbl_80309F74
/* 80309F70 00305BD0  3B C0 00 01 */	li r30, 1
lbl_80309F74:
/* 80309F74 00305BD4  7F 63 DB 78 */	mr r3, r27
/* 80309F78 00305BD8  7F E4 FB 78 */	mr r4, r31
/* 80309F7C 00305BDC  4B FF F3 41 */	bl VFiPFCACHE_FlushPageIfNeeded
/* 80309F80 00305BE0  2C 03 00 00 */	cmpwi r3, 0
/* 80309F84 00305BE4  41 82 00 08 */	beq lbl_80309F8C
/* 80309F88 00305BE8  48 00 00 80 */	b lbl_8030A008
lbl_80309F8C:
/* 80309F8C 00305BEC  2C 1E 00 00 */	cmpwi r30, 0
/* 80309F90 00305BF0  41 82 00 74 */	beq lbl_8030A004
/* 80309F94 00305BF4  7F 63 DB 78 */	mr r3, r27
/* 80309F98 00305BF8  38 80 00 01 */	li r4, 1
/* 80309F9C 00305BFC  48 01 1E 05 */	bl dCommon_FlushFromVol
/* 80309FA0 00305C00  2C 03 00 00 */	cmpwi r3, 0
/* 80309FA4 00305C04  41 82 00 60 */	beq lbl_8030A004
/* 80309FA8 00305C08  38 60 00 11 */	li r3, 0x11
/* 80309FAC 00305C0C  48 00 00 5C */	b lbl_8030A008
lbl_80309FB0:
/* 80309FB0 00305C10  7F 63 DB 78 */	mr r3, r27
/* 80309FB4 00305C14  7F 84 E3 78 */	mr r4, r28
/* 80309FB8 00305C18  7F A5 EB 78 */	mr r5, r29
/* 80309FBC 00305C1C  38 E1 00 08 */	addi r7, r1, 8
/* 80309FC0 00305C20  38 C0 00 01 */	li r6, 1
/* 80309FC4 00305C24  4B FF C2 7D */	bl VFiPFDRV_lwrite
/* 80309FC8 00305C28  2C 03 00 00 */	cmpwi r3, 0
/* 80309FCC 00305C2C  41 82 00 08 */	beq lbl_80309FD4
/* 80309FD0 00305C30  48 00 00 38 */	b lbl_8030A008
lbl_80309FD4:
/* 80309FD4 00305C34  80 01 00 08 */	lwz r0, 8(r1)
/* 80309FD8 00305C38  28 00 00 01 */	cmplwi r0, 1
/* 80309FDC 00305C3C  41 82 00 0C */	beq lbl_80309FE8
/* 80309FE0 00305C40  38 60 00 11 */	li r3, 0x11
/* 80309FE4 00305C44  48 00 00 24 */	b lbl_8030A008
lbl_80309FE8:
/* 80309FE8 00305C48  7F 63 DB 78 */	mr r3, r27
/* 80309FEC 00305C4C  38 80 00 01 */	li r4, 1
/* 80309FF0 00305C50  48 01 1D B1 */	bl dCommon_FlushFromVol
/* 80309FF4 00305C54  2C 03 00 00 */	cmpwi r3, 0
/* 80309FF8 00305C58  41 82 00 0C */	beq lbl_8030A004
/* 80309FFC 00305C5C  38 60 00 11 */	li r3, 0x11
/* 8030A000 00305C60  48 00 00 08 */	b lbl_8030A008
lbl_8030A004:
/* 8030A004 00305C64  38 60 00 00 */	li r3, 0
lbl_8030A008:
/* 8030A008 00305C68  39 61 00 30 */	addi r11, r1, 0x30
/* 8030A00C 00305C6C  4B EB D1 69 */	bl _restgpr_27
/* 8030A010 00305C70  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030A014 00305C74  7C 08 03 A6 */	mtlr r0
/* 8030A018 00305C78  38 21 00 30 */	addi r1, r1, 0x30
/* 8030A01C 00305C7C  4E 80 00 20 */	blr

.global VFiPFCACHE_DoWriteNumSectorAndFreeIfNeeded
VFiPFCACHE_DoWriteNumSectorAndFreeIfNeeded:
/* 8030A020 00305C80  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8030A024 00305C84  7C 08 02 A6 */	mflr r0
/* 8030A028 00305C88  90 01 00 34 */	stw r0, 0x34(r1)
/* 8030A02C 00305C8C  39 61 00 30 */	addi r11, r1, 0x30
/* 8030A030 00305C90  4B EB D0 E9 */	bl _savegpr_23
/* 8030A034 00305C94  3B C0 00 00 */	li r30, 0
/* 8030A038 00305C98  7C FB 3B 78 */	mr r27, r7
/* 8030A03C 00305C9C  93 C8 00 00 */	stw r30, 0(r8)
/* 8030A040 00305CA0  7C 77 1B 78 */	mr r23, r3
/* 8030A044 00305CA4  7C 98 23 78 */	mr r24, r4
/* 8030A048 00305CA8  7C B9 2B 78 */	mr r25, r5
/* 8030A04C 00305CAC  7C DA 33 78 */	mr r26, r6
/* 8030A050 00305CB0  7D 1C 43 78 */	mr r28, r8
/* 8030A054 00305CB4  7F 7D DB 78 */	mr r29, r27
/* 8030A058 00305CB8  7F E6 3A 14 */	add r31, r6, r7
lbl_8030A05C:
/* 8030A05C 00305CBC  2C 1E 00 00 */	cmpwi r30, 0
/* 8030A060 00305CC0  40 82 00 0C */	bne lbl_8030A06C
/* 8030A064 00305CC4  83 D8 00 00 */	lwz r30, 0(r24)
/* 8030A068 00305CC8  48 00 00 40 */	b lbl_8030A0A8
lbl_8030A06C:
/* 8030A06C 00305CCC  83 DE 00 20 */	lwz r30, 0x20(r30)
/* 8030A070 00305CD0  80 18 00 00 */	lwz r0, 0(r24)
/* 8030A074 00305CD4  7C 1E 00 40 */	cmplw r30, r0
/* 8030A078 00305CD8  40 82 00 30 */	bne lbl_8030A0A8
/* 8030A07C 00305CDC  3B C0 00 00 */	li r30, 0
/* 8030A080 00305CE0  48 00 00 38 */	b lbl_8030A0B8
/* 8030A084 00305CE4  48 00 00 24 */	b lbl_8030A0A8
lbl_8030A088:
/* 8030A088 00305CE8  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 8030A08C 00305CEC  3C 03 00 01 */	addis r0, r3, 1
/* 8030A090 00305CF0  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030A094 00305CF4  41 82 00 10 */	beq lbl_8030A0A4
/* 8030A098 00305CF8  80 1E 00 04 */	lwz r0, 4(r30)
/* 8030A09C 00305CFC  90 1E 00 08 */	stw r0, 8(r30)
/* 8030A0A0 00305D00  48 00 00 18 */	b lbl_8030A0B8
lbl_8030A0A4:
/* 8030A0A4 00305D04  83 DE 00 20 */	lwz r30, 0x20(r30)
lbl_8030A0A8:
/* 8030A0A8 00305D08  A0 1E 00 00 */	lhz r0, 0(r30)
/* 8030A0AC 00305D0C  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8030A0B0 00305D10  40 82 FF D8 */	bne lbl_8030A088
/* 8030A0B4 00305D14  3B C0 00 00 */	li r30, 0
lbl_8030A0B8:
/* 8030A0B8 00305D18  2C 1E 00 00 */	cmpwi r30, 0
/* 8030A0BC 00305D1C  41 82 02 B0 */	beq lbl_8030A36C
/* 8030A0C0 00305D20  80 FE 00 18 */	lwz r7, 0x18(r30)
/* 8030A0C4 00305D24  3C 07 00 01 */	addis r0, r7, 1
/* 8030A0C8 00305D28  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030A0CC 00305D2C  41 82 02 A0 */	beq lbl_8030A36C
/* 8030A0D0 00305D30  7C 07 D0 40 */	cmplw r7, r26
/* 8030A0D4 00305D34  41 81 00 B0 */	bgt lbl_8030A184
/* 8030A0D8 00305D38  80 1E 00 14 */	lwz r0, 0x14(r30)
/* 8030A0DC 00305D3C  7C 07 02 14 */	add r0, r7, r0
/* 8030A0E0 00305D40  7C 00 F8 40 */	cmplw r0, r31
/* 8030A0E4 00305D44  41 80 00 A0 */	blt lbl_8030A184
/* 8030A0E8 00305D48  88 B7 00 20 */	lbz r5, 0x20(r23)
/* 8030A0EC 00305D4C  7C 07 D0 50 */	subf r0, r7, r26
/* 8030A0F0 00305D50  80 7E 00 04 */	lwz r3, 4(r30)
/* 8030A0F4 00305D54  7F 24 CB 78 */	mr r4, r25
/* 8030A0F8 00305D58  7C 00 28 30 */	slw r0, r0, r5
/* 8030A0FC 00305D5C  7F 65 28 30 */	slw r5, r27, r5
/* 8030A100 00305D60  7C 63 02 14 */	add r3, r3, r0
/* 8030A104 00305D64  4B FF AD A9 */	bl VFipf_memcpy
/* 8030A108 00305D68  80 7C 00 00 */	lwz r3, 0(r28)
/* 8030A10C 00305D6C  38 1B FF FF */	addi r0, r27, -1
/* 8030A110 00305D70  7C 63 EA 14 */	add r3, r3, r29
/* 8030A114 00305D74  3B A0 00 00 */	li r29, 0
/* 8030A118 00305D78  90 7C 00 00 */	stw r3, 0(r28)
/* 8030A11C 00305D7C  A0 7E 00 00 */	lhz r3, 0(r30)
/* 8030A120 00305D80  60 63 00 02 */	ori r3, r3, 2
/* 8030A124 00305D84  B0 7E 00 00 */	sth r3, 0(r30)
/* 8030A128 00305D88  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 8030A12C 00305D8C  88 B7 00 20 */	lbz r5, 0x20(r23)
/* 8030A130 00305D90  80 DE 00 0C */	lwz r6, 0xc(r30)
/* 8030A134 00305D94  7C 63 D0 50 */	subf r3, r3, r26
/* 8030A138 00305D98  80 9E 00 04 */	lwz r4, 4(r30)
/* 8030A13C 00305D9C  7C 63 28 30 */	slw r3, r3, r5
/* 8030A140 00305DA0  2C 06 00 00 */	cmpwi r6, 0
/* 8030A144 00305DA4  7C 00 28 30 */	slw r0, r0, r5
/* 8030A148 00305DA8  7C 64 1A 14 */	add r3, r4, r3
/* 8030A14C 00305DAC  7C 83 02 14 */	add r4, r3, r0
/* 8030A150 00305DB0  40 82 00 10 */	bne lbl_8030A160
/* 8030A154 00305DB4  90 7E 00 0C */	stw r3, 0xc(r30)
/* 8030A158 00305DB8  90 9E 00 10 */	stw r4, 0x10(r30)
/* 8030A15C 00305DBC  48 00 02 10 */	b lbl_8030A36C
lbl_8030A160:
/* 8030A160 00305DC0  7C 03 30 40 */	cmplw r3, r6
/* 8030A164 00305DC4  40 80 00 0C */	bge lbl_8030A170
/* 8030A168 00305DC8  90 7E 00 0C */	stw r3, 0xc(r30)
/* 8030A16C 00305DCC  48 00 02 00 */	b lbl_8030A36C
lbl_8030A170:
/* 8030A170 00305DD0  80 1E 00 10 */	lwz r0, 0x10(r30)
/* 8030A174 00305DD4  7C 00 20 40 */	cmplw r0, r4
/* 8030A178 00305DD8  40 80 01 F4 */	bge lbl_8030A36C
/* 8030A17C 00305DDC  90 9E 00 10 */	stw r4, 0x10(r30)
/* 8030A180 00305DE0  48 00 01 EC */	b lbl_8030A36C
lbl_8030A184:
/* 8030A184 00305DE4  7C 07 D0 40 */	cmplw r7, r26
/* 8030A188 00305DE8  41 80 00 78 */	blt lbl_8030A200
/* 8030A18C 00305DEC  80 9E 00 14 */	lwz r4, 0x14(r30)
/* 8030A190 00305DF0  7C 07 22 14 */	add r0, r7, r4
/* 8030A194 00305DF4  7C 00 F8 40 */	cmplw r0, r31
/* 8030A198 00305DF8  41 81 00 68 */	bgt lbl_8030A200
/* 8030A19C 00305DFC  88 B7 00 20 */	lbz r5, 0x20(r23)
/* 8030A1A0 00305E00  7C 1A 38 50 */	subf r0, r26, r7
/* 8030A1A4 00305E04  80 7E 00 04 */	lwz r3, 4(r30)
/* 8030A1A8 00305E08  7C 00 28 30 */	slw r0, r0, r5
/* 8030A1AC 00305E0C  7C 85 28 30 */	slw r5, r4, r5
/* 8030A1B0 00305E10  7C 99 02 14 */	add r4, r25, r0
/* 8030A1B4 00305E14  4B FF AC F9 */	bl VFipf_memcpy
/* 8030A1B8 00305E18  80 7E 00 14 */	lwz r3, 0x14(r30)
/* 8030A1BC 00305E1C  80 1C 00 00 */	lwz r0, 0(r28)
/* 8030A1C0 00305E20  7F A3 E8 50 */	subf r29, r3, r29
/* 8030A1C4 00305E24  7C 00 1A 14 */	add r0, r0, r3
/* 8030A1C8 00305E28  90 1C 00 00 */	stw r0, 0(r28)
/* 8030A1CC 00305E2C  A0 1E 00 00 */	lhz r0, 0(r30)
/* 8030A1D0 00305E30  60 00 00 02 */	ori r0, r0, 2
/* 8030A1D4 00305E34  B0 1E 00 00 */	sth r0, 0(r30)
/* 8030A1D8 00305E38  80 1E 00 04 */	lwz r0, 4(r30)
/* 8030A1DC 00305E3C  90 1E 00 0C */	stw r0, 0xc(r30)
/* 8030A1E0 00305E40  80 7E 00 14 */	lwz r3, 0x14(r30)
/* 8030A1E4 00305E44  88 17 00 20 */	lbz r0, 0x20(r23)
/* 8030A1E8 00305E48  38 63 FF FF */	addi r3, r3, -1
/* 8030A1EC 00305E4C  80 9E 00 04 */	lwz r4, 4(r30)
/* 8030A1F0 00305E50  7C 60 00 30 */	slw r0, r3, r0
/* 8030A1F4 00305E54  7C 04 02 14 */	add r0, r4, r0
/* 8030A1F8 00305E58  90 1E 00 10 */	stw r0, 0x10(r30)
/* 8030A1FC 00305E5C  48 00 01 70 */	b lbl_8030A36C
lbl_8030A200:
/* 8030A200 00305E60  7C 07 D0 40 */	cmplw r7, r26
/* 8030A204 00305E64  40 81 00 A0 */	ble lbl_8030A2A4
/* 8030A208 00305E68  7C 07 F8 40 */	cmplw r7, r31
/* 8030A20C 00305E6C  40 80 00 98 */	bge lbl_8030A2A4
/* 8030A210 00305E70  80 1E 00 14 */	lwz r0, 0x14(r30)
/* 8030A214 00305E74  7C 07 02 14 */	add r0, r7, r0
/* 8030A218 00305E78  7C 00 F8 40 */	cmplw r0, r31
/* 8030A21C 00305E7C  41 80 00 88 */	blt lbl_8030A2A4
/* 8030A220 00305E80  88 B7 00 20 */	lbz r5, 0x20(r23)
/* 8030A224 00305E84  7C 9A 38 50 */	subf r4, r26, r7
/* 8030A228 00305E88  7C 07 F8 50 */	subf r0, r7, r31
/* 8030A22C 00305E8C  80 7E 00 04 */	lwz r3, 4(r30)
/* 8030A230 00305E90  7C 84 28 30 */	slw r4, r4, r5
/* 8030A234 00305E94  7C 99 22 14 */	add r4, r25, r4
/* 8030A238 00305E98  7C 05 28 30 */	slw r5, r0, r5
/* 8030A23C 00305E9C  4B FF AC 71 */	bl VFipf_memcpy
/* 8030A240 00305EA0  80 BE 00 18 */	lwz r5, 0x18(r30)
/* 8030A244 00305EA4  7C 9B D2 14 */	add r4, r27, r26
/* 8030A248 00305EA8  80 1C 00 00 */	lwz r0, 0(r28)
/* 8030A24C 00305EAC  38 64 FF FF */	addi r3, r4, -1
/* 8030A250 00305EB0  7C 85 20 50 */	subf r4, r5, r4
/* 8030A254 00305EB4  7C 00 22 14 */	add r0, r0, r4
/* 8030A258 00305EB8  90 1C 00 00 */	stw r0, 0(r28)
/* 8030A25C 00305EBC  7F A4 E8 50 */	subf r29, r4, r29
/* 8030A260 00305EC0  A0 1E 00 00 */	lhz r0, 0(r30)
/* 8030A264 00305EC4  60 00 00 02 */	ori r0, r0, 2
/* 8030A268 00305EC8  B0 1E 00 00 */	sth r0, 0(r30)
/* 8030A26C 00305ECC  80 9E 00 18 */	lwz r4, 0x18(r30)
/* 8030A270 00305ED0  80 BE 00 04 */	lwz r5, 4(r30)
/* 8030A274 00305ED4  88 17 00 20 */	lbz r0, 0x20(r23)
/* 8030A278 00305ED8  7C 64 18 50 */	subf r3, r4, r3
/* 8030A27C 00305EDC  7C 60 00 30 */	slw r0, r3, r0
/* 8030A280 00305EE0  90 BE 00 0C */	stw r5, 0xc(r30)
/* 8030A284 00305EE4  7C 65 02 14 */	add r3, r5, r0
/* 8030A288 00305EE8  80 1E 00 10 */	lwz r0, 0x10(r30)
/* 8030A28C 00305EEC  2C 00 00 00 */	cmpwi r0, 0
/* 8030A290 00305EF0  41 82 00 0C */	beq lbl_8030A29C
/* 8030A294 00305EF4  7C 00 18 40 */	cmplw r0, r3
/* 8030A298 00305EF8  40 80 00 D4 */	bge lbl_8030A36C
lbl_8030A29C:
/* 8030A29C 00305EFC  90 7E 00 10 */	stw r3, 0x10(r30)
/* 8030A2A0 00305F00  48 00 00 CC */	b lbl_8030A36C
lbl_8030A2A4:
/* 8030A2A4 00305F04  7C 07 D0 40 */	cmplw r7, r26
/* 8030A2A8 00305F08  40 80 00 C4 */	bge lbl_8030A36C
/* 8030A2AC 00305F0C  80 1E 00 14 */	lwz r0, 0x14(r30)
/* 8030A2B0 00305F10  7C 67 02 14 */	add r3, r7, r0
/* 8030A2B4 00305F14  7C 03 D0 40 */	cmplw r3, r26
/* 8030A2B8 00305F18  40 81 00 B4 */	ble lbl_8030A36C
/* 8030A2BC 00305F1C  7C 03 F8 40 */	cmplw r3, r31
/* 8030A2C0 00305F20  41 81 00 AC */	bgt lbl_8030A36C
/* 8030A2C4 00305F24  88 D7 00 20 */	lbz r6, 0x20(r23)
/* 8030A2C8 00305F28  7C 67 D0 50 */	subf r3, r7, r26
/* 8030A2CC 00305F2C  80 BE 00 04 */	lwz r5, 4(r30)
/* 8030A2D0 00305F30  7C 03 00 50 */	subf r0, r3, r0
/* 8030A2D4 00305F34  7C 63 30 30 */	slw r3, r3, r6
/* 8030A2D8 00305F38  7F 24 CB 78 */	mr r4, r25
/* 8030A2DC 00305F3C  7C 65 1A 14 */	add r3, r5, r3
/* 8030A2E0 00305F40  7C 05 30 30 */	slw r5, r0, r6
/* 8030A2E4 00305F44  4B FF AB C9 */	bl VFipf_memcpy
/* 8030A2E8 00305F48  80 1E 00 18 */	lwz r0, 0x18(r30)
/* 8030A2EC 00305F4C  80 7E 00 14 */	lwz r3, 0x14(r30)
/* 8030A2F0 00305F50  7C 80 D0 50 */	subf r4, r0, r26
/* 8030A2F4 00305F54  80 1C 00 00 */	lwz r0, 0(r28)
/* 8030A2F8 00305F58  7C 64 18 50 */	subf r3, r4, r3
/* 8030A2FC 00305F5C  7C 00 1A 14 */	add r0, r0, r3
/* 8030A300 00305F60  90 1C 00 00 */	stw r0, 0(r28)
/* 8030A304 00305F64  7F A3 E8 50 */	subf r29, r3, r29
/* 8030A308 00305F68  A0 1E 00 00 */	lhz r0, 0(r30)
/* 8030A30C 00305F6C  60 00 00 02 */	ori r0, r0, 2
/* 8030A310 00305F70  B0 1E 00 00 */	sth r0, 0(r30)
/* 8030A314 00305F74  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 8030A318 00305F78  80 1E 00 14 */	lwz r0, 0x14(r30)
/* 8030A31C 00305F7C  7C 63 D0 50 */	subf r3, r3, r26
/* 8030A320 00305F80  80 BE 00 0C */	lwz r5, 0xc(r30)
/* 8030A324 00305F84  7C 63 00 50 */	subf r3, r3, r0
/* 8030A328 00305F88  88 17 00 20 */	lbz r0, 0x20(r23)
/* 8030A32C 00305F8C  38 63 FF FF */	addi r3, r3, -1
/* 8030A330 00305F90  2C 05 00 00 */	cmpwi r5, 0
/* 8030A334 00305F94  80 9E 00 04 */	lwz r4, 4(r30)
/* 8030A338 00305F98  7C 60 00 30 */	slw r0, r3, r0
/* 8030A33C 00305F9C  7C 04 02 14 */	add r0, r4, r0
/* 8030A340 00305FA0  41 82 00 0C */	beq lbl_8030A34C
/* 8030A344 00305FA4  7C 00 28 40 */	cmplw r0, r5
/* 8030A348 00305FA8  40 80 00 08 */	bge lbl_8030A350
lbl_8030A34C:
/* 8030A34C 00305FAC  90 1E 00 0C */	stw r0, 0xc(r30)
lbl_8030A350:
/* 8030A350 00305FB0  80 7E 00 14 */	lwz r3, 0x14(r30)
/* 8030A354 00305FB4  88 17 00 20 */	lbz r0, 0x20(r23)
/* 8030A358 00305FB8  38 63 FF FF */	addi r3, r3, -1
/* 8030A35C 00305FBC  80 9E 00 04 */	lwz r4, 4(r30)
/* 8030A360 00305FC0  7C 60 00 30 */	slw r0, r3, r0
/* 8030A364 00305FC4  7C 04 02 14 */	add r0, r4, r0
/* 8030A368 00305FC8  90 1E 00 10 */	stw r0, 0x10(r30)
lbl_8030A36C:
/* 8030A36C 00305FCC  2C 1E 00 00 */	cmpwi r30, 0
/* 8030A370 00305FD0  41 82 00 0C */	beq lbl_8030A37C
/* 8030A374 00305FD4  2C 1D 00 00 */	cmpwi r29, 0
/* 8030A378 00305FD8  40 82 FC E4 */	bne lbl_8030A05C
lbl_8030A37C:
/* 8030A37C 00305FDC  2C 1D 00 00 */	cmpwi r29, 0
/* 8030A380 00305FE0  40 82 00 10 */	bne lbl_8030A390
/* 8030A384 00305FE4  80 17 15 E8 */	lwz r0, 0x15e8(r23)
/* 8030A388 00305FE8  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8030A38C 00305FEC  41 82 00 44 */	beq lbl_8030A3D0
lbl_8030A390:
/* 8030A390 00305FF0  7E E3 BB 78 */	mr r3, r23
/* 8030A394 00305FF4  7F 24 CB 78 */	mr r4, r25
/* 8030A398 00305FF8  7F 45 D3 78 */	mr r5, r26
/* 8030A39C 00305FFC  7F 66 DB 78 */	mr r6, r27
/* 8030A3A0 00306000  7F 87 E3 78 */	mr r7, r28
/* 8030A3A4 00306004  4B FF BE 9D */	bl VFiPFDRV_lwrite
/* 8030A3A8 00306008  2C 03 00 00 */	cmpwi r3, 0
/* 8030A3AC 0030600C  41 82 00 08 */	beq lbl_8030A3B4
/* 8030A3B0 00306010  48 00 00 60 */	b lbl_8030A410
lbl_8030A3B4:
/* 8030A3B4 00306014  7E E3 BB 78 */	mr r3, r23
/* 8030A3B8 00306018  38 80 00 01 */	li r4, 1
/* 8030A3BC 0030601C  48 01 19 E5 */	bl dCommon_FlushFromVol
/* 8030A3C0 00306020  2C 03 00 00 */	cmpwi r3, 0
/* 8030A3C4 00306024  41 82 00 0C */	beq lbl_8030A3D0
/* 8030A3C8 00306028  38 60 00 11 */	li r3, 0x11
/* 8030A3CC 0030602C  48 00 00 44 */	b lbl_8030A410
lbl_8030A3D0:
/* 8030A3D0 00306030  80 17 15 E8 */	lwz r0, 0x15e8(r23)
/* 8030A3D4 00306034  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8030A3D8 00306038  41 82 00 34 */	beq lbl_8030A40C
/* 8030A3DC 0030603C  7C 1B E8 40 */	cmplw r27, r29
/* 8030A3E0 00306040  41 82 00 2C */	beq lbl_8030A40C
/* 8030A3E4 00306044  80 97 15 F8 */	lwz r4, 0x15f8(r23)
/* 8030A3E8 00306048  7C 85 23 78 */	mr r5, r4
lbl_8030A3EC:
/* 8030A3EC 0030604C  A0 65 00 00 */	lhz r3, 0(r5)
/* 8030A3F0 00306050  54 60 07 FF */	clrlwi. r0, r3, 0x1f
/* 8030A3F4 00306054  41 82 00 18 */	beq lbl_8030A40C
/* 8030A3F8 00306058  54 60 07 FA */	rlwinm r0, r3, 0, 0x1f, 0x1d
/* 8030A3FC 0030605C  B0 05 00 00 */	sth r0, 0(r5)
/* 8030A400 00306060  80 A5 00 20 */	lwz r5, 0x20(r5)
/* 8030A404 00306064  7C 05 20 40 */	cmplw r5, r4
/* 8030A408 00306068  40 82 FF E4 */	bne lbl_8030A3EC
lbl_8030A40C:
/* 8030A40C 0030606C  38 60 00 00 */	li r3, 0
lbl_8030A410:
/* 8030A410 00306070  39 61 00 30 */	addi r11, r1, 0x30
/* 8030A414 00306074  4B EB CD 51 */	bl _restgpr_23
/* 8030A418 00306078  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030A41C 0030607C  7C 08 03 A6 */	mtlr r0
/* 8030A420 00306080  38 21 00 30 */	addi r1, r1, 0x30
/* 8030A424 00306084  4E 80 00 20 */	blr

.global VFiPFCACHE_DoFlushCache
VFiPFCACHE_DoFlushCache:
/* 8030A428 00306088  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8030A42C 0030608C  7C 08 02 A6 */	mflr r0
/* 8030A430 00306090  90 01 00 24 */	stw r0, 0x24(r1)
/* 8030A434 00306094  39 61 00 20 */	addi r11, r1, 0x20
/* 8030A438 00306098  4B EB CC ED */	bl _savegpr_26
/* 8030A43C 0030609C  A0 04 00 00 */	lhz r0, 0(r4)
/* 8030A440 003060A0  7C 9B 23 78 */	mr r27, r4
/* 8030A444 003060A4  7C 7A 1B 78 */	mr r26, r3
/* 8030A448 003060A8  3B 80 00 00 */	li r28, 0
/* 8030A44C 003060AC  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8030A450 003060B0  7F 7F DB 78 */	mr r31, r27
/* 8030A454 003060B4  3B C0 00 00 */	li r30, 0
/* 8030A458 003060B8  40 82 00 0C */	bne lbl_8030A464
/* 8030A45C 003060BC  38 60 00 00 */	li r3, 0
/* 8030A460 003060C0  48 00 00 B0 */	b lbl_8030A510
lbl_8030A464:
/* 8030A464 003060C4  A0 7F 00 00 */	lhz r3, 0(r31)
/* 8030A468 003060C8  54 60 07 FF */	clrlwi. r0, r3, 0x1f
/* 8030A46C 003060CC  41 82 00 6C */	beq lbl_8030A4D8
/* 8030A470 003060D0  2C 1F 00 00 */	cmpwi r31, 0
/* 8030A474 003060D4  3B A0 00 00 */	li r29, 0
/* 8030A478 003060D8  41 82 00 20 */	beq lbl_8030A498
/* 8030A47C 003060DC  54 60 07 BD */	rlwinm. r0, r3, 0, 0x1e, 0x1e
/* 8030A480 003060E0  41 82 00 18 */	beq lbl_8030A498
/* 8030A484 003060E4  80 7F 00 18 */	lwz r3, 0x18(r31)
/* 8030A488 003060E8  3C 03 00 01 */	addis r0, r3, 1
/* 8030A48C 003060EC  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030A490 003060F0  41 82 00 08 */	beq lbl_8030A498
/* 8030A494 003060F4  3B A0 00 01 */	li r29, 1
lbl_8030A498:
/* 8030A498 003060F8  7F 43 D3 78 */	mr r3, r26
/* 8030A49C 003060FC  7F E4 FB 78 */	mr r4, r31
/* 8030A4A0 00306100  4B FF EE 1D */	bl VFiPFCACHE_FlushPageIfNeeded
/* 8030A4A4 00306104  2C 1D 00 00 */	cmpwi r29, 0
/* 8030A4A8 00306108  41 82 00 10 */	beq lbl_8030A4B8
/* 8030A4AC 0030610C  2C 03 00 00 */	cmpwi r3, 0
/* 8030A4B0 00306110  40 82 00 08 */	bne lbl_8030A4B8
/* 8030A4B4 00306114  3B 80 00 01 */	li r28, 1
lbl_8030A4B8:
/* 8030A4B8 00306118  2C 03 00 00 */	cmpwi r3, 0
/* 8030A4BC 0030611C  41 82 00 10 */	beq lbl_8030A4CC
/* 8030A4C0 00306120  2C 1E 00 00 */	cmpwi r30, 0
/* 8030A4C4 00306124  40 82 00 08 */	bne lbl_8030A4CC
/* 8030A4C8 00306128  7C 7E 1B 78 */	mr r30, r3
lbl_8030A4CC:
/* 8030A4CC 0030612C  83 FF 00 20 */	lwz r31, 0x20(r31)
/* 8030A4D0 00306130  7C 1F D8 40 */	cmplw r31, r27
/* 8030A4D4 00306134  40 82 FF 90 */	bne lbl_8030A464
lbl_8030A4D8:
/* 8030A4D8 00306138  2C 1C 00 00 */	cmpwi r28, 0
/* 8030A4DC 0030613C  41 82 00 30 */	beq lbl_8030A50C
/* 8030A4E0 00306140  7F C0 00 34 */	cntlzw r0, r30
/* 8030A4E4 00306144  7F 43 D3 78 */	mr r3, r26
/* 8030A4E8 00306148  54 1C D9 7E */	srwi r28, r0, 5
/* 8030A4EC 0030614C  7F 84 E3 78 */	mr r4, r28
/* 8030A4F0 00306150  48 01 18 B1 */	bl dCommon_FlushFromVol
/* 8030A4F4 00306154  2C 03 00 00 */	cmpwi r3, 0
/* 8030A4F8 00306158  41 82 00 14 */	beq lbl_8030A50C
/* 8030A4FC 0030615C  2C 1C 00 01 */	cmpwi r28, 1
/* 8030A500 00306160  40 82 00 0C */	bne lbl_8030A50C
/* 8030A504 00306164  38 60 00 11 */	li r3, 0x11
/* 8030A508 00306168  48 00 00 08 */	b lbl_8030A510
lbl_8030A50C:
/* 8030A50C 0030616C  7F C3 F3 78 */	mr r3, r30
lbl_8030A510:
/* 8030A510 00306170  39 61 00 20 */	addi r11, r1, 0x20
/* 8030A514 00306174  4B EB CC 5D */	bl _restgpr_26
/* 8030A518 00306178  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8030A51C 0030617C  7C 08 03 A6 */	mtlr r0
/* 8030A520 00306180  38 21 00 20 */	addi r1, r1, 0x20
/* 8030A524 00306184  4E 80 00 20 */	blr

.global VFiPFCACHE_InitCaches
VFiPFCACHE_InitCaches:
/* 8030A528 00306188  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030A52C 0030618C  7C 08 02 A6 */	mflr r0
/* 8030A530 00306190  38 80 00 00 */	li r4, 0
/* 8030A534 00306194  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030A538 00306198  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8030A53C 0030619C  7C 7F 1B 78 */	mr r31, r3
/* 8030A540 003061A0  80 03 15 E8 */	lwz r0, 0x15e8(r3)
/* 8030A544 003061A4  A0 A3 15 EC */	lhz r5, 0x15ec(r3)
/* 8030A548 003061A8  54 06 00 3C */	rlwinm r6, r0, 0, 0, 0x1e
/* 8030A54C 003061AC  A0 03 15 EE */	lhz r0, 0x15ee(r3)
/* 8030A550 003061B0  60 C6 00 02 */	ori r6, r6, 2
/* 8030A554 003061B4  54 C6 07 B8 */	rlwinm r6, r6, 0, 0x1e, 0x1c
/* 8030A558 003061B8  7C 05 02 14 */	add r0, r5, r0
/* 8030A55C 003061BC  90 C3 15 E8 */	stw r6, 0x15e8(r3)
/* 8030A560 003061C0  54 05 48 2C */	slwi r5, r0, 9
/* 8030A564 003061C4  80 63 15 FC */	lwz r3, 0x15fc(r3)
/* 8030A568 003061C8  4B FF AA 6D */	bl VFipf_memset
/* 8030A56C 003061CC  80 BF 15 F0 */	lwz r5, 0x15f0(r31)
/* 8030A570 003061D0  7F E3 FB 78 */	mr r3, r31
/* 8030A574 003061D4  80 DF 15 FC */	lwz r6, 0x15fc(r31)
/* 8030A578 003061D8  38 9F 15 F4 */	addi r4, r31, 0x15f4
/* 8030A57C 003061DC  A0 FF 15 EC */	lhz r7, 0x15ec(r31)
/* 8030A580 003061E0  39 20 00 01 */	li r9, 1
/* 8030A584 003061E4  81 1F 16 00 */	lwz r8, 0x1600(r31)
/* 8030A588 003061E8  4B FF E9 51 */	bl VFiPFCACHE_InitPageList
/* 8030A58C 003061EC  2C 03 00 00 */	cmpwi r3, 0
/* 8030A590 003061F0  41 82 00 08 */	beq lbl_8030A598
/* 8030A594 003061F4  48 00 00 48 */	b lbl_8030A5DC
lbl_8030A598:
/* 8030A598 003061F8  A0 1F 15 EC */	lhz r0, 0x15ec(r31)
/* 8030A59C 003061FC  7F E3 FB 78 */	mr r3, r31
/* 8030A5A0 00306200  81 5F 15 F0 */	lwz r10, 0x15f0(r31)
/* 8030A5A4 00306204  38 9F 15 F8 */	addi r4, r31, 0x15f8
/* 8030A5A8 00306208  1C A0 00 28 */	mulli r5, r0, 0x28
/* 8030A5AC 0030620C  80 DF 15 FC */	lwz r6, 0x15fc(r31)
/* 8030A5B0 00306210  54 00 48 2C */	slwi r0, r0, 9
/* 8030A5B4 00306214  A0 FF 15 EE */	lhz r7, 0x15ee(r31)
/* 8030A5B8 00306218  81 1F 16 04 */	lwz r8, 0x1604(r31)
/* 8030A5BC 0030621C  39 20 00 00 */	li r9, 0
/* 8030A5C0 00306220  7C AA 2A 14 */	add r5, r10, r5
/* 8030A5C4 00306224  7C C6 02 14 */	add r6, r6, r0
/* 8030A5C8 00306228  4B FF E9 11 */	bl VFiPFCACHE_InitPageList
/* 8030A5CC 0030622C  7C 03 00 D0 */	neg r0, r3
/* 8030A5D0 00306230  7C 00 1B 78 */	or r0, r0, r3
/* 8030A5D4 00306234  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030A5D8 00306238  7C 63 00 38 */	and r3, r3, r0
lbl_8030A5DC:
/* 8030A5DC 0030623C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030A5E0 00306240  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8030A5E4 00306244  7C 08 03 A6 */	mtlr r0
/* 8030A5E8 00306248  38 21 00 10 */	addi r1, r1, 0x10
/* 8030A5EC 0030624C  4E 80 00 20 */	blr

.global VFiPFCACHE_UpdateModifiedSector
VFiPFCACHE_UpdateModifiedSector:
/* 8030A5F0 00306250  80 03 00 0C */	lwz r0, 0xc(r3)
/* 8030A5F4 00306254  2C 00 00 00 */	cmpwi r0, 0
/* 8030A5F8 00306258  40 82 00 20 */	bne lbl_8030A618
/* 8030A5FC 0030625C  A0 83 00 00 */	lhz r4, 0(r3)
/* 8030A600 00306260  80 03 00 08 */	lwz r0, 8(r3)
/* 8030A604 00306264  60 84 00 02 */	ori r4, r4, 2
/* 8030A608 00306268  B0 83 00 00 */	sth r4, 0(r3)
/* 8030A60C 0030626C  90 03 00 0C */	stw r0, 0xc(r3)
/* 8030A610 00306270  90 03 00 10 */	stw r0, 0x10(r3)
/* 8030A614 00306274  48 00 00 28 */	b lbl_8030A63C
lbl_8030A618:
/* 8030A618 00306278  80 83 00 08 */	lwz r4, 8(r3)
/* 8030A61C 0030627C  7C 04 00 40 */	cmplw r4, r0
/* 8030A620 00306280  40 80 00 0C */	bge lbl_8030A62C
/* 8030A624 00306284  90 83 00 0C */	stw r4, 0xc(r3)
/* 8030A628 00306288  48 00 00 14 */	b lbl_8030A63C
lbl_8030A62C:
/* 8030A62C 0030628C  80 03 00 10 */	lwz r0, 0x10(r3)
/* 8030A630 00306290  7C 04 00 40 */	cmplw r4, r0
/* 8030A634 00306294  40 81 00 08 */	ble lbl_8030A63C
/* 8030A638 00306298  90 83 00 10 */	stw r4, 0x10(r3)
lbl_8030A63C:
/* 8030A63C 0030629C  38 60 00 00 */	li r3, 0
/* 8030A640 003062A0  4E 80 00 20 */	blr

.global VFiPFCACHE_AllocateFATPage
VFiPFCACHE_AllocateFATPage:
/* 8030A644 003062A4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030A648 003062A8  7C 08 02 A6 */	mflr r0
/* 8030A64C 003062AC  7C A6 2B 78 */	mr r6, r5
/* 8030A650 003062B0  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030A654 003062B4  80 03 15 F4 */	lwz r0, 0x15f4(r3)
/* 8030A658 003062B8  2C 00 00 00 */	cmpwi r0, 0
/* 8030A65C 003062BC  40 82 00 2C */	bne lbl_8030A688
/* 8030A660 003062C0  80 03 15 FC */	lwz r0, 0x15fc(r3)
/* 8030A664 003062C4  80 83 15 F0 */	lwz r4, 0x15f0(r3)
/* 8030A668 003062C8  90 04 00 04 */	stw r0, 4(r4)
/* 8030A66C 003062CC  80 03 15 FC */	lwz r0, 0x15fc(r3)
/* 8030A670 003062D0  80 83 15 F0 */	lwz r4, 0x15f0(r3)
/* 8030A674 003062D4  90 04 00 08 */	stw r0, 8(r4)
/* 8030A678 003062D8  80 03 15 F0 */	lwz r0, 0x15f0(r3)
/* 8030A67C 003062DC  38 60 00 00 */	li r3, 0
/* 8030A680 003062E0  90 05 00 00 */	stw r0, 0(r5)
/* 8030A684 003062E4  48 00 00 24 */	b lbl_8030A6A8
lbl_8030A688:
/* 8030A688 003062E8  7C 85 23 78 */	mr r5, r4
/* 8030A68C 003062EC  38 83 15 F4 */	addi r4, r3, 0x15f4
/* 8030A690 003062F0  38 E1 00 08 */	addi r7, r1, 8
/* 8030A694 003062F4  4B FF ED 29 */	bl VFiPFCACHE_DoAllocatePage
/* 8030A698 003062F8  7C 03 00 D0 */	neg r0, r3
/* 8030A69C 003062FC  7C 00 1B 78 */	or r0, r0, r3
/* 8030A6A0 00306300  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030A6A4 00306304  7C 63 00 38 */	and r3, r3, r0
lbl_8030A6A8:
/* 8030A6A8 00306308  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030A6AC 0030630C  7C 08 03 A6 */	mtlr r0
/* 8030A6B0 00306310  38 21 00 10 */	addi r1, r1, 0x10
/* 8030A6B4 00306314  4E 80 00 20 */	blr

.global VFiPFCACHE_AllocateDataPage
VFiPFCACHE_AllocateDataPage:
/* 8030A6B8 00306318  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030A6BC 0030631C  7C 08 02 A6 */	mflr r0
/* 8030A6C0 00306320  7C A6 2B 78 */	mr r6, r5
/* 8030A6C4 00306324  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030A6C8 00306328  80 03 15 F8 */	lwz r0, 0x15f8(r3)
/* 8030A6CC 0030632C  2C 00 00 00 */	cmpwi r0, 0
/* 8030A6D0 00306330  40 82 00 2C */	bne lbl_8030A6FC
/* 8030A6D4 00306334  80 03 15 FC */	lwz r0, 0x15fc(r3)
/* 8030A6D8 00306338  80 83 15 F0 */	lwz r4, 0x15f0(r3)
/* 8030A6DC 0030633C  90 04 00 04 */	stw r0, 4(r4)
/* 8030A6E0 00306340  80 03 15 FC */	lwz r0, 0x15fc(r3)
/* 8030A6E4 00306344  80 83 15 F0 */	lwz r4, 0x15f0(r3)
/* 8030A6E8 00306348  90 04 00 08 */	stw r0, 8(r4)
/* 8030A6EC 0030634C  80 03 15 F0 */	lwz r0, 0x15f0(r3)
/* 8030A6F0 00306350  38 60 00 00 */	li r3, 0
/* 8030A6F4 00306354  90 05 00 00 */	stw r0, 0(r5)
/* 8030A6F8 00306358  48 00 00 24 */	b lbl_8030A71C
lbl_8030A6FC:
/* 8030A6FC 0030635C  7C 85 23 78 */	mr r5, r4
/* 8030A700 00306360  38 83 15 F8 */	addi r4, r3, 0x15f8
/* 8030A704 00306364  38 E1 00 08 */	addi r7, r1, 8
/* 8030A708 00306368  4B FF EC B5 */	bl VFiPFCACHE_DoAllocatePage
/* 8030A70C 0030636C  7C 03 00 D0 */	neg r0, r3
/* 8030A710 00306370  7C 00 1B 78 */	or r0, r0, r3
/* 8030A714 00306374  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030A718 00306378  7C 63 00 38 */	and r3, r3, r0
lbl_8030A71C:
/* 8030A71C 0030637C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030A720 00306380  7C 08 03 A6 */	mtlr r0
/* 8030A724 00306384  38 21 00 10 */	addi r1, r1, 0x10
/* 8030A728 00306388  4E 80 00 20 */	blr

.global VFiPFCACHE_FreeFATPage
VFiPFCACHE_FreeFATPage:
/* 8030A72C 0030638C  80 03 15 F4 */	lwz r0, 0x15f4(r3)
/* 8030A730 00306390  2C 00 00 00 */	cmpwi r0, 0
/* 8030A734 00306394  4D 82 00 20 */	beqlr
/* 8030A738 00306398  A0 A4 00 00 */	lhz r5, 0(r4)
/* 8030A73C 0030639C  38 C0 00 00 */	li r6, 0
/* 8030A740 003063A0  38 00 FF FF */	li r0, -1
/* 8030A744 003063A4  90 C4 00 0C */	stw r6, 0xc(r4)
/* 8030A748 003063A8  54 A5 04 3A */	rlwinm r5, r5, 0, 0x10, 0x1d
/* 8030A74C 003063AC  B0 A4 00 00 */	sth r5, 0(r4)
/* 8030A750 003063B0  90 C4 00 10 */	stw r6, 0x10(r4)
/* 8030A754 003063B4  90 04 00 18 */	stw r0, 0x18(r4)
/* 8030A758 003063B8  90 C4 00 1C */	stw r6, 0x1c(r4)
/* 8030A75C 003063BC  80 A3 15 F4 */	lwz r5, 0x15f4(r3)
/* 8030A760 003063C0  7C 04 28 40 */	cmplw r4, r5
/* 8030A764 003063C4  40 82 00 10 */	bne lbl_8030A774
/* 8030A768 003063C8  80 04 00 20 */	lwz r0, 0x20(r4)
/* 8030A76C 003063CC  90 03 15 F4 */	stw r0, 0x15f4(r3)
/* 8030A770 003063D0  4E 80 00 20 */	blr
lbl_8030A774:
/* 8030A774 003063D4  80 05 00 24 */	lwz r0, 0x24(r5)
/* 8030A778 003063D8  7C 04 00 40 */	cmplw r4, r0
/* 8030A77C 003063DC  4D 82 00 20 */	beqlr
/* 8030A780 003063E0  80 04 00 20 */	lwz r0, 0x20(r4)
/* 8030A784 003063E4  80 A4 00 24 */	lwz r5, 0x24(r4)
/* 8030A788 003063E8  90 05 00 20 */	stw r0, 0x20(r5)
/* 8030A78C 003063EC  80 04 00 24 */	lwz r0, 0x24(r4)
/* 8030A790 003063F0  80 A4 00 20 */	lwz r5, 0x20(r4)
/* 8030A794 003063F4  90 05 00 24 */	stw r0, 0x24(r5)
/* 8030A798 003063F8  80 A3 15 F4 */	lwz r5, 0x15f4(r3)
/* 8030A79C 003063FC  90 A4 00 20 */	stw r5, 0x20(r4)
/* 8030A7A0 00306400  80 63 15 F4 */	lwz r3, 0x15f4(r3)
/* 8030A7A4 00306404  80 03 00 24 */	lwz r0, 0x24(r3)
/* 8030A7A8 00306408  90 04 00 24 */	stw r0, 0x24(r4)
/* 8030A7AC 0030640C  90 85 00 24 */	stw r4, 0x24(r5)
/* 8030A7B0 00306410  80 64 00 24 */	lwz r3, 0x24(r4)
/* 8030A7B4 00306414  90 83 00 20 */	stw r4, 0x20(r3)
/* 8030A7B8 00306418  4E 80 00 20 */	blr

.global VFiPFCACHE_FreeDataPage
VFiPFCACHE_FreeDataPage:
/* 8030A7BC 0030641C  80 03 15 F8 */	lwz r0, 0x15f8(r3)
/* 8030A7C0 00306420  2C 00 00 00 */	cmpwi r0, 0
/* 8030A7C4 00306424  4D 82 00 20 */	beqlr
/* 8030A7C8 00306428  A0 A4 00 00 */	lhz r5, 0(r4)
/* 8030A7CC 0030642C  38 C0 00 00 */	li r6, 0
/* 8030A7D0 00306430  38 00 FF FF */	li r0, -1
/* 8030A7D4 00306434  90 C4 00 0C */	stw r6, 0xc(r4)
/* 8030A7D8 00306438  54 A5 04 3A */	rlwinm r5, r5, 0, 0x10, 0x1d
/* 8030A7DC 0030643C  B0 A4 00 00 */	sth r5, 0(r4)
/* 8030A7E0 00306440  90 C4 00 10 */	stw r6, 0x10(r4)
/* 8030A7E4 00306444  90 04 00 18 */	stw r0, 0x18(r4)
/* 8030A7E8 00306448  90 C4 00 1C */	stw r6, 0x1c(r4)
/* 8030A7EC 0030644C  80 A3 15 F8 */	lwz r5, 0x15f8(r3)
/* 8030A7F0 00306450  7C 04 28 40 */	cmplw r4, r5
/* 8030A7F4 00306454  40 82 00 10 */	bne lbl_8030A804
/* 8030A7F8 00306458  80 04 00 20 */	lwz r0, 0x20(r4)
/* 8030A7FC 0030645C  90 03 15 F8 */	stw r0, 0x15f8(r3)
/* 8030A800 00306460  4E 80 00 20 */	blr
lbl_8030A804:
/* 8030A804 00306464  80 05 00 24 */	lwz r0, 0x24(r5)
/* 8030A808 00306468  7C 04 00 40 */	cmplw r4, r0
/* 8030A80C 0030646C  4D 82 00 20 */	beqlr
/* 8030A810 00306470  80 04 00 20 */	lwz r0, 0x20(r4)
/* 8030A814 00306474  80 A4 00 24 */	lwz r5, 0x24(r4)
/* 8030A818 00306478  90 05 00 20 */	stw r0, 0x20(r5)
/* 8030A81C 0030647C  80 04 00 24 */	lwz r0, 0x24(r4)
/* 8030A820 00306480  80 A4 00 20 */	lwz r5, 0x20(r4)
/* 8030A824 00306484  90 05 00 24 */	stw r0, 0x24(r5)
/* 8030A828 00306488  80 A3 15 F8 */	lwz r5, 0x15f8(r3)
/* 8030A82C 0030648C  90 A4 00 20 */	stw r5, 0x20(r4)
/* 8030A830 00306490  80 63 15 F8 */	lwz r3, 0x15f8(r3)
/* 8030A834 00306494  80 03 00 24 */	lwz r0, 0x24(r3)
/* 8030A838 00306498  90 04 00 24 */	stw r0, 0x24(r4)
/* 8030A83C 0030649C  90 85 00 24 */	stw r4, 0x24(r5)
/* 8030A840 003064A0  80 64 00 24 */	lwz r3, 0x24(r4)
/* 8030A844 003064A4  90 83 00 20 */	stw r4, 0x20(r3)
/* 8030A848 003064A8  4E 80 00 20 */	blr

.global VFiPFCACHE_ReadFATPage
VFiPFCACHE_ReadFATPage:
/* 8030A84C 003064AC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030A850 003064B0  7C 08 02 A6 */	mflr r0
/* 8030A854 003064B4  7C A6 2B 78 */	mr r6, r5
/* 8030A858 003064B8  7C 85 23 78 */	mr r5, r4
/* 8030A85C 003064BC  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030A860 003064C0  38 83 15 F4 */	addi r4, r3, 0x15f4
/* 8030A864 003064C4  38 E0 00 00 */	li r7, 0
/* 8030A868 003064C8  4B FF ED CD */	bl VFiPFCACHE_DoReadPage
/* 8030A86C 003064CC  7C 03 00 D0 */	neg r0, r3
/* 8030A870 003064D0  7C 00 1B 78 */	or r0, r0, r3
/* 8030A874 003064D4  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030A878 003064D8  7C 63 00 38 */	and r3, r3, r0
/* 8030A87C 003064DC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030A880 003064E0  7C 08 03 A6 */	mtlr r0
/* 8030A884 003064E4  38 21 00 10 */	addi r1, r1, 0x10
/* 8030A888 003064E8  4E 80 00 20 */	blr

.global VFiPFCACHE_ReadDataPage
VFiPFCACHE_ReadDataPage:
/* 8030A88C 003064EC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030A890 003064F0  7C 08 02 A6 */	mflr r0
/* 8030A894 003064F4  7C 88 23 78 */	mr r8, r4
/* 8030A898 003064F8  7C C7 33 78 */	mr r7, r6
/* 8030A89C 003064FC  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030A8A0 00306500  7C A0 2B 78 */	mr r0, r5
/* 8030A8A4 00306504  38 83 15 F8 */	addi r4, r3, 0x15f8
/* 8030A8A8 00306508  7D 05 43 78 */	mr r5, r8
/* 8030A8AC 0030650C  7C 06 03 78 */	mr r6, r0
/* 8030A8B0 00306510  4B FF ED 85 */	bl VFiPFCACHE_DoReadPage
/* 8030A8B4 00306514  7C 03 00 D0 */	neg r0, r3
/* 8030A8B8 00306518  7C 00 1B 78 */	or r0, r0, r3
/* 8030A8BC 0030651C  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030A8C0 00306520  7C 63 00 38 */	and r3, r3, r0
/* 8030A8C4 00306524  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030A8C8 00306528  7C 08 03 A6 */	mtlr r0
/* 8030A8CC 0030652C  38 21 00 10 */	addi r1, r1, 0x10
/* 8030A8D0 00306530  4E 80 00 20 */	blr

.global VFiPFCACHE_ReadDataPageAndFlushIfNeeded
VFiPFCACHE_ReadDataPageAndFlushIfNeeded:
/* 8030A8D4 00306534  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030A8D8 00306538  7C 08 02 A6 */	mflr r0
/* 8030A8DC 0030653C  7C 88 23 78 */	mr r8, r4
/* 8030A8E0 00306540  7C C7 33 78 */	mr r7, r6
/* 8030A8E4 00306544  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030A8E8 00306548  7C A0 2B 78 */	mr r0, r5
/* 8030A8EC 0030654C  38 83 15 F8 */	addi r4, r3, 0x15f8
/* 8030A8F0 00306550  7D 05 43 78 */	mr r5, r8
/* 8030A8F4 00306554  7C 06 03 78 */	mr r6, r0
/* 8030A8F8 00306558  4B FF EF 49 */	bl VFiPFCACHE_DoReadPageAndFlushIfNeeded
/* 8030A8FC 0030655C  7C 03 00 D0 */	neg r0, r3
/* 8030A900 00306560  7C 00 1B 78 */	or r0, r0, r3
/* 8030A904 00306564  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030A908 00306568  7C 63 00 38 */	and r3, r3, r0
/* 8030A90C 0030656C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030A910 00306570  7C 08 03 A6 */	mtlr r0
/* 8030A914 00306574  38 21 00 10 */	addi r1, r1, 0x10
/* 8030A918 00306578  4E 80 00 20 */	blr

.global VFiPFCACHE_ReadDataNumSector
VFiPFCACHE_ReadDataNumSector:
/* 8030A91C 0030657C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030A920 00306580  7C 08 02 A6 */	mflr r0
/* 8030A924 00306584  7C AA 2B 78 */	mr r10, r5
/* 8030A928 00306588  7C C9 33 78 */	mr r9, r6
/* 8030A92C 0030658C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030A930 00306590  7C E8 3B 78 */	mr r8, r7
/* 8030A934 00306594  80 03 00 08 */	lwz r0, 8(r3)
/* 8030A938 00306598  7C 05 00 40 */	cmplw r5, r0
/* 8030A93C 0030659C  41 80 00 0C */	blt lbl_8030A948
/* 8030A940 003065A0  38 60 00 10 */	li r3, 0x10
/* 8030A944 003065A4  48 00 00 28 */	b lbl_8030A96C
lbl_8030A948:
/* 8030A948 003065A8  7C 85 23 78 */	mr r5, r4
/* 8030A94C 003065AC  7D 46 53 78 */	mr r6, r10
/* 8030A950 003065B0  7D 27 4B 78 */	mr r7, r9
/* 8030A954 003065B4  38 83 15 F8 */	addi r4, r3, 0x15f8
/* 8030A958 003065B8  4B FF F1 85 */	bl VFiPFCACHE_DoReadNumSector
/* 8030A95C 003065BC  7C 03 00 D0 */	neg r0, r3
/* 8030A960 003065C0  7C 00 1B 78 */	or r0, r0, r3
/* 8030A964 003065C4  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030A968 003065C8  7C 63 00 38 */	and r3, r3, r0
lbl_8030A96C:
/* 8030A96C 003065CC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030A970 003065D0  7C 08 03 A6 */	mtlr r0
/* 8030A974 003065D4  38 21 00 10 */	addi r1, r1, 0x10
/* 8030A978 003065D8  4E 80 00 20 */	blr

.global VFiPFCACHE_WriteFATPage
VFiPFCACHE_WriteFATPage:
/* 8030A97C 003065DC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030A980 003065E0  7C 08 02 A6 */	mflr r0
/* 8030A984 003065E4  7C 85 23 78 */	mr r5, r4
/* 8030A988 003065E8  38 83 15 F4 */	addi r4, r3, 0x15f4
/* 8030A98C 003065EC  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030A990 003065F0  38 C0 00 00 */	li r6, 0
/* 8030A994 003065F4  4B FF F3 9D */	bl VFiPFCACHE_DoWritePage
/* 8030A998 003065F8  7C 03 00 D0 */	neg r0, r3
/* 8030A99C 003065FC  7C 00 1B 78 */	or r0, r0, r3
/* 8030A9A0 00306600  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030A9A4 00306604  7C 63 00 38 */	and r3, r3, r0
/* 8030A9A8 00306608  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030A9AC 0030660C  7C 08 03 A6 */	mtlr r0
/* 8030A9B0 00306610  38 21 00 10 */	addi r1, r1, 0x10
/* 8030A9B4 00306614  4E 80 00 20 */	blr

.global VFiPFCACHE_WriteDataPage
VFiPFCACHE_WriteDataPage:
/* 8030A9B8 00306618  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030A9BC 0030661C  7C 08 02 A6 */	mflr r0
/* 8030A9C0 00306620  7C A6 2B 78 */	mr r6, r5
/* 8030A9C4 00306624  7C 85 23 78 */	mr r5, r4
/* 8030A9C8 00306628  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030A9CC 0030662C  38 83 15 F8 */	addi r4, r3, 0x15f8
/* 8030A9D0 00306630  4B FF F3 61 */	bl VFiPFCACHE_DoWritePage
/* 8030A9D4 00306634  7C 03 00 D0 */	neg r0, r3
/* 8030A9D8 00306638  7C 00 1B 78 */	or r0, r0, r3
/* 8030A9DC 0030663C  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030A9E0 00306640  7C 63 00 38 */	and r3, r3, r0
/* 8030A9E4 00306644  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030A9E8 00306648  7C 08 03 A6 */	mtlr r0
/* 8030A9EC 0030664C  38 21 00 10 */	addi r1, r1, 0x10
/* 8030A9F0 00306650  4E 80 00 20 */	blr

.global VFiPFCACHE_WriteFATSectorAndFreeIfNeeded
VFiPFCACHE_WriteFATSectorAndFreeIfNeeded:
/* 8030A9F4 00306654  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030A9F8 00306658  7C 08 02 A6 */	mflr r0
/* 8030A9FC 0030665C  7C A6 2B 78 */	mr r6, r5
/* 8030AA00 00306660  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030AA04 00306664  80 03 00 08 */	lwz r0, 8(r3)
/* 8030AA08 00306668  7C 05 00 40 */	cmplw r5, r0
/* 8030AA0C 0030666C  41 80 00 0C */	blt lbl_8030AA18
/* 8030AA10 00306670  38 60 00 10 */	li r3, 0x10
/* 8030AA14 00306674  48 00 00 20 */	b lbl_8030AA34
lbl_8030AA18:
/* 8030AA18 00306678  7C 85 23 78 */	mr r5, r4
/* 8030AA1C 0030667C  38 83 15 F4 */	addi r4, r3, 0x15f4
/* 8030AA20 00306680  4B FF F4 91 */	bl VFiPFCACHE_DoWriteSector
/* 8030AA24 00306684  7C 03 00 D0 */	neg r0, r3
/* 8030AA28 00306688  7C 00 1B 78 */	or r0, r0, r3
/* 8030AA2C 0030668C  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030AA30 00306690  7C 63 00 38 */	and r3, r3, r0
lbl_8030AA34:
/* 8030AA34 00306694  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030AA38 00306698  7C 08 03 A6 */	mtlr r0
/* 8030AA3C 0030669C  38 21 00 10 */	addi r1, r1, 0x10
/* 8030AA40 003066A0  4E 80 00 20 */	blr

.global VFiPFCACHE_WriteDataNumSectorAndFreeIfNeeded
VFiPFCACHE_WriteDataNumSectorAndFreeIfNeeded:
/* 8030AA44 003066A4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030AA48 003066A8  7C 08 02 A6 */	mflr r0
/* 8030AA4C 003066AC  7C AA 2B 78 */	mr r10, r5
/* 8030AA50 003066B0  7C C9 33 78 */	mr r9, r6
/* 8030AA54 003066B4  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030AA58 003066B8  7C E8 3B 78 */	mr r8, r7
/* 8030AA5C 003066BC  80 03 00 08 */	lwz r0, 8(r3)
/* 8030AA60 003066C0  7C 05 00 40 */	cmplw r5, r0
/* 8030AA64 003066C4  41 80 00 0C */	blt lbl_8030AA70
/* 8030AA68 003066C8  38 60 00 10 */	li r3, 0x10
/* 8030AA6C 003066CC  48 00 00 28 */	b lbl_8030AA94
lbl_8030AA70:
/* 8030AA70 003066D0  7C 85 23 78 */	mr r5, r4
/* 8030AA74 003066D4  7D 46 53 78 */	mr r6, r10
/* 8030AA78 003066D8  7D 27 4B 78 */	mr r7, r9
/* 8030AA7C 003066DC  38 83 15 F8 */	addi r4, r3, 0x15f8
/* 8030AA80 003066E0  4B FF F5 A1 */	bl VFiPFCACHE_DoWriteNumSectorAndFreeIfNeeded
/* 8030AA84 003066E4  7C 03 00 D0 */	neg r0, r3
/* 8030AA88 003066E8  7C 00 1B 78 */	or r0, r0, r3
/* 8030AA8C 003066EC  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030AA90 003066F0  7C 63 00 38 */	and r3, r3, r0
lbl_8030AA94:
/* 8030AA94 003066F4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030AA98 003066F8  7C 08 03 A6 */	mtlr r0
/* 8030AA9C 003066FC  38 21 00 10 */	addi r1, r1, 0x10
/* 8030AAA0 00306700  4E 80 00 20 */	blr

.global VFiPFCACHE_SearchDataCache
VFiPFCACHE_SearchDataCache:
/* 8030AAA4 00306704  7C 85 23 78 */	mr r5, r4
/* 8030AAA8 00306708  80 83 15 F8 */	lwz r4, 0x15f8(r3)
/* 8030AAAC 0030670C  4B FF E6 AC */	b VFiPFCACHE_SearchForPage

.global VFiPFCACHE_FlushFATCache
VFiPFCACHE_FlushFATCache:
/* 8030AAB0 00306710  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030AAB4 00306714  7C 08 02 A6 */	mflr r0
/* 8030AAB8 00306718  90 01 00 14 */	stw r0, 0x14(r1)
/* 8030AABC 0030671C  80 83 15 F4 */	lwz r4, 0x15f4(r3)
/* 8030AAC0 00306720  4B FF F9 69 */	bl VFiPFCACHE_DoFlushCache
/* 8030AAC4 00306724  7C 03 00 D0 */	neg r0, r3
/* 8030AAC8 00306728  7C 00 1B 78 */	or r0, r0, r3
/* 8030AACC 0030672C  7C 00 FE 70 */	srawi r0, r0, 0x1f
/* 8030AAD0 00306730  7C 63 00 38 */	and r3, r3, r0
/* 8030AAD4 00306734  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8030AAD8 00306738  7C 08 03 A6 */	mtlr r0
/* 8030AADC 0030673C  38 21 00 10 */	addi r1, r1, 0x10
/* 8030AAE0 00306740  4E 80 00 20 */	blr

.global VFiPFCACHE_FlushDataCacheSpecific
VFiPFCACHE_FlushDataCacheSpecific:
/* 8030AAE4 00306744  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8030AAE8 00306748  7C 08 02 A6 */	mflr r0
/* 8030AAEC 0030674C  90 01 00 34 */	stw r0, 0x34(r1)
/* 8030AAF0 00306750  39 61 00 30 */	addi r11, r1, 0x30
/* 8030AAF4 00306754  4B EB C6 2D */	bl _savegpr_25
/* 8030AAF8 00306758  80 03 15 E8 */	lwz r0, 0x15e8(r3)
/* 8030AAFC 0030675C  7C 7E 1B 78 */	mr r30, r3
/* 8030AB00 00306760  7C 9F 23 78 */	mr r31, r4
/* 8030AB04 00306764  3B A0 00 00 */	li r29, 0
/* 8030AB08 00306768  54 00 07 7F */	clrlwi. r0, r0, 0x1d
/* 8030AB0C 0030676C  3B 20 00 00 */	li r25, 0
/* 8030AB10 00306770  41 82 01 18 */	beq lbl_8030AC28
/* 8030AB14 00306774  83 83 15 F8 */	lwz r28, 0x15f8(r3)
/* 8030AB18 00306778  80 1C 00 1C */	lwz r0, 0x1c(r28)
/* 8030AB1C 0030677C  2C 00 00 00 */	cmpwi r0, 0
/* 8030AB20 00306780  41 82 00 0C */	beq lbl_8030AB2C
/* 8030AB24 00306784  7C 00 20 40 */	cmplw r0, r4
/* 8030AB28 00306788  40 82 00 48 */	bne lbl_8030AB70
lbl_8030AB2C:
/* 8030AB2C 0030678C  2C 1C 00 00 */	cmpwi r28, 0
/* 8030AB30 00306790  41 82 00 24 */	beq lbl_8030AB54
/* 8030AB34 00306794  A0 1C 00 00 */	lhz r0, 0(r28)
/* 8030AB38 00306798  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 8030AB3C 0030679C  41 82 00 18 */	beq lbl_8030AB54
/* 8030AB40 003067A0  80 7C 00 18 */	lwz r3, 0x18(r28)
/* 8030AB44 003067A4  3C 03 00 01 */	addis r0, r3, 1
/* 8030AB48 003067A8  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030AB4C 003067AC  41 82 00 08 */	beq lbl_8030AB54
/* 8030AB50 003067B0  3B 20 00 01 */	li r25, 1
lbl_8030AB54:
/* 8030AB54 003067B4  7F C3 F3 78 */	mr r3, r30
/* 8030AB58 003067B8  7F 84 E3 78 */	mr r4, r28
/* 8030AB5C 003067BC  4B FF E7 61 */	bl VFiPFCACHE_FlushPageIfNeeded
/* 8030AB60 003067C0  2C 03 00 00 */	cmpwi r3, 0
/* 8030AB64 003067C4  7C 7D 1B 78 */	mr r29, r3
/* 8030AB68 003067C8  41 82 00 08 */	beq lbl_8030AB70
/* 8030AB6C 003067CC  48 00 00 C0 */	b lbl_8030AC2C
lbl_8030AB70:
/* 8030AB70 003067D0  83 7C 00 20 */	lwz r27, 0x20(r28)
/* 8030AB74 003067D4  48 00 00 88 */	b lbl_8030ABFC
lbl_8030AB78:
/* 8030AB78 003067D8  80 1B 00 1C */	lwz r0, 0x1c(r27)
/* 8030AB7C 003067DC  2C 00 00 00 */	cmpwi r0, 0
/* 8030AB80 003067E0  41 82 00 0C */	beq lbl_8030AB8C
/* 8030AB84 003067E4  7C 00 F8 40 */	cmplw r0, r31
/* 8030AB88 003067E8  40 82 00 70 */	bne lbl_8030ABF8
lbl_8030AB8C:
/* 8030AB8C 003067EC  2C 1B 00 00 */	cmpwi r27, 0
/* 8030AB90 003067F0  3B 40 00 00 */	li r26, 0
/* 8030AB94 003067F4  41 82 00 24 */	beq lbl_8030ABB8
/* 8030AB98 003067F8  A0 1B 00 00 */	lhz r0, 0(r27)
/* 8030AB9C 003067FC  54 00 07 BD */	rlwinm. r0, r0, 0, 0x1e, 0x1e
/* 8030ABA0 00306800  41 82 00 18 */	beq lbl_8030ABB8
/* 8030ABA4 00306804  80 7B 00 18 */	lwz r3, 0x18(r27)
/* 8030ABA8 00306808  3C 03 00 01 */	addis r0, r3, 1
/* 8030ABAC 0030680C  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030ABB0 00306810  41 82 00 08 */	beq lbl_8030ABB8
/* 8030ABB4 00306814  3B 40 00 01 */	li r26, 1
lbl_8030ABB8:
/* 8030ABB8 00306818  7F C3 F3 78 */	mr r3, r30
/* 8030ABBC 0030681C  7F 64 DB 78 */	mr r4, r27
/* 8030ABC0 00306820  4B FF E6 FD */	bl VFiPFCACHE_FlushPageIfNeeded
/* 8030ABC4 00306824  2C 03 00 00 */	cmpwi r3, 0
/* 8030ABC8 00306828  7C 7D 1B 78 */	mr r29, r3
/* 8030ABCC 0030682C  41 82 00 20 */	beq lbl_8030ABEC
/* 8030ABD0 00306830  2C 19 00 00 */	cmpwi r25, 0
/* 8030ABD4 00306834  41 82 00 10 */	beq lbl_8030ABE4
/* 8030ABD8 00306838  7F C3 F3 78 */	mr r3, r30
/* 8030ABDC 0030683C  38 80 00 00 */	li r4, 0
/* 8030ABE0 00306840  48 01 11 C1 */	bl dCommon_FlushFromVol
lbl_8030ABE4:
/* 8030ABE4 00306844  7F A3 EB 78 */	mr r3, r29
/* 8030ABE8 00306848  48 00 00 44 */	b lbl_8030AC2C
lbl_8030ABEC:
/* 8030ABEC 0030684C  2C 1A 00 00 */	cmpwi r26, 0
/* 8030ABF0 00306850  41 82 00 08 */	beq lbl_8030ABF8
/* 8030ABF4 00306854  3B 20 00 01 */	li r25, 1
lbl_8030ABF8:
/* 8030ABF8 00306858  83 7B 00 20 */	lwz r27, 0x20(r27)
lbl_8030ABFC:
/* 8030ABFC 0030685C  7C 1B E0 40 */	cmplw r27, r28
/* 8030AC00 00306860  40 82 FF 78 */	bne lbl_8030AB78
/* 8030AC04 00306864  2C 19 00 00 */	cmpwi r25, 0
/* 8030AC08 00306868  41 82 00 20 */	beq lbl_8030AC28
/* 8030AC0C 0030686C  7F C3 F3 78 */	mr r3, r30
/* 8030AC10 00306870  38 80 00 01 */	li r4, 1
/* 8030AC14 00306874  48 01 11 8D */	bl dCommon_FlushFromVol
/* 8030AC18 00306878  2C 03 00 00 */	cmpwi r3, 0
/* 8030AC1C 0030687C  41 82 00 0C */	beq lbl_8030AC28
/* 8030AC20 00306880  38 60 00 11 */	li r3, 0x11
/* 8030AC24 00306884  48 00 00 08 */	b lbl_8030AC2C
lbl_8030AC28:
/* 8030AC28 00306888  7F A3 EB 78 */	mr r3, r29
lbl_8030AC2C:
/* 8030AC2C 0030688C  39 61 00 30 */	addi r11, r1, 0x30
/* 8030AC30 00306890  4B EB C5 3D */	bl _restgpr_25
/* 8030AC34 00306894  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8030AC38 00306898  7C 08 03 A6 */	mtlr r0
/* 8030AC3C 0030689C  38 21 00 30 */	addi r1, r1, 0x30
/* 8030AC40 003068A0  4E 80 00 20 */	blr

.global VFiPFCACHE_FreeAllCaches
VFiPFCACHE_FreeAllCaches:
/* 8030AC44 003068A4  38 E0 00 00 */	li r7, 0
/* 8030AC48 003068A8  38 C0 FF FF */	li r6, -1
/* 8030AC4C 003068AC  48 00 00 84 */	b lbl_8030ACD0
lbl_8030AC50:
/* 8030AC50 003068B0  2C 08 00 00 */	cmpwi r8, 0
/* 8030AC54 003068B4  41 82 00 7C */	beq lbl_8030ACD0
/* 8030AC58 003068B8  A0 08 00 00 */	lhz r0, 0(r8)
/* 8030AC5C 003068BC  54 00 04 3A */	rlwinm r0, r0, 0, 0x10, 0x1d
/* 8030AC60 003068C0  B0 08 00 00 */	sth r0, 0(r8)
/* 8030AC64 003068C4  90 E8 00 0C */	stw r7, 0xc(r8)
/* 8030AC68 003068C8  90 E8 00 10 */	stw r7, 0x10(r8)
/* 8030AC6C 003068CC  90 C8 00 18 */	stw r6, 0x18(r8)
/* 8030AC70 003068D0  90 E8 00 1C */	stw r7, 0x1c(r8)
/* 8030AC74 003068D4  80 83 15 F4 */	lwz r4, 0x15f4(r3)
/* 8030AC78 003068D8  7C 08 20 40 */	cmplw r8, r4
/* 8030AC7C 003068DC  40 82 00 10 */	bne lbl_8030AC8C
/* 8030AC80 003068E0  80 08 00 20 */	lwz r0, 0x20(r8)
/* 8030AC84 003068E4  90 03 15 F4 */	stw r0, 0x15f4(r3)
/* 8030AC88 003068E8  48 00 00 48 */	b lbl_8030ACD0
lbl_8030AC8C:
/* 8030AC8C 003068EC  80 04 00 24 */	lwz r0, 0x24(r4)
/* 8030AC90 003068F0  7C 08 00 40 */	cmplw r8, r0
/* 8030AC94 003068F4  41 82 00 3C */	beq lbl_8030ACD0
/* 8030AC98 003068F8  80 08 00 20 */	lwz r0, 0x20(r8)
/* 8030AC9C 003068FC  80 88 00 24 */	lwz r4, 0x24(r8)
/* 8030ACA0 00306900  90 04 00 20 */	stw r0, 0x20(r4)
/* 8030ACA4 00306904  80 08 00 24 */	lwz r0, 0x24(r8)
/* 8030ACA8 00306908  80 88 00 20 */	lwz r4, 0x20(r8)
/* 8030ACAC 0030690C  90 04 00 24 */	stw r0, 0x24(r4)
/* 8030ACB0 00306910  80 A3 15 F4 */	lwz r5, 0x15f4(r3)
/* 8030ACB4 00306914  90 A8 00 20 */	stw r5, 0x20(r8)
/* 8030ACB8 00306918  80 83 15 F4 */	lwz r4, 0x15f4(r3)
/* 8030ACBC 0030691C  80 04 00 24 */	lwz r0, 0x24(r4)
/* 8030ACC0 00306920  90 08 00 24 */	stw r0, 0x24(r8)
/* 8030ACC4 00306924  91 05 00 24 */	stw r8, 0x24(r5)
/* 8030ACC8 00306928  80 88 00 24 */	lwz r4, 0x24(r8)
/* 8030ACCC 0030692C  91 04 00 20 */	stw r8, 0x20(r4)
lbl_8030ACD0:
/* 8030ACD0 00306930  81 03 15 F4 */	lwz r8, 0x15f4(r3)
/* 8030ACD4 00306934  A0 08 00 00 */	lhz r0, 0(r8)
/* 8030ACD8 00306938  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8030ACDC 0030693C  40 82 FF 74 */	bne lbl_8030AC50
/* 8030ACE0 00306940  38 E0 00 00 */	li r7, 0
/* 8030ACE4 00306944  38 C0 FF FF */	li r6, -1
/* 8030ACE8 00306948  48 00 00 84 */	b lbl_8030AD6C
lbl_8030ACEC:
/* 8030ACEC 0030694C  2C 08 00 00 */	cmpwi r8, 0
/* 8030ACF0 00306950  41 82 00 7C */	beq lbl_8030AD6C
/* 8030ACF4 00306954  A0 08 00 00 */	lhz r0, 0(r8)
/* 8030ACF8 00306958  54 00 04 3A */	rlwinm r0, r0, 0, 0x10, 0x1d
/* 8030ACFC 0030695C  B0 08 00 00 */	sth r0, 0(r8)
/* 8030AD00 00306960  90 E8 00 0C */	stw r7, 0xc(r8)
/* 8030AD04 00306964  90 E8 00 10 */	stw r7, 0x10(r8)
/* 8030AD08 00306968  90 C8 00 18 */	stw r6, 0x18(r8)
/* 8030AD0C 0030696C  90 E8 00 1C */	stw r7, 0x1c(r8)
/* 8030AD10 00306970  80 83 15 F8 */	lwz r4, 0x15f8(r3)
/* 8030AD14 00306974  7C 08 20 40 */	cmplw r8, r4
/* 8030AD18 00306978  40 82 00 10 */	bne lbl_8030AD28
/* 8030AD1C 0030697C  80 08 00 20 */	lwz r0, 0x20(r8)
/* 8030AD20 00306980  90 03 15 F8 */	stw r0, 0x15f8(r3)
/* 8030AD24 00306984  48 00 00 48 */	b lbl_8030AD6C
lbl_8030AD28:
/* 8030AD28 00306988  80 04 00 24 */	lwz r0, 0x24(r4)
/* 8030AD2C 0030698C  7C 08 00 40 */	cmplw r8, r0
/* 8030AD30 00306990  41 82 00 3C */	beq lbl_8030AD6C
/* 8030AD34 00306994  80 08 00 20 */	lwz r0, 0x20(r8)
/* 8030AD38 00306998  80 88 00 24 */	lwz r4, 0x24(r8)
/* 8030AD3C 0030699C  90 04 00 20 */	stw r0, 0x20(r4)
/* 8030AD40 003069A0  80 08 00 24 */	lwz r0, 0x24(r8)
/* 8030AD44 003069A4  80 88 00 20 */	lwz r4, 0x20(r8)
/* 8030AD48 003069A8  90 04 00 24 */	stw r0, 0x24(r4)
/* 8030AD4C 003069AC  80 A3 15 F8 */	lwz r5, 0x15f8(r3)
/* 8030AD50 003069B0  90 A8 00 20 */	stw r5, 0x20(r8)
/* 8030AD54 003069B4  80 83 15 F8 */	lwz r4, 0x15f8(r3)
/* 8030AD58 003069B8  80 04 00 24 */	lwz r0, 0x24(r4)
/* 8030AD5C 003069BC  90 08 00 24 */	stw r0, 0x24(r8)
/* 8030AD60 003069C0  91 05 00 24 */	stw r8, 0x24(r5)
/* 8030AD64 003069C4  80 88 00 24 */	lwz r4, 0x24(r8)
/* 8030AD68 003069C8  91 04 00 20 */	stw r8, 0x20(r4)
lbl_8030AD6C:
/* 8030AD6C 003069CC  81 03 15 F8 */	lwz r8, 0x15f8(r3)
/* 8030AD70 003069D0  A0 08 00 00 */	lhz r0, 0(r8)
/* 8030AD74 003069D4  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8030AD78 003069D8  40 82 FF 74 */	bne lbl_8030ACEC
/* 8030AD7C 003069DC  4E 80 00 20 */	blr