user: Please show me the C implementation that matches the assembly code listed below:

```asm
<send_error>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  add    $0xffffff80,%eax
  cmp    $0xa,%eax
  ja     L96
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D8(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D8(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D50(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
  lea    D137(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
  lea    D131(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
  lea    D76(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
  lea    D139(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
  lea    D122(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
  lea    D112(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
  lea    D72(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  jmp    L4
L96:
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <info_log@plt>
  nop
L4:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D50
data_type: string
name: parse_data
arguments: data_label: D19
data_type: string
name: parse_data
arguments: data_label: D137
data_type: string
name: parse_data
arguments: data_label: D131
data_type: string
name: parse_data
arguments: data_label: D76
data_type: string
name: parse_data
arguments: data_label: D139
data_type: string
name: parse_data
arguments: data_label: D105
data_type: string
name: parse_data
arguments: data_label: D48
data_type: string
name: parse_data
arguments: data_label: D122
data_type: string
name: parse_data
arguments: data_label: D112
data_type: string
name: parse_data
arguments: data_label: D72
data_type: string
name: parse_data
arguments: data_label: D32
data_type: string

tool: D50: send error: EBADF (bad file descriptor)


tool: D19: send error: EAGAIN(would have blocked)


tool: D137: send error: ECONNRESET(connection reset by peer)


tool: D131: send error: EFAULT(invalid userspace address)


tool: D76: send error: EINTR(Interrupted by signal)


tool: D139: send error: EINVAL(Invalid arguement)


tool: D105: send error: EMSGSIZE(message size too big)


tool: D48: send error: ENOTSOCK:(not a socket)


tool: D122: send error: ENOTCONN:(socket not connected


tool: D112: send error: EOPNOTSUPP


tool: D72: send error: EPIPE


tool: D32: Send: (%i)unknown errror


assistant: ```c
void send_error(int err) {
  switch (err) {
  case EBADF: {
    info_log("send error: EBADF (bad file descriptor)\n");
    return;
  }
  case EAGAIN: {
    info_log("send error: EAGAIN(would have blocked)\n");
    return;
  }
  case ECONNRESET: {
    info_log("send error: ECONNRESET(connection reset by peer)\n");
    return;
  }
  case EFAULT: {
    info_log("send error: EFAULT(invalid userspace address)\n");
    return;
  }
  case EINTR: {
    info_log("send error: EINTR(Interrupted by signal)\n");
    return;
  }
  case EINVAL: {
    info_log("send error: EINVAL(Invalid arguement)\n");
    return;
  }
  case EMSGSIZE: {
    info_log("send error: EMSGSIZE(message size too big)\n");
    return;
  }
  case ENOTSOCK: {
    info_log("send error: ENOTSOCK:(not a socket)\n");
    return;
  }
  case ENOTCONN: {
    info_log("send error: ENOTCONN:(socket not connected\n");
    return;
  }
  case EOPNOTSUPP: {
    info_log("send error: EOPNOTSUPP\n");
    return;
  }
  case EPIPE: {
    info_log("send error: EPIPE\n");
    return;
  }
  default: {
    info_log("Send: (%i)unknown errror\n", err);
    return;
  }
  }
}
```