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

```asm
<server_connection>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0xc8,%rsp
  mov    %edi,-0xc4(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  mov    $0x1,%edi
  call   <xmalloc@plt>
  mov    %rax,-0xb8(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D15(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L11
L25:
  cmpl   $0xffffffff,-0xbc(%rbp)
  je     L17
  lea    -0xa0(%rbp),%rax
  mov    $0xa,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0xb0(%rbp)
  cmpq   $0x0,-0xb0(%rbp)
  jne    L42
  mov    -0xb8(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  lea    -0xa0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %ebx,%eax
  lea    0x1(%rax),%edx
  mov    -0xb8(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <xrealloc@plt>
  mov    %rax,-0xb8(%rbp)
  mov    -0xb8(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  lea    -0xa0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  lea    (%rbx,%rax,1),%edx
  lea    -0xa0(%rbp),%rcx
  mov    -0xb8(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncat@plt>
  jmp    L11
L42:
  mov    -0xb0(%rbp),%rax
  add    $0x1,%rax
  mov    %rax,-0xa8(%rbp)
  mov    -0xb0(%rbp),%rax
  movb   $0x0,(%rax)
  mov    -0xb8(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  lea    -0xa0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %ebx,%eax
  lea    0x1(%rax),%edx
  mov    -0xb8(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <xrealloc@plt>
  mov    %rax,-0xb8(%rbp)
  mov    -0xb8(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  lea    -0xa0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  lea    (%rbx,%rax,1),%edx
  lea    -0xa0(%rbp),%rcx
  mov    -0xb8(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncat@plt>
  mov    -0xb8(%rbp),%rdx
  mov    -0xc4(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <handle_message@plt>
  mov    -0xa8(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cmp    $0x1,%eax
  jle    L85
  mov    -0xa8(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  lea    0x1(%rax),%edx
  mov    -0xb8(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <xrealloc@plt>
  mov    %rax,-0xb8(%rbp)
  mov    -0xa8(%rbp),%rdx
  mov    -0xb8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L11
L85:
  mov    -0xb8(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <xrealloc@plt>
  mov    %rax,-0xb8(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D15(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
L11:
  lea    -0xa0(%rbp),%rsi
  mov    -0xc4(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x80,%edx
  mov    %eax,%edi
  call   <recv@plt>
  mov    %eax,-0xbc(%rbp)
  cmpl   $0x0,-0xbc(%rbp)
  jg     L25
  jmp    L30
L17:
  nop
L30:
  nop
  mov    -0x18(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L75
  call   <__stack_chk_fail@plt>
L75:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D15
data_type: string

tool: 

assistant: ```c
void server_connection(int socketfd) {
  char buf[128];
  int len;
  char *msg = xmalloc(sizeof(char));
  strcpy(msg, "");
  while (len = recv(socketfd, &buf, 128, 0), len > 0) {
    if (len == -1) {
      break;
    }
    char *newline = strchr(buf, '\n');
    if (newline == NULL) {
      msg = xrealloc(msg, strlen(msg) + strlen(buf) + 1);
      strncat(msg, buf, strlen(msg) + strlen(buf));
    } else {
      char *rest = &newline[1];
      newline[0] = '\0';
      msg = xrealloc(msg, strlen(msg) + strlen(buf) + 1);
      strncat(msg, buf, strlen(msg) + strlen(buf));
      handle_message(socketfd, msg);
      if (strlen(rest) > 1) {
        msg = xrealloc(msg, strlen(rest) + 1);
        strcpy(msg, rest);
      } else {
        msg = xrealloc(msg, sizeof(char));
        strcpy(msg, "");
      }
    }
  }
}
```