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

```asm
<send_headers>:
  endbr64
  push   %r14
  lea    D93(%rip),%r14
  push   %r13
  push   %r12
  mov    %rdx,%r12
  mov    %edi,%edx
  lea    D98(%rip),%rdi
  push   %rbp
  mov    %rcx,%rbp
  mov    %rsi,%rcx
  lea    D119(%rip),%rsi
  push   %rbx
  mov    %r8,%rbx
  sub    $0x90,%rsp
  mov    %r9,0x8(%rsp)
  lea    0x20(%rsp),%r13
  mov    %fs:0x28,%rax
  mov    %rax,0x88(%rsp)
  xor    %eax,%eax
  call   <printf@plt>
  lea    D115(%rip),%rsi
  lea    D33(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %edi,%edi
  call   <time@plt>
  lea    0x18(%rsp),%rdi
  mov    %rax,0x18(%rsp)
  call   <gmtime@plt>
  mov    $0x64,%esi
  mov    %r13,%rdi
  mov    %r14,%rdx
  mov    %eax,%ecx
  call   <strftime@plt>
  xor    %eax,%eax
  mov    %r13,%rsi
  lea    D112(%rip),%rdi
  call   <printf@plt>
  test   %r12,%r12
  je     L44
  mov    %r12,%rsi
  lea    D105(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L44:
  test   %rbp,%rbp
  je     L4
  mov    %rbp,%rsi
  lea    D43(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L4:
  test   %rbx,%rbx
  js     L1
  mov    %ebx,%esi
  lea    D90(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L1:
  cmpq   $0xffffffffffffffff,0x8(%rsp)
  je     L6
  lea    0x8(%rsp),%rdi
  call   <gmtime@plt>
  mov    $0x64,%esi
  mov    %r13,%rdi
  mov    %r14,%rdx
  mov    %eax,%ecx
  call   <strftime@plt>
  mov    %r13,%rsi
  lea    D106(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L6:
  lea    D39(%rip),%rdi
  call   <puts@plt>
  lea    D12(%rip),%rdi
  call   <puts@plt>
  mov    0x88(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L19
  add    $0x90,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L19:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D93
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D98
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D119
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D115
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D33
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D112
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D105
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D43
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D90
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D106
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D39
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D12
type_guessed: string

tool: D93: %a, %d %b %Y %H:%M:%S GMT

tool: D98: %s %d %s


tool: D119: HTTP/1.0

tool: D115: micro_httpd

tool: D33: Server: %s


tool: D112: Date: %s


tool: D105: %s


tool: D43: Content-Type: %s


tool: D90: Content-Length: %lld


tool: D106: Last-Modified: %s


tool: D39: Connection: close

tool: D12: 

assistant: ```c
void send_headers(int status, char *title, char *extra_header, char *mime_type, off_t length, time_t mod) {
  time_t now;
  char timebuf[100];
  (void)printf("%s %d %s\015\012", "HTTP/1.0", status, title);
  (void)printf("Server: %s\015\012", "micro_httpd");
  now = time((time_t *)0);
  (void)strftime(timebuf, sizeof(timebuf), "%a, %d %b %Y %H:%M:%S GMT", gmtime(&now));
  (void)printf("Date: %s\015\012", timebuf);
  if (extra_header != (char *)0)
    (void)printf("%s\015\012", extra_header);
  if (mime_type != (char *)0)
    (void)printf("Content-Type: %s\015\012", mime_type);
  if (length >= 0)
    (void)printf("Content-Length: %lld\015\012", (int64_t)length);
  if (mod != (time_t)-1) {
    (void)strftime(timebuf, sizeof(timebuf), "%a, %d %b %Y %H:%M:%S GMT", gmtime(&mod));
    (void)printf("Last-Modified: %s\015\012", timebuf);
  }
  (void)printf("Connection: close\015\012");
  (void)printf("\015\012");
}
```