ViDeadlockCheckDuplicatesAmongChildren

VOID **__fastcall ViDeadlockCheckDuplicatesAmongChildren(INT64 a1, INT64 a2, INT64 **a3){
  VOID **result; 
  INT64 v4; 
  _QWORD *v6; 
  int v8; 
  _VI_DEADLOCK_NODE *v9; 
  _VI_DEADLOCK_NODE *v10; 
  void *retaddr; 

  result = &retaddr;
  v4 = a1 + 8;
  v6 = *(_QWORD **)(a1 + 8);
  v8 = 0;
  while( v6 != (_QWORD *)v4 )
  {
    v9 = (_VI_DEADLOCK_NODE *)(v6 - 3);
    v6 = (_QWORD *)*v6;
    result = (VOID **)ViDeadlockSimilarNodes(v9, (_VI_DEADLOCK_NODE *)a2);
    if( (_DWORD)result )
    {
      if( v8 )
        ViDeadlockMergeNodes((_VI_DEADLOCK_NODE *)a2, v10, (VOID **)a3);
      else
        v8 = 1;
    }
  }
  return result;
}

Referenced by:

VfDeadlockAcquireResource