user: What is the c source code of the assembly code below:

```asm
<application_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)
  je     L21
  mov    -0x8(%rbp),%rax
  cmp    -0x18(%rbp),%rax
  jne    L90
L21:
  lea    D51(%rip),%rax
  jmp    L123
L90:
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  lea    D52(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L112
  lea    D110(%rip),%rax
  jmp    L123
L112:
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  lea    D108(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L111
  lea    D57(%rip),%rax
  jmp    L123
L111:
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  lea    D115(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L33
  lea    D54(%rip),%rax
  jmp    L123
L33:
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  lea    D131(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L75
  lea    D74(%rip),%rax
  jmp    L123
L75:
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  lea    D41(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L13
  lea    D21(%rip),%rax
  jmp    L123
L13:
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  lea    D136(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L100
  lea    D28(%rip),%rax
  jmp    L123
L100:
  lea    D9(%rip),%rax
L123:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D51
type_infered: string
name: disassemble_data
arguments: tag: D52
type_infered: string
name: disassemble_data
arguments: tag: D110
type_infered: string
name: disassemble_data
arguments: tag: D108
type_infered: string
name: disassemble_data
arguments: tag: D57
type_infered: string
name: disassemble_data
arguments: tag: D115
type_infered: string
name: disassemble_data
arguments: tag: D54
type_infered: string
name: disassemble_data
arguments: tag: D131
type_infered: string
name: disassemble_data
arguments: tag: D74
type_infered: string
name: disassemble_data
arguments: tag: D41
type_infered: string
name: disassemble_data
arguments: tag: D21
type_infered: string
name: disassemble_data
arguments: tag: D136
type_infered: string
name: disassemble_data
arguments: tag: D28
type_infered: string
name: disassemble_data
arguments: tag: D9
type_infered: string

tool: 

tool: D52: html

tool: D110: text/html

tool: D108: xml

tool: D57: application/xml

tool: D115: js

tool: D54: application/javascript

tool: D131: css

tool: D74: text/css

tool: D41: jpg

tool: D21: image/jpeg

tool: D136: png

tool: D28: image/png

tool: D9: text

assistant: ```c
const char *application_type(const char *url) {
  const char *dot = strrchr(url, '.');
  if (!dot || dot == url)
    return "";
  if (strcmp(dot + 1, "html") == 0) {
    return "text/html";
  } else if (strcmp(dot + 1, "xml") == 0) {
    return "application/xml";
  } else if (strcmp(dot + 1, "js") == 0) {
    return "application/javascript";
  } else if (strcmp(dot + 1, "css") == 0) {
    return "text/css";
  } else if (strcmp(dot + 1, "jpg") == 0) {
    return "image/jpeg";
  } else if (strcmp(dot + 1, "png") == 0) {
    return "image/png";
  }
  return "text";
}
```