ViDeadlockEmptyDatabase

VOID __stdcall ViDeadlockEmptyDatabase(){
  _QWORD *v0; 
  _VI_DEADLOCK_THREAD *v1; 
  _VI_DEADLOCK_RESOURCE *v2; 
  __int64 v3; 
  __int64 v4; 
  __int64 v5; 
  __int64 v6; 
  _QWORD *v7; 
  _VI_DEADLOCK_RESOURCE *v8; 
  _QWORD *v9; 
  __int64 v10; 
  __int64 v11; 
  _QWORD *v12; 
  _VI_DEADLOCK_THREAD *v13; 
  _QWORD *v14; 
  _ETHREAD *Thread; 
  _QWORD *v16; 
  _VI_DEADLOCK_RESOURCE *v17; 
  UINT8 OldIrql; 
  PVOID NodesToFree; 
  v0 = 0i64;
  v1 = 0i64;
  NodesToFree = 0i64;
  v2 = 0i64;
  OldIrql = ViRaiseIrqlToDpcLevel();
  ViDeadlockDetectionLock(1ui64);
  ViDeadlockDetectionEnabled = 0;
  if( ViDeadlockGlobals )
  {
    v3 = *((_QWORD *)ViDeadlockGlobals + 2);
    v4 = 1023i64;
    v5 = 1023i64;
    v6 = 0i64;
    do
    {
      v7 = *(_QWORD **)(v6 + v3);
      while( v7 != (_QWORD *)((char *)v0 + v3) )
      {
        v8 = (_VI_DEADLOCK_RESOURCE *)(v7 - 5);
        v7 = (_QWORD *)*v7;
        ViDeadlockRemoveResource(v8, 1ui64, &NodesToFree);
        v9 = ViDeadlockGlobals;
        *(_QWORD *)&v8->Type = v2;
        v2 = v8;
        v3 = v9[2];
      }
      v0 += 2;
      v6 += 16i64;
      --v5;
    }
    while( v5 );
    v10 = 0i64;
    v11 = *((_QWORD *)ViDeadlockGlobals + 2050);
    do
    {
      v12 = *(_QWORD **)(v5 + v11);
      while( v12 != (_QWORD *)(v10 + v11) )
      {
        v13 = (_VI_DEADLOCK_THREAD *)(v12 - 3);
        v12 = (_QWORD *)*v12;
        ViDeadlockRemoveThread(v13, 1ui64);
        v14 = ViDeadlockGlobals;
        v13->Thread = (_ETHREAD *)v1;
        v1 = v13;
        v11 = v14[2050];
      }
      v10 += 16i64;
      v5 += 16i64;
      --v4;
    }
    while( v4 );
    v0 = NodesToFree;
  }
  ViDeadlockDetectionUnlock(1ui64);
  ViLowerIrql(OldIrql);
  if( v1 )
  {
    do
    {
      Thread = v1->Thread;
      ViDeadlockFree(v1, 3);
      v1 = (_VI_DEADLOCK_THREAD *)Thread;
    }
    while( Thread );
  }
  if( v0 )
  {
    do
    {
      v16 = (_QWORD *)*v0;
      ViDeadlockFree(v0, 2);
      v0 = v16;
    }
    while( v16 );
  }
  if( v2 )
  {
    do
    {
      v17 = *(_VI_DEADLOCK_RESOURCE **)&v2->Type;
      ViDeadlockFree(v2, 1);
      v2 = v17;
    }
    while( v17 );
  }
}

Referenced by:

ViDeadlockDetectionApplySettings