summaryrefslogtreecommitdiff
path: root/asm/SDK
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK')
-rw-r--r--asm/SDK/MP/mpmisc.s117
-rw-r--r--asm/SDK/MP/mpsystem.s496
-rw-r--r--asm/SDK/MP/mptxrx.s598
-rw-r--r--asm/SDK/MP/mpwd.s443
4 files changed, 1654 insertions, 0 deletions
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/mpsystem.s b/asm/SDK/MP/mpsystem.s
new file mode 100644
index 0000000..b8e03c8
--- /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 func_802F1DB8
+/* 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 func_802F2404
+/* 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 func_802F3158
+/* 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 func_802F3AB0
+/* 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 func_802F3320
+/* 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 func_802F3428
+/* 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 func_802F254C
+/* 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 func_802F31A4
+/* 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 func_802F320C
+/* 802F0798 002EC3F8 48 00 1F C9 */ bl func_802F2760
+/* 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 func_802F34EC
+/* 802F07B4 002EC414 48 00 33 79 */ bl func_802F3B2C
+/* 802F07B8 002EC418 48 00 2A AD */ bl func_802F3264
+/* 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 func_802F2808
+lbl_802F07D8:
+/* 802F07D8 002EC438 48 00 0E 51 */ bl MPiCleanupTxRx
+/* 802F07DC 002EC43C 48 00 16 C9 */ bl func_802F1EA4
+/* 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..0e8395e
--- /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 func_802F1D98
+/* 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 func_802F3604
+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 func_802F3604
+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 func_802F3604
+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 func_802F361C
+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 func_802F1D98
+/* 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 func_802F1D98
+/* 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 func_802F3604
+/* 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 func_802F3604
+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 func_802F3604
+/* 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 func_802F1D98
+/* 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 func_802F3604
+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 func_802F1D98
+/* 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 func_802F3604
+/* 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..77a4a9c
--- /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 func_802F3D40
+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 func_802F1C1C
+/* 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 func_802F3F18
+/* 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 func_802F3F18
+/* 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 func_802F3D40
+/* 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