KdpPromptString

UINT8 __stdcall KdpPromptString(STRING *Output, STRING *Input){
  UINT64 Length; 
  char *Buffer; 
  int v5; 
  UINT64 v6; 
  char *v7; 
  UINT64 Flags; 
  UINT64 Flagsa; 
  UINT64 ActualSize; 
  __int128 v12; 
  __int128 v13; 
  int v14; 
  __int16 v15; 
  __int16 v16; 
  int v17; 
  int MaximumLength; 
  Length = Output->Length;
  Buffer = Output->Buffer;
  LODWORD(ActualSize) = 0;
  LODWORD(Flags) = 4;
  v12 = 0i64;
  v13 = 0i64;
  KdpCopyMemoryChunks((UINT64)Buffer, KdpMessageBuffer, Length, 0i64, Flags, &ActualSize);
  if( (unsigned __int64)(unsigned int)ActualSize + 16 > (unsigned int)KdTransportMaxPacketSize )
    LODWORD(ActualSize) = KdTransportMaxPacketSize - 16;
  v15 = KeProcessorLevel;
  v14 = 12849;
  v16 = *((_DWORD *)KeGetPcr() + 105);
  MaximumLength = Input->MaximumLength;
  v17 = ActualSize;
  LOWORD(v12) = ActualSize;
  *((_QWORD *)&v13 + 1) = &v14;
  LOWORD(v13) = 16;
  *((_QWORD *)&v12 + 1) = KdpMessageBuffer;
  KdSendPacket(3i64, &v13, &v12, &KdpContext);
  WORD1(v13) = 16;
  WORD1(v12) = 4096;
  do
  {
    v5 = KdReceivePacket(3i64, &v13, &v12, &ActualSize, &KdpContext);
    if( v5 == 2 )
      return 1;
  }
  while( v5 );
  v6 = (unsigned int)ActualSize;
  v7 = Input->Buffer;
  if( (unsigned int)ActualSize > Input->MaximumLength )
    v6 = Input->MaximumLength;
  LODWORD(Flagsa) = 5;
  LODWORD(ActualSize) = v6;
  KdpCopyMemoryChunks((UINT64)v7, KdpMessageBuffer, v6, 0i64, Flagsa, &ActualSize);
  Input->Length = ActualSize;
  return 0;
}

Referenced by:

KdpPrompt