PpmEventTraceProfiles
VOID __stdcall PpmEventTraceProfiles(UINT8 Rundown){
const _EVENT_DESCRIPTOR *v2;
__int64 v3;
unsigned __int8 v4;
WCHAR **v5;
unsigned __int64 *v6;
unsigned __int64 v7;
unsigned __int64 v8;
const _EVENT_DESCRIPTOR *v9;
size_t pcchLength[2];
unsigned __int64 v11;
unsigned __int64 v12;
unsigned __int64 v13;
__int64 v14;
_EVENT_DATA_DESCRIPTOR UserData;
unsigned __int64 *v16;
int v17;
int v18;
unsigned __int64 *v19;
int v20;
int v21;
__int64 v22;
int v23;
int v24;
__int64 v25;
int v26;
int v27;
unsigned __int64 *v28;
int v29;
int v30;
unsigned __int64 *v31;
int v32;
int v33;
unsigned __int64 *v34;
int v35;
int v36;
unsigned __int64 *v37;
int v38;
int v39;
*(_QWORD *)pcchLength = 0i64;
if( PpmEtwRegistered )
{
v2 = &PPM_ETW_PROCESSOR_PROFILE_REGISTERED;
if( Rundown )
v2 = &PPM_ETW_PROCESSOR_PROFILE_RUNDOWN;
if( EtwEventEnabled(PpmEtwHandle, v2) )
{
v3 = *(&stru_140C00F40 + 365);
v4 = 0;
v14 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
PpmEndProfileAccumulation(*(&stru_140C00F40 + 365), *(UINT64 *)&KUSER_SHARED_DATA.InterruptTime.LowPart);
while( 1 )
{
RtlStringCchLengthW(*v5, 0x7FFFFFFFui64, (UINT64 *)pcchLength);
v7 = *v6;
UserData.Reserved = 0;
v18 = 0;
v21 = 0;
v24 = 0;
v27 = 0;
UserData.Ptr = v7;
v17 = 1;
v20 = 1;
v23 = 4;
UserData.Size = 2 * pcchLength[0] + 2;
v16 = v6 + 1;
v19 = v6 + 4;
v22 = (__int64)v6 + 28;
v25 = (__int64)v6 + 12;
v26 = 16;
v11 = v6[691] / 0xA;
v12 = v6[692] / 0xA;
v8 = v6[693];
v30 = 0;
v33 = 0;
v36 = 0;
v39 = 0;
v28 = v6 + 690;
v31 = &v11;
v34 = &v12;
v37 = &v13;
v13 = v8 / 0xA;
v9 = &PPM_ETW_PROCESSOR_PROFILE_RUNDOWN;
v29 = 8;
v32 = 8;
v35 = 8;
v38 = 8;
if( !Rundown )
v9 = &PPM_ETW_PROCESSOR_PROFILE_REGISTERED;
EtwWrite(PpmEtwHandle, v9, 0, 9u, &UserData);
if( v4 == PpmProfileCount )
break;
v5 = (WCHAR **)(PpmProfiles + 5552i64 * v4++);
}
*(_QWORD *)(v3 + 5512) = v14;
}
}
}Referenced by:
PpmEventTraceControlCallback
PpmRegisterProfiles