VfTargetEtwRegister

VOID __stdcall VfTargetEtwRegister(UINT64 RegHandle, VOID *CallerAddress){
  int v4; 
  VOID **PoolWithTag; 
  _VF_AVL_TREE_NODE *v6; 
  unsigned __int64 RangeSize; 
  VOID **v8; 
  VOID ***v9; 
  _VF_AVL_LOCK_CONTEXT Context[6]; 

  *(_OWORD *)Context = 0i64;
  if( !VfSafeMode )
  {
    v4 = 0;
    PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x20ui64, 1413834326i64);
    VfAvlInitializeLockContext(Context, Exclusive);
    v6 = VfAvlLookupTreeNode(&ViTargetDriversAvl, Context, CallerAddress, 1ui64);
    if( v6 )
    {
      RangeSize = v6[3].RangeSize;
      if( RangeSize )
      {
        if( PoolWithTag )
        {
          v8 = (VOID **)(RangeSize + 16);
          PoolWithTag[2] = (VOID *)RegHandle;
          PoolWithTag[3] = CallerAddress;
          v9 = (VOID ***)v8[1];
          if( *v9 != v8 )
            __fastfail(3u);
          *PoolWithTag = v8;
          v4 = 1;
          PoolWithTag[1] = v9;
          *v9 = PoolWithTag;
          v8[1] = PoolWithTag;
        }
        else
        {
          *(_DWORD *)(RangeSize + 32) |= 1u;
        }
      }
    }
    VfAvlCleanupLockContext(Context);
    if( !v4 )
    {
      if( PoolWithTag )
        ExFreePoolWithTag(PoolWithTag, 0x54456656u);
    }
  }
}

Referenced by:

VerifierEtwRegister
VerifierEtwRegisterClassicProvider