RtlpHpSizeHeap
NTSTATUS __stdcall RtlpHpSizeHeap(INT64 a1, UINT64 a2, INT64 a3){
int v3;
int v5;
int v6;
int v7;
UINT64 v8;
NTSTATUS v9;
v3 = *(_DWORD *)(a1 + 220);
v5 = a3 | *(_DWORD *)(a1 + 20);
v6 = 0;
if( v3 )
LOBYTE(v6) = v3 == KeGetCurrentThread()[1].CurrentRunTime;
v7 = v5 | 1;
if( !v6 )
v7 = v5;
if( !a2 )
return -1;
if( (a2 & 0xF) != 0 )
return -1;
v8 = RtlpHpSizeHeapInternal((__int128 *)a1, a2, v7, 0i64);
v9 = v8;
if( v8 != -1i64
&& (v7 & 0x10000000) != 0
&& RtlCompareMemory((const VOID *)(v8 + a2), CheckHeapFillPattern, 16) != (_SIZE_T *)16 )
{
return -1;
}
return v9;
}Referenced by:
ExFreeHeapPool
RtlpHpFreeHeap