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

```asm
<sc2s_array>:
  endbr64
  mov    %rdx,%r8
  test   %esi,%esi
  je     L64
  mov    %esi,%r9d
  movslq %ecx,%rax
  lea    (%rdx,%rax,2),%rdx
  add    %r9,%rax
  lea    (%rdi,%r9,1),%r10
  lea    (%r8,%rax,2),%rax
  cmp    %rax,%rdi
  setae  %al
  cmp    %r10,%rdx
  setae  %r10b
  or     %r10b,%al
  je     L193
  lea    -0x1(%rsi),%eax
  cmp    $0xe,%eax
  jbe    L193
  mov    %esi,%r9d
  xor    %eax,%eax
  pxor   %xmm3,%xmm3
  shr    $0x4,%r9d
  shl    $0x4,%r9
  nopw   0x0(%rax,%rax,1)
L103:
  movdqu (%rdi,%rax,1),%xmm0
  movdqa %xmm3,%xmm1
  pcmpgtb %xmm0,%xmm1
  movdqa %xmm0,%xmm2
  punpcklbw %xmm1,%xmm2
  punpckhbw %xmm1,%xmm0
  movups %xmm2,(%rdx,%rax,2)
  movups %xmm0,0x10(%rdx,%rax,2)
  add    $0x10,%rax
  cmp    %r9,%rax
  jne    L103
  mov    %esi,%eax
  and    $0xfffffff0,%eax
  add    %eax,%ecx
  cmp    %eax,%esi
  je     L64
  movslq %eax,%r9
  movslq %ecx,%rdx
  add    $0x1,%ecx
  movsbw (%rdi,%r9,1),%r9w
  mov    %r9w,(%r8,%rdx,2)
  lea    0x1(%rax),%r9d
  cmp    %r9d,%esi
  jbe    L64
  movslq %r9d,%r9
  movslq %ecx,%rcx
  movsbw (%rdi,%r9,1),%r9w
  lea    (%rcx,%rcx,1),%rdx
  mov    %r9w,(%r8,%rcx,2)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0x2(%r8,%rdx,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0x4(%r8,%rdx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0x6(%r8,%rdx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0x8(%r8,%rdx,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0xa(%r8,%rdx,1)
  lea    0x7(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0xc(%r8,%rdx,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0xe(%r8,%rdx,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0x10(%r8,%rdx,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0x12(%r8,%rdx,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0x14(%r8,%rdx,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0x16(%r8,%rdx,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%esi
  jbe    L64
  movslq %ecx,%rcx
  add    $0xe,%eax
  movsbw (%rdi,%rcx,1),%cx
  mov    %cx,0x18(%r8,%rdx,1)
  cmp    %eax,%esi
  jbe    L64
  cltq
  movsbw (%rdi,%rax,1),%ax
  mov    %ax,0x1a(%r8,%rdx,1)
  ret
  nopl   (%rax)
L193:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L60:
  movsbw (%rdi,%rax,1),%cx
  mov    %cx,(%rdx,%rax,2)
  add    $0x1,%rax
  cmp    %r9,%rax
  jne    L60
L64:
  ret
```

assistant: ```c
void sc2s_array(signed char *buffer, unsigned int count, short *ptr, int index) {
  int k;
  for (k = 0; k < count; k++) {
    ptr[index] = ((short)buffer[k]);
    index++;
  };
}
```