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

```asm
<get_mime_type>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x2e,%esi
  mov    %rax,%rdi
  call   <strrchr@plt>
  mov    %rax,-0x8(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  jne    L250
  lea    D287(%rip),%rax
  jmp    L45
L250:
  mov    -0x8(%rbp),%rax
  lea    D164(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L299
  mov    -0x8(%rbp),%rax
  lea    D6(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L85
L299:
  lea    D16(%rip),%rax
  jmp    L45
L85:
  mov    -0x8(%rbp),%rax
  lea    D174(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L142
  mov    -0x8(%rbp),%rax
  lea    D106(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L142
  mov    -0x8(%rbp),%rax
  lea    D3(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L293
L142:
  lea    D11(%rip),%rax
  jmp    L45
L293:
  mov    -0x8(%rbp),%rax
  lea    D317(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L146
  lea    D287(%rip),%rax
  jmp    L45
L146:
  mov    -0x8(%rbp),%rax
  lea    D288(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L76
  lea    D298(%rip),%rax
  jmp    L45
L76:
  mov    -0x8(%rbp),%rax
  lea    D284(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L241
  lea    D205(%rip),%rax
  jmp    L45
L241:
  mov    -0x8(%rbp),%rax
  lea    D124(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L227
  lea    D99(%rip),%rax
  jmp    L45
L227:
  mov    -0x8(%rbp),%rax
  lea    D150(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L294
  lea    D307(%rip),%rax
  jmp    L45
L294:
  mov    -0x8(%rbp),%rax
  lea    D227(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L192
  lea    D242(%rip),%rax
  jmp    L45
L192:
  mov    -0x8(%rbp),%rax
  lea    D202(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L278
  lea    D289(%rip),%rax
  jmp    L45
L278:
  mov    -0x8(%rbp),%rax
  lea    D229(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L297
  lea    D275(%rip),%rax
  jmp    L45
L297:
  mov    -0x8(%rbp),%rax
  lea    D123(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L86
  mov    -0x8(%rbp),%rax
  lea    D210(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L172
L86:
  lea    D297(%rip),%rax
  jmp    L45
L172:
  mov    -0x8(%rbp),%rax
  lea    D48(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L51
  lea    D156(%rip),%rax
  jmp    L45
L51:
  mov    -0x8(%rbp),%rax
  lea    D244(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L247
  lea    D287(%rip),%rax
  jmp    L45
L247:
  lea    D287(%rip),%rax
L45:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D287
type_guessed: string
name: disassemble_data
arguments: label: D164
type_guessed: string
name: disassemble_data
arguments: label: D6
type_guessed: string
name: disassemble_data
arguments: label: D16
type_guessed: string
name: disassemble_data
arguments: label: D174
type_guessed: string
name: disassemble_data
arguments: label: D106
type_guessed: string
name: disassemble_data
arguments: label: D3
type_guessed: string
name: disassemble_data
arguments: label: D11
type_guessed: string
name: disassemble_data
arguments: label: D317
type_guessed: string
name: disassemble_data
arguments: label: D288
type_guessed: string
name: disassemble_data
arguments: label: D298
type_guessed: string
name: disassemble_data
arguments: label: D284
type_guessed: string
name: disassemble_data
arguments: label: D205
type_guessed: string
name: disassemble_data
arguments: label: D124
type_guessed: string
name: disassemble_data
arguments: label: D99
type_guessed: string
name: disassemble_data
arguments: label: D150
type_guessed: string
name: disassemble_data
arguments: label: D307
type_guessed: string
name: disassemble_data
arguments: label: D227
type_guessed: string
name: disassemble_data
arguments: label: D242
type_guessed: string
name: disassemble_data
arguments: label: D202
type_guessed: string
name: disassemble_data
arguments: label: D289
type_guessed: string
name: disassemble_data
arguments: label: D229
type_guessed: string
name: disassemble_data
arguments: label: D275
type_guessed: string
name: disassemble_data
arguments: label: D123
type_guessed: string
name: disassemble_data
arguments: label: D210
type_guessed: string
name: disassemble_data
arguments: label: D297
type_guessed: string
name: disassemble_data
arguments: label: D48
type_guessed: string
name: disassemble_data
arguments: label: D156
type_guessed: string
name: disassemble_data
arguments: label: D244
type_guessed: string

tool: D287: text/plain

tool: D164: .html

tool: D6: .htm

tool: D16: text/html

tool: D174: .jpg

tool: D106: .jpeg

tool: D3: .JPG

tool: D11: image/jpeg

tool: D317: .txt

tool: D288: .csv

tool: D298: text/csv

tool: D284: .gif

tool: D205: image/gif

tool: D124: .png

tool: D99: image/png

tool: D150: .css

tool: D307: text/css

tool: D227: .au

tool: D242: audio/basic

tool: D202: .wav

tool: D289: audio/wav

tool: D229: .avi

tool: D275: video/x-msvideo

tool: D123: .mpeg

tool: D210: .mpg

tool: D297: video/mpeg

tool: D48: .mp3

tool: D156: audio/mpeg

tool: D244: .cgi

assistant: ```c
char *get_mime_type(char *name) {
  char *ext = strrchr(name, '.');
  if (!ext)
    return "text/plain";
  if (strcmp(ext, ".html") == 0 || strcmp(ext, ".htm") == 0)
    return "text/html";
  if (strcmp(ext, ".jpg") == 0 || strcmp(ext, ".jpeg") == 0 || strcmp(ext, ".JPG") == 0)
    return "image/jpeg";
  if (strcmp(ext, ".txt") == 0)
    return "text/plain";
  if (strcmp(ext, ".csv") == 0)
    return "text/csv";
  if (strcmp(ext, ".gif") == 0)
    return "image/gif";
  if (strcmp(ext, ".png") == 0)
    return "image/png";
  if (strcmp(ext, ".css") == 0)
    return "text/css";
  if (strcmp(ext, ".au") == 0)
    return "audio/basic";
  if (strcmp(ext, ".wav") == 0)
    return "audio/wav";
  if (strcmp(ext, ".avi") == 0)
    return "video/x-msvideo";
  if (strcmp(ext, ".mpeg") == 0 || strcmp(ext, ".mpg") == 0)
    return "video/mpeg";
  if (strcmp(ext, ".mp3") == 0)
    return "audio/mpeg";
  if (strcmp(ext, ".cgi") == 0)
    return "text/plain";
  return "text/plain";
}
```