ViTargetAddToCounter

VOID __stdcall ViTargetAddToCounter(PVOID CallerAddress, UINT64 FieldOffset, UINT64 PeakFieldOffset, UINT64 Value){
  __int64 v4; 
  __int64 v6; 
  UINT64 v7; 
  INT64 v8; 
  CHAR *v9; 
  __int64 v10; 
  unsigned __int64 v11; 
  volatile signed __int64 *v12; 
  volatile signed __int64 v13; 
  _OWORD v14[2]; 
  v4 = (unsigned int)PeakFieldOffset;
  v14[0] = 0i64;
  v6 = (unsigned int)FieldOffset;
  if( (unsigned int)ViTargetUpdateTreeAllowed() )
  {
    VfAvlInitializeLockContext((INT64)v14, 1i64);
    v9 = VfAvlLookupTreeNode(&ViTargetDriversAvl, (INT64)v14, v7, v8);
    if( v9 )
    {
      v10 = *((_QWORD *)v9 + 7);
      if( v10 )
      {
        v11 = Value + _InterlockedExchangeAdd64((volatile signed __int64 *)(v6 + v10), Value);
        v12 = (volatile signed __int64 *)(v10 + v4);
        do
        {
          if( *v12 > v11 )
            break;
          v13 = *v12;
        }
        while( v13 != _InterlockedCompareExchange64(v12, v11, *v12) );
      }
    }
    VfAvlCleanupLockContext((INT64)v14);
  }
}

Referenced by:

VerifierMmAllocateNodePagesForMdlEx
VerifierMmAllocatePagesForMdl
VerifierMmAllocatePagesForMdlEx
VerifierMmFreePagesFromMdl
VerifierMmMapIoSpace
VerifierMmMapLockedPages
VerifierMmMapLockedPagesSpecifyCache
VerifierMmProbeAndLockPages
VerifierMmProbeAndLockProcessPages
VerifierMmUnlockPages
VerifierMmUnmapIoSpace
VerifierMmUnmapLockedPages