ViDeadlockSearchResource

_VI_DEADLOCK_RESOURCE *__stdcall ViDeadlockSearchResource(PVOID ResourceAddress, PVOID *NodesToFree){
  unsigned __int64 v3; 
  LIST_ENTRY *v4; 
  PVOID *v5; 
  LIST_ENTRY *i; 
  v3 = ((unsigned __int64)ResourceAddress >> 12) % 0x3FF;
  v4 = (LIST_ENTRY *)(*((_QWORD *)ViDeadlockGlobals + 2) + 16 * v3);
  if( v4->Flink != v4
    && (unsigned int)VfUtilAddressRangeFit(
                       (_VF_ADDRESS_RANGE *)ViDeadlockGlobals + v3 + 2,
                       (UINT8 *)ResourceAddress,
                       (UINT8 *)ResourceAddress + 1) )
  {
    ViDeadlockTrimResources(v4, v5);
    for( i = v4->Flink; i != v4; i = i->Flink )
    {
      if( i[-2].Flink == ResourceAddress )
        return(_VI_DEADLOCK_RESOURCE *)&i[-3].Blink;
    }
  }
  return 0i64;
}

Referenced by:

VfDeadlockAcquireResource
VfDeadlockReleaseResource
ViDeadlockAddResource