KeIntSteerPeriodic

VOID __fastcall KeIntSteerPeriodic(_KAFFINITY_EX *SteeringMask, UINT64 NumProcs){
  unsigned int v2; 
  unsigned __int8 CurrentIrql; 
  int v5; 
  ULONG_PTR *i; 
  __int64 *j; 
  UINT64 ProcIndex; 
  _KAFFINITY_ENUMERATION_CONTEXT Context; 
  _EVENT_DATA_DESCRIPTOR v10; 
  unsigned int *p_DeviceInterrupts; 
  __int64 v12; 
  _EVENT_DATA_DESCRIPTOR UserData; 
  int *v14; 
  __int64 v15; 
  int *v16; 
  __int64 v17; 
  _KAFFINITY_EX *v18; 
  __int64 v19; 
  unsigned __int64 *Bitmap; 
  int v21; 
  int v22; 

  v2 = NumProcs;
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  KxAcquireSpinLock(&KiIntTrackSpinlock);
  KiIntSteerCalculateDistribution(SteeringMask, v2);
  KeCopyAffinityEx(&KiIntSteerMask, SteeringMask);
  KiIntSteerMaskCount = v2;
  if( KiIntSteerEtwEventEnabled((__int64)&PPM_ETW_INTERRUPT_STEERING_MASK_CHANGE) )
  {
    *(_QWORD *)&UserData.Size = 4i64;
    UserData.Ptr = (unsigned __int64)&KiIntSteerLoadPercent;
    v15 = 4i64;
    v14 = &KiIntTrackRootCount;
    v17 = 4i64;
    v16 = &KiIntSteerMaskCount;
    v18 = &KiIntSteerMask;
    v19 = 2i64;
    v22 = 0;
    Bitmap = KiIntSteerMask.Bitmap;
    v21 = 160 * KiIntSteerMask.Count;
    EtwWriteEx(qword_140CEC788[0], &PPM_ETW_INTERRUPT_STEERING_MASK_CHANGE, 0i64, 0, 0, 0, 5u, &UserData);
  }
  LODWORD(ProcIndex) = 0;
  memset(&Context, 0, sizeof(Context));
  if( KiIntSteerEtwEventEnabled((__int64)&PPM_ETW_INTERRUPT_STEERING_PROC_CHANGE) )
  {
    Context.CurrentMask = KeActiveProcessors.Bitmap[0];
    Context.Affinity = &KeActiveProcessors;
    while( 1 )
    {
      KeEnumerateNextProcessor(&ProcIndex, &Context);
      if( v5 )
        break;
      v10.Ptr = (unsigned __int64)&ProcIndex;
      *(_QWORD *)&v10.Size = 4i64;
      v12 = 4i64;
      p_DeviceInterrupts = &(*(&KiProcessorBlock + (unsigned int)ProcIndex))->DeviceInterrupts;
      EtwWriteEx(qword_140CEC788[0], &PPM_ETW_INTERRUPT_STEERING_PROC_CHANGE, 0i64, 0, 0, 0, 2u, &v10);
    }
  }
  if( KiIntSteerEtwEventEnabled((__int64)PPM_ETW_INTERRUPT_STEERING_STATE_RETARGET) )
  {
    for( i = *(ULONG_PTR **)&KiIntTrackRootList; i != &KiIntTrackRootList; i = *(ULONG_PTR **)i )
    {
      if( *((_QWORD *)i + 22) != *((_QWORD *)i + 20) )
      {
        for( j = (__int64 *)*((_QWORD *)i + 2); j != (__int64 *)(i + 4); j = (__int64 *)*j )
          KiIntSteerLogState((__int64)j, (__int64)PPM_ETW_INTERRUPT_STEERING_STATE_RETARGET);
      }
    }
  }
  KiIntSteerDistributeInterrupts();
  KxReleaseSpinLock(&KiIntTrackSpinlock);
  __writecr8(CurrentIrql);
}

Referenced by:

PpmParkSteerInterrupts