PopFxIsDevicePotentialDripsConstraint

INT64 __stdcall PopFxIsDevicePotentialDripsConstraint(PVOID Object){
  bool v1; 
  __int64 v3; 
  KIRQL v4; 
  INT64 result; 
  __int64 Str1; 
  Str1 = 0i64;
  v1 = 0;
  ObfReferenceObjectWithTag(Object, 0x78466F50u);
  if( Object )
    v3 = *(_QWORD *)(*((_QWORD *)Object + 39) + 40i64);
  else
    v3 = 0i64;
  if( v3 )
  {
    v4 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(v3 + 88));
    _m_prefetchw((const void *)(v3 + 296));
    if( (_InterlockedOr((volatile signed __int32 *)(v3 + 296), 0) & 4) != 0 )
      v1 = (_InterlockedCompareExchange((volatile signed __int32 *)(*(_QWORD *)(v3 + 80) + 824i64), 0, 0) & 0x10) != 0;
    ExReleaseSpinLockExclusive((PEX_SPIN_LOCK)(v3 + 88), v4);
    if( !v1 )
      IoGetDevicePropertyData(*(DEVICE_OBJECT **)(v3 + 32), (DEVPROPKEY *)&DEVPKEY_Device_EnumeratorName, 0i64, 0i64);
  }
  LODWORD(result) = ObfDereferenceObjectWithTag(Object, 0x78466F50ui64);
  LOBYTE(result) = v1;
  return result;
}

Referenced by:

NtPowerInformation