using O3 instead of Os, binary size still < 40kb