MiMarkMdlComplete

VOID __stdcall MiMarkMdlComplete(_MDL *Mdl, _MMVAD_SHORT *Vad, INT64 a3){
  __int64 ********LockedVadEvent; 
  __int64 v4; 
  _QWORD *v5; 
  unsigned __int64 v6; 
  unsigned int v7; 
  __int64 *******i; 
  _MMPFN *v9; 
  unsigned __int64 v10; 
  bool v11; 

  LockedVadEvent = MiLocateLockedVadEvent((__int64)Vad, 8);
  v5 = (_QWORD *)(v4 + 48);
  v6 = (unsigned __int64)*(unsigned int *)(v4 + 40) >> 12;
  v7 = 0;
  for( i = LockedVadEvent[1]; v7 < v6; ++v5 )
  {
    v9 = &MmGetPfnDb()[*v5];
    v10 = MiLockPageInline(v9);
    *((_BYTE *)&v9->u3 + 2) |= 0x10u;
    *((_BYTE *)&v9->u3 + 2) &= ~0x20u;
    v9->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 = 0i64;
    _InterlockedAnd64(&v9->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(v10);
    ++v7;
  }
  i[11] = 0i64;
  v11 = *((_DWORD *)i + 44) <= 1;
  *((_DWORD *)i + 20) = -1073741670;
  if( !v11 )
    KeSetEvent((PRKEVENT)(i + 7), 0, 0);
}

Referenced by:

MmRotatePhysicalView