MiEvictPageTableLock

NTSTATUS __stdcall MiEvictPageTableLock(INT64 a1, UINT64 *a2, INT64 a3, CHAR a4){
  unsigned __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  UINT64 v12; 
  __int64 v13; 
  __int64 v14; 
  INT16 v15; 
  __int64 v16; 

  MiLockPageTableInternal(a1, (UINT64)a2, 0i64);
  LODWORD(v8) = MiGetLeafVa((UINT64)a2);
  if( v8 > 0x7FFFFFFEFFFFi64 )
  {
    v12 = *a2;
    MiPteInShadowRange((UINT64)a2);
    if( (unsigned __int16)LODWORD(MmGetPfnDb()[(v12 >> 12) & 0xFFFFFFFFFi64].u2._bf_0) == 1 )
    {
      v13 = (_QWORD)MmGetPteBase() << 25;
      if( (a4 & 1) == 0
        || (LODWORD(v16) = RtlCompareMemoryUlong((VOID *)((((_QWORD)a2 << 25) - v13) >> 16), 4096, 0i64), v16 == 4096) )
      {
        if( (a4 & 2) == 0 )
          goto LABEL_3;
        v14 = (((_QWORD)a2 << 25) - v13) >> 16;
        while( 1 )
        {
          v15 = MI_READ_PTE_LOCK_FREE(v14);
          if( MiIsPoolPteInUse(v15) )
            break;
          v14 += 8i64;
          if( (v14 & 0xFFF) == 0 )
            goto LABEL_3;
        }
      }
    }
  }
  else
  {
    v9 = (_QWORD)MmGetPteBase() << 25;
    LODWORD(v10) = MiGetUsedPtesHandle((PSLIST_ENTRY)((((((_QWORD)a2 << 25) - v9) >> 16 << 25) - v9) >> 16));
    if( (*(_DWORD *)(v10 + 16) & 0x3FF0000) == 0 )
    {
LABEL_3:
      MiUnlockNestedPageTableWritePte(a1, (INT64 *)a2, a3, 0i64);
      return 1;
    }
  }
  MiUnlockPageTableInternal(a1, (UINT64)a2);
  return 0;
}

Referenced by:

MiDeleteNonPagedPoolPte
MiDeleteSystemPageTable
MiDeleteVa
MiTerminateWsle