user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<fill_run>:
  endbr64
  mov    %rdi,%r8
  mov    %ecx,%edi
  test   %edx,%edx
  jle    L184
  lea    -0x1(%rdx),%eax
  cmp    $0xe,%eax
  jbe    L48
  mov    %edx,%eax
  movd   %ecx,%xmm4
  movslq %esi,%rcx
  movdqa D50(%rip),%xmm3
  shr    $0x4,%eax
  punpcklbw %xmm4,%xmm4
  add    %r8,%rcx
  movdqa D35(%rip),%xmm9
  lea    -0x1(%rax),%r9d
  punpcklwd %xmm4,%xmm4
  lea    0x10(%rcx),%rax
  movdqa D57(%rip),%xmm8
  shl    $0x4,%r9
  movdqa D39(%rip),%xmm7
  movdqa D30(%rip),%xmm6
  pshufd $0x0,%xmm4,%xmm4
  movdqa D43(%rip),%xmm5
  add    %rax,%r9
  jmp    L36
  nopl   0x0(%rax)
L96:
  add    $0x10,%rax
L36:
  movdqa %xmm3,%xmm2
  paddd  %xmm9,%xmm3
  movdqa %xmm2,%xmm10
  movdqa %xmm2,%xmm0
  movdqa %xmm2,%xmm1
  paddd  %xmm8,%xmm10
  punpcklwd %xmm10,%xmm0
  punpckhwd %xmm10,%xmm1
  movdqa %xmm0,%xmm10
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm10
  movdqa %xmm2,%xmm1
  paddd  %xmm6,%xmm2
  paddd  %xmm7,%xmm1
  punpcklwd %xmm10,%xmm0
  movdqa %xmm1,%xmm10
  punpcklwd %xmm2,%xmm1
  pand   %xmm5,%xmm0
  punpckhwd %xmm2,%xmm10
  movdqa %xmm1,%xmm2
  punpckhwd %xmm10,%xmm2
  punpcklwd %xmm10,%xmm1
  punpcklwd %xmm2,%xmm1
  pand   %xmm5,%xmm1
  packuswb %xmm1,%xmm0
  paddb  %xmm4,%xmm0
  movups %xmm0,(%rcx)
  mov    %rax,%rcx
  cmp    %r9,%rax
  jne    L96
  mov    %edx,%eax
  and    $0xfffffff0,%eax
  test   $0xf,%dl
  je     L9
L63:
  lea    (%rsi,%rax,1),%ecx
  lea    (%rdi,%rax,1),%r9d
  movslq %ecx,%rcx
  mov    %r9b,(%r8,%rcx,1)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0x7(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%edx
  jle    L184
  lea    (%rsi,%rcx,1),%r9d
  add    $0xe,%eax
  add    %edi,%ecx
  movslq %r9d,%r9
  mov    %cl,(%r8,%r9,1)
  cmp    %eax,%edx
  jle    L184
  add    %eax,%esi
  add    %eax,%edi
  movslq %esi,%rsi
  mov    %dil,(%r8,%rsi,1)
L184:
  ret
L48:
  xor    %eax,%eax
  jmp    L63
L9:
  ret
```

tool_calls: name: unpack_data
arguments: tag: D50
type_guessed: byte[16]
name: unpack_data
arguments: tag: D35
type_guessed: byte[16]
name: unpack_data
arguments: tag: D57
type_guessed: byte[16]
name: unpack_data
arguments: tag: D39
type_guessed: byte[16]
name: unpack_data
arguments: tag: D30
type_guessed: byte[16]
name: unpack_data
arguments: tag: D43
type_guessed: byte[16]

tool: {"D50": [0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00]}

tool: {"D35": [0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00]}

tool: {"D57": [0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: {"D39": [0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00]}

tool: {"D30": [0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00]}

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

assistant: ```c
void fill_run(char string[], int start, int len, int first) {
  int i;
  for (i = 0; i < len; i++)
    string[start + i] = first + i;
}
```