user: Please show me the C implementation that matches the assembly code listed below:

```asm
<vector_set>:
  endbr64
  mov    %edx,%r8d
  mov    %rdi,%rax
  mov    %esi,%ecx
  and    $0xf,%r8d
  and    $0xfffffff0,%edx
  je     L13
  movd   %esi,%xmm6
  sub    $0x1,%edx
  pshufd $0x0,%xmm6,%xmm0
  cmp    $0xf,%edx
  jbe    L97
  mov    %edx,%r10d
  shr    $0x4,%r10d
  lea    0x1(%r10),%r9d
  cmp    $0x2f,%edx
  jbe    L128
  mov    %r9d,%edi
  movdqa D30(%rip),%xmm2
  mov    %rax,%rdx
  xor    %esi,%esi
  movdqa D31(%rip),%xmm4
  movdqa D25(%rip),%xmm3
  shr    $0x2,%edi
  nopl   (%rax)
L236:
  movdqa %xmm2,%xmm1
  add    $0x1,%esi
  movups %xmm0,(%rdx)
  paddd  %xmm4,%xmm2
  movups %xmm0,0x10(%rdx)
  paddd  %xmm3,%xmm1
  add    $0x100,%rdx
  movups %xmm0,-0xe0(%rdx)
  movups %xmm0,-0xd0(%rdx)
  movups %xmm0,-0xc0(%rdx)
  movups %xmm0,-0xb0(%rdx)
  movups %xmm0,-0xa0(%rdx)
  movups %xmm0,-0x90(%rdx)
  movups %xmm0,-0x80(%rdx)
  movups %xmm0,-0x70(%rdx)
  movups %xmm0,-0x60(%rdx)
  movups %xmm0,-0x50(%rdx)
  movups %xmm0,-0x40(%rdx)
  movups %xmm0,-0x30(%rdx)
  movups %xmm0,-0x20(%rdx)
  movups %xmm0,-0x10(%rdx)
  cmp    %edi,%esi
  jb     L236
  mov    %r9d,%edi
  pshufd $0xff,%xmm1,%xmm1
  and    $0xfffffffc,%edi
  movd   %xmm1,%edx
  mov    %edi,%esi
  shl    $0x4,%esi
  cmp    %edi,%r9d
  je     L13
  sub    %edi,%r9d
  cmp    %edi,%r10d
  je     L61
L130:
  shl    $0x6,%rdi
  movd   %ecx,%xmm6
  movd   %esi,%xmm0
  movq   D25(%rip),%xmm1
  lea    (%rax,%rdi,1),%rdx
  pshufd $0xe0,%xmm6,%xmm5
  mov    %r9d,%edi
  movq   %xmm5,(%rdx)
  and    $0xfffffffe,%edi
  movq   %xmm5,0x8(%rdx)
  mov    %edi,%r10d
  movq   %xmm5,0x10(%rdx)
  shl    $0x4,%r10d
  movq   %xmm5,0x18(%rdx)
  movq   %xmm5,0x20(%rdx)
  movq   %xmm5,0x28(%rdx)
  movq   %xmm5,0x30(%rdx)
  movq   %xmm5,0x38(%rdx)
  movq   %xmm5,0x40(%rdx)
  movq   %xmm5,0x48(%rdx)
  movq   %xmm5,0x50(%rdx)
  movq   %xmm5,0x58(%rdx)
  movq   %xmm5,0x60(%rdx)
  movq   %xmm5,0x68(%rdx)
  movq   %xmm5,0x70(%rdx)
  movq   %xmm5,0x78(%rdx)
  lea    0x10(%rsi),%edx
  add    %r10d,%esi
  movd   %edx,%xmm7
  punpckldq %xmm7,%xmm0
  paddd  %xmm1,%xmm0
  pshufd $0xe5,%xmm0,%xmm5
  movd   %xmm5,%edx
  cmp    %r9d,%edi
  je     L13
L61:
  mov    %esi,%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0x1(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0x2(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0x3(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0x4(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0x5(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0x6(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0x7(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0x8(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0x9(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0xa(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0xb(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0xc(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0xd(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0xe(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0xf(%rsi),%edx
  mov    %ecx,(%rax,%rdx,4)
  lea    0x10(%rsi),%edx
L13:
  test   %r8d,%r8d
  je     L107
  mov    %edx,%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0x1,%r8d
  je     L107
  lea    0x1(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0x2,%r8d
  je     L107
  lea    0x2(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0x3,%r8d
  je     L107
  lea    0x3(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0x4,%r8d
  je     L107
  lea    0x4(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0x5,%r8d
  je     L107
  lea    0x5(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0x6,%r8d
  je     L107
  lea    0x6(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0x7,%r8d
  je     L107
  lea    0x7(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0x8,%r8d
  je     L107
  lea    0x8(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0x9,%r8d
  je     L107
  lea    0x9(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0xa,%r8d
  je     L107
  lea    0xa(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0xb,%r8d
  je     L107
  lea    0xb(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0xc,%r8d
  je     L107
  lea    0xc(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0xd,%r8d
  je     L107
  lea    0xd(%rdx),%esi
  mov    %ecx,(%rax,%rsi,4)
  cmp    $0xf,%r8d
  jne    L107
  add    $0xe,%edx
  mov    %ecx,(%rax,%rdx,4)
L107:
  ret
  nopw   0x0(%rax,%rax,1)
L97:
  movups %xmm0,(%rdi)
  mov    $0x10,%edx
  movups %xmm0,0x10(%rdi)
  movups %xmm0,0x20(%rdi)
  movups %xmm0,0x30(%rdi)
  jmp    L13
L128:
  xor    %edi,%edi
  xor    %esi,%esi
  jmp    L130
```

tool_calls: name: disassemble_data
arguments: tag: D30
type_infered: byte[16]
name: disassemble_data
arguments: tag: D31
type_infered: byte[16]
name: disassemble_data
arguments: tag: D25
type_infered: byte[16]

tool: {"D30": [0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x30,0x00,0x00,0x00]}

tool: {"D31": [0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00]}

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

assistant: ```c
void vector_set(int *v, unsigned int val, unsigned int length) {
  unsigned int i, j;
  unsigned int num_blocks = length / 16;
  unsigned int rem = length % 16;
  for (i = 0; i < num_blocks * 16; i += 16) {
    v[i + 0] = val;
    v[i + 1] = val;
    v[i + 2] = val;
    v[i + 3] = val;
    v[i + 4] = val;
    v[i + 5] = val;
    v[i + 6] = val;
    v[i + 7] = val;
    v[i + 8] = val;
    v[i + 9] = val;
    v[i + 10] = val;
    v[i + 11] = val;
    v[i + 12] = val;
    v[i + 13] = val;
    v[i + 14] = val;
    v[i + 15] = val;
  }
  for (j = 0; j < rem; j++)
    v[i + j] = val;
}
```