#define alloc_var1 (*(u32*)(0x8033B480)) #define alloc_var2 (*(u32*)(0x8033B48C)) #define alloc_var3 (*(u32*)(0x8033B490)) 80278120 (a0 = size) sp00 = 0 void* alloc_pool(u32 size, bool mode){ void* pool = 0x00000000; // 0x00(sp) size = size | ((size + 0x0F) & 0xFFF0); // 16 byte align size += 0x10; // additional 16 bytes of padding? if(size && (alloc_var1 >= size)){ alloc_var1 = alloc_var1 - size; if(!mode){ u32* thing = alloc_var2 + size; // 0x04(sp) alloc_var2->_x04 = thing; *(thing + 0) = alloc_var2; *(thing + 4) = 0; pool = (alloc_var2 + 0x10); alloc_var2 = thing; } else { u32* thing = alloc_var3 - size; // 0x04(sp) alloc_var3 = thing; } } return pool; }