.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global func_801DAC90 func_801DAC90: /* 801DAC90 001D68F0 48 0B C6 7C */ b MEMSetGroupIDForExpHeap .global func_801DAC94 func_801DAC94: /* 801DAC94 001D68F4 38 A0 00 20 */ li r5, 0x20 /* 801DAC98 001D68F8 48 0B C2 90 */ b MEMAllocFromExpHeapEx lbl_801DAC9C: /* 801DAC9C 001D68FC 94 21 FF E0 */ stwu r1, -0x20(r1) /* 801DACA0 001D6900 7C 08 02 A6 */ mflr r0 /* 801DACA4 001D6904 90 01 00 24 */ stw r0, 0x24(r1) /* 801DACA8 001D6908 93 E1 00 1C */ stw r31, 0x1c(r1) /* 801DACAC 001D690C 93 C1 00 18 */ stw r30, 0x18(r1) /* 801DACB0 001D6910 7C BE 2B 78 */ mr r30, r5 /* 801DACB4 001D6914 93 A1 00 14 */ stw r29, 0x14(r1) /* 801DACB8 001D6918 7C 9D 23 78 */ mr r29, r4 /* 801DACBC 001D691C 4B FF FF D9 */ bl func_801DAC94 /* 801DACC0 001D6920 2C 03 00 00 */ cmpwi r3, 0 /* 801DACC4 001D6924 7C 7F 1B 78 */ mr r31, r3 /* 801DACC8 001D6928 40 82 00 0C */ bne lbl_801DACD4 /* 801DACCC 001D692C 38 60 00 00 */ li r3, 0 /* 801DACD0 001D6930 48 00 00 14 */ b lbl_801DACE4 lbl_801DACD4: /* 801DACD4 001D6934 7F C4 F3 78 */ mr r4, r30 /* 801DACD8 001D6938 7F A5 EB 78 */ mr r5, r29 /* 801DACDC 001D693C 4B E2 94 29 */ bl memset /* 801DACE0 001D6940 7F E3 FB 78 */ mr r3, r31 lbl_801DACE4: /* 801DACE4 001D6944 80 01 00 24 */ lwz r0, 0x24(r1) /* 801DACE8 001D6948 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 801DACEC 001D694C 83 C1 00 18 */ lwz r30, 0x18(r1) /* 801DACF0 001D6950 83 A1 00 14 */ lwz r29, 0x14(r1) /* 801DACF4 001D6954 7C 08 03 A6 */ mtlr r0 /* 801DACF8 001D6958 38 21 00 20 */ addi r1, r1, 0x20 /* 801DACFC 001D695C 4E 80 00 20 */ blr .global func_801DAD00 func_801DAD00: /* 801DAD00 001D6960 38 A0 00 00 */ li r5, 0 /* 801DAD04 001D6964 4B FF FF 98 */ b lbl_801DAC9C .global func_801DAD08 func_801DAD08: /* 801DAD08 001D6968 48 0B C2 20 */ b MEMAllocFromExpHeapEx .global func_801DAD0C func_801DAD0C: /* 801DAD0C 001D696C 2C 05 00 00 */ cmpwi r5, 0 /* 801DAD10 001D6970 40 81 00 08 */ ble lbl_801DAD18 /* 801DAD14 001D6974 7C A5 00 D0 */ neg r5, r5 lbl_801DAD18: /* 801DAD18 001D6978 48 0B C2 10 */ b MEMAllocFromExpHeapEx .global func_801DAD1C func_801DAD1C: /* 801DAD1C 001D697C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801DAD20 001D6980 7C 08 02 A6 */ mflr r0 /* 801DAD24 001D6984 90 01 00 14 */ stw r0, 0x14(r1) /* 801DAD28 001D6988 48 0B C2 B1 */ bl MEMResizeForMBlockExpHeap /* 801DAD2C 001D698C 7C 03 00 D0 */ neg r0, r3 /* 801DAD30 001D6990 7C 00 1B 78 */ or r0, r0, r3 /* 801DAD34 001D6994 54 03 0F FE */ srwi r3, r0, 0x1f /* 801DAD38 001D6998 80 01 00 14 */ lwz r0, 0x14(r1) /* 801DAD3C 001D699C 7C 08 03 A6 */ mtlr r0 /* 801DAD40 001D69A0 38 21 00 10 */ addi r1, r1, 0x10 /* 801DAD44 001D69A4 4E 80 00 20 */ blr .global func_801DAD48 func_801DAD48: /* 801DAD48 001D69A8 2C 04 00 00 */ cmpwi r4, 0 /* 801DAD4C 001D69AC 4D 82 00 20 */ beqlr /* 801DAD50 001D69B0 48 0B C4 74 */ b MEMFreeToExpHeap /* 801DAD54 001D69B4 4E 80 00 20 */ blr .global func_801DAD58 func_801DAD58: /* 801DAD58 001D69B8 7C 83 23 78 */ mr r3, r4 /* 801DAD5C 001D69BC 48 0B C6 9C */ b MEMGetSizeForMBlockExpHeap .global func_801DAD60 func_801DAD60: /* 801DAD60 001D69C0 48 0B C5 30 */ b MEMGetTotalFreeSizeForExpHeap .global func_801DAD64 func_801DAD64: /* 801DAD64 001D69C4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801DAD68 001D69C8 7C 08 02 A6 */ mflr r0 /* 801DAD6C 001D69CC 90 01 00 14 */ stw r0, 0x14(r1) /* 801DAD70 001D69D0 93 E1 00 0C */ stw r31, 0xc(r1) /* 801DAD74 001D69D4 7C 7F 1B 78 */ mr r31, r3 /* 801DAD78 001D69D8 4B FF FE 95 */ bl func_801DAC0C /* 801DAD7C 001D69DC 7F E4 FB 78 */ mr r4, r31 /* 801DAD80 001D69E0 4B FF FF 15 */ bl func_801DAC94 /* 801DAD84 001D69E4 80 01 00 14 */ lwz r0, 0x14(r1) /* 801DAD88 001D69E8 83 E1 00 0C */ lwz r31, 0xc(r1) /* 801DAD8C 001D69EC 7C 08 03 A6 */ mtlr r0 /* 801DAD90 001D69F0 38 21 00 10 */ addi r1, r1, 0x10 /* 801DAD94 001D69F4 4E 80 00 20 */ blr .global func_801DAD98 func_801DAD98: /* 801DAD98 001D69F8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801DAD9C 001D69FC 7C 08 02 A6 */ mflr r0 /* 801DADA0 001D6A00 90 01 00 14 */ stw r0, 0x14(r1) /* 801DADA4 001D6A04 93 E1 00 0C */ stw r31, 0xc(r1) /* 801DADA8 001D6A08 7C 7F 1B 78 */ mr r31, r3 /* 801DADAC 001D6A0C 4B FF FE 61 */ bl func_801DAC0C /* 801DADB0 001D6A10 7F E4 FB 78 */ mr r4, r31 /* 801DADB4 001D6A14 4B FF FF 4D */ bl func_801DAD00 /* 801DADB8 001D6A18 80 01 00 14 */ lwz r0, 0x14(r1) /* 801DADBC 001D6A1C 83 E1 00 0C */ lwz r31, 0xc(r1) /* 801DADC0 001D6A20 7C 08 03 A6 */ mtlr r0 /* 801DADC4 001D6A24 38 21 00 10 */ addi r1, r1, 0x10 /* 801DADC8 001D6A28 4E 80 00 20 */ blr .global func_801DADCC func_801DADCC: /* 801DADCC 001D6A2C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801DADD0 001D6A30 7C 08 02 A6 */ mflr r0 /* 801DADD4 001D6A34 90 01 00 14 */ stw r0, 0x14(r1) /* 801DADD8 001D6A38 93 E1 00 0C */ stw r31, 0xc(r1) /* 801DADDC 001D6A3C 7C 9F 23 78 */ mr r31, r4 /* 801DADE0 001D6A40 93 C1 00 08 */ stw r30, 8(r1) /* 801DADE4 001D6A44 7C 7E 1B 78 */ mr r30, r3 /* 801DADE8 001D6A48 4B FF FE 25 */ bl func_801DAC0C /* 801DADEC 001D6A4C 7F C4 F3 78 */ mr r4, r30 /* 801DADF0 001D6A50 7F E5 FB 78 */ mr r5, r31 /* 801DADF4 001D6A54 4B FF FF 15 */ bl func_801DAD08 /* 801DADF8 001D6A58 80 01 00 14 */ lwz r0, 0x14(r1) /* 801DADFC 001D6A5C 83 E1 00 0C */ lwz r31, 0xc(r1) /* 801DAE00 001D6A60 83 C1 00 08 */ lwz r30, 8(r1) /* 801DAE04 001D6A64 7C 08 03 A6 */ mtlr r0 /* 801DAE08 001D6A68 38 21 00 10 */ addi r1, r1, 0x10 /* 801DAE0C 001D6A6C 4E 80 00 20 */ blr .global func_801DAE10 func_801DAE10: /* 801DAE10 001D6A70 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801DAE14 001D6A74 7C 08 02 A6 */ mflr r0 /* 801DAE18 001D6A78 2C 04 00 00 */ cmpwi r4, 0 /* 801DAE1C 001D6A7C 90 01 00 14 */ stw r0, 0x14(r1) /* 801DAE20 001D6A80 93 E1 00 0C */ stw r31, 0xc(r1) /* 801DAE24 001D6A84 7C 9F 23 78 */ mr r31, r4 /* 801DAE28 001D6A88 93 C1 00 08 */ stw r30, 8(r1) /* 801DAE2C 001D6A8C 7C 7E 1B 78 */ mr r30, r3 /* 801DAE30 001D6A90 40 81 00 08 */ ble lbl_801DAE38 /* 801DAE34 001D6A94 7F E4 00 D0 */ neg r31, r4 lbl_801DAE38: /* 801DAE38 001D6A98 4B FF FD D5 */ bl func_801DAC0C /* 801DAE3C 001D6A9C 7F C4 F3 78 */ mr r4, r30 /* 801DAE40 001D6AA0 7F E5 FB 78 */ mr r5, r31 /* 801DAE44 001D6AA4 4B FF FE C5 */ bl func_801DAD08 /* 801DAE48 001D6AA8 80 01 00 14 */ lwz r0, 0x14(r1) /* 801DAE4C 001D6AAC 83 E1 00 0C */ lwz r31, 0xc(r1) /* 801DAE50 001D6AB0 83 C1 00 08 */ lwz r30, 8(r1) /* 801DAE54 001D6AB4 7C 08 03 A6 */ mtlr r0 /* 801DAE58 001D6AB8 38 21 00 10 */ addi r1, r1, 0x10 /* 801DAE5C 001D6ABC 4E 80 00 20 */ blr .global func_801DAE60 func_801DAE60: /* 801DAE60 001D6AC0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801DAE64 001D6AC4 7C 08 02 A6 */ mflr r0 /* 801DAE68 001D6AC8 90 01 00 14 */ stw r0, 0x14(r1) /* 801DAE6C 001D6ACC 93 E1 00 0C */ stw r31, 0xc(r1) /* 801DAE70 001D6AD0 7C 9F 23 78 */ mr r31, r4 /* 801DAE74 001D6AD4 93 C1 00 08 */ stw r30, 8(r1) /* 801DAE78 001D6AD8 7C 7E 1B 78 */ mr r30, r3 /* 801DAE7C 001D6ADC 4B FF FD 91 */ bl func_801DAC0C /* 801DAE80 001D6AE0 7F C4 F3 78 */ mr r4, r30 /* 801DAE84 001D6AE4 7F E5 FB 78 */ mr r5, r31 /* 801DAE88 001D6AE8 4B FF FE 95 */ bl func_801DAD1C /* 801DAE8C 001D6AEC 80 01 00 14 */ lwz r0, 0x14(r1) /* 801DAE90 001D6AF0 83 E1 00 0C */ lwz r31, 0xc(r1) /* 801DAE94 001D6AF4 83 C1 00 08 */ lwz r30, 8(r1) /* 801DAE98 001D6AF8 7C 08 03 A6 */ mtlr r0 /* 801DAE9C 001D6AFC 38 21 00 10 */ addi r1, r1, 0x10 /* 801DAEA0 001D6B00 4E 80 00 20 */ blr .global func_801DAEA4 func_801DAEA4: /* 801DAEA4 001D6B04 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801DAEA8 001D6B08 7C 08 02 A6 */ mflr r0 /* 801DAEAC 001D6B0C 2C 03 00 00 */ cmpwi r3, 0 /* 801DAEB0 001D6B10 90 01 00 14 */ stw r0, 0x14(r1) /* 801DAEB4 001D6B14 93 E1 00 0C */ stw r31, 0xc(r1) /* 801DAEB8 001D6B18 7C 7F 1B 78 */ mr r31, r3 /* 801DAEBC 001D6B1C 41 82 00 10 */ beq lbl_801DAECC /* 801DAEC0 001D6B20 4B FF FD 4D */ bl func_801DAC0C /* 801DAEC4 001D6B24 7F E4 FB 78 */ mr r4, r31 /* 801DAEC8 001D6B28 4B FF FE 81 */ bl func_801DAD48 lbl_801DAECC: /* 801DAECC 001D6B2C 80 01 00 14 */ lwz r0, 0x14(r1) /* 801DAED0 001D6B30 83 E1 00 0C */ lwz r31, 0xc(r1) /* 801DAED4 001D6B34 7C 08 03 A6 */ mtlr r0 /* 801DAED8 001D6B38 38 21 00 10 */ addi r1, r1, 0x10 /* 801DAEDC 001D6B3C 4E 80 00 20 */ blr .global func_801DAEE0 func_801DAEE0: /* 801DAEE0 001D6B40 2C 03 00 00 */ cmpwi r3, 0 /* 801DAEE4 001D6B44 40 82 00 0C */ bne lbl_801DAEF0 /* 801DAEE8 001D6B48 38 60 00 00 */ li r3, 0 /* 801DAEEC 001D6B4C 4E 80 00 20 */ blr lbl_801DAEF0: /* 801DAEF0 001D6B50 48 0B C5 08 */ b MEMGetSizeForMBlockExpHeap /* 801DAEF4 001D6B54 4E 80 00 20 */ blr .global func_801DAEF8 func_801DAEF8: /* 801DAEF8 001D6B58 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801DAEFC 001D6B5C 7C 08 02 A6 */ mflr r0 /* 801DAF00 001D6B60 90 01 00 14 */ stw r0, 0x14(r1) /* 801DAF04 001D6B64 4B FF FD 09 */ bl func_801DAC0C /* 801DAF08 001D6B68 4B FF FE 59 */ bl func_801DAD60 /* 801DAF0C 001D6B6C 80 01 00 14 */ lwz r0, 0x14(r1) /* 801DAF10 001D6B70 7C 08 03 A6 */ mtlr r0 /* 801DAF14 001D6B74 38 21 00 10 */ addi r1, r1, 0x10 /* 801DAF18 001D6B78 4E 80 00 20 */ blr lbl_801DAF1C: /* 801DAF1C 001D6B7C 94 21 FF F0 */ stwu r1, -0x10(r1) /* 801DAF20 001D6B80 7C 08 02 A6 */ mflr r0 /* 801DAF24 001D6B84 90 01 00 14 */ stw r0, 0x14(r1) /* 801DAF28 001D6B88 93 E1 00 0C */ stw r31, 0xc(r1) /* 801DAF2C 001D6B8C 7C BF 2B 78 */ mr r31, r5 /* 801DAF30 001D6B90 93 C1 00 08 */ stw r30, 8(r1) /* 801DAF34 001D6B94 7C 7E 1B 78 */ mr r30, r3 /* 801DAF38 001D6B98 48 0B C4 C9 */ bl MEMGetGroupIDForMBlockExpHeap /* 801DAF3C 001D6B9C A0 1F 00 04 */ lhz r0, 4(r31) /* 801DAF40 001D6BA0 54 63 04 3E */ clrlwi r3, r3, 0x10 /* 801DAF44 001D6BA4 7C 00 18 40 */ cmplw r0, r3 /* 801DAF48 001D6BA8 40 82 00 10 */ bne lbl_801DAF58 /* 801DAF4C 001D6BAC 80 7F 00 00 */ lwz r3, 0(r31) /* 801DAF50 001D6BB0 7F C4 F3 78 */ mr r4, r30 /* 801DAF54 001D6BB4 48 0B C2 71 */ bl MEMFreeToExpHeap lbl_801DAF58: /* 801DAF58 001D6BB8 80 01 00 14 */ lwz r0, 0x14(r1) /* 801DAF5C 001D6BBC 83 E1 00 0C */ lwz r31, 0xc(r1) /* 801DAF60 001D6BC0 83 C1 00 08 */ lwz r30, 8(r1) /* 801DAF64 001D6BC4 7C 08 03 A6 */ mtlr r0 /* 801DAF68 001D6BC8 38 21 00 10 */ addi r1, r1, 0x10 /* 801DAF6C 001D6BCC 4E 80 00 20 */ blr .global func_801DAF70 func_801DAF70: /* 801DAF70 001D6BD0 94 21 FF E0 */ stwu r1, -0x20(r1) /* 801DAF74 001D6BD4 7C 08 02 A6 */ mflr r0 /* 801DAF78 001D6BD8 3C C0 80 1E */ lis r6, lbl_801DAF1C@ha /* 801DAF7C 001D6BDC 90 01 00 24 */ stw r0, 0x24(r1) /* 801DAF80 001D6BE0 38 00 00 00 */ li r0, 0 /* 801DAF84 001D6BE4 38 A1 00 08 */ addi r5, r1, 8 /* 801DAF88 001D6BE8 B0 81 00 0C */ sth r4, 0xc(r1) /* 801DAF8C 001D6BEC 38 86 AF 1C */ addi r4, r6, lbl_801DAF1C@l /* 801DAF90 001D6BF0 90 61 00 08 */ stw r3, 8(r1) /* 801DAF94 001D6BF4 90 01 00 10 */ stw r0, 0x10(r1) /* 801DAF98 001D6BF8 48 0B C3 C5 */ bl MEMVisitAllocatedForExpHeap /* 801DAF9C 001D6BFC 80 01 00 24 */ lwz r0, 0x24(r1) /* 801DAFA0 001D6C00 7C 08 03 A6 */ mtlr r0 /* 801DAFA4 001D6C04 38 21 00 20 */ addi r1, r1, 0x20 /* 801DAFA8 001D6C08 4E 80 00 20 */ blr .global func_801DAFAC func_801DAFAC: /* 801DAFAC 001D6C0C 54 60 06 FF */ clrlwi. r0, r3, 0x1b /* 801DAFB0 001D6C10 40 82 00 14 */ bne lbl_801DAFC4 /* 801DAFB4 001D6C14 54 80 06 FF */ clrlwi. r0, r4, 0x1b /* 801DAFB8 001D6C18 40 82 00 0C */ bne lbl_801DAFC4 /* 801DAFBC 001D6C1C 54 A0 06 FF */ clrlwi. r0, r5, 0x1b /* 801DAFC0 001D6C20 41 82 00 08 */ beq lbl_801DAFC8 lbl_801DAFC4: /* 801DAFC4 001D6C24 4B E2 90 3C */ b memcpy lbl_801DAFC8: /* 801DAFC8 001D6C28 54 A5 D9 7E */ srwi r5, r5, 5 /* 801DAFCC 001D6C2C 7C A9 03 A6 */ mtctr r5 /* 801DAFD0 001D6C30 38 63 FF FC */ addi r3, r3, -4 /* 801DAFD4 001D6C34 38 84 FF FC */ addi r4, r4, -4 lbl_801DAFD8: /* 801DAFD8 001D6C38 84 04 00 04 */ lwzu r0, 4(r4) /* 801DAFDC 001D6C3C 84 A4 00 04 */ lwzu r5, 4(r4) /* 801DAFE0 001D6C40 84 C4 00 04 */ lwzu r6, 4(r4) /* 801DAFE4 001D6C44 84 E4 00 04 */ lwzu r7, 4(r4) /* 801DAFE8 001D6C48 85 04 00 04 */ lwzu r8, 4(r4) /* 801DAFEC 001D6C4C 85 24 00 04 */ lwzu r9, 4(r4) /* 801DAFF0 001D6C50 85 44 00 04 */ lwzu r10, 4(r4) /* 801DAFF4 001D6C54 85 64 00 04 */ lwzu r11, 4(r4) /* 801DAFF8 001D6C58 94 03 00 04 */ stwu r0, 4(r3) /* 801DAFFC 001D6C5C 94 A3 00 04 */ stwu r5, 4(r3) /* 801DB000 001D6C60 94 C3 00 04 */ stwu r6, 4(r3) /* 801DB004 001D6C64 94 E3 00 04 */ stwu r7, 4(r3) /* 801DB008 001D6C68 95 03 00 04 */ stwu r8, 4(r3) /* 801DB00C 001D6C6C 95 23 00 04 */ stwu r9, 4(r3) /* 801DB010 001D6C70 95 43 00 04 */ stwu r10, 4(r3) /* 801DB014 001D6C74 95 63 00 04 */ stwu r11, 4(r3) /* 801DB018 001D6C78 42 00 FF C0 */ bdnz lbl_801DAFD8 /* 801DB01C 001D6C7C 4E 80 00 20 */ blr .global func_801DB020 func_801DB020: /* 801DB020 001D6C80 38 A0 00 01 */ li r5, 1 /* 801DB024 001D6C84 38 6D A0 10 */ addi r3, r13, lbl_8063F2D0-_SDA_BASE_ /* 801DB028 001D6C88 38 80 00 04 */ li r4, 4 /* 801DB02C 001D6C8C 38 00 00 00 */ li r0, 0 /* 801DB030 001D6C90 98 AD A0 10 */ stb r5, lbl_8063F2D0-_SDA_BASE_(r13) /* 801DB034 001D6C94 B0 83 00 02 */ sth r4, 2(r3) /* 801DB038 001D6C98 98 03 00 04 */ stb r0, 4(r3) /* 801DB03C 001D6C9C 4E 80 00 20 */ blr