After giving your assembly code a second look (and after reading @RbMm's comment), I'm pretty sure the problem is there (and not related to the misalignment). You´re pushing a 32-bit value and popping a 64-bit value. You may use pushfq
instead of pushf
.