tp/asm/JKernel/JKRDecomp.s

563 lines
26 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax" # 802db680
.global JKRDecomp_NS_create
JKRDecomp_NS_create:
/* 802DB680 002D85C0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB684 002D85C4 7C 08 02 A6 */ mflr r0
/* 802DB688 002D85C8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB68C 002D85CC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB690 002D85D0 7C 7F 1B 78 */ mr r31, r3
/* 802DB694 002D85D4 80 0D 8F 30 */ lwz r0, lbl_804514B0-_SDA_BASE_(r13)
/* 802DB698 002D85D8 28 00 00 00 */ cmplwi r0, 0
/* 802DB69C 002D85DC 40 82 00 2C */ bne lbl_802DB6C8
/* 802DB6A0 002D85E0 38 60 00 7C */ li r3, 0x7c
/* 802DB6A4 002D85E4 80 8D 8D F0 */ lwz r4, lbl_80451370-_SDA_BASE_(r13)
/* 802DB6A8 002D85E8 38 A0 00 00 */ li r5, 0
/* 802DB6AC 002D85EC 4B FF 35 ED */ bl __nw__FUlP7JKRHeapi
/* 802DB6B0 002D85F0 7C 60 1B 79 */ or. r0, r3, r3
/* 802DB6B4 002D85F4 41 82 00 10 */ beq lbl_802DB6C4
/* 802DB6B8 002D85F8 7F E4 FB 78 */ mr r4, r31
/* 802DB6BC 002D85FC 48 00 00 25 */ bl JKRDecomp
/* 802DB6C0 002D8600 7C 60 1B 78 */ mr r0, r3
lbl_802DB6C4:
/* 802DB6C4 002D8604 90 0D 8F 30 */ stw r0, lbl_804514B0-_SDA_BASE_(r13)
lbl_802DB6C8:
/* 802DB6C8 002D8608 80 6D 8F 30 */ lwz r3, lbl_804514B0-_SDA_BASE_(r13)
/* 802DB6CC 002D860C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB6D0 002D8610 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB6D4 002D8614 7C 08 03 A6 */ mtlr r0
/* 802DB6D8 002D8618 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB6DC 002D861C 4E 80 00 20 */ blr
.global JKRDecomp
JKRDecomp:
/* 802DB6E0 002D8620 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB6E4 002D8624 7C 08 02 A6 */ mflr r0
/* 802DB6E8 002D8628 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB6EC 002D862C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB6F0 002D8630 7C 7F 1B 78 */ mr r31, r3
/* 802DB6F4 002D8634 7C 86 23 78 */ mr r6, r4
/* 802DB6F8 002D8638 38 80 08 00 */ li r4, 0x800
/* 802DB6FC 002D863C 38 A0 00 10 */ li r5, 0x10
/* 802DB700 002D8640 4B FF 5E 69 */ bl JKRThread
/* 802DB704 002D8644 3C 60 80 3D */ lis r3, lbl_803CC4A0@ha
/* 802DB708 002D8648 38 03 C4 A0 */ addi r0, r3, lbl_803CC4A0@l
/* 802DB70C 002D864C 90 1F 00 00 */ stw r0, 0(r31)
/* 802DB710 002D8650 80 7F 00 2C */ lwz r3, 0x2c(r31)
/* 802DB714 002D8654 48 06 60 A1 */ bl OSResumeThread
/* 802DB718 002D8658 7F E3 FB 78 */ mr r3, r31
/* 802DB71C 002D865C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB720 002D8660 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB724 002D8664 7C 08 03 A6 */ mtlr r0
/* 802DB728 002D8668 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB72C 002D866C 4E 80 00 20 */ blr
/* 802DB730 002D8670 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB734 002D8674 7C 08 02 A6 */ mflr r0
/* 802DB738 002D8678 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB73C 002D867C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB740 002D8680 93 C1 00 08 */ stw r30, 8(r1)
/* 802DB744 002D8684 7C 7E 1B 79 */ or. r30, r3, r3
/* 802DB748 002D8688 7C 9F 23 78 */ mr r31, r4
/* 802DB74C 002D868C 41 82 00 28 */ beq lbl_802DB774
/* 802DB750 002D8690 3C 80 80 3D */ lis r4, lbl_803CC4A0@ha
/* 802DB754 002D8694 38 04 C4 A0 */ addi r0, r4, lbl_803CC4A0@l
/* 802DB758 002D8698 90 1E 00 00 */ stw r0, 0(r30)
/* 802DB75C 002D869C 38 80 00 00 */ li r4, 0
/* 802DB760 002D86A0 4B FF 5F F9 */ bl JKRThread_NS_dtor
/* 802DB764 002D86A4 7F E0 07 35 */ extsh. r0, r31
/* 802DB768 002D86A8 40 81 00 0C */ ble lbl_802DB774
/* 802DB76C 002D86AC 7F C3 F3 78 */ mr r3, r30
/* 802DB770 002D86B0 4B FF 35 CD */ bl __dl__FPv
lbl_802DB774:
/* 802DB774 002D86B4 7F C3 F3 78 */ mr r3, r30
/* 802DB778 002D86B8 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB77C 002D86BC 83 C1 00 08 */ lwz r30, 8(r1)
/* 802DB780 002D86C0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB784 002D86C4 7C 08 03 A6 */ mtlr r0
/* 802DB788 002D86C8 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB78C 002D86CC 4E 80 00 20 */ blr
/* 802DB790 002D86D0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802DB794 002D86D4 7C 08 02 A6 */ mflr r0
/* 802DB798 002D86D8 90 01 00 24 */ stw r0, 0x24(r1)
/* 802DB79C 002D86DC 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802DB7A0 002D86E0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802DB7A4 002D86E4 3C 60 80 3D */ lis r3, lbl_803CC480@ha
/* 802DB7A8 002D86E8 38 63 C4 80 */ addi r3, r3, lbl_803CC480@l
/* 802DB7AC 002D86EC 3C 80 80 3D */ lis r4, lbl_803CC460@ha
/* 802DB7B0 002D86F0 38 84 C4 60 */ addi r4, r4, lbl_803CC460@l
/* 802DB7B4 002D86F4 38 A0 00 08 */ li r5, 8
/* 802DB7B8 002D86F8 48 06 31 DD */ bl OSInitMessageQueue
/* 802DB7BC 002D86FC 3C 60 80 3D */ lis r3, lbl_803CC480@ha
/* 802DB7C0 002D8700 3B E3 C4 80 */ addi r31, r3, lbl_803CC480@l
lbl_802DB7C4:
/* 802DB7C4 002D8704 7F E3 FB 78 */ mr r3, r31
/* 802DB7C8 002D8708 38 81 00 08 */ addi r4, r1, 8
/* 802DB7CC 002D870C 38 A0 00 01 */ li r5, 1
/* 802DB7D0 002D8710 48 06 32 ED */ bl OSReceiveMessage
/* 802DB7D4 002D8714 83 C1 00 08 */ lwz r30, 8(r1)
/* 802DB7D8 002D8718 80 7E 00 04 */ lwz r3, 4(r30)
/* 802DB7DC 002D871C 80 9E 00 08 */ lwz r4, 8(r30)
/* 802DB7E0 002D8720 80 BE 00 0C */ lwz r5, 0xc(r30)
/* 802DB7E4 002D8724 80 DE 00 10 */ lwz r6, 0x10(r30)
/* 802DB7E8 002D8728 48 00 01 F5 */ bl JKRDecomp_NS_decode
/* 802DB7EC 002D872C 80 1E 00 20 */ lwz r0, 0x20(r30)
/* 802DB7F0 002D8730 2C 00 00 00 */ cmpwi r0, 0
/* 802DB7F4 002D8734 41 82 00 18 */ beq lbl_802DB80C
/* 802DB7F8 002D8738 2C 00 00 01 */ cmpwi r0, 1
/* 802DB7FC 002D873C 40 82 FF C8 */ bne lbl_802DB7C4
/* 802DB800 002D8740 80 7E 00 24 */ lwz r3, 0x24(r30)
/* 802DB804 002D8744 4B FF 7D F1 */ bl JKRAramPiece_NS_sendCommand
/* 802DB808 002D8748 4B FF FF BC */ b lbl_802DB7C4
lbl_802DB80C:
/* 802DB80C 002D874C 81 9E 00 14 */ lwz r12, 0x14(r30)
/* 802DB810 002D8750 28 0C 00 00 */ cmplwi r12, 0
/* 802DB814 002D8754 41 82 00 14 */ beq lbl_802DB828
/* 802DB818 002D8758 7F C3 F3 78 */ mr r3, r30
/* 802DB81C 002D875C 7D 89 03 A6 */ mtctr r12
/* 802DB820 002D8760 4E 80 04 21 */ bctrl
/* 802DB824 002D8764 4B FF FF A0 */ b lbl_802DB7C4
lbl_802DB828:
/* 802DB828 002D8768 80 7E 00 1C */ lwz r3, 0x1c(r30)
/* 802DB82C 002D876C 28 03 00 00 */ cmplwi r3, 0
/* 802DB830 002D8770 41 82 00 14 */ beq lbl_802DB844
/* 802DB834 002D8774 38 80 00 01 */ li r4, 1
/* 802DB838 002D8778 38 A0 00 00 */ li r5, 0
/* 802DB83C 002D877C 48 06 31 B9 */ bl OSSendMessage
/* 802DB840 002D8780 4B FF FF 84 */ b lbl_802DB7C4
lbl_802DB844:
/* 802DB844 002D8784 38 7E 00 28 */ addi r3, r30, 0x28
/* 802DB848 002D8788 38 80 00 01 */ li r4, 1
/* 802DB84C 002D878C 38 A0 00 00 */ li r5, 0
/* 802DB850 002D8790 48 06 31 A5 */ bl OSSendMessage
/* 802DB854 002D8794 4B FF FF 70 */ b lbl_802DB7C4
.global JKRDecomp_NS_prepareCommand
JKRDecomp_NS_prepareCommand:
/* 802DB858 002D8798 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802DB85C 002D879C 7C 08 02 A6 */ mflr r0
/* 802DB860 002D87A0 90 01 00 24 */ stw r0, 0x24(r1)
/* 802DB864 002D87A4 39 61 00 20 */ addi r11, r1, 0x20
/* 802DB868 002D87A8 48 08 69 6D */ bl _savegpr_27
/* 802DB86C 002D87AC 7C 7B 1B 78 */ mr r27, r3
/* 802DB870 002D87B0 7C 9C 23 78 */ mr r28, r4
/* 802DB874 002D87B4 7C BD 2B 78 */ mr r29, r5
/* 802DB878 002D87B8 7C DE 33 78 */ mr r30, r6
/* 802DB87C 002D87BC 7C FF 3B 78 */ mr r31, r7
/* 802DB880 002D87C0 38 60 00 4C */ li r3, 0x4c
/* 802DB884 002D87C4 80 8D 8D F0 */ lwz r4, lbl_80451370-_SDA_BASE_(r13)
/* 802DB888 002D87C8 38 A0 FF FC */ li r5, -4
/* 802DB88C 002D87CC 4B FF 34 0D */ bl __nw__FUlP7JKRHeapi
/* 802DB890 002D87D0 7C 64 1B 79 */ or. r4, r3, r3
/* 802DB894 002D87D4 41 82 00 0C */ beq lbl_802DB8A0
/* 802DB898 002D87D8 48 00 04 D9 */ bl JKRDecompCommand
/* 802DB89C 002D87DC 7C 64 1B 78 */ mr r4, r3
lbl_802DB8A0:
/* 802DB8A0 002D87E0 93 64 00 04 */ stw r27, 4(r4)
/* 802DB8A4 002D87E4 93 84 00 08 */ stw r28, 8(r4)
/* 802DB8A8 002D87E8 93 A4 00 0C */ stw r29, 0xc(r4)
/* 802DB8AC 002D87EC 93 C4 00 10 */ stw r30, 0x10(r4)
/* 802DB8B0 002D87F0 93 E4 00 14 */ stw r31, 0x14(r4)
/* 802DB8B4 002D87F4 7C 83 23 78 */ mr r3, r4
/* 802DB8B8 002D87F8 39 61 00 20 */ addi r11, r1, 0x20
/* 802DB8BC 002D87FC 48 08 69 65 */ bl _restgpr_27
/* 802DB8C0 002D8800 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802DB8C4 002D8804 7C 08 03 A6 */ mtlr r0
/* 802DB8C8 002D8808 38 21 00 20 */ addi r1, r1, 0x20
/* 802DB8CC 002D880C 4E 80 00 20 */ blr
.global JKRDecomp_NS_sendCommand
JKRDecomp_NS_sendCommand:
/* 802DB8D0 002D8810 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB8D4 002D8814 7C 08 02 A6 */ mflr r0
/* 802DB8D8 002D8818 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB8DC 002D881C 7C 64 1B 78 */ mr r4, r3
/* 802DB8E0 002D8820 3C 60 80 3D */ lis r3, lbl_803CC480@ha
/* 802DB8E4 002D8824 38 63 C4 80 */ addi r3, r3, lbl_803CC480@l
/* 802DB8E8 002D8828 38 A0 00 00 */ li r5, 0
/* 802DB8EC 002D882C 48 06 31 09 */ bl OSSendMessage
/* 802DB8F0 002D8830 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB8F4 002D8834 7C 08 03 A6 */ mtlr r0
/* 802DB8F8 002D8838 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB8FC 002D883C 4E 80 00 20 */ blr
.global JKRDecomp_NS_orderAsync
JKRDecomp_NS_orderAsync:
/* 802DB900 002D8840 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB904 002D8844 7C 08 02 A6 */ mflr r0
/* 802DB908 002D8848 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB90C 002D884C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB910 002D8850 4B FF FF 49 */ bl JKRDecomp_NS_prepareCommand
/* 802DB914 002D8854 7C 7F 1B 78 */ mr r31, r3
/* 802DB918 002D8858 4B FF FF B9 */ bl JKRDecomp_NS_sendCommand
/* 802DB91C 002D885C 7F E3 FB 78 */ mr r3, r31
/* 802DB920 002D8860 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB924 002D8864 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB928 002D8868 7C 08 03 A6 */ mtlr r0
/* 802DB92C 002D886C 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB930 002D8870 4E 80 00 20 */ blr
.global JKRDecomp_NS_sync
JKRDecomp_NS_sync:
/* 802DB934 002D8874 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB938 002D8878 7C 08 02 A6 */ mflr r0
/* 802DB93C 002D887C 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB940 002D8880 2C 04 00 00 */ cmpwi r4, 0
/* 802DB944 002D8884 40 82 00 1C */ bne lbl_802DB960
/* 802DB948 002D8888 38 63 00 28 */ addi r3, r3, 0x28
/* 802DB94C 002D888C 38 81 00 08 */ addi r4, r1, 8
/* 802DB950 002D8890 38 A0 00 01 */ li r5, 1
/* 802DB954 002D8894 48 06 31 69 */ bl OSReceiveMessage
/* 802DB958 002D8898 38 60 00 01 */ li r3, 1
/* 802DB95C 002D889C 48 00 00 1C */ b lbl_802DB978
lbl_802DB960:
/* 802DB960 002D88A0 38 63 00 28 */ addi r3, r3, 0x28
/* 802DB964 002D88A4 38 81 00 08 */ addi r4, r1, 8
/* 802DB968 002D88A8 38 A0 00 00 */ li r5, 0
/* 802DB96C 002D88AC 48 06 31 51 */ bl OSReceiveMessage
/* 802DB970 002D88B0 30 03 FF FF */ addic r0, r3, -1
/* 802DB974 002D88B4 7C 60 19 10 */ subfe r3, r0, r3
lbl_802DB978:
/* 802DB978 002D88B8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB97C 002D88BC 7C 08 03 A6 */ mtlr r0
/* 802DB980 002D88C0 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB984 002D88C4 4E 80 00 20 */ blr
.global JKRDecomp_NS_orderSync
JKRDecomp_NS_orderSync:
/* 802DB988 002D88C8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DB98C 002D88CC 7C 08 02 A6 */ mflr r0
/* 802DB990 002D88D0 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DB994 002D88D4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DB998 002D88D8 93 C1 00 08 */ stw r30, 8(r1)
/* 802DB99C 002D88DC 38 E0 00 00 */ li r7, 0
/* 802DB9A0 002D88E0 4B FF FF 61 */ bl JKRDecomp_NS_orderAsync
/* 802DB9A4 002D88E4 7C 7F 1B 78 */ mr r31, r3
/* 802DB9A8 002D88E8 38 80 00 00 */ li r4, 0
/* 802DB9AC 002D88EC 4B FF FF 89 */ bl JKRDecomp_NS_sync
/* 802DB9B0 002D88F0 7C 7E 1B 78 */ mr r30, r3
/* 802DB9B4 002D88F4 7F E3 FB 78 */ mr r3, r31
/* 802DB9B8 002D88F8 38 80 00 01 */ li r4, 1
/* 802DB9BC 002D88FC 48 00 04 05 */ bl JKRDecompCommand_NS_dtor
/* 802DB9C0 002D8900 7F C3 F3 78 */ mr r3, r30
/* 802DB9C4 002D8904 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DB9C8 002D8908 83 C1 00 08 */ lwz r30, 8(r1)
/* 802DB9CC 002D890C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DB9D0 002D8910 7C 08 03 A6 */ mtlr r0
/* 802DB9D4 002D8914 38 21 00 10 */ addi r1, r1, 0x10
/* 802DB9D8 002D8918 4E 80 00 20 */ blr
.global JKRDecomp_NS_decode
JKRDecomp_NS_decode:
/* 802DB9DC 002D891C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802DB9E0 002D8920 7C 08 02 A6 */ mflr r0
/* 802DB9E4 002D8924 90 01 00 24 */ stw r0, 0x24(r1)
/* 802DB9E8 002D8928 39 61 00 20 */ addi r11, r1, 0x20
/* 802DB9EC 002D892C 48 08 67 ED */ bl _savegpr_28
/* 802DB9F0 002D8930 7C 7C 1B 78 */ mr r28, r3
/* 802DB9F4 002D8934 7C 9D 23 78 */ mr r29, r4
/* 802DB9F8 002D8938 7C BE 2B 78 */ mr r30, r5
/* 802DB9FC 002D893C 7C DF 33 78 */ mr r31, r6
/* 802DBA00 002D8940 48 00 02 F9 */ bl JKRDecomp_NS_checkCompressed
/* 802DBA04 002D8944 2C 03 00 01 */ cmpwi r3, 1
/* 802DBA08 002D8948 40 82 00 1C */ bne lbl_802DBA24
/* 802DBA0C 002D894C 7F 83 E3 78 */ mr r3, r28
/* 802DBA10 002D8950 7F A4 EB 78 */ mr r4, r29
/* 802DBA14 002D8954 7F C5 F3 78 */ mr r5, r30
/* 802DBA18 002D8958 7F E6 FB 78 */ mr r6, r31
/* 802DBA1C 002D895C 48 00 00 3D */ bl JKRDecomp_NS_decodeSZP
/* 802DBA20 002D8960 48 00 00 20 */ b lbl_802DBA40
lbl_802DBA24:
/* 802DBA24 002D8964 2C 03 00 02 */ cmpwi r3, 2
/* 802DBA28 002D8968 40 82 00 18 */ bne lbl_802DBA40
/* 802DBA2C 002D896C 7F 83 E3 78 */ mr r3, r28
/* 802DBA30 002D8970 7F A4 EB 78 */ mr r4, r29
/* 802DBA34 002D8974 7F C5 F3 78 */ mr r5, r30
/* 802DBA38 002D8978 7F E6 FB 78 */ mr r6, r31
/* 802DBA3C 002D897C 48 00 01 D9 */ bl JKRDecomp_NS_decodeSZS
lbl_802DBA40:
/* 802DBA40 002D8980 39 61 00 20 */ addi r11, r1, 0x20
/* 802DBA44 002D8984 48 08 67 E1 */ bl _restgpr_28
/* 802DBA48 002D8988 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802DBA4C 002D898C 7C 08 03 A6 */ mtlr r0
/* 802DBA50 002D8990 38 21 00 20 */ addi r1, r1, 0x20
/* 802DBA54 002D8994 4E 80 00 20 */ blr
.global JKRDecomp_NS_decodeSZP
JKRDecomp_NS_decodeSZP:
/* 802DBA58 002D8998 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802DBA5C 002D899C 7C 08 02 A6 */ mflr r0
/* 802DBA60 002D89A0 90 01 00 24 */ stw r0, 0x24(r1)
/* 802DBA64 002D89A4 39 61 00 20 */ addi r11, r1, 0x20
/* 802DBA68 002D89A8 48 08 67 6D */ bl _savegpr_27
/* 802DBA6C 002D89AC 89 23 00 07 */ lbz r9, 7(r3)
/* 802DBA70 002D89B0 89 03 00 06 */ lbz r8, 6(r3)
/* 802DBA74 002D89B4 88 E3 00 04 */ lbz r7, 4(r3)
/* 802DBA78 002D89B8 88 03 00 05 */ lbz r0, 5(r3)
/* 802DBA7C 002D89BC 54 00 80 1E */ slwi r0, r0, 0x10
/* 802DBA80 002D89C0 50 E0 C0 0E */ rlwimi r0, r7, 0x18, 0, 7
/* 802DBA84 002D89C4 51 00 44 2E */ rlwimi r0, r8, 8, 0x10, 0x17
/* 802DBA88 002D89C8 7D 20 03 78 */ or r0, r9, r0
/* 802DBA8C 002D89CC 89 43 00 0B */ lbz r10, 0xb(r3)
/* 802DBA90 002D89D0 89 23 00 0A */ lbz r9, 0xa(r3)
/* 802DBA94 002D89D4 89 03 00 08 */ lbz r8, 8(r3)
/* 802DBA98 002D89D8 88 E3 00 09 */ lbz r7, 9(r3)
/* 802DBA9C 002D89DC 54 E7 80 1E */ slwi r7, r7, 0x10
/* 802DBAA0 002D89E0 51 07 C0 0E */ rlwimi r7, r8, 0x18, 0, 7
/* 802DBAA4 002D89E4 51 27 44 2E */ rlwimi r7, r9, 8, 0x10, 0x17
/* 802DBAA8 002D89E8 7D 49 3B 78 */ or r9, r10, r7
/* 802DBAAC 002D89EC 89 83 00 0F */ lbz r12, 0xf(r3)
/* 802DBAB0 002D89F0 89 43 00 0E */ lbz r10, 0xe(r3)
/* 802DBAB4 002D89F4 89 03 00 0C */ lbz r8, 0xc(r3)
/* 802DBAB8 002D89F8 88 E3 00 0D */ lbz r7, 0xd(r3)
/* 802DBABC 002D89FC 54 E7 80 1E */ slwi r7, r7, 0x10
/* 802DBAC0 002D8A00 51 07 C0 0E */ rlwimi r7, r8, 0x18, 0, 7
/* 802DBAC4 002D8A04 51 47 44 2E */ rlwimi r7, r10, 8, 0x10, 0x17
/* 802DBAC8 002D8A08 7D 8C 3B 78 */ or r12, r12, r7
/* 802DBACC 002D8A0C 39 00 00 00 */ li r8, 0
/* 802DBAD0 002D8A10 39 40 00 00 */ li r10, 0
/* 802DBAD4 002D8A14 38 E0 00 10 */ li r7, 0x10
/* 802DBAD8 002D8A18 28 05 00 00 */ cmplwi r5, 0
/* 802DBADC 002D8A1C 41 82 01 20 */ beq lbl_802DBBFC
/* 802DBAE0 002D8A20 7C 06 00 40 */ cmplw r6, r0
/* 802DBAE4 002D8A24 41 81 01 18 */ bgt lbl_802DBBFC
/* 802DBAE8 002D8A28 7C 9F 23 78 */ mr r31, r4
/* 802DBAEC 002D8A2C 7D 83 62 14 */ add r12, r3, r12
lbl_802DBAF0:
/* 802DBAF0 002D8A30 28 0A 00 00 */ cmplwi r10, 0
/* 802DBAF4 002D8A34 40 82 00 30 */ bne lbl_802DBB24
/* 802DBAF8 002D8A38 7D 43 3A 14 */ add r10, r3, r7
/* 802DBAFC 002D8A3C 8B CA 00 03 */ lbz r30, 3(r10)
/* 802DBB00 002D8A40 8B AA 00 02 */ lbz r29, 2(r10)
/* 802DBB04 002D8A44 89 6A 00 00 */ lbz r11, 0(r10)
/* 802DBB08 002D8A48 89 4A 00 01 */ lbz r10, 1(r10)
/* 802DBB0C 002D8A4C 55 4A 80 1E */ slwi r10, r10, 0x10
/* 802DBB10 002D8A50 51 6A C0 0E */ rlwimi r10, r11, 0x18, 0, 7
/* 802DBB14 002D8A54 53 AA 44 2E */ rlwimi r10, r29, 8, 0x10, 0x17
/* 802DBB18 002D8A58 7F CB 53 78 */ or r11, r30, r10
/* 802DBB1C 002D8A5C 39 40 00 20 */ li r10, 0x20
/* 802DBB20 002D8A60 38 E7 00 04 */ addi r7, r7, 4
lbl_802DBB24:
/* 802DBB24 002D8A64 55 7D 00 01 */ rlwinm. r29, r11, 0, 0, 0
/* 802DBB28 002D8A68 41 82 00 34 */ beq lbl_802DBB5C
/* 802DBB2C 002D8A6C 28 06 00 00 */ cmplwi r6, 0
/* 802DBB30 002D8A70 40 82 00 18 */ bne lbl_802DBB48
/* 802DBB34 002D8A74 8B AC 00 00 */ lbz r29, 0(r12)
/* 802DBB38 002D8A78 9B BF 00 00 */ stb r29, 0(r31)
/* 802DBB3C 002D8A7C 34 A5 FF FF */ addic. r5, r5, -1
/* 802DBB40 002D8A80 40 82 00 0C */ bne lbl_802DBB4C
/* 802DBB44 002D8A84 48 00 00 B8 */ b lbl_802DBBFC
lbl_802DBB48:
/* 802DBB48 002D8A88 38 C6 FF FF */ addi r6, r6, -1
lbl_802DBB4C:
/* 802DBB4C 002D8A8C 39 08 00 01 */ addi r8, r8, 1
/* 802DBB50 002D8A90 3B FF 00 01 */ addi r31, r31, 1
/* 802DBB54 002D8A94 39 8C 00 01 */ addi r12, r12, 1
/* 802DBB58 002D8A98 48 00 00 94 */ b lbl_802DBBEC
lbl_802DBB5C:
/* 802DBB5C 002D8A9C 7F A3 4A 14 */ add r29, r3, r9
/* 802DBB60 002D8AA0 8B DD 00 00 */ lbz r30, 0(r29)
/* 802DBB64 002D8AA4 8B 9D 00 01 */ lbz r28, 1(r29)
/* 802DBB68 002D8AA8 53 DC 44 2E */ rlwimi r28, r30, 8, 0x10, 0x17
/* 802DBB6C 002D8AAC 57 9D 05 3E */ clrlwi r29, r28, 0x14
/* 802DBB70 002D8AB0 7F 7D 40 50 */ subf r27, r29, r8
/* 802DBB74 002D8AB4 7F 9C 66 71 */ srawi. r28, r28, 0xc
/* 802DBB78 002D8AB8 39 29 00 02 */ addi r9, r9, 2
/* 802DBB7C 002D8ABC 40 82 00 14 */ bne lbl_802DBB90
/* 802DBB80 002D8AC0 8B AC 00 00 */ lbz r29, 0(r12)
/* 802DBB84 002D8AC4 3B 9D 00 12 */ addi r28, r29, 0x12
/* 802DBB88 002D8AC8 39 8C 00 01 */ addi r12, r12, 1
/* 802DBB8C 002D8ACC 48 00 00 08 */ b lbl_802DBB94
lbl_802DBB90:
/* 802DBB90 002D8AD0 3B 9C 00 02 */ addi r28, r28, 2
lbl_802DBB94:
/* 802DBB94 002D8AD4 7F A8 00 50 */ subf r29, r8, r0
/* 802DBB98 002D8AD8 7C 1C E8 00 */ cmpw r28, r29
/* 802DBB9C 002D8ADC 40 81 00 08 */ ble lbl_802DBBA4
/* 802DBBA0 002D8AE0 7F BC EB 78 */ mr r28, r29
lbl_802DBBA4:
/* 802DBBA4 002D8AE4 7F C4 42 14 */ add r30, r4, r8
/* 802DBBA8 002D8AE8 7F 89 03 A6 */ mtctr r28
/* 802DBBAC 002D8AEC 2C 1C 00 00 */ cmpwi r28, 0
/* 802DBBB0 002D8AF0 40 81 00 3C */ ble lbl_802DBBEC
lbl_802DBBB4:
/* 802DBBB4 002D8AF4 28 06 00 00 */ cmplwi r6, 0
/* 802DBBB8 002D8AF8 40 82 00 1C */ bne lbl_802DBBD4
/* 802DBBBC 002D8AFC 3B BB FF FF */ addi r29, r27, -1
/* 802DBBC0 002D8B00 7F A4 E8 AE */ lbzx r29, r4, r29
/* 802DBBC4 002D8B04 9B BE 00 00 */ stb r29, 0(r30)
/* 802DBBC8 002D8B08 34 A5 FF FF */ addic. r5, r5, -1
/* 802DBBCC 002D8B0C 40 82 00 0C */ bne lbl_802DBBD8
/* 802DBBD0 002D8B10 48 00 00 2C */ b lbl_802DBBFC
lbl_802DBBD4:
/* 802DBBD4 002D8B14 38 C6 FF FF */ addi r6, r6, -1
lbl_802DBBD8:
/* 802DBBD8 002D8B18 39 08 00 01 */ addi r8, r8, 1
/* 802DBBDC 002D8B1C 3B FF 00 01 */ addi r31, r31, 1
/* 802DBBE0 002D8B20 3B DE 00 01 */ addi r30, r30, 1
/* 802DBBE4 002D8B24 3B 7B 00 01 */ addi r27, r27, 1
/* 802DBBE8 002D8B28 42 00 FF CC */ bdnz lbl_802DBBB4
lbl_802DBBEC:
/* 802DBBEC 002D8B2C 55 6B 08 3C */ slwi r11, r11, 1
/* 802DBBF0 002D8B30 7C 08 00 00 */ cmpw r8, r0
/* 802DBBF4 002D8B34 39 4A FF FF */ addi r10, r10, -1
/* 802DBBF8 002D8B38 41 80 FE F8 */ blt lbl_802DBAF0
lbl_802DBBFC:
/* 802DBBFC 002D8B3C 39 61 00 20 */ addi r11, r1, 0x20
/* 802DBC00 002D8B40 48 08 66 21 */ bl _restgpr_27
/* 802DBC04 002D8B44 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802DBC08 002D8B48 7C 08 03 A6 */ mtlr r0
/* 802DBC0C 002D8B4C 38 21 00 20 */ addi r1, r1, 0x20
/* 802DBC10 002D8B50 4E 80 00 20 */ blr
.global JKRDecomp_NS_decodeSZS
JKRDecomp_NS_decodeSZS:
/* 802DBC14 002D8B54 39 20 00 00 */ li r9, 0
/* 802DBC18 002D8B58 80 03 00 04 */ lwz r0, 4(r3)
/* 802DBC1C 002D8B5C 7C 04 02 14 */ add r0, r4, r0
/* 802DBC20 002D8B60 7C E6 00 50 */ subf r7, r6, r0
/* 802DBC24 002D8B64 28 05 00 00 */ cmplwi r5, 0
/* 802DBC28 002D8B68 4D 82 00 20 */ beqlr
/* 802DBC2C 002D8B6C 80 03 00 00 */ lwz r0, 0(r3)
/* 802DBC30 002D8B70 7C 06 00 40 */ cmplw r6, r0
/* 802DBC34 002D8B74 4D 81 00 20 */ bgtlr
/* 802DBC38 002D8B78 39 63 00 10 */ addi r11, r3, 0x10
lbl_802DBC3C:
/* 802DBC3C 002D8B7C 2C 09 00 00 */ cmpwi r9, 0
/* 802DBC40 002D8B80 40 82 00 10 */ bne lbl_802DBC50
/* 802DBC44 002D8B84 89 4B 00 00 */ lbz r10, 0(r11)
/* 802DBC48 002D8B88 39 20 00 08 */ li r9, 8
/* 802DBC4C 002D8B8C 39 6B 00 01 */ addi r11, r11, 1
lbl_802DBC50:
/* 802DBC50 002D8B90 55 40 06 31 */ rlwinm. r0, r10, 0, 0x18, 0x18
/* 802DBC54 002D8B94 41 82 00 30 */ beq lbl_802DBC84
/* 802DBC58 002D8B98 28 06 00 00 */ cmplwi r6, 0
/* 802DBC5C 002D8B9C 40 82 00 1C */ bne lbl_802DBC78
/* 802DBC60 002D8BA0 88 0B 00 00 */ lbz r0, 0(r11)
/* 802DBC64 002D8BA4 98 04 00 00 */ stb r0, 0(r4)
/* 802DBC68 002D8BA8 34 A5 FF FF */ addic. r5, r5, -1
/* 802DBC6C 002D8BAC 38 84 00 01 */ addi r4, r4, 1
/* 802DBC70 002D8BB0 40 82 00 0C */ bne lbl_802DBC7C
/* 802DBC74 002D8BB4 4E 80 00 20 */ blr
lbl_802DBC78:
/* 802DBC78 002D8BB8 38 C6 FF FF */ addi r6, r6, -1
lbl_802DBC7C:
/* 802DBC7C 002D8BBC 39 6B 00 01 */ addi r11, r11, 1
/* 802DBC80 002D8BC0 48 00 00 64 */ b lbl_802DBCE4
lbl_802DBC84:
/* 802DBC84 002D8BC4 88 0B 00 01 */ lbz r0, 1(r11)
/* 802DBC88 002D8BC8 88 6B 00 00 */ lbz r3, 0(r11)
/* 802DBC8C 002D8BCC 50 60 45 2E */ rlwimi r0, r3, 8, 0x14, 0x17
/* 802DBC90 002D8BD0 7C 63 26 71 */ srawi. r3, r3, 4
/* 802DBC94 002D8BD4 7D 00 20 50 */ subf r8, r0, r4
/* 802DBC98 002D8BD8 39 6B 00 02 */ addi r11, r11, 2
/* 802DBC9C 002D8BDC 40 82 00 14 */ bne lbl_802DBCB0
/* 802DBCA0 002D8BE0 88 6B 00 00 */ lbz r3, 0(r11)
/* 802DBCA4 002D8BE4 38 63 00 12 */ addi r3, r3, 0x12
/* 802DBCA8 002D8BE8 39 6B 00 01 */ addi r11, r11, 1
/* 802DBCAC 002D8BEC 48 00 00 08 */ b lbl_802DBCB4
lbl_802DBCB0:
/* 802DBCB0 002D8BF0 38 63 00 02 */ addi r3, r3, 2
lbl_802DBCB4:
/* 802DBCB4 002D8BF4 28 06 00 00 */ cmplwi r6, 0
/* 802DBCB8 002D8BF8 40 82 00 1C */ bne lbl_802DBCD4
/* 802DBCBC 002D8BFC 88 08 FF FF */ lbz r0, -1(r8)
/* 802DBCC0 002D8C00 98 04 00 00 */ stb r0, 0(r4)
/* 802DBCC4 002D8C04 34 A5 FF FF */ addic. r5, r5, -1
/* 802DBCC8 002D8C08 38 84 00 01 */ addi r4, r4, 1
/* 802DBCCC 002D8C0C 40 82 00 0C */ bne lbl_802DBCD8
/* 802DBCD0 002D8C10 4E 80 00 20 */ blr
lbl_802DBCD4:
/* 802DBCD4 002D8C14 38 C6 FF FF */ addi r6, r6, -1
lbl_802DBCD8:
/* 802DBCD8 002D8C18 34 63 FF FF */ addic. r3, r3, -1
/* 802DBCDC 002D8C1C 39 08 00 01 */ addi r8, r8, 1
/* 802DBCE0 002D8C20 40 82 FF D4 */ bne lbl_802DBCB4
lbl_802DBCE4:
/* 802DBCE4 002D8C24 55 4A 08 3C */ slwi r10, r10, 1
/* 802DBCE8 002D8C28 7C 04 38 40 */ cmplw r4, r7
/* 802DBCEC 002D8C2C 39 29 FF FF */ addi r9, r9, -1
/* 802DBCF0 002D8C30 40 82 FF 4C */ bne lbl_802DBC3C
/* 802DBCF4 002D8C34 4E 80 00 20 */ blr
.global JKRDecomp_NS_checkCompressed
JKRDecomp_NS_checkCompressed:
/* 802DBCF8 002D8C38 88 83 00 00 */ lbz r4, 0(r3)
/* 802DBCFC 002D8C3C 2C 04 00 59 */ cmpwi r4, 0x59
/* 802DBD00 002D8C40 40 82 00 40 */ bne lbl_802DBD40
/* 802DBD04 002D8C44 88 03 00 01 */ lbz r0, 1(r3)
/* 802DBD08 002D8C48 2C 00 00 61 */ cmpwi r0, 0x61
/* 802DBD0C 002D8C4C 40 82 00 34 */ bne lbl_802DBD40
/* 802DBD10 002D8C50 88 03 00 03 */ lbz r0, 3(r3)
/* 802DBD14 002D8C54 2C 00 00 30 */ cmpwi r0, 0x30
/* 802DBD18 002D8C58 40 82 00 28 */ bne lbl_802DBD40
/* 802DBD1C 002D8C5C 88 03 00 02 */ lbz r0, 2(r3)
/* 802DBD20 002D8C60 2C 00 00 79 */ cmpwi r0, 0x79
/* 802DBD24 002D8C64 40 82 00 0C */ bne lbl_802DBD30
/* 802DBD28 002D8C68 38 60 00 01 */ li r3, 1
/* 802DBD2C 002D8C6C 4E 80 00 20 */ blr
lbl_802DBD30:
/* 802DBD30 002D8C70 2C 00 00 7A */ cmpwi r0, 0x7a
/* 802DBD34 002D8C74 40 82 00 0C */ bne lbl_802DBD40
/* 802DBD38 002D8C78 38 60 00 02 */ li r3, 2
/* 802DBD3C 002D8C7C 4E 80 00 20 */ blr
lbl_802DBD40:
/* 802DBD40 002D8C80 2C 04 00 41 */ cmpwi r4, 0x41
/* 802DBD44 002D8C84 40 82 00 24 */ bne lbl_802DBD68
/* 802DBD48 002D8C88 88 03 00 01 */ lbz r0, 1(r3)
/* 802DBD4C 002D8C8C 2C 00 00 53 */ cmpwi r0, 0x53
/* 802DBD50 002D8C90 40 82 00 18 */ bne lbl_802DBD68
/* 802DBD54 002D8C94 88 03 00 02 */ lbz r0, 2(r3)
/* 802DBD58 002D8C98 2C 00 00 52 */ cmpwi r0, 0x52
/* 802DBD5C 002D8C9C 40 82 00 0C */ bne lbl_802DBD68
/* 802DBD60 002D8CA0 38 60 00 03 */ li r3, 3
/* 802DBD64 002D8CA4 4E 80 00 20 */ blr
lbl_802DBD68:
/* 802DBD68 002D8CA8 38 60 00 00 */ li r3, 0
/* 802DBD6C 002D8CAC 4E 80 00 20 */ blr
.global JKRDecompCommand
JKRDecompCommand:
/* 802DBD70 002D8CB0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DBD74 002D8CB4 7C 08 02 A6 */ mflr r0
/* 802DBD78 002D8CB8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DBD7C 002D8CBC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DBD80 002D8CC0 7C 7F 1B 78 */ mr r31, r3
/* 802DBD84 002D8CC4 38 7F 00 28 */ addi r3, r31, 0x28
/* 802DBD88 002D8CC8 38 9F 00 48 */ addi r4, r31, 0x48
/* 802DBD8C 002D8CCC 38 A0 00 01 */ li r5, 1
/* 802DBD90 002D8CD0 48 06 2C 05 */ bl OSInitMessageQueue
/* 802DBD94 002D8CD4 38 00 00 00 */ li r0, 0
/* 802DBD98 002D8CD8 90 1F 00 14 */ stw r0, 0x14(r31)
/* 802DBD9C 002D8CDC 90 1F 00 1C */ stw r0, 0x1c(r31)
/* 802DBDA0 002D8CE0 93 FF 00 18 */ stw r31, 0x18(r31)
/* 802DBDA4 002D8CE4 90 1F 00 20 */ stw r0, 0x20(r31)
/* 802DBDA8 002D8CE8 7F E3 FB 78 */ mr r3, r31
/* 802DBDAC 002D8CEC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DBDB0 002D8CF0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DBDB4 002D8CF4 7C 08 03 A6 */ mtlr r0
/* 802DBDB8 002D8CF8 38 21 00 10 */ addi r1, r1, 0x10
/* 802DBDBC 002D8CFC 4E 80 00 20 */ blr
.global JKRDecompCommand_NS_dtor
JKRDecompCommand_NS_dtor:
/* 802DBDC0 002D8D00 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DBDC4 002D8D04 7C 08 02 A6 */ mflr r0
/* 802DBDC8 002D8D08 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DBDCC 002D8D0C 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DBDD0 002D8D10 7C 7F 1B 79 */ or. r31, r3, r3
/* 802DBDD4 002D8D14 41 82 00 10 */ beq lbl_802DBDE4
/* 802DBDD8 002D8D18 7C 80 07 35 */ extsh. r0, r4
/* 802DBDDC 002D8D1C 40 81 00 08 */ ble lbl_802DBDE4
/* 802DBDE0 002D8D20 4B FF 2F 5D */ bl __dl__FPv
lbl_802DBDE4:
/* 802DBDE4 002D8D24 7F E3 FB 78 */ mr r3, r31
/* 802DBDE8 002D8D28 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DBDEC 002D8D2C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DBDF0 002D8D30 7C 08 03 A6 */ mtlr r0
/* 802DBDF4 002D8D34 38 21 00 10 */ addi r1, r1, 0x10
/* 802DBDF8 002D8D38 4E 80 00 20 */ blr