user: 请从给定的汇编指令推导出C源代码：

```asm
<path_exttype>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  jne    L176
  mov    $0x0,%eax
  jmp    L124
L176:
  mov    -0x8(%rbp),%rax
  lea    D93(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L98
  lea    D129(%rip),%rax
  jmp    L124
L98:
  mov    -0x8(%rbp),%rax
  lea    D15(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L152
  lea    D32(%rip),%rax
  jmp    L124
L152:
  mov    -0x8(%rbp),%rax
  lea    D0(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L65
  lea    D16(%rip),%rax
  jmp    L124
L65:
  mov    -0x8(%rbp),%rax
  lea    D77(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L170
  lea    D24(%rip),%rax
  jmp    L124
L170:
  mov    -0x8(%rbp),%rax
  lea    D126(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L97
  lea    D51(%rip),%rax
  jmp    L124
L97:
  mov    -0x8(%rbp),%rax
  lea    D97(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L105
  lea    D51(%rip),%rax
  jmp    L124
L105:
  mov    -0x8(%rbp),%rax
  lea    D43(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L161
  lea    D92(%rip),%rax
  jmp    L124
L161:
  mov    -0x8(%rbp),%rax
  lea    D9(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L142
  lea    D17(%rip),%rax
  jmp    L124
L142:
  mov    $0x0,%eax
L124:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D93
type: string
name: retrieve_data
arguments: data_tag: D129
type: string
name: retrieve_data
arguments: data_tag: D15
type: string
name: retrieve_data
arguments: data_tag: D32
type: string
name: retrieve_data
arguments: data_tag: D0
type: string
name: retrieve_data
arguments: data_tag: D16
type: string
name: retrieve_data
arguments: data_tag: D77
type: string
name: retrieve_data
arguments: data_tag: D24
type: string
name: retrieve_data
arguments: data_tag: D126
type: string
name: retrieve_data
arguments: data_tag: D51
type: string
name: retrieve_data
arguments: data_tag: D97
type: string
name: retrieve_data
arguments: data_tag: D43
type: string
name: retrieve_data
arguments: data_tag: D92
type: string
name: retrieve_data
arguments: data_tag: D9
type: string
name: retrieve_data
arguments: data_tag: D17
type: string

tool: D93: .html

tool: D129: text/html; charset=utf-8

tool: D15: .css

tool: D32: text/css; charset=utf-8

tool: D0: .js

tool: D16: text/javascript; charset=utf-8

tool: D77: .png

tool: D24: image/png

tool: D126: .jpg

tool: D51: image/jpeg

tool: D97: .jpeg

tool: D43: .gif

tool: D92: image/gif

tool: D9: .ico

tool: D17: image/vnd.microsoft.icon

assistant: ```c
char const *path_exttype(char const *const ext) {
  if (!ext)
    return NULL;
  if (0 == strcasecmp(ext, ".html"))
    return "text/html; charset=utf-8";
  if (0 == strcasecmp(ext, ".css"))
    return "text/css; charset=utf-8";
  if (0 == strcasecmp(ext, ".js"))
    return "text/javascript; charset=utf-8";
  if (0 == strcasecmp(ext, ".png"))
    return "image/png";
  if (0 == strcasecmp(ext, ".jpg"))
    return "image/jpeg";
  if (0 == strcasecmp(ext, ".jpeg"))
    return "image/jpeg";
  if (0 == strcasecmp(ext, ".gif"))
    return "image/gif";
  if (0 == strcasecmp(ext, ".ico"))
    return "image/vnd.microsoft.icon";
  return NULL;
}
```