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.