MiClearSystemAccessBits

VOID __stdcall MiClearSystemAccessBits(INT64 a1, INT64 a2, UINT64 a3){
  unsigned int v3; 
  INT64 v6; 
  INT64 v7; 
  signed __int64 v8; 
  INT64 i; 
  _MI_TB_FLUSH_LIST TbFlushList[48]; 

  v3 = a3;
  memset(TbFlushList, 0i64, 0xB8u);
  *(_QWORD *)&TbFlushList[6] = 0i64;
  TbFlushList[2] = 20;
  v6 = ((a1 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
  if( a2 )
  {
    v7 = a2;
    do
    {
      LODWORD(v8) = MI_READ_PTE_LOCK_FREE(a1);
      if( (v8 & 0x20) != 0 )
        _InterlockedCompareExchange64((volatile signed __int64 *)a1, v8 & 0xFFFFFFFFFFFFFFDFui64, v8);
      a1 += 8i64;
      --v7;
    }
    while( v7 );
  }
  if( v3 )
  {
    for( i = a1 - 8 * a2; a2; --a2 )
    {
      MiInsertLargeTbFlushEntry(TbFlushList, v3, i);
      i += 8i64;
    }
  }
  else
  {
    MiInsertTbFlushEntry(TbFlushList, (VOID *)v6, a2, 0i64);
  }
  MiFlushTbList(TbFlushList);
}

Referenced by:

MiPfnRangeIsZero