user: Translate the below assembly code into C programming language:

```asm
<path_exttype>:
  endbr64
  test   %rdi,%rdi
  je     L46
  push   %rbp
  lea    D59(%rip),%rsi
  mov    %rdi,%rbp
  call   <strcasecmp@plt>
  mov    %rax,%r8
  lea    D148(%rip),%rax
  test   %r8,%r8
  jne    L31
L49:
  pop    %rbp
  ret
  xchg   %ax,%ax
L31:
  lea    D47(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%r8
  lea    D149(%rip),%rax
  test   %r8,%r8
  je     L49
  lea    D115(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%r8
  lea    D50(%rip),%rax
  test   %r8,%r8
  je     L49
  lea    D113(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%r8
  lea    D96(%rip),%rax
  test   %r8,%r8
  je     L49
  lea    D23(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  je     L14
  lea    D103(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  je     L14
  lea    D135(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%r8
  lea    D9(%rip),%rax
  test   %r8,%r8
  je     L49
  lea    D120(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L26
  lea    D6(%rip),%rax
  pop    %rbp
  ret
  nopl   0x0(%rax)
L26:
  xor    %eax,%eax
  pop    %rbp
  ret
  nopl   0x0(%rax)
L14:
  lea    D53(%rip),%rax
  pop    %rbp
  ret
  nopl   0x0(%rax)
L46:
  xor    %eax,%eax
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D59
type: string
name: disassemble_data
arguments: data_tag: D148
type: string
name: disassemble_data
arguments: data_tag: D47
type: string
name: disassemble_data
arguments: data_tag: D149
type: string
name: disassemble_data
arguments: data_tag: D115
type: string
name: disassemble_data
arguments: data_tag: D50
type: string
name: disassemble_data
arguments: data_tag: D113
type: string
name: disassemble_data
arguments: data_tag: D96
type: string
name: disassemble_data
arguments: data_tag: D23
type: string
name: disassemble_data
arguments: data_tag: D103
type: string
name: disassemble_data
arguments: data_tag: D135
type: string
name: disassemble_data
arguments: data_tag: D9
type: string
name: disassemble_data
arguments: data_tag: D120
type: string
name: disassemble_data
arguments: data_tag: D6
type: string
name: disassemble_data
arguments: data_tag: D53
type: string

tool: D59: .html

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

tool: D47: .css

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

tool: D115: .js

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

tool: D113: .png

tool: D96: image/png

tool: D23: .jpg

tool: D103: .jpeg

tool: D135: .gif

tool: D9: image/gif

tool: D120: .ico

tool: D6: image/vnd.microsoft.icon

tool: D53: image/jpeg

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;
}
```