SmKmSqmAddToStream

VOID __stdcall SmKmSqmAddToStream(UINT64 EtwHandle, _SQM_STREAM_ENTRY *StreamEntries){
  _DWORD *v2; 
  char *v3; 
  char *v5; 
  __int64 v6; 
  int v7; 
  int *v8; 
  const wchar_t *v9; 
  __int64 v10; 
  int v11; 
  int v12; 
  int v13; 
  int v14; 
  _EVENT_DATA_DESCRIPTOR UserData; 
  void *v16; 
  __int64 v17; 
  int *v18; 
  __int64 v19; 
  int *v20; 
  __int64 v21; 
  char v22; 
  char v23; 

  v13 = 2;
  UserData.Ptr = (unsigned __int64)&v11;
  v3 = &v22;
  v12 = 6839;
  v16 = &unk_140C12C60;
  v11 = 11;
  v18 = &v12;
  v14 = 0;
  v20 = &v13;
  v5 = &v23;
  *(_QWORD *)&UserData.Size = 4i64;
  v6 = 2i64;
  v17 = 16i64;
  v19 = 4i64;
  v21 = 4i64;
  do
  {
    v7 = *v2;
    v8 = v2 + 2;
    *(_QWORD *)v3 = v2;
    *(_QWORD *)(v5 - 20) = 4i64;
    if( v7 != 1 )
      v8 = &v14;
    *(_QWORD *)(v5 - 12) = v8;
    *(_QWORD *)(v5 - 4) = 4i64;
    if( v7 == 2 )
      v9 = (const wchar_t *)*((_QWORD *)v2 + 1);
    else
      v9 = L"0";
    v10 = -1i64;
    do
      ++v10;
    while( v9[v10] );
    *(_QWORD *)(v5 + 4) = v9;
    *((_DWORD *)v5 + 3) = 2 * v10 + 2;
    v2 += 4;
    *((_DWORD *)v5 + 4) = 0;
    v3 += 48;
    v5 += 48;
    --v6;
  }
  while( v6 );
  EtwWriteEx(EtwHandle, &SmEventSQMStreamRow, 0i64, 0, 0, 0, (v3 - (char *)&UserData) >> 4, &UserData);
}

Referenced by:

SmKmStoreTerminateWorker