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    L27
  mov    $0x0,%eax
  jmp    L141
L27:
  mov    -0x8(%rbp),%rax
  lea    D58(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L131
  mov    -0x8(%rbp),%rax
  lea    D142(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L25
L131:
  lea    D149(%rip),%rax
  jmp    L141
L25:
  mov    -0x8(%rbp),%rax
  lea    D114(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L187
  mov    -0x8(%rbp),%rax
  lea    D172(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L91
L187:
  lea    D178(%rip),%rax
  jmp    L141
L91:
  mov    -0x8(%rbp),%rax
  lea    D151(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L69
  lea    D27(%rip),%rax
  jmp    L141
L69:
  mov    -0x8(%rbp),%rax
  lea    D45(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L249
  lea    D9(%rip),%rax
  jmp    L141
L249:
  mov    -0x8(%rbp),%rax
  lea    D92(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L19
  lea    D101(%rip),%rax
  jmp    L141
L19:
  mov    -0x8(%rbp),%rax
  lea    D208(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L146
  lea    D88(%rip),%rax
  jmp    L141
L146:
  mov    -0x8(%rbp),%rax
  lea    D33(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L32
  lea    D56(%rip),%rax
  jmp    L141
L32:
  mov    -0x8(%rbp),%rax
  lea    D152(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L8
  lea    D86(%rip),%rax
  jmp    L141
L8:
  mov    -0x8(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L240
  mov    -0x8(%rbp),%rax
  lea    D147(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L248
L240:
  lea    D87(%rip),%rax
  jmp    L141
L248:
  mov    -0x8(%rbp),%rax
  lea    D222(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L120
  lea    D130(%rip),%rax
  jmp    L141
L120:
  mov    $0x0,%eax
L141:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D58
type_guessed: string
name: unpack_data
arguments: data_tag: D142
type_guessed: string
name: unpack_data
arguments: data_tag: D149
type_guessed: string
name: unpack_data
arguments: data_tag: D114
type_guessed: string
name: unpack_data
arguments: data_tag: D172
type_guessed: string
name: unpack_data
arguments: data_tag: D178
type_guessed: string
name: unpack_data
arguments: data_tag: D151
type_guessed: string
name: unpack_data
arguments: data_tag: D27
type_guessed: string
name: unpack_data
arguments: data_tag: D45
type_guessed: string
name: unpack_data
arguments: data_tag: D9
type_guessed: string
name: unpack_data
arguments: data_tag: D92
type_guessed: string
name: unpack_data
arguments: data_tag: D101
type_guessed: string
name: unpack_data
arguments: data_tag: D208
type_guessed: string
name: unpack_data
arguments: data_tag: D88
type_guessed: string
name: unpack_data
arguments: data_tag: D33
type_guessed: string
name: unpack_data
arguments: data_tag: D56
type_guessed: string
name: unpack_data
arguments: data_tag: D152
type_guessed: string
name: unpack_data
arguments: data_tag: D86
type_guessed: string
name: unpack_data
arguments: data_tag: D127
type_guessed: string
name: unpack_data
arguments: data_tag: D147
type_guessed: string
name: unpack_data
arguments: data_tag: D87
type_guessed: string
name: unpack_data
arguments: data_tag: D222
type_guessed: string
name: unpack_data
arguments: data_tag: D130
type_guessed: string

tool: D58: .html

tool: D142: .htm

tool: D149: text/html

tool: D114: .jpg

tool: D172: .jpeg

tool: D178: image/jpeg

tool: D151: .gif

tool: D27: image/gif

tool: D45: .png

tool: D9: image/png

tool: D92: .css

tool: D101: text/css

tool: D208: .au

tool: D88: audio/basic

tool: D33: .wav

tool: D56: audio/wav

tool: D152: .avi

tool: D86: video/x-msvideo

tool: D127: .mpeg

tool: D147: .mpg

tool: D87: video/mpeg

tool: D222: .mp3

tool: D130: audio/mpeg

assistant: ```c
char *get_mime_type(char *name) {
  char *ext = strrchr(name, '.');
  if (!ext)
    return NULL;
  if (strcmp(ext, ".html") == 0 || strcmp(ext, ".htm") == 0)
    return "text/html";
  if (strcmp(ext, ".jpg") == 0 || strcmp(ext, ".jpeg") == 0)
    return "image/jpeg";
  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";
  return NULL;
}
```