The output of stage one and stage two are exactly similar C files ... except for truncated longs in stage two. That's a messy bug.
It's a corner case somewhere I didn't feel like debugging today. Took some R&R. (Looked at it briefly before going to bed, turned out to be trivial, fixed it. Recompiling...)