PopPepTryPowerDownDevice
CHAR __fastcall PopPepTryPowerDownDevice(INT64 a1, INT64 a2){
CHAR started;
KIRQL v5;
bool v6;
UINT8 v7;
unsigned int v8;
started = 0;
v5 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(a1 + 64));
v6 = (*(_BYTE *)(a1 + 24) & 1) == 0;
v7 = v5;
*(_BYTE *)(a1 + 125) = 1;
if( v6 && !*(_DWORD *)(a1 + 140) && *(_BYTE *)(a1 + 136) && !**(_DWORD **)(a1 + 104) && !**(_DWORD **)(a1 + 112) )
{
v8 = *(_DWORD *)(a1 + 120);
PopPepTriggerActivity(a1, 0i64, 4i64, 0i64);
PopPepPromoteActivities(a1, 0i64, 1i64);
if( a2 && **(_DWORD **)(a1 + 104) == 2 )
started = PopPepStartActivity(a1, 0i64, a1 + 72, 4i64, (volatile INT32 *)(a1 + 120), a2);
else
PopPepRequestWork(v8, *(unsigned int *)(a1 + 120));
}
PopPepReleaseActivityLink(a1, 0i64, 1, v7);
return started;
}Referenced by:
PopPepProcessEvent