The old code breaks if the payload is executed from a memory area where the 4 most significant bytes are non-zero.