.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global MPUpdateBeacon MPUpdateBeacon: /* 802F38A8 002EF508 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802F38AC 002EF50C 7C 08 02 A6 */ mflr r0 /* 802F38B0 002EF510 90 01 00 24 */ stw r0, 0x24(r1) /* 802F38B4 002EF514 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802F38B8 002EF518 93 C1 00 18 */ stw r30, 0x18(r1) /* 802F38BC 002EF51C 93 A1 00 14 */ stw r29, 0x14(r1) /* 802F38C0 002EF520 93 81 00 10 */ stw r28, 0x10(r1) /* 802F38C4 002EF524 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13) /* 802F38C8 002EF528 2C 00 00 00 */ cmpwi r0, 0 /* 802F38CC 002EF52C 40 82 00 0C */ bne lbl_802F38D8 /* 802F38D0 002EF530 38 60 FF 14 */ li r3, -236 /* 802F38D4 002EF534 48 00 00 D4 */ b lbl_802F39A8 lbl_802F38D8: /* 802F38D8 002EF538 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13) /* 802F38DC 002EF53C 2C 00 00 00 */ cmpwi r0, 0 /* 802F38E0 002EF540 41 82 00 0C */ beq lbl_802F38EC /* 802F38E4 002EF544 38 60 FF FF */ li r3, -1 /* 802F38E8 002EF548 48 00 00 C0 */ b lbl_802F39A8 lbl_802F38EC: /* 802F38EC 002EF54C 38 61 00 08 */ addi r3, r1, 8 /* 802F38F0 002EF550 38 80 00 01 */ li r4, 1 /* 802F38F4 002EF554 4B FF D0 BD */ bl MPiAllocateCommandBlock /* 802F38F8 002EF558 2C 03 00 00 */ cmpwi r3, 0 /* 802F38FC 002EF55C 40 80 00 08 */ bge lbl_802F3904 /* 802F3900 002EF560 48 00 00 A8 */ b lbl_802F39A8 lbl_802F3904: /* 802F3904 002EF564 83 82 AA 30 */ lwz r28, lbl_80643030-_SDA2_BASE_(r2) /* 802F3908 002EF568 83 C1 00 08 */ lwz r30, 8(r1) /* 802F390C 002EF56C 3B BC 65 DC */ addi r29, r28, 0x65dc /* 802F3910 002EF570 7F A3 EB 78 */ mr r3, r29 /* 802F3914 002EF574 4B F7 C0 35 */ bl OSLockMutex /* 802F3918 002EF578 37 FC 55 60 */ addic. r31, r28, 0x5560 /* 802F391C 002EF57C 40 82 00 14 */ bne lbl_802F3930 /* 802F3920 002EF580 7F A3 EB 78 */ mr r3, r29 /* 802F3924 002EF584 4B F7 C1 01 */ bl OSUnlockMutex /* 802F3928 002EF588 3B E0 FF 10 */ li r31, -240 /* 802F392C 002EF58C 48 00 00 28 */ b lbl_802F3954 lbl_802F3930: /* 802F3930 002EF590 7F E3 FB 78 */ mr r3, r31 /* 802F3934 002EF594 48 00 02 E5 */ bl MPiMakeGameInfo /* 802F3938 002EF598 7F E3 FB 78 */ mr r3, r31 /* 802F393C 002EF59C 4B FF D6 99 */ bl MPiChangeBeacon /* 802F3940 002EF5A0 7C 7F 1B 78 */ mr r31, r3 /* 802F3944 002EF5A4 7F A3 EB 78 */ mr r3, r29 /* 802F3948 002EF5A8 4B F7 C0 DD */ bl OSUnlockMutex /* 802F394C 002EF5AC 7F E0 FE 70 */ srawi r0, r31, 0x1f /* 802F3950 002EF5B0 7F FF 00 38 */ and r31, r31, r0 lbl_802F3954: /* 802F3954 002EF5B4 2C 1F 00 00 */ cmpwi r31, 0 /* 802F3958 002EF5B8 40 80 00 08 */ bge lbl_802F3960 /* 802F395C 002EF5BC 48 00 00 30 */ b lbl_802F398C lbl_802F3960: /* 802F3960 002EF5C0 38 C0 00 00 */ li r6, 0 /* 802F3964 002EF5C4 38 00 00 01 */ li r0, 1 /* 802F3968 002EF5C8 90 DE 00 18 */ stw r6, 0x18(r30) /* 802F396C 002EF5CC 7F C4 F3 78 */ mr r4, r30 /* 802F3970 002EF5D0 38 7C 65 24 */ addi r3, r28, 0x6524 /* 802F3974 002EF5D4 38 A0 00 01 */ li r5, 1 /* 802F3978 002EF5D8 90 1E 00 04 */ stw r0, 4(r30) /* 802F397C 002EF5DC 90 DE 00 1C */ stw r6, 0x1c(r30) /* 802F3980 002EF5E0 90 DE 00 20 */ stw r6, 0x20(r30) /* 802F3984 002EF5E4 4B FF D0 D5 */ bl MPiSendRequest /* 802F3988 002EF5E8 7C 7F 1B 78 */ mr r31, r3 lbl_802F398C: /* 802F398C 002EF5EC 80 61 00 08 */ lwz r3, 8(r1) /* 802F3990 002EF5F0 4B FF D0 B5 */ bl MPiFreeCommandBlock /* 802F3994 002EF5F4 2C 1F 00 00 */ cmpwi r31, 0 /* 802F3998 002EF5F8 40 80 00 0C */ bge lbl_802F39A4 /* 802F399C 002EF5FC 7F E3 FB 78 */ mr r3, r31 /* 802F39A0 002EF600 48 00 00 08 */ b lbl_802F39A8 lbl_802F39A4: /* 802F39A4 002EF604 38 60 00 00 */ li r3, 0 lbl_802F39A8: /* 802F39A8 002EF608 80 01 00 24 */ lwz r0, 0x24(r1) /* 802F39AC 002EF60C 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802F39B0 002EF610 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802F39B4 002EF614 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802F39B8 002EF618 83 81 00 10 */ lwz r28, 0x10(r1) /* 802F39BC 002EF61C 7C 08 03 A6 */ mtlr r0 /* 802F39C0 002EF620 38 21 00 20 */ addi r1, r1, 0x20 /* 802F39C4 002EF624 4E 80 00 20 */ blr .global MPUpdateBeaconAsync MPUpdateBeaconAsync: /* 802F39C8 002EF628 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802F39CC 002EF62C 7C 08 02 A6 */ mflr r0 /* 802F39D0 002EF630 90 01 00 24 */ stw r0, 0x24(r1) /* 802F39D4 002EF634 39 61 00 20 */ addi r11, r1, 0x20 /* 802F39D8 002EF638 4B ED 37 51 */ bl _savegpr_27 /* 802F39DC 002EF63C 80 0D AF 38 */ lwz r0, lbl_806401F8-_SDA_BASE_(r13) /* 802F39E0 002EF640 7C 7B 1B 78 */ mr r27, r3 /* 802F39E4 002EF644 7C 9C 23 78 */ mr r28, r4 /* 802F39E8 002EF648 2C 00 00 00 */ cmpwi r0, 0 /* 802F39EC 002EF64C 40 82 00 0C */ bne lbl_802F39F8 /* 802F39F0 002EF650 38 60 FF 14 */ li r3, -236 /* 802F39F4 002EF654 48 00 00 A4 */ b lbl_802F3A98 lbl_802F39F8: /* 802F39F8 002EF658 80 0D AF 3C */ lwz r0, lbl_806401FC-_SDA_BASE_(r13) /* 802F39FC 002EF65C 2C 00 00 00 */ cmpwi r0, 0 /* 802F3A00 002EF660 41 82 00 0C */ beq lbl_802F3A0C /* 802F3A04 002EF664 38 60 FF FF */ li r3, -1 /* 802F3A08 002EF668 48 00 00 90 */ b lbl_802F3A98 lbl_802F3A0C: /* 802F3A0C 002EF66C 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2) /* 802F3A10 002EF670 3B DD 65 DC */ addi r30, r29, 0x65dc /* 802F3A14 002EF674 7F C3 F3 78 */ mr r3, r30 /* 802F3A18 002EF678 4B F7 BF 31 */ bl OSLockMutex /* 802F3A1C 002EF67C 37 FD 55 60 */ addic. r31, r29, 0x5560 /* 802F3A20 002EF680 40 82 00 14 */ bne lbl_802F3A34 /* 802F3A24 002EF684 7F C3 F3 78 */ mr r3, r30 /* 802F3A28 002EF688 4B F7 BF FD */ bl OSUnlockMutex /* 802F3A2C 002EF68C 38 60 FF 10 */ li r3, -240 /* 802F3A30 002EF690 48 00 00 28 */ b lbl_802F3A58 lbl_802F3A34: /* 802F3A34 002EF694 7F E3 FB 78 */ mr r3, r31 /* 802F3A38 002EF698 48 00 01 E1 */ bl MPiMakeGameInfo /* 802F3A3C 002EF69C 7F E3 FB 78 */ mr r3, r31 /* 802F3A40 002EF6A0 4B FF D5 95 */ bl MPiChangeBeacon /* 802F3A44 002EF6A4 7C 7F 1B 78 */ mr r31, r3 /* 802F3A48 002EF6A8 7F C3 F3 78 */ mr r3, r30 /* 802F3A4C 002EF6AC 4B F7 BF D9 */ bl OSUnlockMutex /* 802F3A50 002EF6B0 7F E0 FE 70 */ srawi r0, r31, 0x1f /* 802F3A54 002EF6B4 7F E3 00 38 */ and r3, r31, r0 lbl_802F3A58: /* 802F3A58 002EF6B8 2C 03 00 00 */ cmpwi r3, 0 /* 802F3A5C 002EF6BC 40 80 00 08 */ bge lbl_802F3A64 /* 802F3A60 002EF6C0 48 00 00 28 */ b lbl_802F3A88 lbl_802F3A64: /* 802F3A64 002EF6C4 38 00 00 00 */ li r0, 0 /* 802F3A68 002EF6C8 93 7C 00 18 */ stw r27, 0x18(r28) /* 802F3A6C 002EF6CC 7F 84 E3 78 */ mr r4, r28 /* 802F3A70 002EF6D0 38 7D 65 24 */ addi r3, r29, 0x6524 /* 802F3A74 002EF6D4 90 1C 00 04 */ stw r0, 4(r28) /* 802F3A78 002EF6D8 38 A0 00 00 */ li r5, 0 /* 802F3A7C 002EF6DC 90 1C 00 1C */ stw r0, 0x1c(r28) /* 802F3A80 002EF6E0 90 1C 00 20 */ stw r0, 0x20(r28) /* 802F3A84 002EF6E4 4B FF CF D5 */ bl MPiSendRequest lbl_802F3A88: /* 802F3A88 002EF6E8 2C 03 00 00 */ cmpwi r3, 0 /* 802F3A8C 002EF6EC 40 80 00 08 */ bge lbl_802F3A94 /* 802F3A90 002EF6F0 48 00 00 08 */ b lbl_802F3A98 lbl_802F3A94: /* 802F3A94 002EF6F4 38 60 00 00 */ li r3, 0 lbl_802F3A98: /* 802F3A98 002EF6F8 39 61 00 20 */ addi r11, r1, 0x20 /* 802F3A9C 002EF6FC 4B ED 36 D9 */ bl _restgpr_27 /* 802F3AA0 002EF700 80 01 00 24 */ lwz r0, 0x24(r1) /* 802F3AA4 002EF704 7C 08 03 A6 */ mtlr r0 /* 802F3AA8 002EF708 38 21 00 20 */ addi r1, r1, 0x20 /* 802F3AAC 002EF70C 4E 80 00 20 */ blr .global MPiStartupBeacon MPiStartupBeacon: /* 802F3AB0 002EF710 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802F3AB4 002EF714 7C 08 02 A6 */ mflr r0 /* 802F3AB8 002EF718 38 A0 00 20 */ li r5, 0x20 /* 802F3ABC 002EF71C 90 01 00 14 */ stw r0, 0x14(r1) /* 802F3AC0 002EF720 93 E1 00 0C */ stw r31, 0xc(r1) /* 802F3AC4 002EF724 93 C1 00 08 */ stw r30, 8(r1) /* 802F3AC8 002EF728 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2) /* 802F3ACC 002EF72C 38 7E 65 24 */ addi r3, r30, 0x6524 /* 802F3AD0 002EF730 38 9E 65 44 */ addi r4, r30, 0x6544 /* 802F3AD4 002EF734 4B F7 B4 25 */ bl OSInitMessageQueue /* 802F3AD8 002EF738 38 7E 65 DC */ addi r3, r30, 0x65dc /* 802F3ADC 002EF73C 4B F7 BE 35 */ bl OSInitMutex /* 802F3AE0 002EF740 38 7E 55 60 */ addi r3, r30, 0x5560 /* 802F3AE4 002EF744 38 80 00 00 */ li r4, 0 /* 802F3AE8 002EF748 38 A0 00 80 */ li r5, 0x80 /* 802F3AEC 002EF74C 4B D1 06 19 */ bl memset /* 802F3AF0 002EF750 3B E0 00 00 */ li r31, 0 /* 802F3AF4 002EF754 38 7E 65 F8 */ addi r3, r30, 0x65f8 /* 802F3AF8 002EF758 93 FE 65 F4 */ stw r31, 0x65f4(r30) /* 802F3AFC 002EF75C 38 80 00 00 */ li r4, 0 /* 802F3B00 002EF760 38 A0 00 14 */ li r5, 0x14 /* 802F3B04 002EF764 4B D1 06 01 */ bl memset /* 802F3B08 002EF768 93 FE 66 0C */ stw r31, 0x660c(r30) /* 802F3B0C 002EF76C 38 60 00 00 */ li r3, 0 /* 802F3B10 002EF770 93 FE 66 10 */ stw r31, 0x6610(r30) /* 802F3B14 002EF774 83 E1 00 0C */ lwz r31, 0xc(r1) /* 802F3B18 002EF778 83 C1 00 08 */ lwz r30, 8(r1) /* 802F3B1C 002EF77C 80 01 00 14 */ lwz r0, 0x14(r1) /* 802F3B20 002EF780 7C 08 03 A6 */ mtlr r0 /* 802F3B24 002EF784 38 21 00 10 */ addi r1, r1, 0x10 /* 802F3B28 002EF788 4E 80 00 20 */ blr .global MPiCleanupBeacon MPiCleanupBeacon: /* 802F3B2C 002EF78C 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802F3B30 002EF790 7C 08 02 A6 */ mflr r0 /* 802F3B34 002EF794 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F3B38 002EF798 90 01 00 24 */ stw r0, 0x24(r1) /* 802F3B3C 002EF79C 2C 03 00 00 */ cmpwi r3, 0 /* 802F3B40 002EF7A0 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802F3B44 002EF7A4 93 C1 00 18 */ stw r30, 0x18(r1) /* 802F3B48 002EF7A8 41 82 00 74 */ beq lbl_802F3BBC /* 802F3B4C 002EF7AC 3B E3 65 24 */ addi r31, r3, 0x6524 /* 802F3B50 002EF7B0 48 00 00 10 */ b lbl_802F3B60 lbl_802F3B54: /* 802F3B54 002EF7B4 80 81 00 08 */ lwz r4, 8(r1) /* 802F3B58 002EF7B8 38 60 FF 00 */ li r3, -256 /* 802F3B5C 002EF7BC 4B FF CF 95 */ bl MPiRespondToWaitingRequest lbl_802F3B60: /* 802F3B60 002EF7C0 7F E3 FB 78 */ mr r3, r31 /* 802F3B64 002EF7C4 38 81 00 08 */ addi r4, r1, 8 /* 802F3B68 002EF7C8 38 A0 00 00 */ li r5, 0 /* 802F3B6C 002EF7CC 4B F7 B4 B5 */ bl OSReceiveMessage /* 802F3B70 002EF7D0 2C 03 00 00 */ cmpwi r3, 0 /* 802F3B74 002EF7D4 40 82 FF E0 */ bne lbl_802F3B54 /* 802F3B78 002EF7D8 83 C2 AA 30 */ lwz r30, lbl_80643030-_SDA2_BASE_(r2) /* 802F3B7C 002EF7DC 38 80 00 00 */ li r4, 0 /* 802F3B80 002EF7E0 38 A0 00 80 */ li r5, 0x80 /* 802F3B84 002EF7E4 38 7E 65 44 */ addi r3, r30, 0x6544 /* 802F3B88 002EF7E8 4B D1 05 7D */ bl memset /* 802F3B8C 002EF7EC 38 7E 55 60 */ addi r3, r30, 0x5560 /* 802F3B90 002EF7F0 38 80 00 00 */ li r4, 0 /* 802F3B94 002EF7F4 38 A0 00 80 */ li r5, 0x80 /* 802F3B98 002EF7F8 4B D1 05 6D */ bl memset /* 802F3B9C 002EF7FC 3B E0 00 00 */ li r31, 0 /* 802F3BA0 002EF800 38 7E 65 F8 */ addi r3, r30, 0x65f8 /* 802F3BA4 002EF804 93 FE 65 F4 */ stw r31, 0x65f4(r30) /* 802F3BA8 002EF808 38 80 00 00 */ li r4, 0 /* 802F3BAC 002EF80C 38 A0 00 14 */ li r5, 0x14 /* 802F3BB0 002EF810 4B D1 05 55 */ bl memset /* 802F3BB4 002EF814 93 FE 66 0C */ stw r31, 0x660c(r30) /* 802F3BB8 002EF818 93 FE 66 10 */ stw r31, 0x6610(r30) lbl_802F3BBC: /* 802F3BBC 002EF81C 80 01 00 24 */ lwz r0, 0x24(r1) /* 802F3BC0 002EF820 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802F3BC4 002EF824 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802F3BC8 002EF828 7C 08 03 A6 */ mtlr r0 /* 802F3BCC 002EF82C 38 21 00 20 */ addi r1, r1, 0x20 /* 802F3BD0 002EF830 4E 80 00 20 */ blr .global MPiProcessBeaconSentNotification MPiProcessBeaconSentNotification: /* 802F3BD4 002EF834 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802F3BD8 002EF838 7C 08 02 A6 */ mflr r0 /* 802F3BDC 002EF83C 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F3BE0 002EF840 38 A0 00 00 */ li r5, 0 /* 802F3BE4 002EF844 90 01 00 14 */ stw r0, 0x14(r1) /* 802F3BE8 002EF848 38 81 00 08 */ addi r4, r1, 8 /* 802F3BEC 002EF84C 38 63 65 24 */ addi r3, r3, 0x6524 /* 802F3BF0 002EF850 4B F7 B4 31 */ bl OSReceiveMessage /* 802F3BF4 002EF854 2C 03 00 00 */ cmpwi r3, 0 /* 802F3BF8 002EF858 41 82 00 10 */ beq lbl_802F3C08 /* 802F3BFC 002EF85C 80 81 00 08 */ lwz r4, 8(r1) /* 802F3C00 002EF860 38 60 00 00 */ li r3, 0 /* 802F3C04 002EF864 4B FF CE ED */ bl MPiRespondToWaitingRequest lbl_802F3C08: /* 802F3C08 002EF868 80 01 00 14 */ lwz r0, 0x14(r1) /* 802F3C0C 002EF86C 7C 08 03 A6 */ mtlr r0 /* 802F3C10 002EF870 38 21 00 10 */ addi r1, r1, 0x10 /* 802F3C14 002EF874 4E 80 00 20 */ blr .global MPiMakeGameInfo MPiMakeGameInfo: /* 802F3C18 002EF878 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802F3C1C 002EF87C 7C 08 02 A6 */ mflr r0 /* 802F3C20 002EF880 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2) /* 802F3C24 002EF884 90 01 00 24 */ stw r0, 0x24(r1) /* 802F3C28 002EF888 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802F3C2C 002EF88C 93 C1 00 18 */ stw r30, 0x18(r1) /* 802F3C30 002EF890 7C 7E 1B 78 */ mr r30, r3 /* 802F3C34 002EF894 93 A1 00 14 */ stw r29, 0x14(r1) /* 802F3C38 002EF898 93 81 00 10 */ stw r28, 0x10(r1) /* 802F3C3C 002EF89C 83 E4 00 14 */ lwz r31, 0x14(r4) /* 802F3C40 002EF8A0 3C 1F 00 01 */ addis r0, r31, 1 /* 802F3C44 002EF8A4 28 00 FF FF */ cmplwi r0, 0xffff /* 802F3C48 002EF8A8 40 82 00 14 */ bne lbl_802F3C5C /* 802F3C4C 002EF8AC 4B FF CF 61 */ bl MPiGetNewTgid /* 802F3C50 002EF8B0 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2) /* 802F3C54 002EF8B4 7C 7F 1B 78 */ mr r31, r3 /* 802F3C58 002EF8B8 90 64 00 14 */ stw r3, 0x14(r4) lbl_802F3C5C: /* 802F3C5C 002EF8BC 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F3C60 002EF8C0 83 A3 00 3C */ lwz r29, 0x3c(r3) /* 802F3C64 002EF8C4 28 1D 00 70 */ cmplwi r29, 0x70 /* 802F3C68 002EF8C8 40 81 00 08 */ ble lbl_802F3C70 /* 802F3C6C 002EF8CC 3B A0 00 70 */ li r29, 0x70 lbl_802F3C70: /* 802F3C70 002EF8D0 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F3C74 002EF8D4 3B 80 00 00 */ li r28, 0 /* 802F3C78 002EF8D8 80 03 00 30 */ lwz r0, 0x30(r3) /* 802F3C7C 002EF8DC 2C 00 00 00 */ cmpwi r0, 0 /* 802F3C80 002EF8E0 41 82 00 08 */ beq lbl_802F3C88 /* 802F3C84 002EF8E4 63 9C 00 01 */ ori r28, r28, 1 lbl_802F3C88: /* 802F3C88 002EF8E8 80 62 AA 30 */ lwz r3, lbl_80643030-_SDA2_BASE_(r2) /* 802F3C8C 002EF8EC 80 03 00 34 */ lwz r0, 0x34(r3) /* 802F3C90 002EF8F0 2C 00 00 00 */ cmpwi r0, 0 /* 802F3C94 002EF8F4 41 82 00 08 */ beq lbl_802F3C9C /* 802F3C98 002EF8F8 63 9C 00 02 */ ori r28, r28, 2 lbl_802F3C9C: /* 802F3C9C 002EF8FC 7F C3 F3 78 */ mr r3, r30 /* 802F3CA0 002EF900 38 80 00 00 */ li r4, 0 /* 802F3CA4 002EF904 38 A0 00 80 */ li r5, 0x80 /* 802F3CA8 002EF908 4B D1 04 5D */ bl memset /* 802F3CAC 002EF90C 38 00 01 00 */ li r0, 0x100 /* 802F3CB0 002EF910 38 80 00 01 */ li r4, 1 /* 802F3CB4 002EF914 38 E0 00 08 */ li r7, 8 /* 802F3CB8 002EF918 B0 1E 00 00 */ sth r0, 0(r30) /* 802F3CBC 002EF91C 80 C2 AA 30 */ lwz r6, lbl_80643030-_SDA2_BASE_(r2) /* 802F3CC0 002EF920 38 1E 00 08 */ addi r0, r30, 8 /* 802F3CC4 002EF924 98 9E 00 02 */ stb r4, 2(r30) /* 802F3CC8 002EF928 7F A5 EB 78 */ mr r5, r29 /* 802F3CCC 002EF92C 38 86 00 40 */ addi r4, r6, 0x40 /* 802F3CD0 002EF930 38 7E 00 10 */ addi r3, r30, 0x10 /* 802F3CD4 002EF934 98 FE 00 03 */ stb r7, 3(r30) /* 802F3CD8 002EF938 81 06 00 10 */ lwz r8, 0x10(r6) /* 802F3CDC 002EF93C 55 07 42 1E */ rlwinm r7, r8, 8, 8, 0xf /* 802F3CE0 002EF940 55 06 C4 2E */ rlwinm r6, r8, 0x18, 0x10, 0x17 /* 802F3CE4 002EF944 51 07 C0 0E */ rlwimi r7, r8, 0x18, 0, 7 /* 802F3CE8 002EF948 51 06 46 3E */ rlwimi r6, r8, 8, 0x18, 0x1f /* 802F3CEC 002EF94C 7C E6 33 78 */ or r6, r7, r6 /* 802F3CF0 002EF950 90 DE 00 04 */ stw r6, 4(r30) /* 802F3CF4 002EF954 7F E0 07 2C */ sthbrx r31, 0, r0 /* 802F3CF8 002EF958 9B BE 00 0A */ stb r29, 0xa(r30) /* 802F3CFC 002EF95C 4B D1 03 05 */ bl memcpy /* 802F3D00 002EF960 9B 9E 00 0B */ stb r28, 0xb(r30) /* 802F3D04 002EF964 38 1E 00 0C */ addi r0, r30, 0xc /* 802F3D08 002EF968 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2) /* 802F3D0C 002EF96C 80 64 00 28 */ lwz r3, 0x28(r4) /* 802F3D10 002EF970 7C 60 07 2C */ sthbrx r3, 0, r0 /* 802F3D14 002EF974 38 1E 00 0E */ addi r0, r30, 0xe /* 802F3D18 002EF978 80 64 00 2C */ lwz r3, 0x2c(r4) /* 802F3D1C 002EF97C 7C 60 07 2C */ sthbrx r3, 0, r0 /* 802F3D20 002EF980 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802F3D24 002EF984 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802F3D28 002EF988 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802F3D2C 002EF98C 83 81 00 10 */ lwz r28, 0x10(r1) /* 802F3D30 002EF990 80 01 00 24 */ lwz r0, 0x24(r1) /* 802F3D34 002EF994 7C 08 03 A6 */ mtlr r0 /* 802F3D38 002EF998 38 21 00 20 */ addi r1, r1, 0x20 /* 802F3D3C 002EF99C 4E 80 00 20 */ blr .global MPiMakeAndChangeBeacon MPiMakeAndChangeBeacon: /* 802F3D40 002EF9A0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802F3D44 002EF9A4 7C 08 02 A6 */ mflr r0 /* 802F3D48 002EF9A8 90 01 00 14 */ stw r0, 0x14(r1) /* 802F3D4C 002EF9AC 93 E1 00 0C */ stw r31, 0xc(r1) /* 802F3D50 002EF9B0 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2) /* 802F3D54 002EF9B4 93 C1 00 08 */ stw r30, 8(r1) /* 802F3D58 002EF9B8 3B DF 65 DC */ addi r30, r31, 0x65dc /* 802F3D5C 002EF9BC 7F C3 F3 78 */ mr r3, r30 /* 802F3D60 002EF9C0 4B F7 BB E9 */ bl OSLockMutex /* 802F3D64 002EF9C4 37 FF 55 60 */ addic. r31, r31, 0x5560 /* 802F3D68 002EF9C8 40 82 00 14 */ bne lbl_802F3D7C /* 802F3D6C 002EF9CC 7F C3 F3 78 */ mr r3, r30 /* 802F3D70 002EF9D0 4B F7 BC B5 */ bl OSUnlockMutex /* 802F3D74 002EF9D4 38 60 FF 10 */ li r3, -240 /* 802F3D78 002EF9D8 48 00 00 28 */ b lbl_802F3DA0 lbl_802F3D7C: /* 802F3D7C 002EF9DC 7F E3 FB 78 */ mr r3, r31 /* 802F3D80 002EF9E0 4B FF FE 99 */ bl MPiMakeGameInfo /* 802F3D84 002EF9E4 7F E3 FB 78 */ mr r3, r31 /* 802F3D88 002EF9E8 4B FF D2 4D */ bl MPiChangeBeacon /* 802F3D8C 002EF9EC 7C 7F 1B 78 */ mr r31, r3 /* 802F3D90 002EF9F0 7F C3 F3 78 */ mr r3, r30 /* 802F3D94 002EF9F4 4B F7 BC 91 */ bl OSUnlockMutex /* 802F3D98 002EF9F8 7F E0 FE 70 */ srawi r0, r31, 0x1f /* 802F3D9C 002EF9FC 7F E3 00 38 */ and r3, r31, r0 lbl_802F3DA0: /* 802F3DA0 002EFA00 80 01 00 14 */ lwz r0, 0x14(r1) /* 802F3DA4 002EFA04 83 E1 00 0C */ lwz r31, 0xc(r1) /* 802F3DA8 002EFA08 83 C1 00 08 */ lwz r30, 8(r1) /* 802F3DAC 002EFA0C 7C 08 03 A6 */ mtlr r0 /* 802F3DB0 002EFA10 38 21 00 10 */ addi r1, r1, 0x10 /* 802F3DB4 002EFA14 4E 80 00 20 */ blr .global MPiSetCurrentTsf MPiSetCurrentTsf: /* 802F3DB8 002EFA18 94 21 FF D0 */ stwu r1, -0x30(r1) /* 802F3DBC 002EFA1C 7C 08 02 A6 */ mflr r0 /* 802F3DC0 002EFA20 90 01 00 34 */ stw r0, 0x34(r1) /* 802F3DC4 002EFA24 39 61 00 30 */ addi r11, r1, 0x30 /* 802F3DC8 002EFA28 4B ED 33 59 */ bl _savegpr_25 /* 802F3DCC 002EFA2C 7C 7E 1B 78 */ mr r30, r3 /* 802F3DD0 002EFA30 4B F7 E9 E9 */ bl OSGetTime /* 802F3DD4 002EFA34 7C 9C 23 78 */ mr r28, r4 /* 802F3DD8 002EFA38 7C 7D 1B 78 */ mr r29, r3 /* 802F3DDC 002EFA3C 4B F7 A9 81 */ bl OSDisableInterrupts /* 802F3DE0 002EFA40 3C 80 80 00 */ lis r4, 0x800000F8@ha /* 802F3DE4 002EFA44 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2) /* 802F3DE8 002EFA48 80 04 00 F8 */ lwz r0, 0x800000F8@l(r4) /* 802F3DEC 002EFA4C 57 A5 18 38 */ slwi r5, r29, 3 /* 802F3DF0 002EFA50 3C 80 43 1C */ lis r4, 0x431BDE83@ha /* 802F3DF4 002EFA54 83 BF 66 0C */ lwz r29, 0x660c(r31) /* 802F3DF8 002EFA58 54 00 F0 BE */ srwi r0, r0, 2 /* 802F3DFC 002EFA5C 53 85 1F 7E */ rlwimi r5, r28, 3, 0x1d, 0x1f /* 802F3E00 002EFA60 38 84 DE 83 */ addi r4, r4, 0x431BDE83@l /* 802F3E04 002EFA64 7C 79 1B 78 */ mr r25, r3 /* 802F3E08 002EFA68 7C 04 00 16 */ mulhwu r0, r4, r0 /* 802F3E0C 002EFA6C 7C A3 2B 78 */ mr r3, r5 /* 802F3E10 002EFA70 83 7F 66 10 */ lwz r27, 0x6610(r31) /* 802F3E14 002EFA74 3B 5F 65 F8 */ addi r26, r31, 0x65f8 /* 802F3E18 002EFA78 57 84 18 38 */ slwi r4, r28, 3 /* 802F3E1C 002EFA7C 38 A0 00 00 */ li r5, 0 /* 802F3E20 002EFA80 54 06 8B FE */ srwi r6, r0, 0xf /* 802F3E24 002EFA84 4B ED 34 55 */ bl __div2i /* 802F3E28 002EFA88 54 84 D0 3E */ rotlwi r4, r4, 0x1a /* 802F3E2C 002EFA8C 7C 60 36 70 */ srawi r0, r3, 6 /* 802F3E30 002EFA90 50 64 D0 0A */ rlwimi r4, r3, 0x1a, 0, 5 /* 802F3E34 002EFA94 3B 7B 00 01 */ addi r27, r27, 1 /* 802F3E38 002EFA98 28 1B 00 0A */ cmplwi r27, 0xa /* 802F3E3C 002EFA9C 57 A0 08 3C */ slwi r0, r29, 1 /* 802F3E40 002EFAA0 7C 64 F0 10 */ subfc r3, r4, r30 /* 802F3E44 002EFAA4 7F BC EB 78 */ mr r28, r29 /* 802F3E48 002EFAA8 7C 7A 03 2E */ sthx r3, r26, r0 /* 802F3E4C 002EFAAC 40 81 00 08 */ ble lbl_802F3E54 /* 802F3E50 002EFAB0 3B 60 00 0A */ li r27, 0xa lbl_802F3E54: /* 802F3E54 002EFAB4 3B BD 00 01 */ addi r29, r29, 1 /* 802F3E58 002EFAB8 93 7F 66 10 */ stw r27, 0x6610(r31) /* 802F3E5C 002EFABC 28 1D 00 0A */ cmplwi r29, 0xa /* 802F3E60 002EFAC0 41 80 00 08 */ blt lbl_802F3E68 /* 802F3E64 002EFAC4 3B A0 00 00 */ li r29, 0 lbl_802F3E68: /* 802F3E68 002EFAC8 93 BF 66 0C */ stw r29, 0x660c(r31) /* 802F3E6C 002EFACC 7F 23 CB 78 */ mr r3, r25 /* 802F3E70 002EFAD0 4B F7 A9 15 */ bl OSRestoreInterrupts /* 802F3E74 002EFAD4 3C 60 80 00 */ lis r3, 0x7FFFFFFF@ha /* 802F3E78 002EFAD8 38 C0 FF FF */ li r6, -1 /* 802F3E7C 002EFADC 38 83 FF FF */ addi r4, r3, 0x7FFFFFFF@l /* 802F3E80 002EFAE0 38 A0 FF FF */ li r5, -1 /* 802F3E84 002EFAE4 7F 69 03 A6 */ mtctr r27 /* 802F3E88 002EFAE8 28 1B 00 00 */ cmplwi r27, 0 /* 802F3E8C 002EFAEC 40 81 00 50 */ ble lbl_802F3EDC lbl_802F3E90: /* 802F3E90 002EFAF0 2C 1C 00 00 */ cmpwi r28, 0 /* 802F3E94 002EFAF4 40 80 00 08 */ bge lbl_802F3E9C /* 802F3E98 002EFAF8 3B 9C 00 0A */ addi r28, r28, 0xa lbl_802F3E9C: /* 802F3E9C 002EFAFC 57 80 08 3C */ slwi r0, r28, 1 /* 802F3EA0 002EFB00 7C 7A 02 2E */ lhzx r3, r26, r0 /* 802F3EA4 002EFB04 7C 03 20 00 */ cmpw r3, r4 /* 802F3EA8 002EFB08 40 80 00 08 */ bge lbl_802F3EB0 /* 802F3EAC 002EFB0C 7C 64 1B 78 */ mr r4, r3 lbl_802F3EB0: /* 802F3EB0 002EFB10 7C 03 28 00 */ cmpw r3, r5 /* 802F3EB4 002EFB14 40 81 00 08 */ ble lbl_802F3EBC /* 802F3EB8 002EFB18 7C 65 1B 78 */ mr r5, r3 lbl_802F3EBC: /* 802F3EBC 002EFB1C 3C 63 00 01 */ addis r3, r3, 1 /* 802F3EC0 002EFB20 38 63 80 00 */ addi r3, r3, -32768 /* 802F3EC4 002EFB24 54 60 04 3E */ clrlwi r0, r3, 0x10 /* 802F3EC8 002EFB28 7C 00 30 00 */ cmpw r0, r6 /* 802F3ECC 002EFB2C 40 81 00 08 */ ble lbl_802F3ED4 /* 802F3ED0 002EFB30 7C 06 03 78 */ mr r6, r0 lbl_802F3ED4: /* 802F3ED4 002EFB34 3B 9C FF FF */ addi r28, r28, -1 /* 802F3ED8 002EFB38 42 00 FF B8 */ bdnz lbl_802F3E90 lbl_802F3EDC: /* 802F3EDC 002EFB3C 3C 60 00 01 */ lis r3, 0x00008000@ha /* 802F3EE0 002EFB40 38 06 80 00 */ addi r0, r6, -32768 /* 802F3EE4 002EFB44 7C 84 28 50 */ subf r4, r4, r5 /* 802F3EE8 002EFB48 38 63 80 00 */ addi r3, r3, 0x00008000@l /* 802F3EEC 002EFB4C 54 00 04 3E */ clrlwi r0, r0, 0x10 /* 802F3EF0 002EFB50 7C 04 18 00 */ cmpw r4, r3 /* 802F3EF4 002EFB54 40 80 00 08 */ bge lbl_802F3EFC /* 802F3EF8 002EFB58 54 A0 04 3E */ clrlwi r0, r5, 0x10 lbl_802F3EFC: /* 802F3EFC 002EFB5C 90 1F 65 F4 */ stw r0, 0x65f4(r31) /* 802F3F00 002EFB60 39 61 00 30 */ addi r11, r1, 0x30 /* 802F3F04 002EFB64 4B ED 32 69 */ bl _restgpr_25 /* 802F3F08 002EFB68 80 01 00 34 */ lwz r0, 0x34(r1) /* 802F3F0C 002EFB6C 7C 08 03 A6 */ mtlr r0 /* 802F3F10 002EFB70 38 21 00 30 */ addi r1, r1, 0x30 /* 802F3F14 002EFB74 4E 80 00 20 */ blr .global MPiGetVTsf MPiGetVTsf: /* 802F3F18 002EFB78 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802F3F1C 002EFB7C 7C 08 02 A6 */ mflr r0 /* 802F3F20 002EFB80 90 01 00 24 */ stw r0, 0x24(r1) /* 802F3F24 002EFB84 39 61 00 20 */ addi r11, r1, 0x20 /* 802F3F28 002EFB88 4B ED 31 FD */ bl _savegpr_26 /* 802F3F2C 002EFB8C 3F 40 80 00 */ lis r26, 0x800000F8@ha /* 802F3F30 002EFB90 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2) /* 802F3F34 002EFB94 80 1A 00 F8 */ lwz r0, 0x800000F8@l(r26) /* 802F3F38 002EFB98 3F 60 43 1C */ lis r27, 0x431BDE83@ha /* 802F3F3C 002EFB9C 38 7B DE 83 */ addi r3, r27, 0x431BDE83@l /* 802F3F40 002EFBA0 80 BF 6D DC */ lwz r5, 0x6ddc(r31) /* 802F3F44 002EFBA4 54 00 F0 BE */ srwi r0, r0, 2 /* 802F3F48 002EFBA8 80 9F 6D D8 */ lwz r4, 0x6dd8(r31) /* 802F3F4C 002EFBAC 7C 03 00 16 */ mulhwu r0, r3, r0 /* 802F3F50 002EFBB0 3B 80 00 00 */ li r28, 0 /* 802F3F54 002EFBB4 54 00 8B FE */ srwi r0, r0, 0xf /* 802F3F58 002EFBB8 1C 00 19 64 */ mulli r0, r0, 0x1964 /* 802F3F5C 002EFBBC 54 00 E8 FE */ srwi r0, r0, 3 /* 802F3F60 002EFBC0 7F A0 28 10 */ subfc r29, r0, r5 /* 802F3F64 002EFBC4 7F DC 21 10 */ subfe r30, r28, r4 /* 802F3F68 002EFBC8 4B F7 E8 51 */ bl OSGetTime /* 802F3F6C 002EFBCC 6C 65 80 00 */ xoris r5, r3, 0x8000 /* 802F3F70 002EFBD0 6F C0 80 00 */ xoris r0, r30, 0x8000 /* 802F3F74 002EFBD4 7C 64 E8 10 */ subfc r3, r4, r29 /* 802F3F78 002EFBD8 7C A5 01 10 */ subfe r5, r5, r0 /* 802F3F7C 002EFBDC 7C A0 01 10 */ subfe r5, r0, r0 /* 802F3F80 002EFBE0 7C A5 00 D1 */ neg. r5, r5 /* 802F3F84 002EFBE4 41 82 00 28 */ beq lbl_802F3FAC /* 802F3F88 002EFBE8 80 1A 00 F8 */ lwz r0, 0xf8(r26) /* 802F3F8C 002EFBEC 38 7B DE 83 */ addi r3, r27, -8573 /* 802F3F90 002EFBF0 54 00 F0 BE */ srwi r0, r0, 2 /* 802F3F94 002EFBF4 7C 03 00 16 */ mulhwu r0, r3, r0 /* 802F3F98 002EFBF8 54 00 8B FE */ srwi r0, r0, 0xf /* 802F3F9C 002EFBFC 1C 00 41 50 */ mulli r0, r0, 0x4150 /* 802F3FA0 002EFC00 54 00 E8 FE */ srwi r0, r0, 3 /* 802F3FA4 002EFC04 7F BD 00 14 */ addc r29, r29, r0 /* 802F3FA8 002EFC08 7F DE E1 14 */ adde r30, r30, r28 lbl_802F3FAC: /* 802F3FAC 002EFC0C 3C 60 80 00 */ lis r3, 0x800000F8@ha /* 802F3FB0 002EFC10 3C 80 43 1C */ lis r4, 0x431BDE83@ha /* 802F3FB4 002EFC14 80 03 00 F8 */ lwz r0, 0x800000F8@l(r3) /* 802F3FB8 002EFC18 38 A4 DE 83 */ addi r5, r4, 0x431BDE83@l /* 802F3FBC 002EFC1C 57 C3 18 38 */ slwi r3, r30, 3 /* 802F3FC0 002EFC20 57 A4 18 38 */ slwi r4, r29, 3 /* 802F3FC4 002EFC24 54 00 F0 BE */ srwi r0, r0, 2 /* 802F3FC8 002EFC28 7C 05 00 16 */ mulhwu r0, r5, r0 /* 802F3FCC 002EFC2C 53 A3 1F 7E */ rlwimi r3, r29, 3, 0x1d, 0x1f /* 802F3FD0 002EFC30 38 A0 00 00 */ li r5, 0 /* 802F3FD4 002EFC34 54 06 8B FE */ srwi r6, r0, 0xf /* 802F3FD8 002EFC38 4B ED 32 A1 */ bl __div2i /* 802F3FDC 002EFC3C 80 1F 65 F4 */ lwz r0, 0x65f4(r31) /* 802F3FE0 002EFC40 54 84 D0 3E */ rotlwi r4, r4, 0x1a /* 802F3FE4 002EFC44 50 64 D0 0A */ rlwimi r4, r3, 0x1a, 0, 5 /* 802F3FE8 002EFC48 7C 63 36 70 */ srawi r3, r3, 6 /* 802F3FEC 002EFC4C 39 61 00 20 */ addi r11, r1, 0x20 /* 802F3FF0 002EFC50 7C 60 20 14 */ addc r3, r0, r4 /* 802F3FF4 002EFC54 4B ED 31 7D */ bl _restgpr_26 /* 802F3FF8 002EFC58 80 01 00 24 */ lwz r0, 0x24(r1) /* 802F3FFC 002EFC5C 7C 08 03 A6 */ mtlr r0 /* 802F4000 002EFC60 38 21 00 20 */ addi r1, r1, 0x20 /* 802F4004 002EFC64 4E 80 00 20 */ blr