code: def dup_decompose(f, K):
      """
      Computes functional decomposition of ``f`` in ``K[x]``.
  
      Given a univariate polynomial ``f`` with coefficients in a field of
      characteristic zero, returns list ``[f_1, f_2, ..., f_n]``, where::
  
                f = f_1 o f_2 o ... f_n = f_1(f_2(... f_n))
  
      and ``f_2, ..., f_n`` are monic and homogeneous polynomials of at
      least second degree.
  
      Unlike factorization, complete functional decompositions of
      polynomials are not unique, consider examples:
  
      1. ``f o g = f(x + b) o (g - b)``
      2. ``x**n o x**m = x**m o x**n``
      3. ``T_n o T_m = T_m o T_n``
  
      where ``T_n`` and ``T_m`` are Chebyshev polynomials.
  
      Examples
      ========
  
      >>> from sympy.polys import ring, ZZ
      >>> R, x = ring("x", ZZ)
  
      >>> R.dup_decompose(x**4 - 2*x**3 + x**2)
      [x**2, x**2 - x]
  
      References
      ==========
  
      .. [1] [Kozen89]_
  
      """
      F = []
  
      while True:
          result = _dup_decompose(f, K)
  
          if result is not None:
              f, h = result
              F = [h] + F
          else:
              break
  
      return [f] + F
  
imports: from sympy.polys.densearith import dup_add_term, dmp_add_term, dup_lshift, dup_add, dmp_add, dup_sub, dmp_sub, dup_mul, dmp_mul, dup_sqr, dup_div, dup_rem, dmp_rem, dmp_expand, dup_mul_ground, dmp_mul_ground, dup_quo_ground, dmp_quo_ground, dup_exquo_ground, dmp_exquo_ground
  from sympy.polys.densebasic import dup_strip, dmp_strip, dup_convert, dmp_convert, dup_degree, dmp_degree, dmp_to_dict, dmp_from_dict, dup_LC, dmp_LC, dmp_ground_LC, dup_TC, dmp_TC, dmp_zero, dmp_ground, dmp_zero_p, dup_to_raw_dict, dup_from_raw_dict, dmp_zeros
  from sympy.polys.polyerrors import MultivariatePolynomialError, DomainError
  from sympy.utilities import variations
  from math import ceil, log
label_desc: Use image node_id 38 for calling a global function with example usage: dup_decompose(f, K) and returns: unknown