user: 这段汇编代码用C语言表示是什么样的?

```asm
<check_ft_type>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  movl   $0x0,-0x8(%rbp)
  movl   $0x0,-0x4(%rbp)
  mov    -0x18(%rbp),%rax
  lea    D275(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L95
  movl   $0x3,-0x4(%rbp)
  mov    -0x28(%rbp),%rax
  movl   $0xe,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L95:
  mov    -0x18(%rbp),%rax
  lea    D242(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L168
  mov    -0x18(%rbp),%rax
  lea    D287(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L105
L168:
  mov    -0x18(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x18(%rbp),%rax
  lea    D275(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  movl   $0x3,-0x4(%rbp)
  mov    -0x28(%rbp),%rax
  movl   $0xe,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L105:
  mov    -0x18(%rbp),%rax
  lea    D163(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L259
  mov    -0x18(%rbp),%rax
  lea    D258(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L152
L259:
  mov    -0x18(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x18(%rbp),%rax
  lea    D45(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x28(%rbp),%rax
  movl   $0x0,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L152:
  mov    -0x18(%rbp),%rax
  lea    D334(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L20
  mov    -0x18(%rbp),%rax
  lea    D101(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L20
  mov    -0x18(%rbp),%rax
  lea    D285(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L20
  mov    -0x18(%rbp),%rax
  lea    D166(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L20
  mov    -0x18(%rbp),%rax
  lea    D143(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L20
  mov    -0x18(%rbp),%rax
  lea    D308(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L20
  mov    -0x18(%rbp),%rax
  lea    D89(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L20
  mov    -0x18(%rbp),%rax
  lea    D27(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L246
L20:
  mov    -0x18(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x18(%rbp),%rax
  lea    D308(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x28(%rbp),%rax
  movl   $0x10,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L246:
  mov    -0x18(%rbp),%rax
  lea    D164(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L507
  mov    -0x28(%rbp),%rax
  movl   $0x11,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L507:
  mov    -0x18(%rbp),%rax
  lea    D224(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L18
  mov    -0x28(%rbp),%rax
  movl   $0x3,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L18:
  mov    -0x18(%rbp),%rax
  lea    D271(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L511
  mov    -0x28(%rbp),%rax
  movl   $0xb,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L511:
  mov    -0x18(%rbp),%rax
  lea    D64(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L222
  mov    -0x28(%rbp),%rax
  movl   $0xd,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L222:
  mov    -0x18(%rbp),%rax
  lea    D122(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L159
  mov    -0x28(%rbp),%rax
  movl   $0x7,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L159:
  mov    -0x18(%rbp),%rax
  lea    D256(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L322
  mov    -0x28(%rbp),%rax
  movl   $0x12,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L322:
  mov    -0x18(%rbp),%rax
  lea    D45(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L329
  mov    -0x28(%rbp),%rax
  movl   $0x0,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L329:
  mov    -0x18(%rbp),%rax
  lea    D74(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L207
  mov    -0x28(%rbp),%rax
  movl   $0x9,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L207:
  mov    -0x18(%rbp),%rax
  lea    D202(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L263
  mov    -0x28(%rbp),%rax
  movl   $0x5,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L263:
  mov    -0x18(%rbp),%rax
  lea    D215(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L332
  mov    -0x28(%rbp),%rax
  movl   $0x4,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L332:
  mov    -0x18(%rbp),%rax
  lea    D137(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L438
  mov    -0x28(%rbp),%rax
  movl   $0x6,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L438:
  mov    -0x18(%rbp),%rax
  lea    D103(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L244
  mov    -0x28(%rbp),%rax
  movl   $0xc,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L244:
  mov    -0x18(%rbp),%rax
  lea    D175(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L464
  mov    -0x28(%rbp),%rax
  movl   $0x8,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L464:
  mov    -0x18(%rbp),%rax
  lea    D244(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L192
  mov    -0x28(%rbp),%rax
  movl   $0x1,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L192:
  mov    -0x18(%rbp),%rax
  lea    D300(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L303
  mov    -0x28(%rbp),%rax
  movl   $0x2,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L303:
  mov    -0x18(%rbp),%rax
  lea    D182(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L369
  mov    -0x28(%rbp),%rax
  movl   $0xf,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L369:
  mov    -0x18(%rbp),%rax
  lea    D315(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L341
  mov    -0x28(%rbp),%rax
  movl   $0x13,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L508
L341:
  mov    -0x18(%rbp),%rax
  lea    D29(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L508
  mov    -0x28(%rbp),%rax
  movl   $0x14,(%rax)
  movl   $0x1,-0x8(%rbp)
L508:
  mov    -0x8(%rbp),%eax
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: label: D275
type_guessed: string
name: retrieve_data
arguments: label: D242
type_guessed: string
name: retrieve_data
arguments: label: D287
type_guessed: string
name: retrieve_data
arguments: label: D163
type_guessed: string
name: retrieve_data
arguments: label: D258
type_guessed: string
name: retrieve_data
arguments: label: D45
type_guessed: string
name: retrieve_data
arguments: label: D334
type_guessed: string
name: retrieve_data
arguments: label: D101
type_guessed: string
name: retrieve_data
arguments: label: D285
type_guessed: string
name: retrieve_data
arguments: label: D166
type_guessed: string
name: retrieve_data
arguments: label: D143
type_guessed: string
name: retrieve_data
arguments: label: D308
type_guessed: string
name: retrieve_data
arguments: label: D89
type_guessed: string
name: retrieve_data
arguments: label: D27
type_guessed: string
name: retrieve_data
arguments: label: D164
type_guessed: string
name: retrieve_data
arguments: label: D224
type_guessed: string
name: retrieve_data
arguments: label: D271
type_guessed: string
name: retrieve_data
arguments: label: D64
type_guessed: string
name: retrieve_data
arguments: label: D122
type_guessed: string
name: retrieve_data
arguments: label: D256
type_guessed: string
name: retrieve_data
arguments: label: D74
type_guessed: string
name: retrieve_data
arguments: label: D202
type_guessed: string
name: retrieve_data
arguments: label: D215
type_guessed: string
name: retrieve_data
arguments: label: D137
type_guessed: string
name: retrieve_data
arguments: label: D103
type_guessed: string
name: retrieve_data
arguments: label: D175
type_guessed: string
name: retrieve_data
arguments: label: D244
type_guessed: string
name: retrieve_data
arguments: label: D300
type_guessed: string
name: retrieve_data
arguments: label: D182
type_guessed: string
name: retrieve_data
arguments: label: D315
type_guessed: string
name: retrieve_data
arguments: label: D29
type_guessed: string

tool: D275: STRUCT

tool: D242: HELIX

tool: D287: STRAND

tool: D163: DNA_BIND

tool: D258: ZN_FING

tool: D45: DOMAIN

tool: D334: NP_BIND

tool: D101: CA_BIND

tool: D285: METAL

tool: D166: CARBOHYD

tool: D143: DISULFID

tool: D308: SITE

tool: D89: ACT_SITE

tool: D27: BINDING

tool: D164: MOD_RES

tool: D224: REPEAT

tool: D271: TRANSMEM

tool: D64: SIGNAL

tool: D122: VARSPLIC

tool: D256: VARIANT

tool: D74: BLOCK

tool: D202: REGION

tool: D215: PHYLOBLOCK

tool: D137: SEQERR

tool: D103: COIL

tool: D175: LOWCOMP

tool: D244: PFAM-A

tool: D300: PFAM-B

tool: D182: PROSITE

tool: D315: ELM

tool: D29: DISORDER

assistant: ```c
int check_ft_type(char *ft_type, char *ft_name, int *type) {
  int ret = 0;
  int seq_type = 0;
  if (strcmp(ft_type, "STRUCT") == 0) {
    seq_type = 3;
    (*type) = 14;
    ret = 1;
  } else if ((strcmp(ft_type, "HELIX") == 0) || (strcmp(ft_type, "STRAND") == 0)) {
    strcpy(ft_name, ft_type);
    strcpy(ft_type, "STRUCT");
    seq_type = 3;
    (*type) = 14;
    ret = 1;
  } else if ((strcmp(ft_type, "DNA_BIND") == 0) || (strcmp(ft_type, "ZN_FING") == 0)) {
    strcpy(ft_name, ft_type);
    strcpy(ft_type, "DOMAIN");
    (*type) = 0;
    ret = 1;
  } else if ((strcmp(ft_type, "NP_BIND") == 0) || (strcmp(ft_type, "CA_BIND") == 0) || (strcmp(ft_type, "METAL") == 0) || (strcmp(ft_type, "CARBOHYD") == 0) || (strcmp(ft_type, "DISULFID") == 0) || (strcmp(ft_type, "SITE") == 0) || (strcmp(ft_type, "ACT_SITE") == 0) || (strcmp(ft_type, "BINDING") == 0)) {
    strcpy(ft_name, ft_type);
    strcpy(ft_type, "SITE");
    (*type) = 16;
    ret = 1;
  } else if (strcmp(ft_type, "MOD_RES") == 0) {
    (*type) = 17;
    ret = 1;
  } else if (strcmp(ft_type, "REPEAT") == 0) {
    (*type) = 3;
    ret = 1;
  } else if (strcmp(ft_type, "TRANSMEM") == 0) {
    (*type) = 11;
    ret = 1;
  } else if (strcmp(ft_type, "SIGNAL") == 0) {
    (*type) = 13;
    ret = 1;
  } else if (strcmp(ft_type, "VARSPLIC") == 0) {
    (*type) = 7;
    ret = 1;
  } else if (strcmp(ft_type, "VARIANT") == 0) {
    (*type) = 18;
    ret = 1;
  } else if (strcmp(ft_type, "DOMAIN") == 0) {
    (*type) = 0;
    ret = 1;
  } else if (strcmp(ft_type, "BLOCK") == 0) {
    (*type) = 9;
    ret = 1;
  } else if (strcmp(ft_type, "REGION") == 0) {
    (*type) = 5;
    ret = 1;
  } else if (strcmp(ft_type, "PHYLOBLOCK") == 0) {
    (*type) = 4;
    ret = 1;
  } else if (strcmp(ft_type, "SEQERR") == 0) {
    (*type) = 6;
    ret = 1;
  } else if (strcmp(ft_type, "COIL") == 0) {
    (*type) = 12;
    ret = 1;
  } else if (strcmp(ft_type, "LOWCOMP") == 0) {
    (*type) = 8;
    ret = 1;
  } else if (strcmp(ft_type, "PFAM-A") == 0) {
    (*type) = 1;
    ret = 1;
  } else if (strcmp(ft_type, "PFAM-B") == 0) {
    (*type) = 2;
    ret = 1;
  } else if (strcmp(ft_type, "PROSITE") == 0) {
    (*type) = 15;
    ret = 1;
  } else if (strcmp(ft_type, "ELM") == 0) {
    (*type) = 19;
    ret = 1;
  } else if (strcmp(ft_type, "DISORDER") == 0) {
    (*type) = 20;
    ret = 1;
  }
  return ret;
}
```