user: What is the c source code of the assembly code below?

```asm
<fisGetMfParaN>:
  endbr64
  push   %rbp
  lea    D114(%rip),%rsi
  mov    %rdi,%rbp
  call   <strcmp@plt>
  test   %rax,%rax
  je     L40
  lea    D29(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L99
  lea    D99(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L69
  lea    D27(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L99
  lea    D64(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L69
  lea    D53(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L99
  lea    D102(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L99
  lea    D67(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L40
  lea    D75(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L69
  lea    D5(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L69
  lea    D49(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L99
  mov    %rbp,%rsi
  lea    D32(%rip),%rdi
  call   <PRINTF@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  xor    %eax,%eax
  pop    %rbp
  ret
  cs nopw 0x0(%rax,%rax,1)
L99:
  mov    $0x4,%eax
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L40:
  mov    $0x3,%eax
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L69:
  mov    $0x2,%eax
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D114
data_type: string
name: disassemble_data
arguments: tag: D29
data_type: string
name: disassemble_data
arguments: tag: D99
data_type: string
name: disassemble_data
arguments: tag: D27
data_type: string
name: disassemble_data
arguments: tag: D64
data_type: string
name: disassemble_data
arguments: tag: D53
data_type: string
name: disassemble_data
arguments: tag: D102
data_type: string
name: disassemble_data
arguments: tag: D67
data_type: string
name: disassemble_data
arguments: tag: D75
data_type: string
name: disassemble_data
arguments: tag: D5
data_type: string
name: disassemble_data
arguments: tag: D49
data_type: string
name: disassemble_data
arguments: tag: D32
data_type: string

tool: D114: trimf

tool: D29: trapmf

tool: D99: gaussmf

tool: D27: gauss2mf

tool: D64: sigmf

tool: D53: dsigmf

tool: D102: psigmf

tool: D67: gbellmf

tool: D75: smf

tool: D5: zmf

tool: D49: pimf

tool: D32: Given MF type (%s) is unknown.


assistant: ```c
int fisGetMfParaN(char *mfType) {
  if (strcmp(mfType, "trimf") == 0)
    return (3);
  if (strcmp(mfType, "trapmf") == 0)
    return (4);
  if (strcmp(mfType, "gaussmf") == 0)
    return (2);
  if (strcmp(mfType, "gauss2mf") == 0)
    return (4);
  if (strcmp(mfType, "sigmf") == 0)
    return (2);
  if (strcmp(mfType, "dsigmf") == 0)
    return (4);
  if (strcmp(mfType, "psigmf") == 0)
    return (4);
  if (strcmp(mfType, "gbellmf") == 0)
    return (3);
  if (strcmp(mfType, "smf") == 0)
    return (2);
  if (strcmp(mfType, "zmf") == 0)
    return (2);
  if (strcmp(mfType, "pimf") == 0)
    return (4);
  PRINTF("Given MF type (%s) is unknown.\n", mfType);
  exit(1);
  return (0);
}
```