PerfLogExecutiveResourceAcquire

VOID __stdcall PerfLogExecutiveResourceAcquire(
        UINT64 Action,
        VOID *LockAddress,
        UINT64 RecursionCount,
        UINT64 ContentionCount){
  int v4; 
  unsigned int v5; 
  int v6; 
  struct _KPRCB *CurrentPrcb; 
  __int16 Group; 
  unsigned __int64 v9; 
  unsigned __int8 GroupIndex; 
  signed __int64 TrackingLockSlotForThread; 
  bool v12; 
  int v13; 

  v4 = ContentionCount;
  v5 = RecursionCount;
  v6 = Action;
  CurrentPrcb = KeGetCurrentPrcb();
  Group = CurrentPrcb->Group;
  v9 = __rdtsc();
  GroupIndex = CurrentPrcb->GroupIndex;
  ++CurrentPrcb->SynchCounters.ExEtwSynchTrackingNotificationsCount;
  LOWORD(v13) = Group;
  HIWORD(v13) = GroupIndex;
  TrackingLockSlotForThread = EtwpGetTrackingLockSlotForThread((__int64)LockAddress, (unsigned int)Action & 0xFFFF0000);
  if( TrackingLockSlotForThread )
  {
    ++CurrentPrcb->SynchCounters.ExEtwSynchTrackingNotificationsAccountedCount;
    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) == Group
        && *(_BYTE *)(TrackingLockSlotForThread + 26) == GroupIndex )
      {
        *(_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