PopSqmAddToStream

NTSTATUS __fastcall PopSqmAddToStream(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
  NTSTATUS v5; 
  const wchar_t **v6; 
  unsigned int v7; 
  int v8; 
  int v9; 
  __int64 *v10; 
  __int64 v11; 
  const wchar_t *v12; 
  __int64 v13; 
  unsigned int v14; 
  unsigned int v15; 
  __int64 v16; 
  UINT64 UserDataCount; 
  int v18; 
  int v19; 
  int v20; 
  EVENT_DATA_DESCRIPTOR UserData; 
  __int64 *v22; 
  __int64 v23; 
  int *v24; 
  __int64 v25; 
  int *v26; 
  __int64 v27; 
  INT64 result[54]; 
  v19 = 11131;
  v20 = 4;
  v5 = memset((INT64)result, 0i64);
  v18 = 11;
  if( PopDiagHandleRegistered && a4 )
  {
    *(_QWORD *)&UserData.Size = 4i64;
    UserData.Ptr = (unsigned __int64)&v18;
    v6 = (const wchar_t **)(a4 + 8);
    v23 = 16i64;
    v22 = qword_140034DD8;
    v7 = 0;
    v25 = 4i64;
    v24 = &v19;
    v26 = &v20;
    v27 = 4i64;
    do
    {
      v8 = 3 * v7;
      v9 = *((_DWORD *)v6 - 2);
      v10 = &qword_140034DD0;
      if( v9 == 1 )
        v10 = (__int64 *)v6;
      *(&UserData.Ptr + 2 * (unsigned int)(v8 + 4)) = (unsigned __int64)(v6 - 1);
      *((_QWORD *)&UserData.Size + 2 * (unsigned int)(v8 + 4)) = 4i64;
      v11 = 2i64 * (unsigned int)(v8 + 5);
      *(&UserData.Ptr + v11) = (unsigned __int64)v10;
      *((_QWORD *)&UserData.Size + v11) = 4i64;
      if( v9 == 2 )
        v12 = *v6;
      else
        v12 = L"0";
      v13 = -1i64;
      do
        ++v13;
      while( v12[v13] );
      v14 = 2 * v13 + 2;
      v6 += 2;
      v15 = v7 + 2;
      ++v7;
      v16 = 6i64 * v15;
      *(&UserData.Ptr + v16) = (unsigned __int64)v12;
      *(&UserData.Size + 2 * v16) = v14;
      *(&UserData.Reserved + 2 * v16) = 0;
    }
    while( v7 < 4 );
    LODWORD(UserDataCount) = 31;
    return EtwWriteEx(
             PopDiagHandle,
             (EVENT_DESCRIPTOR *)&PopSqm_Add_StreamRow,
             0i64,
             0i64,
             0i64,
             0i64,
             UserDataCount,
             &UserData);
  }
  return v5;
}

Referenced by:

PopBatteryApplyCompositeState