Convert this MIPS assembly Fibonacci function code to C. It is a simple Fibonacci function.

```

fib:
    addi $sp, $sp, -12    ; Allocate space on the stack
    sw $ra, 8($sp)        ; Save the return address
    sw $s0, 4($sp)        ; Save the base case value
    sw $s1, 0($sp)        ; Save the previous value

    bgtz $a0, calculate   ; Handle base cases

    li $v0, 0             ; Base case: fib(0) = 0
    j exit

calculate:
    li $s0, 0             ; Initialize base cases
    li $s1, 1

    beq $a0, 1, return    ; Handle second base case

    addi $a0, $a0, -1     ; Recursive case
    jal fib
    move $t0, $v0         ; Save the previous value

    addi $a0, $a0, -1
    jal fib
    add $v0, $t0, $v0     ; Add previous value to current value

return:
    move $v0, $s1         ; Return the current value

exit:
    lw $s1, 0($sp)        ; Restore saved registers
    lw $s0, 4($sp)
    lw $ra, 8($sp)
    addi $sp, $sp, 12     ; Deallocate stack space
    jr $ra                ; Return to the calling function


```
spam lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor creativity violence