user: 请从给定的汇编指令推导出C源代码：

```asm
<sendbad>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %edx,-0x18(%rbp)
  mov    -0x18(%rbp),%edx
  mov    -0x20(%rbp),%rcx
  mov    -0x14(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <sendheader@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jns    L40
  mov    -0x4(%rbp),%eax
  jmp    L35
L40:
  mov    -0x20(%rbp),%rax
  lea    D65(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x14(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <senddata@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jns    L47
  mov    -0x4(%rbp),%eax
  jmp    L35
L47:
  mov    -0x20(%rbp),%rax
  lea    D108(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x14(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <senddata@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jns    L67
  mov    -0x4(%rbp),%eax
  jmp    L35
L67:
  cmpl   $0x19e,-0x18(%rbp)
  jne    L61
  mov    -0x20(%rbp),%rax
  lea    D107(%rip),%rdx
  mov    %rdx,%rcx
  lea    D38(%rip),%rdx
  lea    D0(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
L61:
  cmpl   $0x194,-0x18(%rbp)
  jne    L3
  mov    -0x20(%rbp),%rax
  lea    D41(%rip),%rdx
  mov    %rdx,%rcx
  lea    D82(%rip),%rdx
  lea    D0(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
L3:
  cmpl   $0x190,-0x18(%rbp)
  jne    L82
  mov    -0x20(%rbp),%rax
  lea    D93(%rip),%rdx
  mov    %rdx,%rcx
  lea    D79(%rip),%rdx
  lea    D0(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
L82:
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %rax,%rdx
  mov    -0x20(%rbp),%rcx
  mov    -0x14(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <senddata@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
L35:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D65
type: string
name: retrieve_data
arguments: tag: D108
type: string
name: retrieve_data
arguments: tag: D107
type: string
name: retrieve_data
arguments: tag: D38
type: string
name: retrieve_data
arguments: tag: D0
type: string
name: retrieve_data
arguments: tag: D41
type: string
name: retrieve_data
arguments: tag: D82
type: string
name: retrieve_data
arguments: tag: D93
type: string
name: retrieve_data
arguments: tag: D79
type: string

tool: D65: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD><TITLE>

tool: D108: </TITLE></HEAD><BODY>
<H1>

tool: D107: The URI information is to long.

tool: D38: Request-URI Too Long

tool: D0: </H1>"%s"<P>
%s<P>
</BODY></HTML>


tool: D41: File Does not exist on this server.

tool: D82: Not Found

tool: D93: Your browser sent a request that this server could not understand.

tool: D79: Bad Request

assistant: ```c
int sendbad(fd, info, err)
int fd;
char *info;
int err;
{
  int i;
  i = sendheader(fd, info, err);
  if (i < 0)
    return (i);
  sprintf(info, "text/html; charset=iso-8859-1\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<HTML><HEAD><TITLE>");
  i = senddata(fd, info, strlen(info));
  if (i < 0)
    return (i);
  sprintf(info, "</TITLE></HEAD><BODY>\n<H1>");
  i = senddata(fd, info, strlen(info));
  if (i < 0)
    return (i);
  if (err == 414) {
    sprintf(info, "</H1>\"%s\"<P>\n%s<P>\n</BODY></HTML>\n", "Request-URI Too Long", "The URI information is to long.");
  }
  if (err == 404) {
    sprintf(info, "</H1>\"%s\"<P>\n%s<P>\n</BODY></HTML>\n", "Not Found", "File Does not exist on this server.");
  }
  if (err == 400) {
    sprintf(info, "</H1>\"%s\"<P>\n%s<P>\n</BODY></HTML>\n", "Bad Request", "Your browser sent a request that this server could not understand.");
  }
  i = senddata(fd, info, strlen(info));
  return (i);
}
```