VfTargetEtwUnregister

VOID __stdcall VfTargetEtwUnregister(UINT64 RegHandle, VOID *CallerAddress){
  int v3; 
  void *v4; 
  VOID *v5; 
  _VF_AVL_TREE_NODE *v6; 
  unsigned __int64 RangeSize; 
  _QWORD *v8; 
  _QWORD *v9; 
  _QWORD *v10; 
  UINT64 v11; 
  _VF_AVL_LOCK_CONTEXT LockContext[6]; 

  *(_OWORD *)LockContext = 0i64;
  if( !VfSafeMode )
  {
    v3 = 0;
    v4 = 0i64;
    VfAvlInitializeLockContext(LockContext, Exclusive);
    v6 = VfAvlLookupTreeNode(&ViTargetDriversAvl, LockContext, v5, 1ui64);
    if( v6 )
    {
      RangeSize = v6[3].RangeSize;
      if( RangeSize )
      {
        v8 = *(_QWORD **)(RangeSize + 16);
        if( v8 == (_QWORD *)(RangeSize + 16) )
        {
LABEL_7:
          if( !dword_140C2A698 && (*(_DWORD *)(RangeSize + 32) & 1) == 0 && (MmVerifierData & 0x800) != 0 )
            VerifierBugCheckIfAppropriate(0xC4ui64, 0xDCu, 0, 0, 0, v11);
        }
        else
        {
          while( 1 )
          {
            v4 = v8;
            v9 = (_QWORD *)*v8;
            if( v8[2] == RegHandle )
              break;
            v8 = (_QWORD *)*v8;
            if( v9 == (_QWORD *)(RangeSize + 16) )
              goto LABEL_7;
          }
          v3 = 1;
          if( (_QWORD *)v9[1] != v8 || (v10 = (_QWORD *)v8[1], (_QWORD *)*v10 != v8) )
            __fastfail(3u);
          *v10 = v9;
          v9[1] = v10;
        }
      }
    }
    VfAvlCleanupLockContext(LockContext);
    if( v3 )
      ExFreePoolWithTag(v4, 0);
  }
}

Referenced by:

VerifierEtwUnregister