yeah I know they're both two mops, but push is dependent on the value of the stack pointer which changes with every instruction so it's harder to schedule
use `uops` not `mops`, `m` stands for milli, not micro