.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global MPStartup MPStartup: /* 802F0588 002EC1E8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802F058C 002EC1EC 7C 08 02 A6 */ mflr r0 /* 802F0590 002EC1F0 90 01 00 14 */ stw r0, 0x14(r1) /* 802F0594 002EC1F4 93 E1 00 0C */ stw r31, 0xc(r1) /* 802F0598 002EC1F8 93 C1 00 08 */ stw r30, 8(r1) /* 802F059C 002EC1FC 7C 7E 1B 78 */ mr r30, r3 /* 802F05A0 002EC200 80 0D 8B F4 */ lwz r0, lbl_8063DEB4-_SDA_BASE_(r13) /* 802F05A4 002EC204 2C 00 00 00 */ cmpwi r0, 0 /* 802F05A8 002EC208 41 80 00 0C */ blt lbl_802F05B4 /* 802F05AC 002EC20C 38 60 FF 06 */ li r3, -250 /* 802F05B0 002EC210 48 00 00 28 */ b lbl_802F05D8 lbl_802F05B4: /* 802F05B4 002EC214 4B FF D1 9D */ bl NCDLockWirelessDriver /* 802F05B8 002EC218 2C 03 00 00 */ cmpwi r3, 0 /* 802F05BC 002EC21C 40 80 00 14 */ bge lbl_802F05D0 /* 802F05C0 002EC220 2C 03 FF FE */ cmpwi r3, -2 /* 802F05C4 002EC224 41 82 00 0C */ beq lbl_802F05D0 /* 802F05C8 002EC228 38 60 FF 06 */ li r3, -250 /* 802F05CC 002EC22C 48 00 00 0C */ b lbl_802F05D8 lbl_802F05D0: /* 802F05D0 002EC230 90 6D 8B F4 */ stw r3, lbl_8063DEB4-_SDA_BASE_(r13) /* 802F05D4 002EC234 38 60 00 00 */ li r3, 0 lbl_802F05D8: /* 802F05D8 002EC238 2C 03 00 00 */ cmpwi r3, 0 /* 802F05DC 002EC23C 40 80 00 08 */ bge lbl_802F05E4 /* 802F05E0 002EC240 48 00 01 68 */ b lbl_802F0748 lbl_802F05E4: /* 802F05E4 002EC244 4B F7 E1 79 */ bl OSDisableInterrupts /* 802F05E8 002EC248 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13) /* 802F05EC 002EC24C 7C 7F 1B 78 */ mr r31, r3 /* 802F05F0 002EC250 2C 00 00 01 */ cmpwi r0, 1 /* 802F05F4 002EC254 40 82 00 2C */ bne lbl_802F0620 /* 802F05F8 002EC258 4B F7 E1 8D */ bl OSRestoreInterrupts /* 802F05FC 002EC25C 80 6D 8B F4 */ lwz r3, lbl_8063DEB4-_SDA_BASE_(r13) /* 802F0600 002EC260 2C 03 00 00 */ cmpwi r3, 0 /* 802F0604 002EC264 41 80 00 14 */ blt lbl_802F0618 /* 802F0608 002EC268 38 00 FF FF */ li r0, -1 /* 802F060C 002EC26C 90 0D 8B F4 */ stw r0, lbl_8063DEB4-_SDA_BASE_(r13) /* 802F0610 002EC270 4B FF D2 45 */ bl NCDUnlockWirelessDriver /* 802F0614 002EC274 2C 03 00 00 */ cmpwi r3, 0 lbl_802F0618: /* 802F0618 002EC278 38 60 FF 14 */ li r3, -236 /* 802F061C 002EC27C 48 00 01 2C */ b lbl_802F0748 lbl_802F0620: /* 802F0620 002EC280 38 00 00 00 */ li r0, 0 /* 802F0624 002EC284 80 6D 8B F0 */ lwz r3, lbl_8063DEB0-_SDA_BASE_(r13) /* 802F0628 002EC288 90 0D AF 38 */ stw r0, lbl_806401F8-_SDA_BASE_(r13) /* 802F062C 002EC28C 4B F7 90 25 */ bl OSRegisterVersion /* 802F0630 002EC290 7F C3 F3 78 */ mr r3, r30 /* 802F0634 002EC294 48 00 02 25 */ bl MPiStartupSystem /* 802F0638 002EC298 2C 03 00 00 */ cmpwi r3, 0 /* 802F063C 002EC29C 7C 7E 1B 78 */ mr r30, r3 /* 802F0640 002EC2A0 41 80 00 7C */ blt lbl_802F06BC /* 802F0644 002EC2A4 48 00 17 75 */ bl MPiStartupConnection /* 802F0648 002EC2A8 2C 03 00 00 */ cmpwi r3, 0 /* 802F064C 002EC2AC 7C 7E 1B 78 */ mr r30, r3 /* 802F0650 002EC2B0 41 80 00 6C */ blt lbl_802F06BC /* 802F0654 002EC2B4 48 00 0E 35 */ bl MPiStartupTxRx /* 802F0658 002EC2B8 2C 03 00 00 */ cmpwi r3, 0 /* 802F065C 002EC2BC 7C 7E 1B 78 */ mr r30, r3 /* 802F0660 002EC2C0 41 80 00 5C */ blt lbl_802F06BC /* 802F0664 002EC2C4 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F0668 002EC2C8 80 03 00 0C */ lwz r0, 0xc(r3) /* 802F066C 002EC2CC 28 00 00 01 */ cmplwi r0, 1 /* 802F0670 002EC2D0 40 82 00 14 */ bne lbl_802F0684 /* 802F0674 002EC2D4 48 00 1D 91 */ bl MPiStartupParent /* 802F0678 002EC2D8 2C 03 00 00 */ cmpwi r3, 0 /* 802F067C 002EC2DC 7C 7E 1B 78 */ mr r30, r3 /* 802F0680 002EC2E0 41 80 00 3C */ blt lbl_802F06BC lbl_802F0684: /* 802F0684 002EC2E4 48 00 2A D5 */ bl MPiStartupNotification /* 802F0688 002EC2E8 2C 03 00 00 */ cmpwi r3, 0 /* 802F068C 002EC2EC 7C 7E 1B 78 */ mr r30, r3 /* 802F0690 002EC2F0 41 80 00 2C */ blt lbl_802F06BC /* 802F0694 002EC2F4 48 00 34 1D */ bl MPiStartupBeacon /* 802F0698 002EC2F8 2C 03 00 00 */ cmpwi r3, 0 /* 802F069C 002EC2FC 7C 7E 1B 78 */ mr r30, r3 /* 802F06A0 002EC300 41 80 00 1C */ blt lbl_802F06BC /* 802F06A4 002EC304 48 00 2C 7D */ bl MPiStartupPort /* 802F06A8 002EC308 2C 03 00 00 */ cmpwi r3, 0 /* 802F06AC 002EC30C 7C 7E 1B 78 */ mr r30, r3 /* 802F06B0 002EC310 41 80 00 0C */ blt lbl_802F06BC /* 802F06B4 002EC314 38 00 00 01 */ li r0, 1 /* 802F06B8 002EC318 90 0D AF 38 */ stw r0, lbl_806401F8-_SDA_BASE_(r13) lbl_802F06BC: /* 802F06BC 002EC31C 7F E3 FB 78 */ mr r3, r31 /* 802F06C0 002EC320 4B F7 E0 C5 */ bl OSRestoreInterrupts /* 802F06C4 002EC324 2C 1E 00 00 */ cmpwi r30, 0 /* 802F06C8 002EC328 40 80 00 10 */ bge lbl_802F06D8 /* 802F06CC 002EC32C 48 00 00 95 */ bl MPCleanup /* 802F06D0 002EC330 7F C3 F3 78 */ mr r3, r30 /* 802F06D4 002EC334 48 00 00 74 */ b lbl_802F0748 lbl_802F06D8: /* 802F06D8 002EC338 48 00 0E 0D */ bl MPiStartupTxRxLater /* 802F06DC 002EC33C 2C 03 00 00 */ cmpwi r3, 0 /* 802F06E0 002EC340 7C 7E 1B 78 */ mr r30, r3 /* 802F06E4 002EC344 41 80 00 4C */ blt lbl_802F0730 /* 802F06E8 002EC348 48 00 2D 41 */ bl MPiStartupPortLater /* 802F06EC 002EC34C 2C 03 00 00 */ cmpwi r3, 0 /* 802F06F0 002EC350 7C 7E 1B 78 */ mr r30, r3 /* 802F06F4 002EC354 41 80 00 3C */ blt lbl_802F0730 /* 802F06F8 002EC358 48 00 05 39 */ bl MPiStartupWD /* 802F06FC 002EC35C 2C 03 00 00 */ cmpwi r3, 0 /* 802F0700 002EC360 7C 7E 1B 78 */ mr r30, r3 /* 802F0704 002EC364 41 80 00 2C */ blt lbl_802F0730 /* 802F0708 002EC368 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F070C 002EC36C 80 03 00 0C */ lwz r0, 0xc(r3) /* 802F0710 002EC370 28 00 00 01 */ cmplwi r0, 1 /* 802F0714 002EC374 40 82 00 14 */ bne lbl_802F0728 /* 802F0718 002EC378 48 00 1E 35 */ bl MPiStartupParentLater /* 802F071C 002EC37C 2C 03 00 00 */ cmpwi r3, 0 /* 802F0720 002EC380 7C 7E 1B 78 */ mr r30, r3 /* 802F0724 002EC384 41 80 00 0C */ blt lbl_802F0730 lbl_802F0728: /* 802F0728 002EC388 48 00 2A 7D */ bl MPiStartupNotificationLater /* 802F072C 002EC38C 7C 7E 1B 78 */ mr r30, r3 lbl_802F0730: /* 802F0730 002EC390 2C 1E 00 00 */ cmpwi r30, 0 /* 802F0734 002EC394 40 80 00 10 */ bge lbl_802F0744 /* 802F0738 002EC398 48 00 00 29 */ bl MPCleanup /* 802F073C 002EC39C 7F C3 F3 78 */ mr r3, r30 /* 802F0740 002EC3A0 48 00 00 08 */ b lbl_802F0748 lbl_802F0744: /* 802F0744 002EC3A4 38 60 00 00 */ li r3, 0 lbl_802F0748: /* 802F0748 002EC3A8 80 01 00 14 */ lwz r0, 0x14(r1) /* 802F074C 002EC3AC 83 E1 00 0C */ lwz r31, 0xc(r1) /* 802F0750 002EC3B0 83 C1 00 08 */ lwz r30, 8(r1) /* 802F0754 002EC3B4 7C 08 03 A6 */ mtlr r0 /* 802F0758 002EC3B8 38 21 00 10 */ addi r1, r1, 0x10 /* 802F075C 002EC3BC 4E 80 00 20 */ blr .global MPCleanup MPCleanup: /* 802F0760 002EC3C0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802F0764 002EC3C4 7C 08 02 A6 */ mflr r0 /* 802F0768 002EC3C8 90 01 00 14 */ stw r0, 0x14(r1) /* 802F076C 002EC3CC 93 E1 00 0C */ stw r31, 0xc(r1) /* 802F0770 002EC3D0 93 C1 00 08 */ stw r30, 8(r1) /* 802F0774 002EC3D4 48 00 06 01 */ bl MPiCleanupWD /* 802F0778 002EC3D8 80 6D 8B F4 */ lwz r3, lbl_8063DEB4-_SDA_BASE_(r13) /* 802F077C 002EC3DC 2C 03 00 00 */ cmpwi r3, 0 /* 802F0780 002EC3E0 41 80 00 14 */ blt lbl_802F0794 /* 802F0784 002EC3E4 38 00 FF FF */ li r0, -1 /* 802F0788 002EC3E8 90 0D 8B F4 */ stw r0, lbl_8063DEB4-_SDA_BASE_(r13) /* 802F078C 002EC3EC 4B FF D0 C9 */ bl NCDUnlockWirelessDriver /* 802F0790 002EC3F0 2C 03 00 00 */ cmpwi r3, 0 lbl_802F0794: /* 802F0794 002EC3F4 48 00 2A 79 */ bl MPiCleanupNotificationEarlier /* 802F0798 002EC3F8 48 00 1F C9 */ bl MPiCleanupParentEarlier /* 802F079C 002EC3FC 48 00 0D D1 */ bl MPiCleanupTxRxEarlier /* 802F07A0 002EC400 4B F7 DF BD */ bl OSDisableInterrupts /* 802F07A4 002EC404 3B E0 00 00 */ li r31, 0 /* 802F07A8 002EC408 7C 7E 1B 78 */ mr r30, r3 /* 802F07AC 002EC40C 93 ED AF 38 */ stw r31, lbl_806401F8-_SDA_BASE_(r13) /* 802F07B0 002EC410 48 00 2D 3D */ bl MPiCleanupPort /* 802F07B4 002EC414 48 00 33 79 */ bl MPiCleanupBeacon /* 802F07B8 002EC418 48 00 2A AD */ bl MPiCleanupNotification /* 802F07BC 002EC41C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F07C0 002EC420 7C 03 F8 40 */ cmplw r3, r31 /* 802F07C4 002EC424 41 82 00 14 */ beq lbl_802F07D8 /* 802F07C8 002EC428 80 03 00 0C */ lwz r0, 0xc(r3) /* 802F07CC 002EC42C 28 00 00 01 */ cmplwi r0, 1 /* 802F07D0 002EC430 40 82 00 08 */ bne lbl_802F07D8 /* 802F07D4 002EC434 48 00 20 35 */ bl MPiCleanupParent lbl_802F07D8: /* 802F07D8 002EC438 48 00 0E 51 */ bl MPiCleanupTxRx /* 802F07DC 002EC43C 48 00 16 C9 */ bl MPiCleanupConnection /* 802F07E0 002EC440 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F07E4 002EC444 38 00 00 00 */ li r0, 0 /* 802F07E8 002EC448 7C 03 00 40 */ cmplw r3, r0 /* 802F07EC 002EC44C 41 82 00 40 */ beq lbl_802F082C /* 802F07F0 002EC450 83 E3 00 04 */ lwz r31, 4(r3) /* 802F07F4 002EC454 38 63 59 84 */ addi r3, r3, 0x5984 /* 802F07F8 002EC458 38 80 00 00 */ li r4, 0 /* 802F07FC 002EC45C 38 A0 07 00 */ li r5, 0x700 /* 802F0800 002EC460 4B D1 39 05 */ bl memset /* 802F0804 002EC464 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F0808 002EC468 38 80 00 00 */ li r4, 0 /* 802F080C 002EC46C 38 A0 74 E0 */ li r5, 0x74e0 /* 802F0810 002EC470 4B D1 38 F5 */ bl memset /* 802F0814 002EC474 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F0818 002EC478 7F EC FB 78 */ mr r12, r31 /* 802F081C 002EC47C 88 03 FF FF */ lbz r0, -1(r3) /* 802F0820 002EC480 7C 60 18 50 */ subf r3, r0, r3 /* 802F0824 002EC484 7D 89 03 A6 */ mtctr r12 /* 802F0828 002EC488 4E 80 04 21 */ bctrl lbl_802F082C: /* 802F082C 002EC48C 38 00 00 00 */ li r0, 0 /* 802F0830 002EC490 7F C3 F3 78 */ mr r3, r30 /* 802F0834 002EC494 90 02 AA 30 */ stw r0, lbl_80643030-_SDA2_BASE_(r2) /* 802F0838 002EC498 4B F7 DF 4D */ bl OSRestoreInterrupts /* 802F083C 002EC49C 83 E1 00 0C */ lwz r31, 0xc(r1) /* 802F0840 002EC4A0 38 60 00 00 */ li r3, 0 /* 802F0844 002EC4A4 83 C1 00 08 */ lwz r30, 8(r1) /* 802F0848 002EC4A8 80 01 00 14 */ lwz r0, 0x14(r1) /* 802F084C 002EC4AC 7C 08 03 A6 */ mtlr r0 /* 802F0850 002EC4B0 38 21 00 10 */ addi r1, r1, 0x10 /* 802F0854 002EC4B4 4E 80 00 20 */ blr .global MPiStartupSystem MPiStartupSystem: /* 802F0858 002EC4B8 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802F085C 002EC4BC 7C 08 02 A6 */ mflr r0 /* 802F0860 002EC4C0 81 83 00 00 */ lwz r12, 0(r3) /* 802F0864 002EC4C4 90 01 00 24 */ stw r0, 0x24(r1) /* 802F0868 002EC4C8 2C 0C 00 00 */ cmpwi r12, 0 /* 802F086C 002EC4CC 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802F0870 002EC4D0 93 C1 00 18 */ stw r30, 0x18(r1) /* 802F0874 002EC4D4 7C 7E 1B 78 */ mr r30, r3 /* 802F0878 002EC4D8 93 A1 00 14 */ stw r29, 0x14(r1) /* 802F087C 002EC4DC 41 82 00 10 */ beq lbl_802F088C /* 802F0880 002EC4E0 80 03 00 04 */ lwz r0, 4(r3) /* 802F0884 002EC4E4 2C 00 00 00 */ cmpwi r0, 0 /* 802F0888 002EC4E8 40 82 00 0C */ bne lbl_802F0894 lbl_802F088C: /* 802F088C 002EC4EC 38 60 FF 01 */ li r3, -255 /* 802F0890 002EC4F0 48 00 01 04 */ b lbl_802F0994 lbl_802F0894: /* 802F0894 002EC4F4 38 60 75 20 */ li r3, 0x7520 /* 802F0898 002EC4F8 7D 89 03 A6 */ mtctr r12 /* 802F089C 002EC4FC 4E 80 04 21 */ bctrl /* 802F08A0 002EC500 38 03 00 20 */ addi r0, r3, 0x20 /* 802F08A4 002EC504 54 1D 00 34 */ rlwinm r29, r0, 0, 0, 0x1a /* 802F08A8 002EC508 7C 03 E8 50 */ subf r0, r3, r29 /* 802F08AC 002EC50C 98 1D FF FF */ stb r0, -1(r29) /* 802F08B0 002EC510 80 0D 8B F8 */ lwz r0, lbl_8063DEB8-_SDA_BASE_(r13) /* 802F08B4 002EC514 2C 00 00 00 */ cmpwi r0, 0 /* 802F08B8 002EC518 41 82 00 50 */ beq lbl_802F0908 /* 802F08BC 002EC51C 2C 1D 00 00 */ cmpwi r29, 0 /* 802F08C0 002EC520 41 82 00 48 */ beq lbl_802F0908 /* 802F08C4 002EC524 57 A4 00 FE */ clrlwi r4, r29, 3 /* 802F08C8 002EC528 3C 00 10 00 */ lis r0, 0x1000 /* 802F08CC 002EC52C 7C 04 00 40 */ cmplw r4, r0 /* 802F08D0 002EC530 38 60 00 00 */ li r3, 0 /* 802F08D4 002EC534 41 80 00 14 */ blt lbl_802F08E8 /* 802F08D8 002EC538 3C 00 18 00 */ lis r0, 0x1800 /* 802F08DC 002EC53C 7C 04 00 40 */ cmplw r4, r0 /* 802F08E0 002EC540 40 80 00 08 */ bge lbl_802F08E8 /* 802F08E4 002EC544 38 60 00 01 */ li r3, 1 lbl_802F08E8: /* 802F08E8 002EC548 2C 03 00 00 */ cmpwi r3, 0 /* 802F08EC 002EC54C 40 82 00 1C */ bne lbl_802F0908 /* 802F08F0 002EC550 88 1D FF FF */ lbz r0, -1(r29) /* 802F08F4 002EC554 81 9E 00 04 */ lwz r12, 4(r30) /* 802F08F8 002EC558 7C 60 E8 50 */ subf r3, r0, r29 /* 802F08FC 002EC55C 7D 89 03 A6 */ mtctr r12 /* 802F0900 002EC560 4E 80 04 21 */ bctrl /* 802F0904 002EC564 3B A0 00 00 */ li r29, 0 lbl_802F0908: /* 802F0908 002EC568 2C 1D 00 00 */ cmpwi r29, 0 /* 802F090C 002EC56C 40 82 00 14 */ bne lbl_802F0920 /* 802F0910 002EC570 38 00 00 00 */ li r0, 0 /* 802F0914 002EC574 38 60 FF 10 */ li r3, -240 /* 802F0918 002EC578 90 02 AA 30 */ stw r0, lbl_80643030-_SDA2_BASE_(r2) /* 802F091C 002EC57C 48 00 00 78 */ b lbl_802F0994 lbl_802F0920: /* 802F0920 002EC580 93 A2 AA 30 */ stw r29, lbl_80643030-_SDA2_BASE_(r2) /* 802F0924 002EC584 7F A3 EB 78 */ mr r3, r29 /* 802F0928 002EC588 38 80 00 00 */ li r4, 0 /* 802F092C 002EC58C 38 A0 74 E0 */ li r5, 0x74e0 /* 802F0930 002EC590 4B D1 37 D5 */ bl memset /* 802F0934 002EC594 7F A3 EB 78 */ mr r3, r29 /* 802F0938 002EC598 7F C4 F3 78 */ mr r4, r30 /* 802F093C 002EC59C 38 A0 01 40 */ li r5, 0x140 /* 802F0940 002EC5A0 4B D1 36 C1 */ bl memcpy /* 802F0944 002EC5A4 3B FD 59 84 */ addi r31, r29, 0x5984 /* 802F0948 002EC5A8 38 80 00 00 */ li r4, 0 /* 802F094C 002EC5AC 7F E3 FB 78 */ mr r3, r31 /* 802F0950 002EC5B0 38 A0 07 00 */ li r5, 0x700 /* 802F0954 002EC5B4 4B D1 37 B1 */ bl memset /* 802F0958 002EC5B8 3B DD 58 E4 */ addi r30, r29, 0x58e4 /* 802F095C 002EC5BC 38 9D 59 04 */ addi r4, r29, 0x5904 /* 802F0960 002EC5C0 7F C3 F3 78 */ mr r3, r30 /* 802F0964 002EC5C4 38 A0 00 20 */ li r5, 0x20 /* 802F0968 002EC5C8 4B F7 E5 91 */ bl OSInitMessageQueue /* 802F096C 002EC5CC 3B A0 00 00 */ li r29, 0 lbl_802F0970: /* 802F0970 002EC5D0 7F C3 F3 78 */ mr r3, r30 /* 802F0974 002EC5D4 7F E4 FB 78 */ mr r4, r31 /* 802F0978 002EC5D8 38 A0 00 00 */ li r5, 0 /* 802F097C 002EC5DC 4B F7 E5 DD */ bl OSSendMessage /* 802F0980 002EC5E0 3B BD 00 01 */ addi r29, r29, 1 /* 802F0984 002EC5E4 3B FF 00 38 */ addi r31, r31, 0x38 /* 802F0988 002EC5E8 2C 1D 00 20 */ cmpwi r29, 0x20 /* 802F098C 002EC5EC 41 80 FF E4 */ blt lbl_802F0970 /* 802F0990 002EC5F0 38 60 00 00 */ li r3, 0 lbl_802F0994: /* 802F0994 002EC5F4 80 01 00 24 */ lwz r0, 0x24(r1) /* 802F0998 002EC5F8 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802F099C 002EC5FC 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802F09A0 002EC600 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802F09A4 002EC604 7C 08 03 A6 */ mtlr r0 /* 802F09A8 002EC608 38 21 00 20 */ addi r1, r1, 0x20 /* 802F09AC 002EC60C 4E 80 00 20 */ blr .global MPiAllocateCommandBlock MPiAllocateCommandBlock: /* 802F09B0 002EC610 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802F09B4 002EC614 7C 08 02 A6 */ mflr r0 /* 802F09B8 002EC618 2C 04 00 01 */ cmpwi r4, 1 /* 802F09BC 002EC61C 90 01 00 24 */ stw r0, 0x24(r1) /* 802F09C0 002EC620 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802F09C4 002EC624 7C 7F 1B 78 */ mr r31, r3 /* 802F09C8 002EC628 40 82 00 1C */ bne lbl_802F09E4 /* 802F09CC 002EC62C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F09D0 002EC630 38 81 00 08 */ addi r4, r1, 8 /* 802F09D4 002EC634 38 A0 00 01 */ li r5, 1 /* 802F09D8 002EC638 38 63 58 E4 */ addi r3, r3, 0x58e4 /* 802F09DC 002EC63C 4B F7 E6 45 */ bl OSReceiveMessage /* 802F09E0 002EC640 48 00 00 30 */ b lbl_802F0A10 lbl_802F09E4: /* 802F09E4 002EC644 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F09E8 002EC648 38 81 00 08 */ addi r4, r1, 8 /* 802F09EC 002EC64C 38 A0 00 00 */ li r5, 0 /* 802F09F0 002EC650 38 63 58 E4 */ addi r3, r3, 0x58e4 /* 802F09F4 002EC654 4B F7 E6 2D */ bl OSReceiveMessage /* 802F09F8 002EC658 2C 03 00 00 */ cmpwi r3, 0 /* 802F09FC 002EC65C 40 82 00 14 */ bne lbl_802F0A10 /* 802F0A00 002EC660 38 00 00 00 */ li r0, 0 /* 802F0A04 002EC664 38 60 FF 13 */ li r3, -237 /* 802F0A08 002EC668 90 1F 00 00 */ stw r0, 0(r31) /* 802F0A0C 002EC66C 48 00 00 24 */ b lbl_802F0A30 lbl_802F0A10: /* 802F0A10 002EC670 80 01 00 08 */ lwz r0, 8(r1) /* 802F0A14 002EC674 90 1F 00 00 */ stw r0, 0(r31) /* 802F0A18 002EC678 80 01 00 08 */ lwz r0, 8(r1) /* 802F0A1C 002EC67C 2C 00 00 00 */ cmpwi r0, 0 /* 802F0A20 002EC680 40 82 00 0C */ bne lbl_802F0A2C /* 802F0A24 002EC684 38 60 FF 00 */ li r3, -256 /* 802F0A28 002EC688 48 00 00 08 */ b lbl_802F0A30 lbl_802F0A2C: /* 802F0A2C 002EC68C 38 60 00 00 */ li r3, 0 lbl_802F0A30: /* 802F0A30 002EC690 80 01 00 24 */ lwz r0, 0x24(r1) /* 802F0A34 002EC694 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802F0A38 002EC698 7C 08 03 A6 */ mtlr r0 /* 802F0A3C 002EC69C 38 21 00 20 */ addi r1, r1, 0x20 /* 802F0A40 002EC6A0 4E 80 00 20 */ blr .global MPiFreeCommandBlock MPiFreeCommandBlock: /* 802F0A44 002EC6A4 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2) /* 802F0A48 002EC6A8 7C 64 1B 78 */ mr r4, r3 /* 802F0A4C 002EC6AC 38 A0 00 00 */ li r5, 0 /* 802F0A50 002EC6B0 38 66 58 E4 */ addi r3, r6, 0x58e4 /* 802F0A54 002EC6B4 4B F7 E5 04 */ b OSSendMessage .global MPiSendRequest MPiSendRequest: /* 802F0A58 002EC6B8 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802F0A5C 002EC6BC 7C 08 02 A6 */ mflr r0 /* 802F0A60 002EC6C0 2C 05 00 01 */ cmpwi r5, 1 /* 802F0A64 002EC6C4 90 01 00 24 */ stw r0, 0x24(r1) /* 802F0A68 002EC6C8 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802F0A6C 002EC6CC 93 C1 00 18 */ stw r30, 0x18(r1) /* 802F0A70 002EC6D0 7C 9E 23 78 */ mr r30, r4 /* 802F0A74 002EC6D4 93 A1 00 14 */ stw r29, 0x14(r1) /* 802F0A78 002EC6D8 7C 7D 1B 78 */ mr r29, r3 /* 802F0A7C 002EC6DC 40 82 00 3C */ bne lbl_802F0AB8 /* 802F0A80 002EC6E0 38 64 00 08 */ addi r3, r4, 8 /* 802F0A84 002EC6E4 38 80 00 00 */ li r4, 0 /* 802F0A88 002EC6E8 4B F8 03 E1 */ bl OSInitSemaphore /* 802F0A8C 002EC6EC 4B F7 DC D1 */ bl OSDisableInterrupts /* 802F0A90 002EC6F0 7C 7F 1B 78 */ mr r31, r3 /* 802F0A94 002EC6F4 7F A3 EB 78 */ mr r3, r29 /* 802F0A98 002EC6F8 7F C4 F3 78 */ mr r4, r30 /* 802F0A9C 002EC6FC 38 A0 00 01 */ li r5, 1 /* 802F0AA0 002EC700 4B F7 E4 B9 */ bl OSSendMessage /* 802F0AA4 002EC704 38 7E 00 08 */ addi r3, r30, 8 /* 802F0AA8 002EC708 4B F8 04 19 */ bl OSWaitSemaphore /* 802F0AAC 002EC70C 7F E3 FB 78 */ mr r3, r31 /* 802F0AB0 002EC710 4B F7 DC D5 */ bl OSRestoreInterrupts /* 802F0AB4 002EC714 48 00 00 1C */ b lbl_802F0AD0 lbl_802F0AB8: /* 802F0AB8 002EC718 38 A0 00 00 */ li r5, 0 /* 802F0ABC 002EC71C 4B F7 E4 9D */ bl OSSendMessage /* 802F0AC0 002EC720 2C 03 00 00 */ cmpwi r3, 0 /* 802F0AC4 002EC724 40 82 00 0C */ bne lbl_802F0AD0 /* 802F0AC8 002EC728 38 60 FF 13 */ li r3, -237 /* 802F0ACC 002EC72C 48 00 00 08 */ b lbl_802F0AD4 lbl_802F0AD0: /* 802F0AD0 002EC730 38 60 00 00 */ li r3, 0 lbl_802F0AD4: /* 802F0AD4 002EC734 80 01 00 24 */ lwz r0, 0x24(r1) /* 802F0AD8 002EC738 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802F0ADC 002EC73C 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802F0AE0 002EC740 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802F0AE4 002EC744 7C 08 03 A6 */ mtlr r0 /* 802F0AE8 002EC748 38 21 00 20 */ addi r1, r1, 0x20 /* 802F0AEC 002EC74C 4E 80 00 20 */ blr .global MPiRespondToWaitingRequest MPiRespondToWaitingRequest: /* 802F0AF0 002EC750 80 04 00 04 */ lwz r0, 4(r4) /* 802F0AF4 002EC754 90 64 00 14 */ stw r3, 0x14(r4) /* 802F0AF8 002EC758 2C 00 00 01 */ cmpwi r0, 1 /* 802F0AFC 002EC75C 40 82 00 0C */ bne lbl_802F0B08 /* 802F0B00 002EC760 38 64 00 08 */ addi r3, r4, 8 /* 802F0B04 002EC764 4B F8 04 7C */ b OSSignalSemaphore lbl_802F0B08: /* 802F0B08 002EC768 81 84 00 18 */ lwz r12, 0x18(r4) /* 802F0B0C 002EC76C 7D 89 03 A6 */ mtctr r12 /* 802F0B10 002EC770 4E 80 04 20 */ bctr .global MPiIsEqualMacAddress MPiIsEqualMacAddress: /* 802F0B14 002EC774 88 A3 00 00 */ lbz r5, 0(r3) /* 802F0B18 002EC778 88 04 00 00 */ lbz r0, 0(r4) /* 802F0B1C 002EC77C 7C 05 00 40 */ cmplw r5, r0 /* 802F0B20 002EC780 41 82 00 0C */ beq lbl_802F0B2C /* 802F0B24 002EC784 38 60 00 00 */ li r3, 0 /* 802F0B28 002EC788 4E 80 00 20 */ blr lbl_802F0B2C: /* 802F0B2C 002EC78C 88 A3 00 01 */ lbz r5, 1(r3) /* 802F0B30 002EC790 88 04 00 01 */ lbz r0, 1(r4) /* 802F0B34 002EC794 7C 05 00 40 */ cmplw r5, r0 /* 802F0B38 002EC798 41 82 00 0C */ beq lbl_802F0B44 /* 802F0B3C 002EC79C 38 60 00 00 */ li r3, 0 /* 802F0B40 002EC7A0 4E 80 00 20 */ blr lbl_802F0B44: /* 802F0B44 002EC7A4 88 A3 00 02 */ lbz r5, 2(r3) /* 802F0B48 002EC7A8 88 04 00 02 */ lbz r0, 2(r4) /* 802F0B4C 002EC7AC 7C 05 00 40 */ cmplw r5, r0 /* 802F0B50 002EC7B0 41 82 00 0C */ beq lbl_802F0B5C /* 802F0B54 002EC7B4 38 60 00 00 */ li r3, 0 /* 802F0B58 002EC7B8 4E 80 00 20 */ blr lbl_802F0B5C: /* 802F0B5C 002EC7BC 88 A3 00 03 */ lbz r5, 3(r3) /* 802F0B60 002EC7C0 88 04 00 03 */ lbz r0, 3(r4) /* 802F0B64 002EC7C4 7C 05 00 40 */ cmplw r5, r0 /* 802F0B68 002EC7C8 41 82 00 0C */ beq lbl_802F0B74 /* 802F0B6C 002EC7CC 38 60 00 00 */ li r3, 0 /* 802F0B70 002EC7D0 4E 80 00 20 */ blr lbl_802F0B74: /* 802F0B74 002EC7D4 88 A3 00 04 */ lbz r5, 4(r3) /* 802F0B78 002EC7D8 88 04 00 04 */ lbz r0, 4(r4) /* 802F0B7C 002EC7DC 7C 05 00 40 */ cmplw r5, r0 /* 802F0B80 002EC7E0 41 82 00 0C */ beq lbl_802F0B8C /* 802F0B84 002EC7E4 38 60 00 00 */ li r3, 0 /* 802F0B88 002EC7E8 4E 80 00 20 */ blr lbl_802F0B8C: /* 802F0B8C 002EC7EC 88 A3 00 05 */ lbz r5, 5(r3) /* 802F0B90 002EC7F0 88 04 00 05 */ lbz r0, 5(r4) /* 802F0B94 002EC7F4 7C 05 00 40 */ cmplw r5, r0 /* 802F0B98 002EC7F8 41 82 00 0C */ beq lbl_802F0BA4 /* 802F0B9C 002EC7FC 38 60 00 00 */ li r3, 0 /* 802F0BA0 002EC800 4E 80 00 20 */ blr lbl_802F0BA4: /* 802F0BA4 002EC804 38 60 00 01 */ li r3, 1 /* 802F0BA8 002EC808 4E 80 00 20 */ blr .global MPiGetNewTgid MPiGetNewTgid: /* 802F0BAC 002EC80C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802F0BB0 002EC810 7C 08 02 A6 */ mflr r0 /* 802F0BB4 002EC814 90 01 00 14 */ stw r0, 0x14(r1) /* 802F0BB8 002EC818 4B F8 1C 01 */ bl OSGetTime /* 802F0BBC 002EC81C 3C 60 00 01 */ lis r3, 0x0000FFFF@ha /* 802F0BC0 002EC820 38 03 FF FF */ addi r0, r3, 0x0000FFFF@l /* 802F0BC4 002EC824 7C 83 00 38 */ and r3, r4, r0 /* 802F0BC8 002EC828 80 01 00 14 */ lwz r0, 0x14(r1) /* 802F0BCC 002EC82C 7C 08 03 A6 */ mtlr r0 /* 802F0BD0 002EC830 38 21 00 10 */ addi r1, r1, 0x10 /* 802F0BD4 002EC834 4E 80 00 20 */ blr .global MPiCountPopulation MPiCountPopulation: /* 802F0BD8 002EC838 3C C0 55 55 */ lis r6, 0x55555555@ha /* 802F0BDC 002EC83C 3C A0 33 33 */ lis r5, 0x33333333@ha /* 802F0BE0 002EC840 54 67 F8 7E */ srwi r7, r3, 1 /* 802F0BE4 002EC844 3C 80 0F 0F */ lis r4, 0x0F0F0F0F@ha /* 802F0BE8 002EC848 38 06 55 55 */ addi r0, r6, 0x55555555@l /* 802F0BEC 002EC84C 38 A5 33 33 */ addi r5, r5, 0x33333333@l /* 802F0BF0 002EC850 7C E6 00 38 */ and r6, r7, r0 /* 802F0BF4 002EC854 38 04 0F 0F */ addi r0, r4, 0x0F0F0F0F@l /* 802F0BF8 002EC858 7C 86 18 50 */ subf r4, r6, r3 /* 802F0BFC 002EC85C 54 83 F0 BE */ srwi r3, r4, 2 /* 802F0C00 002EC860 7C 84 28 38 */ and r4, r4, r5 /* 802F0C04 002EC864 7C 63 28 38 */ and r3, r3, r5 /* 802F0C08 002EC868 7C 84 1A 14 */ add r4, r4, r3 /* 802F0C0C 002EC86C 54 83 E1 3E */ srwi r3, r4, 4 /* 802F0C10 002EC870 7C 84 1A 14 */ add r4, r4, r3 /* 802F0C14 002EC874 7C 84 00 38 */ and r4, r4, r0 /* 802F0C18 002EC878 54 80 C2 3E */ srwi r0, r4, 8 /* 802F0C1C 002EC87C 7C 84 02 14 */ add r4, r4, r0 /* 802F0C20 002EC880 54 80 84 3E */ srwi r0, r4, 0x10 /* 802F0C24 002EC884 7C 84 02 14 */ add r4, r4, r0 /* 802F0C28 002EC888 54 83 06 3E */ clrlwi r3, r4, 0x18 /* 802F0C2C 002EC88C 4E 80 00 20 */ blr