diff options
Diffstat (limited to 'asm/SDK')
-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_cache.s | 2223 | ||||
-rw-r--r-- | asm/SDK/VF/pf_clib.s | 246 | ||||
-rw-r--r-- | asm/SDK/VF/pf_code.s | 16 | ||||
-rw-r--r-- | asm/SDK/VF/pf_driver.s | 726 | ||||
-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_w_clib.s | 57 |
12 files changed, 7085 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_cache.s b/asm/SDK/VF/pf_cache.s new file mode 100644 index 0000000..1160c8b --- /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 func_8030FEA4
+/* 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_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_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_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_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
|