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