KdpReadControlSpace

INT64 __fastcall KdpReadControlSpace(INT64 a1, INT64 a2, UINT64 a3){
  unsigned __int64 v3; 
  unsigned int v6; 
  UINT64 v7; 
  UINT64 v8; 
  void *v9; 
  NTSTATUS v10; 
  bool v11; 
  __int64 v13[3]; 
  UINT64 Actual; 
  Actual = a3;
  v3 = *(unsigned int *)(a1 + 24);
  v13[0] = 56i64;
  v13[1] = a1;
  if( v3 > (unsigned __int64)(unsigned int)KdTransportMaxPacketSize - 56 )
    LODWORD(v3) = KdTransportMaxPacketSize - 56;
  v6 = *(unsigned __int16 *)(a2 + 2);
  v7 = *(unsigned __int16 *)(a1 + 6);
  if( (unsigned int)v3 <= v6 )
    v6 = v3;
  v8 = *(_QWORD *)(a1 + 16);
  v9 = *(void **)(a2 + 8);
  LODWORD(Actual) = v6;
  v10 = KdpSysReadControlSpace(v7, v8, v9, v6, &Actual);
  v11 = (unsigned int)Actual < v6;
  *(_DWORD *)(a1 + 8) = v10;
  if( v11 )
    v6 = Actual;
  *(_WORD *)a2 = v6;
  *(_DWORD *)(a1 + 28) = v6;
  return KdSendPacket(2i64, v13, a2, &KdpContext);
}

Referenced by:

KdpSendWaitContinue