PpmIdleCheckCoordinatedDependencies

INT64 __fastcall PpmIdleCheckCoordinatedDependencies(
        _KPRCB *Prcb,
        UINT64 PreselectState,
        UINT64 EntryPriority,
        UINT64 RemainingLatency,
        UINT64 ExpectedIdle,
        UINT64 Dependencies,
        _PPM_SELECTION_DEPENDENCY *DependencyList,
        UINT *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; 
  INT64 result; 
  INT64 v18; 
  INT64 v19; 
  UINT64 EntryPrioritya; 
  int v21; 
  v21 = 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 == *((_DWORD *)Prcb + 9) )
    {
      result = PpmIdleSelectCoordinatedProcessorDependency(
                 (__int64)Prcb,
                 v12,
                 v11,
                 ExpectedIdle,
                 (__int64)Menu,
                 ProcessorState);
    }
    else
    {
      KeGetPrcb(Entries_low);
      v19 = v18;
      if( (int)PpmTestAndLockProcessor(v18, SecondaryMask, (INT64)Menu) >= 0 )
        result = *(_BYTE *)(PpmPlatformStates + 12)
              && *(_DWORD *)(248i64 * *(unsigned int *)(v19 + 32820) + *(_QWORD *)(v19 + 0x8000) + 1000) > v11 ? 2147483650i64 : 0i64;
      else
        result = 2147483653i64;
      v15 = SecondaryMask;
    }
    if( result )
      break;
    LODWORD(EntryPriority) = v21;
    ++v10;
    Menu = (_PPM_SELECTION_MENU *)((char *)Menu + 24);
    if( v10 >= (unsigned int)Dependencies )
      return 0i64;
  }
  return result;
}

Referenced by:

PpmIdleCheckCoordinatedDependency
PpmIdleCheckCoordinatedStateEligibility