summaryrefslogtreecommitdiff
path: root/asm/SDK
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK')
-rw-r--r--asm/SDK/DWC/dwc_nonport/dwc_nonport.s8
-rw-r--r--asm/SDK/NWC24/NWC24Config.s371
-rw-r--r--asm/SDK/NWC24/NWC24FileAPI.s1227
-rw-r--r--asm/SDK/NWC24/NWC24MBoxCtrl.s256
-rw-r--r--asm/SDK/NWC24/NWC24Manage.s266
-rw-r--r--asm/SDK/VF/d_vf.s4
6 files changed, 2126 insertions, 6 deletions
diff --git a/asm/SDK/DWC/dwc_nonport/dwc_nonport.s b/asm/SDK/DWC/dwc_nonport/dwc_nonport.s
index fc157f1..c684236 100644
--- a/asm/SDK/DWC/dwc_nonport/dwc_nonport.s
+++ b/asm/SDK/DWC/dwc_nonport/dwc_nonport.s
@@ -25,14 +25,14 @@ DWCi_Np_GetConsoleId:
/* 8033193C 0032D59C 90 0D B0 78 */ stw r0, lbl_80640338-_SDA_BASE_(r13)
/* 80331940 0032D5A0 7C 7A 1B 78 */ mr r26, r3
/* 80331944 0032D5A4 41 82 00 08 */ beq lbl_8033194C
-/* 80331948 0032D5A8 4B FE 8B 6D */ bl VFInitEx
+/* 80331948 0032D5A8 4B FE 8B 6D */ bl VFInit
lbl_8033194C:
/* 8033194C 0032D5AC 3C 60 10 62 */ lis r3, 0x10624DD3@ha
/* 80331950 0032D5B0 3F E0 80 00 */ lis r31, 0x8000
/* 80331954 0032D5B4 3B C3 4D D3 */ addi r30, r3, 0x10624DD3@l
lbl_80331958:
/* 80331958 0032D5B8 7F 43 D3 78 */ mr r3, r26
-/* 8033195C 0032D5BC 4B FD 17 31 */ bl func_8030308C
+/* 8033195C 0032D5BC 4B FD 17 31 */ bl NWC24OpenLib
/* 80331960 0032D5C0 2C 03 FF E6 */ cmpwi r3, -26
/* 80331964 0032D5C4 7C 7B 1B 78 */ mr r27, r3
/* 80331968 0032D5C8 40 82 00 20 */ bne lbl_80331988
@@ -50,7 +50,7 @@ lbl_80331988:
/* 80331994 0032D5F4 40 82 00 50 */ bne lbl_803319E4
lbl_80331998:
/* 80331998 0032D5F8 38 6D B0 80 */ addi r3, r13, lbl_80640340-_SDA_BASE_
-/* 8033199C 0032D5FC 4B FD 11 BD */ bl func_80302B58
+/* 8033199C 0032D5FC 4B FD 11 BD */ bl NWC24GetMyUserId
/* 803319A0 0032D600 2C 03 00 00 */ cmpwi r3, 0
/* 803319A4 0032D604 40 82 00 20 */ bne lbl_803319C4
/* 803319A8 0032D608 80 AD B0 80 */ lwz r5, lbl_80640340-_SDA_BASE_(r13)
@@ -81,7 +81,7 @@ lbl_803319E4:
lbl_80331A04:
/* 80331A04 0032D664 2C 1B 00 00 */ cmpwi r27, 0
/* 80331A08 0032D668 40 82 00 08 */ bne lbl_80331A10
-/* 80331A0C 0032D66C 4B FD 18 6D */ bl func_80303278
+/* 80331A0C 0032D66C 4B FD 18 6D */ bl NWC24CloseLib
lbl_80331A10:
/* 80331A10 0032D670 2C 1D 00 01 */ cmpwi r29, 1
/* 80331A14 0032D674 41 82 00 08 */ beq lbl_80331A1C
diff --git a/asm/SDK/NWC24/NWC24Config.s b/asm/SDK/NWC24/NWC24Config.s
new file mode 100644
index 0000000..c01032d
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24Config.s
@@ -0,0 +1,371 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24GetMyUserId
+NWC24GetMyUserId:
+/* 80302B58 002FE7B8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80302B5C 002FE7BC 7C 08 02 A6 */ mflr r0
+/* 80302B60 002FE7C0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80302B64 002FE7C4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80302B68 002FE7C8 3B E0 00 00 */ li r31, 0
+/* 80302B6C 002FE7CC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80302B70 002FE7D0 7C 7E 1B 78 */ mr r30, r3
+/* 80302B74 002FE7D4 48 00 07 71 */ bl NWC24IsMsgLibOpened
+/* 80302B78 002FE7D8 2C 03 00 00 */ cmpwi r3, 0
+/* 80302B7C 002FE7DC 40 82 00 10 */ bne lbl_80302B8C
+/* 80302B80 002FE7E0 48 00 07 79 */ bl NWC24IsMsgLibOpenedByTool
+/* 80302B84 002FE7E4 2C 03 00 00 */ cmpwi r3, 0
+/* 80302B88 002FE7E8 41 82 00 1C */ beq lbl_80302BA4
+lbl_80302B8C:
+/* 80302B8C 002FE7EC 80 6D AF 88 */ lwz r3, lbl_80640248-_SDA_BASE_(r13)
+/* 80302B90 002FE7F0 80 03 00 08 */ lwz r0, 8(r3)
+/* 80302B94 002FE7F4 80 63 00 0C */ lwz r3, 0xc(r3)
+/* 80302B98 002FE7F8 90 7E 00 04 */ stw r3, 4(r30)
+/* 80302B9C 002FE7FC 90 1E 00 00 */ stw r0, 0(r30)
+/* 80302BA0 002FE800 48 00 00 B0 */ b lbl_80302C50
+lbl_80302BA4:
+/* 80302BA4 002FE804 48 00 0E 51 */ bl func_803039F4
+/* 80302BA8 002FE808 2C 03 00 00 */ cmpwi r3, 0
+/* 80302BAC 002FE80C 40 80 00 08 */ bge lbl_80302BB4
+/* 80302BB0 002FE810 48 00 00 A4 */ b lbl_80302C54
+lbl_80302BB4:
+/* 80302BB4 002FE814 38 60 00 01 */ li r3, 1
+/* 80302BB8 002FE818 48 00 07 55 */ bl NWC24BlockOpenMsgLib
+/* 80302BBC 002FE81C 2C 03 00 00 */ cmpwi r3, 0
+/* 80302BC0 002FE820 40 80 00 08 */ bge lbl_80302BC8
+/* 80302BC4 002FE824 48 00 00 5C */ b lbl_80302C20
+lbl_80302BC8:
+/* 80302BC8 002FE828 38 00 00 00 */ li r0, 0
+/* 80302BCC 002FE82C 2C 1E 00 00 */ cmpwi r30, 0
+/* 80302BD0 002FE830 90 01 00 08 */ stw r0, 8(r1)
+/* 80302BD4 002FE834 40 82 00 0C */ bne lbl_80302BE0
+/* 80302BD8 002FE838 3B E0 FF FD */ li r31, -3
+/* 80302BDC 002FE83C 48 00 00 2C */ b lbl_80302C08
+lbl_80302BE0:
+/* 80302BE0 002FE840 3C 60 6F C1 */ lis r3, 0x6FC0FFFF@ha
+/* 80302BE4 002FE844 3C 80 00 24 */ lis r4, 0x002386F2@ha
+/* 80302BE8 002FE848 38 A3 FF FF */ addi r5, r3, 0x6FC0FFFF@l
+/* 80302BEC 002FE84C 38 04 86 F2 */ addi r0, r4, 0x002386F2@l
+/* 80302BF0 002FE850 90 BE 00 04 */ stw r5, 4(r30)
+/* 80302BF4 002FE854 7F C3 F3 78 */ mr r3, r30
+/* 80302BF8 002FE858 38 81 00 08 */ addi r4, r1, 8
+/* 80302BFC 002FE85C 90 1E 00 00 */ stw r0, 0(r30)
+/* 80302C00 002FE860 48 00 0F B5 */ bl func_80303BB4
+/* 80302C04 002FE864 7C 7F 1B 78 */ mr r31, r3
+lbl_80302C08:
+/* 80302C08 002FE868 38 60 00 00 */ li r3, 0
+/* 80302C0C 002FE86C 48 00 07 01 */ bl NWC24BlockOpenMsgLib
+/* 80302C10 002FE870 2C 1F 00 00 */ cmpwi r31, 0
+/* 80302C14 002FE874 41 80 00 08 */ blt lbl_80302C1C
+/* 80302C18 002FE878 7C 7F 1B 78 */ mr r31, r3
+lbl_80302C1C:
+/* 80302C1C 002FE87C 7F E3 FB 78 */ mr r3, r31
+lbl_80302C20:
+/* 80302C20 002FE880 38 03 00 24 */ addi r0, r3, 0x24
+/* 80302C24 002FE884 7C 7F 1B 78 */ mr r31, r3
+/* 80302C28 002FE888 28 00 00 01 */ cmplwi r0, 1
+/* 80302C2C 002FE88C 41 81 00 08 */ bgt lbl_80302C34
+/* 80302C30 002FE890 3B E0 00 00 */ li r31, 0
+lbl_80302C34:
+/* 80302C34 002FE894 48 00 0E 91 */ bl func_80303AC4
+/* 80302C38 002FE898 2C 03 00 00 */ cmpwi r3, 0
+/* 80302C3C 002FE89C 40 80 00 14 */ bge lbl_80302C50
+/* 80302C40 002FE8A0 2C 1F 00 00 */ cmpwi r31, 0
+/* 80302C44 002FE8A4 41 82 00 08 */ beq lbl_80302C4C
+/* 80302C48 002FE8A8 7F E3 FB 78 */ mr r3, r31
+lbl_80302C4C:
+/* 80302C4C 002FE8AC 7C 7F 1B 78 */ mr r31, r3
+lbl_80302C50:
+/* 80302C50 002FE8B0 7F E3 FB 78 */ mr r3, r31
+lbl_80302C54:
+/* 80302C54 002FE8B4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80302C58 002FE8B8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80302C5C 002FE8BC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80302C60 002FE8C0 7C 08 03 A6 */ mtlr r0
+/* 80302C64 002FE8C4 38 21 00 20 */ addi r1, r1, 0x20
+/* 80302C68 002FE8C8 4E 80 00 20 */ blr
+
+.global NWC24iConfigOpen
+NWC24iConfigOpen:
+/* 80302C6C 002FE8CC 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80302C70 002FE8D0 38 00 00 00 */ li r0, 0
+/* 80302C74 002FE8D4 90 0D AF 8C */ stw r0, lbl_8064024C-_SDA_BASE_(r13)
+/* 80302C78 002FE8D8 38 03 0D 00 */ addi r0, r3, 0xd00
+/* 80302C7C 002FE8DC 90 0D AF 88 */ stw r0, lbl_80640248-_SDA_BASE_(r13)
+/* 80302C80 002FE8E0 48 00 00 04 */ b NWC24iConfigReload
+
+NWC24iConfigReload:
+/* 80302C84 002FE8E4 94 21 FF 50 */ stwu r1, -0xb0(r1)
+/* 80302C88 002FE8E8 7C 08 02 A6 */ mflr r0
+/* 80302C8C 002FE8EC 90 01 00 B4 */ stw r0, 0xb4(r1)
+/* 80302C90 002FE8F0 93 E1 00 AC */ stw r31, 0xac(r1)
+/* 80302C94 002FE8F4 80 0D AF 90 */ lwz r0, lbl_80640250-_SDA_BASE_(r13)
+/* 80302C98 002FE8F8 2C 00 00 00 */ cmpwi r0, 0
+/* 80302C9C 002FE8FC 40 82 00 0C */ bne lbl_80302CA8
+/* 80302CA0 002FE900 38 60 FF F7 */ li r3, -9
+/* 80302CA4 002FE904 48 00 00 C0 */ b lbl_80302D64
+lbl_80302CA8:
+/* 80302CA8 002FE908 80 8D 8C 94 */ lwz r4, lbl_8063DF54-_SDA_BASE_(r13)
+/* 80302CAC 002FE90C 38 61 00 08 */ addi r3, r1, 8
+/* 80302CB0 002FE910 38 A0 00 02 */ li r5, 2
+/* 80302CB4 002FE914 4B FF EE 95 */ bl NWC24FOpen
+/* 80302CB8 002FE918 2C 03 00 00 */ cmpwi r3, 0
+/* 80302CBC 002FE91C 40 82 00 2C */ bne lbl_80302CE8
+/* 80302CC0 002FE920 80 6D AF 88 */ lwz r3, lbl_80640248-_SDA_BASE_(r13)
+/* 80302CC4 002FE924 38 A1 00 08 */ addi r5, r1, 8
+/* 80302CC8 002FE928 38 80 04 00 */ li r4, 0x400
+/* 80302CCC 002FE92C 4B FF F5 4D */ bl NWC24FRead
+/* 80302CD0 002FE930 7C 7F 1B 78 */ mr r31, r3
+/* 80302CD4 002FE934 38 61 00 08 */ addi r3, r1, 8
+/* 80302CD8 002FE938 4B FF F1 C1 */ bl NWC24FClose
+/* 80302CDC 002FE93C 2C 1F 00 00 */ cmpwi r31, 0
+/* 80302CE0 002FE940 41 82 00 08 */ beq lbl_80302CE8
+/* 80302CE4 002FE944 7F E3 FB 78 */ mr r3, r31
+lbl_80302CE8:
+/* 80302CE8 002FE948 2C 03 00 00 */ cmpwi r3, 0
+/* 80302CEC 002FE94C 40 82 00 1C */ bne lbl_80302D08
+/* 80302CF0 002FE950 48 00 02 79 */ bl CheckConfig
+/* 80302CF4 002FE954 2C 03 00 00 */ cmpwi r3, 0
+/* 80302CF8 002FE958 40 82 00 10 */ bne lbl_80302D08
+/* 80302CFC 002FE95C 38 00 00 00 */ li r0, 0
+/* 80302D00 002FE960 90 0D AF 8C */ stw r0, lbl_8064024C-_SDA_BASE_(r13)
+/* 80302D04 002FE964 48 00 00 60 */ b lbl_80302D64
+lbl_80302D08:
+/* 80302D08 002FE968 80 8D 8C 98 */ lwz r4, lbl_8063DF58-_SDA_BASE_(r13)
+/* 80302D0C 002FE96C 38 61 00 08 */ addi r3, r1, 8
+/* 80302D10 002FE970 38 A0 00 02 */ li r5, 2
+/* 80302D14 002FE974 4B FF EE 35 */ bl NWC24FOpen
+/* 80302D18 002FE978 2C 03 00 00 */ cmpwi r3, 0
+/* 80302D1C 002FE97C 40 82 00 2C */ bne lbl_80302D48
+/* 80302D20 002FE980 80 6D AF 88 */ lwz r3, lbl_80640248-_SDA_BASE_(r13)
+/* 80302D24 002FE984 38 A1 00 08 */ addi r5, r1, 8
+/* 80302D28 002FE988 38 80 04 00 */ li r4, 0x400
+/* 80302D2C 002FE98C 4B FF F4 ED */ bl NWC24FRead
+/* 80302D30 002FE990 7C 7F 1B 78 */ mr r31, r3
+/* 80302D34 002FE994 38 61 00 08 */ addi r3, r1, 8
+/* 80302D38 002FE998 4B FF F1 61 */ bl NWC24FClose
+/* 80302D3C 002FE99C 2C 1F 00 00 */ cmpwi r31, 0
+/* 80302D40 002FE9A0 41 82 00 08 */ beq lbl_80302D48
+/* 80302D44 002FE9A4 7F E3 FB 78 */ mr r3, r31
+lbl_80302D48:
+/* 80302D48 002FE9A8 2C 03 00 00 */ cmpwi r3, 0
+/* 80302D4C 002FE9AC 40 82 00 18 */ bne lbl_80302D64
+/* 80302D50 002FE9B0 48 00 02 19 */ bl CheckConfig
+/* 80302D54 002FE9B4 2C 03 00 00 */ cmpwi r3, 0
+/* 80302D58 002FE9B8 40 82 00 0C */ bne lbl_80302D64
+/* 80302D5C 002FE9BC 38 00 00 01 */ li r0, 1
+/* 80302D60 002FE9C0 90 0D AF 8C */ stw r0, lbl_8064024C-_SDA_BASE_(r13)
+lbl_80302D64:
+/* 80302D64 002FE9C4 80 01 00 B4 */ lwz r0, 0xb4(r1)
+/* 80302D68 002FE9C8 83 E1 00 AC */ lwz r31, 0xac(r1)
+/* 80302D6C 002FE9CC 7C 08 03 A6 */ mtlr r0
+/* 80302D70 002FE9D0 38 21 00 B0 */ addi r1, r1, 0xb0
+/* 80302D74 002FE9D4 4E 80 00 20 */ blr
+
+.global NWC24iConfigFlush
+NWC24iConfigFlush:
+/* 80302D78 002FE9D8 94 21 FF 50 */ stwu r1, -0xb0(r1)
+/* 80302D7C 002FE9DC 7C 08 02 A6 */ mflr r0
+/* 80302D80 002FE9E0 90 01 00 B4 */ stw r0, 0xb4(r1)
+/* 80302D84 002FE9E4 93 E1 00 AC */ stw r31, 0xac(r1)
+/* 80302D88 002FE9E8 80 0D AF 90 */ lwz r0, lbl_80640250-_SDA_BASE_(r13)
+/* 80302D8C 002FE9EC 2C 00 00 00 */ cmpwi r0, 0
+/* 80302D90 002FE9F0 40 82 00 0C */ bne lbl_80302D9C
+/* 80302D94 002FE9F4 38 60 FF F7 */ li r3, -9
+/* 80302D98 002FE9F8 48 00 01 4C */ b lbl_80302EE4
+lbl_80302D9C:
+/* 80302D9C 002FE9FC 80 0D AF 8C */ lwz r0, lbl_8064024C-_SDA_BASE_(r13)
+/* 80302DA0 002FEA00 2C 00 00 00 */ cmpwi r0, 0
+/* 80302DA4 002FEA04 40 82 00 0C */ bne lbl_80302DB0
+/* 80302DA8 002FEA08 38 60 00 00 */ li r3, 0
+/* 80302DAC 002FEA0C 48 00 01 38 */ b lbl_80302EE4
+lbl_80302DB0:
+/* 80302DB0 002FEA10 81 0D AF 88 */ lwz r8, lbl_80640248-_SDA_BASE_(r13)
+/* 80302DB4 002FEA14 38 00 00 1F */ li r0, 0x1f
+/* 80302DB8 002FEA18 38 E0 00 00 */ li r7, 0
+/* 80302DBC 002FEA1C 7D 06 43 78 */ mr r6, r8
+/* 80302DC0 002FEA20 7C 09 03 A6 */ mtctr r0
+lbl_80302DC4:
+/* 80302DC4 002FEA24 80 66 00 00 */ lwz r3, 0(r6)
+/* 80302DC8 002FEA28 80 06 00 04 */ lwz r0, 4(r6)
+/* 80302DCC 002FEA2C 7C E7 1A 14 */ add r7, r7, r3
+/* 80302DD0 002FEA30 80 66 00 08 */ lwz r3, 8(r6)
+/* 80302DD4 002FEA34 7C E7 02 14 */ add r7, r7, r0
+/* 80302DD8 002FEA38 80 06 00 0C */ lwz r0, 0xc(r6)
+/* 80302DDC 002FEA3C 7C E7 1A 14 */ add r7, r7, r3
+/* 80302DE0 002FEA40 80 66 00 10 */ lwz r3, 0x10(r6)
+/* 80302DE4 002FEA44 7C E7 02 14 */ add r7, r7, r0
+/* 80302DE8 002FEA48 80 06 00 14 */ lwz r0, 0x14(r6)
+/* 80302DEC 002FEA4C 7C E7 1A 14 */ add r7, r7, r3
+/* 80302DF0 002FEA50 80 66 00 18 */ lwz r3, 0x18(r6)
+/* 80302DF4 002FEA54 7C E7 02 14 */ add r7, r7, r0
+/* 80302DF8 002FEA58 80 06 00 1C */ lwz r0, 0x1c(r6)
+/* 80302DFC 002FEA5C 7C E7 1A 14 */ add r7, r7, r3
+/* 80302E00 002FEA60 38 C6 00 20 */ addi r6, r6, 0x20
+/* 80302E04 002FEA64 7C E7 02 14 */ add r7, r7, r0
+/* 80302E08 002FEA68 42 00 FF BC */ bdnz lbl_80302DC4
+/* 80302E0C 002FEA6C 80 06 00 00 */ lwz r0, 0(r6)
+/* 80302E10 002FEA70 38 61 00 08 */ addi r3, r1, 8
+/* 80302E14 002FEA74 80 86 00 04 */ lwz r4, 4(r6)
+/* 80302E18 002FEA78 38 A0 00 01 */ li r5, 1
+/* 80302E1C 002FEA7C 7C E7 02 14 */ add r7, r7, r0
+/* 80302E20 002FEA80 80 06 00 08 */ lwz r0, 8(r6)
+/* 80302E24 002FEA84 7C E7 22 14 */ add r7, r7, r4
+/* 80302E28 002FEA88 80 86 00 0C */ lwz r4, 0xc(r6)
+/* 80302E2C 002FEA8C 7C E7 02 14 */ add r7, r7, r0
+/* 80302E30 002FEA90 80 06 00 10 */ lwz r0, 0x10(r6)
+/* 80302E34 002FEA94 7C E7 22 14 */ add r7, r7, r4
+/* 80302E38 002FEA98 80 86 00 14 */ lwz r4, 0x14(r6)
+/* 80302E3C 002FEA9C 7C E7 02 14 */ add r7, r7, r0
+/* 80302E40 002FEAA0 80 06 00 18 */ lwz r0, 0x18(r6)
+/* 80302E44 002FEAA4 7C E7 22 14 */ add r7, r7, r4
+/* 80302E48 002FEAA8 7C E7 02 14 */ add r7, r7, r0
+/* 80302E4C 002FEAAC 90 E8 03 FC */ stw r7, 0x3fc(r8)
+/* 80302E50 002FEAB0 80 8D 8C 94 */ lwz r4, lbl_8063DF54-_SDA_BASE_(r13)
+/* 80302E54 002FEAB4 4B FF EC F5 */ bl NWC24FOpen
+/* 80302E58 002FEAB8 2C 03 00 00 */ cmpwi r3, 0
+/* 80302E5C 002FEABC 40 82 00 34 */ bne lbl_80302E90
+/* 80302E60 002FEAC0 80 6D AF 88 */ lwz r3, lbl_80640248-_SDA_BASE_(r13)
+/* 80302E64 002FEAC4 38 A1 00 08 */ addi r5, r1, 8
+/* 80302E68 002FEAC8 38 80 04 00 */ li r4, 0x400
+/* 80302E6C 002FEACC 4B FF F5 79 */ bl NWC24FWrite
+/* 80302E70 002FEAD0 7C 7F 1B 78 */ mr r31, r3
+/* 80302E74 002FEAD4 38 61 00 08 */ addi r3, r1, 8
+/* 80302E78 002FEAD8 4B FF F0 21 */ bl NWC24FClose
+/* 80302E7C 002FEADC 2C 1F 00 00 */ cmpwi r31, 0
+/* 80302E80 002FEAE0 41 82 00 08 */ beq lbl_80302E88
+/* 80302E84 002FEAE4 7F E3 FB 78 */ mr r3, r31
+lbl_80302E88:
+/* 80302E88 002FEAE8 38 00 00 00 */ li r0, 0
+/* 80302E8C 002FEAEC 90 0D AF 8C */ stw r0, lbl_8064024C-_SDA_BASE_(r13)
+lbl_80302E90:
+/* 80302E90 002FEAF0 2C 03 00 00 */ cmpwi r3, 0
+/* 80302E94 002FEAF4 41 82 00 08 */ beq lbl_80302E9C
+/* 80302E98 002FEAF8 48 00 00 4C */ b lbl_80302EE4
+lbl_80302E9C:
+/* 80302E9C 002FEAFC 80 8D 8C 98 */ lwz r4, lbl_8063DF58-_SDA_BASE_(r13)
+/* 80302EA0 002FEB00 38 61 00 08 */ addi r3, r1, 8
+/* 80302EA4 002FEB04 38 A0 00 01 */ li r5, 1
+/* 80302EA8 002FEB08 4B FF EC A1 */ bl NWC24FOpen
+/* 80302EAC 002FEB0C 2C 03 00 00 */ cmpwi r3, 0
+/* 80302EB0 002FEB10 40 82 00 34 */ bne lbl_80302EE4
+/* 80302EB4 002FEB14 80 6D AF 88 */ lwz r3, lbl_80640248-_SDA_BASE_(r13)
+/* 80302EB8 002FEB18 38 A1 00 08 */ addi r5, r1, 8
+/* 80302EBC 002FEB1C 38 80 04 00 */ li r4, 0x400
+/* 80302EC0 002FEB20 4B FF F5 25 */ bl NWC24FWrite
+/* 80302EC4 002FEB24 7C 7F 1B 78 */ mr r31, r3
+/* 80302EC8 002FEB28 38 61 00 08 */ addi r3, r1, 8
+/* 80302ECC 002FEB2C 4B FF EF CD */ bl NWC24FClose
+/* 80302ED0 002FEB30 2C 1F 00 00 */ cmpwi r31, 0
+/* 80302ED4 002FEB34 41 82 00 08 */ beq lbl_80302EDC
+/* 80302ED8 002FEB38 7F E3 FB 78 */ mr r3, r31
+lbl_80302EDC:
+/* 80302EDC 002FEB3C 38 00 00 00 */ li r0, 0
+/* 80302EE0 002FEB40 90 0D AF 8C */ stw r0, lbl_8064024C-_SDA_BASE_(r13)
+lbl_80302EE4:
+/* 80302EE4 002FEB44 80 01 00 B4 */ lwz r0, 0xb4(r1)
+/* 80302EE8 002FEB48 83 E1 00 AC */ lwz r31, 0xac(r1)
+/* 80302EEC 002FEB4C 7C 08 03 A6 */ mtlr r0
+/* 80302EF0 002FEB50 38 21 00 B0 */ addi r1, r1, 0xb0
+/* 80302EF4 002FEB54 4E 80 00 20 */ blr
+
+.global NWC24GetMBoxDir
+NWC24GetMBoxDir:
+/* 80302EF8 002FEB58 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80302EFC 002FEB5C 7C 08 02 A6 */ mflr r0
+/* 80302F00 002FEB60 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80302F04 002FEB64 38 61 00 08 */ addi r3, r1, 8
+/* 80302F08 002FEB68 4B F6 55 B9 */ bl __OSGetIOSRev
+/* 80302F0C 002FEB6C 88 01 00 09 */ lbz r0, 9(r1)
+/* 80302F10 002FEB70 2C 00 00 00 */ cmpwi r0, 0
+/* 80302F14 002FEB74 40 82 00 40 */ bne lbl_80302F54
+/* 80302F18 002FEB78 88 61 00 0A */ lbz r3, 0xa(r1)
+/* 80302F1C 002FEB7C 28 03 00 07 */ cmplwi r3, 7
+/* 80302F20 002FEB80 40 82 00 10 */ bne lbl_80302F30
+/* 80302F24 002FEB84 88 01 00 0B */ lbz r0, 0xb(r1)
+/* 80302F28 002FEB88 2C 00 00 00 */ cmpwi r0, 0
+/* 80302F2C 002FEB8C 41 82 00 0C */ beq lbl_80302F38
+lbl_80302F30:
+/* 80302F30 002FEB90 28 03 00 07 */ cmplwi r3, 7
+/* 80302F34 002FEB94 40 80 00 20 */ bge lbl_80302F54
+lbl_80302F38:
+/* 80302F38 002FEB98 3C 60 80 44 */ lis r3, lbl_80446354@ha
+/* 80302F3C 002FEB9C 3C A0 80 44 */ lis r5, lbl_80446364@ha
+/* 80302F40 002FEBA0 38 63 63 54 */ addi r3, r3, lbl_80446354@l
+/* 80302F44 002FEBA4 38 80 02 9A */ li r4, 0x29a
+/* 80302F48 002FEBA8 38 A5 63 64 */ addi r5, r5, lbl_80446364@l
+/* 80302F4C 002FEBAC 4C C6 31 82 */ crclr 6
+/* 80302F50 002FEBB0 4B F6 85 4D */ bl OSPanic
+lbl_80302F54:
+/* 80302F54 002FEBB4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80302F58 002FEBB8 80 6D 8C 90 */ lwz r3, lbl_8063DF50-_SDA_BASE_(r13)
+/* 80302F5C 002FEBBC 7C 08 03 A6 */ mtlr r0
+/* 80302F60 002FEBC0 38 21 00 10 */ addi r1, r1, 0x10
+/* 80302F64 002FEBC4 4E 80 00 20 */ blr
+
+.global CheckConfig
+CheckConfig:
+/* 80302F68 002FEBC8 80 CD AF 88 */ lwz r6, lbl_80640248-_SDA_BASE_(r13)
+/* 80302F6C 002FEBCC 80 66 00 00 */ lwz r3, 0(r6)
+/* 80302F70 002FEBD0 3C 03 A8 9D */ addis r0, r3, 0xa89d
+/* 80302F74 002FEBD4 28 00 43 66 */ cmplwi r0, 0x4366
+/* 80302F78 002FEBD8 41 82 00 0C */ beq lbl_80302F84
+/* 80302F7C 002FEBDC 38 60 FF F2 */ li r3, -14
+/* 80302F80 002FEBE0 4E 80 00 20 */ blr
+lbl_80302F84:
+/* 80302F84 002FEBE4 38 00 00 1F */ li r0, 0x1f
+/* 80302F88 002FEBE8 7C C4 33 78 */ mr r4, r6
+/* 80302F8C 002FEBEC 38 A0 00 00 */ li r5, 0
+/* 80302F90 002FEBF0 7C 09 03 A6 */ mtctr r0
+lbl_80302F94:
+/* 80302F94 002FEBF4 80 64 00 00 */ lwz r3, 0(r4)
+/* 80302F98 002FEBF8 80 04 00 04 */ lwz r0, 4(r4)
+/* 80302F9C 002FEBFC 7C A5 1A 14 */ add r5, r5, r3
+/* 80302FA0 002FEC00 80 64 00 08 */ lwz r3, 8(r4)
+/* 80302FA4 002FEC04 7C A5 02 14 */ add r5, r5, r0
+/* 80302FA8 002FEC08 80 04 00 0C */ lwz r0, 0xc(r4)
+/* 80302FAC 002FEC0C 7C A5 1A 14 */ add r5, r5, r3
+/* 80302FB0 002FEC10 80 64 00 10 */ lwz r3, 0x10(r4)
+/* 80302FB4 002FEC14 7C A5 02 14 */ add r5, r5, r0
+/* 80302FB8 002FEC18 80 04 00 14 */ lwz r0, 0x14(r4)
+/* 80302FBC 002FEC1C 7C A5 1A 14 */ add r5, r5, r3
+/* 80302FC0 002FEC20 80 64 00 18 */ lwz r3, 0x18(r4)
+/* 80302FC4 002FEC24 7C A5 02 14 */ add r5, r5, r0
+/* 80302FC8 002FEC28 80 04 00 1C */ lwz r0, 0x1c(r4)
+/* 80302FCC 002FEC2C 7C A5 1A 14 */ add r5, r5, r3
+/* 80302FD0 002FEC30 38 84 00 20 */ addi r4, r4, 0x20
+/* 80302FD4 002FEC34 7C A5 02 14 */ add r5, r5, r0
+/* 80302FD8 002FEC38 42 00 FF BC */ bdnz lbl_80302F94
+/* 80302FDC 002FEC3C 80 64 00 00 */ lwz r3, 0(r4)
+/* 80302FE0 002FEC40 80 04 00 04 */ lwz r0, 4(r4)
+/* 80302FE4 002FEC44 7C A5 1A 14 */ add r5, r5, r3
+/* 80302FE8 002FEC48 80 64 00 08 */ lwz r3, 8(r4)
+/* 80302FEC 002FEC4C 7C A5 02 14 */ add r5, r5, r0
+/* 80302FF0 002FEC50 80 04 00 0C */ lwz r0, 0xc(r4)
+/* 80302FF4 002FEC54 7C A5 1A 14 */ add r5, r5, r3
+/* 80302FF8 002FEC58 80 64 00 10 */ lwz r3, 0x10(r4)
+/* 80302FFC 002FEC5C 7C A5 02 14 */ add r5, r5, r0
+/* 80303000 002FEC60 80 04 00 14 */ lwz r0, 0x14(r4)
+/* 80303004 002FEC64 7C A5 1A 14 */ add r5, r5, r3
+/* 80303008 002FEC68 80 64 00 18 */ lwz r3, 0x18(r4)
+/* 8030300C 002FEC6C 7C A5 02 14 */ add r5, r5, r0
+/* 80303010 002FEC70 80 06 03 FC */ lwz r0, 0x3fc(r6)
+/* 80303014 002FEC74 7C A5 1A 14 */ add r5, r5, r3
+/* 80303018 002FEC78 7C 00 28 40 */ cmplw r0, r5
+/* 8030301C 002FEC7C 41 82 00 0C */ beq lbl_80303028
+/* 80303020 002FEC80 38 60 FF F2 */ li r3, -14
+/* 80303024 002FEC84 4E 80 00 20 */ blr
+lbl_80303028:
+/* 80303028 002FEC88 80 06 00 10 */ lwz r0, 0x10(r6)
+/* 8030302C 002FEC8C 28 00 00 20 */ cmplwi r0, 0x20
+/* 80303030 002FEC90 41 80 00 0C */ blt lbl_8030303C
+/* 80303034 002FEC94 38 60 FF F2 */ li r3, -14
+/* 80303038 002FEC98 4E 80 00 20 */ blr
+lbl_8030303C:
+/* 8030303C 002FEC9C 80 06 00 04 */ lwz r0, 4(r6)
+/* 80303040 002FECA0 38 60 00 00 */ li r3, 0
+/* 80303044 002FECA4 28 00 00 08 */ cmplwi r0, 8
+/* 80303048 002FECA8 4D 82 00 20 */ beqlr
+/* 8030304C 002FECAC 38 60 FF E5 */ li r3, -27
+/* 80303050 002FECB0 4E 80 00 20 */ blr
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
diff --git a/asm/SDK/NWC24/NWC24MBoxCtrl.s b/asm/SDK/NWC24/NWC24MBoxCtrl.s
new file mode 100644
index 0000000..f6ae4bf
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24MBoxCtrl.s
@@ -0,0 +1,256 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24iOpenMBox
+NWC24iOpenMBox:
+/* 803033AC 002FF00C 94 21 FE B0 */ stwu r1, -0x150(r1)
+/* 803033B0 002FF010 7C 08 02 A6 */ mflr r0
+/* 803033B4 002FF014 38 80 00 00 */ li r4, 0
+/* 803033B8 002FF018 38 A0 00 80 */ li r5, 0x80
+/* 803033BC 002FF01C 90 01 01 54 */ stw r0, 0x154(r1)
+/* 803033C0 002FF020 93 E1 01 4C */ stw r31, 0x14c(r1)
+/* 803033C4 002FF024 93 C1 01 48 */ stw r30, 0x148(r1)
+/* 803033C8 002FF028 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 803033CC 002FF02C 3B C3 08 00 */ addi r30, r3, 0x800
+/* 803033D0 002FF030 38 63 11 00 */ addi r3, r3, 0x1100
+/* 803033D4 002FF034 4B FF DC 41 */ bl Mail_memset
+/* 803033D8 002FF038 38 81 00 08 */ addi r4, r1, 8
+/* 803033DC 002FF03C 38 60 00 00 */ li r3, 0
+/* 803033E0 002FF040 48 00 01 61 */ bl GetCachedMBCHeader
+/* 803033E4 002FF044 2C 03 00 00 */ cmpwi r3, 0
+/* 803033E8 002FF048 41 82 00 08 */ beq lbl_803033F0
+/* 803033EC 002FF04C 48 00 01 3C */ b lbl_80303528
+lbl_803033F0:
+/* 803033F0 002FF050 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 803033F4 002FF054 38 80 00 00 */ li r4, 0
+/* 803033F8 002FF058 38 A0 00 80 */ li r5, 0x80
+/* 803033FC 002FF05C 38 63 11 80 */ addi r3, r3, 0x1180
+/* 80303400 002FF060 4B FF DC 15 */ bl Mail_memset
+/* 80303404 002FF064 38 81 00 08 */ addi r4, r1, 8
+/* 80303408 002FF068 38 60 00 01 */ li r3, 1
+/* 8030340C 002FF06C 48 00 01 35 */ bl GetCachedMBCHeader
+/* 80303410 002FF070 2C 03 00 00 */ cmpwi r3, 0
+/* 80303414 002FF074 41 82 00 08 */ beq lbl_8030341C
+/* 80303418 002FF078 48 00 01 10 */ b lbl_80303528
+lbl_8030341C:
+/* 8030341C 002FF07C 4B FF FA DD */ bl NWC24GetMBoxDir
+/* 80303420 002FF080 7C 7F 1B 78 */ mr r31, r3
+/* 80303424 002FF084 38 80 00 40 */ li r4, 0x40
+/* 80303428 002FF088 4B FF DB BD */ bl STD_strnlen
+/* 8030342C 002FF08C 38 03 00 0E */ addi r0, r3, 0xe
+/* 80303430 002FF090 2C 00 01 00 */ cmpwi r0, 0x100
+/* 80303434 002FF094 40 81 00 0C */ ble lbl_80303440
+/* 80303438 002FF098 38 60 FF F5 */ li r3, -11
+/* 8030343C 002FF09C 48 00 00 24 */ b lbl_80303460
+lbl_80303440:
+/* 80303440 002FF0A0 3C C0 80 44 */ lis r6, lbl_804464A0@ha
+/* 80303444 002FF0A4 7F C3 F3 78 */ mr r3, r30
+/* 80303448 002FF0A8 7F E5 FB 78 */ mr r5, r31
+/* 8030344C 002FF0AC 38 8D 8C A8 */ addi r4, r13, lbl_8063DF68-_SDA_BASE_
+/* 80303450 002FF0B0 38 C6 64 A0 */ addi r6, r6, lbl_804464A0@l
+/* 80303454 002FF0B4 4C C6 31 82 */ crclr 6
+/* 80303458 002FF0B8 4B FF E1 A5 */ bl Mail_sprintf
+/* 8030345C 002FF0BC 38 60 00 00 */ li r3, 0
+lbl_80303460:
+/* 80303460 002FF0C0 2C 03 00 00 */ cmpwi r3, 0
+/* 80303464 002FF0C4 41 82 00 08 */ beq lbl_8030346C
+/* 80303468 002FF0C8 48 00 00 C0 */ b lbl_80303528
+lbl_8030346C:
+/* 8030346C 002FF0CC 7F C4 F3 78 */ mr r4, r30
+/* 80303470 002FF0D0 38 61 00 A8 */ addi r3, r1, 0xa8
+/* 80303474 002FF0D4 38 A0 00 02 */ li r5, 2
+/* 80303478 002FF0D8 4B FF E6 D1 */ bl NWC24FOpen
+/* 8030347C 002FF0DC 2C 03 00 00 */ cmpwi r3, 0
+/* 80303480 002FF0E0 40 82 00 0C */ bne lbl_8030348C
+/* 80303484 002FF0E4 38 61 00 A8 */ addi r3, r1, 0xa8
+/* 80303488 002FF0E8 4B FF EA 11 */ bl NWC24FClose
+lbl_8030348C:
+/* 8030348C 002FF0EC 2C 03 00 00 */ cmpwi r3, 0
+/* 80303490 002FF0F0 41 82 00 08 */ beq lbl_80303498
+/* 80303494 002FF0F4 48 00 00 94 */ b lbl_80303528
+lbl_80303498:
+/* 80303498 002FF0F8 4B FF FA 61 */ bl NWC24GetMBoxDir
+/* 8030349C 002FF0FC 7C 7F 1B 78 */ mr r31, r3
+/* 803034A0 002FF100 38 80 00 40 */ li r4, 0x40
+/* 803034A4 002FF104 4B FF DB 41 */ bl STD_strnlen
+/* 803034A8 002FF108 38 03 00 0E */ addi r0, r3, 0xe
+/* 803034AC 002FF10C 2C 00 01 00 */ cmpwi r0, 0x100
+/* 803034B0 002FF110 40 81 00 0C */ ble lbl_803034BC
+/* 803034B4 002FF114 38 60 FF F5 */ li r3, -11
+/* 803034B8 002FF118 48 00 00 24 */ b lbl_803034DC
+lbl_803034BC:
+/* 803034BC 002FF11C 3C C0 80 44 */ lis r6, lbl_804464B0@ha
+/* 803034C0 002FF120 7F C3 F3 78 */ mr r3, r30
+/* 803034C4 002FF124 7F E5 FB 78 */ mr r5, r31
+/* 803034C8 002FF128 38 8D 8C A8 */ addi r4, r13, lbl_8063DF68-_SDA_BASE_
+/* 803034CC 002FF12C 38 C6 64 B0 */ addi r6, r6, lbl_804464B0@l
+/* 803034D0 002FF130 4C C6 31 82 */ crclr 6
+/* 803034D4 002FF134 4B FF E1 29 */ bl Mail_sprintf
+/* 803034D8 002FF138 38 60 00 00 */ li r3, 0
+lbl_803034DC:
+/* 803034DC 002FF13C 2C 03 00 00 */ cmpwi r3, 0
+/* 803034E0 002FF140 41 82 00 08 */ beq lbl_803034E8
+/* 803034E4 002FF144 48 00 00 44 */ b lbl_80303528
+lbl_803034E8:
+/* 803034E8 002FF148 7F C4 F3 78 */ mr r4, r30
+/* 803034EC 002FF14C 38 61 00 0C */ addi r3, r1, 0xc
+/* 803034F0 002FF150 38 A0 00 02 */ li r5, 2
+/* 803034F4 002FF154 4B FF E6 55 */ bl NWC24FOpen
+/* 803034F8 002FF158 2C 03 00 00 */ cmpwi r3, 0
+/* 803034FC 002FF15C 40 82 00 0C */ bne lbl_80303508
+/* 80303500 002FF160 38 61 00 0C */ addi r3, r1, 0xc
+/* 80303504 002FF164 4B FF E9 95 */ bl NWC24FClose
+lbl_80303508:
+/* 80303508 002FF168 2C 03 00 00 */ cmpwi r3, 0
+/* 8030350C 002FF16C 41 82 00 08 */ beq lbl_80303514
+/* 80303510 002FF170 48 00 00 18 */ b lbl_80303528
+lbl_80303514:
+/* 80303514 002FF174 38 00 00 00 */ li r0, 0
+/* 80303518 002FF178 38 8D AF A8 */ addi r4, r13, lbl_80640268-_SDA_BASE_
+/* 8030351C 002FF17C 90 0D AF A8 */ stw r0, lbl_80640268-_SDA_BASE_(r13)
+/* 80303520 002FF180 38 60 00 00 */ li r3, 0
+/* 80303524 002FF184 90 04 00 04 */ stw r0, 4(r4)
+lbl_80303528:
+/* 80303528 002FF188 80 01 01 54 */ lwz r0, 0x154(r1)
+/* 8030352C 002FF18C 83 E1 01 4C */ lwz r31, 0x14c(r1)
+/* 80303530 002FF190 83 C1 01 48 */ lwz r30, 0x148(r1)
+/* 80303534 002FF194 7C 08 03 A6 */ mtlr r0
+/* 80303538 002FF198 38 21 01 50 */ addi r1, r1, 0x150
+/* 8030353C 002FF19C 4E 80 00 20 */ blr
+
+.global GetCachedMBCHeader
+GetCachedMBCHeader:
+/* 80303540 002FF1A0 94 21 FF 40 */ stwu r1, -0xc0(r1)
+/* 80303544 002FF1A4 7C 08 02 A6 */ mflr r0
+/* 80303548 002FF1A8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030354C 002FF1AC 90 01 00 C4 */ stw r0, 0xc4(r1)
+/* 80303550 002FF1B0 93 E1 00 BC */ stw r31, 0xbc(r1)
+/* 80303554 002FF1B4 3B E0 00 00 */ li r31, 0
+/* 80303558 002FF1B8 93 C1 00 B8 */ stw r30, 0xb8(r1)
+/* 8030355C 002FF1BC 93 A1 00 B4 */ stw r29, 0xb4(r1)
+/* 80303560 002FF1C0 7C 9D 23 78 */ mr r29, r4
+/* 80303564 002FF1C4 93 81 00 B0 */ stw r28, 0xb0(r1)
+/* 80303568 002FF1C8 7C 7C 1B 78 */ mr r28, r3
+/* 8030356C 002FF1CC 40 82 00 14 */ bne lbl_80303580
+/* 80303570 002FF1D0 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80303574 002FF1D4 38 03 11 00 */ addi r0, r3, 0x1100
+/* 80303578 002FF1D8 90 04 00 00 */ stw r0, 0(r4)
+/* 8030357C 002FF1DC 48 00 00 2C */ b lbl_803035A8
+lbl_80303580:
+/* 80303580 002FF1E0 2C 03 00 01 */ cmpwi r3, 1
+/* 80303584 002FF1E4 40 82 00 14 */ bne lbl_80303598
+/* 80303588 002FF1E8 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 8030358C 002FF1EC 38 03 11 80 */ addi r0, r3, 0x1180
+/* 80303590 002FF1F0 90 04 00 00 */ stw r0, 0(r4)
+/* 80303594 002FF1F4 48 00 00 14 */ b lbl_803035A8
+lbl_80303598:
+/* 80303598 002FF1F8 38 00 00 00 */ li r0, 0
+/* 8030359C 002FF1FC 38 60 FF FD */ li r3, -3
+/* 803035A0 002FF200 90 04 00 00 */ stw r0, 0(r4)
+/* 803035A4 002FF204 48 00 01 50 */ b lbl_803036F4
+lbl_803035A8:
+/* 803035A8 002FF208 80 64 00 00 */ lwz r3, 0(r4)
+/* 803035AC 002FF20C 80 63 00 00 */ lwz r3, 0(r3)
+/* 803035B0 002FF210 3C 03 A8 9D */ addis r0, r3, 0xa89d
+/* 803035B4 002FF214 28 00 54 66 */ cmplwi r0, 0x5466
+/* 803035B8 002FF218 41 82 01 24 */ beq lbl_803036DC
+/* 803035BC 002FF21C 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 803035C0 002FF220 3B C3 08 00 */ addi r30, r3, 0x800
+/* 803035C4 002FF224 4B FF F9 35 */ bl NWC24GetMBoxDir
+/* 803035C8 002FF228 7C 7F 1B 78 */ mr r31, r3
+/* 803035CC 002FF22C 38 80 00 40 */ li r4, 0x40
+/* 803035D0 002FF230 4B FF DA 15 */ bl STD_strnlen
+/* 803035D4 002FF234 38 03 00 0E */ addi r0, r3, 0xe
+/* 803035D8 002FF238 2C 00 01 00 */ cmpwi r0, 0x100
+/* 803035DC 002FF23C 40 81 00 0C */ ble lbl_803035E8
+/* 803035E0 002FF240 38 60 FF F5 */ li r3, -11
+/* 803035E4 002FF244 48 00 00 68 */ b lbl_8030364C
+lbl_803035E8:
+/* 803035E8 002FF248 2C 1C 00 01 */ cmpwi r28, 1
+/* 803035EC 002FF24C 41 82 00 34 */ beq lbl_80303620
+/* 803035F0 002FF250 40 80 00 50 */ bge lbl_80303640
+/* 803035F4 002FF254 2C 1C 00 00 */ cmpwi r28, 0
+/* 803035F8 002FF258 40 80 00 08 */ bge lbl_80303600
+/* 803035FC 002FF25C 48 00 00 44 */ b lbl_80303640
+lbl_80303600:
+/* 80303600 002FF260 3C C0 80 44 */ lis r6, lbl_80446480@ha
+/* 80303604 002FF264 7F C3 F3 78 */ mr r3, r30
+/* 80303608 002FF268 7F E5 FB 78 */ mr r5, r31
+/* 8030360C 002FF26C 38 8D 8C A8 */ addi r4, r13, lbl_8063DF68-_SDA_BASE_
+/* 80303610 002FF270 38 C6 64 80 */ addi r6, r6, lbl_80446480@l
+/* 80303614 002FF274 4C C6 31 82 */ crclr 6
+/* 80303618 002FF278 4B FF DF E5 */ bl Mail_sprintf
+/* 8030361C 002FF27C 48 00 00 2C */ b lbl_80303648
+lbl_80303620:
+/* 80303620 002FF280 3C C0 80 44 */ lis r6, lbl_80446490@ha
+/* 80303624 002FF284 7F C3 F3 78 */ mr r3, r30
+/* 80303628 002FF288 7F E5 FB 78 */ mr r5, r31
+/* 8030362C 002FF28C 38 8D 8C A8 */ addi r4, r13, lbl_8063DF68-_SDA_BASE_
+/* 80303630 002FF290 38 C6 64 90 */ addi r6, r6, lbl_80446490@l
+/* 80303634 002FF294 4C C6 31 82 */ crclr 6
+/* 80303638 002FF298 4B FF DF C5 */ bl Mail_sprintf
+/* 8030363C 002FF29C 48 00 00 0C */ b lbl_80303648
+lbl_80303640:
+/* 80303640 002FF2A0 38 60 FF FD */ li r3, -3
+/* 80303644 002FF2A4 48 00 00 08 */ b lbl_8030364C
+lbl_80303648:
+/* 80303648 002FF2A8 38 60 00 00 */ li r3, 0
+lbl_8030364C:
+/* 8030364C 002FF2AC 2C 03 00 00 */ cmpwi r3, 0
+/* 80303650 002FF2B0 41 82 00 08 */ beq lbl_80303658
+/* 80303654 002FF2B4 48 00 00 A0 */ b lbl_803036F4
+lbl_80303658:
+/* 80303658 002FF2B8 7F C4 F3 78 */ mr r4, r30
+/* 8030365C 002FF2BC 38 61 00 08 */ addi r3, r1, 8
+/* 80303660 002FF2C0 38 A0 00 02 */ li r5, 2
+/* 80303664 002FF2C4 4B FF E4 E5 */ bl NWC24FOpen
+/* 80303668 002FF2C8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030366C 002FF2CC 41 82 00 08 */ beq lbl_80303674
+/* 80303670 002FF2D0 48 00 00 84 */ b lbl_803036F4
+lbl_80303674:
+/* 80303674 002FF2D4 83 FD 00 00 */ lwz r31, 0(r29)
+/* 80303678 002FF2D8 38 61 00 08 */ addi r3, r1, 8
+/* 8030367C 002FF2DC 38 80 00 00 */ li r4, 0
+/* 80303680 002FF2E0 38 A0 00 00 */ li r5, 0
+/* 80303684 002FF2E4 4B FF E9 A9 */ bl NWC24FSeek
+/* 80303688 002FF2E8 7F E3 FB 78 */ mr r3, r31
+/* 8030368C 002FF2EC 38 A1 00 08 */ addi r5, r1, 8
+/* 80303690 002FF2F0 38 80 00 80 */ li r4, 0x80
+/* 80303694 002FF2F4 4B FF EB 85 */ bl NWC24FRead
+/* 80303698 002FF2F8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030369C 002FF2FC 41 82 00 0C */ beq lbl_803036A8
+/* 803036A0 002FF300 7C 7F 1B 78 */ mr r31, r3
+/* 803036A4 002FF304 48 00 00 1C */ b lbl_803036C0
+lbl_803036A8:
+/* 803036A8 002FF308 80 7F 00 00 */ lwz r3, 0(r31)
+/* 803036AC 002FF30C 3B E0 00 00 */ li r31, 0
+/* 803036B0 002FF310 3C 03 A8 9D */ addis r0, r3, 0xa89d
+/* 803036B4 002FF314 28 00 54 66 */ cmplwi r0, 0x5466
+/* 803036B8 002FF318 41 82 00 08 */ beq lbl_803036C0
+/* 803036BC 002FF31C 3B E0 FF F2 */ li r31, -14
+lbl_803036C0:
+/* 803036C0 002FF320 38 61 00 08 */ addi r3, r1, 8
+/* 803036C4 002FF324 4B FF E7 D5 */ bl NWC24FClose
+/* 803036C8 002FF328 2C 1F 00 00 */ cmpwi r31, 0
+/* 803036CC 002FF32C 40 82 00 10 */ bne lbl_803036DC
+/* 803036D0 002FF330 2C 03 00 00 */ cmpwi r3, 0
+/* 803036D4 002FF334 41 82 00 08 */ beq lbl_803036DC
+/* 803036D8 002FF338 7C 7F 1B 78 */ mr r31, r3
+lbl_803036DC:
+/* 803036DC 002FF33C 80 7D 00 00 */ lwz r3, 0(r29)
+/* 803036E0 002FF340 80 03 00 04 */ lwz r0, 4(r3)
+/* 803036E4 002FF344 28 00 00 04 */ cmplwi r0, 4
+/* 803036E8 002FF348 41 82 00 08 */ beq lbl_803036F0
+/* 803036EC 002FF34C 3B E0 FF E5 */ li r31, -27
+lbl_803036F0:
+/* 803036F0 002FF350 7F E3 FB 78 */ mr r3, r31
+lbl_803036F4:
+/* 803036F4 002FF354 80 01 00 C4 */ lwz r0, 0xc4(r1)
+/* 803036F8 002FF358 83 E1 00 BC */ lwz r31, 0xbc(r1)
+/* 803036FC 002FF35C 83 C1 00 B8 */ lwz r30, 0xb8(r1)
+/* 80303700 002FF360 83 A1 00 B4 */ lwz r29, 0xb4(r1)
+/* 80303704 002FF364 83 81 00 B0 */ lwz r28, 0xb0(r1)
+/* 80303708 002FF368 7C 08 03 A6 */ mtlr r0
+/* 8030370C 002FF36C 38 21 00 C0 */ addi r1, r1, 0xc0
+/* 80303710 002FF370 4E 80 00 20 */ blr
diff --git a/asm/SDK/NWC24/NWC24Manage.s b/asm/SDK/NWC24/NWC24Manage.s
new file mode 100644
index 0000000..726ae61
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24Manage.s
@@ -0,0 +1,266 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24iRegister
+NWC24iRegister:
+/* 80303054 002FECB4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80303058 002FECB8 7C 08 02 A6 */ mflr r0
+/* 8030305C 002FECBC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80303060 002FECC0 80 0D AF A0 */ lwz r0, lbl_80640260-_SDA_BASE_(r13)
+/* 80303064 002FECC4 2C 00 00 00 */ cmpwi r0, 0
+/* 80303068 002FECC8 40 82 00 14 */ bne lbl_8030307C
+/* 8030306C 002FECCC 80 6D 8C A0 */ lwz r3, lbl_8063DF60-_SDA_BASE_(r13)
+/* 80303070 002FECD0 4B F6 65 E1 */ bl OSRegisterVersion
+/* 80303074 002FECD4 38 00 00 01 */ li r0, 1
+/* 80303078 002FECD8 90 0D AF A0 */ stw r0, lbl_80640260-_SDA_BASE_(r13)
+lbl_8030307C:
+/* 8030307C 002FECDC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80303080 002FECE0 7C 08 03 A6 */ mtlr r0
+/* 80303084 002FECE4 38 21 00 10 */ addi r1, r1, 0x10
+/* 80303088 002FECE8 4E 80 00 20 */ blr
+
+.global NWC24OpenLib
+NWC24OpenLib:
+/* 8030308C 002FECEC 80 0D AF 94 */ lwz r0, lbl_80640254-_SDA_BASE_(r13)
+/* 80303090 002FECF0 2C 00 00 02 */ cmpwi r0, 2
+/* 80303094 002FECF4 40 82 00 0C */ bne lbl_803030A0
+/* 80303098 002FECF8 38 60 FF E6 */ li r3, -26
+/* 8030309C 002FECFC 4E 80 00 20 */ blr
+lbl_803030A0:
+/* 803030A0 002FED00 38 80 00 01 */ li r4, 1
+/* 803030A4 002FED04 48 00 00 08 */ b NWC24OpenLibInternal
+/* 803030A8 002FED08 4E 80 00 20 */ blr
+
+NWC24OpenLibInternal:
+/* 803030AC 002FED0C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 803030B0 002FED10 7C 08 02 A6 */ mflr r0
+/* 803030B4 002FED14 90 01 00 24 */ stw r0, 0x24(r1)
+/* 803030B8 002FED18 38 00 00 00 */ li r0, 0
+/* 803030BC 002FED1C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 803030C0 002FED20 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 803030C4 002FED24 7C 7E 1B 78 */ mr r30, r3
+/* 803030C8 002FED28 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 803030CC 002FED2C 7C 9D 23 78 */ mr r29, r4
+/* 803030D0 002FED30 90 0D AF 9C */ stw r0, lbl_8064025C-_SDA_BASE_(r13)
+/* 803030D4 002FED34 48 01 73 CD */ bl VFIsAvailable
+/* 803030D8 002FED38 2C 03 00 00 */ cmpwi r3, 0
+/* 803030DC 002FED3C 40 82 00 0C */ bne lbl_803030E8
+/* 803030E0 002FED40 38 60 FF FF */ li r3, -1
+/* 803030E4 002FED44 48 00 01 78 */ b lbl_8030325C
+lbl_803030E8:
+/* 803030E8 002FED48 80 0D AF 94 */ lwz r0, lbl_80640254-_SDA_BASE_(r13)
+/* 803030EC 002FED4C 2C 00 00 01 */ cmpwi r0, 1
+/* 803030F0 002FED50 40 82 00 0C */ bne lbl_803030FC
+/* 803030F4 002FED54 38 60 FF F6 */ li r3, -10
+/* 803030F8 002FED58 48 00 01 64 */ b lbl_8030325C
+lbl_803030FC:
+/* 803030FC 002FED5C 2C 00 00 03 */ cmpwi r0, 3
+/* 80303100 002FED60 40 82 00 0C */ bne lbl_8030310C
+/* 80303104 002FED64 38 60 FF E6 */ li r3, -26
+/* 80303108 002FED68 48 00 01 54 */ b lbl_8030325C
+lbl_8030310C:
+/* 8030310C 002FED6C 2C 1E 00 00 */ cmpwi r30, 0
+/* 80303110 002FED70 40 82 00 0C */ bne lbl_8030311C
+/* 80303114 002FED74 38 60 FF FB */ li r3, -5
+/* 80303118 002FED78 48 00 01 44 */ b lbl_8030325C
+lbl_8030311C:
+/* 8030311C 002FED7C 57 C0 06 FF */ clrlwi. r0, r30, 0x1b
+/* 80303120 002FED80 41 82 00 0C */ beq lbl_8030312C
+/* 80303124 002FED84 38 60 FF E9 */ li r3, -23
+/* 80303128 002FED88 48 00 01 34 */ b lbl_8030325C
+lbl_8030312C:
+/* 8030312C 002FED8C 48 00 0C 85 */ bl func_80303DB0
+/* 80303130 002FED90 2C 03 00 00 */ cmpwi r3, 0
+/* 80303134 002FED94 40 82 00 F8 */ bne lbl_8030322C
+/* 80303138 002FED98 80 0D AF A0 */ lwz r0, lbl_80640260-_SDA_BASE_(r13)
+/* 8030313C 002FED9C 2C 00 00 00 */ cmpwi r0, 0
+/* 80303140 002FEDA0 40 82 00 14 */ bne lbl_80303154
+/* 80303144 002FEDA4 80 6D 8C A0 */ lwz r3, lbl_8063DF60-_SDA_BASE_(r13)
+/* 80303148 002FEDA8 4B F6 65 09 */ bl OSRegisterVersion
+/* 8030314C 002FEDAC 38 00 00 01 */ li r0, 1
+/* 80303150 002FEDB0 90 0D AF A0 */ stw r0, lbl_80640260-_SDA_BASE_(r13)
+lbl_80303154:
+/* 80303154 002FEDB4 80 0D AF 98 */ lwz r0, lbl_80640258-_SDA_BASE_(r13)
+/* 80303158 002FEDB8 38 7E 13 00 */ addi r3, r30, 0x1300
+/* 8030315C 002FEDBC 93 CD AF 90 */ stw r30, lbl_80640250-_SDA_BASE_(r13)
+/* 80303160 002FEDC0 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
+/* 80303164 002FEDC4 90 0D AF 98 */ stw r0, lbl_80640258-_SDA_BASE_(r13)
+/* 80303168 002FEDC8 48 00 05 AD */ bl func_80303714
+/* 8030316C 002FEDCC 3B C0 00 00 */ li r30, 0
+/* 80303170 002FEDD0 3B E0 00 00 */ li r31, 0
+/* 80303174 002FEDD4 4B FF FA F9 */ bl NWC24iConfigOpen
+/* 80303178 002FEDD8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030317C 002FEDDC 41 82 00 0C */ beq lbl_80303188
+/* 80303180 002FEDE0 7C 7F 1B 78 */ mr r31, r3
+/* 80303184 002FEDE4 63 DE 00 04 */ ori r30, r30, 4
+lbl_80303188:
+/* 80303188 002FEDE8 48 00 02 25 */ bl NWC24iOpenMBox
+/* 8030318C 002FEDEC 2C 03 00 00 */ cmpwi r3, 0
+/* 80303190 002FEDF0 41 82 00 0C */ beq lbl_8030319C
+/* 80303194 002FEDF4 7C 7F 1B 78 */ mr r31, r3
+/* 80303198 002FEDF8 63 DE 00 04 */ ori r30, r30, 4
+lbl_8030319C:
+/* 8030319C 002FEDFC 48 00 10 CD */ bl func_80304268
+/* 803031A0 002FEE00 2C 03 00 00 */ cmpwi r3, 0
+/* 803031A4 002FEE04 41 82 00 0C */ beq lbl_803031B0
+/* 803031A8 002FEE08 7C 7F 1B 78 */ mr r31, r3
+/* 803031AC 002FEE0C 63 DE 00 04 */ ori r30, r30, 4
+lbl_803031B0:
+/* 803031B0 002FEE10 48 00 11 D5 */ bl func_80304384
+/* 803031B4 002FEE14 2C 03 00 00 */ cmpwi r3, 0
+/* 803031B8 002FEE18 41 82 00 1C */ beq lbl_803031D4
+/* 803031BC 002FEE1C 2C 03 FF EC */ cmpwi r3, -20
+/* 803031C0 002FEE20 7C 7F 1B 78 */ mr r31, r3
+/* 803031C4 002FEE24 63 C0 00 01 */ ori r0, r30, 1
+/* 803031C8 002FEE28 40 82 00 08 */ bne lbl_803031D0
+/* 803031CC 002FEE2C 63 C0 00 04 */ ori r0, r30, 4
+lbl_803031D0:
+/* 803031D0 002FEE30 7C 1E 03 78 */ mr r30, r0
+lbl_803031D4:
+/* 803031D4 002FEE34 48 00 16 1D */ bl func_803047F0
+/* 803031D8 002FEE38 2C 03 00 00 */ cmpwi r3, 0
+/* 803031DC 002FEE3C 40 80 00 1C */ bge lbl_803031F8
+/* 803031E0 002FEE40 2C 03 FF EC */ cmpwi r3, -20
+/* 803031E4 002FEE44 7C 7F 1B 78 */ mr r31, r3
+/* 803031E8 002FEE48 63 C0 00 02 */ ori r0, r30, 2
+/* 803031EC 002FEE4C 40 82 00 08 */ bne lbl_803031F4
+/* 803031F0 002FEE50 63 C0 00 04 */ ori r0, r30, 4
+lbl_803031F4:
+/* 803031F4 002FEE54 7C 1E 03 78 */ mr r30, r0
+lbl_803031F8:
+/* 803031F8 002FEE58 28 1E 00 03 */ cmplwi r30, 3
+/* 803031FC 002FEE5C 40 82 00 08 */ bne lbl_80303204
+/* 80303200 002FEE60 3B E0 FF CF */ li r31, -49
+lbl_80303204:
+/* 80303204 002FEE64 2C 1E 00 00 */ cmpwi r30, 0
+/* 80303208 002FEE68 41 82 00 18 */ beq lbl_80303220
+/* 8030320C 002FEE6C 38 00 00 00 */ li r0, 0
+/* 80303210 002FEE70 90 0D AF 90 */ stw r0, lbl_80640250-_SDA_BASE_(r13)
+/* 80303214 002FEE74 48 00 0C 7D */ bl func_80303E90
+/* 80303218 002FEE78 7F E3 FB 78 */ mr r3, r31
+/* 8030321C 002FEE7C 48 00 00 10 */ b lbl_8030322C
+lbl_80303220:
+/* 80303220 002FEE80 93 AD AF 94 */ stw r29, lbl_80640254-_SDA_BASE_(r13)
+/* 80303224 002FEE84 38 60 00 00 */ li r3, 0
+/* 80303228 002FEE88 48 00 00 34 */ b lbl_8030325C
+lbl_8030322C:
+/* 8030322C 002FEE8C 38 03 00 31 */ addi r0, r3, 0x31
+/* 80303230 002FEE90 28 00 00 30 */ cmplwi r0, 0x30
+/* 80303234 002FEE94 41 81 00 28 */ bgt lbl_8030325C
+/* 80303238 002FEE98 3C 80 80 44 */ lis r4, lbl_804463BC@ha
+/* 8030323C 002FEE9C 54 00 10 3A */ slwi r0, r0, 2
+/* 80303240 002FEEA0 38 84 63 BC */ addi r4, r4, lbl_804463BC@l
+/* 80303244 002FEEA4 7C 84 00 2E */ lwzx r4, r4, r0
+/* 80303248 002FEEA8 7C 89 03 A6 */ mtctr r4
+/* 8030324C 002FEEAC 4E 80 04 20 */ bctr
+/* 80303250 002FEEB0 3C 83 FF FE */ addis r4, r3, 0xfffe
+/* 80303254 002FEEB4 38 04 56 38 */ addi r0, r4, 0x5638
+/* 80303258 002FEEB8 90 0D AF 9C */ stw r0, lbl_8064025C-_SDA_BASE_(r13)
+lbl_8030325C:
+/* 8030325C 002FEEBC 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80303260 002FEEC0 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80303264 002FEEC4 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 80303268 002FEEC8 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 8030326C 002FEECC 7C 08 03 A6 */ mtlr r0
+/* 80303270 002FEED0 38 21 00 20 */ addi r1, r1, 0x20
+/* 80303274 002FEED4 4E 80 00 20 */ blr
+
+.global NWC24CloseLib
+NWC24CloseLib:
+/* 80303278 002FEED8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030327C 002FEEDC 7C 08 02 A6 */ mflr r0
+/* 80303280 002FEEE0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80303284 002FEEE4 80 0D AF 94 */ lwz r0, lbl_80640254-_SDA_BASE_(r13)
+/* 80303288 002FEEE8 2C 00 00 01 */ cmpwi r0, 1
+/* 8030328C 002FEEEC 41 82 00 0C */ beq lbl_80303298
+/* 80303290 002FEEF0 38 60 FF F7 */ li r3, -9
+/* 80303294 002FEEF4 48 00 00 40 */ b lbl_803032D4
+lbl_80303298:
+/* 80303298 002FEEF8 4B FF FA E1 */ bl NWC24iConfigFlush
+/* 8030329C 002FEEFC 2C 03 00 00 */ cmpwi r3, 0
+/* 803032A0 002FEF00 41 82 00 08 */ beq lbl_803032A8
+/* 803032A4 002FEF04 48 00 00 30 */ b lbl_803032D4
+lbl_803032A8:
+/* 803032A8 002FEF08 48 00 15 95 */ bl func_8030483C
+/* 803032AC 002FEF0C 2C 03 00 00 */ cmpwi r3, 0
+/* 803032B0 002FEF10 40 80 00 08 */ bge lbl_803032B8
+/* 803032B4 002FEF14 48 00 00 20 */ b lbl_803032D4
+lbl_803032B8:
+/* 803032B8 002FEF18 48 00 0B D9 */ bl func_80303E90
+/* 803032BC 002FEF1C 2C 03 00 00 */ cmpwi r3, 0
+/* 803032C0 002FEF20 41 82 00 08 */ beq lbl_803032C8
+/* 803032C4 002FEF24 48 00 00 10 */ b lbl_803032D4
+lbl_803032C8:
+/* 803032C8 002FEF28 38 00 00 00 */ li r0, 0
+/* 803032CC 002FEF2C 90 0D AF 90 */ stw r0, lbl_80640250-_SDA_BASE_(r13)
+/* 803032D0 002FEF30 90 0D AF 94 */ stw r0, lbl_80640254-_SDA_BASE_(r13)
+lbl_803032D4:
+/* 803032D4 002FEF34 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 803032D8 002FEF38 7C 08 03 A6 */ mtlr r0
+/* 803032DC 002FEF3C 38 21 00 10 */ addi r1, r1, 0x10
+/* 803032E0 002FEF40 4E 80 00 20 */ blr
+
+.global NWC24IsMsgLibOpened
+NWC24IsMsgLibOpened:
+/* 803032E4 002FEF44 80 6D AF 94 */ lwz r3, lbl_80640254-_SDA_BASE_(r13)
+/* 803032E8 002FEF48 38 03 FF FF */ addi r0, r3, -1
+/* 803032EC 002FEF4C 7C 00 00 34 */ cntlzw r0, r0
+/* 803032F0 002FEF50 54 03 D9 7E */ srwi r3, r0, 5
+/* 803032F4 002FEF54 4E 80 00 20 */ blr
+
+.global NWC24IsMsgLibOpenedByTool
+NWC24IsMsgLibOpenedByTool:
+/* 803032F8 002FEF58 80 6D AF 94 */ lwz r3, lbl_80640254-_SDA_BASE_(r13)
+/* 803032FC 002FEF5C 38 03 FF FE */ addi r0, r3, -2
+/* 80303300 002FEF60 7C 00 00 34 */ cntlzw r0, r0
+/* 80303304 002FEF64 54 03 D9 7E */ srwi r3, r0, 5
+/* 80303308 002FEF68 4E 80 00 20 */ blr
+
+.global NWC24BlockOpenMsgLib
+NWC24BlockOpenMsgLib:
+/* 8030330C 002FEF6C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80303310 002FEF70 7C 08 02 A6 */ mflr r0
+/* 80303314 002FEF74 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80303318 002FEF78 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8030331C 002FEF7C 3B E0 00 00 */ li r31, 0
+/* 80303320 002FEF80 93 C1 00 08 */ stw r30, 8(r1)
+/* 80303324 002FEF84 7C 7E 1B 78 */ mr r30, r3
+/* 80303328 002FEF88 4B F6 B4 35 */ bl OSDisableInterrupts
+/* 8030332C 002FEF8C 2C 1E 00 00 */ cmpwi r30, 0
+/* 80303330 002FEF90 41 82 00 34 */ beq lbl_80303364
+/* 80303334 002FEF94 80 0D AF 94 */ lwz r0, lbl_80640254-_SDA_BASE_(r13)
+/* 80303338 002FEF98 2C 00 00 00 */ cmpwi r0, 0
+/* 8030333C 002FEF9C 40 82 00 10 */ bne lbl_8030334C
+/* 80303340 002FEFA0 38 00 00 03 */ li r0, 3
+/* 80303344 002FEFA4 90 0D AF 94 */ stw r0, lbl_80640254-_SDA_BASE_(r13)
+/* 80303348 002FEFA8 48 00 00 44 */ b lbl_8030338C
+lbl_8030334C:
+/* 8030334C 002FEFAC 2C 00 00 01 */ cmpwi r0, 1
+/* 80303350 002FEFB0 40 82 00 0C */ bne lbl_8030335C
+/* 80303354 002FEFB4 3B E0 FF F6 */ li r31, -10
+/* 80303358 002FEFB8 48 00 00 34 */ b lbl_8030338C
+lbl_8030335C:
+/* 8030335C 002FEFBC 3B E0 FF E6 */ li r31, -26
+/* 80303360 002FEFC0 48 00 00 2C */ b lbl_8030338C
+lbl_80303364:
+/* 80303364 002FEFC4 80 8D AF 94 */ lwz r4, lbl_80640254-_SDA_BASE_(r13)
+/* 80303368 002FEFC8 38 04 FF FD */ addi r0, r4, -3
+/* 8030336C 002FEFCC 7C 00 00 34 */ cntlzw r0, r0
+/* 80303370 002FEFD0 54 04 D9 7F */ rlwinm. r4, r0, 0x1b, 5, 0x1f
+/* 80303374 002FEFD4 41 82 00 0C */ beq lbl_80303380
+/* 80303378 002FEFD8 38 00 00 00 */ li r0, 0
+/* 8030337C 002FEFDC 90 0D AF 94 */ stw r0, lbl_80640254-_SDA_BASE_(r13)
+lbl_80303380:
+/* 80303380 002FEFE0 2C 04 00 00 */ cmpwi r4, 0
+/* 80303384 002FEFE4 40 82 00 08 */ bne lbl_8030338C
+/* 80303388 002FEFE8 3B E0 FF F7 */ li r31, -9
+lbl_8030338C:
+/* 8030338C 002FEFEC 4B F6 B3 F9 */ bl OSRestoreInterrupts
+/* 80303390 002FEFF0 7F E3 FB 78 */ mr r3, r31
+/* 80303394 002FEFF4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80303398 002FEFF8 83 C1 00 08 */ lwz r30, 8(r1)
+/* 8030339C 002FEFFC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 803033A0 002FF000 7C 08 03 A6 */ mtlr r0
+/* 803033A4 002FF004 38 21 00 10 */ addi r1, r1, 0x10
+/* 803033A8 002FF008 4E 80 00 20 */ blr
diff --git a/asm/SDK/VF/d_vf.s b/asm/SDK/VF/d_vf.s
index 5f68937..dbcb8c1 100644
--- a/asm/SDK/VF/d_vf.s
+++ b/asm/SDK/VF/d_vf.s
@@ -10,8 +10,8 @@ VFIsAvailable:
/* 8031A4AC 0031610C 54 03 0F FE */ srwi r3, r0, 0x1f
/* 8031A4B0 00316110 4E 80 00 20 */ blr
-.global VFInitEx
-VFInitEx:
+.global VFInit
+VFInit:
/* 8031A4B4 00316114 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031A4B8 00316118 7C 08 02 A6 */ mflr r0
/* 8031A4BC 0031611C 90 01 00 14 */ stw r0, 0x14(r1)