      .align  2
      .globl  square
      .ent    square
square:
      .frame  $fp,32,$ra
      .mask   0xc0000000,-4
# prologue
      addiu   $sp,$sp,-32
      sw      $ra,28($sp)
      sw      $fp,24($sp)
      add     $fp,$sp,$zero
      sw      $a0,32($fp)
# r = 0
      sw      $zero,16($fp)
# if (n != 0)
      beq     $a0,$zero,retPnt
      nop
# invocation: square(n-1)
      addiu   $a0,$a0,-1
      jal     square
      nop
# return: square(n-1)
      add     $t1,$v0,$zero
# r = square(n-1) + n + n + 1
      lw      $a0,32($fp)
      addu    $t1,$v0,$a0
      addu    $t1,$t1,$a0
      addiu   $t1,$t1,-1
      sw      $t1,16($fp)
retPnt:
# return r
      lw      $v0,16($fp)
# epilogue
      add     $sp,$fp,$zero
      lw      $ra,28($sp)
      lw      $fp,24($sp)
      addiu   $sp,$sp,32
      j       $ra
      nop
      .end    square
      .size   square, .-square
