binary OK (#99)

Co-authored-by: Pheenoh <pheenoh@gmail.com>
This commit is contained in:
notyourav 2021-01-26 14:42:28 -08:00 committed by GitHub
parent ce0d0c3521
commit b8d0da505d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 241 additions and 163 deletions

View File

@ -1,137 +0,0 @@
.include "macros.inc"
.section .text, "ax" # 802dc864
.global JGadget_NS_binary_NS_parseVariableUInt_16_32_following
JGadget_NS_binary_NS_parseVariableUInt_16_32_following:
/* 802DC864 002D97A4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DC868 002D97A8 28 06 00 00 */ cmplwi r6, 0
/* 802DC86C 002D97AC 40 82 00 08 */ bne lbl_802DC874
/* 802DC870 002D97B0 38 C1 00 08 */ addi r6, r1, 8
lbl_802DC874:
/* 802DC874 002D97B4 A0 E3 00 00 */ lhz r7, 0(r3)
/* 802DC878 002D97B8 54 E0 04 21 */ rlwinm. r0, r7, 0, 0x10, 0x10
/* 802DC87C 002D97BC 40 82 00 20 */ bne lbl_802DC89C
/* 802DC880 002D97C0 38 00 00 10 */ li r0, 0x10
/* 802DC884 002D97C4 90 06 00 00 */ stw r0, 0(r6)
/* 802DC888 002D97C8 90 E4 00 00 */ stw r7, 0(r4)
/* 802DC88C 002D97CC A0 03 00 02 */ lhz r0, 2(r3)
/* 802DC890 002D97D0 90 05 00 00 */ stw r0, 0(r5)
/* 802DC894 002D97D4 38 63 00 04 */ addi r3, r3, 4
/* 802DC898 002D97D8 48 00 00 28 */ b lbl_802DC8C0
lbl_802DC89C:
/* 802DC89C 002D97DC 38 00 00 20 */ li r0, 0x20
/* 802DC8A0 002D97E0 90 06 00 00 */ stw r0, 0(r6)
/* 802DC8A4 002D97E4 54 E7 80 5E */ rlwinm r7, r7, 0x10, 1, 0xf
/* 802DC8A8 002D97E8 A0 03 00 02 */ lhz r0, 2(r3)
/* 802DC8AC 002D97EC 7C E7 03 78 */ or r7, r7, r0
/* 802DC8B0 002D97F0 90 E4 00 00 */ stw r7, 0(r4)
/* 802DC8B4 002D97F4 80 03 00 04 */ lwz r0, 4(r3)
/* 802DC8B8 002D97F8 90 05 00 00 */ stw r0, 0(r5)
/* 802DC8BC 002D97FC 38 63 00 08 */ addi r3, r3, 8
lbl_802DC8C0:
/* 802DC8C0 002D9800 38 21 00 10 */ addi r1, r1, 0x10
/* 802DC8C4 002D9804 4E 80 00 20 */ blr
.global __dt__Q37JGadget6binary19TParse_header_blockFv
__dt__Q37JGadget6binary19TParse_header_blockFv:
/* 802DC8C8 002D9808 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DC8CC 002D980C 7C 08 02 A6 */ mflr r0
/* 802DC8D0 002D9810 90 01 00 14 */ stw r0, 0x14(r1)
/* 802DC8D4 002D9814 93 E1 00 0C */ stw r31, 0xc(r1)
/* 802DC8D8 002D9818 7C 7F 1B 79 */ or. r31, r3, r3
/* 802DC8DC 002D981C 41 82 00 1C */ beq lbl_802DC8F8
/* 802DC8E0 002D9820 3C A0 80 3C */ lis r5, lbl_803C488C@ha
/* 802DC8E4 002D9824 38 05 48 8C */ addi r0, r5, lbl_803C488C@l
/* 802DC8E8 002D9828 90 1F 00 00 */ stw r0, 0(r31)
/* 802DC8EC 002D982C 7C 80 07 35 */ extsh. r0, r4
/* 802DC8F0 002D9830 40 81 00 08 */ ble lbl_802DC8F8
/* 802DC8F4 002D9834 4B FF 24 49 */ bl __dl__FPv
lbl_802DC8F8:
/* 802DC8F8 002D9838 7F E3 FB 78 */ mr r3, r31
/* 802DC8FC 002D983C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 802DC900 002D9840 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802DC904 002D9844 7C 08 03 A6 */ mtlr r0
/* 802DC908 002D9848 38 21 00 10 */ addi r1, r1, 0x10
/* 802DC90C 002D984C 4E 80 00 20 */ blr
.global JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
JGadget_NS_binary_NS_TParse_header_block_NS_parse_next:
/* 802DC910 002D9850 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 802DC914 002D9854 7C 08 02 A6 */ mflr r0
/* 802DC918 002D9858 90 01 00 34 */ stw r0, 0x34(r1)
/* 802DC91C 002D985C 39 61 00 30 */ addi r11, r1, 0x30
/* 802DC920 002D9860 48 08 58 B1 */ bl _savegpr_26
/* 802DC924 002D9864 7C 7A 1B 78 */ mr r26, r3
/* 802DC928 002D9868 7C 9B 23 79 */ or. r27, r4, r4
/* 802DC92C 002D986C 7C BC 2B 78 */ mr r28, r5
/* 802DC930 002D9870 41 82 00 10 */ beq lbl_802DC940
/* 802DC934 002D9874 80 1B 00 00 */ lwz r0, 0(r27)
/* 802DC938 002D9878 28 00 00 00 */ cmplwi r0, 0
/* 802DC93C 002D987C 40 82 00 0C */ bne lbl_802DC948
lbl_802DC940:
/* 802DC940 002D9880 38 60 00 00 */ li r3, 0
/* 802DC944 002D9884 48 00 00 C0 */ b lbl_802DCA04
lbl_802DC948:
/* 802DC948 002D9888 3B E0 00 00 */ li r31, 0
/* 802DC94C 002D988C 38 A1 00 0C */ addi r5, r1, 0xc
/* 802DC950 002D9890 7F 86 E3 78 */ mr r6, r28
/* 802DC954 002D9894 81 83 00 00 */ lwz r12, 0(r3)
/* 802DC958 002D9898 81 8C 00 0C */ lwz r12, 0xc(r12)
/* 802DC95C 002D989C 7D 89 03 A6 */ mtctr r12
/* 802DC960 002D98A0 4E 80 04 21 */ bctrl
/* 802DC964 002D98A4 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802DC968 002D98A8 41 82 00 08 */ beq lbl_802DC970
/* 802DC96C 002D98AC 3B E0 00 01 */ li r31, 1
lbl_802DC970:
/* 802DC970 002D98B0 7F FD FB 78 */ mr r29, r31
/* 802DC974 002D98B4 57 80 07 FF */ clrlwi. r0, r28, 0x1f
/* 802DC978 002D98B8 40 82 00 14 */ bne lbl_802DC98C
/* 802DC97C 002D98BC 57 E0 06 3F */ clrlwi. r0, r31, 0x18
/* 802DC980 002D98C0 40 82 00 0C */ bne lbl_802DC98C
/* 802DC984 002D98C4 7F E3 FB 78 */ mr r3, r31
/* 802DC988 002D98C8 48 00 00 7C */ b lbl_802DCA04
lbl_802DC98C:
/* 802DC98C 002D98CC 57 9E 07 BC */ rlwinm r30, r28, 0, 0x1e, 0x1e
/* 802DC990 002D98D0 48 00 00 64 */ b lbl_802DC9F4
lbl_802DC994:
/* 802DC994 002D98D4 3B E0 00 00 */ li r31, 0
/* 802DC998 002D98D8 7F 43 D3 78 */ mr r3, r26
/* 802DC99C 002D98DC 7F 64 DB 78 */ mr r4, r27
/* 802DC9A0 002D98E0 38 A1 00 08 */ addi r5, r1, 8
/* 802DC9A4 002D98E4 7F 86 E3 78 */ mr r6, r28
/* 802DC9A8 002D98E8 81 9A 00 00 */ lwz r12, 0(r26)
/* 802DC9AC 002D98EC 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 802DC9B0 002D98F0 7D 89 03 A6 */ mtctr r12
/* 802DC9B4 002D98F4 4E 80 04 21 */ bctrl
/* 802DC9B8 002D98F8 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802DC9BC 002D98FC 41 82 00 10 */ beq lbl_802DC9CC
/* 802DC9C0 002D9900 57 A0 06 3F */ clrlwi. r0, r29, 0x18
/* 802DC9C4 002D9904 41 82 00 08 */ beq lbl_802DC9CC
/* 802DC9C8 002D9908 3B E0 00 01 */ li r31, 1
lbl_802DC9CC:
/* 802DC9CC 002D990C 7F FD FB 78 */ mr r29, r31
/* 802DC9D0 002D9910 28 1E 00 00 */ cmplwi r30, 0
/* 802DC9D4 002D9914 40 82 00 14 */ bne lbl_802DC9E8
/* 802DC9D8 002D9918 57 E0 06 3F */ clrlwi. r0, r31, 0x18
/* 802DC9DC 002D991C 40 82 00 0C */ bne lbl_802DC9E8
/* 802DC9E0 002D9920 7F E3 FB 78 */ mr r3, r31
/* 802DC9E4 002D9924 48 00 00 20 */ b lbl_802DCA04
lbl_802DC9E8:
/* 802DC9E8 002D9928 80 61 00 0C */ lwz r3, 0xc(r1)
/* 802DC9EC 002D992C 38 03 FF FF */ addi r0, r3, -1
/* 802DC9F0 002D9930 90 01 00 0C */ stw r0, 0xc(r1)
lbl_802DC9F4:
/* 802DC9F4 002D9934 80 01 00 0C */ lwz r0, 0xc(r1)
/* 802DC9F8 002D9938 28 00 00 00 */ cmplwi r0, 0
/* 802DC9FC 002D993C 40 82 FF 98 */ bne lbl_802DC994
/* 802DCA00 002D9940 7F A3 EB 78 */ mr r3, r29
lbl_802DCA04:
/* 802DCA04 002D9944 39 61 00 30 */ addi r11, r1, 0x30
/* 802DCA08 002D9948 48 08 58 15 */ bl _restgpr_26
/* 802DCA0C 002D994C 80 01 00 34 */ lwz r0, 0x34(r1)
/* 802DCA10 002D9950 7C 08 03 A6 */ mtlr r0
/* 802DCA14 002D9954 38 21 00 30 */ addi r1, r1, 0x30
/* 802DCA18 002D9958 4E 80 00 20 */ blr

View File

@ -13,7 +13,7 @@ JStudio_NS_fvb_NS_data_NS_TParse_TParagraph_NS_getData:
/* 802850C0 00282000 80 63 00 00 */ lwz r3, 0(r3)
/* 802850C4 00282004 38 BF 00 04 */ addi r5, r31, 4
/* 802850C8 00282008 38 C0 00 00 */ li r6, 0
/* 802850CC 0028200C 48 05 77 99 */ bl JGadget_NS_binary_NS_parseVariableUInt_16_32_following
/* 802850CC 0028200C 48 05 77 99 */ bl parseVariableUInt_16_32_following__Q27JGadget6binaryFPCvPUlPUlPQ37JGadget6binary5TEBit
/* 802850D0 00282010 80 9F 00 00 */ lwz r4, 0(r31)
/* 802850D4 00282014 28 04 00 00 */ cmplwi r4, 0
/* 802850D8 00282018 40 82 00 14 */ bne lbl_802850EC

View File

@ -547,7 +547,7 @@ lbl_8028588C:
/* 8028589C 002827DC 38 61 00 0C */ addi r3, r1, 0xc
/* 802858A0 002827E0 38 81 00 08 */ addi r4, r1, 8
/* 802858A4 002827E4 7F C5 F3 78 */ mr r5, r30
/* 802858A8 002827E8 48 05 70 69 */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 802858A8 002827E8 48 05 70 69 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
/* 802858AC 002827EC 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802858B0 002827F0 40 82 00 18 */ bne lbl_802858C8
/* 802858B4 002827F4 38 61 00 0C */ addi r3, r1, 0xc
@ -599,7 +599,7 @@ lbl_8028593C:
/* 8028594C 0028288C 38 61 00 0C */ addi r3, r1, 0xc
/* 80285950 00282890 38 81 00 08 */ addi r4, r1, 8
/* 80285954 00282894 7F A5 EB 78 */ mr r5, r29
/* 80285958 00282898 48 05 6F B9 */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 80285958 00282898 48 05 6F B9 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
/* 8028595C 0028289C 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80285960 002828A0 40 82 00 18 */ bne lbl_80285978
/* 80285964 002828A4 38 61 00 0C */ addi r3, r1, 0xc

View File

@ -37,7 +37,7 @@ JStudio_NS_stb_NS_data_NS_TParse_TParagraph_NS_getData:
/* 80289A20 00286960 38 81 00 08 */ addi r4, r1, 8
/* 80289A24 00286964 7F E5 FB 78 */ mr r5, r31
/* 80289A28 00286968 38 C0 00 00 */ li r6, 0
/* 80289A2C 0028696C 48 05 2E 39 */ bl JGadget_NS_binary_NS_parseVariableUInt_16_32_following
/* 80289A2C 0028696C 48 05 2E 39 */ bl parseVariableUInt_16_32_following__Q27JGadget6binaryFPCvPUlPUlPQ37JGadget6binary5TEBit
/* 80289A30 00286970 80 01 00 08 */ lwz r0, 8(r1)
/* 80289A34 00286974 90 1F 00 04 */ stw r0, 4(r31)
/* 80289A38 00286978 80 01 00 08 */ lwz r0, 8(r1)

View File

@ -2135,7 +2135,7 @@ dDemo_c_NS_start:
/* 80039BAC 00036AEC 38 61 00 0C */ addi r3, r1, 0xc
/* 80039BB0 00036AF0 38 81 00 08 */ addi r4, r1, 8
/* 80039BB4 00036AF4 38 A0 00 00 */ li r5, 0
/* 80039BB8 00036AF8 48 2A 2D 59 */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 80039BB8 00036AF8 48 2A 2D 59 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
/* 80039BBC 00036AFC 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 80039BC0 00036B00 40 82 00 2C */ bne lbl_80039BEC
/* 80039BC4 00036B04 3C 60 80 38 */ lis r3, lbl_803797F8@ha

View File

@ -689,7 +689,7 @@ lbl_8023346C:
/* 80233478 002303B8 80 7E 01 24 */ lwz r3, 0x124(r30)
/* 8023347C 002303BC 38 81 00 08 */ addi r4, r1, 8
/* 80233480 002303C0 38 A0 00 00 */ li r5, 0
/* 80233484 002303C4 48 0A 94 8D */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 80233484 002303C4 48 0A 94 8D */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
/* 80233488 002303C8 80 7E 01 14 */ lwz r3, 0x114(r30)
/* 8023348C 002303CC 48 07 41 49 */ bl JMessage_NS_TControl_NS_reset
/* 80233490 002303D0 80 7E 01 14 */ lwz r3, 0x114(r30)
@ -4713,7 +4713,7 @@ lbl_80236D9C:
/* 80236DB0 00233CF0 80 7E 01 24 */ lwz r3, 0x124(r30)
/* 80236DB4 00233CF4 38 81 00 08 */ addi r4, r1, 8
/* 80236DB8 00233CF8 38 A0 00 80 */ li r5, 0x80
/* 80236DBC 00233CFC 48 0A 5B 55 */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 80236DBC 00233CFC 48 0A 5B 55 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
lbl_80236DC0:
/* 80236DC0 00233D00 B3 FE 01 6C */ sth r31, 0x16c(r30)
lbl_80236DC4:

View File

@ -82,7 +82,7 @@ lbl_80249494:
/* 802494C4 00246404 80 7F 00 18 */ lwz r3, 0x18(r31)
/* 802494C8 00246408 38 81 00 08 */ addi r4, r1, 8
/* 802494CC 0024640C 38 A0 00 00 */ li r5, 0
/* 802494D0 00246410 48 09 34 41 */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 802494D0 00246410 48 09 34 41 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
/* 802494D4 00246414 80 7F 00 08 */ lwz r3, 8(r31)
/* 802494D8 00246418 48 05 E0 FD */ bl JMessage_NS_TControl_NS_reset
/* 802494DC 0024641C 80 7F 00 08 */ lwz r3, 8(r31)
@ -300,7 +300,7 @@ dMsgStringBase_c_NS_getStringLocal:
/* 802497D4 00246714 80 7E 00 18 */ lwz r3, 0x18(r30)
/* 802497D8 00246718 38 81 00 0C */ addi r4, r1, 0xc
/* 802497DC 0024671C 38 A0 00 80 */ li r5, 0x80
/* 802497E0 00246720 48 09 31 31 */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 802497E0 00246720 48 09 31 31 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
/* 802497E4 00246724 48 00 00 2C */ b lbl_80249810
lbl_802497E8:
/* 802497E8 00246728 80 1E 00 1C */ lwz r0, 0x1c(r30)
@ -312,7 +312,7 @@ lbl_802497E8:
/* 80249800 00246740 80 7E 00 18 */ lwz r3, 0x18(r30)
/* 80249804 00246744 38 81 00 08 */ addi r4, r1, 8
/* 80249808 00246748 38 A0 00 80 */ li r5, 0x80
/* 8024980C 0024674C 48 09 31 05 */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 8024980C 0024674C 48 09 31 05 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
lbl_80249810:
/* 80249810 00246750 80 7E 00 0C */ lwz r3, 0xc(r30)
/* 80249814 00246754 7F 24 CB 78 */ mr r4, r25
@ -400,7 +400,7 @@ dMsgStringBase_c_NS_getStringPageLocal:
/* 80249948 00246888 80 78 00 18 */ lwz r3, 0x18(r24)
/* 8024994C 0024688C 38 81 00 0C */ addi r4, r1, 0xc
/* 80249950 00246890 38 A0 00 80 */ li r5, 0x80
/* 80249954 00246894 48 09 2F BD */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 80249954 00246894 48 09 2F BD */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
/* 80249958 00246898 48 00 00 2C */ b lbl_80249984
lbl_8024995C:
/* 8024995C 0024689C 80 18 00 1C */ lwz r0, 0x1c(r24)
@ -412,7 +412,7 @@ lbl_8024995C:
/* 80249974 002468B4 80 78 00 18 */ lwz r3, 0x18(r24)
/* 80249978 002468B8 38 81 00 08 */ addi r4, r1, 8
/* 8024997C 002468BC 38 A0 00 80 */ li r5, 0x80
/* 80249980 002468C0 48 09 2F 91 */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 80249980 002468C0 48 09 2F 91 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
lbl_80249984:
/* 80249984 002468C4 80 78 00 0C */ lwz r3, 0xc(r24)
/* 80249988 002468C8 7F 84 E3 78 */ mr r4, r28
@ -506,7 +506,7 @@ dMsgStringBase_c_NS_getMessageLocal:
/* 80249AC8 00246A08 80 7D 00 18 */ lwz r3, 0x18(r29)
/* 80249ACC 00246A0C 38 81 00 0C */ addi r4, r1, 0xc
/* 80249AD0 00246A10 38 A0 00 80 */ li r5, 0x80
/* 80249AD4 00246A14 48 09 2E 3D */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 80249AD4 00246A14 48 09 2E 3D */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
/* 80249AD8 00246A18 48 00 00 2C */ b lbl_80249B04
lbl_80249ADC:
/* 80249ADC 00246A1C 80 1D 00 1C */ lwz r0, 0x1c(r29)
@ -518,7 +518,7 @@ lbl_80249ADC:
/* 80249AF4 00246A34 80 7D 00 18 */ lwz r3, 0x18(r29)
/* 80249AF8 00246A38 38 81 00 08 */ addi r4, r1, 8
/* 80249AFC 00246A3C 38 A0 00 80 */ li r5, 0x80
/* 80249B00 00246A40 48 09 2E 11 */ bl JGadget_NS_binary_NS_TParse_header_block_NS_parse_next
/* 80249B00 00246A40 48 09 2E 11 */ bl parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl
lbl_80249B04:
/* 80249B04 00246A44 80 7D 00 0C */ lwz r3, 0xc(r29)
/* 80249B08 00246A48 38 80 00 00 */ li r4, 0

View File

@ -0,0 +1,28 @@
/* 802DC864 002D97A4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802DC868 002D97A8 28 06 00 00 */ cmplwi r6, 0
/* 802DC86C 002D97AC 40 82 00 08 */ bne lbl_802DC874
/* 802DC870 002D97B0 38 C1 00 08 */ addi r6, r1, 8
lbl_802DC874:
/* 802DC874 002D97B4 A0 E3 00 00 */ lhz r7, 0(r3)
/* 802DC878 002D97B8 54 E0 04 21 */ rlwinm. r0, r7, 0, 0x10, 0x10
/* 802DC87C 002D97BC 40 82 00 20 */ bne lbl_802DC89C
/* 802DC880 002D97C0 38 00 00 10 */ li r0, 0x10
/* 802DC884 002D97C4 90 06 00 00 */ stw r0, 0(r6)
/* 802DC888 002D97C8 90 E4 00 00 */ stw r7, 0(r4)
/* 802DC88C 002D97CC A0 03 00 02 */ lhz r0, 2(r3)
/* 802DC890 002D97D0 90 05 00 00 */ stw r0, 0(r5)
/* 802DC894 002D97D4 38 63 00 04 */ addi r3, r3, 4
/* 802DC898 002D97D8 48 00 00 28 */ b lbl_802DC8C0
lbl_802DC89C:
/* 802DC89C 002D97DC 38 00 00 20 */ li r0, 0x20
/* 802DC8A0 002D97E0 90 06 00 00 */ stw r0, 0(r6)
/* 802DC8A4 002D97E4 54 E7 80 5E */ rlwinm r7, r7, 0x10, 1, 0xf
/* 802DC8A8 002D97E8 A0 03 00 02 */ lhz r0, 2(r3)
/* 802DC8AC 002D97EC 7C E7 03 78 */ or r7, r7, r0
/* 802DC8B0 002D97F0 90 E4 00 00 */ stw r7, 0(r4)
/* 802DC8B4 002D97F4 80 03 00 04 */ lwz r0, 4(r3)
/* 802DC8B8 002D97F8 90 05 00 00 */ stw r0, 0(r5)
/* 802DC8BC 002D97FC 38 63 00 08 */ addi r3, r3, 8
lbl_802DC8C0:
/* 802DC8C0 002D9800 38 21 00 10 */ addi r1, r1, 0x10
/* 802DC8C4 002D9804 4E 80 00 20 */ blr

View File

@ -0,0 +1,76 @@
/* 802DC910 002D9850 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 802DC914 002D9854 7C 08 02 A6 */ mflr r0
/* 802DC918 002D9858 90 01 00 34 */ stw r0, 0x34(r1)
/* 802DC91C 002D985C 39 61 00 30 */ addi r11, r1, 0x30
/* 802DC920 002D9860 48 08 58 B1 */ bl _savegpr_26
/* 802DC924 002D9864 7C 7A 1B 78 */ mr r26, r3
/* 802DC928 002D9868 7C 9B 23 79 */ or. r27, r4, r4
/* 802DC92C 002D986C 7C BC 2B 78 */ mr r28, r5
/* 802DC930 002D9870 41 82 00 10 */ beq lbl_802DC940
/* 802DC934 002D9874 80 1B 00 00 */ lwz r0, 0(r27)
/* 802DC938 002D9878 28 00 00 00 */ cmplwi r0, 0
/* 802DC93C 002D987C 40 82 00 0C */ bne lbl_802DC948
lbl_802DC940:
/* 802DC940 002D9880 38 60 00 00 */ li r3, 0
/* 802DC944 002D9884 48 00 00 C0 */ b lbl_802DCA04
lbl_802DC948:
/* 802DC948 002D9888 3B E0 00 00 */ li r31, 0
/* 802DC94C 002D988C 38 A1 00 0C */ addi r5, r1, 0xc
/* 802DC950 002D9890 7F 86 E3 78 */ mr r6, r28
/* 802DC954 002D9894 81 83 00 00 */ lwz r12, 0(r3)
/* 802DC958 002D9898 81 8C 00 0C */ lwz r12, 0xc(r12)
/* 802DC95C 002D989C 7D 89 03 A6 */ mtctr r12
/* 802DC960 002D98A0 4E 80 04 21 */ bctrl
/* 802DC964 002D98A4 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802DC968 002D98A8 41 82 00 08 */ beq lbl_802DC970
/* 802DC96C 002D98AC 3B E0 00 01 */ li r31, 1
lbl_802DC970:
/* 802DC970 002D98B0 7F FD FB 78 */ mr r29, r31
/* 802DC974 002D98B4 57 80 07 FF */ clrlwi. r0, r28, 0x1f
/* 802DC978 002D98B8 40 82 00 14 */ bne lbl_802DC98C
/* 802DC97C 002D98BC 57 E0 06 3F */ clrlwi. r0, r31, 0x18
/* 802DC980 002D98C0 40 82 00 0C */ bne lbl_802DC98C
/* 802DC984 002D98C4 7F E3 FB 78 */ mr r3, r31
/* 802DC988 002D98C8 48 00 00 7C */ b lbl_802DCA04
lbl_802DC98C:
/* 802DC98C 002D98CC 57 9E 07 BC */ rlwinm r30, r28, 0, 0x1e, 0x1e
/* 802DC990 002D98D0 48 00 00 64 */ b lbl_802DC9F4
lbl_802DC994:
/* 802DC994 002D98D4 3B E0 00 00 */ li r31, 0
/* 802DC998 002D98D8 7F 43 D3 78 */ mr r3, r26
/* 802DC99C 002D98DC 7F 64 DB 78 */ mr r4, r27
/* 802DC9A0 002D98E0 38 A1 00 08 */ addi r5, r1, 8
/* 802DC9A4 002D98E4 7F 86 E3 78 */ mr r6, r28
/* 802DC9A8 002D98E8 81 9A 00 00 */ lwz r12, 0(r26)
/* 802DC9AC 002D98EC 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 802DC9B0 002D98F0 7D 89 03 A6 */ mtctr r12
/* 802DC9B4 002D98F4 4E 80 04 21 */ bctrl
/* 802DC9B8 002D98F8 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 802DC9BC 002D98FC 41 82 00 10 */ beq lbl_802DC9CC
/* 802DC9C0 002D9900 57 A0 06 3F */ clrlwi. r0, r29, 0x18
/* 802DC9C4 002D9904 41 82 00 08 */ beq lbl_802DC9CC
/* 802DC9C8 002D9908 3B E0 00 01 */ li r31, 1
lbl_802DC9CC:
/* 802DC9CC 002D990C 7F FD FB 78 */ mr r29, r31
/* 802DC9D0 002D9910 28 1E 00 00 */ cmplwi r30, 0
/* 802DC9D4 002D9914 40 82 00 14 */ bne lbl_802DC9E8
/* 802DC9D8 002D9918 57 E0 06 3F */ clrlwi. r0, r31, 0x18
/* 802DC9DC 002D991C 40 82 00 0C */ bne lbl_802DC9E8
/* 802DC9E0 002D9920 7F E3 FB 78 */ mr r3, r31
/* 802DC9E4 002D9924 48 00 00 20 */ b lbl_802DCA04
lbl_802DC9E8:
/* 802DC9E8 002D9928 80 61 00 0C */ lwz r3, 0xc(r1)
/* 802DC9EC 002D992C 38 03 FF FF */ addi r0, r3, -1
/* 802DC9F0 002D9930 90 01 00 0C */ stw r0, 0xc(r1)
lbl_802DC9F4:
/* 802DC9F4 002D9934 80 01 00 0C */ lwz r0, 0xc(r1)
/* 802DC9F8 002D9938 28 00 00 00 */ cmplwi r0, 0
/* 802DC9FC 002D993C 40 82 FF 98 */ bne lbl_802DC994
/* 802DCA00 002D9940 7F A3 EB 78 */ mr r3, r29
lbl_802DCA04:
/* 802DCA04 002D9944 39 61 00 30 */ addi r11, r1, 0x30
/* 802DCA08 002D9948 48 08 58 15 */ bl _restgpr_26
/* 802DCA0C 002D994C 80 01 00 34 */ lwz r0, 0x34(r1)
/* 802DCA10 002D9950 7C 08 03 A6 */ mtlr r0
/* 802DCA14 002D9954 38 21 00 30 */ addi r1, r1, 0x30
/* 802DCA18 002D9958 4E 80 00 20 */ blr

View File

@ -6,6 +6,13 @@
namespace JGadget {
namespace binary {
struct TEBit {
u32 value;
};
const void* parseVariableUInt_16_32_following(const void* pu16, u32* pu32First, u32* pu32Second,
TEBit* tebit);
inline u32 align_roundUp(u32 arg0, u32 uAlign) {
return (arg0 + uAlign - 1) & ~(uAlign - 1);
}
@ -27,8 +34,10 @@ struct TParseData_aligned : public TParseData {
struct TParse_header_block {
virtual ~TParse_header_block();
virtual int parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg2) = 0;
virtual int parseBlock_next(const void** ppData_inout, u32* puData_out, u32 arg2) = 0;
virtual bool parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg2) = 0;
virtual bool parseBlock_next(const void** ppData_inout, u32* puData_out, u32 arg2) = 0;
bool parse_next(const void** ppData_inout, u32 a2);
};
} // namespace binary

View File

@ -109,9 +109,9 @@ public:
virtual ~TParse();
// virtuals
virtual int parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg3);
virtual int parseBlock_next(const void** ppData_inout, u32* puData_out, u32 arg3);
virtual int parseHeader(const data::TParse_THeader& header, u32 arg2);
virtual bool parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg3);
virtual bool parseBlock_next(const void** ppData_inout, u32* puData_out, u32 arg3);
virtual bool parseHeader(const data::TParse_THeader& header, u32 arg2);
virtual bool parseBlock_block(const data::TParse_TBlock& referBlock, u32 arg2);
virtual bool parseBlock_object(const data::TParse_TBlock_object& referObject, u32 arg2);

