user: What would the C source look like for the assembly code provided here:

```asm
<qpcomb_y>:
  endbr64
  push   %r15
  mov    %edx,%ecx
  mov    $0x1,%r10d
  mov    $0x2,%r11d
  push   %r14
  neg    %ecx
  mov    $0x7,%r14d
  mov    %rdi,%r9
  push   %r13
  mov    $0x6,%r13d
  sub    %edx,%r10d
  lea    0x1(%rdx),%edi
  push   %r12
  mov    $0x5,%r12d
  sub    %edx,%r11d
  sub    %edx,%r13d
  push   %rbp
  mov    $0x4,%ebp
  sub    %edx,%r12d
  sub    %edx,%r14d
  push   %rbx
  movslq %ecx,%rbx
  sub    %edx,%ebp
  mov    %rsi,%rax
  movslq %r10d,%r10
  movslq %edi,%rdi
  movslq %r11d,%r11
  movslq %ebp,%rbp
  movslq %r12d,%r12
  movslq %r13d,%r13
  movslq %r14d,%r14
  mov    %rbx,-0x8(%rsp)
  mov    $0x3,%ebx
  sub    %edx,%ebx
  movslq %ebx,%rbx
  cmp    $0x1,%edx
  jne    L11
  mov    %r9,%rsi
  add    %r9,%rdi
  xor    %r15d,%r15d
  mov    $0x4,%r9d
L12:
  mov    -0x8(%rsp),%rdx
  movzbl 0x1(%rsi),%ecx
  movzbl (%rax,%rdx,1),%edx
  lea    0x0(,%rdx,4),%r8d
  sub    %r8d,%edx
  movzbl (%rsi),%r8d
  add    %edx,%r8d
  lea    (%rcx,%rcx,2),%edx
  add    %r8d,%edx
  movzbl (%rax),%r8d
  sub    %r8d,%edx
  mov    %edx,%r8d
  sar    $0x1f,%r8d
  xor    %edx,%r8d
  shr    $0x1f,%edx
  add    %edx,%r8d
  movzbl (%rax,%r10,1),%edx
  add    %r8d,%r15d
  lea    0x0(,%rdx,4),%r8d
  sub    %r8d,%edx
  add    %ecx,%edx
  movzbl (%rdi),%ecx
  lea    (%rcx,%rcx,2),%ecx
  add    %ecx,%edx
  movzbl 0x1(%rax),%ecx
  sub    %ecx,%edx
  mov    %edx,%r8d
  sar    $0x1f,%r8d
  xor    %edx,%r8d
  shr    $0x1f,%edx
  add    %edx,%r8d
  movzbl (%rax,%r11,1),%edx
  add    %r15d,%r8d
  lea    0x0(,%rdx,4),%ecx
  sub    %ecx,%edx
  movzbl 0x2(%rsi),%ecx
  add    %ecx,%edx
  movzbl 0x1(%rdi),%ecx
  lea    (%rcx,%rcx,2),%ecx
  add    %ecx,%edx
  movzbl 0x2(%rax),%ecx
  sub    %ecx,%edx
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  xor    %edx,%ecx
  shr    $0x1f,%edx
  add    %edx,%ecx
  movzbl (%rax,%rbx,1),%edx
  add    %r8d,%ecx
  lea    0x0(,%rdx,4),%r8d
  sub    %r8d,%edx
  movzbl 0x3(%rsi),%r8d
  add    %r8d,%edx
  movzbl 0x2(%rdi),%r8d
  lea    (%r8,%r8,2),%r8d
  add    %r8d,%edx
  movzbl 0x3(%rax),%r8d
  sub    %r8d,%edx
  mov    %edx,%r8d
  sar    $0x1f,%r8d
  xor    %edx,%r8d
  shr    $0x1f,%edx
  add    %edx,%r8d
  movzbl (%rax,%rbp,1),%edx
  add    %ecx,%r8d
  lea    0x0(,%rdx,4),%ecx
  sub    %ecx,%edx
  movzbl 0x4(%rsi),%ecx
  add    %ecx,%edx
  movzbl 0x3(%rdi),%ecx
  lea    (%rcx,%rcx,2),%ecx
  add    %ecx,%edx
  movzbl 0x4(%rax),%ecx
  sub    %ecx,%edx
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  xor    %edx,%ecx
  shr    $0x1f,%edx
  add    %edx,%ecx
  movzbl (%rax,%r12,1),%edx
  add    %r8d,%ecx
  lea    0x0(,%rdx,4),%r8d
  sub    %r8d,%edx
  movzbl 0x5(%rsi),%r8d
  add    %r8d,%edx
  movzbl 0x4(%rdi),%r8d
  lea    (%r8,%r8,2),%r8d
  add    %r8d,%edx
  movzbl 0x5(%rax),%r8d
  sub    %r8d,%edx
  mov    %edx,%r8d
  sar    $0x1f,%r8d
  xor    %edx,%r8d
  shr    $0x1f,%edx
  add    %edx,%r8d
  movzbl (%rax,%r13,1),%edx
  add    %ecx,%r8d
  lea    0x0(,%rdx,4),%ecx
  sub    %ecx,%edx
  movzbl 0x6(%rsi),%ecx
  add    %ecx,%edx
  movzbl 0x5(%rdi),%ecx
  lea    (%rcx,%rcx,2),%ecx
  add    %ecx,%edx
  movzbl 0x6(%rax),%ecx
  sub    %ecx,%edx
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  xor    %edx,%ecx
  shr    $0x1f,%edx
  add    %edx,%ecx
  movzbl (%rax,%r14,1),%edx
  add    %r8d,%ecx
  lea    0x0(,%rdx,4),%r8d
  sub    %r8d,%edx
  movzbl 0x7(%rsi),%r8d
  add    %r8d,%edx
  movzbl 0x6(%rdi),%r8d
  add    $0x1,%rax
  add    $0x1,%rsi
  add    $0x1,%rdi
  lea    (%r8,%r8,2),%r8d
  add    %r8d,%edx
  movzbl 0x6(%rax),%r8d
  sub    %r8d,%edx
  mov    %edx,%r15d
  sar    $0x1f,%r15d
  xor    %edx,%r15d
  shr    $0x1f,%edx
  add    %edx,%r15d
  add    %ecx,%r15d
  sub    $0x1,%r9d
  jne    L12
  pop    %rbx
  mov    %r15d,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L11:
  lea    (%r9,%rdi,1),%rcx
  movslq %edx,%r8
  mov    %r9,%rsi
  mov    $0x4,%edi
  xor    %r15d,%r15d
L3:
  mov    -0x8(%rsp),%rdx
  movzbl (%rax,%rdx,1),%edx
  lea    0x0(,%rdx,4),%r9d
  sub    %r9d,%edx
  movzbl (%rsi),%r9d
  add    %r9d,%edx
  movzbl (%rsi,%r8,1),%r9d
  lea    (%r9,%r9,2),%r9d
  add    %r9d,%edx
  movzbl (%rax),%r9d
  sub    %r9d,%edx
  mov    %edx,%r9d
  sar    $0x1f,%r9d
  xor    %edx,%r9d
  shr    $0x1f,%edx
  add    %edx,%r9d
  add    %r9d,%r15d
  movzbl (%rax,%r10,1),%r9d
  lea    0x0(,%r9,4),%edx
  sub    %edx,%r9d
  movzbl 0x1(%rsi),%edx
  add    %edx,%r9d
  movzbl (%rcx),%edx
  lea    (%rdx,%rdx,2),%edx
  add    %r9d,%edx
  movzbl 0x1(%rax),%r9d
  sub    %r9d,%edx
  mov    %edx,%r9d
  sar    $0x1f,%r9d
  xor    %edx,%r9d
  shr    $0x1f,%edx
  add    %edx,%r9d
  add    %r9d,%r15d
  movzbl (%rax,%r11,1),%r9d
  lea    0x0(,%r9,4),%edx
  sub    %edx,%r9d
  movzbl 0x2(%rsi),%edx
  add    %edx,%r9d
  movzbl 0x1(%rcx),%edx
  lea    (%rdx,%rdx,2),%edx
  add    %r9d,%edx
  movzbl 0x2(%rax),%r9d
  sub    %r9d,%edx
  mov    %edx,%r9d
  sar    $0x1f,%r9d
  xor    %edx,%r9d
  shr    $0x1f,%edx
  add    %edx,%r9d
  add    %r9d,%r15d
  movzbl (%rax,%rbx,1),%r9d
  lea    0x0(,%r9,4),%edx
  sub    %edx,%r9d
  movzbl 0x3(%rsi),%edx
  add    %edx,%r9d
  movzbl 0x2(%rcx),%edx
  lea    (%rdx,%rdx,2),%edx
  add    %r9d,%edx
  movzbl 0x3(%rax),%r9d
  sub    %r9d,%edx
  mov    %edx,%r9d
  sar    $0x1f,%r9d
  xor    %edx,%r9d
  shr    $0x1f,%edx
  add    %edx,%r9d
  add    %r9d,%r15d
  movzbl (%rax,%rbp,1),%r9d
  lea    0x0(,%r9,4),%edx
  sub    %edx,%r9d
  movzbl 0x4(%rsi),%edx
  add    %edx,%r9d
  movzbl 0x3(%rcx),%edx
  lea    (%rdx,%rdx,2),%edx
  add    %r9d,%edx
  movzbl 0x4(%rax),%r9d
  sub    %r9d,%edx
  mov    %edx,%r9d
  sar    $0x1f,%r9d
  xor    %edx,%r9d
  shr    $0x1f,%edx
  add    %edx,%r9d
  add    %r9d,%r15d
  movzbl (%rax,%r12,1),%r9d
  lea    0x0(,%r9,4),%edx
  sub    %edx,%r9d
  movzbl 0x5(%rsi),%edx
  add    %edx,%r9d
  movzbl 0x4(%rcx),%edx
  lea    (%rdx,%rdx,2),%edx
  add    %r9d,%edx
  movzbl 0x5(%rax),%r9d
  sub    %r9d,%edx
  mov    %edx,%r9d
  sar    $0x1f,%r9d
  xor    %edx,%r9d
  shr    $0x1f,%edx
  add    %edx,%r9d
  add    %r9d,%r15d
  movzbl (%rax,%r13,1),%r9d
  lea    0x0(,%r9,4),%edx
  sub    %edx,%r9d
  movzbl 0x6(%rsi),%edx
  add    %edx,%r9d
  movzbl 0x5(%rcx),%edx
  lea    (%rdx,%rdx,2),%edx
  add    %r9d,%edx
  movzbl 0x6(%rax),%r9d
  sub    %r9d,%edx
  mov    %edx,%r9d
  sar    $0x1f,%r9d
  xor    %edx,%r9d
  shr    $0x1f,%edx
  add    %edx,%r9d
  add    %r9d,%r15d
  movzbl (%rax,%r14,1),%r9d
  lea    0x0(,%r9,4),%edx
  sub    %edx,%r9d
  movzbl 0x7(%rsi),%edx
  add    %edx,%r9d
  movzbl 0x6(%rcx),%edx
  add    %r8,%rsi
  add    %r8,%rcx
  lea    (%rdx,%rdx,2),%edx
  add    %r9d,%edx
  movzbl 0x7(%rax),%r9d
  add    %r8,%rax
  sub    %r9d,%edx
  mov    %edx,%r9d
  sar    $0x1f,%r9d
  xor    %edx,%r9d
  shr    $0x1f,%edx
  add    %edx,%r9d
  add    %r9d,%r15d
  sub    $0x1,%edi
  jne    L3
  pop    %rbx
  mov    %r15d,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
int qpcomb_y(unsigned char *a, unsigned char *b, int s) {
  int i, j, diff = 0;
  for (i = 4; i; i--) {
    for (j = 0; j < 8; j++)
      diff += (((a[j] - 3 * b[j - s] + 3 * a[j + s] - b[j]) ^ ((a[j] - 3 * b[j - s] + 3 * a[j + s] - b[j]) >> 31)) - ((a[j] - 3 * b[j - s] + 3 * a[j + s] - b[j]) >> 31));
    a += s;
    b += s;
  }
  return diff;
}
```