PpmCheckResetProcessors

INT64 __fastcall PpmCheckResetProcessors(INT64 a1){
  unsigned int v1; 
  INT64 result; 
  __int64 v4; 
  INT64 i; 
  __int64 v6; 
  __int64 v7; 
  unsigned int j; 
  __int64 v9; 
  v1 = 0;
  if( a1 )
  {
    result = PopExecuteOnTargetProcessors(a1 + 24, (INT64)PpmCheckReset, 0i64, 0i64);
    if( *(_DWORD *)(a1 + 200) )
    {
      do
      {
        result = v1;
        v7 = *(_QWORD *)(a1 + 216) + 136i64 * v1;
        if( *(_DWORD *)(v7 + 16) == 1 )
          result = PpmResetPerfTimes(*(_QWORD *)v7, v6);
        ++v1;
      }
      while( v1 < *(_DWORD *)(a1 + 200) );
    }
  }
  else
  {
    result = PopExecuteOnTargetProcessors((INT64)&PpmCheckRegistered, (INT64)PpmCheckReset, 0i64, 0i64);
    for( i = PpmPerfDomainHead; (INT64 *)i != &PpmPerfDomainHead; i = *(_QWORD *)i )
    {
      for( j = 0; j < *(_DWORD *)(i + 200); ++j )
      {
        result = j;
        v9 = *(_QWORD *)(i + 216) + 136i64 * j;
        if( *(_DWORD *)(v9 + 16) == 1 )
          result = PpmResetPerfTimes(*(_QWORD *)v9, v4);
      }
    }
  }
  return result;
}

Referenced by:

PpmCheckArmPeriod
PpmRegisterPerfStates