View File

@ -1 +1,103 @@
// ok
#include "JSystem/JGadget/binary.h"
#include "global.h"
extern "C" {
void parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl(void);
void parseVariableUInt_16_32_following__Q27JGadget6binaryFPCvPUlPUlPQ37JGadget6binary5TEBit(void);
void __dt__Q37JGadget6binary19TParse_header_blockFv(void);
}
extern u8 lbl_803C488C;
namespace JGadget {
namespace binary {
#ifdef NONMATCHING // really small difference
const void* parseVariableUInt_16_32_following(const void* pu16, u32* pu32First, u32* pu32Second,
TEBit* tebit) {
JUT_ASSERT(pu_16 != NULL);
JUT_ASSERT(pu32First != NULL);
JUT_ASSERT(pu32Second != NULL);
TEBit bit;
if (tebit == NULL) {
tebit = &bit;
}
const u16* u = static_cast<const u16*>(pu16);
if (!(u[0] & 0x8000)) {
tebit->value = 0x10;
*pu32First = u[0];
*pu32Second = u[1];
return &u[2];
} else {
tebit->value = 0x20;
const u32* u2 = static_cast<const u32*>(pu16);
*pu32First = (u[0] << 16) | u[1];
*pu32Second = u2[1];
return &u[4];
}
}
#else
asm const void* parseVariableUInt_16_32_following(const void* pu16, u32* pu32First, u32* pu32Second,
TEBit* tebit) {
nofralloc
#include "JSystem/JGadget/asm/func_802DC864.s"
}
#endif
TParse_header_block::~TParse_header_block() {}
#ifdef NONMATCHING // minor regalloc
bool TParse_header_block::parse_next(const void** ppData_inout, u32 a2) {
bool result;
u32 count;
if (ppData_inout == NULL || *ppData_inout == NULL) {
JUTWarn w;
w << "data not specified";
return false;
}
bool headerOK = false;
if (parseHeader_next(ppData_inout, &count, a2)) {
headerOK = true;
}
result = headerOK;
if (!(a2 & 1) && !result) {
return result;
}
for (; count != 0; --count) {
bool blockOK = false;
const void* p = *ppData_inout;
if (parseBlock_next(ppData_inout, &count, a2) && result) {
blockOK = true;
}
result = blockOK;
JUT_ASSERT(std::uintptr_t(*ppData_inout) == std::uintptr_t(p) + uData);
if (!(a2 & 2) && !blockOK) {
return result;
}
}
return result;
}
#else
asm bool TParse_header_block::parse_next(const void** ppData_inout, u32 a2) {
nofralloc
#include "JSystem/JGadget/asm/func_802DC910.s"
}
#endif
} // namespace binary
} // namespace JGadget

