.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global VFiPFSEC_ReadFAT VFiPFSEC_ReadFAT: /* 80318970 003145D0 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80318974 003145D4 7C 08 02 A6 */ mflr r0 /* 80318978 003145D8 90 01 00 34 */ stw r0, 0x34(r1) /* 8031897C 003145DC 39 61 00 30 */ addi r11, r1, 0x30 /* 80318980 003145E0 4B EA E7 A9 */ bl _savegpr_27 /* 80318984 003145E4 2C 03 00 00 */ cmpwi r3, 0 /* 80318988 003145E8 7C 7B 1B 78 */ mr r27, r3 /* 8031898C 003145EC 7C 9C 23 78 */ mr r28, r4 /* 80318990 003145F0 7C BD 2B 78 */ mr r29, r5 /* 80318994 003145F4 7C DE 33 78 */ mr r30, r6 /* 80318998 003145F8 7C FF 3B 78 */ mr r31, r7 /* 8031899C 003145FC 40 82 00 0C */ bne lbl_803189A8 /* 803189A0 00314600 38 60 00 0A */ li r3, 0xa /* 803189A4 00314604 48 00 00 6C */ b lbl_80318A10 lbl_803189A8: /* 803189A8 00314608 2C 04 00 00 */ cmpwi r4, 0 /* 803189AC 0031460C 40 82 00 0C */ bne lbl_803189B8 /* 803189B0 00314610 38 60 00 0A */ li r3, 0xa /* 803189B4 00314614 48 00 00 5C */ b lbl_80318A10 lbl_803189B8: /* 803189B8 00314618 A0 03 18 78 */ lhz r0, 0x1878(r3) /* 803189BC 0031461C 54 00 07 FF */ clrlwi. r0, r0, 0x1f /* 803189C0 00314620 41 82 00 10 */ beq lbl_803189D0 /* 803189C4 00314624 4B FE D3 8D */ bl VFiPFDRV_IsInserted /* 803189C8 00314628 2C 03 00 00 */ cmpwi r3, 0 /* 803189CC 0031462C 40 82 00 0C */ bne lbl_803189D8 lbl_803189D0: /* 803189D0 00314630 38 60 00 09 */ li r3, 9 /* 803189D4 00314634 48 00 00 3C */ b lbl_80318A10 lbl_803189D8: /* 803189D8 00314638 7F 63 DB 78 */ mr r3, r27 /* 803189DC 0031463C 7F A4 EB 78 */ mr r4, r29 /* 803189E0 00314640 38 A1 00 08 */ addi r5, r1, 8 /* 803189E4 00314644 4B FF 1E 69 */ bl VFiPFCACHE_ReadFATPage /* 803189E8 00314648 2C 03 00 00 */ cmpwi r3, 0 /* 803189EC 0031464C 41 82 00 08 */ beq lbl_803189F4 /* 803189F0 00314650 48 00 00 20 */ b lbl_80318A10 lbl_803189F4: /* 803189F4 00314654 80 81 00 08 */ lwz r4, 8(r1) /* 803189F8 00314658 7F 83 E3 78 */ mr r3, r28 /* 803189FC 0031465C 7F E5 FB 78 */ mr r5, r31 /* 80318A00 00314660 80 04 00 08 */ lwz r0, 8(r4) /* 80318A04 00314664 7C 80 F2 14 */ add r4, r0, r30 /* 80318A08 00314668 4B FE C4 A5 */ bl VFipf_memcpy /* 80318A0C 0031466C 38 60 00 00 */ li r3, 0 lbl_80318A10: /* 80318A10 00314670 39 61 00 30 */ addi r11, r1, 0x30 /* 80318A14 00314674 4B EA E7 61 */ bl _restgpr_27 /* 80318A18 00314678 80 01 00 34 */ lwz r0, 0x34(r1) /* 80318A1C 0031467C 7C 08 03 A6 */ mtlr r0 /* 80318A20 00314680 38 21 00 30 */ addi r1, r1, 0x30 /* 80318A24 00314684 4E 80 00 20 */ blr .global VFiPFSEC_ReadData VFiPFSEC_ReadData: /* 80318A28 00314688 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80318A2C 0031468C 7C 08 02 A6 */ mflr r0 /* 80318A30 00314690 90 01 00 34 */ stw r0, 0x34(r1) /* 80318A34 00314694 39 61 00 30 */ addi r11, r1, 0x30 /* 80318A38 00314698 4B EA E6 E9 */ bl _savegpr_25 /* 80318A3C 0031469C 38 00 00 00 */ li r0, 0 /* 80318A40 003146A0 2C 03 00 00 */ cmpwi r3, 0 /* 80318A44 003146A4 90 08 00 00 */ stw r0, 0(r8) /* 80318A48 003146A8 7C 7A 1B 78 */ mr r26, r3 /* 80318A4C 003146AC 7C 9B 23 78 */ mr r27, r4 /* 80318A50 003146B0 7C BC 2B 78 */ mr r28, r5 /* 80318A54 003146B4 7C D9 33 78 */ mr r25, r6 /* 80318A58 003146B8 7C FF 3B 78 */ mr r31, r7 /* 80318A5C 003146BC 7D 1D 43 78 */ mr r29, r8 /* 80318A60 003146C0 7D 3E 4B 78 */ mr r30, r9 /* 80318A64 003146C4 40 82 00 0C */ bne lbl_80318A70 /* 80318A68 003146C8 38 60 00 0A */ li r3, 0xa /* 80318A6C 003146CC 48 00 02 84 */ b lbl_80318CF0 lbl_80318A70: /* 80318A70 003146D0 2C 04 00 00 */ cmpwi r4, 0 /* 80318A74 003146D4 40 82 00 0C */ bne lbl_80318A80 /* 80318A78 003146D8 38 60 00 0A */ li r3, 0xa /* 80318A7C 003146DC 48 00 02 74 */ b lbl_80318CF0 lbl_80318A80: /* 80318A80 003146E0 A0 03 18 78 */ lhz r0, 0x1878(r3) /* 80318A84 003146E4 54 00 07 FF */ clrlwi. r0, r0, 0x1f /* 80318A88 003146E8 41 82 00 10 */ beq lbl_80318A98 /* 80318A8C 003146EC 4B FE D2 C5 */ bl VFiPFDRV_IsInserted /* 80318A90 003146F0 2C 03 00 00 */ cmpwi r3, 0 /* 80318A94 003146F4 40 82 00 0C */ bne lbl_80318AA0 lbl_80318A98: /* 80318A98 003146F8 38 60 00 09 */ li r3, 9 /* 80318A9C 003146FC 48 00 02 54 */ b lbl_80318CF0 lbl_80318AA0: /* 80318AA0 00314700 2C 99 00 00 */ cmpwi cr1, r25, 0 /* 80318AA4 00314704 40 86 00 10 */ bne cr1, lbl_80318AB4 /* 80318AA8 00314708 A0 7A 00 00 */ lhz r3, 0(r26) /* 80318AAC 0031470C 7C 1F 18 40 */ cmplw r31, r3 /* 80318AB0 00314710 40 80 00 44 */ bge lbl_80318AF4 lbl_80318AB4: /* 80318AB4 00314714 7F 43 D3 78 */ mr r3, r26 /* 80318AB8 00314718 7F 84 E3 78 */ mr r4, r28 /* 80318ABC 0031471C 7F C6 F3 78 */ mr r6, r30 /* 80318AC0 00314720 38 A1 00 0C */ addi r5, r1, 0xc /* 80318AC4 00314724 4B FF 1D C9 */ bl VFiPFCACHE_ReadDataPage /* 80318AC8 00314728 2C 03 00 00 */ cmpwi r3, 0 /* 80318ACC 0031472C 41 82 00 08 */ beq lbl_80318AD4 /* 80318AD0 00314730 48 00 02 20 */ b lbl_80318CF0 lbl_80318AD4: /* 80318AD4 00314734 80 81 00 0C */ lwz r4, 0xc(r1) /* 80318AD8 00314738 7F 63 DB 78 */ mr r3, r27 /* 80318ADC 0031473C 7F E5 FB 78 */ mr r5, r31 /* 80318AE0 00314740 80 04 00 08 */ lwz r0, 8(r4) /* 80318AE4 00314744 7C 80 CA 14 */ add r4, r0, r25 /* 80318AE8 00314748 4B FE C3 C5 */ bl VFipf_memcpy /* 80318AEC 0031474C 93 FD 00 00 */ stw r31, 0(r29) /* 80318AF0 00314750 48 00 01 FC */ b lbl_80318CEC lbl_80318AF4: /* 80318AF4 00314754 40 86 00 6C */ bne cr1, lbl_80318B60 /* 80318AF8 00314758 38 03 FF FF */ addi r0, r3, -1 /* 80318AFC 0031475C 7F E0 00 39 */ and. r0, r31, r0 /* 80318B00 00314760 40 82 00 60 */ bne lbl_80318B60 /* 80318B04 00314764 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318B08 00314768 7F 43 D3 78 */ mr r3, r26 /* 80318B0C 0031476C 7F 64 DB 78 */ mr r4, r27 /* 80318B10 00314770 7F 85 E3 78 */ mr r5, r28 /* 80318B14 00314774 7F E6 04 30 */ srw r6, r31, r0 /* 80318B18 00314778 38 E1 00 08 */ addi r7, r1, 8 /* 80318B1C 0031477C 4B FF 1E 01 */ bl VFiPFCACHE_ReadDataNumSector /* 80318B20 00314780 2C 03 00 00 */ cmpwi r3, 0 /* 80318B24 00314784 41 82 00 08 */ beq lbl_80318B2C /* 80318B28 00314788 48 00 01 C8 */ b lbl_80318CF0 lbl_80318B2C: /* 80318B2C 0031478C 80 61 00 08 */ lwz r3, 8(r1) /* 80318B30 00314790 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318B34 00314794 80 9D 00 00 */ lwz r4, 0(r29) /* 80318B38 00314798 7C 60 00 30 */ slw r0, r3, r0 /* 80318B3C 0031479C 7C 04 02 14 */ add r0, r4, r0 /* 80318B40 003147A0 90 1D 00 00 */ stw r0, 0(r29) /* 80318B44 003147A4 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318B48 003147A8 80 61 00 08 */ lwz r3, 8(r1) /* 80318B4C 003147AC 7F E0 04 30 */ srw r0, r31, r0 /* 80318B50 003147B0 7C 03 00 40 */ cmplw r3, r0 /* 80318B54 003147B4 41 82 01 98 */ beq lbl_80318CEC /* 80318B58 003147B8 38 60 00 11 */ li r3, 0x11 /* 80318B5C 003147BC 48 00 01 94 */ b lbl_80318CF0 lbl_80318B60: /* 80318B60 003147C0 2C 19 00 00 */ cmpwi r25, 0 /* 80318B64 003147C4 40 82 01 80 */ bne lbl_80318CE4 /* 80318B68 003147C8 7F 43 D3 78 */ mr r3, r26 /* 80318B6C 003147CC 7F 84 E3 78 */ mr r4, r28 /* 80318B70 003147D0 4B FF 1F 35 */ bl VFiPFCACHE_SearchDataCache /* 80318B74 003147D4 2C 03 00 00 */ cmpwi r3, 0 /* 80318B78 003147D8 90 61 00 0C */ stw r3, 0xc(r1) /* 80318B7C 003147DC 41 82 00 80 */ beq lbl_80318BFC /* 80318B80 003147E0 80 83 00 18 */ lwz r4, 0x18(r3) /* 80318B84 003147E4 80 03 00 14 */ lwz r0, 0x14(r3) /* 80318B88 003147E8 88 BA 00 20 */ lbz r5, 0x20(r26) /* 80318B8C 003147EC 7C 04 02 14 */ add r0, r4, r0 /* 80318B90 003147F0 7F 3C 00 50 */ subf r25, r28, r0 /* 80318B94 003147F4 7F E0 2C 30 */ srw r0, r31, r5 /* 80318B98 003147F8 7C 19 00 40 */ cmplw r25, r0 /* 80318B9C 003147FC 41 81 00 3C */ bgt lbl_80318BD8 /* 80318BA0 00314800 80 83 00 08 */ lwz r4, 8(r3) /* 80318BA4 00314804 7F 63 DB 78 */ mr r3, r27 /* 80318BA8 00314808 7F 25 28 30 */ slw r5, r25, r5 /* 80318BAC 0031480C 4B FE C3 01 */ bl VFipf_memcpy /* 80318BB0 00314810 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318BB4 00314814 7F 9C CA 14 */ add r28, r28, r25 /* 80318BB8 00314818 80 7D 00 00 */ lwz r3, 0(r29) /* 80318BBC 0031481C 7F 20 00 30 */ slw r0, r25, r0 /* 80318BC0 00314820 7C 03 02 14 */ add r0, r3, r0 /* 80318BC4 00314824 90 1D 00 00 */ stw r0, 0(r29) /* 80318BC8 00314828 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318BCC 0031482C 7F 20 00 30 */ slw r0, r25, r0 /* 80318BD0 00314830 7F E0 F8 50 */ subf r31, r0, r31 /* 80318BD4 00314834 48 00 00 28 */ b lbl_80318BFC lbl_80318BD8: /* 80318BD8 00314838 40 81 00 24 */ ble lbl_80318BFC /* 80318BDC 0031483C 80 83 00 08 */ lwz r4, 8(r3) /* 80318BE0 00314840 7F 63 DB 78 */ mr r3, r27 /* 80318BE4 00314844 7F E5 FB 78 */ mr r5, r31 /* 80318BE8 00314848 4B FE C2 C5 */ bl VFipf_memcpy /* 80318BEC 0031484C 80 1D 00 00 */ lwz r0, 0(r29) /* 80318BF0 00314850 7C 00 FA 14 */ add r0, r0, r31 /* 80318BF4 00314854 3B E0 00 00 */ li r31, 0 /* 80318BF8 00314858 90 1D 00 00 */ stw r0, 0(r29) lbl_80318BFC: /* 80318BFC 0031485C 2C 1F 00 00 */ cmpwi r31, 0 /* 80318C00 00314860 41 82 00 EC */ beq lbl_80318CEC /* 80318C04 00314864 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318C08 00314868 80 7A 16 04 */ lwz r3, 0x1604(r26) /* 80318C0C 0031486C 7F FF 04 30 */ srw r31, r31, r0 /* 80318C10 00314870 7C 9C FA 14 */ add r4, r28, r31 /* 80318C14 00314874 7C 04 1B 96 */ divwu r0, r4, r3 /* 80318C18 00314878 7C 00 19 D6 */ mullw r0, r0, r3 /* 80318C1C 0031487C 7C 60 20 50 */ subf r3, r0, r4 /* 80318C20 00314880 7C 1F 18 40 */ cmplw r31, r3 /* 80318C24 00314884 40 81 00 64 */ ble lbl_80318C88 /* 80318C28 00314888 80 1D 00 00 */ lwz r0, 0(r29) /* 80318C2C 0031488C 7F 23 F8 50 */ subf r25, r3, r31 /* 80318C30 00314890 7F 43 D3 78 */ mr r3, r26 /* 80318C34 00314894 7F 85 E3 78 */ mr r5, r28 /* 80318C38 00314898 7F 26 CB 78 */ mr r6, r25 /* 80318C3C 0031489C 7C 9B 02 14 */ add r4, r27, r0 /* 80318C40 003148A0 38 E1 00 08 */ addi r7, r1, 8 /* 80318C44 003148A4 4B FF 1C D9 */ bl VFiPFCACHE_ReadDataNumSector /* 80318C48 003148A8 2C 03 00 00 */ cmpwi r3, 0 /* 80318C4C 003148AC 41 82 00 08 */ beq lbl_80318C54 /* 80318C50 003148B0 48 00 00 A0 */ b lbl_80318CF0 lbl_80318C54: /* 80318C54 003148B4 80 61 00 08 */ lwz r3, 8(r1) /* 80318C58 003148B8 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318C5C 003148BC 80 9D 00 00 */ lwz r4, 0(r29) /* 80318C60 003148C0 7C 60 00 30 */ slw r0, r3, r0 /* 80318C64 003148C4 7C 04 02 14 */ add r0, r4, r0 /* 80318C68 003148C8 90 1D 00 00 */ stw r0, 0(r29) /* 80318C6C 003148CC 80 01 00 08 */ lwz r0, 8(r1) /* 80318C70 003148D0 7C 00 C8 40 */ cmplw r0, r25 /* 80318C74 003148D4 41 82 00 0C */ beq lbl_80318C80 /* 80318C78 003148D8 38 60 00 11 */ li r3, 0x11 /* 80318C7C 003148DC 48 00 00 74 */ b lbl_80318CF0 lbl_80318C80: /* 80318C80 003148E0 7F 9C CA 14 */ add r28, r28, r25 /* 80318C84 003148E4 7F F9 F8 50 */ subf r31, r25, r31 lbl_80318C88: /* 80318C88 003148E8 2C 1F 00 00 */ cmpwi r31, 0 /* 80318C8C 003148EC 41 82 00 60 */ beq lbl_80318CEC /* 80318C90 003148F0 7F 43 D3 78 */ mr r3, r26 /* 80318C94 003148F4 7F 84 E3 78 */ mr r4, r28 /* 80318C98 003148F8 7F C6 F3 78 */ mr r6, r30 /* 80318C9C 003148FC 38 A1 00 0C */ addi r5, r1, 0xc /* 80318CA0 00314900 4B FF 1B ED */ bl VFiPFCACHE_ReadDataPage /* 80318CA4 00314904 2C 03 00 00 */ cmpwi r3, 0 /* 80318CA8 00314908 41 82 00 08 */ beq lbl_80318CB0 /* 80318CAC 0031490C 48 00 00 44 */ b lbl_80318CF0 lbl_80318CB0: /* 80318CB0 00314910 80 61 00 0C */ lwz r3, 0xc(r1) /* 80318CB4 00314914 80 BD 00 00 */ lwz r5, 0(r29) /* 80318CB8 00314918 80 83 00 08 */ lwz r4, 8(r3) /* 80318CBC 0031491C 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318CC0 00314920 7C 7B 2A 14 */ add r3, r27, r5 /* 80318CC4 00314924 7F E5 00 30 */ slw r5, r31, r0 /* 80318CC8 00314928 4B FE C1 E5 */ bl VFipf_memcpy /* 80318CCC 0031492C 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318CD0 00314930 80 7D 00 00 */ lwz r3, 0(r29) /* 80318CD4 00314934 7F E0 00 30 */ slw r0, r31, r0 /* 80318CD8 00314938 7C 03 02 14 */ add r0, r3, r0 /* 80318CDC 0031493C 90 1D 00 00 */ stw r0, 0(r29) /* 80318CE0 00314940 48 00 00 0C */ b lbl_80318CEC lbl_80318CE4: /* 80318CE4 00314944 38 60 00 0A */ li r3, 0xa /* 80318CE8 00314948 48 00 00 08 */ b lbl_80318CF0 lbl_80318CEC: /* 80318CEC 0031494C 38 60 00 00 */ li r3, 0 lbl_80318CF0: /* 80318CF0 00314950 39 61 00 30 */ addi r11, r1, 0x30 /* 80318CF4 00314954 4B EA E4 79 */ bl _restgpr_25 /* 80318CF8 00314958 80 01 00 34 */ lwz r0, 0x34(r1) /* 80318CFC 0031495C 7C 08 03 A6 */ mtlr r0 /* 80318D00 00314960 38 21 00 30 */ addi r1, r1, 0x30 /* 80318D04 00314964 4E 80 00 20 */ blr .global VFiPFSEC_WriteFAT VFiPFSEC_WriteFAT: /* 80318D08 00314968 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80318D0C 0031496C 7C 08 02 A6 */ mflr r0 /* 80318D10 00314970 90 01 00 34 */ stw r0, 0x34(r1) /* 80318D14 00314974 39 61 00 30 */ addi r11, r1, 0x30 /* 80318D18 00314978 4B EA E4 11 */ bl _savegpr_27 /* 80318D1C 0031497C 2C 03 00 00 */ cmpwi r3, 0 /* 80318D20 00314980 7C 7B 1B 78 */ mr r27, r3 /* 80318D24 00314984 7C 9C 23 78 */ mr r28, r4 /* 80318D28 00314988 7C BD 2B 78 */ mr r29, r5 /* 80318D2C 0031498C 7C DE 33 78 */ mr r30, r6 /* 80318D30 00314990 7C FF 3B 78 */ mr r31, r7 /* 80318D34 00314994 40 82 00 0C */ bne lbl_80318D40 /* 80318D38 00314998 38 60 00 0A */ li r3, 0xa /* 80318D3C 0031499C 48 00 00 94 */ b lbl_80318DD0 lbl_80318D40: /* 80318D40 003149A0 2C 04 00 00 */ cmpwi r4, 0 /* 80318D44 003149A4 40 82 00 0C */ bne lbl_80318D50 /* 80318D48 003149A8 38 60 00 0A */ li r3, 0xa /* 80318D4C 003149AC 48 00 00 84 */ b lbl_80318DD0 lbl_80318D50: /* 80318D50 003149B0 A0 03 18 78 */ lhz r0, 0x1878(r3) /* 80318D54 003149B4 54 00 07 FF */ clrlwi. r0, r0, 0x1f /* 80318D58 003149B8 41 82 00 20 */ beq lbl_80318D78 /* 80318D5C 003149BC 4B FE CF F5 */ bl VFiPFDRV_IsInserted /* 80318D60 003149C0 2C 03 00 00 */ cmpwi r3, 0 /* 80318D64 003149C4 41 82 00 14 */ beq lbl_80318D78 /* 80318D68 003149C8 7F 63 DB 78 */ mr r3, r27 /* 80318D6C 003149CC 4B FE D0 3D */ bl VFiPFDRV_IsWProtected /* 80318D70 003149D0 2C 03 00 00 */ cmpwi r3, 0 /* 80318D74 003149D4 41 82 00 0C */ beq lbl_80318D80 lbl_80318D78: /* 80318D78 003149D8 38 60 00 09 */ li r3, 9 /* 80318D7C 003149DC 48 00 00 54 */ b lbl_80318DD0 lbl_80318D80: /* 80318D80 003149E0 7F 63 DB 78 */ mr r3, r27 /* 80318D84 003149E4 7F A4 EB 78 */ mr r4, r29 /* 80318D88 003149E8 38 A1 00 08 */ addi r5, r1, 8 /* 80318D8C 003149EC 4B FF 1A C1 */ bl VFiPFCACHE_ReadFATPage /* 80318D90 003149F0 2C 03 00 00 */ cmpwi r3, 0 /* 80318D94 003149F4 41 82 00 08 */ beq lbl_80318D9C /* 80318D98 003149F8 48 00 00 38 */ b lbl_80318DD0 lbl_80318D9C: /* 80318D9C 003149FC 80 61 00 08 */ lwz r3, 8(r1) /* 80318DA0 00314A00 7F 84 E3 78 */ mr r4, r28 /* 80318DA4 00314A04 7F E5 FB 78 */ mr r5, r31 /* 80318DA8 00314A08 80 03 00 08 */ lwz r0, 8(r3) /* 80318DAC 00314A0C 7C 60 F2 14 */ add r3, r0, r30 /* 80318DB0 00314A10 4B FE C0 FD */ bl VFipf_memcpy /* 80318DB4 00314A14 80 81 00 08 */ lwz r4, 8(r1) /* 80318DB8 00314A18 7F 63 DB 78 */ mr r3, r27 /* 80318DBC 00314A1C 4B FF 1B C1 */ bl VFiPFCACHE_WriteFATPage /* 80318DC0 00314A20 7C 03 00 D0 */ neg r0, r3 /* 80318DC4 00314A24 7C 00 1B 78 */ or r0, r0, r3 /* 80318DC8 00314A28 7C 00 FE 70 */ srawi r0, r0, 0x1f /* 80318DCC 00314A2C 7C 63 00 38 */ and r3, r3, r0 lbl_80318DD0: /* 80318DD0 00314A30 39 61 00 30 */ addi r11, r1, 0x30 /* 80318DD4 00314A34 4B EA E3 A1 */ bl _restgpr_27 /* 80318DD8 00314A38 80 01 00 34 */ lwz r0, 0x34(r1) /* 80318DDC 00314A3C 7C 08 03 A6 */ mtlr r0 /* 80318DE0 00314A40 38 21 00 30 */ addi r1, r1, 0x30 /* 80318DE4 00314A44 4E 80 00 20 */ blr .global VFiPFSEC_WriteData VFiPFSEC_WriteData: /* 80318DE8 00314A48 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80318DEC 00314A4C 7C 08 02 A6 */ mflr r0 /* 80318DF0 00314A50 90 01 00 34 */ stw r0, 0x34(r1) /* 80318DF4 00314A54 39 61 00 30 */ addi r11, r1, 0x30 /* 80318DF8 00314A58 4B EA E3 29 */ bl _savegpr_25 /* 80318DFC 00314A5C 38 00 00 00 */ li r0, 0 /* 80318E00 00314A60 2C 03 00 00 */ cmpwi r3, 0 /* 80318E04 00314A64 90 08 00 00 */ stw r0, 0(r8) /* 80318E08 00314A68 7C 7A 1B 78 */ mr r26, r3 /* 80318E0C 00314A6C 7C 9B 23 78 */ mr r27, r4 /* 80318E10 00314A70 7C BC 2B 78 */ mr r28, r5 /* 80318E14 00314A74 7C D9 33 78 */ mr r25, r6 /* 80318E18 00314A78 7C FF 3B 78 */ mr r31, r7 /* 80318E1C 00314A7C 7D 1D 43 78 */ mr r29, r8 /* 80318E20 00314A80 7D 3E 4B 78 */ mr r30, r9 /* 80318E24 00314A84 40 82 00 0C */ bne lbl_80318E30 /* 80318E28 00314A88 38 60 00 0A */ li r3, 0xa /* 80318E2C 00314A8C 48 00 02 1C */ b lbl_80319048 lbl_80318E30: /* 80318E30 00314A90 2C 04 00 00 */ cmpwi r4, 0 /* 80318E34 00314A94 40 82 00 0C */ bne lbl_80318E40 /* 80318E38 00314A98 38 60 00 0A */ li r3, 0xa /* 80318E3C 00314A9C 48 00 02 0C */ b lbl_80319048 lbl_80318E40: /* 80318E40 00314AA0 A0 03 18 78 */ lhz r0, 0x1878(r3) /* 80318E44 00314AA4 54 00 07 FF */ clrlwi. r0, r0, 0x1f /* 80318E48 00314AA8 41 82 00 20 */ beq lbl_80318E68 /* 80318E4C 00314AAC 4B FE CF 05 */ bl VFiPFDRV_IsInserted /* 80318E50 00314AB0 2C 03 00 00 */ cmpwi r3, 0 /* 80318E54 00314AB4 41 82 00 14 */ beq lbl_80318E68 /* 80318E58 00314AB8 7F 43 D3 78 */ mr r3, r26 /* 80318E5C 00314ABC 4B FE CF 4D */ bl VFiPFDRV_IsWProtected /* 80318E60 00314AC0 2C 03 00 00 */ cmpwi r3, 0 /* 80318E64 00314AC4 41 82 00 0C */ beq lbl_80318E70 lbl_80318E68: /* 80318E68 00314AC8 38 60 00 09 */ li r3, 9 /* 80318E6C 00314ACC 48 00 01 DC */ b lbl_80319048 lbl_80318E70: /* 80318E70 00314AD0 2C 99 00 00 */ cmpwi cr1, r25, 0 /* 80318E74 00314AD4 40 86 00 10 */ bne cr1, lbl_80318E84 /* 80318E78 00314AD8 A0 7A 00 00 */ lhz r3, 0(r26) /* 80318E7C 00314ADC 7C 1F 18 40 */ cmplw r31, r3 /* 80318E80 00314AE0 40 80 00 60 */ bge lbl_80318EE0 lbl_80318E84: /* 80318E84 00314AE4 7F 43 D3 78 */ mr r3, r26 /* 80318E88 00314AE8 7F 84 E3 78 */ mr r4, r28 /* 80318E8C 00314AEC 7F C6 F3 78 */ mr r6, r30 /* 80318E90 00314AF0 38 A1 00 0C */ addi r5, r1, 0xc /* 80318E94 00314AF4 4B FF 1A 41 */ bl VFiPFCACHE_ReadDataPageAndFlushIfNeeded /* 80318E98 00314AF8 2C 03 00 00 */ cmpwi r3, 0 /* 80318E9C 00314AFC 41 82 00 08 */ beq lbl_80318EA4 /* 80318EA0 00314B00 48 00 01 A8 */ b lbl_80319048 lbl_80318EA4: /* 80318EA4 00314B04 80 61 00 0C */ lwz r3, 0xc(r1) /* 80318EA8 00314B08 7F 64 DB 78 */ mr r4, r27 /* 80318EAC 00314B0C 7F E5 FB 78 */ mr r5, r31 /* 80318EB0 00314B10 80 03 00 08 */ lwz r0, 8(r3) /* 80318EB4 00314B14 7C 60 CA 14 */ add r3, r0, r25 /* 80318EB8 00314B18 4B FE BF F5 */ bl VFipf_memcpy /* 80318EBC 00314B1C 80 81 00 0C */ lwz r4, 0xc(r1) /* 80318EC0 00314B20 7F 43 D3 78 */ mr r3, r26 /* 80318EC4 00314B24 7F C5 F3 78 */ mr r5, r30 /* 80318EC8 00314B28 4B FF 1A F1 */ bl VFiPFCACHE_WriteDataPage /* 80318ECC 00314B2C 2C 03 00 00 */ cmpwi r3, 0 /* 80318ED0 00314B30 41 82 00 08 */ beq lbl_80318ED8 /* 80318ED4 00314B34 48 00 01 74 */ b lbl_80319048 lbl_80318ED8: /* 80318ED8 00314B38 93 FD 00 00 */ stw r31, 0(r29) /* 80318EDC 00314B3C 48 00 01 68 */ b lbl_80319044 lbl_80318EE0: /* 80318EE0 00314B40 40 86 00 64 */ bne cr1, lbl_80318F44 /* 80318EE4 00314B44 38 03 FF FF */ addi r0, r3, -1 /* 80318EE8 00314B48 7F E0 00 39 */ and. r0, r31, r0 /* 80318EEC 00314B4C 40 82 00 58 */ bne lbl_80318F44 /* 80318EF0 00314B50 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318EF4 00314B54 7F 43 D3 78 */ mr r3, r26 /* 80318EF8 00314B58 7F 64 DB 78 */ mr r4, r27 /* 80318EFC 00314B5C 7F 85 E3 78 */ mr r5, r28 /* 80318F00 00314B60 7F E6 04 30 */ srw r6, r31, r0 /* 80318F04 00314B64 38 E1 00 08 */ addi r7, r1, 8 /* 80318F08 00314B68 4B FF 1B 3D */ bl VFiPFCACHE_WriteDataNumSectorAndFreeIfNeeded /* 80318F0C 00314B6C 2C 03 00 00 */ cmpwi r3, 0 /* 80318F10 00314B70 41 82 00 08 */ beq lbl_80318F18 /* 80318F14 00314B74 48 00 01 34 */ b lbl_80319048 lbl_80318F18: /* 80318F18 00314B78 80 61 00 08 */ lwz r3, 8(r1) /* 80318F1C 00314B7C 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318F20 00314B80 7C 60 00 30 */ slw r0, r3, r0 /* 80318F24 00314B84 90 1D 00 00 */ stw r0, 0(r29) /* 80318F28 00314B88 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318F2C 00314B8C 80 61 00 08 */ lwz r3, 8(r1) /* 80318F30 00314B90 7F E0 04 30 */ srw r0, r31, r0 /* 80318F34 00314B94 7C 03 00 40 */ cmplw r3, r0 /* 80318F38 00314B98 41 82 01 0C */ beq lbl_80319044 /* 80318F3C 00314B9C 38 60 00 11 */ li r3, 0x11 /* 80318F40 00314BA0 48 00 01 08 */ b lbl_80319048 lbl_80318F44: /* 80318F44 00314BA4 2C 19 00 00 */ cmpwi r25, 0 /* 80318F48 00314BA8 40 82 00 F4 */ bne lbl_8031903C /* 80318F4C 00314BAC 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318F50 00314BB0 80 7A 16 04 */ lwz r3, 0x1604(r26) /* 80318F54 00314BB4 7F FF 04 30 */ srw r31, r31, r0 /* 80318F58 00314BB8 7C 9C FA 14 */ add r4, r28, r31 /* 80318F5C 00314BBC 7C 04 1B 96 */ divwu r0, r4, r3 /* 80318F60 00314BC0 7C 00 19 D6 */ mullw r0, r0, r3 /* 80318F64 00314BC4 7C 00 20 50 */ subf r0, r0, r4 /* 80318F68 00314BC8 7C 1F 00 40 */ cmplw r31, r0 /* 80318F6C 00314BCC 40 81 00 58 */ ble lbl_80318FC4 /* 80318F70 00314BD0 7F 20 F8 50 */ subf r25, r0, r31 /* 80318F74 00314BD4 7F 43 D3 78 */ mr r3, r26 /* 80318F78 00314BD8 7F 64 DB 78 */ mr r4, r27 /* 80318F7C 00314BDC 7F 85 E3 78 */ mr r5, r28 /* 80318F80 00314BE0 7F 26 CB 78 */ mr r6, r25 /* 80318F84 00314BE4 38 E1 00 08 */ addi r7, r1, 8 /* 80318F88 00314BE8 4B FF 1A BD */ bl VFiPFCACHE_WriteDataNumSectorAndFreeIfNeeded /* 80318F8C 00314BEC 2C 03 00 00 */ cmpwi r3, 0 /* 80318F90 00314BF0 41 82 00 08 */ beq lbl_80318F98 /* 80318F94 00314BF4 48 00 00 B4 */ b lbl_80319048 lbl_80318F98: /* 80318F98 00314BF8 80 61 00 08 */ lwz r3, 8(r1) /* 80318F9C 00314BFC 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318FA0 00314C00 7C 60 00 30 */ slw r0, r3, r0 /* 80318FA4 00314C04 90 1D 00 00 */ stw r0, 0(r29) /* 80318FA8 00314C08 80 01 00 08 */ lwz r0, 8(r1) /* 80318FAC 00314C0C 7C 00 C8 40 */ cmplw r0, r25 /* 80318FB0 00314C10 41 82 00 0C */ beq lbl_80318FBC /* 80318FB4 00314C14 38 60 00 11 */ li r3, 0x11 /* 80318FB8 00314C18 48 00 00 90 */ b lbl_80319048 lbl_80318FBC: /* 80318FBC 00314C1C 7F 9C CA 14 */ add r28, r28, r25 /* 80318FC0 00314C20 7F F9 F8 50 */ subf r31, r25, r31 lbl_80318FC4: /* 80318FC4 00314C24 2C 1F 00 00 */ cmpwi r31, 0 /* 80318FC8 00314C28 41 82 00 7C */ beq lbl_80319044 /* 80318FCC 00314C2C 7F 43 D3 78 */ mr r3, r26 /* 80318FD0 00314C30 7F 84 E3 78 */ mr r4, r28 /* 80318FD4 00314C34 7F C6 F3 78 */ mr r6, r30 /* 80318FD8 00314C38 38 A1 00 0C */ addi r5, r1, 0xc /* 80318FDC 00314C3C 4B FF 18 F9 */ bl VFiPFCACHE_ReadDataPageAndFlushIfNeeded /* 80318FE0 00314C40 2C 03 00 00 */ cmpwi r3, 0 /* 80318FE4 00314C44 41 82 00 08 */ beq lbl_80318FEC /* 80318FE8 00314C48 48 00 00 60 */ b lbl_80319048 lbl_80318FEC: /* 80318FEC 00314C4C 80 61 00 0C */ lwz r3, 0xc(r1) /* 80318FF0 00314C50 80 9D 00 00 */ lwz r4, 0(r29) /* 80318FF4 00314C54 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80318FF8 00314C58 80 63 00 08 */ lwz r3, 8(r3) /* 80318FFC 00314C5C 7C 9B 22 14 */ add r4, r27, r4 /* 80319000 00314C60 7F E5 00 30 */ slw r5, r31, r0 /* 80319004 00314C64 4B FE BE A9 */ bl VFipf_memcpy /* 80319008 00314C68 80 81 00 0C */ lwz r4, 0xc(r1) /* 8031900C 00314C6C 7F 43 D3 78 */ mr r3, r26 /* 80319010 00314C70 7F C5 F3 78 */ mr r5, r30 /* 80319014 00314C74 4B FF 19 A5 */ bl VFiPFCACHE_WriteDataPage /* 80319018 00314C78 2C 03 00 00 */ cmpwi r3, 0 /* 8031901C 00314C7C 41 82 00 08 */ beq lbl_80319024 /* 80319020 00314C80 48 00 00 28 */ b lbl_80319048 lbl_80319024: /* 80319024 00314C84 88 1A 00 20 */ lbz r0, 0x20(r26) /* 80319028 00314C88 80 7D 00 00 */ lwz r3, 0(r29) /* 8031902C 00314C8C 7F E0 00 30 */ slw r0, r31, r0 /* 80319030 00314C90 7C 03 02 14 */ add r0, r3, r0 /* 80319034 00314C94 90 1D 00 00 */ stw r0, 0(r29) /* 80319038 00314C98 48 00 00 0C */ b lbl_80319044 lbl_8031903C: /* 8031903C 00314C9C 38 60 00 0A */ li r3, 0xa /* 80319040 00314CA0 48 00 00 08 */ b lbl_80319048 lbl_80319044: /* 80319044 00314CA4 38 60 00 00 */ li r3, 0 lbl_80319048: /* 80319048 00314CA8 39 61 00 30 */ addi r11, r1, 0x30 /* 8031904C 00314CAC 4B EA E1 21 */ bl _restgpr_25 /* 80319050 00314CB0 80 01 00 34 */ lwz r0, 0x34(r1) /* 80319054 00314CB4 7C 08 03 A6 */ mtlr r0 /* 80319058 00314CB8 38 21 00 30 */ addi r1, r1, 0x30 /* 8031905C 00314CBC 4E 80 00 20 */ blr