.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global MPiStartupPort MPiStartupPort: /* 802F3320 002EEF80 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802F3324 002EEF84 7C 08 02 A6 */ mflr r0 /* 802F3328 002EEF88 90 01 00 14 */ stw r0, 0x14(r1) /* 802F332C 002EEF8C 93 E1 00 0C */ stw r31, 0xc(r1) /* 802F3330 002EEF90 83 E2 AA 30 */ lwz r31, lbl_80643030-_SDA2_BASE_(r2) /* 802F3334 002EEF94 38 7F 72 E0 */ addi r3, r31, 0x72e0 /* 802F3338 002EEF98 4B F7 C5 D9 */ bl OSInitMutex /* 802F333C 002EEF9C 38 7F 58 D2 */ addi r3, r31, 0x58d2 /* 802F3340 002EEFA0 38 80 00 00 */ li r4, 0 /* 802F3344 002EEFA4 38 A0 00 10 */ li r5, 0x10 /* 802F3348 002EEFA8 4B D1 0D BD */ bl memset /* 802F334C 002EEFAC 38 7F 57 D2 */ addi r3, r31, 0x57d2 /* 802F3350 002EEFB0 38 80 00 00 */ li r4, 0 /* 802F3354 002EEFB4 38 A0 01 00 */ li r5, 0x100 /* 802F3358 002EEFB8 4B D1 0D AD */ bl memset /* 802F335C 002EEFBC 38 00 00 04 */ li r0, 4 /* 802F3360 002EEFC0 38 80 00 00 */ li r4, 0 /* 802F3364 002EEFC4 38 60 00 01 */ li r3, 1 /* 802F3368 002EEFC8 7C 09 03 A6 */ mtctr r0 lbl_802F336C: /* 802F336C 002EEFCC 7C BF 22 14 */ add r5, r31, r4 /* 802F3370 002EEFD0 38 84 00 02 */ addi r4, r4, 2 /* 802F3374 002EEFD4 B0 65 57 D2 */ sth r3, 0x57d2(r5) /* 802F3378 002EEFD8 B0 65 57 F2 */ sth r3, 0x57f2(r5) /* 802F337C 002EEFDC B0 65 58 12 */ sth r3, 0x5812(r5) /* 802F3380 002EEFE0 B0 65 58 32 */ sth r3, 0x5832(r5) /* 802F3384 002EEFE4 B0 65 58 52 */ sth r3, 0x5852(r5) /* 802F3388 002EEFE8 B0 65 58 72 */ sth r3, 0x5872(r5) /* 802F338C 002EEFEC B0 65 58 92 */ sth r3, 0x5892(r5) /* 802F3390 002EEFF0 B0 65 58 B2 */ sth r3, 0x58b2(r5) /* 802F3394 002EEFF4 7C BF 22 14 */ add r5, r31, r4 /* 802F3398 002EEFF8 38 84 00 02 */ addi r4, r4, 2 /* 802F339C 002EEFFC B0 65 57 D2 */ sth r3, 0x57d2(r5) /* 802F33A0 002EF000 B0 65 57 F2 */ sth r3, 0x57f2(r5) /* 802F33A4 002EF004 B0 65 58 12 */ sth r3, 0x5812(r5) /* 802F33A8 002EF008 B0 65 58 32 */ sth r3, 0x5832(r5) /* 802F33AC 002EF00C B0 65 58 52 */ sth r3, 0x5852(r5) /* 802F33B0 002EF010 B0 65 58 72 */ sth r3, 0x5872(r5) /* 802F33B4 002EF014 B0 65 58 92 */ sth r3, 0x5892(r5) /* 802F33B8 002EF018 B0 65 58 B2 */ sth r3, 0x58b2(r5) /* 802F33BC 002EF01C 7C BF 22 14 */ add r5, r31, r4 /* 802F33C0 002EF020 38 84 00 02 */ addi r4, r4, 2 /* 802F33C4 002EF024 B0 65 57 D2 */ sth r3, 0x57d2(r5) /* 802F33C8 002EF028 B0 65 57 F2 */ sth r3, 0x57f2(r5) /* 802F33CC 002EF02C B0 65 58 12 */ sth r3, 0x5812(r5) /* 802F33D0 002EF030 B0 65 58 32 */ sth r3, 0x5832(r5) /* 802F33D4 002EF034 B0 65 58 52 */ sth r3, 0x5852(r5) /* 802F33D8 002EF038 B0 65 58 72 */ sth r3, 0x5872(r5) /* 802F33DC 002EF03C B0 65 58 92 */ sth r3, 0x5892(r5) /* 802F33E0 002EF040 B0 65 58 B2 */ sth r3, 0x58b2(r5) /* 802F33E4 002EF044 7C BF 22 14 */ add r5, r31, r4 /* 802F33E8 002EF048 38 84 00 02 */ addi r4, r4, 2 /* 802F33EC 002EF04C B0 65 57 D2 */ sth r3, 0x57d2(r5) /* 802F33F0 002EF050 B0 65 57 F2 */ sth r3, 0x57f2(r5) /* 802F33F4 002EF054 B0 65 58 12 */ sth r3, 0x5812(r5) /* 802F33F8 002EF058 B0 65 58 32 */ sth r3, 0x5832(r5) /* 802F33FC 002EF05C B0 65 58 52 */ sth r3, 0x5852(r5) /* 802F3400 002EF060 B0 65 58 72 */ sth r3, 0x5872(r5) /* 802F3404 002EF064 B0 65 58 92 */ sth r3, 0x5892(r5) /* 802F3408 002EF068 B0 65 58 B2 */ sth r3, 0x58b2(r5) /* 802F340C 002EF06C 42 00 FF 60 */ bdnz lbl_802F336C /* 802F3410 002EF070 83 E1 00 0C */ lwz r31, 0xc(r1) /* 802F3414 002EF074 38 60 00 00 */ li r3, 0 /* 802F3418 002EF078 80 01 00 14 */ lwz r0, 0x14(r1) /* 802F341C 002EF07C 7C 08 03 A6 */ mtlr r0 /* 802F3420 002EF080 38 21 00 10 */ addi r1, r1, 0x10 /* 802F3424 002EF084 4E 80 00 20 */ blr .global MPiStartupPortLater MPiStartupPortLater: /* 802F3428 002EF088 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802F342C 002EF08C 7C 08 02 A6 */ mflr r0 /* 802F3430 002EF090 90 01 00 24 */ stw r0, 0x24(r1) /* 802F3434 002EF094 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802F3438 002EF098 93 C1 00 18 */ stw r30, 0x18(r1) /* 802F343C 002EF09C 93 A1 00 14 */ stw r29, 0x14(r1) /* 802F3440 002EF0A0 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2) /* 802F3444 002EF0A4 93 81 00 10 */ stw r28, 0x10(r1) /* 802F3448 002EF0A8 3B DD 72 E0 */ addi r30, r29, 0x72e0 /* 802F344C 002EF0AC 7F C3 F3 78 */ mr r3, r30 /* 802F3450 002EF0B0 4B F7 C4 F9 */ bl OSLockMutex /* 802F3454 002EF0B4 3B 9D 72 F8 */ addi r28, r29, 0x72f8 /* 802F3458 002EF0B8 38 80 00 00 */ li r4, 0 /* 802F345C 002EF0BC 7F 83 E3 78 */ mr r3, r28 /* 802F3460 002EF0C0 38 A0 00 40 */ li r5, 0x40 /* 802F3464 002EF0C4 4B D1 0C A1 */ bl memset /* 802F3468 002EF0C8 2C 1C 00 00 */ cmpwi r28, 0 /* 802F346C 002EF0CC 41 82 00 58 */ beq lbl_802F34C4 /* 802F3470 002EF0D0 38 60 00 00 */ li r3, 0 /* 802F3474 002EF0D4 38 00 00 01 */ li r0, 1 /* 802F3478 002EF0D8 90 7C 00 00 */ stw r3, 0(r28) /* 802F347C 002EF0DC 3B E0 00 00 */ li r31, 0 /* 802F3480 002EF0E0 90 1C 00 04 */ stw r0, 4(r28) lbl_802F3484: /* 802F3484 002EF0E4 93 FC 00 08 */ stw r31, 8(r28) /* 802F3488 002EF0E8 81 9D 00 B4 */ lwz r12, 0xb4(r29) /* 802F348C 002EF0EC 2C 0C 00 00 */ cmpwi r12, 0 /* 802F3490 002EF0F0 41 82 00 14 */ beq lbl_802F34A4 /* 802F3494 002EF0F4 7F 84 E3 78 */ mr r4, r28 /* 802F3498 002EF0F8 38 60 00 01 */ li r3, 1 /* 802F349C 002EF0FC 7D 89 03 A6 */ mtctr r12 /* 802F34A0 002EF100 4E 80 04 21 */ bctrl lbl_802F34A4: /* 802F34A4 002EF104 3B FF 00 01 */ addi r31, r31, 1 /* 802F34A8 002EF108 3B BD 00 08 */ addi r29, r29, 8 /* 802F34AC 002EF10C 28 1F 00 10 */ cmplwi r31, 0x10 /* 802F34B0 002EF110 41 80 FF D4 */ blt lbl_802F3484 /* 802F34B4 002EF114 7F C3 F3 78 */ mr r3, r30 /* 802F34B8 002EF118 3B A0 00 00 */ li r29, 0 /* 802F34BC 002EF11C 4B F7 C5 69 */ bl OSUnlockMutex /* 802F34C0 002EF120 48 00 00 08 */ b lbl_802F34C8 lbl_802F34C4: /* 802F34C4 002EF124 3B A0 FF FF */ li r29, -1 lbl_802F34C8: /* 802F34C8 002EF128 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802F34CC 002EF12C 7F A3 EB 78 */ mr r3, r29 /* 802F34D0 002EF130 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802F34D4 002EF134 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802F34D8 002EF138 83 81 00 10 */ lwz r28, 0x10(r1) /* 802F34DC 002EF13C 80 01 00 24 */ lwz r0, 0x24(r1) /* 802F34E0 002EF140 7C 08 03 A6 */ mtlr r0 /* 802F34E4 002EF144 38 21 00 20 */ addi r1, r1, 0x20 /* 802F34E8 002EF148 4E 80 00 20 */ blr .global MPiCleanupPort MPiCleanupPort: /* 802F34EC 002EF14C 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802F34F0 002EF150 7C 08 02 A6 */ mflr r0 /* 802F34F4 002EF154 90 01 00 24 */ stw r0, 0x24(r1) /* 802F34F8 002EF158 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802F34FC 002EF15C 93 C1 00 18 */ stw r30, 0x18(r1) /* 802F3500 002EF160 93 A1 00 14 */ stw r29, 0x14(r1) /* 802F3504 002EF164 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2) /* 802F3508 002EF168 93 81 00 10 */ stw r28, 0x10(r1) /* 802F350C 002EF16C 2C 1D 00 00 */ cmpwi r29, 0 /* 802F3510 002EF170 41 82 00 9C */ beq lbl_802F35AC /* 802F3514 002EF174 3B DD 72 E0 */ addi r30, r29, 0x72e0 /* 802F3518 002EF178 7F C3 F3 78 */ mr r3, r30 /* 802F351C 002EF17C 4B F7 C4 2D */ bl OSLockMutex /* 802F3520 002EF180 3B 9D 72 F8 */ addi r28, r29, 0x72f8 /* 802F3524 002EF184 38 80 00 00 */ li r4, 0 /* 802F3528 002EF188 7F 83 E3 78 */ mr r3, r28 /* 802F352C 002EF18C 38 A0 00 40 */ li r5, 0x40 /* 802F3530 002EF190 4B D1 0B D5 */ bl memset /* 802F3534 002EF194 2C 1C 00 00 */ cmpwi r28, 0 /* 802F3538 002EF198 41 82 00 50 */ beq lbl_802F3588 /* 802F353C 002EF19C 38 60 00 00 */ li r3, 0 /* 802F3540 002EF1A0 38 00 00 02 */ li r0, 2 /* 802F3544 002EF1A4 90 7C 00 00 */ stw r3, 0(r28) /* 802F3548 002EF1A8 3B E0 00 00 */ li r31, 0 /* 802F354C 002EF1AC 90 1C 00 04 */ stw r0, 4(r28) lbl_802F3550: /* 802F3550 002EF1B0 93 FC 00 08 */ stw r31, 8(r28) /* 802F3554 002EF1B4 81 9D 00 B4 */ lwz r12, 0xb4(r29) /* 802F3558 002EF1B8 2C 0C 00 00 */ cmpwi r12, 0 /* 802F355C 002EF1BC 41 82 00 14 */ beq lbl_802F3570 /* 802F3560 002EF1C0 7F 84 E3 78 */ mr r4, r28 /* 802F3564 002EF1C4 38 60 00 02 */ li r3, 2 /* 802F3568 002EF1C8 7D 89 03 A6 */ mtctr r12 /* 802F356C 002EF1CC 4E 80 04 21 */ bctrl lbl_802F3570: /* 802F3570 002EF1D0 3B FF 00 01 */ addi r31, r31, 1 /* 802F3574 002EF1D4 3B BD 00 08 */ addi r29, r29, 8 /* 802F3578 002EF1D8 28 1F 00 10 */ cmplwi r31, 0x10 /* 802F357C 002EF1DC 41 80 FF D4 */ blt lbl_802F3550 /* 802F3580 002EF1E0 7F C3 F3 78 */ mr r3, r30 /* 802F3584 002EF1E4 4B F7 C4 A1 */ bl OSUnlockMutex lbl_802F3588: /* 802F3588 002EF1E8 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2) /* 802F358C 002EF1EC 38 80 00 00 */ li r4, 0 /* 802F3590 002EF1F0 38 A0 00 10 */ li r5, 0x10 /* 802F3594 002EF1F4 38 7D 58 D2 */ addi r3, r29, 0x58d2 /* 802F3598 002EF1F8 4B D1 0B 6D */ bl memset /* 802F359C 002EF1FC 38 7D 57 D2 */ addi r3, r29, 0x57d2 /* 802F35A0 002EF200 38 80 00 00 */ li r4, 0 /* 802F35A4 002EF204 38 A0 01 00 */ li r5, 0x100 /* 802F35A8 002EF208 4B D1 0B 5D */ bl memset lbl_802F35AC: /* 802F35AC 002EF20C 80 01 00 24 */ lwz r0, 0x24(r1) /* 802F35B0 002EF210 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802F35B4 002EF214 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802F35B8 002EF218 83 A1 00 14 */ lwz r29, 0x14(r1) /* 802F35BC 002EF21C 83 81 00 10 */ lwz r28, 0x10(r1) /* 802F35C0 002EF220 7C 08 03 A6 */ mtlr r0 /* 802F35C4 002EF224 38 21 00 20 */ addi r1, r1, 0x20 /* 802F35C8 002EF228 4E 80 00 20 */ blr .global MPiResetPortByAid MPiResetPortByAid: /* 802F35CC 002EF22C 80 82 AA 30 */ lwz r4, lbl_80643030-_SDA2_BASE_(r2) /* 802F35D0 002EF230 54 63 08 3C */ slwi r3, r3, 1 /* 802F35D4 002EF234 38 00 00 01 */ li r0, 1 /* 802F35D8 002EF238 38 84 57 D2 */ addi r4, r4, 0x57d2 /* 802F35DC 002EF23C 7C 04 1B 2E */ sthx r0, r4, r3 /* 802F35E0 002EF240 7C 64 1A 14 */ add r3, r4, r3 /* 802F35E4 002EF244 B0 03 00 20 */ sth r0, 0x20(r3) /* 802F35E8 002EF248 B0 03 00 40 */ sth r0, 0x40(r3) /* 802F35EC 002EF24C B0 03 00 60 */ sth r0, 0x60(r3) /* 802F35F0 002EF250 B0 03 00 80 */ sth r0, 0x80(r3) /* 802F35F4 002EF254 B0 03 00 A0 */ sth r0, 0xa0(r3) /* 802F35F8 002EF258 B0 03 00 C0 */ sth r0, 0xc0(r3) /* 802F35FC 002EF25C B0 03 00 E0 */ sth r0, 0xe0(r3) /* 802F3600 002EF260 4E 80 00 20 */ blr .global MPiNotifyDataSentToPort MPiNotifyDataSentToPort: /* 802F3604 002EF264 80 A4 00 30 */ lwz r5, 0x30(r4) /* 802F3608 002EF268 2C 05 00 00 */ cmpwi r5, 0 /* 802F360C 002EF26C 41 82 00 0C */ beq lbl_802F3618 /* 802F3610 002EF270 80 04 00 2C */ lwz r0, 0x2c(r4) /* 802F3614 002EF274 90 05 00 00 */ stw r0, 0(r5) lbl_802F3618: /* 802F3618 002EF278 4B FF D4 D8 */ b MPiRespondToWaitingRequest .global MPiNotifyDataReceivedToPort MPiNotifyDataReceivedToPort: /* 802F361C 002EF27C 94 21 FF D0 */ stwu r1, -0x30(r1) /* 802F3620 002EF280 7C 08 02 A6 */ mflr r0 /* 802F3624 002EF284 90 01 00 34 */ stw r0, 0x34(r1) /* 802F3628 002EF288 39 61 00 30 */ addi r11, r1, 0x30 /* 802F362C 002EF28C 4B ED 3A F1 */ bl _savegpr_24 /* 802F3630 002EF290 2C 06 00 00 */ cmpwi r6, 0 /* 802F3634 002EF294 7C 78 1B 78 */ mr r24, r3 /* 802F3638 002EF298 7C 99 23 78 */ mr r25, r4 /* 802F363C 002EF29C 7C BA 2B 78 */ mr r26, r5 /* 802F3640 002EF2A0 7C DB 33 78 */ mr r27, r6 /* 802F3644 002EF2A4 7C FC 3B 78 */ mr r28, r7 /* 802F3648 002EF2A8 41 82 00 9C */ beq lbl_802F36E4 /* 802F364C 002EF2AC 28 03 00 10 */ cmplwi r3, 0x10 /* 802F3650 002EF2B0 40 80 00 94 */ bge lbl_802F36E4 /* 802F3654 002EF2B4 28 06 02 04 */ cmplwi r6, 0x204 /* 802F3658 002EF2B8 40 80 00 8C */ bge lbl_802F36E4 /* 802F365C 002EF2BC 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2) /* 802F3660 002EF2C0 3B DD 72 E0 */ addi r30, r29, 0x72e0 /* 802F3664 002EF2C4 7F C3 F3 78 */ mr r3, r30 /* 802F3668 002EF2C8 4B F7 C2 E1 */ bl OSLockMutex /* 802F366C 002EF2CC 3B FD 72 F8 */ addi r31, r29, 0x72f8 /* 802F3670 002EF2D0 38 80 00 00 */ li r4, 0 /* 802F3674 002EF2D4 7F E3 FB 78 */ mr r3, r31 /* 802F3678 002EF2D8 38 A0 00 40 */ li r5, 0x40 /* 802F367C 002EF2DC 4B D1 0A 89 */ bl memset /* 802F3680 002EF2E0 2C 1F 00 00 */ cmpwi r31, 0 /* 802F3684 002EF2E4 41 82 00 60 */ beq lbl_802F36E4 /* 802F3688 002EF2E8 38 00 00 00 */ li r0, 0 /* 802F368C 002EF2EC 28 18 00 10 */ cmplwi r24, 0x10 /* 802F3690 002EF2F0 90 1F 00 00 */ stw r0, 0(r31) /* 802F3694 002EF2F4 93 3F 00 10 */ stw r25, 0x10(r31) /* 802F3698 002EF2F8 93 5F 00 14 */ stw r26, 0x14(r31) /* 802F369C 002EF2FC 93 7F 00 18 */ stw r27, 0x18(r31) /* 802F36A0 002EF300 93 9F 00 1C */ stw r28, 0x1c(r31) /* 802F36A4 002EF304 40 80 00 38 */ bge lbl_802F36DC /* 802F36A8 002EF308 90 1F 00 00 */ stw r0, 0(r31) /* 802F36AC 002EF30C 57 00 18 38 */ slwi r0, r24, 3 /* 802F36B0 002EF310 38 80 00 03 */ li r4, 3 /* 802F36B4 002EF314 93 1F 00 08 */ stw r24, 8(r31) /* 802F36B8 002EF318 7C 7D 02 14 */ add r3, r29, r0 /* 802F36BC 002EF31C 90 9F 00 04 */ stw r4, 4(r31) /* 802F36C0 002EF320 81 83 00 B4 */ lwz r12, 0xb4(r3) /* 802F36C4 002EF324 2C 0C 00 00 */ cmpwi r12, 0 /* 802F36C8 002EF328 41 82 00 14 */ beq lbl_802F36DC /* 802F36CC 002EF32C 7F E4 FB 78 */ mr r4, r31 /* 802F36D0 002EF330 38 60 00 03 */ li r3, 3 /* 802F36D4 002EF334 7D 89 03 A6 */ mtctr r12 /* 802F36D8 002EF338 4E 80 04 21 */ bctrl lbl_802F36DC: /* 802F36DC 002EF33C 7F C3 F3 78 */ mr r3, r30 /* 802F36E0 002EF340 4B F7 C3 45 */ bl OSUnlockMutex lbl_802F36E4: /* 802F36E4 002EF344 39 61 00 30 */ addi r11, r1, 0x30 /* 802F36E8 002EF348 4B ED 3A 81 */ bl _restgpr_24 /* 802F36EC 002EF34C 80 01 00 34 */ lwz r0, 0x34(r1) /* 802F36F0 002EF350 7C 08 03 A6 */ mtlr r0 /* 802F36F4 002EF354 38 21 00 30 */ addi r1, r1, 0x30 /* 802F36F8 002EF358 4E 80 00 20 */ blr .global MPiNotifyConnectedToPort MPiNotifyConnectedToPort: /* 802F36FC 002EF35C 94 21 FF D0 */ stwu r1, -0x30(r1) /* 802F3700 002EF360 7C 08 02 A6 */ mflr r0 /* 802F3704 002EF364 90 01 00 34 */ stw r0, 0x34(r1) /* 802F3708 002EF368 39 61 00 30 */ addi r11, r1, 0x30 /* 802F370C 002EF36C 4B ED 3A 11 */ bl _savegpr_24 /* 802F3710 002EF370 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2) /* 802F3714 002EF374 7C 78 1B 78 */ mr r24, r3 /* 802F3718 002EF378 7C 99 23 78 */ mr r25, r4 /* 802F371C 002EF37C 7C BA 2B 78 */ mr r26, r5 /* 802F3720 002EF380 3B DD 72 E0 */ addi r30, r29, 0x72e0 /* 802F3724 002EF384 7C DB 33 78 */ mr r27, r6 /* 802F3728 002EF388 7F C3 F3 78 */ mr r3, r30 /* 802F372C 002EF38C 4B F7 C2 1D */ bl OSLockMutex /* 802F3730 002EF390 3B 9D 72 F8 */ addi r28, r29, 0x72f8 /* 802F3734 002EF394 38 80 00 00 */ li r4, 0 /* 802F3738 002EF398 7F 83 E3 78 */ mr r3, r28 /* 802F373C 002EF39C 38 A0 00 40 */ li r5, 0x40 /* 802F3740 002EF3A0 4B D1 09 C5 */ bl memset /* 802F3744 002EF3A4 2C 1C 00 00 */ cmpwi r28, 0 /* 802F3748 002EF3A8 41 82 00 7C */ beq lbl_802F37C4 /* 802F374C 002EF3AC 3B E0 00 00 */ li r31, 0 /* 802F3750 002EF3B0 7F 24 CB 78 */ mr r4, r25 /* 802F3754 002EF3B4 93 FC 00 00 */ stw r31, 0(r28) /* 802F3758 002EF3B8 38 7C 00 18 */ addi r3, r28, 0x18 /* 802F375C 002EF3BC 38 A0 00 06 */ li r5, 6 /* 802F3760 002EF3C0 93 1C 00 10 */ stw r24, 0x10(r28) /* 802F3764 002EF3C4 93 7C 00 14 */ stw r27, 0x14(r28) /* 802F3768 002EF3C8 4B D1 08 99 */ bl memcpy /* 802F376C 002EF3CC 7F 44 D3 78 */ mr r4, r26 /* 802F3770 002EF3D0 38 7C 00 1E */ addi r3, r28, 0x1e /* 802F3774 002EF3D4 38 A0 00 20 */ li r5, 0x20 /* 802F3778 002EF3D8 4B D1 08 89 */ bl memcpy /* 802F377C 002EF3DC 93 FC 00 00 */ stw r31, 0(r28) /* 802F3780 002EF3E0 38 00 00 04 */ li r0, 4 /* 802F3784 002EF3E4 3B E0 00 00 */ li r31, 0 /* 802F3788 002EF3E8 90 1C 00 04 */ stw r0, 4(r28) lbl_802F378C: /* 802F378C 002EF3EC 93 FC 00 08 */ stw r31, 8(r28) /* 802F3790 002EF3F0 81 9D 00 B4 */ lwz r12, 0xb4(r29) /* 802F3794 002EF3F4 2C 0C 00 00 */ cmpwi r12, 0 /* 802F3798 002EF3F8 41 82 00 14 */ beq lbl_802F37AC /* 802F379C 002EF3FC 7F 84 E3 78 */ mr r4, r28 /* 802F37A0 002EF400 38 60 00 04 */ li r3, 4 /* 802F37A4 002EF404 7D 89 03 A6 */ mtctr r12 /* 802F37A8 002EF408 4E 80 04 21 */ bctrl lbl_802F37AC: /* 802F37AC 002EF40C 3B FF 00 01 */ addi r31, r31, 1 /* 802F37B0 002EF410 3B BD 00 08 */ addi r29, r29, 8 /* 802F37B4 002EF414 28 1F 00 10 */ cmplwi r31, 0x10 /* 802F37B8 002EF418 41 80 FF D4 */ blt lbl_802F378C /* 802F37BC 002EF41C 7F C3 F3 78 */ mr r3, r30 /* 802F37C0 002EF420 4B F7 C2 65 */ bl OSUnlockMutex lbl_802F37C4: /* 802F37C4 002EF424 39 61 00 30 */ addi r11, r1, 0x30 /* 802F37C8 002EF428 4B ED 39 A1 */ bl _restgpr_24 /* 802F37CC 002EF42C 80 01 00 34 */ lwz r0, 0x34(r1) /* 802F37D0 002EF430 7C 08 03 A6 */ mtlr r0 /* 802F37D4 002EF434 38 21 00 30 */ addi r1, r1, 0x30 /* 802F37D8 002EF438 4E 80 00 20 */ blr .global MPiNotifyDisconnectedToPort MPiNotifyDisconnectedToPort: /* 802F37DC 002EF43C 94 21 FF D0 */ stwu r1, -0x30(r1) /* 802F37E0 002EF440 7C 08 02 A6 */ mflr r0 /* 802F37E4 002EF444 90 01 00 34 */ stw r0, 0x34(r1) /* 802F37E8 002EF448 39 61 00 30 */ addi r11, r1, 0x30 /* 802F37EC 002EF44C 4B ED 39 35 */ bl _savegpr_25 /* 802F37F0 002EF450 83 A2 AA 30 */ lwz r29, lbl_80643030-_SDA2_BASE_(r2) /* 802F37F4 002EF454 7C 79 1B 78 */ mr r25, r3 /* 802F37F8 002EF458 7C 9A 23 78 */ mr r26, r4 /* 802F37FC 002EF45C 7C BB 2B 78 */ mr r27, r5 /* 802F3800 002EF460 3B DD 72 E0 */ addi r30, r29, 0x72e0 /* 802F3804 002EF464 7F C3 F3 78 */ mr r3, r30 /* 802F3808 002EF468 4B F7 C1 41 */ bl OSLockMutex /* 802F380C 002EF46C 3B 9D 72 F8 */ addi r28, r29, 0x72f8 /* 802F3810 002EF470 38 80 00 00 */ li r4, 0 /* 802F3814 002EF474 7F 83 E3 78 */ mr r3, r28 /* 802F3818 002EF478 38 A0 00 40 */ li r5, 0x40 /* 802F381C 002EF47C 4B D1 08 E9 */ bl memset /* 802F3820 002EF480 2C 1C 00 00 */ cmpwi r28, 0 /* 802F3824 002EF484 41 82 00 6C */ beq lbl_802F3890 /* 802F3828 002EF488 3B E0 00 00 */ li r31, 0 /* 802F382C 002EF48C 7F 64 DB 78 */ mr r4, r27 /* 802F3830 002EF490 93 FC 00 00 */ stw r31, 0(r28) /* 802F3834 002EF494 38 7C 00 18 */ addi r3, r28, 0x18 /* 802F3838 002EF498 38 A0 00 06 */ li r5, 6 /* 802F383C 002EF49C 93 3C 00 10 */ stw r25, 0x10(r28) /* 802F3840 002EF4A0 93 5C 00 14 */ stw r26, 0x14(r28) /* 802F3844 002EF4A4 4B D1 07 BD */ bl memcpy /* 802F3848 002EF4A8 93 FC 00 00 */ stw r31, 0(r28) /* 802F384C 002EF4AC 38 00 00 05 */ li r0, 5 /* 802F3850 002EF4B0 3B E0 00 00 */ li r31, 0 /* 802F3854 002EF4B4 90 1C 00 04 */ stw r0, 4(r28) lbl_802F3858: /* 802F3858 002EF4B8 93 FC 00 08 */ stw r31, 8(r28) /* 802F385C 002EF4BC 81 9D 00 B4 */ lwz r12, 0xb4(r29) /* 802F3860 002EF4C0 2C 0C 00 00 */ cmpwi r12, 0 /* 802F3864 002EF4C4 41 82 00 14 */ beq lbl_802F3878 /* 802F3868 002EF4C8 7F 84 E3 78 */ mr r4, r28 /* 802F386C 002EF4CC 38 60 00 05 */ li r3, 5 /* 802F3870 002EF4D0 7D 89 03 A6 */ mtctr r12 /* 802F3874 002EF4D4 4E 80 04 21 */ bctrl lbl_802F3878: /* 802F3878 002EF4D8 3B FF 00 01 */ addi r31, r31, 1 /* 802F387C 002EF4DC 3B BD 00 08 */ addi r29, r29, 8 /* 802F3880 002EF4E0 28 1F 00 10 */ cmplwi r31, 0x10 /* 802F3884 002EF4E4 41 80 FF D4 */ blt lbl_802F3858 /* 802F3888 002EF4E8 7F C3 F3 78 */ mr r3, r30 /* 802F388C 002EF4EC 4B F7 C1 99 */ bl OSUnlockMutex lbl_802F3890: /* 802F3890 002EF4F0 39 61 00 30 */ addi r11, r1, 0x30 /* 802F3894 002EF4F4 4B ED 38 D9 */ bl _restgpr_25 /* 802F3898 002EF4F8 80 01 00 34 */ lwz r0, 0x34(r1) /* 802F389C 002EF4FC 7C 08 03 A6 */ mtlr r0 /* 802F38A0 002EF500 38 21 00 30 */ addi r1, r1, 0x30 /* 802F38A4 002EF504 4E 80 00 20 */ blr