RtlpDestroyHeapSegment
NTSTATUS __fastcall RtlpDestroyHeapSegment(__int64 a1){
VOID *v2;
_QWORD *v3;
VOID **v4;
VOID *v5;
VOID *Param2;
VOID *v7;
UINT64 RegionSize;
VOID *BaseAddress;
if( (*(_DWORD *)(a1 + 20) & 1) != 0 )
return 0;
v2 = (VOID *)(a1 + 24);
v3 = *(_QWORD **)(a1 + 24);
v4 = *(VOID ***)(a1 + 32);
v5 = (VOID *)v3[1];
Param2 = *v4;
if( *v4 == v5 && Param2 == v2 )
{
*v4 = v3;
v3[1] = v4;
}
else
{
RtlpLogHeapFailure(heap_failure_freelists_corruption, 0i64, v2, v5, Param2);
}
v7 = *(VOID **)(a1 + 48);
RegionSize = 0i64;
BaseAddress = v7;
return ZwFreeVirtualMemory((VOID *)0xFFFFFFFFFFFFFFFFi64, &BaseAddress, &RegionSize, 0x8000ui64);
}Referenced by:
RtlDestroyHeap