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