.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