PnpWatchdogTimerAllocate
CHAR *__fastcall PnpWatchdogTimerAllocate(INT64 a1){
CHAR *v1;
unsigned int v3;
unsigned int v4;
CHAR *Timer;
__int128 v6;
__int64 v7;
v1 = 0i64;
if( !a1
|| (v3 = *(_DWORD *)(a1 + 24)) == 0
|| !*(_QWORD *)(a1 + 8) && !*(_QWORD *)(a1 + 16)
|| (v4 = *(_DWORD *)(a1 + 28)) != 0 && (!*(_QWORD *)(a1 + 32) || v4 <= v3) )
{
__fastfail(5u);
}
Timer = WdtpAllocateTimer();
if( Timer )
{
v6 = *(_OWORD *)(a1 + 16);
*(_OWORD *)(Timer + 8) = *(_OWORD *)a1;
v7 = *(_QWORD *)(a1 + 32);
*(_OWORD *)(Timer + 24) = v6;
*((_QWORD *)Timer + 5) = v7;
if( *(_QWORD *)(a1 + 16) )
{
*((_QWORD *)Timer + 11) = Timer;
*((_QWORD *)Timer + 10) = WdtpBarkWorkerThread;
*((_QWORD *)Timer + 8) = 0i64;
}
return Timer;
}
return v1;
}Referenced by:
PnpAllocateWatchdog