ExpFindFastOwnerEntryForThread

INT64 *__stdcall ExpFindFastOwnerEntryForThread(INT64 a1, INT64 a2, CHAR a3, CHAR a4){
  INT64 *v4; 
  INT64 i; 
  INT64 v7; 
  INT64 v8; 

  v4 = (INT64 *)(a1 + 1576 + (a3 != 0 ? 0x18 : 0));
  for( i = *v4; ; i = *(_QWORD *)i )
  {
    if( (INT64 *)i == v4 )
      return 0i64;
    if( *(_QWORD *)(i + 24) == a2 )
      break;
  }
  if( a4 && (*(_BYTE *)(i + 17) & 2) == 0 )
  {
    v7 = *(_QWORD *)(i + 40);
    v8 = i + 40;
    while( v7 != v8 )
    {
      if( (*(_BYTE *)(v7 + 17) & 2) != 0 )
        return(INT64 *)v7;
      v7 = *(_QWORD *)v7;
    }
    return 0i64;
  }
  return(INT64 *)i;
}

Referenced by:

ExAcquireFastResourceExclusive
ExAcquireFastResourceShared
ExAcquireFastResourceSharedStarveExclusive
ExIsFastResourceHeld
ExIsFastResourceHeldExclusive
ExpFastResourceLegacyConvertExclusiveToShared
ExpFastResourceLegacyIsAcquiredShared
ExpFastResourceLegacyRelease