ViDeadlockCanProceed

UINT64 __stdcall ViDeadlockCanProceed(VOID *Resource, _VI_DEADLOCK_RESOURCE_TYPE Type){
  char v3; 
  UINT64 result; 

  result = 0;
  if( ViDeadlockDetectionEnabled )
  {
    if( (unsigned int)KeNumberProcessors_0 <= 4 && KeGetCurrentIrql() <= 2u )
    {
      KeAreInterruptsEnabled((CHAR)Resource, *(_BYTE **)&Type);
      if( v3 )
      {
        if( ViDeadlockGlobals )
        {
          ViDeadlockCheckStackLimits();
          if( Resource != &ViDeadlockDatabaseLock && (struct _KTHREAD *)ViDeadlockDatabaseOwner != KeGetCurrentThread() )
            return 1;
        }
      }
    }
  }
  return result;
}

Referenced by:

VfDeadlockAcquireResource
VfDeadlockDeleteMemoryRange
VfDeadlockInitializeResource
VfDeadlockReleaseResource