PnpAllocateWatchdog

CHAR *__stdcall PnpAllocateWatchdog(){
  _QWORD *PoolWithTag; 
  _QWORD *v1; 
  CHAR *v2; 
  INT64 v4[3]; 
  int WatchdogTimeout; 
  int v6; 
  VOID(__fastcall *v7)(INT64); 
  v4[1] = 0i64;
  PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x28ui64, 0x57647050ui64);
  v1 = PoolWithTag;
  if( PoolWithTag )
  {
    v4[0] = (INT64)PoolWithTag;
    *(_OWORD *)PoolWithTag = 0i64;
    *((_OWORD *)PoolWithTag + 1) = 0i64;
    PoolWithTag[4] = 0i64;
    v4[2] = (INT64)PnpWatchdogWorkItem;
    WatchdogTimeout = PnpQueryWatchdogTimeout(1);
    v7 = PnpWatchdogBugcheck;
    v6 = PnpQueryWatchdogTimeout(0);
    v2 = PnpWatchdogTimerAllocate((INT64)v4);
    v1[1] = v2;
    if( !v2 )
    {
      ExFreePoolWithTag(v1, 0x57647050u);
      return 0i64;
    }
  }
  return(CHAR *)v1;
}

Referenced by:

PnpEnableWatchdog