.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 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 /* 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 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 /* 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 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 /* 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 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 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 /* 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 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 /* 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 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 /* 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 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 /* 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 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 /* 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 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 /* 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 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 /* 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 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 /* 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 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 /* 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