From b797027f0f9e6fe56c802a46e146918aa884dfc9 Mon Sep 17 00:00:00 2001 From: Max Date: Sun, 4 Oct 2020 00:14:32 -0400 Subject: mem_heapCommon and mem_expHeap --- asm/SDK/MEM/mem_expHeap.s | 831 +++++++++++++++++++++++++++++++++++++++++++ asm/SDK/MEM/mem_heapCommon.s | 334 +++++++++++++++++ 2 files changed, 1165 insertions(+) create mode 100644 asm/SDK/MEM/mem_expHeap.s create mode 100644 asm/SDK/MEM/mem_heapCommon.s (limited to 'asm/SDK/MEM') diff --git a/asm/SDK/MEM/mem_expHeap.s b/asm/SDK/MEM/mem_expHeap.s new file mode 100644 index 0000000..33dd97d --- /dev/null +++ b/asm/SDK/MEM/mem_expHeap.s @@ -0,0 +1,831 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global AllocUsedBlockFromFreeBlock_ +AllocUsedBlockFromFreeBlock_: +/* 80296938 00292598 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 8029693C 0029259C 7C 08 02 A6 */ mflr r0 +/* 80296940 002925A0 90 01 00 24 */ stw r0, 0x24(r1) +/* 80296944 002925A4 39 61 00 20 */ addi r11, r1, 0x20 +/* 80296948 002925A8 4B F3 07 DD */ bl _savegpr_26 +/* 8029694C 002925AC 81 04 00 08 */ lwz r8, 8(r4) +/* 80296950 002925B0 7F C6 2A 14 */ add r30, r6, r5 +/* 80296954 002925B4 A0 C4 00 02 */ lhz r6, 2(r4) +/* 80296958 002925B8 3B A5 FF F0 */ addi r29, r5, -16 +/* 8029695C 002925BC 80 04 00 04 */ lwz r0, 4(r4) +/* 80296960 002925C0 2C 08 00 00 */ cmpwi r8, 0 +/* 80296964 002925C4 54 C9 C6 7E */ rlwinm r9, r6, 0x18, 0x19, 0x1f +/* 80296968 002925C8 81 44 00 0C */ lwz r10, 0xc(r4) +/* 8029696C 002925CC 7C C4 02 14 */ add r6, r4, r0 +/* 80296970 002925D0 7C BB 2B 78 */ mr r27, r5 +/* 80296974 002925D4 7C 7A 1B 78 */ mr r26, r3 +/* 80296978 002925D8 7C FC 3B 78 */ mr r28, r7 +/* 8029697C 002925DC 7F BF EB 78 */ mr r31, r29 +/* 80296980 002925E0 7C A9 20 50 */ subf r5, r9, r4 +/* 80296984 002925E4 38 C6 00 10 */ addi r6, r6, 0x10 +/* 80296988 002925E8 41 82 00 0C */ beq lbl_80296994 +/* 8029698C 002925EC 91 48 00 0C */ stw r10, 0xc(r8) +/* 80296990 002925F0 48 00 00 08 */ b lbl_80296998 +lbl_80296994: +/* 80296994 002925F4 91 43 00 00 */ stw r10, 0(r3) +lbl_80296998: +/* 80296998 002925F8 2C 0A 00 00 */ cmpwi r10, 0 +/* 8029699C 002925FC 41 82 00 0C */ beq lbl_802969A8 +/* 802969A0 00292600 91 0A 00 08 */ stw r8, 8(r10) +/* 802969A4 00292604 48 00 00 08 */ b lbl_802969AC +lbl_802969A8: +/* 802969A8 00292608 91 03 00 04 */ stw r8, 4(r3) +lbl_802969AC: +/* 802969AC 0029260C 7C 05 E8 50 */ subf r0, r5, r29 +/* 802969B0 00292610 28 00 00 14 */ cmplwi r0, 0x14 +/* 802969B4 00292614 40 80 00 0C */ bge lbl_802969C0 +/* 802969B8 00292618 7C BF 2B 78 */ mr r31, r5 +/* 802969BC 0029261C 48 00 00 60 */ b lbl_80296A1C +lbl_802969C0: +/* 802969C0 00292620 38 80 46 52 */ li r4, 0x4652 +/* 802969C4 00292624 38 05 00 10 */ addi r0, r5, 0x10 +/* 802969C8 00292628 B0 85 00 00 */ sth r4, 0(r5) +/* 802969CC 0029262C 38 80 00 00 */ li r4, 0 +/* 802969D0 00292630 7C 00 E8 50 */ subf r0, r0, r29 +/* 802969D4 00292634 2C 08 00 00 */ cmpwi r8, 0 +/* 802969D8 00292638 B0 85 00 02 */ sth r4, 2(r5) +/* 802969DC 0029263C 90 05 00 04 */ stw r0, 4(r5) +/* 802969E0 00292640 90 85 00 0C */ stw r4, 0xc(r5) +/* 802969E4 00292644 91 05 00 08 */ stw r8, 8(r5) +/* 802969E8 00292648 41 82 00 10 */ beq lbl_802969F8 +/* 802969EC 0029264C 80 88 00 0C */ lwz r4, 0xc(r8) +/* 802969F0 00292650 90 A8 00 0C */ stw r5, 0xc(r8) +/* 802969F4 00292654 48 00 00 0C */ b lbl_80296A00 +lbl_802969F8: +/* 802969F8 00292658 80 83 00 00 */ lwz r4, 0(r3) +/* 802969FC 0029265C 90 A3 00 00 */ stw r5, 0(r3) +lbl_80296A00: +/* 80296A00 00292660 2C 04 00 00 */ cmpwi r4, 0 +/* 80296A04 00292664 90 85 00 0C */ stw r4, 0xc(r5) +/* 80296A08 00292668 41 82 00 0C */ beq lbl_80296A14 +/* 80296A0C 0029266C 90 A4 00 08 */ stw r5, 8(r4) +/* 80296A10 00292670 48 00 00 08 */ b lbl_80296A18 +lbl_80296A14: +/* 80296A14 00292674 90 A3 00 04 */ stw r5, 4(r3) +lbl_80296A18: +/* 80296A18 00292678 7C A8 2B 78 */ mr r8, r5 +lbl_80296A1C: +/* 80296A1C 0029267C 7C 1E 30 50 */ subf r0, r30, r6 +/* 80296A20 00292680 28 00 00 14 */ cmplwi r0, 0x14 +/* 80296A24 00292684 40 80 00 0C */ bge lbl_80296A30 +/* 80296A28 00292688 7C DE 33 78 */ mr r30, r6 +/* 80296A2C 0029268C 48 00 00 5C */ b lbl_80296A88 +lbl_80296A30: +/* 80296A30 00292690 38 80 46 52 */ li r4, 0x4652 +/* 80296A34 00292694 38 1E 00 10 */ addi r0, r30, 0x10 +/* 80296A38 00292698 B0 9E 00 00 */ sth r4, 0(r30) +/* 80296A3C 0029269C 38 80 00 00 */ li r4, 0 +/* 80296A40 002926A0 7C 00 30 50 */ subf r0, r0, r6 +/* 80296A44 002926A4 2C 08 00 00 */ cmpwi r8, 0 +/* 80296A48 002926A8 B0 9E 00 02 */ sth r4, 2(r30) +/* 80296A4C 002926AC 90 1E 00 04 */ stw r0, 4(r30) +/* 80296A50 002926B0 90 9E 00 0C */ stw r4, 0xc(r30) +/* 80296A54 002926B4 91 1E 00 08 */ stw r8, 8(r30) +/* 80296A58 002926B8 41 82 00 10 */ beq lbl_80296A68 +/* 80296A5C 002926BC 80 88 00 0C */ lwz r4, 0xc(r8) +/* 80296A60 002926C0 93 C8 00 0C */ stw r30, 0xc(r8) +/* 80296A64 002926C4 48 00 00 0C */ b lbl_80296A70 +lbl_80296A68: +/* 80296A68 002926C8 80 83 00 00 */ lwz r4, 0(r3) +/* 80296A6C 002926CC 93 C3 00 00 */ stw r30, 0(r3) +lbl_80296A70: +/* 80296A70 002926D0 2C 04 00 00 */ cmpwi r4, 0 +/* 80296A74 002926D4 90 9E 00 0C */ stw r4, 0xc(r30) +/* 80296A78 002926D8 41 82 00 0C */ beq lbl_80296A84 +/* 80296A7C 002926DC 93 C4 00 08 */ stw r30, 8(r4) +/* 80296A80 002926E0 48 00 00 08 */ b lbl_80296A88 +lbl_80296A84: +/* 80296A84 002926E4 93 C3 00 04 */ stw r30, 4(r3) +lbl_80296A88: +/* 80296A88 002926E8 80 03 FF FC */ lwz r0, -4(r3) +/* 80296A8C 002926EC 7C BF F0 50 */ subf r5, r31, r30 +/* 80296A90 002926F0 54 00 07 FF */ clrlwi. r0, r0, 0x1f +/* 80296A94 002926F4 41 82 00 10 */ beq lbl_80296AA4 +/* 80296A98 002926F8 7F E3 FB 78 */ mr r3, r31 +/* 80296A9C 002926FC 38 80 00 00 */ li r4, 0 +/* 80296AA0 00292700 4B D6 D6 65 */ bl memset +lbl_80296AA4: +/* 80296AA4 00292704 38 A0 00 00 */ li r5, 0 +/* 80296AA8 00292708 38 9D 00 10 */ addi r4, r29, 0x10 +/* 80296AAC 0029270C 7C A3 2B 78 */ mr r3, r5 +/* 80296AB0 00292710 38 C0 55 44 */ li r6, 0x5544 +/* 80296AB4 00292714 7C 84 F0 50 */ subf r4, r4, r30 +/* 80296AB8 00292718 7C 1F E8 50 */ subf r0, r31, r29 +/* 80296ABC 0029271C 53 83 7C 20 */ rlwimi r3, r28, 0xf, 0x10, 0x10 +/* 80296AC0 00292720 B0 DD 00 00 */ sth r6, 0(r29) +/* 80296AC4 00292724 50 03 44 6E */ rlwimi r3, r0, 8, 0x11, 0x17 +/* 80296AC8 00292728 90 9D 00 04 */ stw r4, 4(r29) +/* 80296ACC 0029272C 90 BD 00 08 */ stw r5, 8(r29) +/* 80296AD0 00292730 90 BD 00 0C */ stw r5, 0xc(r29) +/* 80296AD4 00292734 B0 7D 00 02 */ sth r3, 2(r29) +/* 80296AD8 00292738 A0 1A 00 10 */ lhz r0, 0x10(r26) +/* 80296ADC 0029273C 50 03 06 3E */ rlwimi r3, r0, 0, 0x18, 0x1f +/* 80296AE0 00292740 B0 7D 00 02 */ sth r3, 2(r29) +/* 80296AE4 00292744 80 9A 00 0C */ lwz r4, 0xc(r26) +/* 80296AE8 00292748 2C 04 00 00 */ cmpwi r4, 0 +/* 80296AEC 0029274C 90 9D 00 08 */ stw r4, 8(r29) +/* 80296AF0 00292750 41 82 00 10 */ beq lbl_80296B00 +/* 80296AF4 00292754 80 64 00 0C */ lwz r3, 0xc(r4) +/* 80296AF8 00292758 93 A4 00 0C */ stw r29, 0xc(r4) +/* 80296AFC 0029275C 48 00 00 0C */ b lbl_80296B08 +lbl_80296B00: +/* 80296B00 00292760 80 7A 00 08 */ lwz r3, 8(r26) +/* 80296B04 00292764 93 BA 00 08 */ stw r29, 8(r26) +lbl_80296B08: +/* 80296B08 00292768 2C 03 00 00 */ cmpwi r3, 0 +/* 80296B0C 0029276C 90 7D 00 0C */ stw r3, 0xc(r29) +/* 80296B10 00292770 41 82 00 0C */ beq lbl_80296B1C +/* 80296B14 00292774 93 A3 00 08 */ stw r29, 8(r3) +/* 80296B18 00292778 48 00 00 08 */ b lbl_80296B20 +lbl_80296B1C: +/* 80296B1C 0029277C 93 BA 00 0C */ stw r29, 0xc(r26) +lbl_80296B20: +/* 80296B20 00292780 39 61 00 20 */ addi r11, r1, 0x20 +/* 80296B24 00292784 7F 63 DB 78 */ mr r3, r27 +/* 80296B28 00292788 4B F3 06 49 */ bl _restgpr_26 +/* 80296B2C 0029278C 80 01 00 24 */ lwz r0, 0x24(r1) +/* 80296B30 00292790 7C 08 03 A6 */ mtlr r0 +/* 80296B34 00292794 38 21 00 20 */ addi r1, r1, 0x20 +/* 80296B38 00292798 4E 80 00 20 */ blr + +.global AllocFromHead_ +AllocFromHead_: +/* 80296B3C 0029279C 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 80296B40 002927A0 7C 08 02 A6 */ mflr r0 +/* 80296B44 002927A4 38 63 00 3C */ addi r3, r3, 0x3c +/* 80296B48 002927A8 7C 86 23 78 */ mr r6, r4 +/* 80296B4C 002927AC 90 01 00 24 */ stw r0, 0x24(r1) +/* 80296B50 002927B0 38 05 FF FF */ addi r0, r5, -1 +/* 80296B54 002927B4 7C 08 00 F8 */ nor r8, r0, r0 +/* 80296B58 002927B8 39 80 00 00 */ li r12, 0 +/* 80296B5C 002927BC 93 E1 00 1C */ stw r31, 0x1c(r1) +/* 80296B60 002927C0 3B E0 FF FF */ li r31, -1 +/* 80296B64 002927C4 93 C1 00 18 */ stw r30, 0x18(r1) +/* 80296B68 002927C8 3B C0 00 00 */ li r30, 0 +/* 80296B6C 002927CC 93 A1 00 14 */ stw r29, 0x14(r1) +/* 80296B70 002927D0 A0 E3 00 12 */ lhz r7, 0x12(r3) +/* 80296B74 002927D4 81 63 00 00 */ lwz r11, 0(r3) +/* 80296B78 002927D8 54 E0 07 FE */ clrlwi r0, r7, 0x1f +/* 80296B7C 002927DC 7C 00 00 34 */ cntlzw r0, r0 +/* 80296B80 002927E0 54 0A D9 7E */ srwi r10, r0, 5 +/* 80296B84 002927E4 48 00 00 50 */ b lbl_80296BD4 +lbl_80296B88: +/* 80296B88 002927E8 3B AB 00 10 */ addi r29, r11, 0x10 +/* 80296B8C 002927EC 81 2B 00 04 */ lwz r9, 4(r11) +/* 80296B90 002927F0 7C E5 EA 14 */ add r7, r5, r29 +/* 80296B94 002927F4 38 07 FF FF */ addi r0, r7, -1 +/* 80296B98 002927F8 7D 07 00 38 */ and r7, r8, r0 +/* 80296B9C 002927FC 7C 1D 38 50 */ subf r0, r29, r7 +/* 80296BA0 00292800 7C 04 02 14 */ add r0, r4, r0 +/* 80296BA4 00292804 7C 09 00 40 */ cmplw r9, r0 +/* 80296BA8 00292808 41 80 00 28 */ blt lbl_80296BD0 +/* 80296BAC 0029280C 7C 1F 48 40 */ cmplw r31, r9 +/* 80296BB0 00292810 40 81 00 20 */ ble lbl_80296BD0 +/* 80296BB4 00292814 2C 0A 00 00 */ cmpwi r10, 0 +/* 80296BB8 00292818 7D 6C 5B 78 */ mr r12, r11 +/* 80296BBC 0029281C 7D 3F 4B 78 */ mr r31, r9 +/* 80296BC0 00292820 7C FE 3B 78 */ mr r30, r7 +/* 80296BC4 00292824 40 82 00 18 */ bne lbl_80296BDC +/* 80296BC8 00292828 7C 09 20 40 */ cmplw r9, r4 +/* 80296BCC 0029282C 41 82 00 10 */ beq lbl_80296BDC +lbl_80296BD0: +/* 80296BD0 00292830 81 6B 00 0C */ lwz r11, 0xc(r11) +lbl_80296BD4: +/* 80296BD4 00292834 2C 0B 00 00 */ cmpwi r11, 0 +/* 80296BD8 00292838 40 82 FF B0 */ bne lbl_80296B88 +lbl_80296BDC: +/* 80296BDC 0029283C 2C 0C 00 00 */ cmpwi r12, 0 +/* 80296BE0 00292840 41 82 00 18 */ beq lbl_80296BF8 +/* 80296BE4 00292844 7D 84 63 78 */ mr r4, r12 +/* 80296BE8 00292848 7F C5 F3 78 */ mr r5, r30 +/* 80296BEC 0029284C 38 E0 00 00 */ li r7, 0 +/* 80296BF0 00292850 4B FF FD 49 */ bl AllocUsedBlockFromFreeBlock_ +/* 80296BF4 00292854 48 00 00 08 */ b lbl_80296BFC +lbl_80296BF8: +/* 80296BF8 00292858 38 60 00 00 */ li r3, 0 +lbl_80296BFC: +/* 80296BFC 0029285C 80 01 00 24 */ lwz r0, 0x24(r1) +/* 80296C00 00292860 83 E1 00 1C */ lwz r31, 0x1c(r1) +/* 80296C04 00292864 83 C1 00 18 */ lwz r30, 0x18(r1) +/* 80296C08 00292868 83 A1 00 14 */ lwz r29, 0x14(r1) +/* 80296C0C 0029286C 7C 08 03 A6 */ mtlr r0 +/* 80296C10 00292870 38 21 00 20 */ addi r1, r1, 0x20 +/* 80296C14 00292874 4E 80 00 20 */ blr + +.global AllocFromTail_ +AllocFromTail_: +/* 80296C18 00292878 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80296C1C 0029287C 7C 08 02 A6 */ mflr r0 +/* 80296C20 00292880 38 63 00 3C */ addi r3, r3, 0x3c +/* 80296C24 00292884 7C 86 23 78 */ mr r6, r4 +/* 80296C28 00292888 90 01 00 14 */ stw r0, 0x14(r1) +/* 80296C2C 0029288C 38 05 FF FF */ addi r0, r5, -1 +/* 80296C30 00292890 7C 07 00 F8 */ nor r7, r0, r0 +/* 80296C34 00292894 39 60 00 00 */ li r11, 0 +/* 80296C38 00292898 93 E1 00 0C */ stw r31, 0xc(r1) +/* 80296C3C 0029289C 39 80 FF FF */ li r12, -1 +/* 80296C40 002928A0 93 C1 00 08 */ stw r30, 8(r1) +/* 80296C44 002928A4 A0 A3 00 12 */ lhz r5, 0x12(r3) +/* 80296C48 002928A8 81 43 00 04 */ lwz r10, 4(r3) +/* 80296C4C 002928AC 54 A0 07 FE */ clrlwi r0, r5, 0x1f +/* 80296C50 002928B0 38 A0 00 00 */ li r5, 0 +/* 80296C54 002928B4 7C 00 00 34 */ cntlzw r0, r0 +/* 80296C58 002928B8 54 09 D9 7E */ srwi r9, r0, 5 +/* 80296C5C 002928BC 48 00 00 48 */ b lbl_80296CA4 +lbl_80296C60: +/* 80296C60 002928C0 81 0A 00 04 */ lwz r8, 4(r10) +/* 80296C64 002928C4 3B EA 00 10 */ addi r31, r10, 0x10 +/* 80296C68 002928C8 7C 08 FA 14 */ add r0, r8, r31 +/* 80296C6C 002928CC 7C 04 00 50 */ subf r0, r4, r0 +/* 80296C70 002928D0 7C FE 00 38 */ and r30, r7, r0 +/* 80296C74 002928D4 7C 1F F0 51 */ subf. r0, r31, r30 +/* 80296C78 002928D8 41 80 00 28 */ blt lbl_80296CA0 +/* 80296C7C 002928DC 7C 0C 40 40 */ cmplw r12, r8 +/* 80296C80 002928E0 40 81 00 20 */ ble lbl_80296CA0 +/* 80296C84 002928E4 2C 09 00 00 */ cmpwi r9, 0 +/* 80296C88 002928E8 7D 4B 53 78 */ mr r11, r10 +/* 80296C8C 002928EC 7D 0C 43 78 */ mr r12, r8 +/* 80296C90 002928F0 7F C5 F3 78 */ mr r5, r30 +/* 80296C94 002928F4 40 82 00 18 */ bne lbl_80296CAC +/* 80296C98 002928F8 7C 08 20 40 */ cmplw r8, r4 +/* 80296C9C 002928FC 41 82 00 10 */ beq lbl_80296CAC +lbl_80296CA0: +/* 80296CA0 00292900 81 4A 00 08 */ lwz r10, 8(r10) +lbl_80296CA4: +/* 80296CA4 00292904 2C 0A 00 00 */ cmpwi r10, 0 +/* 80296CA8 00292908 40 82 FF B8 */ bne lbl_80296C60 +lbl_80296CAC: +/* 80296CAC 0029290C 2C 0B 00 00 */ cmpwi r11, 0 +/* 80296CB0 00292910 41 82 00 14 */ beq lbl_80296CC4 +/* 80296CB4 00292914 7D 64 5B 78 */ mr r4, r11 +/* 80296CB8 00292918 38 E0 00 01 */ li r7, 1 +/* 80296CBC 0029291C 4B FF FC 7D */ bl AllocUsedBlockFromFreeBlock_ +/* 80296CC0 00292920 48 00 00 08 */ b lbl_80296CC8 +lbl_80296CC4: +/* 80296CC4 00292924 38 60 00 00 */ li r3, 0 +lbl_80296CC8: +/* 80296CC8 00292928 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80296CCC 0029292C 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 80296CD0 00292930 83 C1 00 08 */ lwz r30, 8(r1) +/* 80296CD4 00292934 7C 08 03 A6 */ mtlr r0 +/* 80296CD8 00292938 38 21 00 10 */ addi r1, r1, 0x10 +/* 80296CDC 0029293C 4E 80 00 20 */ blr + +.global RecycleRegion_ +RecycleRegion_: +/* 80296CE0 00292940 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80296CE4 00292944 39 00 00 00 */ li r8, 0 +/* 80296CE8 00292948 80 A4 00 00 */ lwz r5, 0(r4) +/* 80296CEC 0029294C 80 04 00 04 */ lwz r0, 4(r4) +/* 80296CF0 00292950 90 A1 00 08 */ stw r5, 8(r1) +/* 80296CF4 00292954 80 C3 00 00 */ lwz r6, 0(r3) +/* 80296CF8 00292958 90 01 00 0C */ stw r0, 0xc(r1) +/* 80296CFC 0029295C 48 00 00 6C */ b lbl_80296D68 +lbl_80296D00: +/* 80296D00 00292960 80 04 00 00 */ lwz r0, 0(r4) +/* 80296D04 00292964 7C 06 00 40 */ cmplw r6, r0 +/* 80296D08 00292968 40 80 00 0C */ bge lbl_80296D14 +/* 80296D0C 0029296C 7C C8 33 78 */ mr r8, r6 +/* 80296D10 00292970 48 00 00 54 */ b lbl_80296D64 +lbl_80296D14: +/* 80296D14 00292974 80 04 00 04 */ lwz r0, 4(r4) +/* 80296D18 00292978 7C 06 00 40 */ cmplw r6, r0 +/* 80296D1C 0029297C 40 82 00 54 */ bne lbl_80296D70 +/* 80296D20 00292980 80 06 00 04 */ lwz r0, 4(r6) +/* 80296D24 00292984 80 E6 00 08 */ lwz r7, 8(r6) +/* 80296D28 00292988 7C A6 02 14 */ add r5, r6, r0 +/* 80296D2C 0029298C 80 C6 00 0C */ lwz r6, 0xc(r6) +/* 80296D30 00292990 38 05 00 10 */ addi r0, r5, 0x10 +/* 80296D34 00292994 2C 07 00 00 */ cmpwi r7, 0 +/* 80296D38 00292998 90 01 00 0C */ stw r0, 0xc(r1) +/* 80296D3C 0029299C 41 82 00 0C */ beq lbl_80296D48 +/* 80296D40 002929A0 90 C7 00 0C */ stw r6, 0xc(r7) +/* 80296D44 002929A4 48 00 00 08 */ b lbl_80296D4C +lbl_80296D48: +/* 80296D48 002929A8 90 C3 00 00 */ stw r6, 0(r3) +lbl_80296D4C: +/* 80296D4C 002929AC 2C 06 00 00 */ cmpwi r6, 0 +/* 80296D50 002929B0 41 82 00 0C */ beq lbl_80296D5C +/* 80296D54 002929B4 90 E6 00 08 */ stw r7, 8(r6) +/* 80296D58 002929B8 48 00 00 18 */ b lbl_80296D70 +lbl_80296D5C: +/* 80296D5C 002929BC 90 E3 00 04 */ stw r7, 4(r3) +/* 80296D60 002929C0 48 00 00 10 */ b lbl_80296D70 +lbl_80296D64: +/* 80296D64 002929C4 80 C6 00 0C */ lwz r6, 0xc(r6) +lbl_80296D68: +/* 80296D68 002929C8 2C 06 00 00 */ cmpwi r6, 0 +/* 80296D6C 002929CC 40 82 FF 94 */ bne lbl_80296D00 +lbl_80296D70: +/* 80296D70 002929D0 2C 08 00 00 */ cmpwi r8, 0 +/* 80296D74 002929D4 41 82 00 54 */ beq lbl_80296DC8 +/* 80296D78 002929D8 80 A8 00 04 */ lwz r5, 4(r8) +/* 80296D7C 002929DC 80 04 00 00 */ lwz r0, 0(r4) +/* 80296D80 002929E0 7C 88 2A 14 */ add r4, r8, r5 +/* 80296D84 002929E4 38 84 00 10 */ addi r4, r4, 0x10 +/* 80296D88 002929E8 7C 04 00 40 */ cmplw r4, r0 +/* 80296D8C 002929EC 40 82 00 3C */ bne lbl_80296DC8 +/* 80296D90 002929F0 80 A8 00 08 */ lwz r5, 8(r8) +/* 80296D94 002929F4 91 01 00 08 */ stw r8, 8(r1) +/* 80296D98 002929F8 2C 05 00 00 */ cmpwi r5, 0 +/* 80296D9C 002929FC 80 88 00 0C */ lwz r4, 0xc(r8) +/* 80296DA0 00292A00 41 82 00 0C */ beq lbl_80296DAC +/* 80296DA4 00292A04 90 85 00 0C */ stw r4, 0xc(r5) +/* 80296DA8 00292A08 48 00 00 08 */ b lbl_80296DB0 +lbl_80296DAC: +/* 80296DAC 00292A0C 90 83 00 00 */ stw r4, 0(r3) +lbl_80296DB0: +/* 80296DB0 00292A10 2C 04 00 00 */ cmpwi r4, 0 +/* 80296DB4 00292A14 41 82 00 0C */ beq lbl_80296DC0 +/* 80296DB8 00292A18 90 A4 00 08 */ stw r5, 8(r4) +/* 80296DBC 00292A1C 48 00 00 08 */ b lbl_80296DC4 +lbl_80296DC0: +/* 80296DC0 00292A20 90 A3 00 04 */ stw r5, 4(r3) +lbl_80296DC4: +/* 80296DC4 00292A24 7C A8 2B 78 */ mr r8, r5 +lbl_80296DC8: +/* 80296DC8 00292A28 80 C1 00 0C */ lwz r6, 0xc(r1) +/* 80296DCC 00292A2C 80 A1 00 08 */ lwz r5, 8(r1) +/* 80296DD0 00292A30 7C 05 30 50 */ subf r0, r5, r6 +/* 80296DD4 00292A34 28 00 00 10 */ cmplwi r0, 0x10 +/* 80296DD8 00292A38 40 80 00 0C */ bge lbl_80296DE4 +/* 80296DDC 00292A3C 38 60 00 00 */ li r3, 0 +/* 80296DE0 00292A40 48 00 00 60 */ b lbl_80296E40 +lbl_80296DE4: +/* 80296DE4 00292A44 38 80 46 52 */ li r4, 0x4652 +/* 80296DE8 00292A48 38 05 00 10 */ addi r0, r5, 0x10 +/* 80296DEC 00292A4C B0 85 00 00 */ sth r4, 0(r5) +/* 80296DF0 00292A50 38 80 00 00 */ li r4, 0 +/* 80296DF4 00292A54 7C 00 30 50 */ subf r0, r0, r6 +/* 80296DF8 00292A58 2C 08 00 00 */ cmpwi r8, 0 +/* 80296DFC 00292A5C B0 85 00 02 */ sth r4, 2(r5) +/* 80296E00 00292A60 90 05 00 04 */ stw r0, 4(r5) +/* 80296E04 00292A64 90 85 00 0C */ stw r4, 0xc(r5) +/* 80296E08 00292A68 91 05 00 08 */ stw r8, 8(r5) +/* 80296E0C 00292A6C 41 82 00 10 */ beq lbl_80296E1C +/* 80296E10 00292A70 80 88 00 0C */ lwz r4, 0xc(r8) +/* 80296E14 00292A74 90 A8 00 0C */ stw r5, 0xc(r8) +/* 80296E18 00292A78 48 00 00 0C */ b lbl_80296E24 +lbl_80296E1C: +/* 80296E1C 00292A7C 80 83 00 00 */ lwz r4, 0(r3) +/* 80296E20 00292A80 90 A3 00 00 */ stw r5, 0(r3) +lbl_80296E24: +/* 80296E24 00292A84 2C 04 00 00 */ cmpwi r4, 0 +/* 80296E28 00292A88 90 85 00 0C */ stw r4, 0xc(r5) +/* 80296E2C 00292A8C 41 82 00 0C */ beq lbl_80296E38 +/* 80296E30 00292A90 90 A4 00 08 */ stw r5, 8(r4) +/* 80296E34 00292A94 48 00 00 08 */ b lbl_80296E3C +lbl_80296E38: +/* 80296E38 00292A98 90 A3 00 04 */ stw r5, 4(r3) +lbl_80296E3C: +/* 80296E3C 00292A9C 38 60 00 01 */ li r3, 1 +lbl_80296E40: +/* 80296E40 00292AA0 38 21 00 10 */ addi r1, r1, 0x10 +/* 80296E44 00292AA4 4E 80 00 20 */ blr + +.global MEMCreateExpHeapEx +MEMCreateExpHeapEx: +/* 80296E48 00292AA8 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80296E4C 00292AAC 7C 08 02 A6 */ mflr r0 +/* 80296E50 00292AB0 7C 84 1A 14 */ add r4, r4, r3 +/* 80296E54 00292AB4 90 01 00 14 */ stw r0, 0x14(r1) +/* 80296E58 00292AB8 38 03 00 03 */ addi r0, r3, 3 +/* 80296E5C 00292ABC 54 86 00 3A */ rlwinm r6, r4, 0, 0, 0x1d +/* 80296E60 00292AC0 93 E1 00 0C */ stw r31, 0xc(r1) +/* 80296E64 00292AC4 54 1F 00 3A */ rlwinm r31, r0, 0, 0, 0x1d +/* 80296E68 00292AC8 7C 1F 30 40 */ cmplw r31, r6 +/* 80296E6C 00292ACC 41 81 00 10 */ bgt lbl_80296E7C +/* 80296E70 00292AD0 7C 1F 30 50 */ subf r0, r31, r6 +/* 80296E74 00292AD4 28 00 00 64 */ cmplwi r0, 0x64 +/* 80296E78 00292AD8 40 80 00 0C */ bge lbl_80296E84 +lbl_80296E7C: +/* 80296E7C 00292ADC 38 60 00 00 */ li r3, 0 +/* 80296E80 00292AE0 48 00 00 64 */ b lbl_80296EE4 +lbl_80296E84: +/* 80296E84 00292AE4 3C 80 45 58 */ lis r4, 0x45585048@ha +/* 80296E88 00292AE8 7C A7 2B 78 */ mr r7, r5 +/* 80296E8C 00292AEC 7F E3 FB 78 */ mr r3, r31 +/* 80296E90 00292AF0 38 BF 00 50 */ addi r5, r31, 0x50 +/* 80296E94 00292AF4 38 84 50 48 */ addi r4, r4, 0x45585048@l +/* 80296E98 00292AF8 4B FF F7 75 */ bl MEMiInitHeapHead +/* 80296E9C 00292AFC 38 A0 00 00 */ li r5, 0 +/* 80296EA0 00292B00 38 80 46 52 */ li r4, 0x4652 +/* 80296EA4 00292B04 B0 BF 00 4C */ sth r5, 0x4c(r31) +/* 80296EA8 00292B08 7F E3 FB 78 */ mr r3, r31 +/* 80296EAC 00292B0C B0 BF 00 4E */ sth r5, 0x4e(r31) +/* 80296EB0 00292B10 80 DF 00 18 */ lwz r6, 0x18(r31) +/* 80296EB4 00292B14 80 FF 00 1C */ lwz r7, 0x1c(r31) +/* 80296EB8 00292B18 38 06 00 10 */ addi r0, r6, 0x10 +/* 80296EBC 00292B1C B0 86 00 00 */ sth r4, 0(r6) +/* 80296EC0 00292B20 7C 00 38 50 */ subf r0, r0, r7 +/* 80296EC4 00292B24 B0 A6 00 02 */ sth r5, 2(r6) +/* 80296EC8 00292B28 90 06 00 04 */ stw r0, 4(r6) +/* 80296ECC 00292B2C 90 A6 00 08 */ stw r5, 8(r6) +/* 80296ED0 00292B30 90 A6 00 0C */ stw r5, 0xc(r6) +/* 80296ED4 00292B34 90 DF 00 3C */ stw r6, 0x3c(r31) +/* 80296ED8 00292B38 90 DF 00 40 */ stw r6, 0x40(r31) +/* 80296EDC 00292B3C 90 BF 00 44 */ stw r5, 0x44(r31) +/* 80296EE0 00292B40 90 BF 00 48 */ stw r5, 0x48(r31) +lbl_80296EE4: +/* 80296EE4 00292B44 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80296EE8 00292B48 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 80296EEC 00292B4C 7C 08 03 A6 */ mtlr r0 +/* 80296EF0 00292B50 38 21 00 10 */ addi r1, r1, 0x10 +/* 80296EF4 00292B54 4E 80 00 20 */ blr + +.global MEMDestroyExpHeap +MEMDestroyExpHeap: +/* 80296EF8 00292B58 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80296EFC 00292B5C 7C 08 02 A6 */ mflr r0 +/* 80296F00 00292B60 90 01 00 14 */ stw r0, 0x14(r1) +/* 80296F04 00292B64 93 E1 00 0C */ stw r31, 0xc(r1) +/* 80296F08 00292B68 7C 7F 1B 78 */ mr r31, r3 +/* 80296F0C 00292B6C 4B FF F8 C1 */ bl MEMiFinalizeHeap +/* 80296F10 00292B70 7F E3 FB 78 */ mr r3, r31 +/* 80296F14 00292B74 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 80296F18 00292B78 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80296F1C 00292B7C 7C 08 03 A6 */ mtlr r0 +/* 80296F20 00292B80 38 21 00 10 */ addi r1, r1, 0x10 +/* 80296F24 00292B84 4E 80 00 20 */ blr + +.global MEMAllocFromExpHeapEx +MEMAllocFromExpHeapEx: +/* 80296F28 00292B88 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 80296F2C 00292B8C 7C 08 02 A6 */ mflr r0 +/* 80296F30 00292B90 2C 04 00 00 */ cmpwi r4, 0 +/* 80296F34 00292B94 90 01 00 24 */ stw r0, 0x24(r1) +/* 80296F38 00292B98 93 E1 00 1C */ stw r31, 0x1c(r1) +/* 80296F3C 00292B9C 7C BF 2B 78 */ mr r31, r5 +/* 80296F40 00292BA0 93 C1 00 18 */ stw r30, 0x18(r1) +/* 80296F44 00292BA4 7C 9E 23 78 */ mr r30, r4 +/* 80296F48 00292BA8 93 A1 00 14 */ stw r29, 0x14(r1) +/* 80296F4C 00292BAC 7C 7D 1B 78 */ mr r29, r3 +/* 80296F50 00292BB0 40 82 00 08 */ bne lbl_80296F58 +/* 80296F54 00292BB4 3B C0 00 01 */ li r30, 1 +lbl_80296F58: +/* 80296F58 00292BB8 80 03 00 38 */ lwz r0, 0x38(r3) +/* 80296F5C 00292BBC 38 9E 00 03 */ addi r4, r30, 3 +/* 80296F60 00292BC0 54 9E 00 3A */ rlwinm r30, r4, 0, 0, 0x1d +/* 80296F64 00292BC4 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 80296F68 00292BC8 41 82 00 0C */ beq lbl_80296F74 +/* 80296F6C 00292BCC 38 63 00 20 */ addi r3, r3, 0x20 +/* 80296F70 00292BD0 4B FD 89 D9 */ bl OSLockMutex +lbl_80296F74: +/* 80296F74 00292BD4 2C 1F 00 00 */ cmpwi r31, 0 +/* 80296F78 00292BD8 41 80 00 18 */ blt lbl_80296F90 +/* 80296F7C 00292BDC 7F A3 EB 78 */ mr r3, r29 +/* 80296F80 00292BE0 7F C4 F3 78 */ mr r4, r30 +/* 80296F84 00292BE4 7F E5 FB 78 */ mr r5, r31 +/* 80296F88 00292BE8 4B FF FB B5 */ bl AllocFromHead_ +/* 80296F8C 00292BEC 48 00 00 14 */ b lbl_80296FA0 +lbl_80296F90: +/* 80296F90 00292BF0 7F A3 EB 78 */ mr r3, r29 +/* 80296F94 00292BF4 7F C4 F3 78 */ mr r4, r30 +/* 80296F98 00292BF8 7C BF 00 D0 */ neg r5, r31 +/* 80296F9C 00292BFC 4B FF FC 7D */ bl AllocFromTail_ +lbl_80296FA0: +/* 80296FA0 00292C00 80 1D 00 38 */ lwz r0, 0x38(r29) +/* 80296FA4 00292C04 7C 7F 1B 78 */ mr r31, r3 +/* 80296FA8 00292C08 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 80296FAC 00292C0C 41 82 00 0C */ beq lbl_80296FB8 +/* 80296FB0 00292C10 38 7D 00 20 */ addi r3, r29, 0x20 +/* 80296FB4 00292C14 4B FD 8A 71 */ bl OSUnlockMutex +lbl_80296FB8: +/* 80296FB8 00292C18 7F E3 FB 78 */ mr r3, r31 +/* 80296FBC 00292C1C 83 E1 00 1C */ lwz r31, 0x1c(r1) +/* 80296FC0 00292C20 83 C1 00 18 */ lwz r30, 0x18(r1) +/* 80296FC4 00292C24 83 A1 00 14 */ lwz r29, 0x14(r1) +/* 80296FC8 00292C28 80 01 00 24 */ lwz r0, 0x24(r1) +/* 80296FCC 00292C2C 7C 08 03 A6 */ mtlr r0 +/* 80296FD0 00292C30 38 21 00 20 */ addi r1, r1, 0x20 +/* 80296FD4 00292C34 4E 80 00 20 */ blr + +.global MEMResizeForMBlockExpHeap +MEMResizeForMBlockExpHeap: +/* 80296FD8 00292C38 94 21 FF D0 */ stwu r1, -0x30(r1) +/* 80296FDC 00292C3C 7C 08 02 A6 */ mflr r0 +/* 80296FE0 00292C40 90 01 00 34 */ stw r0, 0x34(r1) +/* 80296FE4 00292C44 39 61 00 30 */ addi r11, r1, 0x30 +/* 80296FE8 00292C48 4B F3 01 3D */ bl _savegpr_26 +/* 80296FEC 00292C4C 38 A5 00 03 */ addi r5, r5, 3 +/* 80296FF0 00292C50 80 04 FF F4 */ lwz r0, -0xc(r4) +/* 80296FF4 00292C54 54 BD 00 3A */ rlwinm r29, r5, 0, 0, 0x1d +/* 80296FF8 00292C58 3B C4 FF F0 */ addi r30, r4, -16 +/* 80296FFC 00292C5C 7C 1D 00 40 */ cmplw r29, r0 +/* 80297000 00292C60 7C 7B 1B 78 */ mr r27, r3 +/* 80297004 00292C64 7C 9C 23 78 */ mr r28, r4 +/* 80297008 00292C68 3B E3 00 3C */ addi r31, r3, 0x3c +/* 8029700C 00292C6C 40 82 00 0C */ bne lbl_80297018 +/* 80297010 00292C70 7F A3 EB 78 */ mr r3, r29 +/* 80297014 00292C74 48 00 01 98 */ b lbl_802971AC +lbl_80297018: +/* 80297018 00292C78 80 03 00 38 */ lwz r0, 0x38(r3) +/* 8029701C 00292C7C 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 80297020 00292C80 41 82 00 0C */ beq lbl_8029702C +/* 80297024 00292C84 38 63 00 20 */ addi r3, r3, 0x20 +/* 80297028 00292C88 4B FD 89 21 */ bl OSLockMutex +lbl_8029702C: +/* 8029702C 00292C8C 83 5E 00 04 */ lwz r26, 4(r30) +/* 80297030 00292C90 7C 1D D0 40 */ cmplw r29, r26 +/* 80297034 00292C94 40 81 01 2C */ ble lbl_80297160 +/* 80297038 00292C98 7C 7E D2 14 */ add r3, r30, r26 +/* 8029703C 00292C9C 80 FF 00 00 */ lwz r7, 0(r31) +/* 80297040 00292CA0 38 03 00 10 */ addi r0, r3, 0x10 +/* 80297044 00292CA4 48 00 00 10 */ b lbl_80297054 +lbl_80297048: +/* 80297048 00292CA8 7C 07 00 40 */ cmplw r7, r0 +/* 8029704C 00292CAC 41 82 00 10 */ beq lbl_8029705C +/* 80297050 00292CB0 80 E7 00 0C */ lwz r7, 0xc(r7) +lbl_80297054: +/* 80297054 00292CB4 2C 07 00 00 */ cmpwi r7, 0 +/* 80297058 00292CB8 40 82 FF F0 */ bne lbl_80297048 +lbl_8029705C: +/* 8029705C 00292CBC 2C 07 00 00 */ cmpwi r7, 0 +/* 80297060 00292CC0 41 82 00 18 */ beq lbl_80297078 +/* 80297064 00292CC4 80 87 00 04 */ lwz r4, 4(r7) +/* 80297068 00292CC8 7C 7A 22 14 */ add r3, r26, r4 +/* 8029706C 00292CCC 38 03 00 10 */ addi r0, r3, 0x10 +/* 80297070 00292CD0 7C 1D 00 40 */ cmplw r29, r0 +/* 80297074 00292CD4 40 81 00 0C */ ble lbl_80297080 +lbl_80297078: +/* 80297078 00292CD8 38 60 00 00 */ li r3, 0 +/* 8029707C 00292CDC 48 00 01 30 */ b lbl_802971AC +lbl_80297080: +/* 80297080 00292CE0 80 A7 00 08 */ lwz r5, 8(r7) +/* 80297084 00292CE4 7C 67 22 14 */ add r3, r7, r4 +/* 80297088 00292CE8 A0 07 00 02 */ lhz r0, 2(r7) +/* 8029708C 00292CEC 38 C3 00 10 */ addi r6, r3, 0x10 +/* 80297090 00292CF0 2C 05 00 00 */ cmpwi r5, 0 +/* 80297094 00292CF4 80 87 00 0C */ lwz r4, 0xc(r7) +/* 80297098 00292CF8 54 00 C6 7E */ rlwinm r0, r0, 0x18, 0x19, 0x1f +/* 8029709C 00292CFC 7C 60 38 50 */ subf r3, r0, r7 +/* 802970A0 00292D00 41 82 00 0C */ beq lbl_802970AC +/* 802970A4 00292D04 90 85 00 0C */ stw r4, 0xc(r5) +/* 802970A8 00292D08 48 00 00 08 */ b lbl_802970B0 +lbl_802970AC: +/* 802970AC 00292D0C 90 9F 00 00 */ stw r4, 0(r31) +lbl_802970B0: +/* 802970B0 00292D10 2C 04 00 00 */ cmpwi r4, 0 +/* 802970B4 00292D14 41 82 00 0C */ beq lbl_802970C0 +/* 802970B8 00292D18 90 A4 00 08 */ stw r5, 8(r4) +/* 802970BC 00292D1C 48 00 00 08 */ b lbl_802970C4 +lbl_802970C0: +/* 802970C0 00292D20 90 BF 00 04 */ stw r5, 4(r31) +lbl_802970C4: +/* 802970C4 00292D24 7C FD E2 14 */ add r7, r29, r28 +/* 802970C8 00292D28 7C 07 30 50 */ subf r0, r7, r6 +/* 802970CC 00292D2C 28 00 00 10 */ cmplwi r0, 0x10 +/* 802970D0 00292D30 40 80 00 08 */ bge lbl_802970D8 +/* 802970D4 00292D34 7C C7 33 78 */ mr r7, r6 +lbl_802970D8: +/* 802970D8 00292D38 7C 07 30 50 */ subf r0, r7, r6 +/* 802970DC 00292D3C 7C 9C 38 50 */ subf r4, r28, r7 +/* 802970E0 00292D40 28 00 00 10 */ cmplwi r0, 0x10 +/* 802970E4 00292D44 90 9E 00 04 */ stw r4, 4(r30) +/* 802970E8 00292D48 41 80 00 5C */ blt lbl_80297144 +/* 802970EC 00292D4C 38 80 46 52 */ li r4, 0x4652 +/* 802970F0 00292D50 38 07 00 10 */ addi r0, r7, 0x10 +/* 802970F4 00292D54 B0 87 00 00 */ sth r4, 0(r7) +/* 802970F8 00292D58 38 80 00 00 */ li r4, 0 +/* 802970FC 00292D5C 7C 00 30 50 */ subf r0, r0, r6 +/* 80297100 00292D60 2C 05 00 00 */ cmpwi r5, 0 +/* 80297104 00292D64 B0 87 00 02 */ sth r4, 2(r7) +/* 80297108 00292D68 90 07 00 04 */ stw r0, 4(r7) +/* 8029710C 00292D6C 90 87 00 0C */ stw r4, 0xc(r7) +/* 80297110 00292D70 90 A7 00 08 */ stw r5, 8(r7) +/* 80297114 00292D74 41 82 00 10 */ beq lbl_80297124 +/* 80297118 00292D78 80 85 00 0C */ lwz r4, 0xc(r5) +/* 8029711C 00292D7C 90 E5 00 0C */ stw r7, 0xc(r5) +/* 80297120 00292D80 48 00 00 0C */ b lbl_8029712C +lbl_80297124: +/* 80297124 00292D84 80 9F 00 00 */ lwz r4, 0(r31) +/* 80297128 00292D88 90 FF 00 00 */ stw r7, 0(r31) +lbl_8029712C: +/* 8029712C 00292D8C 2C 04 00 00 */ cmpwi r4, 0 +/* 80297130 00292D90 90 87 00 0C */ stw r4, 0xc(r7) +/* 80297134 00292D94 41 82 00 0C */ beq lbl_80297140 +/* 80297138 00292D98 90 E4 00 08 */ stw r7, 8(r4) +/* 8029713C 00292D9C 48 00 00 08 */ b lbl_80297144 +lbl_80297140: +/* 80297140 00292DA0 90 FF 00 04 */ stw r7, 4(r31) +lbl_80297144: +/* 80297144 00292DA4 80 1B 00 38 */ lwz r0, 0x38(r27) +/* 80297148 00292DA8 7C A3 38 50 */ subf r5, r3, r7 +/* 8029714C 00292DAC 54 00 07 FF */ clrlwi. r0, r0, 0x1f +/* 80297150 00292DB0 41 82 00 44 */ beq lbl_80297194 +/* 80297154 00292DB4 38 80 00 00 */ li r4, 0 +/* 80297158 00292DB8 4B D6 CF AD */ bl memset +/* 8029715C 00292DBC 48 00 00 38 */ b lbl_80297194 +lbl_80297160: +/* 80297160 00292DC0 7C 1D E2 14 */ add r0, r29, r28 +/* 80297164 00292DC4 7F E3 FB 78 */ mr r3, r31 +/* 80297168 00292DC8 90 01 00 08 */ stw r0, 8(r1) +/* 8029716C 00292DCC 38 81 00 08 */ addi r4, r1, 8 +/* 80297170 00292DD0 80 1E 00 04 */ lwz r0, 4(r30) +/* 80297174 00292DD4 7C BE 02 14 */ add r5, r30, r0 +/* 80297178 00292DD8 38 05 00 10 */ addi r0, r5, 0x10 +/* 8029717C 00292DDC 90 01 00 0C */ stw r0, 0xc(r1) +/* 80297180 00292DE0 93 BE 00 04 */ stw r29, 4(r30) +/* 80297184 00292DE4 4B FF FB 5D */ bl RecycleRegion_ +/* 80297188 00292DE8 2C 03 00 00 */ cmpwi r3, 0 +/* 8029718C 00292DEC 40 82 00 08 */ bne lbl_80297194 +/* 80297190 00292DF0 93 5E 00 04 */ stw r26, 4(r30) +lbl_80297194: +/* 80297194 00292DF4 80 1B 00 38 */ lwz r0, 0x38(r27) +/* 80297198 00292DF8 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 8029719C 00292DFC 41 82 00 0C */ beq lbl_802971A8 +/* 802971A0 00292E00 38 7B 00 20 */ addi r3, r27, 0x20 +/* 802971A4 00292E04 4B FD 88 81 */ bl OSUnlockMutex +lbl_802971A8: +/* 802971A8 00292E08 80 7E 00 04 */ lwz r3, 4(r30) +lbl_802971AC: +/* 802971AC 00292E0C 39 61 00 30 */ addi r11, r1, 0x30 +/* 802971B0 00292E10 4B F2 FF C1 */ bl _restgpr_26 +/* 802971B4 00292E14 80 01 00 34 */ lwz r0, 0x34(r1) +/* 802971B8 00292E18 7C 08 03 A6 */ mtlr r0 +/* 802971BC 00292E1C 38 21 00 30 */ addi r1, r1, 0x30 +/* 802971C0 00292E20 4E 80 00 20 */ blr + +.global MEMFreeToExpHeap +MEMFreeToExpHeap: +/* 802971C4 00292E24 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 802971C8 00292E28 7C 08 02 A6 */ mflr r0 +/* 802971CC 00292E2C 2C 04 00 00 */ cmpwi r4, 0 +/* 802971D0 00292E30 90 01 00 24 */ stw r0, 0x24(r1) +/* 802971D4 00292E34 93 E1 00 1C */ stw r31, 0x1c(r1) +/* 802971D8 00292E38 93 C1 00 18 */ stw r30, 0x18(r1) +/* 802971DC 00292E3C 93 A1 00 14 */ stw r29, 0x14(r1) +/* 802971E0 00292E40 7C 7D 1B 78 */ mr r29, r3 +/* 802971E4 00292E44 41 82 00 90 */ beq lbl_80297274 +/* 802971E8 00292E48 80 03 00 38 */ lwz r0, 0x38(r3) +/* 802971EC 00292E4C 3B E3 00 3C */ addi r31, r3, 0x3c +/* 802971F0 00292E50 3B C4 FF F0 */ addi r30, r4, -16 +/* 802971F4 00292E54 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 802971F8 00292E58 41 82 00 0C */ beq lbl_80297204 +/* 802971FC 00292E5C 38 63 00 20 */ addi r3, r3, 0x20 +/* 80297200 00292E60 4B FD 87 49 */ bl OSLockMutex +lbl_80297204: +/* 80297204 00292E64 A0 1E 00 02 */ lhz r0, 2(r30) +/* 80297208 00292E68 54 00 C6 7E */ rlwinm r0, r0, 0x18, 0x19, 0x1f +/* 8029720C 00292E6C 7C 00 F0 50 */ subf r0, r0, r30 +/* 80297210 00292E70 90 01 00 08 */ stw r0, 8(r1) +/* 80297214 00292E74 80 1E 00 04 */ lwz r0, 4(r30) +/* 80297218 00292E78 7C 7E 02 14 */ add r3, r30, r0 +/* 8029721C 00292E7C 38 03 00 10 */ addi r0, r3, 0x10 +/* 80297220 00292E80 90 01 00 0C */ stw r0, 0xc(r1) +/* 80297224 00292E84 80 9E 00 08 */ lwz r4, 8(r30) +/* 80297228 00292E88 80 7E 00 0C */ lwz r3, 0xc(r30) +/* 8029722C 00292E8C 2C 04 00 00 */ cmpwi r4, 0 +/* 80297230 00292E90 41 82 00 0C */ beq lbl_8029723C +/* 80297234 00292E94 90 64 00 0C */ stw r3, 0xc(r4) +/* 80297238 00292E98 48 00 00 08 */ b lbl_80297240 +lbl_8029723C: +/* 8029723C 00292E9C 90 7F 00 08 */ stw r3, 8(r31) +lbl_80297240: +/* 80297240 00292EA0 2C 03 00 00 */ cmpwi r3, 0 +/* 80297244 00292EA4 41 82 00 0C */ beq lbl_80297250 +/* 80297248 00292EA8 90 83 00 08 */ stw r4, 8(r3) +/* 8029724C 00292EAC 48 00 00 08 */ b lbl_80297254 +lbl_80297250: +/* 80297250 00292EB0 90 9F 00 0C */ stw r4, 0xc(r31) +lbl_80297254: +/* 80297254 00292EB4 7F E3 FB 78 */ mr r3, r31 +/* 80297258 00292EB8 38 81 00 08 */ addi r4, r1, 8 +/* 8029725C 00292EBC 4B FF FA 85 */ bl RecycleRegion_ +/* 80297260 00292EC0 80 1D 00 38 */ lwz r0, 0x38(r29) +/* 80297264 00292EC4 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 80297268 00292EC8 41 82 00 0C */ beq lbl_80297274 +/* 8029726C 00292ECC 38 7D 00 20 */ addi r3, r29, 0x20 +/* 80297270 00292ED0 4B FD 87 B5 */ bl OSUnlockMutex +lbl_80297274: +/* 80297274 00292ED4 80 01 00 24 */ lwz r0, 0x24(r1) +/* 80297278 00292ED8 83 E1 00 1C */ lwz r31, 0x1c(r1) +/* 8029727C 00292EDC 83 C1 00 18 */ lwz r30, 0x18(r1) +/* 80297280 00292EE0 83 A1 00 14 */ lwz r29, 0x14(r1) +/* 80297284 00292EE4 7C 08 03 A6 */ mtlr r0 +/* 80297288 00292EE8 38 21 00 20 */ addi r1, r1, 0x20 +/* 8029728C 00292EEC 4E 80 00 20 */ blr + +.global MEMGetTotalFreeSizeForExpHeap +MEMGetTotalFreeSizeForExpHeap: +/* 80297290 00292EF0 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80297294 00292EF4 7C 08 02 A6 */ mflr r0 +/* 80297298 00292EF8 90 01 00 14 */ stw r0, 0x14(r1) +/* 8029729C 00292EFC 93 E1 00 0C */ stw r31, 0xc(r1) +/* 802972A0 00292F00 3B E0 00 00 */ li r31, 0 +/* 802972A4 00292F04 93 C1 00 08 */ stw r30, 8(r1) +/* 802972A8 00292F08 7C 7E 1B 78 */ mr r30, r3 +/* 802972AC 00292F0C 80 03 00 38 */ lwz r0, 0x38(r3) +/* 802972B0 00292F10 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 802972B4 00292F14 41 82 00 0C */ beq lbl_802972C0 +/* 802972B8 00292F18 38 63 00 20 */ addi r3, r3, 0x20 +/* 802972BC 00292F1C 4B FD 86 8D */ bl OSLockMutex +lbl_802972C0: +/* 802972C0 00292F20 80 7E 00 3C */ lwz r3, 0x3c(r30) +/* 802972C4 00292F24 48 00 00 10 */ b lbl_802972D4 +lbl_802972C8: +/* 802972C8 00292F28 80 03 00 04 */ lwz r0, 4(r3) +/* 802972CC 00292F2C 80 63 00 0C */ lwz r3, 0xc(r3) +/* 802972D0 00292F30 7F FF 02 14 */ add r31, r31, r0 +lbl_802972D4: +/* 802972D4 00292F34 2C 03 00 00 */ cmpwi r3, 0 +/* 802972D8 00292F38 40 82 FF F0 */ bne lbl_802972C8 +/* 802972DC 00292F3C 80 1E 00 38 */ lwz r0, 0x38(r30) +/* 802972E0 00292F40 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 802972E4 00292F44 41 82 00 0C */ beq lbl_802972F0 +/* 802972E8 00292F48 38 7E 00 20 */ addi r3, r30, 0x20 +/* 802972EC 00292F4C 4B FD 87 39 */ bl OSUnlockMutex +lbl_802972F0: +/* 802972F0 00292F50 7F E3 FB 78 */ mr r3, r31 +/* 802972F4 00292F54 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 802972F8 00292F58 83 C1 00 08 */ lwz r30, 8(r1) +/* 802972FC 00292F5C 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80297300 00292F60 7C 08 03 A6 */ mtlr r0 +/* 80297304 00292F64 38 21 00 10 */ addi r1, r1, 0x10 +/* 80297308 00292F68 4E 80 00 20 */ blr + +.global MEMSetGroupIDForExpHeap +MEMSetGroupIDForExpHeap: +/* 8029730C 00292F6C 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 80297310 00292F70 7C 08 02 A6 */ mflr r0 +/* 80297314 00292F74 90 01 00 24 */ stw r0, 0x24(r1) +/* 80297318 00292F78 93 E1 00 1C */ stw r31, 0x1c(r1) +/* 8029731C 00292F7C 93 C1 00 18 */ stw r30, 0x18(r1) +/* 80297320 00292F80 7C 9E 23 78 */ mr r30, r4 +/* 80297324 00292F84 93 A1 00 14 */ stw r29, 0x14(r1) +/* 80297328 00292F88 7C 7D 1B 78 */ mr r29, r3 +/* 8029732C 00292F8C 4B FD 74 31 */ bl OSDisableInterrupts +/* 80297330 00292F90 A3 FD 00 4C */ lhz r31, 0x4c(r29) +/* 80297334 00292F94 B3 DD 00 4C */ sth r30, 0x4c(r29) +/* 80297338 00292F98 4B FD 74 4D */ bl OSRestoreInterrupts +/* 8029733C 00292F9C 7F E3 FB 78 */ mr r3, r31 +/* 80297340 00292FA0 83 E1 00 1C */ lwz r31, 0x1c(r1) +/* 80297344 00292FA4 83 C1 00 18 */ lwz r30, 0x18(r1) +/* 80297348 00292FA8 83 A1 00 14 */ lwz r29, 0x14(r1) +/* 8029734C 00292FAC 80 01 00 24 */ lwz r0, 0x24(r1) +/* 80297350 00292FB0 7C 08 03 A6 */ mtlr r0 +/* 80297354 00292FB4 38 21 00 20 */ addi r1, r1, 0x20 +/* 80297358 00292FB8 4E 80 00 20 */ blr + +.global MEMVisitAllocatedForExpHeap +MEMVisitAllocatedForExpHeap: +/* 8029735C 00292FBC 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 80297360 00292FC0 7C 08 02 A6 */ mflr r0 +/* 80297364 00292FC4 90 01 00 24 */ stw r0, 0x24(r1) +/* 80297368 00292FC8 93 E1 00 1C */ stw r31, 0x1c(r1) +/* 8029736C 00292FCC 93 C1 00 18 */ stw r30, 0x18(r1) +/* 80297370 00292FD0 7C BE 2B 78 */ mr r30, r5 +/* 80297374 00292FD4 93 A1 00 14 */ stw r29, 0x14(r1) +/* 80297378 00292FD8 7C 9D 23 78 */ mr r29, r4 +/* 8029737C 00292FDC 93 81 00 10 */ stw r28, 0x10(r1) +/* 80297380 00292FE0 7C 7C 1B 78 */ mr r28, r3 +/* 80297384 00292FE4 80 03 00 38 */ lwz r0, 0x38(r3) +/* 80297388 00292FE8 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 8029738C 00292FEC 41 82 00 0C */ beq lbl_80297398 +/* 80297390 00292FF0 38 63 00 20 */ addi r3, r3, 0x20 +/* 80297394 00292FF4 4B FD 85 B5 */ bl OSLockMutex +lbl_80297398: +/* 80297398 00292FF8 83 FC 00 44 */ lwz r31, 0x44(r28) +/* 8029739C 00292FFC 48 00 00 20 */ b lbl_802973BC +lbl_802973A0: +/* 802973A0 00293000 7F AC EB 78 */ mr r12, r29 +/* 802973A4 00293004 38 7F 00 10 */ addi r3, r31, 0x10 +/* 802973A8 00293008 7F 84 E3 78 */ mr r4, r28 +/* 802973AC 0029300C 7F C5 F3 78 */ mr r5, r30 +/* 802973B0 00293010 83 FF 00 0C */ lwz r31, 0xc(r31) +/* 802973B4 00293014 7D 89 03 A6 */ mtctr r12 +/* 802973B8 00293018 4E 80 04 21 */ bctrl +lbl_802973BC: +/* 802973BC 0029301C 2C 1F 00 00 */ cmpwi r31, 0 +/* 802973C0 00293020 40 82 FF E0 */ bne lbl_802973A0 +/* 802973C4 00293024 80 1C 00 38 */ lwz r0, 0x38(r28) +/* 802973C8 00293028 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 802973CC 0029302C 41 82 00 0C */ beq lbl_802973D8 +/* 802973D0 00293030 38 7C 00 20 */ addi r3, r28, 0x20 +/* 802973D4 00293034 4B FD 86 51 */ bl OSUnlockMutex +lbl_802973D8: +/* 802973D8 00293038 80 01 00 24 */ lwz r0, 0x24(r1) +/* 802973DC 0029303C 83 E1 00 1C */ lwz r31, 0x1c(r1) +/* 802973E0 00293040 83 C1 00 18 */ lwz r30, 0x18(r1) +/* 802973E4 00293044 83 A1 00 14 */ lwz r29, 0x14(r1) +/* 802973E8 00293048 83 81 00 10 */ lwz r28, 0x10(r1) +/* 802973EC 0029304C 7C 08 03 A6 */ mtlr r0 +/* 802973F0 00293050 38 21 00 20 */ addi r1, r1, 0x20 +/* 802973F4 00293054 4E 80 00 20 */ blr + +.global MEMGetSizeForMBlockExpHeap +MEMGetSizeForMBlockExpHeap: +/* 802973F8 00293058 80 63 FF F4 */ lwz r3, -0xc(r3) +/* 802973FC 0029305C 4E 80 00 20 */ blr + +.global MEMGetGroupIDForMBlockExpHeap +MEMGetGroupIDForMBlockExpHeap: +/* 80297400 00293060 A0 03 FF F2 */ lhz r0, -0xe(r3) +/* 80297404 00293064 54 03 06 3E */ clrlwi r3, r0, 0x18 +/* 80297408 00293068 4E 80 00 20 */ blr diff --git a/asm/SDK/MEM/mem_heapCommon.s b/asm/SDK/MEM/mem_heapCommon.s new file mode 100644 index 0000000..6e2cc20 --- /dev/null +++ b/asm/SDK/MEM/mem_heapCommon.s @@ -0,0 +1,334 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global FindContainHeap_ +FindContainHeap_: +/* 802964CC 0029212C 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 802964D0 00292130 7C 08 02 A6 */ mflr r0 +/* 802964D4 00292134 90 01 00 24 */ stw r0, 0x24(r1) +/* 802964D8 00292138 93 E1 00 1C */ stw r31, 0x1c(r1) +/* 802964DC 0029213C 93 C1 00 18 */ stw r30, 0x18(r1) +/* 802964E0 00292140 7C 7E 1B 78 */ mr r30, r3 +/* 802964E4 00292144 93 A1 00 14 */ stw r29, 0x14(r1) +/* 802964E8 00292148 3B A0 00 00 */ li r29, 0 +/* 802964EC 0029214C 93 81 00 10 */ stw r28, 0x10(r1) +/* 802964F0 00292150 7C 9C 23 78 */ mr r28, r4 +/* 802964F4 00292154 48 00 00 DC */ b lbl_802965D0 +lbl_802964F8: +/* 802964F8 00292158 80 03 00 18 */ lwz r0, 0x18(r3) +/* 802964FC 0029215C 7C 00 E0 40 */ cmplw r0, r28 +/* 80296500 00292160 41 81 00 D0 */ bgt lbl_802965D0 +/* 80296504 00292164 80 03 00 1C */ lwz r0, 0x1c(r3) +/* 80296508 00292168 7C 1C 00 40 */ cmplw r28, r0 +/* 8029650C 0029216C 40 80 00 C4 */ bge lbl_802965D0 +/* 80296510 00292170 3B E0 00 00 */ li r31, 0 +/* 80296514 00292174 48 00 00 8C */ b lbl_802965A0 +lbl_80296518: +/* 80296518 00292178 80 03 00 18 */ lwz r0, 0x18(r3) +/* 8029651C 0029217C 7C 00 E0 40 */ cmplw r0, r28 +/* 80296520 00292180 41 81 00 80 */ bgt lbl_802965A0 +/* 80296524 00292184 80 03 00 1C */ lwz r0, 0x1c(r3) +/* 80296528 00292188 7C 1C 00 40 */ cmplw r28, r0 +/* 8029652C 0029218C 40 80 00 74 */ bge lbl_802965A0 +/* 80296530 00292190 3B C0 00 00 */ li r30, 0 +/* 80296534 00292194 48 00 00 3C */ b lbl_80296570 +lbl_80296538: +/* 80296538 00292198 80 03 00 18 */ lwz r0, 0x18(r3) +/* 8029653C 0029219C 7C 00 E0 40 */ cmplw r0, r28 +/* 80296540 002921A0 41 81 00 30 */ bgt lbl_80296570 +/* 80296544 002921A4 80 03 00 1C */ lwz r0, 0x1c(r3) +/* 80296548 002921A8 7C 1C 00 40 */ cmplw r28, r0 +/* 8029654C 002921AC 40 80 00 24 */ bge lbl_80296570 +/* 80296550 002921B0 7F 84 E3 78 */ mr r4, r28 +/* 80296554 002921B4 38 63 00 0C */ addi r3, r3, 0xc +/* 80296558 002921B8 4B FF FF 75 */ bl FindContainHeap_ +/* 8029655C 002921BC 2C 03 00 00 */ cmpwi r3, 0 +/* 80296560 002921C0 41 82 00 08 */ beq lbl_80296568 +/* 80296564 002921C4 48 00 00 28 */ b lbl_8029658C +lbl_80296568: +/* 80296568 002921C8 7F C3 F3 78 */ mr r3, r30 +/* 8029656C 002921CC 48 00 00 20 */ b lbl_8029658C +lbl_80296570: +/* 80296570 002921D0 7F C4 F3 78 */ mr r4, r30 +/* 80296574 002921D4 38 7F 00 0C */ addi r3, r31, 0xc +/* 80296578 002921D8 48 00 12 F9 */ bl func_80297870 +/* 8029657C 002921DC 2C 03 00 00 */ cmpwi r3, 0 +/* 80296580 002921E0 7C 7E 1B 78 */ mr r30, r3 +/* 80296584 002921E4 40 82 FF B4 */ bne lbl_80296538 +/* 80296588 002921E8 38 60 00 00 */ li r3, 0 +lbl_8029658C: +/* 8029658C 002921EC 2C 03 00 00 */ cmpwi r3, 0 +/* 80296590 002921F0 41 82 00 08 */ beq lbl_80296598 +/* 80296594 002921F4 48 00 00 28 */ b lbl_802965BC +lbl_80296598: +/* 80296598 002921F8 7F E3 FB 78 */ mr r3, r31 +/* 8029659C 002921FC 48 00 00 20 */ b lbl_802965BC +lbl_802965A0: +/* 802965A0 00292200 7F E4 FB 78 */ mr r4, r31 +/* 802965A4 00292204 38 7D 00 0C */ addi r3, r29, 0xc +/* 802965A8 00292208 48 00 12 C9 */ bl func_80297870 +/* 802965AC 0029220C 2C 03 00 00 */ cmpwi r3, 0 +/* 802965B0 00292210 7C 7F 1B 78 */ mr r31, r3 +/* 802965B4 00292214 40 82 FF 64 */ bne lbl_80296518 +/* 802965B8 00292218 38 60 00 00 */ li r3, 0 +lbl_802965BC: +/* 802965BC 0029221C 2C 03 00 00 */ cmpwi r3, 0 +/* 802965C0 00292220 41 82 00 08 */ beq lbl_802965C8 +/* 802965C4 00292224 48 00 00 28 */ b lbl_802965EC +lbl_802965C8: +/* 802965C8 00292228 7F A3 EB 78 */ mr r3, r29 +/* 802965CC 0029222C 48 00 00 20 */ b lbl_802965EC +lbl_802965D0: +/* 802965D0 00292230 7F C3 F3 78 */ mr r3, r30 +/* 802965D4 00292234 7F A4 EB 78 */ mr r4, r29 +/* 802965D8 00292238 48 00 12 99 */ bl func_80297870 +/* 802965DC 0029223C 2C 03 00 00 */ cmpwi r3, 0 +/* 802965E0 00292240 7C 7D 1B 78 */ mr r29, r3 +/* 802965E4 00292244 40 82 FF 14 */ bne lbl_802964F8 +/* 802965E8 00292248 38 60 00 00 */ li r3, 0 +lbl_802965EC: +/* 802965EC 0029224C 80 01 00 24 */ lwz r0, 0x24(r1) +/* 802965F0 00292250 83 E1 00 1C */ lwz r31, 0x1c(r1) +/* 802965F4 00292254 83 C1 00 18 */ lwz r30, 0x18(r1) +/* 802965F8 00292258 83 A1 00 14 */ lwz r29, 0x14(r1) +/* 802965FC 0029225C 83 81 00 10 */ lwz r28, 0x10(r1) +/* 80296600 00292260 7C 08 03 A6 */ mtlr r0 +/* 80296604 00292264 38 21 00 20 */ addi r1, r1, 0x20 +/* 80296608 00292268 4E 80 00 20 */ blr + +.global MEMiInitHeapHead +MEMiInitHeapHead: +/* 8029660C 0029226C 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 80296610 00292270 7C 08 02 A6 */ mflr r0 +/* 80296614 00292274 90 01 00 24 */ stw r0, 0x24(r1) +/* 80296618 00292278 39 61 00 20 */ addi r11, r1, 0x20 +/* 8029661C 0029227C 4B F3 0B 0D */ bl _savegpr_27 +/* 80296620 00292280 38 00 00 00 */ li r0, 0 +/* 80296624 00292284 90 83 00 00 */ stw r4, 0(r3) +/* 80296628 00292288 50 E0 06 3E */ rlwimi r0, r7, 0, 0x18, 0x1f +/* 8029662C 0029228C 7C 7B 1B 78 */ mr r27, r3 +/* 80296630 00292290 90 A3 00 18 */ stw r5, 0x18(r3) +/* 80296634 00292294 38 80 00 04 */ li r4, 4 +/* 80296638 00292298 90 C3 00 1C */ stw r6, 0x1c(r3) +/* 8029663C 0029229C 90 03 00 38 */ stw r0, 0x38(r3) +/* 80296640 002922A0 38 63 00 0C */ addi r3, r3, 0xc +/* 80296644 002922A4 48 00 11 39 */ bl func_8029777C +/* 80296648 002922A8 80 0D AC 48 */ lwz r0, lbl_8063FF08-_SDA_BASE_(r13) +/* 8029664C 002922AC 2C 00 00 00 */ cmpwi r0, 0 +/* 80296650 002922B0 40 82 00 28 */ bne lbl_80296678 +/* 80296654 002922B4 3C 60 80 53 */ lis r3, lbl_805311C0@ha +/* 80296658 002922B8 38 80 00 04 */ li r4, 4 +/* 8029665C 002922BC 38 63 11 C0 */ addi r3, r3, lbl_805311C0@l +/* 80296660 002922C0 48 00 11 1D */ bl func_8029777C +/* 80296664 002922C4 3C 60 80 53 */ lis r3, lbl_805311D0@ha +/* 80296668 002922C8 38 63 11 D0 */ addi r3, r3, lbl_805311D0@l +/* 8029666C 002922CC 4B FD 92 A5 */ bl OSInitMutex +/* 80296670 002922D0 38 00 00 01 */ li r0, 1 +/* 80296674 002922D4 90 0D AC 48 */ stw r0, lbl_8063FF08-_SDA_BASE_(r13) +lbl_80296678: +/* 80296678 002922D8 38 7B 00 20 */ addi r3, r27, 0x20 +/* 8029667C 002922DC 4B FD 92 95 */ bl OSInitMutex +/* 80296680 002922E0 3C 60 80 53 */ lis r3, lbl_805311D0@ha +/* 80296684 002922E4 38 63 11 D0 */ addi r3, r3, lbl_805311D0@l +/* 80296688 002922E8 4B FD 92 C1 */ bl OSLockMutex +/* 8029668C 002922EC 3F E0 80 53 */ lis r31, lbl_805311C0@ha +/* 80296690 002922F0 3B C0 00 00 */ li r30, 0 +/* 80296694 002922F4 3B 9F 11 C0 */ addi r28, r31, lbl_805311C0@l +/* 80296698 002922F8 48 00 00 DC */ b lbl_80296774 +lbl_8029669C: +/* 8029669C 002922FC 80 03 00 18 */ lwz r0, 0x18(r3) +/* 802966A0 00292300 7C 00 D8 40 */ cmplw r0, r27 +/* 802966A4 00292304 41 81 00 D0 */ bgt lbl_80296774 +/* 802966A8 00292308 80 03 00 1C */ lwz r0, 0x1c(r3) +/* 802966AC 0029230C 7C 1B 00 40 */ cmplw r27, r0 +/* 802966B0 00292310 40 80 00 C4 */ bge lbl_80296774 +/* 802966B4 00292314 3B E0 00 00 */ li r31, 0 +/* 802966B8 00292318 48 00 00 8C */ b lbl_80296744 +lbl_802966BC: +/* 802966BC 0029231C 80 03 00 18 */ lwz r0, 0x18(r3) +/* 802966C0 00292320 7C 00 D8 40 */ cmplw r0, r27 +/* 802966C4 00292324 41 81 00 80 */ bgt lbl_80296744 +/* 802966C8 00292328 80 03 00 1C */ lwz r0, 0x1c(r3) +/* 802966CC 0029232C 7C 1B 00 40 */ cmplw r27, r0 +/* 802966D0 00292330 40 80 00 74 */ bge lbl_80296744 +/* 802966D4 00292334 3B A0 00 00 */ li r29, 0 +/* 802966D8 00292338 48 00 00 3C */ b lbl_80296714 +lbl_802966DC: +/* 802966DC 0029233C 80 03 00 18 */ lwz r0, 0x18(r3) +/* 802966E0 00292340 7C 00 D8 40 */ cmplw r0, r27 +/* 802966E4 00292344 41 81 00 30 */ bgt lbl_80296714 +/* 802966E8 00292348 80 03 00 1C */ lwz r0, 0x1c(r3) +/* 802966EC 0029234C 7C 1B 00 40 */ cmplw r27, r0 +/* 802966F0 00292350 40 80 00 24 */ bge lbl_80296714 +/* 802966F4 00292354 7F 64 DB 78 */ mr r4, r27 +/* 802966F8 00292358 38 63 00 0C */ addi r3, r3, 0xc +/* 802966FC 0029235C 4B FF FD D1 */ bl FindContainHeap_ +/* 80296700 00292360 2C 03 00 00 */ cmpwi r3, 0 +/* 80296704 00292364 41 82 00 08 */ beq lbl_8029670C +/* 80296708 00292368 48 00 00 28 */ b lbl_80296730 +lbl_8029670C: +/* 8029670C 0029236C 7F A3 EB 78 */ mr r3, r29 +/* 80296710 00292370 48 00 00 20 */ b lbl_80296730 +lbl_80296714: +/* 80296714 00292374 7F A4 EB 78 */ mr r4, r29 +/* 80296718 00292378 38 7F 00 0C */ addi r3, r31, 0xc +/* 8029671C 0029237C 48 00 11 55 */ bl func_80297870 +/* 80296720 00292380 2C 03 00 00 */ cmpwi r3, 0 +/* 80296724 00292384 7C 7D 1B 78 */ mr r29, r3 +/* 80296728 00292388 40 82 FF B4 */ bne lbl_802966DC +/* 8029672C 0029238C 38 60 00 00 */ li r3, 0 +lbl_80296730: +/* 80296730 00292390 2C 03 00 00 */ cmpwi r3, 0 +/* 80296734 00292394 41 82 00 08 */ beq lbl_8029673C +/* 80296738 00292398 48 00 00 28 */ b lbl_80296760 +lbl_8029673C: +/* 8029673C 0029239C 7F E3 FB 78 */ mr r3, r31 +/* 80296740 002923A0 48 00 00 20 */ b lbl_80296760 +lbl_80296744: +/* 80296744 002923A4 7F E4 FB 78 */ mr r4, r31 +/* 80296748 002923A8 38 7E 00 0C */ addi r3, r30, 0xc +/* 8029674C 002923AC 48 00 11 25 */ bl func_80297870 +/* 80296750 002923B0 2C 03 00 00 */ cmpwi r3, 0 +/* 80296754 002923B4 7C 7F 1B 78 */ mr r31, r3 +/* 80296758 002923B8 40 82 FF 64 */ bne lbl_802966BC +/* 8029675C 002923BC 38 60 00 00 */ li r3, 0 +lbl_80296760: +/* 80296760 002923C0 2C 03 00 00 */ cmpwi r3, 0 +/* 80296764 002923C4 41 82 00 08 */ beq lbl_8029676C +/* 80296768 002923C8 48 00 00 28 */ b lbl_80296790 +lbl_8029676C: +/* 8029676C 002923CC 7F C3 F3 78 */ mr r3, r30 +/* 80296770 002923D0 48 00 00 20 */ b lbl_80296790 +lbl_80296774: +/* 80296774 002923D4 7F C4 F3 78 */ mr r4, r30 +/* 80296778 002923D8 38 7F 11 C0 */ addi r3, r31, 0x11c0 +/* 8029677C 002923DC 48 00 10 F5 */ bl func_80297870 +/* 80296780 002923E0 2C 03 00 00 */ cmpwi r3, 0 +/* 80296784 002923E4 7C 7E 1B 78 */ mr r30, r3 +/* 80296788 002923E8 40 82 FF 14 */ bne lbl_8029669C +/* 8029678C 002923EC 38 60 00 00 */ li r3, 0 +lbl_80296790: +/* 80296790 002923F0 2C 03 00 00 */ cmpwi r3, 0 +/* 80296794 002923F4 41 82 00 08 */ beq lbl_8029679C +/* 80296798 002923F8 3B 83 00 0C */ addi r28, r3, 0xc +lbl_8029679C: +/* 8029679C 002923FC 7F 83 E3 78 */ mr r3, r28 +/* 802967A0 00292400 7F 64 DB 78 */ mr r4, r27 +/* 802967A4 00292404 48 00 0F F1 */ bl func_80297794 +/* 802967A8 00292408 3C 60 80 53 */ lis r3, lbl_805311D0@ha +/* 802967AC 0029240C 38 63 11 D0 */ addi r3, r3, lbl_805311D0@l +/* 802967B0 00292410 4B FD 92 75 */ bl OSUnlockMutex +/* 802967B4 00292414 39 61 00 20 */ addi r11, r1, 0x20 +/* 802967B8 00292418 4B F3 09 BD */ bl _restgpr_27 +/* 802967BC 0029241C 80 01 00 24 */ lwz r0, 0x24(r1) +/* 802967C0 00292420 7C 08 03 A6 */ mtlr r0 +/* 802967C4 00292424 38 21 00 20 */ addi r1, r1, 0x20 +/* 802967C8 00292428 4E 80 00 20 */ blr + +.global MEMiFinalizeHeap +MEMiFinalizeHeap: +/* 802967CC 0029242C 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 802967D0 00292430 7C 08 02 A6 */ mflr r0 +/* 802967D4 00292434 90 01 00 24 */ stw r0, 0x24(r1) +/* 802967D8 00292438 39 61 00 20 */ addi r11, r1, 0x20 +/* 802967DC 0029243C 4B F3 09 4D */ bl _savegpr_27 +/* 802967E0 00292440 3C 80 80 53 */ lis r4, lbl_805311D0@ha +/* 802967E4 00292444 7C 7B 1B 78 */ mr r27, r3 +/* 802967E8 00292448 38 64 11 D0 */ addi r3, r4, lbl_805311D0@l +/* 802967EC 0029244C 4B FD 91 5D */ bl OSLockMutex +/* 802967F0 00292450 3F E0 80 53 */ lis r31, lbl_805311C0@ha +/* 802967F4 00292454 3B C0 00 00 */ li r30, 0 +/* 802967F8 00292458 3B 9F 11 C0 */ addi r28, r31, lbl_805311C0@l +/* 802967FC 0029245C 48 00 00 DC */ b lbl_802968D8 +lbl_80296800: +/* 80296800 00292460 80 03 00 18 */ lwz r0, 0x18(r3) +/* 80296804 00292464 7C 00 D8 40 */ cmplw r0, r27 +/* 80296808 00292468 41 81 00 D0 */ bgt lbl_802968D8 +/* 8029680C 0029246C 80 03 00 1C */ lwz r0, 0x1c(r3) +/* 80296810 00292470 7C 1B 00 40 */ cmplw r27, r0 +/* 80296814 00292474 40 80 00 C4 */ bge lbl_802968D8 +/* 80296818 00292478 3B E0 00 00 */ li r31, 0 +/* 8029681C 0029247C 48 00 00 8C */ b lbl_802968A8 +lbl_80296820: +/* 80296820 00292480 80 03 00 18 */ lwz r0, 0x18(r3) +/* 80296824 00292484 7C 00 D8 40 */ cmplw r0, r27 +/* 80296828 00292488 41 81 00 80 */ bgt lbl_802968A8 +/* 8029682C 0029248C 80 03 00 1C */ lwz r0, 0x1c(r3) +/* 80296830 00292490 7C 1B 00 40 */ cmplw r27, r0 +/* 80296834 00292494 40 80 00 74 */ bge lbl_802968A8 +/* 80296838 00292498 3B A0 00 00 */ li r29, 0 +/* 8029683C 0029249C 48 00 00 3C */ b lbl_80296878 +lbl_80296840: +/* 80296840 002924A0 80 03 00 18 */ lwz r0, 0x18(r3) +/* 80296844 002924A4 7C 00 D8 40 */ cmplw r0, r27 +/* 80296848 002924A8 41 81 00 30 */ bgt lbl_80296878 +/* 8029684C 002924AC 80 03 00 1C */ lwz r0, 0x1c(r3) +/* 80296850 002924B0 7C 1B 00 40 */ cmplw r27, r0 +/* 80296854 002924B4 40 80 00 24 */ bge lbl_80296878 +/* 80296858 002924B8 7F 64 DB 78 */ mr r4, r27 +/* 8029685C 002924BC 38 63 00 0C */ addi r3, r3, 0xc +/* 80296860 002924C0 4B FF FC 6D */ bl FindContainHeap_ +/* 80296864 002924C4 2C 03 00 00 */ cmpwi r3, 0 +/* 80296868 002924C8 41 82 00 08 */ beq lbl_80296870 +/* 8029686C 002924CC 48 00 00 28 */ b lbl_80296894 +lbl_80296870: +/* 80296870 002924D0 7F A3 EB 78 */ mr r3, r29 +/* 80296874 002924D4 48 00 00 20 */ b lbl_80296894 +lbl_80296878: +/* 80296878 002924D8 7F A4 EB 78 */ mr r4, r29 +/* 8029687C 002924DC 38 7F 00 0C */ addi r3, r31, 0xc +/* 80296880 002924E0 48 00 0F F1 */ bl func_80297870 +/* 80296884 002924E4 2C 03 00 00 */ cmpwi r3, 0 +/* 80296888 002924E8 7C 7D 1B 78 */ mr r29, r3 +/* 8029688C 002924EC 40 82 FF B4 */ bne lbl_80296840 +/* 80296890 002924F0 38 60 00 00 */ li r3, 0 +lbl_80296894: +/* 80296894 002924F4 2C 03 00 00 */ cmpwi r3, 0 +/* 80296898 002924F8 41 82 00 08 */ beq lbl_802968A0 +/* 8029689C 002924FC 48 00 00 28 */ b lbl_802968C4 +lbl_802968A0: +/* 802968A0 00292500 7F E3 FB 78 */ mr r3, r31 +/* 802968A4 00292504 48 00 00 20 */ b lbl_802968C4 +lbl_802968A8: +/* 802968A8 00292508 7F E4 FB 78 */ mr r4, r31 +/* 802968AC 0029250C 38 7E 00 0C */ addi r3, r30, 0xc +/* 802968B0 00292510 48 00 0F C1 */ bl func_80297870 +/* 802968B4 00292514 2C 03 00 00 */ cmpwi r3, 0 +/* 802968B8 00292518 7C 7F 1B 78 */ mr r31, r3 +/* 802968BC 0029251C 40 82 FF 64 */ bne lbl_80296820 +/* 802968C0 00292520 38 60 00 00 */ li r3, 0 +lbl_802968C4: +/* 802968C4 00292524 2C 03 00 00 */ cmpwi r3, 0 +/* 802968C8 00292528 41 82 00 08 */ beq lbl_802968D0 +/* 802968CC 0029252C 48 00 00 28 */ b lbl_802968F4 +lbl_802968D0: +/* 802968D0 00292530 7F C3 F3 78 */ mr r3, r30 +/* 802968D4 00292534 48 00 00 20 */ b lbl_802968F4 +lbl_802968D8: +/* 802968D8 00292538 7F C4 F3 78 */ mr r4, r30 +/* 802968DC 0029253C 38 7F 11 C0 */ addi r3, r31, 0x11c0 +/* 802968E0 00292540 48 00 0F 91 */ bl func_80297870 +/* 802968E4 00292544 2C 03 00 00 */ cmpwi r3, 0 +/* 802968E8 00292548 7C 7E 1B 78 */ mr r30, r3 +/* 802968EC 0029254C 40 82 FF 14 */ bne lbl_80296800 +/* 802968F0 00292550 38 60 00 00 */ li r3, 0 +lbl_802968F4: +/* 802968F4 00292554 2C 03 00 00 */ cmpwi r3, 0 +/* 802968F8 00292558 41 82 00 08 */ beq lbl_80296900 +/* 802968FC 0029255C 3B 83 00 0C */ addi r28, r3, 0xc +lbl_80296900: +/* 80296900 00292560 7F 83 E3 78 */ mr r3, r28 +/* 80296904 00292564 7F 64 DB 78 */ mr r4, r27 +/* 80296908 00292568 48 00 0E FD */ bl func_80297804 +/* 8029690C 0029256C 3C 60 80 53 */ lis r3, lbl_805311D0@ha +/* 80296910 00292570 38 63 11 D0 */ addi r3, r3, lbl_805311D0@l +/* 80296914 00292574 4B FD 91 11 */ bl OSUnlockMutex +/* 80296918 00292578 38 00 00 00 */ li r0, 0 +/* 8029691C 0029257C 39 61 00 20 */ addi r11, r1, 0x20 +/* 80296920 00292580 90 1B 00 00 */ stw r0, 0(r27) +/* 80296924 00292584 4B F3 08 51 */ bl _restgpr_27 +/* 80296928 00292588 80 01 00 24 */ lwz r0, 0x24(r1) +/* 8029692C 0029258C 7C 08 03 A6 */ mtlr r0 +/* 80296930 00292590 38 21 00 20 */ addi r1, r1, 0x20 +/* 80296934 00292594 4E 80 00 20 */ blr -- cgit v1.2.3 From 65db4167db2ac657708953b24cf26b6950d97362 Mon Sep 17 00:00:00 2001 From: Max Date: Sun, 4 Oct 2020 01:06:39 -0400 Subject: split mem_list, mem_frameHeap, mem_allocator, mix, and remote --- asm/SDK/MEM/mem_allocator.s | 60 ++++++++++++ asm/SDK/MEM/mem_frameHeap.s | 225 +++++++++++++++++++++++++++++++++++++++++++ asm/SDK/MEM/mem_heapCommon.s | 26 ++--- asm/SDK/MEM/mem_list.s | 90 +++++++++++++++++ 4 files changed, 388 insertions(+), 13 deletions(-) create mode 100644 asm/SDK/MEM/mem_allocator.s create mode 100644 asm/SDK/MEM/mem_frameHeap.s create mode 100644 asm/SDK/MEM/mem_list.s (limited to 'asm/SDK/MEM') diff --git a/asm/SDK/MEM/mem_allocator.s b/asm/SDK/MEM/mem_allocator.s new file mode 100644 index 0000000..4472425 --- /dev/null +++ b/asm/SDK/MEM/mem_allocator.s @@ -0,0 +1,60 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global AllocatorAllocForExpHeap_ +AllocatorAllocForExpHeap_: +/* 802976F8 00293358 7C 65 1B 78 */ mr r5, r3 +/* 802976FC 0029335C 80 63 00 04 */ lwz r3, 4(r3) +/* 80297700 00293360 80 A5 00 08 */ lwz r5, 8(r5) +/* 80297704 00293364 4B FF F8 24 */ b MEMAllocFromExpHeapEx + +.global AllocatorFreeForExpHeap_ +AllocatorFreeForExpHeap_: +/* 80297708 00293368 80 63 00 04 */ lwz r3, 4(r3) +/* 8029770C 0029336C 4B FF FA B8 */ b MEMFreeToExpHeap + +.global AllocatorAllocForFrmHeap_ +AllocatorAllocForFrmHeap_: +/* 80297710 00293370 7C 65 1B 78 */ mr r5, r3 +/* 80297714 00293374 80 63 00 04 */ lwz r3, 4(r3) +/* 80297718 00293378 80 A5 00 08 */ lwz r5, 8(r5) +/* 8029771C 0029337C 4B FF FD A4 */ b MEMAllocFromFrmHeapEx + +.global AllocatorFreeForFrmHeap_ +AllocatorFreeForFrmHeap_: +/* 80297720 00293380 4E 80 00 20 */ blr + +.global MEMAllocFromAllocator +MEMAllocFromAllocator: +/* 80297724 00293384 80 A3 00 00 */ lwz r5, 0(r3) +/* 80297728 00293388 81 85 00 00 */ lwz r12, 0(r5) +/* 8029772C 0029338C 7D 89 03 A6 */ mtctr r12 +/* 80297730 00293390 4E 80 04 20 */ bctr + +.global MEMFreeToAllocator +MEMFreeToAllocator: +/* 80297734 00293394 80 A3 00 00 */ lwz r5, 0(r3) +/* 80297738 00293398 81 85 00 04 */ lwz r12, 4(r5) +/* 8029773C 0029339C 7D 89 03 A6 */ mtctr r12 +/* 80297740 002933A0 4E 80 04 20 */ bctr + +.global MEMInitAllocatorForExpHeap +MEMInitAllocatorForExpHeap: +/* 80297744 002933A4 38 C2 A3 68 */ addi r6, r2, lbl_80642968-_SDA2_BASE_ +/* 80297748 002933A8 38 00 00 00 */ li r0, 0 +/* 8029774C 002933AC 90 C3 00 00 */ stw r6, 0(r3) +/* 80297750 002933B0 90 83 00 04 */ stw r4, 4(r3) +/* 80297754 002933B4 90 A3 00 08 */ stw r5, 8(r3) +/* 80297758 002933B8 90 03 00 0C */ stw r0, 0xc(r3) +/* 8029775C 002933BC 4E 80 00 20 */ blr + +.global MEMInitAllocatorForFrmHeap +MEMInitAllocatorForFrmHeap: +/* 80297760 002933C0 38 C2 A3 70 */ addi r6, r2, lbl_80642970-_SDA2_BASE_ +/* 80297764 002933C4 38 00 00 00 */ li r0, 0 +/* 80297768 002933C8 90 C3 00 00 */ stw r6, 0(r3) +/* 8029776C 002933CC 90 83 00 04 */ stw r4, 4(r3) +/* 80297770 002933D0 90 A3 00 08 */ stw r5, 8(r3) +/* 80297774 002933D4 90 03 00 0C */ stw r0, 0xc(r3) +/* 80297778 002933D8 4E 80 00 20 */ blr diff --git a/asm/SDK/MEM/mem_frameHeap.s b/asm/SDK/MEM/mem_frameHeap.s new file mode 100644 index 0000000..5cca960 --- /dev/null +++ b/asm/SDK/MEM/mem_frameHeap.s @@ -0,0 +1,225 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global MEMCreateFrmHeapEx +MEMCreateFrmHeapEx: +/* 8029740C 0029306C 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80297410 00293070 7C 08 02 A6 */ mflr r0 +/* 80297414 00293074 7C 84 1A 14 */ add r4, r4, r3 +/* 80297418 00293078 90 01 00 14 */ stw r0, 0x14(r1) +/* 8029741C 0029307C 38 03 00 03 */ addi r0, r3, 3 +/* 80297420 00293080 54 86 00 3A */ rlwinm r6, r4, 0, 0, 0x1d +/* 80297424 00293084 93 E1 00 0C */ stw r31, 0xc(r1) +/* 80297428 00293088 54 1F 00 3A */ rlwinm r31, r0, 0, 0, 0x1d +/* 8029742C 0029308C 7C 1F 30 40 */ cmplw r31, r6 +/* 80297430 00293090 41 81 00 10 */ bgt lbl_80297440 +/* 80297434 00293094 7C 1F 30 50 */ subf r0, r31, r6 +/* 80297438 00293098 28 00 00 48 */ cmplwi r0, 0x48 +/* 8029743C 0029309C 40 80 00 0C */ bge lbl_80297448 +lbl_80297440: +/* 80297440 002930A0 38 60 00 00 */ li r3, 0 +/* 80297444 002930A4 48 00 00 38 */ b lbl_8029747C +lbl_80297448: +/* 80297448 002930A8 3C 80 46 52 */ lis r4, 0x46524D48@ha +/* 8029744C 002930AC 7C A7 2B 78 */ mr r7, r5 +/* 80297450 002930B0 7F E3 FB 78 */ mr r3, r31 +/* 80297454 002930B4 38 BF 00 48 */ addi r5, r31, 0x48 +/* 80297458 002930B8 38 84 4D 48 */ addi r4, r4, 0x46524D48@l +/* 8029745C 002930BC 4B FF F1 B1 */ bl MEMiInitHeapHead +/* 80297460 002930C0 80 9F 00 18 */ lwz r4, 0x18(r31) +/* 80297464 002930C4 38 00 00 00 */ li r0, 0 +/* 80297468 002930C8 7F E3 FB 78 */ mr r3, r31 +/* 8029746C 002930CC 90 9F 00 3C */ stw r4, 0x3c(r31) +/* 80297470 002930D0 80 9F 00 1C */ lwz r4, 0x1c(r31) +/* 80297474 002930D4 90 9F 00 40 */ stw r4, 0x40(r31) +/* 80297478 002930D8 90 1F 00 44 */ stw r0, 0x44(r31) +lbl_8029747C: +/* 8029747C 002930DC 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80297480 002930E0 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 80297484 002930E4 7C 08 03 A6 */ mtlr r0 +/* 80297488 002930E8 38 21 00 10 */ addi r1, r1, 0x10 +/* 8029748C 002930EC 4E 80 00 20 */ blr + +.global MEMDestroyFrmHeap +MEMDestroyFrmHeap: +/* 80297490 002930F0 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80297494 002930F4 7C 08 02 A6 */ mflr r0 +/* 80297498 002930F8 90 01 00 14 */ stw r0, 0x14(r1) +/* 8029749C 002930FC 93 E1 00 0C */ stw r31, 0xc(r1) +/* 802974A0 00293100 7C 7F 1B 78 */ mr r31, r3 +/* 802974A4 00293104 4B FF F3 29 */ bl MEMiFinalizeHeap +/* 802974A8 00293108 7F E3 FB 78 */ mr r3, r31 +/* 802974AC 0029310C 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 802974B0 00293110 80 01 00 14 */ lwz r0, 0x14(r1) +/* 802974B4 00293114 7C 08 03 A6 */ mtlr r0 +/* 802974B8 00293118 38 21 00 10 */ addi r1, r1, 0x10 +/* 802974BC 0029311C 4E 80 00 20 */ blr + +.global MEMAllocFromFrmHeapEx +MEMAllocFromFrmHeapEx: +/* 802974C0 00293120 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 802974C4 00293124 7C 08 02 A6 */ mflr r0 +/* 802974C8 00293128 2C 04 00 00 */ cmpwi r4, 0 +/* 802974CC 0029312C 90 01 00 24 */ stw r0, 0x24(r1) +/* 802974D0 00293130 93 E1 00 1C */ stw r31, 0x1c(r1) +/* 802974D4 00293134 7C 7F 1B 78 */ mr r31, r3 +/* 802974D8 00293138 93 C1 00 18 */ stw r30, 0x18(r1) +/* 802974DC 0029313C 7C 9E 23 78 */ mr r30, r4 +/* 802974E0 00293140 93 A1 00 14 */ stw r29, 0x14(r1) +/* 802974E4 00293144 7C BD 2B 78 */ mr r29, r5 +/* 802974E8 00293148 40 82 00 08 */ bne lbl_802974F0 +/* 802974EC 0029314C 3B C0 00 01 */ li r30, 1 +lbl_802974F0: +/* 802974F0 00293150 80 03 00 38 */ lwz r0, 0x38(r3) +/* 802974F4 00293154 38 9E 00 03 */ addi r4, r30, 3 +/* 802974F8 00293158 54 9E 00 3A */ rlwinm r30, r4, 0, 0, 0x1d +/* 802974FC 0029315C 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 80297500 00293160 41 82 00 0C */ beq lbl_8029750C +/* 80297504 00293164 38 63 00 20 */ addi r3, r3, 0x20 +/* 80297508 00293168 4B FD 84 41 */ bl OSLockMutex +lbl_8029750C: +/* 8029750C 0029316C 2C 1D 00 00 */ cmpwi r29, 0 +/* 80297510 00293170 41 80 00 54 */ blt lbl_80297564 +/* 80297514 00293174 80 7F 00 3C */ lwz r3, 0x3c(r31) +/* 80297518 00293178 38 1D FF FF */ addi r0, r29, -1 +/* 8029751C 0029317C 7C 05 00 F8 */ nor r5, r0, r0 +/* 80297520 00293180 80 1F 00 40 */ lwz r0, 0x40(r31) +/* 80297524 00293184 7C 9D 1A 14 */ add r4, r29, r3 +/* 80297528 00293188 38 84 FF FF */ addi r4, r4, -1 +/* 8029752C 0029318C 7C BD 20 38 */ and r29, r5, r4 +/* 80297530 00293190 7F DE EA 14 */ add r30, r30, r29 +/* 80297534 00293194 7C 1E 00 40 */ cmplw r30, r0 +/* 80297538 00293198 40 81 00 0C */ ble lbl_80297544 +/* 8029753C 0029319C 3B A0 00 00 */ li r29, 0 +/* 80297540 002931A0 48 00 00 6C */ b lbl_802975AC +lbl_80297544: +/* 80297544 002931A4 80 1F 00 38 */ lwz r0, 0x38(r31) +/* 80297548 002931A8 7C A3 F0 50 */ subf r5, r3, r30 +/* 8029754C 002931AC 54 00 07 FF */ clrlwi. r0, r0, 0x1f +/* 80297550 002931B0 41 82 00 0C */ beq lbl_8029755C +/* 80297554 002931B4 38 80 00 00 */ li r4, 0 +/* 80297558 002931B8 4B D6 CB AD */ bl memset +lbl_8029755C: +/* 8029755C 002931BC 93 DF 00 3C */ stw r30, 0x3c(r31) +/* 80297560 002931C0 48 00 00 4C */ b lbl_802975AC +lbl_80297564: +/* 80297564 002931C4 80 BF 00 40 */ lwz r5, 0x40(r31) +/* 80297568 002931C8 20 1D FF FF */ subfic r0, r29, -1 +/* 8029756C 002931CC 7C 04 00 F8 */ nor r4, r0, r0 +/* 80297570 002931D0 80 1F 00 3C */ lwz r0, 0x3c(r31) +/* 80297574 002931D4 7C 7E 28 50 */ subf r3, r30, r5 +/* 80297578 002931D8 7C 9D 18 38 */ and r29, r4, r3 +/* 8029757C 002931DC 7C 1D 00 40 */ cmplw r29, r0 +/* 80297580 002931E0 40 80 00 0C */ bge lbl_8029758C +/* 80297584 002931E4 3B A0 00 00 */ li r29, 0 +/* 80297588 002931E8 48 00 00 24 */ b lbl_802975AC +lbl_8029758C: +/* 8029758C 002931EC 80 1F 00 38 */ lwz r0, 0x38(r31) +/* 80297590 002931F0 7C BD 28 50 */ subf r5, r29, r5 +/* 80297594 002931F4 54 00 07 FF */ clrlwi. r0, r0, 0x1f +/* 80297598 002931F8 41 82 00 10 */ beq lbl_802975A8 +/* 8029759C 002931FC 7F A3 EB 78 */ mr r3, r29 +/* 802975A0 00293200 38 80 00 00 */ li r4, 0 +/* 802975A4 00293204 4B D6 CB 61 */ bl memset +lbl_802975A8: +/* 802975A8 00293208 93 BF 00 40 */ stw r29, 0x40(r31) +lbl_802975AC: +/* 802975AC 0029320C 80 1F 00 38 */ lwz r0, 0x38(r31) +/* 802975B0 00293210 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 802975B4 00293214 41 82 00 0C */ beq lbl_802975C0 +/* 802975B8 00293218 38 7F 00 20 */ addi r3, r31, 0x20 +/* 802975BC 0029321C 4B FD 84 69 */ bl OSUnlockMutex +lbl_802975C0: +/* 802975C0 00293220 83 E1 00 1C */ lwz r31, 0x1c(r1) +/* 802975C4 00293224 7F A3 EB 78 */ mr r3, r29 +/* 802975C8 00293228 83 C1 00 18 */ lwz r30, 0x18(r1) +/* 802975CC 0029322C 83 A1 00 14 */ lwz r29, 0x14(r1) +/* 802975D0 00293230 80 01 00 24 */ lwz r0, 0x24(r1) +/* 802975D4 00293234 7C 08 03 A6 */ mtlr r0 +/* 802975D8 00293238 38 21 00 20 */ addi r1, r1, 0x20 +/* 802975DC 0029323C 4E 80 00 20 */ blr + +.global MEMFreeToFrmHeap +MEMFreeToFrmHeap: +/* 802975E0 00293240 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 802975E4 00293244 7C 08 02 A6 */ mflr r0 +/* 802975E8 00293248 90 01 00 14 */ stw r0, 0x14(r1) +/* 802975EC 0029324C 93 E1 00 0C */ stw r31, 0xc(r1) +/* 802975F0 00293250 7C 9F 23 78 */ mr r31, r4 +/* 802975F4 00293254 93 C1 00 08 */ stw r30, 8(r1) +/* 802975F8 00293258 7C 7E 1B 78 */ mr r30, r3 +/* 802975FC 0029325C 80 03 00 38 */ lwz r0, 0x38(r3) +/* 80297600 00293260 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 80297604 00293264 41 82 00 0C */ beq lbl_80297610 +/* 80297608 00293268 38 63 00 20 */ addi r3, r3, 0x20 +/* 8029760C 0029326C 4B FD 83 3D */ bl OSLockMutex +lbl_80297610: +/* 80297610 00293270 57 E0 07 FF */ clrlwi. r0, r31, 0x1f +/* 80297614 00293274 41 82 00 14 */ beq lbl_80297628 +/* 80297618 00293278 80 7E 00 18 */ lwz r3, 0x18(r30) +/* 8029761C 0029327C 38 00 00 00 */ li r0, 0 +/* 80297620 00293280 90 1E 00 44 */ stw r0, 0x44(r30) +/* 80297624 00293284 90 7E 00 3C */ stw r3, 0x3c(r30) +lbl_80297628: +/* 80297628 00293288 57 E0 07 BD */ rlwinm. r0, r31, 0, 0x1e, 0x1e +/* 8029762C 0029328C 41 82 00 28 */ beq lbl_80297654 +/* 80297630 00293290 80 7E 00 44 */ lwz r3, 0x44(r30) +/* 80297634 00293294 48 00 00 10 */ b lbl_80297644 +lbl_80297638: +/* 80297638 00293298 80 1E 00 1C */ lwz r0, 0x1c(r30) +/* 8029763C 0029329C 90 03 00 08 */ stw r0, 8(r3) +/* 80297640 002932A0 80 63 00 0C */ lwz r3, 0xc(r3) +lbl_80297644: +/* 80297644 002932A4 2C 03 00 00 */ cmpwi r3, 0 +/* 80297648 002932A8 40 82 FF F0 */ bne lbl_80297638 +/* 8029764C 002932AC 80 1E 00 1C */ lwz r0, 0x1c(r30) +/* 80297650 002932B0 90 1E 00 40 */ stw r0, 0x40(r30) +lbl_80297654: +/* 80297654 002932B4 80 1E 00 38 */ lwz r0, 0x38(r30) +/* 80297658 002932B8 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d +/* 8029765C 002932BC 41 82 00 0C */ beq lbl_80297668 +/* 80297660 002932C0 38 7E 00 20 */ addi r3, r30, 0x20 +/* 80297664 002932C4 4B FD 83 C1 */ bl OSUnlockMutex +lbl_80297668: +/* 80297668 002932C8 80 01 00 14 */ lwz r0, 0x14(r1) +/* 8029766C 002932CC 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 80297670 002932D0 83 C1 00 08 */ lwz r30, 8(r1) +/* 80297674 002932D4 7C 08 03 A6 */ mtlr r0 +/* 80297678 002932D8 38 21 00 10 */ addi r1, r1, 0x10 +/* 8029767C 002932DC 4E 80 00 20 */ blr + +.global MEMGetAllocatableSizeForFrmHeapEx +MEMGetAllocatableSizeForFrmHeapEx: +/* 80297680 002932E0 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80297684 002932E4 7C 08 02 A6 */ mflr r0 +/* 80297688 002932E8 90 01 00 14 */ stw r0, 0x14(r1) +/* 8029768C 002932EC 7C 80 FE 70 */ srawi r0, r4, 0x1f +/* 80297690 002932F0 93 E1 00 0C */ stw r31, 0xc(r1) +/* 80297694 002932F4 7C 1F 22 78 */ xor r31, r0, r4 +/* 80297698 002932F8 7F E0 F8 50 */ subf r31, r0, r31 +/* 8029769C 002932FC 93 C1 00 08 */ stw r30, 8(r1) +/* 802976A0 00293300 7C 7E 1B 78 */ mr r30, r3 +/* 802976A4 00293304 4B FD 70 B9 */ bl OSDisableInterrupts +/* 802976A8 00293308 80 1E 00 3C */ lwz r0, 0x3c(r30) +/* 802976AC 0029330C 38 9F FF FF */ addi r4, r31, -1 +/* 802976B0 00293310 7C 85 20 F8 */ nor r5, r4, r4 +/* 802976B4 00293314 80 DE 00 40 */ lwz r6, 0x40(r30) +/* 802976B8 00293318 7C 9F 02 14 */ add r4, r31, r0 +/* 802976BC 0029331C 38 04 FF FF */ addi r0, r4, -1 +/* 802976C0 00293320 7C A0 00 38 */ and r0, r5, r0 +/* 802976C4 00293324 7C 00 30 40 */ cmplw r0, r6 +/* 802976C8 00293328 40 81 00 0C */ ble lbl_802976D4 +/* 802976CC 0029332C 3B E0 00 00 */ li r31, 0 +/* 802976D0 00293330 48 00 00 08 */ b lbl_802976D8 +lbl_802976D4: +/* 802976D4 00293334 7F E0 30 50 */ subf r31, r0, r6 +lbl_802976D8: +/* 802976D8 00293338 4B FD 70 AD */ bl OSRestoreInterrupts +/* 802976DC 0029333C 7F E3 FB 78 */ mr r3, r31 +/* 802976E0 00293340 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 802976E4 00293344 83 C1 00 08 */ lwz r30, 8(r1) +/* 802976E8 00293348 80 01 00 14 */ lwz r0, 0x14(r1) +/* 802976EC 0029334C 7C 08 03 A6 */ mtlr r0 +/* 802976F0 00293350 38 21 00 10 */ addi r1, r1, 0x10 +/* 802976F4 00293354 4E 80 00 20 */ blr diff --git a/asm/SDK/MEM/mem_heapCommon.s b/asm/SDK/MEM/mem_heapCommon.s index 6e2cc20..0d05b07 100644 --- a/asm/SDK/MEM/mem_heapCommon.s +++ b/asm/SDK/MEM/mem_heapCommon.s @@ -52,7 +52,7 @@ lbl_80296568: lbl_80296570: /* 80296570 002921D0 7F C4 F3 78 */ mr r4, r30 /* 80296574 002921D4 38 7F 00 0C */ addi r3, r31, 0xc -/* 80296578 002921D8 48 00 12 F9 */ bl func_80297870 +/* 80296578 002921D8 48 00 12 F9 */ bl MEMGetNextListObject /* 8029657C 002921DC 2C 03 00 00 */ cmpwi r3, 0 /* 80296580 002921E0 7C 7E 1B 78 */ mr r30, r3 /* 80296584 002921E4 40 82 FF B4 */ bne lbl_80296538 @@ -67,7 +67,7 @@ lbl_80296598: lbl_802965A0: /* 802965A0 00292200 7F E4 FB 78 */ mr r4, r31 /* 802965A4 00292204 38 7D 00 0C */ addi r3, r29, 0xc -/* 802965A8 00292208 48 00 12 C9 */ bl func_80297870 +/* 802965A8 00292208 48 00 12 C9 */ bl MEMGetNextListObject /* 802965AC 0029220C 2C 03 00 00 */ cmpwi r3, 0 /* 802965B0 00292210 7C 7F 1B 78 */ mr r31, r3 /* 802965B4 00292214 40 82 FF 64 */ bne lbl_80296518 @@ -82,7 +82,7 @@ lbl_802965C8: lbl_802965D0: /* 802965D0 00292230 7F C3 F3 78 */ mr r3, r30 /* 802965D4 00292234 7F A4 EB 78 */ mr r4, r29 -/* 802965D8 00292238 48 00 12 99 */ bl func_80297870 +/* 802965D8 00292238 48 00 12 99 */ bl MEMGetNextListObject /* 802965DC 0029223C 2C 03 00 00 */ cmpwi r3, 0 /* 802965E0 00292240 7C 7D 1B 78 */ mr r29, r3 /* 802965E4 00292244 40 82 FF 14 */ bne lbl_802964F8 @@ -113,14 +113,14 @@ MEMiInitHeapHead: /* 80296638 00292298 90 C3 00 1C */ stw r6, 0x1c(r3) /* 8029663C 0029229C 90 03 00 38 */ stw r0, 0x38(r3) /* 80296640 002922A0 38 63 00 0C */ addi r3, r3, 0xc -/* 80296644 002922A4 48 00 11 39 */ bl func_8029777C +/* 80296644 002922A4 48 00 11 39 */ bl MEMInitList /* 80296648 002922A8 80 0D AC 48 */ lwz r0, lbl_8063FF08-_SDA_BASE_(r13) /* 8029664C 002922AC 2C 00 00 00 */ cmpwi r0, 0 /* 80296650 002922B0 40 82 00 28 */ bne lbl_80296678 /* 80296654 002922B4 3C 60 80 53 */ lis r3, lbl_805311C0@ha /* 80296658 002922B8 38 80 00 04 */ li r4, 4 /* 8029665C 002922BC 38 63 11 C0 */ addi r3, r3, lbl_805311C0@l -/* 80296660 002922C0 48 00 11 1D */ bl func_8029777C +/* 80296660 002922C0 48 00 11 1D */ bl MEMInitList /* 80296664 002922C4 3C 60 80 53 */ lis r3, lbl_805311D0@ha /* 80296668 002922C8 38 63 11 D0 */ addi r3, r3, lbl_805311D0@l /* 8029666C 002922CC 4B FD 92 A5 */ bl OSInitMutex @@ -173,7 +173,7 @@ lbl_8029670C: lbl_80296714: /* 80296714 00292374 7F A4 EB 78 */ mr r4, r29 /* 80296718 00292378 38 7F 00 0C */ addi r3, r31, 0xc -/* 8029671C 0029237C 48 00 11 55 */ bl func_80297870 +/* 8029671C 0029237C 48 00 11 55 */ bl MEMGetNextListObject /* 80296720 00292380 2C 03 00 00 */ cmpwi r3, 0 /* 80296724 00292384 7C 7D 1B 78 */ mr r29, r3 /* 80296728 00292388 40 82 FF B4 */ bne lbl_802966DC @@ -188,7 +188,7 @@ lbl_8029673C: lbl_80296744: /* 80296744 002923A4 7F E4 FB 78 */ mr r4, r31 /* 80296748 002923A8 38 7E 00 0C */ addi r3, r30, 0xc -/* 8029674C 002923AC 48 00 11 25 */ bl func_80297870 +/* 8029674C 002923AC 48 00 11 25 */ bl MEMGetNextListObject /* 80296750 002923B0 2C 03 00 00 */ cmpwi r3, 0 /* 80296754 002923B4 7C 7F 1B 78 */ mr r31, r3 /* 80296758 002923B8 40 82 FF 64 */ bne lbl_802966BC @@ -203,7 +203,7 @@ lbl_8029676C: lbl_80296774: /* 80296774 002923D4 7F C4 F3 78 */ mr r4, r30 /* 80296778 002923D8 38 7F 11 C0 */ addi r3, r31, 0x11c0 -/* 8029677C 002923DC 48 00 10 F5 */ bl func_80297870 +/* 8029677C 002923DC 48 00 10 F5 */ bl MEMGetNextListObject /* 80296780 002923E0 2C 03 00 00 */ cmpwi r3, 0 /* 80296784 002923E4 7C 7E 1B 78 */ mr r30, r3 /* 80296788 002923E8 40 82 FF 14 */ bne lbl_8029669C @@ -215,7 +215,7 @@ lbl_80296790: lbl_8029679C: /* 8029679C 002923FC 7F 83 E3 78 */ mr r3, r28 /* 802967A0 00292400 7F 64 DB 78 */ mr r4, r27 -/* 802967A4 00292404 48 00 0F F1 */ bl func_80297794 +/* 802967A4 00292404 48 00 0F F1 */ bl MEMAppendListObject /* 802967A8 00292408 3C 60 80 53 */ lis r3, lbl_805311D0@ha /* 802967AC 0029240C 38 63 11 D0 */ addi r3, r3, lbl_805311D0@l /* 802967B0 00292410 4B FD 92 75 */ bl OSUnlockMutex @@ -278,7 +278,7 @@ lbl_80296870: lbl_80296878: /* 80296878 002924D8 7F A4 EB 78 */ mr r4, r29 /* 8029687C 002924DC 38 7F 00 0C */ addi r3, r31, 0xc -/* 80296880 002924E0 48 00 0F F1 */ bl func_80297870 +/* 80296880 002924E0 48 00 0F F1 */ bl MEMGetNextListObject /* 80296884 002924E4 2C 03 00 00 */ cmpwi r3, 0 /* 80296888 002924E8 7C 7D 1B 78 */ mr r29, r3 /* 8029688C 002924EC 40 82 FF B4 */ bne lbl_80296840 @@ -293,7 +293,7 @@ lbl_802968A0: lbl_802968A8: /* 802968A8 00292508 7F E4 FB 78 */ mr r4, r31 /* 802968AC 0029250C 38 7E 00 0C */ addi r3, r30, 0xc -/* 802968B0 00292510 48 00 0F C1 */ bl func_80297870 +/* 802968B0 00292510 48 00 0F C1 */ bl MEMGetNextListObject /* 802968B4 00292514 2C 03 00 00 */ cmpwi r3, 0 /* 802968B8 00292518 7C 7F 1B 78 */ mr r31, r3 /* 802968BC 0029251C 40 82 FF 64 */ bne lbl_80296820 @@ -308,7 +308,7 @@ lbl_802968D0: lbl_802968D8: /* 802968D8 00292538 7F C4 F3 78 */ mr r4, r30 /* 802968DC 0029253C 38 7F 11 C0 */ addi r3, r31, 0x11c0 -/* 802968E0 00292540 48 00 0F 91 */ bl func_80297870 +/* 802968E0 00292540 48 00 0F 91 */ bl MEMGetNextListObject /* 802968E4 00292544 2C 03 00 00 */ cmpwi r3, 0 /* 802968E8 00292548 7C 7E 1B 78 */ mr r30, r3 /* 802968EC 0029254C 40 82 FF 14 */ bne lbl_80296800 @@ -320,7 +320,7 @@ lbl_802968F4: lbl_80296900: /* 80296900 00292560 7F 83 E3 78 */ mr r3, r28 /* 80296904 00292564 7F 64 DB 78 */ mr r4, r27 -/* 80296908 00292568 48 00 0E FD */ bl func_80297804 +/* 80296908 00292568 48 00 0E FD */ bl MEMRemoveListObject /* 8029690C 0029256C 3C 60 80 53 */ lis r3, lbl_805311D0@ha /* 80296910 00292570 38 63 11 D0 */ addi r3, r3, lbl_805311D0@l /* 80296914 00292574 4B FD 91 11 */ bl OSUnlockMutex diff --git a/asm/SDK/MEM/mem_list.s b/asm/SDK/MEM/mem_list.s new file mode 100644 index 0000000..8496c01 --- /dev/null +++ b/asm/SDK/MEM/mem_list.s @@ -0,0 +1,90 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global MEMInitList +MEMInitList: +/* 8029777C 002933DC 38 00 00 00 */ li r0, 0 +/* 80297780 002933E0 B0 83 00 0A */ sth r4, 0xa(r3) +/* 80297784 002933E4 90 03 00 00 */ stw r0, 0(r3) +/* 80297788 002933E8 90 03 00 04 */ stw r0, 4(r3) +/* 8029778C 002933EC B0 03 00 08 */ sth r0, 8(r3) +/* 80297790 002933F0 4E 80 00 20 */ blr + +.global MEMAppendListObject +MEMAppendListObject: +/* 80297794 002933F4 80 03 00 00 */ lwz r0, 0(r3) +/* 80297798 002933F8 2C 00 00 00 */ cmpwi r0, 0 +/* 8029779C 002933FC 40 82 00 30 */ bne lbl_802977CC +/* 802977A0 00293400 A0 A3 00 0A */ lhz r5, 0xa(r3) +/* 802977A4 00293404 38 00 00 00 */ li r0, 0 +/* 802977A8 00293408 7C A4 2A 14 */ add r5, r4, r5 +/* 802977AC 0029340C 90 05 00 04 */ stw r0, 4(r5) +/* 802977B0 00293410 90 05 00 00 */ stw r0, 0(r5) +/* 802977B4 00293414 A0 A3 00 08 */ lhz r5, 8(r3) +/* 802977B8 00293418 90 83 00 00 */ stw r4, 0(r3) +/* 802977BC 0029341C 38 05 00 01 */ addi r0, r5, 1 +/* 802977C0 00293420 90 83 00 04 */ stw r4, 4(r3) +/* 802977C4 00293424 B0 03 00 08 */ sth r0, 8(r3) +/* 802977C8 00293428 4E 80 00 20 */ blr +lbl_802977CC: +/* 802977CC 0029342C A0 C3 00 0A */ lhz r6, 0xa(r3) +/* 802977D0 00293430 38 00 00 00 */ li r0, 0 +/* 802977D4 00293434 80 A3 00 04 */ lwz r5, 4(r3) +/* 802977D8 00293438 7C A6 21 6E */ stwux r5, r6, r4 +/* 802977DC 0029343C 90 06 00 04 */ stw r0, 4(r6) +/* 802977E0 00293440 80 A3 00 04 */ lwz r5, 4(r3) +/* 802977E4 00293444 A0 03 00 0A */ lhz r0, 0xa(r3) +/* 802977E8 00293448 7C A5 02 14 */ add r5, r5, r0 +/* 802977EC 0029344C 90 85 00 04 */ stw r4, 4(r5) +/* 802977F0 00293450 A0 A3 00 08 */ lhz r5, 8(r3) +/* 802977F4 00293454 90 83 00 04 */ stw r4, 4(r3) +/* 802977F8 00293458 38 05 00 01 */ addi r0, r5, 1 +/* 802977FC 0029345C B0 03 00 08 */ sth r0, 8(r3) +/* 80297800 00293460 4E 80 00 20 */ blr + +.global MEMRemoveListObject +MEMRemoveListObject: +/* 80297804 00293464 A0 A3 00 0A */ lhz r5, 0xa(r3) +/* 80297808 00293468 7C C4 2A 14 */ add r6, r4, r5 +/* 8029780C 0029346C 7C 84 28 2E */ lwzx r4, r4, r5 +/* 80297810 00293470 2C 04 00 00 */ cmpwi r4, 0 +/* 80297814 00293474 40 82 00 10 */ bne lbl_80297824 +/* 80297818 00293478 80 06 00 04 */ lwz r0, 4(r6) +/* 8029781C 0029347C 90 03 00 00 */ stw r0, 0(r3) +/* 80297820 00293480 48 00 00 10 */ b lbl_80297830 +lbl_80297824: +/* 80297824 00293484 80 06 00 04 */ lwz r0, 4(r6) +/* 80297828 00293488 7C 84 2A 14 */ add r4, r4, r5 +/* 8029782C 0029348C 90 04 00 04 */ stw r0, 4(r4) +lbl_80297830: +/* 80297830 00293490 80 A6 00 04 */ lwz r5, 4(r6) +/* 80297834 00293494 2C 05 00 00 */ cmpwi r5, 0 +/* 80297838 00293498 40 82 00 10 */ bne lbl_80297848 +/* 8029783C 0029349C 80 06 00 00 */ lwz r0, 0(r6) +/* 80297840 002934A0 90 03 00 04 */ stw r0, 4(r3) +/* 80297844 002934A4 48 00 00 10 */ b lbl_80297854 +lbl_80297848: +/* 80297848 002934A8 80 86 00 00 */ lwz r4, 0(r6) +/* 8029784C 002934AC A0 03 00 0A */ lhz r0, 0xa(r3) +/* 80297850 002934B0 7C 85 01 2E */ stwx r4, r5, r0 +lbl_80297854: +/* 80297854 002934B4 38 00 00 00 */ li r0, 0 +/* 80297858 002934B8 90 06 00 00 */ stw r0, 0(r6) +/* 8029785C 002934BC 90 06 00 04 */ stw r0, 4(r6) +/* 80297860 002934C0 A0 83 00 08 */ lhz r4, 8(r3) +/* 80297864 002934C4 38 04 FF FF */ addi r0, r4, -1 +/* 80297868 002934C8 B0 03 00 08 */ sth r0, 8(r3) +/* 8029786C 002934CC 4E 80 00 20 */ blr + +.global MEMGetNextListObject +MEMGetNextListObject: +/* 80297870 002934D0 2C 04 00 00 */ cmpwi r4, 0 +/* 80297874 002934D4 40 82 00 0C */ bne lbl_80297880 +/* 80297878 002934D8 80 63 00 00 */ lwz r3, 0(r3) +/* 8029787C 002934DC 4E 80 00 20 */ blr +lbl_80297880: +/* 80297880 002934E0 A0 03 00 0A */ lhz r0, 0xa(r3) +/* 80297884 002934E4 7C 64 02 14 */ add r3, r4, r0 +/* 80297888 002934E8 80 63 00 04 */ lwz r3, 4(r3) +/* 8029788C 002934EC 4E 80 00 20 */ blr -- cgit v1.2.3