# int print_string(char *s)

.globl print_string
.type print_string, @function

print_string:
  pushq %rbp
  movq %rsp, %rbp
  movq $0, %rbx                     # counter
  movq %rdi, %r12                   # char *s
loop:
  cmpb $0, (%r12, %rbx, 1)
  je exit_loop
  xorq %rdi, %rdi
  movb (%r12, %rbx, 1), %dil
  call putchar
  incq %rbx
  jmp loop
exit_loop:
  movq %rbx, %rax
  popq %rbp
  ret

.size print_string, .-print_string
