WheapPfaReset
VOID __stdcall WheapPfaReset(){
_BYTE *v0;
_BYTE *v1;
PVOID *v2;
PVOID *v3;
PVOID *v4;
PVOID **v5;
LODWORD(v0) = KeAbPreAcquire(&WheapPfaLock, 0i64, 0i64);
v1 = v0;
if( _interlockedbittestandset64((volatile signed __int32 *)&WheapPfaLock, 0i64) )
ExfAcquirePushLockExclusiveEx(&WheapPfaLock, v0, &WheapPfaLock);
if( v1 )
v1[26] |= 1u;
WheapApplyPolicyChanges();
v2 = (PVOID *)WheapPfaList;
while( v2 != &WheapPfaList )
{
v3 = (PVOID *)*v2;
v4 = v2;
v2 = v3;
if( v3[1] != v4 || (v5 = (PVOID **)v4[1], *v5 != v4) )
__fastfail(3u);
*v5 = v3;
v3[1] = v5;
ExFreePoolWithTag(v4, 0x61656857u);
}
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&WheapPfaLock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)&WheapPfaLock);
KeAbPostRelease(&WheapPfaLock);
}Referenced by:
WheapCommitPolicy