user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<main>:
  endbr64
  push   %r13
  lea    D173(%rip),%rdi
  push   %r12
  push   %rbp
  sub    $0x60,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x58(%rsp)
  xor    %eax,%eax
  lea    0x40(%rsp),%r12
  lea    0x20(%rsp),%r13
  mov    %rsp,%rbp
  mov    %r12,%rcx
  mov    %r13,%rdx
  mov    %rbp,%rsi
  call   <scanf@plt>
  movabs $0x6172626574726576,%rax
  cmp    %rax,(%rsp)
  je     L226
L247:
  mov    %rbp,%rsi
  lea    D89(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L170
L35:
  mov    0x58(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L109
  add    $0x60,%rsp
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L170:
  mov    %r13,%rsi
  lea    D65(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L71
  mov    %r12,%rsi
  lea    D80(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L233
  mov    %r12,%rsi
  lea    D53(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L35
  lea    D138(%rip),%rdi
  call   <printf@plt>
  jmp    L35
L226:
  cmpw   $0x6f64,0x8(%rsp)
  jne    L247
  cmpb   $0x0,0xa(%rsp)
  jne    L247
  mov    %r13,%rsi
  lea    D49(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L239
  mov    %r12,%rsi
  lea    D87(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L14
  mov    %r12,%rsi
  lea    D175(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L35
  lea    D174(%rip),%rdi
  call   <printf@plt>
  jmp    L35
L71:
  mov    %r13,%rsi
  lea    D19(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L35
  mov    %r12,%rsi
  lea    D80(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L174
  mov    %r12,%rsi
  lea    D175(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L35
  lea    D64(%rip),%rdi
  call   <printf@plt>
  jmp    L35
L239:
  mov    %r13,%rsi
  lea    D39(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L35
  mov    %r12,%rsi
  lea    D175(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L160
  mov    %r12,%rsi
  lea    D53(%rip),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L35
  lea    D127(%rip),%rdi
  call   <printf@plt>
  jmp    L35
L14:
  lea    D186(%rip),%rdi
  call   <printf@plt>
  jmp    L35
L174:
  lea    D0(%rip),%rdi
  call   <printf@plt>
  jmp    L35
L160:
  lea    D48(%rip),%rdi
  call   <printf@plt>
  jmp    L35
L233:
  lea    D126(%rip),%rdi
  call   <printf@plt>
  jmp    L35
L109:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: tag: D173
type_infered: string
name: retrieve_data
arguments: tag: D89
type_infered: string
name: retrieve_data
arguments: tag: D65
type_infered: string
name: retrieve_data
arguments: tag: D80
type_infered: string
name: retrieve_data
arguments: tag: D53
type_infered: string
name: retrieve_data
arguments: tag: D138
type_infered: string
name: retrieve_data
arguments: tag: D49
type_infered: string
name: retrieve_data
arguments: tag: D87
type_infered: string
name: retrieve_data
arguments: tag: D175
type_infered: string
name: retrieve_data
arguments: tag: D174
type_infered: string
name: retrieve_data
arguments: tag: D19
type_infered: string
name: retrieve_data
arguments: tag: D64
type_infered: string
name: retrieve_data
arguments: tag: D39
type_infered: string
name: retrieve_data
arguments: tag: D127
type_infered: string
name: retrieve_data
arguments: tag: D186
type_infered: string
name: retrieve_data
arguments: tag: D0
type_infered: string
name: retrieve_data
arguments: tag: D48
type_infered: string
name: retrieve_data
arguments: tag: D126
type_infered: string

tool: D173: %19s %19s %19s

tool: D89: invertebrado

tool: D65: inseto

tool: D80: hematofago

tool: D53: herbivoro

tool: D138: lagarta


tool: D49: ave

tool: D87: carnivoro

tool: D175: onivoro

tool: D174: pomba


tool: D19: anelideo

tool: D64: minhoca


tool: D39: mamifero

tool: D127: vaca


tool: D186: aguia


tool: D0: sanguessuga


tool: D48: homem


tool: D126: pulga


assistant: ```c
int main() {
  char id1[20], id2[20], id3[20];
  scanf("%19s %19s %19s", id1, id2, id3);
  if (!strcmp("vertebrado", id1)) {
    if (!strcmp("ave", id2)) {
      if (!strcmp("carnivoro", id3)) {
        printf("aguia\n");
      } else if (!strcmp("onivoro", id3)) {
        printf("pomba\n");
      }
    } else if (!strcmp("mamifero", id2)) {
      if (!strcmp("onivoro", id3)) {
        printf("homem\n");
      } else if (!strcmp("herbivoro", id3)) {
        printf("vaca\n");
      }
    }
  } else if (!strcmp("invertebrado", id1)) {
    if (!strcmp("inseto", id2)) {
      if (!strcmp("hematofago", id3)) {
        printf("pulga\n");
      } else if (!strcmp("herbivoro", id3)) {
        printf("lagarta\n");
      }
    } else if (!strcmp("anelideo", id2)) {
      if (!strcmp("hematofago", id3)) {
        printf("sanguessuga\n");
      } else if (!strcmp("onivoro", id3)) {
        printf("minhoca\n");
      }
    }
  }
  return 0;
}
```