bl pushes lr implicitly