	.data
str:	.asciiz		"The answer is "
	
	.text
main:	addi $sp,$sp,-4
	sw $ra,0($sp)
	li $a0,6
	jal factorial
	add $s0,$v0,$zero
	li $v0,4
	la $a0,str
	syscall
	
	li $v0,1
	add $a0,$s0,$zero
	syscall
	
	lw $ra,0($sp)
	addi $sp,$sp,4
	jr $31

factorial:
	addi $sp,$sp,-40
	sw $a0,0($sp)
	sw $s0,4($sp)
	sw $s1,8($sp)
	sw $s2,12($sp)
	sw $s3,16($sp)
	sw $s4,20($sp)
	sw $s5,24($sp)
	sw $s6,28($sp)
	sw $s0,32($sp)
	sw $ra,36($sp)
	
	slti $t0,$a0,1
	bgtz $t0,return
	addi $a0,$a0,-1
	jal factorial
	lw $t0,0($sp)
	mult $t0,$v0
	mflo $v0
	b leave
	
return:	li $v0,1

leave:	lw $a0,0($sp)
	lw $s0,4($sp)
	lw $s1,8($sp)
	lw $s2,12($sp)
	lw $s3,16($sp)
	lw $s4,20($sp)
	lw $s5,24($sp)
	lw $s6,28($sp)
	lw $s0,32($sp)
	lw $ra,36($sp)
	addi $sp,$sp,40
	jr $31
	