user: 请将以下的汇编代码转换成C语言代码:

```asm
<Month2Int>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbp
  mov    $0x0,%ebx
  jmp    L100
L35:
  movsbl 0x0(%rbp,%rbx,1),%edi
  call   <toupper@plt>
  mov    %al,0x0(%rbp,%rbx,1)
  add    $0x1,%rbx
L100:
  mov    %rbp,%rdi
  call   <strlen@plt>
  cmp    %ebx,%eax
  jg     L35
  lea    D4(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L44
L61:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L44:
  lea    D55(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x2,%eax
  test   %rdx,%rdx
  je     L61
  lea    D90(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x3,%eax
  test   %rdx,%rdx
  je     L61
  lea    D114(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x4,%eax
  test   %rdx,%rdx
  je     L61
  lea    D99(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x5,%eax
  test   %rdx,%rdx
  je     L61
  lea    D127(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x6,%eax
  test   %rdx,%rdx
  je     L61
  lea    D68(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x7,%eax
  test   %rdx,%rdx
  je     L61
  lea    D62(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x8,%eax
  test   %rdx,%rdx
  je     L61
  lea    D5(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x9,%eax
  test   %rdx,%rdx
  je     L61
  lea    D59(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0xa,%eax
  test   %rdx,%rdx
  je     L61
  lea    D125(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0xb,%eax
  test   %rdx,%rdx
  je     L61
  lea    D78(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0xc,%eax
  test   %rdx,%rdx
  je     L61
  mov    %rbp,%rsi
  lea    D106(%rip),%rdi
  call   <puterr2@plt>
  mov    $0x0,%eax
  jmp    L61
```

tool_calls: name: parse_data
arguments: label: D4
data_type: string
name: parse_data
arguments: label: D55
data_type: string
name: parse_data
arguments: label: D90
data_type: string
name: parse_data
arguments: label: D114
data_type: string
name: parse_data
arguments: label: D99
data_type: string
name: parse_data
arguments: label: D127
data_type: string
name: parse_data
arguments: label: D68
data_type: string
name: parse_data
arguments: label: D62
data_type: string
name: parse_data
arguments: label: D5
data_type: string
name: parse_data
arguments: label: D59
data_type: string
name: parse_data
arguments: label: D125
data_type: string
name: parse_data
arguments: label: D78
data_type: string
name: parse_data
arguments: label: D106
data_type: string

tool: D4: JAN

tool: D55: FEB

tool: D90: MAR

tool: D114: APR

tool: D99: MAY

tool: D127: JUN

tool: D68: JUL

tool: D62: AUG

tool: D5: SEP

tool: D59: OCT

tool: D125: NOV

tool: D78: DEC

tool: D106: ERROR: unrecognized charcter month

assistant: ```c
int Month2Int(char *cmonth) {
  int i;
  for (i = 0; i < (int)strlen(cmonth); i++)
    cmonth[i] = toupper(cmonth[i]);
  if (strcmp(cmonth, "JAN") == 0)
    return (1);
  if (strcmp(cmonth, "FEB") == 0)
    return (2);
  if (strcmp(cmonth, "MAR") == 0)
    return (3);
  if (strcmp(cmonth, "APR") == 0)
    return (4);
  if (strcmp(cmonth, "MAY") == 0)
    return (5);
  if (strcmp(cmonth, "JUN") == 0)
    return (6);
  if (strcmp(cmonth, "JUL") == 0)
    return (7);
  if (strcmp(cmonth, "AUG") == 0)
    return (8);
  if (strcmp(cmonth, "SEP") == 0)
    return (9);
  if (strcmp(cmonth, "OCT") == 0)
    return (10);
  if (strcmp(cmonth, "NOV") == 0)
    return (11);
  if (strcmp(cmonth, "DEC") == 0)
    return (12);
  puterr2("ERROR: unrecognized charcter month", cmonth);
  return (0);
}
```