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

```asm
<int_to_U8_pcm>:
  endbr64
  mov    %rsi,%rcx
  mov    %rdx,%rsi
  test   %edi,%edi
  je     L140
  mov    %edi,%r8d
  lea    -0x1(%rdi),%r9d
  lea    (%rcx,%r8,4),%rax
  cmp    %rax,%rdx
  lea    (%rdx,%r8,1),%rdx
  setae  %al
  cmp    %rdx,%rcx
  setae  %dl
  or     %dl,%al
  je     L9
  cmp    $0xe,%r9d
  jbe    L9
  mov    %edi,%r8d
  movdqa D15(%rip),%xmm3
  mov    %rcx,%rax
  mov    %rsi,%rdx
  shr    $0x4,%r8d
  movdqa D14(%rip),%xmm5
  sub    $0x1,%r8d
  shl    $0x6,%r8
  lea    0x40(%rcx,%r8,1),%r8
  nopl   0x0(%rax)
L126:
  movdqu 0x10(%rax),%xmm6
  movdqu (%rax),%xmm0
  add    $0x40,%rax
  add    $0x10,%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
  pand   %xmm3,%xmm0
  punpckhwd %xmm6,%xmm2
  movdqa %xmm1,%xmm4
  punpckhwd %xmm2,%xmm4
  punpcklwd %xmm2,%xmm1
  punpcklwd %xmm4,%xmm1
  pand   %xmm3,%xmm1
  packuswb %xmm1,%xmm0
  paddb  %xmm5,%xmm0
  movups %xmm0,-0x10(%rdx)
  cmp    %r8,%rax
  jne    L126
  mov    %edi,%r8d
  and    $0xfffffff0,%r8d
  mov    %r8d,%eax
  lea    (%rcx,%rax,4),%r10
  add    %rsi,%rax
  cmp    %r8d,%edi
  je     L140
  mov    (%r10),%esi
  lea    0x80(%rsi),%edx
  mov    %dl,(%rax)
  mov    %r9d,%edx
  sub    %r8d,%edx
  je     L140
  mov    0x4(%r10),%esi
  lea    0x80(%rsi),%ecx
  mov    %cl,0x1(%rax)
  cmp    $0x1,%edx
  je     L140
  mov    0x8(%r10),%esi
  lea    0x80(%rsi),%ecx
  mov    %cl,0x2(%rax)
  cmp    $0x2,%edx
  je     L140
  mov    0xc(%r10),%edi
  lea    0x80(%rdi),%ecx
  mov    %cl,0x3(%rax)
  cmp    $0x3,%edx
  je     L140
  mov    0x10(%r10),%esi
  lea    0x80(%rsi),%ecx
  mov    %cl,0x4(%rax)
  cmp    $0x4,%edx
  je     L140
  mov    0x14(%r10),%edi
  lea    0x80(%rdi),%ecx
  mov    %cl,0x5(%rax)
  cmp    $0x5,%edx
  je     L140
  mov    0x18(%r10),%esi
  lea    0x80(%rsi),%ecx
  mov    %cl,0x6(%rax)
  cmp    $0x6,%edx
  je     L140
  mov    0x1c(%r10),%edi
  lea    0x80(%rdi),%ecx
  mov    %cl,0x7(%rax)
  cmp    $0x7,%edx
  je     L140
  mov    0x20(%r10),%esi
  lea    0x80(%rsi),%ecx
  mov    %cl,0x8(%rax)
  cmp    $0x8,%edx
  je     L140
  mov    0x24(%r10),%esi
  lea    0x80(%rsi),%ecx
  mov    %cl,0x9(%rax)
  cmp    $0x9,%edx
  je     L140
  mov    0x28(%r10),%edi
  lea    0x80(%rdi),%ecx
  mov    %cl,0xa(%rax)
  cmp    $0xa,%edx
  je     L140
  mov    0x2c(%r10),%edi
  lea    0x80(%rdi),%ecx
  mov    %cl,0xb(%rax)
  cmp    $0xb,%edx
  je     L140
  mov    0x30(%r10),%esi
  lea    0x80(%rsi),%ecx
  mov    %cl,0xc(%rax)
  cmp    $0xc,%edx
  je     L140
  mov    0x34(%r10),%ecx
  sub    $0xffffff80,%ecx
  mov    %cl,0xd(%rax)
  cmp    $0xd,%edx
  je     L140
  mov    0x38(%r10),%edx
  sub    $0xffffff80,%edx
  mov    %dl,0xe(%rax)
  ret
  nop
L9:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L162:
  mov    (%rcx,%rax,4),%edi
  lea    0x80(%rdi),%edx
  mov    %dl,(%rsi,%rax,1)
  add    $0x1,%rax
  cmp    %rax,%r8
  jne    L162
L140:
  ret
```

tool_calls: name: retrieve_data
arguments: label: D15
type: byte[16]
name: retrieve_data
arguments: label: D14
type: byte[16]

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

tool: {"D14": [0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80]}

assistant: ```c
void int_to_U8_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 << 7);
    pcm_samples[0] = i & 0xFF;
    int_samples += 1;
    pcm_samples += 1;
  }
}
```