PpmWmiDispatch
VOID __fastcall PpmWmiDispatch(INT64 a1, const _GUID *a2, VOID *a3, VOID *a4, INT64 a5, INT64 a6){
char v6;
char v7;
int v8;
int v9;
int v10;
__int64 v11;
__int64 v12;
volatile signed __int32 *v13;
__int64 v14;
__int64 v15;
__int64 v16;
__int64 v17;
__int64 v18;
INT64 GetAllData;
v6 = 0;
v7 = 0;
if( !(_DWORD)a1 )
{
v7 = 1;
goto LABEL_43;
}
v8 = a1 - 1;
if( !v8 )
{
LABEL_43:
LOBYTE(GetAllData) = v7;
PpmWmiGetAllData((const _PROCESSOR_POWER_STATE *)(a5 - 224), a2, (UINT64)a3, a4, (UINT64 *)a6, GetAllData);
return;
}
v9 = v8 - 3;
if( v9 )
{
v10 = v9 - 1;
if( v10 )
{
if( v10 == 3 )
PpmWmiRegisterInfo(*(unsigned int *)(a5 - 32956), (UINT64)a2, a3, (UINT64 *)a4);
else
*(_DWORD *)a6 = 0;
return;
}
}
else
{
v6 = 1;
}
*(_DWORD *)a6 = 0;
v11 = *(_QWORD *)&a2->Data1;
v12 = *(_QWORD *)&PPM_PERFSTATE_CHANGE_GUID.Data1 - *(_QWORD *)&a2->Data1;
if( *(_QWORD *)&PPM_PERFSTATE_CHANGE_GUID.Data1 == *(_QWORD *)&a2->Data1 )
v12 = *(_QWORD *)PPM_PERFSTATE_CHANGE_GUID.Data4 - *(_QWORD *)a2->Data4;
if( !v12 )
{
v13 = &WmiPerfStateEventEnabled;
goto LABEL_34;
}
v14 = *(_QWORD *)&PPM_PERFSTATE_DOMAIN_CHANGE_GUID.Data1 - v11;
if( *(_QWORD *)&PPM_PERFSTATE_DOMAIN_CHANGE_GUID.Data1 == v11 )
v14 = *(_QWORD *)PPM_PERFSTATE_DOMAIN_CHANGE_GUID.Data4 - *(_QWORD *)a2->Data4;
if( !v14 )
{
v13 = &WmiPerfStateDomainEventEnabled;
goto LABEL_34;
}
v15 = PPM_IDLESTATE_CHANGE_GUID - v11;
if( PPM_IDLESTATE_CHANGE_GUID == v11 )
v15 = 0x6C4CACA73084CC9Ei64 - *(_QWORD *)a2->Data4;
if( !v15 )
{
v13 = (volatile signed __int32 *)WmiIdleStateEventEnabled;
goto LABEL_34;
}
v16 = *(_QWORD *)&PPM_IDLE_ACCOUNTING_EX_GUID.Data1 - v11;
if( *(_QWORD *)&PPM_IDLE_ACCOUNTING_EX_GUID.Data1 == v11 )
v16 = *(_QWORD *)PPM_IDLE_ACCOUNTING_EX_GUID.Data4 - *(_QWORD *)a2->Data4;
if( !v16 )
{
v13 = &WmiIdleAccntEventEnabled;
goto LABEL_34;
}
v17 = *(_QWORD *)&PPM_THERMALCONSTRAINT_GUID.Data1 - v11;
if( *(_QWORD *)&PPM_THERMALCONSTRAINT_GUID.Data1 == v11 )
v17 = *(_QWORD *)PPM_THERMALCONSTRAINT_GUID.Data4 - *(_QWORD *)a2->Data4;
if( !v17 )
{
v13 = &WmiThermalEventEnabled;
goto LABEL_34;
}
v18 = *(_QWORD *)&PPM_THERMAL_POLICY_CHANGE_GUID.Data1 - v11;
if( *(_QWORD *)&PPM_THERMAL_POLICY_CHANGE_GUID.Data1 == v11 )
v18 = *(_QWORD *)PPM_THERMAL_POLICY_CHANGE_GUID.Data4 - *(_QWORD *)a2->Data4;
if( !v18 )
{
v13 = &WmiThermalPolicyEventEnabled;
LABEL_34:
if( v6 )
{
if( _InterlockedIncrement(v13) == 1 && v13 == &WmiIdleAccntEventEnabled )
KiSetTimerEx((_KTIMER *)&PpmWmiIdleAccountingTimer, 0i64, 10000i64, 0, &PpmWmiIdleAccountingDpc);
}
else if( _InterlockedExchangeAdd(v13, 0xFFFFFFFF) == 1 && v13 == &WmiIdleAccntEventEnabled )
{
KeCancelTimer((PKTIMER)&PpmWmiIdleAccountingTimer);
}
}
}Referenced by:
No references.