.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global VFi_NandFlushNANDFromHandleIdx VFi_NandFlushNANDFromHandleIdx: /* 8031BE1C 00317A7C 94 21 FF D0 */ stwu r1, -0x30(r1) /* 8031BE20 00317A80 7C 08 02 A6 */ mflr r0 /* 8031BE24 00317A84 90 01 00 34 */ stw r0, 0x34(r1) /* 8031BE28 00317A88 39 61 00 30 */ addi r11, r1, 0x30 /* 8031BE2C 00317A8C 4B EA B2 ED */ bl _savegpr_23 /* 8031BE30 00317A90 7C 7A 1B 78 */ mr r26, r3 /* 8031BE34 00317A94 7C 9B 23 78 */ mr r27, r4 /* 8031BE38 00317A98 4B FF ED A9 */ bl VFSysGetDriveP /* 8031BE3C 00317A9C 7C 77 1B 78 */ mr r23, r3 /* 8031BE40 00317AA0 7F 43 D3 78 */ mr r3, r26 /* 8031BE44 00317AA4 4B FF EC 39 */ bl VFSysGetHandleP /* 8031BE48 00317AA8 2C 03 00 00 */ cmpwi r3, 0 /* 8031BE4C 00317AAC 41 82 00 24 */ beq lbl_8031BE70 /* 8031BE50 00317AB0 80 63 00 00 */ lwz r3, 0(r3) /* 8031BE54 00317AB4 2C 03 00 00 */ cmpwi r3, 0 /* 8031BE58 00317AB8 41 82 00 18 */ beq lbl_8031BE70 /* 8031BE5C 00317ABC 80 03 00 0C */ lwz r0, 0xc(r3) /* 8031BE60 00317AC0 28 00 00 01 */ cmplwi r0, 1 /* 8031BE64 00317AC4 40 82 00 0C */ bne lbl_8031BE70 /* 8031BE68 00317AC8 38 60 00 00 */ li r3, 0 /* 8031BE6C 00317ACC 48 00 02 9C */ b lbl_8031C108 lbl_8031BE70: /* 8031BE70 00317AD0 2C 17 00 00 */ cmpwi r23, 0 /* 8031BE74 00317AD4 41 82 02 90 */ beq lbl_8031C104 /* 8031BE78 00317AD8 3C 60 10 62 */ lis r3, 0x10624DD3@ha /* 8031BE7C 00317ADC 83 97 00 00 */ lwz r28, 0(r23) /* 8031BE80 00317AE0 3B B7 00 3C */ addi r29, r23, 0x3c /* 8031BE84 00317AE4 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13) /* 8031BE88 00317AE8 3B 23 4D D3 */ addi r25, r3, 0x10624DD3@l /* 8031BE8C 00317AEC 3B E0 00 00 */ li r31, 0 /* 8031BE90 00317AF0 3F 00 80 00 */ lis r24, 0x8000 /* 8031BE94 00317AF4 3A E0 00 00 */ li r23, 0 /* 8031BE98 00317AF8 48 00 00 50 */ b lbl_8031BEE8 lbl_8031BE9C: /* 8031BE9C 00317AFC 7F 83 E3 78 */ mr r3, r28 /* 8031BEA0 00317B00 4B FC C7 E9 */ bl NANDClose /* 8031BEA4 00317B04 2C 03 FF FD */ cmpwi r3, -3 /* 8031BEA8 00317B08 7C 7F 1B 78 */ mr r31, r3 /* 8031BEAC 00317B0C 41 82 00 08 */ beq lbl_8031BEB4 /* 8031BEB0 00317B10 48 00 00 44 */ b lbl_8031BEF4 lbl_8031BEB4: /* 8031BEB4 00317B14 80 18 00 F8 */ lwz r0, 0xf8(r24) /* 8031BEB8 00317B18 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13) /* 8031BEBC 00317B1C 54 00 F0 BE */ srwi r0, r0, 2 /* 8031BEC0 00317B20 7C 79 00 16 */ mulhwu r3, r25, r0 /* 8031BEC4 00317B24 7C C0 FE 70 */ srawi r0, r6, 0x1f /* 8031BEC8 00317B28 7C 97 31 D6 */ mullw r4, r23, r6 /* 8031BECC 00317B2C 54 65 D1 BE */ srwi r5, r3, 6 /* 8031BED0 00317B30 7C 65 30 16 */ mulhwu r3, r5, r6 /* 8031BED4 00317B34 7C 05 01 D6 */ mullw r0, r5, r0 /* 8031BED8 00317B38 7C 63 22 14 */ add r3, r3, r4 /* 8031BEDC 00317B3C 7C 85 31 D6 */ mullw r4, r5, r6 /* 8031BEE0 00317B40 7C 63 02 14 */ add r3, r3, r0 /* 8031BEE4 00317B44 4B F5 68 21 */ bl OSSleepTicks lbl_8031BEE8: /* 8031BEE8 00317B48 2C 1E 00 00 */ cmpwi r30, 0 /* 8031BEEC 00317B4C 3B DE FF FF */ addi r30, r30, -1 /* 8031BEF0 00317B50 41 81 FF AC */ bgt lbl_8031BE9C lbl_8031BEF4: /* 8031BEF4 00317B54 2C 1F 00 00 */ cmpwi r31, 0 /* 8031BEF8 00317B58 40 80 00 20 */ bge lbl_8031BF18 /* 8031BEFC 00317B5C 2C 1B 00 00 */ cmpwi r27, 0 /* 8031BF00 00317B60 41 82 00 10 */ beq lbl_8031BF10 /* 8031BF04 00317B64 7F 43 D3 78 */ mr r3, r26 /* 8031BF08 00317B68 7F E4 FB 78 */ mr r4, r31 /* 8031BF0C 00317B6C 4B FF FE 6D */ bl dCommon_setLastDeviceErrorToDisk2 lbl_8031BF10: /* 8031BF10 00317B70 7F E3 FB 78 */ mr r3, r31 /* 8031BF14 00317B74 48 00 01 F4 */ b lbl_8031C108 lbl_8031BF18: /* 8031BF18 00317B78 28 1A 00 1A */ cmplwi r26, 0x1a /* 8031BF1C 00317B7C 40 80 00 BC */ bge lbl_8031BFD8 /* 8031BF20 00317B80 3C 60 80 61 */ lis r3, lbl_8060FA50@ha /* 8031BF24 00317B84 57 40 20 36 */ slwi r0, r26, 4 /* 8031BF28 00317B88 38 63 FA 50 */ addi r3, r3, lbl_8060FA50@l /* 8031BF2C 00317B8C 7C 63 02 14 */ add r3, r3, r0 /* 8031BF30 00317B90 81 83 00 04 */ lwz r12, 4(r3) /* 8031BF34 00317B94 2C 0C 00 00 */ cmpwi r12, 0 /* 8031BF38 00317B98 41 82 00 20 */ beq lbl_8031BF58 /* 8031BF3C 00317B9C 7F A3 EB 78 */ mr r3, r29 /* 8031BF40 00317BA0 7F 84 E3 78 */ mr r4, r28 /* 8031BF44 00317BA4 38 A0 00 03 */ li r5, 3 /* 8031BF48 00317BA8 7D 89 03 A6 */ mtctr r12 /* 8031BF4C 00317BAC 4E 80 04 21 */ bctrl /* 8031BF50 00317BB0 7C 7F 1B 78 */ mr r31, r3 /* 8031BF54 00317BB4 48 00 01 8C */ b lbl_8031C0E0 lbl_8031BF58: /* 8031BF58 00317BB8 3C 60 10 62 */ lis r3, 0x10624DD3@ha /* 8031BF5C 00317BBC 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13) /* 8031BF60 00317BC0 3B 23 4D D3 */ addi r25, r3, 0x10624DD3@l /* 8031BF64 00317BC4 3B E0 00 00 */ li r31, 0 /* 8031BF68 00317BC8 3F 00 80 00 */ lis r24, 0x8000 /* 8031BF6C 00317BCC 3A E0 00 00 */ li r23, 0 /* 8031BF70 00317BD0 48 00 00 58 */ b lbl_8031BFC8 lbl_8031BF74: /* 8031BF74 00317BD4 7F A3 EB 78 */ mr r3, r29 /* 8031BF78 00317BD8 7F 84 E3 78 */ mr r4, r28 /* 8031BF7C 00317BDC 38 A0 00 03 */ li r5, 3 /* 8031BF80 00317BE0 4B FC C4 89 */ bl NANDOpen /* 8031BF84 00317BE4 2C 03 FF FD */ cmpwi r3, -3 /* 8031BF88 00317BE8 7C 7F 1B 78 */ mr r31, r3 /* 8031BF8C 00317BEC 41 82 00 08 */ beq lbl_8031BF94 /* 8031BF90 00317BF0 48 00 01 50 */ b lbl_8031C0E0 lbl_8031BF94: /* 8031BF94 00317BF4 80 18 00 F8 */ lwz r0, 0xf8(r24) /* 8031BF98 00317BF8 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13) /* 8031BF9C 00317BFC 54 00 F0 BE */ srwi r0, r0, 2 /* 8031BFA0 00317C00 7C 79 00 16 */ mulhwu r3, r25, r0 /* 8031BFA4 00317C04 7C C0 FE 70 */ srawi r0, r6, 0x1f /* 8031BFA8 00317C08 7C 97 31 D6 */ mullw r4, r23, r6 /* 8031BFAC 00317C0C 54 65 D1 BE */ srwi r5, r3, 6 /* 8031BFB0 00317C10 7C 65 30 16 */ mulhwu r3, r5, r6 /* 8031BFB4 00317C14 7C 05 01 D6 */ mullw r0, r5, r0 /* 8031BFB8 00317C18 7C 63 22 14 */ add r3, r3, r4 /* 8031BFBC 00317C1C 7C 85 31 D6 */ mullw r4, r5, r6 /* 8031BFC0 00317C20 7C 63 02 14 */ add r3, r3, r0 /* 8031BFC4 00317C24 4B F5 67 41 */ bl OSSleepTicks lbl_8031BFC8: /* 8031BFC8 00317C28 2C 1E 00 00 */ cmpwi r30, 0 /* 8031BFCC 00317C2C 3B DE FF FF */ addi r30, r30, -1 /* 8031BFD0 00317C30 41 81 FF A4 */ bgt lbl_8031BF74 /* 8031BFD4 00317C34 48 00 01 0C */ b lbl_8031C0E0 lbl_8031BFD8: /* 8031BFD8 00317C38 3C 1A 00 01 */ addis r0, r26, 1 /* 8031BFDC 00317C3C 28 00 FF F6 */ cmplwi r0, 0xfff6 /* 8031BFE0 00317C40 40 82 00 84 */ bne lbl_8031C064 /* 8031BFE4 00317C44 3C 60 10 62 */ lis r3, 0x10624DD3@ha /* 8031BFE8 00317C48 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13) /* 8031BFEC 00317C4C 3B 23 4D D3 */ addi r25, r3, 0x10624DD3@l /* 8031BFF0 00317C50 3B E0 00 00 */ li r31, 0 /* 8031BFF4 00317C54 3F 00 80 00 */ lis r24, 0x8000 /* 8031BFF8 00317C58 3A E0 00 00 */ li r23, 0 /* 8031BFFC 00317C5C 48 00 00 58 */ b lbl_8031C054 lbl_8031C000: /* 8031C000 00317C60 7F A3 EB 78 */ mr r3, r29 /* 8031C004 00317C64 7F 84 E3 78 */ mr r4, r28 /* 8031C008 00317C68 38 A0 00 03 */ li r5, 3 /* 8031C00C 00317C6C 4B FC C3 FD */ bl NANDOpen /* 8031C010 00317C70 2C 03 FF FD */ cmpwi r3, -3 /* 8031C014 00317C74 7C 7F 1B 78 */ mr r31, r3 /* 8031C018 00317C78 41 82 00 08 */ beq lbl_8031C020 /* 8031C01C 00317C7C 48 00 00 C4 */ b lbl_8031C0E0 lbl_8031C020: /* 8031C020 00317C80 80 18 00 F8 */ lwz r0, 0xf8(r24) /* 8031C024 00317C84 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13) /* 8031C028 00317C88 54 00 F0 BE */ srwi r0, r0, 2 /* 8031C02C 00317C8C 7C 79 00 16 */ mulhwu r3, r25, r0 /* 8031C030 00317C90 7C C0 FE 70 */ srawi r0, r6, 0x1f /* 8031C034 00317C94 7C 97 31 D6 */ mullw r4, r23, r6 /* 8031C038 00317C98 54 65 D1 BE */ srwi r5, r3, 6 /* 8031C03C 00317C9C 7C 65 30 16 */ mulhwu r3, r5, r6 /* 8031C040 00317CA0 7C 05 01 D6 */ mullw r0, r5, r0 /* 8031C044 00317CA4 7C 63 22 14 */ add r3, r3, r4 /* 8031C048 00317CA8 7C 85 31 D6 */ mullw r4, r5, r6 /* 8031C04C 00317CAC 7C 63 02 14 */ add r3, r3, r0 /* 8031C050 00317CB0 4B F5 66 B5 */ bl OSSleepTicks lbl_8031C054: /* 8031C054 00317CB4 2C 1E 00 00 */ cmpwi r30, 0 /* 8031C058 00317CB8 3B DE FF FF */ addi r30, r30, -1 /* 8031C05C 00317CBC 41 81 FF A4 */ bgt lbl_8031C000 /* 8031C060 00317CC0 48 00 00 80 */ b lbl_8031C0E0 lbl_8031C064: /* 8031C064 00317CC4 3C 60 10 62 */ lis r3, 0x10624DD3@ha /* 8031C068 00317CC8 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13) /* 8031C06C 00317CCC 3A E3 4D D3 */ addi r23, r3, 0x10624DD3@l /* 8031C070 00317CD0 3B E0 00 00 */ li r31, 0 /* 8031C074 00317CD4 3F 00 80 00 */ lis r24, 0x8000 /* 8031C078 00317CD8 3B 20 00 00 */ li r25, 0 /* 8031C07C 00317CDC 48 00 00 58 */ b lbl_8031C0D4 lbl_8031C080: /* 8031C080 00317CE0 7F A3 EB 78 */ mr r3, r29 /* 8031C084 00317CE4 7F 84 E3 78 */ mr r4, r28 /* 8031C088 00317CE8 38 A0 00 03 */ li r5, 3 /* 8031C08C 00317CEC 4B FC C4 09 */ bl NANDPrivateOpen /* 8031C090 00317CF0 2C 03 FF FD */ cmpwi r3, -3 /* 8031C094 00317CF4 7C 7F 1B 78 */ mr r31, r3 /* 8031C098 00317CF8 41 82 00 08 */ beq lbl_8031C0A0 /* 8031C09C 00317CFC 48 00 00 44 */ b lbl_8031C0E0 lbl_8031C0A0: /* 8031C0A0 00317D00 80 18 00 F8 */ lwz r0, 0xf8(r24) /* 8031C0A4 00317D04 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13) /* 8031C0A8 00317D08 54 00 F0 BE */ srwi r0, r0, 2 /* 8031C0AC 00317D0C 7C 77 00 16 */ mulhwu r3, r23, r0 /* 8031C0B0 00317D10 7C C0 FE 70 */ srawi r0, r6, 0x1f /* 8031C0B4 00317D14 7C 99 31 D6 */ mullw r4, r25, r6 /* 8031C0B8 00317D18 54 65 D1 BE */ srwi r5, r3, 6 /* 8031C0BC 00317D1C 7C 65 30 16 */ mulhwu r3, r5, r6 /* 8031C0C0 00317D20 7C 05 01 D6 */ mullw r0, r5, r0 /* 8031C0C4 00317D24 7C 63 22 14 */ add r3, r3, r4 /* 8031C0C8 00317D28 7C 85 31 D6 */ mullw r4, r5, r6 /* 8031C0CC 00317D2C 7C 63 02 14 */ add r3, r3, r0 /* 8031C0D0 00317D30 4B F5 66 35 */ bl OSSleepTicks lbl_8031C0D4: /* 8031C0D4 00317D34 2C 1E 00 00 */ cmpwi r30, 0 /* 8031C0D8 00317D38 3B DE FF FF */ addi r30, r30, -1 /* 8031C0DC 00317D3C 41 81 FF A4 */ bgt lbl_8031C080 lbl_8031C0E0: /* 8031C0E0 00317D40 2C 1F 00 00 */ cmpwi r31, 0 /* 8031C0E4 00317D44 40 80 00 20 */ bge lbl_8031C104 /* 8031C0E8 00317D48 2C 1B 00 00 */ cmpwi r27, 0 /* 8031C0EC 00317D4C 41 82 00 10 */ beq lbl_8031C0FC /* 8031C0F0 00317D50 7F 43 D3 78 */ mr r3, r26 /* 8031C0F4 00317D54 7F E4 FB 78 */ mr r4, r31 /* 8031C0F8 00317D58 4B FF FC 81 */ bl dCommon_setLastDeviceErrorToDisk2 lbl_8031C0FC: /* 8031C0FC 00317D5C 7F E3 FB 78 */ mr r3, r31 /* 8031C100 00317D60 48 00 00 08 */ b lbl_8031C108 lbl_8031C104: /* 8031C104 00317D64 38 60 00 00 */ li r3, 0 lbl_8031C108: /* 8031C108 00317D68 39 61 00 30 */ addi r11, r1, 0x30 /* 8031C10C 00317D6C 4B EA B0 59 */ bl _restgpr_23 /* 8031C110 00317D70 80 01 00 34 */ lwz r0, 0x34(r1) /* 8031C114 00317D74 7C 08 03 A6 */ mtlr r0 /* 8031C118 00317D78 38 21 00 30 */ addi r1, r1, 0x30 /* 8031C11C 00317D7C 4E 80 00 20 */ blr