  Given $d,n \in \mathbb{N}$, we write a polynomial $F \in
\mathbb{C}[x_1,\dots,x_n]$ to be degenerate if there exist $P\in
\mathbb{C}[y_1, \dots, y_{n-1}]$ and $m_j = x_1^{v_{j,1}}\dots x_n^{v_{j,n}}$
with $v_{j,1}, \dots, v_{j,n} \in \mathbb{Q}$, for every $1 \leq j \leq n-1$,
such that $F = P(m_1, \dots, m_{n-1})$. Our main result shows that whenever $F$
is non-degenerate, then for every finite set $A\subseteq \mathbb{C}$ such that
$|A\cdot A| \leq K|A|$, one has \[ |F(A, \dots, A)| \gg_{d,n} |A|^n
2^{-O_{d,n}((\log 2K)^{3 + o(1)})}. \] This is sharp up to a factor of
$O_{d,n,K}(1)$ since we have the upper bound $|F(A,\dots,A)| \leq |A|^n$ and
the fact that for every degenerate $F$ and finite set $A \subseteq \mathbb{C}$
with $|A\cdot A| \leq K|A|$, one has \[ |F(A,\dots,A)| \ll
K^{O_F(1)}|A|^{n-1}.\] Our techniques rely on a variety of combinatorial and
linear algebraic arguments combined with Freiman type inverse theorems and
Schmidt's subspace theorem.
