diff options
Diffstat (limited to 'asm/SDK/VF')
-rw-r--r-- | asm/SDK/VF/pdm_bpb.s | 597 | ||||
-rw-r--r-- | asm/SDK/VF/pdm_disk.s | 1037 | ||||
-rw-r--r-- | asm/SDK/VF/pdm_dskmng.s | 80 | ||||
-rw-r--r-- | asm/SDK/VF/pdm_mbr.s | 434 | ||||
-rw-r--r-- | asm/SDK/VF/pdm_partition.s | 1143 | ||||
-rw-r--r-- | asm/SDK/VF/pf_api_util.s | 115 | ||||
-rw-r--r-- | asm/SDK/VF/pf_cache.s | 2223 | ||||
-rw-r--r-- | asm/SDK/VF/pf_clib.s | 246 | ||||
-rw-r--r-- | asm/SDK/VF/pf_cluster.s | 350 | ||||
-rw-r--r-- | asm/SDK/VF/pf_code.s | 16 | ||||
-rw-r--r-- | asm/SDK/VF/pf_cp932.s | 381 | ||||
-rw-r--r-- | asm/SDK/VF/pf_dir.s | 43 | ||||
-rw-r--r-- | asm/SDK/VF/pf_driver.s | 726 | ||||
-rw-r--r-- | asm/SDK/VF/pf_entry.s | 1818 | ||||
-rw-r--r-- | asm/SDK/VF/pf_entry_iterator.s | 1818 | ||||
-rw-r--r-- | asm/SDK/VF/pf_fat.s | 3313 | ||||
-rw-r--r-- | asm/SDK/VF/pf_fat12.s | 784 | ||||
-rw-r--r-- | asm/SDK/VF/pf_fat16.s | 398 | ||||
-rw-r--r-- | asm/SDK/VF/pf_fat32.s | 449 | ||||
-rw-r--r-- | asm/SDK/VF/pf_fatfs.s | 7 | ||||
-rw-r--r-- | asm/SDK/VF/pf_file.s | 3785 | ||||
-rw-r--r-- | asm/SDK/VF/pf_path.s | 3324 | ||||
-rw-r--r-- | asm/SDK/VF/pf_sector.s | 507 | ||||
-rw-r--r-- | asm/SDK/VF/pf_service.s | 87 | ||||
-rw-r--r-- | asm/SDK/VF/pf_str.s | 439 | ||||
-rw-r--r-- | asm/SDK/VF/pf_volume.s | 877 | ||||
-rw-r--r-- | asm/SDK/VF/pf_w_clib.s | 57 |
27 files changed, 25054 insertions, 0 deletions
diff --git a/asm/SDK/VF/pdm_bpb.s b/asm/SDK/VF/pdm_bpb.s new file mode 100644 index 0000000..b9f7e63 --- /dev/null +++ b/asm/SDK/VF/pdm_bpb.s @@ -0,0 +1,597 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFipdm_bpb_calculate_common_bpb_fields
+VFipdm_bpb_calculate_common_bpb_fields:
+/* 803062C4 00301F24 38 00 00 00 */ li r0, 0
+/* 803062C8 00301F28 A0 A3 00 08 */ lhz r5, 8(r3)
+/* 803062CC 00301F2C 98 03 00 54 */ stb r0, 0x54(r3)
+/* 803062D0 00301F30 48 00 00 10 */ b lbl_803062E0
+lbl_803062D4:
+/* 803062D4 00301F34 88 83 00 54 */ lbz r4, 0x54(r3)
+/* 803062D8 00301F38 38 04 00 01 */ addi r0, r4, 1
+/* 803062DC 00301F3C 98 03 00 54 */ stb r0, 0x54(r3)
+lbl_803062E0:
+/* 803062E0 00301F40 54 A5 FC 7F */ rlwinm. r5, r5, 0x1f, 0x11, 0x1f
+/* 803062E4 00301F44 40 82 FF F0 */ bne lbl_803062D4
+/* 803062E8 00301F48 38 00 00 00 */ li r0, 0
+/* 803062EC 00301F4C 88 A3 00 0A */ lbz r5, 0xa(r3)
+/* 803062F0 00301F50 98 03 00 55 */ stb r0, 0x55(r3)
+/* 803062F4 00301F54 48 00 00 10 */ b lbl_80306304
+lbl_803062F8:
+/* 803062F8 00301F58 88 83 00 55 */ lbz r4, 0x55(r3)
+/* 803062FC 00301F5C 38 04 00 01 */ addi r0, r4, 1
+/* 80306300 00301F60 98 03 00 55 */ stb r0, 0x55(r3)
+lbl_80306304:
+/* 80306304 00301F64 54 A5 FC 7F */ rlwinm. r5, r5, 0x1f, 0x11, 0x1f
+/* 80306308 00301F68 40 82 FF F0 */ bne lbl_803062F8
+/* 8030630C 00301F6C A0 03 00 0E */ lhz r0, 0xe(r3)
+/* 80306310 00301F70 A0 A3 00 08 */ lhz r5, 8(r3)
+/* 80306314 00301F74 54 06 28 34 */ slwi r6, r0, 5
+/* 80306318 00301F78 88 83 00 0B */ lbz r4, 0xb(r3)
+/* 8030631C 00301F7C 80 03 00 6C */ lwz r0, 0x6c(r3)
+/* 80306320 00301F80 7C A5 32 14 */ add r5, r5, r6
+/* 80306324 00301F84 88 E3 00 54 */ lbz r7, 0x54(r3)
+/* 80306328 00301F88 39 05 FF FF */ addi r8, r5, -1
+/* 8030632C 00301F8C 7C C4 01 D6 */ mullw r6, r4, r0
+/* 80306330 00301F90 A0 A3 00 0C */ lhz r5, 0xc(r3)
+/* 80306334 00301F94 7D 08 3E 30 */ sraw r8, r8, r7
+/* 80306338 00301F98 80 83 00 68 */ lwz r4, 0x68(r3)
+/* 8030633C 00301F9C 88 03 00 55 */ lbz r0, 0x55(r3)
+/* 80306340 00301FA0 55 07 04 3E */ clrlwi r7, r8, 0x10
+/* 80306344 00301FA4 7C A7 2A 14 */ add r5, r7, r5
+/* 80306348 00301FA8 B1 03 00 56 */ sth r8, 0x56(r3)
+/* 8030634C 00301FAC 7C A6 2A 14 */ add r5, r6, r5
+/* 80306350 00301FB0 7C 85 20 50 */ subf r4, r5, r4
+/* 80306354 00301FB4 90 A3 00 60 */ stw r5, 0x60(r3)
+/* 80306358 00301FB8 7C 80 04 30 */ srw r0, r4, r0
+/* 8030635C 00301FBC 28 00 0F F5 */ cmplwi r0, 0xff5
+/* 80306360 00301FC0 90 03 00 64 */ stw r0, 0x64(r3)
+/* 80306364 00301FC4 40 80 00 10 */ bge lbl_80306374
+/* 80306368 00301FC8 38 00 00 00 */ li r0, 0
+/* 8030636C 00301FCC 90 03 00 50 */ stw r0, 0x50(r3)
+/* 80306370 00301FD0 4E 80 00 20 */ blr
+lbl_80306374:
+/* 80306374 00301FD4 28 00 FF F5 */ cmplwi r0, 0xfff5
+/* 80306378 00301FD8 40 80 00 10 */ bge lbl_80306388
+/* 8030637C 00301FDC 38 00 00 01 */ li r0, 1
+/* 80306380 00301FE0 90 03 00 50 */ stw r0, 0x50(r3)
+/* 80306384 00301FE4 4E 80 00 20 */ blr
+lbl_80306388:
+/* 80306388 00301FE8 38 00 00 02 */ li r0, 2
+/* 8030638C 00301FEC 90 03 00 50 */ stw r0, 0x50(r3)
+/* 80306390 00301FF0 4E 80 00 20 */ blr
+
+.global VFipdm_bpb_get_bpb_information
+VFipdm_bpb_get_bpb_information:
+/* 80306394 00301FF4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80306398 00301FF8 7C 08 02 A6 */ mflr r0
+/* 8030639C 00301FFC 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 803063A0 00302000 90 01 00 24 */ stw r0, 0x24(r1)
+/* 803063A4 00302004 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 803063A8 00302008 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 803063AC 0030200C 7C 9E 23 78 */ mr r30, r4
+/* 803063B0 00302010 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 803063B4 00302014 7C 7D 1B 78 */ mr r29, r3
+/* 803063B8 00302018 41 86 00 0C */ beq cr1, lbl_803063C4
+/* 803063BC 0030201C 2C 04 00 00 */ cmpwi r4, 0
+/* 803063C0 00302020 40 82 00 0C */ bne lbl_803063CC
+lbl_803063C4:
+/* 803063C4 00302024 38 60 00 01 */ li r3, 1
+/* 803063C8 00302028 48 00 04 E8 */ b lbl_803068B0
+lbl_803063CC:
+/* 803063CC 0030202C 3B E0 00 00 */ li r31, 0
+/* 803063D0 00302030 41 86 00 24 */ beq cr1, lbl_803063F4
+/* 803063D4 00302034 34 04 00 4C */ addic. r0, r4, 0x4c
+/* 803063D8 00302038 41 82 00 1C */ beq lbl_803063F4
+/* 803063DC 0030203C 88 03 00 00 */ lbz r0, 0(r3)
+/* 803063E0 00302040 98 04 00 4C */ stb r0, 0x4c(r4)
+/* 803063E4 00302044 88 03 00 01 */ lbz r0, 1(r3)
+/* 803063E8 00302048 98 04 00 4D */ stb r0, 0x4d(r4)
+/* 803063EC 0030204C 88 03 00 02 */ lbz r0, 2(r3)
+/* 803063F0 00302050 98 04 00 4E */ stb r0, 0x4e(r4)
+lbl_803063F4:
+/* 803063F4 00302054 34 03 00 03 */ addic. r0, r3, 3
+/* 803063F8 00302058 41 82 00 4C */ beq lbl_80306444
+/* 803063FC 0030205C 2C 04 00 00 */ cmpwi r4, 0
+/* 80306400 00302060 41 82 00 44 */ beq lbl_80306444
+/* 80306404 00302064 88 03 00 03 */ lbz r0, 3(r3)
+/* 80306408 00302068 98 04 00 00 */ stb r0, 0(r4)
+/* 8030640C 0030206C 88 03 00 04 */ lbz r0, 4(r3)
+/* 80306410 00302070 98 04 00 01 */ stb r0, 1(r4)
+/* 80306414 00302074 88 03 00 05 */ lbz r0, 5(r3)
+/* 80306418 00302078 98 04 00 02 */ stb r0, 2(r4)
+/* 8030641C 0030207C 88 03 00 06 */ lbz r0, 6(r3)
+/* 80306420 00302080 98 04 00 03 */ stb r0, 3(r4)
+/* 80306424 00302084 88 03 00 07 */ lbz r0, 7(r3)
+/* 80306428 00302088 98 04 00 04 */ stb r0, 4(r4)
+/* 8030642C 0030208C 88 03 00 08 */ lbz r0, 8(r3)
+/* 80306430 00302090 98 04 00 05 */ stb r0, 5(r4)
+/* 80306434 00302094 88 03 00 09 */ lbz r0, 9(r3)
+/* 80306438 00302098 98 04 00 06 */ stb r0, 6(r4)
+/* 8030643C 0030209C 88 03 00 0A */ lbz r0, 0xa(r3)
+/* 80306440 003020A0 98 04 00 07 */ stb r0, 7(r4)
+lbl_80306444:
+/* 80306444 003020A4 88 A3 00 0C */ lbz r5, 0xc(r3)
+/* 80306448 003020A8 88 03 00 0B */ lbz r0, 0xb(r3)
+/* 8030644C 003020AC 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 80306450 003020B0 B0 04 00 08 */ sth r0, 8(r4)
+/* 80306454 003020B4 88 03 00 0D */ lbz r0, 0xd(r3)
+/* 80306458 003020B8 98 04 00 0A */ stb r0, 0xa(r4)
+/* 8030645C 003020BC 88 A3 00 0F */ lbz r5, 0xf(r3)
+/* 80306460 003020C0 88 03 00 0E */ lbz r0, 0xe(r3)
+/* 80306464 003020C4 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 80306468 003020C8 B0 04 00 0C */ sth r0, 0xc(r4)
+/* 8030646C 003020CC 88 03 00 10 */ lbz r0, 0x10(r3)
+/* 80306470 003020D0 98 04 00 0B */ stb r0, 0xb(r4)
+/* 80306474 003020D4 88 A3 00 12 */ lbz r5, 0x12(r3)
+/* 80306478 003020D8 88 03 00 11 */ lbz r0, 0x11(r3)
+/* 8030647C 003020DC 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 80306480 003020E0 B0 04 00 0E */ sth r0, 0xe(r4)
+/* 80306484 003020E4 88 03 00 14 */ lbz r0, 0x14(r3)
+/* 80306488 003020E8 88 E3 00 13 */ lbz r7, 0x13(r3)
+/* 8030648C 003020EC 50 07 44 2F */ rlwimi. r7, r0, 8, 0x10, 0x17
+/* 80306490 003020F0 B0 E4 00 10 */ sth r7, 0x10(r4)
+/* 80306494 003020F4 88 03 00 15 */ lbz r0, 0x15(r3)
+/* 80306498 003020F8 98 04 00 22 */ stb r0, 0x22(r4)
+/* 8030649C 003020FC 88 A3 00 17 */ lbz r5, 0x17(r3)
+/* 803064A0 00302100 88 03 00 16 */ lbz r0, 0x16(r3)
+/* 803064A4 00302104 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 803064A8 00302108 B0 04 00 12 */ sth r0, 0x12(r4)
+/* 803064AC 0030210C 88 A3 00 19 */ lbz r5, 0x19(r3)
+/* 803064B0 00302110 88 03 00 18 */ lbz r0, 0x18(r3)
+/* 803064B4 00302114 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 803064B8 00302118 B0 04 00 14 */ sth r0, 0x14(r4)
+/* 803064BC 0030211C 88 A3 00 1B */ lbz r5, 0x1b(r3)
+/* 803064C0 00302120 88 03 00 1A */ lbz r0, 0x1a(r3)
+/* 803064C4 00302124 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 803064C8 00302128 B0 04 00 20 */ sth r0, 0x20(r4)
+/* 803064CC 0030212C 88 A3 00 1D */ lbz r5, 0x1d(r3)
+/* 803064D0 00302130 88 03 00 1C */ lbz r0, 0x1c(r3)
+/* 803064D4 00302134 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 803064D8 00302138 88 C3 00 1E */ lbz r6, 0x1e(r3)
+/* 803064DC 0030213C 88 A3 00 1F */ lbz r5, 0x1f(r3)
+/* 803064E0 00302140 50 C0 82 1E */ rlwimi r0, r6, 0x10, 8, 0xf
+/* 803064E4 00302144 50 A0 C0 0E */ rlwimi r0, r5, 0x18, 0, 7
+/* 803064E8 00302148 90 04 00 18 */ stw r0, 0x18(r4)
+/* 803064EC 0030214C 88 A3 00 21 */ lbz r5, 0x21(r3)
+/* 803064F0 00302150 88 03 00 20 */ lbz r0, 0x20(r3)
+/* 803064F4 00302154 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 803064F8 00302158 88 C3 00 22 */ lbz r6, 0x22(r3)
+/* 803064FC 0030215C 88 A3 00 23 */ lbz r5, 0x23(r3)
+/* 80306500 00302160 50 C0 82 1E */ rlwimi r0, r6, 0x10, 8, 0xf
+/* 80306504 00302164 50 A0 C0 0E */ rlwimi r0, r5, 0x18, 0, 7
+/* 80306508 00302168 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 8030650C 0030216C 40 82 00 08 */ bne lbl_80306514
+/* 80306510 00302170 48 00 00 08 */ b lbl_80306518
+lbl_80306514:
+/* 80306514 00302174 54 E0 04 3E */ clrlwi r0, r7, 0x10
+lbl_80306518:
+/* 80306518 00302178 A0 A4 00 12 */ lhz r5, 0x12(r4)
+/* 8030651C 0030217C 90 04 00 68 */ stw r0, 0x68(r4)
+/* 80306520 00302180 2C 05 00 00 */ cmpwi r5, 0
+/* 80306524 00302184 40 82 00 2C */ bne lbl_80306550
+/* 80306528 00302188 88 A3 00 25 */ lbz r5, 0x25(r3)
+/* 8030652C 0030218C 88 03 00 24 */ lbz r0, 0x24(r3)
+/* 80306530 00302190 88 C3 00 26 */ lbz r6, 0x26(r3)
+/* 80306534 00302194 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 80306538 00302198 88 63 00 27 */ lbz r3, 0x27(r3)
+/* 8030653C 0030219C 50 C0 82 1E */ rlwimi r0, r6, 0x10, 8, 0xf
+/* 80306540 003021A0 50 60 C0 0E */ rlwimi r0, r3, 0x18, 0, 7
+/* 80306544 003021A4 90 04 00 3C */ stw r0, 0x3c(r4)
+/* 80306548 003021A8 90 04 00 6C */ stw r0, 0x6c(r4)
+/* 8030654C 003021AC 48 00 00 10 */ b lbl_8030655C
+lbl_80306550:
+/* 80306550 003021B0 38 00 00 00 */ li r0, 0
+/* 80306554 003021B4 90 A4 00 6C */ stw r5, 0x6c(r4)
+/* 80306558 003021B8 90 04 00 3C */ stw r0, 0x3c(r4)
+lbl_8030655C:
+/* 8030655C 003021BC 7F C3 F3 78 */ mr r3, r30
+/* 80306560 003021C0 4B FF FD 65 */ bl VFipdm_bpb_calculate_common_bpb_fields
+/* 80306564 003021C4 80 1E 00 50 */ lwz r0, 0x50(r30)
+/* 80306568 003021C8 2C 00 00 02 */ cmpwi r0, 2
+/* 8030656C 003021CC 41 82 01 28 */ beq lbl_80306694
+/* 80306570 003021D0 40 80 02 9C */ bge lbl_8030680C
+/* 80306574 003021D4 2C 00 00 00 */ cmpwi r0, 0
+/* 80306578 003021D8 40 80 00 08 */ bge lbl_80306580
+/* 8030657C 003021DC 48 00 02 90 */ b lbl_8030680C
+lbl_80306580:
+/* 80306580 003021E0 A0 1E 00 12 */ lhz r0, 0x12(r30)
+/* 80306584 003021E4 2C 00 00 00 */ cmpwi r0, 0
+/* 80306588 003021E8 40 82 00 08 */ bne lbl_80306590
+/* 8030658C 003021EC 3B E0 00 04 */ li r31, 4
+lbl_80306590:
+/* 80306590 003021F0 38 60 00 00 */ li r3, 0
+/* 80306594 003021F4 34 1D 00 2B */ addic. r0, r29, 0x2b
+/* 80306598 003021F8 B0 7E 00 40 */ sth r3, 0x40(r30)
+/* 8030659C 003021FC B0 7E 00 42 */ sth r3, 0x42(r30)
+/* 803065A0 00302200 90 7E 00 44 */ stw r3, 0x44(r30)
+/* 803065A4 00302204 B0 7E 00 48 */ sth r3, 0x48(r30)
+/* 803065A8 00302208 B0 7E 00 4A */ sth r3, 0x4a(r30)
+/* 803065AC 0030220C 88 1D 00 24 */ lbz r0, 0x24(r29)
+/* 803065B0 00302210 98 1E 00 23 */ stb r0, 0x23(r30)
+/* 803065B4 00302214 88 1D 00 26 */ lbz r0, 0x26(r29)
+/* 803065B8 00302218 98 1E 00 28 */ stb r0, 0x28(r30)
+/* 803065BC 0030221C 88 7D 00 28 */ lbz r3, 0x28(r29)
+/* 803065C0 00302220 88 1D 00 27 */ lbz r0, 0x27(r29)
+/* 803065C4 00302224 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 803065C8 00302228 88 9D 00 29 */ lbz r4, 0x29(r29)
+/* 803065CC 0030222C 88 7D 00 2A */ lbz r3, 0x2a(r29)
+/* 803065D0 00302230 50 80 82 1E */ rlwimi r0, r4, 0x10, 8, 0xf
+/* 803065D4 00302234 50 60 C0 0E */ rlwimi r0, r3, 0x18, 0, 7
+/* 803065D8 00302238 90 1E 00 24 */ stw r0, 0x24(r30)
+/* 803065DC 0030223C 41 82 00 64 */ beq lbl_80306640
+/* 803065E0 00302240 34 1E 00 29 */ addic. r0, r30, 0x29
+/* 803065E4 00302244 41 82 00 5C */ beq lbl_80306640
+/* 803065E8 00302248 88 1D 00 2B */ lbz r0, 0x2b(r29)
+/* 803065EC 0030224C 98 1E 00 29 */ stb r0, 0x29(r30)
+/* 803065F0 00302250 88 1D 00 2C */ lbz r0, 0x2c(r29)
+/* 803065F4 00302254 98 1E 00 2A */ stb r0, 0x2a(r30)
+/* 803065F8 00302258 88 1D 00 2D */ lbz r0, 0x2d(r29)
+/* 803065FC 0030225C 98 1E 00 2B */ stb r0, 0x2b(r30)
+/* 80306600 00302260 88 1D 00 2E */ lbz r0, 0x2e(r29)
+/* 80306604 00302264 98 1E 00 2C */ stb r0, 0x2c(r30)
+/* 80306608 00302268 88 1D 00 2F */ lbz r0, 0x2f(r29)
+/* 8030660C 0030226C 98 1E 00 2D */ stb r0, 0x2d(r30)
+/* 80306610 00302270 88 1D 00 30 */ lbz r0, 0x30(r29)
+/* 80306614 00302274 98 1E 00 2E */ stb r0, 0x2e(r30)
+/* 80306618 00302278 88 1D 00 31 */ lbz r0, 0x31(r29)
+/* 8030661C 0030227C 98 1E 00 2F */ stb r0, 0x2f(r30)
+/* 80306620 00302280 88 1D 00 32 */ lbz r0, 0x32(r29)
+/* 80306624 00302284 98 1E 00 30 */ stb r0, 0x30(r30)
+/* 80306628 00302288 88 1D 00 33 */ lbz r0, 0x33(r29)
+/* 8030662C 0030228C 98 1E 00 31 */ stb r0, 0x31(r30)
+/* 80306630 00302290 88 1D 00 34 */ lbz r0, 0x34(r29)
+/* 80306634 00302294 98 1E 00 32 */ stb r0, 0x32(r30)
+/* 80306638 00302298 88 1D 00 35 */ lbz r0, 0x35(r29)
+/* 8030663C 0030229C 98 1E 00 33 */ stb r0, 0x33(r30)
+lbl_80306640:
+/* 80306640 003022A0 34 1D 00 36 */ addic. r0, r29, 0x36
+/* 80306644 003022A4 41 82 01 CC */ beq lbl_80306810
+/* 80306648 003022A8 34 1E 00 34 */ addic. r0, r30, 0x34
+/* 8030664C 003022AC 41 82 01 C4 */ beq lbl_80306810
+/* 80306650 003022B0 88 1D 00 36 */ lbz r0, 0x36(r29)
+/* 80306654 003022B4 98 1E 00 34 */ stb r0, 0x34(r30)
+/* 80306658 003022B8 88 1D 00 37 */ lbz r0, 0x37(r29)
+/* 8030665C 003022BC 98 1E 00 35 */ stb r0, 0x35(r30)
+/* 80306660 003022C0 88 1D 00 38 */ lbz r0, 0x38(r29)
+/* 80306664 003022C4 98 1E 00 36 */ stb r0, 0x36(r30)
+/* 80306668 003022C8 88 1D 00 39 */ lbz r0, 0x39(r29)
+/* 8030666C 003022CC 98 1E 00 37 */ stb r0, 0x37(r30)
+/* 80306670 003022D0 88 1D 00 3A */ lbz r0, 0x3a(r29)
+/* 80306674 003022D4 98 1E 00 38 */ stb r0, 0x38(r30)
+/* 80306678 003022D8 88 1D 00 3B */ lbz r0, 0x3b(r29)
+/* 8030667C 003022DC 98 1E 00 39 */ stb r0, 0x39(r30)
+/* 80306680 003022E0 88 1D 00 3C */ lbz r0, 0x3c(r29)
+/* 80306684 003022E4 98 1E 00 3A */ stb r0, 0x3a(r30)
+/* 80306688 003022E8 88 1D 00 3D */ lbz r0, 0x3d(r29)
+/* 8030668C 003022EC 98 1E 00 3B */ stb r0, 0x3b(r30)
+/* 80306690 003022F0 48 00 01 80 */ b lbl_80306810
+lbl_80306694:
+/* 80306694 003022F4 A0 1E 00 10 */ lhz r0, 0x10(r30)
+/* 80306698 003022F8 2C 00 00 00 */ cmpwi r0, 0
+/* 8030669C 003022FC 40 82 00 10 */ bne lbl_803066AC
+/* 803066A0 00302300 A0 1E 00 12 */ lhz r0, 0x12(r30)
+/* 803066A4 00302304 2C 00 00 00 */ cmpwi r0, 0
+/* 803066A8 00302308 41 82 00 08 */ beq lbl_803066B0
+lbl_803066AC:
+/* 803066AC 0030230C 3B E0 00 04 */ li r31, 4
+lbl_803066B0:
+/* 803066B0 00302310 34 1D 00 47 */ addic. r0, r29, 0x47
+/* 803066B4 00302314 88 7D 00 29 */ lbz r3, 0x29(r29)
+/* 803066B8 00302318 88 1D 00 28 */ lbz r0, 0x28(r29)
+/* 803066BC 0030231C 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 803066C0 00302320 B0 1E 00 40 */ sth r0, 0x40(r30)
+/* 803066C4 00302324 88 7D 00 2B */ lbz r3, 0x2b(r29)
+/* 803066C8 00302328 88 1D 00 2A */ lbz r0, 0x2a(r29)
+/* 803066CC 0030232C 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 803066D0 00302330 B0 1E 00 42 */ sth r0, 0x42(r30)
+/* 803066D4 00302334 88 7D 00 2D */ lbz r3, 0x2d(r29)
+/* 803066D8 00302338 88 1D 00 2C */ lbz r0, 0x2c(r29)
+/* 803066DC 0030233C 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 803066E0 00302340 88 9D 00 2E */ lbz r4, 0x2e(r29)
+/* 803066E4 00302344 88 7D 00 2F */ lbz r3, 0x2f(r29)
+/* 803066E8 00302348 50 80 82 1E */ rlwimi r0, r4, 0x10, 8, 0xf
+/* 803066EC 0030234C 50 60 C0 0E */ rlwimi r0, r3, 0x18, 0, 7
+/* 803066F0 00302350 90 1E 00 44 */ stw r0, 0x44(r30)
+/* 803066F4 00302354 88 7D 00 31 */ lbz r3, 0x31(r29)
+/* 803066F8 00302358 88 1D 00 30 */ lbz r0, 0x30(r29)
+/* 803066FC 0030235C 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 80306700 00302360 B0 1E 00 48 */ sth r0, 0x48(r30)
+/* 80306704 00302364 88 7D 00 33 */ lbz r3, 0x33(r29)
+/* 80306708 00302368 88 1D 00 32 */ lbz r0, 0x32(r29)
+/* 8030670C 0030236C 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 80306710 00302370 B0 1E 00 4A */ sth r0, 0x4a(r30)
+/* 80306714 00302374 88 1D 00 40 */ lbz r0, 0x40(r29)
+/* 80306718 00302378 98 1E 00 23 */ stb r0, 0x23(r30)
+/* 8030671C 0030237C 88 1D 00 42 */ lbz r0, 0x42(r29)
+/* 80306720 00302380 98 1E 00 28 */ stb r0, 0x28(r30)
+/* 80306724 00302384 88 7D 00 44 */ lbz r3, 0x44(r29)
+/* 80306728 00302388 88 1D 00 43 */ lbz r0, 0x43(r29)
+/* 8030672C 0030238C 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 80306730 00302390 88 9D 00 45 */ lbz r4, 0x45(r29)
+/* 80306734 00302394 88 7D 00 46 */ lbz r3, 0x46(r29)
+/* 80306738 00302398 50 80 82 1E */ rlwimi r0, r4, 0x10, 8, 0xf
+/* 8030673C 0030239C 50 60 C0 0E */ rlwimi r0, r3, 0x18, 0, 7
+/* 80306740 003023A0 90 1E 00 24 */ stw r0, 0x24(r30)
+/* 80306744 003023A4 41 82 00 64 */ beq lbl_803067A8
+/* 80306748 003023A8 34 1E 00 29 */ addic. r0, r30, 0x29
+/* 8030674C 003023AC 41 82 00 5C */ beq lbl_803067A8
+/* 80306750 003023B0 88 1D 00 47 */ lbz r0, 0x47(r29)
+/* 80306754 003023B4 98 1E 00 29 */ stb r0, 0x29(r30)
+/* 80306758 003023B8 88 1D 00 48 */ lbz r0, 0x48(r29)
+/* 8030675C 003023BC 98 1E 00 2A */ stb r0, 0x2a(r30)
+/* 80306760 003023C0 88 1D 00 49 */ lbz r0, 0x49(r29)
+/* 80306764 003023C4 98 1E 00 2B */ stb r0, 0x2b(r30)
+/* 80306768 003023C8 88 1D 00 4A */ lbz r0, 0x4a(r29)
+/* 8030676C 003023CC 98 1E 00 2C */ stb r0, 0x2c(r30)
+/* 80306770 003023D0 88 1D 00 4B */ lbz r0, 0x4b(r29)
+/* 80306774 003023D4 98 1E 00 2D */ stb r0, 0x2d(r30)
+/* 80306778 003023D8 88 1D 00 4C */ lbz r0, 0x4c(r29)
+/* 8030677C 003023DC 98 1E 00 2E */ stb r0, 0x2e(r30)
+/* 80306780 003023E0 88 1D 00 4D */ lbz r0, 0x4d(r29)
+/* 80306784 003023E4 98 1E 00 2F */ stb r0, 0x2f(r30)
+/* 80306788 003023E8 88 1D 00 4E */ lbz r0, 0x4e(r29)
+/* 8030678C 003023EC 98 1E 00 30 */ stb r0, 0x30(r30)
+/* 80306790 003023F0 88 1D 00 4F */ lbz r0, 0x4f(r29)
+/* 80306794 003023F4 98 1E 00 31 */ stb r0, 0x31(r30)
+/* 80306798 003023F8 88 1D 00 50 */ lbz r0, 0x50(r29)
+/* 8030679C 003023FC 98 1E 00 32 */ stb r0, 0x32(r30)
+/* 803067A0 00302400 88 1D 00 51 */ lbz r0, 0x51(r29)
+/* 803067A4 00302404 98 1E 00 33 */ stb r0, 0x33(r30)
+lbl_803067A8:
+/* 803067A8 00302408 34 1D 00 52 */ addic. r0, r29, 0x52
+/* 803067AC 0030240C 41 82 00 4C */ beq lbl_803067F8
+/* 803067B0 00302410 34 1E 00 34 */ addic. r0, r30, 0x34
+/* 803067B4 00302414 41 82 00 44 */ beq lbl_803067F8
+/* 803067B8 00302418 88 1D 00 52 */ lbz r0, 0x52(r29)
+/* 803067BC 0030241C 98 1E 00 34 */ stb r0, 0x34(r30)
+/* 803067C0 00302420 88 1D 00 53 */ lbz r0, 0x53(r29)
+/* 803067C4 00302424 98 1E 00 35 */ stb r0, 0x35(r30)
+/* 803067C8 00302428 88 1D 00 54 */ lbz r0, 0x54(r29)
+/* 803067CC 0030242C 98 1E 00 36 */ stb r0, 0x36(r30)
+/* 803067D0 00302430 88 1D 00 55 */ lbz r0, 0x55(r29)
+/* 803067D4 00302434 98 1E 00 37 */ stb r0, 0x37(r30)
+/* 803067D8 00302438 88 1D 00 56 */ lbz r0, 0x56(r29)
+/* 803067DC 0030243C 98 1E 00 38 */ stb r0, 0x38(r30)
+/* 803067E0 00302440 88 1D 00 57 */ lbz r0, 0x57(r29)
+/* 803067E4 00302444 98 1E 00 39 */ stb r0, 0x39(r30)
+/* 803067E8 00302448 88 1D 00 58 */ lbz r0, 0x58(r29)
+/* 803067EC 0030244C 98 1E 00 3A */ stb r0, 0x3a(r30)
+/* 803067F0 00302450 88 1D 00 59 */ lbz r0, 0x59(r29)
+/* 803067F4 00302454 98 1E 00 3B */ stb r0, 0x3b(r30)
+lbl_803067F8:
+/* 803067F8 00302458 A0 1E 00 42 */ lhz r0, 0x42(r30)
+/* 803067FC 0030245C 2C 00 00 00 */ cmpwi r0, 0
+/* 80306800 00302460 41 82 00 10 */ beq lbl_80306810
+/* 80306804 00302464 3B E0 00 04 */ li r31, 4
+/* 80306808 00302468 48 00 00 08 */ b lbl_80306810
+lbl_8030680C:
+/* 8030680C 0030246C 3B E0 00 04 */ li r31, 4
+lbl_80306810:
+/* 80306810 00302470 80 1E 00 50 */ lwz r0, 0x50(r30)
+/* 80306814 00302474 2C 00 00 02 */ cmpwi r0, 2
+/* 80306818 00302478 41 82 00 38 */ beq lbl_80306850
+/* 8030681C 0030247C 40 80 00 90 */ bge lbl_803068AC
+/* 80306820 00302480 2C 00 00 00 */ cmpwi r0, 0
+/* 80306824 00302484 40 80 00 08 */ bge lbl_8030682C
+/* 80306828 00302488 48 00 00 84 */ b lbl_803068AC
+lbl_8030682C:
+/* 8030682C 0030248C 88 7E 00 0B */ lbz r3, 0xb(r30)
+/* 80306830 00302490 80 1E 00 6C */ lwz r0, 0x6c(r30)
+/* 80306834 00302494 A0 9E 00 0C */ lhz r4, 0xc(r30)
+/* 80306838 00302498 7C 03 01 D6 */ mullw r0, r3, r0
+/* 8030683C 0030249C 98 7E 00 4F */ stb r3, 0x4f(r30)
+/* 80306840 003024A0 90 9E 00 58 */ stw r4, 0x58(r30)
+/* 80306844 003024A4 7C 04 02 14 */ add r0, r4, r0
+/* 80306848 003024A8 90 1E 00 5C */ stw r0, 0x5c(r30)
+/* 8030684C 003024AC 48 00 00 60 */ b lbl_803068AC
+lbl_80306850:
+/* 80306850 003024B0 A0 7E 00 40 */ lhz r3, 0x40(r30)
+/* 80306854 003024B4 80 BE 00 44 */ lwz r5, 0x44(r30)
+/* 80306858 003024B8 88 9E 00 55 */ lbz r4, 0x55(r30)
+/* 8030685C 003024BC 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 80306860 003024C0 38 A5 FF FE */ addi r5, r5, -2
+/* 80306864 003024C4 80 DE 00 60 */ lwz r6, 0x60(r30)
+/* 80306868 003024C8 7C A0 20 30 */ slw r0, r5, r4
+/* 8030686C 003024CC 7C 06 02 14 */ add r0, r6, r0
+/* 80306870 003024D0 90 1E 00 5C */ stw r0, 0x5c(r30)
+/* 80306874 003024D4 41 82 00 28 */ beq lbl_8030689C
+/* 80306878 003024D8 80 1E 00 6C */ lwz r0, 0x6c(r30)
+/* 8030687C 003024DC 54 63 07 7E */ clrlwi r3, r3, 0x1d
+/* 80306880 003024E0 38 A0 00 01 */ li r5, 1
+/* 80306884 003024E4 A0 9E 00 0C */ lhz r4, 0xc(r30)
+/* 80306888 003024E8 7C 03 01 D6 */ mullw r0, r3, r0
+/* 8030688C 003024EC 98 BE 00 4F */ stb r5, 0x4f(r30)
+/* 80306890 003024F0 7C 04 02 14 */ add r0, r4, r0
+/* 80306894 003024F4 90 1E 00 58 */ stw r0, 0x58(r30)
+/* 80306898 003024F8 48 00 00 14 */ b lbl_803068AC
+lbl_8030689C:
+/* 8030689C 003024FC 88 7E 00 0B */ lbz r3, 0xb(r30)
+/* 803068A0 00302500 A0 1E 00 0C */ lhz r0, 0xc(r30)
+/* 803068A4 00302504 98 7E 00 4F */ stb r3, 0x4f(r30)
+/* 803068A8 00302508 90 1E 00 58 */ stw r0, 0x58(r30)
+lbl_803068AC:
+/* 803068AC 0030250C 7F E3 FB 78 */ mr r3, r31
+lbl_803068B0:
+/* 803068B0 00302510 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803068B4 00302514 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803068B8 00302518 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803068BC 0030251C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 803068C0 00302520 7C 08 03 A6 */ mtlr r0
+/* 803068C4 00302524 38 21 00 20 */ addi r1, r1, 0x20
+/* 803068C8 00302528 4E 80 00 20 */ blr
+
+.global VFipdm_bpb_get_fsinfo_information
+VFipdm_bpb_get_fsinfo_information:
+/* 803068CC 0030252C 2C 03 00 00 */ cmpwi r3, 0
+/* 803068D0 00302530 41 82 00 0C */ beq lbl_803068DC
+/* 803068D4 00302534 2C 04 00 00 */ cmpwi r4, 0
+/* 803068D8 00302538 40 82 00 0C */ bne lbl_803068E4
+lbl_803068DC:
+/* 803068DC 0030253C 38 60 00 01 */ li r3, 1
+/* 803068E0 00302540 4E 80 00 20 */ blr
+lbl_803068E4:
+/* 803068E4 00302544 88 A3 01 E9 */ lbz r5, 0x1e9(r3)
+/* 803068E8 00302548 88 03 01 E8 */ lbz r0, 0x1e8(r3)
+/* 803068EC 0030254C 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 803068F0 00302550 88 C3 01 EA */ lbz r6, 0x1ea(r3)
+/* 803068F4 00302554 88 A3 01 EB */ lbz r5, 0x1eb(r3)
+/* 803068F8 00302558 50 C0 82 1E */ rlwimi r0, r6, 0x10, 8, 0xf
+/* 803068FC 0030255C 50 A0 C0 0E */ rlwimi r0, r5, 0x18, 0, 7
+/* 80306900 00302560 90 04 00 00 */ stw r0, 0(r4)
+/* 80306904 00302564 88 C3 01 EE */ lbz r6, 0x1ee(r3)
+/* 80306908 00302568 88 A3 01 ED */ lbz r5, 0x1ed(r3)
+/* 8030690C 0030256C 88 03 01 EC */ lbz r0, 0x1ec(r3)
+/* 80306910 00302570 88 E3 01 EF */ lbz r7, 0x1ef(r3)
+/* 80306914 00302574 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 80306918 00302578 50 C0 82 1E */ rlwimi r0, r6, 0x10, 8, 0xf
+/* 8030691C 0030257C 38 60 00 00 */ li r3, 0
+/* 80306920 00302580 50 E0 C0 0E */ rlwimi r0, r7, 0x18, 0, 7
+/* 80306924 00302584 90 04 00 04 */ stw r0, 4(r4)
+/* 80306928 00302588 4E 80 00 20 */ blr
+
+.global VFipdm_bpb_check_boot_sector
+VFipdm_bpb_check_boot_sector:
+/* 8030692C 0030258C 2C 03 00 00 */ cmpwi r3, 0
+/* 80306930 00302590 41 82 00 0C */ beq lbl_8030693C
+/* 80306934 00302594 2C 04 00 00 */ cmpwi r4, 0
+/* 80306938 00302598 40 82 00 0C */ bne lbl_80306944
+lbl_8030693C:
+/* 8030693C 0030259C 38 60 00 01 */ li r3, 1
+/* 80306940 003025A0 4E 80 00 20 */ blr
+lbl_80306944:
+/* 80306944 003025A4 38 00 00 01 */ li r0, 1
+/* 80306948 003025A8 90 04 00 00 */ stw r0, 0(r4)
+/* 8030694C 003025AC 88 A3 00 00 */ lbz r5, 0(r3)
+/* 80306950 003025B0 28 05 00 EB */ cmplwi r5, 0xeb
+/* 80306954 003025B4 40 82 00 10 */ bne lbl_80306964
+/* 80306958 003025B8 88 03 00 02 */ lbz r0, 2(r3)
+/* 8030695C 003025BC 28 00 00 90 */ cmplwi r0, 0x90
+/* 80306960 003025C0 41 82 00 14 */ beq lbl_80306974
+lbl_80306964:
+/* 80306964 003025C4 28 05 00 E9 */ cmplwi r5, 0xe9
+/* 80306968 003025C8 41 82 00 0C */ beq lbl_80306974
+/* 8030696C 003025CC 38 00 00 00 */ li r0, 0
+/* 80306970 003025D0 90 04 00 00 */ stw r0, 0(r4)
+lbl_80306974:
+/* 80306974 003025D4 88 03 01 FE */ lbz r0, 0x1fe(r3)
+/* 80306978 003025D8 28 00 00 55 */ cmplwi r0, 0x55
+/* 8030697C 003025DC 40 82 00 10 */ bne lbl_8030698C
+/* 80306980 003025E0 88 03 01 FF */ lbz r0, 0x1ff(r3)
+/* 80306984 003025E4 28 00 00 AA */ cmplwi r0, 0xaa
+/* 80306988 003025E8 41 82 00 0C */ beq lbl_80306994
+lbl_8030698C:
+/* 8030698C 003025EC 38 00 00 00 */ li r0, 0
+/* 80306990 003025F0 90 04 00 00 */ stw r0, 0(r4)
+lbl_80306994:
+/* 80306994 003025F4 88 A3 00 0C */ lbz r5, 0xc(r3)
+/* 80306998 003025F8 88 03 00 0B */ lbz r0, 0xb(r3)
+/* 8030699C 003025FC 50 A0 44 2E */ rlwimi r0, r5, 8, 0x10, 0x17
+/* 803069A0 00302600 28 00 02 00 */ cmplwi r0, 0x200
+/* 803069A4 00302604 41 82 00 28 */ beq lbl_803069CC
+/* 803069A8 00302608 54 00 04 3E */ clrlwi r0, r0, 0x10
+/* 803069AC 0030260C 28 00 04 00 */ cmplwi r0, 0x400
+/* 803069B0 00302610 41 82 00 1C */ beq lbl_803069CC
+/* 803069B4 00302614 28 00 08 00 */ cmplwi r0, 0x800
+/* 803069B8 00302618 41 82 00 14 */ beq lbl_803069CC
+/* 803069BC 0030261C 28 00 10 00 */ cmplwi r0, 0x1000
+/* 803069C0 00302620 41 82 00 0C */ beq lbl_803069CC
+/* 803069C4 00302624 38 00 00 00 */ li r0, 0
+/* 803069C8 00302628 90 04 00 00 */ stw r0, 0(r4)
+lbl_803069CC:
+/* 803069CC 0030262C 88 03 00 0D */ lbz r0, 0xd(r3)
+/* 803069D0 00302630 28 00 00 01 */ cmplwi r0, 1
+/* 803069D4 00302634 41 82 00 44 */ beq lbl_80306A18
+/* 803069D8 00302638 28 00 00 02 */ cmplwi r0, 2
+/* 803069DC 0030263C 41 82 00 3C */ beq lbl_80306A18
+/* 803069E0 00302640 28 00 00 04 */ cmplwi r0, 4
+/* 803069E4 00302644 41 82 00 34 */ beq lbl_80306A18
+/* 803069E8 00302648 28 00 00 08 */ cmplwi r0, 8
+/* 803069EC 0030264C 41 82 00 2C */ beq lbl_80306A18
+/* 803069F0 00302650 28 00 00 10 */ cmplwi r0, 0x10
+/* 803069F4 00302654 41 82 00 24 */ beq lbl_80306A18
+/* 803069F8 00302658 28 00 00 20 */ cmplwi r0, 0x20
+/* 803069FC 0030265C 41 82 00 1C */ beq lbl_80306A18
+/* 80306A00 00302660 28 00 00 40 */ cmplwi r0, 0x40
+/* 80306A04 00302664 41 82 00 14 */ beq lbl_80306A18
+/* 80306A08 00302668 28 00 00 80 */ cmplwi r0, 0x80
+/* 80306A0C 0030266C 41 82 00 0C */ beq lbl_80306A18
+/* 80306A10 00302670 38 00 00 00 */ li r0, 0
+/* 80306A14 00302674 90 04 00 00 */ stw r0, 0(r4)
+lbl_80306A18:
+/* 80306A18 00302678 88 03 00 15 */ lbz r0, 0x15(r3)
+/* 80306A1C 0030267C 28 00 00 F0 */ cmplwi r0, 0xf0
+/* 80306A20 00302680 41 82 00 4C */ beq lbl_80306A6C
+/* 80306A24 00302684 28 00 00 F8 */ cmplwi r0, 0xf8
+/* 80306A28 00302688 41 82 00 44 */ beq lbl_80306A6C
+/* 80306A2C 0030268C 28 00 00 F9 */ cmplwi r0, 0xf9
+/* 80306A30 00302690 41 82 00 3C */ beq lbl_80306A6C
+/* 80306A34 00302694 28 00 00 FA */ cmplwi r0, 0xfa
+/* 80306A38 00302698 41 82 00 34 */ beq lbl_80306A6C
+/* 80306A3C 0030269C 28 00 00 FB */ cmplwi r0, 0xfb
+/* 80306A40 003026A0 41 82 00 2C */ beq lbl_80306A6C
+/* 80306A44 003026A4 28 00 00 FC */ cmplwi r0, 0xfc
+/* 80306A48 003026A8 41 82 00 24 */ beq lbl_80306A6C
+/* 80306A4C 003026AC 28 00 00 FD */ cmplwi r0, 0xfd
+/* 80306A50 003026B0 41 82 00 1C */ beq lbl_80306A6C
+/* 80306A54 003026B4 28 00 00 FE */ cmplwi r0, 0xfe
+/* 80306A58 003026B8 41 82 00 14 */ beq lbl_80306A6C
+/* 80306A5C 003026BC 28 00 00 FF */ cmplwi r0, 0xff
+/* 80306A60 003026C0 41 82 00 0C */ beq lbl_80306A6C
+/* 80306A64 003026C4 38 00 00 00 */ li r0, 0
+/* 80306A68 003026C8 90 04 00 00 */ stw r0, 0(r4)
+lbl_80306A6C:
+/* 80306A6C 003026CC 38 60 00 00 */ li r3, 0
+/* 80306A70 003026D0 4E 80 00 20 */ blr
+
+.global VFipdm_bpb_check_fsinfo_sector
+VFipdm_bpb_check_fsinfo_sector:
+/* 80306A74 003026D4 2C 03 00 00 */ cmpwi r3, 0
+/* 80306A78 003026D8 41 82 00 0C */ beq lbl_80306A84
+/* 80306A7C 003026DC 2C 04 00 00 */ cmpwi r4, 0
+/* 80306A80 003026E0 40 82 00 0C */ bne lbl_80306A8C
+lbl_80306A84:
+/* 80306A84 003026E4 38 60 00 01 */ li r3, 1
+/* 80306A88 003026E8 4E 80 00 20 */ blr
+lbl_80306A8C:
+/* 80306A8C 003026EC 88 03 00 01 */ lbz r0, 1(r3)
+/* 80306A90 003026F0 88 A3 00 00 */ lbz r5, 0(r3)
+/* 80306A94 003026F4 50 05 44 2E */ rlwimi r5, r0, 8, 0x10, 0x17
+/* 80306A98 003026F8 88 C3 00 02 */ lbz r6, 2(r3)
+/* 80306A9C 003026FC 88 03 00 03 */ lbz r0, 3(r3)
+/* 80306AA0 00302700 50 C5 82 1E */ rlwimi r5, r6, 0x10, 8, 0xf
+/* 80306AA4 00302704 88 E3 01 E5 */ lbz r7, 0x1e5(r3)
+/* 80306AA8 00302708 50 05 C0 0E */ rlwimi r5, r0, 0x18, 0, 7
+/* 80306AAC 0030270C 89 23 01 E4 */ lbz r9, 0x1e4(r3)
+/* 80306AB0 00302710 3C 05 BE 9F */ addis r0, r5, 0xbe9f
+/* 80306AB4 00302714 88 A3 01 FD */ lbz r5, 0x1fd(r3)
+/* 80306AB8 00302718 50 E9 44 2E */ rlwimi r9, r7, 8, 0x10, 0x17
+/* 80306ABC 0030271C 89 03 01 E6 */ lbz r8, 0x1e6(r3)
+/* 80306AC0 00302720 88 E3 01 FC */ lbz r7, 0x1fc(r3)
+/* 80306AC4 00302724 50 A7 44 2E */ rlwimi r7, r5, 8, 0x10, 0x17
+/* 80306AC8 00302728 88 C3 01 FE */ lbz r6, 0x1fe(r3)
+/* 80306ACC 0030272C 28 00 52 52 */ cmplwi r0, 0x5252
+/* 80306AD0 00302730 88 A3 01 E7 */ lbz r5, 0x1e7(r3)
+/* 80306AD4 00302734 51 09 82 1E */ rlwimi r9, r8, 0x10, 8, 0xf
+/* 80306AD8 00302738 88 03 01 FF */ lbz r0, 0x1ff(r3)
+/* 80306ADC 0030273C 50 C7 82 1E */ rlwimi r7, r6, 0x10, 8, 0xf
+/* 80306AE0 00302740 50 A9 C0 0E */ rlwimi r9, r5, 0x18, 0, 7
+/* 80306AE4 00302744 50 07 C0 0E */ rlwimi r7, r0, 0x18, 0, 7
+/* 80306AE8 00302748 40 82 00 28 */ bne lbl_80306B10
+/* 80306AEC 0030274C 3C 09 9E BF */ addis r0, r9, 0x9ebf
+/* 80306AF0 00302750 28 00 72 72 */ cmplwi r0, 0x7272
+/* 80306AF4 00302754 40 82 00 1C */ bne lbl_80306B10
+/* 80306AF8 00302758 3C 07 55 AB */ addis r0, r7, 0x55ab
+/* 80306AFC 0030275C 28 00 00 00 */ cmplwi r0, 0
+/* 80306B00 00302760 40 82 00 10 */ bne lbl_80306B10
+/* 80306B04 00302764 38 00 00 01 */ li r0, 1
+/* 80306B08 00302768 90 04 00 00 */ stw r0, 0(r4)
+/* 80306B0C 0030276C 48 00 00 0C */ b lbl_80306B18
+lbl_80306B10:
+/* 80306B10 00302770 38 00 00 00 */ li r0, 0
+/* 80306B14 00302774 90 04 00 00 */ stw r0, 0(r4)
+lbl_80306B18:
+/* 80306B18 00302778 38 60 00 00 */ li r3, 0
+/* 80306B1C 0030277C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pdm_disk.s b/asm/SDK/VF/pdm_disk.s new file mode 100644 index 0000000..1247bde --- /dev/null +++ b/asm/SDK/VF/pdm_disk.s @@ -0,0 +1,1037 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFipdm_disk_convert_sector_into_block
+VFipdm_disk_convert_sector_into_block:
+/* 80306B20 00302780 90 87 00 00 */ stw r4, 0(r7)
+/* 80306B24 00302784 28 06 02 00 */ cmplwi r6, 0x200
+/* 80306B28 00302788 38 60 00 00 */ li r3, 0
+/* 80306B2C 0030278C 90 A8 00 00 */ stw r5, 0(r8)
+/* 80306B30 00302790 40 81 00 94 */ ble lbl_80306BC4
+/* 80306B34 00302794 54 C4 BE 7E */ rlwinm r4, r6, 0x17, 0x19, 0x1f
+/* 80306B38 00302798 28 04 00 02 */ cmplwi r4, 2
+/* 80306B3C 0030279C 40 82 00 14 */ bne lbl_80306B50
+/* 80306B40 003027A0 80 07 00 00 */ lwz r0, 0(r7)
+/* 80306B44 003027A4 54 00 08 3C */ slwi r0, r0, 1
+/* 80306B48 003027A8 90 07 00 00 */ stw r0, 0(r7)
+/* 80306B4C 003027AC 48 00 00 30 */ b lbl_80306B7C
+lbl_80306B50:
+/* 80306B50 003027B0 28 04 00 04 */ cmplwi r4, 4
+/* 80306B54 003027B4 40 82 00 14 */ bne lbl_80306B68
+/* 80306B58 003027B8 80 07 00 00 */ lwz r0, 0(r7)
+/* 80306B5C 003027BC 54 00 10 3A */ slwi r0, r0, 2
+/* 80306B60 003027C0 90 07 00 00 */ stw r0, 0(r7)
+/* 80306B64 003027C4 48 00 00 18 */ b lbl_80306B7C
+lbl_80306B68:
+/* 80306B68 003027C8 28 04 00 08 */ cmplwi r4, 8
+/* 80306B6C 003027CC 40 82 00 10 */ bne lbl_80306B7C
+/* 80306B70 003027D0 80 07 00 00 */ lwz r0, 0(r7)
+/* 80306B74 003027D4 54 00 18 38 */ slwi r0, r0, 3
+/* 80306B78 003027D8 90 07 00 00 */ stw r0, 0(r7)
+lbl_80306B7C:
+/* 80306B7C 003027DC 28 04 00 02 */ cmplwi r4, 2
+/* 80306B80 003027E0 40 82 00 14 */ bne lbl_80306B94
+/* 80306B84 003027E4 80 08 00 00 */ lwz r0, 0(r8)
+/* 80306B88 003027E8 54 00 08 3C */ slwi r0, r0, 1
+/* 80306B8C 003027EC 90 08 00 00 */ stw r0, 0(r8)
+/* 80306B90 003027F0 4E 80 00 20 */ blr
+lbl_80306B94:
+/* 80306B94 003027F4 28 04 00 04 */ cmplwi r4, 4
+/* 80306B98 003027F8 40 82 00 14 */ bne lbl_80306BAC
+/* 80306B9C 003027FC 80 08 00 00 */ lwz r0, 0(r8)
+/* 80306BA0 00302800 54 00 10 3A */ slwi r0, r0, 2
+/* 80306BA4 00302804 90 08 00 00 */ stw r0, 0(r8)
+/* 80306BA8 00302808 4E 80 00 20 */ blr
+lbl_80306BAC:
+/* 80306BAC 0030280C 28 04 00 08 */ cmplwi r4, 8
+/* 80306BB0 00302810 4C 82 00 20 */ bnelr
+/* 80306BB4 00302814 80 08 00 00 */ lwz r0, 0(r8)
+/* 80306BB8 00302818 54 00 18 38 */ slwi r0, r0, 3
+/* 80306BBC 0030281C 90 08 00 00 */ stw r0, 0(r8)
+/* 80306BC0 00302820 4E 80 00 20 */ blr
+lbl_80306BC4:
+/* 80306BC4 00302824 4C 80 00 20 */ bgelr
+/* 80306BC8 00302828 38 60 00 04 */ li r3, 4
+/* 80306BCC 0030282C 4E 80 00 20 */ blr
+
+.global VFipdm_disk_convert_block_into_sector
+VFipdm_disk_convert_block_into_sector:
+/* 80306BD0 00302830 90 87 00 00 */ stw r4, 0(r7)
+/* 80306BD4 00302834 28 06 02 00 */ cmplwi r6, 0x200
+/* 80306BD8 00302838 38 60 00 00 */ li r3, 0
+/* 80306BDC 0030283C 90 A8 00 00 */ stw r5, 0(r8)
+/* 80306BE0 00302840 40 81 00 94 */ ble lbl_80306C74
+/* 80306BE4 00302844 54 C4 BE 7E */ rlwinm r4, r6, 0x17, 0x19, 0x1f
+/* 80306BE8 00302848 28 04 00 02 */ cmplwi r4, 2
+/* 80306BEC 0030284C 40 82 00 14 */ bne lbl_80306C00
+/* 80306BF0 00302850 80 07 00 00 */ lwz r0, 0(r7)
+/* 80306BF4 00302854 54 00 F8 7E */ srwi r0, r0, 1
+/* 80306BF8 00302858 90 07 00 00 */ stw r0, 0(r7)
+/* 80306BFC 0030285C 48 00 00 30 */ b lbl_80306C2C
+lbl_80306C00:
+/* 80306C00 00302860 28 04 00 04 */ cmplwi r4, 4
+/* 80306C04 00302864 40 82 00 14 */ bne lbl_80306C18
+/* 80306C08 00302868 80 07 00 00 */ lwz r0, 0(r7)
+/* 80306C0C 0030286C 54 00 F0 BE */ srwi r0, r0, 2
+/* 80306C10 00302870 90 07 00 00 */ stw r0, 0(r7)
+/* 80306C14 00302874 48 00 00 18 */ b lbl_80306C2C
+lbl_80306C18:
+/* 80306C18 00302878 28 04 00 08 */ cmplwi r4, 8
+/* 80306C1C 0030287C 40 82 00 10 */ bne lbl_80306C2C
+/* 80306C20 00302880 80 07 00 00 */ lwz r0, 0(r7)
+/* 80306C24 00302884 54 00 E8 FE */ srwi r0, r0, 3
+/* 80306C28 00302888 90 07 00 00 */ stw r0, 0(r7)
+lbl_80306C2C:
+/* 80306C2C 0030288C 28 04 00 02 */ cmplwi r4, 2
+/* 80306C30 00302890 40 82 00 14 */ bne lbl_80306C44
+/* 80306C34 00302894 80 08 00 00 */ lwz r0, 0(r8)
+/* 80306C38 00302898 54 00 F8 7E */ srwi r0, r0, 1
+/* 80306C3C 0030289C 90 08 00 00 */ stw r0, 0(r8)
+/* 80306C40 003028A0 4E 80 00 20 */ blr
+lbl_80306C44:
+/* 80306C44 003028A4 28 04 00 04 */ cmplwi r4, 4
+/* 80306C48 003028A8 40 82 00 14 */ bne lbl_80306C5C
+/* 80306C4C 003028AC 80 08 00 00 */ lwz r0, 0(r8)
+/* 80306C50 003028B0 54 00 F0 BE */ srwi r0, r0, 2
+/* 80306C54 003028B4 90 08 00 00 */ stw r0, 0(r8)
+/* 80306C58 003028B8 4E 80 00 20 */ blr
+lbl_80306C5C:
+/* 80306C5C 003028BC 28 04 00 08 */ cmplwi r4, 8
+/* 80306C60 003028C0 4C 82 00 20 */ bnelr
+/* 80306C64 003028C4 80 08 00 00 */ lwz r0, 0(r8)
+/* 80306C68 003028C8 54 00 E8 FE */ srwi r0, r0, 3
+/* 80306C6C 003028CC 90 08 00 00 */ stw r0, 0(r8)
+/* 80306C70 003028D0 4E 80 00 20 */ blr
+lbl_80306C74:
+/* 80306C74 003028D4 4C 80 00 20 */ bgelr
+/* 80306C78 003028D8 38 60 00 04 */ li r3, 4
+/* 80306C7C 003028DC 4E 80 00 20 */ blr
+
+VFipdm_disk_do_get_permission:
+/* 80306C80 003028E0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80306C84 003028E4 7C 08 02 A6 */ mflr r0
+/* 80306C88 003028E8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80306C8C 003028EC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80306C90 003028F0 7C 9F 23 78 */ mr r31, r4
+/* 80306C94 003028F4 93 C1 00 08 */ stw r30, 8(r1)
+/* 80306C98 003028F8 7C 7E 1B 78 */ mr r30, r3
+/* 80306C9C 003028FC A0 04 00 12 */ lhz r0, 0x12(r4)
+/* 80306CA0 00302900 2C 00 00 00 */ cmpwi r0, 0
+/* 80306CA4 00302904 41 82 00 10 */ beq lbl_80306CB4
+/* 80306CA8 00302908 80 04 00 00 */ lwz r0, 0(r4)
+/* 80306CAC 0030290C 54 00 06 B5 */ rlwinm. r0, r0, 0, 0x1a, 0x1a
+/* 80306CB0 00302910 41 82 00 C4 */ beq lbl_80306D74
+lbl_80306CB4:
+/* 80306CB4 00302914 80 84 00 04 */ lwz r4, 4(r4)
+/* 80306CB8 00302918 7F C3 F3 78 */ mr r3, r30
+/* 80306CBC 0030291C 81 84 00 08 */ lwz r12, 8(r4)
+/* 80306CC0 00302920 7D 89 03 A6 */ mtctr r12
+/* 80306CC4 00302924 4E 80 04 21 */ bctrl
+/* 80306CC8 00302928 2C 03 00 00 */ cmpwi r3, 0
+/* 80306CCC 0030292C 7C 64 1B 78 */ mr r4, r3
+/* 80306CD0 00302930 41 82 00 1C */ beq lbl_80306CEC
+/* 80306CD4 00302934 80 7F 00 30 */ lwz r3, 0x30(r31)
+/* 80306CD8 00302938 2C 03 00 00 */ cmpwi r3, 0
+/* 80306CDC 0030293C 41 82 00 08 */ beq lbl_80306CE4
+/* 80306CE0 00302940 48 00 1A D9 */ bl VFipdm_part_set_driver_error_code
+lbl_80306CE4:
+/* 80306CE4 00302944 38 60 00 15 */ li r3, 0x15
+/* 80306CE8 00302948 48 00 00 9C */ b lbl_80306D84
+lbl_80306CEC:
+/* 80306CEC 0030294C 80 BF 00 04 */ lwz r5, 4(r31)
+/* 80306CF0 00302950 7F C3 F3 78 */ mr r3, r30
+/* 80306CF4 00302954 38 9F 00 18 */ addi r4, r31, 0x18
+/* 80306CF8 00302958 81 85 00 1C */ lwz r12, 0x1c(r5)
+/* 80306CFC 0030295C 7D 89 03 A6 */ mtctr r12
+/* 80306D00 00302960 4E 80 04 21 */ bctrl
+/* 80306D04 00302964 2C 03 00 00 */ cmpwi r3, 0
+/* 80306D08 00302968 7C 64 1B 78 */ mr r4, r3
+/* 80306D0C 0030296C 41 82 00 1C */ beq lbl_80306D28
+/* 80306D10 00302970 80 7F 00 30 */ lwz r3, 0x30(r31)
+/* 80306D14 00302974 2C 03 00 00 */ cmpwi r3, 0
+/* 80306D18 00302978 41 82 00 08 */ beq lbl_80306D20
+/* 80306D1C 0030297C 48 00 1A 9D */ bl VFipdm_part_set_driver_error_code
+lbl_80306D20:
+/* 80306D20 00302980 38 60 00 15 */ li r3, 0x15
+/* 80306D24 00302984 48 00 00 60 */ b lbl_80306D84
+lbl_80306D28:
+/* 80306D28 00302988 A0 1F 00 20 */ lhz r0, 0x20(r31)
+/* 80306D2C 0030298C 54 00 05 FF */ clrlwi. r0, r0, 0x17
+/* 80306D30 00302990 41 82 00 0C */ beq lbl_80306D3C
+/* 80306D34 00302994 38 60 00 16 */ li r3, 0x16
+/* 80306D38 00302998 48 00 00 4C */ b lbl_80306D84
+lbl_80306D3C:
+/* 80306D3C 0030299C 80 1F 00 24 */ lwz r0, 0x24(r31)
+/* 80306D40 003029A0 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80306D44 003029A4 41 82 00 14 */ beq lbl_80306D58
+/* 80306D48 003029A8 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80306D4C 003029AC 60 00 00 10 */ ori r0, r0, 0x10
+/* 80306D50 003029B0 90 1F 00 00 */ stw r0, 0(r31)
+/* 80306D54 003029B4 48 00 00 10 */ b lbl_80306D64
+lbl_80306D58:
+/* 80306D58 003029B8 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80306D5C 003029BC 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a
+/* 80306D60 003029C0 90 1F 00 00 */ stw r0, 0(r31)
+lbl_80306D64:
+/* 80306D64 003029C4 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80306D68 003029C8 60 00 00 02 */ ori r0, r0, 2
+/* 80306D6C 003029CC 54 00 06 F2 */ rlwinm r0, r0, 0, 0x1b, 0x19
+/* 80306D70 003029D0 90 1F 00 00 */ stw r0, 0(r31)
+lbl_80306D74:
+/* 80306D74 003029D4 A0 9F 00 12 */ lhz r4, 0x12(r31)
+/* 80306D78 003029D8 38 60 00 00 */ li r3, 0
+/* 80306D7C 003029DC 38 04 00 01 */ addi r0, r4, 1
+/* 80306D80 003029E0 B0 1F 00 12 */ sth r0, 0x12(r31)
+lbl_80306D84:
+/* 80306D84 003029E4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80306D88 003029E8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80306D8C 003029EC 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80306D90 003029F0 7C 08 03 A6 */ mtlr r0
+/* 80306D94 003029F4 38 21 00 10 */ addi r1, r1, 0x10
+/* 80306D98 003029F8 4E 80 00 20 */ blr
+
+.global VFipdm_disk_check_disk_handle
+VFipdm_disk_check_disk_handle:
+/* 80306D9C 003029FC 54 60 06 3E */ clrlwi r0, r3, 0x18
+/* 80306DA0 00302A00 54 64 04 2E */ rlwinm r4, r3, 0, 0x10, 0x17
+/* 80306DA4 00302A04 28 00 00 1A */ cmplwi r0, 0x1a
+/* 80306DA8 00302A08 54 65 84 3E */ srwi r5, r3, 0x10
+/* 80306DAC 00302A0C 40 80 00 28 */ bge lbl_80306DD4
+/* 80306DB0 00302A10 28 04 03 00 */ cmplwi r4, 0x300
+/* 80306DB4 00302A14 40 82 00 20 */ bne lbl_80306DD4
+/* 80306DB8 00302A18 1C 00 00 34 */ mulli r0, r0, 0x34
+/* 80306DBC 00302A1C 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80306DC0 00302A20 38 83 EA 60 */ addi r4, r3, lbl_8057EA60@l
+/* 80306DC4 00302A24 7C 64 02 14 */ add r3, r4, r0
+/* 80306DC8 00302A28 80 03 01 B0 */ lwz r0, 0x1b0(r3)
+/* 80306DCC 00302A2C 7C 05 00 40 */ cmplw r5, r0
+/* 80306DD0 00302A30 40 81 00 0C */ ble lbl_80306DDC
+lbl_80306DD4:
+/* 80306DD4 00302A34 38 60 00 01 */ li r3, 1
+/* 80306DD8 00302A38 4E 80 00 20 */ blr
+lbl_80306DDC:
+/* 80306DDC 00302A3C 38 00 00 0D */ li r0, 0xd
+/* 80306DE0 00302A40 38 E3 01 A4 */ addi r7, r3, 0x1a4
+/* 80306DE4 00302A44 38 60 00 00 */ li r3, 0
+/* 80306DE8 00302A48 7C 09 03 A6 */ mtctr r0
+lbl_80306DEC:
+/* 80306DEC 00302A4C 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80306DF0 00302A50 7C C4 02 14 */ add r6, r4, r0
+/* 80306DF4 00302A54 80 06 00 08 */ lwz r0, 8(r6)
+/* 80306DF8 00302A58 7C 00 38 40 */ cmplw r0, r7
+/* 80306DFC 00302A5C 40 82 00 10 */ bne lbl_80306E0C
+/* 80306E00 00302A60 80 06 00 04 */ lwz r0, 4(r6)
+/* 80306E04 00302A64 7C 05 00 40 */ cmplw r5, r0
+/* 80306E08 00302A68 41 82 00 30 */ beq lbl_80306E38
+lbl_80306E0C:
+/* 80306E0C 00302A6C 38 63 00 01 */ addi r3, r3, 1
+/* 80306E10 00302A70 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80306E14 00302A74 7C C4 02 14 */ add r6, r4, r0
+/* 80306E18 00302A78 80 06 00 08 */ lwz r0, 8(r6)
+/* 80306E1C 00302A7C 7C 00 38 40 */ cmplw r0, r7
+/* 80306E20 00302A80 40 82 00 10 */ bne lbl_80306E30
+/* 80306E24 00302A84 80 06 00 04 */ lwz r0, 4(r6)
+/* 80306E28 00302A88 7C 05 00 40 */ cmplw r5, r0
+/* 80306E2C 00302A8C 41 82 00 0C */ beq lbl_80306E38
+lbl_80306E30:
+/* 80306E30 00302A90 38 63 00 01 */ addi r3, r3, 1
+/* 80306E34 00302A94 42 00 FF B8 */ bdnz lbl_80306DEC
+lbl_80306E38:
+/* 80306E38 00302A98 54 64 04 3E */ clrlwi r4, r3, 0x10
+/* 80306E3C 00302A9C 38 60 00 1A */ li r3, 0x1a
+/* 80306E40 00302AA0 38 04 FF E6 */ addi r0, r4, -26
+/* 80306E44 00302AA4 7C 83 1B 38 */ orc r3, r4, r3
+/* 80306E48 00302AA8 54 00 F8 7E */ srwi r0, r0, 1
+/* 80306E4C 00302AAC 7C 00 18 50 */ subf r0, r0, r3
+/* 80306E50 00302AB0 54 03 0F FE */ srwi r3, r0, 0x1f
+/* 80306E54 00302AB4 4E 80 00 20 */ blr
+
+.global VFipdm_disk_get_part_permission
+VFipdm_disk_get_part_permission:
+/* 80306E58 00302AB8 2C 03 00 00 */ cmpwi r3, 0
+/* 80306E5C 00302ABC 40 82 00 0C */ bne lbl_80306E68
+/* 80306E60 00302AC0 38 60 00 01 */ li r3, 1
+/* 80306E64 00302AC4 4E 80 00 20 */ blr
+lbl_80306E68:
+/* 80306E68 00302AC8 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 80306E6C 00302ACC 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 80306E70 00302AD0 28 07 00 1A */ cmplwi r7, 0x1a
+/* 80306E74 00302AD4 54 68 84 3E */ srwi r8, r3, 0x10
+/* 80306E78 00302AD8 40 80 00 28 */ bge lbl_80306EA0
+/* 80306E7C 00302ADC 28 00 03 00 */ cmplwi r0, 0x300
+/* 80306E80 00302AE0 40 82 00 20 */ bne lbl_80306EA0
+/* 80306E84 00302AE4 1C 07 00 34 */ mulli r0, r7, 0x34
+/* 80306E88 00302AE8 3C 80 80 58 */ lis r4, lbl_8057EA60@ha
+/* 80306E8C 00302AEC 38 A4 EA 60 */ addi r5, r4, lbl_8057EA60@l
+/* 80306E90 00302AF0 7C 85 02 14 */ add r4, r5, r0
+/* 80306E94 00302AF4 80 04 01 B0 */ lwz r0, 0x1b0(r4)
+/* 80306E98 00302AF8 7C 08 00 40 */ cmplw r8, r0
+/* 80306E9C 00302AFC 40 81 00 0C */ ble lbl_80306EA8
+lbl_80306EA0:
+/* 80306EA0 00302B00 38 00 00 01 */ li r0, 1
+/* 80306EA4 00302B04 48 00 00 7C */ b lbl_80306F20
+lbl_80306EA8:
+/* 80306EA8 00302B08 38 00 00 0D */ li r0, 0xd
+/* 80306EAC 00302B0C 38 C4 01 A4 */ addi r6, r4, 0x1a4
+/* 80306EB0 00302B10 38 80 00 00 */ li r4, 0
+/* 80306EB4 00302B14 7C 09 03 A6 */ mtctr r0
+lbl_80306EB8:
+/* 80306EB8 00302B18 54 80 1B 78 */ rlwinm r0, r4, 3, 0xd, 0x1c
+/* 80306EBC 00302B1C 7D 25 02 14 */ add r9, r5, r0
+/* 80306EC0 00302B20 80 09 00 08 */ lwz r0, 8(r9)
+/* 80306EC4 00302B24 7C 00 30 40 */ cmplw r0, r6
+/* 80306EC8 00302B28 40 82 00 10 */ bne lbl_80306ED8
+/* 80306ECC 00302B2C 80 09 00 04 */ lwz r0, 4(r9)
+/* 80306ED0 00302B30 7C 08 00 40 */ cmplw r8, r0
+/* 80306ED4 00302B34 41 82 00 30 */ beq lbl_80306F04
+lbl_80306ED8:
+/* 80306ED8 00302B38 38 84 00 01 */ addi r4, r4, 1
+/* 80306EDC 00302B3C 54 80 1B 78 */ rlwinm r0, r4, 3, 0xd, 0x1c
+/* 80306EE0 00302B40 7D 25 02 14 */ add r9, r5, r0
+/* 80306EE4 00302B44 80 09 00 08 */ lwz r0, 8(r9)
+/* 80306EE8 00302B48 7C 00 30 40 */ cmplw r0, r6
+/* 80306EEC 00302B4C 40 82 00 10 */ bne lbl_80306EFC
+/* 80306EF0 00302B50 80 09 00 04 */ lwz r0, 4(r9)
+/* 80306EF4 00302B54 7C 08 00 40 */ cmplw r8, r0
+/* 80306EF8 00302B58 41 82 00 0C */ beq lbl_80306F04
+lbl_80306EFC:
+/* 80306EFC 00302B5C 38 84 00 01 */ addi r4, r4, 1
+/* 80306F00 00302B60 42 00 FF B8 */ bdnz lbl_80306EB8
+lbl_80306F04:
+/* 80306F04 00302B64 54 85 04 3E */ clrlwi r5, r4, 0x10
+/* 80306F08 00302B68 38 80 00 1A */ li r4, 0x1a
+/* 80306F0C 00302B6C 38 05 FF E6 */ addi r0, r5, -26
+/* 80306F10 00302B70 7C A4 23 38 */ orc r4, r5, r4
+/* 80306F14 00302B74 54 00 F8 7E */ srwi r0, r0, 1
+/* 80306F18 00302B78 7C 00 20 50 */ subf r0, r0, r4
+/* 80306F1C 00302B7C 54 00 0F FE */ srwi r0, r0, 0x1f
+lbl_80306F20:
+/* 80306F20 00302B80 2C 00 00 00 */ cmpwi r0, 0
+/* 80306F24 00302B84 41 82 00 0C */ beq lbl_80306F30
+/* 80306F28 00302B88 7C 03 03 78 */ mr r3, r0
+/* 80306F2C 00302B8C 4E 80 00 20 */ blr
+lbl_80306F30:
+/* 80306F30 00302B90 1C 07 00 34 */ mulli r0, r7, 0x34
+/* 80306F34 00302B94 3C 80 80 58 */ lis r4, lbl_8057EA60@ha
+/* 80306F38 00302B98 38 84 EA 60 */ addi r4, r4, lbl_8057EA60@l
+/* 80306F3C 00302B9C 7C 84 02 14 */ add r4, r4, r0
+/* 80306F40 00302BA0 38 84 01 A4 */ addi r4, r4, 0x1a4
+/* 80306F44 00302BA4 4B FF FD 3C */ b VFipdm_disk_do_get_permission
+/* 80306F48 00302BA8 4E 80 00 20 */ blr
+
+.global VFipdm_disk_release_part_permission
+VFipdm_disk_release_part_permission:
+/* 80306F4C 00302BAC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80306F50 00302BB0 7C 08 02 A6 */ mflr r0
+/* 80306F54 00302BB4 2C 03 00 00 */ cmpwi r3, 0
+/* 80306F58 00302BB8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80306F5C 00302BBC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80306F60 00302BC0 7C 9F 23 78 */ mr r31, r4
+/* 80306F64 00302BC4 93 C1 00 08 */ stw r30, 8(r1)
+/* 80306F68 00302BC8 40 82 00 0C */ bne lbl_80306F74
+/* 80306F6C 00302BCC 38 60 00 01 */ li r3, 1
+/* 80306F70 00302BD0 48 00 01 60 */ b lbl_803070D0
+lbl_80306F74:
+/* 80306F74 00302BD4 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 80306F78 00302BD8 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 80306F7C 00302BDC 28 07 00 1A */ cmplwi r7, 0x1a
+/* 80306F80 00302BE0 54 68 84 3E */ srwi r8, r3, 0x10
+/* 80306F84 00302BE4 40 80 00 28 */ bge lbl_80306FAC
+/* 80306F88 00302BE8 28 00 03 00 */ cmplwi r0, 0x300
+/* 80306F8C 00302BEC 40 82 00 20 */ bne lbl_80306FAC
+/* 80306F90 00302BF0 1C 07 00 34 */ mulli r0, r7, 0x34
+/* 80306F94 00302BF4 3C 80 80 58 */ lis r4, lbl_8057EA60@ha
+/* 80306F98 00302BF8 38 A4 EA 60 */ addi r5, r4, lbl_8057EA60@l
+/* 80306F9C 00302BFC 7C 85 02 14 */ add r4, r5, r0
+/* 80306FA0 00302C00 80 04 01 B0 */ lwz r0, 0x1b0(r4)
+/* 80306FA4 00302C04 7C 08 00 40 */ cmplw r8, r0
+/* 80306FA8 00302C08 40 81 00 0C */ ble lbl_80306FB4
+lbl_80306FAC:
+/* 80306FAC 00302C0C 38 00 00 01 */ li r0, 1
+/* 80306FB0 00302C10 48 00 00 7C */ b lbl_8030702C
+lbl_80306FB4:
+/* 80306FB4 00302C14 38 00 00 0D */ li r0, 0xd
+/* 80306FB8 00302C18 38 C4 01 A4 */ addi r6, r4, 0x1a4
+/* 80306FBC 00302C1C 38 80 00 00 */ li r4, 0
+/* 80306FC0 00302C20 7C 09 03 A6 */ mtctr r0
+lbl_80306FC4:
+/* 80306FC4 00302C24 54 80 1B 78 */ rlwinm r0, r4, 3, 0xd, 0x1c
+/* 80306FC8 00302C28 7D 25 02 14 */ add r9, r5, r0
+/* 80306FCC 00302C2C 80 09 00 08 */ lwz r0, 8(r9)
+/* 80306FD0 00302C30 7C 00 30 40 */ cmplw r0, r6
+/* 80306FD4 00302C34 40 82 00 10 */ bne lbl_80306FE4
+/* 80306FD8 00302C38 80 09 00 04 */ lwz r0, 4(r9)
+/* 80306FDC 00302C3C 7C 08 00 40 */ cmplw r8, r0
+/* 80306FE0 00302C40 41 82 00 30 */ beq lbl_80307010
+lbl_80306FE4:
+/* 80306FE4 00302C44 38 84 00 01 */ addi r4, r4, 1
+/* 80306FE8 00302C48 54 80 1B 78 */ rlwinm r0, r4, 3, 0xd, 0x1c
+/* 80306FEC 00302C4C 7D 25 02 14 */ add r9, r5, r0
+/* 80306FF0 00302C50 80 09 00 08 */ lwz r0, 8(r9)
+/* 80306FF4 00302C54 7C 00 30 40 */ cmplw r0, r6
+/* 80306FF8 00302C58 40 82 00 10 */ bne lbl_80307008
+/* 80306FFC 00302C5C 80 09 00 04 */ lwz r0, 4(r9)
+/* 80307000 00302C60 7C 08 00 40 */ cmplw r8, r0
+/* 80307004 00302C64 41 82 00 0C */ beq lbl_80307010
+lbl_80307008:
+/* 80307008 00302C68 38 84 00 01 */ addi r4, r4, 1
+/* 8030700C 00302C6C 42 00 FF B8 */ bdnz lbl_80306FC4
+lbl_80307010:
+/* 80307010 00302C70 54 85 04 3E */ clrlwi r5, r4, 0x10
+/* 80307014 00302C74 38 80 00 1A */ li r4, 0x1a
+/* 80307018 00302C78 38 05 FF E6 */ addi r0, r5, -26
+/* 8030701C 00302C7C 7C A4 23 38 */ orc r4, r5, r4
+/* 80307020 00302C80 54 00 F8 7E */ srwi r0, r0, 1
+/* 80307024 00302C84 7C 00 20 50 */ subf r0, r0, r4
+/* 80307028 00302C88 54 00 0F FE */ srwi r0, r0, 0x1f
+lbl_8030702C:
+/* 8030702C 00302C8C 2C 00 00 00 */ cmpwi r0, 0
+/* 80307030 00302C90 41 82 00 0C */ beq lbl_8030703C
+/* 80307034 00302C94 7C 03 03 78 */ mr r3, r0
+/* 80307038 00302C98 48 00 00 98 */ b lbl_803070D0
+lbl_8030703C:
+/* 8030703C 00302C9C 1C 07 00 34 */ mulli r0, r7, 0x34
+/* 80307040 00302CA0 3C 80 80 58 */ lis r4, lbl_8057EA60@ha
+/* 80307044 00302CA4 38 84 EA 60 */ addi r4, r4, lbl_8057EA60@l
+/* 80307048 00302CA8 7F C4 02 14 */ add r30, r4, r0
+/* 8030704C 00302CAC A0 1E 01 B6 */ lhz r0, 0x1b6(r30)
+/* 80307050 00302CB0 2C 00 00 00 */ cmpwi r0, 0
+/* 80307054 00302CB4 40 82 00 0C */ bne lbl_80307060
+/* 80307058 00302CB8 38 60 00 0E */ li r3, 0xe
+/* 8030705C 00302CBC 48 00 00 74 */ b lbl_803070D0
+lbl_80307060:
+/* 80307060 00302CC0 28 00 00 01 */ cmplwi r0, 1
+/* 80307064 00302CC4 38 80 00 00 */ li r4, 0
+/* 80307068 00302CC8 40 82 00 34 */ bne lbl_8030709C
+/* 8030706C 00302CCC 80 9E 01 A8 */ lwz r4, 0x1a8(r30)
+/* 80307070 00302CD0 81 84 00 0C */ lwz r12, 0xc(r4)
+/* 80307074 00302CD4 7D 89 03 A6 */ mtctr r12
+/* 80307078 00302CD8 4E 80 04 21 */ bctrl
+/* 8030707C 00302CDC 2C 03 00 00 */ cmpwi r3, 0
+/* 80307080 00302CE0 7C 64 1B 78 */ mr r4, r3
+/* 80307084 00302CE4 41 82 00 18 */ beq lbl_8030709C
+/* 80307088 00302CE8 80 7E 01 D4 */ lwz r3, 0x1d4(r30)
+/* 8030708C 00302CEC 2C 03 00 00 */ cmpwi r3, 0
+/* 80307090 00302CF0 41 82 00 08 */ beq lbl_80307098
+/* 80307094 00302CF4 48 00 17 25 */ bl VFipdm_part_set_driver_error_code
+lbl_80307098:
+/* 80307098 00302CF8 38 80 00 15 */ li r4, 0x15
+lbl_8030709C:
+/* 8030709C 00302CFC 2C 04 00 00 */ cmpwi r4, 0
+/* 803070A0 00302D00 41 82 00 0C */ beq lbl_803070AC
+/* 803070A4 00302D04 28 1F 00 01 */ cmplwi r31, 1
+/* 803070A8 00302D08 40 82 00 24 */ bne lbl_803070CC
+lbl_803070AC:
+/* 803070AC 00302D0C A0 7E 01 B6 */ lhz r3, 0x1b6(r30)
+/* 803070B0 00302D10 38 63 FF FF */ addi r3, r3, -1
+/* 803070B4 00302D14 54 60 04 3F */ clrlwi. r0, r3, 0x10
+/* 803070B8 00302D18 B0 7E 01 B6 */ sth r3, 0x1b6(r30)
+/* 803070BC 00302D1C 40 82 00 10 */ bne lbl_803070CC
+/* 803070C0 00302D20 80 1E 01 A4 */ lwz r0, 0x1a4(r30)
+/* 803070C4 00302D24 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 803070C8 00302D28 90 1E 01 A4 */ stw r0, 0x1a4(r30)
+lbl_803070CC:
+/* 803070CC 00302D2C 7C 83 23 78 */ mr r3, r4
+lbl_803070D0:
+/* 803070D0 00302D30 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 803070D4 00302D34 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 803070D8 00302D38 83 C1 00 08 */ lwz r30, 8(r1)
+/* 803070DC 00302D3C 7C 08 03 A6 */ mtlr r0
+/* 803070E0 00302D40 38 21 00 10 */ addi r1, r1, 0x10
+/* 803070E4 00302D44 4E 80 00 20 */ blr
+
+.global VFipdm_disk_physical_read
+VFipdm_disk_physical_read:
+/* 803070E8 00302D48 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803070EC 00302D4C 7C 08 02 A6 */ mflr r0
+/* 803070F0 00302D50 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803070F4 00302D54 39 61 00 30 */ addi r11, r1, 0x30
+/* 803070F8 00302D58 4B EC 00 31 */ bl _savegpr_27
+/* 803070FC 00302D5C 2C 03 00 00 */ cmpwi r3, 0
+/* 80307100 00302D60 7C 7C 1B 78 */ mr r28, r3
+/* 80307104 00302D64 7C 9D 23 78 */ mr r29, r4
+/* 80307108 00302D68 7C FE 3B 78 */ mr r30, r7
+/* 8030710C 00302D6C 7D 1F 43 78 */ mr r31, r8
+/* 80307110 00302D70 41 82 00 24 */ beq lbl_80307134
+/* 80307114 00302D74 2C 04 00 00 */ cmpwi r4, 0
+/* 80307118 00302D78 41 82 00 1C */ beq lbl_80307134
+/* 8030711C 00302D7C 2C 06 00 00 */ cmpwi r6, 0
+/* 80307120 00302D80 41 82 00 14 */ beq lbl_80307134
+/* 80307124 00302D84 2C 07 00 00 */ cmpwi r7, 0
+/* 80307128 00302D88 41 82 00 0C */ beq lbl_80307134
+/* 8030712C 00302D8C 2C 08 00 00 */ cmpwi r8, 0
+/* 80307130 00302D90 40 82 00 0C */ bne lbl_8030713C
+lbl_80307134:
+/* 80307134 00302D94 38 60 00 01 */ li r3, 1
+/* 80307138 00302D98 48 00 01 70 */ b lbl_803072A8
+lbl_8030713C:
+/* 8030713C 00302D9C 54 68 06 3E */ clrlwi r8, r3, 0x18
+/* 80307140 00302DA0 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 80307144 00302DA4 28 08 00 1A */ cmplwi r8, 0x1a
+/* 80307148 00302DA8 54 69 84 3E */ srwi r9, r3, 0x10
+/* 8030714C 00302DAC 40 80 00 28 */ bge lbl_80307174
+/* 80307150 00302DB0 28 00 03 00 */ cmplwi r0, 0x300
+/* 80307154 00302DB4 40 82 00 20 */ bne lbl_80307174
+/* 80307158 00302DB8 1C 08 00 34 */ mulli r0, r8, 0x34
+/* 8030715C 00302DBC 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80307160 00302DC0 38 83 EA 60 */ addi r4, r3, lbl_8057EA60@l
+/* 80307164 00302DC4 7C 64 02 14 */ add r3, r4, r0
+/* 80307168 00302DC8 80 03 01 B0 */ lwz r0, 0x1b0(r3)
+/* 8030716C 00302DCC 7C 09 00 40 */ cmplw r9, r0
+/* 80307170 00302DD0 40 81 00 0C */ ble lbl_8030717C
+lbl_80307174:
+/* 80307174 00302DD4 38 60 00 01 */ li r3, 1
+/* 80307178 00302DD8 48 00 00 7C */ b lbl_803071F4
+lbl_8030717C:
+/* 8030717C 00302DDC 38 00 00 0D */ li r0, 0xd
+/* 80307180 00302DE0 38 E3 01 A4 */ addi r7, r3, 0x1a4
+/* 80307184 00302DE4 38 60 00 00 */ li r3, 0
+/* 80307188 00302DE8 7C 09 03 A6 */ mtctr r0
+lbl_8030718C:
+/* 8030718C 00302DEC 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80307190 00302DF0 7D 44 02 14 */ add r10, r4, r0
+/* 80307194 00302DF4 80 0A 00 08 */ lwz r0, 8(r10)
+/* 80307198 00302DF8 7C 00 38 40 */ cmplw r0, r7
+/* 8030719C 00302DFC 40 82 00 10 */ bne lbl_803071AC
+/* 803071A0 00302E00 80 0A 00 04 */ lwz r0, 4(r10)
+/* 803071A4 00302E04 7C 09 00 40 */ cmplw r9, r0
+/* 803071A8 00302E08 41 82 00 30 */ beq lbl_803071D8
+lbl_803071AC:
+/* 803071AC 00302E0C 38 63 00 01 */ addi r3, r3, 1
+/* 803071B0 00302E10 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 803071B4 00302E14 7D 44 02 14 */ add r10, r4, r0
+/* 803071B8 00302E18 80 0A 00 08 */ lwz r0, 8(r10)
+/* 803071BC 00302E1C 7C 00 38 40 */ cmplw r0, r7
+/* 803071C0 00302E20 40 82 00 10 */ bne lbl_803071D0
+/* 803071C4 00302E24 80 0A 00 04 */ lwz r0, 4(r10)
+/* 803071C8 00302E28 7C 09 00 40 */ cmplw r9, r0
+/* 803071CC 00302E2C 41 82 00 0C */ beq lbl_803071D8
+lbl_803071D0:
+/* 803071D0 00302E30 38 63 00 01 */ addi r3, r3, 1
+/* 803071D4 00302E34 42 00 FF B8 */ bdnz lbl_8030718C
+lbl_803071D8:
+/* 803071D8 00302E38 54 64 04 3E */ clrlwi r4, r3, 0x10
+/* 803071DC 00302E3C 38 60 00 1A */ li r3, 0x1a
+/* 803071E0 00302E40 38 04 FF E6 */ addi r0, r4, -26
+/* 803071E4 00302E44 7C 83 1B 38 */ orc r3, r4, r3
+/* 803071E8 00302E48 54 00 F8 7E */ srwi r0, r0, 1
+/* 803071EC 00302E4C 7C 00 18 50 */ subf r0, r0, r3
+/* 803071F0 00302E50 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_803071F4:
+/* 803071F4 00302E54 2C 03 00 00 */ cmpwi r3, 0
+/* 803071F8 00302E58 41 82 00 08 */ beq lbl_80307200
+/* 803071FC 00302E5C 48 00 00 AC */ b lbl_803072A8
+lbl_80307200:
+/* 80307200 00302E60 1C 08 00 34 */ mulli r0, r8, 0x34
+/* 80307204 00302E64 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80307208 00302E68 7C A4 2B 78 */ mr r4, r5
+/* 8030720C 00302E6C 38 63 EA 60 */ addi r3, r3, lbl_8057EA60@l
+/* 80307210 00302E70 7C 63 02 14 */ add r3, r3, r0
+/* 80307214 00302E74 7C C5 33 78 */ mr r5, r6
+/* 80307218 00302E78 3B 63 01 A4 */ addi r27, r3, 0x1a4
+/* 8030721C 00302E7C 7F C6 F3 78 */ mr r6, r30
+/* 80307220 00302E80 7F 63 DB 78 */ mr r3, r27
+/* 80307224 00302E84 38 E1 00 10 */ addi r7, r1, 0x10
+/* 80307228 00302E88 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030722C 00302E8C 4B FF F8 F5 */ bl VFipdm_disk_convert_sector_into_block
+/* 80307230 00302E90 2C 03 00 00 */ cmpwi r3, 0
+/* 80307234 00302E94 41 82 00 08 */ beq lbl_8030723C
+/* 80307238 00302E98 48 00 00 70 */ b lbl_803072A8
+lbl_8030723C:
+/* 8030723C 00302E9C 80 BB 00 04 */ lwz r5, 4(r27)
+/* 80307240 00302EA0 7F 83 E3 78 */ mr r3, r28
+/* 80307244 00302EA4 7F A4 EB 78 */ mr r4, r29
+/* 80307248 00302EA8 7F E7 FB 78 */ mr r7, r31
+/* 8030724C 00302EAC 81 85 00 14 */ lwz r12, 0x14(r5)
+/* 80307250 00302EB0 80 A1 00 10 */ lwz r5, 0x10(r1)
+/* 80307254 00302EB4 80 C1 00 0C */ lwz r6, 0xc(r1)
+/* 80307258 00302EB8 7D 89 03 A6 */ mtctr r12
+/* 8030725C 00302EBC 4E 80 04 21 */ bctrl
+/* 80307260 00302EC0 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80307264 00302EC4 7C 7C 1B 78 */ mr r28, r3
+/* 80307268 00302EC8 80 BF 00 00 */ lwz r5, 0(r31)
+/* 8030726C 00302ECC 7F 63 DB 78 */ mr r3, r27
+/* 80307270 00302ED0 7F C6 F3 78 */ mr r6, r30
+/* 80307274 00302ED4 7F E8 FB 78 */ mr r8, r31
+/* 80307278 00302ED8 38 E1 00 08 */ addi r7, r1, 8
+/* 8030727C 00302EDC 4B FF F9 55 */ bl VFipdm_disk_convert_block_into_sector
+/* 80307280 00302EE0 2C 1C 00 00 */ cmpwi r28, 0
+/* 80307284 00302EE4 41 82 00 20 */ beq lbl_803072A4
+/* 80307288 00302EE8 80 7B 00 30 */ lwz r3, 0x30(r27)
+/* 8030728C 00302EEC 2C 03 00 00 */ cmpwi r3, 0
+/* 80307290 00302EF0 41 82 00 0C */ beq lbl_8030729C
+/* 80307294 00302EF4 7F 84 E3 78 */ mr r4, r28
+/* 80307298 00302EF8 48 00 15 21 */ bl VFipdm_part_set_driver_error_code
+lbl_8030729C:
+/* 8030729C 00302EFC 38 60 00 15 */ li r3, 0x15
+/* 803072A0 00302F00 48 00 00 08 */ b lbl_803072A8
+lbl_803072A4:
+/* 803072A4 00302F04 38 60 00 00 */ li r3, 0
+lbl_803072A8:
+/* 803072A8 00302F08 39 61 00 30 */ addi r11, r1, 0x30
+/* 803072AC 00302F0C 4B EB FE C9 */ bl _restgpr_27
+/* 803072B0 00302F10 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803072B4 00302F14 7C 08 03 A6 */ mtlr r0
+/* 803072B8 00302F18 38 21 00 30 */ addi r1, r1, 0x30
+/* 803072BC 00302F1C 4E 80 00 20 */ blr
+
+.global VFipdm_disk_physical_write
+VFipdm_disk_physical_write:
+/* 803072C0 00302F20 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803072C4 00302F24 7C 08 02 A6 */ mflr r0
+/* 803072C8 00302F28 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803072CC 00302F2C 39 61 00 30 */ addi r11, r1, 0x30
+/* 803072D0 00302F30 4B EB FE 59 */ bl _savegpr_27
+/* 803072D4 00302F34 2C 03 00 00 */ cmpwi r3, 0
+/* 803072D8 00302F38 7C 7C 1B 78 */ mr r28, r3
+/* 803072DC 00302F3C 7C 9D 23 78 */ mr r29, r4
+/* 803072E0 00302F40 7C FE 3B 78 */ mr r30, r7
+/* 803072E4 00302F44 7D 1F 43 78 */ mr r31, r8
+/* 803072E8 00302F48 41 82 00 24 */ beq lbl_8030730C
+/* 803072EC 00302F4C 2C 04 00 00 */ cmpwi r4, 0
+/* 803072F0 00302F50 41 82 00 1C */ beq lbl_8030730C
+/* 803072F4 00302F54 2C 06 00 00 */ cmpwi r6, 0
+/* 803072F8 00302F58 41 82 00 14 */ beq lbl_8030730C
+/* 803072FC 00302F5C 2C 07 00 00 */ cmpwi r7, 0
+/* 80307300 00302F60 41 82 00 0C */ beq lbl_8030730C
+/* 80307304 00302F64 2C 08 00 00 */ cmpwi r8, 0
+/* 80307308 00302F68 40 82 00 0C */ bne lbl_80307314
+lbl_8030730C:
+/* 8030730C 00302F6C 38 60 00 01 */ li r3, 1
+/* 80307310 00302F70 48 00 01 70 */ b lbl_80307480
+lbl_80307314:
+/* 80307314 00302F74 54 68 06 3E */ clrlwi r8, r3, 0x18
+/* 80307318 00302F78 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 8030731C 00302F7C 28 08 00 1A */ cmplwi r8, 0x1a
+/* 80307320 00302F80 54 69 84 3E */ srwi r9, r3, 0x10
+/* 80307324 00302F84 40 80 00 28 */ bge lbl_8030734C
+/* 80307328 00302F88 28 00 03 00 */ cmplwi r0, 0x300
+/* 8030732C 00302F8C 40 82 00 20 */ bne lbl_8030734C
+/* 80307330 00302F90 1C 08 00 34 */ mulli r0, r8, 0x34
+/* 80307334 00302F94 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80307338 00302F98 38 83 EA 60 */ addi r4, r3, lbl_8057EA60@l
+/* 8030733C 00302F9C 7C 64 02 14 */ add r3, r4, r0
+/* 80307340 00302FA0 80 03 01 B0 */ lwz r0, 0x1b0(r3)
+/* 80307344 00302FA4 7C 09 00 40 */ cmplw r9, r0
+/* 80307348 00302FA8 40 81 00 0C */ ble lbl_80307354
+lbl_8030734C:
+/* 8030734C 00302FAC 38 60 00 01 */ li r3, 1
+/* 80307350 00302FB0 48 00 00 7C */ b lbl_803073CC
+lbl_80307354:
+/* 80307354 00302FB4 38 00 00 0D */ li r0, 0xd
+/* 80307358 00302FB8 38 E3 01 A4 */ addi r7, r3, 0x1a4
+/* 8030735C 00302FBC 38 60 00 00 */ li r3, 0
+/* 80307360 00302FC0 7C 09 03 A6 */ mtctr r0
+lbl_80307364:
+/* 80307364 00302FC4 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80307368 00302FC8 7D 44 02 14 */ add r10, r4, r0
+/* 8030736C 00302FCC 80 0A 00 08 */ lwz r0, 8(r10)
+/* 80307370 00302FD0 7C 00 38 40 */ cmplw r0, r7
+/* 80307374 00302FD4 40 82 00 10 */ bne lbl_80307384
+/* 80307378 00302FD8 80 0A 00 04 */ lwz r0, 4(r10)
+/* 8030737C 00302FDC 7C 09 00 40 */ cmplw r9, r0
+/* 80307380 00302FE0 41 82 00 30 */ beq lbl_803073B0
+lbl_80307384:
+/* 80307384 00302FE4 38 63 00 01 */ addi r3, r3, 1
+/* 80307388 00302FE8 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 8030738C 00302FEC 7D 44 02 14 */ add r10, r4, r0
+/* 80307390 00302FF0 80 0A 00 08 */ lwz r0, 8(r10)
+/* 80307394 00302FF4 7C 00 38 40 */ cmplw r0, r7
+/* 80307398 00302FF8 40 82 00 10 */ bne lbl_803073A8
+/* 8030739C 00302FFC 80 0A 00 04 */ lwz r0, 4(r10)
+/* 803073A0 00303000 7C 09 00 40 */ cmplw r9, r0
+/* 803073A4 00303004 41 82 00 0C */ beq lbl_803073B0
+lbl_803073A8:
+/* 803073A8 00303008 38 63 00 01 */ addi r3, r3, 1
+/* 803073AC 0030300C 42 00 FF B8 */ bdnz lbl_80307364
+lbl_803073B0:
+/* 803073B0 00303010 54 64 04 3E */ clrlwi r4, r3, 0x10
+/* 803073B4 00303014 38 60 00 1A */ li r3, 0x1a
+/* 803073B8 00303018 38 04 FF E6 */ addi r0, r4, -26
+/* 803073BC 0030301C 7C 83 1B 38 */ orc r3, r4, r3
+/* 803073C0 00303020 54 00 F8 7E */ srwi r0, r0, 1
+/* 803073C4 00303024 7C 00 18 50 */ subf r0, r0, r3
+/* 803073C8 00303028 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_803073CC:
+/* 803073CC 0030302C 2C 03 00 00 */ cmpwi r3, 0
+/* 803073D0 00303030 41 82 00 08 */ beq lbl_803073D8
+/* 803073D4 00303034 48 00 00 AC */ b lbl_80307480
+lbl_803073D8:
+/* 803073D8 00303038 1C 08 00 34 */ mulli r0, r8, 0x34
+/* 803073DC 0030303C 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 803073E0 00303040 7C A4 2B 78 */ mr r4, r5
+/* 803073E4 00303044 38 63 EA 60 */ addi r3, r3, lbl_8057EA60@l
+/* 803073E8 00303048 7C 63 02 14 */ add r3, r3, r0
+/* 803073EC 0030304C 7C C5 33 78 */ mr r5, r6
+/* 803073F0 00303050 3B 63 01 A4 */ addi r27, r3, 0x1a4
+/* 803073F4 00303054 7F C6 F3 78 */ mr r6, r30
+/* 803073F8 00303058 7F 63 DB 78 */ mr r3, r27
+/* 803073FC 0030305C 38 E1 00 10 */ addi r7, r1, 0x10
+/* 80307400 00303060 39 01 00 0C */ addi r8, r1, 0xc
+/* 80307404 00303064 4B FF F7 1D */ bl VFipdm_disk_convert_sector_into_block
+/* 80307408 00303068 2C 03 00 00 */ cmpwi r3, 0
+/* 8030740C 0030306C 41 82 00 08 */ beq lbl_80307414
+/* 80307410 00303070 48 00 00 70 */ b lbl_80307480
+lbl_80307414:
+/* 80307414 00303074 80 BB 00 04 */ lwz r5, 4(r27)
+/* 80307418 00303078 7F 83 E3 78 */ mr r3, r28
+/* 8030741C 0030307C 7F A4 EB 78 */ mr r4, r29
+/* 80307420 00303080 7F E7 FB 78 */ mr r7, r31
+/* 80307424 00303084 81 85 00 18 */ lwz r12, 0x18(r5)
+/* 80307428 00303088 80 A1 00 10 */ lwz r5, 0x10(r1)
+/* 8030742C 0030308C 80 C1 00 0C */ lwz r6, 0xc(r1)
+/* 80307430 00303090 7D 89 03 A6 */ mtctr r12
+/* 80307434 00303094 4E 80 04 21 */ bctrl
+/* 80307438 00303098 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 8030743C 0030309C 7C 7C 1B 78 */ mr r28, r3
+/* 80307440 003030A0 80 BF 00 00 */ lwz r5, 0(r31)
+/* 80307444 003030A4 7F 63 DB 78 */ mr r3, r27
+/* 80307448 003030A8 7F C6 F3 78 */ mr r6, r30
+/* 8030744C 003030AC 7F E8 FB 78 */ mr r8, r31
+/* 80307450 003030B0 38 E1 00 08 */ addi r7, r1, 8
+/* 80307454 003030B4 4B FF F7 7D */ bl VFipdm_disk_convert_block_into_sector
+/* 80307458 003030B8 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030745C 003030BC 41 82 00 20 */ beq lbl_8030747C
+/* 80307460 003030C0 80 7B 00 30 */ lwz r3, 0x30(r27)
+/* 80307464 003030C4 2C 03 00 00 */ cmpwi r3, 0
+/* 80307468 003030C8 41 82 00 0C */ beq lbl_80307474
+/* 8030746C 003030CC 7F 84 E3 78 */ mr r4, r28
+/* 80307470 003030D0 48 00 13 49 */ bl VFipdm_part_set_driver_error_code
+lbl_80307474:
+/* 80307474 003030D4 38 60 00 15 */ li r3, 0x15
+/* 80307478 003030D8 48 00 00 08 */ b lbl_80307480
+lbl_8030747C:
+/* 8030747C 003030DC 38 60 00 00 */ li r3, 0
+lbl_80307480:
+/* 80307480 003030E0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80307484 003030E4 4B EB FC F1 */ bl _restgpr_27
+/* 80307488 003030E8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030748C 003030EC 7C 08 03 A6 */ mtlr r0
+/* 80307490 003030F0 38 21 00 30 */ addi r1, r1, 0x30
+/* 80307494 003030F4 4E 80 00 20 */ blr
+
+.global VFipdm_disk_format
+VFipdm_disk_format:
+/* 80307498 003030F8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030749C 003030FC 7C 08 02 A6 */ mflr r0
+/* 803074A0 00303100 2C 03 00 00 */ cmpwi r3, 0
+/* 803074A4 00303104 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803074A8 00303108 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 803074AC 0030310C 40 82 00 0C */ bne lbl_803074B8
+/* 803074B0 00303110 38 60 00 01 */ li r3, 1
+/* 803074B4 00303114 48 00 01 14 */ b lbl_803075C8
+lbl_803074B8:
+/* 803074B8 00303118 54 68 06 3E */ clrlwi r8, r3, 0x18
+/* 803074BC 0030311C 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 803074C0 00303120 28 08 00 1A */ cmplwi r8, 0x1a
+/* 803074C4 00303124 54 69 84 3E */ srwi r9, r3, 0x10
+/* 803074C8 00303128 40 80 00 28 */ bge lbl_803074F0
+/* 803074CC 0030312C 28 00 03 00 */ cmplwi r0, 0x300
+/* 803074D0 00303130 40 82 00 20 */ bne lbl_803074F0
+/* 803074D4 00303134 1C 08 00 34 */ mulli r0, r8, 0x34
+/* 803074D8 00303138 3C A0 80 58 */ lis r5, lbl_8057EA60@ha
+/* 803074DC 0030313C 38 C5 EA 60 */ addi r6, r5, lbl_8057EA60@l
+/* 803074E0 00303140 7C A6 02 14 */ add r5, r6, r0
+/* 803074E4 00303144 80 05 01 B0 */ lwz r0, 0x1b0(r5)
+/* 803074E8 00303148 7C 09 00 40 */ cmplw r9, r0
+/* 803074EC 0030314C 40 81 00 0C */ ble lbl_803074F8
+lbl_803074F0:
+/* 803074F0 00303150 38 00 00 01 */ li r0, 1
+/* 803074F4 00303154 48 00 00 7C */ b lbl_80307570
+lbl_803074F8:
+/* 803074F8 00303158 38 00 00 0D */ li r0, 0xd
+/* 803074FC 0030315C 38 E5 01 A4 */ addi r7, r5, 0x1a4
+/* 80307500 00303160 38 A0 00 00 */ li r5, 0
+/* 80307504 00303164 7C 09 03 A6 */ mtctr r0
+lbl_80307508:
+/* 80307508 00303168 54 A0 1B 78 */ rlwinm r0, r5, 3, 0xd, 0x1c
+/* 8030750C 0030316C 7D 46 02 14 */ add r10, r6, r0
+/* 80307510 00303170 80 0A 00 08 */ lwz r0, 8(r10)
+/* 80307514 00303174 7C 00 38 40 */ cmplw r0, r7
+/* 80307518 00303178 40 82 00 10 */ bne lbl_80307528
+/* 8030751C 0030317C 80 0A 00 04 */ lwz r0, 4(r10)
+/* 80307520 00303180 7C 09 00 40 */ cmplw r9, r0
+/* 80307524 00303184 41 82 00 30 */ beq lbl_80307554
+lbl_80307528:
+/* 80307528 00303188 38 A5 00 01 */ addi r5, r5, 1
+/* 8030752C 0030318C 54 A0 1B 78 */ rlwinm r0, r5, 3, 0xd, 0x1c
+/* 80307530 00303190 7D 46 02 14 */ add r10, r6, r0
+/* 80307534 00303194 80 0A 00 08 */ lwz r0, 8(r10)
+/* 80307538 00303198 7C 00 38 40 */ cmplw r0, r7
+/* 8030753C 0030319C 40 82 00 10 */ bne lbl_8030754C
+/* 80307540 003031A0 80 0A 00 04 */ lwz r0, 4(r10)
+/* 80307544 003031A4 7C 09 00 40 */ cmplw r9, r0
+/* 80307548 003031A8 41 82 00 0C */ beq lbl_80307554
+lbl_8030754C:
+/* 8030754C 003031AC 38 A5 00 01 */ addi r5, r5, 1
+/* 80307550 003031B0 42 00 FF B8 */ bdnz lbl_80307508
+lbl_80307554:
+/* 80307554 003031B4 54 A6 04 3E */ clrlwi r6, r5, 0x10
+/* 80307558 003031B8 38 A0 00 1A */ li r5, 0x1a
+/* 8030755C 003031BC 38 06 FF E6 */ addi r0, r6, -26
+/* 80307560 003031C0 7C C5 2B 38 */ orc r5, r6, r5
+/* 80307564 003031C4 54 00 F8 7E */ srwi r0, r0, 1
+/* 80307568 003031C8 7C 00 28 50 */ subf r0, r0, r5
+/* 8030756C 003031CC 54 00 0F FE */ srwi r0, r0, 0x1f
+lbl_80307570:
+/* 80307570 003031D0 2C 00 00 00 */ cmpwi r0, 0
+/* 80307574 003031D4 41 82 00 0C */ beq lbl_80307580
+/* 80307578 003031D8 7C 03 03 78 */ mr r3, r0
+/* 8030757C 003031DC 48 00 00 4C */ b lbl_803075C8
+lbl_80307580:
+/* 80307580 003031E0 1C 08 00 34 */ mulli r0, r8, 0x34
+/* 80307584 003031E4 3C A0 80 58 */ lis r5, lbl_8057EA60@ha
+/* 80307588 003031E8 38 A5 EA 60 */ addi r5, r5, lbl_8057EA60@l
+/* 8030758C 003031EC 7F E5 02 14 */ add r31, r5, r0
+/* 80307590 003031F0 80 BF 01 A8 */ lwz r5, 0x1a8(r31)
+/* 80307594 003031F4 81 85 00 10 */ lwz r12, 0x10(r5)
+/* 80307598 003031F8 7D 89 03 A6 */ mtctr r12
+/* 8030759C 003031FC 4E 80 04 21 */ bctrl
+/* 803075A0 00303200 2C 03 00 00 */ cmpwi r3, 0
+/* 803075A4 00303204 7C 64 1B 78 */ mr r4, r3
+/* 803075A8 00303208 41 82 00 1C */ beq lbl_803075C4
+/* 803075AC 0030320C 80 7F 01 D4 */ lwz r3, 0x1d4(r31)
+/* 803075B0 00303210 2C 03 00 00 */ cmpwi r3, 0
+/* 803075B4 00303214 41 82 00 08 */ beq lbl_803075BC
+/* 803075B8 00303218 48 00 12 01 */ bl VFipdm_part_set_driver_error_code
+lbl_803075BC:
+/* 803075BC 0030321C 38 60 00 15 */ li r3, 0x15
+/* 803075C0 00303220 48 00 00 08 */ b lbl_803075C8
+lbl_803075C4:
+/* 803075C4 00303224 38 60 00 00 */ li r3, 0
+lbl_803075C8:
+/* 803075C8 00303228 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 803075CC 0030322C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 803075D0 00303230 7C 08 03 A6 */ mtlr r0
+/* 803075D4 00303234 38 21 00 10 */ addi r1, r1, 0x10
+/* 803075D8 00303238 4E 80 00 20 */ blr
+
+.global VFipdm_disk_get_lba_size
+VFipdm_disk_get_lba_size:
+/* 803075DC 0030323C 2C 03 00 00 */ cmpwi r3, 0
+/* 803075E0 00303240 41 82 00 0C */ beq lbl_803075EC
+/* 803075E4 00303244 2C 04 00 00 */ cmpwi r4, 0
+/* 803075E8 00303248 40 82 00 0C */ bne lbl_803075F4
+lbl_803075EC:
+/* 803075EC 0030324C 38 60 00 01 */ li r3, 1
+/* 803075F0 00303250 4E 80 00 20 */ blr
+lbl_803075F4:
+/* 803075F4 00303254 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 803075F8 00303258 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 803075FC 0030325C 28 07 00 1A */ cmplwi r7, 0x1a
+/* 80307600 00303260 54 68 84 3E */ srwi r8, r3, 0x10
+/* 80307604 00303264 40 80 00 28 */ bge lbl_8030762C
+/* 80307608 00303268 28 00 03 00 */ cmplwi r0, 0x300
+/* 8030760C 0030326C 40 82 00 20 */ bne lbl_8030762C
+/* 80307610 00303270 1C 07 00 34 */ mulli r0, r7, 0x34
+/* 80307614 00303274 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80307618 00303278 38 A3 EA 60 */ addi r5, r3, lbl_8057EA60@l
+/* 8030761C 0030327C 7C 65 02 14 */ add r3, r5, r0
+/* 80307620 00303280 80 03 01 B0 */ lwz r0, 0x1b0(r3)
+/* 80307624 00303284 7C 08 00 40 */ cmplw r8, r0
+/* 80307628 00303288 40 81 00 0C */ ble lbl_80307634
+lbl_8030762C:
+/* 8030762C 0030328C 38 60 00 01 */ li r3, 1
+/* 80307630 00303290 48 00 00 7C */ b lbl_803076AC
+lbl_80307634:
+/* 80307634 00303294 38 00 00 0D */ li r0, 0xd
+/* 80307638 00303298 38 C3 01 A4 */ addi r6, r3, 0x1a4
+/* 8030763C 0030329C 38 60 00 00 */ li r3, 0
+/* 80307640 003032A0 7C 09 03 A6 */ mtctr r0
+lbl_80307644:
+/* 80307644 003032A4 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80307648 003032A8 7D 25 02 14 */ add r9, r5, r0
+/* 8030764C 003032AC 80 09 00 08 */ lwz r0, 8(r9)
+/* 80307650 003032B0 7C 00 30 40 */ cmplw r0, r6
+/* 80307654 003032B4 40 82 00 10 */ bne lbl_80307664
+/* 80307658 003032B8 80 09 00 04 */ lwz r0, 4(r9)
+/* 8030765C 003032BC 7C 08 00 40 */ cmplw r8, r0
+/* 80307660 003032C0 41 82 00 30 */ beq lbl_80307690
+lbl_80307664:
+/* 80307664 003032C4 38 63 00 01 */ addi r3, r3, 1
+/* 80307668 003032C8 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 8030766C 003032CC 7D 25 02 14 */ add r9, r5, r0
+/* 80307670 003032D0 80 09 00 08 */ lwz r0, 8(r9)
+/* 80307674 003032D4 7C 00 30 40 */ cmplw r0, r6
+/* 80307678 003032D8 40 82 00 10 */ bne lbl_80307688
+/* 8030767C 003032DC 80 09 00 04 */ lwz r0, 4(r9)
+/* 80307680 003032E0 7C 08 00 40 */ cmplw r8, r0
+/* 80307684 003032E4 41 82 00 0C */ beq lbl_80307690
+lbl_80307688:
+/* 80307688 003032E8 38 63 00 01 */ addi r3, r3, 1
+/* 8030768C 003032EC 42 00 FF B8 */ bdnz lbl_80307644
+lbl_80307690:
+/* 80307690 003032F0 54 65 04 3E */ clrlwi r5, r3, 0x10
+/* 80307694 003032F4 38 60 00 1A */ li r3, 0x1a
+/* 80307698 003032F8 38 05 FF E6 */ addi r0, r5, -26
+/* 8030769C 003032FC 7C A3 1B 38 */ orc r3, r5, r3
+/* 803076A0 00303300 54 00 F8 7E */ srwi r0, r0, 1
+/* 803076A4 00303304 7C 00 18 50 */ subf r0, r0, r3
+/* 803076A8 00303308 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_803076AC:
+/* 803076AC 0030330C 2C 03 00 00 */ cmpwi r3, 0
+/* 803076B0 00303310 4C 82 00 20 */ bnelr
+/* 803076B4 00303314 1C 07 00 34 */ mulli r0, r7, 0x34
+/* 803076B8 00303318 3C A0 80 58 */ lis r5, lbl_8057EA60@ha
+/* 803076BC 0030331C 38 60 00 00 */ li r3, 0
+/* 803076C0 00303320 38 A5 EA 60 */ addi r5, r5, lbl_8057EA60@l
+/* 803076C4 00303324 7C A5 02 14 */ add r5, r5, r0
+/* 803076C8 00303328 A0 05 01 C4 */ lhz r0, 0x1c4(r5)
+/* 803076CC 0030332C B0 04 00 00 */ sth r0, 0(r4)
+/* 803076D0 00303330 4E 80 00 20 */ blr
+
+.global VFipdm_disk_get_media_information
+VFipdm_disk_get_media_information:
+/* 803076D4 00303334 2C 03 00 00 */ cmpwi r3, 0
+/* 803076D8 00303338 41 82 00 0C */ beq lbl_803076E4
+/* 803076DC 0030333C 2C 04 00 00 */ cmpwi r4, 0
+/* 803076E0 00303340 40 82 00 0C */ bne lbl_803076EC
+lbl_803076E4:
+/* 803076E4 00303344 38 60 00 01 */ li r3, 1
+/* 803076E8 00303348 4E 80 00 20 */ blr
+lbl_803076EC:
+/* 803076EC 0030334C 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 803076F0 00303350 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 803076F4 00303354 28 07 00 1A */ cmplwi r7, 0x1a
+/* 803076F8 00303358 54 68 84 3E */ srwi r8, r3, 0x10
+/* 803076FC 0030335C 40 80 00 28 */ bge lbl_80307724
+/* 80307700 00303360 28 00 03 00 */ cmplwi r0, 0x300
+/* 80307704 00303364 40 82 00 20 */ bne lbl_80307724
+/* 80307708 00303368 1C 07 00 34 */ mulli r0, r7, 0x34
+/* 8030770C 0030336C 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80307710 00303370 38 A3 EA 60 */ addi r5, r3, lbl_8057EA60@l
+/* 80307714 00303374 7C 65 02 14 */ add r3, r5, r0
+/* 80307718 00303378 80 03 01 B0 */ lwz r0, 0x1b0(r3)
+/* 8030771C 0030337C 7C 08 00 40 */ cmplw r8, r0
+/* 80307720 00303380 40 81 00 0C */ ble lbl_8030772C
+lbl_80307724:
+/* 80307724 00303384 38 60 00 01 */ li r3, 1
+/* 80307728 00303388 48 00 00 7C */ b lbl_803077A4
+lbl_8030772C:
+/* 8030772C 0030338C 38 00 00 0D */ li r0, 0xd
+/* 80307730 00303390 38 C3 01 A4 */ addi r6, r3, 0x1a4
+/* 80307734 00303394 38 60 00 00 */ li r3, 0
+/* 80307738 00303398 7C 09 03 A6 */ mtctr r0
+lbl_8030773C:
+/* 8030773C 0030339C 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80307740 003033A0 7D 25 02 14 */ add r9, r5, r0
+/* 80307744 003033A4 80 09 00 08 */ lwz r0, 8(r9)
+/* 80307748 003033A8 7C 00 30 40 */ cmplw r0, r6
+/* 8030774C 003033AC 40 82 00 10 */ bne lbl_8030775C
+/* 80307750 003033B0 80 09 00 04 */ lwz r0, 4(r9)
+/* 80307754 003033B4 7C 08 00 40 */ cmplw r8, r0
+/* 80307758 003033B8 41 82 00 30 */ beq lbl_80307788
+lbl_8030775C:
+/* 8030775C 003033BC 38 63 00 01 */ addi r3, r3, 1
+/* 80307760 003033C0 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80307764 003033C4 7D 25 02 14 */ add r9, r5, r0
+/* 80307768 003033C8 80 09 00 08 */ lwz r0, 8(r9)
+/* 8030776C 003033CC 7C 00 30 40 */ cmplw r0, r6
+/* 80307770 003033D0 40 82 00 10 */ bne lbl_80307780
+/* 80307774 003033D4 80 09 00 04 */ lwz r0, 4(r9)
+/* 80307778 003033D8 7C 08 00 40 */ cmplw r8, r0
+/* 8030777C 003033DC 41 82 00 0C */ beq lbl_80307788
+lbl_80307780:
+/* 80307780 003033E0 38 63 00 01 */ addi r3, r3, 1
+/* 80307784 003033E4 42 00 FF B8 */ bdnz lbl_8030773C
+lbl_80307788:
+/* 80307788 003033E8 54 65 04 3E */ clrlwi r5, r3, 0x10
+/* 8030778C 003033EC 38 60 00 1A */ li r3, 0x1a
+/* 80307790 003033F0 38 05 FF E6 */ addi r0, r5, -26
+/* 80307794 003033F4 7C A3 1B 38 */ orc r3, r5, r3
+/* 80307798 003033F8 54 00 F8 7E */ srwi r0, r0, 1
+/* 8030779C 003033FC 7C 00 18 50 */ subf r0, r0, r3
+/* 803077A0 00303400 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_803077A4:
+/* 803077A4 00303404 2C 03 00 00 */ cmpwi r3, 0
+/* 803077A8 00303408 4C 82 00 20 */ bnelr
+/* 803077AC 0030340C 1C 07 00 34 */ mulli r0, r7, 0x34
+/* 803077B0 00303410 3C A0 80 58 */ lis r5, lbl_8057EA60@ha
+/* 803077B4 00303414 38 60 00 00 */ li r3, 0
+/* 803077B8 00303418 38 A5 EA 60 */ addi r5, r5, lbl_8057EA60@l
+/* 803077BC 0030341C 7C C5 02 14 */ add r6, r5, r0
+/* 803077C0 00303420 80 A6 01 BC */ lwz r5, 0x1bc(r6)
+/* 803077C4 00303424 80 06 01 C0 */ lwz r0, 0x1c0(r6)
+/* 803077C8 00303428 90 A4 00 00 */ stw r5, 0(r4)
+/* 803077CC 0030342C 90 04 00 04 */ stw r0, 4(r4)
+/* 803077D0 00303430 80 A6 01 C4 */ lwz r5, 0x1c4(r6)
+/* 803077D4 00303434 80 06 01 C8 */ lwz r0, 0x1c8(r6)
+/* 803077D8 00303438 90 A4 00 08 */ stw r5, 8(r4)
+/* 803077DC 0030343C 90 04 00 0C */ stw r0, 0xc(r4)
+/* 803077E0 00303440 80 06 01 CC */ lwz r0, 0x1cc(r6)
+/* 803077E4 00303444 90 04 00 10 */ stw r0, 0x10(r4)
+/* 803077E8 00303448 4E 80 00 20 */ blr
+
+.global VFipdm_disk_set_disk
+VFipdm_disk_set_disk:
+/* 803077EC 0030344C 2C 03 00 00 */ cmpwi r3, 0
+/* 803077F0 00303450 41 82 00 0C */ beq lbl_803077FC
+/* 803077F4 00303454 2C 04 00 00 */ cmpwi r4, 0
+/* 803077F8 00303458 40 82 00 0C */ bne lbl_80307804
+lbl_803077FC:
+/* 803077FC 0030345C 38 60 00 01 */ li r3, 1
+/* 80307800 00303460 4E 80 00 20 */ blr
+lbl_80307804:
+/* 80307804 00303464 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 80307808 00303468 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 8030780C 0030346C 28 07 00 1A */ cmplwi r7, 0x1a
+/* 80307810 00303470 54 68 84 3E */ srwi r8, r3, 0x10
+/* 80307814 00303474 40 80 00 28 */ bge lbl_8030783C
+/* 80307818 00303478 28 00 03 00 */ cmplwi r0, 0x300
+/* 8030781C 0030347C 40 82 00 20 */ bne lbl_8030783C
+/* 80307820 00303480 1C 07 00 34 */ mulli r0, r7, 0x34
+/* 80307824 00303484 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80307828 00303488 38 A3 EA 60 */ addi r5, r3, lbl_8057EA60@l
+/* 8030782C 0030348C 7C 65 02 14 */ add r3, r5, r0
+/* 80307830 00303490 80 03 01 B0 */ lwz r0, 0x1b0(r3)
+/* 80307834 00303494 7C 08 00 40 */ cmplw r8, r0
+/* 80307838 00303498 40 81 00 0C */ ble lbl_80307844
+lbl_8030783C:
+/* 8030783C 0030349C 38 60 00 01 */ li r3, 1
+/* 80307840 003034A0 48 00 00 7C */ b lbl_803078BC
+lbl_80307844:
+/* 80307844 003034A4 38 00 00 0D */ li r0, 0xd
+/* 80307848 003034A8 38 C3 01 A4 */ addi r6, r3, 0x1a4
+/* 8030784C 003034AC 38 60 00 00 */ li r3, 0
+/* 80307850 003034B0 7C 09 03 A6 */ mtctr r0
+lbl_80307854:
+/* 80307854 003034B4 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80307858 003034B8 7D 25 02 14 */ add r9, r5, r0
+/* 8030785C 003034BC 80 09 00 08 */ lwz r0, 8(r9)
+/* 80307860 003034C0 7C 00 30 40 */ cmplw r0, r6
+/* 80307864 003034C4 40 82 00 10 */ bne lbl_80307874
+/* 80307868 003034C8 80 09 00 04 */ lwz r0, 4(r9)
+/* 8030786C 003034CC 7C 08 00 40 */ cmplw r8, r0
+/* 80307870 003034D0 41 82 00 30 */ beq lbl_803078A0
+lbl_80307874:
+/* 80307874 003034D4 38 63 00 01 */ addi r3, r3, 1
+/* 80307878 003034D8 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 8030787C 003034DC 7D 25 02 14 */ add r9, r5, r0
+/* 80307880 003034E0 80 09 00 08 */ lwz r0, 8(r9)
+/* 80307884 003034E4 7C 00 30 40 */ cmplw r0, r6
+/* 80307888 003034E8 40 82 00 10 */ bne lbl_80307898
+/* 8030788C 003034EC 80 09 00 04 */ lwz r0, 4(r9)
+/* 80307890 003034F0 7C 08 00 40 */ cmplw r8, r0
+/* 80307894 003034F4 41 82 00 0C */ beq lbl_803078A0
+lbl_80307898:
+/* 80307898 003034F8 38 63 00 01 */ addi r3, r3, 1
+/* 8030789C 003034FC 42 00 FF B8 */ bdnz lbl_80307854
+lbl_803078A0:
+/* 803078A0 00303500 54 65 04 3E */ clrlwi r5, r3, 0x10
+/* 803078A4 00303504 38 60 00 1A */ li r3, 0x1a
+/* 803078A8 00303508 38 05 FF E6 */ addi r0, r5, -26
+/* 803078AC 0030350C 7C A3 1B 38 */ orc r3, r5, r3
+/* 803078B0 00303510 54 00 F8 7E */ srwi r0, r0, 1
+/* 803078B4 00303514 7C 00 18 50 */ subf r0, r0, r3
+/* 803078B8 00303518 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_803078BC:
+/* 803078BC 0030351C 2C 03 00 00 */ cmpwi r3, 0
+/* 803078C0 00303520 4C 82 00 20 */ bnelr
+/* 803078C4 00303524 1C 07 00 34 */ mulli r0, r7, 0x34
+/* 803078C8 00303528 3C A0 80 58 */ lis r5, lbl_8057EA60@ha
+/* 803078CC 0030352C 38 60 00 00 */ li r3, 0
+/* 803078D0 00303530 38 A5 EA 60 */ addi r5, r5, lbl_8057EA60@l
+/* 803078D4 00303534 7C A5 02 14 */ add r5, r5, r0
+/* 803078D8 00303538 90 85 01 D4 */ stw r4, 0x1d4(r5)
+/* 803078DC 0030353C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pdm_dskmng.s b/asm/SDK/VF/pdm_dskmng.s new file mode 100644 index 0000000..3515b77 --- /dev/null +++ b/asm/SDK/VF/pdm_dskmng.s @@ -0,0 +1,80 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFipdm_init_diskmanager
+VFipdm_init_diskmanager:
+/* 80308DB0 00304A10 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80308DB4 00304A14 7C 08 02 A6 */ mflr r0
+/* 80308DB8 00304A18 38 80 00 00 */ li r4, 0
+/* 80308DBC 00304A1C 38 A0 0B 64 */ li r5, 0xb64
+/* 80308DC0 00304A20 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80308DC4 00304A24 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80308DC8 00304A28 3F E0 80 58 */ lis r31, lbl_8057EA60@ha
+/* 80308DCC 00304A2C 38 7F EA 60 */ addi r3, r31, lbl_8057EA60@l
+/* 80308DD0 00304A30 4B FF C2 05 */ bl VFipf_memset
+/* 80308DD4 00304A34 38 FF EA 60 */ addi r7, r31, -5536
+/* 80308DD8 00304A38 38 C0 00 00 */ li r6, 0
+/* 80308DDC 00304A3C 90 C7 01 B8 */ stw r6, 0x1b8(r7)
+/* 80308DE0 00304A40 38 00 00 18 */ li r0, 0x18
+/* 80308DE4 00304A44 1C 60 00 34 */ mulli r3, r0, 0x34
+/* 80308DE8 00304A48 90 C7 01 EC */ stw r6, 0x1ec(r7)
+/* 80308DEC 00304A4C 90 C7 02 20 */ stw r6, 0x220(r7)
+/* 80308DF0 00304A50 7C A7 1A 14 */ add r5, r7, r3
+/* 80308DF4 00304A54 1C 00 00 2C */ mulli r0, r0, 0x2c
+/* 80308DF8 00304A58 38 60 00 00 */ li r3, 0
+/* 80308DFC 00304A5C 90 C7 02 54 */ stw r6, 0x254(r7)
+/* 80308E00 00304A60 90 C7 02 88 */ stw r6, 0x288(r7)
+/* 80308E04 00304A64 7C 87 02 14 */ add r4, r7, r0
+/* 80308E08 00304A68 90 C7 02 BC */ stw r6, 0x2bc(r7)
+/* 80308E0C 00304A6C 90 C7 02 F0 */ stw r6, 0x2f0(r7)
+/* 80308E10 00304A70 90 C7 03 24 */ stw r6, 0x324(r7)
+/* 80308E14 00304A74 90 C7 03 58 */ stw r6, 0x358(r7)
+/* 80308E18 00304A78 90 C7 03 8C */ stw r6, 0x38c(r7)
+/* 80308E1C 00304A7C 90 C7 03 C0 */ stw r6, 0x3c0(r7)
+/* 80308E20 00304A80 90 C7 03 F4 */ stw r6, 0x3f4(r7)
+/* 80308E24 00304A84 90 C7 04 28 */ stw r6, 0x428(r7)
+/* 80308E28 00304A88 90 C7 04 5C */ stw r6, 0x45c(r7)
+/* 80308E2C 00304A8C 90 C7 04 90 */ stw r6, 0x490(r7)
+/* 80308E30 00304A90 90 C7 04 C4 */ stw r6, 0x4c4(r7)
+/* 80308E34 00304A94 90 C7 04 F8 */ stw r6, 0x4f8(r7)
+/* 80308E38 00304A98 90 C7 05 2C */ stw r6, 0x52c(r7)
+/* 80308E3C 00304A9C 90 C7 05 60 */ stw r6, 0x560(r7)
+/* 80308E40 00304AA0 90 C7 05 94 */ stw r6, 0x594(r7)
+/* 80308E44 00304AA4 90 C7 05 C8 */ stw r6, 0x5c8(r7)
+/* 80308E48 00304AA8 90 C7 05 FC */ stw r6, 0x5fc(r7)
+/* 80308E4C 00304AAC 90 C7 06 30 */ stw r6, 0x630(r7)
+/* 80308E50 00304AB0 90 C7 06 64 */ stw r6, 0x664(r7)
+/* 80308E54 00304AB4 90 C5 01 B8 */ stw r6, 0x1b8(r5)
+/* 80308E58 00304AB8 90 C5 01 EC */ stw r6, 0x1ec(r5)
+/* 80308E5C 00304ABC 90 C7 06 FC */ stw r6, 0x6fc(r7)
+/* 80308E60 00304AC0 90 C7 07 28 */ stw r6, 0x728(r7)
+/* 80308E64 00304AC4 90 C7 07 54 */ stw r6, 0x754(r7)
+/* 80308E68 00304AC8 90 C7 07 80 */ stw r6, 0x780(r7)
+/* 80308E6C 00304ACC 90 C7 07 AC */ stw r6, 0x7ac(r7)
+/* 80308E70 00304AD0 90 C7 07 D8 */ stw r6, 0x7d8(r7)
+/* 80308E74 00304AD4 90 C7 08 04 */ stw r6, 0x804(r7)
+/* 80308E78 00304AD8 90 C7 08 30 */ stw r6, 0x830(r7)
+/* 80308E7C 00304ADC 90 C7 08 5C */ stw r6, 0x85c(r7)
+/* 80308E80 00304AE0 90 C7 08 88 */ stw r6, 0x888(r7)
+/* 80308E84 00304AE4 90 C7 08 B4 */ stw r6, 0x8b4(r7)
+/* 80308E88 00304AE8 90 C7 08 E0 */ stw r6, 0x8e0(r7)
+/* 80308E8C 00304AEC 90 C7 09 0C */ stw r6, 0x90c(r7)
+/* 80308E90 00304AF0 90 C7 09 38 */ stw r6, 0x938(r7)
+/* 80308E94 00304AF4 90 C7 09 64 */ stw r6, 0x964(r7)
+/* 80308E98 00304AF8 90 C7 09 90 */ stw r6, 0x990(r7)
+/* 80308E9C 00304AFC 90 C7 09 BC */ stw r6, 0x9bc(r7)
+/* 80308EA0 00304B00 90 C7 09 E8 */ stw r6, 0x9e8(r7)
+/* 80308EA4 00304B04 90 C7 0A 14 */ stw r6, 0xa14(r7)
+/* 80308EA8 00304B08 90 C7 0A 40 */ stw r6, 0xa40(r7)
+/* 80308EAC 00304B0C 90 C7 0A 6C */ stw r6, 0xa6c(r7)
+/* 80308EB0 00304B10 90 C7 0A 98 */ stw r6, 0xa98(r7)
+/* 80308EB4 00304B14 90 C7 0A C4 */ stw r6, 0xac4(r7)
+/* 80308EB8 00304B18 90 C7 0A F0 */ stw r6, 0xaf0(r7)
+/* 80308EBC 00304B1C 90 C4 06 FC */ stw r6, 0x6fc(r4)
+/* 80308EC0 00304B20 90 C4 07 28 */ stw r6, 0x728(r4)
+/* 80308EC4 00304B24 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80308EC8 00304B28 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80308ECC 00304B2C 7C 08 03 A6 */ mtlr r0
+/* 80308ED0 00304B30 38 21 00 10 */ addi r1, r1, 0x10
+/* 80308ED4 00304B34 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pdm_mbr.s b/asm/SDK/VF/pdm_mbr.s new file mode 100644 index 0000000..2488bcc --- /dev/null +++ b/asm/SDK/VF/pdm_mbr.s @@ -0,0 +1,434 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFipdm_mbr_get_table
+VFipdm_mbr_get_table:
+/* 803087F0 00304450 2C 03 00 00 */ cmpwi r3, 0
+/* 803087F4 00304454 41 82 00 0C */ beq lbl_80308800
+/* 803087F8 00304458 2C 05 00 00 */ cmpwi r5, 0
+/* 803087FC 0030445C 40 82 00 0C */ bne lbl_80308808
+lbl_80308800:
+/* 80308800 00304460 38 60 00 01 */ li r3, 1
+/* 80308804 00304464 4E 80 00 20 */ blr
+lbl_80308808:
+/* 80308808 00304468 2C 04 00 00 */ cmpwi r4, 0
+/* 8030880C 0030446C 40 82 00 14 */ bne lbl_80308820
+/* 80308810 00304470 38 00 00 00 */ li r0, 0
+/* 80308814 00304474 90 05 00 04 */ stw r0, 4(r5)
+/* 80308818 00304478 90 05 00 00 */ stw r0, 0(r5)
+/* 8030881C 0030447C 48 00 00 18 */ b lbl_80308834
+lbl_80308820:
+/* 80308820 00304480 80 05 00 04 */ lwz r0, 4(r5)
+/* 80308824 00304484 2C 00 00 00 */ cmpwi r0, 0
+/* 80308828 00304488 40 82 00 08 */ bne lbl_80308830
+/* 8030882C 0030448C 90 85 00 04 */ stw r4, 4(r5)
+lbl_80308830:
+/* 80308830 00304490 90 85 00 00 */ stw r4, 0(r5)
+lbl_80308834:
+/* 80308834 00304494 38 00 00 04 */ li r0, 4
+/* 80308838 00304498 38 63 01 BE */ addi r3, r3, 0x1be
+/* 8030883C 0030449C 7C 09 03 A6 */ mtctr r0
+lbl_80308840:
+/* 80308840 003044A0 88 03 00 00 */ lbz r0, 0(r3)
+/* 80308844 003044A4 98 05 00 08 */ stb r0, 8(r5)
+/* 80308848 003044A8 88 03 00 04 */ lbz r0, 4(r3)
+/* 8030884C 003044AC 98 05 00 09 */ stb r0, 9(r5)
+/* 80308850 003044B0 88 03 00 01 */ lbz r0, 1(r3)
+/* 80308854 003044B4 98 05 00 0C */ stb r0, 0xc(r5)
+/* 80308858 003044B8 88 83 00 03 */ lbz r4, 3(r3)
+/* 8030885C 003044BC 88 03 00 02 */ lbz r0, 2(r3)
+/* 80308860 003044C0 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
+/* 80308864 003044C4 54 06 15 AE */ rlwinm r6, r0, 2, 0x16, 0x17
+/* 80308868 003044C8 7C 04 46 70 */ srawi r4, r0, 8
+/* 8030886C 003044CC 54 00 06 BE */ clrlwi r0, r0, 0x1a
+/* 80308870 003044D0 7C 86 22 14 */ add r4, r6, r4
+/* 80308874 003044D4 B0 85 00 0A */ sth r4, 0xa(r5)
+/* 80308878 003044D8 98 05 00 0D */ stb r0, 0xd(r5)
+/* 8030887C 003044DC 88 83 00 06 */ lbz r4, 6(r3)
+/* 80308880 003044E0 88 03 00 05 */ lbz r0, 5(r3)
+/* 80308884 003044E4 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
+/* 80308888 003044E8 98 05 00 10 */ stb r0, 0x10(r5)
+/* 8030888C 003044EC 88 83 00 07 */ lbz r4, 7(r3)
+/* 80308890 003044F0 88 03 00 06 */ lbz r0, 6(r3)
+/* 80308894 003044F4 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
+/* 80308898 003044F8 54 06 15 AE */ rlwinm r6, r0, 2, 0x16, 0x17
+/* 8030889C 003044FC 7C 04 46 70 */ srawi r4, r0, 8
+/* 803088A0 00304500 54 00 06 BE */ clrlwi r0, r0, 0x1a
+/* 803088A4 00304504 7C 86 22 14 */ add r4, r6, r4
+/* 803088A8 00304508 B0 85 00 0E */ sth r4, 0xe(r5)
+/* 803088AC 0030450C 98 05 00 11 */ stb r0, 0x11(r5)
+/* 803088B0 00304510 88 83 00 09 */ lbz r4, 9(r3)
+/* 803088B4 00304514 88 03 00 08 */ lbz r0, 8(r3)
+/* 803088B8 00304518 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
+/* 803088BC 0030451C 88 C3 00 0A */ lbz r6, 0xa(r3)
+/* 803088C0 00304520 88 83 00 0B */ lbz r4, 0xb(r3)
+/* 803088C4 00304524 50 C0 82 1E */ rlwimi r0, r6, 0x10, 8, 0xf
+/* 803088C8 00304528 50 80 C0 0E */ rlwimi r0, r4, 0x18, 0, 7
+/* 803088CC 0030452C 90 05 00 14 */ stw r0, 0x14(r5)
+/* 803088D0 00304530 88 C3 00 0E */ lbz r6, 0xe(r3)
+/* 803088D4 00304534 88 83 00 0D */ lbz r4, 0xd(r3)
+/* 803088D8 00304538 88 03 00 0C */ lbz r0, 0xc(r3)
+/* 803088DC 0030453C 88 E3 00 0F */ lbz r7, 0xf(r3)
+/* 803088E0 00304540 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17
+/* 803088E4 00304544 50 C0 82 1E */ rlwimi r0, r6, 0x10, 8, 0xf
+/* 803088E8 00304548 38 63 00 10 */ addi r3, r3, 0x10
+/* 803088EC 0030454C 50 E0 C0 0E */ rlwimi r0, r7, 0x18, 0, 7
+/* 803088F0 00304550 90 05 00 18 */ stw r0, 0x18(r5)
+/* 803088F4 00304554 38 A5 00 14 */ addi r5, r5, 0x14
+/* 803088F8 00304558 42 00 FF 48 */ bdnz lbl_80308840
+/* 803088FC 0030455C 38 60 00 00 */ li r3, 0
+/* 80308900 00304560 4E 80 00 20 */ blr
+
+.global VFipdm_mbr_get_mbr_part_table
+VFipdm_mbr_get_mbr_part_table:
+/* 80308904 00304564 94 21 FD E0 */ stwu r1, -0x220(r1)
+/* 80308908 00304568 7C 08 02 A6 */ mflr r0
+/* 8030890C 0030456C 2C 03 00 00 */ cmpwi r3, 0
+/* 80308910 00304570 90 01 02 24 */ stw r0, 0x224(r1)
+/* 80308914 00304574 93 E1 02 1C */ stw r31, 0x21c(r1)
+/* 80308918 00304578 7C 9F 23 78 */ mr r31, r4
+/* 8030891C 0030457C 93 C1 02 18 */ stw r30, 0x218(r1)
+/* 80308920 00304580 7C 7E 1B 78 */ mr r30, r3
+/* 80308924 00304584 41 82 00 0C */ beq lbl_80308930
+/* 80308928 00304588 2C 04 00 00 */ cmpwi r4, 0
+/* 8030892C 0030458C 40 82 00 0C */ bne lbl_80308938
+lbl_80308930:
+/* 80308930 00304590 38 60 00 01 */ li r3, 1
+/* 80308934 00304594 48 00 00 78 */ b lbl_803089AC
+lbl_80308938:
+/* 80308938 00304598 4B FF E4 65 */ bl VFipdm_disk_check_disk_handle
+/* 8030893C 0030459C 2C 03 00 00 */ cmpwi r3, 0
+/* 80308940 003045A0 41 82 00 08 */ beq lbl_80308948
+/* 80308944 003045A4 48 00 00 68 */ b lbl_803089AC
+lbl_80308948:
+/* 80308948 003045A8 7F C3 F3 78 */ mr r3, r30
+/* 8030894C 003045AC 38 81 00 10 */ addi r4, r1, 0x10
+/* 80308950 003045B0 39 01 00 0C */ addi r8, r1, 0xc
+/* 80308954 003045B4 38 A0 00 00 */ li r5, 0
+/* 80308958 003045B8 38 C0 00 01 */ li r6, 1
+/* 8030895C 003045BC 38 E0 02 00 */ li r7, 0x200
+/* 80308960 003045C0 4B FF E7 89 */ bl VFipdm_disk_physical_read
+/* 80308964 003045C4 2C 03 00 00 */ cmpwi r3, 0
+/* 80308968 003045C8 41 82 00 08 */ beq lbl_80308970
+/* 8030896C 003045CC 48 00 00 40 */ b lbl_803089AC
+lbl_80308970:
+/* 80308970 003045D0 7F C3 F3 78 */ mr r3, r30
+/* 80308974 003045D4 38 81 00 10 */ addi r4, r1, 0x10
+/* 80308978 003045D8 38 A1 00 08 */ addi r5, r1, 8
+/* 8030897C 003045DC 48 00 02 19 */ bl VFipdm_mbr_check_master_boot_record
+/* 80308980 003045E0 80 01 00 08 */ lwz r0, 8(r1)
+/* 80308984 003045E4 2C 00 00 00 */ cmpwi r0, 0
+/* 80308988 003045E8 41 82 00 18 */ beq lbl_803089A0
+/* 8030898C 003045EC 7F E5 FB 78 */ mr r5, r31
+/* 80308990 003045F0 38 61 00 10 */ addi r3, r1, 0x10
+/* 80308994 003045F4 38 80 00 00 */ li r4, 0
+/* 80308998 003045F8 4B FF FE 59 */ bl VFipdm_mbr_get_table
+/* 8030899C 003045FC 48 00 00 0C */ b lbl_803089A8
+lbl_803089A0:
+/* 803089A0 00304600 38 60 00 05 */ li r3, 5
+/* 803089A4 00304604 48 00 00 08 */ b lbl_803089AC
+lbl_803089A8:
+/* 803089A8 00304608 38 60 00 00 */ li r3, 0
+lbl_803089AC:
+/* 803089AC 0030460C 80 01 02 24 */ lwz r0, 0x224(r1)
+/* 803089B0 00304610 83 E1 02 1C */ lwz r31, 0x21c(r1)
+/* 803089B4 00304614 83 C1 02 18 */ lwz r30, 0x218(r1)
+/* 803089B8 00304618 7C 08 03 A6 */ mtlr r0
+/* 803089BC 0030461C 38 21 02 20 */ addi r1, r1, 0x220
+/* 803089C0 00304620 4E 80 00 20 */ blr
+
+.global VFipdm_mbr_get_epbr_part_table
+VFipdm_mbr_get_epbr_part_table:
+/* 803089C4 00304624 94 21 FD C0 */ stwu r1, -0x240(r1)
+/* 803089C8 00304628 7C 08 02 A6 */ mflr r0
+/* 803089CC 0030462C 2C 03 00 00 */ cmpwi r3, 0
+/* 803089D0 00304630 90 01 02 44 */ stw r0, 0x244(r1)
+/* 803089D4 00304634 93 E1 02 3C */ stw r31, 0x23c(r1)
+/* 803089D8 00304638 93 C1 02 38 */ stw r30, 0x238(r1)
+/* 803089DC 0030463C 7C 9E 23 78 */ mr r30, r4
+/* 803089E0 00304640 93 A1 02 34 */ stw r29, 0x234(r1)
+/* 803089E4 00304644 7C 7D 1B 78 */ mr r29, r3
+/* 803089E8 00304648 41 82 00 0C */ beq lbl_803089F4
+/* 803089EC 0030464C 2C 04 00 00 */ cmpwi r4, 0
+/* 803089F0 00304650 40 82 00 0C */ bne lbl_803089FC
+lbl_803089F4:
+/* 803089F4 00304654 38 60 00 01 */ li r3, 1
+/* 803089F8 00304658 48 00 01 80 */ b lbl_80308B78
+lbl_803089FC:
+/* 803089FC 0030465C 4B FF E3 A1 */ bl VFipdm_disk_check_disk_handle
+/* 80308A00 00304660 2C 03 00 00 */ cmpwi r3, 0
+/* 80308A04 00304664 41 82 00 08 */ beq lbl_80308A0C
+/* 80308A08 00304668 48 00 01 70 */ b lbl_80308B78
+lbl_80308A0C:
+/* 80308A0C 0030466C 3B E0 00 00 */ li r31, 0
+/* 80308A10 00304670 38 A0 00 00 */ li r5, 0
+/* 80308A14 00304674 1C 1F 00 14 */ mulli r0, r31, 0x14
+/* 80308A18 00304678 7C 7E 02 14 */ add r3, r30, r0
+/* 80308A1C 0030467C 88 63 00 09 */ lbz r3, 9(r3)
+/* 80308A20 00304680 28 03 00 05 */ cmplwi r3, 5
+/* 80308A24 00304684 41 82 00 0C */ beq lbl_80308A30
+/* 80308A28 00304688 28 03 00 0F */ cmplwi r3, 0xf
+/* 80308A2C 0030468C 40 82 00 18 */ bne lbl_80308A44
+lbl_80308A30:
+/* 80308A30 00304690 7C 7E 02 14 */ add r3, r30, r0
+/* 80308A34 00304694 80 9E 00 04 */ lwz r4, 4(r30)
+/* 80308A38 00304698 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 80308A3C 0030469C 7F E4 02 14 */ add r31, r4, r0
+/* 80308A40 003046A0 48 00 00 A4 */ b lbl_80308AE4
+lbl_80308A44:
+/* 80308A44 003046A4 38 A0 00 01 */ li r5, 1
+/* 80308A48 003046A8 1C 05 00 14 */ mulli r0, r5, 0x14
+/* 80308A4C 003046AC 7C 7E 02 14 */ add r3, r30, r0
+/* 80308A50 003046B0 88 63 00 09 */ lbz r3, 9(r3)
+/* 80308A54 003046B4 28 03 00 05 */ cmplwi r3, 5
+/* 80308A58 003046B8 41 82 00 0C */ beq lbl_80308A64
+/* 80308A5C 003046BC 28 03 00 0F */ cmplwi r3, 0xf
+/* 80308A60 003046C0 40 82 00 18 */ bne lbl_80308A78
+lbl_80308A64:
+/* 80308A64 003046C4 7C 7E 02 14 */ add r3, r30, r0
+/* 80308A68 003046C8 80 9E 00 04 */ lwz r4, 4(r30)
+/* 80308A6C 003046CC 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 80308A70 003046D0 7F E4 02 14 */ add r31, r4, r0
+/* 80308A74 003046D4 48 00 00 70 */ b lbl_80308AE4
+lbl_80308A78:
+/* 80308A78 003046D8 38 A0 00 02 */ li r5, 2
+/* 80308A7C 003046DC 1C 05 00 14 */ mulli r0, r5, 0x14
+/* 80308A80 003046E0 7C 7E 02 14 */ add r3, r30, r0
+/* 80308A84 003046E4 88 63 00 09 */ lbz r3, 9(r3)
+/* 80308A88 003046E8 28 03 00 05 */ cmplwi r3, 5
+/* 80308A8C 003046EC 41 82 00 0C */ beq lbl_80308A98
+/* 80308A90 003046F0 28 03 00 0F */ cmplwi r3, 0xf
+/* 80308A94 003046F4 40 82 00 18 */ bne lbl_80308AAC
+lbl_80308A98:
+/* 80308A98 003046F8 7C 7E 02 14 */ add r3, r30, r0
+/* 80308A9C 003046FC 80 9E 00 04 */ lwz r4, 4(r30)
+/* 80308AA0 00304700 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 80308AA4 00304704 7F E4 02 14 */ add r31, r4, r0
+/* 80308AA8 00304708 48 00 00 3C */ b lbl_80308AE4
+lbl_80308AAC:
+/* 80308AAC 0030470C 38 A0 00 03 */ li r5, 3
+/* 80308AB0 00304710 1C 05 00 14 */ mulli r0, r5, 0x14
+/* 80308AB4 00304714 7C 7E 02 14 */ add r3, r30, r0
+/* 80308AB8 00304718 88 63 00 09 */ lbz r3, 9(r3)
+/* 80308ABC 0030471C 28 03 00 05 */ cmplwi r3, 5
+/* 80308AC0 00304720 41 82 00 0C */ beq lbl_80308ACC
+/* 80308AC4 00304724 28 03 00 0F */ cmplwi r3, 0xf
+/* 80308AC8 00304728 40 82 00 18 */ bne lbl_80308AE0
+lbl_80308ACC:
+/* 80308ACC 0030472C 7C 7E 02 14 */ add r3, r30, r0
+/* 80308AD0 00304730 80 9E 00 04 */ lwz r4, 4(r30)
+/* 80308AD4 00304734 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 80308AD8 00304738 7F E4 02 14 */ add r31, r4, r0
+/* 80308ADC 0030473C 48 00 00 08 */ b lbl_80308AE4
+lbl_80308AE0:
+/* 80308AE0 00304740 38 A0 00 04 */ li r5, 4
+lbl_80308AE4:
+/* 80308AE4 00304744 28 05 00 04 */ cmplwi r5, 4
+/* 80308AE8 00304748 40 82 00 0C */ bne lbl_80308AF4
+/* 80308AEC 0030474C 38 60 00 07 */ li r3, 7
+/* 80308AF0 00304750 48 00 00 88 */ b lbl_80308B78
+lbl_80308AF4:
+/* 80308AF4 00304754 7F A3 EB 78 */ mr r3, r29
+/* 80308AF8 00304758 38 81 00 10 */ addi r4, r1, 0x10
+/* 80308AFC 0030475C 4B FF EB D9 */ bl VFipdm_disk_get_media_information
+/* 80308B00 00304760 2C 03 00 00 */ cmpwi r3, 0
+/* 80308B04 00304764 41 82 00 08 */ beq lbl_80308B0C
+/* 80308B08 00304768 48 00 00 70 */ b lbl_80308B78
+lbl_80308B0C:
+/* 80308B0C 0030476C A0 01 00 18 */ lhz r0, 0x18(r1)
+/* 80308B10 00304770 7F A3 EB 78 */ mr r3, r29
+/* 80308B14 00304774 38 81 00 28 */ addi r4, r1, 0x28
+/* 80308B18 00304778 39 01 00 0C */ addi r8, r1, 0xc
+/* 80308B1C 0030477C 7C 00 4E 70 */ srawi r0, r0, 9
+/* 80308B20 00304780 38 C0 00 01 */ li r6, 1
+/* 80308B24 00304784 7C BF 01 D6 */ mullw r5, r31, r0
+/* 80308B28 00304788 38 E0 02 00 */ li r7, 0x200
+/* 80308B2C 0030478C 4B FF E5 BD */ bl VFipdm_disk_physical_read
+/* 80308B30 00304790 2C 03 00 00 */ cmpwi r3, 0
+/* 80308B34 00304794 41 82 00 08 */ beq lbl_80308B3C
+/* 80308B38 00304798 48 00 00 40 */ b lbl_80308B78
+lbl_80308B3C:
+/* 80308B3C 0030479C 7F A3 EB 78 */ mr r3, r29
+/* 80308B40 003047A0 38 81 00 28 */ addi r4, r1, 0x28
+/* 80308B44 003047A4 38 A1 00 08 */ addi r5, r1, 8
+/* 80308B48 003047A8 48 00 00 4D */ bl VFipdm_mbr_check_master_boot_record
+/* 80308B4C 003047AC 80 01 00 08 */ lwz r0, 8(r1)
+/* 80308B50 003047B0 2C 00 00 00 */ cmpwi r0, 0
+/* 80308B54 003047B4 41 82 00 18 */ beq lbl_80308B6C
+/* 80308B58 003047B8 7F E4 FB 78 */ mr r4, r31
+/* 80308B5C 003047BC 7F C5 F3 78 */ mr r5, r30
+/* 80308B60 003047C0 38 61 00 28 */ addi r3, r1, 0x28
+/* 80308B64 003047C4 4B FF FC 8D */ bl VFipdm_mbr_get_table
+/* 80308B68 003047C8 48 00 00 0C */ b lbl_80308B74
+lbl_80308B6C:
+/* 80308B6C 003047CC 38 60 00 06 */ li r3, 6
+/* 80308B70 003047D0 48 00 00 08 */ b lbl_80308B78
+lbl_80308B74:
+/* 80308B74 003047D4 38 60 00 00 */ li r3, 0
+lbl_80308B78:
+/* 80308B78 003047D8 80 01 02 44 */ lwz r0, 0x244(r1)
+/* 80308B7C 003047DC 83 E1 02 3C */ lwz r31, 0x23c(r1)
+/* 80308B80 003047E0 83 C1 02 38 */ lwz r30, 0x238(r1)
+/* 80308B84 003047E4 83 A1 02 34 */ lwz r29, 0x234(r1)
+/* 80308B88 003047E8 7C 08 03 A6 */ mtlr r0
+/* 80308B8C 003047EC 38 21 02 40 */ addi r1, r1, 0x240
+/* 80308B90 003047F0 4E 80 00 20 */ blr
+
+.global VFipdm_mbr_check_master_boot_record
+VFipdm_mbr_check_master_boot_record:
+/* 80308B94 003047F4 94 21 FF 80 */ stwu r1, -0x80(r1)
+/* 80308B98 003047F8 7C 08 02 A6 */ mflr r0
+/* 80308B9C 003047FC 2C 03 00 00 */ cmpwi r3, 0
+/* 80308BA0 00304800 90 01 00 84 */ stw r0, 0x84(r1)
+/* 80308BA4 00304804 93 E1 00 7C */ stw r31, 0x7c(r1)
+/* 80308BA8 00304808 7C BF 2B 78 */ mr r31, r5
+/* 80308BAC 0030480C 93 C1 00 78 */ stw r30, 0x78(r1)
+/* 80308BB0 00304810 7C 9E 23 78 */ mr r30, r4
+/* 80308BB4 00304814 93 A1 00 74 */ stw r29, 0x74(r1)
+/* 80308BB8 00304818 7C 7D 1B 78 */ mr r29, r3
+/* 80308BBC 0030481C 41 82 00 14 */ beq lbl_80308BD0
+/* 80308BC0 00304820 2C 04 00 00 */ cmpwi r4, 0
+/* 80308BC4 00304824 41 82 00 0C */ beq lbl_80308BD0
+/* 80308BC8 00304828 2C 05 00 00 */ cmpwi r5, 0
+/* 80308BCC 0030482C 40 82 00 0C */ bne lbl_80308BD8
+lbl_80308BD0:
+/* 80308BD0 00304830 38 60 00 01 */ li r3, 1
+/* 80308BD4 00304834 48 00 01 C0 */ b lbl_80308D94
+lbl_80308BD8:
+/* 80308BD8 00304838 4B FF E1 C5 */ bl VFipdm_disk_check_disk_handle
+/* 80308BDC 0030483C 2C 03 00 00 */ cmpwi r3, 0
+/* 80308BE0 00304840 41 82 00 08 */ beq lbl_80308BE8
+/* 80308BE4 00304844 48 00 01 B0 */ b lbl_80308D94
+lbl_80308BE8:
+/* 80308BE8 00304848 38 00 00 00 */ li r0, 0
+/* 80308BEC 0030484C 90 1F 00 00 */ stw r0, 0(r31)
+/* 80308BF0 00304850 88 1E 01 FE */ lbz r0, 0x1fe(r30)
+/* 80308BF4 00304854 28 00 00 55 */ cmplwi r0, 0x55
+/* 80308BF8 00304858 40 82 00 10 */ bne lbl_80308C08
+/* 80308BFC 0030485C 88 1E 01 FF */ lbz r0, 0x1ff(r30)
+/* 80308C00 00304860 28 00 00 AA */ cmplwi r0, 0xaa
+/* 80308C04 00304864 41 82 00 0C */ beq lbl_80308C10
+lbl_80308C08:
+/* 80308C08 00304868 38 60 00 00 */ li r3, 0
+/* 80308C0C 0030486C 48 00 01 88 */ b lbl_80308D94
+lbl_80308C10:
+/* 80308C10 00304870 7F C3 F3 78 */ mr r3, r30
+/* 80308C14 00304874 38 A1 00 10 */ addi r5, r1, 0x10
+/* 80308C18 00304878 38 80 00 00 */ li r4, 0
+/* 80308C1C 0030487C 4B FF FB D5 */ bl VFipdm_mbr_get_table
+/* 80308C20 00304880 80 E1 00 24 */ lwz r7, 0x24(r1)
+/* 80308C24 00304884 57 A4 06 3E */ clrlwi r4, r29, 0x18
+/* 80308C28 00304888 80 C1 00 28 */ lwz r6, 0x28(r1)
+/* 80308C2C 0030488C 3C A0 80 58 */ lis r5, lbl_8057EA60@ha
+/* 80308C30 00304890 20 67 FF FF */ subfic r3, r7, -1
+/* 80308C34 00304894 38 00 00 01 */ li r0, 1
+/* 80308C38 00304898 1C 84 00 34 */ mulli r4, r4, 0x34
+/* 80308C3C 0030489C 38 A5 EA 60 */ addi r5, r5, lbl_8057EA60@l
+/* 80308C40 003048A0 7C 06 18 40 */ cmplw r6, r3
+/* 80308C44 003048A4 7C A5 22 14 */ add r5, r5, r4
+/* 80308C48 003048A8 41 81 00 14 */ bgt lbl_80308C5C
+/* 80308C4C 003048AC 80 65 01 BC */ lwz r3, 0x1bc(r5)
+/* 80308C50 003048B0 7C 87 32 14 */ add r4, r7, r6
+/* 80308C54 003048B4 7C 04 18 40 */ cmplw r4, r3
+/* 80308C58 003048B8 40 81 00 10 */ ble lbl_80308C68
+lbl_80308C5C:
+/* 80308C5C 003048BC 38 00 00 00 */ li r0, 0
+/* 80308C60 003048C0 90 1F 00 00 */ stw r0, 0(r31)
+/* 80308C64 003048C4 48 00 00 C4 */ b lbl_80308D28
+lbl_80308C68:
+/* 80308C68 003048C8 2C 07 00 00 */ cmpwi r7, 0
+/* 80308C6C 003048CC 41 82 00 08 */ beq lbl_80308C74
+/* 80308C70 003048D0 90 1F 00 00 */ stw r0, 0(r31)
+lbl_80308C74:
+/* 80308C74 003048D4 80 E1 00 38 */ lwz r7, 0x38(r1)
+/* 80308C78 003048D8 80 C1 00 3C */ lwz r6, 0x3c(r1)
+/* 80308C7C 003048DC 20 67 FF FF */ subfic r3, r7, -1
+/* 80308C80 003048E0 7C 06 18 40 */ cmplw r6, r3
+/* 80308C84 003048E4 41 81 00 14 */ bgt lbl_80308C98
+/* 80308C88 003048E8 80 65 01 BC */ lwz r3, 0x1bc(r5)
+/* 80308C8C 003048EC 7C 87 32 14 */ add r4, r7, r6
+/* 80308C90 003048F0 7C 04 18 40 */ cmplw r4, r3
+/* 80308C94 003048F4 40 81 00 10 */ ble lbl_80308CA4
+lbl_80308C98:
+/* 80308C98 003048F8 38 00 00 00 */ li r0, 0
+/* 80308C9C 003048FC 90 1F 00 00 */ stw r0, 0(r31)
+/* 80308CA0 00304900 48 00 00 88 */ b lbl_80308D28
+lbl_80308CA4:
+/* 80308CA4 00304904 2C 07 00 00 */ cmpwi r7, 0
+/* 80308CA8 00304908 41 82 00 08 */ beq lbl_80308CB0
+/* 80308CAC 0030490C 90 1F 00 00 */ stw r0, 0(r31)
+lbl_80308CB0:
+/* 80308CB0 00304910 80 E1 00 4C */ lwz r7, 0x4c(r1)
+/* 80308CB4 00304914 80 C1 00 50 */ lwz r6, 0x50(r1)
+/* 80308CB8 00304918 20 67 FF FF */ subfic r3, r7, -1
+/* 80308CBC 0030491C 7C 06 18 40 */ cmplw r6, r3
+/* 80308CC0 00304920 41 81 00 14 */ bgt lbl_80308CD4
+/* 80308CC4 00304924 80 65 01 BC */ lwz r3, 0x1bc(r5)
+/* 80308CC8 00304928 7C 87 32 14 */ add r4, r7, r6
+/* 80308CCC 0030492C 7C 04 18 40 */ cmplw r4, r3
+/* 80308CD0 00304930 40 81 00 10 */ ble lbl_80308CE0
+lbl_80308CD4:
+/* 80308CD4 00304934 38 00 00 00 */ li r0, 0
+/* 80308CD8 00304938 90 1F 00 00 */ stw r0, 0(r31)
+/* 80308CDC 0030493C 48 00 00 4C */ b lbl_80308D28
+lbl_80308CE0:
+/* 80308CE0 00304940 2C 07 00 00 */ cmpwi r7, 0
+/* 80308CE4 00304944 41 82 00 08 */ beq lbl_80308CEC
+/* 80308CE8 00304948 90 1F 00 00 */ stw r0, 0(r31)
+lbl_80308CEC:
+/* 80308CEC 0030494C 80 E1 00 60 */ lwz r7, 0x60(r1)
+/* 80308CF0 00304950 80 C1 00 64 */ lwz r6, 0x64(r1)
+/* 80308CF4 00304954 20 67 FF FF */ subfic r3, r7, -1
+/* 80308CF8 00304958 7C 06 18 40 */ cmplw r6, r3
+/* 80308CFC 0030495C 41 81 00 14 */ bgt lbl_80308D10
+/* 80308D00 00304960 80 65 01 BC */ lwz r3, 0x1bc(r5)
+/* 80308D04 00304964 7C 87 32 14 */ add r4, r7, r6
+/* 80308D08 00304968 7C 04 18 40 */ cmplw r4, r3
+/* 80308D0C 0030496C 40 81 00 10 */ ble lbl_80308D1C
+lbl_80308D10:
+/* 80308D10 00304970 38 00 00 00 */ li r0, 0
+/* 80308D14 00304974 90 1F 00 00 */ stw r0, 0(r31)
+/* 80308D18 00304978 48 00 00 10 */ b lbl_80308D28
+lbl_80308D1C:
+/* 80308D1C 0030497C 2C 07 00 00 */ cmpwi r7, 0
+/* 80308D20 00304980 41 82 00 08 */ beq lbl_80308D28
+/* 80308D24 00304984 90 1F 00 00 */ stw r0, 0(r31)
+lbl_80308D28:
+/* 80308D28 00304988 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80308D2C 0030498C 2C 00 00 00 */ cmpwi r0, 0
+/* 80308D30 00304990 40 82 00 60 */ bne lbl_80308D90
+/* 80308D34 00304994 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80308D38 00304998 2C 00 00 00 */ cmpwi r0, 0
+/* 80308D3C 0030499C 40 82 00 54 */ bne lbl_80308D90
+/* 80308D40 003049A0 80 01 00 38 */ lwz r0, 0x38(r1)
+/* 80308D44 003049A4 2C 00 00 00 */ cmpwi r0, 0
+/* 80308D48 003049A8 40 82 00 48 */ bne lbl_80308D90
+/* 80308D4C 003049AC 80 01 00 4C */ lwz r0, 0x4c(r1)
+/* 80308D50 003049B0 2C 00 00 00 */ cmpwi r0, 0
+/* 80308D54 003049B4 40 82 00 3C */ bne lbl_80308D90
+/* 80308D58 003049B8 80 01 00 60 */ lwz r0, 0x60(r1)
+/* 80308D5C 003049BC 2C 00 00 00 */ cmpwi r0, 0
+/* 80308D60 003049C0 40 82 00 30 */ bne lbl_80308D90
+/* 80308D64 003049C4 7F C3 F3 78 */ mr r3, r30
+/* 80308D68 003049C8 38 81 00 08 */ addi r4, r1, 8
+/* 80308D6C 003049CC 4B FF DB C1 */ bl VFipdm_bpb_check_boot_sector
+/* 80308D70 003049D0 80 01 00 08 */ lwz r0, 8(r1)
+/* 80308D74 003049D4 2C 00 00 00 */ cmpwi r0, 0
+/* 80308D78 003049D8 40 82 00 10 */ bne lbl_80308D88
+/* 80308D7C 003049DC 38 00 00 01 */ li r0, 1
+/* 80308D80 003049E0 90 1F 00 00 */ stw r0, 0(r31)
+/* 80308D84 003049E4 48 00 00 0C */ b lbl_80308D90
+lbl_80308D88:
+/* 80308D88 003049E8 38 00 00 00 */ li r0, 0
+/* 80308D8C 003049EC 90 1F 00 00 */ stw r0, 0(r31)
+lbl_80308D90:
+/* 80308D90 003049F0 38 60 00 00 */ li r3, 0
+lbl_80308D94:
+/* 80308D94 003049F4 80 01 00 84 */ lwz r0, 0x84(r1)
+/* 80308D98 003049F8 83 E1 00 7C */ lwz r31, 0x7c(r1)
+/* 80308D9C 003049FC 83 C1 00 78 */ lwz r30, 0x78(r1)
+/* 80308DA0 00304A00 83 A1 00 74 */ lwz r29, 0x74(r1)
+/* 80308DA4 00304A04 7C 08 03 A6 */ mtlr r0
+/* 80308DA8 00304A08 38 21 00 80 */ addi r1, r1, 0x80
+/* 80308DAC 00304A0C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pdm_partition.s b/asm/SDK/VF/pdm_partition.s new file mode 100644 index 0000000..3d2b758 --- /dev/null +++ b/asm/SDK/VF/pdm_partition.s @@ -0,0 +1,1143 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFipdm_part_get_start_sector
+VFipdm_part_get_start_sector:
+/* 803078E0 00303540 94 21 FF 70 */ stwu r1, -0x90(r1)
+/* 803078E4 00303544 7C 08 02 A6 */ mflr r0
+/* 803078E8 00303548 90 01 00 94 */ stw r0, 0x94(r1)
+/* 803078EC 0030354C 38 81 00 20 */ addi r4, r1, 0x20
+/* 803078F0 00303550 93 E1 00 8C */ stw r31, 0x8c(r1)
+/* 803078F4 00303554 7C 7F 1B 78 */ mr r31, r3
+/* 803078F8 00303558 93 C1 00 88 */ stw r30, 0x88(r1)
+/* 803078FC 0030355C 93 A1 00 84 */ stw r29, 0x84(r1)
+/* 80307900 00303560 A3 C3 00 0C */ lhz r30, 0xc(r3)
+/* 80307904 00303564 80 63 00 04 */ lwz r3, 4(r3)
+/* 80307908 00303568 48 00 0F FD */ bl VFipdm_mbr_get_mbr_part_table
+/* 8030790C 0030356C 2C 03 00 00 */ cmpwi r3, 0
+/* 80307910 00303570 41 82 00 10 */ beq lbl_80307920
+/* 80307914 00303574 2C 03 00 05 */ cmpwi r3, 5
+/* 80307918 00303578 41 82 00 08 */ beq lbl_80307920
+/* 8030791C 0030357C 48 00 01 08 */ b lbl_80307A24
+lbl_80307920:
+/* 80307920 00303580 2C 03 00 05 */ cmpwi r3, 5
+/* 80307924 00303584 41 82 00 BC */ beq lbl_803079E0
+/* 80307928 00303588 28 1E 00 04 */ cmplwi r30, 4
+/* 8030792C 0030358C 40 80 00 48 */ bge lbl_80307974
+/* 80307930 00303590 1C BE 00 14 */ mulli r5, r30, 0x14
+/* 80307934 00303594 38 61 00 34 */ addi r3, r1, 0x34
+/* 80307938 00303598 7C 03 28 2E */ lwzx r0, r3, r5
+/* 8030793C 0030359C 2C 00 00 00 */ cmpwi r0, 0
+/* 80307940 003035A0 40 82 00 0C */ bne lbl_8030794C
+/* 80307944 003035A4 38 60 00 07 */ li r3, 7
+/* 80307948 003035A8 48 00 00 DC */ b lbl_80307A24
+lbl_8030794C:
+/* 8030794C 003035AC 90 1F 00 14 */ stw r0, 0x14(r31)
+/* 80307950 003035B0 38 81 00 38 */ addi r4, r1, 0x38
+/* 80307954 003035B4 38 61 00 29 */ addi r3, r1, 0x29
+/* 80307958 003035B8 7C 04 28 2E */ lwzx r0, r4, r5
+/* 8030795C 003035BC 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 80307960 003035C0 7C 03 28 AE */ lbzx r0, r3, r5
+/* 80307964 003035C4 98 1F 00 20 */ stb r0, 0x20(r31)
+/* 80307968 003035C8 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 8030796C 003035CC 90 1F 00 1C */ stw r0, 0x1c(r31)
+/* 80307970 003035D0 48 00 00 B0 */ b lbl_80307A20
+lbl_80307974:
+/* 80307974 003035D4 3B A0 00 04 */ li r29, 4
+lbl_80307978:
+/* 80307978 003035D8 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8030797C 003035DC 38 81 00 20 */ addi r4, r1, 0x20
+/* 80307980 003035E0 48 00 10 45 */ bl VFipdm_mbr_get_epbr_part_table
+/* 80307984 003035E4 2C 03 00 00 */ cmpwi r3, 0
+/* 80307988 003035E8 41 82 00 10 */ beq lbl_80307998
+/* 8030798C 003035EC 2C 03 00 06 */ cmpwi r3, 6
+/* 80307990 003035F0 41 82 00 08 */ beq lbl_80307998
+/* 80307994 003035F4 48 00 00 90 */ b lbl_80307A24
+lbl_80307998:
+/* 80307998 003035F8 2C 03 00 06 */ cmpwi r3, 6
+/* 8030799C 003035FC 41 82 00 34 */ beq lbl_803079D0
+/* 803079A0 00303600 57 A0 04 3E */ clrlwi r0, r29, 0x10
+/* 803079A4 00303604 7C 1E 00 40 */ cmplw r30, r0
+/* 803079A8 00303608 40 82 00 30 */ bne lbl_803079D8
+/* 803079AC 0030360C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803079B0 00303610 90 1F 00 14 */ stw r0, 0x14(r31)
+/* 803079B4 00303614 80 01 00 38 */ lwz r0, 0x38(r1)
+/* 803079B8 00303618 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 803079BC 0030361C 88 01 00 29 */ lbz r0, 0x29(r1)
+/* 803079C0 00303620 98 1F 00 20 */ stb r0, 0x20(r31)
+/* 803079C4 00303624 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 803079C8 00303628 90 1F 00 1C */ stw r0, 0x1c(r31)
+/* 803079CC 0030362C 48 00 00 54 */ b lbl_80307A20
+lbl_803079D0:
+/* 803079D0 00303630 38 60 00 07 */ li r3, 7
+/* 803079D4 00303634 48 00 00 50 */ b lbl_80307A24
+lbl_803079D8:
+/* 803079D8 00303638 3B BD 00 01 */ addi r29, r29, 1
+/* 803079DC 0030363C 4B FF FF 9C */ b lbl_80307978
+lbl_803079E0:
+/* 803079E0 00303640 28 1E 00 01 */ cmplwi r30, 1
+/* 803079E4 00303644 41 80 00 0C */ blt lbl_803079F0
+/* 803079E8 00303648 38 60 00 07 */ li r3, 7
+/* 803079EC 0030364C 48 00 00 38 */ b lbl_80307A24
+lbl_803079F0:
+/* 803079F0 00303650 80 7F 00 04 */ lwz r3, 4(r31)
+/* 803079F4 00303654 38 81 00 08 */ addi r4, r1, 8
+/* 803079F8 00303658 4B FF FC DD */ bl VFipdm_disk_get_media_information
+/* 803079FC 0030365C 2C 03 00 00 */ cmpwi r3, 0
+/* 80307A00 00303660 41 82 00 08 */ beq lbl_80307A08
+/* 80307A04 00303664 48 00 00 20 */ b lbl_80307A24
+lbl_80307A08:
+/* 80307A08 00303668 38 60 00 00 */ li r3, 0
+/* 80307A0C 0030366C 90 7F 00 14 */ stw r3, 0x14(r31)
+/* 80307A10 00303670 80 01 00 08 */ lwz r0, 8(r1)
+/* 80307A14 00303674 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 80307A18 00303678 98 7F 00 20 */ stb r3, 0x20(r31)
+/* 80307A1C 0030367C 90 7F 00 1C */ stw r3, 0x1c(r31)
+lbl_80307A20:
+/* 80307A20 00303680 38 60 00 00 */ li r3, 0
+lbl_80307A24:
+/* 80307A24 00303684 80 01 00 94 */ lwz r0, 0x94(r1)
+/* 80307A28 00303688 83 E1 00 8C */ lwz r31, 0x8c(r1)
+/* 80307A2C 0030368C 83 C1 00 88 */ lwz r30, 0x88(r1)
+/* 80307A30 00303690 83 A1 00 84 */ lwz r29, 0x84(r1)
+/* 80307A34 00303694 7C 08 03 A6 */ mtlr r0
+/* 80307A38 00303698 38 21 00 90 */ addi r1, r1, 0x90
+/* 80307A3C 0030369C 4E 80 00 20 */ blr
+
+.global VFipdm_part_chg_ltop
+VFipdm_part_chg_ltop:
+/* 80307A40 003036A0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80307A44 003036A4 7C 08 02 A6 */ mflr r0
+/* 80307A48 003036A8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80307A4C 003036AC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80307A50 003036B0 7C BF 2B 78 */ mr r31, r5
+/* 80307A54 003036B4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80307A58 003036B8 7C 9E 23 78 */ mr r30, r4
+/* 80307A5C 003036BC 38 81 00 08 */ addi r4, r1, 8
+/* 80307A60 003036C0 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80307A64 003036C4 7C 7D 1B 78 */ mr r29, r3
+/* 80307A68 003036C8 80 63 00 04 */ lwz r3, 4(r3)
+/* 80307A6C 003036CC 4B FF FB 71 */ bl VFipdm_disk_get_lba_size
+/* 80307A70 003036D0 A0 01 00 08 */ lhz r0, 8(r1)
+/* 80307A74 003036D4 7C 1F 00 40 */ cmplw r31, r0
+/* 80307A78 003036D8 40 82 00 18 */ bne lbl_80307A90
+/* 80307A7C 003036DC 80 1D 00 1C */ lwz r0, 0x1c(r29)
+/* 80307A80 003036E0 80 7D 00 14 */ lwz r3, 0x14(r29)
+/* 80307A84 003036E4 7C 00 F2 14 */ add r0, r0, r30
+/* 80307A88 003036E8 7C 63 02 14 */ add r3, r3, r0
+/* 80307A8C 003036EC 48 00 00 74 */ b lbl_80307B00
+lbl_80307A90:
+/* 80307A90 003036F0 54 04 BE 7E */ rlwinm r4, r0, 0x17, 0x19, 0x1f
+/* 80307A94 003036F4 80 7D 00 14 */ lwz r3, 0x14(r29)
+/* 80307A98 003036F8 80 1D 00 1C */ lwz r0, 0x1c(r29)
+/* 80307A9C 003036FC 28 04 00 02 */ cmplwi r4, 2
+/* 80307AA0 00303700 7C 03 02 14 */ add r0, r3, r0
+/* 80307AA4 00303704 40 82 00 0C */ bne lbl_80307AB0
+/* 80307AA8 00303708 54 00 08 3C */ slwi r0, r0, 1
+/* 80307AAC 0030370C 48 00 00 20 */ b lbl_80307ACC
+lbl_80307AB0:
+/* 80307AB0 00303710 28 04 00 04 */ cmplwi r4, 4
+/* 80307AB4 00303714 40 82 00 0C */ bne lbl_80307AC0
+/* 80307AB8 00303718 54 00 10 3A */ slwi r0, r0, 2
+/* 80307ABC 0030371C 48 00 00 10 */ b lbl_80307ACC
+lbl_80307AC0:
+/* 80307AC0 00303720 28 04 00 08 */ cmplwi r4, 8
+/* 80307AC4 00303724 40 82 00 08 */ bne lbl_80307ACC
+/* 80307AC8 00303728 54 00 18 38 */ slwi r0, r0, 3
+lbl_80307ACC:
+/* 80307ACC 0030372C 57 E3 BE 7E */ rlwinm r3, r31, 0x17, 0x19, 0x1f
+/* 80307AD0 00303730 28 03 00 02 */ cmplwi r3, 2
+/* 80307AD4 00303734 40 82 00 0C */ bne lbl_80307AE0
+/* 80307AD8 00303738 54 00 F8 7E */ srwi r0, r0, 1
+/* 80307ADC 0030373C 48 00 00 20 */ b lbl_80307AFC
+lbl_80307AE0:
+/* 80307AE0 00303740 28 03 00 04 */ cmplwi r3, 4
+/* 80307AE4 00303744 40 82 00 0C */ bne lbl_80307AF0
+/* 80307AE8 00303748 54 00 F0 BE */ srwi r0, r0, 2
+/* 80307AEC 0030374C 48 00 00 10 */ b lbl_80307AFC
+lbl_80307AF0:
+/* 80307AF0 00303750 28 03 00 08 */ cmplwi r3, 8
+/* 80307AF4 00303754 40 82 00 08 */ bne lbl_80307AFC
+/* 80307AF8 00303758 54 00 E8 FE */ srwi r0, r0, 3
+lbl_80307AFC:
+/* 80307AFC 0030375C 7C 7E 02 14 */ add r3, r30, r0
+lbl_80307B00:
+/* 80307B00 00303760 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80307B04 00303764 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80307B08 00303768 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80307B0C 0030376C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80307B10 00303770 7C 08 03 A6 */ mtlr r0
+/* 80307B14 00303774 38 21 00 20 */ addi r1, r1, 0x20
+/* 80307B18 00303778 4E 80 00 20 */ blr
+
+.global VFipdm_part_get_permission
+VFipdm_part_get_permission:
+/* 80307B1C 0030377C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80307B20 00303780 7C 08 02 A6 */ mflr r0
+/* 80307B24 00303784 2C 03 00 00 */ cmpwi r3, 0
+/* 80307B28 00303788 7C 64 1B 78 */ mr r4, r3
+/* 80307B2C 0030378C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80307B30 00303790 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 80307B34 00303794 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 80307B38 00303798 40 82 00 0C */ bne lbl_80307B44
+/* 80307B3C 0030379C 38 60 00 01 */ li r3, 1
+/* 80307B40 003037A0 48 00 01 A8 */ b lbl_80307CE8
+lbl_80307B44:
+/* 80307B44 003037A4 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 80307B48 003037A8 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 80307B4C 003037AC 28 07 00 1A */ cmplwi r7, 0x1a
+/* 80307B50 003037B0 54 68 84 3E */ srwi r8, r3, 0x10
+/* 80307B54 003037B4 40 80 00 28 */ bge lbl_80307B7C
+/* 80307B58 003037B8 28 00 04 00 */ cmplwi r0, 0x400
+/* 80307B5C 003037BC 40 82 00 20 */ bne lbl_80307B7C
+/* 80307B60 003037C0 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 80307B64 003037C4 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80307B68 003037C8 38 A3 EA 60 */ addi r5, r3, lbl_8057EA60@l
+/* 80307B6C 003037CC 7C 65 02 14 */ add r3, r5, r0
+/* 80307B70 003037D0 80 03 06 F4 */ lwz r0, 0x6f4(r3)
+/* 80307B74 003037D4 7C 08 00 40 */ cmplw r8, r0
+/* 80307B78 003037D8 40 81 00 0C */ ble lbl_80307B84
+lbl_80307B7C:
+/* 80307B7C 003037DC 38 60 00 01 */ li r3, 1
+/* 80307B80 003037E0 48 00 00 7C */ b lbl_80307BFC
+lbl_80307B84:
+/* 80307B84 003037E4 38 00 00 0D */ li r0, 0xd
+/* 80307B88 003037E8 38 C3 06 EC */ addi r6, r3, 0x6ec
+/* 80307B8C 003037EC 38 60 00 00 */ li r3, 0
+/* 80307B90 003037F0 7C 09 03 A6 */ mtctr r0
+lbl_80307B94:
+/* 80307B94 003037F4 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80307B98 003037F8 7D 25 02 14 */ add r9, r5, r0
+/* 80307B9C 003037FC 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 80307BA0 00303800 7C 00 30 40 */ cmplw r0, r6
+/* 80307BA4 00303804 40 82 00 10 */ bne lbl_80307BB4
+/* 80307BA8 00303808 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80307BAC 0030380C 7C 08 00 40 */ cmplw r8, r0
+/* 80307BB0 00303810 41 82 00 30 */ beq lbl_80307BE0
+lbl_80307BB4:
+/* 80307BB4 00303814 38 63 00 01 */ addi r3, r3, 1
+/* 80307BB8 00303818 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80307BBC 0030381C 7D 25 02 14 */ add r9, r5, r0
+/* 80307BC0 00303820 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 80307BC4 00303824 7C 00 30 40 */ cmplw r0, r6
+/* 80307BC8 00303828 40 82 00 10 */ bne lbl_80307BD8
+/* 80307BCC 0030382C 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80307BD0 00303830 7C 08 00 40 */ cmplw r8, r0
+/* 80307BD4 00303834 41 82 00 0C */ beq lbl_80307BE0
+lbl_80307BD8:
+/* 80307BD8 00303838 38 63 00 01 */ addi r3, r3, 1
+/* 80307BDC 0030383C 42 00 FF B8 */ bdnz lbl_80307B94
+lbl_80307BE0:
+/* 80307BE0 00303840 54 65 04 3E */ clrlwi r5, r3, 0x10
+/* 80307BE4 00303844 38 60 00 1A */ li r3, 0x1a
+/* 80307BE8 00303848 38 05 FF E6 */ addi r0, r5, -26
+/* 80307BEC 0030384C 7C A3 1B 38 */ orc r3, r5, r3
+/* 80307BF0 00303850 54 00 F8 7E */ srwi r0, r0, 1
+/* 80307BF4 00303854 7C 00 18 50 */ subf r0, r0, r3
+/* 80307BF8 00303858 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_80307BFC:
+/* 80307BFC 0030385C 2C 03 00 00 */ cmpwi r3, 0
+/* 80307C00 00303860 41 82 00 08 */ beq lbl_80307C08
+/* 80307C04 00303864 48 00 00 E4 */ b lbl_80307CE8
+lbl_80307C08:
+/* 80307C08 00303868 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 80307C0C 0030386C 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80307C10 00303870 38 63 EA 60 */ addi r3, r3, lbl_8057EA60@l
+/* 80307C14 00303874 7C 63 02 14 */ add r3, r3, r0
+/* 80307C18 00303878 80 03 06 EC */ lwz r0, 0x6ec(r3)
+/* 80307C1C 0030387C 3B C3 06 EC */ addi r30, r3, 0x6ec
+/* 80307C20 00303880 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80307C24 00303884 40 82 00 A8 */ bne lbl_80307CCC
+/* 80307C28 00303888 80 7E 00 04 */ lwz r3, 4(r30)
+/* 80307C2C 0030388C 4B FF FB C1 */ bl VFipdm_disk_set_disk
+/* 80307C30 00303890 2C 03 00 00 */ cmpwi r3, 0
+/* 80307C34 00303894 41 82 00 08 */ beq lbl_80307C3C
+/* 80307C38 00303898 48 00 00 B0 */ b lbl_80307CE8
+lbl_80307C3C:
+/* 80307C3C 0030389C 80 7E 00 04 */ lwz r3, 4(r30)
+/* 80307C40 003038A0 4B FF F2 19 */ bl VFipdm_disk_get_part_permission
+/* 80307C44 003038A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80307C48 003038A8 41 82 00 08 */ beq lbl_80307C50
+/* 80307C4C 003038AC 48 00 00 9C */ b lbl_80307CE8
+lbl_80307C50:
+/* 80307C50 003038B0 80 7E 00 04 */ lwz r3, 4(r30)
+/* 80307C54 003038B4 38 81 00 08 */ addi r4, r1, 8
+/* 80307C58 003038B8 4B FF FA 7D */ bl VFipdm_disk_get_media_information
+/* 80307C5C 003038BC 2C 03 00 00 */ cmpwi r3, 0
+/* 80307C60 003038C0 7C 7F 1B 78 */ mr r31, r3
+/* 80307C64 003038C4 41 82 00 18 */ beq lbl_80307C7C
+/* 80307C68 003038C8 80 7E 00 04 */ lwz r3, 4(r30)
+/* 80307C6C 003038CC 38 80 00 01 */ li r4, 1
+/* 80307C70 003038D0 4B FF F2 DD */ bl VFipdm_disk_release_part_permission
+/* 80307C74 003038D4 7F E3 FB 78 */ mr r3, r31
+/* 80307C78 003038D8 48 00 00 70 */ b lbl_80307CE8
+lbl_80307C7C:
+/* 80307C7C 003038DC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80307C80 003038E0 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80307C84 003038E4 41 82 00 14 */ beq lbl_80307C98
+/* 80307C88 003038E8 80 1E 00 00 */ lwz r0, 0(r30)
+/* 80307C8C 003038EC 60 00 00 10 */ ori r0, r0, 0x10
+/* 80307C90 003038F0 90 1E 00 00 */ stw r0, 0(r30)
+/* 80307C94 003038F4 48 00 00 10 */ b lbl_80307CA4
+lbl_80307C98:
+/* 80307C98 003038F8 80 1E 00 00 */ lwz r0, 0(r30)
+/* 80307C9C 003038FC 54 00 07 34 */ rlwinm r0, r0, 0, 0x1c, 0x1a
+/* 80307CA0 00303900 90 1E 00 00 */ stw r0, 0(r30)
+lbl_80307CA4:
+/* 80307CA4 00303904 7F C3 F3 78 */ mr r3, r30
+/* 80307CA8 00303908 4B FF FC 39 */ bl VFipdm_part_get_start_sector
+/* 80307CAC 0030390C 2C 03 00 00 */ cmpwi r3, 0
+/* 80307CB0 00303910 7C 7F 1B 78 */ mr r31, r3
+/* 80307CB4 00303914 41 82 00 20 */ beq lbl_80307CD4
+/* 80307CB8 00303918 80 7E 00 04 */ lwz r3, 4(r30)
+/* 80307CBC 0030391C 38 80 00 01 */ li r4, 1
+/* 80307CC0 00303920 4B FF F2 8D */ bl VFipdm_disk_release_part_permission
+/* 80307CC4 00303924 7F E3 FB 78 */ mr r3, r31
+/* 80307CC8 00303928 48 00 00 20 */ b lbl_80307CE8
+lbl_80307CCC:
+/* 80307CCC 0030392C 38 60 00 0D */ li r3, 0xd
+/* 80307CD0 00303930 48 00 00 18 */ b lbl_80307CE8
+lbl_80307CD4:
+/* 80307CD4 00303934 80 1E 00 00 */ lwz r0, 0(r30)
+/* 80307CD8 00303938 38 60 00 00 */ li r3, 0
+/* 80307CDC 0030393C 60 00 00 02 */ ori r0, r0, 2
+/* 80307CE0 00303940 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b
+/* 80307CE4 00303944 90 1E 00 00 */ stw r0, 0(r30)
+lbl_80307CE8:
+/* 80307CE8 00303948 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80307CEC 0030394C 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 80307CF0 00303950 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 80307CF4 00303954 7C 08 03 A6 */ mtlr r0
+/* 80307CF8 00303958 38 21 00 30 */ addi r1, r1, 0x30
+/* 80307CFC 0030395C 4E 80 00 20 */ blr
+
+.global VFipdm_part_release_permission
+VFipdm_part_release_permission:
+/* 80307D00 00303960 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80307D04 00303964 7C 08 02 A6 */ mflr r0
+/* 80307D08 00303968 2C 03 00 00 */ cmpwi r3, 0
+/* 80307D0C 0030396C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80307D10 00303970 7C 60 1B 78 */ mr r0, r3
+/* 80307D14 00303974 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80307D18 00303978 3B E0 00 00 */ li r31, 0
+/* 80307D1C 0030397C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80307D20 00303980 7C 9E 23 78 */ mr r30, r4
+/* 80307D24 00303984 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80307D28 00303988 40 82 00 0C */ bne lbl_80307D34
+/* 80307D2C 0030398C 38 60 00 01 */ li r3, 1
+/* 80307D30 00303990 48 00 01 40 */ b lbl_80307E70
+lbl_80307D34:
+/* 80307D34 00303994 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 80307D38 00303998 54 64 04 2E */ rlwinm r4, r3, 0, 0x10, 0x17
+/* 80307D3C 0030399C 28 07 00 1A */ cmplwi r7, 0x1a
+/* 80307D40 003039A0 54 68 84 3E */ srwi r8, r3, 0x10
+/* 80307D44 003039A4 40 80 00 28 */ bge lbl_80307D6C
+/* 80307D48 003039A8 28 04 04 00 */ cmplwi r4, 0x400
+/* 80307D4C 003039AC 40 82 00 20 */ bne lbl_80307D6C
+/* 80307D50 003039B0 1C 87 00 2C */ mulli r4, r7, 0x2c
+/* 80307D54 003039B4 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80307D58 003039B8 38 A3 EA 60 */ addi r5, r3, lbl_8057EA60@l
+/* 80307D5C 003039BC 7C 85 22 14 */ add r4, r5, r4
+/* 80307D60 003039C0 80 64 06 F4 */ lwz r3, 0x6f4(r4)
+/* 80307D64 003039C4 7C 08 18 40 */ cmplw r8, r3
+/* 80307D68 003039C8 40 81 00 0C */ ble lbl_80307D74
+lbl_80307D6C:
+/* 80307D6C 003039CC 38 60 00 01 */ li r3, 1
+/* 80307D70 003039D0 48 00 00 7C */ b lbl_80307DEC
+lbl_80307D74:
+/* 80307D74 003039D4 38 60 00 0D */ li r3, 0xd
+/* 80307D78 003039D8 38 C4 06 EC */ addi r6, r4, 0x6ec
+/* 80307D7C 003039DC 38 80 00 00 */ li r4, 0
+/* 80307D80 003039E0 7C 69 03 A6 */ mtctr r3
+lbl_80307D84:
+/* 80307D84 003039E4 54 83 1B 78 */ rlwinm r3, r4, 3, 0xd, 0x1c
+/* 80307D88 003039E8 7D 25 1A 14 */ add r9, r5, r3
+/* 80307D8C 003039EC 80 69 00 D8 */ lwz r3, 0xd8(r9)
+/* 80307D90 003039F0 7C 03 30 40 */ cmplw r3, r6
+/* 80307D94 003039F4 40 82 00 10 */ bne lbl_80307DA4
+/* 80307D98 003039F8 80 69 00 D4 */ lwz r3, 0xd4(r9)
+/* 80307D9C 003039FC 7C 08 18 40 */ cmplw r8, r3
+/* 80307DA0 00303A00 41 82 00 30 */ beq lbl_80307DD0
+lbl_80307DA4:
+/* 80307DA4 00303A04 38 84 00 01 */ addi r4, r4, 1
+/* 80307DA8 00303A08 54 83 1B 78 */ rlwinm r3, r4, 3, 0xd, 0x1c
+/* 80307DAC 00303A0C 7D 25 1A 14 */ add r9, r5, r3
+/* 80307DB0 00303A10 80 69 00 D8 */ lwz r3, 0xd8(r9)
+/* 80307DB4 00303A14 7C 03 30 40 */ cmplw r3, r6
+/* 80307DB8 00303A18 40 82 00 10 */ bne lbl_80307DC8
+/* 80307DBC 00303A1C 80 69 00 D4 */ lwz r3, 0xd4(r9)
+/* 80307DC0 00303A20 7C 08 18 40 */ cmplw r8, r3
+/* 80307DC4 00303A24 41 82 00 0C */ beq lbl_80307DD0
+lbl_80307DC8:
+/* 80307DC8 00303A28 38 84 00 01 */ addi r4, r4, 1
+/* 80307DCC 00303A2C 42 00 FF B8 */ bdnz lbl_80307D84
+lbl_80307DD0:
+/* 80307DD0 00303A30 54 85 04 3E */ clrlwi r5, r4, 0x10
+/* 80307DD4 00303A34 38 80 00 1A */ li r4, 0x1a
+/* 80307DD8 00303A38 38 65 FF E6 */ addi r3, r5, -26
+/* 80307DDC 00303A3C 7C A4 23 38 */ orc r4, r5, r4
+/* 80307DE0 00303A40 54 63 F8 7E */ srwi r3, r3, 1
+/* 80307DE4 00303A44 7C 63 20 50 */ subf r3, r3, r4
+/* 80307DE8 00303A48 54 63 0F FE */ srwi r3, r3, 0x1f
+lbl_80307DEC:
+/* 80307DEC 00303A4C 2C 03 00 00 */ cmpwi r3, 0
+/* 80307DF0 00303A50 41 82 00 08 */ beq lbl_80307DF8
+/* 80307DF4 00303A54 48 00 00 7C */ b lbl_80307E70
+lbl_80307DF8:
+/* 80307DF8 00303A58 1C 67 00 2C */ mulli r3, r7, 0x2c
+/* 80307DFC 00303A5C 3C 80 80 58 */ lis r4, lbl_8057EA60@ha
+/* 80307E00 00303A60 38 84 EA 60 */ addi r4, r4, lbl_8057EA60@l
+/* 80307E04 00303A64 7F A4 1A 14 */ add r29, r4, r3
+/* 80307E08 00303A68 80 7D 06 EC */ lwz r3, 0x6ec(r29)
+/* 80307E0C 00303A6C 54 63 07 BD */ rlwinm. r3, r3, 0, 0x1e, 0x1e
+/* 80307E10 00303A70 40 82 00 0C */ bne lbl_80307E1C
+/* 80307E14 00303A74 38 60 00 0E */ li r3, 0xe
+/* 80307E18 00303A78 48 00 00 58 */ b lbl_80307E70
+lbl_80307E1C:
+/* 80307E1C 00303A7C 80 7D 06 F0 */ lwz r3, 0x6f0(r29)
+/* 80307E20 00303A80 7C 04 03 78 */ mr r4, r0
+/* 80307E24 00303A84 4B FF F9 C9 */ bl VFipdm_disk_set_disk
+/* 80307E28 00303A88 2C 03 00 00 */ cmpwi r3, 0
+/* 80307E2C 00303A8C 41 82 00 08 */ beq lbl_80307E34
+/* 80307E30 00303A90 48 00 00 40 */ b lbl_80307E70
+lbl_80307E34:
+/* 80307E34 00303A94 80 7D 06 F0 */ lwz r3, 0x6f0(r29)
+/* 80307E38 00303A98 7F C4 F3 78 */ mr r4, r30
+/* 80307E3C 00303A9C 4B FF F1 11 */ bl VFipdm_disk_release_part_permission
+/* 80307E40 00303AA0 2C 03 00 00 */ cmpwi r3, 0
+/* 80307E44 00303AA4 41 82 00 08 */ beq lbl_80307E4C
+/* 80307E48 00303AA8 7C 7F 1B 78 */ mr r31, r3
+lbl_80307E4C:
+/* 80307E4C 00303AAC 2C 1F 00 00 */ cmpwi r31, 0
+/* 80307E50 00303AB0 41 82 00 0C */ beq lbl_80307E5C
+/* 80307E54 00303AB4 28 1E 00 01 */ cmplwi r30, 1
+/* 80307E58 00303AB8 40 82 00 14 */ bne lbl_80307E6C
+lbl_80307E5C:
+/* 80307E5C 00303ABC 80 1D 06 EC */ lwz r0, 0x6ec(r29)
+/* 80307E60 00303AC0 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 80307E64 00303AC4 54 00 07 74 */ rlwinm r0, r0, 0, 0x1d, 0x1a
+/* 80307E68 00303AC8 90 1D 06 EC */ stw r0, 0x6ec(r29)
+lbl_80307E6C:
+/* 80307E6C 00303ACC 7F E3 FB 78 */ mr r3, r31
+lbl_80307E70:
+/* 80307E70 00303AD0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80307E74 00303AD4 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80307E78 00303AD8 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80307E7C 00303ADC 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80307E80 00303AE0 7C 08 03 A6 */ mtlr r0
+/* 80307E84 00303AE4 38 21 00 20 */ addi r1, r1, 0x20
+/* 80307E88 00303AE8 4E 80 00 20 */ blr
+
+.global VFipdm_part_format
+VFipdm_part_format:
+/* 80307E8C 00303AEC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80307E90 00303AF0 7C 08 02 A6 */ mflr r0
+/* 80307E94 00303AF4 2C 03 00 00 */ cmpwi r3, 0
+/* 80307E98 00303AF8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80307E9C 00303AFC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80307EA0 00303B00 7C 9F 23 78 */ mr r31, r4
+/* 80307EA4 00303B04 93 C1 00 08 */ stw r30, 8(r1)
+/* 80307EA8 00303B08 40 82 00 0C */ bne lbl_80307EB4
+/* 80307EAC 00303B0C 38 60 00 01 */ li r3, 1
+/* 80307EB0 00303B10 48 00 01 10 */ b lbl_80307FC0
+lbl_80307EB4:
+/* 80307EB4 00303B14 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 80307EB8 00303B18 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 80307EBC 00303B1C 28 07 00 1A */ cmplwi r7, 0x1a
+/* 80307EC0 00303B20 54 68 84 3E */ srwi r8, r3, 0x10
+/* 80307EC4 00303B24 40 80 00 28 */ bge lbl_80307EEC
+/* 80307EC8 00303B28 28 00 04 00 */ cmplwi r0, 0x400
+/* 80307ECC 00303B2C 40 82 00 20 */ bne lbl_80307EEC
+/* 80307ED0 00303B30 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 80307ED4 00303B34 3C 80 80 58 */ lis r4, lbl_8057EA60@ha
+/* 80307ED8 00303B38 38 A4 EA 60 */ addi r5, r4, lbl_8057EA60@l
+/* 80307EDC 00303B3C 7C 85 02 14 */ add r4, r5, r0
+/* 80307EE0 00303B40 80 04 06 F4 */ lwz r0, 0x6f4(r4)
+/* 80307EE4 00303B44 7C 08 00 40 */ cmplw r8, r0
+/* 80307EE8 00303B48 40 81 00 0C */ ble lbl_80307EF4
+lbl_80307EEC:
+/* 80307EEC 00303B4C 38 00 00 01 */ li r0, 1
+/* 80307EF0 00303B50 48 00 00 7C */ b lbl_80307F6C
+lbl_80307EF4:
+/* 80307EF4 00303B54 38 00 00 0D */ li r0, 0xd
+/* 80307EF8 00303B58 38 C4 06 EC */ addi r6, r4, 0x6ec
+/* 80307EFC 00303B5C 38 80 00 00 */ li r4, 0
+/* 80307F00 00303B60 7C 09 03 A6 */ mtctr r0
+lbl_80307F04:
+/* 80307F04 00303B64 54 80 1B 78 */ rlwinm r0, r4, 3, 0xd, 0x1c
+/* 80307F08 00303B68 7D 25 02 14 */ add r9, r5, r0
+/* 80307F0C 00303B6C 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 80307F10 00303B70 7C 00 30 40 */ cmplw r0, r6
+/* 80307F14 00303B74 40 82 00 10 */ bne lbl_80307F24
+/* 80307F18 00303B78 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80307F1C 00303B7C 7C 08 00 40 */ cmplw r8, r0
+/* 80307F20 00303B80 41 82 00 30 */ beq lbl_80307F50
+lbl_80307F24:
+/* 80307F24 00303B84 38 84 00 01 */ addi r4, r4, 1
+/* 80307F28 00303B88 54 80 1B 78 */ rlwinm r0, r4, 3, 0xd, 0x1c
+/* 80307F2C 00303B8C 7D 25 02 14 */ add r9, r5, r0
+/* 80307F30 00303B90 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 80307F34 00303B94 7C 00 30 40 */ cmplw r0, r6
+/* 80307F38 00303B98 40 82 00 10 */ bne lbl_80307F48
+/* 80307F3C 00303B9C 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80307F40 00303BA0 7C 08 00 40 */ cmplw r8, r0
+/* 80307F44 00303BA4 41 82 00 0C */ beq lbl_80307F50
+lbl_80307F48:
+/* 80307F48 00303BA8 38 84 00 01 */ addi r4, r4, 1
+/* 80307F4C 00303BAC 42 00 FF B8 */ bdnz lbl_80307F04
+lbl_80307F50:
+/* 80307F50 00303BB0 54 85 04 3E */ clrlwi r5, r4, 0x10
+/* 80307F54 00303BB4 38 80 00 1A */ li r4, 0x1a
+/* 80307F58 00303BB8 38 05 FF E6 */ addi r0, r5, -26
+/* 80307F5C 00303BBC 7C A4 23 38 */ orc r4, r5, r4
+/* 80307F60 00303BC0 54 00 F8 7E */ srwi r0, r0, 1
+/* 80307F64 00303BC4 7C 00 20 50 */ subf r0, r0, r4
+/* 80307F68 00303BC8 54 00 0F FE */ srwi r0, r0, 0x1f
+lbl_80307F6C:
+/* 80307F6C 00303BCC 2C 00 00 00 */ cmpwi r0, 0
+/* 80307F70 00303BD0 41 82 00 0C */ beq lbl_80307F7C
+/* 80307F74 00303BD4 7C 03 03 78 */ mr r3, r0
+/* 80307F78 00303BD8 48 00 00 48 */ b lbl_80307FC0
+lbl_80307F7C:
+/* 80307F7C 00303BDC 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 80307F80 00303BE0 3C A0 80 58 */ lis r5, lbl_8057EA60@ha
+/* 80307F84 00303BE4 7C 64 1B 78 */ mr r4, r3
+/* 80307F88 00303BE8 38 A5 EA 60 */ addi r5, r5, lbl_8057EA60@l
+/* 80307F8C 00303BEC 7F C5 02 14 */ add r30, r5, r0
+/* 80307F90 00303BF0 80 7E 06 F0 */ lwz r3, 0x6f0(r30)
+/* 80307F94 00303BF4 4B FF F8 59 */ bl VFipdm_disk_set_disk
+/* 80307F98 00303BF8 2C 03 00 00 */ cmpwi r3, 0
+/* 80307F9C 00303BFC 41 82 00 08 */ beq lbl_80307FA4
+/* 80307FA0 00303C00 48 00 00 20 */ b lbl_80307FC0
+lbl_80307FA4:
+/* 80307FA4 00303C04 80 7E 06 F0 */ lwz r3, 0x6f0(r30)
+/* 80307FA8 00303C08 7F E4 FB 78 */ mr r4, r31
+/* 80307FAC 00303C0C 4B FF F4 ED */ bl VFipdm_disk_format
+/* 80307FB0 00303C10 7C 03 00 D0 */ neg r0, r3
+/* 80307FB4 00303C14 7C 00 1B 78 */ or r0, r0, r3
+/* 80307FB8 00303C18 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 80307FBC 00303C1C 7C 63 00 38 */ and r3, r3, r0
+lbl_80307FC0:
+/* 80307FC0 00303C20 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80307FC4 00303C24 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80307FC8 00303C28 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80307FCC 00303C2C 7C 08 03 A6 */ mtlr r0
+/* 80307FD0 00303C30 38 21 00 10 */ addi r1, r1, 0x10
+/* 80307FD4 00303C34 4E 80 00 20 */ blr
+
+.global VFipdm_part_logical_read
+VFipdm_part_logical_read:
+/* 80307FD8 00303C38 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80307FDC 00303C3C 7C 08 02 A6 */ mflr r0
+/* 80307FE0 00303C40 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80307FE4 00303C44 39 61 00 20 */ addi r11, r1, 0x20
+/* 80307FE8 00303C48 4B EB F1 3D */ bl _savegpr_26
+/* 80307FEC 00303C4C 2C 03 00 00 */ cmpwi r3, 0
+/* 80307FF0 00303C50 7C 9B 23 78 */ mr r27, r4
+/* 80307FF4 00303C54 7C BC 2B 78 */ mr r28, r5
+/* 80307FF8 00303C58 7C DD 33 78 */ mr r29, r6
+/* 80307FFC 00303C5C 7C FE 3B 78 */ mr r30, r7
+/* 80308000 00303C60 7D 1F 43 78 */ mr r31, r8
+/* 80308004 00303C64 41 82 00 24 */ beq lbl_80308028
+/* 80308008 00303C68 2C 04 00 00 */ cmpwi r4, 0
+/* 8030800C 00303C6C 41 82 00 1C */ beq lbl_80308028
+/* 80308010 00303C70 2C 06 00 00 */ cmpwi r6, 0
+/* 80308014 00303C74 41 82 00 14 */ beq lbl_80308028
+/* 80308018 00303C78 2C 07 00 00 */ cmpwi r7, 0
+/* 8030801C 00303C7C 41 82 00 0C */ beq lbl_80308028
+/* 80308020 00303C80 2C 08 00 00 */ cmpwi r8, 0
+/* 80308024 00303C84 40 82 00 0C */ bne lbl_80308030
+lbl_80308028:
+/* 80308028 00303C88 38 60 00 01 */ li r3, 1
+/* 8030802C 00303C8C 48 00 01 5C */ b lbl_80308188
+lbl_80308030:
+/* 80308030 00303C90 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 80308034 00303C94 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 80308038 00303C98 28 07 00 1A */ cmplwi r7, 0x1a
+/* 8030803C 00303C9C 54 68 84 3E */ srwi r8, r3, 0x10
+/* 80308040 00303CA0 40 80 00 28 */ bge lbl_80308068
+/* 80308044 00303CA4 28 00 04 00 */ cmplwi r0, 0x400
+/* 80308048 00303CA8 40 82 00 20 */ bne lbl_80308068
+/* 8030804C 00303CAC 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 80308050 00303CB0 3C 80 80 58 */ lis r4, lbl_8057EA60@ha
+/* 80308054 00303CB4 38 A4 EA 60 */ addi r5, r4, lbl_8057EA60@l
+/* 80308058 00303CB8 7C 85 02 14 */ add r4, r5, r0
+/* 8030805C 00303CBC 80 04 06 F4 */ lwz r0, 0x6f4(r4)
+/* 80308060 00303CC0 7C 08 00 40 */ cmplw r8, r0
+/* 80308064 00303CC4 40 81 00 0C */ ble lbl_80308070
+lbl_80308068:
+/* 80308068 00303CC8 38 00 00 01 */ li r0, 1
+/* 8030806C 00303CCC 48 00 00 7C */ b lbl_803080E8
+lbl_80308070:
+/* 80308070 00303CD0 38 00 00 0D */ li r0, 0xd
+/* 80308074 00303CD4 38 C4 06 EC */ addi r6, r4, 0x6ec
+/* 80308078 00303CD8 38 80 00 00 */ li r4, 0
+/* 8030807C 00303CDC 7C 09 03 A6 */ mtctr r0
+lbl_80308080:
+/* 80308080 00303CE0 54 80 1B 78 */ rlwinm r0, r4, 3, 0xd, 0x1c
+/* 80308084 00303CE4 7D 25 02 14 */ add r9, r5, r0
+/* 80308088 00303CE8 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 8030808C 00303CEC 7C 00 30 40 */ cmplw r0, r6
+/* 80308090 00303CF0 40 82 00 10 */ bne lbl_803080A0
+/* 80308094 00303CF4 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80308098 00303CF8 7C 08 00 40 */ cmplw r8, r0
+/* 8030809C 00303CFC 41 82 00 30 */ beq lbl_803080CC
+lbl_803080A0:
+/* 803080A0 00303D00 38 84 00 01 */ addi r4, r4, 1
+/* 803080A4 00303D04 54 80 1B 78 */ rlwinm r0, r4, 3, 0xd, 0x1c
+/* 803080A8 00303D08 7D 25 02 14 */ add r9, r5, r0
+/* 803080AC 00303D0C 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 803080B0 00303D10 7C 00 30 40 */ cmplw r0, r6
+/* 803080B4 00303D14 40 82 00 10 */ bne lbl_803080C4
+/* 803080B8 00303D18 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 803080BC 00303D1C 7C 08 00 40 */ cmplw r8, r0
+/* 803080C0 00303D20 41 82 00 0C */ beq lbl_803080CC
+lbl_803080C4:
+/* 803080C4 00303D24 38 84 00 01 */ addi r4, r4, 1
+/* 803080C8 00303D28 42 00 FF B8 */ bdnz lbl_80308080
+lbl_803080CC:
+/* 803080CC 00303D2C 54 85 04 3E */ clrlwi r5, r4, 0x10
+/* 803080D0 00303D30 38 80 00 1A */ li r4, 0x1a
+/* 803080D4 00303D34 38 05 FF E6 */ addi r0, r5, -26
+/* 803080D8 00303D38 7C A4 23 38 */ orc r4, r5, r4
+/* 803080DC 00303D3C 54 00 F8 7E */ srwi r0, r0, 1
+/* 803080E0 00303D40 7C 00 20 50 */ subf r0, r0, r4
+/* 803080E4 00303D44 54 00 0F FE */ srwi r0, r0, 0x1f
+lbl_803080E8:
+/* 803080E8 00303D48 2C 00 00 00 */ cmpwi r0, 0
+/* 803080EC 00303D4C 41 82 00 0C */ beq lbl_803080F8
+/* 803080F0 00303D50 7C 03 03 78 */ mr r3, r0
+/* 803080F4 00303D54 48 00 00 94 */ b lbl_80308188
+lbl_803080F8:
+/* 803080F8 00303D58 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 803080FC 00303D5C 3C A0 80 58 */ lis r5, lbl_8057EA60@ha
+/* 80308100 00303D60 7C 64 1B 78 */ mr r4, r3
+/* 80308104 00303D64 38 A5 EA 60 */ addi r5, r5, lbl_8057EA60@l
+/* 80308108 00303D68 7C 65 02 14 */ add r3, r5, r0
+/* 8030810C 00303D6C 3B 43 06 EC */ addi r26, r3, 0x6ec
+/* 80308110 00303D70 80 63 06 F0 */ lwz r3, 0x6f0(r3)
+/* 80308114 00303D74 4B FF F6 D9 */ bl VFipdm_disk_set_disk
+/* 80308118 00303D78 2C 03 00 00 */ cmpwi r3, 0
+/* 8030811C 00303D7C 41 82 00 08 */ beq lbl_80308124
+/* 80308120 00303D80 48 00 00 68 */ b lbl_80308188
+lbl_80308124:
+/* 80308124 00303D84 80 1A 00 18 */ lwz r0, 0x18(r26)
+/* 80308128 00303D88 7C 00 E0 40 */ cmplw r0, r28
+/* 8030812C 00303D8C 41 81 00 0C */ bgt lbl_80308138
+/* 80308130 00303D90 38 60 00 12 */ li r3, 0x12
+/* 80308134 00303D94 48 00 00 54 */ b lbl_80308188
+lbl_80308138:
+/* 80308138 00303D98 7C 7C EA 14 */ add r3, r28, r29
+/* 8030813C 00303D9C 7C 00 18 40 */ cmplw r0, r3
+/* 80308140 00303DA0 40 80 00 0C */ bge lbl_8030814C
+/* 80308144 00303DA4 7C 00 18 50 */ subf r0, r0, r3
+/* 80308148 00303DA8 7F A0 E8 50 */ subf r29, r0, r29
+lbl_8030814C:
+/* 8030814C 00303DAC 7F 43 D3 78 */ mr r3, r26
+/* 80308150 00303DB0 7F 84 E3 78 */ mr r4, r28
+/* 80308154 00303DB4 7F C5 F3 78 */ mr r5, r30
+/* 80308158 00303DB8 4B FF F8 E9 */ bl VFipdm_part_chg_ltop
+/* 8030815C 00303DBC 7C 65 1B 78 */ mr r5, r3
+/* 80308160 00303DC0 80 7A 00 04 */ lwz r3, 4(r26)
+/* 80308164 00303DC4 7F 64 DB 78 */ mr r4, r27
+/* 80308168 00303DC8 7F A6 EB 78 */ mr r6, r29
+/* 8030816C 00303DCC 7F C7 F3 78 */ mr r7, r30
+/* 80308170 00303DD0 7F E8 FB 78 */ mr r8, r31
+/* 80308174 00303DD4 4B FF EF 75 */ bl VFipdm_disk_physical_read
+/* 80308178 00303DD8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030817C 00303DDC 41 82 00 08 */ beq lbl_80308184
+/* 80308180 00303DE0 48 00 00 08 */ b lbl_80308188
+lbl_80308184:
+/* 80308184 00303DE4 38 60 00 00 */ li r3, 0
+lbl_80308188:
+/* 80308188 00303DE8 39 61 00 20 */ addi r11, r1, 0x20
+/* 8030818C 00303DEC 4B EB EF E5 */ bl _restgpr_26
+/* 80308190 00303DF0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80308194 00303DF4 7C 08 03 A6 */ mtlr r0
+/* 80308198 00303DF8 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030819C 00303DFC 4E 80 00 20 */ blr
+
+.global VFipdm_part_logical_write
+VFipdm_part_logical_write:
+/* 803081A0 00303E00 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 803081A4 00303E04 7C 08 02 A6 */ mflr r0
+/* 803081A8 00303E08 90 01 00 24 */ stw r0, 0x24(r1)
+/* 803081AC 00303E0C 39 61 00 20 */ addi r11, r1, 0x20
+/* 803081B0 00303E10 4B EB EF 75 */ bl _savegpr_26
+/* 803081B4 00303E14 2C 03 00 00 */ cmpwi r3, 0
+/* 803081B8 00303E18 7C 9B 23 78 */ mr r27, r4
+/* 803081BC 00303E1C 7C BC 2B 78 */ mr r28, r5
+/* 803081C0 00303E20 7C DD 33 78 */ mr r29, r6
+/* 803081C4 00303E24 7C FE 3B 78 */ mr r30, r7
+/* 803081C8 00303E28 7D 1F 43 78 */ mr r31, r8
+/* 803081CC 00303E2C 41 82 00 24 */ beq lbl_803081F0
+/* 803081D0 00303E30 2C 04 00 00 */ cmpwi r4, 0
+/* 803081D4 00303E34 41 82 00 1C */ beq lbl_803081F0
+/* 803081D8 00303E38 2C 06 00 00 */ cmpwi r6, 0
+/* 803081DC 00303E3C 41 82 00 14 */ beq lbl_803081F0
+/* 803081E0 00303E40 2C 07 00 00 */ cmpwi r7, 0
+/* 803081E4 00303E44 41 82 00 0C */ beq lbl_803081F0
+/* 803081E8 00303E48 2C 08 00 00 */ cmpwi r8, 0
+/* 803081EC 00303E4C 40 82 00 0C */ bne lbl_803081F8
+lbl_803081F0:
+/* 803081F0 00303E50 38 60 00 01 */ li r3, 1
+/* 803081F4 00303E54 48 00 01 5C */ b lbl_80308350
+lbl_803081F8:
+/* 803081F8 00303E58 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 803081FC 00303E5C 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 80308200 00303E60 28 07 00 1A */ cmplwi r7, 0x1a
+/* 80308204 00303E64 54 68 84 3E */ srwi r8, r3, 0x10
+/* 80308208 00303E68 40 80 00 28 */ bge lbl_80308230
+/* 8030820C 00303E6C 28 00 04 00 */ cmplwi r0, 0x400
+/* 80308210 00303E70 40 82 00 20 */ bne lbl_80308230
+/* 80308214 00303E74 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 80308218 00303E78 3C 80 80 58 */ lis r4, lbl_8057EA60@ha
+/* 8030821C 00303E7C 38 A4 EA 60 */ addi r5, r4, lbl_8057EA60@l
+/* 80308220 00303E80 7C 85 02 14 */ add r4, r5, r0
+/* 80308224 00303E84 80 04 06 F4 */ lwz r0, 0x6f4(r4)
+/* 80308228 00303E88 7C 08 00 40 */ cmplw r8, r0
+/* 8030822C 00303E8C 40 81 00 0C */ ble lbl_80308238
+lbl_80308230:
+/* 80308230 00303E90 38 00 00 01 */ li r0, 1
+/* 80308234 00303E94 48 00 00 7C */ b lbl_803082B0
+lbl_80308238:
+/* 80308238 00303E98 38 00 00 0D */ li r0, 0xd
+/* 8030823C 00303E9C 38 C4 06 EC */ addi r6, r4, 0x6ec
+/* 80308240 00303EA0 38 80 00 00 */ li r4, 0
+/* 80308244 00303EA4 7C 09 03 A6 */ mtctr r0
+lbl_80308248:
+/* 80308248 00303EA8 54 80 1B 78 */ rlwinm r0, r4, 3, 0xd, 0x1c
+/* 8030824C 00303EAC 7D 25 02 14 */ add r9, r5, r0
+/* 80308250 00303EB0 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 80308254 00303EB4 7C 00 30 40 */ cmplw r0, r6
+/* 80308258 00303EB8 40 82 00 10 */ bne lbl_80308268
+/* 8030825C 00303EBC 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80308260 00303EC0 7C 08 00 40 */ cmplw r8, r0
+/* 80308264 00303EC4 41 82 00 30 */ beq lbl_80308294
+lbl_80308268:
+/* 80308268 00303EC8 38 84 00 01 */ addi r4, r4, 1
+/* 8030826C 00303ECC 54 80 1B 78 */ rlwinm r0, r4, 3, 0xd, 0x1c
+/* 80308270 00303ED0 7D 25 02 14 */ add r9, r5, r0
+/* 80308274 00303ED4 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 80308278 00303ED8 7C 00 30 40 */ cmplw r0, r6
+/* 8030827C 00303EDC 40 82 00 10 */ bne lbl_8030828C
+/* 80308280 00303EE0 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80308284 00303EE4 7C 08 00 40 */ cmplw r8, r0
+/* 80308288 00303EE8 41 82 00 0C */ beq lbl_80308294
+lbl_8030828C:
+/* 8030828C 00303EEC 38 84 00 01 */ addi r4, r4, 1
+/* 80308290 00303EF0 42 00 FF B8 */ bdnz lbl_80308248
+lbl_80308294:
+/* 80308294 00303EF4 54 85 04 3E */ clrlwi r5, r4, 0x10
+/* 80308298 00303EF8 38 80 00 1A */ li r4, 0x1a
+/* 8030829C 00303EFC 38 05 FF E6 */ addi r0, r5, -26
+/* 803082A0 00303F00 7C A4 23 38 */ orc r4, r5, r4
+/* 803082A4 00303F04 54 00 F8 7E */ srwi r0, r0, 1
+/* 803082A8 00303F08 7C 00 20 50 */ subf r0, r0, r4
+/* 803082AC 00303F0C 54 00 0F FE */ srwi r0, r0, 0x1f
+lbl_803082B0:
+/* 803082B0 00303F10 2C 00 00 00 */ cmpwi r0, 0
+/* 803082B4 00303F14 41 82 00 0C */ beq lbl_803082C0
+/* 803082B8 00303F18 7C 03 03 78 */ mr r3, r0
+/* 803082BC 00303F1C 48 00 00 94 */ b lbl_80308350
+lbl_803082C0:
+/* 803082C0 00303F20 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 803082C4 00303F24 3C A0 80 58 */ lis r5, lbl_8057EA60@ha
+/* 803082C8 00303F28 7C 64 1B 78 */ mr r4, r3
+/* 803082CC 00303F2C 38 A5 EA 60 */ addi r5, r5, lbl_8057EA60@l
+/* 803082D0 00303F30 7C 65 02 14 */ add r3, r5, r0
+/* 803082D4 00303F34 3B 43 06 EC */ addi r26, r3, 0x6ec
+/* 803082D8 00303F38 80 63 06 F0 */ lwz r3, 0x6f0(r3)
+/* 803082DC 00303F3C 4B FF F5 11 */ bl VFipdm_disk_set_disk
+/* 803082E0 00303F40 2C 03 00 00 */ cmpwi r3, 0
+/* 803082E4 00303F44 41 82 00 08 */ beq lbl_803082EC
+/* 803082E8 00303F48 48 00 00 68 */ b lbl_80308350
+lbl_803082EC:
+/* 803082EC 00303F4C 80 1A 00 18 */ lwz r0, 0x18(r26)
+/* 803082F0 00303F50 7C 00 E0 40 */ cmplw r0, r28
+/* 803082F4 00303F54 41 81 00 0C */ bgt lbl_80308300
+/* 803082F8 00303F58 38 60 00 12 */ li r3, 0x12
+/* 803082FC 00303F5C 48 00 00 54 */ b lbl_80308350
+lbl_80308300:
+/* 80308300 00303F60 7C 7C EA 14 */ add r3, r28, r29
+/* 80308304 00303F64 7C 00 18 40 */ cmplw r0, r3
+/* 80308308 00303F68 40 80 00 0C */ bge lbl_80308314
+/* 8030830C 00303F6C 7C 00 18 50 */ subf r0, r0, r3
+/* 80308310 00303F70 7F A0 E8 50 */ subf r29, r0, r29
+lbl_80308314:
+/* 80308314 00303F74 7F 43 D3 78 */ mr r3, r26
+/* 80308318 00303F78 7F 84 E3 78 */ mr r4, r28
+/* 8030831C 00303F7C 7F C5 F3 78 */ mr r5, r30
+/* 80308320 00303F80 4B FF F7 21 */ bl VFipdm_part_chg_ltop
+/* 80308324 00303F84 7C 65 1B 78 */ mr r5, r3
+/* 80308328 00303F88 80 7A 00 04 */ lwz r3, 4(r26)
+/* 8030832C 00303F8C 7F 64 DB 78 */ mr r4, r27
+/* 80308330 00303F90 7F A6 EB 78 */ mr r6, r29
+/* 80308334 00303F94 7F C7 F3 78 */ mr r7, r30
+/* 80308338 00303F98 7F E8 FB 78 */ mr r8, r31
+/* 8030833C 00303F9C 4B FF EF 85 */ bl VFipdm_disk_physical_write
+/* 80308340 00303FA0 2C 03 00 00 */ cmpwi r3, 0
+/* 80308344 00303FA4 41 82 00 08 */ beq lbl_8030834C
+/* 80308348 00303FA8 48 00 00 08 */ b lbl_80308350
+lbl_8030834C:
+/* 8030834C 00303FAC 38 60 00 00 */ li r3, 0
+lbl_80308350:
+/* 80308350 00303FB0 39 61 00 20 */ addi r11, r1, 0x20
+/* 80308354 00303FB4 4B EB EE 1D */ bl _restgpr_26
+/* 80308358 00303FB8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030835C 00303FBC 7C 08 03 A6 */ mtlr r0
+/* 80308360 00303FC0 38 21 00 20 */ addi r1, r1, 0x20
+/* 80308364 00303FC4 4E 80 00 20 */ blr
+
+.global VFipdm_part_get_media_information
+VFipdm_part_get_media_information:
+/* 80308368 00303FC8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030836C 00303FCC 7C 08 02 A6 */ mflr r0
+/* 80308370 00303FD0 2C 03 00 00 */ cmpwi r3, 0
+/* 80308374 00303FD4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80308378 00303FD8 41 82 00 0C */ beq lbl_80308384
+/* 8030837C 00303FDC 2C 04 00 00 */ cmpwi r4, 0
+/* 80308380 00303FE0 40 82 00 0C */ bne lbl_8030838C
+lbl_80308384:
+/* 80308384 00303FE4 38 60 00 01 */ li r3, 1
+/* 80308388 00303FE8 48 00 00 F0 */ b lbl_80308478
+lbl_8030838C:
+/* 8030838C 00303FEC 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 80308390 00303FF0 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 80308394 00303FF4 28 07 00 1A */ cmplwi r7, 0x1a
+/* 80308398 00303FF8 54 68 84 3E */ srwi r8, r3, 0x10
+/* 8030839C 00303FFC 40 80 00 28 */ bge lbl_803083C4
+/* 803083A0 00304000 28 00 04 00 */ cmplwi r0, 0x400
+/* 803083A4 00304004 40 82 00 20 */ bne lbl_803083C4
+/* 803083A8 00304008 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 803083AC 0030400C 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 803083B0 00304010 38 A3 EA 60 */ addi r5, r3, lbl_8057EA60@l
+/* 803083B4 00304014 7C 65 02 14 */ add r3, r5, r0
+/* 803083B8 00304018 80 03 06 F4 */ lwz r0, 0x6f4(r3)
+/* 803083BC 0030401C 7C 08 00 40 */ cmplw r8, r0
+/* 803083C0 00304020 40 81 00 0C */ ble lbl_803083CC
+lbl_803083C4:
+/* 803083C4 00304024 38 60 00 01 */ li r3, 1
+/* 803083C8 00304028 48 00 00 7C */ b lbl_80308444
+lbl_803083CC:
+/* 803083CC 0030402C 38 00 00 0D */ li r0, 0xd
+/* 803083D0 00304030 38 C3 06 EC */ addi r6, r3, 0x6ec
+/* 803083D4 00304034 38 60 00 00 */ li r3, 0
+/* 803083D8 00304038 7C 09 03 A6 */ mtctr r0
+lbl_803083DC:
+/* 803083DC 0030403C 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 803083E0 00304040 7D 25 02 14 */ add r9, r5, r0
+/* 803083E4 00304044 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 803083E8 00304048 7C 00 30 40 */ cmplw r0, r6
+/* 803083EC 0030404C 40 82 00 10 */ bne lbl_803083FC
+/* 803083F0 00304050 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 803083F4 00304054 7C 08 00 40 */ cmplw r8, r0
+/* 803083F8 00304058 41 82 00 30 */ beq lbl_80308428
+lbl_803083FC:
+/* 803083FC 0030405C 38 63 00 01 */ addi r3, r3, 1
+/* 80308400 00304060 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80308404 00304064 7D 25 02 14 */ add r9, r5, r0
+/* 80308408 00304068 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 8030840C 0030406C 7C 00 30 40 */ cmplw r0, r6
+/* 80308410 00304070 40 82 00 10 */ bne lbl_80308420
+/* 80308414 00304074 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80308418 00304078 7C 08 00 40 */ cmplw r8, r0
+/* 8030841C 0030407C 41 82 00 0C */ beq lbl_80308428
+lbl_80308420:
+/* 80308420 00304080 38 63 00 01 */ addi r3, r3, 1
+/* 80308424 00304084 42 00 FF B8 */ bdnz lbl_803083DC
+lbl_80308428:
+/* 80308428 00304088 54 65 04 3E */ clrlwi r5, r3, 0x10
+/* 8030842C 0030408C 38 60 00 1A */ li r3, 0x1a
+/* 80308430 00304090 38 05 FF E6 */ addi r0, r5, -26
+/* 80308434 00304094 7C A3 1B 38 */ orc r3, r5, r3
+/* 80308438 00304098 54 00 F8 7E */ srwi r0, r0, 1
+/* 8030843C 0030409C 7C 00 18 50 */ subf r0, r0, r3
+/* 80308440 003040A0 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_80308444:
+/* 80308444 003040A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80308448 003040A8 41 82 00 08 */ beq lbl_80308450
+/* 8030844C 003040AC 48 00 00 2C */ b lbl_80308478
+lbl_80308450:
+/* 80308450 003040B0 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 80308454 003040B4 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80308458 003040B8 38 63 EA 60 */ addi r3, r3, lbl_8057EA60@l
+/* 8030845C 003040BC 7C 63 02 14 */ add r3, r3, r0
+/* 80308460 003040C0 80 63 06 F0 */ lwz r3, 0x6f0(r3)
+/* 80308464 003040C4 4B FF F2 71 */ bl VFipdm_disk_get_media_information
+/* 80308468 003040C8 7C 03 00 D0 */ neg r0, r3
+/* 8030846C 003040CC 7C 00 1B 78 */ or r0, r0, r3
+/* 80308470 003040D0 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 80308474 003040D4 7C 63 00 38 */ and r3, r3, r0
+lbl_80308478:
+/* 80308478 003040D8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030847C 003040DC 7C 08 03 A6 */ mtlr r0
+/* 80308480 003040E0 38 21 00 10 */ addi r1, r1, 0x10
+/* 80308484 003040E4 4E 80 00 20 */ blr
+
+.global VFipdm_part_check_media_write_protect
+VFipdm_part_check_media_write_protect:
+/* 80308488 003040E8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030848C 003040EC 41 82 00 0C */ beq lbl_80308498
+/* 80308490 003040F0 2C 04 00 00 */ cmpwi r4, 0
+/* 80308494 003040F4 40 82 00 0C */ bne lbl_803084A0
+lbl_80308498:
+/* 80308498 003040F8 38 60 00 01 */ li r3, 1
+/* 8030849C 003040FC 4E 80 00 20 */ blr
+lbl_803084A0:
+/* 803084A0 00304100 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 803084A4 00304104 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 803084A8 00304108 28 07 00 1A */ cmplwi r7, 0x1a
+/* 803084AC 0030410C 54 68 84 3E */ srwi r8, r3, 0x10
+/* 803084B0 00304110 40 80 00 28 */ bge lbl_803084D8
+/* 803084B4 00304114 28 00 04 00 */ cmplwi r0, 0x400
+/* 803084B8 00304118 40 82 00 20 */ bne lbl_803084D8
+/* 803084BC 0030411C 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 803084C0 00304120 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 803084C4 00304124 38 A3 EA 60 */ addi r5, r3, lbl_8057EA60@l
+/* 803084C8 00304128 7C 65 02 14 */ add r3, r5, r0
+/* 803084CC 0030412C 80 03 06 F4 */ lwz r0, 0x6f4(r3)
+/* 803084D0 00304130 7C 08 00 40 */ cmplw r8, r0
+/* 803084D4 00304134 40 81 00 0C */ ble lbl_803084E0
+lbl_803084D8:
+/* 803084D8 00304138 38 60 00 01 */ li r3, 1
+/* 803084DC 0030413C 48 00 00 7C */ b lbl_80308558
+lbl_803084E0:
+/* 803084E0 00304140 38 00 00 0D */ li r0, 0xd
+/* 803084E4 00304144 38 C3 06 EC */ addi r6, r3, 0x6ec
+/* 803084E8 00304148 38 60 00 00 */ li r3, 0
+/* 803084EC 0030414C 7C 09 03 A6 */ mtctr r0
+lbl_803084F0:
+/* 803084F0 00304150 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 803084F4 00304154 7D 25 02 14 */ add r9, r5, r0
+/* 803084F8 00304158 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 803084FC 0030415C 7C 00 30 40 */ cmplw r0, r6
+/* 80308500 00304160 40 82 00 10 */ bne lbl_80308510
+/* 80308504 00304164 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80308508 00304168 7C 08 00 40 */ cmplw r8, r0
+/* 8030850C 0030416C 41 82 00 30 */ beq lbl_8030853C
+lbl_80308510:
+/* 80308510 00304170 38 63 00 01 */ addi r3, r3, 1
+/* 80308514 00304174 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80308518 00304178 7D 25 02 14 */ add r9, r5, r0
+/* 8030851C 0030417C 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 80308520 00304180 7C 00 30 40 */ cmplw r0, r6
+/* 80308524 00304184 40 82 00 10 */ bne lbl_80308534
+/* 80308528 00304188 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 8030852C 0030418C 7C 08 00 40 */ cmplw r8, r0
+/* 80308530 00304190 41 82 00 0C */ beq lbl_8030853C
+lbl_80308534:
+/* 80308534 00304194 38 63 00 01 */ addi r3, r3, 1
+/* 80308538 00304198 42 00 FF B8 */ bdnz lbl_803084F0
+lbl_8030853C:
+/* 8030853C 0030419C 54 65 04 3E */ clrlwi r5, r3, 0x10
+/* 80308540 003041A0 38 60 00 1A */ li r3, 0x1a
+/* 80308544 003041A4 38 05 FF E6 */ addi r0, r5, -26
+/* 80308548 003041A8 7C A3 1B 38 */ orc r3, r5, r3
+/* 8030854C 003041AC 54 00 F8 7E */ srwi r0, r0, 1
+/* 80308550 003041B0 7C 00 18 50 */ subf r0, r0, r3
+/* 80308554 003041B4 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_80308558:
+/* 80308558 003041B8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030855C 003041BC 4C 82 00 20 */ bnelr
+/* 80308560 003041C0 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 80308564 003041C4 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80308568 003041C8 38 63 EA 60 */ addi r3, r3, lbl_8057EA60@l
+/* 8030856C 003041CC 7C 63 02 14 */ add r3, r3, r0
+/* 80308570 003041D0 80 03 06 EC */ lwz r0, 0x6ec(r3)
+/* 80308574 003041D4 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 80308578 003041D8 41 82 00 10 */ beq lbl_80308588
+/* 8030857C 003041DC 38 00 00 01 */ li r0, 1
+/* 80308580 003041E0 90 04 00 00 */ stw r0, 0(r4)
+/* 80308584 003041E4 48 00 00 0C */ b lbl_80308590
+lbl_80308588:
+/* 80308588 003041E8 38 00 00 00 */ li r0, 0
+/* 8030858C 003041EC 90 04 00 00 */ stw r0, 0(r4)
+lbl_80308590:
+/* 80308590 003041F0 38 60 00 00 */ li r3, 0
+/* 80308594 003041F4 4E 80 00 20 */ blr
+
+.global VFipdm_part_check_media_insert
+VFipdm_part_check_media_insert:
+/* 80308598 003041F8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030859C 003041FC 41 82 00 0C */ beq lbl_803085A8
+/* 803085A0 00304200 2C 04 00 00 */ cmpwi r4, 0
+/* 803085A4 00304204 40 82 00 0C */ bne lbl_803085B0
+lbl_803085A8:
+/* 803085A8 00304208 38 60 00 01 */ li r3, 1
+/* 803085AC 0030420C 4E 80 00 20 */ blr
+lbl_803085B0:
+/* 803085B0 00304210 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 803085B4 00304214 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 803085B8 00304218 28 07 00 1A */ cmplwi r7, 0x1a
+/* 803085BC 0030421C 54 68 84 3E */ srwi r8, r3, 0x10
+/* 803085C0 00304220 40 80 00 28 */ bge lbl_803085E8
+/* 803085C4 00304224 28 00 04 00 */ cmplwi r0, 0x400
+/* 803085C8 00304228 40 82 00 20 */ bne lbl_803085E8
+/* 803085CC 0030422C 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 803085D0 00304230 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 803085D4 00304234 38 A3 EA 60 */ addi r5, r3, lbl_8057EA60@l
+/* 803085D8 00304238 7C 65 02 14 */ add r3, r5, r0
+/* 803085DC 0030423C 80 03 06 F4 */ lwz r0, 0x6f4(r3)
+/* 803085E0 00304240 7C 08 00 40 */ cmplw r8, r0
+/* 803085E4 00304244 40 81 00 0C */ ble lbl_803085F0
+lbl_803085E8:
+/* 803085E8 00304248 38 60 00 01 */ li r3, 1
+/* 803085EC 0030424C 48 00 00 7C */ b lbl_80308668
+lbl_803085F0:
+/* 803085F0 00304250 38 00 00 0D */ li r0, 0xd
+/* 803085F4 00304254 38 C3 06 EC */ addi r6, r3, 0x6ec
+/* 803085F8 00304258 38 60 00 00 */ li r3, 0
+/* 803085FC 0030425C 7C 09 03 A6 */ mtctr r0
+lbl_80308600:
+/* 80308600 00304260 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80308604 00304264 7D 25 02 14 */ add r9, r5, r0
+/* 80308608 00304268 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 8030860C 0030426C 7C 00 30 40 */ cmplw r0, r6
+/* 80308610 00304270 40 82 00 10 */ bne lbl_80308620
+/* 80308614 00304274 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80308618 00304278 7C 08 00 40 */ cmplw r8, r0
+/* 8030861C 0030427C 41 82 00 30 */ beq lbl_8030864C
+lbl_80308620:
+/* 80308620 00304280 38 63 00 01 */ addi r3, r3, 1
+/* 80308624 00304284 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80308628 00304288 7D 25 02 14 */ add r9, r5, r0
+/* 8030862C 0030428C 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 80308630 00304290 7C 00 30 40 */ cmplw r0, r6
+/* 80308634 00304294 40 82 00 10 */ bne lbl_80308644
+/* 80308638 00304298 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 8030863C 0030429C 7C 08 00 40 */ cmplw r8, r0
+/* 80308640 003042A0 41 82 00 0C */ beq lbl_8030864C
+lbl_80308644:
+/* 80308644 003042A4 38 63 00 01 */ addi r3, r3, 1
+/* 80308648 003042A8 42 00 FF B8 */ bdnz lbl_80308600
+lbl_8030864C:
+/* 8030864C 003042AC 54 65 04 3E */ clrlwi r5, r3, 0x10
+/* 80308650 003042B0 38 60 00 1A */ li r3, 0x1a
+/* 80308654 003042B4 38 05 FF E6 */ addi r0, r5, -26
+/* 80308658 003042B8 7C A3 1B 38 */ orc r3, r5, r3
+/* 8030865C 003042BC 54 00 F8 7E */ srwi r0, r0, 1
+/* 80308660 003042C0 7C 00 18 50 */ subf r0, r0, r3
+/* 80308664 003042C4 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_80308668:
+/* 80308668 003042C8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030866C 003042CC 4C 82 00 20 */ bnelr
+/* 80308670 003042D0 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 80308674 003042D4 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80308678 003042D8 38 63 EA 60 */ addi r3, r3, lbl_8057EA60@l
+/* 8030867C 003042DC 7C 63 02 14 */ add r3, r3, r0
+/* 80308680 003042E0 80 03 06 EC */ lwz r0, 0x6ec(r3)
+/* 80308684 003042E4 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 80308688 003042E8 41 82 00 10 */ beq lbl_80308698
+/* 8030868C 003042EC 38 00 00 01 */ li r0, 1
+/* 80308690 003042F0 90 04 00 00 */ stw r0, 0(r4)
+/* 80308694 003042F4 48 00 00 0C */ b lbl_803086A0
+lbl_80308698:
+/* 80308698 003042F8 38 00 00 00 */ li r0, 0
+/* 8030869C 003042FC 90 04 00 00 */ stw r0, 0(r4)
+lbl_803086A0:
+/* 803086A0 00304300 38 60 00 00 */ li r3, 0
+/* 803086A4 00304304 4E 80 00 20 */ blr
+
+.global VFipdm_part_check_media_detect
+VFipdm_part_check_media_detect:
+/* 803086A8 00304308 2C 03 00 00 */ cmpwi r3, 0
+/* 803086AC 0030430C 41 82 00 0C */ beq lbl_803086B8
+/* 803086B0 00304310 2C 04 00 00 */ cmpwi r4, 0
+/* 803086B4 00304314 40 82 00 0C */ bne lbl_803086C0
+lbl_803086B8:
+/* 803086B8 00304318 38 60 00 01 */ li r3, 1
+/* 803086BC 0030431C 4E 80 00 20 */ blr
+lbl_803086C0:
+/* 803086C0 00304320 54 67 06 3E */ clrlwi r7, r3, 0x18
+/* 803086C4 00304324 54 60 04 2E */ rlwinm r0, r3, 0, 0x10, 0x17
+/* 803086C8 00304328 28 07 00 1A */ cmplwi r7, 0x1a
+/* 803086CC 0030432C 54 68 84 3E */ srwi r8, r3, 0x10
+/* 803086D0 00304330 40 80 00 28 */ bge lbl_803086F8
+/* 803086D4 00304334 28 00 04 00 */ cmplwi r0, 0x400
+/* 803086D8 00304338 40 82 00 20 */ bne lbl_803086F8
+/* 803086DC 0030433C 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 803086E0 00304340 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 803086E4 00304344 38 A3 EA 60 */ addi r5, r3, lbl_8057EA60@l
+/* 803086E8 00304348 7C 65 02 14 */ add r3, r5, r0
+/* 803086EC 0030434C 80 03 06 F4 */ lwz r0, 0x6f4(r3)
+/* 803086F0 00304350 7C 08 00 40 */ cmplw r8, r0
+/* 803086F4 00304354 40 81 00 0C */ ble lbl_80308700
+lbl_803086F8:
+/* 803086F8 00304358 38 60 00 01 */ li r3, 1
+/* 803086FC 0030435C 48 00 00 7C */ b lbl_80308778
+lbl_80308700:
+/* 80308700 00304360 38 00 00 0D */ li r0, 0xd
+/* 80308704 00304364 38 C3 06 EC */ addi r6, r3, 0x6ec
+/* 80308708 00304368 38 60 00 00 */ li r3, 0
+/* 8030870C 0030436C 7C 09 03 A6 */ mtctr r0
+lbl_80308710:
+/* 80308710 00304370 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80308714 00304374 7D 25 02 14 */ add r9, r5, r0
+/* 80308718 00304378 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 8030871C 0030437C 7C 00 30 40 */ cmplw r0, r6
+/* 80308720 00304380 40 82 00 10 */ bne lbl_80308730
+/* 80308724 00304384 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 80308728 00304388 7C 08 00 40 */ cmplw r8, r0
+/* 8030872C 0030438C 41 82 00 30 */ beq lbl_8030875C
+lbl_80308730:
+/* 80308730 00304390 38 63 00 01 */ addi r3, r3, 1
+/* 80308734 00304394 54 60 1B 78 */ rlwinm r0, r3, 3, 0xd, 0x1c
+/* 80308738 00304398 7D 25 02 14 */ add r9, r5, r0
+/* 8030873C 0030439C 80 09 00 D8 */ lwz r0, 0xd8(r9)
+/* 80308740 003043A0 7C 00 30 40 */ cmplw r0, r6
+/* 80308744 003043A4 40 82 00 10 */ bne lbl_80308754
+/* 80308748 003043A8 80 09 00 D4 */ lwz r0, 0xd4(r9)
+/* 8030874C 003043AC 7C 08 00 40 */ cmplw r8, r0
+/* 80308750 003043B0 41 82 00 0C */ beq lbl_8030875C
+lbl_80308754:
+/* 80308754 003043B4 38 63 00 01 */ addi r3, r3, 1
+/* 80308758 003043B8 42 00 FF B8 */ bdnz lbl_80308710
+lbl_8030875C:
+/* 8030875C 003043BC 54 65 04 3E */ clrlwi r5, r3, 0x10
+/* 80308760 003043C0 38 60 00 1A */ li r3, 0x1a
+/* 80308764 003043C4 38 05 FF E6 */ addi r0, r5, -26
+/* 80308768 003043C8 7C A3 1B 38 */ orc r3, r5, r3
+/* 8030876C 003043CC 54 00 F8 7E */ srwi r0, r0, 1
+/* 80308770 003043D0 7C 00 18 50 */ subf r0, r0, r3
+/* 80308774 003043D4 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_80308778:
+/* 80308778 003043D8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030877C 003043DC 4C 82 00 20 */ bnelr
+/* 80308780 003043E0 1C 07 00 2C */ mulli r0, r7, 0x2c
+/* 80308784 003043E4 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 80308788 003043E8 38 63 EA 60 */ addi r3, r3, lbl_8057EA60@l
+/* 8030878C 003043EC 7C 63 02 14 */ add r3, r3, r0
+/* 80308790 003043F0 80 03 06 EC */ lwz r0, 0x6ec(r3)
+/* 80308794 003043F4 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
+/* 80308798 003043F8 41 82 00 10 */ beq lbl_803087A8
+/* 8030879C 003043FC 38 00 00 01 */ li r0, 1
+/* 803087A0 00304400 90 04 00 00 */ stw r0, 0(r4)
+/* 803087A4 00304404 48 00 00 0C */ b lbl_803087B0
+lbl_803087A8:
+/* 803087A8 00304408 38 00 00 00 */ li r0, 0
+/* 803087AC 0030440C 90 04 00 00 */ stw r0, 0(r4)
+lbl_803087B0:
+/* 803087B0 00304410 38 60 00 00 */ li r3, 0
+/* 803087B4 00304414 4E 80 00 20 */ blr
+
+.global VFipdm_part_set_driver_error_code
+VFipdm_part_set_driver_error_code:
+/* 803087B8 00304418 54 60 06 3E */ clrlwi r0, r3, 0x18
+/* 803087BC 0030441C 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 803087C0 00304420 1C 00 00 2C */ mulli r0, r0, 0x2c
+/* 803087C4 00304424 38 63 EA 60 */ addi r3, r3, lbl_8057EA60@l
+/* 803087C8 00304428 7C 63 02 14 */ add r3, r3, r0
+/* 803087CC 0030442C 90 83 07 10 */ stw r4, 0x710(r3)
+/* 803087D0 00304430 4E 80 00 20 */ blr
+
+.global VFipdm_part_get_driver_error_code
+VFipdm_part_get_driver_error_code:
+/* 803087D4 00304434 54 60 06 3E */ clrlwi r0, r3, 0x18
+/* 803087D8 00304438 3C 60 80 58 */ lis r3, lbl_8057EA60@ha
+/* 803087DC 0030443C 1C 00 00 2C */ mulli r0, r0, 0x2c
+/* 803087E0 00304440 38 63 EA 60 */ addi r3, r3, lbl_8057EA60@l
+/* 803087E4 00304444 7C 63 02 14 */ add r3, r3, r0
+/* 803087E8 00304448 80 63 07 10 */ lwz r3, 0x710(r3)
+/* 803087EC 0030444C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_api_util.s b/asm/SDK/VF/pf_api_util.s new file mode 100644 index 0000000..cad2d7d --- /dev/null +++ b/asm/SDK/VF/pf_api_util.s @@ -0,0 +1,115 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFAPI_ParseOpenModeString
+VFiPFAPI_ParseOpenModeString:
+/* 8031A110 00315D70 2C 03 00 00 */ cmpwi r3, 0
+/* 8031A114 00315D74 40 82 00 0C */ bne lbl_8031A120
+/* 8031A118 00315D78 38 60 00 0A */ li r3, 0xa
+/* 8031A11C 00315D7C 4E 80 00 20 */ blr
+lbl_8031A120:
+/* 8031A120 00315D80 88 03 00 00 */ lbz r0, 0(r3)
+/* 8031A124 00315D84 38 A0 00 01 */ li r5, 1
+/* 8031A128 00315D88 7C 00 07 74 */ extsb r0, r0
+/* 8031A12C 00315D8C 2C 00 00 72 */ cmpwi r0, 0x72
+/* 8031A130 00315D90 41 82 00 20 */ beq lbl_8031A150
+/* 8031A134 00315D94 40 80 00 10 */ bge lbl_8031A144
+/* 8031A138 00315D98 2C 00 00 61 */ cmpwi r0, 0x61
+/* 8031A13C 00315D9C 41 82 00 24 */ beq lbl_8031A160
+/* 8031A140 00315DA0 48 00 00 28 */ b lbl_8031A168
+lbl_8031A144:
+/* 8031A144 00315DA4 2C 00 00 77 */ cmpwi r0, 0x77
+/* 8031A148 00315DA8 41 82 00 10 */ beq lbl_8031A158
+/* 8031A14C 00315DAC 48 00 00 1C */ b lbl_8031A168
+lbl_8031A150:
+/* 8031A150 00315DB0 38 80 00 02 */ li r4, 2
+/* 8031A154 00315DB4 48 00 00 1C */ b lbl_8031A170
+lbl_8031A158:
+/* 8031A158 00315DB8 38 80 00 01 */ li r4, 1
+/* 8031A15C 00315DBC 48 00 00 14 */ b lbl_8031A170
+lbl_8031A160:
+/* 8031A160 00315DC0 38 80 00 04 */ li r4, 4
+/* 8031A164 00315DC4 48 00 00 0C */ b lbl_8031A170
+lbl_8031A168:
+/* 8031A168 00315DC8 38 60 00 00 */ li r3, 0
+/* 8031A16C 00315DCC 4E 80 00 20 */ blr
+lbl_8031A170:
+/* 8031A170 00315DD0 88 03 00 01 */ lbz r0, 1(r3)
+/* 8031A174 00315DD4 2C 00 00 62 */ cmpwi r0, 0x62
+/* 8031A178 00315DD8 40 82 00 08 */ bne lbl_8031A180
+/* 8031A17C 00315DDC 38 A0 00 02 */ li r5, 2
+lbl_8031A180:
+/* 8031A180 00315DE0 7C 03 28 AE */ lbzx r0, r3, r5
+/* 8031A184 00315DE4 38 A5 00 01 */ addi r5, r5, 1
+/* 8031A188 00315DE8 7C 00 07 74 */ extsb r0, r0
+/* 8031A18C 00315DEC 2C 00 00 2B */ cmpwi r0, 0x2b
+/* 8031A190 00315DF0 41 82 00 30 */ beq lbl_8031A1C0
+/* 8031A194 00315DF4 40 80 00 10 */ bge lbl_8031A1A4
+/* 8031A198 00315DF8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031A19C 00315DFC 41 82 00 14 */ beq lbl_8031A1B0
+/* 8031A1A0 00315E00 48 00 00 18 */ b lbl_8031A1B8
+lbl_8031A1A4:
+/* 8031A1A4 00315E04 2C 00 00 74 */ cmpwi r0, 0x74
+/* 8031A1A8 00315E08 41 82 00 10 */ beq lbl_8031A1B8
+/* 8031A1AC 00315E0C 48 00 00 0C */ b lbl_8031A1B8
+lbl_8031A1B0:
+/* 8031A1B0 00315E10 7C 83 23 78 */ mr r3, r4
+/* 8031A1B4 00315E14 4E 80 00 20 */ blr
+lbl_8031A1B8:
+/* 8031A1B8 00315E18 38 60 00 00 */ li r3, 0
+/* 8031A1BC 00315E1C 4E 80 00 20 */ blr
+lbl_8031A1C0:
+/* 8031A1C0 00315E20 7C 03 28 AE */ lbzx r0, r3, r5
+/* 8031A1C4 00315E24 7C 00 07 75 */ extsb. r0, r0
+/* 8031A1C8 00315E28 41 82 00 08 */ beq lbl_8031A1D0
+/* 8031A1CC 00315E2C 48 00 00 0C */ b lbl_8031A1D8
+lbl_8031A1D0:
+/* 8031A1D0 00315E30 60 83 00 08 */ ori r3, r4, 8
+/* 8031A1D4 00315E34 4E 80 00 20 */ blr
+lbl_8031A1D8:
+/* 8031A1D8 00315E38 38 60 00 00 */ li r3, 0
+/* 8031A1DC 00315E3C 4E 80 00 20 */ blr
+
+.global VFiPFAPI_convertError
+VFiPFAPI_convertError:
+/* 8031A1E0 00315E40 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 8031A1E4 00315E44 40 86 00 0C */ bne cr1, lbl_8031A1F0
+/* 8031A1E8 00315E48 38 60 00 00 */ li r3, 0
+/* 8031A1EC 00315E4C 4E 80 00 20 */ blr
+lbl_8031A1F0:
+/* 8031A1F0 00315E50 2C 03 FF FF */ cmpwi r3, -1
+/* 8031A1F4 00315E54 40 82 00 0C */ bne lbl_8031A200
+/* 8031A1F8 00315E58 38 60 FF FF */ li r3, -1
+/* 8031A1FC 00315E5C 4E 80 00 20 */ blr
+lbl_8031A200:
+/* 8031A200 00315E60 40 85 00 20 */ ble cr1, lbl_8031A220
+/* 8031A204 00315E64 2C 03 00 A0 */ cmpwi r3, 0xa0
+/* 8031A208 00315E68 40 80 00 18 */ bge lbl_8031A220
+/* 8031A20C 00315E6C 3C 80 80 44 */ lis r4, lbl_804465E8@ha
+/* 8031A210 00315E70 54 60 10 3A */ slwi r0, r3, 2
+/* 8031A214 00315E74 38 84 65 E8 */ addi r4, r4, lbl_804465E8@l
+/* 8031A218 00315E78 7C 64 00 2E */ lwzx r3, r4, r0
+/* 8031A21C 00315E7C 4E 80 00 20 */ blr
+lbl_8031A220:
+/* 8031A220 00315E80 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 8031A224 00315E84 4C 82 00 20 */ bnelr
+/* 8031A228 00315E88 38 60 00 05 */ li r3, 5
+/* 8031A22C 00315E8C 4E 80 00 20 */ blr
+
+.global VFiPFAPI_convertReturnValue
+VFiPFAPI_convertReturnValue:
+/* 8031A230 00315E90 7C 03 00 D0 */ neg r0, r3
+/* 8031A234 00315E94 7C 00 1B 78 */ or r0, r0, r3
+/* 8031A238 00315E98 7C 03 FE 70 */ srawi r3, r0, 0x1f
+/* 8031A23C 00315E9C 4E 80 00 20 */ blr
+
+.global VFiPFAPI_convertReturnValue2NULL
+VFiPFAPI_convertReturnValue2NULL:
+/* 8031A240 00315EA0 2C 03 00 00 */ cmpwi r3, 0
+/* 8031A244 00315EA4 41 82 00 0C */ beq lbl_8031A250
+/* 8031A248 00315EA8 38 60 00 00 */ li r3, 0
+/* 8031A24C 00315EAC 4E 80 00 20 */ blr
+lbl_8031A250:
+/* 8031A250 00315EB0 7C 83 23 78 */ mr r3, r4
+/* 8031A254 00315EB4 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_cache.s b/asm/SDK/VF/pf_cache.s new file mode 100644 index 0000000..e50fec0 --- /dev/null +++ b/asm/SDK/VF/pf_cache.s @@ -0,0 +1,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 func_8031BDA0
+/* 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 func_8031BDA0
+/* 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 func_8031BDA0
+/* 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 func_8031BDA0
+/* 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 func_8031BDA0
+/* 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 func_8031BDA0
+/* 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 func_8031BDA0
+/* 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 func_8031BDA0
+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 func_8031BDA0
+/* 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
diff --git a/asm/SDK/VF/pf_clib.s b/asm/SDK/VF/pf_clib.s new file mode 100644 index 0000000..91f5f74 --- /dev/null +++ b/asm/SDK/VF/pf_clib.s @@ -0,0 +1,246 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFipf_toupper
+VFipf_toupper:
+/* 80304E94 00300AF4 2C 03 00 61 */ cmpwi r3, 0x61
+/* 80304E98 00300AF8 4D 80 00 20 */ bltlr
+/* 80304E9C 00300AFC 2C 03 00 7A */ cmpwi r3, 0x7a
+/* 80304EA0 00300B00 4D 81 00 20 */ bgtlr
+/* 80304EA4 00300B04 38 63 FF E0 */ addi r3, r3, -32
+/* 80304EA8 00300B08 4E 80 00 20 */ blr
+
+.global VFipf_memcpy
+VFipf_memcpy:
+/* 80304EAC 00300B0C 54 60 07 BF */ clrlwi. r0, r3, 0x1e
+/* 80304EB0 00300B10 7C 68 1B 78 */ mr r8, r3
+/* 80304EB4 00300B14 40 82 00 9C */ bne lbl_80304F50
+/* 80304EB8 00300B18 54 80 07 BF */ clrlwi. r0, r4, 0x1e
+/* 80304EBC 00300B1C 40 82 00 94 */ bne lbl_80304F50
+/* 80304EC0 00300B20 28 05 00 03 */ cmplwi r5, 3
+/* 80304EC4 00300B24 54 A7 F0 BE */ srwi r7, r5, 2
+/* 80304EC8 00300B28 40 81 00 88 */ ble lbl_80304F50
+/* 80304ECC 00300B2C 54 E6 E8 FF */ rlwinm. r6, r7, 0x1d, 3, 0x1f
+/* 80304ED0 00300B30 54 E0 10 3A */ slwi r0, r7, 2
+/* 80304ED4 00300B34 7C 00 00 D0 */ neg r0, r0
+/* 80304ED8 00300B38 7C C9 03 A6 */ mtctr r6
+/* 80304EDC 00300B3C 41 82 00 58 */ beq lbl_80304F34
+lbl_80304EE0:
+/* 80304EE0 00300B40 80 C4 00 00 */ lwz r6, 0(r4)
+/* 80304EE4 00300B44 90 C8 00 00 */ stw r6, 0(r8)
+/* 80304EE8 00300B48 80 C4 00 04 */ lwz r6, 4(r4)
+/* 80304EEC 00300B4C 90 C8 00 04 */ stw r6, 4(r8)
+/* 80304EF0 00300B50 80 C4 00 08 */ lwz r6, 8(r4)
+/* 80304EF4 00300B54 90 C8 00 08 */ stw r6, 8(r8)
+/* 80304EF8 00300B58 80 C4 00 0C */ lwz r6, 0xc(r4)
+/* 80304EFC 00300B5C 90 C8 00 0C */ stw r6, 0xc(r8)
+/* 80304F00 00300B60 80 C4 00 10 */ lwz r6, 0x10(r4)
+/* 80304F04 00300B64 90 C8 00 10 */ stw r6, 0x10(r8)
+/* 80304F08 00300B68 80 C4 00 14 */ lwz r6, 0x14(r4)
+/* 80304F0C 00300B6C 90 C8 00 14 */ stw r6, 0x14(r8)
+/* 80304F10 00300B70 80 C4 00 18 */ lwz r6, 0x18(r4)
+/* 80304F14 00300B74 90 C8 00 18 */ stw r6, 0x18(r8)
+/* 80304F18 00300B78 80 C4 00 1C */ lwz r6, 0x1c(r4)
+/* 80304F1C 00300B7C 38 84 00 20 */ addi r4, r4, 0x20
+/* 80304F20 00300B80 90 C8 00 1C */ stw r6, 0x1c(r8)
+/* 80304F24 00300B84 39 08 00 20 */ addi r8, r8, 0x20
+/* 80304F28 00300B88 42 00 FF B8 */ bdnz lbl_80304EE0
+/* 80304F2C 00300B8C 70 E7 00 07 */ andi. r7, r7, 7
+/* 80304F30 00300B90 41 82 00 1C */ beq lbl_80304F4C
+lbl_80304F34:
+/* 80304F34 00300B94 7C E9 03 A6 */ mtctr r7
+lbl_80304F38:
+/* 80304F38 00300B98 80 C4 00 00 */ lwz r6, 0(r4)
+/* 80304F3C 00300B9C 38 84 00 04 */ addi r4, r4, 4
+/* 80304F40 00300BA0 90 C8 00 00 */ stw r6, 0(r8)
+/* 80304F44 00300BA4 39 08 00 04 */ addi r8, r8, 4
+/* 80304F48 00300BA8 42 00 FF F0 */ bdnz lbl_80304F38
+lbl_80304F4C:
+/* 80304F4C 00300BAC 7C A5 02 14 */ add r5, r5, r0
+lbl_80304F50:
+/* 80304F50 00300BB0 2C 05 00 00 */ cmpwi r5, 0
+/* 80304F54 00300BB4 4D 82 00 20 */ beqlr
+/* 80304F58 00300BB8 54 A0 E8 FF */ rlwinm. r0, r5, 0x1d, 3, 0x1f
+/* 80304F5C 00300BBC 7C 09 03 A6 */ mtctr r0
+/* 80304F60 00300BC0 41 82 00 58 */ beq lbl_80304FB8
+lbl_80304F64:
+/* 80304F64 00300BC4 88 04 00 00 */ lbz r0, 0(r4)
+/* 80304F68 00300BC8 98 08 00 00 */ stb r0, 0(r8)
+/* 80304F6C 00300BCC 88 04 00 01 */ lbz r0, 1(r4)
+/* 80304F70 00300BD0 98 08 00 01 */ stb r0, 1(r8)
+/* 80304F74 00300BD4 88 04 00 02 */ lbz r0, 2(r4)
+/* 80304F78 00300BD8 98 08 00 02 */ stb r0, 2(r8)
+/* 80304F7C 00300BDC 88 04 00 03 */ lbz r0, 3(r4)
+/* 80304F80 00300BE0 98 08 00 03 */ stb r0, 3(r8)
+/* 80304F84 00300BE4 88 04 00 04 */ lbz r0, 4(r4)
+/* 80304F88 00300BE8 98 08 00 04 */ stb r0, 4(r8)
+/* 80304F8C 00300BEC 88 04 00 05 */ lbz r0, 5(r4)
+/* 80304F90 00300BF0 98 08 00 05 */ stb r0, 5(r8)
+/* 80304F94 00300BF4 88 04 00 06 */ lbz r0, 6(r4)
+/* 80304F98 00300BF8 98 08 00 06 */ stb r0, 6(r8)
+/* 80304F9C 00300BFC 88 04 00 07 */ lbz r0, 7(r4)
+/* 80304FA0 00300C00 38 84 00 08 */ addi r4, r4, 8
+/* 80304FA4 00300C04 98 08 00 07 */ stb r0, 7(r8)
+/* 80304FA8 00300C08 39 08 00 08 */ addi r8, r8, 8
+/* 80304FAC 00300C0C 42 00 FF B8 */ bdnz lbl_80304F64
+/* 80304FB0 00300C10 70 A5 00 07 */ andi. r5, r5, 7
+/* 80304FB4 00300C14 4D 82 00 20 */ beqlr
+lbl_80304FB8:
+/* 80304FB8 00300C18 7C A9 03 A6 */ mtctr r5
+lbl_80304FBC:
+/* 80304FBC 00300C1C 88 04 00 00 */ lbz r0, 0(r4)
+/* 80304FC0 00300C20 38 84 00 01 */ addi r4, r4, 1
+/* 80304FC4 00300C24 98 08 00 00 */ stb r0, 0(r8)
+/* 80304FC8 00300C28 39 08 00 01 */ addi r8, r8, 1
+/* 80304FCC 00300C2C 42 00 FF F0 */ bdnz lbl_80304FBC
+/* 80304FD0 00300C30 4E 80 00 20 */ blr
+
+.global VFipf_memset
+VFipf_memset:
+/* 80304FD4 00300C34 7C 69 1B 78 */ mr r9, r3
+/* 80304FD8 00300C38 48 00 00 10 */ b lbl_80304FE8
+lbl_80304FDC:
+/* 80304FDC 00300C3C 98 89 00 00 */ stb r4, 0(r9)
+/* 80304FE0 00300C40 39 29 00 01 */ addi r9, r9, 1
+/* 80304FE4 00300C44 38 A5 FF FF */ addi r5, r5, -1
+lbl_80304FE8:
+/* 80304FE8 00300C48 55 20 07 BF */ clrlwi. r0, r9, 0x1e
+/* 80304FEC 00300C4C 41 82 00 0C */ beq lbl_80304FF8
+/* 80304FF0 00300C50 2C 05 00 00 */ cmpwi r5, 0
+/* 80304FF4 00300C54 40 82 FF E8 */ bne lbl_80304FDC
+lbl_80304FF8:
+/* 80304FF8 00300C58 54 87 40 2E */ slwi r7, r4, 8
+/* 80304FFC 00300C5C 28 05 00 03 */ cmplwi r5, 3
+/* 80305000 00300C60 7C 88 3B 78 */ or r8, r4, r7
+/* 80305004 00300C64 54 86 C0 0E */ slwi r6, r4, 0x18
+/* 80305008 00300C68 54 80 80 1E */ slwi r0, r4, 0x10
+/* 8030500C 00300C6C 54 A7 F0 BE */ srwi r7, r5, 2
+/* 80305010 00300C70 7C C0 03 78 */ or r0, r6, r0
+/* 80305014 00300C74 7D 08 03 78 */ or r8, r8, r0
+/* 80305018 00300C78 40 81 00 5C */ ble lbl_80305074
+/* 8030501C 00300C7C 54 E6 E8 FF */ rlwinm. r6, r7, 0x1d, 3, 0x1f
+/* 80305020 00300C80 54 E0 10 3A */ slwi r0, r7, 2
+/* 80305024 00300C84 7C 00 00 D0 */ neg r0, r0
+/* 80305028 00300C88 7C C9 03 A6 */ mtctr r6
+/* 8030502C 00300C8C 41 82 00 34 */ beq lbl_80305060
+lbl_80305030:
+/* 80305030 00300C90 91 09 00 00 */ stw r8, 0(r9)
+/* 80305034 00300C94 91 09 00 04 */ stw r8, 4(r9)
+/* 80305038 00300C98 91 09 00 08 */ stw r8, 8(r9)
+/* 8030503C 00300C9C 91 09 00 0C */ stw r8, 0xc(r9)
+/* 80305040 00300CA0 91 09 00 10 */ stw r8, 0x10(r9)
+/* 80305044 00300CA4 91 09 00 14 */ stw r8, 0x14(r9)
+/* 80305048 00300CA8 91 09 00 18 */ stw r8, 0x18(r9)
+/* 8030504C 00300CAC 91 09 00 1C */ stw r8, 0x1c(r9)
+/* 80305050 00300CB0 39 29 00 20 */ addi r9, r9, 0x20
+/* 80305054 00300CB4 42 00 FF DC */ bdnz lbl_80305030
+/* 80305058 00300CB8 70 E7 00 07 */ andi. r7, r7, 7
+/* 8030505C 00300CBC 41 82 00 14 */ beq lbl_80305070
+lbl_80305060:
+/* 80305060 00300CC0 7C E9 03 A6 */ mtctr r7
+lbl_80305064:
+/* 80305064 00300CC4 91 09 00 00 */ stw r8, 0(r9)
+/* 80305068 00300CC8 39 29 00 04 */ addi r9, r9, 4
+/* 8030506C 00300CCC 42 00 FF F8 */ bdnz lbl_80305064
+lbl_80305070:
+/* 80305070 00300CD0 7C A5 02 14 */ add r5, r5, r0
+lbl_80305074:
+/* 80305074 00300CD4 2C 05 00 00 */ cmpwi r5, 0
+/* 80305078 00300CD8 4D 82 00 20 */ beqlr
+/* 8030507C 00300CDC 54 A0 E8 FF */ rlwinm. r0, r5, 0x1d, 3, 0x1f
+/* 80305080 00300CE0 7C 09 03 A6 */ mtctr r0
+/* 80305084 00300CE4 41 82 00 34 */ beq lbl_803050B8
+lbl_80305088:
+/* 80305088 00300CE8 98 89 00 00 */ stb r4, 0(r9)
+/* 8030508C 00300CEC 98 89 00 01 */ stb r4, 1(r9)
+/* 80305090 00300CF0 98 89 00 02 */ stb r4, 2(r9)
+/* 80305094 00300CF4 98 89 00 03 */ stb r4, 3(r9)
+/* 80305098 00300CF8 98 89 00 04 */ stb r4, 4(r9)
+/* 8030509C 00300CFC 98 89 00 05 */ stb r4, 5(r9)
+/* 803050A0 00300D00 98 89 00 06 */ stb r4, 6(r9)
+/* 803050A4 00300D04 98 89 00 07 */ stb r4, 7(r9)
+/* 803050A8 00300D08 39 29 00 08 */ addi r9, r9, 8
+/* 803050AC 00300D0C 42 00 FF DC */ bdnz lbl_80305088
+/* 803050B0 00300D10 70 A5 00 07 */ andi. r5, r5, 7
+/* 803050B4 00300D14 4D 82 00 20 */ beqlr
+lbl_803050B8:
+/* 803050B8 00300D18 7C A9 03 A6 */ mtctr r5
+lbl_803050BC:
+/* 803050BC 00300D1C 98 89 00 00 */ stb r4, 0(r9)
+/* 803050C0 00300D20 39 29 00 01 */ addi r9, r9, 1
+/* 803050C4 00300D24 42 00 FF F8 */ bdnz lbl_803050BC
+/* 803050C8 00300D28 4E 80 00 20 */ blr
+
+.global VFipf_strlen
+VFipf_strlen:
+/* 803050CC 00300D2C 7C 64 1B 78 */ mr r4, r3
+/* 803050D0 00300D30 48 00 00 08 */ b lbl_803050D8
+lbl_803050D4:
+/* 803050D4 00300D34 38 84 00 01 */ addi r4, r4, 1
+lbl_803050D8:
+/* 803050D8 00300D38 88 04 00 00 */ lbz r0, 0(r4)
+/* 803050DC 00300D3C 7C 00 07 75 */ extsb. r0, r0
+/* 803050E0 00300D40 40 82 FF F4 */ bne lbl_803050D4
+/* 803050E4 00300D44 7C 63 20 50 */ subf r3, r3, r4
+/* 803050E8 00300D48 4E 80 00 20 */ blr
+
+.global VFipf_strcpy
+VFipf_strcpy:
+/* 803050EC 00300D4C 7C 66 1B 78 */ mr r6, r3
+/* 803050F0 00300D50 48 00 00 0C */ b lbl_803050FC
+lbl_803050F4:
+/* 803050F4 00300D54 38 84 00 01 */ addi r4, r4, 1
+/* 803050F8 00300D58 38 C6 00 01 */ addi r6, r6, 1
+lbl_803050FC:
+/* 803050FC 00300D5C 88 A4 00 00 */ lbz r5, 0(r4)
+/* 80305100 00300D60 7C A0 07 75 */ extsb. r0, r5
+/* 80305104 00300D64 98 A6 00 00 */ stb r5, 0(r6)
+/* 80305108 00300D68 40 82 FF EC */ bne lbl_803050F4
+/* 8030510C 00300D6C 4E 80 00 20 */ blr
+
+.global VFipf_strcmp
+VFipf_strcmp:
+/* 80305110 00300D70 48 00 00 0C */ b lbl_8030511C
+lbl_80305114:
+/* 80305114 00300D74 38 63 00 01 */ addi r3, r3, 1
+/* 80305118 00300D78 38 84 00 01 */ addi r4, r4, 1
+lbl_8030511C:
+/* 8030511C 00300D7C 88 A3 00 00 */ lbz r5, 0(r3)
+/* 80305120 00300D80 2C 05 00 00 */ cmpwi r5, 0
+/* 80305124 00300D84 41 82 00 18 */ beq lbl_8030513C
+/* 80305128 00300D88 88 04 00 00 */ lbz r0, 0(r4)
+/* 8030512C 00300D8C 2C 00 00 00 */ cmpwi r0, 0
+/* 80305130 00300D90 41 82 00 0C */ beq lbl_8030513C
+/* 80305134 00300D94 7C 05 00 40 */ cmplw r5, r0
+/* 80305138 00300D98 41 82 FF DC */ beq lbl_80305114
+lbl_8030513C:
+/* 8030513C 00300D9C 88 04 00 00 */ lbz r0, 0(r4)
+/* 80305140 00300DA0 7C 60 28 50 */ subf r3, r0, r5
+/* 80305144 00300DA4 4E 80 00 20 */ blr
+
+.global VFipf_strncmp
+VFipf_strncmp:
+/* 80305148 00300DA8 7C A9 03 A6 */ mtctr r5
+/* 8030514C 00300DAC 2C 05 00 00 */ cmpwi r5, 0
+/* 80305150 00300DB0 41 82 00 3C */ beq lbl_8030518C
+lbl_80305154:
+/* 80305154 00300DB4 88 A3 00 00 */ lbz r5, 0(r3)
+/* 80305158 00300DB8 2C 05 00 00 */ cmpwi r5, 0
+/* 8030515C 00300DBC 41 82 00 18 */ beq lbl_80305174
+/* 80305160 00300DC0 88 04 00 00 */ lbz r0, 0(r4)
+/* 80305164 00300DC4 2C 00 00 00 */ cmpwi r0, 0
+/* 80305168 00300DC8 41 82 00 0C */ beq lbl_80305174
+/* 8030516C 00300DCC 7C 05 00 40 */ cmplw r5, r0
+/* 80305170 00300DD0 41 82 00 10 */ beq lbl_80305180
+lbl_80305174:
+/* 80305174 00300DD4 88 04 00 00 */ lbz r0, 0(r4)
+/* 80305178 00300DD8 7C 60 28 50 */ subf r3, r0, r5
+/* 8030517C 00300DDC 4E 80 00 20 */ blr
+lbl_80305180:
+/* 80305180 00300DE0 38 63 00 01 */ addi r3, r3, 1
+/* 80305184 00300DE4 38 84 00 01 */ addi r4, r4, 1
+/* 80305188 00300DE8 42 00 FF CC */ bdnz lbl_80305154
+lbl_8030518C:
+/* 8030518C 00300DEC 38 60 00 00 */ li r3, 0
+/* 80305190 00300DF0 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_cluster.s b/asm/SDK/VF/pf_cluster.s new file mode 100644 index 0000000..8719855 --- /dev/null +++ b/asm/SDK/VF/pf_cluster.s @@ -0,0 +1,350 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFCLUSTER_UpdateLastAccessCluster
+VFiPFCLUSTER_UpdateLastAccessCluster:
+/* 8030AD80 003069E0 80 C3 00 1C */ lwz r6, 0x1c(r3)
+/* 8030AD84 003069E4 2C 06 00 00 */ cmpwi r6, 0
+/* 8030AD88 003069E8 40 82 00 1C */ bne lbl_8030ADA4
+/* 8030AD8C 003069EC 80 83 00 08 */ lwz r4, 8(r3)
+/* 8030AD90 003069F0 38 00 00 00 */ li r0, 0
+/* 8030AD94 003069F4 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 8030AD98 003069F8 80 63 00 08 */ lwz r3, 8(r3)
+/* 8030AD9C 003069FC 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8030ADA0 00306A00 4E 80 00 20 */ blr
+lbl_8030ADA4:
+/* 8030ADA4 00306A04 2C 03 00 00 */ cmpwi r3, 0
+/* 8030ADA8 00306A08 40 82 00 0C */ bne lbl_8030ADB4
+/* 8030ADAC 00306A0C 38 E0 00 00 */ li r7, 0
+/* 8030ADB0 00306A10 48 00 00 0C */ b lbl_8030ADBC
+lbl_8030ADB4:
+/* 8030ADB4 00306A14 80 A3 00 08 */ lwz r5, 8(r3)
+/* 8030ADB8 00306A18 80 E5 02 68 */ lwz r7, 0x268(r5)
+lbl_8030ADBC:
+/* 8030ADBC 00306A1C A0 A7 00 00 */ lhz r5, 0(r7)
+/* 8030ADC0 00306A20 38 05 FF FF */ addi r0, r5, -1
+/* 8030ADC4 00306A24 7C C0 00 39 */ and. r0, r6, r0
+/* 8030ADC8 00306A28 40 82 00 58 */ bne lbl_8030AE20
+/* 8030ADCC 00306A2C 88 A7 00 06 */ lbz r5, 6(r7)
+/* 8030ADD0 00306A30 80 C3 00 24 */ lwz r6, 0x24(r3)
+/* 8030ADD4 00306A34 38 05 FF FF */ addi r0, r5, -1
+/* 8030ADD8 00306A38 7C C0 00 39 */ and. r0, r6, r0
+/* 8030ADDC 00306A3C 40 82 00 44 */ bne lbl_8030AE20
+/* 8030ADE0 00306A40 2C 06 00 00 */ cmpwi r6, 0
+/* 8030ADE4 00306A44 4D 82 00 20 */ beqlr
+/* 8030ADE8 00306A48 88 07 00 21 */ lbz r0, 0x21(r7)
+/* 8030ADEC 00306A4C 38 C6 FF FF */ addi r6, r6, -1
+/* 8030ADF0 00306A50 80 A3 00 08 */ lwz r5, 8(r3)
+/* 8030ADF4 00306A54 38 84 FF FF */ addi r4, r4, -1
+/* 8030ADF8 00306A58 7C C0 04 30 */ srw r0, r6, r0
+/* 8030ADFC 00306A5C 90 05 00 18 */ stw r0, 0x18(r5)
+/* 8030AE00 00306A60 80 A7 00 30 */ lwz r5, 0x30(r7)
+/* 8030AE04 00306A64 88 07 00 21 */ lbz r0, 0x21(r7)
+/* 8030AE08 00306A68 7C 85 20 50 */ subf r4, r5, r4
+/* 8030AE0C 00306A6C 80 63 00 08 */ lwz r3, 8(r3)
+/* 8030AE10 00306A70 7C 84 04 30 */ srw r4, r4, r0
+/* 8030AE14 00306A74 38 04 00 02 */ addi r0, r4, 2
+/* 8030AE18 00306A78 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 8030AE1C 00306A7C 4E 80 00 20 */ blr
+lbl_8030AE20:
+/* 8030AE20 00306A80 80 C3 00 24 */ lwz r6, 0x24(r3)
+/* 8030AE24 00306A84 88 07 00 21 */ lbz r0, 0x21(r7)
+/* 8030AE28 00306A88 80 A3 00 08 */ lwz r5, 8(r3)
+/* 8030AE2C 00306A8C 7C C0 04 30 */ srw r0, r6, r0
+/* 8030AE30 00306A90 90 05 00 18 */ stw r0, 0x18(r5)
+/* 8030AE34 00306A94 80 A7 00 30 */ lwz r5, 0x30(r7)
+/* 8030AE38 00306A98 88 07 00 21 */ lbz r0, 0x21(r7)
+/* 8030AE3C 00306A9C 7C 85 20 50 */ subf r4, r5, r4
+/* 8030AE40 00306AA0 80 63 00 08 */ lwz r3, 8(r3)
+/* 8030AE44 00306AA4 7C 84 04 30 */ srw r4, r4, r0
+/* 8030AE48 00306AA8 38 04 00 02 */ addi r0, r4, 2
+/* 8030AE4C 00306AAC 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 8030AE50 00306AB0 4E 80 00 20 */ blr
+
+.global VFiPFCLUSTER_AppendCluster
+VFiPFCLUSTER_AppendCluster:
+/* 8030AE54 00306AB4 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030AE58 00306AB8 7C 08 02 A6 */ mflr r0
+/* 8030AE5C 00306ABC 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030AE60 00306AC0 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030AE64 00306AC4 4B EB C2 C1 */ bl _savegpr_26
+/* 8030AE68 00306AC8 3C E0 80 58 */ lis r7, lbl_8057F5C8@ha
+/* 8030AE6C 00306ACC 38 00 00 00 */ li r0, 0
+/* 8030AE70 00306AD0 38 E7 F5 C8 */ addi r7, r7, lbl_8057F5C8@l
+/* 8030AE74 00306AD4 90 05 00 00 */ stw r0, 0(r5)
+/* 8030AE78 00306AD8 7C 07 18 40 */ cmplw r7, r3
+/* 8030AE7C 00306ADC 7C 7B 1B 78 */ mr r27, r3
+/* 8030AE80 00306AE0 7C 9C 23 78 */ mr r28, r4
+/* 8030AE84 00306AE4 7C BD 2B 78 */ mr r29, r5
+/* 8030AE88 00306AE8 7C DE 33 78 */ mr r30, r6
+/* 8030AE8C 00306AEC 41 81 00 14 */ bgt lbl_8030AEA0
+/* 8030AE90 00306AF0 3C A7 00 02 */ addis r5, r7, 2
+/* 8030AE94 00306AF4 38 05 7F B8 */ addi r0, r5, 0x7fb8
+/* 8030AE98 00306AF8 7C 00 18 40 */ cmplw r0, r3
+/* 8030AE9C 00306AFC 40 80 00 0C */ bge lbl_8030AEA8
+lbl_8030AEA0:
+/* 8030AEA0 00306B00 38 60 00 0A */ li r3, 0xa
+/* 8030AEA4 00306B04 48 00 01 D4 */ b lbl_8030B078
+lbl_8030AEA8:
+/* 8030AEA8 00306B08 2F 03 00 00 */ cmpwi cr6, r3, 0
+/* 8030AEAC 00306B0C 41 9A 00 34 */ beq cr6, lbl_8030AEE0
+/* 8030AEB0 00306B10 83 43 00 08 */ lwz r26, 8(r3)
+/* 8030AEB4 00306B14 2C 1A 00 00 */ cmpwi r26, 0
+/* 8030AEB8 00306B18 41 82 00 28 */ beq lbl_8030AEE0
+/* 8030AEBC 00306B1C 80 03 00 00 */ lwz r0, 0(r3)
+/* 8030AEC0 00306B20 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8030AEC4 00306B24 41 82 00 1C */ beq lbl_8030AEE0
+/* 8030AEC8 00306B28 80 1A 00 00 */ lwz r0, 0(r26)
+/* 8030AECC 00306B2C 54 05 07 FE */ clrlwi r5, r0, 0x1f
+/* 8030AED0 00306B30 2C 85 00 00 */ cmpwi cr1, r5, 0
+/* 8030AED4 00306B34 41 86 00 0C */ beq cr1, lbl_8030AEE0
+/* 8030AED8 00306B38 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 8030AEDC 00306B3C 40 82 00 0C */ bne lbl_8030AEE8
+lbl_8030AEE0:
+/* 8030AEE0 00306B40 38 60 00 26 */ li r3, 0x26
+/* 8030AEE4 00306B44 48 00 01 94 */ b lbl_8030B078
+lbl_8030AEE8:
+/* 8030AEE8 00306B48 41 86 00 08 */ beq cr1, lbl_8030AEF0
+/* 8030AEEC 00306B4C 40 82 00 0C */ bne lbl_8030AEF8
+lbl_8030AEF0:
+/* 8030AEF0 00306B50 38 60 00 26 */ li r3, 0x26
+/* 8030AEF4 00306B54 48 00 01 84 */ b lbl_8030B078
+lbl_8030AEF8:
+/* 8030AEF8 00306B58 40 9A 00 0C */ bne cr6, lbl_8030AF04
+/* 8030AEFC 00306B5C 3B E0 00 00 */ li r31, 0
+/* 8030AF00 00306B60 48 00 00 08 */ b lbl_8030AF08
+lbl_8030AF04:
+/* 8030AF04 00306B64 83 FA 02 68 */ lwz r31, 0x268(r26)
+lbl_8030AF08:
+/* 8030AF08 00306B68 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030AF0C 00306B6C 40 82 00 0C */ bne lbl_8030AF18
+/* 8030AF10 00306B70 38 60 00 26 */ li r3, 0x26
+/* 8030AF14 00306B74 48 00 01 64 */ b lbl_8030B078
+lbl_8030AF18:
+/* 8030AF18 00306B78 81 83 00 1C */ lwz r12, 0x1c(r3)
+/* 8030AF1C 00306B7C 38 A3 00 0C */ addi r5, r3, 0xc
+/* 8030AF20 00306B80 81 63 00 20 */ lwz r11, 0x20(r3)
+/* 8030AF24 00306B84 38 00 FF FF */ li r0, -1
+/* 8030AF28 00306B88 81 43 00 24 */ lwz r10, 0x24(r3)
+/* 8030AF2C 00306B8C 81 23 00 28 */ lwz r9, 0x28(r3)
+/* 8030AF30 00306B90 81 03 00 0C */ lwz r8, 0xc(r3)
+/* 8030AF34 00306B94 80 E3 00 10 */ lwz r7, 0x10(r3)
+/* 8030AF38 00306B98 80 63 00 14 */ lwz r3, 0x14(r3)
+/* 8030AF3C 00306B9C 91 81 00 18 */ stw r12, 0x18(r1)
+/* 8030AF40 00306BA0 90 BA 00 34 */ stw r5, 0x34(r26)
+/* 8030AF44 00306BA4 90 06 00 00 */ stw r0, 0(r6)
+/* 8030AF48 00306BA8 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8030AF4C 00306BAC 91 61 00 1C */ stw r11, 0x1c(r1)
+/* 8030AF50 00306BB0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 8030AF54 00306BB4 91 41 00 20 */ stw r10, 0x20(r1)
+/* 8030AF58 00306BB8 91 21 00 24 */ stw r9, 0x24(r1)
+/* 8030AF5C 00306BBC 91 01 00 0C */ stw r8, 0xc(r1)
+/* 8030AF60 00306BC0 90 E1 00 10 */ stw r7, 0x10(r1)
+/* 8030AF64 00306BC4 90 61 00 14 */ stw r3, 0x14(r1)
+/* 8030AF68 00306BC8 41 82 00 24 */ beq lbl_8030AF8C
+/* 8030AF6C 00306BCC 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 8030AF70 00306BD0 3C 03 00 01 */ addis r0, r3, 1
+/* 8030AF74 00306BD4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030AF78 00306BD8 41 82 00 14 */ beq lbl_8030AF8C
+/* 8030AF7C 00306BDC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030AF80 00306BE0 40 82 00 0C */ bne lbl_8030AF8C
+/* 8030AF84 00306BE4 38 60 00 06 */ li r3, 6
+/* 8030AF88 00306BE8 48 00 00 F0 */ b lbl_8030B078
+lbl_8030AF8C:
+/* 8030AF8C 00306BEC 80 BB 00 08 */ lwz r5, 8(r27)
+/* 8030AF90 00306BF0 7F 63 DB 78 */ mr r3, r27
+/* 8030AF94 00306BF4 80 05 02 64 */ lwz r0, 0x264(r5)
+/* 8030AF98 00306BF8 7C 80 22 14 */ add r4, r0, r4
+/* 8030AF9C 00306BFC 48 00 8C CD */ bl VFiPFFILE_Cursor_MoveToClusterEnd
+/* 8030AFA0 00306C00 80 7B 00 1C */ lwz r3, 0x1c(r27)
+/* 8030AFA4 00306C04 3C 03 00 01 */ addis r0, r3, 1
+/* 8030AFA8 00306C08 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030AFAC 00306C0C 40 82 00 14 */ bne lbl_8030AFC0
+/* 8030AFB0 00306C10 38 00 00 00 */ li r0, 0
+/* 8030AFB4 00306C14 38 60 00 25 */ li r3, 0x25
+/* 8030AFB8 00306C18 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030AFBC 00306C1C 48 00 00 BC */ b lbl_8030B078
+lbl_8030AFC0:
+/* 8030AFC0 00306C20 80 7B 00 08 */ lwz r3, 8(r27)
+/* 8030AFC4 00306C24 7F 85 E3 78 */ mr r5, r28
+/* 8030AFC8 00306C28 80 9B 00 24 */ lwz r4, 0x24(r27)
+/* 8030AFCC 00306C2C 7F C6 F3 78 */ mr r6, r30
+/* 8030AFD0 00306C30 38 63 00 04 */ addi r3, r3, 4
+/* 8030AFD4 00306C34 38 E1 00 08 */ addi r7, r1, 8
+/* 8030AFD8 00306C38 48 00 50 69 */ bl VFiPFFAT_GetSectorAllocated
+/* 8030AFDC 00306C3C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030AFE0 00306C40 41 82 00 40 */ beq lbl_8030B020
+/* 8030AFE4 00306C44 81 21 00 18 */ lwz r9, 0x18(r1)
+/* 8030AFE8 00306C48 81 01 00 1C */ lwz r8, 0x1c(r1)
+/* 8030AFEC 00306C4C 80 E1 00 20 */ lwz r7, 0x20(r1)
+/* 8030AFF0 00306C50 80 C1 00 24 */ lwz r6, 0x24(r1)
+/* 8030AFF4 00306C54 80 A1 00 0C */ lwz r5, 0xc(r1)
+/* 8030AFF8 00306C58 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 8030AFFC 00306C5C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030B000 00306C60 91 3B 00 1C */ stw r9, 0x1c(r27)
+/* 8030B004 00306C64 91 1B 00 20 */ stw r8, 0x20(r27)
+/* 8030B008 00306C68 90 FB 00 24 */ stw r7, 0x24(r27)
+/* 8030B00C 00306C6C 90 DB 00 28 */ stw r6, 0x28(r27)
+/* 8030B010 00306C70 90 BB 00 0C */ stw r5, 0xc(r27)
+/* 8030B014 00306C74 90 9B 00 10 */ stw r4, 0x10(r27)
+/* 8030B018 00306C78 90 1B 00 14 */ stw r0, 0x14(r27)
+/* 8030B01C 00306C7C 48 00 00 5C */ b lbl_8030B078
+lbl_8030B020:
+/* 8030B020 00306C80 81 01 00 18 */ lwz r8, 0x18(r1)
+/* 8030B024 00306C84 80 E1 00 1C */ lwz r7, 0x1c(r1)
+/* 8030B028 00306C88 80 C1 00 20 */ lwz r6, 0x20(r1)
+/* 8030B02C 00306C8C 80 A1 00 24 */ lwz r5, 0x24(r1)
+/* 8030B030 00306C90 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030B034 00306C94 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 8030B038 00306C98 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030B03C 00306C9C 91 1B 00 1C */ stw r8, 0x1c(r27)
+/* 8030B040 00306CA0 90 FB 00 20 */ stw r7, 0x20(r27)
+/* 8030B044 00306CA4 90 DB 00 24 */ stw r6, 0x24(r27)
+/* 8030B048 00306CA8 90 BB 00 28 */ stw r5, 0x28(r27)
+/* 8030B04C 00306CAC 90 9B 00 0C */ stw r4, 0xc(r27)
+/* 8030B050 00306CB0 90 7B 00 10 */ stw r3, 0x10(r27)
+/* 8030B054 00306CB4 90 1B 00 14 */ stw r0, 0x14(r27)
+/* 8030B058 00306CB8 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030B05C 00306CBC 88 1F 00 20 */ lbz r0, 0x20(r31)
+/* 8030B060 00306CC0 7C 60 00 30 */ slw r0, r3, r0
+/* 8030B064 00306CC4 7C 1C 00 40 */ cmplw r28, r0
+/* 8030B068 00306CC8 40 80 00 08 */ bge lbl_8030B070
+/* 8030B06C 00306CCC 7F 80 E3 78 */ mr r0, r28
+lbl_8030B070:
+/* 8030B070 00306CD0 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030B074 00306CD4 38 60 00 00 */ li r3, 0
+lbl_8030B078:
+/* 8030B078 00306CD8 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030B07C 00306CDC 4B EB C0 F5 */ bl _restgpr_26
+/* 8030B080 00306CE0 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030B084 00306CE4 7C 08 03 A6 */ mtlr r0
+/* 8030B088 00306CE8 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030B08C 00306CEC 4E 80 00 20 */ blr
+
+.global VFiPFCLUSTER_GetAppendSize
+VFiPFCLUSTER_GetAppendSize:
+/* 8030B090 00306CF0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030B094 00306CF4 7C 08 02 A6 */ mflr r0
+/* 8030B098 00306CF8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030B09C 00306CFC 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030B0A0 00306D00 4B EB C0 85 */ bl _savegpr_26
+/* 8030B0A4 00306D04 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 8030B0A8 00306D08 38 00 00 00 */ li r0, 0
+/* 8030B0AC 00306D0C 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
+/* 8030B0B0 00306D10 90 04 00 00 */ stw r0, 0(r4)
+/* 8030B0B4 00306D14 7C 05 18 40 */ cmplw r5, r3
+/* 8030B0B8 00306D18 7C 9F 23 78 */ mr r31, r4
+/* 8030B0BC 00306D1C 41 81 00 14 */ bgt lbl_8030B0D0
+/* 8030B0C0 00306D20 3C 85 00 02 */ addis r4, r5, 2
+/* 8030B0C4 00306D24 38 04 7F B8 */ addi r0, r4, 0x7fb8
+/* 8030B0C8 00306D28 7C 00 18 40 */ cmplw r0, r3
+/* 8030B0CC 00306D2C 40 80 00 0C */ bge lbl_8030B0D8
+lbl_8030B0D0:
+/* 8030B0D0 00306D30 38 60 00 0A */ li r3, 0xa
+/* 8030B0D4 00306D34 48 00 01 4C */ b lbl_8030B220
+lbl_8030B0D8:
+/* 8030B0D8 00306D38 2F 03 00 00 */ cmpwi cr6, r3, 0
+/* 8030B0DC 00306D3C 41 9A 00 34 */ beq cr6, lbl_8030B110
+/* 8030B0E0 00306D40 81 03 00 08 */ lwz r8, 8(r3)
+/* 8030B0E4 00306D44 2C 08 00 00 */ cmpwi r8, 0
+/* 8030B0E8 00306D48 41 82 00 28 */ beq lbl_8030B110
+/* 8030B0EC 00306D4C 80 03 00 00 */ lwz r0, 0(r3)
+/* 8030B0F0 00306D50 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8030B0F4 00306D54 41 82 00 1C */ beq lbl_8030B110
+/* 8030B0F8 00306D58 80 08 00 00 */ lwz r0, 0(r8)
+/* 8030B0FC 00306D5C 54 03 07 FE */ clrlwi r3, r0, 0x1f
+/* 8030B100 00306D60 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 8030B104 00306D64 41 86 00 0C */ beq cr1, lbl_8030B110
+/* 8030B108 00306D68 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 8030B10C 00306D6C 40 82 00 0C */ bne lbl_8030B118
+lbl_8030B110:
+/* 8030B110 00306D70 38 60 00 26 */ li r3, 0x26
+/* 8030B114 00306D74 48 00 01 0C */ b lbl_8030B220
+lbl_8030B118:
+/* 8030B118 00306D78 41 86 00 08 */ beq cr1, lbl_8030B120
+/* 8030B11C 00306D7C 40 82 00 0C */ bne lbl_8030B128
+lbl_8030B120:
+/* 8030B120 00306D80 38 60 00 26 */ li r3, 0x26
+/* 8030B124 00306D84 48 00 00 FC */ b lbl_8030B220
+lbl_8030B128:
+/* 8030B128 00306D88 40 9A 00 0C */ bne cr6, lbl_8030B134
+/* 8030B12C 00306D8C 3B A0 00 00 */ li r29, 0
+/* 8030B130 00306D90 48 00 00 08 */ b lbl_8030B138
+lbl_8030B134:
+/* 8030B134 00306D94 83 A8 02 68 */ lwz r29, 0x268(r8)
+lbl_8030B138:
+/* 8030B138 00306D98 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030B13C 00306D9C 40 82 00 0C */ bne lbl_8030B148
+/* 8030B140 00306DA0 38 60 00 26 */ li r3, 0x26
+/* 8030B144 00306DA4 48 00 00 DC */ b lbl_8030B220
+lbl_8030B148:
+/* 8030B148 00306DA8 80 88 02 70 */ lwz r4, 0x270(r8)
+/* 8030B14C 00306DAC A0 7D 00 00 */ lhz r3, 0(r29)
+/* 8030B150 00306DB0 88 1D 00 21 */ lbz r0, 0x21(r29)
+/* 8030B154 00306DB4 2C 04 00 00 */ cmpwi r4, 0
+/* 8030B158 00306DB8 7C 7C 00 30 */ slw r28, r3, r0
+/* 8030B15C 00306DBC 41 82 00 C0 */ beq lbl_8030B21C
+/* 8030B160 00306DC0 80 A8 02 64 */ lwz r5, 0x264(r8)
+/* 8030B164 00306DC4 80 E8 00 14 */ lwz r7, 0x14(r8)
+/* 8030B168 00306DC8 7C 05 E3 96 */ divwu r0, r5, r28
+/* 8030B16C 00306DCC 2C 07 00 00 */ cmpwi r7, 0
+/* 8030B170 00306DD0 7C 00 E1 D6 */ mullw r0, r0, r28
+/* 8030B174 00306DD4 7C C0 28 50 */ subf r6, r0, r5
+/* 8030B178 00306DD8 7C 06 00 D0 */ neg r0, r6
+/* 8030B17C 00306DDC 7C 03 33 78 */ or r3, r0, r6
+/* 8030B180 00306DE0 7C 06 E0 50 */ subf r0, r6, r28
+/* 8030B184 00306DE4 7C 63 FE 70 */ srawi r3, r3, 0x1f
+/* 8030B188 00306DE8 7C 00 18 38 */ and r0, r0, r3
+/* 8030B18C 00306DEC 7F 65 02 14 */ add r27, r5, r0
+/* 8030B190 00306DF0 41 82 00 10 */ beq lbl_8030B1A0
+/* 8030B194 00306DF4 38 07 00 01 */ addi r0, r7, 1
+/* 8030B198 00306DF8 7C 00 E1 D6 */ mullw r0, r0, r28
+/* 8030B19C 00306DFC 48 00 00 78 */ b lbl_8030B214
+lbl_8030B1A0:
+/* 8030B1A0 00306E00 2C 05 00 00 */ cmpwi r5, 0
+/* 8030B1A4 00306E04 41 82 00 20 */ beq lbl_8030B1C4
+/* 8030B1A8 00306E08 38 68 00 04 */ addi r3, r8, 4
+/* 8030B1AC 00306E0C 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030B1B0 00306E10 38 E1 00 0C */ addi r7, r1, 0xc
+/* 8030B1B4 00306E14 48 00 5B F9 */ bl VFiPFFAT_TraceClustersChain
+/* 8030B1B8 00306E18 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B1BC 00306E1C 41 82 00 0C */ beq lbl_8030B1C8
+/* 8030B1C0 00306E20 48 00 00 60 */ b lbl_8030B220
+lbl_8030B1C4:
+/* 8030B1C4 00306E24 90 81 00 0C */ stw r4, 0xc(r1)
+lbl_8030B1C8:
+/* 8030B1C8 00306E28 7F A3 EB 78 */ mr r3, r29
+/* 8030B1CC 00306E2C 48 00 5F 89 */ bl VFiPFFAT_GetValueOfEOC2
+/* 8030B1D0 00306E30 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030B1D4 00306E34 7C 7E 1B 78 */ mr r30, r3
+/* 8030B1D8 00306E38 3B 40 00 00 */ li r26, 0
+/* 8030B1DC 00306E3C 48 00 00 28 */ b lbl_8030B204
+lbl_8030B1E0:
+/* 8030B1E0 00306E40 7F A3 EB 78 */ mr r3, r29
+/* 8030B1E4 00306E44 38 A1 00 08 */ addi r5, r1, 8
+/* 8030B1E8 00306E48 3B 5A 00 01 */ addi r26, r26, 1
+/* 8030B1EC 00306E4C 48 00 5E 01 */ bl VFiPFFAT_ReadValueToSpecifiedCluster
+/* 8030B1F0 00306E50 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B1F4 00306E54 41 82 00 08 */ beq lbl_8030B1FC
+/* 8030B1F8 00306E58 48 00 00 28 */ b lbl_8030B220
+lbl_8030B1FC:
+/* 8030B1FC 00306E5C 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030B200 00306E60 90 81 00 0C */ stw r4, 0xc(r1)
+lbl_8030B204:
+/* 8030B204 00306E64 7C 04 F0 40 */ cmplw r4, r30
+/* 8030B208 00306E68 40 82 FF D8 */ bne lbl_8030B1E0
+/* 8030B20C 00306E6C 7C 1A E1 D6 */ mullw r0, r26, r28
+/* 8030B210 00306E70 7C 1B 02 14 */ add r0, r27, r0
+lbl_8030B214:
+/* 8030B214 00306E74 7C 1B 00 50 */ subf r0, r27, r0
+/* 8030B218 00306E78 90 1F 00 00 */ stw r0, 0(r31)
+lbl_8030B21C:
+/* 8030B21C 00306E7C 38 60 00 00 */ li r3, 0
+lbl_8030B220:
+/* 8030B220 00306E80 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030B224 00306E84 4B EB BF 4D */ bl _restgpr_26
+/* 8030B228 00306E88 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030B22C 00306E8C 7C 08 03 A6 */ mtlr r0
+/* 8030B230 00306E90 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030B234 00306E94 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_code.s b/asm/SDK/VF/pf_code.s new file mode 100644 index 0000000..d87822a --- /dev/null +++ b/asm/SDK/VF/pf_code.s @@ -0,0 +1,16 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFCODE_Combine_Width
+VFiPFCODE_Combine_Width:
+/* 80305194 00300DF4 54 60 80 1E */ slwi r0, r3, 0x10
+/* 80305198 00300DF8 7C 60 22 14 */ add r3, r0, r4
+/* 8030519C 00300DFC 4E 80 00 20 */ blr
+
+.global VFiPFCODE_Divide_Width
+VFiPFCODE_Divide_Width:
+/* 803051A0 00300E00 54 60 84 3E */ srwi r0, r3, 0x10
+/* 803051A4 00300E04 B0 04 00 00 */ sth r0, 0(r4)
+/* 803051A8 00300E08 B0 65 00 00 */ sth r3, 0(r5)
+/* 803051AC 00300E0C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_cp932.s b/asm/SDK/VF/pf_cp932.s new file mode 100644 index 0000000..2dcc524 --- /dev/null +++ b/asm/SDK/VF/pf_cp932.s @@ -0,0 +1,381 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFCODE_CP932_OEM2Unicode
+VFiPFCODE_CP932_OEM2Unicode:
+/* 80319C00 00315860 88 A3 00 00 */ lbz r5, 0(r3)
+/* 80319C04 00315864 88 63 00 01 */ lbz r3, 1(r3)
+/* 80319C08 00315868 28 05 00 80 */ cmplwi r5, 0x80
+/* 80319C0C 0031586C 40 80 00 14 */ bge lbl_80319C20
+/* 80319C10 00315870 B0 A4 00 00 */ sth r5, 0(r4)
+/* 80319C14 00315874 38 60 00 01 */ li r3, 1
+/* 80319C18 00315878 38 80 00 02 */ li r4, 2
+/* 80319C1C 0031587C 4B FE B5 78 */ b VFiPFCODE_Combine_Width
+lbl_80319C20:
+/* 80319C20 00315880 28 05 00 A1 */ cmplwi r5, 0xa1
+/* 80319C24 00315884 41 80 00 24 */ blt lbl_80319C48
+/* 80319C28 00315888 28 05 00 DF */ cmplwi r5, 0xdf
+/* 80319C2C 0031588C 41 81 00 1C */ bgt lbl_80319C48
+/* 80319C30 00315890 3C 65 00 01 */ addis r3, r5, 1
+/* 80319C34 00315894 38 03 FE C0 */ addi r0, r3, -320
+/* 80319C38 00315898 B0 04 00 00 */ sth r0, 0(r4)
+/* 80319C3C 0031589C 38 60 00 01 */ li r3, 1
+/* 80319C40 003158A0 38 80 00 02 */ li r4, 2
+/* 80319C44 003158A4 4B FE B5 50 */ b VFiPFCODE_Combine_Width
+lbl_80319C48:
+/* 80319C48 003158A8 28 05 00 80 */ cmplwi r5, 0x80
+/* 80319C4C 003158AC 41 82 00 4C */ beq lbl_80319C98
+/* 80319C50 003158B0 28 05 00 85 */ cmplwi r5, 0x85
+/* 80319C54 003158B4 41 82 00 44 */ beq lbl_80319C98
+/* 80319C58 003158B8 28 05 00 86 */ cmplwi r5, 0x86
+/* 80319C5C 003158BC 41 82 00 3C */ beq lbl_80319C98
+/* 80319C60 003158C0 28 05 00 A0 */ cmplwi r5, 0xa0
+/* 80319C64 003158C4 41 82 00 34 */ beq lbl_80319C98
+/* 80319C68 003158C8 28 05 00 EB */ cmplwi r5, 0xeb
+/* 80319C6C 003158CC 41 82 00 2C */ beq lbl_80319C98
+/* 80319C70 003158D0 28 05 00 EC */ cmplwi r5, 0xec
+/* 80319C74 003158D4 41 82 00 24 */ beq lbl_80319C98
+/* 80319C78 003158D8 28 05 00 EF */ cmplwi r5, 0xef
+/* 80319C7C 003158DC 41 80 00 0C */ blt lbl_80319C88
+/* 80319C80 003158E0 28 05 00 F9 */ cmplwi r5, 0xf9
+/* 80319C84 003158E4 40 81 00 14 */ ble lbl_80319C98
+lbl_80319C88:
+/* 80319C88 003158E8 28 05 00 FD */ cmplwi r5, 0xfd
+/* 80319C8C 003158EC 41 80 00 20 */ blt lbl_80319CAC
+/* 80319C90 003158F0 28 05 00 FF */ cmplwi r5, 0xff
+/* 80319C94 003158F4 40 82 00 18 */ bne lbl_80319CAC
+lbl_80319C98:
+/* 80319C98 003158F8 38 00 00 5F */ li r0, 0x5f
+/* 80319C9C 003158FC 38 60 00 01 */ li r3, 1
+/* 80319CA0 00315900 B0 04 00 00 */ sth r0, 0(r4)
+/* 80319CA4 00315904 38 80 00 02 */ li r4, 2
+/* 80319CA8 00315908 4B FE B4 EC */ b VFiPFCODE_Combine_Width
+lbl_80319CAC:
+/* 80319CAC 0031590C 28 03 00 FD */ cmplwi r3, 0xfd
+/* 80319CB0 00315910 41 80 00 18 */ blt lbl_80319CC8
+/* 80319CB4 00315914 38 00 00 5F */ li r0, 0x5f
+/* 80319CB8 00315918 38 60 00 01 */ li r3, 1
+/* 80319CBC 0031591C B0 04 00 00 */ sth r0, 0(r4)
+/* 80319CC0 00315920 38 80 00 02 */ li r4, 2
+/* 80319CC4 00315924 4B FE B4 D0 */ b VFiPFCODE_Combine_Width
+lbl_80319CC8:
+/* 80319CC8 00315928 28 05 00 81 */ cmplwi r5, 0x81
+/* 80319CCC 0031592C 41 80 00 14 */ blt lbl_80319CE0
+/* 80319CD0 00315930 28 05 00 84 */ cmplwi r5, 0x84
+/* 80319CD4 00315934 41 81 00 0C */ bgt lbl_80319CE0
+/* 80319CD8 00315938 38 05 FF 7F */ addi r0, r5, -129
+/* 80319CDC 0031593C 48 00 00 78 */ b lbl_80319D54
+lbl_80319CE0:
+/* 80319CE0 00315940 28 05 00 87 */ cmplwi r5, 0x87
+/* 80319CE4 00315944 41 80 00 14 */ blt lbl_80319CF8
+/* 80319CE8 00315948 28 05 00 9F */ cmplwi r5, 0x9f
+/* 80319CEC 0031594C 41 81 00 0C */ bgt lbl_80319CF8
+/* 80319CF0 00315950 38 05 FF 7D */ addi r0, r5, -131
+/* 80319CF4 00315954 48 00 00 60 */ b lbl_80319D54
+lbl_80319CF8:
+/* 80319CF8 00315958 28 05 00 E0 */ cmplwi r5, 0xe0
+/* 80319CFC 0031595C 41 80 00 14 */ blt lbl_80319D10
+/* 80319D00 00315960 28 05 00 EA */ cmplwi r5, 0xea
+/* 80319D04 00315964 41 81 00 0C */ bgt lbl_80319D10
+/* 80319D08 00315968 38 05 FF 3D */ addi r0, r5, -195
+/* 80319D0C 0031596C 48 00 00 48 */ b lbl_80319D54
+lbl_80319D10:
+/* 80319D10 00315970 28 05 00 ED */ cmplwi r5, 0xed
+/* 80319D14 00315974 41 80 00 14 */ blt lbl_80319D28
+/* 80319D18 00315978 28 05 00 EE */ cmplwi r5, 0xee
+/* 80319D1C 0031597C 41 81 00 0C */ bgt lbl_80319D28
+/* 80319D20 00315980 38 05 FF 3B */ addi r0, r5, -197
+/* 80319D24 00315984 48 00 00 30 */ b lbl_80319D54
+lbl_80319D28:
+/* 80319D28 00315988 28 05 00 FA */ cmplwi r5, 0xfa
+/* 80319D2C 0031598C 41 80 00 14 */ blt lbl_80319D40
+/* 80319D30 00315990 28 05 00 FC */ cmplwi r5, 0xfc
+/* 80319D34 00315994 41 81 00 0C */ bgt lbl_80319D40
+/* 80319D38 00315998 38 05 FF 30 */ addi r0, r5, -208
+/* 80319D3C 0031599C 48 00 00 18 */ b lbl_80319D54
+lbl_80319D40:
+/* 80319D40 003159A0 38 00 00 5F */ li r0, 0x5f
+/* 80319D44 003159A4 38 60 00 01 */ li r3, 1
+/* 80319D48 003159A8 B0 04 00 00 */ sth r0, 0(r4)
+/* 80319D4C 003159AC 38 80 00 02 */ li r4, 2
+/* 80319D50 003159B0 4B FE B4 44 */ b VFiPFCODE_Combine_Width
+lbl_80319D54:
+/* 80319D54 003159B4 34 63 FF C0 */ addic. r3, r3, -64
+/* 80319D58 003159B8 41 80 00 0C */ blt lbl_80319D64
+/* 80319D5C 003159BC 2C 03 00 BD */ cmpwi r3, 0xbd
+/* 80319D60 003159C0 41 80 00 18 */ blt lbl_80319D78
+lbl_80319D64:
+/* 80319D64 003159C4 38 00 00 5F */ li r0, 0x5f
+/* 80319D68 003159C8 38 60 00 01 */ li r3, 1
+/* 80319D6C 003159CC B0 04 00 00 */ sth r0, 0(r4)
+/* 80319D70 003159D0 38 80 00 02 */ li r4, 2
+/* 80319D74 003159D4 4B FE B4 20 */ b VFiPFCODE_Combine_Width
+lbl_80319D78:
+/* 80319D78 003159D8 1C 00 01 7A */ mulli r0, r0, 0x17a
+/* 80319D7C 003159DC 3C A0 80 40 */ lis r5, lbl_803FE2C0@ha
+/* 80319D80 003159E0 54 63 08 3C */ slwi r3, r3, 1
+/* 80319D84 003159E4 38 A5 E2 C0 */ addi r5, r5, lbl_803FE2C0@l
+/* 80319D88 003159E8 7C 05 02 14 */ add r0, r5, r0
+/* 80319D8C 003159EC 7C 03 02 2E */ lhzx r0, r3, r0
+/* 80319D90 003159F0 2C 00 00 00 */ cmpwi r0, 0
+/* 80319D94 003159F4 B0 04 00 00 */ sth r0, 0(r4)
+/* 80319D98 003159F8 40 82 00 18 */ bne lbl_80319DB0
+/* 80319D9C 003159FC 38 00 00 5F */ li r0, 0x5f
+/* 80319DA0 00315A00 38 60 00 01 */ li r3, 1
+/* 80319DA4 00315A04 B0 04 00 00 */ sth r0, 0(r4)
+/* 80319DA8 00315A08 38 80 00 02 */ li r4, 2
+/* 80319DAC 00315A0C 4B FE B3 E8 */ b VFiPFCODE_Combine_Width
+lbl_80319DB0:
+/* 80319DB0 00315A10 38 60 00 02 */ li r3, 2
+/* 80319DB4 00315A14 38 80 00 02 */ li r4, 2
+/* 80319DB8 00315A18 4B FE B3 DC */ b VFiPFCODE_Combine_Width
+
+.global VFiPFCODE_CP932_Unicode2OEM
+VFiPFCODE_CP932_Unicode2OEM:
+/* 80319DBC 00315A1C A0 03 00 00 */ lhz r0, 0(r3)
+/* 80319DC0 00315A20 54 05 06 3E */ clrlwi r5, r0, 0x18
+/* 80319DC4 00315A24 7C 03 46 70 */ srawi r3, r0, 8
+/* 80319DC8 00315A28 28 05 00 80 */ cmplwi r5, 0x80
+/* 80319DCC 00315A2C 40 80 00 24 */ bge lbl_80319DF0
+/* 80319DD0 00315A30 54 60 06 3F */ clrlwi. r0, r3, 0x18
+/* 80319DD4 00315A34 40 82 00 1C */ bne lbl_80319DF0
+/* 80319DD8 00315A38 38 00 00 00 */ li r0, 0
+/* 80319DDC 00315A3C 98 A4 00 00 */ stb r5, 0(r4)
+/* 80319DE0 00315A40 38 60 00 01 */ li r3, 1
+/* 80319DE4 00315A44 98 04 00 01 */ stb r0, 1(r4)
+/* 80319DE8 00315A48 38 80 00 02 */ li r4, 2
+/* 80319DEC 00315A4C 4B FE B3 A8 */ b VFiPFCODE_Combine_Width
+lbl_80319DF0:
+/* 80319DF0 00315A50 54 60 44 2E */ rlwinm r0, r3, 8, 0x10, 0x17
+/* 80319DF4 00315A54 7C 00 2A 14 */ add r0, r0, r5
+/* 80319DF8 00315A58 54 09 04 3E */ clrlwi r9, r0, 0x10
+/* 80319DFC 00315A5C 28 09 FF 61 */ cmplwi r9, 0xff61
+/* 80319E00 00315A60 41 80 00 2C */ blt lbl_80319E2C
+/* 80319E04 00315A64 28 09 FF 9F */ cmplwi r9, 0xff9f
+/* 80319E08 00315A68 41 81 00 24 */ bgt lbl_80319E2C
+/* 80319E0C 00315A6C 3C 69 FF FF */ addis r3, r9, 0xffff
+/* 80319E10 00315A70 38 00 00 00 */ li r0, 0
+/* 80319E14 00315A74 38 63 01 40 */ addi r3, r3, 0x140
+/* 80319E18 00315A78 98 04 00 01 */ stb r0, 1(r4)
+/* 80319E1C 00315A7C 98 64 00 00 */ stb r3, 0(r4)
+/* 80319E20 00315A80 38 60 00 01 */ li r3, 1
+/* 80319E24 00315A84 38 80 00 02 */ li r4, 2
+/* 80319E28 00315A88 4B FE B3 6C */ b VFiPFCODE_Combine_Width
+lbl_80319E2C:
+/* 80319E2C 00315A8C 28 09 00 5F */ cmplwi r9, 0x5f
+/* 80319E30 00315A90 40 82 00 18 */ bne lbl_80319E48
+/* 80319E34 00315A94 38 00 00 5F */ li r0, 0x5f
+/* 80319E38 00315A98 38 60 00 01 */ li r3, 1
+/* 80319E3C 00315A9C 98 04 00 00 */ stb r0, 0(r4)
+/* 80319E40 00315AA0 38 80 00 02 */ li r4, 2
+/* 80319E44 00315AA4 4B FE B3 50 */ b VFiPFCODE_Combine_Width
+lbl_80319E48:
+/* 80319E48 00315AA8 3C A0 80 40 */ lis r5, lbl_803FE2C0@ha
+/* 80319E4C 00315AAC 38 C0 00 00 */ li r6, 0
+/* 80319E50 00315AB0 38 A5 E2 C0 */ addi r5, r5, lbl_803FE2C0@l
+/* 80319E54 00315AB4 38 00 00 15 */ li r0, 0x15
+lbl_80319E58:
+/* 80319E58 00315AB8 7C A8 2B 78 */ mr r8, r5
+/* 80319E5C 00315ABC 38 E0 00 00 */ li r7, 0
+/* 80319E60 00315AC0 7C 09 03 A6 */ mtctr r0
+lbl_80319E64:
+/* 80319E64 00315AC4 A0 68 00 00 */ lhz r3, 0(r8)
+/* 80319E68 00315AC8 7C 03 48 40 */ cmplw r3, r9
+/* 80319E6C 00315ACC 41 82 00 90 */ beq lbl_80319EFC
+/* 80319E70 00315AD0 A0 68 00 02 */ lhz r3, 2(r8)
+/* 80319E74 00315AD4 38 E7 00 01 */ addi r7, r7, 1
+/* 80319E78 00315AD8 7C 03 48 40 */ cmplw r3, r9
+/* 80319E7C 00315ADC 41 82 00 80 */ beq lbl_80319EFC
+/* 80319E80 00315AE0 A0 68 00 04 */ lhz r3, 4(r8)
+/* 80319E84 00315AE4 38 E7 00 01 */ addi r7, r7, 1
+/* 80319E88 00315AE8 7C 03 48 40 */ cmplw r3, r9
+/* 80319E8C 00315AEC 41 82 00 70 */ beq lbl_80319EFC
+/* 80319E90 00315AF0 A0 68 00 06 */ lhz r3, 6(r8)
+/* 80319E94 00315AF4 38 E7 00 01 */ addi r7, r7, 1
+/* 80319E98 00315AF8 7C 03 48 40 */ cmplw r3, r9
+/* 80319E9C 00315AFC 41 82 00 60 */ beq lbl_80319EFC
+/* 80319EA0 00315B00 A0 68 00 08 */ lhz r3, 8(r8)
+/* 80319EA4 00315B04 38 E7 00 01 */ addi r7, r7, 1
+/* 80319EA8 00315B08 7C 03 48 40 */ cmplw r3, r9
+/* 80319EAC 00315B0C 41 82 00 50 */ beq lbl_80319EFC
+/* 80319EB0 00315B10 A0 68 00 0A */ lhz r3, 0xa(r8)
+/* 80319EB4 00315B14 38 E7 00 01 */ addi r7, r7, 1
+/* 80319EB8 00315B18 7C 03 48 40 */ cmplw r3, r9
+/* 80319EBC 00315B1C 41 82 00 40 */ beq lbl_80319EFC
+/* 80319EC0 00315B20 A0 68 00 0C */ lhz r3, 0xc(r8)
+/* 80319EC4 00315B24 38 E7 00 01 */ addi r7, r7, 1
+/* 80319EC8 00315B28 7C 03 48 40 */ cmplw r3, r9
+/* 80319ECC 00315B2C 41 82 00 30 */ beq lbl_80319EFC
+/* 80319ED0 00315B30 A0 68 00 0E */ lhz r3, 0xe(r8)
+/* 80319ED4 00315B34 38 E7 00 01 */ addi r7, r7, 1
+/* 80319ED8 00315B38 7C 03 48 40 */ cmplw r3, r9
+/* 80319EDC 00315B3C 41 82 00 20 */ beq lbl_80319EFC
+/* 80319EE0 00315B40 A0 68 00 10 */ lhz r3, 0x10(r8)
+/* 80319EE4 00315B44 38 E7 00 01 */ addi r7, r7, 1
+/* 80319EE8 00315B48 7C 03 48 40 */ cmplw r3, r9
+/* 80319EEC 00315B4C 41 82 00 10 */ beq lbl_80319EFC
+/* 80319EF0 00315B50 38 E7 00 01 */ addi r7, r7, 1
+/* 80319EF4 00315B54 39 08 00 12 */ addi r8, r8, 0x12
+/* 80319EF8 00315B58 42 00 FF 6C */ bdnz lbl_80319E64
+lbl_80319EFC:
+/* 80319EFC 00315B5C 2C 07 00 BD */ cmpwi r7, 0xbd
+/* 80319F00 00315B60 41 80 00 14 */ blt lbl_80319F14
+/* 80319F04 00315B64 38 C6 00 01 */ addi r6, r6, 1
+/* 80319F08 00315B68 38 A5 01 7A */ addi r5, r5, 0x17a
+/* 80319F0C 00315B6C 2C 06 00 2D */ cmpwi r6, 0x2d
+/* 80319F10 00315B70 41 80 FF 48 */ blt lbl_80319E58
+lbl_80319F14:
+/* 80319F14 00315B74 2C 07 00 BD */ cmpwi r7, 0xbd
+/* 80319F18 00315B78 40 82 00 18 */ bne lbl_80319F30
+/* 80319F1C 00315B7C 38 00 00 5F */ li r0, 0x5f
+/* 80319F20 00315B80 38 60 00 01 */ li r3, 1
+/* 80319F24 00315B84 98 04 00 00 */ stb r0, 0(r4)
+/* 80319F28 00315B88 38 80 00 02 */ li r4, 2
+/* 80319F2C 00315B8C 4B FE B2 68 */ b VFiPFCODE_Combine_Width
+lbl_80319F30:
+/* 80319F30 00315B90 2C 06 00 00 */ cmpwi r6, 0
+/* 80319F34 00315B94 41 80 00 24 */ blt lbl_80319F58
+/* 80319F38 00315B98 2C 06 00 03 */ cmpwi r6, 3
+/* 80319F3C 00315B9C 41 81 00 1C */ bgt lbl_80319F58
+/* 80319F40 00315BA0 38 66 00 81 */ addi r3, r6, 0x81
+/* 80319F44 00315BA4 38 07 00 40 */ addi r0, r7, 0x40
+/* 80319F48 00315BA8 54 63 40 2E */ slwi r3, r3, 8
+/* 80319F4C 00315BAC 7C 60 03 78 */ or r0, r3, r0
+/* 80319F50 00315BB0 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 80319F54 00315BB4 48 00 00 B8 */ b lbl_8031A00C
+lbl_80319F58:
+/* 80319F58 00315BB8 2C 06 00 04 */ cmpwi r6, 4
+/* 80319F5C 00315BBC 41 80 00 24 */ blt lbl_80319F80
+/* 80319F60 00315BC0 2C 06 00 1C */ cmpwi r6, 0x1c
+/* 80319F64 00315BC4 41 81 00 1C */ bgt lbl_80319F80
+/* 80319F68 00315BC8 38 66 00 83 */ addi r3, r6, 0x83
+/* 80319F6C 00315BCC 38 07 00 40 */ addi r0, r7, 0x40
+/* 80319F70 00315BD0 54 63 40 2E */ slwi r3, r3, 8
+/* 80319F74 00315BD4 7C 60 03 78 */ or r0, r3, r0
+/* 80319F78 00315BD8 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 80319F7C 00315BDC 48 00 00 90 */ b lbl_8031A00C
+lbl_80319F80:
+/* 80319F80 00315BE0 2C 06 00 1D */ cmpwi r6, 0x1d
+/* 80319F84 00315BE4 41 80 00 24 */ blt lbl_80319FA8
+/* 80319F88 00315BE8 2C 06 00 27 */ cmpwi r6, 0x27
+/* 80319F8C 00315BEC 41 81 00 1C */ bgt lbl_80319FA8
+/* 80319F90 00315BF0 38 66 00 C3 */ addi r3, r6, 0xc3
+/* 80319F94 00315BF4 38 07 00 40 */ addi r0, r7, 0x40
+/* 80319F98 00315BF8 54 63 40 2E */ slwi r3, r3, 8
+/* 80319F9C 00315BFC 7C 60 03 78 */ or r0, r3, r0
+/* 80319FA0 00315C00 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 80319FA4 00315C04 48 00 00 68 */ b lbl_8031A00C
+lbl_80319FA8:
+/* 80319FA8 00315C08 2C 06 00 28 */ cmpwi r6, 0x28
+/* 80319FAC 00315C0C 41 80 00 24 */ blt lbl_80319FD0
+/* 80319FB0 00315C10 2C 06 00 29 */ cmpwi r6, 0x29
+/* 80319FB4 00315C14 41 81 00 1C */ bgt lbl_80319FD0
+/* 80319FB8 00315C18 38 66 00 C5 */ addi r3, r6, 0xc5
+/* 80319FBC 00315C1C 38 07 00 40 */ addi r0, r7, 0x40
+/* 80319FC0 00315C20 54 63 40 2E */ slwi r3, r3, 8
+/* 80319FC4 00315C24 7C 60 03 78 */ or r0, r3, r0
+/* 80319FC8 00315C28 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 80319FCC 00315C2C 48 00 00 40 */ b lbl_8031A00C
+lbl_80319FD0:
+/* 80319FD0 00315C30 2C 06 00 2A */ cmpwi r6, 0x2a
+/* 80319FD4 00315C34 41 80 00 24 */ blt lbl_80319FF8
+/* 80319FD8 00315C38 2C 06 00 2C */ cmpwi r6, 0x2c
+/* 80319FDC 00315C3C 41 81 00 1C */ bgt lbl_80319FF8
+/* 80319FE0 00315C40 38 66 00 D0 */ addi r3, r6, 0xd0
+/* 80319FE4 00315C44 38 07 00 40 */ addi r0, r7, 0x40
+/* 80319FE8 00315C48 54 63 40 2E */ slwi r3, r3, 8
+/* 80319FEC 00315C4C 7C 60 03 78 */ or r0, r3, r0
+/* 80319FF0 00315C50 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 80319FF4 00315C54 48 00 00 18 */ b lbl_8031A00C
+lbl_80319FF8:
+/* 80319FF8 00315C58 38 00 00 5F */ li r0, 0x5f
+/* 80319FFC 00315C5C 38 60 00 01 */ li r3, 1
+/* 8031A000 00315C60 98 04 00 00 */ stb r0, 0(r4)
+/* 8031A004 00315C64 38 80 00 02 */ li r4, 2
+/* 8031A008 00315C68 4B FE B1 8C */ b VFiPFCODE_Combine_Width
+lbl_8031A00C:
+/* 8031A00C 00315C6C 54 60 C6 3E */ rlwinm r0, r3, 0x18, 0x18, 0x1f
+/* 8031A010 00315C70 98 64 00 01 */ stb r3, 1(r4)
+/* 8031A014 00315C74 38 60 00 02 */ li r3, 2
+/* 8031A018 00315C78 98 04 00 00 */ stb r0, 0(r4)
+/* 8031A01C 00315C7C 38 80 00 02 */ li r4, 2
+/* 8031A020 00315C80 4B FE B1 74 */ b VFiPFCODE_Combine_Width
+
+.global VFiPFCODE_CP932_OEMCharWidth
+VFiPFCODE_CP932_OEMCharWidth:
+/* 8031A024 00315C84 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8031A028 00315C88 7C 08 02 A6 */ mflr r0
+/* 8031A02C 00315C8C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8031A030 00315C90 38 81 00 0C */ addi r4, r1, 0xc
+/* 8031A034 00315C94 4B FF FB CD */ bl VFiPFCODE_CP932_OEM2Unicode
+/* 8031A038 00315C98 38 81 00 0A */ addi r4, r1, 0xa
+/* 8031A03C 00315C9C 38 A1 00 08 */ addi r5, r1, 8
+/* 8031A040 00315CA0 4B FE B1 61 */ bl VFiPFCODE_Divide_Width
+/* 8031A044 00315CA4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8031A048 00315CA8 A8 61 00 0A */ lha r3, 0xa(r1)
+/* 8031A04C 00315CAC 7C 08 03 A6 */ mtlr r0
+/* 8031A050 00315CB0 38 21 00 10 */ addi r1, r1, 0x10
+/* 8031A054 00315CB4 4E 80 00 20 */ blr
+
+.global VFiPFCODE_CP932_isOEMMBchar
+VFiPFCODE_CP932_isOEMMBchar:
+/* 8031A058 00315CB8 2C 04 00 02 */ cmpwi r4, 2
+/* 8031A05C 00315CBC 54 60 06 3E */ clrlwi r0, r3, 0x18
+/* 8031A060 00315CC0 41 82 00 40 */ beq lbl_8031A0A0
+/* 8031A064 00315CC4 40 80 00 68 */ bge lbl_8031A0CC
+/* 8031A068 00315CC8 2C 04 00 01 */ cmpwi r4, 1
+/* 8031A06C 00315CCC 40 80 00 08 */ bge lbl_8031A074
+/* 8031A070 00315CD0 48 00 00 5C */ b lbl_8031A0CC
+lbl_8031A074:
+/* 8031A074 00315CD4 28 00 00 81 */ cmplwi r0, 0x81
+/* 8031A078 00315CD8 38 60 00 00 */ li r3, 0
+/* 8031A07C 00315CDC 41 80 00 0C */ blt lbl_8031A088
+/* 8031A080 00315CE0 28 00 00 9F */ cmplwi r0, 0x9f
+/* 8031A084 00315CE4 40 81 00 14 */ ble lbl_8031A098
+lbl_8031A088:
+/* 8031A088 00315CE8 28 00 00 E0 */ cmplwi r0, 0xe0
+/* 8031A08C 00315CEC 4D 80 00 20 */ bltlr
+/* 8031A090 00315CF0 28 00 00 FC */ cmplwi r0, 0xfc
+/* 8031A094 00315CF4 4D 81 00 20 */ bgtlr
+lbl_8031A098:
+/* 8031A098 00315CF8 38 60 00 01 */ li r3, 1
+/* 8031A09C 00315CFC 4E 80 00 20 */ blr
+lbl_8031A0A0:
+/* 8031A0A0 00315D00 28 00 00 40 */ cmplwi r0, 0x40
+/* 8031A0A4 00315D04 38 60 00 00 */ li r3, 0
+/* 8031A0A8 00315D08 41 80 00 0C */ blt lbl_8031A0B4
+/* 8031A0AC 00315D0C 28 00 00 7E */ cmplwi r0, 0x7e
+/* 8031A0B0 00315D10 40 81 00 14 */ ble lbl_8031A0C4
+lbl_8031A0B4:
+/* 8031A0B4 00315D14 28 00 00 80 */ cmplwi r0, 0x80
+/* 8031A0B8 00315D18 4D 80 00 20 */ bltlr
+/* 8031A0BC 00315D1C 28 00 00 FC */ cmplwi r0, 0xfc
+/* 8031A0C0 00315D20 4D 81 00 20 */ bgtlr
+lbl_8031A0C4:
+/* 8031A0C4 00315D24 38 60 00 01 */ li r3, 1
+/* 8031A0C8 00315D28 4E 80 00 20 */ blr
+lbl_8031A0CC:
+/* 8031A0CC 00315D2C 38 60 00 00 */ li r3, 0
+/* 8031A0D0 00315D30 4E 80 00 20 */ blr
+
+.global VFiPFCODE_CP932_UnicodeCharWidth
+VFiPFCODE_CP932_UnicodeCharWidth:
+/* 8031A0D4 00315D34 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8031A0D8 00315D38 7C 08 02 A6 */ mflr r0
+/* 8031A0DC 00315D3C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8031A0E0 00315D40 38 81 00 0C */ addi r4, r1, 0xc
+/* 8031A0E4 00315D44 4B FF FC D9 */ bl VFiPFCODE_CP932_Unicode2OEM
+/* 8031A0E8 00315D48 38 81 00 0A */ addi r4, r1, 0xa
+/* 8031A0EC 00315D4C 38 A1 00 08 */ addi r5, r1, 8
+/* 8031A0F0 00315D50 4B FE B0 B1 */ bl VFiPFCODE_Divide_Width
+/* 8031A0F4 00315D54 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8031A0F8 00315D58 A8 61 00 08 */ lha r3, 8(r1)
+/* 8031A0FC 00315D5C 7C 08 03 A6 */ mtlr r0
+/* 8031A100 00315D60 38 21 00 10 */ addi r1, r1, 0x10
+/* 8031A104 00315D64 4E 80 00 20 */ blr
+
+.global VFiPFCODE_CP932_isUnicodeMBchar
+VFiPFCODE_CP932_isUnicodeMBchar:
+/* 8031A108 00315D68 38 60 00 00 */ li r3, 0
+/* 8031A10C 00315D6C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_dir.s b/asm/SDK/VF/pf_dir.s new file mode 100644 index 0000000..96a4886 --- /dev/null +++ b/asm/SDK/VF/pf_dir.s @@ -0,0 +1,43 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFDIR_FinalizeAllDirs
+VFiPFDIR_FinalizeAllDirs:
+/* 8030B238 00306E98 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030B23C 00306E9C 7C 08 02 A6 */ mflr r0
+/* 8030B240 00306EA0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030B244 00306EA4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030B248 00306EA8 3B E0 00 00 */ li r31, 0
+/* 8030B24C 00306EAC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030B250 00306EB0 3B C0 00 00 */ li r30, 0
+/* 8030B254 00306EB4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030B258 00306EB8 7C 7D 1B 78 */ mr r29, r3
+lbl_8030B25C:
+/* 8030B25C 00306EBC 57 C0 04 3E */ clrlwi r0, r30, 0x10
+/* 8030B260 00306EC0 1C 00 02 80 */ mulli r0, r0, 0x280
+/* 8030B264 00306EC4 7C 7D 02 14 */ add r3, r29, r0
+/* 8030B268 00306EC8 93 E3 0E 00 */ stw r31, 0xe00(r3)
+/* 8030B26C 00306ECC 38 63 0E 08 */ addi r3, r3, 0xe08
+/* 8030B270 00306ED0 48 00 5E C5 */ bl VFiPFFAT_FinalizeFFD
+/* 8030B274 00306ED4 3B DE 00 01 */ addi r30, r30, 1
+/* 8030B278 00306ED8 28 1E 00 03 */ cmplwi r30, 3
+/* 8030B27C 00306EDC 41 80 FF E0 */ blt lbl_8030B25C
+/* 8030B280 00306EE0 80 BD 15 80 */ lwz r5, 0x1580(r29)
+/* 8030B284 00306EE4 38 00 00 00 */ li r0, 0
+/* 8030B288 00306EE8 80 9D 15 A0 */ lwz r4, 0x15a0(r29)
+/* 8030B28C 00306EEC 80 7D 15 C0 */ lwz r3, 0x15c0(r29)
+/* 8030B290 00306EF0 54 A5 00 3C */ rlwinm r5, r5, 0, 0, 0x1e
+/* 8030B294 00306EF4 54 84 00 3C */ rlwinm r4, r4, 0, 0, 0x1e
+/* 8030B298 00306EF8 90 BD 15 80 */ stw r5, 0x1580(r29)
+/* 8030B29C 00306EFC 54 63 00 3C */ rlwinm r3, r3, 0, 0, 0x1e
+/* 8030B2A0 00306F00 90 9D 15 A0 */ stw r4, 0x15a0(r29)
+/* 8030B2A4 00306F04 90 7D 15 C0 */ stw r3, 0x15c0(r29)
+/* 8030B2A8 00306F08 90 1D 15 E4 */ stw r0, 0x15e4(r29)
+/* 8030B2AC 00306F0C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030B2B0 00306F10 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030B2B4 00306F14 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030B2B8 00306F18 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030B2BC 00306F1C 7C 08 03 A6 */ mtlr r0
+/* 8030B2C0 00306F20 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030B2C4 00306F24 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_driver.s b/asm/SDK/VF/pf_driver.s new file mode 100644 index 0000000..6984a5e --- /dev/null +++ b/asm/SDK/VF/pf_driver.s @@ -0,0 +1,726 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFDRV_GetBPBInformation
+VFiPFDRV_GetBPBInformation:
+/* 803058F4 00301554 94 21 FF 80 */ stwu r1, -0x80(r1)
+/* 803058F8 00301558 7C 08 02 A6 */ mflr r0
+/* 803058FC 0030155C 90 01 00 84 */ stw r0, 0x84(r1)
+/* 80305900 00301560 93 E1 00 7C */ stw r31, 0x7c(r1)
+/* 80305904 00301564 7C 9F 23 78 */ mr r31, r4
+/* 80305908 00301568 38 81 00 08 */ addi r4, r1, 8
+/* 8030590C 0030156C 48 00 0A 89 */ bl VFipdm_bpb_get_bpb_information
+/* 80305910 00301570 2C 03 00 00 */ cmpwi r3, 0
+/* 80305914 00301574 41 82 00 0C */ beq lbl_80305920
+/* 80305918 00301578 38 60 00 07 */ li r3, 7
+/* 8030591C 0030157C 48 00 00 B0 */ b lbl_803059CC
+lbl_80305920:
+/* 80305920 00301580 A0 01 00 10 */ lhz r0, 0x10(r1)
+/* 80305924 00301584 38 60 00 00 */ li r3, 0
+/* 80305928 00301588 B0 1F 00 00 */ sth r0, 0(r31)
+/* 8030592C 0030158C A0 01 00 14 */ lhz r0, 0x14(r1)
+/* 80305930 00301590 B0 1F 00 02 */ sth r0, 2(r31)
+/* 80305934 00301594 A0 01 00 16 */ lhz r0, 0x16(r1)
+/* 80305938 00301598 B0 1F 00 04 */ sth r0, 4(r31)
+/* 8030593C 0030159C 88 01 00 12 */ lbz r0, 0x12(r1)
+/* 80305940 003015A0 98 1F 00 06 */ stb r0, 6(r31)
+/* 80305944 003015A4 88 01 00 13 */ lbz r0, 0x13(r1)
+/* 80305948 003015A8 98 1F 00 07 */ stb r0, 7(r31)
+/* 8030594C 003015AC 80 01 00 70 */ lwz r0, 0x70(r1)
+/* 80305950 003015B0 90 1F 00 08 */ stw r0, 8(r31)
+/* 80305954 003015B4 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 80305958 003015B8 90 1F 00 0C */ stw r0, 0xc(r31)
+/* 8030595C 003015BC 80 01 00 4C */ lwz r0, 0x4c(r1)
+/* 80305960 003015C0 90 1F 00 10 */ stw r0, 0x10(r31)
+/* 80305964 003015C4 A0 01 00 50 */ lhz r0, 0x50(r1)
+/* 80305968 003015C8 B0 1F 00 14 */ sth r0, 0x14(r31)
+/* 8030596C 003015CC A0 01 00 52 */ lhz r0, 0x52(r1)
+/* 80305970 003015D0 B0 1F 00 16 */ sth r0, 0x16(r31)
+/* 80305974 003015D4 A0 01 00 48 */ lhz r0, 0x48(r1)
+/* 80305978 003015D8 B0 1F 00 18 */ sth r0, 0x18(r31)
+/* 8030597C 003015DC 88 01 00 2A */ lbz r0, 0x2a(r1)
+/* 80305980 003015E0 98 1F 00 1A */ stb r0, 0x1a(r31)
+/* 80305984 003015E4 80 01 00 58 */ lwz r0, 0x58(r1)
+/* 80305988 003015E8 90 1F 00 1C */ stw r0, 0x1c(r31)
+/* 8030598C 003015EC 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 80305990 003015F0 98 1F 00 20 */ stb r0, 0x20(r31)
+/* 80305994 003015F4 88 01 00 5D */ lbz r0, 0x5d(r1)
+/* 80305998 003015F8 98 1F 00 21 */ stb r0, 0x21(r31)
+/* 8030599C 003015FC 88 01 00 57 */ lbz r0, 0x57(r1)
+/* 803059A0 00301600 98 1F 00 22 */ stb r0, 0x22(r31)
+/* 803059A4 00301604 A0 01 00 5E */ lhz r0, 0x5e(r1)
+/* 803059A8 00301608 B0 1F 00 24 */ sth r0, 0x24(r31)
+/* 803059AC 0030160C 80 01 00 60 */ lwz r0, 0x60(r1)
+/* 803059B0 00301610 90 1F 00 28 */ stw r0, 0x28(r31)
+/* 803059B4 00301614 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 803059B8 00301618 90 1F 00 2C */ stw r0, 0x2c(r31)
+/* 803059BC 0030161C 80 01 00 68 */ lwz r0, 0x68(r1)
+/* 803059C0 00301620 90 1F 00 30 */ stw r0, 0x30(r31)
+/* 803059C4 00301624 80 01 00 6C */ lwz r0, 0x6c(r1)
+/* 803059C8 00301628 90 1F 00 34 */ stw r0, 0x34(r31)
+lbl_803059CC:
+/* 803059CC 0030162C 80 01 00 84 */ lwz r0, 0x84(r1)
+/* 803059D0 00301630 83 E1 00 7C */ lwz r31, 0x7c(r1)
+/* 803059D4 00301634 7C 08 03 A6 */ mtlr r0
+/* 803059D8 00301638 38 21 00 80 */ addi r1, r1, 0x80
+/* 803059DC 0030163C 4E 80 00 20 */ blr
+
+.global VFiPFDRV_GetFSINFOInformation
+VFiPFDRV_GetFSINFOInformation:
+/* 803059E0 00301640 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803059E4 00301644 7C 08 02 A6 */ mflr r0
+/* 803059E8 00301648 38 80 FF FF */ li r4, -1
+/* 803059EC 0030164C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803059F0 00301650 38 A1 00 10 */ addi r5, r1, 0x10
+/* 803059F4 00301654 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 803059F8 00301658 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 803059FC 0030165C 7C 7E 1B 78 */ mr r30, r3
+/* 80305A00 00301660 48 00 4C B9 */ bl VFiPFCACHE_AllocateDataPage
+/* 80305A04 00301664 2C 03 00 00 */ cmpwi r3, 0
+/* 80305A08 00301668 41 82 00 08 */ beq lbl_80305A10
+/* 80305A0C 0030166C 48 00 01 78 */ b lbl_80305B84
+lbl_80305A10:
+/* 80305A10 00301670 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305A14 00301674 39 01 00 0C */ addi r8, r1, 0xc
+/* 80305A18 00301678 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 80305A1C 0030167C 38 C0 00 01 */ li r6, 1
+/* 80305A20 00301680 80 84 00 04 */ lwz r4, 4(r4)
+/* 80305A24 00301684 A0 BE 00 14 */ lhz r5, 0x14(r30)
+/* 80305A28 00301688 A0 FE 00 00 */ lhz r7, 0(r30)
+/* 80305A2C 0030168C 48 00 25 AD */ bl VFipdm_part_logical_read
+/* 80305A30 00301690 2C 03 00 00 */ cmpwi r3, 0
+/* 80305A34 00301694 41 82 00 50 */ beq lbl_80305A84
+/* 80305A38 00301698 2C 03 00 15 */ cmpwi r3, 0x15
+/* 80305A3C 0030169C 40 82 00 24 */ bne lbl_80305A60
+/* 80305A40 003016A0 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 80305A44 003016A4 48 00 2D 91 */ bl VFipdm_part_get_driver_error_code
+/* 80305A48 003016A8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80305A4C 003016AC 3B E0 10 00 */ li r31, 0x1000
+/* 80305A50 003016B0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80305A54 003016B4 90 64 00 20 */ stw r3, 0x20(r4)
+/* 80305A58 003016B8 90 7E 18 70 */ stw r3, 0x1870(r30)
+/* 80305A5C 003016BC 48 00 00 08 */ b lbl_80305A64
+lbl_80305A60:
+/* 80305A60 003016C0 3B E0 FF FF */ li r31, -1
+lbl_80305A64:
+/* 80305A64 003016C4 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305A68 003016C8 7F C3 F3 78 */ mr r3, r30
+/* 80305A6C 003016CC 48 00 4D 51 */ bl VFiPFCACHE_FreeDataPage
+/* 80305A70 003016D0 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 80305A74 003016D4 38 80 00 01 */ li r4, 1
+/* 80305A78 003016D8 48 00 22 89 */ bl VFipdm_part_release_permission
+/* 80305A7C 003016DC 7F E3 FB 78 */ mr r3, r31
+/* 80305A80 003016E0 48 00 01 04 */ b lbl_80305B84
+lbl_80305A84:
+/* 80305A84 003016E4 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 80305A88 003016E8 38 81 00 08 */ addi r4, r1, 8
+/* 80305A8C 003016EC 80 63 00 04 */ lwz r3, 4(r3)
+/* 80305A90 003016F0 48 00 0F E5 */ bl VFipdm_bpb_check_fsinfo_sector
+/* 80305A94 003016F4 2C 03 00 00 */ cmpwi r3, 0
+/* 80305A98 003016F8 41 82 00 24 */ beq lbl_80305ABC
+/* 80305A9C 003016FC 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305AA0 00301700 7F C3 F3 78 */ mr r3, r30
+/* 80305AA4 00301704 48 00 4D 19 */ bl VFiPFCACHE_FreeDataPage
+/* 80305AA8 00301708 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 80305AAC 0030170C 38 80 00 01 */ li r4, 1
+/* 80305AB0 00301710 48 00 22 51 */ bl VFipdm_part_release_permission
+/* 80305AB4 00301714 38 60 FF FF */ li r3, -1
+/* 80305AB8 00301718 48 00 00 CC */ b lbl_80305B84
+lbl_80305ABC:
+/* 80305ABC 0030171C 80 01 00 08 */ lwz r0, 8(r1)
+/* 80305AC0 00301720 2C 00 00 00 */ cmpwi r0, 0
+/* 80305AC4 00301724 40 82 00 24 */ bne lbl_80305AE8
+/* 80305AC8 00301728 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305ACC 0030172C 7F C3 F3 78 */ mr r3, r30
+/* 80305AD0 00301730 48 00 4C ED */ bl VFiPFCACHE_FreeDataPage
+/* 80305AD4 00301734 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 80305AD8 00301738 38 80 00 01 */ li r4, 1
+/* 80305ADC 0030173C 48 00 22 25 */ bl VFipdm_part_release_permission
+/* 80305AE0 00301740 38 60 00 07 */ li r3, 7
+/* 80305AE4 00301744 48 00 00 A0 */ b lbl_80305B84
+lbl_80305AE8:
+/* 80305AE8 00301748 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 80305AEC 0030174C 38 81 00 18 */ addi r4, r1, 0x18
+/* 80305AF0 00301750 80 63 00 04 */ lwz r3, 4(r3)
+/* 80305AF4 00301754 48 00 0D D9 */ bl VFipdm_bpb_get_fsinfo_information
+/* 80305AF8 00301758 2C 03 00 00 */ cmpwi r3, 0
+/* 80305AFC 0030175C 41 82 00 0C */ beq lbl_80305B08
+/* 80305B00 00301760 38 00 00 07 */ li r0, 7
+/* 80305B04 00301764 48 00 00 48 */ b lbl_80305B4C
+lbl_80305B08:
+/* 80305B08 00301768 80 81 00 18 */ lwz r4, 0x18(r1)
+/* 80305B0C 0030176C 28 04 00 02 */ cmplwi r4, 2
+/* 80305B10 00301770 41 80 00 18 */ blt lbl_80305B28
+/* 80305B14 00301774 80 7E 00 34 */ lwz r3, 0x34(r30)
+/* 80305B18 00301778 38 03 00 02 */ addi r0, r3, 2
+/* 80305B1C 0030177C 7C 04 00 40 */ cmplw r4, r0
+/* 80305B20 00301780 40 80 00 08 */ bge lbl_80305B28
+/* 80305B24 00301784 90 9E 00 38 */ stw r4, 0x38(r30)
+lbl_80305B28:
+/* 80305B28 00301788 80 81 00 1C */ lwz r4, 0x1c(r1)
+/* 80305B2C 0030178C 28 04 00 02 */ cmplwi r4, 2
+/* 80305B30 00301790 41 80 00 18 */ blt lbl_80305B48
+/* 80305B34 00301794 80 7E 00 34 */ lwz r3, 0x34(r30)
+/* 80305B38 00301798 38 03 00 02 */ addi r0, r3, 2
+/* 80305B3C 0030179C 7C 04 00 40 */ cmplw r4, r0
+/* 80305B40 003017A0 40 80 00 08 */ bge lbl_80305B48
+/* 80305B44 003017A4 90 9E 00 3C */ stw r4, 0x3c(r30)
+lbl_80305B48:
+/* 80305B48 003017A8 38 00 00 00 */ li r0, 0
+lbl_80305B4C:
+/* 80305B4C 003017AC 2C 00 00 00 */ cmpwi r0, 0
+/* 80305B50 003017B0 41 82 00 24 */ beq lbl_80305B74
+/* 80305B54 003017B4 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305B58 003017B8 7F C3 F3 78 */ mr r3, r30
+/* 80305B5C 003017BC 48 00 4C 61 */ bl VFiPFCACHE_FreeDataPage
+/* 80305B60 003017C0 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 80305B64 003017C4 38 80 00 01 */ li r4, 1
+/* 80305B68 003017C8 48 00 21 99 */ bl VFipdm_part_release_permission
+/* 80305B6C 003017CC 38 60 FF FF */ li r3, -1
+/* 80305B70 003017D0 48 00 00 14 */ b lbl_80305B84
+lbl_80305B74:
+/* 80305B74 003017D4 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305B78 003017D8 7F C3 F3 78 */ mr r3, r30
+/* 80305B7C 003017DC 48 00 4C 41 */ bl VFiPFCACHE_FreeDataPage
+/* 80305B80 003017E0 38 60 00 00 */ li r3, 0
+lbl_80305B84:
+/* 80305B84 003017E4 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80305B88 003017E8 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 80305B8C 003017EC 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 80305B90 003017F0 7C 08 03 A6 */ mtlr r0
+/* 80305B94 003017F4 38 21 00 30 */ addi r1, r1, 0x30
+/* 80305B98 003017F8 4E 80 00 20 */ blr
+
+.global VFiPFDRV_StoreFreeCountToFSINFO
+VFiPFDRV_StoreFreeCountToFSINFO:
+/* 80305B9C 003017FC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80305BA0 00301800 7C 08 02 A6 */ mflr r0
+/* 80305BA4 00301804 38 80 FF FF */ li r4, -1
+/* 80305BA8 00301808 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80305BAC 0030180C 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80305BB0 00301810 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80305BB4 00301814 7C 7F 1B 78 */ mr r31, r3
+/* 80305BB8 00301818 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80305BBC 0030181C 48 00 4A FD */ bl VFiPFCACHE_AllocateDataPage
+/* 80305BC0 00301820 2C 03 00 00 */ cmpwi r3, 0
+/* 80305BC4 00301824 41 82 00 08 */ beq lbl_80305BCC
+/* 80305BC8 00301828 48 00 01 70 */ b lbl_80305D38
+lbl_80305BCC:
+/* 80305BCC 0030182C 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80305BD0 00301830 2C 1F 00 00 */ cmpwi r31, 0
+/* 80305BD4 00301834 A0 BF 00 14 */ lhz r5, 0x14(r31)
+/* 80305BD8 00301838 80 83 00 08 */ lwz r4, 8(r3)
+/* 80305BDC 0030183C 40 82 00 0C */ bne lbl_80305BE8
+/* 80305BE0 00301840 3B C0 00 0A */ li r30, 0xa
+/* 80305BE4 00301844 48 00 00 54 */ b lbl_80305C38
+lbl_80305BE8:
+/* 80305BE8 00301848 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305BEC 0030184C 39 01 00 08 */ addi r8, r1, 8
+/* 80305BF0 00301850 A0 FF 00 00 */ lhz r7, 0(r31)
+/* 80305BF4 00301854 38 C0 00 01 */ li r6, 1
+/* 80305BF8 00301858 48 00 23 E1 */ bl VFipdm_part_logical_read
+/* 80305BFC 0030185C 2C 03 00 00 */ cmpwi r3, 0
+/* 80305C00 00301860 41 82 00 34 */ beq lbl_80305C34
+/* 80305C04 00301864 2C 03 00 15 */ cmpwi r3, 0x15
+/* 80305C08 00301868 40 82 00 24 */ bne lbl_80305C2C
+/* 80305C0C 0030186C 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305C10 00301870 48 00 2B C5 */ bl VFipdm_part_get_driver_error_code
+/* 80305C14 00301874 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80305C18 00301878 3B C0 10 00 */ li r30, 0x1000
+/* 80305C1C 0030187C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80305C20 00301880 90 64 00 20 */ stw r3, 0x20(r4)
+/* 80305C24 00301884 90 7F 18 70 */ stw r3, 0x1870(r31)
+/* 80305C28 00301888 48 00 00 10 */ b lbl_80305C38
+lbl_80305C2C:
+/* 80305C2C 0030188C 3B C0 FF FF */ li r30, -1
+/* 80305C30 00301890 48 00 00 08 */ b lbl_80305C38
+lbl_80305C34:
+/* 80305C34 00301894 3B C0 00 00 */ li r30, 0
+lbl_80305C38:
+/* 80305C38 00301898 2C 1E 00 00 */ cmpwi r30, 0
+/* 80305C3C 0030189C 40 82 00 10 */ bne lbl_80305C4C
+/* 80305C40 003018A0 80 01 00 08 */ lwz r0, 8(r1)
+/* 80305C44 003018A4 28 00 00 01 */ cmplwi r0, 1
+/* 80305C48 003018A8 41 82 00 08 */ beq lbl_80305C50
+lbl_80305C4C:
+/* 80305C4C 003018AC 3B C0 00 11 */ li r30, 0x11
+lbl_80305C50:
+/* 80305C50 003018B0 2C 1E 00 00 */ cmpwi r30, 0
+/* 80305C54 003018B4 40 82 00 D4 */ bne lbl_80305D28
+/* 80305C58 003018B8 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80305C5C 003018BC 2C 1F 00 00 */ cmpwi r31, 0
+/* 80305C60 003018C0 80 1F 00 38 */ lwz r0, 0x38(r31)
+/* 80305C64 003018C4 80 63 00 08 */ lwz r3, 8(r3)
+/* 80305C68 003018C8 98 03 01 E8 */ stb r0, 0x1e8(r3)
+/* 80305C6C 003018CC 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80305C70 003018D0 80 1F 00 38 */ lwz r0, 0x38(r31)
+/* 80305C74 003018D4 80 63 00 08 */ lwz r3, 8(r3)
+/* 80305C78 003018D8 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f
+/* 80305C7C 003018DC 98 03 01 E9 */ stb r0, 0x1e9(r3)
+/* 80305C80 003018E0 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80305C84 003018E4 80 1F 00 38 */ lwz r0, 0x38(r31)
+/* 80305C88 003018E8 80 63 00 08 */ lwz r3, 8(r3)
+/* 80305C8C 003018EC 54 00 86 3E */ rlwinm r0, r0, 0x10, 0x18, 0x1f
+/* 80305C90 003018F0 98 03 01 EA */ stb r0, 0x1ea(r3)
+/* 80305C94 003018F4 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80305C98 003018F8 80 1F 00 38 */ lwz r0, 0x38(r31)
+/* 80305C9C 003018FC 80 63 00 08 */ lwz r3, 8(r3)
+/* 80305CA0 00301900 54 00 46 3E */ srwi r0, r0, 0x18
+/* 80305CA4 00301904 98 03 01 EB */ stb r0, 0x1eb(r3)
+/* 80305CA8 00301908 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80305CAC 0030190C A0 BF 00 14 */ lhz r5, 0x14(r31)
+/* 80305CB0 00301910 80 83 00 08 */ lwz r4, 8(r3)
+/* 80305CB4 00301914 40 82 00 0C */ bne lbl_80305CC0
+/* 80305CB8 00301918 3B C0 00 0A */ li r30, 0xa
+/* 80305CBC 0030191C 48 00 00 54 */ b lbl_80305D10
+lbl_80305CC0:
+/* 80305CC0 00301920 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305CC4 00301924 39 01 00 08 */ addi r8, r1, 8
+/* 80305CC8 00301928 A0 FF 00 00 */ lhz r7, 0(r31)
+/* 80305CCC 0030192C 38 C0 00 01 */ li r6, 1
+/* 80305CD0 00301930 48 00 24 D1 */ bl VFipdm_part_logical_write
+/* 80305CD4 00301934 2C 03 00 00 */ cmpwi r3, 0
+/* 80305CD8 00301938 41 82 00 34 */ beq lbl_80305D0C
+/* 80305CDC 0030193C 2C 03 00 15 */ cmpwi r3, 0x15
+/* 80305CE0 00301940 40 82 00 24 */ bne lbl_80305D04
+/* 80305CE4 00301944 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305CE8 00301948 48 00 2A ED */ bl VFipdm_part_get_driver_error_code
+/* 80305CEC 0030194C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80305CF0 00301950 3B C0 10 00 */ li r30, 0x1000
+/* 80305CF4 00301954 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80305CF8 00301958 90 64 00 20 */ stw r3, 0x20(r4)
+/* 80305CFC 0030195C 90 7F 18 70 */ stw r3, 0x1870(r31)
+/* 80305D00 00301960 48 00 00 10 */ b lbl_80305D10
+lbl_80305D04:
+/* 80305D04 00301964 3B C0 FF FF */ li r30, -1
+/* 80305D08 00301968 48 00 00 08 */ b lbl_80305D10
+lbl_80305D0C:
+/* 80305D0C 0030196C 3B C0 00 00 */ li r30, 0
+lbl_80305D10:
+/* 80305D10 00301970 2C 1E 00 00 */ cmpwi r30, 0
+/* 80305D14 00301974 40 82 00 10 */ bne lbl_80305D24
+/* 80305D18 00301978 80 01 00 08 */ lwz r0, 8(r1)
+/* 80305D1C 0030197C 28 00 00 01 */ cmplwi r0, 1
+/* 80305D20 00301980 41 82 00 08 */ beq lbl_80305D28
+lbl_80305D24:
+/* 80305D24 00301984 3B C0 00 11 */ li r30, 0x11
+lbl_80305D28:
+/* 80305D28 00301988 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 80305D2C 0030198C 7F E3 FB 78 */ mr r3, r31
+/* 80305D30 00301990 48 00 4A 8D */ bl VFiPFCACHE_FreeDataPage
+/* 80305D34 00301994 7F C3 F3 78 */ mr r3, r30
+lbl_80305D38:
+/* 80305D38 00301998 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80305D3C 0030199C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80305D40 003019A0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80305D44 003019A4 7C 08 03 A6 */ mtlr r0
+/* 80305D48 003019A8 38 21 00 20 */ addi r1, r1, 0x20
+/* 80305D4C 003019AC 4E 80 00 20 */ blr
+
+.global VFiPFDRV_IsInserted
+VFiPFDRV_IsInserted:
+/* 80305D50 003019B0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80305D54 003019B4 7C 08 02 A6 */ mflr r0
+/* 80305D58 003019B8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80305D5C 003019BC 38 81 00 08 */ addi r4, r1, 8
+/* 80305D60 003019C0 80 63 18 8C */ lwz r3, 0x188c(r3)
+/* 80305D64 003019C4 48 00 28 35 */ bl VFipdm_part_check_media_insert
+/* 80305D68 003019C8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80305D6C 003019CC 80 61 00 08 */ lwz r3, 8(r1)
+/* 80305D70 003019D0 7C 08 03 A6 */ mtlr r0
+/* 80305D74 003019D4 38 21 00 10 */ addi r1, r1, 0x10
+/* 80305D78 003019D8 4E 80 00 20 */ blr
+
+.global VFiPFDRV_IsDetected
+VFiPFDRV_IsDetected:
+/* 80305D7C 003019DC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80305D80 003019E0 7C 08 02 A6 */ mflr r0
+/* 80305D84 003019E4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80305D88 003019E8 38 81 00 08 */ addi r4, r1, 8
+/* 80305D8C 003019EC 80 63 18 8C */ lwz r3, 0x188c(r3)
+/* 80305D90 003019F0 48 00 29 19 */ bl VFipdm_part_check_media_detect
+/* 80305D94 003019F4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80305D98 003019F8 80 61 00 08 */ lwz r3, 8(r1)
+/* 80305D9C 003019FC 7C 08 03 A6 */ mtlr r0
+/* 80305DA0 00301A00 38 21 00 10 */ addi r1, r1, 0x10
+/* 80305DA4 00301A04 4E 80 00 20 */ blr
+
+.global VFiPFDRV_IsWProtected
+VFiPFDRV_IsWProtected:
+/* 80305DA8 00301A08 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80305DAC 00301A0C 7C 08 02 A6 */ mflr r0
+/* 80305DB0 00301A10 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80305DB4 00301A14 38 81 00 08 */ addi r4, r1, 8
+/* 80305DB8 00301A18 80 63 18 8C */ lwz r3, 0x188c(r3)
+/* 80305DBC 00301A1C 48 00 26 CD */ bl VFipdm_part_check_media_write_protect
+/* 80305DC0 00301A20 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80305DC4 00301A24 80 61 00 08 */ lwz r3, 8(r1)
+/* 80305DC8 00301A28 7C 08 03 A6 */ mtlr r0
+/* 80305DCC 00301A2C 38 21 00 10 */ addi r1, r1, 0x10
+/* 80305DD0 00301A30 4E 80 00 20 */ blr
+
+.global VFiPFDRV_mount
+VFiPFDRV_mount:
+/* 80305DD4 00301A34 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80305DD8 00301A38 7C 08 02 A6 */ mflr r0
+/* 80305DDC 00301A3C 2C 03 00 00 */ cmpwi r3, 0
+/* 80305DE0 00301A40 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80305DE4 00301A44 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 80305DE8 00301A48 7C 7F 1B 78 */ mr r31, r3
+/* 80305DEC 00301A4C 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 80305DF0 00301A50 40 82 00 0C */ bne lbl_80305DFC
+/* 80305DF4 00301A54 38 60 00 0A */ li r3, 0xa
+/* 80305DF8 00301A58 48 00 01 FC */ b lbl_80305FF4
+lbl_80305DFC:
+/* 80305DFC 00301A5C 80 63 18 8C */ lwz r3, 0x188c(r3)
+/* 80305E00 00301A60 48 00 1D 1D */ bl VFipdm_part_get_permission
+/* 80305E04 00301A64 2C 03 00 00 */ cmpwi r3, 0
+/* 80305E08 00301A68 41 82 00 34 */ beq lbl_80305E3C
+/* 80305E0C 00301A6C 2C 03 00 15 */ cmpwi r3, 0x15
+/* 80305E10 00301A70 40 82 00 24 */ bne lbl_80305E34
+/* 80305E14 00301A74 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305E18 00301A78 48 00 29 BD */ bl VFipdm_part_get_driver_error_code
+/* 80305E1C 00301A7C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80305E20 00301A80 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80305E24 00301A84 90 64 00 20 */ stw r3, 0x20(r4)
+/* 80305E28 00301A88 90 7F 18 70 */ stw r3, 0x1870(r31)
+/* 80305E2C 00301A8C 38 60 10 00 */ li r3, 0x1000
+/* 80305E30 00301A90 48 00 01 C4 */ b lbl_80305FF4
+lbl_80305E34:
+/* 80305E34 00301A94 38 60 FF FF */ li r3, -1
+/* 80305E38 00301A98 48 00 01 BC */ b lbl_80305FF4
+lbl_80305E3C:
+/* 80305E3C 00301A9C 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305E40 00301AA0 38 81 00 14 */ addi r4, r1, 0x14
+/* 80305E44 00301AA4 48 00 25 25 */ bl VFipdm_part_get_media_information
+/* 80305E48 00301AA8 2C 03 00 00 */ cmpwi r3, 0
+/* 80305E4C 00301AAC 41 82 00 18 */ beq lbl_80305E64
+/* 80305E50 00301AB0 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305E54 00301AB4 38 80 00 01 */ li r4, 1
+/* 80305E58 00301AB8 48 00 1E A9 */ bl VFipdm_part_release_permission
+/* 80305E5C 00301ABC 38 60 FF FF */ li r3, -1
+/* 80305E60 00301AC0 48 00 01 94 */ b lbl_80305FF4
+lbl_80305E64:
+/* 80305E64 00301AC4 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 80305E68 00301AC8 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80305E6C 00301ACC 41 82 00 18 */ beq lbl_80305E84
+/* 80305E70 00301AD0 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 80305E74 00301AD4 80 61 00 24 */ lwz r3, 0x24(r1)
+/* 80305E78 00301AD8 60 00 00 10 */ ori r0, r0, 0x10
+/* 80305E7C 00301ADC B0 1F 18 78 */ sth r0, 0x1878(r31)
+/* 80305E80 00301AE0 90 7F 18 94 */ stw r3, 0x1894(r31)
+lbl_80305E84:
+/* 80305E84 00301AE4 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 80305E88 00301AE8 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
+/* 80305E8C 00301AEC 41 82 00 10 */ beq lbl_80305E9C
+/* 80305E90 00301AF0 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 80305E94 00301AF4 60 00 00 20 */ ori r0, r0, 0x20
+/* 80305E98 00301AF8 B0 1F 18 78 */ sth r0, 0x1878(r31)
+lbl_80305E9C:
+/* 80305E9C 00301AFC 7F E3 FB 78 */ mr r3, r31
+/* 80305EA0 00301B00 38 A1 00 10 */ addi r5, r1, 0x10
+/* 80305EA4 00301B04 38 80 FF FF */ li r4, -1
+/* 80305EA8 00301B08 48 00 48 11 */ bl VFiPFCACHE_AllocateDataPage
+/* 80305EAC 00301B0C 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305EB0 00301B10 39 01 00 0C */ addi r8, r1, 0xc
+/* 80305EB4 00301B14 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305EB8 00301B18 38 A0 00 00 */ li r5, 0
+/* 80305EBC 00301B1C 80 84 00 04 */ lwz r4, 4(r4)
+/* 80305EC0 00301B20 38 C0 00 01 */ li r6, 1
+/* 80305EC4 00301B24 38 E0 02 00 */ li r7, 0x200
+/* 80305EC8 00301B28 48 00 21 11 */ bl VFipdm_part_logical_read
+/* 80305ECC 00301B2C 2C 03 00 00 */ cmpwi r3, 0
+/* 80305ED0 00301B30 41 82 00 50 */ beq lbl_80305F20
+/* 80305ED4 00301B34 2C 03 00 15 */ cmpwi r3, 0x15
+/* 80305ED8 00301B38 40 82 00 24 */ bne lbl_80305EFC
+/* 80305EDC 00301B3C 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305EE0 00301B40 48 00 28 F5 */ bl VFipdm_part_get_driver_error_code
+/* 80305EE4 00301B44 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80305EE8 00301B48 3B C0 10 00 */ li r30, 0x1000
+/* 80305EEC 00301B4C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80305EF0 00301B50 90 64 00 20 */ stw r3, 0x20(r4)
+/* 80305EF4 00301B54 90 7F 18 70 */ stw r3, 0x1870(r31)
+/* 80305EF8 00301B58 48 00 00 08 */ b lbl_80305F00
+lbl_80305EFC:
+/* 80305EFC 00301B5C 3B C0 FF FF */ li r30, -1
+lbl_80305F00:
+/* 80305F00 00301B60 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305F04 00301B64 7F E3 FB 78 */ mr r3, r31
+/* 80305F08 00301B68 48 00 48 B5 */ bl VFiPFCACHE_FreeDataPage
+/* 80305F0C 00301B6C 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305F10 00301B70 38 80 00 01 */ li r4, 1
+/* 80305F14 00301B74 48 00 1D ED */ bl VFipdm_part_release_permission
+/* 80305F18 00301B78 7F C3 F3 78 */ mr r3, r30
+/* 80305F1C 00301B7C 48 00 00 D8 */ b lbl_80305FF4
+lbl_80305F20:
+/* 80305F20 00301B80 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 80305F24 00301B84 38 81 00 08 */ addi r4, r1, 8
+/* 80305F28 00301B88 80 63 00 04 */ lwz r3, 4(r3)
+/* 80305F2C 00301B8C 48 00 0A 01 */ bl VFipdm_bpb_check_boot_sector
+/* 80305F30 00301B90 2C 03 00 00 */ cmpwi r3, 0
+/* 80305F34 00301B94 41 82 00 24 */ beq lbl_80305F58
+/* 80305F38 00301B98 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305F3C 00301B9C 7F E3 FB 78 */ mr r3, r31
+/* 80305F40 00301BA0 48 00 48 7D */ bl VFiPFCACHE_FreeDataPage
+/* 80305F44 00301BA4 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305F48 00301BA8 38 80 00 01 */ li r4, 1
+/* 80305F4C 00301BAC 48 00 1D B5 */ bl VFipdm_part_release_permission
+/* 80305F50 00301BB0 38 60 FF FF */ li r3, -1
+/* 80305F54 00301BB4 48 00 00 A0 */ b lbl_80305FF4
+lbl_80305F58:
+/* 80305F58 00301BB8 80 01 00 08 */ lwz r0, 8(r1)
+/* 80305F5C 00301BBC 2C 00 00 00 */ cmpwi r0, 0
+/* 80305F60 00301BC0 40 82 00 24 */ bne lbl_80305F84
+/* 80305F64 00301BC4 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305F68 00301BC8 7F E3 FB 78 */ mr r3, r31
+/* 80305F6C 00301BCC 48 00 48 51 */ bl VFiPFCACHE_FreeDataPage
+/* 80305F70 00301BD0 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305F74 00301BD4 38 80 00 01 */ li r4, 1
+/* 80305F78 00301BD8 48 00 1D 89 */ bl VFipdm_part_release_permission
+/* 80305F7C 00301BDC 38 60 00 07 */ li r3, 7
+/* 80305F80 00301BE0 48 00 00 74 */ b lbl_80305FF4
+lbl_80305F84:
+/* 80305F84 00301BE4 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 80305F88 00301BE8 7F E4 FB 78 */ mr r4, r31
+/* 80305F8C 00301BEC 80 63 00 04 */ lwz r3, 4(r3)
+/* 80305F90 00301BF0 4B FF F9 65 */ bl VFiPFDRV_GetBPBInformation
+/* 80305F94 00301BF4 2C 03 00 00 */ cmpwi r3, 0
+/* 80305F98 00301BF8 7C 7E 1B 78 */ mr r30, r3
+/* 80305F9C 00301BFC 41 82 00 24 */ beq lbl_80305FC0
+/* 80305FA0 00301C00 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305FA4 00301C04 7F E3 FB 78 */ mr r3, r31
+/* 80305FA8 00301C08 48 00 48 15 */ bl VFiPFCACHE_FreeDataPage
+/* 80305FAC 00301C0C 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80305FB0 00301C10 38 80 00 01 */ li r4, 1
+/* 80305FB4 00301C14 48 00 1D 4D */ bl VFipdm_part_release_permission
+/* 80305FB8 00301C18 7F C3 F3 78 */ mr r3, r30
+/* 80305FBC 00301C1C 48 00 00 38 */ b lbl_80305FF4
+lbl_80305FC0:
+/* 80305FC0 00301C20 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80305FC4 00301C24 7F E3 FB 78 */ mr r3, r31
+/* 80305FC8 00301C28 48 00 47 F5 */ bl VFiPFCACHE_FreeDataPage
+/* 80305FCC 00301C2C 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80305FD0 00301C30 38 60 FF FF */ li r3, -1
+/* 80305FD4 00301C34 90 7F 00 38 */ stw r3, 0x38(r31)
+/* 80305FD8 00301C38 2C 00 00 02 */ cmpwi r0, 2
+/* 80305FDC 00301C3C 90 7F 00 3C */ stw r3, 0x3c(r31)
+/* 80305FE0 00301C40 40 82 00 10 */ bne lbl_80305FF0
+/* 80305FE4 00301C44 7F E3 FB 78 */ mr r3, r31
+/* 80305FE8 00301C48 4B FF F9 F9 */ bl VFiPFDRV_GetFSINFOInformation
+/* 80305FEC 00301C4C 7C 7E 1B 78 */ mr r30, r3
+lbl_80305FF0:
+/* 80305FF0 00301C50 7F C3 F3 78 */ mr r3, r30
+lbl_80305FF4:
+/* 80305FF4 00301C54 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80305FF8 00301C58 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 80305FFC 00301C5C 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 80306000 00301C60 7C 08 03 A6 */ mtlr r0
+/* 80306004 00301C64 38 21 00 30 */ addi r1, r1, 0x30
+/* 80306008 00301C68 4E 80 00 20 */ blr
+
+.global VFiPFDRV_unmount
+VFiPFDRV_unmount:
+/* 8030600C 00301C6C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80306010 00301C70 7C 08 02 A6 */ mflr r0
+/* 80306014 00301C74 2C 03 00 00 */ cmpwi r3, 0
+/* 80306018 00301C78 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030601C 00301C7C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80306020 00301C80 7C 7F 1B 78 */ mr r31, r3
+/* 80306024 00301C84 40 82 00 0C */ bne lbl_80306030
+/* 80306028 00301C88 38 60 00 0A */ li r3, 0xa
+/* 8030602C 00301C8C 48 00 00 54 */ b lbl_80306080
+lbl_80306030:
+/* 80306030 00301C90 38 04 FF FF */ addi r0, r4, -1
+/* 80306034 00301C94 80 63 18 8C */ lwz r3, 0x188c(r3)
+/* 80306038 00301C98 7C 00 00 34 */ cntlzw r0, r0
+/* 8030603C 00301C9C 54 04 D9 7E */ srwi r4, r0, 5
+/* 80306040 00301CA0 48 00 1C C1 */ bl VFipdm_part_release_permission
+/* 80306044 00301CA4 2C 03 00 00 */ cmpwi r3, 0
+/* 80306048 00301CA8 41 82 00 34 */ beq lbl_8030607C
+/* 8030604C 00301CAC 2C 03 00 15 */ cmpwi r3, 0x15
+/* 80306050 00301CB0 40 82 00 24 */ bne lbl_80306074
+/* 80306054 00301CB4 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80306058 00301CB8 48 00 27 7D */ bl VFipdm_part_get_driver_error_code
+/* 8030605C 00301CBC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80306060 00301CC0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80306064 00301CC4 90 64 00 20 */ stw r3, 0x20(r4)
+/* 80306068 00301CC8 90 7F 18 70 */ stw r3, 0x1870(r31)
+/* 8030606C 00301CCC 38 60 10 00 */ li r3, 0x1000
+/* 80306070 00301CD0 48 00 00 10 */ b lbl_80306080
+lbl_80306074:
+/* 80306074 00301CD4 38 60 FF FF */ li r3, -1
+/* 80306078 00301CD8 48 00 00 08 */ b lbl_80306080
+lbl_8030607C:
+/* 8030607C 00301CDC 38 60 00 00 */ li r3, 0
+lbl_80306080:
+/* 80306080 00301CE0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80306084 00301CE4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80306088 00301CE8 7C 08 03 A6 */ mtlr r0
+/* 8030608C 00301CEC 38 21 00 10 */ addi r1, r1, 0x10
+/* 80306090 00301CF0 4E 80 00 20 */ blr
+
+.global VFiPFDRV_format
+VFiPFDRV_format:
+/* 80306094 00301CF4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80306098 00301CF8 7C 08 02 A6 */ mflr r0
+/* 8030609C 00301CFC 2C 03 00 00 */ cmpwi r3, 0
+/* 803060A0 00301D00 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803060A4 00301D04 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 803060A8 00301D08 7C 9F 23 78 */ mr r31, r4
+/* 803060AC 00301D0C 93 C1 00 08 */ stw r30, 8(r1)
+/* 803060B0 00301D10 7C 7E 1B 78 */ mr r30, r3
+/* 803060B4 00301D14 40 82 00 0C */ bne lbl_803060C0
+/* 803060B8 00301D18 38 60 00 0A */ li r3, 0xa
+/* 803060BC 00301D1C 48 00 00 E8 */ b lbl_803061A4
+lbl_803060C0:
+/* 803060C0 00301D20 A0 03 18 78 */ lhz r0, 0x1878(r3)
+/* 803060C4 00301D24 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 803060C8 00301D28 40 82 00 44 */ bne lbl_8030610C
+/* 803060CC 00301D2C 80 63 18 8C */ lwz r3, 0x188c(r3)
+/* 803060D0 00301D30 48 00 1A 4D */ bl VFipdm_part_get_permission
+/* 803060D4 00301D34 2C 03 00 00 */ cmpwi r3, 0
+/* 803060D8 00301D38 41 82 00 34 */ beq lbl_8030610C
+/* 803060DC 00301D3C 2C 03 00 15 */ cmpwi r3, 0x15
+/* 803060E0 00301D40 40 82 00 24 */ bne lbl_80306104
+/* 803060E4 00301D44 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 803060E8 00301D48 48 00 26 ED */ bl VFipdm_part_get_driver_error_code
+/* 803060EC 00301D4C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803060F0 00301D50 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803060F4 00301D54 90 64 00 20 */ stw r3, 0x20(r4)
+/* 803060F8 00301D58 90 7E 18 70 */ stw r3, 0x1870(r30)
+/* 803060FC 00301D5C 38 60 10 00 */ li r3, 0x1000
+/* 80306100 00301D60 48 00 00 A4 */ b lbl_803061A4
+lbl_80306104:
+/* 80306104 00301D64 38 60 FF FF */ li r3, -1
+/* 80306108 00301D68 48 00 00 9C */ b lbl_803061A4
+lbl_8030610C:
+/* 8030610C 00301D6C 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 80306110 00301D70 7F E4 FB 78 */ mr r4, r31
+/* 80306114 00301D74 48 00 1D 79 */ bl VFipdm_part_format
+/* 80306118 00301D78 2C 03 00 00 */ cmpwi r3, 0
+/* 8030611C 00301D7C 41 82 00 34 */ beq lbl_80306150
+/* 80306120 00301D80 2C 03 00 15 */ cmpwi r3, 0x15
+/* 80306124 00301D84 40 82 00 24 */ bne lbl_80306148
+/* 80306128 00301D88 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 8030612C 00301D8C 48 00 26 A9 */ bl VFipdm_part_get_driver_error_code
+/* 80306130 00301D90 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80306134 00301D94 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80306138 00301D98 90 64 00 20 */ stw r3, 0x20(r4)
+/* 8030613C 00301D9C 90 7E 18 70 */ stw r3, 0x1870(r30)
+/* 80306140 00301DA0 38 60 10 00 */ li r3, 0x1000
+/* 80306144 00301DA4 48 00 00 60 */ b lbl_803061A4
+lbl_80306148:
+/* 80306148 00301DA8 38 60 FF FF */ li r3, -1
+/* 8030614C 00301DAC 48 00 00 58 */ b lbl_803061A4
+lbl_80306150:
+/* 80306150 00301DB0 A0 1E 18 78 */ lhz r0, 0x1878(r30)
+/* 80306154 00301DB4 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80306158 00301DB8 40 82 00 48 */ bne lbl_803061A0
+/* 8030615C 00301DBC 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 80306160 00301DC0 38 80 00 01 */ li r4, 1
+/* 80306164 00301DC4 48 00 1B 9D */ bl VFipdm_part_release_permission
+/* 80306168 00301DC8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030616C 00301DCC 41 82 00 34 */ beq lbl_803061A0
+/* 80306170 00301DD0 2C 03 00 15 */ cmpwi r3, 0x15
+/* 80306174 00301DD4 40 82 00 24 */ bne lbl_80306198
+/* 80306178 00301DD8 80 7E 18 8C */ lwz r3, 0x188c(r30)
+/* 8030617C 00301DDC 48 00 26 59 */ bl VFipdm_part_get_driver_error_code
+/* 80306180 00301DE0 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80306184 00301DE4 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80306188 00301DE8 90 64 00 20 */ stw r3, 0x20(r4)
+/* 8030618C 00301DEC 90 7E 18 70 */ stw r3, 0x1870(r30)
+/* 80306190 00301DF0 38 60 10 00 */ li r3, 0x1000
+/* 80306194 00301DF4 48 00 00 10 */ b lbl_803061A4
+lbl_80306198:
+/* 80306198 00301DF8 38 60 FF FF */ li r3, -1
+/* 8030619C 00301DFC 48 00 00 08 */ b lbl_803061A4
+lbl_803061A0:
+/* 803061A0 00301E00 38 60 00 00 */ li r3, 0
+lbl_803061A4:
+/* 803061A4 00301E04 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 803061A8 00301E08 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 803061AC 00301E0C 83 C1 00 08 */ lwz r30, 8(r1)
+/* 803061B0 00301E10 7C 08 03 A6 */ mtlr r0
+/* 803061B4 00301E14 38 21 00 10 */ addi r1, r1, 0x10
+/* 803061B8 00301E18 4E 80 00 20 */ blr
+
+.global VFiPFDRV_lread
+VFiPFDRV_lread:
+/* 803061BC 00301E1C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803061C0 00301E20 7C 08 02 A6 */ mflr r0
+/* 803061C4 00301E24 2C 03 00 00 */ cmpwi r3, 0
+/* 803061C8 00301E28 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803061CC 00301E2C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 803061D0 00301E30 7C 7F 1B 78 */ mr r31, r3
+/* 803061D4 00301E34 40 82 00 0C */ bne lbl_803061E0
+/* 803061D8 00301E38 38 60 00 0A */ li r3, 0xa
+/* 803061DC 00301E3C 48 00 00 50 */ b lbl_8030622C
+lbl_803061E0:
+/* 803061E0 00301E40 7C E8 3B 78 */ mr r8, r7
+/* 803061E4 00301E44 80 63 18 8C */ lwz r3, 0x188c(r3)
+/* 803061E8 00301E48 A0 FF 00 00 */ lhz r7, 0(r31)
+/* 803061EC 00301E4C 48 00 1D ED */ bl VFipdm_part_logical_read
+/* 803061F0 00301E50 2C 03 00 00 */ cmpwi r3, 0
+/* 803061F4 00301E54 41 82 00 34 */ beq lbl_80306228
+/* 803061F8 00301E58 2C 03 00 15 */ cmpwi r3, 0x15
+/* 803061FC 00301E5C 40 82 00 24 */ bne lbl_80306220
+/* 80306200 00301E60 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80306204 00301E64 48 00 25 D1 */ bl VFipdm_part_get_driver_error_code
+/* 80306208 00301E68 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 8030620C 00301E6C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80306210 00301E70 90 64 00 20 */ stw r3, 0x20(r4)
+/* 80306214 00301E74 90 7F 18 70 */ stw r3, 0x1870(r31)
+/* 80306218 00301E78 38 60 10 00 */ li r3, 0x1000
+/* 8030621C 00301E7C 48 00 00 10 */ b lbl_8030622C
+lbl_80306220:
+/* 80306220 00301E80 38 60 FF FF */ li r3, -1
+/* 80306224 00301E84 48 00 00 08 */ b lbl_8030622C
+lbl_80306228:
+/* 80306228 00301E88 38 60 00 00 */ li r3, 0
+lbl_8030622C:
+/* 8030622C 00301E8C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80306230 00301E90 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80306234 00301E94 7C 08 03 A6 */ mtlr r0
+/* 80306238 00301E98 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030623C 00301E9C 4E 80 00 20 */ blr
+
+.global VFiPFDRV_lwrite
+VFiPFDRV_lwrite:
+/* 80306240 00301EA0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80306244 00301EA4 7C 08 02 A6 */ mflr r0
+/* 80306248 00301EA8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030624C 00301EAC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80306250 00301EB0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80306254 00301EB4 7C 7F 1B 78 */ mr r31, r3
+/* 80306258 00301EB8 40 82 00 0C */ bne lbl_80306264
+/* 8030625C 00301EBC 38 60 00 0A */ li r3, 0xa
+/* 80306260 00301EC0 48 00 00 50 */ b lbl_803062B0
+lbl_80306264:
+/* 80306264 00301EC4 7C E8 3B 78 */ mr r8, r7
+/* 80306268 00301EC8 80 63 18 8C */ lwz r3, 0x188c(r3)
+/* 8030626C 00301ECC A0 FF 00 00 */ lhz r7, 0(r31)
+/* 80306270 00301ED0 48 00 1F 31 */ bl VFipdm_part_logical_write
+/* 80306274 00301ED4 2C 03 00 00 */ cmpwi r3, 0
+/* 80306278 00301ED8 41 82 00 34 */ beq lbl_803062AC
+/* 8030627C 00301EDC 2C 03 00 15 */ cmpwi r3, 0x15
+/* 80306280 00301EE0 40 82 00 24 */ bne lbl_803062A4
+/* 80306284 00301EE4 80 7F 18 8C */ lwz r3, 0x188c(r31)
+/* 80306288 00301EE8 48 00 25 4D */ bl VFipdm_part_get_driver_error_code
+/* 8030628C 00301EEC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80306290 00301EF0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80306294 00301EF4 90 64 00 20 */ stw r3, 0x20(r4)
+/* 80306298 00301EF8 90 7F 18 70 */ stw r3, 0x1870(r31)
+/* 8030629C 00301EFC 38 60 10 00 */ li r3, 0x1000
+/* 803062A0 00301F00 48 00 00 10 */ b lbl_803062B0
+lbl_803062A4:
+/* 803062A4 00301F04 38 60 FF FF */ li r3, -1
+/* 803062A8 00301F08 48 00 00 08 */ b lbl_803062B0
+lbl_803062AC:
+/* 803062AC 00301F0C 38 60 00 00 */ li r3, 0
+lbl_803062B0:
+/* 803062B0 00301F10 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 803062B4 00301F14 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 803062B8 00301F18 7C 08 03 A6 */ mtlr r0
+/* 803062BC 00301F1C 38 21 00 10 */ addi r1, r1, 0x10
+/* 803062C0 00301F20 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_entry.s b/asm/SDK/VF/pf_entry.s new file mode 100644 index 0000000..eb2c835 --- /dev/null +++ b/asm/SDK/VF/pf_entry.s @@ -0,0 +1,1818 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFENT_compareAttr
+VFiPFENT_compareAttr:
+/* 8030B2C8 00306F28 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B2CC 00306F2C 38 C0 00 01 */ li r6, 1
+/* 8030B2D0 00306F30 40 82 00 08 */ bne lbl_8030B2D8
+/* 8030B2D4 00306F34 38 60 00 40 */ li r3, 0x40
+lbl_8030B2D8:
+/* 8030B2D8 00306F38 54 80 06 31 */ rlwinm. r0, r4, 0, 0x18, 0x18
+/* 8030B2DC 00306F3C 41 82 00 38 */ beq lbl_8030B314
+/* 8030B2E0 00306F40 54 87 06 7F */ clrlwi. r7, r4, 0x19
+/* 8030B2E4 00306F44 54 A4 06 7E */ clrlwi r4, r5, 0x19
+/* 8030B2E8 00306F48 41 82 00 10 */ beq lbl_8030B2F8
+/* 8030B2EC 00306F4C 7C E0 18 38 */ and r0, r7, r3
+/* 8030B2F0 00306F50 7C 07 00 00 */ cmpw r7, r0
+/* 8030B2F4 00306F54 40 82 00 18 */ bne lbl_8030B30C
+lbl_8030B2F8:
+/* 8030B2F8 00306F58 2C 04 00 00 */ cmpwi r4, 0
+/* 8030B2FC 00306F5C 41 82 00 3C */ beq lbl_8030B338
+/* 8030B300 00306F60 7C 80 18 38 */ and r0, r4, r3
+/* 8030B304 00306F64 7C 04 00 00 */ cmpw r4, r0
+/* 8030B308 00306F68 40 82 00 30 */ bne lbl_8030B338
+lbl_8030B30C:
+/* 8030B30C 00306F6C 38 C0 00 00 */ li r6, 0
+/* 8030B310 00306F70 48 00 00 28 */ b lbl_8030B338
+lbl_8030B314:
+/* 8030B314 00306F74 28 04 00 7F */ cmplwi r4, 0x7f
+/* 8030B318 00306F78 41 82 00 20 */ beq lbl_8030B338
+/* 8030B31C 00306F7C 7C 03 20 40 */ cmplw r3, r4
+/* 8030B320 00306F80 41 82 00 18 */ beq lbl_8030B338
+/* 8030B324 00306F84 7C 60 20 39 */ and. r0, r3, r4
+/* 8030B328 00306F88 41 82 00 0C */ beq lbl_8030B334
+/* 8030B32C 00306F8C 7C 60 28 39 */ and. r0, r3, r5
+/* 8030B330 00306F90 41 82 00 08 */ beq lbl_8030B338
+lbl_8030B334:
+/* 8030B334 00306F94 38 C0 00 00 */ li r6, 0
+lbl_8030B338:
+/* 8030B338 00306F98 7C C3 33 78 */ mr r3, r6
+/* 8030B33C 00306F9C 4E 80 00 20 */ blr
+
+.global VFiPFENT_compareEntryName
+VFiPFENT_compareEntryName:
+/* 8030B340 00306FA0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030B344 00306FA4 7C 08 02 A6 */ mflr r0
+/* 8030B348 00306FA8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030B34C 00306FAC 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 8030B350 00306FB0 3B E0 00 01 */ li r31, 1
+/* 8030B354 00306FB4 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 8030B358 00306FB8 7C BE 2B 78 */ mr r30, r5
+/* 8030B35C 00306FBC 93 A1 00 24 */ stw r29, 0x24(r1)
+/* 8030B360 00306FC0 7C 9D 23 78 */ mr r29, r4
+/* 8030B364 00306FC4 93 81 00 20 */ stw r28, 0x20(r1)
+/* 8030B368 00306FC8 7C 7C 1B 78 */ mr r28, r3
+/* 8030B36C 00306FCC 88 03 02 0A */ lbz r0, 0x20a(r3)
+/* 8030B370 00306FD0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030B374 00306FD4 41 82 00 84 */ beq lbl_8030B3F8
+/* 8030B378 00306FD8 88 03 02 0B */ lbz r0, 0x20b(r3)
+/* 8030B37C 00306FDC 28 00 00 01 */ cmplwi r0, 1
+/* 8030B380 00306FE0 40 82 00 78 */ bne lbl_8030B3F8
+/* 8030B384 00306FE4 38 61 00 08 */ addi r3, r1, 8
+/* 8030B388 00306FE8 38 9C 02 0E */ addi r4, r28, 0x20e
+/* 8030B38C 00306FEC 38 A0 00 00 */ li r5, 0
+/* 8030B390 00306FF0 48 00 BE B9 */ bl VFiPFPATH_putShortName
+/* 8030B394 00306FF4 38 00 00 0B */ li r0, 0xb
+/* 8030B398 00306FF8 38 C1 00 08 */ addi r6, r1, 8
+/* 8030B39C 00306FFC 38 80 00 00 */ li r4, 0
+/* 8030B3A0 00307000 38 E0 00 00 */ li r7, 0
+/* 8030B3A4 00307004 7C 09 03 A6 */ mtctr r0
+lbl_8030B3A8:
+/* 8030B3A8 00307008 54 E3 04 3E */ clrlwi r3, r7, 0x10
+/* 8030B3AC 0030700C 54 80 07 FE */ clrlwi r0, r4, 0x1f
+/* 8030B3B0 00307010 7C A6 18 AE */ lbzx r5, r6, r3
+/* 8030B3B4 00307014 7C 00 00 D0 */ neg r0, r0
+/* 8030B3B8 00307018 54 84 FE 7E */ rlwinm r4, r4, 0x1f, 0x19, 0x1f
+/* 8030B3BC 0030701C 38 E7 00 01 */ addi r7, r7, 1
+/* 8030B3C0 00307020 54 03 06 30 */ rlwinm r3, r0, 0, 0x18, 0x18
+/* 8030B3C4 00307024 7C 05 22 14 */ add r0, r5, r4
+/* 8030B3C8 00307028 7C 03 02 14 */ add r0, r3, r0
+/* 8030B3CC 0030702C 54 04 06 3E */ clrlwi r4, r0, 0x18
+/* 8030B3D0 00307030 42 00 FF D8 */ bdnz lbl_8030B3A8
+/* 8030B3D4 00307034 88 1C 02 0C */ lbz r0, 0x20c(r28)
+/* 8030B3D8 00307038 7C 00 20 40 */ cmplw r0, r4
+/* 8030B3DC 0030703C 40 82 00 1C */ bne lbl_8030B3F8
+/* 8030B3E0 00307040 7F 83 E3 78 */ mr r3, r28
+/* 8030B3E4 00307044 7F A4 EB 78 */ mr r4, r29
+/* 8030B3E8 00307048 48 00 B5 5D */ bl VFiPFPATH_cmpNameUni
+/* 8030B3EC 0030704C 7C 03 00 D0 */ neg r0, r3
+/* 8030B3F0 00307050 7C 00 1B 78 */ or r0, r0, r3
+/* 8030B3F4 00307054 54 1F 0F FE */ srwi r31, r0, 0x1f
+lbl_8030B3F8:
+/* 8030B3F8 00307058 2C 1F 00 01 */ cmpwi r31, 1
+/* 8030B3FC 0030705C 40 82 00 60 */ bne lbl_8030B45C
+/* 8030B400 00307060 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 8030B404 00307064 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 8030B408 00307068 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 8030B40C 0030706C 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030B410 00307070 28 00 00 02 */ cmplwi r0, 2
+/* 8030B414 00307074 40 82 00 2C */ bne lbl_8030B440
+/* 8030B418 00307078 57 C0 07 39 */ rlwinm. r0, r30, 0, 0x1c, 0x1c
+/* 8030B41C 0030707C 40 82 00 24 */ bne lbl_8030B440
+/* 8030B420 00307080 7F A4 EB 78 */ mr r4, r29
+/* 8030B424 00307084 38 7C 02 0E */ addi r3, r28, 0x20e
+/* 8030B428 00307088 38 A0 00 00 */ li r5, 0
+/* 8030B42C 0030708C 48 00 B5 45 */ bl VFiPFPATH_cmpName
+/* 8030B430 00307090 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B434 00307094 40 82 00 28 */ bne lbl_8030B45C
+/* 8030B438 00307098 3B E0 00 00 */ li r31, 0
+/* 8030B43C 0030709C 48 00 00 20 */ b lbl_8030B45C
+lbl_8030B440:
+/* 8030B440 003070A0 7F A4 EB 78 */ mr r4, r29
+/* 8030B444 003070A4 38 7C 02 0E */ addi r3, r28, 0x20e
+/* 8030B448 003070A8 38 A0 00 01 */ li r5, 1
+/* 8030B44C 003070AC 48 00 B5 25 */ bl VFiPFPATH_cmpName
+/* 8030B450 003070B0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B454 003070B4 40 82 00 08 */ bne lbl_8030B45C
+/* 8030B458 003070B8 3B E0 00 00 */ li r31, 0
+lbl_8030B45C:
+/* 8030B45C 003070BC 7F E3 FB 78 */ mr r3, r31
+/* 8030B460 003070C0 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 8030B464 003070C4 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 8030B468 003070C8 83 A1 00 24 */ lwz r29, 0x24(r1)
+/* 8030B46C 003070CC 83 81 00 20 */ lwz r28, 0x20(r1)
+/* 8030B470 003070D0 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030B474 003070D4 7C 08 03 A6 */ mtlr r0
+/* 8030B478 003070D8 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030B47C 003070DC 4E 80 00 20 */ blr
+
+.global VFiPFENT_getEntry
+VFiPFENT_getEntry:
+/* 8030B480 003070E0 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030B484 003070E4 7C 08 02 A6 */ mflr r0
+/* 8030B488 003070E8 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030B48C 003070EC 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030B490 003070F0 4B EB BC 95 */ bl _savegpr_26
+/* 8030B494 003070F4 8B 84 00 57 */ lbz r28, 0x57(r4)
+/* 8030B498 003070F8 7C 7E 1B 78 */ mr r30, r3
+/* 8030B49C 003070FC 7C 9F 23 78 */ mr r31, r4
+/* 8030B4A0 00307100 7C BA 2B 78 */ mr r26, r5
+/* 8030B4A4 00307104 57 9D 07 3E */ clrlwi r29, r28, 0x1c
+/* 8030B4A8 00307108 7D 1B 43 78 */ mr r27, r8
+/* 8030B4AC 0030710C 2C 1D 00 0F */ cmpwi r29, 0xf
+/* 8030B4B0 00307110 40 82 00 0C */ bne lbl_8030B4BC
+/* 8030B4B4 00307114 38 60 00 01 */ li r3, 1
+/* 8030B4B8 00307118 48 00 00 80 */ b lbl_8030B538
+lbl_8030B4BC:
+/* 8030B4BC 0030711C 7F 83 E3 78 */ mr r3, r28
+/* 8030B4C0 00307120 7C C4 33 78 */ mr r4, r6
+/* 8030B4C4 00307124 7C E5 3B 78 */ mr r5, r7
+/* 8030B4C8 00307128 4B FF FE 01 */ bl VFiPFENT_compareAttr
+/* 8030B4CC 0030712C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B4D0 00307130 40 82 00 0C */ bne lbl_8030B4DC
+/* 8030B4D4 00307134 38 60 00 01 */ li r3, 1
+/* 8030B4D8 00307138 48 00 00 60 */ b lbl_8030B538
+lbl_8030B4DC:
+/* 8030B4DC 0030713C 57 80 07 39 */ rlwinm. r0, r28, 0, 0x1c, 0x1c
+/* 8030B4E0 00307140 41 82 00 10 */ beq lbl_8030B4F0
+/* 8030B4E4 00307144 38 00 00 00 */ li r0, 0
+/* 8030B4E8 00307148 98 1E 02 0A */ stb r0, 0x20a(r30)
+/* 8030B4EC 0030714C B0 1E 00 00 */ sth r0, 0(r30)
+lbl_8030B4F0:
+/* 8030B4F0 00307150 88 BF 00 57 */ lbz r5, 0x57(r31)
+/* 8030B4F4 00307154 38 7E 02 0E */ addi r3, r30, 0x20e
+/* 8030B4F8 00307158 38 9F 00 4C */ addi r4, r31, 0x4c
+/* 8030B4FC 0030715C 48 00 BE D5 */ bl VFiPFPATH_getShortName
+/* 8030B500 00307160 88 1E 02 0E */ lbz r0, 0x20e(r30)
+/* 8030B504 00307164 2C 00 00 05 */ cmpwi r0, 5
+/* 8030B508 00307168 40 82 00 0C */ bne lbl_8030B514
+/* 8030B50C 0030716C 38 00 FF E5 */ li r0, -27
+/* 8030B510 00307170 98 1E 02 0E */ stb r0, 0x20e(r30)
+lbl_8030B514:
+/* 8030B514 00307174 7F C3 F3 78 */ mr r3, r30
+/* 8030B518 00307178 7F 44 D3 78 */ mr r4, r26
+/* 8030B51C 0030717C 7F 85 E3 78 */ mr r5, r28
+/* 8030B520 00307180 4B FF FE 21 */ bl VFiPFENT_compareEntryName
+/* 8030B524 00307184 2C 03 00 01 */ cmpwi r3, 1
+/* 8030B528 00307188 40 82 00 10 */ bne lbl_8030B538
+/* 8030B52C 0030718C 80 9B 00 00 */ lwz r4, 0(r27)
+/* 8030B530 00307190 38 04 00 01 */ addi r0, r4, 1
+/* 8030B534 00307194 90 1B 00 00 */ stw r0, 0(r27)
+lbl_8030B538:
+/* 8030B538 00307198 2C 03 00 01 */ cmpwi r3, 1
+/* 8030B53C 0030719C 40 82 00 44 */ bne lbl_8030B580
+/* 8030B540 003071A0 2C 1D 00 0F */ cmpwi r29, 0xf
+/* 8030B544 003071A4 40 82 00 28 */ bne lbl_8030B56C
+/* 8030B548 003071A8 7F C3 F3 78 */ mr r3, r30
+/* 8030B54C 003071AC 38 9F 00 4C */ addi r4, r31, 0x4c
+/* 8030B550 003071B0 48 00 07 BD */ bl VFiPFENT_LoadLFNEntryFieldsFromBuf
+/* 8030B554 003071B4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B558 003071B8 41 82 00 20 */ beq lbl_8030B578
+/* 8030B55C 003071BC 38 00 00 00 */ li r0, 0
+/* 8030B560 003071C0 98 1E 02 0A */ stb r0, 0x20a(r30)
+/* 8030B564 003071C4 B0 1E 00 00 */ sth r0, 0(r30)
+/* 8030B568 003071C8 48 00 00 10 */ b lbl_8030B578
+lbl_8030B56C:
+/* 8030B56C 003071CC 38 00 00 00 */ li r0, 0
+/* 8030B570 003071D0 98 1E 02 0A */ stb r0, 0x20a(r30)
+/* 8030B574 003071D4 B0 1E 00 00 */ sth r0, 0(r30)
+lbl_8030B578:
+/* 8030B578 003071D8 38 60 FF FF */ li r3, -1
+/* 8030B57C 003071DC 48 00 01 8C */ b lbl_8030B708
+lbl_8030B580:
+/* 8030B580 003071E0 88 1E 02 0A */ lbz r0, 0x20a(r30)
+/* 8030B584 003071E4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030B588 003071E8 40 82 00 C4 */ bne lbl_8030B64C
+/* 8030B58C 003071EC 88 BF 00 58 */ lbz r5, 0x58(r31)
+/* 8030B590 003071F0 54 A0 06 F9 */ rlwinm. r0, r5, 0, 0x1b, 0x1c
+/* 8030B594 003071F4 41 82 00 B8 */ beq lbl_8030B64C
+/* 8030B598 003071F8 38 7E 02 0E */ addi r3, r30, 0x20e
+/* 8030B59C 003071FC 38 81 00 18 */ addi r4, r1, 0x18
+/* 8030B5A0 00307200 48 00 C0 8D */ bl VFiPFPATH_getLongNameformShortName
+/* 8030B5A4 00307204 7F C3 F3 78 */ mr r3, r30
+/* 8030B5A8 00307208 38 81 00 18 */ addi r4, r1, 0x18
+/* 8030B5AC 0030720C 48 00 C4 61 */ bl VFiPFPATH_transformInUnicode
+/* 8030B5B0 00307210 3C A0 4E C5 */ lis r5, 0x4EC4EC4F@ha
+/* 8030B5B4 00307214 38 9E 02 0E */ addi r4, r30, 0x20e
+/* 8030B5B8 00307218 38 05 EC 4F */ addi r0, r5, 0x4EC4EC4F@l
+/* 8030B5BC 0030721C 7C 00 18 96 */ mulhw r0, r0, r3
+/* 8030B5C0 00307220 38 A0 00 00 */ li r5, 0
+/* 8030B5C4 00307224 7C 07 16 70 */ srawi r7, r0, 2
+/* 8030B5C8 00307228 7C 00 16 70 */ srawi r0, r0, 2
+/* 8030B5CC 0030722C 54 06 0F FE */ srwi r6, r0, 0x1f
+/* 8030B5D0 00307230 54 E8 0F FE */ srwi r8, r7, 0x1f
+/* 8030B5D4 00307234 7C 00 32 14 */ add r0, r0, r6
+/* 8030B5D8 00307238 1C 00 00 0D */ mulli r0, r0, 0xd
+/* 8030B5DC 0030723C 7C E7 42 14 */ add r7, r7, r8
+/* 8030B5E0 00307240 7C C0 18 50 */ subf r6, r0, r3
+/* 8030B5E4 00307244 38 61 00 08 */ addi r3, r1, 8
+/* 8030B5E8 00307248 7C 06 00 D0 */ neg r0, r6
+/* 8030B5EC 0030724C 7C 00 33 78 */ or r0, r0, r6
+/* 8030B5F0 00307250 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 8030B5F4 00307254 7C 07 02 14 */ add r0, r7, r0
+/* 8030B5F8 00307258 98 1E 02 0A */ stb r0, 0x20a(r30)
+/* 8030B5FC 0030725C 48 00 BC 4D */ bl VFiPFPATH_putShortName
+/* 8030B600 00307260 38 00 00 0B */ li r0, 0xb
+/* 8030B604 00307264 38 C1 00 08 */ addi r6, r1, 8
+/* 8030B608 00307268 38 80 00 00 */ li r4, 0
+/* 8030B60C 0030726C 38 E0 00 00 */ li r7, 0
+/* 8030B610 00307270 7C 09 03 A6 */ mtctr r0
+lbl_8030B614:
+/* 8030B614 00307274 54 E3 04 3E */ clrlwi r3, r7, 0x10
+/* 8030B618 00307278 54 80 07 FE */ clrlwi r0, r4, 0x1f
+/* 8030B61C 0030727C 7C A6 18 AE */ lbzx r5, r6, r3
+/* 8030B620 00307280 7C 00 00 D0 */ neg r0, r0
+/* 8030B624 00307284 54 84 FE 7E */ rlwinm r4, r4, 0x1f, 0x19, 0x1f
+/* 8030B628 00307288 38 E7 00 01 */ addi r7, r7, 1
+/* 8030B62C 0030728C 54 03 06 30 */ rlwinm r3, r0, 0, 0x18, 0x18
+/* 8030B630 00307290 7C 05 22 14 */ add r0, r5, r4
+/* 8030B634 00307294 7C 03 02 14 */ add r0, r3, r0
+/* 8030B638 00307298 54 04 06 3E */ clrlwi r4, r0, 0x18
+/* 8030B63C 0030729C 42 00 FF D8 */ bdnz lbl_8030B614
+/* 8030B640 003072A0 38 00 00 01 */ li r0, 1
+/* 8030B644 003072A4 98 9E 02 0C */ stb r4, 0x20c(r30)
+/* 8030B648 003072A8 98 1E 02 0B */ stb r0, 0x20b(r30)
+lbl_8030B64C:
+/* 8030B64C 003072AC 88 1F 00 57 */ lbz r0, 0x57(r31)
+/* 8030B650 003072B0 38 DE 02 1E */ addi r6, r30, 0x21e
+/* 8030B654 003072B4 38 BE 02 20 */ addi r5, r30, 0x220
+/* 8030B658 003072B8 38 9E 02 22 */ addi r4, r30, 0x222
+/* 8030B65C 003072BC 98 1E 02 1C */ stb r0, 0x21c(r30)
+/* 8030B660 003072C0 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030B664 003072C4 38 7E 02 24 */ addi r3, r30, 0x224
+/* 8030B668 003072C8 88 FF 00 58 */ lbz r7, 0x58(r31)
+/* 8030B66C 003072CC 38 1E 02 26 */ addi r0, r30, 0x226
+/* 8030B670 003072D0 98 FE 02 1B */ stb r7, 0x21b(r30)
+/* 8030B674 003072D4 88 FF 00 59 */ lbz r7, 0x59(r31)
+/* 8030B678 003072D8 98 FE 02 1D */ stb r7, 0x21d(r30)
+/* 8030B67C 003072DC A0 FF 00 5A */ lhz r7, 0x5a(r31)
+/* 8030B680 003072E0 7C E0 37 2C */ sthbrx r7, 0, r6
+/* 8030B684 003072E4 A0 DF 00 5C */ lhz r6, 0x5c(r31)
+/* 8030B688 003072E8 7C C0 2F 2C */ sthbrx r6, 0, r5
+/* 8030B68C 003072EC A0 BF 00 5E */ lhz r5, 0x5e(r31)
+/* 8030B690 003072F0 7C A0 27 2C */ sthbrx r5, 0, r4
+/* 8030B694 003072F4 A0 9F 00 62 */ lhz r4, 0x62(r31)
+/* 8030B698 003072F8 7C 80 1F 2C */ sthbrx r4, 0, r3
+/* 8030B69C 003072FC A0 7F 00 64 */ lhz r3, 0x64(r31)
+/* 8030B6A0 00307300 7C 60 07 2C */ sthbrx r3, 0, r0
+/* 8030B6A4 00307304 80 9F 00 68 */ lwz r4, 0x68(r31)
+/* 8030B6A8 00307308 54 83 42 1E */ rlwinm r3, r4, 8, 8, 0xf
+/* 8030B6AC 0030730C 54 80 C4 2E */ rlwinm r0, r4, 0x18, 0x10, 0x17
+/* 8030B6B0 00307310 50 83 C0 0E */ rlwimi r3, r4, 0x18, 0, 7
+/* 8030B6B4 00307314 50 80 46 3E */ rlwimi r0, r4, 8, 0x18, 0x1f
+/* 8030B6B8 00307318 7C 60 03 78 */ or r0, r3, r0
+/* 8030B6BC 0030731C 90 1E 02 28 */ stw r0, 0x228(r30)
+/* 8030B6C0 00307320 A0 BF 00 60 */ lhz r5, 0x60(r31)
+/* 8030B6C4 00307324 A0 9F 00 66 */ lhz r4, 0x66(r31)
+/* 8030B6C8 00307328 54 A0 44 2E */ rlwinm r0, r5, 8, 0x10, 0x17
+/* 8030B6CC 0030732C 54 83 44 2E */ rlwinm r3, r4, 8, 0x10, 0x17
+/* 8030B6D0 00307330 50 A0 C6 3E */ rlwimi r0, r5, 0x18, 0x18, 0x1f
+/* 8030B6D4 00307334 50 83 C6 3E */ rlwimi r3, r4, 0x18, 0x18, 0x1f
+/* 8030B6D8 00307338 50 03 80 1E */ rlwimi r3, r0, 0x10, 0, 0xf
+/* 8030B6DC 0030733C 90 7E 02 34 */ stw r3, 0x234(r30)
+/* 8030B6E0 00307340 80 1F 00 44 */ lwz r0, 0x44(r31)
+/* 8030B6E4 00307344 90 1E 02 38 */ stw r0, 0x238(r30)
+/* 8030B6E8 00307348 A0 1F 00 48 */ lhz r0, 0x48(r31)
+/* 8030B6EC 0030734C B0 1E 02 3C */ sth r0, 0x23c(r30)
+/* 8030B6F0 00307350 41 82 00 14 */ beq lbl_8030B704
+/* 8030B6F4 00307354 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B6F8 00307358 40 82 00 0C */ bne lbl_8030B704
+/* 8030B6FC 0030735C 38 00 00 01 */ li r0, 1
+/* 8030B700 00307360 90 1E 02 34 */ stw r0, 0x234(r30)
+lbl_8030B704:
+/* 8030B704 00307364 38 60 00 00 */ li r3, 0
+lbl_8030B708:
+/* 8030B708 00307368 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030B70C 0030736C 4B EB BA 65 */ bl _restgpr_26
+/* 8030B710 00307370 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030B714 00307374 7C 08 03 A6 */ mtlr r0
+/* 8030B718 00307378 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030B71C 0030737C 4E 80 00 20 */ blr
+
+.global VFiPFENT_searchEmptyTailSFN
+VFiPFENT_searchEmptyTailSFN:
+/* 8030B720 00307380 94 21 FF 40 */ stwu r1, -0xc0(r1)
+/* 8030B724 00307384 7C 08 02 A6 */ mflr r0
+/* 8030B728 00307388 90 01 00 C4 */ stw r0, 0xc4(r1)
+/* 8030B72C 0030738C 39 61 00 C0 */ addi r11, r1, 0xc0
+/* 8030B730 00307390 4B EB B9 F1 */ bl _savegpr_25
+/* 8030B734 00307394 83 A3 00 34 */ lwz r29, 0x34(r3)
+/* 8030B738 00307398 7C 9A 23 78 */ mr r26, r4
+/* 8030B73C 0030739C 7C DC 33 78 */ mr r28, r6
+/* 8030B740 003073A0 7C 7E 1B 78 */ mr r30, r3
+/* 8030B744 003073A4 80 1D 18 60 */ lwz r0, 0x1860(r29)
+/* 8030B748 003073A8 7C BB 2B 78 */ mr r27, r5
+/* 8030B74C 003073AC 7F 83 E3 78 */ mr r3, r28
+/* 8030B750 003073B0 38 80 00 00 */ li r4, 0
+/* 8030B754 003073B4 54 05 10 3A */ slwi r5, r0, 2
+/* 8030B758 003073B8 4B FF 98 7D */ bl VFipf_memset
+/* 8030B75C 003073BC 80 BE 00 00 */ lwz r5, 0(r30)
+/* 8030B760 003073C0 38 61 00 28 */ addi r3, r1, 0x28
+/* 8030B764 003073C4 80 1E 00 04 */ lwz r0, 4(r30)
+/* 8030B768 003073C8 38 80 00 00 */ li r4, 0
+/* 8030B76C 003073CC 90 A1 00 30 */ stw r5, 0x30(r1)
+/* 8030B770 003073D0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030B774 003073D4 80 BE 00 08 */ lwz r5, 8(r30)
+/* 8030B778 003073D8 80 1E 00 0C */ lwz r0, 0xc(r30)
+/* 8030B77C 003073DC 90 A1 00 38 */ stw r5, 0x38(r1)
+/* 8030B780 003073E0 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 8030B784 003073E4 80 BE 00 10 */ lwz r5, 0x10(r30)
+/* 8030B788 003073E8 80 1E 00 14 */ lwz r0, 0x14(r30)
+/* 8030B78C 003073EC 90 A1 00 40 */ stw r5, 0x40(r1)
+/* 8030B790 003073F0 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030B794 003073F4 80 BE 00 18 */ lwz r5, 0x18(r30)
+/* 8030B798 003073F8 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 8030B79C 003073FC 90 A1 00 48 */ stw r5, 0x48(r1)
+/* 8030B7A0 00307400 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 8030B7A4 00307404 80 BE 00 20 */ lwz r5, 0x20(r30)
+/* 8030B7A8 00307408 80 1E 00 24 */ lwz r0, 0x24(r30)
+/* 8030B7AC 0030740C 90 A1 00 50 */ stw r5, 0x50(r1)
+/* 8030B7B0 00307410 90 01 00 54 */ stw r0, 0x54(r1)
+/* 8030B7B4 00307414 80 BE 00 28 */ lwz r5, 0x28(r30)
+/* 8030B7B8 00307418 80 1E 00 2C */ lwz r0, 0x2c(r30)
+/* 8030B7BC 0030741C 90 A1 00 58 */ stw r5, 0x58(r1)
+/* 8030B7C0 00307420 90 01 00 5C */ stw r0, 0x5c(r1)
+/* 8030B7C4 00307424 80 BE 00 30 */ lwz r5, 0x30(r30)
+/* 8030B7C8 00307428 80 1E 00 34 */ lwz r0, 0x34(r30)
+/* 8030B7CC 0030742C 90 A1 00 60 */ stw r5, 0x60(r1)
+/* 8030B7D0 00307430 90 01 00 64 */ stw r0, 0x64(r1)
+/* 8030B7D4 00307434 48 00 27 25 */ bl VFiPFENT_ITER_IteratorInitialize
+/* 8030B7D8 00307438 7C 7E 1B 78 */ mr r30, r3
+/* 8030B7DC 0030743C 3B E1 00 18 */ addi r31, r1, 0x18
+/* 8030B7E0 00307440 3B 20 00 01 */ li r25, 1
+/* 8030B7E4 00307444 48 00 02 80 */ b lbl_8030BA64
+lbl_8030B7E8:
+/* 8030B7E8 00307448 2C 1E 00 00 */ cmpwi r30, 0
+/* 8030B7EC 0030744C 41 82 00 0C */ beq lbl_8030B7F8
+/* 8030B7F0 00307450 7F C3 F3 78 */ mr r3, r30
+/* 8030B7F4 00307454 48 00 02 84 */ b lbl_8030BA78
+lbl_8030B7F8:
+/* 8030B7F8 00307458 88 01 00 74 */ lbz r0, 0x74(r1)
+/* 8030B7FC 0030745C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030B800 00307460 41 82 02 74 */ beq lbl_8030BA74
+/* 8030B804 00307464 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030B808 00307468 41 82 02 4C */ beq lbl_8030BA54
+/* 8030B80C 0030746C 88 61 00 7F */ lbz r3, 0x7f(r1)
+/* 8030B810 00307470 54 60 07 3E */ clrlwi r0, r3, 0x1c
+/* 8030B814 00307474 2C 00 00 0F */ cmpwi r0, 0xf
+/* 8030B818 00307478 41 82 02 3C */ beq lbl_8030BA54
+/* 8030B81C 0030747C 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
+/* 8030B820 00307480 40 82 02 34 */ bne lbl_8030BA54
+/* 8030B824 00307484 38 61 00 18 */ addi r3, r1, 0x18
+/* 8030B828 00307488 38 81 00 74 */ addi r4, r1, 0x74
+/* 8030B82C 0030748C 38 A0 00 00 */ li r5, 0
+/* 8030B830 00307490 48 00 BB A1 */ bl VFiPFPATH_getShortName
+/* 8030B834 00307494 38 61 00 19 */ addi r3, r1, 0x19
+/* 8030B838 00307498 38 80 00 01 */ li r4, 1
+/* 8030B83C 0030749C 48 00 00 0C */ b lbl_8030B848
+lbl_8030B840:
+/* 8030B840 003074A0 38 63 00 01 */ addi r3, r3, 1
+/* 8030B844 003074A4 38 84 00 01 */ addi r4, r4, 1
+lbl_8030B848:
+/* 8030B848 003074A8 88 03 00 00 */ lbz r0, 0(r3)
+/* 8030B84C 003074AC 7C 00 07 74 */ extsb r0, r0
+/* 8030B850 003074B0 2C 00 00 7E */ cmpwi r0, 0x7e
+/* 8030B854 003074B4 41 82 00 14 */ beq lbl_8030B868
+/* 8030B858 003074B8 2C 00 00 00 */ cmpwi r0, 0
+/* 8030B85C 003074BC 41 82 00 0C */ beq lbl_8030B868
+/* 8030B860 003074C0 28 04 00 07 */ cmplwi r4, 7
+/* 8030B864 003074C4 41 80 FF DC */ blt lbl_8030B840
+lbl_8030B868:
+/* 8030B868 003074C8 28 04 00 07 */ cmplwi r4, 7
+/* 8030B86C 003074CC 40 80 01 E8 */ bge lbl_8030BA54
+/* 8030B870 003074D0 7C 1F 20 AE */ lbzx r0, r31, r4
+/* 8030B874 003074D4 7C 00 07 74 */ extsb r0, r0
+/* 8030B878 003074D8 2C 00 00 7E */ cmpwi r0, 0x7e
+/* 8030B87C 003074DC 40 82 01 D8 */ bne lbl_8030BA54
+/* 8030B880 003074E0 38 E4 00 01 */ addi r7, r4, 1
+/* 8030B884 003074E4 7C 7F 3A 14 */ add r3, r31, r7
+/* 8030B888 003074E8 48 00 00 0C */ b lbl_8030B894
+lbl_8030B88C:
+/* 8030B88C 003074EC 38 63 00 01 */ addi r3, r3, 1
+/* 8030B890 003074F0 38 E7 00 01 */ addi r7, r7, 1
+lbl_8030B894:
+/* 8030B894 003074F4 88 03 00 00 */ lbz r0, 0(r3)
+/* 8030B898 003074F8 7C 00 07 74 */ extsb r0, r0
+/* 8030B89C 003074FC 2C 00 00 30 */ cmpwi r0, 0x30
+/* 8030B8A0 00307500 41 80 00 0C */ blt lbl_8030B8AC
+/* 8030B8A4 00307504 2C 00 00 39 */ cmpwi r0, 0x39
+/* 8030B8A8 00307508 40 81 FF E4 */ ble lbl_8030B88C
+lbl_8030B8AC:
+/* 8030B8AC 0030750C 7C 1F 38 AE */ lbzx r0, r31, r7
+/* 8030B8B0 00307510 7C 00 07 74 */ extsb r0, r0
+/* 8030B8B4 00307514 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 8030B8B8 00307518 41 82 00 0C */ beq lbl_8030B8C4
+/* 8030B8BC 0030751C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030B8C0 00307520 40 82 01 94 */ bne lbl_8030BA54
+lbl_8030B8C4:
+/* 8030B8C4 00307524 7C 04 38 50 */ subf r0, r4, r7
+/* 8030B8C8 00307528 3B C0 00 00 */ li r30, 0
+/* 8030B8CC 0030752C 35 00 FF FF */ addic. r8, r0, -1
+/* 8030B8D0 00307530 7D 03 43 78 */ mr r3, r8
+/* 8030B8D4 00307534 41 82 01 20 */ beq lbl_8030B9F4
+/* 8030B8D8 00307538 55 00 E8 FF */ rlwinm. r0, r8, 0x1d, 3, 0x1f
+/* 8030B8DC 0030753C 7C 09 03 A6 */ mtctr r0
+/* 8030B8E0 00307540 41 82 00 F0 */ beq lbl_8030B9D0
+lbl_8030B8E4:
+/* 8030B8E4 00307544 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B8E8 00307548 39 08 FF FF */ addi r8, r8, -1
+/* 8030B8EC 0030754C 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B8F0 00307550 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B8F4 00307554 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B8F8 00307558 7C A0 07 74 */ extsb r0, r5
+/* 8030B8FC 0030755C 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B900 00307560 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B904 00307564 39 08 FF FF */ addi r8, r8, -1
+/* 8030B908 00307568 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B90C 0030756C 7C A0 07 74 */ extsb r0, r5
+/* 8030B910 00307570 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B914 00307574 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B918 00307578 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B91C 0030757C 39 08 FF FF */ addi r8, r8, -1
+/* 8030B920 00307580 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B924 00307584 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B928 00307588 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B92C 0030758C 7C A0 07 74 */ extsb r0, r5
+/* 8030B930 00307590 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B934 00307594 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B938 00307598 39 08 FF FF */ addi r8, r8, -1
+/* 8030B93C 0030759C 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B940 003075A0 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B944 003075A4 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B948 003075A8 7C A0 07 74 */ extsb r0, r5
+/* 8030B94C 003075AC 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B950 003075B0 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B954 003075B4 39 08 FF FF */ addi r8, r8, -1
+/* 8030B958 003075B8 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B95C 003075BC 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B960 003075C0 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B964 003075C4 7C A0 07 74 */ extsb r0, r5
+/* 8030B968 003075C8 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B96C 003075CC 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B970 003075D0 39 08 FF FF */ addi r8, r8, -1
+/* 8030B974 003075D4 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B978 003075D8 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B97C 003075DC 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B980 003075E0 7C A0 07 74 */ extsb r0, r5
+/* 8030B984 003075E4 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B988 003075E8 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B98C 003075EC 39 08 FF FF */ addi r8, r8, -1
+/* 8030B990 003075F0 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B994 003075F4 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B998 003075F8 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B99C 003075FC 7C A0 07 74 */ extsb r0, r5
+/* 8030B9A0 00307600 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B9A4 00307604 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B9A8 00307608 39 08 FF FF */ addi r8, r8, -1
+/* 8030B9AC 0030760C 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B9B0 00307610 7C A0 07 74 */ extsb r0, r5
+/* 8030B9B4 00307614 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B9B8 00307618 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B9BC 0030761C 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B9C0 00307620 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B9C4 00307624 42 00 FF 20 */ bdnz lbl_8030B8E4
+/* 8030B9C8 00307628 70 63 00 07 */ andi. r3, r3, 7
+/* 8030B9CC 0030762C 41 82 00 28 */ beq lbl_8030B9F4
+lbl_8030B9D0:
+/* 8030B9D0 00307630 7C 69 03 A6 */ mtctr r3
+lbl_8030B9D4:
+/* 8030B9D4 00307634 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B9D8 00307638 39 08 FF FF */ addi r8, r8, -1
+/* 8030B9DC 0030763C 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B9E0 00307640 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B9E4 00307644 7C A0 07 74 */ extsb r0, r5
+/* 8030B9E8 00307648 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B9EC 0030764C 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B9F0 00307650 42 00 FF E4 */ bdnz lbl_8030B9D4
+lbl_8030B9F4:
+/* 8030B9F4 00307654 7F 64 DB 78 */ mr r4, r27
+/* 8030B9F8 00307658 38 61 00 08 */ addi r3, r1, 8
+/* 8030B9FC 0030765C 4B FF 96 F1 */ bl VFipf_strcpy
+/* 8030BA00 00307660 7F C4 F3 78 */ mr r4, r30
+/* 8030BA04 00307664 38 61 00 08 */ addi r3, r1, 8
+/* 8030BA08 00307668 48 00 C7 E5 */ bl VFiPFPATH_parseShortNameNumeric
+/* 8030BA0C 0030766C 38 61 00 18 */ addi r3, r1, 0x18
+/* 8030BA10 00307670 38 81 00 08 */ addi r4, r1, 8
+/* 8030BA14 00307674 48 00 B0 B9 */ bl VFiPFPATH_cmpTailSFN
+/* 8030BA18 00307678 2C 03 00 00 */ cmpwi r3, 0
+/* 8030BA1C 0030767C 40 82 00 38 */ bne lbl_8030BA54
+/* 8030BA20 00307680 7C 1E D0 40 */ cmplw r30, r26
+/* 8030BA24 00307684 41 80 00 30 */ blt lbl_8030BA54
+/* 8030BA28 00307688 80 1D 18 60 */ lwz r0, 0x1860(r29)
+/* 8030BA2C 0030768C 54 00 28 34 */ slwi r0, r0, 5
+/* 8030BA30 00307690 7C 1A 02 14 */ add r0, r26, r0
+/* 8030BA34 00307694 7C 1E 00 40 */ cmplw r30, r0
+/* 8030BA38 00307698 40 80 00 1C */ bge lbl_8030BA54
+/* 8030BA3C 0030769C 7F DA F0 50 */ subf r30, r26, r30
+/* 8030BA40 003076A0 57 C4 E8 FA */ rlwinm r4, r30, 0x1d, 3, 0x1d
+/* 8030BA44 003076A4 7C 7C 20 2E */ lwzx r3, r28, r4
+/* 8030BA48 003076A8 7F 20 F0 30 */ slw r0, r25, r30
+/* 8030BA4C 003076AC 7C 60 03 78 */ or r0, r3, r0
+/* 8030BA50 003076B0 7C 1C 21 2E */ stwx r0, r28, r4
+lbl_8030BA54:
+/* 8030BA54 003076B4 38 61 00 28 */ addi r3, r1, 0x28
+/* 8030BA58 003076B8 38 80 00 00 */ li r4, 0
+/* 8030BA5C 003076BC 48 00 26 AD */ bl VFiPFENT_ITER_Advance
+/* 8030BA60 003076C0 7C 7E 1B 78 */ mr r30, r3
+lbl_8030BA64:
+/* 8030BA64 003076C4 38 61 00 28 */ addi r3, r1, 0x28
+/* 8030BA68 003076C8 48 00 25 95 */ bl VFiPFENT_ITER_IsAtLogicalEnd
+/* 8030BA6C 003076CC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030BA70 003076D0 41 82 FD 78 */ beq lbl_8030B7E8
+lbl_8030BA74:
+/* 8030BA74 003076D4 38 60 00 00 */ li r3, 0
+lbl_8030BA78:
+/* 8030BA78 003076D8 39 61 00 C0 */ addi r11, r1, 0xc0
+/* 8030BA7C 003076DC 4B EB B6 F1 */ bl _restgpr_25
+/* 8030BA80 003076E0 80 01 00 C4 */ lwz r0, 0xc4(r1)
+/* 8030BA84 003076E4 7C 08 03 A6 */ mtlr r0
+/* 8030BA88 003076E8 38 21 00 C0 */ addi r1, r1, 0xc0
+/* 8030BA8C 003076EC 4E 80 00 20 */ blr
+
+.global VFiPFENT_findEmptyTailSFN
+VFiPFENT_findEmptyTailSFN:
+/* 8030BA90 003076F0 94 21 FF 90 */ stwu r1, -0x70(r1)
+/* 8030BA94 003076F4 7C 08 02 A6 */ mflr r0
+/* 8030BA98 003076F8 90 01 00 74 */ stw r0, 0x74(r1)
+/* 8030BA9C 003076FC 39 61 00 70 */ addi r11, r1, 0x70
+/* 8030BAA0 00307700 4B EB B6 85 */ bl _savegpr_26
+/* 8030BAA4 00307704 83 E3 02 2C */ lwz r31, 0x22c(r3)
+/* 8030BAA8 00307708 38 00 00 01 */ li r0, 1
+/* 8030BAAC 0030770C 7C 66 1B 78 */ mr r6, r3
+/* 8030BAB0 00307710 7C 9D 23 78 */ mr r29, r4
+/* 8030BAB4 00307714 90 05 00 00 */ stw r0, 0(r5)
+/* 8030BAB8 00307718 7C BE 2B 78 */ mr r30, r5
+/* 8030BABC 0030771C 38 61 00 18 */ addi r3, r1, 0x18
+/* 8030BAC0 00307720 38 81 00 08 */ addi r4, r1, 8
+/* 8030BAC4 00307724 80 A6 02 2C */ lwz r5, 0x22c(r6)
+/* 8030BAC8 00307728 38 C6 02 34 */ addi r6, r6, 0x234
+/* 8030BACC 0030772C 48 00 55 FD */ bl VFiPFFAT_InitFFD
+/* 8030BAD0 00307730 3F 60 00 0F */ lis r27, 0x000F423F@ha
+/* 8030BAD4 00307734 3B 40 00 01 */ li r26, 1
+/* 8030BAD8 00307738 3B 9B 42 3F */ addi r28, r27, 0x000F423F@l
+/* 8030BADC 0030773C 48 00 00 A8 */ b lbl_8030BB84
+lbl_8030BAE0:
+/* 8030BAE0 00307740 80 DF 18 68 */ lwz r6, 0x1868(r31)
+/* 8030BAE4 00307744 7F 44 D3 78 */ mr r4, r26
+/* 8030BAE8 00307748 7F A5 EB 78 */ mr r5, r29
+/* 8030BAEC 0030774C 38 61 00 18 */ addi r3, r1, 0x18
+/* 8030BAF0 00307750 4B FF FC 31 */ bl VFiPFENT_searchEmptyTailSFN
+/* 8030BAF4 00307754 2C 03 00 00 */ cmpwi r3, 0
+/* 8030BAF8 00307758 41 82 00 08 */ beq lbl_8030BB00
+/* 8030BAFC 0030775C 48 00 00 94 */ b lbl_8030BB90
+lbl_8030BB00:
+/* 8030BB00 00307760 38 A0 00 00 */ li r5, 0
+/* 8030BB04 00307764 38 80 00 00 */ li r4, 0
+/* 8030BB08 00307768 48 00 00 64 */ b lbl_8030BB6C
+lbl_8030BB0C:
+/* 8030BB0C 0030776C 80 7F 18 68 */ lwz r3, 0x1868(r31)
+/* 8030BB10 00307770 7C 63 20 2E */ lwzx r3, r3, r4
+/* 8030BB14 00307774 3C 03 00 01 */ addis r0, r3, 1
+/* 8030BB18 00307778 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030BB1C 0030777C 41 82 00 3C */ beq lbl_8030BB58
+/* 8030BB20 00307780 54 A4 10 3A */ slwi r4, r5, 2
+/* 8030BB24 00307784 48 00 00 1C */ b lbl_8030BB40
+lbl_8030BB28:
+/* 8030BB28 00307788 7C 04 18 2E */ lwzx r0, r4, r3
+/* 8030BB2C 0030778C 54 00 F8 7E */ srwi r0, r0, 1
+/* 8030BB30 00307790 7C 04 19 2E */ stwx r0, r4, r3
+/* 8030BB34 00307794 80 7E 00 00 */ lwz r3, 0(r30)
+/* 8030BB38 00307798 38 03 00 01 */ addi r0, r3, 1
+/* 8030BB3C 0030779C 90 1E 00 00 */ stw r0, 0(r30)
+lbl_8030BB40:
+/* 8030BB40 003077A0 80 7F 18 68 */ lwz r3, 0x1868(r31)
+/* 8030BB44 003077A4 7C 04 18 2E */ lwzx r0, r4, r3
+/* 8030BB48 003077A8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8030BB4C 003077AC 40 82 FF DC */ bne lbl_8030BB28
+/* 8030BB50 003077B0 3B 5B 42 40 */ addi r26, r27, 0x4240
+/* 8030BB54 003077B4 48 00 00 24 */ b lbl_8030BB78
+lbl_8030BB58:
+/* 8030BB58 003077B8 80 7E 00 00 */ lwz r3, 0(r30)
+/* 8030BB5C 003077BC 38 84 00 04 */ addi r4, r4, 4
+/* 8030BB60 003077C0 38 A5 00 01 */ addi r5, r5, 1
+/* 8030BB64 003077C4 38 03 00 20 */ addi r0, r3, 0x20
+/* 8030BB68 003077C8 90 1E 00 00 */ stw r0, 0(r30)
+lbl_8030BB6C:
+/* 8030BB6C 003077CC 80 1F 18 60 */ lwz r0, 0x1860(r31)
+/* 8030BB70 003077D0 7C 05 00 40 */ cmplw r5, r0
+/* 8030BB74 003077D4 41 80 FF 98 */ blt lbl_8030BB0C
+lbl_8030BB78:
+/* 8030BB78 003077D8 80 1F 18 60 */ lwz r0, 0x1860(r31)
+/* 8030BB7C 003077DC 54 00 28 34 */ slwi r0, r0, 5
+/* 8030BB80 003077E0 7F 5A 02 14 */ add r26, r26, r0
+lbl_8030BB84:
+/* 8030BB84 003077E4 7C 1A E0 40 */ cmplw r26, r28
+/* 8030BB88 003077E8 40 81 FF 58 */ ble lbl_8030BAE0
+/* 8030BB8C 003077EC 38 60 00 00 */ li r3, 0
+lbl_8030BB90:
+/* 8030BB90 003077F0 39 61 00 70 */ addi r11, r1, 0x70
+/* 8030BB94 003077F4 4B EB B5 DD */ bl _restgpr_26
+/* 8030BB98 003077F8 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 8030BB9C 003077FC 7C 08 03 A6 */ mtlr r0
+/* 8030BBA0 00307800 38 21 00 70 */ addi r1, r1, 0x70
+/* 8030BBA4 00307804 4E 80 00 20 */ blr
+
+.global VFiPFENT_CalcCheckSum
+VFiPFENT_CalcCheckSum:
+/* 8030BBA8 00307808 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030BBAC 0030780C 7C 08 02 A6 */ mflr r0
+/* 8030BBB0 00307810 7C 64 1B 78 */ mr r4, r3
+/* 8030BBB4 00307814 38 A0 00 00 */ li r5, 0
+/* 8030BBB8 00307818 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030BBBC 0030781C 38 61 00 08 */ addi r3, r1, 8
+/* 8030BBC0 00307820 38 84 02 0E */ addi r4, r4, 0x20e
+/* 8030BBC4 00307824 48 00 B6 85 */ bl VFiPFPATH_putShortName
+/* 8030BBC8 00307828 38 00 00 0B */ li r0, 0xb
+/* 8030BBCC 0030782C 38 C1 00 08 */ addi r6, r1, 8
+/* 8030BBD0 00307830 38 60 00 00 */ li r3, 0
+/* 8030BBD4 00307834 38 E0 00 00 */ li r7, 0
+/* 8030BBD8 00307838 7C 09 03 A6 */ mtctr r0
+lbl_8030BBDC:
+/* 8030BBDC 0030783C 54 E4 04 3E */ clrlwi r4, r7, 0x10
+/* 8030BBE0 00307840 54 60 07 FE */ clrlwi r0, r3, 0x1f
+/* 8030BBE4 00307844 7C A6 20 AE */ lbzx r5, r6, r4
+/* 8030BBE8 00307848 54 64 FE 7E */ rlwinm r4, r3, 0x1f, 0x19, 0x1f
+/* 8030BBEC 0030784C 7C 00 00 D0 */ neg r0, r0
+/* 8030BBF0 00307850 38 E7 00 01 */ addi r7, r7, 1
+/* 8030BBF4 00307854 54 03 06 30 */ rlwinm r3, r0, 0, 0x18, 0x18
+/* 8030BBF8 00307858 7C 05 22 14 */ add r0, r5, r4
+/* 8030BBFC 0030785C 7C 03 02 14 */ add r0, r3, r0
+/* 8030BC00 00307860 54 03 06 3E */ clrlwi r3, r0, 0x18
+/* 8030BC04 00307864 42 00 FF D8 */ bdnz lbl_8030BBDC
+/* 8030BC08 00307868 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030BC0C 0030786C 7C 08 03 A6 */ mtlr r0
+/* 8030BC10 00307870 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030BC14 00307874 4E 80 00 20 */ blr
+
+.global VFiPFENT_LoadShortNameFromBuf
+VFiPFENT_LoadShortNameFromBuf:
+/* 8030BC18 00307878 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030BC1C 0030787C 7C 08 02 A6 */ mflr r0
+/* 8030BC20 00307880 88 A4 00 0B */ lbz r5, 0xb(r4)
+/* 8030BC24 00307884 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030BC28 00307888 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8030BC2C 0030788C 7C 7F 1B 78 */ mr r31, r3
+/* 8030BC30 00307890 38 63 02 0E */ addi r3, r3, 0x20e
+/* 8030BC34 00307894 48 00 B7 9D */ bl VFiPFPATH_getShortName
+/* 8030BC38 00307898 88 1F 02 0E */ lbz r0, 0x20e(r31)
+/* 8030BC3C 0030789C 2C 00 00 05 */ cmpwi r0, 5
+/* 8030BC40 003078A0 40 82 00 0C */ bne lbl_8030BC4C
+/* 8030BC44 003078A4 38 00 FF E5 */ li r0, -27
+/* 8030BC48 003078A8 98 1F 02 0E */ stb r0, 0x20e(r31)
+lbl_8030BC4C:
+/* 8030BC4C 003078AC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030BC50 003078B0 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8030BC54 003078B4 7C 08 03 A6 */ mtlr r0
+/* 8030BC58 003078B8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030BC5C 003078BC 4E 80 00 20 */ blr
+
+.global VFiPFENT_loadEntryNumericFieldsFromBuf
+VFiPFENT_loadEntryNumericFieldsFromBuf:
+/* 8030BC60 003078C0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030BC64 003078C4 38 C3 02 1E */ addi r6, r3, 0x21e
+/* 8030BC68 003078C8 89 04 00 0B */ lbz r8, 0xb(r4)
+/* 8030BC6C 003078CC 38 03 02 20 */ addi r0, r3, 0x220
+/* 8030BC70 003078D0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8030BC74 003078D4 38 A3 02 22 */ addi r5, r3, 0x222
+/* 8030BC78 003078D8 89 44 00 0C */ lbz r10, 0xc(r4)
+/* 8030BC7C 003078DC 39 23 02 24 */ addi r9, r3, 0x224
+/* 8030BC80 003078E0 93 C1 00 08 */ stw r30, 8(r1)
+/* 8030BC84 003078E4 88 E4 00 0D */ lbz r7, 0xd(r4)
+/* 8030BC88 003078E8 99 03 02 1C */ stb r8, 0x21c(r3)
+/* 8030BC8C 003078EC 39 03 02 26 */ addi r8, r3, 0x226
+/* 8030BC90 003078F0 A1 64 00 0E */ lhz r11, 0xe(r4)
+/* 8030BC94 003078F4 99 43 02 1B */ stb r10, 0x21b(r3)
+/* 8030BC98 003078F8 A1 44 00 10 */ lhz r10, 0x10(r4)
+/* 8030BC9C 003078FC 98 E3 02 1D */ stb r7, 0x21d(r3)
+/* 8030BCA0 00307900 A1 84 00 12 */ lhz r12, 0x12(r4)
+/* 8030BCA4 00307904 7D 60 37 2C */ sthbrx r11, 0, r6
+/* 8030BCA8 00307908 81 64 00 1C */ lwz r11, 0x1c(r4)
+/* 8030BCAC 0030790C 7D 40 07 2C */ sthbrx r10, 0, r0
+/* 8030BCB0 00307910 A3 E4 00 1A */ lhz r31, 0x1a(r4)
+/* 8030BCB4 00307914 55 67 42 1E */ rlwinm r7, r11, 8, 8, 0xf
+/* 8030BCB8 00307918 55 66 C4 2E */ rlwinm r6, r11, 0x18, 0x10, 0x17
+/* 8030BCBC 0030791C 7D 80 2F 2C */ sthbrx r12, 0, r5
+/* 8030BCC0 00307920 A1 44 00 16 */ lhz r10, 0x16(r4)
+/* 8030BCC4 00307924 57 E0 44 2E */ rlwinm r0, r31, 8, 0x10, 0x17
+/* 8030BCC8 00307928 A3 C4 00 14 */ lhz r30, 0x14(r4)
+/* 8030BCCC 0030792C 51 67 C0 0E */ rlwimi r7, r11, 0x18, 0, 7
+/* 8030BCD0 00307930 A0 84 00 18 */ lhz r4, 0x18(r4)
+/* 8030BCD4 00307934 51 66 46 3E */ rlwimi r6, r11, 8, 0x18, 0x1f
+/* 8030BCD8 00307938 7D 40 4F 2C */ sthbrx r10, 0, r9
+/* 8030BCDC 0030793C 57 C5 44 2E */ rlwinm r5, r30, 8, 0x10, 0x17
+/* 8030BCE0 00307940 53 C5 C6 3E */ rlwimi r5, r30, 0x18, 0x18, 0x1f
+/* 8030BCE4 00307944 53 E0 C6 3E */ rlwimi r0, r31, 0x18, 0x18, 0x1f
+/* 8030BCE8 00307948 7C 80 47 2C */ sthbrx r4, 0, r8
+/* 8030BCEC 0030794C 7C E4 33 78 */ or r4, r7, r6
+/* 8030BCF0 00307950 50 A0 80 1E */ rlwimi r0, r5, 0x10, 0, 0xf
+/* 8030BCF4 00307954 90 83 02 28 */ stw r4, 0x228(r3)
+/* 8030BCF8 00307958 90 03 02 34 */ stw r0, 0x234(r3)
+/* 8030BCFC 0030795C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8030BD00 00307960 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8030BD04 00307964 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030BD08 00307968 4E 80 00 20 */ blr
+
+.global VFiPFENT_LoadLFNEntryFieldsFromBuf
+VFiPFENT_LoadLFNEntryFieldsFromBuf:
+/* 8030BD0C 0030796C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030BD10 00307970 7C 08 02 A6 */ mflr r0
+/* 8030BD14 00307974 88 E4 00 00 */ lbz r7, 0(r4)
+/* 8030BD18 00307978 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030BD1C 0030797C 54 E5 06 B0 */ rlwinm r5, r7, 0, 0x1a, 0x18
+/* 8030BD20 00307980 88 C4 00 0D */ lbz r6, 0xd(r4)
+/* 8030BD24 00307984 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030BD28 00307988 2C 05 00 14 */ cmpwi r5, 0x14
+/* 8030BD2C 0030798C 7C 7F 1B 78 */ mr r31, r3
+/* 8030BD30 00307990 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030BD34 00307994 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030BD38 00307998 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8030BD3C 0030799C 7C 9C 23 78 */ mr r28, r4
+/* 8030BD40 003079A0 40 81 00 1C */ ble lbl_8030BD5C
+/* 8030BD44 003079A4 38 00 00 00 */ li r0, 0
+/* 8030BD48 003079A8 98 03 02 0B */ stb r0, 0x20b(r3)
+/* 8030BD4C 003079AC 98 03 02 0C */ stb r0, 0x20c(r3)
+/* 8030BD50 003079B0 98 03 02 0A */ stb r0, 0x20a(r3)
+/* 8030BD54 003079B4 38 60 00 21 */ li r3, 0x21
+/* 8030BD58 003079B8 48 00 01 6C */ b lbl_8030BEC4
+lbl_8030BD5C:
+/* 8030BD5C 003079BC 54 E0 06 73 */ rlwinm. r0, r7, 0, 0x19, 0x19
+/* 8030BD60 003079C0 41 82 00 18 */ beq lbl_8030BD78
+/* 8030BD64 003079C4 38 00 00 00 */ li r0, 0
+/* 8030BD68 003079C8 54 A7 06 3E */ clrlwi r7, r5, 0x18
+/* 8030BD6C 003079CC 98 03 02 0A */ stb r0, 0x20a(r3)
+/* 8030BD70 003079D0 3B C0 00 01 */ li r30, 1
+/* 8030BD74 003079D4 48 00 00 50 */ b lbl_8030BDC4
+lbl_8030BD78:
+/* 8030BD78 003079D8 88 03 02 0A */ lbz r0, 0x20a(r3)
+/* 8030BD7C 003079DC 3B C0 00 00 */ li r30, 0
+/* 8030BD80 003079E0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030BD84 003079E4 40 82 00 0C */ bne lbl_8030BD90
+/* 8030BD88 003079E8 38 60 00 21 */ li r3, 0x21
+/* 8030BD8C 003079EC 48 00 01 38 */ b lbl_8030BEC4
+lbl_8030BD90:
+/* 8030BD90 003079F0 88 A3 02 0B */ lbz r5, 0x20b(r3)
+/* 8030BD94 003079F4 38 05 FF FF */ addi r0, r5, -1
+/* 8030BD98 003079F8 7C 07 00 00 */ cmpw r7, r0
+/* 8030BD9C 003079FC 40 82 00 10 */ bne lbl_8030BDAC
+/* 8030BDA0 00307A00 88 03 02 0C */ lbz r0, 0x20c(r3)
+/* 8030BDA4 00307A04 7C 06 00 40 */ cmplw r6, r0
+/* 8030BDA8 00307A08 41 82 00 1C */ beq lbl_8030BDC4
+lbl_8030BDAC:
+/* 8030BDAC 00307A0C 38 00 00 00 */ li r0, 0
+/* 8030BDB0 00307A10 98 03 02 0B */ stb r0, 0x20b(r3)
+/* 8030BDB4 00307A14 98 03 02 0C */ stb r0, 0x20c(r3)
+/* 8030BDB8 00307A18 98 03 02 0A */ stb r0, 0x20a(r3)
+/* 8030BDBC 00307A1C 38 60 00 21 */ li r3, 0x21
+/* 8030BDC0 00307A20 48 00 01 04 */ b lbl_8030BEC4
+lbl_8030BDC4:
+/* 8030BDC4 00307A24 54 E5 06 3E */ clrlwi r5, r7, 0x18
+/* 8030BDC8 00307A28 98 E3 02 0B */ stb r7, 0x20b(r3)
+/* 8030BDCC 00307A2C 38 05 FF FF */ addi r0, r5, -1
+/* 8030BDD0 00307A30 38 84 00 01 */ addi r4, r4, 1
+/* 8030BDD4 00307A34 1C 00 00 1A */ mulli r0, r0, 0x1a
+/* 8030BDD8 00307A38 98 C3 02 0C */ stb r6, 0x20c(r3)
+/* 8030BDDC 00307A3C 38 A0 00 0A */ li r5, 0xa
+/* 8030BDE0 00307A40 7F A3 02 14 */ add r29, r3, r0
+/* 8030BDE4 00307A44 7F A3 EB 78 */ mr r3, r29
+/* 8030BDE8 00307A48 4B FF 90 C5 */ bl VFipf_memcpy
+/* 8030BDEC 00307A4C 38 7D 00 0A */ addi r3, r29, 0xa
+/* 8030BDF0 00307A50 38 9C 00 0E */ addi r4, r28, 0xe
+/* 8030BDF4 00307A54 38 A0 00 0C */ li r5, 0xc
+/* 8030BDF8 00307A58 4B FF 90 B5 */ bl VFipf_memcpy
+/* 8030BDFC 00307A5C 38 7D 00 16 */ addi r3, r29, 0x16
+/* 8030BE00 00307A60 38 9C 00 1C */ addi r4, r28, 0x1c
+/* 8030BE04 00307A64 38 A0 00 04 */ li r5, 4
+/* 8030BE08 00307A68 4B FF 90 A5 */ bl VFipf_memcpy
+/* 8030BE0C 00307A6C 7F A3 EB 78 */ mr r3, r29
+/* 8030BE10 00307A70 38 80 00 0A */ li r4, 0xa
+/* 8030BE14 00307A74 4B FF 93 AD */ bl VFiPF_LE16_TO_U16_STR
+/* 8030BE18 00307A78 38 7D 00 0A */ addi r3, r29, 0xa
+/* 8030BE1C 00307A7C 38 80 00 0C */ li r4, 0xc
+/* 8030BE20 00307A80 4B FF 93 A1 */ bl VFiPF_LE16_TO_U16_STR
+/* 8030BE24 00307A84 38 7D 00 16 */ addi r3, r29, 0x16
+/* 8030BE28 00307A88 38 80 00 04 */ li r4, 4
+/* 8030BE2C 00307A8C 4B FF 93 95 */ bl VFiPF_LE16_TO_U16_STR
+/* 8030BE30 00307A90 2C 1E 00 00 */ cmpwi r30, 0
+/* 8030BE34 00307A94 41 82 00 80 */ beq lbl_8030BEB4
+/* 8030BE38 00307A98 38 9D 00 1A */ addi r4, r29, 0x1a
+/* 8030BE3C 00307A9C 38 60 00 00 */ li r3, 0
+/* 8030BE40 00307AA0 38 04 00 01 */ addi r0, r4, 1
+/* 8030BE44 00307AA4 B0 7D 00 1A */ sth r3, 0x1a(r29)
+/* 8030BE48 00307AA8 7C 1D 00 50 */ subf r0, r29, r0
+/* 8030BE4C 00307AAC 54 00 F8 7E */ srwi r0, r0, 1
+/* 8030BE50 00307AB0 7C 09 03 A6 */ mtctr r0
+/* 8030BE54 00307AB4 7C 1D 20 40 */ cmplw r29, r4
+/* 8030BE58 00307AB8 40 80 00 20 */ bge lbl_8030BE78
+lbl_8030BE5C:
+/* 8030BE5C 00307ABC A0 1D 00 00 */ lhz r0, 0(r29)
+/* 8030BE60 00307AC0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030BE64 00307AC4 40 82 00 0C */ bne lbl_8030BE70
+/* 8030BE68 00307AC8 3B BD 00 02 */ addi r29, r29, 2
+/* 8030BE6C 00307ACC 48 00 00 0C */ b lbl_8030BE78
+lbl_8030BE70:
+/* 8030BE70 00307AD0 3B BD 00 02 */ addi r29, r29, 2
+/* 8030BE74 00307AD4 42 00 FF E8 */ bdnz lbl_8030BE5C
+lbl_8030BE78:
+/* 8030BE78 00307AD8 38 04 00 01 */ addi r0, r4, 1
+/* 8030BE7C 00307ADC 7C 1D 00 50 */ subf r0, r29, r0
+/* 8030BE80 00307AE0 54 00 F8 7E */ srwi r0, r0, 1
+/* 8030BE84 00307AE4 7C 09 03 A6 */ mtctr r0
+/* 8030BE88 00307AE8 7C 1D 20 40 */ cmplw r29, r4
+/* 8030BE8C 00307AEC 40 80 00 28 */ bge lbl_8030BEB4
+lbl_8030BE90:
+/* 8030BE90 00307AF0 A0 1D 00 00 */ lhz r0, 0(r29)
+/* 8030BE94 00307AF4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030BE98 00307AF8 41 82 00 14 */ beq lbl_8030BEAC
+/* 8030BE9C 00307AFC 38 00 00 00 */ li r0, 0
+/* 8030BEA0 00307B00 38 60 00 21 */ li r3, 0x21
+/* 8030BEA4 00307B04 98 1F 02 0A */ stb r0, 0x20a(r31)
+/* 8030BEA8 00307B08 48 00 00 1C */ b lbl_8030BEC4
+lbl_8030BEAC:
+/* 8030BEAC 00307B0C 3B BD 00 02 */ addi r29, r29, 2
+/* 8030BEB0 00307B10 42 00 FF E0 */ bdnz lbl_8030BE90
+lbl_8030BEB4:
+/* 8030BEB4 00307B14 88 9F 02 0A */ lbz r4, 0x20a(r31)
+/* 8030BEB8 00307B18 38 60 00 00 */ li r3, 0
+/* 8030BEBC 00307B1C 38 04 00 01 */ addi r0, r4, 1
+/* 8030BEC0 00307B20 98 1F 02 0A */ stb r0, 0x20a(r31)
+lbl_8030BEC4:
+/* 8030BEC4 00307B24 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030BEC8 00307B28 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030BECC 00307B2C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030BED0 00307B30 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030BED4 00307B34 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030BED8 00307B38 7C 08 03 A6 */ mtlr r0
+/* 8030BEDC 00307B3C 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030BEE0 00307B40 4E 80 00 20 */ blr
+
+.global VFiPFENT_storeLFNEntryFieldsToBuf
+VFiPFENT_storeLFNEntryFieldsToBuf:
+/* 8030BEE4 00307B44 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030BEE8 00307B48 7C 08 02 A6 */ mflr r0
+/* 8030BEEC 00307B4C 2C 07 00 00 */ cmpwi r7, 0
+/* 8030BEF0 00307B50 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030BEF4 00307B54 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8030BEF8 00307B58 93 C1 00 08 */ stw r30, 8(r1)
+/* 8030BEFC 00307B5C 7C 7E 1B 78 */ mr r30, r3
+/* 8030BF00 00307B60 41 82 00 10 */ beq lbl_8030BF10
+/* 8030BF04 00307B64 60 A0 00 40 */ ori r0, r5, 0x40
+/* 8030BF08 00307B68 98 03 00 00 */ stb r0, 0(r3)
+/* 8030BF0C 00307B6C 48 00 00 08 */ b lbl_8030BF14
+lbl_8030BF10:
+/* 8030BF10 00307B70 98 A3 00 00 */ stb r5, 0(r3)
+lbl_8030BF14:
+/* 8030BF14 00307B74 38 05 FF FF */ addi r0, r5, -1
+/* 8030BF18 00307B78 38 A0 00 00 */ li r5, 0
+/* 8030BF1C 00307B7C 1C 00 00 1A */ mulli r0, r0, 0x1a
+/* 8030BF20 00307B80 39 00 00 0F */ li r8, 0xf
+/* 8030BF24 00307B84 2C 07 00 00 */ cmpwi r7, 0
+/* 8030BF28 00307B88 99 03 00 0B */ stb r8, 0xb(r3)
+/* 8030BF2C 00307B8C 98 C3 00 0D */ stb r6, 0xd(r3)
+/* 8030BF30 00307B90 7F E4 02 14 */ add r31, r4, r0
+/* 8030BF34 00307B94 98 A3 00 0C */ stb r5, 0xc(r3)
+/* 8030BF38 00307B98 B0 A3 00 1A */ sth r5, 0x1a(r3)
+/* 8030BF3C 00307B9C 41 82 00 A8 */ beq lbl_8030BFE4
+/* 8030BF40 00307BA0 38 BF 00 1A */ addi r5, r31, 0x1a
+/* 8030BF44 00307BA4 7F E6 FB 78 */ mr r6, r31
+/* 8030BF48 00307BA8 38 05 00 01 */ addi r0, r5, 1
+/* 8030BF4C 00307BAC 7C 1F 00 50 */ subf r0, r31, r0
+/* 8030BF50 00307BB0 54 00 F8 7E */ srwi r0, r0, 1
+/* 8030BF54 00307BB4 7C 09 03 A6 */ mtctr r0
+/* 8030BF58 00307BB8 7C 1F 28 40 */ cmplw r31, r5
+/* 8030BF5C 00307BBC 40 80 00 20 */ bge lbl_8030BF7C
+lbl_8030BF60:
+/* 8030BF60 00307BC0 A0 06 00 00 */ lhz r0, 0(r6)
+/* 8030BF64 00307BC4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030BF68 00307BC8 40 82 00 0C */ bne lbl_8030BF74
+/* 8030BF6C 00307BCC 38 C6 00 02 */ addi r6, r6, 2
+/* 8030BF70 00307BD0 48 00 00 0C */ b lbl_8030BF7C
+lbl_8030BF74:
+/* 8030BF74 00307BD4 38 C6 00 02 */ addi r6, r6, 2
+/* 8030BF78 00307BD8 42 00 FF E8 */ bdnz lbl_8030BF60
+lbl_8030BF7C:
+/* 8030BF7C 00307BDC 38 85 00 01 */ addi r4, r5, 1
+/* 8030BF80 00307BE0 7C 06 28 40 */ cmplw r6, r5
+/* 8030BF84 00307BE4 7C 86 20 50 */ subf r4, r6, r4
+/* 8030BF88 00307BE8 3C A0 00 01 */ lis r5, 0x0000FFFF@ha
+/* 8030BF8C 00307BEC 38 A5 FF FF */ addi r5, r5, 0x0000FFFF@l
+/* 8030BF90 00307BF0 54 84 F8 7E */ srwi r4, r4, 1
+/* 8030BF94 00307BF4 40 80 00 50 */ bge lbl_8030BFE4
+/* 8030BF98 00307BF8 54 80 E8 FF */ rlwinm. r0, r4, 0x1d, 3, 0x1f
+/* 8030BF9C 00307BFC 7C 09 03 A6 */ mtctr r0
+/* 8030BFA0 00307C00 41 82 00 34 */ beq lbl_8030BFD4
+lbl_8030BFA4:
+/* 8030BFA4 00307C04 B0 A6 00 00 */ sth r5, 0(r6)
+/* 8030BFA8 00307C08 B0 A6 00 02 */ sth r5, 2(r6)
+/* 8030BFAC 00307C0C B0 A6 00 04 */ sth r5, 4(r6)
+/* 8030BFB0 00307C10 B0 A6 00 06 */ sth r5, 6(r6)
+/* 8030BFB4 00307C14 B0 A6 00 08 */ sth r5, 8(r6)
+/* 8030BFB8 00307C18 B0 A6 00 0A */ sth r5, 0xa(r6)
+/* 8030BFBC 00307C1C B0 A6 00 0C */ sth r5, 0xc(r6)
+/* 8030BFC0 00307C20 B0 A6 00 0E */ sth r5, 0xe(r6)
+/* 8030BFC4 00307C24 38 C6 00 10 */ addi r6, r6, 0x10
+/* 8030BFC8 00307C28 42 00 FF DC */ bdnz lbl_8030BFA4
+/* 8030BFCC 00307C2C 70 84 00 07 */ andi. r4, r4, 7
+/* 8030BFD0 00307C30 41 82 00 14 */ beq lbl_8030BFE4
+lbl_8030BFD4:
+/* 8030BFD4 00307C34 7C 89 03 A6 */ mtctr r4
+lbl_8030BFD8:
+/* 8030BFD8 00307C38 B0 A6 00 00 */ sth r5, 0(r6)
+/* 8030BFDC 00307C3C 38 C6 00 02 */ addi r6, r6, 2
+/* 8030BFE0 00307C40 42 00 FF F8 */ bdnz lbl_8030BFD8
+lbl_8030BFE4:
+/* 8030BFE4 00307C44 7F E4 FB 78 */ mr r4, r31
+/* 8030BFE8 00307C48 38 A0 00 0A */ li r5, 0xa
+/* 8030BFEC 00307C4C 38 63 00 01 */ addi r3, r3, 1
+/* 8030BFF0 00307C50 4B FF 8E BD */ bl VFipf_memcpy
+/* 8030BFF4 00307C54 38 7E 00 0E */ addi r3, r30, 0xe
+/* 8030BFF8 00307C58 38 9F 00 0A */ addi r4, r31, 0xa
+/* 8030BFFC 00307C5C 38 A0 00 0C */ li r5, 0xc
+/* 8030C000 00307C60 4B FF 8E AD */ bl VFipf_memcpy
+/* 8030C004 00307C64 38 7E 00 1C */ addi r3, r30, 0x1c
+/* 8030C008 00307C68 38 9F 00 16 */ addi r4, r31, 0x16
+/* 8030C00C 00307C6C 38 A0 00 04 */ li r5, 4
+/* 8030C010 00307C70 4B FF 8E 9D */ bl VFipf_memcpy
+/* 8030C014 00307C74 38 7E 00 01 */ addi r3, r30, 1
+/* 8030C018 00307C78 38 80 00 0A */ li r4, 0xa
+/* 8030C01C 00307C7C 4B FF 91 A5 */ bl VFiPF_LE16_TO_U16_STR
+/* 8030C020 00307C80 38 7E 00 0E */ addi r3, r30, 0xe
+/* 8030C024 00307C84 38 80 00 0C */ li r4, 0xc
+/* 8030C028 00307C88 4B FF 91 99 */ bl VFiPF_LE16_TO_U16_STR
+/* 8030C02C 00307C8C 38 7E 00 1C */ addi r3, r30, 0x1c
+/* 8030C030 00307C90 38 80 00 04 */ li r4, 4
+/* 8030C034 00307C94 4B FF 91 8D */ bl VFiPF_LE16_TO_U16_STR
+/* 8030C038 00307C98 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030C03C 00307C9C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8030C040 00307CA0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8030C044 00307CA4 7C 08 03 A6 */ mtlr r0
+/* 8030C048 00307CA8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030C04C 00307CAC 4E 80 00 20 */ blr
+
+.global VFiPFENT_findEntryPos
+VFiPFENT_findEntryPos:
+/* 8030C050 00307CB0 94 21 FF 50 */ stwu r1, -0xb0(r1)
+/* 8030C054 00307CB4 7C 08 02 A6 */ mflr r0
+/* 8030C058 00307CB8 90 01 00 B4 */ stw r0, 0xb4(r1)
+/* 8030C05C 00307CBC 39 61 00 B0 */ addi r11, r1, 0xb0
+/* 8030C060 00307CC0 4B EB B0 B9 */ bl _savegpr_23
+/* 8030C064 00307CC4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C068 00307CC8 7C 79 1B 78 */ mr r25, r3
+/* 8030C06C 00307CCC 90 A1 00 08 */ stw r5, 8(r1)
+/* 8030C070 00307CD0 7C 9A 23 78 */ mr r26, r4
+/* 8030C074 00307CD4 7C DB 33 78 */ mr r27, r6
+/* 8030C078 00307CD8 7C FC 3B 78 */ mr r28, r7
+/* 8030C07C 00307CDC 7D 1D 43 78 */ mr r29, r8
+/* 8030C080 00307CE0 7D 3E 4B 78 */ mr r30, r9
+/* 8030C084 00307CE4 7D 5F 53 78 */ mr r31, r10
+/* 8030C088 00307CE8 38 60 00 00 */ li r3, 0
+/* 8030C08C 00307CEC 40 82 00 1C */ bne lbl_8030C0A8
+/* 8030C090 00307CF0 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C094 00307CF4 38 60 00 0A */ li r3, 0xa
+/* 8030C098 00307CF8 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C09C 00307CFC 90 09 00 00 */ stw r0, 0(r9)
+/* 8030C0A0 00307D00 90 0A 00 00 */ stw r0, 0(r10)
+/* 8030C0A4 00307D04 48 00 02 E0 */ b lbl_8030C384
+lbl_8030C0A8:
+/* 8030C0A8 00307D08 2C 04 00 00 */ cmpwi r4, 0
+/* 8030C0AC 00307D0C 40 82 00 1C */ bne lbl_8030C0C8
+/* 8030C0B0 00307D10 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C0B4 00307D14 38 60 00 0A */ li r3, 0xa
+/* 8030C0B8 00307D18 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C0BC 00307D1C 90 09 00 00 */ stw r0, 0(r9)
+/* 8030C0C0 00307D20 90 0A 00 00 */ stw r0, 0(r10)
+/* 8030C0C4 00307D24 48 00 02 C0 */ b lbl_8030C384
+lbl_8030C0C8:
+/* 8030C0C8 00307D28 3D 60 00 0F */ lis r11, 0x000F423F@ha
+/* 8030C0CC 00307D2C 39 6B 42 3F */ addi r11, r11, 0x000F423F@l
+/* 8030C0D0 00307D30 7C 05 58 40 */ cmplw r5, r11
+/* 8030C0D4 00307D34 41 80 00 14 */ blt lbl_8030C0E8
+/* 8030C0D8 00307D38 91 69 00 00 */ stw r11, 0(r9)
+/* 8030C0DC 00307D3C 38 60 00 0A */ li r3, 0xa
+/* 8030C0E0 00307D40 91 6A 00 00 */ stw r11, 0(r10)
+/* 8030C0E4 00307D44 48 00 02 A0 */ b lbl_8030C384
+lbl_8030C0E8:
+/* 8030C0E8 00307D48 2C 06 00 00 */ cmpwi r6, 0
+/* 8030C0EC 00307D4C 40 82 00 14 */ bne lbl_8030C100
+/* 8030C0F0 00307D50 91 69 00 00 */ stw r11, 0(r9)
+/* 8030C0F4 00307D54 38 60 00 0A */ li r3, 0xa
+/* 8030C0F8 00307D58 91 6A 00 00 */ stw r11, 0(r10)
+/* 8030C0FC 00307D5C 48 00 02 88 */ b lbl_8030C384
+lbl_8030C100:
+/* 8030C100 00307D60 7C E0 40 39 */ and. r0, r7, r8
+/* 8030C104 00307D64 41 82 00 14 */ beq lbl_8030C118
+/* 8030C108 00307D68 91 69 00 00 */ stw r11, 0(r9)
+/* 8030C10C 00307D6C 38 60 00 0A */ li r3, 0xa
+/* 8030C110 00307D70 91 6A 00 00 */ stw r11, 0(r10)
+/* 8030C114 00307D74 48 00 02 70 */ b lbl_8030C384
+lbl_8030C118:
+/* 8030C118 00307D78 38 C0 00 00 */ li r6, 0
+/* 8030C11C 00307D7C 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 8030C120 00307D80 90 C9 00 00 */ stw r6, 0(r9)
+/* 8030C124 00307D84 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
+/* 8030C128 00307D88 90 CA 00 00 */ stw r6, 0(r10)
+/* 8030C12C 00307D8C 98 C4 02 0A */ stb r6, 0x20a(r4)
+/* 8030C130 00307D90 98 C4 02 0B */ stb r6, 0x20b(r4)
+/* 8030C134 00307D94 98 C4 02 0C */ stb r6, 0x20c(r4)
+/* 8030C138 00307D98 B0 C4 00 00 */ sth r6, 0(r4)
+/* 8030C13C 00307D9C 80 05 00 3C */ lwz r0, 0x3c(r5)
+/* 8030C140 00307DA0 90 C1 00 0C */ stw r6, 0xc(r1)
+/* 8030C144 00307DA4 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030C148 00307DA8 28 00 00 02 */ cmplwi r0, 2
+/* 8030C14C 00307DAC 40 82 00 10 */ bne lbl_8030C15C
+/* 8030C150 00307DB0 7F 63 DB 78 */ mr r3, r27
+/* 8030C154 00307DB4 38 81 00 08 */ addi r4, r1, 8
+/* 8030C158 00307DB8 48 00 C6 01 */ bl VFiPFPATH_GetExtShortNameIndex
+lbl_8030C15C:
+/* 8030C15C 00307DBC 80 99 00 00 */ lwz r4, 0(r25)
+/* 8030C160 00307DC0 28 03 00 01 */ cmplwi r3, 1
+/* 8030C164 00307DC4 80 19 00 04 */ lwz r0, 4(r25)
+/* 8030C168 00307DC8 90 81 00 18 */ stw r4, 0x18(r1)
+/* 8030C16C 00307DCC 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 8030C170 00307DD0 80 79 00 08 */ lwz r3, 8(r25)
+/* 8030C174 00307DD4 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 8030C178 00307DD8 90 61 00 20 */ stw r3, 0x20(r1)
+/* 8030C17C 00307DDC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030C180 00307DE0 80 79 00 10 */ lwz r3, 0x10(r25)
+/* 8030C184 00307DE4 80 19 00 14 */ lwz r0, 0x14(r25)
+/* 8030C188 00307DE8 90 61 00 28 */ stw r3, 0x28(r1)
+/* 8030C18C 00307DEC 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 8030C190 00307DF0 80 79 00 18 */ lwz r3, 0x18(r25)
+/* 8030C194 00307DF4 80 19 00 1C */ lwz r0, 0x1c(r25)
+/* 8030C198 00307DF8 90 61 00 30 */ stw r3, 0x30(r1)
+/* 8030C19C 00307DFC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030C1A0 00307E00 80 79 00 20 */ lwz r3, 0x20(r25)
+/* 8030C1A4 00307E04 80 19 00 24 */ lwz r0, 0x24(r25)
+/* 8030C1A8 00307E08 90 61 00 38 */ stw r3, 0x38(r1)
+/* 8030C1AC 00307E0C 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 8030C1B0 00307E10 80 79 00 28 */ lwz r3, 0x28(r25)
+/* 8030C1B4 00307E14 80 19 00 2C */ lwz r0, 0x2c(r25)
+/* 8030C1B8 00307E18 90 61 00 40 */ stw r3, 0x40(r1)
+/* 8030C1BC 00307E1C 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030C1C0 00307E20 80 79 00 30 */ lwz r3, 0x30(r25)
+/* 8030C1C4 00307E24 80 19 00 34 */ lwz r0, 0x34(r25)
+/* 8030C1C8 00307E28 90 61 00 48 */ stw r3, 0x48(r1)
+/* 8030C1CC 00307E2C 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 8030C1D0 00307E30 40 82 00 E4 */ bne lbl_8030C2B4
+/* 8030C1D4 00307E34 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030C1D8 00307E38 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C1DC 00307E3C 38 84 FF FF */ addi r4, r4, -1
+/* 8030C1E0 00307E40 48 00 1D 19 */ bl VFiPFENT_ITER_IteratorInitialize
+/* 8030C1E4 00307E44 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C1E8 00307E48 41 82 00 18 */ beq lbl_8030C200
+/* 8030C1EC 00307E4C 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C1F0 00307E50 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C1F4 00307E54 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C1F8 00307E58 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C1FC 00307E5C 48 00 01 88 */ b lbl_8030C384
+lbl_8030C200:
+/* 8030C200 00307E60 7F 43 D3 78 */ mr r3, r26
+/* 8030C204 00307E64 7F 65 DB 78 */ mr r5, r27
+/* 8030C208 00307E68 7F 86 E3 78 */ mr r6, r28
+/* 8030C20C 00307E6C 7F A7 EB 78 */ mr r7, r29
+/* 8030C210 00307E70 38 81 00 10 */ addi r4, r1, 0x10
+/* 8030C214 00307E74 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030C218 00307E78 4B FF F2 69 */ bl VFiPFENT_getEntry
+/* 8030C21C 00307E7C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C220 00307E80 40 82 00 1C */ bne lbl_8030C23C
+/* 8030C224 00307E84 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C228 00307E88 38 60 00 03 */ li r3, 3
+/* 8030C22C 00307E8C 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C230 00307E90 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C234 00307E94 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C238 00307E98 48 00 01 4C */ b lbl_8030C384
+lbl_8030C23C:
+/* 8030C23C 00307E9C 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 8030C240 00307EA0 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19
+/* 8030C244 00307EA4 41 82 01 2C */ beq lbl_8030C370
+/* 8030C248 00307EA8 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030C24C 00307EAC 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C250 00307EB0 48 00 1C A9 */ bl VFiPFENT_ITER_IteratorInitialize
+/* 8030C254 00307EB4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C258 00307EB8 41 82 00 18 */ beq lbl_8030C270
+/* 8030C25C 00307EBC 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C260 00307EC0 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C264 00307EC4 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C268 00307EC8 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C26C 00307ECC 48 00 01 18 */ b lbl_8030C384
+lbl_8030C270:
+/* 8030C270 00307ED0 7F 43 D3 78 */ mr r3, r26
+/* 8030C274 00307ED4 7F 65 DB 78 */ mr r5, r27
+/* 8030C278 00307ED8 7F 86 E3 78 */ mr r6, r28
+/* 8030C27C 00307EDC 7F A7 EB 78 */ mr r7, r29
+/* 8030C280 00307EE0 38 81 00 10 */ addi r4, r1, 0x10
+/* 8030C284 00307EE4 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030C288 00307EE8 4B FF F1 F9 */ bl VFiPFENT_getEntry
+/* 8030C28C 00307EEC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C290 00307EF0 40 82 00 E0 */ bne lbl_8030C370
+/* 8030C294 00307EF4 80 19 00 34 */ lwz r0, 0x34(r25)
+/* 8030C298 00307EF8 38 60 00 00 */ li r3, 0
+/* 8030C29C 00307EFC 90 1A 02 2C */ stw r0, 0x22c(r26)
+/* 8030C2A0 00307F00 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030C2A4 00307F04 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C2A8 00307F08 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030C2AC 00307F0C 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C2B0 00307F10 48 00 00 D4 */ b lbl_8030C384
+lbl_8030C2B4:
+/* 8030C2B4 00307F14 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030C2B8 00307F18 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C2BC 00307F1C 48 00 1C 3D */ bl VFiPFENT_ITER_IteratorInitialize
+/* 8030C2C0 00307F20 7C 77 1B 78 */ mr r23, r3
+/* 8030C2C4 00307F24 3B 00 00 00 */ li r24, 0
+/* 8030C2C8 00307F28 48 00 00 98 */ b lbl_8030C360
+lbl_8030C2CC:
+/* 8030C2CC 00307F2C 2C 17 00 00 */ cmpwi r23, 0
+/* 8030C2D0 00307F30 41 82 00 1C */ beq lbl_8030C2EC
+/* 8030C2D4 00307F34 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C2D8 00307F38 7E E3 BB 78 */ mr r3, r23
+/* 8030C2DC 00307F3C 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C2E0 00307F40 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C2E4 00307F44 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C2E8 00307F48 48 00 00 9C */ b lbl_8030C384
+lbl_8030C2EC:
+/* 8030C2EC 00307F4C 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 8030C2F0 00307F50 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C2F4 00307F54 41 82 00 7C */ beq lbl_8030C370
+/* 8030C2F8 00307F58 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030C2FC 00307F5C 40 82 00 10 */ bne lbl_8030C30C
+/* 8030C300 00307F60 9B 1A 02 0A */ stb r24, 0x20a(r26)
+/* 8030C304 00307F64 B3 1A 00 00 */ sth r24, 0(r26)
+/* 8030C308 00307F68 48 00 00 48 */ b lbl_8030C350
+lbl_8030C30C:
+/* 8030C30C 00307F6C 7F 43 D3 78 */ mr r3, r26
+/* 8030C310 00307F70 7F 65 DB 78 */ mr r5, r27
+/* 8030C314 00307F74 7F 86 E3 78 */ mr r6, r28
+/* 8030C318 00307F78 7F A7 EB 78 */ mr r7, r29
+/* 8030C31C 00307F7C 38 81 00 10 */ addi r4, r1, 0x10
+/* 8030C320 00307F80 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030C324 00307F84 4B FF F1 5D */ bl VFiPFENT_getEntry
+/* 8030C328 00307F88 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C32C 00307F8C 40 82 00 24 */ bne lbl_8030C350
+/* 8030C330 00307F90 80 19 00 34 */ lwz r0, 0x34(r25)
+/* 8030C334 00307F94 38 60 00 00 */ li r3, 0
+/* 8030C338 00307F98 90 1A 02 2C */ stw r0, 0x22c(r26)
+/* 8030C33C 00307F9C 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030C340 00307FA0 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C344 00307FA4 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030C348 00307FA8 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C34C 00307FAC 48 00 00 38 */ b lbl_8030C384
+lbl_8030C350:
+/* 8030C350 00307FB0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C354 00307FB4 38 80 00 00 */ li r4, 0
+/* 8030C358 00307FB8 48 00 1D B1 */ bl VFiPFENT_ITER_Advance
+/* 8030C35C 00307FBC 7C 77 1B 78 */ mr r23, r3
+lbl_8030C360:
+/* 8030C360 00307FC0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C364 00307FC4 48 00 1C 99 */ bl VFiPFENT_ITER_IsAtLogicalEnd
+/* 8030C368 00307FC8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C36C 00307FCC 41 82 FF 60 */ beq lbl_8030C2CC
+lbl_8030C370:
+/* 8030C370 00307FD0 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C374 00307FD4 38 60 00 03 */ li r3, 3
+/* 8030C378 00307FD8 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C37C 00307FDC 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C380 00307FE0 90 1F 00 00 */ stw r0, 0(r31)
+lbl_8030C384:
+/* 8030C384 00307FE4 39 61 00 B0 */ addi r11, r1, 0xb0
+/* 8030C388 00307FE8 4B EB AD DD */ bl _restgpr_23
+/* 8030C38C 00307FEC 80 01 00 B4 */ lwz r0, 0xb4(r1)
+/* 8030C390 00307FF0 7C 08 03 A6 */ mtlr r0
+/* 8030C394 00307FF4 38 21 00 B0 */ addi r1, r1, 0xb0
+/* 8030C398 00307FF8 4E 80 00 20 */ blr
+
+.global VFiPFENT_findEntry
+VFiPFENT_findEntry:
+/* 8030C39C 00307FFC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030C3A0 00308000 7C 08 02 A6 */ mflr r0
+/* 8030C3A4 00308004 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030C3A8 00308008 39 21 00 0C */ addi r9, r1, 0xc
+/* 8030C3AC 0030800C 39 41 00 08 */ addi r10, r1, 8
+/* 8030C3B0 00308010 4B FF FC A1 */ bl VFiPFENT_findEntryPos
+/* 8030C3B4 00308014 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030C3B8 00308018 7C 08 03 A6 */ mtlr r0
+/* 8030C3BC 0030801C 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030C3C0 00308020 4E 80 00 20 */ blr
+
+.global VFiPFENT_allocateEntryPos
+VFiPFENT_allocateEntryPos:
+/* 8030C3C4 00308024 94 21 FD 00 */ stwu r1, -0x300(r1)
+/* 8030C3C8 00308028 7C 08 02 A6 */ mflr r0
+/* 8030C3CC 0030802C 90 01 03 04 */ stw r0, 0x304(r1)
+/* 8030C3D0 00308030 39 61 03 00 */ addi r11, r1, 0x300
+/* 8030C3D4 00308034 4B EB AD 2D */ bl _savegpr_17
+/* 8030C3D8 00308038 2C 05 00 00 */ cmpwi r5, 0
+/* 8030C3DC 0030803C 7C 71 1B 78 */ mr r17, r3
+/* 8030C3E0 00308040 7C 92 23 78 */ mr r18, r4
+/* 8030C3E4 00308044 7C B3 2B 78 */ mr r19, r5
+/* 8030C3E8 00308048 7C D4 33 78 */ mr r20, r6
+/* 8030C3EC 0030804C 7C F5 3B 78 */ mr r21, r7
+/* 8030C3F0 00308050 7D 16 43 78 */ mr r22, r8
+/* 8030C3F4 00308054 40 82 00 0C */ bne lbl_8030C400
+/* 8030C3F8 00308058 38 60 00 0A */ li r3, 0xa
+/* 8030C3FC 0030805C 48 00 02 CC */ b lbl_8030C6C8
+lbl_8030C400:
+/* 8030C400 00308060 80 05 00 34 */ lwz r0, 0x34(r5)
+/* 8030C404 00308064 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C408 00308068 40 82 00 0C */ bne lbl_8030C414
+/* 8030C40C 0030806C 38 60 00 0A */ li r3, 0xa
+/* 8030C410 00308070 48 00 02 B8 */ b lbl_8030C6C8
+lbl_8030C414:
+/* 8030C414 00308074 2C 04 00 00 */ cmpwi r4, 0
+/* 8030C418 00308078 40 82 00 0C */ bne lbl_8030C424
+/* 8030C41C 0030807C 38 60 00 0A */ li r3, 0xa
+/* 8030C420 00308080 48 00 02 A8 */ b lbl_8030C6C8
+lbl_8030C424:
+/* 8030C424 00308084 28 04 00 15 */ cmplwi r4, 0x15
+/* 8030C428 00308088 40 81 00 0C */ ble lbl_8030C434
+/* 8030C42C 0030808C 38 60 00 0A */ li r3, 0xa
+/* 8030C430 00308090 48 00 02 98 */ b lbl_8030C6C8
+lbl_8030C434:
+/* 8030C434 00308094 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 8030C438 00308098 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 8030C43C 0030809C 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 8030C440 003080A0 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030C444 003080A4 28 00 00 02 */ cmplwi r0, 2
+/* 8030C448 003080A8 40 82 00 1C */ bne lbl_8030C464
+/* 8030C44C 003080AC 7E A3 AB 78 */ mr r3, r21
+/* 8030C450 003080B0 48 00 BF 79 */ bl VFiPFPATH_CheckExtShortNameSignature
+/* 8030C454 003080B4 28 03 00 01 */ cmplwi r3, 1
+/* 8030C458 003080B8 40 82 00 0C */ bne lbl_8030C464
+/* 8030C45C 003080BC 38 60 00 01 */ li r3, 1
+/* 8030C460 003080C0 48 00 02 68 */ b lbl_8030C6C8
+lbl_8030C464:
+/* 8030C464 003080C4 83 F3 00 34 */ lwz r31, 0x34(r19)
+/* 8030C468 003080C8 3B C0 FF FF */ li r30, -1
+/* 8030C46C 003080CC 3B 00 00 00 */ li r24, 0
+/* 8030C470 003080D0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C474 003080D4 93 D4 00 04 */ stw r30, 4(r20)
+/* 8030C478 003080D8 3A E0 00 00 */ li r23, 0
+/* 8030C47C 003080DC 3B A0 00 00 */ li r29, 0
+/* 8030C480 003080E0 3B 80 FF FF */ li r28, -1
+/* 8030C484 003080E4 93 D4 00 00 */ stw r30, 0(r20)
+/* 8030C488 003080E8 3B 40 FF FF */ li r26, -1
+/* 8030C48C 003080EC 3B 60 FF FF */ li r27, -1
+/* 8030C490 003080F0 3B 20 00 00 */ li r25, 0
+/* 8030C494 003080F4 93 01 00 54 */ stw r24, 0x54(r1)
+/* 8030C498 003080F8 38 80 00 00 */ li r4, 0
+/* 8030C49C 003080FC 93 01 00 10 */ stw r24, 0x10(r1)
+/* 8030C4A0 00308100 80 B3 00 00 */ lwz r5, 0(r19)
+/* 8030C4A4 00308104 80 13 00 04 */ lwz r0, 4(r19)
+/* 8030C4A8 00308108 90 A1 00 18 */ stw r5, 0x18(r1)
+/* 8030C4AC 0030810C 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 8030C4B0 00308110 80 B3 00 08 */ lwz r5, 8(r19)
+/* 8030C4B4 00308114 80 13 00 0C */ lwz r0, 0xc(r19)
+/* 8030C4B8 00308118 90 A1 00 20 */ stw r5, 0x20(r1)
+/* 8030C4BC 0030811C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030C4C0 00308120 80 B3 00 10 */ lwz r5, 0x10(r19)
+/* 8030C4C4 00308124 80 13 00 14 */ lwz r0, 0x14(r19)
+/* 8030C4C8 00308128 90 A1 00 28 */ stw r5, 0x28(r1)
+/* 8030C4CC 0030812C 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 8030C4D0 00308130 80 B3 00 18 */ lwz r5, 0x18(r19)
+/* 8030C4D4 00308134 80 13 00 1C */ lwz r0, 0x1c(r19)
+/* 8030C4D8 00308138 90 A1 00 30 */ stw r5, 0x30(r1)
+/* 8030C4DC 0030813C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030C4E0 00308140 80 B3 00 20 */ lwz r5, 0x20(r19)
+/* 8030C4E4 00308144 80 13 00 24 */ lwz r0, 0x24(r19)
+/* 8030C4E8 00308148 90 A1 00 38 */ stw r5, 0x38(r1)
+/* 8030C4EC 0030814C 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 8030C4F0 00308150 80 B3 00 28 */ lwz r5, 0x28(r19)
+/* 8030C4F4 00308154 80 13 00 2C */ lwz r0, 0x2c(r19)
+/* 8030C4F8 00308158 90 A1 00 40 */ stw r5, 0x40(r1)
+/* 8030C4FC 0030815C 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030C500 00308160 80 B3 00 30 */ lwz r5, 0x30(r19)
+/* 8030C504 00308164 80 13 00 34 */ lwz r0, 0x34(r19)
+/* 8030C508 00308168 90 A1 00 48 */ stw r5, 0x48(r1)
+/* 8030C50C 0030816C 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 8030C510 00308170 48 00 19 E9 */ bl VFiPFENT_ITER_IteratorInitialize
+lbl_8030C514:
+/* 8030C514 00308174 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C518 00308178 41 82 00 10 */ beq lbl_8030C528
+/* 8030C51C 0030817C 2C 03 00 10 */ cmpwi r3, 0x10
+/* 8030C520 00308180 41 82 01 80 */ beq lbl_8030C6A0
+/* 8030C524 00308184 48 00 01 A4 */ b lbl_8030C6C8
+lbl_8030C528:
+/* 8030C528 00308188 80 61 00 54 */ lwz r3, 0x54(r1)
+/* 8030C52C 0030818C 3C 03 00 01 */ addis r0, r3, 1
+/* 8030C530 00308190 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030C534 00308194 41 82 01 6C */ beq lbl_8030C6A0
+/* 8030C538 00308198 2C 19 00 00 */ cmpwi r25, 0
+/* 8030C53C 0030819C 40 82 00 18 */ bne lbl_8030C554
+/* 8030C540 003081A0 2C 18 00 00 */ cmpwi r24, 0
+/* 8030C544 003081A4 40 82 00 10 */ bne lbl_8030C554
+/* 8030C548 003081A8 A3 A1 00 58 */ lhz r29, 0x58(r1)
+/* 8030C54C 003081AC 7C 7E 1B 78 */ mr r30, r3
+/* 8030C550 003081B0 7C 7C 1B 78 */ mr r28, r3
+lbl_8030C554:
+/* 8030C554 003081B4 2C 19 00 00 */ cmpwi r25, 0
+/* 8030C558 003081B8 40 82 00 58 */ bne lbl_8030C5B0
+/* 8030C55C 003081BC 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 8030C560 003081C0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C564 003081C4 41 82 00 0C */ beq lbl_8030C570
+/* 8030C568 003081C8 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030C56C 003081CC 40 82 00 38 */ bne lbl_8030C5A4
+lbl_8030C570:
+/* 8030C570 003081D0 7C 1C 18 40 */ cmplw r28, r3
+/* 8030C574 003081D4 41 82 00 28 */ beq lbl_8030C59C
+/* 8030C578 003081D8 38 1B 00 01 */ addi r0, r27, 1
+/* 8030C57C 003081DC 7C 00 00 34 */ cntlzw r0, r0
+/* 8030C580 003081E0 54 00 D9 7F */ rlwinm. r0, r0, 0x1b, 5, 0x1f
+/* 8030C584 003081E4 41 82 00 08 */ beq lbl_8030C58C
+/* 8030C588 003081E8 7C 7B 1B 78 */ mr r27, r3
+lbl_8030C58C:
+/* 8030C58C 003081EC 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C590 003081F0 40 82 00 08 */ bne lbl_8030C598
+/* 8030C594 003081F4 7C 7A 1B 78 */ mr r26, r3
+lbl_8030C598:
+/* 8030C598 003081F8 7C 7C 1B 78 */ mr r28, r3
+lbl_8030C59C:
+/* 8030C59C 003081FC 3B 18 00 01 */ addi r24, r24, 1
+/* 8030C5A0 00308200 48 00 00 10 */ b lbl_8030C5B0
+lbl_8030C5A4:
+/* 8030C5A4 00308204 3B 00 00 00 */ li r24, 0
+/* 8030C5A8 00308208 3B 60 FF FF */ li r27, -1
+/* 8030C5AC 0030820C 3B 40 FF FF */ li r26, -1
+lbl_8030C5B0:
+/* 8030C5B0 00308210 7C 18 90 40 */ cmplw r24, r18
+/* 8030C5B4 00308214 41 80 00 20 */ blt lbl_8030C5D4
+/* 8030C5B8 00308218 2C 19 00 00 */ cmpwi r25, 0
+/* 8030C5BC 0030821C 40 82 00 0C */ bne lbl_8030C5C8
+/* 8030C5C0 00308220 82 E1 00 10 */ lwz r23, 0x10(r1)
+/* 8030C5C4 00308224 3B 20 00 01 */ li r25, 1
+lbl_8030C5C8:
+/* 8030C5C8 00308228 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 8030C5CC 0030822C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C5D0 00308230 41 82 00 D0 */ beq lbl_8030C6A0
+lbl_8030C5D4:
+/* 8030C5D4 00308234 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 8030C5D8 00308238 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C5DC 0030823C 41 82 00 64 */ beq lbl_8030C640
+/* 8030C5E0 00308240 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030C5E4 00308244 41 82 00 5C */ beq lbl_8030C640
+/* 8030C5E8 00308248 7E A5 AB 78 */ mr r5, r21
+/* 8030C5EC 0030824C 38 61 00 80 */ addi r3, r1, 0x80
+/* 8030C5F0 00308250 38 81 00 10 */ addi r4, r1, 0x10
+/* 8030C5F4 00308254 39 01 00 08 */ addi r8, r1, 8
+/* 8030C5F8 00308258 38 C0 00 7F */ li r6, 0x7f
+/* 8030C5FC 0030825C 38 E0 00 00 */ li r7, 0
+/* 8030C600 00308260 4B FF EE 81 */ bl VFiPFENT_getEntry
+/* 8030C604 00308264 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C608 00308268 40 82 00 38 */ bne lbl_8030C640
+/* 8030C60C 0030826C 38 00 00 48 */ li r0, 0x48
+/* 8030C610 00308270 38 B1 FF FC */ addi r5, r17, -4
+/* 8030C614 00308274 38 81 00 7C */ addi r4, r1, 0x7c
+/* 8030C618 00308278 7C 09 03 A6 */ mtctr r0
+lbl_8030C61C:
+/* 8030C61C 0030827C 80 64 00 04 */ lwz r3, 4(r4)
+/* 8030C620 00308280 84 04 00 08 */ lwzu r0, 8(r4)
+/* 8030C624 00308284 90 65 00 04 */ stw r3, 4(r5)
+/* 8030C628 00308288 94 05 00 08 */ stwu r0, 8(r5)
+/* 8030C62C 0030828C 42 00 FF F0 */ bdnz lbl_8030C61C
+/* 8030C630 00308290 80 13 00 34 */ lwz r0, 0x34(r19)
+/* 8030C634 00308294 38 60 00 08 */ li r3, 8
+/* 8030C638 00308298 90 11 02 2C */ stw r0, 0x22c(r17)
+/* 8030C63C 0030829C 48 00 00 8C */ b lbl_8030C6C8
+lbl_8030C640:
+/* 8030C640 003082A0 A0 61 00 58 */ lhz r3, 0x58(r1)
+/* 8030C644 003082A4 A0 1F 00 00 */ lhz r0, 0(r31)
+/* 8030C648 003082A8 38 63 00 20 */ addi r3, r3, 0x20
+/* 8030C64C 003082AC 7C 03 00 00 */ cmpw r3, r0
+/* 8030C650 003082B0 40 82 00 40 */ bne lbl_8030C690
+/* 8030C654 003082B4 80 81 00 50 */ lwz r4, 0x50(r1)
+/* 8030C658 003082B8 7E 63 9B 78 */ mr r3, r19
+/* 8030C65C 003082BC 38 C1 00 0C */ addi r6, r1, 0xc
+/* 8030C660 003082C0 38 A0 00 00 */ li r5, 0
+/* 8030C664 003082C4 38 84 00 01 */ addi r4, r4, 1
+/* 8030C668 003082C8 48 00 39 01 */ bl VFiPFFAT_GetSectorSpecified
+/* 8030C66C 003082CC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C670 003082D0 41 82 00 08 */ beq lbl_8030C678
+/* 8030C674 003082D4 48 00 00 54 */ b lbl_8030C6C8
+lbl_8030C678:
+/* 8030C678 003082D8 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030C67C 003082DC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030C680 003082E0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030C684 003082E4 40 82 00 0C */ bne lbl_8030C690
+/* 8030C688 003082E8 28 19 00 01 */ cmplwi r25, 1
+/* 8030C68C 003082EC 41 82 00 14 */ beq lbl_8030C6A0
+lbl_8030C690:
+/* 8030C690 003082F0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C694 003082F4 38 80 00 01 */ li r4, 1
+/* 8030C698 003082F8 48 00 1A 71 */ bl VFiPFENT_ITER_Advance
+/* 8030C69C 003082FC 4B FF FE 78 */ b lbl_8030C514
+lbl_8030C6A0:
+/* 8030C6A0 00308300 2C 19 00 00 */ cmpwi r25, 0
+/* 8030C6A4 00308304 40 82 00 0C */ bne lbl_8030C6B0
+/* 8030C6A8 00308308 38 60 00 05 */ li r3, 5
+/* 8030C6AC 0030830C 48 00 00 1C */ b lbl_8030C6C8
+lbl_8030C6B0:
+/* 8030C6B0 00308310 93 74 00 00 */ stw r27, 0(r20)
+/* 8030C6B4 00308314 38 60 00 00 */ li r3, 0
+/* 8030C6B8 00308318 93 54 00 04 */ stw r26, 4(r20)
+/* 8030C6BC 0030831C 93 D1 02 38 */ stw r30, 0x238(r17)
+/* 8030C6C0 00308320 B3 B1 02 3C */ sth r29, 0x23c(r17)
+/* 8030C6C4 00308324 92 F6 00 00 */ stw r23, 0(r22)
+lbl_8030C6C8:
+/* 8030C6C8 00308328 39 61 03 00 */ addi r11, r1, 0x300
+/* 8030C6CC 0030832C 4B EB AA 81 */ bl _restgpr_17
+/* 8030C6D0 00308330 80 01 03 04 */ lwz r0, 0x304(r1)
+/* 8030C6D4 00308334 7C 08 03 A6 */ mtlr r0
+/* 8030C6D8 00308338 38 21 03 00 */ addi r1, r1, 0x300
+/* 8030C6DC 0030833C 4E 80 00 20 */ blr
+
+.global VFiPFENT_allocateEntry
+VFiPFENT_allocateEntry:
+/* 8030C6E0 00308340 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030C6E4 00308344 7C 08 02 A6 */ mflr r0
+/* 8030C6E8 00308348 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030C6EC 0030834C 39 01 00 08 */ addi r8, r1, 8
+/* 8030C6F0 00308350 4B FF FC D5 */ bl VFiPFENT_allocateEntryPos
+/* 8030C6F4 00308354 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030C6F8 00308358 7C 08 03 A6 */ mtlr r0
+/* 8030C6FC 0030835C 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030C700 00308360 4E 80 00 20 */ blr
+
+.global VFiPFENT_GetRootDir
+VFiPFENT_GetRootDir:
+/* 8030C704 00308364 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C708 00308368 40 82 00 0C */ bne lbl_8030C714
+/* 8030C70C 0030836C 38 60 00 0A */ li r3, 0xa
+/* 8030C710 00308370 4E 80 00 20 */ blr
+lbl_8030C714:
+/* 8030C714 00308374 2C 04 00 00 */ cmpwi r4, 0
+/* 8030C718 00308378 40 82 00 0C */ bne lbl_8030C724
+/* 8030C71C 0030837C 38 60 00 0A */ li r3, 0xa
+/* 8030C720 00308380 4E 80 00 20 */ blr
+lbl_8030C724:
+/* 8030C724 00308384 A0 03 18 78 */ lhz r0, 0x1878(r3)
+/* 8030C728 00308388 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 8030C72C 0030838C 40 82 00 0C */ bne lbl_8030C738
+/* 8030C730 00308390 38 60 00 09 */ li r3, 9
+/* 8030C734 00308394 4E 80 00 20 */ blr
+lbl_8030C738:
+/* 8030C738 00308398 39 00 00 00 */ li r8, 0
+/* 8030C73C 0030839C 39 20 00 5C */ li r9, 0x5c
+/* 8030C740 003083A0 38 E0 00 10 */ li r7, 0x10
+/* 8030C744 003083A4 38 C0 00 03 */ li r6, 3
+/* 8030C748 003083A8 38 A0 00 01 */ li r5, 1
+/* 8030C74C 003083AC 38 00 FF FF */ li r0, -1
+/* 8030C750 003083B0 90 64 02 2C */ stw r3, 0x22c(r4)
+/* 8030C754 003083B4 38 60 00 00 */ li r3, 0
+/* 8030C758 003083B8 B1 24 00 00 */ sth r9, 0(r4)
+/* 8030C75C 003083BC B1 04 00 02 */ sth r8, 2(r4)
+/* 8030C760 003083C0 99 04 02 0A */ stb r8, 0x20a(r4)
+/* 8030C764 003083C4 99 04 02 0B */ stb r8, 0x20b(r4)
+/* 8030C768 003083C8 99 04 02 0C */ stb r8, 0x20c(r4)
+/* 8030C76C 003083CC 99 24 02 0E */ stb r9, 0x20e(r4)
+/* 8030C770 003083D0 99 04 02 0F */ stb r8, 0x20f(r4)
+/* 8030C774 003083D4 99 04 02 1B */ stb r8, 0x21b(r4)
+/* 8030C778 003083D8 98 E4 02 1C */ stb r7, 0x21c(r4)
+/* 8030C77C 003083DC 99 04 02 1D */ stb r8, 0x21d(r4)
+/* 8030C780 003083E0 B1 04 02 1E */ sth r8, 0x21e(r4)
+/* 8030C784 003083E4 B1 04 02 20 */ sth r8, 0x220(r4)
+/* 8030C788 003083E8 B1 04 02 22 */ sth r8, 0x222(r4)
+/* 8030C78C 003083EC B1 04 02 24 */ sth r8, 0x224(r4)
+/* 8030C790 003083F0 B1 04 02 26 */ sth r8, 0x226(r4)
+/* 8030C794 003083F4 91 04 02 28 */ stw r8, 0x228(r4)
+/* 8030C798 003083F8 90 C4 02 30 */ stw r6, 0x230(r4)
+/* 8030C79C 003083FC 90 A4 02 34 */ stw r5, 0x234(r4)
+/* 8030C7A0 00308400 90 04 02 38 */ stw r0, 0x238(r4)
+/* 8030C7A4 00308404 B1 04 02 3C */ sth r8, 0x23c(r4)
+/* 8030C7A8 00308408 4E 80 00 20 */ blr
+
+.global VFiPFENT_MakeRootDir
+VFiPFENT_MakeRootDir:
+/* 8030C7AC 0030840C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030C7B0 00308410 7C 08 02 A6 */ mflr r0
+/* 8030C7B4 00308414 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C7B8 00308418 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030C7BC 0030841C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030C7C0 00308420 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030C7C4 00308424 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030C7C8 00308428 7C 7D 1B 78 */ mr r29, r3
+/* 8030C7CC 0030842C 40 82 00 0C */ bne lbl_8030C7D8
+/* 8030C7D0 00308430 38 60 00 0A */ li r3, 0xa
+/* 8030C7D4 00308434 48 00 01 00 */ b lbl_8030C8D4
+lbl_8030C7D8:
+/* 8030C7D8 00308438 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030C7DC 0030843C 2C 00 00 02 */ cmpwi r0, 2
+/* 8030C7E0 00308440 41 82 00 14 */ beq lbl_8030C7F4
+/* 8030C7E4 00308444 40 80 00 D4 */ bge lbl_8030C8B8
+/* 8030C7E8 00308448 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C7EC 0030844C 40 80 00 10 */ bge lbl_8030C7FC
+/* 8030C7F0 00308450 48 00 00 C8 */ b lbl_8030C8B8
+lbl_8030C7F4:
+/* 8030C7F4 00308454 48 00 43 D1 */ bl VFiPFFAT_MakeRootDir
+/* 8030C7F8 00308458 48 00 00 C8 */ b lbl_8030C8C0
+lbl_8030C7FC:
+/* 8030C7FC 0030845C 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030C800 00308460 38 80 FF FF */ li r4, -1
+/* 8030C804 00308464 4B FF DE B5 */ bl VFiPFCACHE_AllocateDataPage
+/* 8030C808 00308468 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C80C 0030846C 41 82 00 08 */ beq lbl_8030C814
+/* 8030C810 00308470 48 00 00 C4 */ b lbl_8030C8D4
+lbl_8030C814:
+/* 8030C814 00308474 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030C818 00308478 38 80 00 00 */ li r4, 0
+/* 8030C81C 0030847C A0 BD 00 00 */ lhz r5, 0(r29)
+/* 8030C820 00308480 80 63 00 08 */ lwz r3, 8(r3)
+/* 8030C824 00308484 4B FF 87 B1 */ bl VFipf_memset
+/* 8030C828 00308488 83 DD 00 2C */ lwz r30, 0x2c(r29)
+/* 8030C82C 0030848C 48 00 00 70 */ b lbl_8030C89C
+lbl_8030C830:
+/* 8030C830 00308490 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030C834 00308494 7F A3 EB 78 */ mr r3, r29
+/* 8030C838 00308498 A0 FD 00 00 */ lhz r7, 0(r29)
+/* 8030C83C 0030849C 7F C5 F3 78 */ mr r5, r30
+/* 8030C840 003084A0 80 84 00 08 */ lwz r4, 8(r4)
+/* 8030C844 003084A4 39 01 00 08 */ addi r8, r1, 8
+/* 8030C848 003084A8 38 C0 00 00 */ li r6, 0
+/* 8030C84C 003084AC 39 20 00 00 */ li r9, 0
+/* 8030C850 003084B0 48 00 C5 99 */ bl VFiPFSEC_WriteData
+/* 8030C854 003084B4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C858 003084B8 7C 7F 1B 78 */ mr r31, r3
+/* 8030C85C 003084BC 41 82 00 18 */ beq lbl_8030C874
+/* 8030C860 003084C0 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030C864 003084C4 7F A3 EB 78 */ mr r3, r29
+/* 8030C868 003084C8 4B FF DF 55 */ bl VFiPFCACHE_FreeDataPage
+/* 8030C86C 003084CC 7F E3 FB 78 */ mr r3, r31
+/* 8030C870 003084D0 48 00 00 64 */ b lbl_8030C8D4
+lbl_8030C874:
+/* 8030C874 003084D4 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030C878 003084D8 A0 1D 00 00 */ lhz r0, 0(r29)
+/* 8030C87C 003084DC 7C 03 00 40 */ cmplw r3, r0
+/* 8030C880 003084E0 41 82 00 18 */ beq lbl_8030C898
+/* 8030C884 003084E4 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030C888 003084E8 7F A3 EB 78 */ mr r3, r29
+/* 8030C88C 003084EC 4B FF DF 31 */ bl VFiPFCACHE_FreeDataPage
+/* 8030C890 003084F0 38 60 00 11 */ li r3, 0x11
+/* 8030C894 003084F4 48 00 00 40 */ b lbl_8030C8D4
+lbl_8030C898:
+/* 8030C898 003084F8 3B DE 00 01 */ addi r30, r30, 1
+lbl_8030C89C:
+/* 8030C89C 003084FC 80 1D 00 30 */ lwz r0, 0x30(r29)
+/* 8030C8A0 00308500 7C 1E 00 40 */ cmplw r30, r0
+/* 8030C8A4 00308504 41 80 FF 8C */ blt lbl_8030C830
+/* 8030C8A8 00308508 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030C8AC 0030850C 7F A3 EB 78 */ mr r3, r29
+/* 8030C8B0 00308510 4B FF DF 0D */ bl VFiPFCACHE_FreeDataPage
+/* 8030C8B4 00308514 48 00 00 0C */ b lbl_8030C8C0
+lbl_8030C8B8:
+/* 8030C8B8 00308518 38 60 00 07 */ li r3, 7
+/* 8030C8BC 0030851C 48 00 00 18 */ b lbl_8030C8D4
+lbl_8030C8C0:
+/* 8030C8C0 00308520 3C 60 80 44 */ lis r3, lbl_804465D8@ha
+/* 8030C8C4 00308524 7F A4 EB 78 */ mr r4, r29
+/* 8030C8C8 00308528 38 63 65 D8 */ addi r3, r3, lbl_804465D8@l
+/* 8030C8CC 0030852C 48 00 D2 E1 */ bl VFiPFVOL_LoadVolumeLabelFromBuf
+/* 8030C8D0 00308530 38 60 00 00 */ li r3, 0
+lbl_8030C8D4:
+/* 8030C8D4 00308534 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030C8D8 00308538 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030C8DC 0030853C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030C8E0 00308540 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030C8E4 00308544 7C 08 03 A6 */ mtlr r0
+/* 8030C8E8 00308548 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030C8EC 0030854C 4E 80 00 20 */ blr
+
+.global VFiPFENT_updateEntry
+VFiPFENT_updateEntry:
+/* 8030C8F0 00308550 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030C8F4 00308554 7C 08 02 A6 */ mflr r0
+/* 8030C8F8 00308558 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C8FC 0030855C 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030C900 00308560 93 E1 00 3C */ stw r31, 0x3c(r1)
+/* 8030C904 00308564 93 C1 00 38 */ stw r30, 0x38(r1)
+/* 8030C908 00308568 7C 7E 1B 78 */ mr r30, r3
+/* 8030C90C 0030856C 93 A1 00 34 */ stw r29, 0x34(r1)
+/* 8030C910 00308570 40 82 00 0C */ bne lbl_8030C91C
+/* 8030C914 00308574 38 60 00 0A */ li r3, 0xa
+/* 8030C918 00308578 48 00 01 68 */ b lbl_8030CA80
+lbl_8030C91C:
+/* 8030C91C 0030857C 83 E3 02 2C */ lwz r31, 0x22c(r3)
+/* 8030C920 00308580 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030C924 00308584 40 82 00 0C */ bne lbl_8030C930
+/* 8030C928 00308588 38 60 00 0A */ li r3, 0xa
+/* 8030C92C 0030858C 48 00 01 54 */ b lbl_8030CA80
+lbl_8030C930:
+/* 8030C930 00308590 A0 BF 00 24 */ lhz r5, 0x24(r31)
+/* 8030C934 00308594 80 1F 00 30 */ lwz r0, 0x30(r31)
+/* 8030C938 00308598 80 C3 02 38 */ lwz r6, 0x238(r3)
+/* 8030C93C 0030859C 7C 05 00 50 */ subf r0, r5, r0
+/* 8030C940 003085A0 7C 06 00 40 */ cmplw r6, r0
+/* 8030C944 003085A4 40 80 00 0C */ bge lbl_8030C950
+/* 8030C948 003085A8 38 60 00 1C */ li r3, 0x1c
+/* 8030C94C 003085AC 48 00 01 34 */ b lbl_8030CA80
+lbl_8030C950:
+/* 8030C950 003085B0 80 1F 00 08 */ lwz r0, 8(r31)
+/* 8030C954 003085B4 7C 06 00 40 */ cmplw r6, r0
+/* 8030C958 003085B8 41 80 00 0C */ blt lbl_8030C964
+/* 8030C95C 003085BC 38 60 00 10 */ li r3, 0x10
+/* 8030C960 003085C0 48 00 01 20 */ b lbl_8030CA80
+lbl_8030C964:
+/* 8030C964 003085C4 80 03 02 34 */ lwz r0, 0x234(r3)
+/* 8030C968 003085C8 28 00 00 01 */ cmplwi r0, 1
+/* 8030C96C 003085CC 40 82 00 0C */ bne lbl_8030C978
+/* 8030C970 003085D0 38 60 00 0E */ li r3, 0xe
+/* 8030C974 003085D4 48 00 01 0C */ b lbl_8030CA80
+lbl_8030C978:
+/* 8030C978 003085D8 28 04 00 01 */ cmplwi r4, 1
+/* 8030C97C 003085DC 40 82 00 10 */ bne lbl_8030C98C
+/* 8030C980 003085E0 88 03 02 1C */ lbz r0, 0x21c(r3)
+/* 8030C984 003085E4 60 00 00 20 */ ori r0, r0, 0x20
+/* 8030C988 003085E8 98 03 02 1C */ stb r0, 0x21c(r3)
+lbl_8030C98C:
+/* 8030C98C 003085EC 88 BE 02 1C */ lbz r5, 0x21c(r30)
+/* 8030C990 003085F0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C994 003085F4 38 9E 02 0E */ addi r4, r30, 0x20e
+/* 8030C998 003085F8 48 00 A8 B1 */ bl VFiPFPATH_putShortName
+/* 8030C99C 003085FC 88 01 00 10 */ lbz r0, 0x10(r1)
+/* 8030C9A0 00308600 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030C9A4 00308604 40 82 00 0C */ bne lbl_8030C9B0
+/* 8030C9A8 00308608 38 00 00 05 */ li r0, 5
+/* 8030C9AC 0030860C 98 01 00 10 */ stb r0, 0x10(r1)
+lbl_8030C9B0:
+/* 8030C9B0 00308610 88 1E 02 1C */ lbz r0, 0x21c(r30)
+/* 8030C9B4 00308614 7F E3 FB 78 */ mr r3, r31
+/* 8030C9B8 00308618 3B A1 00 1E */ addi r29, r1, 0x1e
+/* 8030C9BC 0030861C 39 81 00 20 */ addi r12, r1, 0x20
+/* 8030C9C0 00308620 98 01 00 1B */ stb r0, 0x1b(r1)
+/* 8030C9C4 00308624 39 61 00 22 */ addi r11, r1, 0x22
+/* 8030C9C8 00308628 39 41 00 26 */ addi r10, r1, 0x26
+/* 8030C9CC 0030862C 38 C1 00 28 */ addi r6, r1, 0x28
+/* 8030C9D0 00308630 88 FE 02 1B */ lbz r7, 0x21b(r30)
+/* 8030C9D4 00308634 38 A1 00 24 */ addi r5, r1, 0x24
+/* 8030C9D8 00308638 38 01 00 2A */ addi r0, r1, 0x2a
+/* 8030C9DC 0030863C 38 81 00 10 */ addi r4, r1, 0x10
+/* 8030C9E0 00308640 98 E1 00 1C */ stb r7, 0x1c(r1)
+/* 8030C9E4 00308644 39 01 00 08 */ addi r8, r1, 8
+/* 8030C9E8 00308648 38 E0 00 20 */ li r7, 0x20
+/* 8030C9EC 0030864C 39 20 00 00 */ li r9, 0
+/* 8030C9F0 00308650 8B FE 02 1D */ lbz r31, 0x21d(r30)
+/* 8030C9F4 00308654 9B E1 00 1D */ stb r31, 0x1d(r1)
+/* 8030C9F8 00308658 A3 FE 02 1E */ lhz r31, 0x21e(r30)
+/* 8030C9FC 0030865C 7F E0 EF 2C */ sthbrx r31, 0, r29
+/* 8030CA00 00308660 A3 BE 02 20 */ lhz r29, 0x220(r30)
+/* 8030CA04 00308664 7F A0 67 2C */ sthbrx r29, 0, r12
+/* 8030CA08 00308668 A1 9E 02 22 */ lhz r12, 0x222(r30)
+/* 8030CA0C 0030866C 7D 80 5F 2C */ sthbrx r12, 0, r11
+/* 8030CA10 00308670 A1 7E 02 24 */ lhz r11, 0x224(r30)
+/* 8030CA14 00308674 7D 60 57 2C */ sthbrx r11, 0, r10
+/* 8030CA18 00308678 A1 5E 02 26 */ lhz r10, 0x226(r30)
+/* 8030CA1C 0030867C 7D 40 37 2C */ sthbrx r10, 0, r6
+/* 8030CA20 00308680 80 DE 02 34 */ lwz r6, 0x234(r30)
+/* 8030CA24 00308684 54 C6 84 3E */ srwi r6, r6, 0x10
+/* 8030CA28 00308688 7C C0 2F 2C */ sthbrx r6, 0, r5
+/* 8030CA2C 0030868C 80 BE 02 34 */ lwz r5, 0x234(r30)
+/* 8030CA30 00308690 7C A0 07 2C */ sthbrx r5, 0, r0
+/* 8030CA34 00308694 80 DE 02 28 */ lwz r6, 0x228(r30)
+/* 8030CA38 00308698 54 C5 42 1E */ rlwinm r5, r6, 8, 8, 0xf
+/* 8030CA3C 0030869C 54 C0 C4 2E */ rlwinm r0, r6, 0x18, 0x10, 0x17
+/* 8030CA40 003086A0 50 C5 C0 0E */ rlwimi r5, r6, 0x18, 0, 7
+/* 8030CA44 003086A4 50 C0 46 3E */ rlwimi r0, r6, 8, 0x18, 0x1f
+/* 8030CA48 003086A8 7C A0 03 78 */ or r0, r5, r0
+/* 8030CA4C 003086AC 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 8030CA50 003086B0 80 BE 02 38 */ lwz r5, 0x238(r30)
+/* 8030CA54 003086B4 A0 DE 02 3C */ lhz r6, 0x23c(r30)
+/* 8030CA58 003086B8 48 00 C3 91 */ bl VFiPFSEC_WriteData
+/* 8030CA5C 003086BC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CA60 003086C0 41 82 00 08 */ beq lbl_8030CA68
+/* 8030CA64 003086C4 48 00 00 1C */ b lbl_8030CA80
+lbl_8030CA68:
+/* 8030CA68 003086C8 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030CA6C 003086CC 38 64 FF E0 */ addi r3, r4, -32
+/* 8030CA70 003086D0 20 04 00 20 */ subfic r0, r4, 0x20
+/* 8030CA74 003086D4 7C 60 03 78 */ or r0, r3, r0
+/* 8030CA78 003086D8 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030CA7C 003086DC 70 03 00 11 */ andi. r3, r0, 0x11
+lbl_8030CA80:
+/* 8030CA80 003086E0 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030CA84 003086E4 83 E1 00 3C */ lwz r31, 0x3c(r1)
+/* 8030CA88 003086E8 83 C1 00 38 */ lwz r30, 0x38(r1)
+/* 8030CA8C 003086EC 83 A1 00 34 */ lwz r29, 0x34(r1)
+/* 8030CA90 003086F0 7C 08 03 A6 */ mtlr r0
+/* 8030CA94 003086F4 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030CA98 003086F8 4E 80 00 20 */ blr
+
+.global VFiPFENT_AdjustSFN
+VFiPFENT_AdjustSFN:
+/* 8030CA9C 003086FC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030CAA0 00308700 7C 08 02 A6 */ mflr r0
+/* 8030CAA4 00308704 38 A4 00 01 */ addi r5, r4, 1
+/* 8030CAA8 00308708 38 E0 00 01 */ li r7, 1
+/* 8030CAAC 0030870C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030CAB0 00308710 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030CAB4 00308714 7C 9F 23 78 */ mr r31, r4
+/* 8030CAB8 00308718 48 00 00 0C */ b lbl_8030CAC4
+lbl_8030CABC:
+/* 8030CABC 0030871C 38 E7 00 01 */ addi r7, r7, 1
+/* 8030CAC0 00308720 38 A5 00 01 */ addi r5, r5, 1
+lbl_8030CAC4:
+/* 8030CAC4 00308724 88 C5 00 00 */ lbz r6, 0(r5)
+/* 8030CAC8 00308728 7C C0 07 74 */ extsb r0, r6
+/* 8030CACC 0030872C 2C 00 00 7E */ cmpwi r0, 0x7e
+/* 8030CAD0 00308730 41 82 00 14 */ beq lbl_8030CAE4
+/* 8030CAD4 00308734 2C 00 00 00 */ cmpwi r0, 0
+/* 8030CAD8 00308738 41 82 00 0C */ beq lbl_8030CAE4
+/* 8030CADC 0030873C 28 07 00 07 */ cmplwi r7, 7
+/* 8030CAE0 00308740 41 80 FF DC */ blt lbl_8030CABC
+lbl_8030CAE4:
+/* 8030CAE4 00308744 28 07 00 07 */ cmplwi r7, 7
+/* 8030CAE8 00308748 40 80 00 78 */ bge lbl_8030CB60
+/* 8030CAEC 0030874C 7C C0 07 74 */ extsb r0, r6
+/* 8030CAF0 00308750 2C 00 00 7E */ cmpwi r0, 0x7e
+/* 8030CAF4 00308754 40 82 00 6C */ bne lbl_8030CB60
+/* 8030CAF8 00308758 38 E7 00 01 */ addi r7, r7, 1
+/* 8030CAFC 0030875C 7C 84 3A 14 */ add r4, r4, r7
+/* 8030CB00 00308760 48 00 00 08 */ b lbl_8030CB08
+lbl_8030CB04:
+/* 8030CB04 00308764 38 84 00 01 */ addi r4, r4, 1
+lbl_8030CB08:
+/* 8030CB08 00308768 88 A4 00 00 */ lbz r5, 0(r4)
+/* 8030CB0C 0030876C 7C A0 07 74 */ extsb r0, r5
+/* 8030CB10 00308770 2C 00 00 30 */ cmpwi r0, 0x30
+/* 8030CB14 00308774 41 80 00 0C */ blt lbl_8030CB20
+/* 8030CB18 00308778 2C 00 00 39 */ cmpwi r0, 0x39
+/* 8030CB1C 0030877C 40 81 FF E8 */ ble lbl_8030CB04
+lbl_8030CB20:
+/* 8030CB20 00308780 7C A0 07 74 */ extsb r0, r5
+/* 8030CB24 00308784 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 8030CB28 00308788 41 82 00 0C */ beq lbl_8030CB34
+/* 8030CB2C 0030878C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030CB30 00308790 40 82 00 30 */ bne lbl_8030CB60
+lbl_8030CB34:
+/* 8030CB34 00308794 7F E4 FB 78 */ mr r4, r31
+/* 8030CB38 00308798 38 A1 00 08 */ addi r5, r1, 8
+/* 8030CB3C 0030879C 4B FF EF 55 */ bl VFiPFENT_findEmptyTailSFN
+/* 8030CB40 003087A0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CB44 003087A4 41 82 00 08 */ beq lbl_8030CB4C
+/* 8030CB48 003087A8 48 00 00 1C */ b lbl_8030CB64
+lbl_8030CB4C:
+/* 8030CB4C 003087AC 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030CB50 003087B0 28 04 00 01 */ cmplwi r4, 1
+/* 8030CB54 003087B4 41 82 00 0C */ beq lbl_8030CB60
+/* 8030CB58 003087B8 7F E3 FB 78 */ mr r3, r31
+/* 8030CB5C 003087BC 48 00 B6 91 */ bl VFiPFPATH_parseShortNameNumeric
+lbl_8030CB60:
+/* 8030CB60 003087C0 38 60 00 00 */ li r3, 0
+lbl_8030CB64:
+/* 8030CB64 003087C4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030CB68 003087C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030CB6C 003087CC 7C 08 03 A6 */ mtlr r0
+/* 8030CB70 003087D0 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030CB74 003087D4 4E 80 00 20 */ blr
+
+.global VFiPFENT_getcurrentDateTimeForEnt
+VFiPFENT_getcurrentDateTimeForEnt:
+/* 8030CB78 003087D8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030CB7C 003087DC 7C 08 02 A6 */ mflr r0
+/* 8030CB80 003087E0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030CB84 003087E4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030CB88 003087E8 7C 9F 23 78 */ mr r31, r4
+/* 8030CB8C 003087EC 38 81 00 08 */ addi r4, r1, 8
+/* 8030CB90 003087F0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030CB94 003087F4 7C 7E 1B 78 */ mr r30, r3
+/* 8030CB98 003087F8 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030CB9C 003087FC 48 00 D8 A1 */ bl func_8031A43C
+/* 8030CBA0 00308800 A0 61 00 10 */ lhz r3, 0x10(r1)
+/* 8030CBA4 00308804 A0 81 00 14 */ lhz r4, 0x14(r1)
+/* 8030CBA8 00308808 38 03 F8 44 */ addi r0, r3, -1980
+/* 8030CBAC 0030880C A0 61 00 12 */ lhz r3, 0x12(r1)
+/* 8030CBB0 00308810 54 00 4C 2C */ rlwinm r0, r0, 9, 0x10, 0x16
+/* 8030CBB4 00308814 50 60 2D F4 */ rlwimi r0, r3, 5, 0x17, 0x1a
+/* 8030CBB8 00308818 50 80 06 FE */ rlwimi r0, r4, 0, 0x1b, 0x1f
+/* 8030CBBC 0030881C B0 1E 00 00 */ sth r0, 0(r30)
+/* 8030CBC0 00308820 A0 01 00 08 */ lhz r0, 8(r1)
+/* 8030CBC4 00308824 A0 81 00 0C */ lhz r4, 0xc(r1)
+/* 8030CBC8 00308828 A0 61 00 0A */ lhz r3, 0xa(r1)
+/* 8030CBCC 0030882C 54 00 5C 28 */ rlwinm r0, r0, 0xb, 0x10, 0x14
+/* 8030CBD0 00308830 50 60 2D 74 */ rlwimi r0, r3, 5, 0x15, 0x1a
+/* 8030CBD4 00308834 50 80 FE FE */ rlwimi r0, r4, 0x1f, 0x1b, 0x1f
+/* 8030CBD8 00308838 B0 1F 00 00 */ sth r0, 0(r31)
+/* 8030CBDC 0030883C A0 01 00 0E */ lhz r0, 0xe(r1)
+/* 8030CBE0 00308840 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030CBE4 00308844 54 03 06 3E */ clrlwi r3, r0, 0x18
+/* 8030CBE8 00308848 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030CBEC 0030884C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030CBF0 00308850 7C 08 03 A6 */ mtlr r0
+/* 8030CBF4 00308854 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030CBF8 00308858 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_entry_iterator.s b/asm/SDK/VF/pf_entry_iterator.s new file mode 100644 index 0000000..09cb677 --- /dev/null +++ b/asm/SDK/VF/pf_entry_iterator.s @@ -0,0 +1,1818 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFENT_RecalcEntryIterator
+VFiPFENT_RecalcEntryIterator:
+/* 8030CBFC 0030885C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030CC00 00308860 7C 08 02 A6 */ mflr r0
+/* 8030CC04 00308864 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030CC08 00308868 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030CC0C 0030886C 7C 7F 1B 78 */ mr r31, r3
+/* 8030CC10 00308870 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030CC14 00308874 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030CC18 00308878 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8030CC1C 0030887C 7C 9C 23 78 */ mr r28, r4
+/* 8030CC20 00308880 80 A3 00 00 */ lwz r5, 0(r3)
+/* 8030CC24 00308884 88 03 00 6C */ lbz r0, 0x6c(r3)
+/* 8030CC28 00308888 83 C3 00 40 */ lwz r30, 0x40(r3)
+/* 8030CC2C 0030888C 7C BD 04 30 */ srw r29, r5, r0
+/* 8030CC30 00308890 7C 1D F0 40 */ cmplw r29, r30
+/* 8030CC34 00308894 41 82 01 3C */ beq lbl_8030CD70
+/* 8030CC38 00308898 93 A3 00 40 */ stw r29, 0x40(r3)
+/* 8030CC3C 0030889C 38 C3 00 44 */ addi r6, r3, 0x44
+/* 8030CC40 003088A0 7F A4 EB 78 */ mr r4, r29
+/* 8030CC44 003088A4 38 A0 00 00 */ li r5, 0
+/* 8030CC48 003088A8 38 63 00 08 */ addi r3, r3, 8
+/* 8030CC4C 003088AC 48 00 33 1D */ bl VFiPFFAT_GetSectorSpecified
+/* 8030CC50 003088B0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CC54 003088B4 41 82 00 08 */ beq lbl_8030CC5C
+/* 8030CC58 003088B8 48 00 01 30 */ b lbl_8030CD88
+lbl_8030CC5C:
+/* 8030CC5C 003088BC 80 7F 00 44 */ lwz r3, 0x44(r31)
+/* 8030CC60 003088C0 3C 03 00 01 */ addis r0, r3, 1
+/* 8030CC64 003088C4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030CC68 003088C8 40 82 01 08 */ bne lbl_8030CD70
+/* 8030CC6C 003088CC 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030CC70 003088D0 41 82 01 00 */ beq lbl_8030CD70
+/* 8030CC74 003088D4 7F A4 EB 78 */ mr r4, r29
+/* 8030CC78 003088D8 38 7F 00 08 */ addi r3, r31, 8
+/* 8030CC7C 003088DC 38 DF 00 44 */ addi r6, r31, 0x44
+/* 8030CC80 003088E0 38 A0 00 01 */ li r5, 1
+/* 8030CC84 003088E4 48 00 32 E5 */ bl VFiPFFAT_GetSectorSpecified
+/* 8030CC88 003088E8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CC8C 003088EC 41 82 00 08 */ beq lbl_8030CC94
+/* 8030CC90 003088F0 48 00 00 F8 */ b lbl_8030CD88
+lbl_8030CC94:
+/* 8030CC94 003088F4 80 7F 00 44 */ lwz r3, 0x44(r31)
+/* 8030CC98 003088F8 3C 03 00 01 */ addis r0, r3, 1
+/* 8030CC9C 003088FC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030CCA0 00308900 41 82 00 D0 */ beq lbl_8030CD70
+/* 8030CCA4 00308904 3C 1E 00 01 */ addis r0, r30, 1
+/* 8030CCA8 00308908 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030CCAC 0030890C 41 82 00 C4 */ beq lbl_8030CD70
+/* 8030CCB0 00308910 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8030CCB4 00308914 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030CCB8 00308918 38 80 FF FF */ li r4, -1
+/* 8030CCBC 0030891C 4B FF D9 FD */ bl VFiPFCACHE_AllocateDataPage
+/* 8030CCC0 00308920 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CCC4 00308924 41 82 00 08 */ beq lbl_8030CCCC
+/* 8030CCC8 00308928 48 00 00 C0 */ b lbl_8030CD88
+lbl_8030CCCC:
+/* 8030CCCC 0030892C 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030CCD0 00308930 38 80 00 00 */ li r4, 0
+/* 8030CCD4 00308934 80 BF 00 04 */ lwz r5, 4(r31)
+/* 8030CCD8 00308938 80 63 00 08 */ lwz r3, 8(r3)
+/* 8030CCDC 0030893C A0 A5 00 00 */ lhz r5, 0(r5)
+/* 8030CCE0 00308940 4B FF 82 F5 */ bl VFipf_memset
+/* 8030CCE4 00308944 3B A0 00 00 */ li r29, 0
+/* 8030CCE8 00308948 48 00 00 70 */ b lbl_8030CD58
+lbl_8030CCEC:
+/* 8030CCEC 0030894C 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030CCF0 00308950 39 01 00 08 */ addi r8, r1, 8
+/* 8030CCF4 00308954 80 1F 00 44 */ lwz r0, 0x44(r31)
+/* 8030CCF8 00308958 38 C0 00 00 */ li r6, 0
+/* 8030CCFC 0030895C 80 84 00 08 */ lwz r4, 8(r4)
+/* 8030CD00 00308960 39 20 00 00 */ li r9, 0
+/* 8030CD04 00308964 A0 E3 00 00 */ lhz r7, 0(r3)
+/* 8030CD08 00308968 7C A0 EA 14 */ add r5, r0, r29
+/* 8030CD0C 0030896C 48 00 C0 DD */ bl VFiPFSEC_WriteData
+/* 8030CD10 00308970 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CD14 00308974 7C 7E 1B 78 */ mr r30, r3
+/* 8030CD18 00308978 41 82 00 18 */ beq lbl_8030CD30
+/* 8030CD1C 0030897C 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8030CD20 00308980 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030CD24 00308984 4B FF DA 99 */ bl VFiPFCACHE_FreeDataPage
+/* 8030CD28 00308988 7F C3 F3 78 */ mr r3, r30
+/* 8030CD2C 0030898C 48 00 00 5C */ b lbl_8030CD88
+lbl_8030CD30:
+/* 8030CD30 00308990 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8030CD34 00308994 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030CD38 00308998 A0 03 00 00 */ lhz r0, 0(r3)
+/* 8030CD3C 0030899C 7C 04 00 40 */ cmplw r4, r0
+/* 8030CD40 003089A0 41 82 00 14 */ beq lbl_8030CD54
+/* 8030CD44 003089A4 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030CD48 003089A8 4B FF DA 75 */ bl VFiPFCACHE_FreeDataPage
+/* 8030CD4C 003089AC 38 60 00 11 */ li r3, 0x11
+/* 8030CD50 003089B0 48 00 00 38 */ b lbl_8030CD88
+lbl_8030CD54:
+/* 8030CD54 003089B4 3B BD 00 01 */ addi r29, r29, 1
+lbl_8030CD58:
+/* 8030CD58 003089B8 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8030CD5C 003089BC 88 03 00 06 */ lbz r0, 6(r3)
+/* 8030CD60 003089C0 7C 1D 00 40 */ cmplw r29, r0
+/* 8030CD64 003089C4 41 80 FF 88 */ blt lbl_8030CCEC
+/* 8030CD68 003089C8 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030CD6C 003089CC 4B FF DA 51 */ bl VFiPFCACHE_FreeDataPage
+lbl_8030CD70:
+/* 8030CD70 003089D0 80 9F 00 00 */ lwz r4, 0(r31)
+/* 8030CD74 003089D4 38 60 00 00 */ li r3, 0
+/* 8030CD78 003089D8 A0 1F 00 4A */ lhz r0, 0x4a(r31)
+/* 8030CD7C 003089DC 7C 80 00 38 */ and r0, r4, r0
+/* 8030CD80 003089E0 54 00 2C 34 */ rlwinm r0, r0, 5, 0x10, 0x1a
+/* 8030CD84 003089E4 B0 1F 00 48 */ sth r0, 0x48(r31)
+lbl_8030CD88:
+/* 8030CD88 003089E8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030CD8C 003089EC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030CD90 003089F0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030CD94 003089F4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030CD98 003089F8 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030CD9C 003089FC 7C 08 03 A6 */ mtlr r0
+/* 8030CDA0 00308A00 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030CDA4 00308A04 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_FindCluster
+VFiPFENT_ITER_FindCluster:
+/* 8030CDA8 00308A08 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030CDAC 00308A0C 7C 08 02 A6 */ mflr r0
+/* 8030CDB0 00308A10 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030CDB4 00308A14 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030CDB8 00308A18 4B EB A3 65 */ bl _savegpr_24
+/* 8030CDBC 00308A1C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CDC0 00308A20 7C 7A 1B 78 */ mr r26, r3
+/* 8030CDC4 00308A24 7C 9B 23 78 */ mr r27, r4
+/* 8030CDC8 00308A28 7C BC 2B 78 */ mr r28, r5
+/* 8030CDCC 00308A2C 7C DD 33 78 */ mr r29, r6
+/* 8030CDD0 00308A30 3B 00 00 00 */ li r24, 0
+/* 8030CDD4 00308A34 41 82 00 0C */ beq lbl_8030CDE0
+/* 8030CDD8 00308A38 2C 04 00 00 */ cmpwi r4, 0
+/* 8030CDDC 00308A3C 40 82 00 0C */ bne lbl_8030CDE8
+lbl_8030CDE0:
+/* 8030CDE0 00308A40 38 60 00 0A */ li r3, 0xa
+/* 8030CDE4 00308A44 48 00 02 CC */ b lbl_8030D0B0
+lbl_8030CDE8:
+/* 8030CDE8 00308A48 3B C0 00 00 */ li r30, 0
+/* 8030CDEC 00308A4C 3B E0 00 01 */ li r31, 1
+/* 8030CDF0 00308A50 93 C6 00 00 */ stw r30, 0(r6)
+/* 8030CDF4 00308A54 9B C4 02 0A */ stb r30, 0x20a(r4)
+/* 8030CDF8 00308A58 9B C4 02 0B */ stb r30, 0x20b(r4)
+/* 8030CDFC 00308A5C 9B C4 02 0C */ stb r30, 0x20c(r4)
+/* 8030CE00 00308A60 48 00 02 9C */ b lbl_8030D09C
+lbl_8030CE04:
+/* 8030CE04 00308A64 2C 18 00 00 */ cmpwi r24, 0
+/* 8030CE08 00308A68 41 82 00 0C */ beq lbl_8030CE14
+/* 8030CE0C 00308A6C 7F 03 C3 78 */ mr r3, r24
+/* 8030CE10 00308A70 48 00 02 A0 */ b lbl_8030D0B0
+lbl_8030CE14:
+/* 8030CE14 00308A74 88 1A 00 4C */ lbz r0, 0x4c(r26)
+/* 8030CE18 00308A78 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030CE1C 00308A7C 40 82 00 10 */ bne lbl_8030CE2C
+/* 8030CE20 00308A80 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CE24 00308A84 B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CE28 00308A88 48 00 01 D4 */ b lbl_8030CFFC
+lbl_8030CE2C:
+/* 8030CE2C 00308A8C 88 7A 00 57 */ lbz r3, 0x57(r26)
+/* 8030CE30 00308A90 54 60 07 3E */ clrlwi r0, r3, 0x1c
+/* 8030CE34 00308A94 2C 00 00 0F */ cmpwi r0, 0xf
+/* 8030CE38 00308A98 40 82 00 24 */ bne lbl_8030CE5C
+/* 8030CE3C 00308A9C 7F 63 DB 78 */ mr r3, r27
+/* 8030CE40 00308AA0 38 9A 00 4C */ addi r4, r26, 0x4c
+/* 8030CE44 00308AA4 4B FF EE C9 */ bl VFiPFENT_LoadLFNEntryFieldsFromBuf
+/* 8030CE48 00308AA8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CE4C 00308AAC 41 82 01 B0 */ beq lbl_8030CFFC
+/* 8030CE50 00308AB0 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CE54 00308AB4 B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CE58 00308AB8 48 00 01 A4 */ b lbl_8030CFFC
+lbl_8030CE5C:
+/* 8030CE5C 00308ABC 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
+/* 8030CE60 00308AC0 41 82 00 10 */ beq lbl_8030CE70
+/* 8030CE64 00308AC4 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CE68 00308AC8 B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CE6C 00308ACC 48 00 01 90 */ b lbl_8030CFFC
+lbl_8030CE70:
+/* 8030CE70 00308AD0 54 60 06 F7 */ rlwinm. r0, r3, 0, 0x1b, 0x1b
+/* 8030CE74 00308AD4 40 82 00 10 */ bne lbl_8030CE84
+/* 8030CE78 00308AD8 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CE7C 00308ADC B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CE80 00308AE0 48 00 01 7C */ b lbl_8030CFFC
+lbl_8030CE84:
+/* 8030CE84 00308AE4 A0 BA 00 60 */ lhz r5, 0x60(r26)
+/* 8030CE88 00308AE8 A0 9A 00 66 */ lhz r4, 0x66(r26)
+/* 8030CE8C 00308AEC 54 A3 44 2E */ rlwinm r3, r5, 8, 0x10, 0x17
+/* 8030CE90 00308AF0 54 80 44 2E */ rlwinm r0, r4, 8, 0x10, 0x17
+/* 8030CE94 00308AF4 50 A3 C6 3E */ rlwimi r3, r5, 0x18, 0x18, 0x1f
+/* 8030CE98 00308AF8 50 80 C6 3E */ rlwimi r0, r4, 0x18, 0x18, 0x1f
+/* 8030CE9C 00308AFC 50 60 80 1E */ rlwimi r0, r3, 0x10, 0, 0xf
+/* 8030CEA0 00308B00 7C 1C 00 40 */ cmplw r28, r0
+/* 8030CEA4 00308B04 41 82 00 10 */ beq lbl_8030CEB4
+/* 8030CEA8 00308B08 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CEAC 00308B0C B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CEB0 00308B10 48 00 01 4C */ b lbl_8030CFFC
+lbl_8030CEB4:
+/* 8030CEB4 00308B14 93 FD 00 00 */ stw r31, 0(r29)
+/* 8030CEB8 00308B18 7F 63 DB 78 */ mr r3, r27
+/* 8030CEBC 00308B1C 38 9A 00 4C */ addi r4, r26, 0x4c
+/* 8030CEC0 00308B20 4B FF ED 59 */ bl VFiPFENT_LoadShortNameFromBuf
+/* 8030CEC4 00308B24 88 1B 02 0A */ lbz r0, 0x20a(r27)
+/* 8030CEC8 00308B28 2C 00 00 00 */ cmpwi r0, 0
+/* 8030CECC 00308B2C 41 82 00 8C */ beq lbl_8030CF58
+/* 8030CED0 00308B30 88 1B 02 0B */ lbz r0, 0x20b(r27)
+/* 8030CED4 00308B34 28 00 00 01 */ cmplwi r0, 1
+/* 8030CED8 00308B38 40 82 00 80 */ bne lbl_8030CF58
+/* 8030CEDC 00308B3C 7F 63 DB 78 */ mr r3, r27
+/* 8030CEE0 00308B40 4B FF EC C9 */ bl VFiPFENT_CalcCheckSum
+/* 8030CEE4 00308B44 88 1B 02 0C */ lbz r0, 0x20c(r27)
+/* 8030CEE8 00308B48 54 63 06 3E */ clrlwi r3, r3, 0x18
+/* 8030CEEC 00308B4C 7C 00 18 40 */ cmplw r0, r3
+/* 8030CEF0 00308B50 40 82 00 68 */ bne lbl_8030CF58
+/* 8030CEF4 00308B54 7F 63 DB 78 */ mr r3, r27
+/* 8030CEF8 00308B58 38 9A 00 4C */ addi r4, r26, 0x4c
+/* 8030CEFC 00308B5C 4B FF ED 65 */ bl VFiPFENT_loadEntryNumericFieldsFromBuf
+/* 8030CF00 00308B60 80 7A 00 44 */ lwz r3, 0x44(r26)
+/* 8030CF04 00308B64 88 1B 02 1C */ lbz r0, 0x21c(r27)
+/* 8030CF08 00308B68 90 7B 02 38 */ stw r3, 0x238(r27)
+/* 8030CF0C 00308B6C 54 03 06 F7 */ rlwinm. r3, r0, 0, 0x1b, 0x1b
+/* 8030CF10 00308B70 A0 1A 00 48 */ lhz r0, 0x48(r26)
+/* 8030CF14 00308B74 B0 1B 02 3C */ sth r0, 0x23c(r27)
+/* 8030CF18 00308B78 80 1A 00 3C */ lwz r0, 0x3c(r26)
+/* 8030CF1C 00308B7C 90 1B 02 2C */ stw r0, 0x22c(r27)
+/* 8030CF20 00308B80 41 82 00 1C */ beq lbl_8030CF3C
+/* 8030CF24 00308B84 80 1B 02 34 */ lwz r0, 0x234(r27)
+/* 8030CF28 00308B88 7C 00 E0 40 */ cmplw r0, r28
+/* 8030CF2C 00308B8C 41 82 00 10 */ beq lbl_8030CF3C
+/* 8030CF30 00308B90 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CF34 00308B94 B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CF38 00308B98 48 00 00 C4 */ b lbl_8030CFFC
+lbl_8030CF3C:
+/* 8030CF3C 00308B9C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CF40 00308BA0 41 82 00 18 */ beq lbl_8030CF58
+/* 8030CF44 00308BA4 80 1B 02 34 */ lwz r0, 0x234(r27)
+/* 8030CF48 00308BA8 2C 00 00 00 */ cmpwi r0, 0
+/* 8030CF4C 00308BAC 40 82 00 0C */ bne lbl_8030CF58
+/* 8030CF50 00308BB0 38 00 00 01 */ li r0, 1
+/* 8030CF54 00308BB4 90 1B 02 34 */ stw r0, 0x234(r27)
+lbl_8030CF58:
+/* 8030CF58 00308BB8 88 BA 00 58 */ lbz r5, 0x58(r26)
+/* 8030CF5C 00308BBC 54 A0 06 F9 */ rlwinm. r0, r5, 0, 0x1b, 0x1c
+/* 8030CF60 00308BC0 41 82 00 70 */ beq lbl_8030CFD0
+/* 8030CF64 00308BC4 38 7B 02 0E */ addi r3, r27, 0x20e
+/* 8030CF68 00308BC8 38 81 00 0C */ addi r4, r1, 0xc
+/* 8030CF6C 00308BCC 48 00 A6 C1 */ bl VFiPFPATH_getLongNameformShortName
+/* 8030CF70 00308BD0 7F 63 DB 78 */ mr r3, r27
+/* 8030CF74 00308BD4 38 81 00 0C */ addi r4, r1, 0xc
+/* 8030CF78 00308BD8 48 00 AA 95 */ bl VFiPFPATH_transformInUnicode
+/* 8030CF7C 00308BDC 3C 80 4E C5 */ lis r4, 0x4EC4EC4F@ha
+/* 8030CF80 00308BE0 38 04 EC 4F */ addi r0, r4, 0x4EC4EC4F@l
+/* 8030CF84 00308BE4 7C 00 18 96 */ mulhw r0, r0, r3
+/* 8030CF88 00308BE8 7C 05 16 70 */ srawi r5, r0, 2
+/* 8030CF8C 00308BEC 7C 00 16 70 */ srawi r0, r0, 2
+/* 8030CF90 00308BF0 54 04 0F FE */ srwi r4, r0, 0x1f
+/* 8030CF94 00308BF4 54 A6 0F FE */ srwi r6, r5, 0x1f
+/* 8030CF98 00308BF8 7C 00 22 14 */ add r0, r0, r4
+/* 8030CF9C 00308BFC 1C 00 00 0D */ mulli r0, r0, 0xd
+/* 8030CFA0 00308C00 7C A5 32 14 */ add r5, r5, r6
+/* 8030CFA4 00308C04 7C 80 18 50 */ subf r4, r0, r3
+/* 8030CFA8 00308C08 7F 63 DB 78 */ mr r3, r27
+/* 8030CFAC 00308C0C 7C 04 00 D0 */ neg r0, r4
+/* 8030CFB0 00308C10 7C 00 23 78 */ or r0, r0, r4
+/* 8030CFB4 00308C14 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 8030CFB8 00308C18 7C 05 02 14 */ add r0, r5, r0
+/* 8030CFBC 00308C1C 98 1B 02 0A */ stb r0, 0x20a(r27)
+/* 8030CFC0 00308C20 4B FF EB E9 */ bl VFiPFENT_CalcCheckSum
+/* 8030CFC4 00308C24 38 00 00 01 */ li r0, 1
+/* 8030CFC8 00308C28 98 7B 02 0C */ stb r3, 0x20c(r27)
+/* 8030CFCC 00308C2C 98 1B 02 0B */ stb r0, 0x20b(r27)
+lbl_8030CFD0:
+/* 8030CFD0 00308C30 7F 63 DB 78 */ mr r3, r27
+/* 8030CFD4 00308C34 38 9A 00 4C */ addi r4, r26, 0x4c
+/* 8030CFD8 00308C38 4B FF EC 89 */ bl VFiPFENT_loadEntryNumericFieldsFromBuf
+/* 8030CFDC 00308C3C 80 1A 00 44 */ lwz r0, 0x44(r26)
+/* 8030CFE0 00308C40 38 60 00 00 */ li r3, 0
+/* 8030CFE4 00308C44 90 1B 02 38 */ stw r0, 0x238(r27)
+/* 8030CFE8 00308C48 A0 1A 00 48 */ lhz r0, 0x48(r26)
+/* 8030CFEC 00308C4C B0 1B 02 3C */ sth r0, 0x23c(r27)
+/* 8030CFF0 00308C50 80 1A 00 3C */ lwz r0, 0x3c(r26)
+/* 8030CFF4 00308C54 90 1B 02 2C */ stw r0, 0x22c(r27)
+/* 8030CFF8 00308C58 48 00 00 B8 */ b lbl_8030D0B0
+lbl_8030CFFC:
+/* 8030CFFC 00308C5C 83 1A 00 00 */ lwz r24, 0(r26)
+/* 8030D000 00308C60 7F 43 D3 78 */ mr r3, r26
+/* 8030D004 00308C64 38 80 00 00 */ li r4, 0
+/* 8030D008 00308C68 38 18 00 01 */ addi r0, r24, 1
+/* 8030D00C 00308C6C 90 1A 00 00 */ stw r0, 0(r26)
+/* 8030D010 00308C70 4B FF FB ED */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D014 00308C74 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D018 00308C78 7C 79 1B 78 */ mr r25, r3
+/* 8030D01C 00308C7C 41 82 00 18 */ beq lbl_8030D034
+/* 8030D020 00308C80 93 1A 00 00 */ stw r24, 0(r26)
+/* 8030D024 00308C84 7F 43 D3 78 */ mr r3, r26
+/* 8030D028 00308C88 38 80 00 00 */ li r4, 0
+/* 8030D02C 00308C8C 4B FF FB D1 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D030 00308C90 48 00 00 5C */ b lbl_8030D08C
+lbl_8030D034:
+/* 8030D034 00308C94 80 BA 00 44 */ lwz r5, 0x44(r26)
+/* 8030D038 00308C98 3C 05 00 01 */ addis r0, r5, 1
+/* 8030D03C 00308C9C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030D040 00308CA0 40 82 00 0C */ bne lbl_8030D04C
+/* 8030D044 00308CA4 38 80 00 10 */ li r4, 0x10
+/* 8030D048 00308CA8 48 00 00 34 */ b lbl_8030D07C
+lbl_8030D04C:
+/* 8030D04C 00308CAC 80 7A 00 04 */ lwz r3, 4(r26)
+/* 8030D050 00308CB0 38 9A 00 4C */ addi r4, r26, 0x4c
+/* 8030D054 00308CB4 A0 DA 00 48 */ lhz r6, 0x48(r26)
+/* 8030D058 00308CB8 39 01 00 08 */ addi r8, r1, 8
+/* 8030D05C 00308CBC 38 E0 00 20 */ li r7, 0x20
+/* 8030D060 00308CC0 39 20 00 00 */ li r9, 0
+/* 8030D064 00308CC4 48 00 B9 C5 */ bl VFiPFSEC_ReadData
+/* 8030D068 00308CC8 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030D06C 00308CCC 38 80 00 11 */ li r4, 0x11
+/* 8030D070 00308CD0 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030D074 00308CD4 40 82 00 08 */ bne lbl_8030D07C
+/* 8030D078 00308CD8 7C 64 1B 78 */ mr r4, r3
+lbl_8030D07C:
+/* 8030D07C 00308CDC 7C 04 00 D0 */ neg r0, r4
+/* 8030D080 00308CE0 7C 00 23 78 */ or r0, r0, r4
+/* 8030D084 00308CE4 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D088 00308CE8 7C 99 00 38 */ and r25, r4, r0
+lbl_8030D08C:
+/* 8030D08C 00308CEC 7C 19 00 D0 */ neg r0, r25
+/* 8030D090 00308CF0 7C 00 CB 78 */ or r0, r0, r25
+/* 8030D094 00308CF4 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D098 00308CF8 7F 38 00 38 */ and r24, r25, r0
+lbl_8030D09C:
+/* 8030D09C 00308CFC 7F 43 D3 78 */ mr r3, r26
+/* 8030D0A0 00308D00 48 00 0F 5D */ bl VFiPFENT_ITER_IsAtLogicalEnd
+/* 8030D0A4 00308D04 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D0A8 00308D08 41 82 FD 5C */ beq lbl_8030CE04
+/* 8030D0AC 00308D0C 38 60 00 00 */ li r3, 0
+lbl_8030D0B0:
+/* 8030D0B0 00308D10 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030D0B4 00308D14 4B EB A0 B5 */ bl _restgpr_24
+/* 8030D0B8 00308D18 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030D0BC 00308D1C 7C 08 03 A6 */ mtlr r0
+/* 8030D0C0 00308D20 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030D0C4 00308D24 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_DoFindEntry
+VFiPFENT_ITER_DoFindEntry:
+/* 8030D0C8 00308D28 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 8030D0CC 00308D2C 7C 08 02 A6 */ mflr r0
+/* 8030D0D0 00308D30 90 01 00 54 */ stw r0, 0x54(r1)
+/* 8030D0D4 00308D34 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030D0D8 00308D38 4B EB A0 41 */ bl _savegpr_23
+/* 8030D0DC 00308D3C 3B C0 00 00 */ li r30, 0
+/* 8030D0E0 00308D40 7C 78 1B 78 */ mr r24, r3
+/* 8030D0E4 00308D44 93 C8 00 00 */ stw r30, 0(r8)
+/* 8030D0E8 00308D48 7C 99 23 78 */ mr r25, r4
+/* 8030D0EC 00308D4C 7C BA 2B 78 */ mr r26, r5
+/* 8030D0F0 00308D50 7C DB 33 78 */ mr r27, r6
+/* 8030D0F4 00308D54 80 63 00 10 */ lwz r3, 0x10(r3)
+/* 8030D0F8 00308D58 7C FC 3B 78 */ mr r28, r7
+/* 8030D0FC 00308D5C 7D 1D 43 78 */ mr r29, r8
+/* 8030D100 00308D60 7D 37 4B 78 */ mr r23, r9
+/* 8030D104 00308D64 80 03 00 00 */ lwz r0, 0(r3)
+/* 8030D108 00308D68 3B E0 00 00 */ li r31, 0
+/* 8030D10C 00308D6C 28 00 00 01 */ cmplwi r0, 1
+/* 8030D110 00308D70 40 82 00 60 */ bne lbl_8030D170
+/* 8030D114 00308D74 7F 43 D3 78 */ mr r3, r26
+/* 8030D118 00308D78 38 8D 8C D0 */ addi r4, r13, lbl_8063DF90-_SDA_BASE_
+/* 8030D11C 00308D7C 38 A0 00 01 */ li r5, 1
+/* 8030D120 00308D80 38 C0 00 00 */ li r6, 0
+/* 8030D124 00308D84 38 E0 00 03 */ li r7, 3
+/* 8030D128 00308D88 4B FF 85 39 */ bl VFiPFSTR_StrNCmp
+/* 8030D12C 00308D8C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D130 00308D90 41 82 00 38 */ beq lbl_8030D168
+/* 8030D134 00308D94 7F 43 D3 78 */ mr r3, r26
+/* 8030D138 00308D98 38 8D 8C D4 */ addi r4, r13, lbl_8063DF94-_SDA_BASE_
+/* 8030D13C 00308D9C 38 A0 00 01 */ li r5, 1
+/* 8030D140 00308DA0 38 C0 00 00 */ li r6, 0
+/* 8030D144 00308DA4 38 E0 00 03 */ li r7, 3
+/* 8030D148 00308DA8 4B FF 85 19 */ bl VFiPFSTR_StrNCmp
+/* 8030D14C 00308DAC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D150 00308DB0 41 82 00 18 */ beq lbl_8030D168
+/* 8030D154 00308DB4 7F 43 D3 78 */ mr r3, r26
+/* 8030D158 00308DB8 38 8D 8C D8 */ addi r4, r13, lbl_8063DF98-_SDA_BASE_
+/* 8030D15C 00308DBC 4B FF 84 61 */ bl VFiPFSTR_StrCmp
+/* 8030D160 00308DC0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D164 00308DC4 40 82 00 0C */ bne lbl_8030D170
+lbl_8030D168:
+/* 8030D168 00308DC8 38 60 00 02 */ li r3, 2
+/* 8030D16C 00308DCC 48 00 07 5C */ b lbl_8030D8C8
+lbl_8030D170:
+/* 8030D170 00308DD0 7F 43 D3 78 */ mr r3, r26
+/* 8030D174 00308DD4 38 8D 8C DC */ addi r4, r13, lbl_8063DF9C-_SDA_BASE_
+/* 8030D178 00308DD8 38 A0 00 01 */ li r5, 1
+/* 8030D17C 00308DDC 38 C0 00 00 */ li r6, 0
+/* 8030D180 00308DE0 38 E0 00 02 */ li r7, 2
+/* 8030D184 00308DE4 4B FF 84 DD */ bl VFiPFSTR_StrNCmp
+/* 8030D188 00308DE8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D18C 00308DEC 41 82 00 18 */ beq lbl_8030D1A4
+/* 8030D190 00308DF0 7F 43 D3 78 */ mr r3, r26
+/* 8030D194 00308DF4 38 8D 8C E0 */ addi r4, r13, lbl_8063DFA0-_SDA_BASE_
+/* 8030D198 00308DF8 4B FF 84 25 */ bl VFiPFSTR_StrCmp
+/* 8030D19C 00308DFC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D1A0 00308E00 40 82 00 70 */ bne lbl_8030D210
+lbl_8030D1A4:
+/* 8030D1A4 00308E04 2C 17 00 00 */ cmpwi r23, 0
+/* 8030D1A8 00308E08 40 82 00 50 */ bne lbl_8030D1F8
+/* 8030D1AC 00308E0C 80 78 00 10 */ lwz r3, 0x10(r24)
+/* 8030D1B0 00308E10 80 83 00 00 */ lwz r4, 0(r3)
+/* 8030D1B4 00308E14 28 04 00 01 */ cmplwi r4, 1
+/* 8030D1B8 00308E18 41 82 00 20 */ beq lbl_8030D1D8
+/* 8030D1BC 00308E1C 80 78 00 3C */ lwz r3, 0x3c(r24)
+/* 8030D1C0 00308E20 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030D1C4 00308E24 2C 00 00 02 */ cmpwi r0, 2
+/* 8030D1C8 00308E28 40 82 00 30 */ bne lbl_8030D1F8
+/* 8030D1CC 00308E2C 80 03 00 10 */ lwz r0, 0x10(r3)
+/* 8030D1D0 00308E30 7C 04 00 40 */ cmplw r4, r0
+/* 8030D1D4 00308E34 40 82 00 24 */ bne lbl_8030D1F8
+lbl_8030D1D8:
+/* 8030D1D8 00308E38 80 78 00 04 */ lwz r3, 4(r24)
+/* 8030D1DC 00308E3C 7F 24 CB 78 */ mr r4, r25
+/* 8030D1E0 00308E40 4B FF F5 25 */ bl VFiPFENT_GetRootDir
+/* 8030D1E4 00308E44 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D1E8 00308E48 7C 7E 1B 78 */ mr r30, r3
+/* 8030D1EC 00308E4C 41 82 00 08 */ beq lbl_8030D1F4
+/* 8030D1F0 00308E50 48 00 06 D8 */ b lbl_8030D8C8
+lbl_8030D1F4:
+/* 8030D1F4 00308E54 3A E0 00 01 */ li r23, 1
+lbl_8030D1F8:
+/* 8030D1F8 00308E58 28 17 00 01 */ cmplwi r23, 1
+/* 8030D1FC 00308E5C 40 82 00 14 */ bne lbl_8030D210
+/* 8030D200 00308E60 38 00 00 01 */ li r0, 1
+/* 8030D204 00308E64 38 60 00 00 */ li r3, 0
+/* 8030D208 00308E68 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030D20C 00308E6C 48 00 06 BC */ b lbl_8030D8C8
+lbl_8030D210:
+/* 8030D210 00308E70 38 00 00 00 */ li r0, 0
+/* 8030D214 00308E74 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 8030D218 00308E78 98 19 02 0A */ stb r0, 0x20a(r25)
+/* 8030D21C 00308E7C 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 8030D220 00308E80 98 19 02 0B */ stb r0, 0x20b(r25)
+/* 8030D224 00308E84 98 19 02 0C */ stb r0, 0x20c(r25)
+/* 8030D228 00308E88 B0 19 00 00 */ sth r0, 0(r25)
+/* 8030D22C 00308E8C 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 8030D230 00308E90 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030D234 00308E94 28 00 00 02 */ cmplwi r0, 2
+/* 8030D238 00308E98 40 82 00 14 */ bne lbl_8030D24C
+/* 8030D23C 00308E9C 7F 43 D3 78 */ mr r3, r26
+/* 8030D240 00308EA0 38 81 00 14 */ addi r4, r1, 0x14
+/* 8030D244 00308EA4 48 00 B5 15 */ bl VFiPFPATH_GetExtShortNameIndex
+/* 8030D248 00308EA8 7C 7F 1B 78 */ mr r31, r3
+lbl_8030D24C:
+/* 8030D24C 00308EAC 28 1F 00 01 */ cmplwi r31, 1
+/* 8030D250 00308EB0 40 82 03 30 */ bne lbl_8030D580
+/* 8030D254 00308EB4 80 78 00 3C */ lwz r3, 0x3c(r24)
+/* 8030D258 00308EB8 80 81 00 14 */ lwz r4, 0x14(r1)
+/* 8030D25C 00308EBC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D260 00308EC0 90 78 00 04 */ stw r3, 4(r24)
+/* 8030D264 00308EC4 38 C4 FF FF */ addi r6, r4, -1
+/* 8030D268 00308EC8 40 82 00 0C */ bne lbl_8030D274
+/* 8030D26C 00308ECC 3A E0 00 0A */ li r23, 0xa
+/* 8030D270 00308ED0 48 00 00 B8 */ b lbl_8030D328
+lbl_8030D274:
+/* 8030D274 00308ED4 88 63 00 20 */ lbz r3, 0x20(r3)
+/* 8030D278 00308ED8 38 00 FF FF */ li r0, -1
+/* 8030D27C 00308EDC 83 D8 00 00 */ lwz r30, 0(r24)
+/* 8030D280 00308EE0 38 80 00 01 */ li r4, 1
+/* 8030D284 00308EE4 38 A3 FF FB */ addi r5, r3, -5
+/* 8030D288 00308EE8 90 18 00 40 */ stw r0, 0x40(r24)
+/* 8030D28C 00308EEC 54 A0 06 3E */ clrlwi r0, r5, 0x18
+/* 8030D290 00308EF0 7F 03 C3 78 */ mr r3, r24
+/* 8030D294 00308EF4 7C 84 00 30 */ slw r4, r4, r0
+/* 8030D298 00308EF8 98 B8 00 6C */ stb r5, 0x6c(r24)
+/* 8030D29C 00308EFC 38 04 FF FF */ addi r0, r4, -1
+/* 8030D2A0 00308F00 B0 18 00 4A */ sth r0, 0x4a(r24)
+/* 8030D2A4 00308F04 38 80 00 00 */ li r4, 0
+/* 8030D2A8 00308F08 90 D8 00 00 */ stw r6, 0(r24)
+/* 8030D2AC 00308F0C 4B FF F9 51 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D2B0 00308F10 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D2B4 00308F14 7C 77 1B 78 */ mr r23, r3
+/* 8030D2B8 00308F18 41 82 00 18 */ beq lbl_8030D2D0
+/* 8030D2BC 00308F1C 93 D8 00 00 */ stw r30, 0(r24)
+/* 8030D2C0 00308F20 7F 03 C3 78 */ mr r3, r24
+/* 8030D2C4 00308F24 38 80 00 00 */ li r4, 0
+/* 8030D2C8 00308F28 4B FF F9 35 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D2CC 00308F2C 48 00 00 5C */ b lbl_8030D328
+lbl_8030D2D0:
+/* 8030D2D0 00308F30 80 B8 00 44 */ lwz r5, 0x44(r24)
+/* 8030D2D4 00308F34 3C 05 00 01 */ addis r0, r5, 1
+/* 8030D2D8 00308F38 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030D2DC 00308F3C 40 82 00 0C */ bne lbl_8030D2E8
+/* 8030D2E0 00308F40 38 80 00 10 */ li r4, 0x10
+/* 8030D2E4 00308F44 48 00 00 34 */ b lbl_8030D318
+lbl_8030D2E8:
+/* 8030D2E8 00308F48 80 78 00 04 */ lwz r3, 4(r24)
+/* 8030D2EC 00308F4C 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D2F0 00308F50 A0 D8 00 48 */ lhz r6, 0x48(r24)
+/* 8030D2F4 00308F54 39 01 00 10 */ addi r8, r1, 0x10
+/* 8030D2F8 00308F58 38 E0 00 20 */ li r7, 0x20
+/* 8030D2FC 00308F5C 39 20 00 00 */ li r9, 0
+/* 8030D300 00308F60 48 00 B7 29 */ bl VFiPFSEC_ReadData
+/* 8030D304 00308F64 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030D308 00308F68 38 80 00 11 */ li r4, 0x11
+/* 8030D30C 00308F6C 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030D310 00308F70 40 82 00 08 */ bne lbl_8030D318
+/* 8030D314 00308F74 7C 64 1B 78 */ mr r4, r3
+lbl_8030D318:
+/* 8030D318 00308F78 7C 04 00 D0 */ neg r0, r4
+/* 8030D31C 00308F7C 7C 00 23 78 */ or r0, r0, r4
+/* 8030D320 00308F80 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D324 00308F84 7C 97 00 38 */ and r23, r4, r0
+lbl_8030D328:
+/* 8030D328 00308F88 3B C0 00 00 */ li r30, 0
+lbl_8030D32C:
+/* 8030D32C 00308F8C 2C 17 00 00 */ cmpwi r23, 0
+/* 8030D330 00308F90 41 82 00 0C */ beq lbl_8030D33C
+/* 8030D334 00308F94 7E E3 BB 78 */ mr r3, r23
+/* 8030D338 00308F98 48 00 05 90 */ b lbl_8030D8C8
+lbl_8030D33C:
+/* 8030D33C 00308F9C 88 18 00 57 */ lbz r0, 0x57(r24)
+/* 8030D340 00308FA0 54 00 07 3E */ clrlwi r0, r0, 0x1c
+/* 8030D344 00308FA4 2C 00 00 0F */ cmpwi r0, 0xf
+/* 8030D348 00308FA8 40 82 00 34 */ bne lbl_8030D37C
+/* 8030D34C 00308FAC 7F 23 CB 78 */ mr r3, r25
+/* 8030D350 00308FB0 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D354 00308FB4 4B FF E9 B9 */ bl VFiPFENT_LoadLFNEntryFieldsFromBuf
+/* 8030D358 00308FB8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D35C 00308FBC 41 82 00 10 */ beq lbl_8030D36C
+/* 8030D360 00308FC0 9B D9 02 0A */ stb r30, 0x20a(r25)
+/* 8030D364 00308FC4 B3 D9 00 00 */ sth r30, 0(r25)
+/* 8030D368 00308FC8 48 00 02 04 */ b lbl_8030D56C
+lbl_8030D36C:
+/* 8030D36C 00308FCC 88 18 00 4C */ lbz r0, 0x4c(r24)
+/* 8030D370 00308FD0 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19
+/* 8030D374 00308FD4 41 82 01 F8 */ beq lbl_8030D56C
+/* 8030D378 00308FD8 48 00 00 0C */ b lbl_8030D384
+lbl_8030D37C:
+/* 8030D37C 00308FDC 38 60 00 00 */ li r3, 0
+/* 8030D380 00308FE0 48 00 05 48 */ b lbl_8030D8C8
+lbl_8030D384:
+/* 8030D384 00308FE4 80 78 00 3C */ lwz r3, 0x3c(r24)
+/* 8030D388 00308FE8 80 C1 00 14 */ lwz r6, 0x14(r1)
+/* 8030D38C 00308FEC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D390 00308FF0 90 78 00 04 */ stw r3, 4(r24)
+/* 8030D394 00308FF4 40 82 00 0C */ bne lbl_8030D3A0
+/* 8030D398 00308FF8 3A E0 00 0A */ li r23, 0xa
+/* 8030D39C 00308FFC 48 00 00 B8 */ b lbl_8030D454
+lbl_8030D3A0:
+/* 8030D3A0 00309000 88 63 00 20 */ lbz r3, 0x20(r3)
+/* 8030D3A4 00309004 38 00 FF FF */ li r0, -1
+/* 8030D3A8 00309008 83 D8 00 00 */ lwz r30, 0(r24)
+/* 8030D3AC 0030900C 38 80 00 01 */ li r4, 1
+/* 8030D3B0 00309010 38 A3 FF FB */ addi r5, r3, -5
+/* 8030D3B4 00309014 90 18 00 40 */ stw r0, 0x40(r24)
+/* 8030D3B8 00309018 54 A0 06 3E */ clrlwi r0, r5, 0x18
+/* 8030D3BC 0030901C 7F 03 C3 78 */ mr r3, r24
+/* 8030D3C0 00309020 7C 84 00 30 */ slw r4, r4, r0
+/* 8030D3C4 00309024 98 B8 00 6C */ stb r5, 0x6c(r24)
+/* 8030D3C8 00309028 38 04 FF FF */ addi r0, r4, -1
+/* 8030D3CC 0030902C B0 18 00 4A */ sth r0, 0x4a(r24)
+/* 8030D3D0 00309030 38 80 00 00 */ li r4, 0
+/* 8030D3D4 00309034 90 D8 00 00 */ stw r6, 0(r24)
+/* 8030D3D8 00309038 4B FF F8 25 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D3DC 0030903C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D3E0 00309040 7C 77 1B 78 */ mr r23, r3
+/* 8030D3E4 00309044 41 82 00 18 */ beq lbl_8030D3FC
+/* 8030D3E8 00309048 93 D8 00 00 */ stw r30, 0(r24)
+/* 8030D3EC 0030904C 7F 03 C3 78 */ mr r3, r24
+/* 8030D3F0 00309050 38 80 00 00 */ li r4, 0
+/* 8030D3F4 00309054 4B FF F8 09 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D3F8 00309058 48 00 00 5C */ b lbl_8030D454
+lbl_8030D3FC:
+/* 8030D3FC 0030905C 80 B8 00 44 */ lwz r5, 0x44(r24)
+/* 8030D400 00309060 3C 05 00 01 */ addis r0, r5, 1
+/* 8030D404 00309064 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030D408 00309068 40 82 00 0C */ bne lbl_8030D414
+/* 8030D40C 0030906C 38 80 00 10 */ li r4, 0x10
+/* 8030D410 00309070 48 00 00 34 */ b lbl_8030D444
+lbl_8030D414:
+/* 8030D414 00309074 80 78 00 04 */ lwz r3, 4(r24)
+/* 8030D418 00309078 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D41C 0030907C A0 D8 00 48 */ lhz r6, 0x48(r24)
+/* 8030D420 00309080 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030D424 00309084 38 E0 00 20 */ li r7, 0x20
+/* 8030D428 00309088 39 20 00 00 */ li r9, 0
+/* 8030D42C 0030908C 48 00 B5 FD */ bl VFiPFSEC_ReadData
+/* 8030D430 00309090 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030D434 00309094 38 80 00 11 */ li r4, 0x11
+/* 8030D438 00309098 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030D43C 0030909C 40 82 00 08 */ bne lbl_8030D444
+/* 8030D440 003090A0 7C 64 1B 78 */ mr r4, r3
+lbl_8030D444:
+/* 8030D444 003090A4 7C 04 00 D0 */ neg r0, r4
+/* 8030D448 003090A8 7C 00 23 78 */ or r0, r0, r4
+/* 8030D44C 003090AC 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D450 003090B0 7C 97 00 38 */ and r23, r4, r0
+lbl_8030D454:
+/* 8030D454 003090B4 2C 17 00 00 */ cmpwi r23, 0
+/* 8030D458 003090B8 41 82 00 0C */ beq lbl_8030D464
+/* 8030D45C 003090BC 7E E3 BB 78 */ mr r3, r23
+/* 8030D460 003090C0 48 00 04 68 */ b lbl_8030D8C8
+lbl_8030D464:
+/* 8030D464 003090C4 88 78 00 57 */ lbz r3, 0x57(r24)
+/* 8030D468 003090C8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D46C 003090CC 40 82 00 08 */ bne lbl_8030D474
+/* 8030D470 003090D0 38 60 00 40 */ li r3, 0x40
+lbl_8030D474:
+/* 8030D474 003090D4 57 60 06 31 */ rlwinm. r0, r27, 0, 0x18, 0x18
+/* 8030D478 003090D8 41 82 00 38 */ beq lbl_8030D4B0
+/* 8030D47C 003090DC 57 7B 06 7F */ clrlwi. r27, r27, 0x19
+/* 8030D480 003090E0 57 9C 06 7E */ clrlwi r28, r28, 0x19
+/* 8030D484 003090E4 41 82 00 10 */ beq lbl_8030D494
+/* 8030D488 003090E8 7F 60 18 38 */ and r0, r27, r3
+/* 8030D48C 003090EC 7C 1B 00 00 */ cmpw r27, r0
+/* 8030D490 003090F0 40 82 00 18 */ bne lbl_8030D4A8
+lbl_8030D494:
+/* 8030D494 003090F4 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030D498 003090F8 41 82 00 3C */ beq lbl_8030D4D4
+/* 8030D49C 003090FC 7F 80 18 38 */ and r0, r28, r3
+/* 8030D4A0 00309100 7C 1C 00 00 */ cmpw r28, r0
+/* 8030D4A4 00309104 40 82 00 30 */ bne lbl_8030D4D4
+lbl_8030D4A8:
+/* 8030D4A8 00309108 3A E0 FF FF */ li r23, -1
+/* 8030D4AC 0030910C 48 00 00 28 */ b lbl_8030D4D4
+lbl_8030D4B0:
+/* 8030D4B0 00309110 28 1B 00 7F */ cmplwi r27, 0x7f
+/* 8030D4B4 00309114 41 82 00 20 */ beq lbl_8030D4D4
+/* 8030D4B8 00309118 7C 03 D8 40 */ cmplw r3, r27
+/* 8030D4BC 0030911C 41 82 00 18 */ beq lbl_8030D4D4
+/* 8030D4C0 00309120 7C 60 D8 39 */ and. r0, r3, r27
+/* 8030D4C4 00309124 41 82 00 0C */ beq lbl_8030D4D0
+/* 8030D4C8 00309128 7C 60 E0 39 */ and. r0, r3, r28
+/* 8030D4CC 0030912C 41 82 00 08 */ beq lbl_8030D4D4
+lbl_8030D4D0:
+/* 8030D4D0 00309130 3A E0 FF FF */ li r23, -1
+lbl_8030D4D4:
+/* 8030D4D4 00309134 2C 17 FF FF */ cmpwi r23, -1
+/* 8030D4D8 00309138 40 82 00 0C */ bne lbl_8030D4E4
+/* 8030D4DC 0030913C 38 60 00 00 */ li r3, 0
+/* 8030D4E0 00309140 48 00 03 E8 */ b lbl_8030D8C8
+lbl_8030D4E4:
+/* 8030D4E4 00309144 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
+/* 8030D4E8 00309148 41 82 00 0C */ beq lbl_8030D4F4
+/* 8030D4EC 0030914C 38 60 00 03 */ li r3, 3
+/* 8030D4F0 00309150 48 00 03 D8 */ b lbl_8030D8C8
+lbl_8030D4F4:
+/* 8030D4F4 00309154 7F 23 CB 78 */ mr r3, r25
+/* 8030D4F8 00309158 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D4FC 0030915C 4B FF E7 1D */ bl VFiPFENT_LoadShortNameFromBuf
+/* 8030D500 00309160 7F 44 D3 78 */ mr r4, r26
+/* 8030D504 00309164 38 79 02 0E */ addi r3, r25, 0x20e
+/* 8030D508 00309168 38 A0 00 00 */ li r5, 0
+/* 8030D50C 0030916C 48 00 9A 21 */ bl VFiPFPATH_MatchFileNameWithPattern
+/* 8030D510 00309170 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D514 00309174 41 82 03 B0 */ beq lbl_8030D8C4
+/* 8030D518 00309178 7F 23 CB 78 */ mr r3, r25
+/* 8030D51C 0030917C 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D520 00309180 4B FF E7 41 */ bl VFiPFENT_loadEntryNumericFieldsFromBuf
+/* 8030D524 00309184 80 78 00 44 */ lwz r3, 0x44(r24)
+/* 8030D528 00309188 88 19 02 1C */ lbz r0, 0x21c(r25)
+/* 8030D52C 0030918C 90 79 02 38 */ stw r3, 0x238(r25)
+/* 8030D530 00309190 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030D534 00309194 A0 18 00 48 */ lhz r0, 0x48(r24)
+/* 8030D538 00309198 B0 19 02 3C */ sth r0, 0x23c(r25)
+/* 8030D53C 0030919C 80 18 00 3C */ lwz r0, 0x3c(r24)
+/* 8030D540 003091A0 90 19 02 2C */ stw r0, 0x22c(r25)
+/* 8030D544 003091A4 41 82 00 18 */ beq lbl_8030D55C
+/* 8030D548 003091A8 80 19 02 34 */ lwz r0, 0x234(r25)
+/* 8030D54C 003091AC 2C 00 00 00 */ cmpwi r0, 0
+/* 8030D550 003091B0 40 82 00 0C */ bne lbl_8030D55C
+/* 8030D554 003091B4 38 00 00 01 */ li r0, 1
+/* 8030D558 003091B8 90 19 02 34 */ stw r0, 0x234(r25)
+lbl_8030D55C:
+/* 8030D55C 003091BC 38 00 00 01 */ li r0, 1
+/* 8030D560 003091C0 38 60 00 00 */ li r3, 0
+/* 8030D564 003091C4 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030D568 003091C8 48 00 03 60 */ b lbl_8030D8C8
+lbl_8030D56C:
+/* 8030D56C 003091CC 7F 03 C3 78 */ mr r3, r24
+/* 8030D570 003091D0 38 80 00 00 */ li r4, 0
+/* 8030D574 003091D4 48 00 0C 8D */ bl VFiPFENT_ITER_Retreat
+/* 8030D578 003091D8 7C 77 1B 78 */ mr r23, r3
+/* 8030D57C 003091DC 4B FF FD B0 */ b lbl_8030D32C
+lbl_8030D580:
+/* 8030D580 003091E0 3B E0 00 00 */ li r31, 0
+/* 8030D584 003091E4 48 00 03 30 */ b lbl_8030D8B4
+lbl_8030D588:
+/* 8030D588 003091E8 2C 1E 00 00 */ cmpwi r30, 0
+/* 8030D58C 003091EC 41 82 00 0C */ beq lbl_8030D598
+/* 8030D590 003091F0 7F C3 F3 78 */ mr r3, r30
+/* 8030D594 003091F4 48 00 03 34 */ b lbl_8030D8C8
+lbl_8030D598:
+/* 8030D598 003091F8 88 18 00 4C */ lbz r0, 0x4c(r24)
+/* 8030D59C 003091FC 2C 00 00 00 */ cmpwi r0, 0
+/* 8030D5A0 00309200 41 82 03 24 */ beq lbl_8030D8C4
+/* 8030D5A4 00309204 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030D5A8 00309208 40 82 00 10 */ bne lbl_8030D5B8
+/* 8030D5AC 0030920C 9B F9 02 0A */ stb r31, 0x20a(r25)
+/* 8030D5B0 00309210 B3 F9 00 00 */ sth r31, 0(r25)
+/* 8030D5B4 00309214 48 00 02 60 */ b lbl_8030D814
+lbl_8030D5B8:
+/* 8030D5B8 00309218 88 78 00 57 */ lbz r3, 0x57(r24)
+/* 8030D5BC 0030921C 54 60 07 3E */ clrlwi r0, r3, 0x1c
+/* 8030D5C0 00309220 2C 00 00 0F */ cmpwi r0, 0xf
+/* 8030D5C4 00309224 40 82 00 24 */ bne lbl_8030D5E8
+/* 8030D5C8 00309228 7F 23 CB 78 */ mr r3, r25
+/* 8030D5CC 0030922C 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D5D0 00309230 4B FF E7 3D */ bl VFiPFENT_LoadLFNEntryFieldsFromBuf
+/* 8030D5D4 00309234 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D5D8 00309238 41 82 02 3C */ beq lbl_8030D814
+/* 8030D5DC 0030923C 9B F9 02 0A */ stb r31, 0x20a(r25)
+/* 8030D5E0 00309240 B3 F9 00 00 */ sth r31, 0(r25)
+/* 8030D5E4 00309244 48 00 02 30 */ b lbl_8030D814
+lbl_8030D5E8:
+/* 8030D5E8 00309248 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D5EC 0030924C 40 82 00 08 */ bne lbl_8030D5F4
+/* 8030D5F0 00309250 38 60 00 40 */ li r3, 0x40
+lbl_8030D5F4:
+/* 8030D5F4 00309254 57 60 06 31 */ rlwinm. r0, r27, 0, 0x18, 0x18
+/* 8030D5F8 00309258 41 82 00 38 */ beq lbl_8030D630
+/* 8030D5FC 0030925C 57 7B 06 7F */ clrlwi. r27, r27, 0x19
+/* 8030D600 00309260 57 9C 06 7E */ clrlwi r28, r28, 0x19
+/* 8030D604 00309264 41 82 00 10 */ beq lbl_8030D614
+/* 8030D608 00309268 7F 60 18 38 */ and r0, r27, r3
+/* 8030D60C 0030926C 7C 1B 00 00 */ cmpw r27, r0
+/* 8030D610 00309270 40 82 00 18 */ bne lbl_8030D628
+lbl_8030D614:
+/* 8030D614 00309274 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030D618 00309278 41 82 00 44 */ beq lbl_8030D65C
+/* 8030D61C 0030927C 7F 80 18 38 */ and r0, r28, r3
+/* 8030D620 00309280 7C 1C 00 00 */ cmpw r28, r0
+/* 8030D624 00309284 40 82 00 38 */ bne lbl_8030D65C
+lbl_8030D628:
+/* 8030D628 00309288 3B C0 FF FF */ li r30, -1
+/* 8030D62C 0030928C 48 00 00 30 */ b lbl_8030D65C
+lbl_8030D630:
+/* 8030D630 00309290 57 60 06 3E */ clrlwi r0, r27, 0x18
+/* 8030D634 00309294 28 00 00 7F */ cmplwi r0, 0x7f
+/* 8030D638 00309298 41 82 00 24 */ beq lbl_8030D65C
+/* 8030D63C 0030929C 7C 03 00 40 */ cmplw r3, r0
+/* 8030D640 003092A0 41 82 00 1C */ beq lbl_8030D65C
+/* 8030D644 003092A4 7C 60 00 39 */ and. r0, r3, r0
+/* 8030D648 003092A8 41 82 00 10 */ beq lbl_8030D658
+/* 8030D64C 003092AC 57 80 06 3E */ clrlwi r0, r28, 0x18
+/* 8030D650 003092B0 7C 60 00 39 */ and. r0, r3, r0
+/* 8030D654 003092B4 41 82 00 08 */ beq lbl_8030D65C
+lbl_8030D658:
+/* 8030D658 003092B8 3B C0 FF FF */ li r30, -1
+lbl_8030D65C:
+/* 8030D65C 003092BC 2C 1E FF FF */ cmpwi r30, -1
+/* 8030D660 003092C0 40 82 00 10 */ bne lbl_8030D670
+/* 8030D664 003092C4 9B F9 02 0A */ stb r31, 0x20a(r25)
+/* 8030D668 003092C8 B3 F9 00 00 */ sth r31, 0(r25)
+/* 8030D66C 003092CC 48 00 01 A8 */ b lbl_8030D814
+lbl_8030D670:
+/* 8030D670 003092D0 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
+/* 8030D674 003092D4 41 82 00 0C */ beq lbl_8030D680
+/* 8030D678 003092D8 9B F9 02 0A */ stb r31, 0x20a(r25)
+/* 8030D67C 003092DC B3 F9 00 00 */ sth r31, 0(r25)
+lbl_8030D680:
+/* 8030D680 003092E0 7F 23 CB 78 */ mr r3, r25
+/* 8030D684 003092E4 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D688 003092E8 4B FF E5 91 */ bl VFiPFENT_LoadShortNameFromBuf
+/* 8030D68C 003092EC 88 19 02 0A */ lbz r0, 0x20a(r25)
+/* 8030D690 003092F0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030D694 003092F4 41 82 00 94 */ beq lbl_8030D728
+/* 8030D698 003092F8 88 19 02 0B */ lbz r0, 0x20b(r25)
+/* 8030D69C 003092FC 28 00 00 01 */ cmplwi r0, 1
+/* 8030D6A0 00309300 40 82 00 88 */ bne lbl_8030D728
+/* 8030D6A4 00309304 7F 23 CB 78 */ mr r3, r25
+/* 8030D6A8 00309308 4B FF E5 01 */ bl VFiPFENT_CalcCheckSum
+/* 8030D6AC 0030930C 88 19 02 0C */ lbz r0, 0x20c(r25)
+/* 8030D6B0 00309310 54 63 06 3E */ clrlwi r3, r3, 0x18
+/* 8030D6B4 00309314 7C 00 18 40 */ cmplw r0, r3
+/* 8030D6B8 00309318 40 82 00 70 */ bne lbl_8030D728
+/* 8030D6BC 0030931C 7F 23 CB 78 */ mr r3, r25
+/* 8030D6C0 00309320 7F 44 D3 78 */ mr r4, r26
+/* 8030D6C4 00309324 38 A0 00 01 */ li r5, 1
+/* 8030D6C8 00309328 48 00 98 65 */ bl VFiPFPATH_MatchFileNameWithPattern
+/* 8030D6CC 0030932C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D6D0 00309330 41 82 00 58 */ beq lbl_8030D728
+/* 8030D6D4 00309334 7F 23 CB 78 */ mr r3, r25
+/* 8030D6D8 00309338 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D6DC 0030933C 4B FF E5 85 */ bl VFiPFENT_loadEntryNumericFieldsFromBuf
+/* 8030D6E0 00309340 80 78 00 44 */ lwz r3, 0x44(r24)
+/* 8030D6E4 00309344 88 19 02 1C */ lbz r0, 0x21c(r25)
+/* 8030D6E8 00309348 90 79 02 38 */ stw r3, 0x238(r25)
+/* 8030D6EC 0030934C 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030D6F0 00309350 A0 18 00 48 */ lhz r0, 0x48(r24)
+/* 8030D6F4 00309354 B0 19 02 3C */ sth r0, 0x23c(r25)
+/* 8030D6F8 00309358 80 18 00 3C */ lwz r0, 0x3c(r24)
+/* 8030D6FC 0030935C 90 19 02 2C */ stw r0, 0x22c(r25)
+/* 8030D700 00309360 41 82 00 18 */ beq lbl_8030D718
+/* 8030D704 00309364 80 19 02 34 */ lwz r0, 0x234(r25)
+/* 8030D708 00309368 2C 00 00 00 */ cmpwi r0, 0
+/* 8030D70C 0030936C 40 82 00 0C */ bne lbl_8030D718
+/* 8030D710 00309370 38 00 00 01 */ li r0, 1
+/* 8030D714 00309374 90 19 02 34 */ stw r0, 0x234(r25)
+lbl_8030D718:
+/* 8030D718 00309378 38 00 00 01 */ li r0, 1
+/* 8030D71C 0030937C 38 60 00 00 */ li r3, 0
+/* 8030D720 00309380 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030D724 00309384 48 00 01 A4 */ b lbl_8030D8C8
+lbl_8030D728:
+/* 8030D728 00309388 7F 44 D3 78 */ mr r4, r26
+/* 8030D72C 0030938C 38 79 02 0E */ addi r3, r25, 0x20e
+/* 8030D730 00309390 38 A0 00 00 */ li r5, 0
+/* 8030D734 00309394 48 00 97 F9 */ bl VFiPFPATH_MatchFileNameWithPattern
+/* 8030D738 00309398 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D73C 0030939C 41 82 00 D0 */ beq lbl_8030D80C
+/* 8030D740 003093A0 88 B8 00 58 */ lbz r5, 0x58(r24)
+/* 8030D744 003093A4 54 A0 06 F9 */ rlwinm. r0, r5, 0, 0x1b, 0x1c
+/* 8030D748 003093A8 41 82 00 70 */ beq lbl_8030D7B8
+/* 8030D74C 003093AC 38 79 02 0E */ addi r3, r25, 0x20e
+/* 8030D750 003093B0 38 81 00 18 */ addi r4, r1, 0x18
+/* 8030D754 003093B4 48 00 9E D9 */ bl VFiPFPATH_getLongNameformShortName
+/* 8030D758 003093B8 7F 23 CB 78 */ mr r3, r25
+/* 8030D75C 003093BC 38 81 00 18 */ addi r4, r1, 0x18
+/* 8030D760 003093C0 48 00 A2 AD */ bl VFiPFPATH_transformInUnicode
+/* 8030D764 003093C4 3C 80 4E C5 */ lis r4, 0x4EC4EC4F@ha
+/* 8030D768 003093C8 38 04 EC 4F */ addi r0, r4, 0x4EC4EC4F@l
+/* 8030D76C 003093CC 7C 00 18 96 */ mulhw r0, r0, r3
+/* 8030D770 003093D0 7C 05 16 70 */ srawi r5, r0, 2
+/* 8030D774 003093D4 7C 00 16 70 */ srawi r0, r0, 2
+/* 8030D778 003093D8 54 04 0F FE */ srwi r4, r0, 0x1f
+/* 8030D77C 003093DC 54 A6 0F FE */ srwi r6, r5, 0x1f
+/* 8030D780 003093E0 7C 00 22 14 */ add r0, r0, r4
+/* 8030D784 003093E4 1C 00 00 0D */ mulli r0, r0, 0xd
+/* 8030D788 003093E8 7C A5 32 14 */ add r5, r5, r6
+/* 8030D78C 003093EC 7C 80 18 50 */ subf r4, r0, r3
+/* 8030D790 003093F0 7F 23 CB 78 */ mr r3, r25
+/* 8030D794 003093F4 7C 04 00 D0 */ neg r0, r4
+/* 8030D798 003093F8 7C 00 23 78 */ or r0, r0, r4
+/* 8030D79C 003093FC 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 8030D7A0 00309400 7C 05 02 14 */ add r0, r5, r0
+/* 8030D7A4 00309404 98 19 02 0A */ stb r0, 0x20a(r25)
+/* 8030D7A8 00309408 4B FF E4 01 */ bl VFiPFENT_CalcCheckSum
+/* 8030D7AC 0030940C 38 00 00 01 */ li r0, 1
+/* 8030D7B0 00309410 98 79 02 0C */ stb r3, 0x20c(r25)
+/* 8030D7B4 00309414 98 19 02 0B */ stb r0, 0x20b(r25)
+lbl_8030D7B8:
+/* 8030D7B8 00309418 7F 23 CB 78 */ mr r3, r25
+/* 8030D7BC 0030941C 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D7C0 00309420 4B FF E4 A1 */ bl VFiPFENT_loadEntryNumericFieldsFromBuf
+/* 8030D7C4 00309424 80 78 00 44 */ lwz r3, 0x44(r24)
+/* 8030D7C8 00309428 88 19 02 1C */ lbz r0, 0x21c(r25)
+/* 8030D7CC 0030942C 90 79 02 38 */ stw r3, 0x238(r25)
+/* 8030D7D0 00309430 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030D7D4 00309434 A0 18 00 48 */ lhz r0, 0x48(r24)
+/* 8030D7D8 00309438 B0 19 02 3C */ sth r0, 0x23c(r25)
+/* 8030D7DC 0030943C 80 18 00 3C */ lwz r0, 0x3c(r24)
+/* 8030D7E0 00309440 90 19 02 2C */ stw r0, 0x22c(r25)
+/* 8030D7E4 00309444 41 82 00 18 */ beq lbl_8030D7FC
+/* 8030D7E8 00309448 80 19 02 34 */ lwz r0, 0x234(r25)
+/* 8030D7EC 0030944C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030D7F0 00309450 40 82 00 0C */ bne lbl_8030D7FC
+/* 8030D7F4 00309454 38 00 00 01 */ li r0, 1
+/* 8030D7F8 00309458 90 19 02 34 */ stw r0, 0x234(r25)
+lbl_8030D7FC:
+/* 8030D7FC 0030945C 38 00 00 01 */ li r0, 1
+/* 8030D800 00309460 38 60 00 00 */ li r3, 0
+/* 8030D804 00309464 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030D808 00309468 48 00 00 C0 */ b lbl_8030D8C8
+lbl_8030D80C:
+/* 8030D80C 0030946C 9B F9 02 0A */ stb r31, 0x20a(r25)
+/* 8030D810 00309470 B3 F9 00 00 */ sth r31, 0(r25)
+lbl_8030D814:
+/* 8030D814 00309474 82 F8 00 00 */ lwz r23, 0(r24)
+/* 8030D818 00309478 7F 03 C3 78 */ mr r3, r24
+/* 8030D81C 0030947C 38 80 00 00 */ li r4, 0
+/* 8030D820 00309480 38 17 00 01 */ addi r0, r23, 1
+/* 8030D824 00309484 90 18 00 00 */ stw r0, 0(r24)
+/* 8030D828 00309488 4B FF F3 D5 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D82C 0030948C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D830 00309490 7C 7E 1B 78 */ mr r30, r3
+/* 8030D834 00309494 41 82 00 18 */ beq lbl_8030D84C
+/* 8030D838 00309498 92 F8 00 00 */ stw r23, 0(r24)
+/* 8030D83C 0030949C 7F 03 C3 78 */ mr r3, r24
+/* 8030D840 003094A0 38 80 00 00 */ li r4, 0
+/* 8030D844 003094A4 4B FF F3 B9 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D848 003094A8 48 00 00 5C */ b lbl_8030D8A4
+lbl_8030D84C:
+/* 8030D84C 003094AC 80 B8 00 44 */ lwz r5, 0x44(r24)
+/* 8030D850 003094B0 3C 05 00 01 */ addis r0, r5, 1
+/* 8030D854 003094B4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030D858 003094B8 40 82 00 0C */ bne lbl_8030D864
+/* 8030D85C 003094BC 38 80 00 10 */ li r4, 0x10
+/* 8030D860 003094C0 48 00 00 34 */ b lbl_8030D894
+lbl_8030D864:
+/* 8030D864 003094C4 80 78 00 04 */ lwz r3, 4(r24)
+/* 8030D868 003094C8 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D86C 003094CC A0 D8 00 48 */ lhz r6, 0x48(r24)
+/* 8030D870 003094D0 39 01 00 08 */ addi r8, r1, 8
+/* 8030D874 003094D4 38 E0 00 20 */ li r7, 0x20
+/* 8030D878 003094D8 39 20 00 00 */ li r9, 0
+/* 8030D87C 003094DC 48 00 B1 AD */ bl VFiPFSEC_ReadData
+/* 8030D880 003094E0 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030D884 003094E4 38 80 00 11 */ li r4, 0x11
+/* 8030D888 003094E8 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030D88C 003094EC 40 82 00 08 */ bne lbl_8030D894
+/* 8030D890 003094F0 7C 64 1B 78 */ mr r4, r3
+lbl_8030D894:
+/* 8030D894 003094F4 7C 04 00 D0 */ neg r0, r4
+/* 8030D898 003094F8 7C 00 23 78 */ or r0, r0, r4
+/* 8030D89C 003094FC 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D8A0 00309500 7C 9E 00 38 */ and r30, r4, r0
+lbl_8030D8A4:
+/* 8030D8A4 00309504 7C 1E 00 D0 */ neg r0, r30
+/* 8030D8A8 00309508 7C 00 F3 78 */ or r0, r0, r30
+/* 8030D8AC 0030950C 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D8B0 00309510 7F DE 00 38 */ and r30, r30, r0
+lbl_8030D8B4:
+/* 8030D8B4 00309514 7F 03 C3 78 */ mr r3, r24
+/* 8030D8B8 00309518 48 00 07 45 */ bl VFiPFENT_ITER_IsAtLogicalEnd
+/* 8030D8BC 0030951C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D8C0 00309520 41 82 FC C8 */ beq lbl_8030D588
+lbl_8030D8C4:
+/* 8030D8C4 00309524 38 60 00 00 */ li r3, 0
+lbl_8030D8C8:
+/* 8030D8C8 00309528 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030D8CC 0030952C 4B EB 98 99 */ bl _restgpr_23
+/* 8030D8D0 00309530 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 8030D8D4 00309534 7C 08 03 A6 */ mtlr r0
+/* 8030D8D8 00309538 38 21 00 50 */ addi r1, r1, 0x50
+/* 8030D8DC 0030953C 4E 80 00 20 */ blr
+
+VFiPFENT_ITER_DoGetEntry:
+/* 8030D8E0 00309540 94 21 FD 60 */ stwu r1, -0x2a0(r1)
+/* 8030D8E4 00309544 7C 08 02 A6 */ mflr r0
+/* 8030D8E8 00309548 90 01 02 A4 */ stw r0, 0x2a4(r1)
+/* 8030D8EC 0030954C 39 61 02 A0 */ addi r11, r1, 0x2a0
+/* 8030D8F0 00309550 4B EB 98 21 */ bl _savegpr_21
+/* 8030D8F4 00309554 7C D6 33 78 */ mr r22, r6
+/* 8030D8F8 00309558 7C 77 1B 78 */ mr r23, r3
+/* 8030D8FC 0030955C 7C 98 23 78 */ mr r24, r4
+/* 8030D900 00309560 7C BB 2B 78 */ mr r27, r5
+/* 8030D904 00309564 7C F9 3B 78 */ mr r25, r7
+/* 8030D908 00309568 7D 1A 43 78 */ mr r26, r8
+/* 8030D90C 0030956C 7E C3 B3 78 */ mr r3, r22
+/* 8030D910 00309570 38 8D 8C E4 */ addi r4, r13, lbl_8063DFA4-_SDA_BASE_
+/* 8030D914 00309574 38 A0 00 01 */ li r5, 1
+/* 8030D918 00309578 38 C0 00 01 */ li r6, 1
+/* 8030D91C 0030957C 38 E0 00 01 */ li r7, 1
+/* 8030D920 00309580 4B FF 7D 41 */ bl VFiPFSTR_StrNCmp
+/* 8030D924 00309584 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D928 00309588 40 82 00 10 */ bne lbl_8030D938
+/* 8030D92C 0030958C 7E C3 B3 78 */ mr r3, r22
+/* 8030D930 00309590 38 80 00 02 */ li r4, 2
+/* 8030D934 00309594 4B FF 7A 05 */ bl VFiPFSTR_MoveStrPos
+lbl_8030D938:
+/* 8030D938 00309598 7E C3 B3 78 */ mr r3, r22
+/* 8030D93C 0030959C 38 8D 8C E8 */ addi r4, r13, lbl_8063DFA8-_SDA_BASE_
+/* 8030D940 003095A0 38 A0 00 01 */ li r5, 1
+/* 8030D944 003095A4 38 C0 00 00 */ li r6, 0
+/* 8030D948 003095A8 38 E0 00 01 */ li r7, 1
+/* 8030D94C 003095AC 4B FF 7D 15 */ bl VFiPFSTR_StrNCmp
+/* 8030D950 003095B0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D954 003095B4 41 82 00 24 */ beq lbl_8030D978
+/* 8030D958 003095B8 7E C3 B3 78 */ mr r3, r22
+/* 8030D95C 003095BC 38 8D 8C EC */ addi r4, r13, lbl_8063DFAC-_SDA_BASE_
+/* 8030D960 003095C0 38 A0 00 01 */ li r5, 1
+/* 8030D964 003095C4 38 C0 00 00 */ li r6, 0
+/* 8030D968 003095C8 38 E0 00 01 */ li r7, 1
+/* 8030D96C 003095CC 4B FF 7C F5 */ bl VFiPFSTR_StrNCmp
+/* 8030D970 003095D0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D974 003095D4 40 82 00 5C */ bne lbl_8030D9D0
+lbl_8030D978:
+/* 8030D978 003095D8 7F 63 DB 78 */ mr r3, r27
+/* 8030D97C 003095DC 7F 04 C3 78 */ mr r4, r24
+/* 8030D980 003095E0 4B FF ED 85 */ bl VFiPFENT_GetRootDir
+/* 8030D984 003095E4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D988 003095E8 41 82 00 08 */ beq lbl_8030D990
+/* 8030D98C 003095EC 48 00 05 54 */ b lbl_8030DEE0
+lbl_8030D990:
+/* 8030D990 003095F0 7E C3 B3 78 */ mr r3, r22
+/* 8030D994 003095F4 38 80 00 01 */ li r4, 1
+/* 8030D998 003095F8 4B FF 7B 45 */ bl VFiPFSTR_StrNumChar
+/* 8030D99C 003095FC 54 60 04 3E */ clrlwi r0, r3, 0x10
+/* 8030D9A0 00309600 28 00 00 01 */ cmplwi r0, 1
+/* 8030D9A4 00309604 40 82 00 44 */ bne lbl_8030D9E8
+/* 8030D9A8 00309608 7E C3 B3 78 */ mr r3, r22
+/* 8030D9AC 0030960C 38 8D 8C F0 */ addi r4, r13, lbl_8063DFB0-_SDA_BASE_
+/* 8030D9B0 00309610 38 A0 00 02 */ li r5, 2
+/* 8030D9B4 00309614 38 C0 00 00 */ li r6, 0
+/* 8030D9B8 00309618 38 E0 00 01 */ li r7, 1
+/* 8030D9BC 0030961C 4B FF 7C A5 */ bl VFiPFSTR_StrNCmp
+/* 8030D9C0 00309620 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D9C4 00309624 40 82 00 24 */ bne lbl_8030D9E8
+/* 8030D9C8 00309628 38 60 00 00 */ li r3, 0
+/* 8030D9CC 0030962C 48 00 05 14 */ b lbl_8030DEE0
+lbl_8030D9D0:
+/* 8030D9D0 00309630 7F 63 DB 78 */ mr r3, r27
+/* 8030D9D4 00309634 7F 04 C3 78 */ mr r4, r24
+/* 8030D9D8 00309638 48 00 BD 25 */ bl VFiPFVOL_GetCurrentDir
+/* 8030D9DC 0030963C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D9E0 00309640 41 82 00 08 */ beq lbl_8030D9E8
+/* 8030D9E4 00309644 48 00 04 FC */ b lbl_8030DEE0
+lbl_8030D9E8:
+/* 8030D9E8 00309648 7E C3 B3 78 */ mr r3, r22
+/* 8030D9EC 0030964C 38 80 00 01 */ li r4, 1
+/* 8030D9F0 00309650 4B FF 79 21 */ bl VFiPFSTR_GetStrPos
+/* 8030D9F4 00309654 7C 75 1B 78 */ mr r21, r3
+/* 8030D9F8 00309658 7F 65 DB 78 */ mr r5, r27
+/* 8030D9FC 0030965C 38 77 00 08 */ addi r3, r23, 8
+/* 8030DA00 00309660 38 81 00 14 */ addi r4, r1, 0x14
+/* 8030DA04 00309664 38 D7 00 0C */ addi r6, r23, 0xc
+/* 8030DA08 00309668 48 00 36 C1 */ bl VFiPFFAT_InitFFD
+/* 8030DA0C 0030966C 80 18 02 34 */ lwz r0, 0x234(r24)
+/* 8030DA10 00309670 7E C3 B3 78 */ mr r3, r22
+/* 8030DA14 00309674 90 17 00 0C */ stw r0, 0xc(r23)
+/* 8030DA18 00309678 4B FF 78 C9 */ bl VFiPFSTR_GetCodeMode
+/* 8030DA1C 0030967C 7C 65 1B 78 */ mr r5, r3
+/* 8030DA20 00309680 7E A4 AB 78 */ mr r4, r21
+/* 8030DA24 00309684 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DA28 00309688 48 00 90 D1 */ bl VFiPFPATH_InitTokenOfPath
+/* 8030DA2C 0030968C 7F 24 CB 78 */ mr r4, r25
+/* 8030DA30 00309690 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DA34 00309694 48 00 90 D5 */ bl VFiPFPATH_GetNextTokenOfPath
+/* 8030DA38 00309698 3B 80 00 00 */ li r28, 0
+/* 8030DA3C 0030969C 3B A0 00 01 */ li r29, 1
+/* 8030DA40 003096A0 3B C0 FF FF */ li r30, -1
+/* 8030DA44 003096A4 3B E0 00 03 */ li r31, 3
+/* 8030DA48 003096A8 48 00 04 88 */ b lbl_8030DED0
+lbl_8030DA4C:
+/* 8030DA4C 003096AC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DA50 003096B0 41 82 00 08 */ beq lbl_8030DA58
+/* 8030DA54 003096B4 48 00 04 8C */ b lbl_8030DEE0
+lbl_8030DA58:
+/* 8030DA58 003096B8 2C 1A 00 00 */ cmpwi r26, 0
+/* 8030DA5C 003096BC 41 82 00 24 */ beq lbl_8030DA80
+/* 8030DA60 003096C0 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DA64 003096C4 38 8D 8C F0 */ addi r4, r13, lbl_8063DFB0-_SDA_BASE_
+/* 8030DA68 003096C8 38 A0 00 02 */ li r5, 2
+/* 8030DA6C 003096CC 38 C0 00 00 */ li r6, 0
+/* 8030DA70 003096D0 38 E0 00 01 */ li r7, 1
+/* 8030DA74 003096D4 4B FF 7B ED */ bl VFiPFSTR_StrNCmp
+/* 8030DA78 003096D8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DA7C 003096DC 41 82 04 60 */ beq lbl_8030DEDC
+lbl_8030DA80:
+/* 8030DA80 003096E0 88 18 02 1C */ lbz r0, 0x21c(r24)
+/* 8030DA84 003096E4 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030DA88 003096E8 40 82 00 0C */ bne lbl_8030DA94
+/* 8030DA8C 003096EC 38 60 00 02 */ li r3, 2
+/* 8030DA90 003096F0 48 00 04 50 */ b lbl_8030DEE0
+lbl_8030DA94:
+/* 8030DA94 003096F4 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DA98 003096F8 4B FF 7A 31 */ bl VFiPFSTR_StrLen
+/* 8030DA9C 003096FC 54 60 04 3F */ clrlwi. r0, r3, 0x10
+/* 8030DAA0 00309700 40 82 00 0C */ bne lbl_8030DAAC
+/* 8030DAA4 00309704 38 60 00 02 */ li r3, 2
+/* 8030DAA8 00309708 48 00 04 38 */ b lbl_8030DEE0
+lbl_8030DAAC:
+/* 8030DAAC 0030970C 80 18 02 34 */ lwz r0, 0x234(r24)
+/* 8030DAB0 00309710 38 77 00 08 */ addi r3, r23, 8
+/* 8030DAB4 00309714 38 97 00 0C */ addi r4, r23, 0xc
+/* 8030DAB8 00309718 90 17 00 0C */ stw r0, 0xc(r23)
+/* 8030DABC 0030971C 48 00 35 AD */ bl VFiPFFAT_ResetFFD
+/* 8030DAC0 00309720 80 77 00 3C */ lwz r3, 0x3c(r23)
+/* 8030DAC4 00309724 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DAC8 00309728 90 77 00 04 */ stw r3, 4(r23)
+/* 8030DACC 0030972C 40 82 00 0C */ bne lbl_8030DAD8
+/* 8030DAD0 00309730 3A C0 00 0A */ li r22, 0xa
+/* 8030DAD4 00309734 48 00 00 B0 */ b lbl_8030DB84
+lbl_8030DAD8:
+/* 8030DAD8 00309738 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 8030DADC 0030973C 7E E3 BB 78 */ mr r3, r23
+/* 8030DAE0 00309740 83 77 00 00 */ lwz r27, 0(r23)
+/* 8030DAE4 00309744 38 80 00 00 */ li r4, 0
+/* 8030DAE8 00309748 38 C5 FF FB */ addi r6, r5, -5
+/* 8030DAEC 0030974C 93 D7 00 40 */ stw r30, 0x40(r23)
+/* 8030DAF0 00309750 54 C0 06 3E */ clrlwi r0, r6, 0x18
+/* 8030DAF4 00309754 7F A5 00 30 */ slw r5, r29, r0
+/* 8030DAF8 00309758 98 D7 00 6C */ stb r6, 0x6c(r23)
+/* 8030DAFC 0030975C 38 05 FF FF */ addi r0, r5, -1
+/* 8030DB00 00309760 B0 17 00 4A */ sth r0, 0x4a(r23)
+/* 8030DB04 00309764 93 97 00 00 */ stw r28, 0(r23)
+/* 8030DB08 00309768 4B FF F0 F5 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DB0C 0030976C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DB10 00309770 7C 76 1B 78 */ mr r22, r3
+/* 8030DB14 00309774 41 82 00 18 */ beq lbl_8030DB2C
+/* 8030DB18 00309778 93 77 00 00 */ stw r27, 0(r23)
+/* 8030DB1C 0030977C 7E E3 BB 78 */ mr r3, r23
+/* 8030DB20 00309780 38 80 00 00 */ li r4, 0
+/* 8030DB24 00309784 4B FF F0 D9 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DB28 00309788 48 00 00 5C */ b lbl_8030DB84
+lbl_8030DB2C:
+/* 8030DB2C 0030978C 80 B7 00 44 */ lwz r5, 0x44(r23)
+/* 8030DB30 00309790 3C 05 00 01 */ addis r0, r5, 1
+/* 8030DB34 00309794 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030DB38 00309798 40 82 00 0C */ bne lbl_8030DB44
+/* 8030DB3C 0030979C 38 80 00 10 */ li r4, 0x10
+/* 8030DB40 003097A0 48 00 00 34 */ b lbl_8030DB74
+lbl_8030DB44:
+/* 8030DB44 003097A4 80 77 00 04 */ lwz r3, 4(r23)
+/* 8030DB48 003097A8 38 97 00 4C */ addi r4, r23, 0x4c
+/* 8030DB4C 003097AC A0 D7 00 48 */ lhz r6, 0x48(r23)
+/* 8030DB50 003097B0 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030DB54 003097B4 38 E0 00 20 */ li r7, 0x20
+/* 8030DB58 003097B8 39 20 00 00 */ li r9, 0
+/* 8030DB5C 003097BC 48 00 AE CD */ bl VFiPFSEC_ReadData
+/* 8030DB60 003097C0 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030DB64 003097C4 38 80 00 11 */ li r4, 0x11
+/* 8030DB68 003097C8 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030DB6C 003097CC 40 82 00 08 */ bne lbl_8030DB74
+/* 8030DB70 003097D0 7C 64 1B 78 */ mr r4, r3
+lbl_8030DB74:
+/* 8030DB74 003097D4 7C 04 00 D0 */ neg r0, r4
+/* 8030DB78 003097D8 7C 00 23 78 */ or r0, r0, r4
+/* 8030DB7C 003097DC 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030DB80 003097E0 7C 96 00 38 */ and r22, r4, r0
+lbl_8030DB84:
+/* 8030DB84 003097E4 2C 16 00 00 */ cmpwi r22, 0
+/* 8030DB88 003097E8 41 82 00 0C */ beq lbl_8030DB94
+/* 8030DB8C 003097EC 7E C3 B3 78 */ mr r3, r22
+/* 8030DB90 003097F0 48 00 03 50 */ b lbl_8030DEE0
+lbl_8030DB94:
+/* 8030DB94 003097F4 80 B7 00 10 */ lwz r5, 0x10(r23)
+/* 8030DB98 003097F8 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DB9C 003097FC 3A A0 00 00 */ li r21, 0
+/* 8030DBA0 00309800 38 8D 8C D0 */ addi r4, r13, lbl_8063DF90-_SDA_BASE_
+/* 8030DBA4 00309804 83 65 00 00 */ lwz r27, 0(r5)
+/* 8030DBA8 00309808 38 A0 00 01 */ li r5, 1
+/* 8030DBAC 0030980C 38 C0 00 00 */ li r6, 0
+/* 8030DBB0 00309810 38 E0 00 03 */ li r7, 3
+/* 8030DBB4 00309814 4B FF 7A AD */ bl VFiPFSTR_StrNCmp
+/* 8030DBB8 00309818 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DBBC 0030981C 41 82 00 38 */ beq lbl_8030DBF4
+/* 8030DBC0 00309820 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DBC4 00309824 38 8D 8C D4 */ addi r4, r13, lbl_8063DF94-_SDA_BASE_
+/* 8030DBC8 00309828 38 A0 00 01 */ li r5, 1
+/* 8030DBCC 0030982C 38 C0 00 00 */ li r6, 0
+/* 8030DBD0 00309830 38 E0 00 03 */ li r7, 3
+/* 8030DBD4 00309834 4B FF 7A 8D */ bl VFiPFSTR_StrNCmp
+/* 8030DBD8 00309838 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DBDC 0030983C 41 82 00 18 */ beq lbl_8030DBF4
+/* 8030DBE0 00309840 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DBE4 00309844 38 8D 8C D8 */ addi r4, r13, lbl_8063DF98-_SDA_BASE_
+/* 8030DBE8 00309848 4B FF 79 D5 */ bl VFiPFSTR_StrCmp
+/* 8030DBEC 0030984C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DBF0 00309850 40 82 00 40 */ bne lbl_8030DC30
+lbl_8030DBF4:
+/* 8030DBF4 00309854 38 78 02 0E */ addi r3, r24, 0x20e
+/* 8030DBF8 00309858 38 8D 8C D8 */ addi r4, r13, lbl_8063DF98-_SDA_BASE_
+/* 8030DBFC 0030985C 4B FF 75 15 */ bl VFipf_strcmp
+/* 8030DC00 00309860 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DC04 00309864 41 82 00 2C */ beq lbl_8030DC30
+/* 8030DC08 00309868 88 18 02 0A */ lbz r0, 0x20a(r24)
+/* 8030DC0C 0030986C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030DC10 00309870 41 82 00 14 */ beq lbl_8030DC24
+/* 8030DC14 00309874 7F 03 C3 78 */ mr r3, r24
+/* 8030DC18 00309878 48 00 9C 2D */ bl VFiPFPATH_GetLengthFromUnicode
+/* 8030DC1C 0030987C 3A A3 00 01 */ addi r21, r3, 1
+/* 8030DC20 00309880 48 00 00 10 */ b lbl_8030DC30
+lbl_8030DC24:
+/* 8030DC24 00309884 38 78 02 0E */ addi r3, r24, 0x20e
+/* 8030DC28 00309888 48 00 9B B5 */ bl VFiPFPATH_GetLengthFromShortname
+/* 8030DC2C 0030988C 3A A3 00 01 */ addi r21, r3, 1
+lbl_8030DC30:
+/* 8030DC30 00309890 7E E3 BB 78 */ mr r3, r23
+/* 8030DC34 00309894 7F 04 C3 78 */ mr r4, r24
+/* 8030DC38 00309898 38 A1 00 20 */ addi r5, r1, 0x20
+/* 8030DC3C 0030989C 39 01 00 10 */ addi r8, r1, 0x10
+/* 8030DC40 003098A0 38 C0 00 7F */ li r6, 0x7f
+/* 8030DC44 003098A4 38 E0 00 00 */ li r7, 0
+/* 8030DC48 003098A8 39 20 00 01 */ li r9, 1
+/* 8030DC4C 003098AC 4B FF F4 7D */ bl VFiPFENT_ITER_DoFindEntry
+/* 8030DC50 003098B0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DC54 003098B4 41 82 00 08 */ beq lbl_8030DC5C
+/* 8030DC58 003098B8 48 00 02 88 */ b lbl_8030DEE0
+lbl_8030DC5C:
+/* 8030DC5C 003098BC 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030DC60 003098C0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030DC64 003098C4 40 82 00 30 */ bne lbl_8030DC94
+/* 8030DC68 003098C8 7F 24 CB 78 */ mr r4, r25
+/* 8030DC6C 003098CC 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DC70 003098D0 48 00 8E 99 */ bl VFiPFPATH_GetNextTokenOfPath
+/* 8030DC74 003098D4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DC78 003098D8 41 82 00 08 */ beq lbl_8030DC80
+/* 8030DC7C 003098DC 48 00 02 64 */ b lbl_8030DEE0
+lbl_8030DC80:
+/* 8030DC80 003098E0 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 8030DC84 003098E4 7C 00 00 34 */ cntlzw r0, r0
+/* 8030DC88 003098E8 54 03 D9 7E */ srwi r3, r0, 5
+/* 8030DC8C 003098EC 38 63 00 02 */ addi r3, r3, 2
+/* 8030DC90 003098F0 48 00 02 50 */ b lbl_8030DEE0
+lbl_8030DC94:
+/* 8030DC94 003098F4 2C 19 00 00 */ cmpwi r25, 0
+/* 8030DC98 003098F8 40 82 02 2C */ bne lbl_8030DEC4
+/* 8030DC9C 003098FC 88 18 02 1C */ lbz r0, 0x21c(r24)
+/* 8030DCA0 00309900 54 03 06 F7 */ rlwinm. r3, r0, 0, 0x1b, 0x1b
+/* 8030DCA4 00309904 41 82 00 18 */ beq lbl_8030DCBC
+/* 8030DCA8 00309908 80 18 02 34 */ lwz r0, 0x234(r24)
+/* 8030DCAC 0030990C 28 00 00 01 */ cmplwi r0, 1
+/* 8030DCB0 00309910 40 82 00 0C */ bne lbl_8030DCBC
+/* 8030DCB4 00309914 93 F8 02 30 */ stw r31, 0x230(r24)
+/* 8030DCB8 00309918 48 00 02 0C */ b lbl_8030DEC4
+lbl_8030DCBC:
+/* 8030DCBC 0030991C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DCC0 00309920 41 82 01 90 */ beq lbl_8030DE50
+/* 8030DCC4 00309924 38 78 02 0E */ addi r3, r24, 0x20e
+/* 8030DCC8 00309928 38 8D 8C D8 */ addi r4, r13, lbl_8063DF98-_SDA_BASE_
+/* 8030DCCC 0030992C 4B FF 74 45 */ bl VFipf_strcmp
+/* 8030DCD0 00309930 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DCD4 00309934 40 82 01 7C */ bne lbl_8030DE50
+/* 8030DCD8 00309938 2C 15 00 00 */ cmpwi r21, 0
+/* 8030DCDC 0030993C 41 82 00 14 */ beq lbl_8030DCF0
+/* 8030DCE0 00309940 80 18 02 30 */ lwz r0, 0x230(r24)
+/* 8030DCE4 00309944 7C 15 00 50 */ subf r0, r21, r0
+/* 8030DCE8 00309948 90 18 02 30 */ stw r0, 0x230(r24)
+/* 8030DCEC 0030994C 48 00 01 D8 */ b lbl_8030DEC4
+lbl_8030DCF0:
+/* 8030DCF0 00309950 80 18 02 34 */ lwz r0, 0x234(r24)
+/* 8030DCF4 00309954 38 77 00 08 */ addi r3, r23, 8
+/* 8030DCF8 00309958 38 81 02 64 */ addi r4, r1, 0x264
+/* 8030DCFC 0030995C 90 01 02 64 */ stw r0, 0x264(r1)
+/* 8030DD00 00309960 48 00 33 69 */ bl VFiPFFAT_ResetFFD
+/* 8030DD04 00309964 80 77 00 3C */ lwz r3, 0x3c(r23)
+/* 8030DD08 00309968 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DD0C 0030996C 90 77 00 04 */ stw r3, 4(r23)
+/* 8030DD10 00309970 40 82 00 0C */ bne lbl_8030DD1C
+/* 8030DD14 00309974 3A A0 00 0A */ li r21, 0xa
+/* 8030DD18 00309978 48 00 00 B0 */ b lbl_8030DDC8
+lbl_8030DD1C:
+/* 8030DD1C 0030997C 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 8030DD20 00309980 7E E3 BB 78 */ mr r3, r23
+/* 8030DD24 00309984 82 D7 00 00 */ lwz r22, 0(r23)
+/* 8030DD28 00309988 38 80 00 00 */ li r4, 0
+/* 8030DD2C 0030998C 38 C5 FF FB */ addi r6, r5, -5
+/* 8030DD30 00309990 93 D7 00 40 */ stw r30, 0x40(r23)
+/* 8030DD34 00309994 54 C0 06 3E */ clrlwi r0, r6, 0x18
+/* 8030DD38 00309998 7F A5 00 30 */ slw r5, r29, r0
+/* 8030DD3C 0030999C 98 D7 00 6C */ stb r6, 0x6c(r23)
+/* 8030DD40 003099A0 38 05 FF FF */ addi r0, r5, -1
+/* 8030DD44 003099A4 B0 17 00 4A */ sth r0, 0x4a(r23)
+/* 8030DD48 003099A8 93 97 00 00 */ stw r28, 0(r23)
+/* 8030DD4C 003099AC 4B FF EE B1 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DD50 003099B0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DD54 003099B4 7C 75 1B 78 */ mr r21, r3
+/* 8030DD58 003099B8 41 82 00 18 */ beq lbl_8030DD70
+/* 8030DD5C 003099BC 92 D7 00 00 */ stw r22, 0(r23)
+/* 8030DD60 003099C0 7E E3 BB 78 */ mr r3, r23
+/* 8030DD64 003099C4 38 80 00 00 */ li r4, 0
+/* 8030DD68 003099C8 4B FF EE 95 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DD6C 003099CC 48 00 00 5C */ b lbl_8030DDC8
+lbl_8030DD70:
+/* 8030DD70 003099D0 80 B7 00 44 */ lwz r5, 0x44(r23)
+/* 8030DD74 003099D4 3C 05 00 01 */ addis r0, r5, 1
+/* 8030DD78 003099D8 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030DD7C 003099DC 40 82 00 0C */ bne lbl_8030DD88
+/* 8030DD80 003099E0 38 80 00 10 */ li r4, 0x10
+/* 8030DD84 003099E4 48 00 00 34 */ b lbl_8030DDB8
+lbl_8030DD88:
+/* 8030DD88 003099E8 80 77 00 04 */ lwz r3, 4(r23)
+/* 8030DD8C 003099EC 38 97 00 4C */ addi r4, r23, 0x4c
+/* 8030DD90 003099F0 A0 D7 00 48 */ lhz r6, 0x48(r23)
+/* 8030DD94 003099F4 39 01 00 08 */ addi r8, r1, 8
+/* 8030DD98 003099F8 38 E0 00 20 */ li r7, 0x20
+/* 8030DD9C 003099FC 39 20 00 00 */ li r9, 0
+/* 8030DDA0 00309A00 48 00 AC 89 */ bl VFiPFSEC_ReadData
+/* 8030DDA4 00309A04 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030DDA8 00309A08 38 80 00 11 */ li r4, 0x11
+/* 8030DDAC 00309A0C 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030DDB0 00309A10 40 82 00 08 */ bne lbl_8030DDB8
+/* 8030DDB4 00309A14 7C 64 1B 78 */ mr r4, r3
+lbl_8030DDB8:
+/* 8030DDB8 00309A18 7C 04 00 D0 */ neg r0, r4
+/* 8030DDBC 00309A1C 7C 00 23 78 */ or r0, r0, r4
+/* 8030DDC0 00309A20 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030DDC4 00309A24 7C 95 00 38 */ and r21, r4, r0
+lbl_8030DDC8:
+/* 8030DDC8 00309A28 2C 15 00 00 */ cmpwi r21, 0
+/* 8030DDCC 00309A2C 41 82 00 0C */ beq lbl_8030DDD8
+/* 8030DDD0 00309A30 7E A3 AB 78 */ mr r3, r21
+/* 8030DDD4 00309A34 48 00 01 0C */ b lbl_8030DEE0
+lbl_8030DDD8:
+/* 8030DDD8 00309A38 7E E3 BB 78 */ mr r3, r23
+/* 8030DDDC 00309A3C 7F 65 DB 78 */ mr r5, r27
+/* 8030DDE0 00309A40 38 81 00 30 */ addi r4, r1, 0x30
+/* 8030DDE4 00309A44 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030DDE8 00309A48 4B FF EF C1 */ bl VFiPFENT_ITER_FindCluster
+/* 8030DDEC 00309A4C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DDF0 00309A50 41 82 00 08 */ beq lbl_8030DDF8
+/* 8030DDF4 00309A54 48 00 00 EC */ b lbl_8030DEE0
+lbl_8030DDF8:
+/* 8030DDF8 00309A58 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030DDFC 00309A5C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030DE00 00309A60 40 82 00 0C */ bne lbl_8030DE0C
+/* 8030DE04 00309A64 38 60 00 02 */ li r3, 2
+/* 8030DE08 00309A68 48 00 00 D8 */ b lbl_8030DEE0
+lbl_8030DE0C:
+/* 8030DE0C 00309A6C 88 01 02 3A */ lbz r0, 0x23a(r1)
+/* 8030DE10 00309A70 2C 00 00 00 */ cmpwi r0, 0
+/* 8030DE14 00309A74 41 82 00 20 */ beq lbl_8030DE34
+/* 8030DE18 00309A78 38 61 00 30 */ addi r3, r1, 0x30
+/* 8030DE1C 00309A7C 48 00 9A 29 */ bl VFiPFPATH_GetLengthFromUnicode
+/* 8030DE20 00309A80 80 18 02 30 */ lwz r0, 0x230(r24)
+/* 8030DE24 00309A84 38 63 00 01 */ addi r3, r3, 1
+/* 8030DE28 00309A88 7C 03 00 50 */ subf r0, r3, r0
+/* 8030DE2C 00309A8C 90 18 02 30 */ stw r0, 0x230(r24)
+/* 8030DE30 00309A90 48 00 00 94 */ b lbl_8030DEC4
+lbl_8030DE34:
+/* 8030DE34 00309A94 38 61 02 3E */ addi r3, r1, 0x23e
+/* 8030DE38 00309A98 48 00 99 A5 */ bl VFiPFPATH_GetLengthFromShortname
+/* 8030DE3C 00309A9C 80 18 02 30 */ lwz r0, 0x230(r24)
+/* 8030DE40 00309AA0 38 63 00 01 */ addi r3, r3, 1
+/* 8030DE44 00309AA4 7C 03 00 50 */ subf r0, r3, r0
+/* 8030DE48 00309AA8 90 18 02 30 */ stw r0, 0x230(r24)
+/* 8030DE4C 00309AAC 48 00 00 78 */ b lbl_8030DEC4
+lbl_8030DE50:
+/* 8030DE50 00309AB0 88 18 02 1C */ lbz r0, 0x21c(r24)
+/* 8030DE54 00309AB4 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030DE58 00309AB8 41 82 00 10 */ beq lbl_8030DE68
+/* 8030DE5C 00309ABC 88 18 02 0E */ lbz r0, 0x20e(r24)
+/* 8030DE60 00309AC0 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 8030DE64 00309AC4 41 82 00 60 */ beq lbl_8030DEC4
+lbl_8030DE68:
+/* 8030DE68 00309AC8 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DE6C 00309ACC 38 80 00 01 */ li r4, 1
+/* 8030DE70 00309AD0 4B FF 76 6D */ bl VFiPFSTR_StrNumChar
+/* 8030DE74 00309AD4 80 18 02 30 */ lwz r0, 0x230(r24)
+/* 8030DE78 00309AD8 54 65 04 3E */ clrlwi r5, r3, 0x10
+/* 8030DE7C 00309ADC 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DE80 00309AE0 38 8D 8C F0 */ addi r4, r13, lbl_8063DFB0-_SDA_BASE_
+/* 8030DE84 00309AE4 7C C5 02 14 */ add r6, r5, r0
+/* 8030DE88 00309AE8 38 A0 00 02 */ li r5, 2
+/* 8030DE8C 00309AEC 38 06 00 01 */ addi r0, r6, 1
+/* 8030DE90 00309AF0 38 E0 00 01 */ li r7, 1
+/* 8030DE94 00309AF4 90 18 02 30 */ stw r0, 0x230(r24)
+/* 8030DE98 00309AF8 38 C0 00 00 */ li r6, 0
+/* 8030DE9C 00309AFC 4B FF 77 C5 */ bl VFiPFSTR_StrNCmp
+/* 8030DEA0 00309B00 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DEA4 00309B04 41 82 00 20 */ beq lbl_8030DEC4
+/* 8030DEA8 00309B08 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DEAC 00309B0C 38 80 00 02 */ li r4, 2
+/* 8030DEB0 00309B10 4B FF 76 2D */ bl VFiPFSTR_StrNumChar
+/* 8030DEB4 00309B14 80 18 02 30 */ lwz r0, 0x230(r24)
+/* 8030DEB8 00309B18 54 63 04 3E */ clrlwi r3, r3, 0x10
+/* 8030DEBC 00309B1C 7C 03 00 50 */ subf r0, r3, r0
+/* 8030DEC0 00309B20 90 18 02 30 */ stw r0, 0x230(r24)
+lbl_8030DEC4:
+/* 8030DEC4 00309B24 7F 24 CB 78 */ mr r4, r25
+/* 8030DEC8 00309B28 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DECC 00309B2C 48 00 8C 3D */ bl VFiPFPATH_GetNextTokenOfPath
+lbl_8030DED0:
+/* 8030DED0 00309B30 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 8030DED4 00309B34 2C 00 00 00 */ cmpwi r0, 0
+/* 8030DED8 00309B38 40 82 FB 74 */ bne lbl_8030DA4C
+lbl_8030DEDC:
+/* 8030DEDC 00309B3C 38 60 00 00 */ li r3, 0
+lbl_8030DEE0:
+/* 8030DEE0 00309B40 39 61 02 A0 */ addi r11, r1, 0x2a0
+/* 8030DEE4 00309B44 4B EB 92 79 */ bl _restgpr_21
+/* 8030DEE8 00309B48 80 01 02 A4 */ lwz r0, 0x2a4(r1)
+/* 8030DEEC 00309B4C 7C 08 03 A6 */ mtlr r0
+/* 8030DEF0 00309B50 38 21 02 A0 */ addi r1, r1, 0x2a0
+/* 8030DEF4 00309B54 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_IteratorInitialize
+VFiPFENT_ITER_IteratorInitialize:
+/* 8030DEF8 00309B58 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030DEFC 00309B5C 7C 08 02 A6 */ mflr r0
+/* 8030DF00 00309B60 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030DF04 00309B64 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030DF08 00309B68 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030DF0C 00309B6C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030DF10 00309B70 7C 7D 1B 78 */ mr r29, r3
+/* 8030DF14 00309B74 80 A3 00 3C */ lwz r5, 0x3c(r3)
+/* 8030DF18 00309B78 2C 05 00 00 */ cmpwi r5, 0
+/* 8030DF1C 00309B7C 90 A3 00 04 */ stw r5, 4(r3)
+/* 8030DF20 00309B80 40 82 00 0C */ bne lbl_8030DF2C
+/* 8030DF24 00309B84 38 60 00 0A */ li r3, 0xa
+/* 8030DF28 00309B88 48 00 00 B8 */ b lbl_8030DFE0
+lbl_8030DF2C:
+/* 8030DF2C 00309B8C 88 C5 00 20 */ lbz r6, 0x20(r5)
+/* 8030DF30 00309B90 38 00 FF FF */ li r0, -1
+/* 8030DF34 00309B94 83 C3 00 00 */ lwz r30, 0(r3)
+/* 8030DF38 00309B98 38 A0 00 01 */ li r5, 1
+/* 8030DF3C 00309B9C 38 C6 FF FB */ addi r6, r6, -5
+/* 8030DF40 00309BA0 90 03 00 40 */ stw r0, 0x40(r3)
+/* 8030DF44 00309BA4 54 C0 06 3E */ clrlwi r0, r6, 0x18
+/* 8030DF48 00309BA8 7C A5 00 30 */ slw r5, r5, r0
+/* 8030DF4C 00309BAC 90 83 00 00 */ stw r4, 0(r3)
+/* 8030DF50 00309BB0 38 05 FF FF */ addi r0, r5, -1
+/* 8030DF54 00309BB4 38 80 00 00 */ li r4, 0
+/* 8030DF58 00309BB8 98 C3 00 6C */ stb r6, 0x6c(r3)
+/* 8030DF5C 00309BBC B0 03 00 4A */ sth r0, 0x4a(r3)
+/* 8030DF60 00309BC0 4B FF EC 9D */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DF64 00309BC4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DF68 00309BC8 7C 7F 1B 78 */ mr r31, r3
+/* 8030DF6C 00309BCC 41 82 00 18 */ beq lbl_8030DF84
+/* 8030DF70 00309BD0 93 DD 00 00 */ stw r30, 0(r29)
+/* 8030DF74 00309BD4 7F A3 EB 78 */ mr r3, r29
+/* 8030DF78 00309BD8 38 80 00 00 */ li r4, 0
+/* 8030DF7C 00309BDC 4B FF EC 81 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DF80 00309BE0 48 00 00 5C */ b lbl_8030DFDC
+lbl_8030DF84:
+/* 8030DF84 00309BE4 80 BD 00 44 */ lwz r5, 0x44(r29)
+/* 8030DF88 00309BE8 3C 05 00 01 */ addis r0, r5, 1
+/* 8030DF8C 00309BEC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030DF90 00309BF0 40 82 00 0C */ bne lbl_8030DF9C
+/* 8030DF94 00309BF4 38 80 00 10 */ li r4, 0x10
+/* 8030DF98 00309BF8 48 00 00 34 */ b lbl_8030DFCC
+lbl_8030DF9C:
+/* 8030DF9C 00309BFC 80 7D 00 04 */ lwz r3, 4(r29)
+/* 8030DFA0 00309C00 38 9D 00 4C */ addi r4, r29, 0x4c
+/* 8030DFA4 00309C04 A0 DD 00 48 */ lhz r6, 0x48(r29)
+/* 8030DFA8 00309C08 39 01 00 08 */ addi r8, r1, 8
+/* 8030DFAC 00309C0C 38 E0 00 20 */ li r7, 0x20
+/* 8030DFB0 00309C10 39 20 00 00 */ li r9, 0
+/* 8030DFB4 00309C14 48 00 AA 75 */ bl VFiPFSEC_ReadData
+/* 8030DFB8 00309C18 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030DFBC 00309C1C 38 80 00 11 */ li r4, 0x11
+/* 8030DFC0 00309C20 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030DFC4 00309C24 40 82 00 08 */ bne lbl_8030DFCC
+/* 8030DFC8 00309C28 7C 64 1B 78 */ mr r4, r3
+lbl_8030DFCC:
+/* 8030DFCC 00309C2C 7C 04 00 D0 */ neg r0, r4
+/* 8030DFD0 00309C30 7C 00 23 78 */ or r0, r0, r4
+/* 8030DFD4 00309C34 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030DFD8 00309C38 7C 9F 00 38 */ and r31, r4, r0
+lbl_8030DFDC:
+/* 8030DFDC 00309C3C 7F E3 FB 78 */ mr r3, r31
+lbl_8030DFE0:
+/* 8030DFE0 00309C40 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030DFE4 00309C44 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030DFE8 00309C48 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030DFEC 00309C4C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030DFF0 00309C50 7C 08 03 A6 */ mtlr r0
+/* 8030DFF4 00309C54 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030DFF8 00309C58 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_IsAtLogicalEnd
+VFiPFENT_ITER_IsAtLogicalEnd:
+/* 8030DFFC 00309C5C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030E000 00309C60 7C 08 02 A6 */ mflr r0
+/* 8030E004 00309C64 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030E008 00309C68 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030E00C 00309C6C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030E010 00309C70 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030E014 00309C74 7C 7D 1B 78 */ mr r29, r3
+/* 8030E018 00309C78 80 83 00 44 */ lwz r4, 0x44(r3)
+/* 8030E01C 00309C7C 3C 04 00 01 */ addis r0, r4, 1
+/* 8030E020 00309C80 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E024 00309C84 41 82 00 24 */ beq lbl_8030E048
+/* 8030E028 00309C88 88 03 00 4C */ lbz r0, 0x4c(r3)
+/* 8030E02C 00309C8C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E030 00309C90 41 82 00 18 */ beq lbl_8030E048
+/* 8030E034 00309C94 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030E038 00309C98 80 A3 00 00 */ lwz r5, 0(r3)
+/* 8030E03C 00309C9C 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030E040 00309CA0 7C 05 00 40 */ cmplw r5, r0
+/* 8030E044 00309CA4 41 80 00 A4 */ blt lbl_8030E0E8
+lbl_8030E048:
+/* 8030E048 00309CA8 83 E3 00 40 */ lwz r31, 0x40(r3)
+/* 8030E04C 00309CAC 38 80 00 00 */ li r4, 0
+/* 8030E050 00309CB0 88 03 00 6C */ lbz r0, 0x6c(r3)
+/* 8030E054 00309CB4 38 BF 00 01 */ addi r5, r31, 1
+/* 8030E058 00309CB8 83 C3 00 00 */ lwz r30, 0(r3)
+/* 8030E05C 00309CBC 7C A0 00 30 */ slw r0, r5, r0
+/* 8030E060 00309CC0 90 03 00 00 */ stw r0, 0(r3)
+/* 8030E064 00309CC4 7F A3 EB 78 */ mr r3, r29
+/* 8030E068 00309CC8 4B FF EB 95 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E06C 00309CCC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E070 00309CD0 41 82 00 14 */ beq lbl_8030E084
+/* 8030E074 00309CD4 93 DD 00 00 */ stw r30, 0(r29)
+/* 8030E078 00309CD8 38 60 00 01 */ li r3, 1
+/* 8030E07C 00309CDC 93 FD 00 40 */ stw r31, 0x40(r29)
+/* 8030E080 00309CE0 48 00 00 6C */ b lbl_8030E0EC
+lbl_8030E084:
+/* 8030E084 00309CE4 80 BD 00 44 */ lwz r5, 0x44(r29)
+/* 8030E088 00309CE8 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E08C 00309CEC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E090 00309CF0 41 82 00 50 */ beq lbl_8030E0E0
+/* 8030E094 00309CF4 40 82 00 0C */ bne lbl_8030E0A0
+/* 8030E098 00309CF8 38 80 00 10 */ li r4, 0x10
+/* 8030E09C 00309CFC 48 00 00 34 */ b lbl_8030E0D0
+lbl_8030E0A0:
+/* 8030E0A0 00309D00 80 7D 00 04 */ lwz r3, 4(r29)
+/* 8030E0A4 00309D04 38 9D 00 4C */ addi r4, r29, 0x4c
+/* 8030E0A8 00309D08 A0 DD 00 48 */ lhz r6, 0x48(r29)
+/* 8030E0AC 00309D0C 39 01 00 08 */ addi r8, r1, 8
+/* 8030E0B0 00309D10 38 E0 00 20 */ li r7, 0x20
+/* 8030E0B4 00309D14 39 20 00 00 */ li r9, 0
+/* 8030E0B8 00309D18 48 00 A9 71 */ bl VFiPFSEC_ReadData
+/* 8030E0BC 00309D1C 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030E0C0 00309D20 38 80 00 11 */ li r4, 0x11
+/* 8030E0C4 00309D24 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030E0C8 00309D28 40 82 00 08 */ bne lbl_8030E0D0
+/* 8030E0CC 00309D2C 7C 64 1B 78 */ mr r4, r3
+lbl_8030E0D0:
+/* 8030E0D0 00309D30 7C 04 00 D0 */ neg r0, r4
+/* 8030E0D4 00309D34 7C 00 23 78 */ or r0, r0, r4
+/* 8030E0D8 00309D38 54 03 0F FE */ srwi r3, r0, 0x1f
+/* 8030E0DC 00309D3C 48 00 00 10 */ b lbl_8030E0EC
+lbl_8030E0E0:
+/* 8030E0E0 00309D40 38 60 00 01 */ li r3, 1
+/* 8030E0E4 00309D44 48 00 00 08 */ b lbl_8030E0EC
+lbl_8030E0E8:
+/* 8030E0E8 00309D48 38 60 00 00 */ li r3, 0
+lbl_8030E0EC:
+/* 8030E0EC 00309D4C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030E0F0 00309D50 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030E0F4 00309D54 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030E0F8 00309D58 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030E0FC 00309D5C 7C 08 03 A6 */ mtlr r0
+/* 8030E100 00309D60 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030E104 00309D64 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_Advance
+VFiPFENT_ITER_Advance:
+/* 8030E108 00309D68 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030E10C 00309D6C 7C 08 02 A6 */ mflr r0
+/* 8030E110 00309D70 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030E114 00309D74 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030E118 00309D78 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030E11C 00309D7C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030E120 00309D80 7C 7D 1B 78 */ mr r29, r3
+/* 8030E124 00309D84 83 C3 00 00 */ lwz r30, 0(r3)
+/* 8030E128 00309D88 38 DE 00 01 */ addi r6, r30, 1
+/* 8030E12C 00309D8C 7C 1E 30 40 */ cmplw r30, r6
+/* 8030E130 00309D90 40 82 00 1C */ bne lbl_8030E14C
+/* 8030E134 00309D94 80 A3 00 44 */ lwz r5, 0x44(r3)
+/* 8030E138 00309D98 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E13C 00309D9C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E140 00309DA0 40 82 00 0C */ bne lbl_8030E14C
+/* 8030E144 00309DA4 2C 04 00 00 */ cmpwi r4, 0
+/* 8030E148 00309DA8 40 82 00 94 */ bne lbl_8030E1DC
+lbl_8030E14C:
+/* 8030E14C 00309DAC 90 C3 00 00 */ stw r6, 0(r3)
+/* 8030E150 00309DB0 7F A3 EB 78 */ mr r3, r29
+/* 8030E154 00309DB4 4B FF EA A9 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E158 00309DB8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E15C 00309DBC 7C 7F 1B 78 */ mr r31, r3
+/* 8030E160 00309DC0 41 82 00 18 */ beq lbl_8030E178
+/* 8030E164 00309DC4 93 DD 00 00 */ stw r30, 0(r29)
+/* 8030E168 00309DC8 7F A3 EB 78 */ mr r3, r29
+/* 8030E16C 00309DCC 38 80 00 00 */ li r4, 0
+/* 8030E170 00309DD0 4B FF EA 8D */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E174 00309DD4 48 00 00 5C */ b lbl_8030E1D0
+lbl_8030E178:
+/* 8030E178 00309DD8 80 BD 00 44 */ lwz r5, 0x44(r29)
+/* 8030E17C 00309DDC 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E180 00309DE0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E184 00309DE4 40 82 00 0C */ bne lbl_8030E190
+/* 8030E188 00309DE8 38 80 00 10 */ li r4, 0x10
+/* 8030E18C 00309DEC 48 00 00 34 */ b lbl_8030E1C0
+lbl_8030E190:
+/* 8030E190 00309DF0 80 7D 00 04 */ lwz r3, 4(r29)
+/* 8030E194 00309DF4 38 9D 00 4C */ addi r4, r29, 0x4c
+/* 8030E198 00309DF8 A0 DD 00 48 */ lhz r6, 0x48(r29)
+/* 8030E19C 00309DFC 39 01 00 08 */ addi r8, r1, 8
+/* 8030E1A0 00309E00 38 E0 00 20 */ li r7, 0x20
+/* 8030E1A4 00309E04 39 20 00 00 */ li r9, 0
+/* 8030E1A8 00309E08 48 00 A8 81 */ bl VFiPFSEC_ReadData
+/* 8030E1AC 00309E0C 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030E1B0 00309E10 38 80 00 11 */ li r4, 0x11
+/* 8030E1B4 00309E14 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030E1B8 00309E18 40 82 00 08 */ bne lbl_8030E1C0
+/* 8030E1BC 00309E1C 7C 64 1B 78 */ mr r4, r3
+lbl_8030E1C0:
+/* 8030E1C0 00309E20 7C 04 00 D0 */ neg r0, r4
+/* 8030E1C4 00309E24 7C 00 23 78 */ or r0, r0, r4
+/* 8030E1C8 00309E28 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030E1CC 00309E2C 7C 9F 00 38 */ and r31, r4, r0
+lbl_8030E1D0:
+/* 8030E1D0 00309E30 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030E1D4 00309E34 41 82 00 08 */ beq lbl_8030E1DC
+/* 8030E1D8 00309E38 48 00 00 08 */ b lbl_8030E1E0
+lbl_8030E1DC:
+/* 8030E1DC 00309E3C 3B E0 00 00 */ li r31, 0
+lbl_8030E1E0:
+/* 8030E1E0 00309E40 7F E3 FB 78 */ mr r3, r31
+/* 8030E1E4 00309E44 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030E1E8 00309E48 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030E1EC 00309E4C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030E1F0 00309E50 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030E1F4 00309E54 7C 08 03 A6 */ mtlr r0
+/* 8030E1F8 00309E58 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030E1FC 00309E5C 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_Retreat
+VFiPFENT_ITER_Retreat:
+/* 8030E200 00309E60 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030E204 00309E64 7C 08 02 A6 */ mflr r0
+/* 8030E208 00309E68 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E20C 00309E6C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030E210 00309E70 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 8030E214 00309E74 7C 9F 23 78 */ mr r31, r4
+/* 8030E218 00309E78 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 8030E21C 00309E7C 7C 7E 1B 78 */ mr r30, r3
+/* 8030E220 00309E80 93 A1 00 24 */ stw r29, 0x24(r1)
+/* 8030E224 00309E84 93 81 00 20 */ stw r28, 0x20(r1)
+/* 8030E228 00309E88 40 82 00 0C */ bne lbl_8030E234
+/* 8030E22C 00309E8C 38 60 00 0A */ li r3, 0xa
+/* 8030E230 00309E90 48 00 02 DC */ b lbl_8030E50C
+lbl_8030E234:
+/* 8030E234 00309E94 83 83 00 00 */ lwz r28, 0(r3)
+/* 8030E238 00309E98 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030E23C 00309E9C 40 82 00 0C */ bne lbl_8030E248
+/* 8030E240 00309EA0 38 60 00 00 */ li r3, 0
+/* 8030E244 00309EA4 48 00 02 C8 */ b lbl_8030E50C
+lbl_8030E248:
+/* 8030E248 00309EA8 88 03 00 6C */ lbz r0, 0x6c(r3)
+/* 8030E24C 00309EAC 38 DC FF FF */ addi r6, r28, -1
+/* 8030E250 00309EB0 80 E3 00 40 */ lwz r7, 0x40(r3)
+/* 8030E254 00309EB4 7C C0 04 30 */ srw r0, r6, r0
+/* 8030E258 00309EB8 7C 07 00 40 */ cmplw r7, r0
+/* 8030E25C 00309EBC 41 82 01 F4 */ beq lbl_8030E450
+/* 8030E260 00309EC0 80 C3 00 04 */ lwz r6, 4(r3)
+/* 8030E264 00309EC4 81 23 00 44 */ lwz r9, 0x44(r3)
+/* 8030E268 00309EC8 89 06 00 06 */ lbz r8, 6(r6)
+/* 8030E26C 00309ECC 81 46 00 30 */ lwz r10, 0x30(r6)
+/* 8030E270 00309ED0 7C 07 43 96 */ divwu r0, r7, r8
+/* 8030E274 00309ED4 88 86 00 21 */ lbz r4, 0x21(r6)
+/* 8030E278 00309ED8 7C AA 48 50 */ subf r5, r10, r9
+/* 8030E27C 00309EDC 7C A4 24 30 */ srw r4, r5, r4
+/* 8030E280 00309EE0 38 84 00 02 */ addi r4, r4, 2
+/* 8030E284 00309EE4 7C 00 41 D6 */ mullw r0, r0, r8
+/* 8030E288 00309EE8 7C 00 38 51 */ subf. r0, r0, r7
+/* 8030E28C 00309EEC 41 82 00 0C */ beq lbl_8030E298
+/* 8030E290 00309EF0 28 08 00 01 */ cmplwi r8, 1
+/* 8030E294 00309EF4 40 82 00 64 */ bne lbl_8030E2F8
+lbl_8030E298:
+/* 8030E298 00309EF8 80 06 00 1C */ lwz r0, 0x1c(r6)
+/* 8030E29C 00309EFC 2C 00 00 02 */ cmpwi r0, 2
+/* 8030E2A0 00309F00 41 82 00 1C */ beq lbl_8030E2BC
+/* 8030E2A4 00309F04 80 63 00 10 */ lwz r3, 0x10(r3)
+/* 8030E2A8 00309F08 80 03 00 00 */ lwz r0, 0(r3)
+/* 8030E2AC 00309F0C 28 00 00 01 */ cmplwi r0, 1
+/* 8030E2B0 00309F10 40 81 00 40 */ ble lbl_8030E2F0
+/* 8030E2B4 00309F14 7C 0A 48 40 */ cmplw r10, r9
+/* 8030E2B8 00309F18 41 81 00 38 */ bgt lbl_8030E2F0
+lbl_8030E2BC:
+/* 8030E2BC 00309F1C 7C C3 33 78 */ mr r3, r6
+/* 8030E2C0 00309F20 7C 85 23 78 */ mr r5, r4
+/* 8030E2C4 00309F24 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030E2C8 00309F28 48 00 24 E1 */ bl VFiPFFAT_GetBeforeChain
+/* 8030E2CC 00309F2C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E2D0 00309F30 41 82 00 08 */ beq lbl_8030E2D8
+/* 8030E2D4 00309F34 48 00 02 38 */ b lbl_8030E50C
+lbl_8030E2D8:
+/* 8030E2D8 00309F38 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 8030E2DC 00309F3C 3C 03 00 01 */ addis r0, r3, 1
+/* 8030E2E0 00309F40 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E2E4 00309F44 40 82 00 18 */ bne lbl_8030E2FC
+/* 8030E2E8 00309F48 38 60 00 0E */ li r3, 0xe
+/* 8030E2EC 00309F4C 48 00 02 20 */ b lbl_8030E50C
+lbl_8030E2F0:
+/* 8030E2F0 00309F50 90 01 00 10 */ stw r0, 0x10(r1)
+/* 8030E2F4 00309F54 48 00 00 08 */ b lbl_8030E2FC
+lbl_8030E2F8:
+/* 8030E2F8 00309F58 90 81 00 10 */ stw r4, 0x10(r1)
+lbl_8030E2FC:
+/* 8030E2FC 00309F5C 80 9E 00 00 */ lwz r4, 0(r30)
+/* 8030E300 00309F60 80 7E 00 40 */ lwz r3, 0x40(r30)
+/* 8030E304 00309F64 38 84 FF FF */ addi r4, r4, -1
+/* 8030E308 00309F68 80 DE 00 04 */ lwz r6, 4(r30)
+/* 8030E30C 00309F6C 38 03 FF FF */ addi r0, r3, -1
+/* 8030E310 00309F70 90 9E 00 00 */ stw r4, 0(r30)
+/* 8030E314 00309F74 90 1E 00 40 */ stw r0, 0x40(r30)
+/* 8030E318 00309F78 80 06 00 1C */ lwz r0, 0x1c(r6)
+/* 8030E31C 00309F7C 2C 00 00 02 */ cmpwi r0, 2
+/* 8030E320 00309F80 41 82 00 24 */ beq lbl_8030E344
+/* 8030E324 00309F84 80 7E 00 10 */ lwz r3, 0x10(r30)
+/* 8030E328 00309F88 80 03 00 00 */ lwz r0, 0(r3)
+/* 8030E32C 00309F8C 28 00 00 01 */ cmplwi r0, 1
+/* 8030E330 00309F90 40 81 00 48 */ ble lbl_8030E378
+/* 8030E334 00309F94 80 66 00 30 */ lwz r3, 0x30(r6)
+/* 8030E338 00309F98 80 1E 00 44 */ lwz r0, 0x44(r30)
+/* 8030E33C 00309F9C 7C 03 00 40 */ cmplw r3, r0
+/* 8030E340 00309FA0 41 81 00 38 */ bgt lbl_8030E378
+lbl_8030E344:
+/* 8030E344 00309FA4 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 8030E348 00309FA8 88 66 00 06 */ lbz r3, 6(r6)
+/* 8030E34C 00309FAC 88 06 00 21 */ lbz r0, 0x21(r6)
+/* 8030E350 00309FB0 38 A4 FF FE */ addi r5, r4, -2
+/* 8030E354 00309FB4 80 C6 00 30 */ lwz r6, 0x30(r6)
+/* 8030E358 00309FB8 38 63 FF FF */ addi r3, r3, -1
+/* 8030E35C 00309FBC 80 9E 00 40 */ lwz r4, 0x40(r30)
+/* 8030E360 00309FC0 7C A0 00 30 */ slw r0, r5, r0
+/* 8030E364 00309FC4 7C 06 02 14 */ add r0, r6, r0
+/* 8030E368 00309FC8 7C 83 18 38 */ and r3, r4, r3
+/* 8030E36C 00309FCC 7C 03 02 14 */ add r0, r3, r0
+/* 8030E370 00309FD0 90 1E 00 44 */ stw r0, 0x44(r30)
+/* 8030E374 00309FD4 48 00 00 10 */ b lbl_8030E384
+lbl_8030E378:
+/* 8030E378 00309FD8 80 7E 00 44 */ lwz r3, 0x44(r30)
+/* 8030E37C 00309FDC 38 03 FF FF */ addi r0, r3, -1
+/* 8030E380 00309FE0 90 1E 00 44 */ stw r0, 0x44(r30)
+lbl_8030E384:
+/* 8030E384 00309FE4 80 7E 00 44 */ lwz r3, 0x44(r30)
+/* 8030E388 00309FE8 83 BE 00 00 */ lwz r29, 0(r30)
+/* 8030E38C 00309FEC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030E390 00309FF0 A0 9E 00 4A */ lhz r4, 0x4a(r30)
+/* 8030E394 00309FF4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E398 00309FF8 7F A0 20 38 */ and r0, r29, r4
+/* 8030E39C 00309FFC 54 00 2C 34 */ rlwinm r0, r0, 5, 0x10, 0x1a
+/* 8030E3A0 0030A000 B0 1E 00 48 */ sth r0, 0x48(r30)
+/* 8030E3A4 0030A004 40 82 00 0C */ bne lbl_8030E3B0
+/* 8030E3A8 0030A008 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030E3AC 0030A00C 40 82 00 98 */ bne lbl_8030E444
+lbl_8030E3B0:
+/* 8030E3B0 0030A010 93 BE 00 00 */ stw r29, 0(r30)
+/* 8030E3B4 0030A014 7F C3 F3 78 */ mr r3, r30
+/* 8030E3B8 0030A018 7F E4 FB 78 */ mr r4, r31
+/* 8030E3BC 0030A01C 4B FF E8 41 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E3C0 0030A020 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E3C4 0030A024 7C 7F 1B 78 */ mr r31, r3
+/* 8030E3C8 0030A028 41 82 00 18 */ beq lbl_8030E3E0
+/* 8030E3CC 0030A02C 93 BE 00 00 */ stw r29, 0(r30)
+/* 8030E3D0 0030A030 7F C3 F3 78 */ mr r3, r30
+/* 8030E3D4 0030A034 38 80 00 00 */ li r4, 0
+/* 8030E3D8 0030A038 4B FF E8 25 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E3DC 0030A03C 48 00 00 5C */ b lbl_8030E438
+lbl_8030E3E0:
+/* 8030E3E0 0030A040 80 BE 00 44 */ lwz r5, 0x44(r30)
+/* 8030E3E4 0030A044 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E3E8 0030A048 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E3EC 0030A04C 40 82 00 0C */ bne lbl_8030E3F8
+/* 8030E3F0 0030A050 38 80 00 10 */ li r4, 0x10
+/* 8030E3F4 0030A054 48 00 00 34 */ b lbl_8030E428
+lbl_8030E3F8:
+/* 8030E3F8 0030A058 80 7E 00 04 */ lwz r3, 4(r30)
+/* 8030E3FC 0030A05C 38 9E 00 4C */ addi r4, r30, 0x4c
+/* 8030E400 0030A060 A0 DE 00 48 */ lhz r6, 0x48(r30)
+/* 8030E404 0030A064 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030E408 0030A068 38 E0 00 20 */ li r7, 0x20
+/* 8030E40C 0030A06C 39 20 00 00 */ li r9, 0
+/* 8030E410 0030A070 48 00 A6 19 */ bl VFiPFSEC_ReadData
+/* 8030E414 0030A074 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030E418 0030A078 38 80 00 11 */ li r4, 0x11
+/* 8030E41C 0030A07C 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030E420 0030A080 40 82 00 08 */ bne lbl_8030E428
+/* 8030E424 0030A084 7C 64 1B 78 */ mr r4, r3
+lbl_8030E428:
+/* 8030E428 0030A088 7C 04 00 D0 */ neg r0, r4
+/* 8030E42C 0030A08C 7C 00 23 78 */ or r0, r0, r4
+/* 8030E430 0030A090 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030E434 0030A094 7C 9F 00 38 */ and r31, r4, r0
+lbl_8030E438:
+/* 8030E438 0030A098 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030E43C 0030A09C 41 82 00 08 */ beq lbl_8030E444
+/* 8030E440 0030A0A0 48 00 00 08 */ b lbl_8030E448
+lbl_8030E444:
+/* 8030E444 0030A0A4 3B E0 00 00 */ li r31, 0
+lbl_8030E448:
+/* 8030E448 0030A0A8 7F E3 FB 78 */ mr r3, r31
+/* 8030E44C 0030A0AC 48 00 00 C0 */ b lbl_8030E50C
+lbl_8030E450:
+/* 8030E450 0030A0B0 7C 1C 30 40 */ cmplw r28, r6
+/* 8030E454 0030A0B4 40 82 00 1C */ bne lbl_8030E470
+/* 8030E458 0030A0B8 80 A3 00 44 */ lwz r5, 0x44(r3)
+/* 8030E45C 0030A0BC 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E460 0030A0C0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E464 0030A0C4 40 82 00 0C */ bne lbl_8030E470
+/* 8030E468 0030A0C8 2C 04 00 00 */ cmpwi r4, 0
+/* 8030E46C 0030A0CC 40 82 00 98 */ bne lbl_8030E504
+lbl_8030E470:
+/* 8030E470 0030A0D0 90 C3 00 00 */ stw r6, 0(r3)
+/* 8030E474 0030A0D4 7F C3 F3 78 */ mr r3, r30
+/* 8030E478 0030A0D8 7F E4 FB 78 */ mr r4, r31
+/* 8030E47C 0030A0DC 4B FF E7 81 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E480 0030A0E0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E484 0030A0E4 7C 7D 1B 78 */ mr r29, r3
+/* 8030E488 0030A0E8 41 82 00 18 */ beq lbl_8030E4A0
+/* 8030E48C 0030A0EC 93 9E 00 00 */ stw r28, 0(r30)
+/* 8030E490 0030A0F0 7F C3 F3 78 */ mr r3, r30
+/* 8030E494 0030A0F4 38 80 00 00 */ li r4, 0
+/* 8030E498 0030A0F8 4B FF E7 65 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E49C 0030A0FC 48 00 00 5C */ b lbl_8030E4F8
+lbl_8030E4A0:
+/* 8030E4A0 0030A100 80 BE 00 44 */ lwz r5, 0x44(r30)
+/* 8030E4A4 0030A104 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E4A8 0030A108 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E4AC 0030A10C 40 82 00 0C */ bne lbl_8030E4B8
+/* 8030E4B0 0030A110 38 80 00 10 */ li r4, 0x10
+/* 8030E4B4 0030A114 48 00 00 34 */ b lbl_8030E4E8
+lbl_8030E4B8:
+/* 8030E4B8 0030A118 80 7E 00 04 */ lwz r3, 4(r30)
+/* 8030E4BC 0030A11C 38 9E 00 4C */ addi r4, r30, 0x4c
+/* 8030E4C0 0030A120 A0 DE 00 48 */ lhz r6, 0x48(r30)
+/* 8030E4C4 0030A124 39 01 00 08 */ addi r8, r1, 8
+/* 8030E4C8 0030A128 38 E0 00 20 */ li r7, 0x20
+/* 8030E4CC 0030A12C 39 20 00 00 */ li r9, 0
+/* 8030E4D0 0030A130 48 00 A5 59 */ bl VFiPFSEC_ReadData
+/* 8030E4D4 0030A134 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030E4D8 0030A138 38 80 00 11 */ li r4, 0x11
+/* 8030E4DC 0030A13C 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030E4E0 0030A140 40 82 00 08 */ bne lbl_8030E4E8
+/* 8030E4E4 0030A144 7C 64 1B 78 */ mr r4, r3
+lbl_8030E4E8:
+/* 8030E4E8 0030A148 7C 04 00 D0 */ neg r0, r4
+/* 8030E4EC 0030A14C 7C 00 23 78 */ or r0, r0, r4
+/* 8030E4F0 0030A150 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030E4F4 0030A154 7C 9D 00 38 */ and r29, r4, r0
+lbl_8030E4F8:
+/* 8030E4F8 0030A158 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030E4FC 0030A15C 41 82 00 08 */ beq lbl_8030E504
+/* 8030E500 0030A160 48 00 00 08 */ b lbl_8030E508
+lbl_8030E504:
+/* 8030E504 0030A164 3B A0 00 00 */ li r29, 0
+lbl_8030E508:
+/* 8030E508 0030A168 7F A3 EB 78 */ mr r3, r29
+lbl_8030E50C:
+/* 8030E50C 0030A16C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030E510 0030A170 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 8030E514 0030A174 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 8030E518 0030A178 83 A1 00 24 */ lwz r29, 0x24(r1)
+/* 8030E51C 0030A17C 83 81 00 20 */ lwz r28, 0x20(r1)
+/* 8030E520 0030A180 7C 08 03 A6 */ mtlr r0
+/* 8030E524 0030A184 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030E528 0030A188 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_GetEntryOfPath
+VFiPFENT_ITER_GetEntryOfPath:
+/* 8030E52C 0030A18C 7C E8 3B 78 */ mr r8, r7
+/* 8030E530 0030A190 38 E0 00 00 */ li r7, 0
+/* 8030E534 0030A194 4B FF F3 AC */ b VFiPFENT_ITER_DoGetEntry
diff --git a/asm/SDK/VF/pf_fat.s b/asm/SDK/VF/pf_fat.s new file mode 100644 index 0000000..8845e52 --- /dev/null +++ b/asm/SDK/VF/pf_fat.s @@ -0,0 +1,3313 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFAT_ReadFATSector
+VFiPFFAT_ReadFATSector:
+/* 8030E538 0030A198 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030E53C 0030A19C 7C 08 02 A6 */ mflr r0
+/* 8030E540 0030A1A0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030E544 0030A1A4 39 61 00 20 */ addi r11, r1, 0x20
+/* 8030E548 0030A1A8 4B EB 8B E1 */ bl _savegpr_27
+/* 8030E54C 0030A1AC 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030E550 0030A1B0 7C 7B 1B 78 */ mr r27, r3
+/* 8030E554 0030A1B4 7C 9C 23 78 */ mr r28, r4
+/* 8030E558 0030A1B8 2C 00 00 01 */ cmpwi r0, 1
+/* 8030E55C 0030A1BC 41 82 00 30 */ beq lbl_8030E58C
+/* 8030E560 0030A1C0 40 80 00 10 */ bge lbl_8030E570
+/* 8030E564 0030A1C4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E568 0030A1C8 40 80 00 14 */ bge lbl_8030E57C
+/* 8030E56C 0030A1CC 48 00 00 30 */ b lbl_8030E59C
+lbl_8030E570:
+/* 8030E570 0030A1D0 2C 00 00 03 */ cmpwi r0, 3
+/* 8030E574 0030A1D4 40 80 00 28 */ bge lbl_8030E59C
+/* 8030E578 0030A1D8 48 00 00 1C */ b lbl_8030E594
+lbl_8030E57C:
+/* 8030E57C 0030A1DC 54 A0 F8 7E */ srwi r0, r5, 1
+/* 8030E580 0030A1E0 7C 05 02 14 */ add r0, r5, r0
+/* 8030E584 0030A1E4 54 06 04 3E */ clrlwi r6, r0, 0x10
+/* 8030E588 0030A1E8 48 00 00 1C */ b lbl_8030E5A4
+lbl_8030E58C:
+/* 8030E58C 0030A1EC 54 A6 08 3C */ slwi r6, r5, 1
+/* 8030E590 0030A1F0 48 00 00 14 */ b lbl_8030E5A4
+lbl_8030E594:
+/* 8030E594 0030A1F4 54 A6 10 3A */ slwi r6, r5, 2
+/* 8030E598 0030A1F8 48 00 00 0C */ b lbl_8030E5A4
+lbl_8030E59C:
+/* 8030E59C 0030A1FC 38 60 00 0F */ li r3, 0xf
+/* 8030E5A0 0030A200 48 00 00 B0 */ b lbl_8030E650
+lbl_8030E5A4:
+/* 8030E5A4 0030A204 A0 A3 00 18 */ lhz r5, 0x18(r3)
+/* 8030E5A8 0030A208 3B C0 00 01 */ li r30, 1
+/* 8030E5AC 0030A20C 88 83 00 20 */ lbz r4, 0x20(r3)
+/* 8030E5B0 0030A210 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 8030E5B4 0030A214 80 63 00 28 */ lwz r3, 0x28(r3)
+/* 8030E5B8 0030A218 7C C0 24 30 */ srw r0, r6, r4
+/* 8030E5BC 0030A21C 7C 03 02 14 */ add r0, r3, r0
+/* 8030E5C0 0030A220 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 8030E5C4 0030A224 41 82 00 08 */ beq lbl_8030E5CC
+/* 8030E5C8 0030A228 54 BE 07 7E */ clrlwi r30, r5, 0x1d
+lbl_8030E5CC:
+/* 8030E5CC 0030A22C 7F 63 DB 78 */ mr r3, r27
+/* 8030E5D0 0030A230 7F A4 EB 78 */ mr r4, r29
+/* 8030E5D4 0030A234 7F 85 E3 78 */ mr r5, r28
+/* 8030E5D8 0030A238 4B FF C2 75 */ bl VFiPFCACHE_ReadFATPage
+/* 8030E5DC 0030A23C 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 8030E5E0 0030A240 7C 7F 1B 78 */ mr r31, r3
+/* 8030E5E4 0030A244 40 82 00 50 */ bne lbl_8030E634
+/* 8030E5E8 0030A248 81 9B 18 90 */ lwz r12, 0x1890(r27)
+/* 8030E5EC 0030A24C 2C 0C 00 00 */ cmpwi r12, 0
+/* 8030E5F0 0030A250 41 82 00 44 */ beq lbl_8030E634
+/* 8030E5F4 0030A254 80 7B 18 70 */ lwz r3, 0x1870(r27)
+/* 8030E5F8 0030A258 7D 89 03 A6 */ mtctr r12
+/* 8030E5FC 0030A25C 4E 80 04 21 */ bctrl
+/* 8030E600 0030A260 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E604 0030A264 41 82 00 40 */ beq lbl_8030E644
+/* 8030E608 0030A268 2C 03 00 01 */ cmpwi r3, 1
+/* 8030E60C 0030A26C 40 82 00 28 */ bne lbl_8030E634
+/* 8030E610 0030A270 88 1B 00 22 */ lbz r0, 0x22(r27)
+/* 8030E614 0030A274 28 00 00 02 */ cmplwi r0, 2
+/* 8030E618 0030A278 41 80 00 1C */ blt lbl_8030E634
+/* 8030E61C 0030A27C 7C 1E 00 40 */ cmplw r30, r0
+/* 8030E620 0030A280 40 80 00 14 */ bge lbl_8030E634
+/* 8030E624 0030A284 80 1B 00 0C */ lwz r0, 0xc(r27)
+/* 8030E628 0030A288 3B DE 00 01 */ addi r30, r30, 1
+/* 8030E62C 0030A28C 7F BD 02 14 */ add r29, r29, r0
+/* 8030E630 0030A290 48 00 00 14 */ b lbl_8030E644
+lbl_8030E634:
+/* 8030E634 0030A294 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030E638 0030A298 41 82 00 0C */ beq lbl_8030E644
+/* 8030E63C 0030A29C 7F E3 FB 78 */ mr r3, r31
+/* 8030E640 0030A2A0 48 00 00 10 */ b lbl_8030E650
+lbl_8030E644:
+/* 8030E644 0030A2A4 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030E648 0030A2A8 40 82 FF 84 */ bne lbl_8030E5CC
+/* 8030E64C 0030A2AC 7F E3 FB 78 */ mr r3, r31
+lbl_8030E650:
+/* 8030E650 0030A2B0 39 61 00 20 */ addi r11, r1, 0x20
+/* 8030E654 0030A2B4 4B EB 8B 21 */ bl _restgpr_27
+/* 8030E658 0030A2B8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030E65C 0030A2BC 7C 08 03 A6 */ mtlr r0
+/* 8030E660 0030A2C0 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030E664 0030A2C4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_SearchForNumFreeClusters
+VFiPFFAT_SearchForNumFreeClusters:
+/* 8030E668 0030A2C8 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 8030E66C 0030A2CC 7C 08 02 A6 */ mflr r0
+/* 8030E670 0030A2D0 90 01 00 54 */ stw r0, 0x54(r1)
+/* 8030E674 0030A2D4 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030E678 0030A2D8 4B EB 8A 91 */ bl _savegpr_19
+/* 8030E67C 0030A2DC 38 00 FF FF */ li r0, -1
+/* 8030E680 0030A2E0 28 04 00 02 */ cmplwi r4, 2
+/* 8030E684 0030A2E4 90 07 00 00 */ stw r0, 0(r7)
+/* 8030E688 0030A2E8 7C 74 1B 78 */ mr r20, r3
+/* 8030E68C 0030A2EC 7C 95 23 78 */ mr r21, r4
+/* 8030E690 0030A2F0 7C B6 2B 78 */ mr r22, r5
+/* 8030E694 0030A2F4 90 08 00 00 */ stw r0, 0(r8)
+/* 8030E698 0030A2F8 7C D7 33 78 */ mr r23, r6
+/* 8030E69C 0030A2FC 7C F8 3B 78 */ mr r24, r7
+/* 8030E6A0 0030A300 7D 19 43 78 */ mr r25, r8
+/* 8030E6A4 0030A304 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030E6A8 0030A308 3B 60 00 00 */ li r27, 0
+/* 8030E6AC 0030A30C 3B C0 00 00 */ li r30, 0
+/* 8030E6B0 0030A310 3B A0 FF FF */ li r29, -1
+/* 8030E6B4 0030A314 3B E3 00 02 */ addi r31, r3, 2
+/* 8030E6B8 0030A318 3B 80 00 00 */ li r28, 0
+/* 8030E6BC 0030A31C 41 80 00 0C */ blt lbl_8030E6C8
+/* 8030E6C0 0030A320 7C 04 F8 40 */ cmplw r4, r31
+/* 8030E6C4 0030A324 41 80 00 08 */ blt lbl_8030E6CC
+lbl_8030E6C8:
+/* 8030E6C8 0030A328 3A A0 00 02 */ li r21, 2
+lbl_8030E6CC:
+/* 8030E6CC 0030A32C 28 05 00 02 */ cmplwi r5, 2
+/* 8030E6D0 0030A330 41 80 00 0C */ blt lbl_8030E6DC
+/* 8030E6D4 0030A334 7C 05 F8 40 */ cmplw r5, r31
+/* 8030E6D8 0030A338 41 80 00 08 */ blt lbl_8030E6E0
+lbl_8030E6DC:
+/* 8030E6DC 0030A33C 3A DF FF FF */ addi r22, r31, -1
+lbl_8030E6E0:
+/* 8030E6E0 0030A340 7E BA AB 78 */ mr r26, r21
+/* 8030E6E4 0030A344 7E 83 A3 78 */ mr r3, r20
+/* 8030E6E8 0030A348 7E A5 AB 78 */ mr r5, r21
+/* 8030E6EC 0030A34C 38 81 00 08 */ addi r4, r1, 8
+/* 8030E6F0 0030A350 4B FF FE 49 */ bl VFiPFFAT_ReadFATSector
+/* 8030E6F4 0030A354 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E6F8 0030A358 41 82 00 08 */ beq lbl_8030E700
+/* 8030E6FC 0030A35C 48 00 01 58 */ b lbl_8030E854
+lbl_8030E700:
+/* 8030E700 0030A360 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030E704 0030A364 38 00 00 00 */ li r0, 0
+/* 8030E708 0030A368 3A 60 FF FF */ li r19, -1
+/* 8030E70C 0030A36C B0 03 00 02 */ sth r0, 2(r3)
+/* 8030E710 0030A370 48 00 01 10 */ b lbl_8030E820
+lbl_8030E714:
+/* 8030E714 0030A374 7C 1F A8 40 */ cmplw r31, r21
+/* 8030E718 0030A378 41 81 00 08 */ bgt lbl_8030E720
+/* 8030E71C 0030A37C 3A A0 00 02 */ li r21, 2
+lbl_8030E720:
+/* 8030E720 0030A380 80 14 00 1C */ lwz r0, 0x1c(r20)
+/* 8030E724 0030A384 2C 00 00 01 */ cmpwi r0, 1
+/* 8030E728 0030A388 41 82 00 38 */ beq lbl_8030E760
+/* 8030E72C 0030A38C 40 80 00 10 */ bge lbl_8030E73C
+/* 8030E730 0030A390 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E734 0030A394 40 80 00 14 */ bge lbl_8030E748
+/* 8030E738 0030A398 48 00 00 58 */ b lbl_8030E790
+lbl_8030E73C:
+/* 8030E73C 0030A39C 2C 00 00 03 */ cmpwi r0, 3
+/* 8030E740 0030A3A0 40 80 00 50 */ bge lbl_8030E790
+/* 8030E744 0030A3A4 48 00 00 34 */ b lbl_8030E778
+lbl_8030E748:
+/* 8030E748 0030A3A8 7E 83 A3 78 */ mr r3, r20
+/* 8030E74C 0030A3AC 56 A4 04 3E */ clrlwi r4, r21, 0x10
+/* 8030E750 0030A3B0 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E754 0030A3B4 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E758 0030A3B8 48 00 2B FD */ bl VFiPFFAT12_ReadFATEntryPage
+/* 8030E75C 0030A3BC 48 00 00 38 */ b lbl_8030E794
+lbl_8030E760:
+/* 8030E760 0030A3C0 7E 83 A3 78 */ mr r3, r20
+/* 8030E764 0030A3C4 7E A4 AB 78 */ mr r4, r21
+/* 8030E768 0030A3C8 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E76C 0030A3CC 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E770 0030A3D0 48 00 36 4D */ bl VFiPFFAT16_ReadFATEntryPage
+/* 8030E774 0030A3D4 48 00 00 20 */ b lbl_8030E794
+lbl_8030E778:
+/* 8030E778 0030A3D8 7E 83 A3 78 */ mr r3, r20
+/* 8030E77C 0030A3DC 7E A4 AB 78 */ mr r4, r21
+/* 8030E780 0030A3E0 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E784 0030A3E4 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E788 0030A3E8 48 00 3B BD */ bl VFiPFFAT32_ReadFATEntryPage
+/* 8030E78C 0030A3EC 48 00 00 08 */ b lbl_8030E794
+lbl_8030E790:
+/* 8030E790 0030A3F0 38 60 00 0F */ li r3, 0xf
+lbl_8030E794:
+/* 8030E794 0030A3F4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E798 0030A3F8 41 82 00 08 */ beq lbl_8030E7A0
+/* 8030E79C 0030A3FC 48 00 00 B8 */ b lbl_8030E854
+lbl_8030E7A0:
+/* 8030E7A0 0030A400 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030E7A4 0030A404 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E7A8 0030A408 40 82 00 30 */ bne lbl_8030E7D8
+/* 8030E7AC 0030A40C 80 78 00 00 */ lwz r3, 0(r24)
+/* 8030E7B0 0030A410 3C 03 00 01 */ addis r0, r3, 1
+/* 8030E7B4 0030A414 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E7B8 0030A418 40 82 00 08 */ bne lbl_8030E7C0
+/* 8030E7BC 0030A41C 92 B8 00 00 */ stw r21, 0(r24)
+lbl_8030E7C0:
+/* 8030E7C0 0030A420 3B DE 00 01 */ addi r30, r30, 1
+/* 8030E7C4 0030A424 7C 1E B8 40 */ cmplw r30, r23
+/* 8030E7C8 0030A428 41 80 00 28 */ blt lbl_8030E7F0
+/* 8030E7CC 0030A42C 92 B9 00 00 */ stw r21, 0(r25)
+/* 8030E7D0 0030A430 38 60 00 00 */ li r3, 0
+/* 8030E7D4 0030A434 48 00 00 80 */ b lbl_8030E854
+lbl_8030E7D8:
+/* 8030E7D8 0030A438 7C 1C F0 40 */ cmplw r28, r30
+/* 8030E7DC 0030A43C 40 80 00 0C */ bge lbl_8030E7E8
+/* 8030E7E0 0030A440 83 B8 00 00 */ lwz r29, 0(r24)
+/* 8030E7E4 0030A444 7F DC F3 78 */ mr r28, r30
+lbl_8030E7E8:
+/* 8030E7E8 0030A448 92 78 00 00 */ stw r19, 0(r24)
+/* 8030E7EC 0030A44C 3B C0 00 00 */ li r30, 0
+lbl_8030E7F0:
+/* 8030E7F0 0030A450 2C 1B 00 00 */ cmpwi r27, 0
+/* 8030E7F4 0030A454 3A B5 00 01 */ addi r21, r21, 1
+/* 8030E7F8 0030A458 40 82 00 28 */ bne lbl_8030E820
+/* 8030E7FC 0030A45C 2C 1E 00 00 */ cmpwi r30, 0
+/* 8030E800 0030A460 40 82 00 20 */ bne lbl_8030E820
+/* 8030E804 0030A464 28 15 00 02 */ cmplwi r21, 2
+/* 8030E808 0030A468 40 81 00 18 */ ble lbl_8030E820
+/* 8030E80C 0030A46C 7C 15 B0 40 */ cmplw r21, r22
+/* 8030E810 0030A470 40 82 00 10 */ bne lbl_8030E820
+/* 8030E814 0030A474 7F 56 D3 78 */ mr r22, r26
+/* 8030E818 0030A478 3A A0 00 02 */ li r21, 2
+/* 8030E81C 0030A47C 3B 60 00 01 */ li r27, 1
+lbl_8030E820:
+/* 8030E820 0030A480 7C 15 B0 40 */ cmplw r21, r22
+/* 8030E824 0030A484 40 81 FE F0 */ ble lbl_8030E714
+/* 8030E828 0030A488 7C 1C F0 40 */ cmplw r28, r30
+/* 8030E82C 0030A48C 40 80 00 0C */ bge lbl_8030E838
+/* 8030E830 0030A490 83 B8 00 00 */ lwz r29, 0(r24)
+/* 8030E834 0030A494 7F DC F3 78 */ mr r28, r30
+lbl_8030E838:
+/* 8030E838 0030A498 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030E83C 0030A49C 41 82 00 14 */ beq lbl_8030E850
+/* 8030E840 0030A4A0 7C 7C EA 14 */ add r3, r28, r29
+/* 8030E844 0030A4A4 93 B8 00 00 */ stw r29, 0(r24)
+/* 8030E848 0030A4A8 38 03 FF FF */ addi r0, r3, -1
+/* 8030E84C 0030A4AC 90 19 00 00 */ stw r0, 0(r25)
+lbl_8030E850:
+/* 8030E850 0030A4B0 38 60 00 00 */ li r3, 0
+lbl_8030E854:
+/* 8030E854 0030A4B4 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030E858 0030A4B8 4B EB 88 FD */ bl _restgpr_19
+/* 8030E85C 0030A4BC 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 8030E860 0030A4C0 7C 08 03 A6 */ mtlr r0
+/* 8030E864 0030A4C4 38 21 00 50 */ addi r1, r1, 0x50
+/* 8030E868 0030A4C8 4E 80 00 20 */ blr
+
+.global VFiPFFAT_FindClusterLink
+VFiPFFAT_FindClusterLink:
+/* 8030E86C 0030A4CC 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030E870 0030A4D0 7C 08 02 A6 */ mflr r0
+/* 8030E874 0030A4D4 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030E878 0030A4D8 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030E87C 0030A4DC 4B EB 88 AD */ bl _savegpr_27
+/* 8030E880 0030A4E0 38 E0 FF FF */ li r7, -1
+/* 8030E884 0030A4E4 38 00 00 00 */ li r0, 0
+/* 8030E888 0030A4E8 90 E1 00 0C */ stw r7, 0xc(r1)
+/* 8030E88C 0030A4EC 7C 7B 1B 78 */ mr r27, r3
+/* 8030E890 0030A4F0 7C BE 2B 78 */ mr r30, r5
+/* 8030E894 0030A4F4 7C DF 33 78 */ mr r31, r6
+/* 8030E898 0030A4F8 90 06 00 00 */ stw r0, 0(r6)
+/* 8030E89C 0030A4FC 80 03 00 24 */ lwz r0, 0x24(r3)
+/* 8030E8A0 0030A500 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E8A4 0030A504 40 82 00 0C */ bne lbl_8030E8B0
+/* 8030E8A8 0030A508 38 60 00 00 */ li r3, 0
+/* 8030E8AC 0030A50C 48 00 01 64 */ b lbl_8030EA10
+lbl_8030E8B0:
+/* 8030E8B0 0030A510 80 03 00 2C */ lwz r0, 0x2c(r3)
+/* 8030E8B4 0030A514 7C 00 20 40 */ cmplw r0, r4
+/* 8030E8B8 0030A518 41 80 01 4C */ blt lbl_8030EA04
+/* 8030E8BC 0030A51C A0 E3 00 20 */ lhz r7, 0x20(r3)
+/* 8030E8C0 0030A520 38 07 00 01 */ addi r0, r7, 1
+/* 8030E8C4 0030A524 7C E4 03 96 */ divwu r7, r4, r0
+/* 8030E8C8 0030A528 7C 07 01 D6 */ mullw r0, r7, r0
+/* 8030E8CC 0030A52C 7F 80 20 51 */ subf. r28, r0, r4
+/* 8030E8D0 0030A530 40 82 00 20 */ bne lbl_8030E8F0
+/* 8030E8D4 0030A534 80 83 00 1C */ lwz r4, 0x1c(r3)
+/* 8030E8D8 0030A538 54 E3 10 3A */ slwi r3, r7, 2
+/* 8030E8DC 0030A53C 38 00 00 01 */ li r0, 1
+/* 8030E8E0 0030A540 7C 64 18 2E */ lwzx r3, r4, r3
+/* 8030E8E4 0030A544 90 65 00 00 */ stw r3, 0(r5)
+/* 8030E8E8 0030A548 90 06 00 00 */ stw r0, 0(r6)
+/* 8030E8EC 0030A54C 48 00 01 20 */ b lbl_8030EA0C
+lbl_8030E8F0:
+/* 8030E8F0 0030A550 80 A3 00 1C */ lwz r5, 0x1c(r3)
+/* 8030E8F4 0030A554 54 E0 10 3A */ slwi r0, r7, 2
+/* 8030E8F8 0030A558 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030E8FC 0030A55C 38 81 00 08 */ addi r4, r1, 8
+/* 8030E900 0030A560 7F A5 00 2E */ lwzx r29, r5, r0
+/* 8030E904 0030A564 7F A5 EB 78 */ mr r5, r29
+/* 8030E908 0030A568 4B FF FC 31 */ bl VFiPFFAT_ReadFATSector
+/* 8030E90C 0030A56C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E910 0030A570 41 82 00 9C */ beq lbl_8030E9AC
+/* 8030E914 0030A574 48 00 00 FC */ b lbl_8030EA10
+/* 8030E918 0030A578 48 00 00 94 */ b lbl_8030E9AC
+lbl_8030E91C:
+/* 8030E91C 0030A57C 80 7B 00 34 */ lwz r3, 0x34(r27)
+/* 8030E920 0030A580 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030E924 0030A584 2C 00 00 01 */ cmpwi r0, 1
+/* 8030E928 0030A588 41 82 00 34 */ beq lbl_8030E95C
+/* 8030E92C 0030A58C 40 80 00 10 */ bge lbl_8030E93C
+/* 8030E930 0030A590 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E934 0030A594 40 80 00 14 */ bge lbl_8030E948
+/* 8030E938 0030A598 48 00 00 4C */ b lbl_8030E984
+lbl_8030E93C:
+/* 8030E93C 0030A59C 2C 00 00 03 */ cmpwi r0, 3
+/* 8030E940 0030A5A0 40 80 00 44 */ bge lbl_8030E984
+/* 8030E944 0030A5A4 48 00 00 2C */ b lbl_8030E970
+lbl_8030E948:
+/* 8030E948 0030A5A8 57 A4 04 3E */ clrlwi r4, r29, 0x10
+/* 8030E94C 0030A5AC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E950 0030A5B0 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E954 0030A5B4 48 00 2A 01 */ bl VFiPFFAT12_ReadFATEntryPage
+/* 8030E958 0030A5B8 48 00 00 30 */ b lbl_8030E988
+lbl_8030E95C:
+/* 8030E95C 0030A5BC 7F A4 EB 78 */ mr r4, r29
+/* 8030E960 0030A5C0 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E964 0030A5C4 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E968 0030A5C8 48 00 34 55 */ bl VFiPFFAT16_ReadFATEntryPage
+/* 8030E96C 0030A5CC 48 00 00 1C */ b lbl_8030E988
+lbl_8030E970:
+/* 8030E970 0030A5D0 7F A4 EB 78 */ mr r4, r29
+/* 8030E974 0030A5D4 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E978 0030A5D8 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E97C 0030A5DC 48 00 39 C9 */ bl VFiPFFAT32_ReadFATEntryPage
+/* 8030E980 0030A5E0 48 00 00 08 */ b lbl_8030E988
+lbl_8030E984:
+/* 8030E984 0030A5E4 38 60 00 0F */ li r3, 0xf
+lbl_8030E988:
+/* 8030E988 0030A5E8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E98C 0030A5EC 41 82 00 08 */ beq lbl_8030E994
+/* 8030E990 0030A5F0 48 00 00 80 */ b lbl_8030EA10
+lbl_8030E994:
+/* 8030E994 0030A5F4 83 A1 00 0C */ lwz r29, 0xc(r1)
+/* 8030E998 0030A5F8 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030E99C 0030A5FC 40 82 00 0C */ bne lbl_8030E9A8
+/* 8030E9A0 0030A600 38 60 00 0D */ li r3, 0xd
+/* 8030E9A4 0030A604 48 00 00 6C */ b lbl_8030EA10
+lbl_8030E9A8:
+/* 8030E9A8 0030A608 3B 9C FF FF */ addi r28, r28, -1
+lbl_8030E9AC:
+/* 8030E9AC 0030A60C 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030E9B0 0030A610 40 82 FF 6C */ bne lbl_8030E91C
+/* 8030E9B4 0030A614 80 A1 00 0C */ lwz r5, 0xc(r1)
+/* 8030E9B8 0030A618 2C 05 00 00 */ cmpwi r5, 0
+/* 8030E9BC 0030A61C 40 82 00 0C */ bne lbl_8030E9C8
+/* 8030E9C0 0030A620 38 60 00 0D */ li r3, 0xd
+/* 8030E9C4 0030A624 48 00 00 4C */ b lbl_8030EA10
+lbl_8030E9C8:
+/* 8030E9C8 0030A628 80 7B 00 34 */ lwz r3, 0x34(r27)
+/* 8030E9CC 0030A62C 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 8030E9D0 0030A630 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 8030E9D4 0030A634 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030E9D8 0030A638 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030E9DC 0030A63C 7C 64 02 14 */ add r3, r4, r0
+/* 8030E9E0 0030A640 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030E9E4 0030A644 7C 05 00 40 */ cmplw r5, r0
+/* 8030E9E8 0030A648 40 82 00 0C */ bne lbl_8030E9F4
+/* 8030E9EC 0030A64C 38 60 00 00 */ li r3, 0
+/* 8030E9F0 0030A650 48 00 00 20 */ b lbl_8030EA10
+lbl_8030E9F4:
+/* 8030E9F4 0030A654 90 BE 00 00 */ stw r5, 0(r30)
+/* 8030E9F8 0030A658 38 00 00 01 */ li r0, 1
+/* 8030E9FC 0030A65C 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030EA00 0030A660 48 00 00 0C */ b lbl_8030EA0C
+lbl_8030EA04:
+/* 8030EA04 0030A664 38 60 00 00 */ li r3, 0
+/* 8030EA08 0030A668 48 00 00 08 */ b lbl_8030EA10
+lbl_8030EA0C:
+/* 8030EA0C 0030A66C 38 60 00 00 */ li r3, 0
+lbl_8030EA10:
+/* 8030EA10 0030A670 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030EA14 0030A674 4B EB 87 61 */ bl _restgpr_27
+/* 8030EA18 0030A678 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030EA1C 0030A67C 7C 08 03 A6 */ mtlr r0
+/* 8030EA20 0030A680 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030EA24 0030A684 4E 80 00 20 */ blr
+
+.global VFiPFFAT_FindClusterLinkPage
+VFiPFFAT_FindClusterLinkPage:
+/* 8030EA28 0030A688 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030EA2C 0030A68C 7C 08 02 A6 */ mflr r0
+/* 8030EA30 0030A690 39 00 FF FF */ li r8, -1
+/* 8030EA34 0030A694 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030EA38 0030A698 38 00 00 00 */ li r0, 0
+/* 8030EA3C 0030A69C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030EA40 0030A6A0 7C DF 33 78 */ mr r31, r6
+/* 8030EA44 0030A6A4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030EA48 0030A6A8 7C BE 2B 78 */ mr r30, r5
+/* 8030EA4C 0030A6AC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030EA50 0030A6B0 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8030EA54 0030A6B4 7C 7C 1B 78 */ mr r28, r3
+/* 8030EA58 0030A6B8 90 E1 00 08 */ stw r7, 8(r1)
+/* 8030EA5C 0030A6BC 91 01 00 0C */ stw r8, 0xc(r1)
+/* 8030EA60 0030A6C0 90 06 00 00 */ stw r0, 0(r6)
+/* 8030EA64 0030A6C4 80 03 00 24 */ lwz r0, 0x24(r3)
+/* 8030EA68 0030A6C8 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EA6C 0030A6CC 40 82 00 0C */ bne lbl_8030EA78
+/* 8030EA70 0030A6D0 38 60 00 00 */ li r3, 0
+/* 8030EA74 0030A6D4 48 00 01 40 */ b lbl_8030EBB4
+lbl_8030EA78:
+/* 8030EA78 0030A6D8 80 03 00 2C */ lwz r0, 0x2c(r3)
+/* 8030EA7C 0030A6DC 7C 00 20 40 */ cmplw r0, r4
+/* 8030EA80 0030A6E0 41 80 01 28 */ blt lbl_8030EBA8
+/* 8030EA84 0030A6E4 A0 E3 00 20 */ lhz r7, 0x20(r3)
+/* 8030EA88 0030A6E8 38 07 00 01 */ addi r0, r7, 1
+/* 8030EA8C 0030A6EC 7C E4 03 96 */ divwu r7, r4, r0
+/* 8030EA90 0030A6F0 7C 07 01 D6 */ mullw r0, r7, r0
+/* 8030EA94 0030A6F4 7F A0 20 51 */ subf. r29, r0, r4
+/* 8030EA98 0030A6F8 40 82 00 20 */ bne lbl_8030EAB8
+/* 8030EA9C 0030A6FC 80 83 00 1C */ lwz r4, 0x1c(r3)
+/* 8030EAA0 0030A700 54 E3 10 3A */ slwi r3, r7, 2
+/* 8030EAA4 0030A704 38 00 00 01 */ li r0, 1
+/* 8030EAA8 0030A708 7C 64 18 2E */ lwzx r3, r4, r3
+/* 8030EAAC 0030A70C 90 65 00 00 */ stw r3, 0(r5)
+/* 8030EAB0 0030A710 90 06 00 00 */ stw r0, 0(r6)
+/* 8030EAB4 0030A714 48 00 00 FC */ b lbl_8030EBB0
+lbl_8030EAB8:
+/* 8030EAB8 0030A718 80 63 00 1C */ lwz r3, 0x1c(r3)
+/* 8030EABC 0030A71C 54 E0 10 3A */ slwi r0, r7, 2
+/* 8030EAC0 0030A720 7C 83 00 2E */ lwzx r4, r3, r0
+/* 8030EAC4 0030A724 48 00 00 8C */ b lbl_8030EB50
+lbl_8030EAC8:
+/* 8030EAC8 0030A728 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 8030EACC 0030A72C 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EAD0 0030A730 2C 00 00 01 */ cmpwi r0, 1
+/* 8030EAD4 0030A734 41 82 00 34 */ beq lbl_8030EB08
+/* 8030EAD8 0030A738 40 80 00 10 */ bge lbl_8030EAE8
+/* 8030EADC 0030A73C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EAE0 0030A740 40 80 00 14 */ bge lbl_8030EAF4
+/* 8030EAE4 0030A744 48 00 00 44 */ b lbl_8030EB28
+lbl_8030EAE8:
+/* 8030EAE8 0030A748 2C 00 00 03 */ cmpwi r0, 3
+/* 8030EAEC 0030A74C 40 80 00 3C */ bge lbl_8030EB28
+/* 8030EAF0 0030A750 48 00 00 28 */ b lbl_8030EB18
+lbl_8030EAF4:
+/* 8030EAF4 0030A754 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 8030EAF8 0030A758 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030EAFC 0030A75C 38 C1 00 08 */ addi r6, r1, 8
+/* 8030EB00 0030A760 48 00 28 55 */ bl VFiPFFAT12_ReadFATEntryPage
+/* 8030EB04 0030A764 48 00 00 28 */ b lbl_8030EB2C
+lbl_8030EB08:
+/* 8030EB08 0030A768 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030EB0C 0030A76C 38 C1 00 08 */ addi r6, r1, 8
+/* 8030EB10 0030A770 48 00 32 AD */ bl VFiPFFAT16_ReadFATEntryPage
+/* 8030EB14 0030A774 48 00 00 18 */ b lbl_8030EB2C
+lbl_8030EB18:
+/* 8030EB18 0030A778 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030EB1C 0030A77C 38 C1 00 08 */ addi r6, r1, 8
+/* 8030EB20 0030A780 48 00 38 25 */ bl VFiPFFAT32_ReadFATEntryPage
+/* 8030EB24 0030A784 48 00 00 08 */ b lbl_8030EB2C
+lbl_8030EB28:
+/* 8030EB28 0030A788 38 60 00 0F */ li r3, 0xf
+lbl_8030EB2C:
+/* 8030EB2C 0030A78C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030EB30 0030A790 41 82 00 08 */ beq lbl_8030EB38
+/* 8030EB34 0030A794 48 00 00 80 */ b lbl_8030EBB4
+lbl_8030EB38:
+/* 8030EB38 0030A798 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030EB3C 0030A79C 2C 04 00 00 */ cmpwi r4, 0
+/* 8030EB40 0030A7A0 40 82 00 0C */ bne lbl_8030EB4C
+/* 8030EB44 0030A7A4 38 60 00 0D */ li r3, 0xd
+/* 8030EB48 0030A7A8 48 00 00 6C */ b lbl_8030EBB4
+lbl_8030EB4C:
+/* 8030EB4C 0030A7AC 3B BD FF FF */ addi r29, r29, -1
+lbl_8030EB50:
+/* 8030EB50 0030A7B0 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030EB54 0030A7B4 40 82 FF 74 */ bne lbl_8030EAC8
+/* 8030EB58 0030A7B8 80 A1 00 0C */ lwz r5, 0xc(r1)
+/* 8030EB5C 0030A7BC 2C 05 00 00 */ cmpwi r5, 0
+/* 8030EB60 0030A7C0 40 82 00 0C */ bne lbl_8030EB6C
+/* 8030EB64 0030A7C4 38 60 00 0D */ li r3, 0xd
+/* 8030EB68 0030A7C8 48 00 00 4C */ b lbl_8030EBB4
+lbl_8030EB6C:
+/* 8030EB6C 0030A7CC 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 8030EB70 0030A7D0 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 8030EB74 0030A7D4 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 8030EB78 0030A7D8 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EB7C 0030A7DC 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030EB80 0030A7E0 7C 64 02 14 */ add r3, r4, r0
+/* 8030EB84 0030A7E4 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030EB88 0030A7E8 7C 05 00 40 */ cmplw r5, r0
+/* 8030EB8C 0030A7EC 40 82 00 0C */ bne lbl_8030EB98
+/* 8030EB90 0030A7F0 38 60 00 00 */ li r3, 0
+/* 8030EB94 0030A7F4 48 00 00 20 */ b lbl_8030EBB4
+lbl_8030EB98:
+/* 8030EB98 0030A7F8 90 BE 00 00 */ stw r5, 0(r30)
+/* 8030EB9C 0030A7FC 38 00 00 01 */ li r0, 1
+/* 8030EBA0 0030A800 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030EBA4 0030A804 48 00 00 0C */ b lbl_8030EBB0
+lbl_8030EBA8:
+/* 8030EBA8 0030A808 38 60 00 00 */ li r3, 0
+/* 8030EBAC 0030A80C 48 00 00 08 */ b lbl_8030EBB4
+lbl_8030EBB0:
+/* 8030EBB0 0030A810 38 60 00 00 */ li r3, 0
+lbl_8030EBB4:
+/* 8030EBB4 0030A814 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030EBB8 0030A818 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030EBBC 0030A81C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030EBC0 0030A820 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030EBC4 0030A824 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030EBC8 0030A828 7C 08 03 A6 */ mtlr r0
+/* 8030EBCC 0030A82C 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030EBD0 0030A830 4E 80 00 20 */ blr
+
+.global VFiPFFAT_ReadClusterPage
+VFiPFFAT_ReadClusterPage:
+/* 8030EBD4 0030A834 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030EBD8 0030A838 7C 08 02 A6 */ mflr r0
+/* 8030EBDC 0030A83C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030EBE0 0030A840 39 61 00 20 */ addi r11, r1, 0x20
+/* 8030EBE4 0030A844 4B EB 85 41 */ bl _savegpr_26
+/* 8030EBE8 0030A848 38 00 FF FF */ li r0, -1
+/* 8030EBEC 0030A84C 7C 7E 1B 78 */ mr r30, r3
+/* 8030EBF0 0030A850 90 06 00 00 */ stw r0, 0(r6)
+/* 8030EBF4 0030A854 7C 9A 23 78 */ mr r26, r4
+/* 8030EBF8 0030A858 7C BF 2B 78 */ mr r31, r5
+/* 8030EBFC 0030A85C 7C DB 33 78 */ mr r27, r6
+/* 8030EC00 0030A860 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EC04 0030A864 7C FC 3B 78 */ mr r28, r7
+/* 8030EC08 0030A868 7D 1D 43 78 */ mr r29, r8
+/* 8030EC0C 0030A86C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EC10 0030A870 41 82 00 30 */ beq lbl_8030EC40
+/* 8030EC14 0030A874 80 07 00 00 */ lwz r0, 0(r7)
+/* 8030EC18 0030A878 28 00 00 01 */ cmplwi r0, 1
+/* 8030EC1C 0030A87C 40 82 00 24 */ bne lbl_8030EC40
+/* 8030EC20 0030A880 80 E8 00 00 */ lwz r7, 0(r8)
+/* 8030EC24 0030A884 7F E4 FB 78 */ mr r4, r31
+/* 8030EC28 0030A888 7F 65 DB 78 */ mr r5, r27
+/* 8030EC2C 0030A88C 7F 86 E3 78 */ mr r6, r28
+/* 8030EC30 0030A890 4B FF FD F9 */ bl VFiPFFAT_FindClusterLinkPage
+/* 8030EC34 0030A894 2C 03 00 00 */ cmpwi r3, 0
+/* 8030EC38 0030A898 41 82 00 08 */ beq lbl_8030EC40
+/* 8030EC3C 0030A89C 48 00 01 4C */ b lbl_8030ED88
+lbl_8030EC40:
+/* 8030EC40 0030A8A0 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 8030EC44 0030A8A4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EC48 0030A8A8 41 82 00 10 */ beq lbl_8030EC58
+/* 8030EC4C 0030A8AC 80 1C 00 00 */ lwz r0, 0(r28)
+/* 8030EC50 0030A8B0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EC54 0030A8B4 40 82 01 30 */ bne lbl_8030ED84
+lbl_8030EC58:
+/* 8030EC58 0030A8B8 80 7E 00 34 */ lwz r3, 0x34(r30)
+/* 8030EC5C 0030A8BC 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EC60 0030A8C0 2C 00 00 01 */ cmpwi r0, 1
+/* 8030EC64 0030A8C4 41 82 00 34 */ beq lbl_8030EC98
+/* 8030EC68 0030A8C8 40 80 00 10 */ bge lbl_8030EC78
+/* 8030EC6C 0030A8CC 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EC70 0030A8D0 40 80 00 14 */ bge lbl_8030EC84
+/* 8030EC74 0030A8D4 48 00 00 4C */ b lbl_8030ECC0
+lbl_8030EC78:
+/* 8030EC78 0030A8D8 2C 00 00 03 */ cmpwi r0, 3
+/* 8030EC7C 0030A8DC 40 80 00 44 */ bge lbl_8030ECC0
+/* 8030EC80 0030A8E0 48 00 00 2C */ b lbl_8030ECAC
+lbl_8030EC84:
+/* 8030EC84 0030A8E4 7F 65 DB 78 */ mr r5, r27
+/* 8030EC88 0030A8E8 7F A6 EB 78 */ mr r6, r29
+/* 8030EC8C 0030A8EC 57 44 04 3E */ clrlwi r4, r26, 0x10
+/* 8030EC90 0030A8F0 48 00 26 C5 */ bl VFiPFFAT12_ReadFATEntryPage
+/* 8030EC94 0030A8F4 48 00 00 30 */ b lbl_8030ECC4
+lbl_8030EC98:
+/* 8030EC98 0030A8F8 7F 44 D3 78 */ mr r4, r26
+/* 8030EC9C 0030A8FC 7F 65 DB 78 */ mr r5, r27
+/* 8030ECA0 0030A900 7F A6 EB 78 */ mr r6, r29
+/* 8030ECA4 0030A904 48 00 31 19 */ bl VFiPFFAT16_ReadFATEntryPage
+/* 8030ECA8 0030A908 48 00 00 1C */ b lbl_8030ECC4
+lbl_8030ECAC:
+/* 8030ECAC 0030A90C 7F 44 D3 78 */ mr r4, r26
+/* 8030ECB0 0030A910 7F 65 DB 78 */ mr r5, r27
+/* 8030ECB4 0030A914 7F A6 EB 78 */ mr r6, r29
+/* 8030ECB8 0030A918 48 00 36 8D */ bl VFiPFFAT32_ReadFATEntryPage
+/* 8030ECBC 0030A91C 48 00 00 08 */ b lbl_8030ECC4
+lbl_8030ECC0:
+/* 8030ECC0 0030A920 38 60 00 0F */ li r3, 0xf
+lbl_8030ECC4:
+/* 8030ECC4 0030A924 2C 03 00 00 */ cmpwi r3, 0
+/* 8030ECC8 0030A928 41 82 00 08 */ beq lbl_8030ECD0
+/* 8030ECCC 0030A92C 48 00 00 BC */ b lbl_8030ED88
+lbl_8030ECD0:
+/* 8030ECD0 0030A930 80 DB 00 00 */ lwz r6, 0(r27)
+/* 8030ECD4 0030A934 2C 06 00 00 */ cmpwi r6, 0
+/* 8030ECD8 0030A938 40 82 00 0C */ bne lbl_8030ECE4
+/* 8030ECDC 0030A93C 38 60 00 0D */ li r3, 0xd
+/* 8030ECE0 0030A940 48 00 00 A8 */ b lbl_8030ED88
+lbl_8030ECE4:
+/* 8030ECE4 0030A944 3C 06 00 01 */ addis r0, r6, 1
+/* 8030ECE8 0030A948 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030ECEC 0030A94C 40 82 00 0C */ bne lbl_8030ECF8
+/* 8030ECF0 0030A950 38 60 00 06 */ li r3, 6
+/* 8030ECF4 0030A954 48 00 00 94 */ b lbl_8030ED88
+lbl_8030ECF8:
+/* 8030ECF8 0030A958 80 BE 00 1C */ lwz r5, 0x1c(r30)
+/* 8030ECFC 0030A95C 2C 05 00 00 */ cmpwi r5, 0
+/* 8030ED00 0030A960 41 82 00 84 */ beq lbl_8030ED84
+/* 8030ED04 0030A964 80 7E 00 34 */ lwz r3, 0x34(r30)
+/* 8030ED08 0030A968 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 8030ED0C 0030A96C 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 8030ED10 0030A970 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030ED14 0030A974 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030ED18 0030A978 7C 64 02 14 */ add r3, r4, r0
+/* 8030ED1C 0030A97C 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030ED20 0030A980 7C 06 00 40 */ cmplw r6, r0
+/* 8030ED24 0030A984 41 82 00 60 */ beq lbl_8030ED84
+/* 8030ED28 0030A988 80 9E 00 24 */ lwz r4, 0x24(r30)
+/* 8030ED2C 0030A98C 80 1E 00 28 */ lwz r0, 0x28(r30)
+/* 8030ED30 0030A990 7C 00 20 40 */ cmplw r0, r4
+/* 8030ED34 0030A994 40 81 00 50 */ ble lbl_8030ED84
+/* 8030ED38 0030A998 2C 00 00 00 */ cmpwi r0, 0
+/* 8030ED3C 0030A99C 41 82 00 48 */ beq lbl_8030ED84
+/* 8030ED40 0030A9A0 A0 7E 00 20 */ lhz r3, 0x20(r30)
+/* 8030ED44 0030A9A4 38 03 00 01 */ addi r0, r3, 1
+/* 8030ED48 0030A9A8 7C 04 01 D6 */ mullw r0, r4, r0
+/* 8030ED4C 0030A9AC 7C 1F 00 40 */ cmplw r31, r0
+/* 8030ED50 0030A9B0 40 82 00 24 */ bne lbl_8030ED74
+/* 8030ED54 0030A9B4 38 60 00 00 */ li r3, 0
+/* 8030ED58 0030A9B8 54 80 10 3A */ slwi r0, r4, 2
+/* 8030ED5C 0030A9BC B0 7E 00 22 */ sth r3, 0x22(r30)
+/* 8030ED60 0030A9C0 7C C5 01 2E */ stwx r6, r5, r0
+/* 8030ED64 0030A9C4 80 7E 00 24 */ lwz r3, 0x24(r30)
+/* 8030ED68 0030A9C8 38 03 00 01 */ addi r0, r3, 1
+/* 8030ED6C 0030A9CC 90 1E 00 24 */ stw r0, 0x24(r30)
+/* 8030ED70 0030A9D0 48 00 00 10 */ b lbl_8030ED80
+lbl_8030ED74:
+/* 8030ED74 0030A9D4 A0 7E 00 22 */ lhz r3, 0x22(r30)
+/* 8030ED78 0030A9D8 38 03 00 01 */ addi r0, r3, 1
+/* 8030ED7C 0030A9DC B0 1E 00 22 */ sth r0, 0x22(r30)
+lbl_8030ED80:
+/* 8030ED80 0030A9E0 93 FE 00 2C */ stw r31, 0x2c(r30)
+lbl_8030ED84:
+/* 8030ED84 0030A9E4 38 60 00 00 */ li r3, 0
+lbl_8030ED88:
+/* 8030ED88 0030A9E8 39 61 00 20 */ addi r11, r1, 0x20
+/* 8030ED8C 0030A9EC 4B EB 83 E5 */ bl _restgpr_26
+/* 8030ED90 0030A9F0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030ED94 0030A9F4 7C 08 03 A6 */ mtlr r0
+/* 8030ED98 0030A9F8 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030ED9C 0030A9FC 4E 80 00 20 */ blr
+
+.global VFiPFFAT_WriteCluster
+VFiPFFAT_WriteCluster:
+/* 8030EDA0 0030AA00 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030EDA4 0030AA04 7C 08 02 A6 */ mflr r0
+/* 8030EDA8 0030AA08 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030EDAC 0030AA0C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030EDB0 0030AA10 7C BF 2B 78 */ mr r31, r5
+/* 8030EDB4 0030AA14 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030EDB8 0030AA18 7C 9E 23 78 */ mr r30, r4
+/* 8030EDBC 0030AA1C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030EDC0 0030AA20 7C 7D 1B 78 */ mr r29, r3
+/* 8030EDC4 0030AA24 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8030EDC8 0030AA28 7C DC 33 78 */ mr r28, r6
+/* 8030EDCC 0030AA2C 90 E1 00 08 */ stw r7, 8(r1)
+/* 8030EDD0 0030AA30 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030EDD4 0030AA34 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EDD8 0030AA38 2C 00 00 01 */ cmpwi r0, 1
+/* 8030EDDC 0030AA3C 41 82 00 40 */ beq lbl_8030EE1C
+/* 8030EDE0 0030AA40 40 80 00 10 */ bge lbl_8030EDF0
+/* 8030EDE4 0030AA44 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EDE8 0030AA48 40 80 00 14 */ bge lbl_8030EDFC
+/* 8030EDEC 0030AA4C 48 00 00 70 */ b lbl_8030EE5C
+lbl_8030EDF0:
+/* 8030EDF0 0030AA50 2C 00 00 03 */ cmpwi r0, 3
+/* 8030EDF4 0030AA54 40 80 00 68 */ bge lbl_8030EE5C
+/* 8030EDF8 0030AA58 48 00 00 40 */ b lbl_8030EE38
+lbl_8030EDFC:
+/* 8030EDFC 0030AA5C 28 06 0F FF */ cmplwi r6, 0xfff
+/* 8030EE00 0030AA60 40 81 00 0C */ ble lbl_8030EE0C
+/* 8030EE04 0030AA64 38 60 00 10 */ li r3, 0x10
+/* 8030EE08 0030AA68 48 00 00 58 */ b lbl_8030EE60
+lbl_8030EE0C:
+/* 8030EE0C 0030AA6C 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 8030EE10 0030AA70 54 C5 04 3E */ clrlwi r5, r6, 0x10
+/* 8030EE14 0030AA74 48 00 28 15 */ bl VFiPFFAT12_WriteFATEntry
+/* 8030EE18 0030AA78 48 00 00 48 */ b lbl_8030EE60
+lbl_8030EE1C:
+/* 8030EE1C 0030AA7C 28 06 FF FF */ cmplwi r6, 0xffff
+/* 8030EE20 0030AA80 40 81 00 0C */ ble lbl_8030EE2C
+/* 8030EE24 0030AA84 38 60 00 10 */ li r3, 0x10
+/* 8030EE28 0030AA88 48 00 00 38 */ b lbl_8030EE60
+lbl_8030EE2C:
+/* 8030EE2C 0030AA8C 7F 85 E3 78 */ mr r5, r28
+/* 8030EE30 0030AA90 48 00 31 49 */ bl VFiPFFAT16_WriteFATEntry
+/* 8030EE34 0030AA94 48 00 00 2C */ b lbl_8030EE60
+lbl_8030EE38:
+/* 8030EE38 0030AA98 3C A0 10 00 */ lis r5, 0x0FFFFFFF@ha
+/* 8030EE3C 0030AA9C 38 05 FF FF */ addi r0, r5, 0x0FFFFFFF@l
+/* 8030EE40 0030AAA0 7C 06 00 40 */ cmplw r6, r0
+/* 8030EE44 0030AAA4 40 81 00 0C */ ble lbl_8030EE50
+/* 8030EE48 0030AAA8 38 60 00 10 */ li r3, 0x10
+/* 8030EE4C 0030AAAC 48 00 00 14 */ b lbl_8030EE60
+lbl_8030EE50:
+/* 8030EE50 0030AAB0 7F 85 E3 78 */ mr r5, r28
+/* 8030EE54 0030AAB4 48 00 36 BD */ bl VFiPFFAT32_WriteFATEntry
+/* 8030EE58 0030AAB8 48 00 00 08 */ b lbl_8030EE60
+lbl_8030EE5C:
+/* 8030EE5C 0030AABC 38 60 00 0F */ li r3, 0xf
+lbl_8030EE60:
+/* 8030EE60 0030AAC0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030EE64 0030AAC4 41 82 00 08 */ beq lbl_8030EE6C
+/* 8030EE68 0030AAC8 48 00 01 3C */ b lbl_8030EFA4
+lbl_8030EE6C:
+/* 8030EE6C 0030AACC 80 BD 00 1C */ lwz r5, 0x1c(r29)
+/* 8030EE70 0030AAD0 2C 05 00 00 */ cmpwi r5, 0
+/* 8030EE74 0030AAD4 41 82 01 2C */ beq lbl_8030EFA0
+/* 8030EE78 0030AAD8 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030EE7C 0030AADC 28 00 00 01 */ cmplwi r0, 1
+/* 8030EE80 0030AAE0 40 82 01 20 */ bne lbl_8030EFA0
+/* 8030EE84 0030AAE4 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030EE88 0030AAE8 40 82 00 68 */ bne lbl_8030EEF0
+/* 8030EE8C 0030AAEC A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030EE90 0030AAF0 80 1D 00 28 */ lwz r0, 0x28(r29)
+/* 8030EE94 0030AAF4 38 83 00 01 */ addi r4, r3, 1
+/* 8030EE98 0030AAF8 7C 7F 23 96 */ divwu r3, r31, r4
+/* 8030EE9C 0030AAFC 7C 00 18 40 */ cmplw r0, r3
+/* 8030EEA0 0030AB00 41 80 01 00 */ blt lbl_8030EFA0
+/* 8030EEA4 0030AB04 7C 03 21 D6 */ mullw r0, r3, r4
+/* 8030EEA8 0030AB08 7C 00 F8 51 */ subf. r0, r0, r31
+/* 8030EEAC 0030AB0C 40 82 00 10 */ bne lbl_8030EEBC
+/* 8030EEB0 0030AB10 54 60 10 3A */ slwi r0, r3, 2
+/* 8030EEB4 0030AB14 38 60 00 00 */ li r3, 0
+/* 8030EEB8 0030AB18 7C 65 01 2E */ stwx r3, r5, r0
+lbl_8030EEBC:
+/* 8030EEBC 0030AB1C 80 1D 00 2C */ lwz r0, 0x2c(r29)
+/* 8030EEC0 0030AB20 7C 00 F8 40 */ cmplw r0, r31
+/* 8030EEC4 0030AB24 41 80 00 DC */ blt lbl_8030EFA0
+/* 8030EEC8 0030AB28 A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030EECC 0030AB2C 38 9F FF FF */ addi r4, r31, -1
+/* 8030EED0 0030AB30 90 9D 00 2C */ stw r4, 0x2c(r29)
+/* 8030EED4 0030AB34 38 03 00 01 */ addi r0, r3, 1
+/* 8030EED8 0030AB38 7C 64 03 96 */ divwu r3, r4, r0
+/* 8030EEDC 0030AB3C 7C 03 01 D6 */ mullw r0, r3, r0
+/* 8030EEE0 0030AB40 90 7D 00 24 */ stw r3, 0x24(r29)
+/* 8030EEE4 0030AB44 7C 00 20 50 */ subf r0, r0, r4
+/* 8030EEE8 0030AB48 B0 1D 00 22 */ sth r0, 0x22(r29)
+/* 8030EEEC 0030AB4C 48 00 00 B4 */ b lbl_8030EFA0
+lbl_8030EEF0:
+/* 8030EEF0 0030AB50 80 7D 00 34 */ lwz r3, 0x34(r29)
+/* 8030EEF4 0030AB54 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 8030EEF8 0030AB58 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 8030EEFC 0030AB5C 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EF00 0030AB60 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030EF04 0030AB64 7C 64 02 14 */ add r3, r4, r0
+/* 8030EF08 0030AB68 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030EF0C 0030AB6C 7C 1E 00 40 */ cmplw r30, r0
+/* 8030EF10 0030AB70 41 82 00 90 */ beq lbl_8030EFA0
+/* 8030EF14 0030AB74 7F A3 EB 78 */ mr r3, r29
+/* 8030EF18 0030AB78 7F E4 FB 78 */ mr r4, r31
+/* 8030EF1C 0030AB7C 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030EF20 0030AB80 38 C1 00 08 */ addi r6, r1, 8
+/* 8030EF24 0030AB84 4B FF F9 49 */ bl VFiPFFAT_FindClusterLink
+/* 8030EF28 0030AB88 2C 03 00 00 */ cmpwi r3, 0
+/* 8030EF2C 0030AB8C 41 82 00 08 */ beq lbl_8030EF34
+/* 8030EF30 0030AB90 48 00 00 74 */ b lbl_8030EFA4
+lbl_8030EF34:
+/* 8030EF34 0030AB94 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030EF38 0030AB98 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EF3C 0030AB9C 40 82 00 64 */ bne lbl_8030EFA0
+/* 8030EF40 0030ABA0 80 9D 00 24 */ lwz r4, 0x24(r29)
+/* 8030EF44 0030ABA4 80 1D 00 28 */ lwz r0, 0x28(r29)
+/* 8030EF48 0030ABA8 7C 00 20 40 */ cmplw r0, r4
+/* 8030EF4C 0030ABAC 40 81 00 54 */ ble lbl_8030EFA0
+/* 8030EF50 0030ABB0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EF54 0030ABB4 41 82 00 4C */ beq lbl_8030EFA0
+/* 8030EF58 0030ABB8 A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030EF5C 0030ABBC 38 03 00 01 */ addi r0, r3, 1
+/* 8030EF60 0030ABC0 7C 04 01 D6 */ mullw r0, r4, r0
+/* 8030EF64 0030ABC4 7C 1F 00 40 */ cmplw r31, r0
+/* 8030EF68 0030ABC8 40 82 00 28 */ bne lbl_8030EF90
+/* 8030EF6C 0030ABCC 38 00 00 00 */ li r0, 0
+/* 8030EF70 0030ABD0 80 7D 00 1C */ lwz r3, 0x1c(r29)
+/* 8030EF74 0030ABD4 B0 1D 00 22 */ sth r0, 0x22(r29)
+/* 8030EF78 0030ABD8 54 80 10 3A */ slwi r0, r4, 2
+/* 8030EF7C 0030ABDC 7F C3 01 2E */ stwx r30, r3, r0
+/* 8030EF80 0030ABE0 80 7D 00 24 */ lwz r3, 0x24(r29)
+/* 8030EF84 0030ABE4 38 03 00 01 */ addi r0, r3, 1
+/* 8030EF88 0030ABE8 90 1D 00 24 */ stw r0, 0x24(r29)
+/* 8030EF8C 0030ABEC 48 00 00 10 */ b lbl_8030EF9C
+lbl_8030EF90:
+/* 8030EF90 0030ABF0 A0 7D 00 22 */ lhz r3, 0x22(r29)
+/* 8030EF94 0030ABF4 38 03 00 01 */ addi r0, r3, 1
+/* 8030EF98 0030ABF8 B0 1D 00 22 */ sth r0, 0x22(r29)
+lbl_8030EF9C:
+/* 8030EF9C 0030ABFC 93 FD 00 2C */ stw r31, 0x2c(r29)
+lbl_8030EFA0:
+/* 8030EFA0 0030AC00 38 60 00 00 */ li r3, 0
+lbl_8030EFA4:
+/* 8030EFA4 0030AC04 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030EFA8 0030AC08 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030EFAC 0030AC0C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030EFB0 0030AC10 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030EFB4 0030AC14 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030EFB8 0030AC18 7C 08 03 A6 */ mtlr r0
+/* 8030EFBC 0030AC1C 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030EFC0 0030AC20 4E 80 00 20 */ blr
+
+.global VFiPFFAT_WriteClusterPage
+VFiPFFAT_WriteClusterPage:
+/* 8030EFC4 0030AC24 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030EFC8 0030AC28 7C 08 02 A6 */ mflr r0
+/* 8030EFCC 0030AC2C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030EFD0 0030AC30 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030EFD4 0030AC34 4B EB 81 55 */ bl _savegpr_27
+/* 8030EFD8 0030AC38 90 E1 00 08 */ stw r7, 8(r1)
+/* 8030EFDC 0030AC3C 7C 7D 1B 78 */ mr r29, r3
+/* 8030EFE0 0030AC40 7C 9E 23 78 */ mr r30, r4
+/* 8030EFE4 0030AC44 7C BF 2B 78 */ mr r31, r5
+/* 8030EFE8 0030AC48 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030EFEC 0030AC4C 7C DB 33 78 */ mr r27, r6
+/* 8030EFF0 0030AC50 7D 1C 43 78 */ mr r28, r8
+/* 8030EFF4 0030AC54 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EFF8 0030AC58 2C 00 00 01 */ cmpwi r0, 1
+/* 8030EFFC 0030AC5C 41 82 00 44 */ beq lbl_8030F040
+/* 8030F000 0030AC60 40 80 00 10 */ bge lbl_8030F010
+/* 8030F004 0030AC64 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F008 0030AC68 40 80 00 14 */ bge lbl_8030F01C
+/* 8030F00C 0030AC6C 48 00 00 7C */ b lbl_8030F088
+lbl_8030F010:
+/* 8030F010 0030AC70 2C 00 00 03 */ cmpwi r0, 3
+/* 8030F014 0030AC74 40 80 00 74 */ bge lbl_8030F088
+/* 8030F018 0030AC78 48 00 00 48 */ b lbl_8030F060
+lbl_8030F01C:
+/* 8030F01C 0030AC7C 28 06 0F FF */ cmplwi r6, 0xfff
+/* 8030F020 0030AC80 40 81 00 0C */ ble lbl_8030F02C
+/* 8030F024 0030AC84 38 60 00 10 */ li r3, 0x10
+/* 8030F028 0030AC88 48 00 00 64 */ b lbl_8030F08C
+lbl_8030F02C:
+/* 8030F02C 0030AC8C 54 C5 04 3E */ clrlwi r5, r6, 0x10
+/* 8030F030 0030AC90 7F 86 E3 78 */ mr r6, r28
+/* 8030F034 0030AC94 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 8030F038 0030AC98 48 00 27 95 */ bl VFiPFFAT12_WriteFATEntryPage
+/* 8030F03C 0030AC9C 48 00 00 50 */ b lbl_8030F08C
+lbl_8030F040:
+/* 8030F040 0030ACA0 28 06 FF FF */ cmplwi r6, 0xffff
+/* 8030F044 0030ACA4 40 81 00 0C */ ble lbl_8030F050
+/* 8030F048 0030ACA8 38 60 00 10 */ li r3, 0x10
+/* 8030F04C 0030ACAC 48 00 00 40 */ b lbl_8030F08C
+lbl_8030F050:
+/* 8030F050 0030ACB0 7F 65 DB 78 */ mr r5, r27
+/* 8030F054 0030ACB4 7F 86 E3 78 */ mr r6, r28
+/* 8030F058 0030ACB8 48 00 2F B9 */ bl VFiPFFAT16_WriteFATEntryPage
+/* 8030F05C 0030ACBC 48 00 00 30 */ b lbl_8030F08C
+lbl_8030F060:
+/* 8030F060 0030ACC0 3C A0 10 00 */ lis r5, 0x0FFFFFFF@ha
+/* 8030F064 0030ACC4 38 05 FF FF */ addi r0, r5, 0x0FFFFFFF@l
+/* 8030F068 0030ACC8 7C 06 00 40 */ cmplw r6, r0
+/* 8030F06C 0030ACCC 40 81 00 0C */ ble lbl_8030F078
+/* 8030F070 0030ACD0 38 60 00 10 */ li r3, 0x10
+/* 8030F074 0030ACD4 48 00 00 18 */ b lbl_8030F08C
+lbl_8030F078:
+/* 8030F078 0030ACD8 7F 65 DB 78 */ mr r5, r27
+/* 8030F07C 0030ACDC 7F 86 E3 78 */ mr r6, r28
+/* 8030F080 0030ACE0 48 00 35 B1 */ bl VFiPFFAT32_WriteFATEntryPage
+/* 8030F084 0030ACE4 48 00 00 08 */ b lbl_8030F08C
+lbl_8030F088:
+/* 8030F088 0030ACE8 38 60 00 0F */ li r3, 0xf
+lbl_8030F08C:
+/* 8030F08C 0030ACEC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F090 0030ACF0 41 82 00 08 */ beq lbl_8030F098
+/* 8030F094 0030ACF4 48 00 01 40 */ b lbl_8030F1D4
+lbl_8030F098:
+/* 8030F098 0030ACF8 80 BD 00 1C */ lwz r5, 0x1c(r29)
+/* 8030F09C 0030ACFC 2C 05 00 00 */ cmpwi r5, 0
+/* 8030F0A0 0030AD00 41 82 01 30 */ beq lbl_8030F1D0
+/* 8030F0A4 0030AD04 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030F0A8 0030AD08 28 00 00 01 */ cmplwi r0, 1
+/* 8030F0AC 0030AD0C 40 82 01 24 */ bne lbl_8030F1D0
+/* 8030F0B0 0030AD10 2C 1B 00 00 */ cmpwi r27, 0
+/* 8030F0B4 0030AD14 40 82 00 68 */ bne lbl_8030F11C
+/* 8030F0B8 0030AD18 A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030F0BC 0030AD1C 80 1D 00 28 */ lwz r0, 0x28(r29)
+/* 8030F0C0 0030AD20 38 83 00 01 */ addi r4, r3, 1
+/* 8030F0C4 0030AD24 7C 7F 23 96 */ divwu r3, r31, r4
+/* 8030F0C8 0030AD28 7C 00 18 40 */ cmplw r0, r3
+/* 8030F0CC 0030AD2C 41 80 01 04 */ blt lbl_8030F1D0
+/* 8030F0D0 0030AD30 7C 03 21 D6 */ mullw r0, r3, r4
+/* 8030F0D4 0030AD34 7C 00 F8 51 */ subf. r0, r0, r31
+/* 8030F0D8 0030AD38 40 82 00 10 */ bne lbl_8030F0E8
+/* 8030F0DC 0030AD3C 54 60 10 3A */ slwi r0, r3, 2
+/* 8030F0E0 0030AD40 38 60 00 00 */ li r3, 0
+/* 8030F0E4 0030AD44 7C 65 01 2E */ stwx r3, r5, r0
+lbl_8030F0E8:
+/* 8030F0E8 0030AD48 80 1D 00 2C */ lwz r0, 0x2c(r29)
+/* 8030F0EC 0030AD4C 7C 00 F8 40 */ cmplw r0, r31
+/* 8030F0F0 0030AD50 41 80 00 E0 */ blt lbl_8030F1D0
+/* 8030F0F4 0030AD54 A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030F0F8 0030AD58 38 9F FF FF */ addi r4, r31, -1
+/* 8030F0FC 0030AD5C 90 9D 00 2C */ stw r4, 0x2c(r29)
+/* 8030F100 0030AD60 38 03 00 01 */ addi r0, r3, 1
+/* 8030F104 0030AD64 7C 64 03 96 */ divwu r3, r4, r0
+/* 8030F108 0030AD68 7C 03 01 D6 */ mullw r0, r3, r0
+/* 8030F10C 0030AD6C 90 7D 00 24 */ stw r3, 0x24(r29)
+/* 8030F110 0030AD70 7C 00 20 50 */ subf r0, r0, r4
+/* 8030F114 0030AD74 B0 1D 00 22 */ sth r0, 0x22(r29)
+/* 8030F118 0030AD78 48 00 00 B8 */ b lbl_8030F1D0
+lbl_8030F11C:
+/* 8030F11C 0030AD7C 80 7D 00 34 */ lwz r3, 0x34(r29)
+/* 8030F120 0030AD80 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 8030F124 0030AD84 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 8030F128 0030AD88 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030F12C 0030AD8C 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030F130 0030AD90 7C 64 02 14 */ add r3, r4, r0
+/* 8030F134 0030AD94 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030F138 0030AD98 7C 1E 00 40 */ cmplw r30, r0
+/* 8030F13C 0030AD9C 41 82 00 94 */ beq lbl_8030F1D0
+/* 8030F140 0030ADA0 80 FC 00 00 */ lwz r7, 0(r28)
+/* 8030F144 0030ADA4 7F A3 EB 78 */ mr r3, r29
+/* 8030F148 0030ADA8 7F E4 FB 78 */ mr r4, r31
+/* 8030F14C 0030ADAC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030F150 0030ADB0 38 C1 00 08 */ addi r6, r1, 8
+/* 8030F154 0030ADB4 4B FF F8 D5 */ bl VFiPFFAT_FindClusterLinkPage
+/* 8030F158 0030ADB8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F15C 0030ADBC 41 82 00 08 */ beq lbl_8030F164
+/* 8030F160 0030ADC0 48 00 00 74 */ b lbl_8030F1D4
+lbl_8030F164:
+/* 8030F164 0030ADC4 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030F168 0030ADC8 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F16C 0030ADCC 40 82 00 64 */ bne lbl_8030F1D0
+/* 8030F170 0030ADD0 80 9D 00 24 */ lwz r4, 0x24(r29)
+/* 8030F174 0030ADD4 80 1D 00 28 */ lwz r0, 0x28(r29)
+/* 8030F178 0030ADD8 7C 00 20 40 */ cmplw r0, r4
+/* 8030F17C 0030ADDC 40 81 00 54 */ ble lbl_8030F1D0
+/* 8030F180 0030ADE0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F184 0030ADE4 41 82 00 4C */ beq lbl_8030F1D0
+/* 8030F188 0030ADE8 A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030F18C 0030ADEC 38 03 00 01 */ addi r0, r3, 1
+/* 8030F190 0030ADF0 7C 04 01 D6 */ mullw r0, r4, r0
+/* 8030F194 0030ADF4 7C 1F 00 40 */ cmplw r31, r0
+/* 8030F198 0030ADF8 40 82 00 28 */ bne lbl_8030F1C0
+/* 8030F19C 0030ADFC 38 00 00 00 */ li r0, 0
+/* 8030F1A0 0030AE00 80 7D 00 1C */ lwz r3, 0x1c(r29)
+/* 8030F1A4 0030AE04 B0 1D 00 22 */ sth r0, 0x22(r29)
+/* 8030F1A8 0030AE08 54 80 10 3A */ slwi r0, r4, 2
+/* 8030F1AC 0030AE0C 7F C3 01 2E */ stwx r30, r3, r0
+/* 8030F1B0 0030AE10 80 7D 00 24 */ lwz r3, 0x24(r29)
+/* 8030F1B4 0030AE14 38 03 00 01 */ addi r0, r3, 1
+/* 8030F1B8 0030AE18 90 1D 00 24 */ stw r0, 0x24(r29)
+/* 8030F1BC 0030AE1C 48 00 00 10 */ b lbl_8030F1CC
+lbl_8030F1C0:
+/* 8030F1C0 0030AE20 A0 7D 00 22 */ lhz r3, 0x22(r29)
+/* 8030F1C4 0030AE24 38 03 00 01 */ addi r0, r3, 1
+/* 8030F1C8 0030AE28 B0 1D 00 22 */ sth r0, 0x22(r29)
+lbl_8030F1CC:
+/* 8030F1CC 0030AE2C 93 FD 00 2C */ stw r31, 0x2c(r29)
+lbl_8030F1D0:
+/* 8030F1D0 0030AE30 38 60 00 00 */ li r3, 0
+lbl_8030F1D4:
+/* 8030F1D4 0030AE34 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030F1D8 0030AE38 4B EB 7F 9D */ bl _restgpr_27
+/* 8030F1DC 0030AE3C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030F1E0 0030AE40 7C 08 03 A6 */ mtlr r0
+/* 8030F1E4 0030AE44 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030F1E8 0030AE48 4E 80 00 20 */ blr
+
+.global VFiPFFAT_DoAllocateChain
+VFiPFFAT_DoAllocateChain:
+/* 8030F1EC 0030AE4C 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030F1F0 0030AE50 7C 08 02 A6 */ mflr r0
+/* 8030F1F4 0030AE54 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030F1F8 0030AE58 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030F1FC 0030AE5C 4B EB 7F 25 */ bl _savegpr_25
+/* 8030F200 0030AE60 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 8030F204 0030AE64 7C 79 1B 78 */ mr r25, r3
+/* 8030F208 0030AE68 3D 00 80 40 */ lis r8, lbl_803FE280@ha
+/* 8030F20C 0030AE6C 38 00 FF FF */ li r0, -1
+/* 8030F210 0030AE70 80 7F 00 1C */ lwz r3, 0x1c(r31)
+/* 8030F214 0030AE74 39 08 E2 80 */ addi r8, r8, lbl_803FE280@l
+/* 8030F218 0030AE78 7C BA 2B 78 */ mr r26, r5
+/* 8030F21C 0030AE7C 7C DB 33 78 */ mr r27, r6
+/* 8030F220 0030AE80 90 06 00 00 */ stw r0, 0(r6)
+/* 8030F224 0030AE84 1C 63 00 14 */ mulli r3, r3, 0x14
+/* 8030F228 0030AE88 7C 86 23 78 */ mr r6, r4
+/* 8030F22C 0030AE8C 90 07 00 00 */ stw r0, 0(r7)
+/* 8030F230 0030AE90 7C FC 3B 78 */ mr r28, r7
+/* 8030F234 0030AE94 7C A8 1A 14 */ add r5, r8, r3
+/* 8030F238 0030AE98 38 E1 00 10 */ addi r7, r1, 0x10
+/* 8030F23C 0030AE9C 90 01 00 0C */ stw r0, 0xc(r1)
+/* 8030F240 0030AEA0 7F E3 FB 78 */ mr r3, r31
+/* 8030F244 0030AEA4 83 C5 00 08 */ lwz r30, 8(r5)
+/* 8030F248 0030AEA8 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030F24C 0030AEAC 80 9F 00 3C */ lwz r4, 0x3c(r31)
+/* 8030F250 0030AEB0 38 A0 FF FF */ li r5, -1
+/* 8030F254 0030AEB4 4B FF F4 15 */ bl VFiPFFAT_SearchForNumFreeClusters
+/* 8030F258 0030AEB8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F25C 0030AEBC 41 82 00 08 */ beq lbl_8030F264
+/* 8030F260 0030AEC0 48 00 02 20 */ b lbl_8030F480
+lbl_8030F264:
+/* 8030F264 0030AEC4 80 A1 00 10 */ lwz r5, 0x10(r1)
+/* 8030F268 0030AEC8 3C 05 00 01 */ addis r0, r5, 1
+/* 8030F26C 0030AECC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F270 0030AED0 40 82 00 0C */ bne lbl_8030F27C
+/* 8030F274 0030AED4 38 60 00 00 */ li r3, 0
+/* 8030F278 0030AED8 48 00 02 08 */ b lbl_8030F480
+lbl_8030F27C:
+/* 8030F27C 0030AEDC 7F E3 FB 78 */ mr r3, r31
+/* 8030F280 0030AEE0 38 81 00 08 */ addi r4, r1, 8
+/* 8030F284 0030AEE4 4B FF F2 B5 */ bl VFiPFFAT_ReadFATSector
+/* 8030F288 0030AEE8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F28C 0030AEEC 41 82 00 08 */ beq lbl_8030F294
+/* 8030F290 0030AEF0 48 00 01 F0 */ b lbl_8030F480
+lbl_8030F294:
+/* 8030F294 0030AEF4 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030F298 0030AEF8 38 00 00 00 */ li r0, 0
+/* 8030F29C 0030AEFC B0 03 00 02 */ sth r0, 2(r3)
+/* 8030F2A0 0030AF00 83 A1 00 10 */ lwz r29, 0x10(r1)
+/* 8030F2A4 0030AF04 48 00 00 98 */ b lbl_8030F33C
+lbl_8030F2A8:
+/* 8030F2A8 0030AF08 7F 23 CB 78 */ mr r3, r25
+/* 8030F2AC 0030AF0C 7F A4 EB 78 */ mr r4, r29
+/* 8030F2B0 0030AF10 7F 45 D3 78 */ mr r5, r26
+/* 8030F2B4 0030AF14 38 DD 00 01 */ addi r6, r29, 1
+/* 8030F2B8 0030AF18 39 01 00 08 */ addi r8, r1, 8
+/* 8030F2BC 0030AF1C 38 E0 00 01 */ li r7, 1
+/* 8030F2C0 0030AF20 4B FF FD 05 */ bl VFiPFFAT_WriteClusterPage
+/* 8030F2C4 0030AF24 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F2C8 0030AF28 41 82 00 08 */ beq lbl_8030F2D0
+/* 8030F2CC 0030AF2C 48 00 01 B4 */ b lbl_8030F480
+lbl_8030F2D0:
+/* 8030F2D0 0030AF30 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8030F2D4 0030AF34 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 8030F2D8 0030AF38 41 82 00 44 */ beq lbl_8030F31C
+/* 8030F2DC 0030AF3C 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 8030F2E0 0030AF40 3C 03 00 01 */ addis r0, r3, 1
+/* 8030F2E4 0030AF44 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F2E8 0030AF48 41 82 00 34 */ beq lbl_8030F31C
+/* 8030F2EC 0030AF4C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F2F0 0030AF50 41 82 00 2C */ beq lbl_8030F31C
+/* 8030F2F4 0030AF54 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8030F2F8 0030AF58 2C 00 00 02 */ cmpwi r0, 2
+/* 8030F2FC 0030AF5C 40 82 00 14 */ bne lbl_8030F310
+/* 8030F300 0030AF60 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030F304 0030AF64 80 1F 00 10 */ lwz r0, 0x10(r31)
+/* 8030F308 0030AF68 7C 03 00 40 */ cmplw r3, r0
+/* 8030F30C 0030AF6C 41 82 00 10 */ beq lbl_8030F31C
+lbl_8030F310:
+/* 8030F310 0030AF70 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 8030F314 0030AF74 38 03 FF FF */ addi r0, r3, -1
+/* 8030F318 0030AF78 90 1F 00 38 */ stw r0, 0x38(r31)
+lbl_8030F31C:
+/* 8030F31C 0030AF7C 80 7B 00 00 */ lwz r3, 0(r27)
+/* 8030F320 0030AF80 3C 03 00 01 */ addis r0, r3, 1
+/* 8030F324 0030AF84 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F328 0030AF88 40 82 00 08 */ bne lbl_8030F330
+/* 8030F32C 0030AF8C 93 BB 00 00 */ stw r29, 0(r27)
+lbl_8030F330:
+/* 8030F330 0030AF90 93 BC 00 00 */ stw r29, 0(r28)
+/* 8030F334 0030AF94 3B 5A 00 01 */ addi r26, r26, 1
+/* 8030F338 0030AF98 3B BD 00 01 */ addi r29, r29, 1
+lbl_8030F33C:
+/* 8030F33C 0030AF9C 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030F340 0030AFA0 7C 1D 20 40 */ cmplw r29, r4
+/* 8030F344 0030AFA4 41 80 FF 64 */ blt lbl_8030F2A8
+/* 8030F348 0030AFA8 3C 04 00 01 */ addis r0, r4, 1
+/* 8030F34C 0030AFAC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F350 0030AFB0 41 82 00 80 */ beq lbl_8030F3D0
+/* 8030F354 0030AFB4 7F 23 CB 78 */ mr r3, r25
+/* 8030F358 0030AFB8 7F 45 D3 78 */ mr r5, r26
+/* 8030F35C 0030AFBC 7F C6 F3 78 */ mr r6, r30
+/* 8030F360 0030AFC0 39 01 00 08 */ addi r8, r1, 8
+/* 8030F364 0030AFC4 38 E0 00 01 */ li r7, 1
+/* 8030F368 0030AFC8 4B FF FC 5D */ bl VFiPFFAT_WriteClusterPage
+/* 8030F36C 0030AFCC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F370 0030AFD0 41 82 00 08 */ beq lbl_8030F378
+/* 8030F374 0030AFD4 48 00 01 0C */ b lbl_8030F480
+lbl_8030F378:
+/* 8030F378 0030AFD8 80 7B 00 00 */ lwz r3, 0(r27)
+/* 8030F37C 0030AFDC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030F380 0030AFE0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F384 0030AFE4 40 82 00 08 */ bne lbl_8030F38C
+/* 8030F388 0030AFE8 93 BB 00 00 */ stw r29, 0(r27)
+lbl_8030F38C:
+/* 8030F38C 0030AFEC 93 BC 00 00 */ stw r29, 0(r28)
+/* 8030F390 0030AFF0 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 8030F394 0030AFF4 3C 03 00 01 */ addis r0, r3, 1
+/* 8030F398 0030AFF8 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F39C 0030AFFC 41 82 00 34 */ beq lbl_8030F3D0
+/* 8030F3A0 0030B000 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F3A4 0030B004 41 82 00 2C */ beq lbl_8030F3D0
+/* 8030F3A8 0030B008 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8030F3AC 0030B00C 2C 00 00 02 */ cmpwi r0, 2
+/* 8030F3B0 0030B010 40 82 00 14 */ bne lbl_8030F3C4
+/* 8030F3B4 0030B014 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030F3B8 0030B018 80 1F 00 10 */ lwz r0, 0x10(r31)
+/* 8030F3BC 0030B01C 7C 03 00 40 */ cmplw r3, r0
+/* 8030F3C0 0030B020 41 82 00 10 */ beq lbl_8030F3D0
+lbl_8030F3C4:
+/* 8030F3C4 0030B024 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 8030F3C8 0030B028 38 03 FF FF */ addi r0, r3, -1
+/* 8030F3CC 0030B02C 90 1F 00 38 */ stw r0, 0x38(r31)
+lbl_8030F3D0:
+/* 8030F3D0 0030B030 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030F3D4 0030B034 38 60 00 00 */ li r3, 0
+/* 8030F3D8 0030B038 38 04 00 01 */ addi r0, r4, 1
+/* 8030F3DC 0030B03C 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 8030F3E0 0030B040 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030F3E4 0030B044 90 19 00 0C */ stw r0, 0xc(r25)
+/* 8030F3E8 0030B048 93 59 00 10 */ stw r26, 0x10(r25)
+/* 8030F3EC 0030B04C 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030F3F0 0030B050 90 1C 00 00 */ stw r0, 0(r28)
+/* 8030F3F4 0030B054 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030F3F8 0030B058 A0 04 00 00 */ lhz r0, 0(r4)
+/* 8030F3FC 0030B05C 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030F400 0030B060 2C 00 00 02 */ cmpwi r0, 2
+/* 8030F404 0030B064 40 82 00 0C */ bne lbl_8030F410
+/* 8030F408 0030B068 7F E3 FB 78 */ mr r3, r31
+/* 8030F40C 0030B06C 4B FF B5 71 */ bl VFiPFCACHE_WriteFATPage
+lbl_8030F410:
+/* 8030F410 0030B070 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F414 0030B074 41 82 00 08 */ beq lbl_8030F41C
+/* 8030F418 0030B078 48 00 00 68 */ b lbl_8030F480
+lbl_8030F41C:
+/* 8030F41C 0030B07C 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8030F420 0030B080 2C 80 00 02 */ cmpwi cr1, r0, 2
+/* 8030F424 0030B084 40 86 00 58 */ bne cr1, lbl_8030F47C
+/* 8030F428 0030B088 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8030F42C 0030B08C 54 03 07 BD */ rlwinm. r3, r0, 0, 0x1e, 0x1e
+/* 8030F430 0030B090 41 82 00 4C */ beq lbl_8030F47C
+/* 8030F434 0030B094 38 60 00 00 */ li r3, 0
+/* 8030F438 0030B098 41 86 00 0C */ beq cr1, lbl_8030F444
+/* 8030F43C 0030B09C 38 60 00 0C */ li r3, 0xc
+/* 8030F440 0030B0A0 48 00 00 20 */ b lbl_8030F460
+lbl_8030F444:
+/* 8030F444 0030B0A4 40 82 00 0C */ bne lbl_8030F450
+/* 8030F448 0030B0A8 38 60 00 24 */ li r3, 0x24
+/* 8030F44C 0030B0AC 48 00 00 14 */ b lbl_8030F460
+lbl_8030F450:
+/* 8030F450 0030B0B0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 8030F454 0030B0B4 41 82 00 0C */ beq lbl_8030F460
+/* 8030F458 0030B0B8 7F E3 FB 78 */ mr r3, r31
+/* 8030F45C 0030B0BC 4B FF 67 41 */ bl VFiPFDRV_StoreFreeCountToFSINFO
+lbl_8030F460:
+/* 8030F460 0030B0C0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F464 0030B0C4 41 82 00 18 */ beq lbl_8030F47C
+/* 8030F468 0030B0C8 38 00 FF FF */ li r0, -1
+/* 8030F46C 0030B0CC 90 1F 00 38 */ stw r0, 0x38(r31)
+/* 8030F470 0030B0D0 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8030F474 0030B0D4 54 00 07 B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c
+/* 8030F478 0030B0D8 B0 1F 18 7C */ sth r0, 0x187c(r31)
+lbl_8030F47C:
+/* 8030F47C 0030B0DC 38 60 00 00 */ li r3, 0
+lbl_8030F480:
+/* 8030F480 0030B0E0 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030F484 0030B0E4 4B EB 7C E9 */ bl _restgpr_25
+/* 8030F488 0030B0E8 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030F48C 0030B0EC 7C 08 03 A6 */ mtlr r0
+/* 8030F490 0030B0F0 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030F494 0030B0F4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetClusterInChain
+VFiPFFAT_GetClusterInChain:
+/* 8030F498 0030B0F8 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 8030F49C 0030B0FC 7C 08 02 A6 */ mflr r0
+/* 8030F4A0 0030B100 90 01 00 54 */ stw r0, 0x54(r1)
+/* 8030F4A4 0030B104 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030F4A8 0030B108 4B EB 7C 69 */ bl _savegpr_21
+/* 8030F4AC 0030B10C 38 00 00 00 */ li r0, 0
+/* 8030F4B0 0030B110 3D 20 80 40 */ lis r9, lbl_803FE280@ha
+/* 8030F4B4 0030B114 90 01 00 08 */ stw r0, 8(r1)
+/* 8030F4B8 0030B118 38 00 FF FF */ li r0, -1
+/* 8030F4BC 0030B11C 7D 19 43 78 */ mr r25, r8
+/* 8030F4C0 0030B120 39 29 E2 80 */ addi r9, r9, lbl_803FE280@l
+/* 8030F4C4 0030B124 81 43 00 34 */ lwz r10, 0x34(r3)
+/* 8030F4C8 0030B128 7C F8 3B 78 */ mr r24, r7
+/* 8030F4CC 0030B12C 7C 76 1B 78 */ mr r22, r3
+/* 8030F4D0 0030B130 7C B7 2B 78 */ mr r23, r5
+/* 8030F4D4 0030B134 81 4A 00 1C */ lwz r10, 0x1c(r10)
+/* 8030F4D8 0030B138 90 08 00 00 */ stw r0, 0(r8)
+/* 8030F4DC 0030B13C 1D 0A 00 14 */ mulli r8, r10, 0x14
+/* 8030F4E0 0030B140 90 07 00 00 */ stw r0, 0(r7)
+/* 8030F4E4 0030B144 7C E9 42 14 */ add r7, r9, r8
+/* 8030F4E8 0030B148 7F E9 40 2E */ lwzx r31, r9, r8
+/* 8030F4EC 0030B14C 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8030F4F0 0030B150 83 C7 00 04 */ lwz r30, 4(r7)
+/* 8030F4F4 0030B154 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F4F8 0030B158 41 82 00 28 */ beq lbl_8030F520
+/* 8030F4FC 0030B15C 7C 00 20 40 */ cmplw r0, r4
+/* 8030F500 0030B160 41 81 00 20 */ bgt lbl_8030F520
+/* 8030F504 0030B164 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8030F508 0030B168 3B 41 00 10 */ addi r26, r1, 0x10
+/* 8030F50C 0030B16C 90 01 00 10 */ stw r0, 0x10(r1)
+/* 8030F510 0030B170 80 E3 00 14 */ lwz r7, 0x14(r3)
+/* 8030F514 0030B174 7F 87 20 50 */ subf r28, r7, r4
+/* 8030F518 0030B178 3B 67 00 01 */ addi r27, r7, 1
+/* 8030F51C 0030B17C 48 00 00 10 */ b lbl_8030F52C
+lbl_8030F520:
+/* 8030F520 0030B180 83 43 00 08 */ lwz r26, 8(r3)
+/* 8030F524 0030B184 7C 9C 23 78 */ mr r28, r4
+/* 8030F528 0030B188 3B 60 00 01 */ li r27, 1
+lbl_8030F52C:
+/* 8030F52C 0030B18C 83 BA 00 00 */ lwz r29, 0(r26)
+/* 8030F530 0030B190 28 05 00 02 */ cmplwi r5, 2
+/* 8030F534 0030B194 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030F538 0030B198 40 82 00 74 */ bne lbl_8030F5AC
+/* 8030F53C 0030B19C 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030F540 0030B1A0 41 82 00 18 */ beq lbl_8030F558
+/* 8030F544 0030B1A4 2C 06 00 00 */ cmpwi r6, 0
+/* 8030F548 0030B1A8 41 82 00 10 */ beq lbl_8030F558
+/* 8030F54C 0030B1AC 7C BC 32 14 */ add r5, r28, r6
+/* 8030F550 0030B1B0 3B 85 FF FF */ addi r28, r5, -1
+/* 8030F554 0030B1B4 48 00 00 08 */ b lbl_8030F55C
+lbl_8030F558:
+/* 8030F558 0030B1B8 7C DC 33 78 */ mr r28, r6
+lbl_8030F55C:
+/* 8030F55C 0030B1BC 81 23 00 0C */ lwz r9, 0xc(r3)
+/* 8030F560 0030B1C0 7F 88 E3 78 */ mr r8, r28
+/* 8030F564 0030B1C4 2C 09 00 00 */ cmpwi r9, 0
+/* 8030F568 0030B1C8 41 82 00 5C */ beq lbl_8030F5C4
+/* 8030F56C 0030B1CC 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 8030F570 0030B1D0 3C E0 80 40 */ lis r7, lbl_803FE280@ha
+/* 8030F574 0030B1D4 81 03 00 10 */ lwz r8, 0x10(r3)
+/* 8030F578 0030B1D8 38 E7 E2 80 */ addi r7, r7, lbl_803FE280@l
+/* 8030F57C 0030B1DC 80 05 00 1C */ lwz r0, 0x1c(r5)
+/* 8030F580 0030B1E0 7D 3D 4B 78 */ mr r29, r9
+/* 8030F584 0030B1E4 7C A8 32 14 */ add r5, r8, r6
+/* 8030F588 0030B1E8 3B 80 00 00 */ li r28, 0
+/* 8030F58C 0030B1EC 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030F590 0030B1F0 7D 04 28 50 */ subf r8, r4, r5
+/* 8030F594 0030B1F4 7C 87 02 14 */ add r4, r7, r0
+/* 8030F598 0030B1F8 80 04 00 08 */ lwz r0, 8(r4)
+/* 8030F59C 0030B1FC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030F5A0 0030B200 80 83 00 10 */ lwz r4, 0x10(r3)
+/* 8030F5A4 0030B204 3B 64 00 01 */ addi r27, r4, 1
+/* 8030F5A8 0030B208 48 00 00 1C */ b lbl_8030F5C4
+lbl_8030F5AC:
+/* 8030F5AC 0030B20C 28 05 00 01 */ cmplwi r5, 1
+/* 8030F5B0 0030B210 40 82 00 10 */ bne lbl_8030F5C0
+/* 8030F5B4 0030B214 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030F5B8 0030B218 40 82 00 08 */ bne lbl_8030F5C0
+/* 8030F5BC 0030B21C 3B 9C 00 01 */ addi r28, r28, 1
+lbl_8030F5C0:
+/* 8030F5C0 0030B220 7F 88 E3 78 */ mr r8, r28
+lbl_8030F5C4:
+/* 8030F5C4 0030B224 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030F5C8 0030B228 41 82 00 FC */ beq lbl_8030F6C4
+/* 8030F5CC 0030B22C 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030F5D0 0030B230 7F A5 EB 78 */ mr r5, r29
+/* 8030F5D4 0030B234 38 81 00 08 */ addi r4, r1, 8
+/* 8030F5D8 0030B238 4B FF EF 61 */ bl VFiPFFAT_ReadFATSector
+/* 8030F5DC 0030B23C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F5E0 0030B240 41 82 00 08 */ beq lbl_8030F5E8
+/* 8030F5E4 0030B244 48 00 01 C4 */ b lbl_8030F7A8
+lbl_8030F5E8:
+/* 8030F5E8 0030B248 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030F5EC 0030B24C 38 80 00 00 */ li r4, 0
+/* 8030F5F0 0030B250 3E A0 80 40 */ lis r21, lbl_803FE280@ha
+/* 8030F5F4 0030B254 38 00 00 01 */ li r0, 1
+/* 8030F5F8 0030B258 B0 83 00 02 */ sth r4, 2(r3)
+/* 8030F5FC 0030B25C 3A B5 E2 80 */ addi r21, r21, lbl_803FE280@l
+/* 8030F600 0030B260 90 01 00 0C */ stw r0, 0xc(r1)
+/* 8030F604 0030B264 48 00 00 A8 */ b lbl_8030F6AC
+lbl_8030F608:
+/* 8030F608 0030B268 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030F60C 0030B26C 41 82 00 3C */ beq lbl_8030F648
+/* 8030F610 0030B270 7E C3 B3 78 */ mr r3, r22
+/* 8030F614 0030B274 7F A4 EB 78 */ mr r4, r29
+/* 8030F618 0030B278 7F 65 DB 78 */ mr r5, r27
+/* 8030F61C 0030B27C 38 C1 00 14 */ addi r6, r1, 0x14
+/* 8030F620 0030B280 38 E1 00 0C */ addi r7, r1, 0xc
+/* 8030F624 0030B284 39 01 00 08 */ addi r8, r1, 8
+/* 8030F628 0030B288 4B FF F5 AD */ bl VFiPFFAT_ReadClusterPage
+/* 8030F62C 0030B28C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F630 0030B290 41 82 00 34 */ beq lbl_8030F664
+/* 8030F634 0030B294 80 81 00 14 */ lwz r4, 0x14(r1)
+/* 8030F638 0030B298 3C 04 00 01 */ addis r0, r4, 1
+/* 8030F63C 0030B29C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F640 0030B2A0 41 82 00 24 */ beq lbl_8030F664
+/* 8030F644 0030B2A4 48 00 01 64 */ b lbl_8030F7A8
+lbl_8030F648:
+/* 8030F648 0030B2A8 80 76 00 34 */ lwz r3, 0x34(r22)
+/* 8030F64C 0030B2AC 3B 7B FF FF */ addi r27, r27, -1
+/* 8030F650 0030B2B0 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030F654 0030B2B4 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030F658 0030B2B8 7C 75 02 14 */ add r3, r21, r0
+/* 8030F65C 0030B2BC 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030F660 0030B2C0 90 01 00 14 */ stw r0, 0x14(r1)
+lbl_8030F664:
+/* 8030F664 0030B2C4 80 81 00 14 */ lwz r4, 0x14(r1)
+/* 8030F668 0030B2C8 28 04 00 02 */ cmplwi r4, 2
+/* 8030F66C 0030B2CC 41 80 00 18 */ blt lbl_8030F684
+/* 8030F670 0030B2D0 80 76 00 34 */ lwz r3, 0x34(r22)
+/* 8030F674 0030B2D4 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030F678 0030B2D8 38 03 00 02 */ addi r0, r3, 2
+/* 8030F67C 0030B2DC 7C 04 00 40 */ cmplw r4, r0
+/* 8030F680 0030B2E0 41 80 00 14 */ blt lbl_8030F694
+lbl_8030F684:
+/* 8030F684 0030B2E4 7C 04 F0 40 */ cmplw r4, r30
+/* 8030F688 0030B2E8 40 80 00 0C */ bge lbl_8030F694
+/* 8030F68C 0030B2EC 38 60 00 0E */ li r3, 0xe
+/* 8030F690 0030B2F0 48 00 01 18 */ b lbl_8030F7A8
+lbl_8030F694:
+/* 8030F694 0030B2F4 2C 17 00 00 */ cmpwi r23, 0
+/* 8030F698 0030B2F8 41 82 00 0C */ beq lbl_8030F6A4
+/* 8030F69C 0030B2FC 7C 04 F0 40 */ cmplw r4, r30
+/* 8030F6A0 0030B300 40 80 00 20 */ bge lbl_8030F6C0
+lbl_8030F6A4:
+/* 8030F6A4 0030B304 7C 9D 23 78 */ mr r29, r4
+/* 8030F6A8 0030B308 3B 7B 00 01 */ addi r27, r27, 1
+lbl_8030F6AC:
+/* 8030F6AC 0030B30C 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030F6B0 0030B310 3B 9C FF FF */ addi r28, r28, -1
+/* 8030F6B4 0030B314 41 82 00 0C */ beq lbl_8030F6C0
+/* 8030F6B8 0030B318 7C 1D F8 40 */ cmplw r29, r31
+/* 8030F6BC 0030B31C 41 80 FF 4C */ blt lbl_8030F608
+lbl_8030F6C0:
+/* 8030F6C0 0030B320 7F 88 E3 78 */ mr r8, r28
+lbl_8030F6C4:
+/* 8030F6C4 0030B324 2C 17 00 00 */ cmpwi r23, 0
+/* 8030F6C8 0030B328 41 82 00 D8 */ beq lbl_8030F7A0
+/* 8030F6CC 0030B32C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030F6D0 0030B330 7C 00 F0 40 */ cmplw r0, r30
+/* 8030F6D4 0030B334 41 80 00 CC */ blt lbl_8030F7A0
+/* 8030F6D8 0030B338 38 00 00 00 */ li r0, 0
+/* 8030F6DC 0030B33C 7E C3 B3 78 */ mr r3, r22
+/* 8030F6E0 0030B340 90 18 00 00 */ stw r0, 0(r24)
+/* 8030F6E4 0030B344 7F 65 DB 78 */ mr r5, r27
+/* 8030F6E8 0030B348 7F 06 C3 78 */ mr r6, r24
+/* 8030F6EC 0030B34C 38 88 00 01 */ addi r4, r8, 1
+/* 8030F6F0 0030B350 38 E1 00 14 */ addi r7, r1, 0x14
+/* 8030F6F4 0030B354 4B FF FA F9 */ bl VFiPFFAT_DoAllocateChain
+/* 8030F6F8 0030B358 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F6FC 0030B35C 7C 75 1B 78 */ mr r21, r3
+/* 8030F700 0030B360 41 82 00 34 */ beq lbl_8030F734
+/* 8030F704 0030B364 80 98 00 00 */ lwz r4, 0(r24)
+/* 8030F708 0030B368 3C 04 00 01 */ addis r0, r4, 1
+/* 8030F70C 0030B36C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F710 0030B370 41 82 00 14 */ beq lbl_8030F724
+/* 8030F714 0030B374 7E C3 B3 78 */ mr r3, r22
+/* 8030F718 0030B378 7F 65 DB 78 */ mr r5, r27
+/* 8030F71C 0030B37C 38 C0 FF FF */ li r6, -1
+/* 8030F720 0030B380 48 00 0D 09 */ bl VFiPFFAT_FreeChain
+lbl_8030F724:
+/* 8030F724 0030B384 38 00 FF FF */ li r0, -1
+/* 8030F728 0030B388 90 18 00 00 */ stw r0, 0(r24)
+/* 8030F72C 0030B38C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030F730 0030B390 48 00 00 08 */ b lbl_8030F738
+lbl_8030F734:
+/* 8030F734 0030B394 3A A0 00 00 */ li r21, 0
+lbl_8030F738:
+/* 8030F738 0030B398 2C 15 00 00 */ cmpwi r21, 0
+/* 8030F73C 0030B39C 41 82 00 0C */ beq lbl_8030F748
+/* 8030F740 0030B3A0 7E A3 AB 78 */ mr r3, r21
+/* 8030F744 0030B3A4 48 00 00 64 */ b lbl_8030F7A8
+lbl_8030F748:
+/* 8030F748 0030B3A8 80 61 00 14 */ lwz r3, 0x14(r1)
+/* 8030F74C 0030B3AC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030F750 0030B3B0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F754 0030B3B4 40 82 00 0C */ bne lbl_8030F760
+/* 8030F758 0030B3B8 38 60 00 06 */ li r3, 6
+/* 8030F75C 0030B3BC 48 00 00 4C */ b lbl_8030F7A8
+lbl_8030F760:
+/* 8030F760 0030B3C0 80 1A 00 00 */ lwz r0, 0(r26)
+/* 8030F764 0030B3C4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F768 0030B3C8 40 82 00 10 */ bne lbl_8030F778
+/* 8030F76C 0030B3CC 80 18 00 00 */ lwz r0, 0(r24)
+/* 8030F770 0030B3D0 90 1A 00 00 */ stw r0, 0(r26)
+/* 8030F774 0030B3D4 48 00 00 28 */ b lbl_8030F79C
+lbl_8030F778:
+/* 8030F778 0030B3D8 80 D8 00 00 */ lwz r6, 0(r24)
+/* 8030F77C 0030B3DC 7E C3 B3 78 */ mr r3, r22
+/* 8030F780 0030B3E0 7F A4 EB 78 */ mr r4, r29
+/* 8030F784 0030B3E4 38 BB FF FF */ addi r5, r27, -1
+/* 8030F788 0030B3E8 38 E0 00 01 */ li r7, 1
+/* 8030F78C 0030B3EC 4B FF F6 15 */ bl VFiPFFAT_WriteCluster
+/* 8030F790 0030B3F0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F794 0030B3F4 41 82 00 08 */ beq lbl_8030F79C
+/* 8030F798 0030B3F8 48 00 00 10 */ b lbl_8030F7A8
+lbl_8030F79C:
+/* 8030F79C 0030B3FC 83 A1 00 14 */ lwz r29, 0x14(r1)
+lbl_8030F7A0:
+/* 8030F7A0 0030B400 93 B9 00 00 */ stw r29, 0(r25)
+/* 8030F7A4 0030B404 38 60 00 00 */ li r3, 0
+lbl_8030F7A8:
+/* 8030F7A8 0030B408 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030F7AC 0030B40C 4B EB 79 B1 */ bl _restgpr_21
+/* 8030F7B0 0030B410 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 8030F7B4 0030B414 7C 08 03 A6 */ mtlr r0
+/* 8030F7B8 0030B418 38 21 00 50 */ addi r1, r1, 0x50
+/* 8030F7BC 0030B41C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetClusterContinuousSectorInChain
+VFiPFFAT_GetClusterContinuousSectorInChain:
+/* 8030F7C0 0030B420 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030F7C4 0030B424 7C 08 02 A6 */ mflr r0
+/* 8030F7C8 0030B428 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030F7CC 0030B42C 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030F7D0 0030B430 4B EB 79 55 */ bl _savegpr_26
+/* 8030F7D4 0030B434 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 8030F7D8 0030B438 39 00 FF FF */ li r8, -1
+/* 8030F7DC 0030B43C 38 00 00 01 */ li r0, 1
+/* 8030F7E0 0030B440 7C 7B 1B 78 */ mr r27, r3
+/* 8030F7E4 0030B444 91 01 00 10 */ stw r8, 0x10(r1)
+/* 8030F7E8 0030B448 7C BC 2B 78 */ mr r28, r5
+/* 8030F7EC 0030B44C 7C DD 33 78 */ mr r29, r6
+/* 8030F7F0 0030B450 7C FE 3B 78 */ mr r30, r7
+/* 8030F7F4 0030B454 90 01 00 0C */ stw r0, 0xc(r1)
+/* 8030F7F8 0030B458 7C 9A 23 78 */ mr r26, r4
+/* 8030F7FC 0030B45C 7C 85 23 78 */ mr r5, r4
+/* 8030F800 0030B460 7F E3 FB 78 */ mr r3, r31
+/* 8030F804 0030B464 38 81 00 08 */ addi r4, r1, 8
+/* 8030F808 0030B468 4B FF ED 31 */ bl VFiPFFAT_ReadFATSector
+/* 8030F80C 0030B46C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F810 0030B470 41 82 00 B8 */ beq lbl_8030F8C8
+/* 8030F814 0030B474 48 00 00 C4 */ b lbl_8030F8D8
+/* 8030F818 0030B478 48 00 00 B0 */ b lbl_8030F8C8
+lbl_8030F81C:
+/* 8030F81C 0030B47C 7F 63 DB 78 */ mr r3, r27
+/* 8030F820 0030B480 7F 44 D3 78 */ mr r4, r26
+/* 8030F824 0030B484 7F 85 E3 78 */ mr r5, r28
+/* 8030F828 0030B488 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030F82C 0030B48C 38 E1 00 0C */ addi r7, r1, 0xc
+/* 8030F830 0030B490 39 01 00 08 */ addi r8, r1, 8
+/* 8030F834 0030B494 4B FF F3 A1 */ bl VFiPFFAT_ReadClusterPage
+/* 8030F838 0030B498 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F83C 0030B49C 41 82 00 08 */ beq lbl_8030F844
+/* 8030F840 0030B4A0 48 00 00 98 */ b lbl_8030F8D8
+lbl_8030F844:
+/* 8030F844 0030B4A4 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 8030F848 0030B4A8 38 1A 00 01 */ addi r0, r26, 1
+/* 8030F84C 0030B4AC 7C 00 20 40 */ cmplw r0, r4
+/* 8030F850 0030B4B0 41 82 00 34 */ beq lbl_8030F884
+/* 8030F854 0030B4B4 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8030F858 0030B4B8 3C 60 80 40 */ lis r3, lbl_803FE280@ha
+/* 8030F85C 0030B4BC 38 63 E2 80 */ addi r3, r3, lbl_803FE280@l
+/* 8030F860 0030B4C0 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030F864 0030B4C4 7C 63 02 14 */ add r3, r3, r0
+/* 8030F868 0030B4C8 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030F86C 0030B4CC 7C 04 00 40 */ cmplw r4, r0
+/* 8030F870 0030B4D0 40 82 00 64 */ bne lbl_8030F8D4
+/* 8030F874 0030B4D4 38 1C FF FF */ addi r0, r28, -1
+/* 8030F878 0030B4D8 93 5B 00 0C */ stw r26, 0xc(r27)
+/* 8030F87C 0030B4DC 90 1B 00 10 */ stw r0, 0x10(r27)
+/* 8030F880 0030B4E0 48 00 00 54 */ b lbl_8030F8D4
+lbl_8030F884:
+/* 8030F884 0030B4E4 80 9B 00 30 */ lwz r4, 0x30(r27)
+/* 8030F888 0030B4E8 80 64 00 00 */ lwz r3, 0(r4)
+/* 8030F88C 0030B4EC 38 03 00 01 */ addi r0, r3, 1
+/* 8030F890 0030B4F0 90 04 00 00 */ stw r0, 0(r4)
+/* 8030F894 0030B4F4 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030F898 0030B4F8 80 7B 00 30 */ lwz r3, 0x30(r27)
+/* 8030F89C 0030B4FC 90 03 00 04 */ stw r0, 4(r3)
+/* 8030F8A0 0030B500 80 7E 00 00 */ lwz r3, 0(r30)
+/* 8030F8A4 0030B504 88 1F 00 06 */ lbz r0, 6(r31)
+/* 8030F8A8 0030B508 7C 63 02 14 */ add r3, r3, r0
+/* 8030F8AC 0030B50C 90 7E 00 00 */ stw r3, 0(r30)
+/* 8030F8B0 0030B510 88 1F 00 20 */ lbz r0, 0x20(r31)
+/* 8030F8B4 0030B514 7C 60 00 30 */ slw r0, r3, r0
+/* 8030F8B8 0030B518 7C 00 E8 40 */ cmplw r0, r29
+/* 8030F8BC 0030B51C 40 80 00 18 */ bge lbl_8030F8D4
+/* 8030F8C0 0030B520 83 41 00 10 */ lwz r26, 0x10(r1)
+/* 8030F8C4 0030B524 3B 9C 00 01 */ addi r28, r28, 1
+lbl_8030F8C8:
+/* 8030F8C8 0030B528 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030F8CC 0030B52C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F8D0 0030B530 40 82 FF 4C */ bne lbl_8030F81C
+lbl_8030F8D4:
+/* 8030F8D4 0030B534 38 60 00 00 */ li r3, 0
+lbl_8030F8D8:
+/* 8030F8D8 0030B538 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030F8DC 0030B53C 4B EB 78 95 */ bl _restgpr_26
+/* 8030F8E0 0030B540 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030F8E4 0030B544 7C 08 03 A6 */ mtlr r0
+/* 8030F8E8 0030B548 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030F8EC 0030B54C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetClusterAllocatedInChain
+VFiPFFAT_GetClusterAllocatedInChain:
+/* 8030F8F0 0030B550 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030F8F4 0030B554 7C 08 02 A6 */ mflr r0
+/* 8030F8F8 0030B558 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030F8FC 0030B55C 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030F900 0030B560 4B EB 78 1D */ bl _savegpr_24
+/* 8030F904 0030B564 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 8030F908 0030B568 39 00 FF FF */ li r8, -1
+/* 8030F90C 0030B56C 38 00 00 01 */ li r0, 1
+/* 8030F910 0030B570 7C 79 1B 78 */ mr r25, r3
+/* 8030F914 0030B574 91 01 00 10 */ stw r8, 0x10(r1)
+/* 8030F918 0030B578 7C BA 2B 78 */ mr r26, r5
+/* 8030F91C 0030B57C 7C DB 33 78 */ mr r27, r6
+/* 8030F920 0030B580 7C FC 3B 78 */ mr r28, r7
+/* 8030F924 0030B584 90 01 00 0C */ stw r0, 0xc(r1)
+/* 8030F928 0030B588 7C 9E 23 78 */ mr r30, r4
+/* 8030F92C 0030B58C 7C 85 23 78 */ mr r5, r4
+/* 8030F930 0030B590 7F E3 FB 78 */ mr r3, r31
+/* 8030F934 0030B594 38 81 00 08 */ addi r4, r1, 8
+/* 8030F938 0030B598 3B A0 00 00 */ li r29, 0
+/* 8030F93C 0030B59C 4B FF EB FD */ bl VFiPFFAT_ReadFATSector
+/* 8030F940 0030B5A0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F944 0030B5A4 41 82 00 08 */ beq lbl_8030F94C
+/* 8030F948 0030B5A8 48 00 00 A0 */ b lbl_8030F9E8
+lbl_8030F94C:
+/* 8030F94C 0030B5AC 3F 00 80 40 */ lis r24, lbl_803FE280@ha
+/* 8030F950 0030B5B0 3B 18 E2 80 */ addi r24, r24, lbl_803FE280@l
+/* 8030F954 0030B5B4 48 00 00 84 */ b lbl_8030F9D8
+lbl_8030F958:
+/* 8030F958 0030B5B8 A0 9F 00 00 */ lhz r4, 0(r31)
+/* 8030F95C 0030B5BC 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 8030F960 0030B5C0 80 7C 00 00 */ lwz r3, 0(r28)
+/* 8030F964 0030B5C4 7C 80 00 30 */ slw r0, r4, r0
+/* 8030F968 0030B5C8 7F BD 02 14 */ add r29, r29, r0
+/* 8030F96C 0030B5CC 38 03 00 01 */ addi r0, r3, 1
+/* 8030F970 0030B5D0 7C 1D D8 40 */ cmplw r29, r27
+/* 8030F974 0030B5D4 90 1C 00 00 */ stw r0, 0(r28)
+/* 8030F978 0030B5D8 40 80 00 6C */ bge lbl_8030F9E4
+/* 8030F97C 0030B5DC 7F 23 CB 78 */ mr r3, r25
+/* 8030F980 0030B5E0 7F C4 F3 78 */ mr r4, r30
+/* 8030F984 0030B5E4 7F 45 D3 78 */ mr r5, r26
+/* 8030F988 0030B5E8 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030F98C 0030B5EC 38 E1 00 0C */ addi r7, r1, 0xc
+/* 8030F990 0030B5F0 39 01 00 08 */ addi r8, r1, 8
+/* 8030F994 0030B5F4 4B FF F2 41 */ bl VFiPFFAT_ReadClusterPage
+/* 8030F998 0030B5F8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F99C 0030B5FC 41 82 00 08 */ beq lbl_8030F9A4
+/* 8030F9A0 0030B600 48 00 00 48 */ b lbl_8030F9E8
+lbl_8030F9A4:
+/* 8030F9A4 0030B604 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8030F9A8 0030B608 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 8030F9AC 0030B60C 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030F9B0 0030B610 7C 78 02 14 */ add r3, r24, r0
+/* 8030F9B4 0030B614 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030F9B8 0030B618 7C 04 00 40 */ cmplw r4, r0
+/* 8030F9BC 0030B61C 40 82 00 14 */ bne lbl_8030F9D0
+/* 8030F9C0 0030B620 38 1A FF FF */ addi r0, r26, -1
+/* 8030F9C4 0030B624 93 D9 00 0C */ stw r30, 0xc(r25)
+/* 8030F9C8 0030B628 90 19 00 10 */ stw r0, 0x10(r25)
+/* 8030F9CC 0030B62C 48 00 00 18 */ b lbl_8030F9E4
+lbl_8030F9D0:
+/* 8030F9D0 0030B630 7C 9E 23 78 */ mr r30, r4
+/* 8030F9D4 0030B634 3B 5A 00 01 */ addi r26, r26, 1
+lbl_8030F9D8:
+/* 8030F9D8 0030B638 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030F9DC 0030B63C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F9E0 0030B640 40 82 FF 78 */ bne lbl_8030F958
+lbl_8030F9E4:
+/* 8030F9E4 0030B644 38 60 00 00 */ li r3, 0
+lbl_8030F9E8:
+/* 8030F9E8 0030B648 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030F9EC 0030B64C 4B EB 77 7D */ bl _restgpr_24
+/* 8030F9F0 0030B650 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030F9F4 0030B654 7C 08 03 A6 */ mtlr r0
+/* 8030F9F8 0030B658 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030F9FC 0030B65C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetClusterSpecified
+VFiPFFAT_GetClusterSpecified:
+/* 8030FA00 0030B660 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030FA04 0030B664 7C 08 02 A6 */ mflr r0
+/* 8030FA08 0030B668 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030FA0C 0030B66C 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FA10 0030B670 4B EB 77 19 */ bl _savegpr_27
+/* 8030FA14 0030B674 80 E3 00 08 */ lwz r7, 8(r3)
+/* 8030FA18 0030B678 7C 9D 23 78 */ mr r29, r4
+/* 8030FA1C 0030B67C 81 03 00 34 */ lwz r8, 0x34(r3)
+/* 8030FA20 0030B680 7C 7C 1B 78 */ mr r28, r3
+/* 8030FA24 0030B684 80 07 00 00 */ lwz r0, 0(r7)
+/* 8030FA28 0030B688 7C BB 2B 78 */ mr r27, r5
+/* 8030FA2C 0030B68C 80 88 00 1C */ lwz r4, 0x1c(r8)
+/* 8030FA30 0030B690 7C DE 33 78 */ mr r30, r6
+/* 8030FA34 0030B694 2C 00 00 00 */ cmpwi r0, 0
+/* 8030FA38 0030B698 83 E3 00 30 */ lwz r31, 0x30(r3)
+/* 8030FA3C 0030B69C 40 82 00 1C */ bne lbl_8030FA58
+/* 8030FA40 0030B6A0 2C 05 00 00 */ cmpwi r5, 0
+/* 8030FA44 0030B6A4 40 82 00 14 */ bne lbl_8030FA58
+/* 8030FA48 0030B6A8 38 00 FF FF */ li r0, -1
+/* 8030FA4C 0030B6AC 38 60 00 00 */ li r3, 0
+/* 8030FA50 0030B6B0 90 06 00 00 */ stw r0, 0(r6)
+/* 8030FA54 0030B6B4 48 00 01 24 */ b lbl_8030FB78
+lbl_8030FA58:
+/* 8030FA58 0030B6B8 28 00 00 01 */ cmplwi r0, 1
+/* 8030FA5C 0030B6BC 40 82 00 24 */ bne lbl_8030FA80
+/* 8030FA60 0030B6C0 28 04 00 01 */ cmplwi r4, 1
+/* 8030FA64 0030B6C4 41 81 00 14 */ bgt lbl_8030FA78
+/* 8030FA68 0030B6C8 38 00 FF FF */ li r0, -1
+/* 8030FA6C 0030B6CC 38 60 00 00 */ li r3, 0
+/* 8030FA70 0030B6D0 90 06 00 00 */ stw r0, 0(r6)
+/* 8030FA74 0030B6D4 48 00 01 04 */ b lbl_8030FB78
+lbl_8030FA78:
+/* 8030FA78 0030B6D8 80 08 00 10 */ lwz r0, 0x10(r8)
+/* 8030FA7C 0030B6DC 90 07 00 00 */ stw r0, 0(r7)
+lbl_8030FA80:
+/* 8030FA80 0030B6E0 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030FA84 0030B6E4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030FA88 0030B6E8 41 82 00 54 */ beq lbl_8030FADC
+/* 8030FA8C 0030B6EC 2C 05 00 00 */ cmpwi r5, 0
+/* 8030FA90 0030B6F0 40 82 00 4C */ bne lbl_8030FADC
+/* 8030FA94 0030B6F4 7F 83 E3 78 */ mr r3, r28
+/* 8030FA98 0030B6F8 7F A4 EB 78 */ mr r4, r29
+/* 8030FA9C 0030B6FC 7F C5 F3 78 */ mr r5, r30
+/* 8030FAA0 0030B700 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030FAA4 0030B704 4B FF ED C9 */ bl VFiPFFAT_FindClusterLink
+/* 8030FAA8 0030B708 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FAAC 0030B70C 41 82 00 08 */ beq lbl_8030FAB4
+/* 8030FAB0 0030B710 48 00 00 C8 */ b lbl_8030FB78
+lbl_8030FAB4:
+/* 8030FAB4 0030B714 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030FAB8 0030B718 28 00 00 01 */ cmplwi r0, 1
+/* 8030FABC 0030B71C 40 82 00 20 */ bne lbl_8030FADC
+/* 8030FAC0 0030B720 80 1C 00 00 */ lwz r0, 0(r28)
+/* 8030FAC4 0030B724 38 60 00 00 */ li r3, 0
+/* 8030FAC8 0030B728 90 1F 00 08 */ stw r0, 8(r31)
+/* 8030FACC 0030B72C 93 BF 00 00 */ stw r29, 0(r31)
+/* 8030FAD0 0030B730 80 1E 00 00 */ lwz r0, 0(r30)
+/* 8030FAD4 0030B734 90 1F 00 04 */ stw r0, 4(r31)
+/* 8030FAD8 0030B738 48 00 00 A0 */ b lbl_8030FB78
+lbl_8030FADC:
+/* 8030FADC 0030B73C 7C 1B 00 D0 */ neg r0, r27
+/* 8030FAE0 0030B740 38 60 FF FF */ li r3, -1
+/* 8030FAE4 0030B744 7C 00 DB 78 */ or r0, r0, r27
+/* 8030FAE8 0030B748 90 7E 00 00 */ stw r3, 0(r30)
+/* 8030FAEC 0030B74C 7F 83 E3 78 */ mr r3, r28
+/* 8030FAF0 0030B750 7F A4 EB 78 */ mr r4, r29
+/* 8030FAF4 0030B754 54 05 0F FE */ srwi r5, r0, 0x1f
+/* 8030FAF8 0030B758 38 E1 00 08 */ addi r7, r1, 8
+/* 8030FAFC 0030B75C 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030FB00 0030B760 38 C0 00 00 */ li r6, 0
+/* 8030FB04 0030B764 4B FF F9 95 */ bl VFiPFFAT_GetClusterInChain
+/* 8030FB08 0030B768 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FB0C 0030B76C 41 82 00 08 */ beq lbl_8030FB14
+/* 8030FB10 0030B770 48 00 00 2C */ b lbl_8030FB3C
+lbl_8030FB14:
+/* 8030FB14 0030B774 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030FB18 0030B778 28 04 00 02 */ cmplwi r4, 2
+/* 8030FB1C 0030B77C 41 80 00 1C */ blt lbl_8030FB38
+/* 8030FB20 0030B780 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 8030FB24 0030B784 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030FB28 0030B788 38 03 00 02 */ addi r0, r3, 2
+/* 8030FB2C 0030B78C 7C 04 00 40 */ cmplw r4, r0
+/* 8030FB30 0030B790 40 80 00 08 */ bge lbl_8030FB38
+/* 8030FB34 0030B794 90 9E 00 00 */ stw r4, 0(r30)
+lbl_8030FB38:
+/* 8030FB38 0030B798 38 60 00 00 */ li r3, 0
+lbl_8030FB3C:
+/* 8030FB3C 0030B79C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FB40 0030B7A0 41 82 00 08 */ beq lbl_8030FB48
+/* 8030FB44 0030B7A4 48 00 00 34 */ b lbl_8030FB78
+lbl_8030FB48:
+/* 8030FB48 0030B7A8 80 7E 00 00 */ lwz r3, 0(r30)
+/* 8030FB4C 0030B7AC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030FB50 0030B7B0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030FB54 0030B7B4 40 82 00 0C */ bne lbl_8030FB60
+/* 8030FB58 0030B7B8 38 60 00 00 */ li r3, 0
+/* 8030FB5C 0030B7BC 48 00 00 1C */ b lbl_8030FB78
+lbl_8030FB60:
+/* 8030FB60 0030B7C0 80 1C 00 00 */ lwz r0, 0(r28)
+/* 8030FB64 0030B7C4 38 60 00 00 */ li r3, 0
+/* 8030FB68 0030B7C8 90 1F 00 08 */ stw r0, 8(r31)
+/* 8030FB6C 0030B7CC 93 BF 00 00 */ stw r29, 0(r31)
+/* 8030FB70 0030B7D0 80 1E 00 00 */ lwz r0, 0(r30)
+/* 8030FB74 0030B7D4 90 1F 00 04 */ stw r0, 4(r31)
+lbl_8030FB78:
+/* 8030FB78 0030B7D8 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FB7C 0030B7DC 4B EB 75 F9 */ bl _restgpr_27
+/* 8030FB80 0030B7E0 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030FB84 0030B7E4 7C 08 03 A6 */ mtlr r0
+/* 8030FB88 0030B7E8 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030FB8C 0030B7EC 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetClusterAllocated
+VFiPFFAT_GetClusterAllocated:
+/* 8030FB90 0030B7F0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030FB94 0030B7F4 7C 08 02 A6 */ mflr r0
+/* 8030FB98 0030B7F8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030FB9C 0030B7FC 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FBA0 0030B800 4B EB 75 89 */ bl _savegpr_27
+/* 8030FBA4 0030B804 81 03 00 08 */ lwz r8, 8(r3)
+/* 8030FBA8 0030B808 7C 9D 23 78 */ mr r29, r4
+/* 8030FBAC 0030B80C 81 23 00 34 */ lwz r9, 0x34(r3)
+/* 8030FBB0 0030B810 7C 7C 1B 78 */ mr r28, r3
+/* 8030FBB4 0030B814 80 08 00 00 */ lwz r0, 0(r8)
+/* 8030FBB8 0030B818 7C DE 33 78 */ mr r30, r6
+/* 8030FBBC 0030B81C 80 89 00 1C */ lwz r4, 0x1c(r9)
+/* 8030FBC0 0030B820 7C FB 3B 78 */ mr r27, r7
+/* 8030FBC4 0030B824 28 00 00 01 */ cmplwi r0, 1
+/* 8030FBC8 0030B828 83 E3 00 30 */ lwz r31, 0x30(r3)
+/* 8030FBCC 0030B82C 40 82 00 24 */ bne lbl_8030FBF0
+/* 8030FBD0 0030B830 28 04 00 01 */ cmplwi r4, 1
+/* 8030FBD4 0030B834 41 81 00 14 */ bgt lbl_8030FBE8
+/* 8030FBD8 0030B838 38 00 FF FF */ li r0, -1
+/* 8030FBDC 0030B83C 38 60 00 00 */ li r3, 0
+/* 8030FBE0 0030B840 90 06 00 00 */ stw r0, 0(r6)
+/* 8030FBE4 0030B844 48 00 00 B4 */ b lbl_8030FC98
+lbl_8030FBE8:
+/* 8030FBE8 0030B848 80 09 00 10 */ lwz r0, 0x10(r9)
+/* 8030FBEC 0030B84C 90 08 00 00 */ stw r0, 0(r8)
+lbl_8030FBF0:
+/* 8030FBF0 0030B850 38 00 FF FF */ li r0, -1
+/* 8030FBF4 0030B854 7F 83 E3 78 */ mr r3, r28
+/* 8030FBF8 0030B858 90 06 00 00 */ stw r0, 0(r6)
+/* 8030FBFC 0030B85C 7C A6 2B 78 */ mr r6, r5
+/* 8030FC00 0030B860 7F A4 EB 78 */ mr r4, r29
+/* 8030FC04 0030B864 38 E1 00 08 */ addi r7, r1, 8
+/* 8030FC08 0030B868 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030FC0C 0030B86C 38 A0 00 02 */ li r5, 2
+/* 8030FC10 0030B870 4B FF F8 89 */ bl VFiPFFAT_GetClusterInChain
+/* 8030FC14 0030B874 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FC18 0030B878 41 82 00 08 */ beq lbl_8030FC20
+/* 8030FC1C 0030B87C 48 00 00 40 */ b lbl_8030FC5C
+lbl_8030FC20:
+/* 8030FC20 0030B880 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030FC24 0030B884 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030FC28 0030B888 7C 63 00 50 */ subf r3, r3, r0
+/* 8030FC2C 0030B88C 38 03 00 01 */ addi r0, r3, 1
+/* 8030FC30 0030B890 90 1B 00 00 */ stw r0, 0(r27)
+/* 8030FC34 0030B894 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030FC38 0030B898 28 04 00 02 */ cmplwi r4, 2
+/* 8030FC3C 0030B89C 41 80 00 1C */ blt lbl_8030FC58
+/* 8030FC40 0030B8A0 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 8030FC44 0030B8A4 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030FC48 0030B8A8 38 03 00 02 */ addi r0, r3, 2
+/* 8030FC4C 0030B8AC 7C 04 00 40 */ cmplw r4, r0
+/* 8030FC50 0030B8B0 40 80 00 08 */ bge lbl_8030FC58
+/* 8030FC54 0030B8B4 90 9E 00 00 */ stw r4, 0(r30)
+lbl_8030FC58:
+/* 8030FC58 0030B8B8 38 60 00 00 */ li r3, 0
+lbl_8030FC5C:
+/* 8030FC5C 0030B8BC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FC60 0030B8C0 41 82 00 08 */ beq lbl_8030FC68
+/* 8030FC64 0030B8C4 48 00 00 34 */ b lbl_8030FC98
+lbl_8030FC68:
+/* 8030FC68 0030B8C8 80 7E 00 00 */ lwz r3, 0(r30)
+/* 8030FC6C 0030B8CC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030FC70 0030B8D0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030FC74 0030B8D4 40 82 00 0C */ bne lbl_8030FC80
+/* 8030FC78 0030B8D8 38 60 00 00 */ li r3, 0
+/* 8030FC7C 0030B8DC 48 00 00 1C */ b lbl_8030FC98
+lbl_8030FC80:
+/* 8030FC80 0030B8E0 80 1C 00 00 */ lwz r0, 0(r28)
+/* 8030FC84 0030B8E4 38 60 00 00 */ li r3, 0
+/* 8030FC88 0030B8E8 90 1F 00 08 */ stw r0, 8(r31)
+/* 8030FC8C 0030B8EC 93 BF 00 00 */ stw r29, 0(r31)
+/* 8030FC90 0030B8F0 80 1E 00 00 */ lwz r0, 0(r30)
+/* 8030FC94 0030B8F4 90 1F 00 04 */ stw r0, 4(r31)
+lbl_8030FC98:
+/* 8030FC98 0030B8F8 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FC9C 0030B8FC 4B EB 74 D9 */ bl _restgpr_27
+/* 8030FCA0 0030B900 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030FCA4 0030B904 7C 08 03 A6 */ mtlr r0
+/* 8030FCA8 0030B908 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030FCAC 0030B90C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetSector
+VFiPFFAT_GetSector:
+/* 8030FCB0 0030B910 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030FCB4 0030B914 7C 08 02 A6 */ mflr r0
+/* 8030FCB8 0030B918 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030FCBC 0030B91C 38 00 00 00 */ li r0, 0
+/* 8030FCC0 0030B920 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030FCC4 0030B924 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030FCC8 0030B928 7D 1E 43 78 */ mr r30, r8
+/* 8030FCCC 0030B92C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030FCD0 0030B930 7C FD 3B 78 */ mr r29, r7
+/* 8030FCD4 0030B934 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8030FCD8 0030B938 7C 9C 23 78 */ mr r28, r4
+/* 8030FCDC 0030B93C 90 01 00 08 */ stw r0, 8(r1)
+/* 8030FCE0 0030B940 81 23 00 08 */ lwz r9, 8(r3)
+/* 8030FCE4 0030B944 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 8030FCE8 0030B948 80 09 00 00 */ lwz r0, 0(r9)
+/* 8030FCEC 0030B94C 81 1F 00 1C */ lwz r8, 0x1c(r31)
+/* 8030FCF0 0030B950 28 00 00 01 */ cmplwi r0, 1
+/* 8030FCF4 0030B954 40 82 00 64 */ bne lbl_8030FD58
+/* 8030FCF8 0030B958 28 08 00 01 */ cmplwi r8, 1
+/* 8030FCFC 0030B95C 41 81 00 5C */ bgt lbl_8030FD58
+/* 8030FD00 0030B960 2C 08 00 00 */ cmpwi r8, 0
+/* 8030FD04 0030B964 41 82 00 14 */ beq lbl_8030FD18
+/* 8030FD08 0030B968 2C 08 00 01 */ cmpwi r8, 1
+/* 8030FD0C 0030B96C 41 82 00 0C */ beq lbl_8030FD18
+/* 8030FD10 0030B970 38 60 00 0C */ li r3, 0xc
+/* 8030FD14 0030B974 48 00 00 30 */ b lbl_8030FD44
+lbl_8030FD18:
+/* 8030FD18 0030B978 A0 1F 00 24 */ lhz r0, 0x24(r31)
+/* 8030FD1C 0030B97C 7C 04 00 40 */ cmplw r4, r0
+/* 8030FD20 0030B980 41 80 00 14 */ blt lbl_8030FD34
+/* 8030FD24 0030B984 38 00 FF FF */ li r0, -1
+/* 8030FD28 0030B988 38 60 00 00 */ li r3, 0
+/* 8030FD2C 0030B98C 90 07 00 00 */ stw r0, 0(r7)
+/* 8030FD30 0030B990 48 00 00 14 */ b lbl_8030FD44
+lbl_8030FD34:
+/* 8030FD34 0030B994 80 1F 00 2C */ lwz r0, 0x2c(r31)
+/* 8030FD38 0030B998 38 60 00 00 */ li r3, 0
+/* 8030FD3C 0030B99C 7C 00 22 14 */ add r0, r0, r4
+/* 8030FD40 0030B9A0 90 07 00 00 */ stw r0, 0(r7)
+lbl_8030FD44:
+/* 8030FD44 0030B9A4 7C 03 00 D0 */ neg r0, r3
+/* 8030FD48 0030B9A8 7C 00 1B 78 */ or r0, r0, r3
+/* 8030FD4C 0030B9AC 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030FD50 0030B9B0 7C 63 00 38 */ and r3, r3, r0
+/* 8030FD54 0030B9B4 48 00 00 F4 */ b lbl_8030FE48
+lbl_8030FD58:
+/* 8030FD58 0030B9B8 89 3F 00 21 */ lbz r9, 0x21(r31)
+/* 8030FD5C 0030B9BC 28 05 00 02 */ cmplwi r5, 2
+/* 8030FD60 0030B9C0 7C 84 4C 30 */ srw r4, r4, r9
+/* 8030FD64 0030B9C4 40 82 00 74 */ bne lbl_8030FDD8
+/* 8030FD68 0030B9C8 A0 BF 00 00 */ lhz r5, 0(r31)
+/* 8030FD6C 0030B9CC 89 1F 00 20 */ lbz r8, 0x20(r31)
+/* 8030FD70 0030B9D0 38 05 FF FF */ addi r0, r5, -1
+/* 8030FD74 0030B9D4 88 BF 00 06 */ lbz r5, 6(r31)
+/* 8030FD78 0030B9D8 7C C7 00 38 */ and r7, r6, r0
+/* 8030FD7C 0030B9DC 7C C8 44 30 */ srw r8, r6, r8
+/* 8030FD80 0030B9E0 7C C7 00 D0 */ neg r6, r7
+/* 8030FD84 0030B9E4 38 05 FF FF */ addi r0, r5, -1
+/* 8030FD88 0030B9E8 7C C5 3B 78 */ or r5, r6, r7
+/* 8030FD8C 0030B9EC 38 E1 00 08 */ addi r7, r1, 8
+/* 8030FD90 0030B9F0 54 A5 0F FE */ srwi r5, r5, 0x1f
+/* 8030FD94 0030B9F4 38 C1 00 0C */ addi r6, r1, 0xc
+/* 8030FD98 0030B9F8 7D 08 2A 14 */ add r8, r8, r5
+/* 8030FD9C 0030B9FC 7C 05 40 38 */ and r5, r0, r8
+/* 8030FDA0 0030BA00 7C 05 00 D0 */ neg r0, r5
+/* 8030FDA4 0030BA04 7D 08 4C 30 */ srw r8, r8, r9
+/* 8030FDA8 0030BA08 7C 00 2B 78 */ or r0, r0, r5
+/* 8030FDAC 0030BA0C 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 8030FDB0 0030BA10 7C A8 02 14 */ add r5, r8, r0
+/* 8030FDB4 0030BA14 4B FF FD DD */ bl VFiPFFAT_GetClusterAllocated
+/* 8030FDB8 0030BA18 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FDBC 0030BA1C 41 82 00 08 */ beq lbl_8030FDC4
+/* 8030FDC0 0030BA20 48 00 00 88 */ b lbl_8030FE48
+lbl_8030FDC4:
+/* 8030FDC4 0030BA24 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030FDC8 0030BA28 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 8030FDCC 0030BA2C 7C 60 00 30 */ slw r0, r3, r0
+/* 8030FDD0 0030BA30 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030FDD4 0030BA34 48 00 00 28 */ b lbl_8030FDFC
+lbl_8030FDD8:
+/* 8030FDD8 0030BA38 38 C1 00 0C */ addi r6, r1, 0xc
+/* 8030FDDC 0030BA3C 4B FF FC 25 */ bl VFiPFFAT_GetClusterSpecified
+/* 8030FDE0 0030BA40 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FDE4 0030BA44 41 82 00 08 */ beq lbl_8030FDEC
+/* 8030FDE8 0030BA48 48 00 00 60 */ b lbl_8030FE48
+lbl_8030FDEC:
+/* 8030FDEC 0030BA4C 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 8030FDF0 0030BA50 38 60 00 01 */ li r3, 1
+/* 8030FDF4 0030BA54 7C 60 00 30 */ slw r0, r3, r0
+/* 8030FDF8 0030BA58 90 1E 00 00 */ stw r0, 0(r30)
+lbl_8030FDFC:
+/* 8030FDFC 0030BA5C 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030FE00 0030BA60 3C 03 00 01 */ addis r0, r3, 1
+/* 8030FE04 0030BA64 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030FE08 0030BA68 40 82 00 14 */ bne lbl_8030FE1C
+/* 8030FE0C 0030BA6C 38 00 FF FF */ li r0, -1
+/* 8030FE10 0030BA70 38 60 00 00 */ li r3, 0
+/* 8030FE14 0030BA74 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030FE18 0030BA78 48 00 00 30 */ b lbl_8030FE48
+lbl_8030FE1C:
+/* 8030FE1C 0030BA7C 88 9F 00 06 */ lbz r4, 6(r31)
+/* 8030FE20 0030BA80 38 C3 FF FE */ addi r6, r3, -2
+/* 8030FE24 0030BA84 88 BF 00 21 */ lbz r5, 0x21(r31)
+/* 8030FE28 0030BA88 38 60 00 00 */ li r3, 0
+/* 8030FE2C 0030BA8C 38 04 FF FF */ addi r0, r4, -1
+/* 8030FE30 0030BA90 80 FF 00 30 */ lwz r7, 0x30(r31)
+/* 8030FE34 0030BA94 7C C5 28 30 */ slw r5, r6, r5
+/* 8030FE38 0030BA98 7F 84 00 38 */ and r4, r28, r0
+/* 8030FE3C 0030BA9C 7C 07 2A 14 */ add r0, r7, r5
+/* 8030FE40 0030BAA0 7C 04 02 14 */ add r0, r4, r0
+/* 8030FE44 0030BAA4 90 1D 00 00 */ stw r0, 0(r29)
+lbl_8030FE48:
+/* 8030FE48 0030BAA8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030FE4C 0030BAAC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030FE50 0030BAB0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030FE54 0030BAB4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030FE58 0030BAB8 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030FE5C 0030BABC 7C 08 03 A6 */ mtlr r0
+/* 8030FE60 0030BAC0 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030FE64 0030BAC4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_UpdateFATEntry
+VFiPFFAT_UpdateFATEntry:
+/* 8030FE68 0030BAC8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030FE6C 0030BACC 7C 08 02 A6 */ mflr r0
+/* 8030FE70 0030BAD0 38 A0 00 00 */ li r5, 0
+/* 8030FE74 0030BAD4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030FE78 0030BAD8 A0 04 00 00 */ lhz r0, 0(r4)
+/* 8030FE7C 0030BADC 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030FE80 0030BAE0 2C 00 00 02 */ cmpwi r0, 2
+/* 8030FE84 0030BAE4 40 82 00 0C */ bne lbl_8030FE90
+/* 8030FE88 0030BAE8 4B FF AA F5 */ bl VFiPFCACHE_WriteFATPage
+/* 8030FE8C 0030BAEC 7C 65 1B 78 */ mr r5, r3
+lbl_8030FE90:
+/* 8030FE90 0030BAF0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030FE94 0030BAF4 7C A3 2B 78 */ mr r3, r5
+/* 8030FE98 0030BAF8 7C 08 03 A6 */ mtlr r0
+/* 8030FE9C 0030BAFC 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030FEA0 0030BB00 4E 80 00 20 */ blr
+
+.global VFiPFFAT_UpdateAlternateFATEntry
+VFiPFFAT_UpdateAlternateFATEntry:
+/* 8030FEA4 0030BB04 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030FEA8 0030BB08 7C 08 02 A6 */ mflr r0
+/* 8030FEAC 0030BB0C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030FEB0 0030BB10 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FEB4 0030BB14 4B EB 72 71 */ bl _savegpr_26
+/* 8030FEB8 0030BB18 A0 03 00 02 */ lhz r0, 2(r3)
+/* 8030FEBC 0030BB1C 7C 7A 1B 78 */ mr r26, r3
+/* 8030FEC0 0030BB20 80 63 00 0C */ lwz r3, 0xc(r3)
+/* 8030FEC4 0030BB24 7C 9B 23 78 */ mr r27, r4
+/* 8030FEC8 0030BB28 7C 80 28 50 */ subf r4, r0, r5
+/* 8030FECC 0030BB2C 7C DD 33 78 */ mr r29, r6
+/* 8030FED0 0030BB30 7C 04 1B 97 */ divwu. r0, r4, r3
+/* 8030FED4 0030BB34 3B E0 00 00 */ li r31, 0
+/* 8030FED8 0030BB38 41 82 00 14 */ beq lbl_8030FEEC
+/* 8030FEDC 0030BB3C 7C 00 19 D6 */ mullw r0, r0, r3
+/* 8030FEE0 0030BB40 3B C0 00 00 */ li r30, 0
+/* 8030FEE4 0030BB44 7F 80 20 50 */ subf r28, r0, r4
+/* 8030FEE8 0030BB48 48 00 00 58 */ b lbl_8030FF40
+lbl_8030FEEC:
+/* 8030FEEC 0030BB4C 7F 85 1A 14 */ add r28, r5, r3
+/* 8030FEF0 0030BB50 3B C0 00 01 */ li r30, 1
+/* 8030FEF4 0030BB54 48 00 00 4C */ b lbl_8030FF40
+lbl_8030FEF8:
+/* 8030FEF8 0030BB58 7F 43 D3 78 */ mr r3, r26
+/* 8030FEFC 0030BB5C 7F 64 DB 78 */ mr r4, r27
+/* 8030FF00 0030BB60 7F 85 E3 78 */ mr r5, r28
+/* 8030FF04 0030BB64 7F A6 EB 78 */ mr r6, r29
+/* 8030FF08 0030BB68 38 E1 00 08 */ addi r7, r1, 8
+/* 8030FF0C 0030BB6C 4B FF 63 35 */ bl VFiPFDRV_lwrite
+/* 8030FF10 0030BB70 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FF14 0030BB74 41 82 00 10 */ beq lbl_8030FF24
+/* 8030FF18 0030BB78 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030FF1C 0030BB7C 40 82 00 08 */ bne lbl_8030FF24
+/* 8030FF20 0030BB80 7C 7F 1B 78 */ mr r31, r3
+lbl_8030FF24:
+/* 8030FF24 0030BB84 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030FF28 0030BB88 7C 00 E8 40 */ cmplw r0, r29
+/* 8030FF2C 0030BB8C 41 82 00 08 */ beq lbl_8030FF34
+/* 8030FF30 0030BB90 3B E0 00 11 */ li r31, 0x11
+lbl_8030FF34:
+/* 8030FF34 0030BB94 80 1A 00 0C */ lwz r0, 0xc(r26)
+/* 8030FF38 0030BB98 3B DE 00 01 */ addi r30, r30, 1
+/* 8030FF3C 0030BB9C 7F 9C 02 14 */ add r28, r28, r0
+lbl_8030FF40:
+/* 8030FF40 0030BBA0 88 1A 00 22 */ lbz r0, 0x22(r26)
+/* 8030FF44 0030BBA4 7C 1E 00 40 */ cmplw r30, r0
+/* 8030FF48 0030BBA8 41 80 FF B0 */ blt lbl_8030FEF8
+/* 8030FF4C 0030BBAC 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FF50 0030BBB0 7F E3 FB 78 */ mr r3, r31
+/* 8030FF54 0030BBB4 4B EB 72 1D */ bl _restgpr_26
+/* 8030FF58 0030BBB8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030FF5C 0030BBBC 7C 08 03 A6 */ mtlr r0
+/* 8030FF60 0030BBC0 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030FF64 0030BBC4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetSectorSpecified
+VFiPFFAT_GetSectorSpecified:
+/* 8030FF68 0030BBC8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030FF6C 0030BBCC 7C 08 02 A6 */ mflr r0
+/* 8030FF70 0030BBD0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FF74 0030BBD4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030FF78 0030BBD8 40 82 00 0C */ bne lbl_8030FF84
+/* 8030FF7C 0030BBDC 38 60 00 0A */ li r3, 0xa
+/* 8030FF80 0030BBE0 48 00 00 B0 */ b lbl_80310030
+lbl_8030FF84:
+/* 8030FF84 0030BBE4 81 03 00 30 */ lwz r8, 0x30(r3)
+/* 8030FF88 0030BBE8 2C 08 00 00 */ cmpwi r8, 0
+/* 8030FF8C 0030BBEC 40 82 00 0C */ bne lbl_8030FF98
+/* 8030FF90 0030BBF0 38 60 00 0A */ li r3, 0xa
+/* 8030FF94 0030BBF4 48 00 00 9C */ b lbl_80310030
+lbl_8030FF98:
+/* 8030FF98 0030BBF8 80 E3 00 00 */ lwz r7, 0(r3)
+/* 8030FF9C 0030BBFC 2C 07 00 00 */ cmpwi r7, 0
+/* 8030FFA0 0030BC00 40 82 00 0C */ bne lbl_8030FFAC
+/* 8030FFA4 0030BC04 38 60 00 0A */ li r3, 0xa
+/* 8030FFA8 0030BC08 48 00 00 88 */ b lbl_80310030
+lbl_8030FFAC:
+/* 8030FFAC 0030BC0C 80 08 00 08 */ lwz r0, 8(r8)
+/* 8030FFB0 0030BC10 7C 00 38 40 */ cmplw r0, r7
+/* 8030FFB4 0030BC14 40 81 00 0C */ ble lbl_8030FFC0
+/* 8030FFB8 0030BC18 38 60 00 0A */ li r3, 0xa
+/* 8030FFBC 0030BC1C 48 00 00 74 */ b lbl_80310030
+lbl_8030FFC0:
+/* 8030FFC0 0030BC20 80 E3 00 34 */ lwz r7, 0x34(r3)
+/* 8030FFC4 0030BC24 88 07 18 7A */ lbz r0, 0x187a(r7)
+/* 8030FFC8 0030BC28 7C 00 07 74 */ extsb r0, r0
+/* 8030FFCC 0030BC2C 2C 00 00 41 */ cmpwi r0, 0x41
+/* 8030FFD0 0030BC30 41 80 00 0C */ blt lbl_8030FFDC
+/* 8030FFD4 0030BC34 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 8030FFD8 0030BC38 40 81 00 0C */ ble lbl_8030FFE4
+lbl_8030FFDC:
+/* 8030FFDC 0030BC3C 38 60 00 23 */ li r3, 0x23
+/* 8030FFE0 0030BC40 48 00 00 50 */ b lbl_80310030
+lbl_8030FFE4:
+/* 8030FFE4 0030BC44 88 07 00 20 */ lbz r0, 0x20(r7)
+/* 8030FFE8 0030BC48 38 E0 FF FF */ li r7, -1
+/* 8030FFEC 0030BC4C 7C E7 04 30 */ srw r7, r7, r0
+/* 8030FFF0 0030BC50 38 07 00 01 */ addi r0, r7, 1
+/* 8030FFF4 0030BC54 7C 04 00 40 */ cmplw r4, r0
+/* 8030FFF8 0030BC58 41 80 00 0C */ blt lbl_80310004
+/* 8030FFFC 0030BC5C 38 60 00 25 */ li r3, 0x25
+/* 80310000 0030BC60 48 00 00 30 */ b lbl_80310030
+lbl_80310004:
+/* 80310004 0030BC64 7C 05 00 D0 */ neg r0, r5
+/* 80310008 0030BC68 7C C7 33 78 */ mr r7, r6
+/* 8031000C 0030BC6C 7C 00 2B 78 */ or r0, r0, r5
+/* 80310010 0030BC70 39 01 00 08 */ addi r8, r1, 8
+/* 80310014 0030BC74 54 05 0F FE */ srwi r5, r0, 0x1f
+/* 80310018 0030BC78 38 C0 00 00 */ li r6, 0
+/* 8031001C 0030BC7C 4B FF FC 95 */ bl VFiPFFAT_GetSector
+/* 80310020 0030BC80 2C 03 00 00 */ cmpwi r3, 0
+/* 80310024 0030BC84 41 82 00 08 */ beq lbl_8031002C
+/* 80310028 0030BC88 48 00 00 08 */ b lbl_80310030
+lbl_8031002C:
+/* 8031002C 0030BC8C 38 60 00 00 */ li r3, 0
+lbl_80310030:
+/* 80310030 0030BC90 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80310034 0030BC94 7C 08 03 A6 */ mtlr r0
+/* 80310038 0030BC98 38 21 00 10 */ addi r1, r1, 0x10
+/* 8031003C 0030BC9C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetSectorAllocated
+VFiPFFAT_GetSectorAllocated:
+/* 80310040 0030BCA0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80310044 0030BCA4 7C 08 02 A6 */ mflr r0
+/* 80310048 0030BCA8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031004C 0030BCAC 7C C9 33 78 */ mr r9, r6
+/* 80310050 0030BCB0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80310054 0030BCB4 7C E8 3B 78 */ mr r8, r7
+/* 80310058 0030BCB8 40 82 00 0C */ bne lbl_80310064
+/* 8031005C 0030BCBC 38 60 00 0A */ li r3, 0xa
+/* 80310060 0030BCC0 48 00 00 A4 */ b lbl_80310104
+lbl_80310064:
+/* 80310064 0030BCC4 80 E3 00 30 */ lwz r7, 0x30(r3)
+/* 80310068 0030BCC8 2C 07 00 00 */ cmpwi r7, 0
+/* 8031006C 0030BCCC 40 82 00 0C */ bne lbl_80310078
+/* 80310070 0030BCD0 38 60 00 0A */ li r3, 0xa
+/* 80310074 0030BCD4 48 00 00 90 */ b lbl_80310104
+lbl_80310078:
+/* 80310078 0030BCD8 80 C3 00 00 */ lwz r6, 0(r3)
+/* 8031007C 0030BCDC 2C 06 00 00 */ cmpwi r6, 0
+/* 80310080 0030BCE0 40 82 00 0C */ bne lbl_8031008C
+/* 80310084 0030BCE4 38 60 00 0A */ li r3, 0xa
+/* 80310088 0030BCE8 48 00 00 7C */ b lbl_80310104
+lbl_8031008C:
+/* 8031008C 0030BCEC 80 07 00 08 */ lwz r0, 8(r7)
+/* 80310090 0030BCF0 7C 00 30 40 */ cmplw r0, r6
+/* 80310094 0030BCF4 40 81 00 0C */ ble lbl_803100A0
+/* 80310098 0030BCF8 38 60 00 0A */ li r3, 0xa
+/* 8031009C 0030BCFC 48 00 00 68 */ b lbl_80310104
+lbl_803100A0:
+/* 803100A0 0030BD00 80 C3 00 34 */ lwz r6, 0x34(r3)
+/* 803100A4 0030BD04 88 06 18 7A */ lbz r0, 0x187a(r6)
+/* 803100A8 0030BD08 7C 00 07 74 */ extsb r0, r0
+/* 803100AC 0030BD0C 2C 00 00 41 */ cmpwi r0, 0x41
+/* 803100B0 0030BD10 41 80 00 0C */ blt lbl_803100BC
+/* 803100B4 0030BD14 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 803100B8 0030BD18 40 81 00 0C */ ble lbl_803100C4
+lbl_803100BC:
+/* 803100BC 0030BD1C 38 60 00 23 */ li r3, 0x23
+/* 803100C0 0030BD20 48 00 00 44 */ b lbl_80310104
+lbl_803100C4:
+/* 803100C4 0030BD24 88 06 00 20 */ lbz r0, 0x20(r6)
+/* 803100C8 0030BD28 38 C0 FF FF */ li r6, -1
+/* 803100CC 0030BD2C 7C C6 04 30 */ srw r6, r6, r0
+/* 803100D0 0030BD30 38 06 00 01 */ addi r0, r6, 1
+/* 803100D4 0030BD34 7C 04 00 40 */ cmplw r4, r0
+/* 803100D8 0030BD38 41 80 00 0C */ blt lbl_803100E4
+/* 803100DC 0030BD3C 38 60 00 25 */ li r3, 0x25
+/* 803100E0 0030BD40 48 00 00 24 */ b lbl_80310104
+lbl_803100E4:
+/* 803100E4 0030BD44 7C A6 2B 78 */ mr r6, r5
+/* 803100E8 0030BD48 7D 27 4B 78 */ mr r7, r9
+/* 803100EC 0030BD4C 38 A0 00 02 */ li r5, 2
+/* 803100F0 0030BD50 4B FF FB C1 */ bl VFiPFFAT_GetSector
+/* 803100F4 0030BD54 7C 03 00 D0 */ neg r0, r3
+/* 803100F8 0030BD58 7C 00 1B 78 */ or r0, r0, r3
+/* 803100FC 0030BD5C 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 80310100 0030BD60 7C 63 00 38 */ and r3, r3, r0
+lbl_80310104:
+/* 80310104 0030BD64 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80310108 0030BD68 7C 08 03 A6 */ mtlr r0
+/* 8031010C 0030BD6C 38 21 00 10 */ addi r1, r1, 0x10
+/* 80310110 0030BD70 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetContinuousSector
+VFiPFFAT_GetContinuousSector:
+/* 80310114 0030BD74 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80310118 0030BD78 7C 08 02 A6 */ mflr r0
+/* 8031011C 0030BD7C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80310120 0030BD80 39 61 00 30 */ addi r11, r1, 0x30
+/* 80310124 0030BD84 4B EB 6F FD */ bl _savegpr_25
+/* 80310128 0030BD88 2C 03 00 00 */ cmpwi r3, 0
+/* 8031012C 0030BD8C 7C 79 1B 78 */ mr r25, r3
+/* 80310130 0030BD90 7C 9A 23 78 */ mr r26, r4
+/* 80310134 0030BD94 7C BB 2B 78 */ mr r27, r5
+/* 80310138 0030BD98 7C DC 33 78 */ mr r28, r6
+/* 8031013C 0030BD9C 7C FD 3B 78 */ mr r29, r7
+/* 80310140 0030BDA0 3B C0 FF FF */ li r30, -1
+/* 80310144 0030BDA4 40 82 00 0C */ bne lbl_80310150
+/* 80310148 0030BDA8 38 60 00 0A */ li r3, 0xa
+/* 8031014C 0030BDAC 48 00 01 6C */ b lbl_803102B8
+lbl_80310150:
+/* 80310150 0030BDB0 80 E3 00 30 */ lwz r7, 0x30(r3)
+/* 80310154 0030BDB4 2C 07 00 00 */ cmpwi r7, 0
+/* 80310158 0030BDB8 40 82 00 0C */ bne lbl_80310164
+/* 8031015C 0030BDBC 38 60 00 0A */ li r3, 0xa
+/* 80310160 0030BDC0 48 00 01 58 */ b lbl_803102B8
+lbl_80310164:
+/* 80310164 0030BDC4 80 A3 00 00 */ lwz r5, 0(r3)
+/* 80310168 0030BDC8 2C 05 00 00 */ cmpwi r5, 0
+/* 8031016C 0030BDCC 40 82 00 0C */ bne lbl_80310178
+/* 80310170 0030BDD0 38 60 00 0A */ li r3, 0xa
+/* 80310174 0030BDD4 48 00 01 44 */ b lbl_803102B8
+lbl_80310178:
+/* 80310178 0030BDD8 80 07 00 08 */ lwz r0, 8(r7)
+/* 8031017C 0030BDDC 7C 00 28 40 */ cmplw r0, r5
+/* 80310180 0030BDE0 40 81 00 0C */ ble lbl_8031018C
+/* 80310184 0030BDE4 38 60 00 0A */ li r3, 0xa
+/* 80310188 0030BDE8 48 00 01 30 */ b lbl_803102B8
+lbl_8031018C:
+/* 8031018C 0030BDEC 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 80310190 0030BDF0 88 1F 18 7A */ lbz r0, 0x187a(r31)
+/* 80310194 0030BDF4 7C 00 07 74 */ extsb r0, r0
+/* 80310198 0030BDF8 2C 00 00 41 */ cmpwi r0, 0x41
+/* 8031019C 0030BDFC 41 80 00 0C */ blt lbl_803101A8
+/* 803101A0 0030BE00 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 803101A4 0030BE04 40 81 00 0C */ ble lbl_803101B0
+lbl_803101A8:
+/* 803101A8 0030BE08 38 60 00 23 */ li r3, 0x23
+/* 803101AC 0030BE0C 48 00 01 0C */ b lbl_803102B8
+lbl_803101B0:
+/* 803101B0 0030BE10 88 1F 00 20 */ lbz r0, 0x20(r31)
+/* 803101B4 0030BE14 38 A0 FF FF */ li r5, -1
+/* 803101B8 0030BE18 7C A5 04 30 */ srw r5, r5, r0
+/* 803101BC 0030BE1C 38 05 00 01 */ addi r0, r5, 1
+/* 803101C0 0030BE20 7C 04 00 40 */ cmplw r4, r0
+/* 803101C4 0030BE24 41 80 00 0C */ blt lbl_803101D0
+/* 803101C8 0030BE28 38 60 00 25 */ li r3, 0x25
+/* 803101CC 0030BE2C 48 00 00 EC */ b lbl_803102B8
+lbl_803101D0:
+/* 803101D0 0030BE30 80 A6 00 00 */ lwz r5, 0(r6)
+/* 803101D4 0030BE34 3C 05 00 01 */ addis r0, r5, 1
+/* 803101D8 0030BE38 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803101DC 0030BE3C 41 82 00 1C */ beq lbl_803101F8
+/* 803101E0 0030BE40 80 7F 00 30 */ lwz r3, 0x30(r31)
+/* 803101E4 0030BE44 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 803101E8 0030BE48 7C 63 28 50 */ subf r3, r3, r5
+/* 803101EC 0030BE4C 7C 63 04 30 */ srw r3, r3, r0
+/* 803101F0 0030BE50 3B C3 00 02 */ addi r30, r3, 2
+/* 803101F4 0030BE54 48 00 00 3C */ b lbl_80310230
+lbl_803101F8:
+/* 803101F8 0030BE58 38 A0 00 00 */ li r5, 0
+/* 803101FC 0030BE5C 4B FF FD 6D */ bl VFiPFFAT_GetSectorSpecified
+/* 80310200 0030BE60 2C 03 00 00 */ cmpwi r3, 0
+/* 80310204 0030BE64 41 82 00 08 */ beq lbl_8031020C
+/* 80310208 0030BE68 48 00 00 B0 */ b lbl_803102B8
+lbl_8031020C:
+/* 8031020C 0030BE6C 80 BC 00 00 */ lwz r5, 0(r28)
+/* 80310210 0030BE70 3C 05 00 01 */ addis r0, r5, 1
+/* 80310214 0030BE74 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80310218 0030BE78 41 82 00 18 */ beq lbl_80310230
+/* 8031021C 0030BE7C 80 7F 00 30 */ lwz r3, 0x30(r31)
+/* 80310220 0030BE80 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 80310224 0030BE84 7C 63 28 50 */ subf r3, r3, r5
+/* 80310228 0030BE88 7C 63 04 30 */ srw r3, r3, r0
+/* 8031022C 0030BE8C 3B C3 00 02 */ addi r30, r3, 2
+lbl_80310230:
+/* 80310230 0030BE90 3C 05 00 01 */ addis r0, r5, 1
+/* 80310234 0030BE94 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80310238 0030BE98 41 82 00 24 */ beq lbl_8031025C
+/* 8031023C 0030BE9C 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 80310240 0030BEA0 38 7E FF FF */ addi r3, r30, -1
+/* 80310244 0030BEA4 80 9F 00 30 */ lwz r4, 0x30(r31)
+/* 80310248 0030BEA8 7C 60 00 30 */ slw r0, r3, r0
+/* 8031024C 0030BEAC 7C 04 02 14 */ add r0, r4, r0
+/* 80310250 0030BEB0 7C 05 00 50 */ subf r0, r5, r0
+/* 80310254 0030BEB4 90 1D 00 00 */ stw r0, 0(r29)
+/* 80310258 0030BEB8 48 00 00 0C */ b lbl_80310264
+lbl_8031025C:
+/* 8031025C 0030BEBC 38 00 00 00 */ li r0, 0
+/* 80310260 0030BEC0 90 1D 00 00 */ stw r0, 0(r29)
+lbl_80310264:
+/* 80310264 0030BEC4 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80310268 0030BEC8 3C 03 00 01 */ addis r0, r3, 1
+/* 8031026C 0030BECC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80310270 0030BED0 41 82 00 44 */ beq lbl_803102B4
+/* 80310274 0030BED4 80 7D 00 00 */ lwz r3, 0(r29)
+/* 80310278 0030BED8 88 1F 00 20 */ lbz r0, 0x20(r31)
+/* 8031027C 0030BEDC 7C 60 00 30 */ slw r0, r3, r0
+/* 80310280 0030BEE0 7C 00 D8 40 */ cmplw r0, r27
+/* 80310284 0030BEE4 40 80 00 30 */ bge lbl_803102B4
+/* 80310288 0030BEE8 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 8031028C 0030BEEC 7F 23 CB 78 */ mr r3, r25
+/* 80310290 0030BEF0 7F C4 F3 78 */ mr r4, r30
+/* 80310294 0030BEF4 7F 66 DB 78 */ mr r6, r27
+/* 80310298 0030BEF8 7F 45 04 30 */ srw r5, r26, r0
+/* 8031029C 0030BEFC 7F A7 EB 78 */ mr r7, r29
+/* 803102A0 0030BF00 38 A5 00 01 */ addi r5, r5, 1
+/* 803102A4 0030BF04 4B FF F5 1D */ bl VFiPFFAT_GetClusterContinuousSectorInChain
+/* 803102A8 0030BF08 2C 03 00 00 */ cmpwi r3, 0
+/* 803102AC 0030BF0C 41 82 00 08 */ beq lbl_803102B4
+/* 803102B0 0030BF10 48 00 00 08 */ b lbl_803102B8
+lbl_803102B4:
+/* 803102B4 0030BF14 38 60 00 00 */ li r3, 0
+lbl_803102B8:
+/* 803102B8 0030BF18 39 61 00 30 */ addi r11, r1, 0x30
+/* 803102BC 0030BF1C 4B EB 6E B1 */ bl _restgpr_25
+/* 803102C0 0030BF20 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803102C4 0030BF24 7C 08 03 A6 */ mtlr r0
+/* 803102C8 0030BF28 38 21 00 30 */ addi r1, r1, 0x30
+/* 803102CC 0030BF2C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_CountAllocatedClusters
+VFiPFFAT_CountAllocatedClusters:
+/* 803102D0 0030BF30 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803102D4 0030BF34 7C 08 02 A6 */ mflr r0
+/* 803102D8 0030BF38 2C 03 00 00 */ cmpwi r3, 0
+/* 803102DC 0030BF3C 7C 86 23 78 */ mr r6, r4
+/* 803102E0 0030BF40 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803102E4 0030BF44 38 00 00 00 */ li r0, 0
+/* 803102E8 0030BF48 7C A7 2B 78 */ mr r7, r5
+/* 803102EC 0030BF4C 90 05 00 00 */ stw r0, 0(r5)
+/* 803102F0 0030BF50 40 82 00 0C */ bne lbl_803102FC
+/* 803102F4 0030BF54 38 60 00 0A */ li r3, 0xa
+/* 803102F8 0030BF58 48 00 01 20 */ b lbl_80310418
+lbl_803102FC:
+/* 803102FC 0030BF5C 81 23 00 30 */ lwz r9, 0x30(r3)
+/* 80310300 0030BF60 2C 09 00 00 */ cmpwi r9, 0
+/* 80310304 0030BF64 40 82 00 0C */ bne lbl_80310310
+/* 80310308 0030BF68 38 60 00 0A */ li r3, 0xa
+/* 8031030C 0030BF6C 48 00 01 0C */ b lbl_80310418
+lbl_80310310:
+/* 80310310 0030BF70 81 03 00 00 */ lwz r8, 0(r3)
+/* 80310314 0030BF74 2C 08 00 00 */ cmpwi r8, 0
+/* 80310318 0030BF78 40 82 00 0C */ bne lbl_80310324
+/* 8031031C 0030BF7C 38 60 00 0A */ li r3, 0xa
+/* 80310320 0030BF80 48 00 00 F8 */ b lbl_80310418
+lbl_80310324:
+/* 80310324 0030BF84 80 09 00 08 */ lwz r0, 8(r9)
+/* 80310328 0030BF88 7C 00 40 40 */ cmplw r0, r8
+/* 8031032C 0030BF8C 40 81 00 0C */ ble lbl_80310338
+/* 80310330 0030BF90 38 60 00 0A */ li r3, 0xa
+/* 80310334 0030BF94 48 00 00 E4 */ b lbl_80310418
+lbl_80310338:
+/* 80310338 0030BF98 81 43 00 34 */ lwz r10, 0x34(r3)
+/* 8031033C 0030BF9C 88 0A 18 7A */ lbz r0, 0x187a(r10)
+/* 80310340 0030BFA0 7C 00 07 74 */ extsb r0, r0
+/* 80310344 0030BFA4 2C 00 00 41 */ cmpwi r0, 0x41
+/* 80310348 0030BFA8 41 80 00 0C */ blt lbl_80310354
+/* 8031034C 0030BFAC 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 80310350 0030BFB0 40 81 00 0C */ ble lbl_8031035C
+lbl_80310354:
+/* 80310354 0030BFB4 38 60 00 23 */ li r3, 0x23
+/* 80310358 0030BFB8 48 00 00 C0 */ b lbl_80310418
+lbl_8031035C:
+/* 8031035C 0030BFBC 81 03 00 08 */ lwz r8, 8(r3)
+/* 80310360 0030BFC0 81 68 00 00 */ lwz r11, 0(r8)
+/* 80310364 0030BFC4 28 0B 00 02 */ cmplwi r11, 2
+/* 80310368 0030BFC8 40 80 00 0C */ bge lbl_80310374
+/* 8031036C 0030BFCC 38 60 00 00 */ li r3, 0
+/* 80310370 0030BFD0 48 00 00 A8 */ b lbl_80310418
+lbl_80310374:
+/* 80310374 0030BFD4 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80310378 0030BFD8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031037C 0030BFDC 41 82 00 18 */ beq lbl_80310394
+/* 80310380 0030BFE0 80 83 00 10 */ lwz r4, 0x10(r3)
+/* 80310384 0030BFE4 38 60 00 00 */ li r3, 0
+/* 80310388 0030BFE8 38 04 00 01 */ addi r0, r4, 1
+/* 8031038C 0030BFEC 90 05 00 00 */ stw r0, 0(r5)
+/* 80310390 0030BFF0 48 00 00 88 */ b lbl_80310418
+lbl_80310394:
+/* 80310394 0030BFF4 80 09 00 04 */ lwz r0, 4(r9)
+/* 80310398 0030BFF8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031039C 0030BFFC 41 82 00 60 */ beq lbl_803103FC
+/* 803103A0 0030C000 81 09 00 00 */ lwz r8, 0(r9)
+/* 803103A4 0030C004 88 CA 00 20 */ lbz r6, 0x20(r10)
+/* 803103A8 0030C008 88 0A 00 21 */ lbz r0, 0x21(r10)
+/* 803103AC 0030C00C 39 28 00 01 */ addi r9, r8, 1
+/* 803103B0 0030C010 7C 06 02 14 */ add r0, r6, r0
+/* 803103B4 0030C014 7D 20 00 30 */ slw r0, r9, r0
+/* 803103B8 0030C018 7C 04 00 40 */ cmplw r4, r0
+/* 803103BC 0030C01C 41 81 00 10 */ bgt lbl_803103CC
+/* 803103C0 0030C020 91 25 00 00 */ stw r9, 0(r5)
+/* 803103C4 0030C024 38 60 00 00 */ li r3, 0
+/* 803103C8 0030C028 48 00 00 50 */ b lbl_80310418
+lbl_803103CC:
+/* 803103CC 0030C02C 91 05 00 00 */ stw r8, 0(r5)
+/* 803103D0 0030C030 81 03 00 34 */ lwz r8, 0x34(r3)
+/* 803103D4 0030C034 80 C3 00 30 */ lwz r6, 0x30(r3)
+/* 803103D8 0030C038 88 A8 00 20 */ lbz r5, 0x20(r8)
+/* 803103DC 0030C03C 88 08 00 21 */ lbz r0, 0x21(r8)
+/* 803103E0 0030C040 81 06 00 00 */ lwz r8, 0(r6)
+/* 803103E4 0030C044 7C 05 02 14 */ add r0, r5, r0
+/* 803103E8 0030C048 81 66 00 04 */ lwz r11, 4(r6)
+/* 803103EC 0030C04C 7D 00 00 30 */ slw r0, r8, r0
+/* 803103F0 0030C050 38 A8 00 01 */ addi r5, r8, 1
+/* 803103F4 0030C054 7C C0 20 50 */ subf r6, r0, r4
+/* 803103F8 0030C058 48 00 00 08 */ b lbl_80310400
+lbl_803103FC:
+/* 803103FC 0030C05C 38 A0 00 01 */ li r5, 1
+lbl_80310400:
+/* 80310400 0030C060 7D 64 5B 78 */ mr r4, r11
+/* 80310404 0030C064 4B FF F4 ED */ bl VFiPFFAT_GetClusterAllocatedInChain
+/* 80310408 0030C068 2C 03 00 00 */ cmpwi r3, 0
+/* 8031040C 0030C06C 41 82 00 08 */ beq lbl_80310414
+/* 80310410 0030C070 48 00 00 08 */ b lbl_80310418
+lbl_80310414:
+/* 80310414 0030C074 38 60 00 00 */ li r3, 0
+lbl_80310418:
+/* 80310418 0030C078 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8031041C 0030C07C 7C 08 03 A6 */ mtlr r0
+/* 80310420 0030C080 38 21 00 10 */ addi r1, r1, 0x10
+/* 80310424 0030C084 4E 80 00 20 */ blr
+
+.global VFiPFFAT_FreeChain
+VFiPFFAT_FreeChain:
+/* 80310428 0030C088 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8031042C 0030C08C 7C 08 02 A6 */ mflr r0
+/* 80310430 0030C090 90 01 00 44 */ stw r0, 0x44(r1)
+/* 80310434 0030C094 39 61 00 40 */ addi r11, r1, 0x40
+/* 80310438 0030C098 4B EB 6C E1 */ bl _savegpr_23
+/* 8031043C 0030C09C 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 80310440 0030C0A0 7C 78 1B 78 */ mr r24, r3
+/* 80310444 0030C0A4 7C 99 23 78 */ mr r25, r4
+/* 80310448 0030C0A8 7C BA 2B 78 */ mr r26, r5
+/* 8031044C 0030C0AC 2C 1F 00 00 */ cmpwi r31, 0
+/* 80310450 0030C0B0 7C DB 33 78 */ mr r27, r6
+/* 80310454 0030C0B4 40 82 00 0C */ bne lbl_80310460
+/* 80310458 0030C0B8 38 60 00 0A */ li r3, 0xa
+/* 8031045C 0030C0BC 48 00 03 34 */ b lbl_80310790
+lbl_80310460:
+/* 80310460 0030C0C0 28 04 00 02 */ cmplwi r4, 2
+/* 80310464 0030C0C4 41 80 00 14 */ blt lbl_80310478
+/* 80310468 0030C0C8 80 7F 00 34 */ lwz r3, 0x34(r31)
+/* 8031046C 0030C0CC 38 03 00 02 */ addi r0, r3, 2
+/* 80310470 0030C0D0 7C 04 00 40 */ cmplw r4, r0
+/* 80310474 0030C0D4 41 80 00 14 */ blt lbl_80310488
+lbl_80310478:
+/* 80310478 0030C0D8 2C 04 00 00 */ cmpwi r4, 0
+/* 8031047C 0030C0DC 41 82 00 0C */ beq lbl_80310488
+/* 80310480 0030C0E0 38 60 00 0E */ li r3, 0xe
+/* 80310484 0030C0E4 48 00 03 0C */ b lbl_80310790
+lbl_80310488:
+/* 80310488 0030C0E8 2C 04 00 00 */ cmpwi r4, 0
+/* 8031048C 0030C0EC 40 82 00 0C */ bne lbl_80310498
+/* 80310490 0030C0F0 38 60 00 00 */ li r3, 0
+/* 80310494 0030C0F4 48 00 02 FC */ b lbl_80310790
+lbl_80310498:
+/* 80310498 0030C0F8 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8031049C 0030C0FC 3C 60 80 40 */ lis r3, lbl_803FE280@ha
+/* 803104A0 0030C100 38 63 E2 80 */ addi r3, r3, lbl_803FE280@l
+/* 803104A4 0030C104 2C 06 00 00 */ cmpwi r6, 0
+/* 803104A8 0030C108 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 803104AC 0030C10C 7C 63 02 14 */ add r3, r3, r0
+/* 803104B0 0030C110 83 C3 00 04 */ lwz r30, 4(r3)
+/* 803104B4 0030C114 41 82 00 18 */ beq lbl_803104CC
+/* 803104B8 0030C118 A0 7F 00 00 */ lhz r3, 0(r31)
+/* 803104BC 0030C11C 7F 7D DB 78 */ mr r29, r27
+/* 803104C0 0030C120 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 803104C4 0030C124 7C 7C 00 30 */ slw r28, r3, r0
+/* 803104C8 0030C128 48 00 00 0C */ b lbl_803104D4
+lbl_803104CC:
+/* 803104CC 0030C12C 38 60 00 00 */ li r3, 0
+/* 803104D0 0030C130 48 00 02 C0 */ b lbl_80310790
+lbl_803104D4:
+/* 803104D4 0030C134 7F E3 FB 78 */ mr r3, r31
+/* 803104D8 0030C138 7F 25 CB 78 */ mr r5, r25
+/* 803104DC 0030C13C 38 81 00 08 */ addi r4, r1, 8
+/* 803104E0 0030C140 4B FF E0 59 */ bl VFiPFFAT_ReadFATSector
+/* 803104E4 0030C144 2C 03 00 00 */ cmpwi r3, 0
+/* 803104E8 0030C148 41 82 00 08 */ beq lbl_803104F0
+/* 803104EC 0030C14C 48 00 02 A4 */ b lbl_80310790
+lbl_803104F0:
+/* 803104F0 0030C150 80 61 00 08 */ lwz r3, 8(r1)
+/* 803104F4 0030C154 38 00 00 01 */ li r0, 1
+/* 803104F8 0030C158 B0 03 00 02 */ sth r0, 2(r3)
+/* 803104FC 0030C15C 93 21 00 0C */ stw r25, 0xc(r1)
+/* 80310500 0030C160 48 00 01 F8 */ b lbl_803106F8
+lbl_80310504:
+/* 80310504 0030C164 2C 1B 00 00 */ cmpwi r27, 0
+/* 80310508 0030C168 41 82 00 0C */ beq lbl_80310514
+/* 8031050C 0030C16C 2C 1D 00 00 */ cmpwi r29, 0
+/* 80310510 0030C170 41 82 01 F0 */ beq lbl_80310700
+lbl_80310514:
+/* 80310514 0030C174 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80310518 0030C178 80 61 00 08 */ lwz r3, 8(r1)
+/* 8031051C 0030C17C 2C 00 00 01 */ cmpwi r0, 1
+/* 80310520 0030C180 82 E3 00 18 */ lwz r23, 0x18(r3)
+/* 80310524 0030C184 41 82 00 38 */ beq lbl_8031055C
+/* 80310528 0030C188 40 80 00 10 */ bge lbl_80310538
+/* 8031052C 0030C18C 2C 00 00 00 */ cmpwi r0, 0
+/* 80310530 0030C190 40 80 00 14 */ bge lbl_80310544
+/* 80310534 0030C194 48 00 00 58 */ b lbl_8031058C
+lbl_80310538:
+/* 80310538 0030C198 2C 00 00 03 */ cmpwi r0, 3
+/* 8031053C 0030C19C 40 80 00 50 */ bge lbl_8031058C
+/* 80310540 0030C1A0 48 00 00 34 */ b lbl_80310574
+lbl_80310544:
+/* 80310544 0030C1A4 7F E3 FB 78 */ mr r3, r31
+/* 80310548 0030C1A8 57 24 04 3E */ clrlwi r4, r25, 0x10
+/* 8031054C 0030C1AC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80310550 0030C1B0 38 C1 00 08 */ addi r6, r1, 8
+/* 80310554 0030C1B4 48 00 0E 01 */ bl VFiPFFAT12_ReadFATEntryPage
+/* 80310558 0030C1B8 48 00 00 38 */ b lbl_80310590
+lbl_8031055C:
+/* 8031055C 0030C1BC 7F E3 FB 78 */ mr r3, r31
+/* 80310560 0030C1C0 7F 24 CB 78 */ mr r4, r25
+/* 80310564 0030C1C4 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80310568 0030C1C8 38 C1 00 08 */ addi r6, r1, 8
+/* 8031056C 0030C1CC 48 00 18 51 */ bl VFiPFFAT16_ReadFATEntryPage
+/* 80310570 0030C1D0 48 00 00 20 */ b lbl_80310590
+lbl_80310574:
+/* 80310574 0030C1D4 7F E3 FB 78 */ mr r3, r31
+/* 80310578 0030C1D8 7F 24 CB 78 */ mr r4, r25
+/* 8031057C 0030C1DC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80310580 0030C1E0 38 C1 00 08 */ addi r6, r1, 8
+/* 80310584 0030C1E4 48 00 1D C1 */ bl VFiPFFAT32_ReadFATEntryPage
+/* 80310588 0030C1E8 48 00 00 08 */ b lbl_80310590
+lbl_8031058C:
+/* 8031058C 0030C1EC 38 60 00 0F */ li r3, 0xf
+lbl_80310590:
+/* 80310590 0030C1F0 2C 03 00 00 */ cmpwi r3, 0
+/* 80310594 0030C1F4 41 82 00 08 */ beq lbl_8031059C
+/* 80310598 0030C1F8 48 00 01 F8 */ b lbl_80310790
+lbl_8031059C:
+/* 8031059C 0030C1FC 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 803105A0 0030C200 2C 00 00 00 */ cmpwi r0, 0
+/* 803105A4 0030C204 40 82 00 38 */ bne lbl_803105DC
+/* 803105A8 0030C208 80 81 00 08 */ lwz r4, 8(r1)
+/* 803105AC 0030C20C 38 60 00 00 */ li r3, 0
+/* 803105B0 0030C210 A0 04 00 00 */ lhz r0, 0(r4)
+/* 803105B4 0030C214 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 803105B8 0030C218 2C 00 00 02 */ cmpwi r0, 2
+/* 803105BC 0030C21C 40 82 00 0C */ bne lbl_803105C8
+/* 803105C0 0030C220 7F E3 FB 78 */ mr r3, r31
+/* 803105C4 0030C224 4B FF A3 B9 */ bl VFiPFCACHE_WriteFATPage
+lbl_803105C8:
+/* 803105C8 0030C228 2C 03 00 00 */ cmpwi r3, 0
+/* 803105CC 0030C22C 41 82 00 08 */ beq lbl_803105D4
+/* 803105D0 0030C230 48 00 01 C0 */ b lbl_80310790
+lbl_803105D4:
+/* 803105D4 0030C234 38 60 00 00 */ li r3, 0
+/* 803105D8 0030C238 48 00 01 B8 */ b lbl_80310790
+lbl_803105DC:
+/* 803105DC 0030C23C 80 61 00 08 */ lwz r3, 8(r1)
+/* 803105E0 0030C240 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 803105E4 0030C244 7C 17 00 40 */ cmplw r23, r0
+/* 803105E8 0030C248 41 82 00 20 */ beq lbl_80310608
+/* 803105EC 0030C24C 7F E3 FB 78 */ mr r3, r31
+/* 803105F0 0030C250 7F 25 CB 78 */ mr r5, r25
+/* 803105F4 0030C254 38 81 00 08 */ addi r4, r1, 8
+/* 803105F8 0030C258 4B FF DF 41 */ bl VFiPFFAT_ReadFATSector
+/* 803105FC 0030C25C 2C 03 00 00 */ cmpwi r3, 0
+/* 80310600 0030C260 41 82 00 08 */ beq lbl_80310608
+/* 80310604 0030C264 48 00 01 8C */ b lbl_80310790
+lbl_80310608:
+/* 80310608 0030C268 3C 1A 00 01 */ addis r0, r26, 1
+/* 8031060C 0030C26C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80310610 0030C270 41 82 00 28 */ beq lbl_80310638
+/* 80310614 0030C274 7F 03 C3 78 */ mr r3, r24
+/* 80310618 0030C278 7F 24 CB 78 */ mr r4, r25
+/* 8031061C 0030C27C 7F 45 D3 78 */ mr r5, r26
+/* 80310620 0030C280 39 01 00 08 */ addi r8, r1, 8
+/* 80310624 0030C284 38 C0 00 00 */ li r6, 0
+/* 80310628 0030C288 38 E0 00 01 */ li r7, 1
+/* 8031062C 0030C28C 4B FF E9 99 */ bl VFiPFFAT_WriteClusterPage
+/* 80310630 0030C290 3B 5A 00 01 */ addi r26, r26, 1
+/* 80310634 0030C294 48 00 00 78 */ b lbl_803106AC
+lbl_80310638:
+/* 80310638 0030C298 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8031063C 0030C29C 2C 00 00 01 */ cmpwi r0, 1
+/* 80310640 0030C2A0 41 82 00 38 */ beq lbl_80310678
+/* 80310644 0030C2A4 40 80 00 10 */ bge lbl_80310654
+/* 80310648 0030C2A8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031064C 0030C2AC 40 80 00 14 */ bge lbl_80310660
+/* 80310650 0030C2B0 48 00 00 58 */ b lbl_803106A8
+lbl_80310654:
+/* 80310654 0030C2B4 2C 00 00 03 */ cmpwi r0, 3
+/* 80310658 0030C2B8 40 80 00 50 */ bge lbl_803106A8
+/* 8031065C 0030C2BC 48 00 00 34 */ b lbl_80310690
+lbl_80310660:
+/* 80310660 0030C2C0 7F E3 FB 78 */ mr r3, r31
+/* 80310664 0030C2C4 57 24 04 3E */ clrlwi r4, r25, 0x10
+/* 80310668 0030C2C8 38 C1 00 08 */ addi r6, r1, 8
+/* 8031066C 0030C2CC 38 A0 00 00 */ li r5, 0
+/* 80310670 0030C2D0 48 00 11 5D */ bl VFiPFFAT12_WriteFATEntryPage
+/* 80310674 0030C2D4 48 00 00 38 */ b lbl_803106AC
+lbl_80310678:
+/* 80310678 0030C2D8 7F E3 FB 78 */ mr r3, r31
+/* 8031067C 0030C2DC 7F 24 CB 78 */ mr r4, r25
+/* 80310680 0030C2E0 38 C1 00 08 */ addi r6, r1, 8
+/* 80310684 0030C2E4 38 A0 00 00 */ li r5, 0
+/* 80310688 0030C2E8 48 00 19 89 */ bl VFiPFFAT16_WriteFATEntryPage
+/* 8031068C 0030C2EC 48 00 00 20 */ b lbl_803106AC
+lbl_80310690:
+/* 80310690 0030C2F0 7F E3 FB 78 */ mr r3, r31
+/* 80310694 0030C2F4 7F 24 CB 78 */ mr r4, r25
+/* 80310698 0030C2F8 38 C1 00 08 */ addi r6, r1, 8
+/* 8031069C 0030C2FC 38 A0 00 00 */ li r5, 0
+/* 803106A0 0030C300 48 00 1F 91 */ bl VFiPFFAT32_WriteFATEntryPage
+/* 803106A4 0030C304 48 00 00 08 */ b lbl_803106AC
+lbl_803106A8:
+/* 803106A8 0030C308 38 60 00 0F */ li r3, 0xf
+lbl_803106AC:
+/* 803106AC 0030C30C 2C 03 00 00 */ cmpwi r3, 0
+/* 803106B0 0030C310 41 82 00 08 */ beq lbl_803106B8
+/* 803106B4 0030C314 48 00 00 DC */ b lbl_80310790
+lbl_803106B8:
+/* 803106B8 0030C318 2C 1B 00 00 */ cmpwi r27, 0
+/* 803106BC 0030C31C 41 82 00 20 */ beq lbl_803106DC
+/* 803106C0 0030C320 2C 1D 00 00 */ cmpwi r29, 0
+/* 803106C4 0030C324 41 82 00 18 */ beq lbl_803106DC
+/* 803106C8 0030C328 7C 1D E0 10 */ subfc r0, r29, r28
+/* 803106CC 0030C32C 7C 7D 01 94 */ addze r3, r29
+/* 803106D0 0030C330 7C 1C E8 50 */ subf r0, r28, r29
+/* 803106D4 0030C334 7C 63 E8 50 */ subf r3, r3, r29
+/* 803106D8 0030C338 7C 1D 18 78 */ andc r29, r0, r3
+lbl_803106DC:
+/* 803106DC 0030C33C 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 803106E0 0030C340 3C 03 00 01 */ addis r0, r3, 1
+/* 803106E4 0030C344 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803106E8 0030C348 41 82 00 0C */ beq lbl_803106F4
+/* 803106EC 0030C34C 38 03 00 01 */ addi r0, r3, 1
+/* 803106F0 0030C350 90 1F 00 38 */ stw r0, 0x38(r31)
+lbl_803106F4:
+/* 803106F4 0030C354 83 21 00 0C */ lwz r25, 0xc(r1)
+lbl_803106F8:
+/* 803106F8 0030C358 7C 19 F0 40 */ cmplw r25, r30
+/* 803106FC 0030C35C 41 80 FE 08 */ blt lbl_80310504
+lbl_80310700:
+/* 80310700 0030C360 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310704 0030C364 38 60 00 00 */ li r3, 0
+/* 80310708 0030C368 A0 04 00 00 */ lhz r0, 0(r4)
+/* 8031070C 0030C36C 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 80310710 0030C370 2C 00 00 02 */ cmpwi r0, 2
+/* 80310714 0030C374 40 82 00 0C */ bne lbl_80310720
+/* 80310718 0030C378 7F E3 FB 78 */ mr r3, r31
+/* 8031071C 0030C37C 4B FF A2 61 */ bl VFiPFCACHE_WriteFATPage
+lbl_80310720:
+/* 80310720 0030C380 2C 03 00 00 */ cmpwi r3, 0
+/* 80310724 0030C384 41 82 00 08 */ beq lbl_8031072C
+/* 80310728 0030C388 48 00 00 68 */ b lbl_80310790
+lbl_8031072C:
+/* 8031072C 0030C38C 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80310730 0030C390 2C 80 00 02 */ cmpwi cr1, r0, 2
+/* 80310734 0030C394 40 86 00 58 */ bne cr1, lbl_8031078C
+/* 80310738 0030C398 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8031073C 0030C39C 54 03 07 BD */ rlwinm. r3, r0, 0, 0x1e, 0x1e
+/* 80310740 0030C3A0 41 82 00 4C */ beq lbl_8031078C
+/* 80310744 0030C3A4 38 60 00 00 */ li r3, 0
+/* 80310748 0030C3A8 41 86 00 0C */ beq cr1, lbl_80310754
+/* 8031074C 0030C3AC 38 60 00 0C */ li r3, 0xc
+/* 80310750 0030C3B0 48 00 00 20 */ b lbl_80310770
+lbl_80310754:
+/* 80310754 0030C3B4 40 82 00 0C */ bne lbl_80310760
+/* 80310758 0030C3B8 38 60 00 24 */ li r3, 0x24
+/* 8031075C 0030C3BC 48 00 00 14 */ b lbl_80310770
+lbl_80310760:
+/* 80310760 0030C3C0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 80310764 0030C3C4 41 82 00 0C */ beq lbl_80310770
+/* 80310768 0030C3C8 7F E3 FB 78 */ mr r3, r31
+/* 8031076C 0030C3CC 4B FF 54 31 */ bl VFiPFDRV_StoreFreeCountToFSINFO
+lbl_80310770:
+/* 80310770 0030C3D0 2C 03 00 00 */ cmpwi r3, 0
+/* 80310774 0030C3D4 41 82 00 18 */ beq lbl_8031078C
+/* 80310778 0030C3D8 38 00 FF FF */ li r0, -1
+/* 8031077C 0030C3DC 90 1F 00 38 */ stw r0, 0x38(r31)
+/* 80310780 0030C3E0 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 80310784 0030C3E4 54 00 07 B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c
+/* 80310788 0030C3E8 B0 1F 18 7C */ sth r0, 0x187c(r31)
+lbl_8031078C:
+/* 8031078C 0030C3EC 38 60 00 00 */ li r3, 0
+lbl_80310790:
+/* 80310790 0030C3F0 39 61 00 40 */ addi r11, r1, 0x40
+/* 80310794 0030C3F4 4B EB 69 D1 */ bl _restgpr_23
+/* 80310798 0030C3F8 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8031079C 0030C3FC 7C 08 03 A6 */ mtlr r0
+/* 803107A0 0030C400 38 21 00 40 */ addi r1, r1, 0x40
+/* 803107A4 0030C404 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetBeforeChain
+VFiPFFAT_GetBeforeChain:
+/* 803107A8 0030C408 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803107AC 0030C40C 7C 08 02 A6 */ mflr r0
+/* 803107B0 0030C410 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803107B4 0030C414 39 61 00 30 */ addi r11, r1, 0x30
+/* 803107B8 0030C418 4B EB 69 71 */ bl _savegpr_27
+/* 803107BC 0030C41C 2C 03 00 00 */ cmpwi r3, 0
+/* 803107C0 0030C420 7C 7C 1B 78 */ mr r28, r3
+/* 803107C4 0030C424 7C 9D 23 78 */ mr r29, r4
+/* 803107C8 0030C428 7C BE 2B 78 */ mr r30, r5
+/* 803107CC 0030C42C 7C DF 33 78 */ mr r31, r6
+/* 803107D0 0030C430 40 82 00 14 */ bne lbl_803107E4
+/* 803107D4 0030C434 38 00 FF FF */ li r0, -1
+/* 803107D8 0030C438 38 60 00 0A */ li r3, 0xa
+/* 803107DC 0030C43C 90 06 00 00 */ stw r0, 0(r6)
+/* 803107E0 0030C440 48 00 01 48 */ b lbl_80310928
+lbl_803107E4:
+/* 803107E4 0030C444 28 04 00 02 */ cmplwi r4, 2
+/* 803107E8 0030C448 41 80 00 14 */ blt lbl_803107FC
+/* 803107EC 0030C44C 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 803107F0 0030C450 38 05 00 02 */ addi r0, r5, 2
+/* 803107F4 0030C454 7C 04 00 40 */ cmplw r4, r0
+/* 803107F8 0030C458 41 80 00 14 */ blt lbl_8031080C
+lbl_803107FC:
+/* 803107FC 0030C45C 38 00 FF FF */ li r0, -1
+/* 80310800 0030C460 38 60 00 0A */ li r3, 0xa
+/* 80310804 0030C464 90 06 00 00 */ stw r0, 0(r6)
+/* 80310808 0030C468 48 00 01 20 */ b lbl_80310928
+lbl_8031080C:
+/* 8031080C 0030C46C 80 83 00 1C */ lwz r4, 0x1c(r3)
+/* 80310810 0030C470 3D 00 80 40 */ lis r8, lbl_803FE280@ha
+/* 80310814 0030C474 38 00 FF FF */ li r0, -1
+/* 80310818 0030C478 7F A5 EB 78 */ mr r5, r29
+/* 8031081C 0030C47C 1C E4 00 14 */ mulli r7, r4, 0x14
+/* 80310820 0030C480 39 08 E2 80 */ addi r8, r8, lbl_803FE280@l
+/* 80310824 0030C484 90 06 00 00 */ stw r0, 0(r6)
+/* 80310828 0030C488 38 81 00 08 */ addi r4, r1, 8
+/* 8031082C 0030C48C 7C C8 3A 14 */ add r6, r8, r7
+/* 80310830 0030C490 83 66 00 04 */ lwz r27, 4(r6)
+/* 80310834 0030C494 4B FF DD 05 */ bl VFiPFFAT_ReadFATSector
+/* 80310838 0030C498 2C 03 00 00 */ cmpwi r3, 0
+/* 8031083C 0030C49C 41 82 00 08 */ beq lbl_80310844
+/* 80310840 0030C4A0 48 00 00 E8 */ b lbl_80310928
+lbl_80310844:
+/* 80310844 0030C4A4 80 61 00 08 */ lwz r3, 8(r1)
+/* 80310848 0030C4A8 38 00 00 00 */ li r0, 0
+/* 8031084C 0030C4AC B0 03 00 02 */ sth r0, 2(r3)
+/* 80310850 0030C4B0 48 00 00 CC */ b lbl_8031091C
+lbl_80310854:
+/* 80310854 0030C4B4 80 1C 00 1C */ lwz r0, 0x1c(r28)
+/* 80310858 0030C4B8 2C 00 00 01 */ cmpwi r0, 1
+/* 8031085C 0030C4BC 41 82 00 38 */ beq lbl_80310894
+/* 80310860 0030C4C0 40 80 00 10 */ bge lbl_80310870
+/* 80310864 0030C4C4 2C 00 00 00 */ cmpwi r0, 0
+/* 80310868 0030C4C8 40 80 00 14 */ bge lbl_8031087C
+/* 8031086C 0030C4CC 48 00 00 58 */ b lbl_803108C4
+lbl_80310870:
+/* 80310870 0030C4D0 2C 00 00 03 */ cmpwi r0, 3
+/* 80310874 0030C4D4 40 80 00 50 */ bge lbl_803108C4
+/* 80310878 0030C4D8 48 00 00 34 */ b lbl_803108AC
+lbl_8031087C:
+/* 8031087C 0030C4DC 7F 83 E3 78 */ mr r3, r28
+/* 80310880 0030C4E0 57 A4 04 3E */ clrlwi r4, r29, 0x10
+/* 80310884 0030C4E4 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80310888 0030C4E8 38 C1 00 08 */ addi r6, r1, 8
+/* 8031088C 0030C4EC 48 00 0A C9 */ bl VFiPFFAT12_ReadFATEntryPage
+/* 80310890 0030C4F0 48 00 00 38 */ b lbl_803108C8
+lbl_80310894:
+/* 80310894 0030C4F4 7F 83 E3 78 */ mr r3, r28
+/* 80310898 0030C4F8 7F A4 EB 78 */ mr r4, r29
+/* 8031089C 0030C4FC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 803108A0 0030C500 38 C1 00 08 */ addi r6, r1, 8
+/* 803108A4 0030C504 48 00 15 19 */ bl VFiPFFAT16_ReadFATEntryPage
+/* 803108A8 0030C508 48 00 00 20 */ b lbl_803108C8
+lbl_803108AC:
+/* 803108AC 0030C50C 7F 83 E3 78 */ mr r3, r28
+/* 803108B0 0030C510 7F A4 EB 78 */ mr r4, r29
+/* 803108B4 0030C514 38 A1 00 0C */ addi r5, r1, 0xc
+/* 803108B8 0030C518 38 C1 00 08 */ addi r6, r1, 8
+/* 803108BC 0030C51C 48 00 1A 89 */ bl VFiPFFAT32_ReadFATEntryPage
+/* 803108C0 0030C520 48 00 00 08 */ b lbl_803108C8
+lbl_803108C4:
+/* 803108C4 0030C524 38 60 00 0F */ li r3, 0xf
+lbl_803108C8:
+/* 803108C8 0030C528 2C 03 00 00 */ cmpwi r3, 0
+/* 803108CC 0030C52C 41 82 00 08 */ beq lbl_803108D4
+/* 803108D0 0030C530 48 00 00 58 */ b lbl_80310928
+lbl_803108D4:
+/* 803108D4 0030C534 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 803108D8 0030C538 7C 1E 00 40 */ cmplw r30, r0
+/* 803108DC 0030C53C 40 82 00 10 */ bne lbl_803108EC
+/* 803108E0 0030C540 93 BF 00 00 */ stw r29, 0(r31)
+/* 803108E4 0030C544 38 60 00 00 */ li r3, 0
+/* 803108E8 0030C548 48 00 00 40 */ b lbl_80310928
+lbl_803108EC:
+/* 803108EC 0030C54C 3B BD FF FF */ addi r29, r29, -1
+/* 803108F0 0030C550 28 1D 00 02 */ cmplwi r29, 2
+/* 803108F4 0030C554 41 80 00 14 */ blt lbl_80310908
+/* 803108F8 0030C558 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 803108FC 0030C55C 38 03 00 02 */ addi r0, r3, 2
+/* 80310900 0030C560 7C 1D 00 40 */ cmplw r29, r0
+/* 80310904 0030C564 41 80 00 18 */ blt lbl_8031091C
+lbl_80310908:
+/* 80310908 0030C568 7C 1D D8 40 */ cmplw r29, r27
+/* 8031090C 0030C56C 40 80 00 10 */ bge lbl_8031091C
+/* 80310910 0030C570 93 DF 00 00 */ stw r30, 0(r31)
+/* 80310914 0030C574 38 60 00 00 */ li r3, 0
+/* 80310918 0030C578 48 00 00 10 */ b lbl_80310928
+lbl_8031091C:
+/* 8031091C 0030C57C 7C 1D D8 40 */ cmplw r29, r27
+/* 80310920 0030C580 41 80 FF 34 */ blt lbl_80310854
+/* 80310924 0030C584 38 60 00 0D */ li r3, 0xd
+lbl_80310928:
+/* 80310928 0030C588 39 61 00 30 */ addi r11, r1, 0x30
+/* 8031092C 0030C58C 4B EB 68 49 */ bl _restgpr_27
+/* 80310930 0030C590 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80310934 0030C594 7C 08 03 A6 */ mtlr r0
+/* 80310938 0030C598 38 21 00 30 */ addi r1, r1, 0x30
+/* 8031093C 0030C59C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_InitFATRegion
+VFiPFFAT_InitFATRegion:
+/* 80310940 0030C5A0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80310944 0030C5A4 7C 08 02 A6 */ mflr r0
+/* 80310948 0030C5A8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031094C 0030C5AC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80310950 0030C5B0 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80310954 0030C5B4 7C 7F 1B 78 */ mr r31, r3
+/* 80310958 0030C5B8 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8031095C 0030C5BC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80310960 0030C5C0 40 82 00 0C */ bne lbl_8031096C
+/* 80310964 0030C5C4 38 60 00 0A */ li r3, 0xa
+/* 80310968 0030C5C8 48 00 02 40 */ b lbl_80310BA8
+lbl_8031096C:
+/* 8031096C 0030C5CC 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80310970 0030C5D0 2C 00 00 00 */ cmpwi r0, 0
+/* 80310974 0030C5D4 41 82 00 1C */ beq lbl_80310990
+/* 80310978 0030C5D8 2C 00 00 01 */ cmpwi r0, 1
+/* 8031097C 0030C5DC 41 82 00 14 */ beq lbl_80310990
+/* 80310980 0030C5E0 2C 00 00 02 */ cmpwi r0, 2
+/* 80310984 0030C5E4 41 82 00 0C */ beq lbl_80310990
+/* 80310988 0030C5E8 38 60 00 0F */ li r3, 0xf
+/* 8031098C 0030C5EC 48 00 02 1C */ b lbl_80310BA8
+lbl_80310990:
+/* 80310990 0030C5F0 7F E3 FB 78 */ mr r3, r31
+/* 80310994 0030C5F4 38 A1 00 08 */ addi r5, r1, 8
+/* 80310998 0030C5F8 38 80 FF FF */ li r4, -1
+/* 8031099C 0030C5FC 4B FF 9C A9 */ bl VFiPFCACHE_AllocateFATPage
+/* 803109A0 0030C600 2C 03 00 00 */ cmpwi r3, 0
+/* 803109A4 0030C604 41 82 00 08 */ beq lbl_803109AC
+/* 803109A8 0030C608 48 00 02 00 */ b lbl_80310BA8
+lbl_803109AC:
+/* 803109AC 0030C60C 80 61 00 08 */ lwz r3, 8(r1)
+/* 803109B0 0030C610 38 80 00 00 */ li r4, 0
+/* 803109B4 0030C614 A0 BF 00 00 */ lhz r5, 0(r31)
+/* 803109B8 0030C618 80 63 00 08 */ lwz r3, 8(r3)
+/* 803109BC 0030C61C 4B FF 46 19 */ bl VFipf_memset
+/* 803109C0 0030C620 A3 BF 00 02 */ lhz r29, 2(r31)
+/* 803109C4 0030C624 48 00 00 3C */ b lbl_80310A00
+lbl_803109C8:
+/* 803109C8 0030C628 80 81 00 08 */ lwz r4, 8(r1)
+/* 803109CC 0030C62C 7F E3 FB 78 */ mr r3, r31
+/* 803109D0 0030C630 7F A5 EB 78 */ mr r5, r29
+/* 803109D4 0030C634 80 84 00 08 */ lwz r4, 8(r4)
+/* 803109D8 0030C638 4B FF A0 1D */ bl VFiPFCACHE_WriteFATSectorAndFreeIfNeeded
+/* 803109DC 0030C63C 2C 03 00 00 */ cmpwi r3, 0
+/* 803109E0 0030C640 7C 7E 1B 78 */ mr r30, r3
+/* 803109E4 0030C644 41 82 00 18 */ beq lbl_803109FC
+/* 803109E8 0030C648 80 81 00 08 */ lwz r4, 8(r1)
+/* 803109EC 0030C64C 7F E3 FB 78 */ mr r3, r31
+/* 803109F0 0030C650 4B FF 9D 3D */ bl VFiPFCACHE_FreeFATPage
+/* 803109F4 0030C654 7F C3 F3 78 */ mr r3, r30
+/* 803109F8 0030C658 48 00 01 B0 */ b lbl_80310BA8
+lbl_803109FC:
+/* 803109FC 0030C65C 3B BD 00 01 */ addi r29, r29, 1
+lbl_80310A00:
+/* 80310A00 0030C660 80 1F 00 2C */ lwz r0, 0x2c(r31)
+/* 80310A04 0030C664 7C 1D 00 40 */ cmplw r29, r0
+/* 80310A08 0030C668 41 80 FF C0 */ blt lbl_803109C8
+/* 80310A0C 0030C66C 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310A10 0030C670 7F E3 FB 78 */ mr r3, r31
+/* 80310A14 0030C674 4B FF 9D 19 */ bl VFiPFCACHE_FreeFATPage
+/* 80310A18 0030C678 80 DF 00 1C */ lwz r6, 0x1c(r31)
+/* 80310A1C 0030C67C 3C 60 80 40 */ lis r3, lbl_803FE280@ha
+/* 80310A20 0030C680 38 63 E2 80 */ addi r3, r3, lbl_803FE280@l
+/* 80310A24 0030C684 88 9F 00 1A */ lbz r4, 0x1a(r31)
+/* 80310A28 0030C688 1C 06 00 14 */ mulli r0, r6, 0x14
+/* 80310A2C 0030C68C 2C 06 00 01 */ cmpwi r6, 1
+/* 80310A30 0030C690 7C 63 02 14 */ add r3, r3, r0
+/* 80310A34 0030C694 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80310A38 0030C698 7C 85 03 78 */ or r5, r4, r0
+/* 80310A3C 0030C69C 41 82 00 44 */ beq lbl_80310A80
+/* 80310A40 0030C6A0 40 80 00 10 */ bge lbl_80310A50
+/* 80310A44 0030C6A4 2C 06 00 00 */ cmpwi r6, 0
+/* 80310A48 0030C6A8 40 80 00 14 */ bge lbl_80310A5C
+/* 80310A4C 0030C6AC 48 00 00 7C */ b lbl_80310AC8
+lbl_80310A50:
+/* 80310A50 0030C6B0 2C 06 00 03 */ cmpwi r6, 3
+/* 80310A54 0030C6B4 40 80 00 74 */ bge lbl_80310AC8
+/* 80310A58 0030C6B8 48 00 00 48 */ b lbl_80310AA0
+lbl_80310A5C:
+/* 80310A5C 0030C6BC 28 05 0F FF */ cmplwi r5, 0xfff
+/* 80310A60 0030C6C0 40 81 00 0C */ ble lbl_80310A6C
+/* 80310A64 0030C6C4 38 60 00 10 */ li r3, 0x10
+/* 80310A68 0030C6C8 48 00 00 64 */ b lbl_80310ACC
+lbl_80310A6C:
+/* 80310A6C 0030C6CC 7F E3 FB 78 */ mr r3, r31
+/* 80310A70 0030C6D0 54 A5 04 3E */ clrlwi r5, r5, 0x10
+/* 80310A74 0030C6D4 38 80 00 00 */ li r4, 0
+/* 80310A78 0030C6D8 48 00 0B B1 */ bl VFiPFFAT12_WriteFATEntry
+/* 80310A7C 0030C6DC 48 00 00 50 */ b lbl_80310ACC
+lbl_80310A80:
+/* 80310A80 0030C6E0 28 05 FF FF */ cmplwi r5, 0xffff
+/* 80310A84 0030C6E4 40 81 00 0C */ ble lbl_80310A90
+/* 80310A88 0030C6E8 38 60 00 10 */ li r3, 0x10
+/* 80310A8C 0030C6EC 48 00 00 40 */ b lbl_80310ACC
+lbl_80310A90:
+/* 80310A90 0030C6F0 7F E3 FB 78 */ mr r3, r31
+/* 80310A94 0030C6F4 38 80 00 00 */ li r4, 0
+/* 80310A98 0030C6F8 48 00 14 E1 */ bl VFiPFFAT16_WriteFATEntry
+/* 80310A9C 0030C6FC 48 00 00 30 */ b lbl_80310ACC
+lbl_80310AA0:
+/* 80310AA0 0030C700 3C 60 10 00 */ lis r3, 0x0FFFFFFF@ha
+/* 80310AA4 0030C704 38 03 FF FF */ addi r0, r3, 0x0FFFFFFF@l
+/* 80310AA8 0030C708 7C 05 00 40 */ cmplw r5, r0
+/* 80310AAC 0030C70C 40 81 00 0C */ ble lbl_80310AB8
+/* 80310AB0 0030C710 38 60 00 10 */ li r3, 0x10
+/* 80310AB4 0030C714 48 00 00 18 */ b lbl_80310ACC
+lbl_80310AB8:
+/* 80310AB8 0030C718 7F E3 FB 78 */ mr r3, r31
+/* 80310ABC 0030C71C 38 80 00 00 */ li r4, 0
+/* 80310AC0 0030C720 48 00 1A 51 */ bl VFiPFFAT32_WriteFATEntry
+/* 80310AC4 0030C724 48 00 00 08 */ b lbl_80310ACC
+lbl_80310AC8:
+/* 80310AC8 0030C728 38 60 00 0F */ li r3, 0xf
+lbl_80310ACC:
+/* 80310ACC 0030C72C 2C 03 00 00 */ cmpwi r3, 0
+/* 80310AD0 0030C730 41 82 00 08 */ beq lbl_80310AD8
+/* 80310AD4 0030C734 48 00 00 D4 */ b lbl_80310BA8
+lbl_80310AD8:
+/* 80310AD8 0030C738 80 9F 00 1C */ lwz r4, 0x1c(r31)
+/* 80310ADC 0030C73C 3C 60 80 40 */ lis r3, lbl_803FE280@ha
+/* 80310AE0 0030C740 38 63 E2 80 */ addi r3, r3, lbl_803FE280@l
+/* 80310AE4 0030C744 1C 04 00 14 */ mulli r0, r4, 0x14
+/* 80310AE8 0030C748 2C 04 00 01 */ cmpwi r4, 1
+/* 80310AEC 0030C74C 7C 63 02 14 */ add r3, r3, r0
+/* 80310AF0 0030C750 80 A3 00 10 */ lwz r5, 0x10(r3)
+/* 80310AF4 0030C754 41 82 00 44 */ beq lbl_80310B38
+/* 80310AF8 0030C758 40 80 00 10 */ bge lbl_80310B08
+/* 80310AFC 0030C75C 2C 04 00 00 */ cmpwi r4, 0
+/* 80310B00 0030C760 40 80 00 14 */ bge lbl_80310B14
+/* 80310B04 0030C764 48 00 00 7C */ b lbl_80310B80
+lbl_80310B08:
+/* 80310B08 0030C768 2C 04 00 03 */ cmpwi r4, 3
+/* 80310B0C 0030C76C 40 80 00 74 */ bge lbl_80310B80
+/* 80310B10 0030C770 48 00 00 48 */ b lbl_80310B58
+lbl_80310B14:
+/* 80310B14 0030C774 28 05 0F FF */ cmplwi r5, 0xfff
+/* 80310B18 0030C778 40 81 00 0C */ ble lbl_80310B24
+/* 80310B1C 0030C77C 38 60 00 10 */ li r3, 0x10
+/* 80310B20 0030C780 48 00 00 64 */ b lbl_80310B84
+lbl_80310B24:
+/* 80310B24 0030C784 7F E3 FB 78 */ mr r3, r31
+/* 80310B28 0030C788 54 A5 04 3E */ clrlwi r5, r5, 0x10
+/* 80310B2C 0030C78C 38 80 00 01 */ li r4, 1
+/* 80310B30 0030C790 48 00 0A F9 */ bl VFiPFFAT12_WriteFATEntry
+/* 80310B34 0030C794 48 00 00 50 */ b lbl_80310B84
+lbl_80310B38:
+/* 80310B38 0030C798 28 05 FF FF */ cmplwi r5, 0xffff
+/* 80310B3C 0030C79C 40 81 00 0C */ ble lbl_80310B48
+/* 80310B40 0030C7A0 38 60 00 10 */ li r3, 0x10
+/* 80310B44 0030C7A4 48 00 00 40 */ b lbl_80310B84
+lbl_80310B48:
+/* 80310B48 0030C7A8 7F E3 FB 78 */ mr r3, r31
+/* 80310B4C 0030C7AC 38 80 00 01 */ li r4, 1
+/* 80310B50 0030C7B0 48 00 14 29 */ bl VFiPFFAT16_WriteFATEntry
+/* 80310B54 0030C7B4 48 00 00 30 */ b lbl_80310B84
+lbl_80310B58:
+/* 80310B58 0030C7B8 3C 60 10 00 */ lis r3, 0x0FFFFFFF@ha
+/* 80310B5C 0030C7BC 38 03 FF FF */ addi r0, r3, 0x0FFFFFFF@l
+/* 80310B60 0030C7C0 7C 05 00 40 */ cmplw r5, r0
+/* 80310B64 0030C7C4 40 81 00 0C */ ble lbl_80310B70
+/* 80310B68 0030C7C8 38 60 00 10 */ li r3, 0x10
+/* 80310B6C 0030C7CC 48 00 00 18 */ b lbl_80310B84
+lbl_80310B70:
+/* 80310B70 0030C7D0 7F E3 FB 78 */ mr r3, r31
+/* 80310B74 0030C7D4 38 80 00 01 */ li r4, 1
+/* 80310B78 0030C7D8 48 00 19 99 */ bl VFiPFFAT32_WriteFATEntry
+/* 80310B7C 0030C7DC 48 00 00 08 */ b lbl_80310B84
+lbl_80310B80:
+/* 80310B80 0030C7E0 38 60 00 0F */ li r3, 0xf
+lbl_80310B84:
+/* 80310B84 0030C7E4 2C 03 00 00 */ cmpwi r3, 0
+/* 80310B88 0030C7E8 41 82 00 08 */ beq lbl_80310B90
+/* 80310B8C 0030C7EC 48 00 00 1C */ b lbl_80310BA8
+lbl_80310B90:
+/* 80310B90 0030C7F0 7F E3 FB 78 */ mr r3, r31
+/* 80310B94 0030C7F4 4B FF 9F 1D */ bl VFiPFCACHE_FlushFATCache
+/* 80310B98 0030C7F8 7C 03 00 D0 */ neg r0, r3
+/* 80310B9C 0030C7FC 7C 00 1B 78 */ or r0, r0, r3
+/* 80310BA0 0030C800 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 80310BA4 0030C804 7C 63 00 38 */ and r3, r3, r0
+lbl_80310BA8:
+/* 80310BA8 0030C808 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80310BAC 0030C80C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80310BB0 0030C810 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80310BB4 0030C814 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80310BB8 0030C818 7C 08 03 A6 */ mtlr r0
+/* 80310BBC 0030C81C 38 21 00 20 */ addi r1, r1, 0x20
+/* 80310BC0 0030C820 4E 80 00 20 */ blr
+
+.global VFiPFFAT_MakeRootDir
+VFiPFFAT_MakeRootDir:
+/* 80310BC4 0030C824 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80310BC8 0030C828 7C 08 02 A6 */ mflr r0
+/* 80310BCC 0030C82C 3C A0 80 40 */ lis r5, lbl_803FE280@ha
+/* 80310BD0 0030C830 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80310BD4 0030C834 38 A5 E2 80 */ addi r5, r5, lbl_803FE280@l
+/* 80310BD8 0030C838 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80310BDC 0030C83C 7C 7F 1B 78 */ mr r31, r3
+/* 80310BE0 0030C840 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80310BE4 0030C844 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80310BE8 0030C848 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80310BEC 0030C84C 80 C3 00 1C */ lwz r6, 0x1c(r3)
+/* 80310BF0 0030C850 80 83 00 10 */ lwz r4, 0x10(r3)
+/* 80310BF4 0030C854 1C 06 00 14 */ mulli r0, r6, 0x14
+/* 80310BF8 0030C858 2C 06 00 01 */ cmpwi r6, 1
+/* 80310BFC 0030C85C 7C A5 02 14 */ add r5, r5, r0
+/* 80310C00 0030C860 80 A5 00 08 */ lwz r5, 8(r5)
+/* 80310C04 0030C864 41 82 00 40 */ beq lbl_80310C44
+/* 80310C08 0030C868 40 80 00 10 */ bge lbl_80310C18
+/* 80310C0C 0030C86C 2C 06 00 00 */ cmpwi r6, 0
+/* 80310C10 0030C870 40 80 00 14 */ bge lbl_80310C24
+/* 80310C14 0030C874 48 00 00 68 */ b lbl_80310C7C
+lbl_80310C18:
+/* 80310C18 0030C878 2C 06 00 03 */ cmpwi r6, 3
+/* 80310C1C 0030C87C 40 80 00 60 */ bge lbl_80310C7C
+/* 80310C20 0030C880 48 00 00 3C */ b lbl_80310C5C
+lbl_80310C24:
+/* 80310C24 0030C884 28 05 0F FF */ cmplwi r5, 0xfff
+/* 80310C28 0030C888 40 81 00 0C */ ble lbl_80310C34
+/* 80310C2C 0030C88C 38 60 00 10 */ li r3, 0x10
+/* 80310C30 0030C890 48 00 00 50 */ b lbl_80310C80
+lbl_80310C34:
+/* 80310C34 0030C894 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 80310C38 0030C898 54 A5 04 3E */ clrlwi r5, r5, 0x10
+/* 80310C3C 0030C89C 48 00 09 ED */ bl VFiPFFAT12_WriteFATEntry
+/* 80310C40 0030C8A0 48 00 00 40 */ b lbl_80310C80
+lbl_80310C44:
+/* 80310C44 0030C8A4 28 05 FF FF */ cmplwi r5, 0xffff
+/* 80310C48 0030C8A8 40 81 00 0C */ ble lbl_80310C54
+/* 80310C4C 0030C8AC 38 60 00 10 */ li r3, 0x10
+/* 80310C50 0030C8B0 48 00 00 30 */ b lbl_80310C80
+lbl_80310C54:
+/* 80310C54 0030C8B4 48 00 13 25 */ bl VFiPFFAT16_WriteFATEntry
+/* 80310C58 0030C8B8 48 00 00 28 */ b lbl_80310C80
+lbl_80310C5C:
+/* 80310C5C 0030C8BC 3C C0 10 00 */ lis r6, 0x0FFFFFFF@ha
+/* 80310C60 0030C8C0 38 06 FF FF */ addi r0, r6, 0x0FFFFFFF@l
+/* 80310C64 0030C8C4 7C 05 00 40 */ cmplw r5, r0
+/* 80310C68 0030C8C8 40 81 00 0C */ ble lbl_80310C74
+/* 80310C6C 0030C8CC 38 60 00 10 */ li r3, 0x10
+/* 80310C70 0030C8D0 48 00 00 10 */ b lbl_80310C80
+lbl_80310C74:
+/* 80310C74 0030C8D4 48 00 18 9D */ bl VFiPFFAT32_WriteFATEntry
+/* 80310C78 0030C8D8 48 00 00 08 */ b lbl_80310C80
+lbl_80310C7C:
+/* 80310C7C 0030C8DC 38 60 00 0F */ li r3, 0xf
+lbl_80310C80:
+/* 80310C80 0030C8E0 2C 03 00 00 */ cmpwi r3, 0
+/* 80310C84 0030C8E4 41 82 00 08 */ beq lbl_80310C8C
+/* 80310C88 0030C8E8 48 00 00 F0 */ b lbl_80310D78
+lbl_80310C8C:
+/* 80310C8C 0030C8EC 7F E3 FB 78 */ mr r3, r31
+/* 80310C90 0030C8F0 4B FF 9E 21 */ bl VFiPFCACHE_FlushFATCache
+/* 80310C94 0030C8F4 2C 03 00 00 */ cmpwi r3, 0
+/* 80310C98 0030C8F8 41 82 00 08 */ beq lbl_80310CA0
+/* 80310C9C 0030C8FC 48 00 00 DC */ b lbl_80310D78
+lbl_80310CA0:
+/* 80310CA0 0030C900 7F E3 FB 78 */ mr r3, r31
+/* 80310CA4 0030C904 38 A1 00 08 */ addi r5, r1, 8
+/* 80310CA8 0030C908 38 80 FF FF */ li r4, -1
+/* 80310CAC 0030C90C 4B FF 9A 0D */ bl VFiPFCACHE_AllocateDataPage
+/* 80310CB0 0030C910 2C 03 00 00 */ cmpwi r3, 0
+/* 80310CB4 0030C914 41 82 00 08 */ beq lbl_80310CBC
+/* 80310CB8 0030C918 48 00 00 C0 */ b lbl_80310D78
+lbl_80310CBC:
+/* 80310CBC 0030C91C 80 61 00 08 */ lwz r3, 8(r1)
+/* 80310CC0 0030C920 38 80 00 00 */ li r4, 0
+/* 80310CC4 0030C924 A0 BF 00 00 */ lhz r5, 0(r31)
+/* 80310CC8 0030C928 80 63 00 08 */ lwz r3, 8(r3)
+/* 80310CCC 0030C92C 4B FF 43 09 */ bl VFipf_memset
+/* 80310CD0 0030C930 80 7F 00 10 */ lwz r3, 0x10(r31)
+/* 80310CD4 0030C934 3B 80 00 00 */ li r28, 0
+/* 80310CD8 0030C938 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 80310CDC 0030C93C 38 63 FF FE */ addi r3, r3, -2
+/* 80310CE0 0030C940 80 9F 00 30 */ lwz r4, 0x30(r31)
+/* 80310CE4 0030C944 7C 60 00 30 */ slw r0, r3, r0
+/* 80310CE8 0030C948 7F A4 02 14 */ add r29, r4, r0
+/* 80310CEC 0030C94C 48 00 00 70 */ b lbl_80310D5C
+lbl_80310CF0:
+/* 80310CF0 0030C950 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310CF4 0030C954 7F E3 FB 78 */ mr r3, r31
+/* 80310CF8 0030C958 A0 FF 00 00 */ lhz r7, 0(r31)
+/* 80310CFC 0030C95C 7C BD E2 14 */ add r5, r29, r28
+/* 80310D00 0030C960 80 84 00 08 */ lwz r4, 8(r4)
+/* 80310D04 0030C964 39 01 00 0C */ addi r8, r1, 0xc
+/* 80310D08 0030C968 38 C0 00 00 */ li r6, 0
+/* 80310D0C 0030C96C 39 20 00 00 */ li r9, 0
+/* 80310D10 0030C970 48 00 80 D9 */ bl VFiPFSEC_WriteData
+/* 80310D14 0030C974 2C 03 00 00 */ cmpwi r3, 0
+/* 80310D18 0030C978 7C 7E 1B 78 */ mr r30, r3
+/* 80310D1C 0030C97C 41 82 00 18 */ beq lbl_80310D34
+/* 80310D20 0030C980 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310D24 0030C984 7F E3 FB 78 */ mr r3, r31
+/* 80310D28 0030C988 4B FF 9A 95 */ bl VFiPFCACHE_FreeDataPage
+/* 80310D2C 0030C98C 7F C3 F3 78 */ mr r3, r30
+/* 80310D30 0030C990 48 00 00 48 */ b lbl_80310D78
+lbl_80310D34:
+/* 80310D34 0030C994 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80310D38 0030C998 A0 1F 00 00 */ lhz r0, 0(r31)
+/* 80310D3C 0030C99C 7C 03 00 40 */ cmplw r3, r0
+/* 80310D40 0030C9A0 41 82 00 18 */ beq lbl_80310D58
+/* 80310D44 0030C9A4 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310D48 0030C9A8 7F E3 FB 78 */ mr r3, r31
+/* 80310D4C 0030C9AC 4B FF 9A 71 */ bl VFiPFCACHE_FreeDataPage
+/* 80310D50 0030C9B0 38 60 00 11 */ li r3, 0x11
+/* 80310D54 0030C9B4 48 00 00 24 */ b lbl_80310D78
+lbl_80310D58:
+/* 80310D58 0030C9B8 3B 9C 00 01 */ addi r28, r28, 1
+lbl_80310D5C:
+/* 80310D5C 0030C9BC 88 1F 00 06 */ lbz r0, 6(r31)
+/* 80310D60 0030C9C0 7C 1C 00 40 */ cmplw r28, r0
+/* 80310D64 0030C9C4 41 80 FF 8C */ blt lbl_80310CF0
+/* 80310D68 0030C9C8 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310D6C 0030C9CC 7F E3 FB 78 */ mr r3, r31
+/* 80310D70 0030C9D0 4B FF 9A 4D */ bl VFiPFCACHE_FreeDataPage
+/* 80310D74 0030C9D4 38 60 00 00 */ li r3, 0
+lbl_80310D78:
+/* 80310D78 0030C9D8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80310D7C 0030C9DC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80310D80 0030C9E0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80310D84 0030C9E4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80310D88 0030C9E8 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 80310D8C 0030C9EC 7C 08 03 A6 */ mtlr r0
+/* 80310D90 0030C9F0 38 21 00 20 */ addi r1, r1, 0x20
+/* 80310D94 0030C9F4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_InitHint
+VFiPFFAT_InitHint:
+/* 80310D98 0030C9F8 38 00 00 00 */ li r0, 0
+/* 80310D9C 0030C9FC 90 03 00 00 */ stw r0, 0(r3)
+/* 80310DA0 0030CA00 90 03 00 04 */ stw r0, 4(r3)
+/* 80310DA4 0030CA04 90 03 00 08 */ stw r0, 8(r3)
+/* 80310DA8 0030CA08 4E 80 00 20 */ blr
+
+.global VFiPFFAT_TraceClustersChain
+VFiPFFAT_TraceClustersChain:
+/* 80310DAC 0030CA0C 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 80310DB0 0030CA10 7C 08 02 A6 */ mflr r0
+/* 80310DB4 0030CA14 90 01 00 44 */ stw r0, 0x44(r1)
+/* 80310DB8 0030CA18 39 61 00 40 */ addi r11, r1, 0x40
+/* 80310DBC 0030CA1C 4B EB 63 59 */ bl _savegpr_22
+/* 80310DC0 0030CA20 38 00 00 00 */ li r0, 0
+/* 80310DC4 0030CA24 7C 99 23 78 */ mr r25, r4
+/* 80310DC8 0030CA28 90 06 00 00 */ stw r0, 0(r6)
+/* 80310DCC 0030CA2C 2C 03 00 00 */ cmpwi r3, 0
+/* 80310DD0 0030CA30 7C 78 1B 78 */ mr r24, r3
+/* 80310DD4 0030CA34 7C DA 33 78 */ mr r26, r6
+/* 80310DD8 0030CA38 90 07 00 00 */ stw r0, 0(r7)
+/* 80310DDC 0030CA3C 7C FB 3B 78 */ mr r27, r7
+/* 80310DE0 0030CA40 7F 3E CB 78 */ mr r30, r25
+/* 80310DE4 0030CA44 40 82 00 0C */ bne lbl_80310DF0
+/* 80310DE8 0030CA48 38 60 00 0A */ li r3, 0xa
+/* 80310DEC 0030CA4C 48 00 01 E8 */ b lbl_80310FD4
+lbl_80310DF0:
+/* 80310DF0 0030CA50 81 23 00 30 */ lwz r9, 0x30(r3)
+/* 80310DF4 0030CA54 2C 09 00 00 */ cmpwi r9, 0
+/* 80310DF8 0030CA58 40 82 00 0C */ bne lbl_80310E04
+/* 80310DFC 0030CA5C 38 60 00 0A */ li r3, 0xa
+/* 80310E00 0030CA60 48 00 01 D4 */ b lbl_80310FD4
+lbl_80310E04:
+/* 80310E04 0030CA64 81 03 00 00 */ lwz r8, 0(r3)
+/* 80310E08 0030CA68 2C 08 00 00 */ cmpwi r8, 0
+/* 80310E0C 0030CA6C 40 82 00 0C */ bne lbl_80310E18
+/* 80310E10 0030CA70 38 60 00 0A */ li r3, 0xa
+/* 80310E14 0030CA74 48 00 01 C0 */ b lbl_80310FD4
+lbl_80310E18:
+/* 80310E18 0030CA78 80 09 00 08 */ lwz r0, 8(r9)
+/* 80310E1C 0030CA7C 7C 00 40 40 */ cmplw r0, r8
+/* 80310E20 0030CA80 40 81 00 0C */ ble lbl_80310E2C
+/* 80310E24 0030CA84 38 60 00 0A */ li r3, 0xa
+/* 80310E28 0030CA88 48 00 01 AC */ b lbl_80310FD4
+lbl_80310E2C:
+/* 80310E2C 0030CA8C 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 80310E30 0030CA90 88 1F 18 7A */ lbz r0, 0x187a(r31)
+/* 80310E34 0030CA94 7C 00 07 74 */ extsb r0, r0
+/* 80310E38 0030CA98 2C 00 00 41 */ cmpwi r0, 0x41
+/* 80310E3C 0030CA9C 41 80 00 0C */ blt lbl_80310E48
+/* 80310E40 0030CAA0 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 80310E44 0030CAA4 40 81 00 0C */ ble lbl_80310E50
+lbl_80310E48:
+/* 80310E48 0030CAA8 38 60 00 23 */ li r3, 0x23
+/* 80310E4C 0030CAAC 48 00 01 88 */ b lbl_80310FD4
+lbl_80310E50:
+/* 80310E50 0030CAB0 2C 1F 00 00 */ cmpwi r31, 0
+/* 80310E54 0030CAB4 40 82 00 0C */ bne lbl_80310E60
+/* 80310E58 0030CAB8 38 60 00 0A */ li r3, 0xa
+/* 80310E5C 0030CABC 48 00 01 78 */ b lbl_80310FD4
+lbl_80310E60:
+/* 80310E60 0030CAC0 81 03 00 08 */ lwz r8, 8(r3)
+/* 80310E64 0030CAC4 81 08 00 00 */ lwz r8, 0(r8)
+/* 80310E68 0030CAC8 28 08 00 02 */ cmplwi r8, 2
+/* 80310E6C 0030CACC 40 80 00 0C */ bge lbl_80310E78
+/* 80310E70 0030CAD0 38 60 00 00 */ li r3, 0
+/* 80310E74 0030CAD4 48 00 01 60 */ b lbl_80310FD4
+lbl_80310E78:
+/* 80310E78 0030CAD8 28 04 00 02 */ cmplwi r4, 2
+/* 80310E7C 0030CADC 40 80 00 0C */ bge lbl_80310E88
+/* 80310E80 0030CAE0 38 60 00 00 */ li r3, 0
+/* 80310E84 0030CAE4 48 00 01 50 */ b lbl_80310FD4
+lbl_80310E88:
+/* 80310E88 0030CAE8 2C 05 00 00 */ cmpwi r5, 0
+/* 80310E8C 0030CAEC 40 82 00 0C */ bne lbl_80310E98
+/* 80310E90 0030CAF0 38 60 00 00 */ li r3, 0
+/* 80310E94 0030CAF4 48 00 01 40 */ b lbl_80310FD4
+lbl_80310E98:
+/* 80310E98 0030CAF8 3C 05 00 01 */ addis r0, r5, 1
+/* 80310E9C 0030CAFC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80310EA0 0030CB00 40 82 00 38 */ bne lbl_80310ED8
+/* 80310EA4 0030CB04 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80310EA8 0030CB08 2C 00 00 00 */ cmpwi r0, 0
+/* 80310EAC 0030CB0C 41 82 00 2C */ beq lbl_80310ED8
+/* 80310EB0 0030CB10 90 06 00 00 */ stw r0, 0(r6)
+/* 80310EB4 0030CB14 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 80310EB8 0030CB18 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 80310EBC 0030CB1C 38 60 00 00 */ li r3, 0
+/* 80310EC0 0030CB20 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80310EC4 0030CB24 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 80310EC8 0030CB28 7C 84 02 14 */ add r4, r4, r0
+/* 80310ECC 0030CB2C 80 04 00 08 */ lwz r0, 8(r4)
+/* 80310ED0 0030CB30 90 07 00 00 */ stw r0, 0(r7)
+/* 80310ED4 0030CB34 48 00 01 00 */ b lbl_80310FD4
+lbl_80310ED8:
+/* 80310ED8 0030CB38 A0 7F 00 00 */ lhz r3, 0(r31)
+/* 80310EDC 0030CB3C 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 80310EE0 0030CB40 7C 60 00 30 */ slw r0, r3, r0
+/* 80310EE4 0030CB44 7F 85 03 96 */ divwu r28, r5, r0
+/* 80310EE8 0030CB48 7C 1C 01 D6 */ mullw r0, r28, r0
+/* 80310EEC 0030CB4C 7C 00 28 51 */ subf. r0, r0, r5
+/* 80310EF0 0030CB50 41 82 00 08 */ beq lbl_80310EF8
+/* 80310EF4 0030CB54 3B 9C 00 01 */ addi r28, r28, 1
+lbl_80310EF8:
+/* 80310EF8 0030CB58 7C 08 20 40 */ cmplw r8, r4
+/* 80310EFC 0030CB5C 40 82 00 0C */ bne lbl_80310F08
+/* 80310F00 0030CB60 3B A0 00 01 */ li r29, 1
+/* 80310F04 0030CB64 48 00 00 0C */ b lbl_80310F10
+lbl_80310F08:
+/* 80310F08 0030CB68 80 69 00 00 */ lwz r3, 0(r9)
+/* 80310F0C 0030CB6C 3B A3 00 01 */ addi r29, r3, 1
+lbl_80310F10:
+/* 80310F10 0030CB70 38 60 FF FF */ li r3, -1
+/* 80310F14 0030CB74 38 00 00 01 */ li r0, 1
+/* 80310F18 0030CB78 90 61 00 10 */ stw r3, 0x10(r1)
+/* 80310F1C 0030CB7C 7F E3 FB 78 */ mr r3, r31
+/* 80310F20 0030CB80 7F 25 CB 78 */ mr r5, r25
+/* 80310F24 0030CB84 38 81 00 08 */ addi r4, r1, 8
+/* 80310F28 0030CB88 90 01 00 0C */ stw r0, 0xc(r1)
+/* 80310F2C 0030CB8C 4B FF D6 0D */ bl VFiPFFAT_ReadFATSector
+/* 80310F30 0030CB90 2C 03 00 00 */ cmpwi r3, 0
+/* 80310F34 0030CB94 41 82 00 08 */ beq lbl_80310F3C
+/* 80310F38 0030CB98 48 00 00 9C */ b lbl_80310FD4
+lbl_80310F3C:
+/* 80310F3C 0030CB9C 3E E0 80 40 */ lis r23, lbl_803FE280@ha
+/* 80310F40 0030CBA0 3A C0 00 00 */ li r22, 0
+/* 80310F44 0030CBA4 3A F7 E2 80 */ addi r23, r23, lbl_803FE280@l
+/* 80310F48 0030CBA8 48 00 00 68 */ b lbl_80310FB0
+lbl_80310F4C:
+/* 80310F4C 0030CBAC 7F 03 C3 78 */ mr r3, r24
+/* 80310F50 0030CBB0 7F 24 CB 78 */ mr r4, r25
+/* 80310F54 0030CBB4 7F A5 EB 78 */ mr r5, r29
+/* 80310F58 0030CBB8 38 C1 00 10 */ addi r6, r1, 0x10
+/* 80310F5C 0030CBBC 38 E1 00 0C */ addi r7, r1, 0xc
+/* 80310F60 0030CBC0 39 01 00 08 */ addi r8, r1, 8
+/* 80310F64 0030CBC4 4B FF DC 71 */ bl VFiPFFAT_ReadClusterPage
+/* 80310F68 0030CBC8 2C 03 00 00 */ cmpwi r3, 0
+/* 80310F6C 0030CBCC 41 82 00 08 */ beq lbl_80310F74
+/* 80310F70 0030CBD0 48 00 00 64 */ b lbl_80310FD4
+lbl_80310F74:
+/* 80310F74 0030CBD4 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80310F78 0030CBD8 7F 3E CB 78 */ mr r30, r25
+/* 80310F7C 0030CBDC 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80310F80 0030CBE0 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 80310F84 0030CBE4 7C 77 02 14 */ add r3, r23, r0
+/* 80310F88 0030CBE8 80 03 00 08 */ lwz r0, 8(r3)
+/* 80310F8C 0030CBEC 7C 04 00 40 */ cmplw r4, r0
+/* 80310F90 0030CBF0 40 82 00 14 */ bne lbl_80310FA4
+/* 80310F94 0030CBF4 38 1D FF FF */ addi r0, r29, -1
+/* 80310F98 0030CBF8 93 38 00 0C */ stw r25, 0xc(r24)
+/* 80310F9C 0030CBFC 90 18 00 10 */ stw r0, 0x10(r24)
+/* 80310FA0 0030CC00 48 00 00 18 */ b lbl_80310FB8
+lbl_80310FA4:
+/* 80310FA4 0030CC04 7C 99 23 78 */ mr r25, r4
+/* 80310FA8 0030CC08 3B BD 00 01 */ addi r29, r29, 1
+/* 80310FAC 0030CC0C 3A D6 00 01 */ addi r22, r22, 1
+lbl_80310FB0:
+/* 80310FB0 0030CC10 7C 16 E0 40 */ cmplw r22, r28
+/* 80310FB4 0030CC14 41 80 FF 98 */ blt lbl_80310F4C
+lbl_80310FB8:
+/* 80310FB8 0030CC18 80 98 00 30 */ lwz r4, 0x30(r24)
+/* 80310FBC 0030CC1C 38 1D FF FF */ addi r0, r29, -1
+/* 80310FC0 0030CC20 38 60 00 00 */ li r3, 0
+/* 80310FC4 0030CC24 90 04 00 00 */ stw r0, 0(r4)
+/* 80310FC8 0030CC28 93 DA 00 00 */ stw r30, 0(r26)
+/* 80310FCC 0030CC2C 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 80310FD0 0030CC30 90 1B 00 00 */ stw r0, 0(r27)
+lbl_80310FD4:
+/* 80310FD4 0030CC34 39 61 00 40 */ addi r11, r1, 0x40
+/* 80310FD8 0030CC38 4B EB 61 89 */ bl _restgpr_22
+/* 80310FDC 0030CC3C 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 80310FE0 0030CC40 7C 08 03 A6 */ mtlr r0
+/* 80310FE4 0030CC44 38 21 00 40 */ addi r1, r1, 0x40
+/* 80310FE8 0030CC48 4E 80 00 20 */ blr
+
+.global VFiPFFAT_ReadValueToSpecifiedCluster
+VFiPFFAT_ReadValueToSpecifiedCluster:
+/* 80310FEC 0030CC4C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80310FF0 0030CC50 7C 08 02 A6 */ mflr r0
+/* 80310FF4 0030CC54 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80310FF8 0030CC58 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80310FFC 0030CC5C 2C 00 00 01 */ cmpwi r0, 1
+/* 80311000 0030CC60 41 82 00 2C */ beq lbl_8031102C
+/* 80311004 0030CC64 40 80 00 10 */ bge lbl_80311014
+/* 80311008 0030CC68 2C 00 00 00 */ cmpwi r0, 0
+/* 8031100C 0030CC6C 40 80 00 14 */ bge lbl_80311020
+/* 80311010 0030CC70 48 00 00 2C */ b lbl_8031103C
+lbl_80311014:
+/* 80311014 0030CC74 2C 00 00 03 */ cmpwi r0, 3
+/* 80311018 0030CC78 40 80 00 24 */ bge lbl_8031103C
+/* 8031101C 0030CC7C 48 00 00 18 */ b lbl_80311034
+lbl_80311020:
+/* 80311020 0030CC80 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 80311024 0030CC84 48 00 01 4D */ bl VFiPFFAT12_ReadFATEntry
+/* 80311028 0030CC88 48 00 00 20 */ b lbl_80311048
+lbl_8031102C:
+/* 8031102C 0030CC8C 48 00 0C 2D */ bl VFiPFFAT16_ReadFATEntry
+/* 80311030 0030CC90 48 00 00 18 */ b lbl_80311048
+lbl_80311034:
+/* 80311034 0030CC94 48 00 11 9D */ bl VFiPFFAT32_ReadFATEntry
+/* 80311038 0030CC98 48 00 00 10 */ b lbl_80311048
+lbl_8031103C:
+/* 8031103C 0030CC9C 38 00 FF FF */ li r0, -1
+/* 80311040 0030CCA0 38 60 00 0F */ li r3, 0xf
+/* 80311044 0030CCA4 90 05 00 00 */ stw r0, 0(r5)
+lbl_80311048:
+/* 80311048 0030CCA8 7C 03 00 D0 */ neg r0, r3
+/* 8031104C 0030CCAC 7C 00 1B 78 */ or r0, r0, r3
+/* 80311050 0030CCB0 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 80311054 0030CCB4 7C 63 00 38 */ and r3, r3, r0
+/* 80311058 0030CCB8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8031105C 0030CCBC 7C 08 03 A6 */ mtlr r0
+/* 80311060 0030CCC0 38 21 00 10 */ addi r1, r1, 0x10
+/* 80311064 0030CCC4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_ResetFFD
+VFiPFFAT_ResetFFD:
+/* 80311068 0030CCC8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031106C 0030CCCC 40 82 00 0C */ bne lbl_80311078
+/* 80311070 0030CCD0 38 60 00 0A */ li r3, 0xa
+/* 80311074 0030CCD4 4E 80 00 20 */ blr
+lbl_80311078:
+/* 80311078 0030CCD8 2C 04 00 00 */ cmpwi r4, 0
+/* 8031107C 0030CCDC 40 82 00 0C */ bne lbl_80311088
+/* 80311080 0030CCE0 38 60 00 0A */ li r3, 0xa
+/* 80311084 0030CCE4 4E 80 00 20 */ blr
+lbl_80311088:
+/* 80311088 0030CCE8 80 A3 00 30 */ lwz r5, 0x30(r3)
+/* 8031108C 0030CCEC 38 00 00 01 */ li r0, 1
+/* 80311090 0030CCF0 90 83 00 08 */ stw r4, 8(r3)
+/* 80311094 0030CCF4 2C 05 00 00 */ cmpwi r5, 0
+/* 80311098 0030CCF8 90 03 00 00 */ stw r0, 0(r3)
+/* 8031109C 0030CCFC 41 82 00 0C */ beq lbl_803110A8
+/* 803110A0 0030CD00 38 00 00 00 */ li r0, 0
+/* 803110A4 0030CD04 90 05 00 08 */ stw r0, 8(r5)
+lbl_803110A8:
+/* 803110A8 0030CD08 38 00 00 00 */ li r0, 0
+/* 803110AC 0030CD0C 90 03 00 18 */ stw r0, 0x18(r3)
+/* 803110B0 0030CD10 90 03 00 14 */ stw r0, 0x14(r3)
+/* 803110B4 0030CD14 90 03 00 0C */ stw r0, 0xc(r3)
+/* 803110B8 0030CD18 90 03 00 10 */ stw r0, 0x10(r3)
+/* 803110BC 0030CD1C 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 803110C0 0030CD20 38 60 00 00 */ li r3, 0
+/* 803110C4 0030CD24 4E 80 00 20 */ blr
+
+.global VFiPFFAT_InitFFD
+VFiPFFAT_InitFFD:
+/* 803110C8 0030CD28 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 803110CC 0030CD2C 40 86 00 0C */ bne cr1, lbl_803110D8
+/* 803110D0 0030CD30 38 60 00 0A */ li r3, 0xa
+/* 803110D4 0030CD34 4E 80 00 20 */ blr
+lbl_803110D8:
+/* 803110D8 0030CD38 2C 06 00 00 */ cmpwi r6, 0
+/* 803110DC 0030CD3C 40 82 00 0C */ bne lbl_803110E8
+/* 803110E0 0030CD40 38 60 00 0A */ li r3, 0xa
+/* 803110E4 0030CD44 4E 80 00 20 */ blr
+lbl_803110E8:
+/* 803110E8 0030CD48 90 83 00 30 */ stw r4, 0x30(r3)
+/* 803110EC 0030CD4C 90 A3 00 34 */ stw r5, 0x34(r3)
+/* 803110F0 0030CD50 41 86 00 3C */ beq cr1, lbl_8031112C
+/* 803110F4 0030CD54 41 82 00 38 */ beq lbl_8031112C
+/* 803110F8 0030CD58 38 00 00 01 */ li r0, 1
+/* 803110FC 0030CD5C 2C 04 00 00 */ cmpwi r4, 0
+/* 80311100 0030CD60 90 C3 00 08 */ stw r6, 8(r3)
+/* 80311104 0030CD64 90 03 00 00 */ stw r0, 0(r3)
+/* 80311108 0030CD68 41 82 00 0C */ beq lbl_80311114
+/* 8031110C 0030CD6C 38 00 00 00 */ li r0, 0
+/* 80311110 0030CD70 90 04 00 08 */ stw r0, 8(r4)
+lbl_80311114:
+/* 80311114 0030CD74 38 00 00 00 */ li r0, 0
+/* 80311118 0030CD78 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8031111C 0030CD7C 90 03 00 14 */ stw r0, 0x14(r3)
+/* 80311120 0030CD80 90 03 00 0C */ stw r0, 0xc(r3)
+/* 80311124 0030CD84 90 03 00 10 */ stw r0, 0x10(r3)
+/* 80311128 0030CD88 90 03 00 1C */ stw r0, 0x1c(r3)
+lbl_8031112C:
+/* 8031112C 0030CD8C 38 60 00 00 */ li r3, 0
+/* 80311130 0030CD90 4E 80 00 20 */ blr
+
+.global VFiPFFAT_FinalizeFFD
+VFiPFFAT_FinalizeFFD:
+/* 80311134 0030CD94 2C 03 00 00 */ cmpwi r3, 0
+/* 80311138 0030CD98 40 82 00 0C */ bne lbl_80311144
+/* 8031113C 0030CD9C 38 60 00 0A */ li r3, 0xa
+/* 80311140 0030CDA0 4E 80 00 20 */ blr
+lbl_80311144:
+/* 80311144 0030CDA4 38 00 00 00 */ li r0, 0
+/* 80311148 0030CDA8 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 8031114C 0030CDAC 38 60 00 00 */ li r3, 0
+/* 80311150 0030CDB0 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetValueOfEOC2
+VFiPFFAT_GetValueOfEOC2:
+/* 80311154 0030CDB4 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80311158 0030CDB8 3C 60 80 40 */ lis r3, lbl_803FE280@ha
+/* 8031115C 0030CDBC 38 63 E2 80 */ addi r3, r3, lbl_803FE280@l
+/* 80311160 0030CDC0 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 80311164 0030CDC4 7C 63 02 14 */ add r3, r3, r0
+/* 80311168 0030CDC8 80 63 00 08 */ lwz r3, 8(r3)
+/* 8031116C 0030CDCC 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_fat12.s b/asm/SDK/VF/pf_fat12.s new file mode 100644 index 0000000..15b9eaa --- /dev/null +++ b/asm/SDK/VF/pf_fat12.s @@ -0,0 +1,784 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFAT12_ReadFATEntry
+VFiPFFAT12_ReadFATEntry:
+/* 80311170 0030CDD0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80311174 0030CDD4 7C 08 02 A6 */ mflr r0
+/* 80311178 0030CDD8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8031117C 0030CDDC 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311180 0030CDE0 4B EB 5F A1 */ bl _savegpr_25
+/* 80311184 0030CDE4 2C 03 00 00 */ cmpwi r3, 0
+/* 80311188 0030CDE8 7C 7C 1B 78 */ mr r28, r3
+/* 8031118C 0030CDEC 7C 9D 23 78 */ mr r29, r4
+/* 80311190 0030CDF0 7C BE 2B 78 */ mr r30, r5
+/* 80311194 0030CDF4 40 82 00 14 */ bne lbl_803111A8
+/* 80311198 0030CDF8 38 00 FF FF */ li r0, -1
+/* 8031119C 0030CDFC 38 60 00 0A */ li r3, 0xa
+/* 803111A0 0030CE00 90 05 00 00 */ stw r0, 0(r5)
+/* 803111A4 0030CE04 48 00 01 98 */ b lbl_8031133C
+lbl_803111A8:
+/* 803111A8 0030CE08 28 04 00 02 */ cmplwi r4, 2
+/* 803111AC 0030CE0C 41 80 00 14 */ blt lbl_803111C0
+/* 803111B0 0030CE10 80 C3 00 34 */ lwz r6, 0x34(r3)
+/* 803111B4 0030CE14 38 06 00 02 */ addi r0, r6, 2
+/* 803111B8 0030CE18 7C 04 00 40 */ cmplw r4, r0
+/* 803111BC 0030CE1C 41 80 00 24 */ blt lbl_803111E0
+lbl_803111C0:
+/* 803111C0 0030CE20 2C 04 00 00 */ cmpwi r4, 0
+/* 803111C4 0030CE24 41 82 00 1C */ beq lbl_803111E0
+/* 803111C8 0030CE28 28 04 00 01 */ cmplwi r4, 1
+/* 803111CC 0030CE2C 41 82 00 14 */ beq lbl_803111E0
+/* 803111D0 0030CE30 38 00 FF FF */ li r0, -1
+/* 803111D4 0030CE34 38 60 00 0E */ li r3, 0xe
+/* 803111D8 0030CE38 90 05 00 00 */ stw r0, 0(r5)
+/* 803111DC 0030CE3C 48 00 01 60 */ b lbl_8031133C
+lbl_803111E0:
+/* 803111E0 0030CE40 7C 80 0E 70 */ srawi r0, r4, 1
+/* 803111E4 0030CE44 A0 E3 00 18 */ lhz r7, 0x18(r3)
+/* 803111E8 0030CE48 7C 04 02 14 */ add r0, r4, r0
+/* 803111EC 0030CE4C 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 803111F0 0030CE50 54 08 04 3E */ clrlwi r8, r0, 0x10
+/* 803111F4 0030CE54 A0 83 00 00 */ lhz r4, 0(r3)
+/* 803111F8 0030CE58 54 E0 06 31 */ rlwinm. r0, r7, 0, 0x18, 0x18
+/* 803111FC 0030CE5C 80 C3 00 28 */ lwz r6, 0x28(r3)
+/* 80311200 0030CE60 7D 03 2E 30 */ sraw r3, r8, r5
+/* 80311204 0030CE64 3B E0 00 01 */ li r31, 1
+/* 80311208 0030CE68 38 04 FF FF */ addi r0, r4, -1
+/* 8031120C 0030CE6C 7C 66 1A 14 */ add r3, r6, r3
+/* 80311210 0030CE70 54 79 04 3E */ clrlwi r25, r3, 0x10
+/* 80311214 0030CE74 7D 00 00 38 */ and r0, r8, r0
+/* 80311218 0030CE78 41 82 00 08 */ beq lbl_80311220
+/* 8031121C 0030CE7C 54 FF 07 7E */ clrlwi r31, r7, 0x1d
+lbl_80311220:
+/* 80311220 0030CE80 54 1B 04 3E */ clrlwi r27, r0, 0x10
+lbl_80311224:
+/* 80311224 0030CE84 A0 7C 00 00 */ lhz r3, 0(r28)
+/* 80311228 0030CE88 38 03 FF FF */ addi r0, r3, -1
+/* 8031122C 0030CE8C 7C 1B 00 00 */ cmpw r27, r0
+/* 80311230 0030CE90 40 80 00 24 */ bge lbl_80311254
+/* 80311234 0030CE94 7F 83 E3 78 */ mr r3, r28
+/* 80311238 0030CE98 7F 66 DB 78 */ mr r6, r27
+/* 8031123C 0030CE9C 38 81 00 08 */ addi r4, r1, 8
+/* 80311240 0030CEA0 57 25 04 3E */ clrlwi r5, r25, 0x10
+/* 80311244 0030CEA4 38 E0 00 02 */ li r7, 2
+/* 80311248 0030CEA8 48 00 77 29 */ bl VFiPFSEC_ReadFAT
+/* 8031124C 0030CEAC 7C 7A 1B 78 */ mr r26, r3
+/* 80311250 0030CEB0 48 00 00 48 */ b lbl_80311298
+lbl_80311254:
+/* 80311254 0030CEB4 7F 83 E3 78 */ mr r3, r28
+/* 80311258 0030CEB8 7F 66 DB 78 */ mr r6, r27
+/* 8031125C 0030CEBC 38 81 00 08 */ addi r4, r1, 8
+/* 80311260 0030CEC0 57 25 04 3E */ clrlwi r5, r25, 0x10
+/* 80311264 0030CEC4 38 E0 00 01 */ li r7, 1
+/* 80311268 0030CEC8 48 00 77 09 */ bl VFiPFSEC_ReadFAT
+/* 8031126C 0030CECC 2C 03 00 00 */ cmpwi r3, 0
+/* 80311270 0030CED0 7C 7A 1B 78 */ mr r26, r3
+/* 80311274 0030CED4 40 82 00 24 */ bne lbl_80311298
+/* 80311278 0030CED8 57 25 04 3E */ clrlwi r5, r25, 0x10
+/* 8031127C 0030CEDC 7F 83 E3 78 */ mr r3, r28
+/* 80311280 0030CEE0 38 81 00 09 */ addi r4, r1, 9
+/* 80311284 0030CEE4 38 C0 00 00 */ li r6, 0
+/* 80311288 0030CEE8 38 A5 00 01 */ addi r5, r5, 1
+/* 8031128C 0030CEEC 38 E0 00 01 */ li r7, 1
+/* 80311290 0030CEF0 48 00 76 E1 */ bl VFiPFSEC_ReadFAT
+/* 80311294 0030CEF4 7C 7A 1B 78 */ mr r26, r3
+lbl_80311298:
+/* 80311298 0030CEF8 2C 1A 10 00 */ cmpwi r26, 0x1000
+/* 8031129C 0030CEFC 40 82 00 54 */ bne lbl_803112F0
+/* 803112A0 0030CF00 81 9C 18 90 */ lwz r12, 0x1890(r28)
+/* 803112A4 0030CF04 2C 0C 00 00 */ cmpwi r12, 0
+/* 803112A8 0030CF08 41 82 00 48 */ beq lbl_803112F0
+/* 803112AC 0030CF0C 80 7C 18 70 */ lwz r3, 0x1870(r28)
+/* 803112B0 0030CF10 7D 89 03 A6 */ mtctr r12
+/* 803112B4 0030CF14 4E 80 04 21 */ bctrl
+/* 803112B8 0030CF18 2C 03 00 00 */ cmpwi r3, 0
+/* 803112BC 0030CF1C 41 82 00 4C */ beq lbl_80311308
+/* 803112C0 0030CF20 2C 03 00 01 */ cmpwi r3, 1
+/* 803112C4 0030CF24 40 82 00 2C */ bne lbl_803112F0
+/* 803112C8 0030CF28 88 1C 00 22 */ lbz r0, 0x22(r28)
+/* 803112CC 0030CF2C 28 00 00 02 */ cmplwi r0, 2
+/* 803112D0 0030CF30 41 80 00 20 */ blt lbl_803112F0
+/* 803112D4 0030CF34 7C 1F 00 40 */ cmplw r31, r0
+/* 803112D8 0030CF38 40 80 00 18 */ bge lbl_803112F0
+/* 803112DC 0030CF3C 80 1C 00 0C */ lwz r0, 0xc(r28)
+/* 803112E0 0030CF40 3B FF 00 01 */ addi r31, r31, 1
+/* 803112E4 0030CF44 54 00 04 3E */ clrlwi r0, r0, 0x10
+/* 803112E8 0030CF48 7F 39 02 14 */ add r25, r25, r0
+/* 803112EC 0030CF4C 48 00 00 1C */ b lbl_80311308
+lbl_803112F0:
+/* 803112F0 0030CF50 2C 1A 00 00 */ cmpwi r26, 0
+/* 803112F4 0030CF54 41 82 00 14 */ beq lbl_80311308
+/* 803112F8 0030CF58 38 00 FF FF */ li r0, -1
+/* 803112FC 0030CF5C 7F 43 D3 78 */ mr r3, r26
+/* 80311300 0030CF60 90 1E 00 00 */ stw r0, 0(r30)
+/* 80311304 0030CF64 48 00 00 38 */ b lbl_8031133C
+lbl_80311308:
+/* 80311308 0030CF68 2C 1A 00 00 */ cmpwi r26, 0
+/* 8031130C 0030CF6C 40 82 FF 18 */ bne lbl_80311224
+/* 80311310 0030CF70 57 A0 07 FF */ clrlwi. r0, r29, 0x1f
+/* 80311314 0030CF74 A0 61 00 08 */ lhz r3, 8(r1)
+/* 80311318 0030CF78 54 60 44 2E */ rlwinm r0, r3, 8, 0x10, 0x17
+/* 8031131C 0030CF7C 50 60 C6 3E */ rlwimi r0, r3, 0x18, 0x18, 0x1f
+/* 80311320 0030CF80 41 82 00 10 */ beq lbl_80311330
+/* 80311324 0030CF84 54 00 E5 3E */ rlwinm r0, r0, 0x1c, 0x14, 0x1f
+/* 80311328 0030CF88 90 1E 00 00 */ stw r0, 0(r30)
+/* 8031132C 0030CF8C 48 00 00 0C */ b lbl_80311338
+lbl_80311330:
+/* 80311330 0030CF90 54 00 05 3E */ clrlwi r0, r0, 0x14
+/* 80311334 0030CF94 90 1E 00 00 */ stw r0, 0(r30)
+lbl_80311338:
+/* 80311338 0030CF98 38 60 00 00 */ li r3, 0
+lbl_8031133C:
+/* 8031133C 0030CF9C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311340 0030CFA0 4B EB 5E 2D */ bl _restgpr_25
+/* 80311344 0030CFA4 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80311348 0030CFA8 7C 08 03 A6 */ mtlr r0
+/* 8031134C 0030CFAC 38 21 00 30 */ addi r1, r1, 0x30
+/* 80311350 0030CFB0 4E 80 00 20 */ blr
+
+.global VFiPFFAT12_ReadFATEntryPage
+VFiPFFAT12_ReadFATEntryPage:
+/* 80311354 0030CFB4 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80311358 0030CFB8 7C 08 02 A6 */ mflr r0
+/* 8031135C 0030CFBC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80311360 0030CFC0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311364 0030CFC4 4B EB 5D B9 */ bl _savegpr_24
+/* 80311368 0030CFC8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031136C 0030CFCC 7C 78 1B 78 */ mr r24, r3
+/* 80311370 0030CFD0 7C 99 23 78 */ mr r25, r4
+/* 80311374 0030CFD4 7C BA 2B 78 */ mr r26, r5
+/* 80311378 0030CFD8 7C DB 33 78 */ mr r27, r6
+/* 8031137C 0030CFDC 40 82 00 0C */ bne lbl_80311388
+/* 80311380 0030CFE0 38 60 00 0A */ li r3, 0xa
+/* 80311384 0030CFE4 48 00 02 8C */ b lbl_80311610
+lbl_80311388:
+/* 80311388 0030CFE8 28 04 00 02 */ cmplwi r4, 2
+/* 8031138C 0030CFEC 41 80 00 14 */ blt lbl_803113A0
+/* 80311390 0030CFF0 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80311394 0030CFF4 38 05 00 02 */ addi r0, r5, 2
+/* 80311398 0030CFF8 7C 04 00 40 */ cmplw r4, r0
+/* 8031139C 0030CFFC 41 80 00 1C */ blt lbl_803113B8
+lbl_803113A0:
+/* 803113A0 0030D000 2C 04 00 00 */ cmpwi r4, 0
+/* 803113A4 0030D004 41 82 00 14 */ beq lbl_803113B8
+/* 803113A8 0030D008 28 04 00 01 */ cmplwi r4, 1
+/* 803113AC 0030D00C 41 82 00 0C */ beq lbl_803113B8
+/* 803113B0 0030D010 38 60 00 0E */ li r3, 0xe
+/* 803113B4 0030D014 48 00 02 5C */ b lbl_80311610
+lbl_803113B8:
+/* 803113B8 0030D018 54 80 FC 7E */ rlwinm r0, r4, 0x1f, 0x11, 0x1f
+/* 803113BC 0030D01C A0 A3 00 18 */ lhz r5, 0x18(r3)
+/* 803113C0 0030D020 7C 04 02 14 */ add r0, r4, r0
+/* 803113C4 0030D024 88 83 00 20 */ lbz r4, 0x20(r3)
+/* 803113C8 0030D028 54 1F 04 3E */ clrlwi r31, r0, 0x10
+/* 803113CC 0030D02C 80 63 00 28 */ lwz r3, 0x28(r3)
+/* 803113D0 0030D030 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 803113D4 0030D034 3B 80 00 01 */ li r28, 1
+/* 803113D8 0030D038 7F E0 24 30 */ srw r0, r31, r4
+/* 803113DC 0030D03C 7C 03 02 14 */ add r0, r3, r0
+/* 803113E0 0030D040 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 803113E4 0030D044 41 82 00 08 */ beq lbl_803113EC
+/* 803113E8 0030D048 54 BC 07 7E */ clrlwi r28, r5, 0x1d
+lbl_803113EC:
+/* 803113EC 0030D04C 3B C0 00 00 */ li r30, 0
+lbl_803113F0:
+/* 803113F0 0030D050 2C 1E 10 00 */ cmpwi r30, 0x1000
+/* 803113F4 0030D054 40 82 00 5C */ bne lbl_80311450
+/* 803113F8 0030D058 81 98 18 90 */ lwz r12, 0x1890(r24)
+/* 803113FC 0030D05C 2C 0C 00 00 */ cmpwi r12, 0
+/* 80311400 0030D060 41 82 00 50 */ beq lbl_80311450
+/* 80311404 0030D064 80 78 18 70 */ lwz r3, 0x1870(r24)
+/* 80311408 0030D068 7D 89 03 A6 */ mtctr r12
+/* 8031140C 0030D06C 4E 80 04 21 */ bctrl
+/* 80311410 0030D070 2C 03 00 00 */ cmpwi r3, 0
+/* 80311414 0030D074 40 82 00 0C */ bne lbl_80311420
+/* 80311418 0030D078 3B C0 00 00 */ li r30, 0
+/* 8031141C 0030D07C 4B FF FF D4 */ b lbl_803113F0
+lbl_80311420:
+/* 80311420 0030D080 2C 03 00 01 */ cmpwi r3, 1
+/* 80311424 0030D084 40 82 01 AC */ bne lbl_803115D0
+/* 80311428 0030D088 88 18 00 22 */ lbz r0, 0x22(r24)
+/* 8031142C 0030D08C 28 00 00 02 */ cmplwi r0, 2
+/* 80311430 0030D090 41 80 01 A0 */ blt lbl_803115D0
+/* 80311434 0030D094 7C 1C 00 40 */ cmplw r28, r0
+/* 80311438 0030D098 40 80 01 98 */ bge lbl_803115D0
+/* 8031143C 0030D09C 80 18 00 0C */ lwz r0, 0xc(r24)
+/* 80311440 0030D0A0 3B C0 00 00 */ li r30, 0
+/* 80311444 0030D0A4 3B 9C 00 01 */ addi r28, r28, 1
+/* 80311448 0030D0A8 7F BD 02 14 */ add r29, r29, r0
+/* 8031144C 0030D0AC 4B FF FF A4 */ b lbl_803113F0
+lbl_80311450:
+/* 80311450 0030D0B0 80 9B 00 00 */ lwz r4, 0(r27)
+/* 80311454 0030D0B4 80 C4 00 18 */ lwz r6, 0x18(r4)
+/* 80311458 0030D0B8 7C 06 E8 40 */ cmplw r6, r29
+/* 8031145C 0030D0BC 41 81 00 14 */ bgt lbl_80311470
+/* 80311460 0030D0C0 80 18 16 00 */ lwz r0, 0x1600(r24)
+/* 80311464 0030D0C4 7C 06 02 14 */ add r0, r6, r0
+/* 80311468 0030D0C8 7C 00 E8 40 */ cmplw r0, r29
+/* 8031146C 0030D0CC 41 81 00 44 */ bgt lbl_803114B0
+lbl_80311470:
+/* 80311470 0030D0D0 A0 04 00 02 */ lhz r0, 2(r4)
+/* 80311474 0030D0D4 28 00 00 01 */ cmplwi r0, 1
+/* 80311478 0030D0D8 40 82 00 18 */ bne lbl_80311490
+/* 8031147C 0030D0DC 7F 03 C3 78 */ mr r3, r24
+/* 80311480 0030D0E0 4B FF E9 E9 */ bl VFiPFFAT_UpdateFATEntry
+/* 80311484 0030D0E4 2C 03 00 00 */ cmpwi r3, 0
+/* 80311488 0030D0E8 41 82 00 08 */ beq lbl_80311490
+/* 8031148C 0030D0EC 48 00 01 84 */ b lbl_80311610
+lbl_80311490:
+/* 80311490 0030D0F0 7F 03 C3 78 */ mr r3, r24
+/* 80311494 0030D0F4 7F A4 EB 78 */ mr r4, r29
+/* 80311498 0030D0F8 7F 65 DB 78 */ mr r5, r27
+/* 8031149C 0030D0FC 4B FF 93 B1 */ bl VFiPFCACHE_ReadFATPage
+/* 803114A0 0030D100 2C 03 00 00 */ cmpwi r3, 0
+/* 803114A4 0030D104 7C 7E 1B 78 */ mr r30, r3
+/* 803114A8 0030D108 40 82 FF 48 */ bne lbl_803113F0
+/* 803114AC 0030D10C 48 00 00 30 */ b lbl_803114DC
+lbl_803114B0:
+/* 803114B0 0030D110 80 64 00 04 */ lwz r3, 4(r4)
+/* 803114B4 0030D114 80 A4 00 08 */ lwz r5, 8(r4)
+/* 803114B8 0030D118 88 18 00 20 */ lbz r0, 0x20(r24)
+/* 803114BC 0030D11C 7C 63 28 50 */ subf r3, r3, r5
+/* 803114C0 0030D120 7C 60 06 30 */ sraw r0, r3, r0
+/* 803114C4 0030D124 7C 06 02 14 */ add r0, r6, r0
+/* 803114C8 0030D128 7C 1D 00 40 */ cmplw r29, r0
+/* 803114CC 0030D12C 41 82 00 10 */ beq lbl_803114DC
+/* 803114D0 0030D130 A0 18 00 00 */ lhz r0, 0(r24)
+/* 803114D4 0030D134 7C 05 02 14 */ add r0, r5, r0
+/* 803114D8 0030D138 90 04 00 08 */ stw r0, 8(r4)
+lbl_803114DC:
+/* 803114DC 0030D13C A0 78 00 00 */ lhz r3, 0(r24)
+/* 803114E0 0030D140 38 03 FF FF */ addi r0, r3, -1
+/* 803114E4 0030D144 7F E5 00 38 */ and r5, r31, r0
+/* 803114E8 0030D148 7C 05 00 40 */ cmplw r5, r0
+/* 803114EC 0030D14C 40 82 00 C4 */ bne lbl_803115B0
+/* 803114F0 0030D150 80 7B 00 00 */ lwz r3, 0(r27)
+/* 803114F4 0030D154 38 DD 00 01 */ addi r6, r29, 1
+/* 803114F8 0030D158 80 63 00 08 */ lwz r3, 8(r3)
+/* 803114FC 0030D15C 7C 03 28 AE */ lbzx r0, r3, r5
+/* 80311500 0030D160 90 1A 00 00 */ stw r0, 0(r26)
+/* 80311504 0030D164 80 9B 00 00 */ lwz r4, 0(r27)
+/* 80311508 0030D168 80 E4 00 18 */ lwz r7, 0x18(r4)
+/* 8031150C 0030D16C 7C 07 30 40 */ cmplw r7, r6
+/* 80311510 0030D170 41 81 00 14 */ bgt lbl_80311524
+/* 80311514 0030D174 80 18 16 00 */ lwz r0, 0x1600(r24)
+/* 80311518 0030D178 7C 07 02 14 */ add r0, r7, r0
+/* 8031151C 0030D17C 7C 00 30 40 */ cmplw r0, r6
+/* 80311520 0030D180 41 81 00 44 */ bgt lbl_80311564
+lbl_80311524:
+/* 80311524 0030D184 A0 04 00 02 */ lhz r0, 2(r4)
+/* 80311528 0030D188 28 00 00 01 */ cmplwi r0, 1
+/* 8031152C 0030D18C 40 82 00 18 */ bne lbl_80311544
+/* 80311530 0030D190 7F 03 C3 78 */ mr r3, r24
+/* 80311534 0030D194 4B FF E9 35 */ bl VFiPFFAT_UpdateFATEntry
+/* 80311538 0030D198 2C 03 00 00 */ cmpwi r3, 0
+/* 8031153C 0030D19C 41 82 00 08 */ beq lbl_80311544
+/* 80311540 0030D1A0 48 00 00 D0 */ b lbl_80311610
+lbl_80311544:
+/* 80311544 0030D1A4 7F 03 C3 78 */ mr r3, r24
+/* 80311548 0030D1A8 7F 65 DB 78 */ mr r5, r27
+/* 8031154C 0030D1AC 38 9D 00 01 */ addi r4, r29, 1
+/* 80311550 0030D1B0 4B FF 92 FD */ bl VFiPFCACHE_ReadFATPage
+/* 80311554 0030D1B4 2C 03 00 00 */ cmpwi r3, 0
+/* 80311558 0030D1B8 7C 7E 1B 78 */ mr r30, r3
+/* 8031155C 0030D1BC 41 82 00 34 */ beq lbl_80311590
+/* 80311560 0030D1C0 48 00 00 B0 */ b lbl_80311610
+lbl_80311564:
+/* 80311564 0030D1C4 80 64 00 04 */ lwz r3, 4(r4)
+/* 80311568 0030D1C8 80 A4 00 08 */ lwz r5, 8(r4)
+/* 8031156C 0030D1CC 88 18 00 20 */ lbz r0, 0x20(r24)
+/* 80311570 0030D1D0 7C 63 28 50 */ subf r3, r3, r5
+/* 80311574 0030D1D4 7C 60 06 30 */ sraw r0, r3, r0
+/* 80311578 0030D1D8 7C 07 02 14 */ add r0, r7, r0
+/* 8031157C 0030D1DC 7C 06 00 40 */ cmplw r6, r0
+/* 80311580 0030D1E0 41 82 00 10 */ beq lbl_80311590
+/* 80311584 0030D1E4 A0 18 00 00 */ lhz r0, 0(r24)
+/* 80311588 0030D1E8 7C 05 02 14 */ add r0, r5, r0
+/* 8031158C 0030D1EC 90 04 00 08 */ stw r0, 8(r4)
+lbl_80311590:
+/* 80311590 0030D1F0 80 7B 00 00 */ lwz r3, 0(r27)
+/* 80311594 0030D1F4 80 9A 00 00 */ lwz r4, 0(r26)
+/* 80311598 0030D1F8 80 63 00 08 */ lwz r3, 8(r3)
+/* 8031159C 0030D1FC 88 03 00 00 */ lbz r0, 0(r3)
+/* 803115A0 0030D200 54 00 40 2E */ slwi r0, r0, 8
+/* 803115A4 0030D204 7C 04 02 14 */ add r0, r4, r0
+/* 803115A8 0030D208 90 1A 00 00 */ stw r0, 0(r26)
+/* 803115AC 0030D20C 48 00 00 24 */ b lbl_803115D0
+lbl_803115B0:
+/* 803115B0 0030D210 80 7B 00 00 */ lwz r3, 0(r27)
+/* 803115B4 0030D214 80 83 00 08 */ lwz r4, 8(r3)
+/* 803115B8 0030D218 7C 64 2A 14 */ add r3, r4, r5
+/* 803115BC 0030D21C 7C 04 28 AE */ lbzx r0, r4, r5
+/* 803115C0 0030D220 88 63 00 01 */ lbz r3, 1(r3)
+/* 803115C4 0030D224 54 63 40 2E */ slwi r3, r3, 8
+/* 803115C8 0030D228 7C 03 02 14 */ add r0, r3, r0
+/* 803115CC 0030D22C 90 1A 00 00 */ stw r0, 0(r26)
+lbl_803115D0:
+/* 803115D0 0030D230 2C 1E 00 00 */ cmpwi r30, 0
+/* 803115D4 0030D234 41 82 00 14 */ beq lbl_803115E8
+/* 803115D8 0030D238 38 00 FF FF */ li r0, -1
+/* 803115DC 0030D23C 7F C3 F3 78 */ mr r3, r30
+/* 803115E0 0030D240 90 1A 00 00 */ stw r0, 0(r26)
+/* 803115E4 0030D244 48 00 00 2C */ b lbl_80311610
+lbl_803115E8:
+/* 803115E8 0030D248 57 20 07 FF */ clrlwi. r0, r25, 0x1f
+/* 803115EC 0030D24C 41 82 00 14 */ beq lbl_80311600
+/* 803115F0 0030D250 80 1A 00 00 */ lwz r0, 0(r26)
+/* 803115F4 0030D254 54 00 E1 3E */ srwi r0, r0, 4
+/* 803115F8 0030D258 90 1A 00 00 */ stw r0, 0(r26)
+/* 803115FC 0030D25C 48 00 00 10 */ b lbl_8031160C
+lbl_80311600:
+/* 80311600 0030D260 80 1A 00 00 */ lwz r0, 0(r26)
+/* 80311604 0030D264 54 00 05 3E */ clrlwi r0, r0, 0x14
+/* 80311608 0030D268 90 1A 00 00 */ stw r0, 0(r26)
+lbl_8031160C:
+/* 8031160C 0030D26C 38 60 00 00 */ li r3, 0
+lbl_80311610:
+/* 80311610 0030D270 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311614 0030D274 4B EB 5B 55 */ bl _restgpr_24
+/* 80311618 0030D278 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8031161C 0030D27C 7C 08 03 A6 */ mtlr r0
+/* 80311620 0030D280 38 21 00 30 */ addi r1, r1, 0x30
+/* 80311624 0030D284 4E 80 00 20 */ blr
+
+.global VFiPFFAT12_WriteFATEntry
+VFiPFFAT12_WriteFATEntry:
+/* 80311628 0030D288 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8031162C 0030D28C 7C 08 02 A6 */ mflr r0
+/* 80311630 0030D290 2C 03 00 00 */ cmpwi r3, 0
+/* 80311634 0030D294 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80311638 0030D298 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8031163C 0030D29C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80311640 0030D2A0 7C BE 2B 78 */ mr r30, r5
+/* 80311644 0030D2A4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80311648 0030D2A8 7C 7D 1B 78 */ mr r29, r3
+/* 8031164C 0030D2AC 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80311650 0030D2B0 40 82 00 0C */ bne lbl_8031165C
+/* 80311654 0030D2B4 38 60 00 0A */ li r3, 0xa
+/* 80311658 0030D2B8 48 00 01 54 */ b lbl_803117AC
+lbl_8031165C:
+/* 8031165C 0030D2BC 28 04 00 02 */ cmplwi r4, 2
+/* 80311660 0030D2C0 41 80 00 14 */ blt lbl_80311674
+/* 80311664 0030D2C4 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80311668 0030D2C8 38 05 00 02 */ addi r0, r5, 2
+/* 8031166C 0030D2CC 7C 04 00 40 */ cmplw r4, r0
+/* 80311670 0030D2D0 41 80 00 1C */ blt lbl_8031168C
+lbl_80311674:
+/* 80311674 0030D2D4 2C 04 00 00 */ cmpwi r4, 0
+/* 80311678 0030D2D8 41 82 00 14 */ beq lbl_8031168C
+/* 8031167C 0030D2DC 28 04 00 01 */ cmplwi r4, 1
+/* 80311680 0030D2E0 41 82 00 0C */ beq lbl_8031168C
+/* 80311684 0030D2E4 38 60 00 0E */ li r3, 0xe
+/* 80311688 0030D2E8 48 00 01 24 */ b lbl_803117AC
+lbl_8031168C:
+/* 8031168C 0030D2EC 54 80 07 FF */ clrlwi. r0, r4, 0x1f
+/* 80311690 0030D2F0 7C 85 0E 70 */ srawi r5, r4, 1
+/* 80311694 0030D2F4 7C 04 2A 14 */ add r0, r4, r5
+/* 80311698 0030D2F8 A0 83 00 00 */ lhz r4, 0(r3)
+/* 8031169C 0030D2FC 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 803116A0 0030D300 54 07 04 3E */ clrlwi r7, r0, 0x10
+/* 803116A4 0030D304 81 03 00 28 */ lwz r8, 0x28(r3)
+/* 803116A8 0030D308 7C E0 2E 30 */ sraw r0, r7, r5
+/* 803116AC 0030D30C 38 C4 FF FF */ addi r6, r4, -1
+/* 803116B0 0030D310 7C 08 02 14 */ add r0, r8, r0
+/* 803116B4 0030D314 54 1F 04 3E */ clrlwi r31, r0, 0x10
+/* 803116B8 0030D318 7C FC 30 38 */ and r28, r7, r6
+/* 803116BC 0030D31C 41 82 00 40 */ beq lbl_803116FC
+/* 803116C0 0030D320 7F A3 EB 78 */ mr r3, r29
+/* 803116C4 0030D324 7F E5 FB 78 */ mr r5, r31
+/* 803116C8 0030D328 38 81 00 08 */ addi r4, r1, 8
+/* 803116CC 0030D32C 57 86 04 3E */ clrlwi r6, r28, 0x10
+/* 803116D0 0030D330 38 E0 00 01 */ li r7, 1
+/* 803116D4 0030D334 48 00 72 9D */ bl VFiPFSEC_ReadFAT
+/* 803116D8 0030D338 2C 03 00 00 */ cmpwi r3, 0
+/* 803116DC 0030D33C 41 82 00 08 */ beq lbl_803116E4
+/* 803116E0 0030D340 48 00 00 CC */ b lbl_803117AC
+lbl_803116E4:
+/* 803116E4 0030D344 88 01 00 08 */ lbz r0, 8(r1)
+/* 803116E8 0030D348 57 C3 23 36 */ rlwinm r3, r30, 4, 0xc, 0x1b
+/* 803116EC 0030D34C 54 00 07 3E */ clrlwi r0, r0, 0x1c
+/* 803116F0 0030D350 7C 03 02 14 */ add r0, r3, r0
+/* 803116F4 0030D354 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 803116F8 0030D358 48 00 00 4C */ b lbl_80311744
+lbl_803116FC:
+/* 803116FC 0030D35C 38 E7 00 01 */ addi r7, r7, 1
+/* 80311700 0030D360 7F A3 EB 78 */ mr r3, r29
+/* 80311704 0030D364 7C E0 2E 30 */ sraw r0, r7, r5
+/* 80311708 0030D368 38 81 00 08 */ addi r4, r1, 8
+/* 8031170C 0030D36C 7C A8 02 14 */ add r5, r8, r0
+/* 80311710 0030D370 7C E0 30 38 */ and r0, r7, r6
+/* 80311714 0030D374 38 E0 00 01 */ li r7, 1
+/* 80311718 0030D378 54 A5 04 3E */ clrlwi r5, r5, 0x10
+/* 8031171C 0030D37C 54 06 04 3E */ clrlwi r6, r0, 0x10
+/* 80311720 0030D380 48 00 72 51 */ bl VFiPFSEC_ReadFAT
+/* 80311724 0030D384 2C 03 00 00 */ cmpwi r3, 0
+/* 80311728 0030D388 41 82 00 08 */ beq lbl_80311730
+/* 8031172C 0030D38C 48 00 00 80 */ b lbl_803117AC
+lbl_80311730:
+/* 80311730 0030D390 88 61 00 08 */ lbz r3, 8(r1)
+/* 80311734 0030D394 57 C0 05 3E */ clrlwi r0, r30, 0x14
+/* 80311738 0030D398 54 63 44 26 */ rlwinm r3, r3, 8, 0x10, 0x13
+/* 8031173C 0030D39C 7C 03 02 14 */ add r0, r3, r0
+/* 80311740 0030D3A0 54 03 04 3E */ clrlwi r3, r0, 0x10
+lbl_80311744:
+/* 80311744 0030D3A4 38 01 00 08 */ addi r0, r1, 8
+/* 80311748 0030D3A8 57 86 04 3E */ clrlwi r6, r28, 0x10
+/* 8031174C 0030D3AC 7C 60 07 2C */ sthbrx r3, 0, r0
+/* 80311750 0030D3B0 A0 7D 00 00 */ lhz r3, 0(r29)
+/* 80311754 0030D3B4 38 03 FF FF */ addi r0, r3, -1
+/* 80311758 0030D3B8 7C 06 00 00 */ cmpw r6, r0
+/* 8031175C 0030D3BC 40 80 00 1C */ bge lbl_80311778
+/* 80311760 0030D3C0 7F A3 EB 78 */ mr r3, r29
+/* 80311764 0030D3C4 7F E5 FB 78 */ mr r5, r31
+/* 80311768 0030D3C8 38 81 00 08 */ addi r4, r1, 8
+/* 8031176C 0030D3CC 38 E0 00 02 */ li r7, 2
+/* 80311770 0030D3D0 48 00 75 99 */ bl VFiPFSEC_WriteFAT
+/* 80311774 0030D3D4 48 00 00 38 */ b lbl_803117AC
+lbl_80311778:
+/* 80311778 0030D3D8 7F A3 EB 78 */ mr r3, r29
+/* 8031177C 0030D3DC 7F E5 FB 78 */ mr r5, r31
+/* 80311780 0030D3E0 38 81 00 08 */ addi r4, r1, 8
+/* 80311784 0030D3E4 38 E0 00 01 */ li r7, 1
+/* 80311788 0030D3E8 48 00 75 81 */ bl VFiPFSEC_WriteFAT
+/* 8031178C 0030D3EC 2C 03 00 00 */ cmpwi r3, 0
+/* 80311790 0030D3F0 40 82 00 1C */ bne lbl_803117AC
+/* 80311794 0030D3F4 7F A3 EB 78 */ mr r3, r29
+/* 80311798 0030D3F8 38 81 00 09 */ addi r4, r1, 9
+/* 8031179C 0030D3FC 38 BF 00 01 */ addi r5, r31, 1
+/* 803117A0 0030D400 38 C0 00 00 */ li r6, 0
+/* 803117A4 0030D404 38 E0 00 01 */ li r7, 1
+/* 803117A8 0030D408 48 00 75 61 */ bl VFiPFSEC_WriteFAT
+lbl_803117AC:
+/* 803117AC 0030D40C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803117B0 0030D410 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803117B4 0030D414 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803117B8 0030D418 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 803117BC 0030D41C 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 803117C0 0030D420 7C 08 03 A6 */ mtlr r0
+/* 803117C4 0030D424 38 21 00 20 */ addi r1, r1, 0x20
+/* 803117C8 0030D428 4E 80 00 20 */ blr
+
+.global VFiPFFAT12_WriteFATEntryPage
+VFiPFFAT12_WriteFATEntryPage:
+/* 803117CC 0030D42C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803117D0 0030D430 7C 08 02 A6 */ mflr r0
+/* 803117D4 0030D434 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803117D8 0030D438 39 61 00 30 */ addi r11, r1, 0x30
+/* 803117DC 0030D43C 4B EB 59 41 */ bl _savegpr_24
+/* 803117E0 0030D440 2C 03 00 00 */ cmpwi r3, 0
+/* 803117E4 0030D444 7C 79 1B 78 */ mr r25, r3
+/* 803117E8 0030D448 7C 9A 23 78 */ mr r26, r4
+/* 803117EC 0030D44C 7C BB 2B 78 */ mr r27, r5
+/* 803117F0 0030D450 7C DC 33 78 */ mr r28, r6
+/* 803117F4 0030D454 3B C0 00 00 */ li r30, 0
+/* 803117F8 0030D458 40 82 00 0C */ bne lbl_80311804
+/* 803117FC 0030D45C 38 60 00 0A */ li r3, 0xa
+/* 80311800 0030D460 48 00 04 40 */ b lbl_80311C40
+lbl_80311804:
+/* 80311804 0030D464 28 04 00 02 */ cmplwi r4, 2
+/* 80311808 0030D468 41 80 00 14 */ blt lbl_8031181C
+/* 8031180C 0030D46C 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80311810 0030D470 38 05 00 02 */ addi r0, r5, 2
+/* 80311814 0030D474 7C 04 00 40 */ cmplw r4, r0
+/* 80311818 0030D478 41 80 00 1C */ blt lbl_80311834
+lbl_8031181C:
+/* 8031181C 0030D47C 2C 04 00 00 */ cmpwi r4, 0
+/* 80311820 0030D480 41 82 00 14 */ beq lbl_80311834
+/* 80311824 0030D484 28 04 00 01 */ cmplwi r4, 1
+/* 80311828 0030D488 41 82 00 0C */ beq lbl_80311834
+/* 8031182C 0030D48C 38 60 00 0E */ li r3, 0xe
+/* 80311830 0030D490 48 00 04 10 */ b lbl_80311C40
+lbl_80311834:
+/* 80311834 0030D494 54 80 FC 7E */ rlwinm r0, r4, 0x1f, 0x11, 0x1f
+/* 80311838 0030D498 88 E3 00 20 */ lbz r7, 0x20(r3)
+/* 8031183C 0030D49C 7C 04 02 14 */ add r0, r4, r0
+/* 80311840 0030D4A0 80 A6 00 00 */ lwz r5, 0(r6)
+/* 80311844 0030D4A4 54 06 04 3E */ clrlwi r6, r0, 0x10
+/* 80311848 0030D4A8 80 83 00 28 */ lwz r4, 0x28(r3)
+/* 8031184C 0030D4AC 7C C0 3C 30 */ srw r0, r6, r7
+/* 80311850 0030D4B0 A1 03 00 00 */ lhz r8, 0(r3)
+/* 80311854 0030D4B4 7C 04 02 14 */ add r0, r4, r0
+/* 80311858 0030D4B8 80 85 00 18 */ lwz r4, 0x18(r5)
+/* 8031185C 0030D4BC 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 80311860 0030D4C0 7C 04 E8 40 */ cmplw r4, r29
+/* 80311864 0030D4C4 38 08 FF FF */ addi r0, r8, -1
+/* 80311868 0030D4C8 7C DF 00 38 */ and r31, r6, r0
+/* 8031186C 0030D4CC 41 81 00 14 */ bgt lbl_80311880
+/* 80311870 0030D4D0 80 03 16 00 */ lwz r0, 0x1600(r3)
+/* 80311874 0030D4D4 7C 04 02 14 */ add r0, r4, r0
+/* 80311878 0030D4D8 7C 00 E8 40 */ cmplw r0, r29
+/* 8031187C 0030D4DC 41 81 00 B4 */ bgt lbl_80311930
+lbl_80311880:
+/* 80311880 0030D4E0 7F 23 CB 78 */ mr r3, r25
+/* 80311884 0030D4E4 7C A4 2B 78 */ mr r4, r5
+/* 80311888 0030D4E8 4B FF E5 E1 */ bl VFiPFFAT_UpdateFATEntry
+/* 8031188C 0030D4EC 2C 03 00 00 */ cmpwi r3, 0
+/* 80311890 0030D4F0 41 82 00 08 */ beq lbl_80311898
+/* 80311894 0030D4F4 48 00 03 AC */ b lbl_80311C40
+lbl_80311898:
+/* 80311898 0030D4F8 A0 79 00 18 */ lhz r3, 0x18(r25)
+/* 8031189C 0030D4FC 3B 00 00 01 */ li r24, 1
+/* 803118A0 0030D500 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 803118A4 0030D504 41 82 00 08 */ beq lbl_803118AC
+/* 803118A8 0030D508 54 78 07 7E */ clrlwi r24, r3, 0x1d
+lbl_803118AC:
+/* 803118AC 0030D50C 7F 23 CB 78 */ mr r3, r25
+/* 803118B0 0030D510 7F A4 EB 78 */ mr r4, r29
+/* 803118B4 0030D514 7F 85 E3 78 */ mr r5, r28
+/* 803118B8 0030D518 4B FF 8F 95 */ bl VFiPFCACHE_ReadFATPage
+/* 803118BC 0030D51C 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 803118C0 0030D520 7C 7E 1B 78 */ mr r30, r3
+/* 803118C4 0030D524 40 82 00 50 */ bne lbl_80311914
+/* 803118C8 0030D528 81 99 18 90 */ lwz r12, 0x1890(r25)
+/* 803118CC 0030D52C 2C 0C 00 00 */ cmpwi r12, 0
+/* 803118D0 0030D530 41 82 00 44 */ beq lbl_80311914
+/* 803118D4 0030D534 80 79 18 70 */ lwz r3, 0x1870(r25)
+/* 803118D8 0030D538 7D 89 03 A6 */ mtctr r12
+/* 803118DC 0030D53C 4E 80 04 21 */ bctrl
+/* 803118E0 0030D540 2C 03 00 00 */ cmpwi r3, 0
+/* 803118E4 0030D544 41 82 00 40 */ beq lbl_80311924
+/* 803118E8 0030D548 2C 03 00 01 */ cmpwi r3, 1
+/* 803118EC 0030D54C 40 82 00 28 */ bne lbl_80311914
+/* 803118F0 0030D550 88 19 00 22 */ lbz r0, 0x22(r25)
+/* 803118F4 0030D554 28 00 00 02 */ cmplwi r0, 2
+/* 803118F8 0030D558 41 80 00 1C */ blt lbl_80311914
+/* 803118FC 0030D55C 7C 18 00 40 */ cmplw r24, r0
+/* 80311900 0030D560 40 80 00 14 */ bge lbl_80311914
+/* 80311904 0030D564 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 80311908 0030D568 3B 18 00 01 */ addi r24, r24, 1
+/* 8031190C 0030D56C 7F BD 02 14 */ add r29, r29, r0
+/* 80311910 0030D570 48 00 00 14 */ b lbl_80311924
+lbl_80311914:
+/* 80311914 0030D574 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311918 0030D578 41 82 00 0C */ beq lbl_80311924
+/* 8031191C 0030D57C 7F C3 F3 78 */ mr r3, r30
+/* 80311920 0030D580 48 00 03 20 */ b lbl_80311C40
+lbl_80311924:
+/* 80311924 0030D584 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311928 0030D588 40 82 FF 84 */ bne lbl_803118AC
+/* 8031192C 0030D58C 48 00 00 28 */ b lbl_80311954
+lbl_80311930:
+/* 80311930 0030D590 80 05 00 04 */ lwz r0, 4(r5)
+/* 80311934 0030D594 80 65 00 08 */ lwz r3, 8(r5)
+/* 80311938 0030D598 7C 00 18 50 */ subf r0, r0, r3
+/* 8031193C 0030D59C 7C 00 3E 30 */ sraw r0, r0, r7
+/* 80311940 0030D5A0 7C 04 02 14 */ add r0, r4, r0
+/* 80311944 0030D5A4 7C 1D 00 40 */ cmplw r29, r0
+/* 80311948 0030D5A8 41 82 00 0C */ beq lbl_80311954
+/* 8031194C 0030D5AC 7C 03 42 14 */ add r0, r3, r8
+/* 80311950 0030D5B0 90 05 00 08 */ stw r0, 8(r5)
+lbl_80311954:
+/* 80311954 0030D5B4 57 40 07 FF */ clrlwi. r0, r26, 0x1f
+/* 80311958 0030D5B8 41 82 01 70 */ beq lbl_80311AC8
+/* 8031195C 0030D5BC 80 9C 00 00 */ lwz r4, 0(r28)
+/* 80311960 0030D5C0 57 E3 04 3E */ clrlwi r3, r31, 0x10
+/* 80311964 0030D5C4 80 84 00 08 */ lwz r4, 8(r4)
+/* 80311968 0030D5C8 7C 04 18 AE */ lbzx r0, r4, r3
+/* 8031196C 0030D5CC 54 00 07 3E */ clrlwi r0, r0, 0x1c
+/* 80311970 0030D5D0 53 60 26 36 */ rlwimi r0, r27, 4, 0x18, 0x1b
+/* 80311974 0030D5D4 7C 04 19 AE */ stbx r0, r4, r3
+/* 80311978 0030D5D8 80 7C 00 00 */ lwz r3, 0(r28)
+/* 8031197C 0030D5DC 4B FF 8C 75 */ bl VFiPFCACHE_UpdateModifiedSector
+/* 80311980 0030D5E0 A1 19 00 00 */ lhz r8, 0(r25)
+/* 80311984 0030D5E4 57 E5 04 3E */ clrlwi r5, r31, 0x10
+/* 80311988 0030D5E8 38 08 FF FF */ addi r0, r8, -1
+/* 8031198C 0030D5EC 7C 05 00 40 */ cmplw r5, r0
+/* 80311990 0030D5F0 40 82 01 20 */ bne lbl_80311AB0
+/* 80311994 0030D5F4 80 9C 00 00 */ lwz r4, 0(r28)
+/* 80311998 0030D5F8 38 DD 00 01 */ addi r6, r29, 1
+/* 8031199C 0030D5FC 80 E4 00 18 */ lwz r7, 0x18(r4)
+/* 803119A0 0030D600 7C 07 30 40 */ cmplw r7, r6
+/* 803119A4 0030D604 41 81 00 14 */ bgt lbl_803119B8
+/* 803119A8 0030D608 80 19 16 00 */ lwz r0, 0x1600(r25)
+/* 803119AC 0030D60C 7C 07 02 14 */ add r0, r7, r0
+/* 803119B0 0030D610 7C 00 30 40 */ cmplw r0, r6
+/* 803119B4 0030D614 41 81 00 B8 */ bgt lbl_80311A6C
+lbl_803119B8:
+/* 803119B8 0030D618 7F 23 CB 78 */ mr r3, r25
+/* 803119BC 0030D61C 4B FF E4 AD */ bl VFiPFFAT_UpdateFATEntry
+/* 803119C0 0030D620 2C 03 00 00 */ cmpwi r3, 0
+/* 803119C4 0030D624 41 82 00 08 */ beq lbl_803119CC
+/* 803119C8 0030D628 48 00 02 78 */ b lbl_80311C40
+lbl_803119CC:
+/* 803119CC 0030D62C A0 79 00 18 */ lhz r3, 0x18(r25)
+/* 803119D0 0030D630 3B 40 00 01 */ li r26, 1
+/* 803119D4 0030D634 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 803119D8 0030D638 41 82 00 08 */ beq lbl_803119E0
+/* 803119DC 0030D63C 54 7A 07 7E */ clrlwi r26, r3, 0x1d
+lbl_803119E0:
+/* 803119E0 0030D640 7F 23 CB 78 */ mr r3, r25
+/* 803119E4 0030D644 7F 85 E3 78 */ mr r5, r28
+/* 803119E8 0030D648 38 9D 00 01 */ addi r4, r29, 1
+/* 803119EC 0030D64C 4B FF 8E 61 */ bl VFiPFCACHE_ReadFATPage
+/* 803119F0 0030D650 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 803119F4 0030D654 7C 7E 1B 78 */ mr r30, r3
+/* 803119F8 0030D658 40 82 00 50 */ bne lbl_80311A48
+/* 803119FC 0030D65C 81 99 18 90 */ lwz r12, 0x1890(r25)
+/* 80311A00 0030D660 2C 0C 00 00 */ cmpwi r12, 0
+/* 80311A04 0030D664 41 82 00 44 */ beq lbl_80311A48
+/* 80311A08 0030D668 80 79 18 70 */ lwz r3, 0x1870(r25)
+/* 80311A0C 0030D66C 7D 89 03 A6 */ mtctr r12
+/* 80311A10 0030D670 4E 80 04 21 */ bctrl
+/* 80311A14 0030D674 2C 03 00 00 */ cmpwi r3, 0
+/* 80311A18 0030D678 41 82 00 40 */ beq lbl_80311A58
+/* 80311A1C 0030D67C 2C 03 00 01 */ cmpwi r3, 1
+/* 80311A20 0030D680 40 82 00 28 */ bne lbl_80311A48
+/* 80311A24 0030D684 88 19 00 22 */ lbz r0, 0x22(r25)
+/* 80311A28 0030D688 28 00 00 02 */ cmplwi r0, 2
+/* 80311A2C 0030D68C 41 80 00 1C */ blt lbl_80311A48
+/* 80311A30 0030D690 7C 1A 00 40 */ cmplw r26, r0
+/* 80311A34 0030D694 40 80 00 14 */ bge lbl_80311A48
+/* 80311A38 0030D698 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 80311A3C 0030D69C 3B 5A 00 01 */ addi r26, r26, 1
+/* 80311A40 0030D6A0 7F BD 02 14 */ add r29, r29, r0
+/* 80311A44 0030D6A4 48 00 00 14 */ b lbl_80311A58
+lbl_80311A48:
+/* 80311A48 0030D6A8 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311A4C 0030D6AC 41 82 00 0C */ beq lbl_80311A58
+/* 80311A50 0030D6B0 7F C3 F3 78 */ mr r3, r30
+/* 80311A54 0030D6B4 48 00 01 EC */ b lbl_80311C40
+lbl_80311A58:
+/* 80311A58 0030D6B8 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311A5C 0030D6BC 40 82 FF 84 */ bne lbl_803119E0
+/* 80311A60 0030D6C0 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311A64 0030D6C4 4B FF 8B 8D */ bl VFiPFCACHE_UpdateModifiedSector
+/* 80311A68 0030D6C8 48 00 00 34 */ b lbl_80311A9C
+lbl_80311A6C:
+/* 80311A6C 0030D6CC 80 64 00 04 */ lwz r3, 4(r4)
+/* 80311A70 0030D6D0 80 A4 00 08 */ lwz r5, 8(r4)
+/* 80311A74 0030D6D4 88 19 00 20 */ lbz r0, 0x20(r25)
+/* 80311A78 0030D6D8 7C 63 28 50 */ subf r3, r3, r5
+/* 80311A7C 0030D6DC 7C 60 06 30 */ sraw r0, r3, r0
+/* 80311A80 0030D6E0 7C 07 02 14 */ add r0, r7, r0
+/* 80311A84 0030D6E4 7C 06 00 40 */ cmplw r6, r0
+/* 80311A88 0030D6E8 41 82 00 14 */ beq lbl_80311A9C
+/* 80311A8C 0030D6EC 7C 05 42 14 */ add r0, r5, r8
+/* 80311A90 0030D6F0 90 04 00 08 */ stw r0, 8(r4)
+/* 80311A94 0030D6F4 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311A98 0030D6F8 4B FF 8B 59 */ bl VFiPFCACHE_UpdateModifiedSector
+lbl_80311A9C:
+/* 80311A9C 0030D6FC 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311AA0 0030D700 57 60 E6 3E */ rlwinm r0, r27, 0x1c, 0x18, 0x1f
+/* 80311AA4 0030D704 80 63 00 08 */ lwz r3, 8(r3)
+/* 80311AA8 0030D708 98 03 00 00 */ stb r0, 0(r3)
+/* 80311AAC 0030D70C 48 00 01 90 */ b lbl_80311C3C
+lbl_80311AB0:
+/* 80311AB0 0030D710 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311AB4 0030D714 57 64 E6 3E */ rlwinm r4, r27, 0x1c, 0x18, 0x1f
+/* 80311AB8 0030D718 80 03 00 08 */ lwz r0, 8(r3)
+/* 80311ABC 0030D71C 7C 65 02 14 */ add r3, r5, r0
+/* 80311AC0 0030D720 98 83 00 01 */ stb r4, 1(r3)
+/* 80311AC4 0030D724 48 00 01 78 */ b lbl_80311C3C
+lbl_80311AC8:
+/* 80311AC8 0030D728 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311ACC 0030D72C 57 E0 04 3E */ clrlwi r0, r31, 0x10
+/* 80311AD0 0030D730 80 63 00 08 */ lwz r3, 8(r3)
+/* 80311AD4 0030D734 7F 63 01 AE */ stbx r27, r3, r0
+/* 80311AD8 0030D738 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311ADC 0030D73C 4B FF 8B 15 */ bl VFiPFCACHE_UpdateModifiedSector
+/* 80311AE0 0030D740 A1 19 00 00 */ lhz r8, 0(r25)
+/* 80311AE4 0030D744 57 E5 04 3E */ clrlwi r5, r31, 0x10
+/* 80311AE8 0030D748 38 08 FF FF */ addi r0, r8, -1
+/* 80311AEC 0030D74C 7C 05 00 40 */ cmplw r5, r0
+/* 80311AF0 0030D750 40 82 01 2C */ bne lbl_80311C1C
+/* 80311AF4 0030D754 80 9C 00 00 */ lwz r4, 0(r28)
+/* 80311AF8 0030D758 38 DD 00 01 */ addi r6, r29, 1
+/* 80311AFC 0030D75C 80 E4 00 18 */ lwz r7, 0x18(r4)
+/* 80311B00 0030D760 7C 07 30 40 */ cmplw r7, r6
+/* 80311B04 0030D764 41 81 00 14 */ bgt lbl_80311B18
+/* 80311B08 0030D768 80 19 16 00 */ lwz r0, 0x1600(r25)
+/* 80311B0C 0030D76C 7C 07 02 14 */ add r0, r7, r0
+/* 80311B10 0030D770 7C 00 30 40 */ cmplw r0, r6
+/* 80311B14 0030D774 41 81 00 B8 */ bgt lbl_80311BCC
+lbl_80311B18:
+/* 80311B18 0030D778 7F 23 CB 78 */ mr r3, r25
+/* 80311B1C 0030D77C 4B FF E3 4D */ bl VFiPFFAT_UpdateFATEntry
+/* 80311B20 0030D780 2C 03 00 00 */ cmpwi r3, 0
+/* 80311B24 0030D784 41 82 00 08 */ beq lbl_80311B2C
+/* 80311B28 0030D788 48 00 01 18 */ b lbl_80311C40
+lbl_80311B2C:
+/* 80311B2C 0030D78C A0 79 00 18 */ lhz r3, 0x18(r25)
+/* 80311B30 0030D790 3B 40 00 01 */ li r26, 1
+/* 80311B34 0030D794 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 80311B38 0030D798 41 82 00 08 */ beq lbl_80311B40
+/* 80311B3C 0030D79C 54 7A 07 7E */ clrlwi r26, r3, 0x1d
+lbl_80311B40:
+/* 80311B40 0030D7A0 7F 23 CB 78 */ mr r3, r25
+/* 80311B44 0030D7A4 7F 85 E3 78 */ mr r5, r28
+/* 80311B48 0030D7A8 38 9D 00 01 */ addi r4, r29, 1
+/* 80311B4C 0030D7AC 4B FF 8D 01 */ bl VFiPFCACHE_ReadFATPage
+/* 80311B50 0030D7B0 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80311B54 0030D7B4 7C 7E 1B 78 */ mr r30, r3
+/* 80311B58 0030D7B8 40 82 00 50 */ bne lbl_80311BA8
+/* 80311B5C 0030D7BC 81 99 18 90 */ lwz r12, 0x1890(r25)
+/* 80311B60 0030D7C0 2C 0C 00 00 */ cmpwi r12, 0
+/* 80311B64 0030D7C4 41 82 00 44 */ beq lbl_80311BA8
+/* 80311B68 0030D7C8 80 79 18 70 */ lwz r3, 0x1870(r25)
+/* 80311B6C 0030D7CC 7D 89 03 A6 */ mtctr r12
+/* 80311B70 0030D7D0 4E 80 04 21 */ bctrl
+/* 80311B74 0030D7D4 2C 03 00 00 */ cmpwi r3, 0
+/* 80311B78 0030D7D8 41 82 00 40 */ beq lbl_80311BB8
+/* 80311B7C 0030D7DC 2C 03 00 01 */ cmpwi r3, 1
+/* 80311B80 0030D7E0 40 82 00 28 */ bne lbl_80311BA8
+/* 80311B84 0030D7E4 88 19 00 22 */ lbz r0, 0x22(r25)
+/* 80311B88 0030D7E8 28 00 00 02 */ cmplwi r0, 2
+/* 80311B8C 0030D7EC 41 80 00 1C */ blt lbl_80311BA8
+/* 80311B90 0030D7F0 7C 1A 00 40 */ cmplw r26, r0
+/* 80311B94 0030D7F4 40 80 00 14 */ bge lbl_80311BA8
+/* 80311B98 0030D7F8 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 80311B9C 0030D7FC 3B 5A 00 01 */ addi r26, r26, 1
+/* 80311BA0 0030D800 7F BD 02 14 */ add r29, r29, r0
+/* 80311BA4 0030D804 48 00 00 14 */ b lbl_80311BB8
+lbl_80311BA8:
+/* 80311BA8 0030D808 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311BAC 0030D80C 41 82 00 0C */ beq lbl_80311BB8
+/* 80311BB0 0030D810 7F C3 F3 78 */ mr r3, r30
+/* 80311BB4 0030D814 48 00 00 8C */ b lbl_80311C40
+lbl_80311BB8:
+/* 80311BB8 0030D818 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311BBC 0030D81C 40 82 FF 84 */ bne lbl_80311B40
+/* 80311BC0 0030D820 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311BC4 0030D824 4B FF 8A 2D */ bl VFiPFCACHE_UpdateModifiedSector
+/* 80311BC8 0030D828 48 00 00 34 */ b lbl_80311BFC
+lbl_80311BCC:
+/* 80311BCC 0030D82C 80 64 00 04 */ lwz r3, 4(r4)
+/* 80311BD0 0030D830 80 A4 00 08 */ lwz r5, 8(r4)
+/* 80311BD4 0030D834 88 19 00 20 */ lbz r0, 0x20(r25)
+/* 80311BD8 0030D838 7C 63 28 50 */ subf r3, r3, r5
+/* 80311BDC 0030D83C 7C 60 06 30 */ sraw r0, r3, r0
+/* 80311BE0 0030D840 7C 07 02 14 */ add r0, r7, r0
+/* 80311BE4 0030D844 7C 06 00 40 */ cmplw r6, r0
+/* 80311BE8 0030D848 41 82 00 14 */ beq lbl_80311BFC
+/* 80311BEC 0030D84C 7C 05 42 14 */ add r0, r5, r8
+/* 80311BF0 0030D850 90 04 00 08 */ stw r0, 8(r4)
+/* 80311BF4 0030D854 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311BF8 0030D858 4B FF 89 F9 */ bl VFiPFCACHE_UpdateModifiedSector
+lbl_80311BFC:
+/* 80311BFC 0030D85C 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311C00 0030D860 57 60 C6 3E */ rlwinm r0, r27, 0x18, 0x18, 0x1f
+/* 80311C04 0030D864 80 83 00 08 */ lwz r4, 8(r3)
+/* 80311C08 0030D868 88 64 00 00 */ lbz r3, 0(r4)
+/* 80311C0C 0030D86C 54 63 06 36 */ rlwinm r3, r3, 0, 0x18, 0x1b
+/* 80311C10 0030D870 7C 60 03 78 */ or r0, r3, r0
+/* 80311C14 0030D874 98 04 00 00 */ stb r0, 0(r4)
+/* 80311C18 0030D878 48 00 00 24 */ b lbl_80311C3C
+lbl_80311C1C:
+/* 80311C1C 0030D87C 80 9C 00 00 */ lwz r4, 0(r28)
+/* 80311C20 0030D880 57 63 C6 3E */ rlwinm r3, r27, 0x18, 0x18, 0x1f
+/* 80311C24 0030D884 80 04 00 08 */ lwz r0, 8(r4)
+/* 80311C28 0030D888 7C 85 02 14 */ add r4, r5, r0
+/* 80311C2C 0030D88C 88 04 00 01 */ lbz r0, 1(r4)
+/* 80311C30 0030D890 54 00 06 36 */ rlwinm r0, r0, 0, 0x18, 0x1b
+/* 80311C34 0030D894 7C 60 03 78 */ or r0, r3, r0
+/* 80311C38 0030D898 98 04 00 01 */ stb r0, 1(r4)
+lbl_80311C3C:
+/* 80311C3C 0030D89C 7F C3 F3 78 */ mr r3, r30
+lbl_80311C40:
+/* 80311C40 0030D8A0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311C44 0030D8A4 4B EB 55 25 */ bl _restgpr_24
+/* 80311C48 0030D8A8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80311C4C 0030D8AC 7C 08 03 A6 */ mtlr r0
+/* 80311C50 0030D8B0 38 21 00 30 */ addi r1, r1, 0x30
+/* 80311C54 0030D8B4 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_fat16.s b/asm/SDK/VF/pf_fat16.s new file mode 100644 index 0000000..b09ed9a --- /dev/null +++ b/asm/SDK/VF/pf_fat16.s @@ -0,0 +1,398 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFAT16_ReadFATEntry
+VFiPFFAT16_ReadFATEntry:
+/* 80311C58 0030D8B8 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80311C5C 0030D8BC 7C 08 02 A6 */ mflr r0
+/* 80311C60 0030D8C0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80311C64 0030D8C4 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311C68 0030D8C8 4B EB 54 BD */ bl _savegpr_26
+/* 80311C6C 0030D8CC 2C 03 00 00 */ cmpwi r3, 0
+/* 80311C70 0030D8D0 7C 7D 1B 78 */ mr r29, r3
+/* 80311C74 0030D8D4 7C BE 2B 78 */ mr r30, r5
+/* 80311C78 0030D8D8 40 82 00 14 */ bne lbl_80311C8C
+/* 80311C7C 0030D8DC 38 00 FF FF */ li r0, -1
+/* 80311C80 0030D8E0 38 60 00 0A */ li r3, 0xa
+/* 80311C84 0030D8E4 90 05 00 00 */ stw r0, 0(r5)
+/* 80311C88 0030D8E8 48 00 01 1C */ b lbl_80311DA4
+lbl_80311C8C:
+/* 80311C8C 0030D8EC 28 04 00 02 */ cmplwi r4, 2
+/* 80311C90 0030D8F0 41 80 00 14 */ blt lbl_80311CA4
+/* 80311C94 0030D8F4 80 C3 00 34 */ lwz r6, 0x34(r3)
+/* 80311C98 0030D8F8 38 06 00 02 */ addi r0, r6, 2
+/* 80311C9C 0030D8FC 7C 04 00 40 */ cmplw r4, r0
+/* 80311CA0 0030D900 41 80 00 24 */ blt lbl_80311CC4
+lbl_80311CA4:
+/* 80311CA4 0030D904 2C 04 00 00 */ cmpwi r4, 0
+/* 80311CA8 0030D908 41 82 00 1C */ beq lbl_80311CC4
+/* 80311CAC 0030D90C 28 04 00 01 */ cmplwi r4, 1
+/* 80311CB0 0030D910 41 82 00 14 */ beq lbl_80311CC4
+/* 80311CB4 0030D914 38 00 FF FF */ li r0, -1
+/* 80311CB8 0030D918 38 60 00 0E */ li r3, 0xe
+/* 80311CBC 0030D91C 90 05 00 00 */ stw r0, 0(r5)
+/* 80311CC0 0030D920 48 00 00 E4 */ b lbl_80311DA4
+lbl_80311CC4:
+/* 80311CC4 0030D924 A1 03 00 18 */ lhz r8, 0x18(r3)
+/* 80311CC8 0030D928 54 87 08 3C */ slwi r7, r4, 1
+/* 80311CCC 0030D92C 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 80311CD0 0030D930 3B E0 00 01 */ li r31, 1
+/* 80311CD4 0030D934 A0 83 00 00 */ lhz r4, 0(r3)
+/* 80311CD8 0030D938 55 00 06 31 */ rlwinm. r0, r8, 0, 0x18, 0x18
+/* 80311CDC 0030D93C 80 C3 00 28 */ lwz r6, 0x28(r3)
+/* 80311CE0 0030D940 7C E3 2C 30 */ srw r3, r7, r5
+/* 80311CE4 0030D944 38 04 FF FF */ addi r0, r4, -1
+/* 80311CE8 0030D948 7C 66 1A 14 */ add r3, r6, r3
+/* 80311CEC 0030D94C 7C E0 00 38 */ and r0, r7, r0
+/* 80311CF0 0030D950 54 7C 04 3E */ clrlwi r28, r3, 0x10
+/* 80311CF4 0030D954 54 1B 04 3E */ clrlwi r27, r0, 0x10
+/* 80311CF8 0030D958 41 82 00 08 */ beq lbl_80311D00
+/* 80311CFC 0030D95C 55 1F 07 7E */ clrlwi r31, r8, 0x1d
+lbl_80311D00:
+/* 80311D00 0030D960 7F A3 EB 78 */ mr r3, r29
+/* 80311D04 0030D964 7F 85 E3 78 */ mr r5, r28
+/* 80311D08 0030D968 7F 66 DB 78 */ mr r6, r27
+/* 80311D0C 0030D96C 38 81 00 08 */ addi r4, r1, 8
+/* 80311D10 0030D970 38 E0 00 02 */ li r7, 2
+/* 80311D14 0030D974 48 00 6C 5D */ bl VFiPFSEC_ReadFAT
+/* 80311D18 0030D978 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80311D1C 0030D97C 7C 7A 1B 78 */ mr r26, r3
+/* 80311D20 0030D980 40 82 00 50 */ bne lbl_80311D70
+/* 80311D24 0030D984 81 9D 18 90 */ lwz r12, 0x1890(r29)
+/* 80311D28 0030D988 2C 0C 00 00 */ cmpwi r12, 0
+/* 80311D2C 0030D98C 41 82 00 44 */ beq lbl_80311D70
+/* 80311D30 0030D990 80 7D 18 70 */ lwz r3, 0x1870(r29)
+/* 80311D34 0030D994 7D 89 03 A6 */ mtctr r12
+/* 80311D38 0030D998 4E 80 04 21 */ bctrl
+/* 80311D3C 0030D99C 2C 03 00 00 */ cmpwi r3, 0
+/* 80311D40 0030D9A0 41 82 00 48 */ beq lbl_80311D88
+/* 80311D44 0030D9A4 2C 03 00 01 */ cmpwi r3, 1
+/* 80311D48 0030D9A8 40 82 00 28 */ bne lbl_80311D70
+/* 80311D4C 0030D9AC 88 1D 00 22 */ lbz r0, 0x22(r29)
+/* 80311D50 0030D9B0 28 00 00 02 */ cmplwi r0, 2
+/* 80311D54 0030D9B4 41 80 00 1C */ blt lbl_80311D70
+/* 80311D58 0030D9B8 7C 1F 00 40 */ cmplw r31, r0
+/* 80311D5C 0030D9BC 40 80 00 14 */ bge lbl_80311D70
+/* 80311D60 0030D9C0 80 1D 00 0C */ lwz r0, 0xc(r29)
+/* 80311D64 0030D9C4 3B FF 00 01 */ addi r31, r31, 1
+/* 80311D68 0030D9C8 7F 9C 02 14 */ add r28, r28, r0
+/* 80311D6C 0030D9CC 48 00 00 1C */ b lbl_80311D88
+lbl_80311D70:
+/* 80311D70 0030D9D0 2C 1A 00 00 */ cmpwi r26, 0
+/* 80311D74 0030D9D4 41 82 00 14 */ beq lbl_80311D88
+/* 80311D78 0030D9D8 38 00 FF FF */ li r0, -1
+/* 80311D7C 0030D9DC 7F 43 D3 78 */ mr r3, r26
+/* 80311D80 0030D9E0 90 1E 00 00 */ stw r0, 0(r30)
+/* 80311D84 0030D9E4 48 00 00 20 */ b lbl_80311DA4
+lbl_80311D88:
+/* 80311D88 0030D9E8 2C 1A 00 00 */ cmpwi r26, 0
+/* 80311D8C 0030D9EC 40 82 FF 74 */ bne lbl_80311D00
+/* 80311D90 0030D9F0 A0 81 00 08 */ lhz r4, 8(r1)
+/* 80311D94 0030D9F4 38 60 00 00 */ li r3, 0
+/* 80311D98 0030D9F8 54 80 44 2E */ rlwinm r0, r4, 8, 0x10, 0x17
+/* 80311D9C 0030D9FC 50 80 C6 3E */ rlwimi r0, r4, 0x18, 0x18, 0x1f
+/* 80311DA0 0030DA00 90 1E 00 00 */ stw r0, 0(r30)
+lbl_80311DA4:
+/* 80311DA4 0030DA04 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311DA8 0030DA08 4B EB 53 C9 */ bl _restgpr_26
+/* 80311DAC 0030DA0C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80311DB0 0030DA10 7C 08 03 A6 */ mtlr r0
+/* 80311DB4 0030DA14 38 21 00 30 */ addi r1, r1, 0x30
+/* 80311DB8 0030DA18 4E 80 00 20 */ blr
+
+.global VFiPFFAT16_ReadFATEntryPage
+VFiPFFAT16_ReadFATEntryPage:
+/* 80311DBC 0030DA1C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80311DC0 0030DA20 7C 08 02 A6 */ mflr r0
+/* 80311DC4 0030DA24 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80311DC8 0030DA28 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311DCC 0030DA2C 4B EB 53 55 */ bl _savegpr_25
+/* 80311DD0 0030DA30 2C 03 00 00 */ cmpwi r3, 0
+/* 80311DD4 0030DA34 7C 79 1B 78 */ mr r25, r3
+/* 80311DD8 0030DA38 7C BA 2B 78 */ mr r26, r5
+/* 80311DDC 0030DA3C 7C DB 33 78 */ mr r27, r6
+/* 80311DE0 0030DA40 3B C0 00 00 */ li r30, 0
+/* 80311DE4 0030DA44 40 82 00 0C */ bne lbl_80311DF0
+/* 80311DE8 0030DA48 38 60 00 0A */ li r3, 0xa
+/* 80311DEC 0030DA4C 48 00 01 74 */ b lbl_80311F60
+lbl_80311DF0:
+/* 80311DF0 0030DA50 28 04 00 02 */ cmplwi r4, 2
+/* 80311DF4 0030DA54 41 80 00 14 */ blt lbl_80311E08
+/* 80311DF8 0030DA58 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80311DFC 0030DA5C 38 05 00 02 */ addi r0, r5, 2
+/* 80311E00 0030DA60 7C 04 00 40 */ cmplw r4, r0
+/* 80311E04 0030DA64 41 80 00 1C */ blt lbl_80311E20
+lbl_80311E08:
+/* 80311E08 0030DA68 2C 04 00 00 */ cmpwi r4, 0
+/* 80311E0C 0030DA6C 41 82 00 14 */ beq lbl_80311E20
+/* 80311E10 0030DA70 28 04 00 01 */ cmplwi r4, 1
+/* 80311E14 0030DA74 41 82 00 0C */ beq lbl_80311E20
+/* 80311E18 0030DA78 38 60 00 0E */ li r3, 0xe
+/* 80311E1C 0030DA7C 48 00 01 44 */ b lbl_80311F60
+lbl_80311E20:
+/* 80311E20 0030DA80 A0 A3 00 18 */ lhz r5, 0x18(r3)
+/* 80311E24 0030DA84 54 9F 08 3C */ slwi r31, r4, 1
+/* 80311E28 0030DA88 88 E3 00 20 */ lbz r7, 0x20(r3)
+/* 80311E2C 0030DA8C 3B 80 00 01 */ li r28, 1
+/* 80311E30 0030DA90 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 80311E34 0030DA94 80 83 00 28 */ lwz r4, 0x28(r3)
+/* 80311E38 0030DA98 7F E0 3C 30 */ srw r0, r31, r7
+/* 80311E3C 0030DA9C 7C 04 02 14 */ add r0, r4, r0
+/* 80311E40 0030DAA0 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 80311E44 0030DAA4 41 82 00 08 */ beq lbl_80311E4C
+/* 80311E48 0030DAA8 54 BC 07 7E */ clrlwi r28, r5, 0x1d
+lbl_80311E4C:
+/* 80311E4C 0030DAAC 80 86 00 00 */ lwz r4, 0(r6)
+/* 80311E50 0030DAB0 80 C4 00 18 */ lwz r6, 0x18(r4)
+/* 80311E54 0030DAB4 7C 06 E8 40 */ cmplw r6, r29
+/* 80311E58 0030DAB8 41 81 00 14 */ bgt lbl_80311E6C
+/* 80311E5C 0030DABC 80 03 16 00 */ lwz r0, 0x1600(r3)
+/* 80311E60 0030DAC0 7C 06 02 14 */ add r0, r6, r0
+/* 80311E64 0030DAC4 7C 00 E8 40 */ cmplw r0, r29
+/* 80311E68 0030DAC8 41 81 00 A8 */ bgt lbl_80311F10
+lbl_80311E6C:
+/* 80311E6C 0030DACC A0 04 00 02 */ lhz r0, 2(r4)
+/* 80311E70 0030DAD0 28 00 00 01 */ cmplwi r0, 1
+/* 80311E74 0030DAD4 40 82 00 18 */ bne lbl_80311E8C
+/* 80311E78 0030DAD8 7F 23 CB 78 */ mr r3, r25
+/* 80311E7C 0030DADC 4B FF DF ED */ bl VFiPFFAT_UpdateFATEntry
+/* 80311E80 0030DAE0 2C 03 00 00 */ cmpwi r3, 0
+/* 80311E84 0030DAE4 41 82 00 08 */ beq lbl_80311E8C
+/* 80311E88 0030DAE8 48 00 00 D8 */ b lbl_80311F60
+lbl_80311E8C:
+/* 80311E8C 0030DAEC 7F 23 CB 78 */ mr r3, r25
+/* 80311E90 0030DAF0 7F A4 EB 78 */ mr r4, r29
+/* 80311E94 0030DAF4 7F 65 DB 78 */ mr r5, r27
+/* 80311E98 0030DAF8 4B FF 89 B5 */ bl VFiPFCACHE_ReadFATPage
+/* 80311E9C 0030DAFC 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80311EA0 0030DB00 7C 7E 1B 78 */ mr r30, r3
+/* 80311EA4 0030DB04 40 82 00 50 */ bne lbl_80311EF4
+/* 80311EA8 0030DB08 81 99 18 90 */ lwz r12, 0x1890(r25)
+/* 80311EAC 0030DB0C 2C 0C 00 00 */ cmpwi r12, 0
+/* 80311EB0 0030DB10 41 82 00 44 */ beq lbl_80311EF4
+/* 80311EB4 0030DB14 80 79 18 70 */ lwz r3, 0x1870(r25)
+/* 80311EB8 0030DB18 7D 89 03 A6 */ mtctr r12
+/* 80311EBC 0030DB1C 4E 80 04 21 */ bctrl
+/* 80311EC0 0030DB20 2C 03 00 00 */ cmpwi r3, 0
+/* 80311EC4 0030DB24 41 82 00 40 */ beq lbl_80311F04
+/* 80311EC8 0030DB28 2C 03 00 01 */ cmpwi r3, 1
+/* 80311ECC 0030DB2C 40 82 00 28 */ bne lbl_80311EF4
+/* 80311ED0 0030DB30 88 19 00 22 */ lbz r0, 0x22(r25)
+/* 80311ED4 0030DB34 28 00 00 02 */ cmplwi r0, 2
+/* 80311ED8 0030DB38 41 80 00 1C */ blt lbl_80311EF4
+/* 80311EDC 0030DB3C 7C 1C 00 40 */ cmplw r28, r0
+/* 80311EE0 0030DB40 40 80 00 14 */ bge lbl_80311EF4
+/* 80311EE4 0030DB44 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 80311EE8 0030DB48 3B 9C 00 01 */ addi r28, r28, 1
+/* 80311EEC 0030DB4C 7F BD 02 14 */ add r29, r29, r0
+/* 80311EF0 0030DB50 48 00 00 14 */ b lbl_80311F04
+lbl_80311EF4:
+/* 80311EF4 0030DB54 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311EF8 0030DB58 41 82 00 0C */ beq lbl_80311F04
+/* 80311EFC 0030DB5C 7F C3 F3 78 */ mr r3, r30
+/* 80311F00 0030DB60 48 00 00 60 */ b lbl_80311F60
+lbl_80311F04:
+/* 80311F04 0030DB64 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311F08 0030DB68 40 82 FF 84 */ bne lbl_80311E8C
+/* 80311F0C 0030DB6C 48 00 00 2C */ b lbl_80311F38
+lbl_80311F10:
+/* 80311F10 0030DB70 80 04 00 04 */ lwz r0, 4(r4)
+/* 80311F14 0030DB74 80 A4 00 08 */ lwz r5, 8(r4)
+/* 80311F18 0030DB78 7C 00 28 50 */ subf r0, r0, r5
+/* 80311F1C 0030DB7C 7C 00 3E 30 */ sraw r0, r0, r7
+/* 80311F20 0030DB80 7C 06 02 14 */ add r0, r6, r0
+/* 80311F24 0030DB84 7C 1D 00 40 */ cmplw r29, r0
+/* 80311F28 0030DB88 41 82 00 10 */ beq lbl_80311F38
+/* 80311F2C 0030DB8C A0 03 00 00 */ lhz r0, 0(r3)
+/* 80311F30 0030DB90 7C 05 02 14 */ add r0, r5, r0
+/* 80311F34 0030DB94 90 04 00 08 */ stw r0, 8(r4)
+lbl_80311F38:
+/* 80311F38 0030DB98 A0 B9 00 00 */ lhz r5, 0(r25)
+/* 80311F3C 0030DB9C 7F C3 F3 78 */ mr r3, r30
+/* 80311F40 0030DBA0 80 9B 00 00 */ lwz r4, 0(r27)
+/* 80311F44 0030DBA4 38 05 FF FF */ addi r0, r5, -1
+/* 80311F48 0030DBA8 80 84 00 08 */ lwz r4, 8(r4)
+/* 80311F4C 0030DBAC 7F E0 00 38 */ and r0, r31, r0
+/* 80311F50 0030DBB0 7C 84 02 2E */ lhzx r4, r4, r0
+/* 80311F54 0030DBB4 54 80 44 2E */ rlwinm r0, r4, 8, 0x10, 0x17
+/* 80311F58 0030DBB8 50 80 C6 3E */ rlwimi r0, r4, 0x18, 0x18, 0x1f
+/* 80311F5C 0030DBBC 90 1A 00 00 */ stw r0, 0(r26)
+lbl_80311F60:
+/* 80311F60 0030DBC0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311F64 0030DBC4 4B EB 52 09 */ bl _restgpr_25
+/* 80311F68 0030DBC8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80311F6C 0030DBCC 7C 08 03 A6 */ mtlr r0
+/* 80311F70 0030DBD0 38 21 00 30 */ addi r1, r1, 0x30
+/* 80311F74 0030DBD4 4E 80 00 20 */ blr
+
+.global VFiPFFAT16_WriteFATEntry
+VFiPFFAT16_WriteFATEntry:
+/* 80311F78 0030DBD8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80311F7C 0030DBDC 7C 08 02 A6 */ mflr r0
+/* 80311F80 0030DBE0 2C 03 00 00 */ cmpwi r3, 0
+/* 80311F84 0030DBE4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80311F88 0030DBE8 40 82 00 0C */ bne lbl_80311F94
+/* 80311F8C 0030DBEC 38 60 00 0A */ li r3, 0xa
+/* 80311F90 0030DBF0 48 00 00 70 */ b lbl_80312000
+lbl_80311F94:
+/* 80311F94 0030DBF4 28 04 00 02 */ cmplwi r4, 2
+/* 80311F98 0030DBF8 41 80 00 14 */ blt lbl_80311FAC
+/* 80311F9C 0030DBFC 80 C3 00 34 */ lwz r6, 0x34(r3)
+/* 80311FA0 0030DC00 38 06 00 02 */ addi r0, r6, 2
+/* 80311FA4 0030DC04 7C 04 00 40 */ cmplw r4, r0
+/* 80311FA8 0030DC08 41 80 00 1C */ blt lbl_80311FC4
+lbl_80311FAC:
+/* 80311FAC 0030DC0C 2C 04 00 00 */ cmpwi r4, 0
+/* 80311FB0 0030DC10 41 82 00 14 */ beq lbl_80311FC4
+/* 80311FB4 0030DC14 28 04 00 01 */ cmplwi r4, 1
+/* 80311FB8 0030DC18 41 82 00 0C */ beq lbl_80311FC4
+/* 80311FBC 0030DC1C 38 60 00 0E */ li r3, 0xe
+/* 80311FC0 0030DC20 48 00 00 40 */ b lbl_80312000
+lbl_80311FC4:
+/* 80311FC4 0030DC24 A0 C3 00 00 */ lhz r6, 0(r3)
+/* 80311FC8 0030DC28 54 89 08 3C */ slwi r9, r4, 1
+/* 80311FCC 0030DC2C 88 E3 00 20 */ lbz r7, 0x20(r3)
+/* 80311FD0 0030DC30 38 01 00 08 */ addi r0, r1, 8
+/* 80311FD4 0030DC34 38 86 FF FF */ addi r4, r6, -1
+/* 80311FD8 0030DC38 81 03 00 28 */ lwz r8, 0x28(r3)
+/* 80311FDC 0030DC3C 7D 26 3C 30 */ srw r6, r9, r7
+/* 80311FE0 0030DC40 38 E0 00 02 */ li r7, 2
+/* 80311FE4 0030DC44 7C C8 32 14 */ add r6, r8, r6
+/* 80311FE8 0030DC48 7C A0 07 2C */ sthbrx r5, 0, r0
+/* 80311FEC 0030DC4C 7D 24 20 38 */ and r4, r9, r4
+/* 80311FF0 0030DC50 54 C5 04 3E */ clrlwi r5, r6, 0x10
+/* 80311FF4 0030DC54 54 86 04 3E */ clrlwi r6, r4, 0x10
+/* 80311FF8 0030DC58 38 81 00 08 */ addi r4, r1, 8
+/* 80311FFC 0030DC5C 48 00 6D 0D */ bl VFiPFSEC_WriteFAT
+lbl_80312000:
+/* 80312000 0030DC60 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80312004 0030DC64 7C 08 03 A6 */ mtlr r0
+/* 80312008 0030DC68 38 21 00 10 */ addi r1, r1, 0x10
+/* 8031200C 0030DC6C 4E 80 00 20 */ blr
+
+.global VFiPFFAT16_WriteFATEntryPage
+VFiPFFAT16_WriteFATEntryPage:
+/* 80312010 0030DC70 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80312014 0030DC74 7C 08 02 A6 */ mflr r0
+/* 80312018 0030DC78 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8031201C 0030DC7C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312020 0030DC80 4B EB 51 01 */ bl _savegpr_25
+/* 80312024 0030DC84 2C 03 00 00 */ cmpwi r3, 0
+/* 80312028 0030DC88 7C 7A 1B 78 */ mr r26, r3
+/* 8031202C 0030DC8C 7C BB 2B 78 */ mr r27, r5
+/* 80312030 0030DC90 7C DC 33 78 */ mr r28, r6
+/* 80312034 0030DC94 3B C0 00 00 */ li r30, 0
+/* 80312038 0030DC98 40 82 00 0C */ bne lbl_80312044
+/* 8031203C 0030DC9C 38 60 00 0A */ li r3, 0xa
+/* 80312040 0030DCA0 48 00 01 78 */ b lbl_803121B8
+lbl_80312044:
+/* 80312044 0030DCA4 28 04 00 02 */ cmplwi r4, 2
+/* 80312048 0030DCA8 41 80 00 14 */ blt lbl_8031205C
+/* 8031204C 0030DCAC 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80312050 0030DCB0 38 05 00 02 */ addi r0, r5, 2
+/* 80312054 0030DCB4 7C 04 00 40 */ cmplw r4, r0
+/* 80312058 0030DCB8 41 80 00 1C */ blt lbl_80312074
+lbl_8031205C:
+/* 8031205C 0030DCBC 2C 04 00 00 */ cmpwi r4, 0
+/* 80312060 0030DCC0 41 82 00 14 */ beq lbl_80312074
+/* 80312064 0030DCC4 28 04 00 01 */ cmplwi r4, 1
+/* 80312068 0030DCC8 41 82 00 0C */ beq lbl_80312074
+/* 8031206C 0030DCCC 38 60 00 0E */ li r3, 0xe
+/* 80312070 0030DCD0 48 00 01 48 */ b lbl_803121B8
+lbl_80312074:
+/* 80312074 0030DCD4 89 03 00 20 */ lbz r8, 0x20(r3)
+/* 80312078 0030DCD8 54 87 08 3C */ slwi r7, r4, 1
+/* 8031207C 0030DCDC 80 86 00 00 */ lwz r4, 0(r6)
+/* 80312080 0030DCE0 80 A3 00 28 */ lwz r5, 0x28(r3)
+/* 80312084 0030DCE4 7C E0 44 30 */ srw r0, r7, r8
+/* 80312088 0030DCE8 A0 C3 00 00 */ lhz r6, 0(r3)
+/* 8031208C 0030DCEC 7C 05 02 14 */ add r0, r5, r0
+/* 80312090 0030DCF0 80 A4 00 18 */ lwz r5, 0x18(r4)
+/* 80312094 0030DCF4 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 80312098 0030DCF8 38 06 FF FF */ addi r0, r6, -1
+/* 8031209C 0030DCFC 7C E0 00 38 */ and r0, r7, r0
+/* 803120A0 0030DD00 7C 05 E8 40 */ cmplw r5, r29
+/* 803120A4 0030DD04 54 1F 04 3E */ clrlwi r31, r0, 0x10
+/* 803120A8 0030DD08 41 81 00 14 */ bgt lbl_803120BC
+/* 803120AC 0030DD0C 80 03 16 00 */ lwz r0, 0x1600(r3)
+/* 803120B0 0030DD10 7C 05 02 14 */ add r0, r5, r0
+/* 803120B4 0030DD14 7C 00 E8 40 */ cmplw r0, r29
+/* 803120B8 0030DD18 41 81 00 B0 */ bgt lbl_80312168
+lbl_803120BC:
+/* 803120BC 0030DD1C 7F 43 D3 78 */ mr r3, r26
+/* 803120C0 0030DD20 4B FF DD A9 */ bl VFiPFFAT_UpdateFATEntry
+/* 803120C4 0030DD24 2C 03 00 00 */ cmpwi r3, 0
+/* 803120C8 0030DD28 41 82 00 08 */ beq lbl_803120D0
+/* 803120CC 0030DD2C 48 00 00 EC */ b lbl_803121B8
+lbl_803120D0:
+/* 803120D0 0030DD30 A0 7A 00 18 */ lhz r3, 0x18(r26)
+/* 803120D4 0030DD34 3B 20 00 01 */ li r25, 1
+/* 803120D8 0030DD38 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 803120DC 0030DD3C 41 82 00 08 */ beq lbl_803120E4
+/* 803120E0 0030DD40 54 79 07 7E */ clrlwi r25, r3, 0x1d
+lbl_803120E4:
+/* 803120E4 0030DD44 7F 43 D3 78 */ mr r3, r26
+/* 803120E8 0030DD48 7F A4 EB 78 */ mr r4, r29
+/* 803120EC 0030DD4C 7F 85 E3 78 */ mr r5, r28
+/* 803120F0 0030DD50 4B FF 87 5D */ bl VFiPFCACHE_ReadFATPage
+/* 803120F4 0030DD54 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 803120F8 0030DD58 7C 7E 1B 78 */ mr r30, r3
+/* 803120FC 0030DD5C 40 82 00 50 */ bne lbl_8031214C
+/* 80312100 0030DD60 81 9A 18 90 */ lwz r12, 0x1890(r26)
+/* 80312104 0030DD64 2C 0C 00 00 */ cmpwi r12, 0
+/* 80312108 0030DD68 41 82 00 44 */ beq lbl_8031214C
+/* 8031210C 0030DD6C 80 7A 18 70 */ lwz r3, 0x1870(r26)
+/* 80312110 0030DD70 7D 89 03 A6 */ mtctr r12
+/* 80312114 0030DD74 4E 80 04 21 */ bctrl
+/* 80312118 0030DD78 2C 03 00 00 */ cmpwi r3, 0
+/* 8031211C 0030DD7C 41 82 00 40 */ beq lbl_8031215C
+/* 80312120 0030DD80 2C 03 00 01 */ cmpwi r3, 1
+/* 80312124 0030DD84 40 82 00 28 */ bne lbl_8031214C
+/* 80312128 0030DD88 88 1A 00 22 */ lbz r0, 0x22(r26)
+/* 8031212C 0030DD8C 28 00 00 02 */ cmplwi r0, 2
+/* 80312130 0030DD90 41 80 00 1C */ blt lbl_8031214C
+/* 80312134 0030DD94 7C 19 00 40 */ cmplw r25, r0
+/* 80312138 0030DD98 40 80 00 14 */ bge lbl_8031214C
+/* 8031213C 0030DD9C 80 1A 00 0C */ lwz r0, 0xc(r26)
+/* 80312140 0030DDA0 3B 39 00 01 */ addi r25, r25, 1
+/* 80312144 0030DDA4 7F BD 02 14 */ add r29, r29, r0
+/* 80312148 0030DDA8 48 00 00 14 */ b lbl_8031215C
+lbl_8031214C:
+/* 8031214C 0030DDAC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312150 0030DDB0 41 82 00 0C */ beq lbl_8031215C
+/* 80312154 0030DDB4 7F C3 F3 78 */ mr r3, r30
+/* 80312158 0030DDB8 48 00 00 60 */ b lbl_803121B8
+lbl_8031215C:
+/* 8031215C 0030DDBC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312160 0030DDC0 40 82 FF 84 */ bne lbl_803120E4
+/* 80312164 0030DDC4 48 00 00 28 */ b lbl_8031218C
+lbl_80312168:
+/* 80312168 0030DDC8 80 04 00 04 */ lwz r0, 4(r4)
+/* 8031216C 0030DDCC 80 64 00 08 */ lwz r3, 8(r4)
+/* 80312170 0030DDD0 7C 00 18 50 */ subf r0, r0, r3
+/* 80312174 0030DDD4 7C 00 46 30 */ sraw r0, r0, r8
+/* 80312178 0030DDD8 7C 05 02 14 */ add r0, r5, r0
+/* 8031217C 0030DDDC 7C 1D 00 40 */ cmplw r29, r0
+/* 80312180 0030DDE0 41 82 00 0C */ beq lbl_8031218C
+/* 80312184 0030DDE4 7C 03 32 14 */ add r0, r3, r6
+/* 80312188 0030DDE8 90 04 00 08 */ stw r0, 8(r4)
+lbl_8031218C:
+/* 8031218C 0030DDEC 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80312190 0030DDF0 57 64 C6 3E */ rlwinm r4, r27, 0x18, 0x18, 0x1f
+/* 80312194 0030DDF4 80 63 00 08 */ lwz r3, 8(r3)
+/* 80312198 0030DDF8 7F 63 F9 AE */ stbx r27, r3, r31
+/* 8031219C 0030DDFC 80 7C 00 00 */ lwz r3, 0(r28)
+/* 803121A0 0030DE00 80 03 00 08 */ lwz r0, 8(r3)
+/* 803121A4 0030DE04 7C 60 FA 14 */ add r3, r0, r31
+/* 803121A8 0030DE08 98 83 00 01 */ stb r4, 1(r3)
+/* 803121AC 0030DE0C 80 7C 00 00 */ lwz r3, 0(r28)
+/* 803121B0 0030DE10 4B FF 84 41 */ bl VFiPFCACHE_UpdateModifiedSector
+/* 803121B4 0030DE14 7F C3 F3 78 */ mr r3, r30
+lbl_803121B8:
+/* 803121B8 0030DE18 39 61 00 30 */ addi r11, r1, 0x30
+/* 803121BC 0030DE1C 4B EB 4F B1 */ bl _restgpr_25
+/* 803121C0 0030DE20 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803121C4 0030DE24 7C 08 03 A6 */ mtlr r0
+/* 803121C8 0030DE28 38 21 00 30 */ addi r1, r1, 0x30
+/* 803121CC 0030DE2C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_fat32.s b/asm/SDK/VF/pf_fat32.s new file mode 100644 index 0000000..7b2db22 --- /dev/null +++ b/asm/SDK/VF/pf_fat32.s @@ -0,0 +1,449 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFAT32_ReadFATEntry
+VFiPFFAT32_ReadFATEntry:
+/* 803121D0 0030DE30 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803121D4 0030DE34 7C 08 02 A6 */ mflr r0
+/* 803121D8 0030DE38 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803121DC 0030DE3C 39 61 00 30 */ addi r11, r1, 0x30
+/* 803121E0 0030DE40 4B EB 4F 45 */ bl _savegpr_26
+/* 803121E4 0030DE44 2C 03 00 00 */ cmpwi r3, 0
+/* 803121E8 0030DE48 7C 7D 1B 78 */ mr r29, r3
+/* 803121EC 0030DE4C 7C BE 2B 78 */ mr r30, r5
+/* 803121F0 0030DE50 40 82 00 14 */ bne lbl_80312204
+/* 803121F4 0030DE54 38 00 FF FF */ li r0, -1
+/* 803121F8 0030DE58 38 60 00 0A */ li r3, 0xa
+/* 803121FC 0030DE5C 90 05 00 00 */ stw r0, 0(r5)
+/* 80312200 0030DE60 48 00 01 2C */ b lbl_8031232C
+lbl_80312204:
+/* 80312204 0030DE64 28 04 00 02 */ cmplwi r4, 2
+/* 80312208 0030DE68 41 80 00 14 */ blt lbl_8031221C
+/* 8031220C 0030DE6C 80 C3 00 34 */ lwz r6, 0x34(r3)
+/* 80312210 0030DE70 38 06 00 02 */ addi r0, r6, 2
+/* 80312214 0030DE74 7C 04 00 40 */ cmplw r4, r0
+/* 80312218 0030DE78 41 80 00 24 */ blt lbl_8031223C
+lbl_8031221C:
+/* 8031221C 0030DE7C 2C 04 00 00 */ cmpwi r4, 0
+/* 80312220 0030DE80 41 82 00 1C */ beq lbl_8031223C
+/* 80312224 0030DE84 28 04 00 01 */ cmplwi r4, 1
+/* 80312228 0030DE88 41 82 00 14 */ beq lbl_8031223C
+/* 8031222C 0030DE8C 38 00 FF FF */ li r0, -1
+/* 80312230 0030DE90 38 60 00 0E */ li r3, 0xe
+/* 80312234 0030DE94 90 05 00 00 */ stw r0, 0(r5)
+/* 80312238 0030DE98 48 00 00 F4 */ b lbl_8031232C
+lbl_8031223C:
+/* 8031223C 0030DE9C A0 E3 00 18 */ lhz r7, 0x18(r3)
+/* 80312240 0030DEA0 54 88 10 3A */ slwi r8, r4, 2
+/* 80312244 0030DEA4 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 80312248 0030DEA8 3B E0 00 01 */ li r31, 1
+/* 8031224C 0030DEAC A0 83 00 00 */ lhz r4, 0(r3)
+/* 80312250 0030DEB0 54 E0 06 31 */ rlwinm. r0, r7, 0, 0x18, 0x18
+/* 80312254 0030DEB4 80 C3 00 28 */ lwz r6, 0x28(r3)
+/* 80312258 0030DEB8 7D 03 2C 30 */ srw r3, r8, r5
+/* 8031225C 0030DEBC 38 04 FF FF */ addi r0, r4, -1
+/* 80312260 0030DEC0 7C 66 1A 14 */ add r3, r6, r3
+/* 80312264 0030DEC4 7D 00 00 38 */ and r0, r8, r0
+/* 80312268 0030DEC8 54 7C 04 3E */ clrlwi r28, r3, 0x10
+/* 8031226C 0030DECC 54 1B 04 3E */ clrlwi r27, r0, 0x10
+/* 80312270 0030DED0 41 82 00 08 */ beq lbl_80312278
+/* 80312274 0030DED4 54 FF 07 7E */ clrlwi r31, r7, 0x1d
+lbl_80312278:
+/* 80312278 0030DED8 7F A3 EB 78 */ mr r3, r29
+/* 8031227C 0030DEDC 7F 85 E3 78 */ mr r5, r28
+/* 80312280 0030DEE0 7F 66 DB 78 */ mr r6, r27
+/* 80312284 0030DEE4 38 81 00 08 */ addi r4, r1, 8
+/* 80312288 0030DEE8 38 E0 00 04 */ li r7, 4
+/* 8031228C 0030DEEC 48 00 66 E5 */ bl VFiPFSEC_ReadFAT
+/* 80312290 0030DEF0 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80312294 0030DEF4 7C 7A 1B 78 */ mr r26, r3
+/* 80312298 0030DEF8 40 82 00 50 */ bne lbl_803122E8
+/* 8031229C 0030DEFC 81 9D 18 90 */ lwz r12, 0x1890(r29)
+/* 803122A0 0030DF00 2C 0C 00 00 */ cmpwi r12, 0
+/* 803122A4 0030DF04 41 82 00 44 */ beq lbl_803122E8
+/* 803122A8 0030DF08 80 7D 18 70 */ lwz r3, 0x1870(r29)
+/* 803122AC 0030DF0C 7D 89 03 A6 */ mtctr r12
+/* 803122B0 0030DF10 4E 80 04 21 */ bctrl
+/* 803122B4 0030DF14 2C 03 00 00 */ cmpwi r3, 0
+/* 803122B8 0030DF18 41 82 00 48 */ beq lbl_80312300
+/* 803122BC 0030DF1C 2C 03 00 01 */ cmpwi r3, 1
+/* 803122C0 0030DF20 40 82 00 28 */ bne lbl_803122E8
+/* 803122C4 0030DF24 88 1D 00 22 */ lbz r0, 0x22(r29)
+/* 803122C8 0030DF28 28 00 00 02 */ cmplwi r0, 2
+/* 803122CC 0030DF2C 41 80 00 1C */ blt lbl_803122E8
+/* 803122D0 0030DF30 7C 1F 00 40 */ cmplw r31, r0
+/* 803122D4 0030DF34 40 80 00 14 */ bge lbl_803122E8
+/* 803122D8 0030DF38 80 1D 00 0C */ lwz r0, 0xc(r29)
+/* 803122DC 0030DF3C 3B FF 00 01 */ addi r31, r31, 1
+/* 803122E0 0030DF40 7F 9C 02 14 */ add r28, r28, r0
+/* 803122E4 0030DF44 48 00 00 1C */ b lbl_80312300
+lbl_803122E8:
+/* 803122E8 0030DF48 2C 1A 00 00 */ cmpwi r26, 0
+/* 803122EC 0030DF4C 41 82 00 14 */ beq lbl_80312300
+/* 803122F0 0030DF50 38 00 FF FF */ li r0, -1
+/* 803122F4 0030DF54 7F 43 D3 78 */ mr r3, r26
+/* 803122F8 0030DF58 90 1E 00 00 */ stw r0, 0(r30)
+/* 803122FC 0030DF5C 48 00 00 30 */ b lbl_8031232C
+lbl_80312300:
+/* 80312300 0030DF60 2C 1A 00 00 */ cmpwi r26, 0
+/* 80312304 0030DF64 40 82 FF 74 */ bne lbl_80312278
+/* 80312308 0030DF68 80 A1 00 08 */ lwz r5, 8(r1)
+/* 8031230C 0030DF6C 38 60 00 00 */ li r3, 0
+/* 80312310 0030DF70 54 A4 42 1E */ rlwinm r4, r5, 8, 8, 0xf
+/* 80312314 0030DF74 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
+/* 80312318 0030DF78 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
+/* 8031231C 0030DF7C 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
+/* 80312320 0030DF80 7C 80 03 78 */ or r0, r4, r0
+/* 80312324 0030DF84 54 00 01 3E */ clrlwi r0, r0, 4
+/* 80312328 0030DF88 90 1E 00 00 */ stw r0, 0(r30)
+lbl_8031232C:
+/* 8031232C 0030DF8C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312330 0030DF90 4B EB 4E 41 */ bl _restgpr_26
+/* 80312334 0030DF94 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80312338 0030DF98 7C 08 03 A6 */ mtlr r0
+/* 8031233C 0030DF9C 38 21 00 30 */ addi r1, r1, 0x30
+/* 80312340 0030DFA0 4E 80 00 20 */ blr
+
+.global VFiPFFAT32_ReadFATEntryPage
+VFiPFFAT32_ReadFATEntryPage:
+/* 80312344 0030DFA4 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80312348 0030DFA8 7C 08 02 A6 */ mflr r0
+/* 8031234C 0030DFAC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80312350 0030DFB0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312354 0030DFB4 4B EB 4D CD */ bl _savegpr_25
+/* 80312358 0030DFB8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031235C 0030DFBC 7C 79 1B 78 */ mr r25, r3
+/* 80312360 0030DFC0 7C BA 2B 78 */ mr r26, r5
+/* 80312364 0030DFC4 7C DB 33 78 */ mr r27, r6
+/* 80312368 0030DFC8 3B C0 00 00 */ li r30, 0
+/* 8031236C 0030DFCC 40 82 00 0C */ bne lbl_80312378
+/* 80312370 0030DFD0 38 60 00 0A */ li r3, 0xa
+/* 80312374 0030DFD4 48 00 01 84 */ b lbl_803124F8
+lbl_80312378:
+/* 80312378 0030DFD8 28 04 00 02 */ cmplwi r4, 2
+/* 8031237C 0030DFDC 41 80 00 14 */ blt lbl_80312390
+/* 80312380 0030DFE0 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80312384 0030DFE4 38 05 00 02 */ addi r0, r5, 2
+/* 80312388 0030DFE8 7C 04 00 40 */ cmplw r4, r0
+/* 8031238C 0030DFEC 41 80 00 1C */ blt lbl_803123A8
+lbl_80312390:
+/* 80312390 0030DFF0 2C 04 00 00 */ cmpwi r4, 0
+/* 80312394 0030DFF4 41 82 00 14 */ beq lbl_803123A8
+/* 80312398 0030DFF8 28 04 00 01 */ cmplwi r4, 1
+/* 8031239C 0030DFFC 41 82 00 0C */ beq lbl_803123A8
+/* 803123A0 0030E000 38 60 00 0E */ li r3, 0xe
+/* 803123A4 0030E004 48 00 01 54 */ b lbl_803124F8
+lbl_803123A8:
+/* 803123A8 0030E008 A0 A3 00 18 */ lhz r5, 0x18(r3)
+/* 803123AC 0030E00C 54 9F 10 3A */ slwi r31, r4, 2
+/* 803123B0 0030E010 88 E3 00 20 */ lbz r7, 0x20(r3)
+/* 803123B4 0030E014 3B 80 00 01 */ li r28, 1
+/* 803123B8 0030E018 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 803123BC 0030E01C 80 83 00 28 */ lwz r4, 0x28(r3)
+/* 803123C0 0030E020 7F E0 3C 30 */ srw r0, r31, r7
+/* 803123C4 0030E024 7C 04 02 14 */ add r0, r4, r0
+/* 803123C8 0030E028 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 803123CC 0030E02C 41 82 00 08 */ beq lbl_803123D4
+/* 803123D0 0030E030 54 BC 07 7E */ clrlwi r28, r5, 0x1d
+lbl_803123D4:
+/* 803123D4 0030E034 80 86 00 00 */ lwz r4, 0(r6)
+/* 803123D8 0030E038 80 C4 00 18 */ lwz r6, 0x18(r4)
+/* 803123DC 0030E03C 7C 06 E8 40 */ cmplw r6, r29
+/* 803123E0 0030E040 41 81 00 14 */ bgt lbl_803123F4
+/* 803123E4 0030E044 80 03 16 00 */ lwz r0, 0x1600(r3)
+/* 803123E8 0030E048 7C 06 02 14 */ add r0, r6, r0
+/* 803123EC 0030E04C 7C 00 E8 40 */ cmplw r0, r29
+/* 803123F0 0030E050 41 81 00 A8 */ bgt lbl_80312498
+lbl_803123F4:
+/* 803123F4 0030E054 A0 04 00 02 */ lhz r0, 2(r4)
+/* 803123F8 0030E058 28 00 00 01 */ cmplwi r0, 1
+/* 803123FC 0030E05C 40 82 00 18 */ bne lbl_80312414
+/* 80312400 0030E060 7F 23 CB 78 */ mr r3, r25
+/* 80312404 0030E064 4B FF DA 65 */ bl VFiPFFAT_UpdateFATEntry
+/* 80312408 0030E068 2C 03 00 00 */ cmpwi r3, 0
+/* 8031240C 0030E06C 41 82 00 08 */ beq lbl_80312414
+/* 80312410 0030E070 48 00 00 E8 */ b lbl_803124F8
+lbl_80312414:
+/* 80312414 0030E074 7F 23 CB 78 */ mr r3, r25
+/* 80312418 0030E078 7F A4 EB 78 */ mr r4, r29
+/* 8031241C 0030E07C 7F 65 DB 78 */ mr r5, r27
+/* 80312420 0030E080 4B FF 84 2D */ bl VFiPFCACHE_ReadFATPage
+/* 80312424 0030E084 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80312428 0030E088 7C 7E 1B 78 */ mr r30, r3
+/* 8031242C 0030E08C 40 82 00 50 */ bne lbl_8031247C
+/* 80312430 0030E090 81 99 18 90 */ lwz r12, 0x1890(r25)
+/* 80312434 0030E094 2C 0C 00 00 */ cmpwi r12, 0
+/* 80312438 0030E098 41 82 00 44 */ beq lbl_8031247C
+/* 8031243C 0030E09C 80 79 18 70 */ lwz r3, 0x1870(r25)
+/* 80312440 0030E0A0 7D 89 03 A6 */ mtctr r12
+/* 80312444 0030E0A4 4E 80 04 21 */ bctrl
+/* 80312448 0030E0A8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031244C 0030E0AC 41 82 00 40 */ beq lbl_8031248C
+/* 80312450 0030E0B0 2C 03 00 01 */ cmpwi r3, 1
+/* 80312454 0030E0B4 40 82 00 28 */ bne lbl_8031247C
+/* 80312458 0030E0B8 88 19 00 22 */ lbz r0, 0x22(r25)
+/* 8031245C 0030E0BC 28 00 00 02 */ cmplwi r0, 2
+/* 80312460 0030E0C0 41 80 00 1C */ blt lbl_8031247C
+/* 80312464 0030E0C4 7C 1C 00 40 */ cmplw r28, r0
+/* 80312468 0030E0C8 40 80 00 14 */ bge lbl_8031247C
+/* 8031246C 0030E0CC 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 80312470 0030E0D0 3B 9C 00 01 */ addi r28, r28, 1
+/* 80312474 0030E0D4 7F BD 02 14 */ add r29, r29, r0
+/* 80312478 0030E0D8 48 00 00 14 */ b lbl_8031248C
+lbl_8031247C:
+/* 8031247C 0030E0DC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312480 0030E0E0 41 82 00 0C */ beq lbl_8031248C
+/* 80312484 0030E0E4 7F C3 F3 78 */ mr r3, r30
+/* 80312488 0030E0E8 48 00 00 70 */ b lbl_803124F8
+lbl_8031248C:
+/* 8031248C 0030E0EC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312490 0030E0F0 40 82 FF 84 */ bne lbl_80312414
+/* 80312494 0030E0F4 48 00 00 2C */ b lbl_803124C0
+lbl_80312498:
+/* 80312498 0030E0F8 80 04 00 04 */ lwz r0, 4(r4)
+/* 8031249C 0030E0FC 80 A4 00 08 */ lwz r5, 8(r4)
+/* 803124A0 0030E100 7C 00 28 50 */ subf r0, r0, r5
+/* 803124A4 0030E104 7C 00 3E 30 */ sraw r0, r0, r7
+/* 803124A8 0030E108 7C 06 02 14 */ add r0, r6, r0
+/* 803124AC 0030E10C 7C 1D 00 40 */ cmplw r29, r0
+/* 803124B0 0030E110 41 82 00 10 */ beq lbl_803124C0
+/* 803124B4 0030E114 A0 03 00 00 */ lhz r0, 0(r3)
+/* 803124B8 0030E118 7C 05 02 14 */ add r0, r5, r0
+/* 803124BC 0030E11C 90 04 00 08 */ stw r0, 8(r4)
+lbl_803124C0:
+/* 803124C0 0030E120 A0 B9 00 00 */ lhz r5, 0(r25)
+/* 803124C4 0030E124 7F C3 F3 78 */ mr r3, r30
+/* 803124C8 0030E128 80 9B 00 00 */ lwz r4, 0(r27)
+/* 803124CC 0030E12C 38 05 FF FF */ addi r0, r5, -1
+/* 803124D0 0030E130 80 84 00 08 */ lwz r4, 8(r4)
+/* 803124D4 0030E134 7F E0 00 38 */ and r0, r31, r0
+/* 803124D8 0030E138 7C A4 00 2E */ lwzx r5, r4, r0
+/* 803124DC 0030E13C 54 A4 42 1E */ rlwinm r4, r5, 8, 8, 0xf
+/* 803124E0 0030E140 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
+/* 803124E4 0030E144 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
+/* 803124E8 0030E148 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
+/* 803124EC 0030E14C 7C 80 03 78 */ or r0, r4, r0
+/* 803124F0 0030E150 54 00 01 3E */ clrlwi r0, r0, 4
+/* 803124F4 0030E154 90 1A 00 00 */ stw r0, 0(r26)
+lbl_803124F8:
+/* 803124F8 0030E158 39 61 00 30 */ addi r11, r1, 0x30
+/* 803124FC 0030E15C 4B EB 4C 71 */ bl _restgpr_25
+/* 80312500 0030E160 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80312504 0030E164 7C 08 03 A6 */ mtlr r0
+/* 80312508 0030E168 38 21 00 30 */ addi r1, r1, 0x30
+/* 8031250C 0030E16C 4E 80 00 20 */ blr
+
+.global VFiPFFAT32_WriteFATEntry
+VFiPFFAT32_WriteFATEntry:
+/* 80312510 0030E170 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80312514 0030E174 7C 08 02 A6 */ mflr r0
+/* 80312518 0030E178 2C 03 00 00 */ cmpwi r3, 0
+/* 8031251C 0030E17C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80312520 0030E180 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80312524 0030E184 7C BF 2B 78 */ mr r31, r5
+/* 80312528 0030E188 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8031252C 0030E18C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80312530 0030E190 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80312534 0030E194 7C 7C 1B 78 */ mr r28, r3
+/* 80312538 0030E198 40 82 00 0C */ bne lbl_80312544
+/* 8031253C 0030E19C 38 60 00 0A */ li r3, 0xa
+/* 80312540 0030E1A0 48 00 00 D0 */ b lbl_80312610
+lbl_80312544:
+/* 80312544 0030E1A4 28 04 00 02 */ cmplwi r4, 2
+/* 80312548 0030E1A8 41 80 00 14 */ blt lbl_8031255C
+/* 8031254C 0030E1AC 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80312550 0030E1B0 38 05 00 02 */ addi r0, r5, 2
+/* 80312554 0030E1B4 7C 04 00 40 */ cmplw r4, r0
+/* 80312558 0030E1B8 41 80 00 1C */ blt lbl_80312574
+lbl_8031255C:
+/* 8031255C 0030E1BC 2C 04 00 00 */ cmpwi r4, 0
+/* 80312560 0030E1C0 41 82 00 14 */ beq lbl_80312574
+/* 80312564 0030E1C4 28 04 00 01 */ cmplwi r4, 1
+/* 80312568 0030E1C8 41 82 00 0C */ beq lbl_80312574
+/* 8031256C 0030E1CC 38 60 00 0E */ li r3, 0xe
+/* 80312570 0030E1D0 48 00 00 A0 */ b lbl_80312610
+lbl_80312574:
+/* 80312574 0030E1D4 A0 A3 00 00 */ lhz r5, 0(r3)
+/* 80312578 0030E1D8 54 88 10 3A */ slwi r8, r4, 2
+/* 8031257C 0030E1DC 88 C3 00 20 */ lbz r6, 0x20(r3)
+/* 80312580 0030E1E0 38 81 00 08 */ addi r4, r1, 8
+/* 80312584 0030E1E4 38 05 FF FF */ addi r0, r5, -1
+/* 80312588 0030E1E8 80 E3 00 28 */ lwz r7, 0x28(r3)
+/* 8031258C 0030E1EC 7D 05 34 30 */ srw r5, r8, r6
+/* 80312590 0030E1F0 7F 83 E3 78 */ mr r3, r28
+/* 80312594 0030E1F4 7C A7 2A 14 */ add r5, r7, r5
+/* 80312598 0030E1F8 7D 00 00 38 */ and r0, r8, r0
+/* 8031259C 0030E1FC 54 BE 04 3E */ clrlwi r30, r5, 0x10
+/* 803125A0 0030E200 38 E0 00 04 */ li r7, 4
+/* 803125A4 0030E204 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 803125A8 0030E208 7F C5 F3 78 */ mr r5, r30
+/* 803125AC 0030E20C 7F A6 EB 78 */ mr r6, r29
+/* 803125B0 0030E210 48 00 63 C1 */ bl VFiPFSEC_ReadFAT
+/* 803125B4 0030E214 2C 03 00 00 */ cmpwi r3, 0
+/* 803125B8 0030E218 41 82 00 08 */ beq lbl_803125C0
+/* 803125BC 0030E21C 48 00 00 54 */ b lbl_80312610
+lbl_803125C0:
+/* 803125C0 0030E220 80 E1 00 08 */ lwz r7, 8(r1)
+/* 803125C4 0030E224 7F 83 E3 78 */ mr r3, r28
+/* 803125C8 0030E228 7F C5 F3 78 */ mr r5, r30
+/* 803125CC 0030E22C 7F A6 EB 78 */ mr r6, r29
+/* 803125D0 0030E230 54 E8 42 1E */ rlwinm r8, r7, 8, 8, 0xf
+/* 803125D4 0030E234 54 E0 C4 2E */ rlwinm r0, r7, 0x18, 0x10, 0x17
+/* 803125D8 0030E238 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7
+/* 803125DC 0030E23C 38 81 00 08 */ addi r4, r1, 8
+/* 803125E0 0030E240 50 E0 46 3E */ rlwimi r0, r7, 8, 0x18, 0x1f
+/* 803125E4 0030E244 38 E0 00 04 */ li r7, 4
+/* 803125E8 0030E248 7D 00 03 78 */ or r0, r8, r0
+/* 803125EC 0030E24C 54 09 00 06 */ rlwinm r9, r0, 0, 0, 3
+/* 803125F0 0030E250 53 E9 01 3E */ rlwimi r9, r31, 0, 4, 0x1f
+/* 803125F4 0030E254 55 28 42 1E */ rlwinm r8, r9, 8, 8, 0xf
+/* 803125F8 0030E258 55 20 C4 2E */ rlwinm r0, r9, 0x18, 0x10, 0x17
+/* 803125FC 0030E25C 51 28 C0 0E */ rlwimi r8, r9, 0x18, 0, 7
+/* 80312600 0030E260 51 20 46 3E */ rlwimi r0, r9, 8, 0x18, 0x1f
+/* 80312604 0030E264 7D 00 03 78 */ or r0, r8, r0
+/* 80312608 0030E268 90 01 00 08 */ stw r0, 8(r1)
+/* 8031260C 0030E26C 48 00 66 FD */ bl VFiPFSEC_WriteFAT
+lbl_80312610:
+/* 80312610 0030E270 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80312614 0030E274 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80312618 0030E278 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8031261C 0030E27C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80312620 0030E280 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 80312624 0030E284 7C 08 03 A6 */ mtlr r0
+/* 80312628 0030E288 38 21 00 20 */ addi r1, r1, 0x20
+/* 8031262C 0030E28C 4E 80 00 20 */ blr
+
+.global VFiPFFAT32_WriteFATEntryPage
+VFiPFFAT32_WriteFATEntryPage:
+/* 80312630 0030E290 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80312634 0030E294 7C 08 02 A6 */ mflr r0
+/* 80312638 0030E298 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8031263C 0030E29C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312640 0030E2A0 4B EB 4A E1 */ bl _savegpr_25
+/* 80312644 0030E2A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80312648 0030E2A8 7C 7A 1B 78 */ mr r26, r3
+/* 8031264C 0030E2AC 7C BB 2B 78 */ mr r27, r5
+/* 80312650 0030E2B0 7C DC 33 78 */ mr r28, r6
+/* 80312654 0030E2B4 3B C0 00 00 */ li r30, 0
+/* 80312658 0030E2B8 40 82 00 0C */ bne lbl_80312664
+/* 8031265C 0030E2BC 38 60 00 0A */ li r3, 0xa
+/* 80312660 0030E2C0 48 00 01 98 */ b lbl_803127F8
+lbl_80312664:
+/* 80312664 0030E2C4 28 04 00 02 */ cmplwi r4, 2
+/* 80312668 0030E2C8 41 80 00 14 */ blt lbl_8031267C
+/* 8031266C 0030E2CC 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80312670 0030E2D0 38 05 00 02 */ addi r0, r5, 2
+/* 80312674 0030E2D4 7C 04 00 40 */ cmplw r4, r0
+/* 80312678 0030E2D8 41 80 00 1C */ blt lbl_80312694
+lbl_8031267C:
+/* 8031267C 0030E2DC 2C 04 00 00 */ cmpwi r4, 0
+/* 80312680 0030E2E0 41 82 00 14 */ beq lbl_80312694
+/* 80312684 0030E2E4 28 04 00 01 */ cmplwi r4, 1
+/* 80312688 0030E2E8 41 82 00 0C */ beq lbl_80312694
+/* 8031268C 0030E2EC 38 60 00 0E */ li r3, 0xe
+/* 80312690 0030E2F0 48 00 01 68 */ b lbl_803127F8
+lbl_80312694:
+/* 80312694 0030E2F4 88 E3 00 20 */ lbz r7, 0x20(r3)
+/* 80312698 0030E2F8 54 88 10 3A */ slwi r8, r4, 2
+/* 8031269C 0030E2FC 80 86 00 00 */ lwz r4, 0(r6)
+/* 803126A0 0030E300 80 A3 00 28 */ lwz r5, 0x28(r3)
+/* 803126A4 0030E304 7D 00 3C 30 */ srw r0, r8, r7
+/* 803126A8 0030E308 A0 C3 00 00 */ lhz r6, 0(r3)
+/* 803126AC 0030E30C 7C 05 02 14 */ add r0, r5, r0
+/* 803126B0 0030E310 80 A4 00 18 */ lwz r5, 0x18(r4)
+/* 803126B4 0030E314 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 803126B8 0030E318 38 06 FF FF */ addi r0, r6, -1
+/* 803126BC 0030E31C 7D 00 00 38 */ and r0, r8, r0
+/* 803126C0 0030E320 7C 05 E8 40 */ cmplw r5, r29
+/* 803126C4 0030E324 54 1F 04 3E */ clrlwi r31, r0, 0x10
+/* 803126C8 0030E328 41 81 00 14 */ bgt lbl_803126DC
+/* 803126CC 0030E32C 80 03 16 00 */ lwz r0, 0x1600(r3)
+/* 803126D0 0030E330 7C 05 02 14 */ add r0, r5, r0
+/* 803126D4 0030E334 7C 00 E8 40 */ cmplw r0, r29
+/* 803126D8 0030E338 41 81 00 B0 */ bgt lbl_80312788
+lbl_803126DC:
+/* 803126DC 0030E33C 7F 43 D3 78 */ mr r3, r26
+/* 803126E0 0030E340 4B FF D7 89 */ bl VFiPFFAT_UpdateFATEntry
+/* 803126E4 0030E344 2C 03 00 00 */ cmpwi r3, 0
+/* 803126E8 0030E348 41 82 00 08 */ beq lbl_803126F0
+/* 803126EC 0030E34C 48 00 01 0C */ b lbl_803127F8
+lbl_803126F0:
+/* 803126F0 0030E350 A0 7A 00 18 */ lhz r3, 0x18(r26)
+/* 803126F4 0030E354 3B 20 00 01 */ li r25, 1
+/* 803126F8 0030E358 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 803126FC 0030E35C 41 82 00 08 */ beq lbl_80312704
+/* 80312700 0030E360 54 79 07 7E */ clrlwi r25, r3, 0x1d
+lbl_80312704:
+/* 80312704 0030E364 7F 43 D3 78 */ mr r3, r26
+/* 80312708 0030E368 7F A4 EB 78 */ mr r4, r29
+/* 8031270C 0030E36C 7F 85 E3 78 */ mr r5, r28
+/* 80312710 0030E370 4B FF 81 3D */ bl VFiPFCACHE_ReadFATPage
+/* 80312714 0030E374 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80312718 0030E378 7C 7E 1B 78 */ mr r30, r3
+/* 8031271C 0030E37C 40 82 00 50 */ bne lbl_8031276C
+/* 80312720 0030E380 81 9A 18 90 */ lwz r12, 0x1890(r26)
+/* 80312724 0030E384 2C 0C 00 00 */ cmpwi r12, 0
+/* 80312728 0030E388 41 82 00 44 */ beq lbl_8031276C
+/* 8031272C 0030E38C 80 7A 18 70 */ lwz r3, 0x1870(r26)
+/* 80312730 0030E390 7D 89 03 A6 */ mtctr r12
+/* 80312734 0030E394 4E 80 04 21 */ bctrl
+/* 80312738 0030E398 2C 03 00 00 */ cmpwi r3, 0
+/* 8031273C 0030E39C 41 82 00 40 */ beq lbl_8031277C
+/* 80312740 0030E3A0 2C 03 00 01 */ cmpwi r3, 1
+/* 80312744 0030E3A4 40 82 00 28 */ bne lbl_8031276C
+/* 80312748 0030E3A8 88 1A 00 22 */ lbz r0, 0x22(r26)
+/* 8031274C 0030E3AC 28 00 00 02 */ cmplwi r0, 2
+/* 80312750 0030E3B0 41 80 00 1C */ blt lbl_8031276C
+/* 80312754 0030E3B4 7C 19 00 40 */ cmplw r25, r0
+/* 80312758 0030E3B8 40 80 00 14 */ bge lbl_8031276C
+/* 8031275C 0030E3BC 80 1A 00 0C */ lwz r0, 0xc(r26)
+/* 80312760 0030E3C0 3B 39 00 01 */ addi r25, r25, 1
+/* 80312764 0030E3C4 7F BD 02 14 */ add r29, r29, r0
+/* 80312768 0030E3C8 48 00 00 14 */ b lbl_8031277C
+lbl_8031276C:
+/* 8031276C 0030E3CC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312770 0030E3D0 41 82 00 0C */ beq lbl_8031277C
+/* 80312774 0030E3D4 7F C3 F3 78 */ mr r3, r30
+/* 80312778 0030E3D8 48 00 00 80 */ b lbl_803127F8
+lbl_8031277C:
+/* 8031277C 0030E3DC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312780 0030E3E0 40 82 FF 84 */ bne lbl_80312704
+/* 80312784 0030E3E4 48 00 00 28 */ b lbl_803127AC
+lbl_80312788:
+/* 80312788 0030E3E8 80 04 00 04 */ lwz r0, 4(r4)
+/* 8031278C 0030E3EC 80 64 00 08 */ lwz r3, 8(r4)
+/* 80312790 0030E3F0 7C 00 18 50 */ subf r0, r0, r3
+/* 80312794 0030E3F4 7C 00 3E 30 */ sraw r0, r0, r7
+/* 80312798 0030E3F8 7C 05 02 14 */ add r0, r5, r0
+/* 8031279C 0030E3FC 7C 1D 00 40 */ cmplw r29, r0
+/* 803127A0 0030E400 41 82 00 0C */ beq lbl_803127AC
+/* 803127A4 0030E404 7C 03 32 14 */ add r0, r3, r6
+/* 803127A8 0030E408 90 04 00 08 */ stw r0, 8(r4)
+lbl_803127AC:
+/* 803127AC 0030E40C 80 7C 00 00 */ lwz r3, 0(r28)
+/* 803127B0 0030E410 80 83 00 08 */ lwz r4, 8(r3)
+/* 803127B4 0030E414 7C A4 F8 2E */ lwzx r5, r4, r31
+/* 803127B8 0030E418 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf
+/* 803127BC 0030E41C 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
+/* 803127C0 0030E420 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7
+/* 803127C4 0030E424 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
+/* 803127C8 0030E428 7C 60 03 78 */ or r0, r3, r0
+/* 803127CC 0030E42C 54 05 00 06 */ rlwinm r5, r0, 0, 0, 3
+/* 803127D0 0030E430 53 65 01 3E */ rlwimi r5, r27, 0, 4, 0x1f
+/* 803127D4 0030E434 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf
+/* 803127D8 0030E438 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
+/* 803127DC 0030E43C 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7
+/* 803127E0 0030E440 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
+/* 803127E4 0030E444 7C 60 03 78 */ or r0, r3, r0
+/* 803127E8 0030E448 7C 04 F9 2E */ stwx r0, r4, r31
+/* 803127EC 0030E44C 80 7C 00 00 */ lwz r3, 0(r28)
+/* 803127F0 0030E450 4B FF 7E 01 */ bl VFiPFCACHE_UpdateModifiedSector
+/* 803127F4 0030E454 7F C3 F3 78 */ mr r3, r30
+lbl_803127F8:
+/* 803127F8 0030E458 39 61 00 30 */ addi r11, r1, 0x30
+/* 803127FC 0030E45C 4B EB 49 71 */ bl _restgpr_25
+/* 80312800 0030E460 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80312804 0030E464 7C 08 03 A6 */ mtlr r0
+/* 80312808 0030E468 38 21 00 30 */ addi r1, r1, 0x30
+/* 8031280C 0030E46C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_fatfs.s b/asm/SDK/VF/pf_fatfs.s new file mode 100644 index 0000000..db73bc4 --- /dev/null +++ b/asm/SDK/VF/pf_fatfs.s @@ -0,0 +1,7 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFATFS_initializeFATFS
+VFiPFFATFS_initializeFATFS:
+/* 80312810 0030E470 48 00 69 D0 */ b VFiPFVOL_InitModule
diff --git a/asm/SDK/VF/pf_file.s b/asm/SDK/VF/pf_file.s new file mode 100644 index 0000000..c78f06a --- /dev/null +++ b/asm/SDK/VF/pf_file.s @@ -0,0 +1,3785 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFILE_Cursor_AdvanceToRead
+VFiPFFILE_Cursor_AdvanceToRead:
+/* 80312814 0030E474 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80312818 0030E478 7C 08 02 A6 */ mflr r0
+/* 8031281C 0030E47C 2C 03 00 00 */ cmpwi r3, 0
+/* 80312820 0030E480 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80312824 0030E484 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80312828 0030E488 3B E0 00 01 */ li r31, 1
+/* 8031282C 0030E48C 40 82 00 0C */ bne lbl_80312838
+/* 80312830 0030E490 39 20 00 00 */ li r9, 0
+/* 80312834 0030E494 48 00 00 0C */ b lbl_80312840
+lbl_80312838:
+/* 80312838 0030E498 80 C3 00 08 */ lwz r6, 8(r3)
+/* 8031283C 0030E49C 81 26 02 68 */ lwz r9, 0x268(r6)
+lbl_80312840:
+/* 80312840 0030E4A0 80 C3 00 08 */ lwz r6, 8(r3)
+/* 80312844 0030E4A4 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80312848 0030E4A8 A1 03 00 28 */ lhz r8, 0x28(r3)
+/* 8031284C 0030E4AC 81 46 02 64 */ lwz r10, 0x264(r6)
+/* 80312850 0030E4B0 7C 00 22 14 */ add r0, r0, r4
+/* 80312854 0030E4B4 88 E9 00 20 */ lbz r7, 0x20(r9)
+/* 80312858 0030E4B8 7D 08 22 14 */ add r8, r8, r4
+/* 8031285C 0030E4BC 7C 00 50 40 */ cmplw r0, r10
+/* 80312860 0030E4C0 7D 00 3C 30 */ srw r0, r8, r7
+/* 80312864 0030E4C4 7C E5 02 14 */ add r7, r5, r0
+/* 80312868 0030E4C8 40 80 00 34 */ bge lbl_8031289C
+/* 8031286C 0030E4CC A0 A9 00 00 */ lhz r5, 0(r9)
+/* 80312870 0030E4D0 38 05 FF FF */ addi r0, r5, -1
+/* 80312874 0030E4D4 7C 00 40 39 */ and. r0, r0, r8
+/* 80312878 0030E4D8 41 82 00 0C */ beq lbl_80312884
+/* 8031287C 0030E4DC 90 E3 00 20 */ stw r7, 0x20(r3)
+/* 80312880 0030E4E0 48 00 00 0C */ b lbl_8031288C
+lbl_80312884:
+/* 80312884 0030E4E4 38 00 FF FF */ li r0, -1
+/* 80312888 0030E4E8 90 03 00 20 */ stw r0, 0x20(r3)
+lbl_8031288C:
+/* 8031288C 0030E4EC 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80312890 0030E4F0 7C 00 22 14 */ add r0, r0, r4
+/* 80312894 0030E4F4 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 80312898 0030E4F8 48 00 00 40 */ b lbl_803128D8
+lbl_8031289C:
+/* 8031289C 0030E4FC 2C 0A 00 00 */ cmpwi r10, 0
+/* 803128A0 0030E500 40 82 00 24 */ bne lbl_803128C4
+/* 803128A4 0030E504 38 A0 FF FF */ li r5, -1
+/* 803128A8 0030E508 38 00 00 00 */ li r0, 0
+/* 803128AC 0030E50C 2C 04 00 00 */ cmpwi r4, 0
+/* 803128B0 0030E510 90 A3 00 20 */ stw r5, 0x20(r3)
+/* 803128B4 0030E514 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 803128B8 0030E518 41 82 00 20 */ beq lbl_803128D8
+/* 803128BC 0030E51C 3B E0 00 00 */ li r31, 0
+/* 803128C0 0030E520 48 00 00 18 */ b lbl_803128D8
+lbl_803128C4:
+/* 803128C4 0030E524 38 00 FF FF */ li r0, -1
+/* 803128C8 0030E528 3B E0 00 00 */ li r31, 0
+/* 803128CC 0030E52C 90 03 00 20 */ stw r0, 0x20(r3)
+/* 803128D0 0030E530 80 06 02 64 */ lwz r0, 0x264(r6)
+/* 803128D4 0030E534 90 03 00 1C */ stw r0, 0x1c(r3)
+lbl_803128D8:
+/* 803128D8 0030E538 2C 03 00 00 */ cmpwi r3, 0
+/* 803128DC 0030E53C 40 82 00 0C */ bne lbl_803128E8
+/* 803128E0 0030E540 38 A0 00 00 */ li r5, 0
+/* 803128E4 0030E544 48 00 00 0C */ b lbl_803128F0
+lbl_803128E8:
+/* 803128E8 0030E548 80 83 00 08 */ lwz r4, 8(r3)
+/* 803128EC 0030E54C 80 A4 02 68 */ lwz r5, 0x268(r4)
+lbl_803128F0:
+/* 803128F0 0030E550 80 C3 00 1C */ lwz r6, 0x1c(r3)
+/* 803128F4 0030E554 7C E4 3B 78 */ mr r4, r7
+/* 803128F8 0030E558 88 05 00 20 */ lbz r0, 0x20(r5)
+/* 803128FC 0030E55C 7C C0 04 30 */ srw r0, r6, r0
+/* 80312900 0030E560 90 03 00 24 */ stw r0, 0x24(r3)
+/* 80312904 0030E564 A0 A5 00 00 */ lhz r5, 0(r5)
+/* 80312908 0030E568 38 05 FF FF */ addi r0, r5, -1
+/* 8031290C 0030E56C 7C C0 00 38 */ and r0, r6, r0
+/* 80312910 0030E570 B0 03 00 28 */ sth r0, 0x28(r3)
+/* 80312914 0030E574 4B FF 84 6D */ bl VFiPFCLUSTER_UpdateLastAccessCluster
+/* 80312918 0030E578 7F E3 FB 78 */ mr r3, r31
+/* 8031291C 0030E57C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80312920 0030E580 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80312924 0030E584 7C 08 03 A6 */ mtlr r0
+/* 80312928 0030E588 38 21 00 10 */ addi r1, r1, 0x10
+/* 8031292C 0030E58C 4E 80 00 20 */ blr
+
+.global VFiPFFILE_Cursor_ReadHeadSector
+VFiPFFILE_Cursor_ReadHeadSector:
+/* 80312930 0030E590 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80312934 0030E594 7C 08 02 A6 */ mflr r0
+/* 80312938 0030E598 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8031293C 0030E59C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312940 0030E5A0 4B EB 47 E9 */ bl _savegpr_27
+/* 80312944 0030E5A4 38 00 00 00 */ li r0, 0
+/* 80312948 0030E5A8 7C BD 2B 78 */ mr r29, r5
+/* 8031294C 0030E5AC 90 07 00 00 */ stw r0, 0(r7)
+/* 80312950 0030E5B0 7C 7B 1B 78 */ mr r27, r3
+/* 80312954 0030E5B4 7C 9C 23 78 */ mr r28, r4
+/* 80312958 0030E5B8 7C DE 33 78 */ mr r30, r6
+/* 8031295C 0030E5BC A0 A4 00 28 */ lhz r5, 0x28(r4)
+/* 80312960 0030E5C0 7C FF 3B 78 */ mr r31, r7
+/* 80312964 0030E5C4 2C 05 00 00 */ cmpwi r5, 0
+/* 80312968 0030E5C8 40 82 00 0C */ bne lbl_80312974
+/* 8031296C 0030E5CC 38 60 00 00 */ li r3, 0
+/* 80312970 0030E5D0 48 00 02 40 */ b lbl_80312BB0
+lbl_80312974:
+/* 80312974 0030E5D4 A0 03 00 00 */ lhz r0, 0(r3)
+/* 80312978 0030E5D8 7C E5 00 50 */ subf r7, r5, r0
+/* 8031297C 0030E5DC 7C 06 38 40 */ cmplw r6, r7
+/* 80312980 0030E5E0 40 81 00 08 */ ble lbl_80312988
+/* 80312984 0030E5E4 7C FE 3B 78 */ mr r30, r7
+lbl_80312988:
+/* 80312988 0030E5E8 80 C4 00 08 */ lwz r6, 8(r4)
+/* 8031298C 0030E5EC 80 64 00 1C */ lwz r3, 0x1c(r4)
+/* 80312990 0030E5F0 80 A6 02 64 */ lwz r5, 0x264(r6)
+/* 80312994 0030E5F4 7C 03 F2 14 */ add r0, r3, r30
+/* 80312998 0030E5F8 7C 00 28 40 */ cmplw r0, r5
+/* 8031299C 0030E5FC 40 81 00 18 */ ble lbl_803129B4
+/* 803129A0 0030E600 7F C3 28 50 */ subf r30, r3, r5
+/* 803129A4 0030E604 7C 1E 38 40 */ cmplw r30, r7
+/* 803129A8 0030E608 40 80 00 0C */ bge lbl_803129B4
+/* 803129AC 0030E60C 38 60 00 00 */ li r3, 0
+/* 803129B0 0030E610 48 00 02 00 */ b lbl_80312BB0
+lbl_803129B4:
+/* 803129B4 0030E614 80 A4 00 20 */ lwz r5, 0x20(r4)
+/* 803129B8 0030E618 3C 05 00 01 */ addis r0, r5, 1
+/* 803129BC 0030E61C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803129C0 0030E620 40 82 01 A0 */ bne lbl_80312B60
+/* 803129C4 0030E624 80 84 00 24 */ lwz r4, 0x24(r4)
+/* 803129C8 0030E628 38 66 00 04 */ addi r3, r6, 4
+/* 803129CC 0030E62C 38 DC 00 20 */ addi r6, r28, 0x20
+/* 803129D0 0030E630 38 A0 00 00 */ li r5, 0
+/* 803129D4 0030E634 4B FF D5 95 */ bl VFiPFFAT_GetSectorSpecified
+/* 803129D8 0030E638 2C 03 00 00 */ cmpwi r3, 0
+/* 803129DC 0030E63C 41 82 00 08 */ beq lbl_803129E4
+/* 803129E0 0030E640 48 00 01 D0 */ b lbl_80312BB0
+lbl_803129E4:
+/* 803129E4 0030E644 80 BC 00 20 */ lwz r5, 0x20(r28)
+/* 803129E8 0030E648 3C 05 00 01 */ addis r0, r5, 1
+/* 803129EC 0030E64C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803129F0 0030E650 40 82 00 B4 */ bne lbl_80312AA4
+/* 803129F4 0030E654 80 7C 00 08 */ lwz r3, 8(r28)
+/* 803129F8 0030E658 2C 1C 00 00 */ cmpwi r28, 0
+/* 803129FC 0030E65C 81 03 02 64 */ lwz r8, 0x264(r3)
+/* 80312A00 0030E660 40 82 00 0C */ bne lbl_80312A0C
+/* 80312A04 0030E664 38 80 00 00 */ li r4, 0
+/* 80312A08 0030E668 48 00 00 08 */ b lbl_80312A10
+lbl_80312A0C:
+/* 80312A0C 0030E66C 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80312A10:
+/* 80312A10 0030E670 A0 64 00 00 */ lhz r3, 0(r4)
+/* 80312A14 0030E674 80 1C 00 1C */ lwz r0, 0x1c(r28)
+/* 80312A18 0030E678 38 63 FF FF */ addi r3, r3, -1
+/* 80312A1C 0030E67C 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 80312A20 0030E680 7C 07 18 38 */ and r7, r0, r3
+/* 80312A24 0030E684 7C 05 24 30 */ srw r5, r0, r4
+/* 80312A28 0030E688 7D 03 18 38 */ and r3, r8, r3
+/* 80312A2C 0030E68C 7C C7 00 D0 */ neg r6, r7
+/* 80312A30 0030E690 7D 04 24 30 */ srw r4, r8, r4
+/* 80312A34 0030E694 7C 03 00 D0 */ neg r0, r3
+/* 80312A38 0030E698 7C 00 1B 78 */ or r0, r0, r3
+/* 80312A3C 0030E69C 7C C6 3B 78 */ or r6, r6, r7
+/* 80312A40 0030E6A0 54 C3 0F FE */ srwi r3, r6, 0x1f
+/* 80312A44 0030E6A4 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80312A48 0030E6A8 7C 65 1A 14 */ add r3, r5, r3
+/* 80312A4C 0030E6AC 7C 04 02 14 */ add r0, r4, r0
+/* 80312A50 0030E6B0 7C 03 00 40 */ cmplw r3, r0
+/* 80312A54 0030E6B4 41 82 00 0C */ beq lbl_80312A60
+/* 80312A58 0030E6B8 38 00 FF FF */ li r0, -1
+/* 80312A5C 0030E6BC 90 1C 00 20 */ stw r0, 0x20(r28)
+lbl_80312A60:
+/* 80312A60 0030E6C0 2C 1C 00 00 */ cmpwi r28, 0
+/* 80312A64 0030E6C4 91 1C 00 1C */ stw r8, 0x1c(r28)
+/* 80312A68 0030E6C8 40 82 00 0C */ bne lbl_80312A74
+/* 80312A6C 0030E6CC 38 80 00 00 */ li r4, 0
+/* 80312A70 0030E6D0 48 00 00 0C */ b lbl_80312A7C
+lbl_80312A74:
+/* 80312A74 0030E6D4 80 7C 00 08 */ lwz r3, 8(r28)
+/* 80312A78 0030E6D8 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80312A7C:
+/* 80312A7C 0030E6DC 80 BC 00 1C */ lwz r5, 0x1c(r28)
+/* 80312A80 0030E6E0 38 60 00 1C */ li r3, 0x1c
+/* 80312A84 0030E6E4 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 80312A88 0030E6E8 7C A0 04 30 */ srw r0, r5, r0
+/* 80312A8C 0030E6EC 90 1C 00 24 */ stw r0, 0x24(r28)
+/* 80312A90 0030E6F0 A0 84 00 00 */ lhz r4, 0(r4)
+/* 80312A94 0030E6F4 38 04 FF FF */ addi r0, r4, -1
+/* 80312A98 0030E6F8 7C A0 00 38 */ and r0, r5, r0
+/* 80312A9C 0030E6FC B0 1C 00 28 */ sth r0, 0x28(r28)
+/* 80312AA0 0030E700 48 00 01 10 */ b lbl_80312BB0
+lbl_80312AA4:
+/* 80312AA4 0030E704 80 7C 00 08 */ lwz r3, 8(r28)
+/* 80312AA8 0030E708 80 DC 00 1C */ lwz r6, 0x1c(r28)
+/* 80312AAC 0030E70C 81 03 02 64 */ lwz r8, 0x264(r3)
+/* 80312AB0 0030E710 7C 06 F2 14 */ add r0, r6, r30
+/* 80312AB4 0030E714 7C 00 40 40 */ cmplw r0, r8
+/* 80312AB8 0030E718 40 81 00 A8 */ ble lbl_80312B60
+/* 80312ABC 0030E71C 2C 1C 00 00 */ cmpwi r28, 0
+/* 80312AC0 0030E720 40 82 00 0C */ bne lbl_80312ACC
+/* 80312AC4 0030E724 38 80 00 00 */ li r4, 0
+/* 80312AC8 0030E728 48 00 00 08 */ b lbl_80312AD0
+lbl_80312ACC:
+/* 80312ACC 0030E72C 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80312AD0:
+/* 80312AD0 0030E730 A0 64 00 00 */ lhz r3, 0(r4)
+/* 80312AD4 0030E734 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 80312AD8 0030E738 38 03 FF FF */ addi r0, r3, -1
+/* 80312ADC 0030E73C 7C C7 00 38 */ and r7, r6, r0
+/* 80312AE0 0030E740 7C C5 24 30 */ srw r5, r6, r4
+/* 80312AE4 0030E744 7D 03 00 38 */ and r3, r8, r0
+/* 80312AE8 0030E748 7D 04 24 30 */ srw r4, r8, r4
+/* 80312AEC 0030E74C 7C C7 00 D0 */ neg r6, r7
+/* 80312AF0 0030E750 7C 03 00 D0 */ neg r0, r3
+/* 80312AF4 0030E754 7C 00 1B 78 */ or r0, r0, r3
+/* 80312AF8 0030E758 7C C6 3B 78 */ or r6, r6, r7
+/* 80312AFC 0030E75C 54 C3 0F FE */ srwi r3, r6, 0x1f
+/* 80312B00 0030E760 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80312B04 0030E764 7C 65 1A 14 */ add r3, r5, r3
+/* 80312B08 0030E768 7C 04 02 14 */ add r0, r4, r0
+/* 80312B0C 0030E76C 7C 03 00 40 */ cmplw r3, r0
+/* 80312B10 0030E770 41 82 00 0C */ beq lbl_80312B1C
+/* 80312B14 0030E774 38 00 FF FF */ li r0, -1
+/* 80312B18 0030E778 90 1C 00 20 */ stw r0, 0x20(r28)
+lbl_80312B1C:
+/* 80312B1C 0030E77C 2C 1C 00 00 */ cmpwi r28, 0
+/* 80312B20 0030E780 91 1C 00 1C */ stw r8, 0x1c(r28)
+/* 80312B24 0030E784 40 82 00 0C */ bne lbl_80312B30
+/* 80312B28 0030E788 38 80 00 00 */ li r4, 0
+/* 80312B2C 0030E78C 48 00 00 0C */ b lbl_80312B38
+lbl_80312B30:
+/* 80312B30 0030E790 80 7C 00 08 */ lwz r3, 8(r28)
+/* 80312B34 0030E794 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80312B38:
+/* 80312B38 0030E798 80 BC 00 1C */ lwz r5, 0x1c(r28)
+/* 80312B3C 0030E79C 38 60 00 1B */ li r3, 0x1b
+/* 80312B40 0030E7A0 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 80312B44 0030E7A4 7C A0 04 30 */ srw r0, r5, r0
+/* 80312B48 0030E7A8 90 1C 00 24 */ stw r0, 0x24(r28)
+/* 80312B4C 0030E7AC A0 84 00 00 */ lhz r4, 0(r4)
+/* 80312B50 0030E7B0 38 04 FF FF */ addi r0, r4, -1
+/* 80312B54 0030E7B4 7C A0 00 38 */ and r0, r5, r0
+/* 80312B58 0030E7B8 B0 1C 00 28 */ sth r0, 0x28(r28)
+/* 80312B5C 0030E7BC 48 00 00 54 */ b lbl_80312BB0
+lbl_80312B60:
+/* 80312B60 0030E7C0 A0 DC 00 28 */ lhz r6, 0x28(r28)
+/* 80312B64 0030E7C4 7F 63 DB 78 */ mr r3, r27
+/* 80312B68 0030E7C8 7F A4 EB 78 */ mr r4, r29
+/* 80312B6C 0030E7CC 7F C7 F3 78 */ mr r7, r30
+/* 80312B70 0030E7D0 39 01 00 08 */ addi r8, r1, 8
+/* 80312B74 0030E7D4 39 20 00 01 */ li r9, 1
+/* 80312B78 0030E7D8 48 00 5E B1 */ bl VFiPFSEC_ReadData
+/* 80312B7C 0030E7DC 2C 03 00 00 */ cmpwi r3, 0
+/* 80312B80 0030E7E0 41 82 00 14 */ beq lbl_80312B94
+/* 80312B84 0030E7E4 80 01 00 08 */ lwz r0, 8(r1)
+/* 80312B88 0030E7E8 2C 00 00 00 */ cmpwi r0, 0
+/* 80312B8C 0030E7EC 40 82 00 08 */ bne lbl_80312B94
+/* 80312B90 0030E7F0 48 00 00 20 */ b lbl_80312BB0
+lbl_80312B94:
+/* 80312B94 0030E7F4 80 01 00 08 */ lwz r0, 8(r1)
+/* 80312B98 0030E7F8 7F 83 E3 78 */ mr r3, r28
+/* 80312B9C 0030E7FC 90 1F 00 00 */ stw r0, 0(r31)
+/* 80312BA0 0030E800 80 81 00 08 */ lwz r4, 8(r1)
+/* 80312BA4 0030E804 80 BC 00 20 */ lwz r5, 0x20(r28)
+/* 80312BA8 0030E808 4B FF FC 6D */ bl VFiPFFILE_Cursor_AdvanceToRead
+/* 80312BAC 0030E80C 38 60 00 00 */ li r3, 0
+lbl_80312BB0:
+/* 80312BB0 0030E810 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312BB4 0030E814 4B EB 45 C1 */ bl _restgpr_27
+/* 80312BB8 0030E818 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80312BBC 0030E81C 7C 08 03 A6 */ mtlr r0
+/* 80312BC0 0030E820 38 21 00 30 */ addi r1, r1, 0x30
+/* 80312BC4 0030E824 4E 80 00 20 */ blr
+
+.global VFiPFFILE_Cursor_ReadBodySectors
+VFiPFFILE_Cursor_ReadBodySectors:
+/* 80312BC8 0030E828 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80312BCC 0030E82C 7C 08 02 A6 */ mflr r0
+/* 80312BD0 0030E830 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80312BD4 0030E834 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312BD8 0030E838 4B EB 45 51 */ bl _savegpr_27
+/* 80312BDC 0030E83C 38 00 00 00 */ li r0, 0
+/* 80312BE0 0030E840 7C 7B 1B 78 */ mr r27, r3
+/* 80312BE4 0030E844 90 07 00 00 */ stw r0, 0(r7)
+/* 80312BE8 0030E848 7C FE 3B 78 */ mr r30, r7
+/* 80312BEC 0030E84C 7C 9F 23 78 */ mr r31, r4
+/* 80312BF0 0030E850 7C DD 33 78 */ mr r29, r6
+/* 80312BF4 0030E854 90 01 00 0C */ stw r0, 0xc(r1)
+/* 80312BF8 0030E858 7C BC 2B 78 */ mr r28, r5
+/* 80312BFC 0030E85C 7F A5 EB 78 */ mr r5, r29
+/* 80312C00 0030E860 38 DF 00 20 */ addi r6, r31, 0x20
+/* 80312C04 0030E864 80 64 00 08 */ lwz r3, 8(r4)
+/* 80312C08 0030E868 38 E1 00 0C */ addi r7, r1, 0xc
+/* 80312C0C 0030E86C 80 84 00 24 */ lwz r4, 0x24(r4)
+/* 80312C10 0030E870 38 63 00 04 */ addi r3, r3, 4
+/* 80312C14 0030E874 4B FF D5 01 */ bl VFiPFFAT_GetContinuousSector
+/* 80312C18 0030E878 2C 03 00 00 */ cmpwi r3, 0
+/* 80312C1C 0030E87C 41 82 00 08 */ beq lbl_80312C24
+/* 80312C20 0030E880 48 00 01 68 */ b lbl_80312D88
+lbl_80312C24:
+/* 80312C24 0030E884 80 BF 00 20 */ lwz r5, 0x20(r31)
+/* 80312C28 0030E888 3C 05 00 01 */ addis r0, r5, 1
+/* 80312C2C 0030E88C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80312C30 0030E890 40 82 00 B4 */ bne lbl_80312CE4
+/* 80312C34 0030E894 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80312C38 0030E898 2C 1F 00 00 */ cmpwi r31, 0
+/* 80312C3C 0030E89C 81 03 02 64 */ lwz r8, 0x264(r3)
+/* 80312C40 0030E8A0 40 82 00 0C */ bne lbl_80312C4C
+/* 80312C44 0030E8A4 38 80 00 00 */ li r4, 0
+/* 80312C48 0030E8A8 48 00 00 08 */ b lbl_80312C50
+lbl_80312C4C:
+/* 80312C4C 0030E8AC 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80312C50:
+/* 80312C50 0030E8B0 A0 64 00 00 */ lhz r3, 0(r4)
+/* 80312C54 0030E8B4 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80312C58 0030E8B8 38 63 FF FF */ addi r3, r3, -1
+/* 80312C5C 0030E8BC 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 80312C60 0030E8C0 7C 07 18 38 */ and r7, r0, r3
+/* 80312C64 0030E8C4 7C 05 24 30 */ srw r5, r0, r4
+/* 80312C68 0030E8C8 7D 03 18 38 */ and r3, r8, r3
+/* 80312C6C 0030E8CC 7C C7 00 D0 */ neg r6, r7
+/* 80312C70 0030E8D0 7D 04 24 30 */ srw r4, r8, r4
+/* 80312C74 0030E8D4 7C 03 00 D0 */ neg r0, r3
+/* 80312C78 0030E8D8 7C 00 1B 78 */ or r0, r0, r3
+/* 80312C7C 0030E8DC 7C C6 3B 78 */ or r6, r6, r7
+/* 80312C80 0030E8E0 54 C3 0F FE */ srwi r3, r6, 0x1f
+/* 80312C84 0030E8E4 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80312C88 0030E8E8 7C 65 1A 14 */ add r3, r5, r3
+/* 80312C8C 0030E8EC 7C 04 02 14 */ add r0, r4, r0
+/* 80312C90 0030E8F0 7C 03 00 40 */ cmplw r3, r0
+/* 80312C94 0030E8F4 41 82 00 0C */ beq lbl_80312CA0
+/* 80312C98 0030E8F8 38 00 FF FF */ li r0, -1
+/* 80312C9C 0030E8FC 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_80312CA0:
+/* 80312CA0 0030E900 2C 1F 00 00 */ cmpwi r31, 0
+/* 80312CA4 0030E904 91 1F 00 1C */ stw r8, 0x1c(r31)
+/* 80312CA8 0030E908 40 82 00 0C */ bne lbl_80312CB4
+/* 80312CAC 0030E90C 38 80 00 00 */ li r4, 0
+/* 80312CB0 0030E910 48 00 00 0C */ b lbl_80312CBC
+lbl_80312CB4:
+/* 80312CB4 0030E914 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80312CB8 0030E918 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80312CBC:
+/* 80312CBC 0030E91C 80 BF 00 1C */ lwz r5, 0x1c(r31)
+/* 80312CC0 0030E920 38 60 00 1C */ li r3, 0x1c
+/* 80312CC4 0030E924 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 80312CC8 0030E928 7C A0 04 30 */ srw r0, r5, r0
+/* 80312CCC 0030E92C 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 80312CD0 0030E930 A0 84 00 00 */ lhz r4, 0(r4)
+/* 80312CD4 0030E934 38 04 FF FF */ addi r0, r4, -1
+/* 80312CD8 0030E938 7C A0 00 38 */ and r0, r5, r0
+/* 80312CDC 0030E93C B0 1F 00 28 */ sth r0, 0x28(r31)
+/* 80312CE0 0030E940 48 00 00 A8 */ b lbl_80312D88
+lbl_80312CE4:
+/* 80312CE4 0030E944 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80312CE8 0030E948 88 1B 00 20 */ lbz r0, 0x20(r27)
+/* 80312CEC 0030E94C 7C 60 00 30 */ slw r0, r3, r0
+/* 80312CF0 0030E950 7C 1D 00 40 */ cmplw r29, r0
+/* 80312CF4 0030E954 40 81 00 08 */ ble lbl_80312CFC
+/* 80312CF8 0030E958 7C 1D 03 78 */ mr r29, r0
+lbl_80312CFC:
+/* 80312CFC 0030E95C 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80312D00 0030E960 80 9F 00 1C */ lwz r4, 0x1c(r31)
+/* 80312D04 0030E964 80 63 02 64 */ lwz r3, 0x264(r3)
+/* 80312D08 0030E968 7C 04 EA 14 */ add r0, r4, r29
+/* 80312D0C 0030E96C 7C 00 18 40 */ cmplw r0, r3
+/* 80312D10 0030E970 40 81 00 28 */ ble lbl_80312D38
+/* 80312D14 0030E974 A0 DB 00 00 */ lhz r6, 0(r27)
+/* 80312D18 0030E978 7F A4 18 50 */ subf r29, r4, r3
+/* 80312D1C 0030E97C 38 06 FF FF */ addi r0, r6, -1
+/* 80312D20 0030E980 7F A0 00 38 */ and r0, r29, r0
+/* 80312D24 0030E984 7F A0 E8 50 */ subf r29, r0, r29
+/* 80312D28 0030E988 7C 1D 30 40 */ cmplw r29, r6
+/* 80312D2C 0030E98C 40 80 00 0C */ bge lbl_80312D38
+/* 80312D30 0030E990 38 60 00 00 */ li r3, 0
+/* 80312D34 0030E994 48 00 00 54 */ b lbl_80312D88
+lbl_80312D38:
+/* 80312D38 0030E998 A0 DF 00 28 */ lhz r6, 0x28(r31)
+/* 80312D3C 0030E99C 7F 63 DB 78 */ mr r3, r27
+/* 80312D40 0030E9A0 7F 84 E3 78 */ mr r4, r28
+/* 80312D44 0030E9A4 7F A7 EB 78 */ mr r7, r29
+/* 80312D48 0030E9A8 39 01 00 08 */ addi r8, r1, 8
+/* 80312D4C 0030E9AC 39 20 00 01 */ li r9, 1
+/* 80312D50 0030E9B0 48 00 5C D9 */ bl VFiPFSEC_ReadData
+/* 80312D54 0030E9B4 2C 03 00 00 */ cmpwi r3, 0
+/* 80312D58 0030E9B8 41 82 00 14 */ beq lbl_80312D6C
+/* 80312D5C 0030E9BC 80 01 00 08 */ lwz r0, 8(r1)
+/* 80312D60 0030E9C0 2C 00 00 00 */ cmpwi r0, 0
+/* 80312D64 0030E9C4 40 82 00 08 */ bne lbl_80312D6C
+/* 80312D68 0030E9C8 48 00 00 20 */ b lbl_80312D88
+lbl_80312D6C:
+/* 80312D6C 0030E9CC 80 01 00 08 */ lwz r0, 8(r1)
+/* 80312D70 0030E9D0 7F E3 FB 78 */ mr r3, r31
+/* 80312D74 0030E9D4 90 1E 00 00 */ stw r0, 0(r30)
+/* 80312D78 0030E9D8 80 81 00 08 */ lwz r4, 8(r1)
+/* 80312D7C 0030E9DC 80 BF 00 20 */ lwz r5, 0x20(r31)
+/* 80312D80 0030E9E0 4B FF FA 95 */ bl VFiPFFILE_Cursor_AdvanceToRead
+/* 80312D84 0030E9E4 38 60 00 00 */ li r3, 0
+lbl_80312D88:
+/* 80312D88 0030E9E8 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312D8C 0030E9EC 4B EB 43 E9 */ bl _restgpr_27
+/* 80312D90 0030E9F0 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80312D94 0030E9F4 7C 08 03 A6 */ mtlr r0
+/* 80312D98 0030E9F8 38 21 00 30 */ addi r1, r1, 0x30
+/* 80312D9C 0030E9FC 4E 80 00 20 */ blr
+
+.global VFiPFFILE_Cursor_ReadTailSector
+VFiPFFILE_Cursor_ReadTailSector:
+/* 80312DA0 0030EA00 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80312DA4 0030EA04 7C 08 02 A6 */ mflr r0
+/* 80312DA8 0030EA08 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80312DAC 0030EA0C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312DB0 0030EA10 4B EB 43 79 */ bl _savegpr_27
+/* 80312DB4 0030EA14 38 00 00 00 */ li r0, 0
+/* 80312DB8 0030EA18 2C 06 00 00 */ cmpwi r6, 0
+/* 80312DBC 0030EA1C 90 07 00 00 */ stw r0, 0(r7)
+/* 80312DC0 0030EA20 7C 7B 1B 78 */ mr r27, r3
+/* 80312DC4 0030EA24 7C 9F 23 78 */ mr r31, r4
+/* 80312DC8 0030EA28 7C BC 2B 78 */ mr r28, r5
+/* 80312DCC 0030EA2C 7C DD 33 78 */ mr r29, r6
+/* 80312DD0 0030EA30 7C FE 3B 78 */ mr r30, r7
+/* 80312DD4 0030EA34 40 82 00 0C */ bne lbl_80312DE0
+/* 80312DD8 0030EA38 38 60 00 00 */ li r3, 0
+/* 80312DDC 0030EA3C 48 00 02 28 */ b lbl_80313004
+lbl_80312DE0:
+/* 80312DE0 0030EA40 80 E4 00 08 */ lwz r7, 8(r4)
+/* 80312DE4 0030EA44 80 64 00 1C */ lwz r3, 0x1c(r4)
+/* 80312DE8 0030EA48 80 A7 02 64 */ lwz r5, 0x264(r7)
+/* 80312DEC 0030EA4C 7C 03 32 14 */ add r0, r3, r6
+/* 80312DF0 0030EA50 7C 00 28 40 */ cmplw r0, r5
+/* 80312DF4 0030EA54 40 81 00 14 */ ble lbl_80312E08
+/* 80312DF8 0030EA58 7F A3 28 51 */ subf. r29, r3, r5
+/* 80312DFC 0030EA5C 40 82 00 0C */ bne lbl_80312E08
+/* 80312E00 0030EA60 38 60 00 00 */ li r3, 0
+/* 80312E04 0030EA64 48 00 02 00 */ b lbl_80313004
+lbl_80312E08:
+/* 80312E08 0030EA68 80 A4 00 20 */ lwz r5, 0x20(r4)
+/* 80312E0C 0030EA6C 3C 05 00 01 */ addis r0, r5, 1
+/* 80312E10 0030EA70 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80312E14 0030EA74 40 82 01 A0 */ bne lbl_80312FB4
+/* 80312E18 0030EA78 80 84 00 24 */ lwz r4, 0x24(r4)
+/* 80312E1C 0030EA7C 38 67 00 04 */ addi r3, r7, 4
+/* 80312E20 0030EA80 38 DF 00 20 */ addi r6, r31, 0x20
+/* 80312E24 0030EA84 38 A0 00 00 */ li r5, 0
+/* 80312E28 0030EA88 4B FF D1 41 */ bl VFiPFFAT_GetSectorSpecified
+/* 80312E2C 0030EA8C 2C 03 00 00 */ cmpwi r3, 0
+/* 80312E30 0030EA90 41 82 00 08 */ beq lbl_80312E38
+/* 80312E34 0030EA94 48 00 01 D0 */ b lbl_80313004
+lbl_80312E38:
+/* 80312E38 0030EA98 80 BF 00 20 */ lwz r5, 0x20(r31)
+/* 80312E3C 0030EA9C 3C 05 00 01 */ addis r0, r5, 1
+/* 80312E40 0030EAA0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80312E44 0030EAA4 40 82 00 B4 */ bne lbl_80312EF8
+/* 80312E48 0030EAA8 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80312E4C 0030EAAC 2C 1F 00 00 */ cmpwi r31, 0
+/* 80312E50 0030EAB0 81 03 02 64 */ lwz r8, 0x264(r3)
+/* 80312E54 0030EAB4 40 82 00 0C */ bne lbl_80312E60
+/* 80312E58 0030EAB8 38 80 00 00 */ li r4, 0
+/* 80312E5C 0030EABC 48 00 00 08 */ b lbl_80312E64
+lbl_80312E60:
+/* 80312E60 0030EAC0 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80312E64:
+/* 80312E64 0030EAC4 A0 64 00 00 */ lhz r3, 0(r4)
+/* 80312E68 0030EAC8 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80312E6C 0030EACC 38 63 FF FF */ addi r3, r3, -1
+/* 80312E70 0030EAD0 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 80312E74 0030EAD4 7C 07 18 38 */ and r7, r0, r3
+/* 80312E78 0030EAD8 7C 05 24 30 */ srw r5, r0, r4
+/* 80312E7C 0030EADC 7D 03 18 38 */ and r3, r8, r3
+/* 80312E80 0030EAE0 7C C7 00 D0 */ neg r6, r7
+/* 80312E84 0030EAE4 7D 04 24 30 */ srw r4, r8, r4
+/* 80312E88 0030EAE8 7C 03 00 D0 */ neg r0, r3
+/* 80312E8C 0030EAEC 7C 00 1B 78 */ or r0, r0, r3
+/* 80312E90 0030EAF0 7C C6 3B 78 */ or r6, r6, r7
+/* 80312E94 0030EAF4 54 C3 0F FE */ srwi r3, r6, 0x1f
+/* 80312E98 0030EAF8 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80312E9C 0030EAFC 7C 65 1A 14 */ add r3, r5, r3
+/* 80312EA0 0030EB00 7C 04 02 14 */ add r0, r4, r0
+/* 80312EA4 0030EB04 7C 03 00 40 */ cmplw r3, r0
+/* 80312EA8 0030EB08 41 82 00 0C */ beq lbl_80312EB4
+/* 80312EAC 0030EB0C 38 00 FF FF */ li r0, -1
+/* 80312EB0 0030EB10 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_80312EB4:
+/* 80312EB4 0030EB14 2C 1F 00 00 */ cmpwi r31, 0
+/* 80312EB8 0030EB18 91 1F 00 1C */ stw r8, 0x1c(r31)
+/* 80312EBC 0030EB1C 40 82 00 0C */ bne lbl_80312EC8
+/* 80312EC0 0030EB20 38 80 00 00 */ li r4, 0
+/* 80312EC4 0030EB24 48 00 00 0C */ b lbl_80312ED0
+lbl_80312EC8:
+/* 80312EC8 0030EB28 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80312ECC 0030EB2C 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80312ED0:
+/* 80312ED0 0030EB30 80 BF 00 1C */ lwz r5, 0x1c(r31)
+/* 80312ED4 0030EB34 38 60 00 1C */ li r3, 0x1c
+/* 80312ED8 0030EB38 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 80312EDC 0030EB3C 7C A0 04 30 */ srw r0, r5, r0
+/* 80312EE0 0030EB40 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 80312EE4 0030EB44 A0 84 00 00 */ lhz r4, 0(r4)
+/* 80312EE8 0030EB48 38 04 FF FF */ addi r0, r4, -1
+/* 80312EEC 0030EB4C 7C A0 00 38 */ and r0, r5, r0
+/* 80312EF0 0030EB50 B0 1F 00 28 */ sth r0, 0x28(r31)
+/* 80312EF4 0030EB54 48 00 01 10 */ b lbl_80313004
+lbl_80312EF8:
+/* 80312EF8 0030EB58 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80312EFC 0030EB5C 80 DF 00 1C */ lwz r6, 0x1c(r31)
+/* 80312F00 0030EB60 81 03 02 64 */ lwz r8, 0x264(r3)
+/* 80312F04 0030EB64 7C 06 EA 14 */ add r0, r6, r29
+/* 80312F08 0030EB68 7C 00 40 40 */ cmplw r0, r8
+/* 80312F0C 0030EB6C 40 81 00 A8 */ ble lbl_80312FB4
+/* 80312F10 0030EB70 2C 1F 00 00 */ cmpwi r31, 0
+/* 80312F14 0030EB74 40 82 00 0C */ bne lbl_80312F20
+/* 80312F18 0030EB78 38 80 00 00 */ li r4, 0
+/* 80312F1C 0030EB7C 48 00 00 08 */ b lbl_80312F24
+lbl_80312F20:
+/* 80312F20 0030EB80 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80312F24:
+/* 80312F24 0030EB84 A0 64 00 00 */ lhz r3, 0(r4)
+/* 80312F28 0030EB88 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 80312F2C 0030EB8C 38 03 FF FF */ addi r0, r3, -1
+/* 80312F30 0030EB90 7C C7 00 38 */ and r7, r6, r0
+/* 80312F34 0030EB94 7C C5 24 30 */ srw r5, r6, r4
+/* 80312F38 0030EB98 7D 03 00 38 */ and r3, r8, r0
+/* 80312F3C 0030EB9C 7D 04 24 30 */ srw r4, r8, r4
+/* 80312F40 0030EBA0 7C C7 00 D0 */ neg r6, r7
+/* 80312F44 0030EBA4 7C 03 00 D0 */ neg r0, r3
+/* 80312F48 0030EBA8 7C 00 1B 78 */ or r0, r0, r3
+/* 80312F4C 0030EBAC 7C C6 3B 78 */ or r6, r6, r7
+/* 80312F50 0030EBB0 54 C3 0F FE */ srwi r3, r6, 0x1f
+/* 80312F54 0030EBB4 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80312F58 0030EBB8 7C 65 1A 14 */ add r3, r5, r3
+/* 80312F5C 0030EBBC 7C 04 02 14 */ add r0, r4, r0
+/* 80312F60 0030EBC0 7C 03 00 40 */ cmplw r3, r0
+/* 80312F64 0030EBC4 41 82 00 0C */ beq lbl_80312F70
+/* 80312F68 0030EBC8 38 00 FF FF */ li r0, -1
+/* 80312F6C 0030EBCC 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_80312F70:
+/* 80312F70 0030EBD0 2C 1F 00 00 */ cmpwi r31, 0
+/* 80312F74 0030EBD4 91 1F 00 1C */ stw r8, 0x1c(r31)
+/* 80312F78 0030EBD8 40 82 00 0C */ bne lbl_80312F84
+/* 80312F7C 0030EBDC 38 80 00 00 */ li r4, 0
+/* 80312F80 0030EBE0 48 00 00 0C */ b lbl_80312F8C
+lbl_80312F84:
+/* 80312F84 0030EBE4 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80312F88 0030EBE8 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80312F8C:
+/* 80312F8C 0030EBEC 80 BF 00 1C */ lwz r5, 0x1c(r31)
+/* 80312F90 0030EBF0 38 60 00 1B */ li r3, 0x1b
+/* 80312F94 0030EBF4 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 80312F98 0030EBF8 7C A0 04 30 */ srw r0, r5, r0
+/* 80312F9C 0030EBFC 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 80312FA0 0030EC00 A0 84 00 00 */ lhz r4, 0(r4)
+/* 80312FA4 0030EC04 38 04 FF FF */ addi r0, r4, -1
+/* 80312FA8 0030EC08 7C A0 00 38 */ and r0, r5, r0
+/* 80312FAC 0030EC0C B0 1F 00 28 */ sth r0, 0x28(r31)
+/* 80312FB0 0030EC10 48 00 00 54 */ b lbl_80313004
+lbl_80312FB4:
+/* 80312FB4 0030EC14 A0 DF 00 28 */ lhz r6, 0x28(r31)
+/* 80312FB8 0030EC18 7F 63 DB 78 */ mr r3, r27
+/* 80312FBC 0030EC1C 7F 84 E3 78 */ mr r4, r28
+/* 80312FC0 0030EC20 7F A7 EB 78 */ mr r7, r29
+/* 80312FC4 0030EC24 39 01 00 08 */ addi r8, r1, 8
+/* 80312FC8 0030EC28 39 20 00 01 */ li r9, 1
+/* 80312FCC 0030EC2C 48 00 5A 5D */ bl VFiPFSEC_ReadData
+/* 80312FD0 0030EC30 2C 03 00 00 */ cmpwi r3, 0
+/* 80312FD4 0030EC34 41 82 00 14 */ beq lbl_80312FE8
+/* 80312FD8 0030EC38 80 01 00 08 */ lwz r0, 8(r1)
+/* 80312FDC 0030EC3C 2C 00 00 00 */ cmpwi r0, 0
+/* 80312FE0 0030EC40 40 82 00 08 */ bne lbl_80312FE8
+/* 80312FE4 0030EC44 48 00 00 20 */ b lbl_80313004
+lbl_80312FE8:
+/* 80312FE8 0030EC48 80 01 00 08 */ lwz r0, 8(r1)
+/* 80312FEC 0030EC4C 7F E3 FB 78 */ mr r3, r31
+/* 80312FF0 0030EC50 90 1E 00 00 */ stw r0, 0(r30)
+/* 80312FF4 0030EC54 80 81 00 08 */ lwz r4, 8(r1)
+/* 80312FF8 0030EC58 80 BF 00 20 */ lwz r5, 0x20(r31)
+/* 80312FFC 0030EC5C 4B FF F8 19 */ bl VFiPFFILE_Cursor_AdvanceToRead
+/* 80313000 0030EC60 38 60 00 00 */ li r3, 0
+lbl_80313004:
+/* 80313004 0030EC64 39 61 00 30 */ addi r11, r1, 0x30
+/* 80313008 0030EC68 4B EB 41 6D */ bl _restgpr_27
+/* 8031300C 0030EC6C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80313010 0030EC70 7C 08 03 A6 */ mtlr r0
+/* 80313014 0030EC74 38 21 00 30 */ addi r1, r1, 0x30
+/* 80313018 0030EC78 4E 80 00 20 */ blr
+
+.global VFiPFFILE_Cursor_Read
+VFiPFFILE_Cursor_Read:
+/* 8031301C 0030EC7C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80313020 0030EC80 7C 08 02 A6 */ mflr r0
+/* 80313024 0030EC84 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80313028 0030EC88 39 61 00 30 */ addi r11, r1, 0x30
+/* 8031302C 0030EC8C 4B EB 40 FD */ bl _savegpr_27
+/* 80313030 0030EC90 80 E3 00 08 */ lwz r7, 8(r3)
+/* 80313034 0030EC94 39 03 00 0C */ addi r8, r3, 0xc
+/* 80313038 0030EC98 2C 03 00 00 */ cmpwi r3, 0
+/* 8031303C 0030EC9C 38 00 00 00 */ li r0, 0
+/* 80313040 0030ECA0 91 07 00 34 */ stw r8, 0x34(r7)
+/* 80313044 0030ECA4 7C 7C 1B 78 */ mr r28, r3
+/* 80313048 0030ECA8 7C 9D 23 78 */ mr r29, r4
+/* 8031304C 0030ECAC 7C BE 2B 78 */ mr r30, r5
+/* 80313050 0030ECB0 90 06 00 00 */ stw r0, 0(r6)
+/* 80313054 0030ECB4 7C DF 33 78 */ mr r31, r6
+/* 80313058 0030ECB8 40 82 00 0C */ bne lbl_80313064
+/* 8031305C 0030ECBC 3B 60 00 00 */ li r27, 0
+/* 80313060 0030ECC0 48 00 00 0C */ b lbl_8031306C
+lbl_80313064:
+/* 80313064 0030ECC4 80 63 00 08 */ lwz r3, 8(r3)
+/* 80313068 0030ECC8 83 63 02 68 */ lwz r27, 0x268(r3)
+lbl_8031306C:
+/* 8031306C 0030ECCC 7F 63 DB 78 */ mr r3, r27
+/* 80313070 0030ECD0 7F 84 E3 78 */ mr r4, r28
+/* 80313074 0030ECD4 7F A5 EB 78 */ mr r5, r29
+/* 80313078 0030ECD8 7F C6 F3 78 */ mr r6, r30
+/* 8031307C 0030ECDC 38 E1 00 08 */ addi r7, r1, 8
+/* 80313080 0030ECE0 4B FF F8 B1 */ bl VFiPFFILE_Cursor_ReadHeadSector
+/* 80313084 0030ECE4 80 9F 00 00 */ lwz r4, 0(r31)
+/* 80313088 0030ECE8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031308C 0030ECEC 80 01 00 08 */ lwz r0, 8(r1)
+/* 80313090 0030ECF0 7C 04 02 14 */ add r0, r4, r0
+/* 80313094 0030ECF4 90 1F 00 00 */ stw r0, 0(r31)
+/* 80313098 0030ECF8 41 82 00 08 */ beq lbl_803130A0
+/* 8031309C 0030ECFC 48 00 00 B0 */ b lbl_8031314C
+lbl_803130A0:
+/* 803130A0 0030ED00 80 01 00 08 */ lwz r0, 8(r1)
+/* 803130A4 0030ED04 7C 00 F0 40 */ cmplw r0, r30
+/* 803130A8 0030ED08 41 80 00 0C */ blt lbl_803130B4
+/* 803130AC 0030ED0C 38 60 00 00 */ li r3, 0
+/* 803130B0 0030ED10 48 00 00 9C */ b lbl_8031314C
+lbl_803130B4:
+/* 803130B4 0030ED14 7F C0 F0 50 */ subf r30, r0, r30
+/* 803130B8 0030ED18 48 00 00 4C */ b lbl_80313104
+lbl_803130BC:
+/* 803130BC 0030ED1C 80 1F 00 00 */ lwz r0, 0(r31)
+/* 803130C0 0030ED20 7F 63 DB 78 */ mr r3, r27
+/* 803130C4 0030ED24 7F 84 E3 78 */ mr r4, r28
+/* 803130C8 0030ED28 7F C6 F3 78 */ mr r6, r30
+/* 803130CC 0030ED2C 7C BD 02 14 */ add r5, r29, r0
+/* 803130D0 0030ED30 38 E1 00 08 */ addi r7, r1, 8
+/* 803130D4 0030ED34 4B FF FA F5 */ bl VFiPFFILE_Cursor_ReadBodySectors
+/* 803130D8 0030ED38 80 9F 00 00 */ lwz r4, 0(r31)
+/* 803130DC 0030ED3C 2C 03 00 00 */ cmpwi r3, 0
+/* 803130E0 0030ED40 80 01 00 08 */ lwz r0, 8(r1)
+/* 803130E4 0030ED44 7C 04 02 14 */ add r0, r4, r0
+/* 803130E8 0030ED48 90 1F 00 00 */ stw r0, 0(r31)
+/* 803130EC 0030ED4C 41 82 00 08 */ beq lbl_803130F4
+/* 803130F0 0030ED50 48 00 00 5C */ b lbl_8031314C
+lbl_803130F4:
+/* 803130F4 0030ED54 80 01 00 08 */ lwz r0, 8(r1)
+/* 803130F8 0030ED58 2C 00 00 00 */ cmpwi r0, 0
+/* 803130FC 0030ED5C 41 82 00 14 */ beq lbl_80313110
+/* 80313100 0030ED60 7F C0 F0 50 */ subf r30, r0, r30
+lbl_80313104:
+/* 80313104 0030ED64 A0 1B 00 00 */ lhz r0, 0(r27)
+/* 80313108 0030ED68 7C 1E 00 40 */ cmplw r30, r0
+/* 8031310C 0030ED6C 40 80 FF B0 */ bge lbl_803130BC
+lbl_80313110:
+/* 80313110 0030ED70 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80313114 0030ED74 7F 63 DB 78 */ mr r3, r27
+/* 80313118 0030ED78 7F 84 E3 78 */ mr r4, r28
+/* 8031311C 0030ED7C 7F C6 F3 78 */ mr r6, r30
+/* 80313120 0030ED80 7C BD 02 14 */ add r5, r29, r0
+/* 80313124 0030ED84 38 E1 00 08 */ addi r7, r1, 8
+/* 80313128 0030ED88 4B FF FC 79 */ bl VFiPFFILE_Cursor_ReadTailSector
+/* 8031312C 0030ED8C 80 9F 00 00 */ lwz r4, 0(r31)
+/* 80313130 0030ED90 2C 03 00 00 */ cmpwi r3, 0
+/* 80313134 0030ED94 80 01 00 08 */ lwz r0, 8(r1)
+/* 80313138 0030ED98 7C 04 02 14 */ add r0, r4, r0
+/* 8031313C 0030ED9C 90 1F 00 00 */ stw r0, 0(r31)
+/* 80313140 0030EDA0 41 82 00 08 */ beq lbl_80313148
+/* 80313144 0030EDA4 48 00 00 08 */ b lbl_8031314C
+lbl_80313148:
+/* 80313148 0030EDA8 38 60 00 00 */ li r3, 0
+lbl_8031314C:
+/* 8031314C 0030EDAC 39 61 00 30 */ addi r11, r1, 0x30
+/* 80313150 0030EDB0 4B EB 40 25 */ bl _restgpr_27
+/* 80313154 0030EDB4 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80313158 0030EDB8 7C 08 03 A6 */ mtlr r0
+/* 8031315C 0030EDBC 38 21 00 30 */ addi r1, r1, 0x30
+/* 80313160 0030EDC0 4E 80 00 20 */ blr
+
+.global VFiPFFILE_Cursor_WriteHeadSector
+VFiPFFILE_Cursor_WriteHeadSector:
+/* 80313164 0030EDC4 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80313168 0030EDC8 7C 08 02 A6 */ mflr r0
+/* 8031316C 0030EDCC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80313170 0030EDD0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80313174 0030EDD4 4B EB 3F B5 */ bl _savegpr_27
+/* 80313178 0030EDD8 38 00 00 00 */ li r0, 0
+/* 8031317C 0030EDDC 7C BC 2B 78 */ mr r28, r5
+/* 80313180 0030EDE0 90 07 00 00 */ stw r0, 0(r7)
+/* 80313184 0030EDE4 7C 7B 1B 78 */ mr r27, r3
+/* 80313188 0030EDE8 7C 9F 23 78 */ mr r31, r4
+/* 8031318C 0030EDEC 7C DD 33 78 */ mr r29, r6
+/* 80313190 0030EDF0 A0 A4 00 28 */ lhz r5, 0x28(r4)
+/* 80313194 0030EDF4 7C FE 3B 78 */ mr r30, r7
+/* 80313198 0030EDF8 2C 05 00 00 */ cmpwi r5, 0
+/* 8031319C 0030EDFC 40 82 00 0C */ bne lbl_803131A8
+/* 803131A0 0030EE00 38 60 00 00 */ li r3, 0
+/* 803131A4 0030EE04 48 00 02 00 */ b lbl_803133A4
+lbl_803131A8:
+/* 803131A8 0030EE08 A0 03 00 00 */ lhz r0, 0(r3)
+/* 803131AC 0030EE0C 7C 05 00 50 */ subf r0, r5, r0
+/* 803131B0 0030EE10 7C 06 00 40 */ cmplw r6, r0
+/* 803131B4 0030EE14 40 81 00 08 */ ble lbl_803131BC
+/* 803131B8 0030EE18 7C 1D 03 78 */ mr r29, r0
+lbl_803131BC:
+/* 803131BC 0030EE1C 80 A4 00 20 */ lwz r5, 0x20(r4)
+/* 803131C0 0030EE20 3C 05 00 01 */ addis r0, r5, 1
+/* 803131C4 0030EE24 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803131C8 0030EE28 40 82 00 E8 */ bne lbl_803132B0
+/* 803131CC 0030EE2C 80 64 00 08 */ lwz r3, 8(r4)
+/* 803131D0 0030EE30 38 DF 00 20 */ addi r6, r31, 0x20
+/* 803131D4 0030EE34 80 84 00 24 */ lwz r4, 0x24(r4)
+/* 803131D8 0030EE38 38 A0 00 00 */ li r5, 0
+/* 803131DC 0030EE3C 38 63 00 04 */ addi r3, r3, 4
+/* 803131E0 0030EE40 4B FF CD 89 */ bl VFiPFFAT_GetSectorSpecified
+/* 803131E4 0030EE44 2C 03 00 00 */ cmpwi r3, 0
+/* 803131E8 0030EE48 41 82 00 08 */ beq lbl_803131F0
+/* 803131EC 0030EE4C 48 00 01 B8 */ b lbl_803133A4
+lbl_803131F0:
+/* 803131F0 0030EE50 80 BF 00 20 */ lwz r5, 0x20(r31)
+/* 803131F4 0030EE54 3C 05 00 01 */ addis r0, r5, 1
+/* 803131F8 0030EE58 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803131FC 0030EE5C 40 82 00 B4 */ bne lbl_803132B0
+/* 80313200 0030EE60 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313204 0030EE64 2C 1F 00 00 */ cmpwi r31, 0
+/* 80313208 0030EE68 81 03 02 64 */ lwz r8, 0x264(r3)
+/* 8031320C 0030EE6C 40 82 00 0C */ bne lbl_80313218
+/* 80313210 0030EE70 38 80 00 00 */ li r4, 0
+/* 80313214 0030EE74 48 00 00 08 */ b lbl_8031321C
+lbl_80313218:
+/* 80313218 0030EE78 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_8031321C:
+/* 8031321C 0030EE7C A0 64 00 00 */ lhz r3, 0(r4)
+/* 80313220 0030EE80 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80313224 0030EE84 38 63 FF FF */ addi r3, r3, -1
+/* 80313228 0030EE88 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 8031322C 0030EE8C 7C 07 18 38 */ and r7, r0, r3
+/* 80313230 0030EE90 7C 05 24 30 */ srw r5, r0, r4
+/* 80313234 0030EE94 7D 03 18 38 */ and r3, r8, r3
+/* 80313238 0030EE98 7C C7 00 D0 */ neg r6, r7
+/* 8031323C 0030EE9C 7D 04 24 30 */ srw r4, r8, r4
+/* 80313240 0030EEA0 7C 03 00 D0 */ neg r0, r3
+/* 80313244 0030EEA4 7C 00 1B 78 */ or r0, r0, r3
+/* 80313248 0030EEA8 7C C6 3B 78 */ or r6, r6, r7
+/* 8031324C 0030EEAC 54 C3 0F FE */ srwi r3, r6, 0x1f
+/* 80313250 0030EEB0 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80313254 0030EEB4 7C 65 1A 14 */ add r3, r5, r3
+/* 80313258 0030EEB8 7C 04 02 14 */ add r0, r4, r0
+/* 8031325C 0030EEBC 7C 03 00 40 */ cmplw r3, r0
+/* 80313260 0030EEC0 41 82 00 0C */ beq lbl_8031326C
+/* 80313264 0030EEC4 38 00 FF FF */ li r0, -1
+/* 80313268 0030EEC8 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_8031326C:
+/* 8031326C 0030EECC 2C 1F 00 00 */ cmpwi r31, 0
+/* 80313270 0030EED0 91 1F 00 1C */ stw r8, 0x1c(r31)
+/* 80313274 0030EED4 40 82 00 0C */ bne lbl_80313280
+/* 80313278 0030EED8 38 80 00 00 */ li r4, 0
+/* 8031327C 0030EEDC 48 00 00 0C */ b lbl_80313288
+lbl_80313280:
+/* 80313280 0030EEE0 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313284 0030EEE4 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80313288:
+/* 80313288 0030EEE8 80 BF 00 1C */ lwz r5, 0x1c(r31)
+/* 8031328C 0030EEEC 38 60 00 1C */ li r3, 0x1c
+/* 80313290 0030EEF0 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 80313294 0030EEF4 7C A0 04 30 */ srw r0, r5, r0
+/* 80313298 0030EEF8 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 8031329C 0030EEFC A0 84 00 00 */ lhz r4, 0(r4)
+/* 803132A0 0030EF00 38 04 FF FF */ addi r0, r4, -1
+/* 803132A4 0030EF04 7C A0 00 38 */ and r0, r5, r0
+/* 803132A8 0030EF08 B0 1F 00 28 */ sth r0, 0x28(r31)
+/* 803132AC 0030EF0C 48 00 00 F8 */ b lbl_803133A4
+lbl_803132B0:
+/* 803132B0 0030EF10 A0 DF 00 28 */ lhz r6, 0x28(r31)
+/* 803132B4 0030EF14 7F 63 DB 78 */ mr r3, r27
+/* 803132B8 0030EF18 7F 84 E3 78 */ mr r4, r28
+/* 803132BC 0030EF1C 7F A7 EB 78 */ mr r7, r29
+/* 803132C0 0030EF20 39 01 00 08 */ addi r8, r1, 8
+/* 803132C4 0030EF24 39 20 00 01 */ li r9, 1
+/* 803132C8 0030EF28 48 00 5B 21 */ bl VFiPFSEC_WriteData
+/* 803132CC 0030EF2C 2C 03 00 00 */ cmpwi r3, 0
+/* 803132D0 0030EF30 41 82 00 14 */ beq lbl_803132E4
+/* 803132D4 0030EF34 80 01 00 08 */ lwz r0, 8(r1)
+/* 803132D8 0030EF38 2C 00 00 00 */ cmpwi r0, 0
+/* 803132DC 0030EF3C 40 82 00 08 */ bne lbl_803132E4
+/* 803132E0 0030EF40 48 00 00 C4 */ b lbl_803133A4
+lbl_803132E4:
+/* 803132E4 0030EF44 80 01 00 08 */ lwz r0, 8(r1)
+/* 803132E8 0030EF48 2C 1F 00 00 */ cmpwi r31, 0
+/* 803132EC 0030EF4C 90 1E 00 00 */ stw r0, 0(r30)
+/* 803132F0 0030EF50 80 DF 00 20 */ lwz r6, 0x20(r31)
+/* 803132F4 0030EF54 80 A1 00 08 */ lwz r5, 8(r1)
+/* 803132F8 0030EF58 40 82 00 0C */ bne lbl_80313304
+/* 803132FC 0030EF5C 38 80 00 00 */ li r4, 0
+/* 80313300 0030EF60 48 00 00 0C */ b lbl_8031330C
+lbl_80313304:
+/* 80313304 0030EF64 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313308 0030EF68 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_8031330C:
+/* 8031330C 0030EF6C A0 1F 00 28 */ lhz r0, 0x28(r31)
+/* 80313310 0030EF70 A0 64 00 00 */ lhz r3, 0(r4)
+/* 80313314 0030EF74 7C E0 2A 14 */ add r7, r0, r5
+/* 80313318 0030EF78 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 8031331C 0030EF7C 38 03 FF FF */ addi r0, r3, -1
+/* 80313320 0030EF80 7C 00 38 39 */ and. r0, r0, r7
+/* 80313324 0030EF84 7C E0 24 30 */ srw r0, r7, r4
+/* 80313328 0030EF88 7C 86 02 14 */ add r4, r6, r0
+/* 8031332C 0030EF8C 41 82 00 0C */ beq lbl_80313338
+/* 80313330 0030EF90 90 9F 00 20 */ stw r4, 0x20(r31)
+/* 80313334 0030EF94 48 00 00 0C */ b lbl_80313340
+lbl_80313338:
+/* 80313338 0030EF98 38 00 FF FF */ li r0, -1
+/* 8031333C 0030EF9C 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_80313340:
+/* 80313340 0030EFA0 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80313344 0030EFA4 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313348 0030EFA8 7C A0 2A 14 */ add r5, r0, r5
+/* 8031334C 0030EFAC 90 BF 00 1C */ stw r5, 0x1c(r31)
+/* 80313350 0030EFB0 80 03 02 64 */ lwz r0, 0x264(r3)
+/* 80313354 0030EFB4 7C 05 00 40 */ cmplw r5, r0
+/* 80313358 0030EFB8 40 81 00 08 */ ble lbl_80313360
+/* 8031335C 0030EFBC 90 A3 02 64 */ stw r5, 0x264(r3)
+lbl_80313360:
+/* 80313360 0030EFC0 2C 1F 00 00 */ cmpwi r31, 0
+/* 80313364 0030EFC4 40 82 00 0C */ bne lbl_80313370
+/* 80313368 0030EFC8 38 A0 00 00 */ li r5, 0
+/* 8031336C 0030EFCC 48 00 00 0C */ b lbl_80313378
+lbl_80313370:
+/* 80313370 0030EFD0 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313374 0030EFD4 80 A3 02 68 */ lwz r5, 0x268(r3)
+lbl_80313378:
+/* 80313378 0030EFD8 80 DF 00 1C */ lwz r6, 0x1c(r31)
+/* 8031337C 0030EFDC 7F E3 FB 78 */ mr r3, r31
+/* 80313380 0030EFE0 88 05 00 20 */ lbz r0, 0x20(r5)
+/* 80313384 0030EFE4 7C C0 04 30 */ srw r0, r6, r0
+/* 80313388 0030EFE8 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 8031338C 0030EFEC A0 A5 00 00 */ lhz r5, 0(r5)
+/* 80313390 0030EFF0 38 05 FF FF */ addi r0, r5, -1
+/* 80313394 0030EFF4 7C C0 00 38 */ and r0, r6, r0
+/* 80313398 0030EFF8 B0 1F 00 28 */ sth r0, 0x28(r31)
+/* 8031339C 0030EFFC 4B FF 79 E5 */ bl VFiPFCLUSTER_UpdateLastAccessCluster
+/* 803133A0 0030F000 38 60 00 00 */ li r3, 0
+lbl_803133A4:
+/* 803133A4 0030F004 39 61 00 30 */ addi r11, r1, 0x30
+/* 803133A8 0030F008 4B EB 3D CD */ bl _restgpr_27
+/* 803133AC 0030F00C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803133B0 0030F010 7C 08 03 A6 */ mtlr r0
+/* 803133B4 0030F014 38 21 00 30 */ addi r1, r1, 0x30
+/* 803133B8 0030F018 4E 80 00 20 */ blr
+
+.global VFiPFFILE_Cursor_WriteTailSector
+VFiPFFILE_Cursor_WriteTailSector:
+/* 803133BC 0030F01C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803133C0 0030F020 7C 08 02 A6 */ mflr r0
+/* 803133C4 0030F024 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803133C8 0030F028 38 00 00 00 */ li r0, 0
+/* 803133CC 0030F02C 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 803133D0 0030F030 7C 9F 23 78 */ mr r31, r4
+/* 803133D4 0030F034 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 803133D8 0030F038 7D 1E 43 78 */ mr r30, r8
+/* 803133DC 0030F03C 93 A1 00 24 */ stw r29, 0x24(r1)
+/* 803133E0 0030F040 7C BD 2B 78 */ mr r29, r5
+/* 803133E4 0030F044 93 81 00 20 */ stw r28, 0x20(r1)
+/* 803133E8 0030F048 7C 7C 1B 78 */ mr r28, r3
+/* 803133EC 0030F04C 90 C1 00 08 */ stw r6, 8(r1)
+/* 803133F0 0030F050 90 08 00 00 */ stw r0, 0(r8)
+/* 803133F4 0030F054 80 A1 00 08 */ lwz r5, 8(r1)
+/* 803133F8 0030F058 2C 05 00 00 */ cmpwi r5, 0
+/* 803133FC 0030F05C 40 82 00 0C */ bne lbl_80313408
+/* 80313400 0030F060 38 60 00 00 */ li r3, 0
+/* 80313404 0030F064 48 00 02 5C */ b lbl_80313660
+lbl_80313408:
+/* 80313408 0030F068 A0 63 00 00 */ lhz r3, 0(r3)
+/* 8031340C 0030F06C A0 04 00 28 */ lhz r0, 0x28(r4)
+/* 80313410 0030F070 7C 00 18 50 */ subf r0, r0, r3
+/* 80313414 0030F074 7C 05 00 40 */ cmplw r5, r0
+/* 80313418 0030F078 41 81 00 0C */ bgt lbl_80313424
+/* 8031341C 0030F07C 7C 05 18 40 */ cmplw r5, r3
+/* 80313420 0030F080 40 81 00 0C */ ble lbl_8031342C
+lbl_80313424:
+/* 80313424 0030F084 38 60 00 1A */ li r3, 0x1a
+/* 80313428 0030F088 48 00 02 38 */ b lbl_80313660
+lbl_8031342C:
+/* 8031342C 0030F08C 2C 07 00 00 */ cmpwi r7, 0
+/* 80313430 0030F090 41 82 00 44 */ beq lbl_80313474
+/* 80313434 0030F094 7F E3 FB 78 */ mr r3, r31
+/* 80313438 0030F098 7C E4 3B 78 */ mr r4, r7
+/* 8031343C 0030F09C 38 A1 00 08 */ addi r5, r1, 8
+/* 80313440 0030F0A0 38 C1 00 10 */ addi r6, r1, 0x10
+/* 80313444 0030F0A4 4B FF 7A 11 */ bl VFiPFCLUSTER_AppendCluster
+/* 80313448 0030F0A8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031344C 0030F0AC 41 82 00 08 */ beq lbl_80313454
+/* 80313450 0030F0B0 48 00 02 10 */ b lbl_80313660
+lbl_80313454:
+/* 80313454 0030F0B4 80 01 00 08 */ lwz r0, 8(r1)
+/* 80313458 0030F0B8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031345C 0030F0BC 40 82 00 0C */ bne lbl_80313468
+/* 80313460 0030F0C0 38 60 00 00 */ li r3, 0
+/* 80313464 0030F0C4 48 00 01 FC */ b lbl_80313660
+lbl_80313468:
+/* 80313468 0030F0C8 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8031346C 0030F0CC 90 1F 00 20 */ stw r0, 0x20(r31)
+/* 80313470 0030F0D0 48 00 00 F8 */ b lbl_80313568
+lbl_80313474:
+/* 80313474 0030F0D4 80 64 00 20 */ lwz r3, 0x20(r4)
+/* 80313478 0030F0D8 3C 03 00 01 */ addis r0, r3, 1
+/* 8031347C 0030F0DC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80313480 0030F0E0 40 82 00 E8 */ bne lbl_80313568
+/* 80313484 0030F0E4 80 64 00 08 */ lwz r3, 8(r4)
+/* 80313488 0030F0E8 38 DF 00 20 */ addi r6, r31, 0x20
+/* 8031348C 0030F0EC 80 84 00 24 */ lwz r4, 0x24(r4)
+/* 80313490 0030F0F0 38 A0 00 00 */ li r5, 0
+/* 80313494 0030F0F4 38 63 00 04 */ addi r3, r3, 4
+/* 80313498 0030F0F8 4B FF CA D1 */ bl VFiPFFAT_GetSectorSpecified
+/* 8031349C 0030F0FC 2C 03 00 00 */ cmpwi r3, 0
+/* 803134A0 0030F100 41 82 00 08 */ beq lbl_803134A8
+/* 803134A4 0030F104 48 00 01 BC */ b lbl_80313660
+lbl_803134A8:
+/* 803134A8 0030F108 80 7F 00 20 */ lwz r3, 0x20(r31)
+/* 803134AC 0030F10C 3C 03 00 01 */ addis r0, r3, 1
+/* 803134B0 0030F110 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803134B4 0030F114 40 82 00 B4 */ bne lbl_80313568
+/* 803134B8 0030F118 80 7F 00 08 */ lwz r3, 8(r31)
+/* 803134BC 0030F11C 2C 1F 00 00 */ cmpwi r31, 0
+/* 803134C0 0030F120 81 03 02 64 */ lwz r8, 0x264(r3)
+/* 803134C4 0030F124 40 82 00 0C */ bne lbl_803134D0
+/* 803134C8 0030F128 38 80 00 00 */ li r4, 0
+/* 803134CC 0030F12C 48 00 00 08 */ b lbl_803134D4
+lbl_803134D0:
+/* 803134D0 0030F130 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_803134D4:
+/* 803134D4 0030F134 A0 64 00 00 */ lhz r3, 0(r4)
+/* 803134D8 0030F138 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 803134DC 0030F13C 38 63 FF FF */ addi r3, r3, -1
+/* 803134E0 0030F140 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 803134E4 0030F144 7C 07 18 38 */ and r7, r0, r3
+/* 803134E8 0030F148 7C 05 24 30 */ srw r5, r0, r4
+/* 803134EC 0030F14C 7D 03 18 38 */ and r3, r8, r3
+/* 803134F0 0030F150 7C C7 00 D0 */ neg r6, r7
+/* 803134F4 0030F154 7D 04 24 30 */ srw r4, r8, r4
+/* 803134F8 0030F158 7C 03 00 D0 */ neg r0, r3
+/* 803134FC 0030F15C 7C 00 1B 78 */ or r0, r0, r3
+/* 80313500 0030F160 7C C6 3B 78 */ or r6, r6, r7
+/* 80313504 0030F164 54 C3 0F FE */ srwi r3, r6, 0x1f
+/* 80313508 0030F168 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 8031350C 0030F16C 7C 65 1A 14 */ add r3, r5, r3
+/* 80313510 0030F170 7C 04 02 14 */ add r0, r4, r0
+/* 80313514 0030F174 7C 03 00 40 */ cmplw r3, r0
+/* 80313518 0030F178 41 82 00 0C */ beq lbl_80313524
+/* 8031351C 0030F17C 38 00 FF FF */ li r0, -1
+/* 80313520 0030F180 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_80313524:
+/* 80313524 0030F184 2C 1F 00 00 */ cmpwi r31, 0
+/* 80313528 0030F188 91 1F 00 1C */ stw r8, 0x1c(r31)
+/* 8031352C 0030F18C 40 82 00 0C */ bne lbl_80313538
+/* 80313530 0030F190 38 80 00 00 */ li r4, 0
+/* 80313534 0030F194 48 00 00 0C */ b lbl_80313540
+lbl_80313538:
+/* 80313538 0030F198 80 7F 00 08 */ lwz r3, 8(r31)
+/* 8031353C 0030F19C 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80313540:
+/* 80313540 0030F1A0 80 BF 00 1C */ lwz r5, 0x1c(r31)
+/* 80313544 0030F1A4 38 60 00 1C */ li r3, 0x1c
+/* 80313548 0030F1A8 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 8031354C 0030F1AC 7C A0 04 30 */ srw r0, r5, r0
+/* 80313550 0030F1B0 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 80313554 0030F1B4 A0 84 00 00 */ lhz r4, 0(r4)
+/* 80313558 0030F1B8 38 04 FF FF */ addi r0, r4, -1
+/* 8031355C 0030F1BC 7C A0 00 38 */ and r0, r5, r0
+/* 80313560 0030F1C0 B0 1F 00 28 */ sth r0, 0x28(r31)
+/* 80313564 0030F1C4 48 00 00 FC */ b lbl_80313660
+lbl_80313568:
+/* 80313568 0030F1C8 80 BF 00 20 */ lwz r5, 0x20(r31)
+/* 8031356C 0030F1CC 7F 83 E3 78 */ mr r3, r28
+/* 80313570 0030F1D0 A0 DF 00 28 */ lhz r6, 0x28(r31)
+/* 80313574 0030F1D4 7F A4 EB 78 */ mr r4, r29
+/* 80313578 0030F1D8 80 E1 00 08 */ lwz r7, 8(r1)
+/* 8031357C 0030F1DC 39 01 00 0C */ addi r8, r1, 0xc
+/* 80313580 0030F1E0 39 20 00 01 */ li r9, 1
+/* 80313584 0030F1E4 48 00 58 65 */ bl VFiPFSEC_WriteData
+/* 80313588 0030F1E8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031358C 0030F1EC 41 82 00 14 */ beq lbl_803135A0
+/* 80313590 0030F1F0 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 80313594 0030F1F4 2C 00 00 00 */ cmpwi r0, 0
+/* 80313598 0030F1F8 40 82 00 08 */ bne lbl_803135A0
+/* 8031359C 0030F1FC 48 00 00 C4 */ b lbl_80313660
+lbl_803135A0:
+/* 803135A0 0030F200 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 803135A4 0030F204 2C 1F 00 00 */ cmpwi r31, 0
+/* 803135A8 0030F208 90 1E 00 00 */ stw r0, 0(r30)
+/* 803135AC 0030F20C 80 DF 00 20 */ lwz r6, 0x20(r31)
+/* 803135B0 0030F210 80 A1 00 0C */ lwz r5, 0xc(r1)
+/* 803135B4 0030F214 40 82 00 0C */ bne lbl_803135C0
+/* 803135B8 0030F218 38 80 00 00 */ li r4, 0
+/* 803135BC 0030F21C 48 00 00 0C */ b lbl_803135C8
+lbl_803135C0:
+/* 803135C0 0030F220 80 7F 00 08 */ lwz r3, 8(r31)
+/* 803135C4 0030F224 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_803135C8:
+/* 803135C8 0030F228 A0 1F 00 28 */ lhz r0, 0x28(r31)
+/* 803135CC 0030F22C A0 64 00 00 */ lhz r3, 0(r4)
+/* 803135D0 0030F230 7C E0 2A 14 */ add r7, r0, r5
+/* 803135D4 0030F234 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 803135D8 0030F238 38 03 FF FF */ addi r0, r3, -1
+/* 803135DC 0030F23C 7C 00 38 39 */ and. r0, r0, r7
+/* 803135E0 0030F240 7C E0 24 30 */ srw r0, r7, r4
+/* 803135E4 0030F244 7C 86 02 14 */ add r4, r6, r0
+/* 803135E8 0030F248 41 82 00 0C */ beq lbl_803135F4
+/* 803135EC 0030F24C 90 9F 00 20 */ stw r4, 0x20(r31)
+/* 803135F0 0030F250 48 00 00 0C */ b lbl_803135FC
+lbl_803135F4:
+/* 803135F4 0030F254 38 00 FF FF */ li r0, -1
+/* 803135F8 0030F258 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_803135FC:
+/* 803135FC 0030F25C 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80313600 0030F260 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313604 0030F264 7C A0 2A 14 */ add r5, r0, r5
+/* 80313608 0030F268 90 BF 00 1C */ stw r5, 0x1c(r31)
+/* 8031360C 0030F26C 80 03 02 64 */ lwz r0, 0x264(r3)
+/* 80313610 0030F270 7C 05 00 40 */ cmplw r5, r0
+/* 80313614 0030F274 40 81 00 08 */ ble lbl_8031361C
+/* 80313618 0030F278 90 A3 02 64 */ stw r5, 0x264(r3)
+lbl_8031361C:
+/* 8031361C 0030F27C 2C 1F 00 00 */ cmpwi r31, 0
+/* 80313620 0030F280 40 82 00 0C */ bne lbl_8031362C
+/* 80313624 0030F284 38 A0 00 00 */ li r5, 0
+/* 80313628 0030F288 48 00 00 0C */ b lbl_80313634
+lbl_8031362C:
+/* 8031362C 0030F28C 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313630 0030F290 80 A3 02 68 */ lwz r5, 0x268(r3)
+lbl_80313634:
+/* 80313634 0030F294 80 DF 00 1C */ lwz r6, 0x1c(r31)
+/* 80313638 0030F298 7F E3 FB 78 */ mr r3, r31
+/* 8031363C 0030F29C 88 05 00 20 */ lbz r0, 0x20(r5)
+/* 80313640 0030F2A0 7C C0 04 30 */ srw r0, r6, r0
+/* 80313644 0030F2A4 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 80313648 0030F2A8 A0 A5 00 00 */ lhz r5, 0(r5)
+/* 8031364C 0030F2AC 38 05 FF FF */ addi r0, r5, -1
+/* 80313650 0030F2B0 7C C0 00 38 */ and r0, r6, r0
+/* 80313654 0030F2B4 B0 1F 00 28 */ sth r0, 0x28(r31)
+/* 80313658 0030F2B8 4B FF 77 29 */ bl VFiPFCLUSTER_UpdateLastAccessCluster
+/* 8031365C 0030F2BC 38 60 00 00 */ li r3, 0
+lbl_80313660:
+/* 80313660 0030F2C0 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80313664 0030F2C4 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 80313668 0030F2C8 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 8031366C 0030F2CC 83 A1 00 24 */ lwz r29, 0x24(r1)
+/* 80313670 0030F2D0 83 81 00 20 */ lwz r28, 0x20(r1)
+/* 80313674 0030F2D4 7C 08 03 A6 */ mtlr r0
+/* 80313678 0030F2D8 38 21 00 30 */ addi r1, r1, 0x30
+/* 8031367C 0030F2DC 4E 80 00 20 */ blr
+
+.global VFiPFFILE_Cursor_Write_Overwrite
+VFiPFFILE_Cursor_Write_Overwrite:
+/* 80313680 0030F2E0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80313684 0030F2E4 7C 08 02 A6 */ mflr r0
+/* 80313688 0030F2E8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8031368C 0030F2EC 39 61 00 30 */ addi r11, r1, 0x30
+/* 80313690 0030F2F0 4B EB 3A 99 */ bl _savegpr_27
+/* 80313694 0030F2F4 38 00 00 00 */ li r0, 0
+/* 80313698 0030F2F8 7C DF 33 78 */ mr r31, r6
+/* 8031369C 0030F2FC 90 07 00 00 */ stw r0, 0(r7)
+/* 803136A0 0030F300 7C BC 2B 78 */ mr r28, r5
+/* 803136A4 0030F304 7C FE 3B 78 */ mr r30, r7
+/* 803136A8 0030F308 7C 9D 23 78 */ mr r29, r4
+/* 803136AC 0030F30C 80 C4 00 08 */ lwz r6, 8(r4)
+/* 803136B0 0030F310 7C 7B 1B 78 */ mr r27, r3
+/* 803136B4 0030F314 80 84 00 24 */ lwz r4, 0x24(r4)
+/* 803136B8 0030F318 7F E5 FB 78 */ mr r5, r31
+/* 803136BC 0030F31C 38 66 00 04 */ addi r3, r6, 4
+/* 803136C0 0030F320 38 DD 00 20 */ addi r6, r29, 0x20
+/* 803136C4 0030F324 38 E1 00 0C */ addi r7, r1, 0xc
+/* 803136C8 0030F328 4B FF CA 4D */ bl VFiPFFAT_GetContinuousSector
+/* 803136CC 0030F32C 2C 03 00 00 */ cmpwi r3, 0
+/* 803136D0 0030F330 41 82 00 08 */ beq lbl_803136D8
+/* 803136D4 0030F334 48 00 01 EC */ b lbl_803138C0
+lbl_803136D8:
+/* 803136D8 0030F338 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 803136DC 0030F33C 2C 03 00 00 */ cmpwi r3, 0
+/* 803136E0 0030F340 41 82 00 14 */ beq lbl_803136F4
+/* 803136E4 0030F344 80 BD 00 20 */ lwz r5, 0x20(r29)
+/* 803136E8 0030F348 3C 05 00 01 */ addis r0, r5, 1
+/* 803136EC 0030F34C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803136F0 0030F350 40 82 00 B4 */ bne lbl_803137A4
+lbl_803136F4:
+/* 803136F4 0030F354 80 7D 00 08 */ lwz r3, 8(r29)
+/* 803136F8 0030F358 2C 1D 00 00 */ cmpwi r29, 0
+/* 803136FC 0030F35C 81 03 02 64 */ lwz r8, 0x264(r3)
+/* 80313700 0030F360 40 82 00 0C */ bne lbl_8031370C
+/* 80313704 0030F364 38 80 00 00 */ li r4, 0
+/* 80313708 0030F368 48 00 00 08 */ b lbl_80313710
+lbl_8031370C:
+/* 8031370C 0030F36C 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80313710:
+/* 80313710 0030F370 A0 64 00 00 */ lhz r3, 0(r4)
+/* 80313714 0030F374 80 1D 00 1C */ lwz r0, 0x1c(r29)
+/* 80313718 0030F378 38 63 FF FF */ addi r3, r3, -1
+/* 8031371C 0030F37C 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 80313720 0030F380 7C 07 18 38 */ and r7, r0, r3
+/* 80313724 0030F384 7C 05 24 30 */ srw r5, r0, r4
+/* 80313728 0030F388 7D 03 18 38 */ and r3, r8, r3
+/* 8031372C 0030F38C 7C C7 00 D0 */ neg r6, r7
+/* 80313730 0030F390 7D 04 24 30 */ srw r4, r8, r4
+/* 80313734 0030F394 7C 03 00 D0 */ neg r0, r3
+/* 80313738 0030F398 7C 00 1B 78 */ or r0, r0, r3
+/* 8031373C 0030F39C 7C C6 3B 78 */ or r6, r6, r7
+/* 80313740 0030F3A0 54 C3 0F FE */ srwi r3, r6, 0x1f
+/* 80313744 0030F3A4 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80313748 0030F3A8 7C 65 1A 14 */ add r3, r5, r3
+/* 8031374C 0030F3AC 7C 04 02 14 */ add r0, r4, r0
+/* 80313750 0030F3B0 7C 03 00 40 */ cmplw r3, r0
+/* 80313754 0030F3B4 41 82 00 0C */ beq lbl_80313760
+/* 80313758 0030F3B8 38 00 FF FF */ li r0, -1
+/* 8031375C 0030F3BC 90 1D 00 20 */ stw r0, 0x20(r29)
+lbl_80313760:
+/* 80313760 0030F3C0 2C 1D 00 00 */ cmpwi r29, 0
+/* 80313764 0030F3C4 91 1D 00 1C */ stw r8, 0x1c(r29)
+/* 80313768 0030F3C8 40 82 00 0C */ bne lbl_80313774
+/* 8031376C 0030F3CC 38 80 00 00 */ li r4, 0
+/* 80313770 0030F3D0 48 00 00 0C */ b lbl_8031377C
+lbl_80313774:
+/* 80313774 0030F3D4 80 7D 00 08 */ lwz r3, 8(r29)
+/* 80313778 0030F3D8 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_8031377C:
+/* 8031377C 0030F3DC 80 BD 00 1C */ lwz r5, 0x1c(r29)
+/* 80313780 0030F3E0 38 60 00 1C */ li r3, 0x1c
+/* 80313784 0030F3E4 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 80313788 0030F3E8 7C A0 04 30 */ srw r0, r5, r0
+/* 8031378C 0030F3EC 90 1D 00 24 */ stw r0, 0x24(r29)
+/* 80313790 0030F3F0 A0 84 00 00 */ lhz r4, 0(r4)
+/* 80313794 0030F3F4 38 04 FF FF */ addi r0, r4, -1
+/* 80313798 0030F3F8 7C A0 00 38 */ and r0, r5, r0
+/* 8031379C 0030F3FC B0 1D 00 28 */ sth r0, 0x28(r29)
+/* 803137A0 0030F400 48 00 01 20 */ b lbl_803138C0
+lbl_803137A4:
+/* 803137A4 0030F404 88 1B 00 20 */ lbz r0, 0x20(r27)
+/* 803137A8 0030F408 7C 60 00 30 */ slw r0, r3, r0
+/* 803137AC 0030F40C 7C 1F 00 40 */ cmplw r31, r0
+/* 803137B0 0030F410 40 81 00 08 */ ble lbl_803137B8
+/* 803137B4 0030F414 7C 1F 03 78 */ mr r31, r0
+lbl_803137B8:
+/* 803137B8 0030F418 80 1E 00 00 */ lwz r0, 0(r30)
+/* 803137BC 0030F41C 7F E7 FB 78 */ mr r7, r31
+/* 803137C0 0030F420 A0 DD 00 28 */ lhz r6, 0x28(r29)
+/* 803137C4 0030F424 7F 63 DB 78 */ mr r3, r27
+/* 803137C8 0030F428 7C 9C 02 14 */ add r4, r28, r0
+/* 803137CC 0030F42C 39 01 00 08 */ addi r8, r1, 8
+/* 803137D0 0030F430 3B E0 00 00 */ li r31, 0
+/* 803137D4 0030F434 39 20 00 01 */ li r9, 1
+/* 803137D8 0030F438 48 00 56 11 */ bl VFiPFSEC_WriteData
+/* 803137DC 0030F43C 2C 03 00 00 */ cmpwi r3, 0
+/* 803137E0 0030F440 41 82 00 14 */ beq lbl_803137F4
+/* 803137E4 0030F444 80 01 00 08 */ lwz r0, 8(r1)
+/* 803137E8 0030F448 2C 00 00 00 */ cmpwi r0, 0
+/* 803137EC 0030F44C 40 82 00 08 */ bne lbl_803137F4
+/* 803137F0 0030F450 48 00 00 BC */ b lbl_803138AC
+lbl_803137F4:
+/* 803137F4 0030F454 2C 1D 00 00 */ cmpwi r29, 0
+/* 803137F8 0030F458 83 E1 00 08 */ lwz r31, 8(r1)
+/* 803137FC 0030F45C 80 BD 00 20 */ lwz r5, 0x20(r29)
+/* 80313800 0030F460 40 82 00 0C */ bne lbl_8031380C
+/* 80313804 0030F464 38 80 00 00 */ li r4, 0
+/* 80313808 0030F468 48 00 00 0C */ b lbl_80313814
+lbl_8031380C:
+/* 8031380C 0030F46C 80 7D 00 08 */ lwz r3, 8(r29)
+/* 80313810 0030F470 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80313814:
+/* 80313814 0030F474 A0 1D 00 28 */ lhz r0, 0x28(r29)
+/* 80313818 0030F478 A0 64 00 00 */ lhz r3, 0(r4)
+/* 8031381C 0030F47C 7C C0 FA 14 */ add r6, r0, r31
+/* 80313820 0030F480 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 80313824 0030F484 38 03 FF FF */ addi r0, r3, -1
+/* 80313828 0030F488 7C 00 30 39 */ and. r0, r0, r6
+/* 8031382C 0030F48C 7C C0 24 30 */ srw r0, r6, r4
+/* 80313830 0030F490 7C 85 02 14 */ add r4, r5, r0
+/* 80313834 0030F494 41 82 00 0C */ beq lbl_80313840
+/* 80313838 0030F498 90 9D 00 20 */ stw r4, 0x20(r29)
+/* 8031383C 0030F49C 48 00 00 0C */ b lbl_80313848
+lbl_80313840:
+/* 80313840 0030F4A0 38 00 FF FF */ li r0, -1
+/* 80313844 0030F4A4 90 1D 00 20 */ stw r0, 0x20(r29)
+lbl_80313848:
+/* 80313848 0030F4A8 80 1D 00 1C */ lwz r0, 0x1c(r29)
+/* 8031384C 0030F4AC 80 7D 00 08 */ lwz r3, 8(r29)
+/* 80313850 0030F4B0 7C A0 FA 14 */ add r5, r0, r31
+/* 80313854 0030F4B4 90 BD 00 1C */ stw r5, 0x1c(r29)
+/* 80313858 0030F4B8 80 03 02 64 */ lwz r0, 0x264(r3)
+/* 8031385C 0030F4BC 7C 05 00 40 */ cmplw r5, r0
+/* 80313860 0030F4C0 40 81 00 08 */ ble lbl_80313868
+/* 80313864 0030F4C4 90 A3 02 64 */ stw r5, 0x264(r3)
+lbl_80313868:
+/* 80313868 0030F4C8 2C 1D 00 00 */ cmpwi r29, 0
+/* 8031386C 0030F4CC 40 82 00 0C */ bne lbl_80313878
+/* 80313870 0030F4D0 38 A0 00 00 */ li r5, 0
+/* 80313874 0030F4D4 48 00 00 0C */ b lbl_80313880
+lbl_80313878:
+/* 80313878 0030F4D8 80 7D 00 08 */ lwz r3, 8(r29)
+/* 8031387C 0030F4DC 80 A3 02 68 */ lwz r5, 0x268(r3)
+lbl_80313880:
+/* 80313880 0030F4E0 80 DD 00 1C */ lwz r6, 0x1c(r29)
+/* 80313884 0030F4E4 7F A3 EB 78 */ mr r3, r29
+/* 80313888 0030F4E8 88 05 00 20 */ lbz r0, 0x20(r5)
+/* 8031388C 0030F4EC 7C C0 04 30 */ srw r0, r6, r0
+/* 80313890 0030F4F0 90 1D 00 24 */ stw r0, 0x24(r29)
+/* 80313894 0030F4F4 A0 A5 00 00 */ lhz r5, 0(r5)
+/* 80313898 0030F4F8 38 05 FF FF */ addi r0, r5, -1
+/* 8031389C 0030F4FC 7C C0 00 38 */ and r0, r6, r0
+/* 803138A0 0030F500 B0 1D 00 28 */ sth r0, 0x28(r29)
+/* 803138A4 0030F504 4B FF 74 DD */ bl VFiPFCLUSTER_UpdateLastAccessCluster
+/* 803138A8 0030F508 38 60 00 00 */ li r3, 0
+lbl_803138AC:
+/* 803138AC 0030F50C 2C 03 00 00 */ cmpwi r3, 0
+/* 803138B0 0030F510 93 FE 00 00 */ stw r31, 0(r30)
+/* 803138B4 0030F514 41 82 00 08 */ beq lbl_803138BC
+/* 803138B8 0030F518 48 00 00 08 */ b lbl_803138C0
+lbl_803138BC:
+/* 803138BC 0030F51C 38 60 00 00 */ li r3, 0
+lbl_803138C0:
+/* 803138C0 0030F520 39 61 00 30 */ addi r11, r1, 0x30
+/* 803138C4 0030F524 4B EB 38 B1 */ bl _restgpr_27
+/* 803138C8 0030F528 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803138CC 0030F52C 7C 08 03 A6 */ mtlr r0
+/* 803138D0 0030F530 38 21 00 30 */ addi r1, r1, 0x30
+/* 803138D4 0030F534 4E 80 00 20 */ blr
+
+.global VFiPFFILE_Cursor_Write
+VFiPFFILE_Cursor_Write:
+/* 803138D8 0030F538 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 803138DC 0030F53C 7C 08 02 A6 */ mflr r0
+/* 803138E0 0030F540 90 01 00 54 */ stw r0, 0x54(r1)
+/* 803138E4 0030F544 39 61 00 50 */ addi r11, r1, 0x50
+/* 803138E8 0030F548 4B EB 38 2D */ bl _savegpr_22
+/* 803138EC 0030F54C 80 E3 00 08 */ lwz r7, 8(r3)
+/* 803138F0 0030F550 39 03 00 0C */ addi r8, r3, 0xc
+/* 803138F4 0030F554 38 00 00 00 */ li r0, 0
+/* 803138F8 0030F558 7C D9 33 78 */ mr r25, r6
+/* 803138FC 0030F55C 91 07 00 34 */ stw r8, 0x34(r7)
+/* 80313900 0030F560 7C 76 1B 78 */ mr r22, r3
+/* 80313904 0030F564 7C 97 23 78 */ mr r23, r4
+/* 80313908 0030F568 7C B8 2B 78 */ mr r24, r5
+/* 8031390C 0030F56C 90 06 00 00 */ stw r0, 0(r6)
+/* 80313910 0030F570 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80313914 0030F574 20 C0 FF FF */ subfic r6, r0, -1
+/* 80313918 0030F578 7C 06 28 40 */ cmplw r6, r5
+/* 8031391C 0030F57C 40 80 00 28 */ bge lbl_80313944
+/* 80313920 0030F580 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80313924 0030F584 38 00 00 25 */ li r0, 0x25
+/* 80313928 0030F588 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 8031392C 0030F58C 7C D8 33 78 */ mr r24, r6
+/* 80313930 0030F590 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80313934 0030F594 80 83 00 08 */ lwz r4, 8(r3)
+/* 80313938 0030F598 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 8031393C 0030F59C 90 04 18 6C */ stw r0, 0x186c(r4)
+/* 80313940 0030F5A0 90 03 00 18 */ stw r0, 0x18(r3)
+lbl_80313944:
+/* 80313944 0030F5A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80313948 0030F5A8 40 82 00 0C */ bne lbl_80313954
+/* 8031394C 0030F5AC 3B A0 00 00 */ li r29, 0
+/* 80313950 0030F5B0 48 00 00 0C */ b lbl_8031395C
+lbl_80313954:
+/* 80313954 0030F5B4 80 63 00 08 */ lwz r3, 8(r3)
+/* 80313958 0030F5B8 83 A3 02 68 */ lwz r29, 0x268(r3)
+lbl_8031395C:
+/* 8031395C 0030F5BC 7F A3 EB 78 */ mr r3, r29
+/* 80313960 0030F5C0 7E C4 B3 78 */ mr r4, r22
+/* 80313964 0030F5C4 7E E5 BB 78 */ mr r5, r23
+/* 80313968 0030F5C8 7F 06 C3 78 */ mr r6, r24
+/* 8031396C 0030F5CC 38 E1 00 18 */ addi r7, r1, 0x18
+/* 80313970 0030F5D0 4B FF F7 F5 */ bl VFiPFFILE_Cursor_WriteHeadSector
+/* 80313974 0030F5D4 80 99 00 00 */ lwz r4, 0(r25)
+/* 80313978 0030F5D8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031397C 0030F5DC 80 01 00 18 */ lwz r0, 0x18(r1)
+/* 80313980 0030F5E0 7C 04 02 14 */ add r0, r4, r0
+/* 80313984 0030F5E4 90 19 00 00 */ stw r0, 0(r25)
+/* 80313988 0030F5E8 41 82 00 08 */ beq lbl_80313990
+/* 8031398C 0030F5EC 48 00 02 C4 */ b lbl_80313C50
+lbl_80313990:
+/* 80313990 0030F5F0 80 01 00 18 */ lwz r0, 0x18(r1)
+/* 80313994 0030F5F4 7C 00 C0 40 */ cmplw r0, r24
+/* 80313998 0030F5F8 41 80 00 0C */ blt lbl_803139A4
+/* 8031399C 0030F5FC 38 60 00 00 */ li r3, 0
+/* 803139A0 0030F600 48 00 02 B0 */ b lbl_80313C50
+lbl_803139A4:
+/* 803139A4 0030F604 80 76 00 08 */ lwz r3, 8(r22)
+/* 803139A8 0030F608 7F 00 C0 50 */ subf r24, r0, r24
+/* 803139AC 0030F60C 80 16 00 1C */ lwz r0, 0x1c(r22)
+/* 803139B0 0030F610 38 A1 00 14 */ addi r5, r1, 0x14
+/* 803139B4 0030F614 38 63 00 04 */ addi r3, r3, 4
+/* 803139B8 0030F618 7C 80 C2 14 */ add r4, r0, r24
+/* 803139BC 0030F61C 4B FF C9 15 */ bl VFiPFFAT_CountAllocatedClusters
+/* 803139C0 0030F620 2C 03 00 00 */ cmpwi r3, 0
+/* 803139C4 0030F624 41 82 00 08 */ beq lbl_803139CC
+/* 803139C8 0030F628 48 00 02 88 */ b lbl_80313C50
+lbl_803139CC:
+/* 803139CC 0030F62C 88 9D 00 20 */ lbz r4, 0x20(r29)
+/* 803139D0 0030F630 88 7D 00 21 */ lbz r3, 0x21(r29)
+/* 803139D4 0030F634 80 16 00 1C */ lwz r0, 0x1c(r22)
+/* 803139D8 0030F638 7C 64 1A 14 */ add r3, r4, r3
+/* 803139DC 0030F63C 80 A1 00 14 */ lwz r5, 0x14(r1)
+/* 803139E0 0030F640 7C 80 C2 14 */ add r4, r0, r24
+/* 803139E4 0030F644 7C A0 18 30 */ slw r0, r5, r3
+/* 803139E8 0030F648 7C 04 00 40 */ cmplw r4, r0
+/* 803139EC 0030F64C 40 81 00 10 */ ble lbl_803139FC
+/* 803139F0 0030F650 7F 40 20 50 */ subf r26, r0, r4
+/* 803139F4 0030F654 7F 7A C0 50 */ subf r27, r26, r24
+/* 803139F8 0030F658 48 00 00 54 */ b lbl_80313A4C
+lbl_803139FC:
+/* 803139FC 0030F65C 7F 1B C3 78 */ mr r27, r24
+/* 80313A00 0030F660 3B 40 00 00 */ li r26, 0
+/* 80313A04 0030F664 48 00 00 48 */ b lbl_80313A4C
+lbl_80313A08:
+/* 80313A08 0030F668 80 19 00 00 */ lwz r0, 0(r25)
+/* 80313A0C 0030F66C 7F A3 EB 78 */ mr r3, r29
+/* 80313A10 0030F670 7E C4 B3 78 */ mr r4, r22
+/* 80313A14 0030F674 7F 66 DB 78 */ mr r6, r27
+/* 80313A18 0030F678 7C B7 02 14 */ add r5, r23, r0
+/* 80313A1C 0030F67C 38 E1 00 18 */ addi r7, r1, 0x18
+/* 80313A20 0030F680 4B FF FC 61 */ bl VFiPFFILE_Cursor_Write_Overwrite
+/* 80313A24 0030F684 80 99 00 00 */ lwz r4, 0(r25)
+/* 80313A28 0030F688 2C 03 00 00 */ cmpwi r3, 0
+/* 80313A2C 0030F68C 80 01 00 18 */ lwz r0, 0x18(r1)
+/* 80313A30 0030F690 7C 04 02 14 */ add r0, r4, r0
+/* 80313A34 0030F694 90 19 00 00 */ stw r0, 0(r25)
+/* 80313A38 0030F698 41 82 00 08 */ beq lbl_80313A40
+/* 80313A3C 0030F69C 48 00 02 14 */ b lbl_80313C50
+lbl_80313A40:
+/* 80313A40 0030F6A0 80 01 00 18 */ lwz r0, 0x18(r1)
+/* 80313A44 0030F6A4 7F 60 D8 50 */ subf r27, r0, r27
+/* 80313A48 0030F6A8 7F 00 C0 50 */ subf r24, r0, r24
+lbl_80313A4C:
+/* 80313A4C 0030F6AC 2C 1B 00 00 */ cmpwi r27, 0
+/* 80313A50 0030F6B0 41 82 00 10 */ beq lbl_80313A60
+/* 80313A54 0030F6B4 A0 1D 00 00 */ lhz r0, 0(r29)
+/* 80313A58 0030F6B8 7C 1B 00 40 */ cmplw r27, r0
+/* 80313A5C 0030F6BC 40 80 FF AC */ bge lbl_80313A08
+lbl_80313A60:
+/* 80313A60 0030F6C0 3B C0 00 00 */ li r30, 0
+/* 80313A64 0030F6C4 3B E0 FF FF */ li r31, -1
+/* 80313A68 0030F6C8 48 00 01 94 */ b lbl_80313BFC
+lbl_80313A6C:
+/* 80313A6C 0030F6CC 80 19 00 00 */ lwz r0, 0(r25)
+/* 80313A70 0030F6D0 7E C3 B3 78 */ mr r3, r22
+/* 80313A74 0030F6D4 7F 44 D3 78 */ mr r4, r26
+/* 80313A78 0030F6D8 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80313A7C 0030F6DC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80313A80 0030F6E0 7F 97 02 14 */ add r28, r23, r0
+/* 80313A84 0030F6E4 38 C1 00 08 */ addi r6, r1, 8
+/* 80313A88 0030F6E8 3B 60 00 00 */ li r27, 0
+/* 80313A8C 0030F6EC 4B FF 73 C9 */ bl VFiPFCLUSTER_AppendCluster
+/* 80313A90 0030F6F0 2C 03 00 00 */ cmpwi r3, 0
+/* 80313A94 0030F6F4 41 82 00 08 */ beq lbl_80313A9C
+/* 80313A98 0030F6F8 48 00 01 2C */ b lbl_80313BC4
+lbl_80313A9C:
+/* 80313A9C 0030F6FC 80 A1 00 08 */ lwz r5, 8(r1)
+/* 80313AA0 0030F700 90 B6 00 20 */ stw r5, 0x20(r22)
+/* 80313AA4 0030F704 80 E1 00 0C */ lwz r7, 0xc(r1)
+/* 80313AA8 0030F708 2C 07 00 00 */ cmpwi r7, 0
+/* 80313AAC 0030F70C 40 82 00 0C */ bne lbl_80313AB8
+/* 80313AB0 0030F710 38 60 00 00 */ li r3, 0
+/* 80313AB4 0030F714 48 00 01 10 */ b lbl_80313BC4
+lbl_80313AB8:
+/* 80313AB8 0030F718 80 01 00 18 */ lwz r0, 0x18(r1)
+/* 80313ABC 0030F71C 7C FB 3B 78 */ mr r27, r7
+/* 80313AC0 0030F720 A0 D6 00 28 */ lhz r6, 0x28(r22)
+/* 80313AC4 0030F724 7F A3 EB 78 */ mr r3, r29
+/* 80313AC8 0030F728 7C 9C 02 14 */ add r4, r28, r0
+/* 80313ACC 0030F72C 39 01 00 10 */ addi r8, r1, 0x10
+/* 80313AD0 0030F730 3B 80 00 00 */ li r28, 0
+/* 80313AD4 0030F734 39 20 00 01 */ li r9, 1
+/* 80313AD8 0030F738 48 00 53 11 */ bl VFiPFSEC_WriteData
+/* 80313ADC 0030F73C 2C 03 00 00 */ cmpwi r3, 0
+/* 80313AE0 0030F740 41 82 00 14 */ beq lbl_80313AF4
+/* 80313AE4 0030F744 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 80313AE8 0030F748 2C 00 00 00 */ cmpwi r0, 0
+/* 80313AEC 0030F74C 40 82 00 08 */ bne lbl_80313AF4
+/* 80313AF0 0030F750 48 00 00 B8 */ b lbl_80313BA8
+lbl_80313AF4:
+/* 80313AF4 0030F754 2C 16 00 00 */ cmpwi r22, 0
+/* 80313AF8 0030F758 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 80313AFC 0030F75C 80 B6 00 20 */ lwz r5, 0x20(r22)
+/* 80313B00 0030F760 40 82 00 0C */ bne lbl_80313B0C
+/* 80313B04 0030F764 38 80 00 00 */ li r4, 0
+/* 80313B08 0030F768 48 00 00 0C */ b lbl_80313B14
+lbl_80313B0C:
+/* 80313B0C 0030F76C 80 76 00 08 */ lwz r3, 8(r22)
+/* 80313B10 0030F770 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80313B14:
+/* 80313B14 0030F774 A0 16 00 28 */ lhz r0, 0x28(r22)
+/* 80313B18 0030F778 A0 64 00 00 */ lhz r3, 0(r4)
+/* 80313B1C 0030F77C 7C C0 E2 14 */ add r6, r0, r28
+/* 80313B20 0030F780 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 80313B24 0030F784 38 03 FF FF */ addi r0, r3, -1
+/* 80313B28 0030F788 7C 00 30 39 */ and. r0, r0, r6
+/* 80313B2C 0030F78C 7C C0 24 30 */ srw r0, r6, r4
+/* 80313B30 0030F790 7C 85 02 14 */ add r4, r5, r0
+/* 80313B34 0030F794 41 82 00 0C */ beq lbl_80313B40
+/* 80313B38 0030F798 90 96 00 20 */ stw r4, 0x20(r22)
+/* 80313B3C 0030F79C 48 00 00 08 */ b lbl_80313B44
+lbl_80313B40:
+/* 80313B40 0030F7A0 93 F6 00 20 */ stw r31, 0x20(r22)
+lbl_80313B44:
+/* 80313B44 0030F7A4 80 16 00 1C */ lwz r0, 0x1c(r22)
+/* 80313B48 0030F7A8 80 76 00 08 */ lwz r3, 8(r22)
+/* 80313B4C 0030F7AC 7C A0 E2 14 */ add r5, r0, r28
+/* 80313B50 0030F7B0 90 B6 00 1C */ stw r5, 0x1c(r22)
+/* 80313B54 0030F7B4 80 03 02 64 */ lwz r0, 0x264(r3)
+/* 80313B58 0030F7B8 7C 05 00 40 */ cmplw r5, r0
+/* 80313B5C 0030F7BC 40 81 00 08 */ ble lbl_80313B64
+/* 80313B60 0030F7C0 90 A3 02 64 */ stw r5, 0x264(r3)
+lbl_80313B64:
+/* 80313B64 0030F7C4 2C 16 00 00 */ cmpwi r22, 0
+/* 80313B68 0030F7C8 40 82 00 0C */ bne lbl_80313B74
+/* 80313B6C 0030F7CC 38 A0 00 00 */ li r5, 0
+/* 80313B70 0030F7D0 48 00 00 0C */ b lbl_80313B7C
+lbl_80313B74:
+/* 80313B74 0030F7D4 80 76 00 08 */ lwz r3, 8(r22)
+/* 80313B78 0030F7D8 80 A3 02 68 */ lwz r5, 0x268(r3)
+lbl_80313B7C:
+/* 80313B7C 0030F7DC 80 D6 00 1C */ lwz r6, 0x1c(r22)
+/* 80313B80 0030F7E0 7E C3 B3 78 */ mr r3, r22
+/* 80313B84 0030F7E4 88 05 00 20 */ lbz r0, 0x20(r5)
+/* 80313B88 0030F7E8 7C C0 04 30 */ srw r0, r6, r0
+/* 80313B8C 0030F7EC 90 16 00 24 */ stw r0, 0x24(r22)
+/* 80313B90 0030F7F0 A0 A5 00 00 */ lhz r5, 0(r5)
+/* 80313B94 0030F7F4 38 05 FF FF */ addi r0, r5, -1
+/* 80313B98 0030F7F8 7C C0 00 38 */ and r0, r6, r0
+/* 80313B9C 0030F7FC B0 16 00 28 */ sth r0, 0x28(r22)
+/* 80313BA0 0030F800 4B FF 71 E1 */ bl VFiPFCLUSTER_UpdateLastAccessCluster
+/* 80313BA4 0030F804 38 60 00 00 */ li r3, 0
+lbl_80313BA8:
+/* 80313BA8 0030F808 80 81 00 18 */ lwz r4, 0x18(r1)
+/* 80313BAC 0030F80C 7C 03 00 D0 */ neg r0, r3
+/* 80313BB0 0030F810 7C 00 1B 78 */ or r0, r0, r3
+/* 80313BB4 0030F814 7C 84 E2 14 */ add r4, r4, r28
+/* 80313BB8 0030F818 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 80313BBC 0030F81C 90 81 00 18 */ stw r4, 0x18(r1)
+/* 80313BC0 0030F820 7C 63 00 38 */ and r3, r3, r0
+lbl_80313BC4:
+/* 80313BC4 0030F824 80 99 00 00 */ lwz r4, 0(r25)
+/* 80313BC8 0030F828 2C 03 00 00 */ cmpwi r3, 0
+/* 80313BCC 0030F82C 80 01 00 18 */ lwz r0, 0x18(r1)
+/* 80313BD0 0030F830 7C 04 02 14 */ add r0, r4, r0
+/* 80313BD4 0030F834 90 19 00 00 */ stw r0, 0(r25)
+/* 80313BD8 0030F838 41 82 00 08 */ beq lbl_80313BE0
+/* 80313BDC 0030F83C 48 00 00 74 */ b lbl_80313C50
+lbl_80313BE0:
+/* 80313BE0 0030F840 2C 1B 00 00 */ cmpwi r27, 0
+/* 80313BE4 0030F844 40 82 00 0C */ bne lbl_80313BF0
+/* 80313BE8 0030F848 38 60 00 00 */ li r3, 0
+/* 80313BEC 0030F84C 48 00 00 64 */ b lbl_80313C50
+lbl_80313BF0:
+/* 80313BF0 0030F850 80 01 00 18 */ lwz r0, 0x18(r1)
+/* 80313BF4 0030F854 7F 5B D0 50 */ subf r26, r27, r26
+/* 80313BF8 0030F858 7F 00 C0 50 */ subf r24, r0, r24
+lbl_80313BFC:
+/* 80313BFC 0030F85C 2C 1A 00 00 */ cmpwi r26, 0
+/* 80313C00 0030F860 41 82 00 10 */ beq lbl_80313C10
+/* 80313C04 0030F864 A0 1D 00 00 */ lhz r0, 0(r29)
+/* 80313C08 0030F868 7C 18 00 40 */ cmplw r24, r0
+/* 80313C0C 0030F86C 40 80 FE 60 */ bge lbl_80313A6C
+lbl_80313C10:
+/* 80313C10 0030F870 80 19 00 00 */ lwz r0, 0(r25)
+/* 80313C14 0030F874 7F A3 EB 78 */ mr r3, r29
+/* 80313C18 0030F878 7E C4 B3 78 */ mr r4, r22
+/* 80313C1C 0030F87C 7F 06 C3 78 */ mr r6, r24
+/* 80313C20 0030F880 7F 47 D3 78 */ mr r7, r26
+/* 80313C24 0030F884 7C B7 02 14 */ add r5, r23, r0
+/* 80313C28 0030F888 39 01 00 18 */ addi r8, r1, 0x18
+/* 80313C2C 0030F88C 4B FF F7 91 */ bl VFiPFFILE_Cursor_WriteTailSector
+/* 80313C30 0030F890 80 99 00 00 */ lwz r4, 0(r25)
+/* 80313C34 0030F894 2C 03 00 00 */ cmpwi r3, 0
+/* 80313C38 0030F898 80 01 00 18 */ lwz r0, 0x18(r1)
+/* 80313C3C 0030F89C 7C 04 02 14 */ add r0, r4, r0
+/* 80313C40 0030F8A0 90 19 00 00 */ stw r0, 0(r25)
+/* 80313C44 0030F8A4 41 82 00 08 */ beq lbl_80313C4C
+/* 80313C48 0030F8A8 48 00 00 08 */ b lbl_80313C50
+lbl_80313C4C:
+/* 80313C4C 0030F8AC 38 60 00 00 */ li r3, 0
+lbl_80313C50:
+/* 80313C50 0030F8B0 39 61 00 50 */ addi r11, r1, 0x50
+/* 80313C54 0030F8B4 4B EB 35 0D */ bl _restgpr_22
+/* 80313C58 0030F8B8 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 80313C5C 0030F8BC 7C 08 03 A6 */ mtlr r0
+/* 80313C60 0030F8C0 38 21 00 50 */ addi r1, r1, 0x50
+/* 80313C64 0030F8C4 4E 80 00 20 */ blr
+
+.global VFiPFFILE_Cursor_MoveToClusterEnd
+VFiPFFILE_Cursor_MoveToClusterEnd:
+/* 80313C68 0030F8C8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80313C6C 0030F8CC 7C 08 02 A6 */ mflr r0
+/* 80313C70 0030F8D0 2C 03 00 00 */ cmpwi r3, 0
+/* 80313C74 0030F8D4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80313C78 0030F8D8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80313C7C 0030F8DC 7C 7F 1B 78 */ mr r31, r3
+/* 80313C80 0030F8E0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80313C84 0030F8E4 40 82 00 0C */ bne lbl_80313C90
+/* 80313C88 0030F8E8 3B C0 00 00 */ li r30, 0
+/* 80313C8C 0030F8EC 48 00 00 0C */ b lbl_80313C98
+lbl_80313C90:
+/* 80313C90 0030F8F0 80 A3 00 08 */ lwz r5, 8(r3)
+/* 80313C94 0030F8F4 83 C5 02 68 */ lwz r30, 0x268(r5)
+lbl_80313C98:
+/* 80313C98 0030F8F8 80 63 00 08 */ lwz r3, 8(r3)
+/* 80313C9C 0030F8FC 38 A1 00 08 */ addi r5, r1, 8
+/* 80313CA0 0030F900 38 63 00 04 */ addi r3, r3, 4
+/* 80313CA4 0030F904 4B FF C6 2D */ bl VFiPFFAT_CountAllocatedClusters
+/* 80313CA8 0030F908 88 9E 00 20 */ lbz r4, 0x20(r30)
+/* 80313CAC 0030F90C 38 00 FF FF */ li r0, -1
+/* 80313CB0 0030F910 88 7E 00 21 */ lbz r3, 0x21(r30)
+/* 80313CB4 0030F914 80 A1 00 08 */ lwz r5, 8(r1)
+/* 80313CB8 0030F918 7C 64 1A 14 */ add r3, r4, r3
+/* 80313CBC 0030F91C 7C 00 1C 30 */ srw r0, r0, r3
+/* 80313CC0 0030F920 7C 05 00 40 */ cmplw r5, r0
+/* 80313CC4 0030F924 40 81 00 AC */ ble lbl_80313D70
+/* 80313CC8 0030F928 2C 1F 00 00 */ cmpwi r31, 0
+/* 80313CCC 0030F92C 40 82 00 0C */ bne lbl_80313CD8
+/* 80313CD0 0030F930 38 A0 00 00 */ li r5, 0
+/* 80313CD4 0030F934 48 00 00 0C */ b lbl_80313CE0
+lbl_80313CD8:
+/* 80313CD8 0030F938 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313CDC 0030F93C 80 A3 02 68 */ lwz r5, 0x268(r3)
+lbl_80313CE0:
+/* 80313CE0 0030F940 A0 65 00 00 */ lhz r3, 0(r5)
+/* 80313CE4 0030F944 38 80 FF FF */ li r4, -1
+/* 80313CE8 0030F948 80 FF 00 1C */ lwz r7, 0x1c(r31)
+/* 80313CEC 0030F94C 39 03 FF FF */ addi r8, r3, -1
+/* 80313CF0 0030F950 89 25 00 20 */ lbz r9, 0x20(r5)
+/* 80313CF4 0030F954 7C E5 40 38 */ and r5, r7, r8
+/* 80313CF8 0030F958 7C 65 00 D0 */ neg r3, r5
+/* 80313CFC 0030F95C 7C 08 00 D0 */ neg r0, r8
+/* 80313D00 0030F960 7C 66 2B 78 */ or r6, r3, r5
+/* 80313D04 0030F964 7C E5 4C 30 */ srw r5, r7, r9
+/* 80313D08 0030F968 7C 00 43 78 */ or r0, r0, r8
+/* 80313D0C 0030F96C 7C 83 4C 30 */ srw r3, r4, r9
+/* 80313D10 0030F970 54 C6 0F FE */ srwi r6, r6, 0x1f
+/* 80313D14 0030F974 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80313D18 0030F978 7C A5 32 14 */ add r5, r5, r6
+/* 80313D1C 0030F97C 7C 03 02 14 */ add r0, r3, r0
+/* 80313D20 0030F980 7C 05 00 40 */ cmplw r5, r0
+/* 80313D24 0030F984 41 82 00 08 */ beq lbl_80313D2C
+/* 80313D28 0030F988 90 9F 00 20 */ stw r4, 0x20(r31)
+lbl_80313D2C:
+/* 80313D2C 0030F98C 38 00 FF FF */ li r0, -1
+/* 80313D30 0030F990 2C 1F 00 00 */ cmpwi r31, 0
+/* 80313D34 0030F994 90 1F 00 1C */ stw r0, 0x1c(r31)
+/* 80313D38 0030F998 40 82 00 0C */ bne lbl_80313D44
+/* 80313D3C 0030F99C 38 60 00 00 */ li r3, 0
+/* 80313D40 0030F9A0 48 00 00 0C */ b lbl_80313D4C
+lbl_80313D44:
+/* 80313D44 0030F9A4 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313D48 0030F9A8 80 63 02 68 */ lwz r3, 0x268(r3)
+lbl_80313D4C:
+/* 80313D4C 0030F9AC 80 9F 00 1C */ lwz r4, 0x1c(r31)
+/* 80313D50 0030F9B0 88 03 00 20 */ lbz r0, 0x20(r3)
+/* 80313D54 0030F9B4 7C 80 04 30 */ srw r0, r4, r0
+/* 80313D58 0030F9B8 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 80313D5C 0030F9BC A0 63 00 00 */ lhz r3, 0(r3)
+/* 80313D60 0030F9C0 38 03 FF FF */ addi r0, r3, -1
+/* 80313D64 0030F9C4 7C 80 00 38 */ and r0, r4, r0
+/* 80313D68 0030F9C8 B0 1F 00 28 */ sth r0, 0x28(r31)
+/* 80313D6C 0030F9CC 48 00 00 AC */ b lbl_80313E18
+lbl_80313D70:
+/* 80313D70 0030F9D0 2C 1F 00 00 */ cmpwi r31, 0
+/* 80313D74 0030F9D4 7C A8 18 30 */ slw r8, r5, r3
+/* 80313D78 0030F9D8 40 82 00 0C */ bne lbl_80313D84
+/* 80313D7C 0030F9DC 38 80 00 00 */ li r4, 0
+/* 80313D80 0030F9E0 48 00 00 0C */ b lbl_80313D8C
+lbl_80313D84:
+/* 80313D84 0030F9E4 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313D88 0030F9E8 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80313D8C:
+/* 80313D8C 0030F9EC A0 64 00 00 */ lhz r3, 0(r4)
+/* 80313D90 0030F9F0 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80313D94 0030F9F4 38 63 FF FF */ addi r3, r3, -1
+/* 80313D98 0030F9F8 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 80313D9C 0030F9FC 7C 07 18 38 */ and r7, r0, r3
+/* 80313DA0 0030FA00 7C 05 24 30 */ srw r5, r0, r4
+/* 80313DA4 0030FA04 7D 03 18 38 */ and r3, r8, r3
+/* 80313DA8 0030FA08 7C C7 00 D0 */ neg r6, r7
+/* 80313DAC 0030FA0C 7D 04 24 30 */ srw r4, r8, r4
+/* 80313DB0 0030FA10 7C 03 00 D0 */ neg r0, r3
+/* 80313DB4 0030FA14 7C 00 1B 78 */ or r0, r0, r3
+/* 80313DB8 0030FA18 7C C6 3B 78 */ or r6, r6, r7
+/* 80313DBC 0030FA1C 54 C3 0F FE */ srwi r3, r6, 0x1f
+/* 80313DC0 0030FA20 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80313DC4 0030FA24 7C 65 1A 14 */ add r3, r5, r3
+/* 80313DC8 0030FA28 7C 04 02 14 */ add r0, r4, r0
+/* 80313DCC 0030FA2C 7C 03 00 40 */ cmplw r3, r0
+/* 80313DD0 0030FA30 41 82 00 0C */ beq lbl_80313DDC
+/* 80313DD4 0030FA34 38 00 FF FF */ li r0, -1
+/* 80313DD8 0030FA38 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_80313DDC:
+/* 80313DDC 0030FA3C 2C 1F 00 00 */ cmpwi r31, 0
+/* 80313DE0 0030FA40 91 1F 00 1C */ stw r8, 0x1c(r31)
+/* 80313DE4 0030FA44 40 82 00 0C */ bne lbl_80313DF0
+/* 80313DE8 0030FA48 38 60 00 00 */ li r3, 0
+/* 80313DEC 0030FA4C 48 00 00 0C */ b lbl_80313DF8
+lbl_80313DF0:
+/* 80313DF0 0030FA50 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80313DF4 0030FA54 80 63 02 68 */ lwz r3, 0x268(r3)
+lbl_80313DF8:
+/* 80313DF8 0030FA58 80 9F 00 1C */ lwz r4, 0x1c(r31)
+/* 80313DFC 0030FA5C 88 03 00 20 */ lbz r0, 0x20(r3)
+/* 80313E00 0030FA60 7C 80 04 30 */ srw r0, r4, r0
+/* 80313E04 0030FA64 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 80313E08 0030FA68 A0 63 00 00 */ lhz r3, 0(r3)
+/* 80313E0C 0030FA6C 38 03 FF FF */ addi r0, r3, -1
+/* 80313E10 0030FA70 7C 80 00 38 */ and r0, r4, r0
+/* 80313E14 0030FA74 B0 1F 00 28 */ sth r0, 0x28(r31)
+lbl_80313E18:
+/* 80313E18 0030FA78 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80313E1C 0030FA7C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80313E20 0030FA80 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80313E24 0030FA84 7C 08 03 A6 */ mtlr r0
+/* 80313E28 0030FA88 38 21 00 20 */ addi r1, r1, 0x20
+/* 80313E2C 0030FA8C 4E 80 00 20 */ blr
+
+.global VFiPFFILE_GetSFD
+VFiPFFILE_GetSFD:
+/* 80313E30 0030FA90 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80313E34 0030FA94 7C 08 02 A6 */ mflr r0
+/* 80313E38 0030FA98 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80313E3C 0030FA9C 39 61 00 20 */ addi r11, r1, 0x20
+/* 80313E40 0030FAA0 4B EB 32 E9 */ bl _savegpr_27
+/* 80313E44 0030FAA4 7C 7C 1B 78 */ mr r28, r3
+/* 80313E48 0030FAA8 38 00 00 05 */ li r0, 5
+/* 80313E4C 0030FAAC 7C 9D 23 78 */ mr r29, r4
+/* 80313E50 0030FAB0 38 E3 00 40 */ addi r7, r3, 0x40
+/* 80313E54 0030FAB4 7F 86 E3 78 */ mr r6, r28
+/* 80313E58 0030FAB8 3B E0 00 00 */ li r31, 0
+/* 80313E5C 0030FABC 3B C0 00 00 */ li r30, 0
+/* 80313E60 0030FAC0 39 00 00 00 */ li r8, 0
+/* 80313E64 0030FAC4 7C 09 03 A6 */ mtctr r0
+lbl_80313E68:
+/* 80313E68 0030FAC8 80 06 00 40 */ lwz r0, 0x40(r6)
+/* 80313E6C 0030FACC 54 05 07 FF */ clrlwi. r5, r0, 0x1f
+/* 80313E70 0030FAD0 41 82 00 14 */ beq lbl_80313E84
+/* 80313E74 0030FAD4 41 82 00 24 */ beq lbl_80313E98
+/* 80313E78 0030FAD8 7C 00 00 34 */ cntlzw r0, r0
+/* 80313E7C 0030FADC 54 00 DF BD */ rlwinm. r0, r0, 0x1b, 0x1e, 0x1e
+/* 80313E80 0030FAE0 41 82 00 18 */ beq lbl_80313E98
+lbl_80313E84:
+/* 80313E84 0030FAE4 2C 1E 00 00 */ cmpwi r30, 0
+/* 80313E88 0030FAE8 40 82 00 5C */ bne lbl_80313EE4
+/* 80313E8C 0030FAEC 7C FE 3B 78 */ mr r30, r7
+/* 80313E90 0030FAF0 7D 1F 43 78 */ mr r31, r8
+/* 80313E94 0030FAF4 48 00 00 50 */ b lbl_80313EE4
+lbl_80313E98:
+/* 80313E98 0030FAF8 80 A4 02 2C */ lwz r5, 0x22c(r4)
+/* 80313E9C 0030FAFC 80 06 02 A8 */ lwz r0, 0x2a8(r6)
+/* 80313EA0 0030FB00 7C 05 00 40 */ cmplw r5, r0
+/* 80313EA4 0030FB04 40 82 00 40 */ bne lbl_80313EE4
+/* 80313EA8 0030FB08 80 A4 02 38 */ lwz r5, 0x238(r4)
+/* 80313EAC 0030FB0C 80 06 02 B4 */ lwz r0, 0x2b4(r6)
+/* 80313EB0 0030FB10 7C 05 00 40 */ cmplw r5, r0
+/* 80313EB4 0030FB14 40 82 00 30 */ bne lbl_80313EE4
+/* 80313EB8 0030FB18 A0 A4 02 3C */ lhz r5, 0x23c(r4)
+/* 80313EBC 0030FB1C A0 06 02 B8 */ lhz r0, 0x2b8(r6)
+/* 80313EC0 0030FB20 7C 05 00 40 */ cmplw r5, r0
+/* 80313EC4 0030FB24 40 82 00 20 */ bne lbl_80313EE4
+/* 80313EC8 0030FB28 1C 08 02 90 */ mulli r0, r8, 0x290
+/* 80313ECC 0030FB2C 7C A3 02 14 */ add r5, r3, r0
+/* 80313ED0 0030FB30 A0 85 02 CC */ lhz r4, 0x2cc(r5)
+/* 80313ED4 0030FB34 38 65 00 40 */ addi r3, r5, 0x40
+/* 80313ED8 0030FB38 38 04 00 01 */ addi r0, r4, 1
+/* 80313EDC 0030FB3C B0 05 02 CC */ sth r0, 0x2cc(r5)
+/* 80313EE0 0030FB40 48 00 01 08 */ b lbl_80313FE8
+lbl_80313EE4:
+/* 80313EE4 0030FB44 38 C6 02 90 */ addi r6, r6, 0x290
+/* 80313EE8 0030FB48 38 E7 02 90 */ addi r7, r7, 0x290
+/* 80313EEC 0030FB4C 39 08 00 01 */ addi r8, r8, 1
+/* 80313EF0 0030FB50 42 00 FF 78 */ bdnz lbl_80313E68
+/* 80313EF4 0030FB54 2C 1E 00 00 */ cmpwi r30, 0
+/* 80313EF8 0030FB58 40 82 00 0C */ bne lbl_80313F04
+/* 80313EFC 0030FB5C 38 60 00 00 */ li r3, 0
+/* 80313F00 0030FB60 48 00 00 E8 */ b lbl_80313FE8
+lbl_80313F04:
+/* 80313F04 0030FB64 38 00 00 03 */ li r0, 3
+/* 80313F08 0030FB68 38 60 00 01 */ li r3, 1
+/* 80313F0C 0030FB6C 90 1E 00 00 */ stw r0, 0(r30)
+/* 80313F10 0030FB70 38 00 00 48 */ li r0, 0x48
+/* 80313F14 0030FB74 38 BE 00 38 */ addi r5, r30, 0x38
+/* 80313F18 0030FB78 38 84 FF FC */ addi r4, r4, -4
+/* 80313F1C 0030FB7C B0 7E 02 8C */ sth r3, 0x28c(r30)
+/* 80313F20 0030FB80 7C 09 03 A6 */ mtctr r0
+lbl_80313F24:
+/* 80313F24 0030FB84 80 64 00 04 */ lwz r3, 4(r4)
+/* 80313F28 0030FB88 84 04 00 08 */ lwzu r0, 8(r4)
+/* 80313F2C 0030FB8C 90 65 00 04 */ stw r3, 4(r5)
+/* 80313F30 0030FB90 94 05 00 08 */ stwu r0, 8(r5)
+/* 80313F34 0030FB94 42 00 FF F0 */ bdnz lbl_80313F24
+/* 80313F38 0030FB98 3B 60 00 00 */ li r27, 0
+/* 80313F3C 0030FB9C 38 7E 00 04 */ addi r3, r30, 4
+/* 80313F40 0030FBA0 B3 7E 02 7C */ sth r27, 0x27c(r30)
+/* 80313F44 0030FBA4 38 DE 02 70 */ addi r6, r30, 0x270
+/* 80313F48 0030FBA8 38 80 00 00 */ li r4, 0
+/* 80313F4C 0030FBAC B3 7E 02 7E */ sth r27, 0x27e(r30)
+/* 80313F50 0030FBB0 93 7E 02 80 */ stw r27, 0x280(r30)
+/* 80313F54 0030FBB4 93 7E 02 84 */ stw r27, 0x284(r30)
+/* 80313F58 0030FBB8 93 7E 02 88 */ stw r27, 0x288(r30)
+/* 80313F5C 0030FBBC 80 BD 02 2C */ lwz r5, 0x22c(r29)
+/* 80313F60 0030FBC0 4B FF D1 69 */ bl VFiPFFAT_InitFFD
+/* 80313F64 0030FBC4 A0 1C 18 80 */ lhz r0, 0x1880(r28)
+/* 80313F68 0030FBC8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80313F6C 0030FBCC 41 82 00 78 */ beq lbl_80313FE4
+/* 80313F70 0030FBD0 80 1C 18 88 */ lwz r0, 0x1888(r28)
+/* 80313F74 0030FBD4 38 80 00 00 */ li r4, 0
+/* 80313F78 0030FBD8 80 7C 18 84 */ lwz r3, 0x1884(r28)
+/* 80313F7C 0030FBDC 7C 1F 01 D6 */ mullw r0, r31, r0
+/* 80313F80 0030FBE0 54 00 10 3A */ slwi r0, r0, 2
+/* 80313F84 0030FBE4 7C 63 02 14 */ add r3, r3, r0
+/* 80313F88 0030FBE8 90 7E 00 20 */ stw r3, 0x20(r30)
+/* 80313F8C 0030FBEC 80 1C 18 88 */ lwz r0, 0x1888(r28)
+/* 80313F90 0030FBF0 54 05 10 3A */ slwi r5, r0, 2
+/* 80313F94 0030FBF4 4B FF 10 41 */ bl VFipf_memset
+/* 80313F98 0030FBF8 80 1C 18 88 */ lwz r0, 0x1888(r28)
+/* 80313F9C 0030FBFC 90 1E 00 2C */ stw r0, 0x2c(r30)
+/* 80313FA0 0030FC00 A0 1C 18 82 */ lhz r0, 0x1882(r28)
+/* 80313FA4 0030FC04 B0 1E 00 24 */ sth r0, 0x24(r30)
+/* 80313FA8 0030FC08 B3 7E 00 26 */ sth r27, 0x26(r30)
+/* 80313FAC 0030FC0C 93 7E 00 28 */ stw r27, 0x28(r30)
+/* 80313FB0 0030FC10 93 7E 00 30 */ stw r27, 0x30(r30)
+/* 80313FB4 0030FC14 80 1D 02 28 */ lwz r0, 0x228(r29)
+/* 80313FB8 0030FC18 2C 00 00 00 */ cmpwi r0, 0
+/* 80313FBC 0030FC1C 41 82 00 28 */ beq lbl_80313FE4
+/* 80313FC0 0030FC20 80 1E 00 2C */ lwz r0, 0x2c(r30)
+/* 80313FC4 0030FC24 2C 00 00 00 */ cmpwi r0, 0
+/* 80313FC8 0030FC28 41 82 00 1C */ beq lbl_80313FE4
+/* 80313FCC 0030FC2C 80 1D 02 34 */ lwz r0, 0x234(r29)
+/* 80313FD0 0030FC30 80 7E 00 20 */ lwz r3, 0x20(r30)
+/* 80313FD4 0030FC34 90 03 00 00 */ stw r0, 0(r3)
+/* 80313FD8 0030FC38 80 7E 00 28 */ lwz r3, 0x28(r30)
+/* 80313FDC 0030FC3C 38 03 00 01 */ addi r0, r3, 1
+/* 80313FE0 0030FC40 90 1E 00 28 */ stw r0, 0x28(r30)
+lbl_80313FE4:
+/* 80313FE4 0030FC44 7F C3 F3 78 */ mr r3, r30
+lbl_80313FE8:
+/* 80313FE8 0030FC48 39 61 00 20 */ addi r11, r1, 0x20
+/* 80313FEC 0030FC4C 4B EB 31 89 */ bl _restgpr_27
+/* 80313FF0 0030FC50 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80313FF4 0030FC54 7C 08 03 A6 */ mtlr r0
+/* 80313FF8 0030FC58 38 21 00 20 */ addi r1, r1, 0x20
+/* 80313FFC 0030FC5C 4E 80 00 20 */ blr
+
+.global VFiPFFILE_createEmptyFile
+VFiPFFILE_createEmptyFile:
+/* 80314000 0030FC60 94 21 FD 20 */ stwu r1, -0x2e0(r1)
+/* 80314004 0030FC64 7C 08 02 A6 */ mflr r0
+/* 80314008 0030FC68 90 01 02 E4 */ stw r0, 0x2e4(r1)
+/* 8031400C 0030FC6C 39 61 02 E0 */ addi r11, r1, 0x2e0
+/* 80314010 0030FC70 4B EB 31 0D */ bl _savegpr_24
+/* 80314014 0030FC74 38 00 00 48 */ li r0, 0x48
+/* 80314018 0030FC78 7C 9D 23 78 */ mr r29, r4
+/* 8031401C 0030FC7C 7C BE 2B 78 */ mr r30, r5
+/* 80314020 0030FC80 7C 7C 1B 78 */ mr r28, r3
+/* 80314024 0030FC84 7C DF 33 78 */ mr r31, r6
+/* 80314028 0030FC88 38 A1 00 7C */ addi r5, r1, 0x7c
+/* 8031402C 0030FC8C 38 84 FF FC */ addi r4, r4, -4
+/* 80314030 0030FC90 7C 09 03 A6 */ mtctr r0
+lbl_80314034:
+/* 80314034 0030FC94 80 64 00 04 */ lwz r3, 4(r4)
+/* 80314038 0030FC98 84 04 00 08 */ lwzu r0, 8(r4)
+/* 8031403C 0030FC9C 90 65 00 04 */ stw r3, 4(r5)
+/* 80314040 0030FCA0 94 05 00 08 */ stwu r0, 8(r5)
+/* 80314044 0030FCA4 42 00 FF F0 */ bdnz lbl_80314034
+/* 80314048 0030FCA8 80 A1 02 AC */ lwz r5, 0x2ac(r1)
+/* 8031404C 0030FCAC 38 61 00 48 */ addi r3, r1, 0x48
+/* 80314050 0030FCB0 38 81 00 18 */ addi r4, r1, 0x18
+/* 80314054 0030FCB4 38 C1 02 B4 */ addi r6, r1, 0x2b4
+/* 80314058 0030FCB8 4B FF D0 71 */ bl VFiPFFAT_InitFFD
+/* 8031405C 0030FCBC 80 1C 15 E0 */ lwz r0, 0x15e0(r28)
+/* 80314060 0030FCC0 2C 00 00 05 */ cmpwi r0, 5
+/* 80314064 0030FCC4 41 80 00 0C */ blt lbl_80314070
+/* 80314068 0030FCC8 38 60 00 15 */ li r3, 0x15
+/* 8031406C 0030FCCC 48 00 02 90 */ b lbl_803142FC
+lbl_80314070:
+/* 80314070 0030FCD0 7F C4 F3 78 */ mr r4, r30
+/* 80314074 0030FCD4 38 7D 02 0E */ addi r3, r29, 0x20e
+/* 80314078 0030FCD8 48 00 3A 2D */ bl VFiPFPATH_parseShortName
+/* 8031407C 0030FCDC 2C 03 00 00 */ cmpwi r3, 0
+/* 80314080 0030FCE0 41 82 00 18 */ beq lbl_80314098
+/* 80314084 0030FCE4 88 1D 02 0E */ lbz r0, 0x20e(r29)
+/* 80314088 0030FCE8 7C 00 07 75 */ extsb. r0, r0
+/* 8031408C 0030FCEC 40 82 00 0C */ bne lbl_80314098
+/* 80314090 0030FCF0 38 60 00 01 */ li r3, 1
+/* 80314094 0030FCF4 48 00 02 68 */ b lbl_803142FC
+lbl_80314098:
+/* 80314098 0030FCF8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031409C 0030FCFC 41 82 00 64 */ beq lbl_80314100
+/* 803140A0 0030FD00 38 61 00 80 */ addi r3, r1, 0x80
+/* 803140A4 0030FD04 38 9D 02 0E */ addi r4, r29, 0x20e
+/* 803140A8 0030FD08 4B FF 89 F5 */ bl VFiPFENT_AdjustSFN
+/* 803140AC 0030FD0C 2C 03 00 00 */ cmpwi r3, 0
+/* 803140B0 0030FD10 41 82 00 08 */ beq lbl_803140B8
+/* 803140B4 0030FD14 48 00 02 48 */ b lbl_803142FC
+lbl_803140B8:
+/* 803140B8 0030FD18 7F C3 F3 78 */ mr r3, r30
+/* 803140BC 0030FD1C 4B FF 12 25 */ bl VFiPFSTR_GetCodeMode
+/* 803140C0 0030FD20 28 03 00 01 */ cmplwi r3, 1
+/* 803140C4 0030FD24 40 82 00 20 */ bne lbl_803140E4
+/* 803140C8 0030FD28 7F C3 F3 78 */ mr r3, r30
+/* 803140CC 0030FD2C 38 80 00 01 */ li r4, 1
+/* 803140D0 0030FD30 4B FF 12 41 */ bl VFiPFSTR_GetStrPos
+/* 803140D4 0030FD34 7C 64 1B 78 */ mr r4, r3
+/* 803140D8 0030FD38 7F A3 EB 78 */ mr r3, r29
+/* 803140DC 0030FD3C 48 00 39 31 */ bl VFiPFPATH_transformInUnicode
+/* 803140E0 0030FD40 48 00 00 28 */ b lbl_80314108
+lbl_803140E4:
+/* 803140E4 0030FD44 7F C3 F3 78 */ mr r3, r30
+/* 803140E8 0030FD48 38 80 00 01 */ li r4, 1
+/* 803140EC 0030FD4C 4B FF 12 25 */ bl VFiPFSTR_GetStrPos
+/* 803140F0 0030FD50 7C 64 1B 78 */ mr r4, r3
+/* 803140F4 0030FD54 7F A3 EB 78 */ mr r3, r29
+/* 803140F8 0030FD58 4B FF 17 8D */ bl VFipf_w_strcpy
+/* 803140FC 0030FD5C 48 00 00 0C */ b lbl_80314108
+lbl_80314100:
+/* 80314100 0030FD60 38 00 00 00 */ li r0, 0
+/* 80314104 0030FD64 B0 1D 00 00 */ sth r0, 0(r29)
+lbl_80314108:
+/* 80314108 0030FD68 80 1C 00 1C */ lwz r0, 0x1c(r28)
+/* 8031410C 0030FD6C 2C 00 00 02 */ cmpwi r0, 2
+/* 80314110 0030FD70 40 82 00 10 */ bne lbl_80314120
+/* 80314114 0030FD74 38 00 00 01 */ li r0, 1
+/* 80314118 0030FD78 90 1D 02 34 */ stw r0, 0x234(r29)
+/* 8031411C 0030FD7C 48 00 00 0C */ b lbl_80314128
+lbl_80314120:
+/* 80314120 0030FD80 38 00 00 00 */ li r0, 0
+/* 80314124 0030FD84 90 1D 02 34 */ stw r0, 0x234(r29)
+lbl_80314128:
+/* 80314128 0030FD88 38 A0 00 00 */ li r5, 0
+/* 8031412C 0030FD8C 38 00 00 20 */ li r0, 0x20
+/* 80314130 0030FD90 90 BD 02 28 */ stw r5, 0x228(r29)
+/* 80314134 0030FD94 38 7D 02 20 */ addi r3, r29, 0x220
+/* 80314138 0030FD98 38 9D 02 1E */ addi r4, r29, 0x21e
+/* 8031413C 0030FD9C 93 9D 02 2C */ stw r28, 0x22c(r29)
+/* 80314140 0030FDA0 98 BD 02 1B */ stb r5, 0x21b(r29)
+/* 80314144 0030FDA4 98 1D 02 1C */ stb r0, 0x21c(r29)
+/* 80314148 0030FDA8 4B FF 8A 31 */ bl VFiPFENT_getcurrentDateTimeForEnt
+/* 8031414C 0030FDAC A0 1D 00 00 */ lhz r0, 0(r29)
+/* 80314150 0030FDB0 A0 BD 02 20 */ lhz r5, 0x220(r29)
+/* 80314154 0030FDB4 A0 9D 02 1E */ lhz r4, 0x21e(r29)
+/* 80314158 0030FDB8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031415C 0030FDBC 98 7D 02 1D */ stb r3, 0x21d(r29)
+/* 80314160 0030FDC0 B0 BD 02 22 */ sth r5, 0x222(r29)
+/* 80314164 0030FDC4 B0 9D 02 24 */ sth r4, 0x224(r29)
+/* 80314168 0030FDC8 B0 BD 02 26 */ sth r5, 0x226(r29)
+/* 8031416C 0030FDCC 41 82 01 4C */ beq lbl_803142B8
+/* 80314170 0030FDD0 88 1D 02 1B */ lbz r0, 0x21b(r29)
+/* 80314174 0030FDD4 54 00 06 F9 */ rlwinm. r0, r0, 0, 0x1b, 0x1c
+/* 80314178 0030FDD8 40 82 01 40 */ bne lbl_803142B8
+/* 8031417C 0030FDDC 3C 80 4E C5 */ lis r4, 0x4EC4EC4F@ha
+/* 80314180 0030FDE0 7F A3 EB 78 */ mr r3, r29
+/* 80314184 0030FDE4 38 04 EC 4F */ addi r0, r4, 0x4EC4EC4F@l
+/* 80314188 0030FDE8 7F C7 F3 78 */ mr r7, r30
+/* 8031418C 0030FDEC 7C 00 F8 16 */ mulhwu r0, r0, r31
+/* 80314190 0030FDF0 38 A1 00 48 */ addi r5, r1, 0x48
+/* 80314194 0030FDF4 38 C1 00 10 */ addi r6, r1, 0x10
+/* 80314198 0030FDF8 39 01 00 08 */ addi r8, r1, 8
+/* 8031419C 0030FDFC 54 09 F0 BE */ srwi r9, r0, 2
+/* 803141A0 0030FE00 1C 09 00 0D */ mulli r0, r9, 0xd
+/* 803141A4 0030FE04 7C 80 F8 50 */ subf r4, r0, r31
+/* 803141A8 0030FE08 7C 04 00 D0 */ neg r0, r4
+/* 803141AC 0030FE0C 7C 00 23 78 */ or r0, r0, r4
+/* 803141B0 0030FE10 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 803141B4 0030FE14 7C 09 02 14 */ add r0, r9, r0
+/* 803141B8 0030FE18 54 1A 06 3E */ clrlwi r26, r0, 0x18
+/* 803141BC 0030FE1C 38 1A 00 01 */ addi r0, r26, 1
+/* 803141C0 0030FE20 54 04 06 3E */ clrlwi r4, r0, 0x18
+/* 803141C4 0030FE24 4B FF 82 01 */ bl VFiPFENT_allocateEntryPos
+/* 803141C8 0030FE28 2C 03 00 00 */ cmpwi r3, 0
+/* 803141CC 0030FE2C 41 82 00 08 */ beq lbl_803141D4
+/* 803141D0 0030FE30 48 00 01 2C */ b lbl_803142FC
+lbl_803141D4:
+/* 803141D4 0030FE34 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 803141D8 0030FE38 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 803141DC 0030FE3C 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 803141E0 0030FE40 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 803141E4 0030FE44 28 00 00 02 */ cmplwi r0, 2
+/* 803141E8 0030FE48 40 82 00 10 */ bne lbl_803141F8
+/* 803141EC 0030FE4C 80 81 00 08 */ lwz r4, 8(r1)
+/* 803141F0 0030FE50 38 7D 02 0E */ addi r3, r29, 0x20e
+/* 803141F4 0030FE54 48 00 47 09 */ bl VFiPFPATH_AdjustExtShortName
+lbl_803141F8:
+/* 803141F8 0030FE58 9B 5D 02 0A */ stb r26, 0x20a(r29)
+/* 803141FC 0030FE5C 7F A3 EB 78 */ mr r3, r29
+/* 80314200 0030FE60 83 1D 02 38 */ lwz r24, 0x238(r29)
+/* 80314204 0030FE64 4B FF 79 A5 */ bl VFiPFENT_CalcCheckSum
+/* 80314208 0030FE68 7C 7F 1B 78 */ mr r31, r3
+/* 8031420C 0030FE6C 7F 59 D3 78 */ mr r25, r26
+/* 80314210 0030FE70 3B 61 00 10 */ addi r27, r1, 0x10
+/* 80314214 0030FE74 3B C0 00 00 */ li r30, 0
+/* 80314218 0030FE78 48 00 00 90 */ b lbl_803142A8
+lbl_8031421C:
+/* 8031421C 0030FE7C 7C 19 D0 50 */ subf r0, r25, r26
+/* 80314220 0030FE80 7F A4 EB 78 */ mr r4, r29
+/* 80314224 0030FE84 7C 00 00 34 */ cntlzw r0, r0
+/* 80314228 0030FE88 38 61 00 28 */ addi r3, r1, 0x28
+/* 8031422C 0030FE8C 57 25 06 3E */ clrlwi r5, r25, 0x18
+/* 80314230 0030FE90 57 E6 06 3E */ clrlwi r6, r31, 0x18
+/* 80314234 0030FE94 54 07 D9 7E */ srwi r7, r0, 5
+/* 80314238 0030FE98 4B FF 7C AD */ bl VFiPFENT_storeLFNEntryFieldsToBuf
+/* 8031423C 0030FE9C A0 DD 02 3C */ lhz r6, 0x23c(r29)
+/* 80314240 0030FEA0 7F 83 E3 78 */ mr r3, r28
+/* 80314244 0030FEA4 7F 05 C3 78 */ mr r5, r24
+/* 80314248 0030FEA8 38 81 00 28 */ addi r4, r1, 0x28
+/* 8031424C 0030FEAC 39 01 00 0C */ addi r8, r1, 0xc
+/* 80314250 0030FEB0 38 E0 00 20 */ li r7, 0x20
+/* 80314254 0030FEB4 39 20 00 00 */ li r9, 0
+/* 80314258 0030FEB8 48 00 4B 91 */ bl VFiPFSEC_WriteData
+/* 8031425C 0030FEBC 2C 03 00 00 */ cmpwi r3, 0
+/* 80314260 0030FEC0 41 82 00 08 */ beq lbl_80314268
+/* 80314264 0030FEC4 48 00 00 98 */ b lbl_803142FC
+lbl_80314268:
+/* 80314268 0030FEC8 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8031426C 0030FECC 28 00 00 20 */ cmplwi r0, 0x20
+/* 80314270 0030FED0 41 82 00 0C */ beq lbl_8031427C
+/* 80314274 0030FED4 38 60 00 11 */ li r3, 0x11
+/* 80314278 0030FED8 48 00 00 84 */ b lbl_803142FC
+lbl_8031427C:
+/* 8031427C 0030FEDC A0 7D 02 3C */ lhz r3, 0x23c(r29)
+/* 80314280 0030FEE0 38 03 00 20 */ addi r0, r3, 0x20
+/* 80314284 0030FEE4 B0 1D 02 3C */ sth r0, 0x23c(r29)
+/* 80314288 0030FEE8 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 8031428C 0030FEEC A0 1C 00 00 */ lhz r0, 0(r28)
+/* 80314290 0030FEF0 7C 03 00 40 */ cmplw r3, r0
+/* 80314294 0030FEF4 41 80 00 10 */ blt lbl_803142A4
+/* 80314298 0030FEF8 B3 DD 02 3C */ sth r30, 0x23c(r29)
+/* 8031429C 0030FEFC 83 1B 00 00 */ lwz r24, 0(r27)
+/* 803142A0 0030FF00 3B 7B 00 04 */ addi r27, r27, 4
+lbl_803142A4:
+/* 803142A4 0030FF04 3B 39 FF FF */ addi r25, r25, -1
+lbl_803142A8:
+/* 803142A8 0030FF08 28 19 00 01 */ cmplwi r25, 1
+/* 803142AC 0030FF0C 40 80 FF 70 */ bge lbl_8031421C
+/* 803142B0 0030FF10 93 1D 02 38 */ stw r24, 0x238(r29)
+/* 803142B4 0030FF14 48 00 00 28 */ b lbl_803142DC
+lbl_803142B8:
+/* 803142B8 0030FF18 7F A3 EB 78 */ mr r3, r29
+/* 803142BC 0030FF1C 7F C7 F3 78 */ mr r7, r30
+/* 803142C0 0030FF20 38 A1 00 48 */ addi r5, r1, 0x48
+/* 803142C4 0030FF24 38 C1 00 10 */ addi r6, r1, 0x10
+/* 803142C8 0030FF28 38 80 00 01 */ li r4, 1
+/* 803142CC 0030FF2C 4B FF 84 15 */ bl VFiPFENT_allocateEntry
+/* 803142D0 0030FF30 2C 03 00 00 */ cmpwi r3, 0
+/* 803142D4 0030FF34 41 82 00 08 */ beq lbl_803142DC
+/* 803142D8 0030FF38 48 00 00 24 */ b lbl_803142FC
+lbl_803142DC:
+/* 803142DC 0030FF3C 80 1D 02 34 */ lwz r0, 0x234(r29)
+/* 803142E0 0030FF40 28 00 00 01 */ cmplwi r0, 1
+/* 803142E4 0030FF44 40 82 00 0C */ bne lbl_803142F0
+/* 803142E8 0030FF48 38 00 00 00 */ li r0, 0
+/* 803142EC 0030FF4C 90 1D 02 34 */ stw r0, 0x234(r29)
+lbl_803142F0:
+/* 803142F0 0030FF50 7F A3 EB 78 */ mr r3, r29
+/* 803142F4 0030FF54 38 80 00 01 */ li r4, 1
+/* 803142F8 0030FF58 4B FF 85 F9 */ bl VFiPFENT_updateEntry
+lbl_803142FC:
+/* 803142FC 0030FF5C 39 61 02 E0 */ addi r11, r1, 0x2e0
+/* 80314300 0030FF60 4B EB 2E 69 */ bl _restgpr_24
+/* 80314304 0030FF64 80 01 02 E4 */ lwz r0, 0x2e4(r1)
+/* 80314308 0030FF68 7C 08 03 A6 */ mtlr r0
+/* 8031430C 0030FF6C 38 21 02 E0 */ addi r1, r1, 0x2e0
+/* 80314310 0030FF70 4E 80 00 20 */ blr
+
+.global VFiPFFILE_p_fopen
+VFiPFFILE_p_fopen:
+/* 80314314 0030FF74 94 21 FA C0 */ stwu r1, -0x540(r1)
+/* 80314318 0030FF78 7C 08 02 A6 */ mflr r0
+/* 8031431C 0030FF7C 38 E0 00 01 */ li r7, 1
+/* 80314320 0030FF80 90 01 05 44 */ stw r0, 0x544(r1)
+/* 80314324 0030FF84 38 00 00 00 */ li r0, 0
+/* 80314328 0030FF88 93 E1 05 3C */ stw r31, 0x53c(r1)
+/* 8031432C 0030FF8C 7C 9F 23 78 */ mr r31, r4
+/* 80314330 0030FF90 38 81 02 E8 */ addi r4, r1, 0x2e8
+/* 80314334 0030FF94 93 C1 05 38 */ stw r30, 0x538(r1)
+/* 80314338 0030FF98 7C DE 33 78 */ mr r30, r6
+/* 8031433C 0030FF9C 93 A1 05 34 */ stw r29, 0x534(r1)
+/* 80314340 0030FFA0 7C BD 2B 78 */ mr r29, r5
+/* 80314344 0030FFA4 93 81 05 30 */ stw r28, 0x530(r1)
+/* 80314348 0030FFA8 7C 7C 1B 78 */ mr r28, r3
+/* 8031434C 0030FFAC 7F 85 E3 78 */ mr r5, r28
+/* 80314350 0030FFB0 38 61 00 78 */ addi r3, r1, 0x78
+/* 80314354 0030FFB4 90 06 00 00 */ stw r0, 0(r6)
+/* 80314358 0030FFB8 7F E6 FB 78 */ mr r6, r31
+/* 8031435C 0030FFBC 4B FF A1 D1 */ bl VFiPFENT_ITER_GetEntryOfPath
+/* 80314360 0030FFC0 2C 03 00 00 */ cmpwi r3, 0
+/* 80314364 0030FFC4 41 82 00 08 */ beq lbl_8031436C
+/* 80314368 0030FFC8 48 00 04 7C */ b lbl_803147E4
+lbl_8031436C:
+/* 8031436C 0030FFCC 88 01 05 04 */ lbz r0, 0x504(r1)
+/* 80314370 0030FFD0 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 80314374 0030FFD4 40 82 00 0C */ bne lbl_80314380
+/* 80314378 0030FFD8 38 60 00 01 */ li r3, 1
+/* 8031437C 0030FFDC 48 00 04 68 */ b lbl_803147E4
+lbl_80314380:
+/* 80314380 0030FFE0 7F E3 FB 78 */ mr r3, r31
+/* 80314384 0030FFE4 38 81 00 20 */ addi r4, r1, 0x20
+/* 80314388 0030FFE8 38 A1 00 30 */ addi r5, r1, 0x30
+/* 8031438C 0030FFEC 48 00 2B 01 */ bl VFiPFPATH_SplitPath
+/* 80314390 0030FFF0 2C 03 00 00 */ cmpwi r3, 0
+/* 80314394 0030FFF4 41 82 00 0C */ beq lbl_803143A0
+/* 80314398 0030FFF8 38 60 00 01 */ li r3, 1
+/* 8031439C 0030FFFC 48 00 04 48 */ b lbl_803147E4
+lbl_803143A0:
+/* 803143A0 00310000 38 61 00 30 */ addi r3, r1, 0x30
+/* 803143A4 00310004 38 80 00 01 */ li r4, 1
+/* 803143A8 00310008 4B FF 11 35 */ bl VFiPFSTR_StrNumChar
+/* 803143AC 0031000C 54 7F 04 3E */ clrlwi r31, r3, 0x10
+/* 803143B0 00310010 2C 1F 00 FF */ cmpwi r31, 0xff
+/* 803143B4 00310014 40 81 00 0C */ ble lbl_803143C0
+/* 803143B8 00310018 38 60 00 01 */ li r3, 1
+/* 803143BC 0031001C 48 00 04 28 */ b lbl_803147E4
+lbl_803143C0:
+/* 803143C0 00310020 38 61 00 30 */ addi r3, r1, 0x30
+/* 803143C4 00310024 4B FF 0F 1D */ bl VFiPFSTR_GetCodeMode
+/* 803143C8 00310028 28 03 00 02 */ cmplwi r3, 2
+/* 803143CC 0031002C 40 82 00 1C */ bne lbl_803143E8
+/* 803143D0 00310030 38 61 00 30 */ addi r3, r1, 0x30
+/* 803143D4 00310034 38 80 00 01 */ li r4, 1
+/* 803143D8 00310038 4B FF 0F 39 */ bl VFiPFSTR_GetStrPos
+/* 803143DC 0031003C 7C 64 1B 78 */ mr r4, r3
+/* 803143E0 00310040 38 61 00 E8 */ addi r3, r1, 0xe8
+/* 803143E4 00310044 48 00 34 FD */ bl VFiPFPATH_transformFromUnicodeToNormal
+lbl_803143E8:
+/* 803143E8 00310048 38 61 00 30 */ addi r3, r1, 0x30
+/* 803143EC 0031004C 38 81 00 E8 */ addi r4, r1, 0xe8
+/* 803143F0 00310050 4B FF 0E F9 */ bl VFiPFSTR_SetLocalStr
+/* 803143F4 00310054 57 A0 07 BD */ rlwinm. r0, r29, 0, 0x1e, 0x1e
+/* 803143F8 00310058 41 82 00 84 */ beq lbl_8031447C
+/* 803143FC 0031005C 80 A1 05 14 */ lwz r5, 0x514(r1)
+/* 80314400 00310060 38 61 00 40 */ addi r3, r1, 0x40
+/* 80314404 00310064 38 81 00 10 */ addi r4, r1, 0x10
+/* 80314408 00310068 38 C1 05 1C */ addi r6, r1, 0x51c
+/* 8031440C 0031006C 4B FF CC BD */ bl VFiPFFAT_InitFFD
+/* 80314410 00310070 38 61 00 40 */ addi r3, r1, 0x40
+/* 80314414 00310074 38 81 02 E8 */ addi r4, r1, 0x2e8
+/* 80314418 00310078 38 C1 00 30 */ addi r6, r1, 0x30
+/* 8031441C 0031007C 38 A0 00 00 */ li r5, 0
+/* 80314420 00310080 38 E0 00 7F */ li r7, 0x7f
+/* 80314424 00310084 39 00 00 00 */ li r8, 0
+/* 80314428 00310088 4B FF 7F 75 */ bl VFiPFENT_findEntry
+/* 8031442C 0031008C 2C 03 00 00 */ cmpwi r3, 0
+/* 80314430 00310090 41 82 00 0C */ beq lbl_8031443C
+/* 80314434 00310094 38 60 00 03 */ li r3, 3
+/* 80314438 00310098 48 00 03 AC */ b lbl_803147E4
+lbl_8031443C:
+/* 8031443C 0031009C 57 A0 07 39 */ rlwinm. r0, r29, 0, 0x1c, 0x1c
+/* 80314440 003100A0 41 82 00 18 */ beq lbl_80314458
+/* 80314444 003100A4 88 01 05 04 */ lbz r0, 0x504(r1)
+/* 80314448 003100A8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8031444C 003100AC 41 82 00 0C */ beq lbl_80314458
+/* 80314450 003100B0 38 60 00 0A */ li r3, 0xa
+/* 80314454 003100B4 48 00 03 90 */ b lbl_803147E4
+lbl_80314458:
+/* 80314458 003100B8 88 01 05 04 */ lbz r0, 0x504(r1)
+/* 8031445C 003100BC 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 80314460 003100C0 41 82 00 0C */ beq lbl_8031446C
+/* 80314464 003100C4 38 60 00 17 */ li r3, 0x17
+/* 80314468 003100C8 48 00 03 7C */ b lbl_803147E4
+lbl_8031446C:
+/* 8031446C 003100CC 38 61 05 0A */ addi r3, r1, 0x50a
+/* 80314470 003100D0 38 81 00 08 */ addi r4, r1, 8
+/* 80314474 003100D4 4B FF 87 05 */ bl VFiPFENT_getcurrentDateTimeForEnt
+/* 80314478 003100D8 48 00 01 44 */ b lbl_803145BC
+lbl_8031447C:
+/* 8031447C 003100DC 80 01 05 18 */ lwz r0, 0x518(r1)
+/* 80314480 003100E0 7C 1F 02 14 */ add r0, r31, r0
+/* 80314484 003100E4 28 00 01 03 */ cmplwi r0, 0x103
+/* 80314488 003100E8 40 81 00 0C */ ble lbl_80314494
+/* 8031448C 003100EC 38 60 00 01 */ li r3, 1
+/* 80314490 003100F0 48 00 03 54 */ b lbl_803147E4
+lbl_80314494:
+/* 80314494 003100F4 7F 83 E3 78 */ mr r3, r28
+/* 80314498 003100F8 7F E6 FB 78 */ mr r6, r31
+/* 8031449C 003100FC 38 81 02 E8 */ addi r4, r1, 0x2e8
+/* 803144A0 00310100 38 A1 00 30 */ addi r5, r1, 0x30
+/* 803144A4 00310104 4B FF FB 5D */ bl VFiPFFILE_createEmptyFile
+/* 803144A8 00310108 2C 03 00 08 */ cmpwi r3, 8
+/* 803144AC 0031010C 40 82 01 04 */ bne lbl_803145B0
+/* 803144B0 00310110 57 A0 06 F7 */ rlwinm. r0, r29, 0, 0x1b, 0x1b
+/* 803144B4 00310114 41 82 00 0C */ beq lbl_803144C0
+/* 803144B8 00310118 38 60 00 08 */ li r3, 8
+/* 803144BC 0031011C 48 00 03 28 */ b lbl_803147E4
+lbl_803144C0:
+/* 803144C0 00310120 57 BF 07 FF */ clrlwi. r31, r29, 0x1f
+/* 803144C4 00310124 41 82 00 44 */ beq lbl_80314508
+/* 803144C8 00310128 38 00 00 00 */ li r0, 0
+/* 803144CC 0031012C 34 61 02 E8 */ addic. r3, r1, 0x2e8
+/* 803144D0 00310130 90 01 00 0C */ stw r0, 0xc(r1)
+/* 803144D4 00310134 40 82 00 0C */ bne lbl_803144E0
+/* 803144D8 00310138 38 00 00 00 */ li r0, 0
+/* 803144DC 0031013C 48 00 00 1C */ b lbl_803144F8
+lbl_803144E0:
+/* 803144E0 00310140 38 81 00 0C */ addi r4, r1, 0xc
+/* 803144E4 00310144 48 00 07 61 */ bl VFiPFFILE_GetOpenedFile
+/* 803144E8 00310148 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 803144EC 0031014C 7C 03 00 D0 */ neg r0, r3
+/* 803144F0 00310150 7C 00 1B 78 */ or r0, r0, r3
+/* 803144F4 00310154 54 00 0F FE */ srwi r0, r0, 0x1f
+lbl_803144F8:
+/* 803144F8 00310158 2C 00 00 00 */ cmpwi r0, 0
+/* 803144FC 0031015C 41 82 00 0C */ beq lbl_80314508
+/* 80314500 00310160 38 60 00 08 */ li r3, 8
+/* 80314504 00310164 48 00 02 E0 */ b lbl_803147E4
+lbl_80314508:
+/* 80314508 00310168 88 61 05 04 */ lbz r3, 0x504(r1)
+/* 8031450C 0031016C 54 60 07 FF */ clrlwi. r0, r3, 0x1f
+/* 80314510 00310170 41 82 00 24 */ beq lbl_80314534
+/* 80314514 00310174 2C 1F 00 00 */ cmpwi r31, 0
+/* 80314518 00310178 40 82 00 14 */ bne lbl_8031452C
+/* 8031451C 0031017C 57 A0 07 7B */ rlwinm. r0, r29, 0, 0x1d, 0x1d
+/* 80314520 00310180 40 82 00 0C */ bne lbl_8031452C
+/* 80314524 00310184 57 A0 07 39 */ rlwinm. r0, r29, 0, 0x1c, 0x1c
+/* 80314528 00310188 41 82 00 0C */ beq lbl_80314534
+lbl_8031452C:
+/* 8031452C 0031018C 38 60 00 0A */ li r3, 0xa
+/* 80314530 00310190 48 00 02 B4 */ b lbl_803147E4
+lbl_80314534:
+/* 80314534 00310194 54 60 06 F7 */ rlwinm. r0, r3, 0, 0x1b, 0x1b
+/* 80314538 00310198 41 82 00 0C */ beq lbl_80314544
+/* 8031453C 0031019C 38 60 00 17 */ li r3, 0x17
+/* 80314540 003101A0 48 00 02 A4 */ b lbl_803147E4
+lbl_80314544:
+/* 80314544 003101A4 2C 1F 00 00 */ cmpwi r31, 0
+/* 80314548 003101A8 41 82 00 58 */ beq lbl_803145A0
+/* 8031454C 003101AC 80 81 05 1C */ lwz r4, 0x51c(r1)
+/* 80314550 003101B0 28 04 00 02 */ cmplwi r4, 2
+/* 80314554 003101B4 41 80 00 28 */ blt lbl_8031457C
+/* 80314558 003101B8 3C 04 00 01 */ addis r0, r4, 1
+/* 8031455C 003101BC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80314560 003101C0 41 82 00 1C */ beq lbl_8031457C
+/* 80314564 003101C4 80 C1 05 10 */ lwz r6, 0x510(r1)
+/* 80314568 003101C8 2C 06 00 00 */ cmpwi r6, 0
+/* 8031456C 003101CC 41 82 00 10 */ beq lbl_8031457C
+/* 80314570 003101D0 38 61 00 80 */ addi r3, r1, 0x80
+/* 80314574 003101D4 38 A0 FF FF */ li r5, -1
+/* 80314578 003101D8 4B FF BE B1 */ bl VFiPFFAT_FreeChain
+lbl_8031457C:
+/* 8031457C 003101DC 38 00 00 00 */ li r0, 0
+/* 80314580 003101E0 38 61 05 0E */ addi r3, r1, 0x50e
+/* 80314584 003101E4 90 01 05 1C */ stw r0, 0x51c(r1)
+/* 80314588 003101E8 38 81 05 0C */ addi r4, r1, 0x50c
+/* 8031458C 003101EC 90 01 05 10 */ stw r0, 0x510(r1)
+/* 80314590 003101F0 4B FF 85 E9 */ bl VFiPFENT_getcurrentDateTimeForEnt
+/* 80314594 003101F4 A0 01 05 0E */ lhz r0, 0x50e(r1)
+/* 80314598 003101F8 B0 01 05 0A */ sth r0, 0x50a(r1)
+/* 8031459C 003101FC 48 00 00 20 */ b lbl_803145BC
+lbl_803145A0:
+/* 803145A0 00310200 38 61 05 0A */ addi r3, r1, 0x50a
+/* 803145A4 00310204 38 81 00 08 */ addi r4, r1, 8
+/* 803145A8 00310208 4B FF 85 D1 */ bl VFiPFENT_getcurrentDateTimeForEnt
+/* 803145AC 0031020C 48 00 00 10 */ b lbl_803145BC
+lbl_803145B0:
+/* 803145B0 00310210 2C 03 00 00 */ cmpwi r3, 0
+/* 803145B4 00310214 41 82 00 08 */ beq lbl_803145BC
+/* 803145B8 00310218 48 00 02 2C */ b lbl_803147E4
+lbl_803145BC:
+/* 803145BC 0031021C 83 81 05 14 */ lwz r28, 0x514(r1)
+/* 803145C0 00310220 38 81 02 E8 */ addi r4, r1, 0x2e8
+/* 803145C4 00310224 7F 83 E3 78 */ mr r3, r28
+/* 803145C8 00310228 4B FF F8 69 */ bl VFiPFFILE_GetSFD
+/* 803145CC 0031022C 2C 03 00 00 */ cmpwi r3, 0
+/* 803145D0 00310230 40 82 00 0C */ bne lbl_803145DC
+/* 803145D4 00310234 38 60 00 15 */ li r3, 0x15
+/* 803145D8 00310238 48 00 02 0C */ b lbl_803147E4
+lbl_803145DC:
+/* 803145DC 0031023C 38 00 00 05 */ li r0, 5
+/* 803145E0 00310240 7F 85 E3 78 */ mr r5, r28
+/* 803145E4 00310244 38 80 00 00 */ li r4, 0
+/* 803145E8 00310248 7C 09 03 A6 */ mtctr r0
+lbl_803145EC:
+/* 803145EC 0031024C 80 05 0D 10 */ lwz r0, 0xd10(r5)
+/* 803145F0 00310250 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 803145F4 00310254 40 82 00 14 */ bne lbl_80314608
+/* 803145F8 00310258 1C 04 00 30 */ mulli r0, r4, 0x30
+/* 803145FC 0031025C 7C 9C 02 14 */ add r4, r28, r0
+/* 80314600 00310260 3B E4 0D 10 */ addi r31, r4, 0xd10
+/* 80314604 00310264 48 00 00 14 */ b lbl_80314618
+lbl_80314608:
+/* 80314608 00310268 38 A5 00 30 */ addi r5, r5, 0x30
+/* 8031460C 0031026C 38 84 00 01 */ addi r4, r4, 1
+/* 80314610 00310270 42 00 FF DC */ bdnz lbl_803145EC
+/* 80314614 00310274 3B E0 00 00 */ li r31, 0
+lbl_80314618:
+/* 80314618 00310278 2C 1F 00 00 */ cmpwi r31, 0
+/* 8031461C 0031027C 40 82 00 34 */ bne lbl_80314650
+/* 80314620 00310280 A0 83 02 8C */ lhz r4, 0x28c(r3)
+/* 80314624 00310284 38 84 FF FF */ addi r4, r4, -1
+/* 80314628 00310288 54 80 04 3F */ clrlwi. r0, r4, 0x10
+/* 8031462C 0031028C B0 83 02 8C */ sth r4, 0x28c(r3)
+/* 80314630 00310290 40 82 00 18 */ bne lbl_80314648
+/* 80314634 00310294 80 83 00 00 */ lwz r4, 0(r3)
+/* 80314638 00310298 38 00 00 00 */ li r0, 0
+/* 8031463C 0031029C 54 84 00 3C */ rlwinm r4, r4, 0, 0, 0x1e
+/* 80314640 003102A0 90 83 00 00 */ stw r4, 0(r3)
+/* 80314644 003102A4 90 03 00 20 */ stw r0, 0x20(r3)
+lbl_80314648:
+/* 80314648 003102A8 38 60 00 16 */ li r3, 0x16
+/* 8031464C 003102AC 48 00 01 98 */ b lbl_803147E4
+lbl_80314650:
+/* 80314650 003102B0 90 7F 00 08 */ stw r3, 8(r31)
+/* 80314654 003102B4 38 80 00 01 */ li r4, 1
+/* 80314658 003102B8 38 00 00 00 */ li r0, 0
+/* 8031465C 003102BC 38 7F 00 0C */ addi r3, r31, 0xc
+/* 80314660 003102C0 90 9F 00 00 */ stw r4, 0(r31)
+/* 80314664 003102C4 93 BF 00 04 */ stw r29, 4(r31)
+/* 80314668 003102C8 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 8031466C 003102CC B0 1F 00 2C */ sth r0, 0x2c(r31)
+/* 80314670 003102D0 4B FF C7 29 */ bl VFiPFFAT_InitHint
+/* 80314674 003102D4 38 00 FF FF */ li r0, -1
+/* 80314678 003102D8 2C 1F 00 00 */ cmpwi r31, 0
+/* 8031467C 003102DC 90 1F 00 20 */ stw r0, 0x20(r31)
+/* 80314680 003102E0 40 82 00 0C */ bne lbl_8031468C
+/* 80314684 003102E4 38 80 00 00 */ li r4, 0
+/* 80314688 003102E8 48 00 00 0C */ b lbl_80314694
+lbl_8031468C:
+/* 8031468C 003102EC 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80314690 003102F0 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_80314694:
+/* 80314694 003102F4 A0 64 00 00 */ lhz r3, 0(r4)
+/* 80314698 003102F8 80 BF 00 1C */ lwz r5, 0x1c(r31)
+/* 8031469C 003102FC 38 03 FF FF */ addi r0, r3, -1
+/* 803146A0 00310300 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 803146A4 00310304 7C A3 00 38 */ and r3, r5, r0
+/* 803146A8 00310308 7C 03 00 D0 */ neg r0, r3
+/* 803146AC 0031030C 7C A4 24 30 */ srw r4, r5, r4
+/* 803146B0 00310310 7C 00 1B 78 */ or r0, r0, r3
+/* 803146B4 00310314 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 803146B8 00310318 7C 04 02 15 */ add. r0, r4, r0
+/* 803146BC 0031031C 41 82 00 0C */ beq lbl_803146C8
+/* 803146C0 00310320 38 00 FF FF */ li r0, -1
+/* 803146C4 00310324 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_803146C8:
+/* 803146C8 00310328 38 00 00 00 */ li r0, 0
+/* 803146CC 0031032C 2C 1F 00 00 */ cmpwi r31, 0
+/* 803146D0 00310330 90 1F 00 1C */ stw r0, 0x1c(r31)
+/* 803146D4 00310334 40 82 00 0C */ bne lbl_803146E0
+/* 803146D8 00310338 38 80 00 00 */ li r4, 0
+/* 803146DC 0031033C 48 00 00 0C */ b lbl_803146E8
+lbl_803146E0:
+/* 803146E0 00310340 80 7F 00 08 */ lwz r3, 8(r31)
+/* 803146E4 00310344 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_803146E8:
+/* 803146E8 00310348 57 A0 07 FF */ clrlwi. r0, r29, 0x1f
+/* 803146EC 0031034C 80 7F 00 1C */ lwz r3, 0x1c(r31)
+/* 803146F0 00310350 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 803146F4 00310354 7C 60 04 30 */ srw r0, r3, r0
+/* 803146F8 00310358 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 803146FC 0031035C A0 64 00 00 */ lhz r3, 0(r4)
+/* 80314700 00310360 80 9F 00 1C */ lwz r4, 0x1c(r31)
+/* 80314704 00310364 38 03 FF FF */ addi r0, r3, -1
+/* 80314708 00310368 7C 80 00 38 */ and r0, r4, r0
+/* 8031470C 0031036C B0 1F 00 28 */ sth r0, 0x28(r31)
+/* 80314710 00310370 41 82 00 14 */ beq lbl_80314724
+/* 80314714 00310374 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80314718 00310378 80 03 00 00 */ lwz r0, 0(r3)
+/* 8031471C 0031037C 60 00 00 04 */ ori r0, r0, 4
+/* 80314720 00310380 90 03 00 00 */ stw r0, 0(r3)
+lbl_80314724:
+/* 80314724 00310384 80 1F 00 04 */ lwz r0, 4(r31)
+/* 80314728 00310388 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 8031472C 0031038C 41 82 00 B0 */ beq lbl_803147DC
+/* 80314730 00310390 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80314734 00310394 2C 1F 00 00 */ cmpwi r31, 0
+/* 80314738 00310398 81 03 02 64 */ lwz r8, 0x264(r3)
+/* 8031473C 0031039C 40 82 00 0C */ bne lbl_80314748
+/* 80314740 003103A0 38 80 00 00 */ li r4, 0
+/* 80314744 003103A4 48 00 00 08 */ b lbl_8031474C
+lbl_80314748:
+/* 80314748 003103A8 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_8031474C:
+/* 8031474C 003103AC A0 64 00 00 */ lhz r3, 0(r4)
+/* 80314750 003103B0 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80314754 003103B4 38 63 FF FF */ addi r3, r3, -1
+/* 80314758 003103B8 88 84 00 20 */ lbz r4, 0x20(r4)
+/* 8031475C 003103BC 7C 07 18 38 */ and r7, r0, r3
+/* 80314760 003103C0 7C 05 24 30 */ srw r5, r0, r4
+/* 80314764 003103C4 7D 03 18 38 */ and r3, r8, r3
+/* 80314768 003103C8 7C C7 00 D0 */ neg r6, r7
+/* 8031476C 003103CC 7D 04 24 30 */ srw r4, r8, r4
+/* 80314770 003103D0 7C 03 00 D0 */ neg r0, r3
+/* 80314774 003103D4 7C 00 1B 78 */ or r0, r0, r3
+/* 80314778 003103D8 7C C6 3B 78 */ or r6, r6, r7
+/* 8031477C 003103DC 54 C3 0F FE */ srwi r3, r6, 0x1f
+/* 80314780 003103E0 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 80314784 003103E4 7C 65 1A 14 */ add r3, r5, r3
+/* 80314788 003103E8 7C 04 02 14 */ add r0, r4, r0
+/* 8031478C 003103EC 7C 03 00 40 */ cmplw r3, r0
+/* 80314790 003103F0 41 82 00 0C */ beq lbl_8031479C
+/* 80314794 003103F4 38 00 FF FF */ li r0, -1
+/* 80314798 003103F8 90 1F 00 20 */ stw r0, 0x20(r31)
+lbl_8031479C:
+/* 8031479C 003103FC 2C 1F 00 00 */ cmpwi r31, 0
+/* 803147A0 00310400 91 1F 00 1C */ stw r8, 0x1c(r31)
+/* 803147A4 00310404 40 82 00 0C */ bne lbl_803147B0
+/* 803147A8 00310408 38 80 00 00 */ li r4, 0
+/* 803147AC 0031040C 48 00 00 0C */ b lbl_803147B8
+lbl_803147B0:
+/* 803147B0 00310410 80 7F 00 08 */ lwz r3, 8(r31)
+/* 803147B4 00310414 80 83 02 68 */ lwz r4, 0x268(r3)
+lbl_803147B8:
+/* 803147B8 00310418 80 7F 00 1C */ lwz r3, 0x1c(r31)
+/* 803147BC 0031041C 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 803147C0 00310420 7C 60 04 30 */ srw r0, r3, r0
+/* 803147C4 00310424 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 803147C8 00310428 A0 64 00 00 */ lhz r3, 0(r4)
+/* 803147CC 0031042C 80 9F 00 1C */ lwz r4, 0x1c(r31)
+/* 803147D0 00310430 38 03 FF FF */ addi r0, r3, -1
+/* 803147D4 00310434 7C 80 00 38 */ and r0, r4, r0
+/* 803147D8 00310438 B0 1F 00 28 */ sth r0, 0x28(r31)
+lbl_803147DC:
+/* 803147DC 0031043C 93 FE 00 00 */ stw r31, 0(r30)
+/* 803147E0 00310440 38 60 00 00 */ li r3, 0
+lbl_803147E4:
+/* 803147E4 00310444 80 01 05 44 */ lwz r0, 0x544(r1)
+/* 803147E8 00310448 83 E1 05 3C */ lwz r31, 0x53c(r1)
+/* 803147EC 0031044C 83 C1 05 38 */ lwz r30, 0x538(r1)
+/* 803147F0 00310450 83 A1 05 34 */ lwz r29, 0x534(r1)
+/* 803147F4 00310454 83 81 05 30 */ lwz r28, 0x530(r1)
+/* 803147F8 00310458 7C 08 03 A6 */ mtlr r0
+/* 803147FC 0031045C 38 21 05 40 */ addi r1, r1, 0x540
+/* 80314800 00310460 4E 80 00 20 */ blr
+
+.global VFiPFFILE_p_fread
+VFiPFFILE_p_fread:
+/* 80314804 00310464 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80314808 00310468 7C 08 02 A6 */ mflr r0
+/* 8031480C 0031046C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80314810 00310470 38 00 00 00 */ li r0, 0
+/* 80314814 00310474 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80314818 00310478 7D 1F 43 78 */ mr r31, r8
+/* 8031481C 0031047C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80314820 00310480 7C BE 2B 78 */ mr r30, r5
+/* 80314824 00310484 90 01 00 08 */ stw r0, 8(r1)
+/* 80314828 00310488 90 08 00 00 */ stw r0, 0(r8)
+/* 8031482C 0031048C 80 67 00 04 */ lwz r3, 4(r7)
+/* 80314830 00310490 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
+/* 80314834 00310494 40 82 00 1C */ bne lbl_80314850
+/* 80314838 00310498 54 60 07 FF */ clrlwi. r0, r3, 0x1f
+/* 8031483C 0031049C 40 82 00 0C */ bne lbl_80314848
+/* 80314840 003104A0 54 60 07 7B */ rlwinm. r0, r3, 0, 0x1d, 0x1d
+/* 80314844 003104A4 41 82 00 0C */ beq lbl_80314850
+lbl_80314848:
+/* 80314848 003104A8 38 60 00 0A */ li r3, 0xa
+/* 8031484C 003104AC 48 00 00 6C */ b lbl_803148B8
+lbl_80314850:
+/* 80314850 003104B0 81 07 00 08 */ lwz r8, 8(r7)
+/* 80314854 003104B4 A0 08 02 7C */ lhz r0, 0x27c(r8)
+/* 80314858 003104B8 54 00 07 BF */ clrlwi. r0, r0, 0x1e
+/* 8031485C 003104BC 41 82 00 18 */ beq lbl_80314874
+/* 80314860 003104C0 A0 07 00 2C */ lhz r0, 0x2c(r7)
+/* 80314864 003104C4 2C 00 00 00 */ cmpwi r0, 0
+/* 80314868 003104C8 40 82 00 0C */ bne lbl_80314874
+/* 8031486C 003104CC 38 60 00 19 */ li r3, 0x19
+/* 80314870 003104D0 48 00 00 48 */ b lbl_803148B8
+lbl_80314874:
+/* 80314874 003104D4 80 67 00 1C */ lwz r3, 0x1c(r7)
+/* 80314878 003104D8 80 08 02 64 */ lwz r0, 0x264(r8)
+/* 8031487C 003104DC 7C 03 00 40 */ cmplw r3, r0
+/* 80314880 003104E0 41 80 00 0C */ blt lbl_8031488C
+/* 80314884 003104E4 38 60 00 1C */ li r3, 0x1c
+/* 80314888 003104E8 48 00 00 30 */ b lbl_803148B8
+lbl_8031488C:
+/* 8031488C 003104EC 7C A5 31 D6 */ mullw r5, r5, r6
+/* 80314890 003104F0 7C E3 3B 78 */ mr r3, r7
+/* 80314894 003104F4 38 C1 00 08 */ addi r6, r1, 8
+/* 80314898 003104F8 4B FF E7 85 */ bl VFiPFFILE_Cursor_Read
+/* 8031489C 003104FC 80 81 00 08 */ lwz r4, 8(r1)
+/* 803148A0 00310500 7C 03 00 D0 */ neg r0, r3
+/* 803148A4 00310504 7C 00 1B 78 */ or r0, r0, r3
+/* 803148A8 00310508 7C 84 F3 96 */ divwu r4, r4, r30
+/* 803148AC 0031050C 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 803148B0 00310510 7C 63 00 38 */ and r3, r3, r0
+/* 803148B4 00310514 90 9F 00 00 */ stw r4, 0(r31)
+lbl_803148B8:
+/* 803148B8 00310518 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803148BC 0031051C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803148C0 00310520 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803148C4 00310524 7C 08 03 A6 */ mtlr r0
+/* 803148C8 00310528 38 21 00 20 */ addi r1, r1, 0x20
+/* 803148CC 0031052C 4E 80 00 20 */ blr
+
+.global VFiPFFILE_p_fwrite
+VFiPFFILE_p_fwrite:
+/* 803148D0 00310530 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803148D4 00310534 7C 08 02 A6 */ mflr r0
+/* 803148D8 00310538 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803148DC 0031053C 39 61 00 30 */ addi r11, r1, 0x30
+/* 803148E0 00310540 4B EB 28 41 */ bl _savegpr_25
+/* 803148E4 00310544 38 00 00 00 */ li r0, 0
+/* 803148E8 00310548 7C 9B 23 78 */ mr r27, r4
+/* 803148EC 0031054C 90 01 00 08 */ stw r0, 8(r1)
+/* 803148F0 00310550 7C 7A 1B 78 */ mr r26, r3
+/* 803148F4 00310554 7C BC 2B 78 */ mr r28, r5
+/* 803148F8 00310558 7C DD 33 78 */ mr r29, r6
+/* 803148FC 0031055C 90 08 00 00 */ stw r0, 0(r8)
+/* 80314900 00310560 7C FE 3B 78 */ mr r30, r7
+/* 80314904 00310564 7D 1F 43 78 */ mr r31, r8
+/* 80314908 00310568 80 87 00 04 */ lwz r4, 4(r7)
+/* 8031490C 0031056C 54 80 07 39 */ rlwinm. r0, r4, 0, 0x1c, 0x1c
+/* 80314910 00310570 40 82 00 14 */ bne lbl_80314924
+/* 80314914 00310574 54 80 07 BD */ rlwinm. r0, r4, 0, 0x1e, 0x1e
+/* 80314918 00310578 41 82 00 0C */ beq lbl_80314924
+/* 8031491C 0031057C 38 60 00 0A */ li r3, 0xa
+/* 80314920 00310580 48 00 01 EC */ b lbl_80314B0C
+lbl_80314924:
+/* 80314924 00310584 80 A7 00 08 */ lwz r5, 8(r7)
+/* 80314928 00310588 A0 C5 02 7C */ lhz r6, 0x27c(r5)
+/* 8031492C 0031058C 54 C0 07 BF */ clrlwi. r0, r6, 0x1e
+/* 80314930 00310590 41 82 00 28 */ beq lbl_80314958
+/* 80314934 00310594 54 C0 07 FF */ clrlwi. r0, r6, 0x1f
+/* 80314938 00310598 40 82 00 18 */ bne lbl_80314950
+/* 8031493C 0031059C 54 C0 07 BD */ rlwinm. r0, r6, 0, 0x1e, 0x1e
+/* 80314940 003105A0 41 82 00 18 */ beq lbl_80314958
+/* 80314944 003105A4 A0 07 00 2C */ lhz r0, 0x2c(r7)
+/* 80314948 003105A8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031494C 003105AC 40 82 00 0C */ bne lbl_80314958
+lbl_80314950:
+/* 80314950 003105B0 38 60 00 19 */ li r3, 0x19
+/* 80314954 003105B4 48 00 01 B8 */ b lbl_80314B0C
+lbl_80314958:
+/* 80314958 003105B8 54 80 07 7B */ rlwinm. r0, r4, 0, 0x1d, 0x1d
+/* 8031495C 003105BC 41 82 00 A8 */ beq lbl_80314A04
+/* 80314960 003105C0 2C 07 00 00 */ cmpwi r7, 0
+/* 80314964 003105C4 81 45 02 64 */ lwz r10, 0x264(r5)
+/* 80314968 003105C8 40 82 00 0C */ bne lbl_80314974
+/* 8031496C 003105CC 38 A0 00 00 */ li r5, 0
+/* 80314970 003105D0 48 00 00 08 */ b lbl_80314978
+lbl_80314974:
+/* 80314974 003105D4 80 A5 02 68 */ lwz r5, 0x268(r5)
+lbl_80314978:
+/* 80314978 003105D8 A0 85 00 00 */ lhz r4, 0(r5)
+/* 8031497C 003105DC 80 07 00 1C */ lwz r0, 0x1c(r7)
+/* 80314980 003105E0 38 84 FF FF */ addi r4, r4, -1
+/* 80314984 003105E4 88 A5 00 20 */ lbz r5, 0x20(r5)
+/* 80314988 003105E8 7C 09 20 38 */ and r9, r0, r4
+/* 8031498C 003105EC 7C 06 2C 30 */ srw r6, r0, r5
+/* 80314990 003105F0 7D 44 20 38 */ and r4, r10, r4
+/* 80314994 003105F4 7D 09 00 D0 */ neg r8, r9
+/* 80314998 003105F8 7D 45 2C 30 */ srw r5, r10, r5
+/* 8031499C 003105FC 7C 04 00 D0 */ neg r0, r4
+/* 803149A0 00310600 7C 00 23 78 */ or r0, r0, r4
+/* 803149A4 00310604 7D 08 4B 78 */ or r8, r8, r9
+/* 803149A8 00310608 55 04 0F FE */ srwi r4, r8, 0x1f
+/* 803149AC 0031060C 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 803149B0 00310610 7C 86 22 14 */ add r4, r6, r4
+/* 803149B4 00310614 7C 05 02 14 */ add r0, r5, r0
+/* 803149B8 00310618 7C 04 00 40 */ cmplw r4, r0
+/* 803149BC 0031061C 41 82 00 0C */ beq lbl_803149C8
+/* 803149C0 00310620 38 00 FF FF */ li r0, -1
+/* 803149C4 00310624 90 07 00 20 */ stw r0, 0x20(r7)
+lbl_803149C8:
+/* 803149C8 00310628 2C 07 00 00 */ cmpwi r7, 0
+/* 803149CC 0031062C 91 47 00 1C */ stw r10, 0x1c(r7)
+/* 803149D0 00310630 40 82 00 0C */ bne lbl_803149DC
+/* 803149D4 00310634 38 80 00 00 */ li r4, 0
+/* 803149D8 00310638 48 00 00 0C */ b lbl_803149E4
+lbl_803149DC:
+/* 803149DC 0031063C 80 87 00 08 */ lwz r4, 8(r7)
+/* 803149E0 00310640 80 84 02 68 */ lwz r4, 0x268(r4)
+lbl_803149E4:
+/* 803149E4 00310644 80 A7 00 1C */ lwz r5, 0x1c(r7)
+/* 803149E8 00310648 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 803149EC 0031064C 7C A0 04 30 */ srw r0, r5, r0
+/* 803149F0 00310650 90 07 00 24 */ stw r0, 0x24(r7)
+/* 803149F4 00310654 A0 84 00 00 */ lhz r4, 0(r4)
+/* 803149F8 00310658 38 04 FF FF */ addi r0, r4, -1
+/* 803149FC 0031065C 7C A0 00 38 */ and r0, r5, r0
+/* 80314A00 00310660 B0 07 00 28 */ sth r0, 0x28(r7)
+lbl_80314A04:
+/* 80314A04 00310664 80 87 00 08 */ lwz r4, 8(r7)
+/* 80314A08 00310668 80 07 00 1C */ lwz r0, 0x1c(r7)
+/* 80314A0C 0031066C 81 04 02 64 */ lwz r8, 0x264(r4)
+/* 80314A10 00310670 7C 00 40 40 */ cmplw r0, r8
+/* 80314A14 00310674 40 81 00 C8 */ ble lbl_80314ADC
+/* 80314A18 00310678 91 07 00 1C */ stw r8, 0x1c(r7)
+/* 80314A1C 0031067C 7F 28 00 50 */ subf r25, r8, r0
+/* 80314A20 00310680 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80314A24 00310684 38 80 FF FF */ li r4, -1
+/* 80314A28 00310688 88 03 00 20 */ lbz r0, 0x20(r3)
+/* 80314A2C 0031068C 7D 00 04 30 */ srw r0, r8, r0
+/* 80314A30 00310690 90 07 00 24 */ stw r0, 0x24(r7)
+/* 80314A34 00310694 A0 C3 00 00 */ lhz r6, 0(r3)
+/* 80314A38 00310698 7F 43 D3 78 */ mr r3, r26
+/* 80314A3C 0031069C 38 06 FF FF */ addi r0, r6, -1
+/* 80314A40 003106A0 7D 00 00 38 */ and r0, r8, r0
+/* 80314A44 003106A4 B0 07 00 28 */ sth r0, 0x28(r7)
+/* 80314A48 003106A8 4B FF 5C 71 */ bl VFiPFCACHE_AllocateDataPage
+/* 80314A4C 003106AC 2C 03 00 00 */ cmpwi r3, 0
+/* 80314A50 003106B0 41 82 00 08 */ beq lbl_80314A58
+/* 80314A54 003106B4 48 00 00 B8 */ b lbl_80314B0C
+lbl_80314A58:
+/* 80314A58 003106B8 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80314A5C 003106BC 38 80 00 00 */ li r4, 0
+/* 80314A60 003106C0 A0 BA 00 00 */ lhz r5, 0(r26)
+/* 80314A64 003106C4 80 63 00 08 */ lwz r3, 8(r3)
+/* 80314A68 003106C8 4B FF 05 6D */ bl VFipf_memset
+/* 80314A6C 003106CC 48 00 00 5C */ b lbl_80314AC8
+lbl_80314A70:
+/* 80314A70 003106D0 A0 BA 00 00 */ lhz r5, 0(r26)
+/* 80314A74 003106D4 7C 19 28 40 */ cmplw r25, r5
+/* 80314A78 003106D8 40 81 00 24 */ ble lbl_80314A9C
+/* 80314A7C 003106DC 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 80314A80 003106E0 7F C3 F3 78 */ mr r3, r30
+/* 80314A84 003106E4 38 C1 00 08 */ addi r6, r1, 8
+/* 80314A88 003106E8 80 84 00 08 */ lwz r4, 8(r4)
+/* 80314A8C 003106EC 4B FF EE 4D */ bl VFiPFFILE_Cursor_Write
+/* 80314A90 003106F0 2C 03 00 00 */ cmpwi r3, 0
+/* 80314A94 003106F4 41 82 00 2C */ beq lbl_80314AC0
+/* 80314A98 003106F8 48 00 00 74 */ b lbl_80314B0C
+lbl_80314A9C:
+/* 80314A9C 003106FC 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 80314AA0 00310700 7F C3 F3 78 */ mr r3, r30
+/* 80314AA4 00310704 7F 25 CB 78 */ mr r5, r25
+/* 80314AA8 00310708 38 C1 00 08 */ addi r6, r1, 8
+/* 80314AAC 0031070C 80 84 00 08 */ lwz r4, 8(r4)
+/* 80314AB0 00310710 4B FF EE 29 */ bl VFiPFFILE_Cursor_Write
+/* 80314AB4 00310714 2C 03 00 00 */ cmpwi r3, 0
+/* 80314AB8 00310718 41 82 00 18 */ beq lbl_80314AD0
+/* 80314ABC 0031071C 48 00 00 50 */ b lbl_80314B0C
+lbl_80314AC0:
+/* 80314AC0 00310720 A0 1A 00 00 */ lhz r0, 0(r26)
+/* 80314AC4 00310724 7F 20 C8 50 */ subf r25, r0, r25
+lbl_80314AC8:
+/* 80314AC8 00310728 2C 19 00 00 */ cmpwi r25, 0
+/* 80314ACC 0031072C 40 82 FF A4 */ bne lbl_80314A70
+lbl_80314AD0:
+/* 80314AD0 00310730 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 80314AD4 00310734 7F 43 D3 78 */ mr r3, r26
+/* 80314AD8 00310738 4B FF 5C E5 */ bl VFiPFCACHE_FreeDataPage
+lbl_80314ADC:
+/* 80314ADC 0031073C 7C BC E9 D6 */ mullw r5, r28, r29
+/* 80314AE0 00310740 7F C3 F3 78 */ mr r3, r30
+/* 80314AE4 00310744 7F 64 DB 78 */ mr r4, r27
+/* 80314AE8 00310748 38 C1 00 08 */ addi r6, r1, 8
+/* 80314AEC 0031074C 4B FF ED ED */ bl VFiPFFILE_Cursor_Write
+/* 80314AF0 00310750 80 01 00 08 */ lwz r0, 8(r1)
+/* 80314AF4 00310754 2C 03 00 00 */ cmpwi r3, 0
+/* 80314AF8 00310758 7C 00 E3 96 */ divwu r0, r0, r28
+/* 80314AFC 0031075C 90 1F 00 00 */ stw r0, 0(r31)
+/* 80314B00 00310760 41 82 00 08 */ beq lbl_80314B08
+/* 80314B04 00310764 48 00 00 08 */ b lbl_80314B0C
+lbl_80314B08:
+/* 80314B08 00310768 38 60 00 00 */ li r3, 0
+lbl_80314B0C:
+/* 80314B0C 0031076C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80314B10 00310770 4B EB 26 5D */ bl _restgpr_25
+/* 80314B14 00310774 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80314B18 00310778 7C 08 03 A6 */ mtlr r0
+/* 80314B1C 0031077C 38 21 00 30 */ addi r1, r1, 0x30
+/* 80314B20 00310780 4E 80 00 20 */ blr
+
+.global VFiPFFILE_p_finfo
+VFiPFFILE_p_finfo:
+/* 80314B24 00310784 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80314B28 00310788 7C 08 02 A6 */ mflr r0
+/* 80314B2C 0031078C 2C 03 00 00 */ cmpwi r3, 0
+/* 80314B30 00310790 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80314B34 00310794 38 03 00 0C */ addi r0, r3, 0xc
+/* 80314B38 00310798 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80314B3C 0031079C 7C 9F 23 78 */ mr r31, r4
+/* 80314B40 003107A0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80314B44 003107A4 7C 7E 1B 78 */ mr r30, r3
+/* 80314B48 003107A8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80314B4C 003107AC 80 A3 00 08 */ lwz r5, 8(r3)
+/* 80314B50 003107B0 90 05 00 34 */ stw r0, 0x34(r5)
+/* 80314B54 003107B4 40 82 00 0C */ bne lbl_80314B60
+/* 80314B58 003107B8 38 C0 00 00 */ li r6, 0
+/* 80314B5C 003107BC 48 00 00 0C */ b lbl_80314B68
+lbl_80314B60:
+/* 80314B60 003107C0 80 A3 00 08 */ lwz r5, 8(r3)
+/* 80314B64 003107C4 80 C5 02 68 */ lwz r6, 0x268(r5)
+lbl_80314B68:
+/* 80314B68 003107C8 80 A3 00 08 */ lwz r5, 8(r3)
+/* 80314B6C 003107CC 80 05 02 64 */ lwz r0, 0x264(r5)
+/* 80314B70 003107D0 90 04 00 00 */ stw r0, 0(r4)
+/* 80314B74 003107D4 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80314B78 003107D8 90 04 00 04 */ stw r0, 4(r4)
+/* 80314B7C 003107DC 80 63 00 08 */ lwz r3, 8(r3)
+/* 80314B80 003107E0 A0 A6 00 00 */ lhz r5, 0(r6)
+/* 80314B84 003107E4 80 03 02 70 */ lwz r0, 0x270(r3)
+/* 80314B88 003107E8 88 66 00 21 */ lbz r3, 0x21(r6)
+/* 80314B8C 003107EC 2C 00 00 00 */ cmpwi r0, 0
+/* 80314B90 003107F0 7C BD 18 30 */ slw r29, r5, r3
+/* 80314B94 003107F4 41 82 00 54 */ beq lbl_80314BE8
+/* 80314B98 003107F8 7F C3 F3 78 */ mr r3, r30
+/* 80314B9C 003107FC 38 84 00 0C */ addi r4, r4, 0xc
+/* 80314BA0 00310800 4B FF 64 F1 */ bl VFiPFCLUSTER_GetAppendSize
+/* 80314BA4 00310804 2C 03 00 00 */ cmpwi r3, 0
+/* 80314BA8 00310808 41 82 00 08 */ beq lbl_80314BB0
+/* 80314BAC 0031080C 48 00 00 7C */ b lbl_80314C28
+lbl_80314BB0:
+/* 80314BB0 00310810 80 7E 00 08 */ lwz r3, 8(r30)
+/* 80314BB4 00310814 80 9F 00 0C */ lwz r4, 0xc(r31)
+/* 80314BB8 00310818 80 63 02 64 */ lwz r3, 0x264(r3)
+/* 80314BBC 0031081C 7C 03 EB 96 */ divwu r0, r3, r29
+/* 80314BC0 00310820 7C 00 E9 D6 */ mullw r0, r0, r29
+/* 80314BC4 00310824 7C A0 18 50 */ subf r5, r0, r3
+/* 80314BC8 00310828 7C 05 00 D0 */ neg r0, r5
+/* 80314BCC 0031082C 7C 03 2B 78 */ or r3, r0, r5
+/* 80314BD0 00310830 7C 05 E8 50 */ subf r0, r5, r29
+/* 80314BD4 00310834 7C 63 FE 70 */ srawi r3, r3, 0x1f
+/* 80314BD8 00310838 7C 00 18 38 */ and r0, r0, r3
+/* 80314BDC 0031083C 7C 04 02 14 */ add r0, r4, r0
+/* 80314BE0 00310840 90 1F 00 08 */ stw r0, 8(r31)
+/* 80314BE4 00310844 48 00 00 10 */ b lbl_80314BF4
+lbl_80314BE8:
+/* 80314BE8 00310848 38 00 00 00 */ li r0, 0
+/* 80314BEC 0031084C 90 04 00 0C */ stw r0, 0xc(r4)
+/* 80314BF0 00310850 90 04 00 08 */ stw r0, 8(r4)
+lbl_80314BF4:
+/* 80314BF4 00310854 80 9E 00 08 */ lwz r4, 8(r30)
+/* 80314BF8 00310858 38 60 00 00 */ li r3, 0
+/* 80314BFC 0031085C A0 04 02 7C */ lhz r0, 0x27c(r4)
+/* 80314C00 00310860 54 00 07 BE */ clrlwi r0, r0, 0x1e
+/* 80314C04 00310864 90 1F 00 10 */ stw r0, 0x10(r31)
+/* 80314C08 00310868 80 9E 00 08 */ lwz r4, 8(r30)
+/* 80314C0C 0031086C 80 04 02 84 */ lwz r0, 0x284(r4)
+/* 80314C10 00310870 90 1F 00 14 */ stw r0, 0x14(r31)
+/* 80314C14 00310874 A0 1E 00 2C */ lhz r0, 0x2c(r30)
+/* 80314C18 00310878 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 80314C1C 0031087C 80 9E 00 08 */ lwz r4, 8(r30)
+/* 80314C20 00310880 A0 04 02 7E */ lhz r0, 0x27e(r4)
+/* 80314C24 00310884 90 1F 00 1C */ stw r0, 0x1c(r31)
+lbl_80314C28:
+/* 80314C28 00310888 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80314C2C 0031088C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80314C30 00310890 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80314C34 00310894 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80314C38 00310898 7C 08 03 A6 */ mtlr r0
+/* 80314C3C 0031089C 38 21 00 20 */ addi r1, r1, 0x20
+/* 80314C40 003108A0 4E 80 00 20 */ blr
+
+.global VFiPFFILE_GetOpenedFile
+VFiPFFILE_GetOpenedFile:
+/* 80314C44 003108A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80314C48 003108A8 41 82 00 18 */ beq lbl_80314C60
+/* 80314C4C 003108AC 2C 04 00 00 */ cmpwi r4, 0
+/* 80314C50 003108B0 41 82 00 10 */ beq lbl_80314C60
+/* 80314C54 003108B4 80 03 02 2C */ lwz r0, 0x22c(r3)
+/* 80314C58 003108B8 2C 00 00 00 */ cmpwi r0, 0
+/* 80314C5C 003108BC 40 82 00 0C */ bne lbl_80314C68
+lbl_80314C60:
+/* 80314C60 003108C0 38 60 00 0A */ li r3, 0xa
+/* 80314C64 003108C4 4E 80 00 20 */ blr
+lbl_80314C68:
+/* 80314C68 003108C8 38 A0 00 00 */ li r5, 0
+/* 80314C6C 003108CC 38 00 00 05 */ li r0, 5
+/* 80314C70 003108D0 90 A4 00 00 */ stw r5, 0(r4)
+/* 80314C74 003108D4 38 C0 00 00 */ li r6, 0
+/* 80314C78 003108D8 7C 09 03 A6 */ mtctr r0
+lbl_80314C7C:
+/* 80314C7C 003108DC 81 03 02 2C */ lwz r8, 0x22c(r3)
+/* 80314C80 003108E0 7C E8 32 14 */ add r7, r8, r6
+/* 80314C84 003108E4 80 A7 00 40 */ lwz r5, 0x40(r7)
+/* 80314C88 003108E8 54 A0 07 FF */ clrlwi. r0, r5, 0x1f
+/* 80314C8C 003108EC 41 82 00 40 */ beq lbl_80314CCC
+/* 80314C90 003108F0 54 A0 07 BD */ rlwinm. r0, r5, 0, 0x1e, 0x1e
+/* 80314C94 003108F4 41 82 00 38 */ beq lbl_80314CCC
+/* 80314C98 003108F8 80 07 02 A8 */ lwz r0, 0x2a8(r7)
+/* 80314C9C 003108FC 7C 08 00 40 */ cmplw r8, r0
+/* 80314CA0 00310900 40 82 00 2C */ bne lbl_80314CCC
+/* 80314CA4 00310904 80 A3 02 38 */ lwz r5, 0x238(r3)
+/* 80314CA8 00310908 80 07 02 B4 */ lwz r0, 0x2b4(r7)
+/* 80314CAC 0031090C 7C 05 00 40 */ cmplw r5, r0
+/* 80314CB0 00310910 40 82 00 1C */ bne lbl_80314CCC
+/* 80314CB4 00310914 A0 A3 02 3C */ lhz r5, 0x23c(r3)
+/* 80314CB8 00310918 A0 07 02 B8 */ lhz r0, 0x2b8(r7)
+/* 80314CBC 0031091C 7C 05 00 40 */ cmplw r5, r0
+/* 80314CC0 00310920 40 82 00 0C */ bne lbl_80314CCC
+/* 80314CC4 00310924 38 07 00 7C */ addi r0, r7, 0x7c
+/* 80314CC8 00310928 90 04 00 00 */ stw r0, 0(r4)
+lbl_80314CCC:
+/* 80314CCC 0031092C 38 C6 02 90 */ addi r6, r6, 0x290
+/* 80314CD0 00310930 42 00 FF AC */ bdnz lbl_80314C7C
+/* 80314CD4 00310934 38 60 00 00 */ li r3, 0
+/* 80314CD8 00310938 4E 80 00 20 */ blr
+
+.global VFiPFFILE_FinalizeAllFiles
+VFiPFFILE_FinalizeAllFiles:
+/* 80314CDC 0031093C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80314CE0 00310940 7C 08 02 A6 */ mflr r0
+/* 80314CE4 00310944 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80314CE8 00310948 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80314CEC 0031094C 3B E0 00 00 */ li r31, 0
+/* 80314CF0 00310950 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80314CF4 00310954 3B C0 00 00 */ li r30, 0
+/* 80314CF8 00310958 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80314CFC 0031095C 7C 7D 1B 78 */ mr r29, r3
+lbl_80314D00:
+/* 80314D00 00310960 57 C0 04 3E */ clrlwi r0, r30, 0x10
+/* 80314D04 00310964 1C 00 02 90 */ mulli r0, r0, 0x290
+/* 80314D08 00310968 7C 7D 02 14 */ add r3, r29, r0
+/* 80314D0C 0031096C 93 E3 00 40 */ stw r31, 0x40(r3)
+/* 80314D10 00310970 38 63 00 44 */ addi r3, r3, 0x44
+/* 80314D14 00310974 4B FF C4 21 */ bl VFiPFFAT_FinalizeFFD
+/* 80314D18 00310978 3B DE 00 01 */ addi r30, r30, 1
+/* 80314D1C 0031097C 28 1E 00 05 */ cmplwi r30, 5
+/* 80314D20 00310980 41 80 FF E0 */ blt lbl_80314D00
+/* 80314D24 00310984 80 9D 0D 10 */ lwz r4, 0xd10(r29)
+/* 80314D28 00310988 38 00 00 00 */ li r0, 0
+/* 80314D2C 0031098C 80 7D 0D 40 */ lwz r3, 0xd40(r29)
+/* 80314D30 00310990 54 87 00 3C */ rlwinm r7, r4, 0, 0, 0x1e
+/* 80314D34 00310994 80 BD 0D 70 */ lwz r5, 0xd70(r29)
+/* 80314D38 00310998 54 66 00 3C */ rlwinm r6, r3, 0, 0, 0x1e
+/* 80314D3C 0031099C 80 9D 0D A0 */ lwz r4, 0xda0(r29)
+/* 80314D40 003109A0 80 7D 0D D0 */ lwz r3, 0xdd0(r29)
+/* 80314D44 003109A4 54 A5 00 3C */ rlwinm r5, r5, 0, 0, 0x1e
+/* 80314D48 003109A8 54 84 00 3C */ rlwinm r4, r4, 0, 0, 0x1e
+/* 80314D4C 003109AC 90 FD 0D 10 */ stw r7, 0xd10(r29)
+/* 80314D50 003109B0 54 63 00 3C */ rlwinm r3, r3, 0, 0, 0x1e
+/* 80314D54 003109B4 90 DD 0D 40 */ stw r6, 0xd40(r29)
+/* 80314D58 003109B8 90 BD 0D 70 */ stw r5, 0xd70(r29)
+/* 80314D5C 003109BC 90 9D 0D A0 */ stw r4, 0xda0(r29)
+/* 80314D60 003109C0 90 7D 0D D0 */ stw r3, 0xdd0(r29)
+/* 80314D64 003109C4 90 1D 15 E0 */ stw r0, 0x15e0(r29)
+/* 80314D68 003109C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80314D6C 003109CC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80314D70 003109D0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80314D74 003109D4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80314D78 003109D8 7C 08 03 A6 */ mtlr r0
+/* 80314D7C 003109DC 38 21 00 20 */ addi r1, r1, 0x20
+/* 80314D80 003109E0 4E 80 00 20 */ blr
+
+.global VFiPFFILE_fopen
+VFiPFFILE_fopen:
+/* 80314D84 003109E4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80314D88 003109E8 7C 08 02 A6 */ mflr r0
+/* 80314D8C 003109EC 2C 05 00 00 */ cmpwi r5, 0
+/* 80314D90 003109F0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80314D94 003109F4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80314D98 003109F8 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80314D9C 003109FC 7C BE 2B 78 */ mr r30, r5
+/* 80314DA0 00310A00 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80314DA4 00310A04 7C 9D 23 78 */ mr r29, r4
+/* 80314DA8 00310A08 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80314DAC 00310A0C 7C 7C 1B 78 */ mr r28, r3
+/* 80314DB0 00310A10 40 82 00 1C */ bne lbl_80314DCC
+/* 80314DB4 00310A14 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314DB8 00310A18 38 00 00 0A */ li r0, 0xa
+/* 80314DBC 00310A1C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314DC0 00310A20 38 60 00 0A */ li r3, 0xa
+/* 80314DC4 00310A24 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80314DC8 00310A28 48 00 00 D0 */ b lbl_80314E98
+lbl_80314DCC:
+/* 80314DCC 00310A2C 38 00 00 00 */ li r0, 0
+/* 80314DD0 00310A30 2C 03 00 00 */ cmpwi r3, 0
+/* 80314DD4 00310A34 90 05 00 00 */ stw r0, 0(r5)
+/* 80314DD8 00310A38 40 82 00 1C */ bne lbl_80314DF4
+/* 80314DDC 00310A3C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314DE0 00310A40 38 00 00 0A */ li r0, 0xa
+/* 80314DE4 00310A44 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314DE8 00310A48 38 60 00 0A */ li r3, 0xa
+/* 80314DEC 00310A4C 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80314DF0 00310A50 48 00 00 A8 */ b lbl_80314E98
+lbl_80314DF4:
+/* 80314DF4 00310A54 48 00 20 A1 */ bl VFiPFPATH_GetVolumeFromPath
+/* 80314DF8 00310A58 2C 03 00 00 */ cmpwi r3, 0
+/* 80314DFC 00310A5C 7C 7F 1B 78 */ mr r31, r3
+/* 80314E00 00310A60 40 82 00 1C */ bne lbl_80314E1C
+/* 80314E04 00310A64 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314E08 00310A68 38 00 00 0A */ li r0, 0xa
+/* 80314E0C 00310A6C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314E10 00310A70 38 60 00 0A */ li r3, 0xa
+/* 80314E14 00310A74 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80314E18 00310A78 48 00 00 80 */ b lbl_80314E98
+lbl_80314E1C:
+/* 80314E1C 00310A7C 48 00 45 51 */ bl VFiPFVOL_CheckForRead
+/* 80314E20 00310A80 2C 03 00 00 */ cmpwi r3, 0
+/* 80314E24 00310A84 41 82 00 18 */ beq lbl_80314E3C
+/* 80314E28 00310A88 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314E2C 00310A8C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314E30 00310A90 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80314E34 00310A94 90 7F 18 6C */ stw r3, 0x186c(r31)
+/* 80314E38 00310A98 48 00 00 60 */ b lbl_80314E98
+lbl_80314E3C:
+/* 80314E3C 00310A9C 7F E3 FB 78 */ mr r3, r31
+/* 80314E40 00310AA0 4B FF 0F 69 */ bl VFiPFDRV_IsWProtected
+/* 80314E44 00310AA4 2C 03 00 00 */ cmpwi r3, 0
+/* 80314E48 00310AA8 41 82 00 14 */ beq lbl_80314E5C
+/* 80314E4C 00310AAC 2C 1D 00 02 */ cmpwi r29, 2
+/* 80314E50 00310AB0 41 82 00 0C */ beq lbl_80314E5C
+/* 80314E54 00310AB4 38 60 00 0B */ li r3, 0xb
+/* 80314E58 00310AB8 48 00 00 40 */ b lbl_80314E98
+lbl_80314E5C:
+/* 80314E5C 00310ABC 7F E3 FB 78 */ mr r3, r31
+/* 80314E60 00310AC0 7F 84 E3 78 */ mr r4, r28
+/* 80314E64 00310AC4 7F A5 EB 78 */ mr r5, r29
+/* 80314E68 00310AC8 7F C6 F3 78 */ mr r6, r30
+/* 80314E6C 00310ACC 4B FF F4 A9 */ bl VFiPFFILE_p_fopen
+/* 80314E70 00310AD0 2C 03 00 00 */ cmpwi r3, 0
+/* 80314E74 00310AD4 41 82 00 18 */ beq lbl_80314E8C
+/* 80314E78 00310AD8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314E7C 00310ADC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314E80 00310AE0 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80314E84 00310AE4 90 7F 18 6C */ stw r3, 0x186c(r31)
+/* 80314E88 00310AE8 48 00 00 10 */ b lbl_80314E98
+lbl_80314E8C:
+/* 80314E8C 00310AEC 80 9F 15 E0 */ lwz r4, 0x15e0(r31)
+/* 80314E90 00310AF0 38 04 00 01 */ addi r0, r4, 1
+/* 80314E94 00310AF4 90 1F 15 E0 */ stw r0, 0x15e0(r31)
+lbl_80314E98:
+/* 80314E98 00310AF8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80314E9C 00310AFC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80314EA0 00310B00 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80314EA4 00310B04 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80314EA8 00310B08 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 80314EAC 00310B0C 7C 08 03 A6 */ mtlr r0
+/* 80314EB0 00310B10 38 21 00 20 */ addi r1, r1, 0x20
+/* 80314EB4 00310B14 4E 80 00 20 */ blr
+
+.global VFiPFFILE_fclose
+VFiPFFILE_fclose:
+/* 80314EB8 00310B18 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80314EBC 00310B1C 7C 08 02 A6 */ mflr r0
+/* 80314EC0 00310B20 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314EC4 00310B24 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80314EC8 00310B28 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314ECC 00310B2C 7C 04 18 40 */ cmplw r4, r3
+/* 80314ED0 00310B30 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80314ED4 00310B34 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80314ED8 00310B38 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80314EDC 00310B3C 7C 7D 1B 78 */ mr r29, r3
+/* 80314EE0 00310B40 41 81 00 14 */ bgt lbl_80314EF4
+/* 80314EE4 00310B44 3C 84 00 02 */ addis r4, r4, 2
+/* 80314EE8 00310B48 38 04 7F B8 */ addi r0, r4, 0x7fb8
+/* 80314EEC 00310B4C 7C 00 18 40 */ cmplw r0, r3
+/* 80314EF0 00310B50 40 80 00 1C */ bge lbl_80314F0C
+lbl_80314EF4:
+/* 80314EF4 00310B54 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314EF8 00310B58 38 00 00 0A */ li r0, 0xa
+/* 80314EFC 00310B5C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314F00 00310B60 38 60 00 0A */ li r3, 0xa
+/* 80314F04 00310B64 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80314F08 00310B68 48 00 02 F0 */ b lbl_803151F8
+lbl_80314F0C:
+/* 80314F0C 00310B6C 2C 03 00 00 */ cmpwi r3, 0
+/* 80314F10 00310B70 40 82 00 0C */ bne lbl_80314F1C
+/* 80314F14 00310B74 3B E0 00 00 */ li r31, 0
+/* 80314F18 00310B78 48 00 00 0C */ b lbl_80314F24
+lbl_80314F1C:
+/* 80314F1C 00310B7C 80 63 00 08 */ lwz r3, 8(r3)
+/* 80314F20 00310B80 83 E3 02 68 */ lwz r31, 0x268(r3)
+lbl_80314F24:
+/* 80314F24 00310B84 2C 1F 00 00 */ cmpwi r31, 0
+/* 80314F28 00310B88 40 82 00 1C */ bne lbl_80314F44
+/* 80314F2C 00310B8C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314F30 00310B90 38 00 00 0A */ li r0, 0xa
+/* 80314F34 00310B94 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314F38 00310B98 38 60 00 0A */ li r3, 0xa
+/* 80314F3C 00310B9C 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80314F40 00310BA0 48 00 02 B8 */ b lbl_803151F8
+lbl_80314F44:
+/* 80314F44 00310BA4 7F E3 FB 78 */ mr r3, r31
+/* 80314F48 00310BA8 48 00 44 25 */ bl VFiPFVOL_CheckForRead
+/* 80314F4C 00310BAC 2C 03 00 00 */ cmpwi r3, 0
+/* 80314F50 00310BB0 7C 7E 1B 78 */ mr r30, r3
+/* 80314F54 00310BB4 41 82 00 18 */ beq lbl_80314F6C
+/* 80314F58 00310BB8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314F5C 00310BBC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314F60 00310BC0 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80314F64 00310BC4 90 7F 18 6C */ stw r3, 0x186c(r31)
+/* 80314F68 00310BC8 48 00 02 90 */ b lbl_803151F8
+lbl_80314F6C:
+/* 80314F6C 00310BCC 7F E3 FB 78 */ mr r3, r31
+/* 80314F70 00310BD0 4B FF 0E 39 */ bl VFiPFDRV_IsWProtected
+/* 80314F74 00310BD4 2C 03 00 00 */ cmpwi r3, 0
+/* 80314F78 00310BD8 41 82 00 18 */ beq lbl_80314F90
+/* 80314F7C 00310BDC 80 1D 00 04 */ lwz r0, 4(r29)
+/* 80314F80 00310BE0 2C 00 00 02 */ cmpwi r0, 2
+/* 80314F84 00310BE4 41 82 00 0C */ beq lbl_80314F90
+/* 80314F88 00310BE8 38 60 00 0B */ li r3, 0xb
+/* 80314F8C 00310BEC 48 00 02 6C */ b lbl_803151F8
+lbl_80314F90:
+/* 80314F90 00310BF0 2C 1D 00 00 */ cmpwi r29, 0
+/* 80314F94 00310BF4 41 82 00 34 */ beq lbl_80314FC8
+/* 80314F98 00310BF8 80 7D 00 08 */ lwz r3, 8(r29)
+/* 80314F9C 00310BFC 2C 03 00 00 */ cmpwi r3, 0
+/* 80314FA0 00310C00 41 82 00 28 */ beq lbl_80314FC8
+/* 80314FA4 00310C04 80 1D 00 00 */ lwz r0, 0(r29)
+/* 80314FA8 00310C08 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80314FAC 00310C0C 41 82 00 1C */ beq lbl_80314FC8
+/* 80314FB0 00310C10 80 03 00 00 */ lwz r0, 0(r3)
+/* 80314FB4 00310C14 54 03 07 FE */ clrlwi r3, r0, 0x1f
+/* 80314FB8 00310C18 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 80314FBC 00310C1C 41 86 00 0C */ beq cr1, lbl_80314FC8
+/* 80314FC0 00310C20 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80314FC4 00310C24 40 82 00 20 */ bne lbl_80314FE4
+lbl_80314FC8:
+/* 80314FC8 00310C28 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314FCC 00310C2C 38 00 00 0A */ li r0, 0xa
+/* 80314FD0 00310C30 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314FD4 00310C34 38 60 00 0A */ li r3, 0xa
+/* 80314FD8 00310C38 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80314FDC 00310C3C 90 1F 18 6C */ stw r0, 0x186c(r31)
+/* 80314FE0 00310C40 48 00 02 18 */ b lbl_803151F8
+lbl_80314FE4:
+/* 80314FE4 00310C44 41 86 00 08 */ beq cr1, lbl_80314FEC
+/* 80314FE8 00310C48 40 82 00 20 */ bne lbl_80315008
+lbl_80314FEC:
+/* 80314FEC 00310C4C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80314FF0 00310C50 38 00 00 0A */ li r0, 0xa
+/* 80314FF4 00310C54 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80314FF8 00310C58 38 60 00 0A */ li r3, 0xa
+/* 80314FFC 00310C5C 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315000 00310C60 90 1F 18 6C */ stw r0, 0x186c(r31)
+/* 80315004 00310C64 48 00 01 F4 */ b lbl_803151F8
+lbl_80315008:
+/* 80315008 00310C68 93 BF 16 08 */ stw r29, 0x1608(r31)
+/* 8031500C 00310C6C 80 9D 00 08 */ lwz r4, 8(r29)
+/* 80315010 00310C70 A0 64 02 8C */ lhz r3, 0x28c(r4)
+/* 80315014 00310C74 34 03 FF FF */ addic. r0, r3, -1
+/* 80315018 00310C78 41 81 00 50 */ bgt lbl_80315068
+/* 8031501C 00310C7C 88 04 02 58 */ lbz r0, 0x258(r4)
+/* 80315020 00310C80 70 00 00 19 */ andi. r0, r0, 0x19
+/* 80315024 00310C84 40 82 00 44 */ bne lbl_80315068
+/* 80315028 00310C88 7F E3 FB 78 */ mr r3, r31
+/* 8031502C 00310C8C 4B FF 0D 7D */ bl VFiPFDRV_IsWProtected
+/* 80315030 00310C90 2C 03 00 00 */ cmpwi r3, 0
+/* 80315034 00310C94 40 82 00 34 */ bne lbl_80315068
+/* 80315038 00310C98 80 7D 00 08 */ lwz r3, 8(r29)
+/* 8031503C 00310C9C 80 03 00 00 */ lwz r0, 0(r3)
+/* 80315040 00310CA0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 80315044 00310CA4 40 82 00 14 */ bne lbl_80315058
+/* 80315048 00310CA8 80 1F 18 74 */ lwz r0, 0x1874(r31)
+/* 8031504C 00310CAC 54 00 07 FE */ clrlwi r0, r0, 0x1f
+/* 80315050 00310CB0 28 00 00 01 */ cmplwi r0, 1
+/* 80315054 00310CB4 41 82 00 14 */ beq lbl_80315068
+lbl_80315058:
+/* 80315058 00310CB8 38 63 00 3C */ addi r3, r3, 0x3c
+/* 8031505C 00310CBC 38 80 00 01 */ li r4, 1
+/* 80315060 00310CC0 4B FF 78 91 */ bl VFiPFENT_updateEntry
+/* 80315064 00310CC4 7C 7E 1B 78 */ mr r30, r3
+lbl_80315068:
+/* 80315068 00310CC8 A0 9D 00 2C */ lhz r4, 0x2c(r29)
+/* 8031506C 00310CCC 2C 04 00 00 */ cmpwi r4, 0
+/* 80315070 00310CD0 41 82 00 94 */ beq lbl_80315104
+/* 80315074 00310CD4 80 BD 00 08 */ lwz r5, 8(r29)
+/* 80315078 00310CD8 A0 05 02 7C */ lhz r0, 0x27c(r5)
+/* 8031507C 00310CDC 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80315080 00310CE0 41 82 00 44 */ beq lbl_803150C4
+/* 80315084 00310CE4 A0 65 02 7E */ lhz r3, 0x27e(r5)
+/* 80315088 00310CE8 38 00 00 00 */ li r0, 0
+/* 8031508C 00310CEC 7C 64 18 50 */ subf r3, r4, r3
+/* 80315090 00310CF0 B0 65 02 7E */ sth r3, 0x27e(r5)
+/* 80315094 00310CF4 B0 1D 00 2C */ sth r0, 0x2c(r29)
+/* 80315098 00310CF8 80 7D 00 08 */ lwz r3, 8(r29)
+/* 8031509C 00310CFC A0 03 02 7E */ lhz r0, 0x27e(r3)
+/* 803150A0 00310D00 2C 00 00 00 */ cmpwi r0, 0
+/* 803150A4 00310D04 40 82 00 0C */ bne lbl_803150B0
+/* 803150A8 00310D08 7F A3 EB 78 */ mr r3, r29
+/* 803150AC 00310D0C 48 00 53 75 */ bl func_8031A420
+lbl_803150B0:
+/* 803150B0 00310D10 80 7D 00 08 */ lwz r3, 8(r29)
+/* 803150B4 00310D14 A0 03 02 7C */ lhz r0, 0x27c(r3)
+/* 803150B8 00310D18 54 00 04 3A */ rlwinm r0, r0, 0, 0x10, 0x1d
+/* 803150BC 00310D1C B0 03 02 7C */ sth r0, 0x27c(r3)
+/* 803150C0 00310D20 48 00 00 44 */ b lbl_80315104
+lbl_803150C4:
+/* 803150C4 00310D24 80 05 02 84 */ lwz r0, 0x284(r5)
+/* 803150C8 00310D28 7C 00 E8 40 */ cmplw r0, r29
+/* 803150CC 00310D2C 41 82 00 0C */ beq lbl_803150D8
+/* 803150D0 00310D30 3B C0 00 19 */ li r30, 0x19
+/* 803150D4 00310D34 48 00 00 30 */ b lbl_80315104
+lbl_803150D8:
+/* 803150D8 00310D38 38 00 00 00 */ li r0, 0
+/* 803150DC 00310D3C 7F A3 EB 78 */ mr r3, r29
+/* 803150E0 00310D40 B0 05 02 7E */ sth r0, 0x27e(r5)
+/* 803150E4 00310D44 B0 1D 00 2C */ sth r0, 0x2c(r29)
+/* 803150E8 00310D48 80 9D 00 08 */ lwz r4, 8(r29)
+/* 803150EC 00310D4C 90 04 02 84 */ stw r0, 0x284(r4)
+/* 803150F0 00310D50 48 00 53 31 */ bl func_8031A420
+/* 803150F4 00310D54 80 7D 00 08 */ lwz r3, 8(r29)
+/* 803150F8 00310D58 A0 03 02 7C */ lhz r0, 0x27c(r3)
+/* 803150FC 00310D5C 54 00 04 3A */ rlwinm r0, r0, 0, 0x10, 0x1d
+/* 80315100 00310D60 B0 03 02 7C */ sth r0, 0x27c(r3)
+lbl_80315104:
+/* 80315104 00310D64 2C 1E 00 00 */ cmpwi r30, 0
+/* 80315108 00310D68 41 82 00 24 */ beq lbl_8031512C
+/* 8031510C 00310D6C 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80315110 00310D70 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80315114 00310D74 93 C3 00 1C */ stw r30, 0x1c(r3)
+/* 80315118 00310D78 80 7D 00 08 */ lwz r3, 8(r29)
+/* 8031511C 00310D7C 80 63 00 38 */ lwz r3, 0x38(r3)
+/* 80315120 00310D80 93 C3 18 6C */ stw r30, 0x186c(r3)
+/* 80315124 00310D84 93 DD 00 18 */ stw r30, 0x18(r29)
+/* 80315128 00310D88 48 00 00 C4 */ b lbl_803151EC
+lbl_8031512C:
+/* 8031512C 00310D8C 80 1F 15 E8 */ lwz r0, 0x15e8(r31)
+/* 80315130 00310D90 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80315134 00310D94 41 82 00 6C */ beq lbl_803151A0
+/* 80315138 00310D98 7F E3 FB 78 */ mr r3, r31
+/* 8031513C 00310D9C 4B FF 59 75 */ bl VFiPFCACHE_FlushFATCache
+/* 80315140 00310DA0 2C 03 00 00 */ cmpwi r3, 0
+/* 80315144 00310DA4 7C 7E 1B 78 */ mr r30, r3
+/* 80315148 00310DA8 41 82 00 24 */ beq lbl_8031516C
+/* 8031514C 00310DAC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315150 00310DB0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315154 00310DB4 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80315158 00310DB8 80 9D 00 08 */ lwz r4, 8(r29)
+/* 8031515C 00310DBC 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 80315160 00310DC0 90 64 18 6C */ stw r3, 0x186c(r4)
+/* 80315164 00310DC4 90 7D 00 18 */ stw r3, 0x18(r29)
+/* 80315168 00310DC8 48 00 00 38 */ b lbl_803151A0
+lbl_8031516C:
+/* 8031516C 00310DCC 7F E3 FB 78 */ mr r3, r31
+/* 80315170 00310DD0 7F A4 EB 78 */ mr r4, r29
+/* 80315174 00310DD4 4B FF 59 71 */ bl VFiPFCACHE_FlushDataCacheSpecific
+/* 80315178 00310DD8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031517C 00310DDC 7C 7E 1B 78 */ mr r30, r3
+/* 80315180 00310DE0 41 82 00 20 */ beq lbl_803151A0
+/* 80315184 00310DE4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315188 00310DE8 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 8031518C 00310DEC 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80315190 00310DF0 80 9D 00 08 */ lwz r4, 8(r29)
+/* 80315194 00310DF4 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 80315198 00310DF8 90 64 18 6C */ stw r3, 0x186c(r4)
+/* 8031519C 00310DFC 90 7D 00 18 */ stw r3, 0x18(r29)
+lbl_803151A0:
+/* 803151A0 00310E00 2C 1E 00 00 */ cmpwi r30, 0
+/* 803151A4 00310E04 40 82 00 48 */ bne lbl_803151EC
+/* 803151A8 00310E08 80 9D 00 08 */ lwz r4, 8(r29)
+/* 803151AC 00310E0C A0 64 02 8C */ lhz r3, 0x28c(r4)
+/* 803151B0 00310E10 38 63 FF FF */ addi r3, r3, -1
+/* 803151B4 00310E14 54 60 04 3F */ clrlwi. r0, r3, 0x10
+/* 803151B8 00310E18 B0 64 02 8C */ sth r3, 0x28c(r4)
+/* 803151BC 00310E1C 40 82 00 18 */ bne lbl_803151D4
+/* 803151C0 00310E20 80 64 00 00 */ lwz r3, 0(r4)
+/* 803151C4 00310E24 38 00 00 00 */ li r0, 0
+/* 803151C8 00310E28 54 63 00 3C */ rlwinm r3, r3, 0, 0, 0x1e
+/* 803151CC 00310E2C 90 64 00 00 */ stw r3, 0(r4)
+/* 803151D0 00310E30 90 04 00 20 */ stw r0, 0x20(r4)
+lbl_803151D4:
+/* 803151D4 00310E34 80 1D 00 00 */ lwz r0, 0(r29)
+/* 803151D8 00310E38 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
+/* 803151DC 00310E3C 90 1D 00 00 */ stw r0, 0(r29)
+/* 803151E0 00310E40 80 7F 15 E0 */ lwz r3, 0x15e0(r31)
+/* 803151E4 00310E44 38 03 FF FF */ addi r0, r3, -1
+/* 803151E8 00310E48 90 1F 15 E0 */ stw r0, 0x15e0(r31)
+lbl_803151EC:
+/* 803151EC 00310E4C 38 00 00 00 */ li r0, 0
+/* 803151F0 00310E50 7F C3 F3 78 */ mr r3, r30
+/* 803151F4 00310E54 90 1F 16 08 */ stw r0, 0x1608(r31)
+lbl_803151F8:
+/* 803151F8 00310E58 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803151FC 00310E5C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80315200 00310E60 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80315204 00310E64 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80315208 00310E68 7C 08 03 A6 */ mtlr r0
+/* 8031520C 00310E6C 38 21 00 20 */ addi r1, r1, 0x20
+/* 80315210 00310E70 4E 80 00 20 */ blr
+
+.global VFiPFFILE_fread
+VFiPFFILE_fread:
+/* 80315214 00310E74 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80315218 00310E78 7C 08 02 A6 */ mflr r0
+/* 8031521C 00310E7C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80315220 00310E80 39 61 00 30 */ addi r11, r1, 0x30
+/* 80315224 00310E84 4B EB 1F 01 */ bl _savegpr_26
+/* 80315228 00310E88 2C 07 00 00 */ cmpwi r7, 0
+/* 8031522C 00310E8C 7C 7A 1B 78 */ mr r26, r3
+/* 80315230 00310E90 7C 9B 23 78 */ mr r27, r4
+/* 80315234 00310E94 7C BC 2B 78 */ mr r28, r5
+/* 80315238 00310E98 7C DF 33 78 */ mr r31, r6
+/* 8031523C 00310E9C 7C FD 3B 78 */ mr r29, r7
+/* 80315240 00310EA0 40 82 00 1C */ bne lbl_8031525C
+/* 80315244 00310EA4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315248 00310EA8 38 00 00 0A */ li r0, 0xa
+/* 8031524C 00310EAC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315250 00310EB0 38 60 00 0A */ li r3, 0xa
+/* 80315254 00310EB4 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315258 00310EB8 48 00 01 BC */ b lbl_80315414
+lbl_8031525C:
+/* 8031525C 00310EBC 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80315260 00310EC0 38 00 00 00 */ li r0, 0
+/* 80315264 00310EC4 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80315268 00310EC8 90 07 00 00 */ stw r0, 0(r7)
+/* 8031526C 00310ECC 7C 03 30 40 */ cmplw r3, r6
+/* 80315270 00310ED0 41 81 00 14 */ bgt lbl_80315284
+/* 80315274 00310ED4 3C 63 00 02 */ addis r3, r3, 2
+/* 80315278 00310ED8 38 03 7F B8 */ addi r0, r3, 0x7fb8
+/* 8031527C 00310EDC 7C 00 30 40 */ cmplw r0, r6
+/* 80315280 00310EE0 40 80 00 1C */ bge lbl_8031529C
+lbl_80315284:
+/* 80315284 00310EE4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315288 00310EE8 38 00 00 0A */ li r0, 0xa
+/* 8031528C 00310EEC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315290 00310EF0 38 60 00 0A */ li r3, 0xa
+/* 80315294 00310EF4 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315298 00310EF8 48 00 01 7C */ b lbl_80315414
+lbl_8031529C:
+/* 8031529C 00310EFC 2C 06 00 00 */ cmpwi r6, 0
+/* 803152A0 00310F00 40 82 00 0C */ bne lbl_803152AC
+/* 803152A4 00310F04 3B C0 00 00 */ li r30, 0
+/* 803152A8 00310F08 48 00 00 0C */ b lbl_803152B4
+lbl_803152AC:
+/* 803152AC 00310F0C 80 66 00 08 */ lwz r3, 8(r6)
+/* 803152B0 00310F10 83 C3 02 68 */ lwz r30, 0x268(r3)
+lbl_803152B4:
+/* 803152B4 00310F14 2C 1E 00 00 */ cmpwi r30, 0
+/* 803152B8 00310F18 40 82 00 2C */ bne lbl_803152E4
+/* 803152BC 00310F1C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803152C0 00310F20 38 00 00 26 */ li r0, 0x26
+/* 803152C4 00310F24 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803152C8 00310F28 38 60 00 26 */ li r3, 0x26
+/* 803152CC 00310F2C 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 803152D0 00310F30 80 86 00 08 */ lwz r4, 8(r6)
+/* 803152D4 00310F34 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 803152D8 00310F38 90 04 18 6C */ stw r0, 0x186c(r4)
+/* 803152DC 00310F3C 90 06 00 18 */ stw r0, 0x18(r6)
+/* 803152E0 00310F40 48 00 01 34 */ b lbl_80315414
+lbl_803152E4:
+/* 803152E4 00310F44 7F C3 F3 78 */ mr r3, r30
+/* 803152E8 00310F48 48 00 40 85 */ bl VFiPFVOL_CheckForRead
+/* 803152EC 00310F4C 2C 03 00 00 */ cmpwi r3, 0
+/* 803152F0 00310F50 41 82 00 18 */ beq lbl_80315308
+/* 803152F4 00310F54 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803152F8 00310F58 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803152FC 00310F5C 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80315300 00310F60 90 7E 18 6C */ stw r3, 0x186c(r30)
+/* 80315304 00310F64 48 00 01 10 */ b lbl_80315414
+lbl_80315308:
+/* 80315308 00310F68 2C 1F 00 00 */ cmpwi r31, 0
+/* 8031530C 00310F6C 41 82 00 34 */ beq lbl_80315340
+/* 80315310 00310F70 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80315314 00310F74 2C 03 00 00 */ cmpwi r3, 0
+/* 80315318 00310F78 41 82 00 28 */ beq lbl_80315340
+/* 8031531C 00310F7C 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80315320 00310F80 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80315324 00310F84 41 82 00 1C */ beq lbl_80315340
+/* 80315328 00310F88 80 03 00 00 */ lwz r0, 0(r3)
+/* 8031532C 00310F8C 54 03 07 FE */ clrlwi r3, r0, 0x1f
+/* 80315330 00310F90 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 80315334 00310F94 41 86 00 0C */ beq cr1, lbl_80315340
+/* 80315338 00310F98 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 8031533C 00310F9C 40 82 00 20 */ bne lbl_8031535C
+lbl_80315340:
+/* 80315340 00310FA0 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315344 00310FA4 38 00 00 26 */ li r0, 0x26
+/* 80315348 00310FA8 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 8031534C 00310FAC 38 60 00 26 */ li r3, 0x26
+/* 80315350 00310FB0 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315354 00310FB4 90 1E 18 6C */ stw r0, 0x186c(r30)
+/* 80315358 00310FB8 48 00 00 BC */ b lbl_80315414
+lbl_8031535C:
+/* 8031535C 00310FBC 41 86 00 08 */ beq cr1, lbl_80315364
+/* 80315360 00310FC0 40 82 00 20 */ bne lbl_80315380
+lbl_80315364:
+/* 80315364 00310FC4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315368 00310FC8 38 00 00 26 */ li r0, 0x26
+/* 8031536C 00310FCC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315370 00310FD0 38 60 00 26 */ li r3, 0x26
+/* 80315374 00310FD4 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315378 00310FD8 90 1E 18 6C */ stw r0, 0x186c(r30)
+/* 8031537C 00310FDC 48 00 00 98 */ b lbl_80315414
+lbl_80315380:
+/* 80315380 00310FE0 2C 1A 00 00 */ cmpwi r26, 0
+/* 80315384 00310FE4 41 82 00 14 */ beq lbl_80315398
+/* 80315388 00310FE8 2C 1C 00 00 */ cmpwi r28, 0
+/* 8031538C 00310FEC 41 82 00 0C */ beq lbl_80315398
+/* 80315390 00310FF0 2C 1B 00 00 */ cmpwi r27, 0
+/* 80315394 00310FF4 40 82 00 2C */ bne lbl_803153C0
+lbl_80315398:
+/* 80315398 00310FF8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 8031539C 00310FFC 38 00 00 0A */ li r0, 0xa
+/* 803153A0 00311000 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803153A4 00311004 38 60 00 0A */ li r3, 0xa
+/* 803153A8 00311008 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 803153AC 0031100C 80 9F 00 08 */ lwz r4, 8(r31)
+/* 803153B0 00311010 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 803153B4 00311014 90 04 18 6C */ stw r0, 0x186c(r4)
+/* 803153B8 00311018 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 803153BC 0031101C 48 00 00 58 */ b lbl_80315414
+lbl_803153C0:
+/* 803153C0 00311020 93 FE 16 08 */ stw r31, 0x1608(r30)
+/* 803153C4 00311024 7F C3 F3 78 */ mr r3, r30
+/* 803153C8 00311028 7F 44 D3 78 */ mr r4, r26
+/* 803153CC 0031102C 7F 65 DB 78 */ mr r5, r27
+/* 803153D0 00311030 7F 86 E3 78 */ mr r6, r28
+/* 803153D4 00311034 7F E7 FB 78 */ mr r7, r31
+/* 803153D8 00311038 39 01 00 08 */ addi r8, r1, 8
+/* 803153DC 0031103C 4B FF F4 29 */ bl VFiPFFILE_p_fread
+/* 803153E0 00311040 80 81 00 08 */ lwz r4, 8(r1)
+/* 803153E4 00311044 2C 03 00 00 */ cmpwi r3, 0
+/* 803153E8 00311048 38 00 00 00 */ li r0, 0
+/* 803153EC 0031104C 90 9D 00 00 */ stw r4, 0(r29)
+/* 803153F0 00311050 90 1E 16 08 */ stw r0, 0x1608(r30)
+/* 803153F4 00311054 41 82 00 20 */ beq lbl_80315414
+/* 803153F8 00311058 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803153FC 0031105C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315400 00311060 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80315404 00311064 80 9F 00 08 */ lwz r4, 8(r31)
+/* 80315408 00311068 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 8031540C 0031106C 90 64 18 6C */ stw r3, 0x186c(r4)
+/* 80315410 00311070 90 7F 00 18 */ stw r3, 0x18(r31)
+lbl_80315414:
+/* 80315414 00311074 39 61 00 30 */ addi r11, r1, 0x30
+/* 80315418 00311078 4B EB 1D 59 */ bl _restgpr_26
+/* 8031541C 0031107C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80315420 00311080 7C 08 03 A6 */ mtlr r0
+/* 80315424 00311084 38 21 00 30 */ addi r1, r1, 0x30
+/* 80315428 00311088 4E 80 00 20 */ blr
+
+.global VFiPFFILE_fwrite
+VFiPFFILE_fwrite:
+/* 8031542C 0031108C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80315430 00311090 7C 08 02 A6 */ mflr r0
+/* 80315434 00311094 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80315438 00311098 39 61 00 30 */ addi r11, r1, 0x30
+/* 8031543C 0031109C 4B EB 1C E9 */ bl _savegpr_26
+/* 80315440 003110A0 2C 07 00 00 */ cmpwi r7, 0
+/* 80315444 003110A4 7C 7A 1B 78 */ mr r26, r3
+/* 80315448 003110A8 7C 9B 23 78 */ mr r27, r4
+/* 8031544C 003110AC 7C BD 2B 78 */ mr r29, r5
+/* 80315450 003110B0 7C DF 33 78 */ mr r31, r6
+/* 80315454 003110B4 7C FC 3B 78 */ mr r28, r7
+/* 80315458 003110B8 40 82 00 1C */ bne lbl_80315474
+/* 8031545C 003110BC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315460 003110C0 38 00 00 0A */ li r0, 0xa
+/* 80315464 003110C4 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315468 003110C8 38 60 00 0A */ li r3, 0xa
+/* 8031546C 003110CC 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315470 003110D0 48 00 01 FC */ b lbl_8031566C
+lbl_80315474:
+/* 80315474 003110D4 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80315478 003110D8 38 00 00 00 */ li r0, 0
+/* 8031547C 003110DC 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80315480 003110E0 90 07 00 00 */ stw r0, 0(r7)
+/* 80315484 003110E4 7C 03 30 40 */ cmplw r3, r6
+/* 80315488 003110E8 41 81 00 14 */ bgt lbl_8031549C
+/* 8031548C 003110EC 3C 63 00 02 */ addis r3, r3, 2
+/* 80315490 003110F0 38 03 7F B8 */ addi r0, r3, 0x7fb8
+/* 80315494 003110F4 7C 00 30 40 */ cmplw r0, r6
+/* 80315498 003110F8 40 80 00 1C */ bge lbl_803154B4
+lbl_8031549C:
+/* 8031549C 003110FC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803154A0 00311100 38 00 00 0A */ li r0, 0xa
+/* 803154A4 00311104 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803154A8 00311108 38 60 00 0A */ li r3, 0xa
+/* 803154AC 0031110C 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 803154B0 00311110 48 00 01 BC */ b lbl_8031566C
+lbl_803154B4:
+/* 803154B4 00311114 2C 06 00 00 */ cmpwi r6, 0
+/* 803154B8 00311118 40 82 00 0C */ bne lbl_803154C4
+/* 803154BC 0031111C 3B C0 00 00 */ li r30, 0
+/* 803154C0 00311120 48 00 00 0C */ b lbl_803154CC
+lbl_803154C4:
+/* 803154C4 00311124 80 66 00 08 */ lwz r3, 8(r6)
+/* 803154C8 00311128 83 C3 02 68 */ lwz r30, 0x268(r3)
+lbl_803154CC:
+/* 803154CC 0031112C 2C 1E 00 00 */ cmpwi r30, 0
+/* 803154D0 00311130 40 82 00 2C */ bne lbl_803154FC
+/* 803154D4 00311134 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803154D8 00311138 38 00 00 26 */ li r0, 0x26
+/* 803154DC 0031113C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803154E0 00311140 38 60 00 26 */ li r3, 0x26
+/* 803154E4 00311144 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 803154E8 00311148 80 86 00 08 */ lwz r4, 8(r6)
+/* 803154EC 0031114C 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 803154F0 00311150 90 04 18 6C */ stw r0, 0x186c(r4)
+/* 803154F4 00311154 90 06 00 18 */ stw r0, 0x18(r6)
+/* 803154F8 00311158 48 00 01 74 */ b lbl_8031566C
+lbl_803154FC:
+/* 803154FC 0031115C 7F C3 F3 78 */ mr r3, r30
+/* 80315500 00311160 48 00 40 29 */ bl VFiPFVOL_CheckForWrite
+/* 80315504 00311164 2C 03 00 00 */ cmpwi r3, 0
+/* 80315508 00311168 41 82 00 18 */ beq lbl_80315520
+/* 8031550C 0031116C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315510 00311170 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315514 00311174 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80315518 00311178 90 7E 18 6C */ stw r3, 0x186c(r30)
+/* 8031551C 0031117C 48 00 01 50 */ b lbl_8031566C
+lbl_80315520:
+/* 80315520 00311180 2C 1F 00 00 */ cmpwi r31, 0
+/* 80315524 00311184 41 82 00 34 */ beq lbl_80315558
+/* 80315528 00311188 80 7F 00 08 */ lwz r3, 8(r31)
+/* 8031552C 0031118C 2C 03 00 00 */ cmpwi r3, 0
+/* 80315530 00311190 41 82 00 28 */ beq lbl_80315558
+/* 80315534 00311194 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80315538 00311198 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8031553C 0031119C 41 82 00 1C */ beq lbl_80315558
+/* 80315540 003111A0 80 03 00 00 */ lwz r0, 0(r3)
+/* 80315544 003111A4 54 03 07 FE */ clrlwi r3, r0, 0x1f
+/* 80315548 003111A8 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 8031554C 003111AC 41 86 00 0C */ beq cr1, lbl_80315558
+/* 80315550 003111B0 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80315554 003111B4 40 82 00 20 */ bne lbl_80315574
+lbl_80315558:
+/* 80315558 003111B8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 8031555C 003111BC 38 00 00 26 */ li r0, 0x26
+/* 80315560 003111C0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315564 003111C4 38 60 00 26 */ li r3, 0x26
+/* 80315568 003111C8 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 8031556C 003111CC 90 1E 18 6C */ stw r0, 0x186c(r30)
+/* 80315570 003111D0 48 00 00 FC */ b lbl_8031566C
+lbl_80315574:
+/* 80315574 003111D4 41 86 00 08 */ beq cr1, lbl_8031557C
+/* 80315578 003111D8 40 82 00 20 */ bne lbl_80315598
+lbl_8031557C:
+/* 8031557C 003111DC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315580 003111E0 38 00 00 26 */ li r0, 0x26
+/* 80315584 003111E4 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315588 003111E8 38 60 00 26 */ li r3, 0x26
+/* 8031558C 003111EC 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315590 003111F0 90 1E 18 6C */ stw r0, 0x186c(r30)
+/* 80315594 003111F4 48 00 00 D8 */ b lbl_8031566C
+lbl_80315598:
+/* 80315598 003111F8 2C 1A 00 00 */ cmpwi r26, 0
+/* 8031559C 003111FC 41 82 00 14 */ beq lbl_803155B0
+/* 803155A0 00311200 2C 1D 00 00 */ cmpwi r29, 0
+/* 803155A4 00311204 41 82 00 0C */ beq lbl_803155B0
+/* 803155A8 00311208 2C 1B 00 00 */ cmpwi r27, 0
+/* 803155AC 0031120C 40 82 00 2C */ bne lbl_803155D8
+lbl_803155B0:
+/* 803155B0 00311210 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803155B4 00311214 38 00 00 0A */ li r0, 0xa
+/* 803155B8 00311218 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803155BC 0031121C 38 60 00 0A */ li r3, 0xa
+/* 803155C0 00311220 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 803155C4 00311224 80 9F 00 08 */ lwz r4, 8(r31)
+/* 803155C8 00311228 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 803155CC 0031122C 90 04 18 6C */ stw r0, 0x186c(r4)
+/* 803155D0 00311230 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 803155D4 00311234 48 00 00 98 */ b lbl_8031566C
+lbl_803155D8:
+/* 803155D8 00311238 93 FE 16 08 */ stw r31, 0x1608(r30)
+/* 803155DC 0031123C 7F C3 F3 78 */ mr r3, r30
+/* 803155E0 00311240 7F 44 D3 78 */ mr r4, r26
+/* 803155E4 00311244 7F 65 DB 78 */ mr r5, r27
+/* 803155E8 00311248 7F A6 EB 78 */ mr r6, r29
+/* 803155EC 0031124C 7F E7 FB 78 */ mr r7, r31
+/* 803155F0 00311250 39 01 00 08 */ addi r8, r1, 8
+/* 803155F4 00311254 4B FF F2 DD */ bl VFiPFFILE_p_fwrite
+/* 803155F8 00311258 80 81 00 08 */ lwz r4, 8(r1)
+/* 803155FC 0031125C 2C 03 00 00 */ cmpwi r3, 0
+/* 80315600 00311260 38 00 00 00 */ li r0, 0
+/* 80315604 00311264 7C 7D 1B 78 */ mr r29, r3
+/* 80315608 00311268 90 9C 00 00 */ stw r4, 0(r28)
+/* 8031560C 0031126C 90 1E 16 08 */ stw r0, 0x1608(r30)
+/* 80315610 00311270 41 82 00 20 */ beq lbl_80315630
+/* 80315614 00311274 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315618 00311278 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 8031561C 0031127C 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80315620 00311280 80 9F 00 08 */ lwz r4, 8(r31)
+/* 80315624 00311284 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 80315628 00311288 90 64 18 6C */ stw r3, 0x186c(r4)
+/* 8031562C 0031128C 90 7F 00 18 */ stw r3, 0x18(r31)
+lbl_80315630:
+/* 80315630 00311290 80 01 00 08 */ lwz r0, 8(r1)
+/* 80315634 00311294 2C 00 00 00 */ cmpwi r0, 0
+/* 80315638 00311298 41 82 00 30 */ beq lbl_80315668
+/* 8031563C 0031129C 80 9F 00 08 */ lwz r4, 8(r31)
+/* 80315640 003112A0 38 64 02 62 */ addi r3, r4, 0x262
+/* 80315644 003112A4 38 84 02 60 */ addi r4, r4, 0x260
+/* 80315648 003112A8 4B FF 75 31 */ bl VFiPFENT_getcurrentDateTimeForEnt
+/* 8031564C 003112AC 80 7F 00 08 */ lwz r3, 8(r31)
+/* 80315650 003112B0 A0 03 02 62 */ lhz r0, 0x262(r3)
+/* 80315654 003112B4 B0 03 02 5E */ sth r0, 0x25e(r3)
+/* 80315658 003112B8 80 7F 00 08 */ lwz r3, 8(r31)
+/* 8031565C 003112BC 80 03 00 00 */ lwz r0, 0(r3)
+/* 80315660 003112C0 60 00 00 04 */ ori r0, r0, 4
+/* 80315664 003112C4 90 03 00 00 */ stw r0, 0(r3)
+lbl_80315668:
+/* 80315668 003112C8 7F A3 EB 78 */ mr r3, r29
+lbl_8031566C:
+/* 8031566C 003112CC 39 61 00 30 */ addi r11, r1, 0x30
+/* 80315670 003112D0 4B EB 1B 01 */ bl _restgpr_26
+/* 80315674 003112D4 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80315678 003112D8 7C 08 03 A6 */ mtlr r0
+/* 8031567C 003112DC 38 21 00 30 */ addi r1, r1, 0x30
+/* 80315680 003112E0 4E 80 00 20 */ blr
+
+.global VFiPFFILE_fseek
+VFiPFFILE_fseek:
+/* 80315684 003112E4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80315688 003112E8 7C 08 02 A6 */ mflr r0
+/* 8031568C 003112EC 3C C0 80 58 */ lis r6, lbl_8057F5C8@ha
+/* 80315690 003112F0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80315694 003112F4 38 C6 F5 C8 */ addi r6, r6, lbl_8057F5C8@l
+/* 80315698 003112F8 7C 06 18 40 */ cmplw r6, r3
+/* 8031569C 003112FC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 803156A0 00311300 7C 7F 1B 78 */ mr r31, r3
+/* 803156A4 00311304 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 803156A8 00311308 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 803156AC 0031130C 7C BD 2B 78 */ mr r29, r5
+/* 803156B0 00311310 93 81 00 10 */ stw r28, 0x10(r1)
+/* 803156B4 00311314 7C 9C 23 78 */ mr r28, r4
+/* 803156B8 00311318 41 81 00 14 */ bgt lbl_803156CC
+/* 803156BC 0031131C 3C 86 00 02 */ addis r4, r6, 2
+/* 803156C0 00311320 38 04 7F B8 */ addi r0, r4, 0x7fb8
+/* 803156C4 00311324 7C 00 18 40 */ cmplw r0, r3
+/* 803156C8 00311328 40 80 00 1C */ bge lbl_803156E4
+lbl_803156CC:
+/* 803156CC 0031132C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803156D0 00311330 38 00 00 0A */ li r0, 0xa
+/* 803156D4 00311334 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803156D8 00311338 38 60 00 0A */ li r3, 0xa
+/* 803156DC 0031133C 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 803156E0 00311340 48 00 02 F8 */ b lbl_803159D8
+lbl_803156E4:
+/* 803156E4 00311344 2C 03 00 00 */ cmpwi r3, 0
+/* 803156E8 00311348 40 82 00 0C */ bne lbl_803156F4
+/* 803156EC 0031134C 3B C0 00 00 */ li r30, 0
+/* 803156F0 00311350 48 00 00 0C */ b lbl_803156FC
+lbl_803156F4:
+/* 803156F4 00311354 80 63 00 08 */ lwz r3, 8(r3)
+/* 803156F8 00311358 83 C3 02 68 */ lwz r30, 0x268(r3)
+lbl_803156FC:
+/* 803156FC 0031135C 2C 1E 00 00 */ cmpwi r30, 0
+/* 80315700 00311360 40 82 00 1C */ bne lbl_8031571C
+/* 80315704 00311364 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315708 00311368 38 00 00 26 */ li r0, 0x26
+/* 8031570C 0031136C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315710 00311370 38 60 00 26 */ li r3, 0x26
+/* 80315714 00311374 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315718 00311378 48 00 02 C0 */ b lbl_803159D8
+lbl_8031571C:
+/* 8031571C 0031137C 7F C3 F3 78 */ mr r3, r30
+/* 80315720 00311380 48 00 3C 4D */ bl VFiPFVOL_CheckForRead
+/* 80315724 00311384 2C 03 00 00 */ cmpwi r3, 0
+/* 80315728 00311388 41 82 00 18 */ beq lbl_80315740
+/* 8031572C 0031138C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315730 00311390 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315734 00311394 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80315738 00311398 90 7E 18 6C */ stw r3, 0x186c(r30)
+/* 8031573C 0031139C 48 00 02 9C */ b lbl_803159D8
+lbl_80315740:
+/* 80315740 003113A0 2C 1F 00 00 */ cmpwi r31, 0
+/* 80315744 003113A4 41 82 00 34 */ beq lbl_80315778
+/* 80315748 003113A8 80 9F 00 08 */ lwz r4, 8(r31)
+/* 8031574C 003113AC 2C 04 00 00 */ cmpwi r4, 0
+/* 80315750 003113B0 41 82 00 28 */ beq lbl_80315778
+/* 80315754 003113B4 80 1F 00 00 */ lwz r0, 0(r31)
+/* 80315758 003113B8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8031575C 003113BC 41 82 00 1C */ beq lbl_80315778
+/* 80315760 003113C0 80 04 00 00 */ lwz r0, 0(r4)
+/* 80315764 003113C4 54 05 07 FE */ clrlwi r5, r0, 0x1f
+/* 80315768 003113C8 2C 85 00 00 */ cmpwi cr1, r5, 0
+/* 8031576C 003113CC 41 86 00 0C */ beq cr1, lbl_80315778
+/* 80315770 003113D0 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80315774 003113D4 40 82 00 20 */ bne lbl_80315794
+lbl_80315778:
+/* 80315778 003113D8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 8031577C 003113DC 38 00 00 26 */ li r0, 0x26
+/* 80315780 003113E0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315784 003113E4 38 60 00 26 */ li r3, 0x26
+/* 80315788 003113E8 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 8031578C 003113EC 90 1E 18 6C */ stw r0, 0x186c(r30)
+/* 80315790 003113F0 48 00 02 48 */ b lbl_803159D8
+lbl_80315794:
+/* 80315794 003113F4 41 86 00 08 */ beq cr1, lbl_8031579C
+/* 80315798 003113F8 40 82 00 20 */ bne lbl_803157B8
+lbl_8031579C:
+/* 8031579C 003113FC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803157A0 00311400 38 00 00 26 */ li r0, 0x26
+/* 803157A4 00311404 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803157A8 00311408 38 60 00 26 */ li r3, 0x26
+/* 803157AC 0031140C 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 803157B0 00311410 90 1E 18 6C */ stw r0, 0x186c(r30)
+/* 803157B4 00311414 48 00 02 24 */ b lbl_803159D8
+lbl_803157B8:
+/* 803157B8 00311418 2C 1D 00 01 */ cmpwi r29, 1
+/* 803157BC 0031141C 41 82 00 20 */ beq lbl_803157DC
+/* 803157C0 00311420 40 80 00 10 */ bge lbl_803157D0
+/* 803157C4 00311424 2C 1D 00 00 */ cmpwi r29, 0
+/* 803157C8 00311428 40 80 00 1C */ bge lbl_803157E4
+/* 803157CC 0031142C 48 00 00 28 */ b lbl_803157F4
+lbl_803157D0:
+/* 803157D0 00311430 2C 1D 00 03 */ cmpwi r29, 3
+/* 803157D4 00311434 40 80 00 20 */ bge lbl_803157F4
+/* 803157D8 00311438 48 00 00 14 */ b lbl_803157EC
+lbl_803157DC:
+/* 803157DC 0031143C 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 803157E0 00311440 48 00 00 3C */ b lbl_8031581C
+lbl_803157E4:
+/* 803157E4 00311444 38 00 00 00 */ li r0, 0
+/* 803157E8 00311448 48 00 00 34 */ b lbl_8031581C
+lbl_803157EC:
+/* 803157EC 0031144C 80 04 02 64 */ lwz r0, 0x264(r4)
+/* 803157F0 00311450 48 00 00 2C */ b lbl_8031581C
+lbl_803157F4:
+/* 803157F4 00311454 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803157F8 00311458 38 00 00 0A */ li r0, 0xa
+/* 803157FC 0031145C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315800 00311460 38 60 00 0A */ li r3, 0xa
+/* 80315804 00311464 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315808 00311468 80 9F 00 08 */ lwz r4, 8(r31)
+/* 8031580C 0031146C 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 80315810 00311470 90 04 18 6C */ stw r0, 0x186c(r4)
+/* 80315814 00311474 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 80315818 00311478 48 00 01 C0 */ b lbl_803159D8
+lbl_8031581C:
+/* 8031581C 0031147C 57 84 00 01 */ rlwinm. r4, r28, 0, 0, 0
+/* 80315820 00311480 41 82 00 48 */ beq lbl_80315868
+/* 80315824 00311484 7F 84 E0 F8 */ nor r4, r28, r28
+/* 80315828 00311488 54 84 00 7E */ clrlwi r4, r4, 1
+/* 8031582C 0031148C 38 84 00 01 */ addi r4, r4, 1
+/* 80315830 00311490 7C 00 20 40 */ cmplw r0, r4
+/* 80315834 00311494 40 80 00 2C */ bge lbl_80315860
+/* 80315838 00311498 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 8031583C 0031149C 38 00 00 0A */ li r0, 0xa
+/* 80315840 003114A0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315844 003114A4 38 60 00 0A */ li r3, 0xa
+/* 80315848 003114A8 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 8031584C 003114AC 80 9F 00 08 */ lwz r4, 8(r31)
+/* 80315850 003114B0 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 80315854 003114B4 90 04 18 6C */ stw r0, 0x186c(r4)
+/* 80315858 003114B8 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 8031585C 003114BC 48 00 01 7C */ b lbl_803159D8
+lbl_80315860:
+/* 80315860 003114C0 7C 04 00 50 */ subf r0, r4, r0
+/* 80315864 003114C4 48 00 00 3C */ b lbl_803158A0
+lbl_80315868:
+/* 80315868 003114C8 20 80 FF FF */ subfic r4, r0, -1
+/* 8031586C 003114CC 7C 1C 20 40 */ cmplw r28, r4
+/* 80315870 003114D0 40 81 00 2C */ ble lbl_8031589C
+/* 80315874 003114D4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315878 003114D8 38 00 00 25 */ li r0, 0x25
+/* 8031587C 003114DC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315880 003114E0 38 60 00 25 */ li r3, 0x25
+/* 80315884 003114E4 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315888 003114E8 80 9F 00 08 */ lwz r4, 8(r31)
+/* 8031588C 003114EC 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 80315890 003114F0 90 04 18 6C */ stw r0, 0x186c(r4)
+/* 80315894 003114F4 90 1F 00 18 */ stw r0, 0x18(r31)
+/* 80315898 003114F8 48 00 01 40 */ b lbl_803159D8
+lbl_8031589C:
+/* 8031589C 003114FC 7C 00 E2 14 */ add r0, r0, r28
+lbl_803158A0:
+/* 803158A0 00311500 38 80 FF FF */ li r4, -1
+/* 803158A4 00311504 2C 1F 00 00 */ cmpwi r31, 0
+/* 803158A8 00311508 90 9F 00 20 */ stw r4, 0x20(r31)
+/* 803158AC 0031150C 40 82 00 0C */ bne lbl_803158B8
+/* 803158B0 00311510 38 A0 00 00 */ li r5, 0
+/* 803158B4 00311514 48 00 00 0C */ b lbl_803158C0
+lbl_803158B8:
+/* 803158B8 00311518 80 9F 00 08 */ lwz r4, 8(r31)
+/* 803158BC 0031151C 80 A4 02 68 */ lwz r5, 0x268(r4)
+lbl_803158C0:
+/* 803158C0 00311520 A0 85 00 00 */ lhz r4, 0(r5)
+/* 803158C4 00311524 80 FF 00 1C */ lwz r7, 0x1c(r31)
+/* 803158C8 00311528 38 84 FF FF */ addi r4, r4, -1
+/* 803158CC 0031152C 88 C5 00 20 */ lbz r6, 0x20(r5)
+/* 803158D0 00311530 7C E5 20 38 */ and r5, r7, r4
+/* 803158D4 00311534 7C 85 00 D0 */ neg r4, r5
+/* 803158D8 00311538 7C E6 34 30 */ srw r6, r7, r6
+/* 803158DC 0031153C 7C 84 2B 78 */ or r4, r4, r5
+/* 803158E0 00311540 54 84 0F FE */ srwi r4, r4, 0x1f
+/* 803158E4 00311544 7C 86 22 15 */ add. r4, r6, r4
+/* 803158E8 00311548 41 82 00 0C */ beq lbl_803158F4
+/* 803158EC 0031154C 38 80 FF FF */ li r4, -1
+/* 803158F0 00311550 90 9F 00 20 */ stw r4, 0x20(r31)
+lbl_803158F4:
+/* 803158F4 00311554 38 80 00 00 */ li r4, 0
+/* 803158F8 00311558 2C 1F 00 00 */ cmpwi r31, 0
+/* 803158FC 0031155C 90 9F 00 1C */ stw r4, 0x1c(r31)
+/* 80315900 00311560 40 82 00 0C */ bne lbl_8031590C
+/* 80315904 00311564 38 C0 00 00 */ li r6, 0
+/* 80315908 00311568 48 00 00 0C */ b lbl_80315914
+lbl_8031590C:
+/* 8031590C 0031156C 80 9F 00 08 */ lwz r4, 8(r31)
+/* 80315910 00311570 80 C4 02 68 */ lwz r6, 0x268(r4)
+lbl_80315914:
+/* 80315914 00311574 80 BF 00 1C */ lwz r5, 0x1c(r31)
+/* 80315918 00311578 2C 1F 00 00 */ cmpwi r31, 0
+/* 8031591C 0031157C 88 86 00 20 */ lbz r4, 0x20(r6)
+/* 80315920 00311580 7C A4 24 30 */ srw r4, r5, r4
+/* 80315924 00311584 90 9F 00 24 */ stw r4, 0x24(r31)
+/* 80315928 00311588 A0 86 00 00 */ lhz r4, 0(r6)
+/* 8031592C 0031158C 38 84 FF FF */ addi r4, r4, -1
+/* 80315930 00311590 7C A4 20 38 */ and r4, r5, r4
+/* 80315934 00311594 B0 9F 00 28 */ sth r4, 0x28(r31)
+/* 80315938 00311598 40 82 00 0C */ bne lbl_80315944
+/* 8031593C 0031159C 38 A0 00 00 */ li r5, 0
+/* 80315940 003115A0 48 00 00 0C */ b lbl_8031594C
+lbl_80315944:
+/* 80315944 003115A4 80 9F 00 08 */ lwz r4, 8(r31)
+/* 80315948 003115A8 80 A4 02 68 */ lwz r5, 0x268(r4)
+lbl_8031594C:
+/* 8031594C 003115AC A0 85 00 00 */ lhz r4, 0(r5)
+/* 80315950 003115B0 80 DF 00 1C */ lwz r6, 0x1c(r31)
+/* 80315954 003115B4 38 84 FF FF */ addi r4, r4, -1
+/* 80315958 003115B8 89 45 00 20 */ lbz r10, 0x20(r5)
+/* 8031595C 003115BC 7C C9 20 38 */ and r9, r6, r4
+/* 80315960 003115C0 7C 05 20 38 */ and r5, r0, r4
+/* 80315964 003115C4 7C C7 54 30 */ srw r7, r6, r10
+/* 80315968 003115C8 7D 09 00 D0 */ neg r8, r9
+/* 8031596C 003115CC 7C 06 54 30 */ srw r6, r0, r10
+/* 80315970 003115D0 7C 85 00 D0 */ neg r4, r5
+/* 80315974 003115D4 7C 84 2B 78 */ or r4, r4, r5
+/* 80315978 003115D8 7D 08 4B 78 */ or r8, r8, r9
+/* 8031597C 003115DC 55 05 0F FE */ srwi r5, r8, 0x1f
+/* 80315980 003115E0 54 84 0F FE */ srwi r4, r4, 0x1f
+/* 80315984 003115E4 7C A7 2A 14 */ add r5, r7, r5
+/* 80315988 003115E8 7C 86 22 14 */ add r4, r6, r4
+/* 8031598C 003115EC 7C 05 20 40 */ cmplw r5, r4
+/* 80315990 003115F0 41 82 00 0C */ beq lbl_8031599C
+/* 80315994 003115F4 38 80 FF FF */ li r4, -1
+/* 80315998 003115F8 90 9F 00 20 */ stw r4, 0x20(r31)
+lbl_8031599C:
+/* 8031599C 003115FC 2C 1F 00 00 */ cmpwi r31, 0
+/* 803159A0 00311600 90 1F 00 1C */ stw r0, 0x1c(r31)
+/* 803159A4 00311604 40 82 00 0C */ bne lbl_803159B0
+/* 803159A8 00311608 38 80 00 00 */ li r4, 0
+/* 803159AC 0031160C 48 00 00 0C */ b lbl_803159B8
+lbl_803159B0:
+/* 803159B0 00311610 80 9F 00 08 */ lwz r4, 8(r31)
+/* 803159B4 00311614 80 84 02 68 */ lwz r4, 0x268(r4)
+lbl_803159B8:
+/* 803159B8 00311618 80 BF 00 1C */ lwz r5, 0x1c(r31)
+/* 803159BC 0031161C 88 04 00 20 */ lbz r0, 0x20(r4)
+/* 803159C0 00311620 7C A0 04 30 */ srw r0, r5, r0
+/* 803159C4 00311624 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 803159C8 00311628 A0 84 00 00 */ lhz r4, 0(r4)
+/* 803159CC 0031162C 38 04 FF FF */ addi r0, r4, -1
+/* 803159D0 00311630 7C A0 00 38 */ and r0, r5, r0
+/* 803159D4 00311634 B0 1F 00 28 */ sth r0, 0x28(r31)
+lbl_803159D8:
+/* 803159D8 00311638 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803159DC 0031163C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803159E0 00311640 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803159E4 00311644 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 803159E8 00311648 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 803159EC 0031164C 7C 08 03 A6 */ mtlr r0
+/* 803159F0 00311650 38 21 00 20 */ addi r1, r1, 0x20
+/* 803159F4 00311654 4E 80 00 20 */ blr
+
+.global VFiPFFILE_finfo
+VFiPFFILE_finfo:
+/* 803159F8 00311658 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 803159FC 0031165C 7C 08 02 A6 */ mflr r0
+/* 80315A00 00311660 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 80315A04 00311664 90 01 00 44 */ stw r0, 0x44(r1)
+/* 80315A08 00311668 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
+/* 80315A0C 0031166C 7C 05 18 40 */ cmplw r5, r3
+/* 80315A10 00311670 93 E1 00 3C */ stw r31, 0x3c(r1)
+/* 80315A14 00311674 93 C1 00 38 */ stw r30, 0x38(r1)
+/* 80315A18 00311678 7C 7E 1B 78 */ mr r30, r3
+/* 80315A1C 0031167C 93 A1 00 34 */ stw r29, 0x34(r1)
+/* 80315A20 00311680 7C 9D 23 78 */ mr r29, r4
+/* 80315A24 00311684 41 81 00 14 */ bgt lbl_80315A38
+/* 80315A28 00311688 3C 85 00 02 */ addis r4, r5, 2
+/* 80315A2C 0031168C 38 04 7F B8 */ addi r0, r4, 0x7fb8
+/* 80315A30 00311690 7C 00 18 40 */ cmplw r0, r3
+/* 80315A34 00311694 40 80 00 1C */ bge lbl_80315A50
+lbl_80315A38:
+/* 80315A38 00311698 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315A3C 0031169C 38 00 00 0A */ li r0, 0xa
+/* 80315A40 003116A0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315A44 003116A4 38 60 00 0A */ li r3, 0xa
+/* 80315A48 003116A8 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315A4C 003116AC 48 00 01 C8 */ b lbl_80315C14
+lbl_80315A50:
+/* 80315A50 003116B0 2C 03 00 00 */ cmpwi r3, 0
+/* 80315A54 003116B4 40 82 00 0C */ bne lbl_80315A60
+/* 80315A58 003116B8 3B E0 00 00 */ li r31, 0
+/* 80315A5C 003116BC 48 00 00 0C */ b lbl_80315A68
+lbl_80315A60:
+/* 80315A60 003116C0 80 63 00 08 */ lwz r3, 8(r3)
+/* 80315A64 003116C4 83 E3 02 68 */ lwz r31, 0x268(r3)
+lbl_80315A68:
+/* 80315A68 003116C8 2C 1F 00 00 */ cmpwi r31, 0
+/* 80315A6C 003116CC 40 82 00 1C */ bne lbl_80315A88
+/* 80315A70 003116D0 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315A74 003116D4 38 00 00 26 */ li r0, 0x26
+/* 80315A78 003116D8 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315A7C 003116DC 38 60 00 26 */ li r3, 0x26
+/* 80315A80 003116E0 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315A84 003116E4 48 00 01 90 */ b lbl_80315C14
+lbl_80315A88:
+/* 80315A88 003116E8 7F E3 FB 78 */ mr r3, r31
+/* 80315A8C 003116EC 48 00 38 E1 */ bl VFiPFVOL_CheckForRead
+/* 80315A90 003116F0 2C 03 00 00 */ cmpwi r3, 0
+/* 80315A94 003116F4 41 82 00 24 */ beq lbl_80315AB8
+/* 80315A98 003116F8 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315A9C 003116FC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315AA0 00311700 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80315AA4 00311704 80 9E 00 08 */ lwz r4, 8(r30)
+/* 80315AA8 00311708 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 80315AAC 0031170C 90 64 18 6C */ stw r3, 0x186c(r4)
+/* 80315AB0 00311710 90 7E 00 18 */ stw r3, 0x18(r30)
+/* 80315AB4 00311714 48 00 01 60 */ b lbl_80315C14
+lbl_80315AB8:
+/* 80315AB8 00311718 2C 1E 00 00 */ cmpwi r30, 0
+/* 80315ABC 0031171C 41 82 00 34 */ beq lbl_80315AF0
+/* 80315AC0 00311720 80 7E 00 08 */ lwz r3, 8(r30)
+/* 80315AC4 00311724 2C 03 00 00 */ cmpwi r3, 0
+/* 80315AC8 00311728 41 82 00 28 */ beq lbl_80315AF0
+/* 80315ACC 0031172C 80 1E 00 00 */ lwz r0, 0(r30)
+/* 80315AD0 00311730 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80315AD4 00311734 41 82 00 1C */ beq lbl_80315AF0
+/* 80315AD8 00311738 80 03 00 00 */ lwz r0, 0(r3)
+/* 80315ADC 0031173C 54 03 07 FE */ clrlwi r3, r0, 0x1f
+/* 80315AE0 00311740 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 80315AE4 00311744 41 86 00 0C */ beq cr1, lbl_80315AF0
+/* 80315AE8 00311748 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80315AEC 0031174C 40 82 00 20 */ bne lbl_80315B0C
+lbl_80315AF0:
+/* 80315AF0 00311750 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315AF4 00311754 38 00 00 26 */ li r0, 0x26
+/* 80315AF8 00311758 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315AFC 0031175C 38 60 00 26 */ li r3, 0x26
+/* 80315B00 00311760 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315B04 00311764 90 1F 18 6C */ stw r0, 0x186c(r31)
+/* 80315B08 00311768 48 00 01 0C */ b lbl_80315C14
+lbl_80315B0C:
+/* 80315B0C 0031176C 41 86 00 08 */ beq cr1, lbl_80315B14
+/* 80315B10 00311770 40 82 00 20 */ bne lbl_80315B30
+lbl_80315B14:
+/* 80315B14 00311774 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315B18 00311778 38 00 00 26 */ li r0, 0x26
+/* 80315B1C 0031177C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315B20 00311780 38 60 00 26 */ li r3, 0x26
+/* 80315B24 00311784 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315B28 00311788 90 1F 18 6C */ stw r0, 0x186c(r31)
+/* 80315B2C 0031178C 48 00 00 E8 */ b lbl_80315C14
+lbl_80315B30:
+/* 80315B30 00311790 2C 1D 00 00 */ cmpwi r29, 0
+/* 80315B34 00311794 40 82 00 2C */ bne lbl_80315B60
+/* 80315B38 00311798 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315B3C 0031179C 38 00 00 0A */ li r0, 0xa
+/* 80315B40 003117A0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315B44 003117A4 38 60 00 0A */ li r3, 0xa
+/* 80315B48 003117A8 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80315B4C 003117AC 80 9E 00 08 */ lwz r4, 8(r30)
+/* 80315B50 003117B0 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 80315B54 003117B4 90 04 18 6C */ stw r0, 0x186c(r4)
+/* 80315B58 003117B8 90 1E 00 18 */ stw r0, 0x18(r30)
+/* 80315B5C 003117BC 48 00 00 B8 */ b lbl_80315C14
+lbl_80315B60:
+/* 80315B60 003117C0 93 DF 16 08 */ stw r30, 0x1608(r31)
+/* 80315B64 003117C4 7F C3 F3 78 */ mr r3, r30
+/* 80315B68 003117C8 7F A4 EB 78 */ mr r4, r29
+/* 80315B6C 003117CC 81 5E 00 1C */ lwz r10, 0x1c(r30)
+/* 80315B70 003117D0 81 3E 00 20 */ lwz r9, 0x20(r30)
+/* 80315B74 003117D4 81 1E 00 24 */ lwz r8, 0x24(r30)
+/* 80315B78 003117D8 80 FE 00 28 */ lwz r7, 0x28(r30)
+/* 80315B7C 003117DC 80 DE 00 0C */ lwz r6, 0xc(r30)
+/* 80315B80 003117E0 80 BE 00 10 */ lwz r5, 0x10(r30)
+/* 80315B84 003117E4 80 1E 00 14 */ lwz r0, 0x14(r30)
+/* 80315B88 003117E8 91 41 00 18 */ stw r10, 0x18(r1)
+/* 80315B8C 003117EC 91 21 00 1C */ stw r9, 0x1c(r1)
+/* 80315B90 003117F0 91 01 00 20 */ stw r8, 0x20(r1)
+/* 80315B94 003117F4 90 E1 00 24 */ stw r7, 0x24(r1)
+/* 80315B98 003117F8 90 C1 00 08 */ stw r6, 8(r1)
+/* 80315B9C 003117FC 90 A1 00 0C */ stw r5, 0xc(r1)
+/* 80315BA0 00311800 90 01 00 10 */ stw r0, 0x10(r1)
+/* 80315BA4 00311804 4B FF EF 81 */ bl VFiPFFILE_p_finfo
+/* 80315BA8 00311808 81 41 00 18 */ lwz r10, 0x18(r1)
+/* 80315BAC 0031180C 2C 03 00 00 */ cmpwi r3, 0
+/* 80315BB0 00311810 81 21 00 1C */ lwz r9, 0x1c(r1)
+/* 80315BB4 00311814 38 00 00 00 */ li r0, 0
+/* 80315BB8 00311818 81 01 00 20 */ lwz r8, 0x20(r1)
+/* 80315BBC 0031181C 80 E1 00 24 */ lwz r7, 0x24(r1)
+/* 80315BC0 00311820 80 C1 00 08 */ lwz r6, 8(r1)
+/* 80315BC4 00311824 80 A1 00 0C */ lwz r5, 0xc(r1)
+/* 80315BC8 00311828 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80315BCC 0031182C 91 5E 00 1C */ stw r10, 0x1c(r30)
+/* 80315BD0 00311830 91 3E 00 20 */ stw r9, 0x20(r30)
+/* 80315BD4 00311834 91 1E 00 24 */ stw r8, 0x24(r30)
+/* 80315BD8 00311838 90 FE 00 28 */ stw r7, 0x28(r30)
+/* 80315BDC 0031183C 90 DE 00 0C */ stw r6, 0xc(r30)
+/* 80315BE0 00311840 90 BE 00 10 */ stw r5, 0x10(r30)
+/* 80315BE4 00311844 90 9E 00 14 */ stw r4, 0x14(r30)
+/* 80315BE8 00311848 90 1F 16 08 */ stw r0, 0x1608(r31)
+/* 80315BEC 0031184C 41 82 00 24 */ beq lbl_80315C10
+/* 80315BF0 00311850 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80315BF4 00311854 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80315BF8 00311858 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 80315BFC 0031185C 80 9E 00 08 */ lwz r4, 8(r30)
+/* 80315C00 00311860 80 84 00 38 */ lwz r4, 0x38(r4)
+/* 80315C04 00311864 90 64 18 6C */ stw r3, 0x186c(r4)
+/* 80315C08 00311868 90 7E 00 18 */ stw r3, 0x18(r30)
+/* 80315C0C 0031186C 48 00 00 08 */ b lbl_80315C14
+lbl_80315C10:
+/* 80315C10 00311870 38 60 00 00 */ li r3, 0
+lbl_80315C14:
+/* 80315C14 00311874 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 80315C18 00311878 83 E1 00 3C */ lwz r31, 0x3c(r1)
+/* 80315C1C 0031187C 83 C1 00 38 */ lwz r30, 0x38(r1)
+/* 80315C20 00311880 83 A1 00 34 */ lwz r29, 0x34(r1)
+/* 80315C24 00311884 7C 08 03 A6 */ mtlr r0
+/* 80315C28 00311888 38 21 00 40 */ addi r1, r1, 0x40
+/* 80315C2C 0031188C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_path.s b/asm/SDK/VF/pf_path.s new file mode 100644 index 0000000..8f23358 --- /dev/null +++ b/asm/SDK/VF/pf_path.s @@ -0,0 +1,3324 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+VFiPFPATH_DoSplitPath:
+/* 80315C30 00311890 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 80315C34 00311894 7C 08 02 A6 */ mflr r0
+/* 80315C38 00311898 90 01 00 44 */ stw r0, 0x44(r1)
+/* 80315C3C 0031189C 39 61 00 40 */ addi r11, r1, 0x40
+/* 80315C40 003118A0 4B EB 14 E5 */ bl _savegpr_26
+/* 80315C44 003118A4 2C 04 00 00 */ cmpwi r4, 0
+/* 80315C48 003118A8 7C 7B 1B 78 */ mr r27, r3
+/* 80315C4C 003118AC 7C 9C 23 78 */ mr r28, r4
+/* 80315C50 003118B0 7C BD 2B 78 */ mr r29, r5
+/* 80315C54 003118B4 7C DE 33 78 */ mr r30, r6
+/* 80315C58 003118B8 40 82 00 0C */ bne lbl_80315C64
+/* 80315C5C 003118BC 38 60 00 0A */ li r3, 0xa
+/* 80315C60 003118C0 48 00 01 B0 */ b lbl_80315E10
+lbl_80315C64:
+/* 80315C64 003118C4 4B FE F6 7D */ bl VFiPFSTR_GetCodeMode
+/* 80315C68 003118C8 7C 7A 1B 78 */ mr r26, r3
+/* 80315C6C 003118CC 7F 83 E3 78 */ mr r3, r28
+/* 80315C70 003118D0 7F 44 D3 78 */ mr r4, r26
+/* 80315C74 003118D4 4B FE F6 65 */ bl VFiPFSTR_SetCodeMode
+/* 80315C78 003118D8 7F A3 EB 78 */ mr r3, r29
+/* 80315C7C 003118DC 7F 44 D3 78 */ mr r4, r26
+/* 80315C80 003118E0 4B FE F6 59 */ bl VFiPFSTR_SetCodeMode
+/* 80315C84 003118E4 38 00 00 00 */ li r0, 0
+/* 80315C88 003118E8 2C 1D 00 00 */ cmpwi r29, 0
+/* 80315C8C 003118EC 90 1C 00 00 */ stw r0, 0(r28)
+/* 80315C90 003118F0 41 82 00 08 */ beq lbl_80315C98
+/* 80315C94 003118F4 90 1D 00 00 */ stw r0, 0(r29)
+lbl_80315C98:
+/* 80315C98 003118F8 7F 63 DB 78 */ mr r3, r27
+/* 80315C9C 003118FC 38 8D 8C F8 */ addi r4, r13, lbl_8063DFB8-_SDA_BASE_
+/* 80315CA0 00311900 38 A0 00 01 */ li r5, 1
+/* 80315CA4 00311904 38 C0 00 01 */ li r6, 1
+/* 80315CA8 00311908 38 E0 00 01 */ li r7, 1
+/* 80315CAC 0031190C 4B FE F9 B5 */ bl VFiPFSTR_StrNCmp
+/* 80315CB0 00311910 2C 03 00 00 */ cmpwi r3, 0
+/* 80315CB4 00311914 40 82 00 10 */ bne lbl_80315CC4
+/* 80315CB8 00311918 7F 63 DB 78 */ mr r3, r27
+/* 80315CBC 0031191C 38 80 00 02 */ li r4, 2
+/* 80315CC0 00311920 4B FE F6 79 */ bl VFiPFSTR_MoveStrPos
+lbl_80315CC4:
+/* 80315CC4 00311924 83 FB 00 00 */ lwz r31, 0(r27)
+/* 80315CC8 00311928 7F C4 F3 78 */ mr r4, r30
+/* 80315CCC 0031192C 38 61 00 18 */ addi r3, r1, 0x18
+/* 80315CD0 00311930 93 E1 00 18 */ stw r31, 0x18(r1)
+/* 80315CD4 00311934 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80315CD8 00311938 93 41 00 24 */ stw r26, 0x24(r1)
+/* 80315CDC 0031193C 48 00 0E 2D */ bl VFiPFPATH_GetNextTokenOfPath
+/* 80315CE0 00311940 2C 03 00 00 */ cmpwi r3, 0
+/* 80315CE4 00311944 41 82 00 08 */ beq lbl_80315CEC
+/* 80315CE8 00311948 48 00 01 28 */ b lbl_80315E10
+lbl_80315CEC:
+/* 80315CEC 0031194C 80 01 00 18 */ lwz r0, 0x18(r1)
+/* 80315CF0 00311950 2C 00 00 00 */ cmpwi r0, 0
+/* 80315CF4 00311954 41 82 00 14 */ beq lbl_80315D08
+/* 80315CF8 00311958 38 61 00 18 */ addi r3, r1, 0x18
+/* 80315CFC 0031195C 4B FE F7 CD */ bl VFiPFSTR_StrLen
+/* 80315D00 00311960 54 60 04 3F */ clrlwi. r0, r3, 0x10
+/* 80315D04 00311964 40 82 00 0C */ bne lbl_80315D10
+lbl_80315D08:
+/* 80315D08 00311968 38 60 00 02 */ li r3, 2
+/* 80315D0C 0031196C 48 00 01 04 */ b lbl_80315E10
+lbl_80315D10:
+/* 80315D10 00311970 80 1B 00 04 */ lwz r0, 4(r27)
+/* 80315D14 00311974 80 A1 00 1C */ lwz r5, 0x1c(r1)
+/* 80315D18 00311978 7C 00 28 40 */ cmplw r0, r5
+/* 80315D1C 0031197C 40 80 00 0C */ bge lbl_80315D28
+/* 80315D20 00311980 38 60 00 02 */ li r3, 2
+/* 80315D24 00311984 48 00 00 EC */ b lbl_80315E10
+lbl_80315D28:
+/* 80315D28 00311988 80 81 00 18 */ lwz r4, 0x18(r1)
+/* 80315D2C 0031198C 80 61 00 20 */ lwz r3, 0x20(r1)
+/* 80315D30 00311990 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80315D34 00311994 90 81 00 08 */ stw r4, 8(r1)
+/* 80315D38 00311998 90 A1 00 0C */ stw r5, 0xc(r1)
+/* 80315D3C 0031199C 90 61 00 10 */ stw r3, 0x10(r1)
+/* 80315D40 003119A0 90 01 00 14 */ stw r0, 0x14(r1)
+lbl_80315D44:
+/* 80315D44 003119A4 38 61 00 18 */ addi r3, r1, 0x18
+/* 80315D48 003119A8 38 8D 8C FC */ addi r4, r13, lbl_8063DFBC-_SDA_BASE_
+/* 80315D4C 003119AC 38 A0 00 02 */ li r5, 2
+/* 80315D50 003119B0 38 C0 00 00 */ li r6, 0
+/* 80315D54 003119B4 38 E0 00 01 */ li r7, 1
+/* 80315D58 003119B8 4B FE F9 09 */ bl VFiPFSTR_StrNCmp
+/* 80315D5C 003119BC 2C 03 00 00 */ cmpwi r3, 0
+/* 80315D60 003119C0 40 82 00 0C */ bne lbl_80315D6C
+/* 80315D64 003119C4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80315D68 003119C8 48 00 00 70 */ b lbl_80315DD8
+lbl_80315D6C:
+/* 80315D6C 003119CC 7F C4 F3 78 */ mr r4, r30
+/* 80315D70 003119D0 38 61 00 18 */ addi r3, r1, 0x18
+/* 80315D74 003119D4 48 00 0D 95 */ bl VFiPFPATH_GetNextTokenOfPath
+/* 80315D78 003119D8 2C 03 00 00 */ cmpwi r3, 0
+/* 80315D7C 003119DC 41 82 00 08 */ beq lbl_80315D84
+/* 80315D80 003119E0 48 00 00 90 */ b lbl_80315E10
+lbl_80315D84:
+/* 80315D84 003119E4 38 61 00 18 */ addi r3, r1, 0x18
+/* 80315D88 003119E8 4B FE F7 41 */ bl VFiPFSTR_StrLen
+/* 80315D8C 003119EC 54 60 04 3F */ clrlwi. r0, r3, 0x10
+/* 80315D90 003119F0 40 82 00 0C */ bne lbl_80315D9C
+/* 80315D94 003119F4 38 60 00 02 */ li r3, 2
+/* 80315D98 003119F8 48 00 00 78 */ b lbl_80315E10
+lbl_80315D9C:
+/* 80315D9C 003119FC 80 1B 00 04 */ lwz r0, 4(r27)
+/* 80315DA0 00311A00 80 A1 00 1C */ lwz r5, 0x1c(r1)
+/* 80315DA4 00311A04 7C 00 28 40 */ cmplw r0, r5
+/* 80315DA8 00311A08 41 80 00 30 */ blt lbl_80315DD8
+/* 80315DAC 00311A0C 80 81 00 18 */ lwz r4, 0x18(r1)
+/* 80315DB0 00311A10 2C 04 00 00 */ cmpwi r4, 0
+/* 80315DB4 00311A14 41 82 00 24 */ beq lbl_80315DD8
+/* 80315DB8 00311A18 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80315DBC 00311A1C 80 61 00 20 */ lwz r3, 0x20(r1)
+/* 80315DC0 00311A20 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80315DC4 00311A24 90 81 00 08 */ stw r4, 8(r1)
+/* 80315DC8 00311A28 90 A1 00 0C */ stw r5, 0xc(r1)
+/* 80315DCC 00311A2C 90 61 00 10 */ stw r3, 0x10(r1)
+/* 80315DD0 00311A30 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80315DD4 00311A34 4B FF FF 70 */ b lbl_80315D44
+lbl_80315DD8:
+/* 80315DD8 00311A38 80 1B 00 00 */ lwz r0, 0(r27)
+/* 80315DDC 00311A3C 2C 1D 00 00 */ cmpwi r29, 0
+/* 80315DE0 00311A40 90 1C 00 00 */ stw r0, 0(r28)
+/* 80315DE4 00311A44 93 FC 00 04 */ stw r31, 4(r28)
+/* 80315DE8 00311A48 41 82 00 24 */ beq lbl_80315E0C
+/* 80315DEC 00311A4C 80 A1 00 08 */ lwz r5, 8(r1)
+/* 80315DF0 00311A50 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 80315DF4 00311A54 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 80315DF8 00311A58 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80315DFC 00311A5C 90 BD 00 00 */ stw r5, 0(r29)
+/* 80315E00 00311A60 90 9D 00 04 */ stw r4, 4(r29)
+/* 80315E04 00311A64 90 7D 00 08 */ stw r3, 8(r29)
+/* 80315E08 00311A68 90 1D 00 0C */ stw r0, 0xc(r29)
+lbl_80315E0C:
+/* 80315E0C 00311A6C 38 60 00 00 */ li r3, 0
+lbl_80315E10:
+/* 80315E10 00311A70 39 61 00 40 */ addi r11, r1, 0x40
+/* 80315E14 00311A74 4B EB 13 5D */ bl _restgpr_26
+/* 80315E18 00311A78 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 80315E1C 00311A7C 7C 08 03 A6 */ mtlr r0
+/* 80315E20 00311A80 38 21 00 40 */ addi r1, r1, 0x40
+/* 80315E24 00311A84 4E 80 00 20 */ blr
+
+.global VFiPFPATH_GetNextCharOfPattern
+VFiPFPATH_GetNextCharOfPattern:
+/* 80315E28 00311A88 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80315E2C 00311A8C 7C 08 02 A6 */ mflr r0
+/* 80315E30 00311A90 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80315E34 00311A94 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80315E38 00311A98 7C 9F 23 78 */ mr r31, r4
+/* 80315E3C 00311A9C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80315E40 00311AA0 7C 7E 1B 78 */ mr r30, r3
+/* 80315E44 00311AA4 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80315E48 00311AA8 28 00 00 01 */ cmplwi r0, 1
+/* 80315E4C 00311AAC 40 82 00 C4 */ bne lbl_80315F10
+/* 80315E50 00311AB0 80 A3 00 00 */ lwz r5, 0(r3)
+/* 80315E54 00311AB4 38 00 00 00 */ li r0, 0
+/* 80315E58 00311AB8 38 85 00 01 */ addi r4, r5, 1
+/* 80315E5C 00311ABC 90 83 00 00 */ stw r4, 0(r3)
+/* 80315E60 00311AC0 88 85 00 00 */ lbz r4, 0(r5)
+/* 80315E64 00311AC4 7C 86 07 75 */ extsb. r6, r4
+/* 80315E68 00311AC8 98 81 00 10 */ stb r4, 0x10(r1)
+/* 80315E6C 00311ACC 98 01 00 11 */ stb r0, 0x11(r1)
+/* 80315E70 00311AD0 41 82 00 14 */ beq lbl_80315E84
+/* 80315E74 00311AD4 80 83 00 04 */ lwz r4, 4(r3)
+/* 80315E78 00311AD8 80 03 00 00 */ lwz r0, 0(r3)
+/* 80315E7C 00311ADC 7C 04 00 40 */ cmplw r4, r0
+/* 80315E80 00311AE0 40 80 00 0C */ bge lbl_80315E8C
+lbl_80315E84:
+/* 80315E84 00311AE4 38 60 00 00 */ li r3, 0
+/* 80315E88 00311AE8 48 00 02 48 */ b lbl_803160D0
+lbl_80315E8C:
+/* 80315E8C 00311AEC 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 80315E90 00311AF0 7C C3 33 78 */ mr r3, r6
+/* 80315E94 00311AF4 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
+/* 80315E98 00311AF8 38 80 00 01 */ li r4, 1
+/* 80315E9C 00311AFC 81 85 00 30 */ lwz r12, 0x30(r5)
+/* 80315EA0 00311B00 7D 89 03 A6 */ mtctr r12
+/* 80315EA4 00311B04 4E 80 04 21 */ bctrl
+/* 80315EA8 00311B08 2C 03 00 00 */ cmpwi r3, 0
+/* 80315EAC 00311B0C 41 82 00 30 */ beq lbl_80315EDC
+/* 80315EB0 00311B10 80 7E 00 00 */ lwz r3, 0(r30)
+/* 80315EB4 00311B14 88 03 00 00 */ lbz r0, 0(r3)
+/* 80315EB8 00311B18 38 63 00 01 */ addi r3, r3, 1
+/* 80315EBC 00311B1C 98 01 00 11 */ stb r0, 0x11(r1)
+/* 80315EC0 00311B20 90 7E 00 00 */ stw r3, 0(r30)
+/* 80315EC4 00311B24 88 61 00 10 */ lbz r3, 0x10(r1)
+/* 80315EC8 00311B28 88 01 00 11 */ lbz r0, 0x11(r1)
+/* 80315ECC 00311B2C 54 63 40 2E */ slwi r3, r3, 8
+/* 80315ED0 00311B30 7C 03 02 14 */ add r0, r3, r0
+/* 80315ED4 00311B34 B0 01 00 0C */ sth r0, 0xc(r1)
+/* 80315ED8 00311B38 48 00 00 10 */ b lbl_80315EE8
+lbl_80315EDC:
+/* 80315EDC 00311B3C 88 01 00 10 */ lbz r0, 0x10(r1)
+/* 80315EE0 00311B40 7C 00 07 74 */ extsb r0, r0
+/* 80315EE4 00311B44 B0 01 00 0C */ sth r0, 0xc(r1)
+lbl_80315EE8:
+/* 80315EE8 00311B48 2C 1F 00 00 */ cmpwi r31, 0
+/* 80315EEC 00311B4C 41 82 00 EC */ beq lbl_80315FD8
+/* 80315EF0 00311B50 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 80315EF4 00311B54 38 61 00 10 */ addi r3, r1, 0x10
+/* 80315EF8 00311B58 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
+/* 80315EFC 00311B5C 38 81 00 0C */ addi r4, r1, 0xc
+/* 80315F00 00311B60 81 85 00 24 */ lwz r12, 0x24(r5)
+/* 80315F04 00311B64 7D 89 03 A6 */ mtctr r12
+/* 80315F08 00311B68 4E 80 04 21 */ bctrl
+/* 80315F0C 00311B6C 48 00 00 CC */ b lbl_80315FD8
+lbl_80315F10:
+/* 80315F10 00311B70 80 A3 00 00 */ lwz r5, 0(r3)
+/* 80315F14 00311B74 38 00 00 00 */ li r0, 0
+/* 80315F18 00311B78 A0 A5 00 00 */ lhz r5, 0(r5)
+/* 80315F1C 00311B7C 98 A1 00 10 */ stb r5, 0x10(r1)
+/* 80315F20 00311B80 80 A3 00 00 */ lwz r5, 0(r3)
+/* 80315F24 00311B84 A0 A5 00 00 */ lhz r5, 0(r5)
+/* 80315F28 00311B88 7C A5 46 70 */ srawi r5, r5, 8
+/* 80315F2C 00311B8C 98 A1 00 11 */ stb r5, 0x11(r1)
+/* 80315F30 00311B90 80 A3 00 00 */ lwz r5, 0(r3)
+/* 80315F34 00311B94 38 A5 00 02 */ addi r5, r5, 2
+/* 80315F38 00311B98 90 A3 00 00 */ stw r5, 0(r3)
+/* 80315F3C 00311B9C 88 C1 00 10 */ lbz r6, 0x10(r1)
+/* 80315F40 00311BA0 98 01 00 12 */ stb r0, 0x12(r1)
+/* 80315F44 00311BA4 7C C0 07 75 */ extsb. r0, r6
+/* 80315F48 00311BA8 40 82 00 10 */ bne lbl_80315F58
+/* 80315F4C 00311BAC 88 01 00 11 */ lbz r0, 0x11(r1)
+/* 80315F50 00311BB0 7C 00 07 75 */ extsb. r0, r0
+/* 80315F54 00311BB4 41 82 00 14 */ beq lbl_80315F68
+lbl_80315F58:
+/* 80315F58 00311BB8 80 A3 00 04 */ lwz r5, 4(r3)
+/* 80315F5C 00311BBC 80 03 00 00 */ lwz r0, 0(r3)
+/* 80315F60 00311BC0 7C 05 00 40 */ cmplw r5, r0
+/* 80315F64 00311BC4 40 80 00 0C */ bge lbl_80315F70
+lbl_80315F68:
+/* 80315F68 00311BC8 38 60 00 00 */ li r3, 0
+/* 80315F6C 00311BCC 48 00 01 64 */ b lbl_803160D0
+lbl_80315F70:
+/* 80315F70 00311BD0 88 01 00 11 */ lbz r0, 0x11(r1)
+/* 80315F74 00311BD4 2C 04 00 00 */ cmpwi r4, 0
+/* 80315F78 00311BD8 54 00 40 2E */ slwi r0, r0, 8
+/* 80315F7C 00311BDC 7C 00 32 14 */ add r0, r0, r6
+/* 80315F80 00311BE0 B0 01 00 0C */ sth r0, 0xc(r1)
+/* 80315F84 00311BE4 40 82 00 54 */ bne lbl_80315FD8
+/* 80315F88 00311BE8 3F C0 80 58 */ lis r30, lbl_8057F5C8@ha
+/* 80315F8C 00311BEC 38 61 00 0C */ addi r3, r1, 0xc
+/* 80315F90 00311BF0 3B DE F5 C8 */ addi r30, r30, lbl_8057F5C8@l
+/* 80315F94 00311BF4 38 81 00 0A */ addi r4, r1, 0xa
+/* 80315F98 00311BF8 81 9E 00 28 */ lwz r12, 0x28(r30)
+/* 80315F9C 00311BFC 7D 89 03 A6 */ mtctr r12
+/* 80315FA0 00311C00 4E 80 04 21 */ bctrl
+/* 80315FA4 00311C04 A0 01 00 0A */ lhz r0, 0xa(r1)
+/* 80315FA8 00311C08 38 80 00 01 */ li r4, 1
+/* 80315FAC 00311C0C 81 9E 00 30 */ lwz r12, 0x30(r30)
+/* 80315FB0 00311C10 7C 03 46 70 */ srawi r3, r0, 8
+/* 80315FB4 00311C14 7D 89 03 A6 */ mtctr r12
+/* 80315FB8 00311C18 4E 80 04 21 */ bctrl
+/* 80315FBC 00311C1C 2C 03 00 00 */ cmpwi r3, 0
+/* 80315FC0 00311C20 41 82 00 0C */ beq lbl_80315FCC
+/* 80315FC4 00311C24 A0 01 00 0A */ lhz r0, 0xa(r1)
+/* 80315FC8 00311C28 48 00 00 0C */ b lbl_80315FD4
+lbl_80315FCC:
+/* 80315FCC 00311C2C 88 01 00 10 */ lbz r0, 0x10(r1)
+/* 80315FD0 00311C30 7C 00 07 74 */ extsb r0, r0
+lbl_80315FD4:
+/* 80315FD4 00311C34 B0 01 00 0C */ sth r0, 0xc(r1)
+lbl_80315FD8:
+/* 80315FD8 00311C38 A0 61 00 0C */ lhz r3, 0xc(r1)
+/* 80315FDC 00311C3C 38 00 00 00 */ li r0, 0
+/* 80315FE0 00311C40 28 03 00 61 */ cmplwi r3, 0x61
+/* 80315FE4 00311C44 41 80 00 10 */ blt lbl_80315FF4
+/* 80315FE8 00311C48 28 03 00 7A */ cmplwi r3, 0x7a
+/* 80315FEC 00311C4C 41 81 00 08 */ bgt lbl_80315FF4
+/* 80315FF0 00311C50 38 00 00 01 */ li r0, 1
+lbl_80315FF4:
+/* 80315FF4 00311C54 2C 00 00 00 */ cmpwi r0, 0
+/* 80315FF8 00311C58 41 82 00 08 */ beq lbl_80316000
+/* 80315FFC 00311C5C 38 63 FF E0 */ addi r3, r3, -32
+lbl_80316000:
+/* 80316000 00311C60 2C 1F 00 00 */ cmpwi r31, 0
+/* 80316004 00311C64 B0 61 00 0C */ sth r3, 0xc(r1)
+/* 80316008 00311C68 41 82 00 40 */ beq lbl_80316048
+/* 8031600C 00311C6C 54 63 04 3E */ clrlwi r3, r3, 0x10
+/* 80316010 00311C70 28 03 FF 41 */ cmplwi r3, 0xff41
+/* 80316014 00311C74 41 80 00 1C */ blt lbl_80316030
+/* 80316018 00311C78 28 03 FF 5A */ cmplwi r3, 0xff5a
+/* 8031601C 00311C7C 41 81 00 14 */ bgt lbl_80316030
+/* 80316020 00311C80 38 03 FF E0 */ addi r0, r3, -32
+/* 80316024 00311C84 38 60 00 01 */ li r3, 1
+/* 80316028 00311C88 B0 01 00 08 */ sth r0, 8(r1)
+/* 8031602C 00311C8C 48 00 00 08 */ b lbl_80316034
+lbl_80316030:
+/* 80316030 00311C90 38 60 00 00 */ li r3, 0
+lbl_80316034:
+/* 80316034 00311C94 28 03 00 01 */ cmplwi r3, 1
+/* 80316038 00311C98 40 82 00 94 */ bne lbl_803160CC
+/* 8031603C 00311C9C A0 01 00 08 */ lhz r0, 8(r1)
+/* 80316040 00311CA0 B0 01 00 0C */ sth r0, 0xc(r1)
+/* 80316044 00311CA4 48 00 00 88 */ b lbl_803160CC
+lbl_80316048:
+/* 80316048 00311CA8 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 8031604C 00311CAC 38 61 00 0C */ addi r3, r1, 0xc
+/* 80316050 00311CB0 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
+/* 80316054 00311CB4 38 81 00 08 */ addi r4, r1, 8
+/* 80316058 00311CB8 81 85 00 24 */ lwz r12, 0x24(r5)
+/* 8031605C 00311CBC 7D 89 03 A6 */ mtctr r12
+/* 80316060 00311CC0 4E 80 04 21 */ bctrl
+/* 80316064 00311CC4 A0 61 00 08 */ lhz r3, 8(r1)
+/* 80316068 00311CC8 28 03 FF 41 */ cmplwi r3, 0xff41
+/* 8031606C 00311CCC 41 80 00 1C */ blt lbl_80316088
+/* 80316070 00311CD0 28 03 FF 5A */ cmplwi r3, 0xff5a
+/* 80316074 00311CD4 41 81 00 14 */ bgt lbl_80316088
+/* 80316078 00311CD8 38 03 FF E0 */ addi r0, r3, -32
+/* 8031607C 00311CDC 38 60 00 01 */ li r3, 1
+/* 80316080 00311CE0 B0 01 00 08 */ sth r0, 8(r1)
+/* 80316084 00311CE4 48 00 00 08 */ b lbl_8031608C
+lbl_80316088:
+/* 80316088 00311CE8 38 60 00 00 */ li r3, 0
+lbl_8031608C:
+/* 8031608C 00311CEC 28 03 00 01 */ cmplwi r3, 1
+/* 80316090 00311CF0 40 82 00 28 */ bne lbl_803160B8
+/* 80316094 00311CF4 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80316098 00311CF8 38 61 00 08 */ addi r3, r1, 8
+/* 8031609C 00311CFC 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803160A0 00311D00 81 84 00 28 */ lwz r12, 0x28(r4)
+/* 803160A4 00311D04 7C 64 1B 78 */ mr r4, r3
+/* 803160A8 00311D08 7D 89 03 A6 */ mtctr r12
+/* 803160AC 00311D0C 4E 80 04 21 */ bctrl
+/* 803160B0 00311D10 38 60 00 01 */ li r3, 1
+/* 803160B4 00311D14 48 00 00 08 */ b lbl_803160BC
+lbl_803160B8:
+/* 803160B8 00311D18 38 60 00 00 */ li r3, 0
+lbl_803160BC:
+/* 803160BC 00311D1C 28 03 00 01 */ cmplwi r3, 1
+/* 803160C0 00311D20 40 82 00 0C */ bne lbl_803160CC
+/* 803160C4 00311D24 A0 01 00 08 */ lhz r0, 8(r1)
+/* 803160C8 00311D28 B0 01 00 0C */ sth r0, 0xc(r1)
+lbl_803160CC:
+/* 803160CC 00311D2C A0 61 00 0C */ lhz r3, 0xc(r1)
+lbl_803160D0:
+/* 803160D0 00311D30 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803160D4 00311D34 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803160D8 00311D38 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803160DC 00311D3C 7C 08 03 A6 */ mtlr r0
+/* 803160E0 00311D40 38 21 00 20 */ addi r1, r1, 0x20
+/* 803160E4 00311D44 4E 80 00 20 */ blr
+
+.global VFiPFPATH_DoMatchFileNameWithPattern
+VFiPFPATH_DoMatchFileNameWithPattern:
+/* 803160E8 00311D48 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 803160EC 00311D4C 7C 08 02 A6 */ mflr r0
+/* 803160F0 00311D50 90 01 00 54 */ stw r0, 0x54(r1)
+/* 803160F4 00311D54 39 61 00 50 */ addi r11, r1, 0x50
+/* 803160F8 00311D58 4B EB 10 25 */ bl _savegpr_24
+/* 803160FC 00311D5C 3F A0 80 58 */ lis r29, lbl_8057F5C8@ha
+/* 80316100 00311D60 7C 78 1B 78 */ mr r24, r3
+/* 80316104 00311D64 7C 99 23 78 */ mr r25, r4
+/* 80316108 00311D68 7C BA 2B 78 */ mr r26, r5
+/* 8031610C 00311D6C 7C DB 33 78 */ mr r27, r6
+/* 80316110 00311D70 7C FC 3B 78 */ mr r28, r7
+/* 80316114 00311D74 3B BD F5 C8 */ addi r29, r29, lbl_8057F5C8@l
+/* 80316118 00311D78 48 00 04 98 */ b lbl_803165B0
+lbl_8031611C:
+/* 8031611C 00311D7C 57 40 04 3E */ clrlwi r0, r26, 0x10
+/* 80316120 00311D80 2C 00 00 3F */ cmpwi r0, 0x3f
+/* 80316124 00311D84 41 82 00 14 */ beq lbl_80316138
+/* 80316128 00311D88 40 80 03 40 */ bge lbl_80316468
+/* 8031612C 00311D8C 2C 00 00 2A */ cmpwi r0, 0x2a
+/* 80316130 00311D90 41 82 00 18 */ beq lbl_80316148
+/* 80316134 00311D94 48 00 03 34 */ b lbl_80316468
+lbl_80316138:
+/* 80316138 00311D98 57 00 04 3F */ clrlwi. r0, r24, 0x10
+/* 8031613C 00311D9C 40 82 03 44 */ bne lbl_80316480
+/* 80316140 00311DA0 38 60 00 00 */ li r3, 0
+/* 80316144 00311DA4 48 00 04 80 */ b lbl_803165C4
+lbl_80316148:
+/* 80316148 00311DA8 7F 63 DB 78 */ mr r3, r27
+/* 8031614C 00311DAC 7F 84 E3 78 */ mr r4, r28
+/* 80316150 00311DB0 4B FF FC D9 */ bl VFiPFPATH_GetNextCharOfPattern
+/* 80316154 00311DB4 7C 7A 1B 78 */ mr r26, r3
+/* 80316158 00311DB8 48 00 00 14 */ b lbl_8031616C
+lbl_8031615C:
+/* 8031615C 00311DBC 7F 63 DB 78 */ mr r3, r27
+/* 80316160 00311DC0 7F 84 E3 78 */ mr r4, r28
+/* 80316164 00311DC4 4B FF FC C5 */ bl VFiPFPATH_GetNextCharOfPattern
+/* 80316168 00311DC8 7C 7A 1B 78 */ mr r26, r3
+lbl_8031616C:
+/* 8031616C 00311DCC 57 40 04 3E */ clrlwi r0, r26, 0x10
+/* 80316170 00311DD0 28 00 00 2A */ cmplwi r0, 0x2a
+/* 80316174 00311DD4 41 82 FF E8 */ beq lbl_8031615C
+/* 80316178 00311DD8 28 00 00 3F */ cmplwi r0, 0x3f
+/* 8031617C 00311DDC 41 82 FF E0 */ beq lbl_8031615C
+/* 80316180 00311DE0 2C 00 00 00 */ cmpwi r0, 0
+/* 80316184 00311DE4 40 82 00 0C */ bne lbl_80316190
+/* 80316188 00311DE8 38 60 00 01 */ li r3, 1
+/* 8031618C 00311DEC 48 00 04 38 */ b lbl_803165C4
+lbl_80316190:
+/* 80316190 00311DF0 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80316194 00311DF4 3B E3 F5 C8 */ addi r31, r3, lbl_8057F5C8@l
+/* 80316198 00311DF8 48 00 02 C0 */ b lbl_80316458
+lbl_8031619C:
+/* 8031619C 00311DFC 57 03 04 3E */ clrlwi r3, r24, 0x10
+/* 803161A0 00311E00 57 40 04 3E */ clrlwi r0, r26, 0x10
+/* 803161A4 00311E04 7C 03 00 40 */ cmplw r3, r0
+/* 803161A8 00311E08 40 82 01 90 */ bne lbl_80316338
+/* 803161AC 00311E0C 80 B9 00 00 */ lwz r5, 0(r25)
+/* 803161B0 00311E10 80 19 00 04 */ lwz r0, 4(r25)
+/* 803161B4 00311E14 90 A1 00 18 */ stw r5, 0x18(r1)
+/* 803161B8 00311E18 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 803161BC 00311E1C 80 79 00 08 */ lwz r3, 8(r25)
+/* 803161C0 00311E20 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 803161C4 00311E24 2C 03 00 00 */ cmpwi r3, 0
+/* 803161C8 00311E28 90 61 00 20 */ stw r3, 0x20(r1)
+/* 803161CC 00311E2C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 803161D0 00311E30 80 7B 00 00 */ lwz r3, 0(r27)
+/* 803161D4 00311E34 80 1B 00 04 */ lwz r0, 4(r27)
+/* 803161D8 00311E38 90 61 00 08 */ stw r3, 8(r1)
+/* 803161DC 00311E3C 90 01 00 0C */ stw r0, 0xc(r1)
+/* 803161E0 00311E40 80 7B 00 08 */ lwz r3, 8(r27)
+/* 803161E4 00311E44 80 1B 00 0C */ lwz r0, 0xc(r27)
+/* 803161E8 00311E48 90 61 00 10 */ stw r3, 0x10(r1)
+/* 803161EC 00311E4C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803161F0 00311E50 41 82 00 80 */ beq lbl_80316270
+/* 803161F4 00311E54 A0 61 00 24 */ lhz r3, 0x24(r1)
+/* 803161F8 00311E58 28 03 02 0A */ cmplwi r3, 0x20a
+/* 803161FC 00311E5C 40 81 00 0C */ ble lbl_80316208
+/* 80316200 00311E60 3B 00 00 00 */ li r24, 0
+/* 80316204 00311E64 48 00 00 FC */ b lbl_80316300
+lbl_80316208:
+/* 80316208 00311E68 7C 85 1A 2E */ lhzx r4, r5, r3
+/* 8031620C 00311E6C 38 63 00 02 */ addi r3, r3, 2
+/* 80316210 00311E70 38 00 00 00 */ li r0, 0
+/* 80316214 00311E74 28 04 00 61 */ cmplwi r4, 0x61
+/* 80316218 00311E78 B0 61 00 24 */ sth r3, 0x24(r1)
+/* 8031621C 00311E7C 41 80 00 10 */ blt lbl_8031622C
+/* 80316220 00311E80 28 04 00 7A */ cmplwi r4, 0x7a
+/* 80316224 00311E84 41 81 00 08 */ bgt lbl_8031622C
+/* 80316228 00311E88 38 00 00 01 */ li r0, 1
+lbl_8031622C:
+/* 8031622C 00311E8C 2C 00 00 00 */ cmpwi r0, 0
+/* 80316230 00311E90 41 82 00 08 */ beq lbl_80316238
+/* 80316234 00311E94 38 84 FF E0 */ addi r4, r4, -32
+lbl_80316238:
+/* 80316238 00311E98 54 98 04 3E */ clrlwi r24, r4, 0x10
+/* 8031623C 00311E9C 28 18 FF 41 */ cmplwi r24, 0xff41
+/* 80316240 00311EA0 41 80 00 1C */ blt lbl_8031625C
+/* 80316244 00311EA4 28 18 FF 5A */ cmplwi r24, 0xff5a
+/* 80316248 00311EA8 41 81 00 14 */ bgt lbl_8031625C
+/* 8031624C 00311EAC 38 18 FF E0 */ addi r0, r24, -32
+/* 80316250 00311EB0 38 60 00 01 */ li r3, 1
+/* 80316254 00311EB4 54 1E 04 3E */ clrlwi r30, r0, 0x10
+/* 80316258 00311EB8 48 00 00 08 */ b lbl_80316260
+lbl_8031625C:
+/* 8031625C 00311EBC 38 60 00 00 */ li r3, 0
+lbl_80316260:
+/* 80316260 00311EC0 28 03 00 01 */ cmplwi r3, 1
+/* 80316264 00311EC4 40 82 00 9C */ bne lbl_80316300
+/* 80316268 00311EC8 7F D8 F3 78 */ mr r24, r30
+/* 8031626C 00311ECC 48 00 00 94 */ b lbl_80316300
+lbl_80316270:
+/* 80316270 00311ED0 A0 61 00 24 */ lhz r3, 0x24(r1)
+/* 80316274 00311ED4 28 03 00 0C */ cmplwi r3, 0xc
+/* 80316278 00311ED8 41 80 00 0C */ blt lbl_80316284
+/* 8031627C 00311EDC 3B 00 00 00 */ li r24, 0
+/* 80316280 00311EE0 48 00 00 80 */ b lbl_80316300
+lbl_80316284:
+/* 80316284 00311EE4 38 03 00 01 */ addi r0, r3, 1
+/* 80316288 00311EE8 81 9F 00 30 */ lwz r12, 0x30(r31)
+/* 8031628C 00311EEC B0 01 00 24 */ sth r0, 0x24(r1)
+/* 80316290 00311EF0 38 80 00 01 */ li r4, 1
+/* 80316294 00311EF4 7F 05 18 AE */ lbzx r24, r5, r3
+/* 80316298 00311EF8 7F 18 07 74 */ extsb r24, r24
+/* 8031629C 00311EFC 7F 03 C3 78 */ mr r3, r24
+/* 803162A0 00311F00 7D 89 03 A6 */ mtctr r12
+/* 803162A4 00311F04 4E 80 04 21 */ bctrl
+/* 803162A8 00311F08 2C 03 00 00 */ cmpwi r3, 0
+/* 803162AC 00311F0C 41 82 00 24 */ beq lbl_803162D0
+/* 803162B0 00311F10 A0 81 00 24 */ lhz r4, 0x24(r1)
+/* 803162B4 00311F14 57 00 44 2E */ rlwinm r0, r24, 8, 0x10, 0x17
+/* 803162B8 00311F18 80 A1 00 18 */ lwz r5, 0x18(r1)
+/* 803162BC 00311F1C 38 64 00 01 */ addi r3, r4, 1
+/* 803162C0 00311F20 B0 61 00 24 */ sth r3, 0x24(r1)
+/* 803162C4 00311F24 7C 65 20 AE */ lbzx r3, r5, r4
+/* 803162C8 00311F28 7C 00 1A 14 */ add r0, r0, r3
+/* 803162CC 00311F2C 54 18 04 3E */ clrlwi r24, r0, 0x10
+lbl_803162D0:
+/* 803162D0 00311F30 57 00 04 3E */ clrlwi r0, r24, 0x10
+/* 803162D4 00311F34 38 60 00 00 */ li r3, 0
+/* 803162D8 00311F38 28 00 00 61 */ cmplwi r0, 0x61
+/* 803162DC 00311F3C 41 80 00 10 */ blt lbl_803162EC
+/* 803162E0 00311F40 28 00 00 7A */ cmplwi r0, 0x7a
+/* 803162E4 00311F44 41 81 00 08 */ bgt lbl_803162EC
+/* 803162E8 00311F48 38 60 00 01 */ li r3, 1
+lbl_803162EC:
+/* 803162EC 00311F4C 2C 03 00 00 */ cmpwi r3, 0
+/* 803162F0 00311F50 57 03 04 3E */ clrlwi r3, r24, 0x10
+/* 803162F4 00311F54 41 82 00 08 */ beq lbl_803162FC
+/* 803162F8 00311F58 38 63 FF E0 */ addi r3, r3, -32
+lbl_803162FC:
+/* 803162FC 00311F5C 54 78 04 3E */ clrlwi r24, r3, 0x10
+lbl_80316300:
+/* 80316300 00311F60 7F 84 E3 78 */ mr r4, r28
+/* 80316304 00311F64 38 61 00 08 */ addi r3, r1, 8
+/* 80316308 00311F68 4B FF FB 21 */ bl VFiPFPATH_GetNextCharOfPattern
+/* 8031630C 00311F6C 7C 7A 1B 78 */ mr r26, r3
+/* 80316310 00311F70 7F 87 E3 78 */ mr r7, r28
+/* 80316314 00311F74 57 03 04 3E */ clrlwi r3, r24, 0x10
+/* 80316318 00311F78 38 81 00 18 */ addi r4, r1, 0x18
+/* 8031631C 00311F7C 57 45 04 3E */ clrlwi r5, r26, 0x10
+/* 80316320 00311F80 38 C1 00 08 */ addi r6, r1, 8
+/* 80316324 00311F84 4B FF FD C5 */ bl VFiPFPATH_DoMatchFileNameWithPattern
+/* 80316328 00311F88 2C 03 00 00 */ cmpwi r3, 0
+/* 8031632C 00311F8C 41 82 00 0C */ beq lbl_80316338
+/* 80316330 00311F90 38 60 00 01 */ li r3, 1
+/* 80316334 00311F94 48 00 02 90 */ b lbl_803165C4
+lbl_80316338:
+/* 80316338 00311F98 80 19 00 08 */ lwz r0, 8(r25)
+/* 8031633C 00311F9C 2C 00 00 00 */ cmpwi r0, 0
+/* 80316340 00311FA0 41 82 00 84 */ beq lbl_803163C4
+/* 80316344 00311FA4 A0 B9 00 0C */ lhz r5, 0xc(r25)
+/* 80316348 00311FA8 28 05 02 0A */ cmplwi r5, 0x20a
+/* 8031634C 00311FAC 40 81 00 0C */ ble lbl_80316358
+/* 80316350 00311FB0 3B 00 00 00 */ li r24, 0
+/* 80316354 00311FB4 48 00 01 04 */ b lbl_80316458
+lbl_80316358:
+/* 80316358 00311FB8 80 99 00 00 */ lwz r4, 0(r25)
+/* 8031635C 00311FBC 38 65 00 02 */ addi r3, r5, 2
+/* 80316360 00311FC0 38 00 00 00 */ li r0, 0
+/* 80316364 00311FC4 7C 84 2A 2E */ lhzx r4, r4, r5
+/* 80316368 00311FC8 28 04 00 61 */ cmplwi r4, 0x61
+/* 8031636C 00311FCC B0 79 00 0C */ sth r3, 0xc(r25)
+/* 80316370 00311FD0 41 80 00 10 */ blt lbl_80316380
+/* 80316374 00311FD4 28 04 00 7A */ cmplwi r4, 0x7a
+/* 80316378 00311FD8 41 81 00 08 */ bgt lbl_80316380
+/* 8031637C 00311FDC 38 00 00 01 */ li r0, 1
+lbl_80316380:
+/* 80316380 00311FE0 2C 00 00 00 */ cmpwi r0, 0
+/* 80316384 00311FE4 41 82 00 08 */ beq lbl_8031638C
+/* 80316388 00311FE8 38 84 FF E0 */ addi r4, r4, -32
+lbl_8031638C:
+/* 8031638C 00311FEC 54 98 04 3E */ clrlwi r24, r4, 0x10
+/* 80316390 00311FF0 28 18 FF 41 */ cmplwi r24, 0xff41
+/* 80316394 00311FF4 41 80 00 1C */ blt lbl_803163B0
+/* 80316398 00311FF8 28 18 FF 5A */ cmplwi r24, 0xff5a
+/* 8031639C 00311FFC 41 81 00 14 */ bgt lbl_803163B0
+/* 803163A0 00312000 38 18 FF E0 */ addi r0, r24, -32
+/* 803163A4 00312004 38 60 00 01 */ li r3, 1
+/* 803163A8 00312008 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 803163AC 0031200C 48 00 00 08 */ b lbl_803163B4
+lbl_803163B0:
+/* 803163B0 00312010 38 60 00 00 */ li r3, 0
+lbl_803163B4:
+/* 803163B4 00312014 28 03 00 01 */ cmplwi r3, 1
+/* 803163B8 00312018 40 82 00 A0 */ bne lbl_80316458
+/* 803163BC 0031201C 7F B8 EB 78 */ mr r24, r29
+/* 803163C0 00312020 48 00 00 98 */ b lbl_80316458
+lbl_803163C4:
+/* 803163C4 00312024 A0 B9 00 0C */ lhz r5, 0xc(r25)
+/* 803163C8 00312028 28 05 00 0C */ cmplwi r5, 0xc
+/* 803163CC 0031202C 41 80 00 0C */ blt lbl_803163D8
+/* 803163D0 00312030 3B 00 00 00 */ li r24, 0
+/* 803163D4 00312034 48 00 00 84 */ b lbl_80316458
+lbl_803163D8:
+/* 803163D8 00312038 38 05 00 01 */ addi r0, r5, 1
+/* 803163DC 0031203C 80 79 00 00 */ lwz r3, 0(r25)
+/* 803163E0 00312040 B0 19 00 0C */ sth r0, 0xc(r25)
+/* 803163E4 00312044 38 80 00 01 */ li r4, 1
+/* 803163E8 00312048 7F 03 28 AE */ lbzx r24, r3, r5
+/* 803163EC 0031204C 81 9F 00 30 */ lwz r12, 0x30(r31)
+/* 803163F0 00312050 7F 18 07 74 */ extsb r24, r24
+/* 803163F4 00312054 7F 03 C3 78 */ mr r3, r24
+/* 803163F8 00312058 7D 89 03 A6 */ mtctr r12
+/* 803163FC 0031205C 4E 80 04 21 */ bctrl
+/* 80316400 00312060 2C 03 00 00 */ cmpwi r3, 0
+/* 80316404 00312064 41 82 00 24 */ beq lbl_80316428
+/* 80316408 00312068 A0 99 00 0C */ lhz r4, 0xc(r25)
+/* 8031640C 0031206C 57 00 44 2E */ rlwinm r0, r24, 8, 0x10, 0x17
+/* 80316410 00312070 80 B9 00 00 */ lwz r5, 0(r25)
+/* 80316414 00312074 38 64 00 01 */ addi r3, r4, 1
+/* 80316418 00312078 B0 79 00 0C */ sth r3, 0xc(r25)
+/* 8031641C 0031207C 7C 65 20 AE */ lbzx r3, r5, r4
+/* 80316420 00312080 7C 00 1A 14 */ add r0, r0, r3
+/* 80316424 00312084 54 18 04 3E */ clrlwi r24, r0, 0x10
+lbl_80316428:
+/* 80316428 00312088 57 00 04 3E */ clrlwi r0, r24, 0x10
+/* 8031642C 0031208C 38 60 00 00 */ li r3, 0
+/* 80316430 00312090 28 00 00 61 */ cmplwi r0, 0x61
+/* 80316434 00312094 41 80 00 10 */ blt lbl_80316444
+/* 80316438 00312098 28 00 00 7A */ cmplwi r0, 0x7a
+/* 8031643C 0031209C 41 81 00 08 */ bgt lbl_80316444
+/* 80316440 003120A0 38 60 00 01 */ li r3, 1
+lbl_80316444:
+/* 80316444 003120A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80316448 003120A8 57 03 04 3E */ clrlwi r3, r24, 0x10
+/* 8031644C 003120AC 41 82 00 08 */ beq lbl_80316454
+/* 80316450 003120B0 38 63 FF E0 */ addi r3, r3, -32
+lbl_80316454:
+/* 80316454 003120B4 54 78 04 3E */ clrlwi r24, r3, 0x10
+lbl_80316458:
+/* 80316458 003120B8 57 00 04 3F */ clrlwi. r0, r24, 0x10
+/* 8031645C 003120BC 40 82 FD 40 */ bne lbl_8031619C
+/* 80316460 003120C0 38 60 00 00 */ li r3, 0
+/* 80316464 003120C4 48 00 01 60 */ b lbl_803165C4
+lbl_80316468:
+/* 80316468 003120C8 57 03 04 3E */ clrlwi r3, r24, 0x10
+/* 8031646C 003120CC 57 40 04 3E */ clrlwi r0, r26, 0x10
+/* 80316470 003120D0 7C 03 00 40 */ cmplw r3, r0
+/* 80316474 003120D4 41 82 00 0C */ beq lbl_80316480
+/* 80316478 003120D8 38 60 00 00 */ li r3, 0
+/* 8031647C 003120DC 48 00 01 48 */ b lbl_803165C4
+lbl_80316480:
+/* 80316480 003120E0 80 19 00 08 */ lwz r0, 8(r25)
+/* 80316484 003120E4 2C 00 00 00 */ cmpwi r0, 0
+/* 80316488 003120E8 41 82 00 84 */ beq lbl_8031650C
+/* 8031648C 003120EC A0 B9 00 0C */ lhz r5, 0xc(r25)
+/* 80316490 003120F0 28 05 02 0A */ cmplwi r5, 0x20a
+/* 80316494 003120F4 40 81 00 0C */ ble lbl_803164A0
+/* 80316498 003120F8 3B 00 00 00 */ li r24, 0
+/* 8031649C 003120FC 48 00 01 04 */ b lbl_803165A0
+lbl_803164A0:
+/* 803164A0 00312100 80 99 00 00 */ lwz r4, 0(r25)
+/* 803164A4 00312104 38 65 00 02 */ addi r3, r5, 2
+/* 803164A8 00312108 38 00 00 00 */ li r0, 0
+/* 803164AC 0031210C 7C 84 2A 2E */ lhzx r4, r4, r5
+/* 803164B0 00312110 28 04 00 61 */ cmplwi r4, 0x61
+/* 803164B4 00312114 B0 79 00 0C */ sth r3, 0xc(r25)
+/* 803164B8 00312118 41 80 00 10 */ blt lbl_803164C8
+/* 803164BC 0031211C 28 04 00 7A */ cmplwi r4, 0x7a
+/* 803164C0 00312120 41 81 00 08 */ bgt lbl_803164C8
+/* 803164C4 00312124 38 00 00 01 */ li r0, 1
+lbl_803164C8:
+/* 803164C8 00312128 2C 00 00 00 */ cmpwi r0, 0
+/* 803164CC 0031212C 41 82 00 08 */ beq lbl_803164D4
+/* 803164D0 00312130 38 84 FF E0 */ addi r4, r4, -32
+lbl_803164D4:
+/* 803164D4 00312134 54 98 04 3E */ clrlwi r24, r4, 0x10
+/* 803164D8 00312138 28 18 FF 41 */ cmplwi r24, 0xff41
+/* 803164DC 0031213C 41 80 00 1C */ blt lbl_803164F8
+/* 803164E0 00312140 28 18 FF 5A */ cmplwi r24, 0xff5a
+/* 803164E4 00312144 41 81 00 14 */ bgt lbl_803164F8
+/* 803164E8 00312148 38 18 FF E0 */ addi r0, r24, -32
+/* 803164EC 0031214C 38 60 00 01 */ li r3, 1
+/* 803164F0 00312150 54 1F 04 3E */ clrlwi r31, r0, 0x10
+/* 803164F4 00312154 48 00 00 08 */ b lbl_803164FC
+lbl_803164F8:
+/* 803164F8 00312158 38 60 00 00 */ li r3, 0
+lbl_803164FC:
+/* 803164FC 0031215C 28 03 00 01 */ cmplwi r3, 1
+/* 80316500 00312160 40 82 00 A0 */ bne lbl_803165A0
+/* 80316504 00312164 7F F8 FB 78 */ mr r24, r31
+/* 80316508 00312168 48 00 00 98 */ b lbl_803165A0
+lbl_8031650C:
+/* 8031650C 0031216C A0 B9 00 0C */ lhz r5, 0xc(r25)
+/* 80316510 00312170 28 05 00 0C */ cmplwi r5, 0xc
+/* 80316514 00312174 41 80 00 0C */ blt lbl_80316520
+/* 80316518 00312178 3B 00 00 00 */ li r24, 0
+/* 8031651C 0031217C 48 00 00 84 */ b lbl_803165A0
+lbl_80316520:
+/* 80316520 00312180 38 05 00 01 */ addi r0, r5, 1
+/* 80316524 00312184 80 79 00 00 */ lwz r3, 0(r25)
+/* 80316528 00312188 B0 19 00 0C */ sth r0, 0xc(r25)
+/* 8031652C 0031218C 38 80 00 01 */ li r4, 1
+/* 80316530 00312190 7F 03 28 AE */ lbzx r24, r3, r5
+/* 80316534 00312194 81 9D 00 30 */ lwz r12, 0x30(r29)
+/* 80316538 00312198 7F 18 07 74 */ extsb r24, r24
+/* 8031653C 0031219C 7F 03 C3 78 */ mr r3, r24
+/* 80316540 003121A0 7D 89 03 A6 */ mtctr r12
+/* 80316544 003121A4 4E 80 04 21 */ bctrl
+/* 80316548 003121A8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031654C 003121AC 41 82 00 24 */ beq lbl_80316570
+/* 80316550 003121B0 A0 99 00 0C */ lhz r4, 0xc(r25)
+/* 80316554 003121B4 57 00 44 2E */ rlwinm r0, r24, 8, 0x10, 0x17
+/* 80316558 003121B8 80 B9 00 00 */ lwz r5, 0(r25)
+/* 8031655C 003121BC 38 64 00 01 */ addi r3, r4, 1
+/* 80316560 003121C0 B0 79 00 0C */ sth r3, 0xc(r25)
+/* 80316564 003121C4 7C 65 20 AE */ lbzx r3, r5, r4
+/* 80316568 003121C8 7C 00 1A 14 */ add r0, r0, r3
+/* 8031656C 003121CC 54 18 04 3E */ clrlwi r24, r0, 0x10
+lbl_80316570:
+/* 80316570 003121D0 57 00 04 3E */ clrlwi r0, r24, 0x10
+/* 80316574 003121D4 38 60 00 00 */ li r3, 0
+/* 80316578 003121D8 28 00 00 61 */ cmplwi r0, 0x61
+/* 8031657C 003121DC 41 80 00 10 */ blt lbl_8031658C
+/* 80316580 003121E0 28 00 00 7A */ cmplwi r0, 0x7a
+/* 80316584 003121E4 41 81 00 08 */ bgt lbl_8031658C
+/* 80316588 003121E8 38 60 00 01 */ li r3, 1
+lbl_8031658C:
+/* 8031658C 003121EC 2C 03 00 00 */ cmpwi r3, 0
+/* 80316590 003121F0 57 03 04 3E */ clrlwi r3, r24, 0x10
+/* 80316594 003121F4 41 82 00 08 */ beq lbl_8031659C
+/* 80316598 003121F8 38 63 FF E0 */ addi r3, r3, -32
+lbl_8031659C:
+/* 8031659C 003121FC 54 78 04 3E */ clrlwi r24, r3, 0x10
+lbl_803165A0:
+/* 803165A0 00312200 7F 63 DB 78 */ mr r3, r27
+/* 803165A4 00312204 7F 84 E3 78 */ mr r4, r28
+/* 803165A8 00312208 4B FF F8 81 */ bl VFiPFPATH_GetNextCharOfPattern
+/* 803165AC 0031220C 7C 7A 1B 78 */ mr r26, r3
+lbl_803165B0:
+/* 803165B0 00312210 57 40 04 3F */ clrlwi. r0, r26, 0x10
+/* 803165B4 00312214 40 82 FB 68 */ bne lbl_8031611C
+/* 803165B8 00312218 57 00 04 3E */ clrlwi r0, r24, 0x10
+/* 803165BC 0031221C 7C 00 00 34 */ cntlzw r0, r0
+/* 803165C0 00312220 54 03 D9 7E */ srwi r3, r0, 5
+lbl_803165C4:
+/* 803165C4 00312224 39 61 00 50 */ addi r11, r1, 0x50
+/* 803165C8 00312228 4B EB 0B A1 */ bl _restgpr_24
+/* 803165CC 0031222C 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 803165D0 00312230 7C 08 03 A6 */ mtlr r0
+/* 803165D4 00312234 38 21 00 50 */ addi r1, r1, 0x50
+/* 803165D8 00312238 4E 80 00 20 */ blr
+
+.global VFiPFPATH_cmpNameImpl
+VFiPFPATH_cmpNameImpl:
+/* 803165DC 0031223C 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 803165E0 00312240 7C 08 02 A6 */ mflr r0
+/* 803165E4 00312244 90 01 00 44 */ stw r0, 0x44(r1)
+/* 803165E8 00312248 39 61 00 40 */ addi r11, r1, 0x40
+/* 803165EC 0031224C 4B EB 0B 2D */ bl _savegpr_23
+/* 803165F0 00312250 3C C0 80 58 */ lis r6, lbl_8057F5C8@ha
+/* 803165F4 00312254 7C 7A 1B 78 */ mr r26, r3
+/* 803165F8 00312258 7C 9B 23 78 */ mr r27, r4
+/* 803165FC 0031225C 7C BC 2B 78 */ mr r28, r5
+/* 80316600 00312260 3B 06 F5 C8 */ addi r24, r6, lbl_8057F5C8@l
+/* 80316604 00312264 3B 20 00 01 */ li r25, 1
+/* 80316608 00312268 48 00 03 04 */ b lbl_8031690C
+lbl_8031660C:
+/* 8031660C 0031226C 81 98 00 2C */ lwz r12, 0x2c(r24)
+/* 80316610 00312270 7F 63 DB 78 */ mr r3, r27
+/* 80316614 00312274 7D 89 03 A6 */ mtctr r12
+/* 80316618 00312278 4E 80 04 21 */ bctrl
+/* 8031661C 0031227C 81 98 00 2C */ lwz r12, 0x2c(r24)
+/* 80316620 00312280 7C 77 1B 78 */ mr r23, r3
+/* 80316624 00312284 7F 43 D3 78 */ mr r3, r26
+/* 80316628 00312288 7D 89 03 A6 */ mtctr r12
+/* 8031662C 0031228C 4E 80 04 21 */ bctrl
+/* 80316630 00312290 2C 17 00 01 */ cmpwi r23, 1
+/* 80316634 00312294 7C 7F 1B 78 */ mr r31, r3
+/* 80316638 00312298 40 82 00 14 */ bne lbl_8031664C
+/* 8031663C 0031229C 88 7B 00 00 */ lbz r3, 0(r27)
+/* 80316640 003122A0 7C 63 07 74 */ extsb r3, r3
+/* 80316644 003122A4 4B FE E8 51 */ bl VFipf_toupper
+/* 80316648 003122A8 48 00 00 10 */ b lbl_80316658
+lbl_8031664C:
+/* 8031664C 003122AC 7F 63 DB 78 */ mr r3, r27
+/* 80316650 003122B0 4B FE EB 61 */ bl VFiPF_GET_LE_U16
+/* 80316654 003122B4 54 63 04 3E */ clrlwi r3, r3, 0x10
+lbl_80316658:
+/* 80316658 003122B8 2C 1F 00 01 */ cmpwi r31, 1
+/* 8031665C 003122BC 54 7E 04 3E */ clrlwi r30, r3, 0x10
+/* 80316660 003122C0 40 82 00 14 */ bne lbl_80316674
+/* 80316664 003122C4 88 7A 00 00 */ lbz r3, 0(r26)
+/* 80316668 003122C8 7C 63 07 74 */ extsb r3, r3
+/* 8031666C 003122CC 4B FE E8 29 */ bl VFipf_toupper
+/* 80316670 003122D0 48 00 00 10 */ b lbl_80316680
+lbl_80316674:
+/* 80316674 003122D4 7F 43 D3 78 */ mr r3, r26
+/* 80316678 003122D8 4B FE EB 39 */ bl VFiPF_GET_LE_U16
+/* 8031667C 003122DC 54 63 04 3E */ clrlwi r3, r3, 0x10
+lbl_80316680:
+/* 80316680 003122E0 2C 17 00 02 */ cmpwi r23, 2
+/* 80316684 003122E4 54 7D 04 3E */ clrlwi r29, r3, 0x10
+/* 80316688 003122E8 40 82 00 74 */ bne lbl_803166FC
+/* 8031668C 003122EC 81 98 00 24 */ lwz r12, 0x24(r24)
+/* 80316690 003122F0 7F 63 DB 78 */ mr r3, r27
+/* 80316694 003122F4 38 81 00 0A */ addi r4, r1, 0xa
+/* 80316698 003122F8 7D 89 03 A6 */ mtctr r12
+/* 8031669C 003122FC 4E 80 04 21 */ bctrl
+/* 803166A0 00312300 A0 61 00 0A */ lhz r3, 0xa(r1)
+/* 803166A4 00312304 28 03 FF 41 */ cmplwi r3, 0xff41
+/* 803166A8 00312308 41 80 00 1C */ blt lbl_803166C4
+/* 803166AC 0031230C 28 03 FF 5A */ cmplwi r3, 0xff5a
+/* 803166B0 00312310 41 81 00 14 */ bgt lbl_803166C4
+/* 803166B4 00312314 38 03 FF E0 */ addi r0, r3, -32
+/* 803166B8 00312318 38 60 00 01 */ li r3, 1
+/* 803166BC 0031231C B0 01 00 0A */ sth r0, 0xa(r1)
+/* 803166C0 00312320 48 00 00 08 */ b lbl_803166C8
+lbl_803166C4:
+/* 803166C4 00312324 38 60 00 00 */ li r3, 0
+lbl_803166C8:
+/* 803166C8 00312328 28 03 00 01 */ cmplwi r3, 1
+/* 803166CC 0031232C 40 82 00 20 */ bne lbl_803166EC
+/* 803166D0 00312330 81 98 00 28 */ lwz r12, 0x28(r24)
+/* 803166D4 00312334 38 61 00 0A */ addi r3, r1, 0xa
+/* 803166D8 00312338 7C 64 1B 78 */ mr r4, r3
+/* 803166DC 0031233C 7D 89 03 A6 */ mtctr r12
+/* 803166E0 00312340 4E 80 04 21 */ bctrl
+/* 803166E4 00312344 38 60 00 01 */ li r3, 1
+/* 803166E8 00312348 48 00 00 08 */ b lbl_803166F0
+lbl_803166EC:
+/* 803166EC 0031234C 38 60 00 00 */ li r3, 0
+lbl_803166F0:
+/* 803166F0 00312350 28 03 00 01 */ cmplwi r3, 1
+/* 803166F4 00312354 40 82 00 08 */ bne lbl_803166FC
+/* 803166F8 00312358 A3 C1 00 0A */ lhz r30, 0xa(r1)
+lbl_803166FC:
+/* 803166FC 0031235C 2C 1F 00 02 */ cmpwi r31, 2
+/* 80316700 00312360 40 82 00 74 */ bne lbl_80316774
+/* 80316704 00312364 81 98 00 24 */ lwz r12, 0x24(r24)
+/* 80316708 00312368 7F 43 D3 78 */ mr r3, r26
+/* 8031670C 0031236C 38 81 00 08 */ addi r4, r1, 8
+/* 80316710 00312370 7D 89 03 A6 */ mtctr r12
+/* 80316714 00312374 4E 80 04 21 */ bctrl
+/* 80316718 00312378 A0 61 00 08 */ lhz r3, 8(r1)
+/* 8031671C 0031237C 28 03 FF 41 */ cmplwi r3, 0xff41
+/* 80316720 00312380 41 80 00 1C */ blt lbl_8031673C
+/* 80316724 00312384 28 03 FF 5A */ cmplwi r3, 0xff5a
+/* 80316728 00312388 41 81 00 14 */ bgt lbl_8031673C
+/* 8031672C 0031238C 38 03 FF E0 */ addi r0, r3, -32
+/* 80316730 00312390 38 60 00 01 */ li r3, 1
+/* 80316734 00312394 B0 01 00 08 */ sth r0, 8(r1)
+/* 80316738 00312398 48 00 00 08 */ b lbl_80316740
+lbl_8031673C:
+/* 8031673C 0031239C 38 60 00 00 */ li r3, 0
+lbl_80316740:
+/* 80316740 003123A0 28 03 00 01 */ cmplwi r3, 1
+/* 80316744 003123A4 40 82 00 20 */ bne lbl_80316764
+/* 80316748 003123A8 81 98 00 28 */ lwz r12, 0x28(r24)
+/* 8031674C 003123AC 38 61 00 08 */ addi r3, r1, 8
+/* 80316750 003123B0 7C 64 1B 78 */ mr r4, r3
+/* 80316754 003123B4 7D 89 03 A6 */ mtctr r12
+/* 80316758 003123B8 4E 80 04 21 */ bctrl
+/* 8031675C 003123BC 38 60 00 01 */ li r3, 1
+/* 80316760 003123C0 48 00 00 08 */ b lbl_80316768
+lbl_80316764:
+/* 80316764 003123C4 38 60 00 00 */ li r3, 0
+lbl_80316768:
+/* 80316768 003123C8 28 03 00 01 */ cmplwi r3, 1
+/* 8031676C 003123CC 40 82 00 08 */ bne lbl_80316774
+/* 80316770 003123D0 A3 A1 00 08 */ lhz r29, 8(r1)
+lbl_80316774:
+/* 80316774 003123D4 2C 1E 00 3F */ cmpwi r30, 0x3f
+/* 80316778 003123D8 7F 7B BA 14 */ add r27, r27, r23
+/* 8031677C 003123DC 41 82 00 14 */ beq lbl_80316790
+/* 80316780 003123E0 40 80 01 78 */ bge lbl_803168F8
+/* 80316784 003123E4 2C 1E 00 2A */ cmpwi r30, 0x2a
+/* 80316788 003123E8 41 82 00 18 */ beq lbl_803167A0
+/* 8031678C 003123EC 48 00 01 6C */ b lbl_803168F8
+lbl_80316790:
+/* 80316790 003123F0 2C 1D 00 00 */ cmpwi r29, 0
+/* 80316794 003123F4 40 82 01 74 */ bne lbl_80316908
+/* 80316798 003123F8 38 60 00 01 */ li r3, 1
+/* 8031679C 003123FC 48 00 01 90 */ b lbl_8031692C
+lbl_803167A0:
+/* 803167A0 00312400 81 98 00 2C */ lwz r12, 0x2c(r24)
+/* 803167A4 00312404 7F 63 DB 78 */ mr r3, r27
+/* 803167A8 00312408 7D 89 03 A6 */ mtctr r12
+/* 803167AC 0031240C 4E 80 04 21 */ bctrl
+/* 803167B0 00312410 2C 03 00 01 */ cmpwi r3, 1
+/* 803167B4 00312414 7C 77 1B 78 */ mr r23, r3
+/* 803167B8 00312418 41 82 00 14 */ beq lbl_803167CC
+/* 803167BC 0031241C 7F 63 DB 78 */ mr r3, r27
+/* 803167C0 00312420 4B FE E9 F1 */ bl VFiPF_GET_LE_U16
+/* 803167C4 00312424 54 63 04 3E */ clrlwi r3, r3, 0x10
+/* 803167C8 00312428 48 00 00 10 */ b lbl_803167D8
+lbl_803167CC:
+/* 803167CC 0031242C 88 7B 00 00 */ lbz r3, 0(r27)
+/* 803167D0 00312430 7C 63 07 74 */ extsb r3, r3
+/* 803167D4 00312434 4B FE E6 C1 */ bl VFipf_toupper
+lbl_803167D8:
+/* 803167D8 00312438 54 7E 04 3E */ clrlwi r30, r3, 0x10
+/* 803167DC 0031243C 7F 7B BA 14 */ add r27, r27, r23
+/* 803167E0 00312440 28 1E 00 3F */ cmplwi r30, 0x3f
+/* 803167E4 00312444 40 82 00 54 */ bne lbl_80316838
+/* 803167E8 00312448 2C 1D 00 00 */ cmpwi r29, 0
+/* 803167EC 0031244C 40 82 00 0C */ bne lbl_803167F8
+/* 803167F0 00312450 38 60 00 01 */ li r3, 1
+/* 803167F4 00312454 48 00 01 38 */ b lbl_8031692C
+lbl_803167F8:
+/* 803167F8 00312458 81 98 00 2C */ lwz r12, 0x2c(r24)
+/* 803167FC 0031245C 7F 5A FA 14 */ add r26, r26, r31
+/* 80316800 00312460 7F 43 D3 78 */ mr r3, r26
+/* 80316804 00312464 7D 89 03 A6 */ mtctr r12
+/* 80316808 00312468 4E 80 04 21 */ bctrl
+/* 8031680C 0031246C 2C 03 00 01 */ cmpwi r3, 1
+/* 80316810 00312470 7C 7F 1B 78 */ mr r31, r3
+/* 80316814 00312474 40 82 00 14 */ bne lbl_80316828
+/* 80316818 00312478 88 7A 00 00 */ lbz r3, 0(r26)
+/* 8031681C 0031247C 7C 63 07 74 */ extsb r3, r3
+/* 80316820 00312480 4B FE E6 75 */ bl VFipf_toupper
+/* 80316824 00312484 48 00 00 10 */ b lbl_80316834
+lbl_80316828:
+/* 80316828 00312488 7F 43 D3 78 */ mr r3, r26
+/* 8031682C 0031248C 4B FE E9 85 */ bl VFiPF_GET_LE_U16
+/* 80316830 00312490 54 63 04 3E */ clrlwi r3, r3, 0x10
+lbl_80316834:
+/* 80316834 00312494 54 7D 04 3E */ clrlwi r29, r3, 0x10
+lbl_80316838:
+/* 80316838 00312498 28 1E 00 3F */ cmplwi r30, 0x3f
+/* 8031683C 0031249C 41 82 FF 64 */ beq lbl_803167A0
+/* 80316840 003124A0 28 1E 00 2A */ cmplwi r30, 0x2a
+/* 80316844 003124A4 41 82 FF 5C */ beq lbl_803167A0
+/* 80316848 003124A8 2C 1E 00 00 */ cmpwi r30, 0
+/* 8031684C 003124AC 40 82 00 88 */ bne lbl_803168D4
+/* 80316850 003124B0 38 60 00 00 */ li r3, 0
+/* 80316854 003124B4 48 00 00 D8 */ b lbl_8031692C
+/* 80316858 003124B8 48 00 00 7C */ b lbl_803168D4
+lbl_8031685C:
+/* 8031685C 003124BC 7C 1D F0 40 */ cmplw r29, r30
+/* 80316860 003124C0 7F 5A FA 14 */ add r26, r26, r31
+/* 80316864 003124C4 40 82 00 34 */ bne lbl_80316898
+/* 80316868 003124C8 7F 43 D3 78 */ mr r3, r26
+/* 8031686C 003124CC 7F 64 DB 78 */ mr r4, r27
+/* 80316870 003124D0 7F 85 E3 78 */ mr r5, r28
+/* 80316874 003124D4 4B FF FD 69 */ bl VFiPFPATH_cmpNameImpl
+/* 80316878 003124D8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031687C 003124DC 40 82 00 0C */ bne lbl_80316888
+/* 80316880 003124E0 38 60 00 00 */ li r3, 0
+/* 80316884 003124E4 48 00 00 A8 */ b lbl_8031692C
+lbl_80316888:
+/* 80316888 003124E8 80 1C 00 00 */ lwz r0, 0(r28)
+/* 8031688C 003124EC 2C 00 00 00 */ cmpwi r0, 0
+/* 80316890 003124F0 41 82 00 08 */ beq lbl_80316898
+/* 80316894 003124F4 48 00 00 98 */ b lbl_8031692C
+lbl_80316898:
+/* 80316898 003124F8 81 98 00 2C */ lwz r12, 0x2c(r24)
+/* 8031689C 003124FC 7F 43 D3 78 */ mr r3, r26
+/* 803168A0 00312500 7D 89 03 A6 */ mtctr r12
+/* 803168A4 00312504 4E 80 04 21 */ bctrl
+/* 803168A8 00312508 2C 03 00 01 */ cmpwi r3, 1
+/* 803168AC 0031250C 7C 7F 1B 78 */ mr r31, r3
+/* 803168B0 00312510 40 82 00 14 */ bne lbl_803168C4
+/* 803168B4 00312514 88 7A 00 00 */ lbz r3, 0(r26)
+/* 803168B8 00312518 7C 63 07 74 */ extsb r3, r3
+/* 803168BC 0031251C 4B FE E5 D9 */ bl VFipf_toupper
+/* 803168C0 00312520 48 00 00 10 */ b lbl_803168D0
+lbl_803168C4:
+/* 803168C4 00312524 7F 43 D3 78 */ mr r3, r26
+/* 803168C8 00312528 4B FE E8 E9 */ bl VFiPF_GET_LE_U16
+/* 803168CC 0031252C 54 63 04 3E */ clrlwi r3, r3, 0x10
+lbl_803168D0:
+/* 803168D0 00312530 54 7D 04 3E */ clrlwi r29, r3, 0x10
+lbl_803168D4:
+/* 803168D4 00312534 2C 1D 00 00 */ cmpwi r29, 0
+/* 803168D8 00312538 40 82 FF 84 */ bne lbl_8031685C
+/* 803168DC 0031253C 88 1A 00 00 */ lbz r0, 0(r26)
+/* 803168E0 00312540 7C 00 07 75 */ extsb. r0, r0
+/* 803168E4 00312544 41 82 00 10 */ beq lbl_803168F4
+/* 803168E8 00312548 88 1B 00 00 */ lbz r0, 0(r27)
+/* 803168EC 0031254C 7C 00 07 75 */ extsb. r0, r0
+/* 803168F0 00312550 40 82 00 08 */ bne lbl_803168F8
+lbl_803168F4:
+/* 803168F4 00312554 93 3C 00 00 */ stw r25, 0(r28)
+lbl_803168F8:
+/* 803168F8 00312558 7C 1D F0 40 */ cmplw r29, r30
+/* 803168FC 0031255C 41 82 00 0C */ beq lbl_80316908
+/* 80316900 00312560 38 60 00 01 */ li r3, 1
+/* 80316904 00312564 48 00 00 28 */ b lbl_8031692C
+lbl_80316908:
+/* 80316908 00312568 7F 5A FA 14 */ add r26, r26, r31
+lbl_8031690C:
+/* 8031690C 0031256C 88 1B 00 00 */ lbz r0, 0(r27)
+/* 80316910 00312570 7C 00 07 75 */ extsb. r0, r0
+/* 80316914 00312574 40 82 FC F8 */ bne lbl_8031660C
+/* 80316918 00312578 88 1A 00 00 */ lbz r0, 0(r26)
+/* 8031691C 0031257C 7C 03 07 74 */ extsb r3, r0
+/* 80316920 00312580 7C 03 00 D0 */ neg r0, r3
+/* 80316924 00312584 7C 00 1B 78 */ or r0, r0, r3
+/* 80316928 00312588 54 03 0F FE */ srwi r3, r0, 0x1f
+lbl_8031692C:
+/* 8031692C 0031258C 39 61 00 40 */ addi r11, r1, 0x40
+/* 80316930 00312590 4B EB 08 35 */ bl _restgpr_23
+/* 80316934 00312594 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 80316938 00312598 7C 08 03 A6 */ mtlr r0
+/* 8031693C 0031259C 38 21 00 40 */ addi r1, r1, 0x40
+/* 80316940 003125A0 4E 80 00 20 */ blr
+
+.global VFiPFPATH_cmpNameUni
+VFiPFPATH_cmpNameUni:
+/* 80316944 003125A4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80316948 003125A8 7C 08 02 A6 */ mflr r0
+/* 8031694C 003125AC 38 A0 00 01 */ li r5, 1
+/* 80316950 003125B0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80316954 003125B4 48 00 05 D9 */ bl VFiPFPATH_MatchFileNameWithPattern
+/* 80316958 003125B8 7C 60 00 34 */ cntlzw r0, r3
+/* 8031695C 003125BC 54 03 D9 7E */ srwi r3, r0, 5
+/* 80316960 003125C0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80316964 003125C4 7C 08 03 A6 */ mtlr r0
+/* 80316968 003125C8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8031696C 003125CC 4E 80 00 20 */ blr
+
+.global VFiPFPATH_cmpName
+VFiPFPATH_cmpName:
+/* 80316970 003125D0 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 80316974 003125D4 7C 08 02 A6 */ mflr r0
+/* 80316978 003125D8 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8031697C 003125DC 39 61 00 40 */ addi r11, r1, 0x40
+/* 80316980 003125E0 4B EB 07 A9 */ bl _savegpr_27
+/* 80316984 003125E4 38 00 00 00 */ li r0, 0
+/* 80316988 003125E8 7C 9C 23 78 */ mr r28, r4
+/* 8031698C 003125EC 90 01 00 08 */ stw r0, 8(r1)
+/* 80316990 003125F0 7C 7B 1B 78 */ mr r27, r3
+/* 80316994 003125F4 7C BD 2B 78 */ mr r29, r5
+/* 80316998 003125F8 7F 83 E3 78 */ mr r3, r28
+/* 8031699C 003125FC 3B E1 00 0C */ addi r31, r1, 0xc
+/* 803169A0 00312600 38 80 00 03 */ li r4, 3
+/* 803169A4 00312604 4B FE E9 6D */ bl VFiPFSTR_GetStrPos
+/* 803169A8 00312608 7C 7E 1B 78 */ mr r30, r3
+/* 803169AC 0031260C 7F E3 FB 78 */ mr r3, r31
+/* 803169B0 00312610 7F 64 DB 78 */ mr r4, r27
+/* 803169B4 00312614 4B FE E7 39 */ bl VFipf_strcpy
+/* 803169B8 00312618 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 803169BC 0031261C 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 803169C0 00312620 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 803169C4 00312624 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 803169C8 00312628 28 00 00 02 */ cmplwi r0, 2
+/* 803169CC 0031262C 40 82 00 64 */ bne lbl_80316A30
+/* 803169D0 00312630 7F 83 E3 78 */ mr r3, r28
+/* 803169D4 00312634 4B FE E9 0D */ bl VFiPFSTR_GetCodeMode
+/* 803169D8 00312638 28 03 00 02 */ cmplwi r3, 2
+/* 803169DC 0031263C 40 82 00 54 */ bne lbl_80316A30
+/* 803169E0 00312640 7F E3 FB 78 */ mr r3, r31
+/* 803169E4 00312644 38 8D 8D 00 */ addi r4, r13, lbl_8063DFC0-_SDA_BASE_
+/* 803169E8 00312648 4B FE E7 29 */ bl VFipf_strcmp
+/* 803169EC 0031264C 2C 03 00 00 */ cmpwi r3, 0
+/* 803169F0 00312650 41 82 00 40 */ beq lbl_80316A30
+/* 803169F4 00312654 7F E3 FB 78 */ mr r3, r31
+/* 803169F8 00312658 38 8D 8D 04 */ addi r4, r13, lbl_8063DFC4-_SDA_BASE_
+/* 803169FC 0031265C 4B FE E7 15 */ bl VFipf_strcmp
+/* 80316A00 00312660 2C 03 00 00 */ cmpwi r3, 0
+/* 80316A04 00312664 41 82 00 2C */ beq lbl_80316A30
+/* 80316A08 00312668 7F 83 E3 78 */ mr r3, r28
+/* 80316A0C 0031266C 38 80 00 03 */ li r4, 3
+/* 80316A10 00312670 38 A0 00 01 */ li r5, 1
+/* 80316A14 00312674 48 00 1A 21 */ bl VFiPFPATH_CheckExtShortName
+/* 80316A18 00312678 2C 03 00 00 */ cmpwi r3, 0
+/* 80316A1C 0031267C 40 82 00 14 */ bne lbl_80316A30
+/* 80316A20 00312680 2C 1D 00 00 */ cmpwi r29, 0
+/* 80316A24 00312684 40 82 00 0C */ bne lbl_80316A30
+/* 80316A28 00312688 38 60 00 01 */ li r3, 1
+/* 80316A2C 0031268C 48 00 00 88 */ b lbl_80316AB4
+lbl_80316A30:
+/* 80316A30 00312690 7F C3 F3 78 */ mr r3, r30
+/* 80316A34 00312694 38 8D 8D 08 */ addi r4, r13, lbl_8063DFC8-_SDA_BASE_
+/* 80316A38 00312698 4B FE E6 D9 */ bl VFipf_strcmp
+/* 80316A3C 0031269C 2C 03 00 00 */ cmpwi r3, 0
+/* 80316A40 003126A0 40 82 00 3C */ bne lbl_80316A7C
+/* 80316A44 003126A4 48 00 00 08 */ b lbl_80316A4C
+lbl_80316A48:
+/* 80316A48 003126A8 3B FF 00 01 */ addi r31, r31, 1
+lbl_80316A4C:
+/* 80316A4C 003126AC 88 7F 00 00 */ lbz r3, 0(r31)
+/* 80316A50 003126B0 7C 60 07 75 */ extsb. r0, r3
+/* 80316A54 003126B4 41 82 00 0C */ beq lbl_80316A60
+/* 80316A58 003126B8 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 80316A5C 003126BC 40 82 FF EC */ bne lbl_80316A48
+lbl_80316A60:
+/* 80316A60 003126C0 7C 60 07 75 */ extsb. r0, r3
+/* 80316A64 003126C4 40 82 00 40 */ bne lbl_80316AA4
+/* 80316A68 003126C8 38 60 00 2E */ li r3, 0x2e
+/* 80316A6C 003126CC 38 00 00 00 */ li r0, 0
+/* 80316A70 003126D0 98 7F 00 00 */ stb r3, 0(r31)
+/* 80316A74 003126D4 98 1F 00 01 */ stb r0, 1(r31)
+/* 80316A78 003126D8 48 00 00 2C */ b lbl_80316AA4
+lbl_80316A7C:
+/* 80316A7C 003126DC 88 1E 00 00 */ lbz r0, 0(r30)
+/* 80316A80 003126E0 7C 00 07 75 */ extsb. r0, r0
+/* 80316A84 003126E4 40 82 00 0C */ bne lbl_80316A90
+/* 80316A88 003126E8 38 60 00 01 */ li r3, 1
+/* 80316A8C 003126EC 48 00 00 28 */ b lbl_80316AB4
+lbl_80316A90:
+/* 80316A90 003126F0 88 01 00 0C */ lbz r0, 0xc(r1)
+/* 80316A94 003126F4 7C 00 07 75 */ extsb. r0, r0
+/* 80316A98 003126F8 40 82 00 0C */ bne lbl_80316AA4
+/* 80316A9C 003126FC 38 60 00 01 */ li r3, 1
+/* 80316AA0 00312700 48 00 00 14 */ b lbl_80316AB4
+lbl_80316AA4:
+/* 80316AA4 00312704 7F C4 F3 78 */ mr r4, r30
+/* 80316AA8 00312708 38 61 00 0C */ addi r3, r1, 0xc
+/* 80316AAC 0031270C 38 A1 00 08 */ addi r5, r1, 8
+/* 80316AB0 00312710 4B FF FB 2D */ bl VFiPFPATH_cmpNameImpl
+lbl_80316AB4:
+/* 80316AB4 00312714 39 61 00 40 */ addi r11, r1, 0x40
+/* 80316AB8 00312718 4B EB 06 BD */ bl _restgpr_27
+/* 80316ABC 0031271C 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 80316AC0 00312720 7C 08 03 A6 */ mtlr r0
+/* 80316AC4 00312724 38 21 00 40 */ addi r1, r1, 0x40
+/* 80316AC8 00312728 4E 80 00 20 */ blr
+
+.global VFiPFPATH_cmpTailSFN
+VFiPFPATH_cmpTailSFN:
+/* 80316ACC 0031272C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80316AD0 00312730 7C 08 02 A6 */ mflr r0
+/* 80316AD4 00312734 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80316AD8 00312738 4B FE E6 39 */ bl VFipf_strcmp
+/* 80316ADC 0031273C 7C 03 00 D0 */ neg r0, r3
+/* 80316AE0 00312740 7C 00 1B 78 */ or r0, r0, r3
+/* 80316AE4 00312744 54 03 0F FE */ srwi r3, r0, 0x1f
+/* 80316AE8 00312748 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80316AEC 0031274C 7C 08 03 A6 */ mtlr r0
+/* 80316AF0 00312750 38 21 00 10 */ addi r1, r1, 0x10
+/* 80316AF4 00312754 4E 80 00 20 */ blr
+
+.global VFiPFPATH_InitTokenOfPath
+VFiPFPATH_InitTokenOfPath:
+/* 80316AF8 00312758 90 83 00 00 */ stw r4, 0(r3)
+/* 80316AFC 0031275C 90 83 00 04 */ stw r4, 4(r3)
+/* 80316B00 00312760 90 A3 00 0C */ stw r5, 0xc(r3)
+/* 80316B04 00312764 4E 80 00 20 */ blr
+
+.global VFiPFPATH_GetNextTokenOfPath
+VFiPFPATH_GetNextTokenOfPath:
+/* 80316B08 00312768 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80316B0C 0031276C 7C 08 02 A6 */ mflr r0
+/* 80316B10 00312770 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80316B14 00312774 39 61 00 20 */ addi r11, r1, 0x20
+/* 80316B18 00312778 4B EB 06 11 */ bl _savegpr_27
+/* 80316B1C 0031277C 80 03 00 04 */ lwz r0, 4(r3)
+/* 80316B20 00312780 7C 9D 23 78 */ mr r29, r4
+/* 80316B24 00312784 7C 7C 1B 78 */ mr r28, r3
+/* 80316B28 00312788 3B 60 00 00 */ li r27, 0
+/* 80316B2C 0031278C 90 03 00 00 */ stw r0, 0(r3)
+/* 80316B30 00312790 38 8D 8C FC */ addi r4, r13, lbl_8063DFBC-_SDA_BASE_
+/* 80316B34 00312794 38 A0 00 01 */ li r5, 1
+/* 80316B38 00312798 38 C0 00 00 */ li r6, 0
+/* 80316B3C 0031279C 38 E0 00 01 */ li r7, 1
+/* 80316B40 003127A0 4B FE EB 21 */ bl VFiPFSTR_StrNCmp
+/* 80316B44 003127A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80316B48 003127A8 40 82 00 18 */ bne lbl_80316B60
+/* 80316B4C 003127AC 38 00 00 00 */ li r0, 0
+/* 80316B50 003127B0 38 60 00 00 */ li r3, 0
+/* 80316B54 003127B4 90 1C 00 04 */ stw r0, 4(r28)
+/* 80316B58 003127B8 90 1C 00 00 */ stw r0, 0(r28)
+/* 80316B5C 003127BC 48 00 03 18 */ b lbl_80316E74
+lbl_80316B60:
+/* 80316B60 003127C0 7F 83 E3 78 */ mr r3, r28
+/* 80316B64 003127C4 38 8D 8D 0C */ addi r4, r13, lbl_8063DFCC-_SDA_BASE_
+/* 80316B68 003127C8 38 A0 00 01 */ li r5, 1
+/* 80316B6C 003127CC 38 C0 00 00 */ li r6, 0
+/* 80316B70 003127D0 38 E0 00 01 */ li r7, 1
+/* 80316B74 003127D4 4B FE EA ED */ bl VFiPFSTR_StrNCmp
+/* 80316B78 003127D8 2C 03 00 00 */ cmpwi r3, 0
+/* 80316B7C 003127DC 41 82 00 24 */ beq lbl_80316BA0
+/* 80316B80 003127E0 7F 83 E3 78 */ mr r3, r28
+/* 80316B84 003127E4 38 8D 8D 10 */ addi r4, r13, lbl_8063DFD0-_SDA_BASE_
+/* 80316B88 003127E8 38 A0 00 01 */ li r5, 1
+/* 80316B8C 003127EC 38 C0 00 00 */ li r6, 0
+/* 80316B90 003127F0 38 E0 00 01 */ li r7, 1
+/* 80316B94 003127F4 4B FE EA CD */ bl VFiPFSTR_StrNCmp
+/* 80316B98 003127F8 2C 03 00 00 */ cmpwi r3, 0
+/* 80316B9C 003127FC 40 82 00 10 */ bne lbl_80316BAC
+lbl_80316BA0:
+/* 80316BA0 00312800 7F 83 E3 78 */ mr r3, r28
+/* 80316BA4 00312804 38 80 00 01 */ li r4, 1
+/* 80316BA8 00312808 4B FE E7 91 */ bl VFiPFSTR_MoveStrPos
+lbl_80316BAC:
+/* 80316BAC 0031280C 7F 83 E3 78 */ mr r3, r28
+/* 80316BB0 00312810 38 8D 8D 0C */ addi r4, r13, lbl_8063DFCC-_SDA_BASE_
+/* 80316BB4 00312814 38 A0 00 01 */ li r5, 1
+/* 80316BB8 00312818 38 C0 00 00 */ li r6, 0
+/* 80316BBC 0031281C 38 E0 00 01 */ li r7, 1
+/* 80316BC0 00312820 4B FE EA A1 */ bl VFiPFSTR_StrNCmp
+/* 80316BC4 00312824 2C 03 00 00 */ cmpwi r3, 0
+/* 80316BC8 00312828 41 82 00 24 */ beq lbl_80316BEC
+/* 80316BCC 0031282C 7F 83 E3 78 */ mr r3, r28
+/* 80316BD0 00312830 38 8D 8D 10 */ addi r4, r13, lbl_8063DFD0-_SDA_BASE_
+/* 80316BD4 00312834 38 A0 00 01 */ li r5, 1
+/* 80316BD8 00312838 38 C0 00 00 */ li r6, 0
+/* 80316BDC 0031283C 38 E0 00 01 */ li r7, 1
+/* 80316BE0 00312840 4B FE EA 81 */ bl VFiPFSTR_StrNCmp
+/* 80316BE4 00312844 2C 03 00 00 */ cmpwi r3, 0
+/* 80316BE8 00312848 40 82 00 0C */ bne lbl_80316BF4
+lbl_80316BEC:
+/* 80316BEC 0031284C 38 60 00 02 */ li r3, 2
+/* 80316BF0 00312850 48 00 02 84 */ b lbl_80316E74
+lbl_80316BF4:
+/* 80316BF4 00312854 7F 83 E3 78 */ mr r3, r28
+/* 80316BF8 00312858 4B FE E6 E9 */ bl VFiPFSTR_GetCodeMode
+/* 80316BFC 0031285C 80 1C 00 00 */ lwz r0, 0(r28)
+/* 80316C00 00312860 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80316C04 00312864 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80316C08 00312868 7C 7E 1B 78 */ mr r30, r3
+/* 80316C0C 0031286C 90 1C 00 04 */ stw r0, 4(r28)
+/* 80316C10 00312870 80 04 00 3C */ lwz r0, 0x3c(r4)
+/* 80316C14 00312874 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 80316C18 00312878 28 00 00 02 */ cmplwi r0, 2
+/* 80316C1C 0031287C 40 82 00 48 */ bne lbl_80316C64
+/* 80316C20 00312880 7F 83 E3 78 */ mr r3, r28
+/* 80316C24 00312884 7F A5 EB 78 */ mr r5, r29
+/* 80316C28 00312888 38 80 00 02 */ li r4, 2
+/* 80316C2C 0031288C 48 00 18 09 */ bl VFiPFPATH_CheckExtShortName
+/* 80316C30 00312890 2C 03 00 00 */ cmpwi r3, 0
+/* 80316C34 00312894 7C 7B 1B 78 */ mr r27, r3
+/* 80316C38 00312898 41 82 00 2C */ beq lbl_80316C64
+/* 80316C3C 0031289C 28 1E 00 01 */ cmplwi r30, 1
+/* 80316C40 003128A0 40 82 00 14 */ bne lbl_80316C54
+/* 80316C44 003128A4 80 1C 00 04 */ lwz r0, 4(r28)
+/* 80316C48 003128A8 7C 00 1A 14 */ add r0, r0, r3
+/* 80316C4C 003128AC 90 1C 00 04 */ stw r0, 4(r28)
+/* 80316C50 003128B0 48 00 00 14 */ b lbl_80316C64
+lbl_80316C54:
+/* 80316C54 003128B4 80 9C 00 04 */ lwz r4, 4(r28)
+/* 80316C58 003128B8 54 60 08 3C */ slwi r0, r3, 1
+/* 80316C5C 003128BC 7C 04 02 14 */ add r0, r4, r0
+/* 80316C60 003128C0 90 1C 00 04 */ stw r0, 4(r28)
+lbl_80316C64:
+/* 80316C64 003128C4 2C 1B 00 00 */ cmpwi r27, 0
+/* 80316C68 003128C8 40 82 02 08 */ bne lbl_80316E70
+/* 80316C6C 003128CC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80316C70 003128D0 3C 60 80 40 */ lis r3, lbl_803FE220@ha
+/* 80316C74 003128D4 3B E4 F5 C8 */ addi r31, r4, lbl_8057F5C8@l
+/* 80316C78 003128D8 3B 63 E2 20 */ addi r27, r3, lbl_803FE220@l
+/* 80316C7C 003128DC 48 00 01 D4 */ b lbl_80316E50
+lbl_80316C80:
+/* 80316C80 003128E0 28 1E 00 01 */ cmplwi r30, 1
+/* 80316C84 003128E4 40 82 00 6C */ bne lbl_80316CF0
+/* 80316C88 003128E8 80 7C 00 04 */ lwz r3, 4(r28)
+/* 80316C8C 003128EC 38 80 00 01 */ li r4, 1
+/* 80316C90 003128F0 81 9F 00 30 */ lwz r12, 0x30(r31)
+/* 80316C94 003128F4 88 03 00 00 */ lbz r0, 0(r3)
+/* 80316C98 003128F8 7C 03 07 74 */ extsb r3, r0
+/* 80316C9C 003128FC 7D 89 03 A6 */ mtctr r12
+/* 80316CA0 00312900 4E 80 04 21 */ bctrl
+/* 80316CA4 00312904 2C 03 00 00 */ cmpwi r3, 0
+/* 80316CA8 00312908 41 82 00 48 */ beq lbl_80316CF0
+/* 80316CAC 0031290C 80 7C 00 04 */ lwz r3, 4(r28)
+/* 80316CB0 00312910 38 80 00 02 */ li r4, 2
+/* 80316CB4 00312914 38 63 00 01 */ addi r3, r3, 1
+/* 80316CB8 00312918 90 7C 00 04 */ stw r3, 4(r28)
+/* 80316CBC 0031291C 88 03 00 00 */ lbz r0, 0(r3)
+/* 80316CC0 00312920 81 9F 00 30 */ lwz r12, 0x30(r31)
+/* 80316CC4 00312924 7C 03 07 74 */ extsb r3, r0
+/* 80316CC8 00312928 7D 89 03 A6 */ mtctr r12
+/* 80316CCC 0031292C 4E 80 04 21 */ bctrl
+/* 80316CD0 00312930 2C 03 00 00 */ cmpwi r3, 0
+/* 80316CD4 00312934 41 82 00 14 */ beq lbl_80316CE8
+/* 80316CD8 00312938 80 7C 00 04 */ lwz r3, 4(r28)
+/* 80316CDC 0031293C 88 03 00 00 */ lbz r0, 0(r3)
+/* 80316CE0 00312940 7C 00 07 75 */ extsb. r0, r0
+/* 80316CE4 00312944 40 82 01 48 */ bne lbl_80316E2C
+lbl_80316CE8:
+/* 80316CE8 00312948 38 60 00 02 */ li r3, 2
+/* 80316CEC 0031294C 48 00 01 88 */ b lbl_80316E74
+lbl_80316CF0:
+/* 80316CF0 00312950 7F 83 E3 78 */ mr r3, r28
+/* 80316CF4 00312954 38 8D 8D 0C */ addi r4, r13, lbl_8063DFCC-_SDA_BASE_
+/* 80316CF8 00312958 38 A0 00 02 */ li r5, 2
+/* 80316CFC 0031295C 38 C0 00 00 */ li r6, 0
+/* 80316D00 00312960 38 E0 00 01 */ li r7, 1
+/* 80316D04 00312964 4B FE E9 5D */ bl VFiPFSTR_StrNCmp
+/* 80316D08 00312968 2C 03 00 00 */ cmpwi r3, 0
+/* 80316D0C 0031296C 41 82 01 64 */ beq lbl_80316E70
+/* 80316D10 00312970 7F 83 E3 78 */ mr r3, r28
+/* 80316D14 00312974 38 8D 8D 10 */ addi r4, r13, lbl_8063DFD0-_SDA_BASE_
+/* 80316D18 00312978 38 A0 00 02 */ li r5, 2
+/* 80316D1C 0031297C 38 C0 00 00 */ li r6, 0
+/* 80316D20 00312980 38 E0 00 01 */ li r7, 1
+/* 80316D24 00312984 4B FE E9 3D */ bl VFiPFSTR_StrNCmp
+/* 80316D28 00312988 2C 03 00 00 */ cmpwi r3, 0
+/* 80316D2C 0031298C 41 82 01 44 */ beq lbl_80316E70
+/* 80316D30 00312990 80 1F 00 14 */ lwz r0, 0x14(r31)
+/* 80316D34 00312994 54 00 03 DF */ rlwinm. r0, r0, 0, 0xf, 0xf
+/* 80316D38 00312998 40 82 00 F4 */ bne lbl_80316E2C
+/* 80316D3C 0031299C 28 1E 00 01 */ cmplwi r30, 1
+/* 80316D40 003129A0 40 82 00 2C */ bne lbl_80316D6C
+/* 80316D44 003129A4 80 7C 00 04 */ lwz r3, 4(r28)
+/* 80316D48 003129A8 88 03 00 00 */ lbz r0, 0(r3)
+/* 80316D4C 003129AC 28 00 00 80 */ cmplwi r0, 0x80
+/* 80316D50 003129B0 40 80 00 1C */ bge lbl_80316D6C
+/* 80316D54 003129B4 28 00 00 20 */ cmplwi r0, 0x20
+/* 80316D58 003129B8 41 80 00 84 */ blt lbl_80316DDC
+/* 80316D5C 003129BC 7C 7B 02 14 */ add r3, r27, r0
+/* 80316D60 003129C0 88 03 FF E0 */ lbz r0, -0x20(r3)
+/* 80316D64 003129C4 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80316D68 003129C8 41 82 00 74 */ beq lbl_80316DDC
+lbl_80316D6C:
+/* 80316D6C 003129CC 28 1E 00 02 */ cmplwi r30, 2
+/* 80316D70 003129D0 40 82 00 BC */ bne lbl_80316E2C
+/* 80316D74 003129D4 80 9C 00 04 */ lwz r4, 4(r28)
+/* 80316D78 003129D8 38 A0 00 01 */ li r5, 1
+/* 80316D7C 003129DC 88 64 00 00 */ lbz r3, 0(r4)
+/* 80316D80 003129E0 88 04 00 01 */ lbz r0, 1(r4)
+/* 80316D84 003129E4 54 63 40 2E */ slwi r3, r3, 8
+/* 80316D88 003129E8 7C 63 02 14 */ add r3, r3, r0
+/* 80316D8C 003129EC 54 60 04 3E */ clrlwi r0, r3, 0x10
+/* 80316D90 003129F0 28 00 00 80 */ cmplwi r0, 0x80
+/* 80316D94 003129F4 40 80 00 40 */ bge lbl_80316DD4
+/* 80316D98 003129F8 54 63 06 3E */ clrlwi r3, r3, 0x18
+/* 80316D9C 003129FC 38 80 00 00 */ li r4, 0
+/* 80316DA0 00312A00 28 03 00 20 */ cmplwi r3, 0x20
+/* 80316DA4 00312A04 41 80 00 24 */ blt lbl_80316DC8
+/* 80316DA8 00312A08 54 60 04 2F */ rlwinm. r0, r3, 0, 0x10, 0x17
+/* 80316DAC 00312A0C 40 82 00 1C */ bne lbl_80316DC8
+/* 80316DB0 00312A10 38 03 FF E0 */ addi r0, r3, -32
+/* 80316DB4 00312A14 54 00 06 3E */ clrlwi r0, r0, 0x18
+/* 80316DB8 00312A18 7C 1B 00 AE */ lbzx r0, r27, r0
+/* 80316DBC 00312A1C 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80316DC0 00312A20 41 82 00 08 */ beq lbl_80316DC8
+/* 80316DC4 00312A24 38 80 00 01 */ li r4, 1
+lbl_80316DC8:
+/* 80316DC8 00312A28 2C 04 00 00 */ cmpwi r4, 0
+/* 80316DCC 00312A2C 40 82 00 08 */ bne lbl_80316DD4
+/* 80316DD0 00312A30 38 A0 00 00 */ li r5, 0
+lbl_80316DD4:
+/* 80316DD4 00312A34 2C 05 00 00 */ cmpwi r5, 0
+/* 80316DD8 00312A38 40 82 00 54 */ bne lbl_80316E2C
+lbl_80316DDC:
+/* 80316DDC 00312A3C 2C 1D 00 00 */ cmpwi r29, 0
+/* 80316DE0 00312A40 41 82 00 44 */ beq lbl_80316E24
+/* 80316DE4 00312A44 7F 83 E3 78 */ mr r3, r28
+/* 80316DE8 00312A48 38 8D 8D 14 */ addi r4, r13, lbl_8063DFD4-_SDA_BASE_
+/* 80316DEC 00312A4C 38 A0 00 02 */ li r5, 2
+/* 80316DF0 00312A50 38 C0 00 00 */ li r6, 0
+/* 80316DF4 00312A54 38 E0 00 01 */ li r7, 1
+/* 80316DF8 00312A58 4B FE E8 69 */ bl VFiPFSTR_StrNCmp
+/* 80316DFC 00312A5C 2C 03 00 00 */ cmpwi r3, 0
+/* 80316E00 00312A60 41 82 00 2C */ beq lbl_80316E2C
+/* 80316E04 00312A64 7F 83 E3 78 */ mr r3, r28
+/* 80316E08 00312A68 38 8D 8D 18 */ addi r4, r13, lbl_8063DFD8-_SDA_BASE_
+/* 80316E0C 00312A6C 38 A0 00 02 */ li r5, 2
+/* 80316E10 00312A70 38 C0 00 00 */ li r6, 0
+/* 80316E14 00312A74 38 E0 00 01 */ li r7, 1
+/* 80316E18 00312A78 4B FE E8 49 */ bl VFiPFSTR_StrNCmp
+/* 80316E1C 00312A7C 2C 03 00 00 */ cmpwi r3, 0
+/* 80316E20 00312A80 41 82 00 0C */ beq lbl_80316E2C
+lbl_80316E24:
+/* 80316E24 00312A84 38 60 00 02 */ li r3, 2
+/* 80316E28 00312A88 48 00 00 4C */ b lbl_80316E74
+lbl_80316E2C:
+/* 80316E2C 00312A8C 28 1E 00 01 */ cmplwi r30, 1
+/* 80316E30 00312A90 40 82 00 14 */ bne lbl_80316E44
+/* 80316E34 00312A94 80 7C 00 04 */ lwz r3, 4(r28)
+/* 80316E38 00312A98 38 03 00 01 */ addi r0, r3, 1
+/* 80316E3C 00312A9C 90 1C 00 04 */ stw r0, 4(r28)
+/* 80316E40 00312AA0 48 00 00 10 */ b lbl_80316E50
+lbl_80316E44:
+/* 80316E44 00312AA4 80 7C 00 04 */ lwz r3, 4(r28)
+/* 80316E48 00312AA8 38 03 00 02 */ addi r0, r3, 2
+/* 80316E4C 00312AAC 90 1C 00 04 */ stw r0, 4(r28)
+lbl_80316E50:
+/* 80316E50 00312AB0 7F 83 E3 78 */ mr r3, r28
+/* 80316E54 00312AB4 38 8D 8C FC */ addi r4, r13, lbl_8063DFBC-_SDA_BASE_
+/* 80316E58 00312AB8 38 A0 00 02 */ li r5, 2
+/* 80316E5C 00312ABC 38 C0 00 00 */ li r6, 0
+/* 80316E60 00312AC0 38 E0 00 01 */ li r7, 1
+/* 80316E64 00312AC4 4B FE E7 FD */ bl VFiPFSTR_StrNCmp
+/* 80316E68 00312AC8 2C 03 00 00 */ cmpwi r3, 0
+/* 80316E6C 00312ACC 40 82 FE 14 */ bne lbl_80316C80
+lbl_80316E70:
+/* 80316E70 00312AD0 38 60 00 00 */ li r3, 0
+lbl_80316E74:
+/* 80316E74 00312AD4 39 61 00 20 */ addi r11, r1, 0x20
+/* 80316E78 00312AD8 4B EB 02 FD */ bl _restgpr_27
+/* 80316E7C 00312ADC 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80316E80 00312AE0 7C 08 03 A6 */ mtlr r0
+/* 80316E84 00312AE4 38 21 00 20 */ addi r1, r1, 0x20
+/* 80316E88 00312AE8 4E 80 00 20 */ blr
+
+.global VFiPFPATH_SplitPath
+VFiPFPATH_SplitPath:
+/* 80316E8C 00312AEC 38 C0 00 00 */ li r6, 0
+/* 80316E90 00312AF0 4B FF ED A0 */ b VFiPFPATH_DoSplitPath
+
+.global VFiPFPATH_GetVolumeFromPath
+VFiPFPATH_GetVolumeFromPath:
+/* 80316E94 00312AF4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80316E98 00312AF8 7C 08 02 A6 */ mflr r0
+/* 80316E9C 00312AFC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80316EA0 00312B00 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80316EA4 00312B04 7C 7F 1B 78 */ mr r31, r3
+/* 80316EA8 00312B08 4B FE E6 21 */ bl VFiPFSTR_StrLen
+/* 80316EAC 00312B0C 54 60 04 3F */ clrlwi. r0, r3, 0x10
+/* 80316EB0 00312B10 40 82 00 0C */ bne lbl_80316EBC
+/* 80316EB4 00312B14 38 60 00 00 */ li r3, 0
+/* 80316EB8 00312B18 48 00 00 60 */ b lbl_80316F18
+lbl_80316EBC:
+/* 80316EBC 00312B1C 7F E3 FB 78 */ mr r3, r31
+/* 80316EC0 00312B20 38 80 00 01 */ li r4, 1
+/* 80316EC4 00312B24 4B FE E6 19 */ bl VFiPFSTR_StrNumChar
+/* 80316EC8 00312B28 54 60 04 3E */ clrlwi r0, r3, 0x10
+/* 80316ECC 00312B2C 28 00 00 02 */ cmplwi r0, 2
+/* 80316ED0 00312B30 41 80 00 44 */ blt lbl_80316F14
+/* 80316ED4 00312B34 7F E3 FB 78 */ mr r3, r31
+/* 80316ED8 00312B38 38 8D 8C F8 */ addi r4, r13, lbl_8063DFB8-_SDA_BASE_
+/* 80316EDC 00312B3C 38 A0 00 01 */ li r5, 1
+/* 80316EE0 00312B40 38 C0 00 01 */ li r6, 1
+/* 80316EE4 00312B44 38 E0 00 01 */ li r7, 1
+/* 80316EE8 00312B48 4B FE E7 79 */ bl VFiPFSTR_StrNCmp
+/* 80316EEC 00312B4C 2C 03 00 00 */ cmpwi r3, 0
+/* 80316EF0 00312B50 40 82 00 24 */ bne lbl_80316F14
+/* 80316EF4 00312B54 7F E3 FB 78 */ mr r3, r31
+/* 80316EF8 00312B58 38 A1 00 08 */ addi r5, r1, 8
+/* 80316EFC 00312B5C 38 80 00 01 */ li r4, 1
+/* 80316F00 00312B60 4B FE E8 79 */ bl VFiPFSTR_ToUpperNStr
+/* 80316F04 00312B64 88 01 00 08 */ lbz r0, 8(r1)
+/* 80316F08 00312B68 7C 03 07 74 */ extsb r3, r0
+/* 80316F0C 00312B6C 48 00 2C 4D */ bl VFiPFVOL_GetVolumeFromDrvChar
+/* 80316F10 00312B70 48 00 00 08 */ b lbl_80316F18
+lbl_80316F14:
+/* 80316F14 00312B74 48 00 2A F1 */ bl VFiPFVOL_GetCurrentVolume
+lbl_80316F18:
+/* 80316F18 00312B78 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80316F1C 00312B7C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80316F20 00312B80 7C 08 03 A6 */ mtlr r0
+/* 80316F24 00312B84 38 21 00 20 */ addi r1, r1, 0x20
+/* 80316F28 00312B88 4E 80 00 20 */ blr
+
+.global VFiPFPATH_MatchFileNameWithPattern
+VFiPFPATH_MatchFileNameWithPattern:
+/* 80316F2C 00312B8C 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 80316F30 00312B90 7C 08 02 A6 */ mflr r0
+/* 80316F34 00312B94 90 01 00 44 */ stw r0, 0x44(r1)
+/* 80316F38 00312B98 38 00 00 00 */ li r0, 0
+/* 80316F3C 00312B9C 93 E1 00 3C */ stw r31, 0x3c(r1)
+/* 80316F40 00312BA0 3B E0 00 01 */ li r31, 1
+/* 80316F44 00312BA4 93 C1 00 38 */ stw r30, 0x38(r1)
+/* 80316F48 00312BA8 7C BE 2B 78 */ mr r30, r5
+/* 80316F4C 00312BAC 93 A1 00 34 */ stw r29, 0x34(r1)
+/* 80316F50 00312BB0 7C 9D 23 78 */ mr r29, r4
+/* 80316F54 00312BB4 93 81 00 30 */ stw r28, 0x30(r1)
+/* 80316F58 00312BB8 7C 7C 1B 78 */ mr r28, r3
+/* 80316F5C 00312BBC 88 E2 A4 A0 */ lbz r7, lbl_80642AA0-_SDA2_BASE_(r2)
+/* 80316F60 00312BC0 88 C2 A4 A1 */ lbz r6, lbl_80642AA1-_SDA2_BASE_(r2)
+/* 80316F64 00312BC4 90 61 00 20 */ stw r3, 0x20(r1)
+/* 80316F68 00312BC8 7F A3 EB 78 */ mr r3, r29
+/* 80316F6C 00312BCC 98 E1 00 0C */ stb r7, 0xc(r1)
+/* 80316F70 00312BD0 98 C1 00 0D */ stb r6, 0xd(r1)
+/* 80316F74 00312BD4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80316F78 00312BD8 90 A1 00 28 */ stw r5, 0x28(r1)
+/* 80316F7C 00312BDC B0 01 00 2C */ sth r0, 0x2c(r1)
+/* 80316F80 00312BE0 80 A4 00 00 */ lwz r5, 0(r4)
+/* 80316F84 00312BE4 80 04 00 04 */ lwz r0, 4(r4)
+/* 80316F88 00312BE8 90 A1 00 10 */ stw r5, 0x10(r1)
+/* 80316F8C 00312BEC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80316F90 00312BF0 80 A4 00 08 */ lwz r5, 8(r4)
+/* 80316F94 00312BF4 80 04 00 0C */ lwz r0, 0xc(r4)
+/* 80316F98 00312BF8 90 A1 00 18 */ stw r5, 0x18(r1)
+/* 80316F9C 00312BFC 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 80316FA0 00312C00 4B FE E3 41 */ bl VFiPFSTR_GetCodeMode
+/* 80316FA4 00312C04 28 03 00 01 */ cmplwi r3, 1
+/* 80316FA8 00312C08 40 82 00 A4 */ bne lbl_8031704C
+/* 80316FAC 00312C0C 2C 1E 00 00 */ cmpwi r30, 0
+/* 80316FB0 00312C10 40 82 01 18 */ bne lbl_803170C8
+/* 80316FB4 00312C14 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80316FB8 00312C18 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80316FBC 00312C1C 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 80316FC0 00312C20 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 80316FC4 00312C24 28 00 00 02 */ cmplwi r0, 2
+/* 80316FC8 00312C28 40 82 01 00 */ bne lbl_803170C8
+/* 80316FCC 00312C2C 88 8D 8D 1C */ lbz r4, lbl_8063DFDC-_SDA_BASE_(r13)
+/* 80316FD0 00312C30 34 61 00 10 */ addic. r3, r1, 0x10
+/* 80316FD4 00312C34 88 0D 8D 1D */ lbz r0, lbl_8063DFDD-_SDA_BASE_(r13)
+/* 80316FD8 00312C38 3B A0 00 00 */ li r29, 0
+/* 80316FDC 00312C3C 98 81 00 08 */ stb r4, 8(r1)
+/* 80316FE0 00312C40 98 01 00 09 */ stb r0, 9(r1)
+/* 80316FE4 00312C44 40 82 00 0C */ bne lbl_80316FF0
+/* 80316FE8 00312C48 3B A0 00 0A */ li r29, 0xa
+/* 80316FEC 00312C4C 48 00 00 24 */ b lbl_80317010
+lbl_80316FF0:
+/* 80316FF0 00312C50 38 81 00 08 */ addi r4, r1, 8
+/* 80316FF4 00312C54 38 A0 00 01 */ li r5, 1
+/* 80316FF8 00312C58 38 C0 00 00 */ li r6, 0
+/* 80316FFC 00312C5C 38 E0 00 02 */ li r7, 2
+/* 80317000 00312C60 4B FE E6 61 */ bl VFiPFSTR_StrNCmp
+/* 80317004 00312C64 2C 03 00 00 */ cmpwi r3, 0
+/* 80317008 00312C68 40 82 00 08 */ bne lbl_80317010
+/* 8031700C 00312C6C 3B A0 00 01 */ li r29, 1
+lbl_80317010:
+/* 80317010 00312C70 28 1D 00 01 */ cmplwi r29, 1
+/* 80317014 00312C74 40 82 00 B4 */ bne lbl_803170C8
+/* 80317018 00312C78 7F 83 E3 78 */ mr r3, r28
+/* 8031701C 00312C7C 38 81 00 0C */ addi r4, r1, 0xc
+/* 80317020 00312C80 38 A0 00 02 */ li r5, 2
+/* 80317024 00312C84 4B FE E1 25 */ bl VFipf_strncmp
+/* 80317028 00312C88 2C 03 00 00 */ cmpwi r3, 0
+/* 8031702C 00312C8C 40 82 00 9C */ bne lbl_803170C8
+/* 80317030 00312C90 A0 81 00 2C */ lhz r4, 0x2c(r1)
+/* 80317034 00312C94 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 80317038 00312C98 38 84 00 02 */ addi r4, r4, 2
+/* 8031703C 00312C9C 38 03 00 02 */ addi r0, r3, 2
+/* 80317040 00312CA0 B0 81 00 2C */ sth r4, 0x2c(r1)
+/* 80317044 00312CA4 90 01 00 10 */ stw r0, 0x10(r1)
+/* 80317048 00312CA8 48 00 00 80 */ b lbl_803170C8
+lbl_8031704C:
+/* 8031704C 00312CAC 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80317050 00312CB0 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80317054 00312CB4 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 80317058 00312CB8 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8031705C 00312CBC 28 00 00 02 */ cmplwi r0, 2
+/* 80317060 00312CC0 40 82 00 68 */ bne lbl_803170C8
+/* 80317064 00312CC4 2C 1E 00 00 */ cmpwi r30, 0
+/* 80317068 00312CC8 40 82 00 60 */ bne lbl_803170C8
+/* 8031706C 00312CCC 7F A3 EB 78 */ mr r3, r29
+/* 80317070 00312CD0 38 8D 8D 00 */ addi r4, r13, lbl_8063DFC0-_SDA_BASE_
+/* 80317074 00312CD4 38 A0 00 01 */ li r5, 1
+/* 80317078 00312CD8 38 C0 00 00 */ li r6, 0
+/* 8031707C 00312CDC 38 E0 00 01 */ li r7, 1
+/* 80317080 00312CE0 4B FE E5 E1 */ bl VFiPFSTR_StrNCmp
+/* 80317084 00312CE4 2C 03 00 00 */ cmpwi r3, 0
+/* 80317088 00312CE8 41 82 00 40 */ beq lbl_803170C8
+/* 8031708C 00312CEC 7F A3 EB 78 */ mr r3, r29
+/* 80317090 00312CF0 38 8D 8D 04 */ addi r4, r13, lbl_8063DFC4-_SDA_BASE_
+/* 80317094 00312CF4 38 A0 00 01 */ li r5, 1
+/* 80317098 00312CF8 38 C0 00 00 */ li r6, 0
+/* 8031709C 00312CFC 38 E0 00 02 */ li r7, 2
+/* 803170A0 00312D00 4B FE E5 C1 */ bl VFiPFSTR_StrNCmp
+/* 803170A4 00312D04 2C 03 00 00 */ cmpwi r3, 0
+/* 803170A8 00312D08 41 82 00 20 */ beq lbl_803170C8
+/* 803170AC 00312D0C 7F A3 EB 78 */ mr r3, r29
+/* 803170B0 00312D10 38 80 00 01 */ li r4, 1
+/* 803170B4 00312D14 38 A0 00 00 */ li r5, 0
+/* 803170B8 00312D18 48 00 13 7D */ bl VFiPFPATH_CheckExtShortName
+/* 803170BC 00312D1C 2C 03 00 00 */ cmpwi r3, 0
+/* 803170C0 00312D20 40 82 00 08 */ bne lbl_803170C8
+/* 803170C4 00312D24 3B E0 00 00 */ li r31, 0
+lbl_803170C8:
+/* 803170C8 00312D28 28 1F 00 01 */ cmplwi r31, 1
+/* 803170CC 00312D2C 40 82 01 58 */ bne lbl_80317224
+/* 803170D0 00312D30 80 01 00 28 */ lwz r0, 0x28(r1)
+/* 803170D4 00312D34 2C 00 00 00 */ cmpwi r0, 0
+/* 803170D8 00312D38 41 82 00 84 */ beq lbl_8031715C
+/* 803170DC 00312D3C A0 A1 00 2C */ lhz r5, 0x2c(r1)
+/* 803170E0 00312D40 28 05 02 0A */ cmplwi r5, 0x20a
+/* 803170E4 00312D44 40 81 00 0C */ ble lbl_803170F0
+/* 803170E8 00312D48 3B E0 00 00 */ li r31, 0
+/* 803170EC 00312D4C 48 00 01 0C */ b lbl_803171F8
+lbl_803170F0:
+/* 803170F0 00312D50 80 81 00 20 */ lwz r4, 0x20(r1)
+/* 803170F4 00312D54 38 65 00 02 */ addi r3, r5, 2
+/* 803170F8 00312D58 38 00 00 00 */ li r0, 0
+/* 803170FC 00312D5C 7C 84 2A 2E */ lhzx r4, r4, r5
+/* 80317100 00312D60 28 04 00 61 */ cmplwi r4, 0x61
+/* 80317104 00312D64 B0 61 00 2C */ sth r3, 0x2c(r1)
+/* 80317108 00312D68 41 80 00 10 */ blt lbl_80317118
+/* 8031710C 00312D6C 28 04 00 7A */ cmplwi r4, 0x7a
+/* 80317110 00312D70 41 81 00 08 */ bgt lbl_80317118
+/* 80317114 00312D74 38 00 00 01 */ li r0, 1
+lbl_80317118:
+/* 80317118 00312D78 2C 00 00 00 */ cmpwi r0, 0
+/* 8031711C 00312D7C 41 82 00 08 */ beq lbl_80317124
+/* 80317120 00312D80 38 84 FF E0 */ addi r4, r4, -32
+lbl_80317124:
+/* 80317124 00312D84 54 9F 04 3E */ clrlwi r31, r4, 0x10
+/* 80317128 00312D88 28 1F FF 41 */ cmplwi r31, 0xff41
+/* 8031712C 00312D8C 41 80 00 1C */ blt lbl_80317148
+/* 80317130 00312D90 28 1F FF 5A */ cmplwi r31, 0xff5a
+/* 80317134 00312D94 41 81 00 14 */ bgt lbl_80317148
+/* 80317138 00312D98 38 1F FF E0 */ addi r0, r31, -32
+/* 8031713C 00312D9C 38 60 00 01 */ li r3, 1
+/* 80317140 00312DA0 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 80317144 00312DA4 48 00 00 08 */ b lbl_8031714C
+lbl_80317148:
+/* 80317148 00312DA8 38 60 00 00 */ li r3, 0
+lbl_8031714C:
+/* 8031714C 00312DAC 28 03 00 01 */ cmplwi r3, 1
+/* 80317150 00312DB0 40 82 00 A8 */ bne lbl_803171F8
+/* 80317154 00312DB4 7F BF EB 78 */ mr r31, r29
+/* 80317158 00312DB8 48 00 00 A0 */ b lbl_803171F8
+lbl_8031715C:
+/* 8031715C 00312DBC A0 C1 00 2C */ lhz r6, 0x2c(r1)
+/* 80317160 00312DC0 28 06 00 0C */ cmplwi r6, 0xc
+/* 80317164 00312DC4 41 80 00 0C */ blt lbl_80317170
+/* 80317168 00312DC8 3B E0 00 00 */ li r31, 0
+/* 8031716C 00312DCC 48 00 00 8C */ b lbl_803171F8
+lbl_80317170:
+/* 80317170 00312DD0 38 06 00 01 */ addi r0, r6, 1
+/* 80317174 00312DD4 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80317178 00312DD8 B0 01 00 2C */ sth r0, 0x2c(r1)
+/* 8031717C 00312DDC 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80317180 00312DE0 80 A1 00 20 */ lwz r5, 0x20(r1)
+/* 80317184 00312DE4 38 80 00 01 */ li r4, 1
+/* 80317188 00312DE8 81 83 00 30 */ lwz r12, 0x30(r3)
+/* 8031718C 00312DEC 7F A5 30 AE */ lbzx r29, r5, r6
+/* 80317190 00312DF0 7F BD 07 74 */ extsb r29, r29
+/* 80317194 00312DF4 7F A3 EB 78 */ mr r3, r29
+/* 80317198 00312DF8 7D 89 03 A6 */ mtctr r12
+/* 8031719C 00312DFC 4E 80 04 21 */ bctrl
+/* 803171A0 00312E00 2C 03 00 00 */ cmpwi r3, 0
+/* 803171A4 00312E04 41 82 00 24 */ beq lbl_803171C8
+/* 803171A8 00312E08 A0 81 00 2C */ lhz r4, 0x2c(r1)
+/* 803171AC 00312E0C 57 A0 44 2E */ rlwinm r0, r29, 8, 0x10, 0x17
+/* 803171B0 00312E10 80 A1 00 20 */ lwz r5, 0x20(r1)
+/* 803171B4 00312E14 38 64 00 01 */ addi r3, r4, 1
+/* 803171B8 00312E18 B0 61 00 2C */ sth r3, 0x2c(r1)
+/* 803171BC 00312E1C 7C 65 20 AE */ lbzx r3, r5, r4
+/* 803171C0 00312E20 7C 00 1A 14 */ add r0, r0, r3
+/* 803171C4 00312E24 54 1D 04 3E */ clrlwi r29, r0, 0x10
+lbl_803171C8:
+/* 803171C8 00312E28 57 A0 04 3E */ clrlwi r0, r29, 0x10
+/* 803171CC 00312E2C 38 60 00 00 */ li r3, 0
+/* 803171D0 00312E30 28 00 00 61 */ cmplwi r0, 0x61
+/* 803171D4 00312E34 41 80 00 10 */ blt lbl_803171E4
+/* 803171D8 00312E38 28 00 00 7A */ cmplwi r0, 0x7a
+/* 803171DC 00312E3C 41 81 00 08 */ bgt lbl_803171E4
+/* 803171E0 00312E40 38 60 00 01 */ li r3, 1
+lbl_803171E4:
+/* 803171E4 00312E44 2C 03 00 00 */ cmpwi r3, 0
+/* 803171E8 00312E48 57 A3 04 3E */ clrlwi r3, r29, 0x10
+/* 803171EC 00312E4C 41 82 00 08 */ beq lbl_803171F4
+/* 803171F0 00312E50 38 63 FF E0 */ addi r3, r3, -32
+lbl_803171F4:
+/* 803171F4 00312E54 54 7F 04 3E */ clrlwi r31, r3, 0x10
+lbl_803171F8:
+/* 803171F8 00312E58 7F C4 F3 78 */ mr r4, r30
+/* 803171FC 00312E5C 38 61 00 10 */ addi r3, r1, 0x10
+/* 80317200 00312E60 4B FF EC 29 */ bl VFiPFPATH_GetNextCharOfPattern
+/* 80317204 00312E64 7C 60 1B 78 */ mr r0, r3
+/* 80317208 00312E68 7F C7 F3 78 */ mr r7, r30
+/* 8031720C 00312E6C 57 E3 04 3E */ clrlwi r3, r31, 0x10
+/* 80317210 00312E70 38 81 00 20 */ addi r4, r1, 0x20
+/* 80317214 00312E74 54 05 04 3E */ clrlwi r5, r0, 0x10
+/* 80317218 00312E78 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8031721C 00312E7C 4B FF EE CD */ bl VFiPFPATH_DoMatchFileNameWithPattern
+/* 80317220 00312E80 7C 7F 1B 78 */ mr r31, r3
+lbl_80317224:
+/* 80317224 00312E84 7F E3 FB 78 */ mr r3, r31
+/* 80317228 00312E88 83 E1 00 3C */ lwz r31, 0x3c(r1)
+/* 8031722C 00312E8C 83 C1 00 38 */ lwz r30, 0x38(r1)
+/* 80317230 00312E90 83 A1 00 34 */ lwz r29, 0x34(r1)
+/* 80317234 00312E94 83 81 00 30 */ lwz r28, 0x30(r1)
+/* 80317238 00312E98 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8031723C 00312E9C 7C 08 03 A6 */ mtlr r0
+/* 80317240 00312EA0 38 21 00 40 */ addi r1, r1, 0x40
+/* 80317244 00312EA4 4E 80 00 20 */ blr
+
+.global VFiPFPATH_putShortName
+VFiPFPATH_putShortName:
+/* 80317248 00312EA8 39 20 00 00 */ li r9, 0
+/* 8031724C 00312EAC 48 00 00 18 */ b lbl_80317264
+lbl_80317250:
+/* 80317250 00312EB0 88 04 00 00 */ lbz r0, 0(r4)
+/* 80317254 00312EB4 39 29 00 01 */ addi r9, r9, 1
+/* 80317258 00312EB8 38 84 00 01 */ addi r4, r4, 1
+/* 8031725C 00312EBC 98 03 00 00 */ stb r0, 0(r3)
+/* 80317260 00312EC0 38 63 00 01 */ addi r3, r3, 1
+lbl_80317264:
+/* 80317264 00312EC4 2C 09 00 08 */ cmpwi r9, 8
+/* 80317268 00312EC8 40 80 00 18 */ bge lbl_80317280
+/* 8031726C 00312ECC 88 04 00 00 */ lbz r0, 0(r4)
+/* 80317270 00312ED0 7C 00 07 75 */ extsb. r0, r0
+/* 80317274 00312ED4 41 82 00 0C */ beq lbl_80317280
+/* 80317278 00312ED8 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 8031727C 00312EDC 40 82 FF D4 */ bne lbl_80317250
+lbl_80317280:
+/* 80317280 00312EE0 2C 09 00 00 */ cmpwi r9, 0
+/* 80317284 00312EE4 40 82 00 34 */ bne lbl_803172B8
+/* 80317288 00312EE8 39 20 00 00 */ li r9, 0
+/* 8031728C 00312EEC 48 00 00 18 */ b lbl_803172A4
+lbl_80317290:
+/* 80317290 00312EF0 88 04 00 00 */ lbz r0, 0(r4)
+/* 80317294 00312EF4 39 29 00 01 */ addi r9, r9, 1
+/* 80317298 00312EF8 38 84 00 01 */ addi r4, r4, 1
+/* 8031729C 00312EFC 98 03 00 00 */ stb r0, 0(r3)
+/* 803172A0 00312F00 38 63 00 01 */ addi r3, r3, 1
+lbl_803172A4:
+/* 803172A4 00312F04 2C 09 00 02 */ cmpwi r9, 2
+/* 803172A8 00312F08 40 80 00 10 */ bge lbl_803172B8
+/* 803172AC 00312F0C 88 04 00 00 */ lbz r0, 0(r4)
+/* 803172B0 00312F10 7C 00 07 75 */ extsb. r0, r0
+/* 803172B4 00312F14 40 82 FF DC */ bne lbl_80317290
+lbl_803172B8:
+/* 803172B8 00312F18 2C 89 00 08 */ cmpwi cr1, r9, 8
+/* 803172BC 00312F1C 40 85 00 0C */ ble cr1, lbl_803172C8
+/* 803172C0 00312F20 38 60 00 0A */ li r3, 0xa
+/* 803172C4 00312F24 4E 80 00 20 */ blr
+lbl_803172C8:
+/* 803172C8 00312F28 54 A8 07 39 */ rlwinm. r8, r5, 0, 0x1c, 0x1c
+/* 803172CC 00312F2C 40 82 00 64 */ bne lbl_80317330
+/* 803172D0 00312F30 20 C9 00 08 */ subfic r6, r9, 8
+/* 803172D4 00312F34 38 E0 00 20 */ li r7, 0x20
+/* 803172D8 00312F38 40 84 00 58 */ bge cr1, lbl_80317330
+/* 803172DC 00312F3C 54 C5 E8 FF */ rlwinm. r5, r6, 0x1d, 3, 0x1f
+/* 803172E0 00312F40 7C C0 33 78 */ mr r0, r6
+/* 803172E4 00312F44 7C A9 03 A6 */ mtctr r5
+/* 803172E8 00312F48 41 82 00 34 */ beq lbl_8031731C
+lbl_803172EC:
+/* 803172EC 00312F4C 98 E3 00 00 */ stb r7, 0(r3)
+/* 803172F0 00312F50 98 E3 00 01 */ stb r7, 1(r3)
+/* 803172F4 00312F54 98 E3 00 02 */ stb r7, 2(r3)
+/* 803172F8 00312F58 98 E3 00 03 */ stb r7, 3(r3)
+/* 803172FC 00312F5C 98 E3 00 04 */ stb r7, 4(r3)
+/* 80317300 00312F60 98 E3 00 05 */ stb r7, 5(r3)
+/* 80317304 00312F64 98 E3 00 06 */ stb r7, 6(r3)
+/* 80317308 00312F68 98 E3 00 07 */ stb r7, 7(r3)
+/* 8031730C 00312F6C 38 63 00 08 */ addi r3, r3, 8
+/* 80317310 00312F70 42 00 FF DC */ bdnz lbl_803172EC
+/* 80317314 00312F74 70 C6 00 07 */ andi. r6, r6, 7
+/* 80317318 00312F78 41 82 00 14 */ beq lbl_8031732C
+lbl_8031731C:
+/* 8031731C 00312F7C 7C C9 03 A6 */ mtctr r6
+lbl_80317320:
+/* 80317320 00312F80 98 E3 00 00 */ stb r7, 0(r3)
+/* 80317324 00312F84 38 63 00 01 */ addi r3, r3, 1
+/* 80317328 00312F88 42 00 FF F8 */ bdnz lbl_80317320
+lbl_8031732C:
+/* 8031732C 00312F8C 7D 29 02 14 */ add r9, r9, r0
+lbl_80317330:
+/* 80317330 00312F90 88 04 00 00 */ lbz r0, 0(r4)
+/* 80317334 00312F94 7C 00 07 75 */ extsb. r0, r0
+/* 80317338 00312F98 41 82 00 34 */ beq lbl_8031736C
+/* 8031733C 00312F9C 2C 08 00 00 */ cmpwi r8, 0
+/* 80317340 00312FA0 40 82 00 20 */ bne lbl_80317360
+/* 80317344 00312FA4 38 84 00 01 */ addi r4, r4, 1
+/* 80317348 00312FA8 48 00 00 18 */ b lbl_80317360
+lbl_8031734C:
+/* 8031734C 00312FAC 88 04 00 00 */ lbz r0, 0(r4)
+/* 80317350 00312FB0 39 29 00 01 */ addi r9, r9, 1
+/* 80317354 00312FB4 38 84 00 01 */ addi r4, r4, 1
+/* 80317358 00312FB8 98 03 00 00 */ stb r0, 0(r3)
+/* 8031735C 00312FBC 38 63 00 01 */ addi r3, r3, 1
+lbl_80317360:
+/* 80317360 00312FC0 88 04 00 00 */ lbz r0, 0(r4)
+/* 80317364 00312FC4 7C 00 07 75 */ extsb. r0, r0
+/* 80317368 00312FC8 40 82 FF E4 */ bne lbl_8031734C
+lbl_8031736C:
+/* 8031736C 00312FCC 2C 09 00 0B */ cmpwi r9, 0xb
+/* 80317370 00312FD0 20 89 00 0B */ subfic r4, r9, 0xb
+/* 80317374 00312FD4 38 A0 00 20 */ li r5, 0x20
+/* 80317378 00312FD8 40 80 00 50 */ bge lbl_803173C8
+/* 8031737C 00312FDC 54 80 E8 FF */ rlwinm. r0, r4, 0x1d, 3, 0x1f
+/* 80317380 00312FE0 7C 09 03 A6 */ mtctr r0
+/* 80317384 00312FE4 41 82 00 34 */ beq lbl_803173B8
+lbl_80317388:
+/* 80317388 00312FE8 98 A3 00 00 */ stb r5, 0(r3)
+/* 8031738C 00312FEC 98 A3 00 01 */ stb r5, 1(r3)
+/* 80317390 00312FF0 98 A3 00 02 */ stb r5, 2(r3)
+/* 80317394 00312FF4 98 A3 00 03 */ stb r5, 3(r3)
+/* 80317398 00312FF8 98 A3 00 04 */ stb r5, 4(r3)
+/* 8031739C 00312FFC 98 A3 00 05 */ stb r5, 5(r3)
+/* 803173A0 00313000 98 A3 00 06 */ stb r5, 6(r3)
+/* 803173A4 00313004 98 A3 00 07 */ stb r5, 7(r3)
+/* 803173A8 00313008 38 63 00 08 */ addi r3, r3, 8
+/* 803173AC 0031300C 42 00 FF DC */ bdnz lbl_80317388
+/* 803173B0 00313010 70 84 00 07 */ andi. r4, r4, 7
+/* 803173B4 00313014 41 82 00 14 */ beq lbl_803173C8
+lbl_803173B8:
+/* 803173B8 00313018 7C 89 03 A6 */ mtctr r4
+lbl_803173BC:
+/* 803173BC 0031301C 98 A3 00 00 */ stb r5, 0(r3)
+/* 803173C0 00313020 38 63 00 01 */ addi r3, r3, 1
+/* 803173C4 00313024 42 00 FF F8 */ bdnz lbl_803173BC
+lbl_803173C8:
+/* 803173C8 00313028 38 60 00 00 */ li r3, 0
+/* 803173CC 0031302C 4E 80 00 20 */ blr
+
+.global VFiPFPATH_getShortName
+VFiPFPATH_getShortName:
+/* 803173D0 00313030 88 C4 00 00 */ lbz r6, 0(r4)
+/* 803173D4 00313034 38 E0 FF FF */ li r7, -1
+/* 803173D8 00313038 2C 06 00 20 */ cmpwi r6, 0x20
+/* 803173DC 0031303C 98 C3 00 00 */ stb r6, 0(r3)
+/* 803173E0 00313040 41 82 00 08 */ beq lbl_803173E8
+/* 803173E4 00313044 38 E0 00 00 */ li r7, 0
+lbl_803173E8:
+/* 803173E8 00313048 88 C4 00 01 */ lbz r6, 1(r4)
+/* 803173EC 0031304C 2C 06 00 20 */ cmpwi r6, 0x20
+/* 803173F0 00313050 98 C3 00 01 */ stb r6, 1(r3)
+/* 803173F4 00313054 41 82 00 08 */ beq lbl_803173FC
+/* 803173F8 00313058 38 E0 00 01 */ li r7, 1
+lbl_803173FC:
+/* 803173FC 0031305C 88 C4 00 02 */ lbz r6, 2(r4)
+/* 80317400 00313060 2C 06 00 20 */ cmpwi r6, 0x20
+/* 80317404 00313064 98 C3 00 02 */ stb r6, 2(r3)
+/* 80317408 00313068 41 82 00 08 */ beq lbl_80317410
+/* 8031740C 0031306C 38 E0 00 02 */ li r7, 2
+lbl_80317410:
+/* 80317410 00313070 88 C4 00 03 */ lbz r6, 3(r4)
+/* 80317414 00313074 2C 06 00 20 */ cmpwi r6, 0x20
+/* 80317418 00313078 98 C3 00 03 */ stb r6, 3(r3)
+/* 8031741C 0031307C 41 82 00 08 */ beq lbl_80317424
+/* 80317420 00313080 38 E0 00 03 */ li r7, 3
+lbl_80317424:
+/* 80317424 00313084 88 C4 00 04 */ lbz r6, 4(r4)
+/* 80317428 00313088 2C 06 00 20 */ cmpwi r6, 0x20
+/* 8031742C 0031308C 98 C3 00 04 */ stb r6, 4(r3)
+/* 80317430 00313090 41 82 00 08 */ beq lbl_80317438
+/* 80317434 00313094 38 E0 00 04 */ li r7, 4
+lbl_80317438:
+/* 80317438 00313098 88 C4 00 05 */ lbz r6, 5(r4)
+/* 8031743C 0031309C 2C 06 00 20 */ cmpwi r6, 0x20
+/* 80317440 003130A0 98 C3 00 05 */ stb r6, 5(r3)
+/* 80317444 003130A4 41 82 00 08 */ beq lbl_8031744C
+/* 80317448 003130A8 38 E0 00 05 */ li r7, 5
+lbl_8031744C:
+/* 8031744C 003130AC 88 C4 00 06 */ lbz r6, 6(r4)
+/* 80317450 003130B0 2C 06 00 20 */ cmpwi r6, 0x20
+/* 80317454 003130B4 98 C3 00 06 */ stb r6, 6(r3)
+/* 80317458 003130B8 41 82 00 08 */ beq lbl_80317460
+/* 8031745C 003130BC 38 E0 00 06 */ li r7, 6
+lbl_80317460:
+/* 80317460 003130C0 88 C4 00 07 */ lbz r6, 7(r4)
+/* 80317464 003130C4 2C 06 00 20 */ cmpwi r6, 0x20
+/* 80317468 003130C8 98 C3 00 07 */ stb r6, 7(r3)
+/* 8031746C 003130CC 41 82 00 08 */ beq lbl_80317474
+/* 80317470 003130D0 38 E0 00 07 */ li r7, 7
+lbl_80317474:
+/* 80317474 003130D4 34 E7 00 01 */ addic. r7, r7, 1
+/* 80317478 003130D8 7C E3 3A 14 */ add r7, r3, r7
+/* 8031747C 003130DC 40 82 00 0C */ bne lbl_80317488
+/* 80317480 003130E0 38 60 00 0A */ li r3, 0xa
+/* 80317484 003130E4 4E 80 00 20 */ blr
+lbl_80317488:
+/* 80317488 003130E8 88 04 00 08 */ lbz r0, 8(r4)
+/* 8031748C 003130EC 38 C0 00 07 */ li r6, 7
+/* 80317490 003130F0 28 00 00 20 */ cmplwi r0, 0x20
+/* 80317494 003130F4 41 82 00 08 */ beq lbl_8031749C
+/* 80317498 003130F8 38 C0 00 08 */ li r6, 8
+lbl_8031749C:
+/* 8031749C 003130FC 88 04 00 09 */ lbz r0, 9(r4)
+/* 803174A0 00313100 28 00 00 20 */ cmplwi r0, 0x20
+/* 803174A4 00313104 41 82 00 08 */ beq lbl_803174AC
+/* 803174A8 00313108 38 C0 00 09 */ li r6, 9
+lbl_803174AC:
+/* 803174AC 0031310C 88 04 00 0A */ lbz r0, 0xa(r4)
+/* 803174B0 00313110 28 00 00 20 */ cmplwi r0, 0x20
+/* 803174B4 00313114 41 82 00 08 */ beq lbl_803174BC
+/* 803174B8 00313118 38 C0 00 0A */ li r6, 0xa
+lbl_803174BC:
+/* 803174BC 0031311C 2C 06 00 07 */ cmpwi r6, 7
+/* 803174C0 00313120 40 81 01 5C */ ble lbl_8031761C
+/* 803174C4 00313124 54 A0 07 39 */ rlwinm. r0, r5, 0, 0x1c, 0x1c
+/* 803174C8 00313128 40 82 00 10 */ bne lbl_803174D8
+/* 803174CC 0031312C 38 00 00 2E */ li r0, 0x2e
+/* 803174D0 00313130 98 07 00 00 */ stb r0, 0(r7)
+/* 803174D4 00313134 38 E7 00 01 */ addi r7, r7, 1
+lbl_803174D8:
+/* 803174D8 00313138 2C 86 00 08 */ cmpwi cr1, r6, 8
+/* 803174DC 0031313C 38 60 00 08 */ li r3, 8
+/* 803174E0 00313140 41 84 01 3C */ blt cr1, lbl_8031761C
+/* 803174E4 00313144 38 06 FF F9 */ addi r0, r6, -7
+/* 803174E8 00313148 39 06 FF F8 */ addi r8, r6, -8
+/* 803174EC 0031314C 2C 00 00 08 */ cmpwi r0, 8
+/* 803174F0 00313150 40 81 01 00 */ ble lbl_803175F0
+/* 803174F4 00313154 39 20 00 00 */ li r9, 0
+/* 803174F8 00313158 39 40 00 00 */ li r10, 0
+/* 803174FC 0031315C 39 60 00 00 */ li r11, 0
+/* 80317500 00313160 41 84 00 18 */ blt cr1, lbl_80317518
+/* 80317504 00313164 3C A0 80 00 */ lis r5, 0x7FFFFFFE@ha
+/* 80317508 00313168 38 05 FF FE */ addi r0, r5, 0x7FFFFFFE@l
+/* 8031750C 0031316C 7C 06 00 00 */ cmpw r6, r0
+/* 80317510 00313170 41 81 00 08 */ bgt lbl_80317518
+/* 80317514 00313174 39 60 00 01 */ li r11, 1
+lbl_80317518:
+/* 80317518 00313178 2C 0B 00 00 */ cmpwi r11, 0
+/* 8031751C 0031317C 41 82 00 38 */ beq lbl_80317554
+/* 80317520 00313180 54 CB 00 00 */ rlwinm r11, r6, 0, 0, 0
+/* 80317524 00313184 38 A0 00 01 */ li r5, 1
+/* 80317528 00313188 3C 0B 80 00 */ addis r0, r11, 0x8000
+/* 8031752C 0031318C 28 00 00 00 */ cmplwi r0, 0
+/* 80317530 00313190 40 82 00 18 */ bne lbl_80317548
+/* 80317534 00313194 38 06 FF F8 */ addi r0, r6, -8
+/* 80317538 00313198 54 00 00 00 */ rlwinm r0, r0, 0, 0, 0
+/* 8031753C 0031319C 7C 0B 00 00 */ cmpw r11, r0
+/* 80317540 003131A0 41 82 00 08 */ beq lbl_80317548
+/* 80317544 003131A4 38 A0 00 00 */ li r5, 0
+lbl_80317548:
+/* 80317548 003131A8 2C 05 00 00 */ cmpwi r5, 0
+/* 8031754C 003131AC 41 82 00 08 */ beq lbl_80317554
+/* 80317550 003131B0 39 40 00 01 */ li r10, 1
+lbl_80317554:
+/* 80317554 003131B4 2C 0A 00 00 */ cmpwi r10, 0
+/* 80317558 003131B8 41 82 00 30 */ beq lbl_80317588
+/* 8031755C 003131BC 38 06 FF F8 */ addi r0, r6, -8
+/* 80317560 003131C0 38 A0 00 01 */ li r5, 1
+/* 80317564 003131C4 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0
+/* 80317568 003131C8 40 82 00 14 */ bne lbl_8031757C
+/* 8031756C 003131CC 38 06 FF F9 */ addi r0, r6, -7
+/* 80317570 003131D0 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0
+/* 80317574 003131D4 41 82 00 08 */ beq lbl_8031757C
+/* 80317578 003131D8 38 A0 00 00 */ li r5, 0
+lbl_8031757C:
+/* 8031757C 003131DC 2C 05 00 00 */ cmpwi r5, 0
+/* 80317580 003131E0 41 82 00 08 */ beq lbl_80317588
+/* 80317584 003131E4 39 20 00 01 */ li r9, 1
+lbl_80317588:
+/* 80317588 003131E8 2C 09 00 00 */ cmpwi r9, 0
+/* 8031758C 003131EC 41 82 00 64 */ beq lbl_803175F0
+/* 80317590 003131F0 55 00 E8 FE */ srwi r0, r8, 3
+/* 80317594 003131F4 7C 09 03 A6 */ mtctr r0
+/* 80317598 003131F8 2C 08 00 08 */ cmpwi r8, 8
+/* 8031759C 003131FC 41 80 00 54 */ blt lbl_803175F0
+lbl_803175A0:
+/* 803175A0 00313200 7C A4 18 AE */ lbzx r5, r4, r3
+/* 803175A4 00313204 7D 04 1A 14 */ add r8, r4, r3
+/* 803175A8 00313208 88 08 00 01 */ lbz r0, 1(r8)
+/* 803175AC 0031320C 38 63 00 08 */ addi r3, r3, 8
+/* 803175B0 00313210 98 A7 00 00 */ stb r5, 0(r7)
+/* 803175B4 00313214 88 A8 00 02 */ lbz r5, 2(r8)
+/* 803175B8 00313218 98 07 00 01 */ stb r0, 1(r7)
+/* 803175BC 0031321C 88 08 00 03 */ lbz r0, 3(r8)
+/* 803175C0 00313220 98 A7 00 02 */ stb r5, 2(r7)
+/* 803175C4 00313224 88 A8 00 04 */ lbz r5, 4(r8)
+/* 803175C8 00313228 98 07 00 03 */ stb r0, 3(r7)
+/* 803175CC 0031322C 88 08 00 05 */ lbz r0, 5(r8)
+/* 803175D0 00313230 98 A7 00 04 */ stb r5, 4(r7)
+/* 803175D4 00313234 88 A8 00 06 */ lbz r5, 6(r8)
+/* 803175D8 00313238 98 07 00 05 */ stb r0, 5(r7)
+/* 803175DC 0031323C 88 08 00 07 */ lbz r0, 7(r8)
+/* 803175E0 00313240 98 A7 00 06 */ stb r5, 6(r7)
+/* 803175E4 00313244 98 07 00 07 */ stb r0, 7(r7)
+/* 803175E8 00313248 38 E7 00 08 */ addi r7, r7, 8
+/* 803175EC 0031324C 42 00 FF B4 */ bdnz lbl_803175A0
+lbl_803175F0:
+/* 803175F0 00313250 38 06 00 01 */ addi r0, r6, 1
+/* 803175F4 00313254 7C 84 1A 14 */ add r4, r4, r3
+/* 803175F8 00313258 7C 03 00 50 */ subf r0, r3, r0
+/* 803175FC 0031325C 7C 09 03 A6 */ mtctr r0
+/* 80317600 00313260 7C 03 30 00 */ cmpw r3, r6
+/* 80317604 00313264 41 81 00 18 */ bgt lbl_8031761C
+lbl_80317608:
+/* 80317608 00313268 88 04 00 00 */ lbz r0, 0(r4)
+/* 8031760C 0031326C 38 84 00 01 */ addi r4, r4, 1
+/* 80317610 00313270 98 07 00 00 */ stb r0, 0(r7)
+/* 80317614 00313274 38 E7 00 01 */ addi r7, r7, 1
+/* 80317618 00313278 42 00 FF F0 */ bdnz lbl_80317608
+lbl_8031761C:
+/* 8031761C 0031327C 38 00 00 00 */ li r0, 0
+/* 80317620 00313280 38 60 00 00 */ li r3, 0
+/* 80317624 00313284 98 07 00 00 */ stb r0, 0(r7)
+/* 80317628 00313288 4E 80 00 20 */ blr
+
+.global VFiPFPATH_getLongNameformShortName
+VFiPFPATH_getLongNameformShortName:
+/* 8031762C 0031328C 38 00 00 02 */ li r0, 2
+/* 80317630 00313290 7C 67 1B 78 */ mr r7, r3
+/* 80317634 00313294 7C 86 23 78 */ mr r6, r4
+/* 80317638 00313298 54 A8 07 38 */ rlwinm r8, r5, 0, 0x1c, 0x1c
+/* 8031763C 0031329C 39 40 00 00 */ li r10, 0
+/* 80317640 003132A0 7C 09 03 A6 */ mtctr r0
+lbl_80317644:
+/* 80317644 003132A4 89 27 00 00 */ lbz r9, 0(r7)
+/* 80317648 003132A8 7D 20 07 75 */ extsb. r0, r9
+/* 8031764C 003132AC 41 82 01 04 */ beq lbl_80317750
+/* 80317650 003132B0 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 80317654 003132B4 41 82 00 FC */ beq lbl_80317750
+/* 80317658 003132B8 2C 08 00 00 */ cmpwi r8, 0
+/* 8031765C 003132BC 41 82 00 20 */ beq lbl_8031767C
+/* 80317660 003132C0 2C 00 00 41 */ cmpwi r0, 0x41
+/* 80317664 003132C4 41 80 00 18 */ blt lbl_8031767C
+/* 80317668 003132C8 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 8031766C 003132CC 41 81 00 10 */ bgt lbl_8031767C
+/* 80317670 003132D0 38 09 00 20 */ addi r0, r9, 0x20
+/* 80317674 003132D4 98 06 00 00 */ stb r0, 0(r6)
+/* 80317678 003132D8 48 00 00 08 */ b lbl_80317680
+lbl_8031767C:
+/* 8031767C 003132DC 99 26 00 00 */ stb r9, 0(r6)
+lbl_80317680:
+/* 80317680 003132E0 89 27 00 01 */ lbz r9, 1(r7)
+/* 80317684 003132E4 39 4A 00 01 */ addi r10, r10, 1
+/* 80317688 003132E8 7D 20 07 75 */ extsb. r0, r9
+/* 8031768C 003132EC 41 82 00 C4 */ beq lbl_80317750
+/* 80317690 003132F0 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 80317694 003132F4 41 82 00 BC */ beq lbl_80317750
+/* 80317698 003132F8 2C 08 00 00 */ cmpwi r8, 0
+/* 8031769C 003132FC 41 82 00 20 */ beq lbl_803176BC
+/* 803176A0 00313300 2C 00 00 41 */ cmpwi r0, 0x41
+/* 803176A4 00313304 41 80 00 18 */ blt lbl_803176BC
+/* 803176A8 00313308 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 803176AC 0031330C 41 81 00 10 */ bgt lbl_803176BC
+/* 803176B0 00313310 38 09 00 20 */ addi r0, r9, 0x20
+/* 803176B4 00313314 98 06 00 01 */ stb r0, 1(r6)
+/* 803176B8 00313318 48 00 00 08 */ b lbl_803176C0
+lbl_803176BC:
+/* 803176BC 0031331C 99 26 00 01 */ stb r9, 1(r6)
+lbl_803176C0:
+/* 803176C0 00313320 89 27 00 02 */ lbz r9, 2(r7)
+/* 803176C4 00313324 39 4A 00 01 */ addi r10, r10, 1
+/* 803176C8 00313328 7D 20 07 75 */ extsb. r0, r9
+/* 803176CC 0031332C 41 82 00 84 */ beq lbl_80317750
+/* 803176D0 00313330 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 803176D4 00313334 41 82 00 7C */ beq lbl_80317750
+/* 803176D8 00313338 2C 08 00 00 */ cmpwi r8, 0
+/* 803176DC 0031333C 41 82 00 20 */ beq lbl_803176FC
+/* 803176E0 00313340 2C 00 00 41 */ cmpwi r0, 0x41
+/* 803176E4 00313344 41 80 00 18 */ blt lbl_803176FC
+/* 803176E8 00313348 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 803176EC 0031334C 41 81 00 10 */ bgt lbl_803176FC
+/* 803176F0 00313350 38 09 00 20 */ addi r0, r9, 0x20
+/* 803176F4 00313354 98 06 00 02 */ stb r0, 2(r6)
+/* 803176F8 00313358 48 00 00 08 */ b lbl_80317700
+lbl_803176FC:
+/* 803176FC 0031335C 99 26 00 02 */ stb r9, 2(r6)
+lbl_80317700:
+/* 80317700 00313360 89 27 00 03 */ lbz r9, 3(r7)
+/* 80317704 00313364 39 4A 00 01 */ addi r10, r10, 1
+/* 80317708 00313368 7D 20 07 75 */ extsb. r0, r9
+/* 8031770C 0031336C 41 82 00 44 */ beq lbl_80317750
+/* 80317710 00313370 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 80317714 00313374 41 82 00 3C */ beq lbl_80317750
+/* 80317718 00313378 2C 08 00 00 */ cmpwi r8, 0
+/* 8031771C 0031337C 41 82 00 20 */ beq lbl_8031773C
+/* 80317720 00313380 2C 00 00 41 */ cmpwi r0, 0x41
+/* 80317724 00313384 41 80 00 18 */ blt lbl_8031773C
+/* 80317728 00313388 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 8031772C 0031338C 41 81 00 10 */ bgt lbl_8031773C
+/* 80317730 00313390 38 09 00 20 */ addi r0, r9, 0x20
+/* 80317734 00313394 98 06 00 03 */ stb r0, 3(r6)
+/* 80317738 00313398 48 00 00 08 */ b lbl_80317740
+lbl_8031773C:
+/* 8031773C 0031339C 99 26 00 03 */ stb r9, 3(r6)
+lbl_80317740:
+/* 80317740 003133A0 39 4A 00 01 */ addi r10, r10, 1
+/* 80317744 003133A4 38 C6 00 04 */ addi r6, r6, 4
+/* 80317748 003133A8 38 E7 00 04 */ addi r7, r7, 4
+/* 8031774C 003133AC 42 00 FE F8 */ bdnz lbl_80317644
+lbl_80317750:
+/* 80317750 003133B0 7C 03 50 AE */ lbzx r0, r3, r10
+/* 80317754 003133B4 7C 00 07 74 */ extsb r0, r0
+/* 80317758 003133B8 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 8031775C 003133BC 40 82 00 10 */ bne lbl_8031776C
+/* 80317760 003133C0 38 00 00 2E */ li r0, 0x2e
+/* 80317764 003133C4 7C 04 51 AE */ stbx r0, r4, r10
+/* 80317768 003133C8 39 4A 00 01 */ addi r10, r10, 1
+lbl_8031776C:
+/* 8031776C 003133CC 38 EA 00 03 */ addi r7, r10, 3
+/* 80317770 003133D0 54 A6 06 F6 */ rlwinm r6, r5, 0, 0x1b, 0x1b
+/* 80317774 003133D4 7C 0A 38 50 */ subf r0, r10, r7
+/* 80317778 003133D8 7C A3 52 14 */ add r5, r3, r10
+/* 8031777C 003133DC 7C 64 52 14 */ add r3, r4, r10
+/* 80317780 003133E0 7C 09 03 A6 */ mtctr r0
+/* 80317784 003133E4 7C 0A 38 00 */ cmpw r10, r7
+/* 80317788 003133E8 40 80 00 48 */ bge lbl_803177D0
+lbl_8031778C:
+/* 8031778C 003133EC 88 E5 00 00 */ lbz r7, 0(r5)
+/* 80317790 003133F0 7C E0 07 75 */ extsb. r0, r7
+/* 80317794 003133F4 41 82 00 3C */ beq lbl_803177D0
+/* 80317798 003133F8 2C 06 00 00 */ cmpwi r6, 0
+/* 8031779C 003133FC 41 82 00 20 */ beq lbl_803177BC
+/* 803177A0 00313400 2C 00 00 41 */ cmpwi r0, 0x41
+/* 803177A4 00313404 41 80 00 18 */ blt lbl_803177BC
+/* 803177A8 00313408 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 803177AC 0031340C 41 81 00 10 */ bgt lbl_803177BC
+/* 803177B0 00313410 38 07 00 20 */ addi r0, r7, 0x20
+/* 803177B4 00313414 98 03 00 00 */ stb r0, 0(r3)
+/* 803177B8 00313418 48 00 00 08 */ b lbl_803177C0
+lbl_803177BC:
+/* 803177BC 0031341C 98 E3 00 00 */ stb r7, 0(r3)
+lbl_803177C0:
+/* 803177C0 00313420 39 4A 00 01 */ addi r10, r10, 1
+/* 803177C4 00313424 38 63 00 01 */ addi r3, r3, 1
+/* 803177C8 00313428 38 A5 00 01 */ addi r5, r5, 1
+/* 803177CC 0031342C 42 00 FF C0 */ bdnz lbl_8031778C
+lbl_803177D0:
+/* 803177D0 00313430 38 00 00 00 */ li r0, 0
+/* 803177D4 00313434 7C 04 51 AE */ stbx r0, r4, r10
+/* 803177D8 00313438 4E 80 00 20 */ blr
+
+.global VFiPFPATH_GetLengthFromShortname
+VFiPFPATH_GetLengthFromShortname:
+/* 803177DC 0031343C 38 C0 00 00 */ li r6, 0
+/* 803177E0 00313440 38 E0 00 00 */ li r7, 0
+/* 803177E4 00313444 48 00 00 48 */ b lbl_8031782C
+lbl_803177E8:
+/* 803177E8 00313448 2C 06 00 08 */ cmpwi r6, 8
+/* 803177EC 0031344C 40 82 00 2C */ bne lbl_80317818
+/* 803177F0 00313450 7C A0 07 74 */ extsb r0, r5
+/* 803177F4 00313454 2C 00 00 20 */ cmpwi r0, 0x20
+/* 803177F8 00313458 40 82 00 1C */ bne lbl_80317814
+/* 803177FC 0031345C 88 04 00 01 */ lbz r0, 1(r4)
+/* 80317800 00313460 2C 00 00 20 */ cmpwi r0, 0x20
+/* 80317804 00313464 40 82 00 10 */ bne lbl_80317814
+/* 80317808 00313468 88 04 00 02 */ lbz r0, 2(r4)
+/* 8031780C 0031346C 2C 00 00 20 */ cmpwi r0, 0x20
+/* 80317810 00313470 41 82 00 08 */ beq lbl_80317818
+lbl_80317814:
+/* 80317814 00313474 38 E7 00 01 */ addi r7, r7, 1
+lbl_80317818:
+/* 80317818 00313478 7C A0 07 74 */ extsb r0, r5
+/* 8031781C 0031347C 2C 00 00 20 */ cmpwi r0, 0x20
+/* 80317820 00313480 41 82 00 08 */ beq lbl_80317828
+/* 80317824 00313484 38 E7 00 01 */ addi r7, r7, 1
+lbl_80317828:
+/* 80317828 00313488 38 C6 00 01 */ addi r6, r6, 1
+lbl_8031782C:
+/* 8031782C 0031348C 7C A3 30 AE */ lbzx r5, r3, r6
+/* 80317830 00313490 7C 83 32 14 */ add r4, r3, r6
+/* 80317834 00313494 7C A0 07 75 */ extsb. r0, r5
+/* 80317838 00313498 40 82 FF B0 */ bne lbl_803177E8
+/* 8031783C 0031349C 7C E3 3B 78 */ mr r3, r7
+/* 80317840 003134A0 4E 80 00 20 */ blr
+
+.global VFiPFPATH_GetLengthFromUnicode
+VFiPFPATH_GetLengthFromUnicode:
+/* 80317844 003134A4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80317848 003134A8 7C 08 02 A6 */ mflr r0
+/* 8031784C 003134AC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80317850 003134B0 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80317854 003134B4 3F E0 80 58 */ lis r31, lbl_8057F5C8@ha
+/* 80317858 003134B8 3B FF F5 C8 */ addi r31, r31, lbl_8057F5C8@l
+/* 8031785C 003134BC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80317860 003134C0 3B C0 00 00 */ li r30, 0
+/* 80317864 003134C4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80317868 003134C8 3B A0 00 00 */ li r29, 0
+/* 8031786C 003134CC 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80317870 003134D0 7C 7C 1B 78 */ mr r28, r3
+/* 80317874 003134D4 48 00 00 38 */ b lbl_803178AC
+lbl_80317878:
+/* 80317878 003134D8 81 9F 00 28 */ lwz r12, 0x28(r31)
+/* 8031787C 003134DC 7C 7C 1A 14 */ add r3, r28, r3
+/* 80317880 003134E0 38 81 00 08 */ addi r4, r1, 8
+/* 80317884 003134E4 7D 89 03 A6 */ mtctr r12
+/* 80317888 003134E8 4E 80 04 21 */ bctrl
+/* 8031788C 003134EC 38 81 00 0E */ addi r4, r1, 0xe
+/* 80317890 003134F0 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80317894 003134F4 4B FE D9 0D */ bl VFiPFCODE_Divide_Width
+/* 80317898 003134F8 A8 01 00 0C */ lha r0, 0xc(r1)
+/* 8031789C 003134FC A8 61 00 0E */ lha r3, 0xe(r1)
+/* 803178A0 00313500 7C 00 0E 70 */ srawi r0, r0, 1
+/* 803178A4 00313504 7F BD 1A 14 */ add r29, r29, r3
+/* 803178A8 00313508 7F DE 02 14 */ add r30, r30, r0
+lbl_803178AC:
+/* 803178AC 0031350C 57 C3 08 3C */ slwi r3, r30, 1
+/* 803178B0 00313510 7C 1C 1A 2E */ lhzx r0, r28, r3
+/* 803178B4 00313514 2C 00 00 00 */ cmpwi r0, 0
+/* 803178B8 00313518 40 82 FF C0 */ bne lbl_80317878
+/* 803178BC 0031351C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803178C0 00313520 7F A3 EB 78 */ mr r3, r29
+/* 803178C4 00313524 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803178C8 00313528 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 803178CC 0031352C 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 803178D0 00313530 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803178D4 00313534 7C 08 03 A6 */ mtlr r0
+/* 803178D8 00313538 38 21 00 20 */ addi r1, r1, 0x20
+/* 803178DC 0031353C 4E 80 00 20 */ blr
+
+.global VFiPFPATH_transformFromUnicodeToNormal
+VFiPFPATH_transformFromUnicodeToNormal:
+/* 803178E0 00313540 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803178E4 00313544 7C 08 02 A6 */ mflr r0
+/* 803178E8 00313548 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803178EC 0031354C 39 61 00 30 */ addi r11, r1, 0x30
+/* 803178F0 00313550 4B EA F8 35 */ bl _savegpr_26
+/* 803178F4 00313554 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 803178F8 00313558 7C 7F 1B 78 */ mr r31, r3
+/* 803178FC 0031355C 3B 85 F5 C8 */ addi r28, r5, lbl_8057F5C8@l
+/* 80317900 00313560 7C 9A 23 78 */ mr r26, r4
+/* 80317904 00313564 80 1C 00 3C */ lwz r0, 0x3c(r28)
+/* 80317908 00313568 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8031790C 0031356C 28 00 00 02 */ cmplwi r0, 2
+/* 80317910 00313570 40 82 00 8C */ bne lbl_8031799C
+/* 80317914 00313574 38 00 00 00 */ li r0, 0
+/* 80317918 00313578 3B 80 00 2E */ li r28, 0x2e
+/* 8031791C 0031357C 3B A0 00 20 */ li r29, 0x20
+/* 80317920 00313580 B3 81 00 10 */ sth r28, 0x10(r1)
+/* 80317924 00313584 7F 5B D3 78 */ mr r27, r26
+/* 80317928 00313588 3B C0 00 5F */ li r30, 0x5f
+/* 8031792C 0031358C B0 01 00 12 */ sth r0, 0x12(r1)
+/* 80317930 00313590 B3 A1 00 0C */ sth r29, 0xc(r1)
+/* 80317934 00313594 B0 01 00 0E */ sth r0, 0xe(r1)
+/* 80317938 00313598 48 00 00 54 */ b lbl_8031798C
+lbl_8031793C:
+/* 8031793C 0031359C 7F 43 D3 78 */ mr r3, r26
+/* 80317940 003135A0 38 81 00 10 */ addi r4, r1, 0x10
+/* 80317944 003135A4 38 A0 00 01 */ li r5, 1
+/* 80317948 003135A8 4B FE DF 61 */ bl VFipf_w_strncmp
+/* 8031794C 003135AC 2C 03 00 00 */ cmpwi r3, 0
+/* 80317950 003135B0 40 82 00 0C */ bne lbl_8031795C
+/* 80317954 003135B4 9B 9F 00 00 */ stb r28, 0(r31)
+/* 80317958 003135B8 48 00 00 28 */ b lbl_80317980
+lbl_8031795C:
+/* 8031795C 003135BC 7F 43 D3 78 */ mr r3, r26
+/* 80317960 003135C0 38 81 00 0C */ addi r4, r1, 0xc
+/* 80317964 003135C4 38 A0 00 01 */ li r5, 1
+/* 80317968 003135C8 4B FE DF 41 */ bl VFipf_w_strncmp
+/* 8031796C 003135CC 2C 03 00 00 */ cmpwi r3, 0
+/* 80317970 003135D0 40 82 00 0C */ bne lbl_8031797C
+/* 80317974 003135D4 9B BF 00 00 */ stb r29, 0(r31)
+/* 80317978 003135D8 48 00 00 08 */ b lbl_80317980
+lbl_8031797C:
+/* 8031797C 003135DC 9B DF 00 00 */ stb r30, 0(r31)
+lbl_80317980:
+/* 80317980 003135E0 3B FF 00 01 */ addi r31, r31, 1
+/* 80317984 003135E4 3B 5A 00 02 */ addi r26, r26, 2
+/* 80317988 003135E8 3B 7B 00 02 */ addi r27, r27, 2
+lbl_8031798C:
+/* 8031798C 003135EC A0 1B 00 00 */ lhz r0, 0(r27)
+/* 80317990 003135F0 2C 00 00 00 */ cmpwi r0, 0
+/* 80317994 003135F4 40 82 FF A8 */ bne lbl_8031793C
+/* 80317998 003135F8 48 00 00 50 */ b lbl_803179E8
+lbl_8031799C:
+/* 8031799C 003135FC 3B 60 00 00 */ li r27, 0
+/* 803179A0 00313600 48 00 00 38 */ b lbl_803179D8
+lbl_803179A4:
+/* 803179A4 00313604 81 9C 00 28 */ lwz r12, 0x28(r28)
+/* 803179A8 00313608 7F E4 FB 78 */ mr r4, r31
+/* 803179AC 0031360C 7C 7A 1A 14 */ add r3, r26, r3
+/* 803179B0 00313610 7D 89 03 A6 */ mtctr r12
+/* 803179B4 00313614 4E 80 04 21 */ bctrl
+/* 803179B8 00313618 38 81 00 0A */ addi r4, r1, 0xa
+/* 803179BC 0031361C 38 A1 00 08 */ addi r5, r1, 8
+/* 803179C0 00313620 4B FE D7 E1 */ bl VFiPFCODE_Divide_Width
+/* 803179C4 00313624 A8 01 00 08 */ lha r0, 8(r1)
+/* 803179C8 00313628 A8 61 00 0A */ lha r3, 0xa(r1)
+/* 803179CC 0031362C 7C 00 0E 70 */ srawi r0, r0, 1
+/* 803179D0 00313630 7F FF 1A 14 */ add r31, r31, r3
+/* 803179D4 00313634 7F 7B 02 14 */ add r27, r27, r0
+lbl_803179D8:
+/* 803179D8 00313638 57 63 08 3C */ slwi r3, r27, 1
+/* 803179DC 0031363C 7C 1A 1A 2E */ lhzx r0, r26, r3
+/* 803179E0 00313640 2C 00 00 00 */ cmpwi r0, 0
+/* 803179E4 00313644 40 82 FF C0 */ bne lbl_803179A4
+lbl_803179E8:
+/* 803179E8 00313648 38 00 00 00 */ li r0, 0
+/* 803179EC 0031364C 39 61 00 30 */ addi r11, r1, 0x30
+/* 803179F0 00313650 98 1F 00 00 */ stb r0, 0(r31)
+/* 803179F4 00313654 38 60 00 00 */ li r3, 0
+/* 803179F8 00313658 4B EA F7 79 */ bl _restgpr_26
+/* 803179FC 0031365C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80317A00 00313660 7C 08 03 A6 */ mtlr r0
+/* 80317A04 00313664 38 21 00 30 */ addi r1, r1, 0x30
+/* 80317A08 00313668 4E 80 00 20 */ blr
+
+.global VFiPFPATH_transformInUnicode
+VFiPFPATH_transformInUnicode:
+/* 80317A0C 0031366C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80317A10 00313670 7C 08 02 A6 */ mflr r0
+/* 80317A14 00313674 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80317A18 00313678 39 61 00 30 */ addi r11, r1, 0x30
+/* 80317A1C 0031367C 4B EA F7 0D */ bl _savegpr_27
+/* 80317A20 00313680 3F E0 80 58 */ lis r31, lbl_8057F5C8@ha
+/* 80317A24 00313684 7C 7B 1B 78 */ mr r27, r3
+/* 80317A28 00313688 7C 9C 23 78 */ mr r28, r4
+/* 80317A2C 0031368C 3B A0 00 00 */ li r29, 0
+/* 80317A30 00313690 3B FF F5 C8 */ addi r31, r31, lbl_8057F5C8@l
+/* 80317A34 00313694 3B C0 00 00 */ li r30, 0
+/* 80317A38 00313698 48 00 00 3C */ b lbl_80317A74
+lbl_80317A3C:
+/* 80317A3C 0031369C 81 9F 00 24 */ lwz r12, 0x24(r31)
+/* 80317A40 003136A0 7F 64 DB 78 */ mr r4, r27
+/* 80317A44 003136A4 7C 7C F2 14 */ add r3, r28, r30
+/* 80317A48 003136A8 7D 89 03 A6 */ mtctr r12
+/* 80317A4C 003136AC 4E 80 04 21 */ bctrl
+/* 80317A50 003136B0 38 81 00 0A */ addi r4, r1, 0xa
+/* 80317A54 003136B4 38 A1 00 08 */ addi r5, r1, 8
+/* 80317A58 003136B8 4B FE D7 49 */ bl VFiPFCODE_Divide_Width
+/* 80317A5C 003136BC A8 61 00 08 */ lha r3, 8(r1)
+/* 80317A60 003136C0 3B BD 00 01 */ addi r29, r29, 1
+/* 80317A64 003136C4 A8 01 00 0A */ lha r0, 0xa(r1)
+/* 80317A68 003136C8 54 63 00 3C */ rlwinm r3, r3, 0, 0, 0x1e
+/* 80317A6C 003136CC 7F 7B 1A 14 */ add r27, r27, r3
+/* 80317A70 003136D0 7F DE 02 14 */ add r30, r30, r0
+lbl_80317A74:
+/* 80317A74 003136D4 7C 1C F0 AE */ lbzx r0, r28, r30
+/* 80317A78 003136D8 7C 00 07 75 */ extsb. r0, r0
+/* 80317A7C 003136DC 40 82 FF C0 */ bne lbl_80317A3C
+/* 80317A80 003136E0 38 00 00 00 */ li r0, 0
+/* 80317A84 003136E4 39 61 00 30 */ addi r11, r1, 0x30
+/* 80317A88 003136E8 B0 1B 00 00 */ sth r0, 0(r27)
+/* 80317A8C 003136EC 7F A3 EB 78 */ mr r3, r29
+/* 80317A90 003136F0 4B EA F6 E5 */ bl _restgpr_27
+/* 80317A94 003136F4 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80317A98 003136F8 7C 08 03 A6 */ mtlr r0
+/* 80317A9C 003136FC 38 21 00 30 */ addi r1, r1, 0x30
+/* 80317AA0 00313700 4E 80 00 20 */ blr
+
+.global VFiPFPATH_parseShortName
+VFiPFPATH_parseShortName:
+/* 80317AA4 00313704 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 80317AA8 00313708 7C 08 02 A6 */ mflr r0
+/* 80317AAC 0031370C 90 01 00 64 */ stw r0, 0x64(r1)
+/* 80317AB0 00313710 39 61 00 60 */ addi r11, r1, 0x60
+/* 80317AB4 00313714 4B EA F6 41 */ bl __save_gpr
+/* 80317AB8 00313718 90 81 00 08 */ stw r4, 8(r1)
+/* 80317ABC 0031371C 7C 7F 1B 78 */ mr r31, r3
+/* 80317AC0 00313720 7C 83 23 78 */ mr r3, r4
+/* 80317AC4 00313724 3A A0 00 00 */ li r21, 0
+/* 80317AC8 00313728 3A 80 00 00 */ li r20, 0
+/* 80317ACC 0031372C 38 80 00 03 */ li r4, 3
+/* 80317AD0 00313730 4B FE D8 41 */ bl VFiPFSTR_GetStrPos
+/* 80317AD4 00313734 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80317AD8 00313738 7C 76 1B 78 */ mr r22, r3
+/* 80317ADC 0031373C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80317AE0 00313740 80 04 00 3C */ lwz r0, 0x3c(r4)
+/* 80317AE4 00313744 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80317AE8 00313748 40 82 06 88 */ bne lbl_80318170
+/* 80317AEC 0031374C 48 00 00 0C */ b lbl_80317AF8
+lbl_80317AF0:
+/* 80317AF0 00313750 3A 80 00 01 */ li r20, 1
+/* 80317AF4 00313754 3A D6 00 01 */ addi r22, r22, 1
+lbl_80317AF8:
+/* 80317AF8 00313758 88 16 00 00 */ lbz r0, 0(r22)
+/* 80317AFC 0031375C 7C 00 07 74 */ extsb r0, r0
+/* 80317B00 00313760 2C 00 00 20 */ cmpwi r0, 0x20
+/* 80317B04 00313764 41 82 FF EC */ beq lbl_80317AF0
+/* 80317B08 00313768 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 80317B0C 0031376C 41 82 FF E4 */ beq lbl_80317AF0
+/* 80317B10 00313770 3A 00 00 00 */ li r16, 0
+/* 80317B14 00313774 38 80 00 00 */ li r4, 0
+/* 80317B18 00313778 38 A0 00 00 */ li r5, 0
+/* 80317B1C 0031377C 48 00 00 24 */ b lbl_80317B40
+lbl_80317B20:
+/* 80317B20 00313780 7C 60 07 74 */ extsb r0, r3
+/* 80317B24 00313784 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 80317B28 00313788 40 82 00 14 */ bne lbl_80317B3C
+/* 80317B2C 0031378C 56 00 04 3F */ clrlwi. r0, r16, 0x10
+/* 80317B30 00313790 41 82 00 08 */ beq lbl_80317B38
+/* 80317B34 00313794 7E 04 83 78 */ mr r4, r16
+lbl_80317B38:
+/* 80317B38 00313798 7C B0 2B 78 */ mr r16, r5
+lbl_80317B3C:
+/* 80317B3C 0031379C 38 A5 00 01 */ addi r5, r5, 1
+lbl_80317B40:
+/* 80317B40 003137A0 54 A0 04 3E */ clrlwi r0, r5, 0x10
+/* 80317B44 003137A4 7C 76 00 AE */ lbzx r3, r22, r0
+/* 80317B48 003137A8 7C 60 07 75 */ extsb. r0, r3
+/* 80317B4C 003137AC 40 82 FF D4 */ bne lbl_80317B20
+/* 80317B50 003137B0 56 00 04 3F */ clrlwi. r0, r16, 0x10
+/* 80317B54 003137B4 41 82 00 24 */ beq lbl_80317B78
+/* 80317B58 003137B8 7C 60 B2 14 */ add r3, r0, r22
+/* 80317B5C 003137BC 88 03 00 01 */ lbz r0, 1(r3)
+/* 80317B60 003137C0 7C 00 07 75 */ extsb. r0, r0
+/* 80317B64 003137C4 40 82 00 14 */ bne lbl_80317B78
+/* 80317B68 003137C8 54 80 04 3F */ clrlwi. r0, r4, 0x10
+/* 80317B6C 003137CC 41 82 00 08 */ beq lbl_80317B74
+/* 80317B70 003137D0 7C 90 23 78 */ mr r16, r4
+lbl_80317B74:
+/* 80317B74 003137D4 3A 80 00 01 */ li r20, 1
+lbl_80317B78:
+/* 80317B78 003137D8 39 E0 00 00 */ li r15, 0
+/* 80317B7C 003137DC 3A 61 00 10 */ addi r19, r1, 0x10
+/* 80317B80 003137E0 3F 60 80 58 */ lis r27, lbl_8057F5C8@ha
+/* 80317B84 003137E4 3F A0 80 40 */ lis r29, lbl_803FE220@ha
+/* 80317B88 003137E8 B1 E1 00 10 */ sth r15, 0x10(r1)
+/* 80317B8C 003137EC 7E 7A 9B 78 */ mr r26, r19
+/* 80317B90 003137F0 7E 7C 9B 78 */ mr r28, r19
+/* 80317B94 003137F4 3B 7B F5 C8 */ addi r27, r27, lbl_8057F5C8@l
+/* 80317B98 003137F8 B1 E1 00 0E */ sth r15, 0xe(r1)
+/* 80317B9C 003137FC 3B BD E2 20 */ addi r29, r29, lbl_803FE220@l
+/* 80317BA0 00313800 3B 21 00 0E */ addi r25, r1, 0xe
+/* 80317BA4 00313804 3B 00 00 00 */ li r24, 0
+/* 80317BA8 00313808 3A 40 00 01 */ li r18, 1
+/* 80317BAC 0031380C 3A 20 00 01 */ li r17, 1
+/* 80317BB0 00313810 39 C0 00 5F */ li r14, 0x5f
+/* 80317BB4 00313814 48 00 02 84 */ b lbl_80317E38
+lbl_80317BB8:
+/* 80317BB8 00313818 A0 01 00 10 */ lhz r0, 0x10(r1)
+/* 80317BBC 0031381C 28 00 00 08 */ cmplwi r0, 8
+/* 80317BC0 00313820 41 82 00 18 */ beq lbl_80317BD8
+/* 80317BC4 00313824 56 03 04 3F */ clrlwi. r3, r16, 0x10
+/* 80317BC8 00313828 41 82 00 18 */ beq lbl_80317BE0
+/* 80317BCC 0031382C 57 00 04 3E */ clrlwi r0, r24, 0x10
+/* 80317BD0 00313830 7C 00 18 40 */ cmplw r0, r3
+/* 80317BD4 00313834 40 82 00 0C */ bne lbl_80317BE0
+lbl_80317BD8:
+/* 80317BD8 00313838 7C 13 C8 40 */ cmplw r19, r25
+/* 80317BDC 0031383C 40 82 02 24 */ bne lbl_80317E00
+lbl_80317BE0:
+/* 80317BE0 00313840 7C 80 07 74 */ extsb r0, r4
+/* 80317BE4 00313844 2C 00 00 20 */ cmpwi r0, 0x20
+/* 80317BE8 00313848 41 82 02 10 */ beq lbl_80317DF8
+/* 80317BEC 0031384C 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 80317BF0 00313850 41 82 02 08 */ beq lbl_80317DF8
+/* 80317BF4 00313854 81 9B 00 2C */ lwz r12, 0x2c(r27)
+/* 80317BF8 00313858 57 00 04 3E */ clrlwi r0, r24, 0x10
+/* 80317BFC 0031385C 7C 76 02 14 */ add r3, r22, r0
+/* 80317C00 00313860 7D 89 03 A6 */ mtctr r12
+/* 80317C04 00313864 4E 80 04 21 */ bctrl
+/* 80317C08 00313868 2C 03 00 01 */ cmpwi r3, 1
+/* 80317C0C 0031386C 7C 77 1B 78 */ mr r23, r3
+/* 80317C10 00313870 41 82 01 44 */ beq lbl_80317D54
+/* 80317C14 00313874 57 04 04 3E */ clrlwi r4, r24, 0x10
+/* 80317C18 00313878 56 00 04 3E */ clrlwi r0, r16, 0x10
+/* 80317C1C 0031387C 7C 04 00 40 */ cmplw r4, r0
+/* 80317C20 00313880 41 80 00 0C */ blt lbl_80317C2C
+/* 80317C24 00313884 2C 00 00 00 */ cmpwi r0, 0
+/* 80317C28 00313888 40 82 00 1C */ bne lbl_80317C44
+lbl_80317C2C:
+/* 80317C2C 0031388C A0 01 00 10 */ lhz r0, 0x10(r1)
+/* 80317C30 00313890 7C 00 1A 14 */ add r0, r0, r3
+/* 80317C34 00313894 2C 00 00 08 */ cmpwi r0, 8
+/* 80317C38 00313898 40 81 00 0C */ ble lbl_80317C44
+/* 80317C3C 0031389C 3A 80 00 01 */ li r20, 1
+/* 80317C40 003138A0 48 00 01 F4 */ b lbl_80317E34
+lbl_80317C44:
+/* 80317C44 003138A4 56 04 04 3F */ clrlwi. r4, r16, 0x10
+/* 80317C48 003138A8 41 82 00 28 */ beq lbl_80317C70
+/* 80317C4C 003138AC 57 00 04 3E */ clrlwi r0, r24, 0x10
+/* 80317C50 003138B0 7C 00 20 40 */ cmplw r0, r4
+/* 80317C54 003138B4 40 81 00 1C */ ble lbl_80317C70
+/* 80317C58 003138B8 A0 A1 00 0E */ lhz r5, 0xe(r1)
+/* 80317C5C 003138BC 7C 05 1A 14 */ add r0, r5, r3
+/* 80317C60 003138C0 2C 00 00 03 */ cmpwi r0, 3
+/* 80317C64 003138C4 40 81 00 0C */ ble lbl_80317C70
+/* 80317C68 003138C8 3A 80 00 01 */ li r20, 1
+/* 80317C6C 003138CC 48 00 01 E8 */ b lbl_80317E54
+lbl_80317C70:
+/* 80317C70 003138D0 7C 13 D0 40 */ cmplw r19, r26
+/* 80317C74 003138D4 40 82 00 D0 */ bne lbl_80317D44
+/* 80317C78 003138D8 7E 51 93 78 */ mr r17, r18
+/* 80317C7C 003138DC 54 72 04 3E */ clrlwi r18, r3, 0x10
+/* 80317C80 003138E0 48 00 00 C4 */ b lbl_80317D44
+lbl_80317C84:
+/* 80317C84 003138E4 57 00 04 3E */ clrlwi r0, r24, 0x10
+/* 80317C88 003138E8 81 9B 00 24 */ lwz r12, 0x24(r27)
+/* 80317C8C 003138EC 7C B6 00 AE */ lbzx r5, r22, r0
+/* 80317C90 003138F0 7C 76 02 14 */ add r3, r22, r0
+/* 80317C94 003138F4 88 03 00 01 */ lbz r0, 1(r3)
+/* 80317C98 003138F8 38 81 00 0C */ addi r4, r1, 0xc
+/* 80317C9C 003138FC 54 A5 40 2E */ slwi r5, r5, 8
+/* 80317CA0 00313900 7C 05 02 14 */ add r0, r5, r0
+/* 80317CA4 00313904 54 1E 04 3E */ clrlwi r30, r0, 0x10
+/* 80317CA8 00313908 7D 89 03 A6 */ mtctr r12
+/* 80317CAC 0031390C 4E 80 04 21 */ bctrl
+/* 80317CB0 00313910 A0 61 00 0C */ lhz r3, 0xc(r1)
+/* 80317CB4 00313914 28 03 FF 41 */ cmplwi r3, 0xff41
+/* 80317CB8 00313918 41 80 00 1C */ blt lbl_80317CD4
+/* 80317CBC 0031391C 28 03 FF 5A */ cmplwi r3, 0xff5a
+/* 80317CC0 00313920 41 81 00 14 */ bgt lbl_80317CD4
+/* 80317CC4 00313924 38 03 FF E0 */ addi r0, r3, -32
+/* 80317CC8 00313928 38 60 00 01 */ li r3, 1
+/* 80317CCC 0031392C B0 01 00 0C */ sth r0, 0xc(r1)
+/* 80317CD0 00313930 48 00 00 08 */ b lbl_80317CD8
+lbl_80317CD4:
+/* 80317CD4 00313934 38 60 00 00 */ li r3, 0
+lbl_80317CD8:
+/* 80317CD8 00313938 28 03 00 01 */ cmplwi r3, 1
+/* 80317CDC 0031393C 40 82 00 20 */ bne lbl_80317CFC
+/* 80317CE0 00313940 81 9B 00 28 */ lwz r12, 0x28(r27)
+/* 80317CE4 00313944 38 61 00 0C */ addi r3, r1, 0xc
+/* 80317CE8 00313948 7C 64 1B 78 */ mr r4, r3
+/* 80317CEC 0031394C 7D 89 03 A6 */ mtctr r12
+/* 80317CF0 00313950 4E 80 04 21 */ bctrl
+/* 80317CF4 00313954 38 60 00 01 */ li r3, 1
+/* 80317CF8 00313958 48 00 00 08 */ b lbl_80317D00
+lbl_80317CFC:
+/* 80317CFC 0031395C 38 60 00 00 */ li r3, 0
+lbl_80317D00:
+/* 80317D00 00313960 2C 03 00 00 */ cmpwi r3, 0
+/* 80317D04 00313964 41 82 00 0C */ beq lbl_80317D10
+/* 80317D08 00313968 A3 C1 00 0C */ lhz r30, 0xc(r1)
+/* 80317D0C 0031396C 3A A0 00 01 */ li r21, 1
+lbl_80317D10:
+/* 80317D10 00313970 55 E0 04 3E */ clrlwi r0, r15, 0x10
+/* 80317D14 00313974 38 6F 00 02 */ addi r3, r15, 2
+/* 80317D18 00313978 7C 9F 02 14 */ add r4, r31, r0
+/* 80317D1C 0031397C 3A F7 FF FE */ addi r23, r23, -2
+/* 80317D20 00313980 57 C0 C6 3E */ rlwinm r0, r30, 0x18, 0x18, 0x1f
+/* 80317D24 00313984 54 6F 04 3E */ clrlwi r15, r3, 0x10
+/* 80317D28 00313988 98 04 00 00 */ stb r0, 0(r4)
+/* 80317D2C 0031398C 38 18 00 02 */ addi r0, r24, 2
+/* 80317D30 00313990 54 18 04 3E */ clrlwi r24, r0, 0x10
+/* 80317D34 00313994 9B C4 00 01 */ stb r30, 1(r4)
+/* 80317D38 00313998 A0 73 00 00 */ lhz r3, 0(r19)
+/* 80317D3C 0031399C 38 03 00 02 */ addi r0, r3, 2
+/* 80317D40 003139A0 B0 13 00 00 */ sth r0, 0(r19)
+lbl_80317D44:
+/* 80317D44 003139A4 2C 17 00 00 */ cmpwi r23, 0
+/* 80317D48 003139A8 40 82 FF 3C */ bne lbl_80317C84
+/* 80317D4C 003139AC 3B 18 FF FF */ addi r24, r24, -1
+/* 80317D50 003139B0 48 00 00 E4 */ b lbl_80317E34
+lbl_80317D54:
+/* 80317D54 003139B4 7C 13 E0 40 */ cmplw r19, r28
+/* 80317D58 003139B8 40 82 00 0C */ bne lbl_80317D64
+/* 80317D5C 003139BC 7E 51 93 78 */ mr r17, r18
+/* 80317D60 003139C0 3A 40 00 01 */ li r18, 1
+lbl_80317D64:
+/* 80317D64 003139C4 80 1B 00 14 */ lwz r0, 0x14(r27)
+/* 80317D68 003139C8 54 00 03 DF */ rlwinm. r0, r0, 0, 0xf, 0xf
+/* 80317D6C 003139CC 40 82 00 28 */ bne lbl_80317D94
+/* 80317D70 003139D0 7C 16 F0 AE */ lbzx r0, r22, r30
+/* 80317D74 003139D4 28 00 00 80 */ cmplwi r0, 0x80
+/* 80317D78 003139D8 40 80 00 1C */ bge lbl_80317D94
+/* 80317D7C 003139DC 28 00 00 20 */ cmplwi r0, 0x20
+/* 80317D80 003139E0 41 80 00 58 */ blt lbl_80317DD8
+/* 80317D84 003139E4 7C 7D 02 14 */ add r3, r29, r0
+/* 80317D88 003139E8 88 03 FF E0 */ lbz r0, -0x20(r3)
+/* 80317D8C 003139EC 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80317D90 003139F0 41 82 00 48 */ beq lbl_80317DD8
+lbl_80317D94:
+/* 80317D94 003139F4 7C 76 F0 AE */ lbzx r3, r22, r30
+/* 80317D98 003139F8 7C 63 07 74 */ extsb r3, r3
+/* 80317D9C 003139FC 4B FE D0 F9 */ bl VFipf_toupper
+/* 80317DA0 00313A00 55 E0 04 3E */ clrlwi r0, r15, 0x10
+/* 80317DA4 00313A04 39 EF 00 01 */ addi r15, r15, 1
+/* 80317DA8 00313A08 7C 7F 01 AE */ stbx r3, r31, r0
+/* 80317DAC 00313A0C A0 73 00 00 */ lhz r3, 0(r19)
+/* 80317DB0 00313A10 38 03 00 01 */ addi r0, r3, 1
+/* 80317DB4 00313A14 B0 13 00 00 */ sth r0, 0(r19)
+/* 80317DB8 00313A18 7C 16 F0 AE */ lbzx r0, r22, r30
+/* 80317DBC 00313A1C 7C 00 07 74 */ extsb r0, r0
+/* 80317DC0 00313A20 2C 00 00 61 */ cmpwi r0, 0x61
+/* 80317DC4 00313A24 41 80 00 70 */ blt lbl_80317E34
+/* 80317DC8 00313A28 2C 00 00 7A */ cmpwi r0, 0x7a
+/* 80317DCC 00313A2C 41 81 00 68 */ bgt lbl_80317E34
+/* 80317DD0 00313A30 3A A0 00 01 */ li r21, 1
+/* 80317DD4 00313A34 48 00 00 60 */ b lbl_80317E34
+lbl_80317DD8:
+/* 80317DD8 00313A38 55 E0 04 3E */ clrlwi r0, r15, 0x10
+/* 80317DDC 00313A3C 3A 80 00 01 */ li r20, 1
+/* 80317DE0 00313A40 7D DF 01 AE */ stbx r14, r31, r0
+/* 80317DE4 00313A44 39 EF 00 01 */ addi r15, r15, 1
+/* 80317DE8 00313A48 A0 73 00 00 */ lhz r3, 0(r19)
+/* 80317DEC 00313A4C 38 03 00 01 */ addi r0, r3, 1
+/* 80317DF0 00313A50 B0 13 00 00 */ sth r0, 0(r19)
+/* 80317DF4 00313A54 48 00 00 40 */ b lbl_80317E34
+lbl_80317DF8:
+/* 80317DF8 00313A58 3A 80 00 01 */ li r20, 1
+/* 80317DFC 00313A5C 48 00 00 38 */ b lbl_80317E34
+lbl_80317E00:
+/* 80317E00 00313A60 7C 80 07 75 */ extsb. r0, r4
+/* 80317E04 00313A64 7F 33 CB 78 */ mr r19, r25
+/* 80317E08 00313A68 41 82 00 10 */ beq lbl_80317E18
+/* 80317E0C 00313A6C 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 80317E10 00313A70 41 82 00 08 */ beq lbl_80317E18
+/* 80317E14 00313A74 3A 80 00 01 */ li r20, 1
+lbl_80317E18:
+/* 80317E18 00313A78 56 00 04 3F */ clrlwi. r0, r16, 0x10
+/* 80317E1C 00313A7C 41 82 00 38 */ beq lbl_80317E54
+/* 80317E20 00313A80 55 E3 04 3E */ clrlwi r3, r15, 0x10
+/* 80317E24 00313A84 38 00 00 2E */ li r0, 0x2e
+/* 80317E28 00313A88 7C 1F 19 AE */ stbx r0, r31, r3
+/* 80317E2C 00313A8C 7E 18 83 78 */ mr r24, r16
+/* 80317E30 00313A90 39 EF 00 01 */ addi r15, r15, 1
+lbl_80317E34:
+/* 80317E34 00313A94 3B 18 00 01 */ addi r24, r24, 1
+lbl_80317E38:
+/* 80317E38 00313A98 A0 A1 00 0E */ lhz r5, 0xe(r1)
+/* 80317E3C 00313A9C 28 05 00 03 */ cmplwi r5, 3
+/* 80317E40 00313AA0 40 80 00 14 */ bge lbl_80317E54
+/* 80317E44 00313AA4 57 1E 04 3E */ clrlwi r30, r24, 0x10
+/* 80317E48 00313AA8 7C 96 F0 AE */ lbzx r4, r22, r30
+/* 80317E4C 00313AAC 7C 80 07 75 */ extsb. r0, r4
+/* 80317E50 00313AB0 40 82 FD 68 */ bne lbl_80317BB8
+lbl_80317E54:
+/* 80317E54 00313AB4 54 A0 04 3E */ clrlwi r0, r5, 0x10
+/* 80317E58 00313AB8 28 00 00 03 */ cmplwi r0, 3
+/* 80317E5C 00313ABC 40 82 00 18 */ bne lbl_80317E74
+/* 80317E60 00313AC0 57 00 04 3E */ clrlwi r0, r24, 0x10
+/* 80317E64 00313AC4 7C 16 00 AE */ lbzx r0, r22, r0
+/* 80317E68 00313AC8 7C 00 07 75 */ extsb. r0, r0
+/* 80317E6C 00313ACC 41 82 00 08 */ beq lbl_80317E74
+/* 80317E70 00313AD0 3A 80 00 01 */ li r20, 1
+lbl_80317E74:
+/* 80317E74 00313AD4 2C 14 00 00 */ cmpwi r20, 0
+/* 80317E78 00313AD8 55 E0 04 3E */ clrlwi r0, r15, 0x10
+/* 80317E7C 00313ADC 38 60 00 00 */ li r3, 0
+/* 80317E80 00313AE0 7C 7F 01 AE */ stbx r3, r31, r0
+/* 80317E84 00313AE4 41 82 02 B4 */ beq lbl_80318138
+/* 80317E88 00313AE8 A0 81 00 10 */ lhz r4, 0x10(r1)
+/* 80317E8C 00313AEC 28 04 00 08 */ cmplwi r4, 8
+/* 80317E90 00313AF0 7C 85 23 78 */ mr r5, r4
+/* 80317E94 00313AF4 40 82 00 38 */ bne lbl_80317ECC
+/* 80317E98 00313AF8 28 12 00 01 */ cmplwi r18, 1
+/* 80317E9C 00313AFC 41 82 00 10 */ beq lbl_80317EAC
+/* 80317EA0 00313B00 20 12 00 08 */ subfic r0, r18, 8
+/* 80317EA4 00313B04 54 05 04 3E */ clrlwi r5, r0, 0x10
+/* 80317EA8 00313B08 48 00 00 34 */ b lbl_80317EDC
+lbl_80317EAC:
+/* 80317EAC 00313B0C 56 23 04 3E */ clrlwi r3, r17, 0x10
+/* 80317EB0 00313B10 38 00 00 02 */ li r0, 2
+/* 80317EB4 00313B14 28 03 00 01 */ cmplwi r3, 1
+/* 80317EB8 00313B18 41 82 00 08 */ beq lbl_80317EC0
+/* 80317EBC 00313B1C 38 03 00 01 */ addi r0, r3, 1
+lbl_80317EC0:
+/* 80317EC0 00313B20 20 00 00 08 */ subfic r0, r0, 8
+/* 80317EC4 00313B24 54 05 04 3E */ clrlwi r5, r0, 0x10
+/* 80317EC8 00313B28 48 00 00 14 */ b lbl_80317EDC
+lbl_80317ECC:
+/* 80317ECC 00313B2C 28 04 00 07 */ cmplwi r4, 7
+/* 80317ED0 00313B30 40 82 00 0C */ bne lbl_80317EDC
+/* 80317ED4 00313B34 7C 11 20 50 */ subf r0, r17, r4
+/* 80317ED8 00313B38 54 05 04 3E */ clrlwi r5, r0, 0x10
+lbl_80317EDC:
+/* 80317EDC 00313B3C 38 05 00 02 */ addi r0, r5, 2
+/* 80317EE0 00313B40 54 00 04 3E */ clrlwi r0, r0, 0x10
+/* 80317EE4 00313B44 7C 00 20 40 */ cmplw r0, r4
+/* 80317EE8 00313B48 40 80 00 50 */ bge lbl_80317F38
+/* 80317EEC 00313B4C 7C 00 20 50 */ subf r0, r0, r4
+/* 80317EF0 00313B50 38 E0 FF FF */ li r7, -1
+/* 80317EF4 00313B54 54 00 04 3E */ clrlwi r0, r0, 0x10
+/* 80317EF8 00313B58 7C DF 02 14 */ add r6, r31, r0
+/* 80317EFC 00313B5C 38 C6 FF FF */ addi r6, r6, -1
+/* 80317F00 00313B60 48 00 00 20 */ b lbl_80317F20
+lbl_80317F04:
+/* 80317F04 00313B64 A0 01 00 10 */ lhz r0, 0x10(r1)
+/* 80317F08 00313B68 7C E3 07 34 */ extsh r3, r7
+/* 80317F0C 00313B6C 38 E7 00 01 */ addi r7, r7, 1
+/* 80317F10 00313B70 7C 86 00 AE */ lbzx r4, r6, r0
+/* 80317F14 00313B74 7C 1F 02 14 */ add r0, r31, r0
+/* 80317F18 00313B78 38 C6 00 01 */ addi r6, r6, 1
+/* 80317F1C 00313B7C 7C 83 01 AE */ stbx r4, r3, r0
+lbl_80317F20:
+/* 80317F20 00313B80 A0 61 00 0E */ lhz r3, 0xe(r1)
+/* 80317F24 00313B84 7C E4 07 34 */ extsh r4, r7
+/* 80317F28 00313B88 38 03 00 01 */ addi r0, r3, 1
+/* 80317F2C 00313B8C 7C 04 00 00 */ cmpw r4, r0
+/* 80317F30 00313B90 41 80 FF D4 */ blt lbl_80317F04
+/* 80317F34 00313B94 48 00 01 A4 */ b lbl_803180D8
+lbl_80317F38:
+/* 80317F38 00313B98 40 81 01 A0 */ ble lbl_803180D8
+/* 80317F3C 00313B9C A0 61 00 0E */ lhz r3, 0xe(r1)
+/* 80317F40 00313BA0 7C 04 00 50 */ subf r0, r4, r0
+/* 80317F44 00313BA4 54 00 04 3E */ clrlwi r0, r0, 0x10
+/* 80317F48 00313BA8 38 E3 00 01 */ addi r7, r3, 1
+/* 80317F4C 00313BAC 7C E6 07 34 */ extsh r6, r7
+/* 80317F50 00313BB0 2C 86 00 00 */ cmpwi cr1, r6, 0
+/* 80317F54 00313BB4 41 84 01 84 */ blt cr1, lbl_803180D8
+/* 80317F58 00313BB8 39 06 00 01 */ addi r8, r6, 1
+/* 80317F5C 00313BBC 7D 03 07 34 */ extsh r3, r8
+/* 80317F60 00313BC0 2C 03 00 08 */ cmpwi r3, 8
+/* 80317F64 00313BC4 40 81 01 3C */ ble lbl_803180A0
+/* 80317F68 00313BC8 38 80 00 00 */ li r4, 0
+/* 80317F6C 00313BCC 38 60 00 00 */ li r3, 0
+/* 80317F70 00313BD0 41 84 00 10 */ blt cr1, lbl_80317F80
+/* 80317F74 00313BD4 2C 06 80 01 */ cmpwi r6, -32767
+/* 80317F78 00313BD8 41 80 00 08 */ blt lbl_80317F80
+/* 80317F7C 00313BDC 38 60 00 01 */ li r3, 1
+lbl_80317F80:
+/* 80317F80 00313BE0 2C 03 00 00 */ cmpwi r3, 0
+/* 80317F84 00313BE4 41 82 00 34 */ beq lbl_80317FB8
+/* 80317F88 00313BE8 7C E3 07 34 */ extsh r3, r7
+/* 80317F8C 00313BEC 38 E0 00 01 */ li r7, 1
+/* 80317F90 00313BF0 54 63 00 20 */ rlwinm r3, r3, 0, 0, 0x10
+/* 80317F94 00313BF4 7C 63 07 35 */ extsh. r3, r3
+/* 80317F98 00313BF8 40 82 00 14 */ bne lbl_80317FAC
+/* 80317F9C 00313BFC 55 03 00 20 */ rlwinm r3, r8, 0, 0, 0x10
+/* 80317FA0 00313C00 7C 63 07 35 */ extsh. r3, r3
+/* 80317FA4 00313C04 41 82 00 08 */ beq lbl_80317FAC
+/* 80317FA8 00313C08 38 E0 00 00 */ li r7, 0
+lbl_80317FAC:
+/* 80317FAC 00313C0C 2C 07 00 00 */ cmpwi r7, 0
+/* 80317FB0 00313C10 41 82 00 08 */ beq lbl_80317FB8
+/* 80317FB4 00313C14 38 80 00 01 */ li r4, 1
+lbl_80317FB8:
+/* 80317FB8 00313C18 2C 04 00 00 */ cmpwi r4, 0
+/* 80317FBC 00313C1C 41 82 00 E4 */ beq lbl_803180A0
+/* 80317FC0 00313C20 7C 9F 02 14 */ add r4, r31, r0
+/* 80317FC4 00313C24 54 C3 E8 FE */ srwi r3, r6, 3
+/* 80317FC8 00313C28 7C 86 22 14 */ add r4, r6, r4
+/* 80317FCC 00313C2C 7C 69 03 A6 */ mtctr r3
+/* 80317FD0 00313C30 2C 06 00 08 */ cmpwi r6, 8
+/* 80317FD4 00313C34 41 80 00 CC */ blt lbl_803180A0
+lbl_80317FD8:
+/* 80317FD8 00313C38 A1 01 00 10 */ lhz r8, 0x10(r1)
+/* 80317FDC 00313C3C 7C C3 07 34 */ extsh r3, r6
+/* 80317FE0 00313C40 38 C6 FF F8 */ addi r6, r6, -8
+/* 80317FE4 00313C44 7C FF 42 14 */ add r7, r31, r8
+/* 80317FE8 00313C48 7C E3 38 AE */ lbzx r7, r3, r7
+/* 80317FEC 00313C4C 7C E4 41 AE */ stbx r7, r4, r8
+/* 80317FF0 00313C50 A0 E1 00 10 */ lhz r7, 0x10(r1)
+/* 80317FF4 00313C54 7D 1F 3A 14 */ add r8, r31, r7
+/* 80317FF8 00313C58 7C E4 3A 14 */ add r7, r4, r7
+/* 80317FFC 00313C5C 7D 03 42 14 */ add r8, r3, r8
+/* 80318000 00313C60 89 08 FF FF */ lbz r8, -1(r8)
+/* 80318004 00313C64 99 07 FF FF */ stb r8, -1(r7)
+/* 80318008 00313C68 A0 E1 00 10 */ lhz r7, 0x10(r1)
+/* 8031800C 00313C6C 7D 1F 3A 14 */ add r8, r31, r7
+/* 80318010 00313C70 7C E4 3A 14 */ add r7, r4, r7
+/* 80318014 00313C74 7D 03 42 14 */ add r8, r3, r8
+/* 80318018 00313C78 89 08 FF FE */ lbz r8, -2(r8)
+/* 8031801C 00313C7C 99 07 FF FE */ stb r8, -2(r7)
+/* 80318020 00313C80 A0 E1 00 10 */ lhz r7, 0x10(r1)
+/* 80318024 00313C84 7D 1F 3A 14 */ add r8, r31, r7
+/* 80318028 00313C88 7C E4 3A 14 */ add r7, r4, r7
+/* 8031802C 00313C8C 7D 03 42 14 */ add r8, r3, r8
+/* 80318030 00313C90 89 08 FF FD */ lbz r8, -3(r8)
+/* 80318034 00313C94 99 07 FF FD */ stb r8, -3(r7)
+/* 80318038 00313C98 A0 E1 00 10 */ lhz r7, 0x10(r1)
+/* 8031803C 00313C9C 7D 1F 3A 14 */ add r8, r31, r7
+/* 80318040 00313CA0 7C E4 3A 14 */ add r7, r4, r7
+/* 80318044 00313CA4 7D 03 42 14 */ add r8, r3, r8
+/* 80318048 00313CA8 89 08 FF FC */ lbz r8, -4(r8)
+/* 8031804C 00313CAC 99 07 FF FC */ stb r8, -4(r7)
+/* 80318050 00313CB0 A0 E1 00 10 */ lhz r7, 0x10(r1)
+/* 80318054 00313CB4 7D 1F 3A 14 */ add r8, r31, r7
+/* 80318058 00313CB8 7C E4 3A 14 */ add r7, r4, r7
+/* 8031805C 00313CBC 7D 03 42 14 */ add r8, r3, r8
+/* 80318060 00313CC0 89 08 FF FB */ lbz r8, -5(r8)
+/* 80318064 00313CC4 99 07 FF FB */ stb r8, -5(r7)
+/* 80318068 00313CC8 A0 E1 00 10 */ lhz r7, 0x10(r1)
+/* 8031806C 00313CCC 7D 1F 3A 14 */ add r8, r31, r7
+/* 80318070 00313CD0 7C E4 3A 14 */ add r7, r4, r7
+/* 80318074 00313CD4 7D 03 42 14 */ add r8, r3, r8
+/* 80318078 00313CD8 89 08 FF FA */ lbz r8, -6(r8)
+/* 8031807C 00313CDC 99 07 FF FA */ stb r8, -6(r7)
+/* 80318080 00313CE0 A0 E1 00 10 */ lhz r7, 0x10(r1)
+/* 80318084 00313CE4 7D 1F 3A 14 */ add r8, r31, r7
+/* 80318088 00313CE8 7C E4 3A 14 */ add r7, r4, r7
+/* 8031808C 00313CEC 7C 63 42 14 */ add r3, r3, r8
+/* 80318090 00313CF0 38 84 FF F8 */ addi r4, r4, -8
+/* 80318094 00313CF4 88 63 FF F9 */ lbz r3, -7(r3)
+/* 80318098 00313CF8 98 67 FF F9 */ stb r3, -7(r7)
+/* 8031809C 00313CFC 42 00 FF 3C */ bdnz lbl_80317FD8
+lbl_803180A0:
+/* 803180A0 00313D00 7C C4 07 35 */ extsh. r4, r6
+/* 803180A4 00313D04 7C 7F 02 14 */ add r3, r31, r0
+/* 803180A8 00313D08 38 04 00 01 */ addi r0, r4, 1
+/* 803180AC 00313D0C 7C E4 1A 14 */ add r7, r4, r3
+/* 803180B0 00313D10 7C 09 03 A6 */ mtctr r0
+/* 803180B4 00313D14 41 80 00 24 */ blt lbl_803180D8
+lbl_803180B8:
+/* 803180B8 00313D18 A0 81 00 10 */ lhz r4, 0x10(r1)
+/* 803180BC 00313D1C 7C C3 07 34 */ extsh r3, r6
+/* 803180C0 00313D20 38 C6 FF FF */ addi r6, r6, -1
+/* 803180C4 00313D24 7C 1F 22 14 */ add r0, r31, r4
+/* 803180C8 00313D28 7C 03 00 AE */ lbzx r0, r3, r0
+/* 803180CC 00313D2C 7C 07 21 AE */ stbx r0, r7, r4
+/* 803180D0 00313D30 38 E7 FF FF */ addi r7, r7, -1
+/* 803180D4 00313D34 42 00 FF E4 */ bdnz lbl_803180B8
+lbl_803180D8:
+/* 803180D8 00313D38 A0 01 00 10 */ lhz r0, 0x10(r1)
+/* 803180DC 00313D3C 2C 00 00 00 */ cmpwi r0, 0
+/* 803180E0 00313D40 41 82 00 54 */ beq lbl_80318134
+/* 803180E4 00313D44 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 803180E8 00313D48 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 803180EC 00313D4C 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 803180F0 00313D50 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 803180F4 00313D54 28 00 00 02 */ cmplwi r0, 2
+/* 803180F8 00313D58 41 82 00 24 */ beq lbl_8031811C
+/* 803180FC 00313D5C 54 A0 04 3E */ clrlwi r0, r5, 0x10
+/* 80318100 00313D60 38 60 00 7E */ li r3, 0x7e
+/* 80318104 00313D64 7C 7F 01 AE */ stbx r3, r31, r0
+/* 80318108 00313D68 38 A5 00 01 */ addi r5, r5, 1
+/* 8031810C 00313D6C 54 A0 04 3E */ clrlwi r0, r5, 0x10
+/* 80318110 00313D70 38 60 00 31 */ li r3, 0x31
+/* 80318114 00313D74 7C 7F 01 AE */ stbx r3, r31, r0
+/* 80318118 00313D78 48 00 00 1C */ b lbl_80318134
+lbl_8031811C:
+/* 8031811C 00313D7C 54 A0 04 3E */ clrlwi r0, r5, 0x10
+/* 80318120 00313D80 38 60 00 5F */ li r3, 0x5f
+/* 80318124 00313D84 7C 7F 01 AE */ stbx r3, r31, r0
+/* 80318128 00313D88 38 A5 00 01 */ addi r5, r5, 1
+/* 8031812C 00313D8C 54 A0 04 3E */ clrlwi r0, r5, 0x10
+/* 80318130 00313D90 7C 7F 01 AE */ stbx r3, r31, r0
+lbl_80318134:
+/* 80318134 00313D94 3A A0 00 01 */ li r21, 1
+lbl_80318138:
+/* 80318138 00313D98 80 61 00 08 */ lwz r3, 8(r1)
+/* 8031813C 00313D9C 4B FE D1 A5 */ bl VFiPFSTR_GetCodeMode
+/* 80318140 00313DA0 28 03 00 02 */ cmplwi r3, 2
+/* 80318144 00313DA4 40 82 00 8C */ bne lbl_803181D0
+/* 80318148 00313DA8 3A A0 00 01 */ li r21, 1
+/* 8031814C 00313DAC 48 00 00 84 */ b lbl_803181D0
+/* 80318150 00313DB0 48 00 00 20 */ b lbl_80318170
+lbl_80318154:
+/* 80318154 00313DB4 7C 60 07 74 */ extsb r0, r3
+/* 80318158 00313DB8 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 8031815C 00313DBC 41 82 00 10 */ beq lbl_8031816C
+/* 80318160 00313DC0 2C 00 00 20 */ cmpwi r0, 0x20
+/* 80318164 00313DC4 41 82 00 08 */ beq lbl_8031816C
+/* 80318168 00313DC8 3A 80 00 01 */ li r20, 1
+lbl_8031816C:
+/* 8031816C 00313DCC 3A D6 00 01 */ addi r22, r22, 1
+lbl_80318170:
+/* 80318170 00313DD0 88 76 00 00 */ lbz r3, 0(r22)
+/* 80318174 00313DD4 7C 60 07 75 */ extsb. r0, r3
+/* 80318178 00313DD8 41 82 00 0C */ beq lbl_80318184
+/* 8031817C 00313DDC 2C 14 00 00 */ cmpwi r20, 0
+/* 80318180 00313DE0 41 82 FF D4 */ beq lbl_80318154
+lbl_80318184:
+/* 80318184 00313DE4 2C 14 00 00 */ cmpwi r20, 0
+/* 80318188 00313DE8 41 82 00 3C */ beq lbl_803181C4
+/* 8031818C 00313DEC 38 60 00 30 */ li r3, 0x30
+/* 80318190 00313DF0 38 A0 00 01 */ li r5, 1
+/* 80318194 00313DF4 38 80 00 02 */ li r4, 2
+/* 80318198 00313DF8 38 00 00 00 */ li r0, 0
+/* 8031819C 00313DFC 98 BF 00 00 */ stb r5, 0(r31)
+/* 803181A0 00313E00 98 9F 00 01 */ stb r4, 1(r31)
+/* 803181A4 00313E04 98 7F 00 02 */ stb r3, 2(r31)
+/* 803181A8 00313E08 98 7F 00 03 */ stb r3, 3(r31)
+/* 803181AC 00313E0C 98 7F 00 04 */ stb r3, 4(r31)
+/* 803181B0 00313E10 98 7F 00 05 */ stb r3, 5(r31)
+/* 803181B4 00313E14 98 7F 00 06 */ stb r3, 6(r31)
+/* 803181B8 00313E18 98 7F 00 07 */ stb r3, 7(r31)
+/* 803181BC 00313E1C 98 1F 00 08 */ stb r0, 8(r31)
+/* 803181C0 00313E20 48 00 00 0C */ b lbl_803181CC
+lbl_803181C4:
+/* 803181C4 00313E24 38 00 00 00 */ li r0, 0
+/* 803181C8 00313E28 98 1F 00 00 */ stb r0, 0(r31)
+lbl_803181CC:
+/* 803181CC 00313E2C 3A A0 00 01 */ li r21, 1
+lbl_803181D0:
+/* 803181D0 00313E30 39 61 00 60 */ addi r11, r1, 0x60
+/* 803181D4 00313E34 7E A3 AB 78 */ mr r3, r21
+/* 803181D8 00313E38 4B EA EF 69 */ bl __restore_gpr
+/* 803181DC 00313E3C 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 803181E0 00313E40 7C 08 03 A6 */ mtlr r0
+/* 803181E4 00313E44 38 21 00 60 */ addi r1, r1, 0x60
+/* 803181E8 00313E48 4E 80 00 20 */ blr
+
+.global VFiPFPATH_parseShortNameNumeric
+VFiPFPATH_parseShortNameNumeric:
+/* 803181EC 00313E4C 2C 04 00 00 */ cmpwi r4, 0
+/* 803181F0 00313E50 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803181F4 00313E54 40 82 00 0C */ bne lbl_80318200
+/* 803181F8 00313E58 38 60 00 00 */ li r3, 0
+/* 803181FC 00313E5C 48 00 01 C4 */ b lbl_803183C0
+lbl_80318200:
+/* 80318200 00313E60 38 C3 00 01 */ addi r6, r3, 1
+/* 80318204 00313E64 38 A0 00 01 */ li r5, 1
+/* 80318208 00313E68 48 00 00 0C */ b lbl_80318214
+lbl_8031820C:
+/* 8031820C 00313E6C 38 A5 00 01 */ addi r5, r5, 1
+/* 80318210 00313E70 38 C6 00 01 */ addi r6, r6, 1
+lbl_80318214:
+/* 80318214 00313E74 88 06 00 00 */ lbz r0, 0(r6)
+/* 80318218 00313E78 2C 00 00 7E */ cmpwi r0, 0x7e
+/* 8031821C 00313E7C 40 82 FF F0 */ bne lbl_8031820C
+/* 80318220 00313E80 38 C5 00 01 */ addi r6, r5, 1
+/* 80318224 00313E84 7C E3 32 14 */ add r7, r3, r6
+/* 80318228 00313E88 48 00 00 0C */ b lbl_80318234
+lbl_8031822C:
+/* 8031822C 00313E8C 38 C6 00 01 */ addi r6, r6, 1
+/* 80318230 00313E90 38 E7 00 01 */ addi r7, r7, 1
+lbl_80318234:
+/* 80318234 00313E94 89 07 00 00 */ lbz r8, 0(r7)
+/* 80318238 00313E98 7D 00 07 74 */ extsb r0, r8
+/* 8031823C 00313E9C 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 80318240 00313EA0 41 82 00 0C */ beq lbl_8031824C
+/* 80318244 00313EA4 2C 00 00 00 */ cmpwi r0, 0
+/* 80318248 00313EA8 40 82 FF E4 */ bne lbl_8031822C
+lbl_8031824C:
+/* 8031824C 00313EAC 7D 00 07 74 */ extsb r0, r8
+/* 80318250 00313EB0 39 66 00 01 */ addi r11, r6, 1
+/* 80318254 00313EB4 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 80318258 00313EB8 40 82 00 34 */ bne lbl_8031828C
+/* 8031825C 00313EBC 7C 03 58 AE */ lbzx r0, r3, r11
+/* 80318260 00313EC0 7C 00 07 75 */ extsb. r0, r0
+/* 80318264 00313EC4 41 82 00 28 */ beq lbl_8031828C
+/* 80318268 00313EC8 39 8B 00 01 */ addi r12, r11, 1
+/* 8031826C 00313ECC 7C E3 62 14 */ add r7, r3, r12
+/* 80318270 00313ED0 48 00 00 0C */ b lbl_8031827C
+lbl_80318274:
+/* 80318274 00313ED4 39 8C 00 01 */ addi r12, r12, 1
+/* 80318278 00313ED8 38 E7 00 01 */ addi r7, r7, 1
+lbl_8031827C:
+/* 8031827C 00313EDC 88 07 00 00 */ lbz r0, 0(r7)
+/* 80318280 00313EE0 7C 00 07 75 */ extsb. r0, r0
+/* 80318284 00313EE4 40 82 FF F0 */ bne lbl_80318274
+/* 80318288 00313EE8 48 00 00 08 */ b lbl_80318290
+lbl_8031828C:
+/* 8031828C 00313EEC 7D 6C 5B 78 */ mr r12, r11
+lbl_80318290:
+/* 80318290 00313EF0 3C E0 CC CD */ lis r7, 0xCCCCCCCD@ha
+/* 80318294 00313EF4 39 21 00 08 */ addi r9, r1, 8
+/* 80318298 00313EF8 39 07 CC CD */ addi r8, r7, 0xCCCCCCCD@l
+/* 8031829C 00313EFC 39 40 00 00 */ li r10, 0
+/* 803182A0 00313F00 48 00 00 2C */ b lbl_803182CC
+lbl_803182A4:
+/* 803182A4 00313F04 7C E8 20 16 */ mulhwu r7, r8, r4
+/* 803182A8 00313F08 39 4A 00 01 */ addi r10, r10, 1
+/* 803182AC 00313F0C 7C E0 3B 78 */ mr r0, r7
+/* 803182B0 00313F10 54 E7 E8 FE */ srwi r7, r7, 3
+/* 803182B4 00313F14 1C E7 00 0A */ mulli r7, r7, 0xa
+/* 803182B8 00313F18 7C E7 20 50 */ subf r7, r7, r4
+/* 803182BC 00313F1C 54 04 E8 FE */ srwi r4, r0, 3
+/* 803182C0 00313F20 38 07 00 30 */ addi r0, r7, 0x30
+/* 803182C4 00313F24 98 09 00 00 */ stb r0, 0(r9)
+/* 803182C8 00313F28 39 29 00 01 */ addi r9, r9, 1
+lbl_803182CC:
+/* 803182CC 00313F2C 2C 04 00 00 */ cmpwi r4, 0
+/* 803182D0 00313F30 40 82 FF D4 */ bne lbl_803182A4
+/* 803182D4 00313F34 7D 05 52 14 */ add r8, r5, r10
+/* 803182D8 00313F38 7C 08 58 40 */ cmplw r8, r11
+/* 803182DC 00313F3C 41 80 00 44 */ blt lbl_80318320
+/* 803182E0 00313F40 39 28 00 01 */ addi r9, r8, 1
+/* 803182E4 00313F44 28 09 00 08 */ cmplwi r9, 8
+/* 803182E8 00313F48 40 81 00 08 */ ble lbl_803182F0
+/* 803182EC 00313F4C 39 20 00 08 */ li r9, 8
+lbl_803182F0:
+/* 803182F0 00313F50 7C 03 60 AE */ lbzx r0, r3, r12
+/* 803182F4 00313F54 7C E3 4A 14 */ add r7, r3, r9
+/* 803182F8 00313F58 7C 83 5A 14 */ add r4, r3, r11
+/* 803182FC 00313F5C 98 07 00 04 */ stb r0, 4(r7)
+/* 80318300 00313F60 88 04 00 02 */ lbz r0, 2(r4)
+/* 80318304 00313F64 98 07 00 03 */ stb r0, 3(r7)
+/* 80318308 00313F68 88 04 00 01 */ lbz r0, 1(r4)
+/* 8031830C 00313F6C 98 07 00 02 */ stb r0, 2(r7)
+/* 80318310 00313F70 7C 03 58 AE */ lbzx r0, r3, r11
+/* 80318314 00313F74 98 07 00 01 */ stb r0, 1(r7)
+/* 80318318 00313F78 7C 03 30 AE */ lbzx r0, r3, r6
+/* 8031831C 00313F7C 7C 03 49 AE */ stbx r0, r3, r9
+lbl_80318320:
+/* 80318320 00313F80 28 08 00 08 */ cmplwi r8, 8
+/* 80318324 00313F84 41 80 00 08 */ blt lbl_8031832C
+/* 80318328 00313F88 20 AA 00 07 */ subfic r5, r10, 7
+lbl_8031832C:
+/* 8031832C 00313F8C 38 00 00 7E */ li r0, 0x7e
+/* 80318330 00313F90 2C 0A 00 00 */ cmpwi r10, 0
+/* 80318334 00313F94 7C 03 29 AE */ stbx r0, r3, r5
+/* 80318338 00313F98 38 81 00 08 */ addi r4, r1, 8
+/* 8031833C 00313F9C 38 A5 00 01 */ addi r5, r5, 1
+/* 80318340 00313FA0 7C 84 52 14 */ add r4, r4, r10
+/* 80318344 00313FA4 7C 63 2A 14 */ add r3, r3, r5
+/* 80318348 00313FA8 41 82 00 74 */ beq lbl_803183BC
+/* 8031834C 00313FAC 55 40 E8 FF */ rlwinm. r0, r10, 0x1d, 3, 0x1f
+/* 80318350 00313FB0 7C 09 03 A6 */ mtctr r0
+/* 80318354 00313FB4 41 82 00 54 */ beq lbl_803183A8
+lbl_80318358:
+/* 80318358 00313FB8 88 04 FF FF */ lbz r0, -1(r4)
+/* 8031835C 00313FBC 98 03 00 00 */ stb r0, 0(r3)
+/* 80318360 00313FC0 88 04 FF FE */ lbz r0, -2(r4)
+/* 80318364 00313FC4 98 03 00 01 */ stb r0, 1(r3)
+/* 80318368 00313FC8 88 04 FF FD */ lbz r0, -3(r4)
+/* 8031836C 00313FCC 98 03 00 02 */ stb r0, 2(r3)
+/* 80318370 00313FD0 88 04 FF FC */ lbz r0, -4(r4)
+/* 80318374 00313FD4 98 03 00 03 */ stb r0, 3(r3)
+/* 80318378 00313FD8 88 04 FF FB */ lbz r0, -5(r4)
+/* 8031837C 00313FDC 98 03 00 04 */ stb r0, 4(r3)
+/* 80318380 00313FE0 88 04 FF FA */ lbz r0, -6(r4)
+/* 80318384 00313FE4 98 03 00 05 */ stb r0, 5(r3)
+/* 80318388 00313FE8 88 04 FF F9 */ lbz r0, -7(r4)
+/* 8031838C 00313FEC 98 03 00 06 */ stb r0, 6(r3)
+/* 80318390 00313FF0 8C 04 FF F8 */ lbzu r0, -8(r4)
+/* 80318394 00313FF4 98 03 00 07 */ stb r0, 7(r3)
+/* 80318398 00313FF8 38 63 00 08 */ addi r3, r3, 8
+/* 8031839C 00313FFC 42 00 FF BC */ bdnz lbl_80318358
+/* 803183A0 00314000 71 4A 00 07 */ andi. r10, r10, 7
+/* 803183A4 00314004 41 82 00 18 */ beq lbl_803183BC
+lbl_803183A8:
+/* 803183A8 00314008 7D 49 03 A6 */ mtctr r10
+lbl_803183AC:
+/* 803183AC 0031400C 8C 04 FF FF */ lbzu r0, -1(r4)
+/* 803183B0 00314010 98 03 00 00 */ stb r0, 0(r3)
+/* 803183B4 00314014 38 63 00 01 */ addi r3, r3, 1
+/* 803183B8 00314018 42 00 FF F4 */ bdnz lbl_803183AC
+lbl_803183BC:
+/* 803183BC 0031401C 38 60 00 00 */ li r3, 0
+lbl_803183C0:
+/* 803183C0 00314020 38 21 00 10 */ addi r1, r1, 0x10
+/* 803183C4 00314024 4E 80 00 20 */ blr
+
+.global VFiPFPATH_CheckExtShortNameSignature
+VFiPFPATH_CheckExtShortNameSignature:
+/* 803183C8 00314028 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 803183CC 0031402C 7C 08 02 A6 */ mflr r0
+/* 803183D0 00314030 2C 03 00 00 */ cmpwi r3, 0
+/* 803183D4 00314034 90 01 00 24 */ stw r0, 0x24(r1)
+/* 803183D8 00314038 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 803183DC 0031403C 3B E0 00 00 */ li r31, 0
+/* 803183E0 00314040 88 8D 8D 1C */ lbz r4, lbl_8063DFDC-_SDA_BASE_(r13)
+/* 803183E4 00314044 88 0D 8D 1D */ lbz r0, lbl_8063DFDD-_SDA_BASE_(r13)
+/* 803183E8 00314048 98 81 00 08 */ stb r4, 8(r1)
+/* 803183EC 0031404C 98 01 00 09 */ stb r0, 9(r1)
+/* 803183F0 00314050 40 82 00 0C */ bne lbl_803183FC
+/* 803183F4 00314054 38 60 00 0A */ li r3, 0xa
+/* 803183F8 00314058 48 00 00 28 */ b lbl_80318420
+lbl_803183FC:
+/* 803183FC 0031405C 38 81 00 08 */ addi r4, r1, 8
+/* 80318400 00314060 38 A0 00 01 */ li r5, 1
+/* 80318404 00314064 38 C0 00 00 */ li r6, 0
+/* 80318408 00314068 38 E0 00 02 */ li r7, 2
+/* 8031840C 0031406C 4B FE D2 55 */ bl VFiPFSTR_StrNCmp
+/* 80318410 00314070 2C 03 00 00 */ cmpwi r3, 0
+/* 80318414 00314074 40 82 00 08 */ bne lbl_8031841C
+/* 80318418 00314078 3B E0 00 01 */ li r31, 1
+lbl_8031841C:
+/* 8031841C 0031407C 7F E3 FB 78 */ mr r3, r31
+lbl_80318420:
+/* 80318420 00314080 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80318424 00314084 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80318428 00314088 7C 08 03 A6 */ mtlr r0
+/* 8031842C 0031408C 38 21 00 20 */ addi r1, r1, 0x20
+/* 80318430 00314090 4E 80 00 20 */ blr
+
+.global VFiPFPATH_CheckExtShortName
+VFiPFPATH_CheckExtShortName:
+/* 80318434 00314094 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80318438 00314098 7C 08 02 A6 */ mflr r0
+/* 8031843C 0031409C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80318440 003140A0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80318444 003140A4 4B EA EC D9 */ bl _savegpr_24
+/* 80318448 003140A8 88 C2 A4 A4 */ lbz r6, lbl_80642AA4-_SDA2_BASE_(r2)
+/* 8031844C 003140AC 2C 03 00 00 */ cmpwi r3, 0
+/* 80318450 003140B0 88 02 A4 A5 */ lbz r0, lbl_80642AA5-_SDA2_BASE_(r2)
+/* 80318454 003140B4 7C 7E 1B 78 */ mr r30, r3
+/* 80318458 003140B8 98 C1 00 08 */ stb r6, 8(r1)
+/* 8031845C 003140BC 7C 9F 23 78 */ mr r31, r4
+/* 80318460 003140C0 7C B8 2B 78 */ mr r24, r5
+/* 80318464 003140C4 3B 60 00 00 */ li r27, 0
+/* 80318468 003140C8 98 01 00 09 */ stb r0, 9(r1)
+/* 8031846C 003140CC 3B 20 00 00 */ li r25, 0
+/* 80318470 003140D0 40 82 00 0C */ bne lbl_8031847C
+/* 80318474 003140D4 38 60 00 0A */ li r3, 0xa
+/* 80318478 003140D8 48 00 02 C8 */ b lbl_80318740
+lbl_8031847C:
+/* 8031847C 003140DC 7F E5 FB 78 */ mr r5, r31
+/* 80318480 003140E0 38 81 00 08 */ addi r4, r1, 8
+/* 80318484 003140E4 38 C0 00 00 */ li r6, 0
+/* 80318488 003140E8 38 E0 00 02 */ li r7, 2
+/* 8031848C 003140EC 4B FE D1 D5 */ bl VFiPFSTR_StrNCmp
+/* 80318490 003140F0 2C 03 00 00 */ cmpwi r3, 0
+/* 80318494 003140F4 41 82 00 84 */ beq lbl_80318518
+/* 80318498 003140F8 7F C3 F3 78 */ mr r3, r30
+/* 8031849C 003140FC 7F E5 FB 78 */ mr r5, r31
+/* 803184A0 00314100 38 8D 8D 18 */ addi r4, r13, lbl_8063DFD8-_SDA_BASE_
+/* 803184A4 00314104 38 C0 00 00 */ li r6, 0
+/* 803184A8 00314108 38 E0 00 01 */ li r7, 1
+/* 803184AC 0031410C 4B FE D1 B5 */ bl VFiPFSTR_StrNCmp
+/* 803184B0 00314110 2C 03 00 00 */ cmpwi r3, 0
+/* 803184B4 00314114 40 82 00 44 */ bne lbl_803184F8
+/* 803184B8 00314118 7F C3 F3 78 */ mr r3, r30
+/* 803184BC 0031411C 7F E5 FB 78 */ mr r5, r31
+/* 803184C0 00314120 38 8D 8D 18 */ addi r4, r13, lbl_8063DFD8-_SDA_BASE_
+/* 803184C4 00314124 38 C0 00 01 */ li r6, 1
+/* 803184C8 00314128 38 E0 00 01 */ li r7, 1
+/* 803184CC 0031412C 4B FE D1 95 */ bl VFiPFSTR_StrNCmp
+/* 803184D0 00314130 2C 03 00 00 */ cmpwi r3, 0
+/* 803184D4 00314134 41 82 00 44 */ beq lbl_80318518
+/* 803184D8 00314138 7F C3 F3 78 */ mr r3, r30
+/* 803184DC 0031413C 7F E5 FB 78 */ mr r5, r31
+/* 803184E0 00314140 38 8D 8D 14 */ addi r4, r13, lbl_8063DFD4-_SDA_BASE_
+/* 803184E4 00314144 38 C0 00 00 */ li r6, 0
+/* 803184E8 00314148 38 E0 00 01 */ li r7, 1
+/* 803184EC 0031414C 4B FE D1 75 */ bl VFiPFSTR_StrNCmp
+/* 803184F0 00314150 2C 03 00 00 */ cmpwi r3, 0
+/* 803184F4 00314154 41 82 00 24 */ beq lbl_80318518
+lbl_803184F8:
+/* 803184F8 00314158 7F C3 F3 78 */ mr r3, r30
+/* 803184FC 0031415C 7F E5 FB 78 */ mr r5, r31
+/* 80318500 00314160 38 8D 8D 14 */ addi r4, r13, lbl_8063DFD4-_SDA_BASE_
+/* 80318504 00314164 38 C0 00 00 */ li r6, 0
+/* 80318508 00314168 38 E0 00 01 */ li r7, 1
+/* 8031850C 0031416C 4B FE D1 55 */ bl VFiPFSTR_StrNCmp
+/* 80318510 00314170 2C 03 00 00 */ cmpwi r3, 0
+/* 80318514 00314174 40 82 02 28 */ bne lbl_8031873C
+lbl_80318518:
+/* 80318518 00314178 3B 40 00 02 */ li r26, 2
+/* 8031851C 0031417C 3B 80 00 04 */ li r28, 4
+/* 80318520 00314180 48 00 00 DC */ b lbl_803185FC
+lbl_80318524:
+/* 80318524 00314184 7F C3 F3 78 */ mr r3, r30
+/* 80318528 00314188 4B FE CD B9 */ bl VFiPFSTR_GetCodeMode
+/* 8031852C 0031418C 28 03 00 01 */ cmplwi r3, 1
+/* 80318530 00314190 40 82 00 28 */ bne lbl_80318558
+/* 80318534 00314194 7F C3 F3 78 */ mr r3, r30
+/* 80318538 00314198 7F E4 FB 78 */ mr r4, r31
+/* 8031853C 0031419C 4B FE CD D5 */ bl VFiPFSTR_GetStrPos
+/* 80318540 003141A0 7F 40 07 34 */ extsh r0, r26
+/* 80318544 003141A4 7C 03 00 AE */ lbzx r0, r3, r0
+/* 80318548 003141A8 7C 03 07 74 */ extsb r3, r0
+/* 8031854C 003141AC 38 03 FF D0 */ addi r0, r3, -48
+/* 80318550 003141B0 7C 00 07 34 */ extsh r0, r0
+/* 80318554 003141B4 48 00 00 1C */ b lbl_80318570
+lbl_80318558:
+/* 80318558 003141B8 7F C3 F3 78 */ mr r3, r30
+/* 8031855C 003141BC 7F E4 FB 78 */ mr r4, r31
+/* 80318560 003141C0 4B FE CD B1 */ bl VFiPFSTR_GetStrPos
+/* 80318564 003141C4 7C 63 E2 2E */ lhzx r3, r3, r28
+/* 80318568 003141C8 38 03 FF D0 */ addi r0, r3, -48
+/* 8031856C 003141CC 7C 00 07 34 */ extsh r0, r0
+lbl_80318570:
+/* 80318570 003141D0 2C 00 00 00 */ cmpwi r0, 0
+/* 80318574 003141D4 41 80 00 0C */ blt lbl_80318580
+/* 80318578 003141D8 2C 00 00 09 */ cmpwi r0, 9
+/* 8031857C 003141DC 40 81 00 78 */ ble lbl_803185F4
+lbl_80318580:
+/* 80318580 003141E0 2C 18 00 00 */ cmpwi r24, 0
+/* 80318584 003141E4 41 82 01 10 */ beq lbl_80318694
+/* 80318588 003141E8 7F C3 F3 78 */ mr r3, r30
+/* 8031858C 003141EC 7F E5 FB 78 */ mr r5, r31
+/* 80318590 003141F0 7F 46 07 34 */ extsh r6, r26
+/* 80318594 003141F4 38 8D 8D 14 */ addi r4, r13, lbl_8063DFD4-_SDA_BASE_
+/* 80318598 003141F8 38 E0 00 01 */ li r7, 1
+/* 8031859C 003141FC 4B FE D0 C5 */ bl VFiPFSTR_StrNCmp
+/* 803185A0 00314200 2C 03 00 00 */ cmpwi r3, 0
+/* 803185A4 00314204 41 82 00 24 */ beq lbl_803185C8
+/* 803185A8 00314208 7F C3 F3 78 */ mr r3, r30
+/* 803185AC 0031420C 7F E5 FB 78 */ mr r5, r31
+/* 803185B0 00314210 7F 46 07 34 */ extsh r6, r26
+/* 803185B4 00314214 38 8D 8D 18 */ addi r4, r13, lbl_8063DFD8-_SDA_BASE_
+/* 803185B8 00314218 38 E0 00 01 */ li r7, 1
+/* 803185BC 0031421C 4B FE D0 A5 */ bl VFiPFSTR_StrNCmp
+/* 803185C0 00314220 2C 03 00 00 */ cmpwi r3, 0
+/* 803185C4 00314224 40 82 00 D0 */ bne lbl_80318694
+lbl_803185C8:
+/* 803185C8 00314228 28 18 00 01 */ cmplwi r24, 1
+/* 803185CC 0031422C 40 82 00 28 */ bne lbl_803185F4
+/* 803185D0 00314230 7F C3 F3 78 */ mr r3, r30
+/* 803185D4 00314234 7F E5 FB 78 */ mr r5, r31
+/* 803185D8 00314238 7F 46 07 34 */ extsh r6, r26
+/* 803185DC 0031423C 38 8D 8D 14 */ addi r4, r13, lbl_8063DFD4-_SDA_BASE_
+/* 803185E0 00314240 38 E0 00 01 */ li r7, 1
+/* 803185E4 00314244 4B FE D0 7D */ bl VFiPFSTR_StrNCmp
+/* 803185E8 00314248 2C 03 00 00 */ cmpwi r3, 0
+/* 803185EC 0031424C 40 82 00 08 */ bne lbl_803185F4
+/* 803185F0 00314250 3B 20 00 01 */ li r25, 1
+lbl_803185F4:
+/* 803185F4 00314254 3B 9C 00 02 */ addi r28, r28, 2
+/* 803185F8 00314258 3B 5A 00 01 */ addi r26, r26, 1
+lbl_803185FC:
+/* 803185FC 0031425C 7F 46 07 34 */ extsh r6, r26
+/* 80318600 00314260 2C 06 00 08 */ cmpwi r6, 8
+/* 80318604 00314264 40 80 00 90 */ bge lbl_80318694
+/* 80318608 00314268 7F C3 F3 78 */ mr r3, r30
+/* 8031860C 0031426C 7F E5 FB 78 */ mr r5, r31
+/* 80318610 00314270 3B A0 00 00 */ li r29, 0
+/* 80318614 00314274 38 8D 8D 0C */ addi r4, r13, lbl_8063DFCC-_SDA_BASE_
+/* 80318618 00314278 38 E0 00 01 */ li r7, 1
+/* 8031861C 0031427C 4B FE D0 45 */ bl VFiPFSTR_StrNCmp
+/* 80318620 00314280 2C 03 00 00 */ cmpwi r3, 0
+/* 80318624 00314284 41 82 00 24 */ beq lbl_80318648
+/* 80318628 00314288 7F C3 F3 78 */ mr r3, r30
+/* 8031862C 0031428C 7F E5 FB 78 */ mr r5, r31
+/* 80318630 00314290 7F 46 07 34 */ extsh r6, r26
+/* 80318634 00314294 38 8D 8D 10 */ addi r4, r13, lbl_8063DFD0-_SDA_BASE_
+/* 80318638 00314298 38 E0 00 01 */ li r7, 1
+/* 8031863C 0031429C 4B FE D0 25 */ bl VFiPFSTR_StrNCmp
+/* 80318640 003142A0 2C 03 00 00 */ cmpwi r3, 0
+/* 80318644 003142A4 40 82 00 08 */ bne lbl_8031864C
+lbl_80318648:
+/* 80318648 003142A8 3B A0 00 01 */ li r29, 1
+lbl_8031864C:
+/* 8031864C 003142AC 2C 1D 00 00 */ cmpwi r29, 0
+/* 80318650 003142B0 40 82 00 44 */ bne lbl_80318694
+/* 80318654 003142B4 7F C3 F3 78 */ mr r3, r30
+/* 80318658 003142B8 7F E5 FB 78 */ mr r5, r31
+/* 8031865C 003142BC 7F 46 07 34 */ extsh r6, r26
+/* 80318660 003142C0 38 8D 8D 20 */ addi r4, r13, lbl_8063DFE0-_SDA_BASE_
+/* 80318664 003142C4 38 E0 00 01 */ li r7, 1
+/* 80318668 003142C8 4B FE CF F9 */ bl VFiPFSTR_StrNCmp
+/* 8031866C 003142CC 2C 03 00 00 */ cmpwi r3, 0
+/* 80318670 003142D0 41 82 00 24 */ beq lbl_80318694
+/* 80318674 003142D4 7F C3 F3 78 */ mr r3, r30
+/* 80318678 003142D8 7F E5 FB 78 */ mr r5, r31
+/* 8031867C 003142DC 7F 46 07 34 */ extsh r6, r26
+/* 80318680 003142E0 38 8D 8C FC */ addi r4, r13, lbl_8063DFBC-_SDA_BASE_
+/* 80318684 003142E4 38 E0 00 01 */ li r7, 1
+/* 80318688 003142E8 4B FE CF D9 */ bl VFiPFSTR_StrNCmp
+/* 8031868C 003142EC 2C 03 00 00 */ cmpwi r3, 0
+/* 80318690 003142F0 40 82 FE 94 */ bne lbl_80318524
+lbl_80318694:
+/* 80318694 003142F4 7F 40 07 34 */ extsh r0, r26
+/* 80318698 003142F8 2C 00 00 08 */ cmpwi r0, 8
+/* 8031869C 003142FC 41 82 00 0C */ beq lbl_803186A8
+/* 803186A0 00314300 28 19 00 01 */ cmplwi r25, 1
+/* 803186A4 00314304 40 82 00 98 */ bne lbl_8031873C
+lbl_803186A8:
+/* 803186A8 00314308 7F C3 F3 78 */ mr r3, r30
+/* 803186AC 0031430C 7F E5 FB 78 */ mr r5, r31
+/* 803186B0 00314310 7F 46 07 34 */ extsh r6, r26
+/* 803186B4 00314314 38 8D 8D 20 */ addi r4, r13, lbl_8063DFE0-_SDA_BASE_
+/* 803186B8 00314318 38 E0 00 01 */ li r7, 1
+/* 803186BC 0031431C 4B FE CF A5 */ bl VFiPFSTR_StrNCmp
+/* 803186C0 00314320 2C 03 00 00 */ cmpwi r3, 0
+/* 803186C4 00314324 41 82 00 74 */ beq lbl_80318738
+/* 803186C8 00314328 7F C3 F3 78 */ mr r3, r30
+/* 803186CC 0031432C 7F E5 FB 78 */ mr r5, r31
+/* 803186D0 00314330 7F 46 07 34 */ extsh r6, r26
+/* 803186D4 00314334 3B A0 00 00 */ li r29, 0
+/* 803186D8 00314338 38 8D 8D 0C */ addi r4, r13, lbl_8063DFCC-_SDA_BASE_
+/* 803186DC 0031433C 38 E0 00 01 */ li r7, 1
+/* 803186E0 00314340 4B FE CF 81 */ bl VFiPFSTR_StrNCmp
+/* 803186E4 00314344 2C 03 00 00 */ cmpwi r3, 0
+/* 803186E8 00314348 41 82 00 24 */ beq lbl_8031870C
+/* 803186EC 0031434C 7F C3 F3 78 */ mr r3, r30
+/* 803186F0 00314350 7F E5 FB 78 */ mr r5, r31
+/* 803186F4 00314354 7F 46 07 34 */ extsh r6, r26
+/* 803186F8 00314358 38 8D 8D 10 */ addi r4, r13, lbl_8063DFD0-_SDA_BASE_
+/* 803186FC 0031435C 38 E0 00 01 */ li r7, 1
+/* 80318700 00314360 4B FE CF 61 */ bl VFiPFSTR_StrNCmp
+/* 80318704 00314364 2C 03 00 00 */ cmpwi r3, 0
+/* 80318708 00314368 40 82 00 08 */ bne lbl_80318710
+lbl_8031870C:
+/* 8031870C 0031436C 3B A0 00 01 */ li r29, 1
+lbl_80318710:
+/* 80318710 00314370 2C 1D 00 00 */ cmpwi r29, 0
+/* 80318714 00314374 41 82 00 24 */ beq lbl_80318738
+/* 80318718 00314378 7F C3 F3 78 */ mr r3, r30
+/* 8031871C 0031437C 7F E5 FB 78 */ mr r5, r31
+/* 80318720 00314380 7F 46 07 34 */ extsh r6, r26
+/* 80318724 00314384 38 8D 8C FC */ addi r4, r13, lbl_8063DFBC-_SDA_BASE_
+/* 80318728 00314388 38 E0 00 01 */ li r7, 1
+/* 8031872C 0031438C 4B FE CF 35 */ bl VFiPFSTR_StrNCmp
+/* 80318730 00314390 2C 03 00 00 */ cmpwi r3, 0
+/* 80318734 00314394 40 82 00 08 */ bne lbl_8031873C
+lbl_80318738:
+/* 80318738 00314398 7F 5B 07 34 */ extsh r27, r26
+lbl_8031873C:
+/* 8031873C 0031439C 7F 63 DB 78 */ mr r3, r27
+lbl_80318740:
+/* 80318740 003143A0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80318744 003143A4 4B EA EA 25 */ bl _restgpr_24
+/* 80318748 003143A8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8031874C 003143AC 7C 08 03 A6 */ mtlr r0
+/* 80318750 003143B0 38 21 00 30 */ addi r1, r1, 0x30
+/* 80318754 003143B4 4E 80 00 20 */ blr
+
+.global VFiPFPATH_GetExtShortNameIndex
+VFiPFPATH_GetExtShortNameIndex:
+/* 80318758 003143B8 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8031875C 003143BC 7C 08 02 A6 */ mflr r0
+/* 80318760 003143C0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80318764 003143C4 39 61 00 30 */ addi r11, r1, 0x30
+/* 80318768 003143C8 4B EA E9 BD */ bl _savegpr_26
+/* 8031876C 003143CC 88 A2 A4 A8 */ lbz r5, lbl_80642AA8-_SDA2_BASE_(r2)
+/* 80318770 003143D0 2C 03 00 00 */ cmpwi r3, 0
+/* 80318774 003143D4 88 02 A4 A9 */ lbz r0, lbl_80642AA9-_SDA2_BASE_(r2)
+/* 80318778 003143D8 7C 7A 1B 78 */ mr r26, r3
+/* 8031877C 003143DC 98 A1 00 08 */ stb r5, 8(r1)
+/* 80318780 003143E0 7C 9B 23 78 */ mr r27, r4
+/* 80318784 003143E4 3B C0 00 00 */ li r30, 0
+/* 80318788 003143E8 98 01 00 09 */ stb r0, 9(r1)
+/* 8031878C 003143EC 41 82 00 0C */ beq lbl_80318798
+/* 80318790 003143F0 2C 04 00 00 */ cmpwi r4, 0
+/* 80318794 003143F4 40 82 00 0C */ bne lbl_803187A0
+lbl_80318798:
+/* 80318798 003143F8 38 60 00 0A */ li r3, 0xa
+/* 8031879C 003143FC 48 00 01 48 */ b lbl_803188E4
+lbl_803187A0:
+/* 803187A0 00314400 38 81 00 08 */ addi r4, r1, 8
+/* 803187A4 00314404 38 A0 00 01 */ li r5, 1
+/* 803187A8 00314408 38 C0 00 00 */ li r6, 0
+/* 803187AC 0031440C 38 E0 00 02 */ li r7, 2
+/* 803187B0 00314410 4B FE CE B1 */ bl VFiPFSTR_StrNCmp
+/* 803187B4 00314414 2C 03 00 00 */ cmpwi r3, 0
+/* 803187B8 00314418 40 82 01 28 */ bne lbl_803188E0
+/* 803187BC 0031441C 3B 80 00 00 */ li r28, 0
+/* 803187C0 00314420 3B A0 00 02 */ li r29, 2
+/* 803187C4 00314424 3B E0 00 04 */ li r31, 4
+/* 803187C8 00314428 48 00 00 70 */ b lbl_80318838
+lbl_803187CC:
+/* 803187CC 0031442C 7F 43 D3 78 */ mr r3, r26
+/* 803187D0 00314430 4B FE CB 11 */ bl VFiPFSTR_GetCodeMode
+/* 803187D4 00314434 28 03 00 01 */ cmplwi r3, 1
+/* 803187D8 00314438 40 82 00 28 */ bne lbl_80318800
+/* 803187DC 0031443C 7F 43 D3 78 */ mr r3, r26
+/* 803187E0 00314440 38 80 00 01 */ li r4, 1
+/* 803187E4 00314444 4B FE CB 2D */ bl VFiPFSTR_GetStrPos
+/* 803187E8 00314448 7F A0 07 34 */ extsh r0, r29
+/* 803187EC 0031444C 7C 03 00 AE */ lbzx r0, r3, r0
+/* 803187F0 00314450 7C 03 07 74 */ extsb r3, r0
+/* 803187F4 00314454 38 03 FF D0 */ addi r0, r3, -48
+/* 803187F8 00314458 7C 00 07 34 */ extsh r0, r0
+/* 803187FC 0031445C 48 00 00 1C */ b lbl_80318818
+lbl_80318800:
+/* 80318800 00314460 7F 43 D3 78 */ mr r3, r26
+/* 80318804 00314464 38 80 00 01 */ li r4, 1
+/* 80318808 00314468 4B FE CB 09 */ bl VFiPFSTR_GetStrPos
+/* 8031880C 0031446C 7C 63 FA 2E */ lhzx r3, r3, r31
+/* 80318810 00314470 38 03 FF D0 */ addi r0, r3, -48
+/* 80318814 00314474 7C 00 07 34 */ extsh r0, r0
+lbl_80318818:
+/* 80318818 00314478 2C 00 00 00 */ cmpwi r0, 0
+/* 8031881C 0031447C 41 80 00 44 */ blt lbl_80318860
+/* 80318820 00314480 2C 00 00 09 */ cmpwi r0, 9
+/* 80318824 00314484 41 81 00 3C */ bgt lbl_80318860
+/* 80318828 00314488 1F 9C 00 0A */ mulli r28, r28, 0xa
+/* 8031882C 0031448C 3B FF 00 02 */ addi r31, r31, 2
+/* 80318830 00314490 3B BD 00 01 */ addi r29, r29, 1
+/* 80318834 00314494 7F 9C 02 14 */ add r28, r28, r0
+lbl_80318838:
+/* 80318838 00314498 7F A6 07 34 */ extsh r6, r29
+/* 8031883C 0031449C 2C 06 00 08 */ cmpwi r6, 8
+/* 80318840 003144A0 41 80 FF 8C */ blt lbl_803187CC
+/* 80318844 003144A4 7F 43 D3 78 */ mr r3, r26
+/* 80318848 003144A8 38 8D 8C FC */ addi r4, r13, lbl_8063DFBC-_SDA_BASE_
+/* 8031884C 003144AC 38 A0 00 01 */ li r5, 1
+/* 80318850 003144B0 38 E0 00 01 */ li r7, 1
+/* 80318854 003144B4 4B FE CE 0D */ bl VFiPFSTR_StrNCmp
+/* 80318858 003144B8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031885C 003144BC 40 82 FF 70 */ bne lbl_803187CC
+lbl_80318860:
+/* 80318860 003144C0 7F A6 07 34 */ extsh r6, r29
+/* 80318864 003144C4 2C 06 00 08 */ cmpwi r6, 8
+/* 80318868 003144C8 40 82 00 78 */ bne lbl_803188E0
+/* 8031886C 003144CC 7F 43 D3 78 */ mr r3, r26
+/* 80318870 003144D0 3B E0 00 00 */ li r31, 0
+/* 80318874 003144D4 38 8D 8D 0C */ addi r4, r13, lbl_8063DFCC-_SDA_BASE_
+/* 80318878 003144D8 38 A0 00 01 */ li r5, 1
+/* 8031887C 003144DC 38 E0 00 01 */ li r7, 1
+/* 80318880 003144E0 4B FE CD E1 */ bl VFiPFSTR_StrNCmp
+/* 80318884 003144E4 2C 03 00 00 */ cmpwi r3, 0
+/* 80318888 003144E8 41 82 00 24 */ beq lbl_803188AC
+/* 8031888C 003144EC 7F 43 D3 78 */ mr r3, r26
+/* 80318890 003144F0 7F A6 07 34 */ extsh r6, r29
+/* 80318894 003144F4 38 8D 8D 10 */ addi r4, r13, lbl_8063DFD0-_SDA_BASE_
+/* 80318898 003144F8 38 A0 00 01 */ li r5, 1
+/* 8031889C 003144FC 38 E0 00 01 */ li r7, 1
+/* 803188A0 00314500 4B FE CD C1 */ bl VFiPFSTR_StrNCmp
+/* 803188A4 00314504 2C 03 00 00 */ cmpwi r3, 0
+/* 803188A8 00314508 40 82 00 08 */ bne lbl_803188B0
+lbl_803188AC:
+/* 803188AC 0031450C 3B E0 00 01 */ li r31, 1
+lbl_803188B0:
+/* 803188B0 00314510 2C 1F 00 00 */ cmpwi r31, 0
+/* 803188B4 00314514 41 82 00 24 */ beq lbl_803188D8
+/* 803188B8 00314518 7F 43 D3 78 */ mr r3, r26
+/* 803188BC 0031451C 7F A6 07 34 */ extsh r6, r29
+/* 803188C0 00314520 38 80 00 00 */ li r4, 0
+/* 803188C4 00314524 38 A0 00 01 */ li r5, 1
+/* 803188C8 00314528 38 E0 00 01 */ li r7, 1
+/* 803188CC 0031452C 4B FE CD 95 */ bl VFiPFSTR_StrNCmp
+/* 803188D0 00314530 2C 03 00 00 */ cmpwi r3, 0
+/* 803188D4 00314534 40 82 00 0C */ bne lbl_803188E0
+lbl_803188D8:
+/* 803188D8 00314538 93 9B 00 00 */ stw r28, 0(r27)
+/* 803188DC 0031453C 3B C0 00 01 */ li r30, 1
+lbl_803188E0:
+/* 803188E0 00314540 7F C3 F3 78 */ mr r3, r30
+lbl_803188E4:
+/* 803188E4 00314544 39 61 00 30 */ addi r11, r1, 0x30
+/* 803188E8 00314548 4B EA E8 89 */ bl _restgpr_26
+/* 803188EC 0031454C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803188F0 00314550 7C 08 03 A6 */ mtlr r0
+/* 803188F4 00314554 38 21 00 30 */ addi r1, r1, 0x30
+/* 803188F8 00314558 4E 80 00 20 */ blr
+
+.global VFiPFPATH_AdjustExtShortName
+VFiPFPATH_AdjustExtShortName:
+/* 803188FC 0031455C 2C 03 00 00 */ cmpwi r3, 0
+/* 80318900 00314560 40 82 00 0C */ bne lbl_8031890C
+/* 80318904 00314564 38 60 00 0A */ li r3, 0xa
+/* 80318908 00314568 4E 80 00 20 */ blr
+lbl_8031890C:
+/* 8031890C 0031456C 38 63 00 07 */ addi r3, r3, 7
+/* 80318910 00314570 38 C0 00 07 */ li r6, 7
+/* 80318914 00314574 38 E0 00 0A */ li r7, 0xa
+/* 80318918 00314578 39 00 00 01 */ li r8, 1
+/* 8031891C 0031457C 48 00 00 3C */ b lbl_80318958
+lbl_80318920:
+/* 80318920 00314580 7C 04 3B 96 */ divwu r0, r4, r7
+/* 80318924 00314584 7C 00 39 D6 */ mullw r0, r0, r7
+/* 80318928 00314588 7C 00 20 51 */ subf. r0, r0, r4
+/* 8031892C 0031458C 41 82 00 1C */ beq lbl_80318948
+/* 80318930 00314590 7C 80 20 50 */ subf r4, r0, r4
+/* 80318934 00314594 88 A3 00 00 */ lbz r5, 0(r3)
+/* 80318938 00314598 7C 00 43 96 */ divwu r0, r0, r8
+/* 8031893C 0031459C 7C 00 07 74 */ extsb r0, r0
+/* 80318940 003145A0 7C 05 02 14 */ add r0, r5, r0
+/* 80318944 003145A4 98 03 00 00 */ stb r0, 0(r3)
+lbl_80318948:
+/* 80318948 003145A8 1C E7 00 0A */ mulli r7, r7, 0xa
+/* 8031894C 003145AC 38 C6 FF FF */ addi r6, r6, -1
+/* 80318950 003145B0 38 63 FF FF */ addi r3, r3, -1
+/* 80318954 003145B4 1D 08 00 0A */ mulli r8, r8, 0xa
+lbl_80318958:
+/* 80318958 003145B8 28 06 00 01 */ cmplwi r6, 1
+/* 8031895C 003145BC 40 81 00 0C */ ble lbl_80318968
+/* 80318960 003145C0 2C 04 00 00 */ cmpwi r4, 0
+/* 80318964 003145C4 40 82 FF BC */ bne lbl_80318920
+lbl_80318968:
+/* 80318968 003145C8 38 60 00 00 */ li r3, 0
+/* 8031896C 003145CC 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_sector.s b/asm/SDK/VF/pf_sector.s new file mode 100644 index 0000000..d1c9dfd --- /dev/null +++ b/asm/SDK/VF/pf_sector.s @@ -0,0 +1,507 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFSEC_ReadFAT
+VFiPFSEC_ReadFAT:
+/* 80318970 003145D0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80318974 003145D4 7C 08 02 A6 */ mflr r0
+/* 80318978 003145D8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8031897C 003145DC 39 61 00 30 */ addi r11, r1, 0x30
+/* 80318980 003145E0 4B EA E7 A9 */ bl _savegpr_27
+/* 80318984 003145E4 2C 03 00 00 */ cmpwi r3, 0
+/* 80318988 003145E8 7C 7B 1B 78 */ mr r27, r3
+/* 8031898C 003145EC 7C 9C 23 78 */ mr r28, r4
+/* 80318990 003145F0 7C BD 2B 78 */ mr r29, r5
+/* 80318994 003145F4 7C DE 33 78 */ mr r30, r6
+/* 80318998 003145F8 7C FF 3B 78 */ mr r31, r7
+/* 8031899C 003145FC 40 82 00 0C */ bne lbl_803189A8
+/* 803189A0 00314600 38 60 00 0A */ li r3, 0xa
+/* 803189A4 00314604 48 00 00 6C */ b lbl_80318A10
+lbl_803189A8:
+/* 803189A8 00314608 2C 04 00 00 */ cmpwi r4, 0
+/* 803189AC 0031460C 40 82 00 0C */ bne lbl_803189B8
+/* 803189B0 00314610 38 60 00 0A */ li r3, 0xa
+/* 803189B4 00314614 48 00 00 5C */ b lbl_80318A10
+lbl_803189B8:
+/* 803189B8 00314618 A0 03 18 78 */ lhz r0, 0x1878(r3)
+/* 803189BC 0031461C 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 803189C0 00314620 41 82 00 10 */ beq lbl_803189D0
+/* 803189C4 00314624 4B FE D3 8D */ bl VFiPFDRV_IsInserted
+/* 803189C8 00314628 2C 03 00 00 */ cmpwi r3, 0
+/* 803189CC 0031462C 40 82 00 0C */ bne lbl_803189D8
+lbl_803189D0:
+/* 803189D0 00314630 38 60 00 09 */ li r3, 9
+/* 803189D4 00314634 48 00 00 3C */ b lbl_80318A10
+lbl_803189D8:
+/* 803189D8 00314638 7F 63 DB 78 */ mr r3, r27
+/* 803189DC 0031463C 7F A4 EB 78 */ mr r4, r29
+/* 803189E0 00314640 38 A1 00 08 */ addi r5, r1, 8
+/* 803189E4 00314644 4B FF 1E 69 */ bl VFiPFCACHE_ReadFATPage
+/* 803189E8 00314648 2C 03 00 00 */ cmpwi r3, 0
+/* 803189EC 0031464C 41 82 00 08 */ beq lbl_803189F4
+/* 803189F0 00314650 48 00 00 20 */ b lbl_80318A10
+lbl_803189F4:
+/* 803189F4 00314654 80 81 00 08 */ lwz r4, 8(r1)
+/* 803189F8 00314658 7F 83 E3 78 */ mr r3, r28
+/* 803189FC 0031465C 7F E5 FB 78 */ mr r5, r31
+/* 80318A00 00314660 80 04 00 08 */ lwz r0, 8(r4)
+/* 80318A04 00314664 7C 80 F2 14 */ add r4, r0, r30
+/* 80318A08 00314668 4B FE C4 A5 */ bl VFipf_memcpy
+/* 80318A0C 0031466C 38 60 00 00 */ li r3, 0
+lbl_80318A10:
+/* 80318A10 00314670 39 61 00 30 */ addi r11, r1, 0x30
+/* 80318A14 00314674 4B EA E7 61 */ bl _restgpr_27
+/* 80318A18 00314678 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80318A1C 0031467C 7C 08 03 A6 */ mtlr r0
+/* 80318A20 00314680 38 21 00 30 */ addi r1, r1, 0x30
+/* 80318A24 00314684 4E 80 00 20 */ blr
+
+.global VFiPFSEC_ReadData
+VFiPFSEC_ReadData:
+/* 80318A28 00314688 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80318A2C 0031468C 7C 08 02 A6 */ mflr r0
+/* 80318A30 00314690 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80318A34 00314694 39 61 00 30 */ addi r11, r1, 0x30
+/* 80318A38 00314698 4B EA E6 E9 */ bl _savegpr_25
+/* 80318A3C 0031469C 38 00 00 00 */ li r0, 0
+/* 80318A40 003146A0 2C 03 00 00 */ cmpwi r3, 0
+/* 80318A44 003146A4 90 08 00 00 */ stw r0, 0(r8)
+/* 80318A48 003146A8 7C 7A 1B 78 */ mr r26, r3
+/* 80318A4C 003146AC 7C 9B 23 78 */ mr r27, r4
+/* 80318A50 003146B0 7C BC 2B 78 */ mr r28, r5
+/* 80318A54 003146B4 7C D9 33 78 */ mr r25, r6
+/* 80318A58 003146B8 7C FF 3B 78 */ mr r31, r7
+/* 80318A5C 003146BC 7D 1D 43 78 */ mr r29, r8
+/* 80318A60 003146C0 7D 3E 4B 78 */ mr r30, r9
+/* 80318A64 003146C4 40 82 00 0C */ bne lbl_80318A70
+/* 80318A68 003146C8 38 60 00 0A */ li r3, 0xa
+/* 80318A6C 003146CC 48 00 02 84 */ b lbl_80318CF0
+lbl_80318A70:
+/* 80318A70 003146D0 2C 04 00 00 */ cmpwi r4, 0
+/* 80318A74 003146D4 40 82 00 0C */ bne lbl_80318A80
+/* 80318A78 003146D8 38 60 00 0A */ li r3, 0xa
+/* 80318A7C 003146DC 48 00 02 74 */ b lbl_80318CF0
+lbl_80318A80:
+/* 80318A80 003146E0 A0 03 18 78 */ lhz r0, 0x1878(r3)
+/* 80318A84 003146E4 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80318A88 003146E8 41 82 00 10 */ beq lbl_80318A98
+/* 80318A8C 003146EC 4B FE D2 C5 */ bl VFiPFDRV_IsInserted
+/* 80318A90 003146F0 2C 03 00 00 */ cmpwi r3, 0
+/* 80318A94 003146F4 40 82 00 0C */ bne lbl_80318AA0
+lbl_80318A98:
+/* 80318A98 003146F8 38 60 00 09 */ li r3, 9
+/* 80318A9C 003146FC 48 00 02 54 */ b lbl_80318CF0
+lbl_80318AA0:
+/* 80318AA0 00314700 2C 99 00 00 */ cmpwi cr1, r25, 0
+/* 80318AA4 00314704 40 86 00 10 */ bne cr1, lbl_80318AB4
+/* 80318AA8 00314708 A0 7A 00 00 */ lhz r3, 0(r26)
+/* 80318AAC 0031470C 7C 1F 18 40 */ cmplw r31, r3
+/* 80318AB0 00314710 40 80 00 44 */ bge lbl_80318AF4
+lbl_80318AB4:
+/* 80318AB4 00314714 7F 43 D3 78 */ mr r3, r26
+/* 80318AB8 00314718 7F 84 E3 78 */ mr r4, r28
+/* 80318ABC 0031471C 7F C6 F3 78 */ mr r6, r30
+/* 80318AC0 00314720 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80318AC4 00314724 4B FF 1D C9 */ bl VFiPFCACHE_ReadDataPage
+/* 80318AC8 00314728 2C 03 00 00 */ cmpwi r3, 0
+/* 80318ACC 0031472C 41 82 00 08 */ beq lbl_80318AD4
+/* 80318AD0 00314730 48 00 02 20 */ b lbl_80318CF0
+lbl_80318AD4:
+/* 80318AD4 00314734 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 80318AD8 00314738 7F 63 DB 78 */ mr r3, r27
+/* 80318ADC 0031473C 7F E5 FB 78 */ mr r5, r31
+/* 80318AE0 00314740 80 04 00 08 */ lwz r0, 8(r4)
+/* 80318AE4 00314744 7C 80 CA 14 */ add r4, r0, r25
+/* 80318AE8 00314748 4B FE C3 C5 */ bl VFipf_memcpy
+/* 80318AEC 0031474C 93 FD 00 00 */ stw r31, 0(r29)
+/* 80318AF0 00314750 48 00 01 FC */ b lbl_80318CEC
+lbl_80318AF4:
+/* 80318AF4 00314754 40 86 00 6C */ bne cr1, lbl_80318B60
+/* 80318AF8 00314758 38 03 FF FF */ addi r0, r3, -1
+/* 80318AFC 0031475C 7F E0 00 39 */ and. r0, r31, r0
+/* 80318B00 00314760 40 82 00 60 */ bne lbl_80318B60
+/* 80318B04 00314764 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318B08 00314768 7F 43 D3 78 */ mr r3, r26
+/* 80318B0C 0031476C 7F 64 DB 78 */ mr r4, r27
+/* 80318B10 00314770 7F 85 E3 78 */ mr r5, r28
+/* 80318B14 00314774 7F E6 04 30 */ srw r6, r31, r0
+/* 80318B18 00314778 38 E1 00 08 */ addi r7, r1, 8
+/* 80318B1C 0031477C 4B FF 1E 01 */ bl VFiPFCACHE_ReadDataNumSector
+/* 80318B20 00314780 2C 03 00 00 */ cmpwi r3, 0
+/* 80318B24 00314784 41 82 00 08 */ beq lbl_80318B2C
+/* 80318B28 00314788 48 00 01 C8 */ b lbl_80318CF0
+lbl_80318B2C:
+/* 80318B2C 0031478C 80 61 00 08 */ lwz r3, 8(r1)
+/* 80318B30 00314790 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318B34 00314794 80 9D 00 00 */ lwz r4, 0(r29)
+/* 80318B38 00314798 7C 60 00 30 */ slw r0, r3, r0
+/* 80318B3C 0031479C 7C 04 02 14 */ add r0, r4, r0
+/* 80318B40 003147A0 90 1D 00 00 */ stw r0, 0(r29)
+/* 80318B44 003147A4 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318B48 003147A8 80 61 00 08 */ lwz r3, 8(r1)
+/* 80318B4C 003147AC 7F E0 04 30 */ srw r0, r31, r0
+/* 80318B50 003147B0 7C 03 00 40 */ cmplw r3, r0
+/* 80318B54 003147B4 41 82 01 98 */ beq lbl_80318CEC
+/* 80318B58 003147B8 38 60 00 11 */ li r3, 0x11
+/* 80318B5C 003147BC 48 00 01 94 */ b lbl_80318CF0
+lbl_80318B60:
+/* 80318B60 003147C0 2C 19 00 00 */ cmpwi r25, 0
+/* 80318B64 003147C4 40 82 01 80 */ bne lbl_80318CE4
+/* 80318B68 003147C8 7F 43 D3 78 */ mr r3, r26
+/* 80318B6C 003147CC 7F 84 E3 78 */ mr r4, r28
+/* 80318B70 003147D0 4B FF 1F 35 */ bl VFiPFCACHE_SearchDataCache
+/* 80318B74 003147D4 2C 03 00 00 */ cmpwi r3, 0
+/* 80318B78 003147D8 90 61 00 0C */ stw r3, 0xc(r1)
+/* 80318B7C 003147DC 41 82 00 80 */ beq lbl_80318BFC
+/* 80318B80 003147E0 80 83 00 18 */ lwz r4, 0x18(r3)
+/* 80318B84 003147E4 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 80318B88 003147E8 88 BA 00 20 */ lbz r5, 0x20(r26)
+/* 80318B8C 003147EC 7C 04 02 14 */ add r0, r4, r0
+/* 80318B90 003147F0 7F 3C 00 50 */ subf r25, r28, r0
+/* 80318B94 003147F4 7F E0 2C 30 */ srw r0, r31, r5
+/* 80318B98 003147F8 7C 19 00 40 */ cmplw r25, r0
+/* 80318B9C 003147FC 41 81 00 3C */ bgt lbl_80318BD8
+/* 80318BA0 00314800 80 83 00 08 */ lwz r4, 8(r3)
+/* 80318BA4 00314804 7F 63 DB 78 */ mr r3, r27
+/* 80318BA8 00314808 7F 25 28 30 */ slw r5, r25, r5
+/* 80318BAC 0031480C 4B FE C3 01 */ bl VFipf_memcpy
+/* 80318BB0 00314810 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318BB4 00314814 7F 9C CA 14 */ add r28, r28, r25
+/* 80318BB8 00314818 80 7D 00 00 */ lwz r3, 0(r29)
+/* 80318BBC 0031481C 7F 20 00 30 */ slw r0, r25, r0
+/* 80318BC0 00314820 7C 03 02 14 */ add r0, r3, r0
+/* 80318BC4 00314824 90 1D 00 00 */ stw r0, 0(r29)
+/* 80318BC8 00314828 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318BCC 0031482C 7F 20 00 30 */ slw r0, r25, r0
+/* 80318BD0 00314830 7F E0 F8 50 */ subf r31, r0, r31
+/* 80318BD4 00314834 48 00 00 28 */ b lbl_80318BFC
+lbl_80318BD8:
+/* 80318BD8 00314838 40 81 00 24 */ ble lbl_80318BFC
+/* 80318BDC 0031483C 80 83 00 08 */ lwz r4, 8(r3)
+/* 80318BE0 00314840 7F 63 DB 78 */ mr r3, r27
+/* 80318BE4 00314844 7F E5 FB 78 */ mr r5, r31
+/* 80318BE8 00314848 4B FE C2 C5 */ bl VFipf_memcpy
+/* 80318BEC 0031484C 80 1D 00 00 */ lwz r0, 0(r29)
+/* 80318BF0 00314850 7C 00 FA 14 */ add r0, r0, r31
+/* 80318BF4 00314854 3B E0 00 00 */ li r31, 0
+/* 80318BF8 00314858 90 1D 00 00 */ stw r0, 0(r29)
+lbl_80318BFC:
+/* 80318BFC 0031485C 2C 1F 00 00 */ cmpwi r31, 0
+/* 80318C00 00314860 41 82 00 EC */ beq lbl_80318CEC
+/* 80318C04 00314864 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318C08 00314868 80 7A 16 04 */ lwz r3, 0x1604(r26)
+/* 80318C0C 0031486C 7F FF 04 30 */ srw r31, r31, r0
+/* 80318C10 00314870 7C 9C FA 14 */ add r4, r28, r31
+/* 80318C14 00314874 7C 04 1B 96 */ divwu r0, r4, r3
+/* 80318C18 00314878 7C 00 19 D6 */ mullw r0, r0, r3
+/* 80318C1C 0031487C 7C 60 20 50 */ subf r3, r0, r4
+/* 80318C20 00314880 7C 1F 18 40 */ cmplw r31, r3
+/* 80318C24 00314884 40 81 00 64 */ ble lbl_80318C88
+/* 80318C28 00314888 80 1D 00 00 */ lwz r0, 0(r29)
+/* 80318C2C 0031488C 7F 23 F8 50 */ subf r25, r3, r31
+/* 80318C30 00314890 7F 43 D3 78 */ mr r3, r26
+/* 80318C34 00314894 7F 85 E3 78 */ mr r5, r28
+/* 80318C38 00314898 7F 26 CB 78 */ mr r6, r25
+/* 80318C3C 0031489C 7C 9B 02 14 */ add r4, r27, r0
+/* 80318C40 003148A0 38 E1 00 08 */ addi r7, r1, 8
+/* 80318C44 003148A4 4B FF 1C D9 */ bl VFiPFCACHE_ReadDataNumSector
+/* 80318C48 003148A8 2C 03 00 00 */ cmpwi r3, 0
+/* 80318C4C 003148AC 41 82 00 08 */ beq lbl_80318C54
+/* 80318C50 003148B0 48 00 00 A0 */ b lbl_80318CF0
+lbl_80318C54:
+/* 80318C54 003148B4 80 61 00 08 */ lwz r3, 8(r1)
+/* 80318C58 003148B8 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318C5C 003148BC 80 9D 00 00 */ lwz r4, 0(r29)
+/* 80318C60 003148C0 7C 60 00 30 */ slw r0, r3, r0
+/* 80318C64 003148C4 7C 04 02 14 */ add r0, r4, r0
+/* 80318C68 003148C8 90 1D 00 00 */ stw r0, 0(r29)
+/* 80318C6C 003148CC 80 01 00 08 */ lwz r0, 8(r1)
+/* 80318C70 003148D0 7C 00 C8 40 */ cmplw r0, r25
+/* 80318C74 003148D4 41 82 00 0C */ beq lbl_80318C80
+/* 80318C78 003148D8 38 60 00 11 */ li r3, 0x11
+/* 80318C7C 003148DC 48 00 00 74 */ b lbl_80318CF0
+lbl_80318C80:
+/* 80318C80 003148E0 7F 9C CA 14 */ add r28, r28, r25
+/* 80318C84 003148E4 7F F9 F8 50 */ subf r31, r25, r31
+lbl_80318C88:
+/* 80318C88 003148E8 2C 1F 00 00 */ cmpwi r31, 0
+/* 80318C8C 003148EC 41 82 00 60 */ beq lbl_80318CEC
+/* 80318C90 003148F0 7F 43 D3 78 */ mr r3, r26
+/* 80318C94 003148F4 7F 84 E3 78 */ mr r4, r28
+/* 80318C98 003148F8 7F C6 F3 78 */ mr r6, r30
+/* 80318C9C 003148FC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80318CA0 00314900 4B FF 1B ED */ bl VFiPFCACHE_ReadDataPage
+/* 80318CA4 00314904 2C 03 00 00 */ cmpwi r3, 0
+/* 80318CA8 00314908 41 82 00 08 */ beq lbl_80318CB0
+/* 80318CAC 0031490C 48 00 00 44 */ b lbl_80318CF0
+lbl_80318CB0:
+/* 80318CB0 00314910 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80318CB4 00314914 80 BD 00 00 */ lwz r5, 0(r29)
+/* 80318CB8 00314918 80 83 00 08 */ lwz r4, 8(r3)
+/* 80318CBC 0031491C 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318CC0 00314920 7C 7B 2A 14 */ add r3, r27, r5
+/* 80318CC4 00314924 7F E5 00 30 */ slw r5, r31, r0
+/* 80318CC8 00314928 4B FE C1 E5 */ bl VFipf_memcpy
+/* 80318CCC 0031492C 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318CD0 00314930 80 7D 00 00 */ lwz r3, 0(r29)
+/* 80318CD4 00314934 7F E0 00 30 */ slw r0, r31, r0
+/* 80318CD8 00314938 7C 03 02 14 */ add r0, r3, r0
+/* 80318CDC 0031493C 90 1D 00 00 */ stw r0, 0(r29)
+/* 80318CE0 00314940 48 00 00 0C */ b lbl_80318CEC
+lbl_80318CE4:
+/* 80318CE4 00314944 38 60 00 0A */ li r3, 0xa
+/* 80318CE8 00314948 48 00 00 08 */ b lbl_80318CF0
+lbl_80318CEC:
+/* 80318CEC 0031494C 38 60 00 00 */ li r3, 0
+lbl_80318CF0:
+/* 80318CF0 00314950 39 61 00 30 */ addi r11, r1, 0x30
+/* 80318CF4 00314954 4B EA E4 79 */ bl _restgpr_25
+/* 80318CF8 00314958 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80318CFC 0031495C 7C 08 03 A6 */ mtlr r0
+/* 80318D00 00314960 38 21 00 30 */ addi r1, r1, 0x30
+/* 80318D04 00314964 4E 80 00 20 */ blr
+
+.global VFiPFSEC_WriteFAT
+VFiPFSEC_WriteFAT:
+/* 80318D08 00314968 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80318D0C 0031496C 7C 08 02 A6 */ mflr r0
+/* 80318D10 00314970 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80318D14 00314974 39 61 00 30 */ addi r11, r1, 0x30
+/* 80318D18 00314978 4B EA E4 11 */ bl _savegpr_27
+/* 80318D1C 0031497C 2C 03 00 00 */ cmpwi r3, 0
+/* 80318D20 00314980 7C 7B 1B 78 */ mr r27, r3
+/* 80318D24 00314984 7C 9C 23 78 */ mr r28, r4
+/* 80318D28 00314988 7C BD 2B 78 */ mr r29, r5
+/* 80318D2C 0031498C 7C DE 33 78 */ mr r30, r6
+/* 80318D30 00314990 7C FF 3B 78 */ mr r31, r7
+/* 80318D34 00314994 40 82 00 0C */ bne lbl_80318D40
+/* 80318D38 00314998 38 60 00 0A */ li r3, 0xa
+/* 80318D3C 0031499C 48 00 00 94 */ b lbl_80318DD0
+lbl_80318D40:
+/* 80318D40 003149A0 2C 04 00 00 */ cmpwi r4, 0
+/* 80318D44 003149A4 40 82 00 0C */ bne lbl_80318D50
+/* 80318D48 003149A8 38 60 00 0A */ li r3, 0xa
+/* 80318D4C 003149AC 48 00 00 84 */ b lbl_80318DD0
+lbl_80318D50:
+/* 80318D50 003149B0 A0 03 18 78 */ lhz r0, 0x1878(r3)
+/* 80318D54 003149B4 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80318D58 003149B8 41 82 00 20 */ beq lbl_80318D78
+/* 80318D5C 003149BC 4B FE CF F5 */ bl VFiPFDRV_IsInserted
+/* 80318D60 003149C0 2C 03 00 00 */ cmpwi r3, 0
+/* 80318D64 003149C4 41 82 00 14 */ beq lbl_80318D78
+/* 80318D68 003149C8 7F 63 DB 78 */ mr r3, r27
+/* 80318D6C 003149CC 4B FE D0 3D */ bl VFiPFDRV_IsWProtected
+/* 80318D70 003149D0 2C 03 00 00 */ cmpwi r3, 0
+/* 80318D74 003149D4 41 82 00 0C */ beq lbl_80318D80
+lbl_80318D78:
+/* 80318D78 003149D8 38 60 00 09 */ li r3, 9
+/* 80318D7C 003149DC 48 00 00 54 */ b lbl_80318DD0
+lbl_80318D80:
+/* 80318D80 003149E0 7F 63 DB 78 */ mr r3, r27
+/* 80318D84 003149E4 7F A4 EB 78 */ mr r4, r29
+/* 80318D88 003149E8 38 A1 00 08 */ addi r5, r1, 8
+/* 80318D8C 003149EC 4B FF 1A C1 */ bl VFiPFCACHE_ReadFATPage
+/* 80318D90 003149F0 2C 03 00 00 */ cmpwi r3, 0
+/* 80318D94 003149F4 41 82 00 08 */ beq lbl_80318D9C
+/* 80318D98 003149F8 48 00 00 38 */ b lbl_80318DD0
+lbl_80318D9C:
+/* 80318D9C 003149FC 80 61 00 08 */ lwz r3, 8(r1)
+/* 80318DA0 00314A00 7F 84 E3 78 */ mr r4, r28
+/* 80318DA4 00314A04 7F E5 FB 78 */ mr r5, r31
+/* 80318DA8 00314A08 80 03 00 08 */ lwz r0, 8(r3)
+/* 80318DAC 00314A0C 7C 60 F2 14 */ add r3, r0, r30
+/* 80318DB0 00314A10 4B FE C0 FD */ bl VFipf_memcpy
+/* 80318DB4 00314A14 80 81 00 08 */ lwz r4, 8(r1)
+/* 80318DB8 00314A18 7F 63 DB 78 */ mr r3, r27
+/* 80318DBC 00314A1C 4B FF 1B C1 */ bl VFiPFCACHE_WriteFATPage
+/* 80318DC0 00314A20 7C 03 00 D0 */ neg r0, r3
+/* 80318DC4 00314A24 7C 00 1B 78 */ or r0, r0, r3
+/* 80318DC8 00314A28 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 80318DCC 00314A2C 7C 63 00 38 */ and r3, r3, r0
+lbl_80318DD0:
+/* 80318DD0 00314A30 39 61 00 30 */ addi r11, r1, 0x30
+/* 80318DD4 00314A34 4B EA E3 A1 */ bl _restgpr_27
+/* 80318DD8 00314A38 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80318DDC 00314A3C 7C 08 03 A6 */ mtlr r0
+/* 80318DE0 00314A40 38 21 00 30 */ addi r1, r1, 0x30
+/* 80318DE4 00314A44 4E 80 00 20 */ blr
+
+.global VFiPFSEC_WriteData
+VFiPFSEC_WriteData:
+/* 80318DE8 00314A48 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80318DEC 00314A4C 7C 08 02 A6 */ mflr r0
+/* 80318DF0 00314A50 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80318DF4 00314A54 39 61 00 30 */ addi r11, r1, 0x30
+/* 80318DF8 00314A58 4B EA E3 29 */ bl _savegpr_25
+/* 80318DFC 00314A5C 38 00 00 00 */ li r0, 0
+/* 80318E00 00314A60 2C 03 00 00 */ cmpwi r3, 0
+/* 80318E04 00314A64 90 08 00 00 */ stw r0, 0(r8)
+/* 80318E08 00314A68 7C 7A 1B 78 */ mr r26, r3
+/* 80318E0C 00314A6C 7C 9B 23 78 */ mr r27, r4
+/* 80318E10 00314A70 7C BC 2B 78 */ mr r28, r5
+/* 80318E14 00314A74 7C D9 33 78 */ mr r25, r6
+/* 80318E18 00314A78 7C FF 3B 78 */ mr r31, r7
+/* 80318E1C 00314A7C 7D 1D 43 78 */ mr r29, r8
+/* 80318E20 00314A80 7D 3E 4B 78 */ mr r30, r9
+/* 80318E24 00314A84 40 82 00 0C */ bne lbl_80318E30
+/* 80318E28 00314A88 38 60 00 0A */ li r3, 0xa
+/* 80318E2C 00314A8C 48 00 02 1C */ b lbl_80319048
+lbl_80318E30:
+/* 80318E30 00314A90 2C 04 00 00 */ cmpwi r4, 0
+/* 80318E34 00314A94 40 82 00 0C */ bne lbl_80318E40
+/* 80318E38 00314A98 38 60 00 0A */ li r3, 0xa
+/* 80318E3C 00314A9C 48 00 02 0C */ b lbl_80319048
+lbl_80318E40:
+/* 80318E40 00314AA0 A0 03 18 78 */ lhz r0, 0x1878(r3)
+/* 80318E44 00314AA4 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80318E48 00314AA8 41 82 00 20 */ beq lbl_80318E68
+/* 80318E4C 00314AAC 4B FE CF 05 */ bl VFiPFDRV_IsInserted
+/* 80318E50 00314AB0 2C 03 00 00 */ cmpwi r3, 0
+/* 80318E54 00314AB4 41 82 00 14 */ beq lbl_80318E68
+/* 80318E58 00314AB8 7F 43 D3 78 */ mr r3, r26
+/* 80318E5C 00314ABC 4B FE CF 4D */ bl VFiPFDRV_IsWProtected
+/* 80318E60 00314AC0 2C 03 00 00 */ cmpwi r3, 0
+/* 80318E64 00314AC4 41 82 00 0C */ beq lbl_80318E70
+lbl_80318E68:
+/* 80318E68 00314AC8 38 60 00 09 */ li r3, 9
+/* 80318E6C 00314ACC 48 00 01 DC */ b lbl_80319048
+lbl_80318E70:
+/* 80318E70 00314AD0 2C 99 00 00 */ cmpwi cr1, r25, 0
+/* 80318E74 00314AD4 40 86 00 10 */ bne cr1, lbl_80318E84
+/* 80318E78 00314AD8 A0 7A 00 00 */ lhz r3, 0(r26)
+/* 80318E7C 00314ADC 7C 1F 18 40 */ cmplw r31, r3
+/* 80318E80 00314AE0 40 80 00 60 */ bge lbl_80318EE0
+lbl_80318E84:
+/* 80318E84 00314AE4 7F 43 D3 78 */ mr r3, r26
+/* 80318E88 00314AE8 7F 84 E3 78 */ mr r4, r28
+/* 80318E8C 00314AEC 7F C6 F3 78 */ mr r6, r30
+/* 80318E90 00314AF0 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80318E94 00314AF4 4B FF 1A 41 */ bl VFiPFCACHE_ReadDataPageAndFlushIfNeeded
+/* 80318E98 00314AF8 2C 03 00 00 */ cmpwi r3, 0
+/* 80318E9C 00314AFC 41 82 00 08 */ beq lbl_80318EA4
+/* 80318EA0 00314B00 48 00 01 A8 */ b lbl_80319048
+lbl_80318EA4:
+/* 80318EA4 00314B04 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80318EA8 00314B08 7F 64 DB 78 */ mr r4, r27
+/* 80318EAC 00314B0C 7F E5 FB 78 */ mr r5, r31
+/* 80318EB0 00314B10 80 03 00 08 */ lwz r0, 8(r3)
+/* 80318EB4 00314B14 7C 60 CA 14 */ add r3, r0, r25
+/* 80318EB8 00314B18 4B FE BF F5 */ bl VFipf_memcpy
+/* 80318EBC 00314B1C 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 80318EC0 00314B20 7F 43 D3 78 */ mr r3, r26
+/* 80318EC4 00314B24 7F C5 F3 78 */ mr r5, r30
+/* 80318EC8 00314B28 4B FF 1A F1 */ bl VFiPFCACHE_WriteDataPage
+/* 80318ECC 00314B2C 2C 03 00 00 */ cmpwi r3, 0
+/* 80318ED0 00314B30 41 82 00 08 */ beq lbl_80318ED8
+/* 80318ED4 00314B34 48 00 01 74 */ b lbl_80319048
+lbl_80318ED8:
+/* 80318ED8 00314B38 93 FD 00 00 */ stw r31, 0(r29)
+/* 80318EDC 00314B3C 48 00 01 68 */ b lbl_80319044
+lbl_80318EE0:
+/* 80318EE0 00314B40 40 86 00 64 */ bne cr1, lbl_80318F44
+/* 80318EE4 00314B44 38 03 FF FF */ addi r0, r3, -1
+/* 80318EE8 00314B48 7F E0 00 39 */ and. r0, r31, r0
+/* 80318EEC 00314B4C 40 82 00 58 */ bne lbl_80318F44
+/* 80318EF0 00314B50 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318EF4 00314B54 7F 43 D3 78 */ mr r3, r26
+/* 80318EF8 00314B58 7F 64 DB 78 */ mr r4, r27
+/* 80318EFC 00314B5C 7F 85 E3 78 */ mr r5, r28
+/* 80318F00 00314B60 7F E6 04 30 */ srw r6, r31, r0
+/* 80318F04 00314B64 38 E1 00 08 */ addi r7, r1, 8
+/* 80318F08 00314B68 4B FF 1B 3D */ bl VFiPFCACHE_WriteDataNumSectorAndFreeIfNeeded
+/* 80318F0C 00314B6C 2C 03 00 00 */ cmpwi r3, 0
+/* 80318F10 00314B70 41 82 00 08 */ beq lbl_80318F18
+/* 80318F14 00314B74 48 00 01 34 */ b lbl_80319048
+lbl_80318F18:
+/* 80318F18 00314B78 80 61 00 08 */ lwz r3, 8(r1)
+/* 80318F1C 00314B7C 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318F20 00314B80 7C 60 00 30 */ slw r0, r3, r0
+/* 80318F24 00314B84 90 1D 00 00 */ stw r0, 0(r29)
+/* 80318F28 00314B88 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318F2C 00314B8C 80 61 00 08 */ lwz r3, 8(r1)
+/* 80318F30 00314B90 7F E0 04 30 */ srw r0, r31, r0
+/* 80318F34 00314B94 7C 03 00 40 */ cmplw r3, r0
+/* 80318F38 00314B98 41 82 01 0C */ beq lbl_80319044
+/* 80318F3C 00314B9C 38 60 00 11 */ li r3, 0x11
+/* 80318F40 00314BA0 48 00 01 08 */ b lbl_80319048
+lbl_80318F44:
+/* 80318F44 00314BA4 2C 19 00 00 */ cmpwi r25, 0
+/* 80318F48 00314BA8 40 82 00 F4 */ bne lbl_8031903C
+/* 80318F4C 00314BAC 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318F50 00314BB0 80 7A 16 04 */ lwz r3, 0x1604(r26)
+/* 80318F54 00314BB4 7F FF 04 30 */ srw r31, r31, r0
+/* 80318F58 00314BB8 7C 9C FA 14 */ add r4, r28, r31
+/* 80318F5C 00314BBC 7C 04 1B 96 */ divwu r0, r4, r3
+/* 80318F60 00314BC0 7C 00 19 D6 */ mullw r0, r0, r3
+/* 80318F64 00314BC4 7C 00 20 50 */ subf r0, r0, r4
+/* 80318F68 00314BC8 7C 1F 00 40 */ cmplw r31, r0
+/* 80318F6C 00314BCC 40 81 00 58 */ ble lbl_80318FC4
+/* 80318F70 00314BD0 7F 20 F8 50 */ subf r25, r0, r31
+/* 80318F74 00314BD4 7F 43 D3 78 */ mr r3, r26
+/* 80318F78 00314BD8 7F 64 DB 78 */ mr r4, r27
+/* 80318F7C 00314BDC 7F 85 E3 78 */ mr r5, r28
+/* 80318F80 00314BE0 7F 26 CB 78 */ mr r6, r25
+/* 80318F84 00314BE4 38 E1 00 08 */ addi r7, r1, 8
+/* 80318F88 00314BE8 4B FF 1A BD */ bl VFiPFCACHE_WriteDataNumSectorAndFreeIfNeeded
+/* 80318F8C 00314BEC 2C 03 00 00 */ cmpwi r3, 0
+/* 80318F90 00314BF0 41 82 00 08 */ beq lbl_80318F98
+/* 80318F94 00314BF4 48 00 00 B4 */ b lbl_80319048
+lbl_80318F98:
+/* 80318F98 00314BF8 80 61 00 08 */ lwz r3, 8(r1)
+/* 80318F9C 00314BFC 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318FA0 00314C00 7C 60 00 30 */ slw r0, r3, r0
+/* 80318FA4 00314C04 90 1D 00 00 */ stw r0, 0(r29)
+/* 80318FA8 00314C08 80 01 00 08 */ lwz r0, 8(r1)
+/* 80318FAC 00314C0C 7C 00 C8 40 */ cmplw r0, r25
+/* 80318FB0 00314C10 41 82 00 0C */ beq lbl_80318FBC
+/* 80318FB4 00314C14 38 60 00 11 */ li r3, 0x11
+/* 80318FB8 00314C18 48 00 00 90 */ b lbl_80319048
+lbl_80318FBC:
+/* 80318FBC 00314C1C 7F 9C CA 14 */ add r28, r28, r25
+/* 80318FC0 00314C20 7F F9 F8 50 */ subf r31, r25, r31
+lbl_80318FC4:
+/* 80318FC4 00314C24 2C 1F 00 00 */ cmpwi r31, 0
+/* 80318FC8 00314C28 41 82 00 7C */ beq lbl_80319044
+/* 80318FCC 00314C2C 7F 43 D3 78 */ mr r3, r26
+/* 80318FD0 00314C30 7F 84 E3 78 */ mr r4, r28
+/* 80318FD4 00314C34 7F C6 F3 78 */ mr r6, r30
+/* 80318FD8 00314C38 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80318FDC 00314C3C 4B FF 18 F9 */ bl VFiPFCACHE_ReadDataPageAndFlushIfNeeded
+/* 80318FE0 00314C40 2C 03 00 00 */ cmpwi r3, 0
+/* 80318FE4 00314C44 41 82 00 08 */ beq lbl_80318FEC
+/* 80318FE8 00314C48 48 00 00 60 */ b lbl_80319048
+lbl_80318FEC:
+/* 80318FEC 00314C4C 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80318FF0 00314C50 80 9D 00 00 */ lwz r4, 0(r29)
+/* 80318FF4 00314C54 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80318FF8 00314C58 80 63 00 08 */ lwz r3, 8(r3)
+/* 80318FFC 00314C5C 7C 9B 22 14 */ add r4, r27, r4
+/* 80319000 00314C60 7F E5 00 30 */ slw r5, r31, r0
+/* 80319004 00314C64 4B FE BE A9 */ bl VFipf_memcpy
+/* 80319008 00314C68 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8031900C 00314C6C 7F 43 D3 78 */ mr r3, r26
+/* 80319010 00314C70 7F C5 F3 78 */ mr r5, r30
+/* 80319014 00314C74 4B FF 19 A5 */ bl VFiPFCACHE_WriteDataPage
+/* 80319018 00314C78 2C 03 00 00 */ cmpwi r3, 0
+/* 8031901C 00314C7C 41 82 00 08 */ beq lbl_80319024
+/* 80319020 00314C80 48 00 00 28 */ b lbl_80319048
+lbl_80319024:
+/* 80319024 00314C84 88 1A 00 20 */ lbz r0, 0x20(r26)
+/* 80319028 00314C88 80 7D 00 00 */ lwz r3, 0(r29)
+/* 8031902C 00314C8C 7F E0 00 30 */ slw r0, r31, r0
+/* 80319030 00314C90 7C 03 02 14 */ add r0, r3, r0
+/* 80319034 00314C94 90 1D 00 00 */ stw r0, 0(r29)
+/* 80319038 00314C98 48 00 00 0C */ b lbl_80319044
+lbl_8031903C:
+/* 8031903C 00314C9C 38 60 00 0A */ li r3, 0xa
+/* 80319040 00314CA0 48 00 00 08 */ b lbl_80319048
+lbl_80319044:
+/* 80319044 00314CA4 38 60 00 00 */ li r3, 0
+lbl_80319048:
+/* 80319048 00314CA8 39 61 00 30 */ addi r11, r1, 0x30
+/* 8031904C 00314CAC 4B EA E1 21 */ bl _restgpr_25
+/* 80319050 00314CB0 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80319054 00314CB4 7C 08 03 A6 */ mtlr r0
+/* 80319058 00314CB8 38 21 00 30 */ addi r1, r1, 0x30
+/* 8031905C 00314CBC 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_service.s b/asm/SDK/VF/pf_service.s new file mode 100644 index 0000000..1b6e086 --- /dev/null +++ b/asm/SDK/VF/pf_service.s @@ -0,0 +1,87 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPF_GET_LE_U16
+VFiPF_GET_LE_U16:
+/* 803051B0 00300E10 88 03 00 01 */ lbz r0, 1(r3)
+/* 803051B4 00300E14 88 63 00 00 */ lbz r3, 0(r3)
+/* 803051B8 00300E18 50 03 44 2E */ rlwimi r3, r0, 8, 0x10, 0x17
+/* 803051BC 00300E1C 4E 80 00 20 */ blr
+
+.global VFiPF_LE16_TO_U16_STR
+VFiPF_LE16_TO_U16_STR:
+/* 803051C0 00300E20 2C 04 00 00 */ cmpwi r4, 0
+/* 803051C4 00300E24 38 A0 00 00 */ li r5, 0
+/* 803051C8 00300E28 4D 82 00 20 */ beqlr
+/* 803051CC 00300E2C 38 C4 00 01 */ addi r6, r4, 1
+/* 803051D0 00300E30 38 E4 FF F0 */ addi r7, r4, -16
+/* 803051D4 00300E34 54 C0 F8 7E */ srwi r0, r6, 1
+/* 803051D8 00300E38 28 00 00 08 */ cmplwi r0, 8
+/* 803051DC 00300E3C 40 81 00 C4 */ ble lbl_803052A0
+/* 803051E0 00300E40 28 06 00 01 */ cmplwi r6, 1
+/* 803051E4 00300E44 38 00 00 00 */ li r0, 0
+/* 803051E8 00300E48 41 80 00 10 */ blt lbl_803051F8
+/* 803051EC 00300E4C 7C 04 30 40 */ cmplw r4, r6
+/* 803051F0 00300E50 41 81 00 08 */ bgt lbl_803051F8
+/* 803051F4 00300E54 38 00 00 01 */ li r0, 1
+lbl_803051F8:
+/* 803051F8 00300E58 2C 00 00 00 */ cmpwi r0, 0
+/* 803051FC 00300E5C 41 82 00 A4 */ beq lbl_803052A0
+/* 80305200 00300E60 38 07 00 0F */ addi r0, r7, 0xf
+/* 80305204 00300E64 54 00 E1 3E */ srwi r0, r0, 4
+/* 80305208 00300E68 7C 09 03 A6 */ mtctr r0
+/* 8030520C 00300E6C 28 07 00 00 */ cmplwi r7, 0
+/* 80305210 00300E70 40 81 00 90 */ ble lbl_803052A0
+lbl_80305214:
+/* 80305214 00300E74 7C E3 2A 14 */ add r7, r3, r5
+/* 80305218 00300E78 7C C3 28 AE */ lbzx r6, r3, r5
+/* 8030521C 00300E7C 88 07 00 01 */ lbz r0, 1(r7)
+/* 80305220 00300E80 7C 03 29 AE */ stbx r0, r3, r5
+/* 80305224 00300E84 38 A5 00 10 */ addi r5, r5, 0x10
+/* 80305228 00300E88 98 C7 00 01 */ stb r6, 1(r7)
+/* 8030522C 00300E8C 88 C7 00 02 */ lbz r6, 2(r7)
+/* 80305230 00300E90 88 07 00 03 */ lbz r0, 3(r7)
+/* 80305234 00300E94 98 07 00 02 */ stb r0, 2(r7)
+/* 80305238 00300E98 98 C7 00 03 */ stb r6, 3(r7)
+/* 8030523C 00300E9C 88 C7 00 04 */ lbz r6, 4(r7)
+/* 80305240 00300EA0 88 07 00 05 */ lbz r0, 5(r7)
+/* 80305244 00300EA4 98 07 00 04 */ stb r0, 4(r7)
+/* 80305248 00300EA8 98 C7 00 05 */ stb r6, 5(r7)
+/* 8030524C 00300EAC 88 C7 00 06 */ lbz r6, 6(r7)
+/* 80305250 00300EB0 88 07 00 07 */ lbz r0, 7(r7)
+/* 80305254 00300EB4 98 07 00 06 */ stb r0, 6(r7)
+/* 80305258 00300EB8 98 C7 00 07 */ stb r6, 7(r7)
+/* 8030525C 00300EBC 88 C7 00 08 */ lbz r6, 8(r7)
+/* 80305260 00300EC0 88 07 00 09 */ lbz r0, 9(r7)
+/* 80305264 00300EC4 98 07 00 08 */ stb r0, 8(r7)
+/* 80305268 00300EC8 98 C7 00 09 */ stb r6, 9(r7)
+/* 8030526C 00300ECC 88 C7 00 0A */ lbz r6, 0xa(r7)
+/* 80305270 00300ED0 88 07 00 0B */ lbz r0, 0xb(r7)
+/* 80305274 00300ED4 98 07 00 0A */ stb r0, 0xa(r7)
+/* 80305278 00300ED8 98 C7 00 0B */ stb r6, 0xb(r7)
+/* 8030527C 00300EDC 88 C7 00 0C */ lbz r6, 0xc(r7)
+/* 80305280 00300EE0 88 07 00 0D */ lbz r0, 0xd(r7)
+/* 80305284 00300EE4 98 07 00 0C */ stb r0, 0xc(r7)
+/* 80305288 00300EE8 98 C7 00 0D */ stb r6, 0xd(r7)
+/* 8030528C 00300EEC 88 C7 00 0E */ lbz r6, 0xe(r7)
+/* 80305290 00300EF0 88 07 00 0F */ lbz r0, 0xf(r7)
+/* 80305294 00300EF4 98 07 00 0E */ stb r0, 0xe(r7)
+/* 80305298 00300EF8 98 C7 00 0F */ stb r6, 0xf(r7)
+/* 8030529C 00300EFC 42 00 FF 78 */ bdnz lbl_80305214
+lbl_803052A0:
+/* 803052A0 00300F00 38 04 00 01 */ addi r0, r4, 1
+/* 803052A4 00300F04 7C 05 00 50 */ subf r0, r5, r0
+/* 803052A8 00300F08 54 00 F8 7E */ srwi r0, r0, 1
+/* 803052AC 00300F0C 7C 09 03 A6 */ mtctr r0
+/* 803052B0 00300F10 7C 05 20 40 */ cmplw r5, r4
+/* 803052B4 00300F14 4C 80 00 20 */ bgelr
+lbl_803052B8:
+/* 803052B8 00300F18 7C C3 2A 14 */ add r6, r3, r5
+/* 803052BC 00300F1C 7C 83 28 AE */ lbzx r4, r3, r5
+/* 803052C0 00300F20 88 06 00 01 */ lbz r0, 1(r6)
+/* 803052C4 00300F24 7C 03 29 AE */ stbx r0, r3, r5
+/* 803052C8 00300F28 38 A5 00 02 */ addi r5, r5, 2
+/* 803052CC 00300F2C 98 86 00 01 */ stb r4, 1(r6)
+/* 803052D0 00300F30 42 00 FF E8 */ bdnz lbl_803052B8
+/* 803052D4 00300F34 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_str.s b/asm/SDK/VF/pf_str.s new file mode 100644 index 0000000..dc41d67 --- /dev/null +++ b/asm/SDK/VF/pf_str.s @@ -0,0 +1,439 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFSTR_SetCodeMode
+VFiPFSTR_SetCodeMode:
+/* 803052D8 00300F38 90 83 00 0C */ stw r4, 0xc(r3)
+/* 803052DC 00300F3C 4E 80 00 20 */ blr
+
+.global VFiPFSTR_GetCodeMode
+VFiPFSTR_GetCodeMode:
+/* 803052E0 00300F40 80 63 00 0C */ lwz r3, 0xc(r3)
+/* 803052E4 00300F44 4E 80 00 20 */ blr
+
+.global VFiPFSTR_SetLocalStr
+VFiPFSTR_SetLocalStr:
+/* 803052E8 00300F48 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 803052EC 00300F4C 28 00 00 01 */ cmplwi r0, 1
+/* 803052F0 00300F50 41 82 00 0C */ beq lbl_803052FC
+/* 803052F4 00300F54 2C 04 00 00 */ cmpwi r4, 0
+/* 803052F8 00300F58 40 82 00 10 */ bne lbl_80305308
+lbl_803052FC:
+/* 803052FC 00300F5C 80 03 00 00 */ lwz r0, 0(r3)
+/* 80305300 00300F60 90 03 00 08 */ stw r0, 8(r3)
+/* 80305304 00300F64 4E 80 00 20 */ blr
+lbl_80305308:
+/* 80305308 00300F68 90 83 00 08 */ stw r4, 8(r3)
+/* 8030530C 00300F6C 4E 80 00 20 */ blr
+
+.global VFiPFSTR_GetStrPos
+VFiPFSTR_GetStrPos:
+/* 80305310 00300F70 28 04 00 01 */ cmplwi r4, 1
+/* 80305314 00300F74 40 82 00 0C */ bne lbl_80305320
+/* 80305318 00300F78 80 63 00 00 */ lwz r3, 0(r3)
+/* 8030531C 00300F7C 4E 80 00 20 */ blr
+lbl_80305320:
+/* 80305320 00300F80 28 04 00 02 */ cmplwi r4, 2
+/* 80305324 00300F84 40 82 00 0C */ bne lbl_80305330
+/* 80305328 00300F88 80 63 00 04 */ lwz r3, 4(r3)
+/* 8030532C 00300F8C 4E 80 00 20 */ blr
+lbl_80305330:
+/* 80305330 00300F90 80 63 00 08 */ lwz r3, 8(r3)
+/* 80305334 00300F94 4E 80 00 20 */ blr
+
+.global VFiPFSTR_MoveStrPos
+VFiPFSTR_MoveStrPos:
+/* 80305338 00300F98 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030533C 00300F9C 7C 08 02 A6 */ mflr r0
+/* 80305340 00300FA0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80305344 00300FA4 39 61 00 20 */ addi r11, r1, 0x20
+/* 80305348 00300FA8 4B EC 1D DD */ bl _savegpr_26
+/* 8030534C 00300FAC 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80305350 00300FB0 7C 7F 1B 78 */ mr r31, r3
+/* 80305354 00300FB4 7C 9A 23 78 */ mr r26, r4
+/* 80305358 00300FB8 3B 80 00 00 */ li r28, 0
+/* 8030535C 00300FBC 28 00 00 01 */ cmplwi r0, 1
+/* 80305360 00300FC0 40 82 00 50 */ bne lbl_803053B0
+/* 80305364 00300FC4 3F C0 80 58 */ lis r30, lbl_8057F5C8@ha
+/* 80305368 00300FC8 83 A3 00 00 */ lwz r29, 0(r3)
+/* 8030536C 00300FCC 3B DE F5 C8 */ addi r30, r30, lbl_8057F5C8@l
+/* 80305370 00300FD0 48 00 00 34 */ b lbl_803053A4
+lbl_80305374:
+/* 80305374 00300FD4 88 1D 00 00 */ lbz r0, 0(r29)
+/* 80305378 00300FD8 38 80 00 01 */ li r4, 1
+/* 8030537C 00300FDC 81 9E 00 30 */ lwz r12, 0x30(r30)
+/* 80305380 00300FE0 7C 03 07 74 */ extsb r3, r0
+/* 80305384 00300FE4 7D 89 03 A6 */ mtctr r12
+/* 80305388 00300FE8 4E 80 04 21 */ bctrl
+/* 8030538C 00300FEC 2C 03 00 00 */ cmpwi r3, 0
+/* 80305390 00300FF0 41 82 00 0C */ beq lbl_8030539C
+/* 80305394 00300FF4 38 1C 00 01 */ addi r0, r28, 1
+/* 80305398 00300FF8 7C 1C 07 34 */ extsh r28, r0
+lbl_8030539C:
+/* 8030539C 00300FFC 3B 9C 00 01 */ addi r28, r28, 1
+/* 803053A0 00301000 3B 5A FF FF */ addi r26, r26, -1
+lbl_803053A4:
+/* 803053A4 00301004 7F 40 07 35 */ extsh. r0, r26
+/* 803053A8 00301008 40 82 FF CC */ bne lbl_80305374
+/* 803053AC 0030100C 48 00 00 48 */ b lbl_803053F4
+lbl_803053B0:
+/* 803053B0 00301010 3F C0 80 58 */ lis r30, lbl_8057F5C8@ha
+/* 803053B4 00301014 83 63 00 00 */ lwz r27, 0(r3)
+/* 803053B8 00301018 3B DE F5 C8 */ addi r30, r30, lbl_8057F5C8@l
+/* 803053BC 0030101C 3B A0 00 00 */ li r29, 0
+/* 803053C0 00301020 48 00 00 28 */ b lbl_803053E8
+lbl_803053C4:
+/* 803053C4 00301024 81 9E 00 34 */ lwz r12, 0x34(r30)
+/* 803053C8 00301028 7F 63 DB 78 */ mr r3, r27
+/* 803053CC 0030102C 7D 89 03 A6 */ mtctr r12
+/* 803053D0 00301030 4E 80 04 21 */ bctrl
+/* 803053D4 00301034 54 64 08 3C */ slwi r4, r3, 1
+/* 803053D8 00301038 7C 60 07 34 */ extsh r0, r3
+/* 803053DC 0030103C 7F 7B 22 14 */ add r27, r27, r4
+/* 803053E0 00301040 3B BD 00 01 */ addi r29, r29, 1
+/* 803053E4 00301044 7F 9C 02 14 */ add r28, r28, r0
+lbl_803053E8:
+/* 803053E8 00301048 7F A0 07 34 */ extsh r0, r29
+/* 803053EC 0030104C 7C 00 D0 00 */ cmpw r0, r26
+/* 803053F0 00301050 41 80 FF D4 */ blt lbl_803053C4
+lbl_803053F4:
+/* 803053F4 00301054 80 7F 00 00 */ lwz r3, 0(r31)
+/* 803053F8 00301058 7F 80 07 34 */ extsh r0, r28
+/* 803053FC 0030105C 39 61 00 20 */ addi r11, r1, 0x20
+/* 80305400 00301060 7C 03 02 14 */ add r0, r3, r0
+/* 80305404 00301064 90 1F 00 00 */ stw r0, 0(r31)
+/* 80305408 00301068 4B EC 1D 69 */ bl _restgpr_26
+/* 8030540C 0030106C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80305410 00301070 7C 08 03 A6 */ mtlr r0
+/* 80305414 00301074 38 21 00 20 */ addi r1, r1, 0x20
+/* 80305418 00301078 4E 80 00 20 */ blr
+
+.global VFiPFSTR_InitStr
+VFiPFSTR_InitStr:
+/* 8030541C 0030107C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80305420 00301080 7C 08 02 A6 */ mflr r0
+/* 80305424 00301084 2C 03 00 00 */ cmpwi r3, 0
+/* 80305428 00301088 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030542C 0030108C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80305430 00301090 7C BF 2B 78 */ mr r31, r5
+/* 80305434 00301094 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80305438 00301098 7C 9E 23 78 */ mr r30, r4
+/* 8030543C 0030109C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80305440 003010A0 7C 7D 1B 78 */ mr r29, r3
+/* 80305444 003010A4 41 82 00 0C */ beq lbl_80305450
+/* 80305448 003010A8 2C 04 00 00 */ cmpwi r4, 0
+/* 8030544C 003010AC 40 82 00 0C */ bne lbl_80305458
+lbl_80305450:
+/* 80305450 003010B0 38 60 00 0A */ li r3, 0xa
+/* 80305454 003010B4 48 00 00 58 */ b lbl_803054AC
+lbl_80305458:
+/* 80305458 003010B8 28 05 00 01 */ cmplwi r5, 1
+/* 8030545C 003010BC 40 82 00 1C */ bne lbl_80305478
+/* 80305460 003010C0 90 83 00 00 */ stw r4, 0(r3)
+/* 80305464 003010C4 7F C3 F3 78 */ mr r3, r30
+/* 80305468 003010C8 4B FF FC 65 */ bl VFipf_strlen
+/* 8030546C 003010CC 7C 1E 1A 14 */ add r0, r30, r3
+/* 80305470 003010D0 90 1D 00 04 */ stw r0, 4(r29)
+/* 80305474 003010D4 48 00 00 30 */ b lbl_803054A4
+lbl_80305478:
+/* 80305478 003010D8 28 05 00 02 */ cmplwi r5, 2
+/* 8030547C 003010DC 40 82 00 20 */ bne lbl_8030549C
+/* 80305480 003010E0 90 83 00 00 */ stw r4, 0(r3)
+/* 80305484 003010E4 7F C3 F3 78 */ mr r3, r30
+/* 80305488 003010E8 48 00 03 D9 */ bl VFipf_w_strlen
+/* 8030548C 003010EC 54 60 08 3C */ slwi r0, r3, 1
+/* 80305490 003010F0 7C 1E 02 14 */ add r0, r30, r0
+/* 80305494 003010F4 90 1D 00 04 */ stw r0, 4(r29)
+/* 80305498 003010F8 48 00 00 0C */ b lbl_803054A4
+lbl_8030549C:
+/* 8030549C 003010FC 38 60 00 0A */ li r3, 0xa
+/* 803054A0 00301100 48 00 00 0C */ b lbl_803054AC
+lbl_803054A4:
+/* 803054A4 00301104 93 FD 00 0C */ stw r31, 0xc(r29)
+/* 803054A8 00301108 38 60 00 00 */ li r3, 0
+lbl_803054AC:
+/* 803054AC 0030110C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803054B0 00301110 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803054B4 00301114 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803054B8 00301118 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 803054BC 0030111C 7C 08 03 A6 */ mtlr r0
+/* 803054C0 00301120 38 21 00 20 */ addi r1, r1, 0x20
+/* 803054C4 00301124 4E 80 00 20 */ blr
+
+.global VFiPFSTR_StrLen
+VFiPFSTR_StrLen:
+/* 803054C8 00301128 80 83 00 00 */ lwz r4, 0(r3)
+/* 803054CC 0030112C 80 03 00 04 */ lwz r0, 4(r3)
+/* 803054D0 00301130 7C 04 00 50 */ subf r0, r4, r0
+/* 803054D4 00301134 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 803054D8 00301138 4E 80 00 20 */ blr
+
+.global VFiPFSTR_StrNumChar
+VFiPFSTR_StrNumChar:
+/* 803054DC 0030113C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 803054E0 00301140 7C 08 02 A6 */ mflr r0
+/* 803054E4 00301144 28 04 00 01 */ cmplwi r4, 1
+/* 803054E8 00301148 90 01 00 24 */ stw r0, 0x24(r1)
+/* 803054EC 0030114C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 803054F0 00301150 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 803054F4 00301154 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 803054F8 00301158 40 82 00 0C */ bne lbl_80305504
+/* 803054FC 0030115C 83 C3 00 00 */ lwz r30, 0(r3)
+/* 80305500 00301160 48 00 00 08 */ b lbl_80305508
+lbl_80305504:
+/* 80305504 00301164 83 C3 00 04 */ lwz r30, 4(r3)
+lbl_80305508:
+/* 80305508 00301168 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 8030550C 0030116C 28 00 00 01 */ cmplwi r0, 1
+/* 80305510 00301170 40 82 00 4C */ bne lbl_8030555C
+/* 80305514 00301174 3F E0 80 58 */ lis r31, lbl_8057F5C8@ha
+/* 80305518 00301178 3B A0 00 00 */ li r29, 0
+/* 8030551C 0030117C 3B FF F5 C8 */ addi r31, r31, lbl_8057F5C8@l
+/* 80305520 00301180 48 00 00 2C */ b lbl_8030554C
+lbl_80305524:
+/* 80305524 00301184 81 9F 00 30 */ lwz r12, 0x30(r31)
+/* 80305528 00301188 7C 63 07 74 */ extsb r3, r3
+/* 8030552C 0030118C 38 80 00 01 */ li r4, 1
+/* 80305530 00301190 7D 89 03 A6 */ mtctr r12
+/* 80305534 00301194 4E 80 04 21 */ bctrl
+/* 80305538 00301198 2C 03 00 00 */ cmpwi r3, 0
+/* 8030553C 0030119C 41 82 00 08 */ beq lbl_80305544
+/* 80305540 003011A0 3B DE 00 01 */ addi r30, r30, 1
+lbl_80305544:
+/* 80305544 003011A4 3B DE 00 01 */ addi r30, r30, 1
+/* 80305548 003011A8 3B BD 00 01 */ addi r29, r29, 1
+lbl_8030554C:
+/* 8030554C 003011AC 88 7E 00 00 */ lbz r3, 0(r30)
+/* 80305550 003011B0 7C 60 07 75 */ extsb. r0, r3
+/* 80305554 003011B4 40 82 FF D0 */ bne lbl_80305524
+/* 80305558 003011B8 48 00 00 44 */ b lbl_8030559C
+lbl_8030555C:
+/* 8030555C 003011BC 3F E0 80 58 */ lis r31, lbl_8057F5C8@ha
+/* 80305560 003011C0 3B A0 00 00 */ li r29, 0
+/* 80305564 003011C4 3B FF F5 C8 */ addi r31, r31, lbl_8057F5C8@l
+/* 80305568 003011C8 48 00 00 1C */ b lbl_80305584
+lbl_8030556C:
+/* 8030556C 003011CC 81 9F 00 34 */ lwz r12, 0x34(r31)
+/* 80305570 003011D0 7F C3 F3 78 */ mr r3, r30
+/* 80305574 003011D4 7D 89 03 A6 */ mtctr r12
+/* 80305578 003011D8 4E 80 04 21 */ bctrl
+/* 8030557C 003011DC 7F DE 1A 14 */ add r30, r30, r3
+/* 80305580 003011E0 3B BD 00 01 */ addi r29, r29, 1
+lbl_80305584:
+/* 80305584 003011E4 88 1E 00 00 */ lbz r0, 0(r30)
+/* 80305588 003011E8 7C 00 07 75 */ extsb. r0, r0
+/* 8030558C 003011EC 40 82 FF E0 */ bne lbl_8030556C
+/* 80305590 003011F0 88 1E 00 01 */ lbz r0, 1(r30)
+/* 80305594 003011F4 7C 00 07 75 */ extsb. r0, r0
+/* 80305598 003011F8 40 82 FF D4 */ bne lbl_8030556C
+lbl_8030559C:
+/* 8030559C 003011FC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803055A0 00301200 7F A3 EB 78 */ mr r3, r29
+/* 803055A4 00301204 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803055A8 00301208 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 803055AC 0030120C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803055B0 00301210 7C 08 03 A6 */ mtlr r0
+/* 803055B4 00301214 38 21 00 20 */ addi r1, r1, 0x20
+/* 803055B8 00301218 4E 80 00 20 */ blr
+
+.global VFiPFSTR_StrCmp
+VFiPFSTR_StrCmp:
+/* 803055BC 0030121C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 803055C0 00301220 7C 08 02 A6 */ mflr r0
+/* 803055C4 00301224 90 01 00 24 */ stw r0, 0x24(r1)
+/* 803055C8 00301228 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 803055CC 0030122C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 803055D0 00301230 28 00 00 01 */ cmplwi r0, 1
+/* 803055D4 00301234 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 803055D8 00301238 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 803055DC 0030123C 7C 9D 23 78 */ mr r29, r4
+/* 803055E0 00301240 40 82 00 10 */ bne lbl_803055F0
+/* 803055E4 00301244 80 63 00 00 */ lwz r3, 0(r3)
+/* 803055E8 00301248 4B FF FB 29 */ bl VFipf_strcmp
+/* 803055EC 0030124C 48 00 00 58 */ b lbl_80305644
+lbl_803055F0:
+/* 803055F0 00301250 3F E0 80 58 */ lis r31, lbl_8057F5C8@ha
+/* 803055F4 00301254 83 C3 00 00 */ lwz r30, 0(r3)
+/* 803055F8 00301258 3B FF F5 C8 */ addi r31, r31, lbl_8057F5C8@l
+lbl_803055FC:
+/* 803055FC 0030125C 81 9F 00 24 */ lwz r12, 0x24(r31)
+/* 80305600 00301260 7F A3 EB 78 */ mr r3, r29
+/* 80305604 00301264 38 81 00 08 */ addi r4, r1, 8
+/* 80305608 00301268 7D 89 03 A6 */ mtctr r12
+/* 8030560C 0030126C 4E 80 04 21 */ bctrl
+/* 80305610 00301270 A0 1E 00 00 */ lhz r0, 0(r30)
+/* 80305614 00301274 3B BD 00 01 */ addi r29, r29, 1
+/* 80305618 00301278 A0 61 00 08 */ lhz r3, 8(r1)
+/* 8030561C 0030127C 3B DE 00 02 */ addi r30, r30, 2
+/* 80305620 00301280 7C 00 18 40 */ cmplw r0, r3
+/* 80305624 00301284 40 82 00 18 */ bne lbl_8030563C
+/* 80305628 00301288 A0 1E FF FE */ lhz r0, -2(r30)
+/* 8030562C 0030128C 2C 00 00 00 */ cmpwi r0, 0
+/* 80305630 00301290 41 82 00 0C */ beq lbl_8030563C
+/* 80305634 00301294 2C 03 00 00 */ cmpwi r3, 0
+/* 80305638 00301298 40 82 FF C4 */ bne lbl_803055FC
+lbl_8030563C:
+/* 8030563C 0030129C A0 1E FF FE */ lhz r0, -2(r30)
+/* 80305640 003012A0 7C 63 00 50 */ subf r3, r3, r0
+lbl_80305644:
+/* 80305644 003012A4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80305648 003012A8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030564C 003012AC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80305650 003012B0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80305654 003012B4 7C 08 03 A6 */ mtlr r0
+/* 80305658 003012B8 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030565C 003012BC 4E 80 00 20 */ blr
+
+.global VFiPFSTR_StrNCmp
+VFiPFSTR_StrNCmp:
+/* 80305660 003012C0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80305664 003012C4 7C 08 02 A6 */ mflr r0
+/* 80305668 003012C8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030566C 003012CC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80305670 003012D0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80305674 003012D4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80305678 003012D8 7C FD 3B 78 */ mr r29, r7
+/* 8030567C 003012DC 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80305680 003012E0 7C 9C 23 78 */ mr r28, r4
+/* 80305684 003012E4 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80305688 003012E8 28 00 00 01 */ cmplwi r0, 1
+/* 8030568C 003012EC 41 82 00 0C */ beq lbl_80305698
+/* 80305690 003012F0 28 05 00 03 */ cmplwi r5, 3
+/* 80305694 003012F4 40 82 00 44 */ bne lbl_803056D8
+lbl_80305698:
+/* 80305698 003012F8 28 05 00 01 */ cmplwi r5, 1
+/* 8030569C 003012FC 40 82 00 10 */ bne lbl_803056AC
+/* 803056A0 00301300 80 03 00 00 */ lwz r0, 0(r3)
+/* 803056A4 00301304 7C 60 32 14 */ add r3, r0, r6
+/* 803056A8 00301308 48 00 00 20 */ b lbl_803056C8
+lbl_803056AC:
+/* 803056AC 0030130C 28 05 00 02 */ cmplwi r5, 2
+/* 803056B0 00301310 40 82 00 10 */ bne lbl_803056C0
+/* 803056B4 00301314 80 03 00 04 */ lwz r0, 4(r3)
+/* 803056B8 00301318 7C 60 32 14 */ add r3, r0, r6
+/* 803056BC 0030131C 48 00 00 0C */ b lbl_803056C8
+lbl_803056C0:
+/* 803056C0 00301320 80 03 00 08 */ lwz r0, 8(r3)
+/* 803056C4 00301324 7C 60 32 14 */ add r3, r0, r6
+lbl_803056C8:
+/* 803056C8 00301328 7F 84 E3 78 */ mr r4, r28
+/* 803056CC 0030132C 7F A5 EB 78 */ mr r5, r29
+/* 803056D0 00301330 4B FF FA 79 */ bl VFipf_strncmp
+/* 803056D4 00301334 48 00 00 84 */ b lbl_80305758
+lbl_803056D8:
+/* 803056D8 00301338 28 05 00 01 */ cmplwi r5, 1
+/* 803056DC 0030133C 40 82 00 14 */ bne lbl_803056F0
+/* 803056E0 00301340 80 63 00 00 */ lwz r3, 0(r3)
+/* 803056E4 00301344 54 C0 08 3C */ slwi r0, r6, 1
+/* 803056E8 00301348 7F C3 02 14 */ add r30, r3, r0
+/* 803056EC 0030134C 48 00 00 10 */ b lbl_803056FC
+lbl_803056F0:
+/* 803056F0 00301350 80 63 00 04 */ lwz r3, 4(r3)
+/* 803056F4 00301354 54 C0 08 3C */ slwi r0, r6, 1
+/* 803056F8 00301358 7F C3 02 14 */ add r30, r3, r0
+lbl_803056FC:
+/* 803056FC 0030135C 3F E0 80 58 */ lis r31, lbl_8057F5C8@ha
+/* 80305700 00301360 3B FF F5 C8 */ addi r31, r31, lbl_8057F5C8@l
+lbl_80305704:
+/* 80305704 00301364 81 9F 00 24 */ lwz r12, 0x24(r31)
+/* 80305708 00301368 7F 83 E3 78 */ mr r3, r28
+/* 8030570C 0030136C 38 81 00 08 */ addi r4, r1, 8
+/* 80305710 00301370 7D 89 03 A6 */ mtctr r12
+/* 80305714 00301374 4E 80 04 21 */ bctrl
+/* 80305718 00301378 A0 1E 00 00 */ lhz r0, 0(r30)
+/* 8030571C 0030137C 3B 9C 00 01 */ addi r28, r28, 1
+/* 80305720 00301380 A0 61 00 08 */ lhz r3, 8(r1)
+/* 80305724 00301384 3B BD FF FF */ addi r29, r29, -1
+/* 80305728 00301388 3B DE 00 02 */ addi r30, r30, 2
+/* 8030572C 0030138C 7C 00 18 40 */ cmplw r0, r3
+/* 80305730 00301390 40 82 00 20 */ bne lbl_80305750
+/* 80305734 00301394 57 A0 04 3F */ clrlwi. r0, r29, 0x10
+/* 80305738 00301398 41 82 00 18 */ beq lbl_80305750
+/* 8030573C 0030139C A0 1E FF FE */ lhz r0, -2(r30)
+/* 80305740 003013A0 2C 00 00 00 */ cmpwi r0, 0
+/* 80305744 003013A4 41 82 00 0C */ beq lbl_80305750
+/* 80305748 003013A8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030574C 003013AC 40 82 FF B8 */ bne lbl_80305704
+lbl_80305750:
+/* 80305750 003013B0 A0 1E FF FE */ lhz r0, -2(r30)
+/* 80305754 003013B4 7C 63 00 50 */ subf r3, r3, r0
+lbl_80305758:
+/* 80305758 003013B8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030575C 003013BC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80305760 003013C0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80305764 003013C4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80305768 003013C8 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030576C 003013CC 7C 08 03 A6 */ mtlr r0
+/* 80305770 003013D0 38 21 00 20 */ addi r1, r1, 0x20
+/* 80305774 003013D4 4E 80 00 20 */ blr
+
+.global VFiPFSTR_ToUpperNStr
+VFiPFSTR_ToUpperNStr:
+/* 80305778 003013D8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030577C 003013DC 7C 08 02 A6 */ mflr r0
+/* 80305780 003013E0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80305784 003013E4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80305788 003013E8 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030578C 003013EC 7C BE 2B 78 */ mr r30, r5
+/* 80305790 003013F0 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80305794 003013F4 7C 9D 23 78 */ mr r29, r4
+/* 80305798 003013F8 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 8030579C 003013FC 28 00 00 01 */ cmplwi r0, 1
+/* 803057A0 00301400 40 82 00 3C */ bne lbl_803057DC
+/* 803057A4 00301404 83 E3 00 00 */ lwz r31, 0(r3)
+/* 803057A8 00301408 48 00 00 1C */ b lbl_803057C4
+lbl_803057AC:
+/* 803057AC 0030140C 7C 63 07 74 */ extsb r3, r3
+/* 803057B0 00301410 4B FF F6 E5 */ bl VFipf_toupper
+/* 803057B4 00301414 98 7E 00 00 */ stb r3, 0(r30)
+/* 803057B8 00301418 3B DE 00 01 */ addi r30, r30, 1
+/* 803057BC 0030141C 3B FF 00 01 */ addi r31, r31, 1
+/* 803057C0 00301420 3B BD FF FF */ addi r29, r29, -1
+lbl_803057C4:
+/* 803057C4 00301424 57 A0 04 3F */ clrlwi. r0, r29, 0x10
+/* 803057C8 00301428 41 82 00 74 */ beq lbl_8030583C
+/* 803057CC 0030142C 88 7F 00 00 */ lbz r3, 0(r31)
+/* 803057D0 00301430 7C 60 07 75 */ extsb. r0, r3
+/* 803057D4 00301434 40 82 FF D8 */ bne lbl_803057AC
+/* 803057D8 00301438 48 00 00 64 */ b lbl_8030583C
+lbl_803057DC:
+/* 803057DC 0030143C 80 83 00 00 */ lwz r4, 0(r3)
+/* 803057E0 00301440 48 00 00 40 */ b lbl_80305820
+lbl_803057E4:
+/* 803057E4 00301444 28 03 00 61 */ cmplwi r3, 0x61
+/* 803057E8 00301448 38 00 00 00 */ li r0, 0
+/* 803057EC 0030144C 41 80 00 10 */ blt lbl_803057FC
+/* 803057F0 00301450 28 03 00 7A */ cmplwi r3, 0x7a
+/* 803057F4 00301454 41 81 00 08 */ bgt lbl_803057FC
+/* 803057F8 00301458 38 00 00 01 */ li r0, 1
+lbl_803057FC:
+/* 803057FC 0030145C 2C 00 00 00 */ cmpwi r0, 0
+/* 80305800 00301460 41 82 00 08 */ beq lbl_80305808
+/* 80305804 00301464 38 63 FF E0 */ addi r3, r3, -32
+lbl_80305808:
+/* 80305808 00301468 98 7E 00 00 */ stb r3, 0(r30)
+/* 8030580C 0030146C 54 60 C6 3E */ rlwinm r0, r3, 0x18, 0x18, 0x1f
+/* 80305810 00301470 38 84 00 02 */ addi r4, r4, 2
+/* 80305814 00301474 3B BD FF FF */ addi r29, r29, -1
+/* 80305818 00301478 98 1E 00 01 */ stb r0, 1(r30)
+/* 8030581C 0030147C 3B DE 00 02 */ addi r30, r30, 2
+lbl_80305820:
+/* 80305820 00301480 57 A0 04 3F */ clrlwi. r0, r29, 0x10
+/* 80305824 00301484 41 82 00 10 */ beq lbl_80305834
+/* 80305828 00301488 A0 64 00 00 */ lhz r3, 0(r4)
+/* 8030582C 0030148C 2C 03 00 00 */ cmpwi r3, 0
+/* 80305830 00301490 40 82 FF B4 */ bne lbl_803057E4
+lbl_80305834:
+/* 80305834 00301494 38 00 00 00 */ li r0, 0
+/* 80305838 00301498 98 1E 00 00 */ stb r0, 0(r30)
+lbl_8030583C:
+/* 8030583C 0030149C 38 00 00 00 */ li r0, 0
+/* 80305840 003014A0 98 1E 00 00 */ stb r0, 0(r30)
+/* 80305844 003014A4 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80305848 003014A8 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030584C 003014AC 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80305850 003014B0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80305854 003014B4 7C 08 03 A6 */ mtlr r0
+/* 80305858 003014B8 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030585C 003014BC 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_volume.s b/asm/SDK/VF/pf_volume.s new file mode 100644 index 0000000..7ddacbf --- /dev/null +++ b/asm/SDK/VF/pf_volume.s @@ -0,0 +1,877 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFVOL_DoMountVolume
+VFiPFVOL_DoMountVolume:
+/* 80319060 00314CC0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80319064 00314CC4 7C 08 02 A6 */ mflr r0
+/* 80319068 00314CC8 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8031906C 00314CCC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80319070 00314CD0 7C 7F 1B 78 */ mr r31, r3
+/* 80319074 00314CD4 4B FE CD 61 */ bl VFiPFDRV_mount
+/* 80319078 00314CD8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031907C 00314CDC 41 82 00 08 */ beq lbl_80319084
+/* 80319080 00314CE0 48 00 01 4C */ b lbl_803191CC
+lbl_80319084:
+/* 80319084 00314CE4 A0 1F 00 00 */ lhz r0, 0(r31)
+/* 80319088 00314CE8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031908C 00314CEC 41 82 00 0C */ beq lbl_80319098
+/* 80319090 00314CF0 54 00 05 FF */ clrlwi. r0, r0, 0x17
+/* 80319094 00314CF4 41 82 00 0C */ beq lbl_803190A0
+lbl_80319098:
+/* 80319098 00314CF8 38 60 00 0F */ li r3, 0xf
+/* 8031909C 00314CFC 48 00 01 30 */ b lbl_803191CC
+lbl_803190A0:
+/* 803190A0 00314D00 7F E3 FB 78 */ mr r3, r31
+/* 803190A4 00314D04 4B FF 14 85 */ bl VFiPFCACHE_InitCaches
+/* 803190A8 00314D08 2C 03 00 00 */ cmpwi r3, 0
+/* 803190AC 00314D0C 41 82 00 08 */ beq lbl_803190B4
+/* 803190B0 00314D10 48 00 01 1C */ b lbl_803191CC
+lbl_803190B4:
+/* 803190B4 00314D14 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803190B8 00314D18 60 03 00 02 */ ori r3, r0, 2
+/* 803190BC 00314D1C 54 60 07 BD */ rlwinm. r0, r3, 0, 0x1e, 0x1e
+/* 803190C0 00314D20 B0 7F 18 78 */ sth r3, 0x1878(r31)
+/* 803190C4 00314D24 40 82 00 0C */ bne lbl_803190D0
+/* 803190C8 00314D28 38 60 00 09 */ li r3, 9
+/* 803190CC 00314D2C 48 00 00 A0 */ b lbl_8031916C
+lbl_803190D0:
+/* 803190D0 00314D30 38 61 00 08 */ addi r3, r1, 8
+/* 803190D4 00314D34 48 00 13 59 */ bl MWInitializeMutex
+/* 803190D8 00314D38 80 1F 16 18 */ lwz r0, 0x1618(r31)
+/* 803190DC 00314D3C 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 803190E0 00314D40 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 803190E4 00314D44 38 80 00 01 */ li r4, 1
+/* 803190E8 00314D48 60 00 00 01 */ ori r0, r0, 1
+/* 803190EC 00314D4C 90 1F 16 18 */ stw r0, 0x1618(r31)
+/* 803190F0 00314D50 38 A3 00 08 */ addi r5, r3, 8
+/* 803190F4 00314D54 80 61 00 08 */ lwz r3, 8(r1)
+/* 803190F8 00314D58 48 00 00 30 */ b lbl_80319128
+lbl_803190FC:
+/* 803190FC 00314D5C 80 05 00 40 */ lwz r0, 0x40(r5)
+/* 80319100 00314D60 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80319104 00314D64 90 05 00 40 */ stw r0, 0x40(r5)
+/* 80319108 00314D68 41 82 00 18 */ beq lbl_80319120
+/* 8031910C 00314D6C 80 05 00 44 */ lwz r0, 0x44(r5)
+/* 80319110 00314D70 7C 03 00 00 */ cmpw r3, r0
+/* 80319114 00314D74 40 82 00 0C */ bne lbl_80319120
+/* 80319118 00314D78 38 00 00 01 */ li r0, 1
+/* 8031911C 00314D7C 48 00 00 18 */ b lbl_80319134
+lbl_80319120:
+/* 80319120 00314D80 38 A5 00 08 */ addi r5, r5, 8
+/* 80319124 00314D84 38 84 00 01 */ addi r4, r4, 1
+lbl_80319128:
+/* 80319128 00314D88 28 04 00 01 */ cmplwi r4, 1
+/* 8031912C 00314D8C 41 80 FF D0 */ blt lbl_803190FC
+/* 80319130 00314D90 38 00 00 00 */ li r0, 0
+lbl_80319134:
+/* 80319134 00314D94 2C 00 00 00 */ cmpwi r0, 0
+/* 80319138 00314D98 41 82 00 18 */ beq lbl_80319150
+/* 8031913C 00314D9C 80 1F 18 60 */ lwz r0, 0x1860(r31)
+/* 80319140 00314DA0 60 00 00 01 */ ori r0, r0, 1
+/* 80319144 00314DA4 90 1F 18 60 */ stw r0, 0x1860(r31)
+/* 80319148 00314DA8 80 01 00 08 */ lwz r0, 8(r1)
+/* 8031914C 00314DAC 90 1F 18 64 */ stw r0, 0x1864(r31)
+lbl_80319150:
+/* 80319150 00314DB0 38 9F 16 20 */ addi r4, r31, 0x1620
+/* 80319154 00314DB4 7F E3 FB 78 */ mr r3, r31
+/* 80319158 00314DB8 4B FF 35 AD */ bl VFiPFENT_GetRootDir
+/* 8031915C 00314DBC 2C 03 00 00 */ cmpwi r3, 0
+/* 80319160 00314DC0 41 82 00 08 */ beq lbl_80319168
+/* 80319164 00314DC4 48 00 00 08 */ b lbl_8031916C
+lbl_80319168:
+/* 80319168 00314DC8 38 60 00 00 */ li r3, 0
+lbl_8031916C:
+/* 8031916C 00314DCC 2C 03 00 00 */ cmpwi r3, 0
+/* 80319170 00314DD0 40 82 00 48 */ bne lbl_803191B8
+/* 80319174 00314DD4 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 80319178 00314DD8 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8031917C 00314DDC 41 82 00 3C */ beq lbl_803191B8
+/* 80319180 00314DE0 80 9F 18 94 */ lwz r4, 0x1894(r31)
+/* 80319184 00314DE4 7F E3 FB 78 */ mr r3, r31
+/* 80319188 00314DE8 4B FE CF 0D */ bl VFiPFDRV_format
+/* 8031918C 00314DEC 2C 03 00 00 */ cmpwi r3, 0
+/* 80319190 00314DF0 40 82 00 28 */ bne lbl_803191B8
+/* 80319194 00314DF4 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 80319198 00314DF8 54 00 06 B5 */ rlwinm. r0, r0, 0, 0x1a, 0x1a
+/* 8031919C 00314DFC 40 82 00 1C */ bne lbl_803191B8
+/* 803191A0 00314E00 7F E3 FB 78 */ mr r3, r31
+/* 803191A4 00314E04 4B FF 77 9D */ bl VFiPFFAT_InitFATRegion
+/* 803191A8 00314E08 2C 03 00 00 */ cmpwi r3, 0
+/* 803191AC 00314E0C 40 82 00 0C */ bne lbl_803191B8
+/* 803191B0 00314E10 7F E3 FB 78 */ mr r3, r31
+/* 803191B4 00314E14 4B FF 35 F9 */ bl VFiPFENT_MakeRootDir
+lbl_803191B8:
+/* 803191B8 00314E18 2C 03 00 00 */ cmpwi r3, 0
+/* 803191BC 00314E1C 41 82 00 10 */ beq lbl_803191CC
+/* 803191C0 00314E20 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803191C4 00314E24 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 803191C8 00314E28 B0 1F 18 78 */ sth r0, 0x1878(r31)
+lbl_803191CC:
+/* 803191CC 00314E2C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803191D0 00314E30 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803191D4 00314E34 7C 08 03 A6 */ mtlr r0
+/* 803191D8 00314E38 38 21 00 20 */ addi r1, r1, 0x20
+/* 803191DC 00314E3C 4E 80 00 20 */ blr
+
+.global VFiPFVOL_InitModule
+VFiPFVOL_InitModule:
+/* 803191E0 00314E40 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803191E4 00314E44 7C 08 02 A6 */ mflr r0
+/* 803191E8 00314E48 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803191EC 00314E4C 54 60 04 1B */ rlwinm. r0, r3, 0, 0x10, 0xd
+/* 803191F0 00314E50 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 803191F4 00314E54 93 C1 00 08 */ stw r30, 8(r1)
+/* 803191F8 00314E58 41 82 00 1C */ beq lbl_80319214
+/* 803191FC 00314E5C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80319200 00314E60 38 00 00 0A */ li r0, 0xa
+/* 80319204 00314E64 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80319208 00314E68 38 60 00 0A */ li r3, 0xa
+/* 8031920C 00314E6C 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80319210 00314E70 48 00 01 44 */ b lbl_80319354
+lbl_80319214:
+/* 80319214 00314E74 54 65 03 9E */ rlwinm r5, r3, 0, 0xe, 0xf
+/* 80319218 00314E78 3C 05 FF FD */ addis r0, r5, 0xfffd
+/* 8031921C 00314E7C 28 00 00 00 */ cmplwi r0, 0
+/* 80319220 00314E80 40 82 00 1C */ bne lbl_8031923C
+/* 80319224 00314E84 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80319228 00314E88 38 00 00 0A */ li r0, 0xa
+/* 8031922C 00314E8C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80319230 00314E90 38 60 00 0A */ li r3, 0xa
+/* 80319234 00314E94 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 80319238 00314E98 48 00 01 1C */ b lbl_80319354
+lbl_8031923C:
+/* 8031923C 00314E9C 54 65 03 DF */ rlwinm. r5, r3, 0, 0xf, 0xf
+/* 80319240 00314EA0 41 82 00 1C */ beq lbl_8031925C
+/* 80319244 00314EA4 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80319248 00314EA8 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 8031924C 00314EAC 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 80319250 00314EB0 64 00 00 01 */ oris r0, r0, 1
+/* 80319254 00314EB4 90 03 00 14 */ stw r0, 0x14(r3)
+/* 80319258 00314EB8 48 00 00 18 */ b lbl_80319270
+lbl_8031925C:
+/* 8031925C 00314EBC 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80319260 00314EC0 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319264 00314EC4 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 80319268 00314EC8 54 00 04 1C */ rlwinm r0, r0, 0, 0x10, 0xe
+/* 8031926C 00314ECC 90 03 00 14 */ stw r0, 0x14(r3)
+lbl_80319270:
+/* 80319270 00314ED0 3C E0 80 58 */ lis r7, lbl_8057F5C8@ha
+/* 80319274 00314ED4 2C 05 00 00 */ cmpwi r5, 0
+/* 80319278 00314ED8 80 67 F5 C8 */ lwz r3, lbl_8057F5C8@l(r7)
+/* 8031927C 00314EDC 38 C7 F5 C8 */ addi r6, r7, -2616
+/* 80319280 00314EE0 38 00 00 00 */ li r0, 0
+/* 80319284 00314EE4 38 A6 00 48 */ addi r5, r6, 0x48
+/* 80319288 00314EE8 60 63 00 01 */ ori r3, r3, 1
+/* 8031928C 00314EEC 90 A6 00 08 */ stw r5, 8(r6)
+/* 80319290 00314EF0 90 67 F5 C8 */ stw r3, -0xa38(r7)
+/* 80319294 00314EF4 90 06 00 0C */ stw r0, 0xc(r6)
+/* 80319298 00314EF8 90 06 00 10 */ stw r0, 0x10(r6)
+/* 8031929C 00314EFC 41 82 00 14 */ beq lbl_803192B0
+/* 803192A0 00314F00 80 06 00 14 */ lwz r0, 0x14(r6)
+/* 803192A4 00314F04 64 00 00 01 */ oris r0, r0, 1
+/* 803192A8 00314F08 90 06 00 14 */ stw r0, 0x14(r6)
+/* 803192AC 00314F0C 48 00 00 10 */ b lbl_803192BC
+lbl_803192B0:
+/* 803192B0 00314F10 80 06 00 14 */ lwz r0, 0x14(r6)
+/* 803192B4 00314F14 54 00 04 1C */ rlwinm r0, r0, 0, 0x10, 0xe
+/* 803192B8 00314F18 90 06 00 14 */ stw r0, 0x14(r6)
+lbl_803192BC:
+/* 803192BC 00314F1C 3D 60 80 58 */ lis r11, lbl_8057F5C8@ha
+/* 803192C0 00314F20 3D 20 80 32 */ lis r9, VFiPFCODE_CP932_OEM2Unicode@ha
+/* 803192C4 00314F24 39 6B F5 C8 */ addi r11, r11, lbl_8057F5C8@l
+/* 803192C8 00314F28 39 40 00 00 */ li r10, 0
+/* 803192CC 00314F2C 3D 00 80 32 */ lis r8, VFiPFCODE_CP932_Unicode2OEM@ha
+/* 803192D0 00314F30 3C E0 80 32 */ lis r7, VFiPFCODE_CP932_OEMCharWidth@ha
+/* 803192D4 00314F34 3C C0 80 32 */ lis r6, VFiPFCODE_CP932_isOEMMBchar@ha
+/* 803192D8 00314F38 3C A0 80 32 */ lis r5, VFiPFCODE_CP932_UnicodeCharWidth@ha
+/* 803192DC 00314F3C 3C 60 80 32 */ lis r3, VFiPFCODE_CP932_isUnicodeMBchar@ha
+/* 803192E0 00314F40 39 29 9C 00 */ addi r9, r9, VFiPFCODE_CP932_OEM2Unicode@l
+/* 803192E4 00314F44 39 08 9D BC */ addi r8, r8, VFiPFCODE_CP932_Unicode2OEM@l
+/* 803192E8 00314F48 38 E7 A0 24 */ addi r7, r7, VFiPFCODE_CP932_OEMCharWidth@l
+/* 803192EC 00314F4C 38 C6 A0 58 */ addi r6, r6, VFiPFCODE_CP932_isOEMMBchar@l
+/* 803192F0 00314F50 38 A5 A0 D4 */ addi r5, r5, VFiPFCODE_CP932_UnicodeCharWidth@l
+/* 803192F4 00314F54 38 63 A1 08 */ addi r3, r3, VFiPFCODE_CP932_isUnicodeMBchar@l
+/* 803192F8 00314F58 38 00 00 01 */ li r0, 1
+/* 803192FC 00314F5C 90 8B 00 18 */ stw r4, 0x18(r11)
+/* 80319300 00314F60 3B EB 00 48 */ addi r31, r11, 0x48
+/* 80319304 00314F64 3B C0 00 00 */ li r30, 0
+/* 80319308 00314F68 91 4B 00 1C */ stw r10, 0x1c(r11)
+/* 8031930C 00314F6C 91 4B 00 20 */ stw r10, 0x20(r11)
+/* 80319310 00314F70 90 0B 00 3C */ stw r0, 0x3c(r11)
+/* 80319314 00314F74 91 2B 00 24 */ stw r9, 0x24(r11)
+/* 80319318 00314F78 91 0B 00 28 */ stw r8, 0x28(r11)
+/* 8031931C 00314F7C 90 EB 00 2C */ stw r7, 0x2c(r11)
+/* 80319320 00314F80 90 CB 00 30 */ stw r6, 0x30(r11)
+/* 80319324 00314F84 90 AB 00 34 */ stw r5, 0x34(r11)
+/* 80319328 00314F88 90 6B 00 38 */ stw r3, 0x38(r11)
+lbl_8031932C:
+/* 8031932C 00314F8C 7F E3 FB 78 */ mr r3, r31
+/* 80319330 00314F90 38 80 00 00 */ li r4, 0
+/* 80319334 00314F94 38 A0 18 98 */ li r5, 0x1898
+/* 80319338 00314F98 4B FE BC 9D */ bl VFipf_memset
+/* 8031933C 00314F9C 3B DE 00 01 */ addi r30, r30, 1
+/* 80319340 00314FA0 3B FF 18 98 */ addi r31, r31, 0x1898
+/* 80319344 00314FA4 2C 1E 00 1A */ cmpwi r30, 0x1a
+/* 80319348 00314FA8 41 80 FF E4 */ blt lbl_8031932C
+/* 8031934C 00314FAC 48 00 10 C9 */ bl func_8031A414
+/* 80319350 00314FB0 38 60 00 00 */ li r3, 0
+lbl_80319354:
+/* 80319354 00314FB4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80319358 00314FB8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8031935C 00314FBC 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80319360 00314FC0 7C 08 03 A6 */ mtlr r0
+/* 80319364 00314FC4 38 21 00 10 */ addi r1, r1, 0x10
+/* 80319368 00314FC8 4E 80 00 20 */ blr
+
+.global VFiPFVOL_CheckForRead
+VFiPFVOL_CheckForRead:
+/* 8031936C 00314FCC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80319370 00314FD0 7C 08 02 A6 */ mflr r0
+/* 80319374 00314FD4 2C 03 00 00 */ cmpwi r3, 0
+/* 80319378 00314FD8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8031937C 00314FDC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80319380 00314FE0 7C 7F 1B 78 */ mr r31, r3
+/* 80319384 00314FE4 40 82 00 0C */ bne lbl_80319390
+/* 80319388 00314FE8 38 60 00 0A */ li r3, 0xa
+/* 8031938C 00314FEC 48 00 01 88 */ b lbl_80319514
+lbl_80319390:
+/* 80319390 00314FF0 4B FE C9 C1 */ bl VFiPFDRV_IsInserted
+/* 80319394 00314FF4 2C 03 00 00 */ cmpwi r3, 0
+/* 80319398 00314FF8 41 82 00 D0 */ beq lbl_80319468
+/* 8031939C 00314FFC 7F E3 FB 78 */ mr r3, r31
+/* 803193A0 00315000 4B FE C9 DD */ bl VFiPFDRV_IsDetected
+/* 803193A4 00315004 2C 03 00 00 */ cmpwi r3, 0
+/* 803193A8 00315008 41 82 01 48 */ beq lbl_803194F0
+/* 803193AC 0031500C A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803193B0 00315010 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 803193B4 00315014 41 82 00 64 */ beq lbl_80319418
+/* 803193B8 00315018 7F E3 FB 78 */ mr r3, r31
+/* 803193BC 0031501C 4B FF B9 21 */ bl VFiPFFILE_FinalizeAllFiles
+/* 803193C0 00315020 7F E3 FB 78 */ mr r3, r31
+/* 803193C4 00315024 4B FF 1E 75 */ bl VFiPFDIR_FinalizeAllDirs
+/* 803193C8 00315028 7F E3 FB 78 */ mr r3, r31
+/* 803193CC 0031502C 4B FF 18 79 */ bl VFiPFCACHE_FreeAllCaches
+/* 803193D0 00315030 7F E3 FB 78 */ mr r3, r31
+/* 803193D4 00315034 38 80 00 01 */ li r4, 1
+/* 803193D8 00315038 4B FE CC 35 */ bl VFiPFDRV_unmount
+/* 803193DC 0031503C 2C 03 00 00 */ cmpwi r3, 0
+/* 803193E0 00315040 40 82 00 24 */ bne lbl_80319404
+/* 803193E4 00315044 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803193E8 00315048 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 803193EC 0031504C 41 82 00 0C */ beq lbl_803193F8
+/* 803193F0 00315050 38 00 00 00 */ li r0, 0
+/* 803193F4 00315054 90 1F 16 18 */ stw r0, 0x1618(r31)
+lbl_803193F8:
+/* 803193F8 00315058 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803193FC 0031505C 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 80319400 00315060 B0 1F 18 78 */ sth r0, 0x1878(r31)
+lbl_80319404:
+/* 80319404 00315064 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80319408 00315068 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 8031940C 0031506C 80 64 00 10 */ lwz r3, 0x10(r4)
+/* 80319410 00315070 38 03 FF FF */ addi r0, r3, -1
+/* 80319414 00315074 90 04 00 10 */ stw r0, 0x10(r4)
+lbl_80319418:
+/* 80319418 00315078 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 8031941C 0031507C 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80319420 00315080 40 82 00 38 */ bne lbl_80319458
+/* 80319424 00315084 7F E3 FB 78 */ mr r3, r31
+/* 80319428 00315088 4B FF FC 39 */ bl VFiPFVOL_DoMountVolume
+/* 8031942C 0031508C 2C 03 00 00 */ cmpwi r3, 0
+/* 80319430 00315090 41 82 00 08 */ beq lbl_80319438
+/* 80319434 00315094 48 00 00 28 */ b lbl_8031945C
+lbl_80319438:
+/* 80319438 00315098 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8031943C 0031509C 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80319440 003150A0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80319444 003150A4 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c
+/* 80319448 003150A8 B0 1F 18 7C */ sth r0, 0x187c(r31)
+/* 8031944C 003150AC 80 64 00 10 */ lwz r3, 0x10(r4)
+/* 80319450 003150B0 38 03 00 01 */ addi r0, r3, 1
+/* 80319454 003150B4 90 04 00 10 */ stw r0, 0x10(r4)
+lbl_80319458:
+/* 80319458 003150B8 38 60 00 00 */ li r3, 0
+lbl_8031945C:
+/* 8031945C 003150BC 2C 03 00 00 */ cmpwi r3, 0
+/* 80319460 003150C0 41 82 00 90 */ beq lbl_803194F0
+/* 80319464 003150C4 48 00 00 90 */ b lbl_803194F4
+lbl_80319468:
+/* 80319468 003150C8 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 8031946C 003150CC 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80319470 003150D0 41 82 00 80 */ beq lbl_803194F0
+/* 80319474 003150D4 7F E3 FB 78 */ mr r3, r31
+/* 80319478 003150D8 4B FE C9 05 */ bl VFiPFDRV_IsDetected
+/* 8031947C 003150DC 2C 03 00 00 */ cmpwi r3, 0
+/* 80319480 003150E0 41 82 00 64 */ beq lbl_803194E4
+/* 80319484 003150E4 7F E3 FB 78 */ mr r3, r31
+/* 80319488 003150E8 4B FF B8 55 */ bl VFiPFFILE_FinalizeAllFiles
+/* 8031948C 003150EC 7F E3 FB 78 */ mr r3, r31
+/* 80319490 003150F0 4B FF 1D A9 */ bl VFiPFDIR_FinalizeAllDirs
+/* 80319494 003150F4 7F E3 FB 78 */ mr r3, r31
+/* 80319498 003150F8 4B FF 17 AD */ bl VFiPFCACHE_FreeAllCaches
+/* 8031949C 003150FC 7F E3 FB 78 */ mr r3, r31
+/* 803194A0 00315100 38 80 00 01 */ li r4, 1
+/* 803194A4 00315104 4B FE CB 69 */ bl VFiPFDRV_unmount
+/* 803194A8 00315108 2C 03 00 00 */ cmpwi r3, 0
+/* 803194AC 0031510C 40 82 00 24 */ bne lbl_803194D0
+/* 803194B0 00315110 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803194B4 00315114 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 803194B8 00315118 41 82 00 0C */ beq lbl_803194C4
+/* 803194BC 0031511C 38 00 00 00 */ li r0, 0
+/* 803194C0 00315120 90 1F 16 18 */ stw r0, 0x1618(r31)
+lbl_803194C4:
+/* 803194C4 00315124 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803194C8 00315128 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 803194CC 0031512C B0 1F 18 78 */ sth r0, 0x1878(r31)
+lbl_803194D0:
+/* 803194D0 00315130 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803194D4 00315134 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803194D8 00315138 80 64 00 10 */ lwz r3, 0x10(r4)
+/* 803194DC 0031513C 38 03 FF FF */ addi r0, r3, -1
+/* 803194E0 00315140 90 04 00 10 */ stw r0, 0x10(r4)
+lbl_803194E4:
+/* 803194E4 00315144 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803194E8 00315148 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 803194EC 0031514C B0 1F 18 78 */ sth r0, 0x1878(r31)
+lbl_803194F0:
+/* 803194F0 00315150 38 60 00 00 */ li r3, 0
+lbl_803194F4:
+/* 803194F4 00315154 2C 03 00 00 */ cmpwi r3, 0
+/* 803194F8 00315158 41 82 00 08 */ beq lbl_80319500
+/* 803194FC 0031515C 48 00 00 18 */ b lbl_80319514
+lbl_80319500:
+/* 80319500 00315160 A0 7F 18 78 */ lhz r3, 0x1878(r31)
+/* 80319504 00315164 38 00 00 09 */ li r0, 9
+/* 80319508 00315168 54 63 FF FE */ rlwinm r3, r3, 0x1f, 0x1f, 0x1f
+/* 8031950C 0031516C 7C 63 00 D0 */ neg r3, r3
+/* 80319510 00315170 7C 03 18 78 */ andc r3, r0, r3
+lbl_80319514:
+/* 80319514 00315174 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80319518 00315178 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8031951C 0031517C 7C 08 03 A6 */ mtlr r0
+/* 80319520 00315180 38 21 00 10 */ addi r1, r1, 0x10
+/* 80319524 00315184 4E 80 00 20 */ blr
+
+.global VFiPFVOL_CheckForWrite
+VFiPFVOL_CheckForWrite:
+/* 80319528 00315188 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8031952C 0031518C 7C 08 02 A6 */ mflr r0
+/* 80319530 00315190 2C 03 00 00 */ cmpwi r3, 0
+/* 80319534 00315194 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80319538 00315198 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8031953C 0031519C 7C 7F 1B 78 */ mr r31, r3
+/* 80319540 003151A0 40 82 00 0C */ bne lbl_8031954C
+/* 80319544 003151A4 38 60 00 0A */ li r3, 0xa
+/* 80319548 003151A8 48 00 01 A0 */ b lbl_803196E8
+lbl_8031954C:
+/* 8031954C 003151AC 4B FE C8 05 */ bl VFiPFDRV_IsInserted
+/* 80319550 003151B0 2C 03 00 00 */ cmpwi r3, 0
+/* 80319554 003151B4 41 82 00 D0 */ beq lbl_80319624
+/* 80319558 003151B8 7F E3 FB 78 */ mr r3, r31
+/* 8031955C 003151BC 4B FE C8 21 */ bl VFiPFDRV_IsDetected
+/* 80319560 003151C0 2C 03 00 00 */ cmpwi r3, 0
+/* 80319564 003151C4 41 82 01 48 */ beq lbl_803196AC
+/* 80319568 003151C8 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 8031956C 003151CC 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80319570 003151D0 41 82 00 64 */ beq lbl_803195D4
+/* 80319574 003151D4 7F E3 FB 78 */ mr r3, r31
+/* 80319578 003151D8 4B FF B7 65 */ bl VFiPFFILE_FinalizeAllFiles
+/* 8031957C 003151DC 7F E3 FB 78 */ mr r3, r31
+/* 80319580 003151E0 4B FF 1C B9 */ bl VFiPFDIR_FinalizeAllDirs
+/* 80319584 003151E4 7F E3 FB 78 */ mr r3, r31
+/* 80319588 003151E8 4B FF 16 BD */ bl VFiPFCACHE_FreeAllCaches
+/* 8031958C 003151EC 7F E3 FB 78 */ mr r3, r31
+/* 80319590 003151F0 38 80 00 01 */ li r4, 1
+/* 80319594 003151F4 4B FE CA 79 */ bl VFiPFDRV_unmount
+/* 80319598 003151F8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031959C 003151FC 40 82 00 24 */ bne lbl_803195C0
+/* 803195A0 00315200 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803195A4 00315204 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 803195A8 00315208 41 82 00 0C */ beq lbl_803195B4
+/* 803195AC 0031520C 38 00 00 00 */ li r0, 0
+/* 803195B0 00315210 90 1F 16 18 */ stw r0, 0x1618(r31)
+lbl_803195B4:
+/* 803195B4 00315214 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803195B8 00315218 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 803195BC 0031521C B0 1F 18 78 */ sth r0, 0x1878(r31)
+lbl_803195C0:
+/* 803195C0 00315220 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803195C4 00315224 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 803195C8 00315228 80 64 00 10 */ lwz r3, 0x10(r4)
+/* 803195CC 0031522C 38 03 FF FF */ addi r0, r3, -1
+/* 803195D0 00315230 90 04 00 10 */ stw r0, 0x10(r4)
+lbl_803195D4:
+/* 803195D4 00315234 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803195D8 00315238 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 803195DC 0031523C 40 82 00 38 */ bne lbl_80319614
+/* 803195E0 00315240 7F E3 FB 78 */ mr r3, r31
+/* 803195E4 00315244 4B FF FA 7D */ bl VFiPFVOL_DoMountVolume
+/* 803195E8 00315248 2C 03 00 00 */ cmpwi r3, 0
+/* 803195EC 0031524C 41 82 00 08 */ beq lbl_803195F4
+/* 803195F0 00315250 48 00 00 28 */ b lbl_80319618
+lbl_803195F4:
+/* 803195F4 00315254 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 803195F8 00315258 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 803195FC 0031525C 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80319600 00315260 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c
+/* 80319604 00315264 B0 1F 18 7C */ sth r0, 0x187c(r31)
+/* 80319608 00315268 80 64 00 10 */ lwz r3, 0x10(r4)
+/* 8031960C 0031526C 38 03 00 01 */ addi r0, r3, 1
+/* 80319610 00315270 90 04 00 10 */ stw r0, 0x10(r4)
+lbl_80319614:
+/* 80319614 00315274 38 60 00 00 */ li r3, 0
+lbl_80319618:
+/* 80319618 00315278 2C 03 00 00 */ cmpwi r3, 0
+/* 8031961C 0031527C 41 82 00 90 */ beq lbl_803196AC
+/* 80319620 00315280 48 00 00 90 */ b lbl_803196B0
+lbl_80319624:
+/* 80319624 00315284 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 80319628 00315288 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 8031962C 0031528C 41 82 00 80 */ beq lbl_803196AC
+/* 80319630 00315290 7F E3 FB 78 */ mr r3, r31
+/* 80319634 00315294 4B FE C7 49 */ bl VFiPFDRV_IsDetected
+/* 80319638 00315298 2C 03 00 00 */ cmpwi r3, 0
+/* 8031963C 0031529C 41 82 00 64 */ beq lbl_803196A0
+/* 80319640 003152A0 7F E3 FB 78 */ mr r3, r31
+/* 80319644 003152A4 4B FF B6 99 */ bl VFiPFFILE_FinalizeAllFiles
+/* 80319648 003152A8 7F E3 FB 78 */ mr r3, r31
+/* 8031964C 003152AC 4B FF 1B ED */ bl VFiPFDIR_FinalizeAllDirs
+/* 80319650 003152B0 7F E3 FB 78 */ mr r3, r31
+/* 80319654 003152B4 4B FF 15 F1 */ bl VFiPFCACHE_FreeAllCaches
+/* 80319658 003152B8 7F E3 FB 78 */ mr r3, r31
+/* 8031965C 003152BC 38 80 00 01 */ li r4, 1
+/* 80319660 003152C0 4B FE C9 AD */ bl VFiPFDRV_unmount
+/* 80319664 003152C4 2C 03 00 00 */ cmpwi r3, 0
+/* 80319668 003152C8 40 82 00 24 */ bne lbl_8031968C
+/* 8031966C 003152CC A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 80319670 003152D0 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80319674 003152D4 41 82 00 0C */ beq lbl_80319680
+/* 80319678 003152D8 38 00 00 00 */ li r0, 0
+/* 8031967C 003152DC 90 1F 16 18 */ stw r0, 0x1618(r31)
+lbl_80319680:
+/* 80319680 003152E0 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 80319684 003152E4 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 80319688 003152E8 B0 1F 18 78 */ sth r0, 0x1878(r31)
+lbl_8031968C:
+/* 8031968C 003152EC 3C 80 80 58 */ lis r4, lbl_8057F5C8@ha
+/* 80319690 003152F0 38 84 F5 C8 */ addi r4, r4, lbl_8057F5C8@l
+/* 80319694 003152F4 80 64 00 10 */ lwz r3, 0x10(r4)
+/* 80319698 003152F8 38 03 FF FF */ addi r0, r3, -1
+/* 8031969C 003152FC 90 04 00 10 */ stw r0, 0x10(r4)
+lbl_803196A0:
+/* 803196A0 00315300 A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803196A4 00315304 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d
+/* 803196A8 00315308 B0 1F 18 78 */ sth r0, 0x1878(r31)
+lbl_803196AC:
+/* 803196AC 0031530C 38 60 00 00 */ li r3, 0
+lbl_803196B0:
+/* 803196B0 00315310 2C 03 00 00 */ cmpwi r3, 0
+/* 803196B4 00315314 41 82 00 08 */ beq lbl_803196BC
+/* 803196B8 00315318 48 00 00 30 */ b lbl_803196E8
+lbl_803196BC:
+/* 803196BC 0031531C A0 1F 18 78 */ lhz r0, 0x1878(r31)
+/* 803196C0 00315320 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 803196C4 00315324 40 82 00 0C */ bne lbl_803196D0
+/* 803196C8 00315328 38 60 00 09 */ li r3, 9
+/* 803196CC 0031532C 48 00 00 1C */ b lbl_803196E8
+lbl_803196D0:
+/* 803196D0 00315330 7F E3 FB 78 */ mr r3, r31
+/* 803196D4 00315334 4B FE C6 D5 */ bl VFiPFDRV_IsWProtected
+/* 803196D8 00315338 7C 03 00 D0 */ neg r0, r3
+/* 803196DC 0031533C 7C 00 1B 78 */ or r0, r0, r3
+/* 803196E0 00315340 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 803196E4 00315344 70 03 00 0B */ andi. r3, r0, 0xb
+lbl_803196E8:
+/* 803196E8 00315348 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 803196EC 0031534C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 803196F0 00315350 7C 08 03 A6 */ mtlr r0
+/* 803196F4 00315354 38 21 00 10 */ addi r1, r1, 0x10
+/* 803196F8 00315358 4E 80 00 20 */ blr
+
+.global VFiPFVOL_GetCurrentDir
+VFiPFVOL_GetCurrentDir:
+/* 803196FC 0031535C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80319700 00315360 7C 08 02 A6 */ mflr r0
+/* 80319704 00315364 2C 03 00 00 */ cmpwi r3, 0
+/* 80319708 00315368 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8031970C 0031536C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80319710 00315370 7C 9F 23 78 */ mr r31, r4
+/* 80319714 00315374 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80319718 00315378 7C 7E 1B 78 */ mr r30, r3
+/* 8031971C 0031537C 40 82 00 0C */ bne lbl_80319728
+/* 80319720 00315380 38 60 00 0A */ li r3, 0xa
+/* 80319724 00315384 48 00 01 7C */ b lbl_803198A0
+lbl_80319728:
+/* 80319728 00315388 A0 03 18 78 */ lhz r0, 0x1878(r3)
+/* 8031972C 0031538C 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 80319730 00315390 40 82 00 0C */ bne lbl_8031973C
+/* 80319734 00315394 38 60 00 09 */ li r3, 9
+/* 80319738 00315398 48 00 01 68 */ b lbl_803198A0
+lbl_8031973C:
+/* 8031973C 0031539C 38 61 00 08 */ addi r3, r1, 8
+/* 80319740 003153A0 48 00 0C ED */ bl MWInitializeMutex
+/* 80319744 003153A4 80 C1 00 08 */ lwz r6, 8(r1)
+/* 80319748 003153A8 38 7E 02 48 */ addi r3, r30, 0x248
+/* 8031974C 003153AC 38 E0 00 01 */ li r7, 1
+/* 80319750 003153B0 48 00 00 54 */ b lbl_803197A4
+lbl_80319754:
+/* 80319754 003153B4 80 03 16 18 */ lwz r0, 0x1618(r3)
+/* 80319758 003153B8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8031975C 003153BC 41 82 00 40 */ beq lbl_8031979C
+/* 80319760 003153C0 80 03 16 1C */ lwz r0, 0x161c(r3)
+/* 80319764 003153C4 7C 06 00 00 */ cmpw r6, r0
+/* 80319768 003153C8 40 82 00 34 */ bne lbl_8031979C
+/* 8031976C 003153CC 1C 67 02 48 */ mulli r3, r7, 0x248
+/* 80319770 003153D0 38 00 00 48 */ li r0, 0x48
+/* 80319774 003153D4 38 BF FF FC */ addi r5, r31, -4
+/* 80319778 003153D8 7C 7E 1A 14 */ add r3, r30, r3
+/* 8031977C 003153DC 38 83 16 1C */ addi r4, r3, 0x161c
+/* 80319780 003153E0 7C 09 03 A6 */ mtctr r0
+lbl_80319784:
+/* 80319784 003153E4 80 64 00 04 */ lwz r3, 4(r4)
+/* 80319788 003153E8 84 04 00 08 */ lwzu r0, 8(r4)
+/* 8031978C 003153EC 90 65 00 04 */ stw r3, 4(r5)
+/* 80319790 003153F0 94 05 00 08 */ stwu r0, 8(r5)
+/* 80319794 003153F4 42 00 FF F0 */ bdnz lbl_80319784
+/* 80319798 003153F8 48 00 00 14 */ b lbl_803197AC
+lbl_8031979C:
+/* 8031979C 003153FC 38 63 02 48 */ addi r3, r3, 0x248
+/* 803197A0 00315400 38 E7 00 01 */ addi r7, r7, 1
+lbl_803197A4:
+/* 803197A4 00315404 28 07 00 01 */ cmplwi r7, 1
+/* 803197A8 00315408 41 80 FF AC */ blt lbl_80319754
+lbl_803197AC:
+/* 803197AC 0031540C 28 07 00 01 */ cmplwi r7, 1
+/* 803197B0 00315410 40 82 00 EC */ bne lbl_8031989C
+/* 803197B4 00315414 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 803197B8 00315418 38 80 00 01 */ li r4, 1
+/* 803197BC 0031541C 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 803197C0 00315420 38 63 00 08 */ addi r3, r3, 8
+/* 803197C4 00315424 48 00 00 30 */ b lbl_803197F4
+lbl_803197C8:
+/* 803197C8 00315428 80 03 00 40 */ lwz r0, 0x40(r3)
+/* 803197CC 0031542C 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 803197D0 00315430 90 03 00 40 */ stw r0, 0x40(r3)
+/* 803197D4 00315434 41 82 00 18 */ beq lbl_803197EC
+/* 803197D8 00315438 80 03 00 44 */ lwz r0, 0x44(r3)
+/* 803197DC 0031543C 7C 06 00 00 */ cmpw r6, r0
+/* 803197E0 00315440 40 82 00 0C */ bne lbl_803197EC
+/* 803197E4 00315444 38 00 00 01 */ li r0, 1
+/* 803197E8 00315448 48 00 00 18 */ b lbl_80319800
+lbl_803197EC:
+/* 803197EC 0031544C 38 63 00 08 */ addi r3, r3, 8
+/* 803197F0 00315450 38 84 00 01 */ addi r4, r4, 1
+lbl_803197F4:
+/* 803197F4 00315454 28 04 00 01 */ cmplwi r4, 1
+/* 803197F8 00315458 41 80 FF D0 */ blt lbl_803197C8
+/* 803197FC 0031545C 38 00 00 00 */ li r0, 0
+lbl_80319800:
+/* 80319800 00315460 2C 00 00 00 */ cmpwi r0, 0
+/* 80319804 00315464 41 82 00 74 */ beq lbl_80319878
+/* 80319808 00315468 38 7E 02 48 */ addi r3, r30, 0x248
+/* 8031980C 0031546C 38 80 00 01 */ li r4, 1
+/* 80319810 00315470 48 00 00 5C */ b lbl_8031986C
+lbl_80319814:
+/* 80319814 00315474 80 03 16 18 */ lwz r0, 0x1618(r3)
+/* 80319818 00315478 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8031981C 0031547C 40 82 00 48 */ bne lbl_80319864
+/* 80319820 00315480 1C 64 02 48 */ mulli r3, r4, 0x248
+/* 80319824 00315484 38 00 00 48 */ li r0, 0x48
+/* 80319828 00315488 38 BF FF FC */ addi r5, r31, -4
+/* 8031982C 0031548C 7C DE 1A 14 */ add r6, r30, r3
+/* 80319830 00315490 80 66 16 18 */ lwz r3, 0x1618(r6)
+/* 80319834 00315494 38 86 16 1C */ addi r4, r6, 0x161c
+/* 80319838 00315498 60 63 00 01 */ ori r3, r3, 1
+/* 8031983C 0031549C 90 66 16 18 */ stw r3, 0x1618(r6)
+/* 80319840 003154A0 80 61 00 08 */ lwz r3, 8(r1)
+/* 80319844 003154A4 90 66 16 1C */ stw r3, 0x161c(r6)
+/* 80319848 003154A8 7C 09 03 A6 */ mtctr r0
+lbl_8031984C:
+/* 8031984C 003154AC 80 64 00 04 */ lwz r3, 4(r4)
+/* 80319850 003154B0 84 04 00 08 */ lwzu r0, 8(r4)
+/* 80319854 003154B4 90 65 00 04 */ stw r3, 4(r5)
+/* 80319858 003154B8 94 05 00 08 */ stwu r0, 8(r5)
+/* 8031985C 003154BC 42 00 FF F0 */ bdnz lbl_8031984C
+/* 80319860 003154C0 48 00 00 3C */ b lbl_8031989C
+lbl_80319864:
+/* 80319864 003154C4 38 63 02 48 */ addi r3, r3, 0x248
+/* 80319868 003154C8 38 84 00 01 */ addi r4, r4, 1
+lbl_8031986C:
+/* 8031986C 003154CC 28 04 00 01 */ cmplwi r4, 1
+/* 80319870 003154D0 41 80 FF A4 */ blt lbl_80319814
+/* 80319874 003154D4 48 00 00 28 */ b lbl_8031989C
+lbl_80319878:
+/* 80319878 003154D8 38 00 00 48 */ li r0, 0x48
+/* 8031987C 003154DC 38 BF FF FC */ addi r5, r31, -4
+/* 80319880 003154E0 38 9E 16 1C */ addi r4, r30, 0x161c
+/* 80319884 003154E4 7C 09 03 A6 */ mtctr r0
+lbl_80319888:
+/* 80319888 003154E8 80 64 00 04 */ lwz r3, 4(r4)
+/* 8031988C 003154EC 84 04 00 08 */ lwzu r0, 8(r4)
+/* 80319890 003154F0 90 65 00 04 */ stw r3, 4(r5)
+/* 80319894 003154F4 94 05 00 08 */ stwu r0, 8(r5)
+/* 80319898 003154F8 42 00 FF F0 */ bdnz lbl_80319888
+lbl_8031989C:
+/* 8031989C 003154FC 38 60 00 00 */ li r3, 0
+lbl_803198A0:
+/* 803198A0 00315500 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803198A4 00315504 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803198A8 00315508 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803198AC 0031550C 7C 08 03 A6 */ mtlr r0
+/* 803198B0 00315510 38 21 00 20 */ addi r1, r1, 0x20
+/* 803198B4 00315514 4E 80 00 20 */ blr
+
+.global VFiPFVOL_SetCurrentVolume
+VFiPFVOL_SetCurrentVolume:
+/* 803198B8 00315518 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 803198BC 0031551C 7C 08 02 A6 */ mflr r0
+/* 803198C0 00315520 90 01 00 24 */ stw r0, 0x24(r1)
+/* 803198C4 00315524 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 803198C8 00315528 7C 7F 1B 78 */ mr r31, r3
+/* 803198CC 0031552C 38 61 00 08 */ addi r3, r1, 8
+/* 803198D0 00315530 48 00 0B 5D */ bl MWInitializeMutex
+/* 803198D4 00315534 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 803198D8 00315538 80 A1 00 08 */ lwz r5, 8(r1)
+/* 803198DC 0031553C 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 803198E0 00315540 38 80 00 01 */ li r4, 1
+/* 803198E4 00315544 38 63 00 0C */ addi r3, r3, 0xc
+/* 803198E8 00315548 48 00 00 3C */ b lbl_80319924
+lbl_803198EC:
+/* 803198EC 0031554C 80 03 00 00 */ lwz r0, 0(r3)
+/* 803198F0 00315550 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 803198F4 00315554 41 82 00 28 */ beq lbl_8031991C
+/* 803198F8 00315558 80 03 00 04 */ lwz r0, 4(r3)
+/* 803198FC 0031555C 7C 05 00 00 */ cmpw r5, r0
+/* 80319900 00315560 40 82 00 1C */ bne lbl_8031991C
+/* 80319904 00315564 1C 04 00 0C */ mulli r0, r4, 0xc
+/* 80319908 00315568 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 8031990C 0031556C 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319910 00315570 7C 63 02 14 */ add r3, r3, r0
+/* 80319914 00315574 93 E3 00 08 */ stw r31, 8(r3)
+/* 80319918 00315578 48 00 00 14 */ b lbl_8031992C
+lbl_8031991C:
+/* 8031991C 0031557C 38 63 00 0C */ addi r3, r3, 0xc
+/* 80319920 00315580 38 84 00 01 */ addi r4, r4, 1
+lbl_80319924:
+/* 80319924 00315584 28 04 00 01 */ cmplwi r4, 1
+/* 80319928 00315588 41 80 FF C4 */ blt lbl_803198EC
+lbl_8031992C:
+/* 8031992C 0031558C 28 04 00 01 */ cmplwi r4, 1
+/* 80319930 00315590 40 82 00 B4 */ bne lbl_803199E4
+/* 80319934 00315594 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80319938 00315598 38 80 00 01 */ li r4, 1
+/* 8031993C 0031559C 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319940 003155A0 38 63 00 08 */ addi r3, r3, 8
+/* 80319944 003155A4 48 00 00 30 */ b lbl_80319974
+lbl_80319948:
+/* 80319948 003155A8 80 03 00 40 */ lwz r0, 0x40(r3)
+/* 8031994C 003155AC 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80319950 003155B0 90 03 00 40 */ stw r0, 0x40(r3)
+/* 80319954 003155B4 41 82 00 18 */ beq lbl_8031996C
+/* 80319958 003155B8 80 03 00 44 */ lwz r0, 0x44(r3)
+/* 8031995C 003155BC 7C 05 00 00 */ cmpw r5, r0
+/* 80319960 003155C0 40 82 00 0C */ bne lbl_8031996C
+/* 80319964 003155C4 38 00 00 01 */ li r0, 1
+/* 80319968 003155C8 48 00 00 18 */ b lbl_80319980
+lbl_8031996C:
+/* 8031996C 003155CC 38 63 00 08 */ addi r3, r3, 8
+/* 80319970 003155D0 38 84 00 01 */ addi r4, r4, 1
+lbl_80319974:
+/* 80319974 003155D4 28 04 00 01 */ cmplwi r4, 1
+/* 80319978 003155D8 41 80 FF D0 */ blt lbl_80319948
+/* 8031997C 003155DC 38 00 00 00 */ li r0, 0
+lbl_80319980:
+/* 80319980 003155E0 2C 00 00 00 */ cmpwi r0, 0
+/* 80319984 003155E4 41 82 00 60 */ beq lbl_803199E4
+/* 80319988 003155E8 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 8031998C 003155EC 38 80 00 01 */ li r4, 1
+/* 80319990 003155F0 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319994 003155F4 38 63 00 0C */ addi r3, r3, 0xc
+/* 80319998 003155F8 48 00 00 44 */ b lbl_803199DC
+lbl_8031999C:
+/* 8031999C 003155FC 80 03 00 00 */ lwz r0, 0(r3)
+/* 803199A0 00315600 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 803199A4 00315604 40 82 00 30 */ bne lbl_803199D4
+/* 803199A8 00315608 1C C4 00 0C */ mulli r6, r4, 0xc
+/* 803199AC 0031560C 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 803199B0 00315610 80 01 00 08 */ lwz r0, 8(r1)
+/* 803199B4 00315614 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
+/* 803199B8 00315618 7C 85 30 2E */ lwzx r4, r5, r6
+/* 803199BC 0031561C 7C 65 32 14 */ add r3, r5, r6
+/* 803199C0 00315620 60 84 00 01 */ ori r4, r4, 1
+/* 803199C4 00315624 7C 85 31 2E */ stwx r4, r5, r6
+/* 803199C8 00315628 90 03 00 04 */ stw r0, 4(r3)
+/* 803199CC 0031562C 93 E3 00 08 */ stw r31, 8(r3)
+/* 803199D0 00315630 48 00 00 14 */ b lbl_803199E4
+lbl_803199D4:
+/* 803199D4 00315634 38 63 00 0C */ addi r3, r3, 0xc
+/* 803199D8 00315638 38 84 00 01 */ addi r4, r4, 1
+lbl_803199DC:
+/* 803199DC 0031563C 28 04 00 01 */ cmplwi r4, 1
+/* 803199E0 00315640 41 80 FF BC */ blt lbl_8031999C
+lbl_803199E4:
+/* 803199E4 00315644 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 803199E8 00315648 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 803199EC 0031564C 93 E3 00 08 */ stw r31, 8(r3)
+/* 803199F0 00315650 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803199F4 00315654 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803199F8 00315658 7C 08 03 A6 */ mtlr r0
+/* 803199FC 0031565C 38 21 00 20 */ addi r1, r1, 0x20
+/* 80319A00 00315660 4E 80 00 20 */ blr
+
+.global VFiPFVOL_GetCurrentVolume
+VFiPFVOL_GetCurrentVolume:
+/* 80319A04 00315664 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80319A08 00315668 7C 08 02 A6 */ mflr r0
+/* 80319A0C 0031566C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80319A10 00315670 38 61 00 08 */ addi r3, r1, 8
+/* 80319A14 00315674 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80319A18 00315678 3B E0 00 00 */ li r31, 0
+/* 80319A1C 0031567C 48 00 0A 11 */ bl MWInitializeMutex
+/* 80319A20 00315680 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80319A24 00315684 80 A1 00 08 */ lwz r5, 8(r1)
+/* 80319A28 00315688 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319A2C 0031568C 38 80 00 01 */ li r4, 1
+/* 80319A30 00315690 38 63 00 0C */ addi r3, r3, 0xc
+/* 80319A34 00315694 48 00 00 3C */ b lbl_80319A70
+lbl_80319A38:
+/* 80319A38 00315698 80 03 00 00 */ lwz r0, 0(r3)
+/* 80319A3C 0031569C 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80319A40 003156A0 41 82 00 28 */ beq lbl_80319A68
+/* 80319A44 003156A4 80 03 00 04 */ lwz r0, 4(r3)
+/* 80319A48 003156A8 7C 05 00 00 */ cmpw r5, r0
+/* 80319A4C 003156AC 40 82 00 1C */ bne lbl_80319A68
+/* 80319A50 003156B0 1C 04 00 0C */ mulli r0, r4, 0xc
+/* 80319A54 003156B4 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80319A58 003156B8 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319A5C 003156BC 7C 63 02 14 */ add r3, r3, r0
+/* 80319A60 003156C0 83 E3 00 08 */ lwz r31, 8(r3)
+/* 80319A64 003156C4 48 00 00 14 */ b lbl_80319A78
+lbl_80319A68:
+/* 80319A68 003156C8 38 63 00 0C */ addi r3, r3, 0xc
+/* 80319A6C 003156CC 38 84 00 01 */ addi r4, r4, 1
+lbl_80319A70:
+/* 80319A70 003156D0 28 04 00 01 */ cmplwi r4, 1
+/* 80319A74 003156D4 41 80 FF C4 */ blt lbl_80319A38
+lbl_80319A78:
+/* 80319A78 003156D8 28 04 00 01 */ cmplwi r4, 1
+/* 80319A7C 003156DC 40 82 00 C4 */ bne lbl_80319B40
+/* 80319A80 003156E0 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80319A84 003156E4 38 80 00 01 */ li r4, 1
+/* 80319A88 003156E8 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319A8C 003156EC 38 63 00 08 */ addi r3, r3, 8
+/* 80319A90 003156F0 48 00 00 30 */ b lbl_80319AC0
+lbl_80319A94:
+/* 80319A94 003156F4 80 03 00 40 */ lwz r0, 0x40(r3)
+/* 80319A98 003156F8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80319A9C 003156FC 90 03 00 40 */ stw r0, 0x40(r3)
+/* 80319AA0 00315700 41 82 00 18 */ beq lbl_80319AB8
+/* 80319AA4 00315704 80 03 00 44 */ lwz r0, 0x44(r3)
+/* 80319AA8 00315708 7C 05 00 00 */ cmpw r5, r0
+/* 80319AAC 0031570C 40 82 00 0C */ bne lbl_80319AB8
+/* 80319AB0 00315710 38 00 00 01 */ li r0, 1
+/* 80319AB4 00315714 48 00 00 18 */ b lbl_80319ACC
+lbl_80319AB8:
+/* 80319AB8 00315718 38 63 00 08 */ addi r3, r3, 8
+/* 80319ABC 0031571C 38 84 00 01 */ addi r4, r4, 1
+lbl_80319AC0:
+/* 80319AC0 00315720 28 04 00 01 */ cmplwi r4, 1
+/* 80319AC4 00315724 41 80 FF D0 */ blt lbl_80319A94
+/* 80319AC8 00315728 38 00 00 00 */ li r0, 0
+lbl_80319ACC:
+/* 80319ACC 0031572C 2C 00 00 00 */ cmpwi r0, 0
+/* 80319AD0 00315730 41 82 00 64 */ beq lbl_80319B34
+/* 80319AD4 00315734 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80319AD8 00315738 38 80 00 01 */ li r4, 1
+/* 80319ADC 0031573C 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319AE0 00315740 38 63 00 0C */ addi r3, r3, 0xc
+/* 80319AE4 00315744 48 00 00 44 */ b lbl_80319B28
+lbl_80319AE8:
+/* 80319AE8 00315748 80 03 00 00 */ lwz r0, 0(r3)
+/* 80319AEC 0031574C 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80319AF0 00315750 40 82 00 30 */ bne lbl_80319B20
+/* 80319AF4 00315754 1C C4 00 0C */ mulli r6, r4, 0xc
+/* 80319AF8 00315758 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 80319AFC 0031575C 80 01 00 08 */ lwz r0, 8(r1)
+/* 80319B00 00315760 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
+/* 80319B04 00315764 7C 85 30 2E */ lwzx r4, r5, r6
+/* 80319B08 00315768 7C 65 32 14 */ add r3, r5, r6
+/* 80319B0C 0031576C 60 84 00 01 */ ori r4, r4, 1
+/* 80319B10 00315770 7C 85 31 2E */ stwx r4, r5, r6
+/* 80319B14 00315774 90 03 00 04 */ stw r0, 4(r3)
+/* 80319B18 00315778 83 E3 00 08 */ lwz r31, 8(r3)
+/* 80319B1C 0031577C 48 00 00 24 */ b lbl_80319B40
+lbl_80319B20:
+/* 80319B20 00315780 38 63 00 0C */ addi r3, r3, 0xc
+/* 80319B24 00315784 38 84 00 01 */ addi r4, r4, 1
+lbl_80319B28:
+/* 80319B28 00315788 28 04 00 01 */ cmplwi r4, 1
+/* 80319B2C 0031578C 41 80 FF BC */ blt lbl_80319AE8
+/* 80319B30 00315790 48 00 00 10 */ b lbl_80319B40
+lbl_80319B34:
+/* 80319B34 00315794 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80319B38 00315798 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319B3C 0031579C 83 E3 00 08 */ lwz r31, 8(r3)
+lbl_80319B40:
+/* 80319B40 003157A0 7F E3 FB 78 */ mr r3, r31
+/* 80319B44 003157A4 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80319B48 003157A8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80319B4C 003157AC 7C 08 03 A6 */ mtlr r0
+/* 80319B50 003157B0 38 21 00 20 */ addi r1, r1, 0x20
+/* 80319B54 003157B4 4E 80 00 20 */ blr
+
+.global VFiPFVOL_GetVolumeFromDrvChar
+VFiPFVOL_GetVolumeFromDrvChar:
+/* 80319B58 003157B8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80319B5C 003157BC 7C 08 02 A6 */ mflr r0
+/* 80319B60 003157C0 7C 63 07 74 */ extsb r3, r3
+/* 80319B64 003157C4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80319B68 003157C8 4B FE B3 2D */ bl VFipf_toupper
+/* 80319B6C 003157CC 38 03 FF BF */ addi r0, r3, -65
+/* 80319B70 003157D0 7C 00 07 35 */ extsh. r0, r0
+/* 80319B74 003157D4 41 80 00 0C */ blt lbl_80319B80
+/* 80319B78 003157D8 2C 00 00 1A */ cmpwi r0, 0x1a
+/* 80319B7C 003157DC 41 80 00 0C */ blt lbl_80319B88
+lbl_80319B80:
+/* 80319B80 003157E0 38 60 00 00 */ li r3, 0
+/* 80319B84 003157E4 48 00 00 18 */ b lbl_80319B9C
+lbl_80319B88:
+/* 80319B88 003157E8 1C 00 18 98 */ mulli r0, r0, 0x1898
+/* 80319B8C 003157EC 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80319B90 003157F0 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319B94 003157F4 7C 63 02 14 */ add r3, r3, r0
+/* 80319B98 003157F8 38 63 00 48 */ addi r3, r3, 0x48
+lbl_80319B9C:
+/* 80319B9C 003157FC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80319BA0 00315800 7C 08 03 A6 */ mtlr r0
+/* 80319BA4 00315804 38 21 00 10 */ addi r1, r1, 0x10
+/* 80319BA8 00315808 4E 80 00 20 */ blr
+
+.global VFiPFVOL_LoadVolumeLabelFromBuf
+VFiPFVOL_LoadVolumeLabelFromBuf:
+/* 80319BAC 0031580C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80319BB0 00315810 7C 08 02 A6 */ mflr r0
+/* 80319BB4 00315814 38 A0 00 0B */ li r5, 0xb
+/* 80319BB8 00315818 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80319BBC 0031581C 7C 60 1B 78 */ mr r0, r3
+/* 80319BC0 00315820 38 64 16 0C */ addi r3, r4, 0x160c
+/* 80319BC4 00315824 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80319BC8 00315828 7C 9F 23 78 */ mr r31, r4
+/* 80319BCC 0031582C 7C 04 03 78 */ mr r4, r0
+/* 80319BD0 00315830 4B FE B2 DD */ bl VFipf_memcpy
+/* 80319BD4 00315834 38 00 00 00 */ li r0, 0
+/* 80319BD8 00315838 98 1F 16 17 */ stb r0, 0x1617(r31)
+/* 80319BDC 0031583C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80319BE0 00315840 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80319BE4 00315844 7C 08 03 A6 */ mtlr r0
+/* 80319BE8 00315848 38 21 00 10 */ addi r1, r1, 0x10
+/* 80319BEC 0031584C 4E 80 00 20 */ blr
+
+.global VFiPFVOL_errnum
+VFiPFVOL_errnum:
+/* 80319BF0 00315850 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 80319BF4 00315854 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 80319BF8 00315858 80 63 00 1C */ lwz r3, 0x1c(r3)
+/* 80319BFC 0031585C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_w_clib.s b/asm/SDK/VF/pf_w_clib.s new file mode 100644 index 0000000..aa35fcb --- /dev/null +++ b/asm/SDK/VF/pf_w_clib.s @@ -0,0 +1,57 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFipf_w_strlen
+VFipf_w_strlen:
+/* 80305860 003014C0 7C 64 1B 78 */ mr r4, r3
+/* 80305864 003014C4 48 00 00 08 */ b lbl_8030586C
+lbl_80305868:
+/* 80305868 003014C8 38 84 00 02 */ addi r4, r4, 2
+lbl_8030586C:
+/* 8030586C 003014CC A0 04 00 00 */ lhz r0, 0(r4)
+/* 80305870 003014D0 2C 00 00 00 */ cmpwi r0, 0
+/* 80305874 003014D4 40 82 FF F4 */ bne lbl_80305868
+/* 80305878 003014D8 7C 03 20 50 */ subf r0, r3, r4
+/* 8030587C 003014DC 7C 03 0E 70 */ srawi r3, r0, 1
+/* 80305880 003014E0 4E 80 00 20 */ blr
+
+.global VFipf_w_strcpy
+VFipf_w_strcpy:
+/* 80305884 003014E4 7C 65 1B 78 */ mr r5, r3
+/* 80305888 003014E8 48 00 00 0C */ b lbl_80305894
+lbl_8030588C:
+/* 8030588C 003014EC 38 84 00 02 */ addi r4, r4, 2
+/* 80305890 003014F0 38 A5 00 02 */ addi r5, r5, 2
+lbl_80305894:
+/* 80305894 003014F4 A0 04 00 00 */ lhz r0, 0(r4)
+/* 80305898 003014F8 2C 00 00 00 */ cmpwi r0, 0
+/* 8030589C 003014FC B0 05 00 00 */ sth r0, 0(r5)
+/* 803058A0 00301500 40 82 FF EC */ bne lbl_8030588C
+/* 803058A4 00301504 4E 80 00 20 */ blr
+
+.global VFipf_w_strncmp
+VFipf_w_strncmp:
+/* 803058A8 00301508 7C A9 03 A6 */ mtctr r5
+/* 803058AC 0030150C 2C 05 00 00 */ cmpwi r5, 0
+/* 803058B0 00301510 41 82 00 3C */ beq lbl_803058EC
+lbl_803058B4:
+/* 803058B4 00301514 A0 A3 00 00 */ lhz r5, 0(r3)
+/* 803058B8 00301518 2C 05 00 00 */ cmpwi r5, 0
+/* 803058BC 0030151C 41 82 00 18 */ beq lbl_803058D4
+/* 803058C0 00301520 A0 04 00 00 */ lhz r0, 0(r4)
+/* 803058C4 00301524 2C 00 00 00 */ cmpwi r0, 0
+/* 803058C8 00301528 41 82 00 0C */ beq lbl_803058D4
+/* 803058CC 0030152C 7C 05 00 40 */ cmplw r5, r0
+/* 803058D0 00301530 41 82 00 10 */ beq lbl_803058E0
+lbl_803058D4:
+/* 803058D4 00301534 A0 04 00 00 */ lhz r0, 0(r4)
+/* 803058D8 00301538 7C 60 28 50 */ subf r3, r0, r5
+/* 803058DC 0030153C 4E 80 00 20 */ blr
+lbl_803058E0:
+/* 803058E0 00301540 38 63 00 02 */ addi r3, r3, 2
+/* 803058E4 00301544 38 84 00 02 */ addi r4, r4, 2
+/* 803058E8 00301548 42 00 FF CC */ bdnz lbl_803058B4
+lbl_803058EC:
+/* 803058EC 0030154C 38 60 00 00 */ li r3, 0
+/* 803058F0 00301550 4E 80 00 20 */ blr
|