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