PopPepIdleTimeoutRoutine
VOID __stdcall PopPepIdleTimeoutRoutine(VOID *Parameter){
__int64 v1;
_ETHREAD *CurrentThread;
__int64 i;
unsigned __int64 v4;
unsigned int ready;
unsigned int j;
__int64 v7;
char v8;
__int64 v9;
unsigned __int64 v10;
int ResidencyIdleState;
_DWORD *v12;
unsigned int v13;
INT64 v14;
INT64 v15;
v1 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&PopIrpWorkerControlEvent + 356, 0i64);
for( i = *(&PopIrpWorkerControlEvent + 336);
(_UNKNOWN *)i != (_UNKNOWN *)((char *)&PopIrpWorkerControlEvent + 2688);
i = *(_QWORD *)i )
{
if( (*(_BYTE *)(i + 16) & 1) == 0 )
{
v4 = (unsigned __int8)ExAcquireSpinLockExclusive((INT64 *)(i + 64));
if( *(_BYTE *)(i + 136) )
{
ready = PopPepCountReadyActivities((unsigned int *)i, 0i64, 3);
for( j = 0; j < *(_DWORD *)(i + 180); ++j )
{
v7 = 200i64 * j + i + 184;
if( *(_DWORD *)(v7 + 176) == *(_DWORD *)(v7 + 188) - 1
|| **(_DWORD **)(v7 + 72)
|| (v8 = 1, **(_DWORD **)(v7 + 80)) )
{
v8 = 0;
}
if( v8 )
{
v9 = *(_QWORD *)(v7 + 136);
if( v1 > v9 )
{
v10 = v1 - v9;
if( (unsigned __int64)(v1 - v9) > *(_QWORD *)(v7 + 120) )
{
*(_QWORD *)(v7 + 120) = v10;
ResidencyIdleState = PopPepComponentGetResidencyIdleState(v7, v10);
if( v12[40] != ResidencyIdleState )
{
v12[40] = ResidencyIdleState;
PopPepUpdateIdleState(i, v12, 1);
}
}
}
}
}
PopPepPromoteActivities(i, 0i64, 3);
v13 = PopPepCountReadyActivities((unsigned int *)i, 0i64, 3);
PopPepRequestWork(ready, v13, v14, v15);
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(i + 64));
}
else
{
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(i + 64));
}
__writecr8(v4);
}
}
if( _InterlockedCompareExchange64((_QWORD *)&PopIrpWorkerControlEvent + 356, 0i64, 17i64) != 17 )
ExfReleasePushLockShared((_EX_PUSH_LOCK *)&PopIrpWorkerControlEvent + 356);
KeAbPostRelease((char *)&PopIrpWorkerControlEvent + 2848);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
PopPepArmIdleTimer(1u);
}Referenced by:
No references.