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

```asm
<int_to_UL16_pcm>:
  endbr64
  test   %edi,%edi
  je     L173
  mov    %edi,%r8d
  mov    %rdx,%rcx
  push   %rbx
  lea    -0x1(%rdi),%r9d
  lea    (%rsi,%r8,4),%rax
  cmp    %rax,%rdx
  lea    (%rdx,%r8,2),%rdx
  setae  %al
  cmp    %rdx,%rsi
  setae  %dl
  or     %dl,%al
  je     L100
  cmp    $0xe,%r9d
  jbe    L100
  mov    %edi,%r8d
  movdqa D12(%rip),%xmm5
  mov    %rsi,%rax
  mov    %rcx,%rdx
  shr    $0x4,%r8d
  movdqa D7(%rip),%xmm3
  sub    $0x1,%r8d
  shl    $0x6,%r8
  lea    0x40(%rsi,%r8,1),%r8
  nopw   0x0(%rax,%rax,1)
L185:
  movdqu 0x10(%rax),%xmm6
  movdqu (%rax),%xmm0
  add    $0x40,%rax
  add    $0x20,%rdx
  movdqa %xmm0,%xmm1
  punpcklwd %xmm6,%xmm0
  punpckhwd %xmm6,%xmm1
  movdqa %xmm0,%xmm2
  movdqu -0x10(%rax),%xmm6
  punpckhwd %xmm1,%xmm2
  punpcklwd %xmm1,%xmm0
  movdqu -0x20(%rax),%xmm1
  punpcklwd %xmm2,%xmm0
  movdqa %xmm1,%xmm2
  punpcklwd %xmm6,%xmm1
  paddw  %xmm5,%xmm0
  punpckhwd %xmm6,%xmm2
  movdqa %xmm1,%xmm4
  punpckhwd %xmm2,%xmm4
  punpcklwd %xmm2,%xmm1
  movdqa %xmm0,%xmm2
  punpcklwd %xmm4,%xmm1
  psraw  $0x8,%xmm2
  pand   %xmm3,%xmm0
  paddw  %xmm5,%xmm1
  pand   %xmm3,%xmm2
  movdqa %xmm1,%xmm4
  pand   %xmm3,%xmm1
  psraw  $0x8,%xmm4
  packuswb %xmm1,%xmm0
  pand   %xmm3,%xmm4
  movdqa %xmm0,%xmm1
  packuswb %xmm4,%xmm2
  punpcklbw %xmm2,%xmm1
  punpckhbw %xmm2,%xmm0
  movups %xmm1,-0x20(%rdx)
  movups %xmm0,-0x10(%rdx)
  cmp    %rax,%r8
  jne    L185
  mov    %edi,%r8d
  and    $0xfffffff0,%r8d
  mov    %r8d,%eax
  lea    (%rsi,%rax,4),%rdx
  lea    (%rcx,%rax,2),%rax
  cmp    %r8d,%edi
  je     L16
  mov    (%rdx),%ebx
  lea    0x8000(%rbx),%ecx
  mov    %cx,(%rax)
  mov    %r9d,%ecx
  sub    %r8d,%ecx
  je     L16
  mov    0x4(%rdx),%ebx
  lea    0x8000(%rbx),%esi
  mov    %si,0x2(%rax)
  cmp    $0x1,%ecx
  je     L16
  mov    0x8(%rdx),%edi
  lea    0x8000(%rdi),%esi
  mov    %si,0x4(%rax)
  cmp    $0x2,%ecx
  je     L16
  mov    0xc(%rdx),%ebx
  lea    0x8000(%rbx),%esi
  mov    %si,0x6(%rax)
  cmp    $0x3,%ecx
  je     L16
  mov    0x10(%rdx),%ebx
  lea    0x8000(%rbx),%esi
  mov    %si,0x8(%rax)
  cmp    $0x4,%ecx
  je     L16
  mov    0x14(%rdx),%edi
  lea    0x8000(%rdi),%esi
  mov    %si,0xa(%rax)
  cmp    $0x5,%ecx
  je     L16
  mov    0x18(%rdx),%edi
  lea    0x8000(%rdi),%esi
  mov    %si,0xc(%rax)
  cmp    $0x6,%ecx
  je     L16
  mov    0x1c(%rdx),%ebx
  lea    0x8000(%rbx),%esi
  mov    %si,0xe(%rax)
  cmp    $0x7,%ecx
  je     L16
  mov    0x20(%rdx),%ebx
  lea    0x8000(%rbx),%esi
  mov    %si,0x10(%rax)
  cmp    $0x8,%ecx
  je     L16
  mov    0x24(%rdx),%edi
  lea    0x8000(%rdi),%esi
  mov    %si,0x12(%rax)
  cmp    $0x9,%ecx
  je     L16
  mov    0x28(%rdx),%edi
  lea    0x8000(%rdi),%esi
  mov    %si,0x14(%rax)
  cmp    $0xa,%ecx
  je     L16
  mov    0x2c(%rdx),%ebx
  lea    0x8000(%rbx),%esi
  mov    %si,0x16(%rax)
  cmp    $0xb,%ecx
  je     L16
  mov    0x30(%rdx),%edi
  lea    0x8000(%rdi),%esi
  mov    %si,0x18(%rax)
  cmp    $0xc,%ecx
  je     L16
  mov    0x34(%rdx),%ebx
  lea    0x8000(%rbx),%esi
  mov    %si,0x1a(%rax)
  cmp    $0xd,%ecx
  je     L16
  mov    0x38(%rdx),%edx
  add    $0x8000,%edx
  mov    %dx,0x1c(%rax)
L16:
  pop    %rbx
  ret
  nopl   (%rax)
L100:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L143:
  mov    (%rsi,%rax,4),%ebx
  lea    0x8000(%rbx),%edx
  mov    %dh,0x1(%rcx,%rax,2)
  mov    %dl,(%rcx,%rax,2)
  add    $0x1,%rax
  cmp    %rax,%r8
  jne    L143
  pop    %rbx
  ret
  nopl   0x0(%rax,%rax,1)
L173:
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D12
datatype: byte[16]
name: extract_symbolic_data
arguments: label: D7
datatype: byte[16]

tool: {"D12": [0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80]}

tool: {"D7": [0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]}

assistant: ```c
void int_to_UL16_pcm(unsigned total_samples, const int int_samples[], unsigned char pcm_samples[]) {
  for (; total_samples; total_samples--) {
    register int i = int_samples[0];
    i += (1 << 15);
    pcm_samples[1] = (i >> 8) & 0xFF;
    pcm_samples[0] = i & 0xFF;
    int_samples += 1;
    pcm_samples += 2;
  }
}
```