RtlpDestroyHeapSegment
NTSTATUS __fastcall RtlpDestroyHeapSegment(INT64 a1){
UINT64 v2;
INT64 v3;
INT64 *v4;
INT64 v5;
INT64 v6;
void *v7;
ULONG_PTR RegionSize;
PVOID BaseAddress;
if( (*(_DWORD *)(a1 + 20) & 1) != 0 )
return 0;
v2 = a1 + 24;
v3 = *(_QWORD *)(a1 + 24);
v4 = *(INT64 **)(a1 + 32);
v5 = *(_QWORD *)(v3 + 8);
v6 = *v4;
if( *v4 == v5 && v6 == v2 )
{
*v4 = v3;
*(_QWORD *)(v3 + 8) = v4;
}
else
{
RtlpLogHeapFailure(13i64, 0i64, v2, v5, v6, 0i64);
}
v7 = *(void **)(a1 + 48);
RegionSize = 0i64;
BaseAddress = v7;
return ZwFreeVirtualMemory((PVOID)0xFFFFFFFFFFFFFFFFi64, &BaseAddress, &RegionSize, 0x8000ui64);
}Referenced by:
RtlDestroyHeap