MiPerformFinalZeroing

VOID __stdcall MiPerformFinalZeroing(
        INT64 *PostZeroPages,
        UINT64 PostZeroCount,
        _MI_PFN_CACHE_ATTRIBUTE CacheAttribute){
  _MMPFN *v3; 
  __int64 v4; 
  _MMPFN *PfnDb; 
  UINT64 *v7; 
  INT64 *v8; 
  __int64 v9; 
  _MMPFN *v10; 
  __int64 v11; 
  UINT64 v12; 
  int v13[10]; 

  v3 = 0i64;
  v4 = (unsigned int)PostZeroCount;
  PfnDb = MmGetPfnDb();
  v7 = (UINT64 *)PostZeroPages;
  if( (_DWORD)PostZeroCount )
  {
    v8 = PostZeroPages;
    v9 = (unsigned int)v4;
    do
    {
      v10 = &PfnDb[*v8++];
      v10->OriginalPte.u.Long = (unsigned __int64)v3;
      v3 = v10;
      --v9;
    }
    while( v9 );
  }
  MiChangePageAttributeBatch(v3, CacheAttribute, ZeroPte);
  if( (_DWORD)v4 )
  {
    v11 = v4;
    do
    {
      v12 = *v7;
      MiZeroPhysicalPage(*v7, 1ui64, CacheAttribute);
      _InterlockedOr(v13, 0);
      MiSetPfnTbFlushStamp(&PfnDb[v12], (unsigned int)KiTbFlushTimeStamp, 0i64);
      ++v7;
      --v11;
    }
    while( v11 );
  }
}

Referenced by:

MiGetPageChain