ViSwap

UINT64 __stdcall ViSwap(VOID **MapRegisterBase, _MDL **Mdl, VOID **CurrentVa){
  _MAP_REGISTER_FILE *MapRegisterFile; 
  VOID **v7; 
  VOID *MdlBufferSa; 
  __int16 v9; 
  UINT64 MapRegisterNumber; 

  LODWORD(MapRegisterNumber) = 0;
  MapRegisterFile = ViGetMapRegisterFile(*MapRegisterBase);
  if( !MapRegisterFile )
    return 0i64;
  MdlBufferSa = ViGetMdlBufferSa((ULONG_PTR)*Mdl, *v7);
  if( !MdlBufferSa || !ViFindMappedRegisterInFile(MapRegisterFile, MdlBufferSa, &MapRegisterNumber) )
    return 0i64;
  *Mdl = (_MDL *)*((_QWORD *)MapRegisterFile + 7);
  *CurrentVa = (VOID *)(*(_QWORD *)(*((_QWORD *)MapRegisterFile + 7) + 32i64)
                      + (unsigned int)((_DWORD)MapRegisterNumber << 12)
                      + *(unsigned int *)(*((_QWORD *)MapRegisterFile + 7) + 44i64)
                      + (unsigned __int64)(v9 & 0xFFF));
  *MapRegisterBase = (VOID *)*((_QWORD *)MapRegisterFile + 6);
  return 1i64;
}

Referenced by:

VfBuildScatterGatherList
VfFlushAdapterBuffers
VfGetScatterGatherList
VfMapTransfer