PerfLogExecutiveResourceAcquire

VOID __stdcall PerfLogExecutiveResourceAcquire(
        UINT64 Action,
        PVOID LockAddress,
        UINT64 RecursionCount,
        UINT64 ContentionCount){
  int v4; 
  unsigned int v5; 
  int v6; 
  struct _KPRCB *CurrentPrcb; 
  __int16 v8; 
  unsigned __int64 v9; 
  unsigned __int8 v10; 
  INT64 TrackingLockSlotForThread; 
  bool v12; 
  int v13; 
  v4 = ContentionCount;
  v5 = RecursionCount;
  v6 = Action;
  CurrentPrcb = KeGetCurrentPrcb();
  v8 = *((unsigned __int8 *)CurrentPrcb + 208);
  v9 = __rdtsc();
  v10 = *((_BYTE *)CurrentPrcb + 209);
  ++*((_DWORD *)CurrentPrcb + 8540);
  LOWORD(v13) = v8;
  HIWORD(v13) = v10;
  TrackingLockSlotForThread = EtwpGetTrackingLockSlotForThread((INT64)LockAddress, (unsigned int)Action & 0xFFFF0000);
  if( TrackingLockSlotForThread )
  {
    ++*((_DWORD *)CurrentPrcb + 8541);
    if( ((v6 - 65569) & 0xFFFFFFDF) != 0 )
    {
      if( ((v6 - 65585) & 0xFFFFFFDF) != 0 )
        return;
      if( *(_DWORD *)(TrackingLockSlotForThread + 32) )
      {
        if( *(_DWORD *)(TrackingLockSlotForThread + 36) >= v5 )
        {
LABEL_16:
          *(_DWORD *)(TrackingLockSlotForThread + 32) = 1;
          return;
        }
LABEL_15:
        *(_DWORD *)(TrackingLockSlotForThread + 36) = v5;
        goto LABEL_16;
      }
      *(_QWORD *)(TrackingLockSlotForThread + 8) = 2i64;
    }
    else
    {
      v12 = *(_DWORD *)(TrackingLockSlotForThread + 32) == 4;
      *(_QWORD *)(TrackingLockSlotForThread + 8) = v9;
      if( !v12 )
      {
        *(_QWORD *)TrackingLockSlotForThread = 0i64;
        goto LABEL_14;
      }
      if( *(_WORD *)(TrackingLockSlotForThread + 24) == v8 && *(_BYTE *)(TrackingLockSlotForThread + 26) == v10 )
      {
        *(_QWORD *)TrackingLockSlotForThread = v9 - *(_QWORD *)TrackingLockSlotForThread;
        goto LABEL_14;
      }
    }
    *(_QWORD *)TrackingLockSlotForThread = 1i64;
LABEL_14:
    *(_DWORD *)(TrackingLockSlotForThread + 24) = v13;
    *(_DWORD *)(TrackingLockSlotForThread + 44) = v4;
    goto LABEL_15;
  }
}

Referenced by:

ExAcquireSharedWaitForExclusive
ExpTryToAcquireResourceExclusiveLite