summaryrefslogtreecommitdiff
path: root/asm/SDK/MP
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/MP
parent8e96dbb3fe6f6e60f75f7e3297238260ab9f787c (diff)
parentef8a8458864aef2e4b3d4f5ee0a0d3d03aa11ff3 (diff)
Merge pull request #134 from mparisi20/master
split MP, MPDL, and NET libraries
Diffstat (limited to 'asm/SDK/MP')
-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
9 files changed, 4294 insertions, 0 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