.text
print_int:
  move $a0, $t0
  li   $v0, 1
  syscall
  jr   $ra
print_string:
  move $a0, $t0
  li   $v0, 4
  syscall
  jr   $ra
print_bool:
  beqz $t0, _label_0
  la   $a0, __str_0
  li   $v0, 4
  syscall
  jr   $ra
_label_0:
  la   $a0, __str_1
  li   $v0, 4
  syscall
  jr   $ra
_start:
  jal  main
  li   $v0, 10
  syscall
incr:
  addi $sp, $sp, -4
  sw   $ra, 0($sp)
  addi $sp, $sp, -4
  sw   $fp, 0($sp)
  move $fp, $sp
  lw   $t0, 8($fp)
  addi $t0, $t0, 1
  sw   $t0, 8($fp)
  lw   $t0, 8($fp)
  move $sp, $fp
  lw   $fp, 0($sp)
  addi $sp, $sp, 4
  lw   $ra, 0($sp)
  addi $sp, $sp, 4
  jr   $ra
  move $sp, $fp
  lw   $fp, 0($sp)
  addi $sp, $sp, 4
  lw   $ra, 0($sp)
  addi $sp, $sp, 4
  jr   $ra
main:
  addi $sp, $sp, -4
  sw   $ra, 0($sp)
  addi $sp, $sp, -4
  sw   $fp, 0($sp)
  move $fp, $sp
  addi $sp, $sp, -4
  li   $t0, 1
  addi $sp, $sp, -4
  sw   $t0, 0($sp)
  jal  incr
  addi $sp, $sp, 4
  addi $sp, $sp, -4
  sw   $t0, 0($sp)
  lw   $t0, 0($sp)
  addi $sp, $sp, 4
  sw   $t0, -4($fp)
_label_1:
  li   $t0, 5
  addi $sp, $sp, -4
  sw   $t0, 0($sp)
  lw   $t0, -4($fp)
  lw   $t1, 0($sp)
  addi $sp, $sp, 4
  slt  $t0, $t0, $t1
  beqz $t0, _label_2
  li   $t0, 1
  addi $sp, $sp, -4
  sw   $t0, 0($sp)
  lw   $t0, -4($fp)
  lw   $t1, 0($sp)
  addi $sp, $sp, 4
  add  $t0, $t0, $t1
  addi $sp, $sp, -4
  sw   $t0, 0($sp)
  lw   $t0, 0($sp)
  addi $sp, $sp, 4
  sw   $t0, -4($fp)
  b    _label_1
_label_2:
  lw   $t0, -4($fp)
  jal  print_int
  move $sp, $fp
  lw   $fp, 0($sp)
  addi $sp, $sp, 4
  lw   $ra, 0($sp)
  addi $sp, $sp, 4
  jr   $ra
.data
__str_0:
  .asciiz "true"
__str_1:
  .asciiz "false"
