Is there an algorithm to find as many NE as possible in this generalized second price auction?
This is a pretty general algorithm, you can probably tailor a better one to your specific problem.

If you stick to this discreet strategy space it seems to me you would have to find the equilibria via brute force. Basically you would look at all bid profiles $(x_1,x_2,x_3)$ and check whether it is an equilibrium. To do this, you would have to check if player 1 would be better off by making another bid. Let us denote the payoff of player 1 by $\pi_1$. This is a function of the bids. Let's assume $x_2 &gt; x_3 + 1$. Then you would have to check
\begin{eqnarray*}
\pi_1(x_1,x_2,x_3) &amp; \geq &amp; \pi_1(x_2+1,x_2,x_3) \\
\\
\pi_1(x_1,x_2,x_3) &amp; \geq &amp; \pi_1(x_2-1,x_2,x_3) \\
\\
\pi_1(x_1,x_2,x_3) &amp; \geq &amp; \pi_1(x_3-1,x_2,x_3) \\
\\
\end{eqnarray*}
If all these and the corresponding inequialites for other players hold then you have found an equilibrium.

If $x_2 = x_3 + 1$ you need to take the tie breaking rule into consideration.

You could limit the number of profiles $(x_1,x_2,x_3)$ you check by reasoning about the reservation prices. (E.g. for any N.E. where someone bids higher than their reservation price you have an N.E. where they bid just that.)