# factorial by Brock
	.ent	factB
	.global factB
	.type	factB, @function
factB:
	.set    noreorder
	.set	nomacro
	addi    $t0, $0, 2
	slt     $t0, $a0, $t0
	beq	$t0, $0, 1f
	addi    $v0, $0, 1        # return 1                          [delay]
	jr      $ra
	nop                                                           [delay]
1:	addi    $sp, $sp, -8      # make room for call
	sw      $a0, 8($sp)       # store n on stack in reserved area
	sw      $ra, 4($sp)       # store $ra on stack, in temp area
	jal     factB
        addi    $a0, $a0, -1      # n-1                               [delay]
      	lw      $ra, 4($sp)       # restore $ra
	lw      $a0, 8($sp)       # restore n
        addi    $sp, $sp, 8       # restore $sp
        jr      $ra               # return
        mul     $v0, $a0, $v0     # n * factorial(n-1)                [delay]
	.end	factB
	.size	factB, .-factB



