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

```asm
<end_data_trans>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x40,%rsp
  mov    %edi,-0x1024(%rbp)
  mov    %rsi,-0x1030(%rbp)
  mov    %edx,-0x1028(%rbp)
  mov    %rcx,-0x1038(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x1010(%rbp),%rax
  mov    $0x1000,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  mov    -0x1028(%rbp),%ecx
  mov    -0x1030(%rbp),%rdx
  lea    -0x1010(%rbp),%rax
  mov    %ecx,%r8d
  mov    %rdx,%rcx
  lea    D73(%rip),%rdx
  lea    D56(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    -0x1010(%rbp),%rax
  mov    %rax,%r8
  lea    D19(%rip),%rax
  mov    %rax,%rcx
  mov    $0x1a2,%edx
  lea    D11(%rip),%rax
  mov    %rax,%rsi
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x1010(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %rax,%rdx
  lea    -0x1010(%rbp),%rcx
  mov    -0x1024(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <write@plt>
  mov    %eax,-0x1014(%rbp)
  lea    -0x1010(%rbp),%rax
  mov    $0x1000,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0x1010(%rbp),%rcx
  mov    -0x1024(%rbp),%eax
  mov    $0x1000,%edx
  mov    %rcx,%rsi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <read@plt>
  mov    %eax,-0x1014(%rbp)
  lea    -0x1010(%rbp),%rax
  mov    %rax,%r8
  lea    D19(%rip),%rax
  mov    %rax,%rcx
  mov    $0x1a7,%edx
  lea    D11(%rip),%rax
  mov    %rax,%rsi
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x1010(%rbp),%rax
  mov    $0x6,%edx
  lea    D70(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  mov    -0x1038(%rbp),%rax
  mov    %rax,%rdx
  lea    -0x1010(%rbp),%rax
  mov    $0x1000,%ecx
  mov    (%rax),%rsi
  mov    %rsi,(%rdx)
  mov    %ecx,%esi
  add    %rdx,%rsi
  lea    0x8(%rsi),%rdi
  mov    %ecx,%esi
  add    %rax,%rsi
  add    $0x8,%rsi
  mov    -0x10(%rsi),%rsi
  mov    %rsi,-0x10(%rdi)
  lea    0x8(%rdx),%rdi
  and    $0xfffffffffffffff8,%rdi
  sub    %rdi,%rdx
  sub    %rdx,%rax
  add    %edx,%ecx
  and    $0xfffffff8,%ecx
  shr    $0x3,%ecx
  mov    %ecx,%edx
  mov    %edx,%edx
  mov    %rax,%rsi
  mov    %rdx,%rcx
  rep movsq %ds:(%rsi),%es:(%rdi)
  mov    -0x1014(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L4
  call   <__stack_chk_fail@plt>
L4:
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D73
type_infered: string
name: parse_data
arguments: tag: D56
type_infered: string
name: parse_data
arguments: tag: D19
type_infered: string
name: parse_data
arguments: tag: D11
type_infered: string
name: parse_data
arguments: tag: D62
type_infered: string
name: parse_data
arguments: tag: D70
type_infered: string

tool: D73: --end-data-byJamesL

tool: D56: %s %s %04d

tool: D19: end_data_trans

tool: D11: /scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/princeofdream/debug_src_full/refs/heads/master/network_utils/remote_debug/remote_debug_base.c

tool: D62: --<%s:%d>--<%s>--buffer: %s--


tool: D70: finish

assistant: ```c
int end_data_trans(int fd, char *ext_arg, int cmd_count, char *stat) {
  int ret;
  char buf[4096];
  memset(buf, 0x0, sizeof(buf));
  sprintf(buf, "%s %s %04d", "--end-data-byJamesL", ext_arg, cmd_count);
  printf("--<%s:%d>--<%s>--"
         "buffer: %s"
         "--\n",
         "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/princeofdream/debug_src_full/refs/heads/master/network_utils/remote_debug/remote_debug_base.c", 418, __FUNCTION__, buf);
  ret = write(fd, buf, strlen(buf));
  memset(buf, 0x0, sizeof(buf));
  ret = read(fd, buf, sizeof(buf));
  printf("--<%s:%d>--<%s>--"
         "buffer: %s"
         "--\n",
         "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/princeofdream/debug_src_full/refs/heads/master/network_utils/remote_debug/remote_debug_base.c", 423, __FUNCTION__, buf);
  if (strncmp(buf, "finish", strlen("finish")) != 0) {
  }
  memcpy(stat, buf, sizeof(buf));
  return ret;
}
```