MiRetardMdl

UINT64 __stdcall MiRetardMdl(_MDL *Mdl){
  _MDL *v1; 
  _MDL *v3; 
  int v4; 
  __int64 Next; 
  __int16 *i; 
  __int16 MdlFlags; 
  unsigned int v8; 
  UINT64 result; 
  v1 = Mdl + 1;
  v3 = (_MDL *)((char *)Mdl
              + 8
              * ((Mdl->ByteCount + 4095i64 + (unsigned __int64)((LODWORD(Mdl->StartVa) + Mdl->ByteOffset) & 0xFFF)) >> 12)
              + 48);
  v4 = 0;
  do
  {
    Next = (__int64)v3->Next;
    for( i = &v3->Size; v3 != v1; v3 = (_MDL *)((char *)v3 - 8) )
      v3->Next = *(_MDL **)&v3[-1].ByteCount;
    v1 = (_MDL *)((char *)v1 + 8);
    ++v4;
    v3->Next = (_MDL *)(Next & 0x7FFFFFFFFFFFFFFFi64);
    v3 = (_MDL *)i;
  }
  while( Next >= 0 );
  MdlFlags = Mdl->MdlFlags;
  v8 = v4 << 12;
  Mdl->ByteCount += v8;
  Mdl->StartVa = (char *)Mdl->StartVa - v8;
  if( (MdlFlags & 1) != 0 )
    Mdl->MappedSystemVa = (char *)Mdl->MappedSystemVa - v8;
  result = v8;
  Mdl->MdlFlags = MdlFlags & 0xFDFF;
  return result;
}

Referenced by:

MiFlushComplete
MiFreePagesFromMdl
MiPfCompleteCoalescedIo
MiUnlockFlushMdl
MiWaitForInPageComplete
MiWriteComplete
MiZeroPageWrite
MmUnlockPages
MmUnmapLockedPages
MmUnmapReservedMapping