PnprQuiesceDevices

INT64 __fastcall PnprQuiesceDevices(INT64 a1){
  int started; 
  UINT64 v3; 
  int v4; 
  int v5; 
  __int64 v6; 
  EVENT_DESCRIPTOR *v7; 
  int v8; 
  __int64 v9; 
  EVENT_DESCRIPTOR *v10; 
  UINT64 v11; 
  int v12; 
  int v13; 
  *(_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((_DWORD *)(a1 + 36));
  started = PoStartPowerStateTasks((_DWORD *)(a1 + 36));
  if( started >= 0 )
  {
    PoStartPartitionReplace((VOID *)(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(a1 + 4, v6, v7);
      *(_BYTE *)(a1 + 30) = 2;
      started = PoBroadcastSystemState(a1 + 4, v9, v10);
      if( started >= 0 )
        goto LABEL_16;
      v8 = 2012;
    }
    else
    {
      v8 = 1994;
    }
    v11 = PnprContext;
    v12 = *(_DWORD *)(PnprContext + 20984);
    if( !v12 )
      v12 = v8;
    *(_DWORD *)(PnprContext + 20984) = v12;
    v13 = *(_DWORD *)(v11 + 20988);
    if( !v13 )
      v13 = 7;
    *(_DWORD *)(v11 + 20988) = v13;
  }
  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