View File

@ -256,7 +256,7 @@ TParse::TParse(TControl* pControl) : pControl(pControl) {}
TParse::~TParse() {}
#ifdef NONMATCHING // Close but is missing a temp or something
int TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg3) {
bool TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg3) {
const void* pData = *ppData_inout;
const data::TParse_THeader& header(pData);
@ -279,19 +279,19 @@ int TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 ar
return parseHeader(header, arg3);
}
#else
asm int TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg3) {
asm bool TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg3) {
nofralloc
#include "JSystem/JStudio/asm/parseHeader_next__Q37JStudio3stb6TParseFPPCvPUlUl.s"
}
#endif
asm int TParse::parseBlock_next(const void** ppData_inout, u32* puData_out, u32 arg3) {
asm bool TParse::parseBlock_next(const void** ppData_inout, u32* puData_out, u32 arg3) {
nofralloc
#include "JSystem/JStudio/asm/parseBlock_next__Q37JStudio3stb6TParseFPPCvPUlUl.s"
}
int TParse::parseHeader(const data::TParse_THeader& header, u32 arg2) {
return 1;
bool TParse::parseHeader(const data::TParse_THeader& header, u32 arg2) {
return true;
}
bool TParse::parseBlock_block(const data::TParse_TBlock& ppBlock, u32 arg2) {

View File

@ -459,7 +459,7 @@ TEXT_O_FILES := \
$(BUILD_DIR)/asm/JSupport/JSUInputStream.o \
$(BUILD_DIR)/asm/JSupport/JSUMemoryStream.o \
$(BUILD_DIR)/asm/JSupport/JSUFileStream.o \
$(BUILD_DIR)/asm/JGadget/binary.o \
$(BUILD_DIR)/libs/JSystem/JGadget/binary.o \
$(BUILD_DIR)/libs/JSystem/JGadget/linklist.o \
$(BUILD_DIR)/asm/JGadget/linklist.o \
$(BUILD_DIR)/libs/JSystem/JGadget/std-vector.o \