Okay I think I have something.
Any cell generates an (e,n,d,x,a,b). From this if we have the entry (e+d*d, n+d) we have our position on the D grid. The D grid can be generated in two different ways.
Start at (0,0) and move to the left by square amounts (ie (0,0) -(-1,0) -> (-4,0) etc) and from here generating parabolas up and down (or just down for positive a and b) to get
(0,0): (1,1), (4,2), (9,3), (1,-1),(4,-2) etc
(-1,0): (0,1), (3,2), (8,3), etc
This way you have a bunch of parabolas that are basically parallel.
Or you can generate it another way by starting at (0,0) and making the parabola that goes (w^2, w). Then for any cell (w^2, w) you can generate lines that go (w^2+2wt, w+t) so you get a bunch of rays going out from a parabola. Lets focus on this way to generate it and talk about the rays. We can identify these Rays from the bottom up by 1,2,3, etc. This is because one is generated after w=1, then w=2 etc.
If you generate values for (a,b) = (1,c) and place them on this grid, they are always on the bottom-most line. Then if you want any other factors of C they are on the same vertical line on the D grid. (ie they have the same E value). If you notice where these are placed on the D grid, these entries are always either ON the D grid, or they are halfway between two points on the D grid and have the same N value as the first value on the ray (or the one with the smaller N). Also from our D value, we know that any solution cell is on a ray (or exactly between 2 points on a ray) and the ray must be of a value less than D. So basically we need to get our value and check if there is a solution to one of our lines (or halfway between one) with the same E. Then that N value is the correct N value