KdpPrintString

UINT8 __stdcall KdpPrintString(_STRING *Output){
  UINT64 Length; 
  char *Buffer; 
  UINT64 Flags; 
  UINT64 ActualSize; 
  __int128 v6; 
  __int128 v7; 
  int v8; 
  __int16 v9; 
  __int16 Number; 
  int v11; 
  int v12; 

  Length = Output->Length;
  Buffer = Output->Buffer;
  LODWORD(ActualSize) = 0;
  v12 = 0;
  LODWORD(Flags) = 4;
  v6 = 0i64;
  v7 = 0i64;
  KdpCopyMemoryChunks((UINT64)Buffer, &KdpMessageBuffer, Length, 0i64, Flags, &ActualSize);
  if( (unsigned __int64)(unsigned int)ActualSize + 16 > (unsigned int)KdTransportMaxPacketSize )
    LODWORD(ActualSize) = KdTransportMaxPacketSize - 16;
  v9 = KeProcessorLevel;
  v8 = 12848;
  Number = KeGetPcr()->Prcb.Number;
  LOWORD(v7) = 16;
  *((_QWORD *)&v7 + 1) = &v8;
  v11 = ActualSize;
  LOWORD(v6) = ActualSize;
  *((_QWORD *)&v6 + 1) = &KdpMessageBuffer;
  KdSendPacket(3i64, &v7, &v6, &KdpContext);
  return KdpPollBreakInWithPortLock();
}

Referenced by:

KdRefreshDebuggerNotPresent
KdpPrint