user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<scaleChars>:
  endbr64
  mov    %rdi,%rcx
  mov    %esi,%edx
  movaps %xmm0,%xmm6
  test   %esi,%esi
  jle    L49
  lea    -0x1(%rsi),%eax
  cmp    $0xe,%eax
  jbe    L149
  shr    $0x4,%esi
  movaps %xmm0,%xmm3
  pxor   %xmm7,%xmm7
  mov    %rdi,%rax
  sub    $0x1,%esi
  movdqa D7(%rip),%xmm5
  pxor   %xmm4,%xmm4
  shufps $0x0,%xmm3,%xmm3
  shl    $0x4,%rsi
  lea    0x10(%rdi,%rsi,1),%rsi
  nopl   0x0(%rax)
L104:
  movdqu (%rax),%xmm2
  movdqa %xmm7,%xmm0
  movdqa %xmm4,%xmm8
  add    $0x10,%rax
  pcmpgtb %xmm2,%xmm0
  movdqa %xmm2,%xmm1
  punpcklbw %xmm0,%xmm1
  punpckhbw %xmm0,%xmm2
  pcmpgtw %xmm1,%xmm8
  movdqa %xmm1,%xmm0
  punpcklwd %xmm8,%xmm0
  punpckhwd %xmm8,%xmm1
  cvtdq2ps %xmm0,%xmm0
  cvtdq2ps %xmm1,%xmm1
  mulps  %xmm3,%xmm0
  mulps  %xmm3,%xmm1
  cvttps2dq %xmm0,%xmm0
  movdqa %xmm0,%xmm8
  cvttps2dq %xmm1,%xmm1
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm8
  movdqa %xmm0,%xmm1
  punpcklwd %xmm8,%xmm0
  punpckhwd %xmm8,%xmm1
  movdqa %xmm4,%xmm8
  pcmpgtw %xmm2,%xmm8
  punpcklwd %xmm1,%xmm0
  movdqa %xmm2,%xmm1
  pand   %xmm5,%xmm0
  punpcklwd %xmm8,%xmm1
  punpckhwd %xmm8,%xmm2
  cvtdq2ps %xmm1,%xmm1
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm3,%xmm1
  mulps  %xmm3,%xmm2
  cvttps2dq %xmm1,%xmm1
  movdqa %xmm1,%xmm8
  cvttps2dq %xmm2,%xmm2
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm8
  movdqa %xmm1,%xmm2
  punpcklwd %xmm8,%xmm1
  punpckhwd %xmm8,%xmm2
  punpcklwd %xmm2,%xmm1
  pand   %xmm5,%xmm1
  packuswb %xmm1,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %rsi,%rax
  jne    L104
  mov    %edx,%eax
  and    $0xfffffff0,%eax
  test   $0xf,%dl
  je     L145
L157:
  movslq %eax,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0x1(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0x2(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0x3(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0x4(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0x5(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0x6(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0x7(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0x8(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0x9(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0xa(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0xb(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0xc(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  lea    0xd(%rax),%esi
  cmp    %esi,%edx
  jle    L49
  movslq %esi,%rsi
  pxor   %xmm0,%xmm0
  add    $0xe,%eax
  add    %rcx,%rsi
  movsbl (%rsi),%edi
  cvtsi2ss %edi,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%edi
  mov    %dil,(%rsi)
  cmp    %eax,%edx
  jle    L49
  cltq
  pxor   %xmm0,%xmm0
  add    %rax,%rcx
  movsbl (%rcx),%eax
  cvtsi2ss %eax,%xmm0
  mulss  %xmm6,%xmm0
  cvttss2si %xmm0,%eax
  mov    %al,(%rcx)
L49:
  ret
L149:
  xor    %eax,%eax
  jmp    L157
L145:
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D7
type: byte[16]

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

assistant: ```c
void scaleChars(char *chars, int numChars, float scalar) {
  int i;
  for (i = 0; i < numChars; i++) {
    chars[i] *= scalar;
  }
}
```