PipClearDevNodeUserFlags

char __fastcall PipClearDevNodeUserFlags(__int64 a1, int a2){
  int v2; 
  int v3; 
  __int64 v5; 
  __int64 v6; 
  int v7; 
  __int64 v8; 
  v2 = *(_DWORD *)(a1 + 400);
  v3 = v2 & ~a2;
  *(_DWORD *)(a1 + 400) = v3;
  if( (((unsigned __int16)v2 ^ (unsigned __int16)v3) & 0x347) != 0 )
  {
    v5 = *(_QWORD *)(a1 + 48);
    if( v5 )
    {
      PnpRaiseNtPlugPlayDevicePropertyChangeEvent(a1, v5, 11);
      v6 = *(unsigned int *)(a1 + 400);
      v7 = v2 ^ *(_DWORD *)(a1 + 400);
      if( (((unsigned __int8)v2 ^ *(_BYTE *)(a1 + 400)) & 0x40) != 0 )
      {
        LOBYTE(v7) = PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v6, *(_QWORD *)(a1 + 48), 29);
        LODWORD(v6) = *(_DWORD *)(a1 + 400);
      }
      v8 = v2 ^ (unsigned int)v6;
      if( (v8 & 4) != 0 )
        LOBYTE(v7) = PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v8, *(_QWORD *)(a1 + 48), 30);
    }
  }
  return v7;
}

Referenced by:

IopRemoveDevice
PiDevCfgProcessDevice
PiProcessNewDeviceNode
PiProcessQueryDeviceState
PnpProcessAssignResources
PnpQueryRemoveLockedDeviceNode
PnpRestartDeviceNode
PnpTrackQueryRemoveDevices