ViDeadlockSearchThread

_VI_DEADLOCK_THREAD *__stdcall ViDeadlockSearchThread(unsigned __int64 Thread){
  unsigned __int64 v2; 
  _QWORD *v3; 
  _QWORD *v4; 
  __int64 v5; 
  _VI_DEADLOCK_THREAD *result; 

  v2 = (Thread >> 12) % 0x3FF;
  v3 = (_QWORD *)(*((_QWORD *)ViDeadlockGlobals + 2050) + 16 * v2);
  if( (_QWORD *)*v3 == v3
    || !(unsigned int)VfUtilAddressRangeFit(
                        (_VF_ADDRESS_RANGE *)ViDeadlockGlobals + v2 + 1026,
                        (UINT8 *)Thread,
                        (UINT8 *)(Thread + 1)) )
  {
    return 0i64;
  }
  while( 1 )
  {
    result = (_VI_DEADLOCK_THREAD *)(v4 - 3);
    if( *(v4 - 3) == v5 )
      break;
    v4 = (_QWORD *)*v4;
    if( v4 == v3 )
      return 0i64;
  }
  return result;
}

Referenced by:

VfDeadlockAcquireResource
VfDeadlockAfterCallDriver
VfDeadlockBeforeCallDriver
VfDeadlockReleaseResource
ViIsThreadInsidePagingCodePaths