user: What is the c source code of the assembly code below?

```asm
<put_ccode_box>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %esi,%ebx
  mov    %ecx,%esi
  mov    0x38(%rsp),%ebp
  imul   %r9d,%ecx
  mov    0x40(%rsp),%r11d
  mov    %edx,-0x14(%rsp)
  lea    (%rcx,%rbx,1),%r10d
  cmp    %edx,%ebx
  jge    L102
  sub    %ebx,%edx
  lea    -0x1(%rdx),%eax
  mov    %edx,%r12d
  cmp    $0x2,%eax
  jbe    L58
  movslq %ebx,%rdx
  movslq %ecx,%rax
  movd   %r11d,%xmm3
  add    %rdx,%rax
  mov    %r12d,%edx
  pshufd $0x0,%xmm3,%xmm1
  shr    $0x2,%edx
  lea    (%rdi,%rax,4),%rax
  shl    $0x4,%rdx
  add    %rax,%rdx
  nopl   0x0(%rax)
L217:
  movdqu (%rax),%xmm0
  add    $0x10,%rax
  por    %xmm1,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %rdx,%rax
  jne    L217
  mov    %r12d,%eax
  and    $0xfffffffc,%eax
  lea    (%rbx,%rax,1),%edx
  add    %eax,%r10d
  cmp    %eax,%r12d
  je     L102
L214:
  movslq %r10d,%rax
  mov    -0x14(%rsp),%r15d
  lea    0x1(%rdx),%r10d
  shl    $0x2,%rax
  or     %r11d,(%rdi,%rax,1)
  cmp    %r10d,%r15d
  jle    L102
  add    $0x2,%edx
  or     %r11d,0x4(%rdi,%rax,1)
  cmp    %edx,%r15d
  jle    L102
  or     %r11d,0x8(%rdi,%rax,1)
L102:
  add    $0x1,%esi
  lea    -0x1(%r8),%r12d
  cmp    %r12d,%esi
  jge    L75
  movslq %r9d,%rdx
  lea    (%rcx,%r9,1),%eax
  mov    -0x14(%rsp),%r14d
  lea    0x1(%rbx),%r15d
  shl    $0x2,%rdx
  lea    0x1(%rax,%rbx,1),%ecx
  movd   %ebp,%xmm2
  cltq
  mov    %rdx,-0x10(%rsp)
  movslq %ebx,%rdx
  lea    -0x1(%r14),%r8d
  pshufd $0x0,%xmm2,%xmm1
  lea    0x1(%rdx,%rax,1),%rax
  lea    (%rdi,%rax,4),%rdx
  mov    %r14d,%eax
  sub    %ebx,%eax
  lea    -0x2(%rax),%r10d
  sub    $0x3,%eax
  mov    %eax,-0x2c(%rsp)
  mov    %r10d,%eax
  mov    %r10d,-0x24(%rsp)
  shr    $0x2,%eax
  and    $0xfffffffc,%r10d
  sub    $0x1,%eax
  mov    %r10d,%r13d
  lea    (%r15,%r10,1),%r10d
  mov    %r10d,-0x18(%rsp)
  add    $0x1,%rax
  lea    -0x2(%r14),%r10d
  mov    -0x10(%rsp),%r14
  sub    %ebx,%r10d
  shl    $0x4,%rax
  mov    %ebx,-0x10(%rsp)
  mov    %r10d,-0x28(%rsp)
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25:
  or     %r11d,-0x4(%rdx)
  mov    %ecx,%eax
  cmp    %r8d,%r15d
  jge    L88
  cmpl   $0x2,-0x2c(%rsp)
  jbe    L43
  mov    -0x20(%rsp),%rax
  lea    (%rax,%rdx,1),%r10
  mov    %rdx,%rax
  nopw   0x0(%rax,%rax,1)
L114:
  movdqu (%rax),%xmm0
  add    $0x10,%rax
  paddd  %xmm1,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %rax,%r10
  jne    L114
  lea    (%rcx,%r13,1),%eax
  cmp    %r13d,-0x24(%rsp)
  je     L207
  mov    -0x18(%rsp),%r10d
L2:
  cltq
  lea    0x1(%r10),%ebx
  shl    $0x2,%rax
  add    %ebp,(%rdi,%rax,1)
  cmp    %ebx,%r8d
  jle    L207
  add    $0x2,%r10d
  add    %ebp,0x4(%rdi,%rax,1)
  cmp    %r10d,%r8d
  jle    L207
  add    %ebp,0x8(%rdi,%rax,1)
L207:
  mov    -0x28(%rsp),%eax
  add    %ecx,%eax
L88:
  cltq
  add    $0x1,%esi
  add    %r9d,%ecx
  add    %r14,%rdx
  or     %r11d,(%rdi,%rax,4)
  cmp    %r12d,%esi
  jne    L25
  mov    -0x10(%rsp),%ebx
L75:
  imul   %r12d,%r9d
  mov    -0x14(%rsp),%eax
  lea    (%r9,%rbx,1),%ecx
  cmp    %eax,%ebx
  jge    L32
  mov    %eax,%esi
  sub    %ebx,%esi
  lea    -0x1(%rsi),%eax
  cmp    $0x2,%eax
  jbe    L80
  movslq %ebx,%rax
  movslq %r9d,%r9
  movd   %r11d,%xmm4
  mov    %esi,%edx
  add    %r9,%rax
  shr    $0x2,%edx
  pshufd $0x0,%xmm4,%xmm1
  lea    (%rdi,%rax,4),%rax
  shl    $0x4,%rdx
  add    %rax,%rdx
  nopl   0x0(%rax)
L166:
  movdqu (%rax),%xmm0
  add    $0x10,%rax
  por    %xmm1,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %rdx,%rax
  jne    L166
  mov    %esi,%eax
  and    $0xfffffffc,%eax
  add    %eax,%ebx
  add    %eax,%ecx
  cmp    %eax,%esi
  je     L32
L80:
  movslq %ecx,%rax
  mov    -0x14(%rsp),%esi
  lea    0x1(%rbx),%edx
  shl    $0x2,%rax
  or     %r11d,(%rdi,%rax,1)
  cmp    %edx,%esi
  jle    L32
  add    $0x2,%ebx
  or     %r11d,0x4(%rdi,%rax,1)
  cmp    %ebx,%esi
  jle    L32
  or     %r11d,0x8(%rdi,%rax,1)
L32:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L43:
  mov    %r15d,%r10d
  jmp    L2
L58:
  mov    %ebx,%edx
  jmp    L214
```

assistant: ```c
void put_ccode_box(unsigned int *pixels, int x1, int x2, int y1, int y2, int width, unsigned int color, unsigned int linecolor) {
  int x, y, i;
  i = x1 + y1 * width;
  for (x = x1; x < x2; x++) {
    pixels[i++] |= linecolor;
  }
  for (y = y1 + 1; y < y2 - 1; y++) {
    i = x1 + y * width;
    pixels[i++] |= linecolor;
    for (x = x1 + 1; x < x2 - 1; x++) {
      pixels[i++] += color;
    }
    pixels[i++] |= linecolor;
  }
  i = x1 + (y2 - 1) * width;
  for (x = x1; x < x2; x++) {
    pixels[i++] |= linecolor;
  }
}
```