PerfLogExecutiveResourceSetOwnerPointer

VOID __stdcall PerfLogExecutiveResourceSetOwnerPointer(UINT64 Action, VOID *LockAddress){
  struct _KPRCB *CurrentPrcb; 
  int v3; 
  signed __int64 TrackingLockSlotForThread; 
  __int64 v6[3]; 
  int v7; 
  unsigned int CurrentRunTime; 
  VOID *v9; 
  int v10; 
  int v11; 
  __int64 v12[2]; 

  CurrentPrcb = KeGetCurrentPrcb();
  v3 = Action;
  ++CurrentPrcb->SynchCounters.ExEtwSynchTrackingNotificationsCount;
  v10 = Action;
  v9 = LockAddress;
  memset(v6, 0, sizeof(v6));
  v7 = 0;
  v11 = 0;
  v12[1] = 48i64;
  CurrentRunTime = KeGetCurrentThread()[1].CurrentRunTime;
  v12[0] = (__int64)v6;
  EtwTraceKernelEvent((__int64)v12, 1u, 0x20020000u, 0x52Bu, 0x1501802u);
  if( KeGetCurrentThread()[1].WaitBlock[0].Object )
  {
    TrackingLockSlotForThread = EtwpGetTrackingLockSlotForThread((__int64)LockAddress, v3 & 0xFFFF0000);
    if( TrackingLockSlotForThread )
    {
      if( *(_DWORD *)(TrackingLockSlotForThread + 32) )
      {
        ++CurrentPrcb->SynchCounters.ExEtwSynchTrackingNotificationsAccountedCount;
        *(_QWORD *)(TrackingLockSlotForThread + 16) = 0i64;
        *(_QWORD *)(TrackingLockSlotForThread + 28) = 0i64;
        *(_DWORD *)(TrackingLockSlotForThread + 36) = 0;
        *(_QWORD *)TrackingLockSlotForThread = 0i64;
        *(_QWORD *)(TrackingLockSlotForThread + 8) = 0i64;
        *(_DWORD *)(TrackingLockSlotForThread + 24) = 0;
        *(_DWORD *)(TrackingLockSlotForThread + 44) = 0;
      }
      else
      {
        *(_DWORD *)(TrackingLockSlotForThread + 28) = 0;
      }
    }
  }
}

Referenced by:

No references.