ViSwap

UINT64 __fastcall ViSwap(VOID **MapRegisterBase, _MDL **Mdl, VOID **CurrentVa){
  __int64 MapRegisterFile; 
  VOID **v7; 
  VOID *MdlBufferSa; 
  __int16 v9; 
  int v11; 
  v11 = 0;
  MapRegisterFile = ViGetMapRegisterFile((INT64)*MapRegisterBase);
  if( !MapRegisterFile )
    return 0i64;
  MdlBufferSa = ViGetMdlBufferSa(*Mdl, *v7);
  if( !MdlBufferSa || !ViFindMappedRegisterInFile(MapRegisterFile, (__int64)MdlBufferSa, &v11) )
    return 0i64;
  *Mdl = *(_MDL **)(MapRegisterFile + 56);
  *CurrentVa = (VOID *)(*(_QWORD *)(*(_QWORD *)(MapRegisterFile + 56) + 32i64)
                      + (unsigned int)(v11 << 12)
                      + *(unsigned int *)(*(_QWORD *)(MapRegisterFile + 56) + 44i64)
                      + (unsigned __int64)(v9 & 0xFFF));
  *MapRegisterBase = *(VOID **)(MapRegisterFile + 48);
  return 1i64;
}

Referenced by:

VfBuildScatterGatherList
VfFlushAdapterBuffers
VfGetScatterGatherList
VfMapTransfer