MiIsPageTableDeletable

NTSTATUS __stdcall MiIsPageTableDeletable(_TOKEN *SourceLowboxToken, _TOKEN **DesiredAnonymousLowboxToken){
  _TOKEN **v2; 
  _LUID AuthenticationId; 
  __int64 v5; 
  unsigned __int64 v6; 
  __int64 v7; 
  UINT64 *v8; 
  UINT64 v9; 
  INT64 v11; 
  unsigned __int64 v12; 
  int v13; 
  __int64 v14; 
  UINT64 v15; 
  INT64 v16; 

  v2 = DesiredAnonymousLowboxToken;
  AuthenticationId = SourceLowboxToken->AuthenticationId;
  v5 = (__int64)(((_QWORD)DesiredAnonymousLowboxToken << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
  LODWORD(v6) = MiGetLeafVa(v5);
  if( v6 > 0x7FFFFFFEFFFFi64 )
  {
    LODWORD(v11) = MI_READ_PTE_LOCK_FREE((INT64)v2);
    v16 = v11;
    LODWORD(v12) = MI_READ_PTE_LOCK_FREE((INT64)&v16);
    if( (MmGetPfnDb()[(v12 >> 12) & 0xFFFFFFFFFi64].u2._bf_0 & 0x3FFFFFFFFFFFFFFFi64) != 1 )
      return 0;
    if( (*(_BYTE *)(*(_QWORD *)&AuthenticationId + 184i64) & 7) == 1 )
    {
      if( (SourceLowboxToken->TokenSource.SourceName[0] & 4) != 0 )
        MiLockPageTableInternal(*(_QWORD *)&AuthenticationId, (UINT64)v2, 0i64);
      else
        v2 = 0i64;
      v13 = 1;
      while( 1 )
      {
        LODWORD(v14) = MI_READ_PTE_LOCK_FREE(v5);
        if( v14 )
        {
          if( (v14 & 1) == 0 )
            break;
        }
        v5 += 8i64;
        if( (v5 & 0xFFF) == 0 )
          goto LABEL_15;
      }
      v13 = 0;
LABEL_15:
      if( v2 )
        MiUnlockPageTableInternal(*(_QWORD *)&AuthenticationId, (UINT64)v2);
      if( !v13 )
        return 0;
    }
  }
  else
  {
    v8 = (unsigned __int64 *)((char *)&MmGetPdeBase()->u.Long + (((((v5 << 25) - v7) >> 16) & 0xFFFFFFE00000ui64) >> 18));
    v9 = *v8;
    MiPteInShadowRange((UINT64)v8);
    v15 = v9;
    MiPteInShadowRange((UINT64)&v15);
    if( (*(_DWORD *)(&MmGetPfnDb()[(v9 >> 12) & 0xFFFFFFFFFi64].3 + 1) & 0x3FF0000) != 0 )
      return 0;
  }
  return 1;
}

Referenced by:

MiDeleteEmptyPageTable
MiDeleteVa