summaryrefslogtreecommitdiff
path: root/asm/SDK
diff options
context:
space:
mode:
authorRevo <projectrevotpp@hotmail.com>2020-10-09 14:03:51 -0400
committerGitHub <noreply@github.com>2020-10-09 14:03:51 -0400
commit187499b6ec5ec7918384dee46ca0078adb135ce4 (patch)
tree19581a6b9587e6c6575a97ba3bfbc27c27e13f6e /asm/SDK
parent8e96dbb3fe6f6e60f75f7e3297238260ab9f787c (diff)
parentef8a8458864aef2e4b3d4f5ee0a0d3d03aa11ff3 (diff)
Merge pull request #134 from mparisi20/master
split MP, MPDL, and NET libraries
Diffstat (limited to 'asm/SDK')
-rw-r--r--asm/SDK/MP/mpbeacon.s539
-rw-r--r--asm/SDK/MP/mpconnection.s620
-rw-r--r--asm/SDK/MP/mpmisc.s117
-rw-r--r--asm/SDK/MP/mpnotification.s138
-rw-r--r--asm/SDK/MP/mpparent.s944
-rw-r--r--asm/SDK/MP/mpport.s399
-rw-r--r--asm/SDK/MP/mpsystem.s496
-rw-r--r--asm/SDK/MP/mptxrx.s598
-rw-r--r--asm/SDK/MP/mpwd.s443
-rw-r--r--asm/SDK/MPDL/mpdlsystem.s934
-rw-r--r--asm/SDK/NET/NETVersion.s7
-rw-r--r--asm/SDK/NET/neterrorcode.s352
-rw-r--r--asm/SDK/NET/wireless_macaddr.s7
-rw-r--r--asm/SDK/NTR/wdp_common.s2
-rw-r--r--asm/SDK/NTR/wdp_parent.s50
15 files changed, 5620 insertions, 26 deletions
diff --git a/asm/SDK/MP/mpbeacon.s b/asm/SDK/MP/mpbeacon.s
new file mode 100644
index 0000000..06c060f
--- /dev/null
+++ b/asm/SDK/MP/mpbeacon.s
@@ -0,0 +1,539 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MPUpdateBeacon
+MPUpdateBeacon:
+/* 802F38A8 002EF508 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F38AC 002EF50C 7C 08 02 A6 */ mflr r0
+/* 802F38B0 002EF510 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F38B4 002EF514 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F38B8 002EF518 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F38BC 002EF51C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F38C0 002EF520 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802F38C4 002EF524 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F38C8 002EF528 2C 00 00 00 */ cmpwi r0, 0
+/* 802F38CC 002EF52C 40 82 00 0C */ bne lbl_802F38D8
+/* 802F38D0 002EF530 38 60 FF 14 */ li r3, -236
+/* 802F38D4 002EF534 48 00 00 D4 */ b lbl_802F39A8
+lbl_802F38D8:
+/* 802F38D8 002EF538 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
+/* 802F38DC 002EF53C 2C 00 00 00 */ cmpwi r0, 0
+/* 802F38E0 002EF540 41 82 00 0C */ beq lbl_802F38EC
+/* 802F38E4 002EF544 38 60 FF FF */ li r3, -1
+/* 802F38E8 002EF548 48 00 00 C0 */ b lbl_802F39A8
+lbl_802F38EC:
+/* 802F38EC 002EF54C 38 61 00 08 */ addi r3, r1, 8
+/* 802F38F0 002EF550 38 80 00 01 */ li r4, 1
+/* 802F38F4 002EF554 4B FF D0 BD */ bl MPiAllocateCommandBlock
+/* 802F38F8 002EF558 2C 03 00 00 */ cmpwi r3, 0
+/* 802F38FC 002EF55C 40 80 00 08 */ bge lbl_802F3904
+/* 802F3900 002EF560 48 00 00 A8 */ b lbl_802F39A8
+lbl_802F3904:
+/* 802F3904 002EF564 83 82 AA 30 */ lwz r28, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3908 002EF568 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F390C 002EF56C 3B BC 65 DC */ addi r29, r28, 0x65dc
+/* 802F3910 002EF570 7F A3 EB 78 */ mr r3, r29
+/* 802F3914 002EF574 4B F7 C0 35 */ bl OSLockMutex
+/* 802F3918 002EF578 37 FC 55 60 */ addic. r31, r28, 0x5560
+/* 802F391C 002EF57C 40 82 00 14 */ bne lbl_802F3930
+/* 802F3920 002EF580 7F A3 EB 78 */ mr r3, r29
+/* 802F3924 002EF584 4B F7 C1 01 */ bl OSUnlockMutex
+/* 802F3928 002EF588 3B E0 FF 10 */ li r31, -240
+/* 802F392C 002EF58C 48 00 00 28 */ b lbl_802F3954
+lbl_802F3930:
+/* 802F3930 002EF590 7F E3 FB 78 */ mr r3, r31
+/* 802F3934 002EF594 48 00 02 E5 */ bl MPiMakeGameInfo
+/* 802F3938 002EF598 7F E3 FB 78 */ mr r3, r31
+/* 802F393C 002EF59C 4B FF D6 99 */ bl MPiChangeBeacon
+/* 802F3940 002EF5A0 7C 7F 1B 78 */ mr r31, r3
+/* 802F3944 002EF5A4 7F A3 EB 78 */ mr r3, r29
+/* 802F3948 002EF5A8 4B F7 C0 DD */ bl OSUnlockMutex
+/* 802F394C 002EF5AC 7F E0 FE 70 */ srawi r0, r31, 0x1f
+/* 802F3950 002EF5B0 7F FF 00 38 */ and r31, r31, r0
+lbl_802F3954:
+/* 802F3954 002EF5B4 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F3958 002EF5B8 40 80 00 08 */ bge lbl_802F3960
+/* 802F395C 002EF5BC 48 00 00 30 */ b lbl_802F398C
+lbl_802F3960:
+/* 802F3960 002EF5C0 38 C0 00 00 */ li r6, 0
+/* 802F3964 002EF5C4 38 00 00 01 */ li r0, 1
+/* 802F3968 002EF5C8 90 DE 00 18 */ stw r6, 0x18(r30)
+/* 802F396C 002EF5CC 7F C4 F3 78 */ mr r4, r30
+/* 802F3970 002EF5D0 38 7C 65 24 */ addi r3, r28, 0x6524
+/* 802F3974 002EF5D4 38 A0 00 01 */ li r5, 1
+/* 802F3978 002EF5D8 90 1E 00 04 */ stw r0, 4(r30)
+/* 802F397C 002EF5DC 90 DE 00 1C */ stw r6, 0x1c(r30)
+/* 802F3980 002EF5E0 90 DE 00 20 */ stw r6, 0x20(r30)
+/* 802F3984 002EF5E4 4B FF D0 D5 */ bl MPiSendRequest
+/* 802F3988 002EF5E8 7C 7F 1B 78 */ mr r31, r3
+lbl_802F398C:
+/* 802F398C 002EF5EC 80 61 00 08 */ lwz r3, 8(r1)
+/* 802F3990 002EF5F0 4B FF D0 B5 */ bl MPiFreeCommandBlock
+/* 802F3994 002EF5F4 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F3998 002EF5F8 40 80 00 0C */ bge lbl_802F39A4
+/* 802F399C 002EF5FC 7F E3 FB 78 */ mr r3, r31
+/* 802F39A0 002EF600 48 00 00 08 */ b lbl_802F39A8
+lbl_802F39A4:
+/* 802F39A4 002EF604 38 60 00 00 */ li r3, 0
+lbl_802F39A8:
+/* 802F39A8 002EF608 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F39AC 002EF60C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F39B0 002EF610 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F39B4 002EF614 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F39B8 002EF618 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802F39BC 002EF61C 7C 08 03 A6 */ mtlr r0
+/* 802F39C0 002EF620 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F39C4 002EF624 4E 80 00 20 */ blr
+
+.global MPUpdateBeaconAsync
+MPUpdateBeaconAsync:
+/* 802F39C8 002EF628 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F39CC 002EF62C 7C 08 02 A6 */ mflr r0
+/* 802F39D0 002EF630 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F39D4 002EF634 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F39D8 002EF638 4B ED 37 51 */ bl _savegpr_27
+/* 802F39DC 002EF63C 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F39E0 002EF640 7C 7B 1B 78 */ mr r27, r3
+/* 802F39E4 002EF644 7C 9C 23 78 */ mr r28, r4
+/* 802F39E8 002EF648 2C 00 00 00 */ cmpwi r0, 0
+/* 802F39EC 002EF64C 40 82 00 0C */ bne lbl_802F39F8
+/* 802F39F0 002EF650 38 60 FF 14 */ li r3, -236
+/* 802F39F4 002EF654 48 00 00 A4 */ b lbl_802F3A98
+lbl_802F39F8:
+/* 802F39F8 002EF658 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
+/* 802F39FC 002EF65C 2C 00 00 00 */ cmpwi r0, 0
+/* 802F3A00 002EF660 41 82 00 0C */ beq lbl_802F3A0C
+/* 802F3A04 002EF664 38 60 FF FF */ li r3, -1
+/* 802F3A08 002EF668 48 00 00 90 */ b lbl_802F3A98
+lbl_802F3A0C:
+/* 802F3A0C 002EF66C 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3A10 002EF670 3B DD 65 DC */ addi r30, r29, 0x65dc
+/* 802F3A14 002EF674 7F C3 F3 78 */ mr r3, r30
+/* 802F3A18 002EF678 4B F7 BF 31 */ bl OSLockMutex
+/* 802F3A1C 002EF67C 37 FD 55 60 */ addic. r31, r29, 0x5560
+/* 802F3A20 002EF680 40 82 00 14 */ bne lbl_802F3A34
+/* 802F3A24 002EF684 7F C3 F3 78 */ mr r3, r30
+/* 802F3A28 002EF688 4B F7 BF FD */ bl OSUnlockMutex
+/* 802F3A2C 002EF68C 38 60 FF 10 */ li r3, -240
+/* 802F3A30 002EF690 48 00 00 28 */ b lbl_802F3A58
+lbl_802F3A34:
+/* 802F3A34 002EF694 7F E3 FB 78 */ mr r3, r31
+/* 802F3A38 002EF698 48 00 01 E1 */ bl MPiMakeGameInfo
+/* 802F3A3C 002EF69C 7F E3 FB 78 */ mr r3, r31
+/* 802F3A40 002EF6A0 4B FF D5 95 */ bl MPiChangeBeacon
+/* 802F3A44 002EF6A4 7C 7F 1B 78 */ mr r31, r3
+/* 802F3A48 002EF6A8 7F C3 F3 78 */ mr r3, r30
+/* 802F3A4C 002EF6AC 4B F7 BF D9 */ bl OSUnlockMutex
+/* 802F3A50 002EF6B0 7F E0 FE 70 */ srawi r0, r31, 0x1f
+/* 802F3A54 002EF6B4 7F E3 00 38 */ and r3, r31, r0
+lbl_802F3A58:
+/* 802F3A58 002EF6B8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F3A5C 002EF6BC 40 80 00 08 */ bge lbl_802F3A64
+/* 802F3A60 002EF6C0 48 00 00 28 */ b lbl_802F3A88
+lbl_802F3A64:
+/* 802F3A64 002EF6C4 38 00 00 00 */ li r0, 0
+/* 802F3A68 002EF6C8 93 7C 00 18 */ stw r27, 0x18(r28)
+/* 802F3A6C 002EF6CC 7F 84 E3 78 */ mr r4, r28
+/* 802F3A70 002EF6D0 38 7D 65 24 */ addi r3, r29, 0x6524
+/* 802F3A74 002EF6D4 90 1C 00 04 */ stw r0, 4(r28)
+/* 802F3A78 002EF6D8 38 A0 00 00 */ li r5, 0
+/* 802F3A7C 002EF6DC 90 1C 00 1C */ stw r0, 0x1c(r28)
+/* 802F3A80 002EF6E0 90 1C 00 20 */ stw r0, 0x20(r28)
+/* 802F3A84 002EF6E4 4B FF CF D5 */ bl MPiSendRequest
+lbl_802F3A88:
+/* 802F3A88 002EF6E8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F3A8C 002EF6EC 40 80 00 08 */ bge lbl_802F3A94
+/* 802F3A90 002EF6F0 48 00 00 08 */ b lbl_802F3A98
+lbl_802F3A94:
+/* 802F3A94 002EF6F4 38 60 00 00 */ li r3, 0
+lbl_802F3A98:
+/* 802F3A98 002EF6F8 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F3A9C 002EF6FC 4B ED 36 D9 */ bl _restgpr_27
+/* 802F3AA0 002EF700 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F3AA4 002EF704 7C 08 03 A6 */ mtlr r0
+/* 802F3AA8 002EF708 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F3AAC 002EF70C 4E 80 00 20 */ blr
+
+.global MPiStartupBeacon
+MPiStartupBeacon:
+/* 802F3AB0 002EF710 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F3AB4 002EF714 7C 08 02 A6 */ mflr r0
+/* 802F3AB8 002EF718 38 A0 00 20 */ li r5, 0x20
+/* 802F3ABC 002EF71C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F3AC0 002EF720 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F3AC4 002EF724 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F3AC8 002EF728 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3ACC 002EF72C 38 7E 65 24 */ addi r3, r30, 0x6524
+/* 802F3AD0 002EF730 38 9E 65 44 */ addi r4, r30, 0x6544
+/* 802F3AD4 002EF734 4B F7 B4 25 */ bl OSInitMessageQueue
+/* 802F3AD8 002EF738 38 7E 65 DC */ addi r3, r30, 0x65dc
+/* 802F3ADC 002EF73C 4B F7 BE 35 */ bl OSInitMutex
+/* 802F3AE0 002EF740 38 7E 55 60 */ addi r3, r30, 0x5560
+/* 802F3AE4 002EF744 38 80 00 00 */ li r4, 0
+/* 802F3AE8 002EF748 38 A0 00 80 */ li r5, 0x80
+/* 802F3AEC 002EF74C 4B D1 06 19 */ bl memset
+/* 802F3AF0 002EF750 3B E0 00 00 */ li r31, 0
+/* 802F3AF4 002EF754 38 7E 65 F8 */ addi r3, r30, 0x65f8
+/* 802F3AF8 002EF758 93 FE 65 F4 */ stw r31, 0x65f4(r30)
+/* 802F3AFC 002EF75C 38 80 00 00 */ li r4, 0
+/* 802F3B00 002EF760 38 A0 00 14 */ li r5, 0x14
+/* 802F3B04 002EF764 4B D1 06 01 */ bl memset
+/* 802F3B08 002EF768 93 FE 66 0C */ stw r31, 0x660c(r30)
+/* 802F3B0C 002EF76C 38 60 00 00 */ li r3, 0
+/* 802F3B10 002EF770 93 FE 66 10 */ stw r31, 0x6610(r30)
+/* 802F3B14 002EF774 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F3B18 002EF778 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F3B1C 002EF77C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F3B20 002EF780 7C 08 03 A6 */ mtlr r0
+/* 802F3B24 002EF784 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F3B28 002EF788 4E 80 00 20 */ blr
+
+.global MPiCleanupBeacon
+MPiCleanupBeacon:
+/* 802F3B2C 002EF78C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F3B30 002EF790 7C 08 02 A6 */ mflr r0
+/* 802F3B34 002EF794 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3B38 002EF798 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F3B3C 002EF79C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F3B40 002EF7A0 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F3B44 002EF7A4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F3B48 002EF7A8 41 82 00 74 */ beq lbl_802F3BBC
+/* 802F3B4C 002EF7AC 3B E3 65 24 */ addi r31, r3, 0x6524
+/* 802F3B50 002EF7B0 48 00 00 10 */ b lbl_802F3B60
+lbl_802F3B54:
+/* 802F3B54 002EF7B4 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F3B58 002EF7B8 38 60 FF 00 */ li r3, -256
+/* 802F3B5C 002EF7BC 4B FF CF 95 */ bl MPiRespondToWaitingRequest
+lbl_802F3B60:
+/* 802F3B60 002EF7C0 7F E3 FB 78 */ mr r3, r31
+/* 802F3B64 002EF7C4 38 81 00 08 */ addi r4, r1, 8
+/* 802F3B68 002EF7C8 38 A0 00 00 */ li r5, 0
+/* 802F3B6C 002EF7CC 4B F7 B4 B5 */ bl OSReceiveMessage
+/* 802F3B70 002EF7D0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F3B74 002EF7D4 40 82 FF E0 */ bne lbl_802F3B54
+/* 802F3B78 002EF7D8 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3B7C 002EF7DC 38 80 00 00 */ li r4, 0
+/* 802F3B80 002EF7E0 38 A0 00 80 */ li r5, 0x80
+/* 802F3B84 002EF7E4 38 7E 65 44 */ addi r3, r30, 0x6544
+/* 802F3B88 002EF7E8 4B D1 05 7D */ bl memset
+/* 802F3B8C 002EF7EC 38 7E 55 60 */ addi r3, r30, 0x5560
+/* 802F3B90 002EF7F0 38 80 00 00 */ li r4, 0
+/* 802F3B94 002EF7F4 38 A0 00 80 */ li r5, 0x80
+/* 802F3B98 002EF7F8 4B D1 05 6D */ bl memset
+/* 802F3B9C 002EF7FC 3B E0 00 00 */ li r31, 0
+/* 802F3BA0 002EF800 38 7E 65 F8 */ addi r3, r30, 0x65f8
+/* 802F3BA4 002EF804 93 FE 65 F4 */ stw r31, 0x65f4(r30)
+/* 802F3BA8 002EF808 38 80 00 00 */ li r4, 0
+/* 802F3BAC 002EF80C 38 A0 00 14 */ li r5, 0x14
+/* 802F3BB0 002EF810 4B D1 05 55 */ bl memset
+/* 802F3BB4 002EF814 93 FE 66 0C */ stw r31, 0x660c(r30)
+/* 802F3BB8 002EF818 93 FE 66 10 */ stw r31, 0x6610(r30)
+lbl_802F3BBC:
+/* 802F3BBC 002EF81C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F3BC0 002EF820 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F3BC4 002EF824 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F3BC8 002EF828 7C 08 03 A6 */ mtlr r0
+/* 802F3BCC 002EF82C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F3BD0 002EF830 4E 80 00 20 */ blr
+
+.global MPiProcessBeaconSentNotification
+MPiProcessBeaconSentNotification:
+/* 802F3BD4 002EF834 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F3BD8 002EF838 7C 08 02 A6 */ mflr r0
+/* 802F3BDC 002EF83C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3BE0 002EF840 38 A0 00 00 */ li r5, 0
+/* 802F3BE4 002EF844 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F3BE8 002EF848 38 81 00 08 */ addi r4, r1, 8
+/* 802F3BEC 002EF84C 38 63 65 24 */ addi r3, r3, 0x6524
+/* 802F3BF0 002EF850 4B F7 B4 31 */ bl OSReceiveMessage
+/* 802F3BF4 002EF854 2C 03 00 00 */ cmpwi r3, 0
+/* 802F3BF8 002EF858 41 82 00 10 */ beq lbl_802F3C08
+/* 802F3BFC 002EF85C 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F3C00 002EF860 38 60 00 00 */ li r3, 0
+/* 802F3C04 002EF864 4B FF CE ED */ bl MPiRespondToWaitingRequest
+lbl_802F3C08:
+/* 802F3C08 002EF868 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F3C0C 002EF86C 7C 08 03 A6 */ mtlr r0
+/* 802F3C10 002EF870 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F3C14 002EF874 4E 80 00 20 */ blr
+
+.global MPiMakeGameInfo
+MPiMakeGameInfo:
+/* 802F3C18 002EF878 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F3C1C 002EF87C 7C 08 02 A6 */ mflr r0
+/* 802F3C20 002EF880 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3C24 002EF884 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F3C28 002EF888 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F3C2C 002EF88C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F3C30 002EF890 7C 7E 1B 78 */ mr r30, r3
+/* 802F3C34 002EF894 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F3C38 002EF898 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802F3C3C 002EF89C 83 E4 00 14 */ lwz r31, 0x14(r4)
+/* 802F3C40 002EF8A0 3C 1F 00 01 */ addis r0, r31, 1
+/* 802F3C44 002EF8A4 28 00 FF FF */ cmplwi r0, 0xffff
+/* 802F3C48 002EF8A8 40 82 00 14 */ bne lbl_802F3C5C
+/* 802F3C4C 002EF8AC 4B FF CF 61 */ bl MPiGetNewTgid
+/* 802F3C50 002EF8B0 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3C54 002EF8B4 7C 7F 1B 78 */ mr r31, r3
+/* 802F3C58 002EF8B8 90 64 00 14 */ stw r3, 0x14(r4)
+lbl_802F3C5C:
+/* 802F3C5C 002EF8BC 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3C60 002EF8C0 83 A3 00 3C */ lwz r29, 0x3c(r3)
+/* 802F3C64 002EF8C4 28 1D 00 70 */ cmplwi r29, 0x70
+/* 802F3C68 002EF8C8 40 81 00 08 */ ble lbl_802F3C70
+/* 802F3C6C 002EF8CC 3B A0 00 70 */ li r29, 0x70
+lbl_802F3C70:
+/* 802F3C70 002EF8D0 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3C74 002EF8D4 3B 80 00 00 */ li r28, 0
+/* 802F3C78 002EF8D8 80 03 00 30 */ lwz r0, 0x30(r3)
+/* 802F3C7C 002EF8DC 2C 00 00 00 */ cmpwi r0, 0
+/* 802F3C80 002EF8E0 41 82 00 08 */ beq lbl_802F3C88
+/* 802F3C84 002EF8E4 63 9C 00 01 */ ori r28, r28, 1
+lbl_802F3C88:
+/* 802F3C88 002EF8E8 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3C8C 002EF8EC 80 03 00 34 */ lwz r0, 0x34(r3)
+/* 802F3C90 002EF8F0 2C 00 00 00 */ cmpwi r0, 0
+/* 802F3C94 002EF8F4 41 82 00 08 */ beq lbl_802F3C9C
+/* 802F3C98 002EF8F8 63 9C 00 02 */ ori r28, r28, 2
+lbl_802F3C9C:
+/* 802F3C9C 002EF8FC 7F C3 F3 78 */ mr r3, r30
+/* 802F3CA0 002EF900 38 80 00 00 */ li r4, 0
+/* 802F3CA4 002EF904 38 A0 00 80 */ li r5, 0x80
+/* 802F3CA8 002EF908 4B D1 04 5D */ bl memset
+/* 802F3CAC 002EF90C 38 00 01 00 */ li r0, 0x100
+/* 802F3CB0 002EF910 38 80 00 01 */ li r4, 1
+/* 802F3CB4 002EF914 38 E0 00 08 */ li r7, 8
+/* 802F3CB8 002EF918 B0 1E 00 00 */ sth r0, 0(r30)
+/* 802F3CBC 002EF91C 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3CC0 002EF920 38 1E 00 08 */ addi r0, r30, 8
+/* 802F3CC4 002EF924 98 9E 00 02 */ stb r4, 2(r30)
+/* 802F3CC8 002EF928 7F A5 EB 78 */ mr r5, r29
+/* 802F3CCC 002EF92C 38 86 00 40 */ addi r4, r6, 0x40
+/* 802F3CD0 002EF930 38 7E 00 10 */ addi r3, r30, 0x10
+/* 802F3CD4 002EF934 98 FE 00 03 */ stb r7, 3(r30)
+/* 802F3CD8 002EF938 81 06 00 10 */ lwz r8, 0x10(r6)
+/* 802F3CDC 002EF93C 55 07 42 1E */ rlwinm r7, r8, 8, 8, 0xf
+/* 802F3CE0 002EF940 55 06 C4 2E */ rlwinm r6, r8, 0x18, 0x10, 0x17
+/* 802F3CE4 002EF944 51 07 C0 0E */ rlwimi r7, r8, 0x18, 0, 7
+/* 802F3CE8 002EF948 51 06 46 3E */ rlwimi r6, r8, 8, 0x18, 0x1f
+/* 802F3CEC 002EF94C 7C E6 33 78 */ or r6, r7, r6
+/* 802F3CF0 002EF950 90 DE 00 04 */ stw r6, 4(r30)
+/* 802F3CF4 002EF954 7F E0 07 2C */ sthbrx r31, 0, r0
+/* 802F3CF8 002EF958 9B BE 00 0A */ stb r29, 0xa(r30)
+/* 802F3CFC 002EF95C 4B D1 03 05 */ bl memcpy
+/* 802F3D00 002EF960 9B 9E 00 0B */ stb r28, 0xb(r30)
+/* 802F3D04 002EF964 38 1E 00 0C */ addi r0, r30, 0xc
+/* 802F3D08 002EF968 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3D0C 002EF96C 80 64 00 28 */ lwz r3, 0x28(r4)
+/* 802F3D10 002EF970 7C 60 07 2C */ sthbrx r3, 0, r0
+/* 802F3D14 002EF974 38 1E 00 0E */ addi r0, r30, 0xe
+/* 802F3D18 002EF978 80 64 00 2C */ lwz r3, 0x2c(r4)
+/* 802F3D1C 002EF97C 7C 60 07 2C */ sthbrx r3, 0, r0
+/* 802F3D20 002EF980 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F3D24 002EF984 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F3D28 002EF988 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F3D2C 002EF98C 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802F3D30 002EF990 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F3D34 002EF994 7C 08 03 A6 */ mtlr r0
+/* 802F3D38 002EF998 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F3D3C 002EF99C 4E 80 00 20 */ blr
+
+.global MPiMakeAndChangeBeacon
+MPiMakeAndChangeBeacon:
+/* 802F3D40 002EF9A0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F3D44 002EF9A4 7C 08 02 A6 */ mflr r0
+/* 802F3D48 002EF9A8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F3D4C 002EF9AC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F3D50 002EF9B0 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3D54 002EF9B4 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F3D58 002EF9B8 3B DF 65 DC */ addi r30, r31, 0x65dc
+/* 802F3D5C 002EF9BC 7F C3 F3 78 */ mr r3, r30
+/* 802F3D60 002EF9C0 4B F7 BB E9 */ bl OSLockMutex
+/* 802F3D64 002EF9C4 37 FF 55 60 */ addic. r31, r31, 0x5560
+/* 802F3D68 002EF9C8 40 82 00 14 */ bne lbl_802F3D7C
+/* 802F3D6C 002EF9CC 7F C3 F3 78 */ mr r3, r30
+/* 802F3D70 002EF9D0 4B F7 BC B5 */ bl OSUnlockMutex
+/* 802F3D74 002EF9D4 38 60 FF 10 */ li r3, -240
+/* 802F3D78 002EF9D8 48 00 00 28 */ b lbl_802F3DA0
+lbl_802F3D7C:
+/* 802F3D7C 002EF9DC 7F E3 FB 78 */ mr r3, r31
+/* 802F3D80 002EF9E0 4B FF FE 99 */ bl MPiMakeGameInfo
+/* 802F3D84 002EF9E4 7F E3 FB 78 */ mr r3, r31
+/* 802F3D88 002EF9E8 4B FF D2 4D */ bl MPiChangeBeacon
+/* 802F3D8C 002EF9EC 7C 7F 1B 78 */ mr r31, r3
+/* 802F3D90 002EF9F0 7F C3 F3 78 */ mr r3, r30
+/* 802F3D94 002EF9F4 4B F7 BC 91 */ bl OSUnlockMutex
+/* 802F3D98 002EF9F8 7F E0 FE 70 */ srawi r0, r31, 0x1f
+/* 802F3D9C 002EF9FC 7F E3 00 38 */ and r3, r31, r0
+lbl_802F3DA0:
+/* 802F3DA0 002EFA00 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F3DA4 002EFA04 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F3DA8 002EFA08 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F3DAC 002EFA0C 7C 08 03 A6 */ mtlr r0
+/* 802F3DB0 002EFA10 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F3DB4 002EFA14 4E 80 00 20 */ blr
+
+.global MPiSetCurrentTsf
+MPiSetCurrentTsf:
+/* 802F3DB8 002EFA18 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F3DBC 002EFA1C 7C 08 02 A6 */ mflr r0
+/* 802F3DC0 002EFA20 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F3DC4 002EFA24 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F3DC8 002EFA28 4B ED 33 59 */ bl _savegpr_25
+/* 802F3DCC 002EFA2C 7C 7E 1B 78 */ mr r30, r3
+/* 802F3DD0 002EFA30 4B F7 E9 E9 */ bl OSGetTime
+/* 802F3DD4 002EFA34 7C 9C 23 78 */ mr r28, r4
+/* 802F3DD8 002EFA38 7C 7D 1B 78 */ mr r29, r3
+/* 802F3DDC 002EFA3C 4B F7 A9 81 */ bl OSDisableInterrupts
+/* 802F3DE0 002EFA40 3C 80 80 00 */ lis r4, 0x800000F8@ha
+/* 802F3DE4 002EFA44 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3DE8 002EFA48 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
+/* 802F3DEC 002EFA4C 57 A5 18 38 */ slwi r5, r29, 3
+/* 802F3DF0 002EFA50 3C 80 43 1C */ lis r4, 0x431BDE83@ha
+/* 802F3DF4 002EFA54 83 BF 66 0C */ lwz r29, 0x660c(r31)
+/* 802F3DF8 002EFA58 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F3DFC 002EFA5C 53 85 1F 7E */ rlwimi r5, r28, 3, 0x1d, 0x1f
+/* 802F3E00 002EFA60 38 84 DE 83 */ addi r4, r4, 0x431BDE83@l
+/* 802F3E04 002EFA64 7C 79 1B 78 */ mr r25, r3
+/* 802F3E08 002EFA68 7C 04 00 16 */ mulhwu r0, r4, r0
+/* 802F3E0C 002EFA6C 7C A3 2B 78 */ mr r3, r5
+/* 802F3E10 002EFA70 83 7F 66 10 */ lwz r27, 0x6610(r31)
+/* 802F3E14 002EFA74 3B 5F 65 F8 */ addi r26, r31, 0x65f8
+/* 802F3E18 002EFA78 57 84 18 38 */ slwi r4, r28, 3
+/* 802F3E1C 002EFA7C 38 A0 00 00 */ li r5, 0
+/* 802F3E20 002EFA80 54 06 8B FE */ srwi r6, r0, 0xf
+/* 802F3E24 002EFA84 4B ED 34 55 */ bl __div2i
+/* 802F3E28 002EFA88 54 84 D0 3E */ rotlwi r4, r4, 0x1a
+/* 802F3E2C 002EFA8C 7C 60 36 70 */ srawi r0, r3, 6
+/* 802F3E30 002EFA90 50 64 D0 0A */ rlwimi r4, r3, 0x1a, 0, 5
+/* 802F3E34 002EFA94 3B 7B 00 01 */ addi r27, r27, 1
+/* 802F3E38 002EFA98 28 1B 00 0A */ cmplwi r27, 0xa
+/* 802F3E3C 002EFA9C 57 A0 08 3C */ slwi r0, r29, 1
+/* 802F3E40 002EFAA0 7C 64 F0 10 */ subfc r3, r4, r30
+/* 802F3E44 002EFAA4 7F BC EB 78 */ mr r28, r29
+/* 802F3E48 002EFAA8 7C 7A 03 2E */ sthx r3, r26, r0
+/* 802F3E4C 002EFAAC 40 81 00 08 */ ble lbl_802F3E54
+/* 802F3E50 002EFAB0 3B 60 00 0A */ li r27, 0xa
+lbl_802F3E54:
+/* 802F3E54 002EFAB4 3B BD 00 01 */ addi r29, r29, 1
+/* 802F3E58 002EFAB8 93 7F 66 10 */ stw r27, 0x6610(r31)
+/* 802F3E5C 002EFABC 28 1D 00 0A */ cmplwi r29, 0xa
+/* 802F3E60 002EFAC0 41 80 00 08 */ blt lbl_802F3E68
+/* 802F3E64 002EFAC4 3B A0 00 00 */ li r29, 0
+lbl_802F3E68:
+/* 802F3E68 002EFAC8 93 BF 66 0C */ stw r29, 0x660c(r31)
+/* 802F3E6C 002EFACC 7F 23 CB 78 */ mr r3, r25
+/* 802F3E70 002EFAD0 4B F7 A9 15 */ bl OSRestoreInterrupts
+/* 802F3E74 002EFAD4 3C 60 80 00 */ lis r3, 0x7FFFFFFF@ha
+/* 802F3E78 002EFAD8 38 C0 FF FF */ li r6, -1
+/* 802F3E7C 002EFADC 38 83 FF FF */ addi r4, r3, 0x7FFFFFFF@l
+/* 802F3E80 002EFAE0 38 A0 FF FF */ li r5, -1
+/* 802F3E84 002EFAE4 7F 69 03 A6 */ mtctr r27
+/* 802F3E88 002EFAE8 28 1B 00 00 */ cmplwi r27, 0
+/* 802F3E8C 002EFAEC 40 81 00 50 */ ble lbl_802F3EDC
+lbl_802F3E90:
+/* 802F3E90 002EFAF0 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F3E94 002EFAF4 40 80 00 08 */ bge lbl_802F3E9C
+/* 802F3E98 002EFAF8 3B 9C 00 0A */ addi r28, r28, 0xa
+lbl_802F3E9C:
+/* 802F3E9C 002EFAFC 57 80 08 3C */ slwi r0, r28, 1
+/* 802F3EA0 002EFB00 7C 7A 02 2E */ lhzx r3, r26, r0
+/* 802F3EA4 002EFB04 7C 03 20 00 */ cmpw r3, r4
+/* 802F3EA8 002EFB08 40 80 00 08 */ bge lbl_802F3EB0
+/* 802F3EAC 002EFB0C 7C 64 1B 78 */ mr r4, r3
+lbl_802F3EB0:
+/* 802F3EB0 002EFB10 7C 03 28 00 */ cmpw r3, r5
+/* 802F3EB4 002EFB14 40 81 00 08 */ ble lbl_802F3EBC
+/* 802F3EB8 002EFB18 7C 65 1B 78 */ mr r5, r3
+lbl_802F3EBC:
+/* 802F3EBC 002EFB1C 3C 63 00 01 */ addis r3, r3, 1
+/* 802F3EC0 002EFB20 38 63 80 00 */ addi r3, r3, -32768
+/* 802F3EC4 002EFB24 54 60 04 3E */ clrlwi r0, r3, 0x10
+/* 802F3EC8 002EFB28 7C 00 30 00 */ cmpw r0, r6
+/* 802F3ECC 002EFB2C 40 81 00 08 */ ble lbl_802F3ED4
+/* 802F3ED0 002EFB30 7C 06 03 78 */ mr r6, r0
+lbl_802F3ED4:
+/* 802F3ED4 002EFB34 3B 9C FF FF */ addi r28, r28, -1
+/* 802F3ED8 002EFB38 42 00 FF B8 */ bdnz lbl_802F3E90
+lbl_802F3EDC:
+/* 802F3EDC 002EFB3C 3C 60 00 01 */ lis r3, 0x00008000@ha
+/* 802F3EE0 002EFB40 38 06 80 00 */ addi r0, r6, -32768
+/* 802F3EE4 002EFB44 7C 84 28 50 */ subf r4, r4, r5
+/* 802F3EE8 002EFB48 38 63 80 00 */ addi r3, r3, 0x00008000@l
+/* 802F3EEC 002EFB4C 54 00 04 3E */ clrlwi r0, r0, 0x10
+/* 802F3EF0 002EFB50 7C 04 18 00 */ cmpw r4, r3
+/* 802F3EF4 002EFB54 40 80 00 08 */ bge lbl_802F3EFC
+/* 802F3EF8 002EFB58 54 A0 04 3E */ clrlwi r0, r5, 0x10
+lbl_802F3EFC:
+/* 802F3EFC 002EFB5C 90 1F 65 F4 */ stw r0, 0x65f4(r31)
+/* 802F3F00 002EFB60 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F3F04 002EFB64 4B ED 32 69 */ bl _restgpr_25
+/* 802F3F08 002EFB68 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F3F0C 002EFB6C 7C 08 03 A6 */ mtlr r0
+/* 802F3F10 002EFB70 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F3F14 002EFB74 4E 80 00 20 */ blr
+
+.global MPiGetVTsf
+MPiGetVTsf:
+/* 802F3F18 002EFB78 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F3F1C 002EFB7C 7C 08 02 A6 */ mflr r0
+/* 802F3F20 002EFB80 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F3F24 002EFB84 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F3F28 002EFB88 4B ED 31 FD */ bl _savegpr_26
+/* 802F3F2C 002EFB8C 3F 40 80 00 */ lis r26, 0x800000F8@ha
+/* 802F3F30 002EFB90 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3F34 002EFB94 80 1A 00 F8 */ lwz r0, 0x800000F8@l(r26)
+/* 802F3F38 002EFB98 3F 60 43 1C */ lis r27, 0x431BDE83@ha
+/* 802F3F3C 002EFB9C 38 7B DE 83 */ addi r3, r27, 0x431BDE83@l
+/* 802F3F40 002EFBA0 80 BF 6D DC */ lwz r5, 0x6ddc(r31)
+/* 802F3F44 002EFBA4 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F3F48 002EFBA8 80 9F 6D D8 */ lwz r4, 0x6dd8(r31)
+/* 802F3F4C 002EFBAC 7C 03 00 16 */ mulhwu r0, r3, r0
+/* 802F3F50 002EFBB0 3B 80 00 00 */ li r28, 0
+/* 802F3F54 002EFBB4 54 00 8B FE */ srwi r0, r0, 0xf
+/* 802F3F58 002EFBB8 1C 00 19 64 */ mulli r0, r0, 0x1964
+/* 802F3F5C 002EFBBC 54 00 E8 FE */ srwi r0, r0, 3
+/* 802F3F60 002EFBC0 7F A0 28 10 */ subfc r29, r0, r5
+/* 802F3F64 002EFBC4 7F DC 21 10 */ subfe r30, r28, r4
+/* 802F3F68 002EFBC8 4B F7 E8 51 */ bl OSGetTime
+/* 802F3F6C 002EFBCC 6C 65 80 00 */ xoris r5, r3, 0x8000
+/* 802F3F70 002EFBD0 6F C0 80 00 */ xoris r0, r30, 0x8000
+/* 802F3F74 002EFBD4 7C 64 E8 10 */ subfc r3, r4, r29
+/* 802F3F78 002EFBD8 7C A5 01 10 */ subfe r5, r5, r0
+/* 802F3F7C 002EFBDC 7C A0 01 10 */ subfe r5, r0, r0
+/* 802F3F80 002EFBE0 7C A5 00 D1 */ neg. r5, r5
+/* 802F3F84 002EFBE4 41 82 00 28 */ beq lbl_802F3FAC
+/* 802F3F88 002EFBE8 80 1A 00 F8 */ lwz r0, 0xf8(r26)
+/* 802F3F8C 002EFBEC 38 7B DE 83 */ addi r3, r27, -8573
+/* 802F3F90 002EFBF0 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F3F94 002EFBF4 7C 03 00 16 */ mulhwu r0, r3, r0
+/* 802F3F98 002EFBF8 54 00 8B FE */ srwi r0, r0, 0xf
+/* 802F3F9C 002EFBFC 1C 00 41 50 */ mulli r0, r0, 0x4150
+/* 802F3FA0 002EFC00 54 00 E8 FE */ srwi r0, r0, 3
+/* 802F3FA4 002EFC04 7F BD 00 14 */ addc r29, r29, r0
+/* 802F3FA8 002EFC08 7F DE E1 14 */ adde r30, r30, r28
+lbl_802F3FAC:
+/* 802F3FAC 002EFC0C 3C 60 80 00 */ lis r3, 0x800000F8@ha
+/* 802F3FB0 002EFC10 3C 80 43 1C */ lis r4, 0x431BDE83@ha
+/* 802F3FB4 002EFC14 80 03 00 F8 */ lwz r0, 0x800000F8@l(r3)
+/* 802F3FB8 002EFC18 38 A4 DE 83 */ addi r5, r4, 0x431BDE83@l
+/* 802F3FBC 002EFC1C 57 C3 18 38 */ slwi r3, r30, 3
+/* 802F3FC0 002EFC20 57 A4 18 38 */ slwi r4, r29, 3
+/* 802F3FC4 002EFC24 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F3FC8 002EFC28 7C 05 00 16 */ mulhwu r0, r5, r0
+/* 802F3FCC 002EFC2C 53 A3 1F 7E */ rlwimi r3, r29, 3, 0x1d, 0x1f
+/* 802F3FD0 002EFC30 38 A0 00 00 */ li r5, 0
+/* 802F3FD4 002EFC34 54 06 8B FE */ srwi r6, r0, 0xf
+/* 802F3FD8 002EFC38 4B ED 32 A1 */ bl __div2i
+/* 802F3FDC 002EFC3C 80 1F 65 F4 */ lwz r0, 0x65f4(r31)
+/* 802F3FE0 002EFC40 54 84 D0 3E */ rotlwi r4, r4, 0x1a
+/* 802F3FE4 002EFC44 50 64 D0 0A */ rlwimi r4, r3, 0x1a, 0, 5
+/* 802F3FE8 002EFC48 7C 63 36 70 */ srawi r3, r3, 6
+/* 802F3FEC 002EFC4C 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F3FF0 002EFC50 7C 60 20 14 */ addc r3, r0, r4
+/* 802F3FF4 002EFC54 4B ED 31 7D */ bl _restgpr_26
+/* 802F3FF8 002EFC58 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F3FFC 002EFC5C 7C 08 03 A6 */ mtlr r0
+/* 802F4000 002EFC60 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F4004 002EFC64 4E 80 00 20 */ blr
diff --git a/asm/SDK/MP/mpconnection.s b/asm/SDK/MP/mpconnection.s
new file mode 100644
index 0000000..da0381e
--- /dev/null
+++ b/asm/SDK/MP/mpconnection.s
@@ -0,0 +1,620 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MPDisconnect
+MPDisconnect:
+/* 802F1BB8 002ED818 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F1BBC 002ED81C 2C 80 00 00 */ cmpwi cr1, r0, 0
+/* 802F1BC0 002ED820 40 86 00 0C */ bne cr1, lbl_802F1BCC
+/* 802F1BC4 002ED824 38 60 FF 14 */ li r3, -236
+/* 802F1BC8 002ED828 4E 80 00 20 */ blr
+lbl_802F1BCC:
+/* 802F1BCC 002ED82C 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
+/* 802F1BD0 002ED830 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1BD4 002ED834 41 82 00 0C */ beq lbl_802F1BE0
+/* 802F1BD8 002ED838 38 60 FF FF */ li r3, -1
+/* 802F1BDC 002ED83C 4E 80 00 20 */ blr
+lbl_802F1BE0:
+/* 802F1BE0 002ED840 41 86 00 10 */ beq cr1, lbl_802F1BF0
+/* 802F1BE4 002ED844 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1BE8 002ED848 80 84 57 64 */ lwz r4, 0x5764(r4)
+/* 802F1BEC 002ED84C 48 00 00 08 */ b lbl_802F1BF4
+lbl_802F1BF0:
+/* 802F1BF0 002ED850 38 80 00 00 */ li r4, 0
+lbl_802F1BF4:
+/* 802F1BF4 002ED854 38 00 00 01 */ li r0, 1
+/* 802F1BF8 002ED858 7C 00 18 30 */ slw r0, r0, r3
+/* 802F1BFC 002ED85C 7C 80 00 39 */ and. r0, r4, r0
+/* 802F1C00 002ED860 40 82 00 0C */ bne lbl_802F1C0C
+/* 802F1C04 002ED864 38 60 FF 01 */ li r3, -255
+/* 802F1C08 002ED868 4E 80 00 20 */ blr
+lbl_802F1C0C:
+/* 802F1C0C 002ED86C 38 80 00 00 */ li r4, 0
+/* 802F1C10 002ED870 38 A0 00 00 */ li r5, 0
+/* 802F1C14 002ED874 48 00 03 1C */ b MPiDisconnect
+/* 802F1C18 002ED878 4E 80 00 20 */ blr
+
+.global MPDisconnectAll
+MPDisconnectAll:
+/* 802F1C1C 002ED87C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F1C20 002ED880 7C 08 02 A6 */ mflr r0
+/* 802F1C24 002ED884 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F1C28 002ED888 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F1C2C 002ED88C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F1C30 002ED890 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F1C34 002ED894 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F1C38 002ED898 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1C3C 002ED89C 40 82 00 0C */ bne lbl_802F1C48
+/* 802F1C40 002ED8A0 38 60 FF 14 */ li r3, -236
+/* 802F1C44 002ED8A4 48 00 00 74 */ b lbl_802F1CB8
+lbl_802F1C48:
+/* 802F1C48 002ED8A8 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
+/* 802F1C4C 002ED8AC 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1C50 002ED8B0 41 82 00 0C */ beq lbl_802F1C5C
+/* 802F1C54 002ED8B4 38 60 FF FF */ li r3, -1
+/* 802F1C58 002ED8B8 48 00 00 60 */ b lbl_802F1CB8
+lbl_802F1C5C:
+/* 802F1C5C 002ED8BC 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1C60 002ED8C0 3B C0 00 00 */ li r30, 0
+/* 802F1C64 002ED8C4 83 A3 57 60 */ lwz r29, 0x5760(r3)
+/* 802F1C68 002ED8C8 3B E3 57 72 */ addi r31, r3, 0x5772
+lbl_802F1C6C:
+/* 802F1C6C 002ED8CC 7C 1E E8 40 */ cmplw r30, r29
+/* 802F1C70 002ED8D0 41 82 00 34 */ beq lbl_802F1CA4
+/* 802F1C74 002ED8D4 7F E3 FB 78 */ mr r3, r31
+/* 802F1C78 002ED8D8 38 82 AA 38 */ addi r4, r2, lbl_80643038-_SDA2_BASE_
+/* 802F1C7C 002ED8DC 4B FF EE 99 */ bl MPiIsEqualMacAddress
+/* 802F1C80 002ED8E0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1C84 002ED8E4 40 82 00 20 */ bne lbl_802F1CA4
+/* 802F1C88 002ED8E8 7F C3 F3 78 */ mr r3, r30
+/* 802F1C8C 002ED8EC 38 80 00 00 */ li r4, 0
+/* 802F1C90 002ED8F0 38 A0 00 00 */ li r5, 0
+/* 802F1C94 002ED8F4 48 00 02 9D */ bl MPiDisconnect
+/* 802F1C98 002ED8F8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1C9C 002ED8FC 40 80 00 08 */ bge lbl_802F1CA4
+/* 802F1CA0 002ED900 48 00 00 18 */ b lbl_802F1CB8
+lbl_802F1CA4:
+/* 802F1CA4 002ED904 3B DE 00 01 */ addi r30, r30, 1
+/* 802F1CA8 002ED908 3B FF 00 06 */ addi r31, r31, 6
+/* 802F1CAC 002ED90C 28 1E 00 10 */ cmplwi r30, 0x10
+/* 802F1CB0 002ED910 41 80 FF BC */ blt lbl_802F1C6C
+/* 802F1CB4 002ED914 38 60 00 00 */ li r3, 0
+lbl_802F1CB8:
+/* 802F1CB8 002ED918 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F1CBC 002ED91C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F1CC0 002ED920 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F1CC4 002ED924 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F1CC8 002ED928 7C 08 03 A6 */ mtlr r0
+/* 802F1CCC 002ED92C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F1CD0 002ED930 4E 80 00 20 */ blr
+
+.global MPGetLinkLevel
+MPGetLinkLevel:
+/* 802F1CD4 002ED934 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F1CD8 002ED938 7C 08 02 A6 */ mflr r0
+/* 802F1CDC 002ED93C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F1CE0 002ED940 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F1CE4 002ED944 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F1CE8 002ED948 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F1CEC 002ED94C 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802F1CF0 002ED950 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F1CF4 002ED954 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1CF8 002ED958 40 82 00 0C */ bne lbl_802F1D04
+/* 802F1CFC 002ED95C 38 60 FF 14 */ li r3, -236
+/* 802F1D00 002ED960 48 00 00 78 */ b lbl_802F1D78
+lbl_802F1D04:
+/* 802F1D04 002ED964 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
+/* 802F1D08 002ED968 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1D0C 002ED96C 41 82 00 0C */ beq lbl_802F1D18
+/* 802F1D10 002ED970 38 60 FF FF */ li r3, -1
+/* 802F1D14 002ED974 48 00 00 64 */ b lbl_802F1D78
+lbl_802F1D18:
+/* 802F1D18 002ED978 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1D1C 002ED97C 83 C3 57 64 */ lwz r30, 0x5764(r3)
+/* 802F1D20 002ED980 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F1D24 002ED984 40 82 00 0C */ bne lbl_802F1D30
+/* 802F1D28 002ED988 38 60 00 00 */ li r3, 0
+/* 802F1D2C 002ED98C 48 00 00 4C */ b lbl_802F1D78
+lbl_802F1D30:
+/* 802F1D30 002ED990 3B 80 00 04 */ li r28, 4
+/* 802F1D34 002ED994 3B A0 00 00 */ li r29, 0
+/* 802F1D38 002ED998 3B E0 00 01 */ li r31, 1
+lbl_802F1D3C:
+/* 802F1D3C 002ED99C 7F E0 E8 30 */ slw r0, r31, r29
+/* 802F1D40 002ED9A0 7F C0 00 39 */ and. r0, r30, r0
+/* 802F1D44 002ED9A4 41 82 00 18 */ beq lbl_802F1D5C
+/* 802F1D48 002ED9A8 7F A3 EB 78 */ mr r3, r29
+/* 802F1D4C 002ED9AC 48 00 05 E1 */ bl MPiGetLinkLevel
+/* 802F1D50 002ED9B0 7C 03 E0 00 */ cmpw r3, r28
+/* 802F1D54 002ED9B4 40 80 00 08 */ bge lbl_802F1D5C
+/* 802F1D58 002ED9B8 7C 7C 1B 78 */ mr r28, r3
+lbl_802F1D5C:
+/* 802F1D5C 002ED9BC 3B BD 00 01 */ addi r29, r29, 1
+/* 802F1D60 002ED9C0 28 1D 00 10 */ cmplwi r29, 0x10
+/* 802F1D64 002ED9C4 41 80 FF D8 */ blt lbl_802F1D3C
+/* 802F1D68 002ED9C8 2C 1C 00 04 */ cmpwi r28, 4
+/* 802F1D6C 002ED9CC 40 82 00 08 */ bne lbl_802F1D74
+/* 802F1D70 002ED9D0 3B 80 00 00 */ li r28, 0
+lbl_802F1D74:
+/* 802F1D74 002ED9D4 7F 83 E3 78 */ mr r3, r28
+lbl_802F1D78:
+/* 802F1D78 002ED9D8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F1D7C 002ED9DC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F1D80 002ED9E0 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F1D84 002ED9E4 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F1D88 002ED9E8 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802F1D8C 002ED9EC 7C 08 03 A6 */ mtlr r0
+/* 802F1D90 002ED9F0 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F1D94 002ED9F4 4E 80 00 20 */ blr
+
+.global MPGetConnectedAIDs
+MPGetConnectedAIDs:
+/* 802F1D98 002ED9F8 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F1D9C 002ED9FC 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1DA0 002EDA00 41 82 00 10 */ beq lbl_802F1DB0
+/* 802F1DA4 002EDA04 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1DA8 002EDA08 80 63 57 64 */ lwz r3, 0x5764(r3)
+/* 802F1DAC 002EDA0C 4E 80 00 20 */ blr
+lbl_802F1DB0:
+/* 802F1DB0 002EDA10 38 60 00 00 */ li r3, 0
+/* 802F1DB4 002EDA14 4E 80 00 20 */ blr
+
+.global MPiStartupConnection
+MPiStartupConnection:
+/* 802F1DB8 002EDA18 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F1DBC 002EDA1C 7C 08 02 A6 */ mflr r0
+/* 802F1DC0 002EDA20 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1DC4 002EDA24 38 80 00 00 */ li r4, 0
+/* 802F1DC8 002EDA28 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F1DCC 002EDA2C 38 A0 00 60 */ li r5, 0x60
+/* 802F1DD0 002EDA30 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F1DD4 002EDA34 3B E0 00 00 */ li r31, 0
+/* 802F1DD8 002EDA38 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F1DDC 002EDA3C 93 E3 57 64 */ stw r31, 0x5764(r3)
+/* 802F1DE0 002EDA40 38 63 57 72 */ addi r3, r3, 0x5772
+/* 802F1DE4 002EDA44 4B D1 23 21 */ bl memset
+/* 802F1DE8 002EDA48 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1DEC 002EDA4C 38 80 00 00 */ li r4, 0
+/* 802F1DF0 002EDA50 38 A0 00 20 */ li r5, 0x20
+/* 802F1DF4 002EDA54 38 63 65 04 */ addi r3, r3, 0x6504
+/* 802F1DF8 002EDA58 4B D1 23 0D */ bl memset
+/* 802F1DFC 002EDA5C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1E00 002EDA60 38 80 00 00 */ li r4, 0
+/* 802F1E04 002EDA64 38 A0 04 00 */ li r5, 0x400
+/* 802F1E08 002EDA68 38 63 60 84 */ addi r3, r3, 0x6084
+/* 802F1E0C 002EDA6C 4B D1 22 F9 */ bl memset
+/* 802F1E10 002EDA70 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1E14 002EDA74 38 80 00 00 */ li r4, 0
+/* 802F1E18 002EDA78 38 A0 00 40 */ li r5, 0x40
+/* 802F1E1C 002EDA7C 38 63 64 84 */ addi r3, r3, 0x6484
+/* 802F1E20 002EDA80 4B D1 22 E5 */ bl memset
+/* 802F1E24 002EDA84 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1E28 002EDA88 38 80 00 00 */ li r4, 0
+/* 802F1E2C 002EDA8C 38 A0 00 40 */ li r5, 0x40
+/* 802F1E30 002EDA90 38 63 64 C4 */ addi r3, r3, 0x64c4
+/* 802F1E34 002EDA94 4B D1 22 D1 */ bl memset
+/* 802F1E38 002EDA98 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1E3C 002EDA9C 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 802F1E40 002EDAA0 2C 00 00 01 */ cmpwi r0, 1
+/* 802F1E44 002EDAA4 41 82 00 08 */ beq lbl_802F1E4C
+/* 802F1E48 002EDAA8 48 00 00 38 */ b lbl_802F1E80
+lbl_802F1E4C:
+/* 802F1E4C 002EDAAC 4B F7 C9 11 */ bl OSDisableInterrupts
+/* 802F1E50 002EDAB0 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1E54 002EDAB4 7C 7E 1B 78 */ mr r30, r3
+/* 802F1E58 002EDAB8 38 A0 00 06 */ li r5, 6
+/* 802F1E5C 002EDABC 93 E4 57 60 */ stw r31, 0x5760(r4)
+/* 802F1E60 002EDAC0 38 64 57 72 */ addi r3, r4, 0x5772
+/* 802F1E64 002EDAC4 38 84 57 6C */ addi r4, r4, 0x576c
+/* 802F1E68 002EDAC8 4B D1 21 99 */ bl memcpy
+/* 802F1E6C 002EDACC 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1E70 002EDAD0 7F C3 F3 78 */ mr r3, r30
+/* 802F1E74 002EDAD4 B3 E4 65 04 */ sth r31, 0x6504(r4)
+/* 802F1E78 002EDAD8 4B F7 C9 0D */ bl OSRestoreInterrupts
+/* 802F1E7C 002EDADC 48 00 00 0C */ b lbl_802F1E88
+lbl_802F1E80:
+/* 802F1E80 002EDAE0 38 60 FF 01 */ li r3, -255
+/* 802F1E84 002EDAE4 48 00 00 08 */ b lbl_802F1E8C
+lbl_802F1E88:
+/* 802F1E88 002EDAE8 38 60 00 00 */ li r3, 0
+lbl_802F1E8C:
+/* 802F1E8C 002EDAEC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F1E90 002EDAF0 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F1E94 002EDAF4 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F1E98 002EDAF8 7C 08 03 A6 */ mtlr r0
+/* 802F1E9C 002EDAFC 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F1EA0 002EDB00 4E 80 00 20 */ blr
+
+.global MPiCleanupConnection
+MPiCleanupConnection:
+/* 802F1EA4 002EDB04 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F1EA8 002EDB08 7C 08 02 A6 */ mflr r0
+/* 802F1EAC 002EDB0C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F1EB0 002EDB10 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F1EB4 002EDB14 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1EB8 002EDB18 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F1EBC 002EDB1C 41 82 00 60 */ beq lbl_802F1F1C
+/* 802F1EC0 002EDB20 38 00 00 00 */ li r0, 0
+/* 802F1EC4 002EDB24 38 7F 57 72 */ addi r3, r31, 0x5772
+/* 802F1EC8 002EDB28 90 1F 57 60 */ stw r0, 0x5760(r31)
+/* 802F1ECC 002EDB2C 38 80 00 00 */ li r4, 0
+/* 802F1ED0 002EDB30 38 A0 00 60 */ li r5, 0x60
+/* 802F1ED4 002EDB34 90 1F 57 64 */ stw r0, 0x5764(r31)
+/* 802F1ED8 002EDB38 4B D1 22 2D */ bl memset
+/* 802F1EDC 002EDB3C 38 7F 65 04 */ addi r3, r31, 0x6504
+/* 802F1EE0 002EDB40 38 80 00 00 */ li r4, 0
+/* 802F1EE4 002EDB44 38 A0 00 20 */ li r5, 0x20
+/* 802F1EE8 002EDB48 4B D1 22 1D */ bl memset
+/* 802F1EEC 002EDB4C 38 7F 60 84 */ addi r3, r31, 0x6084
+/* 802F1EF0 002EDB50 38 80 00 00 */ li r4, 0
+/* 802F1EF4 002EDB54 38 A0 04 00 */ li r5, 0x400
+/* 802F1EF8 002EDB58 4B D1 22 0D */ bl memset
+/* 802F1EFC 002EDB5C 38 7F 64 84 */ addi r3, r31, 0x6484
+/* 802F1F00 002EDB60 38 80 00 00 */ li r4, 0
+/* 802F1F04 002EDB64 38 A0 00 40 */ li r5, 0x40
+/* 802F1F08 002EDB68 4B D1 21 FD */ bl memset
+/* 802F1F0C 002EDB6C 38 7F 64 C4 */ addi r3, r31, 0x64c4
+/* 802F1F10 002EDB70 38 80 00 00 */ li r4, 0
+/* 802F1F14 002EDB74 38 A0 00 40 */ li r5, 0x40
+/* 802F1F18 002EDB78 4B D1 21 ED */ bl memset
+lbl_802F1F1C:
+/* 802F1F1C 002EDB7C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F1F20 002EDB80 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F1F24 002EDB84 7C 08 03 A6 */ mtlr r0
+/* 802F1F28 002EDB88 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F1F2C 002EDB8C 4E 80 00 20 */ blr
+
+.global MPiDisconnect
+MPiDisconnect:
+/* 802F1F30 002EDB90 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F1F34 002EDB94 7C 08 02 A6 */ mflr r0
+/* 802F1F38 002EDB98 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F1F3C 002EDB9C 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F1F40 002EDBA0 4B ED 51 E1 */ bl _savegpr_25
+/* 802F1F44 002EDBA4 28 03 00 10 */ cmplwi r3, 0x10
+/* 802F1F48 002EDBA8 7C 79 1B 78 */ mr r25, r3
+/* 802F1F4C 002EDBAC 7C BA 2B 78 */ mr r26, r5
+/* 802F1F50 002EDBB0 41 80 00 0C */ blt lbl_802F1F5C
+/* 802F1F54 002EDBB4 38 60 FF 01 */ li r3, -255
+/* 802F1F58 002EDBB8 48 00 00 A8 */ b lbl_802F2000
+lbl_802F1F5C:
+/* 802F1F5C 002EDBBC 2C 04 00 00 */ cmpwi r4, 0
+/* 802F1F60 002EDBC0 3C 60 00 01 */ lis r3, 0x0000F002@ha
+/* 802F1F64 002EDBC4 38 03 F0 02 */ addi r0, r3, 0x0000F002@l
+/* 802F1F68 002EDBC8 41 82 00 08 */ beq lbl_802F1F70
+/* 802F1F6C 002EDBCC 38 03 80 01 */ addi r0, r3, -32767
+lbl_802F1F70:
+/* 802F1F70 002EDBD0 54 1C 04 3E */ clrlwi r28, r0, 0x10
+/* 802F1F74 002EDBD4 4B F7 C7 E9 */ bl OSDisableInterrupts
+/* 802F1F78 002EDBD8 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1F7C 002EDBDC 1F F9 00 06 */ mulli r31, r25, 6
+/* 802F1F80 002EDBE0 7C 7B 1B 78 */ mr r27, r3
+/* 802F1F84 002EDBE4 3B DD 57 72 */ addi r30, r29, 0x5772
+/* 802F1F88 002EDBE8 38 61 00 08 */ addi r3, r1, 8
+/* 802F1F8C 002EDBEC 38 A0 00 06 */ li r5, 6
+/* 802F1F90 002EDBF0 7C 9E FA 14 */ add r4, r30, r31
+/* 802F1F94 002EDBF4 4B D1 20 6D */ bl memcpy
+/* 802F1F98 002EDBF8 57 20 08 3C */ slwi r0, r25, 1
+/* 802F1F9C 002EDBFC 7F 63 DB 78 */ mr r3, r27
+/* 802F1FA0 002EDC00 7C 9D 02 14 */ add r4, r29, r0
+/* 802F1FA4 002EDC04 B3 84 65 04 */ sth r28, 0x6504(r4)
+/* 802F1FA8 002EDC08 4B F7 C7 DD */ bl OSRestoreInterrupts
+/* 802F1FAC 002EDC0C 7C 7E FA 14 */ add r3, r30, r31
+/* 802F1FB0 002EDC10 38 82 AA 38 */ addi r4, r2, lbl_80643038-_SDA2_BASE_
+/* 802F1FB4 002EDC14 4B FF EB 61 */ bl MPiIsEqualMacAddress
+/* 802F1FB8 002EDC18 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1FBC 002EDC1C 41 82 00 0C */ beq lbl_802F1FC8
+/* 802F1FC0 002EDC20 38 60 FF 01 */ li r3, -255
+/* 802F1FC4 002EDC24 48 00 00 3C */ b lbl_802F2000
+lbl_802F1FC8:
+/* 802F1FC8 002EDC28 38 61 00 08 */ addi r3, r1, 8
+/* 802F1FCC 002EDC2C 4B FF F0 79 */ bl MPiDisAssoc
+/* 802F1FD0 002EDC30 3C 03 00 01 */ addis r0, r3, 1
+/* 802F1FD4 002EDC34 7C 7D 1B 78 */ mr r29, r3
+/* 802F1FD8 002EDC38 28 00 FF 01 */ cmplwi r0, 0xff01
+/* 802F1FDC 002EDC3C 40 82 00 08 */ bne lbl_802F1FE4
+/* 802F1FE0 002EDC40 3B 40 00 01 */ li r26, 1
+lbl_802F1FE4:
+/* 802F1FE4 002EDC44 2C 1A 00 00 */ cmpwi r26, 0
+/* 802F1FE8 002EDC48 41 82 00 14 */ beq lbl_802F1FFC
+/* 802F1FEC 002EDC4C 7F 23 CB 78 */ mr r3, r25
+/* 802F1FF0 002EDC50 7F 84 E3 78 */ mr r4, r28
+/* 802F1FF4 002EDC54 38 A1 00 08 */ addi r5, r1, 8
+/* 802F1FF8 002EDC58 48 00 01 61 */ bl MPiProcessDisconnectedNotification
+lbl_802F1FFC:
+/* 802F1FFC 002EDC5C 7F A3 EB 78 */ mr r3, r29
+lbl_802F2000:
+/* 802F2000 002EDC60 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F2004 002EDC64 4B ED 51 69 */ bl _restgpr_25
+/* 802F2008 002EDC68 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F200C 002EDC6C 7C 08 03 A6 */ mtlr r0
+/* 802F2010 002EDC70 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F2014 002EDC74 4E 80 00 20 */ blr
+
+.global MPiProcessConnectedNotification
+MPiProcessConnectedNotification:
+/* 802F2018 002EDC78 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F201C 002EDC7C 7C 08 02 A6 */ mflr r0
+/* 802F2020 002EDC80 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F2024 002EDC84 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F2028 002EDC88 4B ED 50 F9 */ bl _savegpr_25
+/* 802F202C 002EDC8C 28 03 00 10 */ cmplwi r3, 0x10
+/* 802F2030 002EDC90 7C 7A 1B 78 */ mr r26, r3
+/* 802F2034 002EDC94 7C 9B 23 78 */ mr r27, r4
+/* 802F2038 002EDC98 7C BC 2B 78 */ mr r28, r5
+/* 802F203C 002EDC9C 7C DD 33 78 */ mr r29, r6
+/* 802F2040 002EDCA0 3B E0 00 00 */ li r31, 0
+/* 802F2044 002EDCA4 41 80 00 08 */ blt lbl_802F204C
+/* 802F2048 002EDCA8 48 00 00 F8 */ b lbl_802F2140
+lbl_802F204C:
+/* 802F204C 002EDCAC 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2050 002EDCB0 80 03 00 30 */ lwz r0, 0x30(r3)
+/* 802F2054 002EDCB4 2C 00 00 00 */ cmpwi r0, 0
+/* 802F2058 002EDCB8 41 82 00 08 */ beq lbl_802F2060
+/* 802F205C 002EDCBC 3B E0 00 01 */ li r31, 1
+lbl_802F2060:
+/* 802F2060 002EDCC0 4B F7 C6 FD */ bl OSDisableInterrupts
+/* 802F2064 002EDCC4 1C 1A 00 06 */ mulli r0, r26, 6
+/* 802F2068 002EDCC8 80 A2 AA 30 */ lwz r5, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F206C 002EDCCC 7C 7E 1B 78 */ mr r30, r3
+/* 802F2070 002EDCD0 7F 64 DB 78 */ mr r4, r27
+/* 802F2074 002EDCD4 7C 65 02 14 */ add r3, r5, r0
+/* 802F2078 002EDCD8 38 A0 00 06 */ li r5, 6
+/* 802F207C 002EDCDC 38 63 57 72 */ addi r3, r3, 0x5772
+/* 802F2080 002EDCE0 4B D1 1F 81 */ bl memcpy
+/* 802F2084 002EDCE4 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2088 002EDCE8 57 43 08 3C */ slwi r3, r26, 1
+/* 802F208C 002EDCEC 57 40 30 32 */ slwi r0, r26, 6
+/* 802F2090 002EDCF0 3B 20 00 00 */ li r25, 0
+/* 802F2094 002EDCF4 7C A6 1A 14 */ add r5, r6, r3
+/* 802F2098 002EDCF8 38 80 00 00 */ li r4, 0
+/* 802F209C 002EDCFC 7C 66 02 14 */ add r3, r6, r0
+/* 802F20A0 002EDD00 B3 25 65 04 */ sth r25, 0x6504(r5)
+/* 802F20A4 002EDD04 38 63 60 84 */ addi r3, r3, 0x6084
+/* 802F20A8 002EDD08 38 A0 00 40 */ li r5, 0x40
+/* 802F20AC 002EDD0C 4B D1 20 59 */ bl memset
+/* 802F20B0 002EDD10 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F20B4 002EDD14 57 40 10 3A */ slwi r0, r26, 2
+/* 802F20B8 002EDD18 7C 63 02 14 */ add r3, r3, r0
+/* 802F20BC 002EDD1C 93 23 64 84 */ stw r25, 0x6484(r3)
+/* 802F20C0 002EDD20 4B F8 07 11 */ bl OSGetTick
+/* 802F20C4 002EDD24 80 A2 AA 30 */ lwz r5, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F20C8 002EDD28 57 40 10 3A */ slwi r0, r26, 2
+/* 802F20CC 002EDD2C 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F20D0 002EDD30 7C 85 02 14 */ add r4, r5, r0
+/* 802F20D4 002EDD34 90 64 64 C4 */ stw r3, 0x64c4(r4)
+/* 802F20D8 002EDD38 41 82 00 1C */ beq lbl_802F20F4
+/* 802F20DC 002EDD3C 38 00 00 01 */ li r0, 1
+/* 802F20E0 002EDD40 80 65 57 64 */ lwz r3, 0x5764(r5)
+/* 802F20E4 002EDD44 7C 00 D0 30 */ slw r0, r0, r26
+/* 802F20E8 002EDD48 7C 60 03 78 */ or r0, r3, r0
+/* 802F20EC 002EDD4C 90 05 57 64 */ stw r0, 0x5764(r5)
+/* 802F20F0 002EDD50 48 00 00 18 */ b lbl_802F2108
+lbl_802F20F4:
+/* 802F20F4 002EDD54 38 00 00 01 */ li r0, 1
+/* 802F20F8 002EDD58 80 65 57 64 */ lwz r3, 0x5764(r5)
+/* 802F20FC 002EDD5C 7C 00 D0 30 */ slw r0, r0, r26
+/* 802F2100 002EDD60 7C 60 00 78 */ andc r0, r3, r0
+/* 802F2104 002EDD64 90 05 57 64 */ stw r0, 0x5764(r5)
+lbl_802F2108:
+/* 802F2108 002EDD68 7F 43 D3 78 */ mr r3, r26
+/* 802F210C 002EDD6C 48 00 14 C1 */ bl MPiResetPortByAid
+/* 802F2110 002EDD70 7F C3 F3 78 */ mr r3, r30
+/* 802F2114 002EDD74 4B F7 C6 71 */ bl OSRestoreInterrupts
+/* 802F2118 002EDD78 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F211C 002EDD7C 40 82 00 10 */ bne lbl_802F212C
+/* 802F2120 002EDD80 7F 63 DB 78 */ mr r3, r27
+/* 802F2124 002EDD84 4B FF EF 21 */ bl MPiDisAssoc
+/* 802F2128 002EDD88 48 00 00 18 */ b lbl_802F2140
+lbl_802F212C:
+/* 802F212C 002EDD8C 7F 43 D3 78 */ mr r3, r26
+/* 802F2130 002EDD90 7F 64 DB 78 */ mr r4, r27
+/* 802F2134 002EDD94 7F 85 E3 78 */ mr r5, r28
+/* 802F2138 002EDD98 7F A6 EB 78 */ mr r6, r29
+/* 802F213C 002EDD9C 48 00 15 C1 */ bl MPiNotifyConnectedToPort
+lbl_802F2140:
+/* 802F2140 002EDDA0 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F2144 002EDDA4 4B ED 50 29 */ bl _restgpr_25
+/* 802F2148 002EDDA8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F214C 002EDDAC 7C 08 03 A6 */ mtlr r0
+/* 802F2150 002EDDB0 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F2154 002EDDB4 4E 80 00 20 */ blr
+
+.global MPiProcessDisconnectedNotification
+MPiProcessDisconnectedNotification:
+/* 802F2158 002EDDB8 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F215C 002EDDBC 7C 08 02 A6 */ mflr r0
+/* 802F2160 002EDDC0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F2164 002EDDC4 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F2168 002EDDC8 4B ED 4F B1 */ bl _savegpr_23
+/* 802F216C 002EDDCC 28 03 00 10 */ cmplwi r3, 0x10
+/* 802F2170 002EDDD0 7C 78 1B 78 */ mr r24, r3
+/* 802F2174 002EDDD4 7C 99 23 78 */ mr r25, r4
+/* 802F2178 002EDDD8 7C BA 2B 78 */ mr r26, r5
+/* 802F217C 002EDDDC 40 80 00 EC */ bge lbl_802F2268
+/* 802F2180 002EDDE0 4B F7 C5 DD */ bl OSDisableInterrupts
+/* 802F2184 002EDDE4 7C 7B 1B 78 */ mr r27, r3
+/* 802F2188 002EDDE8 7F 03 C3 78 */ mr r3, r24
+/* 802F218C 002EDDEC 48 00 14 41 */ bl MPiResetPortByAid
+/* 802F2190 002EDDF0 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2194 002EDDF4 38 00 00 01 */ li r0, 1
+/* 802F2198 002EDDF8 7C 1F C0 30 */ slw r31, r0, r24
+/* 802F219C 002EDDFC 80 1E 57 64 */ lwz r0, 0x5764(r30)
+/* 802F21A0 002EDE00 7F E3 00 38 */ and r3, r31, r0
+/* 802F21A4 002EDE04 7C 03 00 D0 */ neg r0, r3
+/* 802F21A8 002EDE08 7C 00 1B 78 */ or r0, r0, r3
+/* 802F21AC 002EDE0C 54 1C 0F FF */ rlwinm. r28, r0, 1, 0x1f, 0x1f
+/* 802F21B0 002EDE10 41 82 00 38 */ beq lbl_802F21E8
+/* 802F21B4 002EDE14 1C 18 00 06 */ mulli r0, r24, 6
+/* 802F21B8 002EDE18 7F 44 D3 78 */ mr r4, r26
+/* 802F21BC 002EDE1C 7C 7E 02 14 */ add r3, r30, r0
+/* 802F21C0 002EDE20 38 63 57 72 */ addi r3, r3, 0x5772
+/* 802F21C4 002EDE24 4B FF E9 51 */ bl MPiIsEqualMacAddress
+/* 802F21C8 002EDE28 2C 03 00 00 */ cmpwi r3, 0
+/* 802F21CC 002EDE2C 41 82 00 1C */ beq lbl_802F21E8
+/* 802F21D0 002EDE30 57 00 08 3C */ slwi r0, r24, 1
+/* 802F21D4 002EDE34 7C 7E 02 14 */ add r3, r30, r0
+/* 802F21D8 002EDE38 A0 03 65 04 */ lhz r0, 0x6504(r3)
+/* 802F21DC 002EDE3C 2C 00 00 00 */ cmpwi r0, 0
+/* 802F21E0 002EDE40 41 82 00 08 */ beq lbl_802F21E8
+/* 802F21E4 002EDE44 7C 19 03 78 */ mr r25, r0
+lbl_802F21E8:
+/* 802F21E8 002EDE48 1C 18 00 06 */ mulli r0, r24, 6
+/* 802F21EC 002EDE4C 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F21F0 002EDE50 38 80 00 00 */ li r4, 0
+/* 802F21F4 002EDE54 38 A0 00 06 */ li r5, 6
+/* 802F21F8 002EDE58 7C 7D 02 14 */ add r3, r29, r0
+/* 802F21FC 002EDE5C 38 63 57 72 */ addi r3, r3, 0x5772
+/* 802F2200 002EDE60 4B D1 1F 05 */ bl memset
+/* 802F2204 002EDE64 57 03 08 3C */ slwi r3, r24, 1
+/* 802F2208 002EDE68 3A E0 00 00 */ li r23, 0
+/* 802F220C 002EDE6C 7C 7D 1A 14 */ add r3, r29, r3
+/* 802F2210 002EDE70 57 00 30 32 */ slwi r0, r24, 6
+/* 802F2214 002EDE74 B2 E3 65 04 */ sth r23, 0x6504(r3)
+/* 802F2218 002EDE78 7C 7D 02 14 */ add r3, r29, r0
+/* 802F221C 002EDE7C 38 63 60 84 */ addi r3, r3, 0x6084
+/* 802F2220 002EDE80 38 80 00 00 */ li r4, 0
+/* 802F2224 002EDE84 80 1E 57 64 */ lwz r0, 0x5764(r30)
+/* 802F2228 002EDE88 38 A0 00 40 */ li r5, 0x40
+/* 802F222C 002EDE8C 7C 00 F8 78 */ andc r0, r0, r31
+/* 802F2230 002EDE90 90 1E 57 64 */ stw r0, 0x5764(r30)
+/* 802F2234 002EDE94 4B D1 1E D1 */ bl memset
+/* 802F2238 002EDE98 57 00 10 3A */ slwi r0, r24, 2
+/* 802F223C 002EDE9C 7F 63 DB 78 */ mr r3, r27
+/* 802F2240 002EDEA0 7C 9D 02 14 */ add r4, r29, r0
+/* 802F2244 002EDEA4 92 E4 64 84 */ stw r23, 0x6484(r4)
+/* 802F2248 002EDEA8 92 E4 64 C4 */ stw r23, 0x64c4(r4)
+/* 802F224C 002EDEAC 4B F7 C5 39 */ bl OSRestoreInterrupts
+/* 802F2250 002EDEB0 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F2254 002EDEB4 41 82 00 14 */ beq lbl_802F2268
+/* 802F2258 002EDEB8 7F 03 C3 78 */ mr r3, r24
+/* 802F225C 002EDEBC 7F 24 CB 78 */ mr r4, r25
+/* 802F2260 002EDEC0 7F 45 D3 78 */ mr r5, r26
+/* 802F2264 002EDEC4 48 00 15 79 */ bl MPiNotifyDisconnectedToPort
+lbl_802F2268:
+/* 802F2268 002EDEC8 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F226C 002EDECC 4B ED 4E F9 */ bl _restgpr_23
+/* 802F2270 002EDED0 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F2274 002EDED4 7C 08 03 A6 */ mtlr r0
+/* 802F2278 002EDED8 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F227C 002EDEDC 4E 80 00 20 */ blr
+
+.global MPiAddRssi
+MPiAddRssi:
+/* 802F2280 002EDEE0 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2284 002EDEE4 54 65 10 3A */ slwi r5, r3, 2
+/* 802F2288 002EDEE8 54 60 30 32 */ slwi r0, r3, 6
+/* 802F228C 002EDEEC 7C A6 2A 14 */ add r5, r6, r5
+/* 802F2290 002EDEF0 80 E5 64 84 */ lwz r7, 0x6484(r5)
+/* 802F2294 002EDEF4 7C 66 02 14 */ add r3, r6, r0
+/* 802F2298 002EDEF8 54 E0 10 3A */ slwi r0, r7, 2
+/* 802F229C 002EDEFC 38 E7 00 01 */ addi r7, r7, 1
+/* 802F22A0 002EDF00 7C 63 02 14 */ add r3, r3, r0
+/* 802F22A4 002EDF04 28 07 00 10 */ cmplwi r7, 0x10
+/* 802F22A8 002EDF08 90 83 60 84 */ stw r4, 0x6084(r3)
+/* 802F22AC 002EDF0C 41 80 00 08 */ blt lbl_802F22B4
+/* 802F22B0 002EDF10 38 E0 00 00 */ li r7, 0
+lbl_802F22B4:
+/* 802F22B4 002EDF14 90 E5 64 84 */ stw r7, 0x6484(r5)
+/* 802F22B8 002EDF18 4E 80 00 20 */ blr
+
+.global MPiUpdateLifeTime
+MPiUpdateLifeTime:
+/* 802F22BC 002EDF1C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F22C0 002EDF20 7C 08 02 A6 */ mflr r0
+/* 802F22C4 002EDF24 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F22C8 002EDF28 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F22CC 002EDF2C 7C 7F 1B 78 */ mr r31, r3
+/* 802F22D0 002EDF30 4B F8 05 01 */ bl OSGetTick
+/* 802F22D4 002EDF34 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F22D8 002EDF38 57 E0 10 3A */ slwi r0, r31, 2
+/* 802F22DC 002EDF3C 7C 84 02 14 */ add r4, r4, r0
+/* 802F22E0 002EDF40 90 64 64 C4 */ stw r3, 0x64c4(r4)
+/* 802F22E4 002EDF44 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F22E8 002EDF48 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F22EC 002EDF4C 7C 08 03 A6 */ mtlr r0
+/* 802F22F0 002EDF50 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F22F4 002EDF54 4E 80 00 20 */ blr
+
+.global MPiCompareLifeTime
+MPiCompareLifeTime:
+/* 802F22F8 002EDF58 80 A2 AA 30 */ lwz r5, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F22FC 002EDF5C 54 60 10 3A */ slwi r0, r3, 2
+/* 802F2300 002EDF60 7C 65 02 14 */ add r3, r5, r0
+/* 802F2304 002EDF64 80 03 64 C4 */ lwz r0, 0x64c4(r3)
+/* 802F2308 002EDF68 7C 04 00 50 */ subf r0, r4, r0
+/* 802F230C 002EDF6C 54 03 0F FE */ srwi r3, r0, 0x1f
+/* 802F2310 002EDF70 4E 80 00 20 */ blr
+
+.global MPiProcessLifeTimeExpiration
+MPiProcessLifeTimeExpiration:
+/* 802F2314 002EDF74 38 80 00 01 */ li r4, 1
+/* 802F2318 002EDF78 38 A0 00 00 */ li r5, 0
+/* 802F231C 002EDF7C 4B FF FC 14 */ b MPiDisconnect
+
+.global MPiProcessForcibleLifeTimeExpiration
+MPiProcessForcibleLifeTimeExpiration:
+/* 802F2320 002EDF80 38 80 00 01 */ li r4, 1
+/* 802F2324 002EDF84 38 A0 00 01 */ li r5, 1
+/* 802F2328 002EDF88 4B FF FC 08 */ b MPiDisconnect
+
+.global MPiGetLinkLevel
+MPiGetLinkLevel:
+/* 802F232C 002EDF8C 28 03 00 10 */ cmplwi r3, 0x10
+/* 802F2330 002EDF90 41 80 00 0C */ blt lbl_802F233C
+/* 802F2334 002EDF94 38 60 FF 01 */ li r3, -255
+/* 802F2338 002EDF98 4E 80 00 20 */ blr
+lbl_802F233C:
+/* 802F233C 002EDF9C 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2340 002EDFA0 54 60 30 32 */ slwi r0, r3, 6
+/* 802F2344 002EDFA4 7C A4 02 14 */ add r5, r4, r0
+/* 802F2348 002EDFA8 80 85 60 84 */ lwz r4, 0x6084(r5)
+/* 802F234C 002EDFAC 80 05 60 88 */ lwz r0, 0x6088(r5)
+/* 802F2350 002EDFB0 80 65 60 8C */ lwz r3, 0x608c(r5)
+/* 802F2354 002EDFB4 7C C4 02 14 */ add r6, r4, r0
+/* 802F2358 002EDFB8 80 05 60 90 */ lwz r0, 0x6090(r5)
+/* 802F235C 002EDFBC 7C C6 1A 14 */ add r6, r6, r3
+/* 802F2360 002EDFC0 80 65 60 94 */ lwz r3, 0x6094(r5)
+/* 802F2364 002EDFC4 7C C6 02 14 */ add r6, r6, r0
+/* 802F2368 002EDFC8 80 05 60 98 */ lwz r0, 0x6098(r5)
+/* 802F236C 002EDFCC 7C C6 1A 14 */ add r6, r6, r3
+/* 802F2370 002EDFD0 80 65 60 9C */ lwz r3, 0x609c(r5)
+/* 802F2374 002EDFD4 7C C6 02 14 */ add r6, r6, r0
+/* 802F2378 002EDFD8 80 05 60 A0 */ lwz r0, 0x60a0(r5)
+/* 802F237C 002EDFDC 7C C6 1A 14 */ add r6, r6, r3
+/* 802F2380 002EDFE0 80 85 60 A4 */ lwz r4, 0x60a4(r5)
+/* 802F2384 002EDFE4 7C C6 02 14 */ add r6, r6, r0
+/* 802F2388 002EDFE8 80 05 60 A8 */ lwz r0, 0x60a8(r5)
+/* 802F238C 002EDFEC 7C C6 22 14 */ add r6, r6, r4
+/* 802F2390 002EDFF0 80 65 60 AC */ lwz r3, 0x60ac(r5)
+/* 802F2394 002EDFF4 7C C6 02 14 */ add r6, r6, r0
+/* 802F2398 002EDFF8 80 05 60 B0 */ lwz r0, 0x60b0(r5)
+/* 802F239C 002EDFFC 7C C6 1A 14 */ add r6, r6, r3
+/* 802F23A0 002EE000 80 65 60 B4 */ lwz r3, 0x60b4(r5)
+/* 802F23A4 002EE004 7C C6 02 14 */ add r6, r6, r0
+/* 802F23A8 002EE008 80 05 60 B8 */ lwz r0, 0x60b8(r5)
+/* 802F23AC 002EE00C 7C C6 1A 14 */ add r6, r6, r3
+/* 802F23B0 002EE010 80 65 60 BC */ lwz r3, 0x60bc(r5)
+/* 802F23B4 002EE014 7C C6 02 14 */ add r6, r6, r0
+/* 802F23B8 002EE018 80 05 60 C0 */ lwz r0, 0x60c0(r5)
+/* 802F23BC 002EE01C 7C C6 1A 14 */ add r6, r6, r3
+/* 802F23C0 002EE020 7C C6 02 14 */ add r6, r6, r0
+/* 802F23C4 002EE024 7C C0 26 70 */ srawi r0, r6, 4
+/* 802F23C8 002EE028 7C C0 01 94 */ addze r6, r0
+/* 802F23CC 002EE02C 2C 06 00 BD */ cmpwi r6, 0xbd
+/* 802F23D0 002EE030 41 80 00 0C */ blt lbl_802F23DC
+/* 802F23D4 002EE034 38 60 00 03 */ li r3, 3
+/* 802F23D8 002EE038 4E 80 00 20 */ blr
+lbl_802F23DC:
+/* 802F23DC 002EE03C 2C 06 00 B4 */ cmpwi r6, 0xb4
+/* 802F23E0 002EE040 41 80 00 0C */ blt lbl_802F23EC
+/* 802F23E4 002EE044 38 60 00 02 */ li r3, 2
+/* 802F23E8 002EE048 4E 80 00 20 */ blr
+lbl_802F23EC:
+/* 802F23EC 002EE04C 7C C3 FE 70 */ srawi r3, r6, 0x1f
+/* 802F23F0 002EE050 38 00 00 B0 */ li r0, 0xb0
+/* 802F23F4 002EE054 7C 00 30 10 */ subfc r0, r0, r6
+/* 802F23F8 002EE058 38 00 00 00 */ li r0, 0
+/* 802F23FC 002EE05C 7C 63 01 14 */ adde r3, r3, r0
+/* 802F2400 002EE060 4E 80 00 20 */ blr
diff --git a/asm/SDK/MP/mpmisc.s b/asm/SDK/MP/mpmisc.s
new file mode 100644
index 0000000..ba008c7
--- /dev/null
+++ b/asm/SDK/MP/mpmisc.s
@@ -0,0 +1,117 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MPSetUserGameInfo
+MPSetUserGameInfo:
+/* 802F1234 002ECE94 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F1238 002ECE98 7C 08 02 A6 */ mflr r0
+/* 802F123C 002ECE9C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F1240 002ECEA0 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F1244 002ECEA4 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F1248 002ECEA8 7C 9E 23 78 */ mr r30, r4
+/* 802F124C 002ECEAC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F1250 002ECEB0 7C 7D 1B 78 */ mr r29, r3
+/* 802F1254 002ECEB4 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F1258 002ECEB8 2C 00 00 00 */ cmpwi r0, 0
+/* 802F125C 002ECEBC 40 82 00 0C */ bne lbl_802F1268
+/* 802F1260 002ECEC0 38 60 FF 14 */ li r3, -236
+/* 802F1264 002ECEC4 48 00 00 88 */ b lbl_802F12EC
+lbl_802F1268:
+/* 802F1268 002ECEC8 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
+/* 802F126C 002ECECC 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1270 002ECED0 41 82 00 0C */ beq lbl_802F127C
+/* 802F1274 002ECED4 38 60 FF FF */ li r3, -1
+/* 802F1278 002ECED8 48 00 00 74 */ b lbl_802F12EC
+lbl_802F127C:
+/* 802F127C 002ECEDC 28 04 00 70 */ cmplwi r4, 0x70
+/* 802F1280 002ECEE0 40 81 00 0C */ ble lbl_802F128C
+/* 802F1284 002ECEE4 38 60 FF 01 */ li r3, -255
+/* 802F1288 002ECEE8 48 00 00 64 */ b lbl_802F12EC
+lbl_802F128C:
+/* 802F128C 002ECEEC 38 00 00 00 */ li r0, 0
+/* 802F1290 002ECEF0 7C 03 00 40 */ cmplw r3, r0
+/* 802F1294 002ECEF4 40 82 00 0C */ bne lbl_802F12A0
+/* 802F1298 002ECEF8 38 60 FF 01 */ li r3, -255
+/* 802F129C 002ECEFC 48 00 00 50 */ b lbl_802F12EC
+lbl_802F12A0:
+/* 802F12A0 002ECF00 4B F7 D4 BD */ bl OSDisableInterrupts
+/* 802F12A4 002ECF04 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F12A8 002ECF08 7C 7F 1B 78 */ mr r31, r3
+/* 802F12AC 002ECF0C 7F A4 EB 78 */ mr r4, r29
+/* 802F12B0 002ECF10 7F C5 F3 78 */ mr r5, r30
+/* 802F12B4 002ECF14 93 C6 00 3C */ stw r30, 0x3c(r6)
+/* 802F12B8 002ECF18 38 66 00 40 */ addi r3, r6, 0x40
+/* 802F12BC 002ECF1C 4B D1 2D 45 */ bl memcpy
+/* 802F12C0 002ECF20 28 1E 00 70 */ cmplwi r30, 0x70
+/* 802F12C4 002ECF24 40 80 00 1C */ bge lbl_802F12E0
+/* 802F12C8 002ECF28 80 02 AA 30 */ lwz r0, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F12CC 002ECF2C 20 BE 00 70 */ subfic r5, r30, 0x70
+/* 802F12D0 002ECF30 38 80 00 00 */ li r4, 0
+/* 802F12D4 002ECF34 7C 60 F2 14 */ add r3, r0, r30
+/* 802F12D8 002ECF38 38 63 00 40 */ addi r3, r3, 0x40
+/* 802F12DC 002ECF3C 4B D1 2E 29 */ bl memset
+lbl_802F12E0:
+/* 802F12E0 002ECF40 7F E3 FB 78 */ mr r3, r31
+/* 802F12E4 002ECF44 4B F7 D4 A1 */ bl OSRestoreInterrupts
+/* 802F12E8 002ECF48 38 60 00 00 */ li r3, 0
+lbl_802F12EC:
+/* 802F12EC 002ECF4C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F12F0 002ECF50 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F12F4 002ECF54 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F12F8 002ECF58 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F12FC 002ECF5C 7C 08 03 A6 */ mtlr r0
+/* 802F1300 002ECF60 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F1304 002ECF64 4E 80 00 20 */ blr
+
+.global MPSetEntryFlag
+MPSetEntryFlag:
+/* 802F1308 002ECF68 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F130C 002ECF6C 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1310 002ECF70 40 82 00 0C */ bne lbl_802F131C
+/* 802F1314 002ECF74 38 60 FF 14 */ li r3, -236
+/* 802F1318 002ECF78 4E 80 00 20 */ blr
+lbl_802F131C:
+/* 802F131C 002ECF7C 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
+/* 802F1320 002ECF80 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1324 002ECF84 41 82 00 0C */ beq lbl_802F1330
+/* 802F1328 002ECF88 38 60 FF FF */ li r3, -1
+/* 802F132C 002ECF8C 4E 80 00 20 */ blr
+lbl_802F1330:
+/* 802F1330 002ECF90 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1334 002ECF94 41 82 00 0C */ beq lbl_802F1340
+/* 802F1338 002ECF98 38 00 00 01 */ li r0, 1
+/* 802F133C 002ECF9C 48 00 00 08 */ b lbl_802F1344
+lbl_802F1340:
+/* 802F1340 002ECFA0 38 00 00 00 */ li r0, 0
+lbl_802F1344:
+/* 802F1344 002ECFA4 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1348 002ECFA8 38 60 00 00 */ li r3, 0
+/* 802F134C 002ECFAC 90 04 00 30 */ stw r0, 0x30(r4)
+/* 802F1350 002ECFB0 4E 80 00 20 */ blr
+
+.global MPiSetMultiBootFlag
+MPiSetMultiBootFlag:
+/* 802F1354 002ECFB4 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F1358 002ECFB8 2C 00 00 00 */ cmpwi r0, 0
+/* 802F135C 002ECFBC 40 82 00 0C */ bne lbl_802F1368
+/* 802F1360 002ECFC0 38 60 FF 14 */ li r3, -236
+/* 802F1364 002ECFC4 4E 80 00 20 */ blr
+lbl_802F1368:
+/* 802F1368 002ECFC8 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
+/* 802F136C 002ECFCC 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1370 002ECFD0 41 82 00 0C */ beq lbl_802F137C
+/* 802F1374 002ECFD4 38 60 FF FF */ li r3, -1
+/* 802F1378 002ECFD8 4E 80 00 20 */ blr
+lbl_802F137C:
+/* 802F137C 002ECFDC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1380 002ECFE0 41 82 00 0C */ beq lbl_802F138C
+/* 802F1384 002ECFE4 38 00 00 01 */ li r0, 1
+/* 802F1388 002ECFE8 48 00 00 08 */ b lbl_802F1390
+lbl_802F138C:
+/* 802F138C 002ECFEC 38 00 00 00 */ li r0, 0
+lbl_802F1390:
+/* 802F1390 002ECFF0 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1394 002ECFF4 38 60 00 00 */ li r3, 0
+/* 802F1398 002ECFF8 90 04 00 34 */ stw r0, 0x34(r4)
+/* 802F139C 002ECFFC 4E 80 00 20 */ blr
diff --git a/asm/SDK/MP/mpnotification.s b/asm/SDK/MP/mpnotification.s
new file mode 100644
index 0000000..ea152fc
--- /dev/null
+++ b/asm/SDK/MP/mpnotification.s
@@ -0,0 +1,138 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MPiStartupNotification
+MPiStartupNotification:
+/* 802F3158 002EEDB8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F315C 002EEDBC 7C 08 02 A6 */ mflr r0
+/* 802F3160 002EEDC0 38 80 00 00 */ li r4, 0
+/* 802F3164 002EEDC4 38 A0 10 00 */ li r5, 0x1000
+/* 802F3168 002EEDC8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F316C 002EEDCC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F3170 002EEDD0 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3174 002EEDD4 38 7F 21 40 */ addi r3, r31, 0x2140
+/* 802F3178 002EEDD8 4B D1 0F 8D */ bl memset
+/* 802F317C 002EEDDC 38 7F 6F C8 */ addi r3, r31, 0x6fc8
+/* 802F3180 002EEDE0 38 80 00 00 */ li r4, 0
+/* 802F3184 002EEDE4 38 A0 03 18 */ li r5, 0x318
+/* 802F3188 002EEDE8 4B D1 0F 7D */ bl memset
+/* 802F318C 002EEDEC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F3190 002EEDF0 38 60 00 00 */ li r3, 0
+/* 802F3194 002EEDF4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F3198 002EEDF8 7C 08 03 A6 */ mtlr r0
+/* 802F319C 002EEDFC 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F31A0 002EEE00 4E 80 00 20 */ blr
+
+.global MPiStartupNotificationLater
+MPiStartupNotificationLater:
+/* 802F31A4 002EEE04 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F31A8 002EEE08 7C 08 02 A6 */ mflr r0
+/* 802F31AC 002EEE0C 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F31B0 002EEE10 3C 80 80 2F */ lis r4, HandleNotification@ha
+/* 802F31B4 002EEE14 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F31B8 002EEE18 38 84 32 68 */ addi r4, r4, HandleNotification@l
+/* 802F31BC 002EEE1C 38 A0 00 00 */ li r5, 0
+/* 802F31C0 002EEE20 38 66 6F C8 */ addi r3, r6, 0x6fc8
+/* 802F31C4 002EEE24 81 06 00 08 */ lwz r8, 8(r6)
+/* 802F31C8 002EEE28 38 C6 31 40 */ addi r6, r6, 0x3140
+/* 802F31CC 002EEE2C 38 E0 10 00 */ li r7, 0x1000
+/* 802F31D0 002EEE30 39 20 00 00 */ li r9, 0
+/* 802F31D4 002EEE34 39 08 00 02 */ addi r8, r8, 2
+/* 802F31D8 002EEE38 4B F7 E7 09 */ bl OSCreateThread
+/* 802F31DC 002EEE3C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F31E0 002EEE40 40 82 00 0C */ bne lbl_802F31EC
+/* 802F31E4 002EEE44 38 60 FF 11 */ li r3, -239
+/* 802F31E8 002EEE48 48 00 00 14 */ b lbl_802F31FC
+lbl_802F31EC:
+/* 802F31EC 002EEE4C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F31F0 002EEE50 38 63 6F C8 */ addi r3, r3, 0x6fc8
+/* 802F31F4 002EEE54 4B F7 ED 55 */ bl OSResumeThread
+/* 802F31F8 002EEE58 38 60 00 00 */ li r3, 0
+lbl_802F31FC:
+/* 802F31FC 002EEE5C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F3200 002EEE60 7C 08 03 A6 */ mtlr r0
+/* 802F3204 002EEE64 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F3208 002EEE68 4E 80 00 20 */ blr
+
+.global MPiCleanupNotificationEarlier
+MPiCleanupNotificationEarlier:
+/* 802F320C 002EEE6C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F3210 002EEE70 7C 08 02 A6 */ mflr r0
+/* 802F3214 002EEE74 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F3218 002EEE78 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F321C 002EEE7C 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3220 002EEE80 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F3224 002EEE84 41 82 00 2C */ beq lbl_802F3250
+/* 802F3228 002EEE88 A0 1F 72 90 */ lhz r0, 0x7290(r31)
+/* 802F322C 002EEE8C 2C 00 00 00 */ cmpwi r0, 0
+/* 802F3230 002EEE90 41 82 00 10 */ beq lbl_802F3240
+/* 802F3234 002EEE94 38 7F 6F C8 */ addi r3, r31, 0x6fc8
+/* 802F3238 002EEE98 38 80 00 00 */ li r4, 0
+/* 802F323C 002EEE9C 4B F7 EB CD */ bl OSJoinThread
+lbl_802F3240:
+/* 802F3240 002EEEA0 38 7F 6F C8 */ addi r3, r31, 0x6fc8
+/* 802F3244 002EEEA4 38 80 00 00 */ li r4, 0
+/* 802F3248 002EEEA8 38 A0 03 18 */ li r5, 0x318
+/* 802F324C 002EEEAC 4B D1 0E B9 */ bl memset
+lbl_802F3250:
+/* 802F3250 002EEEB0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F3254 002EEEB4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F3258 002EEEB8 7C 08 03 A6 */ mtlr r0
+/* 802F325C 002EEEBC 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F3260 002EEEC0 4E 80 00 20 */ blr
+
+.global MPiCleanupNotification
+MPiCleanupNotification:
+/* 802F3264 002EEEC4 4E 80 00 20 */ blr
+
+HandleNotification:
+/* 802F3268 002EEEC8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F326C 002EEECC 7C 08 02 A6 */ mflr r0
+/* 802F3270 002EEED0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F3274 002EEED4 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F3278 002EEED8 3F E0 80 44 */ lis r31, 0x8044
+/* 802F327C 002EEEDC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F3280 002EEEE0 3F C0 80 58 */ lis r30, lbl_80579160@ha
+/* 802F3284 002EEEE4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F3288 002EEEE8 3B BE 91 60 */ addi r29, r30, lbl_80579160@l
+lbl_802F328C:
+/* 802F328C 002EEEEC 38 7E 91 60 */ addi r3, r30, -28320
+/* 802F3290 002EEEF0 4B FF B0 FD */ bl WD_ReceiveNotification
+/* 802F3294 002EEEF4 3C 03 80 00 */ addis r0, r3, 0x8000
+/* 802F3298 002EEEF8 28 00 80 00 */ cmplwi r0, 0x8000
+/* 802F329C 002EEEFC 40 82 00 08 */ bne lbl_802F32A4
+/* 802F32A0 002EEF00 48 00 00 60 */ b lbl_802F3300
+lbl_802F32A4:
+/* 802F32A4 002EEF04 80 1D 00 00 */ lwz r0, 0(r29)
+/* 802F32A8 002EEF08 28 00 00 06 */ cmplwi r0, 6
+/* 802F32AC 002EEF0C 41 81 FF E0 */ bgt lbl_802F328C
+/* 802F32B0 002EEF10 38 7F 5C 88 */ addi r3, r31, 0x5c88
+/* 802F32B4 002EEF14 54 00 10 3A */ slwi r0, r0, 2
+/* 802F32B8 002EEF18 7C 63 00 2E */ lwzx r3, r3, r0
+/* 802F32BC 002EEF1C 7C 69 03 A6 */ mtctr r3
+/* 802F32C0 002EEF20 4E 80 04 20 */ bctr
+/* 802F32C4 002EEF24 38 9D 00 08 */ addi r4, r29, 8
+/* 802F32C8 002EEF28 A0 7D 00 0E */ lhz r3, 0xe(r29)
+/* 802F32CC 002EEF2C A0 DD 00 10 */ lhz r6, 0x10(r29)
+/* 802F32D0 002EEF30 38 A4 00 0C */ addi r5, r4, 0xc
+/* 802F32D4 002EEF34 4B FF ED 45 */ bl MPiProcessConnectedNotification
+/* 802F32D8 002EEF38 4B FF FF B4 */ b lbl_802F328C
+/* 802F32DC 002EEF3C A0 7D 00 0E */ lhz r3, 0xe(r29)
+/* 802F32E0 002EEF40 38 BD 00 08 */ addi r5, r29, 8
+/* 802F32E4 002EEF44 A0 9D 00 10 */ lhz r4, 0x10(r29)
+/* 802F32E8 002EEF48 4B FF EE 71 */ bl MPiProcessDisconnectedNotification
+/* 802F32EC 002EEF4C 4B FF FF A0 */ b lbl_802F328C
+/* 802F32F0 002EEF50 48 00 08 E5 */ bl MPiProcessBeaconSentNotification
+/* 802F32F4 002EEF54 4B FF FF 98 */ b lbl_802F328C
+/* 802F32F8 002EEF58 4B FF F5 61 */ bl MPiProcessParentDataSendError
+/* 802F32FC 002EEF5C 4B FF FF 90 */ b lbl_802F328C
+lbl_802F3300:
+/* 802F3300 002EEF60 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F3304 002EEF64 38 60 00 00 */ li r3, 0
+/* 802F3308 002EEF68 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F330C 002EEF6C 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F3310 002EEF70 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F3314 002EEF74 7C 08 03 A6 */ mtlr r0
+/* 802F3318 002EEF78 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F331C 002EEF7C 4E 80 00 20 */ blr
diff --git a/asm/SDK/MP/mpparent.s b/asm/SDK/MP/mpparent.s
new file mode 100644
index 0000000..8f046a0
--- /dev/null
+++ b/asm/SDK/MP/mpparent.s
@@ -0,0 +1,944 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MPiStartupParent
+MPiStartupParent:
+/* 802F2404 002EE064 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F2408 002EE068 7C 08 02 A6 */ mflr r0
+/* 802F240C 002EE06C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F2410 002EE070 38 00 00 00 */ li r0, 0
+/* 802F2414 002EE074 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F2418 002EE078 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F241C 002EE07C 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2420 002EE080 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F2424 002EE084 38 7E 6D 08 */ addi r3, r30, 0x6d08
+/* 802F2428 002EE088 90 1E 6D E0 */ stw r0, 0x6de0(r30)
+/* 802F242C 002EE08C 4B F7 72 F9 */ bl OSCreateAlarm
+/* 802F2430 002EE090 38 7E 6D 38 */ addi r3, r30, 0x6d38
+/* 802F2434 002EE094 4B F7 72 F1 */ bl OSCreateAlarm
+/* 802F2438 002EE098 38 7E 6D 68 */ addi r3, r30, 0x6d68
+/* 802F243C 002EE09C 4B F7 72 E9 */ bl OSCreateAlarm
+/* 802F2440 002EE0A0 38 7E 6D A4 */ addi r3, r30, 0x6da4
+/* 802F2444 002EE0A4 38 80 00 00 */ li r4, 0
+/* 802F2448 002EE0A8 4B F7 EA 21 */ bl OSInitSemaphore
+/* 802F244C 002EE0AC 38 7E 6D 98 */ addi r3, r30, 0x6d98
+/* 802F2450 002EE0B0 38 80 00 00 */ li r4, 0
+/* 802F2454 002EE0B4 4B F7 EA 15 */ bl OSInitSemaphore
+/* 802F2458 002EE0B8 38 7E 6D B0 */ addi r3, r30, 0x6db0
+/* 802F245C 002EE0BC 38 9E 6D D0 */ addi r4, r30, 0x6dd0
+/* 802F2460 002EE0C0 38 A0 00 01 */ li r5, 1
+/* 802F2464 002EE0C4 4B F7 CA 95 */ bl OSInitMessageQueue
+/* 802F2468 002EE0C8 38 7E 66 14 */ addi r3, r30, 0x6614
+/* 802F246C 002EE0CC 38 9E 66 34 */ addi r4, r30, 0x6634
+/* 802F2470 002EE0D0 38 A0 00 20 */ li r5, 0x20
+/* 802F2474 002EE0D4 4B F7 CA 85 */ bl OSInitMessageQueue
+/* 802F2478 002EE0D8 38 7E 66 B4 */ addi r3, r30, 0x66b4
+/* 802F247C 002EE0DC 38 9E 66 D4 */ addi r4, r30, 0x66d4
+/* 802F2480 002EE0E0 38 A0 00 01 */ li r5, 1
+/* 802F2484 002EE0E4 4B F7 CA 75 */ bl OSInitMessageQueue
+/* 802F2488 002EE0E8 3B FE 74 58 */ addi r31, r30, 0x7458
+/* 802F248C 002EE0EC 38 80 00 00 */ li r4, 0
+/* 802F2490 002EE0F0 7F E3 FB 78 */ mr r3, r31
+/* 802F2494 002EE0F4 38 A0 00 80 */ li r5, 0x80
+/* 802F2498 002EE0F8 4B D1 1C 6D */ bl memset
+/* 802F249C 002EE0FC 3B BE 74 38 */ addi r29, r30, 0x7438
+/* 802F24A0 002EE100 7F E4 FB 78 */ mr r4, r31
+/* 802F24A4 002EE104 7F A3 EB 78 */ mr r3, r29
+/* 802F24A8 002EE108 38 A0 00 20 */ li r5, 0x20
+/* 802F24AC 002EE10C 4B F7 CA 4D */ bl OSInitMessageQueue
+/* 802F24B0 002EE110 3B DE 73 38 */ addi r30, r30, 0x7338
+/* 802F24B4 002EE114 38 80 00 00 */ li r4, 0
+/* 802F24B8 002EE118 7F C3 F3 78 */ mr r3, r30
+/* 802F24BC 002EE11C 38 A0 01 00 */ li r5, 0x100
+/* 802F24C0 002EE120 4B D1 1C 45 */ bl memset
+/* 802F24C4 002EE124 3B E0 00 00 */ li r31, 0
+lbl_802F24C8:
+/* 802F24C8 002EE128 7F A3 EB 78 */ mr r3, r29
+/* 802F24CC 002EE12C 7F C4 F3 78 */ mr r4, r30
+/* 802F24D0 002EE130 38 A0 00 00 */ li r5, 0
+/* 802F24D4 002EE134 4B F7 CA 85 */ bl OSSendMessage
+/* 802F24D8 002EE138 3B FF 00 01 */ addi r31, r31, 1
+/* 802F24DC 002EE13C 3B DE 00 08 */ addi r30, r30, 8
+/* 802F24E0 002EE140 2C 1F 00 20 */ cmpwi r31, 0x20
+/* 802F24E4 002EE144 41 80 FF E4 */ blt lbl_802F24C8
+/* 802F24E8 002EE148 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F24EC 002EE14C 38 80 00 00 */ li r4, 0
+/* 802F24F0 002EE150 38 A0 10 00 */ li r5, 0x1000
+/* 802F24F4 002EE154 38 7D 01 40 */ addi r3, r29, 0x140
+/* 802F24F8 002EE158 4B D1 1C 0D */ bl memset
+/* 802F24FC 002EE15C 38 7D 66 D8 */ addi r3, r29, 0x66d8
+/* 802F2500 002EE160 38 80 00 00 */ li r4, 0
+/* 802F2504 002EE164 38 A0 03 18 */ li r5, 0x318
+/* 802F2508 002EE168 4B D1 1B FD */ bl memset
+/* 802F250C 002EE16C 38 7D 11 40 */ addi r3, r29, 0x1140
+/* 802F2510 002EE170 38 80 00 00 */ li r4, 0
+/* 802F2514 002EE174 38 A0 10 00 */ li r5, 0x1000
+/* 802F2518 002EE178 4B D1 1B ED */ bl memset
+/* 802F251C 002EE17C 38 7D 69 F0 */ addi r3, r29, 0x69f0
+/* 802F2520 002EE180 38 80 00 00 */ li r4, 0
+/* 802F2524 002EE184 38 A0 03 18 */ li r5, 0x318
+/* 802F2528 002EE188 4B D1 1B DD */ bl memset
+/* 802F252C 002EE18C 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F2530 002EE190 38 60 00 00 */ li r3, 0
+/* 802F2534 002EE194 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F2538 002EE198 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F253C 002EE19C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F2540 002EE1A0 7C 08 03 A6 */ mtlr r0
+/* 802F2544 002EE1A4 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F2548 002EE1A8 4E 80 00 20 */ blr
+
+.global MPiStartupParentLater
+MPiStartupParentLater:
+/* 802F254C 002EE1AC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F2550 002EE1B0 7C 08 02 A6 */ mflr r0
+/* 802F2554 002EE1B4 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2558 002EE1B8 3C 80 80 2F */ lis r4, HandleMPEndIndication@ha
+/* 802F255C 002EE1BC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F2560 002EE1C0 38 84 28 AC */ addi r4, r4, HandleMPEndIndication@l
+/* 802F2564 002EE1C4 38 A0 00 00 */ li r5, 0
+/* 802F2568 002EE1C8 38 66 66 D8 */ addi r3, r6, 0x66d8
+/* 802F256C 002EE1CC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F2570 002EE1D0 38 E0 10 00 */ li r7, 0x1000
+/* 802F2574 002EE1D4 39 20 00 00 */ li r9, 0
+/* 802F2578 002EE1D8 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F257C 002EE1DC 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F2580 002EE1E0 81 06 00 08 */ lwz r8, 8(r6)
+/* 802F2584 002EE1E4 38 C6 11 40 */ addi r6, r6, 0x1140
+/* 802F2588 002EE1E8 39 08 00 01 */ addi r8, r8, 1
+/* 802F258C 002EE1EC 4B F7 F3 55 */ bl OSCreateThread
+/* 802F2590 002EE1F0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F2594 002EE1F4 40 82 00 0C */ bne lbl_802F25A0
+/* 802F2598 002EE1F8 38 60 FF 11 */ li r3, -239
+/* 802F259C 002EE1FC 48 00 01 A8 */ b lbl_802F2744
+lbl_802F25A0:
+/* 802F25A0 002EE200 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F25A4 002EE204 38 63 66 D8 */ addi r3, r3, 0x66d8
+/* 802F25A8 002EE208 4B F7 F9 A1 */ bl OSResumeThread
+/* 802F25AC 002EE20C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F25B0 002EE210 38 80 00 00 */ li r4, 0
+/* 802F25B4 002EE214 38 A0 00 80 */ li r5, 0x80
+/* 802F25B8 002EE218 38 63 74 58 */ addi r3, r3, 0x7458
+/* 802F25BC 002EE21C 4B D1 1B 49 */ bl memset
+/* 802F25C0 002EE220 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F25C4 002EE224 38 A0 00 20 */ li r5, 0x20
+/* 802F25C8 002EE228 38 64 74 38 */ addi r3, r4, 0x7438
+/* 802F25CC 002EE22C 38 84 74 58 */ addi r4, r4, 0x7458
+/* 802F25D0 002EE230 4B F7 C9 29 */ bl OSInitMessageQueue
+/* 802F25D4 002EE234 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F25D8 002EE238 38 80 00 00 */ li r4, 0
+/* 802F25DC 002EE23C 38 A0 01 00 */ li r5, 0x100
+/* 802F25E0 002EE240 38 63 73 38 */ addi r3, r3, 0x7338
+/* 802F25E4 002EE244 4B D1 1B 21 */ bl memset
+/* 802F25E8 002EE248 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F25EC 002EE24C 3B A0 00 00 */ li r29, 0
+/* 802F25F0 002EE250 3B E0 00 00 */ li r31, 0
+lbl_802F25F4:
+/* 802F25F4 002EE254 7C 9E FA 14 */ add r4, r30, r31
+/* 802F25F8 002EE258 38 7E 74 38 */ addi r3, r30, 0x7438
+/* 802F25FC 002EE25C 38 84 73 38 */ addi r4, r4, 0x7338
+/* 802F2600 002EE260 38 A0 00 00 */ li r5, 0
+/* 802F2604 002EE264 4B F7 C9 55 */ bl OSSendMessage
+/* 802F2608 002EE268 3B BD 00 01 */ addi r29, r29, 1
+/* 802F260C 002EE26C 3B FF 00 08 */ addi r31, r31, 8
+/* 802F2610 002EE270 2C 1D 00 20 */ cmpwi r29, 0x20
+/* 802F2614 002EE274 41 80 FF E0 */ blt lbl_802F25F4
+/* 802F2618 002EE278 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+lbl_802F261C:
+/* 802F261C 002EE27C 38 7E 66 14 */ addi r3, r30, 0x6614
+/* 802F2620 002EE280 38 81 00 08 */ addi r4, r1, 8
+/* 802F2624 002EE284 38 A0 00 00 */ li r5, 0
+/* 802F2628 002EE288 4B F7 C9 F9 */ bl OSReceiveMessage
+/* 802F262C 002EE28C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F2630 002EE290 40 82 FF EC */ bne lbl_802F261C
+/* 802F2634 002EE294 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2638 002EE298 3C 80 80 2F */ lis r4, HandleMPSequence@ha
+/* 802F263C 002EE29C 38 84 29 58 */ addi r4, r4, HandleMPSequence@l
+/* 802F2640 002EE2A0 38 A0 00 00 */ li r5, 0
+/* 802F2644 002EE2A4 81 06 00 08 */ lwz r8, 8(r6)
+/* 802F2648 002EE2A8 38 66 69 F0 */ addi r3, r6, 0x69f0
+/* 802F264C 002EE2AC 38 C6 21 40 */ addi r6, r6, 0x2140
+/* 802F2650 002EE2B0 38 E0 10 00 */ li r7, 0x1000
+/* 802F2654 002EE2B4 39 20 00 00 */ li r9, 0
+/* 802F2658 002EE2B8 4B F7 F2 89 */ bl OSCreateThread
+/* 802F265C 002EE2BC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F2660 002EE2C0 40 82 00 0C */ bne lbl_802F266C
+/* 802F2664 002EE2C4 38 60 FF 11 */ li r3, -239
+/* 802F2668 002EE2C8 48 00 00 DC */ b lbl_802F2744
+lbl_802F266C:
+/* 802F266C 002EE2CC 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2670 002EE2D0 38 63 69 F0 */ addi r3, r3, 0x69f0
+/* 802F2674 002EE2D4 4B F7 F8 D5 */ bl OSResumeThread
+/* 802F2678 002EE2D8 4B F8 01 41 */ bl OSGetTime
+/* 802F267C 002EE2DC 3F C0 80 00 */ lis r30, 0x800000F8@ha
+/* 802F2680 002EE2E0 3F E0 43 1C */ lis r31, 0x431BDE83@ha
+/* 802F2684 002EE2E4 80 1E 00 F8 */ lwz r0, 0x800000F8@l(r30)
+/* 802F2688 002EE2E8 38 FF DE 83 */ addi r7, r31, 0x431BDE83@l
+/* 802F268C 002EE2EC 80 A2 AA 30 */ lwz r5, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2690 002EE2F0 38 C0 00 00 */ li r6, 0
+/* 802F2694 002EE2F4 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F2698 002EE2F8 7C 07 00 16 */ mulhwu r0, r7, r0
+/* 802F269C 002EE2FC 54 00 8B FE */ srwi r0, r0, 0xf
+/* 802F26A0 002EE300 1C 00 41 50 */ mulli r0, r0, 0x4150
+/* 802F26A4 002EE304 54 00 E8 FE */ srwi r0, r0, 3
+/* 802F26A8 002EE308 7C 00 20 14 */ addc r0, r0, r4
+/* 802F26AC 002EE30C 90 05 6D DC */ stw r0, 0x6ddc(r5)
+/* 802F26B0 002EE310 7C 06 19 14 */ adde r0, r6, r3
+/* 802F26B4 002EE314 90 05 6D D8 */ stw r0, 0x6dd8(r5)
+/* 802F26B8 002EE318 4B F8 01 01 */ bl OSGetTime
+/* 802F26BC 002EE31C 80 1E 00 F8 */ lwz r0, 0xf8(r30)
+/* 802F26C0 002EE320 3D 20 80 2F */ lis r9, PictureFrameAlarmHandler@ha
+/* 802F26C4 002EE324 38 DF DE 83 */ addi r6, r31, -8573
+/* 802F26C8 002EE328 80 E2 AA 30 */ lwz r7, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F26CC 002EE32C 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F26D0 002EE330 7C 65 1B 78 */ mr r5, r3
+/* 802F26D4 002EE334 7C 06 00 16 */ mulhwu r0, r6, r0
+/* 802F26D8 002EE338 38 67 6D 38 */ addi r3, r7, 0x6d38
+/* 802F26DC 002EE33C 7C 86 23 78 */ mr r6, r4
+/* 802F26E0 002EE340 39 29 30 B4 */ addi r9, r9, PictureFrameAlarmHandler@l
+/* 802F26E4 002EE344 38 E0 00 00 */ li r7, 0
+/* 802F26E8 002EE348 54 00 8B FE */ srwi r0, r0, 0xf
+/* 802F26EC 002EE34C 1C 00 41 50 */ mulli r0, r0, 0x4150
+/* 802F26F0 002EE350 54 08 E8 FE */ srwi r8, r0, 3
+/* 802F26F4 002EE354 4B F7 73 01 */ bl OSSetPeriodicAlarm
+/* 802F26F8 002EE358 4B F8 00 C1 */ bl OSGetTime
+/* 802F26FC 002EE35C 80 1E 00 F8 */ lwz r0, 0xf8(r30)
+/* 802F2700 002EE360 3D 20 80 2F */ lis r9, ParentPeriodicAlarmHandler@ha
+/* 802F2704 002EE364 38 FF DE 83 */ addi r7, r31, -8573
+/* 802F2708 002EE368 3C A0 00 0F */ lis r5, 0x000F4240@ha
+/* 802F270C 002EE36C 54 06 F0 BE */ srwi r6, r0, 2
+/* 802F2710 002EE370 81 02 AA 30 */ lwz r8, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2714 002EE374 7C E7 30 16 */ mulhwu r7, r7, r6
+/* 802F2718 002EE378 38 05 42 40 */ addi r0, r5, 0x000F4240@l
+/* 802F271C 002EE37C 7C 86 23 78 */ mr r6, r4
+/* 802F2720 002EE380 7C 65 1B 78 */ mr r5, r3
+/* 802F2724 002EE384 38 68 6D 68 */ addi r3, r8, 0x6d68
+/* 802F2728 002EE388 39 29 31 44 */ addi r9, r9, ParentPeriodicAlarmHandler@l
+/* 802F272C 002EE38C 54 E4 8B FE */ srwi r4, r7, 0xf
+/* 802F2730 002EE390 38 E0 00 00 */ li r7, 0
+/* 802F2734 002EE394 7C 04 01 D6 */ mullw r0, r4, r0
+/* 802F2738 002EE398 54 08 E8 FE */ srwi r8, r0, 3
+/* 802F273C 002EE39C 4B F7 72 B9 */ bl OSSetPeriodicAlarm
+/* 802F2740 002EE3A0 38 60 00 00 */ li r3, 0
+lbl_802F2744:
+/* 802F2744 002EE3A4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F2748 002EE3A8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F274C 002EE3AC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F2750 002EE3B0 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F2754 002EE3B4 7C 08 03 A6 */ mtlr r0
+/* 802F2758 002EE3B8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F275C 002EE3BC 4E 80 00 20 */ blr
+
+.global MPiCleanupParentEarlier
+MPiCleanupParentEarlier:
+/* 802F2760 002EE3C0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F2764 002EE3C4 7C 08 02 A6 */ mflr r0
+/* 802F2768 002EE3C8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F276C 002EE3CC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F2770 002EE3D0 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2774 002EE3D4 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F2778 002EE3D8 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F277C 002EE3DC 41 82 00 74 */ beq lbl_802F27F0
+/* 802F2780 002EE3E0 A0 1F 6C B8 */ lhz r0, 0x6cb8(r31)
+/* 802F2784 002EE3E4 2C 00 00 00 */ cmpwi r0, 0
+/* 802F2788 002EE3E8 41 82 00 10 */ beq lbl_802F2798
+/* 802F278C 002EE3EC 38 7F 69 F0 */ addi r3, r31, 0x69f0
+/* 802F2790 002EE3F0 38 80 00 00 */ li r4, 0
+/* 802F2794 002EE3F4 4B F7 F6 75 */ bl OSJoinThread
+lbl_802F2798:
+/* 802F2798 002EE3F8 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F279C 002EE3FC 38 80 00 00 */ li r4, 0
+/* 802F27A0 002EE400 38 A0 03 18 */ li r5, 0x318
+/* 802F27A4 002EE404 38 7E 69 F0 */ addi r3, r30, 0x69f0
+/* 802F27A8 002EE408 4B D1 19 5D */ bl memset
+/* 802F27AC 002EE40C A0 1E 69 A0 */ lhz r0, 0x69a0(r30)
+/* 802F27B0 002EE410 2C 00 00 00 */ cmpwi r0, 0
+/* 802F27B4 002EE414 41 82 00 10 */ beq lbl_802F27C4
+/* 802F27B8 002EE418 38 7F 66 D8 */ addi r3, r31, 0x66d8
+/* 802F27BC 002EE41C 38 80 00 00 */ li r4, 0
+/* 802F27C0 002EE420 4B F7 F6 49 */ bl OSJoinThread
+lbl_802F27C4:
+/* 802F27C4 002EE424 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F27C8 002EE428 38 80 00 00 */ li r4, 0
+/* 802F27CC 002EE42C 38 A0 03 18 */ li r5, 0x318
+/* 802F27D0 002EE430 38 7E 66 D8 */ addi r3, r30, 0x66d8
+/* 802F27D4 002EE434 4B D1 19 31 */ bl memset
+/* 802F27D8 002EE438 38 7E 6D 68 */ addi r3, r30, 0x6d68
+/* 802F27DC 002EE43C 4B F7 72 9D */ bl OSCancelAlarm
+/* 802F27E0 002EE440 38 7E 6D 38 */ addi r3, r30, 0x6d38
+/* 802F27E4 002EE444 4B F7 72 95 */ bl OSCancelAlarm
+/* 802F27E8 002EE448 38 7E 6D 08 */ addi r3, r30, 0x6d08
+/* 802F27EC 002EE44C 4B F7 72 8D */ bl OSCancelAlarm
+lbl_802F27F0:
+/* 802F27F0 002EE450 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F27F4 002EE454 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F27F8 002EE458 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F27FC 002EE45C 7C 08 03 A6 */ mtlr r0
+/* 802F2800 002EE460 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F2804 002EE464 4E 80 00 20 */ blr
+
+.global MPiCleanupParent
+MPiCleanupParent:
+/* 802F2808 002EE468 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F280C 002EE46C 7C 08 02 A6 */ mflr r0
+/* 802F2810 002EE470 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F2814 002EE474 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F2818 002EE478 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F281C 002EE47C 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F2820 002EE480 41 82 00 24 */ beq lbl_802F2844
+/* 802F2824 002EE484 38 7F 66 34 */ addi r3, r31, 0x6634
+/* 802F2828 002EE488 38 80 00 00 */ li r4, 0
+/* 802F282C 002EE48C 38 A0 00 80 */ li r5, 0x80
+/* 802F2830 002EE490 4B D1 18 D5 */ bl memset
+/* 802F2834 002EE494 38 7F 66 D4 */ addi r3, r31, 0x66d4
+/* 802F2838 002EE498 38 80 00 00 */ li r4, 0
+/* 802F283C 002EE49C 38 A0 00 04 */ li r5, 4
+/* 802F2840 002EE4A0 4B D1 18 C5 */ bl memset
+lbl_802F2844:
+/* 802F2844 002EE4A4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F2848 002EE4A8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F284C 002EE4AC 7C 08 03 A6 */ mtlr r0
+/* 802F2850 002EE4B0 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F2854 002EE4B4 4E 80 00 20 */ blr
+
+.global MPiProcessParentDataSendError
+MPiProcessParentDataSendError:
+/* 802F2858 002EE4B8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F285C 002EE4BC 7C 08 02 A6 */ mflr r0
+/* 802F2860 002EE4C0 38 A0 00 01 */ li r5, 1
+/* 802F2864 002EE4C4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F2868 002EE4C8 38 81 00 08 */ addi r4, r1, 8
+/* 802F286C 002EE4CC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F2870 002EE4D0 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2874 002EE4D4 38 7F 74 38 */ addi r3, r31, 0x7438
+/* 802F2878 002EE4D8 4B F7 C7 A9 */ bl OSReceiveMessage
+/* 802F287C 002EE4DC 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F2880 002EE4E0 38 00 00 00 */ li r0, 0
+/* 802F2884 002EE4E4 38 7F 66 14 */ addi r3, r31, 0x6614
+/* 802F2888 002EE4E8 38 A0 00 01 */ li r5, 1
+/* 802F288C 002EE4EC 90 04 00 00 */ stw r0, 0(r4)
+/* 802F2890 002EE4F0 90 04 00 04 */ stw r0, 4(r4)
+/* 802F2894 002EE4F4 4B F7 C6 C5 */ bl OSSendMessage
+/* 802F2898 002EE4F8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F289C 002EE4FC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F28A0 002EE500 7C 08 03 A6 */ mtlr r0
+/* 802F28A4 002EE504 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F28A8 002EE508 4E 80 00 20 */ blr
+
+HandleMPEndIndication:
+/* 802F28AC 002EE50C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F28B0 002EE510 7C 08 02 A6 */ mflr r0
+/* 802F28B4 002EE514 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F28B8 002EE518 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F28BC 002EE51C 4B ED 48 6D */ bl _savegpr_27
+/* 802F28C0 002EE520 83 82 AA 30 */ lwz r28, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F28C4 002EE524 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F28C8 002EE528 40 82 00 0C */ bne lbl_802F28D4
+/* 802F28CC 002EE52C 38 60 00 00 */ li r3, 0
+/* 802F28D0 002EE530 48 00 00 70 */ b lbl_802F2940
+lbl_802F28D4:
+/* 802F28D4 002EE534 3B 7C 31 40 */ addi r27, r28, 0x3140
+/* 802F28D8 002EE538 3B DC 74 38 */ addi r30, r28, 0x7438
+/* 802F28DC 002EE53C 3B BC 66 14 */ addi r29, r28, 0x6614
+lbl_802F28E0:
+/* 802F28E0 002EE540 7F 63 DB 78 */ mr r3, r27
+/* 802F28E4 002EE544 38 80 20 00 */ li r4, 0x2000
+/* 802F28E8 002EE548 4B FF E6 C5 */ bl MPiReceiveFrame
+/* 802F28EC 002EE54C 3C 03 80 00 */ addis r0, r3, 0x8000
+/* 802F28F0 002EE550 7C 7F 1B 78 */ mr r31, r3
+/* 802F28F4 002EE554 28 00 80 00 */ cmplwi r0, 0x8000
+/* 802F28F8 002EE558 40 82 00 18 */ bne lbl_802F2910
+/* 802F28FC 002EE55C 38 7C 66 14 */ addi r3, r28, 0x6614
+/* 802F2900 002EE560 38 80 00 00 */ li r4, 0
+/* 802F2904 002EE564 38 A0 00 01 */ li r5, 1
+/* 802F2908 002EE568 4B F7 C6 51 */ bl OSSendMessage
+/* 802F290C 002EE56C 48 00 00 30 */ b lbl_802F293C
+lbl_802F2910:
+/* 802F2910 002EE570 7F C3 F3 78 */ mr r3, r30
+/* 802F2914 002EE574 38 81 00 08 */ addi r4, r1, 8
+/* 802F2918 002EE578 38 A0 00 01 */ li r5, 1
+/* 802F291C 002EE57C 4B F7 C7 05 */ bl OSReceiveMessage
+/* 802F2920 002EE580 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F2924 002EE584 7F A3 EB 78 */ mr r3, r29
+/* 802F2928 002EE588 38 A0 00 01 */ li r5, 1
+/* 802F292C 002EE58C 93 64 00 00 */ stw r27, 0(r4)
+/* 802F2930 002EE590 93 E4 00 04 */ stw r31, 4(r4)
+/* 802F2934 002EE594 4B F7 C6 25 */ bl OSSendMessage
+/* 802F2938 002EE598 4B FF FF A8 */ b lbl_802F28E0
+lbl_802F293C:
+/* 802F293C 002EE59C 38 60 00 00 */ li r3, 0
+lbl_802F2940:
+/* 802F2940 002EE5A0 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F2944 002EE5A4 4B ED 48 31 */ bl _restgpr_27
+/* 802F2948 002EE5A8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F294C 002EE5AC 7C 08 03 A6 */ mtlr r0
+/* 802F2950 002EE5B0 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F2954 002EE5B4 4E 80 00 20 */ blr
+
+HandleMPSequence:
+/* 802F2958 002EE5B8 94 21 FF B0 */ stwu r1, -0x50(r1)
+/* 802F295C 002EE5BC 7C 08 02 A6 */ mflr r0
+/* 802F2960 002EE5C0 90 01 00 54 */ stw r0, 0x54(r1)
+/* 802F2964 002EE5C4 39 61 00 50 */ addi r11, r1, 0x50
+/* 802F2968 002EE5C8 4B ED 47 A9 */ bl _savegpr_21
+/* 802F296C 002EE5CC 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2970 002EE5D0 3B A0 00 00 */ li r29, 0
+/* 802F2974 002EE5D4 3B E0 00 00 */ li r31, 0
+/* 802F2978 002EE5D8 3F 20 80 00 */ lis r25, 0x8000
+/* 802F297C 002EE5DC 3F 40 43 1C */ lis r26, 0x431c
+/* 802F2980 002EE5E0 3F 60 80 2F */ lis r27, 0x802f
+/* 802F2984 002EE5E4 48 00 00 80 */ b lbl_802F2A04
+lbl_802F2988:
+/* 802F2988 002EE5E8 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F298C 002EE5EC 38 81 00 10 */ addi r4, r1, 0x10
+/* 802F2990 002EE5F0 38 A0 00 00 */ li r5, 0
+/* 802F2994 002EE5F4 38 63 66 14 */ addi r3, r3, 0x6614
+/* 802F2998 002EE5F8 4B F7 C6 89 */ bl OSReceiveMessage
+/* 802F299C 002EE5FC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F29A0 002EE600 41 82 00 14 */ beq lbl_802F29B4
+/* 802F29A4 002EE604 80 01 00 10 */ lwz r0, 0x10(r1)
+/* 802F29A8 002EE608 7C 00 F8 40 */ cmplw r0, r31
+/* 802F29AC 002EE60C 40 82 00 08 */ bne lbl_802F29B4
+/* 802F29B0 002EE610 48 00 02 D4 */ b lbl_802F2C84
+lbl_802F29B4:
+/* 802F29B4 002EE614 38 60 00 20 */ li r3, 0x20
+/* 802F29B8 002EE618 4B FF F1 55 */ bl MPiClearSendQueue
+/* 802F29BC 002EE61C 80 19 00 F8 */ lwz r0, 0xf8(r25)
+/* 802F29C0 002EE620 38 7A DE 83 */ addi r3, r26, -8573
+/* 802F29C4 002EE624 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F29C8 002EE628 38 FB 30 78 */ addi r7, r27, 0x3078
+/* 802F29CC 002EE62C 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F29D0 002EE630 38 A0 00 00 */ li r5, 0
+/* 802F29D4 002EE634 7C 03 00 16 */ mulhwu r0, r3, r0
+/* 802F29D8 002EE638 38 64 6D 08 */ addi r3, r4, 0x6d08
+/* 802F29DC 002EE63C 54 00 8B FE */ srwi r0, r0, 0xf
+/* 802F29E0 002EE640 1C 00 03 E8 */ mulli r0, r0, 0x3e8
+/* 802F29E4 002EE644 54 06 E8 FE */ srwi r6, r0, 3
+/* 802F29E8 002EE648 4B F7 6F 9D */ bl OSSetAlarm
+/* 802F29EC 002EE64C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F29F0 002EE650 38 63 6D 98 */ addi r3, r3, 0x6d98
+/* 802F29F4 002EE654 4B F7 E4 CD */ bl OSWaitSemaphore
+/* 802F29F8 002EE658 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F29FC 002EE65C 38 63 6D A4 */ addi r3, r3, 0x6da4
+/* 802F2A00 002EE660 4B F7 E4 C1 */ bl OSWaitSemaphore
+lbl_802F2A04:
+/* 802F2A04 002EE664 80 1E 57 64 */ lwz r0, 0x5764(r30)
+/* 802F2A08 002EE668 7C 00 00 34 */ cntlzw r0, r0
+/* 802F2A0C 002EE66C 54 00 D9 7F */ rlwinm. r0, r0, 0x1b, 5, 0x1f
+/* 802F2A10 002EE670 40 82 FF 78 */ bne lbl_802F2988
+/* 802F2A14 002EE674 38 7E 66 B4 */ addi r3, r30, 0x66b4
+/* 802F2A18 002EE678 38 81 00 10 */ addi r4, r1, 0x10
+/* 802F2A1C 002EE67C 38 A0 00 00 */ li r5, 0
+/* 802F2A20 002EE680 4B F7 C6 01 */ bl OSReceiveMessage
+/* 802F2A24 002EE684 2C 03 00 00 */ cmpwi r3, 0
+/* 802F2A28 002EE688 41 82 00 1C */ beq lbl_802F2A44
+/* 802F2A2C 002EE68C 48 00 02 75 */ bl CheckLifeTime
+/* 802F2A30 002EE690 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2A34 002EE694 80 03 00 38 */ lwz r0, 0x38(r3)
+/* 802F2A38 002EE698 2C 00 00 00 */ cmpwi r0, 0
+/* 802F2A3C 002EE69C 40 82 00 08 */ bne lbl_802F2A44
+/* 802F2A40 002EE6A0 4B FF E5 D5 */ bl MPiChangeVTSF
+lbl_802F2A44:
+/* 802F2A44 002EE6A4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2A48 002EE6A8 38 81 00 10 */ addi r4, r1, 0x10
+/* 802F2A4C 002EE6AC 38 A0 00 00 */ li r5, 0
+/* 802F2A50 002EE6B0 38 63 6D B0 */ addi r3, r3, 0x6db0
+/* 802F2A54 002EE6B4 4B F7 C5 CD */ bl OSReceiveMessage
+/* 802F2A58 002EE6B8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F2A5C 002EE6BC 41 82 00 44 */ beq lbl_802F2AA0
+/* 802F2A60 002EE6C0 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2A64 002EE6C4 80 03 00 38 */ lwz r0, 0x38(r3)
+/* 802F2A68 002EE6C8 2C 00 00 00 */ cmpwi r0, 0
+/* 802F2A6C 002EE6CC 41 82 00 08 */ beq lbl_802F2A74
+/* 802F2A70 002EE6D0 4B FF E5 A5 */ bl MPiChangeVTSF
+lbl_802F2A74:
+/* 802F2A74 002EE6D4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2A78 002EE6D8 80 03 00 38 */ lwz r0, 0x38(r3)
+/* 802F2A7C 002EE6DC 2C 00 00 00 */ cmpwi r0, 0
+/* 802F2A80 002EE6E0 40 81 00 0C */ ble lbl_802F2A8C
+/* 802F2A84 002EE6E4 2C 00 00 06 */ cmpwi r0, 6
+/* 802F2A88 002EE6E8 40 81 00 08 */ ble lbl_802F2A90
+lbl_802F2A8C:
+/* 802F2A8C 002EE6EC 38 00 00 06 */ li r0, 6
+lbl_802F2A90:
+/* 802F2A90 002EE6F0 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2A94 002EE6F4 90 03 6D E0 */ stw r0, 0x6de0(r3)
+/* 802F2A98 002EE6F8 80 03 57 64 */ lwz r0, 0x5764(r3)
+/* 802F2A9C 002EE6FC 54 1D 04 3E */ clrlwi r29, r0, 0x10
+lbl_802F2AA0:
+/* 802F2AA0 002EE700 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2AA4 002EE704 80 03 6D E0 */ lwz r0, 0x6de0(r3)
+/* 802F2AA8 002EE708 2C 00 00 01 */ cmpwi r0, 1
+/* 802F2AAC 002EE70C 41 81 00 0C */ bgt lbl_802F2AB8
+/* 802F2AB0 002EE710 3B 80 00 01 */ li r28, 1
+/* 802F2AB4 002EE714 48 00 00 08 */ b lbl_802F2ABC
+lbl_802F2AB8:
+/* 802F2AB8 002EE718 3B 80 00 00 */ li r28, 0
+lbl_802F2ABC:
+/* 802F2ABC 002EE71C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2AC0 002EE720 7F A5 EB 78 */ mr r5, r29
+/* 802F2AC4 002EE724 7F 86 E3 78 */ mr r6, r28
+/* 802F2AC8 002EE728 38 80 04 00 */ li r4, 0x400
+/* 802F2ACC 002EE72C 38 63 51 40 */ addi r3, r3, 0x5140
+/* 802F2AD0 002EE730 4B FF EE 2D */ bl MPiMakeSendFrame
+/* 802F2AD4 002EE734 2C 03 00 00 */ cmpwi r3, 0
+/* 802F2AD8 002EE738 40 80 00 08 */ bge lbl_802F2AE0
+/* 802F2ADC 002EE73C 4B FF FF 28 */ b lbl_802F2A04
+lbl_802F2AE0:
+/* 802F2AE0 002EE740 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2AE4 002EE744 7C 76 1B 78 */ mr r22, r3
+/* 802F2AE8 002EE748 38 80 00 00 */ li r4, 0
+/* 802F2AEC 002EE74C 38 A0 00 10 */ li r5, 0x10
+/* 802F2AF0 002EE750 38 66 55 40 */ addi r3, r6, 0x5540
+/* 802F2AF4 002EE754 4B D1 16 11 */ bl memset
+/* 802F2AF8 002EE758 80 A2 AA 30 */ lwz r5, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2AFC 002EE75C 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F2B00 002EE760 B3 E5 55 40 */ sth r31, 0x5540(r5)
+/* 802F2B04 002EE764 B3 E5 55 42 */ sth r31, 0x5542(r5)
+/* 802F2B08 002EE768 B3 E5 55 44 */ sth r31, 0x5544(r5)
+/* 802F2B0C 002EE76C 80 65 00 2C */ lwz r3, 0x2c(r5)
+/* 802F2B10 002EE770 38 03 00 04 */ addi r0, r3, 4
+/* 802F2B14 002EE774 B0 05 55 46 */ sth r0, 0x5546(r5)
+/* 802F2B18 002EE778 B3 A5 55 48 */ sth r29, 0x5548(r5)
+/* 802F2B1C 002EE77C 41 82 00 20 */ beq lbl_802F2B3C
+/* 802F2B20 002EE780 A0 85 55 46 */ lhz r4, 0x5546(r5)
+/* 802F2B24 002EE784 7E C3 B3 78 */ mr r3, r22
+/* 802F2B28 002EE788 A0 A5 55 48 */ lhz r5, 0x5548(r5)
+/* 802F2B2C 002EE78C 48 00 04 7D */ bl GetTmptt
+/* 802F2B30 002EE790 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2B34 002EE794 B0 64 55 4A */ sth r3, 0x554a(r4)
+/* 802F2B38 002EE798 48 00 00 08 */ b lbl_802F2B40
+lbl_802F2B3C:
+/* 802F2B3C 002EE79C B3 E5 55 4A */ sth r31, 0x554a(r5)
+lbl_802F2B40:
+/* 802F2B40 002EE7A0 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2B44 002EE7A4 7E C4 B3 78 */ mr r4, r22
+/* 802F2B48 002EE7A8 B3 E6 55 4C */ sth r31, 0x554c(r6)
+/* 802F2B4C 002EE7AC 38 66 51 40 */ addi r3, r6, 0x5140
+/* 802F2B50 002EE7B0 38 A6 55 40 */ addi r5, r6, 0x5540
+/* 802F2B54 002EE7B4 A2 A6 55 48 */ lhz r21, 0x5548(r6)
+/* 802F2B58 002EE7B8 4B FF E4 29 */ bl MPiSendFrame
+/* 802F2B5C 002EE7BC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F2B60 002EE7C0 40 82 00 68 */ bne lbl_802F2BC8
+/* 802F2B64 002EE7C4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2B68 002EE7C8 38 81 00 0C */ addi r4, r1, 0xc
+/* 802F2B6C 002EE7CC 38 A0 00 01 */ li r5, 1
+/* 802F2B70 002EE7D0 38 63 66 14 */ addi r3, r3, 0x6614
+/* 802F2B74 002EE7D4 4B F7 C4 AD */ bl OSReceiveMessage
+/* 802F2B78 002EE7D8 83 01 00 0C */ lwz r24, 0xc(r1)
+/* 802F2B7C 002EE7DC 7C 18 F8 40 */ cmplw r24, r31
+/* 802F2B80 002EE7E0 40 82 00 08 */ bne lbl_802F2B88
+/* 802F2B84 002EE7E4 48 00 01 00 */ b lbl_802F2C84
+lbl_802F2B88:
+/* 802F2B88 002EE7E8 82 F8 00 00 */ lwz r23, 0(r24)
+/* 802F2B8C 002EE7EC 7F 03 C3 78 */ mr r3, r24
+/* 802F2B90 002EE7F0 82 D8 00 04 */ lwz r22, 4(r24)
+/* 802F2B94 002EE7F4 38 80 00 00 */ li r4, 0
+/* 802F2B98 002EE7F8 38 A0 00 08 */ li r5, 8
+/* 802F2B9C 002EE7FC 4B D1 15 69 */ bl memset
+/* 802F2BA0 002EE800 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2BA4 002EE804 7F 04 C3 78 */ mr r4, r24
+/* 802F2BA8 002EE808 38 A0 00 01 */ li r5, 1
+/* 802F2BAC 002EE80C 38 63 74 38 */ addi r3, r3, 0x7438
+/* 802F2BB0 002EE810 4B F7 C3 A9 */ bl OSSendMessage
+/* 802F2BB4 002EE814 7E E3 BB 78 */ mr r3, r23
+/* 802F2BB8 002EE818 7E C4 B3 78 */ mr r4, r22
+/* 802F2BBC 002EE81C 7E A5 AB 78 */ mr r5, r21
+/* 802F2BC0 002EE820 48 00 02 3D */ bl ParseMPEndIndication
+/* 802F2BC4 002EE824 48 00 00 34 */ b lbl_802F2BF8
+lbl_802F2BC8:
+/* 802F2BC8 002EE828 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2BCC 002EE82C 38 81 00 08 */ addi r4, r1, 8
+/* 802F2BD0 002EE830 38 A0 00 00 */ li r5, 0
+/* 802F2BD4 002EE834 38 63 66 14 */ addi r3, r3, 0x6614
+/* 802F2BD8 002EE838 4B F7 C4 49 */ bl OSReceiveMessage
+/* 802F2BDC 002EE83C 2C 03 00 01 */ cmpwi r3, 1
+/* 802F2BE0 002EE840 40 82 00 14 */ bne lbl_802F2BF4
+/* 802F2BE4 002EE844 80 01 00 08 */ lwz r0, 8(r1)
+/* 802F2BE8 002EE848 7C 00 F8 40 */ cmplw r0, r31
+/* 802F2BEC 002EE84C 40 82 00 08 */ bne lbl_802F2BF4
+/* 802F2BF0 002EE850 48 00 00 94 */ b lbl_802F2C84
+lbl_802F2BF4:
+/* 802F2BF4 002EE854 38 60 00 00 */ li r3, 0
+lbl_802F2BF8:
+/* 802F2BF8 002EE858 56 A0 04 3C */ rlwinm r0, r21, 0, 0x10, 0x1e
+/* 802F2BFC 002EE85C 7C 00 18 40 */ cmplw r0, r3
+/* 802F2C00 002EE860 40 82 00 20 */ bne lbl_802F2C20
+/* 802F2C04 002EE864 4B F7 BB 59 */ bl OSDisableInterrupts
+/* 802F2C08 002EE868 80 A2 AA 30 */ lwz r5, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2C0C 002EE86C 80 85 6D E0 */ lwz r4, 0x6de0(r5)
+/* 802F2C10 002EE870 38 04 FF FF */ addi r0, r4, -1
+/* 802F2C14 002EE874 90 05 6D E0 */ stw r0, 0x6de0(r5)
+/* 802F2C18 002EE878 4B F7 BB 6D */ bl OSRestoreInterrupts
+/* 802F2C1C 002EE87C 48 00 00 10 */ b lbl_802F2C2C
+lbl_802F2C20:
+/* 802F2C20 002EE880 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F2C24 002EE884 41 82 00 08 */ beq lbl_802F2C2C
+/* 802F2C28 002EE888 7F BD 18 78 */ andc r29, r29, r3
+lbl_802F2C2C:
+/* 802F2C2C 002EE88C 80 19 00 F8 */ lwz r0, 0xf8(r25)
+/* 802F2C30 002EE890 38 7A DE 83 */ addi r3, r26, -8573
+/* 802F2C34 002EE894 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2C38 002EE898 38 FB 30 78 */ addi r7, r27, 0x3078
+/* 802F2C3C 002EE89C 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F2C40 002EE8A0 38 A0 00 00 */ li r5, 0
+/* 802F2C44 002EE8A4 7C 03 00 16 */ mulhwu r0, r3, r0
+/* 802F2C48 002EE8A8 38 64 6D 08 */ addi r3, r4, 0x6d08
+/* 802F2C4C 002EE8AC 54 00 8B FE */ srwi r0, r0, 0xf
+/* 802F2C50 002EE8B0 1C 00 03 E8 */ mulli r0, r0, 0x3e8
+/* 802F2C54 002EE8B4 54 06 E8 FE */ srwi r6, r0, 3
+/* 802F2C58 002EE8B8 4B F7 6D 2D */ bl OSSetAlarm
+/* 802F2C5C 002EE8BC 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2C60 002EE8C0 38 63 6D 98 */ addi r3, r3, 0x6d98
+/* 802F2C64 002EE8C4 4B F7 E2 5D */ bl OSWaitSemaphore
+/* 802F2C68 002EE8C8 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2C6C 002EE8CC 80 03 6D E0 */ lwz r0, 0x6de0(r3)
+/* 802F2C70 002EE8D0 2C 00 00 00 */ cmpwi r0, 0
+/* 802F2C74 002EE8D4 41 81 FD 90 */ bgt lbl_802F2A04
+/* 802F2C78 002EE8D8 38 63 6D A4 */ addi r3, r3, 0x6da4
+/* 802F2C7C 002EE8DC 4B F7 E2 45 */ bl OSWaitSemaphore
+/* 802F2C80 002EE8E0 4B FF FD 84 */ b lbl_802F2A04
+lbl_802F2C84:
+/* 802F2C84 002EE8E4 39 61 00 50 */ addi r11, r1, 0x50
+/* 802F2C88 002EE8E8 38 60 00 00 */ li r3, 0
+/* 802F2C8C 002EE8EC 4B ED 44 D1 */ bl _restgpr_21
+/* 802F2C90 002EE8F0 80 01 00 54 */ lwz r0, 0x54(r1)
+/* 802F2C94 002EE8F4 7C 08 03 A6 */ mtlr r0
+/* 802F2C98 002EE8F8 38 21 00 50 */ addi r1, r1, 0x50
+/* 802F2C9C 002EE8FC 4E 80 00 20 */ blr
+
+.global CheckLifeTime
+CheckLifeTime:
+/* 802F2CA0 002EE900 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F2CA4 002EE904 7C 08 02 A6 */ mflr r0
+/* 802F2CA8 002EE908 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F2CAC 002EE90C 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F2CB0 002EE910 4B ED 44 69 */ bl _savegpr_23
+/* 802F2CB4 002EE914 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2CB8 002EE918 83 C3 00 1C */ lwz r30, 0x1c(r3)
+/* 802F2CBC 002EE91C 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F2CC0 002EE920 41 82 01 24 */ beq lbl_802F2DE4
+/* 802F2CC4 002EE924 4B F7 FB 0D */ bl OSGetTick
+/* 802F2CC8 002EE928 3F 40 80 00 */ lis r26, 0x800000F8@ha
+/* 802F2CCC 002EE92C 3F 20 10 62 */ lis r25, 0x10624DD3@ha
+/* 802F2CD0 002EE930 80 9A 00 F8 */ lwz r4, 0x800000F8@l(r26)
+/* 802F2CD4 002EE934 38 B9 4D D3 */ addi r5, r25, 0x10624DD3@l
+/* 802F2CD8 002EE938 57 C0 08 3C */ slwi r0, r30, 1
+/* 802F2CDC 002EE93C 54 84 F0 BE */ srwi r4, r4, 2
+/* 802F2CE0 002EE940 7C 85 20 16 */ mulhwu r4, r5, r4
+/* 802F2CE4 002EE944 54 84 D1 BE */ srwi r4, r4, 6
+/* 802F2CE8 002EE948 7C 04 01 D6 */ mullw r0, r4, r0
+/* 802F2CEC 002EE94C 7F E0 18 50 */ subf r31, r0, r3
+/* 802F2CF0 002EE950 4B F7 FA E1 */ bl OSGetTick
+/* 802F2CF4 002EE954 80 1A 00 F8 */ lwz r0, 0xf8(r26)
+/* 802F2CF8 002EE958 38 99 4D D3 */ addi r4, r25, 0x4dd3
+/* 802F2CFC 002EE95C 3B A0 00 00 */ li r29, 0
+/* 802F2D00 002EE960 3B 80 00 00 */ li r28, 0
+/* 802F2D04 002EE964 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F2D08 002EE968 7C 04 00 16 */ mulhwu r0, r4, r0
+/* 802F2D0C 002EE96C 54 00 D1 BE */ srwi r0, r0, 6
+/* 802F2D10 002EE970 7C 1E 01 D6 */ mullw r0, r30, r0
+/* 802F2D14 002EE974 7F 00 18 50 */ subf r24, r0, r3
+/* 802F2D18 002EE978 4B F7 BA 45 */ bl OSDisableInterrupts
+/* 802F2D1C 002EE97C 7C 77 1B 78 */ mr r23, r3
+/* 802F2D20 002EE980 4B FF F0 79 */ bl MPGetConnectedAIDs
+/* 802F2D24 002EE984 7C 79 1B 78 */ mr r25, r3
+/* 802F2D28 002EE988 3B C0 00 01 */ li r30, 1
+/* 802F2D2C 002EE98C 3B 60 00 02 */ li r27, 2
+/* 802F2D30 002EE990 3B 40 00 01 */ li r26, 1
+lbl_802F2D34:
+/* 802F2D34 002EE994 7F 40 F0 30 */ slw r0, r26, r30
+/* 802F2D38 002EE998 7F 20 00 39 */ and. r0, r25, r0
+/* 802F2D3C 002EE99C 41 82 00 54 */ beq lbl_802F2D90
+/* 802F2D40 002EE9A0 7F C3 F3 78 */ mr r3, r30
+/* 802F2D44 002EE9A4 7F 04 C3 78 */ mr r4, r24
+/* 802F2D48 002EE9A8 4B FF F5 B1 */ bl MPiCompareLifeTime
+/* 802F2D4C 002EE9AC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F2D50 002EE9B0 41 82 00 40 */ beq lbl_802F2D90
+/* 802F2D54 002EE9B4 80 02 AA 30 */ lwz r0, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F2D58 002EE9B8 7C 60 DA 14 */ add r3, r0, r27
+/* 802F2D5C 002EE9BC A0 03 65 04 */ lhz r0, 0x6504(r3)
+/* 802F2D60 002EE9C0 2C 00 00 00 */ cmpwi r0, 0
+/* 802F2D64 002EE9C4 40 82 00 10 */ bne lbl_802F2D74
+/* 802F2D68 002EE9C8 7F 40 F0 30 */ slw r0, r26, r30
+/* 802F2D6C 002EE9CC 7F BD 03 78 */ or r29, r29, r0
+/* 802F2D70 002EE9D0 48 00 00 20 */ b lbl_802F2D90
+lbl_802F2D74:
+/* 802F2D74 002EE9D4 7F C3 F3 78 */ mr r3, r30
+/* 802F2D78 002EE9D8 7F E4 FB 78 */ mr r4, r31
+/* 802F2D7C 002EE9DC 4B FF F5 7D */ bl MPiCompareLifeTime
+/* 802F2D80 002EE9E0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F2D84 002EE9E4 41 82 00 0C */ beq lbl_802F2D90
+/* 802F2D88 002EE9E8 7F 40 F0 30 */ slw r0, r26, r30
+/* 802F2D8C 002EE9EC 7F 9C 03 78 */ or r28, r28, r0
+lbl_802F2D90:
+/* 802F2D90 002EE9F0 3B DE 00 01 */ addi r30, r30, 1
+/* 802F2D94 002EE9F4 3B 7B 00 02 */ addi r27, r27, 2
+/* 802F2D98 002EE9F8 28 1E 00 10 */ cmplwi r30, 0x10
+/* 802F2D9C 002EE9FC 41 80 FF 98 */ blt lbl_802F2D34
+/* 802F2DA0 002EEA00 7E E3 BB 78 */ mr r3, r23
+/* 802F2DA4 002EEA04 4B F7 B9 E1 */ bl OSRestoreInterrupts
+/* 802F2DA8 002EEA08 3B C0 00 01 */ li r30, 1
+/* 802F2DAC 002EEA0C 3B 60 00 01 */ li r27, 1
+lbl_802F2DB0:
+/* 802F2DB0 002EEA10 7F 63 F0 30 */ slw r3, r27, r30
+/* 802F2DB4 002EEA14 7F A0 18 39 */ and. r0, r29, r3
+/* 802F2DB8 002EEA18 41 82 00 10 */ beq lbl_802F2DC8
+/* 802F2DBC 002EEA1C 7F C3 F3 78 */ mr r3, r30
+/* 802F2DC0 002EEA20 4B FF F5 55 */ bl MPiProcessLifeTimeExpiration
+/* 802F2DC4 002EEA24 48 00 00 14 */ b lbl_802F2DD8
+lbl_802F2DC8:
+/* 802F2DC8 002EEA28 7F 80 18 39 */ and. r0, r28, r3
+/* 802F2DCC 002EEA2C 41 82 00 0C */ beq lbl_802F2DD8
+/* 802F2DD0 002EEA30 7F C3 F3 78 */ mr r3, r30
+/* 802F2DD4 002EEA34 4B FF F5 4D */ bl MPiProcessForcibleLifeTimeExpiration
+lbl_802F2DD8:
+/* 802F2DD8 002EEA38 3B DE 00 01 */ addi r30, r30, 1
+/* 802F2DDC 002EEA3C 28 1E 00 10 */ cmplwi r30, 0x10
+/* 802F2DE0 002EEA40 41 80 FF D0 */ blt lbl_802F2DB0
+lbl_802F2DE4:
+/* 802F2DE4 002EEA44 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F2DE8 002EEA48 4B ED 43 7D */ bl _restgpr_23
+/* 802F2DEC 002EEA4C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F2DF0 002EEA50 7C 08 03 A6 */ mtlr r0
+/* 802F2DF4 002EEA54 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F2DF8 002EEA58 4E 80 00 20 */ blr
+
+.global ParseMPEndIndication
+ParseMPEndIndication:
+/* 802F2DFC 002EEA5C 94 21 FF A0 */ stwu r1, -0x60(r1)
+/* 802F2E00 002EEA60 7C 08 02 A6 */ mflr r0
+/* 802F2E04 002EEA64 90 01 00 64 */ stw r0, 0x64(r1)
+/* 802F2E08 002EEA68 39 61 00 60 */ addi r11, r1, 0x60
+/* 802F2E0C 002EEA6C 4B ED 43 19 */ bl _savegpr_26
+/* 802F2E10 002EEA70 38 00 00 00 */ li r0, 0
+/* 802F2E14 002EEA74 2C 03 00 00 */ cmpwi r3, 0
+/* 802F2E18 002EEA78 90 01 00 08 */ stw r0, 8(r1)
+/* 802F2E1C 002EEA7C 7C 7D 1B 78 */ mr r29, r3
+/* 802F2E20 002EEA80 7C BE 2B 78 */ mr r30, r5
+/* 802F2E24 002EEA84 3B E0 00 00 */ li r31, 0
+/* 802F2E28 002EEA88 90 01 00 0C */ stw r0, 0xc(r1)
+/* 802F2E2C 002EEA8C 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802F2E30 002EEA90 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F2E34 002EEA94 90 01 00 18 */ stw r0, 0x18(r1)
+/* 802F2E38 002EEA98 90 01 00 1C */ stw r0, 0x1c(r1)
+/* 802F2E3C 002EEA9C 90 01 00 20 */ stw r0, 0x20(r1)
+/* 802F2E40 002EEAA0 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F2E44 002EEAA4 90 01 00 28 */ stw r0, 0x28(r1)
+/* 802F2E48 002EEAA8 90 01 00 2C */ stw r0, 0x2c(r1)
+/* 802F2E4C 002EEAAC 90 01 00 30 */ stw r0, 0x30(r1)
+/* 802F2E50 002EEAB0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F2E54 002EEAB4 90 01 00 38 */ stw r0, 0x38(r1)
+/* 802F2E58 002EEAB8 90 01 00 3C */ stw r0, 0x3c(r1)
+/* 802F2E5C 002EEABC 90 01 00 40 */ stw r0, 0x40(r1)
+/* 802F2E60 002EEAC0 41 82 00 9C */ beq lbl_802F2EFC
+/* 802F2E64 002EEAC4 A0 A3 00 04 */ lhz r5, 4(r3)
+/* 802F2E68 002EEAC8 A0 03 00 06 */ lhz r0, 6(r3)
+/* 802F2E6C 002EEACC 7C A5 01 D6 */ mullw r5, r5, r0
+/* 802F2E70 002EEAD0 38 05 00 0A */ addi r0, r5, 0xa
+/* 802F2E74 002EEAD4 54 00 04 3E */ clrlwi r0, r0, 0x10
+/* 802F2E78 002EEAD8 7C 04 00 40 */ cmplw r4, r0
+/* 802F2E7C 002EEADC 41 82 00 0C */ beq lbl_802F2E88
+/* 802F2E80 002EEAE0 38 60 00 00 */ li r3, 0
+/* 802F2E84 002EEAE4 48 00 01 0C */ b lbl_802F2F90
+lbl_802F2E88:
+/* 802F2E88 002EEAE8 A0 63 00 02 */ lhz r3, 2(r3)
+/* 802F2E8C 002EEAEC 48 00 0F 2D */ bl MPiSetCurrentTsf
+/* 802F2E90 002EEAF0 38 FD 00 0A */ addi r7, r29, 0xa
+/* 802F2E94 002EEAF4 38 A1 00 08 */ addi r5, r1, 8
+/* 802F2E98 002EEAF8 38 C0 00 00 */ li r6, 0
+/* 802F2E9C 002EEAFC 38 60 00 01 */ li r3, 1
+/* 802F2EA0 002EEB00 48 00 00 50 */ b lbl_802F2EF0
+lbl_802F2EA4:
+/* 802F2EA4 002EEB04 A0 07 00 04 */ lhz r0, 4(r7)
+/* 802F2EA8 002EEB08 2C 00 00 00 */ cmpwi r0, 0
+/* 802F2EAC 002EEB0C 41 82 00 38 */ beq lbl_802F2EE4
+/* 802F2EB0 002EEB10 41 82 00 4C */ beq lbl_802F2EFC
+/* 802F2EB4 002EEB14 28 00 00 10 */ cmplwi r0, 0x10
+/* 802F2EB8 002EEB18 40 80 00 44 */ bge lbl_802F2EFC
+/* 802F2EBC 002EEB1C A0 87 00 00 */ lhz r4, 0(r7)
+/* 802F2EC0 002EEB20 28 04 FF FF */ cmplwi r4, 0xffff
+/* 802F2EC4 002EEB24 41 82 00 20 */ beq lbl_802F2EE4
+/* 802F2EC8 002EEB28 2C 04 00 00 */ cmpwi r4, 0
+/* 802F2ECC 002EEB2C 41 82 00 18 */ beq lbl_802F2EE4
+/* 802F2ED0 002EEB30 54 04 13 BA */ rlwinm r4, r0, 2, 0xe, 0x1d
+/* 802F2ED4 002EEB34 7C 60 00 30 */ slw r0, r3, r0
+/* 802F2ED8 002EEB38 7C 85 22 14 */ add r4, r5, r4
+/* 802F2EDC 002EEB3C 90 E4 FF FC */ stw r7, -4(r4)
+/* 802F2EE0 002EEB40 7F FF 03 78 */ or r31, r31, r0
+lbl_802F2EE4:
+/* 802F2EE4 002EEB44 A0 1D 00 06 */ lhz r0, 6(r29)
+/* 802F2EE8 002EEB48 38 C6 00 01 */ addi r6, r6, 1
+/* 802F2EEC 002EEB4C 7C E7 02 14 */ add r7, r7, r0
+lbl_802F2EF0:
+/* 802F2EF0 002EEB50 A0 1D 00 04 */ lhz r0, 4(r29)
+/* 802F2EF4 002EEB54 7C 06 00 00 */ cmpw r6, r0
+/* 802F2EF8 002EEB58 41 80 FF AC */ blt lbl_802F2EA4
+lbl_802F2EFC:
+/* 802F2EFC 002EEB5C 3B 81 00 08 */ addi r28, r1, 8
+/* 802F2F00 002EEB60 3B 60 00 00 */ li r27, 0
+/* 802F2F04 002EEB64 3B A0 00 01 */ li r29, 1
+lbl_802F2F08:
+/* 802F2F08 002EEB68 80 9C 00 00 */ lwz r4, 0(r28)
+/* 802F2F0C 002EEB6C 38 1B 00 01 */ addi r0, r27, 1
+/* 802F2F10 002EEB70 54 1A 06 3E */ clrlwi r26, r0, 0x18
+/* 802F2F14 002EEB74 2C 04 00 00 */ cmpwi r4, 0
+/* 802F2F18 002EEB78 41 82 00 44 */ beq lbl_802F2F5C
+/* 802F2F1C 002EEB7C A0 C4 00 00 */ lhz r6, 0(r4)
+/* 802F2F20 002EEB80 7F 43 D3 78 */ mr r3, r26
+/* 802F2F24 002EEB84 A0 04 00 08 */ lhz r0, 8(r4)
+/* 802F2F28 002EEB88 38 A4 00 0A */ addi r5, r4, 0xa
+/* 802F2F2C 002EEB8C 38 C6 FF FE */ addi r6, r6, -2
+/* 802F2F30 002EEB90 54 04 44 2E */ rlwinm r4, r0, 8, 0x10, 0x17
+/* 802F2F34 002EEB94 50 04 C6 3E */ rlwimi r4, r0, 0x18, 0x18, 0x1f
+/* 802F2F38 002EEB98 4B FF E7 51 */ bl MPiParseReceivedFrame
+/* 802F2F3C 002EEB9C 80 9C 00 00 */ lwz r4, 0(r28)
+/* 802F2F40 002EEBA0 7F 43 D3 78 */ mr r3, r26
+/* 802F2F44 002EEBA4 A0 04 00 02 */ lhz r0, 2(r4)
+/* 802F2F48 002EEBA8 54 04 06 3E */ clrlwi r4, r0, 0x18
+/* 802F2F4C 002EEBAC 4B FF F3 35 */ bl MPiAddRssi
+/* 802F2F50 002EEBB0 7F 43 D3 78 */ mr r3, r26
+/* 802F2F54 002EEBB4 4B FF F3 69 */ bl MPiUpdateLifeTime
+/* 802F2F58 002EEBB8 48 00 00 1C */ b lbl_802F2F74
+lbl_802F2F5C:
+/* 802F2F5C 002EEBBC 7F A0 D0 30 */ slw r0, r29, r26
+/* 802F2F60 002EEBC0 7F C0 00 39 */ and. r0, r30, r0
+/* 802F2F64 002EEBC4 41 82 00 10 */ beq lbl_802F2F74
+/* 802F2F68 002EEBC8 7F 43 D3 78 */ mr r3, r26
+/* 802F2F6C 002EEBCC 38 80 00 AF */ li r4, 0xaf
+/* 802F2F70 002EEBD0 4B FF F3 11 */ bl MPiAddRssi
+lbl_802F2F74:
+/* 802F2F74 002EEBD4 3B 7B 00 01 */ addi r27, r27, 1
+/* 802F2F78 002EEBD8 3B 9C 00 04 */ addi r28, r28, 4
+/* 802F2F7C 002EEBDC 2C 1B 00 0F */ cmpwi r27, 0xf
+/* 802F2F80 002EEBE0 41 80 FF 88 */ blt lbl_802F2F08
+/* 802F2F84 002EEBE4 7F E3 FB 78 */ mr r3, r31
+/* 802F2F88 002EEBE8 4B FF E8 99 */ bl MPiProcessDataSentNotification
+/* 802F2F8C 002EEBEC 7F E3 FB 78 */ mr r3, r31
+lbl_802F2F90:
+/* 802F2F90 002EEBF0 39 61 00 60 */ addi r11, r1, 0x60
+/* 802F2F94 002EEBF4 4B ED 41 DD */ bl _restgpr_26
+/* 802F2F98 002EEBF8 80 01 00 64 */ lwz r0, 0x64(r1)
+/* 802F2F9C 002EEBFC 7C 08 03 A6 */ mtlr r0
+/* 802F2FA0 002EEC00 38 21 00 60 */ addi r1, r1, 0x60
+/* 802F2FA4 002EEC04 4E 80 00 20 */ blr
+
+.global GetTmptt
+GetTmptt:
+/* 802F2FA8 002EEC08 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F2FAC 002EEC0C 7C 08 02 A6 */ mflr r0
+/* 802F2FB0 002EEC10 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F2FB4 002EEC14 54 80 04 21 */ rlwinm. r0, r4, 0, 0x10, 0x10
+/* 802F2FB8 002EEC18 38 04 00 1C */ addi r0, r4, 0x1c
+/* 802F2FBC 002EEC1C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F2FC0 002EEC20 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F2FC4 002EEC24 7C 7E 1B 78 */ mr r30, r3
+/* 802F2FC8 002EEC28 54 03 10 3A */ slwi r3, r0, 2
+/* 802F2FCC 002EEC2C 3B E3 00 66 */ addi r31, r3, 0x66
+/* 802F2FD0 002EEC30 41 82 00 08 */ beq lbl_802F2FD8
+/* 802F2FD4 002EEC34 54 9F 04 7E */ clrlwi r31, r4, 0x11
+lbl_802F2FD8:
+/* 802F2FD8 002EEC38 7C A3 2B 78 */ mr r3, r5
+/* 802F2FDC 002EEC3C 4B FF DB FD */ bl MPiCountPopulation
+/* 802F2FE0 002EEC40 54 60 06 3E */ clrlwi r0, r3, 0x18
+/* 802F2FE4 002EEC44 38 7E 00 22 */ addi r3, r30, 0x22
+/* 802F2FE8 002EEC48 7C 1F 01 D6 */ mullw r0, r31, r0
+/* 802F2FEC 002EEC4C 54 63 10 3A */ slwi r3, r3, 2
+/* 802F2FF0 002EEC50 3B E3 00 60 */ addi r31, r3, 0x60
+/* 802F2FF4 002EEC54 7C 7F 02 14 */ add r3, r31, r0
+/* 802F2FF8 002EEC58 3B E3 03 88 */ addi r31, r3, 0x388
+/* 802F2FFC 002EEC5C 4B F7 F7 BD */ bl OSGetTime
+/* 802F3000 002EEC60 3C 60 80 00 */ lis r3, 0x800000F8@ha
+/* 802F3004 002EEC64 3C A0 43 1C */ lis r5, 0x431BDE83@ha
+/* 802F3008 002EEC68 80 03 00 F8 */ lwz r0, 0x800000F8@l(r3)
+/* 802F300C 002EEC6C 3C 60 CC CD */ lis r3, 0xCCCCCCCD@ha
+/* 802F3010 002EEC70 38 A5 DE 83 */ addi r5, r5, 0x431BDE83@l
+/* 802F3014 002EEC74 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3018 002EEC78 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F301C 002EEC7C 38 E3 CC CD */ addi r7, r3, 0xCCCCCCCD@l
+/* 802F3020 002EEC80 7C 05 00 16 */ mulhwu r0, r5, r0
+/* 802F3024 002EEC84 80 66 6D DC */ lwz r3, 0x6ddc(r6)
+/* 802F3028 002EEC88 7C 64 18 50 */ subf r3, r4, r3
+/* 802F302C 002EEC8C 54 63 18 38 */ slwi r3, r3, 3
+/* 802F3030 002EEC90 54 00 8B FE */ srwi r0, r0, 0xf
+/* 802F3034 002EEC94 7C 03 03 96 */ divwu r0, r3, r0
+/* 802F3038 002EEC98 7C 07 00 16 */ mulhwu r0, r7, r0
+/* 802F303C 002EEC9C 54 03 E8 FE */ srwi r3, r0, 3
+/* 802F3040 002EECA0 34 63 FF EC */ addic. r3, r3, -20
+/* 802F3044 002EECA4 40 80 00 08 */ bge lbl_802F304C
+/* 802F3048 002EECA8 38 60 00 00 */ li r3, 0
+lbl_802F304C:
+/* 802F304C 002EECAC 1C 03 00 0A */ mulli r0, r3, 0xa
+/* 802F3050 002EECB0 7C 00 F8 40 */ cmplw r0, r31
+/* 802F3054 002EECB4 40 80 00 08 */ bge lbl_802F305C
+/* 802F3058 002EECB8 38 60 00 00 */ li r3, 0
+lbl_802F305C:
+/* 802F305C 002EECBC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F3060 002EECC0 54 63 04 3E */ clrlwi r3, r3, 0x10
+/* 802F3064 002EECC4 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F3068 002EECC8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F306C 002EECCC 7C 08 03 A6 */ mtlr r0
+/* 802F3070 002EECD0 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F3074 002EECD4 4E 80 00 20 */ blr
+
+IntervalAlarmHandler:
+/* 802F3078 002EECD8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F307C 002EECDC 7C 08 02 A6 */ mflr r0
+/* 802F3080 002EECE0 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3084 002EECE4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F3088 002EECE8 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F308C 002EECEC 3B E3 6D 98 */ addi r31, r3, 0x6d98
+/* 802F3090 002EECF0 7F E3 FB 78 */ mr r3, r31
+/* 802F3094 002EECF4 4B F7 DE 9D */ bl OSTryWaitSemaphore
+/* 802F3098 002EECF8 7F E3 FB 78 */ mr r3, r31
+/* 802F309C 002EECFC 4B F7 DE E5 */ bl OSSignalSemaphore
+/* 802F30A0 002EED00 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F30A4 002EED04 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F30A8 002EED08 7C 08 03 A6 */ mtlr r0
+/* 802F30AC 002EED0C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F30B0 002EED10 4E 80 00 20 */ blr
+
+PictureFrameAlarmHandler:
+/* 802F30B4 002EED14 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F30B8 002EED18 7C 08 02 A6 */ mflr r0
+/* 802F30BC 002EED1C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F30C0 002EED20 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F30C4 002EED24 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F30C8 002EED28 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F30CC 002EED2C 4B F7 F6 ED */ bl OSGetTime
+/* 802F30D0 002EED30 3C C0 80 00 */ lis r6, 0x800000F8@ha
+/* 802F30D4 002EED34 3C A0 43 1C */ lis r5, 0x431BDE83@ha
+/* 802F30D8 002EED38 80 06 00 F8 */ lwz r0, 0x800000F8@l(r6)
+/* 802F30DC 002EED3C 38 C5 DE 83 */ addi r6, r5, 0x431BDE83@l
+/* 802F30E0 002EED40 38 A0 00 00 */ li r5, 0
+/* 802F30E4 002EED44 3B FE 6D A4 */ addi r31, r30, 0x6da4
+/* 802F30E8 002EED48 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F30EC 002EED4C 7C 06 00 16 */ mulhwu r0, r6, r0
+/* 802F30F0 002EED50 54 00 8B FE */ srwi r0, r0, 0xf
+/* 802F30F4 002EED54 1C 00 41 50 */ mulli r0, r0, 0x4150
+/* 802F30F8 002EED58 54 00 E8 FE */ srwi r0, r0, 3
+/* 802F30FC 002EED5C 7C 00 20 14 */ addc r0, r0, r4
+/* 802F3100 002EED60 90 1E 6D DC */ stw r0, 0x6ddc(r30)
+/* 802F3104 002EED64 7C 05 19 14 */ adde r0, r5, r3
+/* 802F3108 002EED68 7F E3 FB 78 */ mr r3, r31
+/* 802F310C 002EED6C 90 1E 6D D8 */ stw r0, 0x6dd8(r30)
+/* 802F3110 002EED70 4B F7 DE 21 */ bl OSTryWaitSemaphore
+/* 802F3114 002EED74 7F E3 FB 78 */ mr r3, r31
+/* 802F3118 002EED78 4B F7 DE 69 */ bl OSSignalSemaphore
+/* 802F311C 002EED7C 38 7E 6D B0 */ addi r3, r30, 0x6db0
+/* 802F3120 002EED80 38 80 00 00 */ li r4, 0
+/* 802F3124 002EED84 38 A0 00 00 */ li r5, 0
+/* 802F3128 002EED88 4B F7 BE 31 */ bl OSSendMessage
+/* 802F312C 002EED8C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F3130 002EED90 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F3134 002EED94 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F3138 002EED98 7C 08 03 A6 */ mtlr r0
+/* 802F313C 002EED9C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F3140 002EEDA0 4E 80 00 20 */ blr
+
+ParentPeriodicAlarmHandler:
+/* 802F3144 002EEDA4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3148 002EEDA8 38 80 00 00 */ li r4, 0
+/* 802F314C 002EEDAC 38 A0 00 00 */ li r5, 0
+/* 802F3150 002EEDB0 38 63 66 B4 */ addi r3, r3, 0x66b4
+/* 802F3154 002EEDB4 4B F7 BE 04 */ b OSSendMessage
diff --git a/asm/SDK/MP/mpport.s b/asm/SDK/MP/mpport.s
new file mode 100644
index 0000000..a47435e
--- /dev/null
+++ b/asm/SDK/MP/mpport.s
@@ -0,0 +1,399 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MPiStartupPort
+MPiStartupPort:
+/* 802F3320 002EEF80 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F3324 002EEF84 7C 08 02 A6 */ mflr r0
+/* 802F3328 002EEF88 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F332C 002EEF8C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F3330 002EEF90 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3334 002EEF94 38 7F 72 E0 */ addi r3, r31, 0x72e0
+/* 802F3338 002EEF98 4B F7 C5 D9 */ bl OSInitMutex
+/* 802F333C 002EEF9C 38 7F 58 D2 */ addi r3, r31, 0x58d2
+/* 802F3340 002EEFA0 38 80 00 00 */ li r4, 0
+/* 802F3344 002EEFA4 38 A0 00 10 */ li r5, 0x10
+/* 802F3348 002EEFA8 4B D1 0D BD */ bl memset
+/* 802F334C 002EEFAC 38 7F 57 D2 */ addi r3, r31, 0x57d2
+/* 802F3350 002EEFB0 38 80 00 00 */ li r4, 0
+/* 802F3354 002EEFB4 38 A0 01 00 */ li r5, 0x100
+/* 802F3358 002EEFB8 4B D1 0D AD */ bl memset
+/* 802F335C 002EEFBC 38 00 00 04 */ li r0, 4
+/* 802F3360 002EEFC0 38 80 00 00 */ li r4, 0
+/* 802F3364 002EEFC4 38 60 00 01 */ li r3, 1
+/* 802F3368 002EEFC8 7C 09 03 A6 */ mtctr r0
+lbl_802F336C:
+/* 802F336C 002EEFCC 7C BF 22 14 */ add r5, r31, r4
+/* 802F3370 002EEFD0 38 84 00 02 */ addi r4, r4, 2
+/* 802F3374 002EEFD4 B0 65 57 D2 */ sth r3, 0x57d2(r5)
+/* 802F3378 002EEFD8 B0 65 57 F2 */ sth r3, 0x57f2(r5)
+/* 802F337C 002EEFDC B0 65 58 12 */ sth r3, 0x5812(r5)
+/* 802F3380 002EEFE0 B0 65 58 32 */ sth r3, 0x5832(r5)
+/* 802F3384 002EEFE4 B0 65 58 52 */ sth r3, 0x5852(r5)
+/* 802F3388 002EEFE8 B0 65 58 72 */ sth r3, 0x5872(r5)
+/* 802F338C 002EEFEC B0 65 58 92 */ sth r3, 0x5892(r5)
+/* 802F3390 002EEFF0 B0 65 58 B2 */ sth r3, 0x58b2(r5)
+/* 802F3394 002EEFF4 7C BF 22 14 */ add r5, r31, r4
+/* 802F3398 002EEFF8 38 84 00 02 */ addi r4, r4, 2
+/* 802F339C 002EEFFC B0 65 57 D2 */ sth r3, 0x57d2(r5)
+/* 802F33A0 002EF000 B0 65 57 F2 */ sth r3, 0x57f2(r5)
+/* 802F33A4 002EF004 B0 65 58 12 */ sth r3, 0x5812(r5)
+/* 802F33A8 002EF008 B0 65 58 32 */ sth r3, 0x5832(r5)
+/* 802F33AC 002EF00C B0 65 58 52 */ sth r3, 0x5852(r5)
+/* 802F33B0 002EF010 B0 65 58 72 */ sth r3, 0x5872(r5)
+/* 802F33B4 002EF014 B0 65 58 92 */ sth r3, 0x5892(r5)
+/* 802F33B8 002EF018 B0 65 58 B2 */ sth r3, 0x58b2(r5)
+/* 802F33BC 002EF01C 7C BF 22 14 */ add r5, r31, r4
+/* 802F33C0 002EF020 38 84 00 02 */ addi r4, r4, 2
+/* 802F33C4 002EF024 B0 65 57 D2 */ sth r3, 0x57d2(r5)
+/* 802F33C8 002EF028 B0 65 57 F2 */ sth r3, 0x57f2(r5)
+/* 802F33CC 002EF02C B0 65 58 12 */ sth r3, 0x5812(r5)
+/* 802F33D0 002EF030 B0 65 58 32 */ sth r3, 0x5832(r5)
+/* 802F33D4 002EF034 B0 65 58 52 */ sth r3, 0x5852(r5)
+/* 802F33D8 002EF038 B0 65 58 72 */ sth r3, 0x5872(r5)
+/* 802F33DC 002EF03C B0 65 58 92 */ sth r3, 0x5892(r5)
+/* 802F33E0 002EF040 B0 65 58 B2 */ sth r3, 0x58b2(r5)
+/* 802F33E4 002EF044 7C BF 22 14 */ add r5, r31, r4
+/* 802F33E8 002EF048 38 84 00 02 */ addi r4, r4, 2
+/* 802F33EC 002EF04C B0 65 57 D2 */ sth r3, 0x57d2(r5)
+/* 802F33F0 002EF050 B0 65 57 F2 */ sth r3, 0x57f2(r5)
+/* 802F33F4 002EF054 B0 65 58 12 */ sth r3, 0x5812(r5)
+/* 802F33F8 002EF058 B0 65 58 32 */ sth r3, 0x5832(r5)
+/* 802F33FC 002EF05C B0 65 58 52 */ sth r3, 0x5852(r5)
+/* 802F3400 002EF060 B0 65 58 72 */ sth r3, 0x5872(r5)
+/* 802F3404 002EF064 B0 65 58 92 */ sth r3, 0x5892(r5)
+/* 802F3408 002EF068 B0 65 58 B2 */ sth r3, 0x58b2(r5)
+/* 802F340C 002EF06C 42 00 FF 60 */ bdnz lbl_802F336C
+/* 802F3410 002EF070 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F3414 002EF074 38 60 00 00 */ li r3, 0
+/* 802F3418 002EF078 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F341C 002EF07C 7C 08 03 A6 */ mtlr r0
+/* 802F3420 002EF080 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F3424 002EF084 4E 80 00 20 */ blr
+
+.global MPiStartupPortLater
+MPiStartupPortLater:
+/* 802F3428 002EF088 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F342C 002EF08C 7C 08 02 A6 */ mflr r0
+/* 802F3430 002EF090 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F3434 002EF094 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F3438 002EF098 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F343C 002EF09C 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F3440 002EF0A0 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3444 002EF0A4 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802F3448 002EF0A8 3B DD 72 E0 */ addi r30, r29, 0x72e0
+/* 802F344C 002EF0AC 7F C3 F3 78 */ mr r3, r30
+/* 802F3450 002EF0B0 4B F7 C4 F9 */ bl OSLockMutex
+/* 802F3454 002EF0B4 3B 9D 72 F8 */ addi r28, r29, 0x72f8
+/* 802F3458 002EF0B8 38 80 00 00 */ li r4, 0
+/* 802F345C 002EF0BC 7F 83 E3 78 */ mr r3, r28
+/* 802F3460 002EF0C0 38 A0 00 40 */ li r5, 0x40
+/* 802F3464 002EF0C4 4B D1 0C A1 */ bl memset
+/* 802F3468 002EF0C8 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F346C 002EF0CC 41 82 00 58 */ beq lbl_802F34C4
+/* 802F3470 002EF0D0 38 60 00 00 */ li r3, 0
+/* 802F3474 002EF0D4 38 00 00 01 */ li r0, 1
+/* 802F3478 002EF0D8 90 7C 00 00 */ stw r3, 0(r28)
+/* 802F347C 002EF0DC 3B E0 00 00 */ li r31, 0
+/* 802F3480 002EF0E0 90 1C 00 04 */ stw r0, 4(r28)
+lbl_802F3484:
+/* 802F3484 002EF0E4 93 FC 00 08 */ stw r31, 8(r28)
+/* 802F3488 002EF0E8 81 9D 00 B4 */ lwz r12, 0xb4(r29)
+/* 802F348C 002EF0EC 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F3490 002EF0F0 41 82 00 14 */ beq lbl_802F34A4
+/* 802F3494 002EF0F4 7F 84 E3 78 */ mr r4, r28
+/* 802F3498 002EF0F8 38 60 00 01 */ li r3, 1
+/* 802F349C 002EF0FC 7D 89 03 A6 */ mtctr r12
+/* 802F34A0 002EF100 4E 80 04 21 */ bctrl
+lbl_802F34A4:
+/* 802F34A4 002EF104 3B FF 00 01 */ addi r31, r31, 1
+/* 802F34A8 002EF108 3B BD 00 08 */ addi r29, r29, 8
+/* 802F34AC 002EF10C 28 1F 00 10 */ cmplwi r31, 0x10
+/* 802F34B0 002EF110 41 80 FF D4 */ blt lbl_802F3484
+/* 802F34B4 002EF114 7F C3 F3 78 */ mr r3, r30
+/* 802F34B8 002EF118 3B A0 00 00 */ li r29, 0
+/* 802F34BC 002EF11C 4B F7 C5 69 */ bl OSUnlockMutex
+/* 802F34C0 002EF120 48 00 00 08 */ b lbl_802F34C8
+lbl_802F34C4:
+/* 802F34C4 002EF124 3B A0 FF FF */ li r29, -1
+lbl_802F34C8:
+/* 802F34C8 002EF128 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F34CC 002EF12C 7F A3 EB 78 */ mr r3, r29
+/* 802F34D0 002EF130 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F34D4 002EF134 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F34D8 002EF138 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802F34DC 002EF13C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F34E0 002EF140 7C 08 03 A6 */ mtlr r0
+/* 802F34E4 002EF144 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F34E8 002EF148 4E 80 00 20 */ blr
+
+.global MPiCleanupPort
+MPiCleanupPort:
+/* 802F34EC 002EF14C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F34F0 002EF150 7C 08 02 A6 */ mflr r0
+/* 802F34F4 002EF154 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F34F8 002EF158 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F34FC 002EF15C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F3500 002EF160 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F3504 002EF164 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3508 002EF168 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802F350C 002EF16C 2C 1D 00 00 */ cmpwi r29, 0
+/* 802F3510 002EF170 41 82 00 9C */ beq lbl_802F35AC
+/* 802F3514 002EF174 3B DD 72 E0 */ addi r30, r29, 0x72e0
+/* 802F3518 002EF178 7F C3 F3 78 */ mr r3, r30
+/* 802F351C 002EF17C 4B F7 C4 2D */ bl OSLockMutex
+/* 802F3520 002EF180 3B 9D 72 F8 */ addi r28, r29, 0x72f8
+/* 802F3524 002EF184 38 80 00 00 */ li r4, 0
+/* 802F3528 002EF188 7F 83 E3 78 */ mr r3, r28
+/* 802F352C 002EF18C 38 A0 00 40 */ li r5, 0x40
+/* 802F3530 002EF190 4B D1 0B D5 */ bl memset
+/* 802F3534 002EF194 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F3538 002EF198 41 82 00 50 */ beq lbl_802F3588
+/* 802F353C 002EF19C 38 60 00 00 */ li r3, 0
+/* 802F3540 002EF1A0 38 00 00 02 */ li r0, 2
+/* 802F3544 002EF1A4 90 7C 00 00 */ stw r3, 0(r28)
+/* 802F3548 002EF1A8 3B E0 00 00 */ li r31, 0
+/* 802F354C 002EF1AC 90 1C 00 04 */ stw r0, 4(r28)
+lbl_802F3550:
+/* 802F3550 002EF1B0 93 FC 00 08 */ stw r31, 8(r28)
+/* 802F3554 002EF1B4 81 9D 00 B4 */ lwz r12, 0xb4(r29)
+/* 802F3558 002EF1B8 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F355C 002EF1BC 41 82 00 14 */ beq lbl_802F3570
+/* 802F3560 002EF1C0 7F 84 E3 78 */ mr r4, r28
+/* 802F3564 002EF1C4 38 60 00 02 */ li r3, 2
+/* 802F3568 002EF1C8 7D 89 03 A6 */ mtctr r12
+/* 802F356C 002EF1CC 4E 80 04 21 */ bctrl
+lbl_802F3570:
+/* 802F3570 002EF1D0 3B FF 00 01 */ addi r31, r31, 1
+/* 802F3574 002EF1D4 3B BD 00 08 */ addi r29, r29, 8
+/* 802F3578 002EF1D8 28 1F 00 10 */ cmplwi r31, 0x10
+/* 802F357C 002EF1DC 41 80 FF D4 */ blt lbl_802F3550
+/* 802F3580 002EF1E0 7F C3 F3 78 */ mr r3, r30
+/* 802F3584 002EF1E4 4B F7 C4 A1 */ bl OSUnlockMutex
+lbl_802F3588:
+/* 802F3588 002EF1E8 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F358C 002EF1EC 38 80 00 00 */ li r4, 0
+/* 802F3590 002EF1F0 38 A0 00 10 */ li r5, 0x10
+/* 802F3594 002EF1F4 38 7D 58 D2 */ addi r3, r29, 0x58d2
+/* 802F3598 002EF1F8 4B D1 0B 6D */ bl memset
+/* 802F359C 002EF1FC 38 7D 57 D2 */ addi r3, r29, 0x57d2
+/* 802F35A0 002EF200 38 80 00 00 */ li r4, 0
+/* 802F35A4 002EF204 38 A0 01 00 */ li r5, 0x100
+/* 802F35A8 002EF208 4B D1 0B 5D */ bl memset
+lbl_802F35AC:
+/* 802F35AC 002EF20C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F35B0 002EF210 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F35B4 002EF214 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F35B8 002EF218 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F35BC 002EF21C 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802F35C0 002EF220 7C 08 03 A6 */ mtlr r0
+/* 802F35C4 002EF224 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F35C8 002EF228 4E 80 00 20 */ blr
+
+.global MPiResetPortByAid
+MPiResetPortByAid:
+/* 802F35CC 002EF22C 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F35D0 002EF230 54 63 08 3C */ slwi r3, r3, 1
+/* 802F35D4 002EF234 38 00 00 01 */ li r0, 1
+/* 802F35D8 002EF238 38 84 57 D2 */ addi r4, r4, 0x57d2
+/* 802F35DC 002EF23C 7C 04 1B 2E */ sthx r0, r4, r3
+/* 802F35E0 002EF240 7C 64 1A 14 */ add r3, r4, r3
+/* 802F35E4 002EF244 B0 03 00 20 */ sth r0, 0x20(r3)
+/* 802F35E8 002EF248 B0 03 00 40 */ sth r0, 0x40(r3)
+/* 802F35EC 002EF24C B0 03 00 60 */ sth r0, 0x60(r3)
+/* 802F35F0 002EF250 B0 03 00 80 */ sth r0, 0x80(r3)
+/* 802F35F4 002EF254 B0 03 00 A0 */ sth r0, 0xa0(r3)
+/* 802F35F8 002EF258 B0 03 00 C0 */ sth r0, 0xc0(r3)
+/* 802F35FC 002EF25C B0 03 00 E0 */ sth r0, 0xe0(r3)
+/* 802F3600 002EF260 4E 80 00 20 */ blr
+
+.global MPiNotifyDataSentToPort
+MPiNotifyDataSentToPort:
+/* 802F3604 002EF264 80 A4 00 30 */ lwz r5, 0x30(r4)
+/* 802F3608 002EF268 2C 05 00 00 */ cmpwi r5, 0
+/* 802F360C 002EF26C 41 82 00 0C */ beq lbl_802F3618
+/* 802F3610 002EF270 80 04 00 2C */ lwz r0, 0x2c(r4)
+/* 802F3614 002EF274 90 05 00 00 */ stw r0, 0(r5)
+lbl_802F3618:
+/* 802F3618 002EF278 4B FF D4 D8 */ b MPiRespondToWaitingRequest
+
+.global MPiNotifyDataReceivedToPort
+MPiNotifyDataReceivedToPort:
+/* 802F361C 002EF27C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F3620 002EF280 7C 08 02 A6 */ mflr r0
+/* 802F3624 002EF284 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F3628 002EF288 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F362C 002EF28C 4B ED 3A F1 */ bl _savegpr_24
+/* 802F3630 002EF290 2C 06 00 00 */ cmpwi r6, 0
+/* 802F3634 002EF294 7C 78 1B 78 */ mr r24, r3
+/* 802F3638 002EF298 7C 99 23 78 */ mr r25, r4
+/* 802F363C 002EF29C 7C BA 2B 78 */ mr r26, r5
+/* 802F3640 002EF2A0 7C DB 33 78 */ mr r27, r6
+/* 802F3644 002EF2A4 7C FC 3B 78 */ mr r28, r7
+/* 802F3648 002EF2A8 41 82 00 9C */ beq lbl_802F36E4
+/* 802F364C 002EF2AC 28 03 00 10 */ cmplwi r3, 0x10
+/* 802F3650 002EF2B0 40 80 00 94 */ bge lbl_802F36E4
+/* 802F3654 002EF2B4 28 06 02 04 */ cmplwi r6, 0x204
+/* 802F3658 002EF2B8 40 80 00 8C */ bge lbl_802F36E4
+/* 802F365C 002EF2BC 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3660 002EF2C0 3B DD 72 E0 */ addi r30, r29, 0x72e0
+/* 802F3664 002EF2C4 7F C3 F3 78 */ mr r3, r30
+/* 802F3668 002EF2C8 4B F7 C2 E1 */ bl OSLockMutex
+/* 802F366C 002EF2CC 3B FD 72 F8 */ addi r31, r29, 0x72f8
+/* 802F3670 002EF2D0 38 80 00 00 */ li r4, 0
+/* 802F3674 002EF2D4 7F E3 FB 78 */ mr r3, r31
+/* 802F3678 002EF2D8 38 A0 00 40 */ li r5, 0x40
+/* 802F367C 002EF2DC 4B D1 0A 89 */ bl memset
+/* 802F3680 002EF2E0 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F3684 002EF2E4 41 82 00 60 */ beq lbl_802F36E4
+/* 802F3688 002EF2E8 38 00 00 00 */ li r0, 0
+/* 802F368C 002EF2EC 28 18 00 10 */ cmplwi r24, 0x10
+/* 802F3690 002EF2F0 90 1F 00 00 */ stw r0, 0(r31)
+/* 802F3694 002EF2F4 93 3F 00 10 */ stw r25, 0x10(r31)
+/* 802F3698 002EF2F8 93 5F 00 14 */ stw r26, 0x14(r31)
+/* 802F369C 002EF2FC 93 7F 00 18 */ stw r27, 0x18(r31)
+/* 802F36A0 002EF300 93 9F 00 1C */ stw r28, 0x1c(r31)
+/* 802F36A4 002EF304 40 80 00 38 */ bge lbl_802F36DC
+/* 802F36A8 002EF308 90 1F 00 00 */ stw r0, 0(r31)
+/* 802F36AC 002EF30C 57 00 18 38 */ slwi r0, r24, 3
+/* 802F36B0 002EF310 38 80 00 03 */ li r4, 3
+/* 802F36B4 002EF314 93 1F 00 08 */ stw r24, 8(r31)
+/* 802F36B8 002EF318 7C 7D 02 14 */ add r3, r29, r0
+/* 802F36BC 002EF31C 90 9F 00 04 */ stw r4, 4(r31)
+/* 802F36C0 002EF320 81 83 00 B4 */ lwz r12, 0xb4(r3)
+/* 802F36C4 002EF324 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F36C8 002EF328 41 82 00 14 */ beq lbl_802F36DC
+/* 802F36CC 002EF32C 7F E4 FB 78 */ mr r4, r31
+/* 802F36D0 002EF330 38 60 00 03 */ li r3, 3
+/* 802F36D4 002EF334 7D 89 03 A6 */ mtctr r12
+/* 802F36D8 002EF338 4E 80 04 21 */ bctrl
+lbl_802F36DC:
+/* 802F36DC 002EF33C 7F C3 F3 78 */ mr r3, r30
+/* 802F36E0 002EF340 4B F7 C3 45 */ bl OSUnlockMutex
+lbl_802F36E4:
+/* 802F36E4 002EF344 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F36E8 002EF348 4B ED 3A 81 */ bl _restgpr_24
+/* 802F36EC 002EF34C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F36F0 002EF350 7C 08 03 A6 */ mtlr r0
+/* 802F36F4 002EF354 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F36F8 002EF358 4E 80 00 20 */ blr
+
+.global MPiNotifyConnectedToPort
+MPiNotifyConnectedToPort:
+/* 802F36FC 002EF35C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F3700 002EF360 7C 08 02 A6 */ mflr r0
+/* 802F3704 002EF364 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F3708 002EF368 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F370C 002EF36C 4B ED 3A 11 */ bl _savegpr_24
+/* 802F3710 002EF370 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F3714 002EF374 7C 78 1B 78 */ mr r24, r3
+/* 802F3718 002EF378 7C 99 23 78 */ mr r25, r4
+/* 802F371C 002EF37C 7C BA 2B 78 */ mr r26, r5
+/* 802F3720 002EF380 3B DD 72 E0 */ addi r30, r29, 0x72e0
+/* 802F3724 002EF384 7C DB 33 78 */ mr r27, r6
+/* 802F3728 002EF388 7F C3 F3 78 */ mr r3, r30
+/* 802F372C 002EF38C 4B F7 C2 1D */ bl OSLockMutex
+/* 802F3730 002EF390 3B 9D 72 F8 */ addi r28, r29, 0x72f8
+/* 802F3734 002EF394 38 80 00 00 */ li r4, 0
+/* 802F3738 002EF398 7F 83 E3 78 */ mr r3, r28
+/* 802F373C 002EF39C 38 A0 00 40 */ li r5, 0x40
+/* 802F3740 002EF3A0 4B D1 09 C5 */ bl memset
+/* 802F3744 002EF3A4 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F3748 002EF3A8 41 82 00 7C */ beq lbl_802F37C4
+/* 802F374C 002EF3AC 3B E0 00 00 */ li r31, 0
+/* 802F3750 002EF3B0 7F 24 CB 78 */ mr r4, r25
+/* 802F3754 002EF3B4 93 FC 00 00 */ stw r31, 0(r28)
+/* 802F3758 002EF3B8 38 7C 00 18 */ addi r3, r28, 0x18
+/* 802F375C 002EF3BC 38 A0 00 06 */ li r5, 6
+/* 802F3760 002EF3C0 93 1C 00 10 */ stw r24, 0x10(r28)
+/* 802F3764 002EF3C4 93 7C 00 14 */ stw r27, 0x14(r28)
+/* 802F3768 002EF3C8 4B D1 08 99 */ bl memcpy
+/* 802F376C 002EF3CC 7F 44 D3 78 */ mr r4, r26
+/* 802F3770 002EF3D0 38 7C 00 1E */ addi r3, r28, 0x1e
+/* 802F3774 002EF3D4 38 A0 00 20 */ li r5, 0x20
+/* 802F3778 002EF3D8 4B D1 08 89 */ bl memcpy
+/* 802F377C 002EF3DC 93 FC 00 00 */ stw r31, 0(r28)
+/* 802F3780 002EF3E0 38 00 00 04 */ li r0, 4
+/* 802F3784 002EF3E4 3B E0 00 00 */ li r31, 0
+/* 802F3788 002EF3E8 90 1C 00 04 */ stw r0, 4(r28)
+lbl_802F378C:
+/* 802F378C 002EF3EC 93 FC 00 08 */ stw r31, 8(r28)
+/* 802F3790 002EF3F0 81 9D 00 B4 */ lwz r12, 0xb4(r29)
+/* 802F3794 002EF3F4 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F3798 002EF3F8 41 82 00 14 */ beq lbl_802F37AC
+/* 802F379C 002EF3FC 7F 84 E3 78 */ mr r4, r28
+/* 802F37A0 002EF400 38 60 00 04 */ li r3, 4
+/* 802F37A4 002EF404 7D 89 03 A6 */ mtctr r12
+/* 802F37A8 002EF408 4E 80 04 21 */ bctrl
+lbl_802F37AC:
+/* 802F37AC 002EF40C 3B FF 00 01 */ addi r31, r31, 1
+/* 802F37B0 002EF410 3B BD 00 08 */ addi r29, r29, 8
+/* 802F37B4 002EF414 28 1F 00 10 */ cmplwi r31, 0x10
+/* 802F37B8 002EF418 41 80 FF D4 */ blt lbl_802F378C
+/* 802F37BC 002EF41C 7F C3 F3 78 */ mr r3, r30
+/* 802F37C0 002EF420 4B F7 C2 65 */ bl OSUnlockMutex
+lbl_802F37C4:
+/* 802F37C4 002EF424 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F37C8 002EF428 4B ED 39 A1 */ bl _restgpr_24
+/* 802F37CC 002EF42C 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F37D0 002EF430 7C 08 03 A6 */ mtlr r0
+/* 802F37D4 002EF434 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F37D8 002EF438 4E 80 00 20 */ blr
+
+.global MPiNotifyDisconnectedToPort
+MPiNotifyDisconnectedToPort:
+/* 802F37DC 002EF43C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F37E0 002EF440 7C 08 02 A6 */ mflr r0
+/* 802F37E4 002EF444 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F37E8 002EF448 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F37EC 002EF44C 4B ED 39 35 */ bl _savegpr_25
+/* 802F37F0 002EF450 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F37F4 002EF454 7C 79 1B 78 */ mr r25, r3
+/* 802F37F8 002EF458 7C 9A 23 78 */ mr r26, r4
+/* 802F37FC 002EF45C 7C BB 2B 78 */ mr r27, r5
+/* 802F3800 002EF460 3B DD 72 E0 */ addi r30, r29, 0x72e0
+/* 802F3804 002EF464 7F C3 F3 78 */ mr r3, r30
+/* 802F3808 002EF468 4B F7 C1 41 */ bl OSLockMutex
+/* 802F380C 002EF46C 3B 9D 72 F8 */ addi r28, r29, 0x72f8
+/* 802F3810 002EF470 38 80 00 00 */ li r4, 0
+/* 802F3814 002EF474 7F 83 E3 78 */ mr r3, r28
+/* 802F3818 002EF478 38 A0 00 40 */ li r5, 0x40
+/* 802F381C 002EF47C 4B D1 08 E9 */ bl memset
+/* 802F3820 002EF480 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F3824 002EF484 41 82 00 6C */ beq lbl_802F3890
+/* 802F3828 002EF488 3B E0 00 00 */ li r31, 0
+/* 802F382C 002EF48C 7F 64 DB 78 */ mr r4, r27
+/* 802F3830 002EF490 93 FC 00 00 */ stw r31, 0(r28)
+/* 802F3834 002EF494 38 7C 00 18 */ addi r3, r28, 0x18
+/* 802F3838 002EF498 38 A0 00 06 */ li r5, 6
+/* 802F383C 002EF49C 93 3C 00 10 */ stw r25, 0x10(r28)
+/* 802F3840 002EF4A0 93 5C 00 14 */ stw r26, 0x14(r28)
+/* 802F3844 002EF4A4 4B D1 07 BD */ bl memcpy
+/* 802F3848 002EF4A8 93 FC 00 00 */ stw r31, 0(r28)
+/* 802F384C 002EF4AC 38 00 00 05 */ li r0, 5
+/* 802F3850 002EF4B0 3B E0 00 00 */ li r31, 0
+/* 802F3854 002EF4B4 90 1C 00 04 */ stw r0, 4(r28)
+lbl_802F3858:
+/* 802F3858 002EF4B8 93 FC 00 08 */ stw r31, 8(r28)
+/* 802F385C 002EF4BC 81 9D 00 B4 */ lwz r12, 0xb4(r29)
+/* 802F3860 002EF4C0 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F3864 002EF4C4 41 82 00 14 */ beq lbl_802F3878
+/* 802F3868 002EF4C8 7F 84 E3 78 */ mr r4, r28
+/* 802F386C 002EF4CC 38 60 00 05 */ li r3, 5
+/* 802F3870 002EF4D0 7D 89 03 A6 */ mtctr r12
+/* 802F3874 002EF4D4 4E 80 04 21 */ bctrl
+lbl_802F3878:
+/* 802F3878 002EF4D8 3B FF 00 01 */ addi r31, r31, 1
+/* 802F387C 002EF4DC 3B BD 00 08 */ addi r29, r29, 8
+/* 802F3880 002EF4E0 28 1F 00 10 */ cmplwi r31, 0x10
+/* 802F3884 002EF4E4 41 80 FF D4 */ blt lbl_802F3858
+/* 802F3888 002EF4E8 7F C3 F3 78 */ mr r3, r30
+/* 802F388C 002EF4EC 4B F7 C1 99 */ bl OSUnlockMutex
+lbl_802F3890:
+/* 802F3890 002EF4F0 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F3894 002EF4F4 4B ED 38 D9 */ bl _restgpr_25
+/* 802F3898 002EF4F8 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F389C 002EF4FC 7C 08 03 A6 */ mtlr r0
+/* 802F38A0 002EF500 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F38A4 002EF504 4E 80 00 20 */ blr
diff --git a/asm/SDK/MP/mpsystem.s b/asm/SDK/MP/mpsystem.s
new file mode 100644
index 0000000..9bb48c5
--- /dev/null
+++ b/asm/SDK/MP/mpsystem.s
@@ -0,0 +1,496 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MPStartup
+MPStartup:
+/* 802F0588 002EC1E8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F058C 002EC1EC 7C 08 02 A6 */ mflr r0
+/* 802F0590 002EC1F0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F0594 002EC1F4 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F0598 002EC1F8 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F059C 002EC1FC 7C 7E 1B 78 */ mr r30, r3
+/* 802F05A0 002EC200 80 0D 8B F4 */ lwz r0, lbl_8063DEB4-_SDA_BASE_(r13)
+/* 802F05A4 002EC204 2C 00 00 00 */ cmpwi r0, 0
+/* 802F05A8 002EC208 41 80 00 0C */ blt lbl_802F05B4
+/* 802F05AC 002EC20C 38 60 FF 06 */ li r3, -250
+/* 802F05B0 002EC210 48 00 00 28 */ b lbl_802F05D8
+lbl_802F05B4:
+/* 802F05B4 002EC214 4B FF D1 9D */ bl NCDLockWirelessDriver
+/* 802F05B8 002EC218 2C 03 00 00 */ cmpwi r3, 0
+/* 802F05BC 002EC21C 40 80 00 14 */ bge lbl_802F05D0
+/* 802F05C0 002EC220 2C 03 FF FE */ cmpwi r3, -2
+/* 802F05C4 002EC224 41 82 00 0C */ beq lbl_802F05D0
+/* 802F05C8 002EC228 38 60 FF 06 */ li r3, -250
+/* 802F05CC 002EC22C 48 00 00 0C */ b lbl_802F05D8
+lbl_802F05D0:
+/* 802F05D0 002EC230 90 6D 8B F4 */ stw r3, lbl_8063DEB4-_SDA_BASE_(r13)
+/* 802F05D4 002EC234 38 60 00 00 */ li r3, 0
+lbl_802F05D8:
+/* 802F05D8 002EC238 2C 03 00 00 */ cmpwi r3, 0
+/* 802F05DC 002EC23C 40 80 00 08 */ bge lbl_802F05E4
+/* 802F05E0 002EC240 48 00 01 68 */ b lbl_802F0748
+lbl_802F05E4:
+/* 802F05E4 002EC244 4B F7 E1 79 */ bl OSDisableInterrupts
+/* 802F05E8 002EC248 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F05EC 002EC24C 7C 7F 1B 78 */ mr r31, r3
+/* 802F05F0 002EC250 2C 00 00 01 */ cmpwi r0, 1
+/* 802F05F4 002EC254 40 82 00 2C */ bne lbl_802F0620
+/* 802F05F8 002EC258 4B F7 E1 8D */ bl OSRestoreInterrupts
+/* 802F05FC 002EC25C 80 6D 8B F4 */ lwz r3, lbl_8063DEB4-_SDA_BASE_(r13)
+/* 802F0600 002EC260 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0604 002EC264 41 80 00 14 */ blt lbl_802F0618
+/* 802F0608 002EC268 38 00 FF FF */ li r0, -1
+/* 802F060C 002EC26C 90 0D 8B F4 */ stw r0, lbl_8063DEB4-_SDA_BASE_(r13)
+/* 802F0610 002EC270 4B FF D2 45 */ bl NCDUnlockWirelessDriver
+/* 802F0614 002EC274 2C 03 00 00 */ cmpwi r3, 0
+lbl_802F0618:
+/* 802F0618 002EC278 38 60 FF 14 */ li r3, -236
+/* 802F061C 002EC27C 48 00 01 2C */ b lbl_802F0748
+lbl_802F0620:
+/* 802F0620 002EC280 38 00 00 00 */ li r0, 0
+/* 802F0624 002EC284 80 6D 8B F0 */ lwz r3, lbl_8063DEB0-_SDA_BASE_(r13)
+/* 802F0628 002EC288 90 0D AF 38 */ stw r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F062C 002EC28C 4B F7 90 25 */ bl OSRegisterVersion
+/* 802F0630 002EC290 7F C3 F3 78 */ mr r3, r30
+/* 802F0634 002EC294 48 00 02 25 */ bl MPiStartupSystem
+/* 802F0638 002EC298 2C 03 00 00 */ cmpwi r3, 0
+/* 802F063C 002EC29C 7C 7E 1B 78 */ mr r30, r3
+/* 802F0640 002EC2A0 41 80 00 7C */ blt lbl_802F06BC
+/* 802F0644 002EC2A4 48 00 17 75 */ bl MPiStartupConnection
+/* 802F0648 002EC2A8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F064C 002EC2AC 7C 7E 1B 78 */ mr r30, r3
+/* 802F0650 002EC2B0 41 80 00 6C */ blt lbl_802F06BC
+/* 802F0654 002EC2B4 48 00 0E 35 */ bl MPiStartupTxRx
+/* 802F0658 002EC2B8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F065C 002EC2BC 7C 7E 1B 78 */ mr r30, r3
+/* 802F0660 002EC2C0 41 80 00 5C */ blt lbl_802F06BC
+/* 802F0664 002EC2C4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0668 002EC2C8 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 802F066C 002EC2CC 28 00 00 01 */ cmplwi r0, 1
+/* 802F0670 002EC2D0 40 82 00 14 */ bne lbl_802F0684
+/* 802F0674 002EC2D4 48 00 1D 91 */ bl MPiStartupParent
+/* 802F0678 002EC2D8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F067C 002EC2DC 7C 7E 1B 78 */ mr r30, r3
+/* 802F0680 002EC2E0 41 80 00 3C */ blt lbl_802F06BC
+lbl_802F0684:
+/* 802F0684 002EC2E4 48 00 2A D5 */ bl MPiStartupNotification
+/* 802F0688 002EC2E8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F068C 002EC2EC 7C 7E 1B 78 */ mr r30, r3
+/* 802F0690 002EC2F0 41 80 00 2C */ blt lbl_802F06BC
+/* 802F0694 002EC2F4 48 00 34 1D */ bl MPiStartupBeacon
+/* 802F0698 002EC2F8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F069C 002EC2FC 7C 7E 1B 78 */ mr r30, r3
+/* 802F06A0 002EC300 41 80 00 1C */ blt lbl_802F06BC
+/* 802F06A4 002EC304 48 00 2C 7D */ bl MPiStartupPort
+/* 802F06A8 002EC308 2C 03 00 00 */ cmpwi r3, 0
+/* 802F06AC 002EC30C 7C 7E 1B 78 */ mr r30, r3
+/* 802F06B0 002EC310 41 80 00 0C */ blt lbl_802F06BC
+/* 802F06B4 002EC314 38 00 00 01 */ li r0, 1
+/* 802F06B8 002EC318 90 0D AF 38 */ stw r0, lbl_806401F8-_SDA_BASE_(r13)
+lbl_802F06BC:
+/* 802F06BC 002EC31C 7F E3 FB 78 */ mr r3, r31
+/* 802F06C0 002EC320 4B F7 E0 C5 */ bl OSRestoreInterrupts
+/* 802F06C4 002EC324 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F06C8 002EC328 40 80 00 10 */ bge lbl_802F06D8
+/* 802F06CC 002EC32C 48 00 00 95 */ bl MPCleanup
+/* 802F06D0 002EC330 7F C3 F3 78 */ mr r3, r30
+/* 802F06D4 002EC334 48 00 00 74 */ b lbl_802F0748
+lbl_802F06D8:
+/* 802F06D8 002EC338 48 00 0E 0D */ bl MPiStartupTxRxLater
+/* 802F06DC 002EC33C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F06E0 002EC340 7C 7E 1B 78 */ mr r30, r3
+/* 802F06E4 002EC344 41 80 00 4C */ blt lbl_802F0730
+/* 802F06E8 002EC348 48 00 2D 41 */ bl MPiStartupPortLater
+/* 802F06EC 002EC34C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F06F0 002EC350 7C 7E 1B 78 */ mr r30, r3
+/* 802F06F4 002EC354 41 80 00 3C */ blt lbl_802F0730
+/* 802F06F8 002EC358 48 00 05 39 */ bl MPiStartupWD
+/* 802F06FC 002EC35C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0700 002EC360 7C 7E 1B 78 */ mr r30, r3
+/* 802F0704 002EC364 41 80 00 2C */ blt lbl_802F0730
+/* 802F0708 002EC368 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F070C 002EC36C 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 802F0710 002EC370 28 00 00 01 */ cmplwi r0, 1
+/* 802F0714 002EC374 40 82 00 14 */ bne lbl_802F0728
+/* 802F0718 002EC378 48 00 1E 35 */ bl MPiStartupParentLater
+/* 802F071C 002EC37C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0720 002EC380 7C 7E 1B 78 */ mr r30, r3
+/* 802F0724 002EC384 41 80 00 0C */ blt lbl_802F0730
+lbl_802F0728:
+/* 802F0728 002EC388 48 00 2A 7D */ bl MPiStartupNotificationLater
+/* 802F072C 002EC38C 7C 7E 1B 78 */ mr r30, r3
+lbl_802F0730:
+/* 802F0730 002EC390 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F0734 002EC394 40 80 00 10 */ bge lbl_802F0744
+/* 802F0738 002EC398 48 00 00 29 */ bl MPCleanup
+/* 802F073C 002EC39C 7F C3 F3 78 */ mr r3, r30
+/* 802F0740 002EC3A0 48 00 00 08 */ b lbl_802F0748
+lbl_802F0744:
+/* 802F0744 002EC3A4 38 60 00 00 */ li r3, 0
+lbl_802F0748:
+/* 802F0748 002EC3A8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F074C 002EC3AC 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F0750 002EC3B0 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F0754 002EC3B4 7C 08 03 A6 */ mtlr r0
+/* 802F0758 002EC3B8 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F075C 002EC3BC 4E 80 00 20 */ blr
+
+.global MPCleanup
+MPCleanup:
+/* 802F0760 002EC3C0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F0764 002EC3C4 7C 08 02 A6 */ mflr r0
+/* 802F0768 002EC3C8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F076C 002EC3CC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F0770 002EC3D0 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F0774 002EC3D4 48 00 06 01 */ bl MPiCleanupWD
+/* 802F0778 002EC3D8 80 6D 8B F4 */ lwz r3, lbl_8063DEB4-_SDA_BASE_(r13)
+/* 802F077C 002EC3DC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0780 002EC3E0 41 80 00 14 */ blt lbl_802F0794
+/* 802F0784 002EC3E4 38 00 FF FF */ li r0, -1
+/* 802F0788 002EC3E8 90 0D 8B F4 */ stw r0, lbl_8063DEB4-_SDA_BASE_(r13)
+/* 802F078C 002EC3EC 4B FF D0 C9 */ bl NCDUnlockWirelessDriver
+/* 802F0790 002EC3F0 2C 03 00 00 */ cmpwi r3, 0
+lbl_802F0794:
+/* 802F0794 002EC3F4 48 00 2A 79 */ bl MPiCleanupNotificationEarlier
+/* 802F0798 002EC3F8 48 00 1F C9 */ bl MPiCleanupParentEarlier
+/* 802F079C 002EC3FC 48 00 0D D1 */ bl MPiCleanupTxRxEarlier
+/* 802F07A0 002EC400 4B F7 DF BD */ bl OSDisableInterrupts
+/* 802F07A4 002EC404 3B E0 00 00 */ li r31, 0
+/* 802F07A8 002EC408 7C 7E 1B 78 */ mr r30, r3
+/* 802F07AC 002EC40C 93 ED AF 38 */ stw r31, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F07B0 002EC410 48 00 2D 3D */ bl MPiCleanupPort
+/* 802F07B4 002EC414 48 00 33 79 */ bl MPiCleanupBeacon
+/* 802F07B8 002EC418 48 00 2A AD */ bl MPiCleanupNotification
+/* 802F07BC 002EC41C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F07C0 002EC420 7C 03 F8 40 */ cmplw r3, r31
+/* 802F07C4 002EC424 41 82 00 14 */ beq lbl_802F07D8
+/* 802F07C8 002EC428 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 802F07CC 002EC42C 28 00 00 01 */ cmplwi r0, 1
+/* 802F07D0 002EC430 40 82 00 08 */ bne lbl_802F07D8
+/* 802F07D4 002EC434 48 00 20 35 */ bl MPiCleanupParent
+lbl_802F07D8:
+/* 802F07D8 002EC438 48 00 0E 51 */ bl MPiCleanupTxRx
+/* 802F07DC 002EC43C 48 00 16 C9 */ bl MPiCleanupConnection
+/* 802F07E0 002EC440 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F07E4 002EC444 38 00 00 00 */ li r0, 0
+/* 802F07E8 002EC448 7C 03 00 40 */ cmplw r3, r0
+/* 802F07EC 002EC44C 41 82 00 40 */ beq lbl_802F082C
+/* 802F07F0 002EC450 83 E3 00 04 */ lwz r31, 4(r3)
+/* 802F07F4 002EC454 38 63 59 84 */ addi r3, r3, 0x5984
+/* 802F07F8 002EC458 38 80 00 00 */ li r4, 0
+/* 802F07FC 002EC45C 38 A0 07 00 */ li r5, 0x700
+/* 802F0800 002EC460 4B D1 39 05 */ bl memset
+/* 802F0804 002EC464 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0808 002EC468 38 80 00 00 */ li r4, 0
+/* 802F080C 002EC46C 38 A0 74 E0 */ li r5, 0x74e0
+/* 802F0810 002EC470 4B D1 38 F5 */ bl memset
+/* 802F0814 002EC474 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0818 002EC478 7F EC FB 78 */ mr r12, r31
+/* 802F081C 002EC47C 88 03 FF FF */ lbz r0, -1(r3)
+/* 802F0820 002EC480 7C 60 18 50 */ subf r3, r0, r3
+/* 802F0824 002EC484 7D 89 03 A6 */ mtctr r12
+/* 802F0828 002EC488 4E 80 04 21 */ bctrl
+lbl_802F082C:
+/* 802F082C 002EC48C 38 00 00 00 */ li r0, 0
+/* 802F0830 002EC490 7F C3 F3 78 */ mr r3, r30
+/* 802F0834 002EC494 90 02 AA 30 */ stw r0, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0838 002EC498 4B F7 DF 4D */ bl OSRestoreInterrupts
+/* 802F083C 002EC49C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F0840 002EC4A0 38 60 00 00 */ li r3, 0
+/* 802F0844 002EC4A4 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F0848 002EC4A8 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F084C 002EC4AC 7C 08 03 A6 */ mtlr r0
+/* 802F0850 002EC4B0 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F0854 002EC4B4 4E 80 00 20 */ blr
+
+.global MPiStartupSystem
+MPiStartupSystem:
+/* 802F0858 002EC4B8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F085C 002EC4BC 7C 08 02 A6 */ mflr r0
+/* 802F0860 002EC4C0 81 83 00 00 */ lwz r12, 0(r3)
+/* 802F0864 002EC4C4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F0868 002EC4C8 2C 0C 00 00 */ cmpwi r12, 0
+/* 802F086C 002EC4CC 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F0870 002EC4D0 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F0874 002EC4D4 7C 7E 1B 78 */ mr r30, r3
+/* 802F0878 002EC4D8 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F087C 002EC4DC 41 82 00 10 */ beq lbl_802F088C
+/* 802F0880 002EC4E0 80 03 00 04 */ lwz r0, 4(r3)
+/* 802F0884 002EC4E4 2C 00 00 00 */ cmpwi r0, 0
+/* 802F0888 002EC4E8 40 82 00 0C */ bne lbl_802F0894
+lbl_802F088C:
+/* 802F088C 002EC4EC 38 60 FF 01 */ li r3, -255
+/* 802F0890 002EC4F0 48 00 01 04 */ b lbl_802F0994
+lbl_802F0894:
+/* 802F0894 002EC4F4 38 60 75 20 */ li r3, 0x7520
+/* 802F0898 002EC4F8 7D 89 03 A6 */ mtctr r12
+/* 802F089C 002EC4FC 4E 80 04 21 */ bctrl
+/* 802F08A0 002EC500 38 03 00 20 */ addi r0, r3, 0x20
+/* 802F08A4 002EC504 54 1D 00 34 */ rlwinm r29, r0, 0, 0, 0x1a
+/* 802F08A8 002EC508 7C 03 E8 50 */ subf r0, r3, r29
+/* 802F08AC 002EC50C 98 1D FF FF */ stb r0, -1(r29)
+/* 802F08B0 002EC510 80 0D 8B F8 */ lwz r0, lbl_8063DEB8-_SDA_BASE_(r13)
+/* 802F08B4 002EC514 2C 00 00 00 */ cmpwi r0, 0
+/* 802F08B8 002EC518 41 82 00 50 */ beq lbl_802F0908
+/* 802F08BC 002EC51C 2C 1D 00 00 */ cmpwi r29, 0
+/* 802F08C0 002EC520 41 82 00 48 */ beq lbl_802F0908
+/* 802F08C4 002EC524 57 A4 00 FE */ clrlwi r4, r29, 3
+/* 802F08C8 002EC528 3C 00 10 00 */ lis r0, 0x1000
+/* 802F08CC 002EC52C 7C 04 00 40 */ cmplw r4, r0
+/* 802F08D0 002EC530 38 60 00 00 */ li r3, 0
+/* 802F08D4 002EC534 41 80 00 14 */ blt lbl_802F08E8
+/* 802F08D8 002EC538 3C 00 18 00 */ lis r0, 0x1800
+/* 802F08DC 002EC53C 7C 04 00 40 */ cmplw r4, r0
+/* 802F08E0 002EC540 40 80 00 08 */ bge lbl_802F08E8
+/* 802F08E4 002EC544 38 60 00 01 */ li r3, 1
+lbl_802F08E8:
+/* 802F08E8 002EC548 2C 03 00 00 */ cmpwi r3, 0
+/* 802F08EC 002EC54C 40 82 00 1C */ bne lbl_802F0908
+/* 802F08F0 002EC550 88 1D FF FF */ lbz r0, -1(r29)
+/* 802F08F4 002EC554 81 9E 00 04 */ lwz r12, 4(r30)
+/* 802F08F8 002EC558 7C 60 E8 50 */ subf r3, r0, r29
+/* 802F08FC 002EC55C 7D 89 03 A6 */ mtctr r12
+/* 802F0900 002EC560 4E 80 04 21 */ bctrl
+/* 802F0904 002EC564 3B A0 00 00 */ li r29, 0
+lbl_802F0908:
+/* 802F0908 002EC568 2C 1D 00 00 */ cmpwi r29, 0
+/* 802F090C 002EC56C 40 82 00 14 */ bne lbl_802F0920
+/* 802F0910 002EC570 38 00 00 00 */ li r0, 0
+/* 802F0914 002EC574 38 60 FF 10 */ li r3, -240
+/* 802F0918 002EC578 90 02 AA 30 */ stw r0, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F091C 002EC57C 48 00 00 78 */ b lbl_802F0994
+lbl_802F0920:
+/* 802F0920 002EC580 93 A2 AA 30 */ stw r29, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0924 002EC584 7F A3 EB 78 */ mr r3, r29
+/* 802F0928 002EC588 38 80 00 00 */ li r4, 0
+/* 802F092C 002EC58C 38 A0 74 E0 */ li r5, 0x74e0
+/* 802F0930 002EC590 4B D1 37 D5 */ bl memset
+/* 802F0934 002EC594 7F A3 EB 78 */ mr r3, r29
+/* 802F0938 002EC598 7F C4 F3 78 */ mr r4, r30
+/* 802F093C 002EC59C 38 A0 01 40 */ li r5, 0x140
+/* 802F0940 002EC5A0 4B D1 36 C1 */ bl memcpy
+/* 802F0944 002EC5A4 3B FD 59 84 */ addi r31, r29, 0x5984
+/* 802F0948 002EC5A8 38 80 00 00 */ li r4, 0
+/* 802F094C 002EC5AC 7F E3 FB 78 */ mr r3, r31
+/* 802F0950 002EC5B0 38 A0 07 00 */ li r5, 0x700
+/* 802F0954 002EC5B4 4B D1 37 B1 */ bl memset
+/* 802F0958 002EC5B8 3B DD 58 E4 */ addi r30, r29, 0x58e4
+/* 802F095C 002EC5BC 38 9D 59 04 */ addi r4, r29, 0x5904
+/* 802F0960 002EC5C0 7F C3 F3 78 */ mr r3, r30
+/* 802F0964 002EC5C4 38 A0 00 20 */ li r5, 0x20
+/* 802F0968 002EC5C8 4B F7 E5 91 */ bl OSInitMessageQueue
+/* 802F096C 002EC5CC 3B A0 00 00 */ li r29, 0
+lbl_802F0970:
+/* 802F0970 002EC5D0 7F C3 F3 78 */ mr r3, r30
+/* 802F0974 002EC5D4 7F E4 FB 78 */ mr r4, r31
+/* 802F0978 002EC5D8 38 A0 00 00 */ li r5, 0
+/* 802F097C 002EC5DC 4B F7 E5 DD */ bl OSSendMessage
+/* 802F0980 002EC5E0 3B BD 00 01 */ addi r29, r29, 1
+/* 802F0984 002EC5E4 3B FF 00 38 */ addi r31, r31, 0x38
+/* 802F0988 002EC5E8 2C 1D 00 20 */ cmpwi r29, 0x20
+/* 802F098C 002EC5EC 41 80 FF E4 */ blt lbl_802F0970
+/* 802F0990 002EC5F0 38 60 00 00 */ li r3, 0
+lbl_802F0994:
+/* 802F0994 002EC5F4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F0998 002EC5F8 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F099C 002EC5FC 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F09A0 002EC600 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F09A4 002EC604 7C 08 03 A6 */ mtlr r0
+/* 802F09A8 002EC608 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F09AC 002EC60C 4E 80 00 20 */ blr
+
+.global MPiAllocateCommandBlock
+MPiAllocateCommandBlock:
+/* 802F09B0 002EC610 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F09B4 002EC614 7C 08 02 A6 */ mflr r0
+/* 802F09B8 002EC618 2C 04 00 01 */ cmpwi r4, 1
+/* 802F09BC 002EC61C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F09C0 002EC620 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F09C4 002EC624 7C 7F 1B 78 */ mr r31, r3
+/* 802F09C8 002EC628 40 82 00 1C */ bne lbl_802F09E4
+/* 802F09CC 002EC62C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F09D0 002EC630 38 81 00 08 */ addi r4, r1, 8
+/* 802F09D4 002EC634 38 A0 00 01 */ li r5, 1
+/* 802F09D8 002EC638 38 63 58 E4 */ addi r3, r3, 0x58e4
+/* 802F09DC 002EC63C 4B F7 E6 45 */ bl OSReceiveMessage
+/* 802F09E0 002EC640 48 00 00 30 */ b lbl_802F0A10
+lbl_802F09E4:
+/* 802F09E4 002EC644 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F09E8 002EC648 38 81 00 08 */ addi r4, r1, 8
+/* 802F09EC 002EC64C 38 A0 00 00 */ li r5, 0
+/* 802F09F0 002EC650 38 63 58 E4 */ addi r3, r3, 0x58e4
+/* 802F09F4 002EC654 4B F7 E6 2D */ bl OSReceiveMessage
+/* 802F09F8 002EC658 2C 03 00 00 */ cmpwi r3, 0
+/* 802F09FC 002EC65C 40 82 00 14 */ bne lbl_802F0A10
+/* 802F0A00 002EC660 38 00 00 00 */ li r0, 0
+/* 802F0A04 002EC664 38 60 FF 13 */ li r3, -237
+/* 802F0A08 002EC668 90 1F 00 00 */ stw r0, 0(r31)
+/* 802F0A0C 002EC66C 48 00 00 24 */ b lbl_802F0A30
+lbl_802F0A10:
+/* 802F0A10 002EC670 80 01 00 08 */ lwz r0, 8(r1)
+/* 802F0A14 002EC674 90 1F 00 00 */ stw r0, 0(r31)
+/* 802F0A18 002EC678 80 01 00 08 */ lwz r0, 8(r1)
+/* 802F0A1C 002EC67C 2C 00 00 00 */ cmpwi r0, 0
+/* 802F0A20 002EC680 40 82 00 0C */ bne lbl_802F0A2C
+/* 802F0A24 002EC684 38 60 FF 00 */ li r3, -256
+/* 802F0A28 002EC688 48 00 00 08 */ b lbl_802F0A30
+lbl_802F0A2C:
+/* 802F0A2C 002EC68C 38 60 00 00 */ li r3, 0
+lbl_802F0A30:
+/* 802F0A30 002EC690 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F0A34 002EC694 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F0A38 002EC698 7C 08 03 A6 */ mtlr r0
+/* 802F0A3C 002EC69C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F0A40 002EC6A0 4E 80 00 20 */ blr
+
+.global MPiFreeCommandBlock
+MPiFreeCommandBlock:
+/* 802F0A44 002EC6A4 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0A48 002EC6A8 7C 64 1B 78 */ mr r4, r3
+/* 802F0A4C 002EC6AC 38 A0 00 00 */ li r5, 0
+/* 802F0A50 002EC6B0 38 66 58 E4 */ addi r3, r6, 0x58e4
+/* 802F0A54 002EC6B4 4B F7 E5 04 */ b OSSendMessage
+
+.global MPiSendRequest
+MPiSendRequest:
+/* 802F0A58 002EC6B8 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F0A5C 002EC6BC 7C 08 02 A6 */ mflr r0
+/* 802F0A60 002EC6C0 2C 05 00 01 */ cmpwi r5, 1
+/* 802F0A64 002EC6C4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F0A68 002EC6C8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F0A6C 002EC6CC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F0A70 002EC6D0 7C 9E 23 78 */ mr r30, r4
+/* 802F0A74 002EC6D4 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F0A78 002EC6D8 7C 7D 1B 78 */ mr r29, r3
+/* 802F0A7C 002EC6DC 40 82 00 3C */ bne lbl_802F0AB8
+/* 802F0A80 002EC6E0 38 64 00 08 */ addi r3, r4, 8
+/* 802F0A84 002EC6E4 38 80 00 00 */ li r4, 0
+/* 802F0A88 002EC6E8 4B F8 03 E1 */ bl OSInitSemaphore
+/* 802F0A8C 002EC6EC 4B F7 DC D1 */ bl OSDisableInterrupts
+/* 802F0A90 002EC6F0 7C 7F 1B 78 */ mr r31, r3
+/* 802F0A94 002EC6F4 7F A3 EB 78 */ mr r3, r29
+/* 802F0A98 002EC6F8 7F C4 F3 78 */ mr r4, r30
+/* 802F0A9C 002EC6FC 38 A0 00 01 */ li r5, 1
+/* 802F0AA0 002EC700 4B F7 E4 B9 */ bl OSSendMessage
+/* 802F0AA4 002EC704 38 7E 00 08 */ addi r3, r30, 8
+/* 802F0AA8 002EC708 4B F8 04 19 */ bl OSWaitSemaphore
+/* 802F0AAC 002EC70C 7F E3 FB 78 */ mr r3, r31
+/* 802F0AB0 002EC710 4B F7 DC D5 */ bl OSRestoreInterrupts
+/* 802F0AB4 002EC714 48 00 00 1C */ b lbl_802F0AD0
+lbl_802F0AB8:
+/* 802F0AB8 002EC718 38 A0 00 00 */ li r5, 0
+/* 802F0ABC 002EC71C 4B F7 E4 9D */ bl OSSendMessage
+/* 802F0AC0 002EC720 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0AC4 002EC724 40 82 00 0C */ bne lbl_802F0AD0
+/* 802F0AC8 002EC728 38 60 FF 13 */ li r3, -237
+/* 802F0ACC 002EC72C 48 00 00 08 */ b lbl_802F0AD4
+lbl_802F0AD0:
+/* 802F0AD0 002EC730 38 60 00 00 */ li r3, 0
+lbl_802F0AD4:
+/* 802F0AD4 002EC734 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F0AD8 002EC738 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F0ADC 002EC73C 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F0AE0 002EC740 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F0AE4 002EC744 7C 08 03 A6 */ mtlr r0
+/* 802F0AE8 002EC748 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F0AEC 002EC74C 4E 80 00 20 */ blr
+
+.global MPiRespondToWaitingRequest
+MPiRespondToWaitingRequest:
+/* 802F0AF0 002EC750 80 04 00 04 */ lwz r0, 4(r4)
+/* 802F0AF4 002EC754 90 64 00 14 */ stw r3, 0x14(r4)
+/* 802F0AF8 002EC758 2C 00 00 01 */ cmpwi r0, 1
+/* 802F0AFC 002EC75C 40 82 00 0C */ bne lbl_802F0B08
+/* 802F0B00 002EC760 38 64 00 08 */ addi r3, r4, 8
+/* 802F0B04 002EC764 4B F8 04 7C */ b OSSignalSemaphore
+lbl_802F0B08:
+/* 802F0B08 002EC768 81 84 00 18 */ lwz r12, 0x18(r4)
+/* 802F0B0C 002EC76C 7D 89 03 A6 */ mtctr r12
+/* 802F0B10 002EC770 4E 80 04 20 */ bctr
+
+.global MPiIsEqualMacAddress
+MPiIsEqualMacAddress:
+/* 802F0B14 002EC774 88 A3 00 00 */ lbz r5, 0(r3)
+/* 802F0B18 002EC778 88 04 00 00 */ lbz r0, 0(r4)
+/* 802F0B1C 002EC77C 7C 05 00 40 */ cmplw r5, r0
+/* 802F0B20 002EC780 41 82 00 0C */ beq lbl_802F0B2C
+/* 802F0B24 002EC784 38 60 00 00 */ li r3, 0
+/* 802F0B28 002EC788 4E 80 00 20 */ blr
+lbl_802F0B2C:
+/* 802F0B2C 002EC78C 88 A3 00 01 */ lbz r5, 1(r3)
+/* 802F0B30 002EC790 88 04 00 01 */ lbz r0, 1(r4)
+/* 802F0B34 002EC794 7C 05 00 40 */ cmplw r5, r0
+/* 802F0B38 002EC798 41 82 00 0C */ beq lbl_802F0B44
+/* 802F0B3C 002EC79C 38 60 00 00 */ li r3, 0
+/* 802F0B40 002EC7A0 4E 80 00 20 */ blr
+lbl_802F0B44:
+/* 802F0B44 002EC7A4 88 A3 00 02 */ lbz r5, 2(r3)
+/* 802F0B48 002EC7A8 88 04 00 02 */ lbz r0, 2(r4)
+/* 802F0B4C 002EC7AC 7C 05 00 40 */ cmplw r5, r0
+/* 802F0B50 002EC7B0 41 82 00 0C */ beq lbl_802F0B5C
+/* 802F0B54 002EC7B4 38 60 00 00 */ li r3, 0
+/* 802F0B58 002EC7B8 4E 80 00 20 */ blr
+lbl_802F0B5C:
+/* 802F0B5C 002EC7BC 88 A3 00 03 */ lbz r5, 3(r3)
+/* 802F0B60 002EC7C0 88 04 00 03 */ lbz r0, 3(r4)
+/* 802F0B64 002EC7C4 7C 05 00 40 */ cmplw r5, r0
+/* 802F0B68 002EC7C8 41 82 00 0C */ beq lbl_802F0B74
+/* 802F0B6C 002EC7CC 38 60 00 00 */ li r3, 0
+/* 802F0B70 002EC7D0 4E 80 00 20 */ blr
+lbl_802F0B74:
+/* 802F0B74 002EC7D4 88 A3 00 04 */ lbz r5, 4(r3)
+/* 802F0B78 002EC7D8 88 04 00 04 */ lbz r0, 4(r4)
+/* 802F0B7C 002EC7DC 7C 05 00 40 */ cmplw r5, r0
+/* 802F0B80 002EC7E0 41 82 00 0C */ beq lbl_802F0B8C
+/* 802F0B84 002EC7E4 38 60 00 00 */ li r3, 0
+/* 802F0B88 002EC7E8 4E 80 00 20 */ blr
+lbl_802F0B8C:
+/* 802F0B8C 002EC7EC 88 A3 00 05 */ lbz r5, 5(r3)
+/* 802F0B90 002EC7F0 88 04 00 05 */ lbz r0, 5(r4)
+/* 802F0B94 002EC7F4 7C 05 00 40 */ cmplw r5, r0
+/* 802F0B98 002EC7F8 41 82 00 0C */ beq lbl_802F0BA4
+/* 802F0B9C 002EC7FC 38 60 00 00 */ li r3, 0
+/* 802F0BA0 002EC800 4E 80 00 20 */ blr
+lbl_802F0BA4:
+/* 802F0BA4 002EC804 38 60 00 01 */ li r3, 1
+/* 802F0BA8 002EC808 4E 80 00 20 */ blr
+
+.global MPiGetNewTgid
+MPiGetNewTgid:
+/* 802F0BAC 002EC80C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F0BB0 002EC810 7C 08 02 A6 */ mflr r0
+/* 802F0BB4 002EC814 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F0BB8 002EC818 4B F8 1C 01 */ bl OSGetTime
+/* 802F0BBC 002EC81C 3C 60 00 01 */ lis r3, 0x0000FFFF@ha
+/* 802F0BC0 002EC820 38 03 FF FF */ addi r0, r3, 0x0000FFFF@l
+/* 802F0BC4 002EC824 7C 83 00 38 */ and r3, r4, r0
+/* 802F0BC8 002EC828 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F0BCC 002EC82C 7C 08 03 A6 */ mtlr r0
+/* 802F0BD0 002EC830 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F0BD4 002EC834 4E 80 00 20 */ blr
+
+.global MPiCountPopulation
+MPiCountPopulation:
+/* 802F0BD8 002EC838 3C C0 55 55 */ lis r6, 0x55555555@ha
+/* 802F0BDC 002EC83C 3C A0 33 33 */ lis r5, 0x33333333@ha
+/* 802F0BE0 002EC840 54 67 F8 7E */ srwi r7, r3, 1
+/* 802F0BE4 002EC844 3C 80 0F 0F */ lis r4, 0x0F0F0F0F@ha
+/* 802F0BE8 002EC848 38 06 55 55 */ addi r0, r6, 0x55555555@l
+/* 802F0BEC 002EC84C 38 A5 33 33 */ addi r5, r5, 0x33333333@l
+/* 802F0BF0 002EC850 7C E6 00 38 */ and r6, r7, r0
+/* 802F0BF4 002EC854 38 04 0F 0F */ addi r0, r4, 0x0F0F0F0F@l
+/* 802F0BF8 002EC858 7C 86 18 50 */ subf r4, r6, r3
+/* 802F0BFC 002EC85C 54 83 F0 BE */ srwi r3, r4, 2
+/* 802F0C00 002EC860 7C 84 28 38 */ and r4, r4, r5
+/* 802F0C04 002EC864 7C 63 28 38 */ and r3, r3, r5
+/* 802F0C08 002EC868 7C 84 1A 14 */ add r4, r4, r3
+/* 802F0C0C 002EC86C 54 83 E1 3E */ srwi r3, r4, 4
+/* 802F0C10 002EC870 7C 84 1A 14 */ add r4, r4, r3
+/* 802F0C14 002EC874 7C 84 00 38 */ and r4, r4, r0
+/* 802F0C18 002EC878 54 80 C2 3E */ srwi r0, r4, 8
+/* 802F0C1C 002EC87C 7C 84 02 14 */ add r4, r4, r0
+/* 802F0C20 002EC880 54 80 84 3E */ srwi r0, r4, 0x10
+/* 802F0C24 002EC884 7C 84 02 14 */ add r4, r4, r0
+/* 802F0C28 002EC888 54 83 06 3E */ clrlwi r3, r4, 0x18
+/* 802F0C2C 002EC88C 4E 80 00 20 */ blr
diff --git a/asm/SDK/MP/mptxrx.s b/asm/SDK/MP/mptxrx.s
new file mode 100644
index 0000000..53fb888
--- /dev/null
+++ b/asm/SDK/MP/mptxrx.s
@@ -0,0 +1,598 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MPSendAsync
+MPSendAsync:
+/* 802F13A0 002ED000 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F13A4 002ED004 7C 08 02 A6 */ mflr r0
+/* 802F13A8 002ED008 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F13AC 002ED00C 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F13B0 002ED010 7C DF 33 78 */ mr r31, r6
+/* 802F13B4 002ED014 93 C1 00 08 */ stw r30, 8(r1)
+/* 802F13B8 002ED018 7D 3E 4B 78 */ mr r30, r9
+/* 802F13BC 002ED01C 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13)
+/* 802F13C0 002ED020 2C 00 00 00 */ cmpwi r0, 0
+/* 802F13C4 002ED024 40 82 00 0C */ bne lbl_802F13D0
+/* 802F13C8 002ED028 38 60 FF 14 */ li r3, -236
+/* 802F13CC 002ED02C 48 00 00 A4 */ b lbl_802F1470
+lbl_802F13D0:
+/* 802F13D0 002ED030 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13)
+/* 802F13D4 002ED034 2C 00 00 00 */ cmpwi r0, 0
+/* 802F13D8 002ED038 41 82 00 0C */ beq lbl_802F13E4
+/* 802F13DC 002ED03C 38 60 FF FF */ li r3, -1
+/* 802F13E0 002ED040 48 00 00 90 */ b lbl_802F1470
+lbl_802F13E4:
+/* 802F13E4 002ED044 54 C0 07 39 */ rlwinm. r0, r6, 0, 0x1c, 0x1c
+/* 802F13E8 002ED048 91 09 00 18 */ stw r8, 0x18(r9)
+/* 802F13EC 002ED04C 38 00 00 00 */ li r0, 0
+/* 802F13F0 002ED050 90 69 00 1C */ stw r3, 0x1c(r9)
+/* 802F13F4 002ED054 90 09 00 04 */ stw r0, 4(r9)
+/* 802F13F8 002ED058 90 89 00 20 */ stw r4, 0x20(r9)
+/* 802F13FC 002ED05C 90 C9 00 24 */ stw r6, 0x24(r9)
+/* 802F1400 002ED060 90 A9 00 28 */ stw r5, 0x28(r9)
+/* 802F1404 002ED064 90 A9 00 2C */ stw r5, 0x2c(r9)
+/* 802F1408 002ED068 90 E9 00 30 */ stw r7, 0x30(r9)
+/* 802F140C 002ED06C 41 82 00 2C */ beq lbl_802F1438
+/* 802F1410 002ED070 4B F7 D3 4D */ bl OSDisableInterrupts
+/* 802F1414 002ED074 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1418 002ED078 57 E0 0F 3C */ rlwinm r0, r31, 1, 0x1c, 0x1e
+/* 802F141C 002ED07C 7C 84 02 14 */ add r4, r4, r0
+/* 802F1420 002ED080 A3 E4 58 D2 */ lhz r31, 0x58d2(r4)
+/* 802F1424 002ED084 38 1F 00 01 */ addi r0, r31, 1
+/* 802F1428 002ED088 B0 04 58 D2 */ sth r0, 0x58d2(r4)
+/* 802F142C 002ED08C 4B F7 D3 59 */ bl OSRestoreInterrupts
+/* 802F1430 002ED090 93 FE 00 34 */ stw r31, 0x34(r30)
+/* 802F1434 002ED094 48 00 00 08 */ b lbl_802F143C
+lbl_802F1438:
+/* 802F1438 002ED098 90 09 00 34 */ stw r0, 0x34(r9)
+lbl_802F143C:
+/* 802F143C 002ED09C 48 00 09 5D */ bl MPGetConnectedAIDs
+/* 802F1440 002ED0A0 80 1E 00 2C */ lwz r0, 0x2c(r30)
+/* 802F1444 002ED0A4 7F C4 F3 78 */ mr r4, r30
+/* 802F1448 002ED0A8 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F144C 002ED0AC 38 A0 00 00 */ li r5, 0
+/* 802F1450 002ED0B0 7C 00 18 38 */ and r0, r0, r3
+/* 802F1454 002ED0B4 90 1E 00 2C */ stw r0, 0x2c(r30)
+/* 802F1458 002ED0B8 38 66 6D E4 */ addi r3, r6, 0x6de4
+/* 802F145C 002ED0BC 4B FF F5 FD */ bl MPiSendRequest
+/* 802F1460 002ED0C0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1464 002ED0C4 40 80 00 08 */ bge lbl_802F146C
+/* 802F1468 002ED0C8 48 00 00 08 */ b lbl_802F1470
+lbl_802F146C:
+/* 802F146C 002ED0CC 38 60 00 00 */ li r3, 0
+lbl_802F1470:
+/* 802F1470 002ED0D0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F1474 002ED0D4 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F1478 002ED0D8 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F147C 002ED0DC 7C 08 03 A6 */ mtlr r0
+/* 802F1480 002ED0E0 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F1484 002ED0E4 4E 80 00 20 */ blr
+
+.global MPiStartupTxRx
+MPiStartupTxRx:
+/* 802F1488 002ED0E8 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F148C 002ED0EC 7C 08 02 A6 */ mflr r0
+/* 802F1490 002ED0F0 38 A0 00 20 */ li r5, 0x20
+/* 802F1494 002ED0F4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F1498 002ED0F8 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F149C 002ED0FC 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F14A0 002ED100 38 7F 6D E4 */ addi r3, r31, 0x6de4
+/* 802F14A4 002ED104 38 9F 6E 04 */ addi r4, r31, 0x6e04
+/* 802F14A8 002ED108 4B F7 DA 51 */ bl OSInitMessageQueue
+/* 802F14AC 002ED10C 38 7F 6E 88 */ addi r3, r31, 0x6e88
+/* 802F14B0 002ED110 38 9F 6E A8 */ addi r4, r31, 0x6ea8
+/* 802F14B4 002ED114 38 A0 00 20 */ li r5, 0x20
+/* 802F14B8 002ED118 4B F7 DA 41 */ bl OSInitMessageQueue
+/* 802F14BC 002ED11C 38 7F 6F 28 */ addi r3, r31, 0x6f28
+/* 802F14C0 002ED120 38 9F 6F 48 */ addi r4, r31, 0x6f48
+/* 802F14C4 002ED124 38 A0 00 20 */ li r5, 0x20
+/* 802F14C8 002ED128 4B F7 DA 31 */ bl OSInitMessageQueue
+/* 802F14CC 002ED12C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F14D0 002ED130 38 60 00 00 */ li r3, 0
+/* 802F14D4 002ED134 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F14D8 002ED138 7C 08 03 A6 */ mtlr r0
+/* 802F14DC 002ED13C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F14E0 002ED140 4E 80 00 20 */ blr
+
+.global MPiStartupTxRxLater
+MPiStartupTxRxLater:
+/* 802F14E4 002ED144 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F14E8 002ED148 7C 08 02 A6 */ mflr r0
+/* 802F14EC 002ED14C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F14F0 002ED150 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F14F4 002ED154 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F14F8 002ED158 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F14FC 002ED15C 3B FE 6D E4 */ addi r31, r30, 0x6de4
+lbl_802F1500:
+/* 802F1500 002ED160 7F E3 FB 78 */ mr r3, r31
+/* 802F1504 002ED164 38 81 00 10 */ addi r4, r1, 0x10
+/* 802F1508 002ED168 38 A0 00 00 */ li r5, 0
+/* 802F150C 002ED16C 4B F7 DB 15 */ bl OSReceiveMessage
+/* 802F1510 002ED170 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1514 002ED174 40 82 FF EC */ bne lbl_802F1500
+/* 802F1518 002ED178 3B FE 6E 88 */ addi r31, r30, 0x6e88
+lbl_802F151C:
+/* 802F151C 002ED17C 7F E3 FB 78 */ mr r3, r31
+/* 802F1520 002ED180 38 81 00 0C */ addi r4, r1, 0xc
+/* 802F1524 002ED184 38 A0 00 00 */ li r5, 0
+/* 802F1528 002ED188 4B F7 DA F9 */ bl OSReceiveMessage
+/* 802F152C 002ED18C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1530 002ED190 40 82 FF EC */ bne lbl_802F151C
+/* 802F1534 002ED194 3B FE 6F 28 */ addi r31, r30, 0x6f28
+lbl_802F1538:
+/* 802F1538 002ED198 7F E3 FB 78 */ mr r3, r31
+/* 802F153C 002ED19C 38 81 00 08 */ addi r4, r1, 8
+/* 802F1540 002ED1A0 38 A0 00 00 */ li r5, 0
+/* 802F1544 002ED1A4 4B F7 DA DD */ bl OSReceiveMessage
+/* 802F1548 002ED1A8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F154C 002ED1AC 40 82 FF EC */ bne lbl_802F1538
+/* 802F1550 002ED1B0 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F1554 002ED1B4 38 60 00 00 */ li r3, 0
+/* 802F1558 002ED1B8 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F155C 002ED1BC 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F1560 002ED1C0 7C 08 03 A6 */ mtlr r0
+/* 802F1564 002ED1C4 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F1568 002ED1C8 4E 80 00 20 */ blr
+
+.global MPiCleanupTxRxEarlier
+MPiCleanupTxRxEarlier:
+/* 802F156C 002ED1CC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F1570 002ED1D0 7C 08 02 A6 */ mflr r0
+/* 802F1574 002ED1D4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F1578 002ED1D8 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F157C 002ED1DC 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F1580 002ED1E0 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1584 002ED1E4 2C 1E 00 00 */ cmpwi r30, 0
+/* 802F1588 002ED1E8 41 82 00 88 */ beq lbl_802F1610
+/* 802F158C 002ED1EC 3B FE 6D E4 */ addi r31, r30, 0x6de4
+/* 802F1590 002ED1F0 48 00 00 10 */ b lbl_802F15A0
+lbl_802F1594:
+/* 802F1594 002ED1F4 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F1598 002ED1F8 38 60 FF 00 */ li r3, -256
+/* 802F159C 002ED1FC 48 00 20 69 */ bl MPiNotifyDataSentToPort
+lbl_802F15A0:
+/* 802F15A0 002ED200 7F E3 FB 78 */ mr r3, r31
+/* 802F15A4 002ED204 38 81 00 08 */ addi r4, r1, 8
+/* 802F15A8 002ED208 38 A0 00 00 */ li r5, 0
+/* 802F15AC 002ED20C 4B F7 DA 75 */ bl OSReceiveMessage
+/* 802F15B0 002ED210 2C 03 00 00 */ cmpwi r3, 0
+/* 802F15B4 002ED214 40 82 FF E0 */ bne lbl_802F1594
+/* 802F15B8 002ED218 3B FE 6E 88 */ addi r31, r30, 0x6e88
+/* 802F15BC 002ED21C 48 00 00 10 */ b lbl_802F15CC
+lbl_802F15C0:
+/* 802F15C0 002ED220 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F15C4 002ED224 38 60 FF 00 */ li r3, -256
+/* 802F15C8 002ED228 48 00 20 3D */ bl MPiNotifyDataSentToPort
+lbl_802F15CC:
+/* 802F15CC 002ED22C 7F E3 FB 78 */ mr r3, r31
+/* 802F15D0 002ED230 38 81 00 08 */ addi r4, r1, 8
+/* 802F15D4 002ED234 38 A0 00 00 */ li r5, 0
+/* 802F15D8 002ED238 4B F7 DA 49 */ bl OSReceiveMessage
+/* 802F15DC 002ED23C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F15E0 002ED240 40 82 FF E0 */ bne lbl_802F15C0
+/* 802F15E4 002ED244 3B FE 6F 28 */ addi r31, r30, 0x6f28
+/* 802F15E8 002ED248 48 00 00 10 */ b lbl_802F15F8
+lbl_802F15EC:
+/* 802F15EC 002ED24C 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F15F0 002ED250 38 60 FF 00 */ li r3, -256
+/* 802F15F4 002ED254 48 00 20 11 */ bl MPiNotifyDataSentToPort
+lbl_802F15F8:
+/* 802F15F8 002ED258 7F E3 FB 78 */ mr r3, r31
+/* 802F15FC 002ED25C 38 81 00 08 */ addi r4, r1, 8
+/* 802F1600 002ED260 38 A0 00 00 */ li r5, 0
+/* 802F1604 002ED264 4B F7 DA 1D */ bl OSReceiveMessage
+/* 802F1608 002ED268 2C 03 00 00 */ cmpwi r3, 0
+/* 802F160C 002ED26C 40 82 FF E0 */ bne lbl_802F15EC
+lbl_802F1610:
+/* 802F1610 002ED270 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F1614 002ED274 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F1618 002ED278 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F161C 002ED27C 7C 08 03 A6 */ mtlr r0
+/* 802F1620 002ED280 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F1624 002ED284 4E 80 00 20 */ blr
+
+.global MPiCleanupTxRx
+MPiCleanupTxRx:
+/* 802F1628 002ED288 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F162C 002ED28C 7C 08 02 A6 */ mflr r0
+/* 802F1630 002ED290 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F1634 002ED294 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F1638 002ED298 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F163C 002ED29C 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F1640 002ED2A0 41 82 00 34 */ beq lbl_802F1674
+/* 802F1644 002ED2A4 38 7F 6E 04 */ addi r3, r31, 0x6e04
+/* 802F1648 002ED2A8 38 80 00 00 */ li r4, 0
+/* 802F164C 002ED2AC 38 A0 00 80 */ li r5, 0x80
+/* 802F1650 002ED2B0 4B D1 2A B5 */ bl memset
+/* 802F1654 002ED2B4 38 7F 6E A8 */ addi r3, r31, 0x6ea8
+/* 802F1658 002ED2B8 38 80 00 00 */ li r4, 0
+/* 802F165C 002ED2BC 38 A0 00 80 */ li r5, 0x80
+/* 802F1660 002ED2C0 4B D1 2A A5 */ bl memset
+/* 802F1664 002ED2C4 38 7F 6F 48 */ addi r3, r31, 0x6f48
+/* 802F1668 002ED2C8 38 80 00 00 */ li r4, 0
+/* 802F166C 002ED2CC 38 A0 00 80 */ li r5, 0x80
+/* 802F1670 002ED2D0 4B D1 2A 95 */ bl memset
+lbl_802F1674:
+/* 802F1674 002ED2D4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F1678 002ED2D8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F167C 002ED2DC 7C 08 03 A6 */ mtlr r0
+/* 802F1680 002ED2E0 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F1684 002ED2E4 4E 80 00 20 */ blr
+
+.global MPiParseReceivedFrame
+MPiParseReceivedFrame:
+/* 802F1688 002ED2E8 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F168C 002ED2EC 7C 08 02 A6 */ mflr r0
+/* 802F1690 002ED2F0 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F1694 002ED2F4 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F1698 002ED2F8 4B ED 5A 81 */ bl _savegpr_23
+/* 802F169C 002ED2FC 2C 06 00 00 */ cmpwi r6, 0
+/* 802F16A0 002ED300 7C 78 1B 78 */ mr r24, r3
+/* 802F16A4 002ED304 41 82 01 64 */ beq lbl_802F1808
+/* 802F16A8 002ED308 54 C0 07 FF */ clrlwi. r0, r6, 0x1f
+/* 802F16AC 002ED30C 40 82 01 5C */ bne lbl_802F1808
+/* 802F16B0 002ED310 81 02 AA 30 */ lwz r8, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F16B4 002ED314 54 60 08 3C */ slwi r0, r3, 1
+/* 802F16B8 002ED318 38 E0 00 01 */ li r7, 1
+/* 802F16BC 002ED31C 7C DD 33 78 */ mr r29, r6
+/* 802F16C0 002ED320 80 68 57 60 */ lwz r3, 0x5760(r8)
+/* 802F16C4 002ED324 7C BA 2B 78 */ mr r26, r5
+/* 802F16C8 002ED328 7C 9C 23 78 */ mr r28, r4
+/* 802F16CC 002ED32C 7F C8 02 14 */ add r30, r8, r0
+/* 802F16D0 002ED330 7C F9 18 30 */ slw r25, r7, r3
+/* 802F16D4 002ED334 3B 60 00 01 */ li r27, 1
+/* 802F16D8 002ED338 3F E0 00 01 */ lis r31, 1
+/* 802F16DC 002ED33C 3A E0 01 00 */ li r23, 0x100
+/* 802F16E0 002ED340 48 00 01 20 */ b lbl_802F1800
+lbl_802F16E4:
+/* 802F16E4 002ED344 2C 1B 00 00 */ cmpwi r27, 0
+/* 802F16E8 002ED348 40 82 00 1C */ bne lbl_802F1704
+/* 802F16EC 002ED34C A0 1A 00 00 */ lhz r0, 0(r26)
+/* 802F16F0 002ED350 3B 5A 00 02 */ addi r26, r26, 2
+/* 802F16F4 002ED354 3B BD FF FE */ addi r29, r29, -2
+/* 802F16F8 002ED358 54 1C 44 2E */ rlwinm r28, r0, 8, 0x10, 0x17
+/* 802F16FC 002ED35C 50 1C C6 3E */ rlwimi r28, r0, 0x18, 0x18, 0x1f
+/* 802F1700 002ED360 48 00 00 08 */ b lbl_802F1708
+lbl_802F1704:
+/* 802F1704 002ED364 3B 60 00 00 */ li r27, 0
+lbl_802F1708:
+/* 802F1708 002ED368 57 86 0D FD */ rlwinm. r6, r28, 1, 0x17, 0x1e
+/* 802F170C 002ED36C 40 82 00 08 */ bne lbl_802F1714
+/* 802F1710 002ED370 38 C0 02 00 */ li r6, 0x200
+lbl_802F1714:
+/* 802F1714 002ED374 57 89 A7 FE */ rlwinm r9, r28, 0x14, 0x1f, 0x1f
+/* 802F1718 002ED378 57 88 AF FE */ rlwinm r8, r28, 0x15, 0x1f, 0x1f
+/* 802F171C 002ED37C 7C 09 00 D0 */ neg r0, r9
+/* 802F1720 002ED380 57 83 C7 3E */ rlwinm r3, r28, 0x18, 0x1c, 0x1f
+/* 802F1724 002ED384 7C 00 4B 78 */ or r0, r0, r9
+/* 802F1728 002ED388 7C 88 00 D0 */ neg r4, r8
+/* 802F172C 002ED38C 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 802F1730 002ED390 54 84 07 BC */ rlwinm r4, r4, 0, 0x1e, 0x1e
+/* 802F1734 002ED394 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 802F1738 002ED398 7C 00 22 14 */ add r0, r0, r4
+/* 802F173C 002ED39C 7C 06 02 14 */ add r0, r6, r0
+/* 802F1740 002ED3A0 7C 00 E8 40 */ cmplw r0, r29
+/* 802F1744 002ED3A4 41 81 00 C4 */ bgt lbl_802F1808
+/* 802F1748 002ED3A8 2C 08 00 00 */ cmpwi r8, 0
+/* 802F174C 002ED3AC 7F 45 D3 78 */ mr r5, r26
+/* 802F1750 002ED3B0 7F 5A 32 14 */ add r26, r26, r6
+/* 802F1754 002ED3B4 7F A6 E8 50 */ subf r29, r6, r29
+/* 802F1758 002ED3B8 41 82 00 1C */ beq lbl_802F1774
+/* 802F175C 002ED3BC A0 1A 00 00 */ lhz r0, 0(r26)
+/* 802F1760 002ED3C0 3B 5A 00 02 */ addi r26, r26, 2
+/* 802F1764 002ED3C4 3B BD FF FE */ addi r29, r29, -2
+/* 802F1768 002ED3C8 54 07 44 2E */ rlwinm r7, r0, 8, 0x10, 0x17
+/* 802F176C 002ED3CC 50 07 C6 3E */ rlwimi r7, r0, 0x18, 0x18, 0x1f
+/* 802F1770 002ED3D0 48 00 00 08 */ b lbl_802F1778
+lbl_802F1774:
+/* 802F1774 002ED3D4 38 E0 00 00 */ li r7, 0
+lbl_802F1778:
+/* 802F1778 002ED3D8 2C 09 00 00 */ cmpwi r9, 0
+/* 802F177C 002ED3DC 41 82 00 1C */ beq lbl_802F1798
+/* 802F1780 002ED3E0 A0 1A 00 00 */ lhz r0, 0(r26)
+/* 802F1784 002ED3E4 3B 5A 00 02 */ addi r26, r26, 2
+/* 802F1788 002ED3E8 3B BD FF FE */ addi r29, r29, -2
+/* 802F178C 002ED3EC 54 04 44 2E */ rlwinm r4, r0, 8, 0x10, 0x17
+/* 802F1790 002ED3F0 50 04 C6 3E */ rlwimi r4, r0, 0x18, 0x18, 0x1f
+/* 802F1794 002ED3F4 48 00 00 08 */ b lbl_802F179C
+lbl_802F1798:
+/* 802F1798 002ED3F8 38 9F FF FF */ addi r4, r31, -1
+lbl_802F179C:
+/* 802F179C 002ED3FC 7C 80 C8 39 */ and. r0, r4, r25
+/* 802F17A0 002ED400 41 82 00 60 */ beq lbl_802F1800
+/* 802F17A4 002ED404 2C 08 00 00 */ cmpwi r8, 0
+/* 802F17A8 002ED408 41 82 00 50 */ beq lbl_802F17F8
+/* 802F17AC 002ED40C 54 60 2E 34 */ rlwinm r0, r3, 5, 0x18, 0x1a
+/* 802F17B0 002ED410 7D 1E 02 14 */ add r8, r30, r0
+/* 802F17B4 002ED414 A0 88 57 D2 */ lhz r4, 0x57d2(r8)
+/* 802F17B8 002ED418 54 80 07 FF */ clrlwi. r0, r4, 0x1f
+/* 802F17BC 002ED41C 41 82 00 0C */ beq lbl_802F17C8
+/* 802F17C0 002ED420 38 00 00 01 */ li r0, 1
+/* 802F17C4 002ED424 48 00 00 24 */ b lbl_802F17E8
+lbl_802F17C8:
+/* 802F17C8 002ED428 54 E0 08 3C */ slwi r0, r7, 1
+/* 802F17CC 002ED42C 7C 00 20 50 */ subf r0, r0, r4
+/* 802F17D0 002ED430 54 04 04 3E */ clrlwi r4, r0, 0x10
+/* 802F17D4 002ED434 38 04 FF 00 */ addi r0, r4, -256
+/* 802F17D8 002ED438 7C 84 BB 38 */ orc r4, r4, r23
+/* 802F17DC 002ED43C 54 00 F8 7E */ srwi r0, r0, 1
+/* 802F17E0 002ED440 7C 00 20 50 */ subf r0, r0, r4
+/* 802F17E4 002ED444 54 00 0F FE */ srwi r0, r0, 0x1f
+lbl_802F17E8:
+/* 802F17E8 002ED448 2C 00 00 00 */ cmpwi r0, 0
+/* 802F17EC 002ED44C 41 82 00 14 */ beq lbl_802F1800
+/* 802F17F0 002ED450 54 E0 0C 3C */ rlwinm r0, r7, 1, 0x10, 0x1e
+/* 802F17F4 002ED454 B0 08 57 D2 */ sth r0, 0x57d2(r8)
+lbl_802F17F8:
+/* 802F17F8 002ED458 7F 04 C3 78 */ mr r4, r24
+/* 802F17FC 002ED45C 48 00 1E 21 */ bl MPiNotifyDataReceivedToPort
+lbl_802F1800:
+/* 802F1800 002ED460 2C 1D 00 00 */ cmpwi r29, 0
+/* 802F1804 002ED464 41 81 FE E0 */ bgt lbl_802F16E4
+lbl_802F1808:
+/* 802F1808 002ED468 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F180C 002ED46C 4B ED 59 59 */ bl _restgpr_23
+/* 802F1810 002ED470 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F1814 002ED474 7C 08 03 A6 */ mtlr r0
+/* 802F1818 002ED478 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F181C 002ED47C 4E 80 00 20 */ blr
+
+.global MPiProcessDataSentNotification
+MPiProcessDataSentNotification:
+/* 802F1820 002ED480 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F1824 002ED484 7C 08 02 A6 */ mflr r0
+/* 802F1828 002ED488 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F182C 002ED48C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F1830 002ED490 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F1834 002ED494 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F1838 002ED498 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802F183C 002ED49C 7C 7C 1B 78 */ mr r28, r3
+/* 802F1840 002ED4A0 48 00 05 59 */ bl MPGetConnectedAIDs
+/* 802F1844 002ED4A4 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1848 002ED4A8 7C 7F E0 78 */ andc r31, r3, r28
+/* 802F184C 002ED4AC 3B C4 6E 88 */ addi r30, r4, 0x6e88
+/* 802F1850 002ED4B0 3B A4 6F 28 */ addi r29, r4, 0x6f28
+/* 802F1854 002ED4B4 48 00 00 70 */ b lbl_802F18C4
+lbl_802F1858:
+/* 802F1858 002ED4B8 80 61 00 08 */ lwz r3, 8(r1)
+/* 802F185C 002ED4BC 80 03 00 2C */ lwz r0, 0x2c(r3)
+/* 802F1860 002ED4C0 7F E4 00 38 */ and r4, r31, r0
+/* 802F1864 002ED4C4 90 83 00 2C */ stw r4, 0x2c(r3)
+/* 802F1868 002ED4C8 83 81 00 08 */ lwz r28, 8(r1)
+/* 802F186C 002ED4CC 80 1C 00 24 */ lwz r0, 0x24(r28)
+/* 802F1870 002ED4D0 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
+/* 802F1874 002ED4D4 41 82 00 44 */ beq lbl_802F18B8
+/* 802F1878 002ED4D8 2C 04 00 00 */ cmpwi r4, 0
+/* 802F187C 002ED4DC 41 82 00 3C */ beq lbl_802F18B8
+/* 802F1880 002ED4E0 48 00 05 19 */ bl MPGetConnectedAIDs
+/* 802F1884 002ED4E4 80 1C 00 2C */ lwz r0, 0x2c(r28)
+/* 802F1888 002ED4E8 7C 00 18 39 */ and. r0, r0, r3
+/* 802F188C 002ED4EC 90 1C 00 2C */ stw r0, 0x2c(r28)
+/* 802F1890 002ED4F0 41 82 00 18 */ beq lbl_802F18A8
+/* 802F1894 002ED4F4 7F C3 F3 78 */ mr r3, r30
+/* 802F1898 002ED4F8 7F 84 E3 78 */ mr r4, r28
+/* 802F189C 002ED4FC 38 A0 00 00 */ li r5, 0
+/* 802F18A0 002ED500 4B F7 D6 B9 */ bl OSSendMessage
+/* 802F18A4 002ED504 48 00 00 20 */ b lbl_802F18C4
+lbl_802F18A8:
+/* 802F18A8 002ED508 7F 84 E3 78 */ mr r4, r28
+/* 802F18AC 002ED50C 38 60 00 00 */ li r3, 0
+/* 802F18B0 002ED510 48 00 1D 55 */ bl MPiNotifyDataSentToPort
+/* 802F18B4 002ED514 48 00 00 10 */ b lbl_802F18C4
+lbl_802F18B8:
+/* 802F18B8 002ED518 7F 84 E3 78 */ mr r4, r28
+/* 802F18BC 002ED51C 38 60 00 00 */ li r3, 0
+/* 802F18C0 002ED520 48 00 1D 45 */ bl MPiNotifyDataSentToPort
+lbl_802F18C4:
+/* 802F18C4 002ED524 7F A3 EB 78 */ mr r3, r29
+/* 802F18C8 002ED528 38 81 00 08 */ addi r4, r1, 8
+/* 802F18CC 002ED52C 38 A0 00 00 */ li r5, 0
+/* 802F18D0 002ED530 4B F7 D7 51 */ bl OSReceiveMessage
+/* 802F18D4 002ED534 2C 03 00 01 */ cmpwi r3, 1
+/* 802F18D8 002ED538 41 82 FF 80 */ beq lbl_802F1858
+/* 802F18DC 002ED53C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F18E0 002ED540 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F18E4 002ED544 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F18E8 002ED548 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F18EC 002ED54C 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802F18F0 002ED550 7C 08 03 A6 */ mtlr r0
+/* 802F18F4 002ED554 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F18F8 002ED558 4E 80 00 20 */ blr
+
+.global MPiMakeSendFrame
+MPiMakeSendFrame:
+/* 802F18FC 002ED55C 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 802F1900 002ED560 7C 08 02 A6 */ mflr r0
+/* 802F1904 002ED564 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802F1908 002ED568 39 61 00 40 */ addi r11, r1, 0x40
+/* 802F190C 002ED56C 4B ED 58 01 */ bl _savegpr_20
+/* 802F1910 002ED570 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1914 002ED574 7C 95 23 78 */ mr r21, r4
+/* 802F1918 002ED578 7C B8 2B 78 */ mr r24, r5
+/* 802F191C 002ED57C 7C 74 1B 78 */ mr r20, r3
+/* 802F1920 002ED580 3A FF 6E 88 */ addi r23, r31, 0x6e88
+/* 802F1924 002ED584 7C D6 33 78 */ mr r22, r6
+/* 802F1928 002ED588 7E E3 BB 78 */ mr r3, r23
+/* 802F192C 002ED58C 38 81 00 08 */ addi r4, r1, 8
+/* 802F1930 002ED590 38 A0 00 00 */ li r5, 0
+/* 802F1934 002ED594 4B F7 D6 ED */ bl OSReceiveMessage
+/* 802F1938 002ED598 2C 03 00 00 */ cmpwi r3, 0
+/* 802F193C 002ED59C 40 82 00 14 */ bne lbl_802F1950
+/* 802F1940 002ED5A0 38 7F 6D E4 */ addi r3, r31, 0x6de4
+/* 802F1944 002ED5A4 38 81 00 08 */ addi r4, r1, 8
+/* 802F1948 002ED5A8 38 A0 00 00 */ li r5, 0
+/* 802F194C 002ED5AC 4B F7 D6 D5 */ bl OSReceiveMessage
+lbl_802F1950:
+/* 802F1950 002ED5B0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1954 002ED5B4 7C 7D 1B 78 */ mr r29, r3
+/* 802F1958 002ED5B8 41 82 00 AC */ beq lbl_802F1A04
+/* 802F195C 002ED5BC 83 C1 00 08 */ lwz r30, 8(r1)
+/* 802F1960 002ED5C0 80 1E 00 2C */ lwz r0, 0x2c(r30)
+/* 802F1964 002ED5C4 2C 00 00 00 */ cmpwi r0, 0
+/* 802F1968 002ED5C8 40 82 00 18 */ bne lbl_802F1980
+/* 802F196C 002ED5CC 7F C4 F3 78 */ mr r4, r30
+/* 802F1970 002ED5D0 38 60 00 00 */ li r3, 0
+/* 802F1974 002ED5D4 48 00 1C 91 */ bl MPiNotifyDataSentToPort
+/* 802F1978 002ED5D8 3B A0 00 00 */ li r29, 0
+/* 802F197C 002ED5DC 48 00 00 88 */ b lbl_802F1A04
+lbl_802F1980:
+/* 802F1980 002ED5E0 7C 00 C0 79 */ andc. r0, r0, r24
+/* 802F1984 002ED5E4 40 82 00 48 */ bne lbl_802F19CC
+/* 802F1988 002ED5E8 83 5E 00 28 */ lwz r26, 0x28(r30)
+/* 802F198C 002ED5EC 3C 60 00 01 */ lis r3, 0x0000FFFE@ha
+/* 802F1990 002ED5F0 38 03 FF FE */ addi r0, r3, 0x0000FFFE@l
+/* 802F1994 002ED5F4 83 9E 00 1C */ lwz r28, 0x1c(r30)
+/* 802F1998 002ED5F8 57 44 04 3C */ rlwinm r4, r26, 0, 0x10, 0x1e
+/* 802F199C 002ED5FC 83 7E 00 20 */ lwz r27, 0x20(r30)
+/* 802F19A0 002ED600 7C 64 00 50 */ subf r3, r4, r0
+/* 802F19A4 002ED604 83 3E 00 24 */ lwz r25, 0x24(r30)
+/* 802F19A8 002ED608 7C 00 20 50 */ subf r0, r0, r4
+/* 802F19AC 002ED60C 83 1E 00 34 */ lwz r24, 0x34(r30)
+/* 802F19B0 002ED610 7C 60 03 78 */ or r0, r3, r0
+/* 802F19B4 002ED614 7F C4 F3 78 */ mr r4, r30
+/* 802F19B8 002ED618 54 17 0F FE */ srwi r23, r0, 0x1f
+/* 802F19BC 002ED61C 38 7F 6F 28 */ addi r3, r31, 0x6f28
+/* 802F19C0 002ED620 38 A0 00 00 */ li r5, 0
+/* 802F19C4 002ED624 4B F7 D5 95 */ bl OSSendMessage
+/* 802F19C8 002ED628 48 00 00 3C */ b lbl_802F1A04
+lbl_802F19CC:
+/* 802F19CC 002ED62C 3B A0 00 00 */ li r29, 0
+/* 802F19D0 002ED630 48 00 03 C9 */ bl MPGetConnectedAIDs
+/* 802F19D4 002ED634 80 1E 00 2C */ lwz r0, 0x2c(r30)
+/* 802F19D8 002ED638 7C 00 18 39 */ and. r0, r0, r3
+/* 802F19DC 002ED63C 90 1E 00 2C */ stw r0, 0x2c(r30)
+/* 802F19E0 002ED640 41 82 00 18 */ beq lbl_802F19F8
+/* 802F19E4 002ED644 7E E3 BB 78 */ mr r3, r23
+/* 802F19E8 002ED648 7F C4 F3 78 */ mr r4, r30
+/* 802F19EC 002ED64C 38 A0 00 00 */ li r5, 0
+/* 802F19F0 002ED650 4B F7 D5 69 */ bl OSSendMessage
+/* 802F19F4 002ED654 48 00 00 10 */ b lbl_802F1A04
+lbl_802F19F8:
+/* 802F19F8 002ED658 7F C4 F3 78 */ mr r4, r30
+/* 802F19FC 002ED65C 38 60 00 00 */ li r3, 0
+/* 802F1A00 002ED660 48 00 1C 05 */ bl MPiNotifyDataSentToPort
+lbl_802F1A04:
+/* 802F1A04 002ED664 2C 1D 00 00 */ cmpwi r29, 0
+/* 802F1A08 002ED668 40 82 00 20 */ bne lbl_802F1A28
+/* 802F1A0C 002ED66C 3C 60 00 01 */ lis r3, 0x0000FFFF@ha
+/* 802F1A10 002ED670 3B 80 00 00 */ li r28, 0
+/* 802F1A14 002ED674 3B 43 FF FF */ addi r26, r3, 0x0000FFFF@l
+/* 802F1A18 002ED678 3B 60 00 00 */ li r27, 0
+/* 802F1A1C 002ED67C 3B 20 00 00 */ li r25, 0
+/* 802F1A20 002ED680 3B 00 00 00 */ li r24, 0
+/* 802F1A24 002ED684 3A E0 00 00 */ li r23, 0
+lbl_802F1A28:
+/* 802F1A28 002ED688 7C 17 00 D0 */ neg r0, r23
+/* 802F1A2C 002ED68C 57 3F EF FE */ rlwinm r31, r25, 0x1d, 0x1f, 0x1f
+/* 802F1A30 002ED690 7C 04 BB 78 */ or r4, r0, r23
+/* 802F1A34 002ED694 7C 1F 00 D0 */ neg r0, r31
+/* 802F1A38 002ED698 7C 83 FE 70 */ srawi r3, r4, 0x1f
+/* 802F1A3C 002ED69C 7C 00 FB 78 */ or r0, r0, r31
+/* 802F1A40 002ED6A0 7C 00 FE 70 */ srawi r0, r0, 0x1f
+/* 802F1A44 002ED6A4 54 63 07 BC */ rlwinm r3, r3, 0, 0x1e, 0x1e
+/* 802F1A48 002ED6A8 54 00 07 BC */ rlwinm r0, r0, 0, 0x1e, 0x1e
+/* 802F1A4C 002ED6AC 7C 1B 02 14 */ add r0, r27, r0
+/* 802F1A50 002ED6B0 7C 60 1A 14 */ add r3, r0, r3
+/* 802F1A54 002ED6B4 3B A3 00 02 */ addi r29, r3, 2
+/* 802F1A58 002ED6B8 7C 1D A8 40 */ cmplw r29, r21
+/* 802F1A5C 002ED6BC 40 81 00 0C */ ble lbl_802F1A68
+/* 802F1A60 002ED6C0 38 60 FF 01 */ li r3, -255
+/* 802F1A64 002ED6C4 48 00 00 90 */ b lbl_802F1AF4
+lbl_802F1A68:
+/* 802F1A68 002ED6C8 38 DB 00 01 */ addi r6, r27, 1
+/* 802F1A6C 002ED6CC 7C 85 FE 70 */ srawi r5, r4, 0x1f
+/* 802F1A70 002ED6D0 54 DE FE 3E */ rlwinm r30, r6, 0x1f, 0x18, 0x1f
+/* 802F1A74 002ED6D4 7C 84 FE 70 */ srawi r4, r4, 0x1f
+/* 802F1A78 002ED6D8 57 20 45 2E */ rlwinm r0, r25, 8, 0x14, 0x17
+/* 802F1A7C 002ED6DC 2C 1C 00 00 */ cmpwi r28, 0
+/* 802F1A80 002ED6E0 7F C3 F3 78 */ mr r3, r30
+/* 802F1A84 002ED6E4 53 23 45 2E */ rlwimi r3, r25, 8, 0x14, 0x17
+/* 802F1A88 002ED6E8 50 C0 FE 3E */ rlwimi r0, r6, 0x1f, 0x18, 0x1f
+/* 802F1A8C 002ED6EC 50 A0 04 E6 */ rlwimi r0, r5, 0, 0x13, 0x13
+/* 802F1A90 002ED6F0 50 83 04 E6 */ rlwimi r3, r4, 0, 0x13, 0x13
+/* 802F1A94 002ED6F4 54 00 44 2E */ rlwinm r0, r0, 8, 0x10, 0x17
+/* 802F1A98 002ED6F8 50 60 C6 FE */ rlwimi r0, r3, 0x18, 0x1b, 0x1f
+/* 802F1A9C 002ED6FC 7C 00 A7 2C */ sthbrx r0, 0, r20
+/* 802F1AA0 002ED700 41 82 00 14 */ beq lbl_802F1AB4
+/* 802F1AA4 002ED704 7F 84 E3 78 */ mr r4, r28
+/* 802F1AA8 002ED708 7F 65 DB 78 */ mr r5, r27
+/* 802F1AAC 002ED70C 38 74 00 02 */ addi r3, r20, 2
+/* 802F1AB0 002ED710 4B D1 25 51 */ bl memcpy
+lbl_802F1AB4:
+/* 802F1AB4 002ED714 2C 1F 00 00 */ cmpwi r31, 0
+/* 802F1AB8 002ED718 38 7E 00 01 */ addi r3, r30, 1
+/* 802F1ABC 002ED71C 41 82 00 10 */ beq lbl_802F1ACC
+/* 802F1AC0 002ED720 54 60 08 3C */ slwi r0, r3, 1
+/* 802F1AC4 002ED724 38 63 00 01 */ addi r3, r3, 1
+/* 802F1AC8 002ED728 7F 14 07 2C */ sthbrx r24, r20, r0
+lbl_802F1ACC:
+/* 802F1ACC 002ED72C 2C 17 00 00 */ cmpwi r23, 0
+/* 802F1AD0 002ED730 41 82 00 0C */ beq lbl_802F1ADC
+/* 802F1AD4 002ED734 54 60 08 3C */ slwi r0, r3, 1
+/* 802F1AD8 002ED738 7F 54 07 2C */ sthbrx r26, r20, r0
+lbl_802F1ADC:
+/* 802F1ADC 002ED73C 2C 16 00 00 */ cmpwi r22, 0
+/* 802F1AE0 002ED740 41 82 00 10 */ beq lbl_802F1AF0
+/* 802F1AE4 002ED744 A0 14 00 00 */ lhz r0, 0(r20)
+/* 802F1AE8 002ED748 60 00 80 00 */ ori r0, r0, 0x8000
+/* 802F1AEC 002ED74C B0 14 00 00 */ sth r0, 0(r20)
+lbl_802F1AF0:
+/* 802F1AF0 002ED750 7F A3 EB 78 */ mr r3, r29
+lbl_802F1AF4:
+/* 802F1AF4 002ED754 39 61 00 40 */ addi r11, r1, 0x40
+/* 802F1AF8 002ED758 4B ED 56 61 */ bl _restgpr_20
+/* 802F1AFC 002ED75C 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 802F1B00 002ED760 7C 08 03 A6 */ mtlr r0
+/* 802F1B04 002ED764 38 21 00 40 */ addi r1, r1, 0x40
+/* 802F1B08 002ED768 4E 80 00 20 */ blr
+
+.global MPiClearSendQueue
+MPiClearSendQueue:
+/* 802F1B0C 002ED76C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F1B10 002ED770 7C 08 02 A6 */ mflr r0
+/* 802F1B14 002ED774 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F1B18 002ED778 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F1B1C 002ED77C 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F1B20 002ED780 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F1B24 002ED784 93 81 00 10 */ stw r28, 0x10(r1)
+/* 802F1B28 002ED788 7C 7C 1B 78 */ mr r28, r3
+/* 802F1B2C 002ED78C 48 00 02 6D */ bl MPGetConnectedAIDs
+/* 802F1B30 002ED790 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1B34 002ED794 7C 7F 1B 78 */ mr r31, r3
+/* 802F1B38 002ED798 3B C4 6E 88 */ addi r30, r4, 0x6e88
+/* 802F1B3C 002ED79C 3B A4 6D E4 */ addi r29, r4, 0x6de4
+/* 802F1B40 002ED7A0 48 00 00 28 */ b lbl_802F1B68
+lbl_802F1B44:
+/* 802F1B44 002ED7A4 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F1B48 002ED7A8 38 60 00 00 */ li r3, 0
+/* 802F1B4C 002ED7AC 80 04 00 2C */ lwz r0, 0x2c(r4)
+/* 802F1B50 002ED7B0 7C 00 F8 38 */ and r0, r0, r31
+/* 802F1B54 002ED7B4 90 04 00 2C */ stw r0, 0x2c(r4)
+/* 802F1B58 002ED7B8 80 81 00 08 */ lwz r4, 8(r1)
+/* 802F1B5C 002ED7BC 48 00 1A A9 */ bl MPiNotifyDataSentToPort
+/* 802F1B60 002ED7C0 37 9C FF FF */ addic. r28, r28, -1
+/* 802F1B64 002ED7C4 40 81 00 34 */ ble lbl_802F1B98
+lbl_802F1B68:
+/* 802F1B68 002ED7C8 7F C3 F3 78 */ mr r3, r30
+/* 802F1B6C 002ED7CC 38 81 00 08 */ addi r4, r1, 8
+/* 802F1B70 002ED7D0 38 A0 00 00 */ li r5, 0
+/* 802F1B74 002ED7D4 4B F7 D4 AD */ bl OSReceiveMessage
+/* 802F1B78 002ED7D8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1B7C 002ED7DC 40 82 00 14 */ bne lbl_802F1B90
+/* 802F1B80 002ED7E0 7F A3 EB 78 */ mr r3, r29
+/* 802F1B84 002ED7E4 38 81 00 08 */ addi r4, r1, 8
+/* 802F1B88 002ED7E8 38 A0 00 00 */ li r5, 0
+/* 802F1B8C 002ED7EC 4B F7 D4 95 */ bl OSReceiveMessage
+lbl_802F1B90:
+/* 802F1B90 002ED7F0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1B94 002ED7F4 40 82 FF B0 */ bne lbl_802F1B44
+lbl_802F1B98:
+/* 802F1B98 002ED7F8 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F1B9C 002ED7FC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F1BA0 002ED800 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F1BA4 002ED804 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F1BA8 002ED808 83 81 00 10 */ lwz r28, 0x10(r1)
+/* 802F1BAC 002ED80C 7C 08 03 A6 */ mtlr r0
+/* 802F1BB0 002ED810 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F1BB4 002ED814 4E 80 00 20 */ blr
diff --git a/asm/SDK/MP/mpwd.s b/asm/SDK/MP/mpwd.s
new file mode 100644
index 0000000..565f823
--- /dev/null
+++ b/asm/SDK/MP/mpwd.s
@@ -0,0 +1,443 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MPiStartupWD
+MPiStartupWD:
+/* 802F0C30 002EC890 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F0C34 002EC894 7C 08 02 A6 */ mflr r0
+/* 802F0C38 002EC898 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F0C3C 002EC89C 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F0C40 002EC8A0 4B ED 64 E5 */ bl _savegpr_26
+/* 802F0C44 002EC8A4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0C48 002EC8A8 80 03 00 0C */ lwz r0, 0xc(r3)
+/* 802F0C4C 002EC8AC 2C 00 00 01 */ cmpwi r0, 1
+/* 802F0C50 002EC8B0 41 82 00 14 */ beq lbl_802F0C64
+/* 802F0C54 002EC8B4 48 00 00 08 */ b lbl_802F0C5C
+/* 802F0C58 002EC8B8 48 00 00 0C */ b lbl_802F0C64
+lbl_802F0C5C:
+/* 802F0C5C 002EC8BC 38 60 FF 01 */ li r3, -255
+/* 802F0C60 002EC8C0 48 00 00 FC */ b lbl_802F0D5C
+lbl_802F0C64:
+/* 802F0C64 002EC8C4 4B F8 1B 55 */ bl OSGetTime
+/* 802F0C68 002EC8C8 3F E0 80 00 */ lis r31, 0x800000F8@ha
+/* 802F0C6C 002EC8CC 3C A0 10 62 */ lis r5, 0x10624DD3@ha
+/* 802F0C70 002EC8D0 80 DF 00 F8 */ lwz r6, 0x800000F8@l(r31)
+/* 802F0C74 002EC8D4 3B C5 4D D3 */ addi r30, r5, 0x10624DD3@l
+/* 802F0C78 002EC8D8 38 00 00 00 */ li r0, 0
+/* 802F0C7C 002EC8DC 3B 60 00 0A */ li r27, 0xa
+/* 802F0C80 002EC8E0 54 C5 F0 BE */ srwi r5, r6, 2
+/* 802F0C84 002EC8E4 7C BE 28 16 */ mulhwu r5, r30, r5
+/* 802F0C88 002EC8E8 7F 80 D9 D6 */ mullw r28, r0, r27
+/* 802F0C8C 002EC8EC 54 A5 D1 BE */ srwi r5, r5, 6
+/* 802F0C90 002EC8F0 1C A5 75 30 */ mulli r5, r5, 0x7530
+/* 802F0C94 002EC8F4 7F 45 20 14 */ addc r26, r5, r4
+/* 802F0C98 002EC8F8 7C 00 19 14 */ adde r0, r0, r3
+/* 802F0C9C 002EC8FC 6C 1D 80 00 */ xoris r29, r0, 0x8000
+lbl_802F0CA0:
+/* 802F0CA0 002EC900 38 60 00 01 */ li r3, 1
+/* 802F0CA4 002EC904 4B FF D8 45 */ bl WD_Startup
+/* 802F0CA8 002EC908 2C 03 FF FA */ cmpwi r3, -6
+/* 802F0CAC 002EC90C 40 82 00 48 */ bne lbl_802F0CF4
+/* 802F0CB0 002EC910 80 1F 00 F8 */ lwz r0, 0xf8(r31)
+/* 802F0CB4 002EC914 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F0CB8 002EC918 7C 1E 00 16 */ mulhwu r0, r30, r0
+/* 802F0CBC 002EC91C 54 03 D1 BE */ srwi r3, r0, 6
+/* 802F0CC0 002EC920 7C 03 D8 16 */ mulhwu r0, r3, r27
+/* 802F0CC4 002EC924 1C 83 00 0A */ mulli r4, r3, 0xa
+/* 802F0CC8 002EC928 7C 60 E2 14 */ add r3, r0, r28
+/* 802F0CCC 002EC92C 4B F8 1A 39 */ bl OSSleepTicks
+/* 802F0CD0 002EC930 4B F8 1A E9 */ bl OSGetTime
+/* 802F0CD4 002EC934 6C 63 80 00 */ xoris r3, r3, 0x8000
+/* 802F0CD8 002EC938 7C 04 D0 10 */ subfc r0, r4, r26
+/* 802F0CDC 002EC93C 7C 63 E9 10 */ subfe r3, r3, r29
+/* 802F0CE0 002EC940 7C 7D E9 10 */ subfe r3, r29, r29
+/* 802F0CE4 002EC944 7C 63 00 D1 */ neg. r3, r3
+/* 802F0CE8 002EC948 41 82 FF B8 */ beq lbl_802F0CA0
+/* 802F0CEC 002EC94C 38 60 FF 15 */ li r3, -235
+/* 802F0CF0 002EC950 48 00 00 6C */ b lbl_802F0D5C
+lbl_802F0CF4:
+/* 802F0CF4 002EC954 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0CF8 002EC958 40 80 00 08 */ bge lbl_802F0D00
+/* 802F0CFC 002EC95C 48 00 00 60 */ b lbl_802F0D5C
+lbl_802F0D00:
+/* 802F0D00 002EC960 3F C0 80 58 */ lis r30, lbl_805790C0@ha
+/* 802F0D04 002EC964 38 7E 90 C0 */ addi r3, r30, lbl_805790C0@l
+/* 802F0D08 002EC968 4B FF D5 B1 */ bl WD_GetInfo
+/* 802F0D0C 002EC96C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0D10 002EC970 40 80 00 08 */ bge lbl_802F0D18
+/* 802F0D14 002EC974 48 00 00 28 */ b lbl_802F0D3C
+lbl_802F0D18:
+/* 802F0D18 002EC978 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0D1C 002EC97C 38 9E 90 C0 */ addi r4, r30, -28480
+/* 802F0D20 002EC980 38 A0 00 06 */ li r5, 6
+/* 802F0D24 002EC984 38 63 57 6C */ addi r3, r3, 0x576c
+/* 802F0D28 002EC988 4B D1 32 D9 */ bl memcpy
+/* 802F0D2C 002EC98C 38 9E 90 C0 */ addi r4, r30, -28480
+/* 802F0D30 002EC990 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0D34 002EC994 A0 04 00 08 */ lhz r0, 8(r4)
+/* 802F0D38 002EC998 90 03 57 68 */ stw r0, 0x5768(r3)
+lbl_802F0D3C:
+/* 802F0D3C 002EC99C 48 00 03 41 */ bl StartParent
+/* 802F0D40 002EC9A0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0D44 002EC9A4 7C 7A 1B 78 */ mr r26, r3
+/* 802F0D48 002EC9A8 40 80 00 10 */ bge lbl_802F0D58
+/* 802F0D4C 002EC9AC 4B FF D8 81 */ bl WD_Cleanup
+/* 802F0D50 002EC9B0 7F 43 D3 78 */ mr r3, r26
+/* 802F0D54 002EC9B4 48 00 00 08 */ b lbl_802F0D5C
+lbl_802F0D58:
+/* 802F0D58 002EC9B8 38 60 00 00 */ li r3, 0
+lbl_802F0D5C:
+/* 802F0D5C 002EC9BC 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F0D60 002EC9C0 4B ED 64 11 */ bl _restgpr_26
+/* 802F0D64 002EC9C4 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F0D68 002EC9C8 7C 08 03 A6 */ mtlr r0
+/* 802F0D6C 002EC9CC 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F0D70 002EC9D0 4E 80 00 20 */ blr
+
+.global MPiCleanupWD
+MPiCleanupWD:
+/* 802F0D74 002EC9D4 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F0D78 002EC9D8 7C 08 02 A6 */ mflr r0
+/* 802F0D7C 002EC9DC 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F0D80 002EC9E0 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F0D84 002EC9E4 4B ED 63 A1 */ bl _savegpr_26
+/* 802F0D88 002EC9E8 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0D8C 002EC9EC 3B 40 00 00 */ li r26, 0
+/* 802F0D90 002EC9F0 7C 03 D0 40 */ cmplw r3, r26
+/* 802F0D94 002EC9F4 41 82 01 24 */ beq lbl_802F0EB8
+/* 802F0D98 002EC9F8 3B 63 55 E0 */ addi r27, r3, 0x55e0
+/* 802F0D9C 002EC9FC 93 43 00 24 */ stw r26, 0x24(r3)
+/* 802F0DA0 002ECA00 38 80 00 00 */ li r4, 0
+/* 802F0DA4 002ECA04 38 A0 01 80 */ li r5, 0x180
+/* 802F0DA8 002ECA08 7F 63 DB 78 */ mr r3, r27
+/* 802F0DAC 002ECA0C 4B D1 33 59 */ bl memset
+/* 802F0DB0 002ECA10 38 00 00 04 */ li r0, 4
+/* 802F0DB4 002ECA14 3C 80 00 03 */ lis r4, 0x0003007F@ha
+/* 802F0DB8 002ECA18 B0 1B 00 AC */ sth r0, 0xac(r27)
+/* 802F0DBC 002ECA1C 7F 63 DB 78 */ mr r3, r27
+/* 802F0DC0 002ECA20 80 E2 AA 30 */ lwz r7, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0DC4 002ECA24 38 A4 00 7F */ addi r5, r4, 0x0003007F@l
+/* 802F0DC8 002ECA28 38 C0 00 00 */ li r6, 0
+/* 802F0DCC 002ECA2C 80 07 00 20 */ lwz r0, 0x20(r7)
+/* 802F0DD0 002ECA30 B0 1B 00 AE */ sth r0, 0xae(r27)
+/* 802F0DD4 002ECA34 80 07 00 24 */ lwz r0, 0x24(r7)
+/* 802F0DD8 002ECA38 98 1B 00 B0 */ stb r0, 0xb0(r27)
+/* 802F0DDC 002ECA3C B3 5B 00 B2 */ sth r26, 0xb2(r27)
+/* 802F0DE0 002ECA40 B3 5B 01 38 */ sth r26, 0x138(r27)
+/* 802F0DE4 002ECA44 9B 5B 00 B1 */ stb r26, 0xb1(r27)
+/* 802F0DE8 002ECA48 80 07 00 18 */ lwz r0, 0x18(r7)
+/* 802F0DEC 002ECA4C 98 1B 00 B4 */ stb r0, 0xb4(r27)
+/* 802F0DF0 002ECA50 4B FF D0 FD */ bl WD_SetConfig
+/* 802F0DF4 002ECA54 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0DF8 002ECA58 38 60 00 00 */ li r3, 0
+/* 802F0DFC 002ECA5C 48 00 05 0D */ bl MPSetEntryFlag
+/* 802F0E00 002ECA60 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0E04 002ECA64 40 82 00 08 */ bne lbl_802F0E0C
+/* 802F0E08 002ECA68 48 00 2F 39 */ bl MPiMakeAndChangeBeacon
+lbl_802F0E0C:
+/* 802F0E0C 002ECA6C 83 42 AA 30 */ lwz r26, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0E10 002ECA70 3B 60 00 00 */ li r27, 0
+/* 802F0E14 002ECA74 3B 80 00 00 */ li r28, 0
+/* 802F0E18 002ECA78 3B C0 00 00 */ li r30, 0
+/* 802F0E1C 002ECA7C 83 BA 57 60 */ lwz r29, 0x5760(r26)
+lbl_802F0E20:
+/* 802F0E20 002ECA80 7C 1C E8 40 */ cmplw r28, r29
+/* 802F0E24 002ECA84 41 82 00 20 */ beq lbl_802F0E44
+/* 802F0E28 002ECA88 7C 7A F2 14 */ add r3, r26, r30
+/* 802F0E2C 002ECA8C 38 82 AA 38 */ addi r4, r2, lbl_80643038-_SDA2_BASE_
+/* 802F0E30 002ECA90 38 63 57 72 */ addi r3, r3, 0x5772
+/* 802F0E34 002ECA94 4B FF FC E1 */ bl MPiIsEqualMacAddress
+/* 802F0E38 002ECA98 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0E3C 002ECA9C 40 82 00 08 */ bne lbl_802F0E44
+/* 802F0E40 002ECAA0 3B 7B 00 01 */ addi r27, r27, 1
+lbl_802F0E44:
+/* 802F0E44 002ECAA4 3B 9C 00 01 */ addi r28, r28, 1
+/* 802F0E48 002ECAA8 3B DE 00 06 */ addi r30, r30, 6
+/* 802F0E4C 002ECAAC 28 1C 00 10 */ cmplwi r28, 0x10
+/* 802F0E50 002ECAB0 41 80 FF D0 */ blt lbl_802F0E20
+/* 802F0E54 002ECAB4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F0E58 002ECAB8 80 03 00 20 */ lwz r0, 0x20(r3)
+/* 802F0E5C 002ECABC 7F 40 D9 D6 */ mullw r26, r0, r27
+/* 802F0E60 002ECAC0 2C 1A 02 58 */ cmpwi r26, 0x258
+/* 802F0E64 002ECAC4 40 80 00 08 */ bge lbl_802F0E6C
+/* 802F0E68 002ECAC8 3B 40 02 58 */ li r26, 0x258
+lbl_802F0E6C:
+/* 802F0E6C 002ECACC 2C 1A 0F A0 */ cmpwi r26, 0xfa0
+/* 802F0E70 002ECAD0 40 81 00 08 */ ble lbl_802F0E78
+/* 802F0E74 002ECAD4 3B 40 0F A0 */ li r26, 0xfa0
+lbl_802F0E78:
+/* 802F0E78 002ECAD8 48 00 0D A5 */ bl MPDisconnectAll
+/* 802F0E7C 002ECADC 3C 80 80 00 */ lis r4, 0x800000F8@ha
+/* 802F0E80 002ECAE0 3C 60 10 62 */ lis r3, 0x10624DD3@ha
+/* 802F0E84 002ECAE4 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4)
+/* 802F0E88 002ECAE8 38 63 4D D3 */ addi r3, r3, 0x10624DD3@l
+/* 802F0E8C 002ECAEC 38 80 00 00 */ li r4, 0
+/* 802F0E90 002ECAF0 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F0E94 002ECAF4 7C 63 00 16 */ mulhwu r3, r3, r0
+/* 802F0E98 002ECAF8 7C 1A 21 D6 */ mullw r0, r26, r4
+/* 802F0E9C 002ECAFC 54 65 D1 BE */ srwi r5, r3, 6
+/* 802F0EA0 002ECB00 7C 7A 28 16 */ mulhwu r3, r26, r5
+/* 802F0EA4 002ECB04 7C 84 29 D6 */ mullw r4, r4, r5
+/* 802F0EA8 002ECB08 7C 63 22 14 */ add r3, r3, r4
+/* 802F0EAC 002ECB0C 7C 9A 29 D6 */ mullw r4, r26, r5
+/* 802F0EB0 002ECB10 7C 63 02 14 */ add r3, r3, r0
+/* 802F0EB4 002ECB14 4B F8 18 51 */ bl OSSleepTicks
+lbl_802F0EB8:
+/* 802F0EB8 002ECB18 4B FF D0 21 */ bl WD_GetLinkState
+/* 802F0EBC 002ECB1C 2C 03 00 01 */ cmpwi r3, 1
+/* 802F0EC0 002ECB20 40 82 00 A4 */ bne lbl_802F0F64
+/* 802F0EC4 002ECB24 38 60 00 00 */ li r3, 0
+/* 802F0EC8 002ECB28 4B FF CF 89 */ bl WD_SetLinkState
+/* 802F0ECC 002ECB2C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0ED0 002ECB30 40 80 00 08 */ bge lbl_802F0ED8
+/* 802F0ED4 002ECB34 48 00 00 90 */ b lbl_802F0F64
+lbl_802F0ED8:
+/* 802F0ED8 002ECB38 4B F8 18 E1 */ bl OSGetTime
+/* 802F0EDC 002ECB3C 3F E0 80 00 */ lis r31, 0x800000F8@ha
+/* 802F0EE0 002ECB40 3C A0 10 62 */ lis r5, 0x10624DD3@ha
+/* 802F0EE4 002ECB44 80 DF 00 F8 */ lwz r6, 0x800000F8@l(r31)
+/* 802F0EE8 002ECB48 3B C5 4D D3 */ addi r30, r5, 0x10624DD3@l
+/* 802F0EEC 002ECB4C 38 00 00 00 */ li r0, 0
+/* 802F0EF0 002ECB50 3B 60 00 0A */ li r27, 0xa
+/* 802F0EF4 002ECB54 54 C5 F0 BE */ srwi r5, r6, 2
+/* 802F0EF8 002ECB58 7C BE 28 16 */ mulhwu r5, r30, r5
+/* 802F0EFC 002ECB5C 7F 80 D9 D6 */ mullw r28, r0, r27
+/* 802F0F00 002ECB60 54 A5 D1 BE */ srwi r5, r5, 6
+/* 802F0F04 002ECB64 1C A5 75 30 */ mulli r5, r5, 0x7530
+/* 802F0F08 002ECB68 7F 45 20 14 */ addc r26, r5, r4
+/* 802F0F0C 002ECB6C 7C 00 19 14 */ adde r0, r0, r3
+/* 802F0F10 002ECB70 6C 1D 80 00 */ xoris r29, r0, 0x8000
+/* 802F0F14 002ECB74 48 00 00 44 */ b lbl_802F0F58
+lbl_802F0F18:
+/* 802F0F18 002ECB78 80 1F 00 F8 */ lwz r0, 0xf8(r31)
+/* 802F0F1C 002ECB7C 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F0F20 002ECB80 7C 1E 00 16 */ mulhwu r0, r30, r0
+/* 802F0F24 002ECB84 54 03 D1 BE */ srwi r3, r0, 6
+/* 802F0F28 002ECB88 7C 03 D8 16 */ mulhwu r0, r3, r27
+/* 802F0F2C 002ECB8C 1C 83 00 0A */ mulli r4, r3, 0xa
+/* 802F0F30 002ECB90 7C 60 E2 14 */ add r3, r0, r28
+/* 802F0F34 002ECB94 4B F8 17 D1 */ bl OSSleepTicks
+/* 802F0F38 002ECB98 4B F8 18 81 */ bl OSGetTime
+/* 802F0F3C 002ECB9C 6C 63 80 00 */ xoris r3, r3, 0x8000
+/* 802F0F40 002ECBA0 7C 04 D0 10 */ subfc r0, r4, r26
+/* 802F0F44 002ECBA4 7C 63 E9 10 */ subfe r3, r3, r29
+/* 802F0F48 002ECBA8 7C 7D E9 10 */ subfe r3, r29, r29
+/* 802F0F4C 002ECBAC 7C 63 00 D1 */ neg. r3, r3
+/* 802F0F50 002ECBB0 41 82 00 08 */ beq lbl_802F0F58
+/* 802F0F54 002ECBB4 48 00 00 10 */ b lbl_802F0F64
+lbl_802F0F58:
+/* 802F0F58 002ECBB8 4B FF CF 81 */ bl WD_GetLinkState
+/* 802F0F5C 002ECBBC 2C 03 00 01 */ cmpwi r3, 1
+/* 802F0F60 002ECBC0 41 82 FF B8 */ beq lbl_802F0F18
+lbl_802F0F64:
+/* 802F0F64 002ECBC4 4B FF D6 69 */ bl WD_Cleanup
+/* 802F0F68 002ECBC8 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F0F6C 002ECBCC 4B ED 62 05 */ bl _restgpr_26
+/* 802F0F70 002ECBD0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F0F74 002ECBD4 7C 08 03 A6 */ mtlr r0
+/* 802F0F78 002ECBD8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F0F7C 002ECBDC 4E 80 00 20 */ blr
+
+.global MPiSendFrame
+MPiSendFrame:
+/* 802F0F80 002ECBE0 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F0F84 002ECBE4 7C 08 02 A6 */ mflr r0
+/* 802F0F88 002ECBE8 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 802F0F8C 002ECBEC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F0F90 002ECBF0 4B FF D1 F1 */ bl WD_MpSendFrame
+/* 802F0F94 002ECBF4 7C 60 FE 70 */ srawi r0, r3, 0x1f
+/* 802F0F98 002ECBF8 7C 63 00 38 */ and r3, r3, r0
+/* 802F0F9C 002ECBFC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F0FA0 002ECC00 7C 08 03 A6 */ mtlr r0
+/* 802F0FA4 002ECC04 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F0FA8 002ECC08 4E 80 00 20 */ blr
+
+.global MPiReceiveFrame
+MPiReceiveFrame:
+/* 802F0FAC 002ECC0C 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F0FB0 002ECC10 7C 08 02 A6 */ mflr r0
+/* 802F0FB4 002ECC14 54 84 04 3E */ clrlwi r4, r4, 0x10
+/* 802F0FB8 002ECC18 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F0FBC 002ECC1C 4B FF D4 A9 */ bl WD_ReceiveFrame
+/* 802F0FC0 002ECC20 2C 03 00 00 */ cmpwi r3, 0
+/* 802F0FC4 002ECC24 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F0FC8 002ECC28 7C 08 03 A6 */ mtlr r0
+/* 802F0FCC 002ECC2C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F0FD0 002ECC30 4E 80 00 20 */ blr
+
+.global MPiChangeBeacon
+MPiChangeBeacon:
+/* 802F0FD4 002ECC34 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F0FD8 002ECC38 7C 08 02 A6 */ mflr r0
+/* 802F0FDC 002ECC3C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F0FE0 002ECC40 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F0FE4 002ECC44 7C 7F 1B 78 */ mr r31, r3
+/* 802F0FE8 002ECC48 48 00 2F 31 */ bl MPiGetVTsf
+/* 802F0FEC 002ECC4C 7F E4 FB 78 */ mr r4, r31
+/* 802F0FF0 002ECC50 54 63 04 3E */ clrlwi r3, r3, 0x10
+/* 802F0FF4 002ECC54 4B FF CF D1 */ bl WD_ChangeBeacon
+/* 802F0FF8 002ECC58 7C 60 FE 70 */ srawi r0, r3, 0x1f
+/* 802F0FFC 002ECC5C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F1000 002ECC60 7C 63 00 38 */ and r3, r3, r0
+/* 802F1004 002ECC64 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F1008 002ECC68 7C 08 03 A6 */ mtlr r0
+/* 802F100C 002ECC6C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F1010 002ECC70 4E 80 00 20 */ blr
+
+.global MPiChangeVTSF
+MPiChangeVTSF:
+/* 802F1014 002ECC74 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F1018 002ECC78 7C 08 02 A6 */ mflr r0
+/* 802F101C 002ECC7C 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F1020 002ECC80 48 00 2E F9 */ bl MPiGetVTsf
+/* 802F1024 002ECC84 54 63 04 3E */ clrlwi r3, r3, 0x10
+/* 802F1028 002ECC88 4B FF D0 3D */ bl WD_ChangeVTSF
+/* 802F102C 002ECC8C 7C 60 FE 70 */ srawi r0, r3, 0x1f
+/* 802F1030 002ECC90 7C 63 00 38 */ and r3, r3, r0
+/* 802F1034 002ECC94 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F1038 002ECC98 7C 08 03 A6 */ mtlr r0
+/* 802F103C 002ECC9C 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F1040 002ECCA0 4E 80 00 20 */ blr
+
+.global MPiDisAssoc
+MPiDisAssoc:
+/* 802F1044 002ECCA4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F1048 002ECCA8 7C 08 02 A6 */ mflr r0
+/* 802F104C 002ECCAC 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F1050 002ECCB0 4B FF D0 9D */ bl WD_DisAssoc
+/* 802F1054 002ECCB4 3C 03 80 00 */ addis r0, r3, 0x8000
+/* 802F1058 002ECCB8 28 00 80 01 */ cmplwi r0, 0x8001
+/* 802F105C 002ECCBC 38 00 FF 01 */ li r0, -255
+/* 802F1060 002ECCC0 41 82 00 08 */ beq lbl_802F1068
+/* 802F1064 002ECCC4 7C 60 1B 78 */ mr r0, r3
+lbl_802F1068:
+/* 802F1068 002ECCC8 7C 03 03 78 */ mr r3, r0
+/* 802F106C 002ECCCC 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F1070 002ECCD0 7C 08 03 A6 */ mtlr r0
+/* 802F1074 002ECCD4 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F1078 002ECCD8 4E 80 00 20 */ blr
+
+.global StartParent
+StartParent:
+/* 802F107C 002ECCDC 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F1080 002ECCE0 7C 08 02 A6 */ mflr r0
+/* 802F1084 002ECCE4 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F1088 002ECCE8 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F108C 002ECCEC 4B ED 60 99 */ bl _savegpr_26
+/* 802F1090 002ECCF0 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F1094 002ECCF4 80 83 57 68 */ lwz r4, 0x5768(r3)
+/* 802F1098 002ECCF8 2C 04 00 00 */ cmpwi r4, 0
+/* 802F109C 002ECCFC 41 82 00 20 */ beq lbl_802F10BC
+/* 802F10A0 002ECD00 80 63 00 18 */ lwz r3, 0x18(r3)
+/* 802F10A4 002ECD04 2C 03 00 00 */ cmpwi r3, 0
+/* 802F10A8 002ECD08 41 82 00 1C */ beq lbl_802F10C4
+/* 802F10AC 002ECD0C 38 00 00 01 */ li r0, 1
+/* 802F10B0 002ECD10 7C 00 18 30 */ slw r0, r0, r3
+/* 802F10B4 002ECD14 7C 80 00 39 */ and. r0, r4, r0
+/* 802F10B8 002ECD18 40 82 00 0C */ bne lbl_802F10C4
+lbl_802F10BC:
+/* 802F10BC 002ECD1C 38 60 FF 12 */ li r3, -238
+/* 802F10C0 002ECD20 48 00 01 5C */ b lbl_802F121C
+lbl_802F10C4:
+/* 802F10C4 002ECD24 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F10C8 002ECD28 38 80 00 00 */ li r4, 0
+/* 802F10CC 002ECD2C 38 A0 01 80 */ li r5, 0x180
+/* 802F10D0 002ECD30 3B 43 55 E0 */ addi r26, r3, 0x55e0
+/* 802F10D4 002ECD34 7F 43 D3 78 */ mr r3, r26
+/* 802F10D8 002ECD38 4B D1 30 2D */ bl memset
+/* 802F10DC 002ECD3C 38 00 00 04 */ li r0, 4
+/* 802F10E0 002ECD40 3C 80 00 03 */ lis r4, 0x0003007F@ha
+/* 802F10E4 002ECD44 B0 1A 00 AC */ sth r0, 0xac(r26)
+/* 802F10E8 002ECD48 38 A4 00 7F */ addi r5, r4, 0x0003007F@l
+/* 802F10EC 002ECD4C 80 E2 AA 30 */ lwz r7, lbl_80643030-_SDA2_BASE_(r2)
+/* 802F10F0 002ECD50 38 00 00 00 */ li r0, 0
+/* 802F10F4 002ECD54 7F 43 D3 78 */ mr r3, r26
+/* 802F10F8 002ECD58 38 C0 00 00 */ li r6, 0
+/* 802F10FC 002ECD5C 80 87 00 20 */ lwz r4, 0x20(r7)
+/* 802F1100 002ECD60 B0 9A 00 AE */ sth r4, 0xae(r26)
+/* 802F1104 002ECD64 80 87 00 24 */ lwz r4, 0x24(r7)
+/* 802F1108 002ECD68 98 9A 00 B0 */ stb r4, 0xb0(r26)
+/* 802F110C 002ECD6C B0 1A 00 B2 */ sth r0, 0xb2(r26)
+/* 802F1110 002ECD70 B0 1A 01 38 */ sth r0, 0x138(r26)
+/* 802F1114 002ECD74 98 1A 00 B1 */ stb r0, 0xb1(r26)
+/* 802F1118 002ECD78 80 07 00 18 */ lwz r0, 0x18(r7)
+/* 802F111C 002ECD7C 98 1A 00 B4 */ stb r0, 0xb4(r26)
+/* 802F1120 002ECD80 4B FF CD CD */ bl WD_SetConfig
+/* 802F1124 002ECD84 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1128 002ECD88 40 80 00 08 */ bge lbl_802F1130
+/* 802F112C 002ECD8C 48 00 00 08 */ b lbl_802F1134
+lbl_802F1130:
+/* 802F1130 002ECD90 38 60 00 00 */ li r3, 0
+lbl_802F1134:
+/* 802F1134 002ECD94 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1138 002ECD98 40 80 00 08 */ bge lbl_802F1140
+/* 802F113C 002ECD9C 48 00 00 E0 */ b lbl_802F121C
+lbl_802F1140:
+/* 802F1140 002ECDA0 48 00 2C 01 */ bl MPiMakeAndChangeBeacon
+/* 802F1144 002ECDA4 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1148 002ECDA8 40 80 00 08 */ bge lbl_802F1150
+/* 802F114C 002ECDAC 48 00 00 D0 */ b lbl_802F121C
+lbl_802F1150:
+/* 802F1150 002ECDB0 38 60 00 01 */ li r3, 1
+/* 802F1154 002ECDB4 4B FF CC FD */ bl WD_SetLinkState
+/* 802F1158 002ECDB8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F115C 002ECDBC 40 80 00 08 */ bge lbl_802F1164
+/* 802F1160 002ECDC0 48 00 00 BC */ b lbl_802F121C
+lbl_802F1164:
+/* 802F1164 002ECDC4 4B F8 16 55 */ bl OSGetTime
+/* 802F1168 002ECDC8 3F E0 80 00 */ lis r31, 0x800000F8@ha
+/* 802F116C 002ECDCC 3C A0 10 62 */ lis r5, 0x10624DD3@ha
+/* 802F1170 002ECDD0 80 DF 00 F8 */ lwz r6, 0x800000F8@l(r31)
+/* 802F1174 002ECDD4 3B C5 4D D3 */ addi r30, r5, 0x10624DD3@l
+/* 802F1178 002ECDD8 38 00 00 00 */ li r0, 0
+/* 802F117C 002ECDDC 3B 60 00 0A */ li r27, 0xa
+/* 802F1180 002ECDE0 54 C5 F0 BE */ srwi r5, r6, 2
+/* 802F1184 002ECDE4 7C BE 28 16 */ mulhwu r5, r30, r5
+/* 802F1188 002ECDE8 7F 80 D9 D6 */ mullw r28, r0, r27
+/* 802F118C 002ECDEC 54 A5 D1 BE */ srwi r5, r5, 6
+/* 802F1190 002ECDF0 1C A5 75 30 */ mulli r5, r5, 0x7530
+/* 802F1194 002ECDF4 7F 45 20 14 */ addc r26, r5, r4
+/* 802F1198 002ECDF8 7C 00 19 14 */ adde r0, r0, r3
+/* 802F119C 002ECDFC 6C 1D 80 00 */ xoris r29, r0, 0x8000
+/* 802F11A0 002ECE00 48 00 00 48 */ b lbl_802F11E8
+lbl_802F11A4:
+/* 802F11A4 002ECE04 80 1F 00 F8 */ lwz r0, 0xf8(r31)
+/* 802F11A8 002ECE08 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F11AC 002ECE0C 7C 1E 00 16 */ mulhwu r0, r30, r0
+/* 802F11B0 002ECE10 54 03 D1 BE */ srwi r3, r0, 6
+/* 802F11B4 002ECE14 7C 03 D8 16 */ mulhwu r0, r3, r27
+/* 802F11B8 002ECE18 1C 83 00 0A */ mulli r4, r3, 0xa
+/* 802F11BC 002ECE1C 7C 60 E2 14 */ add r3, r0, r28
+/* 802F11C0 002ECE20 4B F8 15 45 */ bl OSSleepTicks
+/* 802F11C4 002ECE24 4B F8 15 F5 */ bl OSGetTime
+/* 802F11C8 002ECE28 6C 63 80 00 */ xoris r3, r3, 0x8000
+/* 802F11CC 002ECE2C 7C 04 D0 10 */ subfc r0, r4, r26
+/* 802F11D0 002ECE30 7C 63 E9 10 */ subfe r3, r3, r29
+/* 802F11D4 002ECE34 7C 7D E9 10 */ subfe r3, r29, r29
+/* 802F11D8 002ECE38 7C 63 00 D1 */ neg. r3, r3
+/* 802F11DC 002ECE3C 41 82 00 0C */ beq lbl_802F11E8
+/* 802F11E0 002ECE40 38 60 FF 15 */ li r3, -235
+/* 802F11E4 002ECE44 48 00 00 38 */ b lbl_802F121C
+lbl_802F11E8:
+/* 802F11E8 002ECE48 4B FF CC F1 */ bl WD_GetLinkState
+/* 802F11EC 002ECE4C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F11F0 002ECE50 41 82 FF B4 */ beq lbl_802F11A4
+/* 802F11F4 002ECE54 3C 60 80 00 */ lis r3, 0x800031A0@ha
+/* 802F11F8 002ECE58 38 80 00 20 */ li r4, 0x20
+/* 802F11FC 002ECE5C 3B 43 31 A0 */ addi r26, r3, 0x800031A0@l
+/* 802F1200 002ECE60 7F 43 D3 78 */ mr r3, r26
+/* 802F1204 002ECE64 4B F7 94 25 */ bl DCInvalidateRange
+/* 802F1208 002ECE68 88 7A 00 02 */ lbz r3, 2(r26)
+/* 802F120C 002ECE6C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F1210 002ECE70 41 82 00 08 */ beq lbl_802F1218
+/* 802F1214 002ECE74 4B FB 68 CD */ bl WPADSetDisableChannel
+lbl_802F1218:
+/* 802F1218 002ECE78 38 60 00 00 */ li r3, 0
+lbl_802F121C:
+/* 802F121C 002ECE7C 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F1220 002ECE80 4B ED 5F 51 */ bl _restgpr_26
+/* 802F1224 002ECE84 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F1228 002ECE88 7C 08 03 A6 */ mtlr r0
+/* 802F122C 002ECE8C 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F1230 002ECE90 4E 80 00 20 */ blr
diff --git a/asm/SDK/MPDL/mpdlsystem.s b/asm/SDK/MPDL/mpdlsystem.s
new file mode 100644
index 0000000..ec2916d
--- /dev/null
+++ b/asm/SDK/MPDL/mpdlsystem.s
@@ -0,0 +1,934 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global MI_CpuFill8
+MI_CpuFill8:
+/* 802F4008 002EFC68 4B D1 00 FC */ b memset
+
+.global MI_CpuCopy8
+MI_CpuCopy8:
+/* 802F400C 002EFC6C 7C 60 1B 78 */ mr r0, r3
+/* 802F4010 002EFC70 7C 83 23 78 */ mr r3, r4
+/* 802F4014 002EFC74 7C 04 03 78 */ mr r4, r0
+/* 802F4018 002EFC78 4B D0 FF E8 */ b memcpy
+
+.global OSi_TPanic
+OSi_TPanic:
+/* 802F401C 002EFC7C 94 21 FF 70 */ stwu r1, -0x90(r1)
+/* 802F4020 002EFC80 7C 08 02 A6 */ mflr r0
+/* 802F4024 002EFC84 90 01 00 94 */ stw r0, 0x94(r1)
+/* 802F4028 002EFC88 93 E1 00 8C */ stw r31, 0x8c(r1)
+/* 802F402C 002EFC8C 93 C1 00 88 */ stw r30, 0x88(r1)
+/* 802F4030 002EFC90 93 A1 00 84 */ stw r29, 0x84(r1)
+/* 802F4034 002EFC94 7C BD 2B 78 */ mr r29, r5
+/* 802F4038 002EFC98 93 81 00 80 */ stw r28, 0x80(r1)
+/* 802F403C 002EFC9C 7C 9C 23 78 */ mr r28, r4
+/* 802F4040 002EFCA0 40 86 00 24 */ bne cr1, lbl_802F4064
+/* 802F4044 002EFCA4 D8 21 00 28 */ stfd f1, 0x28(r1)
+/* 802F4048 002EFCA8 D8 41 00 30 */ stfd f2, 0x30(r1)
+/* 802F404C 002EFCAC D8 61 00 38 */ stfd f3, 0x38(r1)
+/* 802F4050 002EFCB0 D8 81 00 40 */ stfd f4, 0x40(r1)
+/* 802F4054 002EFCB4 D8 A1 00 48 */ stfd f5, 0x48(r1)
+/* 802F4058 002EFCB8 D8 C1 00 50 */ stfd f6, 0x50(r1)
+/* 802F405C 002EFCBC D8 E1 00 58 */ stfd f7, 0x58(r1)
+/* 802F4060 002EFCC0 D9 01 00 60 */ stfd f8, 0x60(r1)
+lbl_802F4064:
+/* 802F4064 002EFCC4 39 61 00 98 */ addi r11, r1, 0x98
+/* 802F4068 002EFCC8 38 01 00 08 */ addi r0, r1, 8
+/* 802F406C 002EFCCC 3F C0 80 44 */ lis r30, lbl_80445CA8@ha
+/* 802F4070 002EFCD0 3D 80 03 00 */ lis r12, 0x300
+/* 802F4074 002EFCD4 90 81 00 0C */ stw r4, 0xc(r1)
+/* 802F4078 002EFCD8 3B DE 5C A8 */ addi r30, r30, lbl_80445CA8@l
+/* 802F407C 002EFCDC 7C 64 1B 78 */ mr r4, r3
+/* 802F4080 002EFCE0 3B E1 00 68 */ addi r31, r1, 0x68
+/* 802F4084 002EFCE4 90 61 00 08 */ stw r3, 8(r1)
+/* 802F4088 002EFCE8 38 7E 00 4C */ addi r3, r30, 0x4c
+/* 802F408C 002EFCEC 90 A1 00 10 */ stw r5, 0x10(r1)
+/* 802F4090 002EFCF0 7F 85 E3 78 */ mr r5, r28
+/* 802F4094 002EFCF4 90 C1 00 14 */ stw r6, 0x14(r1)
+/* 802F4098 002EFCF8 90 E1 00 18 */ stw r7, 0x18(r1)
+/* 802F409C 002EFCFC 91 01 00 1C */ stw r8, 0x1c(r1)
+/* 802F40A0 002EFD00 91 21 00 20 */ stw r9, 0x20(r1)
+/* 802F40A4 002EFD04 91 41 00 24 */ stw r10, 0x24(r1)
+/* 802F40A8 002EFD08 91 81 00 68 */ stw r12, 0x68(r1)
+/* 802F40AC 002EFD0C 91 61 00 6C */ stw r11, 0x6c(r1)
+/* 802F40B0 002EFD10 90 01 00 70 */ stw r0, 0x70(r1)
+/* 802F40B4 002EFD14 4C C6 31 82 */ crclr 6
+/* 802F40B8 002EFD18 4B D1 3A 0D */ bl func_80007AC4
+/* 802F40BC 002EFD1C 7F A3 EB 78 */ mr r3, r29
+/* 802F40C0 002EFD20 7F E4 FB 78 */ mr r4, r31
+/* 802F40C4 002EFD24 4B D1 3A 51 */ bl func_80007B14
+/* 802F40C8 002EFD28 38 7E 00 5C */ addi r3, r30, 0x5c
+/* 802F40CC 002EFD2C 38 BE 00 6C */ addi r5, r30, 0x6c
+/* 802F40D0 002EFD30 38 80 00 82 */ li r4, 0x82
+/* 802F40D4 002EFD34 4C C6 31 82 */ crclr 6
+/* 802F40D8 002EFD38 4B F7 73 C5 */ bl OSPanic
+/* 802F40DC 002EFD3C 80 01 00 94 */ lwz r0, 0x94(r1)
+/* 802F40E0 002EFD40 83 E1 00 8C */ lwz r31, 0x8c(r1)
+/* 802F40E4 002EFD44 83 C1 00 88 */ lwz r30, 0x88(r1)
+/* 802F40E8 002EFD48 83 A1 00 84 */ lwz r29, 0x84(r1)
+/* 802F40EC 002EFD4C 83 81 00 80 */ lwz r28, 0x80(r1)
+/* 802F40F0 002EFD50 7C 08 03 A6 */ mtlr r0
+/* 802F40F4 002EFD54 38 21 00 90 */ addi r1, r1, 0x90
+/* 802F40F8 002EFD58 4E 80 00 20 */ blr
+
+MPDLiWDPCallback:
+/* 802F40FC 002EFD5C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F4100 002EFD60 7C 08 02 A6 */ mflr r0
+/* 802F4104 002EFD64 2C 04 00 04 */ cmpwi r4, 4
+/* 802F4108 002EFD68 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F410C 002EFD6C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F4110 002EFD70 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F4114 002EFD74 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F4118 002EFD78 7C 7D 1B 78 */ mr r29, r3
+/* 802F411C 002EFD7C 40 80 00 10 */ bge lbl_802F412C
+/* 802F4120 002EFD80 2C 04 00 00 */ cmpwi r4, 0
+/* 802F4124 002EFD84 41 82 00 14 */ beq lbl_802F4138
+/* 802F4128 002EFD88 48 00 01 48 */ b lbl_802F4270
+lbl_802F412C:
+/* 802F412C 002EFD8C 2C 04 00 08 */ cmpwi r4, 8
+/* 802F4130 002EFD90 41 82 01 28 */ beq lbl_802F4258
+/* 802F4134 002EFD94 48 00 01 3C */ b lbl_802F4270
+lbl_802F4138:
+/* 802F4138 002EFD98 54 BE 04 3E */ clrlwi r30, r5, 0x10
+/* 802F413C 002EFD9C 1F FE 00 34 */ mulli r31, r30, 0x34
+/* 802F4140 002EFDA0 7C 83 FA 14 */ add r4, r3, r31
+/* 802F4144 002EFDA4 80 04 00 28 */ lwz r0, 0x28(r4)
+/* 802F4148 002EFDA8 2C 00 00 04 */ cmpwi r0, 4
+/* 802F414C 002EFDAC 41 82 00 B8 */ beq lbl_802F4204
+/* 802F4150 002EFDB0 40 80 00 14 */ bge lbl_802F4164
+/* 802F4154 002EFDB4 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4158 002EFDB8 41 82 00 18 */ beq lbl_802F4170
+/* 802F415C 002EFDBC 40 80 00 8C */ bge lbl_802F41E8
+/* 802F4160 002EFDC0 48 00 01 10 */ b lbl_802F4270
+lbl_802F4164:
+/* 802F4164 002EFDC4 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4168 002EFDC8 40 80 01 08 */ bge lbl_802F4270
+/* 802F416C 002EFDCC 48 00 00 C4 */ b lbl_802F4230
+lbl_802F4170:
+/* 802F4170 002EFDD0 80 0D AF 48 */ lwz r0, lbl_80640208-_SDA_BASE_(r13)
+/* 802F4174 002EFDD4 2C 00 00 00 */ cmpwi r0, 0
+/* 802F4178 002EFDD8 40 82 00 60 */ bne lbl_802F41D8
+/* 802F417C 002EFDDC 7F C4 F3 78 */ mr r4, r30
+/* 802F4180 002EFDE0 38 A0 00 03 */ li r5, 3
+/* 802F4184 002EFDE4 4B FF C2 95 */ bl WDP_AllowChildStatus
+/* 802F4188 002EFDE8 7C DD FA 14 */ add r6, r29, r31
+/* 802F418C 002EFDEC 3C 60 80 58 */ lis r3, lbl_80579200@ha
+/* 802F4190 002EFDF0 88 06 00 34 */ lbz r0, 0x34(r6)
+/* 802F4194 002EFDF4 1C 9E 00 28 */ mulli r4, r30, 0x28
+/* 802F4198 002EFDF8 38 63 92 00 */ addi r3, r3, lbl_80579200@l
+/* 802F419C 002EFDFC 54 00 E7 3E */ rlwinm r0, r0, 0x1c, 0x1c, 0x1f
+/* 802F41A0 002EFE00 7F E3 22 14 */ add r31, r3, r4
+/* 802F41A4 002EFE04 38 A0 00 14 */ li r5, 0x14
+/* 802F41A8 002EFE08 90 1F 00 00 */ stw r0, 0(r31)
+/* 802F41AC 002EFE0C 38 86 00 36 */ addi r4, r6, 0x36
+/* 802F41B0 002EFE10 38 7F 00 0A */ addi r3, r31, 0xa
+/* 802F41B4 002EFE14 88 06 00 34 */ lbz r0, 0x34(r6)
+/* 802F41B8 002EFE18 54 00 07 3E */ clrlwi r0, r0, 0x1c
+/* 802F41BC 002EFE1C 90 1F 00 04 */ stw r0, 4(r31)
+/* 802F41C0 002EFE20 88 06 00 35 */ lbz r0, 0x35(r6)
+/* 802F41C4 002EFE24 B0 1F 00 08 */ sth r0, 8(r31)
+/* 802F41C8 002EFE28 4B D0 FE 39 */ bl memcpy
+/* 802F41CC 002EFE2C 38 00 00 00 */ li r0, 0
+/* 802F41D0 002EFE30 90 1F 00 24 */ stw r0, 0x24(r31)
+/* 802F41D4 002EFE34 48 00 00 9C */ b lbl_802F4270
+lbl_802F41D8:
+/* 802F41D8 002EFE38 7F C4 F3 78 */ mr r4, r30
+/* 802F41DC 002EFE3C 38 A0 00 00 */ li r5, 0
+/* 802F41E0 002EFE40 4B FF C2 39 */ bl WDP_AllowChildStatus
+/* 802F41E4 002EFE44 48 00 00 8C */ b lbl_802F4270
+lbl_802F41E8:
+/* 802F41E8 002EFE48 80 0D AF 48 */ lwz r0, lbl_80640208-_SDA_BASE_(r13)
+/* 802F41EC 002EFE4C 2C 00 00 00 */ cmpwi r0, 0
+/* 802F41F0 002EFE50 41 82 00 80 */ beq lbl_802F4270
+/* 802F41F4 002EFE54 7F C4 F3 78 */ mr r4, r30
+/* 802F41F8 002EFE58 38 A0 00 04 */ li r5, 4
+/* 802F41FC 002EFE5C 4B FF C2 1D */ bl WDP_AllowChildStatus
+/* 802F4200 002EFE60 48 00 00 70 */ b lbl_802F4270
+lbl_802F4204:
+/* 802F4204 002EFE64 80 A4 00 58 */ lwz r5, 0x58(r4)
+/* 802F4208 002EFE68 3C 60 80 58 */ lis r3, lbl_80579200@ha
+/* 802F420C 002EFE6C 80 84 00 2C */ lwz r4, 0x2c(r4)
+/* 802F4210 002EFE70 1C 1E 00 28 */ mulli r0, r30, 0x28
+/* 802F4214 002EFE74 38 63 92 00 */ addi r3, r3, lbl_80579200@l
+/* 802F4218 002EFE78 A0 84 04 E0 */ lhz r4, 0x4e0(r4)
+/* 802F421C 002EFE7C 1C A5 00 64 */ mulli r5, r5, 0x64
+/* 802F4220 002EFE80 7C 63 02 14 */ add r3, r3, r0
+/* 802F4224 002EFE84 7C 05 23 D6 */ divw r0, r5, r4
+/* 802F4228 002EFE88 90 03 00 24 */ stw r0, 0x24(r3)
+/* 802F422C 002EFE8C 48 00 00 44 */ b lbl_802F4270
+lbl_802F4230:
+/* 802F4230 002EFE90 1C 1E 00 28 */ mulli r0, r30, 0x28
+/* 802F4234 002EFE94 3C 80 80 58 */ lis r4, lbl_80579200@ha
+/* 802F4238 002EFE98 38 A0 00 64 */ li r5, 0x64
+/* 802F423C 002EFE9C 38 84 92 00 */ addi r4, r4, lbl_80579200@l
+/* 802F4240 002EFEA0 7C 84 02 14 */ add r4, r4, r0
+/* 802F4244 002EFEA4 90 A4 00 24 */ stw r5, 0x24(r4)
+/* 802F4248 002EFEA8 7F C4 F3 78 */ mr r4, r30
+/* 802F424C 002EFEAC 38 A0 00 06 */ li r5, 6
+/* 802F4250 002EFEB0 4B FF C1 C9 */ bl WDP_AllowChildStatus
+/* 802F4254 002EFEB4 48 00 00 1C */ b lbl_802F4270
+lbl_802F4258:
+/* 802F4258 002EFEB8 54 A0 04 3E */ clrlwi r0, r5, 0x10
+/* 802F425C 002EFEBC 38 60 00 01 */ li r3, 1
+/* 802F4260 002EFEC0 80 8D AF 4C */ lwz r4, lbl_8064020C-_SDA_BASE_(r13)
+/* 802F4264 002EFEC4 7C 60 00 30 */ slw r0, r3, r0
+/* 802F4268 002EFEC8 7C 80 03 78 */ or r0, r4, r0
+/* 802F426C 002EFECC 90 0D AF 4C */ stw r0, lbl_8064020C-_SDA_BASE_(r13)
+lbl_802F4270:
+/* 802F4270 002EFED0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F4274 002EFED4 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F4278 002EFED8 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F427C 002EFEDC 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F4280 002EFEE0 7C 08 03 A6 */ mtlr r0
+/* 802F4284 002EFEE4 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F4288 002EFEE8 4E 80 00 20 */ blr
+
+WDPSegmentCallback:
+/* 802F428C 002EFEEC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F4290 002EFEF0 7C 08 02 A6 */ mflr r0
+/* 802F4294 002EFEF4 38 C0 00 00 */ li r6, 0
+/* 802F4298 002EFEF8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F429C 002EFEFC 80 05 00 00 */ lwz r0, 0(r5)
+/* 802F42A0 002EFF00 80 E3 00 04 */ lwz r7, 4(r3)
+/* 802F42A4 002EFF04 2C 00 00 01 */ cmpwi r0, 1
+/* 802F42A8 002EFF08 41 82 00 28 */ beq lbl_802F42D0
+/* 802F42AC 002EFF0C 40 80 00 10 */ bge lbl_802F42BC
+/* 802F42B0 002EFF10 2C 00 00 00 */ cmpwi r0, 0
+/* 802F42B4 002EFF14 40 80 00 14 */ bge lbl_802F42C8
+/* 802F42B8 002EFF18 48 00 00 5C */ b lbl_802F4314
+lbl_802F42BC:
+/* 802F42BC 002EFF1C 2C 00 00 03 */ cmpwi r0, 3
+/* 802F42C0 002EFF20 40 80 00 54 */ bge lbl_802F4314
+/* 802F42C4 002EFF24 48 00 00 30 */ b lbl_802F42F4
+lbl_802F42C8:
+/* 802F42C8 002EFF28 7C E6 3B 78 */ mr r6, r7
+/* 802F42CC 002EFF2C 48 00 00 48 */ b lbl_802F4314
+lbl_802F42D0:
+/* 802F42D0 002EFF30 88 67 00 21 */ lbz r3, 0x21(r7)
+/* 802F42D4 002EFF34 88 07 00 20 */ lbz r0, 0x20(r7)
+/* 802F42D8 002EFF38 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 802F42DC 002EFF3C 88 C7 00 22 */ lbz r6, 0x22(r7)
+/* 802F42E0 002EFF40 88 67 00 23 */ lbz r3, 0x23(r7)
+/* 802F42E4 002EFF44 50 C0 82 1E */ rlwimi r0, r6, 0x10, 8, 0xf
+/* 802F42E8 002EFF48 50 60 C0 0E */ rlwimi r0, r3, 0x18, 0, 7
+/* 802F42EC 002EFF4C 7C C7 02 14 */ add r6, r7, r0
+/* 802F42F0 002EFF50 48 00 00 24 */ b lbl_802F4314
+lbl_802F42F4:
+/* 802F42F4 002EFF54 88 67 00 31 */ lbz r3, 0x31(r7)
+/* 802F42F8 002EFF58 88 07 00 30 */ lbz r0, 0x30(r7)
+/* 802F42FC 002EFF5C 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17
+/* 802F4300 002EFF60 88 C7 00 32 */ lbz r6, 0x32(r7)
+/* 802F4304 002EFF64 88 67 00 33 */ lbz r3, 0x33(r7)
+/* 802F4308 002EFF68 50 C0 82 1E */ rlwimi r0, r6, 0x10, 8, 0xf
+/* 802F430C 002EFF6C 50 60 C0 0E */ rlwimi r0, r3, 0x18, 0, 7
+/* 802F4310 002EFF70 7C C7 02 14 */ add r6, r7, r0
+lbl_802F4314:
+/* 802F4314 002EFF74 80 05 00 04 */ lwz r0, 4(r5)
+/* 802F4318 002EFF78 7C 83 23 78 */ mr r3, r4
+/* 802F431C 002EFF7C 80 A5 00 08 */ lwz r5, 8(r5)
+/* 802F4320 002EFF80 7C 86 02 14 */ add r4, r6, r0
+/* 802F4324 002EFF84 4B D0 FC DD */ bl memcpy
+/* 802F4328 002EFF88 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F432C 002EFF8C 38 60 00 01 */ li r3, 1
+/* 802F4330 002EFF90 7C 08 03 A6 */ mtlr r0
+/* 802F4334 002EFF94 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F4338 002EFF98 4E 80 00 20 */ blr
+
+MPDLiSyncBeaconTask:
+/* 802F433C 002EFF9C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F4340 002EFFA0 7C 08 02 A6 */ mflr r0
+/* 802F4344 002EFFA4 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F4348 002EFFA8 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F434C 002EFFAC 4B ED 2D D5 */ bl _savegpr_25
+/* 802F4350 002EFFB0 38 00 00 00 */ li r0, 0
+/* 802F4354 002EFFB4 3B C0 00 64 */ li r30, 0x64
+/* 802F4358 002EFFB8 7F E0 F1 D6 */ mullw r31, r0, r30
+/* 802F435C 002EFFBC 3F 40 80 58 */ lis r26, lbl_80579480@ha
+/* 802F4360 002EFFC0 3C 60 10 62 */ lis r3, 0x10624DD3@ha
+/* 802F4364 002EFFC4 3B 7A 94 80 */ addi r27, r26, lbl_80579480@l
+/* 802F4368 002EFFC8 3B 83 4D D3 */ addi r28, r3, 0x10624DD3@l
+/* 802F436C 002EFFCC 3F A0 80 00 */ lis r29, 0x8000
+/* 802F4370 002EFFD0 48 00 00 88 */ b lbl_802F43F8
+lbl_802F4374:
+/* 802F4374 002EFFD4 4B F7 A3 E9 */ bl OSDisableInterrupts
+/* 802F4378 002EFFD8 80 AD AF 40 */ lwz r5, lbl_80640200-_SDA_BASE_(r13)
+/* 802F437C 002EFFDC 7C 79 1B 78 */ mr r25, r3
+/* 802F4380 002EFFE0 38 9A 94 80 */ addi r4, r26, -27520
+/* 802F4384 002EFFE4 80 65 00 30 */ lwz r3, 0x30(r5)
+/* 802F4388 002EFFE8 4B FF AE BD */ bl WDP_CallBeaconSendHook
+/* 802F438C 002EFFEC 7C 64 1B 78 */ mr r4, r3
+/* 802F4390 002EFFF0 38 7B 00 50 */ addi r3, r27, 0x50
+/* 802F4394 002EFFF4 4B FF CE A1 */ bl MPSetUserGameInfo
+/* 802F4398 002EFFF8 80 0D AF 48 */ lwz r0, lbl_80640208-_SDA_BASE_(r13)
+/* 802F439C 002EFFFC 38 60 00 00 */ li r3, 0
+/* 802F43A0 002F0000 2C 00 00 00 */ cmpwi r0, 0
+/* 802F43A4 002F0004 40 82 00 18 */ bne lbl_802F43BC
+/* 802F43A8 002F0008 80 8D AF 40 */ lwz r4, lbl_80640200-_SDA_BASE_(r13)
+/* 802F43AC 002F000C 80 04 00 38 */ lwz r0, 0x38(r4)
+/* 802F43B0 002F0010 2C 00 00 00 */ cmpwi r0, 0
+/* 802F43B4 002F0014 41 82 00 08 */ beq lbl_802F43BC
+/* 802F43B8 002F0018 38 60 00 01 */ li r3, 1
+lbl_802F43BC:
+/* 802F43BC 002F001C 4B FF CF 4D */ bl MPSetEntryFlag
+/* 802F43C0 002F0020 80 6D AF 40 */ lwz r3, lbl_80640200-_SDA_BASE_(r13)
+/* 802F43C4 002F0024 80 63 00 3C */ lwz r3, 0x3c(r3)
+/* 802F43C8 002F0028 4B FF CF 8D */ bl MPiSetMultiBootFlag
+/* 802F43CC 002F002C 7F 23 CB 78 */ mr r3, r25
+/* 802F43D0 002F0030 4B F7 A3 B5 */ bl OSRestoreInterrupts
+/* 802F43D4 002F0034 4B FF F4 D5 */ bl MPUpdateBeacon
+/* 802F43D8 002F0038 80 1D 00 F8 */ lwz r0, 0xf8(r29)
+/* 802F43DC 002F003C 54 00 F0 BE */ srwi r0, r0, 2
+/* 802F43E0 002F0040 7C 1C 00 16 */ mulhwu r0, r28, r0
+/* 802F43E4 002F0044 54 03 D1 BE */ srwi r3, r0, 6
+/* 802F43E8 002F0048 7C 03 F0 16 */ mulhwu r0, r3, r30
+/* 802F43EC 002F004C 1C 83 00 64 */ mulli r4, r3, 0x64
+/* 802F43F0 002F0050 7C 60 FA 14 */ add r3, r0, r31
+/* 802F43F4 002F0054 4B F7 E3 11 */ bl OSSleepTicks
+lbl_802F43F8:
+/* 802F43F8 002F0058 80 0D AF 54 */ lwz r0, lbl_80640214-_SDA_BASE_(r13)
+/* 802F43FC 002F005C 2C 00 00 00 */ cmpwi r0, 0
+/* 802F4400 002F0060 40 82 FF 74 */ bne lbl_802F4374
+/* 802F4404 002F0064 39 61 00 30 */ addi r11, r1, 0x30
+/* 802F4408 002F0068 38 60 00 00 */ li r3, 0
+/* 802F440C 002F006C 4B ED 2D 61 */ bl _restgpr_25
+/* 802F4410 002F0070 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F4414 002F0074 7C 08 03 A6 */ mtlr r0
+/* 802F4418 002F0078 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F441C 002F007C 4E 80 00 20 */ blr
+
+MPDLiUpdatePacket:
+/* 802F4420 002F0080 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F4424 002F0084 7C 08 02 A6 */ mflr r0
+/* 802F4428 002F0088 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F442C 002F008C 80 0D AF 54 */ lwz r0, lbl_80640214-_SDA_BASE_(r13)
+/* 802F4430 002F0090 2C 00 00 00 */ cmpwi r0, 0
+/* 802F4434 002F0094 41 82 00 6C */ beq lbl_802F44A0
+/* 802F4438 002F0098 80 0D AF 50 */ lwz r0, lbl_80640210-_SDA_BASE_(r13)
+/* 802F443C 002F009C 2C 00 00 00 */ cmpwi r0, 0
+/* 802F4440 002F00A0 40 81 00 60 */ ble lbl_802F44A0
+/* 802F4444 002F00A4 3C 80 80 58 */ lis r4, lbl_80579580@ha
+/* 802F4448 002F00A8 80 AD AF 40 */ lwz r5, lbl_80640200-_SDA_BASE_(r13)
+/* 802F444C 002F00AC 38 84 95 80 */ addi r4, r4, lbl_80579580@l
+/* 802F4450 002F00B0 3C 60 00 01 */ lis r3, 0x0000FFFE@ha
+/* 802F4454 002F00B4 90 81 00 08 */ stw r4, 8(r1)
+/* 802F4458 002F00B8 38 03 FF FE */ addi r0, r3, 0x0000FFFE@l
+/* 802F445C 002F00BC 80 CD AF 40 */ lwz r6, lbl_80640200-_SDA_BASE_(r13)
+/* 802F4460 002F00C0 38 81 00 08 */ addi r4, r1, 8
+/* 802F4464 002F00C4 80 65 00 6C */ lwz r3, 0x6c(r5)
+/* 802F4468 002F00C8 B0 61 00 0C */ sth r3, 0xc(r1)
+/* 802F446C 002F00CC B0 01 00 0E */ sth r0, 0xe(r1)
+/* 802F4470 002F00D0 80 66 00 30 */ lwz r3, 0x30(r6)
+/* 802F4474 002F00D4 4B FF B5 2D */ bl WDP_CallParentSendHook
+/* 802F4478 002F00D8 3D 00 80 2F */ lis r8, MPDLiUpdatePacket@ha
+/* 802F447C 002F00DC 3D 20 80 58 */ lis r9, lbl_80579540@ha
+/* 802F4480 002F00E0 80 61 00 08 */ lwz r3, 8(r1)
+/* 802F4484 002F00E4 39 08 44 20 */ addi r8, r8, MPDLiUpdatePacket@l
+/* 802F4488 002F00E8 A0 81 00 0C */ lhz r4, 0xc(r1)
+/* 802F448C 002F00EC 39 29 95 40 */ addi r9, r9, lbl_80579540@l
+/* 802F4490 002F00F0 A0 A1 00 0E */ lhz r5, 0xe(r1)
+/* 802F4494 002F00F4 38 C0 00 01 */ li r6, 1
+/* 802F4498 002F00F8 38 ED AF 44 */ addi r7, r13, lbl_80640204-_SDA_BASE_
+/* 802F449C 002F00FC 4B FF CF 05 */ bl MPSendAsync
+lbl_802F44A0:
+/* 802F44A0 002F0100 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F44A4 002F0104 7C 08 03 A6 */ mtlr r0
+/* 802F44A8 002F0108 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F44AC 002F010C 4E 80 00 20 */ blr
+
+MPDLiPortCallback:
+/* 802F44B0 002F0110 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 802F44B4 002F0114 7C 08 02 A6 */ mflr r0
+/* 802F44B8 002F0118 2C 03 00 03 */ cmpwi r3, 3
+/* 802F44BC 002F011C 90 01 00 34 */ stw r0, 0x34(r1)
+/* 802F44C0 002F0120 93 E1 00 2C */ stw r31, 0x2c(r1)
+/* 802F44C4 002F0124 3F E0 80 58 */ lis r31, lbl_80579200@ha
+/* 802F44C8 002F0128 3B FF 92 00 */ addi r31, r31, lbl_80579200@l
+/* 802F44CC 002F012C 93 C1 00 28 */ stw r30, 0x28(r1)
+/* 802F44D0 002F0130 93 A1 00 24 */ stw r29, 0x24(r1)
+/* 802F44D4 002F0134 80 AD AF 40 */ lwz r5, lbl_80640200-_SDA_BASE_(r13)
+/* 802F44D8 002F0138 83 C5 00 30 */ lwz r30, 0x30(r5)
+/* 802F44DC 002F013C 41 82 01 28 */ beq lbl_802F4604
+/* 802F44E0 002F0140 40 80 00 14 */ bge lbl_802F44F4
+/* 802F44E4 002F0144 2C 03 00 01 */ cmpwi r3, 1
+/* 802F44E8 002F0148 41 82 01 4C */ beq lbl_802F4634
+/* 802F44EC 002F014C 40 80 01 48 */ bge lbl_802F4634
+/* 802F44F0 002F0150 48 00 01 44 */ b lbl_802F4634
+lbl_802F44F4:
+/* 802F44F4 002F0154 2C 03 00 05 */ cmpwi r3, 5
+/* 802F44F8 002F0158 41 82 00 C0 */ beq lbl_802F45B8
+/* 802F44FC 002F015C 40 80 01 38 */ bge lbl_802F4634
+/* 802F4500 002F0160 48 00 00 0C */ b lbl_802F450C
+/* 802F4504 002F0164 48 00 01 30 */ b lbl_802F4634
+/* 802F4508 002F0168 48 00 01 2C */ b lbl_802F4634
+lbl_802F450C:
+/* 802F450C 002F016C 83 A4 00 10 */ lwz r29, 0x10(r4)
+/* 802F4510 002F0170 38 1F 00 00 */ addi r0, r31, 0
+/* 802F4514 002F0174 38 A0 00 06 */ li r5, 6
+/* 802F4518 002F0178 38 84 00 18 */ addi r4, r4, 0x18
+/* 802F451C 002F017C 1C 7D 00 28 */ mulli r3, r29, 0x28
+/* 802F4520 002F0180 7C 60 1A 14 */ add r3, r0, r3
+/* 802F4524 002F0184 38 63 00 1E */ addi r3, r3, 0x1e
+/* 802F4528 002F0188 4B D0 FA D9 */ bl memcpy
+/* 802F452C 002F018C 7F C3 F3 78 */ mr r3, r30
+/* 802F4530 002F0190 7F A4 EB 78 */ mr r4, r29
+/* 802F4534 002F0194 4B FF B2 39 */ bl WDP_CallParentConnectedHook
+/* 802F4538 002F0198 80 6D AF 50 */ lwz r3, lbl_80640210-_SDA_BASE_(r13)
+/* 802F453C 002F019C 38 03 00 01 */ addi r0, r3, 1
+/* 802F4540 002F01A0 2C 00 00 01 */ cmpwi r0, 1
+/* 802F4544 002F01A4 90 0D AF 50 */ stw r0, lbl_80640210-_SDA_BASE_(r13)
+/* 802F4548 002F01A8 40 82 00 EC */ bne lbl_802F4634
+/* 802F454C 002F01AC 80 6D AF 54 */ lwz r3, lbl_80640214-_SDA_BASE_(r13)
+/* 802F4550 002F01B0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F4554 002F01B4 41 82 00 E0 */ beq lbl_802F4634
+/* 802F4558 002F01B8 2C 00 00 00 */ cmpwi r0, 0
+/* 802F455C 002F01BC 40 81 00 D8 */ ble lbl_802F4634
+/* 802F4560 002F01C0 38 1F 03 80 */ addi r0, r31, 0x380
+/* 802F4564 002F01C4 80 8D AF 40 */ lwz r4, lbl_80640200-_SDA_BASE_(r13)
+/* 802F4568 002F01C8 90 01 00 08 */ stw r0, 8(r1)
+/* 802F456C 002F01CC 3C 60 00 01 */ lis r3, 0x0000FFFE@ha
+/* 802F4570 002F01D0 38 03 FF FE */ addi r0, r3, 0x0000FFFE@l
+/* 802F4574 002F01D4 80 AD AF 40 */ lwz r5, lbl_80640200-_SDA_BASE_(r13)
+/* 802F4578 002F01D8 80 64 00 6C */ lwz r3, 0x6c(r4)
+/* 802F457C 002F01DC 38 81 00 08 */ addi r4, r1, 8
+/* 802F4580 002F01E0 B0 61 00 0C */ sth r3, 0xc(r1)
+/* 802F4584 002F01E4 B0 01 00 0E */ sth r0, 0xe(r1)
+/* 802F4588 002F01E8 80 65 00 30 */ lwz r3, 0x30(r5)
+/* 802F458C 002F01EC 4B FF B4 15 */ bl WDP_CallParentSendHook
+/* 802F4590 002F01F0 3D 00 80 2F */ lis r8, MPDLiUpdatePacket@ha
+/* 802F4594 002F01F4 80 61 00 08 */ lwz r3, 8(r1)
+/* 802F4598 002F01F8 A0 81 00 0C */ lhz r4, 0xc(r1)
+/* 802F459C 002F01FC 39 08 44 20 */ addi r8, r8, MPDLiUpdatePacket@l
+/* 802F45A0 002F0200 A0 A1 00 0E */ lhz r5, 0xe(r1)
+/* 802F45A4 002F0204 39 3F 03 40 */ addi r9, r31, 0x340
+/* 802F45A8 002F0208 38 C0 00 01 */ li r6, 1
+/* 802F45AC 002F020C 38 ED AF 44 */ addi r7, r13, lbl_80640204-_SDA_BASE_
+/* 802F45B0 002F0210 4B FF CD F1 */ bl MPSendAsync
+/* 802F45B4 002F0214 48 00 00 80 */ b lbl_802F4634
+lbl_802F45B8:
+/* 802F45B8 002F0218 83 A4 00 10 */ lwz r29, 0x10(r4)
+/* 802F45BC 002F021C 7F C3 F3 78 */ mr r3, r30
+/* 802F45C0 002F0220 7F A4 EB 78 */ mr r4, r29
+/* 802F45C4 002F0224 4B FF B2 8D */ bl WDP_CallParentDisconnectedHook
+/* 802F45C8 002F0228 38 00 00 01 */ li r0, 1
+/* 802F45CC 002F022C 80 6D AF 4C */ lwz r3, lbl_8064020C-_SDA_BASE_(r13)
+/* 802F45D0 002F0230 7C 00 E8 30 */ slw r0, r0, r29
+/* 802F45D4 002F0234 80 8D AF 50 */ lwz r4, lbl_80640210-_SDA_BASE_(r13)
+/* 802F45D8 002F0238 7C 60 00 39 */ and. r0, r3, r0
+/* 802F45DC 002F023C 38 04 FF FF */ addi r0, r4, -1
+/* 802F45E0 002F0240 90 0D AF 50 */ stw r0, lbl_80640210-_SDA_BASE_(r13)
+/* 802F45E4 002F0244 40 82 00 50 */ bne lbl_802F4634
+/* 802F45E8 002F0248 1C 7D 00 28 */ mulli r3, r29, 0x28
+/* 802F45EC 002F024C 38 1F 00 00 */ addi r0, r31, 0
+/* 802F45F0 002F0250 38 80 00 00 */ li r4, 0
+/* 802F45F4 002F0254 38 A0 00 28 */ li r5, 0x28
+/* 802F45F8 002F0258 7C 60 1A 14 */ add r3, r0, r3
+/* 802F45FC 002F025C 4B D0 FB 09 */ bl memset
+/* 802F4600 002F0260 48 00 00 34 */ b lbl_802F4634
+lbl_802F4604:
+/* 802F4604 002F0264 80 04 00 14 */ lwz r0, 0x14(r4)
+/* 802F4608 002F0268 38 C0 00 01 */ li r6, 1
+/* 802F460C 002F026C 7F C3 F3 78 */ mr r3, r30
+/* 802F4610 002F0270 38 A1 00 10 */ addi r5, r1, 0x10
+/* 802F4614 002F0274 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802F4618 002F0278 80 04 00 18 */ lwz r0, 0x18(r4)
+/* 802F461C 002F027C B0 01 00 14 */ sth r0, 0x14(r1)
+/* 802F4620 002F0280 80 04 00 10 */ lwz r0, 0x10(r4)
+/* 802F4624 002F0284 7C C0 00 30 */ slw r0, r6, r0
+/* 802F4628 002F0288 B0 01 00 16 */ sth r0, 0x16(r1)
+/* 802F462C 002F028C 80 84 00 10 */ lwz r4, 0x10(r4)
+/* 802F4630 002F0290 4B FF B6 A1 */ bl WDP_CallParentRecvHook
+lbl_802F4634:
+/* 802F4634 002F0294 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 802F4638 002F0298 83 E1 00 2C */ lwz r31, 0x2c(r1)
+/* 802F463C 002F029C 83 C1 00 28 */ lwz r30, 0x28(r1)
+/* 802F4640 002F02A0 83 A1 00 24 */ lwz r29, 0x24(r1)
+/* 802F4644 002F02A4 7C 08 03 A6 */ mtlr r0
+/* 802F4648 002F02A8 38 21 00 30 */ addi r1, r1, 0x30
+/* 802F464C 002F02AC 4E 80 00 20 */ blr
+
+.global MPDLStartup
+MPDLStartup:
+/* 802F4650 002F02B0 94 21 FF C0 */ stwu r1, -0x40(r1)
+/* 802F4654 002F02B4 7C 08 02 A6 */ mflr r0
+/* 802F4658 002F02B8 90 01 00 44 */ stw r0, 0x44(r1)
+/* 802F465C 002F02BC 39 61 00 40 */ addi r11, r1, 0x40
+/* 802F4660 002F02C0 4B ED 2A C1 */ bl _savegpr_25
+/* 802F4664 002F02C4 80 0D AF 54 */ lwz r0, lbl_80640214-_SDA_BASE_(r13)
+/* 802F4668 002F02C8 3F C0 80 58 */ lis r30, lbl_80579200@ha
+/* 802F466C 002F02CC 7C 7C 1B 78 */ mr r28, r3
+/* 802F4670 002F02D0 2C 00 00 00 */ cmpwi r0, 0
+/* 802F4674 002F02D4 3B DE 92 00 */ addi r30, r30, lbl_80579200@l
+/* 802F4678 002F02D8 41 82 00 1C */ beq lbl_802F4694
+/* 802F467C 002F02DC 3C 60 80 44 */ lis r3, lbl_80445D30@ha
+/* 802F4680 002F02E0 38 63 5D 30 */ addi r3, r3, lbl_80445D30@l
+/* 802F4684 002F02E4 4C C6 31 82 */ crclr 6
+/* 802F4688 002F02E8 4B D1 34 3D */ bl func_80007AC4
+/* 802F468C 002F02EC 3B 20 FF 14 */ li r25, -236
+/* 802F4690 002F02F0 48 00 01 F0 */ b lbl_802F4880
+lbl_802F4694:
+/* 802F4694 002F02F4 3B 20 00 01 */ li r25, 1
+/* 802F4698 002F02F8 39 20 0F A0 */ li r9, 0xfa0
+/* 802F469C 002F02FC 93 2D AF 54 */ stw r25, lbl_80640214-_SDA_BASE_(r13)
+/* 802F46A0 002F0300 39 00 00 C8 */ li r8, 0xc8
+/* 802F46A4 002F0304 38 E0 00 0F */ li r7, 0xf
+/* 802F46A8 002F0308 38 C0 01 F0 */ li r6, 0x1f0
+/* 802F46AC 002F030C 90 6D AF 40 */ stw r3, lbl_80640200-_SDA_BASE_(r13)
+/* 802F46B0 002F0310 3B E0 00 00 */ li r31, 0
+/* 802F46B4 002F0314 38 00 00 08 */ li r0, 8
+/* 802F46B8 002F0318 38 80 00 00 */ li r4, 0
+/* 802F46BC 002F031C 83 43 00 00 */ lwz r26, 0(r3)
+/* 802F46C0 002F0320 38 A0 02 80 */ li r5, 0x280
+/* 802F46C4 002F0324 83 A3 00 04 */ lwz r29, 4(r3)
+/* 802F46C8 002F0328 83 63 00 08 */ lwz r27, 8(r3)
+/* 802F46CC 002F032C 81 83 00 0C */ lwz r12, 0xc(r3)
+/* 802F46D0 002F0330 81 63 00 10 */ lwz r11, 0x10(r3)
+/* 802F46D4 002F0334 81 43 00 14 */ lwz r10, 0x14(r3)
+/* 802F46D8 002F0338 93 43 00 44 */ stw r26, 0x44(r3)
+/* 802F46DC 002F033C 93 A3 00 48 */ stw r29, 0x48(r3)
+/* 802F46E0 002F0340 93 63 00 4C */ stw r27, 0x4c(r3)
+/* 802F46E4 002F0344 93 23 00 50 */ stw r25, 0x50(r3)
+/* 802F46E8 002F0348 91 83 00 54 */ stw r12, 0x54(r3)
+/* 802F46EC 002F034C 91 63 00 58 */ stw r11, 0x58(r3)
+/* 802F46F0 002F0350 91 43 00 5C */ stw r10, 0x5c(r3)
+/* 802F46F4 002F0354 91 23 00 60 */ stw r9, 0x60(r3)
+/* 802F46F8 002F0358 91 03 00 64 */ stw r8, 0x64(r3)
+/* 802F46FC 002F035C 90 E3 00 68 */ stw r7, 0x68(r3)
+/* 802F4700 002F0360 90 C3 00 6C */ stw r6, 0x6c(r3)
+/* 802F4704 002F0364 90 03 00 70 */ stw r0, 0x70(r3)
+/* 802F4708 002F0368 93 E3 00 74 */ stw r31, 0x74(r3)
+/* 802F470C 002F036C 93 E3 00 78 */ stw r31, 0x78(r3)
+/* 802F4710 002F0370 93 E3 00 7C */ stw r31, 0x7c(r3)
+/* 802F4714 002F0374 93 E3 00 80 */ stw r31, 0x80(r3)
+/* 802F4718 002F0378 38 7E 00 00 */ addi r3, r30, 0
+/* 802F471C 002F037C 93 ED AF 50 */ stw r31, lbl_80640210-_SDA_BASE_(r13)
+/* 802F4720 002F0380 93 ED AF 4C */ stw r31, lbl_8064020C-_SDA_BASE_(r13)
+/* 802F4724 002F0384 93 ED AF 48 */ stw r31, lbl_80640208-_SDA_BASE_(r13)
+/* 802F4728 002F0388 4B D0 F9 DD */ bl memset
+/* 802F472C 002F038C 81 9C 00 00 */ lwz r12, 0(r28)
+/* 802F4730 002F0390 38 60 03 78 */ li r3, 0x378
+/* 802F4734 002F0394 93 3C 00 38 */ stw r25, 0x38(r28)
+/* 802F4738 002F0398 93 3C 00 3C */ stw r25, 0x3c(r28)
+/* 802F473C 002F039C 7D 89 03 A6 */ mtctr r12
+/* 802F4740 002F03A0 4E 80 04 21 */ bctrl
+/* 802F4744 002F03A4 81 9C 00 00 */ lwz r12, 0(r28)
+/* 802F4748 002F03A8 90 7C 00 30 */ stw r3, 0x30(r28)
+/* 802F474C 002F03AC 38 60 05 D8 */ li r3, 0x5d8
+/* 802F4750 002F03B0 7D 89 03 A6 */ mtctr r12
+/* 802F4754 002F03B4 4E 80 04 21 */ bctrl
+/* 802F4758 002F03B8 83 BC 00 30 */ lwz r29, 0x30(r28)
+/* 802F475C 002F03BC 90 7C 00 34 */ stw r3, 0x34(r28)
+/* 802F4760 002F03C0 2C 1D 00 00 */ cmpwi r29, 0
+/* 802F4764 002F03C4 41 82 00 0C */ beq lbl_802F4770
+/* 802F4768 002F03C8 2C 03 00 00 */ cmpwi r3, 0
+/* 802F476C 002F03CC 40 82 00 1C */ bne lbl_802F4788
+lbl_802F4770:
+/* 802F4770 002F03D0 3C 60 80 44 */ lis r3, lbl_80445D50@ha
+/* 802F4774 002F03D4 38 63 5D 50 */ addi r3, r3, lbl_80445D50@l
+/* 802F4778 002F03D8 4C C6 31 82 */ crclr 6
+/* 802F477C 002F03DC 4B D1 33 49 */ bl func_80007AC4
+/* 802F4780 002F03E0 3B 20 FF 10 */ li r25, -240
+/* 802F4784 002F03E4 48 00 00 FC */ b lbl_802F4880
+lbl_802F4788:
+/* 802F4788 002F03E8 83 7C 00 2C */ lwz r27, 0x2c(r28)
+/* 802F478C 002F03EC 3C 80 80 2F */ lis r4, MPDLiWDPCallback@ha
+/* 802F4790 002F03F0 80 BC 00 1C */ lwz r5, 0x1c(r28)
+/* 802F4794 002F03F4 7F A3 EB 78 */ mr r3, r29
+/* 802F4798 002F03F8 80 FB 00 68 */ lwz r7, 0x68(r27)
+/* 802F479C 002F03FC 38 84 40 FC */ addi r4, r4, MPDLiWDPCallback@l
+/* 802F47A0 002F0400 83 3B 00 80 */ lwz r25, 0x80(r27)
+/* 802F47A4 002F0404 54 E8 42 1E */ rlwinm r8, r7, 8, 8, 0xf
+/* 802F47A8 002F0408 54 E0 C4 2E */ rlwinm r0, r7, 0x18, 0x10, 0x17
+/* 802F47AC 002F040C 50 E8 C0 0E */ rlwimi r8, r7, 0x18, 0, 7
+/* 802F47B0 002F0410 88 DC 00 18 */ lbz r6, 0x18(r28)
+/* 802F47B4 002F0414 50 E0 46 3E */ rlwimi r0, r7, 8, 0x18, 0x1f
+/* 802F47B8 002F0418 80 FC 00 6C */ lwz r7, 0x6c(r28)
+/* 802F47BC 002F041C 7D 00 03 78 */ or r0, r8, r0
+/* 802F47C0 002F0420 7F 5B 02 14 */ add r26, r27, r0
+/* 802F47C4 002F0424 4B FF A9 8D */ bl WDP_InitParentContext
+/* 802F47C8 002F0428 57 23 42 1E */ rlwinm r3, r25, 8, 8, 0xf
+/* 802F47CC 002F042C 57 20 C4 2E */ rlwinm r0, r25, 0x18, 0x10, 0x17
+/* 802F47D0 002F0430 53 23 C0 0E */ rlwimi r3, r25, 0x18, 0, 7
+/* 802F47D4 002F0434 93 E1 00 08 */ stw r31, 8(r1)
+/* 802F47D8 002F0438 53 20 46 3E */ rlwimi r0, r25, 8, 0x18, 0x1f
+/* 802F47DC 002F043C 3C 80 80 2F */ lis r4, WDPSegmentCallback@ha
+/* 802F47E0 002F0440 7C 63 03 78 */ or r3, r3, r0
+/* 802F47E4 002F0444 38 BA 00 20 */ addi r5, r26, 0x20
+/* 802F47E8 002F0448 7C 7B 1A 14 */ add r3, r27, r3
+/* 802F47EC 002F044C 38 1E 05 80 */ addi r0, r30, 0x580
+/* 802F47F0 002F0450 90 61 00 0C */ stw r3, 0xc(r1)
+/* 802F47F4 002F0454 38 84 42 8C */ addi r4, r4, WDPSegmentCallback@l
+/* 802F47F8 002F0458 7F A3 EB 78 */ mr r3, r29
+/* 802F47FC 002F045C 38 DA 02 20 */ addi r6, r26, 0x220
+/* 802F4800 002F0460 90 01 00 10 */ stw r0, 0x10(r1)
+/* 802F4804 002F0464 93 61 00 14 */ stw r27, 0x14(r1)
+/* 802F4808 002F0468 90 81 00 18 */ stw r4, 0x18(r1)
+/* 802F480C 002F046C 93 61 00 1C */ stw r27, 0x1c(r1)
+/* 802F4810 002F0470 80 9C 00 34 */ lwz r4, 0x34(r28)
+/* 802F4814 002F0474 80 FC 00 28 */ lwz r7, 0x28(r28)
+/* 802F4818 002F0478 81 1C 00 20 */ lwz r8, 0x20(r28)
+/* 802F481C 002F047C 81 3C 00 24 */ lwz r9, 0x24(r28)
+/* 802F4820 002F0480 81 5C 00 0C */ lwz r10, 0xc(r28)
+/* 802F4824 002F0484 4B FF B7 A9 */ bl WDP_RegisterSession
+/* 802F4828 002F0488 88 1D 00 34 */ lbz r0, 0x34(r29)
+/* 802F482C 002F048C 3B 7E 00 00 */ addi r27, r30, 0
+/* 802F4830 002F0490 38 7B 00 0A */ addi r3, r27, 0xa
+/* 802F4834 002F0494 38 9D 00 36 */ addi r4, r29, 0x36
+/* 802F4838 002F0498 54 00 E7 3E */ rlwinm r0, r0, 0x1c, 0x1c, 0x1f
+/* 802F483C 002F049C 38 A0 00 14 */ li r5, 0x14
+/* 802F4840 002F04A0 90 1E 00 00 */ stw r0, 0(r30)
+/* 802F4844 002F04A4 88 1D 00 34 */ lbz r0, 0x34(r29)
+/* 802F4848 002F04A8 54 00 07 3E */ clrlwi r0, r0, 0x1c
+/* 802F484C 002F04AC 90 1B 00 04 */ stw r0, 4(r27)
+/* 802F4850 002F04B0 88 1D 00 35 */ lbz r0, 0x35(r29)
+/* 802F4854 002F04B4 B0 1B 00 08 */ sth r0, 8(r27)
+/* 802F4858 002F04B8 4B D0 F7 A9 */ bl memcpy
+/* 802F485C 002F04BC 3C 60 80 2F */ lis r3, MPDLiPortCallback@ha
+/* 802F4860 002F04C0 93 FB 00 24 */ stw r31, 0x24(r27)
+/* 802F4864 002F04C4 38 63 44 B0 */ addi r3, r3, MPDLiPortCallback@l
+/* 802F4868 002F04C8 38 00 00 02 */ li r0, 2
+/* 802F486C 002F04CC 90 7C 01 00 */ stw r3, 0x100(r28)
+/* 802F4870 002F04D0 38 7C 00 44 */ addi r3, r28, 0x44
+/* 802F4874 002F04D4 90 1C 01 04 */ stw r0, 0x104(r28)
+/* 802F4878 002F04D8 4B FF BD 11 */ bl MPStartup
+/* 802F487C 002F04DC 7C 79 1B 78 */ mr r25, r3
+lbl_802F4880:
+/* 802F4880 002F04E0 2C 19 00 00 */ cmpwi r25, 0
+/* 802F4884 002F04E4 41 82 00 44 */ beq lbl_802F48C8
+/* 802F4888 002F04E8 80 7C 00 30 */ lwz r3, 0x30(r28)
+/* 802F488C 002F04EC 2C 03 00 00 */ cmpwi r3, 0
+/* 802F4890 002F04F0 41 82 00 2C */ beq lbl_802F48BC
+/* 802F4894 002F04F4 81 9C 00 04 */ lwz r12, 4(r28)
+/* 802F4898 002F04F8 7D 89 03 A6 */ mtctr r12
+/* 802F489C 002F04FC 4E 80 04 21 */ bctrl
+/* 802F48A0 002F0500 81 9C 00 04 */ lwz r12, 4(r28)
+/* 802F48A4 002F0504 3B A0 00 00 */ li r29, 0
+/* 802F48A8 002F0508 93 BC 00 30 */ stw r29, 0x30(r28)
+/* 802F48AC 002F050C 80 7C 00 34 */ lwz r3, 0x34(r28)
+/* 802F48B0 002F0510 7D 89 03 A6 */ mtctr r12
+/* 802F48B4 002F0514 4E 80 04 21 */ bctrl
+/* 802F48B8 002F0518 93 BC 00 34 */ stw r29, 0x34(r28)
+lbl_802F48BC:
+/* 802F48BC 002F051C 38 00 00 00 */ li r0, 0
+/* 802F48C0 002F0520 90 0D AF 40 */ stw r0, lbl_80640200-_SDA_BASE_(r13)
+/* 802F48C4 002F0524 48 00 00 30 */ b lbl_802F48F4
+lbl_802F48C8:
+/* 802F48C8 002F0528 38 7E 05 A0 */ addi r3, r30, 0x5a0
+/* 802F48CC 002F052C 3C 80 80 2F */ lis r4, MPDLiSyncBeaconTask@ha
+/* 802F48D0 002F0530 38 84 43 3C */ addi r4, r4, MPDLiSyncBeaconTask@l
+/* 802F48D4 002F0534 38 A0 00 00 */ li r5, 0
+/* 802F48D8 002F0538 38 C3 13 18 */ addi r6, r3, 0x1318
+/* 802F48DC 002F053C 38 E0 10 00 */ li r7, 0x1000
+/* 802F48E0 002F0540 39 00 00 05 */ li r8, 5
+/* 802F48E4 002F0544 39 20 00 01 */ li r9, 1
+/* 802F48E8 002F0548 4B F7 CF F9 */ bl OSCreateThread
+/* 802F48EC 002F054C 38 7E 05 A0 */ addi r3, r30, 0x5a0
+/* 802F48F0 002F0550 4B F7 D6 59 */ bl OSResumeThread
+lbl_802F48F4:
+/* 802F48F4 002F0554 39 61 00 40 */ addi r11, r1, 0x40
+/* 802F48F8 002F0558 7F 23 CB 78 */ mr r3, r25
+/* 802F48FC 002F055C 4B ED 28 71 */ bl _restgpr_25
+/* 802F4900 002F0560 80 01 00 44 */ lwz r0, 0x44(r1)
+/* 802F4904 002F0564 7C 08 03 A6 */ mtlr r0
+/* 802F4908 002F0568 38 21 00 40 */ addi r1, r1, 0x40
+/* 802F490C 002F056C 4E 80 00 20 */ blr
+
+.global MPDLCleanup
+MPDLCleanup:
+/* 802F4910 002F0570 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F4914 002F0574 7C 08 02 A6 */ mflr r0
+/* 802F4918 002F0578 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F491C 002F057C 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F4920 002F0580 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 802F4924 002F0584 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 802F4928 002F0588 83 AD AF 40 */ lwz r29, lbl_80640200-_SDA_BASE_(r13)
+/* 802F492C 002F058C 80 0D AF 54 */ lwz r0, lbl_80640214-_SDA_BASE_(r13)
+/* 802F4930 002F0590 2C 00 00 00 */ cmpwi r0, 0
+/* 802F4934 002F0594 40 82 00 1C */ bne lbl_802F4950
+/* 802F4938 002F0598 3C 60 80 44 */ lis r3, lbl_80445D84@ha
+/* 802F493C 002F059C 38 63 5D 84 */ addi r3, r3, lbl_80445D84@l
+/* 802F4940 002F05A0 4C C6 31 82 */ crclr 6
+/* 802F4944 002F05A4 4B D1 31 81 */ bl func_80007AC4
+/* 802F4948 002F05A8 3B C0 FF 14 */ li r30, -236
+/* 802F494C 002F05AC 48 00 00 50 */ b lbl_802F499C
+lbl_802F4950:
+/* 802F4950 002F05B0 3B E0 00 00 */ li r31, 0
+/* 802F4954 002F05B4 3C 60 80 58 */ lis r3, lbl_805797A0@ha
+/* 802F4958 002F05B8 93 ED AF 54 */ stw r31, lbl_80640214-_SDA_BASE_(r13)
+/* 802F495C 002F05BC 38 63 97 A0 */ addi r3, r3, lbl_805797A0@l
+/* 802F4960 002F05C0 38 80 00 00 */ li r4, 0
+/* 802F4964 002F05C4 4B F7 D4 A5 */ bl OSJoinThread
+/* 802F4968 002F05C8 4B FF BD F9 */ bl MPCleanup
+/* 802F496C 002F05CC 81 9D 00 04 */ lwz r12, 4(r29)
+/* 802F4970 002F05D0 7C 7E 1B 78 */ mr r30, r3
+/* 802F4974 002F05D4 80 7D 00 30 */ lwz r3, 0x30(r29)
+/* 802F4978 002F05D8 7D 89 03 A6 */ mtctr r12
+/* 802F497C 002F05DC 4E 80 04 21 */ bctrl
+/* 802F4980 002F05E0 93 FD 00 30 */ stw r31, 0x30(r29)
+/* 802F4984 002F05E4 81 9D 00 04 */ lwz r12, 4(r29)
+/* 802F4988 002F05E8 80 7D 00 34 */ lwz r3, 0x34(r29)
+/* 802F498C 002F05EC 7D 89 03 A6 */ mtctr r12
+/* 802F4990 002F05F0 4E 80 04 21 */ bctrl
+/* 802F4994 002F05F4 93 FD 00 34 */ stw r31, 0x34(r29)
+/* 802F4998 002F05F8 93 ED AF 40 */ stw r31, lbl_80640200-_SDA_BASE_(r13)
+lbl_802F499C:
+/* 802F499C 002F05FC 7F C3 F3 78 */ mr r3, r30
+/* 802F49A0 002F0600 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F49A4 002F0604 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 802F49A8 002F0608 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 802F49AC 002F060C 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F49B0 002F0610 7C 08 03 A6 */ mtlr r0
+/* 802F49B4 002F0614 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F49B8 002F0618 4E 80 00 20 */ blr
+
+.global MPDLStartDownload
+MPDLStartDownload:
+/* 802F49BC 002F061C 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F49C0 002F0620 7C 08 02 A6 */ mflr r0
+/* 802F49C4 002F0624 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F49C8 002F0628 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F49CC 002F062C 4B ED 27 5D */ bl _savegpr_27
+/* 802F49D0 002F0630 3B C0 00 00 */ li r30, 0
+/* 802F49D4 002F0634 4B F7 9D 89 */ bl OSDisableInterrupts
+/* 802F49D8 002F0638 80 8D AF 40 */ lwz r4, lbl_80640200-_SDA_BASE_(r13)
+/* 802F49DC 002F063C 7C 7D 1B 78 */ mr r29, r3
+/* 802F49E0 002F0640 2C 04 00 00 */ cmpwi r4, 0
+/* 802F49E4 002F0644 40 82 00 18 */ bne lbl_802F49FC
+/* 802F49E8 002F0648 3C 60 80 44 */ lis r3, lbl_80445D84@ha
+/* 802F49EC 002F064C 38 63 5D 84 */ addi r3, r3, lbl_80445D84@l
+/* 802F49F0 002F0650 4C C6 31 82 */ crclr 6
+/* 802F49F4 002F0654 4B D1 30 D1 */ bl func_80007AC4
+/* 802F49F8 002F0658 48 00 01 14 */ b lbl_802F4B0C
+lbl_802F49FC:
+/* 802F49FC 002F065C 80 0D AF 54 */ lwz r0, lbl_80640214-_SDA_BASE_(r13)
+/* 802F4A00 002F0660 3B C0 00 00 */ li r30, 0
+/* 802F4A04 002F0664 83 84 00 30 */ lwz r28, 0x30(r4)
+/* 802F4A08 002F0668 2C 00 00 00 */ cmpwi r0, 0
+/* 802F4A0C 002F066C 41 82 00 C8 */ beq lbl_802F4AD4
+/* 802F4A10 002F0670 80 8D AF 40 */ lwz r4, lbl_80640200-_SDA_BASE_(r13)
+/* 802F4A14 002F0674 38 00 00 03 */ li r0, 3
+/* 802F4A18 002F0678 38 A0 00 01 */ li r5, 1
+/* 802F4A1C 002F067C 38 60 00 01 */ li r3, 1
+/* 802F4A20 002F0680 80 84 00 30 */ lwz r4, 0x30(r4)
+/* 802F4A24 002F0684 38 84 00 34 */ addi r4, r4, 0x34
+/* 802F4A28 002F0688 7C 09 03 A6 */ mtctr r0
+lbl_802F4A2C:
+/* 802F4A2C 002F068C 80 04 00 28 */ lwz r0, 0x28(r4)
+/* 802F4A30 002F0690 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4A34 002F0694 41 80 00 14 */ blt lbl_802F4A48
+/* 802F4A38 002F0698 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4A3C 002F069C 41 81 00 0C */ bgt lbl_802F4A48
+/* 802F4A40 002F06A0 7C 60 28 30 */ slw r0, r3, r5
+/* 802F4A44 002F06A4 7F DE 03 78 */ or r30, r30, r0
+lbl_802F4A48:
+/* 802F4A48 002F06A8 80 04 00 5C */ lwz r0, 0x5c(r4)
+/* 802F4A4C 002F06AC 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4A50 002F06B0 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4A54 002F06B4 41 80 00 14 */ blt lbl_802F4A68
+/* 802F4A58 002F06B8 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4A5C 002F06BC 41 81 00 0C */ bgt lbl_802F4A68
+/* 802F4A60 002F06C0 7C 60 28 30 */ slw r0, r3, r5
+/* 802F4A64 002F06C4 7F DE 03 78 */ or r30, r30, r0
+lbl_802F4A68:
+/* 802F4A68 002F06C8 80 04 00 90 */ lwz r0, 0x90(r4)
+/* 802F4A6C 002F06CC 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4A70 002F06D0 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4A74 002F06D4 41 80 00 14 */ blt lbl_802F4A88
+/* 802F4A78 002F06D8 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4A7C 002F06DC 41 81 00 0C */ bgt lbl_802F4A88
+/* 802F4A80 002F06E0 7C 60 28 30 */ slw r0, r3, r5
+/* 802F4A84 002F06E4 7F DE 03 78 */ or r30, r30, r0
+lbl_802F4A88:
+/* 802F4A88 002F06E8 80 04 00 C4 */ lwz r0, 0xc4(r4)
+/* 802F4A8C 002F06EC 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4A90 002F06F0 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4A94 002F06F4 41 80 00 14 */ blt lbl_802F4AA8
+/* 802F4A98 002F06F8 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4A9C 002F06FC 41 81 00 0C */ bgt lbl_802F4AA8
+/* 802F4AA0 002F0700 7C 60 28 30 */ slw r0, r3, r5
+/* 802F4AA4 002F0704 7F DE 03 78 */ or r30, r30, r0
+lbl_802F4AA8:
+/* 802F4AA8 002F0708 80 04 00 F8 */ lwz r0, 0xf8(r4)
+/* 802F4AAC 002F070C 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4AB0 002F0710 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4AB4 002F0714 41 80 00 14 */ blt lbl_802F4AC8
+/* 802F4AB8 002F0718 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4ABC 002F071C 41 81 00 0C */ bgt lbl_802F4AC8
+/* 802F4AC0 002F0720 7C 60 28 30 */ slw r0, r3, r5
+/* 802F4AC4 002F0724 7F DE 03 78 */ or r30, r30, r0
+lbl_802F4AC8:
+/* 802F4AC8 002F0728 38 84 01 04 */ addi r4, r4, 0x104
+/* 802F4ACC 002F072C 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4AD0 002F0730 42 00 FF 5C */ bdnz lbl_802F4A2C
+lbl_802F4AD4:
+/* 802F4AD4 002F0734 3B 60 00 01 */ li r27, 1
+/* 802F4AD8 002F0738 3B E0 00 01 */ li r31, 1
+lbl_802F4ADC:
+/* 802F4ADC 002F073C 7F E0 D8 30 */ slw r0, r31, r27
+/* 802F4AE0 002F0740 7F C0 00 39 */ and. r0, r30, r0
+/* 802F4AE4 002F0744 41 82 00 14 */ beq lbl_802F4AF8
+/* 802F4AE8 002F0748 7F 83 E3 78 */ mr r3, r28
+/* 802F4AEC 002F074C 7F 64 DB 78 */ mr r4, r27
+/* 802F4AF0 002F0750 38 A0 00 04 */ li r5, 4
+/* 802F4AF4 002F0754 4B FF B9 25 */ bl WDP_AllowChildStatus
+lbl_802F4AF8:
+/* 802F4AF8 002F0758 3B 7B 00 01 */ addi r27, r27, 1
+/* 802F4AFC 002F075C 2C 1B 00 10 */ cmpwi r27, 0x10
+/* 802F4B00 002F0760 41 80 FF DC */ blt lbl_802F4ADC
+/* 802F4B04 002F0764 38 00 00 01 */ li r0, 1
+/* 802F4B08 002F0768 90 0D AF 48 */ stw r0, lbl_80640208-_SDA_BASE_(r13)
+lbl_802F4B0C:
+/* 802F4B0C 002F076C 7F A3 EB 78 */ mr r3, r29
+/* 802F4B10 002F0770 4B F7 9C 75 */ bl OSRestoreInterrupts
+/* 802F4B14 002F0774 39 61 00 20 */ addi r11, r1, 0x20
+/* 802F4B18 002F0778 7F C3 F3 78 */ mr r3, r30
+/* 802F4B1C 002F077C 4B ED 26 59 */ bl _restgpr_27
+/* 802F4B20 002F0780 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F4B24 002F0784 7C 08 03 A6 */ mtlr r0
+/* 802F4B28 002F0788 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F4B2C 002F078C 4E 80 00 20 */ blr
+
+.global MPDLGetPlayerInfo
+MPDLGetPlayerInfo:
+/* 802F4B30 002F0790 80 0D AF 54 */ lwz r0, lbl_80640214-_SDA_BASE_(r13)
+/* 802F4B34 002F0794 38 E0 00 00 */ li r7, 0
+/* 802F4B38 002F0798 2C 00 00 00 */ cmpwi r0, 0
+/* 802F4B3C 002F079C 41 82 00 DC */ beq lbl_802F4C18
+/* 802F4B40 002F07A0 80 ED AF 40 */ lwz r7, lbl_80640200-_SDA_BASE_(r13)
+/* 802F4B44 002F07A4 7C 60 00 34 */ cntlzw r0, r3
+/* 802F4B48 002F07A8 1C A3 00 34 */ mulli r5, r3, 0x34
+/* 802F4B4C 002F07AC 38 C0 00 00 */ li r6, 0
+/* 802F4B50 002F07B0 80 E7 00 30 */ lwz r7, 0x30(r7)
+/* 802F4B54 002F07B4 54 08 D9 7E */ srwi r8, r0, 5
+/* 802F4B58 002F07B8 7C A7 2A 14 */ add r5, r7, r5
+/* 802F4B5C 002F07BC 80 05 00 28 */ lwz r0, 0x28(r5)
+/* 802F4B60 002F07C0 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4B64 002F07C4 41 80 00 10 */ blt lbl_802F4B74
+/* 802F4B68 002F07C8 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4B6C 002F07CC 41 81 00 08 */ bgt lbl_802F4B74
+/* 802F4B70 002F07D0 38 C0 00 01 */ li r6, 1
+lbl_802F4B74:
+/* 802F4B74 002F07D4 38 00 00 01 */ li r0, 1
+/* 802F4B78 002F07D8 80 AD AF 4C */ lwz r5, lbl_8064020C-_SDA_BASE_(r13)
+/* 802F4B7C 002F07DC 7C 00 18 30 */ slw r0, r0, r3
+/* 802F4B80 002F07E0 2C 08 00 00 */ cmpwi r8, 0
+/* 802F4B84 002F07E4 7C A5 00 38 */ and r5, r5, r0
+/* 802F4B88 002F07E8 38 E0 00 00 */ li r7, 0
+/* 802F4B8C 002F07EC 7C 05 00 D0 */ neg r0, r5
+/* 802F4B90 002F07F0 7C 00 2B 78 */ or r0, r0, r5
+/* 802F4B94 002F07F4 54 00 0F FE */ srwi r0, r0, 0x1f
+/* 802F4B98 002F07F8 40 82 00 14 */ bne lbl_802F4BAC
+/* 802F4B9C 002F07FC 2C 06 00 00 */ cmpwi r6, 0
+/* 802F4BA0 002F0800 40 82 00 0C */ bne lbl_802F4BAC
+/* 802F4BA4 002F0804 2C 00 00 00 */ cmpwi r0, 0
+/* 802F4BA8 002F0808 41 82 00 08 */ beq lbl_802F4BB0
+lbl_802F4BAC:
+/* 802F4BAC 002F080C 38 E0 00 01 */ li r7, 1
+lbl_802F4BB0:
+/* 802F4BB0 002F0810 2C 07 00 00 */ cmpwi r7, 0
+/* 802F4BB4 002F0814 41 82 00 64 */ beq lbl_802F4C18
+/* 802F4BB8 002F0818 1C 03 00 28 */ mulli r0, r3, 0x28
+/* 802F4BBC 002F081C 3C 60 80 58 */ lis r3, lbl_80579200@ha
+/* 802F4BC0 002F0820 38 63 92 00 */ addi r3, r3, lbl_80579200@l
+/* 802F4BC4 002F0824 7C A3 02 14 */ add r5, r3, r0
+/* 802F4BC8 002F0828 7C 63 00 2E */ lwzx r3, r3, r0
+/* 802F4BCC 002F082C 80 05 00 04 */ lwz r0, 4(r5)
+/* 802F4BD0 002F0830 90 64 00 00 */ stw r3, 0(r4)
+/* 802F4BD4 002F0834 90 04 00 04 */ stw r0, 4(r4)
+/* 802F4BD8 002F0838 80 65 00 08 */ lwz r3, 8(r5)
+/* 802F4BDC 002F083C 80 05 00 0C */ lwz r0, 0xc(r5)
+/* 802F4BE0 002F0840 90 64 00 08 */ stw r3, 8(r4)
+/* 802F4BE4 002F0844 90 04 00 0C */ stw r0, 0xc(r4)
+/* 802F4BE8 002F0848 80 65 00 10 */ lwz r3, 0x10(r5)
+/* 802F4BEC 002F084C 80 05 00 14 */ lwz r0, 0x14(r5)
+/* 802F4BF0 002F0850 90 64 00 10 */ stw r3, 0x10(r4)
+/* 802F4BF4 002F0854 90 04 00 14 */ stw r0, 0x14(r4)
+/* 802F4BF8 002F0858 80 65 00 18 */ lwz r3, 0x18(r5)
+/* 802F4BFC 002F085C 80 05 00 1C */ lwz r0, 0x1c(r5)
+/* 802F4C00 002F0860 90 64 00 18 */ stw r3, 0x18(r4)
+/* 802F4C04 002F0864 90 04 00 1C */ stw r0, 0x1c(r4)
+/* 802F4C08 002F0868 80 65 00 20 */ lwz r3, 0x20(r5)
+/* 802F4C0C 002F086C 80 05 00 24 */ lwz r0, 0x24(r5)
+/* 802F4C10 002F0870 90 64 00 20 */ stw r3, 0x20(r4)
+/* 802F4C14 002F0874 90 04 00 24 */ stw r0, 0x24(r4)
+lbl_802F4C18:
+/* 802F4C18 002F0878 7C E3 3B 78 */ mr r3, r7
+/* 802F4C1C 002F087C 4E 80 00 20 */ blr
+
+.global MPDLGetEntryBitmap
+MPDLGetEntryBitmap:
+/* 802F4C20 002F0880 80 0D AF 54 */ lwz r0, lbl_80640214-_SDA_BASE_(r13)
+/* 802F4C24 002F0884 38 60 00 00 */ li r3, 0
+/* 802F4C28 002F0888 2C 00 00 00 */ cmpwi r0, 0
+/* 802F4C2C 002F088C 4D 82 00 20 */ beqlr
+/* 802F4C30 002F0890 80 AD AF 40 */ lwz r5, lbl_80640200-_SDA_BASE_(r13)
+/* 802F4C34 002F0894 38 00 00 03 */ li r0, 3
+/* 802F4C38 002F0898 38 C0 00 01 */ li r6, 1
+/* 802F4C3C 002F089C 38 80 00 01 */ li r4, 1
+/* 802F4C40 002F08A0 80 A5 00 30 */ lwz r5, 0x30(r5)
+/* 802F4C44 002F08A4 38 A5 00 34 */ addi r5, r5, 0x34
+/* 802F4C48 002F08A8 7C 09 03 A6 */ mtctr r0
+lbl_802F4C4C:
+/* 802F4C4C 002F08AC 80 05 00 28 */ lwz r0, 0x28(r5)
+/* 802F4C50 002F08B0 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4C54 002F08B4 41 80 00 14 */ blt lbl_802F4C68
+/* 802F4C58 002F08B8 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4C5C 002F08BC 41 81 00 0C */ bgt lbl_802F4C68
+/* 802F4C60 002F08C0 7C 80 30 30 */ slw r0, r4, r6
+/* 802F4C64 002F08C4 7C 63 03 78 */ or r3, r3, r0
+lbl_802F4C68:
+/* 802F4C68 002F08C8 80 05 00 5C */ lwz r0, 0x5c(r5)
+/* 802F4C6C 002F08CC 38 C6 00 01 */ addi r6, r6, 1
+/* 802F4C70 002F08D0 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4C74 002F08D4 41 80 00 14 */ blt lbl_802F4C88
+/* 802F4C78 002F08D8 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4C7C 002F08DC 41 81 00 0C */ bgt lbl_802F4C88
+/* 802F4C80 002F08E0 7C 80 30 30 */ slw r0, r4, r6
+/* 802F4C84 002F08E4 7C 63 03 78 */ or r3, r3, r0
+lbl_802F4C88:
+/* 802F4C88 002F08E8 80 05 00 90 */ lwz r0, 0x90(r5)
+/* 802F4C8C 002F08EC 38 C6 00 01 */ addi r6, r6, 1
+/* 802F4C90 002F08F0 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4C94 002F08F4 41 80 00 14 */ blt lbl_802F4CA8
+/* 802F4C98 002F08F8 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4C9C 002F08FC 41 81 00 0C */ bgt lbl_802F4CA8
+/* 802F4CA0 002F0900 7C 80 30 30 */ slw r0, r4, r6
+/* 802F4CA4 002F0904 7C 63 03 78 */ or r3, r3, r0
+lbl_802F4CA8:
+/* 802F4CA8 002F0908 80 05 00 C4 */ lwz r0, 0xc4(r5)
+/* 802F4CAC 002F090C 38 C6 00 01 */ addi r6, r6, 1
+/* 802F4CB0 002F0910 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4CB4 002F0914 41 80 00 14 */ blt lbl_802F4CC8
+/* 802F4CB8 002F0918 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4CBC 002F091C 41 81 00 0C */ bgt lbl_802F4CC8
+/* 802F4CC0 002F0920 7C 80 30 30 */ slw r0, r4, r6
+/* 802F4CC4 002F0924 7C 63 03 78 */ or r3, r3, r0
+lbl_802F4CC8:
+/* 802F4CC8 002F0928 80 05 00 F8 */ lwz r0, 0xf8(r5)
+/* 802F4CCC 002F092C 38 C6 00 01 */ addi r6, r6, 1
+/* 802F4CD0 002F0930 2C 00 00 02 */ cmpwi r0, 2
+/* 802F4CD4 002F0934 41 80 00 14 */ blt lbl_802F4CE8
+/* 802F4CD8 002F0938 2C 00 00 06 */ cmpwi r0, 6
+/* 802F4CDC 002F093C 41 81 00 0C */ bgt lbl_802F4CE8
+/* 802F4CE0 002F0940 7C 80 30 30 */ slw r0, r4, r6
+/* 802F4CE4 002F0944 7C 63 03 78 */ or r3, r3, r0
+lbl_802F4CE8:
+/* 802F4CE8 002F0948 38 A5 01 04 */ addi r5, r5, 0x104
+/* 802F4CEC 002F094C 38 C6 00 01 */ addi r6, r6, 1
+/* 802F4CF0 002F0950 42 00 FF 5C */ bdnz lbl_802F4C4C
+/* 802F4CF4 002F0954 4E 80 00 20 */ blr
+
+.global MPDLGetBootedBitmap
+MPDLGetBootedBitmap:
+/* 802F4CF8 002F0958 80 6D AF 4C */ lwz r3, lbl_8064020C-_SDA_BASE_(r13)
+/* 802F4CFC 002F095C 4E 80 00 20 */ blr
+
+.global MPDLEnableFlag
+MPDLEnableFlag:
+/* 802F4D00 002F0960 80 AD AF 40 */ lwz r5, lbl_80640200-_SDA_BASE_(r13)
+/* 802F4D04 002F0964 2C 05 00 00 */ cmpwi r5, 0
+/* 802F4D08 002F0968 4D 82 00 20 */ beqlr
+/* 802F4D0C 002F096C 90 65 00 38 */ stw r3, 0x38(r5)
+/* 802F4D10 002F0970 90 85 00 3C */ stw r4, 0x3c(r5)
+/* 802F4D14 002F0974 4E 80 00 20 */ blr
diff --git a/asm/SDK/NET/NETVersion.s b/asm/SDK/NET/NETVersion.s
new file mode 100644
index 0000000..e2eca88
--- /dev/null
+++ b/asm/SDK/NET/NETVersion.s
@@ -0,0 +1,7 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+NETGetRexPPCVersionPrintable:
+/* 802F5190 002F0DF0 80 6D 8C 00 */ lwz r3, lbl_8063DEC0-_SDA_BASE_(r13)
+/* 802F5194 002F0DF4 4E 80 00 20 */ blr
diff --git a/asm/SDK/NET/neterrorcode.s b/asm/SDK/NET/neterrorcode.s
new file mode 100644
index 0000000..3ecf04e
--- /dev/null
+++ b/asm/SDK/NET/neterrorcode.s
@@ -0,0 +1,352 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NETGetConnectionType
+NETGetConnectionType:
+/* 802F4D18 002F0978 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 802F4D1C 002F097C 7C 08 02 A6 */ mflr r0
+/* 802F4D20 002F0980 90 01 00 24 */ stw r0, 0x24(r1)
+/* 802F4D24 002F0984 38 61 00 10 */ addi r3, r1, 0x10
+/* 802F4D28 002F0988 38 81 00 0C */ addi r4, r1, 0xc
+/* 802F4D2C 002F098C 38 A1 00 08 */ addi r5, r1, 8
+/* 802F4D30 002F0990 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 802F4D34 002F0994 3B E0 00 63 */ li r31, 0x63
+/* 802F4D38 002F0998 4B FF 8C 25 */ bl NCDiGetEnabledConfigList
+/* 802F4D3C 002F099C 2C 03 00 00 */ cmpwi r3, 0
+/* 802F4D40 002F09A0 41 80 00 18 */ blt lbl_802F4D58
+/* 802F4D44 002F09A4 80 61 00 10 */ lwz r3, 0x10(r1)
+/* 802F4D48 002F09A8 80 81 00 0C */ lwz r4, 0xc(r1)
+/* 802F4D4C 002F09AC 80 A1 00 08 */ lwz r5, 8(r1)
+/* 802F4D50 002F09B0 48 00 00 21 */ bl NETiGetConnectionTypeFromConfigList
+/* 802F4D54 002F09B4 7C 7F 1B 78 */ mr r31, r3
+lbl_802F4D58:
+/* 802F4D58 002F09B8 7F E3 FB 78 */ mr r3, r31
+/* 802F4D5C 002F09BC 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 802F4D60 002F09C0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 802F4D64 002F09C4 7C 08 03 A6 */ mtlr r0
+/* 802F4D68 002F09C8 38 21 00 20 */ addi r1, r1, 0x20
+/* 802F4D6C 002F09CC 4E 80 00 20 */ blr
+
+.global NETiGetConnectionTypeFromConfigList
+NETiGetConnectionTypeFromConfigList:
+/* 802F4D70 002F09D0 2C 03 00 00 */ cmpwi r3, 0
+/* 802F4D74 002F09D4 38 00 00 63 */ li r0, 0x63
+/* 802F4D78 002F09D8 41 82 00 D4 */ beq lbl_802F4E4C
+/* 802F4D7C 002F09DC 2C 04 00 00 */ cmpwi r4, 0
+/* 802F4D80 002F09E0 40 82 02 60 */ bne lbl_802F4FE0
+/* 802F4D84 002F09E4 2C 05 00 00 */ cmpwi r5, 0
+/* 802F4D88 002F09E8 40 82 02 58 */ bne lbl_802F4FE0
+/* 802F4D8C 002F09EC 38 00 00 04 */ li r0, 4
+/* 802F4D90 002F09F0 38 A0 00 00 */ li r5, 0
+/* 802F4D94 002F09F4 38 80 00 01 */ li r4, 1
+/* 802F4D98 002F09F8 7C 09 03 A6 */ mtctr r0
+lbl_802F4D9C:
+/* 802F4D9C 002F09FC 7C 60 20 39 */ and. r0, r3, r4
+/* 802F4DA0 002F0A00 41 82 00 08 */ beq lbl_802F4DA8
+/* 802F4DA4 002F0A04 48 00 00 A0 */ b lbl_802F4E44
+lbl_802F4DA8:
+/* 802F4DA8 002F0A08 54 84 08 3C */ slwi r4, r4, 1
+/* 802F4DAC 002F0A0C 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4DB0 002F0A10 7C 60 20 39 */ and. r0, r3, r4
+/* 802F4DB4 002F0A14 41 82 00 08 */ beq lbl_802F4DBC
+/* 802F4DB8 002F0A18 48 00 00 8C */ b lbl_802F4E44
+lbl_802F4DBC:
+/* 802F4DBC 002F0A1C 54 84 08 3C */ slwi r4, r4, 1
+/* 802F4DC0 002F0A20 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4DC4 002F0A24 7C 60 20 39 */ and. r0, r3, r4
+/* 802F4DC8 002F0A28 41 82 00 08 */ beq lbl_802F4DD0
+/* 802F4DCC 002F0A2C 48 00 00 78 */ b lbl_802F4E44
+lbl_802F4DD0:
+/* 802F4DD0 002F0A30 54 84 08 3C */ slwi r4, r4, 1
+/* 802F4DD4 002F0A34 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4DD8 002F0A38 7C 60 20 39 */ and. r0, r3, r4
+/* 802F4DDC 002F0A3C 41 82 00 08 */ beq lbl_802F4DE4
+/* 802F4DE0 002F0A40 48 00 00 64 */ b lbl_802F4E44
+lbl_802F4DE4:
+/* 802F4DE4 002F0A44 54 84 08 3C */ slwi r4, r4, 1
+/* 802F4DE8 002F0A48 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4DEC 002F0A4C 7C 60 20 39 */ and. r0, r3, r4
+/* 802F4DF0 002F0A50 41 82 00 08 */ beq lbl_802F4DF8
+/* 802F4DF4 002F0A54 48 00 00 50 */ b lbl_802F4E44
+lbl_802F4DF8:
+/* 802F4DF8 002F0A58 54 84 08 3C */ slwi r4, r4, 1
+/* 802F4DFC 002F0A5C 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4E00 002F0A60 7C 60 20 39 */ and. r0, r3, r4
+/* 802F4E04 002F0A64 41 82 00 08 */ beq lbl_802F4E0C
+/* 802F4E08 002F0A68 48 00 00 3C */ b lbl_802F4E44
+lbl_802F4E0C:
+/* 802F4E0C 002F0A6C 54 84 08 3C */ slwi r4, r4, 1
+/* 802F4E10 002F0A70 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4E14 002F0A74 7C 60 20 39 */ and. r0, r3, r4
+/* 802F4E18 002F0A78 41 82 00 08 */ beq lbl_802F4E20
+/* 802F4E1C 002F0A7C 48 00 00 28 */ b lbl_802F4E44
+lbl_802F4E20:
+/* 802F4E20 002F0A80 54 84 08 3C */ slwi r4, r4, 1
+/* 802F4E24 002F0A84 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4E28 002F0A88 7C 60 20 39 */ and. r0, r3, r4
+/* 802F4E2C 002F0A8C 41 82 00 08 */ beq lbl_802F4E34
+/* 802F4E30 002F0A90 48 00 00 14 */ b lbl_802F4E44
+lbl_802F4E34:
+/* 802F4E34 002F0A94 54 84 08 3C */ slwi r4, r4, 1
+/* 802F4E38 002F0A98 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4E3C 002F0A9C 42 00 FF 60 */ bdnz lbl_802F4D9C
+/* 802F4E40 002F0AA0 38 A0 FF FF */ li r5, -1
+lbl_802F4E44:
+/* 802F4E44 002F0AA4 38 05 00 14 */ addi r0, r5, 0x14
+/* 802F4E48 002F0AA8 48 00 01 98 */ b lbl_802F4FE0
+lbl_802F4E4C:
+/* 802F4E4C 002F0AAC 2C 04 00 00 */ cmpwi r4, 0
+/* 802F4E50 002F0AB0 41 82 00 CC */ beq lbl_802F4F1C
+/* 802F4E54 002F0AB4 2C 05 00 00 */ cmpwi r5, 0
+/* 802F4E58 002F0AB8 40 82 01 88 */ bne lbl_802F4FE0
+/* 802F4E5C 002F0ABC 38 00 00 04 */ li r0, 4
+/* 802F4E60 002F0AC0 38 A0 00 00 */ li r5, 0
+/* 802F4E64 002F0AC4 38 60 00 01 */ li r3, 1
+/* 802F4E68 002F0AC8 7C 09 03 A6 */ mtctr r0
+lbl_802F4E6C:
+/* 802F4E6C 002F0ACC 7C 80 18 39 */ and. r0, r4, r3
+/* 802F4E70 002F0AD0 41 82 00 08 */ beq lbl_802F4E78
+/* 802F4E74 002F0AD4 48 00 00 A0 */ b lbl_802F4F14
+lbl_802F4E78:
+/* 802F4E78 002F0AD8 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4E7C 002F0ADC 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4E80 002F0AE0 7C 80 18 39 */ and. r0, r4, r3
+/* 802F4E84 002F0AE4 41 82 00 08 */ beq lbl_802F4E8C
+/* 802F4E88 002F0AE8 48 00 00 8C */ b lbl_802F4F14
+lbl_802F4E8C:
+/* 802F4E8C 002F0AEC 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4E90 002F0AF0 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4E94 002F0AF4 7C 80 18 39 */ and. r0, r4, r3
+/* 802F4E98 002F0AF8 41 82 00 08 */ beq lbl_802F4EA0
+/* 802F4E9C 002F0AFC 48 00 00 78 */ b lbl_802F4F14
+lbl_802F4EA0:
+/* 802F4EA0 002F0B00 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4EA4 002F0B04 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4EA8 002F0B08 7C 80 18 39 */ and. r0, r4, r3
+/* 802F4EAC 002F0B0C 41 82 00 08 */ beq lbl_802F4EB4
+/* 802F4EB0 002F0B10 48 00 00 64 */ b lbl_802F4F14
+lbl_802F4EB4:
+/* 802F4EB4 002F0B14 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4EB8 002F0B18 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4EBC 002F0B1C 7C 80 18 39 */ and. r0, r4, r3
+/* 802F4EC0 002F0B20 41 82 00 08 */ beq lbl_802F4EC8
+/* 802F4EC4 002F0B24 48 00 00 50 */ b lbl_802F4F14
+lbl_802F4EC8:
+/* 802F4EC8 002F0B28 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4ECC 002F0B2C 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4ED0 002F0B30 7C 80 18 39 */ and. r0, r4, r3
+/* 802F4ED4 002F0B34 41 82 00 08 */ beq lbl_802F4EDC
+/* 802F4ED8 002F0B38 48 00 00 3C */ b lbl_802F4F14
+lbl_802F4EDC:
+/* 802F4EDC 002F0B3C 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4EE0 002F0B40 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4EE4 002F0B44 7C 80 18 39 */ and. r0, r4, r3
+/* 802F4EE8 002F0B48 41 82 00 08 */ beq lbl_802F4EF0
+/* 802F4EEC 002F0B4C 48 00 00 28 */ b lbl_802F4F14
+lbl_802F4EF0:
+/* 802F4EF0 002F0B50 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4EF4 002F0B54 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4EF8 002F0B58 7C 80 18 39 */ and. r0, r4, r3
+/* 802F4EFC 002F0B5C 41 82 00 08 */ beq lbl_802F4F04
+/* 802F4F00 002F0B60 48 00 00 14 */ b lbl_802F4F14
+lbl_802F4F04:
+/* 802F4F04 002F0B64 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4F08 002F0B68 38 A5 00 01 */ addi r5, r5, 1
+/* 802F4F0C 002F0B6C 42 00 FF 60 */ bdnz lbl_802F4E6C
+/* 802F4F10 002F0B70 38 A0 FF FF */ li r5, -1
+lbl_802F4F14:
+/* 802F4F14 002F0B74 38 05 00 1E */ addi r0, r5, 0x1e
+/* 802F4F18 002F0B78 48 00 00 C8 */ b lbl_802F4FE0
+lbl_802F4F1C:
+/* 802F4F1C 002F0B7C 2C 05 00 00 */ cmpwi r5, 0
+/* 802F4F20 002F0B80 41 82 00 C0 */ beq lbl_802F4FE0
+/* 802F4F24 002F0B84 38 00 00 04 */ li r0, 4
+/* 802F4F28 002F0B88 38 80 00 00 */ li r4, 0
+/* 802F4F2C 002F0B8C 38 60 00 01 */ li r3, 1
+/* 802F4F30 002F0B90 7C 09 03 A6 */ mtctr r0
+lbl_802F4F34:
+/* 802F4F34 002F0B94 7C A0 18 39 */ and. r0, r5, r3
+/* 802F4F38 002F0B98 41 82 00 08 */ beq lbl_802F4F40
+/* 802F4F3C 002F0B9C 48 00 00 A0 */ b lbl_802F4FDC
+lbl_802F4F40:
+/* 802F4F40 002F0BA0 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4F44 002F0BA4 38 84 00 01 */ addi r4, r4, 1
+/* 802F4F48 002F0BA8 7C A0 18 39 */ and. r0, r5, r3
+/* 802F4F4C 002F0BAC 41 82 00 08 */ beq lbl_802F4F54
+/* 802F4F50 002F0BB0 48 00 00 8C */ b lbl_802F4FDC
+lbl_802F4F54:
+/* 802F4F54 002F0BB4 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4F58 002F0BB8 38 84 00 01 */ addi r4, r4, 1
+/* 802F4F5C 002F0BBC 7C A0 18 39 */ and. r0, r5, r3
+/* 802F4F60 002F0BC0 41 82 00 08 */ beq lbl_802F4F68
+/* 802F4F64 002F0BC4 48 00 00 78 */ b lbl_802F4FDC
+lbl_802F4F68:
+/* 802F4F68 002F0BC8 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4F6C 002F0BCC 38 84 00 01 */ addi r4, r4, 1
+/* 802F4F70 002F0BD0 7C A0 18 39 */ and. r0, r5, r3
+/* 802F4F74 002F0BD4 41 82 00 08 */ beq lbl_802F4F7C
+/* 802F4F78 002F0BD8 48 00 00 64 */ b lbl_802F4FDC
+lbl_802F4F7C:
+/* 802F4F7C 002F0BDC 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4F80 002F0BE0 38 84 00 01 */ addi r4, r4, 1
+/* 802F4F84 002F0BE4 7C A0 18 39 */ and. r0, r5, r3
+/* 802F4F88 002F0BE8 41 82 00 08 */ beq lbl_802F4F90
+/* 802F4F8C 002F0BEC 48 00 00 50 */ b lbl_802F4FDC
+lbl_802F4F90:
+/* 802F4F90 002F0BF0 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4F94 002F0BF4 38 84 00 01 */ addi r4, r4, 1
+/* 802F4F98 002F0BF8 7C A0 18 39 */ and. r0, r5, r3
+/* 802F4F9C 002F0BFC 41 82 00 08 */ beq lbl_802F4FA4
+/* 802F4FA0 002F0C00 48 00 00 3C */ b lbl_802F4FDC
+lbl_802F4FA4:
+/* 802F4FA4 002F0C04 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4FA8 002F0C08 38 84 00 01 */ addi r4, r4, 1
+/* 802F4FAC 002F0C0C 7C A0 18 39 */ and. r0, r5, r3
+/* 802F4FB0 002F0C10 41 82 00 08 */ beq lbl_802F4FB8
+/* 802F4FB4 002F0C14 48 00 00 28 */ b lbl_802F4FDC
+lbl_802F4FB8:
+/* 802F4FB8 002F0C18 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4FBC 002F0C1C 38 84 00 01 */ addi r4, r4, 1
+/* 802F4FC0 002F0C20 7C A0 18 39 */ and. r0, r5, r3
+/* 802F4FC4 002F0C24 41 82 00 08 */ beq lbl_802F4FCC
+/* 802F4FC8 002F0C28 48 00 00 14 */ b lbl_802F4FDC
+lbl_802F4FCC:
+/* 802F4FCC 002F0C2C 54 63 08 3C */ slwi r3, r3, 1
+/* 802F4FD0 002F0C30 38 84 00 01 */ addi r4, r4, 1
+/* 802F4FD4 002F0C34 42 00 FF 60 */ bdnz lbl_802F4F34
+/* 802F4FD8 002F0C38 38 80 FF FF */ li r4, -1
+lbl_802F4FDC:
+/* 802F4FDC 002F0C3C 38 04 00 28 */ addi r0, r4, 0x28
+lbl_802F4FE0:
+/* 802F4FE0 002F0C40 7C 03 03 78 */ mr r3, r0
+/* 802F4FE4 002F0C44 4E 80 00 20 */ blr
+
+.global NETGetStartupErrorCodeEx
+NETGetStartupErrorCodeEx:
+/* 802F4FE8 002F0C48 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F4FEC 002F0C4C 7C 08 02 A6 */ mflr r0
+/* 802F4FF0 002F0C50 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F4FF4 002F0C54 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 802F4FF8 002F0C58 7C 9F 23 78 */ mr r31, r4
+/* 802F4FFC 002F0C5C 48 00 00 1D */ bl GetStartupErrorCode
+/* 802F5000 002F0C60 7C 7F 18 50 */ subf r3, r31, r3
+/* 802F5004 002F0C64 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 802F5008 002F0C68 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F500C 002F0C6C 7C 08 03 A6 */ mtlr r0
+/* 802F5010 002F0C70 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F5014 002F0C74 4E 80 00 20 */ blr
+
+.global GetStartupErrorCode
+GetStartupErrorCode:
+/* 802F5018 002F0C78 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 802F501C 002F0C7C 7C 08 02 A6 */ mflr r0
+/* 802F5020 002F0C80 2C 03 00 00 */ cmpwi r3, 0
+/* 802F5024 002F0C84 7C 65 1B 78 */ mr r5, r3
+/* 802F5028 002F0C88 90 01 00 14 */ stw r0, 0x14(r1)
+/* 802F502C 002F0C8C 41 80 00 0C */ blt lbl_802F5038
+/* 802F5030 002F0C90 38 60 00 00 */ li r3, 0
+/* 802F5034 002F0C94 48 00 01 4C */ b lbl_802F5180
+lbl_802F5038:
+/* 802F5038 002F0C98 2C 03 FF C2 */ cmpwi r3, -62
+/* 802F503C 002F0C9C 41 82 00 A8 */ beq lbl_802F50E4
+/* 802F5040 002F0CA0 40 80 00 5C */ bge lbl_802F509C
+/* 802F5044 002F0CA4 2C 03 FF 91 */ cmpwi r3, -111
+/* 802F5048 002F0CA8 41 82 00 A8 */ beq lbl_802F50F0
+/* 802F504C 002F0CAC 40 80 00 30 */ bge lbl_802F507C
+/* 802F5050 002F0CB0 2C 03 FF 87 */ cmpwi r3, -121
+/* 802F5054 002F0CB4 41 82 00 A8 */ beq lbl_802F50FC
+/* 802F5058 002F0CB8 40 80 00 18 */ bge lbl_802F5070
+/* 802F505C 002F0CBC 3C 80 80 00 */ lis r4, 0x80000001@ha
+/* 802F5060 002F0CC0 38 04 00 01 */ addi r0, r4, 0x80000001@l
+/* 802F5064 002F0CC4 7C 03 00 00 */ cmpw r3, r0
+/* 802F5068 002F0CC8 40 80 00 FC */ bge lbl_802F5164
+/* 802F506C 002F0CCC 48 00 00 EC */ b lbl_802F5158
+lbl_802F5070:
+/* 802F5070 002F0CD0 2C 03 FF 90 */ cmpwi r3, -112
+/* 802F5074 002F0CD4 40 80 00 B0 */ bge lbl_802F5124
+/* 802F5078 002F0CD8 48 00 00 EC */ b lbl_802F5164
+lbl_802F507C:
+/* 802F507C 002F0CDC 2C 03 FF B4 */ cmpwi r3, -76
+/* 802F5080 002F0CE0 41 82 00 A4 */ beq lbl_802F5124
+/* 802F5084 002F0CE4 40 80 00 E0 */ bge lbl_802F5164
+/* 802F5088 002F0CE8 2C 03 FF 9D */ cmpwi r3, -99
+/* 802F508C 002F0CEC 40 80 00 D8 */ bge lbl_802F5164
+/* 802F5090 002F0CF0 2C 03 FF 9A */ cmpwi r3, -102
+/* 802F5094 002F0CF4 40 80 00 B8 */ bge lbl_802F514C
+/* 802F5098 002F0CF8 48 00 00 CC */ b lbl_802F5164
+lbl_802F509C:
+/* 802F509C 002F0CFC 2C 03 FF D9 */ cmpwi r3, -39
+/* 802F50A0 002F0D00 41 82 00 84 */ beq lbl_802F5124
+/* 802F50A4 002F0D04 40 80 00 1C */ bge lbl_802F50C0
+/* 802F50A8 002F0D08 2C 03 FF D3 */ cmpwi r3, -45
+/* 802F50AC 002F0D0C 41 82 00 20 */ beq lbl_802F50CC
+/* 802F50B0 002F0D10 40 80 00 B4 */ bge lbl_802F5164
+/* 802F50B4 002F0D14 2C 03 FF D0 */ cmpwi r3, -48
+/* 802F50B8 002F0D18 41 82 00 6C */ beq lbl_802F5124
+/* 802F50BC 002F0D1C 48 00 00 A8 */ b lbl_802F5164
+lbl_802F50C0:
+/* 802F50C0 002F0D20 2C 03 FF E4 */ cmpwi r3, -28
+/* 802F50C4 002F0D24 41 82 00 14 */ beq lbl_802F50D8
+/* 802F50C8 002F0D28 48 00 00 9C */ b lbl_802F5164
+lbl_802F50CC:
+/* 802F50CC 002F0D2C 3C 60 FF FF */ lis r3, 0xFFFF3BE8@ha
+/* 802F50D0 002F0D30 38 63 3B E8 */ addi r3, r3, 0xFFFF3BE8@l
+/* 802F50D4 002F0D34 48 00 00 AC */ b lbl_802F5180
+lbl_802F50D8:
+/* 802F50D8 002F0D38 3C 60 FF FF */ lis r3, 0xFFFF3B84@ha
+/* 802F50DC 002F0D3C 38 63 3B 84 */ addi r3, r3, 0xFFFF3B84@l
+/* 802F50E0 002F0D40 48 00 00 A0 */ b lbl_802F5180
+lbl_802F50E4:
+/* 802F50E4 002F0D44 3C 60 FF FF */ lis r3, 0xFFFF3B20@ha
+/* 802F50E8 002F0D48 38 63 3B 20 */ addi r3, r3, 0xFFFF3B20@l
+/* 802F50EC 002F0D4C 48 00 00 94 */ b lbl_802F5180
+lbl_802F50F0:
+/* 802F50F0 002F0D50 3C 60 FF FF */ lis r3, 0xFFFF3224@ha
+/* 802F50F4 002F0D54 38 63 32 24 */ addi r3, r3, 0xFFFF3224@l
+/* 802F50F8 002F0D58 48 00 00 88 */ b lbl_802F5180
+lbl_802F50FC:
+/* 802F50FC 002F0D5C 2C 04 00 14 */ cmpwi r4, 0x14
+/* 802F5100 002F0D60 41 80 00 18 */ blt lbl_802F5118
+/* 802F5104 002F0D64 2C 04 00 1E */ cmpwi r4, 0x1e
+/* 802F5108 002F0D68 40 80 00 10 */ bge lbl_802F5118
+/* 802F510C 002F0D6C 3C 60 FF FF */ lis r3, 0xFFFF3738@ha
+/* 802F5110 002F0D70 38 63 37 38 */ addi r3, r3, 0xFFFF3738@l
+/* 802F5114 002F0D74 48 00 00 6C */ b lbl_802F5180
+lbl_802F5118:
+/* 802F5118 002F0D78 3C 60 FF FF */ lis r3, 0xFFFF38C8@ha
+/* 802F511C 002F0D7C 38 63 38 C8 */ addi r3, r3, 0xFFFF38C8@l
+/* 802F5120 002F0D80 48 00 00 60 */ b lbl_802F5180
+lbl_802F5124:
+/* 802F5124 002F0D84 2C 04 00 14 */ cmpwi r4, 0x14
+/* 802F5128 002F0D88 41 80 00 18 */ blt lbl_802F5140
+/* 802F512C 002F0D8C 2C 04 00 1E */ cmpwi r4, 0x1e
+/* 802F5130 002F0D90 40 80 00 10 */ bge lbl_802F5140
+/* 802F5134 002F0D94 3C 60 FF FF */ lis r3, 0xFFFF3738@ha
+/* 802F5138 002F0D98 38 63 37 38 */ addi r3, r3, 0xFFFF3738@l
+/* 802F513C 002F0D9C 48 00 00 44 */ b lbl_802F5180
+lbl_802F5140:
+/* 802F5140 002F0DA0 3C 60 FF FF */ lis r3, 0xFFFF379C@ha
+/* 802F5144 002F0DA4 38 63 37 9C */ addi r3, r3, 0xFFFF379C@l
+/* 802F5148 002F0DA8 48 00 00 38 */ b lbl_802F5180
+lbl_802F514C:
+/* 802F514C 002F0DAC 3C 60 FF FF */ lis r3, 0xFFFF34E0@ha
+/* 802F5150 002F0DB0 38 63 34 E0 */ addi r3, r3, 0xFFFF34E0@l
+/* 802F5154 002F0DB4 48 00 00 2C */ b lbl_802F5180
+lbl_802F5158:
+/* 802F5158 002F0DB8 3C 60 FF FF */ lis r3, 0xFFFF3C4C@ha
+/* 802F515C 002F0DBC 38 63 3C 4C */ addi r3, r3, 0xFFFF3C4C@l
+/* 802F5160 002F0DC0 48 00 00 20 */ b lbl_802F5180
+lbl_802F5164:
+/* 802F5164 002F0DC4 3C 60 80 44 */ lis r3, lbl_80445DA0@ha
+/* 802F5168 002F0DC8 7C A4 2B 78 */ mr r4, r5
+/* 802F516C 002F0DCC 38 63 5D A0 */ addi r3, r3, lbl_80445DA0@l
+/* 802F5170 002F0DD0 4C C6 31 82 */ crclr 6
+/* 802F5174 002F0DD4 4B D1 29 51 */ bl func_80007AC4
+/* 802F5178 002F0DD8 3C 60 FF FF */ lis r3, 0xFFFF3C4C@ha
+/* 802F517C 002F0DDC 38 63 3C 4C */ addi r3, r3, 0xFFFF3C4C@l
+lbl_802F5180:
+/* 802F5180 002F0DE0 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 802F5184 002F0DE4 7C 08 03 A6 */ mtlr r0
+/* 802F5188 002F0DE8 38 21 00 10 */ addi r1, r1, 0x10
+/* 802F518C 002F0DEC 4E 80 00 20 */ blr
diff --git a/asm/SDK/NET/wireless_macaddr.s b/asm/SDK/NET/wireless_macaddr.s
new file mode 100644
index 0000000..b4d563c
--- /dev/null
+++ b/asm/SDK/NET/wireless_macaddr.s
@@ -0,0 +1,7 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NETGetWirelessMacAddress
+NETGetWirelessMacAddress:
+/* 802F5198 002F0DF8 4B FF 84 90 */ b NCDiGetWirelessMacAddress
diff --git a/asm/SDK/NTR/wdp_common.s b/asm/SDK/NTR/wdp_common.s
index d780c6f..99c6316 100644
--- a/asm/SDK/NTR/wdp_common.s
+++ b/asm/SDK/NTR/wdp_common.s
@@ -346,7 +346,7 @@ lbl_802EEE90:
/* 802EEE9C 002EAAFC 38 9B 00 0C */ addi r4, r27, 0xc
/* 802EEEA0 002EAB00 90 1B 00 00 */ stw r0, 0(r27)
/* 802EEEA4 002EAB04 38 A0 00 E4 */ li r5, 0xe4
-/* 802EEEA8 002EAB08 48 00 51 65 */ bl func_802F400C
+/* 802EEEA8 002EAB08 48 00 51 65 */ bl MI_CpuCopy8
/* 802EEEAC 002EAB0C 39 61 00 30 */ addi r11, r1, 0x30
/* 802EEEB0 002EAB10 7F C3 F3 78 */ mr r3, r30
/* 802EEEB4 002EAB14 4B ED 82 B5 */ bl _restgpr_24
diff --git a/asm/SDK/NTR/wdp_parent.s b/asm/SDK/NTR/wdp_parent.s
index 5a93eb0..d6fb774 100644
--- a/asm/SDK/NTR/wdp_parent.s
+++ b/asm/SDK/NTR/wdp_parent.s
@@ -176,11 +176,11 @@ lbl_802EF1D8:
/* 802EF1EC 002EAE4C 38 7E 00 08 */ addi r3, r30, 8
/* 802EF1F0 002EAE50 38 80 00 00 */ li r4, 0
/* 802EF1F4 002EAE54 38 A0 00 20 */ li r5, 0x20
-/* 802EF1F8 002EAE58 48 00 4E 11 */ bl func_802F4008
+/* 802EF1F8 002EAE58 48 00 4E 11 */ bl MI_CpuFill8
/* 802EF1FC 002EAE5C 38 7E 00 28 */ addi r3, r30, 0x28
/* 802EF200 002EAE60 38 80 00 00 */ li r4, 0
/* 802EF204 002EAE64 38 A0 00 04 */ li r5, 4
-/* 802EF208 002EAE68 48 00 4E 01 */ bl func_802F4008
+/* 802EF208 002EAE68 48 00 4E 01 */ bl MI_CpuFill8
/* 802EF20C 002EAE6C 93 FE 00 2C */ stw r31, 0x2c(r30)
/* 802EF210 002EAE70 3B BD 00 01 */ addi r29, r29, 1
/* 802EF214 002EAE74 2C 1D 00 10 */ cmpwi r29, 0x10
@@ -395,12 +395,12 @@ lbl_802EF4B8:
lbl_802EF534:
/* 802EF534 002EB194 7F 25 CB 78 */ mr r5, r25
/* 802EF538 002EB198 7C 63 3A 14 */ add r3, r3, r7
-/* 802EF53C 002EB19C 48 00 4A D1 */ bl func_802F400C
+/* 802EF53C 002EB19C 48 00 4A D1 */ bl MI_CpuCopy8
/* 802EF540 002EB1A0 7C 7E CA 14 */ add r3, r30, r25
/* 802EF544 002EB1A4 20 B9 00 62 */ subfic r5, r25, 0x62
/* 802EF548 002EB1A8 38 63 00 0E */ addi r3, r3, 0xe
/* 802EF54C 002EB1AC 38 80 00 00 */ li r4, 0
-/* 802EF550 002EB1B0 48 00 4A B9 */ bl func_802F4008
+/* 802EF550 002EB1B0 48 00 4A B9 */ bl MI_CpuFill8
/* 802EF554 002EB1B4 9B 3E 00 0C */ stb r25, 0xc(r30)
/* 802EF558 002EB1B8 88 1A 00 16 */ lbz r0, 0x16(r26)
/* 802EF55C 002EB1BC 98 1E 00 0A */ stb r0, 0xa(r30)
@@ -441,7 +441,7 @@ lbl_802EF5DC:
/* 802EF5DC 002EB23C 38 7D 04 C4 */ addi r3, r29, 0x4c4
/* 802EF5E0 002EB240 38 9E 00 68 */ addi r4, r30, 0x68
/* 802EF5E4 002EB244 38 A0 00 08 */ li r5, 8
-/* 802EF5E8 002EB248 48 00 4A 25 */ bl func_802F400C
+/* 802EF5E8 002EB248 48 00 4A 25 */ bl MI_CpuCopy8
/* 802EF5EC 002EB24C 81 9A 00 00 */ lwz r12, 0(r26)
/* 802EF5F0 002EB250 2C 0C 00 00 */ cmpwi r12, 0
/* 802EF5F4 002EB254 41 82 00 18 */ beq lbl_802EF60C
@@ -469,7 +469,7 @@ lbl_802EF62C:
/* 802EF644 002EB2A4 1C 18 00 16 */ mulli r0, r24, 0x16
/* 802EF648 002EB2A8 7C 7D 02 14 */ add r3, r29, r0
/* 802EF64C 002EB2AC 38 63 03 64 */ addi r3, r3, 0x364
-/* 802EF650 002EB2B0 48 00 49 BD */ bl func_802F400C
+/* 802EF650 002EB2B0 48 00 49 BD */ bl MI_CpuCopy8
/* 802EF654 002EB2B4 A0 1A 00 14 */ lhz r0, 0x14(r26)
/* 802EF658 002EB2B8 7F 23 C0 30 */ slw r3, r25, r24
/* 802EF65C 002EB2BC 7E F7 18 78 */ andc r23, r23, r3
@@ -489,7 +489,7 @@ lbl_802EF680:
/* 802EF68C 002EB2EC 7C 7E 1A 14 */ add r3, r30, r3
/* 802EF690 002EB2F0 1C A0 00 16 */ mulli r5, r0, 0x16
/* 802EF694 002EB2F4 38 63 00 10 */ addi r3, r3, 0x10
-/* 802EF698 002EB2F8 48 00 49 71 */ bl func_802F4008
+/* 802EF698 002EB2F8 48 00 49 71 */ bl MI_CpuFill8
lbl_802EF69C:
/* 802EF69C 002EB2FC 88 7D 03 58 */ lbz r3, 0x358(r29)
/* 802EF6A0 002EB300 2C 1C 00 00 */ cmpwi r28, 0
@@ -578,11 +578,11 @@ lbl_802EF7AC:
/* 802EF7CC 002EB42C 93 FE 00 2C */ stw r31, 0x2c(r30)
/* 802EF7D0 002EB430 38 80 00 00 */ li r4, 0
/* 802EF7D4 002EB434 38 A0 00 20 */ li r5, 0x20
-/* 802EF7D8 002EB438 48 00 48 31 */ bl func_802F4008
+/* 802EF7D8 002EB438 48 00 48 31 */ bl MI_CpuFill8
/* 802EF7DC 002EB43C 38 7E 00 50 */ addi r3, r30, 0x50
/* 802EF7E0 002EB440 38 80 00 00 */ li r4, 0
/* 802EF7E4 002EB444 38 A0 00 04 */ li r5, 4
-/* 802EF7E8 002EB448 48 00 48 21 */ bl func_802F4008
+/* 802EF7E8 002EB448 48 00 48 21 */ bl MI_CpuFill8
/* 802EF7EC 002EB44C 93 FE 00 54 */ stw r31, 0x54(r30)
/* 802EF7F0 002EB450 38 00 00 01 */ li r0, 1
/* 802EF7F4 002EB454 7C 00 E8 30 */ slw r0, r0, r29
@@ -641,7 +641,7 @@ lbl_802EF898:
/* 802EF8B4 002EB514 B0 BB 03 6C */ sth r5, 0x36c(r27)
/* 802EF8B8 002EB518 38 A0 00 16 */ li r5, 0x16
/* 802EF8BC 002EB51C B0 1B 03 70 */ sth r0, 0x370(r27)
-/* 802EF8C0 002EB520 48 00 47 49 */ bl func_802F4008
+/* 802EF8C0 002EB520 48 00 47 49 */ bl MI_CpuFill8
/* 802EF8C4 002EB524 80 7F 00 2C */ lwz r3, 0x2c(r31)
/* 802EF8C8 002EB528 2C 03 00 00 */ cmpwi r3, 0
/* 802EF8CC 002EB52C 41 82 00 34 */ beq lbl_802EF900
@@ -680,11 +680,11 @@ lbl_802EF930:
/* 802EF948 002EB5A8 93 9F 00 2C */ stw r28, 0x2c(r31)
/* 802EF94C 002EB5AC 38 80 00 00 */ li r4, 0
/* 802EF950 002EB5B0 38 A0 00 20 */ li r5, 0x20
-/* 802EF954 002EB5B4 48 00 46 B5 */ bl func_802F4008
+/* 802EF954 002EB5B4 48 00 46 B5 */ bl MI_CpuFill8
/* 802EF958 002EB5B8 38 7F 00 50 */ addi r3, r31, 0x50
/* 802EF95C 002EB5BC 38 80 00 00 */ li r4, 0
/* 802EF960 002EB5C0 38 A0 00 04 */ li r5, 4
-/* 802EF964 002EB5C4 48 00 46 A5 */ bl func_802F4008
+/* 802EF964 002EB5C4 48 00 46 A5 */ bl MI_CpuFill8
/* 802EF968 002EB5C8 93 9F 00 54 */ stw r28, 0x54(r31)
/* 802EF96C 002EB5CC 93 9F 00 58 */ stw r28, 0x58(r31)
/* 802EF970 002EB5D0 80 1B 00 08 */ lwz r0, 8(r27)
@@ -812,7 +812,7 @@ lbl_802EFAF4:
/* 802EFB14 002EB774 38 9F 00 01 */ addi r4, r31, 1
/* 802EFB18 002EB778 98 1F 00 00 */ stb r0, 0(r31)
/* 802EFB1C 002EB77C 38 A0 00 E4 */ li r5, 0xe4
-/* 802EFB20 002EB780 48 00 44 ED */ bl func_802F400C
+/* 802EFB20 002EB780 48 00 44 ED */ bl MI_CpuCopy8
/* 802EFB24 002EB784 A0 7D 00 04 */ lhz r3, 4(r29)
/* 802EFB28 002EB788 38 03 00 E4 */ addi r0, r3, 0xe4
/* 802EFB2C 002EB78C B0 1D 00 04 */ sth r0, 4(r29)
@@ -987,7 +987,7 @@ lbl_802EFD44:
/* 802EFD84 002EB9E4 40 80 00 08 */ bge lbl_802EFD8C
/* 802EFD88 002EB9E8 7C 05 03 78 */ mr r5, r0
lbl_802EFD8C:
-/* 802EFD8C 002EB9EC 48 00 42 81 */ bl func_802F400C
+/* 802EFD8C 002EB9EC 48 00 42 81 */ bl MI_CpuCopy8
/* 802EFD90 002EB9F0 80 7F 00 54 */ lwz r3, 0x54(r31)
/* 802EFD94 002EB9F4 38 03 00 01 */ addi r0, r3, 1
/* 802EFD98 002EB9F8 28 00 00 05 */ cmplwi r0, 5
@@ -1201,15 +1201,15 @@ lbl_802F0034:
/* 802F009C 002EBCFC 98 F3 00 05 */ stb r7, 5(r19)
/* 802F00A0 002EBD00 98 D3 00 06 */ stb r6, 6(r19)
/* 802F00A4 002EBD04 98 13 00 07 */ stb r0, 7(r19)
-/* 802F00A8 002EBD08 48 00 3F 61 */ bl func_802F4008
+/* 802F00A8 002EBD08 48 00 3F 61 */ bl MI_CpuFill8
/* 802F00AC 002EBD0C 7E A3 AB 78 */ mr r3, r21
/* 802F00B0 002EBD10 38 93 00 3C */ addi r4, r19, 0x3c
/* 802F00B4 002EBD14 38 A0 00 88 */ li r5, 0x88
-/* 802F00B8 002EBD18 48 00 3F 55 */ bl func_802F400C
+/* 802F00B8 002EBD18 48 00 3F 55 */ bl MI_CpuCopy8
/* 802F00BC 002EBD1C 7E 83 A3 78 */ mr r3, r20
/* 802F00C0 002EBD20 38 93 00 C4 */ addi r4, r19, 0xc4
/* 802F00C4 002EBD24 38 A0 00 20 */ li r5, 0x20
-/* 802F00C8 002EBD28 48 00 3F 45 */ bl func_802F400C
+/* 802F00C8 002EBD28 48 00 3F 45 */ bl MI_CpuCopy8
/* 802F00CC 002EBD2C 38 72 00 28 */ addi r3, r18, 0x28
/* 802F00D0 002EBD30 38 12 00 38 */ addi r0, r18, 0x38
/* 802F00D4 002EBD34 3A 40 00 00 */ li r18, 0
@@ -1258,7 +1258,7 @@ lbl_802F010C:
/* 802F017C 002EBDDC 38 B6 00 10 */ addi r5, r22, 0x10
/* 802F0180 002EBDE0 38 80 03 9A */ li r4, 0x39a
/* 802F0184 002EBDE4 4C C6 31 82 */ crclr 6
-/* 802F0188 002EBDE8 48 00 3E 95 */ bl func_802F401C
+/* 802F0188 002EBDE8 48 00 3E 95 */ bl OSi_TPanic
lbl_802F018C:
/* 802F018C 002EBDEC 9A 98 00 14 */ stb r20, 0x14(r24)
/* 802F0190 002EBDF0 56 80 C6 3E */ rlwinm r0, r20, 0x18, 0x18, 0x1f
@@ -1281,7 +1281,7 @@ lbl_802F018C:
/* 802F01D4 002EBE34 98 D8 00 0D */ stb r6, 0xd(r24)
/* 802F01D8 002EBE38 98 18 00 0E */ stb r0, 0xe(r24)
/* 802F01DC 002EBE3C 99 18 00 0F */ stb r8, 0xf(r24)
-/* 802F01E0 002EBE40 48 00 3E 29 */ bl func_802F4008
+/* 802F01E0 002EBE40 48 00 3E 29 */ bl MI_CpuFill8
/* 802F01E4 002EBE44 7C 7A F0 2E */ lwzx r3, r26, r30
/* 802F01E8 002EBE48 88 18 00 18 */ lbz r0, 0x18(r24)
/* 802F01EC 002EBE4C 50 60 07 FE */ rlwimi r0, r3, 0, 0x1f, 0x1f
@@ -1310,7 +1310,7 @@ lbl_802F0214:
/* 802F0244 002EBEA4 38 B6 00 38 */ addi r5, r22, 0x38
/* 802F0248 002EBEA8 38 80 03 AD */ li r4, 0x3ad
/* 802F024C 002EBEAC 4C C6 31 82 */ crclr 6
-/* 802F0250 002EBEB0 48 00 3D CD */ bl func_802F401C
+/* 802F0250 002EBEB0 48 00 3D CD */ bl OSi_TPanic
/* 802F0254 002EBEB4 48 00 01 94 */ b lbl_802F03E8
lbl_802F0258:
/* 802F0258 002EBEB8 88 01 00 7B */ lbz r0, 0x7b(r1)
@@ -1345,17 +1345,17 @@ lbl_802F02AC:
/* 802F02C4 002EBF24 7E 43 93 78 */ mr r3, r18
/* 802F02C8 002EBF28 38 80 00 00 */ li r4, 0
/* 802F02CC 002EBF2C 38 A0 02 20 */ li r5, 0x220
-/* 802F02D0 002EBF30 48 00 3D 39 */ bl func_802F4008
+/* 802F02D0 002EBF30 48 00 3D 39 */ bl MI_CpuFill8
/* 802F02D4 002EBF34 48 00 00 24 */ b lbl_802F02F8
lbl_802F02D8:
/* 802F02D8 002EBF38 7D C3 73 78 */ mr r3, r14
/* 802F02DC 002EBF3C 38 92 00 20 */ addi r4, r18, 0x20
/* 802F02E0 002EBF40 38 A0 02 00 */ li r5, 0x200
-/* 802F02E4 002EBF44 48 00 3D 29 */ bl func_802F400C
+/* 802F02E4 002EBF44 48 00 3D 29 */ bl MI_CpuCopy8
/* 802F02E8 002EBF48 80 61 00 08 */ lwz r3, 8(r1)
/* 802F02EC 002EBF4C 7E 44 93 78 */ mr r4, r18
/* 802F02F0 002EBF50 38 A0 00 20 */ li r5, 0x20
-/* 802F02F4 002EBF54 48 00 3D 19 */ bl func_802F400C
+/* 802F02F4 002EBF54 48 00 3D 19 */ bl MI_CpuCopy8
lbl_802F02F8:
/* 802F02F8 002EBF58 A0 CF 00 34 */ lhz r6, 0x34(r15)
/* 802F02FC 002EBF5C 38 72 02 38 */ addi r3, r18, 0x238
@@ -1392,11 +1392,11 @@ lbl_802F02F8:
/* 802F0378 002EBFD8 38 72 03 64 */ addi r3, r18, 0x364
/* 802F037C 002EBFDC 38 80 00 00 */ li r4, 0
/* 802F0380 002EBFE0 38 A0 01 60 */ li r5, 0x160
-/* 802F0384 002EBFE4 48 00 3C 85 */ bl func_802F4008
+/* 802F0384 002EBFE4 48 00 3C 85 */ bl MI_CpuFill8
/* 802F0388 002EBFE8 38 72 04 C4 */ addi r3, r18, 0x4c4
/* 802F038C 002EBFEC 38 80 00 00 */ li r4, 0
/* 802F0390 002EBFF0 38 A0 00 08 */ li r5, 8
-/* 802F0394 002EBFF4 48 00 3C 75 */ bl func_802F4008
+/* 802F0394 002EBFF4 48 00 3C 75 */ bl MI_CpuFill8
/* 802F0398 002EBFF8 80 01 00 8C */ lwz r0, 0x8c(r1)
/* 802F039C 002EBFFC 38 60 00 00 */ li r3, 0
/* 802F03A0 002EC000 38 80 00 01 */ li r4, 1