ExpTryToAcquireResourceExclusiveLite

INT8 __stdcall ExpTryToAcquireResourceExclusiveLite(PVOID LockAddress){
  unsigned int v2; 
  _ETHREAD *CurrentThread; 
  unsigned int v4; 
  int v5; 
  unsigned int v6; 
  CHAR v7; 
  int v8; 
  unsigned int v9; 
  _KLOCK_QUEUE_HANDLE LockHandle; 

  memset(&LockHandle, 0, sizeof(LockHandle));
  v2 = 0;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v4 = 0;
  v5 = *(&PerfGlobalGroupMask + 1) & 0x20000;
  v6 = 65537;
  __incgsdword(0x86E0u);
  KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)LockAddress + 12, &LockHandle);
  v7 = ExpTryAcquireResourceExclusive((INT64)LockAddress);
  if( v7 )
  {
    v8 = *((_DWORD *)LockAddress + 14) & 7;
    *((_QWORD *)LockAddress + 6) = CurrentThread;
    *((_DWORD *)LockAddress + 14) = v8 | 8;
    if( v5 )
    {
      v2 = 1;
      v6 = 65569;
      v4 = *((_DWORD *)LockAddress + 17);
    }
  }
  else if( *((char *)LockAddress + 26) < 0 && *((_ETHREAD **)LockAddress + 6) == CurrentThread )
  {
    v9 = *((_DWORD *)LockAddress + 14) + 8;
    *((_DWORD *)LockAddress + 14) = v9;
    if( v5 )
    {
      v4 = *((_DWORD *)LockAddress + 17);
      v2 = v9 >> 3;
      v6 = 65585;
    }
    v7 = 1;
  }
  else
  {
    v7 = 0;
  }
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
  if( v7 )
  {
    __incgsdword(0x86E4u);
    __incgsdword(0x8664u);
  }
  if( v5 )
    PerfLogExecutiveResourceAcquire(v6, LockAddress, v2, v4);
  return v7;
}

Referenced by:

ExTryToAcquireResourceExclusiveLite