user: What would the C source look like for the assembly code provided here:

```asm
<fisGetMfParaN>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  lea    D21(%rip),%rsi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x3,%eax
  test   %rdx,%rdx
  je     L29
  lea    D26(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x4,%eax
  test   %rdx,%rdx
  je     L29
  lea    D49(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x2,%eax
  test   %rdx,%rdx
  je     L29
  lea    D91(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x4,%eax
  test   %rdx,%rdx
  je     L29
  lea    D37(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x2,%eax
  test   %rdx,%rdx
  je     L29
  lea    D70(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x4,%eax
  test   %rdx,%rdx
  je     L29
  lea    D87(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x4,%eax
  test   %rdx,%rdx
  je     L29
  lea    D115(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x3,%eax
  test   %rdx,%rdx
  je     L29
  lea    D112(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x2,%eax
  test   %rdx,%rdx
  je     L29
  lea    D15(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x2,%eax
  test   %rdx,%rdx
  je     L29
  lea    D12(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x4,%eax
  test   %rdx,%rdx
  je     L29
  mov    %rbx,%rsi
  lea    D11(%rip),%rdi
  call   <PRINTF@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  mov    $0x0,%eax
L29:
  pop    %rbx
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D21
data_type: string
name: parse_data
arguments: data_tag: D26
data_type: string
name: parse_data
arguments: data_tag: D49
data_type: string
name: parse_data
arguments: data_tag: D91
data_type: string
name: parse_data
arguments: data_tag: D37
data_type: string
name: parse_data
arguments: data_tag: D70
data_type: string
name: parse_data
arguments: data_tag: D87
data_type: string
name: parse_data
arguments: data_tag: D115
data_type: string
name: parse_data
arguments: data_tag: D112
data_type: string
name: parse_data
arguments: data_tag: D15
data_type: string
name: parse_data
arguments: data_tag: D12
data_type: string
name: parse_data
arguments: data_tag: D11
data_type: string

tool: D21: trimf

tool: D26: trapmf

tool: D49: gaussmf

tool: D91: gauss2mf

tool: D37: sigmf

tool: D70: dsigmf

tool: D87: psigmf

tool: D115: gbellmf

tool: D112: smf

tool: D15: zmf

tool: D12: pimf

tool: D11: 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);
}
```