lemmas in order they were noticed, all easy:
$f$ is injective
$f$ is surjective
$f(f(y))=y$ (let $f(x)=0$)
$f(-x)=-f(x)$ for nonzero $f(x)$ ($f$ is odd)
$f(0)=0$ by bijectivity and oddness
$f(f(x)^2)=xf(x)$ taking $y=0$
$f(u^2)=uf(u)$ by taking $x=f(u)$
$f(f(x)^2 + xf(x)) = xf(x) + x^2$ , (let $y=x^2$)
$f(x)^2=x^2$ (apply $f$ to both sides of preceding +injectivity)
$f(x) = \pm x$
We see now that $f(x)=-x$ is also a solution. Let $f(x) = s(x)x$ with $|s|=1$. Note $s(-x)=s(x)$
Taking $x$ with $x^2 > |y|$, $s(x)s(y)=1$ ($x$ sets the sign of each side, then compare the $y$ terms) so that $s(x)=s(y)$. Also $s(x^2)=s(x)$ for nonzero $x$ from $f(x^2)=xf(x)$.
Iterating this, the sign is constant on $|x|>1$ and on $|x|<1$. You can check by calculation whether there is a solution with the sign chosen differently on these intervals.