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

```asm
<ok>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0xf50,%rsp
  mov    %edi,%ebp
  mov    %fs:0x28,%rax
  mov    %rax,0x3f48(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rbx
  movabs $0x312e312f50545448,%rax
  movabs $0xd4b4f2031303220,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movw   $0xa,0x10(%rsp)
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    %rbx,%rsi
  mov    %ebp,%edi
  call   <write_socket@plt>
  movabs $0x203a726576726553,%rax
  movabs $0x7672655370747468,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movabs $0x312e312e302f7265,%rax
  mov    %rax,0x10(%rsp)
  movw   $0xa0d,0x18(%rsp)
  movb   $0x0,0x1a(%rsp)
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    %rbx,%rsi
  mov    %ebp,%edi
  call   <write_socket@plt>
  movabs $0x50203a776f6c6c41,%rax
  mov    %rax,(%rsp)
  movl   $0xd54534f,0x8(%rsp)
  movw   $0xa,0xc(%rsp)
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    %rbx,%rsi
  mov    %ebp,%edi
  call   <write_socket@plt>
  movabs $0x2d746e65746e6f43,%rax
  movabs $0x6574203a65707954,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movabs $0xd6c6d74682f7478,%rax
  mov    %rax,0x10(%rsp)
  movw   $0xa,0x18(%rsp)
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    %rbx,%rsi
  mov    %ebp,%edi
  call   <write_socket@plt>
  lea    0x1fa0(%rsp),%r12
  movabs $0x483c3e4c4d54483c,%rax
  movabs $0x5449543c3e444145,%rdx
  mov    %rax,0x1fa0(%rsp)
  mov    %rdx,0x1fa8(%rsp)
  movabs $0x2054534f503e454c,%rax
  movabs $0x4c5449542f3c4b4f,%rdx
  mov    %rax,0x1fb0(%rsp)
  mov    %rdx,0x1fb8(%rsp)
  movabs $0x444145482f3c3e45,%rax
  mov    %rax,0x1fc0(%rsp)
  movl   $0xa0d3e,0x1fc8(%rsp)
  mov    %r12,%rdi
  call   <strlen@plt>
  cltq
  add    %r12,%rax
  movabs $0x503c3e59444f423c,%rsi
  movabs $0x4b4f2054534f503e,%rdi
  mov    %rsi,(%rax)
  mov    %rdi,0x8(%rax)
  movabs $0x422f3c3e502f3c2e,%rsi
  movabs $0x54482f3c3e59444f,%rdi
  mov    %rsi,0x10(%rax)
  mov    %rdi,0x18(%rax)
  movl   $0xd3e4c4d,0x20(%rax)
  movw   $0xa,0x24(%rax)
  mov    %r12,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    D1(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    %rbx,%rsi
  mov    %ebp,%edi
  call   <write_socket@plt>
  movw   $0xa0d,(%rsp)
  movb   $0x0,0x2(%rsp)
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    %rbx,%rsi
  mov    %ebp,%edi
  call   <write_socket@plt>
  mov    %r12,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  mov    %r12,%rsi
  mov    %ebp,%edi
  call   <write_socket@plt>
  mov    0x3f48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L6
  add    $0x3f50,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L6:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: tag: D1
type: string

tool: D1: Content-Length: %ld


assistant: ```c
void ok(int client_sockfd) {
  char buffer[8096];
  char body[8096];
  sprintf(buffer, "HTTP/1.1 201 OK\r\n");
  write_socket(client_sockfd, buffer, strlen(buffer));
  sprintf(buffer, "Server: httpServer/0.1.1\r\n");
  write_socket(client_sockfd, buffer, strlen(buffer));
  sprintf(buffer, "Allow: POST\r\n");
  write_socket(client_sockfd, buffer, strlen(buffer));
  sprintf(buffer, "Content-Type: text/html\r\n");
  write_socket(client_sockfd, buffer, strlen(buffer));
  sprintf(body, "<HTML><HEAD><TITLE>POST OK</TITLE></HEAD>\r\n");
  sprintf(body + strlen(body), "<BODY><P>POST OK.</P></BODY></HTML>\r\n");
  sprintf(buffer, "Content-Length: %ld\r\n", strlen(body));
  write_socket(client_sockfd, buffer, strlen(buffer));
  sprintf(buffer, "\r\n");
  write_socket(client_sockfd, buffer, strlen(buffer));
  write_socket(client_sockfd, body, strlen(body));
}
```