ViTargetAddToCounter

VOID __stdcall ViTargetAddToCounter(VOID *CallerAddress, UINT64 FieldOffset, UINT64 PeakFieldOffset, UINT64 Value){
  __int64 v4; 
  __int64 v6; 
  VOID *v7; 
  UINT64 v8; 
  _VF_AVL_TREE_NODE *v9; 
  unsigned __int64 RangeSize; 
  unsigned __int64 v11; 
  volatile signed __int64 *v12; 
  volatile signed __int64 v13; 
  _VF_AVL_LOCK_CONTEXT Context[4]; 

  v4 = (unsigned int)PeakFieldOffset;
  *(_OWORD *)Context = 0i64;
  v6 = (unsigned int)FieldOffset;
  if( (unsigned int)ViTargetUpdateTreeAllowed() )
  {
    VfAvlInitializeLockContext(Context, Shared);
    v9 = VfAvlLookupTreeNode(&ViTargetDriversAvl, Context, v7, v8);
    if( v9 )
    {
      RangeSize = v9[3].RangeSize;
      if( RangeSize )
      {
        v11 = Value + _InterlockedExchangeAdd64((volatile signed __int64 *)(v6 + RangeSize), Value);
        v12 = (volatile signed __int64 *)(RangeSize + v4);
        do
        {
          if( *v12 > v11 )
            break;
          v13 = *v12;
        }
        while( v13 != _InterlockedCompareExchange64(v12, v11, *v12) );
      }
    }
    VfAvlCleanupLockContext(Context);
  }
}

Referenced by:

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