PnpUpdateRebootRequiredReason

__int64 __fastcall PnpUpdateRebootRequiredReason(INT64 a1, __int64 a2, __int64 a3){
  unsigned int v3; 
  INT64 v6; 
  INT64 v8[2]; 
  int v9; 
  int v10; 
  int v11; 
  char v12; 

  v10 = HIDWORD(a2);
  v3 = 0;
  v12 = 0;
  v11 = 0;
  v9 = 0;
  v8[0] = 0i64;
  if( PnpGetObjectProperty(
         *(&stru_140CF2E80 + 1214),
         a1,
         1i64,
         0i64,
         0i64,
         (INT64)&DEVPKEY_Device_IsRebootRequired,
         (INT64)&v9,
         (INT64)&v12) >= 0
    && v9 == 17
    && v11 == 1
    && v12 == -1
    && (PnpGetObjectProperty(
          *(&stru_140CF2E80 + 1214),
          a1,
          1i64,
          0i64,
          0i64,
          (INT64)&DEVPKEY_Device_RebootRequiredReason,
          (INT64)&v9,
          (INT64)v8) < 0
     || v9 != 9
     || v11 != 8) )
  {
    v6 = 0i64;
  }
  else
  {
    v6 = v8[0];
  }
  v8[0] = a3 | v6;
  if( a3 | v6 )
    return(unsigned int)PnpSetObjectProperty(
                           *(&stru_140CF2E80 + 607),
                           a1,
                           1u,
                           0i64,
                           0i64,
                           (__int64)&DEVPKEY_Device_RebootRequiredReason,
                           9,
                           (__int64)v8,
                           8,
                           0);
  else
    PnpSetObjectProperty(
      *(&stru_140CF2E80 + 607),
      a1,
      1u,
      0i64,
      0i64,
      (__int64)&DEVPKEY_Device_RebootRequiredReason,
      0,
      0i64,
      0,
      0);
  return v3;
}

Referenced by:

PiDevCfgProcessDevice
PipProcessRestartPhase2
PipProcessStartPhase2
PnpReallocateResources