PpmWmiDispatch

NTSTATUS __stdcall PpmWmiDispatch(
        tagWMIACTIONCODE ActionCode,
        VOID *DataPath,
        UINT64 BufferSize,
        VOID *Buffer,
        VOID *Context,
        UINT64 *Size){
  char v6; 
  UINT8 GetAllData; 
  __int32 v8; 
  __int32 v9; 
  __int32 v10; 
  NTSTATUS result; 
  __int64 v12; 
  __int64 v13; 
  volatile signed __int32 *v14; 
  __int64 v15; 
  __int64 v16; 
  __int64 v17; 
  __int64 v18; 
  __int64 v19; 

  v6 = 0;
  GetAllData = 0;
  if( ActionCode == WmiGetAllData )
  {
    GetAllData = 1;
    goto LABEL_45;
  }
  v8 = ActionCode - 1;
  if( !v8 )
  {
LABEL_45:
    result = PpmWmiGetAllData(
               (PROCESSOR_POWER_STATE *)((char *)Context - 224),
               (_GUID *)DataPath,
               BufferSize,
               Buffer,
               Size,
               GetAllData);
    goto LABEL_9;
  }
  v9 = v8 - 3;
  if( !v9 )
  {
    v6 = 1;
    goto LABEL_12;
  }
  v10 = v9 - 1;
  if( !v10 )
  {
LABEL_12:
    *(_DWORD *)Size = 0;
    v12 = *(_QWORD *)DataPath;
    v13 = *(_QWORD *)&PPM_PERFSTATE_CHANGE_GUID.Data1 - *(_QWORD *)DataPath;
    if( *(_QWORD *)&PPM_PERFSTATE_CHANGE_GUID.Data1 == *(_QWORD *)DataPath )
      v13 = *(_QWORD *)PPM_PERFSTATE_CHANGE_GUID.Data4 - *((_QWORD *)DataPath + 1);
    if( v13 )
    {
      v15 = *(_QWORD *)&PPM_PERFSTATE_DOMAIN_CHANGE_GUID.Data1 - v12;
      if( *(_QWORD *)&PPM_PERFSTATE_DOMAIN_CHANGE_GUID.Data1 == v12 )
        v15 = *(_QWORD *)PPM_PERFSTATE_DOMAIN_CHANGE_GUID.Data4 - *((_QWORD *)DataPath + 1);
      if( v15 )
      {
        v16 = PPM_IDLESTATE_CHANGE_GUID - v12;
        if( PPM_IDLESTATE_CHANGE_GUID == v12 )
          v16 = 0x6C4CACA73084CC9Ei64 - *((_QWORD *)DataPath + 1);
        if( v16 )
        {
          v17 = *(_QWORD *)&PPM_IDLE_ACCOUNTING_EX_GUID.Data1 - v12;
          if( *(_QWORD *)&PPM_IDLE_ACCOUNTING_EX_GUID.Data1 == v12 )
            v17 = *(_QWORD *)PPM_IDLE_ACCOUNTING_EX_GUID.Data4 - *((_QWORD *)DataPath + 1);
          if( v17 )
          {
            v18 = *(_QWORD *)&PPM_THERMALCONSTRAINT_GUID.Data1 - v12;
            if( *(_QWORD *)&PPM_THERMALCONSTRAINT_GUID.Data1 == v12 )
              v18 = *(_QWORD *)PPM_THERMALCONSTRAINT_GUID.Data4 - *((_QWORD *)DataPath + 1);
            if( v18 )
            {
              v19 = *(_QWORD *)&PPM_THERMAL_POLICY_CHANGE_GUID.Data1 - v12;
              if( *(_QWORD *)&PPM_THERMAL_POLICY_CHANGE_GUID.Data1 == v12 )
                v19 = *(_QWORD *)PPM_THERMAL_POLICY_CHANGE_GUID.Data4 - *((_QWORD *)DataPath + 1);
              if( v19 )
                return -1073741163;
              v14 = (volatile signed __int32 *)((char *)&stru_140CF2E80 + 7800);
            }
            else
            {
              v14 = &WmiThermalEventEnabled;
            }
          }
          else
          {
            v14 = (volatile signed __int32 *)&WmiIdleAccntEventEnabled;
          }
        }
        else
        {
          v14 = (volatile signed __int32 *)&WmiIdleStateEventEnabled;
        }
      }
      else
      {
        v14 = &dword_140CED0CC;
      }
    }
    else
    {
      v14 = (volatile signed __int32 *)&dword_140CED0D0;
    }
    if( v6 )
    {
      if( _InterlockedIncrement(v14) == 1 && v14 == (volatile signed __int32 *)&WmiIdleAccntEventEnabled )
        KiSetTimerEx(&PpmWmiIdleAccountingTimer, 0i64, 10000i64, 0, &PpmWmiIdleAccountingDpc);
    }
    else if( _InterlockedExchangeAdd(v14, 0xFFFFFFFF) == 1
           && v14 == (volatile signed __int32 *)&WmiIdleAccntEventEnabled )
    {
      KeCancelTimer((INT64)&PpmWmiIdleAccountingTimer);
    }
    return 0;
  }
  if( v10 != 3 )
  {
    *(_DWORD *)Size = 0;
    return -1073741808;
  }
  result = PpmWmiRegisterInfo(*((unsigned int *)Context - 8239), (UINT64)DataPath, (VOID *)BufferSize, (UINT64 *)Buffer);
LABEL_9:
  if( result >= 0 )
    return 0;
  return result;
}

Referenced by:

No references.