ViDeadlockCheckDuplicatesAmongRoots
VOID **__fastcall ViDeadlockCheckDuplicatesAmongRoots(INT64 a1, INT64 **a2){
VOID **result;
int v3;
_QWORD **v4;
_QWORD *v7;
_VI_DEADLOCK_NODE *v8;
_VI_DEADLOCK_NODE *v9;
void *retaddr;
result = &retaddr;
v3 = 0;
v4 = (_QWORD **)(*(_QWORD *)(a1 + 56) + 24i64);
v7 = *v4;
while( v7 != v4 )
{
v8 = (_VI_DEADLOCK_NODE *)(v7 - 5);
v7 = (_QWORD *)*v7;
if( !v8->Parent )
{
result = (VOID **)ViDeadlockSimilarNodes(v8, (_VI_DEADLOCK_NODE *)a1);
if( (_DWORD)result )
{
if( v3 )
ViDeadlockMergeNodes((_VI_DEADLOCK_NODE *)a1, v9, (VOID **)a2);
else
v3 = 1;
}
}
}
return result;
}Referenced by:
VfDeadlockAcquireResource