I just opened an old file wherein I've worked several proofs as exercises, and discovered this one, along with the note "FIX THIS."
Unfortunately, I can't see what needs to be fixed, so either I'm missing it, or there was nothing to fix in the first place, or I already fixed it and forgot to delete the note. If any of the AC pros can spot the error(s) or verify the proof, I'd appreciate it. (NB: Herein, $0$ is the Von Neumann ordinal, the empty set.)
The following are equivalent:
(a) AC.
(b) For any relation $R$ there is a function $f\subseteq R$ such that $\operatorname{dom}(f)=\operatorname{dom}(R)$.
(c) For any function $f$ there is a function $g$ such that $g(x)\in f(x)$ for all non-$0$ $x\in\operatorname{dom}(x)$.
(d) For any function $f$ there is a function $g$ such that $\operatorname{dom}(g)=\operatorname{ran}(f)$ and such that $f(g(x))=x$ for all $x\in\operatorname{dom}(g)$.
Proof
$\bigl($(a)$\Rightarrow$(b)$\bigr)$ Let $R$ be a non-$0$ relation, so for all $x\in\operatorname{dom}(R)$, the set $R[x]=\{y:x\:R\:y\}$ is non-$0$ by definition of $\operatorname{dom}(R)$. Let $f$ be a choice function for $\{R[x]\}_{x\in\operatorname{dom}(R)}$, and let $g:\operatorname{dom}(R)\to\operatorname{ran}(R)$ be the obvious map $\operatorname{dom}(R)\to\{R[x]\}_{x\in\operatorname{dom}(R)}$ composed with $f:\{R[x]\}_{x\in\operatorname{dom}(R)}\to\bigcup_{x\in\operatorname{dom}(R)}R[x]=\operatorname{ran}(R)$. Then $f:\operatorname{dom}(R)\to\operatorname{ran}(R)$ and $f\subseteq R$.
$\bigl($(b)$\Rightarrow$(c)$\bigr)$ Let $f$ be a function with $\operatorname{dom}(f)=X$ and define a relation $R$ on $\bigl(X\smallsetminus\{0\}\bigr)\times\bigcup f[X]$ by $x\:R\:y$ iff $y\in f(x)$. If $x\in X\smallsetminus\{0\}$, then by definition there is some $y\in f(x)\subseteq\bigcup f[X]$, so $x\:R\:y$, and so $\operatorname{dom}(R)=X\smallsetminus\{0\}$. Let $g\subseteq R$ be a function such that $\operatorname{dom}(g)=\operatorname{dom}(R)=X\smallsetminus\{0\}$, so by definition of $R$, $g(x)\in f(x)$ for all $x\in X\smallsetminus\{0\}$.
$\bigl($(c)$\Rightarrow$(a)$\bigr)$ Let $\mathcal{A}$ be a non-$0$ set of non-$0$ sets, and let $f=\{\langle\alpha,\alpha\rangle:\alpha\in\mathcal{A}\}$. A function $g$ as guaranteed by (c) is (once restricted to $\mathcal{A}$, if necessary) precisely a choice function for $\mathcal{A}$.
$\bigl($(b)$\Rightarrow$(d)$\bigr)$ Let $R=f^{-1}$--a relation, but not necessarily a function--so that $\operatorname{dom}(R)=\operatorname{ran}(f)$ and $\operatorname{dom}(f)=\operatorname{ran}(R)$. Let $g$ be a function as guaranteed by (b), so that $\operatorname{dom}(g)=\operatorname{dom}(R)=\operatorname{ran}(f)$. Suppose $x\in\operatorname{dom}(g)$, so there is some unique $y\in\operatorname{ran}(g)$ such that $g(x)=y$. Since $\operatorname{ran}(g)\subseteq\operatorname{ran}(R)=\operatorname{dom}(f)$, then $f(y)=f(g(x))$ is well-defined. Moreover, since $\langle x,y\rangle\in g\subseteq R=f^{-1}$, then $\langle y,x\rangle\in f$, meaning $f(y)=y$ since $f$ is a function, so $f(g(x))=x$.
$\bigl($(d)$\Rightarrow$(b)$\bigr)$ Let $R$ be a relation, and define a function $f$ by $f(x,y)=x$ for all $\langle x,y\rangle\in R$. Let $g$ be a function as guaranteed by (d), so by definition, $\operatorname{dom}(g)=\operatorname{ran}(f)=\operatorname{dom}(R)$, and $f(g(x))=x$ for all $x\in\operatorname{dom}(R)$, meaning $g(x)=\langle x,y\rangle$. In particular, this means that $\operatorname{ran}(g)\subseteq R$, and since $g$ is a function, then by definition of $g$, $h=\operatorname{ran}(g)\subseteq R$ is a function, with $\operatorname{dom}(h)=\operatorname{dom}(g)=\operatorname{dom}(R)$. $\Box$
Other than the issues with (c) that I pointed out in the comments (you want $f(x)\neq\varnothing$, rather than $x\neq\varnothing$), and the superbly annoying "non-$0$" instead of "non-empty", this seems more or less correct.
Of course proving something false cannot possibly be right. I suspect that (c) should be phrased as "If $f(x)\neq\varnothing$ for all $x\in\operatorname{dom}(f)$, then there is $g$ such that $g(x)\in f(x)$ for all $x\in\operatorname{dom}(f)$". With this in mind, the proof that (c) implies (a) works, since $f$ is the identity there; and (b)$\implies$(c) is also not that bad, once you switch the non-empty condition around.
It might be worth noting that proving (d)$\implies$(b) can be replaced by any of the other equivalents, since we already proved they are equivalent to AC, and the proof that (d) implies (a) is perhaps slightly more natural.