KeBalanceSetManager

VOID __stdcall __noreturn KeBalanceSetManager(VOID *Context){
  int v1; 
  volatile CCHAR v2; 
  NTSTATUS v3; 
  UINT64 *v4; 
  _LIST_ENTRY *v5; 
  int v6; 
  unsigned int ActiveProcessorCount; 
  __int64 v8; 
  int v9; 
  __int64 v10; 
  __int64 v11; 
  int v12; 
  unsigned int v13; 
  int v14; 
  __int64 v15; 
  unsigned int v16; 
  VOID *Object[3]; 
  INT64 v18[14]; 

  KeSetPriorityThread(KeGetCurrentThread(), 17);
  v1 = 8;
  v2 = KeNumberProcessorsGroup0[2];
  Object[0] = (char *)&KiSwapEvent + 32;
  KiStackProtectTime = (unsigned __int64)((0x8F0D180 * (unsigned __int128)(unsigned __int64)KiMaximumIncrementReciprocal) >> 64) >> v2;
  Object[1] = (VOID *)(*(&stru_140C50B28 + 843) + 96i64);
  while( 1 )
  {
    while( 1 )
    {
      v3 = KeWaitForMultipleObjects(2ui64, Object, WaitAny, Executive, 0, 0, 0i64, 0i64);
      if( !v3 )
        break;
      if( v3 == 1 )
        MiWorkingSetManager((_MM_WORKING_SET_MANAGER_WAKE_TYPE)&Irp, WorkingSetImmediate);
    }
    memset(v18, 0i64, 0x68u);
    VslpEnterIumSecureMode(2u, 209, 0i64, (INT64)v18);
    if( dword_140CEBEF8 > 1 )
    {
      ActiveProcessorCount = KeQueryActiveProcessorCountEx(0xFFFFu);
      if( ActiveProcessorCount > 1 )
      {
        v8 = 0i64;
        v9 = 0;
        do
        {
          v10 = (__int64)*(&KiProcessorBlock + v8);
          v8 = (unsigned int)(v8 + 1);
          v9 += *(_DWORD *)(v10 + 11676);
        }
        while( (unsigned int)v8 < ActiveProcessorCount );
        v11 = 0i64;
        v12 = v9 / (int)ActiveProcessorCount;
        v13 = ActiveProcessorCount - 1;
        v14 = 0;
        do
        {
          v15 = (__int64)*(&KiProcessorBlock + v11);
          v16 = v12 - *(_DWORD *)(v15 + 11676);
          if( v12 != *(_DWORD *)(v15 + 11676) )
          {
            _InterlockedExchangeAdd((volatile signed __int32 *)(v15 + 11676), v16);
            v14 += v16;
          }
          v11 = (unsigned int)(v11 + 1);
        }
        while( (unsigned int)v11 < v13 );
        if( v14 )
          _InterlockedExchangeAdd(&(*(&KiProcessorBlock + v11))->LookasideIrpFloat, -v14);
      }
    }
    if( !ExpScanCount )
      break;
    if( ExpScanCount == 1 )
    {
      v4 = (UINT64 *)((char *)&WheapDeferredInternalLogsEventLock + 2848);
      v5 = (_LIST_ENTRY *)((char *)&WheapDeferredInternalLogsEventLock + 2816);
      goto LABEL_9;
    }
    if( ExpScanCount == 2 )
      ExpScanSystemLookasideList();
LABEL_10:
    if( ++ExpScanCount == 3 )
      ExpScanCount = 0;
    if( *(&ExBootDevicesRemovedEvent + 1440) )
    {
      if( !--*(&ExBootDevicesRemovedEvent + 386) )
      {
        *(&ExBootDevicesRemovedEvent + 386) = 8;
        if( !_InterlockedCompareExchange((_DWORD *)&ExBootDevicesRemovedEvent + 376, 1, 0) )
          ExQueueWorkItem((PWORK_QUEUE_ITEM)&ExBootDevicesRemovedEvent + 46, DelayedWorkQueue);
      }
    }
    MiWorkingSetManager((_MM_WORKING_SET_MANAGER_WAKE_TYPE)&Irp, WorkingSetPeriodic);
    if( PspJobTimeLimitsRequest )
    {
      v6 = PspJobTimeLimitsCount;
      if( PspJobTimeLimitsCount )
      {
        --PspJobTimeLimitsCount;
        if( v6 == 1 )
        {
          _m_prefetchw(&PspJobTimeLimitsWorkItemFlags);
          if( (_InterlockedOr(&PspJobTimeLimitsWorkItemFlags, 5u) & 4) == 0 )
            ExQueueWorkItem(&PspJobTimeLimitsWorkItem, DelayedWorkQueue);
        }
      }
    }
    if( !--v1 )
    {
      v1 = 8;
      if( !_InterlockedCompareExchange((_DWORD *)&stru_140CF2E80 + 1252, 1, 0) )
      {
        KeSetEvent((PRKEVENT)&KiSwapEvent, 1, 0);
        KePulseEvent((PRKEVENT)((char *)&KiSwapEvent + 64), 1, 0);
      }
    }
    if( *(&stru_140C23628 + 6120) )
    {
      if( KiTimelineBitmapTime != (unsigned int)((((KUSER_SHARED_DATA.TickCountMultiplier
                                                   * (unsigned __int64)KUSER_SHARED_DATA.ReservedTickCountOverlay[1]) << 8)
                                                 + ((KUSER_SHARED_DATA.TickCountMultiplier
                                                   * (unsigned __int64)KUSER_SHARED_DATA.TickCount.LowPart) >> 24)) >> 12) )
        KiTimelineBitmapTime = (((KUSER_SHARED_DATA.TickCountMultiplier
                                * (unsigned __int64)KUSER_SHARED_DATA.ReservedTickCountOverlay[1]) << 8)
                              + ((KUSER_SHARED_DATA.TickCountMultiplier
                                * (unsigned __int64)KUSER_SHARED_DATA.TickCount.LowPart) >> 24)) >> 12;
    }
  }
  v4 = (UINT64 *)((char *)&WheapDeferredInternalLogsEventLock + 2880);
  v5 = (_LIST_ENTRY *)((char *)&WheapDeferredInternalLogsEventLock + 2832);
LABEL_9:
  ExpScanGeneralLookasideList(v5, v4);
  goto LABEL_10;
}

Referenced by:

No references.