  .pos 0
  irmovq stack, %rsp
  call main
  halt

  .align 8
# Source block
src:
  .quad 0x00a
  .quad 0x0b0
  .quad 0xc00

# Destination block
dest:
  .quad 0x111
  .quad 0x222
  .quad 0x333

main:
  irmovq src, %rdi
  irmovq dest, %rsi
  irmovq $3, %rdx
  call copy
  ret

copy:
  xorq %rax, %rax
  irmovq $1, %rcx
  irmovq $8, %r8
  jmp test
loop:
  mrmovq (%rdi), %r9
  rmmovq %r9, (%rsi)
  xorq %r9, %rax
  addq %r8, %rdi
  addq %r8, %rsi
  subq %rcx, %rdx
test:
  andq %rdx, %rdx
  jg loop
  ret

  .pos 0x200
stack:
