PipClearDevNodeFlags

VOID __stdcall PipClearDevNodeFlags(_DEVICE_NODE *DeviceNode, UINT64 Flags){
  int v2; 
  int v3; 
  __int64 v5; 
  __int64 v6; 
  __int64 v7; 
  v2 = *((_DWORD *)DeviceNode + 99);
  v3 = v2 & ~(_DWORD)Flags;
  *((_DWORD *)DeviceNode + 99) = v3;
  if( ((v2 ^ v3) & 0x307000) != 0 )
  {
    v5 = *((_QWORD *)DeviceNode + 6);
    if( v5 )
    {
      PnpRaiseNtPlugPlayDevicePropertyChangeEvent((__int64)DeviceNode, v5, 11);
      v6 = *((unsigned int *)DeviceNode + 99);
      if( ((v2 ^ *((_DWORD *)DeviceNode + 99)) & 0x4000) != 0 )
      {
        PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v6, *((_QWORD *)DeviceNode + 6), 28);
        LODWORD(v6) = *((_DWORD *)DeviceNode + 99);
      }
      v7 = v2 ^ (unsigned int)v6;
      if( (v7 & 0x2000) != 0 )
        PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v7, *((_QWORD *)DeviceNode + 6), 27);
    }
  }
}

Referenced by:

IopReleaseFilteredBootResources
IopReleaseResources
IopRemoveDevice
IopRemoveLegacyDeviceNode
PiProcessClearDeviceProblem
PiProcessNewDeviceNode
PiProcessReenumeration
PiProcessResourceRequirementsChanged
PipClearDevNodeProblem
PipEnumerateCompleted
PipEnumerateDevice
PipProcessRestartPhase1
PnpAllocateResources
PnpBuildCmResourceLists
PnpCancelStopDeviceNode
PnpGetResourceRequirementsForAssignTable
PnpInvalidateRelationsInList
PnpProcessRelation
PnpReallocateResources
PnpRestartDeviceNode
PnpSurpriseRemoveLockedDeviceNode