ViDeadlockCertify

UINT64 __stdcall ViDeadlockCertify(VOID *Caller, _VI_DEADLOCK_NODE *AcquiredNode){
  __int64 v3; 
  int *v4; 
  int v5; 
  int v6; 
  int v7; 
  unsigned int v8; 
  __int64 v9; 
  _QWORD *v10; 
  __int64 v11; 
  _QWORD *v12; 

  if( !VfWin32kDllBase
    || VfWin32kDllBase > (unsigned __int64)Caller
    || VfWin32kDllBase + (unsigned __int64)(unsigned int)VfWin32kSizeOfImage <= (unsigned __int64)Caller
    || !AcquiredNode->ThreadEntry->ThreadUsesEresources )
  {
    LODWORD(v3) = *((_DWORD *)ViDeadlockGlobals + 8216);
    if( (unsigned int)v3 < 3
      || (((v4 = *(int **)(*((_QWORD *)ViDeadlockGlobals + 4110) + 56i64),
            v5 = **(_DWORD **)(*((_QWORD *)ViDeadlockGlobals + 4109) + 56i64),
            v5 != 5)
        || (v6 = *v4, *v4 != 6))
       && ((v7 = *v4, *v4 != 5) || (v6 = 5, v7 = 5, v5 != 6))
       || (!VfTcpIpDllBase
        || VfTcpIpDllBase > (unsigned __int64)Caller
        || VfTcpIpDllBase + (unsigned __int64)(unsigned int)VfTcpIpSizeOfImage <= (unsigned __int64)Caller)
       && (!VfTdxDllBase
        || VfTdxDllBase > (unsigned __int64)Caller
        || VfTdxDllBase + (unsigned __int64)(unsigned int)VfTdxSizeOfImage <= (unsigned __int64)Caller)
       && ((v7 = v6, !VfMrxsmbDllBase)
        || VfMrxsmbDllBase > (unsigned __int64)Caller
        || VfMrxsmbDllBase + (unsigned __int64)(unsigned int)VfMrxsmbSizeOfImage <= (unsigned __int64)Caller))
      && (v5 != 1
       || v7 != 1
       || (!VfTmDllBase
        || VfTmDllBase > (unsigned __int64)Caller
        || VfTmDllBase + (unsigned __int64)(unsigned int)VfTmSizeOfImage <= (unsigned __int64)Caller)
       && (!VfKsDllBase
        || VfKsDllBase > (unsigned __int64)Caller
        || VfKsDllBase + (unsigned __int64)(unsigned int)VfKsSizeOfImage <= (unsigned __int64)Caller)) )
    {
      v8 = 1;
      if( (unsigned int)v3 <= 1 )
      {
LABEL_31:
        if( (unsigned int)v3 <= 1 )
          return 1i64;
        while( 1 )
        {
          v3 = (unsigned int)(v3 - 1);
          v10 = (_QWORD *)**((_QWORD **)ViDeadlockGlobals + v3 + 4109);
          if( v10 )
            break;
LABEL_39:
          if( (unsigned int)v3 <= 1 )
            return 1i64;
        }
        while( 1 )
        {
          LODWORD(v11) = v3 - 1;
          if( (_DWORD)v3 != 1 )
            break;
LABEL_38:
          v10 = (_QWORD *)*v10;
          if( !v10 )
            goto LABEL_39;
        }
        while( 1 )
        {
          v11 = (unsigned int)(v11 - 1);
          v12 = (_QWORD *)**((_QWORD **)ViDeadlockGlobals + v11 + 4109);
          if( v12 )
            break;
LABEL_37:
          if( !(_DWORD)v11 )
            goto LABEL_38;
        }
        while( *(_QWORD *)(v12[7] + 8i64) != *(_QWORD *)(v10[7] + 8i64) )
        {
          v12 = (_QWORD *)*v12;
          if( !v12 )
            goto LABEL_37;
        }
        ++*((_DWORD *)ViDeadlockGlobals + 8207);
      }
      else
      {
        while( 1 )
        {
          v9 = *((_QWORD *)ViDeadlockGlobals + v8 + 4108);
          if( *(_QWORD *)(*(_QWORD *)(*((_QWORD *)ViDeadlockGlobals + v8 + 4109) + 56i64) + 8i64) == *(_QWORD *)(*(_QWORD *)(v9 + 56) + 8i64)
            && (*(_DWORD *)(v9 + 72) & 2) != 0 )
          {
            break;
          }
          if( ++v8 >= (unsigned int)v3 )
            goto LABEL_31;
        }
      }
    }
  }
  return 0i64;
}

Referenced by:

ViDeadlockAnalyze