Updated to not allow initial 'push' to be moved to bottom of basic block. Also keeps original push split into sepate stores.