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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L40
L138:
  cmpb   $0xa,-0x1(%rbp)
  jne    L88
  jmp    L40
L88:
  movsbl -0x1(%rbp),%eax
  mov    %eax,%edi
  call   <islower@plt>
  test   %rax,%rax
  je     L59
  movsbl -0x1(%rbp),%eax
  cmp    $0x63,%eax
  je     L74
  cmp    $0x63,%eax
  jg     L149
  cmp    $0x61,%eax
  je     L44
  cmp    $0x62,%eax
  je     L73
  jmp    L149
L44:
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L103
L73:
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L103
L74:
  lea    D73(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L103
L149:
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L52
L59:
  lea    D36(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L103:
  jmp    L52
L15:
  nop
L52:
  mov    $0x0,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L15
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L40:
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    %al,-0x1(%rbp)
  cmpb   $0x23,-0x1(%rbp)
  jne    L138
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D30
datatype: string
name: disassemble_data
arguments: data_label: D64
datatype: string
name: disassemble_data
arguments: data_label: D58
datatype: string
name: disassemble_data
arguments: data_label: D8
datatype: string
name: disassemble_data
arguments: data_label: D1
datatype: string
name: disassemble_data
arguments: data_label: D73
datatype: string
name: disassemble_data
arguments: data_label: D77
datatype: string
name: disassemble_data
arguments: data_label: D36
datatype: string
name: disassemble_data
arguments: data_label: D80
datatype: string

tool: D30: Give me a letter of the alphabet, and I will give 

tool: D64: an animal name 
beginning with that letter.


tool: D58: Please type in a letter ;type # to end my act.


tool: D8: argali, a wild sheep of Asia


tool: D1: babirusa, a wild pig of Malay


tool: D73: coati, racoonlike mammal


tool: D77: That's a stumper!


tool: D36: I recognize only lowercase letters.


tool: D80: Please type another letter or a #.


assistant: ```c
int main() {
  char ch;
  printf("Give me a letter of the alphabet, and I will give ");
  printf("an animal name \nbeginning with that letter.\n");
  printf("Please type in a letter ;type # to end my act.\n");
  while ((ch = getchar()) != '#') {
    if ('\n' == ch)
      continue;
    if (islower(ch))
      switch (ch) {
      case 'a':
        printf("argali, a wild sheep of Asia\n");
        break;
      case 'b':
        printf("babirusa, a wild pig of Malay\n");
        break;
      case 'c':
        printf("coati, racoonlike mammal\n");
        break;
      default:
        printf("That's a stumper!\n");
      }
    else
      printf("I recognize only lowercase letters.\n");
    while (getchar() != '\n')
      continue;
    printf("Please type another letter or a #.\n");
  }
  return 0;
}
```