IovUtilIsVerifiedDeviceStack

UINT64 __stdcall IovUtilIsVerifiedDeviceStack(_DEVICE_OBJECT *DeviceObject){
  INT64 v1; 
  INT64 v2; 
  _DEVICE_OBJECT *AttachedTo; 
  signed int ExtensionFlags; 
  unsigned int v6; 
  UINT8 v7; 
  _DEVICE_OBJECT *v8; 
  int v9; 
  int v10; 
  _DEVOBJ_EXTENSION *DeviceObjectExtension; 
  unsigned int v12; 
  int v13; 
  unsigned int v14; 

  AttachedTo = DeviceObject;
  ExtensionFlags = DeviceObject->DeviceObjectExtension->ExtensionFlags;
  if( ExtensionFlags < 0 )
    return((unsigned int)ExtensionFlags >> 30) & 1;
  v6 = 0;
  v7 = KeAcquireQueuedSpinLock(10i64, v1, v2);
  while( 1 )
  {
    v8 = AttachedTo;
    AttachedTo = AttachedTo->DeviceObjectExtension->AttachedTo;
    MmIsDriverVerifying(v8->DriverObject);
    if( v9 )
      v6 = 1;
    if( !AttachedTo )
      break;
    v10 = AttachedTo->DeviceObjectExtension->ExtensionFlags;
    if( v10 < 0 )
    {
      if( (v10 & 0x40000000) != 0 )
        v6 = 1;
      goto LABEL_10;
    }
  }
  do
  {
LABEL_10:
    DeviceObjectExtension = v8->DeviceObjectExtension;
    v12 = DeviceObjectExtension->ExtensionFlags;
    v13 = v12 | 0x40000000;
    v14 = v12 & 0xBFFFFFFF;
    if( !v6 )
      v13 = v14;
    DeviceObjectExtension->ExtensionFlags = v13 | 0x80000000;
    v8 = v8->AttachedDevice;
  }
  while( v8 );
  KeReleaseQueuedSpinLock(LockQueueIoDatabaseLock, v7);
  return v6;
}

Referenced by:

IovpSessionDataCreate
VfMajorTestStartedPdoStack