KdpReadVirtualMemory

INT64 __fastcall KdpReadVirtualMemory(INT64 a1, INT64 a2, UINT64 a3){
  unsigned __int64 v3; 
  unsigned int v6; 
  void *v7; 
  UINT64 v8; 
  int v9; 
  UINT64 Flags; 
  __int128 v12; 
  UINT64 ActualSize; 
  ActualSize = a3;
  v3 = *(unsigned int *)(a1 + 24);
  v12 = 0i64;
  if( v3 > (unsigned __int64)(unsigned int)KdTransportMaxPacketSize - 56 )
    LODWORD(v3) = KdTransportMaxPacketSize - 56;
  v6 = *(unsigned __int16 *)(a2 + 2);
  v7 = *(void **)(a2 + 8);
  v8 = *(_QWORD *)(a1 + 16);
  if( (unsigned int)v3 > v6 )
    LODWORD(v3) = v6;
  LODWORD(Flags) = 4;
  LODWORD(ActualSize) = v3;
  *(_DWORD *)(a1 + 8) = KdpCopyMemoryChunks(v8, v7, (unsigned int)v3, 0i64, Flags, &ActualSize);
  v9 = ActualSize;
  *(_WORD *)a2 = ActualSize;
  *(_DWORD *)(a1 + 28) = v9;
  LOWORD(v12) = 56;
  *((_QWORD *)&v12 + 1) = a1;
  return KdSendPacket(2i64, &v12, a2, &KdpContext);
}

Referenced by:

KdpSendWaitContinue