user: 下面的汇编指令对应的C源代码是什么：

```asm
<unix_crlfcpy>:
  endbr64
  push   %r15
  mov    %rsi,%r15
  push   %r14
  push   %r13
  mov    %rdi,%r13
  push   %r12
  push   %rbp
  mov    %rdx,%rbp
  push   %rbx
  mov    %rcx,%rbx
  sub    $0x8,%rsp
  test   %rcx,%rcx
  je     L248
  lea    -0x1(%rcx),%r14
  cmp    $0xe,%r14
  jbe    L62
  pxor   %xmm3,%xmm3
  pxor   %xmm5,%xmm5
  pxor   %xmm4,%xmm4
  mov    %rdx,%rax
  mov    %rcx,%rdx
  movdqa D1(%rip),%xmm7
  movdqa D11(%rip),%xmm6
  pxor   %xmm2,%xmm2
  and    $0xfffffffffffffff0,%rdx
  add    %rbp,%rdx
  nopw   0x0(%rax,%rax,1)
L64:
  movdqu (%rax),%xmm0
  add    $0x10,%rax
  pcmpeqb %xmm7,%xmm0
  pand   %xmm6,%xmm0
  movdqa %xmm0,%xmm1
  punpckhbw %xmm5,%xmm0
  punpcklbw %xmm5,%xmm1
  movdqa %xmm0,%xmm8
  punpckhwd %xmm4,%xmm0
  movdqa %xmm1,%xmm9
  punpckhwd %xmm4,%xmm1
  punpcklwd %xmm4,%xmm8
  movdqa %xmm1,%xmm10
  punpcklwd %xmm4,%xmm9
  punpckhdq %xmm2,%xmm1
  punpckldq %xmm2,%xmm10
  paddq  %xmm10,%xmm1
  movdqa %xmm9,%xmm10
  punpckhdq %xmm2,%xmm9
  punpckldq %xmm2,%xmm10
  paddq  %xmm10,%xmm9
  paddq  %xmm9,%xmm1
  movdqa %xmm8,%xmm9
  punpckhdq %xmm2,%xmm8
  punpckldq %xmm2,%xmm9
  paddq  %xmm9,%xmm8
  movdqa %xmm0,%xmm9
  punpckhdq %xmm2,%xmm0
  punpckldq %xmm2,%xmm9
  paddq  %xmm3,%xmm0
  paddq  %xmm9,%xmm8
  paddq  %xmm8,%xmm1
  movdqa %xmm1,%xmm3
  paddq  %xmm0,%xmm3
  cmp    %rax,%rdx
  jne    L64
  movdqa %xmm3,%xmm0
  mov    %rbx,%rax
  psrldq $0x8,%xmm0
  and    $0xfffffffffffffff0,%rax
  paddq  %xmm0,%xmm3
  lea    0x0(%rbp,%rax,1),%rdx
  movq   %xmm3,%r12
  add    %rbx,%r12
  cmp    %rax,%rbx
  je     L235
L185:
  xor    %ecx,%ecx
  cmpb   $0xa,(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0x1(%rax),%rcx
  cmp    %rbx,%rcx
  jae    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0x1(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0x2(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0x2(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0x3(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0x3(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0x4(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0x4(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0x5(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0x5(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0x6(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0x6(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0x7(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0x7(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0x8(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0x8(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0x9(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0x9(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0xa(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0xa(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0xb(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0xb(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0xc(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0xc(%rdx)
  sete   %cl
  add    %rcx,%r12
  lea    0xd(%rax),%rcx
  cmp    %rcx,%rbx
  jbe    L235
  xor    %ecx,%ecx
  cmpb   $0xa,0xd(%rdx)
  sete   %cl
  add    $0xe,%rax
  add    %rcx,%r12
  cmp    %rax,%rbx
  jbe    L235
  xor    %eax,%eax
  cmpb   $0xa,0xe(%rdx)
  sete   %al
  add    %rax,%r12
  nopl   0x0(%rax,%rax,1)
L235:
  mov    0x0(%r13),%rdx
  test   %rdx,%rdx
  je     L216
  cmp    %r12,(%r15)
  jb     L321
L179:
  mov    %r14,%rdi
  nopl   0x0(%rax)
L139:
  movzbl 0x0(%rbp),%ecx
L124:
  lea    0x1(%rdx),%rsi
  lea    0x1(%rbp),%r8
  mov    %rsi,%rax
  cmp    $0xa,%cl
  je     L316
  cmp    $0xd,%cl
  jne    L177
  movb   $0xd,(%rdx)
  test   %rdi,%rdi
  jne    L34
L219:
  movb   $0x0,(%rax)
  sub    0x0(%r13),%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L316:
  movb   $0xd,(%rdx)
  movzbl 0x0(%rbp),%ecx
  mov    %rsi,%rdx
  lea    0x1(%rsi),%rsi
L177:
  mov    %cl,(%rdx)
  mov    %rdi,%rbx
  mov    %rsi,%rdx
  mov    %r8,%rbp
L32:
  lea    -0x1(%rbx),%rdi
  test   %rbx,%rbx
  jne    L139
  mov    %rdx,%rax
  jmp    L219
  nopw   0x0(%rax,%rax,1)
L34:
  movzbl 0x1(%rbp),%ecx
  cmp    $0xa,%cl
  je     L71
  mov    %rdi,%rbx
  mov    %r8,%rbp
  sub    $0x1,%rdi
  mov    %rsi,%rdx
  jmp    L124
  nopl   0x0(%rax,%rax,1)
L321:
  mov    %r13,%rdi
  call   <fs_give@plt>
  mov    0x0(%r13),%rdx
  test   %rdx,%rdx
  jne    L179
  nopl   (%rax)
L216:
  mov    %r12,(%r15)
  lea    0x1(%r12),%rdi
  call   <fs_get@plt>
  mov    %r14,%rdi
  mov    %rax,0x0(%r13)
  mov    %rax,%rdx
  mov    %r12,(%r15)
  test   %rbx,%rbx
  jne    L139
  jmp    L219
L71:
  movb   $0xa,0x1(%rdx)
  add    $0x2,%rbp
  sub    $0x2,%rbx
  add    $0x2,%rdx
  jmp    L32
  nopl   (%rax)
L248:
  mov    (%rdi),%rax
  xor    %r12d,%r12d
  mov    $0xffffffffffffffff,%r14
  test   %rax,%rax
  jne    L219
  jmp    L216
L62:
  mov    %rcx,%r12
  xor    %eax,%eax
  jmp    L185
```

tool_calls: name: extract_symbolic_data
arguments: label: D1
type: byte[16]
name: extract_symbolic_data
arguments: label: D11
type: byte[16]

tool: {"D1": [0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a]}

tool: {"D11": [0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01]}

assistant: ```c
unsigned long unix_crlfcpy(char **dst, unsigned long *dstl, char *src, unsigned long srcl) {
  unsigned long i, j;
  char *d = src;
  for (i = srcl, j = 0; j < srcl; j++)
    if (*d++ == '\012')
      i++;
  if (*dst && (i > *dstl))
    fs_give((void **)dst);
  if (!*dst) {
    *dst = (char *)fs_get((*dstl = i) + 1);
    if (dstl)
      *dstl = i;
  }
  d = *dst;
  while (srcl--)
    switch (*src) {
    case '\015':
      *d++ = *src++;
      if (srcl && *src == '\012') {
        *d++ = *src++;
        srcl--;
      }
      break;
    case '\012':
      *d++ = '\015';
    default:
      *d++ = *src++;
      break;
    }
  *d = '\0';
  return d - *dst;
}
```