user: 请将以下的汇编代码转换成C语言代码：

```asm
<data_fill>:
  endbr64
  mov    %rdi,%rax
  cmp    $0xffffffff,%edx
  je     L2
  movd   %edx,%xmm7
  lea    0x400(%rdi),%rdx
  movdqa D82(%rip),%xmm9
  movdqa D110(%rip),%xmm14
  pshufd $0x0,%xmm7,%xmm10
  movd   %esi,%xmm7
  movdqa D93(%rip),%xmm8
  movdqa D59(%rip),%xmm13
  pshufd $0x0,%xmm7,%xmm7
  movdqa %xmm10,%xmm5
  movdqa D18(%rip),%xmm12
  movdqa D128(%rip),%xmm11
  punpckhwd %xmm10,%xmm5
  movdqa %xmm7,%xmm3
  punpcklwd %xmm10,%xmm10
  movdqa D77(%rip),%xmm6
  punpckhwd %xmm7,%xmm3
  movdqa %xmm10,%xmm4
  punpcklwd %xmm7,%xmm7
  movaps %xmm5,-0x28(%rsp)
  punpckhwd %xmm5,%xmm4
  movdqa %xmm7,%xmm5
  movaps %xmm3,-0x18(%rsp)
  punpckhwd %xmm3,%xmm5
  movaps %xmm4,-0x48(%rsp)
  movaps %xmm5,-0x38(%rsp)
  pxor   %xmm5,%xmm5
  nopl   0x0(%rax)
L9:
  movdqa %xmm9,%xmm2
  movdqa %xmm10,%xmm3
  movdqa %xmm7,%xmm4
  add    $0x10,%rax
  movdqa %xmm2,%xmm1
  movdqa %xmm2,%xmm0
  paddd  %xmm14,%xmm9
  paddd  %xmm13,%xmm1
  pand   %xmm8,%xmm0
  punpcklwd -0x28(%rsp),%xmm3
  pand   %xmm8,%xmm1
  pcmpeqd %xmm5,%xmm0
  punpcklwd -0x48(%rsp),%xmm3
  pcmpeqd %xmm5,%xmm1
  punpcklwd -0x18(%rsp),%xmm4
  punpcklwd -0x38(%rsp),%xmm4
  pand   %xmm6,%xmm3
  pcmpeqd %xmm5,%xmm0
  pand   %xmm6,%xmm4
  packuswb %xmm3,%xmm3
  pcmpeqd %xmm5,%xmm1
  packuswb %xmm4,%xmm4
  movdqa %xmm0,%xmm15
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm15
  movdqa %xmm0,%xmm1
  punpcklwd %xmm15,%xmm0
  punpckhwd %xmm15,%xmm1
  punpcklwd %xmm1,%xmm0
  movdqa %xmm2,%xmm1
  paddd  %xmm11,%xmm2
  paddd  %xmm12,%xmm1
  pand   %xmm8,%xmm2
  pand   %xmm6,%xmm0
  pand   %xmm8,%xmm1
  pcmpeqd %xmm5,%xmm2
  pcmpeqd %xmm5,%xmm1
  pcmpeqd %xmm5,%xmm2
  pcmpeqd %xmm5,%xmm1
  movdqa %xmm1,%xmm15
  punpcklwd %xmm2,%xmm1
  punpckhwd %xmm2,%xmm15
  movdqa %xmm1,%xmm2
  punpckhwd %xmm15,%xmm2
  punpcklwd %xmm15,%xmm1
  punpcklwd %xmm2,%xmm1
  pand   %xmm6,%xmm1
  packuswb %xmm1,%xmm0
  pand   %xmm0,%xmm3
  pandn  %xmm4,%xmm0
  por    %xmm3,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %rax,%rdx
  jne    L9
  ret
L2:
  movd   %esi,%xmm7
  lea    0x400(%rdi),%rdx
  movdqa D110(%rip),%xmm14
  movdqa D59(%rip),%xmm13
  pshufd $0x0,%xmm7,%xmm3
  movdqa D77(%rip),%xmm6
  paddd  D82(%rip),%xmm3
  movdqa D18(%rip),%xmm12
  movdqa D128(%rip),%xmm11
  nopl   0x0(%rax,%rax,1)
L27:
  movdqa %xmm3,%xmm2
  add    $0x10,%rax
  paddd  %xmm14,%xmm3
  movdqa %xmm2,%xmm4
  movdqa %xmm2,%xmm1
  movdqa %xmm2,%xmm0
  paddd  %xmm13,%xmm4
  punpcklwd %xmm4,%xmm1
  punpckhwd %xmm4,%xmm0
  movdqa %xmm1,%xmm4
  punpcklwd %xmm0,%xmm1
  punpckhwd %xmm0,%xmm4
  movdqa %xmm2,%xmm0
  paddd  %xmm11,%xmm2
  paddd  %xmm12,%xmm0
  punpcklwd %xmm4,%xmm1
  movdqa %xmm0,%xmm4
  punpcklwd %xmm2,%xmm0
  pand   %xmm6,%xmm1
  punpckhwd %xmm2,%xmm4
  movdqa %xmm0,%xmm2
  punpckhwd %xmm4,%xmm2
  punpcklwd %xmm4,%xmm0
  punpcklwd %xmm2,%xmm0
  pand   %xmm6,%xmm0
  packuswb %xmm0,%xmm1
  movups %xmm1,-0x10(%rax)
  cmp    %rdx,%rax
  jne    L27
  ret
```

tool_calls: name: unpack_data
arguments: tag: D82
type_infered: byte[16]
name: unpack_data
arguments: tag: D110
type_infered: byte[16]
name: unpack_data
arguments: tag: D93
type_infered: byte[16]
name: unpack_data
arguments: tag: D59
type_infered: byte[16]
name: unpack_data
arguments: tag: D18
type_infered: byte[16]
name: unpack_data
arguments: tag: D128
type_infered: byte[16]
name: unpack_data
arguments: tag: D77
type_infered: byte[16]

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

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

tool: {"D93": [0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00]}

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

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

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

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

assistant: ```c
void data_fill(unsigned char *data, unsigned pattern, unsigned alt) {
  int i;
  for (i = 0; i < 1024; ++i) {
    if (alt == ~0)
      data[i] = pattern++;
    else
      data[i] = (i & 1) ? alt : pattern;
  }
}
```