PopRunMaximumIrpWorkers
VOID __stdcall PopRunMaximumIrpWorkers(){
__int64 v0;
unsigned int v1;
bool v2;
unsigned int v3;
__int64 v4;
_KSEMAPHORE StartedSemaphore;
*(&StartedSemaphore.Limit + 1) = 0;
StartedSemaphore.gap0[1] = 0;
StartedSemaphore.gap0[3] = 0;
ExAcquireFastMutex((PFAST_MUTEX)((char *)&PopIrpWorkerControlEvent + 64));
PopCreateIrpWorkerAllowed = 0;
v0 = (unsigned int)(15 - *(&PopIrpWorkerControlEvent + 30) - *(&PopIrpWorkerControlEvent + 7));
*(&PopIrpWorkerControlEvent + 30) += v0;
KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&PopIrpWorkerControlEvent + 64));
*(_DWORD *)&StartedSemaphore.gap0[4] = 0;
*(_QWORD *)&StartedSemaphore.gap0[16] = &StartedSemaphore.gap0[8];
v1 = 0;
StartedSemaphore.gap0[0] = 5;
*(_QWORD *)&StartedSemaphore.gap0[8] = &StartedSemaphore.gap0[8];
StartedSemaphore.gap0[2] = 8;
StartedSemaphore.Limit = v0;
if( (_DWORD)v0 )
{
do
{
v2 = PopCreateDynamicIrpWorker(&StartedSemaphore) < 0;
v3 = v1 + 1;
if( v2 )
v3 = v1;
v1 = v3;
--v0;
}
while( v0 );
if( v3 )
{
v4 = v3;
do
{
KeWaitForSingleObject((UINT64)&StartedSemaphore, 0, 0, 0, 0i64);
--v4;
}
while( v4 );
}
}
}Referenced by:
PopTransitionSystemPowerStateEx