PpmIdleCheckCoordinatedDependencies

UINT64 __stdcall PpmIdleCheckCoordinatedDependencies(
        _KPRCB *Prcb,
        UINT64 PreselectState,
        UINT64 EntryPriority,
        UINT64 RemainingLatency,
        UINT64 ExpectedIdle,
        UINT64 Dependencies,
        _PPM_SELECTION_DEPENDENCY *DependencyList,
        UINT64 *ProcessorState,
        _PPM_COORDINATED_SELECTION *CoordinatedSelection,
        _KAFFINITY_EX *SecondaryMask){
  unsigned int v10; 
  unsigned int v11; 
  unsigned int v12; 
  _PPM_SELECTION_MENU *Menu; 
  _KAFFINITY_EX *v15; 
  UINT64 Entries_low; 
  UINT64 result; 
  _KPRCB *v18; 
  UINT64 EntryPrioritya; 
  int v20; 

  v20 = EntryPriority;
  v10 = 0;
  v11 = RemainingLatency;
  v12 = PreselectState;
  if( !(_DWORD)Dependencies )
    return 0i64;
  Menu = &DependencyList->Menu;
  v15 = SecondaryMask;
  while( 1 )
  {
    Entries_low = LODWORD(Menu[-1].Entries);
    if( (_DWORD)Entries_low == -1 )
    {
      LODWORD(EntryPrioritya) = EntryPriority;
      result = PpmIdleCheckCoordinatedDependency(
                 Prcb,
                 v12,
                 v11,
                 ExpectedIdle,
                 EntryPrioritya,
                 Menu,
                 ProcessorState,
                 CoordinatedSelection,
                 v15);
    }
    else if( (_DWORD)Entries_low == Prcb->Number )
    {
      result = PpmIdleSelectCoordinatedProcessorDependency(Prcb, v12, v11, ExpectedIdle, Menu, ProcessorState);
    }
    else
    {
      v18 = KeGetPrcb(Entries_low);
      if( PpmTestAndLockProcessor(v18, SecondaryMask, Menu) >= 0 )
        result = *(_BYTE *)(PpmPlatformStates + 12)
              && v18->PowerState.IdleStates->State[v18->PowerState.TargetIdleState].Latency > v11 ? 2147483650i64 : 0i64;
      else
        result = 2147483653i64;
      v15 = SecondaryMask;
    }
    if( result )
      break;
    LODWORD(EntryPriority) = v20;
    ++v10;
    Menu = (_PPM_SELECTION_MENU *)((char *)Menu + 24);
    if( v10 >= (unsigned int)Dependencies )
      return 0i64;
  }
  return result;
}

Referenced by:

PpmIdleCheckCoordinatedDependency
PpmIdleCheckCoordinatedStateEligibility