.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global VFiPFFAT32_ReadFATEntry VFiPFFAT32_ReadFATEntry: /* 803121D0 0030DE30 94 21 FF D0 */ stwu r1, -0x30(r1) /* 803121D4 0030DE34 7C 08 02 A6 */ mflr r0 /* 803121D8 0030DE38 90 01 00 34 */ stw r0, 0x34(r1) /* 803121DC 0030DE3C 39 61 00 30 */ addi r11, r1, 0x30 /* 803121E0 0030DE40 4B EB 4F 45 */ bl _savegpr_26 /* 803121E4 0030DE44 2C 03 00 00 */ cmpwi r3, 0 /* 803121E8 0030DE48 7C 7D 1B 78 */ mr r29, r3 /* 803121EC 0030DE4C 7C BE 2B 78 */ mr r30, r5 /* 803121F0 0030DE50 40 82 00 14 */ bne lbl_80312204 /* 803121F4 0030DE54 38 00 FF FF */ li r0, -1 /* 803121F8 0030DE58 38 60 00 0A */ li r3, 0xa /* 803121FC 0030DE5C 90 05 00 00 */ stw r0, 0(r5) /* 80312200 0030DE60 48 00 01 2C */ b lbl_8031232C lbl_80312204: /* 80312204 0030DE64 28 04 00 02 */ cmplwi r4, 2 /* 80312208 0030DE68 41 80 00 14 */ blt lbl_8031221C /* 8031220C 0030DE6C 80 C3 00 34 */ lwz r6, 0x34(r3) /* 80312210 0030DE70 38 06 00 02 */ addi r0, r6, 2 /* 80312214 0030DE74 7C 04 00 40 */ cmplw r4, r0 /* 80312218 0030DE78 41 80 00 24 */ blt lbl_8031223C lbl_8031221C: /* 8031221C 0030DE7C 2C 04 00 00 */ cmpwi r4, 0 /* 80312220 0030DE80 41 82 00 1C */ beq lbl_8031223C /* 80312224 0030DE84 28 04 00 01 */ cmplwi r4, 1 /* 80312228 0030DE88 41 82 00 14 */ beq lbl_8031223C /* 8031222C 0030DE8C 38 00 FF FF */ li r0, -1 /* 80312230 0030DE90 38 60 00 0E */ li r3, 0xe /* 80312234 0030DE94 90 05 00 00 */ stw r0, 0(r5) /* 80312238 0030DE98 48 00 00 F4 */ b lbl_8031232C lbl_8031223C: /* 8031223C 0030DE9C A0 E3 00 18 */ lhz r7, 0x18(r3) /* 80312240 0030DEA0 54 88 10 3A */ slwi r8, r4, 2 /* 80312244 0030DEA4 88 A3 00 20 */ lbz r5, 0x20(r3) /* 80312248 0030DEA8 3B E0 00 01 */ li r31, 1 /* 8031224C 0030DEAC A0 83 00 00 */ lhz r4, 0(r3) /* 80312250 0030DEB0 54 E0 06 31 */ rlwinm. r0, r7, 0, 0x18, 0x18 /* 80312254 0030DEB4 80 C3 00 28 */ lwz r6, 0x28(r3) /* 80312258 0030DEB8 7D 03 2C 30 */ srw r3, r8, r5 /* 8031225C 0030DEBC 38 04 FF FF */ addi r0, r4, -1 /* 80312260 0030DEC0 7C 66 1A 14 */ add r3, r6, r3 /* 80312264 0030DEC4 7D 00 00 38 */ and r0, r8, r0 /* 80312268 0030DEC8 54 7C 04 3E */ clrlwi r28, r3, 0x10 /* 8031226C 0030DECC 54 1B 04 3E */ clrlwi r27, r0, 0x10 /* 80312270 0030DED0 41 82 00 08 */ beq lbl_80312278 /* 80312274 0030DED4 54 FF 07 7E */ clrlwi r31, r7, 0x1d lbl_80312278: /* 80312278 0030DED8 7F A3 EB 78 */ mr r3, r29 /* 8031227C 0030DEDC 7F 85 E3 78 */ mr r5, r28 /* 80312280 0030DEE0 7F 66 DB 78 */ mr r6, r27 /* 80312284 0030DEE4 38 81 00 08 */ addi r4, r1, 8 /* 80312288 0030DEE8 38 E0 00 04 */ li r7, 4 /* 8031228C 0030DEEC 48 00 66 E5 */ bl VFiPFSEC_ReadFAT /* 80312290 0030DEF0 2C 03 10 00 */ cmpwi r3, 0x1000 /* 80312294 0030DEF4 7C 7A 1B 78 */ mr r26, r3 /* 80312298 0030DEF8 40 82 00 50 */ bne lbl_803122E8 /* 8031229C 0030DEFC 81 9D 18 90 */ lwz r12, 0x1890(r29) /* 803122A0 0030DF00 2C 0C 00 00 */ cmpwi r12, 0 /* 803122A4 0030DF04 41 82 00 44 */ beq lbl_803122E8 /* 803122A8 0030DF08 80 7D 18 70 */ lwz r3, 0x1870(r29) /* 803122AC 0030DF0C 7D 89 03 A6 */ mtctr r12 /* 803122B0 0030DF10 4E 80 04 21 */ bctrl /* 803122B4 0030DF14 2C 03 00 00 */ cmpwi r3, 0 /* 803122B8 0030DF18 41 82 00 48 */ beq lbl_80312300 /* 803122BC 0030DF1C 2C 03 00 01 */ cmpwi r3, 1 /* 803122C0 0030DF20 40 82 00 28 */ bne lbl_803122E8 /* 803122C4 0030DF24 88 1D 00 22 */ lbz r0, 0x22(r29) /* 803122C8 0030DF28 28 00 00 02 */ cmplwi r0, 2 /* 803122CC 0030DF2C 41 80 00 1C */ blt lbl_803122E8 /* 803122D0 0030DF30 7C 1F 00 40 */ cmplw r31, r0 /* 803122D4 0030DF34 40 80 00 14 */ bge lbl_803122E8 /* 803122D8 0030DF38 80 1D 00 0C */ lwz r0, 0xc(r29) /* 803122DC 0030DF3C 3B FF 00 01 */ addi r31, r31, 1 /* 803122E0 0030DF40 7F 9C 02 14 */ add r28, r28, r0 /* 803122E4 0030DF44 48 00 00 1C */ b lbl_80312300 lbl_803122E8: /* 803122E8 0030DF48 2C 1A 00 00 */ cmpwi r26, 0 /* 803122EC 0030DF4C 41 82 00 14 */ beq lbl_80312300 /* 803122F0 0030DF50 38 00 FF FF */ li r0, -1 /* 803122F4 0030DF54 7F 43 D3 78 */ mr r3, r26 /* 803122F8 0030DF58 90 1E 00 00 */ stw r0, 0(r30) /* 803122FC 0030DF5C 48 00 00 30 */ b lbl_8031232C lbl_80312300: /* 80312300 0030DF60 2C 1A 00 00 */ cmpwi r26, 0 /* 80312304 0030DF64 40 82 FF 74 */ bne lbl_80312278 /* 80312308 0030DF68 80 A1 00 08 */ lwz r5, 8(r1) /* 8031230C 0030DF6C 38 60 00 00 */ li r3, 0 /* 80312310 0030DF70 54 A4 42 1E */ rlwinm r4, r5, 8, 8, 0xf /* 80312314 0030DF74 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17 /* 80312318 0030DF78 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7 /* 8031231C 0030DF7C 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f /* 80312320 0030DF80 7C 80 03 78 */ or r0, r4, r0 /* 80312324 0030DF84 54 00 01 3E */ clrlwi r0, r0, 4 /* 80312328 0030DF88 90 1E 00 00 */ stw r0, 0(r30) lbl_8031232C: /* 8031232C 0030DF8C 39 61 00 30 */ addi r11, r1, 0x30 /* 80312330 0030DF90 4B EB 4E 41 */ bl _restgpr_26 /* 80312334 0030DF94 80 01 00 34 */ lwz r0, 0x34(r1) /* 80312338 0030DF98 7C 08 03 A6 */ mtlr r0 /* 8031233C 0030DF9C 38 21 00 30 */ addi r1, r1, 0x30 /* 80312340 0030DFA0 4E 80 00 20 */ blr .global VFiPFFAT32_ReadFATEntryPage VFiPFFAT32_ReadFATEntryPage: /* 80312344 0030DFA4 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80312348 0030DFA8 7C 08 02 A6 */ mflr r0 /* 8031234C 0030DFAC 90 01 00 34 */ stw r0, 0x34(r1) /* 80312350 0030DFB0 39 61 00 30 */ addi r11, r1, 0x30 /* 80312354 0030DFB4 4B EB 4D CD */ bl _savegpr_25 /* 80312358 0030DFB8 2C 03 00 00 */ cmpwi r3, 0 /* 8031235C 0030DFBC 7C 79 1B 78 */ mr r25, r3 /* 80312360 0030DFC0 7C BA 2B 78 */ mr r26, r5 /* 80312364 0030DFC4 7C DB 33 78 */ mr r27, r6 /* 80312368 0030DFC8 3B C0 00 00 */ li r30, 0 /* 8031236C 0030DFCC 40 82 00 0C */ bne lbl_80312378 /* 80312370 0030DFD0 38 60 00 0A */ li r3, 0xa /* 80312374 0030DFD4 48 00 01 84 */ b lbl_803124F8 lbl_80312378: /* 80312378 0030DFD8 28 04 00 02 */ cmplwi r4, 2 /* 8031237C 0030DFDC 41 80 00 14 */ blt lbl_80312390 /* 80312380 0030DFE0 80 A3 00 34 */ lwz r5, 0x34(r3) /* 80312384 0030DFE4 38 05 00 02 */ addi r0, r5, 2 /* 80312388 0030DFE8 7C 04 00 40 */ cmplw r4, r0 /* 8031238C 0030DFEC 41 80 00 1C */ blt lbl_803123A8 lbl_80312390: /* 80312390 0030DFF0 2C 04 00 00 */ cmpwi r4, 0 /* 80312394 0030DFF4 41 82 00 14 */ beq lbl_803123A8 /* 80312398 0030DFF8 28 04 00 01 */ cmplwi r4, 1 /* 8031239C 0030DFFC 41 82 00 0C */ beq lbl_803123A8 /* 803123A0 0030E000 38 60 00 0E */ li r3, 0xe /* 803123A4 0030E004 48 00 01 54 */ b lbl_803124F8 lbl_803123A8: /* 803123A8 0030E008 A0 A3 00 18 */ lhz r5, 0x18(r3) /* 803123AC 0030E00C 54 9F 10 3A */ slwi r31, r4, 2 /* 803123B0 0030E010 88 E3 00 20 */ lbz r7, 0x20(r3) /* 803123B4 0030E014 3B 80 00 01 */ li r28, 1 /* 803123B8 0030E018 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18 /* 803123BC 0030E01C 80 83 00 28 */ lwz r4, 0x28(r3) /* 803123C0 0030E020 7F E0 3C 30 */ srw r0, r31, r7 /* 803123C4 0030E024 7C 04 02 14 */ add r0, r4, r0 /* 803123C8 0030E028 54 1D 04 3E */ clrlwi r29, r0, 0x10 /* 803123CC 0030E02C 41 82 00 08 */ beq lbl_803123D4 /* 803123D0 0030E030 54 BC 07 7E */ clrlwi r28, r5, 0x1d lbl_803123D4: /* 803123D4 0030E034 80 86 00 00 */ lwz r4, 0(r6) /* 803123D8 0030E038 80 C4 00 18 */ lwz r6, 0x18(r4) /* 803123DC 0030E03C 7C 06 E8 40 */ cmplw r6, r29 /* 803123E0 0030E040 41 81 00 14 */ bgt lbl_803123F4 /* 803123E4 0030E044 80 03 16 00 */ lwz r0, 0x1600(r3) /* 803123E8 0030E048 7C 06 02 14 */ add r0, r6, r0 /* 803123EC 0030E04C 7C 00 E8 40 */ cmplw r0, r29 /* 803123F0 0030E050 41 81 00 A8 */ bgt lbl_80312498 lbl_803123F4: /* 803123F4 0030E054 A0 04 00 02 */ lhz r0, 2(r4) /* 803123F8 0030E058 28 00 00 01 */ cmplwi r0, 1 /* 803123FC 0030E05C 40 82 00 18 */ bne lbl_80312414 /* 80312400 0030E060 7F 23 CB 78 */ mr r3, r25 /* 80312404 0030E064 4B FF DA 65 */ bl VFiPFFAT_UpdateFATEntry /* 80312408 0030E068 2C 03 00 00 */ cmpwi r3, 0 /* 8031240C 0030E06C 41 82 00 08 */ beq lbl_80312414 /* 80312410 0030E070 48 00 00 E8 */ b lbl_803124F8 lbl_80312414: /* 80312414 0030E074 7F 23 CB 78 */ mr r3, r25 /* 80312418 0030E078 7F A4 EB 78 */ mr r4, r29 /* 8031241C 0030E07C 7F 65 DB 78 */ mr r5, r27 /* 80312420 0030E080 4B FF 84 2D */ bl VFiPFCACHE_ReadFATPage /* 80312424 0030E084 2C 03 10 00 */ cmpwi r3, 0x1000 /* 80312428 0030E088 7C 7E 1B 78 */ mr r30, r3 /* 8031242C 0030E08C 40 82 00 50 */ bne lbl_8031247C /* 80312430 0030E090 81 99 18 90 */ lwz r12, 0x1890(r25) /* 80312434 0030E094 2C 0C 00 00 */ cmpwi r12, 0 /* 80312438 0030E098 41 82 00 44 */ beq lbl_8031247C /* 8031243C 0030E09C 80 79 18 70 */ lwz r3, 0x1870(r25) /* 80312440 0030E0A0 7D 89 03 A6 */ mtctr r12 /* 80312444 0030E0A4 4E 80 04 21 */ bctrl /* 80312448 0030E0A8 2C 03 00 00 */ cmpwi r3, 0 /* 8031244C 0030E0AC 41 82 00 40 */ beq lbl_8031248C /* 80312450 0030E0B0 2C 03 00 01 */ cmpwi r3, 1 /* 80312454 0030E0B4 40 82 00 28 */ bne lbl_8031247C /* 80312458 0030E0B8 88 19 00 22 */ lbz r0, 0x22(r25) /* 8031245C 0030E0BC 28 00 00 02 */ cmplwi r0, 2 /* 80312460 0030E0C0 41 80 00 1C */ blt lbl_8031247C /* 80312464 0030E0C4 7C 1C 00 40 */ cmplw r28, r0 /* 80312468 0030E0C8 40 80 00 14 */ bge lbl_8031247C /* 8031246C 0030E0CC 80 19 00 0C */ lwz r0, 0xc(r25) /* 80312470 0030E0D0 3B 9C 00 01 */ addi r28, r28, 1 /* 80312474 0030E0D4 7F BD 02 14 */ add r29, r29, r0 /* 80312478 0030E0D8 48 00 00 14 */ b lbl_8031248C lbl_8031247C: /* 8031247C 0030E0DC 2C 1E 00 00 */ cmpwi r30, 0 /* 80312480 0030E0E0 41 82 00 0C */ beq lbl_8031248C /* 80312484 0030E0E4 7F C3 F3 78 */ mr r3, r30 /* 80312488 0030E0E8 48 00 00 70 */ b lbl_803124F8 lbl_8031248C: /* 8031248C 0030E0EC 2C 1E 00 00 */ cmpwi r30, 0 /* 80312490 0030E0F0 40 82 FF 84 */ bne lbl_80312414 /* 80312494 0030E0F4 48 00 00 2C */ b lbl_803124C0 lbl_80312498: /* 80312498 0030E0F8 80 04 00 04 */ lwz r0, 4(r4) /* 8031249C 0030E0FC 80 A4 00 08 */ lwz r5, 8(r4) /* 803124A0 0030E100 7C 00 28 50 */ subf r0, r0, r5 /* 803124A4 0030E104 7C 00 3E 30 */ sraw r0, r0, r7 /* 803124A8 0030E108 7C 06 02 14 */ add r0, r6, r0 /* 803124AC 0030E10C 7C 1D 00 40 */ cmplw r29, r0 /* 803124B0 0030E110 41 82 00 10 */ beq lbl_803124C0 /* 803124B4 0030E114 A0 03 00 00 */ lhz r0, 0(r3) /* 803124B8 0030E118 7C 05 02 14 */ add r0, r5, r0 /* 803124BC 0030E11C 90 04 00 08 */ stw r0, 8(r4) lbl_803124C0: /* 803124C0 0030E120 A0 B9 00 00 */ lhz r5, 0(r25) /* 803124C4 0030E124 7F C3 F3 78 */ mr r3, r30 /* 803124C8 0030E128 80 9B 00 00 */ lwz r4, 0(r27) /* 803124CC 0030E12C 38 05 FF FF */ addi r0, r5, -1 /* 803124D0 0030E130 80 84 00 08 */ lwz r4, 8(r4) /* 803124D4 0030E134 7F E0 00 38 */ and r0, r31, r0 /* 803124D8 0030E138 7C A4 00 2E */ lwzx r5, r4, r0 /* 803124DC 0030E13C 54 A4 42 1E */ rlwinm r4, r5, 8, 8, 0xf /* 803124E0 0030E140 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17 /* 803124E4 0030E144 50 A4 C0 0E */ rlwimi r4, r5, 0x18, 0, 7 /* 803124E8 0030E148 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f /* 803124EC 0030E14C 7C 80 03 78 */ or r0, r4, r0 /* 803124F0 0030E150 54 00 01 3E */ clrlwi r0, r0, 4 /* 803124F4 0030E154 90 1A 00 00 */ stw r0, 0(r26) lbl_803124F8: /* 803124F8 0030E158 39 61 00 30 */ addi r11, r1, 0x30 /* 803124FC 0030E15C 4B EB 4C 71 */ bl _restgpr_25 /* 80312500 0030E160 80 01 00 34 */ lwz r0, 0x34(r1) /* 80312504 0030E164 7C 08 03 A6 */ mtlr r0 /* 80312508 0030E168 38 21 00 30 */ addi r1, r1, 0x30 /* 8031250C 0030E16C 4E 80 00 20 */ blr .global VFiPFFAT32_WriteFATEntry VFiPFFAT32_WriteFATEntry: /* 80312510 0030E170 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80312514 0030E174 7C 08 02 A6 */ mflr r0 /* 80312518 0030E178 2C 03 00 00 */ cmpwi r3, 0 /* 8031251C 0030E17C 90 01 00 24 */ stw r0, 0x24(r1) /* 80312520 0030E180 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80312524 0030E184 7C BF 2B 78 */ mr r31, r5 /* 80312528 0030E188 93 C1 00 18 */ stw r30, 0x18(r1) /* 8031252C 0030E18C 93 A1 00 14 */ stw r29, 0x14(r1) /* 80312530 0030E190 93 81 00 10 */ stw r28, 0x10(r1) /* 80312534 0030E194 7C 7C 1B 78 */ mr r28, r3 /* 80312538 0030E198 40 82 00 0C */ bne lbl_80312544 /* 8031253C 0030E19C 38 60 00 0A */ li r3, 0xa /* 80312540 0030E1A0 48 00 00 D0 */ b lbl_80312610 lbl_80312544: /* 80312544 0030E1A4 28 04 00 02 */ cmplwi r4, 2 /* 80312548 0030E1A8 41 80 00 14 */ blt lbl_8031255C /* 8031254C 0030E1AC 80 A3 00 34 */ lwz r5, 0x34(r3) /* 80312550 0030E1B0 38 05 00 02 */ addi r0, r5, 2 /* 80312554 0030E1B4 7C 04 00 40 */ cmplw r4, r0 /* 80312558 0030E1B8 41 80 00 1C */ blt lbl_80312574 lbl_8031255C: /* 8031255C 0030E1BC 2C 04 00 00 */ cmpwi r4, 0 /* 80312560 0030E1C0 41 82 00 14 */ beq lbl_80312574 /* 80312564 0030E1C4 28 04 00 01 */ cmplwi r4, 1 /* 80312568 0030E1C8 41 82 00 0C */ beq lbl_80312574 /* 8031256C 0030E1CC 38 60 00 0E */ li r3, 0xe /* 80312570 0030E1D0 48 00 00 A0 */ b lbl_80312610 lbl_80312574: /* 80312574 0030E1D4 A0 A3 00 00 */ lhz r5, 0(r3) /* 80312578 0030E1D8 54 88 10 3A */ slwi r8, r4, 2 /* 8031257C 0030E1DC 88 C3 00 20 */ lbz r6, 0x20(r3) /* 80312580 0030E1E0 38 81 00 08 */ addi r4, r1, 8 /* 80312584 0030E1E4 38 05 FF FF */ addi r0, r5, -1 /* 80312588 0030E1E8 80 E3 00 28 */ lwz r7, 0x28(r3) /* 8031258C 0030E1EC 7D 05 34 30 */ srw r5, r8, r6 /* 80312590 0030E1F0 7F 83 E3 78 */ mr r3, r28 /* 80312594 0030E1F4 7C A7 2A 14 */ add r5, r7, r5 /* 80312598 0030E1F8 7D 00 00 38 */ and r0, r8, r0 /* 8031259C 0030E1FC 54 BE 04 3E */ clrlwi r30, r5, 0x10 /* 803125A0 0030E200 38 E0 00 04 */ li r7, 4 /* 803125A4 0030E204 54 1D 04 3E */ clrlwi r29, r0, 0x10 /* 803125A8 0030E208 7F C5 F3 78 */ mr r5, r30 /* 803125AC 0030E20C 7F A6 EB 78 */ mr r6, r29 /* 803125B0 0030E210 48 00 63 C1 */ bl VFiPFSEC_ReadFAT /* 803125B4 0030E214 2C 03 00 00 */ cmpwi r3, 0 /* 803125B8 0030E218 41 82 00 08 */ beq lbl_803125C0 /* 803125BC 0030E21C 48 00 00 54 */ b lbl_80312610 lbl_803125C0: /* 803125C0 0030E220 80 E1 00 08 */ lwz r7, 8(r1) /* 803125C4 0030E224 7F 83 E3 78 */ mr r3, r28 /* 803125C8 0030E228 7F C5 F3 78 */ mr r5, r30 /* 803125CC 0030E22C 7F A6 EB 78 */ mr r6, r29 /* 803125D0 0030E230 54 E8 42 1E */ rlwinm r8, r7, 8, 8, 0xf /* 803125D4 0030E234 54 E0 C4 2E */ rlwinm r0, r7, 0x18, 0x10, 0x17 /* 803125D8 0030E238 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7 /* 803125DC 0030E23C 38 81 00 08 */ addi r4, r1, 8 /* 803125E0 0030E240 50 E0 46 3E */ rlwimi r0, r7, 8, 0x18, 0x1f /* 803125E4 0030E244 38 E0 00 04 */ li r7, 4 /* 803125E8 0030E248 7D 00 03 78 */ or r0, r8, r0 /* 803125EC 0030E24C 54 09 00 06 */ rlwinm r9, r0, 0, 0, 3 /* 803125F0 0030E250 53 E9 01 3E */ rlwimi r9, r31, 0, 4, 0x1f /* 803125F4 0030E254 55 28 42 1E */ rlwinm r8, r9, 8, 8, 0xf /* 803125F8 0030E258 55 20 C4 2E */ rlwinm r0, r9, 0x18, 0x10, 0x17 /* 803125FC 0030E25C 51 28 C0 0E */ rlwimi r8, r9, 0x18, 0, 7 /* 80312600 0030E260 51 20 46 3E */ rlwimi r0, r9, 8, 0x18, 0x1f /* 80312604 0030E264 7D 00 03 78 */ or r0, r8, r0 /* 80312608 0030E268 90 01 00 08 */ stw r0, 8(r1) /* 8031260C 0030E26C 48 00 66 FD */ bl VFiPFSEC_WriteFAT lbl_80312610: /* 80312610 0030E270 80 01 00 24 */ lwz r0, 0x24(r1) /* 80312614 0030E274 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 80312618 0030E278 83 C1 00 18 */ lwz r30, 0x18(r1) /* 8031261C 0030E27C 83 A1 00 14 */ lwz r29, 0x14(r1) /* 80312620 0030E280 83 81 00 10 */ lwz r28, 0x10(r1) /* 80312624 0030E284 7C 08 03 A6 */ mtlr r0 /* 80312628 0030E288 38 21 00 20 */ addi r1, r1, 0x20 /* 8031262C 0030E28C 4E 80 00 20 */ blr .global VFiPFFAT32_WriteFATEntryPage VFiPFFAT32_WriteFATEntryPage: /* 80312630 0030E290 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80312634 0030E294 7C 08 02 A6 */ mflr r0 /* 80312638 0030E298 90 01 00 34 */ stw r0, 0x34(r1) /* 8031263C 0030E29C 39 61 00 30 */ addi r11, r1, 0x30 /* 80312640 0030E2A0 4B EB 4A E1 */ bl _savegpr_25 /* 80312644 0030E2A4 2C 03 00 00 */ cmpwi r3, 0 /* 80312648 0030E2A8 7C 7A 1B 78 */ mr r26, r3 /* 8031264C 0030E2AC 7C BB 2B 78 */ mr r27, r5 /* 80312650 0030E2B0 7C DC 33 78 */ mr r28, r6 /* 80312654 0030E2B4 3B C0 00 00 */ li r30, 0 /* 80312658 0030E2B8 40 82 00 0C */ bne lbl_80312664 /* 8031265C 0030E2BC 38 60 00 0A */ li r3, 0xa /* 80312660 0030E2C0 48 00 01 98 */ b lbl_803127F8 lbl_80312664: /* 80312664 0030E2C4 28 04 00 02 */ cmplwi r4, 2 /* 80312668 0030E2C8 41 80 00 14 */ blt lbl_8031267C /* 8031266C 0030E2CC 80 A3 00 34 */ lwz r5, 0x34(r3) /* 80312670 0030E2D0 38 05 00 02 */ addi r0, r5, 2 /* 80312674 0030E2D4 7C 04 00 40 */ cmplw r4, r0 /* 80312678 0030E2D8 41 80 00 1C */ blt lbl_80312694 lbl_8031267C: /* 8031267C 0030E2DC 2C 04 00 00 */ cmpwi r4, 0 /* 80312680 0030E2E0 41 82 00 14 */ beq lbl_80312694 /* 80312684 0030E2E4 28 04 00 01 */ cmplwi r4, 1 /* 80312688 0030E2E8 41 82 00 0C */ beq lbl_80312694 /* 8031268C 0030E2EC 38 60 00 0E */ li r3, 0xe /* 80312690 0030E2F0 48 00 01 68 */ b lbl_803127F8 lbl_80312694: /* 80312694 0030E2F4 88 E3 00 20 */ lbz r7, 0x20(r3) /* 80312698 0030E2F8 54 88 10 3A */ slwi r8, r4, 2 /* 8031269C 0030E2FC 80 86 00 00 */ lwz r4, 0(r6) /* 803126A0 0030E300 80 A3 00 28 */ lwz r5, 0x28(r3) /* 803126A4 0030E304 7D 00 3C 30 */ srw r0, r8, r7 /* 803126A8 0030E308 A0 C3 00 00 */ lhz r6, 0(r3) /* 803126AC 0030E30C 7C 05 02 14 */ add r0, r5, r0 /* 803126B0 0030E310 80 A4 00 18 */ lwz r5, 0x18(r4) /* 803126B4 0030E314 54 1D 04 3E */ clrlwi r29, r0, 0x10 /* 803126B8 0030E318 38 06 FF FF */ addi r0, r6, -1 /* 803126BC 0030E31C 7D 00 00 38 */ and r0, r8, r0 /* 803126C0 0030E320 7C 05 E8 40 */ cmplw r5, r29 /* 803126C4 0030E324 54 1F 04 3E */ clrlwi r31, r0, 0x10 /* 803126C8 0030E328 41 81 00 14 */ bgt lbl_803126DC /* 803126CC 0030E32C 80 03 16 00 */ lwz r0, 0x1600(r3) /* 803126D0 0030E330 7C 05 02 14 */ add r0, r5, r0 /* 803126D4 0030E334 7C 00 E8 40 */ cmplw r0, r29 /* 803126D8 0030E338 41 81 00 B0 */ bgt lbl_80312788 lbl_803126DC: /* 803126DC 0030E33C 7F 43 D3 78 */ mr r3, r26 /* 803126E0 0030E340 4B FF D7 89 */ bl VFiPFFAT_UpdateFATEntry /* 803126E4 0030E344 2C 03 00 00 */ cmpwi r3, 0 /* 803126E8 0030E348 41 82 00 08 */ beq lbl_803126F0 /* 803126EC 0030E34C 48 00 01 0C */ b lbl_803127F8 lbl_803126F0: /* 803126F0 0030E350 A0 7A 00 18 */ lhz r3, 0x18(r26) /* 803126F4 0030E354 3B 20 00 01 */ li r25, 1 /* 803126F8 0030E358 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18 /* 803126FC 0030E35C 41 82 00 08 */ beq lbl_80312704 /* 80312700 0030E360 54 79 07 7E */ clrlwi r25, r3, 0x1d lbl_80312704: /* 80312704 0030E364 7F 43 D3 78 */ mr r3, r26 /* 80312708 0030E368 7F A4 EB 78 */ mr r4, r29 /* 8031270C 0030E36C 7F 85 E3 78 */ mr r5, r28 /* 80312710 0030E370 4B FF 81 3D */ bl VFiPFCACHE_ReadFATPage /* 80312714 0030E374 2C 03 10 00 */ cmpwi r3, 0x1000 /* 80312718 0030E378 7C 7E 1B 78 */ mr r30, r3 /* 8031271C 0030E37C 40 82 00 50 */ bne lbl_8031276C /* 80312720 0030E380 81 9A 18 90 */ lwz r12, 0x1890(r26) /* 80312724 0030E384 2C 0C 00 00 */ cmpwi r12, 0 /* 80312728 0030E388 41 82 00 44 */ beq lbl_8031276C /* 8031272C 0030E38C 80 7A 18 70 */ lwz r3, 0x1870(r26) /* 80312730 0030E390 7D 89 03 A6 */ mtctr r12 /* 80312734 0030E394 4E 80 04 21 */ bctrl /* 80312738 0030E398 2C 03 00 00 */ cmpwi r3, 0 /* 8031273C 0030E39C 41 82 00 40 */ beq lbl_8031277C /* 80312740 0030E3A0 2C 03 00 01 */ cmpwi r3, 1 /* 80312744 0030E3A4 40 82 00 28 */ bne lbl_8031276C /* 80312748 0030E3A8 88 1A 00 22 */ lbz r0, 0x22(r26) /* 8031274C 0030E3AC 28 00 00 02 */ cmplwi r0, 2 /* 80312750 0030E3B0 41 80 00 1C */ blt lbl_8031276C /* 80312754 0030E3B4 7C 19 00 40 */ cmplw r25, r0 /* 80312758 0030E3B8 40 80 00 14 */ bge lbl_8031276C /* 8031275C 0030E3BC 80 1A 00 0C */ lwz r0, 0xc(r26) /* 80312760 0030E3C0 3B 39 00 01 */ addi r25, r25, 1 /* 80312764 0030E3C4 7F BD 02 14 */ add r29, r29, r0 /* 80312768 0030E3C8 48 00 00 14 */ b lbl_8031277C lbl_8031276C: /* 8031276C 0030E3CC 2C 1E 00 00 */ cmpwi r30, 0 /* 80312770 0030E3D0 41 82 00 0C */ beq lbl_8031277C /* 80312774 0030E3D4 7F C3 F3 78 */ mr r3, r30 /* 80312778 0030E3D8 48 00 00 80 */ b lbl_803127F8 lbl_8031277C: /* 8031277C 0030E3DC 2C 1E 00 00 */ cmpwi r30, 0 /* 80312780 0030E3E0 40 82 FF 84 */ bne lbl_80312704 /* 80312784 0030E3E4 48 00 00 28 */ b lbl_803127AC lbl_80312788: /* 80312788 0030E3E8 80 04 00 04 */ lwz r0, 4(r4) /* 8031278C 0030E3EC 80 64 00 08 */ lwz r3, 8(r4) /* 80312790 0030E3F0 7C 00 18 50 */ subf r0, r0, r3 /* 80312794 0030E3F4 7C 00 3E 30 */ sraw r0, r0, r7 /* 80312798 0030E3F8 7C 05 02 14 */ add r0, r5, r0 /* 8031279C 0030E3FC 7C 1D 00 40 */ cmplw r29, r0 /* 803127A0 0030E400 41 82 00 0C */ beq lbl_803127AC /* 803127A4 0030E404 7C 03 32 14 */ add r0, r3, r6 /* 803127A8 0030E408 90 04 00 08 */ stw r0, 8(r4) lbl_803127AC: /* 803127AC 0030E40C 80 7C 00 00 */ lwz r3, 0(r28) /* 803127B0 0030E410 80 83 00 08 */ lwz r4, 8(r3) /* 803127B4 0030E414 7C A4 F8 2E */ lwzx r5, r4, r31 /* 803127B8 0030E418 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf /* 803127BC 0030E41C 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17 /* 803127C0 0030E420 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7 /* 803127C4 0030E424 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f /* 803127C8 0030E428 7C 60 03 78 */ or r0, r3, r0 /* 803127CC 0030E42C 54 05 00 06 */ rlwinm r5, r0, 0, 0, 3 /* 803127D0 0030E430 53 65 01 3E */ rlwimi r5, r27, 0, 4, 0x1f /* 803127D4 0030E434 54 A3 42 1E */ rlwinm r3, r5, 8, 8, 0xf /* 803127D8 0030E438 54 A0 C4 2E */ rlwinm r0, r5, 0x18, 0x10, 0x17 /* 803127DC 0030E43C 50 A3 C0 0E */ rlwimi r3, r5, 0x18, 0, 7 /* 803127E0 0030E440 50 A0 46 3E */ rlwimi r0, r5, 8, 0x18, 0x1f /* 803127E4 0030E444 7C 60 03 78 */ or r0, r3, r0 /* 803127E8 0030E448 7C 04 F9 2E */ stwx r0, r4, r31 /* 803127EC 0030E44C 80 7C 00 00 */ lwz r3, 0(r28) /* 803127F0 0030E450 4B FF 7E 01 */ bl VFiPFCACHE_UpdateModifiedSector /* 803127F4 0030E454 7F C3 F3 78 */ mr r3, r30 lbl_803127F8: /* 803127F8 0030E458 39 61 00 30 */ addi r11, r1, 0x30 /* 803127FC 0030E45C 4B EB 49 71 */ bl _restgpr_25 /* 80312800 0030E460 80 01 00 34 */ lwz r0, 0x34(r1) /* 80312804 0030E464 7C 08 03 A6 */ mtlr r0 /* 80312808 0030E468 38 21 00 30 */ addi r1, r1, 0x30 /* 8031280C 0030E46C 4E 80 00 20 */ blr