diff options
Diffstat (limited to 'asm/SDK')
-rw-r--r-- | asm/SDK/VF/pf_cache.s | 2 | ||||
-rw-r--r-- | asm/SDK/VF/pf_cluster.s | 350 | ||||
-rw-r--r-- | asm/SDK/VF/pf_dir.s | 43 | ||||
-rw-r--r-- | asm/SDK/VF/pf_entry.s | 1818 | ||||
-rw-r--r-- | asm/SDK/VF/pf_entry_iterator.s | 1818 | ||||
-rw-r--r-- | asm/SDK/VF/pf_fat.s | 3313 | ||||
-rw-r--r-- | asm/SDK/VF/pf_fat12.s | 784 | ||||
-rw-r--r-- | asm/SDK/VF/pf_fat16.s | 398 | ||||
-rw-r--r-- | asm/SDK/VF/pf_fat32.s | 449 | ||||
-rw-r--r-- | asm/SDK/VF/pf_fatfs.s | 7 |
10 files changed, 8981 insertions, 1 deletions
diff --git a/asm/SDK/VF/pf_cache.s b/asm/SDK/VF/pf_cache.s index 1160c8b..e50fec0 100644 --- a/asm/SDK/VF/pf_cache.s +++ b/asm/SDK/VF/pf_cache.s @@ -339,7 +339,7 @@ lbl_8030935C: /* 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
+/* 80309378 00304FD8 48 00 6B 2D */ bl VFiPFFAT_UpdateAlternateFATEntry
/* 8030937C 00304FDC 2C 03 00 00 */ cmpwi r3, 0
/* 80309380 00304FE0 41 82 00 08 */ beq lbl_80309388
/* 80309384 00304FE4 48 00 00 20 */ b lbl_803093A4
diff --git a/asm/SDK/VF/pf_cluster.s b/asm/SDK/VF/pf_cluster.s new file mode 100644 index 0000000..ed95fd7 --- /dev/null +++ b/asm/SDK/VF/pf_cluster.s @@ -0,0 +1,350 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFCLUSTER_UpdateLastAccessCluster
+VFiPFCLUSTER_UpdateLastAccessCluster:
+/* 8030AD80 003069E0 80 C3 00 1C */ lwz r6, 0x1c(r3)
+/* 8030AD84 003069E4 2C 06 00 00 */ cmpwi r6, 0
+/* 8030AD88 003069E8 40 82 00 1C */ bne lbl_8030ADA4
+/* 8030AD8C 003069EC 80 83 00 08 */ lwz r4, 8(r3)
+/* 8030AD90 003069F0 38 00 00 00 */ li r0, 0
+/* 8030AD94 003069F4 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 8030AD98 003069F8 80 63 00 08 */ lwz r3, 8(r3)
+/* 8030AD9C 003069FC 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8030ADA0 00306A00 4E 80 00 20 */ blr
+lbl_8030ADA4:
+/* 8030ADA4 00306A04 2C 03 00 00 */ cmpwi r3, 0
+/* 8030ADA8 00306A08 40 82 00 0C */ bne lbl_8030ADB4
+/* 8030ADAC 00306A0C 38 E0 00 00 */ li r7, 0
+/* 8030ADB0 00306A10 48 00 00 0C */ b lbl_8030ADBC
+lbl_8030ADB4:
+/* 8030ADB4 00306A14 80 A3 00 08 */ lwz r5, 8(r3)
+/* 8030ADB8 00306A18 80 E5 02 68 */ lwz r7, 0x268(r5)
+lbl_8030ADBC:
+/* 8030ADBC 00306A1C A0 A7 00 00 */ lhz r5, 0(r7)
+/* 8030ADC0 00306A20 38 05 FF FF */ addi r0, r5, -1
+/* 8030ADC4 00306A24 7C C0 00 39 */ and. r0, r6, r0
+/* 8030ADC8 00306A28 40 82 00 58 */ bne lbl_8030AE20
+/* 8030ADCC 00306A2C 88 A7 00 06 */ lbz r5, 6(r7)
+/* 8030ADD0 00306A30 80 C3 00 24 */ lwz r6, 0x24(r3)
+/* 8030ADD4 00306A34 38 05 FF FF */ addi r0, r5, -1
+/* 8030ADD8 00306A38 7C C0 00 39 */ and. r0, r6, r0
+/* 8030ADDC 00306A3C 40 82 00 44 */ bne lbl_8030AE20
+/* 8030ADE0 00306A40 2C 06 00 00 */ cmpwi r6, 0
+/* 8030ADE4 00306A44 4D 82 00 20 */ beqlr
+/* 8030ADE8 00306A48 88 07 00 21 */ lbz r0, 0x21(r7)
+/* 8030ADEC 00306A4C 38 C6 FF FF */ addi r6, r6, -1
+/* 8030ADF0 00306A50 80 A3 00 08 */ lwz r5, 8(r3)
+/* 8030ADF4 00306A54 38 84 FF FF */ addi r4, r4, -1
+/* 8030ADF8 00306A58 7C C0 04 30 */ srw r0, r6, r0
+/* 8030ADFC 00306A5C 90 05 00 18 */ stw r0, 0x18(r5)
+/* 8030AE00 00306A60 80 A7 00 30 */ lwz r5, 0x30(r7)
+/* 8030AE04 00306A64 88 07 00 21 */ lbz r0, 0x21(r7)
+/* 8030AE08 00306A68 7C 85 20 50 */ subf r4, r5, r4
+/* 8030AE0C 00306A6C 80 63 00 08 */ lwz r3, 8(r3)
+/* 8030AE10 00306A70 7C 84 04 30 */ srw r4, r4, r0
+/* 8030AE14 00306A74 38 04 00 02 */ addi r0, r4, 2
+/* 8030AE18 00306A78 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 8030AE1C 00306A7C 4E 80 00 20 */ blr
+lbl_8030AE20:
+/* 8030AE20 00306A80 80 C3 00 24 */ lwz r6, 0x24(r3)
+/* 8030AE24 00306A84 88 07 00 21 */ lbz r0, 0x21(r7)
+/* 8030AE28 00306A88 80 A3 00 08 */ lwz r5, 8(r3)
+/* 8030AE2C 00306A8C 7C C0 04 30 */ srw r0, r6, r0
+/* 8030AE30 00306A90 90 05 00 18 */ stw r0, 0x18(r5)
+/* 8030AE34 00306A94 80 A7 00 30 */ lwz r5, 0x30(r7)
+/* 8030AE38 00306A98 88 07 00 21 */ lbz r0, 0x21(r7)
+/* 8030AE3C 00306A9C 7C 85 20 50 */ subf r4, r5, r4
+/* 8030AE40 00306AA0 80 63 00 08 */ lwz r3, 8(r3)
+/* 8030AE44 00306AA4 7C 84 04 30 */ srw r4, r4, r0
+/* 8030AE48 00306AA8 38 04 00 02 */ addi r0, r4, 2
+/* 8030AE4C 00306AAC 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 8030AE50 00306AB0 4E 80 00 20 */ blr
+
+.global VFiPFCLUSTER_AppendCluster
+VFiPFCLUSTER_AppendCluster:
+/* 8030AE54 00306AB4 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030AE58 00306AB8 7C 08 02 A6 */ mflr r0
+/* 8030AE5C 00306ABC 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030AE60 00306AC0 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030AE64 00306AC4 4B EB C2 C1 */ bl _savegpr_26
+/* 8030AE68 00306AC8 3C E0 80 58 */ lis r7, lbl_8057F5C8@ha
+/* 8030AE6C 00306ACC 38 00 00 00 */ li r0, 0
+/* 8030AE70 00306AD0 38 E7 F5 C8 */ addi r7, r7, lbl_8057F5C8@l
+/* 8030AE74 00306AD4 90 05 00 00 */ stw r0, 0(r5)
+/* 8030AE78 00306AD8 7C 07 18 40 */ cmplw r7, r3
+/* 8030AE7C 00306ADC 7C 7B 1B 78 */ mr r27, r3
+/* 8030AE80 00306AE0 7C 9C 23 78 */ mr r28, r4
+/* 8030AE84 00306AE4 7C BD 2B 78 */ mr r29, r5
+/* 8030AE88 00306AE8 7C DE 33 78 */ mr r30, r6
+/* 8030AE8C 00306AEC 41 81 00 14 */ bgt lbl_8030AEA0
+/* 8030AE90 00306AF0 3C A7 00 02 */ addis r5, r7, 2
+/* 8030AE94 00306AF4 38 05 7F B8 */ addi r0, r5, 0x7fb8
+/* 8030AE98 00306AF8 7C 00 18 40 */ cmplw r0, r3
+/* 8030AE9C 00306AFC 40 80 00 0C */ bge lbl_8030AEA8
+lbl_8030AEA0:
+/* 8030AEA0 00306B00 38 60 00 0A */ li r3, 0xa
+/* 8030AEA4 00306B04 48 00 01 D4 */ b lbl_8030B078
+lbl_8030AEA8:
+/* 8030AEA8 00306B08 2F 03 00 00 */ cmpwi cr6, r3, 0
+/* 8030AEAC 00306B0C 41 9A 00 34 */ beq cr6, lbl_8030AEE0
+/* 8030AEB0 00306B10 83 43 00 08 */ lwz r26, 8(r3)
+/* 8030AEB4 00306B14 2C 1A 00 00 */ cmpwi r26, 0
+/* 8030AEB8 00306B18 41 82 00 28 */ beq lbl_8030AEE0
+/* 8030AEBC 00306B1C 80 03 00 00 */ lwz r0, 0(r3)
+/* 8030AEC0 00306B20 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8030AEC4 00306B24 41 82 00 1C */ beq lbl_8030AEE0
+/* 8030AEC8 00306B28 80 1A 00 00 */ lwz r0, 0(r26)
+/* 8030AECC 00306B2C 54 05 07 FE */ clrlwi r5, r0, 0x1f
+/* 8030AED0 00306B30 2C 85 00 00 */ cmpwi cr1, r5, 0
+/* 8030AED4 00306B34 41 86 00 0C */ beq cr1, lbl_8030AEE0
+/* 8030AED8 00306B38 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 8030AEDC 00306B3C 40 82 00 0C */ bne lbl_8030AEE8
+lbl_8030AEE0:
+/* 8030AEE0 00306B40 38 60 00 26 */ li r3, 0x26
+/* 8030AEE4 00306B44 48 00 01 94 */ b lbl_8030B078
+lbl_8030AEE8:
+/* 8030AEE8 00306B48 41 86 00 08 */ beq cr1, lbl_8030AEF0
+/* 8030AEEC 00306B4C 40 82 00 0C */ bne lbl_8030AEF8
+lbl_8030AEF0:
+/* 8030AEF0 00306B50 38 60 00 26 */ li r3, 0x26
+/* 8030AEF4 00306B54 48 00 01 84 */ b lbl_8030B078
+lbl_8030AEF8:
+/* 8030AEF8 00306B58 40 9A 00 0C */ bne cr6, lbl_8030AF04
+/* 8030AEFC 00306B5C 3B E0 00 00 */ li r31, 0
+/* 8030AF00 00306B60 48 00 00 08 */ b lbl_8030AF08
+lbl_8030AF04:
+/* 8030AF04 00306B64 83 FA 02 68 */ lwz r31, 0x268(r26)
+lbl_8030AF08:
+/* 8030AF08 00306B68 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030AF0C 00306B6C 40 82 00 0C */ bne lbl_8030AF18
+/* 8030AF10 00306B70 38 60 00 26 */ li r3, 0x26
+/* 8030AF14 00306B74 48 00 01 64 */ b lbl_8030B078
+lbl_8030AF18:
+/* 8030AF18 00306B78 81 83 00 1C */ lwz r12, 0x1c(r3)
+/* 8030AF1C 00306B7C 38 A3 00 0C */ addi r5, r3, 0xc
+/* 8030AF20 00306B80 81 63 00 20 */ lwz r11, 0x20(r3)
+/* 8030AF24 00306B84 38 00 FF FF */ li r0, -1
+/* 8030AF28 00306B88 81 43 00 24 */ lwz r10, 0x24(r3)
+/* 8030AF2C 00306B8C 81 23 00 28 */ lwz r9, 0x28(r3)
+/* 8030AF30 00306B90 81 03 00 0C */ lwz r8, 0xc(r3)
+/* 8030AF34 00306B94 80 E3 00 10 */ lwz r7, 0x10(r3)
+/* 8030AF38 00306B98 80 63 00 14 */ lwz r3, 0x14(r3)
+/* 8030AF3C 00306B9C 91 81 00 18 */ stw r12, 0x18(r1)
+/* 8030AF40 00306BA0 90 BA 00 34 */ stw r5, 0x34(r26)
+/* 8030AF44 00306BA4 90 06 00 00 */ stw r0, 0(r6)
+/* 8030AF48 00306BA8 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8030AF4C 00306BAC 91 61 00 1C */ stw r11, 0x1c(r1)
+/* 8030AF50 00306BB0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 8030AF54 00306BB4 91 41 00 20 */ stw r10, 0x20(r1)
+/* 8030AF58 00306BB8 91 21 00 24 */ stw r9, 0x24(r1)
+/* 8030AF5C 00306BBC 91 01 00 0C */ stw r8, 0xc(r1)
+/* 8030AF60 00306BC0 90 E1 00 10 */ stw r7, 0x10(r1)
+/* 8030AF64 00306BC4 90 61 00 14 */ stw r3, 0x14(r1)
+/* 8030AF68 00306BC8 41 82 00 24 */ beq lbl_8030AF8C
+/* 8030AF6C 00306BCC 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 8030AF70 00306BD0 3C 03 00 01 */ addis r0, r3, 1
+/* 8030AF74 00306BD4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030AF78 00306BD8 41 82 00 14 */ beq lbl_8030AF8C
+/* 8030AF7C 00306BDC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030AF80 00306BE0 40 82 00 0C */ bne lbl_8030AF8C
+/* 8030AF84 00306BE4 38 60 00 06 */ li r3, 6
+/* 8030AF88 00306BE8 48 00 00 F0 */ b lbl_8030B078
+lbl_8030AF8C:
+/* 8030AF8C 00306BEC 80 BB 00 08 */ lwz r5, 8(r27)
+/* 8030AF90 00306BF0 7F 63 DB 78 */ mr r3, r27
+/* 8030AF94 00306BF4 80 05 02 64 */ lwz r0, 0x264(r5)
+/* 8030AF98 00306BF8 7C 80 22 14 */ add r4, r0, r4
+/* 8030AF9C 00306BFC 48 00 8C CD */ bl func_80313C68
+/* 8030AFA0 00306C00 80 7B 00 1C */ lwz r3, 0x1c(r27)
+/* 8030AFA4 00306C04 3C 03 00 01 */ addis r0, r3, 1
+/* 8030AFA8 00306C08 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030AFAC 00306C0C 40 82 00 14 */ bne lbl_8030AFC0
+/* 8030AFB0 00306C10 38 00 00 00 */ li r0, 0
+/* 8030AFB4 00306C14 38 60 00 25 */ li r3, 0x25
+/* 8030AFB8 00306C18 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030AFBC 00306C1C 48 00 00 BC */ b lbl_8030B078
+lbl_8030AFC0:
+/* 8030AFC0 00306C20 80 7B 00 08 */ lwz r3, 8(r27)
+/* 8030AFC4 00306C24 7F 85 E3 78 */ mr r5, r28
+/* 8030AFC8 00306C28 80 9B 00 24 */ lwz r4, 0x24(r27)
+/* 8030AFCC 00306C2C 7F C6 F3 78 */ mr r6, r30
+/* 8030AFD0 00306C30 38 63 00 04 */ addi r3, r3, 4
+/* 8030AFD4 00306C34 38 E1 00 08 */ addi r7, r1, 8
+/* 8030AFD8 00306C38 48 00 50 69 */ bl VFiPFFAT_GetSectorAllocated
+/* 8030AFDC 00306C3C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030AFE0 00306C40 41 82 00 40 */ beq lbl_8030B020
+/* 8030AFE4 00306C44 81 21 00 18 */ lwz r9, 0x18(r1)
+/* 8030AFE8 00306C48 81 01 00 1C */ lwz r8, 0x1c(r1)
+/* 8030AFEC 00306C4C 80 E1 00 20 */ lwz r7, 0x20(r1)
+/* 8030AFF0 00306C50 80 C1 00 24 */ lwz r6, 0x24(r1)
+/* 8030AFF4 00306C54 80 A1 00 0C */ lwz r5, 0xc(r1)
+/* 8030AFF8 00306C58 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 8030AFFC 00306C5C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030B000 00306C60 91 3B 00 1C */ stw r9, 0x1c(r27)
+/* 8030B004 00306C64 91 1B 00 20 */ stw r8, 0x20(r27)
+/* 8030B008 00306C68 90 FB 00 24 */ stw r7, 0x24(r27)
+/* 8030B00C 00306C6C 90 DB 00 28 */ stw r6, 0x28(r27)
+/* 8030B010 00306C70 90 BB 00 0C */ stw r5, 0xc(r27)
+/* 8030B014 00306C74 90 9B 00 10 */ stw r4, 0x10(r27)
+/* 8030B018 00306C78 90 1B 00 14 */ stw r0, 0x14(r27)
+/* 8030B01C 00306C7C 48 00 00 5C */ b lbl_8030B078
+lbl_8030B020:
+/* 8030B020 00306C80 81 01 00 18 */ lwz r8, 0x18(r1)
+/* 8030B024 00306C84 80 E1 00 1C */ lwz r7, 0x1c(r1)
+/* 8030B028 00306C88 80 C1 00 20 */ lwz r6, 0x20(r1)
+/* 8030B02C 00306C8C 80 A1 00 24 */ lwz r5, 0x24(r1)
+/* 8030B030 00306C90 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030B034 00306C94 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 8030B038 00306C98 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030B03C 00306C9C 91 1B 00 1C */ stw r8, 0x1c(r27)
+/* 8030B040 00306CA0 90 FB 00 20 */ stw r7, 0x20(r27)
+/* 8030B044 00306CA4 90 DB 00 24 */ stw r6, 0x24(r27)
+/* 8030B048 00306CA8 90 BB 00 28 */ stw r5, 0x28(r27)
+/* 8030B04C 00306CAC 90 9B 00 0C */ stw r4, 0xc(r27)
+/* 8030B050 00306CB0 90 7B 00 10 */ stw r3, 0x10(r27)
+/* 8030B054 00306CB4 90 1B 00 14 */ stw r0, 0x14(r27)
+/* 8030B058 00306CB8 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030B05C 00306CBC 88 1F 00 20 */ lbz r0, 0x20(r31)
+/* 8030B060 00306CC0 7C 60 00 30 */ slw r0, r3, r0
+/* 8030B064 00306CC4 7C 1C 00 40 */ cmplw r28, r0
+/* 8030B068 00306CC8 40 80 00 08 */ bge lbl_8030B070
+/* 8030B06C 00306CCC 7F 80 E3 78 */ mr r0, r28
+lbl_8030B070:
+/* 8030B070 00306CD0 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030B074 00306CD4 38 60 00 00 */ li r3, 0
+lbl_8030B078:
+/* 8030B078 00306CD8 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030B07C 00306CDC 4B EB C0 F5 */ bl _restgpr_26
+/* 8030B080 00306CE0 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030B084 00306CE4 7C 08 03 A6 */ mtlr r0
+/* 8030B088 00306CE8 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030B08C 00306CEC 4E 80 00 20 */ blr
+
+.global VFiPFCLUSTER_GetAppendSize
+VFiPFCLUSTER_GetAppendSize:
+/* 8030B090 00306CF0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030B094 00306CF4 7C 08 02 A6 */ mflr r0
+/* 8030B098 00306CF8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030B09C 00306CFC 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030B0A0 00306D00 4B EB C0 85 */ bl _savegpr_26
+/* 8030B0A4 00306D04 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 8030B0A8 00306D08 38 00 00 00 */ li r0, 0
+/* 8030B0AC 00306D0C 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
+/* 8030B0B0 00306D10 90 04 00 00 */ stw r0, 0(r4)
+/* 8030B0B4 00306D14 7C 05 18 40 */ cmplw r5, r3
+/* 8030B0B8 00306D18 7C 9F 23 78 */ mr r31, r4
+/* 8030B0BC 00306D1C 41 81 00 14 */ bgt lbl_8030B0D0
+/* 8030B0C0 00306D20 3C 85 00 02 */ addis r4, r5, 2
+/* 8030B0C4 00306D24 38 04 7F B8 */ addi r0, r4, 0x7fb8
+/* 8030B0C8 00306D28 7C 00 18 40 */ cmplw r0, r3
+/* 8030B0CC 00306D2C 40 80 00 0C */ bge lbl_8030B0D8
+lbl_8030B0D0:
+/* 8030B0D0 00306D30 38 60 00 0A */ li r3, 0xa
+/* 8030B0D4 00306D34 48 00 01 4C */ b lbl_8030B220
+lbl_8030B0D8:
+/* 8030B0D8 00306D38 2F 03 00 00 */ cmpwi cr6, r3, 0
+/* 8030B0DC 00306D3C 41 9A 00 34 */ beq cr6, lbl_8030B110
+/* 8030B0E0 00306D40 81 03 00 08 */ lwz r8, 8(r3)
+/* 8030B0E4 00306D44 2C 08 00 00 */ cmpwi r8, 0
+/* 8030B0E8 00306D48 41 82 00 28 */ beq lbl_8030B110
+/* 8030B0EC 00306D4C 80 03 00 00 */ lwz r0, 0(r3)
+/* 8030B0F0 00306D50 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8030B0F4 00306D54 41 82 00 1C */ beq lbl_8030B110
+/* 8030B0F8 00306D58 80 08 00 00 */ lwz r0, 0(r8)
+/* 8030B0FC 00306D5C 54 03 07 FE */ clrlwi r3, r0, 0x1f
+/* 8030B100 00306D60 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 8030B104 00306D64 41 86 00 0C */ beq cr1, lbl_8030B110
+/* 8030B108 00306D68 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 8030B10C 00306D6C 40 82 00 0C */ bne lbl_8030B118
+lbl_8030B110:
+/* 8030B110 00306D70 38 60 00 26 */ li r3, 0x26
+/* 8030B114 00306D74 48 00 01 0C */ b lbl_8030B220
+lbl_8030B118:
+/* 8030B118 00306D78 41 86 00 08 */ beq cr1, lbl_8030B120
+/* 8030B11C 00306D7C 40 82 00 0C */ bne lbl_8030B128
+lbl_8030B120:
+/* 8030B120 00306D80 38 60 00 26 */ li r3, 0x26
+/* 8030B124 00306D84 48 00 00 FC */ b lbl_8030B220
+lbl_8030B128:
+/* 8030B128 00306D88 40 9A 00 0C */ bne cr6, lbl_8030B134
+/* 8030B12C 00306D8C 3B A0 00 00 */ li r29, 0
+/* 8030B130 00306D90 48 00 00 08 */ b lbl_8030B138
+lbl_8030B134:
+/* 8030B134 00306D94 83 A8 02 68 */ lwz r29, 0x268(r8)
+lbl_8030B138:
+/* 8030B138 00306D98 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030B13C 00306D9C 40 82 00 0C */ bne lbl_8030B148
+/* 8030B140 00306DA0 38 60 00 26 */ li r3, 0x26
+/* 8030B144 00306DA4 48 00 00 DC */ b lbl_8030B220
+lbl_8030B148:
+/* 8030B148 00306DA8 80 88 02 70 */ lwz r4, 0x270(r8)
+/* 8030B14C 00306DAC A0 7D 00 00 */ lhz r3, 0(r29)
+/* 8030B150 00306DB0 88 1D 00 21 */ lbz r0, 0x21(r29)
+/* 8030B154 00306DB4 2C 04 00 00 */ cmpwi r4, 0
+/* 8030B158 00306DB8 7C 7C 00 30 */ slw r28, r3, r0
+/* 8030B15C 00306DBC 41 82 00 C0 */ beq lbl_8030B21C
+/* 8030B160 00306DC0 80 A8 02 64 */ lwz r5, 0x264(r8)
+/* 8030B164 00306DC4 80 E8 00 14 */ lwz r7, 0x14(r8)
+/* 8030B168 00306DC8 7C 05 E3 96 */ divwu r0, r5, r28
+/* 8030B16C 00306DCC 2C 07 00 00 */ cmpwi r7, 0
+/* 8030B170 00306DD0 7C 00 E1 D6 */ mullw r0, r0, r28
+/* 8030B174 00306DD4 7C C0 28 50 */ subf r6, r0, r5
+/* 8030B178 00306DD8 7C 06 00 D0 */ neg r0, r6
+/* 8030B17C 00306DDC 7C 03 33 78 */ or r3, r0, r6
+/* 8030B180 00306DE0 7C 06 E0 50 */ subf r0, r6, r28
+/* 8030B184 00306DE4 7C 63 FE 70 */ srawi r3, r3, 0x1f
+/* 8030B188 00306DE8 7C 00 18 38 */ and r0, r0, r3
+/* 8030B18C 00306DEC 7F 65 02 14 */ add r27, r5, r0
+/* 8030B190 00306DF0 41 82 00 10 */ beq lbl_8030B1A0
+/* 8030B194 00306DF4 38 07 00 01 */ addi r0, r7, 1
+/* 8030B198 00306DF8 7C 00 E1 D6 */ mullw r0, r0, r28
+/* 8030B19C 00306DFC 48 00 00 78 */ b lbl_8030B214
+lbl_8030B1A0:
+/* 8030B1A0 00306E00 2C 05 00 00 */ cmpwi r5, 0
+/* 8030B1A4 00306E04 41 82 00 20 */ beq lbl_8030B1C4
+/* 8030B1A8 00306E08 38 68 00 04 */ addi r3, r8, 4
+/* 8030B1AC 00306E0C 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030B1B0 00306E10 38 E1 00 0C */ addi r7, r1, 0xc
+/* 8030B1B4 00306E14 48 00 5B F9 */ bl VFiPFFAT_TraceClustersChain
+/* 8030B1B8 00306E18 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B1BC 00306E1C 41 82 00 0C */ beq lbl_8030B1C8
+/* 8030B1C0 00306E20 48 00 00 60 */ b lbl_8030B220
+lbl_8030B1C4:
+/* 8030B1C4 00306E24 90 81 00 0C */ stw r4, 0xc(r1)
+lbl_8030B1C8:
+/* 8030B1C8 00306E28 7F A3 EB 78 */ mr r3, r29
+/* 8030B1CC 00306E2C 48 00 5F 89 */ bl VFiPFFAT_GetValueOfEOC2
+/* 8030B1D0 00306E30 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030B1D4 00306E34 7C 7E 1B 78 */ mr r30, r3
+/* 8030B1D8 00306E38 3B 40 00 00 */ li r26, 0
+/* 8030B1DC 00306E3C 48 00 00 28 */ b lbl_8030B204
+lbl_8030B1E0:
+/* 8030B1E0 00306E40 7F A3 EB 78 */ mr r3, r29
+/* 8030B1E4 00306E44 38 A1 00 08 */ addi r5, r1, 8
+/* 8030B1E8 00306E48 3B 5A 00 01 */ addi r26, r26, 1
+/* 8030B1EC 00306E4C 48 00 5E 01 */ bl VFiPFFAT_ReadValueToSpecifiedCluster
+/* 8030B1F0 00306E50 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B1F4 00306E54 41 82 00 08 */ beq lbl_8030B1FC
+/* 8030B1F8 00306E58 48 00 00 28 */ b lbl_8030B220
+lbl_8030B1FC:
+/* 8030B1FC 00306E5C 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030B200 00306E60 90 81 00 0C */ stw r4, 0xc(r1)
+lbl_8030B204:
+/* 8030B204 00306E64 7C 04 F0 40 */ cmplw r4, r30
+/* 8030B208 00306E68 40 82 FF D8 */ bne lbl_8030B1E0
+/* 8030B20C 00306E6C 7C 1A E1 D6 */ mullw r0, r26, r28
+/* 8030B210 00306E70 7C 1B 02 14 */ add r0, r27, r0
+lbl_8030B214:
+/* 8030B214 00306E74 7C 1B 00 50 */ subf r0, r27, r0
+/* 8030B218 00306E78 90 1F 00 00 */ stw r0, 0(r31)
+lbl_8030B21C:
+/* 8030B21C 00306E7C 38 60 00 00 */ li r3, 0
+lbl_8030B220:
+/* 8030B220 00306E80 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030B224 00306E84 4B EB BF 4D */ bl _restgpr_26
+/* 8030B228 00306E88 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030B22C 00306E8C 7C 08 03 A6 */ mtlr r0
+/* 8030B230 00306E90 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030B234 00306E94 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_dir.s b/asm/SDK/VF/pf_dir.s new file mode 100644 index 0000000..96a4886 --- /dev/null +++ b/asm/SDK/VF/pf_dir.s @@ -0,0 +1,43 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFDIR_FinalizeAllDirs
+VFiPFDIR_FinalizeAllDirs:
+/* 8030B238 00306E98 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030B23C 00306E9C 7C 08 02 A6 */ mflr r0
+/* 8030B240 00306EA0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030B244 00306EA4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030B248 00306EA8 3B E0 00 00 */ li r31, 0
+/* 8030B24C 00306EAC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030B250 00306EB0 3B C0 00 00 */ li r30, 0
+/* 8030B254 00306EB4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030B258 00306EB8 7C 7D 1B 78 */ mr r29, r3
+lbl_8030B25C:
+/* 8030B25C 00306EBC 57 C0 04 3E */ clrlwi r0, r30, 0x10
+/* 8030B260 00306EC0 1C 00 02 80 */ mulli r0, r0, 0x280
+/* 8030B264 00306EC4 7C 7D 02 14 */ add r3, r29, r0
+/* 8030B268 00306EC8 93 E3 0E 00 */ stw r31, 0xe00(r3)
+/* 8030B26C 00306ECC 38 63 0E 08 */ addi r3, r3, 0xe08
+/* 8030B270 00306ED0 48 00 5E C5 */ bl VFiPFFAT_FinalizeFFD
+/* 8030B274 00306ED4 3B DE 00 01 */ addi r30, r30, 1
+/* 8030B278 00306ED8 28 1E 00 03 */ cmplwi r30, 3
+/* 8030B27C 00306EDC 41 80 FF E0 */ blt lbl_8030B25C
+/* 8030B280 00306EE0 80 BD 15 80 */ lwz r5, 0x1580(r29)
+/* 8030B284 00306EE4 38 00 00 00 */ li r0, 0
+/* 8030B288 00306EE8 80 9D 15 A0 */ lwz r4, 0x15a0(r29)
+/* 8030B28C 00306EEC 80 7D 15 C0 */ lwz r3, 0x15c0(r29)
+/* 8030B290 00306EF0 54 A5 00 3C */ rlwinm r5, r5, 0, 0, 0x1e
+/* 8030B294 00306EF4 54 84 00 3C */ rlwinm r4, r4, 0, 0, 0x1e
+/* 8030B298 00306EF8 90 BD 15 80 */ stw r5, 0x1580(r29)
+/* 8030B29C 00306EFC 54 63 00 3C */ rlwinm r3, r3, 0, 0, 0x1e
+/* 8030B2A0 00306F00 90 9D 15 A0 */ stw r4, 0x15a0(r29)
+/* 8030B2A4 00306F04 90 7D 15 C0 */ stw r3, 0x15c0(r29)
+/* 8030B2A8 00306F08 90 1D 15 E4 */ stw r0, 0x15e4(r29)
+/* 8030B2AC 00306F0C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030B2B0 00306F10 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030B2B4 00306F14 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030B2B8 00306F18 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030B2BC 00306F1C 7C 08 03 A6 */ mtlr r0
+/* 8030B2C0 00306F20 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030B2C4 00306F24 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_entry.s b/asm/SDK/VF/pf_entry.s new file mode 100644 index 0000000..eb1c299 --- /dev/null +++ b/asm/SDK/VF/pf_entry.s @@ -0,0 +1,1818 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFENT_compareAttr
+VFiPFENT_compareAttr:
+/* 8030B2C8 00306F28 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B2CC 00306F2C 38 C0 00 01 */ li r6, 1
+/* 8030B2D0 00306F30 40 82 00 08 */ bne lbl_8030B2D8
+/* 8030B2D4 00306F34 38 60 00 40 */ li r3, 0x40
+lbl_8030B2D8:
+/* 8030B2D8 00306F38 54 80 06 31 */ rlwinm. r0, r4, 0, 0x18, 0x18
+/* 8030B2DC 00306F3C 41 82 00 38 */ beq lbl_8030B314
+/* 8030B2E0 00306F40 54 87 06 7F */ clrlwi. r7, r4, 0x19
+/* 8030B2E4 00306F44 54 A4 06 7E */ clrlwi r4, r5, 0x19
+/* 8030B2E8 00306F48 41 82 00 10 */ beq lbl_8030B2F8
+/* 8030B2EC 00306F4C 7C E0 18 38 */ and r0, r7, r3
+/* 8030B2F0 00306F50 7C 07 00 00 */ cmpw r7, r0
+/* 8030B2F4 00306F54 40 82 00 18 */ bne lbl_8030B30C
+lbl_8030B2F8:
+/* 8030B2F8 00306F58 2C 04 00 00 */ cmpwi r4, 0
+/* 8030B2FC 00306F5C 41 82 00 3C */ beq lbl_8030B338
+/* 8030B300 00306F60 7C 80 18 38 */ and r0, r4, r3
+/* 8030B304 00306F64 7C 04 00 00 */ cmpw r4, r0
+/* 8030B308 00306F68 40 82 00 30 */ bne lbl_8030B338
+lbl_8030B30C:
+/* 8030B30C 00306F6C 38 C0 00 00 */ li r6, 0
+/* 8030B310 00306F70 48 00 00 28 */ b lbl_8030B338
+lbl_8030B314:
+/* 8030B314 00306F74 28 04 00 7F */ cmplwi r4, 0x7f
+/* 8030B318 00306F78 41 82 00 20 */ beq lbl_8030B338
+/* 8030B31C 00306F7C 7C 03 20 40 */ cmplw r3, r4
+/* 8030B320 00306F80 41 82 00 18 */ beq lbl_8030B338
+/* 8030B324 00306F84 7C 60 20 39 */ and. r0, r3, r4
+/* 8030B328 00306F88 41 82 00 0C */ beq lbl_8030B334
+/* 8030B32C 00306F8C 7C 60 28 39 */ and. r0, r3, r5
+/* 8030B330 00306F90 41 82 00 08 */ beq lbl_8030B338
+lbl_8030B334:
+/* 8030B334 00306F94 38 C0 00 00 */ li r6, 0
+lbl_8030B338:
+/* 8030B338 00306F98 7C C3 33 78 */ mr r3, r6
+/* 8030B33C 00306F9C 4E 80 00 20 */ blr
+
+.global VFiPFENT_compareEntryName
+VFiPFENT_compareEntryName:
+/* 8030B340 00306FA0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030B344 00306FA4 7C 08 02 A6 */ mflr r0
+/* 8030B348 00306FA8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030B34C 00306FAC 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 8030B350 00306FB0 3B E0 00 01 */ li r31, 1
+/* 8030B354 00306FB4 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 8030B358 00306FB8 7C BE 2B 78 */ mr r30, r5
+/* 8030B35C 00306FBC 93 A1 00 24 */ stw r29, 0x24(r1)
+/* 8030B360 00306FC0 7C 9D 23 78 */ mr r29, r4
+/* 8030B364 00306FC4 93 81 00 20 */ stw r28, 0x20(r1)
+/* 8030B368 00306FC8 7C 7C 1B 78 */ mr r28, r3
+/* 8030B36C 00306FCC 88 03 02 0A */ lbz r0, 0x20a(r3)
+/* 8030B370 00306FD0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030B374 00306FD4 41 82 00 84 */ beq lbl_8030B3F8
+/* 8030B378 00306FD8 88 03 02 0B */ lbz r0, 0x20b(r3)
+/* 8030B37C 00306FDC 28 00 00 01 */ cmplwi r0, 1
+/* 8030B380 00306FE0 40 82 00 78 */ bne lbl_8030B3F8
+/* 8030B384 00306FE4 38 61 00 08 */ addi r3, r1, 8
+/* 8030B388 00306FE8 38 9C 02 0E */ addi r4, r28, 0x20e
+/* 8030B38C 00306FEC 38 A0 00 00 */ li r5, 0
+/* 8030B390 00306FF0 48 00 BE B9 */ bl func_80317248
+/* 8030B394 00306FF4 38 00 00 0B */ li r0, 0xb
+/* 8030B398 00306FF8 38 C1 00 08 */ addi r6, r1, 8
+/* 8030B39C 00306FFC 38 80 00 00 */ li r4, 0
+/* 8030B3A0 00307000 38 E0 00 00 */ li r7, 0
+/* 8030B3A4 00307004 7C 09 03 A6 */ mtctr r0
+lbl_8030B3A8:
+/* 8030B3A8 00307008 54 E3 04 3E */ clrlwi r3, r7, 0x10
+/* 8030B3AC 0030700C 54 80 07 FE */ clrlwi r0, r4, 0x1f
+/* 8030B3B0 00307010 7C A6 18 AE */ lbzx r5, r6, r3
+/* 8030B3B4 00307014 7C 00 00 D0 */ neg r0, r0
+/* 8030B3B8 00307018 54 84 FE 7E */ rlwinm r4, r4, 0x1f, 0x19, 0x1f
+/* 8030B3BC 0030701C 38 E7 00 01 */ addi r7, r7, 1
+/* 8030B3C0 00307020 54 03 06 30 */ rlwinm r3, r0, 0, 0x18, 0x18
+/* 8030B3C4 00307024 7C 05 22 14 */ add r0, r5, r4
+/* 8030B3C8 00307028 7C 03 02 14 */ add r0, r3, r0
+/* 8030B3CC 0030702C 54 04 06 3E */ clrlwi r4, r0, 0x18
+/* 8030B3D0 00307030 42 00 FF D8 */ bdnz lbl_8030B3A8
+/* 8030B3D4 00307034 88 1C 02 0C */ lbz r0, 0x20c(r28)
+/* 8030B3D8 00307038 7C 00 20 40 */ cmplw r0, r4
+/* 8030B3DC 0030703C 40 82 00 1C */ bne lbl_8030B3F8
+/* 8030B3E0 00307040 7F 83 E3 78 */ mr r3, r28
+/* 8030B3E4 00307044 7F A4 EB 78 */ mr r4, r29
+/* 8030B3E8 00307048 48 00 B5 5D */ bl func_80316944
+/* 8030B3EC 0030704C 7C 03 00 D0 */ neg r0, r3
+/* 8030B3F0 00307050 7C 00 1B 78 */ or r0, r0, r3
+/* 8030B3F4 00307054 54 1F 0F FE */ srwi r31, r0, 0x1f
+lbl_8030B3F8:
+/* 8030B3F8 00307058 2C 1F 00 01 */ cmpwi r31, 1
+/* 8030B3FC 0030705C 40 82 00 60 */ bne lbl_8030B45C
+/* 8030B400 00307060 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 8030B404 00307064 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 8030B408 00307068 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 8030B40C 0030706C 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030B410 00307070 28 00 00 02 */ cmplwi r0, 2
+/* 8030B414 00307074 40 82 00 2C */ bne lbl_8030B440
+/* 8030B418 00307078 57 C0 07 39 */ rlwinm. r0, r30, 0, 0x1c, 0x1c
+/* 8030B41C 0030707C 40 82 00 24 */ bne lbl_8030B440
+/* 8030B420 00307080 7F A4 EB 78 */ mr r4, r29
+/* 8030B424 00307084 38 7C 02 0E */ addi r3, r28, 0x20e
+/* 8030B428 00307088 38 A0 00 00 */ li r5, 0
+/* 8030B42C 0030708C 48 00 B5 45 */ bl func_80316970
+/* 8030B430 00307090 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B434 00307094 40 82 00 28 */ bne lbl_8030B45C
+/* 8030B438 00307098 3B E0 00 00 */ li r31, 0
+/* 8030B43C 0030709C 48 00 00 20 */ b lbl_8030B45C
+lbl_8030B440:
+/* 8030B440 003070A0 7F A4 EB 78 */ mr r4, r29
+/* 8030B444 003070A4 38 7C 02 0E */ addi r3, r28, 0x20e
+/* 8030B448 003070A8 38 A0 00 01 */ li r5, 1
+/* 8030B44C 003070AC 48 00 B5 25 */ bl func_80316970
+/* 8030B450 003070B0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B454 003070B4 40 82 00 08 */ bne lbl_8030B45C
+/* 8030B458 003070B8 3B E0 00 00 */ li r31, 0
+lbl_8030B45C:
+/* 8030B45C 003070BC 7F E3 FB 78 */ mr r3, r31
+/* 8030B460 003070C0 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 8030B464 003070C4 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 8030B468 003070C8 83 A1 00 24 */ lwz r29, 0x24(r1)
+/* 8030B46C 003070CC 83 81 00 20 */ lwz r28, 0x20(r1)
+/* 8030B470 003070D0 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030B474 003070D4 7C 08 03 A6 */ mtlr r0
+/* 8030B478 003070D8 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030B47C 003070DC 4E 80 00 20 */ blr
+
+.global VFiPFENT_getEntry
+VFiPFENT_getEntry:
+/* 8030B480 003070E0 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030B484 003070E4 7C 08 02 A6 */ mflr r0
+/* 8030B488 003070E8 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030B48C 003070EC 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030B490 003070F0 4B EB BC 95 */ bl _savegpr_26
+/* 8030B494 003070F4 8B 84 00 57 */ lbz r28, 0x57(r4)
+/* 8030B498 003070F8 7C 7E 1B 78 */ mr r30, r3
+/* 8030B49C 003070FC 7C 9F 23 78 */ mr r31, r4
+/* 8030B4A0 00307100 7C BA 2B 78 */ mr r26, r5
+/* 8030B4A4 00307104 57 9D 07 3E */ clrlwi r29, r28, 0x1c
+/* 8030B4A8 00307108 7D 1B 43 78 */ mr r27, r8
+/* 8030B4AC 0030710C 2C 1D 00 0F */ cmpwi r29, 0xf
+/* 8030B4B0 00307110 40 82 00 0C */ bne lbl_8030B4BC
+/* 8030B4B4 00307114 38 60 00 01 */ li r3, 1
+/* 8030B4B8 00307118 48 00 00 80 */ b lbl_8030B538
+lbl_8030B4BC:
+/* 8030B4BC 0030711C 7F 83 E3 78 */ mr r3, r28
+/* 8030B4C0 00307120 7C C4 33 78 */ mr r4, r6
+/* 8030B4C4 00307124 7C E5 3B 78 */ mr r5, r7
+/* 8030B4C8 00307128 4B FF FE 01 */ bl VFiPFENT_compareAttr
+/* 8030B4CC 0030712C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B4D0 00307130 40 82 00 0C */ bne lbl_8030B4DC
+/* 8030B4D4 00307134 38 60 00 01 */ li r3, 1
+/* 8030B4D8 00307138 48 00 00 60 */ b lbl_8030B538
+lbl_8030B4DC:
+/* 8030B4DC 0030713C 57 80 07 39 */ rlwinm. r0, r28, 0, 0x1c, 0x1c
+/* 8030B4E0 00307140 41 82 00 10 */ beq lbl_8030B4F0
+/* 8030B4E4 00307144 38 00 00 00 */ li r0, 0
+/* 8030B4E8 00307148 98 1E 02 0A */ stb r0, 0x20a(r30)
+/* 8030B4EC 0030714C B0 1E 00 00 */ sth r0, 0(r30)
+lbl_8030B4F0:
+/* 8030B4F0 00307150 88 BF 00 57 */ lbz r5, 0x57(r31)
+/* 8030B4F4 00307154 38 7E 02 0E */ addi r3, r30, 0x20e
+/* 8030B4F8 00307158 38 9F 00 4C */ addi r4, r31, 0x4c
+/* 8030B4FC 0030715C 48 00 BE D5 */ bl func_803173D0
+/* 8030B500 00307160 88 1E 02 0E */ lbz r0, 0x20e(r30)
+/* 8030B504 00307164 2C 00 00 05 */ cmpwi r0, 5
+/* 8030B508 00307168 40 82 00 0C */ bne lbl_8030B514
+/* 8030B50C 0030716C 38 00 FF E5 */ li r0, -27
+/* 8030B510 00307170 98 1E 02 0E */ stb r0, 0x20e(r30)
+lbl_8030B514:
+/* 8030B514 00307174 7F C3 F3 78 */ mr r3, r30
+/* 8030B518 00307178 7F 44 D3 78 */ mr r4, r26
+/* 8030B51C 0030717C 7F 85 E3 78 */ mr r5, r28
+/* 8030B520 00307180 4B FF FE 21 */ bl VFiPFENT_compareEntryName
+/* 8030B524 00307184 2C 03 00 01 */ cmpwi r3, 1
+/* 8030B528 00307188 40 82 00 10 */ bne lbl_8030B538
+/* 8030B52C 0030718C 80 9B 00 00 */ lwz r4, 0(r27)
+/* 8030B530 00307190 38 04 00 01 */ addi r0, r4, 1
+/* 8030B534 00307194 90 1B 00 00 */ stw r0, 0(r27)
+lbl_8030B538:
+/* 8030B538 00307198 2C 03 00 01 */ cmpwi r3, 1
+/* 8030B53C 0030719C 40 82 00 44 */ bne lbl_8030B580
+/* 8030B540 003071A0 2C 1D 00 0F */ cmpwi r29, 0xf
+/* 8030B544 003071A4 40 82 00 28 */ bne lbl_8030B56C
+/* 8030B548 003071A8 7F C3 F3 78 */ mr r3, r30
+/* 8030B54C 003071AC 38 9F 00 4C */ addi r4, r31, 0x4c
+/* 8030B550 003071B0 48 00 07 BD */ bl VFiPFENT_LoadLFNEntryFieldsFromBuf
+/* 8030B554 003071B4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B558 003071B8 41 82 00 20 */ beq lbl_8030B578
+/* 8030B55C 003071BC 38 00 00 00 */ li r0, 0
+/* 8030B560 003071C0 98 1E 02 0A */ stb r0, 0x20a(r30)
+/* 8030B564 003071C4 B0 1E 00 00 */ sth r0, 0(r30)
+/* 8030B568 003071C8 48 00 00 10 */ b lbl_8030B578
+lbl_8030B56C:
+/* 8030B56C 003071CC 38 00 00 00 */ li r0, 0
+/* 8030B570 003071D0 98 1E 02 0A */ stb r0, 0x20a(r30)
+/* 8030B574 003071D4 B0 1E 00 00 */ sth r0, 0(r30)
+lbl_8030B578:
+/* 8030B578 003071D8 38 60 FF FF */ li r3, -1
+/* 8030B57C 003071DC 48 00 01 8C */ b lbl_8030B708
+lbl_8030B580:
+/* 8030B580 003071E0 88 1E 02 0A */ lbz r0, 0x20a(r30)
+/* 8030B584 003071E4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030B588 003071E8 40 82 00 C4 */ bne lbl_8030B64C
+/* 8030B58C 003071EC 88 BF 00 58 */ lbz r5, 0x58(r31)
+/* 8030B590 003071F0 54 A0 06 F9 */ rlwinm. r0, r5, 0, 0x1b, 0x1c
+/* 8030B594 003071F4 41 82 00 B8 */ beq lbl_8030B64C
+/* 8030B598 003071F8 38 7E 02 0E */ addi r3, r30, 0x20e
+/* 8030B59C 003071FC 38 81 00 18 */ addi r4, r1, 0x18
+/* 8030B5A0 00307200 48 00 C0 8D */ bl func_8031762C
+/* 8030B5A4 00307204 7F C3 F3 78 */ mr r3, r30
+/* 8030B5A8 00307208 38 81 00 18 */ addi r4, r1, 0x18
+/* 8030B5AC 0030720C 48 00 C4 61 */ bl func_80317A0C
+/* 8030B5B0 00307210 3C A0 4E C5 */ lis r5, 0x4EC4EC4F@ha
+/* 8030B5B4 00307214 38 9E 02 0E */ addi r4, r30, 0x20e
+/* 8030B5B8 00307218 38 05 EC 4F */ addi r0, r5, 0x4EC4EC4F@l
+/* 8030B5BC 0030721C 7C 00 18 96 */ mulhw r0, r0, r3
+/* 8030B5C0 00307220 38 A0 00 00 */ li r5, 0
+/* 8030B5C4 00307224 7C 07 16 70 */ srawi r7, r0, 2
+/* 8030B5C8 00307228 7C 00 16 70 */ srawi r0, r0, 2
+/* 8030B5CC 0030722C 54 06 0F FE */ srwi r6, r0, 0x1f
+/* 8030B5D0 00307230 54 E8 0F FE */ srwi r8, r7, 0x1f
+/* 8030B5D4 00307234 7C 00 32 14 */ add r0, r0, r6
+/* 8030B5D8 00307238 1C 00 00 0D */ mulli r0, r0, 0xd
+/* 8030B5DC 0030723C 7C E7 42 14 */ add r7, r7, r8
+/* 8030B5E0 00307240 7C C0 18 50 */ subf r6, r0, r3
+/* 8030B5E4 00307244 38 61 00 08 */ addi r3, r1, 8
+/* 8030B5E8 00307248 7C 06 00 D0 */ neg r0, r6
+/* 8030B5EC 0030724C 7C 00 33 78 */ or r0, r0, r6
+/* 8030B5F0 00307250 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 8030B5F4 00307254 7C 07 02 14 */ add r0, r7, r0
+/* 8030B5F8 00307258 98 1E 02 0A */ stb r0, 0x20a(r30)
+/* 8030B5FC 0030725C 48 00 BC 4D */ bl func_80317248
+/* 8030B600 00307260 38 00 00 0B */ li r0, 0xb
+/* 8030B604 00307264 38 C1 00 08 */ addi r6, r1, 8
+/* 8030B608 00307268 38 80 00 00 */ li r4, 0
+/* 8030B60C 0030726C 38 E0 00 00 */ li r7, 0
+/* 8030B610 00307270 7C 09 03 A6 */ mtctr r0
+lbl_8030B614:
+/* 8030B614 00307274 54 E3 04 3E */ clrlwi r3, r7, 0x10
+/* 8030B618 00307278 54 80 07 FE */ clrlwi r0, r4, 0x1f
+/* 8030B61C 0030727C 7C A6 18 AE */ lbzx r5, r6, r3
+/* 8030B620 00307280 7C 00 00 D0 */ neg r0, r0
+/* 8030B624 00307284 54 84 FE 7E */ rlwinm r4, r4, 0x1f, 0x19, 0x1f
+/* 8030B628 00307288 38 E7 00 01 */ addi r7, r7, 1
+/* 8030B62C 0030728C 54 03 06 30 */ rlwinm r3, r0, 0, 0x18, 0x18
+/* 8030B630 00307290 7C 05 22 14 */ add r0, r5, r4
+/* 8030B634 00307294 7C 03 02 14 */ add r0, r3, r0
+/* 8030B638 00307298 54 04 06 3E */ clrlwi r4, r0, 0x18
+/* 8030B63C 0030729C 42 00 FF D8 */ bdnz lbl_8030B614
+/* 8030B640 003072A0 38 00 00 01 */ li r0, 1
+/* 8030B644 003072A4 98 9E 02 0C */ stb r4, 0x20c(r30)
+/* 8030B648 003072A8 98 1E 02 0B */ stb r0, 0x20b(r30)
+lbl_8030B64C:
+/* 8030B64C 003072AC 88 1F 00 57 */ lbz r0, 0x57(r31)
+/* 8030B650 003072B0 38 DE 02 1E */ addi r6, r30, 0x21e
+/* 8030B654 003072B4 38 BE 02 20 */ addi r5, r30, 0x220
+/* 8030B658 003072B8 38 9E 02 22 */ addi r4, r30, 0x222
+/* 8030B65C 003072BC 98 1E 02 1C */ stb r0, 0x21c(r30)
+/* 8030B660 003072C0 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030B664 003072C4 38 7E 02 24 */ addi r3, r30, 0x224
+/* 8030B668 003072C8 88 FF 00 58 */ lbz r7, 0x58(r31)
+/* 8030B66C 003072CC 38 1E 02 26 */ addi r0, r30, 0x226
+/* 8030B670 003072D0 98 FE 02 1B */ stb r7, 0x21b(r30)
+/* 8030B674 003072D4 88 FF 00 59 */ lbz r7, 0x59(r31)
+/* 8030B678 003072D8 98 FE 02 1D */ stb r7, 0x21d(r30)
+/* 8030B67C 003072DC A0 FF 00 5A */ lhz r7, 0x5a(r31)
+/* 8030B680 003072E0 7C E0 37 2C */ sthbrx r7, 0, r6
+/* 8030B684 003072E4 A0 DF 00 5C */ lhz r6, 0x5c(r31)
+/* 8030B688 003072E8 7C C0 2F 2C */ sthbrx r6, 0, r5
+/* 8030B68C 003072EC A0 BF 00 5E */ lhz r5, 0x5e(r31)
+/* 8030B690 003072F0 7C A0 27 2C */ sthbrx r5, 0, r4
+/* 8030B694 003072F4 A0 9F 00 62 */ lhz r4, 0x62(r31)
+/* 8030B698 003072F8 7C 80 1F 2C */ sthbrx r4, 0, r3
+/* 8030B69C 003072FC A0 7F 00 64 */ lhz r3, 0x64(r31)
+/* 8030B6A0 00307300 7C 60 07 2C */ sthbrx r3, 0, r0
+/* 8030B6A4 00307304 80 9F 00 68 */ lwz r4, 0x68(r31)
+/* 8030B6A8 00307308 54 83 42 1E */ rlwinm r3, r4, 8, 8, 0xf
+/* 8030B6AC 0030730C 54 80 C4 2E */ rlwinm r0, r4, 0x18, 0x10, 0x17
+/* 8030B6B0 00307310 50 83 C0 0E */ rlwimi r3, r4, 0x18, 0, 7
+/* 8030B6B4 00307314 50 80 46 3E */ rlwimi r0, r4, 8, 0x18, 0x1f
+/* 8030B6B8 00307318 7C 60 03 78 */ or r0, r3, r0
+/* 8030B6BC 0030731C 90 1E 02 28 */ stw r0, 0x228(r30)
+/* 8030B6C0 00307320 A0 BF 00 60 */ lhz r5, 0x60(r31)
+/* 8030B6C4 00307324 A0 9F 00 66 */ lhz r4, 0x66(r31)
+/* 8030B6C8 00307328 54 A0 44 2E */ rlwinm r0, r5, 8, 0x10, 0x17
+/* 8030B6CC 0030732C 54 83 44 2E */ rlwinm r3, r4, 8, 0x10, 0x17
+/* 8030B6D0 00307330 50 A0 C6 3E */ rlwimi r0, r5, 0x18, 0x18, 0x1f
+/* 8030B6D4 00307334 50 83 C6 3E */ rlwimi r3, r4, 0x18, 0x18, 0x1f
+/* 8030B6D8 00307338 50 03 80 1E */ rlwimi r3, r0, 0x10, 0, 0xf
+/* 8030B6DC 0030733C 90 7E 02 34 */ stw r3, 0x234(r30)
+/* 8030B6E0 00307340 80 1F 00 44 */ lwz r0, 0x44(r31)
+/* 8030B6E4 00307344 90 1E 02 38 */ stw r0, 0x238(r30)
+/* 8030B6E8 00307348 A0 1F 00 48 */ lhz r0, 0x48(r31)
+/* 8030B6EC 0030734C B0 1E 02 3C */ sth r0, 0x23c(r30)
+/* 8030B6F0 00307350 41 82 00 14 */ beq lbl_8030B704
+/* 8030B6F4 00307354 2C 03 00 00 */ cmpwi r3, 0
+/* 8030B6F8 00307358 40 82 00 0C */ bne lbl_8030B704
+/* 8030B6FC 0030735C 38 00 00 01 */ li r0, 1
+/* 8030B700 00307360 90 1E 02 34 */ stw r0, 0x234(r30)
+lbl_8030B704:
+/* 8030B704 00307364 38 60 00 00 */ li r3, 0
+lbl_8030B708:
+/* 8030B708 00307368 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030B70C 0030736C 4B EB BA 65 */ bl _restgpr_26
+/* 8030B710 00307370 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030B714 00307374 7C 08 03 A6 */ mtlr r0
+/* 8030B718 00307378 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030B71C 0030737C 4E 80 00 20 */ blr
+
+.global VFiPFENT_searchEmptyTailSFN
+VFiPFENT_searchEmptyTailSFN:
+/* 8030B720 00307380 94 21 FF 40 */ stwu r1, -0xc0(r1)
+/* 8030B724 00307384 7C 08 02 A6 */ mflr r0
+/* 8030B728 00307388 90 01 00 C4 */ stw r0, 0xc4(r1)
+/* 8030B72C 0030738C 39 61 00 C0 */ addi r11, r1, 0xc0
+/* 8030B730 00307390 4B EB B9 F1 */ bl _savegpr_25
+/* 8030B734 00307394 83 A3 00 34 */ lwz r29, 0x34(r3)
+/* 8030B738 00307398 7C 9A 23 78 */ mr r26, r4
+/* 8030B73C 0030739C 7C DC 33 78 */ mr r28, r6
+/* 8030B740 003073A0 7C 7E 1B 78 */ mr r30, r3
+/* 8030B744 003073A4 80 1D 18 60 */ lwz r0, 0x1860(r29)
+/* 8030B748 003073A8 7C BB 2B 78 */ mr r27, r5
+/* 8030B74C 003073AC 7F 83 E3 78 */ mr r3, r28
+/* 8030B750 003073B0 38 80 00 00 */ li r4, 0
+/* 8030B754 003073B4 54 05 10 3A */ slwi r5, r0, 2
+/* 8030B758 003073B8 4B FF 98 7D */ bl VFipf_memset
+/* 8030B75C 003073BC 80 BE 00 00 */ lwz r5, 0(r30)
+/* 8030B760 003073C0 38 61 00 28 */ addi r3, r1, 0x28
+/* 8030B764 003073C4 80 1E 00 04 */ lwz r0, 4(r30)
+/* 8030B768 003073C8 38 80 00 00 */ li r4, 0
+/* 8030B76C 003073CC 90 A1 00 30 */ stw r5, 0x30(r1)
+/* 8030B770 003073D0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030B774 003073D4 80 BE 00 08 */ lwz r5, 8(r30)
+/* 8030B778 003073D8 80 1E 00 0C */ lwz r0, 0xc(r30)
+/* 8030B77C 003073DC 90 A1 00 38 */ stw r5, 0x38(r1)
+/* 8030B780 003073E0 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 8030B784 003073E4 80 BE 00 10 */ lwz r5, 0x10(r30)
+/* 8030B788 003073E8 80 1E 00 14 */ lwz r0, 0x14(r30)
+/* 8030B78C 003073EC 90 A1 00 40 */ stw r5, 0x40(r1)
+/* 8030B790 003073F0 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030B794 003073F4 80 BE 00 18 */ lwz r5, 0x18(r30)
+/* 8030B798 003073F8 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 8030B79C 003073FC 90 A1 00 48 */ stw r5, 0x48(r1)
+/* 8030B7A0 00307400 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 8030B7A4 00307404 80 BE 00 20 */ lwz r5, 0x20(r30)
+/* 8030B7A8 00307408 80 1E 00 24 */ lwz r0, 0x24(r30)
+/* 8030B7AC 0030740C 90 A1 00 50 */ stw r5, 0x50(r1)
+/* 8030B7B0 00307410 90 01 00 54 */ stw r0, 0x54(r1)
+/* 8030B7B4 00307414 80 BE 00 28 */ lwz r5, 0x28(r30)
+/* 8030B7B8 00307418 80 1E 00 2C */ lwz r0, 0x2c(r30)
+/* 8030B7BC 0030741C 90 A1 00 58 */ stw r5, 0x58(r1)
+/* 8030B7C0 00307420 90 01 00 5C */ stw r0, 0x5c(r1)
+/* 8030B7C4 00307424 80 BE 00 30 */ lwz r5, 0x30(r30)
+/* 8030B7C8 00307428 80 1E 00 34 */ lwz r0, 0x34(r30)
+/* 8030B7CC 0030742C 90 A1 00 60 */ stw r5, 0x60(r1)
+/* 8030B7D0 00307430 90 01 00 64 */ stw r0, 0x64(r1)
+/* 8030B7D4 00307434 48 00 27 25 */ bl VFiPFENT_ITER_IteratorInitialize
+/* 8030B7D8 00307438 7C 7E 1B 78 */ mr r30, r3
+/* 8030B7DC 0030743C 3B E1 00 18 */ addi r31, r1, 0x18
+/* 8030B7E0 00307440 3B 20 00 01 */ li r25, 1
+/* 8030B7E4 00307444 48 00 02 80 */ b lbl_8030BA64
+lbl_8030B7E8:
+/* 8030B7E8 00307448 2C 1E 00 00 */ cmpwi r30, 0
+/* 8030B7EC 0030744C 41 82 00 0C */ beq lbl_8030B7F8
+/* 8030B7F0 00307450 7F C3 F3 78 */ mr r3, r30
+/* 8030B7F4 00307454 48 00 02 84 */ b lbl_8030BA78
+lbl_8030B7F8:
+/* 8030B7F8 00307458 88 01 00 74 */ lbz r0, 0x74(r1)
+/* 8030B7FC 0030745C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030B800 00307460 41 82 02 74 */ beq lbl_8030BA74
+/* 8030B804 00307464 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030B808 00307468 41 82 02 4C */ beq lbl_8030BA54
+/* 8030B80C 0030746C 88 61 00 7F */ lbz r3, 0x7f(r1)
+/* 8030B810 00307470 54 60 07 3E */ clrlwi r0, r3, 0x1c
+/* 8030B814 00307474 2C 00 00 0F */ cmpwi r0, 0xf
+/* 8030B818 00307478 41 82 02 3C */ beq lbl_8030BA54
+/* 8030B81C 0030747C 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
+/* 8030B820 00307480 40 82 02 34 */ bne lbl_8030BA54
+/* 8030B824 00307484 38 61 00 18 */ addi r3, r1, 0x18
+/* 8030B828 00307488 38 81 00 74 */ addi r4, r1, 0x74
+/* 8030B82C 0030748C 38 A0 00 00 */ li r5, 0
+/* 8030B830 00307490 48 00 BB A1 */ bl func_803173D0
+/* 8030B834 00307494 38 61 00 19 */ addi r3, r1, 0x19
+/* 8030B838 00307498 38 80 00 01 */ li r4, 1
+/* 8030B83C 0030749C 48 00 00 0C */ b lbl_8030B848
+lbl_8030B840:
+/* 8030B840 003074A0 38 63 00 01 */ addi r3, r3, 1
+/* 8030B844 003074A4 38 84 00 01 */ addi r4, r4, 1
+lbl_8030B848:
+/* 8030B848 003074A8 88 03 00 00 */ lbz r0, 0(r3)
+/* 8030B84C 003074AC 7C 00 07 74 */ extsb r0, r0
+/* 8030B850 003074B0 2C 00 00 7E */ cmpwi r0, 0x7e
+/* 8030B854 003074B4 41 82 00 14 */ beq lbl_8030B868
+/* 8030B858 003074B8 2C 00 00 00 */ cmpwi r0, 0
+/* 8030B85C 003074BC 41 82 00 0C */ beq lbl_8030B868
+/* 8030B860 003074C0 28 04 00 07 */ cmplwi r4, 7
+/* 8030B864 003074C4 41 80 FF DC */ blt lbl_8030B840
+lbl_8030B868:
+/* 8030B868 003074C8 28 04 00 07 */ cmplwi r4, 7
+/* 8030B86C 003074CC 40 80 01 E8 */ bge lbl_8030BA54
+/* 8030B870 003074D0 7C 1F 20 AE */ lbzx r0, r31, r4
+/* 8030B874 003074D4 7C 00 07 74 */ extsb r0, r0
+/* 8030B878 003074D8 2C 00 00 7E */ cmpwi r0, 0x7e
+/* 8030B87C 003074DC 40 82 01 D8 */ bne lbl_8030BA54
+/* 8030B880 003074E0 38 E4 00 01 */ addi r7, r4, 1
+/* 8030B884 003074E4 7C 7F 3A 14 */ add r3, r31, r7
+/* 8030B888 003074E8 48 00 00 0C */ b lbl_8030B894
+lbl_8030B88C:
+/* 8030B88C 003074EC 38 63 00 01 */ addi r3, r3, 1
+/* 8030B890 003074F0 38 E7 00 01 */ addi r7, r7, 1
+lbl_8030B894:
+/* 8030B894 003074F4 88 03 00 00 */ lbz r0, 0(r3)
+/* 8030B898 003074F8 7C 00 07 74 */ extsb r0, r0
+/* 8030B89C 003074FC 2C 00 00 30 */ cmpwi r0, 0x30
+/* 8030B8A0 00307500 41 80 00 0C */ blt lbl_8030B8AC
+/* 8030B8A4 00307504 2C 00 00 39 */ cmpwi r0, 0x39
+/* 8030B8A8 00307508 40 81 FF E4 */ ble lbl_8030B88C
+lbl_8030B8AC:
+/* 8030B8AC 0030750C 7C 1F 38 AE */ lbzx r0, r31, r7
+/* 8030B8B0 00307510 7C 00 07 74 */ extsb r0, r0
+/* 8030B8B4 00307514 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 8030B8B8 00307518 41 82 00 0C */ beq lbl_8030B8C4
+/* 8030B8BC 0030751C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030B8C0 00307520 40 82 01 94 */ bne lbl_8030BA54
+lbl_8030B8C4:
+/* 8030B8C4 00307524 7C 04 38 50 */ subf r0, r4, r7
+/* 8030B8C8 00307528 3B C0 00 00 */ li r30, 0
+/* 8030B8CC 0030752C 35 00 FF FF */ addic. r8, r0, -1
+/* 8030B8D0 00307530 7D 03 43 78 */ mr r3, r8
+/* 8030B8D4 00307534 41 82 01 20 */ beq lbl_8030B9F4
+/* 8030B8D8 00307538 55 00 E8 FF */ rlwinm. r0, r8, 0x1d, 3, 0x1f
+/* 8030B8DC 0030753C 7C 09 03 A6 */ mtctr r0
+/* 8030B8E0 00307540 41 82 00 F0 */ beq lbl_8030B9D0
+lbl_8030B8E4:
+/* 8030B8E4 00307544 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B8E8 00307548 39 08 FF FF */ addi r8, r8, -1
+/* 8030B8EC 0030754C 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B8F0 00307550 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B8F4 00307554 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B8F8 00307558 7C A0 07 74 */ extsb r0, r5
+/* 8030B8FC 0030755C 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B900 00307560 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B904 00307564 39 08 FF FF */ addi r8, r8, -1
+/* 8030B908 00307568 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B90C 0030756C 7C A0 07 74 */ extsb r0, r5
+/* 8030B910 00307570 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B914 00307574 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B918 00307578 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B91C 0030757C 39 08 FF FF */ addi r8, r8, -1
+/* 8030B920 00307580 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B924 00307584 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B928 00307588 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B92C 0030758C 7C A0 07 74 */ extsb r0, r5
+/* 8030B930 00307590 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B934 00307594 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B938 00307598 39 08 FF FF */ addi r8, r8, -1
+/* 8030B93C 0030759C 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B940 003075A0 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B944 003075A4 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B948 003075A8 7C A0 07 74 */ extsb r0, r5
+/* 8030B94C 003075AC 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B950 003075B0 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B954 003075B4 39 08 FF FF */ addi r8, r8, -1
+/* 8030B958 003075B8 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B95C 003075BC 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B960 003075C0 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B964 003075C4 7C A0 07 74 */ extsb r0, r5
+/* 8030B968 003075C8 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B96C 003075CC 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B970 003075D0 39 08 FF FF */ addi r8, r8, -1
+/* 8030B974 003075D4 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B978 003075D8 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B97C 003075DC 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B980 003075E0 7C A0 07 74 */ extsb r0, r5
+/* 8030B984 003075E4 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B988 003075E8 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B98C 003075EC 39 08 FF FF */ addi r8, r8, -1
+/* 8030B990 003075F0 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B994 003075F4 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B998 003075F8 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B99C 003075FC 7C A0 07 74 */ extsb r0, r5
+/* 8030B9A0 00307600 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B9A4 00307604 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B9A8 00307608 39 08 FF FF */ addi r8, r8, -1
+/* 8030B9AC 0030760C 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B9B0 00307610 7C A0 07 74 */ extsb r0, r5
+/* 8030B9B4 00307614 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B9B8 00307618 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B9BC 0030761C 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B9C0 00307620 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B9C4 00307624 42 00 FF 20 */ bdnz lbl_8030B8E4
+/* 8030B9C8 00307628 70 63 00 07 */ andi. r3, r3, 7
+/* 8030B9CC 0030762C 41 82 00 28 */ beq lbl_8030B9F4
+lbl_8030B9D0:
+/* 8030B9D0 00307630 7C 69 03 A6 */ mtctr r3
+lbl_8030B9D4:
+/* 8030B9D4 00307634 7C C8 38 50 */ subf r6, r8, r7
+/* 8030B9D8 00307638 39 08 FF FF */ addi r8, r8, -1
+/* 8030B9DC 0030763C 7C BF 30 AE */ lbzx r5, r31, r6
+/* 8030B9E0 00307640 1F DE 00 0A */ mulli r30, r30, 0xa
+/* 8030B9E4 00307644 7C A0 07 74 */ extsb r0, r5
+/* 8030B9E8 00307648 7C 80 F2 14 */ add r4, r0, r30
+/* 8030B9EC 0030764C 3B C4 FF D0 */ addi r30, r4, -48
+/* 8030B9F0 00307650 42 00 FF E4 */ bdnz lbl_8030B9D4
+lbl_8030B9F4:
+/* 8030B9F4 00307654 7F 64 DB 78 */ mr r4, r27
+/* 8030B9F8 00307658 38 61 00 08 */ addi r3, r1, 8
+/* 8030B9FC 0030765C 4B FF 96 F1 */ bl VFipf_strcpy
+/* 8030BA00 00307660 7F C4 F3 78 */ mr r4, r30
+/* 8030BA04 00307664 38 61 00 08 */ addi r3, r1, 8
+/* 8030BA08 00307668 48 00 C7 E5 */ bl func_803181EC
+/* 8030BA0C 0030766C 38 61 00 18 */ addi r3, r1, 0x18
+/* 8030BA10 00307670 38 81 00 08 */ addi r4, r1, 8
+/* 8030BA14 00307674 48 00 B0 B9 */ bl func_80316ACC
+/* 8030BA18 00307678 2C 03 00 00 */ cmpwi r3, 0
+/* 8030BA1C 0030767C 40 82 00 38 */ bne lbl_8030BA54
+/* 8030BA20 00307680 7C 1E D0 40 */ cmplw r30, r26
+/* 8030BA24 00307684 41 80 00 30 */ blt lbl_8030BA54
+/* 8030BA28 00307688 80 1D 18 60 */ lwz r0, 0x1860(r29)
+/* 8030BA2C 0030768C 54 00 28 34 */ slwi r0, r0, 5
+/* 8030BA30 00307690 7C 1A 02 14 */ add r0, r26, r0
+/* 8030BA34 00307694 7C 1E 00 40 */ cmplw r30, r0
+/* 8030BA38 00307698 40 80 00 1C */ bge lbl_8030BA54
+/* 8030BA3C 0030769C 7F DA F0 50 */ subf r30, r26, r30
+/* 8030BA40 003076A0 57 C4 E8 FA */ rlwinm r4, r30, 0x1d, 3, 0x1d
+/* 8030BA44 003076A4 7C 7C 20 2E */ lwzx r3, r28, r4
+/* 8030BA48 003076A8 7F 20 F0 30 */ slw r0, r25, r30
+/* 8030BA4C 003076AC 7C 60 03 78 */ or r0, r3, r0
+/* 8030BA50 003076B0 7C 1C 21 2E */ stwx r0, r28, r4
+lbl_8030BA54:
+/* 8030BA54 003076B4 38 61 00 28 */ addi r3, r1, 0x28
+/* 8030BA58 003076B8 38 80 00 00 */ li r4, 0
+/* 8030BA5C 003076BC 48 00 26 AD */ bl VFiPFENT_ITER_Advance
+/* 8030BA60 003076C0 7C 7E 1B 78 */ mr r30, r3
+lbl_8030BA64:
+/* 8030BA64 003076C4 38 61 00 28 */ addi r3, r1, 0x28
+/* 8030BA68 003076C8 48 00 25 95 */ bl VFiPFENT_ITER_IsAtLogicalEnd
+/* 8030BA6C 003076CC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030BA70 003076D0 41 82 FD 78 */ beq lbl_8030B7E8
+lbl_8030BA74:
+/* 8030BA74 003076D4 38 60 00 00 */ li r3, 0
+lbl_8030BA78:
+/* 8030BA78 003076D8 39 61 00 C0 */ addi r11, r1, 0xc0
+/* 8030BA7C 003076DC 4B EB B6 F1 */ bl _restgpr_25
+/* 8030BA80 003076E0 80 01 00 C4 */ lwz r0, 0xc4(r1)
+/* 8030BA84 003076E4 7C 08 03 A6 */ mtlr r0
+/* 8030BA88 003076E8 38 21 00 C0 */ addi r1, r1, 0xc0
+/* 8030BA8C 003076EC 4E 80 00 20 */ blr
+
+.global VFiPFENT_findEmptyTailSFN
+VFiPFENT_findEmptyTailSFN:
+/* 8030BA90 003076F0 94 21 FF 90 */ stwu r1, -0x70(r1)
+/* 8030BA94 003076F4 7C 08 02 A6 */ mflr r0
+/* 8030BA98 003076F8 90 01 00 74 */ stw r0, 0x74(r1)
+/* 8030BA9C 003076FC 39 61 00 70 */ addi r11, r1, 0x70
+/* 8030BAA0 00307700 4B EB B6 85 */ bl _savegpr_26
+/* 8030BAA4 00307704 83 E3 02 2C */ lwz r31, 0x22c(r3)
+/* 8030BAA8 00307708 38 00 00 01 */ li r0, 1
+/* 8030BAAC 0030770C 7C 66 1B 78 */ mr r6, r3
+/* 8030BAB0 00307710 7C 9D 23 78 */ mr r29, r4
+/* 8030BAB4 00307714 90 05 00 00 */ stw r0, 0(r5)
+/* 8030BAB8 00307718 7C BE 2B 78 */ mr r30, r5
+/* 8030BABC 0030771C 38 61 00 18 */ addi r3, r1, 0x18
+/* 8030BAC0 00307720 38 81 00 08 */ addi r4, r1, 8
+/* 8030BAC4 00307724 80 A6 02 2C */ lwz r5, 0x22c(r6)
+/* 8030BAC8 00307728 38 C6 02 34 */ addi r6, r6, 0x234
+/* 8030BACC 0030772C 48 00 55 FD */ bl VFiPFFAT_InitFFD
+/* 8030BAD0 00307730 3F 60 00 0F */ lis r27, 0x000F423F@ha
+/* 8030BAD4 00307734 3B 40 00 01 */ li r26, 1
+/* 8030BAD8 00307738 3B 9B 42 3F */ addi r28, r27, 0x000F423F@l
+/* 8030BADC 0030773C 48 00 00 A8 */ b lbl_8030BB84
+lbl_8030BAE0:
+/* 8030BAE0 00307740 80 DF 18 68 */ lwz r6, 0x1868(r31)
+/* 8030BAE4 00307744 7F 44 D3 78 */ mr r4, r26
+/* 8030BAE8 00307748 7F A5 EB 78 */ mr r5, r29
+/* 8030BAEC 0030774C 38 61 00 18 */ addi r3, r1, 0x18
+/* 8030BAF0 00307750 4B FF FC 31 */ bl VFiPFENT_searchEmptyTailSFN
+/* 8030BAF4 00307754 2C 03 00 00 */ cmpwi r3, 0
+/* 8030BAF8 00307758 41 82 00 08 */ beq lbl_8030BB00
+/* 8030BAFC 0030775C 48 00 00 94 */ b lbl_8030BB90
+lbl_8030BB00:
+/* 8030BB00 00307760 38 A0 00 00 */ li r5, 0
+/* 8030BB04 00307764 38 80 00 00 */ li r4, 0
+/* 8030BB08 00307768 48 00 00 64 */ b lbl_8030BB6C
+lbl_8030BB0C:
+/* 8030BB0C 0030776C 80 7F 18 68 */ lwz r3, 0x1868(r31)
+/* 8030BB10 00307770 7C 63 20 2E */ lwzx r3, r3, r4
+/* 8030BB14 00307774 3C 03 00 01 */ addis r0, r3, 1
+/* 8030BB18 00307778 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030BB1C 0030777C 41 82 00 3C */ beq lbl_8030BB58
+/* 8030BB20 00307780 54 A4 10 3A */ slwi r4, r5, 2
+/* 8030BB24 00307784 48 00 00 1C */ b lbl_8030BB40
+lbl_8030BB28:
+/* 8030BB28 00307788 7C 04 18 2E */ lwzx r0, r4, r3
+/* 8030BB2C 0030778C 54 00 F8 7E */ srwi r0, r0, 1
+/* 8030BB30 00307790 7C 04 19 2E */ stwx r0, r4, r3
+/* 8030BB34 00307794 80 7E 00 00 */ lwz r3, 0(r30)
+/* 8030BB38 00307798 38 03 00 01 */ addi r0, r3, 1
+/* 8030BB3C 0030779C 90 1E 00 00 */ stw r0, 0(r30)
+lbl_8030BB40:
+/* 8030BB40 003077A0 80 7F 18 68 */ lwz r3, 0x1868(r31)
+/* 8030BB44 003077A4 7C 04 18 2E */ lwzx r0, r4, r3
+/* 8030BB48 003077A8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8030BB4C 003077AC 40 82 FF DC */ bne lbl_8030BB28
+/* 8030BB50 003077B0 3B 5B 42 40 */ addi r26, r27, 0x4240
+/* 8030BB54 003077B4 48 00 00 24 */ b lbl_8030BB78
+lbl_8030BB58:
+/* 8030BB58 003077B8 80 7E 00 00 */ lwz r3, 0(r30)
+/* 8030BB5C 003077BC 38 84 00 04 */ addi r4, r4, 4
+/* 8030BB60 003077C0 38 A5 00 01 */ addi r5, r5, 1
+/* 8030BB64 003077C4 38 03 00 20 */ addi r0, r3, 0x20
+/* 8030BB68 003077C8 90 1E 00 00 */ stw r0, 0(r30)
+lbl_8030BB6C:
+/* 8030BB6C 003077CC 80 1F 18 60 */ lwz r0, 0x1860(r31)
+/* 8030BB70 003077D0 7C 05 00 40 */ cmplw r5, r0
+/* 8030BB74 003077D4 41 80 FF 98 */ blt lbl_8030BB0C
+lbl_8030BB78:
+/* 8030BB78 003077D8 80 1F 18 60 */ lwz r0, 0x1860(r31)
+/* 8030BB7C 003077DC 54 00 28 34 */ slwi r0, r0, 5
+/* 8030BB80 003077E0 7F 5A 02 14 */ add r26, r26, r0
+lbl_8030BB84:
+/* 8030BB84 003077E4 7C 1A E0 40 */ cmplw r26, r28
+/* 8030BB88 003077E8 40 81 FF 58 */ ble lbl_8030BAE0
+/* 8030BB8C 003077EC 38 60 00 00 */ li r3, 0
+lbl_8030BB90:
+/* 8030BB90 003077F0 39 61 00 70 */ addi r11, r1, 0x70
+/* 8030BB94 003077F4 4B EB B5 DD */ bl _restgpr_26
+/* 8030BB98 003077F8 80 01 00 74 */ lwz r0, 0x74(r1)
+/* 8030BB9C 003077FC 7C 08 03 A6 */ mtlr r0
+/* 8030BBA0 00307800 38 21 00 70 */ addi r1, r1, 0x70
+/* 8030BBA4 00307804 4E 80 00 20 */ blr
+
+.global VFiPFENT_CalcCheckSum
+VFiPFENT_CalcCheckSum:
+/* 8030BBA8 00307808 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030BBAC 0030780C 7C 08 02 A6 */ mflr r0
+/* 8030BBB0 00307810 7C 64 1B 78 */ mr r4, r3
+/* 8030BBB4 00307814 38 A0 00 00 */ li r5, 0
+/* 8030BBB8 00307818 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030BBBC 0030781C 38 61 00 08 */ addi r3, r1, 8
+/* 8030BBC0 00307820 38 84 02 0E */ addi r4, r4, 0x20e
+/* 8030BBC4 00307824 48 00 B6 85 */ bl func_80317248
+/* 8030BBC8 00307828 38 00 00 0B */ li r0, 0xb
+/* 8030BBCC 0030782C 38 C1 00 08 */ addi r6, r1, 8
+/* 8030BBD0 00307830 38 60 00 00 */ li r3, 0
+/* 8030BBD4 00307834 38 E0 00 00 */ li r7, 0
+/* 8030BBD8 00307838 7C 09 03 A6 */ mtctr r0
+lbl_8030BBDC:
+/* 8030BBDC 0030783C 54 E4 04 3E */ clrlwi r4, r7, 0x10
+/* 8030BBE0 00307840 54 60 07 FE */ clrlwi r0, r3, 0x1f
+/* 8030BBE4 00307844 7C A6 20 AE */ lbzx r5, r6, r4
+/* 8030BBE8 00307848 54 64 FE 7E */ rlwinm r4, r3, 0x1f, 0x19, 0x1f
+/* 8030BBEC 0030784C 7C 00 00 D0 */ neg r0, r0
+/* 8030BBF0 00307850 38 E7 00 01 */ addi r7, r7, 1
+/* 8030BBF4 00307854 54 03 06 30 */ rlwinm r3, r0, 0, 0x18, 0x18
+/* 8030BBF8 00307858 7C 05 22 14 */ add r0, r5, r4
+/* 8030BBFC 0030785C 7C 03 02 14 */ add r0, r3, r0
+/* 8030BC00 00307860 54 03 06 3E */ clrlwi r3, r0, 0x18
+/* 8030BC04 00307864 42 00 FF D8 */ bdnz lbl_8030BBDC
+/* 8030BC08 00307868 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030BC0C 0030786C 7C 08 03 A6 */ mtlr r0
+/* 8030BC10 00307870 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030BC14 00307874 4E 80 00 20 */ blr
+
+.global VFiPFENT_LoadShortNameFromBuf
+VFiPFENT_LoadShortNameFromBuf:
+/* 8030BC18 00307878 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030BC1C 0030787C 7C 08 02 A6 */ mflr r0
+/* 8030BC20 00307880 88 A4 00 0B */ lbz r5, 0xb(r4)
+/* 8030BC24 00307884 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030BC28 00307888 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8030BC2C 0030788C 7C 7F 1B 78 */ mr r31, r3
+/* 8030BC30 00307890 38 63 02 0E */ addi r3, r3, 0x20e
+/* 8030BC34 00307894 48 00 B7 9D */ bl func_803173D0
+/* 8030BC38 00307898 88 1F 02 0E */ lbz r0, 0x20e(r31)
+/* 8030BC3C 0030789C 2C 00 00 05 */ cmpwi r0, 5
+/* 8030BC40 003078A0 40 82 00 0C */ bne lbl_8030BC4C
+/* 8030BC44 003078A4 38 00 FF E5 */ li r0, -27
+/* 8030BC48 003078A8 98 1F 02 0E */ stb r0, 0x20e(r31)
+lbl_8030BC4C:
+/* 8030BC4C 003078AC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030BC50 003078B0 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8030BC54 003078B4 7C 08 03 A6 */ mtlr r0
+/* 8030BC58 003078B8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030BC5C 003078BC 4E 80 00 20 */ blr
+
+.global VFiPFENT_loadEntryNumericFieldsFromBuf
+VFiPFENT_loadEntryNumericFieldsFromBuf:
+/* 8030BC60 003078C0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030BC64 003078C4 38 C3 02 1E */ addi r6, r3, 0x21e
+/* 8030BC68 003078C8 89 04 00 0B */ lbz r8, 0xb(r4)
+/* 8030BC6C 003078CC 38 03 02 20 */ addi r0, r3, 0x220
+/* 8030BC70 003078D0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8030BC74 003078D4 38 A3 02 22 */ addi r5, r3, 0x222
+/* 8030BC78 003078D8 89 44 00 0C */ lbz r10, 0xc(r4)
+/* 8030BC7C 003078DC 39 23 02 24 */ addi r9, r3, 0x224
+/* 8030BC80 003078E0 93 C1 00 08 */ stw r30, 8(r1)
+/* 8030BC84 003078E4 88 E4 00 0D */ lbz r7, 0xd(r4)
+/* 8030BC88 003078E8 99 03 02 1C */ stb r8, 0x21c(r3)
+/* 8030BC8C 003078EC 39 03 02 26 */ addi r8, r3, 0x226
+/* 8030BC90 003078F0 A1 64 00 0E */ lhz r11, 0xe(r4)
+/* 8030BC94 003078F4 99 43 02 1B */ stb r10, 0x21b(r3)
+/* 8030BC98 003078F8 A1 44 00 10 */ lhz r10, 0x10(r4)
+/* 8030BC9C 003078FC 98 E3 02 1D */ stb r7, 0x21d(r3)
+/* 8030BCA0 00307900 A1 84 00 12 */ lhz r12, 0x12(r4)
+/* 8030BCA4 00307904 7D 60 37 2C */ sthbrx r11, 0, r6
+/* 8030BCA8 00307908 81 64 00 1C */ lwz r11, 0x1c(r4)
+/* 8030BCAC 0030790C 7D 40 07 2C */ sthbrx r10, 0, r0
+/* 8030BCB0 00307910 A3 E4 00 1A */ lhz r31, 0x1a(r4)
+/* 8030BCB4 00307914 55 67 42 1E */ rlwinm r7, r11, 8, 8, 0xf
+/* 8030BCB8 00307918 55 66 C4 2E */ rlwinm r6, r11, 0x18, 0x10, 0x17
+/* 8030BCBC 0030791C 7D 80 2F 2C */ sthbrx r12, 0, r5
+/* 8030BCC0 00307920 A1 44 00 16 */ lhz r10, 0x16(r4)
+/* 8030BCC4 00307924 57 E0 44 2E */ rlwinm r0, r31, 8, 0x10, 0x17
+/* 8030BCC8 00307928 A3 C4 00 14 */ lhz r30, 0x14(r4)
+/* 8030BCCC 0030792C 51 67 C0 0E */ rlwimi r7, r11, 0x18, 0, 7
+/* 8030BCD0 00307930 A0 84 00 18 */ lhz r4, 0x18(r4)
+/* 8030BCD4 00307934 51 66 46 3E */ rlwimi r6, r11, 8, 0x18, 0x1f
+/* 8030BCD8 00307938 7D 40 4F 2C */ sthbrx r10, 0, r9
+/* 8030BCDC 0030793C 57 C5 44 2E */ rlwinm r5, r30, 8, 0x10, 0x17
+/* 8030BCE0 00307940 53 C5 C6 3E */ rlwimi r5, r30, 0x18, 0x18, 0x1f
+/* 8030BCE4 00307944 53 E0 C6 3E */ rlwimi r0, r31, 0x18, 0x18, 0x1f
+/* 8030BCE8 00307948 7C 80 47 2C */ sthbrx r4, 0, r8
+/* 8030BCEC 0030794C 7C E4 33 78 */ or r4, r7, r6
+/* 8030BCF0 00307950 50 A0 80 1E */ rlwimi r0, r5, 0x10, 0, 0xf
+/* 8030BCF4 00307954 90 83 02 28 */ stw r4, 0x228(r3)
+/* 8030BCF8 00307958 90 03 02 34 */ stw r0, 0x234(r3)
+/* 8030BCFC 0030795C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8030BD00 00307960 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8030BD04 00307964 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030BD08 00307968 4E 80 00 20 */ blr
+
+.global VFiPFENT_LoadLFNEntryFieldsFromBuf
+VFiPFENT_LoadLFNEntryFieldsFromBuf:
+/* 8030BD0C 0030796C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030BD10 00307970 7C 08 02 A6 */ mflr r0
+/* 8030BD14 00307974 88 E4 00 00 */ lbz r7, 0(r4)
+/* 8030BD18 00307978 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030BD1C 0030797C 54 E5 06 B0 */ rlwinm r5, r7, 0, 0x1a, 0x18
+/* 8030BD20 00307980 88 C4 00 0D */ lbz r6, 0xd(r4)
+/* 8030BD24 00307984 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030BD28 00307988 2C 05 00 14 */ cmpwi r5, 0x14
+/* 8030BD2C 0030798C 7C 7F 1B 78 */ mr r31, r3
+/* 8030BD30 00307990 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030BD34 00307994 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030BD38 00307998 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8030BD3C 0030799C 7C 9C 23 78 */ mr r28, r4
+/* 8030BD40 003079A0 40 81 00 1C */ ble lbl_8030BD5C
+/* 8030BD44 003079A4 38 00 00 00 */ li r0, 0
+/* 8030BD48 003079A8 98 03 02 0B */ stb r0, 0x20b(r3)
+/* 8030BD4C 003079AC 98 03 02 0C */ stb r0, 0x20c(r3)
+/* 8030BD50 003079B0 98 03 02 0A */ stb r0, 0x20a(r3)
+/* 8030BD54 003079B4 38 60 00 21 */ li r3, 0x21
+/* 8030BD58 003079B8 48 00 01 6C */ b lbl_8030BEC4
+lbl_8030BD5C:
+/* 8030BD5C 003079BC 54 E0 06 73 */ rlwinm. r0, r7, 0, 0x19, 0x19
+/* 8030BD60 003079C0 41 82 00 18 */ beq lbl_8030BD78
+/* 8030BD64 003079C4 38 00 00 00 */ li r0, 0
+/* 8030BD68 003079C8 54 A7 06 3E */ clrlwi r7, r5, 0x18
+/* 8030BD6C 003079CC 98 03 02 0A */ stb r0, 0x20a(r3)
+/* 8030BD70 003079D0 3B C0 00 01 */ li r30, 1
+/* 8030BD74 003079D4 48 00 00 50 */ b lbl_8030BDC4
+lbl_8030BD78:
+/* 8030BD78 003079D8 88 03 02 0A */ lbz r0, 0x20a(r3)
+/* 8030BD7C 003079DC 3B C0 00 00 */ li r30, 0
+/* 8030BD80 003079E0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030BD84 003079E4 40 82 00 0C */ bne lbl_8030BD90
+/* 8030BD88 003079E8 38 60 00 21 */ li r3, 0x21
+/* 8030BD8C 003079EC 48 00 01 38 */ b lbl_8030BEC4
+lbl_8030BD90:
+/* 8030BD90 003079F0 88 A3 02 0B */ lbz r5, 0x20b(r3)
+/* 8030BD94 003079F4 38 05 FF FF */ addi r0, r5, -1
+/* 8030BD98 003079F8 7C 07 00 00 */ cmpw r7, r0
+/* 8030BD9C 003079FC 40 82 00 10 */ bne lbl_8030BDAC
+/* 8030BDA0 00307A00 88 03 02 0C */ lbz r0, 0x20c(r3)
+/* 8030BDA4 00307A04 7C 06 00 40 */ cmplw r6, r0
+/* 8030BDA8 00307A08 41 82 00 1C */ beq lbl_8030BDC4
+lbl_8030BDAC:
+/* 8030BDAC 00307A0C 38 00 00 00 */ li r0, 0
+/* 8030BDB0 00307A10 98 03 02 0B */ stb r0, 0x20b(r3)
+/* 8030BDB4 00307A14 98 03 02 0C */ stb r0, 0x20c(r3)
+/* 8030BDB8 00307A18 98 03 02 0A */ stb r0, 0x20a(r3)
+/* 8030BDBC 00307A1C 38 60 00 21 */ li r3, 0x21
+/* 8030BDC0 00307A20 48 00 01 04 */ b lbl_8030BEC4
+lbl_8030BDC4:
+/* 8030BDC4 00307A24 54 E5 06 3E */ clrlwi r5, r7, 0x18
+/* 8030BDC8 00307A28 98 E3 02 0B */ stb r7, 0x20b(r3)
+/* 8030BDCC 00307A2C 38 05 FF FF */ addi r0, r5, -1
+/* 8030BDD0 00307A30 38 84 00 01 */ addi r4, r4, 1
+/* 8030BDD4 00307A34 1C 00 00 1A */ mulli r0, r0, 0x1a
+/* 8030BDD8 00307A38 98 C3 02 0C */ stb r6, 0x20c(r3)
+/* 8030BDDC 00307A3C 38 A0 00 0A */ li r5, 0xa
+/* 8030BDE0 00307A40 7F A3 02 14 */ add r29, r3, r0
+/* 8030BDE4 00307A44 7F A3 EB 78 */ mr r3, r29
+/* 8030BDE8 00307A48 4B FF 90 C5 */ bl VFipf_memcpy
+/* 8030BDEC 00307A4C 38 7D 00 0A */ addi r3, r29, 0xa
+/* 8030BDF0 00307A50 38 9C 00 0E */ addi r4, r28, 0xe
+/* 8030BDF4 00307A54 38 A0 00 0C */ li r5, 0xc
+/* 8030BDF8 00307A58 4B FF 90 B5 */ bl VFipf_memcpy
+/* 8030BDFC 00307A5C 38 7D 00 16 */ addi r3, r29, 0x16
+/* 8030BE00 00307A60 38 9C 00 1C */ addi r4, r28, 0x1c
+/* 8030BE04 00307A64 38 A0 00 04 */ li r5, 4
+/* 8030BE08 00307A68 4B FF 90 A5 */ bl VFipf_memcpy
+/* 8030BE0C 00307A6C 7F A3 EB 78 */ mr r3, r29
+/* 8030BE10 00307A70 38 80 00 0A */ li r4, 0xa
+/* 8030BE14 00307A74 4B FF 93 AD */ bl VFiPF_LE16_TO_U16_STR
+/* 8030BE18 00307A78 38 7D 00 0A */ addi r3, r29, 0xa
+/* 8030BE1C 00307A7C 38 80 00 0C */ li r4, 0xc
+/* 8030BE20 00307A80 4B FF 93 A1 */ bl VFiPF_LE16_TO_U16_STR
+/* 8030BE24 00307A84 38 7D 00 16 */ addi r3, r29, 0x16
+/* 8030BE28 00307A88 38 80 00 04 */ li r4, 4
+/* 8030BE2C 00307A8C 4B FF 93 95 */ bl VFiPF_LE16_TO_U16_STR
+/* 8030BE30 00307A90 2C 1E 00 00 */ cmpwi r30, 0
+/* 8030BE34 00307A94 41 82 00 80 */ beq lbl_8030BEB4
+/* 8030BE38 00307A98 38 9D 00 1A */ addi r4, r29, 0x1a
+/* 8030BE3C 00307A9C 38 60 00 00 */ li r3, 0
+/* 8030BE40 00307AA0 38 04 00 01 */ addi r0, r4, 1
+/* 8030BE44 00307AA4 B0 7D 00 1A */ sth r3, 0x1a(r29)
+/* 8030BE48 00307AA8 7C 1D 00 50 */ subf r0, r29, r0
+/* 8030BE4C 00307AAC 54 00 F8 7E */ srwi r0, r0, 1
+/* 8030BE50 00307AB0 7C 09 03 A6 */ mtctr r0
+/* 8030BE54 00307AB4 7C 1D 20 40 */ cmplw r29, r4
+/* 8030BE58 00307AB8 40 80 00 20 */ bge lbl_8030BE78
+lbl_8030BE5C:
+/* 8030BE5C 00307ABC A0 1D 00 00 */ lhz r0, 0(r29)
+/* 8030BE60 00307AC0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030BE64 00307AC4 40 82 00 0C */ bne lbl_8030BE70
+/* 8030BE68 00307AC8 3B BD 00 02 */ addi r29, r29, 2
+/* 8030BE6C 00307ACC 48 00 00 0C */ b lbl_8030BE78
+lbl_8030BE70:
+/* 8030BE70 00307AD0 3B BD 00 02 */ addi r29, r29, 2
+/* 8030BE74 00307AD4 42 00 FF E8 */ bdnz lbl_8030BE5C
+lbl_8030BE78:
+/* 8030BE78 00307AD8 38 04 00 01 */ addi r0, r4, 1
+/* 8030BE7C 00307ADC 7C 1D 00 50 */ subf r0, r29, r0
+/* 8030BE80 00307AE0 54 00 F8 7E */ srwi r0, r0, 1
+/* 8030BE84 00307AE4 7C 09 03 A6 */ mtctr r0
+/* 8030BE88 00307AE8 7C 1D 20 40 */ cmplw r29, r4
+/* 8030BE8C 00307AEC 40 80 00 28 */ bge lbl_8030BEB4
+lbl_8030BE90:
+/* 8030BE90 00307AF0 A0 1D 00 00 */ lhz r0, 0(r29)
+/* 8030BE94 00307AF4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030BE98 00307AF8 41 82 00 14 */ beq lbl_8030BEAC
+/* 8030BE9C 00307AFC 38 00 00 00 */ li r0, 0
+/* 8030BEA0 00307B00 38 60 00 21 */ li r3, 0x21
+/* 8030BEA4 00307B04 98 1F 02 0A */ stb r0, 0x20a(r31)
+/* 8030BEA8 00307B08 48 00 00 1C */ b lbl_8030BEC4
+lbl_8030BEAC:
+/* 8030BEAC 00307B0C 3B BD 00 02 */ addi r29, r29, 2
+/* 8030BEB0 00307B10 42 00 FF E0 */ bdnz lbl_8030BE90
+lbl_8030BEB4:
+/* 8030BEB4 00307B14 88 9F 02 0A */ lbz r4, 0x20a(r31)
+/* 8030BEB8 00307B18 38 60 00 00 */ li r3, 0
+/* 8030BEBC 00307B1C 38 04 00 01 */ addi r0, r4, 1
+/* 8030BEC0 00307B20 98 1F 02 0A */ stb r0, 0x20a(r31)
+lbl_8030BEC4:
+/* 8030BEC4 00307B24 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030BEC8 00307B28 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030BECC 00307B2C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030BED0 00307B30 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030BED4 00307B34 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030BED8 00307B38 7C 08 03 A6 */ mtlr r0
+/* 8030BEDC 00307B3C 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030BEE0 00307B40 4E 80 00 20 */ blr
+
+.global VFiPFENT_storeLFNEntryFieldsToBuf
+VFiPFENT_storeLFNEntryFieldsToBuf:
+/* 8030BEE4 00307B44 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030BEE8 00307B48 7C 08 02 A6 */ mflr r0
+/* 8030BEEC 00307B4C 2C 07 00 00 */ cmpwi r7, 0
+/* 8030BEF0 00307B50 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030BEF4 00307B54 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8030BEF8 00307B58 93 C1 00 08 */ stw r30, 8(r1)
+/* 8030BEFC 00307B5C 7C 7E 1B 78 */ mr r30, r3
+/* 8030BF00 00307B60 41 82 00 10 */ beq lbl_8030BF10
+/* 8030BF04 00307B64 60 A0 00 40 */ ori r0, r5, 0x40
+/* 8030BF08 00307B68 98 03 00 00 */ stb r0, 0(r3)
+/* 8030BF0C 00307B6C 48 00 00 08 */ b lbl_8030BF14
+lbl_8030BF10:
+/* 8030BF10 00307B70 98 A3 00 00 */ stb r5, 0(r3)
+lbl_8030BF14:
+/* 8030BF14 00307B74 38 05 FF FF */ addi r0, r5, -1
+/* 8030BF18 00307B78 38 A0 00 00 */ li r5, 0
+/* 8030BF1C 00307B7C 1C 00 00 1A */ mulli r0, r0, 0x1a
+/* 8030BF20 00307B80 39 00 00 0F */ li r8, 0xf
+/* 8030BF24 00307B84 2C 07 00 00 */ cmpwi r7, 0
+/* 8030BF28 00307B88 99 03 00 0B */ stb r8, 0xb(r3)
+/* 8030BF2C 00307B8C 98 C3 00 0D */ stb r6, 0xd(r3)
+/* 8030BF30 00307B90 7F E4 02 14 */ add r31, r4, r0
+/* 8030BF34 00307B94 98 A3 00 0C */ stb r5, 0xc(r3)
+/* 8030BF38 00307B98 B0 A3 00 1A */ sth r5, 0x1a(r3)
+/* 8030BF3C 00307B9C 41 82 00 A8 */ beq lbl_8030BFE4
+/* 8030BF40 00307BA0 38 BF 00 1A */ addi r5, r31, 0x1a
+/* 8030BF44 00307BA4 7F E6 FB 78 */ mr r6, r31
+/* 8030BF48 00307BA8 38 05 00 01 */ addi r0, r5, 1
+/* 8030BF4C 00307BAC 7C 1F 00 50 */ subf r0, r31, r0
+/* 8030BF50 00307BB0 54 00 F8 7E */ srwi r0, r0, 1
+/* 8030BF54 00307BB4 7C 09 03 A6 */ mtctr r0
+/* 8030BF58 00307BB8 7C 1F 28 40 */ cmplw r31, r5
+/* 8030BF5C 00307BBC 40 80 00 20 */ bge lbl_8030BF7C
+lbl_8030BF60:
+/* 8030BF60 00307BC0 A0 06 00 00 */ lhz r0, 0(r6)
+/* 8030BF64 00307BC4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030BF68 00307BC8 40 82 00 0C */ bne lbl_8030BF74
+/* 8030BF6C 00307BCC 38 C6 00 02 */ addi r6, r6, 2
+/* 8030BF70 00307BD0 48 00 00 0C */ b lbl_8030BF7C
+lbl_8030BF74:
+/* 8030BF74 00307BD4 38 C6 00 02 */ addi r6, r6, 2
+/* 8030BF78 00307BD8 42 00 FF E8 */ bdnz lbl_8030BF60
+lbl_8030BF7C:
+/* 8030BF7C 00307BDC 38 85 00 01 */ addi r4, r5, 1
+/* 8030BF80 00307BE0 7C 06 28 40 */ cmplw r6, r5
+/* 8030BF84 00307BE4 7C 86 20 50 */ subf r4, r6, r4
+/* 8030BF88 00307BE8 3C A0 00 01 */ lis r5, 0x0000FFFF@ha
+/* 8030BF8C 00307BEC 38 A5 FF FF */ addi r5, r5, 0x0000FFFF@l
+/* 8030BF90 00307BF0 54 84 F8 7E */ srwi r4, r4, 1
+/* 8030BF94 00307BF4 40 80 00 50 */ bge lbl_8030BFE4
+/* 8030BF98 00307BF8 54 80 E8 FF */ rlwinm. r0, r4, 0x1d, 3, 0x1f
+/* 8030BF9C 00307BFC 7C 09 03 A6 */ mtctr r0
+/* 8030BFA0 00307C00 41 82 00 34 */ beq lbl_8030BFD4
+lbl_8030BFA4:
+/* 8030BFA4 00307C04 B0 A6 00 00 */ sth r5, 0(r6)
+/* 8030BFA8 00307C08 B0 A6 00 02 */ sth r5, 2(r6)
+/* 8030BFAC 00307C0C B0 A6 00 04 */ sth r5, 4(r6)
+/* 8030BFB0 00307C10 B0 A6 00 06 */ sth r5, 6(r6)
+/* 8030BFB4 00307C14 B0 A6 00 08 */ sth r5, 8(r6)
+/* 8030BFB8 00307C18 B0 A6 00 0A */ sth r5, 0xa(r6)
+/* 8030BFBC 00307C1C B0 A6 00 0C */ sth r5, 0xc(r6)
+/* 8030BFC0 00307C20 B0 A6 00 0E */ sth r5, 0xe(r6)
+/* 8030BFC4 00307C24 38 C6 00 10 */ addi r6, r6, 0x10
+/* 8030BFC8 00307C28 42 00 FF DC */ bdnz lbl_8030BFA4
+/* 8030BFCC 00307C2C 70 84 00 07 */ andi. r4, r4, 7
+/* 8030BFD0 00307C30 41 82 00 14 */ beq lbl_8030BFE4
+lbl_8030BFD4:
+/* 8030BFD4 00307C34 7C 89 03 A6 */ mtctr r4
+lbl_8030BFD8:
+/* 8030BFD8 00307C38 B0 A6 00 00 */ sth r5, 0(r6)
+/* 8030BFDC 00307C3C 38 C6 00 02 */ addi r6, r6, 2
+/* 8030BFE0 00307C40 42 00 FF F8 */ bdnz lbl_8030BFD8
+lbl_8030BFE4:
+/* 8030BFE4 00307C44 7F E4 FB 78 */ mr r4, r31
+/* 8030BFE8 00307C48 38 A0 00 0A */ li r5, 0xa
+/* 8030BFEC 00307C4C 38 63 00 01 */ addi r3, r3, 1
+/* 8030BFF0 00307C50 4B FF 8E BD */ bl VFipf_memcpy
+/* 8030BFF4 00307C54 38 7E 00 0E */ addi r3, r30, 0xe
+/* 8030BFF8 00307C58 38 9F 00 0A */ addi r4, r31, 0xa
+/* 8030BFFC 00307C5C 38 A0 00 0C */ li r5, 0xc
+/* 8030C000 00307C60 4B FF 8E AD */ bl VFipf_memcpy
+/* 8030C004 00307C64 38 7E 00 1C */ addi r3, r30, 0x1c
+/* 8030C008 00307C68 38 9F 00 16 */ addi r4, r31, 0x16
+/* 8030C00C 00307C6C 38 A0 00 04 */ li r5, 4
+/* 8030C010 00307C70 4B FF 8E 9D */ bl VFipf_memcpy
+/* 8030C014 00307C74 38 7E 00 01 */ addi r3, r30, 1
+/* 8030C018 00307C78 38 80 00 0A */ li r4, 0xa
+/* 8030C01C 00307C7C 4B FF 91 A5 */ bl VFiPF_LE16_TO_U16_STR
+/* 8030C020 00307C80 38 7E 00 0E */ addi r3, r30, 0xe
+/* 8030C024 00307C84 38 80 00 0C */ li r4, 0xc
+/* 8030C028 00307C88 4B FF 91 99 */ bl VFiPF_LE16_TO_U16_STR
+/* 8030C02C 00307C8C 38 7E 00 1C */ addi r3, r30, 0x1c
+/* 8030C030 00307C90 38 80 00 04 */ li r4, 4
+/* 8030C034 00307C94 4B FF 91 8D */ bl VFiPF_LE16_TO_U16_STR
+/* 8030C038 00307C98 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030C03C 00307C9C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8030C040 00307CA0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8030C044 00307CA4 7C 08 03 A6 */ mtlr r0
+/* 8030C048 00307CA8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030C04C 00307CAC 4E 80 00 20 */ blr
+
+.global VFiPFENT_findEntryPos
+VFiPFENT_findEntryPos:
+/* 8030C050 00307CB0 94 21 FF 50 */ stwu r1, -0xb0(r1)
+/* 8030C054 00307CB4 7C 08 02 A6 */ mflr r0
+/* 8030C058 00307CB8 90 01 00 B4 */ stw r0, 0xb4(r1)
+/* 8030C05C 00307CBC 39 61 00 B0 */ addi r11, r1, 0xb0
+/* 8030C060 00307CC0 4B EB B0 B9 */ bl _savegpr_23
+/* 8030C064 00307CC4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C068 00307CC8 7C 79 1B 78 */ mr r25, r3
+/* 8030C06C 00307CCC 90 A1 00 08 */ stw r5, 8(r1)
+/* 8030C070 00307CD0 7C 9A 23 78 */ mr r26, r4
+/* 8030C074 00307CD4 7C DB 33 78 */ mr r27, r6
+/* 8030C078 00307CD8 7C FC 3B 78 */ mr r28, r7
+/* 8030C07C 00307CDC 7D 1D 43 78 */ mr r29, r8
+/* 8030C080 00307CE0 7D 3E 4B 78 */ mr r30, r9
+/* 8030C084 00307CE4 7D 5F 53 78 */ mr r31, r10
+/* 8030C088 00307CE8 38 60 00 00 */ li r3, 0
+/* 8030C08C 00307CEC 40 82 00 1C */ bne lbl_8030C0A8
+/* 8030C090 00307CF0 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C094 00307CF4 38 60 00 0A */ li r3, 0xa
+/* 8030C098 00307CF8 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C09C 00307CFC 90 09 00 00 */ stw r0, 0(r9)
+/* 8030C0A0 00307D00 90 0A 00 00 */ stw r0, 0(r10)
+/* 8030C0A4 00307D04 48 00 02 E0 */ b lbl_8030C384
+lbl_8030C0A8:
+/* 8030C0A8 00307D08 2C 04 00 00 */ cmpwi r4, 0
+/* 8030C0AC 00307D0C 40 82 00 1C */ bne lbl_8030C0C8
+/* 8030C0B0 00307D10 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C0B4 00307D14 38 60 00 0A */ li r3, 0xa
+/* 8030C0B8 00307D18 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C0BC 00307D1C 90 09 00 00 */ stw r0, 0(r9)
+/* 8030C0C0 00307D20 90 0A 00 00 */ stw r0, 0(r10)
+/* 8030C0C4 00307D24 48 00 02 C0 */ b lbl_8030C384
+lbl_8030C0C8:
+/* 8030C0C8 00307D28 3D 60 00 0F */ lis r11, 0x000F423F@ha
+/* 8030C0CC 00307D2C 39 6B 42 3F */ addi r11, r11, 0x000F423F@l
+/* 8030C0D0 00307D30 7C 05 58 40 */ cmplw r5, r11
+/* 8030C0D4 00307D34 41 80 00 14 */ blt lbl_8030C0E8
+/* 8030C0D8 00307D38 91 69 00 00 */ stw r11, 0(r9)
+/* 8030C0DC 00307D3C 38 60 00 0A */ li r3, 0xa
+/* 8030C0E0 00307D40 91 6A 00 00 */ stw r11, 0(r10)
+/* 8030C0E4 00307D44 48 00 02 A0 */ b lbl_8030C384
+lbl_8030C0E8:
+/* 8030C0E8 00307D48 2C 06 00 00 */ cmpwi r6, 0
+/* 8030C0EC 00307D4C 40 82 00 14 */ bne lbl_8030C100
+/* 8030C0F0 00307D50 91 69 00 00 */ stw r11, 0(r9)
+/* 8030C0F4 00307D54 38 60 00 0A */ li r3, 0xa
+/* 8030C0F8 00307D58 91 6A 00 00 */ stw r11, 0(r10)
+/* 8030C0FC 00307D5C 48 00 02 88 */ b lbl_8030C384
+lbl_8030C100:
+/* 8030C100 00307D60 7C E0 40 39 */ and. r0, r7, r8
+/* 8030C104 00307D64 41 82 00 14 */ beq lbl_8030C118
+/* 8030C108 00307D68 91 69 00 00 */ stw r11, 0(r9)
+/* 8030C10C 00307D6C 38 60 00 0A */ li r3, 0xa
+/* 8030C110 00307D70 91 6A 00 00 */ stw r11, 0(r10)
+/* 8030C114 00307D74 48 00 02 70 */ b lbl_8030C384
+lbl_8030C118:
+/* 8030C118 00307D78 38 C0 00 00 */ li r6, 0
+/* 8030C11C 00307D7C 3C A0 80 58 */ lis r5, lbl_8057F5C8@ha
+/* 8030C120 00307D80 90 C9 00 00 */ stw r6, 0(r9)
+/* 8030C124 00307D84 38 A5 F5 C8 */ addi r5, r5, lbl_8057F5C8@l
+/* 8030C128 00307D88 90 CA 00 00 */ stw r6, 0(r10)
+/* 8030C12C 00307D8C 98 C4 02 0A */ stb r6, 0x20a(r4)
+/* 8030C130 00307D90 98 C4 02 0B */ stb r6, 0x20b(r4)
+/* 8030C134 00307D94 98 C4 02 0C */ stb r6, 0x20c(r4)
+/* 8030C138 00307D98 B0 C4 00 00 */ sth r6, 0(r4)
+/* 8030C13C 00307D9C 80 05 00 3C */ lwz r0, 0x3c(r5)
+/* 8030C140 00307DA0 90 C1 00 0C */ stw r6, 0xc(r1)
+/* 8030C144 00307DA4 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030C148 00307DA8 28 00 00 02 */ cmplwi r0, 2
+/* 8030C14C 00307DAC 40 82 00 10 */ bne lbl_8030C15C
+/* 8030C150 00307DB0 7F 63 DB 78 */ mr r3, r27
+/* 8030C154 00307DB4 38 81 00 08 */ addi r4, r1, 8
+/* 8030C158 00307DB8 48 00 C6 01 */ bl func_80318758
+lbl_8030C15C:
+/* 8030C15C 00307DBC 80 99 00 00 */ lwz r4, 0(r25)
+/* 8030C160 00307DC0 28 03 00 01 */ cmplwi r3, 1
+/* 8030C164 00307DC4 80 19 00 04 */ lwz r0, 4(r25)
+/* 8030C168 00307DC8 90 81 00 18 */ stw r4, 0x18(r1)
+/* 8030C16C 00307DCC 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 8030C170 00307DD0 80 79 00 08 */ lwz r3, 8(r25)
+/* 8030C174 00307DD4 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 8030C178 00307DD8 90 61 00 20 */ stw r3, 0x20(r1)
+/* 8030C17C 00307DDC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030C180 00307DE0 80 79 00 10 */ lwz r3, 0x10(r25)
+/* 8030C184 00307DE4 80 19 00 14 */ lwz r0, 0x14(r25)
+/* 8030C188 00307DE8 90 61 00 28 */ stw r3, 0x28(r1)
+/* 8030C18C 00307DEC 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 8030C190 00307DF0 80 79 00 18 */ lwz r3, 0x18(r25)
+/* 8030C194 00307DF4 80 19 00 1C */ lwz r0, 0x1c(r25)
+/* 8030C198 00307DF8 90 61 00 30 */ stw r3, 0x30(r1)
+/* 8030C19C 00307DFC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030C1A0 00307E00 80 79 00 20 */ lwz r3, 0x20(r25)
+/* 8030C1A4 00307E04 80 19 00 24 */ lwz r0, 0x24(r25)
+/* 8030C1A8 00307E08 90 61 00 38 */ stw r3, 0x38(r1)
+/* 8030C1AC 00307E0C 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 8030C1B0 00307E10 80 79 00 28 */ lwz r3, 0x28(r25)
+/* 8030C1B4 00307E14 80 19 00 2C */ lwz r0, 0x2c(r25)
+/* 8030C1B8 00307E18 90 61 00 40 */ stw r3, 0x40(r1)
+/* 8030C1BC 00307E1C 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030C1C0 00307E20 80 79 00 30 */ lwz r3, 0x30(r25)
+/* 8030C1C4 00307E24 80 19 00 34 */ lwz r0, 0x34(r25)
+/* 8030C1C8 00307E28 90 61 00 48 */ stw r3, 0x48(r1)
+/* 8030C1CC 00307E2C 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 8030C1D0 00307E30 40 82 00 E4 */ bne lbl_8030C2B4
+/* 8030C1D4 00307E34 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030C1D8 00307E38 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C1DC 00307E3C 38 84 FF FF */ addi r4, r4, -1
+/* 8030C1E0 00307E40 48 00 1D 19 */ bl VFiPFENT_ITER_IteratorInitialize
+/* 8030C1E4 00307E44 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C1E8 00307E48 41 82 00 18 */ beq lbl_8030C200
+/* 8030C1EC 00307E4C 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C1F0 00307E50 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C1F4 00307E54 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C1F8 00307E58 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C1FC 00307E5C 48 00 01 88 */ b lbl_8030C384
+lbl_8030C200:
+/* 8030C200 00307E60 7F 43 D3 78 */ mr r3, r26
+/* 8030C204 00307E64 7F 65 DB 78 */ mr r5, r27
+/* 8030C208 00307E68 7F 86 E3 78 */ mr r6, r28
+/* 8030C20C 00307E6C 7F A7 EB 78 */ mr r7, r29
+/* 8030C210 00307E70 38 81 00 10 */ addi r4, r1, 0x10
+/* 8030C214 00307E74 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030C218 00307E78 4B FF F2 69 */ bl VFiPFENT_getEntry
+/* 8030C21C 00307E7C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C220 00307E80 40 82 00 1C */ bne lbl_8030C23C
+/* 8030C224 00307E84 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C228 00307E88 38 60 00 03 */ li r3, 3
+/* 8030C22C 00307E8C 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C230 00307E90 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C234 00307E94 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C238 00307E98 48 00 01 4C */ b lbl_8030C384
+lbl_8030C23C:
+/* 8030C23C 00307E9C 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 8030C240 00307EA0 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19
+/* 8030C244 00307EA4 41 82 01 2C */ beq lbl_8030C370
+/* 8030C248 00307EA8 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030C24C 00307EAC 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C250 00307EB0 48 00 1C A9 */ bl VFiPFENT_ITER_IteratorInitialize
+/* 8030C254 00307EB4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C258 00307EB8 41 82 00 18 */ beq lbl_8030C270
+/* 8030C25C 00307EBC 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C260 00307EC0 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C264 00307EC4 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C268 00307EC8 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C26C 00307ECC 48 00 01 18 */ b lbl_8030C384
+lbl_8030C270:
+/* 8030C270 00307ED0 7F 43 D3 78 */ mr r3, r26
+/* 8030C274 00307ED4 7F 65 DB 78 */ mr r5, r27
+/* 8030C278 00307ED8 7F 86 E3 78 */ mr r6, r28
+/* 8030C27C 00307EDC 7F A7 EB 78 */ mr r7, r29
+/* 8030C280 00307EE0 38 81 00 10 */ addi r4, r1, 0x10
+/* 8030C284 00307EE4 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030C288 00307EE8 4B FF F1 F9 */ bl VFiPFENT_getEntry
+/* 8030C28C 00307EEC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C290 00307EF0 40 82 00 E0 */ bne lbl_8030C370
+/* 8030C294 00307EF4 80 19 00 34 */ lwz r0, 0x34(r25)
+/* 8030C298 00307EF8 38 60 00 00 */ li r3, 0
+/* 8030C29C 00307EFC 90 1A 02 2C */ stw r0, 0x22c(r26)
+/* 8030C2A0 00307F00 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030C2A4 00307F04 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C2A8 00307F08 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030C2AC 00307F0C 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C2B0 00307F10 48 00 00 D4 */ b lbl_8030C384
+lbl_8030C2B4:
+/* 8030C2B4 00307F14 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030C2B8 00307F18 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C2BC 00307F1C 48 00 1C 3D */ bl VFiPFENT_ITER_IteratorInitialize
+/* 8030C2C0 00307F20 7C 77 1B 78 */ mr r23, r3
+/* 8030C2C4 00307F24 3B 00 00 00 */ li r24, 0
+/* 8030C2C8 00307F28 48 00 00 98 */ b lbl_8030C360
+lbl_8030C2CC:
+/* 8030C2CC 00307F2C 2C 17 00 00 */ cmpwi r23, 0
+/* 8030C2D0 00307F30 41 82 00 1C */ beq lbl_8030C2EC
+/* 8030C2D4 00307F34 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C2D8 00307F38 7E E3 BB 78 */ mr r3, r23
+/* 8030C2DC 00307F3C 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C2E0 00307F40 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C2E4 00307F44 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C2E8 00307F48 48 00 00 9C */ b lbl_8030C384
+lbl_8030C2EC:
+/* 8030C2EC 00307F4C 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 8030C2F0 00307F50 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C2F4 00307F54 41 82 00 7C */ beq lbl_8030C370
+/* 8030C2F8 00307F58 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030C2FC 00307F5C 40 82 00 10 */ bne lbl_8030C30C
+/* 8030C300 00307F60 9B 1A 02 0A */ stb r24, 0x20a(r26)
+/* 8030C304 00307F64 B3 1A 00 00 */ sth r24, 0(r26)
+/* 8030C308 00307F68 48 00 00 48 */ b lbl_8030C350
+lbl_8030C30C:
+/* 8030C30C 00307F6C 7F 43 D3 78 */ mr r3, r26
+/* 8030C310 00307F70 7F 65 DB 78 */ mr r5, r27
+/* 8030C314 00307F74 7F 86 E3 78 */ mr r6, r28
+/* 8030C318 00307F78 7F A7 EB 78 */ mr r7, r29
+/* 8030C31C 00307F7C 38 81 00 10 */ addi r4, r1, 0x10
+/* 8030C320 00307F80 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030C324 00307F84 4B FF F1 5D */ bl VFiPFENT_getEntry
+/* 8030C328 00307F88 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C32C 00307F8C 40 82 00 24 */ bne lbl_8030C350
+/* 8030C330 00307F90 80 19 00 34 */ lwz r0, 0x34(r25)
+/* 8030C334 00307F94 38 60 00 00 */ li r3, 0
+/* 8030C338 00307F98 90 1A 02 2C */ stw r0, 0x22c(r26)
+/* 8030C33C 00307F9C 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030C340 00307FA0 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C344 00307FA4 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030C348 00307FA8 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030C34C 00307FAC 48 00 00 38 */ b lbl_8030C384
+lbl_8030C350:
+/* 8030C350 00307FB0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C354 00307FB4 38 80 00 00 */ li r4, 0
+/* 8030C358 00307FB8 48 00 1D B1 */ bl VFiPFENT_ITER_Advance
+/* 8030C35C 00307FBC 7C 77 1B 78 */ mr r23, r3
+lbl_8030C360:
+/* 8030C360 00307FC0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C364 00307FC4 48 00 1C 99 */ bl VFiPFENT_ITER_IsAtLogicalEnd
+/* 8030C368 00307FC8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C36C 00307FCC 41 82 FF 60 */ beq lbl_8030C2CC
+lbl_8030C370:
+/* 8030C370 00307FD0 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030C374 00307FD4 38 60 00 03 */ li r3, 3
+/* 8030C378 00307FD8 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030C37C 00307FDC 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030C380 00307FE0 90 1F 00 00 */ stw r0, 0(r31)
+lbl_8030C384:
+/* 8030C384 00307FE4 39 61 00 B0 */ addi r11, r1, 0xb0
+/* 8030C388 00307FE8 4B EB AD DD */ bl _restgpr_23
+/* 8030C38C 00307FEC 80 01 00 B4 */ lwz r0, 0xb4(r1)
+/* 8030C390 00307FF0 7C 08 03 A6 */ mtlr r0
+/* 8030C394 00307FF4 38 21 00 B0 */ addi r1, r1, 0xb0
+/* 8030C398 00307FF8 4E 80 00 20 */ blr
+
+.global VFiPFENT_findEntry
+VFiPFENT_findEntry:
+/* 8030C39C 00307FFC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030C3A0 00308000 7C 08 02 A6 */ mflr r0
+/* 8030C3A4 00308004 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030C3A8 00308008 39 21 00 0C */ addi r9, r1, 0xc
+/* 8030C3AC 0030800C 39 41 00 08 */ addi r10, r1, 8
+/* 8030C3B0 00308010 4B FF FC A1 */ bl VFiPFENT_findEntryPos
+/* 8030C3B4 00308014 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030C3B8 00308018 7C 08 03 A6 */ mtlr r0
+/* 8030C3BC 0030801C 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030C3C0 00308020 4E 80 00 20 */ blr
+
+.global VFiPFENT_allocateEntryPos
+VFiPFENT_allocateEntryPos:
+/* 8030C3C4 00308024 94 21 FD 00 */ stwu r1, -0x300(r1)
+/* 8030C3C8 00308028 7C 08 02 A6 */ mflr r0
+/* 8030C3CC 0030802C 90 01 03 04 */ stw r0, 0x304(r1)
+/* 8030C3D0 00308030 39 61 03 00 */ addi r11, r1, 0x300
+/* 8030C3D4 00308034 4B EB AD 2D */ bl _savegpr_17
+/* 8030C3D8 00308038 2C 05 00 00 */ cmpwi r5, 0
+/* 8030C3DC 0030803C 7C 71 1B 78 */ mr r17, r3
+/* 8030C3E0 00308040 7C 92 23 78 */ mr r18, r4
+/* 8030C3E4 00308044 7C B3 2B 78 */ mr r19, r5
+/* 8030C3E8 00308048 7C D4 33 78 */ mr r20, r6
+/* 8030C3EC 0030804C 7C F5 3B 78 */ mr r21, r7
+/* 8030C3F0 00308050 7D 16 43 78 */ mr r22, r8
+/* 8030C3F4 00308054 40 82 00 0C */ bne lbl_8030C400
+/* 8030C3F8 00308058 38 60 00 0A */ li r3, 0xa
+/* 8030C3FC 0030805C 48 00 02 CC */ b lbl_8030C6C8
+lbl_8030C400:
+/* 8030C400 00308060 80 05 00 34 */ lwz r0, 0x34(r5)
+/* 8030C404 00308064 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C408 00308068 40 82 00 0C */ bne lbl_8030C414
+/* 8030C40C 0030806C 38 60 00 0A */ li r3, 0xa
+/* 8030C410 00308070 48 00 02 B8 */ b lbl_8030C6C8
+lbl_8030C414:
+/* 8030C414 00308074 2C 04 00 00 */ cmpwi r4, 0
+/* 8030C418 00308078 40 82 00 0C */ bne lbl_8030C424
+/* 8030C41C 0030807C 38 60 00 0A */ li r3, 0xa
+/* 8030C420 00308080 48 00 02 A8 */ b lbl_8030C6C8
+lbl_8030C424:
+/* 8030C424 00308084 28 04 00 15 */ cmplwi r4, 0x15
+/* 8030C428 00308088 40 81 00 0C */ ble lbl_8030C434
+/* 8030C42C 0030808C 38 60 00 0A */ li r3, 0xa
+/* 8030C430 00308090 48 00 02 98 */ b lbl_8030C6C8
+lbl_8030C434:
+/* 8030C434 00308094 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 8030C438 00308098 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 8030C43C 0030809C 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 8030C440 003080A0 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030C444 003080A4 28 00 00 02 */ cmplwi r0, 2
+/* 8030C448 003080A8 40 82 00 1C */ bne lbl_8030C464
+/* 8030C44C 003080AC 7E A3 AB 78 */ mr r3, r21
+/* 8030C450 003080B0 48 00 BF 79 */ bl func_803183C8
+/* 8030C454 003080B4 28 03 00 01 */ cmplwi r3, 1
+/* 8030C458 003080B8 40 82 00 0C */ bne lbl_8030C464
+/* 8030C45C 003080BC 38 60 00 01 */ li r3, 1
+/* 8030C460 003080C0 48 00 02 68 */ b lbl_8030C6C8
+lbl_8030C464:
+/* 8030C464 003080C4 83 F3 00 34 */ lwz r31, 0x34(r19)
+/* 8030C468 003080C8 3B C0 FF FF */ li r30, -1
+/* 8030C46C 003080CC 3B 00 00 00 */ li r24, 0
+/* 8030C470 003080D0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C474 003080D4 93 D4 00 04 */ stw r30, 4(r20)
+/* 8030C478 003080D8 3A E0 00 00 */ li r23, 0
+/* 8030C47C 003080DC 3B A0 00 00 */ li r29, 0
+/* 8030C480 003080E0 3B 80 FF FF */ li r28, -1
+/* 8030C484 003080E4 93 D4 00 00 */ stw r30, 0(r20)
+/* 8030C488 003080E8 3B 40 FF FF */ li r26, -1
+/* 8030C48C 003080EC 3B 60 FF FF */ li r27, -1
+/* 8030C490 003080F0 3B 20 00 00 */ li r25, 0
+/* 8030C494 003080F4 93 01 00 54 */ stw r24, 0x54(r1)
+/* 8030C498 003080F8 38 80 00 00 */ li r4, 0
+/* 8030C49C 003080FC 93 01 00 10 */ stw r24, 0x10(r1)
+/* 8030C4A0 00308100 80 B3 00 00 */ lwz r5, 0(r19)
+/* 8030C4A4 00308104 80 13 00 04 */ lwz r0, 4(r19)
+/* 8030C4A8 00308108 90 A1 00 18 */ stw r5, 0x18(r1)
+/* 8030C4AC 0030810C 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 8030C4B0 00308110 80 B3 00 08 */ lwz r5, 8(r19)
+/* 8030C4B4 00308114 80 13 00 0C */ lwz r0, 0xc(r19)
+/* 8030C4B8 00308118 90 A1 00 20 */ stw r5, 0x20(r1)
+/* 8030C4BC 0030811C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030C4C0 00308120 80 B3 00 10 */ lwz r5, 0x10(r19)
+/* 8030C4C4 00308124 80 13 00 14 */ lwz r0, 0x14(r19)
+/* 8030C4C8 00308128 90 A1 00 28 */ stw r5, 0x28(r1)
+/* 8030C4CC 0030812C 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 8030C4D0 00308130 80 B3 00 18 */ lwz r5, 0x18(r19)
+/* 8030C4D4 00308134 80 13 00 1C */ lwz r0, 0x1c(r19)
+/* 8030C4D8 00308138 90 A1 00 30 */ stw r5, 0x30(r1)
+/* 8030C4DC 0030813C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030C4E0 00308140 80 B3 00 20 */ lwz r5, 0x20(r19)
+/* 8030C4E4 00308144 80 13 00 24 */ lwz r0, 0x24(r19)
+/* 8030C4E8 00308148 90 A1 00 38 */ stw r5, 0x38(r1)
+/* 8030C4EC 0030814C 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 8030C4F0 00308150 80 B3 00 28 */ lwz r5, 0x28(r19)
+/* 8030C4F4 00308154 80 13 00 2C */ lwz r0, 0x2c(r19)
+/* 8030C4F8 00308158 90 A1 00 40 */ stw r5, 0x40(r1)
+/* 8030C4FC 0030815C 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030C500 00308160 80 B3 00 30 */ lwz r5, 0x30(r19)
+/* 8030C504 00308164 80 13 00 34 */ lwz r0, 0x34(r19)
+/* 8030C508 00308168 90 A1 00 48 */ stw r5, 0x48(r1)
+/* 8030C50C 0030816C 90 01 00 4C */ stw r0, 0x4c(r1)
+/* 8030C510 00308170 48 00 19 E9 */ bl VFiPFENT_ITER_IteratorInitialize
+lbl_8030C514:
+/* 8030C514 00308174 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C518 00308178 41 82 00 10 */ beq lbl_8030C528
+/* 8030C51C 0030817C 2C 03 00 10 */ cmpwi r3, 0x10
+/* 8030C520 00308180 41 82 01 80 */ beq lbl_8030C6A0
+/* 8030C524 00308184 48 00 01 A4 */ b lbl_8030C6C8
+lbl_8030C528:
+/* 8030C528 00308188 80 61 00 54 */ lwz r3, 0x54(r1)
+/* 8030C52C 0030818C 3C 03 00 01 */ addis r0, r3, 1
+/* 8030C530 00308190 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030C534 00308194 41 82 01 6C */ beq lbl_8030C6A0
+/* 8030C538 00308198 2C 19 00 00 */ cmpwi r25, 0
+/* 8030C53C 0030819C 40 82 00 18 */ bne lbl_8030C554
+/* 8030C540 003081A0 2C 18 00 00 */ cmpwi r24, 0
+/* 8030C544 003081A4 40 82 00 10 */ bne lbl_8030C554
+/* 8030C548 003081A8 A3 A1 00 58 */ lhz r29, 0x58(r1)
+/* 8030C54C 003081AC 7C 7E 1B 78 */ mr r30, r3
+/* 8030C550 003081B0 7C 7C 1B 78 */ mr r28, r3
+lbl_8030C554:
+/* 8030C554 003081B4 2C 19 00 00 */ cmpwi r25, 0
+/* 8030C558 003081B8 40 82 00 58 */ bne lbl_8030C5B0
+/* 8030C55C 003081BC 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 8030C560 003081C0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C564 003081C4 41 82 00 0C */ beq lbl_8030C570
+/* 8030C568 003081C8 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030C56C 003081CC 40 82 00 38 */ bne lbl_8030C5A4
+lbl_8030C570:
+/* 8030C570 003081D0 7C 1C 18 40 */ cmplw r28, r3
+/* 8030C574 003081D4 41 82 00 28 */ beq lbl_8030C59C
+/* 8030C578 003081D8 38 1B 00 01 */ addi r0, r27, 1
+/* 8030C57C 003081DC 7C 00 00 34 */ cntlzw r0, r0
+/* 8030C580 003081E0 54 00 D9 7F */ rlwinm. r0, r0, 0x1b, 5, 0x1f
+/* 8030C584 003081E4 41 82 00 08 */ beq lbl_8030C58C
+/* 8030C588 003081E8 7C 7B 1B 78 */ mr r27, r3
+lbl_8030C58C:
+/* 8030C58C 003081EC 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C590 003081F0 40 82 00 08 */ bne lbl_8030C598
+/* 8030C594 003081F4 7C 7A 1B 78 */ mr r26, r3
+lbl_8030C598:
+/* 8030C598 003081F8 7C 7C 1B 78 */ mr r28, r3
+lbl_8030C59C:
+/* 8030C59C 003081FC 3B 18 00 01 */ addi r24, r24, 1
+/* 8030C5A0 00308200 48 00 00 10 */ b lbl_8030C5B0
+lbl_8030C5A4:
+/* 8030C5A4 00308204 3B 00 00 00 */ li r24, 0
+/* 8030C5A8 00308208 3B 60 FF FF */ li r27, -1
+/* 8030C5AC 0030820C 3B 40 FF FF */ li r26, -1
+lbl_8030C5B0:
+/* 8030C5B0 00308210 7C 18 90 40 */ cmplw r24, r18
+/* 8030C5B4 00308214 41 80 00 20 */ blt lbl_8030C5D4
+/* 8030C5B8 00308218 2C 19 00 00 */ cmpwi r25, 0
+/* 8030C5BC 0030821C 40 82 00 0C */ bne lbl_8030C5C8
+/* 8030C5C0 00308220 82 E1 00 10 */ lwz r23, 0x10(r1)
+/* 8030C5C4 00308224 3B 20 00 01 */ li r25, 1
+lbl_8030C5C8:
+/* 8030C5C8 00308228 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 8030C5CC 0030822C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C5D0 00308230 41 82 00 D0 */ beq lbl_8030C6A0
+lbl_8030C5D4:
+/* 8030C5D4 00308234 88 01 00 5C */ lbz r0, 0x5c(r1)
+/* 8030C5D8 00308238 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C5DC 0030823C 41 82 00 64 */ beq lbl_8030C640
+/* 8030C5E0 00308240 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030C5E4 00308244 41 82 00 5C */ beq lbl_8030C640
+/* 8030C5E8 00308248 7E A5 AB 78 */ mr r5, r21
+/* 8030C5EC 0030824C 38 61 00 80 */ addi r3, r1, 0x80
+/* 8030C5F0 00308250 38 81 00 10 */ addi r4, r1, 0x10
+/* 8030C5F4 00308254 39 01 00 08 */ addi r8, r1, 8
+/* 8030C5F8 00308258 38 C0 00 7F */ li r6, 0x7f
+/* 8030C5FC 0030825C 38 E0 00 00 */ li r7, 0
+/* 8030C600 00308260 4B FF EE 81 */ bl VFiPFENT_getEntry
+/* 8030C604 00308264 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C608 00308268 40 82 00 38 */ bne lbl_8030C640
+/* 8030C60C 0030826C 38 00 00 48 */ li r0, 0x48
+/* 8030C610 00308270 38 B1 FF FC */ addi r5, r17, -4
+/* 8030C614 00308274 38 81 00 7C */ addi r4, r1, 0x7c
+/* 8030C618 00308278 7C 09 03 A6 */ mtctr r0
+lbl_8030C61C:
+/* 8030C61C 0030827C 80 64 00 04 */ lwz r3, 4(r4)
+/* 8030C620 00308280 84 04 00 08 */ lwzu r0, 8(r4)
+/* 8030C624 00308284 90 65 00 04 */ stw r3, 4(r5)
+/* 8030C628 00308288 94 05 00 08 */ stwu r0, 8(r5)
+/* 8030C62C 0030828C 42 00 FF F0 */ bdnz lbl_8030C61C
+/* 8030C630 00308290 80 13 00 34 */ lwz r0, 0x34(r19)
+/* 8030C634 00308294 38 60 00 08 */ li r3, 8
+/* 8030C638 00308298 90 11 02 2C */ stw r0, 0x22c(r17)
+/* 8030C63C 0030829C 48 00 00 8C */ b lbl_8030C6C8
+lbl_8030C640:
+/* 8030C640 003082A0 A0 61 00 58 */ lhz r3, 0x58(r1)
+/* 8030C644 003082A4 A0 1F 00 00 */ lhz r0, 0(r31)
+/* 8030C648 003082A8 38 63 00 20 */ addi r3, r3, 0x20
+/* 8030C64C 003082AC 7C 03 00 00 */ cmpw r3, r0
+/* 8030C650 003082B0 40 82 00 40 */ bne lbl_8030C690
+/* 8030C654 003082B4 80 81 00 50 */ lwz r4, 0x50(r1)
+/* 8030C658 003082B8 7E 63 9B 78 */ mr r3, r19
+/* 8030C65C 003082BC 38 C1 00 0C */ addi r6, r1, 0xc
+/* 8030C660 003082C0 38 A0 00 00 */ li r5, 0
+/* 8030C664 003082C4 38 84 00 01 */ addi r4, r4, 1
+/* 8030C668 003082C8 48 00 39 01 */ bl VFiPFFAT_GetSectorSpecified
+/* 8030C66C 003082CC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C670 003082D0 41 82 00 08 */ beq lbl_8030C678
+/* 8030C674 003082D4 48 00 00 54 */ b lbl_8030C6C8
+lbl_8030C678:
+/* 8030C678 003082D8 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030C67C 003082DC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030C680 003082E0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030C684 003082E4 40 82 00 0C */ bne lbl_8030C690
+/* 8030C688 003082E8 28 19 00 01 */ cmplwi r25, 1
+/* 8030C68C 003082EC 41 82 00 14 */ beq lbl_8030C6A0
+lbl_8030C690:
+/* 8030C690 003082F0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C694 003082F4 38 80 00 01 */ li r4, 1
+/* 8030C698 003082F8 48 00 1A 71 */ bl VFiPFENT_ITER_Advance
+/* 8030C69C 003082FC 4B FF FE 78 */ b lbl_8030C514
+lbl_8030C6A0:
+/* 8030C6A0 00308300 2C 19 00 00 */ cmpwi r25, 0
+/* 8030C6A4 00308304 40 82 00 0C */ bne lbl_8030C6B0
+/* 8030C6A8 00308308 38 60 00 05 */ li r3, 5
+/* 8030C6AC 0030830C 48 00 00 1C */ b lbl_8030C6C8
+lbl_8030C6B0:
+/* 8030C6B0 00308310 93 74 00 00 */ stw r27, 0(r20)
+/* 8030C6B4 00308314 38 60 00 00 */ li r3, 0
+/* 8030C6B8 00308318 93 54 00 04 */ stw r26, 4(r20)
+/* 8030C6BC 0030831C 93 D1 02 38 */ stw r30, 0x238(r17)
+/* 8030C6C0 00308320 B3 B1 02 3C */ sth r29, 0x23c(r17)
+/* 8030C6C4 00308324 92 F6 00 00 */ stw r23, 0(r22)
+lbl_8030C6C8:
+/* 8030C6C8 00308328 39 61 03 00 */ addi r11, r1, 0x300
+/* 8030C6CC 0030832C 4B EB AA 81 */ bl _restgpr_17
+/* 8030C6D0 00308330 80 01 03 04 */ lwz r0, 0x304(r1)
+/* 8030C6D4 00308334 7C 08 03 A6 */ mtlr r0
+/* 8030C6D8 00308338 38 21 03 00 */ addi r1, r1, 0x300
+/* 8030C6DC 0030833C 4E 80 00 20 */ blr
+
+.global VFiPFENT_allocateEntry
+VFiPFENT_allocateEntry:
+/* 8030C6E0 00308340 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030C6E4 00308344 7C 08 02 A6 */ mflr r0
+/* 8030C6E8 00308348 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030C6EC 0030834C 39 01 00 08 */ addi r8, r1, 8
+/* 8030C6F0 00308350 4B FF FC D5 */ bl VFiPFENT_allocateEntryPos
+/* 8030C6F4 00308354 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030C6F8 00308358 7C 08 03 A6 */ mtlr r0
+/* 8030C6FC 0030835C 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030C700 00308360 4E 80 00 20 */ blr
+
+.global VFiPFENT_GetRootDir
+VFiPFENT_GetRootDir:
+/* 8030C704 00308364 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C708 00308368 40 82 00 0C */ bne lbl_8030C714
+/* 8030C70C 0030836C 38 60 00 0A */ li r3, 0xa
+/* 8030C710 00308370 4E 80 00 20 */ blr
+lbl_8030C714:
+/* 8030C714 00308374 2C 04 00 00 */ cmpwi r4, 0
+/* 8030C718 00308378 40 82 00 0C */ bne lbl_8030C724
+/* 8030C71C 0030837C 38 60 00 0A */ li r3, 0xa
+/* 8030C720 00308380 4E 80 00 20 */ blr
+lbl_8030C724:
+/* 8030C724 00308384 A0 03 18 78 */ lhz r0, 0x1878(r3)
+/* 8030C728 00308388 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
+/* 8030C72C 0030838C 40 82 00 0C */ bne lbl_8030C738
+/* 8030C730 00308390 38 60 00 09 */ li r3, 9
+/* 8030C734 00308394 4E 80 00 20 */ blr
+lbl_8030C738:
+/* 8030C738 00308398 39 00 00 00 */ li r8, 0
+/* 8030C73C 0030839C 39 20 00 5C */ li r9, 0x5c
+/* 8030C740 003083A0 38 E0 00 10 */ li r7, 0x10
+/* 8030C744 003083A4 38 C0 00 03 */ li r6, 3
+/* 8030C748 003083A8 38 A0 00 01 */ li r5, 1
+/* 8030C74C 003083AC 38 00 FF FF */ li r0, -1
+/* 8030C750 003083B0 90 64 02 2C */ stw r3, 0x22c(r4)
+/* 8030C754 003083B4 38 60 00 00 */ li r3, 0
+/* 8030C758 003083B8 B1 24 00 00 */ sth r9, 0(r4)
+/* 8030C75C 003083BC B1 04 00 02 */ sth r8, 2(r4)
+/* 8030C760 003083C0 99 04 02 0A */ stb r8, 0x20a(r4)
+/* 8030C764 003083C4 99 04 02 0B */ stb r8, 0x20b(r4)
+/* 8030C768 003083C8 99 04 02 0C */ stb r8, 0x20c(r4)
+/* 8030C76C 003083CC 99 24 02 0E */ stb r9, 0x20e(r4)
+/* 8030C770 003083D0 99 04 02 0F */ stb r8, 0x20f(r4)
+/* 8030C774 003083D4 99 04 02 1B */ stb r8, 0x21b(r4)
+/* 8030C778 003083D8 98 E4 02 1C */ stb r7, 0x21c(r4)
+/* 8030C77C 003083DC 99 04 02 1D */ stb r8, 0x21d(r4)
+/* 8030C780 003083E0 B1 04 02 1E */ sth r8, 0x21e(r4)
+/* 8030C784 003083E4 B1 04 02 20 */ sth r8, 0x220(r4)
+/* 8030C788 003083E8 B1 04 02 22 */ sth r8, 0x222(r4)
+/* 8030C78C 003083EC B1 04 02 24 */ sth r8, 0x224(r4)
+/* 8030C790 003083F0 B1 04 02 26 */ sth r8, 0x226(r4)
+/* 8030C794 003083F4 91 04 02 28 */ stw r8, 0x228(r4)
+/* 8030C798 003083F8 90 C4 02 30 */ stw r6, 0x230(r4)
+/* 8030C79C 003083FC 90 A4 02 34 */ stw r5, 0x234(r4)
+/* 8030C7A0 00308400 90 04 02 38 */ stw r0, 0x238(r4)
+/* 8030C7A4 00308404 B1 04 02 3C */ sth r8, 0x23c(r4)
+/* 8030C7A8 00308408 4E 80 00 20 */ blr
+
+.global VFiPFENT_MakeRootDir
+VFiPFENT_MakeRootDir:
+/* 8030C7AC 0030840C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030C7B0 00308410 7C 08 02 A6 */ mflr r0
+/* 8030C7B4 00308414 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C7B8 00308418 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030C7BC 0030841C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030C7C0 00308420 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030C7C4 00308424 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030C7C8 00308428 7C 7D 1B 78 */ mr r29, r3
+/* 8030C7CC 0030842C 40 82 00 0C */ bne lbl_8030C7D8
+/* 8030C7D0 00308430 38 60 00 0A */ li r3, 0xa
+/* 8030C7D4 00308434 48 00 01 00 */ b lbl_8030C8D4
+lbl_8030C7D8:
+/* 8030C7D8 00308438 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030C7DC 0030843C 2C 00 00 02 */ cmpwi r0, 2
+/* 8030C7E0 00308440 41 82 00 14 */ beq lbl_8030C7F4
+/* 8030C7E4 00308444 40 80 00 D4 */ bge lbl_8030C8B8
+/* 8030C7E8 00308448 2C 00 00 00 */ cmpwi r0, 0
+/* 8030C7EC 0030844C 40 80 00 10 */ bge lbl_8030C7FC
+/* 8030C7F0 00308450 48 00 00 C8 */ b lbl_8030C8B8
+lbl_8030C7F4:
+/* 8030C7F4 00308454 48 00 43 D1 */ bl VFiPFFAT_MakeRootDir
+/* 8030C7F8 00308458 48 00 00 C8 */ b lbl_8030C8C0
+lbl_8030C7FC:
+/* 8030C7FC 0030845C 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030C800 00308460 38 80 FF FF */ li r4, -1
+/* 8030C804 00308464 4B FF DE B5 */ bl VFiPFCACHE_AllocateDataPage
+/* 8030C808 00308468 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C80C 0030846C 41 82 00 08 */ beq lbl_8030C814
+/* 8030C810 00308470 48 00 00 C4 */ b lbl_8030C8D4
+lbl_8030C814:
+/* 8030C814 00308474 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030C818 00308478 38 80 00 00 */ li r4, 0
+/* 8030C81C 0030847C A0 BD 00 00 */ lhz r5, 0(r29)
+/* 8030C820 00308480 80 63 00 08 */ lwz r3, 8(r3)
+/* 8030C824 00308484 4B FF 87 B1 */ bl VFipf_memset
+/* 8030C828 00308488 83 DD 00 2C */ lwz r30, 0x2c(r29)
+/* 8030C82C 0030848C 48 00 00 70 */ b lbl_8030C89C
+lbl_8030C830:
+/* 8030C830 00308490 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030C834 00308494 7F A3 EB 78 */ mr r3, r29
+/* 8030C838 00308498 A0 FD 00 00 */ lhz r7, 0(r29)
+/* 8030C83C 0030849C 7F C5 F3 78 */ mr r5, r30
+/* 8030C840 003084A0 80 84 00 08 */ lwz r4, 8(r4)
+/* 8030C844 003084A4 39 01 00 08 */ addi r8, r1, 8
+/* 8030C848 003084A8 38 C0 00 00 */ li r6, 0
+/* 8030C84C 003084AC 39 20 00 00 */ li r9, 0
+/* 8030C850 003084B0 48 00 C5 99 */ bl func_80318DE8
+/* 8030C854 003084B4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C858 003084B8 7C 7F 1B 78 */ mr r31, r3
+/* 8030C85C 003084BC 41 82 00 18 */ beq lbl_8030C874
+/* 8030C860 003084C0 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030C864 003084C4 7F A3 EB 78 */ mr r3, r29
+/* 8030C868 003084C8 4B FF DF 55 */ bl VFiPFCACHE_FreeDataPage
+/* 8030C86C 003084CC 7F E3 FB 78 */ mr r3, r31
+/* 8030C870 003084D0 48 00 00 64 */ b lbl_8030C8D4
+lbl_8030C874:
+/* 8030C874 003084D4 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030C878 003084D8 A0 1D 00 00 */ lhz r0, 0(r29)
+/* 8030C87C 003084DC 7C 03 00 40 */ cmplw r3, r0
+/* 8030C880 003084E0 41 82 00 18 */ beq lbl_8030C898
+/* 8030C884 003084E4 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030C888 003084E8 7F A3 EB 78 */ mr r3, r29
+/* 8030C88C 003084EC 4B FF DF 31 */ bl VFiPFCACHE_FreeDataPage
+/* 8030C890 003084F0 38 60 00 11 */ li r3, 0x11
+/* 8030C894 003084F4 48 00 00 40 */ b lbl_8030C8D4
+lbl_8030C898:
+/* 8030C898 003084F8 3B DE 00 01 */ addi r30, r30, 1
+lbl_8030C89C:
+/* 8030C89C 003084FC 80 1D 00 30 */ lwz r0, 0x30(r29)
+/* 8030C8A0 00308500 7C 1E 00 40 */ cmplw r30, r0
+/* 8030C8A4 00308504 41 80 FF 8C */ blt lbl_8030C830
+/* 8030C8A8 00308508 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030C8AC 0030850C 7F A3 EB 78 */ mr r3, r29
+/* 8030C8B0 00308510 4B FF DF 0D */ bl VFiPFCACHE_FreeDataPage
+/* 8030C8B4 00308514 48 00 00 0C */ b lbl_8030C8C0
+lbl_8030C8B8:
+/* 8030C8B8 00308518 38 60 00 07 */ li r3, 7
+/* 8030C8BC 0030851C 48 00 00 18 */ b lbl_8030C8D4
+lbl_8030C8C0:
+/* 8030C8C0 00308520 3C 60 80 44 */ lis r3, lbl_804465D8@ha
+/* 8030C8C4 00308524 7F A4 EB 78 */ mr r4, r29
+/* 8030C8C8 00308528 38 63 65 D8 */ addi r3, r3, lbl_804465D8@l
+/* 8030C8CC 0030852C 48 00 D2 E1 */ bl func_80319BAC
+/* 8030C8D0 00308530 38 60 00 00 */ li r3, 0
+lbl_8030C8D4:
+/* 8030C8D4 00308534 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030C8D8 00308538 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030C8DC 0030853C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030C8E0 00308540 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030C8E4 00308544 7C 08 03 A6 */ mtlr r0
+/* 8030C8E8 00308548 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030C8EC 0030854C 4E 80 00 20 */ blr
+
+.global VFiPFENT_updateEntry
+VFiPFENT_updateEntry:
+/* 8030C8F0 00308550 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030C8F4 00308554 7C 08 02 A6 */ mflr r0
+/* 8030C8F8 00308558 2C 03 00 00 */ cmpwi r3, 0
+/* 8030C8FC 0030855C 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030C900 00308560 93 E1 00 3C */ stw r31, 0x3c(r1)
+/* 8030C904 00308564 93 C1 00 38 */ stw r30, 0x38(r1)
+/* 8030C908 00308568 7C 7E 1B 78 */ mr r30, r3
+/* 8030C90C 0030856C 93 A1 00 34 */ stw r29, 0x34(r1)
+/* 8030C910 00308570 40 82 00 0C */ bne lbl_8030C91C
+/* 8030C914 00308574 38 60 00 0A */ li r3, 0xa
+/* 8030C918 00308578 48 00 01 68 */ b lbl_8030CA80
+lbl_8030C91C:
+/* 8030C91C 0030857C 83 E3 02 2C */ lwz r31, 0x22c(r3)
+/* 8030C920 00308580 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030C924 00308584 40 82 00 0C */ bne lbl_8030C930
+/* 8030C928 00308588 38 60 00 0A */ li r3, 0xa
+/* 8030C92C 0030858C 48 00 01 54 */ b lbl_8030CA80
+lbl_8030C930:
+/* 8030C930 00308590 A0 BF 00 24 */ lhz r5, 0x24(r31)
+/* 8030C934 00308594 80 1F 00 30 */ lwz r0, 0x30(r31)
+/* 8030C938 00308598 80 C3 02 38 */ lwz r6, 0x238(r3)
+/* 8030C93C 0030859C 7C 05 00 50 */ subf r0, r5, r0
+/* 8030C940 003085A0 7C 06 00 40 */ cmplw r6, r0
+/* 8030C944 003085A4 40 80 00 0C */ bge lbl_8030C950
+/* 8030C948 003085A8 38 60 00 1C */ li r3, 0x1c
+/* 8030C94C 003085AC 48 00 01 34 */ b lbl_8030CA80
+lbl_8030C950:
+/* 8030C950 003085B0 80 1F 00 08 */ lwz r0, 8(r31)
+/* 8030C954 003085B4 7C 06 00 40 */ cmplw r6, r0
+/* 8030C958 003085B8 41 80 00 0C */ blt lbl_8030C964
+/* 8030C95C 003085BC 38 60 00 10 */ li r3, 0x10
+/* 8030C960 003085C0 48 00 01 20 */ b lbl_8030CA80
+lbl_8030C964:
+/* 8030C964 003085C4 80 03 02 34 */ lwz r0, 0x234(r3)
+/* 8030C968 003085C8 28 00 00 01 */ cmplwi r0, 1
+/* 8030C96C 003085CC 40 82 00 0C */ bne lbl_8030C978
+/* 8030C970 003085D0 38 60 00 0E */ li r3, 0xe
+/* 8030C974 003085D4 48 00 01 0C */ b lbl_8030CA80
+lbl_8030C978:
+/* 8030C978 003085D8 28 04 00 01 */ cmplwi r4, 1
+/* 8030C97C 003085DC 40 82 00 10 */ bne lbl_8030C98C
+/* 8030C980 003085E0 88 03 02 1C */ lbz r0, 0x21c(r3)
+/* 8030C984 003085E4 60 00 00 20 */ ori r0, r0, 0x20
+/* 8030C988 003085E8 98 03 02 1C */ stb r0, 0x21c(r3)
+lbl_8030C98C:
+/* 8030C98C 003085EC 88 BE 02 1C */ lbz r5, 0x21c(r30)
+/* 8030C990 003085F0 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030C994 003085F4 38 9E 02 0E */ addi r4, r30, 0x20e
+/* 8030C998 003085F8 48 00 A8 B1 */ bl func_80317248
+/* 8030C99C 003085FC 88 01 00 10 */ lbz r0, 0x10(r1)
+/* 8030C9A0 00308600 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030C9A4 00308604 40 82 00 0C */ bne lbl_8030C9B0
+/* 8030C9A8 00308608 38 00 00 05 */ li r0, 5
+/* 8030C9AC 0030860C 98 01 00 10 */ stb r0, 0x10(r1)
+lbl_8030C9B0:
+/* 8030C9B0 00308610 88 1E 02 1C */ lbz r0, 0x21c(r30)
+/* 8030C9B4 00308614 7F E3 FB 78 */ mr r3, r31
+/* 8030C9B8 00308618 3B A1 00 1E */ addi r29, r1, 0x1e
+/* 8030C9BC 0030861C 39 81 00 20 */ addi r12, r1, 0x20
+/* 8030C9C0 00308620 98 01 00 1B */ stb r0, 0x1b(r1)
+/* 8030C9C4 00308624 39 61 00 22 */ addi r11, r1, 0x22
+/* 8030C9C8 00308628 39 41 00 26 */ addi r10, r1, 0x26
+/* 8030C9CC 0030862C 38 C1 00 28 */ addi r6, r1, 0x28
+/* 8030C9D0 00308630 88 FE 02 1B */ lbz r7, 0x21b(r30)
+/* 8030C9D4 00308634 38 A1 00 24 */ addi r5, r1, 0x24
+/* 8030C9D8 00308638 38 01 00 2A */ addi r0, r1, 0x2a
+/* 8030C9DC 0030863C 38 81 00 10 */ addi r4, r1, 0x10
+/* 8030C9E0 00308640 98 E1 00 1C */ stb r7, 0x1c(r1)
+/* 8030C9E4 00308644 39 01 00 08 */ addi r8, r1, 8
+/* 8030C9E8 00308648 38 E0 00 20 */ li r7, 0x20
+/* 8030C9EC 0030864C 39 20 00 00 */ li r9, 0
+/* 8030C9F0 00308650 8B FE 02 1D */ lbz r31, 0x21d(r30)
+/* 8030C9F4 00308654 9B E1 00 1D */ stb r31, 0x1d(r1)
+/* 8030C9F8 00308658 A3 FE 02 1E */ lhz r31, 0x21e(r30)
+/* 8030C9FC 0030865C 7F E0 EF 2C */ sthbrx r31, 0, r29
+/* 8030CA00 00308660 A3 BE 02 20 */ lhz r29, 0x220(r30)
+/* 8030CA04 00308664 7F A0 67 2C */ sthbrx r29, 0, r12
+/* 8030CA08 00308668 A1 9E 02 22 */ lhz r12, 0x222(r30)
+/* 8030CA0C 0030866C 7D 80 5F 2C */ sthbrx r12, 0, r11
+/* 8030CA10 00308670 A1 7E 02 24 */ lhz r11, 0x224(r30)
+/* 8030CA14 00308674 7D 60 57 2C */ sthbrx r11, 0, r10
+/* 8030CA18 00308678 A1 5E 02 26 */ lhz r10, 0x226(r30)
+/* 8030CA1C 0030867C 7D 40 37 2C */ sthbrx r10, 0, r6
+/* 8030CA20 00308680 80 DE 02 34 */ lwz r6, 0x234(r30)
+/* 8030CA24 00308684 54 C6 84 3E */ srwi r6, r6, 0x10
+/* 8030CA28 00308688 7C C0 2F 2C */ sthbrx r6, 0, r5
+/* 8030CA2C 0030868C 80 BE 02 34 */ lwz r5, 0x234(r30)
+/* 8030CA30 00308690 7C A0 07 2C */ sthbrx r5, 0, r0
+/* 8030CA34 00308694 80 DE 02 28 */ lwz r6, 0x228(r30)
+/* 8030CA38 00308698 54 C5 42 1E */ rlwinm r5, r6, 8, 8, 0xf
+/* 8030CA3C 0030869C 54 C0 C4 2E */ rlwinm r0, r6, 0x18, 0x10, 0x17
+/* 8030CA40 003086A0 50 C5 C0 0E */ rlwimi r5, r6, 0x18, 0, 7
+/* 8030CA44 003086A4 50 C0 46 3E */ rlwimi r0, r6, 8, 0x18, 0x1f
+/* 8030CA48 003086A8 7C A0 03 78 */ or r0, r5, r0
+/* 8030CA4C 003086AC 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 8030CA50 003086B0 80 BE 02 38 */ lwz r5, 0x238(r30)
+/* 8030CA54 003086B4 A0 DE 02 3C */ lhz r6, 0x23c(r30)
+/* 8030CA58 003086B8 48 00 C3 91 */ bl func_80318DE8
+/* 8030CA5C 003086BC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CA60 003086C0 41 82 00 08 */ beq lbl_8030CA68
+/* 8030CA64 003086C4 48 00 00 1C */ b lbl_8030CA80
+lbl_8030CA68:
+/* 8030CA68 003086C8 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030CA6C 003086CC 38 64 FF E0 */ addi r3, r4, -32
+/* 8030CA70 003086D0 20 04 00 20 */ subfic r0, r4, 0x20
+/* 8030CA74 003086D4 7C 60 03 78 */ or r0, r3, r0
+/* 8030CA78 003086D8 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030CA7C 003086DC 70 03 00 11 */ andi. r3, r0, 0x11
+lbl_8030CA80:
+/* 8030CA80 003086E0 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030CA84 003086E4 83 E1 00 3C */ lwz r31, 0x3c(r1)
+/* 8030CA88 003086E8 83 C1 00 38 */ lwz r30, 0x38(r1)
+/* 8030CA8C 003086EC 83 A1 00 34 */ lwz r29, 0x34(r1)
+/* 8030CA90 003086F0 7C 08 03 A6 */ mtlr r0
+/* 8030CA94 003086F4 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030CA98 003086F8 4E 80 00 20 */ blr
+
+.global VFiPFENT_AdjustSFN
+VFiPFENT_AdjustSFN:
+/* 8030CA9C 003086FC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030CAA0 00308700 7C 08 02 A6 */ mflr r0
+/* 8030CAA4 00308704 38 A4 00 01 */ addi r5, r4, 1
+/* 8030CAA8 00308708 38 E0 00 01 */ li r7, 1
+/* 8030CAAC 0030870C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030CAB0 00308710 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030CAB4 00308714 7C 9F 23 78 */ mr r31, r4
+/* 8030CAB8 00308718 48 00 00 0C */ b lbl_8030CAC4
+lbl_8030CABC:
+/* 8030CABC 0030871C 38 E7 00 01 */ addi r7, r7, 1
+/* 8030CAC0 00308720 38 A5 00 01 */ addi r5, r5, 1
+lbl_8030CAC4:
+/* 8030CAC4 00308724 88 C5 00 00 */ lbz r6, 0(r5)
+/* 8030CAC8 00308728 7C C0 07 74 */ extsb r0, r6
+/* 8030CACC 0030872C 2C 00 00 7E */ cmpwi r0, 0x7e
+/* 8030CAD0 00308730 41 82 00 14 */ beq lbl_8030CAE4
+/* 8030CAD4 00308734 2C 00 00 00 */ cmpwi r0, 0
+/* 8030CAD8 00308738 41 82 00 0C */ beq lbl_8030CAE4
+/* 8030CADC 0030873C 28 07 00 07 */ cmplwi r7, 7
+/* 8030CAE0 00308740 41 80 FF DC */ blt lbl_8030CABC
+lbl_8030CAE4:
+/* 8030CAE4 00308744 28 07 00 07 */ cmplwi r7, 7
+/* 8030CAE8 00308748 40 80 00 78 */ bge lbl_8030CB60
+/* 8030CAEC 0030874C 7C C0 07 74 */ extsb r0, r6
+/* 8030CAF0 00308750 2C 00 00 7E */ cmpwi r0, 0x7e
+/* 8030CAF4 00308754 40 82 00 6C */ bne lbl_8030CB60
+/* 8030CAF8 00308758 38 E7 00 01 */ addi r7, r7, 1
+/* 8030CAFC 0030875C 7C 84 3A 14 */ add r4, r4, r7
+/* 8030CB00 00308760 48 00 00 08 */ b lbl_8030CB08
+lbl_8030CB04:
+/* 8030CB04 00308764 38 84 00 01 */ addi r4, r4, 1
+lbl_8030CB08:
+/* 8030CB08 00308768 88 A4 00 00 */ lbz r5, 0(r4)
+/* 8030CB0C 0030876C 7C A0 07 74 */ extsb r0, r5
+/* 8030CB10 00308770 2C 00 00 30 */ cmpwi r0, 0x30
+/* 8030CB14 00308774 41 80 00 0C */ blt lbl_8030CB20
+/* 8030CB18 00308778 2C 00 00 39 */ cmpwi r0, 0x39
+/* 8030CB1C 0030877C 40 81 FF E8 */ ble lbl_8030CB04
+lbl_8030CB20:
+/* 8030CB20 00308780 7C A0 07 74 */ extsb r0, r5
+/* 8030CB24 00308784 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 8030CB28 00308788 41 82 00 0C */ beq lbl_8030CB34
+/* 8030CB2C 0030878C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030CB30 00308790 40 82 00 30 */ bne lbl_8030CB60
+lbl_8030CB34:
+/* 8030CB34 00308794 7F E4 FB 78 */ mr r4, r31
+/* 8030CB38 00308798 38 A1 00 08 */ addi r5, r1, 8
+/* 8030CB3C 0030879C 4B FF EF 55 */ bl VFiPFENT_findEmptyTailSFN
+/* 8030CB40 003087A0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CB44 003087A4 41 82 00 08 */ beq lbl_8030CB4C
+/* 8030CB48 003087A8 48 00 00 1C */ b lbl_8030CB64
+lbl_8030CB4C:
+/* 8030CB4C 003087AC 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030CB50 003087B0 28 04 00 01 */ cmplwi r4, 1
+/* 8030CB54 003087B4 41 82 00 0C */ beq lbl_8030CB60
+/* 8030CB58 003087B8 7F E3 FB 78 */ mr r3, r31
+/* 8030CB5C 003087BC 48 00 B6 91 */ bl func_803181EC
+lbl_8030CB60:
+/* 8030CB60 003087C0 38 60 00 00 */ li r3, 0
+lbl_8030CB64:
+/* 8030CB64 003087C4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030CB68 003087C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030CB6C 003087CC 7C 08 03 A6 */ mtlr r0
+/* 8030CB70 003087D0 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030CB74 003087D4 4E 80 00 20 */ blr
+
+.global VFiPFENT_getcurrentDateTimeForEnt
+VFiPFENT_getcurrentDateTimeForEnt:
+/* 8030CB78 003087D8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030CB7C 003087DC 7C 08 02 A6 */ mflr r0
+/* 8030CB80 003087E0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030CB84 003087E4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030CB88 003087E8 7C 9F 23 78 */ mr r31, r4
+/* 8030CB8C 003087EC 38 81 00 08 */ addi r4, r1, 8
+/* 8030CB90 003087F0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030CB94 003087F4 7C 7E 1B 78 */ mr r30, r3
+/* 8030CB98 003087F8 38 61 00 10 */ addi r3, r1, 0x10
+/* 8030CB9C 003087FC 48 00 D8 A1 */ bl func_8031A43C
+/* 8030CBA0 00308800 A0 61 00 10 */ lhz r3, 0x10(r1)
+/* 8030CBA4 00308804 A0 81 00 14 */ lhz r4, 0x14(r1)
+/* 8030CBA8 00308808 38 03 F8 44 */ addi r0, r3, -1980
+/* 8030CBAC 0030880C A0 61 00 12 */ lhz r3, 0x12(r1)
+/* 8030CBB0 00308810 54 00 4C 2C */ rlwinm r0, r0, 9, 0x10, 0x16
+/* 8030CBB4 00308814 50 60 2D F4 */ rlwimi r0, r3, 5, 0x17, 0x1a
+/* 8030CBB8 00308818 50 80 06 FE */ rlwimi r0, r4, 0, 0x1b, 0x1f
+/* 8030CBBC 0030881C B0 1E 00 00 */ sth r0, 0(r30)
+/* 8030CBC0 00308820 A0 01 00 08 */ lhz r0, 8(r1)
+/* 8030CBC4 00308824 A0 81 00 0C */ lhz r4, 0xc(r1)
+/* 8030CBC8 00308828 A0 61 00 0A */ lhz r3, 0xa(r1)
+/* 8030CBCC 0030882C 54 00 5C 28 */ rlwinm r0, r0, 0xb, 0x10, 0x14
+/* 8030CBD0 00308830 50 60 2D 74 */ rlwimi r0, r3, 5, 0x15, 0x1a
+/* 8030CBD4 00308834 50 80 FE FE */ rlwimi r0, r4, 0x1f, 0x1b, 0x1f
+/* 8030CBD8 00308838 B0 1F 00 00 */ sth r0, 0(r31)
+/* 8030CBDC 0030883C A0 01 00 0E */ lhz r0, 0xe(r1)
+/* 8030CBE0 00308840 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030CBE4 00308844 54 03 06 3E */ clrlwi r3, r0, 0x18
+/* 8030CBE8 00308848 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030CBEC 0030884C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030CBF0 00308850 7C 08 03 A6 */ mtlr r0
+/* 8030CBF4 00308854 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030CBF8 00308858 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_entry_iterator.s b/asm/SDK/VF/pf_entry_iterator.s new file mode 100644 index 0000000..5e10cda --- /dev/null +++ b/asm/SDK/VF/pf_entry_iterator.s @@ -0,0 +1,1818 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFENT_RecalcEntryIterator
+VFiPFENT_RecalcEntryIterator:
+/* 8030CBFC 0030885C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030CC00 00308860 7C 08 02 A6 */ mflr r0
+/* 8030CC04 00308864 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030CC08 00308868 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030CC0C 0030886C 7C 7F 1B 78 */ mr r31, r3
+/* 8030CC10 00308870 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030CC14 00308874 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030CC18 00308878 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8030CC1C 0030887C 7C 9C 23 78 */ mr r28, r4
+/* 8030CC20 00308880 80 A3 00 00 */ lwz r5, 0(r3)
+/* 8030CC24 00308884 88 03 00 6C */ lbz r0, 0x6c(r3)
+/* 8030CC28 00308888 83 C3 00 40 */ lwz r30, 0x40(r3)
+/* 8030CC2C 0030888C 7C BD 04 30 */ srw r29, r5, r0
+/* 8030CC30 00308890 7C 1D F0 40 */ cmplw r29, r30
+/* 8030CC34 00308894 41 82 01 3C */ beq lbl_8030CD70
+/* 8030CC38 00308898 93 A3 00 40 */ stw r29, 0x40(r3)
+/* 8030CC3C 0030889C 38 C3 00 44 */ addi r6, r3, 0x44
+/* 8030CC40 003088A0 7F A4 EB 78 */ mr r4, r29
+/* 8030CC44 003088A4 38 A0 00 00 */ li r5, 0
+/* 8030CC48 003088A8 38 63 00 08 */ addi r3, r3, 8
+/* 8030CC4C 003088AC 48 00 33 1D */ bl VFiPFFAT_GetSectorSpecified
+/* 8030CC50 003088B0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CC54 003088B4 41 82 00 08 */ beq lbl_8030CC5C
+/* 8030CC58 003088B8 48 00 01 30 */ b lbl_8030CD88
+lbl_8030CC5C:
+/* 8030CC5C 003088BC 80 7F 00 44 */ lwz r3, 0x44(r31)
+/* 8030CC60 003088C0 3C 03 00 01 */ addis r0, r3, 1
+/* 8030CC64 003088C4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030CC68 003088C8 40 82 01 08 */ bne lbl_8030CD70
+/* 8030CC6C 003088CC 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030CC70 003088D0 41 82 01 00 */ beq lbl_8030CD70
+/* 8030CC74 003088D4 7F A4 EB 78 */ mr r4, r29
+/* 8030CC78 003088D8 38 7F 00 08 */ addi r3, r31, 8
+/* 8030CC7C 003088DC 38 DF 00 44 */ addi r6, r31, 0x44
+/* 8030CC80 003088E0 38 A0 00 01 */ li r5, 1
+/* 8030CC84 003088E4 48 00 32 E5 */ bl VFiPFFAT_GetSectorSpecified
+/* 8030CC88 003088E8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CC8C 003088EC 41 82 00 08 */ beq lbl_8030CC94
+/* 8030CC90 003088F0 48 00 00 F8 */ b lbl_8030CD88
+lbl_8030CC94:
+/* 8030CC94 003088F4 80 7F 00 44 */ lwz r3, 0x44(r31)
+/* 8030CC98 003088F8 3C 03 00 01 */ addis r0, r3, 1
+/* 8030CC9C 003088FC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030CCA0 00308900 41 82 00 D0 */ beq lbl_8030CD70
+/* 8030CCA4 00308904 3C 1E 00 01 */ addis r0, r30, 1
+/* 8030CCA8 00308908 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030CCAC 0030890C 41 82 00 C4 */ beq lbl_8030CD70
+/* 8030CCB0 00308910 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8030CCB4 00308914 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030CCB8 00308918 38 80 FF FF */ li r4, -1
+/* 8030CCBC 0030891C 4B FF D9 FD */ bl VFiPFCACHE_AllocateDataPage
+/* 8030CCC0 00308920 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CCC4 00308924 41 82 00 08 */ beq lbl_8030CCCC
+/* 8030CCC8 00308928 48 00 00 C0 */ b lbl_8030CD88
+lbl_8030CCCC:
+/* 8030CCCC 0030892C 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030CCD0 00308930 38 80 00 00 */ li r4, 0
+/* 8030CCD4 00308934 80 BF 00 04 */ lwz r5, 4(r31)
+/* 8030CCD8 00308938 80 63 00 08 */ lwz r3, 8(r3)
+/* 8030CCDC 0030893C A0 A5 00 00 */ lhz r5, 0(r5)
+/* 8030CCE0 00308940 4B FF 82 F5 */ bl VFipf_memset
+/* 8030CCE4 00308944 3B A0 00 00 */ li r29, 0
+/* 8030CCE8 00308948 48 00 00 70 */ b lbl_8030CD58
+lbl_8030CCEC:
+/* 8030CCEC 0030894C 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030CCF0 00308950 39 01 00 08 */ addi r8, r1, 8
+/* 8030CCF4 00308954 80 1F 00 44 */ lwz r0, 0x44(r31)
+/* 8030CCF8 00308958 38 C0 00 00 */ li r6, 0
+/* 8030CCFC 0030895C 80 84 00 08 */ lwz r4, 8(r4)
+/* 8030CD00 00308960 39 20 00 00 */ li r9, 0
+/* 8030CD04 00308964 A0 E3 00 00 */ lhz r7, 0(r3)
+/* 8030CD08 00308968 7C A0 EA 14 */ add r5, r0, r29
+/* 8030CD0C 0030896C 48 00 C0 DD */ bl func_80318DE8
+/* 8030CD10 00308970 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CD14 00308974 7C 7E 1B 78 */ mr r30, r3
+/* 8030CD18 00308978 41 82 00 18 */ beq lbl_8030CD30
+/* 8030CD1C 0030897C 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8030CD20 00308980 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030CD24 00308984 4B FF DA 99 */ bl VFiPFCACHE_FreeDataPage
+/* 8030CD28 00308988 7F C3 F3 78 */ mr r3, r30
+/* 8030CD2C 0030898C 48 00 00 5C */ b lbl_8030CD88
+lbl_8030CD30:
+/* 8030CD30 00308990 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8030CD34 00308994 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030CD38 00308998 A0 03 00 00 */ lhz r0, 0(r3)
+/* 8030CD3C 0030899C 7C 04 00 40 */ cmplw r4, r0
+/* 8030CD40 003089A0 41 82 00 14 */ beq lbl_8030CD54
+/* 8030CD44 003089A4 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030CD48 003089A8 4B FF DA 75 */ bl VFiPFCACHE_FreeDataPage
+/* 8030CD4C 003089AC 38 60 00 11 */ li r3, 0x11
+/* 8030CD50 003089B0 48 00 00 38 */ b lbl_8030CD88
+lbl_8030CD54:
+/* 8030CD54 003089B4 3B BD 00 01 */ addi r29, r29, 1
+lbl_8030CD58:
+/* 8030CD58 003089B8 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8030CD5C 003089BC 88 03 00 06 */ lbz r0, 6(r3)
+/* 8030CD60 003089C0 7C 1D 00 40 */ cmplw r29, r0
+/* 8030CD64 003089C4 41 80 FF 88 */ blt lbl_8030CCEC
+/* 8030CD68 003089C8 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030CD6C 003089CC 4B FF DA 51 */ bl VFiPFCACHE_FreeDataPage
+lbl_8030CD70:
+/* 8030CD70 003089D0 80 9F 00 00 */ lwz r4, 0(r31)
+/* 8030CD74 003089D4 38 60 00 00 */ li r3, 0
+/* 8030CD78 003089D8 A0 1F 00 4A */ lhz r0, 0x4a(r31)
+/* 8030CD7C 003089DC 7C 80 00 38 */ and r0, r4, r0
+/* 8030CD80 003089E0 54 00 2C 34 */ rlwinm r0, r0, 5, 0x10, 0x1a
+/* 8030CD84 003089E4 B0 1F 00 48 */ sth r0, 0x48(r31)
+lbl_8030CD88:
+/* 8030CD88 003089E8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030CD8C 003089EC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030CD90 003089F0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030CD94 003089F4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030CD98 003089F8 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030CD9C 003089FC 7C 08 03 A6 */ mtlr r0
+/* 8030CDA0 00308A00 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030CDA4 00308A04 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_FindCluster
+VFiPFENT_ITER_FindCluster:
+/* 8030CDA8 00308A08 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030CDAC 00308A0C 7C 08 02 A6 */ mflr r0
+/* 8030CDB0 00308A10 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030CDB4 00308A14 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030CDB8 00308A18 4B EB A3 65 */ bl _savegpr_24
+/* 8030CDBC 00308A1C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CDC0 00308A20 7C 7A 1B 78 */ mr r26, r3
+/* 8030CDC4 00308A24 7C 9B 23 78 */ mr r27, r4
+/* 8030CDC8 00308A28 7C BC 2B 78 */ mr r28, r5
+/* 8030CDCC 00308A2C 7C DD 33 78 */ mr r29, r6
+/* 8030CDD0 00308A30 3B 00 00 00 */ li r24, 0
+/* 8030CDD4 00308A34 41 82 00 0C */ beq lbl_8030CDE0
+/* 8030CDD8 00308A38 2C 04 00 00 */ cmpwi r4, 0
+/* 8030CDDC 00308A3C 40 82 00 0C */ bne lbl_8030CDE8
+lbl_8030CDE0:
+/* 8030CDE0 00308A40 38 60 00 0A */ li r3, 0xa
+/* 8030CDE4 00308A44 48 00 02 CC */ b lbl_8030D0B0
+lbl_8030CDE8:
+/* 8030CDE8 00308A48 3B C0 00 00 */ li r30, 0
+/* 8030CDEC 00308A4C 3B E0 00 01 */ li r31, 1
+/* 8030CDF0 00308A50 93 C6 00 00 */ stw r30, 0(r6)
+/* 8030CDF4 00308A54 9B C4 02 0A */ stb r30, 0x20a(r4)
+/* 8030CDF8 00308A58 9B C4 02 0B */ stb r30, 0x20b(r4)
+/* 8030CDFC 00308A5C 9B C4 02 0C */ stb r30, 0x20c(r4)
+/* 8030CE00 00308A60 48 00 02 9C */ b lbl_8030D09C
+lbl_8030CE04:
+/* 8030CE04 00308A64 2C 18 00 00 */ cmpwi r24, 0
+/* 8030CE08 00308A68 41 82 00 0C */ beq lbl_8030CE14
+/* 8030CE0C 00308A6C 7F 03 C3 78 */ mr r3, r24
+/* 8030CE10 00308A70 48 00 02 A0 */ b lbl_8030D0B0
+lbl_8030CE14:
+/* 8030CE14 00308A74 88 1A 00 4C */ lbz r0, 0x4c(r26)
+/* 8030CE18 00308A78 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030CE1C 00308A7C 40 82 00 10 */ bne lbl_8030CE2C
+/* 8030CE20 00308A80 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CE24 00308A84 B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CE28 00308A88 48 00 01 D4 */ b lbl_8030CFFC
+lbl_8030CE2C:
+/* 8030CE2C 00308A8C 88 7A 00 57 */ lbz r3, 0x57(r26)
+/* 8030CE30 00308A90 54 60 07 3E */ clrlwi r0, r3, 0x1c
+/* 8030CE34 00308A94 2C 00 00 0F */ cmpwi r0, 0xf
+/* 8030CE38 00308A98 40 82 00 24 */ bne lbl_8030CE5C
+/* 8030CE3C 00308A9C 7F 63 DB 78 */ mr r3, r27
+/* 8030CE40 00308AA0 38 9A 00 4C */ addi r4, r26, 0x4c
+/* 8030CE44 00308AA4 4B FF EE C9 */ bl VFiPFENT_LoadLFNEntryFieldsFromBuf
+/* 8030CE48 00308AA8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CE4C 00308AAC 41 82 01 B0 */ beq lbl_8030CFFC
+/* 8030CE50 00308AB0 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CE54 00308AB4 B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CE58 00308AB8 48 00 01 A4 */ b lbl_8030CFFC
+lbl_8030CE5C:
+/* 8030CE5C 00308ABC 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
+/* 8030CE60 00308AC0 41 82 00 10 */ beq lbl_8030CE70
+/* 8030CE64 00308AC4 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CE68 00308AC8 B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CE6C 00308ACC 48 00 01 90 */ b lbl_8030CFFC
+lbl_8030CE70:
+/* 8030CE70 00308AD0 54 60 06 F7 */ rlwinm. r0, r3, 0, 0x1b, 0x1b
+/* 8030CE74 00308AD4 40 82 00 10 */ bne lbl_8030CE84
+/* 8030CE78 00308AD8 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CE7C 00308ADC B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CE80 00308AE0 48 00 01 7C */ b lbl_8030CFFC
+lbl_8030CE84:
+/* 8030CE84 00308AE4 A0 BA 00 60 */ lhz r5, 0x60(r26)
+/* 8030CE88 00308AE8 A0 9A 00 66 */ lhz r4, 0x66(r26)
+/* 8030CE8C 00308AEC 54 A3 44 2E */ rlwinm r3, r5, 8, 0x10, 0x17
+/* 8030CE90 00308AF0 54 80 44 2E */ rlwinm r0, r4, 8, 0x10, 0x17
+/* 8030CE94 00308AF4 50 A3 C6 3E */ rlwimi r3, r5, 0x18, 0x18, 0x1f
+/* 8030CE98 00308AF8 50 80 C6 3E */ rlwimi r0, r4, 0x18, 0x18, 0x1f
+/* 8030CE9C 00308AFC 50 60 80 1E */ rlwimi r0, r3, 0x10, 0, 0xf
+/* 8030CEA0 00308B00 7C 1C 00 40 */ cmplw r28, r0
+/* 8030CEA4 00308B04 41 82 00 10 */ beq lbl_8030CEB4
+/* 8030CEA8 00308B08 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CEAC 00308B0C B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CEB0 00308B10 48 00 01 4C */ b lbl_8030CFFC
+lbl_8030CEB4:
+/* 8030CEB4 00308B14 93 FD 00 00 */ stw r31, 0(r29)
+/* 8030CEB8 00308B18 7F 63 DB 78 */ mr r3, r27
+/* 8030CEBC 00308B1C 38 9A 00 4C */ addi r4, r26, 0x4c
+/* 8030CEC0 00308B20 4B FF ED 59 */ bl VFiPFENT_LoadShortNameFromBuf
+/* 8030CEC4 00308B24 88 1B 02 0A */ lbz r0, 0x20a(r27)
+/* 8030CEC8 00308B28 2C 00 00 00 */ cmpwi r0, 0
+/* 8030CECC 00308B2C 41 82 00 8C */ beq lbl_8030CF58
+/* 8030CED0 00308B30 88 1B 02 0B */ lbz r0, 0x20b(r27)
+/* 8030CED4 00308B34 28 00 00 01 */ cmplwi r0, 1
+/* 8030CED8 00308B38 40 82 00 80 */ bne lbl_8030CF58
+/* 8030CEDC 00308B3C 7F 63 DB 78 */ mr r3, r27
+/* 8030CEE0 00308B40 4B FF EC C9 */ bl VFiPFENT_CalcCheckSum
+/* 8030CEE4 00308B44 88 1B 02 0C */ lbz r0, 0x20c(r27)
+/* 8030CEE8 00308B48 54 63 06 3E */ clrlwi r3, r3, 0x18
+/* 8030CEEC 00308B4C 7C 00 18 40 */ cmplw r0, r3
+/* 8030CEF0 00308B50 40 82 00 68 */ bne lbl_8030CF58
+/* 8030CEF4 00308B54 7F 63 DB 78 */ mr r3, r27
+/* 8030CEF8 00308B58 38 9A 00 4C */ addi r4, r26, 0x4c
+/* 8030CEFC 00308B5C 4B FF ED 65 */ bl VFiPFENT_loadEntryNumericFieldsFromBuf
+/* 8030CF00 00308B60 80 7A 00 44 */ lwz r3, 0x44(r26)
+/* 8030CF04 00308B64 88 1B 02 1C */ lbz r0, 0x21c(r27)
+/* 8030CF08 00308B68 90 7B 02 38 */ stw r3, 0x238(r27)
+/* 8030CF0C 00308B6C 54 03 06 F7 */ rlwinm. r3, r0, 0, 0x1b, 0x1b
+/* 8030CF10 00308B70 A0 1A 00 48 */ lhz r0, 0x48(r26)
+/* 8030CF14 00308B74 B0 1B 02 3C */ sth r0, 0x23c(r27)
+/* 8030CF18 00308B78 80 1A 00 3C */ lwz r0, 0x3c(r26)
+/* 8030CF1C 00308B7C 90 1B 02 2C */ stw r0, 0x22c(r27)
+/* 8030CF20 00308B80 41 82 00 1C */ beq lbl_8030CF3C
+/* 8030CF24 00308B84 80 1B 02 34 */ lwz r0, 0x234(r27)
+/* 8030CF28 00308B88 7C 00 E0 40 */ cmplw r0, r28
+/* 8030CF2C 00308B8C 41 82 00 10 */ beq lbl_8030CF3C
+/* 8030CF30 00308B90 9B DB 02 0A */ stb r30, 0x20a(r27)
+/* 8030CF34 00308B94 B3 DB 00 00 */ sth r30, 0(r27)
+/* 8030CF38 00308B98 48 00 00 C4 */ b lbl_8030CFFC
+lbl_8030CF3C:
+/* 8030CF3C 00308B9C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030CF40 00308BA0 41 82 00 18 */ beq lbl_8030CF58
+/* 8030CF44 00308BA4 80 1B 02 34 */ lwz r0, 0x234(r27)
+/* 8030CF48 00308BA8 2C 00 00 00 */ cmpwi r0, 0
+/* 8030CF4C 00308BAC 40 82 00 0C */ bne lbl_8030CF58
+/* 8030CF50 00308BB0 38 00 00 01 */ li r0, 1
+/* 8030CF54 00308BB4 90 1B 02 34 */ stw r0, 0x234(r27)
+lbl_8030CF58:
+/* 8030CF58 00308BB8 88 BA 00 58 */ lbz r5, 0x58(r26)
+/* 8030CF5C 00308BBC 54 A0 06 F9 */ rlwinm. r0, r5, 0, 0x1b, 0x1c
+/* 8030CF60 00308BC0 41 82 00 70 */ beq lbl_8030CFD0
+/* 8030CF64 00308BC4 38 7B 02 0E */ addi r3, r27, 0x20e
+/* 8030CF68 00308BC8 38 81 00 0C */ addi r4, r1, 0xc
+/* 8030CF6C 00308BCC 48 00 A6 C1 */ bl func_8031762C
+/* 8030CF70 00308BD0 7F 63 DB 78 */ mr r3, r27
+/* 8030CF74 00308BD4 38 81 00 0C */ addi r4, r1, 0xc
+/* 8030CF78 00308BD8 48 00 AA 95 */ bl func_80317A0C
+/* 8030CF7C 00308BDC 3C 80 4E C5 */ lis r4, 0x4EC4EC4F@ha
+/* 8030CF80 00308BE0 38 04 EC 4F */ addi r0, r4, 0x4EC4EC4F@l
+/* 8030CF84 00308BE4 7C 00 18 96 */ mulhw r0, r0, r3
+/* 8030CF88 00308BE8 7C 05 16 70 */ srawi r5, r0, 2
+/* 8030CF8C 00308BEC 7C 00 16 70 */ srawi r0, r0, 2
+/* 8030CF90 00308BF0 54 04 0F FE */ srwi r4, r0, 0x1f
+/* 8030CF94 00308BF4 54 A6 0F FE */ srwi r6, r5, 0x1f
+/* 8030CF98 00308BF8 7C 00 22 14 */ add r0, r0, r4
+/* 8030CF9C 00308BFC 1C 00 00 0D */ mulli r0, r0, 0xd
+/* 8030CFA0 00308C00 7C A5 32 14 */ add r5, r5, r6
+/* 8030CFA4 00308C04 7C 80 18 50 */ subf r4, r0, r3
+/* 8030CFA8 00308C08 7F 63 DB 78 */ mr r3, r27
+/* 8030CFAC 00308C0C 7C 04 00 D0 */ neg r0, r4
+/* 8030CFB0 00308C10 7C 00 23 78 */ or r0, r0, r4
+/* 8030CFB4 00308C14 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 8030CFB8 00308C18 7C 05 02 14 */ add r0, r5, r0
+/* 8030CFBC 00308C1C 98 1B 02 0A */ stb r0, 0x20a(r27)
+/* 8030CFC0 00308C20 4B FF EB E9 */ bl VFiPFENT_CalcCheckSum
+/* 8030CFC4 00308C24 38 00 00 01 */ li r0, 1
+/* 8030CFC8 00308C28 98 7B 02 0C */ stb r3, 0x20c(r27)
+/* 8030CFCC 00308C2C 98 1B 02 0B */ stb r0, 0x20b(r27)
+lbl_8030CFD0:
+/* 8030CFD0 00308C30 7F 63 DB 78 */ mr r3, r27
+/* 8030CFD4 00308C34 38 9A 00 4C */ addi r4, r26, 0x4c
+/* 8030CFD8 00308C38 4B FF EC 89 */ bl VFiPFENT_loadEntryNumericFieldsFromBuf
+/* 8030CFDC 00308C3C 80 1A 00 44 */ lwz r0, 0x44(r26)
+/* 8030CFE0 00308C40 38 60 00 00 */ li r3, 0
+/* 8030CFE4 00308C44 90 1B 02 38 */ stw r0, 0x238(r27)
+/* 8030CFE8 00308C48 A0 1A 00 48 */ lhz r0, 0x48(r26)
+/* 8030CFEC 00308C4C B0 1B 02 3C */ sth r0, 0x23c(r27)
+/* 8030CFF0 00308C50 80 1A 00 3C */ lwz r0, 0x3c(r26)
+/* 8030CFF4 00308C54 90 1B 02 2C */ stw r0, 0x22c(r27)
+/* 8030CFF8 00308C58 48 00 00 B8 */ b lbl_8030D0B0
+lbl_8030CFFC:
+/* 8030CFFC 00308C5C 83 1A 00 00 */ lwz r24, 0(r26)
+/* 8030D000 00308C60 7F 43 D3 78 */ mr r3, r26
+/* 8030D004 00308C64 38 80 00 00 */ li r4, 0
+/* 8030D008 00308C68 38 18 00 01 */ addi r0, r24, 1
+/* 8030D00C 00308C6C 90 1A 00 00 */ stw r0, 0(r26)
+/* 8030D010 00308C70 4B FF FB ED */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D014 00308C74 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D018 00308C78 7C 79 1B 78 */ mr r25, r3
+/* 8030D01C 00308C7C 41 82 00 18 */ beq lbl_8030D034
+/* 8030D020 00308C80 93 1A 00 00 */ stw r24, 0(r26)
+/* 8030D024 00308C84 7F 43 D3 78 */ mr r3, r26
+/* 8030D028 00308C88 38 80 00 00 */ li r4, 0
+/* 8030D02C 00308C8C 4B FF FB D1 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D030 00308C90 48 00 00 5C */ b lbl_8030D08C
+lbl_8030D034:
+/* 8030D034 00308C94 80 BA 00 44 */ lwz r5, 0x44(r26)
+/* 8030D038 00308C98 3C 05 00 01 */ addis r0, r5, 1
+/* 8030D03C 00308C9C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030D040 00308CA0 40 82 00 0C */ bne lbl_8030D04C
+/* 8030D044 00308CA4 38 80 00 10 */ li r4, 0x10
+/* 8030D048 00308CA8 48 00 00 34 */ b lbl_8030D07C
+lbl_8030D04C:
+/* 8030D04C 00308CAC 80 7A 00 04 */ lwz r3, 4(r26)
+/* 8030D050 00308CB0 38 9A 00 4C */ addi r4, r26, 0x4c
+/* 8030D054 00308CB4 A0 DA 00 48 */ lhz r6, 0x48(r26)
+/* 8030D058 00308CB8 39 01 00 08 */ addi r8, r1, 8
+/* 8030D05C 00308CBC 38 E0 00 20 */ li r7, 0x20
+/* 8030D060 00308CC0 39 20 00 00 */ li r9, 0
+/* 8030D064 00308CC4 48 00 B9 C5 */ bl func_80318A28
+/* 8030D068 00308CC8 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030D06C 00308CCC 38 80 00 11 */ li r4, 0x11
+/* 8030D070 00308CD0 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030D074 00308CD4 40 82 00 08 */ bne lbl_8030D07C
+/* 8030D078 00308CD8 7C 64 1B 78 */ mr r4, r3
+lbl_8030D07C:
+/* 8030D07C 00308CDC 7C 04 00 D0 */ neg r0, r4
+/* 8030D080 00308CE0 7C 00 23 78 */ or r0, r0, r4
+/* 8030D084 00308CE4 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D088 00308CE8 7C 99 00 38 */ and r25, r4, r0
+lbl_8030D08C:
+/* 8030D08C 00308CEC 7C 19 00 D0 */ neg r0, r25
+/* 8030D090 00308CF0 7C 00 CB 78 */ or r0, r0, r25
+/* 8030D094 00308CF4 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D098 00308CF8 7F 38 00 38 */ and r24, r25, r0
+lbl_8030D09C:
+/* 8030D09C 00308CFC 7F 43 D3 78 */ mr r3, r26
+/* 8030D0A0 00308D00 48 00 0F 5D */ bl VFiPFENT_ITER_IsAtLogicalEnd
+/* 8030D0A4 00308D04 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D0A8 00308D08 41 82 FD 5C */ beq lbl_8030CE04
+/* 8030D0AC 00308D0C 38 60 00 00 */ li r3, 0
+lbl_8030D0B0:
+/* 8030D0B0 00308D10 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030D0B4 00308D14 4B EB A0 B5 */ bl _restgpr_24
+/* 8030D0B8 00308D18 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030D0BC 00308D1C 7C 08 03 A6 */ mtlr r0
+/* 8030D0C0 00308D20 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030D0C4 00308D24 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_DoFindEntry
+VFiPFENT_ITER_DoFindEntry:
+/* 8030D0C8 00308D28 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 8030D0CC 00308D2C 7C 08 02 A6 */ mflr r0
+/* 8030D0D0 00308D30 90 01 00 54 */ stw r0, 0x54(r1)
+/* 8030D0D4 00308D34 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030D0D8 00308D38 4B EB A0 41 */ bl _savegpr_23
+/* 8030D0DC 00308D3C 3B C0 00 00 */ li r30, 0
+/* 8030D0E0 00308D40 7C 78 1B 78 */ mr r24, r3
+/* 8030D0E4 00308D44 93 C8 00 00 */ stw r30, 0(r8)
+/* 8030D0E8 00308D48 7C 99 23 78 */ mr r25, r4
+/* 8030D0EC 00308D4C 7C BA 2B 78 */ mr r26, r5
+/* 8030D0F0 00308D50 7C DB 33 78 */ mr r27, r6
+/* 8030D0F4 00308D54 80 63 00 10 */ lwz r3, 0x10(r3)
+/* 8030D0F8 00308D58 7C FC 3B 78 */ mr r28, r7
+/* 8030D0FC 00308D5C 7D 1D 43 78 */ mr r29, r8
+/* 8030D100 00308D60 7D 37 4B 78 */ mr r23, r9
+/* 8030D104 00308D64 80 03 00 00 */ lwz r0, 0(r3)
+/* 8030D108 00308D68 3B E0 00 00 */ li r31, 0
+/* 8030D10C 00308D6C 28 00 00 01 */ cmplwi r0, 1
+/* 8030D110 00308D70 40 82 00 60 */ bne lbl_8030D170
+/* 8030D114 00308D74 7F 43 D3 78 */ mr r3, r26
+/* 8030D118 00308D78 38 8D 8C D0 */ addi r4, r13, lbl_8063DF90-_SDA_BASE_
+/* 8030D11C 00308D7C 38 A0 00 01 */ li r5, 1
+/* 8030D120 00308D80 38 C0 00 00 */ li r6, 0
+/* 8030D124 00308D84 38 E0 00 03 */ li r7, 3
+/* 8030D128 00308D88 4B FF 85 39 */ bl VFiPFSTR_StrNCmp
+/* 8030D12C 00308D8C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D130 00308D90 41 82 00 38 */ beq lbl_8030D168
+/* 8030D134 00308D94 7F 43 D3 78 */ mr r3, r26
+/* 8030D138 00308D98 38 8D 8C D4 */ addi r4, r13, lbl_8063DF94-_SDA_BASE_
+/* 8030D13C 00308D9C 38 A0 00 01 */ li r5, 1
+/* 8030D140 00308DA0 38 C0 00 00 */ li r6, 0
+/* 8030D144 00308DA4 38 E0 00 03 */ li r7, 3
+/* 8030D148 00308DA8 4B FF 85 19 */ bl VFiPFSTR_StrNCmp
+/* 8030D14C 00308DAC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D150 00308DB0 41 82 00 18 */ beq lbl_8030D168
+/* 8030D154 00308DB4 7F 43 D3 78 */ mr r3, r26
+/* 8030D158 00308DB8 38 8D 8C D8 */ addi r4, r13, lbl_8063DF98-_SDA_BASE_
+/* 8030D15C 00308DBC 4B FF 84 61 */ bl VFiPFSTR_StrCmp
+/* 8030D160 00308DC0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D164 00308DC4 40 82 00 0C */ bne lbl_8030D170
+lbl_8030D168:
+/* 8030D168 00308DC8 38 60 00 02 */ li r3, 2
+/* 8030D16C 00308DCC 48 00 07 5C */ b lbl_8030D8C8
+lbl_8030D170:
+/* 8030D170 00308DD0 7F 43 D3 78 */ mr r3, r26
+/* 8030D174 00308DD4 38 8D 8C DC */ addi r4, r13, lbl_8063DF9C-_SDA_BASE_
+/* 8030D178 00308DD8 38 A0 00 01 */ li r5, 1
+/* 8030D17C 00308DDC 38 C0 00 00 */ li r6, 0
+/* 8030D180 00308DE0 38 E0 00 02 */ li r7, 2
+/* 8030D184 00308DE4 4B FF 84 DD */ bl VFiPFSTR_StrNCmp
+/* 8030D188 00308DE8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D18C 00308DEC 41 82 00 18 */ beq lbl_8030D1A4
+/* 8030D190 00308DF0 7F 43 D3 78 */ mr r3, r26
+/* 8030D194 00308DF4 38 8D 8C E0 */ addi r4, r13, lbl_8063DFA0-_SDA_BASE_
+/* 8030D198 00308DF8 4B FF 84 25 */ bl VFiPFSTR_StrCmp
+/* 8030D19C 00308DFC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D1A0 00308E00 40 82 00 70 */ bne lbl_8030D210
+lbl_8030D1A4:
+/* 8030D1A4 00308E04 2C 17 00 00 */ cmpwi r23, 0
+/* 8030D1A8 00308E08 40 82 00 50 */ bne lbl_8030D1F8
+/* 8030D1AC 00308E0C 80 78 00 10 */ lwz r3, 0x10(r24)
+/* 8030D1B0 00308E10 80 83 00 00 */ lwz r4, 0(r3)
+/* 8030D1B4 00308E14 28 04 00 01 */ cmplwi r4, 1
+/* 8030D1B8 00308E18 41 82 00 20 */ beq lbl_8030D1D8
+/* 8030D1BC 00308E1C 80 78 00 3C */ lwz r3, 0x3c(r24)
+/* 8030D1C0 00308E20 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030D1C4 00308E24 2C 00 00 02 */ cmpwi r0, 2
+/* 8030D1C8 00308E28 40 82 00 30 */ bne lbl_8030D1F8
+/* 8030D1CC 00308E2C 80 03 00 10 */ lwz r0, 0x10(r3)
+/* 8030D1D0 00308E30 7C 04 00 40 */ cmplw r4, r0
+/* 8030D1D4 00308E34 40 82 00 24 */ bne lbl_8030D1F8
+lbl_8030D1D8:
+/* 8030D1D8 00308E38 80 78 00 04 */ lwz r3, 4(r24)
+/* 8030D1DC 00308E3C 7F 24 CB 78 */ mr r4, r25
+/* 8030D1E0 00308E40 4B FF F5 25 */ bl VFiPFENT_GetRootDir
+/* 8030D1E4 00308E44 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D1E8 00308E48 7C 7E 1B 78 */ mr r30, r3
+/* 8030D1EC 00308E4C 41 82 00 08 */ beq lbl_8030D1F4
+/* 8030D1F0 00308E50 48 00 06 D8 */ b lbl_8030D8C8
+lbl_8030D1F4:
+/* 8030D1F4 00308E54 3A E0 00 01 */ li r23, 1
+lbl_8030D1F8:
+/* 8030D1F8 00308E58 28 17 00 01 */ cmplwi r23, 1
+/* 8030D1FC 00308E5C 40 82 00 14 */ bne lbl_8030D210
+/* 8030D200 00308E60 38 00 00 01 */ li r0, 1
+/* 8030D204 00308E64 38 60 00 00 */ li r3, 0
+/* 8030D208 00308E68 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030D20C 00308E6C 48 00 06 BC */ b lbl_8030D8C8
+lbl_8030D210:
+/* 8030D210 00308E70 38 00 00 00 */ li r0, 0
+/* 8030D214 00308E74 3C 60 80 58 */ lis r3, lbl_8057F5C8@ha
+/* 8030D218 00308E78 98 19 02 0A */ stb r0, 0x20a(r25)
+/* 8030D21C 00308E7C 38 63 F5 C8 */ addi r3, r3, lbl_8057F5C8@l
+/* 8030D220 00308E80 98 19 02 0B */ stb r0, 0x20b(r25)
+/* 8030D224 00308E84 98 19 02 0C */ stb r0, 0x20c(r25)
+/* 8030D228 00308E88 B0 19 00 00 */ sth r0, 0(r25)
+/* 8030D22C 00308E8C 80 03 00 3C */ lwz r0, 0x3c(r3)
+/* 8030D230 00308E90 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030D234 00308E94 28 00 00 02 */ cmplwi r0, 2
+/* 8030D238 00308E98 40 82 00 14 */ bne lbl_8030D24C
+/* 8030D23C 00308E9C 7F 43 D3 78 */ mr r3, r26
+/* 8030D240 00308EA0 38 81 00 14 */ addi r4, r1, 0x14
+/* 8030D244 00308EA4 48 00 B5 15 */ bl func_80318758
+/* 8030D248 00308EA8 7C 7F 1B 78 */ mr r31, r3
+lbl_8030D24C:
+/* 8030D24C 00308EAC 28 1F 00 01 */ cmplwi r31, 1
+/* 8030D250 00308EB0 40 82 03 30 */ bne lbl_8030D580
+/* 8030D254 00308EB4 80 78 00 3C */ lwz r3, 0x3c(r24)
+/* 8030D258 00308EB8 80 81 00 14 */ lwz r4, 0x14(r1)
+/* 8030D25C 00308EBC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D260 00308EC0 90 78 00 04 */ stw r3, 4(r24)
+/* 8030D264 00308EC4 38 C4 FF FF */ addi r6, r4, -1
+/* 8030D268 00308EC8 40 82 00 0C */ bne lbl_8030D274
+/* 8030D26C 00308ECC 3A E0 00 0A */ li r23, 0xa
+/* 8030D270 00308ED0 48 00 00 B8 */ b lbl_8030D328
+lbl_8030D274:
+/* 8030D274 00308ED4 88 63 00 20 */ lbz r3, 0x20(r3)
+/* 8030D278 00308ED8 38 00 FF FF */ li r0, -1
+/* 8030D27C 00308EDC 83 D8 00 00 */ lwz r30, 0(r24)
+/* 8030D280 00308EE0 38 80 00 01 */ li r4, 1
+/* 8030D284 00308EE4 38 A3 FF FB */ addi r5, r3, -5
+/* 8030D288 00308EE8 90 18 00 40 */ stw r0, 0x40(r24)
+/* 8030D28C 00308EEC 54 A0 06 3E */ clrlwi r0, r5, 0x18
+/* 8030D290 00308EF0 7F 03 C3 78 */ mr r3, r24
+/* 8030D294 00308EF4 7C 84 00 30 */ slw r4, r4, r0
+/* 8030D298 00308EF8 98 B8 00 6C */ stb r5, 0x6c(r24)
+/* 8030D29C 00308EFC 38 04 FF FF */ addi r0, r4, -1
+/* 8030D2A0 00308F00 B0 18 00 4A */ sth r0, 0x4a(r24)
+/* 8030D2A4 00308F04 38 80 00 00 */ li r4, 0
+/* 8030D2A8 00308F08 90 D8 00 00 */ stw r6, 0(r24)
+/* 8030D2AC 00308F0C 4B FF F9 51 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D2B0 00308F10 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D2B4 00308F14 7C 77 1B 78 */ mr r23, r3
+/* 8030D2B8 00308F18 41 82 00 18 */ beq lbl_8030D2D0
+/* 8030D2BC 00308F1C 93 D8 00 00 */ stw r30, 0(r24)
+/* 8030D2C0 00308F20 7F 03 C3 78 */ mr r3, r24
+/* 8030D2C4 00308F24 38 80 00 00 */ li r4, 0
+/* 8030D2C8 00308F28 4B FF F9 35 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D2CC 00308F2C 48 00 00 5C */ b lbl_8030D328
+lbl_8030D2D0:
+/* 8030D2D0 00308F30 80 B8 00 44 */ lwz r5, 0x44(r24)
+/* 8030D2D4 00308F34 3C 05 00 01 */ addis r0, r5, 1
+/* 8030D2D8 00308F38 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030D2DC 00308F3C 40 82 00 0C */ bne lbl_8030D2E8
+/* 8030D2E0 00308F40 38 80 00 10 */ li r4, 0x10
+/* 8030D2E4 00308F44 48 00 00 34 */ b lbl_8030D318
+lbl_8030D2E8:
+/* 8030D2E8 00308F48 80 78 00 04 */ lwz r3, 4(r24)
+/* 8030D2EC 00308F4C 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D2F0 00308F50 A0 D8 00 48 */ lhz r6, 0x48(r24)
+/* 8030D2F4 00308F54 39 01 00 10 */ addi r8, r1, 0x10
+/* 8030D2F8 00308F58 38 E0 00 20 */ li r7, 0x20
+/* 8030D2FC 00308F5C 39 20 00 00 */ li r9, 0
+/* 8030D300 00308F60 48 00 B7 29 */ bl func_80318A28
+/* 8030D304 00308F64 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030D308 00308F68 38 80 00 11 */ li r4, 0x11
+/* 8030D30C 00308F6C 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030D310 00308F70 40 82 00 08 */ bne lbl_8030D318
+/* 8030D314 00308F74 7C 64 1B 78 */ mr r4, r3
+lbl_8030D318:
+/* 8030D318 00308F78 7C 04 00 D0 */ neg r0, r4
+/* 8030D31C 00308F7C 7C 00 23 78 */ or r0, r0, r4
+/* 8030D320 00308F80 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D324 00308F84 7C 97 00 38 */ and r23, r4, r0
+lbl_8030D328:
+/* 8030D328 00308F88 3B C0 00 00 */ li r30, 0
+lbl_8030D32C:
+/* 8030D32C 00308F8C 2C 17 00 00 */ cmpwi r23, 0
+/* 8030D330 00308F90 41 82 00 0C */ beq lbl_8030D33C
+/* 8030D334 00308F94 7E E3 BB 78 */ mr r3, r23
+/* 8030D338 00308F98 48 00 05 90 */ b lbl_8030D8C8
+lbl_8030D33C:
+/* 8030D33C 00308F9C 88 18 00 57 */ lbz r0, 0x57(r24)
+/* 8030D340 00308FA0 54 00 07 3E */ clrlwi r0, r0, 0x1c
+/* 8030D344 00308FA4 2C 00 00 0F */ cmpwi r0, 0xf
+/* 8030D348 00308FA8 40 82 00 34 */ bne lbl_8030D37C
+/* 8030D34C 00308FAC 7F 23 CB 78 */ mr r3, r25
+/* 8030D350 00308FB0 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D354 00308FB4 4B FF E9 B9 */ bl VFiPFENT_LoadLFNEntryFieldsFromBuf
+/* 8030D358 00308FB8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D35C 00308FBC 41 82 00 10 */ beq lbl_8030D36C
+/* 8030D360 00308FC0 9B D9 02 0A */ stb r30, 0x20a(r25)
+/* 8030D364 00308FC4 B3 D9 00 00 */ sth r30, 0(r25)
+/* 8030D368 00308FC8 48 00 02 04 */ b lbl_8030D56C
+lbl_8030D36C:
+/* 8030D36C 00308FCC 88 18 00 4C */ lbz r0, 0x4c(r24)
+/* 8030D370 00308FD0 54 00 06 73 */ rlwinm. r0, r0, 0, 0x19, 0x19
+/* 8030D374 00308FD4 41 82 01 F8 */ beq lbl_8030D56C
+/* 8030D378 00308FD8 48 00 00 0C */ b lbl_8030D384
+lbl_8030D37C:
+/* 8030D37C 00308FDC 38 60 00 00 */ li r3, 0
+/* 8030D380 00308FE0 48 00 05 48 */ b lbl_8030D8C8
+lbl_8030D384:
+/* 8030D384 00308FE4 80 78 00 3C */ lwz r3, 0x3c(r24)
+/* 8030D388 00308FE8 80 C1 00 14 */ lwz r6, 0x14(r1)
+/* 8030D38C 00308FEC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D390 00308FF0 90 78 00 04 */ stw r3, 4(r24)
+/* 8030D394 00308FF4 40 82 00 0C */ bne lbl_8030D3A0
+/* 8030D398 00308FF8 3A E0 00 0A */ li r23, 0xa
+/* 8030D39C 00308FFC 48 00 00 B8 */ b lbl_8030D454
+lbl_8030D3A0:
+/* 8030D3A0 00309000 88 63 00 20 */ lbz r3, 0x20(r3)
+/* 8030D3A4 00309004 38 00 FF FF */ li r0, -1
+/* 8030D3A8 00309008 83 D8 00 00 */ lwz r30, 0(r24)
+/* 8030D3AC 0030900C 38 80 00 01 */ li r4, 1
+/* 8030D3B0 00309010 38 A3 FF FB */ addi r5, r3, -5
+/* 8030D3B4 00309014 90 18 00 40 */ stw r0, 0x40(r24)
+/* 8030D3B8 00309018 54 A0 06 3E */ clrlwi r0, r5, 0x18
+/* 8030D3BC 0030901C 7F 03 C3 78 */ mr r3, r24
+/* 8030D3C0 00309020 7C 84 00 30 */ slw r4, r4, r0
+/* 8030D3C4 00309024 98 B8 00 6C */ stb r5, 0x6c(r24)
+/* 8030D3C8 00309028 38 04 FF FF */ addi r0, r4, -1
+/* 8030D3CC 0030902C B0 18 00 4A */ sth r0, 0x4a(r24)
+/* 8030D3D0 00309030 38 80 00 00 */ li r4, 0
+/* 8030D3D4 00309034 90 D8 00 00 */ stw r6, 0(r24)
+/* 8030D3D8 00309038 4B FF F8 25 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D3DC 0030903C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D3E0 00309040 7C 77 1B 78 */ mr r23, r3
+/* 8030D3E4 00309044 41 82 00 18 */ beq lbl_8030D3FC
+/* 8030D3E8 00309048 93 D8 00 00 */ stw r30, 0(r24)
+/* 8030D3EC 0030904C 7F 03 C3 78 */ mr r3, r24
+/* 8030D3F0 00309050 38 80 00 00 */ li r4, 0
+/* 8030D3F4 00309054 4B FF F8 09 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D3F8 00309058 48 00 00 5C */ b lbl_8030D454
+lbl_8030D3FC:
+/* 8030D3FC 0030905C 80 B8 00 44 */ lwz r5, 0x44(r24)
+/* 8030D400 00309060 3C 05 00 01 */ addis r0, r5, 1
+/* 8030D404 00309064 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030D408 00309068 40 82 00 0C */ bne lbl_8030D414
+/* 8030D40C 0030906C 38 80 00 10 */ li r4, 0x10
+/* 8030D410 00309070 48 00 00 34 */ b lbl_8030D444
+lbl_8030D414:
+/* 8030D414 00309074 80 78 00 04 */ lwz r3, 4(r24)
+/* 8030D418 00309078 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D41C 0030907C A0 D8 00 48 */ lhz r6, 0x48(r24)
+/* 8030D420 00309080 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030D424 00309084 38 E0 00 20 */ li r7, 0x20
+/* 8030D428 00309088 39 20 00 00 */ li r9, 0
+/* 8030D42C 0030908C 48 00 B5 FD */ bl func_80318A28
+/* 8030D430 00309090 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030D434 00309094 38 80 00 11 */ li r4, 0x11
+/* 8030D438 00309098 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030D43C 0030909C 40 82 00 08 */ bne lbl_8030D444
+/* 8030D440 003090A0 7C 64 1B 78 */ mr r4, r3
+lbl_8030D444:
+/* 8030D444 003090A4 7C 04 00 D0 */ neg r0, r4
+/* 8030D448 003090A8 7C 00 23 78 */ or r0, r0, r4
+/* 8030D44C 003090AC 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D450 003090B0 7C 97 00 38 */ and r23, r4, r0
+lbl_8030D454:
+/* 8030D454 003090B4 2C 17 00 00 */ cmpwi r23, 0
+/* 8030D458 003090B8 41 82 00 0C */ beq lbl_8030D464
+/* 8030D45C 003090BC 7E E3 BB 78 */ mr r3, r23
+/* 8030D460 003090C0 48 00 04 68 */ b lbl_8030D8C8
+lbl_8030D464:
+/* 8030D464 003090C4 88 78 00 57 */ lbz r3, 0x57(r24)
+/* 8030D468 003090C8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D46C 003090CC 40 82 00 08 */ bne lbl_8030D474
+/* 8030D470 003090D0 38 60 00 40 */ li r3, 0x40
+lbl_8030D474:
+/* 8030D474 003090D4 57 60 06 31 */ rlwinm. r0, r27, 0, 0x18, 0x18
+/* 8030D478 003090D8 41 82 00 38 */ beq lbl_8030D4B0
+/* 8030D47C 003090DC 57 7B 06 7F */ clrlwi. r27, r27, 0x19
+/* 8030D480 003090E0 57 9C 06 7E */ clrlwi r28, r28, 0x19
+/* 8030D484 003090E4 41 82 00 10 */ beq lbl_8030D494
+/* 8030D488 003090E8 7F 60 18 38 */ and r0, r27, r3
+/* 8030D48C 003090EC 7C 1B 00 00 */ cmpw r27, r0
+/* 8030D490 003090F0 40 82 00 18 */ bne lbl_8030D4A8
+lbl_8030D494:
+/* 8030D494 003090F4 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030D498 003090F8 41 82 00 3C */ beq lbl_8030D4D4
+/* 8030D49C 003090FC 7F 80 18 38 */ and r0, r28, r3
+/* 8030D4A0 00309100 7C 1C 00 00 */ cmpw r28, r0
+/* 8030D4A4 00309104 40 82 00 30 */ bne lbl_8030D4D4
+lbl_8030D4A8:
+/* 8030D4A8 00309108 3A E0 FF FF */ li r23, -1
+/* 8030D4AC 0030910C 48 00 00 28 */ b lbl_8030D4D4
+lbl_8030D4B0:
+/* 8030D4B0 00309110 28 1B 00 7F */ cmplwi r27, 0x7f
+/* 8030D4B4 00309114 41 82 00 20 */ beq lbl_8030D4D4
+/* 8030D4B8 00309118 7C 03 D8 40 */ cmplw r3, r27
+/* 8030D4BC 0030911C 41 82 00 18 */ beq lbl_8030D4D4
+/* 8030D4C0 00309120 7C 60 D8 39 */ and. r0, r3, r27
+/* 8030D4C4 00309124 41 82 00 0C */ beq lbl_8030D4D0
+/* 8030D4C8 00309128 7C 60 E0 39 */ and. r0, r3, r28
+/* 8030D4CC 0030912C 41 82 00 08 */ beq lbl_8030D4D4
+lbl_8030D4D0:
+/* 8030D4D0 00309130 3A E0 FF FF */ li r23, -1
+lbl_8030D4D4:
+/* 8030D4D4 00309134 2C 17 FF FF */ cmpwi r23, -1
+/* 8030D4D8 00309138 40 82 00 0C */ bne lbl_8030D4E4
+/* 8030D4DC 0030913C 38 60 00 00 */ li r3, 0
+/* 8030D4E0 00309140 48 00 03 E8 */ b lbl_8030D8C8
+lbl_8030D4E4:
+/* 8030D4E4 00309144 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
+/* 8030D4E8 00309148 41 82 00 0C */ beq lbl_8030D4F4
+/* 8030D4EC 0030914C 38 60 00 03 */ li r3, 3
+/* 8030D4F0 00309150 48 00 03 D8 */ b lbl_8030D8C8
+lbl_8030D4F4:
+/* 8030D4F4 00309154 7F 23 CB 78 */ mr r3, r25
+/* 8030D4F8 00309158 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D4FC 0030915C 4B FF E7 1D */ bl VFiPFENT_LoadShortNameFromBuf
+/* 8030D500 00309160 7F 44 D3 78 */ mr r4, r26
+/* 8030D504 00309164 38 79 02 0E */ addi r3, r25, 0x20e
+/* 8030D508 00309168 38 A0 00 00 */ li r5, 0
+/* 8030D50C 0030916C 48 00 9A 21 */ bl func_80316F2C
+/* 8030D510 00309170 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D514 00309174 41 82 03 B0 */ beq lbl_8030D8C4
+/* 8030D518 00309178 7F 23 CB 78 */ mr r3, r25
+/* 8030D51C 0030917C 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D520 00309180 4B FF E7 41 */ bl VFiPFENT_loadEntryNumericFieldsFromBuf
+/* 8030D524 00309184 80 78 00 44 */ lwz r3, 0x44(r24)
+/* 8030D528 00309188 88 19 02 1C */ lbz r0, 0x21c(r25)
+/* 8030D52C 0030918C 90 79 02 38 */ stw r3, 0x238(r25)
+/* 8030D530 00309190 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030D534 00309194 A0 18 00 48 */ lhz r0, 0x48(r24)
+/* 8030D538 00309198 B0 19 02 3C */ sth r0, 0x23c(r25)
+/* 8030D53C 0030919C 80 18 00 3C */ lwz r0, 0x3c(r24)
+/* 8030D540 003091A0 90 19 02 2C */ stw r0, 0x22c(r25)
+/* 8030D544 003091A4 41 82 00 18 */ beq lbl_8030D55C
+/* 8030D548 003091A8 80 19 02 34 */ lwz r0, 0x234(r25)
+/* 8030D54C 003091AC 2C 00 00 00 */ cmpwi r0, 0
+/* 8030D550 003091B0 40 82 00 0C */ bne lbl_8030D55C
+/* 8030D554 003091B4 38 00 00 01 */ li r0, 1
+/* 8030D558 003091B8 90 19 02 34 */ stw r0, 0x234(r25)
+lbl_8030D55C:
+/* 8030D55C 003091BC 38 00 00 01 */ li r0, 1
+/* 8030D560 003091C0 38 60 00 00 */ li r3, 0
+/* 8030D564 003091C4 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030D568 003091C8 48 00 03 60 */ b lbl_8030D8C8
+lbl_8030D56C:
+/* 8030D56C 003091CC 7F 03 C3 78 */ mr r3, r24
+/* 8030D570 003091D0 38 80 00 00 */ li r4, 0
+/* 8030D574 003091D4 48 00 0C 8D */ bl VFiPFENT_ITER_Retreat
+/* 8030D578 003091D8 7C 77 1B 78 */ mr r23, r3
+/* 8030D57C 003091DC 4B FF FD B0 */ b lbl_8030D32C
+lbl_8030D580:
+/* 8030D580 003091E0 3B E0 00 00 */ li r31, 0
+/* 8030D584 003091E4 48 00 03 30 */ b lbl_8030D8B4
+lbl_8030D588:
+/* 8030D588 003091E8 2C 1E 00 00 */ cmpwi r30, 0
+/* 8030D58C 003091EC 41 82 00 0C */ beq lbl_8030D598
+/* 8030D590 003091F0 7F C3 F3 78 */ mr r3, r30
+/* 8030D594 003091F4 48 00 03 34 */ b lbl_8030D8C8
+lbl_8030D598:
+/* 8030D598 003091F8 88 18 00 4C */ lbz r0, 0x4c(r24)
+/* 8030D59C 003091FC 2C 00 00 00 */ cmpwi r0, 0
+/* 8030D5A0 00309200 41 82 03 24 */ beq lbl_8030D8C4
+/* 8030D5A4 00309204 28 00 00 E5 */ cmplwi r0, 0xe5
+/* 8030D5A8 00309208 40 82 00 10 */ bne lbl_8030D5B8
+/* 8030D5AC 0030920C 9B F9 02 0A */ stb r31, 0x20a(r25)
+/* 8030D5B0 00309210 B3 F9 00 00 */ sth r31, 0(r25)
+/* 8030D5B4 00309214 48 00 02 60 */ b lbl_8030D814
+lbl_8030D5B8:
+/* 8030D5B8 00309218 88 78 00 57 */ lbz r3, 0x57(r24)
+/* 8030D5BC 0030921C 54 60 07 3E */ clrlwi r0, r3, 0x1c
+/* 8030D5C0 00309220 2C 00 00 0F */ cmpwi r0, 0xf
+/* 8030D5C4 00309224 40 82 00 24 */ bne lbl_8030D5E8
+/* 8030D5C8 00309228 7F 23 CB 78 */ mr r3, r25
+/* 8030D5CC 0030922C 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D5D0 00309230 4B FF E7 3D */ bl VFiPFENT_LoadLFNEntryFieldsFromBuf
+/* 8030D5D4 00309234 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D5D8 00309238 41 82 02 3C */ beq lbl_8030D814
+/* 8030D5DC 0030923C 9B F9 02 0A */ stb r31, 0x20a(r25)
+/* 8030D5E0 00309240 B3 F9 00 00 */ sth r31, 0(r25)
+/* 8030D5E4 00309244 48 00 02 30 */ b lbl_8030D814
+lbl_8030D5E8:
+/* 8030D5E8 00309248 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D5EC 0030924C 40 82 00 08 */ bne lbl_8030D5F4
+/* 8030D5F0 00309250 38 60 00 40 */ li r3, 0x40
+lbl_8030D5F4:
+/* 8030D5F4 00309254 57 60 06 31 */ rlwinm. r0, r27, 0, 0x18, 0x18
+/* 8030D5F8 00309258 41 82 00 38 */ beq lbl_8030D630
+/* 8030D5FC 0030925C 57 7B 06 7F */ clrlwi. r27, r27, 0x19
+/* 8030D600 00309260 57 9C 06 7E */ clrlwi r28, r28, 0x19
+/* 8030D604 00309264 41 82 00 10 */ beq lbl_8030D614
+/* 8030D608 00309268 7F 60 18 38 */ and r0, r27, r3
+/* 8030D60C 0030926C 7C 1B 00 00 */ cmpw r27, r0
+/* 8030D610 00309270 40 82 00 18 */ bne lbl_8030D628
+lbl_8030D614:
+/* 8030D614 00309274 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030D618 00309278 41 82 00 44 */ beq lbl_8030D65C
+/* 8030D61C 0030927C 7F 80 18 38 */ and r0, r28, r3
+/* 8030D620 00309280 7C 1C 00 00 */ cmpw r28, r0
+/* 8030D624 00309284 40 82 00 38 */ bne lbl_8030D65C
+lbl_8030D628:
+/* 8030D628 00309288 3B C0 FF FF */ li r30, -1
+/* 8030D62C 0030928C 48 00 00 30 */ b lbl_8030D65C
+lbl_8030D630:
+/* 8030D630 00309290 57 60 06 3E */ clrlwi r0, r27, 0x18
+/* 8030D634 00309294 28 00 00 7F */ cmplwi r0, 0x7f
+/* 8030D638 00309298 41 82 00 24 */ beq lbl_8030D65C
+/* 8030D63C 0030929C 7C 03 00 40 */ cmplw r3, r0
+/* 8030D640 003092A0 41 82 00 1C */ beq lbl_8030D65C
+/* 8030D644 003092A4 7C 60 00 39 */ and. r0, r3, r0
+/* 8030D648 003092A8 41 82 00 10 */ beq lbl_8030D658
+/* 8030D64C 003092AC 57 80 06 3E */ clrlwi r0, r28, 0x18
+/* 8030D650 003092B0 7C 60 00 39 */ and. r0, r3, r0
+/* 8030D654 003092B4 41 82 00 08 */ beq lbl_8030D65C
+lbl_8030D658:
+/* 8030D658 003092B8 3B C0 FF FF */ li r30, -1
+lbl_8030D65C:
+/* 8030D65C 003092BC 2C 1E FF FF */ cmpwi r30, -1
+/* 8030D660 003092C0 40 82 00 10 */ bne lbl_8030D670
+/* 8030D664 003092C4 9B F9 02 0A */ stb r31, 0x20a(r25)
+/* 8030D668 003092C8 B3 F9 00 00 */ sth r31, 0(r25)
+/* 8030D66C 003092CC 48 00 01 A8 */ b lbl_8030D814
+lbl_8030D670:
+/* 8030D670 003092D0 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c
+/* 8030D674 003092D4 41 82 00 0C */ beq lbl_8030D680
+/* 8030D678 003092D8 9B F9 02 0A */ stb r31, 0x20a(r25)
+/* 8030D67C 003092DC B3 F9 00 00 */ sth r31, 0(r25)
+lbl_8030D680:
+/* 8030D680 003092E0 7F 23 CB 78 */ mr r3, r25
+/* 8030D684 003092E4 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D688 003092E8 4B FF E5 91 */ bl VFiPFENT_LoadShortNameFromBuf
+/* 8030D68C 003092EC 88 19 02 0A */ lbz r0, 0x20a(r25)
+/* 8030D690 003092F0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030D694 003092F4 41 82 00 94 */ beq lbl_8030D728
+/* 8030D698 003092F8 88 19 02 0B */ lbz r0, 0x20b(r25)
+/* 8030D69C 003092FC 28 00 00 01 */ cmplwi r0, 1
+/* 8030D6A0 00309300 40 82 00 88 */ bne lbl_8030D728
+/* 8030D6A4 00309304 7F 23 CB 78 */ mr r3, r25
+/* 8030D6A8 00309308 4B FF E5 01 */ bl VFiPFENT_CalcCheckSum
+/* 8030D6AC 0030930C 88 19 02 0C */ lbz r0, 0x20c(r25)
+/* 8030D6B0 00309310 54 63 06 3E */ clrlwi r3, r3, 0x18
+/* 8030D6B4 00309314 7C 00 18 40 */ cmplw r0, r3
+/* 8030D6B8 00309318 40 82 00 70 */ bne lbl_8030D728
+/* 8030D6BC 0030931C 7F 23 CB 78 */ mr r3, r25
+/* 8030D6C0 00309320 7F 44 D3 78 */ mr r4, r26
+/* 8030D6C4 00309324 38 A0 00 01 */ li r5, 1
+/* 8030D6C8 00309328 48 00 98 65 */ bl func_80316F2C
+/* 8030D6CC 0030932C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D6D0 00309330 41 82 00 58 */ beq lbl_8030D728
+/* 8030D6D4 00309334 7F 23 CB 78 */ mr r3, r25
+/* 8030D6D8 00309338 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D6DC 0030933C 4B FF E5 85 */ bl VFiPFENT_loadEntryNumericFieldsFromBuf
+/* 8030D6E0 00309340 80 78 00 44 */ lwz r3, 0x44(r24)
+/* 8030D6E4 00309344 88 19 02 1C */ lbz r0, 0x21c(r25)
+/* 8030D6E8 00309348 90 79 02 38 */ stw r3, 0x238(r25)
+/* 8030D6EC 0030934C 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030D6F0 00309350 A0 18 00 48 */ lhz r0, 0x48(r24)
+/* 8030D6F4 00309354 B0 19 02 3C */ sth r0, 0x23c(r25)
+/* 8030D6F8 00309358 80 18 00 3C */ lwz r0, 0x3c(r24)
+/* 8030D6FC 0030935C 90 19 02 2C */ stw r0, 0x22c(r25)
+/* 8030D700 00309360 41 82 00 18 */ beq lbl_8030D718
+/* 8030D704 00309364 80 19 02 34 */ lwz r0, 0x234(r25)
+/* 8030D708 00309368 2C 00 00 00 */ cmpwi r0, 0
+/* 8030D70C 0030936C 40 82 00 0C */ bne lbl_8030D718
+/* 8030D710 00309370 38 00 00 01 */ li r0, 1
+/* 8030D714 00309374 90 19 02 34 */ stw r0, 0x234(r25)
+lbl_8030D718:
+/* 8030D718 00309378 38 00 00 01 */ li r0, 1
+/* 8030D71C 0030937C 38 60 00 00 */ li r3, 0
+/* 8030D720 00309380 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030D724 00309384 48 00 01 A4 */ b lbl_8030D8C8
+lbl_8030D728:
+/* 8030D728 00309388 7F 44 D3 78 */ mr r4, r26
+/* 8030D72C 0030938C 38 79 02 0E */ addi r3, r25, 0x20e
+/* 8030D730 00309390 38 A0 00 00 */ li r5, 0
+/* 8030D734 00309394 48 00 97 F9 */ bl func_80316F2C
+/* 8030D738 00309398 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D73C 0030939C 41 82 00 D0 */ beq lbl_8030D80C
+/* 8030D740 003093A0 88 B8 00 58 */ lbz r5, 0x58(r24)
+/* 8030D744 003093A4 54 A0 06 F9 */ rlwinm. r0, r5, 0, 0x1b, 0x1c
+/* 8030D748 003093A8 41 82 00 70 */ beq lbl_8030D7B8
+/* 8030D74C 003093AC 38 79 02 0E */ addi r3, r25, 0x20e
+/* 8030D750 003093B0 38 81 00 18 */ addi r4, r1, 0x18
+/* 8030D754 003093B4 48 00 9E D9 */ bl func_8031762C
+/* 8030D758 003093B8 7F 23 CB 78 */ mr r3, r25
+/* 8030D75C 003093BC 38 81 00 18 */ addi r4, r1, 0x18
+/* 8030D760 003093C0 48 00 A2 AD */ bl func_80317A0C
+/* 8030D764 003093C4 3C 80 4E C5 */ lis r4, 0x4EC4EC4F@ha
+/* 8030D768 003093C8 38 04 EC 4F */ addi r0, r4, 0x4EC4EC4F@l
+/* 8030D76C 003093CC 7C 00 18 96 */ mulhw r0, r0, r3
+/* 8030D770 003093D0 7C 05 16 70 */ srawi r5, r0, 2
+/* 8030D774 003093D4 7C 00 16 70 */ srawi r0, r0, 2
+/* 8030D778 003093D8 54 04 0F FE */ srwi r4, r0, 0x1f
+/* 8030D77C 003093DC 54 A6 0F FE */ srwi r6, r5, 0x1f
+/* 8030D780 003093E0 7C 00 22 14 */ add r0, r0, r4
+/* 8030D784 003093E4 1C 00 00 0D */ mulli r0, r0, 0xd
+/* 8030D788 003093E8 7C A5 32 14 */ add r5, r5, r6
+/* 8030D78C 003093EC 7C 80 18 50 */ subf r4, r0, r3
+/* 8030D790 003093F0 7F 23 CB 78 */ mr r3, r25
+/* 8030D794 003093F4 7C 04 00 D0 */ neg r0, r4
+/* 8030D798 003093F8 7C 00 23 78 */ or r0, r0, r4
+/* 8030D79C 003093FC 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 8030D7A0 00309400 7C 05 02 14 */ add r0, r5, r0
+/* 8030D7A4 00309404 98 19 02 0A */ stb r0, 0x20a(r25)
+/* 8030D7A8 00309408 4B FF E4 01 */ bl VFiPFENT_CalcCheckSum
+/* 8030D7AC 0030940C 38 00 00 01 */ li r0, 1
+/* 8030D7B0 00309410 98 79 02 0C */ stb r3, 0x20c(r25)
+/* 8030D7B4 00309414 98 19 02 0B */ stb r0, 0x20b(r25)
+lbl_8030D7B8:
+/* 8030D7B8 00309418 7F 23 CB 78 */ mr r3, r25
+/* 8030D7BC 0030941C 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D7C0 00309420 4B FF E4 A1 */ bl VFiPFENT_loadEntryNumericFieldsFromBuf
+/* 8030D7C4 00309424 80 78 00 44 */ lwz r3, 0x44(r24)
+/* 8030D7C8 00309428 88 19 02 1C */ lbz r0, 0x21c(r25)
+/* 8030D7CC 0030942C 90 79 02 38 */ stw r3, 0x238(r25)
+/* 8030D7D0 00309430 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030D7D4 00309434 A0 18 00 48 */ lhz r0, 0x48(r24)
+/* 8030D7D8 00309438 B0 19 02 3C */ sth r0, 0x23c(r25)
+/* 8030D7DC 0030943C 80 18 00 3C */ lwz r0, 0x3c(r24)
+/* 8030D7E0 00309440 90 19 02 2C */ stw r0, 0x22c(r25)
+/* 8030D7E4 00309444 41 82 00 18 */ beq lbl_8030D7FC
+/* 8030D7E8 00309448 80 19 02 34 */ lwz r0, 0x234(r25)
+/* 8030D7EC 0030944C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030D7F0 00309450 40 82 00 0C */ bne lbl_8030D7FC
+/* 8030D7F4 00309454 38 00 00 01 */ li r0, 1
+/* 8030D7F8 00309458 90 19 02 34 */ stw r0, 0x234(r25)
+lbl_8030D7FC:
+/* 8030D7FC 0030945C 38 00 00 01 */ li r0, 1
+/* 8030D800 00309460 38 60 00 00 */ li r3, 0
+/* 8030D804 00309464 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030D808 00309468 48 00 00 C0 */ b lbl_8030D8C8
+lbl_8030D80C:
+/* 8030D80C 0030946C 9B F9 02 0A */ stb r31, 0x20a(r25)
+/* 8030D810 00309470 B3 F9 00 00 */ sth r31, 0(r25)
+lbl_8030D814:
+/* 8030D814 00309474 82 F8 00 00 */ lwz r23, 0(r24)
+/* 8030D818 00309478 7F 03 C3 78 */ mr r3, r24
+/* 8030D81C 0030947C 38 80 00 00 */ li r4, 0
+/* 8030D820 00309480 38 17 00 01 */ addi r0, r23, 1
+/* 8030D824 00309484 90 18 00 00 */ stw r0, 0(r24)
+/* 8030D828 00309488 4B FF F3 D5 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D82C 0030948C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D830 00309490 7C 7E 1B 78 */ mr r30, r3
+/* 8030D834 00309494 41 82 00 18 */ beq lbl_8030D84C
+/* 8030D838 00309498 92 F8 00 00 */ stw r23, 0(r24)
+/* 8030D83C 0030949C 7F 03 C3 78 */ mr r3, r24
+/* 8030D840 003094A0 38 80 00 00 */ li r4, 0
+/* 8030D844 003094A4 4B FF F3 B9 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030D848 003094A8 48 00 00 5C */ b lbl_8030D8A4
+lbl_8030D84C:
+/* 8030D84C 003094AC 80 B8 00 44 */ lwz r5, 0x44(r24)
+/* 8030D850 003094B0 3C 05 00 01 */ addis r0, r5, 1
+/* 8030D854 003094B4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030D858 003094B8 40 82 00 0C */ bne lbl_8030D864
+/* 8030D85C 003094BC 38 80 00 10 */ li r4, 0x10
+/* 8030D860 003094C0 48 00 00 34 */ b lbl_8030D894
+lbl_8030D864:
+/* 8030D864 003094C4 80 78 00 04 */ lwz r3, 4(r24)
+/* 8030D868 003094C8 38 98 00 4C */ addi r4, r24, 0x4c
+/* 8030D86C 003094CC A0 D8 00 48 */ lhz r6, 0x48(r24)
+/* 8030D870 003094D0 39 01 00 08 */ addi r8, r1, 8
+/* 8030D874 003094D4 38 E0 00 20 */ li r7, 0x20
+/* 8030D878 003094D8 39 20 00 00 */ li r9, 0
+/* 8030D87C 003094DC 48 00 B1 AD */ bl func_80318A28
+/* 8030D880 003094E0 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030D884 003094E4 38 80 00 11 */ li r4, 0x11
+/* 8030D888 003094E8 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030D88C 003094EC 40 82 00 08 */ bne lbl_8030D894
+/* 8030D890 003094F0 7C 64 1B 78 */ mr r4, r3
+lbl_8030D894:
+/* 8030D894 003094F4 7C 04 00 D0 */ neg r0, r4
+/* 8030D898 003094F8 7C 00 23 78 */ or r0, r0, r4
+/* 8030D89C 003094FC 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D8A0 00309500 7C 9E 00 38 */ and r30, r4, r0
+lbl_8030D8A4:
+/* 8030D8A4 00309504 7C 1E 00 D0 */ neg r0, r30
+/* 8030D8A8 00309508 7C 00 F3 78 */ or r0, r0, r30
+/* 8030D8AC 0030950C 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030D8B0 00309510 7F DE 00 38 */ and r30, r30, r0
+lbl_8030D8B4:
+/* 8030D8B4 00309514 7F 03 C3 78 */ mr r3, r24
+/* 8030D8B8 00309518 48 00 07 45 */ bl VFiPFENT_ITER_IsAtLogicalEnd
+/* 8030D8BC 0030951C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D8C0 00309520 41 82 FC C8 */ beq lbl_8030D588
+lbl_8030D8C4:
+/* 8030D8C4 00309524 38 60 00 00 */ li r3, 0
+lbl_8030D8C8:
+/* 8030D8C8 00309528 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030D8CC 0030952C 4B EB 98 99 */ bl _restgpr_23
+/* 8030D8D0 00309530 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 8030D8D4 00309534 7C 08 03 A6 */ mtlr r0
+/* 8030D8D8 00309538 38 21 00 50 */ addi r1, r1, 0x50
+/* 8030D8DC 0030953C 4E 80 00 20 */ blr
+
+VFiPFENT_ITER_DoGetEntry:
+/* 8030D8E0 00309540 94 21 FD 60 */ stwu r1, -0x2a0(r1)
+/* 8030D8E4 00309544 7C 08 02 A6 */ mflr r0
+/* 8030D8E8 00309548 90 01 02 A4 */ stw r0, 0x2a4(r1)
+/* 8030D8EC 0030954C 39 61 02 A0 */ addi r11, r1, 0x2a0
+/* 8030D8F0 00309550 4B EB 98 21 */ bl _savegpr_21
+/* 8030D8F4 00309554 7C D6 33 78 */ mr r22, r6
+/* 8030D8F8 00309558 7C 77 1B 78 */ mr r23, r3
+/* 8030D8FC 0030955C 7C 98 23 78 */ mr r24, r4
+/* 8030D900 00309560 7C BB 2B 78 */ mr r27, r5
+/* 8030D904 00309564 7C F9 3B 78 */ mr r25, r7
+/* 8030D908 00309568 7D 1A 43 78 */ mr r26, r8
+/* 8030D90C 0030956C 7E C3 B3 78 */ mr r3, r22
+/* 8030D910 00309570 38 8D 8C E4 */ addi r4, r13, lbl_8063DFA4-_SDA_BASE_
+/* 8030D914 00309574 38 A0 00 01 */ li r5, 1
+/* 8030D918 00309578 38 C0 00 01 */ li r6, 1
+/* 8030D91C 0030957C 38 E0 00 01 */ li r7, 1
+/* 8030D920 00309580 4B FF 7D 41 */ bl VFiPFSTR_StrNCmp
+/* 8030D924 00309584 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D928 00309588 40 82 00 10 */ bne lbl_8030D938
+/* 8030D92C 0030958C 7E C3 B3 78 */ mr r3, r22
+/* 8030D930 00309590 38 80 00 02 */ li r4, 2
+/* 8030D934 00309594 4B FF 7A 05 */ bl VFiPFSTR_MoveStrPos
+lbl_8030D938:
+/* 8030D938 00309598 7E C3 B3 78 */ mr r3, r22
+/* 8030D93C 0030959C 38 8D 8C E8 */ addi r4, r13, lbl_8063DFA8-_SDA_BASE_
+/* 8030D940 003095A0 38 A0 00 01 */ li r5, 1
+/* 8030D944 003095A4 38 C0 00 00 */ li r6, 0
+/* 8030D948 003095A8 38 E0 00 01 */ li r7, 1
+/* 8030D94C 003095AC 4B FF 7D 15 */ bl VFiPFSTR_StrNCmp
+/* 8030D950 003095B0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D954 003095B4 41 82 00 24 */ beq lbl_8030D978
+/* 8030D958 003095B8 7E C3 B3 78 */ mr r3, r22
+/* 8030D95C 003095BC 38 8D 8C EC */ addi r4, r13, lbl_8063DFAC-_SDA_BASE_
+/* 8030D960 003095C0 38 A0 00 01 */ li r5, 1
+/* 8030D964 003095C4 38 C0 00 00 */ li r6, 0
+/* 8030D968 003095C8 38 E0 00 01 */ li r7, 1
+/* 8030D96C 003095CC 4B FF 7C F5 */ bl VFiPFSTR_StrNCmp
+/* 8030D970 003095D0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D974 003095D4 40 82 00 5C */ bne lbl_8030D9D0
+lbl_8030D978:
+/* 8030D978 003095D8 7F 63 DB 78 */ mr r3, r27
+/* 8030D97C 003095DC 7F 04 C3 78 */ mr r4, r24
+/* 8030D980 003095E0 4B FF ED 85 */ bl VFiPFENT_GetRootDir
+/* 8030D984 003095E4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D988 003095E8 41 82 00 08 */ beq lbl_8030D990
+/* 8030D98C 003095EC 48 00 05 54 */ b lbl_8030DEE0
+lbl_8030D990:
+/* 8030D990 003095F0 7E C3 B3 78 */ mr r3, r22
+/* 8030D994 003095F4 38 80 00 01 */ li r4, 1
+/* 8030D998 003095F8 4B FF 7B 45 */ bl VFiPFSTR_StrNumChar
+/* 8030D99C 003095FC 54 60 04 3E */ clrlwi r0, r3, 0x10
+/* 8030D9A0 00309600 28 00 00 01 */ cmplwi r0, 1
+/* 8030D9A4 00309604 40 82 00 44 */ bne lbl_8030D9E8
+/* 8030D9A8 00309608 7E C3 B3 78 */ mr r3, r22
+/* 8030D9AC 0030960C 38 8D 8C F0 */ addi r4, r13, lbl_8063DFB0-_SDA_BASE_
+/* 8030D9B0 00309610 38 A0 00 02 */ li r5, 2
+/* 8030D9B4 00309614 38 C0 00 00 */ li r6, 0
+/* 8030D9B8 00309618 38 E0 00 01 */ li r7, 1
+/* 8030D9BC 0030961C 4B FF 7C A5 */ bl VFiPFSTR_StrNCmp
+/* 8030D9C0 00309620 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D9C4 00309624 40 82 00 24 */ bne lbl_8030D9E8
+/* 8030D9C8 00309628 38 60 00 00 */ li r3, 0
+/* 8030D9CC 0030962C 48 00 05 14 */ b lbl_8030DEE0
+lbl_8030D9D0:
+/* 8030D9D0 00309630 7F 63 DB 78 */ mr r3, r27
+/* 8030D9D4 00309634 7F 04 C3 78 */ mr r4, r24
+/* 8030D9D8 00309638 48 00 BD 25 */ bl func_803196FC
+/* 8030D9DC 0030963C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030D9E0 00309640 41 82 00 08 */ beq lbl_8030D9E8
+/* 8030D9E4 00309644 48 00 04 FC */ b lbl_8030DEE0
+lbl_8030D9E8:
+/* 8030D9E8 00309648 7E C3 B3 78 */ mr r3, r22
+/* 8030D9EC 0030964C 38 80 00 01 */ li r4, 1
+/* 8030D9F0 00309650 4B FF 79 21 */ bl VFiPFSTR_GetStrPos
+/* 8030D9F4 00309654 7C 75 1B 78 */ mr r21, r3
+/* 8030D9F8 00309658 7F 65 DB 78 */ mr r5, r27
+/* 8030D9FC 0030965C 38 77 00 08 */ addi r3, r23, 8
+/* 8030DA00 00309660 38 81 00 14 */ addi r4, r1, 0x14
+/* 8030DA04 00309664 38 D7 00 0C */ addi r6, r23, 0xc
+/* 8030DA08 00309668 48 00 36 C1 */ bl VFiPFFAT_InitFFD
+/* 8030DA0C 0030966C 80 18 02 34 */ lwz r0, 0x234(r24)
+/* 8030DA10 00309670 7E C3 B3 78 */ mr r3, r22
+/* 8030DA14 00309674 90 17 00 0C */ stw r0, 0xc(r23)
+/* 8030DA18 00309678 4B FF 78 C9 */ bl VFiPFSTR_GetCodeMode
+/* 8030DA1C 0030967C 7C 65 1B 78 */ mr r5, r3
+/* 8030DA20 00309680 7E A4 AB 78 */ mr r4, r21
+/* 8030DA24 00309684 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DA28 00309688 48 00 90 D1 */ bl func_80316AF8
+/* 8030DA2C 0030968C 7F 24 CB 78 */ mr r4, r25
+/* 8030DA30 00309690 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DA34 00309694 48 00 90 D5 */ bl func_80316B08
+/* 8030DA38 00309698 3B 80 00 00 */ li r28, 0
+/* 8030DA3C 0030969C 3B A0 00 01 */ li r29, 1
+/* 8030DA40 003096A0 3B C0 FF FF */ li r30, -1
+/* 8030DA44 003096A4 3B E0 00 03 */ li r31, 3
+/* 8030DA48 003096A8 48 00 04 88 */ b lbl_8030DED0
+lbl_8030DA4C:
+/* 8030DA4C 003096AC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DA50 003096B0 41 82 00 08 */ beq lbl_8030DA58
+/* 8030DA54 003096B4 48 00 04 8C */ b lbl_8030DEE0
+lbl_8030DA58:
+/* 8030DA58 003096B8 2C 1A 00 00 */ cmpwi r26, 0
+/* 8030DA5C 003096BC 41 82 00 24 */ beq lbl_8030DA80
+/* 8030DA60 003096C0 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DA64 003096C4 38 8D 8C F0 */ addi r4, r13, lbl_8063DFB0-_SDA_BASE_
+/* 8030DA68 003096C8 38 A0 00 02 */ li r5, 2
+/* 8030DA6C 003096CC 38 C0 00 00 */ li r6, 0
+/* 8030DA70 003096D0 38 E0 00 01 */ li r7, 1
+/* 8030DA74 003096D4 4B FF 7B ED */ bl VFiPFSTR_StrNCmp
+/* 8030DA78 003096D8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DA7C 003096DC 41 82 04 60 */ beq lbl_8030DEDC
+lbl_8030DA80:
+/* 8030DA80 003096E0 88 18 02 1C */ lbz r0, 0x21c(r24)
+/* 8030DA84 003096E4 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030DA88 003096E8 40 82 00 0C */ bne lbl_8030DA94
+/* 8030DA8C 003096EC 38 60 00 02 */ li r3, 2
+/* 8030DA90 003096F0 48 00 04 50 */ b lbl_8030DEE0
+lbl_8030DA94:
+/* 8030DA94 003096F4 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DA98 003096F8 4B FF 7A 31 */ bl VFiPFSTR_StrLen
+/* 8030DA9C 003096FC 54 60 04 3F */ clrlwi. r0, r3, 0x10
+/* 8030DAA0 00309700 40 82 00 0C */ bne lbl_8030DAAC
+/* 8030DAA4 00309704 38 60 00 02 */ li r3, 2
+/* 8030DAA8 00309708 48 00 04 38 */ b lbl_8030DEE0
+lbl_8030DAAC:
+/* 8030DAAC 0030970C 80 18 02 34 */ lwz r0, 0x234(r24)
+/* 8030DAB0 00309710 38 77 00 08 */ addi r3, r23, 8
+/* 8030DAB4 00309714 38 97 00 0C */ addi r4, r23, 0xc
+/* 8030DAB8 00309718 90 17 00 0C */ stw r0, 0xc(r23)
+/* 8030DABC 0030971C 48 00 35 AD */ bl VFiPFFAT_ResetFFD
+/* 8030DAC0 00309720 80 77 00 3C */ lwz r3, 0x3c(r23)
+/* 8030DAC4 00309724 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DAC8 00309728 90 77 00 04 */ stw r3, 4(r23)
+/* 8030DACC 0030972C 40 82 00 0C */ bne lbl_8030DAD8
+/* 8030DAD0 00309730 3A C0 00 0A */ li r22, 0xa
+/* 8030DAD4 00309734 48 00 00 B0 */ b lbl_8030DB84
+lbl_8030DAD8:
+/* 8030DAD8 00309738 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 8030DADC 0030973C 7E E3 BB 78 */ mr r3, r23
+/* 8030DAE0 00309740 83 77 00 00 */ lwz r27, 0(r23)
+/* 8030DAE4 00309744 38 80 00 00 */ li r4, 0
+/* 8030DAE8 00309748 38 C5 FF FB */ addi r6, r5, -5
+/* 8030DAEC 0030974C 93 D7 00 40 */ stw r30, 0x40(r23)
+/* 8030DAF0 00309750 54 C0 06 3E */ clrlwi r0, r6, 0x18
+/* 8030DAF4 00309754 7F A5 00 30 */ slw r5, r29, r0
+/* 8030DAF8 00309758 98 D7 00 6C */ stb r6, 0x6c(r23)
+/* 8030DAFC 0030975C 38 05 FF FF */ addi r0, r5, -1
+/* 8030DB00 00309760 B0 17 00 4A */ sth r0, 0x4a(r23)
+/* 8030DB04 00309764 93 97 00 00 */ stw r28, 0(r23)
+/* 8030DB08 00309768 4B FF F0 F5 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DB0C 0030976C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DB10 00309770 7C 76 1B 78 */ mr r22, r3
+/* 8030DB14 00309774 41 82 00 18 */ beq lbl_8030DB2C
+/* 8030DB18 00309778 93 77 00 00 */ stw r27, 0(r23)
+/* 8030DB1C 0030977C 7E E3 BB 78 */ mr r3, r23
+/* 8030DB20 00309780 38 80 00 00 */ li r4, 0
+/* 8030DB24 00309784 4B FF F0 D9 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DB28 00309788 48 00 00 5C */ b lbl_8030DB84
+lbl_8030DB2C:
+/* 8030DB2C 0030978C 80 B7 00 44 */ lwz r5, 0x44(r23)
+/* 8030DB30 00309790 3C 05 00 01 */ addis r0, r5, 1
+/* 8030DB34 00309794 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030DB38 00309798 40 82 00 0C */ bne lbl_8030DB44
+/* 8030DB3C 0030979C 38 80 00 10 */ li r4, 0x10
+/* 8030DB40 003097A0 48 00 00 34 */ b lbl_8030DB74
+lbl_8030DB44:
+/* 8030DB44 003097A4 80 77 00 04 */ lwz r3, 4(r23)
+/* 8030DB48 003097A8 38 97 00 4C */ addi r4, r23, 0x4c
+/* 8030DB4C 003097AC A0 D7 00 48 */ lhz r6, 0x48(r23)
+/* 8030DB50 003097B0 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030DB54 003097B4 38 E0 00 20 */ li r7, 0x20
+/* 8030DB58 003097B8 39 20 00 00 */ li r9, 0
+/* 8030DB5C 003097BC 48 00 AE CD */ bl func_80318A28
+/* 8030DB60 003097C0 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030DB64 003097C4 38 80 00 11 */ li r4, 0x11
+/* 8030DB68 003097C8 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030DB6C 003097CC 40 82 00 08 */ bne lbl_8030DB74
+/* 8030DB70 003097D0 7C 64 1B 78 */ mr r4, r3
+lbl_8030DB74:
+/* 8030DB74 003097D4 7C 04 00 D0 */ neg r0, r4
+/* 8030DB78 003097D8 7C 00 23 78 */ or r0, r0, r4
+/* 8030DB7C 003097DC 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030DB80 003097E0 7C 96 00 38 */ and r22, r4, r0
+lbl_8030DB84:
+/* 8030DB84 003097E4 2C 16 00 00 */ cmpwi r22, 0
+/* 8030DB88 003097E8 41 82 00 0C */ beq lbl_8030DB94
+/* 8030DB8C 003097EC 7E C3 B3 78 */ mr r3, r22
+/* 8030DB90 003097F0 48 00 03 50 */ b lbl_8030DEE0
+lbl_8030DB94:
+/* 8030DB94 003097F4 80 B7 00 10 */ lwz r5, 0x10(r23)
+/* 8030DB98 003097F8 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DB9C 003097FC 3A A0 00 00 */ li r21, 0
+/* 8030DBA0 00309800 38 8D 8C D0 */ addi r4, r13, lbl_8063DF90-_SDA_BASE_
+/* 8030DBA4 00309804 83 65 00 00 */ lwz r27, 0(r5)
+/* 8030DBA8 00309808 38 A0 00 01 */ li r5, 1
+/* 8030DBAC 0030980C 38 C0 00 00 */ li r6, 0
+/* 8030DBB0 00309810 38 E0 00 03 */ li r7, 3
+/* 8030DBB4 00309814 4B FF 7A AD */ bl VFiPFSTR_StrNCmp
+/* 8030DBB8 00309818 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DBBC 0030981C 41 82 00 38 */ beq lbl_8030DBF4
+/* 8030DBC0 00309820 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DBC4 00309824 38 8D 8C D4 */ addi r4, r13, lbl_8063DF94-_SDA_BASE_
+/* 8030DBC8 00309828 38 A0 00 01 */ li r5, 1
+/* 8030DBCC 0030982C 38 C0 00 00 */ li r6, 0
+/* 8030DBD0 00309830 38 E0 00 03 */ li r7, 3
+/* 8030DBD4 00309834 4B FF 7A 8D */ bl VFiPFSTR_StrNCmp
+/* 8030DBD8 00309838 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DBDC 0030983C 41 82 00 18 */ beq lbl_8030DBF4
+/* 8030DBE0 00309840 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DBE4 00309844 38 8D 8C D8 */ addi r4, r13, lbl_8063DF98-_SDA_BASE_
+/* 8030DBE8 00309848 4B FF 79 D5 */ bl VFiPFSTR_StrCmp
+/* 8030DBEC 0030984C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DBF0 00309850 40 82 00 40 */ bne lbl_8030DC30
+lbl_8030DBF4:
+/* 8030DBF4 00309854 38 78 02 0E */ addi r3, r24, 0x20e
+/* 8030DBF8 00309858 38 8D 8C D8 */ addi r4, r13, lbl_8063DF98-_SDA_BASE_
+/* 8030DBFC 0030985C 4B FF 75 15 */ bl VFipf_strcmp
+/* 8030DC00 00309860 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DC04 00309864 41 82 00 2C */ beq lbl_8030DC30
+/* 8030DC08 00309868 88 18 02 0A */ lbz r0, 0x20a(r24)
+/* 8030DC0C 0030986C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030DC10 00309870 41 82 00 14 */ beq lbl_8030DC24
+/* 8030DC14 00309874 7F 03 C3 78 */ mr r3, r24
+/* 8030DC18 00309878 48 00 9C 2D */ bl func_80317844
+/* 8030DC1C 0030987C 3A A3 00 01 */ addi r21, r3, 1
+/* 8030DC20 00309880 48 00 00 10 */ b lbl_8030DC30
+lbl_8030DC24:
+/* 8030DC24 00309884 38 78 02 0E */ addi r3, r24, 0x20e
+/* 8030DC28 00309888 48 00 9B B5 */ bl func_803177DC
+/* 8030DC2C 0030988C 3A A3 00 01 */ addi r21, r3, 1
+lbl_8030DC30:
+/* 8030DC30 00309890 7E E3 BB 78 */ mr r3, r23
+/* 8030DC34 00309894 7F 04 C3 78 */ mr r4, r24
+/* 8030DC38 00309898 38 A1 00 20 */ addi r5, r1, 0x20
+/* 8030DC3C 0030989C 39 01 00 10 */ addi r8, r1, 0x10
+/* 8030DC40 003098A0 38 C0 00 7F */ li r6, 0x7f
+/* 8030DC44 003098A4 38 E0 00 00 */ li r7, 0
+/* 8030DC48 003098A8 39 20 00 01 */ li r9, 1
+/* 8030DC4C 003098AC 4B FF F4 7D */ bl VFiPFENT_ITER_DoFindEntry
+/* 8030DC50 003098B0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DC54 003098B4 41 82 00 08 */ beq lbl_8030DC5C
+/* 8030DC58 003098B8 48 00 02 88 */ b lbl_8030DEE0
+lbl_8030DC5C:
+/* 8030DC5C 003098BC 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030DC60 003098C0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030DC64 003098C4 40 82 00 30 */ bne lbl_8030DC94
+/* 8030DC68 003098C8 7F 24 CB 78 */ mr r4, r25
+/* 8030DC6C 003098CC 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DC70 003098D0 48 00 8E 99 */ bl func_80316B08
+/* 8030DC74 003098D4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DC78 003098D8 41 82 00 08 */ beq lbl_8030DC80
+/* 8030DC7C 003098DC 48 00 02 64 */ b lbl_8030DEE0
+lbl_8030DC80:
+/* 8030DC80 003098E0 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 8030DC84 003098E4 7C 00 00 34 */ cntlzw r0, r0
+/* 8030DC88 003098E8 54 03 D9 7E */ srwi r3, r0, 5
+/* 8030DC8C 003098EC 38 63 00 02 */ addi r3, r3, 2
+/* 8030DC90 003098F0 48 00 02 50 */ b lbl_8030DEE0
+lbl_8030DC94:
+/* 8030DC94 003098F4 2C 19 00 00 */ cmpwi r25, 0
+/* 8030DC98 003098F8 40 82 02 2C */ bne lbl_8030DEC4
+/* 8030DC9C 003098FC 88 18 02 1C */ lbz r0, 0x21c(r24)
+/* 8030DCA0 00309900 54 03 06 F7 */ rlwinm. r3, r0, 0, 0x1b, 0x1b
+/* 8030DCA4 00309904 41 82 00 18 */ beq lbl_8030DCBC
+/* 8030DCA8 00309908 80 18 02 34 */ lwz r0, 0x234(r24)
+/* 8030DCAC 0030990C 28 00 00 01 */ cmplwi r0, 1
+/* 8030DCB0 00309910 40 82 00 0C */ bne lbl_8030DCBC
+/* 8030DCB4 00309914 93 F8 02 30 */ stw r31, 0x230(r24)
+/* 8030DCB8 00309918 48 00 02 0C */ b lbl_8030DEC4
+lbl_8030DCBC:
+/* 8030DCBC 0030991C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DCC0 00309920 41 82 01 90 */ beq lbl_8030DE50
+/* 8030DCC4 00309924 38 78 02 0E */ addi r3, r24, 0x20e
+/* 8030DCC8 00309928 38 8D 8C D8 */ addi r4, r13, lbl_8063DF98-_SDA_BASE_
+/* 8030DCCC 0030992C 4B FF 74 45 */ bl VFipf_strcmp
+/* 8030DCD0 00309930 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DCD4 00309934 40 82 01 7C */ bne lbl_8030DE50
+/* 8030DCD8 00309938 2C 15 00 00 */ cmpwi r21, 0
+/* 8030DCDC 0030993C 41 82 00 14 */ beq lbl_8030DCF0
+/* 8030DCE0 00309940 80 18 02 30 */ lwz r0, 0x230(r24)
+/* 8030DCE4 00309944 7C 15 00 50 */ subf r0, r21, r0
+/* 8030DCE8 00309948 90 18 02 30 */ stw r0, 0x230(r24)
+/* 8030DCEC 0030994C 48 00 01 D8 */ b lbl_8030DEC4
+lbl_8030DCF0:
+/* 8030DCF0 00309950 80 18 02 34 */ lwz r0, 0x234(r24)
+/* 8030DCF4 00309954 38 77 00 08 */ addi r3, r23, 8
+/* 8030DCF8 00309958 38 81 02 64 */ addi r4, r1, 0x264
+/* 8030DCFC 0030995C 90 01 02 64 */ stw r0, 0x264(r1)
+/* 8030DD00 00309960 48 00 33 69 */ bl VFiPFFAT_ResetFFD
+/* 8030DD04 00309964 80 77 00 3C */ lwz r3, 0x3c(r23)
+/* 8030DD08 00309968 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DD0C 0030996C 90 77 00 04 */ stw r3, 4(r23)
+/* 8030DD10 00309970 40 82 00 0C */ bne lbl_8030DD1C
+/* 8030DD14 00309974 3A A0 00 0A */ li r21, 0xa
+/* 8030DD18 00309978 48 00 00 B0 */ b lbl_8030DDC8
+lbl_8030DD1C:
+/* 8030DD1C 0030997C 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 8030DD20 00309980 7E E3 BB 78 */ mr r3, r23
+/* 8030DD24 00309984 82 D7 00 00 */ lwz r22, 0(r23)
+/* 8030DD28 00309988 38 80 00 00 */ li r4, 0
+/* 8030DD2C 0030998C 38 C5 FF FB */ addi r6, r5, -5
+/* 8030DD30 00309990 93 D7 00 40 */ stw r30, 0x40(r23)
+/* 8030DD34 00309994 54 C0 06 3E */ clrlwi r0, r6, 0x18
+/* 8030DD38 00309998 7F A5 00 30 */ slw r5, r29, r0
+/* 8030DD3C 0030999C 98 D7 00 6C */ stb r6, 0x6c(r23)
+/* 8030DD40 003099A0 38 05 FF FF */ addi r0, r5, -1
+/* 8030DD44 003099A4 B0 17 00 4A */ sth r0, 0x4a(r23)
+/* 8030DD48 003099A8 93 97 00 00 */ stw r28, 0(r23)
+/* 8030DD4C 003099AC 4B FF EE B1 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DD50 003099B0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DD54 003099B4 7C 75 1B 78 */ mr r21, r3
+/* 8030DD58 003099B8 41 82 00 18 */ beq lbl_8030DD70
+/* 8030DD5C 003099BC 92 D7 00 00 */ stw r22, 0(r23)
+/* 8030DD60 003099C0 7E E3 BB 78 */ mr r3, r23
+/* 8030DD64 003099C4 38 80 00 00 */ li r4, 0
+/* 8030DD68 003099C8 4B FF EE 95 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DD6C 003099CC 48 00 00 5C */ b lbl_8030DDC8
+lbl_8030DD70:
+/* 8030DD70 003099D0 80 B7 00 44 */ lwz r5, 0x44(r23)
+/* 8030DD74 003099D4 3C 05 00 01 */ addis r0, r5, 1
+/* 8030DD78 003099D8 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030DD7C 003099DC 40 82 00 0C */ bne lbl_8030DD88
+/* 8030DD80 003099E0 38 80 00 10 */ li r4, 0x10
+/* 8030DD84 003099E4 48 00 00 34 */ b lbl_8030DDB8
+lbl_8030DD88:
+/* 8030DD88 003099E8 80 77 00 04 */ lwz r3, 4(r23)
+/* 8030DD8C 003099EC 38 97 00 4C */ addi r4, r23, 0x4c
+/* 8030DD90 003099F0 A0 D7 00 48 */ lhz r6, 0x48(r23)
+/* 8030DD94 003099F4 39 01 00 08 */ addi r8, r1, 8
+/* 8030DD98 003099F8 38 E0 00 20 */ li r7, 0x20
+/* 8030DD9C 003099FC 39 20 00 00 */ li r9, 0
+/* 8030DDA0 00309A00 48 00 AC 89 */ bl func_80318A28
+/* 8030DDA4 00309A04 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030DDA8 00309A08 38 80 00 11 */ li r4, 0x11
+/* 8030DDAC 00309A0C 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030DDB0 00309A10 40 82 00 08 */ bne lbl_8030DDB8
+/* 8030DDB4 00309A14 7C 64 1B 78 */ mr r4, r3
+lbl_8030DDB8:
+/* 8030DDB8 00309A18 7C 04 00 D0 */ neg r0, r4
+/* 8030DDBC 00309A1C 7C 00 23 78 */ or r0, r0, r4
+/* 8030DDC0 00309A20 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030DDC4 00309A24 7C 95 00 38 */ and r21, r4, r0
+lbl_8030DDC8:
+/* 8030DDC8 00309A28 2C 15 00 00 */ cmpwi r21, 0
+/* 8030DDCC 00309A2C 41 82 00 0C */ beq lbl_8030DDD8
+/* 8030DDD0 00309A30 7E A3 AB 78 */ mr r3, r21
+/* 8030DDD4 00309A34 48 00 01 0C */ b lbl_8030DEE0
+lbl_8030DDD8:
+/* 8030DDD8 00309A38 7E E3 BB 78 */ mr r3, r23
+/* 8030DDDC 00309A3C 7F 65 DB 78 */ mr r5, r27
+/* 8030DDE0 00309A40 38 81 00 30 */ addi r4, r1, 0x30
+/* 8030DDE4 00309A44 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030DDE8 00309A48 4B FF EF C1 */ bl VFiPFENT_ITER_FindCluster
+/* 8030DDEC 00309A4C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DDF0 00309A50 41 82 00 08 */ beq lbl_8030DDF8
+/* 8030DDF4 00309A54 48 00 00 EC */ b lbl_8030DEE0
+lbl_8030DDF8:
+/* 8030DDF8 00309A58 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030DDFC 00309A5C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030DE00 00309A60 40 82 00 0C */ bne lbl_8030DE0C
+/* 8030DE04 00309A64 38 60 00 02 */ li r3, 2
+/* 8030DE08 00309A68 48 00 00 D8 */ b lbl_8030DEE0
+lbl_8030DE0C:
+/* 8030DE0C 00309A6C 88 01 02 3A */ lbz r0, 0x23a(r1)
+/* 8030DE10 00309A70 2C 00 00 00 */ cmpwi r0, 0
+/* 8030DE14 00309A74 41 82 00 20 */ beq lbl_8030DE34
+/* 8030DE18 00309A78 38 61 00 30 */ addi r3, r1, 0x30
+/* 8030DE1C 00309A7C 48 00 9A 29 */ bl func_80317844
+/* 8030DE20 00309A80 80 18 02 30 */ lwz r0, 0x230(r24)
+/* 8030DE24 00309A84 38 63 00 01 */ addi r3, r3, 1
+/* 8030DE28 00309A88 7C 03 00 50 */ subf r0, r3, r0
+/* 8030DE2C 00309A8C 90 18 02 30 */ stw r0, 0x230(r24)
+/* 8030DE30 00309A90 48 00 00 94 */ b lbl_8030DEC4
+lbl_8030DE34:
+/* 8030DE34 00309A94 38 61 02 3E */ addi r3, r1, 0x23e
+/* 8030DE38 00309A98 48 00 99 A5 */ bl func_803177DC
+/* 8030DE3C 00309A9C 80 18 02 30 */ lwz r0, 0x230(r24)
+/* 8030DE40 00309AA0 38 63 00 01 */ addi r3, r3, 1
+/* 8030DE44 00309AA4 7C 03 00 50 */ subf r0, r3, r0
+/* 8030DE48 00309AA8 90 18 02 30 */ stw r0, 0x230(r24)
+/* 8030DE4C 00309AAC 48 00 00 78 */ b lbl_8030DEC4
+lbl_8030DE50:
+/* 8030DE50 00309AB0 88 18 02 1C */ lbz r0, 0x21c(r24)
+/* 8030DE54 00309AB4 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
+/* 8030DE58 00309AB8 41 82 00 10 */ beq lbl_8030DE68
+/* 8030DE5C 00309ABC 88 18 02 0E */ lbz r0, 0x20e(r24)
+/* 8030DE60 00309AC0 2C 00 00 2E */ cmpwi r0, 0x2e
+/* 8030DE64 00309AC4 41 82 00 60 */ beq lbl_8030DEC4
+lbl_8030DE68:
+/* 8030DE68 00309AC8 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DE6C 00309ACC 38 80 00 01 */ li r4, 1
+/* 8030DE70 00309AD0 4B FF 76 6D */ bl VFiPFSTR_StrNumChar
+/* 8030DE74 00309AD4 80 18 02 30 */ lwz r0, 0x230(r24)
+/* 8030DE78 00309AD8 54 65 04 3E */ clrlwi r5, r3, 0x10
+/* 8030DE7C 00309ADC 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DE80 00309AE0 38 8D 8C F0 */ addi r4, r13, lbl_8063DFB0-_SDA_BASE_
+/* 8030DE84 00309AE4 7C C5 02 14 */ add r6, r5, r0
+/* 8030DE88 00309AE8 38 A0 00 02 */ li r5, 2
+/* 8030DE8C 00309AEC 38 06 00 01 */ addi r0, r6, 1
+/* 8030DE90 00309AF0 38 E0 00 01 */ li r7, 1
+/* 8030DE94 00309AF4 90 18 02 30 */ stw r0, 0x230(r24)
+/* 8030DE98 00309AF8 38 C0 00 00 */ li r6, 0
+/* 8030DE9C 00309AFC 4B FF 77 C5 */ bl VFiPFSTR_StrNCmp
+/* 8030DEA0 00309B00 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DEA4 00309B04 41 82 00 20 */ beq lbl_8030DEC4
+/* 8030DEA8 00309B08 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DEAC 00309B0C 38 80 00 02 */ li r4, 2
+/* 8030DEB0 00309B10 4B FF 76 2D */ bl VFiPFSTR_StrNumChar
+/* 8030DEB4 00309B14 80 18 02 30 */ lwz r0, 0x230(r24)
+/* 8030DEB8 00309B18 54 63 04 3E */ clrlwi r3, r3, 0x10
+/* 8030DEBC 00309B1C 7C 03 00 50 */ subf r0, r3, r0
+/* 8030DEC0 00309B20 90 18 02 30 */ stw r0, 0x230(r24)
+lbl_8030DEC4:
+/* 8030DEC4 00309B24 7F 24 CB 78 */ mr r4, r25
+/* 8030DEC8 00309B28 38 61 00 20 */ addi r3, r1, 0x20
+/* 8030DECC 00309B2C 48 00 8C 3D */ bl func_80316B08
+lbl_8030DED0:
+/* 8030DED0 00309B30 80 01 00 20 */ lwz r0, 0x20(r1)
+/* 8030DED4 00309B34 2C 00 00 00 */ cmpwi r0, 0
+/* 8030DED8 00309B38 40 82 FB 74 */ bne lbl_8030DA4C
+lbl_8030DEDC:
+/* 8030DEDC 00309B3C 38 60 00 00 */ li r3, 0
+lbl_8030DEE0:
+/* 8030DEE0 00309B40 39 61 02 A0 */ addi r11, r1, 0x2a0
+/* 8030DEE4 00309B44 4B EB 92 79 */ bl _restgpr_21
+/* 8030DEE8 00309B48 80 01 02 A4 */ lwz r0, 0x2a4(r1)
+/* 8030DEEC 00309B4C 7C 08 03 A6 */ mtlr r0
+/* 8030DEF0 00309B50 38 21 02 A0 */ addi r1, r1, 0x2a0
+/* 8030DEF4 00309B54 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_IteratorInitialize
+VFiPFENT_ITER_IteratorInitialize:
+/* 8030DEF8 00309B58 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030DEFC 00309B5C 7C 08 02 A6 */ mflr r0
+/* 8030DF00 00309B60 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030DF04 00309B64 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030DF08 00309B68 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030DF0C 00309B6C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030DF10 00309B70 7C 7D 1B 78 */ mr r29, r3
+/* 8030DF14 00309B74 80 A3 00 3C */ lwz r5, 0x3c(r3)
+/* 8030DF18 00309B78 2C 05 00 00 */ cmpwi r5, 0
+/* 8030DF1C 00309B7C 90 A3 00 04 */ stw r5, 4(r3)
+/* 8030DF20 00309B80 40 82 00 0C */ bne lbl_8030DF2C
+/* 8030DF24 00309B84 38 60 00 0A */ li r3, 0xa
+/* 8030DF28 00309B88 48 00 00 B8 */ b lbl_8030DFE0
+lbl_8030DF2C:
+/* 8030DF2C 00309B8C 88 C5 00 20 */ lbz r6, 0x20(r5)
+/* 8030DF30 00309B90 38 00 FF FF */ li r0, -1
+/* 8030DF34 00309B94 83 C3 00 00 */ lwz r30, 0(r3)
+/* 8030DF38 00309B98 38 A0 00 01 */ li r5, 1
+/* 8030DF3C 00309B9C 38 C6 FF FB */ addi r6, r6, -5
+/* 8030DF40 00309BA0 90 03 00 40 */ stw r0, 0x40(r3)
+/* 8030DF44 00309BA4 54 C0 06 3E */ clrlwi r0, r6, 0x18
+/* 8030DF48 00309BA8 7C A5 00 30 */ slw r5, r5, r0
+/* 8030DF4C 00309BAC 90 83 00 00 */ stw r4, 0(r3)
+/* 8030DF50 00309BB0 38 05 FF FF */ addi r0, r5, -1
+/* 8030DF54 00309BB4 38 80 00 00 */ li r4, 0
+/* 8030DF58 00309BB8 98 C3 00 6C */ stb r6, 0x6c(r3)
+/* 8030DF5C 00309BBC B0 03 00 4A */ sth r0, 0x4a(r3)
+/* 8030DF60 00309BC0 4B FF EC 9D */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DF64 00309BC4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030DF68 00309BC8 7C 7F 1B 78 */ mr r31, r3
+/* 8030DF6C 00309BCC 41 82 00 18 */ beq lbl_8030DF84
+/* 8030DF70 00309BD0 93 DD 00 00 */ stw r30, 0(r29)
+/* 8030DF74 00309BD4 7F A3 EB 78 */ mr r3, r29
+/* 8030DF78 00309BD8 38 80 00 00 */ li r4, 0
+/* 8030DF7C 00309BDC 4B FF EC 81 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030DF80 00309BE0 48 00 00 5C */ b lbl_8030DFDC
+lbl_8030DF84:
+/* 8030DF84 00309BE4 80 BD 00 44 */ lwz r5, 0x44(r29)
+/* 8030DF88 00309BE8 3C 05 00 01 */ addis r0, r5, 1
+/* 8030DF8C 00309BEC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030DF90 00309BF0 40 82 00 0C */ bne lbl_8030DF9C
+/* 8030DF94 00309BF4 38 80 00 10 */ li r4, 0x10
+/* 8030DF98 00309BF8 48 00 00 34 */ b lbl_8030DFCC
+lbl_8030DF9C:
+/* 8030DF9C 00309BFC 80 7D 00 04 */ lwz r3, 4(r29)
+/* 8030DFA0 00309C00 38 9D 00 4C */ addi r4, r29, 0x4c
+/* 8030DFA4 00309C04 A0 DD 00 48 */ lhz r6, 0x48(r29)
+/* 8030DFA8 00309C08 39 01 00 08 */ addi r8, r1, 8
+/* 8030DFAC 00309C0C 38 E0 00 20 */ li r7, 0x20
+/* 8030DFB0 00309C10 39 20 00 00 */ li r9, 0
+/* 8030DFB4 00309C14 48 00 AA 75 */ bl func_80318A28
+/* 8030DFB8 00309C18 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030DFBC 00309C1C 38 80 00 11 */ li r4, 0x11
+/* 8030DFC0 00309C20 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030DFC4 00309C24 40 82 00 08 */ bne lbl_8030DFCC
+/* 8030DFC8 00309C28 7C 64 1B 78 */ mr r4, r3
+lbl_8030DFCC:
+/* 8030DFCC 00309C2C 7C 04 00 D0 */ neg r0, r4
+/* 8030DFD0 00309C30 7C 00 23 78 */ or r0, r0, r4
+/* 8030DFD4 00309C34 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030DFD8 00309C38 7C 9F 00 38 */ and r31, r4, r0
+lbl_8030DFDC:
+/* 8030DFDC 00309C3C 7F E3 FB 78 */ mr r3, r31
+lbl_8030DFE0:
+/* 8030DFE0 00309C40 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030DFE4 00309C44 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030DFE8 00309C48 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030DFEC 00309C4C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030DFF0 00309C50 7C 08 03 A6 */ mtlr r0
+/* 8030DFF4 00309C54 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030DFF8 00309C58 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_IsAtLogicalEnd
+VFiPFENT_ITER_IsAtLogicalEnd:
+/* 8030DFFC 00309C5C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030E000 00309C60 7C 08 02 A6 */ mflr r0
+/* 8030E004 00309C64 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030E008 00309C68 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030E00C 00309C6C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030E010 00309C70 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030E014 00309C74 7C 7D 1B 78 */ mr r29, r3
+/* 8030E018 00309C78 80 83 00 44 */ lwz r4, 0x44(r3)
+/* 8030E01C 00309C7C 3C 04 00 01 */ addis r0, r4, 1
+/* 8030E020 00309C80 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E024 00309C84 41 82 00 24 */ beq lbl_8030E048
+/* 8030E028 00309C88 88 03 00 4C */ lbz r0, 0x4c(r3)
+/* 8030E02C 00309C8C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E030 00309C90 41 82 00 18 */ beq lbl_8030E048
+/* 8030E034 00309C94 3C 80 00 0F */ lis r4, 0x000F423F@ha
+/* 8030E038 00309C98 80 A3 00 00 */ lwz r5, 0(r3)
+/* 8030E03C 00309C9C 38 04 42 3F */ addi r0, r4, 0x000F423F@l
+/* 8030E040 00309CA0 7C 05 00 40 */ cmplw r5, r0
+/* 8030E044 00309CA4 41 80 00 A4 */ blt lbl_8030E0E8
+lbl_8030E048:
+/* 8030E048 00309CA8 83 E3 00 40 */ lwz r31, 0x40(r3)
+/* 8030E04C 00309CAC 38 80 00 00 */ li r4, 0
+/* 8030E050 00309CB0 88 03 00 6C */ lbz r0, 0x6c(r3)
+/* 8030E054 00309CB4 38 BF 00 01 */ addi r5, r31, 1
+/* 8030E058 00309CB8 83 C3 00 00 */ lwz r30, 0(r3)
+/* 8030E05C 00309CBC 7C A0 00 30 */ slw r0, r5, r0
+/* 8030E060 00309CC0 90 03 00 00 */ stw r0, 0(r3)
+/* 8030E064 00309CC4 7F A3 EB 78 */ mr r3, r29
+/* 8030E068 00309CC8 4B FF EB 95 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E06C 00309CCC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E070 00309CD0 41 82 00 14 */ beq lbl_8030E084
+/* 8030E074 00309CD4 93 DD 00 00 */ stw r30, 0(r29)
+/* 8030E078 00309CD8 38 60 00 01 */ li r3, 1
+/* 8030E07C 00309CDC 93 FD 00 40 */ stw r31, 0x40(r29)
+/* 8030E080 00309CE0 48 00 00 6C */ b lbl_8030E0EC
+lbl_8030E084:
+/* 8030E084 00309CE4 80 BD 00 44 */ lwz r5, 0x44(r29)
+/* 8030E088 00309CE8 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E08C 00309CEC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E090 00309CF0 41 82 00 50 */ beq lbl_8030E0E0
+/* 8030E094 00309CF4 40 82 00 0C */ bne lbl_8030E0A0
+/* 8030E098 00309CF8 38 80 00 10 */ li r4, 0x10
+/* 8030E09C 00309CFC 48 00 00 34 */ b lbl_8030E0D0
+lbl_8030E0A0:
+/* 8030E0A0 00309D00 80 7D 00 04 */ lwz r3, 4(r29)
+/* 8030E0A4 00309D04 38 9D 00 4C */ addi r4, r29, 0x4c
+/* 8030E0A8 00309D08 A0 DD 00 48 */ lhz r6, 0x48(r29)
+/* 8030E0AC 00309D0C 39 01 00 08 */ addi r8, r1, 8
+/* 8030E0B0 00309D10 38 E0 00 20 */ li r7, 0x20
+/* 8030E0B4 00309D14 39 20 00 00 */ li r9, 0
+/* 8030E0B8 00309D18 48 00 A9 71 */ bl func_80318A28
+/* 8030E0BC 00309D1C 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030E0C0 00309D20 38 80 00 11 */ li r4, 0x11
+/* 8030E0C4 00309D24 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030E0C8 00309D28 40 82 00 08 */ bne lbl_8030E0D0
+/* 8030E0CC 00309D2C 7C 64 1B 78 */ mr r4, r3
+lbl_8030E0D0:
+/* 8030E0D0 00309D30 7C 04 00 D0 */ neg r0, r4
+/* 8030E0D4 00309D34 7C 00 23 78 */ or r0, r0, r4
+/* 8030E0D8 00309D38 54 03 0F FE */ srwi r3, r0, 0x1f
+/* 8030E0DC 00309D3C 48 00 00 10 */ b lbl_8030E0EC
+lbl_8030E0E0:
+/* 8030E0E0 00309D40 38 60 00 01 */ li r3, 1
+/* 8030E0E4 00309D44 48 00 00 08 */ b lbl_8030E0EC
+lbl_8030E0E8:
+/* 8030E0E8 00309D48 38 60 00 00 */ li r3, 0
+lbl_8030E0EC:
+/* 8030E0EC 00309D4C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030E0F0 00309D50 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030E0F4 00309D54 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030E0F8 00309D58 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030E0FC 00309D5C 7C 08 03 A6 */ mtlr r0
+/* 8030E100 00309D60 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030E104 00309D64 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_Advance
+VFiPFENT_ITER_Advance:
+/* 8030E108 00309D68 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030E10C 00309D6C 7C 08 02 A6 */ mflr r0
+/* 8030E110 00309D70 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030E114 00309D74 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030E118 00309D78 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030E11C 00309D7C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030E120 00309D80 7C 7D 1B 78 */ mr r29, r3
+/* 8030E124 00309D84 83 C3 00 00 */ lwz r30, 0(r3)
+/* 8030E128 00309D88 38 DE 00 01 */ addi r6, r30, 1
+/* 8030E12C 00309D8C 7C 1E 30 40 */ cmplw r30, r6
+/* 8030E130 00309D90 40 82 00 1C */ bne lbl_8030E14C
+/* 8030E134 00309D94 80 A3 00 44 */ lwz r5, 0x44(r3)
+/* 8030E138 00309D98 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E13C 00309D9C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E140 00309DA0 40 82 00 0C */ bne lbl_8030E14C
+/* 8030E144 00309DA4 2C 04 00 00 */ cmpwi r4, 0
+/* 8030E148 00309DA8 40 82 00 94 */ bne lbl_8030E1DC
+lbl_8030E14C:
+/* 8030E14C 00309DAC 90 C3 00 00 */ stw r6, 0(r3)
+/* 8030E150 00309DB0 7F A3 EB 78 */ mr r3, r29
+/* 8030E154 00309DB4 4B FF EA A9 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E158 00309DB8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E15C 00309DBC 7C 7F 1B 78 */ mr r31, r3
+/* 8030E160 00309DC0 41 82 00 18 */ beq lbl_8030E178
+/* 8030E164 00309DC4 93 DD 00 00 */ stw r30, 0(r29)
+/* 8030E168 00309DC8 7F A3 EB 78 */ mr r3, r29
+/* 8030E16C 00309DCC 38 80 00 00 */ li r4, 0
+/* 8030E170 00309DD0 4B FF EA 8D */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E174 00309DD4 48 00 00 5C */ b lbl_8030E1D0
+lbl_8030E178:
+/* 8030E178 00309DD8 80 BD 00 44 */ lwz r5, 0x44(r29)
+/* 8030E17C 00309DDC 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E180 00309DE0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E184 00309DE4 40 82 00 0C */ bne lbl_8030E190
+/* 8030E188 00309DE8 38 80 00 10 */ li r4, 0x10
+/* 8030E18C 00309DEC 48 00 00 34 */ b lbl_8030E1C0
+lbl_8030E190:
+/* 8030E190 00309DF0 80 7D 00 04 */ lwz r3, 4(r29)
+/* 8030E194 00309DF4 38 9D 00 4C */ addi r4, r29, 0x4c
+/* 8030E198 00309DF8 A0 DD 00 48 */ lhz r6, 0x48(r29)
+/* 8030E19C 00309DFC 39 01 00 08 */ addi r8, r1, 8
+/* 8030E1A0 00309E00 38 E0 00 20 */ li r7, 0x20
+/* 8030E1A4 00309E04 39 20 00 00 */ li r9, 0
+/* 8030E1A8 00309E08 48 00 A8 81 */ bl func_80318A28
+/* 8030E1AC 00309E0C 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030E1B0 00309E10 38 80 00 11 */ li r4, 0x11
+/* 8030E1B4 00309E14 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030E1B8 00309E18 40 82 00 08 */ bne lbl_8030E1C0
+/* 8030E1BC 00309E1C 7C 64 1B 78 */ mr r4, r3
+lbl_8030E1C0:
+/* 8030E1C0 00309E20 7C 04 00 D0 */ neg r0, r4
+/* 8030E1C4 00309E24 7C 00 23 78 */ or r0, r0, r4
+/* 8030E1C8 00309E28 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030E1CC 00309E2C 7C 9F 00 38 */ and r31, r4, r0
+lbl_8030E1D0:
+/* 8030E1D0 00309E30 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030E1D4 00309E34 41 82 00 08 */ beq lbl_8030E1DC
+/* 8030E1D8 00309E38 48 00 00 08 */ b lbl_8030E1E0
+lbl_8030E1DC:
+/* 8030E1DC 00309E3C 3B E0 00 00 */ li r31, 0
+lbl_8030E1E0:
+/* 8030E1E0 00309E40 7F E3 FB 78 */ mr r3, r31
+/* 8030E1E4 00309E44 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030E1E8 00309E48 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030E1EC 00309E4C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030E1F0 00309E50 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030E1F4 00309E54 7C 08 03 A6 */ mtlr r0
+/* 8030E1F8 00309E58 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030E1FC 00309E5C 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_Retreat
+VFiPFENT_ITER_Retreat:
+/* 8030E200 00309E60 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030E204 00309E64 7C 08 02 A6 */ mflr r0
+/* 8030E208 00309E68 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E20C 00309E6C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030E210 00309E70 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 8030E214 00309E74 7C 9F 23 78 */ mr r31, r4
+/* 8030E218 00309E78 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 8030E21C 00309E7C 7C 7E 1B 78 */ mr r30, r3
+/* 8030E220 00309E80 93 A1 00 24 */ stw r29, 0x24(r1)
+/* 8030E224 00309E84 93 81 00 20 */ stw r28, 0x20(r1)
+/* 8030E228 00309E88 40 82 00 0C */ bne lbl_8030E234
+/* 8030E22C 00309E8C 38 60 00 0A */ li r3, 0xa
+/* 8030E230 00309E90 48 00 02 DC */ b lbl_8030E50C
+lbl_8030E234:
+/* 8030E234 00309E94 83 83 00 00 */ lwz r28, 0(r3)
+/* 8030E238 00309E98 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030E23C 00309E9C 40 82 00 0C */ bne lbl_8030E248
+/* 8030E240 00309EA0 38 60 00 00 */ li r3, 0
+/* 8030E244 00309EA4 48 00 02 C8 */ b lbl_8030E50C
+lbl_8030E248:
+/* 8030E248 00309EA8 88 03 00 6C */ lbz r0, 0x6c(r3)
+/* 8030E24C 00309EAC 38 DC FF FF */ addi r6, r28, -1
+/* 8030E250 00309EB0 80 E3 00 40 */ lwz r7, 0x40(r3)
+/* 8030E254 00309EB4 7C C0 04 30 */ srw r0, r6, r0
+/* 8030E258 00309EB8 7C 07 00 40 */ cmplw r7, r0
+/* 8030E25C 00309EBC 41 82 01 F4 */ beq lbl_8030E450
+/* 8030E260 00309EC0 80 C3 00 04 */ lwz r6, 4(r3)
+/* 8030E264 00309EC4 81 23 00 44 */ lwz r9, 0x44(r3)
+/* 8030E268 00309EC8 89 06 00 06 */ lbz r8, 6(r6)
+/* 8030E26C 00309ECC 81 46 00 30 */ lwz r10, 0x30(r6)
+/* 8030E270 00309ED0 7C 07 43 96 */ divwu r0, r7, r8
+/* 8030E274 00309ED4 88 86 00 21 */ lbz r4, 0x21(r6)
+/* 8030E278 00309ED8 7C AA 48 50 */ subf r5, r10, r9
+/* 8030E27C 00309EDC 7C A4 24 30 */ srw r4, r5, r4
+/* 8030E280 00309EE0 38 84 00 02 */ addi r4, r4, 2
+/* 8030E284 00309EE4 7C 00 41 D6 */ mullw r0, r0, r8
+/* 8030E288 00309EE8 7C 00 38 51 */ subf. r0, r0, r7
+/* 8030E28C 00309EEC 41 82 00 0C */ beq lbl_8030E298
+/* 8030E290 00309EF0 28 08 00 01 */ cmplwi r8, 1
+/* 8030E294 00309EF4 40 82 00 64 */ bne lbl_8030E2F8
+lbl_8030E298:
+/* 8030E298 00309EF8 80 06 00 1C */ lwz r0, 0x1c(r6)
+/* 8030E29C 00309EFC 2C 00 00 02 */ cmpwi r0, 2
+/* 8030E2A0 00309F00 41 82 00 1C */ beq lbl_8030E2BC
+/* 8030E2A4 00309F04 80 63 00 10 */ lwz r3, 0x10(r3)
+/* 8030E2A8 00309F08 80 03 00 00 */ lwz r0, 0(r3)
+/* 8030E2AC 00309F0C 28 00 00 01 */ cmplwi r0, 1
+/* 8030E2B0 00309F10 40 81 00 40 */ ble lbl_8030E2F0
+/* 8030E2B4 00309F14 7C 0A 48 40 */ cmplw r10, r9
+/* 8030E2B8 00309F18 41 81 00 38 */ bgt lbl_8030E2F0
+lbl_8030E2BC:
+/* 8030E2BC 00309F1C 7C C3 33 78 */ mr r3, r6
+/* 8030E2C0 00309F20 7C 85 23 78 */ mr r5, r4
+/* 8030E2C4 00309F24 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030E2C8 00309F28 48 00 24 E1 */ bl VFiPFFAT_GetBeforeChain
+/* 8030E2CC 00309F2C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E2D0 00309F30 41 82 00 08 */ beq lbl_8030E2D8
+/* 8030E2D4 00309F34 48 00 02 38 */ b lbl_8030E50C
+lbl_8030E2D8:
+/* 8030E2D8 00309F38 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 8030E2DC 00309F3C 3C 03 00 01 */ addis r0, r3, 1
+/* 8030E2E0 00309F40 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E2E4 00309F44 40 82 00 18 */ bne lbl_8030E2FC
+/* 8030E2E8 00309F48 38 60 00 0E */ li r3, 0xe
+/* 8030E2EC 00309F4C 48 00 02 20 */ b lbl_8030E50C
+lbl_8030E2F0:
+/* 8030E2F0 00309F50 90 01 00 10 */ stw r0, 0x10(r1)
+/* 8030E2F4 00309F54 48 00 00 08 */ b lbl_8030E2FC
+lbl_8030E2F8:
+/* 8030E2F8 00309F58 90 81 00 10 */ stw r4, 0x10(r1)
+lbl_8030E2FC:
+/* 8030E2FC 00309F5C 80 9E 00 00 */ lwz r4, 0(r30)
+/* 8030E300 00309F60 80 7E 00 40 */ lwz r3, 0x40(r30)
+/* 8030E304 00309F64 38 84 FF FF */ addi r4, r4, -1
+/* 8030E308 00309F68 80 DE 00 04 */ lwz r6, 4(r30)
+/* 8030E30C 00309F6C 38 03 FF FF */ addi r0, r3, -1
+/* 8030E310 00309F70 90 9E 00 00 */ stw r4, 0(r30)
+/* 8030E314 00309F74 90 1E 00 40 */ stw r0, 0x40(r30)
+/* 8030E318 00309F78 80 06 00 1C */ lwz r0, 0x1c(r6)
+/* 8030E31C 00309F7C 2C 00 00 02 */ cmpwi r0, 2
+/* 8030E320 00309F80 41 82 00 24 */ beq lbl_8030E344
+/* 8030E324 00309F84 80 7E 00 10 */ lwz r3, 0x10(r30)
+/* 8030E328 00309F88 80 03 00 00 */ lwz r0, 0(r3)
+/* 8030E32C 00309F8C 28 00 00 01 */ cmplwi r0, 1
+/* 8030E330 00309F90 40 81 00 48 */ ble lbl_8030E378
+/* 8030E334 00309F94 80 66 00 30 */ lwz r3, 0x30(r6)
+/* 8030E338 00309F98 80 1E 00 44 */ lwz r0, 0x44(r30)
+/* 8030E33C 00309F9C 7C 03 00 40 */ cmplw r3, r0
+/* 8030E340 00309FA0 41 81 00 38 */ bgt lbl_8030E378
+lbl_8030E344:
+/* 8030E344 00309FA4 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 8030E348 00309FA8 88 66 00 06 */ lbz r3, 6(r6)
+/* 8030E34C 00309FAC 88 06 00 21 */ lbz r0, 0x21(r6)
+/* 8030E350 00309FB0 38 A4 FF FE */ addi r5, r4, -2
+/* 8030E354 00309FB4 80 C6 00 30 */ lwz r6, 0x30(r6)
+/* 8030E358 00309FB8 38 63 FF FF */ addi r3, r3, -1
+/* 8030E35C 00309FBC 80 9E 00 40 */ lwz r4, 0x40(r30)
+/* 8030E360 00309FC0 7C A0 00 30 */ slw r0, r5, r0
+/* 8030E364 00309FC4 7C 06 02 14 */ add r0, r6, r0
+/* 8030E368 00309FC8 7C 83 18 38 */ and r3, r4, r3
+/* 8030E36C 00309FCC 7C 03 02 14 */ add r0, r3, r0
+/* 8030E370 00309FD0 90 1E 00 44 */ stw r0, 0x44(r30)
+/* 8030E374 00309FD4 48 00 00 10 */ b lbl_8030E384
+lbl_8030E378:
+/* 8030E378 00309FD8 80 7E 00 44 */ lwz r3, 0x44(r30)
+/* 8030E37C 00309FDC 38 03 FF FF */ addi r0, r3, -1
+/* 8030E380 00309FE0 90 1E 00 44 */ stw r0, 0x44(r30)
+lbl_8030E384:
+/* 8030E384 00309FE4 80 7E 00 44 */ lwz r3, 0x44(r30)
+/* 8030E388 00309FE8 83 BE 00 00 */ lwz r29, 0(r30)
+/* 8030E38C 00309FEC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030E390 00309FF0 A0 9E 00 4A */ lhz r4, 0x4a(r30)
+/* 8030E394 00309FF4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E398 00309FF8 7F A0 20 38 */ and r0, r29, r4
+/* 8030E39C 00309FFC 54 00 2C 34 */ rlwinm r0, r0, 5, 0x10, 0x1a
+/* 8030E3A0 0030A000 B0 1E 00 48 */ sth r0, 0x48(r30)
+/* 8030E3A4 0030A004 40 82 00 0C */ bne lbl_8030E3B0
+/* 8030E3A8 0030A008 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030E3AC 0030A00C 40 82 00 98 */ bne lbl_8030E444
+lbl_8030E3B0:
+/* 8030E3B0 0030A010 93 BE 00 00 */ stw r29, 0(r30)
+/* 8030E3B4 0030A014 7F C3 F3 78 */ mr r3, r30
+/* 8030E3B8 0030A018 7F E4 FB 78 */ mr r4, r31
+/* 8030E3BC 0030A01C 4B FF E8 41 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E3C0 0030A020 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E3C4 0030A024 7C 7F 1B 78 */ mr r31, r3
+/* 8030E3C8 0030A028 41 82 00 18 */ beq lbl_8030E3E0
+/* 8030E3CC 0030A02C 93 BE 00 00 */ stw r29, 0(r30)
+/* 8030E3D0 0030A030 7F C3 F3 78 */ mr r3, r30
+/* 8030E3D4 0030A034 38 80 00 00 */ li r4, 0
+/* 8030E3D8 0030A038 4B FF E8 25 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E3DC 0030A03C 48 00 00 5C */ b lbl_8030E438
+lbl_8030E3E0:
+/* 8030E3E0 0030A040 80 BE 00 44 */ lwz r5, 0x44(r30)
+/* 8030E3E4 0030A044 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E3E8 0030A048 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E3EC 0030A04C 40 82 00 0C */ bne lbl_8030E3F8
+/* 8030E3F0 0030A050 38 80 00 10 */ li r4, 0x10
+/* 8030E3F4 0030A054 48 00 00 34 */ b lbl_8030E428
+lbl_8030E3F8:
+/* 8030E3F8 0030A058 80 7E 00 04 */ lwz r3, 4(r30)
+/* 8030E3FC 0030A05C 38 9E 00 4C */ addi r4, r30, 0x4c
+/* 8030E400 0030A060 A0 DE 00 48 */ lhz r6, 0x48(r30)
+/* 8030E404 0030A064 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030E408 0030A068 38 E0 00 20 */ li r7, 0x20
+/* 8030E40C 0030A06C 39 20 00 00 */ li r9, 0
+/* 8030E410 0030A070 48 00 A6 19 */ bl func_80318A28
+/* 8030E414 0030A074 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030E418 0030A078 38 80 00 11 */ li r4, 0x11
+/* 8030E41C 0030A07C 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030E420 0030A080 40 82 00 08 */ bne lbl_8030E428
+/* 8030E424 0030A084 7C 64 1B 78 */ mr r4, r3
+lbl_8030E428:
+/* 8030E428 0030A088 7C 04 00 D0 */ neg r0, r4
+/* 8030E42C 0030A08C 7C 00 23 78 */ or r0, r0, r4
+/* 8030E430 0030A090 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030E434 0030A094 7C 9F 00 38 */ and r31, r4, r0
+lbl_8030E438:
+/* 8030E438 0030A098 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030E43C 0030A09C 41 82 00 08 */ beq lbl_8030E444
+/* 8030E440 0030A0A0 48 00 00 08 */ b lbl_8030E448
+lbl_8030E444:
+/* 8030E444 0030A0A4 3B E0 00 00 */ li r31, 0
+lbl_8030E448:
+/* 8030E448 0030A0A8 7F E3 FB 78 */ mr r3, r31
+/* 8030E44C 0030A0AC 48 00 00 C0 */ b lbl_8030E50C
+lbl_8030E450:
+/* 8030E450 0030A0B0 7C 1C 30 40 */ cmplw r28, r6
+/* 8030E454 0030A0B4 40 82 00 1C */ bne lbl_8030E470
+/* 8030E458 0030A0B8 80 A3 00 44 */ lwz r5, 0x44(r3)
+/* 8030E45C 0030A0BC 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E460 0030A0C0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E464 0030A0C4 40 82 00 0C */ bne lbl_8030E470
+/* 8030E468 0030A0C8 2C 04 00 00 */ cmpwi r4, 0
+/* 8030E46C 0030A0CC 40 82 00 98 */ bne lbl_8030E504
+lbl_8030E470:
+/* 8030E470 0030A0D0 90 C3 00 00 */ stw r6, 0(r3)
+/* 8030E474 0030A0D4 7F C3 F3 78 */ mr r3, r30
+/* 8030E478 0030A0D8 7F E4 FB 78 */ mr r4, r31
+/* 8030E47C 0030A0DC 4B FF E7 81 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E480 0030A0E0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E484 0030A0E4 7C 7D 1B 78 */ mr r29, r3
+/* 8030E488 0030A0E8 41 82 00 18 */ beq lbl_8030E4A0
+/* 8030E48C 0030A0EC 93 9E 00 00 */ stw r28, 0(r30)
+/* 8030E490 0030A0F0 7F C3 F3 78 */ mr r3, r30
+/* 8030E494 0030A0F4 38 80 00 00 */ li r4, 0
+/* 8030E498 0030A0F8 4B FF E7 65 */ bl VFiPFENT_RecalcEntryIterator
+/* 8030E49C 0030A0FC 48 00 00 5C */ b lbl_8030E4F8
+lbl_8030E4A0:
+/* 8030E4A0 0030A100 80 BE 00 44 */ lwz r5, 0x44(r30)
+/* 8030E4A4 0030A104 3C 05 00 01 */ addis r0, r5, 1
+/* 8030E4A8 0030A108 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E4AC 0030A10C 40 82 00 0C */ bne lbl_8030E4B8
+/* 8030E4B0 0030A110 38 80 00 10 */ li r4, 0x10
+/* 8030E4B4 0030A114 48 00 00 34 */ b lbl_8030E4E8
+lbl_8030E4B8:
+/* 8030E4B8 0030A118 80 7E 00 04 */ lwz r3, 4(r30)
+/* 8030E4BC 0030A11C 38 9E 00 4C */ addi r4, r30, 0x4c
+/* 8030E4C0 0030A120 A0 DE 00 48 */ lhz r6, 0x48(r30)
+/* 8030E4C4 0030A124 39 01 00 08 */ addi r8, r1, 8
+/* 8030E4C8 0030A128 38 E0 00 20 */ li r7, 0x20
+/* 8030E4CC 0030A12C 39 20 00 00 */ li r9, 0
+/* 8030E4D0 0030A130 48 00 A5 59 */ bl func_80318A28
+/* 8030E4D4 0030A134 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030E4D8 0030A138 38 80 00 11 */ li r4, 0x11
+/* 8030E4DC 0030A13C 28 00 00 20 */ cmplwi r0, 0x20
+/* 8030E4E0 0030A140 40 82 00 08 */ bne lbl_8030E4E8
+/* 8030E4E4 0030A144 7C 64 1B 78 */ mr r4, r3
+lbl_8030E4E8:
+/* 8030E4E8 0030A148 7C 04 00 D0 */ neg r0, r4
+/* 8030E4EC 0030A14C 7C 00 23 78 */ or r0, r0, r4
+/* 8030E4F0 0030A150 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030E4F4 0030A154 7C 9D 00 38 */ and r29, r4, r0
+lbl_8030E4F8:
+/* 8030E4F8 0030A158 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030E4FC 0030A15C 41 82 00 08 */ beq lbl_8030E504
+/* 8030E500 0030A160 48 00 00 08 */ b lbl_8030E508
+lbl_8030E504:
+/* 8030E504 0030A164 3B A0 00 00 */ li r29, 0
+lbl_8030E508:
+/* 8030E508 0030A168 7F A3 EB 78 */ mr r3, r29
+lbl_8030E50C:
+/* 8030E50C 0030A16C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030E510 0030A170 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 8030E514 0030A174 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 8030E518 0030A178 83 A1 00 24 */ lwz r29, 0x24(r1)
+/* 8030E51C 0030A17C 83 81 00 20 */ lwz r28, 0x20(r1)
+/* 8030E520 0030A180 7C 08 03 A6 */ mtlr r0
+/* 8030E524 0030A184 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030E528 0030A188 4E 80 00 20 */ blr
+
+.global VFiPFENT_ITER_GetEntryOfPath
+VFiPFENT_ITER_GetEntryOfPath:
+/* 8030E52C 0030A18C 7C E8 3B 78 */ mr r8, r7
+/* 8030E530 0030A190 38 E0 00 00 */ li r7, 0
+/* 8030E534 0030A194 4B FF F3 AC */ b VFiPFENT_ITER_DoGetEntry
diff --git a/asm/SDK/VF/pf_fat.s b/asm/SDK/VF/pf_fat.s new file mode 100644 index 0000000..daf2f1b --- /dev/null +++ b/asm/SDK/VF/pf_fat.s @@ -0,0 +1,3313 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFAT_ReadFATSector
+VFiPFFAT_ReadFATSector:
+/* 8030E538 0030A198 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030E53C 0030A19C 7C 08 02 A6 */ mflr r0
+/* 8030E540 0030A1A0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030E544 0030A1A4 39 61 00 20 */ addi r11, r1, 0x20
+/* 8030E548 0030A1A8 4B EB 8B E1 */ bl _savegpr_27
+/* 8030E54C 0030A1AC 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030E550 0030A1B0 7C 7B 1B 78 */ mr r27, r3
+/* 8030E554 0030A1B4 7C 9C 23 78 */ mr r28, r4
+/* 8030E558 0030A1B8 2C 00 00 01 */ cmpwi r0, 1
+/* 8030E55C 0030A1BC 41 82 00 30 */ beq lbl_8030E58C
+/* 8030E560 0030A1C0 40 80 00 10 */ bge lbl_8030E570
+/* 8030E564 0030A1C4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E568 0030A1C8 40 80 00 14 */ bge lbl_8030E57C
+/* 8030E56C 0030A1CC 48 00 00 30 */ b lbl_8030E59C
+lbl_8030E570:
+/* 8030E570 0030A1D0 2C 00 00 03 */ cmpwi r0, 3
+/* 8030E574 0030A1D4 40 80 00 28 */ bge lbl_8030E59C
+/* 8030E578 0030A1D8 48 00 00 1C */ b lbl_8030E594
+lbl_8030E57C:
+/* 8030E57C 0030A1DC 54 A0 F8 7E */ srwi r0, r5, 1
+/* 8030E580 0030A1E0 7C 05 02 14 */ add r0, r5, r0
+/* 8030E584 0030A1E4 54 06 04 3E */ clrlwi r6, r0, 0x10
+/* 8030E588 0030A1E8 48 00 00 1C */ b lbl_8030E5A4
+lbl_8030E58C:
+/* 8030E58C 0030A1EC 54 A6 08 3C */ slwi r6, r5, 1
+/* 8030E590 0030A1F0 48 00 00 14 */ b lbl_8030E5A4
+lbl_8030E594:
+/* 8030E594 0030A1F4 54 A6 10 3A */ slwi r6, r5, 2
+/* 8030E598 0030A1F8 48 00 00 0C */ b lbl_8030E5A4
+lbl_8030E59C:
+/* 8030E59C 0030A1FC 38 60 00 0F */ li r3, 0xf
+/* 8030E5A0 0030A200 48 00 00 B0 */ b lbl_8030E650
+lbl_8030E5A4:
+/* 8030E5A4 0030A204 A0 A3 00 18 */ lhz r5, 0x18(r3)
+/* 8030E5A8 0030A208 3B C0 00 01 */ li r30, 1
+/* 8030E5AC 0030A20C 88 83 00 20 */ lbz r4, 0x20(r3)
+/* 8030E5B0 0030A210 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 8030E5B4 0030A214 80 63 00 28 */ lwz r3, 0x28(r3)
+/* 8030E5B8 0030A218 7C C0 24 30 */ srw r0, r6, r4
+/* 8030E5BC 0030A21C 7C 03 02 14 */ add r0, r3, r0
+/* 8030E5C0 0030A220 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 8030E5C4 0030A224 41 82 00 08 */ beq lbl_8030E5CC
+/* 8030E5C8 0030A228 54 BE 07 7E */ clrlwi r30, r5, 0x1d
+lbl_8030E5CC:
+/* 8030E5CC 0030A22C 7F 63 DB 78 */ mr r3, r27
+/* 8030E5D0 0030A230 7F A4 EB 78 */ mr r4, r29
+/* 8030E5D4 0030A234 7F 85 E3 78 */ mr r5, r28
+/* 8030E5D8 0030A238 4B FF C2 75 */ bl VFiPFCACHE_ReadFATPage
+/* 8030E5DC 0030A23C 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 8030E5E0 0030A240 7C 7F 1B 78 */ mr r31, r3
+/* 8030E5E4 0030A244 40 82 00 50 */ bne lbl_8030E634
+/* 8030E5E8 0030A248 81 9B 18 90 */ lwz r12, 0x1890(r27)
+/* 8030E5EC 0030A24C 2C 0C 00 00 */ cmpwi r12, 0
+/* 8030E5F0 0030A250 41 82 00 44 */ beq lbl_8030E634
+/* 8030E5F4 0030A254 80 7B 18 70 */ lwz r3, 0x1870(r27)
+/* 8030E5F8 0030A258 7D 89 03 A6 */ mtctr r12
+/* 8030E5FC 0030A25C 4E 80 04 21 */ bctrl
+/* 8030E600 0030A260 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E604 0030A264 41 82 00 40 */ beq lbl_8030E644
+/* 8030E608 0030A268 2C 03 00 01 */ cmpwi r3, 1
+/* 8030E60C 0030A26C 40 82 00 28 */ bne lbl_8030E634
+/* 8030E610 0030A270 88 1B 00 22 */ lbz r0, 0x22(r27)
+/* 8030E614 0030A274 28 00 00 02 */ cmplwi r0, 2
+/* 8030E618 0030A278 41 80 00 1C */ blt lbl_8030E634
+/* 8030E61C 0030A27C 7C 1E 00 40 */ cmplw r30, r0
+/* 8030E620 0030A280 40 80 00 14 */ bge lbl_8030E634
+/* 8030E624 0030A284 80 1B 00 0C */ lwz r0, 0xc(r27)
+/* 8030E628 0030A288 3B DE 00 01 */ addi r30, r30, 1
+/* 8030E62C 0030A28C 7F BD 02 14 */ add r29, r29, r0
+/* 8030E630 0030A290 48 00 00 14 */ b lbl_8030E644
+lbl_8030E634:
+/* 8030E634 0030A294 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030E638 0030A298 41 82 00 0C */ beq lbl_8030E644
+/* 8030E63C 0030A29C 7F E3 FB 78 */ mr r3, r31
+/* 8030E640 0030A2A0 48 00 00 10 */ b lbl_8030E650
+lbl_8030E644:
+/* 8030E644 0030A2A4 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030E648 0030A2A8 40 82 FF 84 */ bne lbl_8030E5CC
+/* 8030E64C 0030A2AC 7F E3 FB 78 */ mr r3, r31
+lbl_8030E650:
+/* 8030E650 0030A2B0 39 61 00 20 */ addi r11, r1, 0x20
+/* 8030E654 0030A2B4 4B EB 8B 21 */ bl _restgpr_27
+/* 8030E658 0030A2B8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030E65C 0030A2BC 7C 08 03 A6 */ mtlr r0
+/* 8030E660 0030A2C0 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030E664 0030A2C4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_SearchForNumFreeClusters
+VFiPFFAT_SearchForNumFreeClusters:
+/* 8030E668 0030A2C8 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 8030E66C 0030A2CC 7C 08 02 A6 */ mflr r0
+/* 8030E670 0030A2D0 90 01 00 54 */ stw r0, 0x54(r1)
+/* 8030E674 0030A2D4 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030E678 0030A2D8 4B EB 8A 91 */ bl _savegpr_19
+/* 8030E67C 0030A2DC 38 00 FF FF */ li r0, -1
+/* 8030E680 0030A2E0 28 04 00 02 */ cmplwi r4, 2
+/* 8030E684 0030A2E4 90 07 00 00 */ stw r0, 0(r7)
+/* 8030E688 0030A2E8 7C 74 1B 78 */ mr r20, r3
+/* 8030E68C 0030A2EC 7C 95 23 78 */ mr r21, r4
+/* 8030E690 0030A2F0 7C B6 2B 78 */ mr r22, r5
+/* 8030E694 0030A2F4 90 08 00 00 */ stw r0, 0(r8)
+/* 8030E698 0030A2F8 7C D7 33 78 */ mr r23, r6
+/* 8030E69C 0030A2FC 7C F8 3B 78 */ mr r24, r7
+/* 8030E6A0 0030A300 7D 19 43 78 */ mr r25, r8
+/* 8030E6A4 0030A304 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030E6A8 0030A308 3B 60 00 00 */ li r27, 0
+/* 8030E6AC 0030A30C 3B C0 00 00 */ li r30, 0
+/* 8030E6B0 0030A310 3B A0 FF FF */ li r29, -1
+/* 8030E6B4 0030A314 3B E3 00 02 */ addi r31, r3, 2
+/* 8030E6B8 0030A318 3B 80 00 00 */ li r28, 0
+/* 8030E6BC 0030A31C 41 80 00 0C */ blt lbl_8030E6C8
+/* 8030E6C0 0030A320 7C 04 F8 40 */ cmplw r4, r31
+/* 8030E6C4 0030A324 41 80 00 08 */ blt lbl_8030E6CC
+lbl_8030E6C8:
+/* 8030E6C8 0030A328 3A A0 00 02 */ li r21, 2
+lbl_8030E6CC:
+/* 8030E6CC 0030A32C 28 05 00 02 */ cmplwi r5, 2
+/* 8030E6D0 0030A330 41 80 00 0C */ blt lbl_8030E6DC
+/* 8030E6D4 0030A334 7C 05 F8 40 */ cmplw r5, r31
+/* 8030E6D8 0030A338 41 80 00 08 */ blt lbl_8030E6E0
+lbl_8030E6DC:
+/* 8030E6DC 0030A33C 3A DF FF FF */ addi r22, r31, -1
+lbl_8030E6E0:
+/* 8030E6E0 0030A340 7E BA AB 78 */ mr r26, r21
+/* 8030E6E4 0030A344 7E 83 A3 78 */ mr r3, r20
+/* 8030E6E8 0030A348 7E A5 AB 78 */ mr r5, r21
+/* 8030E6EC 0030A34C 38 81 00 08 */ addi r4, r1, 8
+/* 8030E6F0 0030A350 4B FF FE 49 */ bl VFiPFFAT_ReadFATSector
+/* 8030E6F4 0030A354 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E6F8 0030A358 41 82 00 08 */ beq lbl_8030E700
+/* 8030E6FC 0030A35C 48 00 01 58 */ b lbl_8030E854
+lbl_8030E700:
+/* 8030E700 0030A360 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030E704 0030A364 38 00 00 00 */ li r0, 0
+/* 8030E708 0030A368 3A 60 FF FF */ li r19, -1
+/* 8030E70C 0030A36C B0 03 00 02 */ sth r0, 2(r3)
+/* 8030E710 0030A370 48 00 01 10 */ b lbl_8030E820
+lbl_8030E714:
+/* 8030E714 0030A374 7C 1F A8 40 */ cmplw r31, r21
+/* 8030E718 0030A378 41 81 00 08 */ bgt lbl_8030E720
+/* 8030E71C 0030A37C 3A A0 00 02 */ li r21, 2
+lbl_8030E720:
+/* 8030E720 0030A380 80 14 00 1C */ lwz r0, 0x1c(r20)
+/* 8030E724 0030A384 2C 00 00 01 */ cmpwi r0, 1
+/* 8030E728 0030A388 41 82 00 38 */ beq lbl_8030E760
+/* 8030E72C 0030A38C 40 80 00 10 */ bge lbl_8030E73C
+/* 8030E730 0030A390 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E734 0030A394 40 80 00 14 */ bge lbl_8030E748
+/* 8030E738 0030A398 48 00 00 58 */ b lbl_8030E790
+lbl_8030E73C:
+/* 8030E73C 0030A39C 2C 00 00 03 */ cmpwi r0, 3
+/* 8030E740 0030A3A0 40 80 00 50 */ bge lbl_8030E790
+/* 8030E744 0030A3A4 48 00 00 34 */ b lbl_8030E778
+lbl_8030E748:
+/* 8030E748 0030A3A8 7E 83 A3 78 */ mr r3, r20
+/* 8030E74C 0030A3AC 56 A4 04 3E */ clrlwi r4, r21, 0x10
+/* 8030E750 0030A3B0 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E754 0030A3B4 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E758 0030A3B8 48 00 2B FD */ bl VFiPFFAT12_ReadFATEntryPage
+/* 8030E75C 0030A3BC 48 00 00 38 */ b lbl_8030E794
+lbl_8030E760:
+/* 8030E760 0030A3C0 7E 83 A3 78 */ mr r3, r20
+/* 8030E764 0030A3C4 7E A4 AB 78 */ mr r4, r21
+/* 8030E768 0030A3C8 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E76C 0030A3CC 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E770 0030A3D0 48 00 36 4D */ bl VFiPFFAT16_ReadFATEntryPage
+/* 8030E774 0030A3D4 48 00 00 20 */ b lbl_8030E794
+lbl_8030E778:
+/* 8030E778 0030A3D8 7E 83 A3 78 */ mr r3, r20
+/* 8030E77C 0030A3DC 7E A4 AB 78 */ mr r4, r21
+/* 8030E780 0030A3E0 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E784 0030A3E4 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E788 0030A3E8 48 00 3B BD */ bl VFiPFFAT32_ReadFATEntryPage
+/* 8030E78C 0030A3EC 48 00 00 08 */ b lbl_8030E794
+lbl_8030E790:
+/* 8030E790 0030A3F0 38 60 00 0F */ li r3, 0xf
+lbl_8030E794:
+/* 8030E794 0030A3F4 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E798 0030A3F8 41 82 00 08 */ beq lbl_8030E7A0
+/* 8030E79C 0030A3FC 48 00 00 B8 */ b lbl_8030E854
+lbl_8030E7A0:
+/* 8030E7A0 0030A400 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030E7A4 0030A404 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E7A8 0030A408 40 82 00 30 */ bne lbl_8030E7D8
+/* 8030E7AC 0030A40C 80 78 00 00 */ lwz r3, 0(r24)
+/* 8030E7B0 0030A410 3C 03 00 01 */ addis r0, r3, 1
+/* 8030E7B4 0030A414 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030E7B8 0030A418 40 82 00 08 */ bne lbl_8030E7C0
+/* 8030E7BC 0030A41C 92 B8 00 00 */ stw r21, 0(r24)
+lbl_8030E7C0:
+/* 8030E7C0 0030A420 3B DE 00 01 */ addi r30, r30, 1
+/* 8030E7C4 0030A424 7C 1E B8 40 */ cmplw r30, r23
+/* 8030E7C8 0030A428 41 80 00 28 */ blt lbl_8030E7F0
+/* 8030E7CC 0030A42C 92 B9 00 00 */ stw r21, 0(r25)
+/* 8030E7D0 0030A430 38 60 00 00 */ li r3, 0
+/* 8030E7D4 0030A434 48 00 00 80 */ b lbl_8030E854
+lbl_8030E7D8:
+/* 8030E7D8 0030A438 7C 1C F0 40 */ cmplw r28, r30
+/* 8030E7DC 0030A43C 40 80 00 0C */ bge lbl_8030E7E8
+/* 8030E7E0 0030A440 83 B8 00 00 */ lwz r29, 0(r24)
+/* 8030E7E4 0030A444 7F DC F3 78 */ mr r28, r30
+lbl_8030E7E8:
+/* 8030E7E8 0030A448 92 78 00 00 */ stw r19, 0(r24)
+/* 8030E7EC 0030A44C 3B C0 00 00 */ li r30, 0
+lbl_8030E7F0:
+/* 8030E7F0 0030A450 2C 1B 00 00 */ cmpwi r27, 0
+/* 8030E7F4 0030A454 3A B5 00 01 */ addi r21, r21, 1
+/* 8030E7F8 0030A458 40 82 00 28 */ bne lbl_8030E820
+/* 8030E7FC 0030A45C 2C 1E 00 00 */ cmpwi r30, 0
+/* 8030E800 0030A460 40 82 00 20 */ bne lbl_8030E820
+/* 8030E804 0030A464 28 15 00 02 */ cmplwi r21, 2
+/* 8030E808 0030A468 40 81 00 18 */ ble lbl_8030E820
+/* 8030E80C 0030A46C 7C 15 B0 40 */ cmplw r21, r22
+/* 8030E810 0030A470 40 82 00 10 */ bne lbl_8030E820
+/* 8030E814 0030A474 7F 56 D3 78 */ mr r22, r26
+/* 8030E818 0030A478 3A A0 00 02 */ li r21, 2
+/* 8030E81C 0030A47C 3B 60 00 01 */ li r27, 1
+lbl_8030E820:
+/* 8030E820 0030A480 7C 15 B0 40 */ cmplw r21, r22
+/* 8030E824 0030A484 40 81 FE F0 */ ble lbl_8030E714
+/* 8030E828 0030A488 7C 1C F0 40 */ cmplw r28, r30
+/* 8030E82C 0030A48C 40 80 00 0C */ bge lbl_8030E838
+/* 8030E830 0030A490 83 B8 00 00 */ lwz r29, 0(r24)
+/* 8030E834 0030A494 7F DC F3 78 */ mr r28, r30
+lbl_8030E838:
+/* 8030E838 0030A498 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030E83C 0030A49C 41 82 00 14 */ beq lbl_8030E850
+/* 8030E840 0030A4A0 7C 7C EA 14 */ add r3, r28, r29
+/* 8030E844 0030A4A4 93 B8 00 00 */ stw r29, 0(r24)
+/* 8030E848 0030A4A8 38 03 FF FF */ addi r0, r3, -1
+/* 8030E84C 0030A4AC 90 19 00 00 */ stw r0, 0(r25)
+lbl_8030E850:
+/* 8030E850 0030A4B0 38 60 00 00 */ li r3, 0
+lbl_8030E854:
+/* 8030E854 0030A4B4 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030E858 0030A4B8 4B EB 88 FD */ bl _restgpr_19
+/* 8030E85C 0030A4BC 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 8030E860 0030A4C0 7C 08 03 A6 */ mtlr r0
+/* 8030E864 0030A4C4 38 21 00 50 */ addi r1, r1, 0x50
+/* 8030E868 0030A4C8 4E 80 00 20 */ blr
+
+.global VFiPFFAT_FindClusterLink
+VFiPFFAT_FindClusterLink:
+/* 8030E86C 0030A4CC 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030E870 0030A4D0 7C 08 02 A6 */ mflr r0
+/* 8030E874 0030A4D4 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030E878 0030A4D8 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030E87C 0030A4DC 4B EB 88 AD */ bl _savegpr_27
+/* 8030E880 0030A4E0 38 E0 FF FF */ li r7, -1
+/* 8030E884 0030A4E4 38 00 00 00 */ li r0, 0
+/* 8030E888 0030A4E8 90 E1 00 0C */ stw r7, 0xc(r1)
+/* 8030E88C 0030A4EC 7C 7B 1B 78 */ mr r27, r3
+/* 8030E890 0030A4F0 7C BE 2B 78 */ mr r30, r5
+/* 8030E894 0030A4F4 7C DF 33 78 */ mr r31, r6
+/* 8030E898 0030A4F8 90 06 00 00 */ stw r0, 0(r6)
+/* 8030E89C 0030A4FC 80 03 00 24 */ lwz r0, 0x24(r3)
+/* 8030E8A0 0030A500 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E8A4 0030A504 40 82 00 0C */ bne lbl_8030E8B0
+/* 8030E8A8 0030A508 38 60 00 00 */ li r3, 0
+/* 8030E8AC 0030A50C 48 00 01 64 */ b lbl_8030EA10
+lbl_8030E8B0:
+/* 8030E8B0 0030A510 80 03 00 2C */ lwz r0, 0x2c(r3)
+/* 8030E8B4 0030A514 7C 00 20 40 */ cmplw r0, r4
+/* 8030E8B8 0030A518 41 80 01 4C */ blt lbl_8030EA04
+/* 8030E8BC 0030A51C A0 E3 00 20 */ lhz r7, 0x20(r3)
+/* 8030E8C0 0030A520 38 07 00 01 */ addi r0, r7, 1
+/* 8030E8C4 0030A524 7C E4 03 96 */ divwu r7, r4, r0
+/* 8030E8C8 0030A528 7C 07 01 D6 */ mullw r0, r7, r0
+/* 8030E8CC 0030A52C 7F 80 20 51 */ subf. r28, r0, r4
+/* 8030E8D0 0030A530 40 82 00 20 */ bne lbl_8030E8F0
+/* 8030E8D4 0030A534 80 83 00 1C */ lwz r4, 0x1c(r3)
+/* 8030E8D8 0030A538 54 E3 10 3A */ slwi r3, r7, 2
+/* 8030E8DC 0030A53C 38 00 00 01 */ li r0, 1
+/* 8030E8E0 0030A540 7C 64 18 2E */ lwzx r3, r4, r3
+/* 8030E8E4 0030A544 90 65 00 00 */ stw r3, 0(r5)
+/* 8030E8E8 0030A548 90 06 00 00 */ stw r0, 0(r6)
+/* 8030E8EC 0030A54C 48 00 01 20 */ b lbl_8030EA0C
+lbl_8030E8F0:
+/* 8030E8F0 0030A550 80 A3 00 1C */ lwz r5, 0x1c(r3)
+/* 8030E8F4 0030A554 54 E0 10 3A */ slwi r0, r7, 2
+/* 8030E8F8 0030A558 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030E8FC 0030A55C 38 81 00 08 */ addi r4, r1, 8
+/* 8030E900 0030A560 7F A5 00 2E */ lwzx r29, r5, r0
+/* 8030E904 0030A564 7F A5 EB 78 */ mr r5, r29
+/* 8030E908 0030A568 4B FF FC 31 */ bl VFiPFFAT_ReadFATSector
+/* 8030E90C 0030A56C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E910 0030A570 41 82 00 9C */ beq lbl_8030E9AC
+/* 8030E914 0030A574 48 00 00 FC */ b lbl_8030EA10
+/* 8030E918 0030A578 48 00 00 94 */ b lbl_8030E9AC
+lbl_8030E91C:
+/* 8030E91C 0030A57C 80 7B 00 34 */ lwz r3, 0x34(r27)
+/* 8030E920 0030A580 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030E924 0030A584 2C 00 00 01 */ cmpwi r0, 1
+/* 8030E928 0030A588 41 82 00 34 */ beq lbl_8030E95C
+/* 8030E92C 0030A58C 40 80 00 10 */ bge lbl_8030E93C
+/* 8030E930 0030A590 2C 00 00 00 */ cmpwi r0, 0
+/* 8030E934 0030A594 40 80 00 14 */ bge lbl_8030E948
+/* 8030E938 0030A598 48 00 00 4C */ b lbl_8030E984
+lbl_8030E93C:
+/* 8030E93C 0030A59C 2C 00 00 03 */ cmpwi r0, 3
+/* 8030E940 0030A5A0 40 80 00 44 */ bge lbl_8030E984
+/* 8030E944 0030A5A4 48 00 00 2C */ b lbl_8030E970
+lbl_8030E948:
+/* 8030E948 0030A5A8 57 A4 04 3E */ clrlwi r4, r29, 0x10
+/* 8030E94C 0030A5AC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E950 0030A5B0 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E954 0030A5B4 48 00 2A 01 */ bl VFiPFFAT12_ReadFATEntryPage
+/* 8030E958 0030A5B8 48 00 00 30 */ b lbl_8030E988
+lbl_8030E95C:
+/* 8030E95C 0030A5BC 7F A4 EB 78 */ mr r4, r29
+/* 8030E960 0030A5C0 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E964 0030A5C4 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E968 0030A5C8 48 00 34 55 */ bl VFiPFFAT16_ReadFATEntryPage
+/* 8030E96C 0030A5CC 48 00 00 1C */ b lbl_8030E988
+lbl_8030E970:
+/* 8030E970 0030A5D0 7F A4 EB 78 */ mr r4, r29
+/* 8030E974 0030A5D4 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030E978 0030A5D8 38 C1 00 08 */ addi r6, r1, 8
+/* 8030E97C 0030A5DC 48 00 39 C9 */ bl VFiPFFAT32_ReadFATEntryPage
+/* 8030E980 0030A5E0 48 00 00 08 */ b lbl_8030E988
+lbl_8030E984:
+/* 8030E984 0030A5E4 38 60 00 0F */ li r3, 0xf
+lbl_8030E988:
+/* 8030E988 0030A5E8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030E98C 0030A5EC 41 82 00 08 */ beq lbl_8030E994
+/* 8030E990 0030A5F0 48 00 00 80 */ b lbl_8030EA10
+lbl_8030E994:
+/* 8030E994 0030A5F4 83 A1 00 0C */ lwz r29, 0xc(r1)
+/* 8030E998 0030A5F8 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030E99C 0030A5FC 40 82 00 0C */ bne lbl_8030E9A8
+/* 8030E9A0 0030A600 38 60 00 0D */ li r3, 0xd
+/* 8030E9A4 0030A604 48 00 00 6C */ b lbl_8030EA10
+lbl_8030E9A8:
+/* 8030E9A8 0030A608 3B 9C FF FF */ addi r28, r28, -1
+lbl_8030E9AC:
+/* 8030E9AC 0030A60C 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030E9B0 0030A610 40 82 FF 6C */ bne lbl_8030E91C
+/* 8030E9B4 0030A614 80 A1 00 0C */ lwz r5, 0xc(r1)
+/* 8030E9B8 0030A618 2C 05 00 00 */ cmpwi r5, 0
+/* 8030E9BC 0030A61C 40 82 00 0C */ bne lbl_8030E9C8
+/* 8030E9C0 0030A620 38 60 00 0D */ li r3, 0xd
+/* 8030E9C4 0030A624 48 00 00 4C */ b lbl_8030EA10
+lbl_8030E9C8:
+/* 8030E9C8 0030A628 80 7B 00 34 */ lwz r3, 0x34(r27)
+/* 8030E9CC 0030A62C 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 8030E9D0 0030A630 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 8030E9D4 0030A634 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030E9D8 0030A638 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030E9DC 0030A63C 7C 64 02 14 */ add r3, r4, r0
+/* 8030E9E0 0030A640 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030E9E4 0030A644 7C 05 00 40 */ cmplw r5, r0
+/* 8030E9E8 0030A648 40 82 00 0C */ bne lbl_8030E9F4
+/* 8030E9EC 0030A64C 38 60 00 00 */ li r3, 0
+/* 8030E9F0 0030A650 48 00 00 20 */ b lbl_8030EA10
+lbl_8030E9F4:
+/* 8030E9F4 0030A654 90 BE 00 00 */ stw r5, 0(r30)
+/* 8030E9F8 0030A658 38 00 00 01 */ li r0, 1
+/* 8030E9FC 0030A65C 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030EA00 0030A660 48 00 00 0C */ b lbl_8030EA0C
+lbl_8030EA04:
+/* 8030EA04 0030A664 38 60 00 00 */ li r3, 0
+/* 8030EA08 0030A668 48 00 00 08 */ b lbl_8030EA10
+lbl_8030EA0C:
+/* 8030EA0C 0030A66C 38 60 00 00 */ li r3, 0
+lbl_8030EA10:
+/* 8030EA10 0030A670 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030EA14 0030A674 4B EB 87 61 */ bl _restgpr_27
+/* 8030EA18 0030A678 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030EA1C 0030A67C 7C 08 03 A6 */ mtlr r0
+/* 8030EA20 0030A680 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030EA24 0030A684 4E 80 00 20 */ blr
+
+.global VFiPFFAT_FindClusterLinkPage
+VFiPFFAT_FindClusterLinkPage:
+/* 8030EA28 0030A688 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030EA2C 0030A68C 7C 08 02 A6 */ mflr r0
+/* 8030EA30 0030A690 39 00 FF FF */ li r8, -1
+/* 8030EA34 0030A694 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030EA38 0030A698 38 00 00 00 */ li r0, 0
+/* 8030EA3C 0030A69C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030EA40 0030A6A0 7C DF 33 78 */ mr r31, r6
+/* 8030EA44 0030A6A4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030EA48 0030A6A8 7C BE 2B 78 */ mr r30, r5
+/* 8030EA4C 0030A6AC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030EA50 0030A6B0 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8030EA54 0030A6B4 7C 7C 1B 78 */ mr r28, r3
+/* 8030EA58 0030A6B8 90 E1 00 08 */ stw r7, 8(r1)
+/* 8030EA5C 0030A6BC 91 01 00 0C */ stw r8, 0xc(r1)
+/* 8030EA60 0030A6C0 90 06 00 00 */ stw r0, 0(r6)
+/* 8030EA64 0030A6C4 80 03 00 24 */ lwz r0, 0x24(r3)
+/* 8030EA68 0030A6C8 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EA6C 0030A6CC 40 82 00 0C */ bne lbl_8030EA78
+/* 8030EA70 0030A6D0 38 60 00 00 */ li r3, 0
+/* 8030EA74 0030A6D4 48 00 01 40 */ b lbl_8030EBB4
+lbl_8030EA78:
+/* 8030EA78 0030A6D8 80 03 00 2C */ lwz r0, 0x2c(r3)
+/* 8030EA7C 0030A6DC 7C 00 20 40 */ cmplw r0, r4
+/* 8030EA80 0030A6E0 41 80 01 28 */ blt lbl_8030EBA8
+/* 8030EA84 0030A6E4 A0 E3 00 20 */ lhz r7, 0x20(r3)
+/* 8030EA88 0030A6E8 38 07 00 01 */ addi r0, r7, 1
+/* 8030EA8C 0030A6EC 7C E4 03 96 */ divwu r7, r4, r0
+/* 8030EA90 0030A6F0 7C 07 01 D6 */ mullw r0, r7, r0
+/* 8030EA94 0030A6F4 7F A0 20 51 */ subf. r29, r0, r4
+/* 8030EA98 0030A6F8 40 82 00 20 */ bne lbl_8030EAB8
+/* 8030EA9C 0030A6FC 80 83 00 1C */ lwz r4, 0x1c(r3)
+/* 8030EAA0 0030A700 54 E3 10 3A */ slwi r3, r7, 2
+/* 8030EAA4 0030A704 38 00 00 01 */ li r0, 1
+/* 8030EAA8 0030A708 7C 64 18 2E */ lwzx r3, r4, r3
+/* 8030EAAC 0030A70C 90 65 00 00 */ stw r3, 0(r5)
+/* 8030EAB0 0030A710 90 06 00 00 */ stw r0, 0(r6)
+/* 8030EAB4 0030A714 48 00 00 FC */ b lbl_8030EBB0
+lbl_8030EAB8:
+/* 8030EAB8 0030A718 80 63 00 1C */ lwz r3, 0x1c(r3)
+/* 8030EABC 0030A71C 54 E0 10 3A */ slwi r0, r7, 2
+/* 8030EAC0 0030A720 7C 83 00 2E */ lwzx r4, r3, r0
+/* 8030EAC4 0030A724 48 00 00 8C */ b lbl_8030EB50
+lbl_8030EAC8:
+/* 8030EAC8 0030A728 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 8030EACC 0030A72C 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EAD0 0030A730 2C 00 00 01 */ cmpwi r0, 1
+/* 8030EAD4 0030A734 41 82 00 34 */ beq lbl_8030EB08
+/* 8030EAD8 0030A738 40 80 00 10 */ bge lbl_8030EAE8
+/* 8030EADC 0030A73C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EAE0 0030A740 40 80 00 14 */ bge lbl_8030EAF4
+/* 8030EAE4 0030A744 48 00 00 44 */ b lbl_8030EB28
+lbl_8030EAE8:
+/* 8030EAE8 0030A748 2C 00 00 03 */ cmpwi r0, 3
+/* 8030EAEC 0030A74C 40 80 00 3C */ bge lbl_8030EB28
+/* 8030EAF0 0030A750 48 00 00 28 */ b lbl_8030EB18
+lbl_8030EAF4:
+/* 8030EAF4 0030A754 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 8030EAF8 0030A758 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030EAFC 0030A75C 38 C1 00 08 */ addi r6, r1, 8
+/* 8030EB00 0030A760 48 00 28 55 */ bl VFiPFFAT12_ReadFATEntryPage
+/* 8030EB04 0030A764 48 00 00 28 */ b lbl_8030EB2C
+lbl_8030EB08:
+/* 8030EB08 0030A768 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030EB0C 0030A76C 38 C1 00 08 */ addi r6, r1, 8
+/* 8030EB10 0030A770 48 00 32 AD */ bl VFiPFFAT16_ReadFATEntryPage
+/* 8030EB14 0030A774 48 00 00 18 */ b lbl_8030EB2C
+lbl_8030EB18:
+/* 8030EB18 0030A778 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030EB1C 0030A77C 38 C1 00 08 */ addi r6, r1, 8
+/* 8030EB20 0030A780 48 00 38 25 */ bl VFiPFFAT32_ReadFATEntryPage
+/* 8030EB24 0030A784 48 00 00 08 */ b lbl_8030EB2C
+lbl_8030EB28:
+/* 8030EB28 0030A788 38 60 00 0F */ li r3, 0xf
+lbl_8030EB2C:
+/* 8030EB2C 0030A78C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030EB30 0030A790 41 82 00 08 */ beq lbl_8030EB38
+/* 8030EB34 0030A794 48 00 00 80 */ b lbl_8030EBB4
+lbl_8030EB38:
+/* 8030EB38 0030A798 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030EB3C 0030A79C 2C 04 00 00 */ cmpwi r4, 0
+/* 8030EB40 0030A7A0 40 82 00 0C */ bne lbl_8030EB4C
+/* 8030EB44 0030A7A4 38 60 00 0D */ li r3, 0xd
+/* 8030EB48 0030A7A8 48 00 00 6C */ b lbl_8030EBB4
+lbl_8030EB4C:
+/* 8030EB4C 0030A7AC 3B BD FF FF */ addi r29, r29, -1
+lbl_8030EB50:
+/* 8030EB50 0030A7B0 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030EB54 0030A7B4 40 82 FF 74 */ bne lbl_8030EAC8
+/* 8030EB58 0030A7B8 80 A1 00 0C */ lwz r5, 0xc(r1)
+/* 8030EB5C 0030A7BC 2C 05 00 00 */ cmpwi r5, 0
+/* 8030EB60 0030A7C0 40 82 00 0C */ bne lbl_8030EB6C
+/* 8030EB64 0030A7C4 38 60 00 0D */ li r3, 0xd
+/* 8030EB68 0030A7C8 48 00 00 4C */ b lbl_8030EBB4
+lbl_8030EB6C:
+/* 8030EB6C 0030A7CC 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 8030EB70 0030A7D0 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 8030EB74 0030A7D4 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 8030EB78 0030A7D8 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EB7C 0030A7DC 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030EB80 0030A7E0 7C 64 02 14 */ add r3, r4, r0
+/* 8030EB84 0030A7E4 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030EB88 0030A7E8 7C 05 00 40 */ cmplw r5, r0
+/* 8030EB8C 0030A7EC 40 82 00 0C */ bne lbl_8030EB98
+/* 8030EB90 0030A7F0 38 60 00 00 */ li r3, 0
+/* 8030EB94 0030A7F4 48 00 00 20 */ b lbl_8030EBB4
+lbl_8030EB98:
+/* 8030EB98 0030A7F8 90 BE 00 00 */ stw r5, 0(r30)
+/* 8030EB9C 0030A7FC 38 00 00 01 */ li r0, 1
+/* 8030EBA0 0030A800 90 1F 00 00 */ stw r0, 0(r31)
+/* 8030EBA4 0030A804 48 00 00 0C */ b lbl_8030EBB0
+lbl_8030EBA8:
+/* 8030EBA8 0030A808 38 60 00 00 */ li r3, 0
+/* 8030EBAC 0030A80C 48 00 00 08 */ b lbl_8030EBB4
+lbl_8030EBB0:
+/* 8030EBB0 0030A810 38 60 00 00 */ li r3, 0
+lbl_8030EBB4:
+/* 8030EBB4 0030A814 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030EBB8 0030A818 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030EBBC 0030A81C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030EBC0 0030A820 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030EBC4 0030A824 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030EBC8 0030A828 7C 08 03 A6 */ mtlr r0
+/* 8030EBCC 0030A82C 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030EBD0 0030A830 4E 80 00 20 */ blr
+
+.global VFiPFFAT_ReadClusterPage
+VFiPFFAT_ReadClusterPage:
+/* 8030EBD4 0030A834 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030EBD8 0030A838 7C 08 02 A6 */ mflr r0
+/* 8030EBDC 0030A83C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030EBE0 0030A840 39 61 00 20 */ addi r11, r1, 0x20
+/* 8030EBE4 0030A844 4B EB 85 41 */ bl _savegpr_26
+/* 8030EBE8 0030A848 38 00 FF FF */ li r0, -1
+/* 8030EBEC 0030A84C 7C 7E 1B 78 */ mr r30, r3
+/* 8030EBF0 0030A850 90 06 00 00 */ stw r0, 0(r6)
+/* 8030EBF4 0030A854 7C 9A 23 78 */ mr r26, r4
+/* 8030EBF8 0030A858 7C BF 2B 78 */ mr r31, r5
+/* 8030EBFC 0030A85C 7C DB 33 78 */ mr r27, r6
+/* 8030EC00 0030A860 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EC04 0030A864 7C FC 3B 78 */ mr r28, r7
+/* 8030EC08 0030A868 7D 1D 43 78 */ mr r29, r8
+/* 8030EC0C 0030A86C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EC10 0030A870 41 82 00 30 */ beq lbl_8030EC40
+/* 8030EC14 0030A874 80 07 00 00 */ lwz r0, 0(r7)
+/* 8030EC18 0030A878 28 00 00 01 */ cmplwi r0, 1
+/* 8030EC1C 0030A87C 40 82 00 24 */ bne lbl_8030EC40
+/* 8030EC20 0030A880 80 E8 00 00 */ lwz r7, 0(r8)
+/* 8030EC24 0030A884 7F E4 FB 78 */ mr r4, r31
+/* 8030EC28 0030A888 7F 65 DB 78 */ mr r5, r27
+/* 8030EC2C 0030A88C 7F 86 E3 78 */ mr r6, r28
+/* 8030EC30 0030A890 4B FF FD F9 */ bl VFiPFFAT_FindClusterLinkPage
+/* 8030EC34 0030A894 2C 03 00 00 */ cmpwi r3, 0
+/* 8030EC38 0030A898 41 82 00 08 */ beq lbl_8030EC40
+/* 8030EC3C 0030A89C 48 00 01 4C */ b lbl_8030ED88
+lbl_8030EC40:
+/* 8030EC40 0030A8A0 80 1E 00 1C */ lwz r0, 0x1c(r30)
+/* 8030EC44 0030A8A4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EC48 0030A8A8 41 82 00 10 */ beq lbl_8030EC58
+/* 8030EC4C 0030A8AC 80 1C 00 00 */ lwz r0, 0(r28)
+/* 8030EC50 0030A8B0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EC54 0030A8B4 40 82 01 30 */ bne lbl_8030ED84
+lbl_8030EC58:
+/* 8030EC58 0030A8B8 80 7E 00 34 */ lwz r3, 0x34(r30)
+/* 8030EC5C 0030A8BC 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EC60 0030A8C0 2C 00 00 01 */ cmpwi r0, 1
+/* 8030EC64 0030A8C4 41 82 00 34 */ beq lbl_8030EC98
+/* 8030EC68 0030A8C8 40 80 00 10 */ bge lbl_8030EC78
+/* 8030EC6C 0030A8CC 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EC70 0030A8D0 40 80 00 14 */ bge lbl_8030EC84
+/* 8030EC74 0030A8D4 48 00 00 4C */ b lbl_8030ECC0
+lbl_8030EC78:
+/* 8030EC78 0030A8D8 2C 00 00 03 */ cmpwi r0, 3
+/* 8030EC7C 0030A8DC 40 80 00 44 */ bge lbl_8030ECC0
+/* 8030EC80 0030A8E0 48 00 00 2C */ b lbl_8030ECAC
+lbl_8030EC84:
+/* 8030EC84 0030A8E4 7F 65 DB 78 */ mr r5, r27
+/* 8030EC88 0030A8E8 7F A6 EB 78 */ mr r6, r29
+/* 8030EC8C 0030A8EC 57 44 04 3E */ clrlwi r4, r26, 0x10
+/* 8030EC90 0030A8F0 48 00 26 C5 */ bl VFiPFFAT12_ReadFATEntryPage
+/* 8030EC94 0030A8F4 48 00 00 30 */ b lbl_8030ECC4
+lbl_8030EC98:
+/* 8030EC98 0030A8F8 7F 44 D3 78 */ mr r4, r26
+/* 8030EC9C 0030A8FC 7F 65 DB 78 */ mr r5, r27
+/* 8030ECA0 0030A900 7F A6 EB 78 */ mr r6, r29
+/* 8030ECA4 0030A904 48 00 31 19 */ bl VFiPFFAT16_ReadFATEntryPage
+/* 8030ECA8 0030A908 48 00 00 1C */ b lbl_8030ECC4
+lbl_8030ECAC:
+/* 8030ECAC 0030A90C 7F 44 D3 78 */ mr r4, r26
+/* 8030ECB0 0030A910 7F 65 DB 78 */ mr r5, r27
+/* 8030ECB4 0030A914 7F A6 EB 78 */ mr r6, r29
+/* 8030ECB8 0030A918 48 00 36 8D */ bl VFiPFFAT32_ReadFATEntryPage
+/* 8030ECBC 0030A91C 48 00 00 08 */ b lbl_8030ECC4
+lbl_8030ECC0:
+/* 8030ECC0 0030A920 38 60 00 0F */ li r3, 0xf
+lbl_8030ECC4:
+/* 8030ECC4 0030A924 2C 03 00 00 */ cmpwi r3, 0
+/* 8030ECC8 0030A928 41 82 00 08 */ beq lbl_8030ECD0
+/* 8030ECCC 0030A92C 48 00 00 BC */ b lbl_8030ED88
+lbl_8030ECD0:
+/* 8030ECD0 0030A930 80 DB 00 00 */ lwz r6, 0(r27)
+/* 8030ECD4 0030A934 2C 06 00 00 */ cmpwi r6, 0
+/* 8030ECD8 0030A938 40 82 00 0C */ bne lbl_8030ECE4
+/* 8030ECDC 0030A93C 38 60 00 0D */ li r3, 0xd
+/* 8030ECE0 0030A940 48 00 00 A8 */ b lbl_8030ED88
+lbl_8030ECE4:
+/* 8030ECE4 0030A944 3C 06 00 01 */ addis r0, r6, 1
+/* 8030ECE8 0030A948 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030ECEC 0030A94C 40 82 00 0C */ bne lbl_8030ECF8
+/* 8030ECF0 0030A950 38 60 00 06 */ li r3, 6
+/* 8030ECF4 0030A954 48 00 00 94 */ b lbl_8030ED88
+lbl_8030ECF8:
+/* 8030ECF8 0030A958 80 BE 00 1C */ lwz r5, 0x1c(r30)
+/* 8030ECFC 0030A95C 2C 05 00 00 */ cmpwi r5, 0
+/* 8030ED00 0030A960 41 82 00 84 */ beq lbl_8030ED84
+/* 8030ED04 0030A964 80 7E 00 34 */ lwz r3, 0x34(r30)
+/* 8030ED08 0030A968 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 8030ED0C 0030A96C 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 8030ED10 0030A970 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030ED14 0030A974 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030ED18 0030A978 7C 64 02 14 */ add r3, r4, r0
+/* 8030ED1C 0030A97C 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030ED20 0030A980 7C 06 00 40 */ cmplw r6, r0
+/* 8030ED24 0030A984 41 82 00 60 */ beq lbl_8030ED84
+/* 8030ED28 0030A988 80 9E 00 24 */ lwz r4, 0x24(r30)
+/* 8030ED2C 0030A98C 80 1E 00 28 */ lwz r0, 0x28(r30)
+/* 8030ED30 0030A990 7C 00 20 40 */ cmplw r0, r4
+/* 8030ED34 0030A994 40 81 00 50 */ ble lbl_8030ED84
+/* 8030ED38 0030A998 2C 00 00 00 */ cmpwi r0, 0
+/* 8030ED3C 0030A99C 41 82 00 48 */ beq lbl_8030ED84
+/* 8030ED40 0030A9A0 A0 7E 00 20 */ lhz r3, 0x20(r30)
+/* 8030ED44 0030A9A4 38 03 00 01 */ addi r0, r3, 1
+/* 8030ED48 0030A9A8 7C 04 01 D6 */ mullw r0, r4, r0
+/* 8030ED4C 0030A9AC 7C 1F 00 40 */ cmplw r31, r0
+/* 8030ED50 0030A9B0 40 82 00 24 */ bne lbl_8030ED74
+/* 8030ED54 0030A9B4 38 60 00 00 */ li r3, 0
+/* 8030ED58 0030A9B8 54 80 10 3A */ slwi r0, r4, 2
+/* 8030ED5C 0030A9BC B0 7E 00 22 */ sth r3, 0x22(r30)
+/* 8030ED60 0030A9C0 7C C5 01 2E */ stwx r6, r5, r0
+/* 8030ED64 0030A9C4 80 7E 00 24 */ lwz r3, 0x24(r30)
+/* 8030ED68 0030A9C8 38 03 00 01 */ addi r0, r3, 1
+/* 8030ED6C 0030A9CC 90 1E 00 24 */ stw r0, 0x24(r30)
+/* 8030ED70 0030A9D0 48 00 00 10 */ b lbl_8030ED80
+lbl_8030ED74:
+/* 8030ED74 0030A9D4 A0 7E 00 22 */ lhz r3, 0x22(r30)
+/* 8030ED78 0030A9D8 38 03 00 01 */ addi r0, r3, 1
+/* 8030ED7C 0030A9DC B0 1E 00 22 */ sth r0, 0x22(r30)
+lbl_8030ED80:
+/* 8030ED80 0030A9E0 93 FE 00 2C */ stw r31, 0x2c(r30)
+lbl_8030ED84:
+/* 8030ED84 0030A9E4 38 60 00 00 */ li r3, 0
+lbl_8030ED88:
+/* 8030ED88 0030A9E8 39 61 00 20 */ addi r11, r1, 0x20
+/* 8030ED8C 0030A9EC 4B EB 83 E5 */ bl _restgpr_26
+/* 8030ED90 0030A9F0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030ED94 0030A9F4 7C 08 03 A6 */ mtlr r0
+/* 8030ED98 0030A9F8 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030ED9C 0030A9FC 4E 80 00 20 */ blr
+
+.global VFiPFFAT_WriteCluster
+VFiPFFAT_WriteCluster:
+/* 8030EDA0 0030AA00 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030EDA4 0030AA04 7C 08 02 A6 */ mflr r0
+/* 8030EDA8 0030AA08 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030EDAC 0030AA0C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030EDB0 0030AA10 7C BF 2B 78 */ mr r31, r5
+/* 8030EDB4 0030AA14 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030EDB8 0030AA18 7C 9E 23 78 */ mr r30, r4
+/* 8030EDBC 0030AA1C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030EDC0 0030AA20 7C 7D 1B 78 */ mr r29, r3
+/* 8030EDC4 0030AA24 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8030EDC8 0030AA28 7C DC 33 78 */ mr r28, r6
+/* 8030EDCC 0030AA2C 90 E1 00 08 */ stw r7, 8(r1)
+/* 8030EDD0 0030AA30 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030EDD4 0030AA34 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EDD8 0030AA38 2C 00 00 01 */ cmpwi r0, 1
+/* 8030EDDC 0030AA3C 41 82 00 40 */ beq lbl_8030EE1C
+/* 8030EDE0 0030AA40 40 80 00 10 */ bge lbl_8030EDF0
+/* 8030EDE4 0030AA44 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EDE8 0030AA48 40 80 00 14 */ bge lbl_8030EDFC
+/* 8030EDEC 0030AA4C 48 00 00 70 */ b lbl_8030EE5C
+lbl_8030EDF0:
+/* 8030EDF0 0030AA50 2C 00 00 03 */ cmpwi r0, 3
+/* 8030EDF4 0030AA54 40 80 00 68 */ bge lbl_8030EE5C
+/* 8030EDF8 0030AA58 48 00 00 40 */ b lbl_8030EE38
+lbl_8030EDFC:
+/* 8030EDFC 0030AA5C 28 06 0F FF */ cmplwi r6, 0xfff
+/* 8030EE00 0030AA60 40 81 00 0C */ ble lbl_8030EE0C
+/* 8030EE04 0030AA64 38 60 00 10 */ li r3, 0x10
+/* 8030EE08 0030AA68 48 00 00 58 */ b lbl_8030EE60
+lbl_8030EE0C:
+/* 8030EE0C 0030AA6C 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 8030EE10 0030AA70 54 C5 04 3E */ clrlwi r5, r6, 0x10
+/* 8030EE14 0030AA74 48 00 28 15 */ bl VFiPFFAT12_WriteFATEntry
+/* 8030EE18 0030AA78 48 00 00 48 */ b lbl_8030EE60
+lbl_8030EE1C:
+/* 8030EE1C 0030AA7C 28 06 FF FF */ cmplwi r6, 0xffff
+/* 8030EE20 0030AA80 40 81 00 0C */ ble lbl_8030EE2C
+/* 8030EE24 0030AA84 38 60 00 10 */ li r3, 0x10
+/* 8030EE28 0030AA88 48 00 00 38 */ b lbl_8030EE60
+lbl_8030EE2C:
+/* 8030EE2C 0030AA8C 7F 85 E3 78 */ mr r5, r28
+/* 8030EE30 0030AA90 48 00 31 49 */ bl VFiPFFAT16_WriteFATEntry
+/* 8030EE34 0030AA94 48 00 00 2C */ b lbl_8030EE60
+lbl_8030EE38:
+/* 8030EE38 0030AA98 3C A0 10 00 */ lis r5, 0x0FFFFFFF@ha
+/* 8030EE3C 0030AA9C 38 05 FF FF */ addi r0, r5, 0x0FFFFFFF@l
+/* 8030EE40 0030AAA0 7C 06 00 40 */ cmplw r6, r0
+/* 8030EE44 0030AAA4 40 81 00 0C */ ble lbl_8030EE50
+/* 8030EE48 0030AAA8 38 60 00 10 */ li r3, 0x10
+/* 8030EE4C 0030AAAC 48 00 00 14 */ b lbl_8030EE60
+lbl_8030EE50:
+/* 8030EE50 0030AAB0 7F 85 E3 78 */ mr r5, r28
+/* 8030EE54 0030AAB4 48 00 36 BD */ bl VFiPFFAT32_WriteFATEntry
+/* 8030EE58 0030AAB8 48 00 00 08 */ b lbl_8030EE60
+lbl_8030EE5C:
+/* 8030EE5C 0030AABC 38 60 00 0F */ li r3, 0xf
+lbl_8030EE60:
+/* 8030EE60 0030AAC0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030EE64 0030AAC4 41 82 00 08 */ beq lbl_8030EE6C
+/* 8030EE68 0030AAC8 48 00 01 3C */ b lbl_8030EFA4
+lbl_8030EE6C:
+/* 8030EE6C 0030AACC 80 BD 00 1C */ lwz r5, 0x1c(r29)
+/* 8030EE70 0030AAD0 2C 05 00 00 */ cmpwi r5, 0
+/* 8030EE74 0030AAD4 41 82 01 2C */ beq lbl_8030EFA0
+/* 8030EE78 0030AAD8 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030EE7C 0030AADC 28 00 00 01 */ cmplwi r0, 1
+/* 8030EE80 0030AAE0 40 82 01 20 */ bne lbl_8030EFA0
+/* 8030EE84 0030AAE4 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030EE88 0030AAE8 40 82 00 68 */ bne lbl_8030EEF0
+/* 8030EE8C 0030AAEC A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030EE90 0030AAF0 80 1D 00 28 */ lwz r0, 0x28(r29)
+/* 8030EE94 0030AAF4 38 83 00 01 */ addi r4, r3, 1
+/* 8030EE98 0030AAF8 7C 7F 23 96 */ divwu r3, r31, r4
+/* 8030EE9C 0030AAFC 7C 00 18 40 */ cmplw r0, r3
+/* 8030EEA0 0030AB00 41 80 01 00 */ blt lbl_8030EFA0
+/* 8030EEA4 0030AB04 7C 03 21 D6 */ mullw r0, r3, r4
+/* 8030EEA8 0030AB08 7C 00 F8 51 */ subf. r0, r0, r31
+/* 8030EEAC 0030AB0C 40 82 00 10 */ bne lbl_8030EEBC
+/* 8030EEB0 0030AB10 54 60 10 3A */ slwi r0, r3, 2
+/* 8030EEB4 0030AB14 38 60 00 00 */ li r3, 0
+/* 8030EEB8 0030AB18 7C 65 01 2E */ stwx r3, r5, r0
+lbl_8030EEBC:
+/* 8030EEBC 0030AB1C 80 1D 00 2C */ lwz r0, 0x2c(r29)
+/* 8030EEC0 0030AB20 7C 00 F8 40 */ cmplw r0, r31
+/* 8030EEC4 0030AB24 41 80 00 DC */ blt lbl_8030EFA0
+/* 8030EEC8 0030AB28 A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030EECC 0030AB2C 38 9F FF FF */ addi r4, r31, -1
+/* 8030EED0 0030AB30 90 9D 00 2C */ stw r4, 0x2c(r29)
+/* 8030EED4 0030AB34 38 03 00 01 */ addi r0, r3, 1
+/* 8030EED8 0030AB38 7C 64 03 96 */ divwu r3, r4, r0
+/* 8030EEDC 0030AB3C 7C 03 01 D6 */ mullw r0, r3, r0
+/* 8030EEE0 0030AB40 90 7D 00 24 */ stw r3, 0x24(r29)
+/* 8030EEE4 0030AB44 7C 00 20 50 */ subf r0, r0, r4
+/* 8030EEE8 0030AB48 B0 1D 00 22 */ sth r0, 0x22(r29)
+/* 8030EEEC 0030AB4C 48 00 00 B4 */ b lbl_8030EFA0
+lbl_8030EEF0:
+/* 8030EEF0 0030AB50 80 7D 00 34 */ lwz r3, 0x34(r29)
+/* 8030EEF4 0030AB54 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 8030EEF8 0030AB58 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 8030EEFC 0030AB5C 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EF00 0030AB60 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030EF04 0030AB64 7C 64 02 14 */ add r3, r4, r0
+/* 8030EF08 0030AB68 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030EF0C 0030AB6C 7C 1E 00 40 */ cmplw r30, r0
+/* 8030EF10 0030AB70 41 82 00 90 */ beq lbl_8030EFA0
+/* 8030EF14 0030AB74 7F A3 EB 78 */ mr r3, r29
+/* 8030EF18 0030AB78 7F E4 FB 78 */ mr r4, r31
+/* 8030EF1C 0030AB7C 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030EF20 0030AB80 38 C1 00 08 */ addi r6, r1, 8
+/* 8030EF24 0030AB84 4B FF F9 49 */ bl VFiPFFAT_FindClusterLink
+/* 8030EF28 0030AB88 2C 03 00 00 */ cmpwi r3, 0
+/* 8030EF2C 0030AB8C 41 82 00 08 */ beq lbl_8030EF34
+/* 8030EF30 0030AB90 48 00 00 74 */ b lbl_8030EFA4
+lbl_8030EF34:
+/* 8030EF34 0030AB94 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030EF38 0030AB98 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EF3C 0030AB9C 40 82 00 64 */ bne lbl_8030EFA0
+/* 8030EF40 0030ABA0 80 9D 00 24 */ lwz r4, 0x24(r29)
+/* 8030EF44 0030ABA4 80 1D 00 28 */ lwz r0, 0x28(r29)
+/* 8030EF48 0030ABA8 7C 00 20 40 */ cmplw r0, r4
+/* 8030EF4C 0030ABAC 40 81 00 54 */ ble lbl_8030EFA0
+/* 8030EF50 0030ABB0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030EF54 0030ABB4 41 82 00 4C */ beq lbl_8030EFA0
+/* 8030EF58 0030ABB8 A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030EF5C 0030ABBC 38 03 00 01 */ addi r0, r3, 1
+/* 8030EF60 0030ABC0 7C 04 01 D6 */ mullw r0, r4, r0
+/* 8030EF64 0030ABC4 7C 1F 00 40 */ cmplw r31, r0
+/* 8030EF68 0030ABC8 40 82 00 28 */ bne lbl_8030EF90
+/* 8030EF6C 0030ABCC 38 00 00 00 */ li r0, 0
+/* 8030EF70 0030ABD0 80 7D 00 1C */ lwz r3, 0x1c(r29)
+/* 8030EF74 0030ABD4 B0 1D 00 22 */ sth r0, 0x22(r29)
+/* 8030EF78 0030ABD8 54 80 10 3A */ slwi r0, r4, 2
+/* 8030EF7C 0030ABDC 7F C3 01 2E */ stwx r30, r3, r0
+/* 8030EF80 0030ABE0 80 7D 00 24 */ lwz r3, 0x24(r29)
+/* 8030EF84 0030ABE4 38 03 00 01 */ addi r0, r3, 1
+/* 8030EF88 0030ABE8 90 1D 00 24 */ stw r0, 0x24(r29)
+/* 8030EF8C 0030ABEC 48 00 00 10 */ b lbl_8030EF9C
+lbl_8030EF90:
+/* 8030EF90 0030ABF0 A0 7D 00 22 */ lhz r3, 0x22(r29)
+/* 8030EF94 0030ABF4 38 03 00 01 */ addi r0, r3, 1
+/* 8030EF98 0030ABF8 B0 1D 00 22 */ sth r0, 0x22(r29)
+lbl_8030EF9C:
+/* 8030EF9C 0030ABFC 93 FD 00 2C */ stw r31, 0x2c(r29)
+lbl_8030EFA0:
+/* 8030EFA0 0030AC00 38 60 00 00 */ li r3, 0
+lbl_8030EFA4:
+/* 8030EFA4 0030AC04 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030EFA8 0030AC08 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030EFAC 0030AC0C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030EFB0 0030AC10 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030EFB4 0030AC14 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030EFB8 0030AC18 7C 08 03 A6 */ mtlr r0
+/* 8030EFBC 0030AC1C 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030EFC0 0030AC20 4E 80 00 20 */ blr
+
+.global VFiPFFAT_WriteClusterPage
+VFiPFFAT_WriteClusterPage:
+/* 8030EFC4 0030AC24 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030EFC8 0030AC28 7C 08 02 A6 */ mflr r0
+/* 8030EFCC 0030AC2C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030EFD0 0030AC30 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030EFD4 0030AC34 4B EB 81 55 */ bl _savegpr_27
+/* 8030EFD8 0030AC38 90 E1 00 08 */ stw r7, 8(r1)
+/* 8030EFDC 0030AC3C 7C 7D 1B 78 */ mr r29, r3
+/* 8030EFE0 0030AC40 7C 9E 23 78 */ mr r30, r4
+/* 8030EFE4 0030AC44 7C BF 2B 78 */ mr r31, r5
+/* 8030EFE8 0030AC48 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030EFEC 0030AC4C 7C DB 33 78 */ mr r27, r6
+/* 8030EFF0 0030AC50 7D 1C 43 78 */ mr r28, r8
+/* 8030EFF4 0030AC54 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030EFF8 0030AC58 2C 00 00 01 */ cmpwi r0, 1
+/* 8030EFFC 0030AC5C 41 82 00 44 */ beq lbl_8030F040
+/* 8030F000 0030AC60 40 80 00 10 */ bge lbl_8030F010
+/* 8030F004 0030AC64 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F008 0030AC68 40 80 00 14 */ bge lbl_8030F01C
+/* 8030F00C 0030AC6C 48 00 00 7C */ b lbl_8030F088
+lbl_8030F010:
+/* 8030F010 0030AC70 2C 00 00 03 */ cmpwi r0, 3
+/* 8030F014 0030AC74 40 80 00 74 */ bge lbl_8030F088
+/* 8030F018 0030AC78 48 00 00 48 */ b lbl_8030F060
+lbl_8030F01C:
+/* 8030F01C 0030AC7C 28 06 0F FF */ cmplwi r6, 0xfff
+/* 8030F020 0030AC80 40 81 00 0C */ ble lbl_8030F02C
+/* 8030F024 0030AC84 38 60 00 10 */ li r3, 0x10
+/* 8030F028 0030AC88 48 00 00 64 */ b lbl_8030F08C
+lbl_8030F02C:
+/* 8030F02C 0030AC8C 54 C5 04 3E */ clrlwi r5, r6, 0x10
+/* 8030F030 0030AC90 7F 86 E3 78 */ mr r6, r28
+/* 8030F034 0030AC94 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 8030F038 0030AC98 48 00 27 95 */ bl VFiPFFAT12_WriteFATEntryPage
+/* 8030F03C 0030AC9C 48 00 00 50 */ b lbl_8030F08C
+lbl_8030F040:
+/* 8030F040 0030ACA0 28 06 FF FF */ cmplwi r6, 0xffff
+/* 8030F044 0030ACA4 40 81 00 0C */ ble lbl_8030F050
+/* 8030F048 0030ACA8 38 60 00 10 */ li r3, 0x10
+/* 8030F04C 0030ACAC 48 00 00 40 */ b lbl_8030F08C
+lbl_8030F050:
+/* 8030F050 0030ACB0 7F 65 DB 78 */ mr r5, r27
+/* 8030F054 0030ACB4 7F 86 E3 78 */ mr r6, r28
+/* 8030F058 0030ACB8 48 00 2F B9 */ bl VFiPFFAT16_WriteFATEntryPage
+/* 8030F05C 0030ACBC 48 00 00 30 */ b lbl_8030F08C
+lbl_8030F060:
+/* 8030F060 0030ACC0 3C A0 10 00 */ lis r5, 0x0FFFFFFF@ha
+/* 8030F064 0030ACC4 38 05 FF FF */ addi r0, r5, 0x0FFFFFFF@l
+/* 8030F068 0030ACC8 7C 06 00 40 */ cmplw r6, r0
+/* 8030F06C 0030ACCC 40 81 00 0C */ ble lbl_8030F078
+/* 8030F070 0030ACD0 38 60 00 10 */ li r3, 0x10
+/* 8030F074 0030ACD4 48 00 00 18 */ b lbl_8030F08C
+lbl_8030F078:
+/* 8030F078 0030ACD8 7F 65 DB 78 */ mr r5, r27
+/* 8030F07C 0030ACDC 7F 86 E3 78 */ mr r6, r28
+/* 8030F080 0030ACE0 48 00 35 B1 */ bl VFiPFFAT32_WriteFATEntryPage
+/* 8030F084 0030ACE4 48 00 00 08 */ b lbl_8030F08C
+lbl_8030F088:
+/* 8030F088 0030ACE8 38 60 00 0F */ li r3, 0xf
+lbl_8030F08C:
+/* 8030F08C 0030ACEC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F090 0030ACF0 41 82 00 08 */ beq lbl_8030F098
+/* 8030F094 0030ACF4 48 00 01 40 */ b lbl_8030F1D4
+lbl_8030F098:
+/* 8030F098 0030ACF8 80 BD 00 1C */ lwz r5, 0x1c(r29)
+/* 8030F09C 0030ACFC 2C 05 00 00 */ cmpwi r5, 0
+/* 8030F0A0 0030AD00 41 82 01 30 */ beq lbl_8030F1D0
+/* 8030F0A4 0030AD04 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030F0A8 0030AD08 28 00 00 01 */ cmplwi r0, 1
+/* 8030F0AC 0030AD0C 40 82 01 24 */ bne lbl_8030F1D0
+/* 8030F0B0 0030AD10 2C 1B 00 00 */ cmpwi r27, 0
+/* 8030F0B4 0030AD14 40 82 00 68 */ bne lbl_8030F11C
+/* 8030F0B8 0030AD18 A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030F0BC 0030AD1C 80 1D 00 28 */ lwz r0, 0x28(r29)
+/* 8030F0C0 0030AD20 38 83 00 01 */ addi r4, r3, 1
+/* 8030F0C4 0030AD24 7C 7F 23 96 */ divwu r3, r31, r4
+/* 8030F0C8 0030AD28 7C 00 18 40 */ cmplw r0, r3
+/* 8030F0CC 0030AD2C 41 80 01 04 */ blt lbl_8030F1D0
+/* 8030F0D0 0030AD30 7C 03 21 D6 */ mullw r0, r3, r4
+/* 8030F0D4 0030AD34 7C 00 F8 51 */ subf. r0, r0, r31
+/* 8030F0D8 0030AD38 40 82 00 10 */ bne lbl_8030F0E8
+/* 8030F0DC 0030AD3C 54 60 10 3A */ slwi r0, r3, 2
+/* 8030F0E0 0030AD40 38 60 00 00 */ li r3, 0
+/* 8030F0E4 0030AD44 7C 65 01 2E */ stwx r3, r5, r0
+lbl_8030F0E8:
+/* 8030F0E8 0030AD48 80 1D 00 2C */ lwz r0, 0x2c(r29)
+/* 8030F0EC 0030AD4C 7C 00 F8 40 */ cmplw r0, r31
+/* 8030F0F0 0030AD50 41 80 00 E0 */ blt lbl_8030F1D0
+/* 8030F0F4 0030AD54 A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030F0F8 0030AD58 38 9F FF FF */ addi r4, r31, -1
+/* 8030F0FC 0030AD5C 90 9D 00 2C */ stw r4, 0x2c(r29)
+/* 8030F100 0030AD60 38 03 00 01 */ addi r0, r3, 1
+/* 8030F104 0030AD64 7C 64 03 96 */ divwu r3, r4, r0
+/* 8030F108 0030AD68 7C 03 01 D6 */ mullw r0, r3, r0
+/* 8030F10C 0030AD6C 90 7D 00 24 */ stw r3, 0x24(r29)
+/* 8030F110 0030AD70 7C 00 20 50 */ subf r0, r0, r4
+/* 8030F114 0030AD74 B0 1D 00 22 */ sth r0, 0x22(r29)
+/* 8030F118 0030AD78 48 00 00 B8 */ b lbl_8030F1D0
+lbl_8030F11C:
+/* 8030F11C 0030AD7C 80 7D 00 34 */ lwz r3, 0x34(r29)
+/* 8030F120 0030AD80 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 8030F124 0030AD84 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 8030F128 0030AD88 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030F12C 0030AD8C 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030F130 0030AD90 7C 64 02 14 */ add r3, r4, r0
+/* 8030F134 0030AD94 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030F138 0030AD98 7C 1E 00 40 */ cmplw r30, r0
+/* 8030F13C 0030AD9C 41 82 00 94 */ beq lbl_8030F1D0
+/* 8030F140 0030ADA0 80 FC 00 00 */ lwz r7, 0(r28)
+/* 8030F144 0030ADA4 7F A3 EB 78 */ mr r3, r29
+/* 8030F148 0030ADA8 7F E4 FB 78 */ mr r4, r31
+/* 8030F14C 0030ADAC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 8030F150 0030ADB0 38 C1 00 08 */ addi r6, r1, 8
+/* 8030F154 0030ADB4 4B FF F8 D5 */ bl VFiPFFAT_FindClusterLinkPage
+/* 8030F158 0030ADB8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F15C 0030ADBC 41 82 00 08 */ beq lbl_8030F164
+/* 8030F160 0030ADC0 48 00 00 74 */ b lbl_8030F1D4
+lbl_8030F164:
+/* 8030F164 0030ADC4 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030F168 0030ADC8 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F16C 0030ADCC 40 82 00 64 */ bne lbl_8030F1D0
+/* 8030F170 0030ADD0 80 9D 00 24 */ lwz r4, 0x24(r29)
+/* 8030F174 0030ADD4 80 1D 00 28 */ lwz r0, 0x28(r29)
+/* 8030F178 0030ADD8 7C 00 20 40 */ cmplw r0, r4
+/* 8030F17C 0030ADDC 40 81 00 54 */ ble lbl_8030F1D0
+/* 8030F180 0030ADE0 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F184 0030ADE4 41 82 00 4C */ beq lbl_8030F1D0
+/* 8030F188 0030ADE8 A0 7D 00 20 */ lhz r3, 0x20(r29)
+/* 8030F18C 0030ADEC 38 03 00 01 */ addi r0, r3, 1
+/* 8030F190 0030ADF0 7C 04 01 D6 */ mullw r0, r4, r0
+/* 8030F194 0030ADF4 7C 1F 00 40 */ cmplw r31, r0
+/* 8030F198 0030ADF8 40 82 00 28 */ bne lbl_8030F1C0
+/* 8030F19C 0030ADFC 38 00 00 00 */ li r0, 0
+/* 8030F1A0 0030AE00 80 7D 00 1C */ lwz r3, 0x1c(r29)
+/* 8030F1A4 0030AE04 B0 1D 00 22 */ sth r0, 0x22(r29)
+/* 8030F1A8 0030AE08 54 80 10 3A */ slwi r0, r4, 2
+/* 8030F1AC 0030AE0C 7F C3 01 2E */ stwx r30, r3, r0
+/* 8030F1B0 0030AE10 80 7D 00 24 */ lwz r3, 0x24(r29)
+/* 8030F1B4 0030AE14 38 03 00 01 */ addi r0, r3, 1
+/* 8030F1B8 0030AE18 90 1D 00 24 */ stw r0, 0x24(r29)
+/* 8030F1BC 0030AE1C 48 00 00 10 */ b lbl_8030F1CC
+lbl_8030F1C0:
+/* 8030F1C0 0030AE20 A0 7D 00 22 */ lhz r3, 0x22(r29)
+/* 8030F1C4 0030AE24 38 03 00 01 */ addi r0, r3, 1
+/* 8030F1C8 0030AE28 B0 1D 00 22 */ sth r0, 0x22(r29)
+lbl_8030F1CC:
+/* 8030F1CC 0030AE2C 93 FD 00 2C */ stw r31, 0x2c(r29)
+lbl_8030F1D0:
+/* 8030F1D0 0030AE30 38 60 00 00 */ li r3, 0
+lbl_8030F1D4:
+/* 8030F1D4 0030AE34 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030F1D8 0030AE38 4B EB 7F 9D */ bl _restgpr_27
+/* 8030F1DC 0030AE3C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030F1E0 0030AE40 7C 08 03 A6 */ mtlr r0
+/* 8030F1E4 0030AE44 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030F1E8 0030AE48 4E 80 00 20 */ blr
+
+.global VFiPFFAT_DoAllocateChain
+VFiPFFAT_DoAllocateChain:
+/* 8030F1EC 0030AE4C 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030F1F0 0030AE50 7C 08 02 A6 */ mflr r0
+/* 8030F1F4 0030AE54 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030F1F8 0030AE58 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030F1FC 0030AE5C 4B EB 7F 25 */ bl _savegpr_25
+/* 8030F200 0030AE60 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 8030F204 0030AE64 7C 79 1B 78 */ mr r25, r3
+/* 8030F208 0030AE68 3D 00 80 40 */ lis r8, lbl_803FE280@ha
+/* 8030F20C 0030AE6C 38 00 FF FF */ li r0, -1
+/* 8030F210 0030AE70 80 7F 00 1C */ lwz r3, 0x1c(r31)
+/* 8030F214 0030AE74 39 08 E2 80 */ addi r8, r8, lbl_803FE280@l
+/* 8030F218 0030AE78 7C BA 2B 78 */ mr r26, r5
+/* 8030F21C 0030AE7C 7C DB 33 78 */ mr r27, r6
+/* 8030F220 0030AE80 90 06 00 00 */ stw r0, 0(r6)
+/* 8030F224 0030AE84 1C 63 00 14 */ mulli r3, r3, 0x14
+/* 8030F228 0030AE88 7C 86 23 78 */ mr r6, r4
+/* 8030F22C 0030AE8C 90 07 00 00 */ stw r0, 0(r7)
+/* 8030F230 0030AE90 7C FC 3B 78 */ mr r28, r7
+/* 8030F234 0030AE94 7C A8 1A 14 */ add r5, r8, r3
+/* 8030F238 0030AE98 38 E1 00 10 */ addi r7, r1, 0x10
+/* 8030F23C 0030AE9C 90 01 00 0C */ stw r0, 0xc(r1)
+/* 8030F240 0030AEA0 7F E3 FB 78 */ mr r3, r31
+/* 8030F244 0030AEA4 83 C5 00 08 */ lwz r30, 8(r5)
+/* 8030F248 0030AEA8 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030F24C 0030AEAC 80 9F 00 3C */ lwz r4, 0x3c(r31)
+/* 8030F250 0030AEB0 38 A0 FF FF */ li r5, -1
+/* 8030F254 0030AEB4 4B FF F4 15 */ bl VFiPFFAT_SearchForNumFreeClusters
+/* 8030F258 0030AEB8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F25C 0030AEBC 41 82 00 08 */ beq lbl_8030F264
+/* 8030F260 0030AEC0 48 00 02 20 */ b lbl_8030F480
+lbl_8030F264:
+/* 8030F264 0030AEC4 80 A1 00 10 */ lwz r5, 0x10(r1)
+/* 8030F268 0030AEC8 3C 05 00 01 */ addis r0, r5, 1
+/* 8030F26C 0030AECC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F270 0030AED0 40 82 00 0C */ bne lbl_8030F27C
+/* 8030F274 0030AED4 38 60 00 00 */ li r3, 0
+/* 8030F278 0030AED8 48 00 02 08 */ b lbl_8030F480
+lbl_8030F27C:
+/* 8030F27C 0030AEDC 7F E3 FB 78 */ mr r3, r31
+/* 8030F280 0030AEE0 38 81 00 08 */ addi r4, r1, 8
+/* 8030F284 0030AEE4 4B FF F2 B5 */ bl VFiPFFAT_ReadFATSector
+/* 8030F288 0030AEE8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F28C 0030AEEC 41 82 00 08 */ beq lbl_8030F294
+/* 8030F290 0030AEF0 48 00 01 F0 */ b lbl_8030F480
+lbl_8030F294:
+/* 8030F294 0030AEF4 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030F298 0030AEF8 38 00 00 00 */ li r0, 0
+/* 8030F29C 0030AEFC B0 03 00 02 */ sth r0, 2(r3)
+/* 8030F2A0 0030AF00 83 A1 00 10 */ lwz r29, 0x10(r1)
+/* 8030F2A4 0030AF04 48 00 00 98 */ b lbl_8030F33C
+lbl_8030F2A8:
+/* 8030F2A8 0030AF08 7F 23 CB 78 */ mr r3, r25
+/* 8030F2AC 0030AF0C 7F A4 EB 78 */ mr r4, r29
+/* 8030F2B0 0030AF10 7F 45 D3 78 */ mr r5, r26
+/* 8030F2B4 0030AF14 38 DD 00 01 */ addi r6, r29, 1
+/* 8030F2B8 0030AF18 39 01 00 08 */ addi r8, r1, 8
+/* 8030F2BC 0030AF1C 38 E0 00 01 */ li r7, 1
+/* 8030F2C0 0030AF20 4B FF FD 05 */ bl VFiPFFAT_WriteClusterPage
+/* 8030F2C4 0030AF24 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F2C8 0030AF28 41 82 00 08 */ beq lbl_8030F2D0
+/* 8030F2CC 0030AF2C 48 00 01 B4 */ b lbl_8030F480
+lbl_8030F2D0:
+/* 8030F2D0 0030AF30 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8030F2D4 0030AF34 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 8030F2D8 0030AF38 41 82 00 44 */ beq lbl_8030F31C
+/* 8030F2DC 0030AF3C 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 8030F2E0 0030AF40 3C 03 00 01 */ addis r0, r3, 1
+/* 8030F2E4 0030AF44 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F2E8 0030AF48 41 82 00 34 */ beq lbl_8030F31C
+/* 8030F2EC 0030AF4C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F2F0 0030AF50 41 82 00 2C */ beq lbl_8030F31C
+/* 8030F2F4 0030AF54 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8030F2F8 0030AF58 2C 00 00 02 */ cmpwi r0, 2
+/* 8030F2FC 0030AF5C 40 82 00 14 */ bne lbl_8030F310
+/* 8030F300 0030AF60 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030F304 0030AF64 80 1F 00 10 */ lwz r0, 0x10(r31)
+/* 8030F308 0030AF68 7C 03 00 40 */ cmplw r3, r0
+/* 8030F30C 0030AF6C 41 82 00 10 */ beq lbl_8030F31C
+lbl_8030F310:
+/* 8030F310 0030AF70 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 8030F314 0030AF74 38 03 FF FF */ addi r0, r3, -1
+/* 8030F318 0030AF78 90 1F 00 38 */ stw r0, 0x38(r31)
+lbl_8030F31C:
+/* 8030F31C 0030AF7C 80 7B 00 00 */ lwz r3, 0(r27)
+/* 8030F320 0030AF80 3C 03 00 01 */ addis r0, r3, 1
+/* 8030F324 0030AF84 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F328 0030AF88 40 82 00 08 */ bne lbl_8030F330
+/* 8030F32C 0030AF8C 93 BB 00 00 */ stw r29, 0(r27)
+lbl_8030F330:
+/* 8030F330 0030AF90 93 BC 00 00 */ stw r29, 0(r28)
+/* 8030F334 0030AF94 3B 5A 00 01 */ addi r26, r26, 1
+/* 8030F338 0030AF98 3B BD 00 01 */ addi r29, r29, 1
+lbl_8030F33C:
+/* 8030F33C 0030AF9C 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030F340 0030AFA0 7C 1D 20 40 */ cmplw r29, r4
+/* 8030F344 0030AFA4 41 80 FF 64 */ blt lbl_8030F2A8
+/* 8030F348 0030AFA8 3C 04 00 01 */ addis r0, r4, 1
+/* 8030F34C 0030AFAC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F350 0030AFB0 41 82 00 80 */ beq lbl_8030F3D0
+/* 8030F354 0030AFB4 7F 23 CB 78 */ mr r3, r25
+/* 8030F358 0030AFB8 7F 45 D3 78 */ mr r5, r26
+/* 8030F35C 0030AFBC 7F C6 F3 78 */ mr r6, r30
+/* 8030F360 0030AFC0 39 01 00 08 */ addi r8, r1, 8
+/* 8030F364 0030AFC4 38 E0 00 01 */ li r7, 1
+/* 8030F368 0030AFC8 4B FF FC 5D */ bl VFiPFFAT_WriteClusterPage
+/* 8030F36C 0030AFCC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F370 0030AFD0 41 82 00 08 */ beq lbl_8030F378
+/* 8030F374 0030AFD4 48 00 01 0C */ b lbl_8030F480
+lbl_8030F378:
+/* 8030F378 0030AFD8 80 7B 00 00 */ lwz r3, 0(r27)
+/* 8030F37C 0030AFDC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030F380 0030AFE0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F384 0030AFE4 40 82 00 08 */ bne lbl_8030F38C
+/* 8030F388 0030AFE8 93 BB 00 00 */ stw r29, 0(r27)
+lbl_8030F38C:
+/* 8030F38C 0030AFEC 93 BC 00 00 */ stw r29, 0(r28)
+/* 8030F390 0030AFF0 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 8030F394 0030AFF4 3C 03 00 01 */ addis r0, r3, 1
+/* 8030F398 0030AFF8 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F39C 0030AFFC 41 82 00 34 */ beq lbl_8030F3D0
+/* 8030F3A0 0030B000 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F3A4 0030B004 41 82 00 2C */ beq lbl_8030F3D0
+/* 8030F3A8 0030B008 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8030F3AC 0030B00C 2C 00 00 02 */ cmpwi r0, 2
+/* 8030F3B0 0030B010 40 82 00 14 */ bne lbl_8030F3C4
+/* 8030F3B4 0030B014 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030F3B8 0030B018 80 1F 00 10 */ lwz r0, 0x10(r31)
+/* 8030F3BC 0030B01C 7C 03 00 40 */ cmplw r3, r0
+/* 8030F3C0 0030B020 41 82 00 10 */ beq lbl_8030F3D0
+lbl_8030F3C4:
+/* 8030F3C4 0030B024 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 8030F3C8 0030B028 38 03 FF FF */ addi r0, r3, -1
+/* 8030F3CC 0030B02C 90 1F 00 38 */ stw r0, 0x38(r31)
+lbl_8030F3D0:
+/* 8030F3D0 0030B030 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030F3D4 0030B034 38 60 00 00 */ li r3, 0
+/* 8030F3D8 0030B038 38 04 00 01 */ addi r0, r4, 1
+/* 8030F3DC 0030B03C 90 1F 00 3C */ stw r0, 0x3c(r31)
+/* 8030F3E0 0030B040 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030F3E4 0030B044 90 19 00 0C */ stw r0, 0xc(r25)
+/* 8030F3E8 0030B048 93 59 00 10 */ stw r26, 0x10(r25)
+/* 8030F3EC 0030B04C 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030F3F0 0030B050 90 1C 00 00 */ stw r0, 0(r28)
+/* 8030F3F4 0030B054 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030F3F8 0030B058 A0 04 00 00 */ lhz r0, 0(r4)
+/* 8030F3FC 0030B05C 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030F400 0030B060 2C 00 00 02 */ cmpwi r0, 2
+/* 8030F404 0030B064 40 82 00 0C */ bne lbl_8030F410
+/* 8030F408 0030B068 7F E3 FB 78 */ mr r3, r31
+/* 8030F40C 0030B06C 4B FF B5 71 */ bl VFiPFCACHE_WriteFATPage
+lbl_8030F410:
+/* 8030F410 0030B070 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F414 0030B074 41 82 00 08 */ beq lbl_8030F41C
+/* 8030F418 0030B078 48 00 00 68 */ b lbl_8030F480
+lbl_8030F41C:
+/* 8030F41C 0030B07C 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8030F420 0030B080 2C 80 00 02 */ cmpwi cr1, r0, 2
+/* 8030F424 0030B084 40 86 00 58 */ bne cr1, lbl_8030F47C
+/* 8030F428 0030B088 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8030F42C 0030B08C 54 03 07 BD */ rlwinm. r3, r0, 0, 0x1e, 0x1e
+/* 8030F430 0030B090 41 82 00 4C */ beq lbl_8030F47C
+/* 8030F434 0030B094 38 60 00 00 */ li r3, 0
+/* 8030F438 0030B098 41 86 00 0C */ beq cr1, lbl_8030F444
+/* 8030F43C 0030B09C 38 60 00 0C */ li r3, 0xc
+/* 8030F440 0030B0A0 48 00 00 20 */ b lbl_8030F460
+lbl_8030F444:
+/* 8030F444 0030B0A4 40 82 00 0C */ bne lbl_8030F450
+/* 8030F448 0030B0A8 38 60 00 24 */ li r3, 0x24
+/* 8030F44C 0030B0AC 48 00 00 14 */ b lbl_8030F460
+lbl_8030F450:
+/* 8030F450 0030B0B0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 8030F454 0030B0B4 41 82 00 0C */ beq lbl_8030F460
+/* 8030F458 0030B0B8 7F E3 FB 78 */ mr r3, r31
+/* 8030F45C 0030B0BC 4B FF 67 41 */ bl VFiPFDRV_StoreFreeCountToFSINFO
+lbl_8030F460:
+/* 8030F460 0030B0C0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F464 0030B0C4 41 82 00 18 */ beq lbl_8030F47C
+/* 8030F468 0030B0C8 38 00 FF FF */ li r0, -1
+/* 8030F46C 0030B0CC 90 1F 00 38 */ stw r0, 0x38(r31)
+/* 8030F470 0030B0D0 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8030F474 0030B0D4 54 00 07 B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c
+/* 8030F478 0030B0D8 B0 1F 18 7C */ sth r0, 0x187c(r31)
+lbl_8030F47C:
+/* 8030F47C 0030B0DC 38 60 00 00 */ li r3, 0
+lbl_8030F480:
+/* 8030F480 0030B0E0 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030F484 0030B0E4 4B EB 7C E9 */ bl _restgpr_25
+/* 8030F488 0030B0E8 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030F48C 0030B0EC 7C 08 03 A6 */ mtlr r0
+/* 8030F490 0030B0F0 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030F494 0030B0F4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetClusterInChain
+VFiPFFAT_GetClusterInChain:
+/* 8030F498 0030B0F8 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 8030F49C 0030B0FC 7C 08 02 A6 */ mflr r0
+/* 8030F4A0 0030B100 90 01 00 54 */ stw r0, 0x54(r1)
+/* 8030F4A4 0030B104 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030F4A8 0030B108 4B EB 7C 69 */ bl _savegpr_21
+/* 8030F4AC 0030B10C 38 00 00 00 */ li r0, 0
+/* 8030F4B0 0030B110 3D 20 80 40 */ lis r9, lbl_803FE280@ha
+/* 8030F4B4 0030B114 90 01 00 08 */ stw r0, 8(r1)
+/* 8030F4B8 0030B118 38 00 FF FF */ li r0, -1
+/* 8030F4BC 0030B11C 7D 19 43 78 */ mr r25, r8
+/* 8030F4C0 0030B120 39 29 E2 80 */ addi r9, r9, lbl_803FE280@l
+/* 8030F4C4 0030B124 81 43 00 34 */ lwz r10, 0x34(r3)
+/* 8030F4C8 0030B128 7C F8 3B 78 */ mr r24, r7
+/* 8030F4CC 0030B12C 7C 76 1B 78 */ mr r22, r3
+/* 8030F4D0 0030B130 7C B7 2B 78 */ mr r23, r5
+/* 8030F4D4 0030B134 81 4A 00 1C */ lwz r10, 0x1c(r10)
+/* 8030F4D8 0030B138 90 08 00 00 */ stw r0, 0(r8)
+/* 8030F4DC 0030B13C 1D 0A 00 14 */ mulli r8, r10, 0x14
+/* 8030F4E0 0030B140 90 07 00 00 */ stw r0, 0(r7)
+/* 8030F4E4 0030B144 7C E9 42 14 */ add r7, r9, r8
+/* 8030F4E8 0030B148 7F E9 40 2E */ lwzx r31, r9, r8
+/* 8030F4EC 0030B14C 80 03 00 14 */ lwz r0, 0x14(r3)
+/* 8030F4F0 0030B150 83 C7 00 04 */ lwz r30, 4(r7)
+/* 8030F4F4 0030B154 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F4F8 0030B158 41 82 00 28 */ beq lbl_8030F520
+/* 8030F4FC 0030B15C 7C 00 20 40 */ cmplw r0, r4
+/* 8030F500 0030B160 41 81 00 20 */ bgt lbl_8030F520
+/* 8030F504 0030B164 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 8030F508 0030B168 3B 41 00 10 */ addi r26, r1, 0x10
+/* 8030F50C 0030B16C 90 01 00 10 */ stw r0, 0x10(r1)
+/* 8030F510 0030B170 80 E3 00 14 */ lwz r7, 0x14(r3)
+/* 8030F514 0030B174 7F 87 20 50 */ subf r28, r7, r4
+/* 8030F518 0030B178 3B 67 00 01 */ addi r27, r7, 1
+/* 8030F51C 0030B17C 48 00 00 10 */ b lbl_8030F52C
+lbl_8030F520:
+/* 8030F520 0030B180 83 43 00 08 */ lwz r26, 8(r3)
+/* 8030F524 0030B184 7C 9C 23 78 */ mr r28, r4
+/* 8030F528 0030B188 3B 60 00 01 */ li r27, 1
+lbl_8030F52C:
+/* 8030F52C 0030B18C 83 BA 00 00 */ lwz r29, 0(r26)
+/* 8030F530 0030B190 28 05 00 02 */ cmplwi r5, 2
+/* 8030F534 0030B194 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030F538 0030B198 40 82 00 74 */ bne lbl_8030F5AC
+/* 8030F53C 0030B19C 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030F540 0030B1A0 41 82 00 18 */ beq lbl_8030F558
+/* 8030F544 0030B1A4 2C 06 00 00 */ cmpwi r6, 0
+/* 8030F548 0030B1A8 41 82 00 10 */ beq lbl_8030F558
+/* 8030F54C 0030B1AC 7C BC 32 14 */ add r5, r28, r6
+/* 8030F550 0030B1B0 3B 85 FF FF */ addi r28, r5, -1
+/* 8030F554 0030B1B4 48 00 00 08 */ b lbl_8030F55C
+lbl_8030F558:
+/* 8030F558 0030B1B8 7C DC 33 78 */ mr r28, r6
+lbl_8030F55C:
+/* 8030F55C 0030B1BC 81 23 00 0C */ lwz r9, 0xc(r3)
+/* 8030F560 0030B1C0 7F 88 E3 78 */ mr r8, r28
+/* 8030F564 0030B1C4 2C 09 00 00 */ cmpwi r9, 0
+/* 8030F568 0030B1C8 41 82 00 5C */ beq lbl_8030F5C4
+/* 8030F56C 0030B1CC 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 8030F570 0030B1D0 3C E0 80 40 */ lis r7, lbl_803FE280@ha
+/* 8030F574 0030B1D4 81 03 00 10 */ lwz r8, 0x10(r3)
+/* 8030F578 0030B1D8 38 E7 E2 80 */ addi r7, r7, lbl_803FE280@l
+/* 8030F57C 0030B1DC 80 05 00 1C */ lwz r0, 0x1c(r5)
+/* 8030F580 0030B1E0 7D 3D 4B 78 */ mr r29, r9
+/* 8030F584 0030B1E4 7C A8 32 14 */ add r5, r8, r6
+/* 8030F588 0030B1E8 3B 80 00 00 */ li r28, 0
+/* 8030F58C 0030B1EC 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030F590 0030B1F0 7D 04 28 50 */ subf r8, r4, r5
+/* 8030F594 0030B1F4 7C 87 02 14 */ add r4, r7, r0
+/* 8030F598 0030B1F8 80 04 00 08 */ lwz r0, 8(r4)
+/* 8030F59C 0030B1FC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030F5A0 0030B200 80 83 00 10 */ lwz r4, 0x10(r3)
+/* 8030F5A4 0030B204 3B 64 00 01 */ addi r27, r4, 1
+/* 8030F5A8 0030B208 48 00 00 1C */ b lbl_8030F5C4
+lbl_8030F5AC:
+/* 8030F5AC 0030B20C 28 05 00 01 */ cmplwi r5, 1
+/* 8030F5B0 0030B210 40 82 00 10 */ bne lbl_8030F5C0
+/* 8030F5B4 0030B214 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030F5B8 0030B218 40 82 00 08 */ bne lbl_8030F5C0
+/* 8030F5BC 0030B21C 3B 9C 00 01 */ addi r28, r28, 1
+lbl_8030F5C0:
+/* 8030F5C0 0030B220 7F 88 E3 78 */ mr r8, r28
+lbl_8030F5C4:
+/* 8030F5C4 0030B224 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030F5C8 0030B228 41 82 00 FC */ beq lbl_8030F6C4
+/* 8030F5CC 0030B22C 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030F5D0 0030B230 7F A5 EB 78 */ mr r5, r29
+/* 8030F5D4 0030B234 38 81 00 08 */ addi r4, r1, 8
+/* 8030F5D8 0030B238 4B FF EF 61 */ bl VFiPFFAT_ReadFATSector
+/* 8030F5DC 0030B23C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F5E0 0030B240 41 82 00 08 */ beq lbl_8030F5E8
+/* 8030F5E4 0030B244 48 00 01 C4 */ b lbl_8030F7A8
+lbl_8030F5E8:
+/* 8030F5E8 0030B248 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030F5EC 0030B24C 38 80 00 00 */ li r4, 0
+/* 8030F5F0 0030B250 3E A0 80 40 */ lis r21, lbl_803FE280@ha
+/* 8030F5F4 0030B254 38 00 00 01 */ li r0, 1
+/* 8030F5F8 0030B258 B0 83 00 02 */ sth r4, 2(r3)
+/* 8030F5FC 0030B25C 3A B5 E2 80 */ addi r21, r21, lbl_803FE280@l
+/* 8030F600 0030B260 90 01 00 0C */ stw r0, 0xc(r1)
+/* 8030F604 0030B264 48 00 00 A8 */ b lbl_8030F6AC
+lbl_8030F608:
+/* 8030F608 0030B268 2C 1D 00 00 */ cmpwi r29, 0
+/* 8030F60C 0030B26C 41 82 00 3C */ beq lbl_8030F648
+/* 8030F610 0030B270 7E C3 B3 78 */ mr r3, r22
+/* 8030F614 0030B274 7F A4 EB 78 */ mr r4, r29
+/* 8030F618 0030B278 7F 65 DB 78 */ mr r5, r27
+/* 8030F61C 0030B27C 38 C1 00 14 */ addi r6, r1, 0x14
+/* 8030F620 0030B280 38 E1 00 0C */ addi r7, r1, 0xc
+/* 8030F624 0030B284 39 01 00 08 */ addi r8, r1, 8
+/* 8030F628 0030B288 4B FF F5 AD */ bl VFiPFFAT_ReadClusterPage
+/* 8030F62C 0030B28C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F630 0030B290 41 82 00 34 */ beq lbl_8030F664
+/* 8030F634 0030B294 80 81 00 14 */ lwz r4, 0x14(r1)
+/* 8030F638 0030B298 3C 04 00 01 */ addis r0, r4, 1
+/* 8030F63C 0030B29C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F640 0030B2A0 41 82 00 24 */ beq lbl_8030F664
+/* 8030F644 0030B2A4 48 00 01 64 */ b lbl_8030F7A8
+lbl_8030F648:
+/* 8030F648 0030B2A8 80 76 00 34 */ lwz r3, 0x34(r22)
+/* 8030F64C 0030B2AC 3B 7B FF FF */ addi r27, r27, -1
+/* 8030F650 0030B2B0 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030F654 0030B2B4 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030F658 0030B2B8 7C 75 02 14 */ add r3, r21, r0
+/* 8030F65C 0030B2BC 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030F660 0030B2C0 90 01 00 14 */ stw r0, 0x14(r1)
+lbl_8030F664:
+/* 8030F664 0030B2C4 80 81 00 14 */ lwz r4, 0x14(r1)
+/* 8030F668 0030B2C8 28 04 00 02 */ cmplwi r4, 2
+/* 8030F66C 0030B2CC 41 80 00 18 */ blt lbl_8030F684
+/* 8030F670 0030B2D0 80 76 00 34 */ lwz r3, 0x34(r22)
+/* 8030F674 0030B2D4 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030F678 0030B2D8 38 03 00 02 */ addi r0, r3, 2
+/* 8030F67C 0030B2DC 7C 04 00 40 */ cmplw r4, r0
+/* 8030F680 0030B2E0 41 80 00 14 */ blt lbl_8030F694
+lbl_8030F684:
+/* 8030F684 0030B2E4 7C 04 F0 40 */ cmplw r4, r30
+/* 8030F688 0030B2E8 40 80 00 0C */ bge lbl_8030F694
+/* 8030F68C 0030B2EC 38 60 00 0E */ li r3, 0xe
+/* 8030F690 0030B2F0 48 00 01 18 */ b lbl_8030F7A8
+lbl_8030F694:
+/* 8030F694 0030B2F4 2C 17 00 00 */ cmpwi r23, 0
+/* 8030F698 0030B2F8 41 82 00 0C */ beq lbl_8030F6A4
+/* 8030F69C 0030B2FC 7C 04 F0 40 */ cmplw r4, r30
+/* 8030F6A0 0030B300 40 80 00 20 */ bge lbl_8030F6C0
+lbl_8030F6A4:
+/* 8030F6A4 0030B304 7C 9D 23 78 */ mr r29, r4
+/* 8030F6A8 0030B308 3B 7B 00 01 */ addi r27, r27, 1
+lbl_8030F6AC:
+/* 8030F6AC 0030B30C 2C 1C 00 00 */ cmpwi r28, 0
+/* 8030F6B0 0030B310 3B 9C FF FF */ addi r28, r28, -1
+/* 8030F6B4 0030B314 41 82 00 0C */ beq lbl_8030F6C0
+/* 8030F6B8 0030B318 7C 1D F8 40 */ cmplw r29, r31
+/* 8030F6BC 0030B31C 41 80 FF 4C */ blt lbl_8030F608
+lbl_8030F6C0:
+/* 8030F6C0 0030B320 7F 88 E3 78 */ mr r8, r28
+lbl_8030F6C4:
+/* 8030F6C4 0030B324 2C 17 00 00 */ cmpwi r23, 0
+/* 8030F6C8 0030B328 41 82 00 D8 */ beq lbl_8030F7A0
+/* 8030F6CC 0030B32C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030F6D0 0030B330 7C 00 F0 40 */ cmplw r0, r30
+/* 8030F6D4 0030B334 41 80 00 CC */ blt lbl_8030F7A0
+/* 8030F6D8 0030B338 38 00 00 00 */ li r0, 0
+/* 8030F6DC 0030B33C 7E C3 B3 78 */ mr r3, r22
+/* 8030F6E0 0030B340 90 18 00 00 */ stw r0, 0(r24)
+/* 8030F6E4 0030B344 7F 65 DB 78 */ mr r5, r27
+/* 8030F6E8 0030B348 7F 06 C3 78 */ mr r6, r24
+/* 8030F6EC 0030B34C 38 88 00 01 */ addi r4, r8, 1
+/* 8030F6F0 0030B350 38 E1 00 14 */ addi r7, r1, 0x14
+/* 8030F6F4 0030B354 4B FF FA F9 */ bl VFiPFFAT_DoAllocateChain
+/* 8030F6F8 0030B358 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F6FC 0030B35C 7C 75 1B 78 */ mr r21, r3
+/* 8030F700 0030B360 41 82 00 34 */ beq lbl_8030F734
+/* 8030F704 0030B364 80 98 00 00 */ lwz r4, 0(r24)
+/* 8030F708 0030B368 3C 04 00 01 */ addis r0, r4, 1
+/* 8030F70C 0030B36C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F710 0030B370 41 82 00 14 */ beq lbl_8030F724
+/* 8030F714 0030B374 7E C3 B3 78 */ mr r3, r22
+/* 8030F718 0030B378 7F 65 DB 78 */ mr r5, r27
+/* 8030F71C 0030B37C 38 C0 FF FF */ li r6, -1
+/* 8030F720 0030B380 48 00 0D 09 */ bl VFiPFFAT_FreeChain
+lbl_8030F724:
+/* 8030F724 0030B384 38 00 FF FF */ li r0, -1
+/* 8030F728 0030B388 90 18 00 00 */ stw r0, 0(r24)
+/* 8030F72C 0030B38C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030F730 0030B390 48 00 00 08 */ b lbl_8030F738
+lbl_8030F734:
+/* 8030F734 0030B394 3A A0 00 00 */ li r21, 0
+lbl_8030F738:
+/* 8030F738 0030B398 2C 15 00 00 */ cmpwi r21, 0
+/* 8030F73C 0030B39C 41 82 00 0C */ beq lbl_8030F748
+/* 8030F740 0030B3A0 7E A3 AB 78 */ mr r3, r21
+/* 8030F744 0030B3A4 48 00 00 64 */ b lbl_8030F7A8
+lbl_8030F748:
+/* 8030F748 0030B3A8 80 61 00 14 */ lwz r3, 0x14(r1)
+/* 8030F74C 0030B3AC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030F750 0030B3B0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030F754 0030B3B4 40 82 00 0C */ bne lbl_8030F760
+/* 8030F758 0030B3B8 38 60 00 06 */ li r3, 6
+/* 8030F75C 0030B3BC 48 00 00 4C */ b lbl_8030F7A8
+lbl_8030F760:
+/* 8030F760 0030B3C0 80 1A 00 00 */ lwz r0, 0(r26)
+/* 8030F764 0030B3C4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F768 0030B3C8 40 82 00 10 */ bne lbl_8030F778
+/* 8030F76C 0030B3CC 80 18 00 00 */ lwz r0, 0(r24)
+/* 8030F770 0030B3D0 90 1A 00 00 */ stw r0, 0(r26)
+/* 8030F774 0030B3D4 48 00 00 28 */ b lbl_8030F79C
+lbl_8030F778:
+/* 8030F778 0030B3D8 80 D8 00 00 */ lwz r6, 0(r24)
+/* 8030F77C 0030B3DC 7E C3 B3 78 */ mr r3, r22
+/* 8030F780 0030B3E0 7F A4 EB 78 */ mr r4, r29
+/* 8030F784 0030B3E4 38 BB FF FF */ addi r5, r27, -1
+/* 8030F788 0030B3E8 38 E0 00 01 */ li r7, 1
+/* 8030F78C 0030B3EC 4B FF F6 15 */ bl VFiPFFAT_WriteCluster
+/* 8030F790 0030B3F0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F794 0030B3F4 41 82 00 08 */ beq lbl_8030F79C
+/* 8030F798 0030B3F8 48 00 00 10 */ b lbl_8030F7A8
+lbl_8030F79C:
+/* 8030F79C 0030B3FC 83 A1 00 14 */ lwz r29, 0x14(r1)
+lbl_8030F7A0:
+/* 8030F7A0 0030B400 93 B9 00 00 */ stw r29, 0(r25)
+/* 8030F7A4 0030B404 38 60 00 00 */ li r3, 0
+lbl_8030F7A8:
+/* 8030F7A8 0030B408 39 61 00 50 */ addi r11, r1, 0x50
+/* 8030F7AC 0030B40C 4B EB 79 B1 */ bl _restgpr_21
+/* 8030F7B0 0030B410 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 8030F7B4 0030B414 7C 08 03 A6 */ mtlr r0
+/* 8030F7B8 0030B418 38 21 00 50 */ addi r1, r1, 0x50
+/* 8030F7BC 0030B41C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetClusterContinuousSectorInChain
+VFiPFFAT_GetClusterContinuousSectorInChain:
+/* 8030F7C0 0030B420 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030F7C4 0030B424 7C 08 02 A6 */ mflr r0
+/* 8030F7C8 0030B428 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030F7CC 0030B42C 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030F7D0 0030B430 4B EB 79 55 */ bl _savegpr_26
+/* 8030F7D4 0030B434 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 8030F7D8 0030B438 39 00 FF FF */ li r8, -1
+/* 8030F7DC 0030B43C 38 00 00 01 */ li r0, 1
+/* 8030F7E0 0030B440 7C 7B 1B 78 */ mr r27, r3
+/* 8030F7E4 0030B444 91 01 00 10 */ stw r8, 0x10(r1)
+/* 8030F7E8 0030B448 7C BC 2B 78 */ mr r28, r5
+/* 8030F7EC 0030B44C 7C DD 33 78 */ mr r29, r6
+/* 8030F7F0 0030B450 7C FE 3B 78 */ mr r30, r7
+/* 8030F7F4 0030B454 90 01 00 0C */ stw r0, 0xc(r1)
+/* 8030F7F8 0030B458 7C 9A 23 78 */ mr r26, r4
+/* 8030F7FC 0030B45C 7C 85 23 78 */ mr r5, r4
+/* 8030F800 0030B460 7F E3 FB 78 */ mr r3, r31
+/* 8030F804 0030B464 38 81 00 08 */ addi r4, r1, 8
+/* 8030F808 0030B468 4B FF ED 31 */ bl VFiPFFAT_ReadFATSector
+/* 8030F80C 0030B46C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F810 0030B470 41 82 00 B8 */ beq lbl_8030F8C8
+/* 8030F814 0030B474 48 00 00 C4 */ b lbl_8030F8D8
+/* 8030F818 0030B478 48 00 00 B0 */ b lbl_8030F8C8
+lbl_8030F81C:
+/* 8030F81C 0030B47C 7F 63 DB 78 */ mr r3, r27
+/* 8030F820 0030B480 7F 44 D3 78 */ mr r4, r26
+/* 8030F824 0030B484 7F 85 E3 78 */ mr r5, r28
+/* 8030F828 0030B488 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030F82C 0030B48C 38 E1 00 0C */ addi r7, r1, 0xc
+/* 8030F830 0030B490 39 01 00 08 */ addi r8, r1, 8
+/* 8030F834 0030B494 4B FF F3 A1 */ bl VFiPFFAT_ReadClusterPage
+/* 8030F838 0030B498 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F83C 0030B49C 41 82 00 08 */ beq lbl_8030F844
+/* 8030F840 0030B4A0 48 00 00 98 */ b lbl_8030F8D8
+lbl_8030F844:
+/* 8030F844 0030B4A4 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 8030F848 0030B4A8 38 1A 00 01 */ addi r0, r26, 1
+/* 8030F84C 0030B4AC 7C 00 20 40 */ cmplw r0, r4
+/* 8030F850 0030B4B0 41 82 00 34 */ beq lbl_8030F884
+/* 8030F854 0030B4B4 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8030F858 0030B4B8 3C 60 80 40 */ lis r3, lbl_803FE280@ha
+/* 8030F85C 0030B4BC 38 63 E2 80 */ addi r3, r3, lbl_803FE280@l
+/* 8030F860 0030B4C0 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030F864 0030B4C4 7C 63 02 14 */ add r3, r3, r0
+/* 8030F868 0030B4C8 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030F86C 0030B4CC 7C 04 00 40 */ cmplw r4, r0
+/* 8030F870 0030B4D0 40 82 00 64 */ bne lbl_8030F8D4
+/* 8030F874 0030B4D4 38 1C FF FF */ addi r0, r28, -1
+/* 8030F878 0030B4D8 93 5B 00 0C */ stw r26, 0xc(r27)
+/* 8030F87C 0030B4DC 90 1B 00 10 */ stw r0, 0x10(r27)
+/* 8030F880 0030B4E0 48 00 00 54 */ b lbl_8030F8D4
+lbl_8030F884:
+/* 8030F884 0030B4E4 80 9B 00 30 */ lwz r4, 0x30(r27)
+/* 8030F888 0030B4E8 80 64 00 00 */ lwz r3, 0(r4)
+/* 8030F88C 0030B4EC 38 03 00 01 */ addi r0, r3, 1
+/* 8030F890 0030B4F0 90 04 00 00 */ stw r0, 0(r4)
+/* 8030F894 0030B4F4 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030F898 0030B4F8 80 7B 00 30 */ lwz r3, 0x30(r27)
+/* 8030F89C 0030B4FC 90 03 00 04 */ stw r0, 4(r3)
+/* 8030F8A0 0030B500 80 7E 00 00 */ lwz r3, 0(r30)
+/* 8030F8A4 0030B504 88 1F 00 06 */ lbz r0, 6(r31)
+/* 8030F8A8 0030B508 7C 63 02 14 */ add r3, r3, r0
+/* 8030F8AC 0030B50C 90 7E 00 00 */ stw r3, 0(r30)
+/* 8030F8B0 0030B510 88 1F 00 20 */ lbz r0, 0x20(r31)
+/* 8030F8B4 0030B514 7C 60 00 30 */ slw r0, r3, r0
+/* 8030F8B8 0030B518 7C 00 E8 40 */ cmplw r0, r29
+/* 8030F8BC 0030B51C 40 80 00 18 */ bge lbl_8030F8D4
+/* 8030F8C0 0030B520 83 41 00 10 */ lwz r26, 0x10(r1)
+/* 8030F8C4 0030B524 3B 9C 00 01 */ addi r28, r28, 1
+lbl_8030F8C8:
+/* 8030F8C8 0030B528 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030F8CC 0030B52C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F8D0 0030B530 40 82 FF 4C */ bne lbl_8030F81C
+lbl_8030F8D4:
+/* 8030F8D4 0030B534 38 60 00 00 */ li r3, 0
+lbl_8030F8D8:
+/* 8030F8D8 0030B538 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030F8DC 0030B53C 4B EB 78 95 */ bl _restgpr_26
+/* 8030F8E0 0030B540 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030F8E4 0030B544 7C 08 03 A6 */ mtlr r0
+/* 8030F8E8 0030B548 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030F8EC 0030B54C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetClusterAllocatedInChain
+VFiPFFAT_GetClusterAllocatedInChain:
+/* 8030F8F0 0030B550 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8030F8F4 0030B554 7C 08 02 A6 */ mflr r0
+/* 8030F8F8 0030B558 90 01 00 44 */ stw r0, 0x44(r1)
+/* 8030F8FC 0030B55C 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030F900 0030B560 4B EB 78 1D */ bl _savegpr_24
+/* 8030F904 0030B564 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 8030F908 0030B568 39 00 FF FF */ li r8, -1
+/* 8030F90C 0030B56C 38 00 00 01 */ li r0, 1
+/* 8030F910 0030B570 7C 79 1B 78 */ mr r25, r3
+/* 8030F914 0030B574 91 01 00 10 */ stw r8, 0x10(r1)
+/* 8030F918 0030B578 7C BA 2B 78 */ mr r26, r5
+/* 8030F91C 0030B57C 7C DB 33 78 */ mr r27, r6
+/* 8030F920 0030B580 7C FC 3B 78 */ mr r28, r7
+/* 8030F924 0030B584 90 01 00 0C */ stw r0, 0xc(r1)
+/* 8030F928 0030B588 7C 9E 23 78 */ mr r30, r4
+/* 8030F92C 0030B58C 7C 85 23 78 */ mr r5, r4
+/* 8030F930 0030B590 7F E3 FB 78 */ mr r3, r31
+/* 8030F934 0030B594 38 81 00 08 */ addi r4, r1, 8
+/* 8030F938 0030B598 3B A0 00 00 */ li r29, 0
+/* 8030F93C 0030B59C 4B FF EB FD */ bl VFiPFFAT_ReadFATSector
+/* 8030F940 0030B5A0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F944 0030B5A4 41 82 00 08 */ beq lbl_8030F94C
+/* 8030F948 0030B5A8 48 00 00 A0 */ b lbl_8030F9E8
+lbl_8030F94C:
+/* 8030F94C 0030B5AC 3F 00 80 40 */ lis r24, lbl_803FE280@ha
+/* 8030F950 0030B5B0 3B 18 E2 80 */ addi r24, r24, lbl_803FE280@l
+/* 8030F954 0030B5B4 48 00 00 84 */ b lbl_8030F9D8
+lbl_8030F958:
+/* 8030F958 0030B5B8 A0 9F 00 00 */ lhz r4, 0(r31)
+/* 8030F95C 0030B5BC 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 8030F960 0030B5C0 80 7C 00 00 */ lwz r3, 0(r28)
+/* 8030F964 0030B5C4 7C 80 00 30 */ slw r0, r4, r0
+/* 8030F968 0030B5C8 7F BD 02 14 */ add r29, r29, r0
+/* 8030F96C 0030B5CC 38 03 00 01 */ addi r0, r3, 1
+/* 8030F970 0030B5D0 7C 1D D8 40 */ cmplw r29, r27
+/* 8030F974 0030B5D4 90 1C 00 00 */ stw r0, 0(r28)
+/* 8030F978 0030B5D8 40 80 00 6C */ bge lbl_8030F9E4
+/* 8030F97C 0030B5DC 7F 23 CB 78 */ mr r3, r25
+/* 8030F980 0030B5E0 7F C4 F3 78 */ mr r4, r30
+/* 8030F984 0030B5E4 7F 45 D3 78 */ mr r5, r26
+/* 8030F988 0030B5E8 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030F98C 0030B5EC 38 E1 00 0C */ addi r7, r1, 0xc
+/* 8030F990 0030B5F0 39 01 00 08 */ addi r8, r1, 8
+/* 8030F994 0030B5F4 4B FF F2 41 */ bl VFiPFFAT_ReadClusterPage
+/* 8030F998 0030B5F8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030F99C 0030B5FC 41 82 00 08 */ beq lbl_8030F9A4
+/* 8030F9A0 0030B600 48 00 00 48 */ b lbl_8030F9E8
+lbl_8030F9A4:
+/* 8030F9A4 0030B604 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8030F9A8 0030B608 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 8030F9AC 0030B60C 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 8030F9B0 0030B610 7C 78 02 14 */ add r3, r24, r0
+/* 8030F9B4 0030B614 80 03 00 08 */ lwz r0, 8(r3)
+/* 8030F9B8 0030B618 7C 04 00 40 */ cmplw r4, r0
+/* 8030F9BC 0030B61C 40 82 00 14 */ bne lbl_8030F9D0
+/* 8030F9C0 0030B620 38 1A FF FF */ addi r0, r26, -1
+/* 8030F9C4 0030B624 93 D9 00 0C */ stw r30, 0xc(r25)
+/* 8030F9C8 0030B628 90 19 00 10 */ stw r0, 0x10(r25)
+/* 8030F9CC 0030B62C 48 00 00 18 */ b lbl_8030F9E4
+lbl_8030F9D0:
+/* 8030F9D0 0030B630 7C 9E 23 78 */ mr r30, r4
+/* 8030F9D4 0030B634 3B 5A 00 01 */ addi r26, r26, 1
+lbl_8030F9D8:
+/* 8030F9D8 0030B638 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030F9DC 0030B63C 2C 00 00 00 */ cmpwi r0, 0
+/* 8030F9E0 0030B640 40 82 FF 78 */ bne lbl_8030F958
+lbl_8030F9E4:
+/* 8030F9E4 0030B644 38 60 00 00 */ li r3, 0
+lbl_8030F9E8:
+/* 8030F9E8 0030B648 39 61 00 40 */ addi r11, r1, 0x40
+/* 8030F9EC 0030B64C 4B EB 77 7D */ bl _restgpr_24
+/* 8030F9F0 0030B650 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8030F9F4 0030B654 7C 08 03 A6 */ mtlr r0
+/* 8030F9F8 0030B658 38 21 00 40 */ addi r1, r1, 0x40
+/* 8030F9FC 0030B65C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetClusterSpecified
+VFiPFFAT_GetClusterSpecified:
+/* 8030FA00 0030B660 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030FA04 0030B664 7C 08 02 A6 */ mflr r0
+/* 8030FA08 0030B668 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030FA0C 0030B66C 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FA10 0030B670 4B EB 77 19 */ bl _savegpr_27
+/* 8030FA14 0030B674 80 E3 00 08 */ lwz r7, 8(r3)
+/* 8030FA18 0030B678 7C 9D 23 78 */ mr r29, r4
+/* 8030FA1C 0030B67C 81 03 00 34 */ lwz r8, 0x34(r3)
+/* 8030FA20 0030B680 7C 7C 1B 78 */ mr r28, r3
+/* 8030FA24 0030B684 80 07 00 00 */ lwz r0, 0(r7)
+/* 8030FA28 0030B688 7C BB 2B 78 */ mr r27, r5
+/* 8030FA2C 0030B68C 80 88 00 1C */ lwz r4, 0x1c(r8)
+/* 8030FA30 0030B690 7C DE 33 78 */ mr r30, r6
+/* 8030FA34 0030B694 2C 00 00 00 */ cmpwi r0, 0
+/* 8030FA38 0030B698 83 E3 00 30 */ lwz r31, 0x30(r3)
+/* 8030FA3C 0030B69C 40 82 00 1C */ bne lbl_8030FA58
+/* 8030FA40 0030B6A0 2C 05 00 00 */ cmpwi r5, 0
+/* 8030FA44 0030B6A4 40 82 00 14 */ bne lbl_8030FA58
+/* 8030FA48 0030B6A8 38 00 FF FF */ li r0, -1
+/* 8030FA4C 0030B6AC 38 60 00 00 */ li r3, 0
+/* 8030FA50 0030B6B0 90 06 00 00 */ stw r0, 0(r6)
+/* 8030FA54 0030B6B4 48 00 01 24 */ b lbl_8030FB78
+lbl_8030FA58:
+/* 8030FA58 0030B6B8 28 00 00 01 */ cmplwi r0, 1
+/* 8030FA5C 0030B6BC 40 82 00 24 */ bne lbl_8030FA80
+/* 8030FA60 0030B6C0 28 04 00 01 */ cmplwi r4, 1
+/* 8030FA64 0030B6C4 41 81 00 14 */ bgt lbl_8030FA78
+/* 8030FA68 0030B6C8 38 00 FF FF */ li r0, -1
+/* 8030FA6C 0030B6CC 38 60 00 00 */ li r3, 0
+/* 8030FA70 0030B6D0 90 06 00 00 */ stw r0, 0(r6)
+/* 8030FA74 0030B6D4 48 00 01 04 */ b lbl_8030FB78
+lbl_8030FA78:
+/* 8030FA78 0030B6D8 80 08 00 10 */ lwz r0, 0x10(r8)
+/* 8030FA7C 0030B6DC 90 07 00 00 */ stw r0, 0(r7)
+lbl_8030FA80:
+/* 8030FA80 0030B6E0 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 8030FA84 0030B6E4 2C 00 00 00 */ cmpwi r0, 0
+/* 8030FA88 0030B6E8 41 82 00 54 */ beq lbl_8030FADC
+/* 8030FA8C 0030B6EC 2C 05 00 00 */ cmpwi r5, 0
+/* 8030FA90 0030B6F0 40 82 00 4C */ bne lbl_8030FADC
+/* 8030FA94 0030B6F4 7F 83 E3 78 */ mr r3, r28
+/* 8030FA98 0030B6F8 7F A4 EB 78 */ mr r4, r29
+/* 8030FA9C 0030B6FC 7F C5 F3 78 */ mr r5, r30
+/* 8030FAA0 0030B700 38 C1 00 10 */ addi r6, r1, 0x10
+/* 8030FAA4 0030B704 4B FF ED C9 */ bl VFiPFFAT_FindClusterLink
+/* 8030FAA8 0030B708 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FAAC 0030B70C 41 82 00 08 */ beq lbl_8030FAB4
+/* 8030FAB0 0030B710 48 00 00 C8 */ b lbl_8030FB78
+lbl_8030FAB4:
+/* 8030FAB4 0030B714 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 8030FAB8 0030B718 28 00 00 01 */ cmplwi r0, 1
+/* 8030FABC 0030B71C 40 82 00 20 */ bne lbl_8030FADC
+/* 8030FAC0 0030B720 80 1C 00 00 */ lwz r0, 0(r28)
+/* 8030FAC4 0030B724 38 60 00 00 */ li r3, 0
+/* 8030FAC8 0030B728 90 1F 00 08 */ stw r0, 8(r31)
+/* 8030FACC 0030B72C 93 BF 00 00 */ stw r29, 0(r31)
+/* 8030FAD0 0030B730 80 1E 00 00 */ lwz r0, 0(r30)
+/* 8030FAD4 0030B734 90 1F 00 04 */ stw r0, 4(r31)
+/* 8030FAD8 0030B738 48 00 00 A0 */ b lbl_8030FB78
+lbl_8030FADC:
+/* 8030FADC 0030B73C 7C 1B 00 D0 */ neg r0, r27
+/* 8030FAE0 0030B740 38 60 FF FF */ li r3, -1
+/* 8030FAE4 0030B744 7C 00 DB 78 */ or r0, r0, r27
+/* 8030FAE8 0030B748 90 7E 00 00 */ stw r3, 0(r30)
+/* 8030FAEC 0030B74C 7F 83 E3 78 */ mr r3, r28
+/* 8030FAF0 0030B750 7F A4 EB 78 */ mr r4, r29
+/* 8030FAF4 0030B754 54 05 0F FE */ srwi r5, r0, 0x1f
+/* 8030FAF8 0030B758 38 E1 00 08 */ addi r7, r1, 8
+/* 8030FAFC 0030B75C 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030FB00 0030B760 38 C0 00 00 */ li r6, 0
+/* 8030FB04 0030B764 4B FF F9 95 */ bl VFiPFFAT_GetClusterInChain
+/* 8030FB08 0030B768 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FB0C 0030B76C 41 82 00 08 */ beq lbl_8030FB14
+/* 8030FB10 0030B770 48 00 00 2C */ b lbl_8030FB3C
+lbl_8030FB14:
+/* 8030FB14 0030B774 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 8030FB18 0030B778 28 04 00 02 */ cmplwi r4, 2
+/* 8030FB1C 0030B77C 41 80 00 1C */ blt lbl_8030FB38
+/* 8030FB20 0030B780 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 8030FB24 0030B784 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030FB28 0030B788 38 03 00 02 */ addi r0, r3, 2
+/* 8030FB2C 0030B78C 7C 04 00 40 */ cmplw r4, r0
+/* 8030FB30 0030B790 40 80 00 08 */ bge lbl_8030FB38
+/* 8030FB34 0030B794 90 9E 00 00 */ stw r4, 0(r30)
+lbl_8030FB38:
+/* 8030FB38 0030B798 38 60 00 00 */ li r3, 0
+lbl_8030FB3C:
+/* 8030FB3C 0030B79C 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FB40 0030B7A0 41 82 00 08 */ beq lbl_8030FB48
+/* 8030FB44 0030B7A4 48 00 00 34 */ b lbl_8030FB78
+lbl_8030FB48:
+/* 8030FB48 0030B7A8 80 7E 00 00 */ lwz r3, 0(r30)
+/* 8030FB4C 0030B7AC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030FB50 0030B7B0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030FB54 0030B7B4 40 82 00 0C */ bne lbl_8030FB60
+/* 8030FB58 0030B7B8 38 60 00 00 */ li r3, 0
+/* 8030FB5C 0030B7BC 48 00 00 1C */ b lbl_8030FB78
+lbl_8030FB60:
+/* 8030FB60 0030B7C0 80 1C 00 00 */ lwz r0, 0(r28)
+/* 8030FB64 0030B7C4 38 60 00 00 */ li r3, 0
+/* 8030FB68 0030B7C8 90 1F 00 08 */ stw r0, 8(r31)
+/* 8030FB6C 0030B7CC 93 BF 00 00 */ stw r29, 0(r31)
+/* 8030FB70 0030B7D0 80 1E 00 00 */ lwz r0, 0(r30)
+/* 8030FB74 0030B7D4 90 1F 00 04 */ stw r0, 4(r31)
+lbl_8030FB78:
+/* 8030FB78 0030B7D8 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FB7C 0030B7DC 4B EB 75 F9 */ bl _restgpr_27
+/* 8030FB80 0030B7E0 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030FB84 0030B7E4 7C 08 03 A6 */ mtlr r0
+/* 8030FB88 0030B7E8 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030FB8C 0030B7EC 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetClusterAllocated
+VFiPFFAT_GetClusterAllocated:
+/* 8030FB90 0030B7F0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030FB94 0030B7F4 7C 08 02 A6 */ mflr r0
+/* 8030FB98 0030B7F8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030FB9C 0030B7FC 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FBA0 0030B800 4B EB 75 89 */ bl _savegpr_27
+/* 8030FBA4 0030B804 81 03 00 08 */ lwz r8, 8(r3)
+/* 8030FBA8 0030B808 7C 9D 23 78 */ mr r29, r4
+/* 8030FBAC 0030B80C 81 23 00 34 */ lwz r9, 0x34(r3)
+/* 8030FBB0 0030B810 7C 7C 1B 78 */ mr r28, r3
+/* 8030FBB4 0030B814 80 08 00 00 */ lwz r0, 0(r8)
+/* 8030FBB8 0030B818 7C DE 33 78 */ mr r30, r6
+/* 8030FBBC 0030B81C 80 89 00 1C */ lwz r4, 0x1c(r9)
+/* 8030FBC0 0030B820 7C FB 3B 78 */ mr r27, r7
+/* 8030FBC4 0030B824 28 00 00 01 */ cmplwi r0, 1
+/* 8030FBC8 0030B828 83 E3 00 30 */ lwz r31, 0x30(r3)
+/* 8030FBCC 0030B82C 40 82 00 24 */ bne lbl_8030FBF0
+/* 8030FBD0 0030B830 28 04 00 01 */ cmplwi r4, 1
+/* 8030FBD4 0030B834 41 81 00 14 */ bgt lbl_8030FBE8
+/* 8030FBD8 0030B838 38 00 FF FF */ li r0, -1
+/* 8030FBDC 0030B83C 38 60 00 00 */ li r3, 0
+/* 8030FBE0 0030B840 90 06 00 00 */ stw r0, 0(r6)
+/* 8030FBE4 0030B844 48 00 00 B4 */ b lbl_8030FC98
+lbl_8030FBE8:
+/* 8030FBE8 0030B848 80 09 00 10 */ lwz r0, 0x10(r9)
+/* 8030FBEC 0030B84C 90 08 00 00 */ stw r0, 0(r8)
+lbl_8030FBF0:
+/* 8030FBF0 0030B850 38 00 FF FF */ li r0, -1
+/* 8030FBF4 0030B854 7F 83 E3 78 */ mr r3, r28
+/* 8030FBF8 0030B858 90 06 00 00 */ stw r0, 0(r6)
+/* 8030FBFC 0030B85C 7C A6 2B 78 */ mr r6, r5
+/* 8030FC00 0030B860 7F A4 EB 78 */ mr r4, r29
+/* 8030FC04 0030B864 38 E1 00 08 */ addi r7, r1, 8
+/* 8030FC08 0030B868 39 01 00 0C */ addi r8, r1, 0xc
+/* 8030FC0C 0030B86C 38 A0 00 02 */ li r5, 2
+/* 8030FC10 0030B870 4B FF F8 89 */ bl VFiPFFAT_GetClusterInChain
+/* 8030FC14 0030B874 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FC18 0030B878 41 82 00 08 */ beq lbl_8030FC20
+/* 8030FC1C 0030B87C 48 00 00 40 */ b lbl_8030FC5C
+lbl_8030FC20:
+/* 8030FC20 0030B880 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030FC24 0030B884 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 8030FC28 0030B888 7C 63 00 50 */ subf r3, r3, r0
+/* 8030FC2C 0030B88C 38 03 00 01 */ addi r0, r3, 1
+/* 8030FC30 0030B890 90 1B 00 00 */ stw r0, 0(r27)
+/* 8030FC34 0030B894 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030FC38 0030B898 28 04 00 02 */ cmplwi r4, 2
+/* 8030FC3C 0030B89C 41 80 00 1C */ blt lbl_8030FC58
+/* 8030FC40 0030B8A0 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 8030FC44 0030B8A4 80 63 00 34 */ lwz r3, 0x34(r3)
+/* 8030FC48 0030B8A8 38 03 00 02 */ addi r0, r3, 2
+/* 8030FC4C 0030B8AC 7C 04 00 40 */ cmplw r4, r0
+/* 8030FC50 0030B8B0 40 80 00 08 */ bge lbl_8030FC58
+/* 8030FC54 0030B8B4 90 9E 00 00 */ stw r4, 0(r30)
+lbl_8030FC58:
+/* 8030FC58 0030B8B8 38 60 00 00 */ li r3, 0
+lbl_8030FC5C:
+/* 8030FC5C 0030B8BC 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FC60 0030B8C0 41 82 00 08 */ beq lbl_8030FC68
+/* 8030FC64 0030B8C4 48 00 00 34 */ b lbl_8030FC98
+lbl_8030FC68:
+/* 8030FC68 0030B8C8 80 7E 00 00 */ lwz r3, 0(r30)
+/* 8030FC6C 0030B8CC 3C 03 00 01 */ addis r0, r3, 1
+/* 8030FC70 0030B8D0 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030FC74 0030B8D4 40 82 00 0C */ bne lbl_8030FC80
+/* 8030FC78 0030B8D8 38 60 00 00 */ li r3, 0
+/* 8030FC7C 0030B8DC 48 00 00 1C */ b lbl_8030FC98
+lbl_8030FC80:
+/* 8030FC80 0030B8E0 80 1C 00 00 */ lwz r0, 0(r28)
+/* 8030FC84 0030B8E4 38 60 00 00 */ li r3, 0
+/* 8030FC88 0030B8E8 90 1F 00 08 */ stw r0, 8(r31)
+/* 8030FC8C 0030B8EC 93 BF 00 00 */ stw r29, 0(r31)
+/* 8030FC90 0030B8F0 80 1E 00 00 */ lwz r0, 0(r30)
+/* 8030FC94 0030B8F4 90 1F 00 04 */ stw r0, 4(r31)
+lbl_8030FC98:
+/* 8030FC98 0030B8F8 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FC9C 0030B8FC 4B EB 74 D9 */ bl _restgpr_27
+/* 8030FCA0 0030B900 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030FCA4 0030B904 7C 08 03 A6 */ mtlr r0
+/* 8030FCA8 0030B908 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030FCAC 0030B90C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetSector
+VFiPFFAT_GetSector:
+/* 8030FCB0 0030B910 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8030FCB4 0030B914 7C 08 02 A6 */ mflr r0
+/* 8030FCB8 0030B918 90 01 00 24 */ stw r0, 0x24(r1)
+/* 8030FCBC 0030B91C 38 00 00 00 */ li r0, 0
+/* 8030FCC0 0030B920 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8030FCC4 0030B924 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8030FCC8 0030B928 7D 1E 43 78 */ mr r30, r8
+/* 8030FCCC 0030B92C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 8030FCD0 0030B930 7C FD 3B 78 */ mr r29, r7
+/* 8030FCD4 0030B934 93 81 00 10 */ stw r28, 0x10(r1)
+/* 8030FCD8 0030B938 7C 9C 23 78 */ mr r28, r4
+/* 8030FCDC 0030B93C 90 01 00 08 */ stw r0, 8(r1)
+/* 8030FCE0 0030B940 81 23 00 08 */ lwz r9, 8(r3)
+/* 8030FCE4 0030B944 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 8030FCE8 0030B948 80 09 00 00 */ lwz r0, 0(r9)
+/* 8030FCEC 0030B94C 81 1F 00 1C */ lwz r8, 0x1c(r31)
+/* 8030FCF0 0030B950 28 00 00 01 */ cmplwi r0, 1
+/* 8030FCF4 0030B954 40 82 00 64 */ bne lbl_8030FD58
+/* 8030FCF8 0030B958 28 08 00 01 */ cmplwi r8, 1
+/* 8030FCFC 0030B95C 41 81 00 5C */ bgt lbl_8030FD58
+/* 8030FD00 0030B960 2C 08 00 00 */ cmpwi r8, 0
+/* 8030FD04 0030B964 41 82 00 14 */ beq lbl_8030FD18
+/* 8030FD08 0030B968 2C 08 00 01 */ cmpwi r8, 1
+/* 8030FD0C 0030B96C 41 82 00 0C */ beq lbl_8030FD18
+/* 8030FD10 0030B970 38 60 00 0C */ li r3, 0xc
+/* 8030FD14 0030B974 48 00 00 30 */ b lbl_8030FD44
+lbl_8030FD18:
+/* 8030FD18 0030B978 A0 1F 00 24 */ lhz r0, 0x24(r31)
+/* 8030FD1C 0030B97C 7C 04 00 40 */ cmplw r4, r0
+/* 8030FD20 0030B980 41 80 00 14 */ blt lbl_8030FD34
+/* 8030FD24 0030B984 38 00 FF FF */ li r0, -1
+/* 8030FD28 0030B988 38 60 00 00 */ li r3, 0
+/* 8030FD2C 0030B98C 90 07 00 00 */ stw r0, 0(r7)
+/* 8030FD30 0030B990 48 00 00 14 */ b lbl_8030FD44
+lbl_8030FD34:
+/* 8030FD34 0030B994 80 1F 00 2C */ lwz r0, 0x2c(r31)
+/* 8030FD38 0030B998 38 60 00 00 */ li r3, 0
+/* 8030FD3C 0030B99C 7C 00 22 14 */ add r0, r0, r4
+/* 8030FD40 0030B9A0 90 07 00 00 */ stw r0, 0(r7)
+lbl_8030FD44:
+/* 8030FD44 0030B9A4 7C 03 00 D0 */ neg r0, r3
+/* 8030FD48 0030B9A8 7C 00 1B 78 */ or r0, r0, r3
+/* 8030FD4C 0030B9AC 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 8030FD50 0030B9B0 7C 63 00 38 */ and r3, r3, r0
+/* 8030FD54 0030B9B4 48 00 00 F4 */ b lbl_8030FE48
+lbl_8030FD58:
+/* 8030FD58 0030B9B8 89 3F 00 21 */ lbz r9, 0x21(r31)
+/* 8030FD5C 0030B9BC 28 05 00 02 */ cmplwi r5, 2
+/* 8030FD60 0030B9C0 7C 84 4C 30 */ srw r4, r4, r9
+/* 8030FD64 0030B9C4 40 82 00 74 */ bne lbl_8030FDD8
+/* 8030FD68 0030B9C8 A0 BF 00 00 */ lhz r5, 0(r31)
+/* 8030FD6C 0030B9CC 89 1F 00 20 */ lbz r8, 0x20(r31)
+/* 8030FD70 0030B9D0 38 05 FF FF */ addi r0, r5, -1
+/* 8030FD74 0030B9D4 88 BF 00 06 */ lbz r5, 6(r31)
+/* 8030FD78 0030B9D8 7C C7 00 38 */ and r7, r6, r0
+/* 8030FD7C 0030B9DC 7C C8 44 30 */ srw r8, r6, r8
+/* 8030FD80 0030B9E0 7C C7 00 D0 */ neg r6, r7
+/* 8030FD84 0030B9E4 38 05 FF FF */ addi r0, r5, -1
+/* 8030FD88 0030B9E8 7C C5 3B 78 */ or r5, r6, r7
+/* 8030FD8C 0030B9EC 38 E1 00 08 */ addi r7, r1, 8
+/* 8030FD90 0030B9F0 54 A5 0F FE */ srwi r5, r5, 0x1f
+/* 8030FD94 0030B9F4 38 C1 00 0C */ addi r6, r1, 0xc
+/* 8030FD98 0030B9F8 7D 08 2A 14 */ add r8, r8, r5
+/* 8030FD9C 0030B9FC 7C 05 40 38 */ and r5, r0, r8
+/* 8030FDA0 0030BA00 7C 05 00 D0 */ neg r0, r5
+/* 8030FDA4 0030BA04 7D 08 4C 30 */ srw r8, r8, r9
+/* 8030FDA8 0030BA08 7C 00 2B 78 */ or r0, r0, r5
+/* 8030FDAC 0030BA0C 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 8030FDB0 0030BA10 7C A8 02 14 */ add r5, r8, r0
+/* 8030FDB4 0030BA14 4B FF FD DD */ bl VFiPFFAT_GetClusterAllocated
+/* 8030FDB8 0030BA18 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FDBC 0030BA1C 41 82 00 08 */ beq lbl_8030FDC4
+/* 8030FDC0 0030BA20 48 00 00 88 */ b lbl_8030FE48
+lbl_8030FDC4:
+/* 8030FDC4 0030BA24 80 61 00 08 */ lwz r3, 8(r1)
+/* 8030FDC8 0030BA28 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 8030FDCC 0030BA2C 7C 60 00 30 */ slw r0, r3, r0
+/* 8030FDD0 0030BA30 90 1E 00 00 */ stw r0, 0(r30)
+/* 8030FDD4 0030BA34 48 00 00 28 */ b lbl_8030FDFC
+lbl_8030FDD8:
+/* 8030FDD8 0030BA38 38 C1 00 0C */ addi r6, r1, 0xc
+/* 8030FDDC 0030BA3C 4B FF FC 25 */ bl VFiPFFAT_GetClusterSpecified
+/* 8030FDE0 0030BA40 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FDE4 0030BA44 41 82 00 08 */ beq lbl_8030FDEC
+/* 8030FDE8 0030BA48 48 00 00 60 */ b lbl_8030FE48
+lbl_8030FDEC:
+/* 8030FDEC 0030BA4C 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 8030FDF0 0030BA50 38 60 00 01 */ li r3, 1
+/* 8030FDF4 0030BA54 7C 60 00 30 */ slw r0, r3, r0
+/* 8030FDF8 0030BA58 90 1E 00 00 */ stw r0, 0(r30)
+lbl_8030FDFC:
+/* 8030FDFC 0030BA5C 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 8030FE00 0030BA60 3C 03 00 01 */ addis r0, r3, 1
+/* 8030FE04 0030BA64 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030FE08 0030BA68 40 82 00 14 */ bne lbl_8030FE1C
+/* 8030FE0C 0030BA6C 38 00 FF FF */ li r0, -1
+/* 8030FE10 0030BA70 38 60 00 00 */ li r3, 0
+/* 8030FE14 0030BA74 90 1D 00 00 */ stw r0, 0(r29)
+/* 8030FE18 0030BA78 48 00 00 30 */ b lbl_8030FE48
+lbl_8030FE1C:
+/* 8030FE1C 0030BA7C 88 9F 00 06 */ lbz r4, 6(r31)
+/* 8030FE20 0030BA80 38 C3 FF FE */ addi r6, r3, -2
+/* 8030FE24 0030BA84 88 BF 00 21 */ lbz r5, 0x21(r31)
+/* 8030FE28 0030BA88 38 60 00 00 */ li r3, 0
+/* 8030FE2C 0030BA8C 38 04 FF FF */ addi r0, r4, -1
+/* 8030FE30 0030BA90 80 FF 00 30 */ lwz r7, 0x30(r31)
+/* 8030FE34 0030BA94 7C C5 28 30 */ slw r5, r6, r5
+/* 8030FE38 0030BA98 7F 84 00 38 */ and r4, r28, r0
+/* 8030FE3C 0030BA9C 7C 07 2A 14 */ add r0, r7, r5
+/* 8030FE40 0030BAA0 7C 04 02 14 */ add r0, r4, r0
+/* 8030FE44 0030BAA4 90 1D 00 00 */ stw r0, 0(r29)
+lbl_8030FE48:
+/* 8030FE48 0030BAA8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 8030FE4C 0030BAAC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 8030FE50 0030BAB0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8030FE54 0030BAB4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030FE58 0030BAB8 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 8030FE5C 0030BABC 7C 08 03 A6 */ mtlr r0
+/* 8030FE60 0030BAC0 38 21 00 20 */ addi r1, r1, 0x20
+/* 8030FE64 0030BAC4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_UpdateFATEntry
+VFiPFFAT_UpdateFATEntry:
+/* 8030FE68 0030BAC8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030FE6C 0030BACC 7C 08 02 A6 */ mflr r0
+/* 8030FE70 0030BAD0 38 A0 00 00 */ li r5, 0
+/* 8030FE74 0030BAD4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030FE78 0030BAD8 A0 04 00 00 */ lhz r0, 0(r4)
+/* 8030FE7C 0030BADC 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 8030FE80 0030BAE0 2C 00 00 02 */ cmpwi r0, 2
+/* 8030FE84 0030BAE4 40 82 00 0C */ bne lbl_8030FE90
+/* 8030FE88 0030BAE8 4B FF AA F5 */ bl VFiPFCACHE_WriteFATPage
+/* 8030FE8C 0030BAEC 7C 65 1B 78 */ mr r5, r3
+lbl_8030FE90:
+/* 8030FE90 0030BAF0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030FE94 0030BAF4 7C A3 2B 78 */ mr r3, r5
+/* 8030FE98 0030BAF8 7C 08 03 A6 */ mtlr r0
+/* 8030FE9C 0030BAFC 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030FEA0 0030BB00 4E 80 00 20 */ blr
+
+.global VFiPFFAT_UpdateAlternateFATEntry
+VFiPFFAT_UpdateAlternateFATEntry:
+/* 8030FEA4 0030BB04 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030FEA8 0030BB08 7C 08 02 A6 */ mflr r0
+/* 8030FEAC 0030BB0C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8030FEB0 0030BB10 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FEB4 0030BB14 4B EB 72 71 */ bl _savegpr_26
+/* 8030FEB8 0030BB18 A0 03 00 02 */ lhz r0, 2(r3)
+/* 8030FEBC 0030BB1C 7C 7A 1B 78 */ mr r26, r3
+/* 8030FEC0 0030BB20 80 63 00 0C */ lwz r3, 0xc(r3)
+/* 8030FEC4 0030BB24 7C 9B 23 78 */ mr r27, r4
+/* 8030FEC8 0030BB28 7C 80 28 50 */ subf r4, r0, r5
+/* 8030FECC 0030BB2C 7C DD 33 78 */ mr r29, r6
+/* 8030FED0 0030BB30 7C 04 1B 97 */ divwu. r0, r4, r3
+/* 8030FED4 0030BB34 3B E0 00 00 */ li r31, 0
+/* 8030FED8 0030BB38 41 82 00 14 */ beq lbl_8030FEEC
+/* 8030FEDC 0030BB3C 7C 00 19 D6 */ mullw r0, r0, r3
+/* 8030FEE0 0030BB40 3B C0 00 00 */ li r30, 0
+/* 8030FEE4 0030BB44 7F 80 20 50 */ subf r28, r0, r4
+/* 8030FEE8 0030BB48 48 00 00 58 */ b lbl_8030FF40
+lbl_8030FEEC:
+/* 8030FEEC 0030BB4C 7F 85 1A 14 */ add r28, r5, r3
+/* 8030FEF0 0030BB50 3B C0 00 01 */ li r30, 1
+/* 8030FEF4 0030BB54 48 00 00 4C */ b lbl_8030FF40
+lbl_8030FEF8:
+/* 8030FEF8 0030BB58 7F 43 D3 78 */ mr r3, r26
+/* 8030FEFC 0030BB5C 7F 64 DB 78 */ mr r4, r27
+/* 8030FF00 0030BB60 7F 85 E3 78 */ mr r5, r28
+/* 8030FF04 0030BB64 7F A6 EB 78 */ mr r6, r29
+/* 8030FF08 0030BB68 38 E1 00 08 */ addi r7, r1, 8
+/* 8030FF0C 0030BB6C 4B FF 63 35 */ bl VFiPFDRV_lwrite
+/* 8030FF10 0030BB70 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FF14 0030BB74 41 82 00 10 */ beq lbl_8030FF24
+/* 8030FF18 0030BB78 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030FF1C 0030BB7C 40 82 00 08 */ bne lbl_8030FF24
+/* 8030FF20 0030BB80 7C 7F 1B 78 */ mr r31, r3
+lbl_8030FF24:
+/* 8030FF24 0030BB84 80 01 00 08 */ lwz r0, 8(r1)
+/* 8030FF28 0030BB88 7C 00 E8 40 */ cmplw r0, r29
+/* 8030FF2C 0030BB8C 41 82 00 08 */ beq lbl_8030FF34
+/* 8030FF30 0030BB90 3B E0 00 11 */ li r31, 0x11
+lbl_8030FF34:
+/* 8030FF34 0030BB94 80 1A 00 0C */ lwz r0, 0xc(r26)
+/* 8030FF38 0030BB98 3B DE 00 01 */ addi r30, r30, 1
+/* 8030FF3C 0030BB9C 7F 9C 02 14 */ add r28, r28, r0
+lbl_8030FF40:
+/* 8030FF40 0030BBA0 88 1A 00 22 */ lbz r0, 0x22(r26)
+/* 8030FF44 0030BBA4 7C 1E 00 40 */ cmplw r30, r0
+/* 8030FF48 0030BBA8 41 80 FF B0 */ blt lbl_8030FEF8
+/* 8030FF4C 0030BBAC 39 61 00 30 */ addi r11, r1, 0x30
+/* 8030FF50 0030BBB0 7F E3 FB 78 */ mr r3, r31
+/* 8030FF54 0030BBB4 4B EB 72 1D */ bl _restgpr_26
+/* 8030FF58 0030BBB8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030FF5C 0030BBBC 7C 08 03 A6 */ mtlr r0
+/* 8030FF60 0030BBC0 38 21 00 30 */ addi r1, r1, 0x30
+/* 8030FF64 0030BBC4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetSectorSpecified
+VFiPFFAT_GetSectorSpecified:
+/* 8030FF68 0030BBC8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030FF6C 0030BBCC 7C 08 02 A6 */ mflr r0
+/* 8030FF70 0030BBD0 2C 03 00 00 */ cmpwi r3, 0
+/* 8030FF74 0030BBD4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030FF78 0030BBD8 40 82 00 0C */ bne lbl_8030FF84
+/* 8030FF7C 0030BBDC 38 60 00 0A */ li r3, 0xa
+/* 8030FF80 0030BBE0 48 00 00 B0 */ b lbl_80310030
+lbl_8030FF84:
+/* 8030FF84 0030BBE4 81 03 00 30 */ lwz r8, 0x30(r3)
+/* 8030FF88 0030BBE8 2C 08 00 00 */ cmpwi r8, 0
+/* 8030FF8C 0030BBEC 40 82 00 0C */ bne lbl_8030FF98
+/* 8030FF90 0030BBF0 38 60 00 0A */ li r3, 0xa
+/* 8030FF94 0030BBF4 48 00 00 9C */ b lbl_80310030
+lbl_8030FF98:
+/* 8030FF98 0030BBF8 80 E3 00 00 */ lwz r7, 0(r3)
+/* 8030FF9C 0030BBFC 2C 07 00 00 */ cmpwi r7, 0
+/* 8030FFA0 0030BC00 40 82 00 0C */ bne lbl_8030FFAC
+/* 8030FFA4 0030BC04 38 60 00 0A */ li r3, 0xa
+/* 8030FFA8 0030BC08 48 00 00 88 */ b lbl_80310030
+lbl_8030FFAC:
+/* 8030FFAC 0030BC0C 80 08 00 08 */ lwz r0, 8(r8)
+/* 8030FFB0 0030BC10 7C 00 38 40 */ cmplw r0, r7
+/* 8030FFB4 0030BC14 40 81 00 0C */ ble lbl_8030FFC0
+/* 8030FFB8 0030BC18 38 60 00 0A */ li r3, 0xa
+/* 8030FFBC 0030BC1C 48 00 00 74 */ b lbl_80310030
+lbl_8030FFC0:
+/* 8030FFC0 0030BC20 80 E3 00 34 */ lwz r7, 0x34(r3)
+/* 8030FFC4 0030BC24 88 07 18 7A */ lbz r0, 0x187a(r7)
+/* 8030FFC8 0030BC28 7C 00 07 74 */ extsb r0, r0
+/* 8030FFCC 0030BC2C 2C 00 00 41 */ cmpwi r0, 0x41
+/* 8030FFD0 0030BC30 41 80 00 0C */ blt lbl_8030FFDC
+/* 8030FFD4 0030BC34 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 8030FFD8 0030BC38 40 81 00 0C */ ble lbl_8030FFE4
+lbl_8030FFDC:
+/* 8030FFDC 0030BC3C 38 60 00 23 */ li r3, 0x23
+/* 8030FFE0 0030BC40 48 00 00 50 */ b lbl_80310030
+lbl_8030FFE4:
+/* 8030FFE4 0030BC44 88 07 00 20 */ lbz r0, 0x20(r7)
+/* 8030FFE8 0030BC48 38 E0 FF FF */ li r7, -1
+/* 8030FFEC 0030BC4C 7C E7 04 30 */ srw r7, r7, r0
+/* 8030FFF0 0030BC50 38 07 00 01 */ addi r0, r7, 1
+/* 8030FFF4 0030BC54 7C 04 00 40 */ cmplw r4, r0
+/* 8030FFF8 0030BC58 41 80 00 0C */ blt lbl_80310004
+/* 8030FFFC 0030BC5C 38 60 00 25 */ li r3, 0x25
+/* 80310000 0030BC60 48 00 00 30 */ b lbl_80310030
+lbl_80310004:
+/* 80310004 0030BC64 7C 05 00 D0 */ neg r0, r5
+/* 80310008 0030BC68 7C C7 33 78 */ mr r7, r6
+/* 8031000C 0030BC6C 7C 00 2B 78 */ or r0, r0, r5
+/* 80310010 0030BC70 39 01 00 08 */ addi r8, r1, 8
+/* 80310014 0030BC74 54 05 0F FE */ srwi r5, r0, 0x1f
+/* 80310018 0030BC78 38 C0 00 00 */ li r6, 0
+/* 8031001C 0030BC7C 4B FF FC 95 */ bl VFiPFFAT_GetSector
+/* 80310020 0030BC80 2C 03 00 00 */ cmpwi r3, 0
+/* 80310024 0030BC84 41 82 00 08 */ beq lbl_8031002C
+/* 80310028 0030BC88 48 00 00 08 */ b lbl_80310030
+lbl_8031002C:
+/* 8031002C 0030BC8C 38 60 00 00 */ li r3, 0
+lbl_80310030:
+/* 80310030 0030BC90 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80310034 0030BC94 7C 08 03 A6 */ mtlr r0
+/* 80310038 0030BC98 38 21 00 10 */ addi r1, r1, 0x10
+/* 8031003C 0030BC9C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetSectorAllocated
+VFiPFFAT_GetSectorAllocated:
+/* 80310040 0030BCA0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80310044 0030BCA4 7C 08 02 A6 */ mflr r0
+/* 80310048 0030BCA8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031004C 0030BCAC 7C C9 33 78 */ mr r9, r6
+/* 80310050 0030BCB0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80310054 0030BCB4 7C E8 3B 78 */ mr r8, r7
+/* 80310058 0030BCB8 40 82 00 0C */ bne lbl_80310064
+/* 8031005C 0030BCBC 38 60 00 0A */ li r3, 0xa
+/* 80310060 0030BCC0 48 00 00 A4 */ b lbl_80310104
+lbl_80310064:
+/* 80310064 0030BCC4 80 E3 00 30 */ lwz r7, 0x30(r3)
+/* 80310068 0030BCC8 2C 07 00 00 */ cmpwi r7, 0
+/* 8031006C 0030BCCC 40 82 00 0C */ bne lbl_80310078
+/* 80310070 0030BCD0 38 60 00 0A */ li r3, 0xa
+/* 80310074 0030BCD4 48 00 00 90 */ b lbl_80310104
+lbl_80310078:
+/* 80310078 0030BCD8 80 C3 00 00 */ lwz r6, 0(r3)
+/* 8031007C 0030BCDC 2C 06 00 00 */ cmpwi r6, 0
+/* 80310080 0030BCE0 40 82 00 0C */ bne lbl_8031008C
+/* 80310084 0030BCE4 38 60 00 0A */ li r3, 0xa
+/* 80310088 0030BCE8 48 00 00 7C */ b lbl_80310104
+lbl_8031008C:
+/* 8031008C 0030BCEC 80 07 00 08 */ lwz r0, 8(r7)
+/* 80310090 0030BCF0 7C 00 30 40 */ cmplw r0, r6
+/* 80310094 0030BCF4 40 81 00 0C */ ble lbl_803100A0
+/* 80310098 0030BCF8 38 60 00 0A */ li r3, 0xa
+/* 8031009C 0030BCFC 48 00 00 68 */ b lbl_80310104
+lbl_803100A0:
+/* 803100A0 0030BD00 80 C3 00 34 */ lwz r6, 0x34(r3)
+/* 803100A4 0030BD04 88 06 18 7A */ lbz r0, 0x187a(r6)
+/* 803100A8 0030BD08 7C 00 07 74 */ extsb r0, r0
+/* 803100AC 0030BD0C 2C 00 00 41 */ cmpwi r0, 0x41
+/* 803100B0 0030BD10 41 80 00 0C */ blt lbl_803100BC
+/* 803100B4 0030BD14 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 803100B8 0030BD18 40 81 00 0C */ ble lbl_803100C4
+lbl_803100BC:
+/* 803100BC 0030BD1C 38 60 00 23 */ li r3, 0x23
+/* 803100C0 0030BD20 48 00 00 44 */ b lbl_80310104
+lbl_803100C4:
+/* 803100C4 0030BD24 88 06 00 20 */ lbz r0, 0x20(r6)
+/* 803100C8 0030BD28 38 C0 FF FF */ li r6, -1
+/* 803100CC 0030BD2C 7C C6 04 30 */ srw r6, r6, r0
+/* 803100D0 0030BD30 38 06 00 01 */ addi r0, r6, 1
+/* 803100D4 0030BD34 7C 04 00 40 */ cmplw r4, r0
+/* 803100D8 0030BD38 41 80 00 0C */ blt lbl_803100E4
+/* 803100DC 0030BD3C 38 60 00 25 */ li r3, 0x25
+/* 803100E0 0030BD40 48 00 00 24 */ b lbl_80310104
+lbl_803100E4:
+/* 803100E4 0030BD44 7C A6 2B 78 */ mr r6, r5
+/* 803100E8 0030BD48 7D 27 4B 78 */ mr r7, r9
+/* 803100EC 0030BD4C 38 A0 00 02 */ li r5, 2
+/* 803100F0 0030BD50 4B FF FB C1 */ bl VFiPFFAT_GetSector
+/* 803100F4 0030BD54 7C 03 00 D0 */ neg r0, r3
+/* 803100F8 0030BD58 7C 00 1B 78 */ or r0, r0, r3
+/* 803100FC 0030BD5C 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 80310100 0030BD60 7C 63 00 38 */ and r3, r3, r0
+lbl_80310104:
+/* 80310104 0030BD64 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80310108 0030BD68 7C 08 03 A6 */ mtlr r0
+/* 8031010C 0030BD6C 38 21 00 10 */ addi r1, r1, 0x10
+/* 80310110 0030BD70 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetContinuousSector
+VFiPFFAT_GetContinuousSector:
+/* 80310114 0030BD74 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80310118 0030BD78 7C 08 02 A6 */ mflr r0
+/* 8031011C 0030BD7C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80310120 0030BD80 39 61 00 30 */ addi r11, r1, 0x30
+/* 80310124 0030BD84 4B EB 6F FD */ bl _savegpr_25
+/* 80310128 0030BD88 2C 03 00 00 */ cmpwi r3, 0
+/* 8031012C 0030BD8C 7C 79 1B 78 */ mr r25, r3
+/* 80310130 0030BD90 7C 9A 23 78 */ mr r26, r4
+/* 80310134 0030BD94 7C BB 2B 78 */ mr r27, r5
+/* 80310138 0030BD98 7C DC 33 78 */ mr r28, r6
+/* 8031013C 0030BD9C 7C FD 3B 78 */ mr r29, r7
+/* 80310140 0030BDA0 3B C0 FF FF */ li r30, -1
+/* 80310144 0030BDA4 40 82 00 0C */ bne lbl_80310150
+/* 80310148 0030BDA8 38 60 00 0A */ li r3, 0xa
+/* 8031014C 0030BDAC 48 00 01 6C */ b lbl_803102B8
+lbl_80310150:
+/* 80310150 0030BDB0 80 E3 00 30 */ lwz r7, 0x30(r3)
+/* 80310154 0030BDB4 2C 07 00 00 */ cmpwi r7, 0
+/* 80310158 0030BDB8 40 82 00 0C */ bne lbl_80310164
+/* 8031015C 0030BDBC 38 60 00 0A */ li r3, 0xa
+/* 80310160 0030BDC0 48 00 01 58 */ b lbl_803102B8
+lbl_80310164:
+/* 80310164 0030BDC4 80 A3 00 00 */ lwz r5, 0(r3)
+/* 80310168 0030BDC8 2C 05 00 00 */ cmpwi r5, 0
+/* 8031016C 0030BDCC 40 82 00 0C */ bne lbl_80310178
+/* 80310170 0030BDD0 38 60 00 0A */ li r3, 0xa
+/* 80310174 0030BDD4 48 00 01 44 */ b lbl_803102B8
+lbl_80310178:
+/* 80310178 0030BDD8 80 07 00 08 */ lwz r0, 8(r7)
+/* 8031017C 0030BDDC 7C 00 28 40 */ cmplw r0, r5
+/* 80310180 0030BDE0 40 81 00 0C */ ble lbl_8031018C
+/* 80310184 0030BDE4 38 60 00 0A */ li r3, 0xa
+/* 80310188 0030BDE8 48 00 01 30 */ b lbl_803102B8
+lbl_8031018C:
+/* 8031018C 0030BDEC 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 80310190 0030BDF0 88 1F 18 7A */ lbz r0, 0x187a(r31)
+/* 80310194 0030BDF4 7C 00 07 74 */ extsb r0, r0
+/* 80310198 0030BDF8 2C 00 00 41 */ cmpwi r0, 0x41
+/* 8031019C 0030BDFC 41 80 00 0C */ blt lbl_803101A8
+/* 803101A0 0030BE00 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 803101A4 0030BE04 40 81 00 0C */ ble lbl_803101B0
+lbl_803101A8:
+/* 803101A8 0030BE08 38 60 00 23 */ li r3, 0x23
+/* 803101AC 0030BE0C 48 00 01 0C */ b lbl_803102B8
+lbl_803101B0:
+/* 803101B0 0030BE10 88 1F 00 20 */ lbz r0, 0x20(r31)
+/* 803101B4 0030BE14 38 A0 FF FF */ li r5, -1
+/* 803101B8 0030BE18 7C A5 04 30 */ srw r5, r5, r0
+/* 803101BC 0030BE1C 38 05 00 01 */ addi r0, r5, 1
+/* 803101C0 0030BE20 7C 04 00 40 */ cmplw r4, r0
+/* 803101C4 0030BE24 41 80 00 0C */ blt lbl_803101D0
+/* 803101C8 0030BE28 38 60 00 25 */ li r3, 0x25
+/* 803101CC 0030BE2C 48 00 00 EC */ b lbl_803102B8
+lbl_803101D0:
+/* 803101D0 0030BE30 80 A6 00 00 */ lwz r5, 0(r6)
+/* 803101D4 0030BE34 3C 05 00 01 */ addis r0, r5, 1
+/* 803101D8 0030BE38 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803101DC 0030BE3C 41 82 00 1C */ beq lbl_803101F8
+/* 803101E0 0030BE40 80 7F 00 30 */ lwz r3, 0x30(r31)
+/* 803101E4 0030BE44 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 803101E8 0030BE48 7C 63 28 50 */ subf r3, r3, r5
+/* 803101EC 0030BE4C 7C 63 04 30 */ srw r3, r3, r0
+/* 803101F0 0030BE50 3B C3 00 02 */ addi r30, r3, 2
+/* 803101F4 0030BE54 48 00 00 3C */ b lbl_80310230
+lbl_803101F8:
+/* 803101F8 0030BE58 38 A0 00 00 */ li r5, 0
+/* 803101FC 0030BE5C 4B FF FD 6D */ bl VFiPFFAT_GetSectorSpecified
+/* 80310200 0030BE60 2C 03 00 00 */ cmpwi r3, 0
+/* 80310204 0030BE64 41 82 00 08 */ beq lbl_8031020C
+/* 80310208 0030BE68 48 00 00 B0 */ b lbl_803102B8
+lbl_8031020C:
+/* 8031020C 0030BE6C 80 BC 00 00 */ lwz r5, 0(r28)
+/* 80310210 0030BE70 3C 05 00 01 */ addis r0, r5, 1
+/* 80310214 0030BE74 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80310218 0030BE78 41 82 00 18 */ beq lbl_80310230
+/* 8031021C 0030BE7C 80 7F 00 30 */ lwz r3, 0x30(r31)
+/* 80310220 0030BE80 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 80310224 0030BE84 7C 63 28 50 */ subf r3, r3, r5
+/* 80310228 0030BE88 7C 63 04 30 */ srw r3, r3, r0
+/* 8031022C 0030BE8C 3B C3 00 02 */ addi r30, r3, 2
+lbl_80310230:
+/* 80310230 0030BE90 3C 05 00 01 */ addis r0, r5, 1
+/* 80310234 0030BE94 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80310238 0030BE98 41 82 00 24 */ beq lbl_8031025C
+/* 8031023C 0030BE9C 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 80310240 0030BEA0 38 7E FF FF */ addi r3, r30, -1
+/* 80310244 0030BEA4 80 9F 00 30 */ lwz r4, 0x30(r31)
+/* 80310248 0030BEA8 7C 60 00 30 */ slw r0, r3, r0
+/* 8031024C 0030BEAC 7C 04 02 14 */ add r0, r4, r0
+/* 80310250 0030BEB0 7C 05 00 50 */ subf r0, r5, r0
+/* 80310254 0030BEB4 90 1D 00 00 */ stw r0, 0(r29)
+/* 80310258 0030BEB8 48 00 00 0C */ b lbl_80310264
+lbl_8031025C:
+/* 8031025C 0030BEBC 38 00 00 00 */ li r0, 0
+/* 80310260 0030BEC0 90 1D 00 00 */ stw r0, 0(r29)
+lbl_80310264:
+/* 80310264 0030BEC4 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80310268 0030BEC8 3C 03 00 01 */ addis r0, r3, 1
+/* 8031026C 0030BECC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80310270 0030BED0 41 82 00 44 */ beq lbl_803102B4
+/* 80310274 0030BED4 80 7D 00 00 */ lwz r3, 0(r29)
+/* 80310278 0030BED8 88 1F 00 20 */ lbz r0, 0x20(r31)
+/* 8031027C 0030BEDC 7C 60 00 30 */ slw r0, r3, r0
+/* 80310280 0030BEE0 7C 00 D8 40 */ cmplw r0, r27
+/* 80310284 0030BEE4 40 80 00 30 */ bge lbl_803102B4
+/* 80310288 0030BEE8 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 8031028C 0030BEEC 7F 23 CB 78 */ mr r3, r25
+/* 80310290 0030BEF0 7F C4 F3 78 */ mr r4, r30
+/* 80310294 0030BEF4 7F 66 DB 78 */ mr r6, r27
+/* 80310298 0030BEF8 7F 45 04 30 */ srw r5, r26, r0
+/* 8031029C 0030BEFC 7F A7 EB 78 */ mr r7, r29
+/* 803102A0 0030BF00 38 A5 00 01 */ addi r5, r5, 1
+/* 803102A4 0030BF04 4B FF F5 1D */ bl VFiPFFAT_GetClusterContinuousSectorInChain
+/* 803102A8 0030BF08 2C 03 00 00 */ cmpwi r3, 0
+/* 803102AC 0030BF0C 41 82 00 08 */ beq lbl_803102B4
+/* 803102B0 0030BF10 48 00 00 08 */ b lbl_803102B8
+lbl_803102B4:
+/* 803102B4 0030BF14 38 60 00 00 */ li r3, 0
+lbl_803102B8:
+/* 803102B8 0030BF18 39 61 00 30 */ addi r11, r1, 0x30
+/* 803102BC 0030BF1C 4B EB 6E B1 */ bl _restgpr_25
+/* 803102C0 0030BF20 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803102C4 0030BF24 7C 08 03 A6 */ mtlr r0
+/* 803102C8 0030BF28 38 21 00 30 */ addi r1, r1, 0x30
+/* 803102CC 0030BF2C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_CountAllocatedClusters
+VFiPFFAT_CountAllocatedClusters:
+/* 803102D0 0030BF30 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803102D4 0030BF34 7C 08 02 A6 */ mflr r0
+/* 803102D8 0030BF38 2C 03 00 00 */ cmpwi r3, 0
+/* 803102DC 0030BF3C 7C 86 23 78 */ mr r6, r4
+/* 803102E0 0030BF40 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803102E4 0030BF44 38 00 00 00 */ li r0, 0
+/* 803102E8 0030BF48 7C A7 2B 78 */ mr r7, r5
+/* 803102EC 0030BF4C 90 05 00 00 */ stw r0, 0(r5)
+/* 803102F0 0030BF50 40 82 00 0C */ bne lbl_803102FC
+/* 803102F4 0030BF54 38 60 00 0A */ li r3, 0xa
+/* 803102F8 0030BF58 48 00 01 20 */ b lbl_80310418
+lbl_803102FC:
+/* 803102FC 0030BF5C 81 23 00 30 */ lwz r9, 0x30(r3)
+/* 80310300 0030BF60 2C 09 00 00 */ cmpwi r9, 0
+/* 80310304 0030BF64 40 82 00 0C */ bne lbl_80310310
+/* 80310308 0030BF68 38 60 00 0A */ li r3, 0xa
+/* 8031030C 0030BF6C 48 00 01 0C */ b lbl_80310418
+lbl_80310310:
+/* 80310310 0030BF70 81 03 00 00 */ lwz r8, 0(r3)
+/* 80310314 0030BF74 2C 08 00 00 */ cmpwi r8, 0
+/* 80310318 0030BF78 40 82 00 0C */ bne lbl_80310324
+/* 8031031C 0030BF7C 38 60 00 0A */ li r3, 0xa
+/* 80310320 0030BF80 48 00 00 F8 */ b lbl_80310418
+lbl_80310324:
+/* 80310324 0030BF84 80 09 00 08 */ lwz r0, 8(r9)
+/* 80310328 0030BF88 7C 00 40 40 */ cmplw r0, r8
+/* 8031032C 0030BF8C 40 81 00 0C */ ble lbl_80310338
+/* 80310330 0030BF90 38 60 00 0A */ li r3, 0xa
+/* 80310334 0030BF94 48 00 00 E4 */ b lbl_80310418
+lbl_80310338:
+/* 80310338 0030BF98 81 43 00 34 */ lwz r10, 0x34(r3)
+/* 8031033C 0030BF9C 88 0A 18 7A */ lbz r0, 0x187a(r10)
+/* 80310340 0030BFA0 7C 00 07 74 */ extsb r0, r0
+/* 80310344 0030BFA4 2C 00 00 41 */ cmpwi r0, 0x41
+/* 80310348 0030BFA8 41 80 00 0C */ blt lbl_80310354
+/* 8031034C 0030BFAC 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 80310350 0030BFB0 40 81 00 0C */ ble lbl_8031035C
+lbl_80310354:
+/* 80310354 0030BFB4 38 60 00 23 */ li r3, 0x23
+/* 80310358 0030BFB8 48 00 00 C0 */ b lbl_80310418
+lbl_8031035C:
+/* 8031035C 0030BFBC 81 03 00 08 */ lwz r8, 8(r3)
+/* 80310360 0030BFC0 81 68 00 00 */ lwz r11, 0(r8)
+/* 80310364 0030BFC4 28 0B 00 02 */ cmplwi r11, 2
+/* 80310368 0030BFC8 40 80 00 0C */ bge lbl_80310374
+/* 8031036C 0030BFCC 38 60 00 00 */ li r3, 0
+/* 80310370 0030BFD0 48 00 00 A8 */ b lbl_80310418
+lbl_80310374:
+/* 80310374 0030BFD4 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80310378 0030BFD8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031037C 0030BFDC 41 82 00 18 */ beq lbl_80310394
+/* 80310380 0030BFE0 80 83 00 10 */ lwz r4, 0x10(r3)
+/* 80310384 0030BFE4 38 60 00 00 */ li r3, 0
+/* 80310388 0030BFE8 38 04 00 01 */ addi r0, r4, 1
+/* 8031038C 0030BFEC 90 05 00 00 */ stw r0, 0(r5)
+/* 80310390 0030BFF0 48 00 00 88 */ b lbl_80310418
+lbl_80310394:
+/* 80310394 0030BFF4 80 09 00 04 */ lwz r0, 4(r9)
+/* 80310398 0030BFF8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031039C 0030BFFC 41 82 00 60 */ beq lbl_803103FC
+/* 803103A0 0030C000 81 09 00 00 */ lwz r8, 0(r9)
+/* 803103A4 0030C004 88 CA 00 20 */ lbz r6, 0x20(r10)
+/* 803103A8 0030C008 88 0A 00 21 */ lbz r0, 0x21(r10)
+/* 803103AC 0030C00C 39 28 00 01 */ addi r9, r8, 1
+/* 803103B0 0030C010 7C 06 02 14 */ add r0, r6, r0
+/* 803103B4 0030C014 7D 20 00 30 */ slw r0, r9, r0
+/* 803103B8 0030C018 7C 04 00 40 */ cmplw r4, r0
+/* 803103BC 0030C01C 41 81 00 10 */ bgt lbl_803103CC
+/* 803103C0 0030C020 91 25 00 00 */ stw r9, 0(r5)
+/* 803103C4 0030C024 38 60 00 00 */ li r3, 0
+/* 803103C8 0030C028 48 00 00 50 */ b lbl_80310418
+lbl_803103CC:
+/* 803103CC 0030C02C 91 05 00 00 */ stw r8, 0(r5)
+/* 803103D0 0030C030 81 03 00 34 */ lwz r8, 0x34(r3)
+/* 803103D4 0030C034 80 C3 00 30 */ lwz r6, 0x30(r3)
+/* 803103D8 0030C038 88 A8 00 20 */ lbz r5, 0x20(r8)
+/* 803103DC 0030C03C 88 08 00 21 */ lbz r0, 0x21(r8)
+/* 803103E0 0030C040 81 06 00 00 */ lwz r8, 0(r6)
+/* 803103E4 0030C044 7C 05 02 14 */ add r0, r5, r0
+/* 803103E8 0030C048 81 66 00 04 */ lwz r11, 4(r6)
+/* 803103EC 0030C04C 7D 00 00 30 */ slw r0, r8, r0
+/* 803103F0 0030C050 38 A8 00 01 */ addi r5, r8, 1
+/* 803103F4 0030C054 7C C0 20 50 */ subf r6, r0, r4
+/* 803103F8 0030C058 48 00 00 08 */ b lbl_80310400
+lbl_803103FC:
+/* 803103FC 0030C05C 38 A0 00 01 */ li r5, 1
+lbl_80310400:
+/* 80310400 0030C060 7D 64 5B 78 */ mr r4, r11
+/* 80310404 0030C064 4B FF F4 ED */ bl VFiPFFAT_GetClusterAllocatedInChain
+/* 80310408 0030C068 2C 03 00 00 */ cmpwi r3, 0
+/* 8031040C 0030C06C 41 82 00 08 */ beq lbl_80310414
+/* 80310410 0030C070 48 00 00 08 */ b lbl_80310418
+lbl_80310414:
+/* 80310414 0030C074 38 60 00 00 */ li r3, 0
+lbl_80310418:
+/* 80310418 0030C078 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8031041C 0030C07C 7C 08 03 A6 */ mtlr r0
+/* 80310420 0030C080 38 21 00 10 */ addi r1, r1, 0x10
+/* 80310424 0030C084 4E 80 00 20 */ blr
+
+.global VFiPFFAT_FreeChain
+VFiPFFAT_FreeChain:
+/* 80310428 0030C088 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 8031042C 0030C08C 7C 08 02 A6 */ mflr r0
+/* 80310430 0030C090 90 01 00 44 */ stw r0, 0x44(r1)
+/* 80310434 0030C094 39 61 00 40 */ addi r11, r1, 0x40
+/* 80310438 0030C098 4B EB 6C E1 */ bl _savegpr_23
+/* 8031043C 0030C09C 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 80310440 0030C0A0 7C 78 1B 78 */ mr r24, r3
+/* 80310444 0030C0A4 7C 99 23 78 */ mr r25, r4
+/* 80310448 0030C0A8 7C BA 2B 78 */ mr r26, r5
+/* 8031044C 0030C0AC 2C 1F 00 00 */ cmpwi r31, 0
+/* 80310450 0030C0B0 7C DB 33 78 */ mr r27, r6
+/* 80310454 0030C0B4 40 82 00 0C */ bne lbl_80310460
+/* 80310458 0030C0B8 38 60 00 0A */ li r3, 0xa
+/* 8031045C 0030C0BC 48 00 03 34 */ b lbl_80310790
+lbl_80310460:
+/* 80310460 0030C0C0 28 04 00 02 */ cmplwi r4, 2
+/* 80310464 0030C0C4 41 80 00 14 */ blt lbl_80310478
+/* 80310468 0030C0C8 80 7F 00 34 */ lwz r3, 0x34(r31)
+/* 8031046C 0030C0CC 38 03 00 02 */ addi r0, r3, 2
+/* 80310470 0030C0D0 7C 04 00 40 */ cmplw r4, r0
+/* 80310474 0030C0D4 41 80 00 14 */ blt lbl_80310488
+lbl_80310478:
+/* 80310478 0030C0D8 2C 04 00 00 */ cmpwi r4, 0
+/* 8031047C 0030C0DC 41 82 00 0C */ beq lbl_80310488
+/* 80310480 0030C0E0 38 60 00 0E */ li r3, 0xe
+/* 80310484 0030C0E4 48 00 03 0C */ b lbl_80310790
+lbl_80310488:
+/* 80310488 0030C0E8 2C 04 00 00 */ cmpwi r4, 0
+/* 8031048C 0030C0EC 40 82 00 0C */ bne lbl_80310498
+/* 80310490 0030C0F0 38 60 00 00 */ li r3, 0
+/* 80310494 0030C0F4 48 00 02 FC */ b lbl_80310790
+lbl_80310498:
+/* 80310498 0030C0F8 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8031049C 0030C0FC 3C 60 80 40 */ lis r3, lbl_803FE280@ha
+/* 803104A0 0030C100 38 63 E2 80 */ addi r3, r3, lbl_803FE280@l
+/* 803104A4 0030C104 2C 06 00 00 */ cmpwi r6, 0
+/* 803104A8 0030C108 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 803104AC 0030C10C 7C 63 02 14 */ add r3, r3, r0
+/* 803104B0 0030C110 83 C3 00 04 */ lwz r30, 4(r3)
+/* 803104B4 0030C114 41 82 00 18 */ beq lbl_803104CC
+/* 803104B8 0030C118 A0 7F 00 00 */ lhz r3, 0(r31)
+/* 803104BC 0030C11C 7F 7D DB 78 */ mr r29, r27
+/* 803104C0 0030C120 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 803104C4 0030C124 7C 7C 00 30 */ slw r28, r3, r0
+/* 803104C8 0030C128 48 00 00 0C */ b lbl_803104D4
+lbl_803104CC:
+/* 803104CC 0030C12C 38 60 00 00 */ li r3, 0
+/* 803104D0 0030C130 48 00 02 C0 */ b lbl_80310790
+lbl_803104D4:
+/* 803104D4 0030C134 7F E3 FB 78 */ mr r3, r31
+/* 803104D8 0030C138 7F 25 CB 78 */ mr r5, r25
+/* 803104DC 0030C13C 38 81 00 08 */ addi r4, r1, 8
+/* 803104E0 0030C140 4B FF E0 59 */ bl VFiPFFAT_ReadFATSector
+/* 803104E4 0030C144 2C 03 00 00 */ cmpwi r3, 0
+/* 803104E8 0030C148 41 82 00 08 */ beq lbl_803104F0
+/* 803104EC 0030C14C 48 00 02 A4 */ b lbl_80310790
+lbl_803104F0:
+/* 803104F0 0030C150 80 61 00 08 */ lwz r3, 8(r1)
+/* 803104F4 0030C154 38 00 00 01 */ li r0, 1
+/* 803104F8 0030C158 B0 03 00 02 */ sth r0, 2(r3)
+/* 803104FC 0030C15C 93 21 00 0C */ stw r25, 0xc(r1)
+/* 80310500 0030C160 48 00 01 F8 */ b lbl_803106F8
+lbl_80310504:
+/* 80310504 0030C164 2C 1B 00 00 */ cmpwi r27, 0
+/* 80310508 0030C168 41 82 00 0C */ beq lbl_80310514
+/* 8031050C 0030C16C 2C 1D 00 00 */ cmpwi r29, 0
+/* 80310510 0030C170 41 82 01 F0 */ beq lbl_80310700
+lbl_80310514:
+/* 80310514 0030C174 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80310518 0030C178 80 61 00 08 */ lwz r3, 8(r1)
+/* 8031051C 0030C17C 2C 00 00 01 */ cmpwi r0, 1
+/* 80310520 0030C180 82 E3 00 18 */ lwz r23, 0x18(r3)
+/* 80310524 0030C184 41 82 00 38 */ beq lbl_8031055C
+/* 80310528 0030C188 40 80 00 10 */ bge lbl_80310538
+/* 8031052C 0030C18C 2C 00 00 00 */ cmpwi r0, 0
+/* 80310530 0030C190 40 80 00 14 */ bge lbl_80310544
+/* 80310534 0030C194 48 00 00 58 */ b lbl_8031058C
+lbl_80310538:
+/* 80310538 0030C198 2C 00 00 03 */ cmpwi r0, 3
+/* 8031053C 0030C19C 40 80 00 50 */ bge lbl_8031058C
+/* 80310540 0030C1A0 48 00 00 34 */ b lbl_80310574
+lbl_80310544:
+/* 80310544 0030C1A4 7F E3 FB 78 */ mr r3, r31
+/* 80310548 0030C1A8 57 24 04 3E */ clrlwi r4, r25, 0x10
+/* 8031054C 0030C1AC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80310550 0030C1B0 38 C1 00 08 */ addi r6, r1, 8
+/* 80310554 0030C1B4 48 00 0E 01 */ bl VFiPFFAT12_ReadFATEntryPage
+/* 80310558 0030C1B8 48 00 00 38 */ b lbl_80310590
+lbl_8031055C:
+/* 8031055C 0030C1BC 7F E3 FB 78 */ mr r3, r31
+/* 80310560 0030C1C0 7F 24 CB 78 */ mr r4, r25
+/* 80310564 0030C1C4 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80310568 0030C1C8 38 C1 00 08 */ addi r6, r1, 8
+/* 8031056C 0030C1CC 48 00 18 51 */ bl VFiPFFAT16_ReadFATEntryPage
+/* 80310570 0030C1D0 48 00 00 20 */ b lbl_80310590
+lbl_80310574:
+/* 80310574 0030C1D4 7F E3 FB 78 */ mr r3, r31
+/* 80310578 0030C1D8 7F 24 CB 78 */ mr r4, r25
+/* 8031057C 0030C1DC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80310580 0030C1E0 38 C1 00 08 */ addi r6, r1, 8
+/* 80310584 0030C1E4 48 00 1D C1 */ bl VFiPFFAT32_ReadFATEntryPage
+/* 80310588 0030C1E8 48 00 00 08 */ b lbl_80310590
+lbl_8031058C:
+/* 8031058C 0030C1EC 38 60 00 0F */ li r3, 0xf
+lbl_80310590:
+/* 80310590 0030C1F0 2C 03 00 00 */ cmpwi r3, 0
+/* 80310594 0030C1F4 41 82 00 08 */ beq lbl_8031059C
+/* 80310598 0030C1F8 48 00 01 F8 */ b lbl_80310790
+lbl_8031059C:
+/* 8031059C 0030C1FC 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 803105A0 0030C200 2C 00 00 00 */ cmpwi r0, 0
+/* 803105A4 0030C204 40 82 00 38 */ bne lbl_803105DC
+/* 803105A8 0030C208 80 81 00 08 */ lwz r4, 8(r1)
+/* 803105AC 0030C20C 38 60 00 00 */ li r3, 0
+/* 803105B0 0030C210 A0 04 00 00 */ lhz r0, 0(r4)
+/* 803105B4 0030C214 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 803105B8 0030C218 2C 00 00 02 */ cmpwi r0, 2
+/* 803105BC 0030C21C 40 82 00 0C */ bne lbl_803105C8
+/* 803105C0 0030C220 7F E3 FB 78 */ mr r3, r31
+/* 803105C4 0030C224 4B FF A3 B9 */ bl VFiPFCACHE_WriteFATPage
+lbl_803105C8:
+/* 803105C8 0030C228 2C 03 00 00 */ cmpwi r3, 0
+/* 803105CC 0030C22C 41 82 00 08 */ beq lbl_803105D4
+/* 803105D0 0030C230 48 00 01 C0 */ b lbl_80310790
+lbl_803105D4:
+/* 803105D4 0030C234 38 60 00 00 */ li r3, 0
+/* 803105D8 0030C238 48 00 01 B8 */ b lbl_80310790
+lbl_803105DC:
+/* 803105DC 0030C23C 80 61 00 08 */ lwz r3, 8(r1)
+/* 803105E0 0030C240 80 03 00 18 */ lwz r0, 0x18(r3)
+/* 803105E4 0030C244 7C 17 00 40 */ cmplw r23, r0
+/* 803105E8 0030C248 41 82 00 20 */ beq lbl_80310608
+/* 803105EC 0030C24C 7F E3 FB 78 */ mr r3, r31
+/* 803105F0 0030C250 7F 25 CB 78 */ mr r5, r25
+/* 803105F4 0030C254 38 81 00 08 */ addi r4, r1, 8
+/* 803105F8 0030C258 4B FF DF 41 */ bl VFiPFFAT_ReadFATSector
+/* 803105FC 0030C25C 2C 03 00 00 */ cmpwi r3, 0
+/* 80310600 0030C260 41 82 00 08 */ beq lbl_80310608
+/* 80310604 0030C264 48 00 01 8C */ b lbl_80310790
+lbl_80310608:
+/* 80310608 0030C268 3C 1A 00 01 */ addis r0, r26, 1
+/* 8031060C 0030C26C 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80310610 0030C270 41 82 00 28 */ beq lbl_80310638
+/* 80310614 0030C274 7F 03 C3 78 */ mr r3, r24
+/* 80310618 0030C278 7F 24 CB 78 */ mr r4, r25
+/* 8031061C 0030C27C 7F 45 D3 78 */ mr r5, r26
+/* 80310620 0030C280 39 01 00 08 */ addi r8, r1, 8
+/* 80310624 0030C284 38 C0 00 00 */ li r6, 0
+/* 80310628 0030C288 38 E0 00 01 */ li r7, 1
+/* 8031062C 0030C28C 4B FF E9 99 */ bl VFiPFFAT_WriteClusterPage
+/* 80310630 0030C290 3B 5A 00 01 */ addi r26, r26, 1
+/* 80310634 0030C294 48 00 00 78 */ b lbl_803106AC
+lbl_80310638:
+/* 80310638 0030C298 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 8031063C 0030C29C 2C 00 00 01 */ cmpwi r0, 1
+/* 80310640 0030C2A0 41 82 00 38 */ beq lbl_80310678
+/* 80310644 0030C2A4 40 80 00 10 */ bge lbl_80310654
+/* 80310648 0030C2A8 2C 00 00 00 */ cmpwi r0, 0
+/* 8031064C 0030C2AC 40 80 00 14 */ bge lbl_80310660
+/* 80310650 0030C2B0 48 00 00 58 */ b lbl_803106A8
+lbl_80310654:
+/* 80310654 0030C2B4 2C 00 00 03 */ cmpwi r0, 3
+/* 80310658 0030C2B8 40 80 00 50 */ bge lbl_803106A8
+/* 8031065C 0030C2BC 48 00 00 34 */ b lbl_80310690
+lbl_80310660:
+/* 80310660 0030C2C0 7F E3 FB 78 */ mr r3, r31
+/* 80310664 0030C2C4 57 24 04 3E */ clrlwi r4, r25, 0x10
+/* 80310668 0030C2C8 38 C1 00 08 */ addi r6, r1, 8
+/* 8031066C 0030C2CC 38 A0 00 00 */ li r5, 0
+/* 80310670 0030C2D0 48 00 11 5D */ bl VFiPFFAT12_WriteFATEntryPage
+/* 80310674 0030C2D4 48 00 00 38 */ b lbl_803106AC
+lbl_80310678:
+/* 80310678 0030C2D8 7F E3 FB 78 */ mr r3, r31
+/* 8031067C 0030C2DC 7F 24 CB 78 */ mr r4, r25
+/* 80310680 0030C2E0 38 C1 00 08 */ addi r6, r1, 8
+/* 80310684 0030C2E4 38 A0 00 00 */ li r5, 0
+/* 80310688 0030C2E8 48 00 19 89 */ bl VFiPFFAT16_WriteFATEntryPage
+/* 8031068C 0030C2EC 48 00 00 20 */ b lbl_803106AC
+lbl_80310690:
+/* 80310690 0030C2F0 7F E3 FB 78 */ mr r3, r31
+/* 80310694 0030C2F4 7F 24 CB 78 */ mr r4, r25
+/* 80310698 0030C2F8 38 C1 00 08 */ addi r6, r1, 8
+/* 8031069C 0030C2FC 38 A0 00 00 */ li r5, 0
+/* 803106A0 0030C300 48 00 1F 91 */ bl VFiPFFAT32_WriteFATEntryPage
+/* 803106A4 0030C304 48 00 00 08 */ b lbl_803106AC
+lbl_803106A8:
+/* 803106A8 0030C308 38 60 00 0F */ li r3, 0xf
+lbl_803106AC:
+/* 803106AC 0030C30C 2C 03 00 00 */ cmpwi r3, 0
+/* 803106B0 0030C310 41 82 00 08 */ beq lbl_803106B8
+/* 803106B4 0030C314 48 00 00 DC */ b lbl_80310790
+lbl_803106B8:
+/* 803106B8 0030C318 2C 1B 00 00 */ cmpwi r27, 0
+/* 803106BC 0030C31C 41 82 00 20 */ beq lbl_803106DC
+/* 803106C0 0030C320 2C 1D 00 00 */ cmpwi r29, 0
+/* 803106C4 0030C324 41 82 00 18 */ beq lbl_803106DC
+/* 803106C8 0030C328 7C 1D E0 10 */ subfc r0, r29, r28
+/* 803106CC 0030C32C 7C 7D 01 94 */ addze r3, r29
+/* 803106D0 0030C330 7C 1C E8 50 */ subf r0, r28, r29
+/* 803106D4 0030C334 7C 63 E8 50 */ subf r3, r3, r29
+/* 803106D8 0030C338 7C 1D 18 78 */ andc r29, r0, r3
+lbl_803106DC:
+/* 803106DC 0030C33C 80 7F 00 38 */ lwz r3, 0x38(r31)
+/* 803106E0 0030C340 3C 03 00 01 */ addis r0, r3, 1
+/* 803106E4 0030C344 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803106E8 0030C348 41 82 00 0C */ beq lbl_803106F4
+/* 803106EC 0030C34C 38 03 00 01 */ addi r0, r3, 1
+/* 803106F0 0030C350 90 1F 00 38 */ stw r0, 0x38(r31)
+lbl_803106F4:
+/* 803106F4 0030C354 83 21 00 0C */ lwz r25, 0xc(r1)
+lbl_803106F8:
+/* 803106F8 0030C358 7C 19 F0 40 */ cmplw r25, r30
+/* 803106FC 0030C35C 41 80 FE 08 */ blt lbl_80310504
+lbl_80310700:
+/* 80310700 0030C360 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310704 0030C364 38 60 00 00 */ li r3, 0
+/* 80310708 0030C368 A0 04 00 00 */ lhz r0, 0(r4)
+/* 8031070C 0030C36C 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 80310710 0030C370 2C 00 00 02 */ cmpwi r0, 2
+/* 80310714 0030C374 40 82 00 0C */ bne lbl_80310720
+/* 80310718 0030C378 7F E3 FB 78 */ mr r3, r31
+/* 8031071C 0030C37C 4B FF A2 61 */ bl VFiPFCACHE_WriteFATPage
+lbl_80310720:
+/* 80310720 0030C380 2C 03 00 00 */ cmpwi r3, 0
+/* 80310724 0030C384 41 82 00 08 */ beq lbl_8031072C
+/* 80310728 0030C388 48 00 00 68 */ b lbl_80310790
+lbl_8031072C:
+/* 8031072C 0030C38C 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80310730 0030C390 2C 80 00 02 */ cmpwi cr1, r0, 2
+/* 80310734 0030C394 40 86 00 58 */ bne cr1, lbl_8031078C
+/* 80310738 0030C398 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 8031073C 0030C39C 54 03 07 BD */ rlwinm. r3, r0, 0, 0x1e, 0x1e
+/* 80310740 0030C3A0 41 82 00 4C */ beq lbl_8031078C
+/* 80310744 0030C3A4 38 60 00 00 */ li r3, 0
+/* 80310748 0030C3A8 41 86 00 0C */ beq cr1, lbl_80310754
+/* 8031074C 0030C3AC 38 60 00 0C */ li r3, 0xc
+/* 80310750 0030C3B0 48 00 00 20 */ b lbl_80310770
+lbl_80310754:
+/* 80310754 0030C3B4 40 82 00 0C */ bne lbl_80310760
+/* 80310758 0030C3B8 38 60 00 24 */ li r3, 0x24
+/* 8031075C 0030C3BC 48 00 00 14 */ b lbl_80310770
+lbl_80310760:
+/* 80310760 0030C3C0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
+/* 80310764 0030C3C4 41 82 00 0C */ beq lbl_80310770
+/* 80310768 0030C3C8 7F E3 FB 78 */ mr r3, r31
+/* 8031076C 0030C3CC 4B FF 54 31 */ bl VFiPFDRV_StoreFreeCountToFSINFO
+lbl_80310770:
+/* 80310770 0030C3D0 2C 03 00 00 */ cmpwi r3, 0
+/* 80310774 0030C3D4 41 82 00 18 */ beq lbl_8031078C
+/* 80310778 0030C3D8 38 00 FF FF */ li r0, -1
+/* 8031077C 0030C3DC 90 1F 00 38 */ stw r0, 0x38(r31)
+/* 80310780 0030C3E0 A0 1F 18 7C */ lhz r0, 0x187c(r31)
+/* 80310784 0030C3E4 54 00 07 B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c
+/* 80310788 0030C3E8 B0 1F 18 7C */ sth r0, 0x187c(r31)
+lbl_8031078C:
+/* 8031078C 0030C3EC 38 60 00 00 */ li r3, 0
+lbl_80310790:
+/* 80310790 0030C3F0 39 61 00 40 */ addi r11, r1, 0x40
+/* 80310794 0030C3F4 4B EB 69 D1 */ bl _restgpr_23
+/* 80310798 0030C3F8 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 8031079C 0030C3FC 7C 08 03 A6 */ mtlr r0
+/* 803107A0 0030C400 38 21 00 40 */ addi r1, r1, 0x40
+/* 803107A4 0030C404 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetBeforeChain
+VFiPFFAT_GetBeforeChain:
+/* 803107A8 0030C408 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803107AC 0030C40C 7C 08 02 A6 */ mflr r0
+/* 803107B0 0030C410 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803107B4 0030C414 39 61 00 30 */ addi r11, r1, 0x30
+/* 803107B8 0030C418 4B EB 69 71 */ bl _savegpr_27
+/* 803107BC 0030C41C 2C 03 00 00 */ cmpwi r3, 0
+/* 803107C0 0030C420 7C 7C 1B 78 */ mr r28, r3
+/* 803107C4 0030C424 7C 9D 23 78 */ mr r29, r4
+/* 803107C8 0030C428 7C BE 2B 78 */ mr r30, r5
+/* 803107CC 0030C42C 7C DF 33 78 */ mr r31, r6
+/* 803107D0 0030C430 40 82 00 14 */ bne lbl_803107E4
+/* 803107D4 0030C434 38 00 FF FF */ li r0, -1
+/* 803107D8 0030C438 38 60 00 0A */ li r3, 0xa
+/* 803107DC 0030C43C 90 06 00 00 */ stw r0, 0(r6)
+/* 803107E0 0030C440 48 00 01 48 */ b lbl_80310928
+lbl_803107E4:
+/* 803107E4 0030C444 28 04 00 02 */ cmplwi r4, 2
+/* 803107E8 0030C448 41 80 00 14 */ blt lbl_803107FC
+/* 803107EC 0030C44C 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 803107F0 0030C450 38 05 00 02 */ addi r0, r5, 2
+/* 803107F4 0030C454 7C 04 00 40 */ cmplw r4, r0
+/* 803107F8 0030C458 41 80 00 14 */ blt lbl_8031080C
+lbl_803107FC:
+/* 803107FC 0030C45C 38 00 FF FF */ li r0, -1
+/* 80310800 0030C460 38 60 00 0A */ li r3, 0xa
+/* 80310804 0030C464 90 06 00 00 */ stw r0, 0(r6)
+/* 80310808 0030C468 48 00 01 20 */ b lbl_80310928
+lbl_8031080C:
+/* 8031080C 0030C46C 80 83 00 1C */ lwz r4, 0x1c(r3)
+/* 80310810 0030C470 3D 00 80 40 */ lis r8, lbl_803FE280@ha
+/* 80310814 0030C474 38 00 FF FF */ li r0, -1
+/* 80310818 0030C478 7F A5 EB 78 */ mr r5, r29
+/* 8031081C 0030C47C 1C E4 00 14 */ mulli r7, r4, 0x14
+/* 80310820 0030C480 39 08 E2 80 */ addi r8, r8, lbl_803FE280@l
+/* 80310824 0030C484 90 06 00 00 */ stw r0, 0(r6)
+/* 80310828 0030C488 38 81 00 08 */ addi r4, r1, 8
+/* 8031082C 0030C48C 7C C8 3A 14 */ add r6, r8, r7
+/* 80310830 0030C490 83 66 00 04 */ lwz r27, 4(r6)
+/* 80310834 0030C494 4B FF DD 05 */ bl VFiPFFAT_ReadFATSector
+/* 80310838 0030C498 2C 03 00 00 */ cmpwi r3, 0
+/* 8031083C 0030C49C 41 82 00 08 */ beq lbl_80310844
+/* 80310840 0030C4A0 48 00 00 E8 */ b lbl_80310928
+lbl_80310844:
+/* 80310844 0030C4A4 80 61 00 08 */ lwz r3, 8(r1)
+/* 80310848 0030C4A8 38 00 00 00 */ li r0, 0
+/* 8031084C 0030C4AC B0 03 00 02 */ sth r0, 2(r3)
+/* 80310850 0030C4B0 48 00 00 CC */ b lbl_8031091C
+lbl_80310854:
+/* 80310854 0030C4B4 80 1C 00 1C */ lwz r0, 0x1c(r28)
+/* 80310858 0030C4B8 2C 00 00 01 */ cmpwi r0, 1
+/* 8031085C 0030C4BC 41 82 00 38 */ beq lbl_80310894
+/* 80310860 0030C4C0 40 80 00 10 */ bge lbl_80310870
+/* 80310864 0030C4C4 2C 00 00 00 */ cmpwi r0, 0
+/* 80310868 0030C4C8 40 80 00 14 */ bge lbl_8031087C
+/* 8031086C 0030C4CC 48 00 00 58 */ b lbl_803108C4
+lbl_80310870:
+/* 80310870 0030C4D0 2C 00 00 03 */ cmpwi r0, 3
+/* 80310874 0030C4D4 40 80 00 50 */ bge lbl_803108C4
+/* 80310878 0030C4D8 48 00 00 34 */ b lbl_803108AC
+lbl_8031087C:
+/* 8031087C 0030C4DC 7F 83 E3 78 */ mr r3, r28
+/* 80310880 0030C4E0 57 A4 04 3E */ clrlwi r4, r29, 0x10
+/* 80310884 0030C4E4 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80310888 0030C4E8 38 C1 00 08 */ addi r6, r1, 8
+/* 8031088C 0030C4EC 48 00 0A C9 */ bl VFiPFFAT12_ReadFATEntryPage
+/* 80310890 0030C4F0 48 00 00 38 */ b lbl_803108C8
+lbl_80310894:
+/* 80310894 0030C4F4 7F 83 E3 78 */ mr r3, r28
+/* 80310898 0030C4F8 7F A4 EB 78 */ mr r4, r29
+/* 8031089C 0030C4FC 38 A1 00 0C */ addi r5, r1, 0xc
+/* 803108A0 0030C500 38 C1 00 08 */ addi r6, r1, 8
+/* 803108A4 0030C504 48 00 15 19 */ bl VFiPFFAT16_ReadFATEntryPage
+/* 803108A8 0030C508 48 00 00 20 */ b lbl_803108C8
+lbl_803108AC:
+/* 803108AC 0030C50C 7F 83 E3 78 */ mr r3, r28
+/* 803108B0 0030C510 7F A4 EB 78 */ mr r4, r29
+/* 803108B4 0030C514 38 A1 00 0C */ addi r5, r1, 0xc
+/* 803108B8 0030C518 38 C1 00 08 */ addi r6, r1, 8
+/* 803108BC 0030C51C 48 00 1A 89 */ bl VFiPFFAT32_ReadFATEntryPage
+/* 803108C0 0030C520 48 00 00 08 */ b lbl_803108C8
+lbl_803108C4:
+/* 803108C4 0030C524 38 60 00 0F */ li r3, 0xf
+lbl_803108C8:
+/* 803108C8 0030C528 2C 03 00 00 */ cmpwi r3, 0
+/* 803108CC 0030C52C 41 82 00 08 */ beq lbl_803108D4
+/* 803108D0 0030C530 48 00 00 58 */ b lbl_80310928
+lbl_803108D4:
+/* 803108D4 0030C534 80 01 00 0C */ lwz r0, 0xc(r1)
+/* 803108D8 0030C538 7C 1E 00 40 */ cmplw r30, r0
+/* 803108DC 0030C53C 40 82 00 10 */ bne lbl_803108EC
+/* 803108E0 0030C540 93 BF 00 00 */ stw r29, 0(r31)
+/* 803108E4 0030C544 38 60 00 00 */ li r3, 0
+/* 803108E8 0030C548 48 00 00 40 */ b lbl_80310928
+lbl_803108EC:
+/* 803108EC 0030C54C 3B BD FF FF */ addi r29, r29, -1
+/* 803108F0 0030C550 28 1D 00 02 */ cmplwi r29, 2
+/* 803108F4 0030C554 41 80 00 14 */ blt lbl_80310908
+/* 803108F8 0030C558 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 803108FC 0030C55C 38 03 00 02 */ addi r0, r3, 2
+/* 80310900 0030C560 7C 1D 00 40 */ cmplw r29, r0
+/* 80310904 0030C564 41 80 00 18 */ blt lbl_8031091C
+lbl_80310908:
+/* 80310908 0030C568 7C 1D D8 40 */ cmplw r29, r27
+/* 8031090C 0030C56C 40 80 00 10 */ bge lbl_8031091C
+/* 80310910 0030C570 93 DF 00 00 */ stw r30, 0(r31)
+/* 80310914 0030C574 38 60 00 00 */ li r3, 0
+/* 80310918 0030C578 48 00 00 10 */ b lbl_80310928
+lbl_8031091C:
+/* 8031091C 0030C57C 7C 1D D8 40 */ cmplw r29, r27
+/* 80310920 0030C580 41 80 FF 34 */ blt lbl_80310854
+/* 80310924 0030C584 38 60 00 0D */ li r3, 0xd
+lbl_80310928:
+/* 80310928 0030C588 39 61 00 30 */ addi r11, r1, 0x30
+/* 8031092C 0030C58C 4B EB 68 49 */ bl _restgpr_27
+/* 80310930 0030C590 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80310934 0030C594 7C 08 03 A6 */ mtlr r0
+/* 80310938 0030C598 38 21 00 30 */ addi r1, r1, 0x30
+/* 8031093C 0030C59C 4E 80 00 20 */ blr
+
+.global VFiPFFAT_InitFATRegion
+VFiPFFAT_InitFATRegion:
+/* 80310940 0030C5A0 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80310944 0030C5A4 7C 08 02 A6 */ mflr r0
+/* 80310948 0030C5A8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031094C 0030C5AC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80310950 0030C5B0 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80310954 0030C5B4 7C 7F 1B 78 */ mr r31, r3
+/* 80310958 0030C5B8 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8031095C 0030C5BC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80310960 0030C5C0 40 82 00 0C */ bne lbl_8031096C
+/* 80310964 0030C5C4 38 60 00 0A */ li r3, 0xa
+/* 80310968 0030C5C8 48 00 02 40 */ b lbl_80310BA8
+lbl_8031096C:
+/* 8031096C 0030C5CC 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80310970 0030C5D0 2C 00 00 00 */ cmpwi r0, 0
+/* 80310974 0030C5D4 41 82 00 1C */ beq lbl_80310990
+/* 80310978 0030C5D8 2C 00 00 01 */ cmpwi r0, 1
+/* 8031097C 0030C5DC 41 82 00 14 */ beq lbl_80310990
+/* 80310980 0030C5E0 2C 00 00 02 */ cmpwi r0, 2
+/* 80310984 0030C5E4 41 82 00 0C */ beq lbl_80310990
+/* 80310988 0030C5E8 38 60 00 0F */ li r3, 0xf
+/* 8031098C 0030C5EC 48 00 02 1C */ b lbl_80310BA8
+lbl_80310990:
+/* 80310990 0030C5F0 7F E3 FB 78 */ mr r3, r31
+/* 80310994 0030C5F4 38 A1 00 08 */ addi r5, r1, 8
+/* 80310998 0030C5F8 38 80 FF FF */ li r4, -1
+/* 8031099C 0030C5FC 4B FF 9C A9 */ bl VFiPFCACHE_AllocateFATPage
+/* 803109A0 0030C600 2C 03 00 00 */ cmpwi r3, 0
+/* 803109A4 0030C604 41 82 00 08 */ beq lbl_803109AC
+/* 803109A8 0030C608 48 00 02 00 */ b lbl_80310BA8
+lbl_803109AC:
+/* 803109AC 0030C60C 80 61 00 08 */ lwz r3, 8(r1)
+/* 803109B0 0030C610 38 80 00 00 */ li r4, 0
+/* 803109B4 0030C614 A0 BF 00 00 */ lhz r5, 0(r31)
+/* 803109B8 0030C618 80 63 00 08 */ lwz r3, 8(r3)
+/* 803109BC 0030C61C 4B FF 46 19 */ bl VFipf_memset
+/* 803109C0 0030C620 A3 BF 00 02 */ lhz r29, 2(r31)
+/* 803109C4 0030C624 48 00 00 3C */ b lbl_80310A00
+lbl_803109C8:
+/* 803109C8 0030C628 80 81 00 08 */ lwz r4, 8(r1)
+/* 803109CC 0030C62C 7F E3 FB 78 */ mr r3, r31
+/* 803109D0 0030C630 7F A5 EB 78 */ mr r5, r29
+/* 803109D4 0030C634 80 84 00 08 */ lwz r4, 8(r4)
+/* 803109D8 0030C638 4B FF A0 1D */ bl VFiPFCACHE_WriteFATSectorAndFreeIfNeeded
+/* 803109DC 0030C63C 2C 03 00 00 */ cmpwi r3, 0
+/* 803109E0 0030C640 7C 7E 1B 78 */ mr r30, r3
+/* 803109E4 0030C644 41 82 00 18 */ beq lbl_803109FC
+/* 803109E8 0030C648 80 81 00 08 */ lwz r4, 8(r1)
+/* 803109EC 0030C64C 7F E3 FB 78 */ mr r3, r31
+/* 803109F0 0030C650 4B FF 9D 3D */ bl VFiPFCACHE_FreeFATPage
+/* 803109F4 0030C654 7F C3 F3 78 */ mr r3, r30
+/* 803109F8 0030C658 48 00 01 B0 */ b lbl_80310BA8
+lbl_803109FC:
+/* 803109FC 0030C65C 3B BD 00 01 */ addi r29, r29, 1
+lbl_80310A00:
+/* 80310A00 0030C660 80 1F 00 2C */ lwz r0, 0x2c(r31)
+/* 80310A04 0030C664 7C 1D 00 40 */ cmplw r29, r0
+/* 80310A08 0030C668 41 80 FF C0 */ blt lbl_803109C8
+/* 80310A0C 0030C66C 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310A10 0030C670 7F E3 FB 78 */ mr r3, r31
+/* 80310A14 0030C674 4B FF 9D 19 */ bl VFiPFCACHE_FreeFATPage
+/* 80310A18 0030C678 80 DF 00 1C */ lwz r6, 0x1c(r31)
+/* 80310A1C 0030C67C 3C 60 80 40 */ lis r3, lbl_803FE280@ha
+/* 80310A20 0030C680 38 63 E2 80 */ addi r3, r3, lbl_803FE280@l
+/* 80310A24 0030C684 88 9F 00 1A */ lbz r4, 0x1a(r31)
+/* 80310A28 0030C688 1C 06 00 14 */ mulli r0, r6, 0x14
+/* 80310A2C 0030C68C 2C 06 00 01 */ cmpwi r6, 1
+/* 80310A30 0030C690 7C 63 02 14 */ add r3, r3, r0
+/* 80310A34 0030C694 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80310A38 0030C698 7C 85 03 78 */ or r5, r4, r0
+/* 80310A3C 0030C69C 41 82 00 44 */ beq lbl_80310A80
+/* 80310A40 0030C6A0 40 80 00 10 */ bge lbl_80310A50
+/* 80310A44 0030C6A4 2C 06 00 00 */ cmpwi r6, 0
+/* 80310A48 0030C6A8 40 80 00 14 */ bge lbl_80310A5C
+/* 80310A4C 0030C6AC 48 00 00 7C */ b lbl_80310AC8
+lbl_80310A50:
+/* 80310A50 0030C6B0 2C 06 00 03 */ cmpwi r6, 3
+/* 80310A54 0030C6B4 40 80 00 74 */ bge lbl_80310AC8
+/* 80310A58 0030C6B8 48 00 00 48 */ b lbl_80310AA0
+lbl_80310A5C:
+/* 80310A5C 0030C6BC 28 05 0F FF */ cmplwi r5, 0xfff
+/* 80310A60 0030C6C0 40 81 00 0C */ ble lbl_80310A6C
+/* 80310A64 0030C6C4 38 60 00 10 */ li r3, 0x10
+/* 80310A68 0030C6C8 48 00 00 64 */ b lbl_80310ACC
+lbl_80310A6C:
+/* 80310A6C 0030C6CC 7F E3 FB 78 */ mr r3, r31
+/* 80310A70 0030C6D0 54 A5 04 3E */ clrlwi r5, r5, 0x10
+/* 80310A74 0030C6D4 38 80 00 00 */ li r4, 0
+/* 80310A78 0030C6D8 48 00 0B B1 */ bl VFiPFFAT12_WriteFATEntry
+/* 80310A7C 0030C6DC 48 00 00 50 */ b lbl_80310ACC
+lbl_80310A80:
+/* 80310A80 0030C6E0 28 05 FF FF */ cmplwi r5, 0xffff
+/* 80310A84 0030C6E4 40 81 00 0C */ ble lbl_80310A90
+/* 80310A88 0030C6E8 38 60 00 10 */ li r3, 0x10
+/* 80310A8C 0030C6EC 48 00 00 40 */ b lbl_80310ACC
+lbl_80310A90:
+/* 80310A90 0030C6F0 7F E3 FB 78 */ mr r3, r31
+/* 80310A94 0030C6F4 38 80 00 00 */ li r4, 0
+/* 80310A98 0030C6F8 48 00 14 E1 */ bl VFiPFFAT16_WriteFATEntry
+/* 80310A9C 0030C6FC 48 00 00 30 */ b lbl_80310ACC
+lbl_80310AA0:
+/* 80310AA0 0030C700 3C 60 10 00 */ lis r3, 0x0FFFFFFF@ha
+/* 80310AA4 0030C704 38 03 FF FF */ addi r0, r3, 0x0FFFFFFF@l
+/* 80310AA8 0030C708 7C 05 00 40 */ cmplw r5, r0
+/* 80310AAC 0030C70C 40 81 00 0C */ ble lbl_80310AB8
+/* 80310AB0 0030C710 38 60 00 10 */ li r3, 0x10
+/* 80310AB4 0030C714 48 00 00 18 */ b lbl_80310ACC
+lbl_80310AB8:
+/* 80310AB8 0030C718 7F E3 FB 78 */ mr r3, r31
+/* 80310ABC 0030C71C 38 80 00 00 */ li r4, 0
+/* 80310AC0 0030C720 48 00 1A 51 */ bl VFiPFFAT32_WriteFATEntry
+/* 80310AC4 0030C724 48 00 00 08 */ b lbl_80310ACC
+lbl_80310AC8:
+/* 80310AC8 0030C728 38 60 00 0F */ li r3, 0xf
+lbl_80310ACC:
+/* 80310ACC 0030C72C 2C 03 00 00 */ cmpwi r3, 0
+/* 80310AD0 0030C730 41 82 00 08 */ beq lbl_80310AD8
+/* 80310AD4 0030C734 48 00 00 D4 */ b lbl_80310BA8
+lbl_80310AD8:
+/* 80310AD8 0030C738 80 9F 00 1C */ lwz r4, 0x1c(r31)
+/* 80310ADC 0030C73C 3C 60 80 40 */ lis r3, lbl_803FE280@ha
+/* 80310AE0 0030C740 38 63 E2 80 */ addi r3, r3, lbl_803FE280@l
+/* 80310AE4 0030C744 1C 04 00 14 */ mulli r0, r4, 0x14
+/* 80310AE8 0030C748 2C 04 00 01 */ cmpwi r4, 1
+/* 80310AEC 0030C74C 7C 63 02 14 */ add r3, r3, r0
+/* 80310AF0 0030C750 80 A3 00 10 */ lwz r5, 0x10(r3)
+/* 80310AF4 0030C754 41 82 00 44 */ beq lbl_80310B38
+/* 80310AF8 0030C758 40 80 00 10 */ bge lbl_80310B08
+/* 80310AFC 0030C75C 2C 04 00 00 */ cmpwi r4, 0
+/* 80310B00 0030C760 40 80 00 14 */ bge lbl_80310B14
+/* 80310B04 0030C764 48 00 00 7C */ b lbl_80310B80
+lbl_80310B08:
+/* 80310B08 0030C768 2C 04 00 03 */ cmpwi r4, 3
+/* 80310B0C 0030C76C 40 80 00 74 */ bge lbl_80310B80
+/* 80310B10 0030C770 48 00 00 48 */ b lbl_80310B58
+lbl_80310B14:
+/* 80310B14 0030C774 28 05 0F FF */ cmplwi r5, 0xfff
+/* 80310B18 0030C778 40 81 00 0C */ ble lbl_80310B24
+/* 80310B1C 0030C77C 38 60 00 10 */ li r3, 0x10
+/* 80310B20 0030C780 48 00 00 64 */ b lbl_80310B84
+lbl_80310B24:
+/* 80310B24 0030C784 7F E3 FB 78 */ mr r3, r31
+/* 80310B28 0030C788 54 A5 04 3E */ clrlwi r5, r5, 0x10
+/* 80310B2C 0030C78C 38 80 00 01 */ li r4, 1
+/* 80310B30 0030C790 48 00 0A F9 */ bl VFiPFFAT12_WriteFATEntry
+/* 80310B34 0030C794 48 00 00 50 */ b lbl_80310B84
+lbl_80310B38:
+/* 80310B38 0030C798 28 05 FF FF */ cmplwi r5, 0xffff
+/* 80310B3C 0030C79C 40 81 00 0C */ ble lbl_80310B48
+/* 80310B40 0030C7A0 38 60 00 10 */ li r3, 0x10
+/* 80310B44 0030C7A4 48 00 00 40 */ b lbl_80310B84
+lbl_80310B48:
+/* 80310B48 0030C7A8 7F E3 FB 78 */ mr r3, r31
+/* 80310B4C 0030C7AC 38 80 00 01 */ li r4, 1
+/* 80310B50 0030C7B0 48 00 14 29 */ bl VFiPFFAT16_WriteFATEntry
+/* 80310B54 0030C7B4 48 00 00 30 */ b lbl_80310B84
+lbl_80310B58:
+/* 80310B58 0030C7B8 3C 60 10 00 */ lis r3, 0x0FFFFFFF@ha
+/* 80310B5C 0030C7BC 38 03 FF FF */ addi r0, r3, 0x0FFFFFFF@l
+/* 80310B60 0030C7C0 7C 05 00 40 */ cmplw r5, r0
+/* 80310B64 0030C7C4 40 81 00 0C */ ble lbl_80310B70
+/* 80310B68 0030C7C8 38 60 00 10 */ li r3, 0x10
+/* 80310B6C 0030C7CC 48 00 00 18 */ b lbl_80310B84
+lbl_80310B70:
+/* 80310B70 0030C7D0 7F E3 FB 78 */ mr r3, r31
+/* 80310B74 0030C7D4 38 80 00 01 */ li r4, 1
+/* 80310B78 0030C7D8 48 00 19 99 */ bl VFiPFFAT32_WriteFATEntry
+/* 80310B7C 0030C7DC 48 00 00 08 */ b lbl_80310B84
+lbl_80310B80:
+/* 80310B80 0030C7E0 38 60 00 0F */ li r3, 0xf
+lbl_80310B84:
+/* 80310B84 0030C7E4 2C 03 00 00 */ cmpwi r3, 0
+/* 80310B88 0030C7E8 41 82 00 08 */ beq lbl_80310B90
+/* 80310B8C 0030C7EC 48 00 00 1C */ b lbl_80310BA8
+lbl_80310B90:
+/* 80310B90 0030C7F0 7F E3 FB 78 */ mr r3, r31
+/* 80310B94 0030C7F4 4B FF 9F 1D */ bl VFiPFCACHE_FlushFATCache
+/* 80310B98 0030C7F8 7C 03 00 D0 */ neg r0, r3
+/* 80310B9C 0030C7FC 7C 00 1B 78 */ or r0, r0, r3
+/* 80310BA0 0030C800 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 80310BA4 0030C804 7C 63 00 38 */ and r3, r3, r0
+lbl_80310BA8:
+/* 80310BA8 0030C808 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80310BAC 0030C80C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80310BB0 0030C810 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80310BB4 0030C814 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80310BB8 0030C818 7C 08 03 A6 */ mtlr r0
+/* 80310BBC 0030C81C 38 21 00 20 */ addi r1, r1, 0x20
+/* 80310BC0 0030C820 4E 80 00 20 */ blr
+
+.global VFiPFFAT_MakeRootDir
+VFiPFFAT_MakeRootDir:
+/* 80310BC4 0030C824 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80310BC8 0030C828 7C 08 02 A6 */ mflr r0
+/* 80310BCC 0030C82C 3C A0 80 40 */ lis r5, lbl_803FE280@ha
+/* 80310BD0 0030C830 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80310BD4 0030C834 38 A5 E2 80 */ addi r5, r5, lbl_803FE280@l
+/* 80310BD8 0030C838 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80310BDC 0030C83C 7C 7F 1B 78 */ mr r31, r3
+/* 80310BE0 0030C840 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80310BE4 0030C844 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80310BE8 0030C848 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80310BEC 0030C84C 80 C3 00 1C */ lwz r6, 0x1c(r3)
+/* 80310BF0 0030C850 80 83 00 10 */ lwz r4, 0x10(r3)
+/* 80310BF4 0030C854 1C 06 00 14 */ mulli r0, r6, 0x14
+/* 80310BF8 0030C858 2C 06 00 01 */ cmpwi r6, 1
+/* 80310BFC 0030C85C 7C A5 02 14 */ add r5, r5, r0
+/* 80310C00 0030C860 80 A5 00 08 */ lwz r5, 8(r5)
+/* 80310C04 0030C864 41 82 00 40 */ beq lbl_80310C44
+/* 80310C08 0030C868 40 80 00 10 */ bge lbl_80310C18
+/* 80310C0C 0030C86C 2C 06 00 00 */ cmpwi r6, 0
+/* 80310C10 0030C870 40 80 00 14 */ bge lbl_80310C24
+/* 80310C14 0030C874 48 00 00 68 */ b lbl_80310C7C
+lbl_80310C18:
+/* 80310C18 0030C878 2C 06 00 03 */ cmpwi r6, 3
+/* 80310C1C 0030C87C 40 80 00 60 */ bge lbl_80310C7C
+/* 80310C20 0030C880 48 00 00 3C */ b lbl_80310C5C
+lbl_80310C24:
+/* 80310C24 0030C884 28 05 0F FF */ cmplwi r5, 0xfff
+/* 80310C28 0030C888 40 81 00 0C */ ble lbl_80310C34
+/* 80310C2C 0030C88C 38 60 00 10 */ li r3, 0x10
+/* 80310C30 0030C890 48 00 00 50 */ b lbl_80310C80
+lbl_80310C34:
+/* 80310C34 0030C894 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 80310C38 0030C898 54 A5 04 3E */ clrlwi r5, r5, 0x10
+/* 80310C3C 0030C89C 48 00 09 ED */ bl VFiPFFAT12_WriteFATEntry
+/* 80310C40 0030C8A0 48 00 00 40 */ b lbl_80310C80
+lbl_80310C44:
+/* 80310C44 0030C8A4 28 05 FF FF */ cmplwi r5, 0xffff
+/* 80310C48 0030C8A8 40 81 00 0C */ ble lbl_80310C54
+/* 80310C4C 0030C8AC 38 60 00 10 */ li r3, 0x10
+/* 80310C50 0030C8B0 48 00 00 30 */ b lbl_80310C80
+lbl_80310C54:
+/* 80310C54 0030C8B4 48 00 13 25 */ bl VFiPFFAT16_WriteFATEntry
+/* 80310C58 0030C8B8 48 00 00 28 */ b lbl_80310C80
+lbl_80310C5C:
+/* 80310C5C 0030C8BC 3C C0 10 00 */ lis r6, 0x0FFFFFFF@ha
+/* 80310C60 0030C8C0 38 06 FF FF */ addi r0, r6, 0x0FFFFFFF@l
+/* 80310C64 0030C8C4 7C 05 00 40 */ cmplw r5, r0
+/* 80310C68 0030C8C8 40 81 00 0C */ ble lbl_80310C74
+/* 80310C6C 0030C8CC 38 60 00 10 */ li r3, 0x10
+/* 80310C70 0030C8D0 48 00 00 10 */ b lbl_80310C80
+lbl_80310C74:
+/* 80310C74 0030C8D4 48 00 18 9D */ bl VFiPFFAT32_WriteFATEntry
+/* 80310C78 0030C8D8 48 00 00 08 */ b lbl_80310C80
+lbl_80310C7C:
+/* 80310C7C 0030C8DC 38 60 00 0F */ li r3, 0xf
+lbl_80310C80:
+/* 80310C80 0030C8E0 2C 03 00 00 */ cmpwi r3, 0
+/* 80310C84 0030C8E4 41 82 00 08 */ beq lbl_80310C8C
+/* 80310C88 0030C8E8 48 00 00 F0 */ b lbl_80310D78
+lbl_80310C8C:
+/* 80310C8C 0030C8EC 7F E3 FB 78 */ mr r3, r31
+/* 80310C90 0030C8F0 4B FF 9E 21 */ bl VFiPFCACHE_FlushFATCache
+/* 80310C94 0030C8F4 2C 03 00 00 */ cmpwi r3, 0
+/* 80310C98 0030C8F8 41 82 00 08 */ beq lbl_80310CA0
+/* 80310C9C 0030C8FC 48 00 00 DC */ b lbl_80310D78
+lbl_80310CA0:
+/* 80310CA0 0030C900 7F E3 FB 78 */ mr r3, r31
+/* 80310CA4 0030C904 38 A1 00 08 */ addi r5, r1, 8
+/* 80310CA8 0030C908 38 80 FF FF */ li r4, -1
+/* 80310CAC 0030C90C 4B FF 9A 0D */ bl VFiPFCACHE_AllocateDataPage
+/* 80310CB0 0030C910 2C 03 00 00 */ cmpwi r3, 0
+/* 80310CB4 0030C914 41 82 00 08 */ beq lbl_80310CBC
+/* 80310CB8 0030C918 48 00 00 C0 */ b lbl_80310D78
+lbl_80310CBC:
+/* 80310CBC 0030C91C 80 61 00 08 */ lwz r3, 8(r1)
+/* 80310CC0 0030C920 38 80 00 00 */ li r4, 0
+/* 80310CC4 0030C924 A0 BF 00 00 */ lhz r5, 0(r31)
+/* 80310CC8 0030C928 80 63 00 08 */ lwz r3, 8(r3)
+/* 80310CCC 0030C92C 4B FF 43 09 */ bl VFipf_memset
+/* 80310CD0 0030C930 80 7F 00 10 */ lwz r3, 0x10(r31)
+/* 80310CD4 0030C934 3B 80 00 00 */ li r28, 0
+/* 80310CD8 0030C938 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 80310CDC 0030C93C 38 63 FF FE */ addi r3, r3, -2
+/* 80310CE0 0030C940 80 9F 00 30 */ lwz r4, 0x30(r31)
+/* 80310CE4 0030C944 7C 60 00 30 */ slw r0, r3, r0
+/* 80310CE8 0030C948 7F A4 02 14 */ add r29, r4, r0
+/* 80310CEC 0030C94C 48 00 00 70 */ b lbl_80310D5C
+lbl_80310CF0:
+/* 80310CF0 0030C950 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310CF4 0030C954 7F E3 FB 78 */ mr r3, r31
+/* 80310CF8 0030C958 A0 FF 00 00 */ lhz r7, 0(r31)
+/* 80310CFC 0030C95C 7C BD E2 14 */ add r5, r29, r28
+/* 80310D00 0030C960 80 84 00 08 */ lwz r4, 8(r4)
+/* 80310D04 0030C964 39 01 00 0C */ addi r8, r1, 0xc
+/* 80310D08 0030C968 38 C0 00 00 */ li r6, 0
+/* 80310D0C 0030C96C 39 20 00 00 */ li r9, 0
+/* 80310D10 0030C970 48 00 80 D9 */ bl func_80318DE8
+/* 80310D14 0030C974 2C 03 00 00 */ cmpwi r3, 0
+/* 80310D18 0030C978 7C 7E 1B 78 */ mr r30, r3
+/* 80310D1C 0030C97C 41 82 00 18 */ beq lbl_80310D34
+/* 80310D20 0030C980 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310D24 0030C984 7F E3 FB 78 */ mr r3, r31
+/* 80310D28 0030C988 4B FF 9A 95 */ bl VFiPFCACHE_FreeDataPage
+/* 80310D2C 0030C98C 7F C3 F3 78 */ mr r3, r30
+/* 80310D30 0030C990 48 00 00 48 */ b lbl_80310D78
+lbl_80310D34:
+/* 80310D34 0030C994 80 61 00 0C */ lwz r3, 0xc(r1)
+/* 80310D38 0030C998 A0 1F 00 00 */ lhz r0, 0(r31)
+/* 80310D3C 0030C99C 7C 03 00 40 */ cmplw r3, r0
+/* 80310D40 0030C9A0 41 82 00 18 */ beq lbl_80310D58
+/* 80310D44 0030C9A4 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310D48 0030C9A8 7F E3 FB 78 */ mr r3, r31
+/* 80310D4C 0030C9AC 4B FF 9A 71 */ bl VFiPFCACHE_FreeDataPage
+/* 80310D50 0030C9B0 38 60 00 11 */ li r3, 0x11
+/* 80310D54 0030C9B4 48 00 00 24 */ b lbl_80310D78
+lbl_80310D58:
+/* 80310D58 0030C9B8 3B 9C 00 01 */ addi r28, r28, 1
+lbl_80310D5C:
+/* 80310D5C 0030C9BC 88 1F 00 06 */ lbz r0, 6(r31)
+/* 80310D60 0030C9C0 7C 1C 00 40 */ cmplw r28, r0
+/* 80310D64 0030C9C4 41 80 FF 8C */ blt lbl_80310CF0
+/* 80310D68 0030C9C8 80 81 00 08 */ lwz r4, 8(r1)
+/* 80310D6C 0030C9CC 7F E3 FB 78 */ mr r3, r31
+/* 80310D70 0030C9D0 4B FF 9A 4D */ bl VFiPFCACHE_FreeDataPage
+/* 80310D74 0030C9D4 38 60 00 00 */ li r3, 0
+lbl_80310D78:
+/* 80310D78 0030C9D8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80310D7C 0030C9DC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80310D80 0030C9E0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80310D84 0030C9E4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80310D88 0030C9E8 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 80310D8C 0030C9EC 7C 08 03 A6 */ mtlr r0
+/* 80310D90 0030C9F0 38 21 00 20 */ addi r1, r1, 0x20
+/* 80310D94 0030C9F4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_InitHint
+VFiPFFAT_InitHint:
+/* 80310D98 0030C9F8 38 00 00 00 */ li r0, 0
+/* 80310D9C 0030C9FC 90 03 00 00 */ stw r0, 0(r3)
+/* 80310DA0 0030CA00 90 03 00 04 */ stw r0, 4(r3)
+/* 80310DA4 0030CA04 90 03 00 08 */ stw r0, 8(r3)
+/* 80310DA8 0030CA08 4E 80 00 20 */ blr
+
+.global VFiPFFAT_TraceClustersChain
+VFiPFFAT_TraceClustersChain:
+/* 80310DAC 0030CA0C 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 80310DB0 0030CA10 7C 08 02 A6 */ mflr r0
+/* 80310DB4 0030CA14 90 01 00 44 */ stw r0, 0x44(r1)
+/* 80310DB8 0030CA18 39 61 00 40 */ addi r11, r1, 0x40
+/* 80310DBC 0030CA1C 4B EB 63 59 */ bl _savegpr_22
+/* 80310DC0 0030CA20 38 00 00 00 */ li r0, 0
+/* 80310DC4 0030CA24 7C 99 23 78 */ mr r25, r4
+/* 80310DC8 0030CA28 90 06 00 00 */ stw r0, 0(r6)
+/* 80310DCC 0030CA2C 2C 03 00 00 */ cmpwi r3, 0
+/* 80310DD0 0030CA30 7C 78 1B 78 */ mr r24, r3
+/* 80310DD4 0030CA34 7C DA 33 78 */ mr r26, r6
+/* 80310DD8 0030CA38 90 07 00 00 */ stw r0, 0(r7)
+/* 80310DDC 0030CA3C 7C FB 3B 78 */ mr r27, r7
+/* 80310DE0 0030CA40 7F 3E CB 78 */ mr r30, r25
+/* 80310DE4 0030CA44 40 82 00 0C */ bne lbl_80310DF0
+/* 80310DE8 0030CA48 38 60 00 0A */ li r3, 0xa
+/* 80310DEC 0030CA4C 48 00 01 E8 */ b lbl_80310FD4
+lbl_80310DF0:
+/* 80310DF0 0030CA50 81 23 00 30 */ lwz r9, 0x30(r3)
+/* 80310DF4 0030CA54 2C 09 00 00 */ cmpwi r9, 0
+/* 80310DF8 0030CA58 40 82 00 0C */ bne lbl_80310E04
+/* 80310DFC 0030CA5C 38 60 00 0A */ li r3, 0xa
+/* 80310E00 0030CA60 48 00 01 D4 */ b lbl_80310FD4
+lbl_80310E04:
+/* 80310E04 0030CA64 81 03 00 00 */ lwz r8, 0(r3)
+/* 80310E08 0030CA68 2C 08 00 00 */ cmpwi r8, 0
+/* 80310E0C 0030CA6C 40 82 00 0C */ bne lbl_80310E18
+/* 80310E10 0030CA70 38 60 00 0A */ li r3, 0xa
+/* 80310E14 0030CA74 48 00 01 C0 */ b lbl_80310FD4
+lbl_80310E18:
+/* 80310E18 0030CA78 80 09 00 08 */ lwz r0, 8(r9)
+/* 80310E1C 0030CA7C 7C 00 40 40 */ cmplw r0, r8
+/* 80310E20 0030CA80 40 81 00 0C */ ble lbl_80310E2C
+/* 80310E24 0030CA84 38 60 00 0A */ li r3, 0xa
+/* 80310E28 0030CA88 48 00 01 AC */ b lbl_80310FD4
+lbl_80310E2C:
+/* 80310E2C 0030CA8C 83 E3 00 34 */ lwz r31, 0x34(r3)
+/* 80310E30 0030CA90 88 1F 18 7A */ lbz r0, 0x187a(r31)
+/* 80310E34 0030CA94 7C 00 07 74 */ extsb r0, r0
+/* 80310E38 0030CA98 2C 00 00 41 */ cmpwi r0, 0x41
+/* 80310E3C 0030CA9C 41 80 00 0C */ blt lbl_80310E48
+/* 80310E40 0030CAA0 2C 00 00 5A */ cmpwi r0, 0x5a
+/* 80310E44 0030CAA4 40 81 00 0C */ ble lbl_80310E50
+lbl_80310E48:
+/* 80310E48 0030CAA8 38 60 00 23 */ li r3, 0x23
+/* 80310E4C 0030CAAC 48 00 01 88 */ b lbl_80310FD4
+lbl_80310E50:
+/* 80310E50 0030CAB0 2C 1F 00 00 */ cmpwi r31, 0
+/* 80310E54 0030CAB4 40 82 00 0C */ bne lbl_80310E60
+/* 80310E58 0030CAB8 38 60 00 0A */ li r3, 0xa
+/* 80310E5C 0030CABC 48 00 01 78 */ b lbl_80310FD4
+lbl_80310E60:
+/* 80310E60 0030CAC0 81 03 00 08 */ lwz r8, 8(r3)
+/* 80310E64 0030CAC4 81 08 00 00 */ lwz r8, 0(r8)
+/* 80310E68 0030CAC8 28 08 00 02 */ cmplwi r8, 2
+/* 80310E6C 0030CACC 40 80 00 0C */ bge lbl_80310E78
+/* 80310E70 0030CAD0 38 60 00 00 */ li r3, 0
+/* 80310E74 0030CAD4 48 00 01 60 */ b lbl_80310FD4
+lbl_80310E78:
+/* 80310E78 0030CAD8 28 04 00 02 */ cmplwi r4, 2
+/* 80310E7C 0030CADC 40 80 00 0C */ bge lbl_80310E88
+/* 80310E80 0030CAE0 38 60 00 00 */ li r3, 0
+/* 80310E84 0030CAE4 48 00 01 50 */ b lbl_80310FD4
+lbl_80310E88:
+/* 80310E88 0030CAE8 2C 05 00 00 */ cmpwi r5, 0
+/* 80310E8C 0030CAEC 40 82 00 0C */ bne lbl_80310E98
+/* 80310E90 0030CAF0 38 60 00 00 */ li r3, 0
+/* 80310E94 0030CAF4 48 00 01 40 */ b lbl_80310FD4
+lbl_80310E98:
+/* 80310E98 0030CAF8 3C 05 00 01 */ addis r0, r5, 1
+/* 80310E9C 0030CAFC 28 00 FF FF */ cmplwi r0, 0xffff
+/* 80310EA0 0030CB00 40 82 00 38 */ bne lbl_80310ED8
+/* 80310EA4 0030CB04 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80310EA8 0030CB08 2C 00 00 00 */ cmpwi r0, 0
+/* 80310EAC 0030CB0C 41 82 00 2C */ beq lbl_80310ED8
+/* 80310EB0 0030CB10 90 06 00 00 */ stw r0, 0(r6)
+/* 80310EB4 0030CB14 3C 80 80 40 */ lis r4, lbl_803FE280@ha
+/* 80310EB8 0030CB18 38 84 E2 80 */ addi r4, r4, lbl_803FE280@l
+/* 80310EBC 0030CB1C 38 60 00 00 */ li r3, 0
+/* 80310EC0 0030CB20 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80310EC4 0030CB24 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 80310EC8 0030CB28 7C 84 02 14 */ add r4, r4, r0
+/* 80310ECC 0030CB2C 80 04 00 08 */ lwz r0, 8(r4)
+/* 80310ED0 0030CB30 90 07 00 00 */ stw r0, 0(r7)
+/* 80310ED4 0030CB34 48 00 01 00 */ b lbl_80310FD4
+lbl_80310ED8:
+/* 80310ED8 0030CB38 A0 7F 00 00 */ lhz r3, 0(r31)
+/* 80310EDC 0030CB3C 88 1F 00 21 */ lbz r0, 0x21(r31)
+/* 80310EE0 0030CB40 7C 60 00 30 */ slw r0, r3, r0
+/* 80310EE4 0030CB44 7F 85 03 96 */ divwu r28, r5, r0
+/* 80310EE8 0030CB48 7C 1C 01 D6 */ mullw r0, r28, r0
+/* 80310EEC 0030CB4C 7C 00 28 51 */ subf. r0, r0, r5
+/* 80310EF0 0030CB50 41 82 00 08 */ beq lbl_80310EF8
+/* 80310EF4 0030CB54 3B 9C 00 01 */ addi r28, r28, 1
+lbl_80310EF8:
+/* 80310EF8 0030CB58 7C 08 20 40 */ cmplw r8, r4
+/* 80310EFC 0030CB5C 40 82 00 0C */ bne lbl_80310F08
+/* 80310F00 0030CB60 3B A0 00 01 */ li r29, 1
+/* 80310F04 0030CB64 48 00 00 0C */ b lbl_80310F10
+lbl_80310F08:
+/* 80310F08 0030CB68 80 69 00 00 */ lwz r3, 0(r9)
+/* 80310F0C 0030CB6C 3B A3 00 01 */ addi r29, r3, 1
+lbl_80310F10:
+/* 80310F10 0030CB70 38 60 FF FF */ li r3, -1
+/* 80310F14 0030CB74 38 00 00 01 */ li r0, 1
+/* 80310F18 0030CB78 90 61 00 10 */ stw r3, 0x10(r1)
+/* 80310F1C 0030CB7C 7F E3 FB 78 */ mr r3, r31
+/* 80310F20 0030CB80 7F 25 CB 78 */ mr r5, r25
+/* 80310F24 0030CB84 38 81 00 08 */ addi r4, r1, 8
+/* 80310F28 0030CB88 90 01 00 0C */ stw r0, 0xc(r1)
+/* 80310F2C 0030CB8C 4B FF D6 0D */ bl VFiPFFAT_ReadFATSector
+/* 80310F30 0030CB90 2C 03 00 00 */ cmpwi r3, 0
+/* 80310F34 0030CB94 41 82 00 08 */ beq lbl_80310F3C
+/* 80310F38 0030CB98 48 00 00 9C */ b lbl_80310FD4
+lbl_80310F3C:
+/* 80310F3C 0030CB9C 3E E0 80 40 */ lis r23, lbl_803FE280@ha
+/* 80310F40 0030CBA0 3A C0 00 00 */ li r22, 0
+/* 80310F44 0030CBA4 3A F7 E2 80 */ addi r23, r23, lbl_803FE280@l
+/* 80310F48 0030CBA8 48 00 00 68 */ b lbl_80310FB0
+lbl_80310F4C:
+/* 80310F4C 0030CBAC 7F 03 C3 78 */ mr r3, r24
+/* 80310F50 0030CBB0 7F 24 CB 78 */ mr r4, r25
+/* 80310F54 0030CBB4 7F A5 EB 78 */ mr r5, r29
+/* 80310F58 0030CBB8 38 C1 00 10 */ addi r6, r1, 0x10
+/* 80310F5C 0030CBBC 38 E1 00 0C */ addi r7, r1, 0xc
+/* 80310F60 0030CBC0 39 01 00 08 */ addi r8, r1, 8
+/* 80310F64 0030CBC4 4B FF DC 71 */ bl VFiPFFAT_ReadClusterPage
+/* 80310F68 0030CBC8 2C 03 00 00 */ cmpwi r3, 0
+/* 80310F6C 0030CBCC 41 82 00 08 */ beq lbl_80310F74
+/* 80310F70 0030CBD0 48 00 00 64 */ b lbl_80310FD4
+lbl_80310F74:
+/* 80310F74 0030CBD4 80 1F 00 1C */ lwz r0, 0x1c(r31)
+/* 80310F78 0030CBD8 7F 3E CB 78 */ mr r30, r25
+/* 80310F7C 0030CBDC 80 81 00 10 */ lwz r4, 0x10(r1)
+/* 80310F80 0030CBE0 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 80310F84 0030CBE4 7C 77 02 14 */ add r3, r23, r0
+/* 80310F88 0030CBE8 80 03 00 08 */ lwz r0, 8(r3)
+/* 80310F8C 0030CBEC 7C 04 00 40 */ cmplw r4, r0
+/* 80310F90 0030CBF0 40 82 00 14 */ bne lbl_80310FA4
+/* 80310F94 0030CBF4 38 1D FF FF */ addi r0, r29, -1
+/* 80310F98 0030CBF8 93 38 00 0C */ stw r25, 0xc(r24)
+/* 80310F9C 0030CBFC 90 18 00 10 */ stw r0, 0x10(r24)
+/* 80310FA0 0030CC00 48 00 00 18 */ b lbl_80310FB8
+lbl_80310FA4:
+/* 80310FA4 0030CC04 7C 99 23 78 */ mr r25, r4
+/* 80310FA8 0030CC08 3B BD 00 01 */ addi r29, r29, 1
+/* 80310FAC 0030CC0C 3A D6 00 01 */ addi r22, r22, 1
+lbl_80310FB0:
+/* 80310FB0 0030CC10 7C 16 E0 40 */ cmplw r22, r28
+/* 80310FB4 0030CC14 41 80 FF 98 */ blt lbl_80310F4C
+lbl_80310FB8:
+/* 80310FB8 0030CC18 80 98 00 30 */ lwz r4, 0x30(r24)
+/* 80310FBC 0030CC1C 38 1D FF FF */ addi r0, r29, -1
+/* 80310FC0 0030CC20 38 60 00 00 */ li r3, 0
+/* 80310FC4 0030CC24 90 04 00 00 */ stw r0, 0(r4)
+/* 80310FC8 0030CC28 93 DA 00 00 */ stw r30, 0(r26)
+/* 80310FCC 0030CC2C 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 80310FD0 0030CC30 90 1B 00 00 */ stw r0, 0(r27)
+lbl_80310FD4:
+/* 80310FD4 0030CC34 39 61 00 40 */ addi r11, r1, 0x40
+/* 80310FD8 0030CC38 4B EB 61 89 */ bl _restgpr_22
+/* 80310FDC 0030CC3C 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 80310FE0 0030CC40 7C 08 03 A6 */ mtlr r0
+/* 80310FE4 0030CC44 38 21 00 40 */ addi r1, r1, 0x40
+/* 80310FE8 0030CC48 4E 80 00 20 */ blr
+
+.global VFiPFFAT_ReadValueToSpecifiedCluster
+VFiPFFAT_ReadValueToSpecifiedCluster:
+/* 80310FEC 0030CC4C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80310FF0 0030CC50 7C 08 02 A6 */ mflr r0
+/* 80310FF4 0030CC54 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80310FF8 0030CC58 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80310FFC 0030CC5C 2C 00 00 01 */ cmpwi r0, 1
+/* 80311000 0030CC60 41 82 00 2C */ beq lbl_8031102C
+/* 80311004 0030CC64 40 80 00 10 */ bge lbl_80311014
+/* 80311008 0030CC68 2C 00 00 00 */ cmpwi r0, 0
+/* 8031100C 0030CC6C 40 80 00 14 */ bge lbl_80311020
+/* 80311010 0030CC70 48 00 00 2C */ b lbl_8031103C
+lbl_80311014:
+/* 80311014 0030CC74 2C 00 00 03 */ cmpwi r0, 3
+/* 80311018 0030CC78 40 80 00 24 */ bge lbl_8031103C
+/* 8031101C 0030CC7C 48 00 00 18 */ b lbl_80311034
+lbl_80311020:
+/* 80311020 0030CC80 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 80311024 0030CC84 48 00 01 4D */ bl VFiPFFAT12_ReadFATEntry
+/* 80311028 0030CC88 48 00 00 20 */ b lbl_80311048
+lbl_8031102C:
+/* 8031102C 0030CC8C 48 00 0C 2D */ bl VFiPFFAT16_ReadFATEntry
+/* 80311030 0030CC90 48 00 00 18 */ b lbl_80311048
+lbl_80311034:
+/* 80311034 0030CC94 48 00 11 9D */ bl VFiPFFAT32_ReadFATEntry
+/* 80311038 0030CC98 48 00 00 10 */ b lbl_80311048
+lbl_8031103C:
+/* 8031103C 0030CC9C 38 00 FF FF */ li r0, -1
+/* 80311040 0030CCA0 38 60 00 0F */ li r3, 0xf
+/* 80311044 0030CCA4 90 05 00 00 */ stw r0, 0(r5)
+lbl_80311048:
+/* 80311048 0030CCA8 7C 03 00 D0 */ neg r0, r3
+/* 8031104C 0030CCAC 7C 00 1B 78 */ or r0, r0, r3
+/* 80311050 0030CCB0 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 80311054 0030CCB4 7C 63 00 38 */ and r3, r3, r0
+/* 80311058 0030CCB8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8031105C 0030CCBC 7C 08 03 A6 */ mtlr r0
+/* 80311060 0030CCC0 38 21 00 10 */ addi r1, r1, 0x10
+/* 80311064 0030CCC4 4E 80 00 20 */ blr
+
+.global VFiPFFAT_ResetFFD
+VFiPFFAT_ResetFFD:
+/* 80311068 0030CCC8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031106C 0030CCCC 40 82 00 0C */ bne lbl_80311078
+/* 80311070 0030CCD0 38 60 00 0A */ li r3, 0xa
+/* 80311074 0030CCD4 4E 80 00 20 */ blr
+lbl_80311078:
+/* 80311078 0030CCD8 2C 04 00 00 */ cmpwi r4, 0
+/* 8031107C 0030CCDC 40 82 00 0C */ bne lbl_80311088
+/* 80311080 0030CCE0 38 60 00 0A */ li r3, 0xa
+/* 80311084 0030CCE4 4E 80 00 20 */ blr
+lbl_80311088:
+/* 80311088 0030CCE8 80 A3 00 30 */ lwz r5, 0x30(r3)
+/* 8031108C 0030CCEC 38 00 00 01 */ li r0, 1
+/* 80311090 0030CCF0 90 83 00 08 */ stw r4, 8(r3)
+/* 80311094 0030CCF4 2C 05 00 00 */ cmpwi r5, 0
+/* 80311098 0030CCF8 90 03 00 00 */ stw r0, 0(r3)
+/* 8031109C 0030CCFC 41 82 00 0C */ beq lbl_803110A8
+/* 803110A0 0030CD00 38 00 00 00 */ li r0, 0
+/* 803110A4 0030CD04 90 05 00 08 */ stw r0, 8(r5)
+lbl_803110A8:
+/* 803110A8 0030CD08 38 00 00 00 */ li r0, 0
+/* 803110AC 0030CD0C 90 03 00 18 */ stw r0, 0x18(r3)
+/* 803110B0 0030CD10 90 03 00 14 */ stw r0, 0x14(r3)
+/* 803110B4 0030CD14 90 03 00 0C */ stw r0, 0xc(r3)
+/* 803110B8 0030CD18 90 03 00 10 */ stw r0, 0x10(r3)
+/* 803110BC 0030CD1C 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 803110C0 0030CD20 38 60 00 00 */ li r3, 0
+/* 803110C4 0030CD24 4E 80 00 20 */ blr
+
+.global VFiPFFAT_InitFFD
+VFiPFFAT_InitFFD:
+/* 803110C8 0030CD28 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 803110CC 0030CD2C 40 86 00 0C */ bne cr1, lbl_803110D8
+/* 803110D0 0030CD30 38 60 00 0A */ li r3, 0xa
+/* 803110D4 0030CD34 4E 80 00 20 */ blr
+lbl_803110D8:
+/* 803110D8 0030CD38 2C 06 00 00 */ cmpwi r6, 0
+/* 803110DC 0030CD3C 40 82 00 0C */ bne lbl_803110E8
+/* 803110E0 0030CD40 38 60 00 0A */ li r3, 0xa
+/* 803110E4 0030CD44 4E 80 00 20 */ blr
+lbl_803110E8:
+/* 803110E8 0030CD48 90 83 00 30 */ stw r4, 0x30(r3)
+/* 803110EC 0030CD4C 90 A3 00 34 */ stw r5, 0x34(r3)
+/* 803110F0 0030CD50 41 86 00 3C */ beq cr1, lbl_8031112C
+/* 803110F4 0030CD54 41 82 00 38 */ beq lbl_8031112C
+/* 803110F8 0030CD58 38 00 00 01 */ li r0, 1
+/* 803110FC 0030CD5C 2C 04 00 00 */ cmpwi r4, 0
+/* 80311100 0030CD60 90 C3 00 08 */ stw r6, 8(r3)
+/* 80311104 0030CD64 90 03 00 00 */ stw r0, 0(r3)
+/* 80311108 0030CD68 41 82 00 0C */ beq lbl_80311114
+/* 8031110C 0030CD6C 38 00 00 00 */ li r0, 0
+/* 80311110 0030CD70 90 04 00 08 */ stw r0, 8(r4)
+lbl_80311114:
+/* 80311114 0030CD74 38 00 00 00 */ li r0, 0
+/* 80311118 0030CD78 90 03 00 18 */ stw r0, 0x18(r3)
+/* 8031111C 0030CD7C 90 03 00 14 */ stw r0, 0x14(r3)
+/* 80311120 0030CD80 90 03 00 0C */ stw r0, 0xc(r3)
+/* 80311124 0030CD84 90 03 00 10 */ stw r0, 0x10(r3)
+/* 80311128 0030CD88 90 03 00 1C */ stw r0, 0x1c(r3)
+lbl_8031112C:
+/* 8031112C 0030CD8C 38 60 00 00 */ li r3, 0
+/* 80311130 0030CD90 4E 80 00 20 */ blr
+
+.global VFiPFFAT_FinalizeFFD
+VFiPFFAT_FinalizeFFD:
+/* 80311134 0030CD94 2C 03 00 00 */ cmpwi r3, 0
+/* 80311138 0030CD98 40 82 00 0C */ bne lbl_80311144
+/* 8031113C 0030CD9C 38 60 00 0A */ li r3, 0xa
+/* 80311140 0030CDA0 4E 80 00 20 */ blr
+lbl_80311144:
+/* 80311144 0030CDA4 38 00 00 00 */ li r0, 0
+/* 80311148 0030CDA8 90 03 00 1C */ stw r0, 0x1c(r3)
+/* 8031114C 0030CDAC 38 60 00 00 */ li r3, 0
+/* 80311150 0030CDB0 4E 80 00 20 */ blr
+
+.global VFiPFFAT_GetValueOfEOC2
+VFiPFFAT_GetValueOfEOC2:
+/* 80311154 0030CDB4 80 03 00 1C */ lwz r0, 0x1c(r3)
+/* 80311158 0030CDB8 3C 60 80 40 */ lis r3, lbl_803FE280@ha
+/* 8031115C 0030CDBC 38 63 E2 80 */ addi r3, r3, lbl_803FE280@l
+/* 80311160 0030CDC0 1C 00 00 14 */ mulli r0, r0, 0x14
+/* 80311164 0030CDC4 7C 63 02 14 */ add r3, r3, r0
+/* 80311168 0030CDC8 80 63 00 08 */ lwz r3, 8(r3)
+/* 8031116C 0030CDCC 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_fat12.s b/asm/SDK/VF/pf_fat12.s new file mode 100644 index 0000000..a83c59c --- /dev/null +++ b/asm/SDK/VF/pf_fat12.s @@ -0,0 +1,784 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFAT12_ReadFATEntry
+VFiPFFAT12_ReadFATEntry:
+/* 80311170 0030CDD0 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80311174 0030CDD4 7C 08 02 A6 */ mflr r0
+/* 80311178 0030CDD8 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8031117C 0030CDDC 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311180 0030CDE0 4B EB 5F A1 */ bl _savegpr_25
+/* 80311184 0030CDE4 2C 03 00 00 */ cmpwi r3, 0
+/* 80311188 0030CDE8 7C 7C 1B 78 */ mr r28, r3
+/* 8031118C 0030CDEC 7C 9D 23 78 */ mr r29, r4
+/* 80311190 0030CDF0 7C BE 2B 78 */ mr r30, r5
+/* 80311194 0030CDF4 40 82 00 14 */ bne lbl_803111A8
+/* 80311198 0030CDF8 38 00 FF FF */ li r0, -1
+/* 8031119C 0030CDFC 38 60 00 0A */ li r3, 0xa
+/* 803111A0 0030CE00 90 05 00 00 */ stw r0, 0(r5)
+/* 803111A4 0030CE04 48 00 01 98 */ b lbl_8031133C
+lbl_803111A8:
+/* 803111A8 0030CE08 28 04 00 02 */ cmplwi r4, 2
+/* 803111AC 0030CE0C 41 80 00 14 */ blt lbl_803111C0
+/* 803111B0 0030CE10 80 C3 00 34 */ lwz r6, 0x34(r3)
+/* 803111B4 0030CE14 38 06 00 02 */ addi r0, r6, 2
+/* 803111B8 0030CE18 7C 04 00 40 */ cmplw r4, r0
+/* 803111BC 0030CE1C 41 80 00 24 */ blt lbl_803111E0
+lbl_803111C0:
+/* 803111C0 0030CE20 2C 04 00 00 */ cmpwi r4, 0
+/* 803111C4 0030CE24 41 82 00 1C */ beq lbl_803111E0
+/* 803111C8 0030CE28 28 04 00 01 */ cmplwi r4, 1
+/* 803111CC 0030CE2C 41 82 00 14 */ beq lbl_803111E0
+/* 803111D0 0030CE30 38 00 FF FF */ li r0, -1
+/* 803111D4 0030CE34 38 60 00 0E */ li r3, 0xe
+/* 803111D8 0030CE38 90 05 00 00 */ stw r0, 0(r5)
+/* 803111DC 0030CE3C 48 00 01 60 */ b lbl_8031133C
+lbl_803111E0:
+/* 803111E0 0030CE40 7C 80 0E 70 */ srawi r0, r4, 1
+/* 803111E4 0030CE44 A0 E3 00 18 */ lhz r7, 0x18(r3)
+/* 803111E8 0030CE48 7C 04 02 14 */ add r0, r4, r0
+/* 803111EC 0030CE4C 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 803111F0 0030CE50 54 08 04 3E */ clrlwi r8, r0, 0x10
+/* 803111F4 0030CE54 A0 83 00 00 */ lhz r4, 0(r3)
+/* 803111F8 0030CE58 54 E0 06 31 */ rlwinm. r0, r7, 0, 0x18, 0x18
+/* 803111FC 0030CE5C 80 C3 00 28 */ lwz r6, 0x28(r3)
+/* 80311200 0030CE60 7D 03 2E 30 */ sraw r3, r8, r5
+/* 80311204 0030CE64 3B E0 00 01 */ li r31, 1
+/* 80311208 0030CE68 38 04 FF FF */ addi r0, r4, -1
+/* 8031120C 0030CE6C 7C 66 1A 14 */ add r3, r6, r3
+/* 80311210 0030CE70 54 79 04 3E */ clrlwi r25, r3, 0x10
+/* 80311214 0030CE74 7D 00 00 38 */ and r0, r8, r0
+/* 80311218 0030CE78 41 82 00 08 */ beq lbl_80311220
+/* 8031121C 0030CE7C 54 FF 07 7E */ clrlwi r31, r7, 0x1d
+lbl_80311220:
+/* 80311220 0030CE80 54 1B 04 3E */ clrlwi r27, r0, 0x10
+lbl_80311224:
+/* 80311224 0030CE84 A0 7C 00 00 */ lhz r3, 0(r28)
+/* 80311228 0030CE88 38 03 FF FF */ addi r0, r3, -1
+/* 8031122C 0030CE8C 7C 1B 00 00 */ cmpw r27, r0
+/* 80311230 0030CE90 40 80 00 24 */ bge lbl_80311254
+/* 80311234 0030CE94 7F 83 E3 78 */ mr r3, r28
+/* 80311238 0030CE98 7F 66 DB 78 */ mr r6, r27
+/* 8031123C 0030CE9C 38 81 00 08 */ addi r4, r1, 8
+/* 80311240 0030CEA0 57 25 04 3E */ clrlwi r5, r25, 0x10
+/* 80311244 0030CEA4 38 E0 00 02 */ li r7, 2
+/* 80311248 0030CEA8 48 00 77 29 */ bl func_80318970
+/* 8031124C 0030CEAC 7C 7A 1B 78 */ mr r26, r3
+/* 80311250 0030CEB0 48 00 00 48 */ b lbl_80311298
+lbl_80311254:
+/* 80311254 0030CEB4 7F 83 E3 78 */ mr r3, r28
+/* 80311258 0030CEB8 7F 66 DB 78 */ mr r6, r27
+/* 8031125C 0030CEBC 38 81 00 08 */ addi r4, r1, 8
+/* 80311260 0030CEC0 57 25 04 3E */ clrlwi r5, r25, 0x10
+/* 80311264 0030CEC4 38 E0 00 01 */ li r7, 1
+/* 80311268 0030CEC8 48 00 77 09 */ bl func_80318970
+/* 8031126C 0030CECC 2C 03 00 00 */ cmpwi r3, 0
+/* 80311270 0030CED0 7C 7A 1B 78 */ mr r26, r3
+/* 80311274 0030CED4 40 82 00 24 */ bne lbl_80311298
+/* 80311278 0030CED8 57 25 04 3E */ clrlwi r5, r25, 0x10
+/* 8031127C 0030CEDC 7F 83 E3 78 */ mr r3, r28
+/* 80311280 0030CEE0 38 81 00 09 */ addi r4, r1, 9
+/* 80311284 0030CEE4 38 C0 00 00 */ li r6, 0
+/* 80311288 0030CEE8 38 A5 00 01 */ addi r5, r5, 1
+/* 8031128C 0030CEEC 38 E0 00 01 */ li r7, 1
+/* 80311290 0030CEF0 48 00 76 E1 */ bl func_80318970
+/* 80311294 0030CEF4 7C 7A 1B 78 */ mr r26, r3
+lbl_80311298:
+/* 80311298 0030CEF8 2C 1A 10 00 */ cmpwi r26, 0x1000
+/* 8031129C 0030CEFC 40 82 00 54 */ bne lbl_803112F0
+/* 803112A0 0030CF00 81 9C 18 90 */ lwz r12, 0x1890(r28)
+/* 803112A4 0030CF04 2C 0C 00 00 */ cmpwi r12, 0
+/* 803112A8 0030CF08 41 82 00 48 */ beq lbl_803112F0
+/* 803112AC 0030CF0C 80 7C 18 70 */ lwz r3, 0x1870(r28)
+/* 803112B0 0030CF10 7D 89 03 A6 */ mtctr r12
+/* 803112B4 0030CF14 4E 80 04 21 */ bctrl
+/* 803112B8 0030CF18 2C 03 00 00 */ cmpwi r3, 0
+/* 803112BC 0030CF1C 41 82 00 4C */ beq lbl_80311308
+/* 803112C0 0030CF20 2C 03 00 01 */ cmpwi r3, 1
+/* 803112C4 0030CF24 40 82 00 2C */ bne lbl_803112F0
+/* 803112C8 0030CF28 88 1C 00 22 */ lbz r0, 0x22(r28)
+/* 803112CC 0030CF2C 28 00 00 02 */ cmplwi r0, 2
+/* 803112D0 0030CF30 41 80 00 20 */ blt lbl_803112F0
+/* 803112D4 0030CF34 7C 1F 00 40 */ cmplw r31, r0
+/* 803112D8 0030CF38 40 80 00 18 */ bge lbl_803112F0
+/* 803112DC 0030CF3C 80 1C 00 0C */ lwz r0, 0xc(r28)
+/* 803112E0 0030CF40 3B FF 00 01 */ addi r31, r31, 1
+/* 803112E4 0030CF44 54 00 04 3E */ clrlwi r0, r0, 0x10
+/* 803112E8 0030CF48 7F 39 02 14 */ add r25, r25, r0
+/* 803112EC 0030CF4C 48 00 00 1C */ b lbl_80311308
+lbl_803112F0:
+/* 803112F0 0030CF50 2C 1A 00 00 */ cmpwi r26, 0
+/* 803112F4 0030CF54 41 82 00 14 */ beq lbl_80311308
+/* 803112F8 0030CF58 38 00 FF FF */ li r0, -1
+/* 803112FC 0030CF5C 7F 43 D3 78 */ mr r3, r26
+/* 80311300 0030CF60 90 1E 00 00 */ stw r0, 0(r30)
+/* 80311304 0030CF64 48 00 00 38 */ b lbl_8031133C
+lbl_80311308:
+/* 80311308 0030CF68 2C 1A 00 00 */ cmpwi r26, 0
+/* 8031130C 0030CF6C 40 82 FF 18 */ bne lbl_80311224
+/* 80311310 0030CF70 57 A0 07 FF */ clrlwi. r0, r29, 0x1f
+/* 80311314 0030CF74 A0 61 00 08 */ lhz r3, 8(r1)
+/* 80311318 0030CF78 54 60 44 2E */ rlwinm r0, r3, 8, 0x10, 0x17
+/* 8031131C 0030CF7C 50 60 C6 3E */ rlwimi r0, r3, 0x18, 0x18, 0x1f
+/* 80311320 0030CF80 41 82 00 10 */ beq lbl_80311330
+/* 80311324 0030CF84 54 00 E5 3E */ rlwinm r0, r0, 0x1c, 0x14, 0x1f
+/* 80311328 0030CF88 90 1E 00 00 */ stw r0, 0(r30)
+/* 8031132C 0030CF8C 48 00 00 0C */ b lbl_80311338
+lbl_80311330:
+/* 80311330 0030CF90 54 00 05 3E */ clrlwi r0, r0, 0x14
+/* 80311334 0030CF94 90 1E 00 00 */ stw r0, 0(r30)
+lbl_80311338:
+/* 80311338 0030CF98 38 60 00 00 */ li r3, 0
+lbl_8031133C:
+/* 8031133C 0030CF9C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311340 0030CFA0 4B EB 5E 2D */ bl _restgpr_25
+/* 80311344 0030CFA4 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80311348 0030CFA8 7C 08 03 A6 */ mtlr r0
+/* 8031134C 0030CFAC 38 21 00 30 */ addi r1, r1, 0x30
+/* 80311350 0030CFB0 4E 80 00 20 */ blr
+
+.global VFiPFFAT12_ReadFATEntryPage
+VFiPFFAT12_ReadFATEntryPage:
+/* 80311354 0030CFB4 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80311358 0030CFB8 7C 08 02 A6 */ mflr r0
+/* 8031135C 0030CFBC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80311360 0030CFC0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311364 0030CFC4 4B EB 5D B9 */ bl _savegpr_24
+/* 80311368 0030CFC8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031136C 0030CFCC 7C 78 1B 78 */ mr r24, r3
+/* 80311370 0030CFD0 7C 99 23 78 */ mr r25, r4
+/* 80311374 0030CFD4 7C BA 2B 78 */ mr r26, r5
+/* 80311378 0030CFD8 7C DB 33 78 */ mr r27, r6
+/* 8031137C 0030CFDC 40 82 00 0C */ bne lbl_80311388
+/* 80311380 0030CFE0 38 60 00 0A */ li r3, 0xa
+/* 80311384 0030CFE4 48 00 02 8C */ b lbl_80311610
+lbl_80311388:
+/* 80311388 0030CFE8 28 04 00 02 */ cmplwi r4, 2
+/* 8031138C 0030CFEC 41 80 00 14 */ blt lbl_803113A0
+/* 80311390 0030CFF0 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80311394 0030CFF4 38 05 00 02 */ addi r0, r5, 2
+/* 80311398 0030CFF8 7C 04 00 40 */ cmplw r4, r0
+/* 8031139C 0030CFFC 41 80 00 1C */ blt lbl_803113B8
+lbl_803113A0:
+/* 803113A0 0030D000 2C 04 00 00 */ cmpwi r4, 0
+/* 803113A4 0030D004 41 82 00 14 */ beq lbl_803113B8
+/* 803113A8 0030D008 28 04 00 01 */ cmplwi r4, 1
+/* 803113AC 0030D00C 41 82 00 0C */ beq lbl_803113B8
+/* 803113B0 0030D010 38 60 00 0E */ li r3, 0xe
+/* 803113B4 0030D014 48 00 02 5C */ b lbl_80311610
+lbl_803113B8:
+/* 803113B8 0030D018 54 80 FC 7E */ rlwinm r0, r4, 0x1f, 0x11, 0x1f
+/* 803113BC 0030D01C A0 A3 00 18 */ lhz r5, 0x18(r3)
+/* 803113C0 0030D020 7C 04 02 14 */ add r0, r4, r0
+/* 803113C4 0030D024 88 83 00 20 */ lbz r4, 0x20(r3)
+/* 803113C8 0030D028 54 1F 04 3E */ clrlwi r31, r0, 0x10
+/* 803113CC 0030D02C 80 63 00 28 */ lwz r3, 0x28(r3)
+/* 803113D0 0030D030 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 803113D4 0030D034 3B 80 00 01 */ li r28, 1
+/* 803113D8 0030D038 7F E0 24 30 */ srw r0, r31, r4
+/* 803113DC 0030D03C 7C 03 02 14 */ add r0, r3, r0
+/* 803113E0 0030D040 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 803113E4 0030D044 41 82 00 08 */ beq lbl_803113EC
+/* 803113E8 0030D048 54 BC 07 7E */ clrlwi r28, r5, 0x1d
+lbl_803113EC:
+/* 803113EC 0030D04C 3B C0 00 00 */ li r30, 0
+lbl_803113F0:
+/* 803113F0 0030D050 2C 1E 10 00 */ cmpwi r30, 0x1000
+/* 803113F4 0030D054 40 82 00 5C */ bne lbl_80311450
+/* 803113F8 0030D058 81 98 18 90 */ lwz r12, 0x1890(r24)
+/* 803113FC 0030D05C 2C 0C 00 00 */ cmpwi r12, 0
+/* 80311400 0030D060 41 82 00 50 */ beq lbl_80311450
+/* 80311404 0030D064 80 78 18 70 */ lwz r3, 0x1870(r24)
+/* 80311408 0030D068 7D 89 03 A6 */ mtctr r12
+/* 8031140C 0030D06C 4E 80 04 21 */ bctrl
+/* 80311410 0030D070 2C 03 00 00 */ cmpwi r3, 0
+/* 80311414 0030D074 40 82 00 0C */ bne lbl_80311420
+/* 80311418 0030D078 3B C0 00 00 */ li r30, 0
+/* 8031141C 0030D07C 4B FF FF D4 */ b lbl_803113F0
+lbl_80311420:
+/* 80311420 0030D080 2C 03 00 01 */ cmpwi r3, 1
+/* 80311424 0030D084 40 82 01 AC */ bne lbl_803115D0
+/* 80311428 0030D088 88 18 00 22 */ lbz r0, 0x22(r24)
+/* 8031142C 0030D08C 28 00 00 02 */ cmplwi r0, 2
+/* 80311430 0030D090 41 80 01 A0 */ blt lbl_803115D0
+/* 80311434 0030D094 7C 1C 00 40 */ cmplw r28, r0
+/* 80311438 0030D098 40 80 01 98 */ bge lbl_803115D0
+/* 8031143C 0030D09C 80 18 00 0C */ lwz r0, 0xc(r24)
+/* 80311440 0030D0A0 3B C0 00 00 */ li r30, 0
+/* 80311444 0030D0A4 3B 9C 00 01 */ addi r28, r28, 1
+/* 80311448 0030D0A8 7F BD 02 14 */ add r29, r29, r0
+/* 8031144C 0030D0AC 4B FF FF A4 */ b lbl_803113F0
+lbl_80311450:
+/* 80311450 0030D0B0 80 9B 00 00 */ lwz r4, 0(r27)
+/* 80311454 0030D0B4 80 C4 00 18 */ lwz r6, 0x18(r4)
+/* 80311458 0030D0B8 7C 06 E8 40 */ cmplw r6, r29
+/* 8031145C 0030D0BC 41 81 00 14 */ bgt lbl_80311470
+/* 80311460 0030D0C0 80 18 16 00 */ lwz r0, 0x1600(r24)
+/* 80311464 0030D0C4 7C 06 02 14 */ add r0, r6, r0
+/* 80311468 0030D0C8 7C 00 E8 40 */ cmplw r0, r29
+/* 8031146C 0030D0CC 41 81 00 44 */ bgt lbl_803114B0
+lbl_80311470:
+/* 80311470 0030D0D0 A0 04 00 02 */ lhz r0, 2(r4)
+/* 80311474 0030D0D4 28 00 00 01 */ cmplwi r0, 1
+/* 80311478 0030D0D8 40 82 00 18 */ bne lbl_80311490
+/* 8031147C 0030D0DC 7F 03 C3 78 */ mr r3, r24
+/* 80311480 0030D0E0 4B FF E9 E9 */ bl VFiPFFAT_UpdateFATEntry
+/* 80311484 0030D0E4 2C 03 00 00 */ cmpwi r3, 0
+/* 80311488 0030D0E8 41 82 00 08 */ beq lbl_80311490
+/* 8031148C 0030D0EC 48 00 01 84 */ b lbl_80311610
+lbl_80311490:
+/* 80311490 0030D0F0 7F 03 C3 78 */ mr r3, r24
+/* 80311494 0030D0F4 7F A4 EB 78 */ mr r4, r29
+/* 80311498 0030D0F8 7F 65 DB 78 */ mr r5, r27
+/* 8031149C 0030D0FC 4B FF 93 B1 */ bl VFiPFCACHE_ReadFATPage
+/* 803114A0 0030D100 2C 03 00 00 */ cmpwi r3, 0
+/* 803114A4 0030D104 7C 7E 1B 78 */ mr r30, r3
+/* 803114A8 0030D108 40 82 FF 48 */ bne lbl_803113F0
+/* 803114AC 0030D10C 48 00 00 30 */ b lbl_803114DC
+lbl_803114B0:
+/* 803114B0 0030D110 80 64 00 04 */ lwz r3, 4(r4)
+/* 803114B4 0030D114 80 A4 00 08 */ lwz r5, 8(r4)
+/* 803114B8 0030D118 88 18 00 20 */ lbz r0, 0x20(r24)
+/* 803114BC 0030D11C 7C 63 28 50 */ subf r3, r3, r5
+/* 803114C0 0030D120 7C 60 06 30 */ sraw r0, r3, r0
+/* 803114C4 0030D124 7C 06 02 14 */ add r0, r6, r0
+/* 803114C8 0030D128 7C 1D 00 40 */ cmplw r29, r0
+/* 803114CC 0030D12C 41 82 00 10 */ beq lbl_803114DC
+/* 803114D0 0030D130 A0 18 00 00 */ lhz r0, 0(r24)
+/* 803114D4 0030D134 7C 05 02 14 */ add r0, r5, r0
+/* 803114D8 0030D138 90 04 00 08 */ stw r0, 8(r4)
+lbl_803114DC:
+/* 803114DC 0030D13C A0 78 00 00 */ lhz r3, 0(r24)
+/* 803114E0 0030D140 38 03 FF FF */ addi r0, r3, -1
+/* 803114E4 0030D144 7F E5 00 38 */ and r5, r31, r0
+/* 803114E8 0030D148 7C 05 00 40 */ cmplw r5, r0
+/* 803114EC 0030D14C 40 82 00 C4 */ bne lbl_803115B0
+/* 803114F0 0030D150 80 7B 00 00 */ lwz r3, 0(r27)
+/* 803114F4 0030D154 38 DD 00 01 */ addi r6, r29, 1
+/* 803114F8 0030D158 80 63 00 08 */ lwz r3, 8(r3)
+/* 803114FC 0030D15C 7C 03 28 AE */ lbzx r0, r3, r5
+/* 80311500 0030D160 90 1A 00 00 */ stw r0, 0(r26)
+/* 80311504 0030D164 80 9B 00 00 */ lwz r4, 0(r27)
+/* 80311508 0030D168 80 E4 00 18 */ lwz r7, 0x18(r4)
+/* 8031150C 0030D16C 7C 07 30 40 */ cmplw r7, r6
+/* 80311510 0030D170 41 81 00 14 */ bgt lbl_80311524
+/* 80311514 0030D174 80 18 16 00 */ lwz r0, 0x1600(r24)
+/* 80311518 0030D178 7C 07 02 14 */ add r0, r7, r0
+/* 8031151C 0030D17C 7C 00 30 40 */ cmplw r0, r6
+/* 80311520 0030D180 41 81 00 44 */ bgt lbl_80311564
+lbl_80311524:
+/* 80311524 0030D184 A0 04 00 02 */ lhz r0, 2(r4)
+/* 80311528 0030D188 28 00 00 01 */ cmplwi r0, 1
+/* 8031152C 0030D18C 40 82 00 18 */ bne lbl_80311544
+/* 80311530 0030D190 7F 03 C3 78 */ mr r3, r24
+/* 80311534 0030D194 4B FF E9 35 */ bl VFiPFFAT_UpdateFATEntry
+/* 80311538 0030D198 2C 03 00 00 */ cmpwi r3, 0
+/* 8031153C 0030D19C 41 82 00 08 */ beq lbl_80311544
+/* 80311540 0030D1A0 48 00 00 D0 */ b lbl_80311610
+lbl_80311544:
+/* 80311544 0030D1A4 7F 03 C3 78 */ mr r3, r24
+/* 80311548 0030D1A8 7F 65 DB 78 */ mr r5, r27
+/* 8031154C 0030D1AC 38 9D 00 01 */ addi r4, r29, 1
+/* 80311550 0030D1B0 4B FF 92 FD */ bl VFiPFCACHE_ReadFATPage
+/* 80311554 0030D1B4 2C 03 00 00 */ cmpwi r3, 0
+/* 80311558 0030D1B8 7C 7E 1B 78 */ mr r30, r3
+/* 8031155C 0030D1BC 41 82 00 34 */ beq lbl_80311590
+/* 80311560 0030D1C0 48 00 00 B0 */ b lbl_80311610
+lbl_80311564:
+/* 80311564 0030D1C4 80 64 00 04 */ lwz r3, 4(r4)
+/* 80311568 0030D1C8 80 A4 00 08 */ lwz r5, 8(r4)
+/* 8031156C 0030D1CC 88 18 00 20 */ lbz r0, 0x20(r24)
+/* 80311570 0030D1D0 7C 63 28 50 */ subf r3, r3, r5
+/* 80311574 0030D1D4 7C 60 06 30 */ sraw r0, r3, r0
+/* 80311578 0030D1D8 7C 07 02 14 */ add r0, r7, r0
+/* 8031157C 0030D1DC 7C 06 00 40 */ cmplw r6, r0
+/* 80311580 0030D1E0 41 82 00 10 */ beq lbl_80311590
+/* 80311584 0030D1E4 A0 18 00 00 */ lhz r0, 0(r24)
+/* 80311588 0030D1E8 7C 05 02 14 */ add r0, r5, r0
+/* 8031158C 0030D1EC 90 04 00 08 */ stw r0, 8(r4)
+lbl_80311590:
+/* 80311590 0030D1F0 80 7B 00 00 */ lwz r3, 0(r27)
+/* 80311594 0030D1F4 80 9A 00 00 */ lwz r4, 0(r26)
+/* 80311598 0030D1F8 80 63 00 08 */ lwz r3, 8(r3)
+/* 8031159C 0030D1FC 88 03 00 00 */ lbz r0, 0(r3)
+/* 803115A0 0030D200 54 00 40 2E */ slwi r0, r0, 8
+/* 803115A4 0030D204 7C 04 02 14 */ add r0, r4, r0
+/* 803115A8 0030D208 90 1A 00 00 */ stw r0, 0(r26)
+/* 803115AC 0030D20C 48 00 00 24 */ b lbl_803115D0
+lbl_803115B0:
+/* 803115B0 0030D210 80 7B 00 00 */ lwz r3, 0(r27)
+/* 803115B4 0030D214 80 83 00 08 */ lwz r4, 8(r3)
+/* 803115B8 0030D218 7C 64 2A 14 */ add r3, r4, r5
+/* 803115BC 0030D21C 7C 04 28 AE */ lbzx r0, r4, r5
+/* 803115C0 0030D220 88 63 00 01 */ lbz r3, 1(r3)
+/* 803115C4 0030D224 54 63 40 2E */ slwi r3, r3, 8
+/* 803115C8 0030D228 7C 03 02 14 */ add r0, r3, r0
+/* 803115CC 0030D22C 90 1A 00 00 */ stw r0, 0(r26)
+lbl_803115D0:
+/* 803115D0 0030D230 2C 1E 00 00 */ cmpwi r30, 0
+/* 803115D4 0030D234 41 82 00 14 */ beq lbl_803115E8
+/* 803115D8 0030D238 38 00 FF FF */ li r0, -1
+/* 803115DC 0030D23C 7F C3 F3 78 */ mr r3, r30
+/* 803115E0 0030D240 90 1A 00 00 */ stw r0, 0(r26)
+/* 803115E4 0030D244 48 00 00 2C */ b lbl_80311610
+lbl_803115E8:
+/* 803115E8 0030D248 57 20 07 FF */ clrlwi. r0, r25, 0x1f
+/* 803115EC 0030D24C 41 82 00 14 */ beq lbl_80311600
+/* 803115F0 0030D250 80 1A 00 00 */ lwz r0, 0(r26)
+/* 803115F4 0030D254 54 00 E1 3E */ srwi r0, r0, 4
+/* 803115F8 0030D258 90 1A 00 00 */ stw r0, 0(r26)
+/* 803115FC 0030D25C 48 00 00 10 */ b lbl_8031160C
+lbl_80311600:
+/* 80311600 0030D260 80 1A 00 00 */ lwz r0, 0(r26)
+/* 80311604 0030D264 54 00 05 3E */ clrlwi r0, r0, 0x14
+/* 80311608 0030D268 90 1A 00 00 */ stw r0, 0(r26)
+lbl_8031160C:
+/* 8031160C 0030D26C 38 60 00 00 */ li r3, 0
+lbl_80311610:
+/* 80311610 0030D270 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311614 0030D274 4B EB 5B 55 */ bl _restgpr_24
+/* 80311618 0030D278 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8031161C 0030D27C 7C 08 03 A6 */ mtlr r0
+/* 80311620 0030D280 38 21 00 30 */ addi r1, r1, 0x30
+/* 80311624 0030D284 4E 80 00 20 */ blr
+
+.global VFiPFFAT12_WriteFATEntry
+VFiPFFAT12_WriteFATEntry:
+/* 80311628 0030D288 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 8031162C 0030D28C 7C 08 02 A6 */ mflr r0
+/* 80311630 0030D290 2C 03 00 00 */ cmpwi r3, 0
+/* 80311634 0030D294 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80311638 0030D298 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 8031163C 0030D29C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80311640 0030D2A0 7C BE 2B 78 */ mr r30, r5
+/* 80311644 0030D2A4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80311648 0030D2A8 7C 7D 1B 78 */ mr r29, r3
+/* 8031164C 0030D2AC 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80311650 0030D2B0 40 82 00 0C */ bne lbl_8031165C
+/* 80311654 0030D2B4 38 60 00 0A */ li r3, 0xa
+/* 80311658 0030D2B8 48 00 01 54 */ b lbl_803117AC
+lbl_8031165C:
+/* 8031165C 0030D2BC 28 04 00 02 */ cmplwi r4, 2
+/* 80311660 0030D2C0 41 80 00 14 */ blt lbl_80311674
+/* 80311664 0030D2C4 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80311668 0030D2C8 38 05 00 02 */ addi r0, r5, 2
+/* 8031166C 0030D2CC 7C 04 00 40 */ cmplw r4, r0
+/* 80311670 0030D2D0 41 80 00 1C */ blt lbl_8031168C
+lbl_80311674:
+/* 80311674 0030D2D4 2C 04 00 00 */ cmpwi r4, 0
+/* 80311678 0030D2D8 41 82 00 14 */ beq lbl_8031168C
+/* 8031167C 0030D2DC 28 04 00 01 */ cmplwi r4, 1
+/* 80311680 0030D2E0 41 82 00 0C */ beq lbl_8031168C
+/* 80311684 0030D2E4 38 60 00 0E */ li r3, 0xe
+/* 80311688 0030D2E8 48 00 01 24 */ b lbl_803117AC
+lbl_8031168C:
+/* 8031168C 0030D2EC 54 80 07 FF */ clrlwi. r0, r4, 0x1f
+/* 80311690 0030D2F0 7C 85 0E 70 */ srawi r5, r4, 1
+/* 80311694 0030D2F4 7C 04 2A 14 */ add r0, r4, r5
+/* 80311698 0030D2F8 A0 83 00 00 */ lhz r4, 0(r3)
+/* 8031169C 0030D2FC 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 803116A0 0030D300 54 07 04 3E */ clrlwi r7, r0, 0x10
+/* 803116A4 0030D304 81 03 00 28 */ lwz r8, 0x28(r3)
+/* 803116A8 0030D308 7C E0 2E 30 */ sraw r0, r7, r5
+/* 803116AC 0030D30C 38 C4 FF FF */ addi r6, r4, -1
+/* 803116B0 0030D310 7C 08 02 14 */ add r0, r8, r0
+/* 803116B4 0030D314 54 1F 04 3E */ clrlwi r31, r0, 0x10
+/* 803116B8 0030D318 7C FC 30 38 */ and r28, r7, r6
+/* 803116BC 0030D31C 41 82 00 40 */ beq lbl_803116FC
+/* 803116C0 0030D320 7F A3 EB 78 */ mr r3, r29
+/* 803116C4 0030D324 7F E5 FB 78 */ mr r5, r31
+/* 803116C8 0030D328 38 81 00 08 */ addi r4, r1, 8
+/* 803116CC 0030D32C 57 86 04 3E */ clrlwi r6, r28, 0x10
+/* 803116D0 0030D330 38 E0 00 01 */ li r7, 1
+/* 803116D4 0030D334 48 00 72 9D */ bl func_80318970
+/* 803116D8 0030D338 2C 03 00 00 */ cmpwi r3, 0
+/* 803116DC 0030D33C 41 82 00 08 */ beq lbl_803116E4
+/* 803116E0 0030D340 48 00 00 CC */ b lbl_803117AC
+lbl_803116E4:
+/* 803116E4 0030D344 88 01 00 08 */ lbz r0, 8(r1)
+/* 803116E8 0030D348 57 C3 23 36 */ rlwinm r3, r30, 4, 0xc, 0x1b
+/* 803116EC 0030D34C 54 00 07 3E */ clrlwi r0, r0, 0x1c
+/* 803116F0 0030D350 7C 03 02 14 */ add r0, r3, r0
+/* 803116F4 0030D354 54 03 04 3E */ clrlwi r3, r0, 0x10
+/* 803116F8 0030D358 48 00 00 4C */ b lbl_80311744
+lbl_803116FC:
+/* 803116FC 0030D35C 38 E7 00 01 */ addi r7, r7, 1
+/* 80311700 0030D360 7F A3 EB 78 */ mr r3, r29
+/* 80311704 0030D364 7C E0 2E 30 */ sraw r0, r7, r5
+/* 80311708 0030D368 38 81 00 08 */ addi r4, r1, 8
+/* 8031170C 0030D36C 7C A8 02 14 */ add r5, r8, r0
+/* 80311710 0030D370 7C E0 30 38 */ and r0, r7, r6
+/* 80311714 0030D374 38 E0 00 01 */ li r7, 1
+/* 80311718 0030D378 54 A5 04 3E */ clrlwi r5, r5, 0x10
+/* 8031171C 0030D37C 54 06 04 3E */ clrlwi r6, r0, 0x10
+/* 80311720 0030D380 48 00 72 51 */ bl func_80318970
+/* 80311724 0030D384 2C 03 00 00 */ cmpwi r3, 0
+/* 80311728 0030D388 41 82 00 08 */ beq lbl_80311730
+/* 8031172C 0030D38C 48 00 00 80 */ b lbl_803117AC
+lbl_80311730:
+/* 80311730 0030D390 88 61 00 08 */ lbz r3, 8(r1)
+/* 80311734 0030D394 57 C0 05 3E */ clrlwi r0, r30, 0x14
+/* 80311738 0030D398 54 63 44 26 */ rlwinm r3, r3, 8, 0x10, 0x13
+/* 8031173C 0030D39C 7C 03 02 14 */ add r0, r3, r0
+/* 80311740 0030D3A0 54 03 04 3E */ clrlwi r3, r0, 0x10
+lbl_80311744:
+/* 80311744 0030D3A4 38 01 00 08 */ addi r0, r1, 8
+/* 80311748 0030D3A8 57 86 04 3E */ clrlwi r6, r28, 0x10
+/* 8031174C 0030D3AC 7C 60 07 2C */ sthbrx r3, 0, r0
+/* 80311750 0030D3B0 A0 7D 00 00 */ lhz r3, 0(r29)
+/* 80311754 0030D3B4 38 03 FF FF */ addi r0, r3, -1
+/* 80311758 0030D3B8 7C 06 00 00 */ cmpw r6, r0
+/* 8031175C 0030D3BC 40 80 00 1C */ bge lbl_80311778
+/* 80311760 0030D3C0 7F A3 EB 78 */ mr r3, r29
+/* 80311764 0030D3C4 7F E5 FB 78 */ mr r5, r31
+/* 80311768 0030D3C8 38 81 00 08 */ addi r4, r1, 8
+/* 8031176C 0030D3CC 38 E0 00 02 */ li r7, 2
+/* 80311770 0030D3D0 48 00 75 99 */ bl func_80318D08
+/* 80311774 0030D3D4 48 00 00 38 */ b lbl_803117AC
+lbl_80311778:
+/* 80311778 0030D3D8 7F A3 EB 78 */ mr r3, r29
+/* 8031177C 0030D3DC 7F E5 FB 78 */ mr r5, r31
+/* 80311780 0030D3E0 38 81 00 08 */ addi r4, r1, 8
+/* 80311784 0030D3E4 38 E0 00 01 */ li r7, 1
+/* 80311788 0030D3E8 48 00 75 81 */ bl func_80318D08
+/* 8031178C 0030D3EC 2C 03 00 00 */ cmpwi r3, 0
+/* 80311790 0030D3F0 40 82 00 1C */ bne lbl_803117AC
+/* 80311794 0030D3F4 7F A3 EB 78 */ mr r3, r29
+/* 80311798 0030D3F8 38 81 00 09 */ addi r4, r1, 9
+/* 8031179C 0030D3FC 38 BF 00 01 */ addi r5, r31, 1
+/* 803117A0 0030D400 38 C0 00 00 */ li r6, 0
+/* 803117A4 0030D404 38 E0 00 01 */ li r7, 1
+/* 803117A8 0030D408 48 00 75 61 */ bl func_80318D08
+lbl_803117AC:
+/* 803117AC 0030D40C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803117B0 0030D410 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803117B4 0030D414 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803117B8 0030D418 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 803117BC 0030D41C 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 803117C0 0030D420 7C 08 03 A6 */ mtlr r0
+/* 803117C4 0030D424 38 21 00 20 */ addi r1, r1, 0x20
+/* 803117C8 0030D428 4E 80 00 20 */ blr
+
+.global VFiPFFAT12_WriteFATEntryPage
+VFiPFFAT12_WriteFATEntryPage:
+/* 803117CC 0030D42C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803117D0 0030D430 7C 08 02 A6 */ mflr r0
+/* 803117D4 0030D434 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803117D8 0030D438 39 61 00 30 */ addi r11, r1, 0x30
+/* 803117DC 0030D43C 4B EB 59 41 */ bl _savegpr_24
+/* 803117E0 0030D440 2C 03 00 00 */ cmpwi r3, 0
+/* 803117E4 0030D444 7C 79 1B 78 */ mr r25, r3
+/* 803117E8 0030D448 7C 9A 23 78 */ mr r26, r4
+/* 803117EC 0030D44C 7C BB 2B 78 */ mr r27, r5
+/* 803117F0 0030D450 7C DC 33 78 */ mr r28, r6
+/* 803117F4 0030D454 3B C0 00 00 */ li r30, 0
+/* 803117F8 0030D458 40 82 00 0C */ bne lbl_80311804
+/* 803117FC 0030D45C 38 60 00 0A */ li r3, 0xa
+/* 80311800 0030D460 48 00 04 40 */ b lbl_80311C40
+lbl_80311804:
+/* 80311804 0030D464 28 04 00 02 */ cmplwi r4, 2
+/* 80311808 0030D468 41 80 00 14 */ blt lbl_8031181C
+/* 8031180C 0030D46C 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80311810 0030D470 38 05 00 02 */ addi r0, r5, 2
+/* 80311814 0030D474 7C 04 00 40 */ cmplw r4, r0
+/* 80311818 0030D478 41 80 00 1C */ blt lbl_80311834
+lbl_8031181C:
+/* 8031181C 0030D47C 2C 04 00 00 */ cmpwi r4, 0
+/* 80311820 0030D480 41 82 00 14 */ beq lbl_80311834
+/* 80311824 0030D484 28 04 00 01 */ cmplwi r4, 1
+/* 80311828 0030D488 41 82 00 0C */ beq lbl_80311834
+/* 8031182C 0030D48C 38 60 00 0E */ li r3, 0xe
+/* 80311830 0030D490 48 00 04 10 */ b lbl_80311C40
+lbl_80311834:
+/* 80311834 0030D494 54 80 FC 7E */ rlwinm r0, r4, 0x1f, 0x11, 0x1f
+/* 80311838 0030D498 88 E3 00 20 */ lbz r7, 0x20(r3)
+/* 8031183C 0030D49C 7C 04 02 14 */ add r0, r4, r0
+/* 80311840 0030D4A0 80 A6 00 00 */ lwz r5, 0(r6)
+/* 80311844 0030D4A4 54 06 04 3E */ clrlwi r6, r0, 0x10
+/* 80311848 0030D4A8 80 83 00 28 */ lwz r4, 0x28(r3)
+/* 8031184C 0030D4AC 7C C0 3C 30 */ srw r0, r6, r7
+/* 80311850 0030D4B0 A1 03 00 00 */ lhz r8, 0(r3)
+/* 80311854 0030D4B4 7C 04 02 14 */ add r0, r4, r0
+/* 80311858 0030D4B8 80 85 00 18 */ lwz r4, 0x18(r5)
+/* 8031185C 0030D4BC 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 80311860 0030D4C0 7C 04 E8 40 */ cmplw r4, r29
+/* 80311864 0030D4C4 38 08 FF FF */ addi r0, r8, -1
+/* 80311868 0030D4C8 7C DF 00 38 */ and r31, r6, r0
+/* 8031186C 0030D4CC 41 81 00 14 */ bgt lbl_80311880
+/* 80311870 0030D4D0 80 03 16 00 */ lwz r0, 0x1600(r3)
+/* 80311874 0030D4D4 7C 04 02 14 */ add r0, r4, r0
+/* 80311878 0030D4D8 7C 00 E8 40 */ cmplw r0, r29
+/* 8031187C 0030D4DC 41 81 00 B4 */ bgt lbl_80311930
+lbl_80311880:
+/* 80311880 0030D4E0 7F 23 CB 78 */ mr r3, r25
+/* 80311884 0030D4E4 7C A4 2B 78 */ mr r4, r5
+/* 80311888 0030D4E8 4B FF E5 E1 */ bl VFiPFFAT_UpdateFATEntry
+/* 8031188C 0030D4EC 2C 03 00 00 */ cmpwi r3, 0
+/* 80311890 0030D4F0 41 82 00 08 */ beq lbl_80311898
+/* 80311894 0030D4F4 48 00 03 AC */ b lbl_80311C40
+lbl_80311898:
+/* 80311898 0030D4F8 A0 79 00 18 */ lhz r3, 0x18(r25)
+/* 8031189C 0030D4FC 3B 00 00 01 */ li r24, 1
+/* 803118A0 0030D500 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 803118A4 0030D504 41 82 00 08 */ beq lbl_803118AC
+/* 803118A8 0030D508 54 78 07 7E */ clrlwi r24, r3, 0x1d
+lbl_803118AC:
+/* 803118AC 0030D50C 7F 23 CB 78 */ mr r3, r25
+/* 803118B0 0030D510 7F A4 EB 78 */ mr r4, r29
+/* 803118B4 0030D514 7F 85 E3 78 */ mr r5, r28
+/* 803118B8 0030D518 4B FF 8F 95 */ bl VFiPFCACHE_ReadFATPage
+/* 803118BC 0030D51C 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 803118C0 0030D520 7C 7E 1B 78 */ mr r30, r3
+/* 803118C4 0030D524 40 82 00 50 */ bne lbl_80311914
+/* 803118C8 0030D528 81 99 18 90 */ lwz r12, 0x1890(r25)
+/* 803118CC 0030D52C 2C 0C 00 00 */ cmpwi r12, 0
+/* 803118D0 0030D530 41 82 00 44 */ beq lbl_80311914
+/* 803118D4 0030D534 80 79 18 70 */ lwz r3, 0x1870(r25)
+/* 803118D8 0030D538 7D 89 03 A6 */ mtctr r12
+/* 803118DC 0030D53C 4E 80 04 21 */ bctrl
+/* 803118E0 0030D540 2C 03 00 00 */ cmpwi r3, 0
+/* 803118E4 0030D544 41 82 00 40 */ beq lbl_80311924
+/* 803118E8 0030D548 2C 03 00 01 */ cmpwi r3, 1
+/* 803118EC 0030D54C 40 82 00 28 */ bne lbl_80311914
+/* 803118F0 0030D550 88 19 00 22 */ lbz r0, 0x22(r25)
+/* 803118F4 0030D554 28 00 00 02 */ cmplwi r0, 2
+/* 803118F8 0030D558 41 80 00 1C */ blt lbl_80311914
+/* 803118FC 0030D55C 7C 18 00 40 */ cmplw r24, r0
+/* 80311900 0030D560 40 80 00 14 */ bge lbl_80311914
+/* 80311904 0030D564 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 80311908 0030D568 3B 18 00 01 */ addi r24, r24, 1
+/* 8031190C 0030D56C 7F BD 02 14 */ add r29, r29, r0
+/* 80311910 0030D570 48 00 00 14 */ b lbl_80311924
+lbl_80311914:
+/* 80311914 0030D574 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311918 0030D578 41 82 00 0C */ beq lbl_80311924
+/* 8031191C 0030D57C 7F C3 F3 78 */ mr r3, r30
+/* 80311920 0030D580 48 00 03 20 */ b lbl_80311C40
+lbl_80311924:
+/* 80311924 0030D584 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311928 0030D588 40 82 FF 84 */ bne lbl_803118AC
+/* 8031192C 0030D58C 48 00 00 28 */ b lbl_80311954
+lbl_80311930:
+/* 80311930 0030D590 80 05 00 04 */ lwz r0, 4(r5)
+/* 80311934 0030D594 80 65 00 08 */ lwz r3, 8(r5)
+/* 80311938 0030D598 7C 00 18 50 */ subf r0, r0, r3
+/* 8031193C 0030D59C 7C 00 3E 30 */ sraw r0, r0, r7
+/* 80311940 0030D5A0 7C 04 02 14 */ add r0, r4, r0
+/* 80311944 0030D5A4 7C 1D 00 40 */ cmplw r29, r0
+/* 80311948 0030D5A8 41 82 00 0C */ beq lbl_80311954
+/* 8031194C 0030D5AC 7C 03 42 14 */ add r0, r3, r8
+/* 80311950 0030D5B0 90 05 00 08 */ stw r0, 8(r5)
+lbl_80311954:
+/* 80311954 0030D5B4 57 40 07 FF */ clrlwi. r0, r26, 0x1f
+/* 80311958 0030D5B8 41 82 01 70 */ beq lbl_80311AC8
+/* 8031195C 0030D5BC 80 9C 00 00 */ lwz r4, 0(r28)
+/* 80311960 0030D5C0 57 E3 04 3E */ clrlwi r3, r31, 0x10
+/* 80311964 0030D5C4 80 84 00 08 */ lwz r4, 8(r4)
+/* 80311968 0030D5C8 7C 04 18 AE */ lbzx r0, r4, r3
+/* 8031196C 0030D5CC 54 00 07 3E */ clrlwi r0, r0, 0x1c
+/* 80311970 0030D5D0 53 60 26 36 */ rlwimi r0, r27, 4, 0x18, 0x1b
+/* 80311974 0030D5D4 7C 04 19 AE */ stbx r0, r4, r3
+/* 80311978 0030D5D8 80 7C 00 00 */ lwz r3, 0(r28)
+/* 8031197C 0030D5DC 4B FF 8C 75 */ bl VFiPFCACHE_UpdateModifiedSector
+/* 80311980 0030D5E0 A1 19 00 00 */ lhz r8, 0(r25)
+/* 80311984 0030D5E4 57 E5 04 3E */ clrlwi r5, r31, 0x10
+/* 80311988 0030D5E8 38 08 FF FF */ addi r0, r8, -1
+/* 8031198C 0030D5EC 7C 05 00 40 */ cmplw r5, r0
+/* 80311990 0030D5F0 40 82 01 20 */ bne lbl_80311AB0
+/* 80311994 0030D5F4 80 9C 00 00 */ lwz r4, 0(r28)
+/* 80311998 0030D5F8 38 DD 00 01 */ addi r6, r29, 1
+/* 8031199C 0030D5FC 80 E4 00 18 */ lwz r7, 0x18(r4)
+/* 803119A0 0030D600 7C 07 30 40 */ cmplw r7, r6
+/* 803119A4 0030D604 41 81 00 14 */ bgt lbl_803119B8
+/* 803119A8 0030D608 80 19 16 00 */ lwz r0, 0x1600(r25)
+/* 803119AC 0030D60C 7C 07 02 14 */ add r0, r7, r0
+/* 803119B0 0030D610 7C 00 30 40 */ cmplw r0, r6
+/* 803119B4 0030D614 41 81 00 B8 */ bgt lbl_80311A6C
+lbl_803119B8:
+/* 803119B8 0030D618 7F 23 CB 78 */ mr r3, r25
+/* 803119BC 0030D61C 4B FF E4 AD */ bl VFiPFFAT_UpdateFATEntry
+/* 803119C0 0030D620 2C 03 00 00 */ cmpwi r3, 0
+/* 803119C4 0030D624 41 82 00 08 */ beq lbl_803119CC
+/* 803119C8 0030D628 48 00 02 78 */ b lbl_80311C40
+lbl_803119CC:
+/* 803119CC 0030D62C A0 79 00 18 */ lhz r3, 0x18(r25)
+/* 803119D0 0030D630 3B 40 00 01 */ li r26, 1
+/* 803119D4 0030D634 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 803119D8 0030D638 41 82 00 08 */ beq lbl_803119E0
+/* 803119DC 0030D63C 54 7A 07 7E */ clrlwi r26, r3, 0x1d
+lbl_803119E0:
+/* 803119E0 0030D640 7F 23 CB 78 */ mr r3, r25
+/* 803119E4 0030D644 7F 85 E3 78 */ mr r5, r28
+/* 803119E8 0030D648 38 9D 00 01 */ addi r4, r29, 1
+/* 803119EC 0030D64C 4B FF 8E 61 */ bl VFiPFCACHE_ReadFATPage
+/* 803119F0 0030D650 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 803119F4 0030D654 7C 7E 1B 78 */ mr r30, r3
+/* 803119F8 0030D658 40 82 00 50 */ bne lbl_80311A48
+/* 803119FC 0030D65C 81 99 18 90 */ lwz r12, 0x1890(r25)
+/* 80311A00 0030D660 2C 0C 00 00 */ cmpwi r12, 0
+/* 80311A04 0030D664 41 82 00 44 */ beq lbl_80311A48
+/* 80311A08 0030D668 80 79 18 70 */ lwz r3, 0x1870(r25)
+/* 80311A0C 0030D66C 7D 89 03 A6 */ mtctr r12
+/* 80311A10 0030D670 4E 80 04 21 */ bctrl
+/* 80311A14 0030D674 2C 03 00 00 */ cmpwi r3, 0
+/* 80311A18 0030D678 41 82 00 40 */ beq lbl_80311A58
+/* 80311A1C 0030D67C 2C 03 00 01 */ cmpwi r3, 1
+/* 80311A20 0030D680 40 82 00 28 */ bne lbl_80311A48
+/* 80311A24 0030D684 88 19 00 22 */ lbz r0, 0x22(r25)
+/* 80311A28 0030D688 28 00 00 02 */ cmplwi r0, 2
+/* 80311A2C 0030D68C 41 80 00 1C */ blt lbl_80311A48
+/* 80311A30 0030D690 7C 1A 00 40 */ cmplw r26, r0
+/* 80311A34 0030D694 40 80 00 14 */ bge lbl_80311A48
+/* 80311A38 0030D698 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 80311A3C 0030D69C 3B 5A 00 01 */ addi r26, r26, 1
+/* 80311A40 0030D6A0 7F BD 02 14 */ add r29, r29, r0
+/* 80311A44 0030D6A4 48 00 00 14 */ b lbl_80311A58
+lbl_80311A48:
+/* 80311A48 0030D6A8 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311A4C 0030D6AC 41 82 00 0C */ beq lbl_80311A58
+/* 80311A50 0030D6B0 7F C3 F3 78 */ mr r3, r30
+/* 80311A54 0030D6B4 48 00 01 EC */ b lbl_80311C40
+lbl_80311A58:
+/* 80311A58 0030D6B8 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311A5C 0030D6BC 40 82 FF 84 */ bne lbl_803119E0
+/* 80311A60 0030D6C0 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311A64 0030D6C4 4B FF 8B 8D */ bl VFiPFCACHE_UpdateModifiedSector
+/* 80311A68 0030D6C8 48 00 00 34 */ b lbl_80311A9C
+lbl_80311A6C:
+/* 80311A6C 0030D6CC 80 64 00 04 */ lwz r3, 4(r4)
+/* 80311A70 0030D6D0 80 A4 00 08 */ lwz r5, 8(r4)
+/* 80311A74 0030D6D4 88 19 00 20 */ lbz r0, 0x20(r25)
+/* 80311A78 0030D6D8 7C 63 28 50 */ subf r3, r3, r5
+/* 80311A7C 0030D6DC 7C 60 06 30 */ sraw r0, r3, r0
+/* 80311A80 0030D6E0 7C 07 02 14 */ add r0, r7, r0
+/* 80311A84 0030D6E4 7C 06 00 40 */ cmplw r6, r0
+/* 80311A88 0030D6E8 41 82 00 14 */ beq lbl_80311A9C
+/* 80311A8C 0030D6EC 7C 05 42 14 */ add r0, r5, r8
+/* 80311A90 0030D6F0 90 04 00 08 */ stw r0, 8(r4)
+/* 80311A94 0030D6F4 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311A98 0030D6F8 4B FF 8B 59 */ bl VFiPFCACHE_UpdateModifiedSector
+lbl_80311A9C:
+/* 80311A9C 0030D6FC 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311AA0 0030D700 57 60 E6 3E */ rlwinm r0, r27, 0x1c, 0x18, 0x1f
+/* 80311AA4 0030D704 80 63 00 08 */ lwz r3, 8(r3)
+/* 80311AA8 0030D708 98 03 00 00 */ stb r0, 0(r3)
+/* 80311AAC 0030D70C 48 00 01 90 */ b lbl_80311C3C
+lbl_80311AB0:
+/* 80311AB0 0030D710 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311AB4 0030D714 57 64 E6 3E */ rlwinm r4, r27, 0x1c, 0x18, 0x1f
+/* 80311AB8 0030D718 80 03 00 08 */ lwz r0, 8(r3)
+/* 80311ABC 0030D71C 7C 65 02 14 */ add r3, r5, r0
+/* 80311AC0 0030D720 98 83 00 01 */ stb r4, 1(r3)
+/* 80311AC4 0030D724 48 00 01 78 */ b lbl_80311C3C
+lbl_80311AC8:
+/* 80311AC8 0030D728 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311ACC 0030D72C 57 E0 04 3E */ clrlwi r0, r31, 0x10
+/* 80311AD0 0030D730 80 63 00 08 */ lwz r3, 8(r3)
+/* 80311AD4 0030D734 7F 63 01 AE */ stbx r27, r3, r0
+/* 80311AD8 0030D738 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311ADC 0030D73C 4B FF 8B 15 */ bl VFiPFCACHE_UpdateModifiedSector
+/* 80311AE0 0030D740 A1 19 00 00 */ lhz r8, 0(r25)
+/* 80311AE4 0030D744 57 E5 04 3E */ clrlwi r5, r31, 0x10
+/* 80311AE8 0030D748 38 08 FF FF */ addi r0, r8, -1
+/* 80311AEC 0030D74C 7C 05 00 40 */ cmplw r5, r0
+/* 80311AF0 0030D750 40 82 01 2C */ bne lbl_80311C1C
+/* 80311AF4 0030D754 80 9C 00 00 */ lwz r4, 0(r28)
+/* 80311AF8 0030D758 38 DD 00 01 */ addi r6, r29, 1
+/* 80311AFC 0030D75C 80 E4 00 18 */ lwz r7, 0x18(r4)
+/* 80311B00 0030D760 7C 07 30 40 */ cmplw r7, r6
+/* 80311B04 0030D764 41 81 00 14 */ bgt lbl_80311B18
+/* 80311B08 0030D768 80 19 16 00 */ lwz r0, 0x1600(r25)
+/* 80311B0C 0030D76C 7C 07 02 14 */ add r0, r7, r0
+/* 80311B10 0030D770 7C 00 30 40 */ cmplw r0, r6
+/* 80311B14 0030D774 41 81 00 B8 */ bgt lbl_80311BCC
+lbl_80311B18:
+/* 80311B18 0030D778 7F 23 CB 78 */ mr r3, r25
+/* 80311B1C 0030D77C 4B FF E3 4D */ bl VFiPFFAT_UpdateFATEntry
+/* 80311B20 0030D780 2C 03 00 00 */ cmpwi r3, 0
+/* 80311B24 0030D784 41 82 00 08 */ beq lbl_80311B2C
+/* 80311B28 0030D788 48 00 01 18 */ b lbl_80311C40
+lbl_80311B2C:
+/* 80311B2C 0030D78C A0 79 00 18 */ lhz r3, 0x18(r25)
+/* 80311B30 0030D790 3B 40 00 01 */ li r26, 1
+/* 80311B34 0030D794 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 80311B38 0030D798 41 82 00 08 */ beq lbl_80311B40
+/* 80311B3C 0030D79C 54 7A 07 7E */ clrlwi r26, r3, 0x1d
+lbl_80311B40:
+/* 80311B40 0030D7A0 7F 23 CB 78 */ mr r3, r25
+/* 80311B44 0030D7A4 7F 85 E3 78 */ mr r5, r28
+/* 80311B48 0030D7A8 38 9D 00 01 */ addi r4, r29, 1
+/* 80311B4C 0030D7AC 4B FF 8D 01 */ bl VFiPFCACHE_ReadFATPage
+/* 80311B50 0030D7B0 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80311B54 0030D7B4 7C 7E 1B 78 */ mr r30, r3
+/* 80311B58 0030D7B8 40 82 00 50 */ bne lbl_80311BA8
+/* 80311B5C 0030D7BC 81 99 18 90 */ lwz r12, 0x1890(r25)
+/* 80311B60 0030D7C0 2C 0C 00 00 */ cmpwi r12, 0
+/* 80311B64 0030D7C4 41 82 00 44 */ beq lbl_80311BA8
+/* 80311B68 0030D7C8 80 79 18 70 */ lwz r3, 0x1870(r25)
+/* 80311B6C 0030D7CC 7D 89 03 A6 */ mtctr r12
+/* 80311B70 0030D7D0 4E 80 04 21 */ bctrl
+/* 80311B74 0030D7D4 2C 03 00 00 */ cmpwi r3, 0
+/* 80311B78 0030D7D8 41 82 00 40 */ beq lbl_80311BB8
+/* 80311B7C 0030D7DC 2C 03 00 01 */ cmpwi r3, 1
+/* 80311B80 0030D7E0 40 82 00 28 */ bne lbl_80311BA8
+/* 80311B84 0030D7E4 88 19 00 22 */ lbz r0, 0x22(r25)
+/* 80311B88 0030D7E8 28 00 00 02 */ cmplwi r0, 2
+/* 80311B8C 0030D7EC 41 80 00 1C */ blt lbl_80311BA8
+/* 80311B90 0030D7F0 7C 1A 00 40 */ cmplw r26, r0
+/* 80311B94 0030D7F4 40 80 00 14 */ bge lbl_80311BA8
+/* 80311B98 0030D7F8 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 80311B9C 0030D7FC 3B 5A 00 01 */ addi r26, r26, 1
+/* 80311BA0 0030D800 7F BD 02 14 */ add r29, r29, r0
+/* 80311BA4 0030D804 48 00 00 14 */ b lbl_80311BB8
+lbl_80311BA8:
+/* 80311BA8 0030D808 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311BAC 0030D80C 41 82 00 0C */ beq lbl_80311BB8
+/* 80311BB0 0030D810 7F C3 F3 78 */ mr r3, r30
+/* 80311BB4 0030D814 48 00 00 8C */ b lbl_80311C40
+lbl_80311BB8:
+/* 80311BB8 0030D818 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311BBC 0030D81C 40 82 FF 84 */ bne lbl_80311B40
+/* 80311BC0 0030D820 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311BC4 0030D824 4B FF 8A 2D */ bl VFiPFCACHE_UpdateModifiedSector
+/* 80311BC8 0030D828 48 00 00 34 */ b lbl_80311BFC
+lbl_80311BCC:
+/* 80311BCC 0030D82C 80 64 00 04 */ lwz r3, 4(r4)
+/* 80311BD0 0030D830 80 A4 00 08 */ lwz r5, 8(r4)
+/* 80311BD4 0030D834 88 19 00 20 */ lbz r0, 0x20(r25)
+/* 80311BD8 0030D838 7C 63 28 50 */ subf r3, r3, r5
+/* 80311BDC 0030D83C 7C 60 06 30 */ sraw r0, r3, r0
+/* 80311BE0 0030D840 7C 07 02 14 */ add r0, r7, r0
+/* 80311BE4 0030D844 7C 06 00 40 */ cmplw r6, r0
+/* 80311BE8 0030D848 41 82 00 14 */ beq lbl_80311BFC
+/* 80311BEC 0030D84C 7C 05 42 14 */ add r0, r5, r8
+/* 80311BF0 0030D850 90 04 00 08 */ stw r0, 8(r4)
+/* 80311BF4 0030D854 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311BF8 0030D858 4B FF 89 F9 */ bl VFiPFCACHE_UpdateModifiedSector
+lbl_80311BFC:
+/* 80311BFC 0030D85C 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80311C00 0030D860 57 60 C6 3E */ rlwinm r0, r27, 0x18, 0x18, 0x1f
+/* 80311C04 0030D864 80 83 00 08 */ lwz r4, 8(r3)
+/* 80311C08 0030D868 88 64 00 00 */ lbz r3, 0(r4)
+/* 80311C0C 0030D86C 54 63 06 36 */ rlwinm r3, r3, 0, 0x18, 0x1b
+/* 80311C10 0030D870 7C 60 03 78 */ or r0, r3, r0
+/* 80311C14 0030D874 98 04 00 00 */ stb r0, 0(r4)
+/* 80311C18 0030D878 48 00 00 24 */ b lbl_80311C3C
+lbl_80311C1C:
+/* 80311C1C 0030D87C 80 9C 00 00 */ lwz r4, 0(r28)
+/* 80311C20 0030D880 57 63 C6 3E */ rlwinm r3, r27, 0x18, 0x18, 0x1f
+/* 80311C24 0030D884 80 04 00 08 */ lwz r0, 8(r4)
+/* 80311C28 0030D888 7C 85 02 14 */ add r4, r5, r0
+/* 80311C2C 0030D88C 88 04 00 01 */ lbz r0, 1(r4)
+/* 80311C30 0030D890 54 00 06 36 */ rlwinm r0, r0, 0, 0x18, 0x1b
+/* 80311C34 0030D894 7C 60 03 78 */ or r0, r3, r0
+/* 80311C38 0030D898 98 04 00 01 */ stb r0, 1(r4)
+lbl_80311C3C:
+/* 80311C3C 0030D89C 7F C3 F3 78 */ mr r3, r30
+lbl_80311C40:
+/* 80311C40 0030D8A0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311C44 0030D8A4 4B EB 55 25 */ bl _restgpr_24
+/* 80311C48 0030D8A8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80311C4C 0030D8AC 7C 08 03 A6 */ mtlr r0
+/* 80311C50 0030D8B0 38 21 00 30 */ addi r1, r1, 0x30
+/* 80311C54 0030D8B4 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_fat16.s b/asm/SDK/VF/pf_fat16.s new file mode 100644 index 0000000..d5b13d5 --- /dev/null +++ b/asm/SDK/VF/pf_fat16.s @@ -0,0 +1,398 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFAT16_ReadFATEntry
+VFiPFFAT16_ReadFATEntry:
+/* 80311C58 0030D8B8 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80311C5C 0030D8BC 7C 08 02 A6 */ mflr r0
+/* 80311C60 0030D8C0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80311C64 0030D8C4 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311C68 0030D8C8 4B EB 54 BD */ bl _savegpr_26
+/* 80311C6C 0030D8CC 2C 03 00 00 */ cmpwi r3, 0
+/* 80311C70 0030D8D0 7C 7D 1B 78 */ mr r29, r3
+/* 80311C74 0030D8D4 7C BE 2B 78 */ mr r30, r5
+/* 80311C78 0030D8D8 40 82 00 14 */ bne lbl_80311C8C
+/* 80311C7C 0030D8DC 38 00 FF FF */ li r0, -1
+/* 80311C80 0030D8E0 38 60 00 0A */ li r3, 0xa
+/* 80311C84 0030D8E4 90 05 00 00 */ stw r0, 0(r5)
+/* 80311C88 0030D8E8 48 00 01 1C */ b lbl_80311DA4
+lbl_80311C8C:
+/* 80311C8C 0030D8EC 28 04 00 02 */ cmplwi r4, 2
+/* 80311C90 0030D8F0 41 80 00 14 */ blt lbl_80311CA4
+/* 80311C94 0030D8F4 80 C3 00 34 */ lwz r6, 0x34(r3)
+/* 80311C98 0030D8F8 38 06 00 02 */ addi r0, r6, 2
+/* 80311C9C 0030D8FC 7C 04 00 40 */ cmplw r4, r0
+/* 80311CA0 0030D900 41 80 00 24 */ blt lbl_80311CC4
+lbl_80311CA4:
+/* 80311CA4 0030D904 2C 04 00 00 */ cmpwi r4, 0
+/* 80311CA8 0030D908 41 82 00 1C */ beq lbl_80311CC4
+/* 80311CAC 0030D90C 28 04 00 01 */ cmplwi r4, 1
+/* 80311CB0 0030D910 41 82 00 14 */ beq lbl_80311CC4
+/* 80311CB4 0030D914 38 00 FF FF */ li r0, -1
+/* 80311CB8 0030D918 38 60 00 0E */ li r3, 0xe
+/* 80311CBC 0030D91C 90 05 00 00 */ stw r0, 0(r5)
+/* 80311CC0 0030D920 48 00 00 E4 */ b lbl_80311DA4
+lbl_80311CC4:
+/* 80311CC4 0030D924 A1 03 00 18 */ lhz r8, 0x18(r3)
+/* 80311CC8 0030D928 54 87 08 3C */ slwi r7, r4, 1
+/* 80311CCC 0030D92C 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 80311CD0 0030D930 3B E0 00 01 */ li r31, 1
+/* 80311CD4 0030D934 A0 83 00 00 */ lhz r4, 0(r3)
+/* 80311CD8 0030D938 55 00 06 31 */ rlwinm. r0, r8, 0, 0x18, 0x18
+/* 80311CDC 0030D93C 80 C3 00 28 */ lwz r6, 0x28(r3)
+/* 80311CE0 0030D940 7C E3 2C 30 */ srw r3, r7, r5
+/* 80311CE4 0030D944 38 04 FF FF */ addi r0, r4, -1
+/* 80311CE8 0030D948 7C 66 1A 14 */ add r3, r6, r3
+/* 80311CEC 0030D94C 7C E0 00 38 */ and r0, r7, r0
+/* 80311CF0 0030D950 54 7C 04 3E */ clrlwi r28, r3, 0x10
+/* 80311CF4 0030D954 54 1B 04 3E */ clrlwi r27, r0, 0x10
+/* 80311CF8 0030D958 41 82 00 08 */ beq lbl_80311D00
+/* 80311CFC 0030D95C 55 1F 07 7E */ clrlwi r31, r8, 0x1d
+lbl_80311D00:
+/* 80311D00 0030D960 7F A3 EB 78 */ mr r3, r29
+/* 80311D04 0030D964 7F 85 E3 78 */ mr r5, r28
+/* 80311D08 0030D968 7F 66 DB 78 */ mr r6, r27
+/* 80311D0C 0030D96C 38 81 00 08 */ addi r4, r1, 8
+/* 80311D10 0030D970 38 E0 00 02 */ li r7, 2
+/* 80311D14 0030D974 48 00 6C 5D */ bl func_80318970
+/* 80311D18 0030D978 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80311D1C 0030D97C 7C 7A 1B 78 */ mr r26, r3
+/* 80311D20 0030D980 40 82 00 50 */ bne lbl_80311D70
+/* 80311D24 0030D984 81 9D 18 90 */ lwz r12, 0x1890(r29)
+/* 80311D28 0030D988 2C 0C 00 00 */ cmpwi r12, 0
+/* 80311D2C 0030D98C 41 82 00 44 */ beq lbl_80311D70
+/* 80311D30 0030D990 80 7D 18 70 */ lwz r3, 0x1870(r29)
+/* 80311D34 0030D994 7D 89 03 A6 */ mtctr r12
+/* 80311D38 0030D998 4E 80 04 21 */ bctrl
+/* 80311D3C 0030D99C 2C 03 00 00 */ cmpwi r3, 0
+/* 80311D40 0030D9A0 41 82 00 48 */ beq lbl_80311D88
+/* 80311D44 0030D9A4 2C 03 00 01 */ cmpwi r3, 1
+/* 80311D48 0030D9A8 40 82 00 28 */ bne lbl_80311D70
+/* 80311D4C 0030D9AC 88 1D 00 22 */ lbz r0, 0x22(r29)
+/* 80311D50 0030D9B0 28 00 00 02 */ cmplwi r0, 2
+/* 80311D54 0030D9B4 41 80 00 1C */ blt lbl_80311D70
+/* 80311D58 0030D9B8 7C 1F 00 40 */ cmplw r31, r0
+/* 80311D5C 0030D9BC 40 80 00 14 */ bge lbl_80311D70
+/* 80311D60 0030D9C0 80 1D 00 0C */ lwz r0, 0xc(r29)
+/* 80311D64 0030D9C4 3B FF 00 01 */ addi r31, r31, 1
+/* 80311D68 0030D9C8 7F 9C 02 14 */ add r28, r28, r0
+/* 80311D6C 0030D9CC 48 00 00 1C */ b lbl_80311D88
+lbl_80311D70:
+/* 80311D70 0030D9D0 2C 1A 00 00 */ cmpwi r26, 0
+/* 80311D74 0030D9D4 41 82 00 14 */ beq lbl_80311D88
+/* 80311D78 0030D9D8 38 00 FF FF */ li r0, -1
+/* 80311D7C 0030D9DC 7F 43 D3 78 */ mr r3, r26
+/* 80311D80 0030D9E0 90 1E 00 00 */ stw r0, 0(r30)
+/* 80311D84 0030D9E4 48 00 00 20 */ b lbl_80311DA4
+lbl_80311D88:
+/* 80311D88 0030D9E8 2C 1A 00 00 */ cmpwi r26, 0
+/* 80311D8C 0030D9EC 40 82 FF 74 */ bne lbl_80311D00
+/* 80311D90 0030D9F0 A0 81 00 08 */ lhz r4, 8(r1)
+/* 80311D94 0030D9F4 38 60 00 00 */ li r3, 0
+/* 80311D98 0030D9F8 54 80 44 2E */ rlwinm r0, r4, 8, 0x10, 0x17
+/* 80311D9C 0030D9FC 50 80 C6 3E */ rlwimi r0, r4, 0x18, 0x18, 0x1f
+/* 80311DA0 0030DA00 90 1E 00 00 */ stw r0, 0(r30)
+lbl_80311DA4:
+/* 80311DA4 0030DA04 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311DA8 0030DA08 4B EB 53 C9 */ bl _restgpr_26
+/* 80311DAC 0030DA0C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80311DB0 0030DA10 7C 08 03 A6 */ mtlr r0
+/* 80311DB4 0030DA14 38 21 00 30 */ addi r1, r1, 0x30
+/* 80311DB8 0030DA18 4E 80 00 20 */ blr
+
+.global VFiPFFAT16_ReadFATEntryPage
+VFiPFFAT16_ReadFATEntryPage:
+/* 80311DBC 0030DA1C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80311DC0 0030DA20 7C 08 02 A6 */ mflr r0
+/* 80311DC4 0030DA24 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80311DC8 0030DA28 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311DCC 0030DA2C 4B EB 53 55 */ bl _savegpr_25
+/* 80311DD0 0030DA30 2C 03 00 00 */ cmpwi r3, 0
+/* 80311DD4 0030DA34 7C 79 1B 78 */ mr r25, r3
+/* 80311DD8 0030DA38 7C BA 2B 78 */ mr r26, r5
+/* 80311DDC 0030DA3C 7C DB 33 78 */ mr r27, r6
+/* 80311DE0 0030DA40 3B C0 00 00 */ li r30, 0
+/* 80311DE4 0030DA44 40 82 00 0C */ bne lbl_80311DF0
+/* 80311DE8 0030DA48 38 60 00 0A */ li r3, 0xa
+/* 80311DEC 0030DA4C 48 00 01 74 */ b lbl_80311F60
+lbl_80311DF0:
+/* 80311DF0 0030DA50 28 04 00 02 */ cmplwi r4, 2
+/* 80311DF4 0030DA54 41 80 00 14 */ blt lbl_80311E08
+/* 80311DF8 0030DA58 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80311DFC 0030DA5C 38 05 00 02 */ addi r0, r5, 2
+/* 80311E00 0030DA60 7C 04 00 40 */ cmplw r4, r0
+/* 80311E04 0030DA64 41 80 00 1C */ blt lbl_80311E20
+lbl_80311E08:
+/* 80311E08 0030DA68 2C 04 00 00 */ cmpwi r4, 0
+/* 80311E0C 0030DA6C 41 82 00 14 */ beq lbl_80311E20
+/* 80311E10 0030DA70 28 04 00 01 */ cmplwi r4, 1
+/* 80311E14 0030DA74 41 82 00 0C */ beq lbl_80311E20
+/* 80311E18 0030DA78 38 60 00 0E */ li r3, 0xe
+/* 80311E1C 0030DA7C 48 00 01 44 */ b lbl_80311F60
+lbl_80311E20:
+/* 80311E20 0030DA80 A0 A3 00 18 */ lhz r5, 0x18(r3)
+/* 80311E24 0030DA84 54 9F 08 3C */ slwi r31, r4, 1
+/* 80311E28 0030DA88 88 E3 00 20 */ lbz r7, 0x20(r3)
+/* 80311E2C 0030DA8C 3B 80 00 01 */ li r28, 1
+/* 80311E30 0030DA90 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 80311E34 0030DA94 80 83 00 28 */ lwz r4, 0x28(r3)
+/* 80311E38 0030DA98 7F E0 3C 30 */ srw r0, r31, r7
+/* 80311E3C 0030DA9C 7C 04 02 14 */ add r0, r4, r0
+/* 80311E40 0030DAA0 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 80311E44 0030DAA4 41 82 00 08 */ beq lbl_80311E4C
+/* 80311E48 0030DAA8 54 BC 07 7E */ clrlwi r28, r5, 0x1d
+lbl_80311E4C:
+/* 80311E4C 0030DAAC 80 86 00 00 */ lwz r4, 0(r6)
+/* 80311E50 0030DAB0 80 C4 00 18 */ lwz r6, 0x18(r4)
+/* 80311E54 0030DAB4 7C 06 E8 40 */ cmplw r6, r29
+/* 80311E58 0030DAB8 41 81 00 14 */ bgt lbl_80311E6C
+/* 80311E5C 0030DABC 80 03 16 00 */ lwz r0, 0x1600(r3)
+/* 80311E60 0030DAC0 7C 06 02 14 */ add r0, r6, r0
+/* 80311E64 0030DAC4 7C 00 E8 40 */ cmplw r0, r29
+/* 80311E68 0030DAC8 41 81 00 A8 */ bgt lbl_80311F10
+lbl_80311E6C:
+/* 80311E6C 0030DACC A0 04 00 02 */ lhz r0, 2(r4)
+/* 80311E70 0030DAD0 28 00 00 01 */ cmplwi r0, 1
+/* 80311E74 0030DAD4 40 82 00 18 */ bne lbl_80311E8C
+/* 80311E78 0030DAD8 7F 23 CB 78 */ mr r3, r25
+/* 80311E7C 0030DADC 4B FF DF ED */ bl VFiPFFAT_UpdateFATEntry
+/* 80311E80 0030DAE0 2C 03 00 00 */ cmpwi r3, 0
+/* 80311E84 0030DAE4 41 82 00 08 */ beq lbl_80311E8C
+/* 80311E88 0030DAE8 48 00 00 D8 */ b lbl_80311F60
+lbl_80311E8C:
+/* 80311E8C 0030DAEC 7F 23 CB 78 */ mr r3, r25
+/* 80311E90 0030DAF0 7F A4 EB 78 */ mr r4, r29
+/* 80311E94 0030DAF4 7F 65 DB 78 */ mr r5, r27
+/* 80311E98 0030DAF8 4B FF 89 B5 */ bl VFiPFCACHE_ReadFATPage
+/* 80311E9C 0030DAFC 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80311EA0 0030DB00 7C 7E 1B 78 */ mr r30, r3
+/* 80311EA4 0030DB04 40 82 00 50 */ bne lbl_80311EF4
+/* 80311EA8 0030DB08 81 99 18 90 */ lwz r12, 0x1890(r25)
+/* 80311EAC 0030DB0C 2C 0C 00 00 */ cmpwi r12, 0
+/* 80311EB0 0030DB10 41 82 00 44 */ beq lbl_80311EF4
+/* 80311EB4 0030DB14 80 79 18 70 */ lwz r3, 0x1870(r25)
+/* 80311EB8 0030DB18 7D 89 03 A6 */ mtctr r12
+/* 80311EBC 0030DB1C 4E 80 04 21 */ bctrl
+/* 80311EC0 0030DB20 2C 03 00 00 */ cmpwi r3, 0
+/* 80311EC4 0030DB24 41 82 00 40 */ beq lbl_80311F04
+/* 80311EC8 0030DB28 2C 03 00 01 */ cmpwi r3, 1
+/* 80311ECC 0030DB2C 40 82 00 28 */ bne lbl_80311EF4
+/* 80311ED0 0030DB30 88 19 00 22 */ lbz r0, 0x22(r25)
+/* 80311ED4 0030DB34 28 00 00 02 */ cmplwi r0, 2
+/* 80311ED8 0030DB38 41 80 00 1C */ blt lbl_80311EF4
+/* 80311EDC 0030DB3C 7C 1C 00 40 */ cmplw r28, r0
+/* 80311EE0 0030DB40 40 80 00 14 */ bge lbl_80311EF4
+/* 80311EE4 0030DB44 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 80311EE8 0030DB48 3B 9C 00 01 */ addi r28, r28, 1
+/* 80311EEC 0030DB4C 7F BD 02 14 */ add r29, r29, r0
+/* 80311EF0 0030DB50 48 00 00 14 */ b lbl_80311F04
+lbl_80311EF4:
+/* 80311EF4 0030DB54 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311EF8 0030DB58 41 82 00 0C */ beq lbl_80311F04
+/* 80311EFC 0030DB5C 7F C3 F3 78 */ mr r3, r30
+/* 80311F00 0030DB60 48 00 00 60 */ b lbl_80311F60
+lbl_80311F04:
+/* 80311F04 0030DB64 2C 1E 00 00 */ cmpwi r30, 0
+/* 80311F08 0030DB68 40 82 FF 84 */ bne lbl_80311E8C
+/* 80311F0C 0030DB6C 48 00 00 2C */ b lbl_80311F38
+lbl_80311F10:
+/* 80311F10 0030DB70 80 04 00 04 */ lwz r0, 4(r4)
+/* 80311F14 0030DB74 80 A4 00 08 */ lwz r5, 8(r4)
+/* 80311F18 0030DB78 7C 00 28 50 */ subf r0, r0, r5
+/* 80311F1C 0030DB7C 7C 00 3E 30 */ sraw r0, r0, r7
+/* 80311F20 0030DB80 7C 06 02 14 */ add r0, r6, r0
+/* 80311F24 0030DB84 7C 1D 00 40 */ cmplw r29, r0
+/* 80311F28 0030DB88 41 82 00 10 */ beq lbl_80311F38
+/* 80311F2C 0030DB8C A0 03 00 00 */ lhz r0, 0(r3)
+/* 80311F30 0030DB90 7C 05 02 14 */ add r0, r5, r0
+/* 80311F34 0030DB94 90 04 00 08 */ stw r0, 8(r4)
+lbl_80311F38:
+/* 80311F38 0030DB98 A0 B9 00 00 */ lhz r5, 0(r25)
+/* 80311F3C 0030DB9C 7F C3 F3 78 */ mr r3, r30
+/* 80311F40 0030DBA0 80 9B 00 00 */ lwz r4, 0(r27)
+/* 80311F44 0030DBA4 38 05 FF FF */ addi r0, r5, -1
+/* 80311F48 0030DBA8 80 84 00 08 */ lwz r4, 8(r4)
+/* 80311F4C 0030DBAC 7F E0 00 38 */ and r0, r31, r0
+/* 80311F50 0030DBB0 7C 84 02 2E */ lhzx r4, r4, r0
+/* 80311F54 0030DBB4 54 80 44 2E */ rlwinm r0, r4, 8, 0x10, 0x17
+/* 80311F58 0030DBB8 50 80 C6 3E */ rlwimi r0, r4, 0x18, 0x18, 0x1f
+/* 80311F5C 0030DBBC 90 1A 00 00 */ stw r0, 0(r26)
+lbl_80311F60:
+/* 80311F60 0030DBC0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80311F64 0030DBC4 4B EB 52 09 */ bl _restgpr_25
+/* 80311F68 0030DBC8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80311F6C 0030DBCC 7C 08 03 A6 */ mtlr r0
+/* 80311F70 0030DBD0 38 21 00 30 */ addi r1, r1, 0x30
+/* 80311F74 0030DBD4 4E 80 00 20 */ blr
+
+.global VFiPFFAT16_WriteFATEntry
+VFiPFFAT16_WriteFATEntry:
+/* 80311F78 0030DBD8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80311F7C 0030DBDC 7C 08 02 A6 */ mflr r0
+/* 80311F80 0030DBE0 2C 03 00 00 */ cmpwi r3, 0
+/* 80311F84 0030DBE4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80311F88 0030DBE8 40 82 00 0C */ bne lbl_80311F94
+/* 80311F8C 0030DBEC 38 60 00 0A */ li r3, 0xa
+/* 80311F90 0030DBF0 48 00 00 70 */ b lbl_80312000
+lbl_80311F94:
+/* 80311F94 0030DBF4 28 04 00 02 */ cmplwi r4, 2
+/* 80311F98 0030DBF8 41 80 00 14 */ blt lbl_80311FAC
+/* 80311F9C 0030DBFC 80 C3 00 34 */ lwz r6, 0x34(r3)
+/* 80311FA0 0030DC00 38 06 00 02 */ addi r0, r6, 2
+/* 80311FA4 0030DC04 7C 04 00 40 */ cmplw r4, r0
+/* 80311FA8 0030DC08 41 80 00 1C */ blt lbl_80311FC4
+lbl_80311FAC:
+/* 80311FAC 0030DC0C 2C 04 00 00 */ cmpwi r4, 0
+/* 80311FB0 0030DC10 41 82 00 14 */ beq lbl_80311FC4
+/* 80311FB4 0030DC14 28 04 00 01 */ cmplwi r4, 1
+/* 80311FB8 0030DC18 41 82 00 0C */ beq lbl_80311FC4
+/* 80311FBC 0030DC1C 38 60 00 0E */ li r3, 0xe
+/* 80311FC0 0030DC20 48 00 00 40 */ b lbl_80312000
+lbl_80311FC4:
+/* 80311FC4 0030DC24 A0 C3 00 00 */ lhz r6, 0(r3)
+/* 80311FC8 0030DC28 54 89 08 3C */ slwi r9, r4, 1
+/* 80311FCC 0030DC2C 88 E3 00 20 */ lbz r7, 0x20(r3)
+/* 80311FD0 0030DC30 38 01 00 08 */ addi r0, r1, 8
+/* 80311FD4 0030DC34 38 86 FF FF */ addi r4, r6, -1
+/* 80311FD8 0030DC38 81 03 00 28 */ lwz r8, 0x28(r3)
+/* 80311FDC 0030DC3C 7D 26 3C 30 */ srw r6, r9, r7
+/* 80311FE0 0030DC40 38 E0 00 02 */ li r7, 2
+/* 80311FE4 0030DC44 7C C8 32 14 */ add r6, r8, r6
+/* 80311FE8 0030DC48 7C A0 07 2C */ sthbrx r5, 0, r0
+/* 80311FEC 0030DC4C 7D 24 20 38 */ and r4, r9, r4
+/* 80311FF0 0030DC50 54 C5 04 3E */ clrlwi r5, r6, 0x10
+/* 80311FF4 0030DC54 54 86 04 3E */ clrlwi r6, r4, 0x10
+/* 80311FF8 0030DC58 38 81 00 08 */ addi r4, r1, 8
+/* 80311FFC 0030DC5C 48 00 6D 0D */ bl func_80318D08
+lbl_80312000:
+/* 80312000 0030DC60 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80312004 0030DC64 7C 08 03 A6 */ mtlr r0
+/* 80312008 0030DC68 38 21 00 10 */ addi r1, r1, 0x10
+/* 8031200C 0030DC6C 4E 80 00 20 */ blr
+
+.global VFiPFFAT16_WriteFATEntryPage
+VFiPFFAT16_WriteFATEntryPage:
+/* 80312010 0030DC70 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80312014 0030DC74 7C 08 02 A6 */ mflr r0
+/* 80312018 0030DC78 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8031201C 0030DC7C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312020 0030DC80 4B EB 51 01 */ bl _savegpr_25
+/* 80312024 0030DC84 2C 03 00 00 */ cmpwi r3, 0
+/* 80312028 0030DC88 7C 7A 1B 78 */ mr r26, r3
+/* 8031202C 0030DC8C 7C BB 2B 78 */ mr r27, r5
+/* 80312030 0030DC90 7C DC 33 78 */ mr r28, r6
+/* 80312034 0030DC94 3B C0 00 00 */ li r30, 0
+/* 80312038 0030DC98 40 82 00 0C */ bne lbl_80312044
+/* 8031203C 0030DC9C 38 60 00 0A */ li r3, 0xa
+/* 80312040 0030DCA0 48 00 01 78 */ b lbl_803121B8
+lbl_80312044:
+/* 80312044 0030DCA4 28 04 00 02 */ cmplwi r4, 2
+/* 80312048 0030DCA8 41 80 00 14 */ blt lbl_8031205C
+/* 8031204C 0030DCAC 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80312050 0030DCB0 38 05 00 02 */ addi r0, r5, 2
+/* 80312054 0030DCB4 7C 04 00 40 */ cmplw r4, r0
+/* 80312058 0030DCB8 41 80 00 1C */ blt lbl_80312074
+lbl_8031205C:
+/* 8031205C 0030DCBC 2C 04 00 00 */ cmpwi r4, 0
+/* 80312060 0030DCC0 41 82 00 14 */ beq lbl_80312074
+/* 80312064 0030DCC4 28 04 00 01 */ cmplwi r4, 1
+/* 80312068 0030DCC8 41 82 00 0C */ beq lbl_80312074
+/* 8031206C 0030DCCC 38 60 00 0E */ li r3, 0xe
+/* 80312070 0030DCD0 48 00 01 48 */ b lbl_803121B8
+lbl_80312074:
+/* 80312074 0030DCD4 89 03 00 20 */ lbz r8, 0x20(r3)
+/* 80312078 0030DCD8 54 87 08 3C */ slwi r7, r4, 1
+/* 8031207C 0030DCDC 80 86 00 00 */ lwz r4, 0(r6)
+/* 80312080 0030DCE0 80 A3 00 28 */ lwz r5, 0x28(r3)
+/* 80312084 0030DCE4 7C E0 44 30 */ srw r0, r7, r8
+/* 80312088 0030DCE8 A0 C3 00 00 */ lhz r6, 0(r3)
+/* 8031208C 0030DCEC 7C 05 02 14 */ add r0, r5, r0
+/* 80312090 0030DCF0 80 A4 00 18 */ lwz r5, 0x18(r4)
+/* 80312094 0030DCF4 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 80312098 0030DCF8 38 06 FF FF */ addi r0, r6, -1
+/* 8031209C 0030DCFC 7C E0 00 38 */ and r0, r7, r0
+/* 803120A0 0030DD00 7C 05 E8 40 */ cmplw r5, r29
+/* 803120A4 0030DD04 54 1F 04 3E */ clrlwi r31, r0, 0x10
+/* 803120A8 0030DD08 41 81 00 14 */ bgt lbl_803120BC
+/* 803120AC 0030DD0C 80 03 16 00 */ lwz r0, 0x1600(r3)
+/* 803120B0 0030DD10 7C 05 02 14 */ add r0, r5, r0
+/* 803120B4 0030DD14 7C 00 E8 40 */ cmplw r0, r29
+/* 803120B8 0030DD18 41 81 00 B0 */ bgt lbl_80312168
+lbl_803120BC:
+/* 803120BC 0030DD1C 7F 43 D3 78 */ mr r3, r26
+/* 803120C0 0030DD20 4B FF DD A9 */ bl VFiPFFAT_UpdateFATEntry
+/* 803120C4 0030DD24 2C 03 00 00 */ cmpwi r3, 0
+/* 803120C8 0030DD28 41 82 00 08 */ beq lbl_803120D0
+/* 803120CC 0030DD2C 48 00 00 EC */ b lbl_803121B8
+lbl_803120D0:
+/* 803120D0 0030DD30 A0 7A 00 18 */ lhz r3, 0x18(r26)
+/* 803120D4 0030DD34 3B 20 00 01 */ li r25, 1
+/* 803120D8 0030DD38 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 803120DC 0030DD3C 41 82 00 08 */ beq lbl_803120E4
+/* 803120E0 0030DD40 54 79 07 7E */ clrlwi r25, r3, 0x1d
+lbl_803120E4:
+/* 803120E4 0030DD44 7F 43 D3 78 */ mr r3, r26
+/* 803120E8 0030DD48 7F A4 EB 78 */ mr r4, r29
+/* 803120EC 0030DD4C 7F 85 E3 78 */ mr r5, r28
+/* 803120F0 0030DD50 4B FF 87 5D */ bl VFiPFCACHE_ReadFATPage
+/* 803120F4 0030DD54 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 803120F8 0030DD58 7C 7E 1B 78 */ mr r30, r3
+/* 803120FC 0030DD5C 40 82 00 50 */ bne lbl_8031214C
+/* 80312100 0030DD60 81 9A 18 90 */ lwz r12, 0x1890(r26)
+/* 80312104 0030DD64 2C 0C 00 00 */ cmpwi r12, 0
+/* 80312108 0030DD68 41 82 00 44 */ beq lbl_8031214C
+/* 8031210C 0030DD6C 80 7A 18 70 */ lwz r3, 0x1870(r26)
+/* 80312110 0030DD70 7D 89 03 A6 */ mtctr r12
+/* 80312114 0030DD74 4E 80 04 21 */ bctrl
+/* 80312118 0030DD78 2C 03 00 00 */ cmpwi r3, 0
+/* 8031211C 0030DD7C 41 82 00 40 */ beq lbl_8031215C
+/* 80312120 0030DD80 2C 03 00 01 */ cmpwi r3, 1
+/* 80312124 0030DD84 40 82 00 28 */ bne lbl_8031214C
+/* 80312128 0030DD88 88 1A 00 22 */ lbz r0, 0x22(r26)
+/* 8031212C 0030DD8C 28 00 00 02 */ cmplwi r0, 2
+/* 80312130 0030DD90 41 80 00 1C */ blt lbl_8031214C
+/* 80312134 0030DD94 7C 19 00 40 */ cmplw r25, r0
+/* 80312138 0030DD98 40 80 00 14 */ bge lbl_8031214C
+/* 8031213C 0030DD9C 80 1A 00 0C */ lwz r0, 0xc(r26)
+/* 80312140 0030DDA0 3B 39 00 01 */ addi r25, r25, 1
+/* 80312144 0030DDA4 7F BD 02 14 */ add r29, r29, r0
+/* 80312148 0030DDA8 48 00 00 14 */ b lbl_8031215C
+lbl_8031214C:
+/* 8031214C 0030DDAC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312150 0030DDB0 41 82 00 0C */ beq lbl_8031215C
+/* 80312154 0030DDB4 7F C3 F3 78 */ mr r3, r30
+/* 80312158 0030DDB8 48 00 00 60 */ b lbl_803121B8
+lbl_8031215C:
+/* 8031215C 0030DDBC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312160 0030DDC0 40 82 FF 84 */ bne lbl_803120E4
+/* 80312164 0030DDC4 48 00 00 28 */ b lbl_8031218C
+lbl_80312168:
+/* 80312168 0030DDC8 80 04 00 04 */ lwz r0, 4(r4)
+/* 8031216C 0030DDCC 80 64 00 08 */ lwz r3, 8(r4)
+/* 80312170 0030DDD0 7C 00 18 50 */ subf r0, r0, r3
+/* 80312174 0030DDD4 7C 00 46 30 */ sraw r0, r0, r8
+/* 80312178 0030DDD8 7C 05 02 14 */ add r0, r5, r0
+/* 8031217C 0030DDDC 7C 1D 00 40 */ cmplw r29, r0
+/* 80312180 0030DDE0 41 82 00 0C */ beq lbl_8031218C
+/* 80312184 0030DDE4 7C 03 32 14 */ add r0, r3, r6
+/* 80312188 0030DDE8 90 04 00 08 */ stw r0, 8(r4)
+lbl_8031218C:
+/* 8031218C 0030DDEC 80 7C 00 00 */ lwz r3, 0(r28)
+/* 80312190 0030DDF0 57 64 C6 3E */ rlwinm r4, r27, 0x18, 0x18, 0x1f
+/* 80312194 0030DDF4 80 63 00 08 */ lwz r3, 8(r3)
+/* 80312198 0030DDF8 7F 63 F9 AE */ stbx r27, r3, r31
+/* 8031219C 0030DDFC 80 7C 00 00 */ lwz r3, 0(r28)
+/* 803121A0 0030DE00 80 03 00 08 */ lwz r0, 8(r3)
+/* 803121A4 0030DE04 7C 60 FA 14 */ add r3, r0, r31
+/* 803121A8 0030DE08 98 83 00 01 */ stb r4, 1(r3)
+/* 803121AC 0030DE0C 80 7C 00 00 */ lwz r3, 0(r28)
+/* 803121B0 0030DE10 4B FF 84 41 */ bl VFiPFCACHE_UpdateModifiedSector
+/* 803121B4 0030DE14 7F C3 F3 78 */ mr r3, r30
+lbl_803121B8:
+/* 803121B8 0030DE18 39 61 00 30 */ addi r11, r1, 0x30
+/* 803121BC 0030DE1C 4B EB 4F B1 */ bl _restgpr_25
+/* 803121C0 0030DE20 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803121C4 0030DE24 7C 08 03 A6 */ mtlr r0
+/* 803121C8 0030DE28 38 21 00 30 */ addi r1, r1, 0x30
+/* 803121CC 0030DE2C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_fat32.s b/asm/SDK/VF/pf_fat32.s new file mode 100644 index 0000000..d023801 --- /dev/null +++ b/asm/SDK/VF/pf_fat32.s @@ -0,0 +1,449 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFAT32_ReadFATEntry
+VFiPFFAT32_ReadFATEntry:
+/* 803121D0 0030DE30 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803121D4 0030DE34 7C 08 02 A6 */ mflr r0
+/* 803121D8 0030DE38 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803121DC 0030DE3C 39 61 00 30 */ addi r11, r1, 0x30
+/* 803121E0 0030DE40 4B EB 4F 45 */ bl _savegpr_26
+/* 803121E4 0030DE44 2C 03 00 00 */ cmpwi r3, 0
+/* 803121E8 0030DE48 7C 7D 1B 78 */ mr r29, r3
+/* 803121EC 0030DE4C 7C BE 2B 78 */ mr r30, r5
+/* 803121F0 0030DE50 40 82 00 14 */ bne lbl_80312204
+/* 803121F4 0030DE54 38 00 FF FF */ li r0, -1
+/* 803121F8 0030DE58 38 60 00 0A */ li r3, 0xa
+/* 803121FC 0030DE5C 90 05 00 00 */ stw r0, 0(r5)
+/* 80312200 0030DE60 48 00 01 2C */ b lbl_8031232C
+lbl_80312204:
+/* 80312204 0030DE64 28 04 00 02 */ cmplwi r4, 2
+/* 80312208 0030DE68 41 80 00 14 */ blt lbl_8031221C
+/* 8031220C 0030DE6C 80 C3 00 34 */ lwz r6, 0x34(r3)
+/* 80312210 0030DE70 38 06 00 02 */ addi r0, r6, 2
+/* 80312214 0030DE74 7C 04 00 40 */ cmplw r4, r0
+/* 80312218 0030DE78 41 80 00 24 */ blt lbl_8031223C
+lbl_8031221C:
+/* 8031221C 0030DE7C 2C 04 00 00 */ cmpwi r4, 0
+/* 80312220 0030DE80 41 82 00 1C */ beq lbl_8031223C
+/* 80312224 0030DE84 28 04 00 01 */ cmplwi r4, 1
+/* 80312228 0030DE88 41 82 00 14 */ beq lbl_8031223C
+/* 8031222C 0030DE8C 38 00 FF FF */ li r0, -1
+/* 80312230 0030DE90 38 60 00 0E */ li r3, 0xe
+/* 80312234 0030DE94 90 05 00 00 */ stw r0, 0(r5)
+/* 80312238 0030DE98 48 00 00 F4 */ b lbl_8031232C
+lbl_8031223C:
+/* 8031223C 0030DE9C A0 E3 00 18 */ lhz r7, 0x18(r3)
+/* 80312240 0030DEA0 54 88 10 3A */ slwi r8, r4, 2
+/* 80312244 0030DEA4 88 A3 00 20 */ lbz r5, 0x20(r3)
+/* 80312248 0030DEA8 3B E0 00 01 */ li r31, 1
+/* 8031224C 0030DEAC A0 83 00 00 */ lhz r4, 0(r3)
+/* 80312250 0030DEB0 54 E0 06 31 */ rlwinm. r0, r7, 0, 0x18, 0x18
+/* 80312254 0030DEB4 80 C3 00 28 */ lwz r6, 0x28(r3)
+/* 80312258 0030DEB8 7D 03 2C 30 */ srw r3, r8, r5
+/* 8031225C 0030DEBC 38 04 FF FF */ addi r0, r4, -1
+/* 80312260 0030DEC0 7C 66 1A 14 */ add r3, r6, r3
+/* 80312264 0030DEC4 7D 00 00 38 */ and r0, r8, r0
+/* 80312268 0030DEC8 54 7C 04 3E */ clrlwi r28, r3, 0x10
+/* 8031226C 0030DECC 54 1B 04 3E */ clrlwi r27, r0, 0x10
+/* 80312270 0030DED0 41 82 00 08 */ beq lbl_80312278
+/* 80312274 0030DED4 54 FF 07 7E */ clrlwi r31, r7, 0x1d
+lbl_80312278:
+/* 80312278 0030DED8 7F A3 EB 78 */ mr r3, r29
+/* 8031227C 0030DEDC 7F 85 E3 78 */ mr r5, r28
+/* 80312280 0030DEE0 7F 66 DB 78 */ mr r6, r27
+/* 80312284 0030DEE4 38 81 00 08 */ addi r4, r1, 8
+/* 80312288 0030DEE8 38 E0 00 04 */ li r7, 4
+/* 8031228C 0030DEEC 48 00 66 E5 */ bl func_80318970
+/* 80312290 0030DEF0 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80312294 0030DEF4 7C 7A 1B 78 */ mr r26, r3
+/* 80312298 0030DEF8 40 82 00 50 */ bne lbl_803122E8
+/* 8031229C 0030DEFC 81 9D 18 90 */ lwz r12, 0x1890(r29)
+/* 803122A0 0030DF00 2C 0C 00 00 */ cmpwi r12, 0
+/* 803122A4 0030DF04 41 82 00 44 */ beq lbl_803122E8
+/* 803122A8 0030DF08 80 7D 18 70 */ lwz r3, 0x1870(r29)
+/* 803122AC 0030DF0C 7D 89 03 A6 */ mtctr r12
+/* 803122B0 0030DF10 4E 80 04 21 */ bctrl
+/* 803122B4 0030DF14 2C 03 00 00 */ cmpwi r3, 0
+/* 803122B8 0030DF18 41 82 00 48 */ beq lbl_80312300
+/* 803122BC 0030DF1C 2C 03 00 01 */ cmpwi r3, 1
+/* 803122C0 0030DF20 40 82 00 28 */ bne lbl_803122E8
+/* 803122C4 0030DF24 88 1D 00 22 */ lbz r0, 0x22(r29)
+/* 803122C8 0030DF28 28 00 00 02 */ cmplwi r0, 2
+/* 803122CC 0030DF2C 41 80 00 1C */ blt lbl_803122E8
+/* 803122D0 0030DF30 7C 1F 00 40 */ cmplw r31, r0
+/* 803122D4 0030DF34 40 80 00 14 */ bge lbl_803122E8
+/* 803122D8 0030DF38 80 1D 00 0C */ lwz r0, 0xc(r29)
+/* 803122DC 0030DF3C 3B FF 00 01 */ addi r31, r31, 1
+/* 803122E0 0030DF40 7F 9C 02 14 */ add r28, r28, r0
+/* 803122E4 0030DF44 48 00 00 1C */ b lbl_80312300
+lbl_803122E8:
+/* 803122E8 0030DF48 2C 1A 00 00 */ cmpwi r26, 0
+/* 803122EC 0030DF4C 41 82 00 14 */ beq lbl_80312300
+/* 803122F0 0030DF50 38 00 FF FF */ li r0, -1
+/* 803122F4 0030DF54 7F 43 D3 78 */ mr r3, r26
+/* 803122F8 0030DF58 90 1E 00 00 */ stw r0, 0(r30)
+/* 803122FC 0030DF5C 48 00 00 30 */ b lbl_8031232C
+lbl_80312300:
+/* 80312300 0030DF60 2C 1A 00 00 */ cmpwi r26, 0
+/* 80312304 0030DF64 40 82 FF 74 */ bne lbl_80312278
+/* 80312308 0030DF68 80 A1 00 08 */ lwz r5, 8(r1)
+/* 8031230C 0030DF6C 38 60 00 00 */ li r3, 0
+/* 80312310 0030DF70 54 A4 42 1E */ rlwinm r4, r5, 8, 8, 0xf
+/* 80312314 0030DF74 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
+/* 80312318 0030DF78 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
+/* 8031231C 0030DF7C 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
+/* 80312320 0030DF80 7C 80 03 78 */ or r0, r4, r0
+/* 80312324 0030DF84 54 00 01 3E */ clrlwi r0, r0, 4
+/* 80312328 0030DF88 90 1E 00 00 */ stw r0, 0(r30)
+lbl_8031232C:
+/* 8031232C 0030DF8C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312330 0030DF90 4B EB 4E 41 */ bl _restgpr_26
+/* 80312334 0030DF94 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80312338 0030DF98 7C 08 03 A6 */ mtlr r0
+/* 8031233C 0030DF9C 38 21 00 30 */ addi r1, r1, 0x30
+/* 80312340 0030DFA0 4E 80 00 20 */ blr
+
+.global VFiPFFAT32_ReadFATEntryPage
+VFiPFFAT32_ReadFATEntryPage:
+/* 80312344 0030DFA4 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80312348 0030DFA8 7C 08 02 A6 */ mflr r0
+/* 8031234C 0030DFAC 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80312350 0030DFB0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312354 0030DFB4 4B EB 4D CD */ bl _savegpr_25
+/* 80312358 0030DFB8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031235C 0030DFBC 7C 79 1B 78 */ mr r25, r3
+/* 80312360 0030DFC0 7C BA 2B 78 */ mr r26, r5
+/* 80312364 0030DFC4 7C DB 33 78 */ mr r27, r6
+/* 80312368 0030DFC8 3B C0 00 00 */ li r30, 0
+/* 8031236C 0030DFCC 40 82 00 0C */ bne lbl_80312378
+/* 80312370 0030DFD0 38 60 00 0A */ li r3, 0xa
+/* 80312374 0030DFD4 48 00 01 84 */ b lbl_803124F8
+lbl_80312378:
+/* 80312378 0030DFD8 28 04 00 02 */ cmplwi r4, 2
+/* 8031237C 0030DFDC 41 80 00 14 */ blt lbl_80312390
+/* 80312380 0030DFE0 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80312384 0030DFE4 38 05 00 02 */ addi r0, r5, 2
+/* 80312388 0030DFE8 7C 04 00 40 */ cmplw r4, r0
+/* 8031238C 0030DFEC 41 80 00 1C */ blt lbl_803123A8
+lbl_80312390:
+/* 80312390 0030DFF0 2C 04 00 00 */ cmpwi r4, 0
+/* 80312394 0030DFF4 41 82 00 14 */ beq lbl_803123A8
+/* 80312398 0030DFF8 28 04 00 01 */ cmplwi r4, 1
+/* 8031239C 0030DFFC 41 82 00 0C */ beq lbl_803123A8
+/* 803123A0 0030E000 38 60 00 0E */ li r3, 0xe
+/* 803123A4 0030E004 48 00 01 54 */ b lbl_803124F8
+lbl_803123A8:
+/* 803123A8 0030E008 A0 A3 00 18 */ lhz r5, 0x18(r3)
+/* 803123AC 0030E00C 54 9F 10 3A */ slwi r31, r4, 2
+/* 803123B0 0030E010 88 E3 00 20 */ lbz r7, 0x20(r3)
+/* 803123B4 0030E014 3B 80 00 01 */ li r28, 1
+/* 803123B8 0030E018 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18
+/* 803123BC 0030E01C 80 83 00 28 */ lwz r4, 0x28(r3)
+/* 803123C0 0030E020 7F E0 3C 30 */ srw r0, r31, r7
+/* 803123C4 0030E024 7C 04 02 14 */ add r0, r4, r0
+/* 803123C8 0030E028 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 803123CC 0030E02C 41 82 00 08 */ beq lbl_803123D4
+/* 803123D0 0030E030 54 BC 07 7E */ clrlwi r28, r5, 0x1d
+lbl_803123D4:
+/* 803123D4 0030E034 80 86 00 00 */ lwz r4, 0(r6)
+/* 803123D8 0030E038 80 C4 00 18 */ lwz r6, 0x18(r4)
+/* 803123DC 0030E03C 7C 06 E8 40 */ cmplw r6, r29
+/* 803123E0 0030E040 41 81 00 14 */ bgt lbl_803123F4
+/* 803123E4 0030E044 80 03 16 00 */ lwz r0, 0x1600(r3)
+/* 803123E8 0030E048 7C 06 02 14 */ add r0, r6, r0
+/* 803123EC 0030E04C 7C 00 E8 40 */ cmplw r0, r29
+/* 803123F0 0030E050 41 81 00 A8 */ bgt lbl_80312498
+lbl_803123F4:
+/* 803123F4 0030E054 A0 04 00 02 */ lhz r0, 2(r4)
+/* 803123F8 0030E058 28 00 00 01 */ cmplwi r0, 1
+/* 803123FC 0030E05C 40 82 00 18 */ bne lbl_80312414
+/* 80312400 0030E060 7F 23 CB 78 */ mr r3, r25
+/* 80312404 0030E064 4B FF DA 65 */ bl VFiPFFAT_UpdateFATEntry
+/* 80312408 0030E068 2C 03 00 00 */ cmpwi r3, 0
+/* 8031240C 0030E06C 41 82 00 08 */ beq lbl_80312414
+/* 80312410 0030E070 48 00 00 E8 */ b lbl_803124F8
+lbl_80312414:
+/* 80312414 0030E074 7F 23 CB 78 */ mr r3, r25
+/* 80312418 0030E078 7F A4 EB 78 */ mr r4, r29
+/* 8031241C 0030E07C 7F 65 DB 78 */ mr r5, r27
+/* 80312420 0030E080 4B FF 84 2D */ bl VFiPFCACHE_ReadFATPage
+/* 80312424 0030E084 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80312428 0030E088 7C 7E 1B 78 */ mr r30, r3
+/* 8031242C 0030E08C 40 82 00 50 */ bne lbl_8031247C
+/* 80312430 0030E090 81 99 18 90 */ lwz r12, 0x1890(r25)
+/* 80312434 0030E094 2C 0C 00 00 */ cmpwi r12, 0
+/* 80312438 0030E098 41 82 00 44 */ beq lbl_8031247C
+/* 8031243C 0030E09C 80 79 18 70 */ lwz r3, 0x1870(r25)
+/* 80312440 0030E0A0 7D 89 03 A6 */ mtctr r12
+/* 80312444 0030E0A4 4E 80 04 21 */ bctrl
+/* 80312448 0030E0A8 2C 03 00 00 */ cmpwi r3, 0
+/* 8031244C 0030E0AC 41 82 00 40 */ beq lbl_8031248C
+/* 80312450 0030E0B0 2C 03 00 01 */ cmpwi r3, 1
+/* 80312454 0030E0B4 40 82 00 28 */ bne lbl_8031247C
+/* 80312458 0030E0B8 88 19 00 22 */ lbz r0, 0x22(r25)
+/* 8031245C 0030E0BC 28 00 00 02 */ cmplwi r0, 2
+/* 80312460 0030E0C0 41 80 00 1C */ blt lbl_8031247C
+/* 80312464 0030E0C4 7C 1C 00 40 */ cmplw r28, r0
+/* 80312468 0030E0C8 40 80 00 14 */ bge lbl_8031247C
+/* 8031246C 0030E0CC 80 19 00 0C */ lwz r0, 0xc(r25)
+/* 80312470 0030E0D0 3B 9C 00 01 */ addi r28, r28, 1
+/* 80312474 0030E0D4 7F BD 02 14 */ add r29, r29, r0
+/* 80312478 0030E0D8 48 00 00 14 */ b lbl_8031248C
+lbl_8031247C:
+/* 8031247C 0030E0DC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312480 0030E0E0 41 82 00 0C */ beq lbl_8031248C
+/* 80312484 0030E0E4 7F C3 F3 78 */ mr r3, r30
+/* 80312488 0030E0E8 48 00 00 70 */ b lbl_803124F8
+lbl_8031248C:
+/* 8031248C 0030E0EC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312490 0030E0F0 40 82 FF 84 */ bne lbl_80312414
+/* 80312494 0030E0F4 48 00 00 2C */ b lbl_803124C0
+lbl_80312498:
+/* 80312498 0030E0F8 80 04 00 04 */ lwz r0, 4(r4)
+/* 8031249C 0030E0FC 80 A4 00 08 */ lwz r5, 8(r4)
+/* 803124A0 0030E100 7C 00 28 50 */ subf r0, r0, r5
+/* 803124A4 0030E104 7C 00 3E 30 */ sraw r0, r0, r7
+/* 803124A8 0030E108 7C 06 02 14 */ add r0, r6, r0
+/* 803124AC 0030E10C 7C 1D 00 40 */ cmplw r29, r0
+/* 803124B0 0030E110 41 82 00 10 */ beq lbl_803124C0
+/* 803124B4 0030E114 A0 03 00 00 */ lhz r0, 0(r3)
+/* 803124B8 0030E118 7C 05 02 14 */ add r0, r5, r0
+/* 803124BC 0030E11C 90 04 00 08 */ stw r0, 8(r4)
+lbl_803124C0:
+/* 803124C0 0030E120 A0 B9 00 00 */ lhz r5, 0(r25)
+/* 803124C4 0030E124 7F C3 F3 78 */ mr r3, r30
+/* 803124C8 0030E128 80 9B 00 00 */ lwz r4, 0(r27)
+/* 803124CC 0030E12C 38 05 FF FF */ addi r0, r5, -1
+/* 803124D0 0030E130 80 84 00 08 */ lwz r4, 8(r4)
+/* 803124D4 0030E134 7F E0 00 38 */ and r0, r31, r0
+/* 803124D8 0030E138 7C A4 00 2E */ lwzx r5, r4, r0
+/* 803124DC 0030E13C 54 A4 42 1E */ rlwinm r4, r5, 8, 8, 0xf
+/* 803124E0 0030E140 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
+/* 803124E4 0030E144 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7
+/* 803124E8 0030E148 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
+/* 803124EC 0030E14C 7C 80 03 78 */ or r0, r4, r0
+/* 803124F0 0030E150 54 00 01 3E */ clrlwi r0, r0, 4
+/* 803124F4 0030E154 90 1A 00 00 */ stw r0, 0(r26)
+lbl_803124F8:
+/* 803124F8 0030E158 39 61 00 30 */ addi r11, r1, 0x30
+/* 803124FC 0030E15C 4B EB 4C 71 */ bl _restgpr_25
+/* 80312500 0030E160 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80312504 0030E164 7C 08 03 A6 */ mtlr r0
+/* 80312508 0030E168 38 21 00 30 */ addi r1, r1, 0x30
+/* 8031250C 0030E16C 4E 80 00 20 */ blr
+
+.global VFiPFFAT32_WriteFATEntry
+VFiPFFAT32_WriteFATEntry:
+/* 80312510 0030E170 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80312514 0030E174 7C 08 02 A6 */ mflr r0
+/* 80312518 0030E178 2C 03 00 00 */ cmpwi r3, 0
+/* 8031251C 0030E17C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80312520 0030E180 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80312524 0030E184 7C BF 2B 78 */ mr r31, r5
+/* 80312528 0030E188 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 8031252C 0030E18C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80312530 0030E190 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80312534 0030E194 7C 7C 1B 78 */ mr r28, r3
+/* 80312538 0030E198 40 82 00 0C */ bne lbl_80312544
+/* 8031253C 0030E19C 38 60 00 0A */ li r3, 0xa
+/* 80312540 0030E1A0 48 00 00 D0 */ b lbl_80312610
+lbl_80312544:
+/* 80312544 0030E1A4 28 04 00 02 */ cmplwi r4, 2
+/* 80312548 0030E1A8 41 80 00 14 */ blt lbl_8031255C
+/* 8031254C 0030E1AC 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80312550 0030E1B0 38 05 00 02 */ addi r0, r5, 2
+/* 80312554 0030E1B4 7C 04 00 40 */ cmplw r4, r0
+/* 80312558 0030E1B8 41 80 00 1C */ blt lbl_80312574
+lbl_8031255C:
+/* 8031255C 0030E1BC 2C 04 00 00 */ cmpwi r4, 0
+/* 80312560 0030E1C0 41 82 00 14 */ beq lbl_80312574
+/* 80312564 0030E1C4 28 04 00 01 */ cmplwi r4, 1
+/* 80312568 0030E1C8 41 82 00 0C */ beq lbl_80312574
+/* 8031256C 0030E1CC 38 60 00 0E */ li r3, 0xe
+/* 80312570 0030E1D0 48 00 00 A0 */ b lbl_80312610
+lbl_80312574:
+/* 80312574 0030E1D4 A0 A3 00 00 */ lhz r5, 0(r3)
+/* 80312578 0030E1D8 54 88 10 3A */ slwi r8, r4, 2
+/* 8031257C 0030E1DC 88 C3 00 20 */ lbz r6, 0x20(r3)
+/* 80312580 0030E1E0 38 81 00 08 */ addi r4, r1, 8
+/* 80312584 0030E1E4 38 05 FF FF */ addi r0, r5, -1
+/* 80312588 0030E1E8 80 E3 00 28 */ lwz r7, 0x28(r3)
+/* 8031258C 0030E1EC 7D 05 34 30 */ srw r5, r8, r6
+/* 80312590 0030E1F0 7F 83 E3 78 */ mr r3, r28
+/* 80312594 0030E1F4 7C A7 2A 14 */ add r5, r7, r5
+/* 80312598 0030E1F8 7D 00 00 38 */ and r0, r8, r0
+/* 8031259C 0030E1FC 54 BE 04 3E */ clrlwi r30, r5, 0x10
+/* 803125A0 0030E200 38 E0 00 04 */ li r7, 4
+/* 803125A4 0030E204 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 803125A8 0030E208 7F C5 F3 78 */ mr r5, r30
+/* 803125AC 0030E20C 7F A6 EB 78 */ mr r6, r29
+/* 803125B0 0030E210 48 00 63 C1 */ bl func_80318970
+/* 803125B4 0030E214 2C 03 00 00 */ cmpwi r3, 0
+/* 803125B8 0030E218 41 82 00 08 */ beq lbl_803125C0
+/* 803125BC 0030E21C 48 00 00 54 */ b lbl_80312610
+lbl_803125C0:
+/* 803125C0 0030E220 80 E1 00 08 */ lwz r7, 8(r1)
+/* 803125C4 0030E224 7F 83 E3 78 */ mr r3, r28
+/* 803125C8 0030E228 7F C5 F3 78 */ mr r5, r30
+/* 803125CC 0030E22C 7F A6 EB 78 */ mr r6, r29
+/* 803125D0 0030E230 54 E8 42 1E */ rlwinm r8, r7, 8, 8, 0xf
+/* 803125D4 0030E234 54 E0 C4 2E */ rlwinm r0, r7, 0x18, 0x10, 0x17
+/* 803125D8 0030E238 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7
+/* 803125DC 0030E23C 38 81 00 08 */ addi r4, r1, 8
+/* 803125E0 0030E240 50 E0 46 3E */ rlwimi r0, r7, 8, 0x18, 0x1f
+/* 803125E4 0030E244 38 E0 00 04 */ li r7, 4
+/* 803125E8 0030E248 7D 00 03 78 */ or r0, r8, r0
+/* 803125EC 0030E24C 54 09 00 06 */ rlwinm r9, r0, 0, 0, 3
+/* 803125F0 0030E250 53 E9 01 3E */ rlwimi r9, r31, 0, 4, 0x1f
+/* 803125F4 0030E254 55 28 42 1E */ rlwinm r8, r9, 8, 8, 0xf
+/* 803125F8 0030E258 55 20 C4 2E */ rlwinm r0, r9, 0x18, 0x10, 0x17
+/* 803125FC 0030E25C 51 28 C0 0E */ rlwimi r8, r9, 0x18, 0, 7
+/* 80312600 0030E260 51 20 46 3E */ rlwimi r0, r9, 8, 0x18, 0x1f
+/* 80312604 0030E264 7D 00 03 78 */ or r0, r8, r0
+/* 80312608 0030E268 90 01 00 08 */ stw r0, 8(r1)
+/* 8031260C 0030E26C 48 00 66 FD */ bl func_80318D08
+lbl_80312610:
+/* 80312610 0030E270 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80312614 0030E274 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80312618 0030E278 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 8031261C 0030E27C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 80312620 0030E280 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 80312624 0030E284 7C 08 03 A6 */ mtlr r0
+/* 80312628 0030E288 38 21 00 20 */ addi r1, r1, 0x20
+/* 8031262C 0030E28C 4E 80 00 20 */ blr
+
+.global VFiPFFAT32_WriteFATEntryPage
+VFiPFFAT32_WriteFATEntryPage:
+/* 80312630 0030E290 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80312634 0030E294 7C 08 02 A6 */ mflr r0
+/* 80312638 0030E298 90 01 00 34 */ stw r0, 0x34(r1)
+/* 8031263C 0030E29C 39 61 00 30 */ addi r11, r1, 0x30
+/* 80312640 0030E2A0 4B EB 4A E1 */ bl _savegpr_25
+/* 80312644 0030E2A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80312648 0030E2A8 7C 7A 1B 78 */ mr r26, r3
+/* 8031264C 0030E2AC 7C BB 2B 78 */ mr r27, r5
+/* 80312650 0030E2B0 7C DC 33 78 */ mr r28, r6
+/* 80312654 0030E2B4 3B C0 00 00 */ li r30, 0
+/* 80312658 0030E2B8 40 82 00 0C */ bne lbl_80312664
+/* 8031265C 0030E2BC 38 60 00 0A */ li r3, 0xa
+/* 80312660 0030E2C0 48 00 01 98 */ b lbl_803127F8
+lbl_80312664:
+/* 80312664 0030E2C4 28 04 00 02 */ cmplwi r4, 2
+/* 80312668 0030E2C8 41 80 00 14 */ blt lbl_8031267C
+/* 8031266C 0030E2CC 80 A3 00 34 */ lwz r5, 0x34(r3)
+/* 80312670 0030E2D0 38 05 00 02 */ addi r0, r5, 2
+/* 80312674 0030E2D4 7C 04 00 40 */ cmplw r4, r0
+/* 80312678 0030E2D8 41 80 00 1C */ blt lbl_80312694
+lbl_8031267C:
+/* 8031267C 0030E2DC 2C 04 00 00 */ cmpwi r4, 0
+/* 80312680 0030E2E0 41 82 00 14 */ beq lbl_80312694
+/* 80312684 0030E2E4 28 04 00 01 */ cmplwi r4, 1
+/* 80312688 0030E2E8 41 82 00 0C */ beq lbl_80312694
+/* 8031268C 0030E2EC 38 60 00 0E */ li r3, 0xe
+/* 80312690 0030E2F0 48 00 01 68 */ b lbl_803127F8
+lbl_80312694:
+/* 80312694 0030E2F4 88 E3 00 20 */ lbz r7, 0x20(r3)
+/* 80312698 0030E2F8 54 88 10 3A */ slwi r8, r4, 2
+/* 8031269C 0030E2FC 80 86 00 00 */ lwz r4, 0(r6)
+/* 803126A0 0030E300 80 A3 00 28 */ lwz r5, 0x28(r3)
+/* 803126A4 0030E304 7D 00 3C 30 */ srw r0, r8, r7
+/* 803126A8 0030E308 A0 C3 00 00 */ lhz r6, 0(r3)
+/* 803126AC 0030E30C 7C 05 02 14 */ add r0, r5, r0
+/* 803126B0 0030E310 80 A4 00 18 */ lwz r5, 0x18(r4)
+/* 803126B4 0030E314 54 1D 04 3E */ clrlwi r29, r0, 0x10
+/* 803126B8 0030E318 38 06 FF FF */ addi r0, r6, -1
+/* 803126BC 0030E31C 7D 00 00 38 */ and r0, r8, r0
+/* 803126C0 0030E320 7C 05 E8 40 */ cmplw r5, r29
+/* 803126C4 0030E324 54 1F 04 3E */ clrlwi r31, r0, 0x10
+/* 803126C8 0030E328 41 81 00 14 */ bgt lbl_803126DC
+/* 803126CC 0030E32C 80 03 16 00 */ lwz r0, 0x1600(r3)
+/* 803126D0 0030E330 7C 05 02 14 */ add r0, r5, r0
+/* 803126D4 0030E334 7C 00 E8 40 */ cmplw r0, r29
+/* 803126D8 0030E338 41 81 00 B0 */ bgt lbl_80312788
+lbl_803126DC:
+/* 803126DC 0030E33C 7F 43 D3 78 */ mr r3, r26
+/* 803126E0 0030E340 4B FF D7 89 */ bl VFiPFFAT_UpdateFATEntry
+/* 803126E4 0030E344 2C 03 00 00 */ cmpwi r3, 0
+/* 803126E8 0030E348 41 82 00 08 */ beq lbl_803126F0
+/* 803126EC 0030E34C 48 00 01 0C */ b lbl_803127F8
+lbl_803126F0:
+/* 803126F0 0030E350 A0 7A 00 18 */ lhz r3, 0x18(r26)
+/* 803126F4 0030E354 3B 20 00 01 */ li r25, 1
+/* 803126F8 0030E358 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18
+/* 803126FC 0030E35C 41 82 00 08 */ beq lbl_80312704
+/* 80312700 0030E360 54 79 07 7E */ clrlwi r25, r3, 0x1d
+lbl_80312704:
+/* 80312704 0030E364 7F 43 D3 78 */ mr r3, r26
+/* 80312708 0030E368 7F A4 EB 78 */ mr r4, r29
+/* 8031270C 0030E36C 7F 85 E3 78 */ mr r5, r28
+/* 80312710 0030E370 4B FF 81 3D */ bl VFiPFCACHE_ReadFATPage
+/* 80312714 0030E374 2C 03 10 00 */ cmpwi r3, 0x1000
+/* 80312718 0030E378 7C 7E 1B 78 */ mr r30, r3
+/* 8031271C 0030E37C 40 82 00 50 */ bne lbl_8031276C
+/* 80312720 0030E380 81 9A 18 90 */ lwz r12, 0x1890(r26)
+/* 80312724 0030E384 2C 0C 00 00 */ cmpwi r12, 0
+/* 80312728 0030E388 41 82 00 44 */ beq lbl_8031276C
+/* 8031272C 0030E38C 80 7A 18 70 */ lwz r3, 0x1870(r26)
+/* 80312730 0030E390 7D 89 03 A6 */ mtctr r12
+/* 80312734 0030E394 4E 80 04 21 */ bctrl
+/* 80312738 0030E398 2C 03 00 00 */ cmpwi r3, 0
+/* 8031273C 0030E39C 41 82 00 40 */ beq lbl_8031277C
+/* 80312740 0030E3A0 2C 03 00 01 */ cmpwi r3, 1
+/* 80312744 0030E3A4 40 82 00 28 */ bne lbl_8031276C
+/* 80312748 0030E3A8 88 1A 00 22 */ lbz r0, 0x22(r26)
+/* 8031274C 0030E3AC 28 00 00 02 */ cmplwi r0, 2
+/* 80312750 0030E3B0 41 80 00 1C */ blt lbl_8031276C
+/* 80312754 0030E3B4 7C 19 00 40 */ cmplw r25, r0
+/* 80312758 0030E3B8 40 80 00 14 */ bge lbl_8031276C
+/* 8031275C 0030E3BC 80 1A 00 0C */ lwz r0, 0xc(r26)
+/* 80312760 0030E3C0 3B 39 00 01 */ addi r25, r25, 1
+/* 80312764 0030E3C4 7F BD 02 14 */ add r29, r29, r0
+/* 80312768 0030E3C8 48 00 00 14 */ b lbl_8031277C
+lbl_8031276C:
+/* 8031276C 0030E3CC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312770 0030E3D0 41 82 00 0C */ beq lbl_8031277C
+/* 80312774 0030E3D4 7F C3 F3 78 */ mr r3, r30
+/* 80312778 0030E3D8 48 00 00 80 */ b lbl_803127F8
+lbl_8031277C:
+/* 8031277C 0030E3DC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80312780 0030E3E0 40 82 FF 84 */ bne lbl_80312704
+/* 80312784 0030E3E4 48 00 00 28 */ b lbl_803127AC
+lbl_80312788:
+/* 80312788 0030E3E8 80 04 00 04 */ lwz r0, 4(r4)
+/* 8031278C 0030E3EC 80 64 00 08 */ lwz r3, 8(r4)
+/* 80312790 0030E3F0 7C 00 18 50 */ subf r0, r0, r3
+/* 80312794 0030E3F4 7C 00 3E 30 */ sraw r0, r0, r7
+/* 80312798 0030E3F8 7C 05 02 14 */ add r0, r5, r0
+/* 8031279C 0030E3FC 7C 1D 00 40 */ cmplw r29, r0
+/* 803127A0 0030E400 41 82 00 0C */ beq lbl_803127AC
+/* 803127A4 0030E404 7C 03 32 14 */ add r0, r3, r6
+/* 803127A8 0030E408 90 04 00 08 */ stw r0, 8(r4)
+lbl_803127AC:
+/* 803127AC 0030E40C 80 7C 00 00 */ lwz r3, 0(r28)
+/* 803127B0 0030E410 80 83 00 08 */ lwz r4, 8(r3)
+/* 803127B4 0030E414 7C A4 F8 2E */ lwzx r5, r4, r31
+/* 803127B8 0030E418 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf
+/* 803127BC 0030E41C 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
+/* 803127C0 0030E420 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7
+/* 803127C4 0030E424 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
+/* 803127C8 0030E428 7C 60 03 78 */ or r0, r3, r0
+/* 803127CC 0030E42C 54 05 00 06 */ rlwinm r5, r0, 0, 0, 3
+/* 803127D0 0030E430 53 65 01 3E */ rlwimi r5, r27, 0, 4, 0x1f
+/* 803127D4 0030E434 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf
+/* 803127D8 0030E438 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17
+/* 803127DC 0030E43C 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7
+/* 803127E0 0030E440 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f
+/* 803127E4 0030E444 7C 60 03 78 */ or r0, r3, r0
+/* 803127E8 0030E448 7C 04 F9 2E */ stwx r0, r4, r31
+/* 803127EC 0030E44C 80 7C 00 00 */ lwz r3, 0(r28)
+/* 803127F0 0030E450 4B FF 7E 01 */ bl VFiPFCACHE_UpdateModifiedSector
+/* 803127F4 0030E454 7F C3 F3 78 */ mr r3, r30
+lbl_803127F8:
+/* 803127F8 0030E458 39 61 00 30 */ addi r11, r1, 0x30
+/* 803127FC 0030E45C 4B EB 49 71 */ bl _restgpr_25
+/* 80312800 0030E460 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80312804 0030E464 7C 08 03 A6 */ mtlr r0
+/* 80312808 0030E468 38 21 00 30 */ addi r1, r1, 0x30
+/* 8031280C 0030E46C 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/pf_fatfs.s b/asm/SDK/VF/pf_fatfs.s new file mode 100644 index 0000000..3c0ce34 --- /dev/null +++ b/asm/SDK/VF/pf_fatfs.s @@ -0,0 +1,7 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFiPFFATFS_initializeFATFS
+VFiPFFATFS_initializeFATFS:
+/* 80312810 0030E470 48 00 69 D0 */ b lbl_803191E0
|