# 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 288 nl: .asciiz "\n" .align 2 .text main: la $gp, globals j main385 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 fir4 fir4280: addi $sp, $sp, -116 sw $ra, 112($sp) sw $s7, 108($sp) sw $s6, 104($sp) sw $s5, 100($sp) sw $s4, 96($sp) sw $s3, 92($sp) sw $s2, 88($sp) sw $s1, 84($sp) sw $s0, 80($sp) sw $a0, 64($sp) move $s6, $a1 sw $a2, 68($sp) sw $a3, 72($sp) c25: li $s1, 0 c24: c23: c22: li $s3, 0 fir4128: li $a0, 0 c21: li $v0, 16 slt $v0, $s3, $v0 seq $v0, $v0, $zero beq $v0, $a0, fir4122 c18: c17: li $s4, 0 fir4109: li $a0, 0 c16: lw $fp, 72($sp) slt $v0, $s4, $fp seq $v0, $v0, $zero beq $v0, $a0, fir4104 c0: li $v0, 0 lw $ra, 112($sp) lw $s7, 108($sp) lw $s6, 104($sp) lw $s5, 100($sp) lw $s4, 96($sp) lw $s3, 92($sp) lw $s2, 88($sp) lw $s1, 84($sp) lw $s0, 80($sp) addi $sp, $sp, 116 jr $ra fir4104: c14: li $v0, 4 mulo $v0, $s4, $v0 lw $v1, 64($sp) add $v0, $v1, $v0 lw $a1, 0($v0) move $a0, $sp li $v0, 4 mulo $v0, $s1, $v0 add $v0, $a0, $v0 sw $a1, 0($v0) c13: li $s5, 0 c12: c11: li $s3, 0 fir491: li $a0, 0 c10: li $v0, 16 slt $v0, $s3, $v0 seq $v0, $v0, $zero beq $v0, $a0, fir485 c2: li $v0, 1 add $a0, $s1, $v0 li $a1, 16 la $v0, mod jalr $v0 move $s1, $v0 c1: li $v0, 16 srav $a0, $s5, $v0 li $v0, 4 mulo $v0, $s4, $v0 lw $v1, 68($sp) add $v0, $v1, $v0 sw $a0, 0($v0) c15: li $v0, 1 add $s4, $s4, $v0 j fir4109 fir485: c8: move $a0, $sp li $v0, 4 mulo $v0, $s1, $v0 add $v0, $a0, $v0 lw $a0, 0($v0) li $v0, 4 mulo $v0, $s3, $v0 add $v0, $s6, $v0 lw $v0, 0($v0) mulo $s2, $a0, $v0 c7: move $s0, $sp li $v0, 1 add $a0, $s1, $v0 li $a1, 16 la $v0, mod jalr $v0 li $a0, 4 mulo $v0, $v0, $a0 add $v0, $s0, $v0 lw $a1, 0($v0) li $v0, 1 add $a0, $s3, $v0 li $v0, 4 mulo $v0, $a0, $v0 add $v0, $s6, $v0 lw $v0, 0($v0) mulo $v1, $a1, $v0 sw $v1, 76($sp) c6: move $s0, $sp li $v0, 2 add $a0, $s1, $v0 li $a1, 16 la $v0, mod jalr $v0 li $a0, 4 mulo $v0, $v0, $a0 add $v0, $s0, $v0 lw $a1, 0($v0) li $v0, 2 add $a0, $s3, $v0 li $v0, 4 mulo $v0, $a0, $v0 add $v0, $s6, $v0 lw $v0, 0($v0) mulo $s7, $a1, $v0 c5: move $s0, $sp li $v0, 3 add $a0, $s1, $v0 li $a1, 16 la $v0, mod jalr $v0 li $a0, 4 mulo $v0, $v0, $a0 add $v0, $s0, $v0 lw $a1, 0($v0) li $v0, 3 add $a0, $s3, $v0 li $v0, 4 mulo $v0, $a0, $v0 add $v0, $s6, $v0 lw $v0, 0($v0) mulo $v0, $a1, $v0 c4: add $a0, $s5, $s2 lw $fp, 76($sp) add $a0, $a0, $fp add $a0, $a0, $s7 add $s5, $a0, $v0 c3: li $v0, 4 add $a0, $s1, $v0 li $a1, 16 la $v0, mod jalr $v0 move $s1, $v0 c9: li $v0, 4 add $s3, $s3, $v0 j fir491 fir4122: c19: move $a0, $sp li $v0, 4 mulo $v0, $s3, $v0 add $v0, $a0, $v0 sw $zero, 0($v0) c20: li $v0, 1 add $s3, $s3, $v0 j fir4128 # end fir4 # begin _main main385: addi $sp, $sp, -68 sw $ra, 64($sp) li $a0, 1129 move $v0, $gp sw $a0, 0($v0) li $a0, 60034 move $v0, $gp sw $a0, 4($v0) li $a0, 64720 move $v0, $gp sw $a0, 8($v0) li $a0, 5595 move $v0, $gp sw $a0, 12($v0) li $a0, 494 move $v0, $gp sw $a0, 16($v0) li $a0, 59867 move $v0, $gp sw $a0, 20($v0) li $a0, 65370 move $v0, $gp sw $a0, 24($v0) li $a0, 5724 move $v0, $gp sw $a0, 28($v0) li $a0, 5724 move $v0, $gp sw $a0, 32($v0) li $a0, 65370 move $v0, $gp sw $a0, 36($v0) li $a0, 59867 move $v0, $gp sw $a0, 40($v0) li $a0, 494 move $v0, $gp sw $a0, 44($v0) li $a0, 5595 move $v0, $gp sw $a0, 48($v0) li $a0, 64720 move $v0, $gp sw $a0, 52($v0) li $a0, 60034 move $v0, $gp sw $a0, 56($v0) li $a0, 1129 move $v0, $gp sw $a0, 60($v0) li $a0, 1 move $v0, $gp sw $a0, 64($v0) move $v0, $gp sw $zero, 68($v0) li $a0, 16384 move $v0, $gp sw $a0, 72($v0) move $v0, $gp sw $zero, 76($v0) move $v0, $gp sw $zero, 80($v0) move $v0, $gp sw $zero, 84($v0) move $v0, $gp sw $zero, 88($v0) move $v0, $gp sw $zero, 92($v0) move $v0, $gp sw $zero, 96($v0) move $v0, $gp sw $zero, 100($v0) move $v0, $gp sw $zero, 104($v0) move $v0, $gp sw $zero, 108($v0) move $v0, $gp sw $zero, 112($v0) move $v0, $gp sw $zero, 116($v0) move $v0, $gp sw $zero, 120($v0) move $v0, $gp sw $zero, 124($v0) move $v0, $gp sw $zero, 128($v0) move $v0, $gp sw $zero, 132($v0) move $v0, $gp sw $zero, 136($v0) move $v0, $gp sw $zero, 140($v0) move $v0, $gp sw $zero, 144($v0) move $v0, $gp sw $zero, 148($v0) move $v0, $gp sw $zero, 152($v0) move $v0, $gp sw $zero, 156($v0) move $v0, $gp sw $zero, 160($v0) li $a0, 7986 move $v0, $gp sw $a0, 164($v0) li $a0, 8993 move $v0, $gp sw $a0, 168($v0) li $a0, 1808 move $v0, $gp sw $a0, 172($v0) li $a0, 4096 move $v0, $gp sw $a0, 176($v0) li $a0, 4096 move $v0, $gp sw $a0, 180($v0) li $a0, 4096 move $v0, $gp sw $a0, 184($v0) li $a0, 4096 move $v0, $gp sw $a0, 188($v0) li $a0, 4096 move $v0, $gp sw $a0, 192($v0) li $a0, 4096 move $v0, $gp sw $a0, 196($v0) li $a0, 4096 move $v0, $gp sw $a0, 200($v0) li $a0, 4096 move $v0, $gp sw $a0, 204($v0) li $a0, 4096 move $v0, $gp sw $a0, 208($v0) li $a0, 4096 move $v0, $gp sw $a0, 212($v0) li $a0, 4096 move $v0, $gp sw $a0, 216($v0) li $a0, 4096 move $v0, $gp sw $a0, 220($v0) li $a0, 4096 move $v0, $gp sw $a0, 224($v0) li $a0, 4096 move $v0, $gp sw $a0, 228($v0) li $a0, 4096 move $v0, $gp sw $a0, 232($v0) li $a0, 4096 move $v0, $gp sw $a0, 236($v0) li $a0, 4096 move $v0, $gp sw $a0, 240($v0) li $a0, 4096 move $v0, $gp sw $a0, 244($v0) li $a0, 4096 move $v0, $gp sw $a0, 248($v0) li $a0, 4096 move $v0, $gp sw $a0, 252($v0) li $a0, 4096 move $v0, $gp sw $a0, 256($v0) li $a0, 4096 move $v0, $gp sw $a0, 260($v0) li $a0, 4096 move $v0, $gp sw $a0, 264($v0) li $a0, 4096 move $v0, $gp sw $a0, 268($v0) li $a0, 4096 move $v0, $gp sw $a0, 272($v0) li $a0, 4096 move $v0, $gp sw $a0, 276($v0) li $a0, 4096 move $v0, $gp sw $a0, 280($v0) li $a0, 4096 move $v0, $gp sw $a0, 284($v0) c27: move $a0, $gp addi $a0, $a0, 64 move $a1, $gp move $a2, $sp li $a3, 16 la $v0, fir4280 jalr $v0 c26: lw $ra, 64($sp) addi $sp, $sp, 68 jr $ra # end _main