PnprQuiesceDevices

__int64 __fastcall PnprQuiesceDevices(__int64 a1){
  NTSTATUS started; 
  __int64 v3; 
  int v4; 
  int v5; 
  int v6; 
  __int64 v7; 
  int v8; 
  int v9; 

  *(_DWORD *)(PnprContext + 21024) = PnprGetMillisecondCounter(0);
  *(_OWORD *)a1 = 0i64;
  *(_OWORD *)(a1 + 16) = 0i64;
  *(_OWORD *)(a1 + 32) = 0i64;
  *(_QWORD *)(a1 + 48) = 0i64;
  *(_DWORD *)(a1 + 56) = 0;
  *(_DWORD *)a1 = -2013265920;
  *(_DWORD *)(a1 + 48) = -2013265920;
  *(_DWORD *)(a1 + 40) = 2;
  *(_DWORD *)(a1 + 44) = 5;
  *(_DWORD *)(a1 + 32) = PoBlockConsoleSwitch((_WIN32_POWERSTATE_PARAMETERS *)(a1 + 36));
  started = PoStartPowerStateTasks((_WIN32_POWERSTATE_PARAMETERS *)(a1 + 36));
  if( started >= 0 )
  {
    PoStartPartitionReplace((_WIN32_POWERSTATE_PARAMETERS *)(a1 + 36), *(unsigned int *)(a1 + 32));
    *(_DWORD *)(a1 + 8) = 5;
    *(_DWORD *)(a1 + 16) = 1;
    *(_DWORD *)(a1 + 4) = 1;
    *(_DWORD *)(a1 + 24) = *(_DWORD *)a1;
    *(_DWORD *)(a1 + 12) = 5;
    *(_DWORD *)(a1 + 20) = 2;
    started = PoInitializeBroadcast();
    if( started >= 0 )
    {
      *(_BYTE *)(a1 + 30) = 3;
      PoBroadcastSystemState((PO_BROADCAST_SYSTEM_STATE *)(a1 + 4));
      *(_BYTE *)(a1 + 30) = 2;
      started = PoBroadcastSystemState((PO_BROADCAST_SYSTEM_STATE *)(a1 + 4));
      if( started >= 0 )
        goto LABEL_16;
      v6 = 2012;
    }
    else
    {
      v6 = 1994;
    }
    v7 = PnprContext;
    v8 = *(_DWORD *)(PnprContext + 20984);
    if( !v8 )
      v8 = v6;
    *(_DWORD *)(PnprContext + 20984) = v8;
    v9 = *(_DWORD *)(v7 + 20988);
    if( !v9 )
      v9 = 7;
    *(_DWORD *)(v7 + 20988) = v9;
  }
  else
  {
    v3 = PnprContext;
    v4 = *(_DWORD *)(PnprContext + 20984);
    if( !v4 )
      v4 = 1971;
    v5 = *(_DWORD *)(PnprContext + 20988);
    *(_DWORD *)(PnprContext + 20984) = v4;
    if( !v5 )
      v5 = 7;
    *(_DWORD *)(v3 + 20988) = v5;
  }
LABEL_16:
  *(_DWORD *)(PnprContext + 21028) = PnprGetMillisecondCounter(0);
  return(unsigned int)started;
}

Referenced by:

PnprQuiesceWorker