ViCheckMdlLength

UINT64 __stdcall ViCheckMdlLength(MDL *Mdl, UINT64 Offset, UINT64 a3){
  UINT64 ByteCount; 
  unsigned int v5; 
  unsigned int v6; 
  if( !(_DWORD)a3 )
    return 0i64;
  if( Mdl )
  {
    do
    {
      ByteCount = Mdl->ByteCount;
      if( Offset <= ByteCount )
        break;
      Mdl = Mdl->Next;
      Offset -= ByteCount;
    }
    while( Mdl );
    while( Mdl && (_DWORD)a3 )
    {
      v5 = Mdl->ByteCount;
      Mdl = Mdl->Next;
      v6 = v5 - Offset;
      if( v6 >= (unsigned int)a3 )
        v6 = a3;
      LODWORD(a3) = a3 - v6;
      LODWORD(Offset) = 0;
    }
  }
  return(unsigned int)a3;
}

Referenced by:

VfBuildScatterGatherList
VfBuildScatterGatherListEx
VfGetScatterGatherList
VfGetScatterGatherListEx
VfMapTransfer
VfMapTransferEx