.data
lista:   .space 24  # 6 integers * 4 bytes
msg:     .asciiz "Insira 6 numeros: "
dash:    .asciiz " - "

.text
.globl main

main:
    # Print message
    la $a0, msg
    li $v0, 4
    syscall

    # Read integers into array
    li $t0, 0  # i = 0
read_loop:
    bge $t0, 6, sort_loop  # if i >= 6, exit loop
    li $v0, 5
    syscall
    la $t1, lista
    mul $t2, $t0, 4
    add $t1, $t1, $t2
    sw $v0, 0($t1)
    addi $t0, $t0, 1
    j read_loop

sort_loop:
    li $t3, 1  # houveTroca = 1
    li $t4, 6  # SIZE = 6

sort_outer:
    beqz $t3, print_loop  # if houveTroca == 0, exit loop
    li $t3, 0  # houveTroca = 0
    li $t0, 0  # i = 0

sort_inner:
    sub $t5, $t4, 1  # SIZE - 1
    bge $t0, $t5, sort_outer_end  # if i >= SIZE - 1, exit inner loop

    # if lista[i] > lista[i + 1]
    la $t1, lista
    mul $t2, $t0, 4
    add $t6, $t1, $t2
    lw $t7, 0($t6)
    lw $t8, 4($t6)
    ble $t7, $t8, sort_next

    # Swap lista[i] and lista[i + 1]
    sw $t8, 0($t6)
    sw $t7, 4($t6)
    li $t3, 1  # houveTroca = 1

sort_next:
    addi $t0, $t0, 1
    j sort_inner

sort_outer_end:
    j sort_outer

print_loop:
    # Initialize loop counter i = 0
    li $t0, 0
    la $t1, lista

print_loop_start:
    bge $t0, 6, print_end  # If i >= 6, exit loop

    lw $a0, 0($t1)
    li $v0, 1
    syscall

    la $a0, dash
    li $v0, 4
    syscall

    addi $t0, $t0, 1
    addi $t1, $t1, 4

    j print_loop_start

print_end:
    # Exit program
    li $v0, 10
    syscall
