MiMarkMdlComplete

VOID __stdcall MiMarkMdlComplete(_MDL *Mdl, _MMVAD_SHORT *Vad){
  INT64 ***LockedVadEvent; 
  __int64 v3; 
  _QWORD *v4; 
  unsigned __int64 v5; 
  unsigned int v6; 
  INT64 **i; 
  volatile signed __int64 *v8; 
  unsigned __int64 v9; 
  bool v10; 
  LockedVadEvent = MiLocateLockedVadEvent((INT64)Vad, 8i64);
  v4 = (_QWORD *)(v3 + 48);
  v5 = (unsigned __int64)*(unsigned int *)(v3 + 40) >> 12;
  v6 = 0;
  for( i = LockedVadEvent[1]; v6 < v5; ++v4 )
  {
    v8 = (volatile signed __int64 *)((char *)MmGetPfnDb() + 48 * *v4);
    v9 = (unsigned __int8)MiLockPageInline((INT64)v8);
    *((_BYTE *)v8 + 34) |= 0x10u;
    *((_BYTE *)v8 + 34) &= ~0x20u;
    *v8 = 0i64;
    _InterlockedAnd64(v8 + 3, 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(v9);
    ++v6;
  }
  i[11] = 0i64;
  v10 = *((_DWORD *)i + 44) <= 1;
  *((_DWORD *)i + 20) = -1073741670;
  if( !v10 )
    KeSetEvent((PRKEVENT)(i + 7), 0);
}

Referenced by:

MmRotatePhysicalView