.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global VFiPFFAT16_ReadFATEntry VFiPFFAT16_ReadFATEntry: /* 80311C58 0030D8B8 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80311C5C 0030D8BC 7C 08 02 A6 */ mflr r0 /* 80311C60 0030D8C0 90 01 00 34 */ stw r0, 0x34(r1) /* 80311C64 0030D8C4 39 61 00 30 */ addi r11, r1, 0x30 /* 80311C68 0030D8C8 4B EB 54 BD */ bl _savegpr_26 /* 80311C6C 0030D8CC 2C 03 00 00 */ cmpwi r3, 0 /* 80311C70 0030D8D0 7C 7D 1B 78 */ mr r29, r3 /* 80311C74 0030D8D4 7C BE 2B 78 */ mr r30, r5 /* 80311C78 0030D8D8 40 82 00 14 */ bne lbl_80311C8C /* 80311C7C 0030D8DC 38 00 FF FF */ li r0, -1 /* 80311C80 0030D8E0 38 60 00 0A */ li r3, 0xa /* 80311C84 0030D8E4 90 05 00 00 */ stw r0, 0(r5) /* 80311C88 0030D8E8 48 00 01 1C */ b lbl_80311DA4 lbl_80311C8C: /* 80311C8C 0030D8EC 28 04 00 02 */ cmplwi r4, 2 /* 80311C90 0030D8F0 41 80 00 14 */ blt lbl_80311CA4 /* 80311C94 0030D8F4 80 C3 00 34 */ lwz r6, 0x34(r3) /* 80311C98 0030D8F8 38 06 00 02 */ addi r0, r6, 2 /* 80311C9C 0030D8FC 7C 04 00 40 */ cmplw r4, r0 /* 80311CA0 0030D900 41 80 00 24 */ blt lbl_80311CC4 lbl_80311CA4: /* 80311CA4 0030D904 2C 04 00 00 */ cmpwi r4, 0 /* 80311CA8 0030D908 41 82 00 1C */ beq lbl_80311CC4 /* 80311CAC 0030D90C 28 04 00 01 */ cmplwi r4, 1 /* 80311CB0 0030D910 41 82 00 14 */ beq lbl_80311CC4 /* 80311CB4 0030D914 38 00 FF FF */ li r0, -1 /* 80311CB8 0030D918 38 60 00 0E */ li r3, 0xe /* 80311CBC 0030D91C 90 05 00 00 */ stw r0, 0(r5) /* 80311CC0 0030D920 48 00 00 E4 */ b lbl_80311DA4 lbl_80311CC4: /* 80311CC4 0030D924 A1 03 00 18 */ lhz r8, 0x18(r3) /* 80311CC8 0030D928 54 87 08 3C */ slwi r7, r4, 1 /* 80311CCC 0030D92C 88 A3 00 20 */ lbz r5, 0x20(r3) /* 80311CD0 0030D930 3B E0 00 01 */ li r31, 1 /* 80311CD4 0030D934 A0 83 00 00 */ lhz r4, 0(r3) /* 80311CD8 0030D938 55 00 06 31 */ rlwinm. r0, r8, 0, 0x18, 0x18 /* 80311CDC 0030D93C 80 C3 00 28 */ lwz r6, 0x28(r3) /* 80311CE0 0030D940 7C E3 2C 30 */ srw r3, r7, r5 /* 80311CE4 0030D944 38 04 FF FF */ addi r0, r4, -1 /* 80311CE8 0030D948 7C 66 1A 14 */ add r3, r6, r3 /* 80311CEC 0030D94C 7C E0 00 38 */ and r0, r7, r0 /* 80311CF0 0030D950 54 7C 04 3E */ clrlwi r28, r3, 0x10 /* 80311CF4 0030D954 54 1B 04 3E */ clrlwi r27, r0, 0x10 /* 80311CF8 0030D958 41 82 00 08 */ beq lbl_80311D00 /* 80311CFC 0030D95C 55 1F 07 7E */ clrlwi r31, r8, 0x1d lbl_80311D00: /* 80311D00 0030D960 7F A3 EB 78 */ mr r3, r29 /* 80311D04 0030D964 7F 85 E3 78 */ mr r5, r28 /* 80311D08 0030D968 7F 66 DB 78 */ mr r6, r27 /* 80311D0C 0030D96C 38 81 00 08 */ addi r4, r1, 8 /* 80311D10 0030D970 38 E0 00 02 */ li r7, 2 /* 80311D14 0030D974 48 00 6C 5D */ bl VFiPFSEC_ReadFAT /* 80311D18 0030D978 2C 03 10 00 */ cmpwi r3, 0x1000 /* 80311D1C 0030D97C 7C 7A 1B 78 */ mr r26, r3 /* 80311D20 0030D980 40 82 00 50 */ bne lbl_80311D70 /* 80311D24 0030D984 81 9D 18 90 */ lwz r12, 0x1890(r29) /* 80311D28 0030D988 2C 0C 00 00 */ cmpwi r12, 0 /* 80311D2C 0030D98C 41 82 00 44 */ beq lbl_80311D70 /* 80311D30 0030D990 80 7D 18 70 */ lwz r3, 0x1870(r29) /* 80311D34 0030D994 7D 89 03 A6 */ mtctr r12 /* 80311D38 0030D998 4E 80 04 21 */ bctrl /* 80311D3C 0030D99C 2C 03 00 00 */ cmpwi r3, 0 /* 80311D40 0030D9A0 41 82 00 48 */ beq lbl_80311D88 /* 80311D44 0030D9A4 2C 03 00 01 */ cmpwi r3, 1 /* 80311D48 0030D9A8 40 82 00 28 */ bne lbl_80311D70 /* 80311D4C 0030D9AC 88 1D 00 22 */ lbz r0, 0x22(r29) /* 80311D50 0030D9B0 28 00 00 02 */ cmplwi r0, 2 /* 80311D54 0030D9B4 41 80 00 1C */ blt lbl_80311D70 /* 80311D58 0030D9B8 7C 1F 00 40 */ cmplw r31, r0 /* 80311D5C 0030D9BC 40 80 00 14 */ bge lbl_80311D70 /* 80311D60 0030D9C0 80 1D 00 0C */ lwz r0, 0xc(r29) /* 80311D64 0030D9C4 3B FF 00 01 */ addi r31, r31, 1 /* 80311D68 0030D9C8 7F 9C 02 14 */ add r28, r28, r0 /* 80311D6C 0030D9CC 48 00 00 1C */ b lbl_80311D88 lbl_80311D70: /* 80311D70 0030D9D0 2C 1A 00 00 */ cmpwi r26, 0 /* 80311D74 0030D9D4 41 82 00 14 */ beq lbl_80311D88 /* 80311D78 0030D9D8 38 00 FF FF */ li r0, -1 /* 80311D7C 0030D9DC 7F 43 D3 78 */ mr r3, r26 /* 80311D80 0030D9E0 90 1E 00 00 */ stw r0, 0(r30) /* 80311D84 0030D9E4 48 00 00 20 */ b lbl_80311DA4 lbl_80311D88: /* 80311D88 0030D9E8 2C 1A 00 00 */ cmpwi r26, 0 /* 80311D8C 0030D9EC 40 82 FF 74 */ bne lbl_80311D00 /* 80311D90 0030D9F0 A0 81 00 08 */ lhz r4, 8(r1) /* 80311D94 0030D9F4 38 60 00 00 */ li r3, 0 /* 80311D98 0030D9F8 54 80 44 2E */ rlwinm r0, r4, 8, 0x10, 0x17 /* 80311D9C 0030D9FC 50 80 C6 3E */ rlwimi r0, r4, 0x18, 0x18, 0x1f /* 80311DA0 0030DA00 90 1E 00 00 */ stw r0, 0(r30) lbl_80311DA4: /* 80311DA4 0030DA04 39 61 00 30 */ addi r11, r1, 0x30 /* 80311DA8 0030DA08 4B EB 53 C9 */ bl _restgpr_26 /* 80311DAC 0030DA0C 80 01 00 34 */ lwz r0, 0x34(r1) /* 80311DB0 0030DA10 7C 08 03 A6 */ mtlr r0 /* 80311DB4 0030DA14 38 21 00 30 */ addi r1, r1, 0x30 /* 80311DB8 0030DA18 4E 80 00 20 */ blr .global VFiPFFAT16_ReadFATEntryPage VFiPFFAT16_ReadFATEntryPage: /* 80311DBC 0030DA1C 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80311DC0 0030DA20 7C 08 02 A6 */ mflr r0 /* 80311DC4 0030DA24 90 01 00 34 */ stw r0, 0x34(r1) /* 80311DC8 0030DA28 39 61 00 30 */ addi r11, r1, 0x30 /* 80311DCC 0030DA2C 4B EB 53 55 */ bl _savegpr_25 /* 80311DD0 0030DA30 2C 03 00 00 */ cmpwi r3, 0 /* 80311DD4 0030DA34 7C 79 1B 78 */ mr r25, r3 /* 80311DD8 0030DA38 7C BA 2B 78 */ mr r26, r5 /* 80311DDC 0030DA3C 7C DB 33 78 */ mr r27, r6 /* 80311DE0 0030DA40 3B C0 00 00 */ li r30, 0 /* 80311DE4 0030DA44 40 82 00 0C */ bne lbl_80311DF0 /* 80311DE8 0030DA48 38 60 00 0A */ li r3, 0xa /* 80311DEC 0030DA4C 48 00 01 74 */ b lbl_80311F60 lbl_80311DF0: /* 80311DF0 0030DA50 28 04 00 02 */ cmplwi r4, 2 /* 80311DF4 0030DA54 41 80 00 14 */ blt lbl_80311E08 /* 80311DF8 0030DA58 80 A3 00 34 */ lwz r5, 0x34(r3) /* 80311DFC 0030DA5C 38 05 00 02 */ addi r0, r5, 2 /* 80311E00 0030DA60 7C 04 00 40 */ cmplw r4, r0 /* 80311E04 0030DA64 41 80 00 1C */ blt lbl_80311E20 lbl_80311E08: /* 80311E08 0030DA68 2C 04 00 00 */ cmpwi r4, 0 /* 80311E0C 0030DA6C 41 82 00 14 */ beq lbl_80311E20 /* 80311E10 0030DA70 28 04 00 01 */ cmplwi r4, 1 /* 80311E14 0030DA74 41 82 00 0C */ beq lbl_80311E20 /* 80311E18 0030DA78 38 60 00 0E */ li r3, 0xe /* 80311E1C 0030DA7C 48 00 01 44 */ b lbl_80311F60 lbl_80311E20: /* 80311E20 0030DA80 A0 A3 00 18 */ lhz r5, 0x18(r3) /* 80311E24 0030DA84 54 9F 08 3C */ slwi r31, r4, 1 /* 80311E28 0030DA88 88 E3 00 20 */ lbz r7, 0x20(r3) /* 80311E2C 0030DA8C 3B 80 00 01 */ li r28, 1 /* 80311E30 0030DA90 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18 /* 80311E34 0030DA94 80 83 00 28 */ lwz r4, 0x28(r3) /* 80311E38 0030DA98 7F E0 3C 30 */ srw r0, r31, r7 /* 80311E3C 0030DA9C 7C 04 02 14 */ add r0, r4, r0 /* 80311E40 0030DAA0 54 1D 04 3E */ clrlwi r29, r0, 0x10 /* 80311E44 0030DAA4 41 82 00 08 */ beq lbl_80311E4C /* 80311E48 0030DAA8 54 BC 07 7E */ clrlwi r28, r5, 0x1d lbl_80311E4C: /* 80311E4C 0030DAAC 80 86 00 00 */ lwz r4, 0(r6) /* 80311E50 0030DAB0 80 C4 00 18 */ lwz r6, 0x18(r4) /* 80311E54 0030DAB4 7C 06 E8 40 */ cmplw r6, r29 /* 80311E58 0030DAB8 41 81 00 14 */ bgt lbl_80311E6C /* 80311E5C 0030DABC 80 03 16 00 */ lwz r0, 0x1600(r3) /* 80311E60 0030DAC0 7C 06 02 14 */ add r0, r6, r0 /* 80311E64 0030DAC4 7C 00 E8 40 */ cmplw r0, r29 /* 80311E68 0030DAC8 41 81 00 A8 */ bgt lbl_80311F10 lbl_80311E6C: /* 80311E6C 0030DACC A0 04 00 02 */ lhz r0, 2(r4) /* 80311E70 0030DAD0 28 00 00 01 */ cmplwi r0, 1 /* 80311E74 0030DAD4 40 82 00 18 */ bne lbl_80311E8C /* 80311E78 0030DAD8 7F 23 CB 78 */ mr r3, r25 /* 80311E7C 0030DADC 4B FF DF ED */ bl VFiPFFAT_UpdateFATEntry /* 80311E80 0030DAE0 2C 03 00 00 */ cmpwi r3, 0 /* 80311E84 0030DAE4 41 82 00 08 */ beq lbl_80311E8C /* 80311E88 0030DAE8 48 00 00 D8 */ b lbl_80311F60 lbl_80311E8C: /* 80311E8C 0030DAEC 7F 23 CB 78 */ mr r3, r25 /* 80311E90 0030DAF0 7F A4 EB 78 */ mr r4, r29 /* 80311E94 0030DAF4 7F 65 DB 78 */ mr r5, r27 /* 80311E98 0030DAF8 4B FF 89 B5 */ bl VFiPFCACHE_ReadFATPage /* 80311E9C 0030DAFC 2C 03 10 00 */ cmpwi r3, 0x1000 /* 80311EA0 0030DB00 7C 7E 1B 78 */ mr r30, r3 /* 80311EA4 0030DB04 40 82 00 50 */ bne lbl_80311EF4 /* 80311EA8 0030DB08 81 99 18 90 */ lwz r12, 0x1890(r25) /* 80311EAC 0030DB0C 2C 0C 00 00 */ cmpwi r12, 0 /* 80311EB0 0030DB10 41 82 00 44 */ beq lbl_80311EF4 /* 80311EB4 0030DB14 80 79 18 70 */ lwz r3, 0x1870(r25) /* 80311EB8 0030DB18 7D 89 03 A6 */ mtctr r12 /* 80311EBC 0030DB1C 4E 80 04 21 */ bctrl /* 80311EC0 0030DB20 2C 03 00 00 */ cmpwi r3, 0 /* 80311EC4 0030DB24 41 82 00 40 */ beq lbl_80311F04 /* 80311EC8 0030DB28 2C 03 00 01 */ cmpwi r3, 1 /* 80311ECC 0030DB2C 40 82 00 28 */ bne lbl_80311EF4 /* 80311ED0 0030DB30 88 19 00 22 */ lbz r0, 0x22(r25) /* 80311ED4 0030DB34 28 00 00 02 */ cmplwi r0, 2 /* 80311ED8 0030DB38 41 80 00 1C */ blt lbl_80311EF4 /* 80311EDC 0030DB3C 7C 1C 00 40 */ cmplw r28, r0 /* 80311EE0 0030DB40 40 80 00 14 */ bge lbl_80311EF4 /* 80311EE4 0030DB44 80 19 00 0C */ lwz r0, 0xc(r25) /* 80311EE8 0030DB48 3B 9C 00 01 */ addi r28, r28, 1 /* 80311EEC 0030DB4C 7F BD 02 14 */ add r29, r29, r0 /* 80311EF0 0030DB50 48 00 00 14 */ b lbl_80311F04 lbl_80311EF4: /* 80311EF4 0030DB54 2C 1E 00 00 */ cmpwi r30, 0 /* 80311EF8 0030DB58 41 82 00 0C */ beq lbl_80311F04 /* 80311EFC 0030DB5C 7F C3 F3 78 */ mr r3, r30 /* 80311F00 0030DB60 48 00 00 60 */ b lbl_80311F60 lbl_80311F04: /* 80311F04 0030DB64 2C 1E 00 00 */ cmpwi r30, 0 /* 80311F08 0030DB68 40 82 FF 84 */ bne lbl_80311E8C /* 80311F0C 0030DB6C 48 00 00 2C */ b lbl_80311F38 lbl_80311F10: /* 80311F10 0030DB70 80 04 00 04 */ lwz r0, 4(r4) /* 80311F14 0030DB74 80 A4 00 08 */ lwz r5, 8(r4) /* 80311F18 0030DB78 7C 00 28 50 */ subf r0, r0, r5 /* 80311F1C 0030DB7C 7C 00 3E 30 */ sraw r0, r0, r7 /* 80311F20 0030DB80 7C 06 02 14 */ add r0, r6, r0 /* 80311F24 0030DB84 7C 1D 00 40 */ cmplw r29, r0 /* 80311F28 0030DB88 41 82 00 10 */ beq lbl_80311F38 /* 80311F2C 0030DB8C A0 03 00 00 */ lhz r0, 0(r3) /* 80311F30 0030DB90 7C 05 02 14 */ add r0, r5, r0 /* 80311F34 0030DB94 90 04 00 08 */ stw r0, 8(r4) lbl_80311F38: /* 80311F38 0030DB98 A0 B9 00 00 */ lhz r5, 0(r25) /* 80311F3C 0030DB9C 7F C3 F3 78 */ mr r3, r30 /* 80311F40 0030DBA0 80 9B 00 00 */ lwz r4, 0(r27) /* 80311F44 0030DBA4 38 05 FF FF */ addi r0, r5, -1 /* 80311F48 0030DBA8 80 84 00 08 */ lwz r4, 8(r4) /* 80311F4C 0030DBAC 7F E0 00 38 */ and r0, r31, r0 /* 80311F50 0030DBB0 7C 84 02 2E */ lhzx r4, r4, r0 /* 80311F54 0030DBB4 54 80 44 2E */ rlwinm r0, r4, 8, 0x10, 0x17 /* 80311F58 0030DBB8 50 80 C6 3E */ rlwimi r0, r4, 0x18, 0x18, 0x1f /* 80311F5C 0030DBBC 90 1A 00 00 */ stw r0, 0(r26) lbl_80311F60: /* 80311F60 0030DBC0 39 61 00 30 */ addi r11, r1, 0x30 /* 80311F64 0030DBC4 4B EB 52 09 */ bl _restgpr_25 /* 80311F68 0030DBC8 80 01 00 34 */ lwz r0, 0x34(r1) /* 80311F6C 0030DBCC 7C 08 03 A6 */ mtlr r0 /* 80311F70 0030DBD0 38 21 00 30 */ addi r1, r1, 0x30 /* 80311F74 0030DBD4 4E 80 00 20 */ blr .global VFiPFFAT16_WriteFATEntry VFiPFFAT16_WriteFATEntry: /* 80311F78 0030DBD8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80311F7C 0030DBDC 7C 08 02 A6 */ mflr r0 /* 80311F80 0030DBE0 2C 03 00 00 */ cmpwi r3, 0 /* 80311F84 0030DBE4 90 01 00 14 */ stw r0, 0x14(r1) /* 80311F88 0030DBE8 40 82 00 0C */ bne lbl_80311F94 /* 80311F8C 0030DBEC 38 60 00 0A */ li r3, 0xa /* 80311F90 0030DBF0 48 00 00 70 */ b lbl_80312000 lbl_80311F94: /* 80311F94 0030DBF4 28 04 00 02 */ cmplwi r4, 2 /* 80311F98 0030DBF8 41 80 00 14 */ blt lbl_80311FAC /* 80311F9C 0030DBFC 80 C3 00 34 */ lwz r6, 0x34(r3) /* 80311FA0 0030DC00 38 06 00 02 */ addi r0, r6, 2 /* 80311FA4 0030DC04 7C 04 00 40 */ cmplw r4, r0 /* 80311FA8 0030DC08 41 80 00 1C */ blt lbl_80311FC4 lbl_80311FAC: /* 80311FAC 0030DC0C 2C 04 00 00 */ cmpwi r4, 0 /* 80311FB0 0030DC10 41 82 00 14 */ beq lbl_80311FC4 /* 80311FB4 0030DC14 28 04 00 01 */ cmplwi r4, 1 /* 80311FB8 0030DC18 41 82 00 0C */ beq lbl_80311FC4 /* 80311FBC 0030DC1C 38 60 00 0E */ li r3, 0xe /* 80311FC0 0030DC20 48 00 00 40 */ b lbl_80312000 lbl_80311FC4: /* 80311FC4 0030DC24 A0 C3 00 00 */ lhz r6, 0(r3) /* 80311FC8 0030DC28 54 89 08 3C */ slwi r9, r4, 1 /* 80311FCC 0030DC2C 88 E3 00 20 */ lbz r7, 0x20(r3) /* 80311FD0 0030DC30 38 01 00 08 */ addi r0, r1, 8 /* 80311FD4 0030DC34 38 86 FF FF */ addi r4, r6, -1 /* 80311FD8 0030DC38 81 03 00 28 */ lwz r8, 0x28(r3) /* 80311FDC 0030DC3C 7D 26 3C 30 */ srw r6, r9, r7 /* 80311FE0 0030DC40 38 E0 00 02 */ li r7, 2 /* 80311FE4 0030DC44 7C C8 32 14 */ add r6, r8, r6 /* 80311FE8 0030DC48 7C A0 07 2C */ sthbrx r5, 0, r0 /* 80311FEC 0030DC4C 7D 24 20 38 */ and r4, r9, r4 /* 80311FF0 0030DC50 54 C5 04 3E */ clrlwi r5, r6, 0x10 /* 80311FF4 0030DC54 54 86 04 3E */ clrlwi r6, r4, 0x10 /* 80311FF8 0030DC58 38 81 00 08 */ addi r4, r1, 8 /* 80311FFC 0030DC5C 48 00 6D 0D */ bl VFiPFSEC_WriteFAT lbl_80312000: /* 80312000 0030DC60 80 01 00 14 */ lwz r0, 0x14(r1) /* 80312004 0030DC64 7C 08 03 A6 */ mtlr r0 /* 80312008 0030DC68 38 21 00 10 */ addi r1, r1, 0x10 /* 8031200C 0030DC6C 4E 80 00 20 */ blr .global VFiPFFAT16_WriteFATEntryPage VFiPFFAT16_WriteFATEntryPage: /* 80312010 0030DC70 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80312014 0030DC74 7C 08 02 A6 */ mflr r0 /* 80312018 0030DC78 90 01 00 34 */ stw r0, 0x34(r1) /* 8031201C 0030DC7C 39 61 00 30 */ addi r11, r1, 0x30 /* 80312020 0030DC80 4B EB 51 01 */ bl _savegpr_25 /* 80312024 0030DC84 2C 03 00 00 */ cmpwi r3, 0 /* 80312028 0030DC88 7C 7A 1B 78 */ mr r26, r3 /* 8031202C 0030DC8C 7C BB 2B 78 */ mr r27, r5 /* 80312030 0030DC90 7C DC 33 78 */ mr r28, r6 /* 80312034 0030DC94 3B C0 00 00 */ li r30, 0 /* 80312038 0030DC98 40 82 00 0C */ bne lbl_80312044 /* 8031203C 0030DC9C 38 60 00 0A */ li r3, 0xa /* 80312040 0030DCA0 48 00 01 78 */ b lbl_803121B8 lbl_80312044: /* 80312044 0030DCA4 28 04 00 02 */ cmplwi r4, 2 /* 80312048 0030DCA8 41 80 00 14 */ blt lbl_8031205C /* 8031204C 0030DCAC 80 A3 00 34 */ lwz r5, 0x34(r3) /* 80312050 0030DCB0 38 05 00 02 */ addi r0, r5, 2 /* 80312054 0030DCB4 7C 04 00 40 */ cmplw r4, r0 /* 80312058 0030DCB8 41 80 00 1C */ blt lbl_80312074 lbl_8031205C: /* 8031205C 0030DCBC 2C 04 00 00 */ cmpwi r4, 0 /* 80312060 0030DCC0 41 82 00 14 */ beq lbl_80312074 /* 80312064 0030DCC4 28 04 00 01 */ cmplwi r4, 1 /* 80312068 0030DCC8 41 82 00 0C */ beq lbl_80312074 /* 8031206C 0030DCCC 38 60 00 0E */ li r3, 0xe /* 80312070 0030DCD0 48 00 01 48 */ b lbl_803121B8 lbl_80312074: /* 80312074 0030DCD4 89 03 00 20 */ lbz r8, 0x20(r3) /* 80312078 0030DCD8 54 87 08 3C */ slwi r7, r4, 1 /* 8031207C 0030DCDC 80 86 00 00 */ lwz r4, 0(r6) /* 80312080 0030DCE0 80 A3 00 28 */ lwz r5, 0x28(r3) /* 80312084 0030DCE4 7C E0 44 30 */ srw r0, r7, r8 /* 80312088 0030DCE8 A0 C3 00 00 */ lhz r6, 0(r3) /* 8031208C 0030DCEC 7C 05 02 14 */ add r0, r5, r0 /* 80312090 0030DCF0 80 A4 00 18 */ lwz r5, 0x18(r4) /* 80312094 0030DCF4 54 1D 04 3E */ clrlwi r29, r0, 0x10 /* 80312098 0030DCF8 38 06 FF FF */ addi r0, r6, -1 /* 8031209C 0030DCFC 7C E0 00 38 */ and r0, r7, r0 /* 803120A0 0030DD00 7C 05 E8 40 */ cmplw r5, r29 /* 803120A4 0030DD04 54 1F 04 3E */ clrlwi r31, r0, 0x10 /* 803120A8 0030DD08 41 81 00 14 */ bgt lbl_803120BC /* 803120AC 0030DD0C 80 03 16 00 */ lwz r0, 0x1600(r3) /* 803120B0 0030DD10 7C 05 02 14 */ add r0, r5, r0 /* 803120B4 0030DD14 7C 00 E8 40 */ cmplw r0, r29 /* 803120B8 0030DD18 41 81 00 B0 */ bgt lbl_80312168 lbl_803120BC: /* 803120BC 0030DD1C 7F 43 D3 78 */ mr r3, r26 /* 803120C0 0030DD20 4B FF DD A9 */ bl VFiPFFAT_UpdateFATEntry /* 803120C4 0030DD24 2C 03 00 00 */ cmpwi r3, 0 /* 803120C8 0030DD28 41 82 00 08 */ beq lbl_803120D0 /* 803120CC 0030DD2C 48 00 00 EC */ b lbl_803121B8 lbl_803120D0: /* 803120D0 0030DD30 A0 7A 00 18 */ lhz r3, 0x18(r26) /* 803120D4 0030DD34 3B 20 00 01 */ li r25, 1 /* 803120D8 0030DD38 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18 /* 803120DC 0030DD3C 41 82 00 08 */ beq lbl_803120E4 /* 803120E0 0030DD40 54 79 07 7E */ clrlwi r25, r3, 0x1d lbl_803120E4: /* 803120E4 0030DD44 7F 43 D3 78 */ mr r3, r26 /* 803120E8 0030DD48 7F A4 EB 78 */ mr r4, r29 /* 803120EC 0030DD4C 7F 85 E3 78 */ mr r5, r28 /* 803120F0 0030DD50 4B FF 87 5D */ bl VFiPFCACHE_ReadFATPage /* 803120F4 0030DD54 2C 03 10 00 */ cmpwi r3, 0x1000 /* 803120F8 0030DD58 7C 7E 1B 78 */ mr r30, r3 /* 803120FC 0030DD5C 40 82 00 50 */ bne lbl_8031214C /* 80312100 0030DD60 81 9A 18 90 */ lwz r12, 0x1890(r26) /* 80312104 0030DD64 2C 0C 00 00 */ cmpwi r12, 0 /* 80312108 0030DD68 41 82 00 44 */ beq lbl_8031214C /* 8031210C 0030DD6C 80 7A 18 70 */ lwz r3, 0x1870(r26) /* 80312110 0030DD70 7D 89 03 A6 */ mtctr r12 /* 80312114 0030DD74 4E 80 04 21 */ bctrl /* 80312118 0030DD78 2C 03 00 00 */ cmpwi r3, 0 /* 8031211C 0030DD7C 41 82 00 40 */ beq lbl_8031215C /* 80312120 0030DD80 2C 03 00 01 */ cmpwi r3, 1 /* 80312124 0030DD84 40 82 00 28 */ bne lbl_8031214C /* 80312128 0030DD88 88 1A 00 22 */ lbz r0, 0x22(r26) /* 8031212C 0030DD8C 28 00 00 02 */ cmplwi r0, 2 /* 80312130 0030DD90 41 80 00 1C */ blt lbl_8031214C /* 80312134 0030DD94 7C 19 00 40 */ cmplw r25, r0 /* 80312138 0030DD98 40 80 00 14 */ bge lbl_8031214C /* 8031213C 0030DD9C 80 1A 00 0C */ lwz r0, 0xc(r26) /* 80312140 0030DDA0 3B 39 00 01 */ addi r25, r25, 1 /* 80312144 0030DDA4 7F BD 02 14 */ add r29, r29, r0 /* 80312148 0030DDA8 48 00 00 14 */ b lbl_8031215C lbl_8031214C: /* 8031214C 0030DDAC 2C 1E 00 00 */ cmpwi r30, 0 /* 80312150 0030DDB0 41 82 00 0C */ beq lbl_8031215C /* 80312154 0030DDB4 7F C3 F3 78 */ mr r3, r30 /* 80312158 0030DDB8 48 00 00 60 */ b lbl_803121B8 lbl_8031215C: /* 8031215C 0030DDBC 2C 1E 00 00 */ cmpwi r30, 0 /* 80312160 0030DDC0 40 82 FF 84 */ bne lbl_803120E4 /* 80312164 0030DDC4 48 00 00 28 */ b lbl_8031218C lbl_80312168: /* 80312168 0030DDC8 80 04 00 04 */ lwz r0, 4(r4) /* 8031216C 0030DDCC 80 64 00 08 */ lwz r3, 8(r4) /* 80312170 0030DDD0 7C 00 18 50 */ subf r0, r0, r3 /* 80312174 0030DDD4 7C 00 46 30 */ sraw r0, r0, r8 /* 80312178 0030DDD8 7C 05 02 14 */ add r0, r5, r0 /* 8031217C 0030DDDC 7C 1D 00 40 */ cmplw r29, r0 /* 80312180 0030DDE0 41 82 00 0C */ beq lbl_8031218C /* 80312184 0030DDE4 7C 03 32 14 */ add r0, r3, r6 /* 80312188 0030DDE8 90 04 00 08 */ stw r0, 8(r4) lbl_8031218C: /* 8031218C 0030DDEC 80 7C 00 00 */ lwz r3, 0(r28) /* 80312190 0030DDF0 57 64 C6 3E */ rlwinm r4, r27, 0x18, 0x18, 0x1f /* 80312194 0030DDF4 80 63 00 08 */ lwz r3, 8(r3) /* 80312198 0030DDF8 7F 63 F9 AE */ stbx r27, r3, r31 /* 8031219C 0030DDFC 80 7C 00 00 */ lwz r3, 0(r28) /* 803121A0 0030DE00 80 03 00 08 */ lwz r0, 8(r3) /* 803121A4 0030DE04 7C 60 FA 14 */ add r3, r0, r31 /* 803121A8 0030DE08 98 83 00 01 */ stb r4, 1(r3) /* 803121AC 0030DE0C 80 7C 00 00 */ lwz r3, 0(r28) /* 803121B0 0030DE10 4B FF 84 41 */ bl VFiPFCACHE_UpdateModifiedSector /* 803121B4 0030DE14 7F C3 F3 78 */ mr r3, r30 lbl_803121B8: /* 803121B8 0030DE18 39 61 00 30 */ addi r11, r1, 0x30 /* 803121BC 0030DE1C 4B EB 4F B1 */ bl _restgpr_25 /* 803121C0 0030DE20 80 01 00 34 */ lwz r0, 0x34(r1) /* 803121C4 0030DE24 7C 08 03 A6 */ mtlr r0 /* 803121C8 0030DE28 38 21 00 30 */ addi r1, r1, 0x30 /* 803121CC 0030DE2C 4E 80 00 20 */ blr