PopSnapSystemIdleContext
void __fastcall PopSnapSystemIdleContext(_QWORD *a1, _DWORD *a2){
VOID **PoolWithTag;
__int64 v5;
VOID **v6;
INT64 *v7;
__int128 v8;
_DWORD *v9;
__int64 v10;
unsigned __int64 v11;
PopAcquireRwLockExclusive((_POP_RW_LOCK *)&PopIrpWorkerControlEvent + 15);
PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x148ui64, 1734960208i64);
v5 = 2i64;
*a1 = PoolWithTag;
v6 = PoolWithTag;
v7 = &PopSystemIdleContext;
do
{
*(_OWORD *)v6 = *(_OWORD *)v7;
*((_OWORD *)v6 + 1) = *((_OWORD *)v7 + 1);
*((_OWORD *)v6 + 2) = *((_OWORD *)v7 + 2);
*((_OWORD *)v6 + 3) = *((_OWORD *)v7 + 3);
*((_OWORD *)v6 + 4) = *((_OWORD *)v7 + 4);
*((_OWORD *)v6 + 5) = *((_OWORD *)v7 + 5);
*((_OWORD *)v6 + 6) = *((_OWORD *)v7 + 6);
v6 += 16;
v8 = *((_OWORD *)v7 + 7);
v7 += 16;
*((_OWORD *)v6 - 1) = v8;
--v5;
}
while( v5 );
*(_OWORD *)v6 = *(_OWORD *)v7;
*((_OWORD *)v6 + 1) = *((_OWORD *)v7 + 1);
*((_OWORD *)v6 + 2) = *((_OWORD *)v7 + 2);
*((_OWORD *)v6 + 3) = *((_OWORD *)v7 + 3);
v6[8] = (VOID *)v7[8];
*a2 = 0;
if( dword_140C0F2B4 )
{
v9 = &unk_140C0F1DC;
v10 = 4i64;
do
{
if( *((_BYTE *)v9 - 4) )
{
if( *v9 )
{
if( *v9 == 1 )
v11 = (*(_QWORD *)(v9 - 3) - *(_QWORD *)(v9 - 5)) / 0x989680ui64;
else
LODWORD(v11) = -1;
}
else
{
LODWORD(v11) = 0;
}
if( (unsigned int)v11 > *a2 )
*a2 = v11;
}
v9 += 14;
--v10;
}
while( v10 );
}
PopReleaseRwLock((_POP_RW_LOCK *)&PopIrpWorkerControlEvent + 15);
}Referenced by:
PopArmIdlePhaseWatchdog
PopIdlePhaseWatchdogCallback