summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax <mparisi@stevens.edu>2020-10-18 02:22:36 -0400
committerMax <mparisi@stevens.edu>2020-10-18 02:22:36 -0400
commit3ac8c8de6aefd3d31498a8a638f196838cffd523 (patch)
tree0aaee608a58aa02800c1a644e64691e0f11ab688
parent0403eb6c4ba1c8d6fe8bb1e542d6737cb2bfc46e (diff)
match up to func_801DAF70
-rw-r--r--asm/code_801DAAE0_asm.s245
-rw-r--r--include/code_801DAAE0.h40
-rw-r--r--src/code_801DAAE0.cpp149
3 files changed, 175 insertions, 259 deletions
diff --git a/asm/code_801DAAE0_asm.s b/asm/code_801DAAE0_asm.s
index 99decd5..e66f191 100644
--- a/asm/code_801DAAE0_asm.s
+++ b/asm/code_801DAAE0_asm.s
@@ -2,251 +2,6 @@
.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)
diff --git a/include/code_801DAAE0.h b/include/code_801DAAE0.h
index 897f09d..94b9794 100644
--- a/include/code_801DAAE0.h
+++ b/include/code_801DAAE0.h
@@ -5,26 +5,52 @@
extern "C" {
#endif
-// TODO: move, determine type definition
-typedef u32 MEMHeapHandle;
+// TODO: move, determine actual type definition
+typedef void *MEMHeapHandle;
-class unkClass
+struct unkClass
{
-public:
u8 unk0;
MEMHeapHandle unk4;
u32 unk8;
};
+struct unkClass2
+{
+ MEMHeapHandle heap;
+ u16 groupID;
+};
+
+
unkClass* func_801DAAE0(void);
BOOL func_801DAB28(void);
void func_801DAB30(void);
MEMHeapHandle func_801DAB78(void* p1, u32 p2, u16 p3);
-u32 func_801DAC0C(void);
-u32 func_801DAC14(u32 p1);
+MEMHeapHandle func_801DAC0C(void);
+MEMHeapHandle func_801DAC14(MEMHeapHandle p1);
u16 func_801DAC44(u16 p1);
-void* func_801DAD64(size_t);
+u16 func_801DAC90(MEMHeapHandle heap, u16 groupID);
+void* func_801DAC94(MEMHeapHandle heap, u32 size);
+void* lbl_801DAC9C(MEMHeapHandle heap, u32 size, int fill);
+void* func_801DAD00(MEMHeapHandle heap, u32 size);
+void* func_801DAD08(MEMHeapHandle heap, u32 size, int alignment);
+void* func_801DAD0C(MEMHeapHandle heap, u32 size, int alignment);
+BOOL func_801DAD1C(MEMHeapHandle heap, void *memBlock, u32 size);
+void func_801DAD48(MEMHeapHandle heap, void *memBlock);
+u32 func_801DAD58(u32, const void *memBlock);
+u32 func_801DAD60(MEMHeapHandle heap);
+void *func_801DAD64(size_t size);
+void *func_801DAD98(u32 size);
+void *func_801DADCC(u32 size, int alignment);
+void *func_801DAE10(u32 size, int alignment);
+BOOL func_801DAE60(void *memBlock, u32 size);
+void func_801DAEA4(void *memBlock);
+u32 func_801DAEE0(const void *memBlock);
+u32 func_801DAEF8(void);
+void lbl_801DAF1C(void *memBlock, MEMHeapHandle, u32 p3);
+
+
void func_801DAEA4(void*);
#ifdef __cplusplus
diff --git a/src/code_801DAAE0.cpp b/src/code_801DAAE0.cpp
index f54450d..d999cdc 100644
--- a/src/code_801DAAE0.cpp
+++ b/src/code_801DAAE0.cpp
@@ -7,17 +7,25 @@
extern "C" {
// unkStruct gUnk8063F2D0(1, 4, 0);
-// TODO: move
-extern u32 lbl_8063E8E8;
-extern u32 lbl_8063E8EC;
+// TODO: move to headers
+extern MEMHeapHandle lbl_8063E8E8;
+extern MEMHeapHandle lbl_8063E8EC;
extern u8 lbl_8063F2D6;
extern u8 lbl_8063F2D7;
-extern u32 lbl_8063F2D8;
+extern MEMHeapHandle lbl_8063F2D8;
extern u16 lbl_8063F2DC;
void *memset(void *s, int c, size_t n);
MEMHeapHandle MEMCreateExpHeapEx(void* p1, u32 p2, u16 p3);
u16 MEMSetGroupIDForExpHeap(MEMHeapHandle heap, u16 groupID);
+void *MEMAllocFromExpHeapEx(MEMHeapHandle heap, u32 size, int alignment);
+u32 MEMResizeForMBlockExpHeap(MEMHeapHandle heap, void *memBlock, u32 size);
+void MEMFreeToExpHeap(MEMHeapHandle heap, void *memBlock);
+u32 MEMGetSizeForMBlockExpHeap(const void *memBlock);
+u32 MEMGetTotalFreeSizeForExpHeap(MEMHeapHandle heap);
+u16 MEMGetGroupIDForMBlockExpHeap(const void *memBlock);
+//void MEMVisitAllocatedForExpHeap(MEMHeapHandle heap, MEMHeapVisitor visitor, u32 userParam);
+
unkClass gUnk804912B0[16];
@@ -57,14 +65,14 @@ MEMHeapHandle func_801DAB78(void* p1, u32 p2, u16 p3)
return r3;
}
-u32 func_801DAC0C(void)
+MEMHeapHandle func_801DAC0C(void)
{
return lbl_8063F2D8;
}
-u32 func_801DAC14(u32 p1)
+MEMHeapHandle func_801DAC14(MEMHeapHandle p1)
{
- u32 r3 = func_801DAC0C();
+ MEMHeapHandle r3 = func_801DAC0C();
lbl_8063F2D8 = p1;
return r3;
}
@@ -78,6 +86,133 @@ u16 func_801DAC44(u16 p1)
return r31;
}
+u16 func_801DAC90(MEMHeapHandle heap, u16 groupID)
+{
+ return MEMSetGroupIDForExpHeap(heap, groupID);
+}
+
+void* func_801DAC94(MEMHeapHandle heap, u32 size)
+{
+ return MEMAllocFromExpHeapEx(heap, size, 32);
+}
+
+void* lbl_801DAC9C(MEMHeapHandle heap, u32 size, int fill)
+{
+ void* r31 = func_801DAC94(heap, size);
+ if (!r31)
+ return NULL;
+ memset(r31, fill, size);
+ return r31;
+}
+
+void* func_801DAD00(MEMHeapHandle heap, u32 size)
+{
+ return lbl_801DAC9C(heap, size, 0);
+}
+
+void* func_801DAD08(MEMHeapHandle heap, u32 size, int alignment)
+{
+ return MEMAllocFromExpHeapEx(heap, size, alignment);
+}
+
+void* func_801DAD0C(MEMHeapHandle heap, u32 size, int alignment)
+{
+ return MEMAllocFromExpHeapEx(heap, size, (alignment > 0) ? -alignment : alignment);
+}
+
+BOOL func_801DAD1C(MEMHeapHandle heap, void *memBlock, u32 size)
+{
+ return MEMResizeForMBlockExpHeap(heap, memBlock, size) != 0;
+}
+
+void func_801DAD48(MEMHeapHandle heap, void *memBlock)
+{
+ if (memBlock)
+ MEMFreeToExpHeap(heap, memBlock);
+}
+
+u32 func_801DAD58(u32, const void *memBlock)
+{
+ return MEMGetSizeForMBlockExpHeap(memBlock);
+}
+
+u32 func_801DAD60(MEMHeapHandle heap)
+{
+ return MEMGetTotalFreeSizeForExpHeap(heap);
+}
+
+void *func_801DAD64(size_t size)
+{
+ return func_801DAC94(func_801DAC0C(), size);
+}
+
+void *func_801DAD98(u32 size)
+{
+ return func_801DAD00(func_801DAC0C(), size);
+}
+
+void *func_801DADCC(u32 size, int alignment)
+{
+ return func_801DAD08(func_801DAC0C(), size, alignment);
+}
+
+void *func_801DAE10(u32 size, int alignment)
+{
+ return func_801DAD08(func_801DAC0C(), size, (alignment > 0) ? -alignment : alignment);
+}
+
+BOOL func_801DAE60(void *memBlock, u32 size)
+{
+ return func_801DAD1C(func_801DAC0C(), memBlock, size);
+}
+
+void func_801DAEA4(void *memBlock)
+{
+ if (memBlock)
+ func_801DAD48(func_801DAC0C(), memBlock);
+}
+
+u32 func_801DAEE0(const void *memBlock)
+{
+ if (memBlock == NULL)
+ return 0;
+ return MEMGetSizeForMBlockExpHeap(memBlock);
+}
+
+u32 func_801DAEF8(void)
+{
+ return func_801DAD60(func_801DAC0C());
+}
+
+void lbl_801DAF1C(void *memBlock, MEMHeapHandle, u32 p3)
+{
+ if (MEMGetGroupIDForMBlockExpHeap(memBlock) == ((unkClass2 *)p3)->groupID)
+ MEMFreeToExpHeap(((unkClass2 *)p3)->heap, memBlock);
+}
+
+/*
+func_801DAF70
+{
+ lbl_801DAF1C
+}
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+