KdpGetBusData

INT64 __fastcall KdpGetBusData(_DWORD *a1, INT64 a2, UINT64 a3){
  unsigned __int64 v5; 
  unsigned int v6; 
  UINT64 v7; 
  UINT64 v8; 
  UINT64 v9; 
  _BUS_DATA_TYPE v10; 
  NTSTATUS v11; 
  bool v12; 
  PVOID Buffer; 
  UINT64 Request; 
  __int64 v16[3]; 
  UINT64 Actual; 
  Actual = a3;
  v16[0] = 0i64;
  v16[1] = (__int64)a1;
  v5 = (unsigned int)a1[8];
  LOWORD(v16[0]) = 56;
  if( v5 > (unsigned __int64)(unsigned int)KdTransportMaxPacketSize - 56 )
    LODWORD(v5) = KdTransportMaxPacketSize - 56;
  v6 = *(unsigned __int16 *)(a2 + 2);
  v7 = (unsigned int)a1[7];
  v8 = (unsigned int)a1[6];
  if( (unsigned int)v5 <= v6 )
    v6 = v5;
  v10 = a1[4];
  v9 = (unsigned int)a1[5];
  LODWORD(Request) = v6;
  Buffer = *(PVOID *)(a2 + 8);
  LODWORD(Actual) = v6;
  v11 = KdpSysReadBusData(v10, v9, v8, v7, Buffer, Request, &Actual);
  v12 = (unsigned int)Actual < v6;
  a1[2] = v11;
  if( v12 )
    v6 = Actual;
  a1[8] = v6;
  *(_WORD *)a2 = v6;
  return KdSendPacket(2i64, v16, a2, &KdpContext);
}

Referenced by:

KdpSendWaitContinue