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

```asm
<AAS_DData>:
  endbr64
  mov    %rdi,%rdx
  mov    %esi,%ecx
  test   %esi,%esi
  jle    L76
  lea    -0x1(%rsi),%eax
  cmp    $0xe,%eax
  jbe    L97
  shr    $0x4,%esi
  movdqa D20(%rip),%xmm1
  movdqa D21(%rip),%xmm6
  mov    %rdi,%rax
  sub    $0x1,%esi
  movdqa D37(%rip),%xmm5
  movdqa D49(%rip),%xmm4
  shl    $0x4,%rsi
  movdqa D11(%rip),%xmm3
  movdqa D51(%rip),%xmm2
  lea    0x10(%rdi,%rsi,1),%rsi
  nop
L168:
  movdqa %xmm1,%xmm8
  add    $0x10,%rax
  paddd  %xmm6,%xmm1
  movdqa %xmm8,%xmm9
  movdqa %xmm8,%xmm7
  movdqa %xmm8,%xmm0
  paddd  %xmm5,%xmm9
  punpcklwd %xmm9,%xmm7
  punpckhwd %xmm9,%xmm0
  movdqa %xmm7,%xmm9
  punpcklwd %xmm0,%xmm7
  punpckhwd %xmm0,%xmm9
  movdqa %xmm8,%xmm0
  paddd  %xmm3,%xmm8
  paddd  %xmm4,%xmm0
  punpcklwd %xmm9,%xmm7
  movdqa %xmm0,%xmm9
  punpcklwd %xmm8,%xmm0
  pand   %xmm2,%xmm7
  punpckhwd %xmm8,%xmm9
  movdqa %xmm0,%xmm8
  punpckhwd %xmm9,%xmm8
  punpcklwd %xmm9,%xmm0
  punpcklwd %xmm8,%xmm0
  pand   %xmm2,%xmm0
  packuswb %xmm0,%xmm7
  movdqa %xmm7,%xmm0
  paddb  %xmm7,%xmm0
  paddb  %xmm0,%xmm0
  paddb  %xmm0,%xmm0
  paddb  %xmm0,%xmm0
  psubb  %xmm7,%xmm0
  paddb  %xmm0,%xmm0
  paddb  %xmm0,%xmm0
  paddb  %xmm0,%xmm0
  psubb  %xmm7,%xmm0
  movdqu -0x10(%rax),%xmm7
  pxor   %xmm7,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %rsi,%rax
  jne    L168
  mov    %ecx,%esi
  and    $0xfffffff0,%esi
  test   $0xf,%cl
  je     L172
L185:
  movslq %esi,%r8
  mov    $0x77,%edi
  mov    %esi,%eax
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0x1(%rsi),%eax
  cmp    %ecx,%eax
  jge    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0x2(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0x3(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0x4(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0x5(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0x6(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0x7(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0x8(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0x9(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0xa(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0xb(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0xc(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0xd(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%r8
  imul   %edi,%eax
  xor    %al,(%rdx,%r8,1)
  lea    0xe(%rsi),%eax
  cmp    %eax,%ecx
  jle    L76
  movslq %eax,%rcx
  imul   %edi,%eax
  xor    %al,(%rdx,%rcx,1)
L76:
  ret
L97:
  xor    %esi,%esi
  jmp    L185
L172:
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D20
type_infered: byte[16]
name: disassemble_data
arguments: tag: D21
type_infered: byte[16]
name: disassemble_data
arguments: tag: D37
type_infered: byte[16]
name: disassemble_data
arguments: tag: D49
type_infered: byte[16]
name: disassemble_data
arguments: tag: D11
type_infered: byte[16]
name: disassemble_data
arguments: tag: D51
type_infered: byte[16]

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

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

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

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

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

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

assistant: ```c
void AAS_DData(unsigned char *data, int size) {
  int i;
  for (i = 0; i < size; i++) {
    data[i] ^= (unsigned char)i * 119;
  }
}
```