Typepunning failed, didn't know about the difference between C/C++ with strict aliasing in this specific case...
Made some fixes based on errors found while iterating on first generation