user: 请将以下的汇编代码转换成C语言代码：

```asm
<time_rfc1123>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xe0,%rsp
  mov    %edi,-0xd4(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D39(%rip),%rax
  mov    %rax,-0xb0(%rbp)
  lea    D151(%rip),%rax
  mov    %rax,-0xa8(%rbp)
  lea    D32(%rip),%rax
  mov    %rax,-0xa0(%rbp)
  lea    D11(%rip),%rax
  mov    %rax,-0x98(%rbp)
  lea    D56(%rip),%rax
  mov    %rax,-0x90(%rbp)
  lea    D75(%rip),%rax
  mov    %rax,-0x88(%rbp)
  lea    D140(%rip),%rax
  mov    %rax,-0x80(%rbp)
  lea    D114(%rip),%rax
  mov    %rax,-0x70(%rbp)
  lea    D153(%rip),%rax
  mov    %rax,-0x68(%rbp)
  lea    D78(%rip),%rax
  mov    %rax,-0x60(%rbp)
  lea    D160(%rip),%rax
  mov    %rax,-0x58(%rbp)
  lea    D94(%rip),%rax
  mov    %rax,-0x50(%rbp)
  lea    D172(%rip),%rax
  mov    %rax,-0x48(%rbp)
  lea    D54(%rip),%rax
  mov    %rax,-0x40(%rbp)
  lea    D133(%rip),%rax
  mov    %rax,-0x38(%rbp)
  lea    D125(%rip),%rax
  mov    %rax,-0x30(%rbp)
  lea    D86(%rip),%rax
  mov    %rax,-0x28(%rbp)
  lea    D104(%rip),%rax
  mov    %rax,-0x20(%rbp)
  lea    D182(%rip),%rax
  mov    %rax,-0x18(%rbp)
  movl   $0x1d,-0xc4(%rbp)
  mov    -0xc4(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0xc0(%rbp)
  lea    -0xd4(%rbp),%rax
  mov    %rax,%rdi
  call   <gmtime@plt>
  mov    %rax,-0xb8(%rbp)
  mov    -0xc4(%rbp),%eax
  lea    0x1(%rax),%esi
  mov    -0xb8(%rbp),%rdx
  mov    -0xc0(%rbp),%rax
  mov    %rdx,%rcx
  lea    D37(%rip),%rdx
  mov    %rax,%rdi
  call   <strftime@plt>
  mov    -0xb8(%rbp),%rax
  mov    (%rax),%rax
  mov    -0xb0(%rbp,%rax,8),%rcx
  mov    -0xc0(%rbp),%rax
  mov    $0x3,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  mov    -0xb8(%rbp),%rax
  mov    0x8(%rax),%rax
  mov    -0x70(%rbp,%rax,8),%rax
  mov    -0xc0(%rbp),%rdx
  lea    0x8(%rdx),%rcx
  mov    $0x3,%edx
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  mov    -0xc4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0xc0(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  mov    -0xc0(%rbp),%rax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L3
  call   <__stack_chk_fail@plt>
L3:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: label: D39
type: string
name: retrieve_data
arguments: label: D151
type: string
name: retrieve_data
arguments: label: D32
type: string
name: retrieve_data
arguments: label: D11
type: string
name: retrieve_data
arguments: label: D56
type: string
name: retrieve_data
arguments: label: D75
type: string
name: retrieve_data
arguments: label: D140
type: string
name: retrieve_data
arguments: label: D114
type: string
name: retrieve_data
arguments: label: D153
type: string
name: retrieve_data
arguments: label: D78
type: string
name: retrieve_data
arguments: label: D160
type: string
name: retrieve_data
arguments: label: D94
type: string
name: retrieve_data
arguments: label: D172
type: string
name: retrieve_data
arguments: label: D54
type: string
name: retrieve_data
arguments: label: D133
type: string
name: retrieve_data
arguments: label: D125
type: string
name: retrieve_data
arguments: label: D86
type: string
name: retrieve_data
arguments: label: D104
type: string
name: retrieve_data
arguments: label: D182
type: string
name: retrieve_data
arguments: label: D37
type: string

tool: D39: Sun

tool: D151: Mon

tool: D32: Tue

tool: D11: Wed

tool: D56: Thu

tool: D75: Fri

tool: D140: Sat

tool: D114: Jan

tool: D153: Feb

tool: D78: Mar

tool: D160: Apr

tool: D94: May

tool: D172: Jun

tool: D54: Jul

tool: D133: Aug

tool: D125: Sep

tool: D86: Oct

tool: D104: Nov

tool: D182: Dec

tool: D37: ---, %d --- %Y %H:%M:%S GMT

assistant: ```c
char *time_rfc1123(time_t t) {
  char *days_names[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
  char *month_names[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
  const int date_len = 29;
  struct tm *tmp;
  char *outstr = malloc(date_len + 1);
  tmp = gmtime(&t);
  strftime(outstr, date_len + 1, "---, %d --- %Y %H:%M:%S GMT", tmp);
  memcpy(outstr, days_names[tmp->tm_wday], 3);
  memcpy(outstr + 8, month_names[tmp->tm_mon], 3);
  outstr[date_len] = '\0';
  return outstr;
}
```