summaryrefslogtreecommitdiff
path: root/asm/SDK/NWC24/NWC24FileAPI.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK/NWC24/NWC24FileAPI.s')
-rw-r--r--asm/SDK/NWC24/NWC24FileAPI.s1227
1 files changed, 1227 insertions, 0 deletions
diff --git a/asm/SDK/NWC24/NWC24FileAPI.s b/asm/SDK/NWC24/NWC24FileAPI.s
new file mode 100644
index 0000000..41f1625
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24FileAPI.s
@@ -0,0 +1,1227 @@
+.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