WheapPfaReset

VOID __stdcall WheapPfaReset(){
  _BYTE *v0; 
  _BYTE *v1; 
  _QWORD *v2; 
  _QWORD **v3; 
  _QWORD *v4; 
  _QWORD *v5; 

  v0 = KeAbPreAcquire((char *)&stru_140CF2E80 + 6400, 0i64, 0i64);
  v1 = v0;
  if( _interlockedbittestandset64((volatile signed __int32 *)&stru_140CF2E80 + 1600, 0i64) )
    ExfAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)&stru_140CF2E80 + 800, v0, (char *)&stru_140CF2E80 + 6400);
  if( v1 )
    v1[26] |= 1u;
  WheapApplyPolicyChanges();
  v2 = (_QWORD *)*(&stru_140CF2E80 + 801);
  while( v2 != (_QWORD *)((char *)&stru_140CF2E80 + 6408) )
  {
    v3 = (_QWORD **)*v2;
    v4 = v2;
    v2 = v3;
    if( v3[1] != v4 || (v5 = (_QWORD *)v4[1], (_QWORD *)*v5 != v4) )
      __fastfail(3u);
    *v5 = v3;
    v3[1] = v5;
    ExFreePoolWithTag(v4, 0x61656857u);
  }
  if( (_InterlockedExchangeAdd64((_QWORD *)&stru_140CF2E80 + 800, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock((_EX_PUSH_LOCK *)&stru_140CF2E80 + 800);
  KeAbPostRelease((char *)&stru_140CF2E80 + 6400);
}

Referenced by:

WheapCommitPolicy