// Branch relaxation on riscv64: overlong conditional branches become an // inverted branch over an inserted JMP, the layout the toolchain produces. #include "textflag.h" // func FarForward(x int64) int64 TEXT ·FarForward(SB), NOSPLIT, $0-16 MOV x+0(FP), X5 BEQ X5, X6, done ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 done: MOV X5, ret+8(FP) RET // func FarBackward(x int64) int64 TEXT ·FarBackward(SB), NOSPLIT, $0-16 MOV x+0(FP), X5 MOV $0, X7 loop: BEQZ X7, out BGTZ X5, skip ADD $2, X7 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 ADD $1, X5 skip: SUB $1, X5 BNEZ X7, loop out: MOV X7, ret+8(FP) RET