user: 下面的汇编指令对应的C源代码是什么:

```asm
<alpn_desc>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  lea    D104(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L191
  lea    D49(%rip),%rax
  jmp    L101
L191:
  mov    -0x8(%rbp),%rax
  lea    D105(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L93
  lea    D53(%rip),%rax
  jmp    L101
L93:
  mov    -0x8(%rbp),%rax
  lea    D11(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L183
  lea    D236(%rip),%rax
  jmp    L101
L183:
  mov    -0x8(%rbp),%rax
  lea    D62(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L195
  lea    D248(%rip),%rax
  jmp    L101
L195:
  mov    -0x8(%rbp),%rax
  lea    D245(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L61
  lea    D165(%rip),%rax
  jmp    L101
L61:
  mov    -0x8(%rbp),%rax
  lea    D73(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L83
  lea    D79(%rip),%rax
  jmp    L101
L83:
  mov    -0x8(%rbp),%rax
  lea    D68(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L151
  lea    D202(%rip),%rax
  jmp    L101
L151:
  mov    -0x8(%rbp),%rax
  lea    D96(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L24
  lea    D46(%rip),%rax
  jmp    L101
L24:
  mov    -0x8(%rbp),%rax
  lea    D113(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L66
  lea    D25(%rip),%rax
  jmp    L101
L66:
  mov    -0x8(%rbp),%rax
  lea    D6(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L42
  lea    D95(%rip),%rax
  jmp    L101
L42:
  mov    -0x8(%rbp),%rax
  lea    D242(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L13
  lea    D192(%rip),%rax
  jmp    L101
L13:
  mov    -0x8(%rbp),%rax
  lea    D108(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L218
  lea    D151(%rip),%rax
  jmp    L101
L218:
  lea    D213(%rip),%rax
L101:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D104
type: string
name: extract_symbolic_data
arguments: label: D49
type: string
name: extract_symbolic_data
arguments: label: D105
type: string
name: extract_symbolic_data
arguments: label: D53
type: string
name: extract_symbolic_data
arguments: label: D11
type: string
name: extract_symbolic_data
arguments: label: D236
type: string
name: extract_symbolic_data
arguments: label: D62
type: string
name: extract_symbolic_data
arguments: label: D248
type: string
name: extract_symbolic_data
arguments: label: D245
type: string
name: extract_symbolic_data
arguments: label: D165
type: string
name: extract_symbolic_data
arguments: label: D73
type: string
name: extract_symbolic_data
arguments: label: D79
type: string
name: extract_symbolic_data
arguments: label: D68
type: string
name: extract_symbolic_data
arguments: label: D202
type: string
name: extract_symbolic_data
arguments: label: D96
type: string
name: extract_symbolic_data
arguments: label: D46
type: string
name: extract_symbolic_data
arguments: label: D113
type: string
name: extract_symbolic_data
arguments: label: D25
type: string
name: extract_symbolic_data
arguments: label: D6
type: string
name: extract_symbolic_data
arguments: label: D95
type: string
name: extract_symbolic_data
arguments: label: D242
type: string
name: extract_symbolic_data
arguments: label: D192
type: string
name: extract_symbolic_data
arguments: label: D108
type: string
name: extract_symbolic_data
arguments: label: D151
type: string
name: extract_symbolic_data
arguments: label: D213
type: string

tool: D104: http/1.1

tool: D49: HTTP/1.1

tool: D105: spdy/1

tool: D53: SPDY/1

tool: D11: spdy/2

tool: D236: SPDY/2

tool: D62: spdy/3

tool: D248: SPDY/3

tool: D245: spdy/3.1

tool: D165: SPDY/3.1

tool: D73: stun.turn

tool: D79: Traversal Using Relays around NAT (TURN)

tool: D68: stun.nat-discovery

tool: D202: NAT discovery using Session Traversal Utilities for NAT (STUN)

tool: D96: h2

tool: D46: HTTP/2 over TLS

tool: D113: h2c

tool: D25: HTTP/2 over TCP

tool: D6: webrtc

tool: D95: WebRTC Media and Data

tool: D242: c-webrtc

tool: D192: Confidential WebRTC Media and Data

tool: D108: ftp

tool: D151: FTP

tool: 

assistant: ```c
const char *alpn_desc(char *code) {
  if (strcmp(code, "http/1.1") == 0)
    return "HTTP/1.1";
  else if (strcmp(code, "spdy/1") == 0)
    return "SPDY/1";
  else if (strcmp(code, "spdy/2") == 0)
    return "SPDY/2";
  else if (strcmp(code, "spdy/3") == 0)
    return "SPDY/3";
  else if (strcmp(code, "spdy/3.1") == 0)
    return "SPDY/3.1";
  else if (strcmp(code, "stun.turn") == 0)
    return "Traversal Using Relays around NAT (TURN)";
  else if (strcmp(code, "stun.nat-discovery") == 0)
    return "NAT discovery using Session Traversal Utilities for NAT (STUN)";
  else if (strcmp(code, "h2") == 0)
    return "HTTP/2 over TLS";
  else if (strcmp(code, "h2c") == 0)
    return "HTTP/2 over TCP";
  else if (strcmp(code, "webrtc") == 0)
    return "WebRTC Media and Data";
  else if (strcmp(code, "c-webrtc") == 0)
    return "Confidential WebRTC Media and Data";
  else if (strcmp(code, "ftp") == 0)
    return "FTP";
  else
    return "";
}
```