user: Please show me the C implementation that matches the assembly code listed below:

```asm
<Month2Int>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,-0x28(%rbp)
  movl   $0x0,-0x14(%rbp)
  jmp    L181
L239:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    -0x14(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x28(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  mov    %eax,%edi
  call   <toupper@plt>
  mov    %al,(%rbx)
  addl   $0x1,-0x14(%rbp)
L181:
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cmp    %eax,-0x14(%rbp)
  jl     L239
  mov    -0x28(%rbp),%rax
  lea    D32(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L203
  mov    $0x1,%eax
  jmp    L178
L203:
  mov    -0x28(%rbp),%rax
  lea    D76(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L159
  mov    $0x2,%eax
  jmp    L178
L159:
  mov    -0x28(%rbp),%rax
  lea    D92(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L15
  mov    $0x3,%eax
  jmp    L178
L15:
  mov    -0x28(%rbp),%rax
  lea    D40(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L67
  mov    $0x4,%eax
  jmp    L178
L67:
  mov    -0x28(%rbp),%rax
  lea    D112(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L60
  mov    $0x5,%eax
  jmp    L178
L60:
  mov    -0x28(%rbp),%rax
  lea    D11(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L20
  mov    $0x6,%eax
  jmp    L178
L20:
  mov    -0x28(%rbp),%rax
  lea    D87(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L88
  mov    $0x7,%eax
  jmp    L178
L88:
  mov    -0x28(%rbp),%rax
  lea    D18(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L250
  mov    $0x8,%eax
  jmp    L178
L250:
  mov    -0x28(%rbp),%rax
  lea    D16(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L179
  mov    $0x9,%eax
  jmp    L178
L179:
  mov    -0x28(%rbp),%rax
  lea    D44(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L52
  mov    $0xa,%eax
  jmp    L178
L52:
  mov    -0x28(%rbp),%rax
  lea    D8(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L173
  mov    $0xb,%eax
  jmp    L178
L173:
  mov    -0x28(%rbp),%rax
  lea    D81(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L210
  mov    $0xc,%eax
  jmp    L178
L210:
  mov    -0x28(%rbp),%rax
  mov    %rax,%rsi
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  call   <puterr2@plt>
  mov    $0x0,%eax
L178:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D32
data_type: string
name: extract_symbolic_data
arguments: data_tag: D76
data_type: string
name: extract_symbolic_data
arguments: data_tag: D92
data_type: string
name: extract_symbolic_data
arguments: data_tag: D40
data_type: string
name: extract_symbolic_data
arguments: data_tag: D112
data_type: string
name: extract_symbolic_data
arguments: data_tag: D11
data_type: string
name: extract_symbolic_data
arguments: data_tag: D87
data_type: string
name: extract_symbolic_data
arguments: data_tag: D18
data_type: string
name: extract_symbolic_data
arguments: data_tag: D16
data_type: string
name: extract_symbolic_data
arguments: data_tag: D44
data_type: string
name: extract_symbolic_data
arguments: data_tag: D8
data_type: string
name: extract_symbolic_data
arguments: data_tag: D81
data_type: string
name: extract_symbolic_data
arguments: data_tag: D59
data_type: string

tool: D32: JAN

tool: D76: FEB

tool: D92: MAR

tool: D40: APR

tool: D112: MAY

tool: D11: JUN

tool: D87: JUL

tool: D18: AUG

tool: D16: SEP

tool: D44: OCT

tool: D8: NOV

tool: D81: DEC

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