.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global VFiPFFAT12_ReadFATEntry VFiPFFAT12_ReadFATEntry: /* 80311170 0030CDD0 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80311174 0030CDD4 7C 08 02 A6 */ mflr r0 /* 80311178 0030CDD8 90 01 00 34 */ stw r0, 0x34(r1) /* 8031117C 0030CDDC 39 61 00 30 */ addi r11, r1, 0x30 /* 80311180 0030CDE0 4B EB 5F A1 */ bl _savegpr_25 /* 80311184 0030CDE4 2C 03 00 00 */ cmpwi r3, 0 /* 80311188 0030CDE8 7C 7C 1B 78 */ mr r28, r3 /* 8031118C 0030CDEC 7C 9D 23 78 */ mr r29, r4 /* 80311190 0030CDF0 7C BE 2B 78 */ mr r30, r5 /* 80311194 0030CDF4 40 82 00 14 */ bne lbl_803111A8 /* 80311198 0030CDF8 38 00 FF FF */ li r0, -1 /* 8031119C 0030CDFC 38 60 00 0A */ li r3, 0xa /* 803111A0 0030CE00 90 05 00 00 */ stw r0, 0(r5) /* 803111A4 0030CE04 48 00 01 98 */ b lbl_8031133C lbl_803111A8: /* 803111A8 0030CE08 28 04 00 02 */ cmplwi r4, 2 /* 803111AC 0030CE0C 41 80 00 14 */ blt lbl_803111C0 /* 803111B0 0030CE10 80 C3 00 34 */ lwz r6, 0x34(r3) /* 803111B4 0030CE14 38 06 00 02 */ addi r0, r6, 2 /* 803111B8 0030CE18 7C 04 00 40 */ cmplw r4, r0 /* 803111BC 0030CE1C 41 80 00 24 */ blt lbl_803111E0 lbl_803111C0: /* 803111C0 0030CE20 2C 04 00 00 */ cmpwi r4, 0 /* 803111C4 0030CE24 41 82 00 1C */ beq lbl_803111E0 /* 803111C8 0030CE28 28 04 00 01 */ cmplwi r4, 1 /* 803111CC 0030CE2C 41 82 00 14 */ beq lbl_803111E0 /* 803111D0 0030CE30 38 00 FF FF */ li r0, -1 /* 803111D4 0030CE34 38 60 00 0E */ li r3, 0xe /* 803111D8 0030CE38 90 05 00 00 */ stw r0, 0(r5) /* 803111DC 0030CE3C 48 00 01 60 */ b lbl_8031133C lbl_803111E0: /* 803111E0 0030CE40 7C 80 0E 70 */ srawi r0, r4, 1 /* 803111E4 0030CE44 A0 E3 00 18 */ lhz r7, 0x18(r3) /* 803111E8 0030CE48 7C 04 02 14 */ add r0, r4, r0 /* 803111EC 0030CE4C 88 A3 00 20 */ lbz r5, 0x20(r3) /* 803111F0 0030CE50 54 08 04 3E */ clrlwi r8, r0, 0x10 /* 803111F4 0030CE54 A0 83 00 00 */ lhz r4, 0(r3) /* 803111F8 0030CE58 54 E0 06 31 */ rlwinm. r0, r7, 0, 0x18, 0x18 /* 803111FC 0030CE5C 80 C3 00 28 */ lwz r6, 0x28(r3) /* 80311200 0030CE60 7D 03 2E 30 */ sraw r3, r8, r5 /* 80311204 0030CE64 3B E0 00 01 */ li r31, 1 /* 80311208 0030CE68 38 04 FF FF */ addi r0, r4, -1 /* 8031120C 0030CE6C 7C 66 1A 14 */ add r3, r6, r3 /* 80311210 0030CE70 54 79 04 3E */ clrlwi r25, r3, 0x10 /* 80311214 0030CE74 7D 00 00 38 */ and r0, r8, r0 /* 80311218 0030CE78 41 82 00 08 */ beq lbl_80311220 /* 8031121C 0030CE7C 54 FF 07 7E */ clrlwi r31, r7, 0x1d lbl_80311220: /* 80311220 0030CE80 54 1B 04 3E */ clrlwi r27, r0, 0x10 lbl_80311224: /* 80311224 0030CE84 A0 7C 00 00 */ lhz r3, 0(r28) /* 80311228 0030CE88 38 03 FF FF */ addi r0, r3, -1 /* 8031122C 0030CE8C 7C 1B 00 00 */ cmpw r27, r0 /* 80311230 0030CE90 40 80 00 24 */ bge lbl_80311254 /* 80311234 0030CE94 7F 83 E3 78 */ mr r3, r28 /* 80311238 0030CE98 7F 66 DB 78 */ mr r6, r27 /* 8031123C 0030CE9C 38 81 00 08 */ addi r4, r1, 8 /* 80311240 0030CEA0 57 25 04 3E */ clrlwi r5, r25, 0x10 /* 80311244 0030CEA4 38 E0 00 02 */ li r7, 2 /* 80311248 0030CEA8 48 00 77 29 */ bl VFiPFSEC_ReadFAT /* 8031124C 0030CEAC 7C 7A 1B 78 */ mr r26, r3 /* 80311250 0030CEB0 48 00 00 48 */ b lbl_80311298 lbl_80311254: /* 80311254 0030CEB4 7F 83 E3 78 */ mr r3, r28 /* 80311258 0030CEB8 7F 66 DB 78 */ mr r6, r27 /* 8031125C 0030CEBC 38 81 00 08 */ addi r4, r1, 8 /* 80311260 0030CEC0 57 25 04 3E */ clrlwi r5, r25, 0x10 /* 80311264 0030CEC4 38 E0 00 01 */ li r7, 1 /* 80311268 0030CEC8 48 00 77 09 */ bl VFiPFSEC_ReadFAT /* 8031126C 0030CECC 2C 03 00 00 */ cmpwi r3, 0 /* 80311270 0030CED0 7C 7A 1B 78 */ mr r26, r3 /* 80311274 0030CED4 40 82 00 24 */ bne lbl_80311298 /* 80311278 0030CED8 57 25 04 3E */ clrlwi r5, r25, 0x10 /* 8031127C 0030CEDC 7F 83 E3 78 */ mr r3, r28 /* 80311280 0030CEE0 38 81 00 09 */ addi r4, r1, 9 /* 80311284 0030CEE4 38 C0 00 00 */ li r6, 0 /* 80311288 0030CEE8 38 A5 00 01 */ addi r5, r5, 1 /* 8031128C 0030CEEC 38 E0 00 01 */ li r7, 1 /* 80311290 0030CEF0 48 00 76 E1 */ bl VFiPFSEC_ReadFAT /* 80311294 0030CEF4 7C 7A 1B 78 */ mr r26, r3 lbl_80311298: /* 80311298 0030CEF8 2C 1A 10 00 */ cmpwi r26, 0x1000 /* 8031129C 0030CEFC 40 82 00 54 */ bne lbl_803112F0 /* 803112A0 0030CF00 81 9C 18 90 */ lwz r12, 0x1890(r28) /* 803112A4 0030CF04 2C 0C 00 00 */ cmpwi r12, 0 /* 803112A8 0030CF08 41 82 00 48 */ beq lbl_803112F0 /* 803112AC 0030CF0C 80 7C 18 70 */ lwz r3, 0x1870(r28) /* 803112B0 0030CF10 7D 89 03 A6 */ mtctr r12 /* 803112B4 0030CF14 4E 80 04 21 */ bctrl /* 803112B8 0030CF18 2C 03 00 00 */ cmpwi r3, 0 /* 803112BC 0030CF1C 41 82 00 4C */ beq lbl_80311308 /* 803112C0 0030CF20 2C 03 00 01 */ cmpwi r3, 1 /* 803112C4 0030CF24 40 82 00 2C */ bne lbl_803112F0 /* 803112C8 0030CF28 88 1C 00 22 */ lbz r0, 0x22(r28) /* 803112CC 0030CF2C 28 00 00 02 */ cmplwi r0, 2 /* 803112D0 0030CF30 41 80 00 20 */ blt lbl_803112F0 /* 803112D4 0030CF34 7C 1F 00 40 */ cmplw r31, r0 /* 803112D8 0030CF38 40 80 00 18 */ bge lbl_803112F0 /* 803112DC 0030CF3C 80 1C 00 0C */ lwz r0, 0xc(r28) /* 803112E0 0030CF40 3B FF 00 01 */ addi r31, r31, 1 /* 803112E4 0030CF44 54 00 04 3E */ clrlwi r0, r0, 0x10 /* 803112E8 0030CF48 7F 39 02 14 */ add r25, r25, r0 /* 803112EC 0030CF4C 48 00 00 1C */ b lbl_80311308 lbl_803112F0: /* 803112F0 0030CF50 2C 1A 00 00 */ cmpwi r26, 0 /* 803112F4 0030CF54 41 82 00 14 */ beq lbl_80311308 /* 803112F8 0030CF58 38 00 FF FF */ li r0, -1 /* 803112FC 0030CF5C 7F 43 D3 78 */ mr r3, r26 /* 80311300 0030CF60 90 1E 00 00 */ stw r0, 0(r30) /* 80311304 0030CF64 48 00 00 38 */ b lbl_8031133C lbl_80311308: /* 80311308 0030CF68 2C 1A 00 00 */ cmpwi r26, 0 /* 8031130C 0030CF6C 40 82 FF 18 */ bne lbl_80311224 /* 80311310 0030CF70 57 A0 07 FF */ clrlwi. r0, r29, 0x1f /* 80311314 0030CF74 A0 61 00 08 */ lhz r3, 8(r1) /* 80311318 0030CF78 54 60 44 2E */ rlwinm r0, r3, 8, 0x10, 0x17 /* 8031131C 0030CF7C 50 60 C6 3E */ rlwimi r0, r3, 0x18, 0x18, 0x1f /* 80311320 0030CF80 41 82 00 10 */ beq lbl_80311330 /* 80311324 0030CF84 54 00 E5 3E */ rlwinm r0, r0, 0x1c, 0x14, 0x1f /* 80311328 0030CF88 90 1E 00 00 */ stw r0, 0(r30) /* 8031132C 0030CF8C 48 00 00 0C */ b lbl_80311338 lbl_80311330: /* 80311330 0030CF90 54 00 05 3E */ clrlwi r0, r0, 0x14 /* 80311334 0030CF94 90 1E 00 00 */ stw r0, 0(r30) lbl_80311338: /* 80311338 0030CF98 38 60 00 00 */ li r3, 0 lbl_8031133C: /* 8031133C 0030CF9C 39 61 00 30 */ addi r11, r1, 0x30 /* 80311340 0030CFA0 4B EB 5E 2D */ bl _restgpr_25 /* 80311344 0030CFA4 80 01 00 34 */ lwz r0, 0x34(r1) /* 80311348 0030CFA8 7C 08 03 A6 */ mtlr r0 /* 8031134C 0030CFAC 38 21 00 30 */ addi r1, r1, 0x30 /* 80311350 0030CFB0 4E 80 00 20 */ blr .global VFiPFFAT12_ReadFATEntryPage VFiPFFAT12_ReadFATEntryPage: /* 80311354 0030CFB4 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80311358 0030CFB8 7C 08 02 A6 */ mflr r0 /* 8031135C 0030CFBC 90 01 00 34 */ stw r0, 0x34(r1) /* 80311360 0030CFC0 39 61 00 30 */ addi r11, r1, 0x30 /* 80311364 0030CFC4 4B EB 5D B9 */ bl _savegpr_24 /* 80311368 0030CFC8 2C 03 00 00 */ cmpwi r3, 0 /* 8031136C 0030CFCC 7C 78 1B 78 */ mr r24, r3 /* 80311370 0030CFD0 7C 99 23 78 */ mr r25, r4 /* 80311374 0030CFD4 7C BA 2B 78 */ mr r26, r5 /* 80311378 0030CFD8 7C DB 33 78 */ mr r27, r6 /* 8031137C 0030CFDC 40 82 00 0C */ bne lbl_80311388 /* 80311380 0030CFE0 38 60 00 0A */ li r3, 0xa /* 80311384 0030CFE4 48 00 02 8C */ b lbl_80311610 lbl_80311388: /* 80311388 0030CFE8 28 04 00 02 */ cmplwi r4, 2 /* 8031138C 0030CFEC 41 80 00 14 */ blt lbl_803113A0 /* 80311390 0030CFF0 80 A3 00 34 */ lwz r5, 0x34(r3) /* 80311394 0030CFF4 38 05 00 02 */ addi r0, r5, 2 /* 80311398 0030CFF8 7C 04 00 40 */ cmplw r4, r0 /* 8031139C 0030CFFC 41 80 00 1C */ blt lbl_803113B8 lbl_803113A0: /* 803113A0 0030D000 2C 04 00 00 */ cmpwi r4, 0 /* 803113A4 0030D004 41 82 00 14 */ beq lbl_803113B8 /* 803113A8 0030D008 28 04 00 01 */ cmplwi r4, 1 /* 803113AC 0030D00C 41 82 00 0C */ beq lbl_803113B8 /* 803113B0 0030D010 38 60 00 0E */ li r3, 0xe /* 803113B4 0030D014 48 00 02 5C */ b lbl_80311610 lbl_803113B8: /* 803113B8 0030D018 54 80 FC 7E */ rlwinm r0, r4, 0x1f, 0x11, 0x1f /* 803113BC 0030D01C A0 A3 00 18 */ lhz r5, 0x18(r3) /* 803113C0 0030D020 7C 04 02 14 */ add r0, r4, r0 /* 803113C4 0030D024 88 83 00 20 */ lbz r4, 0x20(r3) /* 803113C8 0030D028 54 1F 04 3E */ clrlwi r31, r0, 0x10 /* 803113CC 0030D02C 80 63 00 28 */ lwz r3, 0x28(r3) /* 803113D0 0030D030 54 A0 06 31 */ rlwinm. r0, r5, 0, 0x18, 0x18 /* 803113D4 0030D034 3B 80 00 01 */ li r28, 1 /* 803113D8 0030D038 7F E0 24 30 */ srw r0, r31, r4 /* 803113DC 0030D03C 7C 03 02 14 */ add r0, r3, r0 /* 803113E0 0030D040 54 1D 04 3E */ clrlwi r29, r0, 0x10 /* 803113E4 0030D044 41 82 00 08 */ beq lbl_803113EC /* 803113E8 0030D048 54 BC 07 7E */ clrlwi r28, r5, 0x1d lbl_803113EC: /* 803113EC 0030D04C 3B C0 00 00 */ li r30, 0 lbl_803113F0: /* 803113F0 0030D050 2C 1E 10 00 */ cmpwi r30, 0x1000 /* 803113F4 0030D054 40 82 00 5C */ bne lbl_80311450 /* 803113F8 0030D058 81 98 18 90 */ lwz r12, 0x1890(r24) /* 803113FC 0030D05C 2C 0C 00 00 */ cmpwi r12, 0 /* 80311400 0030D060 41 82 00 50 */ beq lbl_80311450 /* 80311404 0030D064 80 78 18 70 */ lwz r3, 0x1870(r24) /* 80311408 0030D068 7D 89 03 A6 */ mtctr r12 /* 8031140C 0030D06C 4E 80 04 21 */ bctrl /* 80311410 0030D070 2C 03 00 00 */ cmpwi r3, 0 /* 80311414 0030D074 40 82 00 0C */ bne lbl_80311420 /* 80311418 0030D078 3B C0 00 00 */ li r30, 0 /* 8031141C 0030D07C 4B FF FF D4 */ b lbl_803113F0 lbl_80311420: /* 80311420 0030D080 2C 03 00 01 */ cmpwi r3, 1 /* 80311424 0030D084 40 82 01 AC */ bne lbl_803115D0 /* 80311428 0030D088 88 18 00 22 */ lbz r0, 0x22(r24) /* 8031142C 0030D08C 28 00 00 02 */ cmplwi r0, 2 /* 80311430 0030D090 41 80 01 A0 */ blt lbl_803115D0 /* 80311434 0030D094 7C 1C 00 40 */ cmplw r28, r0 /* 80311438 0030D098 40 80 01 98 */ bge lbl_803115D0 /* 8031143C 0030D09C 80 18 00 0C */ lwz r0, 0xc(r24) /* 80311440 0030D0A0 3B C0 00 00 */ li r30, 0 /* 80311444 0030D0A4 3B 9C 00 01 */ addi r28, r28, 1 /* 80311448 0030D0A8 7F BD 02 14 */ add r29, r29, r0 /* 8031144C 0030D0AC 4B FF FF A4 */ b lbl_803113F0 lbl_80311450: /* 80311450 0030D0B0 80 9B 00 00 */ lwz r4, 0(r27) /* 80311454 0030D0B4 80 C4 00 18 */ lwz r6, 0x18(r4) /* 80311458 0030D0B8 7C 06 E8 40 */ cmplw r6, r29 /* 8031145C 0030D0BC 41 81 00 14 */ bgt lbl_80311470 /* 80311460 0030D0C0 80 18 16 00 */ lwz r0, 0x1600(r24) /* 80311464 0030D0C4 7C 06 02 14 */ add r0, r6, r0 /* 80311468 0030D0C8 7C 00 E8 40 */ cmplw r0, r29 /* 8031146C 0030D0CC 41 81 00 44 */ bgt lbl_803114B0 lbl_80311470: /* 80311470 0030D0D0 A0 04 00 02 */ lhz r0, 2(r4) /* 80311474 0030D0D4 28 00 00 01 */ cmplwi r0, 1 /* 80311478 0030D0D8 40 82 00 18 */ bne lbl_80311490 /* 8031147C 0030D0DC 7F 03 C3 78 */ mr r3, r24 /* 80311480 0030D0E0 4B FF E9 E9 */ bl VFiPFFAT_UpdateFATEntry /* 80311484 0030D0E4 2C 03 00 00 */ cmpwi r3, 0 /* 80311488 0030D0E8 41 82 00 08 */ beq lbl_80311490 /* 8031148C 0030D0EC 48 00 01 84 */ b lbl_80311610 lbl_80311490: /* 80311490 0030D0F0 7F 03 C3 78 */ mr r3, r24 /* 80311494 0030D0F4 7F A4 EB 78 */ mr r4, r29 /* 80311498 0030D0F8 7F 65 DB 78 */ mr r5, r27 /* 8031149C 0030D0FC 4B FF 93 B1 */ bl VFiPFCACHE_ReadFATPage /* 803114A0 0030D100 2C 03 00 00 */ cmpwi r3, 0 /* 803114A4 0030D104 7C 7E 1B 78 */ mr r30, r3 /* 803114A8 0030D108 40 82 FF 48 */ bne lbl_803113F0 /* 803114AC 0030D10C 48 00 00 30 */ b lbl_803114DC lbl_803114B0: /* 803114B0 0030D110 80 64 00 04 */ lwz r3, 4(r4) /* 803114B4 0030D114 80 A4 00 08 */ lwz r5, 8(r4) /* 803114B8 0030D118 88 18 00 20 */ lbz r0, 0x20(r24) /* 803114BC 0030D11C 7C 63 28 50 */ subf r3, r3, r5 /* 803114C0 0030D120 7C 60 06 30 */ sraw r0, r3, r0 /* 803114C4 0030D124 7C 06 02 14 */ add r0, r6, r0 /* 803114C8 0030D128 7C 1D 00 40 */ cmplw r29, r0 /* 803114CC 0030D12C 41 82 00 10 */ beq lbl_803114DC /* 803114D0 0030D130 A0 18 00 00 */ lhz r0, 0(r24) /* 803114D4 0030D134 7C 05 02 14 */ add r0, r5, r0 /* 803114D8 0030D138 90 04 00 08 */ stw r0, 8(r4) lbl_803114DC: /* 803114DC 0030D13C A0 78 00 00 */ lhz r3, 0(r24) /* 803114E0 0030D140 38 03 FF FF */ addi r0, r3, -1 /* 803114E4 0030D144 7F E5 00 38 */ and r5, r31, r0 /* 803114E8 0030D148 7C 05 00 40 */ cmplw r5, r0 /* 803114EC 0030D14C 40 82 00 C4 */ bne lbl_803115B0 /* 803114F0 0030D150 80 7B 00 00 */ lwz r3, 0(r27) /* 803114F4 0030D154 38 DD 00 01 */ addi r6, r29, 1 /* 803114F8 0030D158 80 63 00 08 */ lwz r3, 8(r3) /* 803114FC 0030D15C 7C 03 28 AE */ lbzx r0, r3, r5 /* 80311500 0030D160 90 1A 00 00 */ stw r0, 0(r26) /* 80311504 0030D164 80 9B 00 00 */ lwz r4, 0(r27) /* 80311508 0030D168 80 E4 00 18 */ lwz r7, 0x18(r4) /* 8031150C 0030D16C 7C 07 30 40 */ cmplw r7, r6 /* 80311510 0030D170 41 81 00 14 */ bgt lbl_80311524 /* 80311514 0030D174 80 18 16 00 */ lwz r0, 0x1600(r24) /* 80311518 0030D178 7C 07 02 14 */ add r0, r7, r0 /* 8031151C 0030D17C 7C 00 30 40 */ cmplw r0, r6 /* 80311520 0030D180 41 81 00 44 */ bgt lbl_80311564 lbl_80311524: /* 80311524 0030D184 A0 04 00 02 */ lhz r0, 2(r4) /* 80311528 0030D188 28 00 00 01 */ cmplwi r0, 1 /* 8031152C 0030D18C 40 82 00 18 */ bne lbl_80311544 /* 80311530 0030D190 7F 03 C3 78 */ mr r3, r24 /* 80311534 0030D194 4B FF E9 35 */ bl VFiPFFAT_UpdateFATEntry /* 80311538 0030D198 2C 03 00 00 */ cmpwi r3, 0 /* 8031153C 0030D19C 41 82 00 08 */ beq lbl_80311544 /* 80311540 0030D1A0 48 00 00 D0 */ b lbl_80311610 lbl_80311544: /* 80311544 0030D1A4 7F 03 C3 78 */ mr r3, r24 /* 80311548 0030D1A8 7F 65 DB 78 */ mr r5, r27 /* 8031154C 0030D1AC 38 9D 00 01 */ addi r4, r29, 1 /* 80311550 0030D1B0 4B FF 92 FD */ bl VFiPFCACHE_ReadFATPage /* 80311554 0030D1B4 2C 03 00 00 */ cmpwi r3, 0 /* 80311558 0030D1B8 7C 7E 1B 78 */ mr r30, r3 /* 8031155C 0030D1BC 41 82 00 34 */ beq lbl_80311590 /* 80311560 0030D1C0 48 00 00 B0 */ b lbl_80311610 lbl_80311564: /* 80311564 0030D1C4 80 64 00 04 */ lwz r3, 4(r4) /* 80311568 0030D1C8 80 A4 00 08 */ lwz r5, 8(r4) /* 8031156C 0030D1CC 88 18 00 20 */ lbz r0, 0x20(r24) /* 80311570 0030D1D0 7C 63 28 50 */ subf r3, r3, r5 /* 80311574 0030D1D4 7C 60 06 30 */ sraw r0, r3, r0 /* 80311578 0030D1D8 7C 07 02 14 */ add r0, r7, r0 /* 8031157C 0030D1DC 7C 06 00 40 */ cmplw r6, r0 /* 80311580 0030D1E0 41 82 00 10 */ beq lbl_80311590 /* 80311584 0030D1E4 A0 18 00 00 */ lhz r0, 0(r24) /* 80311588 0030D1E8 7C 05 02 14 */ add r0, r5, r0 /* 8031158C 0030D1EC 90 04 00 08 */ stw r0, 8(r4) lbl_80311590: /* 80311590 0030D1F0 80 7B 00 00 */ lwz r3, 0(r27) /* 80311594 0030D1F4 80 9A 00 00 */ lwz r4, 0(r26) /* 80311598 0030D1F8 80 63 00 08 */ lwz r3, 8(r3) /* 8031159C 0030D1FC 88 03 00 00 */ lbz r0, 0(r3) /* 803115A0 0030D200 54 00 40 2E */ slwi r0, r0, 8 /* 803115A4 0030D204 7C 04 02 14 */ add r0, r4, r0 /* 803115A8 0030D208 90 1A 00 00 */ stw r0, 0(r26) /* 803115AC 0030D20C 48 00 00 24 */ b lbl_803115D0 lbl_803115B0: /* 803115B0 0030D210 80 7B 00 00 */ lwz r3, 0(r27) /* 803115B4 0030D214 80 83 00 08 */ lwz r4, 8(r3) /* 803115B8 0030D218 7C 64 2A 14 */ add r3, r4, r5 /* 803115BC 0030D21C 7C 04 28 AE */ lbzx r0, r4, r5 /* 803115C0 0030D220 88 63 00 01 */ lbz r3, 1(r3) /* 803115C4 0030D224 54 63 40 2E */ slwi r3, r3, 8 /* 803115C8 0030D228 7C 03 02 14 */ add r0, r3, r0 /* 803115CC 0030D22C 90 1A 00 00 */ stw r0, 0(r26) lbl_803115D0: /* 803115D0 0030D230 2C 1E 00 00 */ cmpwi r30, 0 /* 803115D4 0030D234 41 82 00 14 */ beq lbl_803115E8 /* 803115D8 0030D238 38 00 FF FF */ li r0, -1 /* 803115DC 0030D23C 7F C3 F3 78 */ mr r3, r30 /* 803115E0 0030D240 90 1A 00 00 */ stw r0, 0(r26) /* 803115E4 0030D244 48 00 00 2C */ b lbl_80311610 lbl_803115E8: /* 803115E8 0030D248 57 20 07 FF */ clrlwi. r0, r25, 0x1f /* 803115EC 0030D24C 41 82 00 14 */ beq lbl_80311600 /* 803115F0 0030D250 80 1A 00 00 */ lwz r0, 0(r26) /* 803115F4 0030D254 54 00 E1 3E */ srwi r0, r0, 4 /* 803115F8 0030D258 90 1A 00 00 */ stw r0, 0(r26) /* 803115FC 0030D25C 48 00 00 10 */ b lbl_8031160C lbl_80311600: /* 80311600 0030D260 80 1A 00 00 */ lwz r0, 0(r26) /* 80311604 0030D264 54 00 05 3E */ clrlwi r0, r0, 0x14 /* 80311608 0030D268 90 1A 00 00 */ stw r0, 0(r26) lbl_8031160C: /* 8031160C 0030D26C 38 60 00 00 */ li r3, 0 lbl_80311610: /* 80311610 0030D270 39 61 00 30 */ addi r11, r1, 0x30 /* 80311614 0030D274 4B EB 5B 55 */ bl _restgpr_24 /* 80311618 0030D278 80 01 00 34 */ lwz r0, 0x34(r1) /* 8031161C 0030D27C 7C 08 03 A6 */ mtlr r0 /* 80311620 0030D280 38 21 00 30 */ addi r1, r1, 0x30 /* 80311624 0030D284 4E 80 00 20 */ blr .global VFiPFFAT12_WriteFATEntry VFiPFFAT12_WriteFATEntry: /* 80311628 0030D288 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8031162C 0030D28C 7C 08 02 A6 */ mflr r0 /* 80311630 0030D290 2C 03 00 00 */ cmpwi r3, 0 /* 80311634 0030D294 90 01 00 24 */ stw r0, 0x24(r1) /* 80311638 0030D298 93 E1 00 1C */ stw r31, 0x1c(r1) /* 8031163C 0030D29C 93 C1 00 18 */ stw r30, 0x18(r1) /* 80311640 0030D2A0 7C BE 2B 78 */ mr r30, r5 /* 80311644 0030D2A4 93 A1 00 14 */ stw r29, 0x14(r1) /* 80311648 0030D2A8 7C 7D 1B 78 */ mr r29, r3 /* 8031164C 0030D2AC 93 81 00 10 */ stw r28, 0x10(r1) /* 80311650 0030D2B0 40 82 00 0C */ bne lbl_8031165C /* 80311654 0030D2B4 38 60 00 0A */ li r3, 0xa /* 80311658 0030D2B8 48 00 01 54 */ b lbl_803117AC lbl_8031165C: /* 8031165C 0030D2BC 28 04 00 02 */ cmplwi r4, 2 /* 80311660 0030D2C0 41 80 00 14 */ blt lbl_80311674 /* 80311664 0030D2C4 80 A3 00 34 */ lwz r5, 0x34(r3) /* 80311668 0030D2C8 38 05 00 02 */ addi r0, r5, 2 /* 8031166C 0030D2CC 7C 04 00 40 */ cmplw r4, r0 /* 80311670 0030D2D0 41 80 00 1C */ blt lbl_8031168C lbl_80311674: /* 80311674 0030D2D4 2C 04 00 00 */ cmpwi r4, 0 /* 80311678 0030D2D8 41 82 00 14 */ beq lbl_8031168C /* 8031167C 0030D2DC 28 04 00 01 */ cmplwi r4, 1 /* 80311680 0030D2E0 41 82 00 0C */ beq lbl_8031168C /* 80311684 0030D2E4 38 60 00 0E */ li r3, 0xe /* 80311688 0030D2E8 48 00 01 24 */ b lbl_803117AC lbl_8031168C: /* 8031168C 0030D2EC 54 80 07 FF */ clrlwi. r0, r4, 0x1f /* 80311690 0030D2F0 7C 85 0E 70 */ srawi r5, r4, 1 /* 80311694 0030D2F4 7C 04 2A 14 */ add r0, r4, r5 /* 80311698 0030D2F8 A0 83 00 00 */ lhz r4, 0(r3) /* 8031169C 0030D2FC 88 A3 00 20 */ lbz r5, 0x20(r3) /* 803116A0 0030D300 54 07 04 3E */ clrlwi r7, r0, 0x10 /* 803116A4 0030D304 81 03 00 28 */ lwz r8, 0x28(r3) /* 803116A8 0030D308 7C E0 2E 30 */ sraw r0, r7, r5 /* 803116AC 0030D30C 38 C4 FF FF */ addi r6, r4, -1 /* 803116B0 0030D310 7C 08 02 14 */ add r0, r8, r0 /* 803116B4 0030D314 54 1F 04 3E */ clrlwi r31, r0, 0x10 /* 803116B8 0030D318 7C FC 30 38 */ and r28, r7, r6 /* 803116BC 0030D31C 41 82 00 40 */ beq lbl_803116FC /* 803116C0 0030D320 7F A3 EB 78 */ mr r3, r29 /* 803116C4 0030D324 7F E5 FB 78 */ mr r5, r31 /* 803116C8 0030D328 38 81 00 08 */ addi r4, r1, 8 /* 803116CC 0030D32C 57 86 04 3E */ clrlwi r6, r28, 0x10 /* 803116D0 0030D330 38 E0 00 01 */ li r7, 1 /* 803116D4 0030D334 48 00 72 9D */ bl VFiPFSEC_ReadFAT /* 803116D8 0030D338 2C 03 00 00 */ cmpwi r3, 0 /* 803116DC 0030D33C 41 82 00 08 */ beq lbl_803116E4 /* 803116E0 0030D340 48 00 00 CC */ b lbl_803117AC lbl_803116E4: /* 803116E4 0030D344 88 01 00 08 */ lbz r0, 8(r1) /* 803116E8 0030D348 57 C3 23 36 */ rlwinm r3, r30, 4, 0xc, 0x1b /* 803116EC 0030D34C 54 00 07 3E */ clrlwi r0, r0, 0x1c /* 803116F0 0030D350 7C 03 02 14 */ add r0, r3, r0 /* 803116F4 0030D354 54 03 04 3E */ clrlwi r3, r0, 0x10 /* 803116F8 0030D358 48 00 00 4C */ b lbl_80311744 lbl_803116FC: /* 803116FC 0030D35C 38 E7 00 01 */ addi r7, r7, 1 /* 80311700 0030D360 7F A3 EB 78 */ mr r3, r29 /* 80311704 0030D364 7C E0 2E 30 */ sraw r0, r7, r5 /* 80311708 0030D368 38 81 00 08 */ addi r4, r1, 8 /* 8031170C 0030D36C 7C A8 02 14 */ add r5, r8, r0 /* 80311710 0030D370 7C E0 30 38 */ and r0, r7, r6 /* 80311714 0030D374 38 E0 00 01 */ li r7, 1 /* 80311718 0030D378 54 A5 04 3E */ clrlwi r5, r5, 0x10 /* 8031171C 0030D37C 54 06 04 3E */ clrlwi r6, r0, 0x10 /* 80311720 0030D380 48 00 72 51 */ bl VFiPFSEC_ReadFAT /* 80311724 0030D384 2C 03 00 00 */ cmpwi r3, 0 /* 80311728 0030D388 41 82 00 08 */ beq lbl_80311730 /* 8031172C 0030D38C 48 00 00 80 */ b lbl_803117AC lbl_80311730: /* 80311730 0030D390 88 61 00 08 */ lbz r3, 8(r1) /* 80311734 0030D394 57 C0 05 3E */ clrlwi r0, r30, 0x14 /* 80311738 0030D398 54 63 44 26 */ rlwinm r3, r3, 8, 0x10, 0x13 /* 8031173C 0030D39C 7C 03 02 14 */ add r0, r3, r0 /* 80311740 0030D3A0 54 03 04 3E */ clrlwi r3, r0, 0x10 lbl_80311744: /* 80311744 0030D3A4 38 01 00 08 */ addi r0, r1, 8 /* 80311748 0030D3A8 57 86 04 3E */ clrlwi r6, r28, 0x10 /* 8031174C 0030D3AC 7C 60 07 2C */ sthbrx r3, 0, r0 /* 80311750 0030D3B0 A0 7D 00 00 */ lhz r3, 0(r29) /* 80311754 0030D3B4 38 03 FF FF */ addi r0, r3, -1 /* 80311758 0030D3B8 7C 06 00 00 */ cmpw r6, r0 /* 8031175C 0030D3BC 40 80 00 1C */ bge lbl_80311778 /* 80311760 0030D3C0 7F A3 EB 78 */ mr r3, r29 /* 80311764 0030D3C4 7F E5 FB 78 */ mr r5, r31 /* 80311768 0030D3C8 38 81 00 08 */ addi r4, r1, 8 /* 8031176C 0030D3CC 38 E0 00 02 */ li r7, 2 /* 80311770 0030D3D0 48 00 75 99 */ bl VFiPFSEC_WriteFAT /* 80311774 0030D3D4 48 00 00 38 */ b lbl_803117AC lbl_80311778: /* 80311778 0030D3D8 7F A3 EB 78 */ mr r3, r29 /* 8031177C 0030D3DC 7F E5 FB 78 */ mr r5, r31 /* 80311780 0030D3E0 38 81 00 08 */ addi r4, r1, 8 /* 80311784 0030D3E4 38 E0 00 01 */ li r7, 1 /* 80311788 0030D3E8 48 00 75 81 */ bl VFiPFSEC_WriteFAT /* 8031178C 0030D3EC 2C 03 00 00 */ cmpwi r3, 0 /* 80311790 0030D3F0 40 82 00 1C */ bne lbl_803117AC /* 80311794 0030D3F4 7F A3 EB 78 */ mr r3, r29 /* 80311798 0030D3F8 38 81 00 09 */ addi r4, r1, 9 /* 8031179C 0030D3FC 38 BF 00 01 */ addi r5, r31, 1 /* 803117A0 0030D400 38 C0 00 00 */ li r6, 0 /* 803117A4 0030D404 38 E0 00 01 */ li r7, 1 /* 803117A8 0030D408 48 00 75 61 */ bl VFiPFSEC_WriteFAT lbl_803117AC: /* 803117AC 0030D40C 80 01 00 24 */ lwz r0, 0x24(r1) /* 803117B0 0030D410 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 803117B4 0030D414 83 C1 00 18 */ lwz r30, 0x18(r1) /* 803117B8 0030D418 83 A1 00 14 */ lwz r29, 0x14(r1) /* 803117BC 0030D41C 83 81 00 10 */ lwz r28, 0x10(r1) /* 803117C0 0030D420 7C 08 03 A6 */ mtlr r0 /* 803117C4 0030D424 38 21 00 20 */ addi r1, r1, 0x20 /* 803117C8 0030D428 4E 80 00 20 */ blr .global VFiPFFAT12_WriteFATEntryPage VFiPFFAT12_WriteFATEntryPage: /* 803117CC 0030D42C 94 21 FF D0 */ stwu r1, -0x30(r1) /* 803117D0 0030D430 7C 08 02 A6 */ mflr r0 /* 803117D4 0030D434 90 01 00 34 */ stw r0, 0x34(r1) /* 803117D8 0030D438 39 61 00 30 */ addi r11, r1, 0x30 /* 803117DC 0030D43C 4B EB 59 41 */ bl _savegpr_24 /* 803117E0 0030D440 2C 03 00 00 */ cmpwi r3, 0 /* 803117E4 0030D444 7C 79 1B 78 */ mr r25, r3 /* 803117E8 0030D448 7C 9A 23 78 */ mr r26, r4 /* 803117EC 0030D44C 7C BB 2B 78 */ mr r27, r5 /* 803117F0 0030D450 7C DC 33 78 */ mr r28, r6 /* 803117F4 0030D454 3B C0 00 00 */ li r30, 0 /* 803117F8 0030D458 40 82 00 0C */ bne lbl_80311804 /* 803117FC 0030D45C 38 60 00 0A */ li r3, 0xa /* 80311800 0030D460 48 00 04 40 */ b lbl_80311C40 lbl_80311804: /* 80311804 0030D464 28 04 00 02 */ cmplwi r4, 2 /* 80311808 0030D468 41 80 00 14 */ blt lbl_8031181C /* 8031180C 0030D46C 80 A3 00 34 */ lwz r5, 0x34(r3) /* 80311810 0030D470 38 05 00 02 */ addi r0, r5, 2 /* 80311814 0030D474 7C 04 00 40 */ cmplw r4, r0 /* 80311818 0030D478 41 80 00 1C */ blt lbl_80311834 lbl_8031181C: /* 8031181C 0030D47C 2C 04 00 00 */ cmpwi r4, 0 /* 80311820 0030D480 41 82 00 14 */ beq lbl_80311834 /* 80311824 0030D484 28 04 00 01 */ cmplwi r4, 1 /* 80311828 0030D488 41 82 00 0C */ beq lbl_80311834 /* 8031182C 0030D48C 38 60 00 0E */ li r3, 0xe /* 80311830 0030D490 48 00 04 10 */ b lbl_80311C40 lbl_80311834: /* 80311834 0030D494 54 80 FC 7E */ rlwinm r0, r4, 0x1f, 0x11, 0x1f /* 80311838 0030D498 88 E3 00 20 */ lbz r7, 0x20(r3) /* 8031183C 0030D49C 7C 04 02 14 */ add r0, r4, r0 /* 80311840 0030D4A0 80 A6 00 00 */ lwz r5, 0(r6) /* 80311844 0030D4A4 54 06 04 3E */ clrlwi r6, r0, 0x10 /* 80311848 0030D4A8 80 83 00 28 */ lwz r4, 0x28(r3) /* 8031184C 0030D4AC 7C C0 3C 30 */ srw r0, r6, r7 /* 80311850 0030D4B0 A1 03 00 00 */ lhz r8, 0(r3) /* 80311854 0030D4B4 7C 04 02 14 */ add r0, r4, r0 /* 80311858 0030D4B8 80 85 00 18 */ lwz r4, 0x18(r5) /* 8031185C 0030D4BC 54 1D 04 3E */ clrlwi r29, r0, 0x10 /* 80311860 0030D4C0 7C 04 E8 40 */ cmplw r4, r29 /* 80311864 0030D4C4 38 08 FF FF */ addi r0, r8, -1 /* 80311868 0030D4C8 7C DF 00 38 */ and r31, r6, r0 /* 8031186C 0030D4CC 41 81 00 14 */ bgt lbl_80311880 /* 80311870 0030D4D0 80 03 16 00 */ lwz r0, 0x1600(r3) /* 80311874 0030D4D4 7C 04 02 14 */ add r0, r4, r0 /* 80311878 0030D4D8 7C 00 E8 40 */ cmplw r0, r29 /* 8031187C 0030D4DC 41 81 00 B4 */ bgt lbl_80311930 lbl_80311880: /* 80311880 0030D4E0 7F 23 CB 78 */ mr r3, r25 /* 80311884 0030D4E4 7C A4 2B 78 */ mr r4, r5 /* 80311888 0030D4E8 4B FF E5 E1 */ bl VFiPFFAT_UpdateFATEntry /* 8031188C 0030D4EC 2C 03 00 00 */ cmpwi r3, 0 /* 80311890 0030D4F0 41 82 00 08 */ beq lbl_80311898 /* 80311894 0030D4F4 48 00 03 AC */ b lbl_80311C40 lbl_80311898: /* 80311898 0030D4F8 A0 79 00 18 */ lhz r3, 0x18(r25) /* 8031189C 0030D4FC 3B 00 00 01 */ li r24, 1 /* 803118A0 0030D500 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18 /* 803118A4 0030D504 41 82 00 08 */ beq lbl_803118AC /* 803118A8 0030D508 54 78 07 7E */ clrlwi r24, r3, 0x1d lbl_803118AC: /* 803118AC 0030D50C 7F 23 CB 78 */ mr r3, r25 /* 803118B0 0030D510 7F A4 EB 78 */ mr r4, r29 /* 803118B4 0030D514 7F 85 E3 78 */ mr r5, r28 /* 803118B8 0030D518 4B FF 8F 95 */ bl VFiPFCACHE_ReadFATPage /* 803118BC 0030D51C 2C 03 10 00 */ cmpwi r3, 0x1000 /* 803118C0 0030D520 7C 7E 1B 78 */ mr r30, r3 /* 803118C4 0030D524 40 82 00 50 */ bne lbl_80311914 /* 803118C8 0030D528 81 99 18 90 */ lwz r12, 0x1890(r25) /* 803118CC 0030D52C 2C 0C 00 00 */ cmpwi r12, 0 /* 803118D0 0030D530 41 82 00 44 */ beq lbl_80311914 /* 803118D4 0030D534 80 79 18 70 */ lwz r3, 0x1870(r25) /* 803118D8 0030D538 7D 89 03 A6 */ mtctr r12 /* 803118DC 0030D53C 4E 80 04 21 */ bctrl /* 803118E0 0030D540 2C 03 00 00 */ cmpwi r3, 0 /* 803118E4 0030D544 41 82 00 40 */ beq lbl_80311924 /* 803118E8 0030D548 2C 03 00 01 */ cmpwi r3, 1 /* 803118EC 0030D54C 40 82 00 28 */ bne lbl_80311914 /* 803118F0 0030D550 88 19 00 22 */ lbz r0, 0x22(r25) /* 803118F4 0030D554 28 00 00 02 */ cmplwi r0, 2 /* 803118F8 0030D558 41 80 00 1C */ blt lbl_80311914 /* 803118FC 0030D55C 7C 18 00 40 */ cmplw r24, r0 /* 80311900 0030D560 40 80 00 14 */ bge lbl_80311914 /* 80311904 0030D564 80 19 00 0C */ lwz r0, 0xc(r25) /* 80311908 0030D568 3B 18 00 01 */ addi r24, r24, 1 /* 8031190C 0030D56C 7F BD 02 14 */ add r29, r29, r0 /* 80311910 0030D570 48 00 00 14 */ b lbl_80311924 lbl_80311914: /* 80311914 0030D574 2C 1E 00 00 */ cmpwi r30, 0 /* 80311918 0030D578 41 82 00 0C */ beq lbl_80311924 /* 8031191C 0030D57C 7F C3 F3 78 */ mr r3, r30 /* 80311920 0030D580 48 00 03 20 */ b lbl_80311C40 lbl_80311924: /* 80311924 0030D584 2C 1E 00 00 */ cmpwi r30, 0 /* 80311928 0030D588 40 82 FF 84 */ bne lbl_803118AC /* 8031192C 0030D58C 48 00 00 28 */ b lbl_80311954 lbl_80311930: /* 80311930 0030D590 80 05 00 04 */ lwz r0, 4(r5) /* 80311934 0030D594 80 65 00 08 */ lwz r3, 8(r5) /* 80311938 0030D598 7C 00 18 50 */ subf r0, r0, r3 /* 8031193C 0030D59C 7C 00 3E 30 */ sraw r0, r0, r7 /* 80311940 0030D5A0 7C 04 02 14 */ add r0, r4, r0 /* 80311944 0030D5A4 7C 1D 00 40 */ cmplw r29, r0 /* 80311948 0030D5A8 41 82 00 0C */ beq lbl_80311954 /* 8031194C 0030D5AC 7C 03 42 14 */ add r0, r3, r8 /* 80311950 0030D5B0 90 05 00 08 */ stw r0, 8(r5) lbl_80311954: /* 80311954 0030D5B4 57 40 07 FF */ clrlwi. r0, r26, 0x1f /* 80311958 0030D5B8 41 82 01 70 */ beq lbl_80311AC8 /* 8031195C 0030D5BC 80 9C 00 00 */ lwz r4, 0(r28) /* 80311960 0030D5C0 57 E3 04 3E */ clrlwi r3, r31, 0x10 /* 80311964 0030D5C4 80 84 00 08 */ lwz r4, 8(r4) /* 80311968 0030D5C8 7C 04 18 AE */ lbzx r0, r4, r3 /* 8031196C 0030D5CC 54 00 07 3E */ clrlwi r0, r0, 0x1c /* 80311970 0030D5D0 53 60 26 36 */ rlwimi r0, r27, 4, 0x18, 0x1b /* 80311974 0030D5D4 7C 04 19 AE */ stbx r0, r4, r3 /* 80311978 0030D5D8 80 7C 00 00 */ lwz r3, 0(r28) /* 8031197C 0030D5DC 4B FF 8C 75 */ bl VFiPFCACHE_UpdateModifiedSector /* 80311980 0030D5E0 A1 19 00 00 */ lhz r8, 0(r25) /* 80311984 0030D5E4 57 E5 04 3E */ clrlwi r5, r31, 0x10 /* 80311988 0030D5E8 38 08 FF FF */ addi r0, r8, -1 /* 8031198C 0030D5EC 7C 05 00 40 */ cmplw r5, r0 /* 80311990 0030D5F0 40 82 01 20 */ bne lbl_80311AB0 /* 80311994 0030D5F4 80 9C 00 00 */ lwz r4, 0(r28) /* 80311998 0030D5F8 38 DD 00 01 */ addi r6, r29, 1 /* 8031199C 0030D5FC 80 E4 00 18 */ lwz r7, 0x18(r4) /* 803119A0 0030D600 7C 07 30 40 */ cmplw r7, r6 /* 803119A4 0030D604 41 81 00 14 */ bgt lbl_803119B8 /* 803119A8 0030D608 80 19 16 00 */ lwz r0, 0x1600(r25) /* 803119AC 0030D60C 7C 07 02 14 */ add r0, r7, r0 /* 803119B0 0030D610 7C 00 30 40 */ cmplw r0, r6 /* 803119B4 0030D614 41 81 00 B8 */ bgt lbl_80311A6C lbl_803119B8: /* 803119B8 0030D618 7F 23 CB 78 */ mr r3, r25 /* 803119BC 0030D61C 4B FF E4 AD */ bl VFiPFFAT_UpdateFATEntry /* 803119C0 0030D620 2C 03 00 00 */ cmpwi r3, 0 /* 803119C4 0030D624 41 82 00 08 */ beq lbl_803119CC /* 803119C8 0030D628 48 00 02 78 */ b lbl_80311C40 lbl_803119CC: /* 803119CC 0030D62C A0 79 00 18 */ lhz r3, 0x18(r25) /* 803119D0 0030D630 3B 40 00 01 */ li r26, 1 /* 803119D4 0030D634 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18 /* 803119D8 0030D638 41 82 00 08 */ beq lbl_803119E0 /* 803119DC 0030D63C 54 7A 07 7E */ clrlwi r26, r3, 0x1d lbl_803119E0: /* 803119E0 0030D640 7F 23 CB 78 */ mr r3, r25 /* 803119E4 0030D644 7F 85 E3 78 */ mr r5, r28 /* 803119E8 0030D648 38 9D 00 01 */ addi r4, r29, 1 /* 803119EC 0030D64C 4B FF 8E 61 */ bl VFiPFCACHE_ReadFATPage /* 803119F0 0030D650 2C 03 10 00 */ cmpwi r3, 0x1000 /* 803119F4 0030D654 7C 7E 1B 78 */ mr r30, r3 /* 803119F8 0030D658 40 82 00 50 */ bne lbl_80311A48 /* 803119FC 0030D65C 81 99 18 90 */ lwz r12, 0x1890(r25) /* 80311A00 0030D660 2C 0C 00 00 */ cmpwi r12, 0 /* 80311A04 0030D664 41 82 00 44 */ beq lbl_80311A48 /* 80311A08 0030D668 80 79 18 70 */ lwz r3, 0x1870(r25) /* 80311A0C 0030D66C 7D 89 03 A6 */ mtctr r12 /* 80311A10 0030D670 4E 80 04 21 */ bctrl /* 80311A14 0030D674 2C 03 00 00 */ cmpwi r3, 0 /* 80311A18 0030D678 41 82 00 40 */ beq lbl_80311A58 /* 80311A1C 0030D67C 2C 03 00 01 */ cmpwi r3, 1 /* 80311A20 0030D680 40 82 00 28 */ bne lbl_80311A48 /* 80311A24 0030D684 88 19 00 22 */ lbz r0, 0x22(r25) /* 80311A28 0030D688 28 00 00 02 */ cmplwi r0, 2 /* 80311A2C 0030D68C 41 80 00 1C */ blt lbl_80311A48 /* 80311A30 0030D690 7C 1A 00 40 */ cmplw r26, r0 /* 80311A34 0030D694 40 80 00 14 */ bge lbl_80311A48 /* 80311A38 0030D698 80 19 00 0C */ lwz r0, 0xc(r25) /* 80311A3C 0030D69C 3B 5A 00 01 */ addi r26, r26, 1 /* 80311A40 0030D6A0 7F BD 02 14 */ add r29, r29, r0 /* 80311A44 0030D6A4 48 00 00 14 */ b lbl_80311A58 lbl_80311A48: /* 80311A48 0030D6A8 2C 1E 00 00 */ cmpwi r30, 0 /* 80311A4C 0030D6AC 41 82 00 0C */ beq lbl_80311A58 /* 80311A50 0030D6B0 7F C3 F3 78 */ mr r3, r30 /* 80311A54 0030D6B4 48 00 01 EC */ b lbl_80311C40 lbl_80311A58: /* 80311A58 0030D6B8 2C 1E 00 00 */ cmpwi r30, 0 /* 80311A5C 0030D6BC 40 82 FF 84 */ bne lbl_803119E0 /* 80311A60 0030D6C0 80 7C 00 00 */ lwz r3, 0(r28) /* 80311A64 0030D6C4 4B FF 8B 8D */ bl VFiPFCACHE_UpdateModifiedSector /* 80311A68 0030D6C8 48 00 00 34 */ b lbl_80311A9C lbl_80311A6C: /* 80311A6C 0030D6CC 80 64 00 04 */ lwz r3, 4(r4) /* 80311A70 0030D6D0 80 A4 00 08 */ lwz r5, 8(r4) /* 80311A74 0030D6D4 88 19 00 20 */ lbz r0, 0x20(r25) /* 80311A78 0030D6D8 7C 63 28 50 */ subf r3, r3, r5 /* 80311A7C 0030D6DC 7C 60 06 30 */ sraw r0, r3, r0 /* 80311A80 0030D6E0 7C 07 02 14 */ add r0, r7, r0 /* 80311A84 0030D6E4 7C 06 00 40 */ cmplw r6, r0 /* 80311A88 0030D6E8 41 82 00 14 */ beq lbl_80311A9C /* 80311A8C 0030D6EC 7C 05 42 14 */ add r0, r5, r8 /* 80311A90 0030D6F0 90 04 00 08 */ stw r0, 8(r4) /* 80311A94 0030D6F4 80 7C 00 00 */ lwz r3, 0(r28) /* 80311A98 0030D6F8 4B FF 8B 59 */ bl VFiPFCACHE_UpdateModifiedSector lbl_80311A9C: /* 80311A9C 0030D6FC 80 7C 00 00 */ lwz r3, 0(r28) /* 80311AA0 0030D700 57 60 E6 3E */ rlwinm r0, r27, 0x1c, 0x18, 0x1f /* 80311AA4 0030D704 80 63 00 08 */ lwz r3, 8(r3) /* 80311AA8 0030D708 98 03 00 00 */ stb r0, 0(r3) /* 80311AAC 0030D70C 48 00 01 90 */ b lbl_80311C3C lbl_80311AB0: /* 80311AB0 0030D710 80 7C 00 00 */ lwz r3, 0(r28) /* 80311AB4 0030D714 57 64 E6 3E */ rlwinm r4, r27, 0x1c, 0x18, 0x1f /* 80311AB8 0030D718 80 03 00 08 */ lwz r0, 8(r3) /* 80311ABC 0030D71C 7C 65 02 14 */ add r3, r5, r0 /* 80311AC0 0030D720 98 83 00 01 */ stb r4, 1(r3) /* 80311AC4 0030D724 48 00 01 78 */ b lbl_80311C3C lbl_80311AC8: /* 80311AC8 0030D728 80 7C 00 00 */ lwz r3, 0(r28) /* 80311ACC 0030D72C 57 E0 04 3E */ clrlwi r0, r31, 0x10 /* 80311AD0 0030D730 80 63 00 08 */ lwz r3, 8(r3) /* 80311AD4 0030D734 7F 63 01 AE */ stbx r27, r3, r0 /* 80311AD8 0030D738 80 7C 00 00 */ lwz r3, 0(r28) /* 80311ADC 0030D73C 4B FF 8B 15 */ bl VFiPFCACHE_UpdateModifiedSector /* 80311AE0 0030D740 A1 19 00 00 */ lhz r8, 0(r25) /* 80311AE4 0030D744 57 E5 04 3E */ clrlwi r5, r31, 0x10 /* 80311AE8 0030D748 38 08 FF FF */ addi r0, r8, -1 /* 80311AEC 0030D74C 7C 05 00 40 */ cmplw r5, r0 /* 80311AF0 0030D750 40 82 01 2C */ bne lbl_80311C1C /* 80311AF4 0030D754 80 9C 00 00 */ lwz r4, 0(r28) /* 80311AF8 0030D758 38 DD 00 01 */ addi r6, r29, 1 /* 80311AFC 0030D75C 80 E4 00 18 */ lwz r7, 0x18(r4) /* 80311B00 0030D760 7C 07 30 40 */ cmplw r7, r6 /* 80311B04 0030D764 41 81 00 14 */ bgt lbl_80311B18 /* 80311B08 0030D768 80 19 16 00 */ lwz r0, 0x1600(r25) /* 80311B0C 0030D76C 7C 07 02 14 */ add r0, r7, r0 /* 80311B10 0030D770 7C 00 30 40 */ cmplw r0, r6 /* 80311B14 0030D774 41 81 00 B8 */ bgt lbl_80311BCC lbl_80311B18: /* 80311B18 0030D778 7F 23 CB 78 */ mr r3, r25 /* 80311B1C 0030D77C 4B FF E3 4D */ bl VFiPFFAT_UpdateFATEntry /* 80311B20 0030D780 2C 03 00 00 */ cmpwi r3, 0 /* 80311B24 0030D784 41 82 00 08 */ beq lbl_80311B2C /* 80311B28 0030D788 48 00 01 18 */ b lbl_80311C40 lbl_80311B2C: /* 80311B2C 0030D78C A0 79 00 18 */ lhz r3, 0x18(r25) /* 80311B30 0030D790 3B 40 00 01 */ li r26, 1 /* 80311B34 0030D794 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18 /* 80311B38 0030D798 41 82 00 08 */ beq lbl_80311B40 /* 80311B3C 0030D79C 54 7A 07 7E */ clrlwi r26, r3, 0x1d lbl_80311B40: /* 80311B40 0030D7A0 7F 23 CB 78 */ mr r3, r25 /* 80311B44 0030D7A4 7F 85 E3 78 */ mr r5, r28 /* 80311B48 0030D7A8 38 9D 00 01 */ addi r4, r29, 1 /* 80311B4C 0030D7AC 4B FF 8D 01 */ bl VFiPFCACHE_ReadFATPage /* 80311B50 0030D7B0 2C 03 10 00 */ cmpwi r3, 0x1000 /* 80311B54 0030D7B4 7C 7E 1B 78 */ mr r30, r3 /* 80311B58 0030D7B8 40 82 00 50 */ bne lbl_80311BA8 /* 80311B5C 0030D7BC 81 99 18 90 */ lwz r12, 0x1890(r25) /* 80311B60 0030D7C0 2C 0C 00 00 */ cmpwi r12, 0 /* 80311B64 0030D7C4 41 82 00 44 */ beq lbl_80311BA8 /* 80311B68 0030D7C8 80 79 18 70 */ lwz r3, 0x1870(r25) /* 80311B6C 0030D7CC 7D 89 03 A6 */ mtctr r12 /* 80311B70 0030D7D0 4E 80 04 21 */ bctrl /* 80311B74 0030D7D4 2C 03 00 00 */ cmpwi r3, 0 /* 80311B78 0030D7D8 41 82 00 40 */ beq lbl_80311BB8 /* 80311B7C 0030D7DC 2C 03 00 01 */ cmpwi r3, 1 /* 80311B80 0030D7E0 40 82 00 28 */ bne lbl_80311BA8 /* 80311B84 0030D7E4 88 19 00 22 */ lbz r0, 0x22(r25) /* 80311B88 0030D7E8 28 00 00 02 */ cmplwi r0, 2 /* 80311B8C 0030D7EC 41 80 00 1C */ blt lbl_80311BA8 /* 80311B90 0030D7F0 7C 1A 00 40 */ cmplw r26, r0 /* 80311B94 0030D7F4 40 80 00 14 */ bge lbl_80311BA8 /* 80311B98 0030D7F8 80 19 00 0C */ lwz r0, 0xc(r25) /* 80311B9C 0030D7FC 3B 5A 00 01 */ addi r26, r26, 1 /* 80311BA0 0030D800 7F BD 02 14 */ add r29, r29, r0 /* 80311BA4 0030D804 48 00 00 14 */ b lbl_80311BB8 lbl_80311BA8: /* 80311BA8 0030D808 2C 1E 00 00 */ cmpwi r30, 0 /* 80311BAC 0030D80C 41 82 00 0C */ beq lbl_80311BB8 /* 80311BB0 0030D810 7F C3 F3 78 */ mr r3, r30 /* 80311BB4 0030D814 48 00 00 8C */ b lbl_80311C40 lbl_80311BB8: /* 80311BB8 0030D818 2C 1E 00 00 */ cmpwi r30, 0 /* 80311BBC 0030D81C 40 82 FF 84 */ bne lbl_80311B40 /* 80311BC0 0030D820 80 7C 00 00 */ lwz r3, 0(r28) /* 80311BC4 0030D824 4B FF 8A 2D */ bl VFiPFCACHE_UpdateModifiedSector /* 80311BC8 0030D828 48 00 00 34 */ b lbl_80311BFC lbl_80311BCC: /* 80311BCC 0030D82C 80 64 00 04 */ lwz r3, 4(r4) /* 80311BD0 0030D830 80 A4 00 08 */ lwz r5, 8(r4) /* 80311BD4 0030D834 88 19 00 20 */ lbz r0, 0x20(r25) /* 80311BD8 0030D838 7C 63 28 50 */ subf r3, r3, r5 /* 80311BDC 0030D83C 7C 60 06 30 */ sraw r0, r3, r0 /* 80311BE0 0030D840 7C 07 02 14 */ add r0, r7, r0 /* 80311BE4 0030D844 7C 06 00 40 */ cmplw r6, r0 /* 80311BE8 0030D848 41 82 00 14 */ beq lbl_80311BFC /* 80311BEC 0030D84C 7C 05 42 14 */ add r0, r5, r8 /* 80311BF0 0030D850 90 04 00 08 */ stw r0, 8(r4) /* 80311BF4 0030D854 80 7C 00 00 */ lwz r3, 0(r28) /* 80311BF8 0030D858 4B FF 89 F9 */ bl VFiPFCACHE_UpdateModifiedSector lbl_80311BFC: /* 80311BFC 0030D85C 80 7C 00 00 */ lwz r3, 0(r28) /* 80311C00 0030D860 57 60 C6 3E */ rlwinm r0, r27, 0x18, 0x18, 0x1f /* 80311C04 0030D864 80 83 00 08 */ lwz r4, 8(r3) /* 80311C08 0030D868 88 64 00 00 */ lbz r3, 0(r4) /* 80311C0C 0030D86C 54 63 06 36 */ rlwinm r3, r3, 0, 0x18, 0x1b /* 80311C10 0030D870 7C 60 03 78 */ or r0, r3, r0 /* 80311C14 0030D874 98 04 00 00 */ stb r0, 0(r4) /* 80311C18 0030D878 48 00 00 24 */ b lbl_80311C3C lbl_80311C1C: /* 80311C1C 0030D87C 80 9C 00 00 */ lwz r4, 0(r28) /* 80311C20 0030D880 57 63 C6 3E */ rlwinm r3, r27, 0x18, 0x18, 0x1f /* 80311C24 0030D884 80 04 00 08 */ lwz r0, 8(r4) /* 80311C28 0030D888 7C 85 02 14 */ add r4, r5, r0 /* 80311C2C 0030D88C 88 04 00 01 */ lbz r0, 1(r4) /* 80311C30 0030D890 54 00 06 36 */ rlwinm r0, r0, 0, 0x18, 0x1b /* 80311C34 0030D894 7C 60 03 78 */ or r0, r3, r0 /* 80311C38 0030D898 98 04 00 01 */ stb r0, 1(r4) lbl_80311C3C: /* 80311C3C 0030D89C 7F C3 F3 78 */ mr r3, r30 lbl_80311C40: /* 80311C40 0030D8A0 39 61 00 30 */ addi r11, r1, 0x30 /* 80311C44 0030D8A4 4B EB 55 25 */ bl _restgpr_24 /* 80311C48 0030D8A8 80 01 00 34 */ lwz r0, 0x34(r1) /* 80311C4C 0030D8AC 7C 08 03 A6 */ mtlr r0 /* 80311C50 0030D8B0 38 21 00 30 */ addi r1, r1, 0x30 /* 80311C54 0030D8B4 4E 80 00 20 */ blr