KdpReportCommandStringStateChange

VOID __stdcall KdpReportCommandStringStateChange(STRING *Name, STRING *Command, CONTEXT *ContextRecord){
  unsigned int Length; 
  UINT64 v7; 
  UINT64 v8; 
  unsigned int v9; 
  UINT64 v10; 
  UINT64 Flags; 
  UINT64 Flagsa; 
  UINT64 ActualSize; 
  _STRING OutMessageData; 
  _STRING OutMessageHeader; 
  INT64 result[4]; 
  INT64 v17[26]; 
  OutMessageData = 0i64;
  OutMessageHeader = 0i64;
  memset((INT64)result, 0i64);
  LODWORD(ActualSize) = 0;
  do
  {
    KdpSetCommonState(12338, (__int64)ContextRecord, (__int64)result);
    KdpSetContextState((INT64)result, (INT64)ContextRecord);
    memset((INT64)v17, 0i64);
    Length = Name->Length;
    v7 = 127i64;
    OutMessageData.Buffer = (char *)KdpMessageBuffer;
    if( (unsigned __int16)Length <= 0x7Fu )
      v7 = Length;
    LODWORD(Flags) = 4;
    KdpCopyMemoryChunks((UINT64)Name->Buffer, KdpMessageBuffer, v7, 0i64, Flags, &ActualSize);
    OutMessageData.Length = ActualSize + 1;
    OutMessageData.Buffer[(unsigned __int16)(ActualSize + 1) - 1] = 0;
    v8 = Command->Length;
    v9 = KdTransportMaxPacketSize - OutMessageData.Length - 240;
    LODWORD(Flagsa) = 4;
    if( (unsigned int)v8 >= v9 )
      v8 = v9;
    KdpCopyMemoryChunks(
      (UINT64)Command->Buffer,
      &OutMessageData.Buffer[OutMessageData.Length],
      v8,
      0i64,
      Flagsa,
      &ActualSize);
    OutMessageData.Length += ActualSize + 1;
    v10 = OutMessageData.Length;
    OutMessageData.Buffer[OutMessageData.Length - 1] = 0;
    OutMessageHeader.Buffer = (char *)result;
    OutMessageHeader.Length = 240;
  }
  while( KdpSendWaitContinue(v10, &OutMessageHeader, &OutMessageData, ContextRecord) == ContinueProcessorReselected );
}

Referenced by:

KdpCommandString