KdpReportLoadSymbolsStateChange

UINT8 __fastcall KdpReportLoadSymbolsStateChange(
        _STRING *PathName,
        _KD_SYMBOLS_INFO *SymbolInfo,
        UINT8 UnloadSymbols,
        _CONTEXT *ContextRecord){
  UINT64 v8; 
  _STRING *v9; 
  KCONTINUE_STATUS v10; 
  UINT64 Flags; 
  __int128 v13; 
  _STRING OutMessageHeader; 
  INT64 result[4]; 
  UINT64 ActualSize[3]; 
  ULONG CheckSum; 
  ULONG SizeOfImage; 
  UINT8 v19; 
  v13 = 0i64;
  OutMessageHeader = 0i64;
  memset((INT64)result, 0i64);
  do
  {
    KdpSetCommonState(12337, (__int64)ContextRecord, (__int64)result);
    KdpSetContextState((INT64)result, (INT64)ContextRecord);
    ActualSize[1] = (UINT64)SymbolInfo->BaseOfDll;
    ActualSize[2] = LODWORD(SymbolInfo->ProcessId);
    CheckSum = SymbolInfo->CheckSum;
    SizeOfImage = SymbolInfo->SizeOfImage;
    v19 = UnloadSymbols;
    if( PathName )
    {
      LODWORD(Flags) = 4;
      KdpCopyMemoryChunks((UINT64)PathName->Buffer, KdpPathBuffer, PathName->Length, 0i64, Flags, ActualSize);
      ++LODWORD(ActualSize[0]);
      v9 = (_STRING *)&v13;
      *((_QWORD *)&v13 + 1) = KdpPathBuffer;
      LOWORD(v13) = ActualSize[0];
      *((_BYTE *)KdpPathBuffer + LOWORD(ActualSize[0]) - 1) = 0;
    }
    else
    {
      LODWORD(ActualSize[0]) = 0;
      v9 = 0i64;
    }
    OutMessageHeader.Length = 240;
    OutMessageHeader.Buffer = (char *)result;
    v10 = KdpSendWaitContinue(v8, &OutMessageHeader, v9, ContextRecord);
  }
  while( v10 == ContinueProcessorReselected );
  return v10;
}

Referenced by:

KdpSymbol