.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global OSInitMessageQueue OSInitMessageQueue: /* 8026EEF8 0026AB58 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8026EEFC 0026AB5C 7C 08 02 A6 */ mflr r0 /* 8026EF00 0026AB60 90 01 00 24 */ stw r0, 0x24(r1) /* 8026EF04 0026AB64 93 E1 00 1C */ stw r31, 0x1c(r1) /* 8026EF08 0026AB68 7C BF 2B 78 */ mr r31, r5 /* 8026EF0C 0026AB6C 93 C1 00 18 */ stw r30, 0x18(r1) /* 8026EF10 0026AB70 7C 9E 23 78 */ mr r30, r4 /* 8026EF14 0026AB74 93 A1 00 14 */ stw r29, 0x14(r1) /* 8026EF18 0026AB78 7C 7D 1B 78 */ mr r29, r3 /* 8026EF1C 0026AB7C 48 00 23 CD */ bl OSInitThreadQueue /* 8026EF20 0026AB80 38 7D 00 08 */ addi r3, r29, 8 /* 8026EF24 0026AB84 48 00 23 C5 */ bl OSInitThreadQueue /* 8026EF28 0026AB88 38 00 00 00 */ li r0, 0 /* 8026EF2C 0026AB8C 93 DD 00 10 */ stw r30, 0x10(r29) /* 8026EF30 0026AB90 93 FD 00 14 */ stw r31, 0x14(r29) /* 8026EF34 0026AB94 90 1D 00 18 */ stw r0, 0x18(r29) /* 8026EF38 0026AB98 90 1D 00 1C */ stw r0, 0x1c(r29) /* 8026EF3C 0026AB9C 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 8026EF40 0026ABA0 83 C1 00 18 */ lwz r30, 0x18(r1) /* 8026EF44 0026ABA4 83 A1 00 14 */ lwz r29, 0x14(r1) /* 8026EF48 0026ABA8 80 01 00 24 */ lwz r0, 0x24(r1) /* 8026EF4C 0026ABAC 7C 08 03 A6 */ mtlr r0 /* 8026EF50 0026ABB0 38 21 00 20 */ addi r1, r1, 0x20 /* 8026EF54 0026ABB4 4E 80 00 20 */ blr .global OSSendMessage OSSendMessage: /* 8026EF58 0026ABB8 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8026EF5C 0026ABBC 7C 08 02 A6 */ mflr r0 /* 8026EF60 0026ABC0 90 01 00 24 */ stw r0, 0x24(r1) /* 8026EF64 0026ABC4 93 E1 00 1C */ stw r31, 0x1c(r1) /* 8026EF68 0026ABC8 7C BF 2B 78 */ mr r31, r5 /* 8026EF6C 0026ABCC 93 C1 00 18 */ stw r30, 0x18(r1) /* 8026EF70 0026ABD0 93 A1 00 14 */ stw r29, 0x14(r1) /* 8026EF74 0026ABD4 7C 9D 23 78 */ mr r29, r4 /* 8026EF78 0026ABD8 93 81 00 10 */ stw r28, 0x10(r1) /* 8026EF7C 0026ABDC 7C 7C 1B 78 */ mr r28, r3 /* 8026EF80 0026ABE0 4B FF F7 DD */ bl OSDisableInterrupts /* 8026EF84 0026ABE4 7C 7E 1B 78 */ mr r30, r3 /* 8026EF88 0026ABE8 57 FF 07 FE */ clrlwi r31, r31, 0x1f /* 8026EF8C 0026ABEC 48 00 00 24 */ b lbl_8026EFB0 lbl_8026EF90: /* 8026EF90 0026ABF0 2C 1F 00 00 */ cmpwi r31, 0 /* 8026EF94 0026ABF4 40 82 00 14 */ bne lbl_8026EFA8 /* 8026EF98 0026ABF8 7F C3 F3 78 */ mr r3, r30 /* 8026EF9C 0026ABFC 4B FF F7 E9 */ bl OSRestoreInterrupts /* 8026EFA0 0026AC00 38 60 00 00 */ li r3, 0 /* 8026EFA4 0026AC04 48 00 00 5C */ b lbl_8026F000 lbl_8026EFA8: /* 8026EFA8 0026AC08 7F 83 E3 78 */ mr r3, r28 /* 8026EFAC 0026AC0C 48 00 33 C9 */ bl OSSleepThread lbl_8026EFB0: /* 8026EFB0 0026AC10 80 9C 00 1C */ lwz r4, 0x1c(r28) /* 8026EFB4 0026AC14 80 DC 00 14 */ lwz r6, 0x14(r28) /* 8026EFB8 0026AC18 7C 06 20 00 */ cmpw r6, r4 /* 8026EFBC 0026AC1C 40 81 FF D4 */ ble lbl_8026EF90 /* 8026EFC0 0026AC20 80 1C 00 18 */ lwz r0, 0x18(r28) /* 8026EFC4 0026AC24 38 7C 00 08 */ addi r3, r28, 8 /* 8026EFC8 0026AC28 80 BC 00 10 */ lwz r5, 0x10(r28) /* 8026EFCC 0026AC2C 7C 80 22 14 */ add r4, r0, r4 /* 8026EFD0 0026AC30 7C 04 33 D6 */ divw r0, r4, r6 /* 8026EFD4 0026AC34 7C 00 31 D6 */ mullw r0, r0, r6 /* 8026EFD8 0026AC38 7C 00 20 50 */ subf r0, r0, r4 /* 8026EFDC 0026AC3C 54 00 10 3A */ slwi r0, r0, 2 /* 8026EFE0 0026AC40 7F A5 01 2E */ stwx r29, r5, r0 /* 8026EFE4 0026AC44 80 9C 00 1C */ lwz r4, 0x1c(r28) /* 8026EFE8 0026AC48 38 04 00 01 */ addi r0, r4, 1 /* 8026EFEC 0026AC4C 90 1C 00 1C */ stw r0, 0x1c(r28) /* 8026EFF0 0026AC50 48 00 34 71 */ bl OSWakeupThread /* 8026EFF4 0026AC54 7F C3 F3 78 */ mr r3, r30 /* 8026EFF8 0026AC58 4B FF F7 8D */ bl OSRestoreInterrupts /* 8026EFFC 0026AC5C 38 60 00 01 */ li r3, 1 lbl_8026F000: /* 8026F000 0026AC60 80 01 00 24 */ lwz r0, 0x24(r1) /* 8026F004 0026AC64 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 8026F008 0026AC68 83 C1 00 18 */ lwz r30, 0x18(r1) /* 8026F00C 0026AC6C 83 A1 00 14 */ lwz r29, 0x14(r1) /* 8026F010 0026AC70 83 81 00 10 */ lwz r28, 0x10(r1) /* 8026F014 0026AC74 7C 08 03 A6 */ mtlr r0 /* 8026F018 0026AC78 38 21 00 20 */ addi r1, r1, 0x20 /* 8026F01C 0026AC7C 4E 80 00 20 */ blr .global OSReceiveMessage OSReceiveMessage: /* 8026F020 0026AC80 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8026F024 0026AC84 7C 08 02 A6 */ mflr r0 /* 8026F028 0026AC88 90 01 00 24 */ stw r0, 0x24(r1) /* 8026F02C 0026AC8C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 8026F030 0026AC90 7C 7F 1B 78 */ mr r31, r3 /* 8026F034 0026AC94 93 C1 00 18 */ stw r30, 0x18(r1) /* 8026F038 0026AC98 7C BE 2B 78 */ mr r30, r5 /* 8026F03C 0026AC9C 93 A1 00 14 */ stw r29, 0x14(r1) /* 8026F040 0026ACA0 93 81 00 10 */ stw r28, 0x10(r1) /* 8026F044 0026ACA4 7C 9C 23 78 */ mr r28, r4 /* 8026F048 0026ACA8 4B FF F7 15 */ bl OSDisableInterrupts /* 8026F04C 0026ACAC 7C 7D 1B 78 */ mr r29, r3 /* 8026F050 0026ACB0 57 DE 07 FE */ clrlwi r30, r30, 0x1f /* 8026F054 0026ACB4 48 00 00 24 */ b lbl_8026F078 lbl_8026F058: /* 8026F058 0026ACB8 2C 1E 00 00 */ cmpwi r30, 0 /* 8026F05C 0026ACBC 40 82 00 14 */ bne lbl_8026F070 /* 8026F060 0026ACC0 7F A3 EB 78 */ mr r3, r29 /* 8026F064 0026ACC4 4B FF F7 21 */ bl OSRestoreInterrupts /* 8026F068 0026ACC8 38 60 00 00 */ li r3, 0 /* 8026F06C 0026ACCC 48 00 00 70 */ b lbl_8026F0DC lbl_8026F070: /* 8026F070 0026ACD0 38 7F 00 08 */ addi r3, r31, 8 /* 8026F074 0026ACD4 48 00 33 01 */ bl OSSleepThread lbl_8026F078: /* 8026F078 0026ACD8 80 1F 00 1C */ lwz r0, 0x1c(r31) /* 8026F07C 0026ACDC 2C 00 00 00 */ cmpwi r0, 0 /* 8026F080 0026ACE0 41 82 FF D8 */ beq lbl_8026F058 /* 8026F084 0026ACE4 2C 1C 00 00 */ cmpwi r28, 0 /* 8026F088 0026ACE8 41 82 00 18 */ beq lbl_8026F0A0 /* 8026F08C 0026ACEC 80 1F 00 18 */ lwz r0, 0x18(r31) /* 8026F090 0026ACF0 80 7F 00 10 */ lwz r3, 0x10(r31) /* 8026F094 0026ACF4 54 00 10 3A */ slwi r0, r0, 2 /* 8026F098 0026ACF8 7C 03 00 2E */ lwzx r0, r3, r0 /* 8026F09C 0026ACFC 90 1C 00 00 */ stw r0, 0(r28) lbl_8026F0A0: /* 8026F0A0 0026AD00 80 9F 00 18 */ lwz r4, 0x18(r31) /* 8026F0A4 0026AD04 7F E3 FB 78 */ mr r3, r31 /* 8026F0A8 0026AD08 80 DF 00 14 */ lwz r6, 0x14(r31) /* 8026F0AC 0026AD0C 38 E4 00 01 */ addi r7, r4, 1 /* 8026F0B0 0026AD10 80 9F 00 1C */ lwz r4, 0x1c(r31) /* 8026F0B4 0026AD14 7C A7 33 D6 */ divw r5, r7, r6 /* 8026F0B8 0026AD18 38 04 FF FF */ addi r0, r4, -1 /* 8026F0BC 0026AD1C 90 1F 00 1C */ stw r0, 0x1c(r31) /* 8026F0C0 0026AD20 7C 05 31 D6 */ mullw r0, r5, r6 /* 8026F0C4 0026AD24 7C 00 38 50 */ subf r0, r0, r7 /* 8026F0C8 0026AD28 90 1F 00 18 */ stw r0, 0x18(r31) /* 8026F0CC 0026AD2C 48 00 33 95 */ bl OSWakeupThread /* 8026F0D0 0026AD30 7F A3 EB 78 */ mr r3, r29 /* 8026F0D4 0026AD34 4B FF F6 B1 */ bl OSRestoreInterrupts /* 8026F0D8 0026AD38 38 60 00 01 */ li r3, 1 lbl_8026F0DC: /* 8026F0DC 0026AD3C 80 01 00 24 */ lwz r0, 0x24(r1) /* 8026F0E0 0026AD40 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 8026F0E4 0026AD44 83 C1 00 18 */ lwz r30, 0x18(r1) /* 8026F0E8 0026AD48 83 A1 00 14 */ lwz r29, 0x14(r1) /* 8026F0EC 0026AD4C 83 81 00 10 */ lwz r28, 0x10(r1) /* 8026F0F0 0026AD50 7C 08 03 A6 */ mtlr r0 /* 8026F0F4 0026AD54 38 21 00 20 */ addi r1, r1, 0x20 /* 8026F0F8 0026AD58 4E 80 00 20 */ blr