MiDeleteEmptyPageTable

INT64 __fastcall MiDeleteEmptyPageTable(_QWORD *a1, UINT64 a2){
  UINT64 *v2; 
  INT64 v5; 
  INT64 v6; 
  INT64 v7; 
  __int64 v8; 
  UINT64 LogAccess; 
  unsigned __int64 v11; 
  v2 = (UINT64 *)a1[21];
  LODWORD(LogAccess) = 0;
  v5 = MI_READ_PTE_LOCK_FREE(a2);
  v6 = v5;
  if( (v5 & 1) != 0 && (v5 & 0x80u) == 0i64 )
  {
    if( (unsigned int)MiIsPageTableDeletable((INT64)a1, a2) )
    {
      v7 = a1[2];
      v8 = (__int64)((a2 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
      if( (unsigned int)MiTerminateWsle((PVOID)a1[3], (_MMSUPPORT_INSTANCE *)v8, 0i64, (UINT64)&LogAccess) )
      {
        if( (_DWORD)LogAccess == 1 )
          MiInsertTbFlushEntry(v7, v8, 1i64, 0i64);
        v11 = v6 & 0xFFFFFFFFFFFFFBFEui64 | 0x400;
        *(_QWORD *)a2 = v11;
        MiFlushTbListEarly(v7, 0);
        _bittestandset64((signed __int64 *)v2 + 3, (a2 >> 3) & 0x1FF);
        if( !*v2 )
          *v2 = a2;
      }
    }
  }
  return 0i64;
}

Referenced by:

No references.