.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