Copy JKernel (#126)

* start JSystem

* JKRAram and JUTGamePad

* started heap and thread

* more JKernel

* mostly finished JKernel

* delete unused asm

* JKRFileFinder

* delete unused asm and match findNextFile

* format

* fix mtx_vec
This commit is contained in:
lepelog
2021-05-02 20:03:24 -04:00
committed by GitHub
parent 3b7364d481
commit 8fd9f2ab5d
360 changed files with 6646 additions and 12699 deletions
@@ -1,21 +0,0 @@
lbl_802DBD70:
/* 802DBD70 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DBD74 7C 08 02 A6 */ mflr r0
/* 802DBD78 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DBD7C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DBD80 7C 7F 1B 78 */ mr r31, r3
/* 802DBD84 38 7F 00 28 */ addi r3, r31, 0x28
/* 802DBD88 38 9F 00 48 */ addi r4, r31, 0x48
/* 802DBD8C 38 A0 00 01 */ li r5, 1
/* 802DBD90 48 06 2C 05 */ bl OSInitMessageQueue
/* 802DBD94 38 00 00 00 */ li r0, 0
/* 802DBD98 90 1F 00 14 */ stw r0, 0x14(r31)
/* 802DBD9C 90 1F 00 1C */ stw r0, 0x1c(r31)
/* 802DBDA0 93 FF 00 18 */ stw r31, 0x18(r31)
/* 802DBDA4 90 1F 00 20 */ stw r0, 0x20(r31)
/* 802DBDA8 7F E3 FB 78 */ mr r3, r31
/* 802DBDAC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DBDB0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DBDB4 7C 08 03 A6 */ mtlr r0
/* 802DBDB8 38 21 00 10 */ addi r1, r1, 0x10
/* 802DBDBC 4E 80 00 20 */ blr
@@ -1,21 +0,0 @@
lbl_802DB6E0:
/* 802DB6E0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB6E4 7C 08 02 A6 */ mflr r0
/* 802DB6E8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB6EC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB6F0 7C 7F 1B 78 */ mr r31, r3
/* 802DB6F4 7C 86 23 78 */ mr r6, r4
/* 802DB6F8 38 80 08 00 */ li r4, 0x800
/* 802DB6FC 38 A0 00 10 */ li r5, 0x10
/* 802DB700 4B FF 5E 69 */ bl __ct__9JKRThreadFUlii
/* 802DB704 3C 60 80 3D */ lis r3, __vt__9JKRDecomp@ha /* 0x803CC4A0@ha */
/* 802DB708 38 03 C4 A0 */ addi r0, r3, __vt__9JKRDecomp@l /* 0x803CC4A0@l */
/* 802DB70C 90 1F 00 00 */ stw r0, 0(r31)
/* 802DB710 80 7F 00 2C */ lwz r3, 0x2c(r31)
/* 802DB714 48 06 60 A1 */ bl OSResumeThread
/* 802DB718 7F E3 FB 78 */ mr r3, r31
/* 802DB71C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB720 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB724 7C 08 03 A6 */ mtlr r0
/* 802DB728 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB72C 4E 80 00 20 */ blr
@@ -1,17 +0,0 @@
lbl_802DBDC0:
/* 802DBDC0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DBDC4 7C 08 02 A6 */ mflr r0
/* 802DBDC8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DBDCC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DBDD0 7C 7F 1B 79 */ or. r31, r3, r3
/* 802DBDD4 41 82 00 10 */ beq lbl_802DBDE4
/* 802DBDD8 7C 80 07 35 */ extsh. r0, r4
/* 802DBDDC 40 81 00 08 */ ble lbl_802DBDE4
/* 802DBDE0 4B FF 2F 5D */ bl __dl__FPv
lbl_802DBDE4:
/* 802DBDE4 7F E3 FB 78 */ mr r3, r31
/* 802DBDE8 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DBDEC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DBDF0 7C 08 03 A6 */ mtlr r0
/* 802DBDF4 38 21 00 10 */ addi r1, r1, 0x10
/* 802DBDF8 4E 80 00 20 */ blr
@@ -1,26 +0,0 @@
lbl_802DB730:
/* 802DB730 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB734 7C 08 02 A6 */ mflr r0
/* 802DB738 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB73C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB740 93 C1 00 08 */ stw r30, 8(r1)
/* 802DB744 7C 7E 1B 79 */ or. r30, r3, r3
/* 802DB748 7C 9F 23 78 */ mr r31, r4
/* 802DB74C 41 82 00 28 */ beq lbl_802DB774
/* 802DB750 3C 80 80 3D */ lis r4, __vt__9JKRDecomp@ha /* 0x803CC4A0@ha */
/* 802DB754 38 04 C4 A0 */ addi r0, r4, __vt__9JKRDecomp@l /* 0x803CC4A0@l */
/* 802DB758 90 1E 00 00 */ stw r0, 0(r30)
/* 802DB75C 38 80 00 00 */ li r4, 0
/* 802DB760 4B FF 5F F9 */ bl __dt__9JKRThreadFv
/* 802DB764 7F E0 07 35 */ extsh. r0, r31
/* 802DB768 40 81 00 0C */ ble lbl_802DB774
/* 802DB76C 7F C3 F3 78 */ mr r3, r30
/* 802DB770 4B FF 35 CD */ bl __dl__FPv
lbl_802DB774:
/* 802DB774 7F C3 F3 78 */ mr r3, r30
/* 802DB778 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB77C 83 C1 00 08 */ lwz r30, 8(r1)
/* 802DB780 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB784 7C 08 03 A6 */ mtlr r0
/* 802DB788 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB78C 4E 80 00 20 */ blr
@@ -1,34 +0,0 @@
lbl_802DBCF8:
/* 802DBCF8 88 83 00 00 */ lbz r4, 0(r3)
/* 802DBCFC 2C 04 00 59 */ cmpwi r4, 0x59
/* 802DBD00 40 82 00 40 */ bne lbl_802DBD40
/* 802DBD04 88 03 00 01 */ lbz r0, 1(r3)
/* 802DBD08 2C 00 00 61 */ cmpwi r0, 0x61
/* 802DBD0C 40 82 00 34 */ bne lbl_802DBD40
/* 802DBD10 88 03 00 03 */ lbz r0, 3(r3)
/* 802DBD14 2C 00 00 30 */ cmpwi r0, 0x30
/* 802DBD18 40 82 00 28 */ bne lbl_802DBD40
/* 802DBD1C 88 03 00 02 */ lbz r0, 2(r3)
/* 802DBD20 2C 00 00 79 */ cmpwi r0, 0x79
/* 802DBD24 40 82 00 0C */ bne lbl_802DBD30
/* 802DBD28 38 60 00 01 */ li r3, 1
/* 802DBD2C 4E 80 00 20 */ blr
lbl_802DBD30:
/* 802DBD30 2C 00 00 7A */ cmpwi r0, 0x7a
/* 802DBD34 40 82 00 0C */ bne lbl_802DBD40
/* 802DBD38 38 60 00 02 */ li r3, 2
/* 802DBD3C 4E 80 00 20 */ blr
lbl_802DBD40:
/* 802DBD40 2C 04 00 41 */ cmpwi r4, 0x41
/* 802DBD44 40 82 00 24 */ bne lbl_802DBD68
/* 802DBD48 88 03 00 01 */ lbz r0, 1(r3)
/* 802DBD4C 2C 00 00 53 */ cmpwi r0, 0x53
/* 802DBD50 40 82 00 18 */ bne lbl_802DBD68
/* 802DBD54 88 03 00 02 */ lbz r0, 2(r3)
/* 802DBD58 2C 00 00 52 */ cmpwi r0, 0x52
/* 802DBD5C 40 82 00 0C */ bne lbl_802DBD68
/* 802DBD60 38 60 00 03 */ li r3, 3
/* 802DBD64 4E 80 00 20 */ blr
lbl_802DBD68:
/* 802DBD68 38 60 00 00 */ li r3, 0
/* 802DBD6C 4E 80 00 20 */ blr
@@ -1,27 +0,0 @@
lbl_802DB680:
/* 802DB680 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB684 7C 08 02 A6 */ mflr r0
/* 802DB688 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB68C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB690 7C 7F 1B 78 */ mr r31, r3
/* 802DB694 80 0D 8F 30 */ lwz r0, sDecompObject__9JKRDecomp(r13)
/* 802DB698 28 00 00 00 */ cmplwi r0, 0
/* 802DB69C 40 82 00 2C */ bne lbl_802DB6C8
/* 802DB6A0 38 60 00 7C */ li r3, 0x7c
/* 802DB6A4 80 8D 8D F0 */ lwz r4, sSystemHeap__7JKRHeap(r13)
/* 802DB6A8 38 A0 00 00 */ li r5, 0
/* 802DB6AC 4B FF 35 ED */ bl __nw__FUlP7JKRHeapi
/* 802DB6B0 7C 60 1B 79 */ or. r0, r3, r3
/* 802DB6B4 41 82 00 10 */ beq lbl_802DB6C4
/* 802DB6B8 7F E4 FB 78 */ mr r4, r31
/* 802DB6BC 48 00 00 25 */ bl __ct__9JKRDecompFl
/* 802DB6C0 7C 60 1B 78 */ mr r0, r3
lbl_802DB6C4:
/* 802DB6C4 90 0D 8F 30 */ stw r0, sDecompObject__9JKRDecomp(r13)
lbl_802DB6C8:
/* 802DB6C8 80 6D 8F 30 */ lwz r3, sDecompObject__9JKRDecomp(r13)
/* 802DB6CC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB6D0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB6D4 7C 08 03 A6 */ mtlr r0
/* 802DB6D8 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB6DC 4E 80 00 20 */ blr
@@ -1,34 +0,0 @@
lbl_802DB9DC:
/* 802DB9DC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802DB9E0 7C 08 02 A6 */ mflr r0
/* 802DB9E4 90 01 00 24 */ stw r0, 0x24(r1)
/* 802DB9E8 39 61 00 20 */ addi r11, r1, 0x20
/* 802DB9EC 48 08 67 ED */ bl _savegpr_28
/* 802DB9F0 7C 7C 1B 78 */ mr r28, r3
/* 802DB9F4 7C 9D 23 78 */ mr r29, r4
/* 802DB9F8 7C BE 2B 78 */ mr r30, r5
/* 802DB9FC 7C DF 33 78 */ mr r31, r6
/* 802DBA00 48 00 02 F9 */ bl checkCompressed__9JKRDecompFPUc
/* 802DBA04 2C 03 00 01 */ cmpwi r3, 1
/* 802DBA08 40 82 00 1C */ bne lbl_802DBA24
/* 802DBA0C 7F 83 E3 78 */ mr r3, r28
/* 802DBA10 7F A4 EB 78 */ mr r4, r29
/* 802DBA14 7F C5 F3 78 */ mr r5, r30
/* 802DBA18 7F E6 FB 78 */ mr r6, r31
/* 802DBA1C 48 00 00 3D */ bl decodeSZP__9JKRDecompFPUcPUcUlUl
/* 802DBA20 48 00 00 20 */ b lbl_802DBA40
lbl_802DBA24:
/* 802DBA24 2C 03 00 02 */ cmpwi r3, 2
/* 802DBA28 40 82 00 18 */ bne lbl_802DBA40
/* 802DBA2C 7F 83 E3 78 */ mr r3, r28
/* 802DBA30 7F A4 EB 78 */ mr r4, r29
/* 802DBA34 7F C5 F3 78 */ mr r5, r30
/* 802DBA38 7F E6 FB 78 */ mr r6, r31
/* 802DBA3C 48 00 01 D9 */ bl decodeSZS__9JKRDecompFPUcPUcUlUl
lbl_802DBA40:
/* 802DBA40 39 61 00 20 */ addi r11, r1, 0x20
/* 802DBA44 48 08 67 E1 */ bl _restgpr_28
/* 802DBA48 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802DBA4C 7C 08 03 A6 */ mtlr r0
/* 802DBA50 38 21 00 20 */ addi r1, r1, 0x20
/* 802DBA54 4E 80 00 20 */ blr
@@ -1,14 +0,0 @@
lbl_802DB900:
/* 802DB900 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB904 7C 08 02 A6 */ mflr r0
/* 802DB908 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB90C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB910 4B FF FF 49 */ bl prepareCommand__9JKRDecompFPUcPUcUlUlPFUl_v
/* 802DB914 7C 7F 1B 78 */ mr r31, r3
/* 802DB918 4B FF FF B9 */ bl sendCommand__9JKRDecompFP16JKRDecompCommand
/* 802DB91C 7F E3 FB 78 */ mr r3, r31
/* 802DB920 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB924 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB928 7C 08 03 A6 */ mtlr r0
/* 802DB92C 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB930 4E 80 00 20 */ blr
@@ -1,22 +0,0 @@
lbl_802DB988:
/* 802DB988 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB98C 7C 08 02 A6 */ mflr r0
/* 802DB990 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB994 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB998 93 C1 00 08 */ stw r30, 8(r1)
/* 802DB99C 38 E0 00 00 */ li r7, 0
/* 802DB9A0 4B FF FF 61 */ bl orderAsync__9JKRDecompFPUcPUcUlUlPFUl_v
/* 802DB9A4 7C 7F 1B 78 */ mr r31, r3
/* 802DB9A8 38 80 00 00 */ li r4, 0
/* 802DB9AC 4B FF FF 89 */ bl sync__9JKRDecompFP16JKRDecompCommandi
/* 802DB9B0 7C 7E 1B 78 */ mr r30, r3
/* 802DB9B4 7F E3 FB 78 */ mr r3, r31
/* 802DB9B8 38 80 00 01 */ li r4, 1
/* 802DB9BC 48 00 04 05 */ bl __dt__16JKRDecompCommandFv
/* 802DB9C0 7F C3 F3 78 */ mr r3, r30
/* 802DB9C4 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB9C8 83 C1 00 08 */ lwz r30, 8(r1)
/* 802DB9CC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB9D0 7C 08 03 A6 */ mtlr r0
/* 802DB9D4 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB9D8 4E 80 00 20 */ blr
@@ -1,32 +0,0 @@
lbl_802DB858:
/* 802DB858 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802DB85C 7C 08 02 A6 */ mflr r0
/* 802DB860 90 01 00 24 */ stw r0, 0x24(r1)
/* 802DB864 39 61 00 20 */ addi r11, r1, 0x20
/* 802DB868 48 08 69 6D */ bl _savegpr_27
/* 802DB86C 7C 7B 1B 78 */ mr r27, r3
/* 802DB870 7C 9C 23 78 */ mr r28, r4
/* 802DB874 7C BD 2B 78 */ mr r29, r5
/* 802DB878 7C DE 33 78 */ mr r30, r6
/* 802DB87C 7C FF 3B 78 */ mr r31, r7
/* 802DB880 38 60 00 4C */ li r3, 0x4c
/* 802DB884 80 8D 8D F0 */ lwz r4, sSystemHeap__7JKRHeap(r13)
/* 802DB888 38 A0 FF FC */ li r5, -4
/* 802DB88C 4B FF 34 0D */ bl __nw__FUlP7JKRHeapi
/* 802DB890 7C 64 1B 79 */ or. r4, r3, r3
/* 802DB894 41 82 00 0C */ beq lbl_802DB8A0
/* 802DB898 48 00 04 D9 */ bl __ct__16JKRDecompCommandFv
/* 802DB89C 7C 64 1B 78 */ mr r4, r3
lbl_802DB8A0:
/* 802DB8A0 93 64 00 04 */ stw r27, 4(r4)
/* 802DB8A4 93 84 00 08 */ stw r28, 8(r4)
/* 802DB8A8 93 A4 00 0C */ stw r29, 0xc(r4)
/* 802DB8AC 93 C4 00 10 */ stw r30, 0x10(r4)
/* 802DB8B0 93 E4 00 14 */ stw r31, 0x14(r4)
/* 802DB8B4 7C 83 23 78 */ mr r3, r4
/* 802DB8B8 39 61 00 20 */ addi r11, r1, 0x20
/* 802DB8BC 48 08 69 65 */ bl _restgpr_27
/* 802DB8C0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802DB8C4 7C 08 03 A6 */ mtlr r0
/* 802DB8C8 38 21 00 20 */ addi r1, r1, 0x20
/* 802DB8CC 4E 80 00 20 */ blr
@@ -1,55 +0,0 @@
lbl_802DB790:
/* 802DB790 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802DB794 7C 08 02 A6 */ mflr r0
/* 802DB798 90 01 00 24 */ stw r0, 0x24(r1)
/* 802DB79C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802DB7A0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802DB7A4 3C 60 80 3D */ lis r3, sMessageQueue__9JKRDecomp@ha /* 0x803CC480@ha */
/* 802DB7A8 38 63 C4 80 */ addi r3, r3, sMessageQueue__9JKRDecomp@l /* 0x803CC480@l */
/* 802DB7AC 3C 80 80 3D */ lis r4, sMessageBuffer__9JKRDecomp@ha /* 0x803CC460@ha */
/* 802DB7B0 38 84 C4 60 */ addi r4, r4, sMessageBuffer__9JKRDecomp@l /* 0x803CC460@l */
/* 802DB7B4 38 A0 00 08 */ li r5, 8
/* 802DB7B8 48 06 31 DD */ bl OSInitMessageQueue
/* 802DB7BC 3C 60 80 3D */ lis r3, sMessageQueue__9JKRDecomp@ha /* 0x803CC480@ha */
/* 802DB7C0 3B E3 C4 80 */ addi r31, r3, sMessageQueue__9JKRDecomp@l /* 0x803CC480@l */
lbl_802DB7C4:
/* 802DB7C4 7F E3 FB 78 */ mr r3, r31
/* 802DB7C8 38 81 00 08 */ addi r4, r1, 8
/* 802DB7CC 38 A0 00 01 */ li r5, 1
/* 802DB7D0 48 06 32 ED */ bl OSReceiveMessage
/* 802DB7D4 83 C1 00 08 */ lwz r30, 8(r1)
/* 802DB7D8 80 7E 00 04 */ lwz r3, 4(r30)
/* 802DB7DC 80 9E 00 08 */ lwz r4, 8(r30)
/* 802DB7E0 80 BE 00 0C */ lwz r5, 0xc(r30)
/* 802DB7E4 80 DE 00 10 */ lwz r6, 0x10(r30)
/* 802DB7E8 48 00 01 F5 */ bl decode__9JKRDecompFPUcPUcUlUl
/* 802DB7EC 80 1E 00 20 */ lwz r0, 0x20(r30)
/* 802DB7F0 2C 00 00 00 */ cmpwi r0, 0
/* 802DB7F4 41 82 00 18 */ beq lbl_802DB80C
/* 802DB7F8 2C 00 00 01 */ cmpwi r0, 1
/* 802DB7FC 40 82 FF C8 */ bne lbl_802DB7C4
/* 802DB800 80 7E 00 24 */ lwz r3, 0x24(r30)
/* 802DB804 4B FF 7D F1 */ bl sendCommand__12JKRAramPieceFP12JKRAMCommand
/* 802DB808 4B FF FF BC */ b lbl_802DB7C4
lbl_802DB80C:
/* 802DB80C 81 9E 00 14 */ lwz r12, 0x14(r30)
/* 802DB810 28 0C 00 00 */ cmplwi r12, 0
/* 802DB814 41 82 00 14 */ beq lbl_802DB828
/* 802DB818 7F C3 F3 78 */ mr r3, r30
/* 802DB81C 7D 89 03 A6 */ mtctr r12
/* 802DB820 4E 80 04 21 */ bctrl
/* 802DB824 4B FF FF A0 */ b lbl_802DB7C4
lbl_802DB828:
/* 802DB828 80 7E 00 1C */ lwz r3, 0x1c(r30)
/* 802DB82C 28 03 00 00 */ cmplwi r3, 0
/* 802DB830 41 82 00 14 */ beq lbl_802DB844
/* 802DB834 38 80 00 01 */ li r4, 1
/* 802DB838 38 A0 00 00 */ li r5, 0
/* 802DB83C 48 06 31 B9 */ bl OSSendMessage
/* 802DB840 4B FF FF 84 */ b lbl_802DB7C4
lbl_802DB844:
/* 802DB844 38 7E 00 28 */ addi r3, r30, 0x28
/* 802DB848 38 80 00 01 */ li r4, 1
/* 802DB84C 38 A0 00 00 */ li r5, 0
/* 802DB850 48 06 31 A5 */ bl OSSendMessage
/* 802DB854 4B FF FF 70 */ b lbl_802DB7C4
@@ -1,13 +0,0 @@
lbl_802DB8D0:
/* 802DB8D0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB8D4 7C 08 02 A6 */ mflr r0
/* 802DB8D8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB8DC 7C 64 1B 78 */ mr r4, r3
/* 802DB8E0 3C 60 80 3D */ lis r3, sMessageQueue__9JKRDecomp@ha /* 0x803CC480@ha */
/* 802DB8E4 38 63 C4 80 */ addi r3, r3, sMessageQueue__9JKRDecomp@l /* 0x803CC480@l */
/* 802DB8E8 38 A0 00 00 */ li r5, 0
/* 802DB8EC 48 06 31 09 */ bl OSSendMessage
/* 802DB8F0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB8F4 7C 08 03 A6 */ mtlr r0
/* 802DB8F8 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB8FC 4E 80 00 20 */ blr
@@ -1,24 +0,0 @@
lbl_802DB934:
/* 802DB934 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB938 7C 08 02 A6 */ mflr r0
/* 802DB93C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB940 2C 04 00 00 */ cmpwi r4, 0
/* 802DB944 40 82 00 1C */ bne lbl_802DB960
/* 802DB948 38 63 00 28 */ addi r3, r3, 0x28
/* 802DB94C 38 81 00 08 */ addi r4, r1, 8
/* 802DB950 38 A0 00 01 */ li r5, 1
/* 802DB954 48 06 31 69 */ bl OSReceiveMessage
/* 802DB958 38 60 00 01 */ li r3, 1
/* 802DB95C 48 00 00 1C */ b lbl_802DB978
lbl_802DB960:
/* 802DB960 38 63 00 28 */ addi r3, r3, 0x28
/* 802DB964 38 81 00 08 */ addi r4, r1, 8
/* 802DB968 38 A0 00 00 */ li r5, 0
/* 802DB96C 48 06 31 51 */ bl OSReceiveMessage
/* 802DB970 30 03 FF FF */ addic r0, r3, -1
/* 802DB974 7C 60 19 10 */ subfe r3, r0, r3
lbl_802DB978:
/* 802DB978 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB97C 7C 08 03 A6 */ mtlr r0
/* 802DB980 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB984 4E 80 00 20 */ blr