WheapPfaRetireExpiredMemoryEntries

VOID __stdcall WheapPfaRetireExpiredMemoryEntries(UINT64 Timestamp){
  PVOID *v2; 
  UINT64 v3; 
  PVOID *v4; 
  PVOID **v5; 
  if( WheapPolicyMemPfaTimeout && Timestamp >= WheapPolicyMemPfaTimeout )
  {
    v2 = (PVOID *)WheapPfaList;
    v3 = Timestamp - WheapPolicyMemPfaTimeout;
    while( v2 != &WheapPfaList )
    {
      v4 = v2;
      v2 = (PVOID *)*v2;
      if( (unsigned __int64)v4[4] <= v3 )
      {
        if( v2[1] != v4 || (v5 = (PVOID **)v4[1], *v5 != v4) )
          __fastfail(3u);
        *v5 = v2;
        v2[1] = v5;
        WheapPfaLogPageMonitorRemoval((INT64)v4, 2i64, Timestamp);
        ExFreePoolWithTag(v4, 0x61656857u);
      }
    }
  }
}

Referenced by:

WheapPfaMemoryCheck