MiClearContainingMapping

VOID __fastcall MiClearContainingMapping(INT64 a1){
  __int64 v2; 
  unsigned int v3; 
  char *v4; 
  void *v5; 
  unsigned __int64 *v6; 
  INT64 v7; 
  v2 = *(_QWORD *)(a1 + 40) & 0xFFFFFFFFFi64;
  if( (_MMPTE *)(*((_QWORD *)MmGetPfnDb() + 6 * v2 + 1) | 0x8000000000000000ui64) == (_MMPTE *)((char *)MmGetPteBase()
                                                                                               + ((*(_QWORD *)(a1 + 8) >> 9) & 0x7FFFFFFFF8i64)) )
  {
    v3 = (*(_DWORD *)(a1 + 8) >> 3) & 0x1FF;
    LODWORD(v4) = MiMapPageInHyperSpaceWorker(v2, 0i64, 0x80000000ui64);
    v5 = v4;
    v6 = (unsigned __int64 *)&v4[8 * v3];
    v7 = MI_READ_PTE_LOCK_FREE((INT64)v6);
    if( (v7 & 1) != 0 )
      *v6 = v7 & 0xFFFFFFFFFFFFFBFEui64 | 0x400;
    MiUnmapPageInHyperSpaceWorker(v5, 0x11u, 0x80000000ui64);
  }
}

Referenced by:

MiDeleteTopLevelPage