# extern __builtin_varargs_start: int -> void # extern __builtin_va_start: int -> int -> void # extern __builtin_va_end: int -> void # extern __builtin_va_copy: int -> int -> void # extern __builtin_va_arg: int -> int -> void # extern __builtin_types_compatible_p: int -> int -> int # extern __builtin_tanl: float -> float # extern __builtin_tanhl: float -> float # extern __builtin_tanhf: float -> float # extern __builtin_tanh: float -> float # extern __builtin_tanf: float -> float # extern __builtin_tan: float -> float # extern __builtin_strspn: int -> int -> int # extern __builtin_strpbrk: int -> int -> int # extern __builtin_strncpy: int -> int -> int -> int # extern __builtin_strncmp: int -> int -> int -> int # extern __builtin_strncat: int -> int -> int -> int # extern __builtin_strcspn: int -> int -> int # extern __builtin_strcpy: int -> int -> int # extern __builtin_strcmp: int -> int -> int # extern __builtin_strchr: int -> int -> int # extern __builtin_stpcpy: int -> int -> int # extern __builtin_stdarg_start: int -> void # extern __builtin_sqrtl: float -> float # extern __builtin_sqrtf: float -> float # extern __builtin_sqrt: float -> float # extern __builtin_sinl: float -> float # extern __builtin_sinhl: float -> float # extern __builtin_sinhf: float -> float # extern __builtin_sinh: float -> float # extern __builtin_sinf: float -> float # extern __builtin_sin: float -> float # extern __builtin_return_address: int -> int # extern __builtin_return: int -> void # extern __builtin_powil: float -> int -> float # extern __builtin_powif: float -> int -> float # extern __builtin_powi: float -> int -> float # extern __builtin_popcountll: int -> int # extern __builtin_popcountl: int -> int # extern __builtin_popcount: int -> int # extern __builtin_parityll: int -> int # extern __builtin_parityl: int -> int # extern __builtin_parity: int -> int # extern __builtin_object_size: int -> int -> int # extern __builtin_next_arg: int # extern __builtin_nansl: int -> float # extern __builtin_nansf: int -> float # extern __builtin_nans: int -> float # extern __builtin_nanl: int -> float # extern __builtin_nanf: int -> float # extern __builtin_nan: int -> float # extern __builtin_modfl: float -> int -> float # extern __builtin_modff: float -> int -> float # extern __builtin_mempcpy: int -> int -> int -> int # extern __builtin_memcpy: int -> int -> int -> int # extern __builtin_logl: float -> float # extern __builtin_logf: float -> float # extern __builtin_log10l: float -> float # extern __builtin_log10f: float -> float # extern __builtin_log10: float -> float # extern __builtin_log: float -> float # extern __builtin_ldexpl: float -> int -> float # extern __builtin_ldexpf: float -> int -> float # extern __builtin_ldexp: float -> int -> float # extern __builtin_infl: float # extern __builtin_inff: float # extern __builtin_inf: float # extern __builtin_huge_vall: float # extern __builtin_huge_valf: float # extern __builtin_huge_val: float # extern __builtin_frexpl: float -> int -> float # extern __builtin_frexpf: float -> int -> float # extern __builtin_frexp: float -> int -> float # extern __builtin_frame_address: int -> int # extern __builtin_fmodl: float -> float # extern __builtin_fmodf: float -> float # extern __builtin_fmod: float -> float # extern __builtin_floorl: float -> float # extern __builtin_floorf: float -> float # extern __builtin_floor: float -> float # extern __builtin_ffsll: int -> int # extern __builtin_ffsl: int -> int # extern __builtin_ffs: int -> int # extern __builtin_fabsl: float -> float # extern __builtin_fabsf: float -> float # extern __builtin_fabs: float -> float # extern __builtin_expl: float -> float # extern __builtin_expf: float -> float # extern __builtin_expect: int -> int -> int # extern __builtin_exp: float -> float # extern __builtin_ctzll: int -> int # extern __builtin_ctzl: int -> int # extern __builtin_ctz: int -> int # extern __builtin_cosl: float -> float # extern __builtin_coshl: float -> float # extern __builtin_coshf: float -> float # extern __builtin_cosh: float -> float # extern __builtin_cosf: float -> float # extern __builtin_cos: float -> float # extern __builtin_constant_p: int -> int # extern __builtin_clzll: int -> int # extern __builtin_clzl: int -> int # extern __builtin_clz: int -> int # extern __builtin_ceill: float -> float # extern __builtin_ceilf: float -> float # extern __builtin_ceil: float -> float # extern __builtin_atanl: float -> float # extern __builtin_atanf: float -> float # extern __builtin_atan2l: float -> float -> float # extern __builtin_atan2f: float -> float -> float # extern __builtin_atan2: float -> float -> float # extern __builtin_atan: float -> float # extern __builtin_asinl: float -> float # extern __builtin_asinf: float -> float # extern __builtin_asin: float -> float # extern __builtin_alloca: int -> int # extern __builtin_acosl: float -> float # extern __builtin_acosf: float -> float # extern __builtin_acos: float -> float # extern __builtin___vsprintf_chk: int -> int -> int -> int -> int -> int # extern __builtin___vsnprintf_chk: int -> int -> int -> int -> int -> int -> int # extern __builtin___vprintf_chk: int -> int -> int -> int # extern __builtin___vfprintf_chk: int -> int -> int -> int -> int # extern __builtin___strncpy_chk: int -> int -> int -> int -> int # extern __builtin___strncat_chk: int -> int -> int -> int -> int # extern __builtin___strcpy_chk: int -> int -> int -> int # extern __builtin___strcat_chk: int -> int -> int -> int # extern __builtin___stpcpy_chk: int -> int -> int -> int # extern __builtin___memset_chk: int -> int -> int -> int -> int # extern __builtin___mempcpy_chk: int -> int -> int -> int -> int # extern __builtin___memmove_chk: int -> int -> int -> int -> int # extern __builtin___memcpy_chk: int -> int -> int -> int -> int # begin preamble .data globals: .space 0 nl: .asciiz "\n" .align 2 .text main: la $gp, globals j main85 print_int: li $v0, 1 syscall jr $ra print_intln: li $v0, 1 syscall la $a0, nl li $v0, 4 syscall jr $ra scan_int: li $v0, 5 syscall jr $ra alloc: li $v0, 9 syscall jr $ra pow2: li $v0, 1 sllv $v0, $v0, $a0 jr $ra mod: beqz $a0, mod0 beqz $a1, mod0 li $t2, 0 mod_t0: bgtz $a0, mod_a0_pos neg $t0, $a0 addi $t2, $t2, 1 j mod_t1 mod_a0_pos: move $t0, $a0 mod_t1: bgtz $a1, mod_a1_pos neg $t1, $a1 addi $t2, $t2, 2 j mod_main mod_a1_pos: move $t1, $a1 mod_main: rem $v0, $t0, $t1 beqz $t2, mod_exit addi $t2, -1 beqz $t2, mod_case1 addi $t2, -1 beqz $t2, mod_case2 neg $v0, $v0 j mod_exit mod_case1: sub $v0, $a1, $v0 j mod_exit mod_case2: add $v0, $a1, $v0 j mod_exit mod0: li $v0, 0 mod_exit: jr $ra toint: # $a0: size # $a1: int to convert addi $sp, $sp, -4 sw $ra, 0($sp) jal pow2 move $a0, $a1 move $a1, $v0 jal mod lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra toint8: addi $sp, $sp, -4 sw $ra, 0($sp) move $a1, $a0 li $a0, 8 jal toint lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra toint16: addi $sp, $sp, -4 sw $ra, 0($sp) move $a1, $a0 li $a0, 16 jal toint lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra sign_ext: # $a0: size # $a1: int to extend li $v0, 32 sub $a0, $v0, $a0 sllv $v0, $a1, $a0 srav $v0, $v0, $a0 jr $ra ofint: # $a0: signedness # $a1: size # $a2: int to convert addi $sp, $sp, -4 sw $ra, 0($sp) beqz $a0, ofint_unsigned move $a0, $a1 move $a1, $a2 jal sign_ext j ofint_exit ofint_unsigned: move $v0, $a2 ofint_exit: lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra ofint8: addi $sp, $sp, -4 sw $ra, 0($sp) move $a2, $a0 li $a1, 8 li $a0, 1 jal ofint lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra ofuint8: addi $sp, $sp, -4 sw $ra, 0($sp) move $a2, $a0 li $a1, 8 li $a0, 0 jal ofint lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra ofint16: addi $sp, $sp, -4 sw $ra, 0($sp) move $a2, $a0 li $a1, 16 li $a0, 1 jal ofint lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra ofuint16: addi $sp, $sp, -4 sw $ra, 0($sp) move $a2, $a0 li $a1, 16 li $a0, 0 jal ofint lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra # end preamble # begin for_loopParalAsync for_loopParalAsync94: c29: li $v0, 0 c28: li $a2, 0 c27: li $a0, 3 add $a2, $a2, $a0 c26: li $a0, 2 mulo $a2, $a2, $a0 c25: li $a0, 3 div $a2, $a2, $a0 c24: li $a0, 8 add $a2, $a2, $a0 c23: c22: li $a1, 0 for_loopParalAsync37: li $a3, 0 c21: li $a0, 20 slt $a0, $a1, $a0 seq $a0, $a0, $zero beq $a0, $a3, for_loopParalAsync31 c16: c15: li $a1, 1 for_loopParalAsync16: li $a3, 0 c14: slt $a0, $a1, $a2 seq $a0, $a0, $zero beq $a0, $a3, for_loopParalAsync11 c10: jr $ra for_loopParalAsync11: c12: c11: c13: li $a0, 1 add $a1, $a1, $a0 j for_loopParalAsync16 for_loopParalAsync31: c19: li $a0, 1 add $v0, $v0, $a0 c18: c17: c20: li $a0, 1 add $a1, $a1, $a0 j for_loopParalAsync37 # end for_loopParalAsync # begin for_incrParam for_incrParam49: c86: add $a3, $a0, $a1 c85: c84: c83: li $v0, 4 sub $v0, $a3, $v0 for_incrParam15: li $t0, 0 c82: li $a2, 6 add $a2, $a1, $a2 slt $a2, $v0, $a2 seq $a2, $a2, $zero beq $a2, $t0, for_incrParam8 c79: jr $ra for_incrParam8: c80: add $v0, $v0, $a3 add $v0, $v0, $a0 c81: add $v0, $v0, $a0 j for_incrParam15 # end for_incrParam # begin for_incr for_incr44: c78: li $v0, 0 c77: c76: li $a2, 3 add $a2, $a0, $a2 for_incr15: li $a3, 0 c75: li $a0, 2 mulo $a0, $a1, $a0 sle $a0, $a2, $a0 seq $a0, $a0, $zero beq $a0, $a3, for_incr8 c72: jr $ra for_incr8: c73: sub $v0, $v0, $a2 c74: li $a0, 1 add $a2, $a2, $a0 j for_incr15 # end for_incr # begin for_imbriq for_imbriq64: addi $sp, $sp, -24 sw $ra, 20($sp) sw $s4, 16($sp) sw $s3, 12($sp) sw $s2, 8($sp) sw $s1, 4($sp) sw $s0, 0($sp) move $s4, $a0 move $s3, $a1 c71: li $s0, 0 c70: c69: li $s1, 0 for_imbriq29: li $a0, 0 c68: li $v0, 23 slt $v0, $s1, $v0 seq $v0, $v0, $zero beq $v0, $a0, for_imbriq23 c59: move $v0, $s0 lw $ra, 20($sp) lw $s4, 16($sp) lw $s3, 12($sp) lw $s2, 8($sp) lw $s1, 4($sp) lw $s0, 0($sp) addi $sp, $sp, 24 jr $ra for_imbriq23: c66: li $v0, 0 c65: c64: li $s2, 1 for_imbriq18: li $a1, 0 c63: li $a0, 12 slt $a0, $s2, $a0 seq $a0, $a0, $zero beq $a0, $a1, for_imbriq12 c67: add $s1, $s1, $s4 j for_imbriq29 for_imbriq12: c61: add $s0, $s0, $v0 c60: la $a2, mod move $a0, $v0 move $a1, $s2 jalr $a2 c62: add $s2, $s2, $s3 j for_imbriq18 # end for_imbriq # begin for_fortSimple for_fortSimple41: c58: li $t0, 0 c57: c56: move $a3, $a0 for_fortSimple14: li $t1, 0 c55: slt $v0, $a3, $a1 seq $v0, $v0, $zero beq $v0, $t1, for_fortSimple9 c52: add $v0, $t0, $a0 c51: jr $ra for_fortSimple9: c53: add $t0, $t0, $a3 c54: add $a3, $a3, $a2 j for_fortSimple14 # end for_fortSimple # begin for_forfor for_forfor44: c94: c93: li $a1, 0 c92: li $v0, 0 for_forfor18: li $a2, 0 c91: li $a0, 10 slt $a0, $a1, $a0 seq $a0, $a0, $zero beq $a0, $a2, for_forfor12 c87: jr $ra for_forfor12: c89: li $a0, 1 add $v0, $v0, $a0 c88: li $a0, 1 add $v0, $v0, $a0 c90: li $a0, 1 add $a1, $a1, $a0 j for_forfor18 # end for_forfor # begin for_ex for_ex43: c50: li $v0, 0 c49: c48: li $a3, 3 add $a3, $a0, $a3 for_ex14: li $t0, 0 c47: li $a0, 2 mulo $a0, $a1, $a0 sle $a0, $a3, $a0 seq $a0, $a0, $zero beq $a0, $t0, for_ex7 c44: jr $ra for_ex7: c45: sub $v0, $v0, $a3 c46: add $a3, $a3, $a2 j for_ex14 # end for_ex # begin for_double for_double64: c43: li $a1, 0 c42: li $a2, 0 c41: c40: li $a3, 0 for_double29: li $t0, 0 c39: li $v0, 12 slt $v0, $a3, $v0 seq $v0, $v0, $zero beq $v0, $t0, for_double23 c36: c35: li $a3, 0 for_double15: li $t0, 0 c34: li $v0, 5 slt $v0, $a3, $v0 seq $v0, $v0, $zero beq $v0, $t0, for_double9 c31: mulo $v0, $a1, $a2 c30: jr $ra for_double9: c32: add $a2, $a2, $a3 c33: add $a3, $a3, $a0 j for_double15 for_double23: c37: add $a1, $a1, $a3 c38: add $a3, $a3, $a0 j for_double29 # end for_double # begin for_2 for_253: c9: li $a2, 0 c8: li $v0, 2 mulo $v0, $a0, $v0 c7: li $a3, 4 mulo $a0, $a0, $a3 c6: li $a3, 1 add $a1, $a1, $a3 c5: c4: for_213: li $t0, 0 c3: slt $a3, $v0, $a0 seq $a3, $a3, $zero beq $a3, $t0, for_28 c0: li $v0, 1 add $v0, $a2, $v0 jr $ra for_28: c1: add $a2, $a2, $v0 c2: add $v0, $v0, $a1 j for_213 # end for_2 # begin _main main85: addi $sp, $sp, -4 sw $ra, 0($sp) c104: li $a0, 3 li $a1, 1 la $v0, for_253 jalr $v0 c103: li $a0, 1 li $a1, 2 li $a2, 3 la $v0, for_loopParalAsync94 jalr $v0 c102: li $a0, 1 la $v0, for_double64 jalr $v0 c101: li $a0, 2 li $a1, 10 li $a2, 1 la $v0, for_ex43 jalr $v0 c100: li $a0, 2 li $a1, 10 li $a2, 1 la $v0, for_fortSimple41 jalr $v0 c99: li $a0, 2 li $a1, 3 la $v0, for_imbriq64 jalr $v0 c98: li $a0, 2 li $a1, 3 la $v0, for_incr44 jalr $v0 c97: li $a0, 2 li $a1, 3 la $v0, for_incrParam49 jalr $v0 c96: la $v0, for_forfor44 jalr $v0 c95: lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra # end _main