user: Demonstrate the C code that generates the assembly output below:

```asm
<boxblur_vert_C>:
  endbr64
  push   %r15
  mov    %rsi,%r11
  push   %r14
  push   %r13
  mov    %ecx,%r13d
  push   %r12
  push   %rbp
  push   %rbx
  mov    0x38(%rsp),%ecx
  mov    %ecx,%esi
  shr    $0x1f,%esi
  add    %ecx,%esi
  sar    %esi
  test   %edx,%edx
  jle    L250
  mov    %edx,%eax
  lea    0x1(%rsi),%ebx
  mov    %rdi,%r10
  sub    $0x1,%eax
  mov    %ebx,-0x2c(%rsp)
  lea    0x1(%r11,%rax,1),%rax
  mov    %rax,-0x28(%rsp)
  cmp    $0x1,%r8d
  jne    L45
  cmp    $0x1,%r9d
  jne    L45
  cmp    $0x1,%ecx
  mov    $0x1,%eax
  lea    -0x1(%rsi),%r15d
  mov    %r13d,%r12d
  cmovg  %esi,%eax
  sub    %esi,%r12d
  pxor   %xmm5,%xmm5
  sub    $0x1,%r12d
  mov    %eax,%ebx
  mov    %eax,-0x20(%rsp)
  shr    $0x4,%eax
  sub    $0x1,%eax
  and    $0xfffffff0,%ebx
  add    $0x1,%rax
  mov    %rbx,-0x18(%rsp)
  mov    %ebx,%r14d
  shl    $0x4,%rax
  mov    %rax,-0x10(%rsp)
  nopw   0x0(%rax,%rax,1)
L115:
  movzbl (%r11),%eax
  mov    -0x2c(%rsp),%edi
  mov    %r11,%rbx
  imul   %eax,%edi
  cmp    $0x1,%ecx
  jle    L76
  cmp    $0x1f,%ecx
  jle    L114
  mov    -0x10(%rsp),%rdx
  pxor   %xmm0,%xmm0
  pxor   %xmm4,%xmm4
  lea    (%rdx,%r11,1),%r8
  mov    %r11,%rdx
  nopl   0x0(%rax)
L60:
  movdqu (%rdx),%xmm2
  add    $0x10,%rdx
  movdqa %xmm2,%xmm3
  punpckhbw %xmm5,%xmm2
  punpcklbw %xmm5,%xmm3
  movdqa %xmm3,%xmm1
  punpckhwd %xmm4,%xmm3
  punpcklwd %xmm4,%xmm1
  paddd  %xmm1,%xmm0
  movdqa %xmm2,%xmm1
  punpckhwd %xmm4,%xmm2
  paddd  %xmm3,%xmm0
  punpcklwd %xmm4,%xmm1
  paddd  %xmm1,%xmm0
  paddd  %xmm2,%xmm0
  cmp    %r8,%rdx
  jne    L60
  movdqa %xmm0,%xmm1
  psrldq $0x8,%xmm1
  paddd  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  psrldq $0x4,%xmm1
  paddd  %xmm1,%xmm0
  movd   %xmm0,%edx
  add    %edx,%edi
  mov    -0x18(%rsp),%rdx
  lea    (%r11,%rdx,1),%r8
  cmp    %r14d,-0x20(%rsp)
  je     L276
  mov    %r14d,%edx
L311:
  movzbl (%r8),%r9d
  add    %r9d,%edi
  lea    0x1(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0x1(%r8),%r9d
  add    %r9d,%edi
  lea    0x2(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0x2(%r8),%r9d
  add    %r9d,%edi
  lea    0x3(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0x3(%r8),%r9d
  add    %r9d,%edi
  lea    0x4(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0x4(%r8),%r9d
  add    %r9d,%edi
  lea    0x5(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0x5(%r8),%r9d
  add    %r9d,%edi
  lea    0x6(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0x6(%r8),%r9d
  add    %r9d,%edi
  lea    0x7(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0x7(%r8),%r9d
  add    %r9d,%edi
  lea    0x8(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0x8(%r8),%r9d
  add    %r9d,%edi
  lea    0x9(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0x9(%r8),%r9d
  add    %r9d,%edi
  lea    0xa(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0xa(%r8),%r9d
  add    %r9d,%edi
  lea    0xb(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0xb(%r8),%r9d
  add    %r9d,%edi
  lea    0xc(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0xc(%r8),%r9d
  add    %r9d,%edi
  lea    0xd(%rdx),%r9d
  cmp    %r9d,%esi
  jle    L276
  movzbl 0xd(%r8),%r9d
  add    $0xe,%edx
  add    %r9d,%edi
  cmp    %edx,%esi
  jle    L276
  movzbl 0xe(%r8),%edx
  add    %edx,%edi
  xchg   %ax,%ax
L276:
  cmp    $0x1,%ecx
  lea    0x1(%r15),%r9
  mov    $0x1,%edx
  cmovle %rdx,%r9
  add    %r11,%r9
L227:
  test   %r13d,%r13d
  jle    L170
  movslq %r13d,%rbp
  xor    %r8d,%r8d
  jmp    L116
L323:
  movzbl (%rbx),%eax
L116:
  sub    %eax,%edi
  movzbl (%r9),%eax
  add    %eax,%edi
  xor    %eax,%eax
  cmp    %r8d,%esi
  setl   %al
  add    %rax,%rbx
  xor    %eax,%eax
  cmp    %r8d,%r12d
  setg   %al
  add    %rax,%r9
  mov    %edi,%eax
  cltd
  idiv   %ecx
  mov    %al,(%r10,%r8,1)
  add    $0x1,%r8
  cmp    %r8,%rbp
  jne    L323
L170:
  add    $0x1,%r11
  add    $0x1,%r10
  cmp    -0x28(%rsp),%r11
  jne    L115
L250:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L76:
  mov    %r11,%r9
  jmp    L227
L114:
  mov    %r11,%r8
  xor    %edx,%edx
  jmp    L311
L45:
  lea    -0x1(%rsi),%eax
  mov    $0x1,%edx
  movslq %r9d,%rbp
  mov    %r13d,%r15d
  add    $0x1,%rax
  cmp    $0x1,%ecx
  movslq %r8d,%r14
  cmovle %rdx,%rax
  sub    %esi,%r15d
  sub    $0x1,%r15d
  imul   %rbp,%rax
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L161:
  movzbl (%r11),%edx
  mov    -0x2c(%rsp),%edi
  mov    %r11,%rbx
  mov    %r10,%r12
  imul   %edx,%edi
  cmp    $0x1,%ecx
  jle    L241
  mov    %r11,%r8
  xor    %eax,%eax
  nop
L122:
  movzbl (%r8),%r9d
  add    $0x1,%eax
  add    %rbp,%r8
  add    %r9d,%edi
  cmp    %eax,%esi
  jg     L122
  mov    -0x20(%rsp),%rax
  lea    (%r11,%rax,1),%r9
L226:
  test   %r13d,%r13d
  jle    L287
  xor    %r8d,%r8d
  jmp    L292
  nopl   0x0(%rax)
L273:
  movzbl (%rbx),%edx
L292:
  movzbl (%r9),%eax
  sub    %edx,%edi
  add    %eax,%edi
  cmp    %r8d,%esi
  lea    (%rbx,%rbp,1),%rax
  cmovl  %rax,%rbx
  cmp    %r15d,%r8d
  lea    (%r9,%rbp,1),%rax
  cmovl  %rax,%r9
  mov    %edi,%eax
  add    $0x1,%r8d
  cltd
  idiv   %ecx
  mov    %al,(%r12)
  add    %r14,%r12
  cmp    %r8d,%r13d
  jne    L273
L287:
  add    $0x1,%r11
  add    $0x1,%r10
  cmp    -0x28(%rsp),%r11
  jne    L161
  jmp    L250
L241:
  mov    %r11,%r9
  jmp    L226
```

assistant: ```c
void boxblur_vert_C(unsigned char *dest, const unsigned char *src, int width, int height, int dest_strive, int src_strive, int size) {
  int i, j, k;
  int acc;
  const unsigned char *start, *end;
  unsigned char *current;
  int size2 = size / 2;
  for (i = 0; i < width; i++) {
    start = end = src + i;
    current = dest + i;
    acc = (*start) * (size2 + 1);
    for (k = 0; k < size2; k++) {
      acc += (*end);
      end += src_strive;
    }
    for (j = 0; j < height; j++) {
      acc = acc - (*start) + (*end);
      if (j > size2)
        start += src_strive;
      if (j < height - size2 - 1)
        end += src_strive;
      *current = acc / size;
      current += dest_strive;
    }
  }
}
```