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/NCD/ncdsystem.s4
-rw-r--r--asm/SDK/NHTTP/NHTTP_socket_RVL.s20
-rw-r--r--asm/SDK/NWC24/NWC24Config.s371
-rw-r--r--asm/SDK/NWC24/NWC24Download.s391
-rw-r--r--asm/SDK/NWC24/NWC24FileAPI.s1227
-rw-r--r--asm/SDK/NWC24/NWC24FriendList.s86
-rw-r--r--asm/SDK/NWC24/NWC24Ipc.s122
-rw-r--r--asm/SDK/NWC24/NWC24MBoxCtrl.s256
-rw-r--r--asm/SDK/NWC24/NWC24Manage.s266
-rw-r--r--asm/SDK/NWC24/NWC24Mime.s191
-rw-r--r--asm/SDK/NWC24/NWC24Schedule.s627
-rw-r--r--asm/SDK/NWC24/NWC24SecretFList.s86
-rw-r--r--asm/SDK/NWC24/NWC24StdAPI.s847
-rw-r--r--asm/SDK/NWC24/NWC24System.s112
-rw-r--r--asm/SDK/NWC24/NWC24Time.s141
-rw-r--r--asm/SDK/OS/OSNet.s6
-rw-r--r--asm/SDK/SO/SOCommon.s8
-rw-r--r--asm/SDK/SSL/ssl_api.s914
-rw-r--r--asm/SDK/SSL/ssl_mutex.s15
-rw-r--r--asm/SDK/VF/d_vf.s4
21 files changed, 5677 insertions, 25 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/NCD/ncdsystem.s b/asm/SDK/NCD/ncdsystem.s
index f97174b..d1a3a76 100644
--- a/asm/SDK/NCD/ncdsystem.s
+++ b/asm/SDK/NCD/ncdsystem.s
@@ -18,7 +18,7 @@ NCDSetNwc24Permission:
/* 802ED230 002E8E90 48 00 00 88 */ b lbl_802ED2B8
lbl_802ED234:
/* 802ED234 002E8E94 48 00 0A 39 */ bl LockRight
-/* 802ED238 002E8E98 48 01 6B 59 */ bl func_80303D90
+/* 802ED238 002E8E98 48 01 6B 59 */ bl NWC24iLockSocket
/* 802ED23C 002E8E9C 2C 03 00 00 */ cmpwi r3, 0
/* 802ED240 002E8EA0 40 82 00 48 */ bne lbl_802ED288
/* 802ED244 002E8EA4 3F E0 80 44 */ lis r31, lbl_80445AF0@ha
@@ -37,7 +37,7 @@ lbl_802ED234:
/* 802ED278 002E8ED8 48 00 08 61 */ bl ExecConfigCommand
/* 802ED27C 002E8EDC 7C 7E 1B 78 */ mr r30, r3
lbl_802ED280:
-/* 802ED280 002E8EE0 48 01 6B 21 */ bl func_80303DA0
+/* 802ED280 002E8EE0 48 01 6B 21 */ bl NWC24iUnlockSocket
/* 802ED284 002E8EE4 48 00 00 24 */ b lbl_802ED2A8
lbl_802ED288:
/* 802ED288 002E8EE8 2C 03 FF EA */ cmpwi r3, -22
diff --git a/asm/SDK/NHTTP/NHTTP_socket_RVL.s b/asm/SDK/NHTTP/NHTTP_socket_RVL.s
index 6d5d2a6..e36343d 100644
--- a/asm/SDK/NHTTP/NHTTP_socket_RVL.s
+++ b/asm/SDK/NHTTP/NHTTP_socket_RVL.s
@@ -57,7 +57,7 @@ NHTTPi_SocClose:
/* 802F9934 002F5594 80 7E 00 AC */ lwz r3, 0xac(r30)
/* 802F9938 002F5598 2C 03 00 00 */ cmpwi r3, 0
/* 802F993C 002F559C 40 81 00 10 */ ble lbl_802F994C
-/* 802F9940 002F55A0 48 00 6E 0D */ bl func_8030074C
+/* 802F9940 002F55A0 48 00 6E 0D */ bl SSLShutdown
/* 802F9944 002F55A4 38 00 FF FF */ li r0, -1
/* 802F9948 002F55A8 90 1E 00 AC */ stw r0, 0xac(r30)
lbl_802F994C:
@@ -141,12 +141,12 @@ NHTTPi_SocSSLConnect:
/* 802F9A5C 002F56BC 80 85 00 28 */ lwz r4, 0x28(r5)
/* 802F9A60 002F56C0 7C DD 33 78 */ mr r29, r6
/* 802F9A64 002F56C4 3B C0 00 00 */ li r30, 0
-/* 802F9A68 002F56C8 48 00 64 B5 */ bl func_802FFF1C
+/* 802F9A68 002F56C8 48 00 64 B5 */ bl SSLNew
/* 802F9A6C 002F56CC 80 1C 00 C8 */ lwz r0, 0xc8(r28)
/* 802F9A70 002F56D0 90 7C 00 AC */ stw r3, 0xac(r28)
/* 802F9A74 002F56D4 2C 00 00 01 */ cmpwi r0, 1
/* 802F9A78 002F56D8 40 82 00 0C */ bne lbl_802F9A84
-/* 802F9A7C 002F56DC 48 00 6E E9 */ bl func_80300964
+/* 802F9A7C 002F56DC 48 00 6E E9 */ bl SSLSetClientCertDefault
/* 802F9A80 002F56E0 48 00 00 28 */ b lbl_802F9AA8
lbl_802F9A84:
/* 802F9A84 002F56E4 80 9C 00 B0 */ lwz r4, 0xb0(r28)
@@ -157,22 +157,22 @@ lbl_802F9A84:
/* 802F9A98 002F56F8 41 82 00 10 */ beq lbl_802F9AA8
/* 802F9A9C 002F56FC 80 BC 00 B4 */ lwz r5, 0xb4(r28)
/* 802F9AA0 002F5700 80 FC 00 BC */ lwz r7, 0xbc(r28)
-/* 802F9AA4 002F5704 48 00 6D 55 */ bl func_803007F8
+/* 802F9AA4 002F5704 48 00 6D 55 */ bl SSLSetClientCert
lbl_802F9AA8:
/* 802F9AA8 002F5708 80 9C 00 C0 */ lwz r4, 0xc0(r28)
/* 802F9AAC 002F570C 2C 04 00 00 */ cmpwi r4, 0
/* 802F9AB0 002F5710 41 82 00 14 */ beq lbl_802F9AC4
/* 802F9AB4 002F5714 80 7C 00 AC */ lwz r3, 0xac(r28)
/* 802F9AB8 002F5718 80 BC 00 C4 */ lwz r5, 0xc4(r28)
-/* 802F9ABC 002F571C 48 00 6F 55 */ bl func_80300A10
+/* 802F9ABC 002F571C 48 00 6F 55 */ bl SSLSetRootCA
/* 802F9AC0 002F5720 48 00 00 0C */ b lbl_802F9ACC
lbl_802F9AC4:
/* 802F9AC4 002F5724 80 7C 00 AC */ lwz r3, 0xac(r28)
-/* 802F9AC8 002F5728 48 00 70 91 */ bl func_80300B58
+/* 802F9AC8 002F5728 48 00 70 91 */ bl SSLSetBuiltinRootCA
lbl_802F9ACC:
/* 802F9ACC 002F572C 80 7C 00 AC */ lwz r3, 0xac(r28)
/* 802F9AD0 002F5730 7F A4 EB 78 */ mr r4, r29
-/* 802F9AD4 002F5734 48 00 65 85 */ bl func_80300058
+/* 802F9AD4 002F5734 48 00 65 85 */ bl SSLConnect
/* 802F9AD8 002F5738 2C 03 FF FF */ cmpwi r3, -1
/* 802F9ADC 002F573C 40 80 00 80 */ bge lbl_802F9B5C
/* 802F9AE0 002F5740 38 60 FC 17 */ li r3, -1001
@@ -184,7 +184,7 @@ lbl_802F9AEC:
/* 802F9AF4 002F5754 48 00 5F 45 */ bl NHTTPi_Request2Connection
/* 802F9AF8 002F5758 7C 7F 1B 78 */ mr r31, r3
/* 802F9AFC 002F575C 80 7C 00 AC */ lwz r3, 0xac(r28)
-/* 802F9B00 002F5760 48 00 66 21 */ bl func_80300120
+/* 802F9B00 002F5760 48 00 66 21 */ bl SSLDoHandshake
/* 802F9B04 002F5764 7C 7D 1B 78 */ mr r29, r3
/* 802F9B08 002F5768 7F 43 D3 78 */ mr r3, r26
/* 802F9B0C 002F576C 7F A4 EB 78 */ mr r4, r29
@@ -354,7 +354,7 @@ NHTTPi_SocRecv:
/* 802F9D44 002F59A4 7C A4 2B 78 */ mr r4, r5
/* 802F9D48 002F59A8 7C 03 03 78 */ mr r3, r0
/* 802F9D4C 002F59AC 7C C5 33 78 */ mr r5, r6
-/* 802F9D50 002F59B0 48 00 64 7D */ bl func_803001CC
+/* 802F9D50 002F59B0 48 00 64 7D */ bl SSLRead
/* 802F9D54 002F59B4 48 00 00 18 */ b lbl_802F9D6C
lbl_802F9D58:
/* 802F9D58 002F59B8 7C 83 23 78 */ mr r3, r4
@@ -522,7 +522,7 @@ NHTTPi_SocSend:
/* 802F9F88 002F5BE8 7C A4 2B 78 */ mr r4, r5
/* 802F9F8C 002F5BEC 7C 03 03 78 */ mr r3, r0
/* 802F9F90 002F5BF0 7C C5 33 78 */ mr r5, r6
-/* 802F9F94 002F5BF4 48 00 64 F9 */ bl func_8030048C
+/* 802F9F94 002F5BF4 48 00 64 F9 */ bl SSLWrite
/* 802F9F98 002F5BF8 48 00 00 18 */ b lbl_802F9FB0
lbl_802F9F9C:
/* 802F9F9C 002F5BFC 7C 83 23 78 */ mr r3, r4
diff --git a/asm/SDK/NWC24/NWC24Config.s b/asm/SDK/NWC24/NWC24Config.s
new file mode 100644
index 0000000..46fedef
--- /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 NWC24SuspendScheduler
+/* 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 NWC24iRequestGenerateUserId
+/* 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 NWC24ResumeScheduler
+/* 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/NWC24Download.s b/asm/SDK/NWC24/NWC24Download.s
new file mode 100644
index 0000000..42889c3
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24Download.s
@@ -0,0 +1,391 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24iOpenDlTaskList
+NWC24iOpenDlTaskList:
+/* 803047F0 00300450 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803047F4 00300454 7C 08 02 A6 */ mflr r0
+/* 803047F8 00300458 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803047FC 0030045C 48 00 02 B1 */ bl NWC24iLoadDlHeader
+/* 80304800 00300460 2C 03 00 00 */ cmpwi r3, 0
+/* 80304804 00300464 41 80 00 28 */ blt lbl_8030482C
+/* 80304808 00300468 38 60 00 00 */ li r3, 0
+/* 8030480C 0030046C 4B FF FD DD */ bl NWC24iSynchronizeRtcCounter
+/* 80304810 00300470 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304814 00300474 38 80 00 00 */ li r4, 0
+/* 80304818 00300478 38 63 30 00 */ addi r3, r3, 0x3000
+/* 8030481C 0030047C 48 00 00 29 */ bl NWC24iCheckHeaderConsistency
+/* 80304820 00300480 2C 03 00 00 */ cmpwi r3, 0
+/* 80304824 00300484 41 80 00 08 */ blt lbl_8030482C
+/* 80304828 00300488 38 60 00 00 */ li r3, 0
+lbl_8030482C:
+/* 8030482C 0030048C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80304830 00300490 7C 08 03 A6 */ mtlr r0
+/* 80304834 00300494 38 21 00 10 */ addi r1, r1, 0x10
+/* 80304838 00300498 4E 80 00 20 */ blr
+
+.global NWC24iCloseDlTaskList
+NWC24iCloseDlTaskList:
+/* 8030483C 0030049C 38 60 00 00 */ li r3, 0
+/* 80304840 003004A0 4E 80 00 20 */ blr
+
+.global NWC24iCheckHeaderConsistency
+NWC24iCheckHeaderConsistency:
+/* 80304844 003004A4 94 21 FD 40 */ stwu r1, -0x2c0(r1)
+/* 80304848 003004A8 7C 08 02 A6 */ mflr r0
+/* 8030484C 003004AC 90 01 02 C4 */ stw r0, 0x2c4(r1)
+/* 80304850 003004B0 39 61 02 C0 */ addi r11, r1, 0x2c0
+/* 80304854 003004B4 4B EC 28 D1 */ bl _savegpr_26
+/* 80304858 003004B8 3B E1 00 A8 */ addi r31, r1, 0xa8
+/* 8030485C 003004BC 7C 7C 1B 78 */ mr r28, r3
+/* 80304860 003004C0 7C 9D 23 78 */ mr r29, r4
+/* 80304864 003004C4 3B C0 00 00 */ li r30, 0
+/* 80304868 003004C8 3F 60 00 01 */ lis r27, 1
+/* 8030486C 003004CC 48 00 02 14 */ b lbl_80304A80
+lbl_80304870:
+/* 80304870 003004D0 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304874 003004D4 57 C0 04 3E */ clrlwi r0, r30, 0x10
+/* 80304878 003004D8 A0 C3 30 10 */ lhz r6, 0x3010(r3)
+/* 8030487C 003004DC 38 A3 30 00 */ addi r5, r3, 0x3000
+/* 80304880 003004E0 7C 00 30 40 */ cmplw r0, r6
+/* 80304884 003004E4 40 80 00 0C */ bge lbl_80304890
+/* 80304888 003004E8 28 00 FF FF */ cmplwi r0, 0xffff
+/* 8030488C 003004EC 40 82 00 0C */ bne lbl_80304898
+lbl_80304890:
+/* 80304890 003004F0 38 80 FF FD */ li r4, -3
+/* 80304894 003004F4 48 00 00 20 */ b lbl_803048B4
+lbl_80304898:
+/* 80304898 003004F8 57 C0 23 36 */ rlwinm r0, r30, 4, 0xc, 0x1b
+/* 8030489C 003004FC 38 80 00 00 */ li r4, 0
+/* 803048A0 00300500 7C 65 02 14 */ add r3, r5, r0
+/* 803048A4 00300504 80 03 00 80 */ lwz r0, 0x80(r3)
+/* 803048A8 00300508 2C 00 00 00 */ cmpwi r0, 0
+/* 803048AC 0030050C 40 82 00 08 */ bne lbl_803048B4
+/* 803048B0 00300510 38 80 FF F3 */ li r4, -13
+lbl_803048B4:
+/* 803048B4 00300514 2C 04 00 00 */ cmpwi r4, 0
+/* 803048B8 00300518 40 82 01 C4 */ bne lbl_80304A7C
+/* 803048BC 0030051C 2C 1D 00 00 */ cmpwi r29, 0
+/* 803048C0 00300520 41 82 01 BC */ beq lbl_80304A7C
+/* 803048C4 00300524 57 C0 04 3E */ clrlwi r0, r30, 0x10
+/* 803048C8 00300528 7C 00 30 40 */ cmplw r0, r6
+/* 803048CC 0030052C 40 80 00 0C */ bge lbl_803048D8
+/* 803048D0 00300530 28 00 FF FF */ cmplwi r0, 0xffff
+/* 803048D4 00300534 40 82 00 0C */ bne lbl_803048E0
+lbl_803048D8:
+/* 803048D8 00300538 38 60 FF FD */ li r3, -3
+/* 803048DC 0030053C 48 00 00 20 */ b lbl_803048FC
+lbl_803048E0:
+/* 803048E0 00300540 57 C0 23 36 */ rlwinm r0, r30, 4, 0xc, 0x1b
+/* 803048E4 00300544 38 60 00 00 */ li r3, 0
+/* 803048E8 00300548 7C 85 02 14 */ add r4, r5, r0
+/* 803048EC 0030054C 80 04 00 80 */ lwz r0, 0x80(r4)
+/* 803048F0 00300550 2C 00 00 00 */ cmpwi r0, 0
+/* 803048F4 00300554 40 82 00 08 */ bne lbl_803048FC
+/* 803048F8 00300558 38 60 FF F3 */ li r3, -13
+lbl_803048FC:
+/* 803048FC 0030055C 2C 03 00 00 */ cmpwi r3, 0
+/* 80304900 00300560 40 80 00 08 */ bge lbl_80304908
+/* 80304904 00300564 48 00 00 78 */ b lbl_8030497C
+lbl_80304908:
+/* 80304908 00300568 80 8D 8C C0 */ lwz r4, lbl_8063DF80-_SDA_BASE_(r13)
+/* 8030490C 0030056C 38 61 00 08 */ addi r3, r1, 8
+/* 80304910 00300570 38 A0 00 0A */ li r5, 0xa
+/* 80304914 00300574 4B FF D2 35 */ bl NWC24FOpen
+/* 80304918 00300578 2C 03 00 00 */ cmpwi r3, 0
+/* 8030491C 0030057C 40 80 00 08 */ bge lbl_80304924
+/* 80304920 00300580 48 00 00 5C */ b lbl_8030497C
+lbl_80304924:
+/* 80304924 00300584 57 C4 49 EC */ rlwinm r4, r30, 9, 7, 0x16
+/* 80304928 00300588 38 61 00 08 */ addi r3, r1, 8
+/* 8030492C 0030058C 38 84 08 00 */ addi r4, r4, 0x800
+/* 80304930 00300590 38 A0 00 00 */ li r5, 0
+/* 80304934 00300594 4B FF D6 F9 */ bl NWC24FSeek
+/* 80304938 00300598 2C 03 00 00 */ cmpwi r3, 0
+/* 8030493C 0030059C 40 80 00 0C */ bge lbl_80304948
+/* 80304940 003005A0 7C 7A 1B 78 */ mr r26, r3
+/* 80304944 003005A4 48 00 00 24 */ b lbl_80304968
+lbl_80304948:
+/* 80304948 003005A8 7F E3 FB 78 */ mr r3, r31
+/* 8030494C 003005AC 38 A1 00 08 */ addi r5, r1, 8
+/* 80304950 003005B0 38 80 02 00 */ li r4, 0x200
+/* 80304954 003005B4 4B FF D8 C5 */ bl NWC24FRead
+/* 80304958 003005B8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030495C 003005BC 3B 40 00 00 */ li r26, 0
+/* 80304960 003005C0 40 80 00 08 */ bge lbl_80304968
+/* 80304964 003005C4 7C 7A 1B 78 */ mr r26, r3
+lbl_80304968:
+/* 80304968 003005C8 38 61 00 08 */ addi r3, r1, 8
+/* 8030496C 003005CC 4B FF D5 2D */ bl NWC24FClose
+/* 80304970 003005D0 2C 1A 00 00 */ cmpwi r26, 0
+/* 80304974 003005D4 41 82 00 08 */ beq lbl_8030497C
+/* 80304978 003005D8 7F 43 D3 78 */ mr r3, r26
+lbl_8030497C:
+/* 8030497C 003005DC 2C 03 00 00 */ cmpwi r3, 0
+/* 80304980 003005E0 40 80 00 74 */ bge lbl_803049F4
+/* 80304984 003005E4 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304988 003005E8 2C 1F 00 00 */ cmpwi r31, 0
+/* 8030498C 003005EC 38 63 30 00 */ addi r3, r3, 0x3000
+/* 80304990 003005F0 40 82 00 0C */ bne lbl_8030499C
+/* 80304994 003005F4 38 00 FF FD */ li r0, -3
+/* 80304998 003005F8 48 00 00 38 */ b lbl_803049D0
+lbl_8030499C:
+/* 8030499C 003005FC 2C 03 00 00 */ cmpwi r3, 0
+/* 803049A0 00300600 40 82 00 0C */ bne lbl_803049AC
+/* 803049A4 00300604 38 00 FF F7 */ li r0, -9
+/* 803049A8 00300608 48 00 00 28 */ b lbl_803049D0
+lbl_803049AC:
+/* 803049AC 0030060C A0 81 00 A8 */ lhz r4, 0xa8(r1)
+/* 803049B0 00300610 28 04 FF FF */ cmplwi r4, 0xffff
+/* 803049B4 00300614 41 82 00 18 */ beq lbl_803049CC
+/* 803049B8 00300618 A0 03 00 10 */ lhz r0, 0x10(r3)
+/* 803049BC 0030061C 7C 04 00 40 */ cmplw r4, r0
+/* 803049C0 00300620 41 80 00 0C */ blt lbl_803049CC
+/* 803049C4 00300624 38 00 FF FD */ li r0, -3
+/* 803049C8 00300628 48 00 00 08 */ b lbl_803049D0
+lbl_803049CC:
+/* 803049CC 0030062C 38 00 00 00 */ li r0, 0
+lbl_803049D0:
+/* 803049D0 00300630 2C 00 00 00 */ cmpwi r0, 0
+/* 803049D4 00300634 40 82 00 A8 */ bne lbl_80304A7C
+/* 803049D8 00300638 7F E3 FB 78 */ mr r3, r31
+/* 803049DC 0030063C 48 00 01 C1 */ bl DeleteDlTask
+/* 803049E0 00300640 2C 03 00 00 */ cmpwi r3, 0
+/* 803049E4 00300644 41 80 00 98 */ blt lbl_80304A7C
+/* 803049E8 00300648 38 1B FF FF */ addi r0, r27, -1
+/* 803049EC 0030064C B0 01 00 A8 */ sth r0, 0xa8(r1)
+/* 803049F0 00300650 48 00 00 8C */ b lbl_80304A7C
+lbl_803049F4:
+/* 803049F4 00300654 80 8D AF 90 */ lwz r4, lbl_80640250-_SDA_BASE_(r13)
+/* 803049F8 00300658 57 C3 04 3E */ clrlwi r3, r30, 0x10
+/* 803049FC 0030065C 38 84 30 00 */ addi r4, r4, 0x3000
+/* 80304A00 00300660 A0 04 00 12 */ lhz r0, 0x12(r4)
+/* 80304A04 00300664 7C 03 00 40 */ cmplw r3, r0
+/* 80304A08 00300668 41 80 00 74 */ blt lbl_80304A7C
+/* 80304A0C 0030066C A8 01 00 C0 */ lha r0, 0xc0(r1)
+/* 80304A10 00300670 2C 00 00 00 */ cmpwi r0, 0
+/* 80304A14 00300674 40 82 00 68 */ bne lbl_80304A7C
+/* 80304A18 00300678 2C 1F 00 00 */ cmpwi r31, 0
+/* 80304A1C 0030067C 40 82 00 0C */ bne lbl_80304A28
+/* 80304A20 00300680 38 00 FF FD */ li r0, -3
+/* 80304A24 00300684 48 00 00 38 */ b lbl_80304A5C
+lbl_80304A28:
+/* 80304A28 00300688 2C 04 00 00 */ cmpwi r4, 0
+/* 80304A2C 0030068C 40 82 00 0C */ bne lbl_80304A38
+/* 80304A30 00300690 38 00 FF F7 */ li r0, -9
+/* 80304A34 00300694 48 00 00 28 */ b lbl_80304A5C
+lbl_80304A38:
+/* 80304A38 00300698 A0 61 00 A8 */ lhz r3, 0xa8(r1)
+/* 80304A3C 0030069C 28 03 FF FF */ cmplwi r3, 0xffff
+/* 80304A40 003006A0 41 82 00 18 */ beq lbl_80304A58
+/* 80304A44 003006A4 A0 04 00 10 */ lhz r0, 0x10(r4)
+/* 80304A48 003006A8 7C 03 00 40 */ cmplw r3, r0
+/* 80304A4C 003006AC 41 80 00 0C */ blt lbl_80304A58
+/* 80304A50 003006B0 38 00 FF FD */ li r0, -3
+/* 80304A54 003006B4 48 00 00 08 */ b lbl_80304A5C
+lbl_80304A58:
+/* 80304A58 003006B8 38 00 00 00 */ li r0, 0
+lbl_80304A5C:
+/* 80304A5C 003006BC 2C 00 00 00 */ cmpwi r0, 0
+/* 80304A60 003006C0 40 82 00 1C */ bne lbl_80304A7C
+/* 80304A64 003006C4 7F E3 FB 78 */ mr r3, r31
+/* 80304A68 003006C8 48 00 01 35 */ bl DeleteDlTask
+/* 80304A6C 003006CC 2C 03 00 00 */ cmpwi r3, 0
+/* 80304A70 003006D0 41 80 00 0C */ blt lbl_80304A7C
+/* 80304A74 003006D4 38 1B FF FF */ addi r0, r27, -1
+/* 80304A78 003006D8 B0 01 00 A8 */ sth r0, 0xa8(r1)
+lbl_80304A7C:
+/* 80304A7C 003006DC 3B DE 00 01 */ addi r30, r30, 1
+lbl_80304A80:
+/* 80304A80 003006E0 A0 1C 00 10 */ lhz r0, 0x10(r28)
+/* 80304A84 003006E4 57 C3 04 3E */ clrlwi r3, r30, 0x10
+/* 80304A88 003006E8 7C 03 00 40 */ cmplw r3, r0
+/* 80304A8C 003006EC 41 80 FD E4 */ blt lbl_80304870
+/* 80304A90 003006F0 39 61 02 C0 */ addi r11, r1, 0x2c0
+/* 80304A94 003006F4 38 60 00 00 */ li r3, 0
+/* 80304A98 003006F8 4B EC 26 D9 */ bl _restgpr_26
+/* 80304A9C 003006FC 80 01 02 C4 */ lwz r0, 0x2c4(r1)
+/* 80304AA0 00300700 7C 08 03 A6 */ mtlr r0
+/* 80304AA4 00300704 38 21 02 C0 */ addi r1, r1, 0x2c0
+/* 80304AA8 00300708 4E 80 00 20 */ blr
+
+.global NWC24iLoadDlHeader
+NWC24iLoadDlHeader:
+/* 80304AAC 0030070C 94 21 FF 50 */ stwu r1, -0xb0(r1)
+/* 80304AB0 00300710 7C 08 02 A6 */ mflr r0
+/* 80304AB4 00300714 38 A0 00 02 */ li r5, 2
+/* 80304AB8 00300718 90 01 00 B4 */ stw r0, 0xb4(r1)
+/* 80304ABC 0030071C 38 61 00 0C */ addi r3, r1, 0xc
+/* 80304AC0 00300720 93 E1 00 AC */ stw r31, 0xac(r1)
+/* 80304AC4 00300724 3B E0 00 00 */ li r31, 0
+/* 80304AC8 00300728 80 8D 8C C0 */ lwz r4, lbl_8063DF80-_SDA_BASE_(r13)
+/* 80304ACC 0030072C 93 E1 00 08 */ stw r31, 8(r1)
+/* 80304AD0 00300730 4B FF D0 79 */ bl NWC24FOpen
+/* 80304AD4 00300734 2C 03 00 00 */ cmpwi r3, 0
+/* 80304AD8 00300738 40 80 00 08 */ bge lbl_80304AE0
+/* 80304ADC 0030073C 48 00 00 AC */ b lbl_80304B88
+lbl_80304AE0:
+/* 80304AE0 00300740 38 61 00 0C */ addi r3, r1, 0xc
+/* 80304AE4 00300744 38 80 00 00 */ li r4, 0
+/* 80304AE8 00300748 38 A0 00 00 */ li r5, 0
+/* 80304AEC 0030074C 4B FF D5 41 */ bl NWC24FSeek
+/* 80304AF0 00300750 2C 03 00 00 */ cmpwi r3, 0
+/* 80304AF4 00300754 40 80 00 08 */ bge lbl_80304AFC
+/* 80304AF8 00300758 48 00 00 28 */ b lbl_80304B20
+lbl_80304AFC:
+/* 80304AFC 0030075C 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304B00 00300760 38 A1 00 0C */ addi r5, r1, 0xc
+/* 80304B04 00300764 38 80 08 00 */ li r4, 0x800
+/* 80304B08 00300768 38 63 30 00 */ addi r3, r3, 0x3000
+/* 80304B0C 0030076C 4B FF D7 0D */ bl NWC24FRead
+/* 80304B10 00300770 2C 03 00 00 */ cmpwi r3, 0
+/* 80304B14 00300774 40 80 00 08 */ bge lbl_80304B1C
+/* 80304B18 00300778 7C 7F 1B 78 */ mr r31, r3
+lbl_80304B1C:
+/* 80304B1C 0030077C 7F E3 FB 78 */ mr r3, r31
+lbl_80304B20:
+/* 80304B20 00300780 2C 03 00 00 */ cmpwi r3, 0
+/* 80304B24 00300784 40 80 00 08 */ bge lbl_80304B2C
+/* 80304B28 00300788 48 00 00 60 */ b lbl_80304B88
+lbl_80304B2C:
+/* 80304B2C 0030078C 38 61 00 0C */ addi r3, r1, 0xc
+/* 80304B30 00300790 38 81 00 08 */ addi r4, r1, 8
+/* 80304B34 00300794 4B FF DA 85 */ bl NWC24FGetLength
+/* 80304B38 00300798 2C 03 00 00 */ cmpwi r3, 0
+/* 80304B3C 0030079C 7C 7F 1B 78 */ mr r31, r3
+/* 80304B40 003007A0 41 80 00 34 */ blt lbl_80304B74
+/* 80304B44 003007A4 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304B48 003007A8 A0 83 30 10 */ lhz r4, 0x3010(r3)
+/* 80304B4C 003007AC 28 04 00 01 */ cmplwi r4, 1
+/* 80304B50 003007B0 41 80 00 18 */ blt lbl_80304B68
+/* 80304B54 003007B4 A0 03 30 12 */ lhz r0, 0x3012(r3)
+/* 80304B58 003007B8 28 00 00 01 */ cmplwi r0, 1
+/* 80304B5C 003007BC 41 80 00 0C */ blt lbl_80304B68
+/* 80304B60 003007C0 7C 04 00 40 */ cmplw r4, r0
+/* 80304B64 003007C4 40 80 00 0C */ bge lbl_80304B70
+lbl_80304B68:
+/* 80304B68 003007C8 3B E0 FF F2 */ li r31, -14
+/* 80304B6C 003007CC 48 00 00 08 */ b lbl_80304B74
+lbl_80304B70:
+/* 80304B70 003007D0 3B E0 00 00 */ li r31, 0
+lbl_80304B74:
+/* 80304B74 003007D4 38 61 00 0C */ addi r3, r1, 0xc
+/* 80304B78 003007D8 4B FF D3 21 */ bl NWC24FClose
+/* 80304B7C 003007DC 2C 1F 00 00 */ cmpwi r31, 0
+/* 80304B80 003007E0 41 82 00 08 */ beq lbl_80304B88
+/* 80304B84 003007E4 7F E3 FB 78 */ mr r3, r31
+lbl_80304B88:
+/* 80304B88 003007E8 80 01 00 B4 */ lwz r0, 0xb4(r1)
+/* 80304B8C 003007EC 83 E1 00 AC */ lwz r31, 0xac(r1)
+/* 80304B90 003007F0 7C 08 03 A6 */ mtlr r0
+/* 80304B94 003007F4 38 21 00 B0 */ addi r1, r1, 0xb0
+/* 80304B98 003007F8 4E 80 00 20 */ blr
+
+.global DeleteDlTask
+DeleteDlTask:
+/* 80304B9C 003007FC 94 21 FF 40 */ stwu r1, -0xc0(r1)
+/* 80304BA0 00300800 7C 08 02 A6 */ mflr r0
+/* 80304BA4 00300804 38 A0 00 04 */ li r5, 4
+/* 80304BA8 00300808 90 01 00 C4 */ stw r0, 0xc4(r1)
+/* 80304BAC 0030080C 93 E1 00 BC */ stw r31, 0xbc(r1)
+/* 80304BB0 00300810 93 C1 00 B8 */ stw r30, 0xb8(r1)
+/* 80304BB4 00300814 93 A1 00 B4 */ stw r29, 0xb4(r1)
+/* 80304BB8 00300818 7C 7D 1B 78 */ mr r29, r3
+/* 80304BBC 0030081C 38 61 00 08 */ addi r3, r1, 8
+/* 80304BC0 00300820 80 8D 8C C0 */ lwz r4, lbl_8063DF80-_SDA_BASE_(r13)
+/* 80304BC4 00300824 4B FF CF 85 */ bl NWC24FOpen
+/* 80304BC8 00300828 2C 03 00 00 */ cmpwi r3, 0
+/* 80304BCC 0030082C 40 80 00 08 */ bge lbl_80304BD4
+/* 80304BD0 00300830 48 00 01 30 */ b lbl_80304D00
+lbl_80304BD4:
+/* 80304BD4 00300834 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304BD8 00300838 38 80 00 00 */ li r4, 0
+/* 80304BDC 0030083C A3 FD 00 00 */ lhz r31, 0(r29)
+/* 80304BE0 00300840 38 A0 02 00 */ li r5, 0x200
+/* 80304BE4 00300844 3B C3 38 00 */ addi r30, r3, 0x3800
+/* 80304BE8 00300848 7F C3 F3 78 */ mr r3, r30
+/* 80304BEC 0030084C 4B CF F5 19 */ bl memset
+/* 80304BF0 00300850 38 60 00 FF */ li r3, 0xff
+/* 80304BF4 00300854 57 E0 23 36 */ rlwinm r0, r31, 4, 0xc, 0x1b
+/* 80304BF8 00300858 98 7E 00 02 */ stb r3, 2(r30)
+/* 80304BFC 0030085C 38 80 00 00 */ li r4, 0
+/* 80304C00 00300860 38 A0 00 10 */ li r5, 0x10
+/* 80304C04 00300864 B3 FE 00 00 */ sth r31, 0(r30)
+/* 80304C08 00300868 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304C0C 0030086C 7C 63 02 14 */ add r3, r3, r0
+/* 80304C10 00300870 38 63 30 80 */ addi r3, r3, 0x3080
+/* 80304C14 00300874 4B CF F4 F1 */ bl memset
+/* 80304C18 00300878 A0 1E 00 00 */ lhz r0, 0(r30)
+/* 80304C1C 0030087C 38 61 00 08 */ addi r3, r1, 8
+/* 80304C20 00300880 38 A0 00 00 */ li r5, 0
+/* 80304C24 00300884 54 04 48 2C */ slwi r4, r0, 9
+/* 80304C28 00300888 38 84 08 00 */ addi r4, r4, 0x800
+/* 80304C2C 0030088C 4B FF D4 01 */ bl NWC24FSeek
+/* 80304C30 00300890 2C 03 00 00 */ cmpwi r3, 0
+/* 80304C34 00300894 40 80 00 08 */ bge lbl_80304C3C
+/* 80304C38 00300898 48 00 00 40 */ b lbl_80304C78
+lbl_80304C3C:
+/* 80304C3C 0030089C 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304C40 003008A0 7F C4 F3 78 */ mr r4, r30
+/* 80304C44 003008A4 38 A0 02 00 */ li r5, 0x200
+/* 80304C48 003008A8 38 63 38 00 */ addi r3, r3, 0x3800
+/* 80304C4C 003008AC 4B CF F3 B5 */ bl memcpy
+/* 80304C50 003008B0 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304C54 003008B4 38 A1 00 08 */ addi r5, r1, 8
+/* 80304C58 003008B8 38 80 02 00 */ li r4, 0x200
+/* 80304C5C 003008BC 38 63 38 00 */ addi r3, r3, 0x3800
+/* 80304C60 003008C0 4B FF D7 85 */ bl NWC24FWrite
+/* 80304C64 003008C4 2C 03 00 00 */ cmpwi r3, 0
+/* 80304C68 003008C8 38 00 00 00 */ li r0, 0
+/* 80304C6C 003008CC 40 80 00 08 */ bge lbl_80304C74
+/* 80304C70 003008D0 7C 60 1B 78 */ mr r0, r3
+lbl_80304C74:
+/* 80304C74 003008D4 7C 03 03 78 */ mr r3, r0
+lbl_80304C78:
+/* 80304C78 003008D8 2C 03 00 00 */ cmpwi r3, 0
+/* 80304C7C 003008DC 7C 7E 1B 78 */ mr r30, r3
+/* 80304C80 003008E0 41 80 00 6C */ blt lbl_80304CEC
+/* 80304C84 003008E4 A0 1D 00 00 */ lhz r0, 0(r29)
+/* 80304C88 003008E8 38 80 00 00 */ li r4, 0
+/* 80304C8C 003008EC 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304C90 003008F0 38 A0 00 10 */ li r5, 0x10
+/* 80304C94 003008F4 54 00 20 36 */ slwi r0, r0, 4
+/* 80304C98 003008F8 7C 63 02 14 */ add r3, r3, r0
+/* 80304C9C 003008FC 38 63 30 80 */ addi r3, r3, 0x3080
+/* 80304CA0 00300900 4B CF F4 65 */ bl memset
+/* 80304CA4 00300904 38 61 00 08 */ addi r3, r1, 8
+/* 80304CA8 00300908 38 80 00 00 */ li r4, 0
+/* 80304CAC 0030090C 38 A0 00 00 */ li r5, 0
+/* 80304CB0 00300910 4B FF D3 7D */ bl NWC24FSeek
+/* 80304CB4 00300914 2C 03 00 00 */ cmpwi r3, 0
+/* 80304CB8 00300918 40 80 00 08 */ bge lbl_80304CC0
+/* 80304CBC 0030091C 48 00 00 2C */ b lbl_80304CE8
+lbl_80304CC0:
+/* 80304CC0 00300920 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304CC4 00300924 38 A1 00 08 */ addi r5, r1, 8
+/* 80304CC8 00300928 38 80 08 00 */ li r4, 0x800
+/* 80304CCC 0030092C 38 63 30 00 */ addi r3, r3, 0x3000
+/* 80304CD0 00300930 4B FF D7 15 */ bl NWC24FWrite
+/* 80304CD4 00300934 2C 03 00 00 */ cmpwi r3, 0
+/* 80304CD8 00300938 38 00 00 00 */ li r0, 0
+/* 80304CDC 0030093C 40 80 00 08 */ bge lbl_80304CE4
+/* 80304CE0 00300940 7C 60 1B 78 */ mr r0, r3
+lbl_80304CE4:
+/* 80304CE4 00300944 7C 03 03 78 */ mr r3, r0
+lbl_80304CE8:
+/* 80304CE8 00300948 7C 7E 1B 78 */ mr r30, r3
+lbl_80304CEC:
+/* 80304CEC 0030094C 38 61 00 08 */ addi r3, r1, 8
+/* 80304CF0 00300950 4B FF D1 A9 */ bl NWC24FClose
+/* 80304CF4 00300954 2C 1E 00 00 */ cmpwi r30, 0
+/* 80304CF8 00300958 41 82 00 08 */ beq lbl_80304D00
+/* 80304CFC 0030095C 7F C3 F3 78 */ mr r3, r30
+lbl_80304D00:
+/* 80304D00 00300960 80 01 00 C4 */ lwz r0, 0xc4(r1)
+/* 80304D04 00300964 83 E1 00 BC */ lwz r31, 0xbc(r1)
+/* 80304D08 00300968 83 C1 00 B8 */ lwz r30, 0xb8(r1)
+/* 80304D0C 0030096C 83 A1 00 B4 */ lwz r29, 0xb4(r1)
+/* 80304D10 00300970 7C 08 03 A6 */ mtlr r0
+/* 80304D14 00300974 38 21 00 C0 */ addi r1, r1, 0xc0
+/* 80304D18 00300978 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/NWC24FriendList.s b/asm/SDK/NWC24/NWC24FriendList.s
new file mode 100644
index 0000000..d375ead
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24FriendList.s
@@ -0,0 +1,86 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24iOpenFriendList
+NWC24iOpenFriendList:
+/* 80304268 002FFEC8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030426C 002FFECC 7C 08 02 A6 */ mflr r0
+/* 80304270 002FFED0 38 80 00 00 */ li r4, 0
+/* 80304274 002FFED4 38 A0 03 60 */ li r5, 0x360
+/* 80304278 002FFED8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030427C 002FFEDC 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 80304280 002FFEE0 38 63 24 00 */ addi r3, r3, 0x2400
+/* 80304284 002FFEE4 90 61 00 08 */ stw r3, 8(r1)
+/* 80304288 002FFEE8 4B FF CD 8D */ bl Mail_memset
+/* 8030428C 002FFEEC 38 61 00 08 */ addi r3, r1, 8
+/* 80304290 002FFEF0 48 00 00 15 */ bl GetCachedFLHeader
+/* 80304294 002FFEF4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80304298 002FFEF8 7C 08 03 A6 */ mtlr r0
+/* 8030429C 002FFEFC 38 21 00 10 */ addi r1, r1, 0x10
+/* 803042A0 002FFF00 4E 80 00 20 */ blr
+
+.global GetCachedFLHeader
+GetCachedFLHeader:
+/* 803042A4 002FFF04 94 21 FF 50 */ stwu r1, -0xb0(r1)
+/* 803042A8 002FFF08 7C 08 02 A6 */ mflr r0
+/* 803042AC 002FFF0C 90 01 00 B4 */ stw r0, 0xb4(r1)
+/* 803042B0 002FFF10 93 E1 00 AC */ stw r31, 0xac(r1)
+/* 803042B4 002FFF14 93 C1 00 A8 */ stw r30, 0xa8(r1)
+/* 803042B8 002FFF18 7C 7E 1B 78 */ mr r30, r3
+/* 803042BC 002FFF1C 80 8D AF 90 */ lwz r4, lbl_80640250-_SDA_BASE_(r13)
+/* 803042C0 002FFF20 38 84 24 00 */ addi r4, r4, 0x2400
+/* 803042C4 002FFF24 90 83 00 00 */ stw r4, 0(r3)
+/* 803042C8 002FFF28 80 64 00 00 */ lwz r3, 0(r4)
+/* 803042CC 002FFF2C 3C 03 A8 9D */ addis r0, r3, 0xa89d
+/* 803042D0 002FFF30 28 00 46 6C */ cmplwi r0, 0x466c
+/* 803042D4 002FFF34 41 82 00 94 */ beq lbl_80304368
+/* 803042D8 002FFF38 80 8D 8C B0 */ lwz r4, lbl_8063DF70-_SDA_BASE_(r13)
+/* 803042DC 002FFF3C 38 61 00 08 */ addi r3, r1, 8
+/* 803042E0 002FFF40 38 A0 00 02 */ li r5, 2
+/* 803042E4 002FFF44 4B FF D8 65 */ bl NWC24FOpen
+/* 803042E8 002FFF48 2C 03 00 00 */ cmpwi r3, 0
+/* 803042EC 002FFF4C 41 82 00 08 */ beq lbl_803042F4
+/* 803042F0 002FFF50 48 00 00 7C */ b lbl_8030436C
+lbl_803042F4:
+/* 803042F4 002FFF54 38 61 00 08 */ addi r3, r1, 8
+/* 803042F8 002FFF58 38 80 00 00 */ li r4, 0
+/* 803042FC 002FFF5C 38 A0 00 00 */ li r5, 0
+/* 80304300 002FFF60 4B FF DD 2D */ bl NWC24FSeek
+/* 80304304 002FFF64 80 7E 00 00 */ lwz r3, 0(r30)
+/* 80304308 002FFF68 38 A1 00 08 */ addi r5, r1, 8
+/* 8030430C 002FFF6C 38 80 03 60 */ li r4, 0x360
+/* 80304310 002FFF70 4B FF DF 09 */ bl NWC24FRead
+/* 80304314 002FFF74 7C 7F 1B 78 */ mr r31, r3
+/* 80304318 002FFF78 38 61 00 08 */ addi r3, r1, 8
+/* 8030431C 002FFF7C 4B FF DB 7D */ bl NWC24FClose
+/* 80304320 002FFF80 2C 1F 00 00 */ cmpwi r31, 0
+/* 80304324 002FFF84 41 82 00 08 */ beq lbl_8030432C
+/* 80304328 002FFF88 7F E3 FB 78 */ mr r3, r31
+lbl_8030432C:
+/* 8030432C 002FFF8C 2C 03 00 00 */ cmpwi r3, 0
+/* 80304330 002FFF90 41 82 00 08 */ beq lbl_80304338
+/* 80304334 002FFF94 48 00 00 38 */ b lbl_8030436C
+lbl_80304338:
+/* 80304338 002FFF98 80 9E 00 00 */ lwz r4, 0(r30)
+/* 8030433C 002FFF9C 80 64 00 00 */ lwz r3, 0(r4)
+/* 80304340 002FFFA0 3C 03 A8 9D */ addis r0, r3, 0xa89d
+/* 80304344 002FFFA4 28 00 46 6C */ cmplwi r0, 0x466c
+/* 80304348 002FFFA8 41 82 00 0C */ beq lbl_80304354
+/* 8030434C 002FFFAC 38 60 FF F2 */ li r3, -14
+/* 80304350 002FFFB0 48 00 00 1C */ b lbl_8030436C
+lbl_80304354:
+/* 80304354 002FFFB4 80 04 00 04 */ lwz r0, 4(r4)
+/* 80304358 002FFFB8 28 00 00 02 */ cmplwi r0, 2
+/* 8030435C 002FFFBC 41 82 00 0C */ beq lbl_80304368
+/* 80304360 002FFFC0 38 60 FF E5 */ li r3, -27
+/* 80304364 002FFFC4 48 00 00 08 */ b lbl_8030436C
+lbl_80304368:
+/* 80304368 002FFFC8 38 60 00 00 */ li r3, 0
+lbl_8030436C:
+/* 8030436C 002FFFCC 80 01 00 B4 */ lwz r0, 0xb4(r1)
+/* 80304370 002FFFD0 83 E1 00 AC */ lwz r31, 0xac(r1)
+/* 80304374 002FFFD4 83 C1 00 A8 */ lwz r30, 0xa8(r1)
+/* 80304378 002FFFD8 7C 08 03 A6 */ mtlr r0
+/* 8030437C 002FFFDC 38 21 00 B0 */ addi r1, r1, 0xb0
+/* 80304380 002FFFE0 4E 80 00 20 */ blr
diff --git a/asm/SDK/NWC24/NWC24Ipc.s b/asm/SDK/NWC24/NWC24Ipc.s
new file mode 100644
index 0000000..eb9183c
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24Ipc.s
@@ -0,0 +1,122 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24iOpenResourceManager
+NWC24iOpenResourceManager:
+/* 8030467C 003002DC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80304680 003002E0 7C 08 02 A6 */ mflr r0
+/* 80304684 003002E4 2C 05 00 00 */ cmpwi r5, 0
+/* 80304688 003002E8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030468C 003002EC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80304690 003002F0 7C BF 2B 78 */ mr r31, r5
+/* 80304694 003002F4 40 82 00 0C */ bne lbl_803046A0
+/* 80304698 003002F8 38 60 FF FD */ li r3, -3
+/* 8030469C 003002FC 48 00 00 44 */ b lbl_803046E0
+lbl_803046A0:
+/* 803046A0 00300300 7C 83 23 78 */ mr r3, r4
+/* 803046A4 00300304 7C C4 33 78 */ mr r4, r6
+/* 803046A8 00300308 4B F9 EA B1 */ bl IOS_Open
+/* 803046AC 0030030C 2C 03 00 00 */ cmpwi r3, 0
+/* 803046B0 00300310 90 7F 00 00 */ stw r3, 0(r31)
+/* 803046B4 00300314 40 80 00 28 */ bge lbl_803046DC
+/* 803046B8 00300318 2C 03 FF FA */ cmpwi r3, -6
+/* 803046BC 0030031C 40 82 00 0C */ bne lbl_803046C8
+/* 803046C0 00300320 38 60 FF E3 */ li r3, -29
+/* 803046C4 00300324 48 00 00 1C */ b lbl_803046E0
+lbl_803046C8:
+/* 803046C8 00300328 2C 03 FF F8 */ cmpwi r3, -8
+/* 803046CC 0030032C 38 60 FF D6 */ li r3, -42
+/* 803046D0 00300330 40 82 00 10 */ bne lbl_803046E0
+/* 803046D4 00300334 38 60 FF E6 */ li r3, -26
+/* 803046D8 00300338 48 00 00 08 */ b lbl_803046E0
+lbl_803046DC:
+/* 803046DC 0030033C 38 60 00 00 */ li r3, 0
+lbl_803046E0:
+/* 803046E0 00300340 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 803046E4 00300344 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 803046E8 00300348 7C 08 03 A6 */ mtlr r0
+/* 803046EC 0030034C 38 21 00 10 */ addi r1, r1, 0x10
+/* 803046F0 00300350 4E 80 00 20 */ blr
+
+.global NWC24iCloseResourceManager
+NWC24iCloseResourceManager:
+/* 803046F4 00300354 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803046F8 00300358 7C 08 02 A6 */ mflr r0
+/* 803046FC 0030035C 7C 83 23 78 */ mr r3, r4
+/* 80304700 00300360 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80304704 00300364 4B F9 EC 35 */ bl IOS_Close
+/* 80304708 00300368 2C 03 00 00 */ cmpwi r3, 0
+/* 8030470C 0030036C 38 60 00 00 */ li r3, 0
+/* 80304710 00300370 40 80 00 08 */ bge lbl_80304718
+/* 80304714 00300374 38 60 FF D6 */ li r3, -42
+lbl_80304718:
+/* 80304718 00300378 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8030471C 0030037C 7C 08 03 A6 */ mtlr r0
+/* 80304720 00300380 38 21 00 10 */ addi r1, r1, 0x10
+/* 80304724 00300384 4E 80 00 20 */ blr
+
+.global NWC24iIoctlResourceManager
+NWC24iIoctlResourceManager:
+/* 80304728 00300388 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8030472C 0030038C 7C 08 02 A6 */ mflr r0
+/* 80304730 00300390 7C 83 23 78 */ mr r3, r4
+/* 80304734 00300394 7C A4 2B 78 */ mr r4, r5
+/* 80304738 00300398 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8030473C 0030039C 7C C5 33 78 */ mr r5, r6
+/* 80304740 003003A0 7C E6 3B 78 */ mr r6, r7
+/* 80304744 003003A4 7D 07 43 78 */ mr r7, r8
+/* 80304748 003003A8 7D 28 4B 78 */ mr r8, r9
+/* 8030474C 003003AC 4B F9 F3 A5 */ bl IOS_Ioctl
+/* 80304750 003003B0 2C 03 00 00 */ cmpwi r3, 0
+/* 80304754 003003B4 38 60 00 00 */ li r3, 0
+/* 80304758 003003B8 40 80 00 08 */ bge lbl_80304760
+/* 8030475C 003003BC 38 60 FF D6 */ li r3, -42
+lbl_80304760:
+/* 80304760 003003C0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80304764 003003C4 7C 08 03 A6 */ mtlr r0
+/* 80304768 003003C8 38 21 00 10 */ addi r1, r1, 0x10
+/* 8030476C 003003CC 4E 80 00 20 */ blr
+
+.global NWC24iIoctlResourceManagerAsync
+NWC24iIoctlResourceManagerAsync:
+/* 80304770 003003D0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80304774 003003D4 7C 08 02 A6 */ mflr r0
+/* 80304778 003003D8 7C 83 23 78 */ mr r3, r4
+/* 8030477C 003003DC 7C A4 2B 78 */ mr r4, r5
+/* 80304780 003003E0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80304784 003003E4 3D 60 80 30 */ lis r11, CallbackAsyncIpc@ha
+/* 80304788 003003E8 7C C5 33 78 */ mr r5, r6
+/* 8030478C 003003EC 7C E6 3B 78 */ mr r6, r7
+/* 80304790 003003F0 7D 07 43 78 */ mr r7, r8
+/* 80304794 003003F4 7D 28 4B 78 */ mr r8, r9
+/* 80304798 003003F8 39 2B 47 D4 */ addi r9, r11, CallbackAsyncIpc@l
+/* 8030479C 003003FC 4B F9 F2 1D */ bl IOS_IoctlAsync
+/* 803047A0 00300400 2C 03 00 00 */ cmpwi r3, 0
+/* 803047A4 00300404 40 80 00 0C */ bge lbl_803047B0
+/* 803047A8 00300408 38 60 FF D6 */ li r3, -42
+/* 803047AC 0030040C 48 00 00 10 */ b lbl_803047BC
+lbl_803047B0:
+/* 803047B0 00300410 38 00 00 01 */ li r0, 1
+/* 803047B4 00300414 38 60 00 00 */ li r3, 0
+/* 803047B8 00300418 90 0D AF C8 */ stw r0, lbl_80640288-_SDA_BASE_(r13)
+lbl_803047BC:
+/* 803047BC 0030041C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 803047C0 00300420 7C 08 03 A6 */ mtlr r0
+/* 803047C4 00300424 38 21 00 10 */ addi r1, r1, 0x10
+/* 803047C8 00300428 4E 80 00 20 */ blr
+
+.global NWC24iIsAsyncRequestPending
+NWC24iIsAsyncRequestPending:
+/* 803047CC 0030042C 80 6D AF C8 */ lwz r3, lbl_80640288-_SDA_BASE_(r13)
+/* 803047D0 00300430 4E 80 00 20 */ blr
+
+CallbackAsyncIpc:
+/* 803047D4 00300434 2C 04 00 00 */ cmpwi r4, 0
+/* 803047D8 00300438 41 82 00 08 */ beq lbl_803047E0
+/* 803047DC 0030043C 90 64 00 00 */ stw r3, 0(r4)
+lbl_803047E0:
+/* 803047E0 00300440 38 00 00 00 */ li r0, 0
+/* 803047E4 00300444 38 60 00 00 */ li r3, 0
+/* 803047E8 00300448 90 0D AF C8 */ stw r0, lbl_80640288-_SDA_BASE_(r13)
+/* 803047EC 0030044C 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..372e88e
--- /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 NWC24iTrySuspendForOpenLib
+/* 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 NWC24InitBase64Table
+/* 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 NWC24iOpenFriendList
+/* 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 NWC24iOpenSecretFriendList
+/* 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 NWC24iOpenDlTaskList
+/* 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 NWC24iResumeForCloseLib
+/* 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 NWC24iCloseDlTaskList
+/* 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 NWC24iResumeForCloseLib
+/* 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/NWC24/NWC24Mime.s b/asm/SDK/NWC24/NWC24Mime.s
new file mode 100644
index 0000000..f41dc54
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24Mime.s
@@ -0,0 +1,191 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24InitBase64Table
+NWC24InitBase64Table:
+/* 80303714 002FF374 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80303718 002FF378 7C 08 02 A6 */ mflr r0
+/* 8030371C 002FF37C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80303720 002FF380 39 61 00 30 */ addi r11, r1, 0x30
+/* 80303724 002FF384 4B EC 39 FD */ bl _savegpr_25
+/* 80303728 002FF388 38 00 00 08 */ li r0, 8
+/* 8030372C 002FF38C 38 C0 00 00 */ li r6, 0
+/* 80303730 002FF390 38 80 FF FF */ li r4, -1
+/* 80303734 002FF394 7C 09 03 A6 */ mtctr r0
+lbl_80303738:
+/* 80303738 002FF398 7C 83 31 AE */ stbx r4, r3, r6
+/* 8030373C 002FF39C 7C A3 32 14 */ add r5, r3, r6
+/* 80303740 002FF3A0 38 C6 00 08 */ addi r6, r6, 8
+/* 80303744 002FF3A4 98 85 00 01 */ stb r4, 1(r5)
+/* 80303748 002FF3A8 98 85 00 02 */ stb r4, 2(r5)
+/* 8030374C 002FF3AC 98 85 00 03 */ stb r4, 3(r5)
+/* 80303750 002FF3B0 98 85 00 04 */ stb r4, 4(r5)
+/* 80303754 002FF3B4 98 85 00 05 */ stb r4, 5(r5)
+/* 80303758 002FF3B8 98 85 00 06 */ stb r4, 6(r5)
+/* 8030375C 002FF3BC 98 85 00 07 */ stb r4, 7(r5)
+/* 80303760 002FF3C0 7C A3 32 14 */ add r5, r3, r6
+/* 80303764 002FF3C4 7C 83 31 AE */ stbx r4, r3, r6
+/* 80303768 002FF3C8 38 C6 00 08 */ addi r6, r6, 8
+/* 8030376C 002FF3CC 98 85 00 01 */ stb r4, 1(r5)
+/* 80303770 002FF3D0 98 85 00 02 */ stb r4, 2(r5)
+/* 80303774 002FF3D4 98 85 00 03 */ stb r4, 3(r5)
+/* 80303778 002FF3D8 98 85 00 04 */ stb r4, 4(r5)
+/* 8030377C 002FF3DC 98 85 00 05 */ stb r4, 5(r5)
+/* 80303780 002FF3E0 98 85 00 06 */ stb r4, 6(r5)
+/* 80303784 002FF3E4 98 85 00 07 */ stb r4, 7(r5)
+/* 80303788 002FF3E8 7C A3 32 14 */ add r5, r3, r6
+/* 8030378C 002FF3EC 7C 83 31 AE */ stbx r4, r3, r6
+/* 80303790 002FF3F0 38 C6 00 08 */ addi r6, r6, 8
+/* 80303794 002FF3F4 98 85 00 01 */ stb r4, 1(r5)
+/* 80303798 002FF3F8 98 85 00 02 */ stb r4, 2(r5)
+/* 8030379C 002FF3FC 98 85 00 03 */ stb r4, 3(r5)
+/* 803037A0 002FF400 98 85 00 04 */ stb r4, 4(r5)
+/* 803037A4 002FF404 98 85 00 05 */ stb r4, 5(r5)
+/* 803037A8 002FF408 98 85 00 06 */ stb r4, 6(r5)
+/* 803037AC 002FF40C 98 85 00 07 */ stb r4, 7(r5)
+/* 803037B0 002FF410 7C A3 32 14 */ add r5, r3, r6
+/* 803037B4 002FF414 7C 83 31 AE */ stbx r4, r3, r6
+/* 803037B8 002FF418 38 C6 00 08 */ addi r6, r6, 8
+/* 803037BC 002FF41C 98 85 00 01 */ stb r4, 1(r5)
+/* 803037C0 002FF420 98 85 00 02 */ stb r4, 2(r5)
+/* 803037C4 002FF424 98 85 00 03 */ stb r4, 3(r5)
+/* 803037C8 002FF428 98 85 00 04 */ stb r4, 4(r5)
+/* 803037CC 002FF42C 98 85 00 05 */ stb r4, 5(r5)
+/* 803037D0 002FF430 98 85 00 06 */ stb r4, 6(r5)
+/* 803037D4 002FF434 98 85 00 07 */ stb r4, 7(r5)
+/* 803037D8 002FF438 42 00 FF 60 */ bdnz lbl_80303738
+/* 803037DC 002FF43C 39 80 00 00 */ li r12, 0
+/* 803037E0 002FF440 39 60 00 01 */ li r11, 1
+/* 803037E4 002FF444 99 83 00 41 */ stb r12, 0x41(r3)
+/* 803037E8 002FF448 39 40 00 02 */ li r10, 2
+/* 803037EC 002FF44C 39 20 00 03 */ li r9, 3
+/* 803037F0 002FF450 39 00 00 04 */ li r8, 4
+/* 803037F4 002FF454 99 63 00 42 */ stb r11, 0x42(r3)
+/* 803037F8 002FF458 38 E0 00 05 */ li r7, 5
+/* 803037FC 002FF45C 38 C0 00 06 */ li r6, 6
+/* 80303800 002FF460 38 A0 00 07 */ li r5, 7
+/* 80303804 002FF464 99 43 00 43 */ stb r10, 0x43(r3)
+/* 80303808 002FF468 39 80 00 08 */ li r12, 8
+/* 8030380C 002FF46C 39 60 00 09 */ li r11, 9
+/* 80303810 002FF470 39 40 00 0A */ li r10, 0xa
+/* 80303814 002FF474 99 23 00 44 */ stb r9, 0x44(r3)
+/* 80303818 002FF478 39 20 00 0B */ li r9, 0xb
+/* 8030381C 002FF47C 38 80 00 18 */ li r4, 0x18
+/* 80303820 002FF480 38 00 00 19 */ li r0, 0x19
+/* 80303824 002FF484 99 03 00 45 */ stb r8, 0x45(r3)
+/* 80303828 002FF488 39 00 00 0C */ li r8, 0xc
+/* 8030382C 002FF48C 98 E3 00 46 */ stb r7, 0x46(r3)
+/* 80303830 002FF490 38 E0 00 0D */ li r7, 0xd
+/* 80303834 002FF494 98 C3 00 47 */ stb r6, 0x47(r3)
+/* 80303838 002FF498 38 C0 00 0E */ li r6, 0xe
+/* 8030383C 002FF49C 98 A3 00 48 */ stb r5, 0x48(r3)
+/* 80303840 002FF4A0 38 A0 00 0F */ li r5, 0xf
+/* 80303844 002FF4A4 99 83 00 49 */ stb r12, 0x49(r3)
+/* 80303848 002FF4A8 39 80 00 10 */ li r12, 0x10
+/* 8030384C 002FF4AC 99 63 00 4A */ stb r11, 0x4a(r3)
+/* 80303850 002FF4B0 39 60 00 11 */ li r11, 0x11
+/* 80303854 002FF4B4 99 43 00 4B */ stb r10, 0x4b(r3)
+/* 80303858 002FF4B8 39 40 00 12 */ li r10, 0x12
+/* 8030385C 002FF4BC 99 23 00 4C */ stb r9, 0x4c(r3)
+/* 80303860 002FF4C0 39 20 00 13 */ li r9, 0x13
+/* 80303864 002FF4C4 99 03 00 4D */ stb r8, 0x4d(r3)
+/* 80303868 002FF4C8 39 00 00 14 */ li r8, 0x14
+/* 8030386C 002FF4CC 98 E3 00 4E */ stb r7, 0x4e(r3)
+/* 80303870 002FF4D0 38 E0 00 15 */ li r7, 0x15
+/* 80303874 002FF4D4 98 C3 00 4F */ stb r6, 0x4f(r3)
+/* 80303878 002FF4D8 38 C0 00 16 */ li r6, 0x16
+/* 8030387C 002FF4DC 98 A3 00 50 */ stb r5, 0x50(r3)
+/* 80303880 002FF4E0 38 A0 00 17 */ li r5, 0x17
+/* 80303884 002FF4E4 99 83 00 51 */ stb r12, 0x51(r3)
+/* 80303888 002FF4E8 99 63 00 52 */ stb r11, 0x52(r3)
+/* 8030388C 002FF4EC 99 43 00 53 */ stb r10, 0x53(r3)
+/* 80303890 002FF4F0 99 23 00 54 */ stb r9, 0x54(r3)
+/* 80303894 002FF4F4 99 03 00 55 */ stb r8, 0x55(r3)
+/* 80303898 002FF4F8 98 E3 00 56 */ stb r7, 0x56(r3)
+/* 8030389C 002FF4FC 98 C3 00 57 */ stb r6, 0x57(r3)
+/* 803038A0 002FF500 98 A3 00 58 */ stb r5, 0x58(r3)
+/* 803038A4 002FF504 98 83 00 59 */ stb r4, 0x59(r3)
+/* 803038A8 002FF508 98 03 00 5A */ stb r0, 0x5a(r3)
+/* 803038AC 002FF50C 3B 20 00 1A */ li r25, 0x1a
+/* 803038B0 002FF510 3B 40 00 1B */ li r26, 0x1b
+/* 803038B4 002FF514 9B 23 00 61 */ stb r25, 0x61(r3)
+/* 803038B8 002FF518 3B 60 00 1C */ li r27, 0x1c
+/* 803038BC 002FF51C 3B 80 00 1D */ li r28, 0x1d
+/* 803038C0 002FF520 3B A0 00 1E */ li r29, 0x1e
+/* 803038C4 002FF524 9B 43 00 62 */ stb r26, 0x62(r3)
+/* 803038C8 002FF528 3B C0 00 1F */ li r30, 0x1f
+/* 803038CC 002FF52C 3B E0 00 20 */ li r31, 0x20
+/* 803038D0 002FF530 39 80 00 21 */ li r12, 0x21
+/* 803038D4 002FF534 9B 63 00 63 */ stb r27, 0x63(r3)
+/* 803038D8 002FF538 3B 20 00 22 */ li r25, 0x22
+/* 803038DC 002FF53C 3B 40 00 23 */ li r26, 0x23
+/* 803038E0 002FF540 3B 60 00 24 */ li r27, 0x24
+/* 803038E4 002FF544 9B 83 00 64 */ stb r28, 0x64(r3)
+/* 803038E8 002FF548 3B 80 00 25 */ li r28, 0x25
+/* 803038EC 002FF54C 39 60 00 32 */ li r11, 0x32
+/* 803038F0 002FF550 39 40 00 33 */ li r10, 0x33
+/* 803038F4 002FF554 9B A3 00 65 */ stb r29, 0x65(r3)
+/* 803038F8 002FF558 3B A0 00 26 */ li r29, 0x26
+/* 803038FC 002FF55C 39 20 00 34 */ li r9, 0x34
+/* 80303900 002FF560 39 00 00 35 */ li r8, 0x35
+/* 80303904 002FF564 9B C3 00 66 */ stb r30, 0x66(r3)
+/* 80303908 002FF568 3B C0 00 27 */ li r30, 0x27
+/* 8030390C 002FF56C 38 E0 00 36 */ li r7, 0x36
+/* 80303910 002FF570 38 C0 00 37 */ li r6, 0x37
+/* 80303914 002FF574 9B E3 00 67 */ stb r31, 0x67(r3)
+/* 80303918 002FF578 3B E0 00 28 */ li r31, 0x28
+/* 8030391C 002FF57C 38 A0 00 38 */ li r5, 0x38
+/* 80303920 002FF580 38 80 00 3E */ li r4, 0x3e
+/* 80303924 002FF584 99 83 00 68 */ stb r12, 0x68(r3)
+/* 80303928 002FF588 39 80 00 29 */ li r12, 0x29
+/* 8030392C 002FF58C 38 00 00 3F */ li r0, 0x3f
+/* 80303930 002FF590 9B 23 00 69 */ stb r25, 0x69(r3)
+/* 80303934 002FF594 3B 20 00 2A */ li r25, 0x2a
+/* 80303938 002FF598 9B 43 00 6A */ stb r26, 0x6a(r3)
+/* 8030393C 002FF59C 3B 40 00 2B */ li r26, 0x2b
+/* 80303940 002FF5A0 9B 63 00 6B */ stb r27, 0x6b(r3)
+/* 80303944 002FF5A4 3B 60 00 2C */ li r27, 0x2c
+/* 80303948 002FF5A8 9B 83 00 6C */ stb r28, 0x6c(r3)
+/* 8030394C 002FF5AC 3B 80 00 2D */ li r28, 0x2d
+/* 80303950 002FF5B0 9B A3 00 6D */ stb r29, 0x6d(r3)
+/* 80303954 002FF5B4 3B A0 00 2E */ li r29, 0x2e
+/* 80303958 002FF5B8 9B C3 00 6E */ stb r30, 0x6e(r3)
+/* 8030395C 002FF5BC 3B C0 00 2F */ li r30, 0x2f
+/* 80303960 002FF5C0 9B E3 00 6F */ stb r31, 0x6f(r3)
+/* 80303964 002FF5C4 3B E0 00 30 */ li r31, 0x30
+/* 80303968 002FF5C8 99 83 00 70 */ stb r12, 0x70(r3)
+/* 8030396C 002FF5CC 39 80 00 31 */ li r12, 0x31
+/* 80303970 002FF5D0 9B 23 00 71 */ stb r25, 0x71(r3)
+/* 80303974 002FF5D4 9B 43 00 72 */ stb r26, 0x72(r3)
+/* 80303978 002FF5D8 9B 63 00 73 */ stb r27, 0x73(r3)
+/* 8030397C 002FF5DC 9B 83 00 74 */ stb r28, 0x74(r3)
+/* 80303980 002FF5E0 9B A3 00 75 */ stb r29, 0x75(r3)
+/* 80303984 002FF5E4 9B C3 00 76 */ stb r30, 0x76(r3)
+/* 80303988 002FF5E8 9B E3 00 77 */ stb r31, 0x77(r3)
+/* 8030398C 002FF5EC 99 83 00 78 */ stb r12, 0x78(r3)
+/* 80303990 002FF5F0 99 63 00 79 */ stb r11, 0x79(r3)
+/* 80303994 002FF5F4 39 61 00 30 */ addi r11, r1, 0x30
+/* 80303998 002FF5F8 99 43 00 7A */ stb r10, 0x7a(r3)
+/* 8030399C 002FF5FC 99 23 00 30 */ stb r9, 0x30(r3)
+/* 803039A0 002FF600 39 20 00 39 */ li r9, 0x39
+/* 803039A4 002FF604 99 03 00 31 */ stb r8, 0x31(r3)
+/* 803039A8 002FF608 39 00 00 3A */ li r8, 0x3a
+/* 803039AC 002FF60C 98 E3 00 32 */ stb r7, 0x32(r3)
+/* 803039B0 002FF610 38 E0 00 3B */ li r7, 0x3b
+/* 803039B4 002FF614 98 C3 00 33 */ stb r6, 0x33(r3)
+/* 803039B8 002FF618 38 C0 00 3C */ li r6, 0x3c
+/* 803039BC 002FF61C 98 A3 00 34 */ stb r5, 0x34(r3)
+/* 803039C0 002FF620 38 A0 00 3D */ li r5, 0x3d
+/* 803039C4 002FF624 99 23 00 35 */ stb r9, 0x35(r3)
+/* 803039C8 002FF628 99 03 00 36 */ stb r8, 0x36(r3)
+/* 803039CC 002FF62C 98 E3 00 37 */ stb r7, 0x37(r3)
+/* 803039D0 002FF630 98 C3 00 38 */ stb r6, 0x38(r3)
+/* 803039D4 002FF634 98 A3 00 39 */ stb r5, 0x39(r3)
+/* 803039D8 002FF638 98 83 00 2B */ stb r4, 0x2b(r3)
+/* 803039DC 002FF63C 98 03 00 2F */ stb r0, 0x2f(r3)
+/* 803039E0 002FF640 4B EC 37 8D */ bl _restgpr_25
+/* 803039E4 002FF644 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803039E8 002FF648 7C 08 03 A6 */ mtlr r0
+/* 803039EC 002FF64C 38 21 00 30 */ addi r1, r1, 0x30
+/* 803039F0 002FF650 4E 80 00 20 */ blr
diff --git a/asm/SDK/NWC24/NWC24Schedule.s b/asm/SDK/NWC24/NWC24Schedule.s
new file mode 100644
index 0000000..2aa8c6e
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24Schedule.s
@@ -0,0 +1,627 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24SuspendScheduler
+NWC24SuspendScheduler:
+/* 803039F4 002FF654 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803039F8 002FF658 7C 08 02 A6 */ mflr r0
+/* 803039FC 002FF65C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80303A00 002FF660 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80303A04 002FF664 3F E0 80 58 */ lis r31, lbl_8057E7A0@ha
+/* 80303A08 002FF668 3B FF E7 A0 */ addi r31, r31, lbl_8057E7A0@l
+/* 80303A0C 002FF66C 93 C1 00 08 */ stw r30, 8(r1)
+/* 80303A10 002FF670 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303A14 002FF674 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303A18 002FF678 40 82 00 5C */ bne lbl_80303A74
+/* 80303A1C 002FF67C 4B F6 AD 41 */ bl OSDisableInterrupts
+/* 80303A20 002FF680 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303A24 002FF684 7C 7E 1B 78 */ mr r30, r3
+/* 80303A28 002FF688 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303A2C 002FF68C 40 82 00 40 */ bne lbl_80303A6C
+/* 80303A30 002FF690 38 7F 00 00 */ addi r3, r31, 0
+/* 80303A34 002FF694 4B F6 BE DD */ bl OSInitMutex
+/* 80303A38 002FF698 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303A3C 002FF69C 4B F6 BE D5 */ bl OSInitMutex
+/* 80303A40 002FF6A0 38 7F 00 40 */ addi r3, r31, 0x40
+/* 80303A44 002FF6A4 38 80 00 00 */ li r4, 0
+/* 80303A48 002FF6A8 38 A0 00 20 */ li r5, 0x20
+/* 80303A4C 002FF6AC 4B D0 06 B9 */ bl memset
+/* 80303A50 002FF6B0 38 7F 00 60 */ addi r3, r31, 0x60
+/* 80303A54 002FF6B4 38 80 00 00 */ li r4, 0
+/* 80303A58 002FF6B8 38 A0 00 20 */ li r5, 0x20
+/* 80303A5C 002FF6BC 4B D0 06 A9 */ bl memset
+/* 80303A60 002FF6C0 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303A64 002FF6C4 60 00 00 01 */ ori r0, r0, 1
+/* 80303A68 002FF6C8 90 0D AF B0 */ stw r0, lbl_80640270-_SDA_BASE_(r13)
+lbl_80303A6C:
+/* 80303A6C 002FF6CC 7F C3 F3 78 */ mr r3, r30
+/* 80303A70 002FF6D0 4B F6 AD 15 */ bl OSRestoreInterrupts
+lbl_80303A74:
+/* 80303A74 002FF6D4 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303A78 002FF6D8 4B F6 BE D1 */ bl OSLockMutex
+/* 80303A7C 002FF6DC 48 00 04 E1 */ bl ExecSuspendScheduler
+/* 80303A80 002FF6E0 2C 03 00 00 */ cmpwi r3, 0
+/* 80303A84 002FF6E4 7C 7E 1B 78 */ mr r30, r3
+/* 80303A88 002FF6E8 41 80 00 18 */ blt lbl_80303AA0
+/* 80303A8C 002FF6EC 80 8D AF B4 */ lwz r4, lbl_80640274-_SDA_BASE_(r13)
+/* 80303A90 002FF6F0 80 0D AF B8 */ lwz r0, lbl_80640278-_SDA_BASE_(r13)
+/* 80303A94 002FF6F4 38 84 00 01 */ addi r4, r4, 1
+/* 80303A98 002FF6F8 90 8D AF B4 */ stw r4, lbl_80640274-_SDA_BASE_(r13)
+/* 80303A9C 002FF6FC 7F C0 18 50 */ subf r30, r0, r3
+lbl_80303AA0:
+/* 80303AA0 002FF700 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303AA4 002FF704 4B F6 BF 81 */ bl OSUnlockMutex
+/* 80303AA8 002FF708 7F C3 F3 78 */ mr r3, r30
+/* 80303AAC 002FF70C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80303AB0 002FF710 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80303AB4 002FF714 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80303AB8 002FF718 7C 08 03 A6 */ mtlr r0
+/* 80303ABC 002FF71C 38 21 00 10 */ addi r1, r1, 0x10
+/* 80303AC0 002FF720 4E 80 00 20 */ blr
+
+.global NWC24ResumeScheduler
+NWC24ResumeScheduler:
+/* 80303AC4 002FF724 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80303AC8 002FF728 7C 08 02 A6 */ mflr r0
+/* 80303ACC 002FF72C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80303AD0 002FF730 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80303AD4 002FF734 3F E0 80 58 */ lis r31, lbl_8057E7A0@ha
+/* 80303AD8 002FF738 3B FF E7 A0 */ addi r31, r31, lbl_8057E7A0@l
+/* 80303ADC 002FF73C 93 C1 00 08 */ stw r30, 8(r1)
+/* 80303AE0 002FF740 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303AE4 002FF744 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303AE8 002FF748 40 82 00 5C */ bne lbl_80303B44
+/* 80303AEC 002FF74C 4B F6 AC 71 */ bl OSDisableInterrupts
+/* 80303AF0 002FF750 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303AF4 002FF754 7C 7E 1B 78 */ mr r30, r3
+/* 80303AF8 002FF758 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303AFC 002FF75C 40 82 00 40 */ bne lbl_80303B3C
+/* 80303B00 002FF760 38 7F 00 00 */ addi r3, r31, 0
+/* 80303B04 002FF764 4B F6 BE 0D */ bl OSInitMutex
+/* 80303B08 002FF768 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303B0C 002FF76C 4B F6 BE 05 */ bl OSInitMutex
+/* 80303B10 002FF770 38 7F 00 40 */ addi r3, r31, 0x40
+/* 80303B14 002FF774 38 80 00 00 */ li r4, 0
+/* 80303B18 002FF778 38 A0 00 20 */ li r5, 0x20
+/* 80303B1C 002FF77C 4B D0 05 E9 */ bl memset
+/* 80303B20 002FF780 38 7F 00 60 */ addi r3, r31, 0x60
+/* 80303B24 002FF784 38 80 00 00 */ li r4, 0
+/* 80303B28 002FF788 38 A0 00 20 */ li r5, 0x20
+/* 80303B2C 002FF78C 4B D0 05 D9 */ bl memset
+/* 80303B30 002FF790 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303B34 002FF794 60 00 00 01 */ ori r0, r0, 1
+/* 80303B38 002FF798 90 0D AF B0 */ stw r0, lbl_80640270-_SDA_BASE_(r13)
+lbl_80303B3C:
+/* 80303B3C 002FF79C 7F C3 F3 78 */ mr r3, r30
+/* 80303B40 002FF7A0 4B F6 AC 45 */ bl OSRestoreInterrupts
+lbl_80303B44:
+/* 80303B44 002FF7A4 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303B48 002FF7A8 4B F6 BE 01 */ bl OSLockMutex
+/* 80303B4C 002FF7AC 80 0D AF B8 */ lwz r0, lbl_80640278-_SDA_BASE_(r13)
+/* 80303B50 002FF7B0 2C 00 00 00 */ cmpwi r0, 0
+/* 80303B54 002FF7B4 40 81 00 18 */ ble lbl_80303B6C
+/* 80303B58 002FF7B8 80 0D AF B4 */ lwz r0, lbl_80640274-_SDA_BASE_(r13)
+/* 80303B5C 002FF7BC 2C 00 00 00 */ cmpwi r0, 0
+/* 80303B60 002FF7C0 40 82 00 0C */ bne lbl_80303B6C
+/* 80303B64 002FF7C4 3B C0 00 00 */ li r30, 0
+/* 80303B68 002FF7C8 48 00 00 28 */ b lbl_80303B90
+lbl_80303B6C:
+/* 80303B6C 002FF7CC 48 00 05 8D */ bl ExecResumeScheduler
+/* 80303B70 002FF7D0 80 8D AF B4 */ lwz r4, lbl_80640274-_SDA_BASE_(r13)
+/* 80303B74 002FF7D4 7C 7E 1B 78 */ mr r30, r3
+/* 80303B78 002FF7D8 2C 04 00 00 */ cmpwi r4, 0
+/* 80303B7C 002FF7DC 40 81 00 14 */ ble lbl_80303B90
+/* 80303B80 002FF7E0 38 84 FF FF */ addi r4, r4, -1
+/* 80303B84 002FF7E4 80 0D AF B8 */ lwz r0, lbl_80640278-_SDA_BASE_(r13)
+/* 80303B88 002FF7E8 90 8D AF B4 */ stw r4, lbl_80640274-_SDA_BASE_(r13)
+/* 80303B8C 002FF7EC 7F C0 18 50 */ subf r30, r0, r3
+lbl_80303B90:
+/* 80303B90 002FF7F0 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303B94 002FF7F4 4B F6 BE 91 */ bl OSUnlockMutex
+/* 80303B98 002FF7F8 7F C3 F3 78 */ mr r3, r30
+/* 80303B9C 002FF7FC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80303BA0 002FF800 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80303BA4 002FF804 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80303BA8 002FF808 7C 08 03 A6 */ mtlr r0
+/* 80303BAC 002FF80C 38 21 00 10 */ addi r1, r1, 0x10
+/* 80303BB0 002FF810 4E 80 00 20 */ blr
+
+.global NWC24iRequestGenerateUserId
+NWC24iRequestGenerateUserId:
+/* 80303BB4 002FF814 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 80303BB8 002FF818 7C 08 02 A6 */ mflr r0
+/* 80303BBC 002FF81C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80303BC0 002FF820 39 61 00 30 */ addi r11, r1, 0x30
+/* 80303BC4 002FF824 4B EC 35 65 */ bl _savegpr_27
+/* 80303BC8 002FF828 3F A0 80 58 */ lis r29, lbl_8057E7A0@ha
+/* 80303BCC 002FF82C 7C 7B 1B 78 */ mr r27, r3
+/* 80303BD0 002FF830 7C 9F 23 78 */ mr r31, r4
+/* 80303BD4 002FF834 3B BD E7 A0 */ addi r29, r29, lbl_8057E7A0@l
+/* 80303BD8 002FF838 4B F6 D7 21 */ bl OSGetCurrentThread
+/* 80303BDC 002FF83C 2C 03 00 00 */ cmpwi r3, 0
+/* 80303BE0 002FF840 40 82 00 0C */ bne lbl_80303BEC
+/* 80303BE4 002FF844 38 60 FF FF */ li r3, -1
+/* 80303BE8 002FF848 48 00 00 28 */ b lbl_80303C10
+lbl_80303BEC:
+/* 80303BEC 002FF84C 4B FF F6 F9 */ bl NWC24IsMsgLibOpened
+/* 80303BF0 002FF850 2C 03 00 00 */ cmpwi r3, 0
+/* 80303BF4 002FF854 40 82 00 10 */ bne lbl_80303C04
+/* 80303BF8 002FF858 4B FF F7 01 */ bl NWC24IsMsgLibOpenedByTool
+/* 80303BFC 002FF85C 2C 03 00 00 */ cmpwi r3, 0
+/* 80303C00 002FF860 41 82 00 0C */ beq lbl_80303C0C
+lbl_80303C04:
+/* 80303C04 002FF864 38 60 FF F6 */ li r3, -10
+/* 80303C08 002FF868 48 00 00 08 */ b lbl_80303C10
+lbl_80303C0C:
+/* 80303C0C 002FF86C 38 60 00 00 */ li r3, 0
+lbl_80303C10:
+/* 80303C10 002FF870 2C 03 00 00 */ cmpwi r3, 0
+/* 80303C14 002FF874 40 80 00 08 */ bge lbl_80303C1C
+/* 80303C18 002FF878 48 00 01 40 */ b lbl_80303D58
+lbl_80303C1C:
+/* 80303C1C 002FF87C 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303C20 002FF880 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303C24 002FF884 40 82 00 5C */ bne lbl_80303C80
+/* 80303C28 002FF888 4B F6 AB 35 */ bl OSDisableInterrupts
+/* 80303C2C 002FF88C 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303C30 002FF890 7C 7E 1B 78 */ mr r30, r3
+/* 80303C34 002FF894 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303C38 002FF898 40 82 00 40 */ bne lbl_80303C78
+/* 80303C3C 002FF89C 38 7D 00 00 */ addi r3, r29, 0
+/* 80303C40 002FF8A0 4B F6 BC D1 */ bl OSInitMutex
+/* 80303C44 002FF8A4 38 7D 00 18 */ addi r3, r29, 0x18
+/* 80303C48 002FF8A8 4B F6 BC C9 */ bl OSInitMutex
+/* 80303C4C 002FF8AC 38 7D 00 40 */ addi r3, r29, 0x40
+/* 80303C50 002FF8B0 38 80 00 00 */ li r4, 0
+/* 80303C54 002FF8B4 38 A0 00 20 */ li r5, 0x20
+/* 80303C58 002FF8B8 4B D0 04 AD */ bl memset
+/* 80303C5C 002FF8BC 38 7D 00 60 */ addi r3, r29, 0x60
+/* 80303C60 002FF8C0 38 80 00 00 */ li r4, 0
+/* 80303C64 002FF8C4 38 A0 00 20 */ li r5, 0x20
+/* 80303C68 002FF8C8 4B D0 04 9D */ bl memset
+/* 80303C6C 002FF8CC 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303C70 002FF8D0 60 00 00 01 */ ori r0, r0, 1
+/* 80303C74 002FF8D4 90 0D AF B0 */ stw r0, lbl_80640270-_SDA_BASE_(r13)
+lbl_80303C78:
+/* 80303C78 002FF8D8 7F C3 F3 78 */ mr r3, r30
+/* 80303C7C 002FF8DC 4B F6 AB 09 */ bl OSRestoreInterrupts
+lbl_80303C80:
+/* 80303C80 002FF8E0 38 7D 00 00 */ addi r3, r29, 0
+/* 80303C84 002FF8E4 4B F6 BC C5 */ bl OSLockMutex
+/* 80303C88 002FF8E8 3F C0 80 44 */ lis r30, lbl_804464D4@ha
+/* 80303C8C 002FF8EC 3C 80 80 44 */ lis r4, lbl_804464C0@ha
+/* 80303C90 002FF8F0 38 7E 64 D4 */ addi r3, r30, lbl_804464D4@l
+/* 80303C94 002FF8F4 38 A1 00 08 */ addi r5, r1, 8
+/* 80303C98 002FF8F8 38 84 64 C0 */ addi r4, r4, lbl_804464C0@l
+/* 80303C9C 002FF8FC 38 C0 00 00 */ li r6, 0
+/* 80303CA0 002FF900 48 00 09 DD */ bl NWC24iOpenResourceManager
+/* 80303CA4 002FF904 2C 03 00 00 */ cmpwi r3, 0
+/* 80303CA8 002FF908 7C 7C 1B 78 */ mr r28, r3
+/* 80303CAC 002FF90C 41 80 00 A0 */ blt lbl_80303D4C
+/* 80303CB0 002FF910 80 81 00 08 */ lwz r4, 8(r1)
+/* 80303CB4 002FF914 38 7E 64 D4 */ addi r3, r30, 0x64d4
+/* 80303CB8 002FF918 39 1D 00 60 */ addi r8, r29, 0x60
+/* 80303CBC 002FF91C 38 A0 00 0F */ li r5, 0xf
+/* 80303CC0 002FF920 38 C0 00 00 */ li r6, 0
+/* 80303CC4 002FF924 38 E0 00 00 */ li r7, 0
+/* 80303CC8 002FF928 39 20 00 20 */ li r9, 0x20
+/* 80303CCC 002FF92C 48 00 0A 5D */ bl NWC24iIoctlResourceManager
+/* 80303CD0 002FF930 2C 03 00 00 */ cmpwi r3, 0
+/* 80303CD4 002FF934 7C 7C 1B 78 */ mr r28, r3
+/* 80303CD8 002FF938 41 80 00 58 */ blt lbl_80303D30
+/* 80303CDC 002FF93C 83 9D 00 60 */ lwz r28, 0x60(r29)
+/* 80303CE0 002FF940 2C 1C 00 00 */ cmpwi r28, 0
+/* 80303CE4 002FF944 41 82 00 14 */ beq lbl_80303CF8
+/* 80303CE8 002FF948 2C 1C FF DD */ cmpwi r28, -35
+/* 80303CEC 002FF94C 41 82 00 0C */ beq lbl_80303CF8
+/* 80303CF0 002FF950 2C 1C FF DC */ cmpwi r28, -36
+/* 80303CF4 002FF954 40 82 00 3C */ bne lbl_80303D30
+lbl_80303CF8:
+/* 80303CF8 002FF958 38 00 00 00 */ li r0, 0
+/* 80303CFC 002FF95C 7C 1B 00 40 */ cmplw r27, r0
+/* 80303D00 002FF960 41 82 00 18 */ beq lbl_80303D18
+/* 80303D04 002FF964 38 7D 00 60 */ addi r3, r29, 0x60
+/* 80303D08 002FF968 80 03 00 04 */ lwz r0, 4(r3)
+/* 80303D0C 002FF96C 80 63 00 08 */ lwz r3, 8(r3)
+/* 80303D10 002FF970 90 7B 00 04 */ stw r3, 4(r27)
+/* 80303D14 002FF974 90 1B 00 00 */ stw r0, 0(r27)
+lbl_80303D18:
+/* 80303D18 002FF978 38 00 00 00 */ li r0, 0
+/* 80303D1C 002FF97C 7C 1F 00 40 */ cmplw r31, r0
+/* 80303D20 002FF980 41 82 00 10 */ beq lbl_80303D30
+/* 80303D24 002FF984 38 7D 00 60 */ addi r3, r29, 0x60
+/* 80303D28 002FF988 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 80303D2C 002FF98C 90 1F 00 00 */ stw r0, 0(r31)
+lbl_80303D30:
+/* 80303D30 002FF990 3C 60 80 44 */ lis r3, lbl_804464D4@ha
+/* 80303D34 002FF994 80 81 00 08 */ lwz r4, 8(r1)
+/* 80303D38 002FF998 38 63 64 D4 */ addi r3, r3, lbl_804464D4@l
+/* 80303D3C 002FF99C 48 00 09 B9 */ bl NWC24iCloseResourceManager
+/* 80303D40 002FF9A0 2C 1C 00 00 */ cmpwi r28, 0
+/* 80303D44 002FF9A4 41 80 00 08 */ blt lbl_80303D4C
+/* 80303D48 002FF9A8 7C 7C 1B 78 */ mr r28, r3
+lbl_80303D4C:
+/* 80303D4C 002FF9AC 38 7D 00 00 */ addi r3, r29, 0
+/* 80303D50 002FF9B0 4B F6 BC D5 */ bl OSUnlockMutex
+/* 80303D54 002FF9B4 7F 83 E3 78 */ mr r3, r28
+lbl_80303D58:
+/* 80303D58 002FF9B8 39 61 00 30 */ addi r11, r1, 0x30
+/* 80303D5C 002FF9BC 4B EC 34 19 */ bl _restgpr_27
+/* 80303D60 002FF9C0 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 80303D64 002FF9C4 7C 08 03 A6 */ mtlr r0
+/* 80303D68 002FF9C8 38 21 00 30 */ addi r1, r1, 0x30
+/* 80303D6C 002FF9CC 4E 80 00 20 */ blr
+
+.global NWC24iStartupSocket
+NWC24iStartupSocket:
+/* 80303D70 002FF9D0 7C 65 1B 78 */ mr r5, r3
+/* 80303D74 002FF9D4 38 60 00 00 */ li r3, 0
+/* 80303D78 002FF9D8 38 80 00 06 */ li r4, 6
+/* 80303D7C 002FF9DC 48 00 03 8C */ b ExecNoParamCommand
+
+.global NWC24iCleanupSocket
+NWC24iCleanupSocket:
+/* 80303D80 002FF9E0 7C 65 1B 78 */ mr r5, r3
+/* 80303D84 002FF9E4 38 60 00 00 */ li r3, 0
+/* 80303D88 002FF9E8 38 80 00 07 */ li r4, 7
+/* 80303D8C 002FF9EC 48 00 03 7C */ b ExecNoParamCommand
+
+.global NWC24iLockSocket
+NWC24iLockSocket:
+/* 80303D90 002FF9F0 38 60 00 00 */ li r3, 0
+/* 80303D94 002FF9F4 38 80 00 08 */ li r4, 8
+/* 80303D98 002FF9F8 38 A0 00 00 */ li r5, 0
+/* 80303D9C 002FF9FC 48 00 03 6C */ b ExecNoParamCommand
+
+.global NWC24iUnlockSocket
+NWC24iUnlockSocket:
+/* 80303DA0 002FFA00 38 60 00 00 */ li r3, 0
+/* 80303DA4 002FFA04 38 80 00 09 */ li r4, 9
+/* 80303DA8 002FFA08 38 A0 00 00 */ li r5, 0
+/* 80303DAC 002FFA0C 48 00 03 5C */ b ExecNoParamCommand
+
+.global NWC24iTrySuspendForOpenLib
+NWC24iTrySuspendForOpenLib:
+/* 80303DB0 002FFA10 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80303DB4 002FFA14 7C 08 02 A6 */ mflr r0
+/* 80303DB8 002FFA18 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80303DBC 002FFA1C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80303DC0 002FFA20 3F E0 80 58 */ lis r31, lbl_8057E7A0@ha
+/* 80303DC4 002FFA24 3B FF E7 A0 */ addi r31, r31, lbl_8057E7A0@l
+/* 80303DC8 002FFA28 93 C1 00 08 */ stw r30, 8(r1)
+/* 80303DCC 002FFA2C 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303DD0 002FFA30 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303DD4 002FFA34 40 82 00 5C */ bne lbl_80303E30
+/* 80303DD8 002FFA38 4B F6 A9 85 */ bl OSDisableInterrupts
+/* 80303DDC 002FFA3C 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303DE0 002FFA40 7C 7E 1B 78 */ mr r30, r3
+/* 80303DE4 002FFA44 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303DE8 002FFA48 40 82 00 40 */ bne lbl_80303E28
+/* 80303DEC 002FFA4C 38 7F 00 00 */ addi r3, r31, 0
+/* 80303DF0 002FFA50 4B F6 BB 21 */ bl OSInitMutex
+/* 80303DF4 002FFA54 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303DF8 002FFA58 4B F6 BB 19 */ bl OSInitMutex
+/* 80303DFC 002FFA5C 38 7F 00 40 */ addi r3, r31, 0x40
+/* 80303E00 002FFA60 38 80 00 00 */ li r4, 0
+/* 80303E04 002FFA64 38 A0 00 20 */ li r5, 0x20
+/* 80303E08 002FFA68 4B D0 02 FD */ bl memset
+/* 80303E0C 002FFA6C 38 7F 00 60 */ addi r3, r31, 0x60
+/* 80303E10 002FFA70 38 80 00 00 */ li r4, 0
+/* 80303E14 002FFA74 38 A0 00 20 */ li r5, 0x20
+/* 80303E18 002FFA78 4B D0 02 ED */ bl memset
+/* 80303E1C 002FFA7C 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303E20 002FFA80 60 00 00 01 */ ori r0, r0, 1
+/* 80303E24 002FFA84 90 0D AF B0 */ stw r0, lbl_80640270-_SDA_BASE_(r13)
+lbl_80303E28:
+/* 80303E28 002FFA88 7F C3 F3 78 */ mr r3, r30
+/* 80303E2C 002FFA8C 4B F6 A9 59 */ bl OSRestoreInterrupts
+lbl_80303E30:
+/* 80303E30 002FFA90 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303E34 002FFA94 4B F6 BD 25 */ bl OSTryLockMutex
+/* 80303E38 002FFA98 2C 03 00 00 */ cmpwi r3, 0
+/* 80303E3C 002FFA9C 40 82 00 0C */ bne lbl_80303E48
+/* 80303E40 002FFAA0 38 60 FF EA */ li r3, -22
+/* 80303E44 002FFAA4 48 00 00 34 */ b lbl_80303E78
+lbl_80303E48:
+/* 80303E48 002FFAA8 38 60 00 00 */ li r3, 0
+/* 80303E4C 002FFAAC 48 00 01 21 */ bl ExecTrySuspendScheduler
+/* 80303E50 002FFAB0 2C 03 00 00 */ cmpwi r3, 0
+/* 80303E54 002FFAB4 7C 7E 1B 78 */ mr r30, r3
+/* 80303E58 002FFAB8 41 80 00 14 */ blt lbl_80303E6C
+/* 80303E5C 002FFABC 80 6D AF B8 */ lwz r3, lbl_80640278-_SDA_BASE_(r13)
+/* 80303E60 002FFAC0 3B C0 00 00 */ li r30, 0
+/* 80303E64 002FFAC4 38 03 00 01 */ addi r0, r3, 1
+/* 80303E68 002FFAC8 90 0D AF B8 */ stw r0, lbl_80640278-_SDA_BASE_(r13)
+lbl_80303E6C:
+/* 80303E6C 002FFACC 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303E70 002FFAD0 4B F6 BB B5 */ bl OSUnlockMutex
+/* 80303E74 002FFAD4 7F C3 F3 78 */ mr r3, r30
+lbl_80303E78:
+/* 80303E78 002FFAD8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80303E7C 002FFADC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80303E80 002FFAE0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80303E84 002FFAE4 7C 08 03 A6 */ mtlr r0
+/* 80303E88 002FFAE8 38 21 00 10 */ addi r1, r1, 0x10
+/* 80303E8C 002FFAEC 4E 80 00 20 */ blr
+
+.global NWC24iResumeForCloseLib
+NWC24iResumeForCloseLib:
+/* 80303E90 002FFAF0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80303E94 002FFAF4 7C 08 02 A6 */ mflr r0
+/* 80303E98 002FFAF8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80303E9C 002FFAFC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 80303EA0 002FFB00 3F E0 80 58 */ lis r31, lbl_8057E7A0@ha
+/* 80303EA4 002FFB04 3B FF E7 A0 */ addi r31, r31, lbl_8057E7A0@l
+/* 80303EA8 002FFB08 93 C1 00 08 */ stw r30, 8(r1)
+/* 80303EAC 002FFB0C 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303EB0 002FFB10 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303EB4 002FFB14 40 82 00 5C */ bne lbl_80303F10
+/* 80303EB8 002FFB18 4B F6 A8 A5 */ bl OSDisableInterrupts
+/* 80303EBC 002FFB1C 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303EC0 002FFB20 7C 7E 1B 78 */ mr r30, r3
+/* 80303EC4 002FFB24 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303EC8 002FFB28 40 82 00 40 */ bne lbl_80303F08
+/* 80303ECC 002FFB2C 38 7F 00 00 */ addi r3, r31, 0
+/* 80303ED0 002FFB30 4B F6 BA 41 */ bl OSInitMutex
+/* 80303ED4 002FFB34 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303ED8 002FFB38 4B F6 BA 39 */ bl OSInitMutex
+/* 80303EDC 002FFB3C 38 7F 00 40 */ addi r3, r31, 0x40
+/* 80303EE0 002FFB40 38 80 00 00 */ li r4, 0
+/* 80303EE4 002FFB44 38 A0 00 20 */ li r5, 0x20
+/* 80303EE8 002FFB48 4B D0 02 1D */ bl memset
+/* 80303EEC 002FFB4C 38 7F 00 60 */ addi r3, r31, 0x60
+/* 80303EF0 002FFB50 38 80 00 00 */ li r4, 0
+/* 80303EF4 002FFB54 38 A0 00 20 */ li r5, 0x20
+/* 80303EF8 002FFB58 4B D0 02 0D */ bl memset
+/* 80303EFC 002FFB5C 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303F00 002FFB60 60 00 00 01 */ ori r0, r0, 1
+/* 80303F04 002FFB64 90 0D AF B0 */ stw r0, lbl_80640270-_SDA_BASE_(r13)
+lbl_80303F08:
+/* 80303F08 002FFB68 7F C3 F3 78 */ mr r3, r30
+/* 80303F0C 002FFB6C 4B F6 A8 79 */ bl OSRestoreInterrupts
+lbl_80303F10:
+/* 80303F10 002FFB70 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303F14 002FFB74 4B F6 BA 35 */ bl OSLockMutex
+/* 80303F18 002FFB78 48 00 01 E1 */ bl ExecResumeScheduler
+/* 80303F1C 002FFB7C 2C 03 00 00 */ cmpwi r3, 0
+/* 80303F20 002FFB80 7C 7E 1B 78 */ mr r30, r3
+/* 80303F24 002FFB84 41 80 00 14 */ blt lbl_80303F38
+/* 80303F28 002FFB88 80 6D AF B8 */ lwz r3, lbl_80640278-_SDA_BASE_(r13)
+/* 80303F2C 002FFB8C 3B C0 00 00 */ li r30, 0
+/* 80303F30 002FFB90 38 03 FF FF */ addi r0, r3, -1
+/* 80303F34 002FFB94 90 0D AF B8 */ stw r0, lbl_80640278-_SDA_BASE_(r13)
+lbl_80303F38:
+/* 80303F38 002FFB98 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80303F3C 002FFB9C 4B F6 BA E9 */ bl OSUnlockMutex
+/* 80303F40 002FFBA0 7F C3 F3 78 */ mr r3, r30
+/* 80303F44 002FFBA4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 80303F48 002FFBA8 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80303F4C 002FFBAC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80303F50 002FFBB0 7C 08 03 A6 */ mtlr r0
+/* 80303F54 002FFBB4 38 21 00 10 */ addi r1, r1, 0x10
+/* 80303F58 002FFBB8 4E 80 00 20 */ blr
+
+.global ExecSuspendScheduler
+ExecSuspendScheduler:
+/* 80303F5C 002FFBBC 38 60 00 00 */ li r3, 0
+/* 80303F60 002FFBC0 38 80 00 01 */ li r4, 1
+/* 80303F64 002FFBC4 38 A0 00 00 */ li r5, 0
+/* 80303F68 002FFBC8 48 00 01 A0 */ b ExecNoParamCommand
+
+.global ExecTrySuspendScheduler
+ExecTrySuspendScheduler:
+/* 80303F6C 002FFBCC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80303F70 002FFBD0 7C 08 02 A6 */ mflr r0
+/* 80303F74 002FFBD4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80303F78 002FFBD8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80303F7C 002FFBDC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 80303F80 002FFBE0 3F C0 80 58 */ lis r30, lbl_8057E7A0@ha
+/* 80303F84 002FFBE4 3B DE E7 A0 */ addi r30, r30, lbl_8057E7A0@l
+/* 80303F88 002FFBE8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 80303F8C 002FFBEC 93 81 00 10 */ stw r28, 0x10(r1)
+/* 80303F90 002FFBF0 7C 7C 1B 78 */ mr r28, r3
+/* 80303F94 002FFBF4 4B F6 D3 65 */ bl OSGetCurrentThread
+/* 80303F98 002FFBF8 2C 03 00 00 */ cmpwi r3, 0
+/* 80303F9C 002FFBFC 40 82 00 0C */ bne lbl_80303FA8
+/* 80303FA0 002FFC00 38 60 FF FF */ li r3, -1
+/* 80303FA4 002FFC04 48 00 00 28 */ b lbl_80303FCC
+lbl_80303FA8:
+/* 80303FA8 002FFC08 4B FF F3 3D */ bl NWC24IsMsgLibOpened
+/* 80303FAC 002FFC0C 2C 03 00 00 */ cmpwi r3, 0
+/* 80303FB0 002FFC10 40 82 00 10 */ bne lbl_80303FC0
+/* 80303FB4 002FFC14 4B FF F3 45 */ bl NWC24IsMsgLibOpenedByTool
+/* 80303FB8 002FFC18 2C 03 00 00 */ cmpwi r3, 0
+/* 80303FBC 002FFC1C 41 82 00 0C */ beq lbl_80303FC8
+lbl_80303FC0:
+/* 80303FC0 002FFC20 38 60 FF F6 */ li r3, -10
+/* 80303FC4 002FFC24 48 00 00 08 */ b lbl_80303FCC
+lbl_80303FC8:
+/* 80303FC8 002FFC28 38 60 00 00 */ li r3, 0
+lbl_80303FCC:
+/* 80303FCC 002FFC2C 2C 03 00 00 */ cmpwi r3, 0
+/* 80303FD0 002FFC30 40 80 00 08 */ bge lbl_80303FD8
+/* 80303FD4 002FFC34 48 00 01 04 */ b lbl_803040D8
+lbl_80303FD8:
+/* 80303FD8 002FFC38 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303FDC 002FFC3C 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303FE0 002FFC40 40 82 00 5C */ bne lbl_8030403C
+/* 80303FE4 002FFC44 4B F6 A7 79 */ bl OSDisableInterrupts
+/* 80303FE8 002FFC48 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80303FEC 002FFC4C 7C 7F 1B 78 */ mr r31, r3
+/* 80303FF0 002FFC50 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80303FF4 002FFC54 40 82 00 40 */ bne lbl_80304034
+/* 80303FF8 002FFC58 38 7E 00 00 */ addi r3, r30, 0
+/* 80303FFC 002FFC5C 4B F6 B9 15 */ bl OSInitMutex
+/* 80304000 002FFC60 38 7E 00 18 */ addi r3, r30, 0x18
+/* 80304004 002FFC64 4B F6 B9 0D */ bl OSInitMutex
+/* 80304008 002FFC68 38 7E 00 40 */ addi r3, r30, 0x40
+/* 8030400C 002FFC6C 38 80 00 00 */ li r4, 0
+/* 80304010 002FFC70 38 A0 00 20 */ li r5, 0x20
+/* 80304014 002FFC74 4B D0 00 F1 */ bl memset
+/* 80304018 002FFC78 38 7E 00 60 */ addi r3, r30, 0x60
+/* 8030401C 002FFC7C 38 80 00 00 */ li r4, 0
+/* 80304020 002FFC80 38 A0 00 20 */ li r5, 0x20
+/* 80304024 002FFC84 4B D0 00 E1 */ bl memset
+/* 80304028 002FFC88 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 8030402C 002FFC8C 60 00 00 01 */ ori r0, r0, 1
+/* 80304030 002FFC90 90 0D AF B0 */ stw r0, lbl_80640270-_SDA_BASE_(r13)
+lbl_80304034:
+/* 80304034 002FFC94 7F E3 FB 78 */ mr r3, r31
+/* 80304038 002FFC98 4B F6 A7 4D */ bl OSRestoreInterrupts
+lbl_8030403C:
+/* 8030403C 002FFC9C 38 7E 00 00 */ addi r3, r30, 0
+/* 80304040 002FFCA0 4B F6 BB 19 */ bl OSTryLockMutex
+/* 80304044 002FFCA4 2C 03 00 00 */ cmpwi r3, 0
+/* 80304048 002FFCA8 40 82 00 0C */ bne lbl_80304054
+/* 8030404C 002FFCAC 38 60 FF EA */ li r3, -22
+/* 80304050 002FFCB0 48 00 00 88 */ b lbl_803040D8
+lbl_80304054:
+/* 80304054 002FFCB4 3F E0 80 44 */ lis r31, lbl_804464F0@ha
+/* 80304058 002FFCB8 3C 80 80 44 */ lis r4, lbl_804464C0@ha
+/* 8030405C 002FFCBC 38 7F 64 F0 */ addi r3, r31, lbl_804464F0@l
+/* 80304060 002FFCC0 38 A1 00 08 */ addi r5, r1, 8
+/* 80304064 002FFCC4 38 84 64 C0 */ addi r4, r4, lbl_804464C0@l
+/* 80304068 002FFCC8 38 C0 00 00 */ li r6, 0
+/* 8030406C 002FFCCC 48 00 06 11 */ bl NWC24iOpenResourceManager
+/* 80304070 002FFCD0 2C 03 00 00 */ cmpwi r3, 0
+/* 80304074 002FFCD4 7C 7D 1B 78 */ mr r29, r3
+/* 80304078 002FFCD8 41 80 00 54 */ blt lbl_803040CC
+/* 8030407C 002FFCDC 93 9E 00 40 */ stw r28, 0x40(r30)
+/* 80304080 002FFCE0 38 7F 64 F0 */ addi r3, r31, 0x64f0
+/* 80304084 002FFCE4 80 81 00 08 */ lwz r4, 8(r1)
+/* 80304088 002FFCE8 38 DE 00 40 */ addi r6, r30, 0x40
+/* 8030408C 002FFCEC 39 1E 00 60 */ addi r8, r30, 0x60
+/* 80304090 002FFCF0 38 A0 00 02 */ li r5, 2
+/* 80304094 002FFCF4 38 E0 00 20 */ li r7, 0x20
+/* 80304098 002FFCF8 39 20 00 20 */ li r9, 0x20
+/* 8030409C 002FFCFC 48 00 06 8D */ bl NWC24iIoctlResourceManager
+/* 803040A0 002FFD00 2C 03 00 00 */ cmpwi r3, 0
+/* 803040A4 002FFD04 7C 7D 1B 78 */ mr r29, r3
+/* 803040A8 002FFD08 41 80 00 08 */ blt lbl_803040B0
+/* 803040AC 002FFD0C 83 BE 00 60 */ lwz r29, 0x60(r30)
+lbl_803040B0:
+/* 803040B0 002FFD10 3C 60 80 44 */ lis r3, lbl_804464F0@ha
+/* 803040B4 002FFD14 80 81 00 08 */ lwz r4, 8(r1)
+/* 803040B8 002FFD18 38 63 64 F0 */ addi r3, r3, lbl_804464F0@l
+/* 803040BC 002FFD1C 48 00 06 39 */ bl NWC24iCloseResourceManager
+/* 803040C0 002FFD20 2C 03 00 00 */ cmpwi r3, 0
+/* 803040C4 002FFD24 40 80 00 08 */ bge lbl_803040CC
+/* 803040C8 002FFD28 7C 7D 1B 78 */ mr r29, r3
+lbl_803040CC:
+/* 803040CC 002FFD2C 38 7E 00 00 */ addi r3, r30, 0
+/* 803040D0 002FFD30 4B F6 B9 55 */ bl OSUnlockMutex
+/* 803040D4 002FFD34 7F A3 EB 78 */ mr r3, r29
+lbl_803040D8:
+/* 803040D8 002FFD38 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803040DC 002FFD3C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 803040E0 002FFD40 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 803040E4 002FFD44 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 803040E8 002FFD48 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 803040EC 002FFD4C 7C 08 03 A6 */ mtlr r0
+/* 803040F0 002FFD50 38 21 00 20 */ addi r1, r1, 0x20
+/* 803040F4 002FFD54 4E 80 00 20 */ blr
+
+.global ExecResumeScheduler
+ExecResumeScheduler:
+/* 803040F8 002FFD58 38 60 00 00 */ li r3, 0
+/* 803040FC 002FFD5C 38 80 00 03 */ li r4, 3
+/* 80304100 002FFD60 38 A0 00 00 */ li r5, 0
+/* 80304104 002FFD64 48 00 00 04 */ b ExecNoParamCommand
+
+ExecNoParamCommand:
+/* 80304108 002FFD68 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 8030410C 002FFD6C 7C 08 02 A6 */ mflr r0
+/* 80304110 002FFD70 90 01 00 34 */ stw r0, 0x34(r1)
+/* 80304114 002FFD74 39 61 00 30 */ addi r11, r1, 0x30
+/* 80304118 002FFD78 4B EC 30 11 */ bl _savegpr_27
+/* 8030411C 002FFD7C 3F E0 80 58 */ lis r31, lbl_8057E7A0@ha
+/* 80304120 002FFD80 7C 7B 1B 78 */ mr r27, r3
+/* 80304124 002FFD84 7C 9C 23 78 */ mr r28, r4
+/* 80304128 002FFD88 7C BD 2B 78 */ mr r29, r5
+/* 8030412C 002FFD8C 3B FF E7 A0 */ addi r31, r31, lbl_8057E7A0@l
+/* 80304130 002FFD90 4B F6 D1 C9 */ bl OSGetCurrentThread
+/* 80304134 002FFD94 2C 03 00 00 */ cmpwi r3, 0
+/* 80304138 002FFD98 40 82 00 0C */ bne lbl_80304144
+/* 8030413C 002FFD9C 38 60 FF FF */ li r3, -1
+/* 80304140 002FFDA0 48 00 01 10 */ b lbl_80304250
+lbl_80304144:
+/* 80304144 002FFDA4 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80304148 002FFDA8 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 8030414C 002FFDAC 40 82 00 5C */ bne lbl_803041A8
+/* 80304150 002FFDB0 4B F6 A6 0D */ bl OSDisableInterrupts
+/* 80304154 002FFDB4 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80304158 002FFDB8 7C 7E 1B 78 */ mr r30, r3
+/* 8030415C 002FFDBC 54 00 07 FF */ clrlwi. r0, r0, 0x1f
+/* 80304160 002FFDC0 40 82 00 40 */ bne lbl_803041A0
+/* 80304164 002FFDC4 38 7F 00 00 */ addi r3, r31, 0
+/* 80304168 002FFDC8 4B F6 B7 A9 */ bl OSInitMutex
+/* 8030416C 002FFDCC 38 7F 00 18 */ addi r3, r31, 0x18
+/* 80304170 002FFDD0 4B F6 B7 A1 */ bl OSInitMutex
+/* 80304174 002FFDD4 38 7F 00 40 */ addi r3, r31, 0x40
+/* 80304178 002FFDD8 38 80 00 00 */ li r4, 0
+/* 8030417C 002FFDDC 38 A0 00 20 */ li r5, 0x20
+/* 80304180 002FFDE0 4B CF FF 85 */ bl memset
+/* 80304184 002FFDE4 38 7F 00 60 */ addi r3, r31, 0x60
+/* 80304188 002FFDE8 38 80 00 00 */ li r4, 0
+/* 8030418C 002FFDEC 38 A0 00 20 */ li r5, 0x20
+/* 80304190 002FFDF0 4B CF FF 75 */ bl memset
+/* 80304194 002FFDF4 80 0D AF B0 */ lwz r0, lbl_80640270-_SDA_BASE_(r13)
+/* 80304198 002FFDF8 60 00 00 01 */ ori r0, r0, 1
+/* 8030419C 002FFDFC 90 0D AF B0 */ stw r0, lbl_80640270-_SDA_BASE_(r13)
+lbl_803041A0:
+/* 803041A0 002FFE00 7F C3 F3 78 */ mr r3, r30
+/* 803041A4 002FFE04 4B F6 A5 E1 */ bl OSRestoreInterrupts
+lbl_803041A8:
+/* 803041A8 002FFE08 38 7F 00 00 */ addi r3, r31, 0
+/* 803041AC 002FFE0C 4B F6 B7 9D */ bl OSLockMutex
+/* 803041B0 002FFE10 3C 80 80 44 */ lis r4, lbl_804464C0@ha
+/* 803041B4 002FFE14 7F 63 DB 78 */ mr r3, r27
+/* 803041B8 002FFE18 38 84 64 C0 */ addi r4, r4, lbl_804464C0@l
+/* 803041BC 002FFE1C 38 A1 00 08 */ addi r5, r1, 8
+/* 803041C0 002FFE20 38 C0 00 00 */ li r6, 0
+/* 803041C4 002FFE24 48 00 04 B9 */ bl NWC24iOpenResourceManager
+/* 803041C8 002FFE28 2C 03 00 00 */ cmpwi r3, 0
+/* 803041CC 002FFE2C 7C 7E 1B 78 */ mr r30, r3
+/* 803041D0 002FFE30 41 80 00 74 */ blt lbl_80304244
+/* 803041D4 002FFE34 80 81 00 08 */ lwz r4, 8(r1)
+/* 803041D8 002FFE38 7F 63 DB 78 */ mr r3, r27
+/* 803041DC 002FFE3C 7F 85 E3 78 */ mr r5, r28
+/* 803041E0 002FFE40 39 1F 00 60 */ addi r8, r31, 0x60
+/* 803041E4 002FFE44 38 C0 00 00 */ li r6, 0
+/* 803041E8 002FFE48 38 E0 00 00 */ li r7, 0
+/* 803041EC 002FFE4C 39 20 00 20 */ li r9, 0x20
+/* 803041F0 002FFE50 48 00 05 39 */ bl NWC24iIoctlResourceManager
+/* 803041F4 002FFE54 2C 03 00 00 */ cmpwi r3, 0
+/* 803041F8 002FFE58 7C 7E 1B 78 */ mr r30, r3
+/* 803041FC 002FFE5C 41 80 00 30 */ blt lbl_8030422C
+/* 80304200 002FFE60 83 DF 00 60 */ lwz r30, 0x60(r31)
+/* 80304204 002FFE64 2C 1E FF FE */ cmpwi r30, -2
+/* 80304208 002FFE68 41 82 00 0C */ beq lbl_80304214
+/* 8030420C 002FFE6C 2C 1E FF DF */ cmpwi r30, -33
+/* 80304210 002FFE70 40 82 00 1C */ bne lbl_8030422C
+lbl_80304214:
+/* 80304214 002FFE74 38 00 00 00 */ li r0, 0
+/* 80304218 002FFE78 7C 1D 00 40 */ cmplw r29, r0
+/* 8030421C 002FFE7C 41 82 00 10 */ beq lbl_8030422C
+/* 80304220 002FFE80 38 7F 00 60 */ addi r3, r31, 0x60
+/* 80304224 002FFE84 80 03 00 04 */ lwz r0, 4(r3)
+/* 80304228 002FFE88 90 1D 00 00 */ stw r0, 0(r29)
+lbl_8030422C:
+/* 8030422C 002FFE8C 80 81 00 08 */ lwz r4, 8(r1)
+/* 80304230 002FFE90 7F 63 DB 78 */ mr r3, r27
+/* 80304234 002FFE94 48 00 04 C1 */ bl NWC24iCloseResourceManager
+/* 80304238 002FFE98 2C 03 00 00 */ cmpwi r3, 0
+/* 8030423C 002FFE9C 40 80 00 08 */ bge lbl_80304244
+/* 80304240 002FFEA0 7C 7E 1B 78 */ mr r30, r3
+lbl_80304244:
+/* 80304244 002FFEA4 38 7F 00 00 */ addi r3, r31, 0
+/* 80304248 002FFEA8 4B F6 B7 DD */ bl OSUnlockMutex
+/* 8030424C 002FFEAC 7F C3 F3 78 */ mr r3, r30
+lbl_80304250:
+/* 80304250 002FFEB0 39 61 00 30 */ addi r11, r1, 0x30
+/* 80304254 002FFEB4 4B EC 2F 21 */ bl _restgpr_27
+/* 80304258 002FFEB8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 8030425C 002FFEBC 7C 08 03 A6 */ mtlr r0
+/* 80304260 002FFEC0 38 21 00 30 */ addi r1, r1, 0x30
+/* 80304264 002FFEC4 4E 80 00 20 */ blr
diff --git a/asm/SDK/NWC24/NWC24SecretFList.s b/asm/SDK/NWC24/NWC24SecretFList.s
new file mode 100644
index 0000000..fc31bd4
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24SecretFList.s
@@ -0,0 +1,86 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24iOpenSecretFriendList
+NWC24iOpenSecretFriendList:
+/* 80304384 002FFFE4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80304388 002FFFE8 7C 08 02 A6 */ mflr r0
+/* 8030438C 002FFFEC 38 80 00 00 */ li r4, 0
+/* 80304390 002FFFF0 38 A0 08 00 */ li r5, 0x800
+/* 80304394 002FFFF4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80304398 002FFFF8 80 6D AF 90 */ lwz r3, lbl_80640250-_SDA_BASE_(r13)
+/* 8030439C 002FFFFC 38 63 28 00 */ addi r3, r3, 0x2800
+/* 803043A0 00300000 90 61 00 08 */ stw r3, 8(r1)
+/* 803043A4 00300004 4B FF CC 71 */ bl Mail_memset
+/* 803043A8 00300008 38 61 00 08 */ addi r3, r1, 8
+/* 803043AC 0030000C 48 00 00 15 */ bl GetCachedSecretFLHeader
+/* 803043B0 00300010 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 803043B4 00300014 7C 08 03 A6 */ mtlr r0
+/* 803043B8 00300018 38 21 00 10 */ addi r1, r1, 0x10
+/* 803043BC 0030001C 4E 80 00 20 */ blr
+
+.global GetCachedSecretFLHeader
+GetCachedSecretFLHeader:
+/* 803043C0 00300020 94 21 FF 50 */ stwu r1, -0xb0(r1)
+/* 803043C4 00300024 7C 08 02 A6 */ mflr r0
+/* 803043C8 00300028 90 01 00 B4 */ stw r0, 0xb4(r1)
+/* 803043CC 0030002C 93 E1 00 AC */ stw r31, 0xac(r1)
+/* 803043D0 00300030 93 C1 00 A8 */ stw r30, 0xa8(r1)
+/* 803043D4 00300034 7C 7E 1B 78 */ mr r30, r3
+/* 803043D8 00300038 80 8D AF 90 */ lwz r4, lbl_80640250-_SDA_BASE_(r13)
+/* 803043DC 0030003C 38 84 28 00 */ addi r4, r4, 0x2800
+/* 803043E0 00300040 90 83 00 00 */ stw r4, 0(r3)
+/* 803043E4 00300044 80 64 00 00 */ lwz r3, 0(r4)
+/* 803043E8 00300048 3C 03 A8 9D */ addis r0, r3, 0xa89d
+/* 803043EC 0030004C 28 00 46 73 */ cmplwi r0, 0x4673
+/* 803043F0 00300050 41 82 00 94 */ beq lbl_80304484
+/* 803043F4 00300054 80 8D 8C B8 */ lwz r4, lbl_8063DF78-_SDA_BASE_(r13)
+/* 803043F8 00300058 38 61 00 08 */ addi r3, r1, 8
+/* 803043FC 0030005C 38 A0 00 02 */ li r5, 2
+/* 80304400 00300060 4B FF D7 49 */ bl NWC24FOpen
+/* 80304404 00300064 2C 03 00 00 */ cmpwi r3, 0
+/* 80304408 00300068 41 82 00 08 */ beq lbl_80304410
+/* 8030440C 0030006C 48 00 00 7C */ b lbl_80304488
+lbl_80304410:
+/* 80304410 00300070 38 61 00 08 */ addi r3, r1, 8
+/* 80304414 00300074 38 80 00 00 */ li r4, 0
+/* 80304418 00300078 38 A0 00 00 */ li r5, 0
+/* 8030441C 0030007C 4B FF DC 11 */ bl NWC24FSeek
+/* 80304420 00300080 80 7E 00 00 */ lwz r3, 0(r30)
+/* 80304424 00300084 38 A1 00 08 */ addi r5, r1, 8
+/* 80304428 00300088 38 80 08 00 */ li r4, 0x800
+/* 8030442C 0030008C 4B FF DD ED */ bl NWC24FRead
+/* 80304430 00300090 7C 7F 1B 78 */ mr r31, r3
+/* 80304434 00300094 38 61 00 08 */ addi r3, r1, 8
+/* 80304438 00300098 4B FF DA 61 */ bl NWC24FClose
+/* 8030443C 0030009C 2C 1F 00 00 */ cmpwi r31, 0
+/* 80304440 003000A0 41 82 00 08 */ beq lbl_80304448
+/* 80304444 003000A4 7F E3 FB 78 */ mr r3, r31
+lbl_80304448:
+/* 80304448 003000A8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030444C 003000AC 41 82 00 08 */ beq lbl_80304454
+/* 80304450 003000B0 48 00 00 38 */ b lbl_80304488
+lbl_80304454:
+/* 80304454 003000B4 80 9E 00 00 */ lwz r4, 0(r30)
+/* 80304458 003000B8 80 64 00 00 */ lwz r3, 0(r4)
+/* 8030445C 003000BC 3C 03 A8 9D */ addis r0, r3, 0xa89d
+/* 80304460 003000C0 28 00 46 73 */ cmplwi r0, 0x4673
+/* 80304464 003000C4 41 82 00 0C */ beq lbl_80304470
+/* 80304468 003000C8 38 60 FF F2 */ li r3, -14
+/* 8030446C 003000CC 48 00 00 1C */ b lbl_80304488
+lbl_80304470:
+/* 80304470 003000D0 80 04 00 04 */ lwz r0, 4(r4)
+/* 80304474 003000D4 28 00 00 02 */ cmplwi r0, 2
+/* 80304478 003000D8 41 82 00 0C */ beq lbl_80304484
+/* 8030447C 003000DC 38 60 FF E5 */ li r3, -27
+/* 80304480 003000E0 48 00 00 08 */ b lbl_80304488
+lbl_80304484:
+/* 80304484 003000E4 38 60 00 00 */ li r3, 0
+lbl_80304488:
+/* 80304488 003000E8 80 01 00 B4 */ lwz r0, 0xb4(r1)
+/* 8030448C 003000EC 83 E1 00 AC */ lwz r31, 0xac(r1)
+/* 80304490 003000F0 83 C1 00 A8 */ lwz r30, 0xa8(r1)
+/* 80304494 003000F4 7C 08 03 A6 */ mtlr r0
+/* 80304498 003000F8 38 21 00 B0 */ addi r1, r1, 0xb0
+/* 8030449C 003000FC 4E 80 00 20 */ blr
diff --git a/asm/SDK/NWC24/NWC24StdAPI.s b/asm/SDK/NWC24/NWC24StdAPI.s
new file mode 100644
index 0000000..2697038
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24StdAPI.s
@@ -0,0 +1,847 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global STD_strnlen
+STD_strnlen:
+/* 80300FE4 002FCC44 38 A0 00 00 */ li r5, 0
+/* 80300FE8 002FCC48 7C 89 03 A6 */ mtctr r4
+/* 80300FEC 002FCC4C 28 04 00 00 */ cmplwi r4, 0
+/* 80300FF0 002FCC50 40 81 00 1C */ ble lbl_8030100C
+lbl_80300FF4:
+/* 80300FF4 002FCC54 88 03 00 00 */ lbz r0, 0(r3)
+/* 80300FF8 002FCC58 7C 00 07 75 */ extsb. r0, r0
+/* 80300FFC 002FCC5C 41 82 00 10 */ beq lbl_8030100C
+/* 80301000 002FCC60 38 A5 00 01 */ addi r5, r5, 1
+/* 80301004 002FCC64 38 63 00 01 */ addi r3, r3, 1
+/* 80301008 002FCC68 42 00 FF EC */ bdnz lbl_80300FF4
+lbl_8030100C:
+/* 8030100C 002FCC6C 7C A3 2B 78 */ mr r3, r5
+/* 80301010 002FCC70 4E 80 00 20 */ blr
+
+.global Mail_memset
+Mail_memset:
+/* 80301014 002FCC74 2C 05 00 00 */ cmpwi r5, 0
+/* 80301018 002FCC78 39 00 00 00 */ li r8, 0
+/* 8030101C 002FCC7C 4D 82 00 20 */ beqlr
+/* 80301020 002FCC80 28 05 00 08 */ cmplwi r5, 8
+/* 80301024 002FCC84 38 C5 FF F8 */ addi r6, r5, -8
+/* 80301028 002FCC88 40 81 00 48 */ ble lbl_80301070
+/* 8030102C 002FCC8C 38 06 00 07 */ addi r0, r6, 7
+/* 80301030 002FCC90 7C 67 1B 78 */ mr r7, r3
+/* 80301034 002FCC94 54 00 E8 FE */ srwi r0, r0, 3
+/* 80301038 002FCC98 7C 09 03 A6 */ mtctr r0
+/* 8030103C 002FCC9C 28 06 00 00 */ cmplwi r6, 0
+/* 80301040 002FCCA0 40 81 00 30 */ ble lbl_80301070
+lbl_80301044:
+/* 80301044 002FCCA4 98 87 00 00 */ stb r4, 0(r7)
+/* 80301048 002FCCA8 39 08 00 08 */ addi r8, r8, 8
+/* 8030104C 002FCCAC 98 87 00 01 */ stb r4, 1(r7)
+/* 80301050 002FCCB0 98 87 00 02 */ stb r4, 2(r7)
+/* 80301054 002FCCB4 98 87 00 03 */ stb r4, 3(r7)
+/* 80301058 002FCCB8 98 87 00 04 */ stb r4, 4(r7)
+/* 8030105C 002FCCBC 98 87 00 05 */ stb r4, 5(r7)
+/* 80301060 002FCCC0 98 87 00 06 */ stb r4, 6(r7)
+/* 80301064 002FCCC4 98 87 00 07 */ stb r4, 7(r7)
+/* 80301068 002FCCC8 38 E7 00 08 */ addi r7, r7, 8
+/* 8030106C 002FCCCC 42 00 FF D8 */ bdnz lbl_80301044
+lbl_80301070:
+/* 80301070 002FCCD0 7C 08 28 50 */ subf r0, r8, r5
+/* 80301074 002FCCD4 7C C3 42 14 */ add r6, r3, r8
+/* 80301078 002FCCD8 7C 09 03 A6 */ mtctr r0
+/* 8030107C 002FCCDC 7C 08 28 40 */ cmplw r8, r5
+/* 80301080 002FCCE0 4C 80 00 20 */ bgelr
+lbl_80301084:
+/* 80301084 002FCCE4 98 86 00 00 */ stb r4, 0(r6)
+/* 80301088 002FCCE8 38 C6 00 01 */ addi r6, r6, 1
+/* 8030108C 002FCCEC 42 00 FF F8 */ bdnz lbl_80301084
+/* 80301090 002FCCF0 4E 80 00 20 */ blr
+
+.global convNum
+convNum:
+/* 80301094 002FCCF4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80301098 002FCCF8 7C 08 02 A6 */ mflr r0
+/* 8030109C 002FCCFC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 803010A0 002FCD00 39 61 00 20 */ addi r11, r1, 0x20
+/* 803010A4 002FCD04 4B EC 60 85 */ bl _savegpr_27
+/* 803010A8 002FCD08 2C 07 00 00 */ cmpwi r7, 0
+/* 803010AC 002FCD0C 41 82 00 18 */ beq lbl_803010C4
+/* 803010B0 002FCD10 54 80 00 01 */ rlwinm. r0, r4, 0, 0, 0
+/* 803010B4 002FCD14 41 82 00 10 */ beq lbl_803010C4
+/* 803010B8 002FCD18 7C 84 00 D0 */ neg r4, r4
+/* 803010BC 002FCD1C 3B C0 00 01 */ li r30, 1
+/* 803010C0 002FCD20 48 00 00 08 */ b lbl_803010C8
+lbl_803010C4:
+/* 803010C4 002FCD24 3B C0 00 00 */ li r30, 0
+lbl_803010C8:
+/* 803010C8 002FCD28 3B E0 00 00 */ li r31, 0
+/* 803010CC 002FCD2C 39 80 00 00 */ li r12, 0
+/* 803010D0 002FCD30 3C E0 80 00 */ lis r7, 0x8000
+/* 803010D4 002FCD34 48 00 01 40 */ b lbl_80301214
+lbl_803010D8:
+/* 803010D8 002FCD38 7C 04 2B 96 */ divwu r0, r4, r5
+/* 803010DC 002FCD3C 7C 7B 1B 78 */ mr r27, r3
+/* 803010E0 002FCD40 39 60 00 00 */ li r11, 0
+/* 803010E4 002FCD44 7C 00 29 D6 */ mullw r0, r0, r5
+/* 803010E8 002FCD48 7C 00 20 50 */ subf r0, r0, r4
+/* 803010EC 002FCD4C 7C 84 2B 96 */ divwu r4, r4, r5
+/* 803010F0 002FCD50 7C 00 07 74 */ extsb r0, r0
+/* 803010F4 002FCD54 48 00 00 0C */ b lbl_80301100
+lbl_803010F8:
+/* 803010F8 002FCD58 3B 7B 00 01 */ addi r27, r27, 1
+/* 803010FC 002FCD5C 39 6B 00 01 */ addi r11, r11, 1
+lbl_80301100:
+/* 80301100 002FCD60 8B BB 00 00 */ lbz r29, 0(r27)
+/* 80301104 002FCD64 7F BD 07 75 */ extsb. r29, r29
+/* 80301108 002FCD68 40 82 FF F0 */ bne lbl_803010F8
+/* 8030110C 002FCD6C 2C 8B 00 00 */ cmpwi cr1, r11, 0
+/* 80301110 002FCD70 41 84 00 E4 */ blt cr1, lbl_803011F4
+/* 80301114 002FCD74 3B AB 00 01 */ addi r29, r11, 1
+/* 80301118 002FCD78 2C 1D 00 08 */ cmpwi r29, 8
+/* 8030111C 002FCD7C 40 81 00 B4 */ ble lbl_803011D0
+/* 80301120 002FCD80 3B 80 00 00 */ li r28, 0
+/* 80301124 002FCD84 3B 60 00 00 */ li r27, 0
+/* 80301128 002FCD88 41 84 00 14 */ blt cr1, lbl_8030113C
+/* 8030112C 002FCD8C 3B A7 00 01 */ addi r29, r7, 1
+/* 80301130 002FCD90 7C 0B E8 00 */ cmpw r11, r29
+/* 80301134 002FCD94 41 80 00 08 */ blt lbl_8030113C
+/* 80301138 002FCD98 3B 60 00 01 */ li r27, 1
+lbl_8030113C:
+/* 8030113C 002FCD9C 2C 1B 00 00 */ cmpwi r27, 0
+/* 80301140 002FCDA0 41 82 00 2C */ beq lbl_8030116C
+/* 80301144 002FCDA4 55 7D 00 01 */ rlwinm. r29, r11, 0, 0, 0
+/* 80301148 002FCDA8 3B 60 00 01 */ li r27, 1
+/* 8030114C 002FCDAC 40 82 00 14 */ bne lbl_80301160
+/* 80301150 002FCDB0 3B AB 00 01 */ addi r29, r11, 1
+/* 80301154 002FCDB4 57 BD 00 01 */ rlwinm. r29, r29, 0, 0, 0
+/* 80301158 002FCDB8 41 82 00 08 */ beq lbl_80301160
+/* 8030115C 002FCDBC 3B 60 00 00 */ li r27, 0
+lbl_80301160:
+/* 80301160 002FCDC0 2C 1B 00 00 */ cmpwi r27, 0
+/* 80301164 002FCDC4 41 82 00 08 */ beq lbl_8030116C
+/* 80301168 002FCDC8 3B 80 00 01 */ li r28, 1
+lbl_8030116C:
+/* 8030116C 002FCDCC 2C 1C 00 00 */ cmpwi r28, 0
+/* 80301170 002FCDD0 41 82 00 60 */ beq lbl_803011D0
+/* 80301174 002FCDD4 55 7D E8 FE */ srwi r29, r11, 3
+/* 80301178 002FCDD8 7F A9 03 A6 */ mtctr r29
+/* 8030117C 002FCDDC 2C 0B 00 08 */ cmpwi r11, 8
+/* 80301180 002FCDE0 41 80 00 50 */ blt lbl_803011D0
+lbl_80301184:
+/* 80301184 002FCDE4 7F A3 58 AE */ lbzx r29, r3, r11
+/* 80301188 002FCDE8 7F 63 5A 14 */ add r27, r3, r11
+/* 8030118C 002FCDEC 9B BB 00 01 */ stb r29, 1(r27)
+/* 80301190 002FCDF0 8B BB FF FF */ lbz r29, -1(r27)
+/* 80301194 002FCDF4 7F A3 59 AE */ stbx r29, r3, r11
+/* 80301198 002FCDF8 39 6B FF F8 */ addi r11, r11, -8
+/* 8030119C 002FCDFC 8B BB FF FE */ lbz r29, -2(r27)
+/* 803011A0 002FCE00 9B BB FF FF */ stb r29, -1(r27)
+/* 803011A4 002FCE04 8B BB FF FD */ lbz r29, -3(r27)
+/* 803011A8 002FCE08 9B BB FF FE */ stb r29, -2(r27)
+/* 803011AC 002FCE0C 8B BB FF FC */ lbz r29, -4(r27)
+/* 803011B0 002FCE10 9B BB FF FD */ stb r29, -3(r27)
+/* 803011B4 002FCE14 8B BB FF FB */ lbz r29, -5(r27)
+/* 803011B8 002FCE18 9B BB FF FC */ stb r29, -4(r27)
+/* 803011BC 002FCE1C 8B BB FF FA */ lbz r29, -6(r27)
+/* 803011C0 002FCE20 9B BB FF FB */ stb r29, -5(r27)
+/* 803011C4 002FCE24 8B BB FF F9 */ lbz r29, -7(r27)
+/* 803011C8 002FCE28 9B BB FF FA */ stb r29, -6(r27)
+/* 803011CC 002FCE2C 42 00 FF B8 */ bdnz lbl_80301184
+lbl_803011D0:
+/* 803011D0 002FCE30 3B AB 00 01 */ addi r29, r11, 1
+/* 803011D4 002FCE34 7F A9 03 A6 */ mtctr r29
+/* 803011D8 002FCE38 2C 0B 00 00 */ cmpwi r11, 0
+/* 803011DC 002FCE3C 41 80 00 18 */ blt lbl_803011F4
+lbl_803011E0:
+/* 803011E0 002FCE40 7F A3 58 AE */ lbzx r29, r3, r11
+/* 803011E4 002FCE44 7F 63 5A 14 */ add r27, r3, r11
+/* 803011E8 002FCE48 39 6B FF FF */ addi r11, r11, -1
+/* 803011EC 002FCE4C 9B BB 00 01 */ stb r29, 1(r27)
+/* 803011F0 002FCE50 42 00 FF F0 */ bdnz lbl_803011E0
+lbl_803011F4:
+/* 803011F4 002FCE54 2C 00 00 09 */ cmpwi r0, 9
+/* 803011F8 002FCE58 39 60 00 30 */ li r11, 0x30
+/* 803011FC 002FCE5C 40 81 00 08 */ ble lbl_80301204
+/* 80301200 002FCE60 7C CB 07 74 */ extsb r11, r6
+lbl_80301204:
+/* 80301204 002FCE64 7C 00 5A 14 */ add r0, r0, r11
+/* 80301208 002FCE68 39 8C 00 01 */ addi r12, r12, 1
+/* 8030120C 002FCE6C 98 03 00 00 */ stb r0, 0(r3)
+/* 80301210 002FCE70 3B FF 00 01 */ addi r31, r31, 1
+lbl_80301214:
+/* 80301214 002FCE74 2C 04 00 00 */ cmpwi r4, 0
+/* 80301218 002FCE78 40 82 FE C0 */ bne lbl_803010D8
+/* 8030121C 002FCE7C 88 03 00 00 */ lbz r0, 0(r3)
+/* 80301220 002FCE80 7C 00 07 75 */ extsb. r0, r0
+/* 80301224 002FCE84 40 82 01 20 */ bne lbl_80301344
+/* 80301228 002FCE88 7C 64 1B 78 */ mr r4, r3
+/* 8030122C 002FCE8C 38 A0 00 00 */ li r5, 0
+/* 80301230 002FCE90 48 00 00 0C */ b lbl_8030123C
+lbl_80301234:
+/* 80301234 002FCE94 38 84 00 01 */ addi r4, r4, 1
+/* 80301238 002FCE98 38 A5 00 01 */ addi r5, r5, 1
+lbl_8030123C:
+/* 8030123C 002FCE9C 88 04 00 00 */ lbz r0, 0(r4)
+/* 80301240 002FCEA0 7C 00 07 75 */ extsb. r0, r0
+/* 80301244 002FCEA4 40 82 FF F0 */ bne lbl_80301234
+/* 80301248 002FCEA8 2C 85 00 00 */ cmpwi cr1, r5, 0
+/* 8030124C 002FCEAC 41 84 00 E8 */ blt cr1, lbl_80301334
+/* 80301250 002FCEB0 38 05 00 01 */ addi r0, r5, 1
+/* 80301254 002FCEB4 2C 00 00 08 */ cmpwi r0, 8
+/* 80301258 002FCEB8 40 81 00 B8 */ ble lbl_80301310
+/* 8030125C 002FCEBC 38 C0 00 00 */ li r6, 0
+/* 80301260 002FCEC0 38 E0 00 00 */ li r7, 0
+/* 80301264 002FCEC4 41 84 00 18 */ blt cr1, lbl_8030127C
+/* 80301268 002FCEC8 3C 80 80 00 */ lis r4, 0x80000001@ha
+/* 8030126C 002FCECC 38 04 00 01 */ addi r0, r4, 0x80000001@l
+/* 80301270 002FCED0 7C 05 00 00 */ cmpw r5, r0
+/* 80301274 002FCED4 41 80 00 08 */ blt lbl_8030127C
+/* 80301278 002FCED8 38 E0 00 01 */ li r7, 1
+lbl_8030127C:
+/* 8030127C 002FCEDC 2C 07 00 00 */ cmpwi r7, 0
+/* 80301280 002FCEE0 41 82 00 2C */ beq lbl_803012AC
+/* 80301284 002FCEE4 54 A0 00 01 */ rlwinm. r0, r5, 0, 0, 0
+/* 80301288 002FCEE8 38 80 00 01 */ li r4, 1
+/* 8030128C 002FCEEC 40 82 00 14 */ bne lbl_803012A0
+/* 80301290 002FCEF0 38 05 00 01 */ addi r0, r5, 1
+/* 80301294 002FCEF4 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0
+/* 80301298 002FCEF8 41 82 00 08 */ beq lbl_803012A0
+/* 8030129C 002FCEFC 38 80 00 00 */ li r4, 0
+lbl_803012A0:
+/* 803012A0 002FCF00 2C 04 00 00 */ cmpwi r4, 0
+/* 803012A4 002FCF04 41 82 00 08 */ beq lbl_803012AC
+/* 803012A8 002FCF08 38 C0 00 01 */ li r6, 1
+lbl_803012AC:
+/* 803012AC 002FCF0C 2C 06 00 00 */ cmpwi r6, 0
+/* 803012B0 002FCF10 41 82 00 60 */ beq lbl_80301310
+/* 803012B4 002FCF14 54 A0 E8 FE */ srwi r0, r5, 3
+/* 803012B8 002FCF18 7C 09 03 A6 */ mtctr r0
+/* 803012BC 002FCF1C 2C 05 00 08 */ cmpwi r5, 8
+/* 803012C0 002FCF20 41 80 00 50 */ blt lbl_80301310
+lbl_803012C4:
+/* 803012C4 002FCF24 7C 03 28 AE */ lbzx r0, r3, r5
+/* 803012C8 002FCF28 7C 83 2A 14 */ add r4, r3, r5
+/* 803012CC 002FCF2C 98 04 00 01 */ stb r0, 1(r4)
+/* 803012D0 002FCF30 88 04 FF FF */ lbz r0, -1(r4)
+/* 803012D4 002FCF34 7C 03 29 AE */ stbx r0, r3, r5
+/* 803012D8 002FCF38 38 A5 FF F8 */ addi r5, r5, -8
+/* 803012DC 002FCF3C 88 04 FF FE */ lbz r0, -2(r4)
+/* 803012E0 002FCF40 98 04 FF FF */ stb r0, -1(r4)
+/* 803012E4 002FCF44 88 04 FF FD */ lbz r0, -3(r4)
+/* 803012E8 002FCF48 98 04 FF FE */ stb r0, -2(r4)
+/* 803012EC 002FCF4C 88 04 FF FC */ lbz r0, -4(r4)
+/* 803012F0 002FCF50 98 04 FF FD */ stb r0, -3(r4)
+/* 803012F4 002FCF54 88 04 FF FB */ lbz r0, -5(r4)
+/* 803012F8 002FCF58 98 04 FF FC */ stb r0, -4(r4)
+/* 803012FC 002FCF5C 88 04 FF FA */ lbz r0, -6(r4)
+/* 80301300 002FCF60 98 04 FF FB */ stb r0, -5(r4)
+/* 80301304 002FCF64 88 04 FF F9 */ lbz r0, -7(r4)
+/* 80301308 002FCF68 98 04 FF FA */ stb r0, -6(r4)
+/* 8030130C 002FCF6C 42 00 FF B8 */ bdnz lbl_803012C4
+lbl_80301310:
+/* 80301310 002FCF70 38 05 00 01 */ addi r0, r5, 1
+/* 80301314 002FCF74 7C 09 03 A6 */ mtctr r0
+/* 80301318 002FCF78 2C 05 00 00 */ cmpwi r5, 0
+/* 8030131C 002FCF7C 41 80 00 18 */ blt lbl_80301334
+lbl_80301320:
+/* 80301320 002FCF80 7C 03 28 AE */ lbzx r0, r3, r5
+/* 80301324 002FCF84 7C 83 2A 14 */ add r4, r3, r5
+/* 80301328 002FCF88 38 A5 FF FF */ addi r5, r5, -1
+/* 8030132C 002FCF8C 98 04 00 01 */ stb r0, 1(r4)
+/* 80301330 002FCF90 42 00 FF F0 */ bdnz lbl_80301320
+lbl_80301334:
+/* 80301334 002FCF94 38 00 00 30 */ li r0, 0x30
+/* 80301338 002FCF98 39 8C 00 01 */ addi r12, r12, 1
+/* 8030133C 002FCF9C 98 03 00 00 */ stb r0, 0(r3)
+/* 80301340 002FCFA0 3B FF 00 01 */ addi r31, r31, 1
+lbl_80301344:
+/* 80301344 002FCFA4 7D 20 07 74 */ extsb r0, r9
+/* 80301348 002FCFA8 2C 00 00 30 */ cmpwi r0, 0x30
+/* 8030134C 002FCFAC 41 82 00 08 */ beq lbl_80301354
+/* 80301350 002FCFB0 39 20 00 20 */ li r9, 0x20
+lbl_80301354:
+/* 80301354 002FCFB4 7D 45 07 74 */ extsb r5, r10
+/* 80301358 002FCFB8 7F FF F2 14 */ add r31, r31, r30
+/* 8030135C 002FCFBC 3D 40 80 00 */ lis r10, 0x8000
+/* 80301360 002FCFC0 38 80 00 20 */ li r4, 0x20
+/* 80301364 002FCFC4 38 00 00 00 */ li r0, 0
+/* 80301368 002FCFC8 48 00 01 54 */ b lbl_803014BC
+lbl_8030136C:
+/* 8030136C 002FCFCC 2C 05 00 4C */ cmpwi r5, 0x4c
+/* 80301370 002FCFD0 40 82 00 38 */ bne lbl_803013A8
+/* 80301374 002FCFD4 7C 6B 1B 78 */ mr r11, r3
+/* 80301378 002FCFD8 38 E0 00 00 */ li r7, 0
+/* 8030137C 002FCFDC 48 00 00 0C */ b lbl_80301388
+lbl_80301380:
+/* 80301380 002FCFE0 39 6B 00 01 */ addi r11, r11, 1
+/* 80301384 002FCFE4 38 E7 00 01 */ addi r7, r7, 1
+lbl_80301388:
+/* 80301388 002FCFE8 88 CB 00 00 */ lbz r6, 0(r11)
+/* 8030138C 002FCFEC 7C C6 07 75 */ extsb. r6, r6
+/* 80301390 002FCFF0 40 82 FF F0 */ bne lbl_80301380
+/* 80301394 002FCFF4 7C 83 39 AE */ stbx r4, r3, r7
+/* 80301398 002FCFF8 38 C7 00 01 */ addi r6, r7, 1
+/* 8030139C 002FCFFC 39 8C 00 01 */ addi r12, r12, 1
+/* 803013A0 002FD000 7C 03 31 AE */ stbx r0, r3, r6
+/* 803013A4 002FD004 48 00 01 14 */ b lbl_803014B8
+lbl_803013A8:
+/* 803013A8 002FD008 7C 6B 1B 78 */ mr r11, r3
+/* 803013AC 002FD00C 38 C0 00 00 */ li r6, 0
+/* 803013B0 002FD010 48 00 00 0C */ b lbl_803013BC
+lbl_803013B4:
+/* 803013B4 002FD014 39 6B 00 01 */ addi r11, r11, 1
+/* 803013B8 002FD018 38 C6 00 01 */ addi r6, r6, 1
+lbl_803013BC:
+/* 803013BC 002FD01C 88 EB 00 00 */ lbz r7, 0(r11)
+/* 803013C0 002FD020 7C E7 07 75 */ extsb. r7, r7
+/* 803013C4 002FD024 40 82 FF F0 */ bne lbl_803013B4
+/* 803013C8 002FD028 2C 86 00 00 */ cmpwi cr1, r6, 0
+/* 803013CC 002FD02C 41 84 00 E4 */ blt cr1, lbl_803014B0
+/* 803013D0 002FD030 38 E6 00 01 */ addi r7, r6, 1
+/* 803013D4 002FD034 2C 07 00 08 */ cmpwi r7, 8
+/* 803013D8 002FD038 40 81 00 B4 */ ble lbl_8030148C
+/* 803013DC 002FD03C 39 60 00 00 */ li r11, 0
+/* 803013E0 002FD040 3B A0 00 00 */ li r29, 0
+/* 803013E4 002FD044 41 84 00 14 */ blt cr1, lbl_803013F8
+/* 803013E8 002FD048 38 EA 00 01 */ addi r7, r10, 1
+/* 803013EC 002FD04C 7C 06 38 00 */ cmpw r6, r7
+/* 803013F0 002FD050 41 80 00 08 */ blt lbl_803013F8
+/* 803013F4 002FD054 3B A0 00 01 */ li r29, 1
+lbl_803013F8:
+/* 803013F8 002FD058 2C 1D 00 00 */ cmpwi r29, 0
+/* 803013FC 002FD05C 41 82 00 2C */ beq lbl_80301428
+/* 80301400 002FD060 54 C7 00 01 */ rlwinm. r7, r6, 0, 0, 0
+/* 80301404 002FD064 3B A0 00 01 */ li r29, 1
+/* 80301408 002FD068 40 82 00 14 */ bne lbl_8030141C
+/* 8030140C 002FD06C 38 E6 00 01 */ addi r7, r6, 1
+/* 80301410 002FD070 54 E7 00 01 */ rlwinm. r7, r7, 0, 0, 0
+/* 80301414 002FD074 41 82 00 08 */ beq lbl_8030141C
+/* 80301418 002FD078 3B A0 00 00 */ li r29, 0
+lbl_8030141C:
+/* 8030141C 002FD07C 2C 1D 00 00 */ cmpwi r29, 0
+/* 80301420 002FD080 41 82 00 08 */ beq lbl_80301428
+/* 80301424 002FD084 39 60 00 01 */ li r11, 1
+lbl_80301428:
+/* 80301428 002FD088 2C 0B 00 00 */ cmpwi r11, 0
+/* 8030142C 002FD08C 41 82 00 60 */ beq lbl_8030148C
+/* 80301430 002FD090 54 C7 E8 FE */ srwi r7, r6, 3
+/* 80301434 002FD094 7C E9 03 A6 */ mtctr r7
+/* 80301438 002FD098 2C 06 00 08 */ cmpwi r6, 8
+/* 8030143C 002FD09C 41 80 00 50 */ blt lbl_8030148C
+lbl_80301440:
+/* 80301440 002FD0A0 7C E3 30 AE */ lbzx r7, r3, r6
+/* 80301444 002FD0A4 7D 63 32 14 */ add r11, r3, r6
+/* 80301448 002FD0A8 98 EB 00 01 */ stb r7, 1(r11)
+/* 8030144C 002FD0AC 88 EB FF FF */ lbz r7, -1(r11)
+/* 80301450 002FD0B0 7C E3 31 AE */ stbx r7, r3, r6
+/* 80301454 002FD0B4 38 C6 FF F8 */ addi r6, r6, -8
+/* 80301458 002FD0B8 88 EB FF FE */ lbz r7, -2(r11)
+/* 8030145C 002FD0BC 98 EB FF FF */ stb r7, -1(r11)
+/* 80301460 002FD0C0 88 EB FF FD */ lbz r7, -3(r11)
+/* 80301464 002FD0C4 98 EB FF FE */ stb r7, -2(r11)
+/* 80301468 002FD0C8 88 EB FF FC */ lbz r7, -4(r11)
+/* 8030146C 002FD0CC 98 EB FF FD */ stb r7, -3(r11)
+/* 80301470 002FD0D0 88 EB FF FB */ lbz r7, -5(r11)
+/* 80301474 002FD0D4 98 EB FF FC */ stb r7, -4(r11)
+/* 80301478 002FD0D8 88 EB FF FA */ lbz r7, -6(r11)
+/* 8030147C 002FD0DC 98 EB FF FB */ stb r7, -5(r11)
+/* 80301480 002FD0E0 88 EB FF F9 */ lbz r7, -7(r11)
+/* 80301484 002FD0E4 98 EB FF FA */ stb r7, -6(r11)
+/* 80301488 002FD0E8 42 00 FF B8 */ bdnz lbl_80301440
+lbl_8030148C:
+/* 8030148C 002FD0EC 38 E6 00 01 */ addi r7, r6, 1
+/* 80301490 002FD0F0 7C E9 03 A6 */ mtctr r7
+/* 80301494 002FD0F4 2C 06 00 00 */ cmpwi r6, 0
+/* 80301498 002FD0F8 41 80 00 18 */ blt lbl_803014B0
+lbl_8030149C:
+/* 8030149C 002FD0FC 7C E3 30 AE */ lbzx r7, r3, r6
+/* 803014A0 002FD100 7D 63 32 14 */ add r11, r3, r6
+/* 803014A4 002FD104 38 C6 FF FF */ addi r6, r6, -1
+/* 803014A8 002FD108 98 EB 00 01 */ stb r7, 1(r11)
+/* 803014AC 002FD10C 42 00 FF F0 */ bdnz lbl_8030149C
+lbl_803014B0:
+/* 803014B0 002FD110 99 23 00 00 */ stb r9, 0(r3)
+/* 803014B4 002FD114 39 8C 00 01 */ addi r12, r12, 1
+lbl_803014B8:
+/* 803014B8 002FD118 3B FF 00 01 */ addi r31, r31, 1
+lbl_803014BC:
+/* 803014BC 002FD11C 7C 1F 40 00 */ cmpw r31, r8
+/* 803014C0 002FD120 41 80 FE AC */ blt lbl_8030136C
+/* 803014C4 002FD124 2C 1E 00 00 */ cmpwi r30, 0
+/* 803014C8 002FD128 41 82 01 18 */ beq lbl_803015E0
+/* 803014CC 002FD12C 7C 64 1B 78 */ mr r4, r3
+/* 803014D0 002FD130 38 A0 00 00 */ li r5, 0
+/* 803014D4 002FD134 48 00 00 0C */ b lbl_803014E0
+lbl_803014D8:
+/* 803014D8 002FD138 38 84 00 01 */ addi r4, r4, 1
+/* 803014DC 002FD13C 38 A5 00 01 */ addi r5, r5, 1
+lbl_803014E0:
+/* 803014E0 002FD140 88 04 00 00 */ lbz r0, 0(r4)
+/* 803014E4 002FD144 7C 00 07 75 */ extsb. r0, r0
+/* 803014E8 002FD148 40 82 FF F0 */ bne lbl_803014D8
+/* 803014EC 002FD14C 2C 85 00 00 */ cmpwi cr1, r5, 0
+/* 803014F0 002FD150 41 84 00 E8 */ blt cr1, lbl_803015D8
+/* 803014F4 002FD154 38 05 00 01 */ addi r0, r5, 1
+/* 803014F8 002FD158 2C 00 00 08 */ cmpwi r0, 8
+/* 803014FC 002FD15C 40 81 00 B8 */ ble lbl_803015B4
+/* 80301500 002FD160 38 C0 00 00 */ li r6, 0
+/* 80301504 002FD164 38 E0 00 00 */ li r7, 0
+/* 80301508 002FD168 41 84 00 18 */ blt cr1, lbl_80301520
+/* 8030150C 002FD16C 3C 80 80 00 */ lis r4, 0x80000001@ha
+/* 80301510 002FD170 38 04 00 01 */ addi r0, r4, 0x80000001@l
+/* 80301514 002FD174 7C 05 00 00 */ cmpw r5, r0
+/* 80301518 002FD178 41 80 00 08 */ blt lbl_80301520
+/* 8030151C 002FD17C 38 E0 00 01 */ li r7, 1
+lbl_80301520:
+/* 80301520 002FD180 2C 07 00 00 */ cmpwi r7, 0
+/* 80301524 002FD184 41 82 00 2C */ beq lbl_80301550
+/* 80301528 002FD188 54 A0 00 01 */ rlwinm. r0, r5, 0, 0, 0
+/* 8030152C 002FD18C 38 80 00 01 */ li r4, 1
+/* 80301530 002FD190 40 82 00 14 */ bne lbl_80301544
+/* 80301534 002FD194 38 05 00 01 */ addi r0, r5, 1
+/* 80301538 002FD198 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0
+/* 8030153C 002FD19C 41 82 00 08 */ beq lbl_80301544
+/* 80301540 002FD1A0 38 80 00 00 */ li r4, 0
+lbl_80301544:
+/* 80301544 002FD1A4 2C 04 00 00 */ cmpwi r4, 0
+/* 80301548 002FD1A8 41 82 00 08 */ beq lbl_80301550
+/* 8030154C 002FD1AC 38 C0 00 01 */ li r6, 1
+lbl_80301550:
+/* 80301550 002FD1B0 2C 06 00 00 */ cmpwi r6, 0
+/* 80301554 002FD1B4 41 82 00 60 */ beq lbl_803015B4
+/* 80301558 002FD1B8 54 A0 E8 FE */ srwi r0, r5, 3
+/* 8030155C 002FD1BC 7C 09 03 A6 */ mtctr r0
+/* 80301560 002FD1C0 2C 05 00 08 */ cmpwi r5, 8
+/* 80301564 002FD1C4 41 80 00 50 */ blt lbl_803015B4
+lbl_80301568:
+/* 80301568 002FD1C8 7C 03 28 AE */ lbzx r0, r3, r5
+/* 8030156C 002FD1CC 7C 83 2A 14 */ add r4, r3, r5
+/* 80301570 002FD1D0 98 04 00 01 */ stb r0, 1(r4)
+/* 80301574 002FD1D4 88 04 FF FF */ lbz r0, -1(r4)
+/* 80301578 002FD1D8 7C 03 29 AE */ stbx r0, r3, r5
+/* 8030157C 002FD1DC 38 A5 FF F8 */ addi r5, r5, -8
+/* 80301580 002FD1E0 88 04 FF FE */ lbz r0, -2(r4)
+/* 80301584 002FD1E4 98 04 FF FF */ stb r0, -1(r4)
+/* 80301588 002FD1E8 88 04 FF FD */ lbz r0, -3(r4)
+/* 8030158C 002FD1EC 98 04 FF FE */ stb r0, -2(r4)
+/* 80301590 002FD1F0 88 04 FF FC */ lbz r0, -4(r4)
+/* 80301594 002FD1F4 98 04 FF FD */ stb r0, -3(r4)
+/* 80301598 002FD1F8 88 04 FF FB */ lbz r0, -5(r4)
+/* 8030159C 002FD1FC 98 04 FF FC */ stb r0, -4(r4)
+/* 803015A0 002FD200 88 04 FF FA */ lbz r0, -6(r4)
+/* 803015A4 002FD204 98 04 FF FB */ stb r0, -5(r4)
+/* 803015A8 002FD208 88 04 FF F9 */ lbz r0, -7(r4)
+/* 803015AC 002FD20C 98 04 FF FA */ stb r0, -6(r4)
+/* 803015B0 002FD210 42 00 FF B8 */ bdnz lbl_80301568
+lbl_803015B4:
+/* 803015B4 002FD214 38 05 00 01 */ addi r0, r5, 1
+/* 803015B8 002FD218 7C 09 03 A6 */ mtctr r0
+/* 803015BC 002FD21C 2C 05 00 00 */ cmpwi r5, 0
+/* 803015C0 002FD220 41 80 00 18 */ blt lbl_803015D8
+lbl_803015C4:
+/* 803015C4 002FD224 7C 03 28 AE */ lbzx r0, r3, r5
+/* 803015C8 002FD228 7C 83 2A 14 */ add r4, r3, r5
+/* 803015CC 002FD22C 38 A5 FF FF */ addi r5, r5, -1
+/* 803015D0 002FD230 98 04 00 01 */ stb r0, 1(r4)
+/* 803015D4 002FD234 42 00 FF F0 */ bdnz lbl_803015C4
+lbl_803015D8:
+/* 803015D8 002FD238 38 00 00 2D */ li r0, 0x2d
+/* 803015DC 002FD23C 98 03 00 00 */ stb r0, 0(r3)
+lbl_803015E0:
+/* 803015E0 002FD240 39 61 00 20 */ addi r11, r1, 0x20
+/* 803015E4 002FD244 7D 83 63 78 */ mr r3, r12
+/* 803015E8 002FD248 4B EC 5B 8D */ bl _restgpr_27
+/* 803015EC 002FD24C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 803015F0 002FD250 7C 08 03 A6 */ mtlr r0
+/* 803015F4 002FD254 38 21 00 20 */ addi r1, r1, 0x20
+/* 803015F8 002FD258 4E 80 00 20 */ blr
+
+.global Mail_sprintf
+Mail_sprintf:
+/* 803015FC 002FD25C 94 21 FF 80 */ stwu r1, -0x80(r1)
+/* 80301600 002FD260 7C 08 02 A6 */ mflr r0
+/* 80301604 002FD264 90 01 00 84 */ stw r0, 0x84(r1)
+/* 80301608 002FD268 93 E1 00 7C */ stw r31, 0x7c(r1)
+/* 8030160C 002FD26C 40 86 00 24 */ bne cr1, lbl_80301630
+/* 80301610 002FD270 D8 21 00 28 */ stfd f1, 0x28(r1)
+/* 80301614 002FD274 D8 41 00 30 */ stfd f2, 0x30(r1)
+/* 80301618 002FD278 D8 61 00 38 */ stfd f3, 0x38(r1)
+/* 8030161C 002FD27C D8 81 00 40 */ stfd f4, 0x40(r1)
+/* 80301620 002FD280 D8 A1 00 48 */ stfd f5, 0x48(r1)
+/* 80301624 002FD284 D8 C1 00 50 */ stfd f6, 0x50(r1)
+/* 80301628 002FD288 D8 E1 00 58 */ stfd f7, 0x58(r1)
+/* 8030162C 002FD28C D9 01 00 60 */ stfd f8, 0x60(r1)
+lbl_80301630:
+/* 80301630 002FD290 39 61 00 88 */ addi r11, r1, 0x88
+/* 80301634 002FD294 38 01 00 08 */ addi r0, r1, 8
+/* 80301638 002FD298 3D 80 02 00 */ lis r12, 0x200
+/* 8030163C 002FD29C 90 61 00 08 */ stw r3, 8(r1)
+/* 80301640 002FD2A0 3B E1 00 68 */ addi r31, r1, 0x68
+/* 80301644 002FD2A4 90 A1 00 10 */ stw r5, 0x10(r1)
+/* 80301648 002FD2A8 7F E5 FB 78 */ mr r5, r31
+/* 8030164C 002FD2AC 90 81 00 0C */ stw r4, 0xc(r1)
+/* 80301650 002FD2B0 90 C1 00 14 */ stw r6, 0x14(r1)
+/* 80301654 002FD2B4 90 E1 00 18 */ stw r7, 0x18(r1)
+/* 80301658 002FD2B8 91 01 00 1C */ stw r8, 0x1c(r1)
+/* 8030165C 002FD2BC 91 21 00 20 */ stw r9, 0x20(r1)
+/* 80301660 002FD2C0 91 41 00 24 */ stw r10, 0x24(r1)
+/* 80301664 002FD2C4 91 81 00 68 */ stw r12, 0x68(r1)
+/* 80301668 002FD2C8 91 61 00 6C */ stw r11, 0x6c(r1)
+/* 8030166C 002FD2CC 90 01 00 70 */ stw r0, 0x70(r1)
+/* 80301670 002FD2D0 48 00 00 19 */ bl Mail_vsprintf
+/* 80301674 002FD2D4 80 01 00 84 */ lwz r0, 0x84(r1)
+/* 80301678 002FD2D8 83 E1 00 7C */ lwz r31, 0x7c(r1)
+/* 8030167C 002FD2DC 7C 08 03 A6 */ mtlr r0
+/* 80301680 002FD2E0 38 21 00 80 */ addi r1, r1, 0x80
+/* 80301684 002FD2E4 4E 80 00 20 */ blr
+
+.global Mail_vsprintf
+Mail_vsprintf:
+/* 80301688 002FD2E8 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 8030168C 002FD2EC 7C 08 02 A6 */ mflr r0
+/* 80301690 002FD2F0 90 01 00 54 */ stw r0, 0x54(r1)
+/* 80301694 002FD2F4 39 61 00 50 */ addi r11, r1, 0x50
+/* 80301698 002FD2F8 4B EC 5A 65 */ bl _savegpr_16
+/* 8030169C 002FD2FC 3A 00 00 00 */ li r16, 0
+/* 803016A0 002FD300 7C 74 1B 78 */ mr r20, r3
+/* 803016A4 002FD304 9A 03 00 00 */ stb r16, 0(r3)
+/* 803016A8 002FD308 7C 95 23 78 */ mr r21, r4
+/* 803016AC 002FD30C 7C B6 2B 78 */ mr r22, r5
+/* 803016B0 002FD310 3B E0 00 00 */ li r31, 0
+/* 803016B4 002FD314 3E 40 80 00 */ lis r18, 0x8000
+/* 803016B8 002FD318 3A 60 00 20 */ li r19, 0x20
+/* 803016BC 002FD31C 3E 20 80 44 */ lis r17, 0x8044
+/* 803016C0 002FD320 48 00 04 5C */ b lbl_80301B1C
+/* 803016C4 002FD324 48 00 00 08 */ b lbl_803016CC
+lbl_803016C8:
+/* 803016C8 002FD328 3A 94 00 01 */ addi r20, r20, 1
+lbl_803016CC:
+/* 803016CC 002FD32C 88 14 00 00 */ lbz r0, 0(r20)
+/* 803016D0 002FD330 7C 00 07 75 */ extsb. r0, r0
+/* 803016D4 002FD334 40 82 FF F4 */ bne lbl_803016C8
+/* 803016D8 002FD338 7C C0 07 74 */ extsb r0, r6
+/* 803016DC 002FD33C 2C 00 00 25 */ cmpwi r0, 0x25
+/* 803016E0 002FD340 40 82 04 04 */ bne lbl_80301AE4
+/* 803016E4 002FD344 88 15 00 00 */ lbz r0, 0(r21)
+/* 803016E8 002FD348 3A B5 00 01 */ addi r21, r21, 1
+/* 803016EC 002FD34C 7C 03 07 74 */ extsb r3, r0
+/* 803016F0 002FD350 2C 03 00 25 */ cmpwi r3, 0x25
+/* 803016F4 002FD354 40 82 00 40 */ bne lbl_80301734
+/* 803016F8 002FD358 7E 84 A3 78 */ mr r4, r20
+/* 803016FC 002FD35C 7E 86 A3 78 */ mr r6, r20
+/* 80301700 002FD360 38 A0 00 00 */ li r5, 0
+/* 80301704 002FD364 3A 94 00 01 */ addi r20, r20, 1
+/* 80301708 002FD368 48 00 00 0C */ b lbl_80301714
+lbl_8030170C:
+/* 8030170C 002FD36C 38 C6 00 01 */ addi r6, r6, 1
+/* 80301710 002FD370 38 A5 00 01 */ addi r5, r5, 1
+lbl_80301714:
+/* 80301714 002FD374 88 66 00 00 */ lbz r3, 0(r6)
+/* 80301718 002FD378 7C 63 07 75 */ extsb. r3, r3
+/* 8030171C 002FD37C 40 82 FF F0 */ bne lbl_8030170C
+/* 80301720 002FD380 7C 04 29 AE */ stbx r0, r4, r5
+/* 80301724 002FD384 38 05 00 01 */ addi r0, r5, 1
+/* 80301728 002FD388 3B FF 00 01 */ addi r31, r31, 1
+/* 8030172C 002FD38C 7E 04 01 AE */ stbx r16, r4, r0
+/* 80301730 002FD390 48 00 03 EC */ b lbl_80301B1C
+lbl_80301734:
+/* 80301734 002FD394 2C 03 00 2D */ cmpwi r3, 0x2d
+/* 80301738 002FD398 7C 1A 03 78 */ mr r26, r0
+/* 8030173C 002FD39C 40 82 00 0C */ bne lbl_80301748
+/* 80301740 002FD3A0 88 15 00 00 */ lbz r0, 0(r21)
+/* 80301744 002FD3A4 3A B5 00 01 */ addi r21, r21, 1
+lbl_80301748:
+/* 80301748 002FD3A8 7C 03 07 74 */ extsb r3, r0
+/* 8030174C 002FD3AC 7C 19 03 78 */ mr r25, r0
+/* 80301750 002FD3B0 2C 03 00 2A */ cmpwi r3, 0x2a
+/* 80301754 002FD3B4 3B A0 00 00 */ li r29, 0
+/* 80301758 002FD3B8 3B 80 00 0A */ li r28, 0xa
+/* 8030175C 002FD3BC 3B 00 00 30 */ li r24, 0x30
+/* 80301760 002FD3C0 3B C0 00 00 */ li r30, 0
+/* 80301764 002FD3C4 40 82 00 20 */ bne lbl_80301784
+/* 80301768 002FD3C8 7E C3 B3 78 */ mr r3, r22
+/* 8030176C 002FD3CC 38 80 00 01 */ li r4, 1
+/* 80301770 002FD3D0 4B EC 54 11 */ bl __va_arg
+/* 80301774 002FD3D4 88 15 00 00 */ lbz r0, 0(r21)
+/* 80301778 002FD3D8 3A B5 00 01 */ addi r21, r21, 1
+/* 8030177C 002FD3DC 83 63 00 00 */ lwz r27, 0(r3)
+/* 80301780 002FD3E0 48 00 00 38 */ b lbl_803017B8
+lbl_80301784:
+/* 80301784 002FD3E4 3B 60 00 00 */ li r27, 0
+/* 80301788 002FD3E8 48 00 00 1C */ b lbl_803017A4
+lbl_8030178C:
+/* 8030178C 002FD3EC 1C 9B 00 0A */ mulli r4, r27, 0xa
+/* 80301790 002FD3F0 7C 03 07 74 */ extsb r3, r0
+/* 80301794 002FD3F4 88 15 00 00 */ lbz r0, 0(r21)
+/* 80301798 002FD3F8 3A B5 00 01 */ addi r21, r21, 1
+/* 8030179C 002FD3FC 7C 63 22 14 */ add r3, r3, r4
+/* 803017A0 002FD400 3B 63 FF D0 */ addi r27, r3, -48
+lbl_803017A4:
+/* 803017A4 002FD404 7C 03 07 74 */ extsb r3, r0
+/* 803017A8 002FD408 2C 03 00 30 */ cmpwi r3, 0x30
+/* 803017AC 002FD40C 41 80 00 0C */ blt lbl_803017B8
+/* 803017B0 002FD410 2C 03 00 39 */ cmpwi r3, 0x39
+/* 803017B4 002FD414 40 81 FF D8 */ ble lbl_8030178C
+lbl_803017B8:
+/* 803017B8 002FD418 70 03 00 DF */ andi. r3, r0, 0xdf
+/* 803017BC 002FD41C 7C 77 07 74 */ extsb r23, r3
+/* 803017C0 002FD420 2C 17 00 4C */ cmpwi r23, 0x4c
+/* 803017C4 002FD424 40 82 00 0C */ bne lbl_803017D0
+/* 803017C8 002FD428 88 15 00 00 */ lbz r0, 0(r21)
+/* 803017CC 002FD42C 3A B5 00 01 */ addi r21, r21, 1
+lbl_803017D0:
+/* 803017D0 002FD430 7C 03 07 74 */ extsb r3, r0
+/* 803017D4 002FD434 38 03 FF A8 */ addi r0, r3, -88
+/* 803017D8 002FD438 28 00 00 20 */ cmplwi r0, 0x20
+/* 803017DC 002FD43C 41 81 02 90 */ bgt lbl_80301A6C
+/* 803017E0 002FD440 38 71 62 50 */ addi r3, r17, 0x6250
+/* 803017E4 002FD444 54 00 10 3A */ slwi r0, r0, 2
+/* 803017E8 002FD448 7C 63 00 2E */ lwzx r3, r3, r0
+/* 803017EC 002FD44C 7C 69 03 A6 */ mtctr r3
+/* 803017F0 002FD450 4E 80 04 20 */ bctr
+/* 803017F4 002FD454 3B C0 00 01 */ li r30, 1
+/* 803017F8 002FD458 3B A0 00 01 */ li r29, 1
+/* 803017FC 002FD45C 48 00 02 70 */ b lbl_80301A6C
+/* 80301800 002FD460 3B C0 00 01 */ li r30, 1
+/* 80301804 002FD464 3B 80 00 08 */ li r28, 8
+/* 80301808 002FD468 48 00 02 64 */ b lbl_80301A6C
+/* 8030180C 002FD46C 3B C0 00 01 */ li r30, 1
+/* 80301810 002FD470 48 00 02 5C */ b lbl_80301A6C
+/* 80301814 002FD474 3B C0 00 01 */ li r30, 1
+/* 80301818 002FD478 3B 80 00 10 */ li r28, 0x10
+/* 8030181C 002FD47C 3B 00 00 57 */ li r24, 0x57
+/* 80301820 002FD480 48 00 02 4C */ b lbl_80301A6C
+/* 80301824 002FD484 3B C0 00 01 */ li r30, 1
+/* 80301828 002FD488 3B 80 00 10 */ li r28, 0x10
+/* 8030182C 002FD48C 3B 00 00 37 */ li r24, 0x37
+/* 80301830 002FD490 48 00 02 3C */ b lbl_80301A6C
+/* 80301834 002FD494 7E C3 B3 78 */ mr r3, r22
+/* 80301838 002FD498 38 80 00 01 */ li r4, 1
+/* 8030183C 002FD49C 4B EC 53 45 */ bl __va_arg
+/* 80301840 002FD4A0 80 03 00 00 */ lwz r0, 0(r3)
+/* 80301844 002FD4A4 7E 83 A3 78 */ mr r3, r20
+/* 80301848 002FD4A8 7E 85 A3 78 */ mr r5, r20
+/* 8030184C 002FD4AC 38 80 00 00 */ li r4, 0
+/* 80301850 002FD4B0 7C 06 07 74 */ extsb r6, r0
+/* 80301854 002FD4B4 3A 94 00 01 */ addi r20, r20, 1
+/* 80301858 002FD4B8 48 00 00 0C */ b lbl_80301864
+lbl_8030185C:
+/* 8030185C 002FD4BC 38 A5 00 01 */ addi r5, r5, 1
+/* 80301860 002FD4C0 38 84 00 01 */ addi r4, r4, 1
+lbl_80301864:
+/* 80301864 002FD4C4 88 05 00 00 */ lbz r0, 0(r5)
+/* 80301868 002FD4C8 7C 00 07 75 */ extsb. r0, r0
+/* 8030186C 002FD4CC 40 82 FF F0 */ bne lbl_8030185C
+/* 80301870 002FD4D0 7C C3 21 AE */ stbx r6, r3, r4
+/* 80301874 002FD4D4 38 04 00 01 */ addi r0, r4, 1
+/* 80301878 002FD4D8 3B FF 00 01 */ addi r31, r31, 1
+/* 8030187C 002FD4DC 7E 03 01 AE */ stbx r16, r3, r0
+/* 80301880 002FD4E0 48 00 01 EC */ b lbl_80301A6C
+/* 80301884 002FD4E4 7E C3 B3 78 */ mr r3, r22
+/* 80301888 002FD4E8 38 80 00 01 */ li r4, 1
+/* 8030188C 002FD4EC 4B EC 52 F5 */ bl __va_arg
+/* 80301890 002FD4F0 80 63 00 00 */ lwz r3, 0(r3)
+/* 80301894 002FD4F4 2C 03 00 00 */ cmpwi r3, 0
+/* 80301898 002FD4F8 41 82 00 70 */ beq lbl_80301908
+/* 8030189C 002FD4FC 7C 64 1B 78 */ mr r4, r3
+/* 803018A0 002FD500 38 A0 00 00 */ li r5, 0
+/* 803018A4 002FD504 48 00 00 0C */ b lbl_803018B0
+lbl_803018A8:
+/* 803018A8 002FD508 38 84 00 01 */ addi r4, r4, 1
+/* 803018AC 002FD50C 38 A5 00 01 */ addi r5, r5, 1
+lbl_803018B0:
+/* 803018B0 002FD510 88 04 00 00 */ lbz r0, 0(r4)
+/* 803018B4 002FD514 7C 00 07 75 */ extsb. r0, r0
+/* 803018B8 002FD518 40 82 FF F0 */ bne lbl_803018A8
+/* 803018BC 002FD51C 7E 86 A3 78 */ mr r6, r20
+/* 803018C0 002FD520 38 80 00 00 */ li r4, 0
+/* 803018C4 002FD524 48 00 00 0C */ b lbl_803018D0
+lbl_803018C8:
+/* 803018C8 002FD528 38 C6 00 01 */ addi r6, r6, 1
+/* 803018CC 002FD52C 38 84 00 01 */ addi r4, r4, 1
+lbl_803018D0:
+/* 803018D0 002FD530 88 06 00 00 */ lbz r0, 0(r6)
+/* 803018D4 002FD534 7C 00 07 75 */ extsb. r0, r0
+/* 803018D8 002FD538 40 82 FF F0 */ bne lbl_803018C8
+/* 803018DC 002FD53C 7C 94 22 14 */ add r4, r20, r4
+/* 803018E0 002FD540 48 00 00 14 */ b lbl_803018F4
+lbl_803018E4:
+/* 803018E4 002FD544 88 03 00 00 */ lbz r0, 0(r3)
+/* 803018E8 002FD548 38 63 00 01 */ addi r3, r3, 1
+/* 803018EC 002FD54C 98 04 00 00 */ stb r0, 0(r4)
+/* 803018F0 002FD550 38 84 00 01 */ addi r4, r4, 1
+lbl_803018F4:
+/* 803018F4 002FD554 88 03 00 00 */ lbz r0, 0(r3)
+/* 803018F8 002FD558 7C 00 07 75 */ extsb. r0, r0
+/* 803018FC 002FD55C 40 82 FF E8 */ bne lbl_803018E4
+/* 80301900 002FD560 9A 04 00 00 */ stb r16, 0(r4)
+/* 80301904 002FD564 48 00 00 08 */ b lbl_8030190C
+lbl_80301908:
+/* 80301908 002FD568 38 A0 00 00 */ li r5, 0
+lbl_8030190C:
+/* 8030190C 002FD56C 7F FF 2A 14 */ add r31, r31, r5
+/* 80301910 002FD570 7F 40 07 74 */ extsb r0, r26
+/* 80301914 002FD574 48 00 01 50 */ b lbl_80301A64
+lbl_80301918:
+/* 80301918 002FD578 2C 00 00 2D */ cmpwi r0, 0x2d
+/* 8030191C 002FD57C 3B FF 00 01 */ addi r31, r31, 1
+/* 80301920 002FD580 40 82 00 34 */ bne lbl_80301954
+/* 80301924 002FD584 7E 86 A3 78 */ mr r6, r20
+/* 80301928 002FD588 38 80 00 00 */ li r4, 0
+/* 8030192C 002FD58C 48 00 00 0C */ b lbl_80301938
+lbl_80301930:
+/* 80301930 002FD590 38 C6 00 01 */ addi r6, r6, 1
+/* 80301934 002FD594 38 84 00 01 */ addi r4, r4, 1
+lbl_80301938:
+/* 80301938 002FD598 88 66 00 00 */ lbz r3, 0(r6)
+/* 8030193C 002FD59C 7C 63 07 75 */ extsb. r3, r3
+/* 80301940 002FD5A0 40 82 FF F0 */ bne lbl_80301930
+/* 80301944 002FD5A4 7E 74 21 AE */ stbx r19, r20, r4
+/* 80301948 002FD5A8 38 64 00 01 */ addi r3, r4, 1
+/* 8030194C 002FD5AC 7E 14 19 AE */ stbx r16, r20, r3
+/* 80301950 002FD5B0 48 00 01 10 */ b lbl_80301A60
+lbl_80301954:
+/* 80301954 002FD5B4 7E 86 A3 78 */ mr r6, r20
+/* 80301958 002FD5B8 38 60 00 00 */ li r3, 0
+/* 8030195C 002FD5BC 48 00 00 0C */ b lbl_80301968
+lbl_80301960:
+/* 80301960 002FD5C0 38 C6 00 01 */ addi r6, r6, 1
+/* 80301964 002FD5C4 38 63 00 01 */ addi r3, r3, 1
+lbl_80301968:
+/* 80301968 002FD5C8 88 86 00 00 */ lbz r4, 0(r6)
+/* 8030196C 002FD5CC 7C 84 07 75 */ extsb. r4, r4
+/* 80301970 002FD5D0 40 82 FF F0 */ bne lbl_80301960
+/* 80301974 002FD5D4 2C 83 00 00 */ cmpwi cr1, r3, 0
+/* 80301978 002FD5D8 41 84 00 E4 */ blt cr1, lbl_80301A5C
+/* 8030197C 002FD5DC 38 83 00 01 */ addi r4, r3, 1
+/* 80301980 002FD5E0 2C 04 00 08 */ cmpwi r4, 8
+/* 80301984 002FD5E4 40 81 00 B4 */ ble lbl_80301A38
+/* 80301988 002FD5E8 38 C0 00 00 */ li r6, 0
+/* 8030198C 002FD5EC 38 E0 00 00 */ li r7, 0
+/* 80301990 002FD5F0 41 84 00 14 */ blt cr1, lbl_803019A4
+/* 80301994 002FD5F4 38 92 00 01 */ addi r4, r18, 1
+/* 80301998 002FD5F8 7C 03 20 00 */ cmpw r3, r4
+/* 8030199C 002FD5FC 41 80 00 08 */ blt lbl_803019A4
+/* 803019A0 002FD600 38 E0 00 01 */ li r7, 1
+lbl_803019A4:
+/* 803019A4 002FD604 2C 07 00 00 */ cmpwi r7, 0
+/* 803019A8 002FD608 41 82 00 2C */ beq lbl_803019D4
+/* 803019AC 002FD60C 54 64 00 01 */ rlwinm. r4, r3, 0, 0, 0
+/* 803019B0 002FD610 38 E0 00 01 */ li r7, 1
+/* 803019B4 002FD614 40 82 00 14 */ bne lbl_803019C8
+/* 803019B8 002FD618 38 83 00 01 */ addi r4, r3, 1
+/* 803019BC 002FD61C 54 84 00 01 */ rlwinm. r4, r4, 0, 0, 0
+/* 803019C0 002FD620 41 82 00 08 */ beq lbl_803019C8
+/* 803019C4 002FD624 38 E0 00 00 */ li r7, 0
+lbl_803019C8:
+/* 803019C8 002FD628 2C 07 00 00 */ cmpwi r7, 0
+/* 803019CC 002FD62C 41 82 00 08 */ beq lbl_803019D4
+/* 803019D0 002FD630 38 C0 00 01 */ li r6, 1
+lbl_803019D4:
+/* 803019D4 002FD634 2C 06 00 00 */ cmpwi r6, 0
+/* 803019D8 002FD638 41 82 00 60 */ beq lbl_80301A38
+/* 803019DC 002FD63C 54 64 E8 FE */ srwi r4, r3, 3
+/* 803019E0 002FD640 7C 89 03 A6 */ mtctr r4
+/* 803019E4 002FD644 2C 03 00 08 */ cmpwi r3, 8
+/* 803019E8 002FD648 41 80 00 50 */ blt lbl_80301A38
+lbl_803019EC:
+/* 803019EC 002FD64C 7C D4 18 AE */ lbzx r6, r20, r3
+/* 803019F0 002FD650 7C 94 1A 14 */ add r4, r20, r3
+/* 803019F4 002FD654 98 C4 00 01 */ stb r6, 1(r4)
+/* 803019F8 002FD658 88 C4 FF FF */ lbz r6, -1(r4)
+/* 803019FC 002FD65C 7C D4 19 AE */ stbx r6, r20, r3
+/* 80301A00 002FD660 38 63 FF F8 */ addi r3, r3, -8
+/* 80301A04 002FD664 88 C4 FF FE */ lbz r6, -2(r4)
+/* 80301A08 002FD668 98 C4 FF FF */ stb r6, -1(r4)
+/* 80301A0C 002FD66C 88 C4 FF FD */ lbz r6, -3(r4)
+/* 80301A10 002FD670 98 C4 FF FE */ stb r6, -2(r4)
+/* 80301A14 002FD674 88 C4 FF FC */ lbz r6, -4(r4)
+/* 80301A18 002FD678 98 C4 FF FD */ stb r6, -3(r4)
+/* 80301A1C 002FD67C 88 C4 FF FB */ lbz r6, -5(r4)
+/* 80301A20 002FD680 98 C4 FF FC */ stb r6, -4(r4)
+/* 80301A24 002FD684 88 C4 FF FA */ lbz r6, -6(r4)
+/* 80301A28 002FD688 98 C4 FF FB */ stb r6, -5(r4)
+/* 80301A2C 002FD68C 88 C4 FF F9 */ lbz r6, -7(r4)
+/* 80301A30 002FD690 98 C4 FF FA */ stb r6, -6(r4)
+/* 80301A34 002FD694 42 00 FF B8 */ bdnz lbl_803019EC
+lbl_80301A38:
+/* 80301A38 002FD698 38 83 00 01 */ addi r4, r3, 1
+/* 80301A3C 002FD69C 7C 89 03 A6 */ mtctr r4
+/* 80301A40 002FD6A0 2C 03 00 00 */ cmpwi r3, 0
+/* 80301A44 002FD6A4 41 80 00 18 */ blt lbl_80301A5C
+lbl_80301A48:
+/* 80301A48 002FD6A8 7C 94 18 AE */ lbzx r4, r20, r3
+/* 80301A4C 002FD6AC 7C D4 1A 14 */ add r6, r20, r3
+/* 80301A50 002FD6B0 38 63 FF FF */ addi r3, r3, -1
+/* 80301A54 002FD6B4 98 86 00 01 */ stb r4, 1(r6)
+/* 80301A58 002FD6B8 42 00 FF F0 */ bdnz lbl_80301A48
+lbl_80301A5C:
+/* 80301A5C 002FD6BC 9A 74 00 00 */ stb r19, 0(r20)
+lbl_80301A60:
+/* 80301A60 002FD6C0 38 A5 00 01 */ addi r5, r5, 1
+lbl_80301A64:
+/* 80301A64 002FD6C4 7C 05 D8 00 */ cmpw r5, r27
+/* 80301A68 002FD6C8 41 80 FE B0 */ blt lbl_80301918
+lbl_80301A6C:
+/* 80301A6C 002FD6CC 2C 1E 00 00 */ cmpwi r30, 0
+/* 80301A70 002FD6D0 41 82 00 AC */ beq lbl_80301B1C
+/* 80301A74 002FD6D4 2C 17 00 4C */ cmpwi r23, 0x4c
+/* 80301A78 002FD6D8 40 82 00 18 */ bne lbl_80301A90
+/* 80301A7C 002FD6DC 7E C3 B3 78 */ mr r3, r22
+/* 80301A80 002FD6E0 38 80 00 01 */ li r4, 1
+/* 80301A84 002FD6E4 4B EC 50 FD */ bl __va_arg
+/* 80301A88 002FD6E8 80 83 00 00 */ lwz r4, 0(r3)
+/* 80301A8C 002FD6EC 48 00 00 30 */ b lbl_80301ABC
+lbl_80301A90:
+/* 80301A90 002FD6F0 2C 1D 00 00 */ cmpwi r29, 0
+/* 80301A94 002FD6F4 41 82 00 18 */ beq lbl_80301AAC
+/* 80301A98 002FD6F8 7E C3 B3 78 */ mr r3, r22
+/* 80301A9C 002FD6FC 38 80 00 01 */ li r4, 1
+/* 80301AA0 002FD700 4B EC 50 E1 */ bl __va_arg
+/* 80301AA4 002FD704 80 83 00 00 */ lwz r4, 0(r3)
+/* 80301AA8 002FD708 48 00 00 14 */ b lbl_80301ABC
+lbl_80301AAC:
+/* 80301AAC 002FD70C 7E C3 B3 78 */ mr r3, r22
+/* 80301AB0 002FD710 38 80 00 01 */ li r4, 1
+/* 80301AB4 002FD714 4B EC 50 CD */ bl __va_arg
+/* 80301AB8 002FD718 80 83 00 00 */ lwz r4, 0(r3)
+lbl_80301ABC:
+/* 80301ABC 002FD71C 7E 83 A3 78 */ mr r3, r20
+/* 80301AC0 002FD720 7F 85 E3 78 */ mr r5, r28
+/* 80301AC4 002FD724 7F 06 C3 78 */ mr r6, r24
+/* 80301AC8 002FD728 7F A7 EB 78 */ mr r7, r29
+/* 80301ACC 002FD72C 7F 68 DB 78 */ mr r8, r27
+/* 80301AD0 002FD730 7F 29 07 74 */ extsb r9, r25
+/* 80301AD4 002FD734 7F 4A 07 74 */ extsb r10, r26
+/* 80301AD8 002FD738 4B FF F5 BD */ bl convNum
+/* 80301ADC 002FD73C 7F FF 1A 14 */ add r31, r31, r3
+/* 80301AE0 002FD740 48 00 00 3C */ b lbl_80301B1C
+lbl_80301AE4:
+/* 80301AE4 002FD744 7E 83 A3 78 */ mr r3, r20
+/* 80301AE8 002FD748 7E 85 A3 78 */ mr r5, r20
+/* 80301AEC 002FD74C 38 80 00 00 */ li r4, 0
+/* 80301AF0 002FD750 3A 94 00 01 */ addi r20, r20, 1
+/* 80301AF4 002FD754 48 00 00 0C */ b lbl_80301B00
+lbl_80301AF8:
+/* 80301AF8 002FD758 38 A5 00 01 */ addi r5, r5, 1
+/* 80301AFC 002FD75C 38 84 00 01 */ addi r4, r4, 1
+lbl_80301B00:
+/* 80301B00 002FD760 88 05 00 00 */ lbz r0, 0(r5)
+/* 80301B04 002FD764 7C 00 07 75 */ extsb. r0, r0
+/* 80301B08 002FD768 40 82 FF F0 */ bne lbl_80301AF8
+/* 80301B0C 002FD76C 7C C3 21 AE */ stbx r6, r3, r4
+/* 80301B10 002FD770 38 04 00 01 */ addi r0, r4, 1
+/* 80301B14 002FD774 3B FF 00 01 */ addi r31, r31, 1
+/* 80301B18 002FD778 7E 03 01 AE */ stbx r16, r3, r0
+lbl_80301B1C:
+/* 80301B1C 002FD77C 88 D5 00 00 */ lbz r6, 0(r21)
+/* 80301B20 002FD780 3A B5 00 01 */ addi r21, r21, 1
+/* 80301B24 002FD784 7C C0 07 75 */ extsb. r0, r6
+/* 80301B28 002FD788 40 82 FB A4 */ bne lbl_803016CC
+/* 80301B2C 002FD78C 39 61 00 50 */ addi r11, r1, 0x50
+/* 80301B30 002FD790 7F E3 FB 78 */ mr r3, r31
+/* 80301B34 002FD794 4B EC 56 15 */ bl _restgpr_16
+/* 80301B38 002FD798 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 80301B3C 002FD79C 7C 08 03 A6 */ mtlr r0
+/* 80301B40 002FD7A0 38 21 00 50 */ addi r1, r1, 0x50
+/* 80301B44 002FD7A4 4E 80 00 20 */ blr
diff --git a/asm/SDK/NWC24/NWC24System.s b/asm/SDK/NWC24/NWC24System.s
new file mode 100644
index 0000000..a3748b4
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24System.s
@@ -0,0 +1,112 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24iPrepareShutdown
+NWC24iPrepareShutdown:
+/* 80304D1C 0030097C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 80304D20 00300980 7C 08 02 A6 */ mflr r0
+/* 80304D24 00300984 90 01 00 24 */ stw r0, 0x24(r1)
+/* 80304D28 00300988 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 80304D2C 0030098C 3B E0 00 00 */ li r31, 0
+/* 80304D30 00300990 4B FF E3 25 */ bl NWC24iRegister
+/* 80304D34 00300994 3C A0 80 30 */ lis r5, NWC24Shutdown@ha
+/* 80304D38 00300998 3C 80 80 58 */ lis r4, lbl_8057EA00@ha
+/* 80304D3C 0030099C 38 A5 4D C4 */ addi r5, r5, NWC24Shutdown@l
+/* 80304D40 003009A0 38 00 00 6E */ li r0, 0x6e
+/* 80304D44 003009A4 38 64 EA 00 */ addi r3, r4, lbl_8057EA00@l
+/* 80304D48 003009A8 90 A4 EA 00 */ stw r5, -0x1600(r4)
+/* 80304D4C 003009AC 90 03 00 04 */ stw r0, 4(r3)
+/* 80304D50 003009B0 4B F6 AF 41 */ bl OSRegisterShutdownFunction
+/* 80304D54 003009B4 80 0D 8C C8 */ lwz r0, lbl_8063DF88-_SDA_BASE_(r13)
+/* 80304D58 003009B8 2C 00 00 00 */ cmpwi r0, 0
+/* 80304D5C 003009BC 40 80 00 24 */ bge lbl_80304D80
+/* 80304D60 003009C0 3C 60 80 44 */ lis r3, lbl_80446590@ha
+/* 80304D64 003009C4 3C 80 80 44 */ lis r4, lbl_804465A8@ha
+/* 80304D68 003009C8 38 63 65 90 */ addi r3, r3, lbl_80446590@l
+/* 80304D6C 003009CC 38 AD 8C C8 */ addi r5, r13, lbl_8063DF88-_SDA_BASE_
+/* 80304D70 003009D0 38 84 65 A8 */ addi r4, r4, lbl_804465A8@l
+/* 80304D74 003009D4 38 C0 00 01 */ li r6, 1
+/* 80304D78 003009D8 4B FF F9 05 */ bl NWC24iOpenResourceManager
+/* 80304D7C 003009DC 7C 7F 1B 78 */ mr r31, r3
+lbl_80304D80:
+/* 80304D80 003009E0 38 00 00 05 */ li r0, 5
+/* 80304D84 003009E4 90 0D AF D0 */ stw r0, lbl_80640290-_SDA_BASE_(r13)
+lbl_80304D88:
+/* 80304D88 003009E8 4B FE 5C 65 */ bl SCCheckStatus
+/* 80304D8C 003009EC 28 03 00 02 */ cmplwi r3, 2
+/* 80304D90 003009F0 41 82 00 1C */ beq lbl_80304DAC
+/* 80304D94 003009F4 28 03 00 01 */ cmplwi r3, 1
+/* 80304D98 003009F8 41 82 FF F0 */ beq lbl_80304D88
+/* 80304D9C 003009FC 38 61 00 08 */ addi r3, r1, 8
+/* 80304DA0 00300A00 4B FE 76 9D */ bl SCGetIdleMode
+/* 80304DA4 00300A04 88 61 00 09 */ lbz r3, 9(r1)
+/* 80304DA8 00300A08 4B F6 E8 45 */ bl __OSSetIdleLEDMode
+lbl_80304DAC:
+/* 80304DAC 00300A0C 7F E3 FB 78 */ mr r3, r31
+/* 80304DB0 00300A10 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 80304DB4 00300A14 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 80304DB8 00300A18 7C 08 03 A6 */ mtlr r0
+/* 80304DBC 00300A1C 38 21 00 20 */ addi r1, r1, 0x20
+/* 80304DC0 00300A20 4E 80 00 20 */ blr
+
+NWC24Shutdown:
+/* 80304DC4 00300A24 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 80304DC8 00300A28 7C 08 02 A6 */ mflr r0
+/* 80304DCC 00300A2C 2C 03 00 00 */ cmpwi r3, 0
+/* 80304DD0 00300A30 90 01 00 14 */ stw r0, 0x14(r1)
+/* 80304DD4 00300A34 41 82 00 0C */ beq lbl_80304DE0
+/* 80304DD8 00300A38 38 60 00 01 */ li r3, 1
+/* 80304DDC 00300A3C 48 00 00 A8 */ b lbl_80304E84
+lbl_80304DE0:
+/* 80304DE0 00300A40 80 0D AF D4 */ lwz r0, lbl_80640294-_SDA_BASE_(r13)
+/* 80304DE4 00300A44 2C 00 00 00 */ cmpwi r0, 0
+/* 80304DE8 00300A48 41 82 00 54 */ beq lbl_80304E3C
+/* 80304DEC 00300A4C 4B FF F9 E1 */ bl NWC24iIsAsyncRequestPending
+/* 80304DF0 00300A50 2C 03 00 00 */ cmpwi r3, 0
+/* 80304DF4 00300A54 41 82 00 0C */ beq lbl_80304E00
+/* 80304DF8 00300A58 38 60 00 00 */ li r3, 0
+/* 80304DFC 00300A5C 48 00 00 88 */ b lbl_80304E84
+lbl_80304E00:
+/* 80304E00 00300A60 80 0D AF D8 */ lwz r0, lbl_80640298-_SDA_BASE_(r13)
+/* 80304E04 00300A64 2C 00 00 00 */ cmpwi r0, 0
+/* 80304E08 00300A68 41 80 00 0C */ blt lbl_80304E14
+/* 80304E0C 00300A6C 38 60 00 01 */ li r3, 1
+/* 80304E10 00300A70 48 00 00 74 */ b lbl_80304E84
+lbl_80304E14:
+/* 80304E14 00300A74 80 6D AF D0 */ lwz r3, lbl_80640290-_SDA_BASE_(r13)
+/* 80304E18 00300A78 2C 03 00 00 */ cmpwi r3, 0
+/* 80304E1C 00300A7C 40 81 00 18 */ ble lbl_80304E34
+/* 80304E20 00300A80 38 03 FF FF */ addi r0, r3, -1
+/* 80304E24 00300A84 38 60 00 00 */ li r3, 0
+/* 80304E28 00300A88 90 6D AF D4 */ stw r3, lbl_80640294-_SDA_BASE_(r13)
+/* 80304E2C 00300A8C 90 0D AF D0 */ stw r0, lbl_80640290-_SDA_BASE_(r13)
+/* 80304E30 00300A90 48 00 00 50 */ b lbl_80304E80
+lbl_80304E34:
+/* 80304E34 00300A94 38 60 00 01 */ li r3, 1
+/* 80304E38 00300A98 48 00 00 4C */ b lbl_80304E84
+lbl_80304E3C:
+/* 80304E3C 00300A9C 3C A0 80 58 */ lis r5, lbl_8057EA20@ha
+/* 80304E40 00300AA0 3C 60 80 44 */ lis r3, lbl_804465BC@ha
+/* 80304E44 00300AA4 90 85 EA 20 */ stw r4, lbl_8057EA20@l(r5)
+/* 80304E48 00300AA8 3D 00 80 58 */ lis r8, lbl_8057EA40@ha
+/* 80304E4C 00300AAC 38 C5 EA 20 */ addi r6, r5, -5600
+/* 80304E50 00300AB0 80 8D 8C C8 */ lwz r4, lbl_8063DF88-_SDA_BASE_(r13)
+/* 80304E54 00300AB4 38 63 65 BC */ addi r3, r3, lbl_804465BC@l
+/* 80304E58 00300AB8 39 08 EA 40 */ addi r8, r8, lbl_8057EA40@l
+/* 80304E5C 00300ABC 38 A0 00 28 */ li r5, 0x28
+/* 80304E60 00300AC0 38 E0 00 20 */ li r7, 0x20
+/* 80304E64 00300AC4 39 20 00 20 */ li r9, 0x20
+/* 80304E68 00300AC8 39 4D AF D8 */ addi r10, r13, lbl_80640298-_SDA_BASE_
+/* 80304E6C 00300ACC 4B FF F9 05 */ bl NWC24iIoctlResourceManagerAsync
+/* 80304E70 00300AD0 2C 03 00 00 */ cmpwi r3, 0
+/* 80304E74 00300AD4 41 80 00 0C */ blt lbl_80304E80
+/* 80304E78 00300AD8 38 00 00 01 */ li r0, 1
+/* 80304E7C 00300ADC 90 0D AF D4 */ stw r0, lbl_80640294-_SDA_BASE_(r13)
+lbl_80304E80:
+/* 80304E80 00300AE0 38 60 00 00 */ li r3, 0
+lbl_80304E84:
+/* 80304E84 00300AE4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80304E88 00300AE8 7C 08 03 A6 */ mtlr r0
+/* 80304E8C 00300AEC 38 21 00 10 */ addi r1, r1, 0x10
+/* 80304E90 00300AF0 4E 80 00 20 */ blr
diff --git a/asm/SDK/NWC24/NWC24Time.s b/asm/SDK/NWC24/NWC24Time.s
new file mode 100644
index 0000000..3660730
--- /dev/null
+++ b/asm/SDK/NWC24/NWC24Time.s
@@ -0,0 +1,141 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24iSetRtcCounter
+NWC24iSetRtcCounter:
+/* 803044A0 00300100 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803044A4 00300104 7C 08 02 A6 */ mflr r0
+/* 803044A8 00300108 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803044AC 0030010C 39 61 00 30 */ addi r11, r1, 0x30
+/* 803044B0 00300110 4B EC 2C 79 */ bl _savegpr_27
+/* 803044B4 00300114 3F C0 80 58 */ lis r30, lbl_8057E920@ha
+/* 803044B8 00300118 7C 7B 1B 78 */ mr r27, r3
+/* 803044BC 0030011C 7C 9C 23 78 */ mr r28, r4
+/* 803044C0 00300120 3B DE E9 20 */ addi r30, r30, lbl_8057E920@l
+/* 803044C4 00300124 4B F6 CE 35 */ bl OSGetCurrentThread
+/* 803044C8 00300128 2C 03 00 00 */ cmpwi r3, 0
+/* 803044CC 0030012C 40 82 00 0C */ bne lbl_803044D8
+/* 803044D0 00300130 38 60 FF FF */ li r3, -1
+/* 803044D4 00300134 48 00 00 08 */ b lbl_803044DC
+lbl_803044D8:
+/* 803044D8 00300138 38 60 00 00 */ li r3, 0
+lbl_803044DC:
+/* 803044DC 0030013C 2C 03 00 00 */ cmpwi r3, 0
+/* 803044E0 00300140 40 80 00 08 */ bge lbl_803044E8
+/* 803044E4 00300144 48 00 00 EC */ b lbl_803045D0
+lbl_803044E8:
+/* 803044E8 00300148 80 0D AF C0 */ lwz r0, lbl_80640280-_SDA_BASE_(r13)
+/* 803044EC 0030014C 2C 00 00 00 */ cmpwi r0, 0
+/* 803044F0 00300150 40 82 00 50 */ bne lbl_80304540
+/* 803044F4 00300154 4B F6 A2 69 */ bl OSDisableInterrupts
+/* 803044F8 00300158 80 0D AF C0 */ lwz r0, lbl_80640280-_SDA_BASE_(r13)
+/* 803044FC 0030015C 7C 7F 1B 78 */ mr r31, r3
+/* 80304500 00300160 2C 00 00 00 */ cmpwi r0, 0
+/* 80304504 00300164 40 82 00 34 */ bne lbl_80304538
+/* 80304508 00300168 38 7E 00 80 */ addi r3, r30, 0x80
+/* 8030450C 0030016C 4B F6 B4 05 */ bl OSInitMutex
+/* 80304510 00300170 38 7E 00 A0 */ addi r3, r30, 0xa0
+/* 80304514 00300174 38 80 00 00 */ li r4, 0
+/* 80304518 00300178 38 A0 00 20 */ li r5, 0x20
+/* 8030451C 0030017C 4B CF FB E9 */ bl memset
+/* 80304520 00300180 38 7E 00 C0 */ addi r3, r30, 0xc0
+/* 80304524 00300184 38 80 00 00 */ li r4, 0
+/* 80304528 00300188 38 A0 00 20 */ li r5, 0x20
+/* 8030452C 0030018C 4B CF FB D9 */ bl memset
+/* 80304530 00300190 38 00 00 01 */ li r0, 1
+/* 80304534 00300194 90 0D AF C0 */ stw r0, lbl_80640280-_SDA_BASE_(r13)
+lbl_80304538:
+/* 80304538 00300198 7F E3 FB 78 */ mr r3, r31
+/* 8030453C 0030019C 4B F6 A2 49 */ bl OSRestoreInterrupts
+lbl_80304540:
+/* 80304540 003001A0 38 7E 00 80 */ addi r3, r30, 0x80
+/* 80304544 003001A4 4B F6 B4 05 */ bl OSLockMutex
+/* 80304548 003001A8 3F E0 80 44 */ lis r31, lbl_8044655C@ha
+/* 8030454C 003001AC 3C 80 80 44 */ lis r4, lbl_80446548@ha
+/* 80304550 003001B0 38 7F 65 5C */ addi r3, r31, lbl_8044655C@l
+/* 80304554 003001B4 38 A1 00 08 */ addi r5, r1, 8
+/* 80304558 003001B8 38 84 65 48 */ addi r4, r4, lbl_80446548@l
+/* 8030455C 003001BC 38 C0 00 00 */ li r6, 0
+/* 80304560 003001C0 48 00 01 1D */ bl NWC24iOpenResourceManager
+/* 80304564 003001C4 2C 03 00 00 */ cmpwi r3, 0
+/* 80304568 003001C8 7C 7D 1B 78 */ mr r29, r3
+/* 8030456C 003001CC 41 80 00 58 */ blt lbl_803045C4
+/* 80304570 003001D0 38 DE 00 A0 */ addi r6, r30, 0xa0
+/* 80304574 003001D4 93 7E 00 A0 */ stw r27, 0xa0(r30)
+/* 80304578 003001D8 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030457C 003001DC 38 7F 65 5C */ addi r3, r31, 0x655c
+/* 80304580 003001E0 93 86 00 04 */ stw r28, 4(r6)
+/* 80304584 003001E4 39 1E 00 C0 */ addi r8, r30, 0xc0
+/* 80304588 003001E8 38 A0 00 17 */ li r5, 0x17
+/* 8030458C 003001EC 38 E0 00 20 */ li r7, 0x20
+/* 80304590 003001F0 39 20 00 20 */ li r9, 0x20
+/* 80304594 003001F4 48 00 01 95 */ bl NWC24iIoctlResourceManager
+/* 80304598 003001F8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030459C 003001FC 7C 7D 1B 78 */ mr r29, r3
+/* 803045A0 00300200 41 80 00 08 */ blt lbl_803045A8
+/* 803045A4 00300204 83 BE 00 C0 */ lwz r29, 0xc0(r30)
+lbl_803045A8:
+/* 803045A8 00300208 3C 60 80 44 */ lis r3, lbl_8044655C@ha
+/* 803045AC 0030020C 80 81 00 08 */ lwz r4, 8(r1)
+/* 803045B0 00300210 38 63 65 5C */ addi r3, r3, lbl_8044655C@l
+/* 803045B4 00300214 48 00 01 41 */ bl NWC24iCloseResourceManager
+/* 803045B8 00300218 2C 1D 00 00 */ cmpwi r29, 0
+/* 803045BC 0030021C 41 80 00 08 */ blt lbl_803045C4
+/* 803045C0 00300220 7C 7D 1B 78 */ mr r29, r3
+lbl_803045C4:
+/* 803045C4 00300224 38 7E 00 80 */ addi r3, r30, 0x80
+/* 803045C8 00300228 4B F6 B4 5D */ bl OSUnlockMutex
+/* 803045CC 0030022C 7F A3 EB 78 */ mr r3, r29
+lbl_803045D0:
+/* 803045D0 00300230 39 61 00 30 */ addi r11, r1, 0x30
+/* 803045D4 00300234 4B EC 2B A1 */ bl _restgpr_27
+/* 803045D8 00300238 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803045DC 0030023C 7C 08 03 A6 */ mtlr r0
+/* 803045E0 00300240 38 21 00 30 */ addi r1, r1, 0x30
+/* 803045E4 00300244 4E 80 00 20 */ blr
+
+.global NWC24iSynchronizeRtcCounter
+NWC24iSynchronizeRtcCounter:
+/* 803045E8 00300248 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803045EC 0030024C 7C 08 02 A6 */ mflr r0
+/* 803045F0 00300250 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803045F4 00300254 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 803045F8 00300258 93 C1 00 08 */ stw r30, 8(r1)
+/* 803045FC 0030025C 7C 7E 1B 78 */ mr r30, r3
+lbl_80304600:
+/* 80304600 00300260 4B FE 63 ED */ bl SCCheckStatus
+/* 80304604 00300264 28 03 00 02 */ cmplwi r3, 2
+/* 80304608 00300268 40 82 00 0C */ bne lbl_80304614
+/* 8030460C 0030026C 38 60 FF FF */ li r3, -1
+/* 80304610 00300270 48 00 00 34 */ b lbl_80304644
+lbl_80304614:
+/* 80304614 00300274 2C 03 00 00 */ cmpwi r3, 0
+/* 80304618 00300278 40 82 FF E8 */ bne lbl_80304600
+/* 8030461C 0030027C 4B FE 7F A5 */ bl SCGetCounterBias
+/* 80304620 00300280 7C 7F 1B 78 */ mr r31, r3
+/* 80304624 00300284 4B F6 E1 95 */ bl OSGetTime
+/* 80304628 00300288 3C C0 80 00 */ lis r6, 0x800000F8@ha
+/* 8030462C 0030028C 38 A0 00 00 */ li r5, 0
+/* 80304630 00300290 80 06 00 F8 */ lwz r0, 0x800000F8@l(r6)
+/* 80304634 00300294 54 06 F0 BE */ srwi r6, r0, 2
+/* 80304638 00300298 4B EC 2C 41 */ bl __div2i
+/* 8030463C 0030029C 7F FF 20 10 */ subfc r31, r31, r4
+/* 80304640 003002A0 38 60 00 00 */ li r3, 0
+lbl_80304644:
+/* 80304644 003002A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80304648 003002A8 41 82 00 08 */ beq lbl_80304650
+/* 8030464C 003002AC 48 00 00 18 */ b lbl_80304664
+lbl_80304650:
+/* 80304650 003002B0 7C 1E 00 D0 */ neg r0, r30
+/* 80304654 003002B4 7F E3 FB 78 */ mr r3, r31
+/* 80304658 003002B8 7C 00 F3 78 */ or r0, r0, r30
+/* 8030465C 003002BC 54 04 0F FE */ srwi r4, r0, 0x1f
+/* 80304660 003002C0 4B FF FE 41 */ bl NWC24iSetRtcCounter
+lbl_80304664:
+/* 80304664 003002C4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80304668 003002C8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8030466C 003002CC 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80304670 003002D0 7C 08 03 A6 */ mtlr r0
+/* 80304674 003002D4 38 21 00 10 */ addi r1, r1, 0x10
+/* 80304678 003002D8 4E 80 00 20 */ blr
diff --git a/asm/SDK/OS/OSNet.s b/asm/SDK/OS/OSNet.s
index 4ceeb0e..430f8cf 100644
--- a/asm/SDK/OS/OSNet.s
+++ b/asm/SDK/OS/OSNet.s
@@ -19,7 +19,7 @@ __OSInitNet:
/* 80274140 0026FDA0 40 82 00 08 */ bne lbl_80274148
/* 80274144 0026FDA4 48 00 00 5C */ b lbl_802741A0
lbl_80274148:
-/* 80274148 0026FDA8 48 09 0B D5 */ bl func_80304D1C
+/* 80274148 0026FDA8 48 09 0B D5 */ bl NWC24iPrepareShutdown
/* 8027414C 0026FDAC 2C 03 00 00 */ cmpwi r3, 0
/* 80274150 0026FDB0 41 82 00 34 */ beq lbl_80274184
/* 80274154 0026FDB4 40 80 00 14 */ bge lbl_80274168
@@ -28,7 +28,7 @@ lbl_80274148:
/* 80274160 0026FDC0 4C C6 31 82 */ crclr 6
/* 80274164 0026FDC4 4B D9 39 61 */ bl func_80007AC4
lbl_80274168:
-/* 80274168 0026FDC8 48 08 F8 8D */ bl func_803039F4
+/* 80274168 0026FDC8 48 08 F8 8D */ bl NWC24SuspendScheduler
/* 8027416C 0026FDCC 2C 03 00 00 */ cmpwi r3, 0
/* 80274170 0026FDD0 40 80 00 14 */ bge lbl_80274184
/* 80274174 0026FDD4 7C 64 1B 78 */ mr r4, r3
@@ -36,7 +36,7 @@ lbl_80274168:
/* 8027417C 0026FDDC 4C C6 31 82 */ crclr 6
/* 80274180 0026FDE0 4B D9 39 45 */ bl func_80007AC4
lbl_80274184:
-/* 80274184 0026FDE4 48 09 04 65 */ bl func_803045E8
+/* 80274184 0026FDE4 48 09 04 65 */ bl NWC24iSynchronizeRtcCounter
/* 80274188 0026FDE8 2C 03 00 00 */ cmpwi r3, 0
/* 8027418C 0026FDEC 41 82 00 14 */ beq lbl_802741A0
/* 80274190 0026FDF0 7C 64 1B 78 */ mr r4, r3
diff --git a/asm/SDK/SO/SOCommon.s b/asm/SDK/SO/SOCommon.s
index 4335984..6f5e8ee 100644
--- a/asm/SDK/SO/SOCommon.s
+++ b/asm/SDK/SO/SOCommon.s
@@ -372,7 +372,7 @@ lbl_802F5684:
/* 802F5698 002F12F8 6E 3E 80 00 */ xoris r30, r17, 0x8000
lbl_802F569C:
/* 802F569C 002F12FC 38 61 00 08 */ addi r3, r1, 8
-/* 802F56A0 002F1300 48 00 E6 D1 */ bl func_80303D70
+/* 802F56A0 002F1300 48 00 E6 D1 */ bl NWC24iStartupSocket
/* 802F56A4 002F1304 2C 03 FF E3 */ cmpwi r3, -29
/* 802F56A8 002F1308 7C 7A 1B 78 */ mr r26, r3
/* 802F56AC 002F130C 40 82 00 4C */ bne lbl_802F56F8
@@ -561,7 +561,7 @@ lbl_802F591C:
/* 802F5924 002F1584 90 1F 00 08 */ stw r0, 8(r31)
/* 802F5928 002F1588 4B F7 8E 5D */ bl OSRestoreInterrupts
/* 802F592C 002F158C 38 61 00 08 */ addi r3, r1, 8
-/* 802F5930 002F1590 48 00 E4 51 */ bl func_80303D80
+/* 802F5930 002F1590 48 00 E4 51 */ bl NWC24iCleanupSocket
/* 802F5934 002F1594 38 03 00 21 */ addi r0, r3, 0x21
/* 802F5938 002F1598 80 81 00 08 */ lwz r4, 8(r1)
/* 802F593C 002F159C 28 00 00 21 */ cmplwi r0, 0x21
@@ -921,7 +921,7 @@ lbl_802F5DE4:
/* 802F5DE8 002F1A48 48 00 01 B4 */ b lbl_802F5F9C
lbl_802F5DEC:
/* 802F5DEC 002F1A4C 90 7B 00 00 */ stw r3, 0(r27)
-/* 802F5DF0 002F1A50 48 00 DF A1 */ bl func_80303D90
+/* 802F5DF0 002F1A50 48 00 DF A1 */ bl NWC24iLockSocket
/* 802F5DF4 002F1A54 2C 03 00 00 */ cmpwi r3, 0
/* 802F5DF8 002F1A58 40 82 00 D8 */ bne lbl_802F5ED0
/* 802F5DFC 002F1A5C 4B FF 77 29 */ bl NCDGetLinkStatus
@@ -1073,7 +1073,7 @@ SOiConcludeTempRm:
/* 802F5FF4 002F1C54 93 C1 00 08 */ stw r30, 8(r1)
/* 802F5FF8 002F1C58 7C 9E 23 78 */ mr r30, r4
/* 802F5FFC 002F1C5C 40 82 00 84 */ bne lbl_802F6080
-/* 802F6000 002F1C60 48 00 DD A1 */ bl func_80303DA0
+/* 802F6000 002F1C60 48 00 DD A1 */ bl NWC24iUnlockSocket
/* 802F6004 002F1C64 2C 03 FF FF */ cmpwi r3, -1
/* 802F6008 002F1C68 41 82 00 28 */ beq lbl_802F6030
/* 802F600C 002F1C6C 40 80 00 10 */ bge lbl_802F601C
diff --git a/asm/SDK/SSL/ssl_api.s b/asm/SDK/SSL/ssl_api.s
new file mode 100644
index 0000000..45f7d7a
--- /dev/null
+++ b/asm/SDK/SSL/ssl_api.s
@@ -0,0 +1,914 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global SSLNew
+SSLNew:
+/* 802FFF1C 002FBB7C 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 802FFF20 002FBB80 7C 2C 0B 78 */ mr r12, r1
+/* 802FFF24 002FBB84 21 6B FE 60 */ subfic r11, r11, -416
+/* 802FFF28 002FBB88 7C 21 59 6E */ stwux r1, r1, r11
+/* 802FFF2C 002FBB8C 7C 08 02 A6 */ mflr r0
+/* 802FFF30 002FBB90 3C A0 80 44 */ lis r5, lbl_80446240@ha
+/* 802FFF34 002FBB94 90 0C 00 04 */ stw r0, 4(r12)
+/* 802FFF38 002FBB98 93 EC FF FC */ stw r31, -4(r12)
+/* 802FFF3C 002FBB9C 93 CC FF F8 */ stw r30, -8(r12)
+/* 802FFF40 002FBBA0 93 AC FF F4 */ stw r29, -0xc(r12)
+/* 802FFF44 002FBBA4 7C 9D 23 78 */ mr r29, r4
+/* 802FFF48 002FBBA8 38 80 00 00 */ li r4, 0
+/* 802FFF4C 002FBBAC 93 8C FF F0 */ stw r28, -0x10(r12)
+/* 802FFF50 002FBBB0 7C 7C 1B 78 */ mr r28, r3
+/* 802FFF54 002FBBB4 38 65 62 40 */ addi r3, r5, lbl_80446240@l
+/* 802FFF58 002FBBB8 4B FA 32 01 */ bl IOS_Open
+/* 802FFF5C 002FBBBC 2C 03 00 00 */ cmpwi r3, 0
+/* 802FFF60 002FBBC0 7C 7F 1B 78 */ mr r31, r3
+/* 802FFF64 002FBBC4 40 80 00 0C */ bge lbl_802FFF70
+/* 802FFF68 002FBBC8 38 60 FF FF */ li r3, -1
+/* 802FFF6C 002FBBCC 48 00 00 C8 */ b lbl_80300034
+lbl_802FFF70:
+/* 802FFF70 002FBBD0 7F A3 EB 78 */ mr r3, r29
+/* 802FFF74 002FBBD4 38 80 00 00 */ li r4, 0
+/* 802FFF78 002FBBD8 48 00 00 0C */ b lbl_802FFF84
+lbl_802FFF7C:
+/* 802FFF7C 002FBBDC 38 84 00 01 */ addi r4, r4, 1
+/* 802FFF80 002FBBE0 38 63 00 01 */ addi r3, r3, 1
+lbl_802FFF84:
+/* 802FFF84 002FBBE4 28 04 01 00 */ cmplwi r4, 0x100
+/* 802FFF88 002FBBE8 40 80 00 10 */ bge lbl_802FFF98
+/* 802FFF8C 002FBBEC 88 03 00 00 */ lbz r0, 0(r3)
+/* 802FFF90 002FBBF0 7C 00 07 75 */ extsb. r0, r0
+/* 802FFF94 002FBBF4 40 82 FF E8 */ bne lbl_802FFF7C
+lbl_802FFF98:
+/* 802FFF98 002FBBF8 7F DD 18 51 */ subf. r30, r29, r3
+/* 802FFF9C 002FBBFC 40 82 00 0C */ bne lbl_802FFFA8
+/* 802FFFA0 002FBC00 38 60 FF FF */ li r3, -1
+/* 802FFFA4 002FBC04 48 00 00 90 */ b lbl_80300034
+lbl_802FFFA8:
+/* 802FFFA8 002FBC08 38 61 00 80 */ addi r3, r1, 0x80
+/* 802FFFAC 002FBC0C 38 80 00 00 */ li r4, 0
+/* 802FFFB0 002FBC10 38 A0 01 00 */ li r5, 0x100
+/* 802FFFB4 002FBC14 4B D0 41 51 */ bl memset
+/* 802FFFB8 002FBC18 28 1E 01 00 */ cmplwi r30, 0x100
+/* 802FFFBC 002FBC1C 40 81 00 08 */ ble lbl_802FFFC4
+/* 802FFFC0 002FBC20 3B C0 01 00 */ li r30, 0x100
+lbl_802FFFC4:
+/* 802FFFC4 002FBC24 7F A4 EB 78 */ mr r4, r29
+/* 802FFFC8 002FBC28 7F C5 F3 78 */ mr r5, r30
+/* 802FFFCC 002FBC2C 38 61 00 80 */ addi r3, r1, 0x80
+/* 802FFFD0 002FBC30 4B D0 40 31 */ bl memcpy
+/* 802FFFD4 002FBC34 39 40 00 20 */ li r10, 0x20
+/* 802FFFD8 002FBC38 39 61 00 40 */ addi r11, r1, 0x40
+/* 802FFFDC 002FBC3C 39 21 00 20 */ addi r9, r1, 0x20
+/* 802FFFE0 002FBC40 39 01 00 80 */ addi r8, r1, 0x80
+/* 802FFFE4 002FBC44 38 60 FF FF */ li r3, -1
+/* 802FFFE8 002FBC48 38 00 01 00 */ li r0, 0x100
+/* 802FFFEC 002FBC4C 90 61 00 40 */ stw r3, 0x40(r1)
+/* 802FFFF0 002FBC50 7F E3 FB 78 */ mr r3, r31
+/* 802FFFF4 002FBC54 38 E1 00 60 */ addi r7, r1, 0x60
+/* 802FFFF8 002FBC58 38 80 00 01 */ li r4, 1
+/* 802FFFFC 002FBC5C 93 81 00 20 */ stw r28, 0x20(r1)
+/* 80300000 002FBC60 38 A0 00 01 */ li r5, 1
+/* 80300004 002FBC64 38 C0 00 02 */ li r6, 2
+/* 80300008 002FBC68 91 61 00 60 */ stw r11, 0x60(r1)
+/* 8030000C 002FBC6C 91 41 00 64 */ stw r10, 0x64(r1)
+/* 80300010 002FBC70 91 21 00 68 */ stw r9, 0x68(r1)
+/* 80300014 002FBC74 91 41 00 6C */ stw r10, 0x6c(r1)
+/* 80300018 002FBC78 91 01 00 70 */ stw r8, 0x70(r1)
+/* 8030001C 002FBC7C 90 01 00 74 */ stw r0, 0x74(r1)
+/* 80300020 002FBC80 4B FA 3E 21 */ bl IOS_Ioctlv
+/* 80300024 002FBC84 7F E3 FB 78 */ mr r3, r31
+/* 80300028 002FBC88 4B FA 33 11 */ bl IOS_Close
+/* 8030002C 002FBC8C 80 61 00 60 */ lwz r3, 0x60(r1)
+/* 80300030 002FBC90 80 63 00 00 */ lwz r3, 0(r3)
+lbl_80300034:
+/* 80300034 002FBC94 81 41 00 00 */ lwz r10, 0(r1)
+/* 80300038 002FBC98 80 0A 00 04 */ lwz r0, 4(r10)
+/* 8030003C 002FBC9C 83 EA FF FC */ lwz r31, -4(r10)
+/* 80300040 002FBCA0 83 CA FF F8 */ lwz r30, -8(r10)
+/* 80300044 002FBCA4 83 AA FF F4 */ lwz r29, -0xc(r10)
+/* 80300048 002FBCA8 83 8A FF F0 */ lwz r28, -0x10(r10)
+/* 8030004C 002FBCAC 7C 08 03 A6 */ mtlr r0
+/* 80300050 002FBCB0 7D 41 53 78 */ mr r1, r10
+/* 80300054 002FBCB4 4E 80 00 20 */ blr
+
+.global SSLConnect
+SSLConnect:
+/* 80300058 002FBCB8 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 8030005C 002FBCBC 7C 2C 0B 78 */ mr r12, r1
+/* 80300060 002FBCC0 21 6B FF 40 */ subfic r11, r11, -192
+/* 80300064 002FBCC4 7C 21 59 6E */ stwux r1, r1, r11
+/* 80300068 002FBCC8 7C 08 02 A6 */ mflr r0
+/* 8030006C 002FBCCC 3C A0 80 44 */ lis r5, lbl_80446240@ha
+/* 80300070 002FBCD0 90 0C 00 04 */ stw r0, 4(r12)
+/* 80300074 002FBCD4 93 EC FF FC */ stw r31, -4(r12)
+/* 80300078 002FBCD8 93 CC FF F8 */ stw r30, -8(r12)
+/* 8030007C 002FBCDC 7C 9E 23 78 */ mr r30, r4
+/* 80300080 002FBCE0 38 80 00 00 */ li r4, 0
+/* 80300084 002FBCE4 93 AC FF F4 */ stw r29, -0xc(r12)
+/* 80300088 002FBCE8 7C 7D 1B 78 */ mr r29, r3
+/* 8030008C 002FBCEC 38 65 62 40 */ addi r3, r5, lbl_80446240@l
+/* 80300090 002FBCF0 4B FA 30 C9 */ bl IOS_Open
+/* 80300094 002FBCF4 2C 03 00 00 */ cmpwi r3, 0
+/* 80300098 002FBCF8 7C 7F 1B 78 */ mr r31, r3
+/* 8030009C 002FBCFC 40 80 00 0C */ bge lbl_803000A8
+/* 803000A0 002FBD00 38 60 FF FF */ li r3, -1
+/* 803000A4 002FBD04 48 00 00 5C */ b lbl_80300100
+lbl_803000A8:
+/* 803000A8 002FBD08 39 20 00 20 */ li r9, 0x20
+/* 803000AC 002FBD0C 39 41 00 20 */ addi r10, r1, 0x20
+/* 803000B0 002FBD10 39 01 00 60 */ addi r8, r1, 0x60
+/* 803000B4 002FBD14 38 01 00 40 */ addi r0, r1, 0x40
+/* 803000B8 002FBD18 39 60 FF FF */ li r11, -1
+/* 803000BC 002FBD1C 93 A1 00 60 */ stw r29, 0x60(r1)
+/* 803000C0 002FBD20 38 E1 00 80 */ addi r7, r1, 0x80
+/* 803000C4 002FBD24 38 80 00 02 */ li r4, 2
+/* 803000C8 002FBD28 93 C1 00 40 */ stw r30, 0x40(r1)
+/* 803000CC 002FBD2C 38 A0 00 01 */ li r5, 1
+/* 803000D0 002FBD30 38 C0 00 02 */ li r6, 2
+/* 803000D4 002FBD34 91 61 00 20 */ stw r11, 0x20(r1)
+/* 803000D8 002FBD38 91 41 00 80 */ stw r10, 0x80(r1)
+/* 803000DC 002FBD3C 91 21 00 84 */ stw r9, 0x84(r1)
+/* 803000E0 002FBD40 91 01 00 88 */ stw r8, 0x88(r1)
+/* 803000E4 002FBD44 91 21 00 8C */ stw r9, 0x8c(r1)
+/* 803000E8 002FBD48 90 01 00 90 */ stw r0, 0x90(r1)
+/* 803000EC 002FBD4C 91 21 00 94 */ stw r9, 0x94(r1)
+/* 803000F0 002FBD50 4B FA 3D 51 */ bl IOS_Ioctlv
+/* 803000F4 002FBD54 7F E3 FB 78 */ mr r3, r31
+/* 803000F8 002FBD58 4B FA 32 41 */ bl IOS_Close
+/* 803000FC 002FBD5C 80 61 00 20 */ lwz r3, 0x20(r1)
+lbl_80300100:
+/* 80300100 002FBD60 81 41 00 00 */ lwz r10, 0(r1)
+/* 80300104 002FBD64 80 0A 00 04 */ lwz r0, 4(r10)
+/* 80300108 002FBD68 83 EA FF FC */ lwz r31, -4(r10)
+/* 8030010C 002FBD6C 83 CA FF F8 */ lwz r30, -8(r10)
+/* 80300110 002FBD70 83 AA FF F4 */ lwz r29, -0xc(r10)
+/* 80300114 002FBD74 7C 08 03 A6 */ mtlr r0
+/* 80300118 002FBD78 7D 41 53 78 */ mr r1, r10
+/* 8030011C 002FBD7C 4E 80 00 20 */ blr
+
+.global SSLDoHandshake
+SSLDoHandshake:
+/* 80300120 002FBD80 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 80300124 002FBD84 7C 2C 0B 78 */ mr r12, r1
+/* 80300128 002FBD88 21 6B FF 60 */ subfic r11, r11, -160
+/* 8030012C 002FBD8C 7C 21 59 6E */ stwux r1, r1, r11
+/* 80300130 002FBD90 7C 08 02 A6 */ mflr r0
+/* 80300134 002FBD94 3C 80 80 44 */ lis r4, lbl_80446240@ha
+/* 80300138 002FBD98 90 0C 00 04 */ stw r0, 4(r12)
+/* 8030013C 002FBD9C 93 EC FF FC */ stw r31, -4(r12)
+/* 80300140 002FBDA0 93 CC FF F8 */ stw r30, -8(r12)
+/* 80300144 002FBDA4 7C 7E 1B 78 */ mr r30, r3
+/* 80300148 002FBDA8 38 64 62 40 */ addi r3, r4, lbl_80446240@l
+/* 8030014C 002FBDAC 38 80 00 00 */ li r4, 0
+/* 80300150 002FBDB0 4B FA 30 09 */ bl IOS_Open
+/* 80300154 002FBDB4 2C 03 00 00 */ cmpwi r3, 0
+/* 80300158 002FBDB8 7C 7F 1B 78 */ mr r31, r3
+/* 8030015C 002FBDBC 40 80 00 0C */ bge lbl_80300168
+/* 80300160 002FBDC0 38 60 FF FF */ li r3, -1
+/* 80300164 002FBDC4 48 00 00 4C */ b lbl_803001B0
+lbl_80300168:
+/* 80300168 002FBDC8 39 00 00 20 */ li r8, 0x20
+/* 8030016C 002FBDCC 39 21 00 20 */ addi r9, r1, 0x20
+/* 80300170 002FBDD0 38 01 00 40 */ addi r0, r1, 0x40
+/* 80300174 002FBDD4 38 C0 FF FF */ li r6, -1
+/* 80300178 002FBDD8 90 C1 00 20 */ stw r6, 0x20(r1)
+/* 8030017C 002FBDDC 38 E1 00 60 */ addi r7, r1, 0x60
+/* 80300180 002FBDE0 38 80 00 03 */ li r4, 3
+/* 80300184 002FBDE4 38 A0 00 01 */ li r5, 1
+/* 80300188 002FBDE8 93 C1 00 40 */ stw r30, 0x40(r1)
+/* 8030018C 002FBDEC 38 C0 00 01 */ li r6, 1
+/* 80300190 002FBDF0 91 21 00 60 */ stw r9, 0x60(r1)
+/* 80300194 002FBDF4 91 01 00 64 */ stw r8, 0x64(r1)
+/* 80300198 002FBDF8 90 01 00 68 */ stw r0, 0x68(r1)
+/* 8030019C 002FBDFC 91 01 00 6C */ stw r8, 0x6c(r1)
+/* 803001A0 002FBE00 4B FA 3C A1 */ bl IOS_Ioctlv
+/* 803001A4 002FBE04 7F E3 FB 78 */ mr r3, r31
+/* 803001A8 002FBE08 4B FA 31 91 */ bl IOS_Close
+/* 803001AC 002FBE0C 80 61 00 20 */ lwz r3, 0x20(r1)
+lbl_803001B0:
+/* 803001B0 002FBE10 81 41 00 00 */ lwz r10, 0(r1)
+/* 803001B4 002FBE14 80 0A 00 04 */ lwz r0, 4(r10)
+/* 803001B8 002FBE18 83 EA FF FC */ lwz r31, -4(r10)
+/* 803001BC 002FBE1C 83 CA FF F8 */ lwz r30, -8(r10)
+/* 803001C0 002FBE20 7C 08 03 A6 */ mtlr r0
+/* 803001C4 002FBE24 7D 41 53 78 */ mr r1, r10
+/* 803001C8 002FBE28 4E 80 00 20 */ blr
+
+.global SSLRead
+SSLRead:
+/* 803001CC 002FBE2C 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 803001D0 002FBE30 7C 2C 0B 78 */ mr r12, r1
+/* 803001D4 002FBE34 21 6B FE 80 */ subfic r11, r11, -384
+/* 803001D8 002FBE38 7C 21 59 6E */ stwux r1, r1, r11
+/* 803001DC 002FBE3C 7C 08 02 A6 */ mflr r0
+/* 803001E0 002FBE40 7D 8B 63 78 */ mr r11, r12
+/* 803001E4 002FBE44 90 0C 00 04 */ stw r0, 4(r12)
+/* 803001E8 002FBE48 4B EC 6F 35 */ bl _savegpr_24
+/* 803001EC 002FBE4C 3C C0 80 44 */ lis r6, lbl_80446240@ha
+/* 803001F0 002FBE50 7C 7C 1B 78 */ mr r28, r3
+/* 803001F4 002FBE54 7C 9D 23 78 */ mr r29, r4
+/* 803001F8 002FBE58 7C BE 2B 78 */ mr r30, r5
+/* 803001FC 002FBE5C 38 66 62 40 */ addi r3, r6, lbl_80446240@l
+/* 80300200 002FBE60 38 80 00 00 */ li r4, 0
+/* 80300204 002FBE64 4B FA 2F 55 */ bl IOS_Open
+/* 80300208 002FBE68 2C 03 00 00 */ cmpwi r3, 0
+/* 8030020C 002FBE6C 7C 7F 1B 78 */ mr r31, r3
+/* 80300210 002FBE70 3B 40 FF FF */ li r26, -1
+/* 80300214 002FBE74 40 80 00 0C */ bge lbl_80300220
+/* 80300218 002FBE78 38 60 FF FF */ li r3, -1
+/* 8030021C 002FBE7C 48 00 02 54 */ b lbl_80300470
+lbl_80300220:
+/* 80300220 002FBE80 57 A0 06 FF */ clrlwi. r0, r29, 0x1b
+/* 80300224 002FBE84 41 82 00 0C */ beq lbl_80300230
+/* 80300228 002FBE88 23 20 00 20 */ subfic r25, r0, 0x20
+/* 8030022C 002FBE8C 48 00 00 08 */ b lbl_80300234
+lbl_80300230:
+/* 80300230 002FBE90 3B 20 00 00 */ li r25, 0
+lbl_80300234:
+/* 80300234 002FBE94 38 61 01 40 */ addi r3, r1, 0x140
+/* 80300238 002FBE98 3B 00 00 00 */ li r24, 0
+/* 8030023C 002FBE9C 38 80 00 00 */ li r4, 0
+/* 80300240 002FBEA0 38 A0 00 20 */ li r5, 0x20
+/* 80300244 002FBEA4 4B D0 3E C1 */ bl memset
+/* 80300248 002FBEA8 2C 19 00 00 */ cmpwi r25, 0
+/* 8030024C 002FBEAC 41 82 00 B0 */ beq lbl_803002FC
+/* 80300250 002FBEB0 7C 19 F0 40 */ cmplw r25, r30
+/* 80300254 002FBEB4 40 81 00 08 */ ble lbl_8030025C
+/* 80300258 002FBEB8 7F D9 F3 78 */ mr r25, r30
+lbl_8030025C:
+/* 8030025C 002FBEBC 39 00 00 20 */ li r8, 0x20
+/* 80300260 002FBEC0 39 21 01 20 */ addi r9, r1, 0x120
+/* 80300264 002FBEC4 3B 61 01 40 */ addi r27, r1, 0x140
+/* 80300268 002FBEC8 38 01 01 00 */ addi r0, r1, 0x100
+/* 8030026C 002FBECC 38 80 FF FF */ li r4, -1
+/* 80300270 002FBED0 93 81 01 00 */ stw r28, 0x100(r1)
+/* 80300274 002FBED4 7F E3 FB 78 */ mr r3, r31
+/* 80300278 002FBED8 38 E1 00 E0 */ addi r7, r1, 0xe0
+/* 8030027C 002FBEDC 90 81 01 20 */ stw r4, 0x120(r1)
+/* 80300280 002FBEE0 38 80 00 04 */ li r4, 4
+/* 80300284 002FBEE4 38 A0 00 02 */ li r5, 2
+/* 80300288 002FBEE8 38 C0 00 01 */ li r6, 1
+/* 8030028C 002FBEEC 91 21 00 E0 */ stw r9, 0xe0(r1)
+/* 80300290 002FBEF0 91 01 00 E4 */ stw r8, 0xe4(r1)
+/* 80300294 002FBEF4 93 61 00 E8 */ stw r27, 0xe8(r1)
+/* 80300298 002FBEF8 93 21 00 EC */ stw r25, 0xec(r1)
+/* 8030029C 002FBEFC 90 01 00 F0 */ stw r0, 0xf0(r1)
+/* 803002A0 002FBF00 91 01 00 F4 */ stw r8, 0xf4(r1)
+/* 803002A4 002FBF04 4B FA 3B 9D */ bl IOS_Ioctlv
+/* 803002A8 002FBF08 83 41 01 20 */ lwz r26, 0x120(r1)
+/* 803002AC 002FBF0C 2C 1A 00 00 */ cmpwi r26, 0
+/* 803002B0 002FBF10 40 81 00 3C */ ble lbl_803002EC
+/* 803002B4 002FBF14 7F 58 D3 78 */ mr r24, r26
+/* 803002B8 002FBF18 7F A3 EB 78 */ mr r3, r29
+/* 803002BC 002FBF1C 7F 64 DB 78 */ mr r4, r27
+/* 803002C0 002FBF20 7F 45 D3 78 */ mr r5, r26
+/* 803002C4 002FBF24 4B D0 3D 3D */ bl memcpy
+/* 803002C8 002FBF28 7C 1A C8 40 */ cmplw r26, r25
+/* 803002CC 002FBF2C 40 80 00 14 */ bge lbl_803002E0
+/* 803002D0 002FBF30 7F E3 FB 78 */ mr r3, r31
+/* 803002D4 002FBF34 4B FA 30 65 */ bl IOS_Close
+/* 803002D8 002FBF38 7F 03 C3 78 */ mr r3, r24
+/* 803002DC 002FBF3C 48 00 01 94 */ b lbl_80300470
+lbl_803002E0:
+/* 803002E0 002FBF40 7F BD D2 14 */ add r29, r29, r26
+/* 803002E4 002FBF44 7F DA F0 50 */ subf r30, r26, r30
+/* 803002E8 002FBF48 48 00 00 14 */ b lbl_803002FC
+lbl_803002EC:
+/* 803002EC 002FBF4C 7F E3 FB 78 */ mr r3, r31
+/* 803002F0 002FBF50 4B FA 30 49 */ bl IOS_Close
+/* 803002F4 002FBF54 7F 43 D3 78 */ mr r3, r26
+/* 803002F8 002FBF58 48 00 01 78 */ b lbl_80300470
+lbl_803002FC:
+/* 803002FC 002FBF5C 2C 1E 00 00 */ cmpwi r30, 0
+/* 80300300 002FBF60 41 82 00 A8 */ beq lbl_803003A8
+/* 80300304 002FBF64 57 D9 00 35 */ rlwinm. r25, r30, 0, 0, 0x1a
+/* 80300308 002FBF68 41 82 00 A0 */ beq lbl_803003A8
+/* 8030030C 002FBF6C 39 00 00 20 */ li r8, 0x20
+/* 80300310 002FBF70 39 21 00 C0 */ addi r9, r1, 0xc0
+/* 80300314 002FBF74 38 01 00 A0 */ addi r0, r1, 0xa0
+/* 80300318 002FBF78 38 A0 FF FF */ li r5, -1
+/* 8030031C 002FBF7C 90 A1 00 C0 */ stw r5, 0xc0(r1)
+/* 80300320 002FBF80 7F E3 FB 78 */ mr r3, r31
+/* 80300324 002FBF84 38 E1 00 80 */ addi r7, r1, 0x80
+/* 80300328 002FBF88 38 80 00 04 */ li r4, 4
+/* 8030032C 002FBF8C 93 81 00 A0 */ stw r28, 0xa0(r1)
+/* 80300330 002FBF90 38 A0 00 02 */ li r5, 2
+/* 80300334 002FBF94 38 C0 00 01 */ li r6, 1
+/* 80300338 002FBF98 91 21 00 80 */ stw r9, 0x80(r1)
+/* 8030033C 002FBF9C 91 01 00 84 */ stw r8, 0x84(r1)
+/* 80300340 002FBFA0 93 A1 00 88 */ stw r29, 0x88(r1)
+/* 80300344 002FBFA4 93 21 00 8C */ stw r25, 0x8c(r1)
+/* 80300348 002FBFA8 90 01 00 90 */ stw r0, 0x90(r1)
+/* 8030034C 002FBFAC 91 01 00 94 */ stw r8, 0x94(r1)
+/* 80300350 002FBFB0 4B FA 3A F1 */ bl IOS_Ioctlv
+/* 80300354 002FBFB4 83 41 00 C0 */ lwz r26, 0xc0(r1)
+/* 80300358 002FBFB8 2C 1A 00 00 */ cmpwi r26, 0
+/* 8030035C 002FBFBC 40 81 00 2C */ ble lbl_80300388
+/* 80300360 002FBFC0 7C 1A C8 40 */ cmplw r26, r25
+/* 80300364 002FBFC4 7F 18 D2 14 */ add r24, r24, r26
+/* 80300368 002FBFC8 40 80 00 14 */ bge lbl_8030037C
+/* 8030036C 002FBFCC 7F E3 FB 78 */ mr r3, r31
+/* 80300370 002FBFD0 4B FA 2F C9 */ bl IOS_Close
+/* 80300374 002FBFD4 7F 03 C3 78 */ mr r3, r24
+/* 80300378 002FBFD8 48 00 00 F8 */ b lbl_80300470
+lbl_8030037C:
+/* 8030037C 002FBFDC 7F BD D2 14 */ add r29, r29, r26
+/* 80300380 002FBFE0 7F DA F0 50 */ subf r30, r26, r30
+/* 80300384 002FBFE4 48 00 00 24 */ b lbl_803003A8
+lbl_80300388:
+/* 80300388 002FBFE8 7F E3 FB 78 */ mr r3, r31
+/* 8030038C 002FBFEC 4B FA 2F AD */ bl IOS_Close
+/* 80300390 002FBFF0 2C 18 00 00 */ cmpwi r24, 0
+/* 80300394 002FBFF4 40 81 00 0C */ ble lbl_803003A0
+/* 80300398 002FBFF8 7F 03 C3 78 */ mr r3, r24
+/* 8030039C 002FBFFC 48 00 00 D4 */ b lbl_80300470
+lbl_803003A0:
+/* 803003A0 002FC000 7F 43 D3 78 */ mr r3, r26
+/* 803003A4 002FC004 48 00 00 CC */ b lbl_80300470
+lbl_803003A8:
+/* 803003A8 002FC008 2C 1E 00 00 */ cmpwi r30, 0
+/* 803003AC 002FC00C 41 82 00 AC */ beq lbl_80300458
+/* 803003B0 002FC010 57 D9 06 FF */ clrlwi. r25, r30, 0x1b
+/* 803003B4 002FC014 41 82 00 A4 */ beq lbl_80300458
+/* 803003B8 002FC018 38 61 01 40 */ addi r3, r1, 0x140
+/* 803003BC 002FC01C 38 80 00 00 */ li r4, 0
+/* 803003C0 002FC020 38 A0 00 20 */ li r5, 0x20
+/* 803003C4 002FC024 4B D0 3D 41 */ bl memset
+/* 803003C8 002FC028 39 00 00 20 */ li r8, 0x20
+/* 803003CC 002FC02C 39 21 00 60 */ addi r9, r1, 0x60
+/* 803003D0 002FC030 3B C1 01 40 */ addi r30, r1, 0x140
+/* 803003D4 002FC034 38 01 00 40 */ addi r0, r1, 0x40
+/* 803003D8 002FC038 38 80 FF FF */ li r4, -1
+/* 803003DC 002FC03C 93 81 00 40 */ stw r28, 0x40(r1)
+/* 803003E0 002FC040 7F E3 FB 78 */ mr r3, r31
+/* 803003E4 002FC044 38 E1 00 20 */ addi r7, r1, 0x20
+/* 803003E8 002FC048 90 81 00 60 */ stw r4, 0x60(r1)
+/* 803003EC 002FC04C 38 80 00 04 */ li r4, 4
+/* 803003F0 002FC050 38 A0 00 02 */ li r5, 2
+/* 803003F4 002FC054 38 C0 00 01 */ li r6, 1
+/* 803003F8 002FC058 91 21 00 20 */ stw r9, 0x20(r1)
+/* 803003FC 002FC05C 91 01 00 24 */ stw r8, 0x24(r1)
+/* 80300400 002FC060 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 80300404 002FC064 93 21 00 2C */ stw r25, 0x2c(r1)
+/* 80300408 002FC068 90 01 00 30 */ stw r0, 0x30(r1)
+/* 8030040C 002FC06C 91 01 00 34 */ stw r8, 0x34(r1)
+/* 80300410 002FC070 4B FA 3A 31 */ bl IOS_Ioctlv
+/* 80300414 002FC074 83 41 00 60 */ lwz r26, 0x60(r1)
+/* 80300418 002FC078 2C 1A 00 00 */ cmpwi r26, 0
+/* 8030041C 002FC07C 40 81 00 1C */ ble lbl_80300438
+/* 80300420 002FC080 7F A3 EB 78 */ mr r3, r29
+/* 80300424 002FC084 7F C4 F3 78 */ mr r4, r30
+/* 80300428 002FC088 7F 45 D3 78 */ mr r5, r26
+/* 8030042C 002FC08C 7F 18 D2 14 */ add r24, r24, r26
+/* 80300430 002FC090 4B D0 3B D1 */ bl memcpy
+/* 80300434 002FC094 48 00 00 24 */ b lbl_80300458
+lbl_80300438:
+/* 80300438 002FC098 7F E3 FB 78 */ mr r3, r31
+/* 8030043C 002FC09C 4B FA 2E FD */ bl IOS_Close
+/* 80300440 002FC0A0 2C 18 00 00 */ cmpwi r24, 0
+/* 80300444 002FC0A4 40 81 00 0C */ ble lbl_80300450
+/* 80300448 002FC0A8 7F 03 C3 78 */ mr r3, r24
+/* 8030044C 002FC0AC 48 00 00 24 */ b lbl_80300470
+lbl_80300450:
+/* 80300450 002FC0B0 7F 43 D3 78 */ mr r3, r26
+/* 80300454 002FC0B4 48 00 00 1C */ b lbl_80300470
+lbl_80300458:
+/* 80300458 002FC0B8 2C 18 00 00 */ cmpwi r24, 0
+/* 8030045C 002FC0BC 40 81 00 08 */ ble lbl_80300464
+/* 80300460 002FC0C0 7F 1A C3 78 */ mr r26, r24
+lbl_80300464:
+/* 80300464 002FC0C4 7F E3 FB 78 */ mr r3, r31
+/* 80300468 002FC0C8 4B FA 2E D1 */ bl IOS_Close
+/* 8030046C 002FC0CC 7F 43 D3 78 */ mr r3, r26
+lbl_80300470:
+/* 80300470 002FC0D0 81 41 00 00 */ lwz r10, 0(r1)
+/* 80300474 002FC0D4 7D 4B 53 78 */ mr r11, r10
+/* 80300478 002FC0D8 4B EC 6C F1 */ bl _restgpr_24
+/* 8030047C 002FC0DC 80 0A 00 04 */ lwz r0, 4(r10)
+/* 80300480 002FC0E0 7C 08 03 A6 */ mtlr r0
+/* 80300484 002FC0E4 7D 41 53 78 */ mr r1, r10
+/* 80300488 002FC0E8 4E 80 00 20 */ blr
+
+.global SSLWrite
+SSLWrite:
+/* 8030048C 002FC0EC 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 80300490 002FC0F0 7C 2C 0B 78 */ mr r12, r1
+/* 80300494 002FC0F4 21 6B FE 80 */ subfic r11, r11, -384
+/* 80300498 002FC0F8 7C 21 59 6E */ stwux r1, r1, r11
+/* 8030049C 002FC0FC 7C 08 02 A6 */ mflr r0
+/* 803004A0 002FC100 7D 8B 63 78 */ mr r11, r12
+/* 803004A4 002FC104 90 0C 00 04 */ stw r0, 4(r12)
+/* 803004A8 002FC108 4B EC 6C 79 */ bl _savegpr_25
+/* 803004AC 002FC10C 3C C0 80 44 */ lis r6, lbl_80446240@ha
+/* 803004B0 002FC110 7C 7C 1B 78 */ mr r28, r3
+/* 803004B4 002FC114 7C 9D 23 78 */ mr r29, r4
+/* 803004B8 002FC118 7C BE 2B 78 */ mr r30, r5
+/* 803004BC 002FC11C 38 66 62 40 */ addi r3, r6, lbl_80446240@l
+/* 803004C0 002FC120 38 80 00 00 */ li r4, 0
+/* 803004C4 002FC124 4B FA 2C 95 */ bl IOS_Open
+/* 803004C8 002FC128 2C 03 00 00 */ cmpwi r3, 0
+/* 803004CC 002FC12C 7C 7F 1B 78 */ mr r31, r3
+/* 803004D0 002FC130 3B 60 FF FF */ li r27, -1
+/* 803004D4 002FC134 40 80 00 0C */ bge lbl_803004E0
+/* 803004D8 002FC138 38 60 FF FF */ li r3, -1
+/* 803004DC 002FC13C 48 00 02 54 */ b lbl_80300730
+lbl_803004E0:
+/* 803004E0 002FC140 57 A0 06 FF */ clrlwi. r0, r29, 0x1b
+/* 803004E4 002FC144 41 82 00 0C */ beq lbl_803004F0
+/* 803004E8 002FC148 23 40 00 20 */ subfic r26, r0, 0x20
+/* 803004EC 002FC14C 48 00 00 08 */ b lbl_803004F4
+lbl_803004F0:
+/* 803004F0 002FC150 3B 40 00 00 */ li r26, 0
+lbl_803004F4:
+/* 803004F4 002FC154 38 61 01 40 */ addi r3, r1, 0x140
+/* 803004F8 002FC158 3B 20 00 00 */ li r25, 0
+/* 803004FC 002FC15C 38 80 00 00 */ li r4, 0
+/* 80300500 002FC160 38 A0 00 20 */ li r5, 0x20
+/* 80300504 002FC164 4B D0 3C 01 */ bl memset
+/* 80300508 002FC168 2C 1A 00 00 */ cmpwi r26, 0
+/* 8030050C 002FC16C 41 82 00 B0 */ beq lbl_803005BC
+/* 80300510 002FC170 7C 1A F0 40 */ cmplw r26, r30
+/* 80300514 002FC174 40 81 00 08 */ ble lbl_8030051C
+/* 80300518 002FC178 7F DA F3 78 */ mr r26, r30
+lbl_8030051C:
+/* 8030051C 002FC17C 7F A4 EB 78 */ mr r4, r29
+/* 80300520 002FC180 7F 45 D3 78 */ mr r5, r26
+/* 80300524 002FC184 38 61 01 40 */ addi r3, r1, 0x140
+/* 80300528 002FC188 4B D0 3A D9 */ bl memcpy
+/* 8030052C 002FC18C 39 20 00 20 */ li r9, 0x20
+/* 80300530 002FC190 39 41 01 20 */ addi r10, r1, 0x120
+/* 80300534 002FC194 39 01 01 00 */ addi r8, r1, 0x100
+/* 80300538 002FC198 38 01 01 40 */ addi r0, r1, 0x140
+/* 8030053C 002FC19C 38 80 FF FF */ li r4, -1
+/* 80300540 002FC1A0 93 81 01 00 */ stw r28, 0x100(r1)
+/* 80300544 002FC1A4 7F E3 FB 78 */ mr r3, r31
+/* 80300548 002FC1A8 38 E1 00 E0 */ addi r7, r1, 0xe0
+/* 8030054C 002FC1AC 90 81 01 20 */ stw r4, 0x120(r1)
+/* 80300550 002FC1B0 38 80 00 05 */ li r4, 5
+/* 80300554 002FC1B4 38 A0 00 01 */ li r5, 1
+/* 80300558 002FC1B8 38 C0 00 02 */ li r6, 2
+/* 8030055C 002FC1BC 91 41 00 E0 */ stw r10, 0xe0(r1)
+/* 80300560 002FC1C0 91 21 00 E4 */ stw r9, 0xe4(r1)
+/* 80300564 002FC1C4 91 01 00 E8 */ stw r8, 0xe8(r1)
+/* 80300568 002FC1C8 91 21 00 EC */ stw r9, 0xec(r1)
+/* 8030056C 002FC1CC 90 01 00 F0 */ stw r0, 0xf0(r1)
+/* 80300570 002FC1D0 93 41 00 F4 */ stw r26, 0xf4(r1)
+/* 80300574 002FC1D4 4B FA 38 CD */ bl IOS_Ioctlv
+/* 80300578 002FC1D8 83 61 01 20 */ lwz r27, 0x120(r1)
+/* 8030057C 002FC1DC 2C 1B 00 00 */ cmpwi r27, 0
+/* 80300580 002FC1E0 40 81 00 2C */ ble lbl_803005AC
+/* 80300584 002FC1E4 7C 1B D0 40 */ cmplw r27, r26
+/* 80300588 002FC1E8 7F 79 DB 78 */ mr r25, r27
+/* 8030058C 002FC1EC 40 80 00 14 */ bge lbl_803005A0
+/* 80300590 002FC1F0 7F E3 FB 78 */ mr r3, r31
+/* 80300594 002FC1F4 4B FA 2D A5 */ bl IOS_Close
+/* 80300598 002FC1F8 7F 63 DB 78 */ mr r3, r27
+/* 8030059C 002FC1FC 48 00 01 94 */ b lbl_80300730
+lbl_803005A0:
+/* 803005A0 002FC200 7F BD DA 14 */ add r29, r29, r27
+/* 803005A4 002FC204 7F DB F0 50 */ subf r30, r27, r30
+/* 803005A8 002FC208 48 00 00 14 */ b lbl_803005BC
+lbl_803005AC:
+/* 803005AC 002FC20C 7F E3 FB 78 */ mr r3, r31
+/* 803005B0 002FC210 4B FA 2D 89 */ bl IOS_Close
+/* 803005B4 002FC214 7F 63 DB 78 */ mr r3, r27
+/* 803005B8 002FC218 48 00 01 78 */ b lbl_80300730
+lbl_803005BC:
+/* 803005BC 002FC21C 2C 1E 00 00 */ cmpwi r30, 0
+/* 803005C0 002FC220 41 82 00 A8 */ beq lbl_80300668
+/* 803005C4 002FC224 57 DA 00 35 */ rlwinm. r26, r30, 0, 0, 0x1a
+/* 803005C8 002FC228 41 82 00 A0 */ beq lbl_80300668
+/* 803005CC 002FC22C 39 00 00 20 */ li r8, 0x20
+/* 803005D0 002FC230 39 21 00 C0 */ addi r9, r1, 0xc0
+/* 803005D4 002FC234 38 01 00 A0 */ addi r0, r1, 0xa0
+/* 803005D8 002FC238 38 A0 FF FF */ li r5, -1
+/* 803005DC 002FC23C 90 A1 00 C0 */ stw r5, 0xc0(r1)
+/* 803005E0 002FC240 7F E3 FB 78 */ mr r3, r31
+/* 803005E4 002FC244 38 E1 00 80 */ addi r7, r1, 0x80
+/* 803005E8 002FC248 38 80 00 05 */ li r4, 5
+/* 803005EC 002FC24C 93 81 00 A0 */ stw r28, 0xa0(r1)
+/* 803005F0 002FC250 38 A0 00 01 */ li r5, 1
+/* 803005F4 002FC254 38 C0 00 02 */ li r6, 2
+/* 803005F8 002FC258 91 21 00 80 */ stw r9, 0x80(r1)
+/* 803005FC 002FC25C 91 01 00 84 */ stw r8, 0x84(r1)
+/* 80300600 002FC260 90 01 00 88 */ stw r0, 0x88(r1)
+/* 80300604 002FC264 91 01 00 8C */ stw r8, 0x8c(r1)
+/* 80300608 002FC268 93 A1 00 90 */ stw r29, 0x90(r1)
+/* 8030060C 002FC26C 93 41 00 94 */ stw r26, 0x94(r1)
+/* 80300610 002FC270 4B FA 38 31 */ bl IOS_Ioctlv
+/* 80300614 002FC274 83 61 00 C0 */ lwz r27, 0xc0(r1)
+/* 80300618 002FC278 2C 1B 00 00 */ cmpwi r27, 0
+/* 8030061C 002FC27C 40 81 00 2C */ ble lbl_80300648
+/* 80300620 002FC280 7C 1B D0 40 */ cmplw r27, r26
+/* 80300624 002FC284 7F 39 DA 14 */ add r25, r25, r27
+/* 80300628 002FC288 40 80 00 14 */ bge lbl_8030063C
+/* 8030062C 002FC28C 7F E3 FB 78 */ mr r3, r31
+/* 80300630 002FC290 4B FA 2D 09 */ bl IOS_Close
+/* 80300634 002FC294 7F 23 CB 78 */ mr r3, r25
+/* 80300638 002FC298 48 00 00 F8 */ b lbl_80300730
+lbl_8030063C:
+/* 8030063C 002FC29C 7F BD DA 14 */ add r29, r29, r27
+/* 80300640 002FC2A0 7F DB F0 50 */ subf r30, r27, r30
+/* 80300644 002FC2A4 48 00 00 24 */ b lbl_80300668
+lbl_80300648:
+/* 80300648 002FC2A8 7F E3 FB 78 */ mr r3, r31
+/* 8030064C 002FC2AC 4B FA 2C ED */ bl IOS_Close
+/* 80300650 002FC2B0 2C 19 00 00 */ cmpwi r25, 0
+/* 80300654 002FC2B4 40 81 00 0C */ ble lbl_80300660
+/* 80300658 002FC2B8 7F 23 CB 78 */ mr r3, r25
+/* 8030065C 002FC2BC 48 00 00 D4 */ b lbl_80300730
+lbl_80300660:
+/* 80300660 002FC2C0 7F 63 DB 78 */ mr r3, r27
+/* 80300664 002FC2C4 48 00 00 CC */ b lbl_80300730
+lbl_80300668:
+/* 80300668 002FC2C8 2C 1E 00 00 */ cmpwi r30, 0
+/* 8030066C 002FC2CC 41 82 00 AC */ beq lbl_80300718
+/* 80300670 002FC2D0 57 DA 06 FF */ clrlwi. r26, r30, 0x1b
+/* 80300674 002FC2D4 41 82 00 A4 */ beq lbl_80300718
+/* 80300678 002FC2D8 38 61 01 40 */ addi r3, r1, 0x140
+/* 8030067C 002FC2DC 38 80 00 00 */ li r4, 0
+/* 80300680 002FC2E0 38 A0 00 20 */ li r5, 0x20
+/* 80300684 002FC2E4 4B D0 3A 81 */ bl memset
+/* 80300688 002FC2E8 7F A4 EB 78 */ mr r4, r29
+/* 8030068C 002FC2EC 7F 45 D3 78 */ mr r5, r26
+/* 80300690 002FC2F0 38 61 01 40 */ addi r3, r1, 0x140
+/* 80300694 002FC2F4 4B D0 39 6D */ bl memcpy
+/* 80300698 002FC2F8 39 20 00 20 */ li r9, 0x20
+/* 8030069C 002FC2FC 39 41 00 60 */ addi r10, r1, 0x60
+/* 803006A0 002FC300 39 01 00 40 */ addi r8, r1, 0x40
+/* 803006A4 002FC304 38 01 01 40 */ addi r0, r1, 0x140
+/* 803006A8 002FC308 38 80 FF FF */ li r4, -1
+/* 803006AC 002FC30C 93 81 00 40 */ stw r28, 0x40(r1)
+/* 803006B0 002FC310 7F E3 FB 78 */ mr r3, r31
+/* 803006B4 002FC314 38 E1 00 20 */ addi r7, r1, 0x20
+/* 803006B8 002FC318 90 81 00 60 */ stw r4, 0x60(r1)
+/* 803006BC 002FC31C 38 80 00 05 */ li r4, 5
+/* 803006C0 002FC320 38 A0 00 01 */ li r5, 1
+/* 803006C4 002FC324 38 C0 00 02 */ li r6, 2
+/* 803006C8 002FC328 91 41 00 20 */ stw r10, 0x20(r1)
+/* 803006CC 002FC32C 91 21 00 24 */ stw r9, 0x24(r1)
+/* 803006D0 002FC330 91 01 00 28 */ stw r8, 0x28(r1)
+/* 803006D4 002FC334 91 21 00 2C */ stw r9, 0x2c(r1)
+/* 803006D8 002FC338 90 01 00 30 */ stw r0, 0x30(r1)
+/* 803006DC 002FC33C 93 41 00 34 */ stw r26, 0x34(r1)
+/* 803006E0 002FC340 4B FA 37 61 */ bl IOS_Ioctlv
+/* 803006E4 002FC344 83 61 00 60 */ lwz r27, 0x60(r1)
+/* 803006E8 002FC348 2C 1B 00 00 */ cmpwi r27, 0
+/* 803006EC 002FC34C 40 81 00 0C */ ble lbl_803006F8
+/* 803006F0 002FC350 7F 39 DA 14 */ add r25, r25, r27
+/* 803006F4 002FC354 48 00 00 24 */ b lbl_80300718
+lbl_803006F8:
+/* 803006F8 002FC358 7F E3 FB 78 */ mr r3, r31
+/* 803006FC 002FC35C 4B FA 2C 3D */ bl IOS_Close
+/* 80300700 002FC360 2C 19 00 00 */ cmpwi r25, 0
+/* 80300704 002FC364 40 81 00 0C */ ble lbl_80300710
+/* 80300708 002FC368 7F 23 CB 78 */ mr r3, r25
+/* 8030070C 002FC36C 48 00 00 24 */ b lbl_80300730
+lbl_80300710:
+/* 80300710 002FC370 7F 63 DB 78 */ mr r3, r27
+/* 80300714 002FC374 48 00 00 1C */ b lbl_80300730
+lbl_80300718:
+/* 80300718 002FC378 2C 19 00 00 */ cmpwi r25, 0
+/* 8030071C 002FC37C 40 81 00 08 */ ble lbl_80300724
+/* 80300720 002FC380 7F 3B CB 78 */ mr r27, r25
+lbl_80300724:
+/* 80300724 002FC384 7F E3 FB 78 */ mr r3, r31
+/* 80300728 002FC388 4B FA 2C 11 */ bl IOS_Close
+/* 8030072C 002FC38C 7F 63 DB 78 */ mr r3, r27
+lbl_80300730:
+/* 80300730 002FC390 81 41 00 00 */ lwz r10, 0(r1)
+/* 80300734 002FC394 7D 4B 53 78 */ mr r11, r10
+/* 80300738 002FC398 4B EC 6A 35 */ bl _restgpr_25
+/* 8030073C 002FC39C 80 0A 00 04 */ lwz r0, 4(r10)
+/* 80300740 002FC3A0 7C 08 03 A6 */ mtlr r0
+/* 80300744 002FC3A4 7D 41 53 78 */ mr r1, r10
+/* 80300748 002FC3A8 4E 80 00 20 */ blr
+
+.global SSLShutdown
+SSLShutdown:
+/* 8030074C 002FC3AC 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 80300750 002FC3B0 7C 2C 0B 78 */ mr r12, r1
+/* 80300754 002FC3B4 21 6B FF 60 */ subfic r11, r11, -160
+/* 80300758 002FC3B8 7C 21 59 6E */ stwux r1, r1, r11
+/* 8030075C 002FC3BC 7C 08 02 A6 */ mflr r0
+/* 80300760 002FC3C0 3C 80 80 44 */ lis r4, lbl_80446240@ha
+/* 80300764 002FC3C4 90 0C 00 04 */ stw r0, 4(r12)
+/* 80300768 002FC3C8 93 EC FF FC */ stw r31, -4(r12)
+/* 8030076C 002FC3CC 93 CC FF F8 */ stw r30, -8(r12)
+/* 80300770 002FC3D0 7C 7E 1B 78 */ mr r30, r3
+/* 80300774 002FC3D4 38 64 62 40 */ addi r3, r4, lbl_80446240@l
+/* 80300778 002FC3D8 38 80 00 00 */ li r4, 0
+/* 8030077C 002FC3DC 4B FA 29 DD */ bl IOS_Open
+/* 80300780 002FC3E0 2C 03 00 00 */ cmpwi r3, 0
+/* 80300784 002FC3E4 7C 7F 1B 78 */ mr r31, r3
+/* 80300788 002FC3E8 40 80 00 0C */ bge lbl_80300794
+/* 8030078C 002FC3EC 38 60 FF FF */ li r3, -1
+/* 80300790 002FC3F0 48 00 00 4C */ b lbl_803007DC
+lbl_80300794:
+/* 80300794 002FC3F4 39 00 00 20 */ li r8, 0x20
+/* 80300798 002FC3F8 39 21 00 20 */ addi r9, r1, 0x20
+/* 8030079C 002FC3FC 38 01 00 40 */ addi r0, r1, 0x40
+/* 803007A0 002FC400 38 C0 FF FF */ li r6, -1
+/* 803007A4 002FC404 90 C1 00 20 */ stw r6, 0x20(r1)
+/* 803007A8 002FC408 38 E1 00 60 */ addi r7, r1, 0x60
+/* 803007AC 002FC40C 38 80 00 06 */ li r4, 6
+/* 803007B0 002FC410 38 A0 00 01 */ li r5, 1
+/* 803007B4 002FC414 93 C1 00 40 */ stw r30, 0x40(r1)
+/* 803007B8 002FC418 38 C0 00 01 */ li r6, 1
+/* 803007BC 002FC41C 91 21 00 60 */ stw r9, 0x60(r1)
+/* 803007C0 002FC420 91 01 00 64 */ stw r8, 0x64(r1)
+/* 803007C4 002FC424 90 01 00 68 */ stw r0, 0x68(r1)
+/* 803007C8 002FC428 91 01 00 6C */ stw r8, 0x6c(r1)
+/* 803007CC 002FC42C 4B FA 36 75 */ bl IOS_Ioctlv
+/* 803007D0 002FC430 7F E3 FB 78 */ mr r3, r31
+/* 803007D4 002FC434 4B FA 2B 65 */ bl IOS_Close
+/* 803007D8 002FC438 80 61 00 20 */ lwz r3, 0x20(r1)
+lbl_803007DC:
+/* 803007DC 002FC43C 81 41 00 00 */ lwz r10, 0(r1)
+/* 803007E0 002FC440 80 0A 00 04 */ lwz r0, 4(r10)
+/* 803007E4 002FC444 83 EA FF FC */ lwz r31, -4(r10)
+/* 803007E8 002FC448 83 CA FF F8 */ lwz r30, -8(r10)
+/* 803007EC 002FC44C 7C 08 03 A6 */ mtlr r0
+/* 803007F0 002FC450 7D 41 53 78 */ mr r1, r10
+/* 803007F4 002FC454 4E 80 00 20 */ blr
+
+.global SSLSetClientCert
+SSLSetClientCert:
+/* 803007F8 002FC458 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 803007FC 002FC45C 7C 2C 0B 78 */ mr r12, r1
+/* 80300800 002FC460 21 6B FF 60 */ subfic r11, r11, -160
+/* 80300804 002FC464 7C 21 59 6E */ stwux r1, r1, r11
+/* 80300808 002FC468 7C 08 02 A6 */ mflr r0
+/* 8030080C 002FC46C 7D 8B 63 78 */ mr r11, r12
+/* 80300810 002FC470 90 0C 00 04 */ stw r0, 4(r12)
+/* 80300814 002FC474 4B EC 69 09 */ bl _savegpr_24
+/* 80300818 002FC478 3F E0 80 58 */ lis r31, lbl_8057B780@ha
+/* 8030081C 002FC47C 3D 00 80 44 */ lis r8, lbl_80446240@ha
+/* 80300820 002FC480 7C 78 1B 78 */ mr r24, r3
+/* 80300824 002FC484 7C 99 23 78 */ mr r25, r4
+/* 80300828 002FC488 7C BA 2B 78 */ mr r26, r5
+/* 8030082C 002FC48C 7C DB 33 78 */ mr r27, r6
+/* 80300830 002FC490 7C FC 3B 78 */ mr r28, r7
+/* 80300834 002FC494 3B FF B7 80 */ addi r31, r31, lbl_8057B780@l
+/* 80300838 002FC498 38 68 62 40 */ addi r3, r8, lbl_80446240@l
+/* 8030083C 002FC49C 38 80 00 00 */ li r4, 0
+/* 80300840 002FC4A0 4B FA 29 19 */ bl IOS_Open
+/* 80300844 002FC4A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80300848 002FC4A8 7C 7D 1B 78 */ mr r29, r3
+/* 8030084C 002FC4AC 40 80 00 0C */ bge lbl_80300858
+/* 80300850 002FC4B0 38 60 FF FF */ li r3, -1
+/* 80300854 002FC4B4 48 00 00 F4 */ b lbl_80300948
+lbl_80300858:
+/* 80300858 002FC4B8 4B F6 DF 05 */ bl OSDisableInterrupts
+/* 8030085C 002FC4BC 80 0D AF 70 */ lwz r0, lbl_80640230-_SDA_BASE_(r13)
+/* 80300860 002FC4C0 7C 7E 1B 78 */ mr r30, r3
+/* 80300864 002FC4C4 2C 00 00 00 */ cmpwi r0, 0
+/* 80300868 002FC4C8 40 82 00 44 */ bne lbl_803008AC
+/* 8030086C 002FC4CC 38 7F 00 00 */ addi r3, r31, 0
+/* 80300870 002FC4D0 48 00 03 95 */ bl SSL_InitMutex
+/* 80300874 002FC4D4 38 7F 00 20 */ addi r3, r31, 0x20
+/* 80300878 002FC4D8 38 80 00 00 */ li r4, 0
+/* 8030087C 002FC4DC 38 A0 10 00 */ li r5, 0x1000
+/* 80300880 002FC4E0 4B D0 38 85 */ bl memset
+/* 80300884 002FC4E4 38 7F 10 20 */ addi r3, r31, 0x1020
+/* 80300888 002FC4E8 38 80 00 00 */ li r4, 0
+/* 8030088C 002FC4EC 38 A0 10 00 */ li r5, 0x1000
+/* 80300890 002FC4F0 4B D0 38 75 */ bl memset
+/* 80300894 002FC4F4 38 7F 20 20 */ addi r3, r31, 0x2020
+/* 80300898 002FC4F8 38 80 00 00 */ li r4, 0
+/* 8030089C 002FC4FC 38 A0 10 00 */ li r5, 0x1000
+/* 803008A0 002FC500 4B D0 38 65 */ bl memset
+/* 803008A4 002FC504 38 00 00 01 */ li r0, 1
+/* 803008A8 002FC508 90 0D AF 70 */ stw r0, lbl_80640230-_SDA_BASE_(r13)
+lbl_803008AC:
+/* 803008AC 002FC50C 7F C3 F3 78 */ mr r3, r30
+/* 803008B0 002FC510 4B F6 DE D5 */ bl OSRestoreInterrupts
+/* 803008B4 002FC514 38 7F 00 00 */ addi r3, r31, 0
+/* 803008B8 002FC518 48 00 03 51 */ bl SSL_LockMutex
+/* 803008BC 002FC51C 7F 24 CB 78 */ mr r4, r25
+/* 803008C0 002FC520 7F 45 D3 78 */ mr r5, r26
+/* 803008C4 002FC524 38 7F 00 20 */ addi r3, r31, 0x20
+/* 803008C8 002FC528 4B D0 37 39 */ bl memcpy
+/* 803008CC 002FC52C 7F 64 DB 78 */ mr r4, r27
+/* 803008D0 002FC530 7F 85 E3 78 */ mr r5, r28
+/* 803008D4 002FC534 38 7F 10 20 */ addi r3, r31, 0x1020
+/* 803008D8 002FC538 4B D0 37 29 */ bl memcpy
+/* 803008DC 002FC53C 39 40 00 20 */ li r10, 0x20
+/* 803008E0 002FC540 39 61 00 40 */ addi r11, r1, 0x40
+/* 803008E4 002FC544 39 21 00 20 */ addi r9, r1, 0x20
+/* 803008E8 002FC548 39 1F 00 20 */ addi r8, r31, 0x20
+/* 803008EC 002FC54C 38 1F 10 20 */ addi r0, r31, 0x1020
+/* 803008F0 002FC550 38 60 FF FF */ li r3, -1
+/* 803008F4 002FC554 90 61 00 40 */ stw r3, 0x40(r1)
+/* 803008F8 002FC558 7F A3 EB 78 */ mr r3, r29
+/* 803008FC 002FC55C 38 E1 00 60 */ addi r7, r1, 0x60
+/* 80300900 002FC560 38 80 00 07 */ li r4, 7
+/* 80300904 002FC564 93 01 00 20 */ stw r24, 0x20(r1)
+/* 80300908 002FC568 38 A0 00 01 */ li r5, 1
+/* 8030090C 002FC56C 38 C0 00 03 */ li r6, 3
+/* 80300910 002FC570 91 61 00 60 */ stw r11, 0x60(r1)
+/* 80300914 002FC574 91 41 00 64 */ stw r10, 0x64(r1)
+/* 80300918 002FC578 91 21 00 68 */ stw r9, 0x68(r1)
+/* 8030091C 002FC57C 91 41 00 6C */ stw r10, 0x6c(r1)
+/* 80300920 002FC580 91 01 00 70 */ stw r8, 0x70(r1)
+/* 80300924 002FC584 93 41 00 74 */ stw r26, 0x74(r1)
+/* 80300928 002FC588 90 01 00 78 */ stw r0, 0x78(r1)
+/* 8030092C 002FC58C 93 81 00 7C */ stw r28, 0x7c(r1)
+/* 80300930 002FC590 4B FA 35 11 */ bl IOS_Ioctlv
+/* 80300934 002FC594 38 7F 00 00 */ addi r3, r31, 0
+/* 80300938 002FC598 48 00 02 D5 */ bl SSL_UnlockMutex
+/* 8030093C 002FC59C 7F A3 EB 78 */ mr r3, r29
+/* 80300940 002FC5A0 4B FA 29 F9 */ bl IOS_Close
+/* 80300944 002FC5A4 80 61 00 40 */ lwz r3, 0x40(r1)
+lbl_80300948:
+/* 80300948 002FC5A8 81 41 00 00 */ lwz r10, 0(r1)
+/* 8030094C 002FC5AC 7D 4B 53 78 */ mr r11, r10
+/* 80300950 002FC5B0 4B EC 68 19 */ bl _restgpr_24
+/* 80300954 002FC5B4 80 0A 00 04 */ lwz r0, 4(r10)
+/* 80300958 002FC5B8 7C 08 03 A6 */ mtlr r0
+/* 8030095C 002FC5BC 7D 41 53 78 */ mr r1, r10
+/* 80300960 002FC5C0 4E 80 00 20 */ blr
+
+.global SSLSetClientCertDefault
+SSLSetClientCertDefault:
+/* 80300964 002FC5C4 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 80300968 002FC5C8 7C 2C 0B 78 */ mr r12, r1
+/* 8030096C 002FC5CC 21 6B FF 60 */ subfic r11, r11, -160
+/* 80300970 002FC5D0 7C 21 59 6E */ stwux r1, r1, r11
+/* 80300974 002FC5D4 7C 08 02 A6 */ mflr r0
+/* 80300978 002FC5D8 3C 80 80 44 */ lis r4, lbl_80446240@ha
+/* 8030097C 002FC5DC 90 0C 00 04 */ stw r0, 4(r12)
+/* 80300980 002FC5E0 93 EC FF FC */ stw r31, -4(r12)
+/* 80300984 002FC5E4 93 CC FF F8 */ stw r30, -8(r12)
+/* 80300988 002FC5E8 7C 7E 1B 78 */ mr r30, r3
+/* 8030098C 002FC5EC 38 64 62 40 */ addi r3, r4, lbl_80446240@l
+/* 80300990 002FC5F0 38 80 00 00 */ li r4, 0
+/* 80300994 002FC5F4 4B FA 27 C5 */ bl IOS_Open
+/* 80300998 002FC5F8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030099C 002FC5FC 7C 7F 1B 78 */ mr r31, r3
+/* 803009A0 002FC600 40 80 00 0C */ bge lbl_803009AC
+/* 803009A4 002FC604 38 60 FF FF */ li r3, -1
+/* 803009A8 002FC608 48 00 00 4C */ b lbl_803009F4
+lbl_803009AC:
+/* 803009AC 002FC60C 39 00 00 20 */ li r8, 0x20
+/* 803009B0 002FC610 39 21 00 40 */ addi r9, r1, 0x40
+/* 803009B4 002FC614 38 01 00 20 */ addi r0, r1, 0x20
+/* 803009B8 002FC618 38 80 FF FF */ li r4, -1
+/* 803009BC 002FC61C 90 81 00 40 */ stw r4, 0x40(r1)
+/* 803009C0 002FC620 38 E1 00 60 */ addi r7, r1, 0x60
+/* 803009C4 002FC624 38 80 00 08 */ li r4, 8
+/* 803009C8 002FC628 38 A0 00 01 */ li r5, 1
+/* 803009CC 002FC62C 93 C1 00 20 */ stw r30, 0x20(r1)
+/* 803009D0 002FC630 38 C0 00 01 */ li r6, 1
+/* 803009D4 002FC634 91 21 00 60 */ stw r9, 0x60(r1)
+/* 803009D8 002FC638 91 01 00 64 */ stw r8, 0x64(r1)
+/* 803009DC 002FC63C 90 01 00 68 */ stw r0, 0x68(r1)
+/* 803009E0 002FC640 91 01 00 6C */ stw r8, 0x6c(r1)
+/* 803009E4 002FC644 4B FA 34 5D */ bl IOS_Ioctlv
+/* 803009E8 002FC648 7F E3 FB 78 */ mr r3, r31
+/* 803009EC 002FC64C 4B FA 29 4D */ bl IOS_Close
+/* 803009F0 002FC650 80 61 00 40 */ lwz r3, 0x40(r1)
+lbl_803009F4:
+/* 803009F4 002FC654 81 41 00 00 */ lwz r10, 0(r1)
+/* 803009F8 002FC658 80 0A 00 04 */ lwz r0, 4(r10)
+/* 803009FC 002FC65C 83 EA FF FC */ lwz r31, -4(r10)
+/* 80300A00 002FC660 83 CA FF F8 */ lwz r30, -8(r10)
+/* 80300A04 002FC664 7C 08 03 A6 */ mtlr r0
+/* 80300A08 002FC668 7D 41 53 78 */ mr r1, r10
+/* 80300A0C 002FC66C 4E 80 00 20 */ blr
+
+.global SSLSetRootCA
+SSLSetRootCA:
+/* 80300A10 002FC670 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 80300A14 002FC674 7C 2C 0B 78 */ mr r12, r1
+/* 80300A18 002FC678 21 6B FF 60 */ subfic r11, r11, -160
+/* 80300A1C 002FC67C 7C 21 59 6E */ stwux r1, r1, r11
+/* 80300A20 002FC680 7C 08 02 A6 */ mflr r0
+/* 80300A24 002FC684 7D 8B 63 78 */ mr r11, r12
+/* 80300A28 002FC688 90 0C 00 04 */ stw r0, 4(r12)
+/* 80300A2C 002FC68C 4B EC 66 F9 */ bl _savegpr_26
+/* 80300A30 002FC690 3F E0 80 58 */ lis r31, lbl_8057B780@ha
+/* 80300A34 002FC694 3C C0 80 44 */ lis r6, lbl_80446240@ha
+/* 80300A38 002FC698 7C 7A 1B 78 */ mr r26, r3
+/* 80300A3C 002FC69C 7C 9B 23 78 */ mr r27, r4
+/* 80300A40 002FC6A0 7C BC 2B 78 */ mr r28, r5
+/* 80300A44 002FC6A4 3B FF B7 80 */ addi r31, r31, lbl_8057B780@l
+/* 80300A48 002FC6A8 38 66 62 40 */ addi r3, r6, lbl_80446240@l
+/* 80300A4C 002FC6AC 38 80 00 00 */ li r4, 0
+/* 80300A50 002FC6B0 4B FA 27 09 */ bl IOS_Open
+/* 80300A54 002FC6B4 2C 03 00 00 */ cmpwi r3, 0
+/* 80300A58 002FC6B8 7C 7D 1B 78 */ mr r29, r3
+/* 80300A5C 002FC6BC 40 80 00 0C */ bge lbl_80300A68
+/* 80300A60 002FC6C0 38 60 FF FF */ li r3, -1
+/* 80300A64 002FC6C4 48 00 00 D8 */ b lbl_80300B3C
+lbl_80300A68:
+/* 80300A68 002FC6C8 4B F6 DC F5 */ bl OSDisableInterrupts
+/* 80300A6C 002FC6CC 80 0D AF 70 */ lwz r0, lbl_80640230-_SDA_BASE_(r13)
+/* 80300A70 002FC6D0 7C 7E 1B 78 */ mr r30, r3
+/* 80300A74 002FC6D4 2C 00 00 00 */ cmpwi r0, 0
+/* 80300A78 002FC6D8 40 82 00 44 */ bne lbl_80300ABC
+/* 80300A7C 002FC6DC 38 7F 00 00 */ addi r3, r31, 0
+/* 80300A80 002FC6E0 48 00 01 85 */ bl SSL_InitMutex
+/* 80300A84 002FC6E4 38 7F 00 20 */ addi r3, r31, 0x20
+/* 80300A88 002FC6E8 38 80 00 00 */ li r4, 0
+/* 80300A8C 002FC6EC 38 A0 10 00 */ li r5, 0x1000
+/* 80300A90 002FC6F0 4B D0 36 75 */ bl memset
+/* 80300A94 002FC6F4 38 7F 10 20 */ addi r3, r31, 0x1020
+/* 80300A98 002FC6F8 38 80 00 00 */ li r4, 0
+/* 80300A9C 002FC6FC 38 A0 10 00 */ li r5, 0x1000
+/* 80300AA0 002FC700 4B D0 36 65 */ bl memset
+/* 80300AA4 002FC704 38 7F 20 20 */ addi r3, r31, 0x2020
+/* 80300AA8 002FC708 38 80 00 00 */ li r4, 0
+/* 80300AAC 002FC70C 38 A0 10 00 */ li r5, 0x1000
+/* 80300AB0 002FC710 4B D0 36 55 */ bl memset
+/* 80300AB4 002FC714 38 00 00 01 */ li r0, 1
+/* 80300AB8 002FC718 90 0D AF 70 */ stw r0, lbl_80640230-_SDA_BASE_(r13)
+lbl_80300ABC:
+/* 80300ABC 002FC71C 7F C3 F3 78 */ mr r3, r30
+/* 80300AC0 002FC720 4B F6 DC C5 */ bl OSRestoreInterrupts
+/* 80300AC4 002FC724 38 7F 00 00 */ addi r3, r31, 0
+/* 80300AC8 002FC728 48 00 01 41 */ bl SSL_LockMutex
+/* 80300ACC 002FC72C 7F 64 DB 78 */ mr r4, r27
+/* 80300AD0 002FC730 7F 85 E3 78 */ mr r5, r28
+/* 80300AD4 002FC734 38 7F 20 20 */ addi r3, r31, 0x2020
+/* 80300AD8 002FC738 4B D0 35 29 */ bl memcpy
+/* 80300ADC 002FC73C 39 20 00 20 */ li r9, 0x20
+/* 80300AE0 002FC740 39 41 00 40 */ addi r10, r1, 0x40
+/* 80300AE4 002FC744 39 01 00 20 */ addi r8, r1, 0x20
+/* 80300AE8 002FC748 38 1F 20 20 */ addi r0, r31, 0x2020
+/* 80300AEC 002FC74C 38 80 FF FF */ li r4, -1
+/* 80300AF0 002FC750 93 41 00 20 */ stw r26, 0x20(r1)
+/* 80300AF4 002FC754 7F A3 EB 78 */ mr r3, r29
+/* 80300AF8 002FC758 38 E1 00 60 */ addi r7, r1, 0x60
+/* 80300AFC 002FC75C 90 81 00 40 */ stw r4, 0x40(r1)
+/* 80300B00 002FC760 38 80 00 0A */ li r4, 0xa
+/* 80300B04 002FC764 38 A0 00 01 */ li r5, 1
+/* 80300B08 002FC768 38 C0 00 02 */ li r6, 2
+/* 80300B0C 002FC76C 91 41 00 60 */ stw r10, 0x60(r1)
+/* 80300B10 002FC770 91 21 00 64 */ stw r9, 0x64(r1)
+/* 80300B14 002FC774 91 01 00 68 */ stw r8, 0x68(r1)
+/* 80300B18 002FC778 91 21 00 6C */ stw r9, 0x6c(r1)
+/* 80300B1C 002FC77C 90 01 00 70 */ stw r0, 0x70(r1)
+/* 80300B20 002FC780 93 81 00 74 */ stw r28, 0x74(r1)
+/* 80300B24 002FC784 4B FA 33 1D */ bl IOS_Ioctlv
+/* 80300B28 002FC788 38 7F 00 00 */ addi r3, r31, 0
+/* 80300B2C 002FC78C 48 00 00 E1 */ bl SSL_UnlockMutex
+/* 80300B30 002FC790 7F A3 EB 78 */ mr r3, r29
+/* 80300B34 002FC794 4B FA 28 05 */ bl IOS_Close
+/* 80300B38 002FC798 80 61 00 40 */ lwz r3, 0x40(r1)
+lbl_80300B3C:
+/* 80300B3C 002FC79C 81 41 00 00 */ lwz r10, 0(r1)
+/* 80300B40 002FC7A0 7D 4B 53 78 */ mr r11, r10
+/* 80300B44 002FC7A4 4B EC 66 2D */ bl _restgpr_26
+/* 80300B48 002FC7A8 80 0A 00 04 */ lwz r0, 4(r10)
+/* 80300B4C 002FC7AC 7C 08 03 A6 */ mtlr r0
+/* 80300B50 002FC7B0 7D 41 53 78 */ mr r1, r10
+/* 80300B54 002FC7B4 4E 80 00 20 */ blr
+
+.global SSLSetBuiltinRootCA
+SSLSetBuiltinRootCA:
+/* 80300B58 002FC7B8 54 2B 06 FE */ clrlwi r11, r1, 0x1b
+/* 80300B5C 002FC7BC 7C 2C 0B 78 */ mr r12, r1
+/* 80300B60 002FC7C0 21 6B FF 60 */ subfic r11, r11, -160
+/* 80300B64 002FC7C4 7C 21 59 6E */ stwux r1, r1, r11
+/* 80300B68 002FC7C8 7C 08 02 A6 */ mflr r0
+/* 80300B6C 002FC7CC 3C 80 80 44 */ lis r4, lbl_80446240@ha
+/* 80300B70 002FC7D0 90 0C 00 04 */ stw r0, 4(r12)
+/* 80300B74 002FC7D4 93 EC FF FC */ stw r31, -4(r12)
+/* 80300B78 002FC7D8 93 CC FF F8 */ stw r30, -8(r12)
+/* 80300B7C 002FC7DC 7C 7E 1B 78 */ mr r30, r3
+/* 80300B80 002FC7E0 38 64 62 40 */ addi r3, r4, lbl_80446240@l
+/* 80300B84 002FC7E4 38 80 00 00 */ li r4, 0
+/* 80300B88 002FC7E8 4B FA 25 D1 */ bl IOS_Open
+/* 80300B8C 002FC7EC 2C 03 00 00 */ cmpwi r3, 0
+/* 80300B90 002FC7F0 7C 7F 1B 78 */ mr r31, r3
+/* 80300B94 002FC7F4 40 80 00 0C */ bge lbl_80300BA0
+/* 80300B98 002FC7F8 38 60 FF FF */ li r3, -1
+/* 80300B9C 002FC7FC 48 00 00 4C */ b lbl_80300BE8
+lbl_80300BA0:
+/* 80300BA0 002FC800 39 00 00 20 */ li r8, 0x20
+/* 80300BA4 002FC804 39 21 00 40 */ addi r9, r1, 0x40
+/* 80300BA8 002FC808 38 01 00 20 */ addi r0, r1, 0x20
+/* 80300BAC 002FC80C 38 80 FF FF */ li r4, -1
+/* 80300BB0 002FC810 90 81 00 40 */ stw r4, 0x40(r1)
+/* 80300BB4 002FC814 38 E1 00 60 */ addi r7, r1, 0x60
+/* 80300BB8 002FC818 38 80 00 0B */ li r4, 0xb
+/* 80300BBC 002FC81C 38 A0 00 01 */ li r5, 1
+/* 80300BC0 002FC820 93 C1 00 20 */ stw r30, 0x20(r1)
+/* 80300BC4 002FC824 38 C0 00 01 */ li r6, 1
+/* 80300BC8 002FC828 91 21 00 60 */ stw r9, 0x60(r1)
+/* 80300BCC 002FC82C 91 01 00 64 */ stw r8, 0x64(r1)
+/* 80300BD0 002FC830 90 01 00 68 */ stw r0, 0x68(r1)
+/* 80300BD4 002FC834 91 01 00 6C */ stw r8, 0x6c(r1)
+/* 80300BD8 002FC838 4B FA 32 69 */ bl IOS_Ioctlv
+/* 80300BDC 002FC83C 7F E3 FB 78 */ mr r3, r31
+/* 80300BE0 002FC840 4B FA 27 59 */ bl IOS_Close
+/* 80300BE4 002FC844 80 61 00 40 */ lwz r3, 0x40(r1)
+lbl_80300BE8:
+/* 80300BE8 002FC848 81 41 00 00 */ lwz r10, 0(r1)
+/* 80300BEC 002FC84C 80 0A 00 04 */ lwz r0, 4(r10)
+/* 80300BF0 002FC850 83 EA FF FC */ lwz r31, -4(r10)
+/* 80300BF4 002FC854 83 CA FF F8 */ lwz r30, -8(r10)
+/* 80300BF8 002FC858 7C 08 03 A6 */ mtlr r0
+/* 80300BFC 002FC85C 7D 41 53 78 */ mr r1, r10
+/* 80300C00 002FC860 4E 80 00 20 */ blr
diff --git a/asm/SDK/SSL/ssl_mutex.s b/asm/SDK/SSL/ssl_mutex.s
new file mode 100644
index 0000000..8c152ad
--- /dev/null
+++ b/asm/SDK/SSL/ssl_mutex.s
@@ -0,0 +1,15 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global SSL_InitMutex
+SSL_InitMutex:
+/* 80300C04 002FC864 4B F6 ED 0C */ b OSInitMutex
+
+.global SSL_LockMutex
+SSL_LockMutex:
+/* 80300C08 002FC868 4B F6 ED 40 */ b OSLockMutex
+
+.global SSL_UnlockMutex
+SSL_UnlockMutex:
+/* 80300C0C 002FC86C 4B F6 EE 18 */ b OSUnlockMutex
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)