# factorial by Harris and Harris
	.ent	factH
	.global factH
	.type	factH, @function
factH:
	.set	noreorder
	.set    nomacro
        addi    $sp, $sp, -8      # make room
        sw      $a0, 4($sp)       # store $a0          -- not the standard
        sw      $ra, 0($sp)       # store $ra
        addi    $t0, $0, 2
        slt     $t0, $a0, $t0     # a <= 1 ?
        beq     $t0, $0, Lelse    # no: go to else
	nop
        addi    $v0, $0, 1        # yes: return 1
        addi    $sp, $sp, 8       # restore $sp
        jr      $ra               # return
	nop
Lelse:  addi    $a0, $a0, -1      # n = n - 1
        jal     factH             # recursive call
	nop
        lw      $ra, 0($sp)       # restore $ra
        lw      $a0, 4($sp)       # restore $a0
        addi    $sp, $sp, 8       # restore $sp
        mul     $v0, $a0, $v0     # n * factorial(n-1)
        jr      $ra               # return
	nop
	.end	factH
	.size	factH, .-factH






