.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global NWC24FOpen NWC24FOpen: /* 80301B48 002FD7A8 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80301B4C 002FD7AC 7C 08 02 A6 */ mflr r0 /* 80301B50 002FD7B0 28 05 00 09 */ cmplwi r5, 9 /* 80301B54 002FD7B4 90 01 00 24 */ stw r0, 0x24(r1) /* 80301B58 002FD7B8 38 00 00 00 */ li r0, 0 /* 80301B5C 002FD7BC 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80301B60 002FD7C0 7C BF 2B 78 */ mr r31, r5 /* 80301B64 002FD7C4 93 C1 00 18 */ stw r30, 0x18(r1) /* 80301B68 002FD7C8 7C 9E 23 78 */ mr r30, r4 /* 80301B6C 002FD7CC 93 A1 00 14 */ stw r29, 0x14(r1) /* 80301B70 002FD7D0 7C 7D 1B 78 */ mr r29, r3 /* 80301B74 002FD7D4 80 CD AF 80 */ lwz r6, lbl_80640240-_SDA_BASE_(r13) /* 80301B78 002FD7D8 38 C6 00 01 */ addi r6, r6, 1 /* 80301B7C 002FD7DC 64 C4 80 00 */ oris r4, r6, 0x8000 /* 80301B80 002FD7E0 90 8D AF 80 */ stw r4, lbl_80640240-_SDA_BASE_(r13) /* 80301B84 002FD7E4 90 83 00 00 */ stw r4, 0(r3) /* 80301B88 002FD7E8 90 03 00 08 */ stw r0, 8(r3) /* 80301B8C 002FD7EC 90 A3 00 04 */ stw r5, 4(r3) /* 80301B90 002FD7F0 41 82 00 18 */ beq lbl_80301BA8 /* 80301B94 002FD7F4 28 05 00 0A */ cmplwi r5, 0xa /* 80301B98 002FD7F8 41 82 00 10 */ beq lbl_80301BA8 /* 80301B9C 002FD7FC 38 05 FE F7 */ addi r0, r5, -265 /* 80301BA0 002FD800 28 00 00 01 */ cmplwi r0, 1 /* 80301BA4 002FD804 41 81 00 24 */ bgt lbl_80301BC8 lbl_80301BA8: /* 80301BA8 002FD808 48 00 17 3D */ bl NWC24IsMsgLibOpened /* 80301BAC 002FD80C 2C 03 00 00 */ cmpwi r3, 0 /* 80301BB0 002FD810 40 82 00 18 */ bne lbl_80301BC8 /* 80301BB4 002FD814 48 00 17 45 */ bl NWC24IsMsgLibOpenedByTool /* 80301BB8 002FD818 2C 03 00 00 */ cmpwi r3, 0 /* 80301BBC 002FD81C 40 82 00 0C */ bne lbl_80301BC8 /* 80301BC0 002FD820 38 60 FF F7 */ li r3, -9 /* 80301BC4 002FD824 48 00 00 5C */ b lbl_80301C20 lbl_80301BC8: /* 80301BC8 002FD828 28 1F 00 09 */ cmplwi r31, 9 /* 80301BCC 002FD82C 41 82 00 0C */ beq lbl_80301BD8 /* 80301BD0 002FD830 28 1F 01 09 */ cmplwi r31, 0x109 /* 80301BD4 002FD834 40 82 00 20 */ bne lbl_80301BF4 lbl_80301BD8: /* 80301BD8 002FD838 80 0D AF 7C */ lwz r0, lbl_8064023C-_SDA_BASE_(r13) /* 80301BDC 002FD83C 2C 00 00 00 */ cmpwi r0, 0 /* 80301BE0 002FD840 41 82 00 0C */ beq lbl_80301BEC /* 80301BE4 002FD844 38 60 FF EA */ li r3, -22 /* 80301BE8 002FD848 48 00 00 38 */ b lbl_80301C20 lbl_80301BEC: /* 80301BEC 002FD84C 80 1D 00 00 */ lwz r0, 0(r29) /* 80301BF0 002FD850 90 0D AF 7C */ stw r0, lbl_8064023C-_SDA_BASE_(r13) lbl_80301BF4: /* 80301BF4 002FD854 57 E0 05 EF */ rlwinm. r0, r31, 0, 0x17, 0x17 /* 80301BF8 002FD858 41 82 00 18 */ beq lbl_80301C10 /* 80301BFC 002FD85C 7F A3 EB 78 */ mr r3, r29 /* 80301C00 002FD860 7F C4 F3 78 */ mr r4, r30 /* 80301C04 002FD864 7F E5 FB 78 */ mr r5, r31 /* 80301C08 002FD868 48 00 01 69 */ bl NWC24iFOpenVF /* 80301C0C 002FD86C 48 00 00 14 */ b lbl_80301C20 lbl_80301C10: /* 80301C10 002FD870 7F A3 EB 78 */ mr r3, r29 /* 80301C14 002FD874 7F C4 F3 78 */ mr r4, r30 /* 80301C18 002FD878 7F E5 FB 78 */ mr r5, r31 /* 80301C1C 002FD87C 48 00 00 21 */ bl NWC24iFOpenNand lbl_80301C20: /* 80301C20 002FD880 80 01 00 24 */ lwz r0, 0x24(r1) /* 80301C24 002FD884 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 80301C28 002FD888 83 C1 00 18 */ lwz r30, 0x18(r1) /* 80301C2C 002FD88C 83 A1 00 14 */ lwz r29, 0x14(r1) /* 80301C30 002FD890 7C 08 03 A6 */ mtlr r0 /* 80301C34 002FD894 38 21 00 20 */ addi r1, r1, 0x20 /* 80301C38 002FD898 4E 80 00 20 */ blr .global NWC24iFOpenNand NWC24iFOpenNand: /* 80301C3C 002FD89C 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80301C40 002FD8A0 7C 08 02 A6 */ mflr r0 /* 80301C44 002FD8A4 90 01 00 34 */ stw r0, 0x34(r1) /* 80301C48 002FD8A8 39 61 00 30 */ addi r11, r1, 0x30 /* 80301C4C 002FD8AC 4B EC 54 C9 */ bl _savegpr_22 /* 80301C50 002FD8B0 28 05 00 0A */ cmplwi r5, 0xa /* 80301C54 002FD8B4 7C 7D 1B 78 */ mr r29, r3 /* 80301C58 002FD8B8 7C 9E 23 78 */ mr r30, r4 /* 80301C5C 002FD8BC 7C BF 2B 78 */ mr r31, r5 /* 80301C60 002FD8C0 41 81 00 5C */ bgt lbl_80301CBC /* 80301C64 002FD8C4 3C 60 80 44 */ lis r3, lbl_804462D8@ha /* 80301C68 002FD8C8 54 A0 10 3A */ slwi r0, r5, 2 /* 80301C6C 002FD8CC 38 63 62 D8 */ addi r3, r3, lbl_804462D8@l /* 80301C70 002FD8D0 7C 63 00 2E */ lwzx r3, r3, r0 /* 80301C74 002FD8D4 7C 69 03 A6 */ mtctr r3 /* 80301C78 002FD8D8 4E 80 04 20 */ bctr /* 80301C7C 002FD8DC 7F C3 F3 78 */ mr r3, r30 /* 80301C80 002FD8E0 38 80 00 3F */ li r4, 0x3f /* 80301C84 002FD8E4 38 A0 00 00 */ li r5, 0 /* 80301C88 002FD8E8 4B FE 59 65 */ bl NANDPrivateCreate /* 80301C8C 002FD8EC 2C 03 00 00 */ cmpwi r3, 0 /* 80301C90 002FD8F0 41 82 00 14 */ beq lbl_80301CA4 /* 80301C94 002FD8F4 2C 03 FF FA */ cmpwi r3, -6 /* 80301C98 002FD8F8 41 82 00 0C */ beq lbl_80301CA4 /* 80301C9C 002FD8FC 38 60 FF EB */ li r3, -21 /* 80301CA0 002FD900 48 00 00 B8 */ b lbl_80301D58 lbl_80301CA4: /* 80301CA4 002FD904 3A E0 00 02 */ li r23, 2 /* 80301CA8 002FD908 48 00 00 1C */ b lbl_80301CC4 /* 80301CAC 002FD90C 3A E0 00 01 */ li r23, 1 /* 80301CB0 002FD910 48 00 00 14 */ b lbl_80301CC4 /* 80301CB4 002FD914 3A E0 00 03 */ li r23, 3 /* 80301CB8 002FD918 48 00 00 0C */ b lbl_80301CC4 lbl_80301CBC: /* 80301CBC 002FD91C 38 60 FF FD */ li r3, -3 /* 80301CC0 002FD920 48 00 00 98 */ b lbl_80301D58 lbl_80301CC4: /* 80301CC4 002FD924 3A C0 00 00 */ li r22, 0 /* 80301CC8 002FD928 3B 60 03 E8 */ li r27, 0x3e8 /* 80301CCC 002FD92C 7F 96 D9 D6 */ mullw r28, r22, r27 /* 80301CD0 002FD930 3C 60 10 62 */ lis r3, 0x10624DD3@ha /* 80301CD4 002FD934 3F 40 80 00 */ lis r26, 0x8000 /* 80301CD8 002FD938 3B 23 4D D3 */ addi r25, r3, 0x10624DD3@l lbl_80301CDC: /* 80301CDC 002FD93C 7F C3 F3 78 */ mr r3, r30 /* 80301CE0 002FD940 7E E5 BB 78 */ mr r5, r23 /* 80301CE4 002FD944 38 9D 00 0C */ addi r4, r29, 0xc /* 80301CE8 002FD948 4B FE 67 AD */ bl NANDPrivateOpen /* 80301CEC 002FD94C 2C 03 FF FD */ cmpwi r3, -3 /* 80301CF0 002FD950 7C 78 1B 78 */ mr r24, r3 /* 80301CF4 002FD954 40 82 00 30 */ bne lbl_80301D24 /* 80301CF8 002FD958 80 1A 00 F8 */ lwz r0, 0xf8(r26) /* 80301CFC 002FD95C 54 00 F0 BE */ srwi r0, r0, 2 /* 80301D00 002FD960 7C 19 00 16 */ mulhwu r0, r25, r0 /* 80301D04 002FD964 54 03 D1 BE */ srwi r3, r0, 6 /* 80301D08 002FD968 7C 03 D8 16 */ mulhwu r0, r3, r27 /* 80301D0C 002FD96C 1C 83 03 E8 */ mulli r4, r3, 0x3e8 /* 80301D10 002FD970 7C 60 E2 14 */ add r3, r0, r28 /* 80301D14 002FD974 4B F7 09 F1 */ bl OSSleepTicks /* 80301D18 002FD978 3A D6 00 01 */ addi r22, r22, 1 /* 80301D1C 002FD97C 28 16 00 03 */ cmplwi r22, 3 /* 80301D20 002FD980 41 80 FF BC */ blt lbl_80301CDC lbl_80301D24: /* 80301D24 002FD984 2C 18 00 00 */ cmpwi r24, 0 /* 80301D28 002FD988 41 82 00 2C */ beq lbl_80301D54 /* 80301D2C 002FD98C 28 1F 00 09 */ cmplwi r31, 9 /* 80301D30 002FD990 40 82 00 0C */ bne lbl_80301D3C /* 80301D34 002FD994 38 00 00 00 */ li r0, 0 /* 80301D38 002FD998 90 0D AF 7C */ stw r0, lbl_8064023C-_SDA_BASE_(r13) lbl_80301D3C: /* 80301D3C 002FD99C 2C 18 FF F4 */ cmpwi r24, -12 /* 80301D40 002FD9A0 40 82 00 0C */ bne lbl_80301D4C /* 80301D44 002FD9A4 38 60 FF EC */ li r3, -20 /* 80301D48 002FD9A8 48 00 00 10 */ b lbl_80301D58 lbl_80301D4C: /* 80301D4C 002FD9AC 38 60 FF F0 */ li r3, -16 /* 80301D50 002FD9B0 48 00 00 08 */ b lbl_80301D58 lbl_80301D54: /* 80301D54 002FD9B4 38 60 00 00 */ li r3, 0 lbl_80301D58: /* 80301D58 002FD9B8 39 61 00 30 */ addi r11, r1, 0x30 /* 80301D5C 002FD9BC 4B EC 54 05 */ bl _restgpr_22 /* 80301D60 002FD9C0 80 01 00 34 */ lwz r0, 0x34(r1) /* 80301D64 002FD9C4 7C 08 03 A6 */ mtlr r0 /* 80301D68 002FD9C8 38 21 00 30 */ addi r1, r1, 0x30 /* 80301D6C 002FD9CC 4E 80 00 20 */ blr .global NWC24iFOpenVF NWC24iFOpenVF: /* 80301D70 002FD9D0 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80301D74 002FD9D4 7C 08 02 A6 */ mflr r0 /* 80301D78 002FD9D8 2C 05 01 09 */ cmpwi r5, 0x109 /* 80301D7C 002FD9DC 90 01 00 24 */ stw r0, 0x24(r1) /* 80301D80 002FD9E0 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80301D84 002FD9E4 93 C1 00 18 */ stw r30, 0x18(r1) /* 80301D88 002FD9E8 7C BE 2B 78 */ mr r30, r5 /* 80301D8C 002FD9EC 93 A1 00 14 */ stw r29, 0x14(r1) /* 80301D90 002FD9F0 7C 7D 1B 78 */ mr r29, r3 /* 80301D94 002FD9F4 41 82 00 2C */ beq lbl_80301DC0 /* 80301D98 002FD9F8 40 80 00 1C */ bge lbl_80301DB4 /* 80301D9C 002FD9FC 2C 05 01 02 */ cmpwi r5, 0x102 /* 80301DA0 002FDA00 41 82 00 28 */ beq lbl_80301DC8 /* 80301DA4 002FDA04 40 80 00 2C */ bge lbl_80301DD0 /* 80301DA8 002FDA08 2C 05 01 01 */ cmpwi r5, 0x101 /* 80301DAC 002FDA0C 40 80 00 14 */ bge lbl_80301DC0 /* 80301DB0 002FDA10 48 00 00 20 */ b lbl_80301DD0 lbl_80301DB4: /* 80301DB4 002FDA14 2C 05 01 0B */ cmpwi r5, 0x10b /* 80301DB8 002FDA18 40 80 00 18 */ bge lbl_80301DD0 /* 80301DBC 002FDA1C 48 00 00 0C */ b lbl_80301DC8 lbl_80301DC0: /* 80301DC0 002FDA20 3B ED 8C 80 */ addi r31, r13, lbl_8063DF40-_SDA_BASE_ /* 80301DC4 002FDA24 48 00 00 14 */ b lbl_80301DD8 lbl_80301DC8: /* 80301DC8 002FDA28 3B ED 8C 84 */ addi r31, r13, lbl_8063DF44-_SDA_BASE_ /* 80301DCC 002FDA2C 48 00 00 0C */ b lbl_80301DD8 lbl_80301DD0: /* 80301DD0 002FDA30 38 60 FF FD */ li r3, -3 /* 80301DD4 002FDA34 48 00 00 A8 */ b lbl_80301E7C lbl_80301DD8: /* 80301DD8 002FDA38 7C 83 23 78 */ mr r3, r4 /* 80301DDC 002FDA3C 7F E4 FB 78 */ mr r4, r31 /* 80301DE0 002FDA40 38 A0 00 00 */ li r5, 0 /* 80301DE4 002FDA44 48 01 88 C1 */ bl VFOpenFile /* 80301DE8 002FDA48 2C 03 00 00 */ cmpwi r3, 0 /* 80301DEC 002FDA4C 90 7D 00 98 */ stw r3, 0x98(r29) /* 80301DF0 002FDA50 40 82 00 88 */ bne lbl_80301E78 /* 80301DF4 002FDA54 48 01 8B ED */ bl VFGetLastError /* 80301DF8 002FDA58 28 1E 01 09 */ cmplwi r30, 0x109 /* 80301DFC 002FDA5C 40 82 00 0C */ bne lbl_80301E08 /* 80301E00 002FDA60 38 00 00 00 */ li r0, 0 /* 80301E04 002FDA64 90 0D AF 7C */ stw r0, lbl_8064023C-_SDA_BASE_(r13) lbl_80301E08: /* 80301E08 002FDA68 88 1F 00 00 */ lbz r0, 0(r31) /* 80301E0C 002FDA6C 2C 00 00 72 */ cmpwi r0, 0x72 /* 80301E10 002FDA70 40 82 00 14 */ bne lbl_80301E24 /* 80301E14 002FDA74 2C 03 00 02 */ cmpwi r3, 2 /* 80301E18 002FDA78 40 82 00 0C */ bne lbl_80301E24 /* 80301E1C 002FDA7C 38 60 FF EC */ li r3, -20 /* 80301E20 002FDA80 48 00 00 5C */ b lbl_80301E7C lbl_80301E24: /* 80301E24 002FDA84 2C 03 00 05 */ cmpwi r3, 5 /* 80301E28 002FDA88 40 82 00 48 */ bne lbl_80301E70 /* 80301E2C 002FDA8C 38 6D 8C 88 */ addi r3, r13, lbl_8063DF48-_SDA_BASE_ /* 80301E30 002FDA90 48 01 8B B5 */ bl VFGetLastDeviceError /* 80301E34 002FDA94 2C 03 FF FB */ cmpwi r3, -5 /* 80301E38 002FDA98 41 82 00 20 */ beq lbl_80301E58 /* 80301E3C 002FDA9C 40 80 00 10 */ bge lbl_80301E4C /* 80301E40 002FDAA0 2C 03 FF F1 */ cmpwi r3, -15 /* 80301E44 002FDAA4 41 82 00 14 */ beq lbl_80301E58 /* 80301E48 002FDAA8 48 00 00 20 */ b lbl_80301E68 lbl_80301E4C: /* 80301E4C 002FDAAC 2C 03 FF FD */ cmpwi r3, -3 /* 80301E50 002FDAB0 40 80 00 18 */ bge lbl_80301E68 /* 80301E54 002FDAB4 48 00 00 0C */ b lbl_80301E60 lbl_80301E58: /* 80301E58 002FDAB8 38 60 FF D2 */ li r3, -46 /* 80301E5C 002FDABC 48 00 00 20 */ b lbl_80301E7C lbl_80301E60: /* 80301E60 002FDAC0 38 60 FF DA */ li r3, -38 /* 80301E64 002FDAC4 48 00 00 18 */ b lbl_80301E7C lbl_80301E68: /* 80301E68 002FDAC8 38 60 FF F0 */ li r3, -16 /* 80301E6C 002FDACC 48 00 00 10 */ b lbl_80301E7C lbl_80301E70: /* 80301E70 002FDAD0 38 60 FF F0 */ li r3, -16 /* 80301E74 002FDAD4 48 00 00 08 */ b lbl_80301E7C lbl_80301E78: /* 80301E78 002FDAD8 38 60 00 00 */ li r3, 0 lbl_80301E7C: /* 80301E7C 002FDADC 80 01 00 24 */ lwz r0, 0x24(r1) /* 80301E80 002FDAE0 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 80301E84 002FDAE4 83 C1 00 18 */ lwz r30, 0x18(r1) /* 80301E88 002FDAE8 83 A1 00 14 */ lwz r29, 0x14(r1) /* 80301E8C 002FDAEC 7C 08 03 A6 */ mtlr r0 /* 80301E90 002FDAF0 38 21 00 20 */ addi r1, r1, 0x20 /* 80301E94 002FDAF4 4E 80 00 20 */ blr .global NWC24FClose NWC24FClose: /* 80301E98 002FDAF8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80301E9C 002FDAFC 7C 08 02 A6 */ mflr r0 /* 80301EA0 002FDB00 90 01 00 14 */ stw r0, 0x14(r1) /* 80301EA4 002FDB04 93 E1 00 0C */ stw r31, 0xc(r1) /* 80301EA8 002FDB08 3B E0 00 00 */ li r31, 0 /* 80301EAC 002FDB0C 93 C1 00 08 */ stw r30, 8(r1) /* 80301EB0 002FDB10 7C 7E 1B 78 */ mr r30, r3 /* 80301EB4 002FDB14 80 03 00 04 */ lwz r0, 4(r3) /* 80301EB8 002FDB18 28 00 00 09 */ cmplwi r0, 9 /* 80301EBC 002FDB1C 41 82 00 0C */ beq lbl_80301EC8 /* 80301EC0 002FDB20 28 00 01 09 */ cmplwi r0, 0x109 /* 80301EC4 002FDB24 40 82 00 18 */ bne lbl_80301EDC lbl_80301EC8: /* 80301EC8 002FDB28 7F C3 F3 78 */ mr r3, r30 /* 80301ECC 002FDB2C 48 00 09 39 */ bl BufferedWriteFlush /* 80301ED0 002FDB30 38 00 00 00 */ li r0, 0 /* 80301ED4 002FDB34 7C 7F 1B 78 */ mr r31, r3 /* 80301ED8 002FDB38 90 0D AF 7C */ stw r0, lbl_8064023C-_SDA_BASE_(r13) lbl_80301EDC: /* 80301EDC 002FDB3C 80 1E 00 04 */ lwz r0, 4(r30) /* 80301EE0 002FDB40 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 80301EE4 002FDB44 41 82 00 70 */ beq lbl_80301F54 /* 80301EE8 002FDB48 80 7E 00 98 */ lwz r3, 0x98(r30) /* 80301EEC 002FDB4C 48 01 88 95 */ bl VFCloseFile /* 80301EF0 002FDB50 2C 03 00 00 */ cmpwi r3, 0 /* 80301EF4 002FDB54 41 82 00 58 */ beq lbl_80301F4C /* 80301EF8 002FDB58 2C 03 00 05 */ cmpwi r3, 5 /* 80301EFC 002FDB5C 40 82 00 48 */ bne lbl_80301F44 /* 80301F00 002FDB60 38 6D 8C 88 */ addi r3, r13, lbl_8063DF48-_SDA_BASE_ /* 80301F04 002FDB64 48 01 8A E1 */ bl VFGetLastDeviceError /* 80301F08 002FDB68 2C 03 FF FB */ cmpwi r3, -5 /* 80301F0C 002FDB6C 41 82 00 20 */ beq lbl_80301F2C /* 80301F10 002FDB70 40 80 00 10 */ bge lbl_80301F20 /* 80301F14 002FDB74 2C 03 FF F1 */ cmpwi r3, -15 /* 80301F18 002FDB78 41 82 00 14 */ beq lbl_80301F2C /* 80301F1C 002FDB7C 48 00 00 20 */ b lbl_80301F3C lbl_80301F20: /* 80301F20 002FDB80 2C 03 FF FD */ cmpwi r3, -3 /* 80301F24 002FDB84 40 80 00 18 */ bge lbl_80301F3C /* 80301F28 002FDB88 48 00 00 0C */ b lbl_80301F34 lbl_80301F2C: /* 80301F2C 002FDB8C 38 60 FF D2 */ li r3, -46 /* 80301F30 002FDB90 48 00 00 2C */ b lbl_80301F5C lbl_80301F34: /* 80301F34 002FDB94 38 60 FF DA */ li r3, -38 /* 80301F38 002FDB98 48 00 00 24 */ b lbl_80301F5C lbl_80301F3C: /* 80301F3C 002FDB9C 38 60 FF EF */ li r3, -17 /* 80301F40 002FDBA0 48 00 00 1C */ b lbl_80301F5C lbl_80301F44: /* 80301F44 002FDBA4 38 60 FF EF */ li r3, -17 /* 80301F48 002FDBA8 48 00 00 14 */ b lbl_80301F5C lbl_80301F4C: /* 80301F4C 002FDBAC 38 60 00 00 */ li r3, 0 /* 80301F50 002FDBB0 48 00 00 0C */ b lbl_80301F5C lbl_80301F54: /* 80301F54 002FDBB4 7F C3 F3 78 */ mr r3, r30 /* 80301F58 002FDBB8 48 00 00 29 */ bl NWC24iFCloseNand lbl_80301F5C: /* 80301F5C 002FDBBC 2C 1F 00 00 */ cmpwi r31, 0 /* 80301F60 002FDBC0 41 82 00 08 */ beq lbl_80301F68 /* 80301F64 002FDBC4 7F E3 FB 78 */ mr r3, r31 lbl_80301F68: /* 80301F68 002FDBC8 80 01 00 14 */ lwz r0, 0x14(r1) /* 80301F6C 002FDBCC 83 E1 00 0C */ lwz r31, 0xc(r1) /* 80301F70 002FDBD0 83 C1 00 08 */ lwz r30, 8(r1) /* 80301F74 002FDBD4 7C 08 03 A6 */ mtlr r0 /* 80301F78 002FDBD8 38 21 00 10 */ addi r1, r1, 0x10 /* 80301F7C 002FDBDC 4E 80 00 20 */ blr .global NWC24iFCloseNand NWC24iFCloseNand: /* 80301F80 002FDBE0 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80301F84 002FDBE4 7C 08 02 A6 */ mflr r0 /* 80301F88 002FDBE8 90 01 00 34 */ stw r0, 0x34(r1) /* 80301F8C 002FDBEC 39 61 00 30 */ addi r11, r1, 0x30 /* 80301F90 002FDBF0 4B EC 51 8D */ bl _savegpr_24 /* 80301F94 002FDBF4 3B 40 00 00 */ li r26, 0 /* 80301F98 002FDBF8 3B C0 03 E8 */ li r30, 0x3e8 /* 80301F9C 002FDBFC 7F FA F1 D6 */ mullw r31, r26, r30 /* 80301FA0 002FDC00 3C 80 10 62 */ lis r4, 0x10624DD3@ha /* 80301FA4 002FDC04 7C 78 1B 78 */ mr r24, r3 /* 80301FA8 002FDC08 3B 84 4D D3 */ addi r28, r4, 0x10624DD3@l /* 80301FAC 002FDC0C 3B 20 00 00 */ li r25, 0 /* 80301FB0 002FDC10 3F A0 80 00 */ lis r29, 0x8000 lbl_80301FB4: /* 80301FB4 002FDC14 38 78 00 0C */ addi r3, r24, 0xc /* 80301FB8 002FDC18 4B FE 66 D1 */ bl NANDClose /* 80301FBC 002FDC1C 2C 03 FF FD */ cmpwi r3, -3 /* 80301FC0 002FDC20 7C 7B 1B 78 */ mr r27, r3 /* 80301FC4 002FDC24 40 82 00 30 */ bne lbl_80301FF4 /* 80301FC8 002FDC28 80 1D 00 F8 */ lwz r0, 0xf8(r29) /* 80301FCC 002FDC2C 54 00 F0 BE */ srwi r0, r0, 2 /* 80301FD0 002FDC30 7C 1C 00 16 */ mulhwu r0, r28, r0 /* 80301FD4 002FDC34 54 03 D1 BE */ srwi r3, r0, 6 /* 80301FD8 002FDC38 7C 03 F0 16 */ mulhwu r0, r3, r30 /* 80301FDC 002FDC3C 1C 83 03 E8 */ mulli r4, r3, 0x3e8 /* 80301FE0 002FDC40 7C 60 FA 14 */ add r3, r0, r31 /* 80301FE4 002FDC44 4B F7 07 21 */ bl OSSleepTicks /* 80301FE8 002FDC48 3B 39 00 01 */ addi r25, r25, 1 /* 80301FEC 002FDC4C 28 19 00 03 */ cmplwi r25, 3 /* 80301FF0 002FDC50 41 80 FF C4 */ blt lbl_80301FB4 lbl_80301FF4: /* 80301FF4 002FDC54 2C 1B FF FC */ cmpwi r27, -4 /* 80301FF8 002FDC58 40 82 00 0C */ bne lbl_80302004 /* 80301FFC 002FDC5C 3B 40 FF DA */ li r26, -38 /* 80302000 002FDC60 48 00 00 10 */ b lbl_80302010 lbl_80302004: /* 80302004 002FDC64 2C 1B 00 00 */ cmpwi r27, 0 /* 80302008 002FDC68 41 82 00 08 */ beq lbl_80302010 /* 8030200C 002FDC6C 3B 40 FF EF */ li r26, -17 lbl_80302010: /* 80302010 002FDC70 39 61 00 30 */ addi r11, r1, 0x30 /* 80302014 002FDC74 7F 43 D3 78 */ mr r3, r26 /* 80302018 002FDC78 4B EC 51 51 */ bl _restgpr_24 /* 8030201C 002FDC7C 80 01 00 34 */ lwz r0, 0x34(r1) /* 80302020 002FDC80 7C 08 03 A6 */ mtlr r0 /* 80302024 002FDC84 38 21 00 30 */ addi r1, r1, 0x30 /* 80302028 002FDC88 4E 80 00 20 */ blr .global NWC24FSeek NWC24FSeek: /* 8030202C 002FDC8C 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80302030 002FDC90 7C 08 02 A6 */ mflr r0 /* 80302034 002FDC94 90 01 00 34 */ stw r0, 0x34(r1) /* 80302038 002FDC98 39 61 00 30 */ addi r11, r1, 0x30 /* 8030203C 002FDC9C 4B EC 50 DD */ bl _savegpr_23 /* 80302040 002FDCA0 80 03 00 04 */ lwz r0, 4(r3) /* 80302044 002FDCA4 7C 77 1B 78 */ mr r23, r3 /* 80302048 002FDCA8 7C 98 23 78 */ mr r24, r4 /* 8030204C 002FDCAC 7C BF 2B 78 */ mr r31, r5 /* 80302050 002FDCB0 28 00 00 0A */ cmplwi r0, 0xa /* 80302054 002FDCB4 41 82 00 0C */ beq lbl_80302060 /* 80302058 002FDCB8 28 00 01 0A */ cmplwi r0, 0x10a /* 8030205C 002FDCBC 40 82 00 BC */ bne lbl_80302118 lbl_80302060: /* 80302060 002FDCC0 80 03 00 04 */ lwz r0, 4(r3) /* 80302064 002FDCC4 54 85 D8 08 */ slwi r5, r4, 0x1b /* 80302068 002FDCC8 54 86 0F FE */ srwi r6, r4, 0x1f /* 8030206C 002FDCCC 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 80302070 002FDCD0 7C A6 28 50 */ subf r5, r6, r5 /* 80302074 002FDCD4 54 A0 28 3E */ rotlwi r0, r5, 5 /* 80302078 002FDCD8 7C 00 32 14 */ add r0, r0, r6 /* 8030207C 002FDCDC 90 03 00 08 */ stw r0, 8(r3) /* 80302080 002FDCE0 7C 80 20 50 */ subf r4, r0, r4 /* 80302084 002FDCE4 41 82 00 74 */ beq lbl_803020F8 /* 80302088 002FDCE8 80 63 00 98 */ lwz r3, 0x98(r3) /* 8030208C 002FDCEC 7F E5 FB 78 */ mr r5, r31 /* 80302090 002FDCF0 48 01 87 5D */ bl VFSeekFile /* 80302094 002FDCF4 2C 03 00 00 */ cmpwi r3, 0 /* 80302098 002FDCF8 41 82 00 58 */ beq lbl_803020F0 /* 8030209C 002FDCFC 2C 03 00 05 */ cmpwi r3, 5 /* 803020A0 002FDD00 40 82 00 48 */ bne lbl_803020E8 /* 803020A4 002FDD04 38 6D 8C 88 */ addi r3, r13, lbl_8063DF48-_SDA_BASE_ /* 803020A8 002FDD08 48 01 89 3D */ bl VFGetLastDeviceError /* 803020AC 002FDD0C 2C 03 FF FB */ cmpwi r3, -5 /* 803020B0 002FDD10 41 82 00 20 */ beq lbl_803020D0 /* 803020B4 002FDD14 40 80 00 10 */ bge lbl_803020C4 /* 803020B8 002FDD18 2C 03 FF F1 */ cmpwi r3, -15 /* 803020BC 002FDD1C 41 82 00 14 */ beq lbl_803020D0 /* 803020C0 002FDD20 48 00 00 20 */ b lbl_803020E0 lbl_803020C4: /* 803020C4 002FDD24 2C 03 FF FD */ cmpwi r3, -3 /* 803020C8 002FDD28 40 80 00 18 */ bge lbl_803020E0 /* 803020CC 002FDD2C 48 00 00 0C */ b lbl_803020D8 lbl_803020D0: /* 803020D0 002FDD30 38 60 FF D2 */ li r3, -46 /* 803020D4 002FDD34 48 00 01 2C */ b lbl_80302200 lbl_803020D8: /* 803020D8 002FDD38 38 60 FF DA */ li r3, -38 /* 803020DC 002FDD3C 48 00 01 24 */ b lbl_80302200 lbl_803020E0: /* 803020E0 002FDD40 38 60 FF EB */ li r3, -21 /* 803020E4 002FDD44 48 00 01 1C */ b lbl_80302200 lbl_803020E8: /* 803020E8 002FDD48 38 60 FF EB */ li r3, -21 /* 803020EC 002FDD4C 48 00 01 14 */ b lbl_80302200 lbl_803020F0: /* 803020F0 002FDD50 38 60 00 00 */ li r3, 0 /* 803020F4 002FDD54 48 00 01 0C */ b lbl_80302200 lbl_803020F8: /* 803020F8 002FDD58 7F E5 FB 78 */ mr r5, r31 /* 803020FC 002FDD5C 38 63 00 0C */ addi r3, r3, 0xc /* 80302100 002FDD60 4B FE 59 81 */ bl NANDSeek /* 80302104 002FDD64 2C 03 00 00 */ cmpwi r3, 0 /* 80302108 002FDD68 38 60 00 00 */ li r3, 0 /* 8030210C 002FDD6C 40 80 00 F4 */ bge lbl_80302200 /* 80302110 002FDD70 38 60 FF EB */ li r3, -21 /* 80302114 002FDD74 48 00 00 EC */ b lbl_80302200 lbl_80302118: /* 80302118 002FDD78 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 8030211C 002FDD7C 41 82 00 70 */ beq lbl_8030218C /* 80302120 002FDD80 80 63 00 98 */ lwz r3, 0x98(r3) /* 80302124 002FDD84 48 01 86 C9 */ bl VFSeekFile /* 80302128 002FDD88 2C 03 00 00 */ cmpwi r3, 0 /* 8030212C 002FDD8C 41 82 00 58 */ beq lbl_80302184 /* 80302130 002FDD90 2C 03 00 05 */ cmpwi r3, 5 /* 80302134 002FDD94 40 82 00 48 */ bne lbl_8030217C /* 80302138 002FDD98 38 6D 8C 88 */ addi r3, r13, lbl_8063DF48-_SDA_BASE_ /* 8030213C 002FDD9C 48 01 88 A9 */ bl VFGetLastDeviceError /* 80302140 002FDDA0 2C 03 FF FB */ cmpwi r3, -5 /* 80302144 002FDDA4 41 82 00 20 */ beq lbl_80302164 /* 80302148 002FDDA8 40 80 00 10 */ bge lbl_80302158 /* 8030214C 002FDDAC 2C 03 FF F1 */ cmpwi r3, -15 /* 80302150 002FDDB0 41 82 00 14 */ beq lbl_80302164 /* 80302154 002FDDB4 48 00 00 20 */ b lbl_80302174 lbl_80302158: /* 80302158 002FDDB8 2C 03 FF FD */ cmpwi r3, -3 /* 8030215C 002FDDBC 40 80 00 18 */ bge lbl_80302174 /* 80302160 002FDDC0 48 00 00 0C */ b lbl_8030216C lbl_80302164: /* 80302164 002FDDC4 38 60 FF D2 */ li r3, -46 /* 80302168 002FDDC8 48 00 00 98 */ b lbl_80302200 lbl_8030216C: /* 8030216C 002FDDCC 38 60 FF DA */ li r3, -38 /* 80302170 002FDDD0 48 00 00 90 */ b lbl_80302200 lbl_80302174: /* 80302174 002FDDD4 38 60 FF EB */ li r3, -21 /* 80302178 002FDDD8 48 00 00 88 */ b lbl_80302200 lbl_8030217C: /* 8030217C 002FDDDC 38 60 FF EB */ li r3, -21 /* 80302180 002FDDE0 48 00 00 80 */ b lbl_80302200 lbl_80302184: /* 80302184 002FDDE4 38 60 00 00 */ li r3, 0 /* 80302188 002FDDE8 48 00 00 78 */ b lbl_80302200 lbl_8030218C: /* 8030218C 002FDDEC 3B 20 00 00 */ li r25, 0 /* 80302190 002FDDF0 3B A0 03 E8 */ li r29, 0x3e8 /* 80302194 002FDDF4 7F D9 E9 D6 */ mullw r30, r25, r29 /* 80302198 002FDDF8 3C 60 10 62 */ lis r3, 0x10624DD3@ha /* 8030219C 002FDDFC 3F 80 80 00 */ lis r28, 0x8000 /* 803021A0 002FDE00 3B 63 4D D3 */ addi r27, r3, 0x10624DD3@l lbl_803021A4: /* 803021A4 002FDE04 7F 04 C3 78 */ mr r4, r24 /* 803021A8 002FDE08 7F E5 FB 78 */ mr r5, r31 /* 803021AC 002FDE0C 38 77 00 0C */ addi r3, r23, 0xc /* 803021B0 002FDE10 4B FE 58 D1 */ bl NANDSeek /* 803021B4 002FDE14 2C 03 FF FD */ cmpwi r3, -3 /* 803021B8 002FDE18 7C 7A 1B 78 */ mr r26, r3 /* 803021BC 002FDE1C 40 82 00 30 */ bne lbl_803021EC /* 803021C0 002FDE20 80 1C 00 F8 */ lwz r0, 0xf8(r28) /* 803021C4 002FDE24 54 00 F0 BE */ srwi r0, r0, 2 /* 803021C8 002FDE28 7C 1B 00 16 */ mulhwu r0, r27, r0 /* 803021CC 002FDE2C 54 03 D1 BE */ srwi r3, r0, 6 /* 803021D0 002FDE30 7C 03 E8 16 */ mulhwu r0, r3, r29 /* 803021D4 002FDE34 1C 83 03 E8 */ mulli r4, r3, 0x3e8 /* 803021D8 002FDE38 7C 60 F2 14 */ add r3, r0, r30 /* 803021DC 002FDE3C 4B F7 05 29 */ bl OSSleepTicks /* 803021E0 002FDE40 3B 39 00 01 */ addi r25, r25, 1 /* 803021E4 002FDE44 28 19 00 03 */ cmplwi r25, 3 /* 803021E8 002FDE48 41 80 FF BC */ blt lbl_803021A4 lbl_803021EC: /* 803021EC 002FDE4C 2C 1A 00 00 */ cmpwi r26, 0 /* 803021F0 002FDE50 40 80 00 0C */ bge lbl_803021FC /* 803021F4 002FDE54 38 60 FF EB */ li r3, -21 /* 803021F8 002FDE58 48 00 00 08 */ b lbl_80302200 lbl_803021FC: /* 803021FC 002FDE5C 38 60 00 00 */ li r3, 0 lbl_80302200: /* 80302200 002FDE60 39 61 00 30 */ addi r11, r1, 0x30 /* 80302204 002FDE64 4B EC 4F 61 */ bl _restgpr_23 /* 80302208 002FDE68 80 01 00 34 */ lwz r0, 0x34(r1) /* 8030220C 002FDE6C 7C 08 03 A6 */ mtlr r0 /* 80302210 002FDE70 38 21 00 30 */ addi r1, r1, 0x30 /* 80302214 002FDE74 4E 80 00 20 */ blr .global NWC24FRead NWC24FRead: /* 80302218 002FDE78 94 21 FF D0 */ stwu r1, -0x30(r1) /* 8030221C 002FDE7C 7C 08 02 A6 */ mflr r0 /* 80302220 002FDE80 90 01 00 34 */ stw r0, 0x34(r1) /* 80302224 002FDE84 39 61 00 30 */ addi r11, r1, 0x30 /* 80302228 002FDE88 4B EC 4E F1 */ bl _savegpr_23 /* 8030222C 002FDE8C 80 05 00 04 */ lwz r0, 4(r5) /* 80302230 002FDE90 7C 77 1B 78 */ mr r23, r3 /* 80302234 002FDE94 7C 98 23 78 */ mr r24, r4 /* 80302238 002FDE98 7C B9 2B 78 */ mr r25, r5 /* 8030223C 002FDE9C 2C 00 00 0A */ cmpwi r0, 0xa /* 80302240 002FDEA0 41 82 00 40 */ beq lbl_80302280 /* 80302244 002FDEA4 40 80 00 1C */ bge lbl_80302260 /* 80302248 002FDEA8 2C 00 00 01 */ cmpwi r0, 1 /* 8030224C 002FDEAC 41 82 00 2C */ beq lbl_80302278 /* 80302250 002FDEB0 41 80 00 44 */ blt lbl_80302294 /* 80302254 002FDEB4 2C 00 00 09 */ cmpwi r0, 9 /* 80302258 002FDEB8 40 80 00 20 */ bge lbl_80302278 /* 8030225C 002FDEBC 48 00 00 38 */ b lbl_80302294 lbl_80302260: /* 80302260 002FDEC0 2C 00 01 0A */ cmpwi r0, 0x10a /* 80302264 002FDEC4 41 82 00 1C */ beq lbl_80302280 /* 80302268 002FDEC8 40 80 00 2C */ bge lbl_80302294 /* 8030226C 002FDECC 2C 00 01 01 */ cmpwi r0, 0x101 /* 80302270 002FDED0 41 82 00 08 */ beq lbl_80302278 /* 80302274 002FDED4 48 00 00 20 */ b lbl_80302294 lbl_80302278: /* 80302278 002FDED8 38 60 FF F9 */ li r3, -7 /* 8030227C 002FDEDC 48 00 01 50 */ b lbl_803023CC lbl_80302280: /* 80302280 002FDEE0 7E E3 BB 78 */ mr r3, r23 /* 80302284 002FDEE4 7F 04 C3 78 */ mr r4, r24 /* 80302288 002FDEE8 7F 25 CB 78 */ mr r5, r25 /* 8030228C 002FDEEC 48 00 06 E5 */ bl BufferedRead /* 80302290 002FDEF0 48 00 01 3C */ b lbl_803023CC lbl_80302294: /* 80302294 002FDEF4 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 80302298 002FDEF8 41 82 00 7C */ beq lbl_80302314 /* 8030229C 002FDEFC 80 65 00 98 */ lwz r3, 0x98(r5) /* 803022A0 002FDF00 7E E4 BB 78 */ mr r4, r23 /* 803022A4 002FDF04 7F 05 C3 78 */ mr r5, r24 /* 803022A8 002FDF08 38 C0 00 00 */ li r6, 0 /* 803022AC 002FDF0C 48 01 85 CD */ bl VFReadFile /* 803022B0 002FDF10 2C 03 00 00 */ cmpwi r3, 0 /* 803022B4 002FDF14 41 82 00 58 */ beq lbl_8030230C /* 803022B8 002FDF18 2C 03 00 05 */ cmpwi r3, 5 /* 803022BC 002FDF1C 40 82 00 48 */ bne lbl_80302304 /* 803022C0 002FDF20 38 6D 8C 88 */ addi r3, r13, lbl_8063DF48-_SDA_BASE_ /* 803022C4 002FDF24 48 01 87 21 */ bl VFGetLastDeviceError /* 803022C8 002FDF28 2C 03 FF FB */ cmpwi r3, -5 /* 803022CC 002FDF2C 41 82 00 20 */ beq lbl_803022EC /* 803022D0 002FDF30 40 80 00 10 */ bge lbl_803022E0 /* 803022D4 002FDF34 2C 03 FF F1 */ cmpwi r3, -15 /* 803022D8 002FDF38 41 82 00 14 */ beq lbl_803022EC /* 803022DC 002FDF3C 48 00 00 20 */ b lbl_803022FC lbl_803022E0: /* 803022E0 002FDF40 2C 03 FF FD */ cmpwi r3, -3 /* 803022E4 002FDF44 40 80 00 18 */ bge lbl_803022FC /* 803022E8 002FDF48 48 00 00 0C */ b lbl_803022F4 lbl_803022EC: /* 803022EC 002FDF4C 38 60 FF D2 */ li r3, -46 /* 803022F0 002FDF50 48 00 00 DC */ b lbl_803023CC lbl_803022F4: /* 803022F4 002FDF54 38 60 FF DA */ li r3, -38 /* 803022F8 002FDF58 48 00 00 D4 */ b lbl_803023CC lbl_803022FC: /* 803022FC 002FDF5C 38 60 FF EE */ li r3, -18 /* 80302300 002FDF60 48 00 00 CC */ b lbl_803023CC lbl_80302304: /* 80302304 002FDF64 38 60 FF EE */ li r3, -18 /* 80302308 002FDF68 48 00 00 C4 */ b lbl_803023CC lbl_8030230C: /* 8030230C 002FDF6C 38 60 00 00 */ li r3, 0 /* 80302310 002FDF70 48 00 00 BC */ b lbl_803023CC lbl_80302314: /* 80302314 002FDF74 3B 40 00 00 */ li r26, 0 /* 80302318 002FDF78 3B C0 03 E8 */ li r30, 0x3e8 /* 8030231C 002FDF7C 7F FA F1 D6 */ mullw r31, r26, r30 /* 80302320 002FDF80 3C 60 10 62 */ lis r3, 0x10624DD3@ha /* 80302324 002FDF84 3F A0 80 00 */ lis r29, 0x8000 /* 80302328 002FDF88 3B 83 4D D3 */ addi r28, r3, 0x10624DD3@l lbl_8030232C: /* 8030232C 002FDF8C 7E E4 BB 78 */ mr r4, r23 /* 80302330 002FDF90 7F 05 C3 78 */ mr r5, r24 /* 80302334 002FDF94 38 79 00 0C */ addi r3, r25, 0xc /* 80302338 002FDF98 4B FE 55 89 */ bl NANDRead /* 8030233C 002FDF9C 2C 03 FF FD */ cmpwi r3, -3 /* 80302340 002FDFA0 7C 7B 1B 78 */ mr r27, r3 /* 80302344 002FDFA4 40 82 00 30 */ bne lbl_80302374 /* 80302348 002FDFA8 80 1D 00 F8 */ lwz r0, 0xf8(r29) /* 8030234C 002FDFAC 54 00 F0 BE */ srwi r0, r0, 2 /* 80302350 002FDFB0 7C 1C 00 16 */ mulhwu r0, r28, r0 /* 80302354 002FDFB4 54 03 D1 BE */ srwi r3, r0, 6 /* 80302358 002FDFB8 7C 03 F0 16 */ mulhwu r0, r3, r30 /* 8030235C 002FDFBC 1C 83 03 E8 */ mulli r4, r3, 0x3e8 /* 80302360 002FDFC0 7C 60 FA 14 */ add r3, r0, r31 /* 80302364 002FDFC4 4B F7 03 A1 */ bl OSSleepTicks /* 80302368 002FDFC8 3B 5A 00 01 */ addi r26, r26, 1 /* 8030236C 002FDFCC 28 1A 00 03 */ cmplwi r26, 3 /* 80302370 002FDFD0 41 80 FF BC */ blt lbl_8030232C lbl_80302374: /* 80302374 002FDFD4 2C 1B FF FC */ cmpwi r27, -4 /* 80302378 002FDFD8 40 82 00 0C */ bne lbl_80302384 /* 8030237C 002FDFDC 38 60 FF DA */ li r3, -38 /* 80302380 002FDFE0 48 00 00 4C */ b lbl_803023CC lbl_80302384: /* 80302384 002FDFE4 2C 1B 00 00 */ cmpwi r27, 0 /* 80302388 002FDFE8 40 80 00 40 */ bge lbl_803023C8 /* 8030238C 002FDFEC 2C 1B FF FB */ cmpwi r27, -5 /* 80302390 002FDFF0 41 82 00 20 */ beq lbl_803023B0 /* 80302394 002FDFF4 40 80 00 10 */ bge lbl_803023A4 /* 80302398 002FDFF8 2C 1B FF F1 */ cmpwi r27, -15 /* 8030239C 002FDFFC 41 82 00 14 */ beq lbl_803023B0 /* 803023A0 002FE000 48 00 00 20 */ b lbl_803023C0 lbl_803023A4: /* 803023A4 002FE004 2C 1B FF FD */ cmpwi r27, -3 /* 803023A8 002FE008 40 80 00 18 */ bge lbl_803023C0 /* 803023AC 002FE00C 48 00 00 0C */ b lbl_803023B8 lbl_803023B0: /* 803023B0 002FE010 38 60 FF D2 */ li r3, -46 /* 803023B4 002FE014 48 00 00 18 */ b lbl_803023CC lbl_803023B8: /* 803023B8 002FE018 38 60 FF DA */ li r3, -38 /* 803023BC 002FE01C 48 00 00 10 */ b lbl_803023CC lbl_803023C0: /* 803023C0 002FE020 38 60 FF EE */ li r3, -18 /* 803023C4 002FE024 48 00 00 08 */ b lbl_803023CC lbl_803023C8: /* 803023C8 002FE028 38 60 00 00 */ li r3, 0 lbl_803023CC: /* 803023CC 002FE02C 39 61 00 30 */ addi r11, r1, 0x30 /* 803023D0 002FE030 4B EC 4D 95 */ bl _restgpr_23 /* 803023D4 002FE034 80 01 00 34 */ lwz r0, 0x34(r1) /* 803023D8 002FE038 7C 08 03 A6 */ mtlr r0 /* 803023DC 002FE03C 38 21 00 30 */ addi r1, r1, 0x30 /* 803023E0 002FE040 4E 80 00 20 */ blr .global NWC24FWrite NWC24FWrite: /* 803023E4 002FE044 94 21 FF D0 */ stwu r1, -0x30(r1) /* 803023E8 002FE048 7C 08 02 A6 */ mflr r0 /* 803023EC 002FE04C 90 01 00 34 */ stw r0, 0x34(r1) /* 803023F0 002FE050 39 61 00 30 */ addi r11, r1, 0x30 /* 803023F4 002FE054 4B EC 4D 25 */ bl _savegpr_23 /* 803023F8 002FE058 80 05 00 04 */ lwz r0, 4(r5) /* 803023FC 002FE05C 7C 77 1B 78 */ mr r23, r3 /* 80302400 002FE060 7C 98 23 78 */ mr r24, r4 /* 80302404 002FE064 7C B9 2B 78 */ mr r25, r5 /* 80302408 002FE068 2C 00 00 0A */ cmpwi r0, 0xa /* 8030240C 002FE06C 41 82 00 4C */ beq lbl_80302458 /* 80302410 002FE070 40 80 00 1C */ bge lbl_8030242C /* 80302414 002FE074 2C 00 00 02 */ cmpwi r0, 2 /* 80302418 002FE078 41 82 00 40 */ beq lbl_80302458 /* 8030241C 002FE07C 41 80 00 44 */ blt lbl_80302460 /* 80302420 002FE080 2C 00 00 09 */ cmpwi r0, 9 /* 80302424 002FE084 40 80 00 20 */ bge lbl_80302444 /* 80302428 002FE088 48 00 00 38 */ b lbl_80302460 lbl_8030242C: /* 8030242C 002FE08C 2C 00 01 09 */ cmpwi r0, 0x109 /* 80302430 002FE090 41 82 00 14 */ beq lbl_80302444 /* 80302434 002FE094 40 80 00 2C */ bge lbl_80302460 /* 80302438 002FE098 2C 00 01 02 */ cmpwi r0, 0x102 /* 8030243C 002FE09C 41 82 00 1C */ beq lbl_80302458 /* 80302440 002FE0A0 48 00 00 20 */ b lbl_80302460 lbl_80302444: /* 80302444 002FE0A4 7E E3 BB 78 */ mr r3, r23 /* 80302448 002FE0A8 7F 04 C3 78 */ mr r4, r24 /* 8030244C 002FE0AC 7F 25 CB 78 */ mr r5, r25 /* 80302450 002FE0B0 48 00 02 25 */ bl BufferedWrite /* 80302454 002FE0B4 48 00 01 4C */ b lbl_803025A0 lbl_80302458: /* 80302458 002FE0B8 38 60 FF F9 */ li r3, -7 /* 8030245C 002FE0BC 48 00 01 44 */ b lbl_803025A0 lbl_80302460: /* 80302460 002FE0C0 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 80302464 002FE0C4 41 82 00 78 */ beq lbl_803024DC /* 80302468 002FE0C8 80 65 00 98 */ lwz r3, 0x98(r5) /* 8030246C 002FE0CC 7E E4 BB 78 */ mr r4, r23 /* 80302470 002FE0D0 7F 05 C3 78 */ mr r5, r24 /* 80302474 002FE0D4 48 01 84 A1 */ bl VFWriteFile /* 80302478 002FE0D8 2C 03 00 00 */ cmpwi r3, 0 /* 8030247C 002FE0DC 41 82 00 58 */ beq lbl_803024D4 /* 80302480 002FE0E0 2C 03 00 05 */ cmpwi r3, 5 /* 80302484 002FE0E4 40 82 00 48 */ bne lbl_803024CC /* 80302488 002FE0E8 38 6D 8C 88 */ addi r3, r13, lbl_8063DF48-_SDA_BASE_ /* 8030248C 002FE0EC 48 01 85 59 */ bl VFGetLastDeviceError /* 80302490 002FE0F0 2C 03 FF FB */ cmpwi r3, -5 /* 80302494 002FE0F4 41 82 00 20 */ beq lbl_803024B4 /* 80302498 002FE0F8 40 80 00 10 */ bge lbl_803024A8 /* 8030249C 002FE0FC 2C 03 FF F1 */ cmpwi r3, -15 /* 803024A0 002FE100 41 82 00 14 */ beq lbl_803024B4 /* 803024A4 002FE104 48 00 00 20 */ b lbl_803024C4 lbl_803024A8: /* 803024A8 002FE108 2C 03 FF FD */ cmpwi r3, -3 /* 803024AC 002FE10C 40 80 00 18 */ bge lbl_803024C4 /* 803024B0 002FE110 48 00 00 0C */ b lbl_803024BC lbl_803024B4: /* 803024B4 002FE114 38 60 FF D2 */ li r3, -46 /* 803024B8 002FE118 48 00 00 E8 */ b lbl_803025A0 lbl_803024BC: /* 803024BC 002FE11C 38 60 FF DA */ li r3, -38 /* 803024C0 002FE120 48 00 00 E0 */ b lbl_803025A0 lbl_803024C4: /* 803024C4 002FE124 38 60 FF ED */ li r3, -19 /* 803024C8 002FE128 48 00 00 D8 */ b lbl_803025A0 lbl_803024CC: /* 803024CC 002FE12C 38 60 FF ED */ li r3, -19 /* 803024D0 002FE130 48 00 00 D0 */ b lbl_803025A0 lbl_803024D4: /* 803024D4 002FE134 38 60 00 00 */ li r3, 0 /* 803024D8 002FE138 48 00 00 C8 */ b lbl_803025A0 lbl_803024DC: /* 803024DC 002FE13C 3B 40 00 00 */ li r26, 0 /* 803024E0 002FE140 3B C0 03 E8 */ li r30, 0x3e8 /* 803024E4 002FE144 7F FA F1 D6 */ mullw r31, r26, r30 /* 803024E8 002FE148 3C 60 10 62 */ lis r3, 0x10624DD3@ha /* 803024EC 002FE14C 3F A0 80 00 */ lis r29, 0x8000 /* 803024F0 002FE150 3B 83 4D D3 */ addi r28, r3, 0x10624DD3@l lbl_803024F4: /* 803024F4 002FE154 7E E4 BB 78 */ mr r4, r23 /* 803024F8 002FE158 7F 05 C3 78 */ mr r5, r24 /* 803024FC 002FE15C 38 79 00 0C */ addi r3, r25, 0xc /* 80302500 002FE160 4B FE 54 A1 */ bl NANDWrite /* 80302504 002FE164 2C 03 FF FD */ cmpwi r3, -3 /* 80302508 002FE168 7C 7B 1B 78 */ mr r27, r3 /* 8030250C 002FE16C 40 82 00 30 */ bne lbl_8030253C /* 80302510 002FE170 80 1D 00 F8 */ lwz r0, 0xf8(r29) /* 80302514 002FE174 54 00 F0 BE */ srwi r0, r0, 2 /* 80302518 002FE178 7C 1C 00 16 */ mulhwu r0, r28, r0 /* 8030251C 002FE17C 54 03 D1 BE */ srwi r3, r0, 6 /* 80302520 002FE180 7C 03 F0 16 */ mulhwu r0, r3, r30 /* 80302524 002FE184 1C 83 03 E8 */ mulli r4, r3, 0x3e8 /* 80302528 002FE188 7C 60 FA 14 */ add r3, r0, r31 /* 8030252C 002FE18C 4B F7 01 D9 */ bl OSSleepTicks /* 80302530 002FE190 3B 5A 00 01 */ addi r26, r26, 1 /* 80302534 002FE194 28 1A 00 03 */ cmplwi r26, 3 /* 80302538 002FE198 41 80 FF BC */ blt lbl_803024F4 lbl_8030253C: /* 8030253C 002FE19C 2C 1B FF FC */ cmpwi r27, -4 /* 80302540 002FE1A0 40 82 00 0C */ bne lbl_8030254C /* 80302544 002FE1A4 38 60 FF DA */ li r3, -38 /* 80302548 002FE1A8 48 00 00 58 */ b lbl_803025A0 lbl_8030254C: /* 8030254C 002FE1AC 2C 1B 00 00 */ cmpwi r27, 0 /* 80302550 002FE1B0 40 80 00 40 */ bge lbl_80302590 /* 80302554 002FE1B4 2C 1B FF FB */ cmpwi r27, -5 /* 80302558 002FE1B8 41 82 00 20 */ beq lbl_80302578 /* 8030255C 002FE1BC 40 80 00 10 */ bge lbl_8030256C /* 80302560 002FE1C0 2C 1B FF F1 */ cmpwi r27, -15 /* 80302564 002FE1C4 41 82 00 14 */ beq lbl_80302578 /* 80302568 002FE1C8 48 00 00 20 */ b lbl_80302588 lbl_8030256C: /* 8030256C 002FE1CC 2C 1B FF FD */ cmpwi r27, -3 /* 80302570 002FE1D0 40 80 00 18 */ bge lbl_80302588 /* 80302574 002FE1D4 48 00 00 0C */ b lbl_80302580 lbl_80302578: /* 80302578 002FE1D8 38 60 FF D2 */ li r3, -46 /* 8030257C 002FE1DC 48 00 00 24 */ b lbl_803025A0 lbl_80302580: /* 80302580 002FE1E0 38 60 FF DA */ li r3, -38 /* 80302584 002FE1E4 48 00 00 1C */ b lbl_803025A0 lbl_80302588: /* 80302588 002FE1E8 38 60 FF ED */ li r3, -19 /* 8030258C 002FE1EC 48 00 00 14 */ b lbl_803025A0 lbl_80302590: /* 80302590 002FE1F0 7C 1B C0 00 */ cmpw r27, r24 /* 80302594 002FE1F4 38 60 00 00 */ li r3, 0 /* 80302598 002FE1F8 41 82 00 08 */ beq lbl_803025A0 /* 8030259C 002FE1FC 38 60 FF ED */ li r3, -19 lbl_803025A0: /* 803025A0 002FE200 39 61 00 30 */ addi r11, r1, 0x30 /* 803025A4 002FE204 4B EC 4B C1 */ bl _restgpr_23 /* 803025A8 002FE208 80 01 00 34 */ lwz r0, 0x34(r1) /* 803025AC 002FE20C 7C 08 03 A6 */ mtlr r0 /* 803025B0 002FE210 38 21 00 30 */ addi r1, r1, 0x30 /* 803025B4 002FE214 4E 80 00 20 */ blr .global NWC24FGetLength NWC24FGetLength: /* 803025B8 002FE218 94 21 FF F0 */ stwu r1, -0x10(r1) /* 803025BC 002FE21C 7C 08 02 A6 */ mflr r0 /* 803025C0 002FE220 90 01 00 14 */ stw r0, 0x14(r1) /* 803025C4 002FE224 93 E1 00 0C */ stw r31, 0xc(r1) /* 803025C8 002FE228 7C 9F 23 78 */ mr r31, r4 /* 803025CC 002FE22C 80 03 00 04 */ lwz r0, 4(r3) /* 803025D0 002FE230 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 803025D4 002FE234 41 82 00 74 */ beq lbl_80302648 /* 803025D8 002FE238 80 63 00 98 */ lwz r3, 0x98(r3) /* 803025DC 002FE23C 48 01 83 C5 */ bl VFGetFileSizeByFd /* 803025E0 002FE240 2C 03 00 00 */ cmpwi r3, 0 /* 803025E4 002FE244 40 80 00 58 */ bge lbl_8030263C /* 803025E8 002FE248 2C 03 00 05 */ cmpwi r3, 5 /* 803025EC 002FE24C 40 82 00 48 */ bne lbl_80302634 /* 803025F0 002FE250 38 6D 8C 88 */ addi r3, r13, lbl_8063DF48-_SDA_BASE_ /* 803025F4 002FE254 48 01 83 F1 */ bl VFGetLastDeviceError /* 803025F8 002FE258 2C 03 FF FB */ cmpwi r3, -5 /* 803025FC 002FE25C 41 82 00 20 */ beq lbl_8030261C /* 80302600 002FE260 40 80 00 10 */ bge lbl_80302610 /* 80302604 002FE264 2C 03 FF F1 */ cmpwi r3, -15 /* 80302608 002FE268 41 82 00 14 */ beq lbl_8030261C /* 8030260C 002FE26C 48 00 00 20 */ b lbl_8030262C lbl_80302610: /* 80302610 002FE270 2C 03 FF FD */ cmpwi r3, -3 /* 80302614 002FE274 40 80 00 18 */ bge lbl_8030262C /* 80302618 002FE278 48 00 00 0C */ b lbl_80302624 lbl_8030261C: /* 8030261C 002FE27C 38 60 FF D2 */ li r3, -46 /* 80302620 002FE280 48 00 00 40 */ b lbl_80302660 lbl_80302624: /* 80302624 002FE284 38 60 FF DA */ li r3, -38 /* 80302628 002FE288 48 00 00 38 */ b lbl_80302660 lbl_8030262C: /* 8030262C 002FE28C 38 60 FF EB */ li r3, -21 /* 80302630 002FE290 48 00 00 30 */ b lbl_80302660 lbl_80302634: /* 80302634 002FE294 38 60 FF EB */ li r3, -21 /* 80302638 002FE298 48 00 00 28 */ b lbl_80302660 lbl_8030263C: /* 8030263C 002FE29C 90 7F 00 00 */ stw r3, 0(r31) /* 80302640 002FE2A0 38 60 00 00 */ li r3, 0 /* 80302644 002FE2A4 48 00 00 1C */ b lbl_80302660 lbl_80302648: /* 80302648 002FE2A8 38 63 00 0C */ addi r3, r3, 0xc /* 8030264C 002FE2AC 4B FE 58 81 */ bl NANDGetLength /* 80302650 002FE2B0 2C 03 00 00 */ cmpwi r3, 0 /* 80302654 002FE2B4 38 60 00 00 */ li r3, 0 /* 80302658 002FE2B8 41 82 00 08 */ beq lbl_80302660 /* 8030265C 002FE2BC 38 60 FF EB */ li r3, -21 lbl_80302660: /* 80302660 002FE2C0 80 01 00 14 */ lwz r0, 0x14(r1) /* 80302664 002FE2C4 83 E1 00 0C */ lwz r31, 0xc(r1) /* 80302668 002FE2C8 7C 08 03 A6 */ mtlr r0 /* 8030266C 002FE2CC 38 21 00 10 */ addi r1, r1, 0x10 /* 80302670 002FE2D0 4E 80 00 20 */ blr .global BufferedWrite BufferedWrite: /* 80302674 002FE2D4 94 21 FF C0 */ stwu r1, -0x40(r1) /* 80302678 002FE2D8 7C 08 02 A6 */ mflr r0 /* 8030267C 002FE2DC 90 01 00 44 */ stw r0, 0x44(r1) /* 80302680 002FE2E0 39 61 00 40 */ addi r11, r1, 0x40 /* 80302684 002FE2E4 4B EC 4A 81 */ bl _savegpr_18 /* 80302688 002FE2E8 80 CD AF 90 */ lwz r6, lbl_80640250-_SDA_BASE_(r13) /* 8030268C 002FE2EC 7C 7B 1B 78 */ mr r27, r3 /* 80302690 002FE2F0 83 A5 00 08 */ lwz r29, 8(r5) /* 80302694 002FE2F4 7C 9E 23 78 */ mr r30, r4 /* 80302698 002FE2F8 7C B7 2B 78 */ mr r23, r5 /* 8030269C 002FE2FC 3B 86 0B 00 */ addi r28, r6, 0xb00 /* 803026A0 002FE300 3B 20 00 00 */ li r25, 0 /* 803026A4 002FE304 3E 40 80 00 */ lis r18, 0x8000 /* 803026A8 002FE308 3E 60 10 62 */ lis r19, 0x1062 /* 803026AC 002FE30C 3A 80 00 00 */ li r20, 0 /* 803026B0 002FE310 3A A0 03 E8 */ li r21, 0x3e8 /* 803026B4 002FE314 48 00 01 28 */ b lbl_803027DC lbl_803026B8: /* 803026B8 002FE318 22 DD 02 00 */ subfic r22, r29, 0x200 /* 803026BC 002FE31C 7C 1E B0 40 */ cmplw r30, r22 /* 803026C0 002FE320 40 80 00 08 */ bge lbl_803026C8 /* 803026C4 002FE324 7F D6 F3 78 */ mr r22, r30 lbl_803026C8: /* 803026C8 002FE328 7F 64 DB 78 */ mr r4, r27 /* 803026CC 002FE32C 7E C5 B3 78 */ mr r5, r22 /* 803026D0 002FE330 7C 7C EA 14 */ add r3, r28, r29 /* 803026D4 002FE334 4B D0 19 2D */ bl memcpy /* 803026D8 002FE338 7F BD B2 14 */ add r29, r29, r22 /* 803026DC 002FE33C 7F D6 F0 50 */ subf r30, r22, r30 /* 803026E0 002FE340 28 1D 02 00 */ cmplwi r29, 0x200 /* 803026E4 002FE344 7F 7B B2 14 */ add r27, r27, r22 /* 803026E8 002FE348 41 80 00 F4 */ blt lbl_803027DC /* 803026EC 002FE34C 80 17 00 04 */ lwz r0, 4(r23) /* 803026F0 002FE350 3B A0 00 00 */ li r29, 0 /* 803026F4 002FE354 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 803026F8 002FE358 41 82 00 70 */ beq lbl_80302768 /* 803026FC 002FE35C 80 77 00 98 */ lwz r3, 0x98(r23) /* 80302700 002FE360 7F 84 E3 78 */ mr r4, r28 /* 80302704 002FE364 38 A0 02 00 */ li r5, 0x200 /* 80302708 002FE368 48 01 82 0D */ bl VFWriteFile /* 8030270C 002FE36C 2C 03 00 00 */ cmpwi r3, 0 /* 80302710 002FE370 41 82 00 CC */ beq lbl_803027DC /* 80302714 002FE374 2C 03 00 05 */ cmpwi r3, 5 /* 80302718 002FE378 40 82 00 48 */ bne lbl_80302760 /* 8030271C 002FE37C 38 6D 8C 88 */ addi r3, r13, lbl_8063DF48-_SDA_BASE_ /* 80302720 002FE380 48 01 82 C5 */ bl VFGetLastDeviceError /* 80302724 002FE384 2C 03 FF FB */ cmpwi r3, -5 /* 80302728 002FE388 41 82 00 20 */ beq lbl_80302748 /* 8030272C 002FE38C 40 80 00 10 */ bge lbl_8030273C /* 80302730 002FE390 2C 03 FF F1 */ cmpwi r3, -15 /* 80302734 002FE394 41 82 00 14 */ beq lbl_80302748 /* 80302738 002FE398 48 00 00 20 */ b lbl_80302758 lbl_8030273C: /* 8030273C 002FE39C 2C 03 FF FD */ cmpwi r3, -3 /* 80302740 002FE3A0 40 80 00 18 */ bge lbl_80302758 /* 80302744 002FE3A4 48 00 00 0C */ b lbl_80302750 lbl_80302748: /* 80302748 002FE3A8 3B 20 FF D2 */ li r25, -46 /* 8030274C 002FE3AC 48 00 00 98 */ b lbl_803027E4 lbl_80302750: /* 80302750 002FE3B0 3B 20 FF DA */ li r25, -38 /* 80302754 002FE3B4 48 00 00 90 */ b lbl_803027E4 lbl_80302758: /* 80302758 002FE3B8 3B 20 FF ED */ li r25, -19 /* 8030275C 002FE3BC 48 00 00 88 */ b lbl_803027E4 lbl_80302760: /* 80302760 002FE3C0 3B 20 FF ED */ li r25, -19 /* 80302764 002FE3C4 48 00 00 80 */ b lbl_803027E4 lbl_80302768: /* 80302768 002FE3C8 7E D4 A9 D6 */ mullw r22, r20, r21 /* 8030276C 002FE3CC 3B F3 4D D3 */ addi r31, r19, 0x4dd3 /* 80302770 002FE3D0 3B 00 00 00 */ li r24, 0 lbl_80302774: /* 80302774 002FE3D4 7F 84 E3 78 */ mr r4, r28 /* 80302778 002FE3D8 38 77 00 0C */ addi r3, r23, 0xc /* 8030277C 002FE3DC 38 A0 02 00 */ li r5, 0x200 /* 80302780 002FE3E0 4B FE 52 21 */ bl NANDWrite /* 80302784 002FE3E4 2C 03 FF FD */ cmpwi r3, -3 /* 80302788 002FE3E8 7C 7A 1B 78 */ mr r26, r3 /* 8030278C 002FE3EC 40 82 00 30 */ bne lbl_803027BC /* 80302790 002FE3F0 80 12 00 F8 */ lwz r0, 0xf8(r18) /* 80302794 002FE3F4 54 00 F0 BE */ srwi r0, r0, 2 /* 80302798 002FE3F8 7C 1F 00 16 */ mulhwu r0, r31, r0 /* 8030279C 002FE3FC 54 03 D1 BE */ srwi r3, r0, 6 /* 803027A0 002FE400 7C 03 A8 16 */ mulhwu r0, r3, r21 /* 803027A4 002FE404 1C 83 03 E8 */ mulli r4, r3, 0x3e8 /* 803027A8 002FE408 7C 60 B2 14 */ add r3, r0, r22 /* 803027AC 002FE40C 4B F6 FF 59 */ bl OSSleepTicks /* 803027B0 002FE410 3B 18 00 01 */ addi r24, r24, 1 /* 803027B4 002FE414 28 18 00 03 */ cmplwi r24, 3 /* 803027B8 002FE418 41 80 FF BC */ blt lbl_80302774 lbl_803027BC: /* 803027BC 002FE41C 2C 1A FF FC */ cmpwi r26, -4 /* 803027C0 002FE420 40 82 00 0C */ bne lbl_803027CC /* 803027C4 002FE424 38 60 FF DA */ li r3, -38 /* 803027C8 002FE428 48 00 00 24 */ b lbl_803027EC lbl_803027CC: /* 803027CC 002FE42C 2C 1A 02 00 */ cmpwi r26, 0x200 /* 803027D0 002FE430 41 82 00 0C */ beq lbl_803027DC /* 803027D4 002FE434 3B 20 FF ED */ li r25, -19 /* 803027D8 002FE438 48 00 00 0C */ b lbl_803027E4 lbl_803027DC: /* 803027DC 002FE43C 2C 1E 00 00 */ cmpwi r30, 0 /* 803027E0 002FE440 40 82 FE D8 */ bne lbl_803026B8 lbl_803027E4: /* 803027E4 002FE444 93 B7 00 08 */ stw r29, 8(r23) /* 803027E8 002FE448 7F 23 CB 78 */ mr r3, r25 lbl_803027EC: /* 803027EC 002FE44C 39 61 00 40 */ addi r11, r1, 0x40 /* 803027F0 002FE450 4B EC 49 61 */ bl _restgpr_18 /* 803027F4 002FE454 80 01 00 44 */ lwz r0, 0x44(r1) /* 803027F8 002FE458 7C 08 03 A6 */ mtlr r0 /* 803027FC 002FE45C 38 21 00 40 */ addi r1, r1, 0x40 /* 80302800 002FE460 4E 80 00 20 */ blr .global BufferedWriteFlush BufferedWriteFlush: /* 80302804 002FE464 94 21 FF D0 */ stwu r1, -0x30(r1) /* 80302808 002FE468 7C 08 02 A6 */ mflr r0 /* 8030280C 002FE46C 90 01 00 34 */ stw r0, 0x34(r1) /* 80302810 002FE470 39 61 00 30 */ addi r11, r1, 0x30 /* 80302814 002FE474 4B EC 49 01 */ bl _savegpr_22 /* 80302818 002FE478 83 E3 00 08 */ lwz r31, 8(r3) /* 8030281C 002FE47C 7C 7C 1B 78 */ mr r28, r3 /* 80302820 002FE480 80 8D AF 90 */ lwz r4, lbl_80640250-_SDA_BASE_(r13) /* 80302824 002FE484 3B A0 00 00 */ li r29, 0 /* 80302828 002FE488 2C 1F 00 00 */ cmpwi r31, 0 /* 8030282C 002FE48C 3B C4 0B 00 */ addi r30, r4, 0xb00 /* 80302830 002FE490 40 82 00 0C */ bne lbl_8030283C /* 80302834 002FE494 38 60 00 00 */ li r3, 0 /* 80302838 002FE498 48 00 01 20 */ b lbl_80302958 lbl_8030283C: /* 8030283C 002FE49C 7C 9E FA 14 */ add r4, r30, r31 /* 80302840 002FE4A0 38 A0 00 00 */ li r5, 0 /* 80302844 002FE4A4 48 00 00 10 */ b lbl_80302854 lbl_80302848: /* 80302848 002FE4A8 98 A4 00 00 */ stb r5, 0(r4) /* 8030284C 002FE4AC 3B FF 00 01 */ addi r31, r31, 1 /* 80302850 002FE4B0 38 84 00 01 */ addi r4, r4, 1 lbl_80302854: /* 80302854 002FE4B4 57 E0 06 FF */ clrlwi. r0, r31, 0x1b /* 80302858 002FE4B8 40 82 FF F0 */ bne lbl_80302848 /* 8030285C 002FE4BC 80 03 00 04 */ lwz r0, 4(r3) /* 80302860 002FE4C0 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 80302864 002FE4C4 41 82 00 74 */ beq lbl_803028D8 /* 80302868 002FE4C8 80 63 00 98 */ lwz r3, 0x98(r3) /* 8030286C 002FE4CC 7F C4 F3 78 */ mr r4, r30 /* 80302870 002FE4D0 7F E5 FB 78 */ mr r5, r31 /* 80302874 002FE4D4 48 01 80 A1 */ bl VFWriteFile /* 80302878 002FE4D8 2C 03 00 00 */ cmpwi r3, 0 /* 8030287C 002FE4DC 41 82 00 54 */ beq lbl_803028D0 /* 80302880 002FE4E0 2C 03 00 05 */ cmpwi r3, 5 /* 80302884 002FE4E4 40 82 00 48 */ bne lbl_803028CC /* 80302888 002FE4E8 38 6D 8C 88 */ addi r3, r13, lbl_8063DF48-_SDA_BASE_ /* 8030288C 002FE4EC 48 01 81 59 */ bl VFGetLastDeviceError /* 80302890 002FE4F0 2C 03 FF FB */ cmpwi r3, -5 /* 80302894 002FE4F4 41 82 00 20 */ beq lbl_803028B4 /* 80302898 002FE4F8 40 80 00 10 */ bge lbl_803028A8 /* 8030289C 002FE4FC 2C 03 FF F1 */ cmpwi r3, -15 /* 803028A0 002FE500 41 82 00 14 */ beq lbl_803028B4 /* 803028A4 002FE504 48 00 00 20 */ b lbl_803028C4 lbl_803028A8: /* 803028A8 002FE508 2C 03 FF FD */ cmpwi r3, -3 /* 803028AC 002FE50C 40 80 00 18 */ bge lbl_803028C4 /* 803028B0 002FE510 48 00 00 0C */ b lbl_803028BC lbl_803028B4: /* 803028B4 002FE514 3B A0 FF D2 */ li r29, -46 /* 803028B8 002FE518 48 00 00 18 */ b lbl_803028D0 lbl_803028BC: /* 803028BC 002FE51C 3B A0 FF DA */ li r29, -38 /* 803028C0 002FE520 48 00 00 10 */ b lbl_803028D0 lbl_803028C4: /* 803028C4 002FE524 3B A0 FF ED */ li r29, -19 /* 803028C8 002FE528 48 00 00 08 */ b lbl_803028D0 lbl_803028CC: /* 803028CC 002FE52C 3B A0 FF ED */ li r29, -19 lbl_803028D0: /* 803028D0 002FE530 7F A3 EB 78 */ mr r3, r29 /* 803028D4 002FE534 48 00 00 84 */ b lbl_80302958 lbl_803028D8: /* 803028D8 002FE538 3A C0 00 00 */ li r22, 0 /* 803028DC 002FE53C 3B 40 03 E8 */ li r26, 0x3e8 /* 803028E0 002FE540 7F 76 D1 D6 */ mullw r27, r22, r26 /* 803028E4 002FE544 3C 60 10 62 */ lis r3, 0x10624DD3@ha /* 803028E8 002FE548 3F 20 80 00 */ lis r25, 0x8000 /* 803028EC 002FE54C 3B 03 4D D3 */ addi r24, r3, 0x10624DD3@l lbl_803028F0: /* 803028F0 002FE550 7F C4 F3 78 */ mr r4, r30 /* 803028F4 002FE554 7F E5 FB 78 */ mr r5, r31 /* 803028F8 002FE558 38 7C 00 0C */ addi r3, r28, 0xc /* 803028FC 002FE55C 4B FE 50 A5 */ bl NANDWrite /* 80302900 002FE560 2C 03 FF FD */ cmpwi r3, -3 /* 80302904 002FE564 7C 77 1B 78 */ mr r23, r3 /* 80302908 002FE568 40 82 00 30 */ bne lbl_80302938 /* 8030290C 002FE56C 80 19 00 F8 */ lwz r0, 0xf8(r25) /* 80302910 002FE570 54 00 F0 BE */ srwi r0, r0, 2 /* 80302914 002FE574 7C 18 00 16 */ mulhwu r0, r24, r0 /* 80302918 002FE578 54 03 D1 BE */ srwi r3, r0, 6 /* 8030291C 002FE57C 7C 03 D0 16 */ mulhwu r0, r3, r26 /* 80302920 002FE580 1C 83 03 E8 */ mulli r4, r3, 0x3e8 /* 80302924 002FE584 7C 60 DA 14 */ add r3, r0, r27 /* 80302928 002FE588 4B F6 FD DD */ bl OSSleepTicks /* 8030292C 002FE58C 3A D6 00 01 */ addi r22, r22, 1 /* 80302930 002FE590 28 16 00 03 */ cmplwi r22, 3 /* 80302934 002FE594 41 80 FF BC */ blt lbl_803028F0 lbl_80302938: /* 80302938 002FE598 2C 17 FF FC */ cmpwi r23, -4 /* 8030293C 002FE59C 40 82 00 0C */ bne lbl_80302948 /* 80302940 002FE5A0 38 60 FF DA */ li r3, -38 /* 80302944 002FE5A4 48 00 00 14 */ b lbl_80302958 lbl_80302948: /* 80302948 002FE5A8 7C 17 F8 40 */ cmplw r23, r31 /* 8030294C 002FE5AC 41 82 00 08 */ beq lbl_80302954 /* 80302950 002FE5B0 3B A0 FF ED */ li r29, -19 lbl_80302954: /* 80302954 002FE5B4 7F A3 EB 78 */ mr r3, r29 lbl_80302958: /* 80302958 002FE5B8 39 61 00 30 */ addi r11, r1, 0x30 /* 8030295C 002FE5BC 4B EC 48 05 */ bl _restgpr_22 /* 80302960 002FE5C0 80 01 00 34 */ lwz r0, 0x34(r1) /* 80302964 002FE5C4 7C 08 03 A6 */ mtlr r0 /* 80302968 002FE5C8 38 21 00 30 */ addi r1, r1, 0x30 /* 8030296C 002FE5CC 4E 80 00 20 */ blr .global BufferedRead BufferedRead: /* 80302970 002FE5D0 94 21 FF A0 */ stwu r1, -0x60(r1) /* 80302974 002FE5D4 7C 08 02 A6 */ mflr r0 /* 80302978 002FE5D8 90 01 00 64 */ stw r0, 0x64(r1) /* 8030297C 002FE5DC 39 61 00 60 */ addi r11, r1, 0x60 /* 80302980 002FE5E0 4B EC 47 79 */ bl _savegpr_15 /* 80302984 002FE5E4 80 0D AF 78 */ lwz r0, lbl_80640238-_SDA_BASE_(r13) /* 80302988 002FE5E8 7C 8F 23 78 */ mr r15, r4 /* 8030298C 002FE5EC 80 8D AF 90 */ lwz r4, lbl_80640250-_SDA_BASE_(r13) /* 80302990 002FE5F0 7C 73 1B 78 */ mr r19, r3 /* 80302994 002FE5F4 2C 00 00 00 */ cmpwi r0, 0 /* 80302998 002FE5F8 7C B0 2B 78 */ mr r16, r5 /* 8030299C 002FE5FC 7D F9 7B 78 */ mr r25, r15 /* 803029A0 002FE600 3A 84 09 00 */ addi r20, r4, 0x900 /* 803029A4 002FE604 3A 40 00 00 */ li r18, 0 /* 803029A8 002FE608 41 82 00 0C */ beq lbl_803029B4 /* 803029AC 002FE60C 38 60 FF EA */ li r3, -22 /* 803029B0 002FE610 48 00 01 90 */ b lbl_80302B40 lbl_803029B4: /* 803029B4 002FE614 80 05 00 00 */ lwz r0, 0(r5) /* 803029B8 002FE618 90 0D AF 78 */ stw r0, lbl_80640238-_SDA_BASE_(r13) /* 803029BC 002FE61C 82 A5 00 08 */ lwz r21, 8(r5) /* 803029C0 002FE620 56 A0 00 01 */ rlwinm. r0, r21, 0, 0, 0 /* 803029C4 002FE624 41 82 00 0C */ beq lbl_803029D0 /* 803029C8 002FE628 38 60 FF D8 */ li r3, -40 /* 803029CC 002FE62C 48 00 01 74 */ b lbl_80302B40 lbl_803029D0: /* 803029D0 002FE630 3F 60 80 00 */ lis r27, 0x8000 /* 803029D4 002FE634 3F 80 10 62 */ lis r28, 0x1062 /* 803029D8 002FE638 3B A0 00 00 */ li r29, 0 /* 803029DC 002FE63C 3B C0 03 E8 */ li r30, 0x3e8 /* 803029E0 002FE640 48 00 01 38 */ b lbl_80302B18 lbl_803029E4: /* 803029E4 002FE644 22 F5 02 00 */ subfic r23, r21, 0x200 /* 803029E8 002FE648 3B 00 02 00 */ li r24, 0x200 /* 803029EC 002FE64C 7C 19 B8 40 */ cmplw r25, r23 /* 803029F0 002FE650 40 80 00 14 */ bge lbl_80302A04 /* 803029F4 002FE654 7C 79 AA 14 */ add r3, r25, r21 /* 803029F8 002FE658 7F 37 CB 78 */ mr r23, r25 /* 803029FC 002FE65C 38 03 00 1F */ addi r0, r3, 0x1f /* 80302A00 002FE660 54 18 00 34 */ rlwinm r24, r0, 0, 0, 0x1a lbl_80302A04: /* 80302A04 002FE664 80 10 00 04 */ lwz r0, 4(r16) /* 80302A08 002FE668 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 /* 80302A0C 002FE66C 41 82 00 7C */ beq lbl_80302A88 /* 80302A10 002FE670 80 70 00 98 */ lwz r3, 0x98(r16) /* 80302A14 002FE674 7E 84 A3 78 */ mr r4, r20 /* 80302A18 002FE678 7F 05 C3 78 */ mr r5, r24 /* 80302A1C 002FE67C 38 C1 00 08 */ addi r6, r1, 8 /* 80302A20 002FE680 48 01 7E 59 */ bl VFReadFile /* 80302A24 002FE684 2C 03 00 00 */ cmpwi r3, 0 /* 80302A28 002FE688 41 82 00 58 */ beq lbl_80302A80 /* 80302A2C 002FE68C 2C 03 00 05 */ cmpwi r3, 5 /* 80302A30 002FE690 40 82 00 48 */ bne lbl_80302A78 /* 80302A34 002FE694 38 6D 8C 88 */ addi r3, r13, lbl_8063DF48-_SDA_BASE_ /* 80302A38 002FE698 48 01 7F AD */ bl VFGetLastDeviceError /* 80302A3C 002FE69C 2C 03 FF FB */ cmpwi r3, -5 /* 80302A40 002FE6A0 41 82 00 20 */ beq lbl_80302A60 /* 80302A44 002FE6A4 40 80 00 10 */ bge lbl_80302A54 /* 80302A48 002FE6A8 2C 03 FF F1 */ cmpwi r3, -15 /* 80302A4C 002FE6AC 41 82 00 14 */ beq lbl_80302A60 /* 80302A50 002FE6B0 48 00 00 20 */ b lbl_80302A70 lbl_80302A54: /* 80302A54 002FE6B4 2C 03 FF FD */ cmpwi r3, -3 /* 80302A58 002FE6B8 40 80 00 18 */ bge lbl_80302A70 /* 80302A5C 002FE6BC 48 00 00 0C */ b lbl_80302A68 lbl_80302A60: /* 80302A60 002FE6C0 3A 40 FF D2 */ li r18, -46 /* 80302A64 002FE6C4 48 00 00 BC */ b lbl_80302B20 lbl_80302A68: /* 80302A68 002FE6C8 3A 40 FF DA */ li r18, -38 /* 80302A6C 002FE6CC 48 00 00 B4 */ b lbl_80302B20 lbl_80302A70: /* 80302A70 002FE6D0 3A 40 FF EE */ li r18, -18 /* 80302A74 002FE6D4 48 00 00 AC */ b lbl_80302B20 lbl_80302A78: /* 80302A78 002FE6D8 3A 40 FF EE */ li r18, -18 /* 80302A7C 002FE6DC 48 00 00 A4 */ b lbl_80302B20 lbl_80302A80: /* 80302A80 002FE6E0 82 C1 00 08 */ lwz r22, 8(r1) /* 80302A84 002FE6E4 48 00 00 68 */ b lbl_80302AEC lbl_80302A88: /* 80302A88 002FE6E8 7F FD F1 D6 */ mullw r31, r29, r30 /* 80302A8C 002FE6EC 3B 5C 4D D3 */ addi r26, r28, 0x4dd3 /* 80302A90 002FE6F0 3A 20 00 00 */ li r17, 0 lbl_80302A94: /* 80302A94 002FE6F4 7E 84 A3 78 */ mr r4, r20 /* 80302A98 002FE6F8 7F 05 C3 78 */ mr r5, r24 /* 80302A9C 002FE6FC 38 70 00 0C */ addi r3, r16, 0xc /* 80302AA0 002FE700 4B FE 4E 21 */ bl NANDRead /* 80302AA4 002FE704 2C 03 FF FD */ cmpwi r3, -3 /* 80302AA8 002FE708 7C 76 1B 78 */ mr r22, r3 /* 80302AAC 002FE70C 40 82 00 30 */ bne lbl_80302ADC /* 80302AB0 002FE710 80 1B 00 F8 */ lwz r0, 0xf8(r27) /* 80302AB4 002FE714 54 00 F0 BE */ srwi r0, r0, 2 /* 80302AB8 002FE718 7C 1A 00 16 */ mulhwu r0, r26, r0 /* 80302ABC 002FE71C 54 03 D1 BE */ srwi r3, r0, 6 /* 80302AC0 002FE720 7C 03 F0 16 */ mulhwu r0, r3, r30 /* 80302AC4 002FE724 1C 83 03 E8 */ mulli r4, r3, 0x3e8 /* 80302AC8 002FE728 7C 60 FA 14 */ add r3, r0, r31 /* 80302ACC 002FE72C 4B F6 FC 39 */ bl OSSleepTicks /* 80302AD0 002FE730 3A 31 00 01 */ addi r17, r17, 1 /* 80302AD4 002FE734 28 11 00 03 */ cmplwi r17, 3 /* 80302AD8 002FE738 41 80 FF BC */ blt lbl_80302A94 lbl_80302ADC: /* 80302ADC 002FE73C 2C 16 FF FC */ cmpwi r22, -4 /* 80302AE0 002FE740 40 82 00 0C */ bne lbl_80302AEC /* 80302AE4 002FE744 38 60 FF DA */ li r3, -38 /* 80302AE8 002FE748 48 00 00 58 */ b lbl_80302B40 lbl_80302AEC: /* 80302AEC 002FE74C 7C 16 C0 40 */ cmplw r22, r24 /* 80302AF0 002FE750 41 82 00 0C */ beq lbl_80302AFC /* 80302AF4 002FE754 3A 40 FF EE */ li r18, -18 /* 80302AF8 002FE758 48 00 00 28 */ b lbl_80302B20 lbl_80302AFC: /* 80302AFC 002FE75C 7E 63 9B 78 */ mr r3, r19 /* 80302B00 002FE760 7E E5 BB 78 */ mr r5, r23 /* 80302B04 002FE764 7C 94 AA 14 */ add r4, r20, r21 /* 80302B08 002FE768 4B D0 14 F9 */ bl memcpy /* 80302B0C 002FE76C 7E 73 BA 14 */ add r19, r19, r23 /* 80302B10 002FE770 7F 37 C8 50 */ subf r25, r23, r25 /* 80302B14 002FE774 3A A0 00 00 */ li r21, 0 lbl_80302B18: /* 80302B18 002FE778 2C 19 00 00 */ cmpwi r25, 0 /* 80302B1C 002FE77C 40 82 FE C8 */ bne lbl_803029E4 lbl_80302B20: /* 80302B20 002FE780 80 90 00 08 */ lwz r4, 8(r16) /* 80302B24 002FE784 38 00 00 00 */ li r0, 0 /* 80302B28 002FE788 7E 43 93 78 */ mr r3, r18 /* 80302B2C 002FE78C 7C 84 7A 14 */ add r4, r4, r15 /* 80302B30 002FE790 54 84 06 FE */ clrlwi r4, r4, 0x1b /* 80302B34 002FE794 64 84 80 00 */ oris r4, r4, 0x8000 /* 80302B38 002FE798 90 90 00 08 */ stw r4, 8(r16) /* 80302B3C 002FE79C 90 0D AF 78 */ stw r0, lbl_80640238-_SDA_BASE_(r13) lbl_80302B40: /* 80302B40 002FE7A0 39 61 00 60 */ addi r11, r1, 0x60 /* 80302B44 002FE7A4 4B EC 46 01 */ bl _restgpr_15 /* 80302B48 002FE7A8 80 01 00 64 */ lwz r0, 0x64(r1) /* 80302B4C 002FE7AC 7C 08 03 A6 */ mtlr r0 /* 80302B50 002FE7B0 38 21 00 60 */ addi r1, r1, 0x60 /* 80302B54 002FE7B4 4E 80 00 20 */ blr