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.