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

```asm
<process_gquad_enumeration>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %rdi,-0x38(%rbp)
  mov    %esi,-0x3c(%rbp)
  mov    %edx,-0x40(%rbp)
  mov    %rcx,-0x48(%rbp)
  mov    %r8,-0x50(%rbp)
  mov    %r9,-0x58(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x60(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x68(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x40(%rbp),%eax
  sub    -0x3c(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x24(%rbp)
  cmpl   $0xa,-0x24(%rbp)
  jle    L91
  cmpl   $0x49,-0x24(%rbp)
  jg     L91
  mov    -0x3c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    $0x7,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x28(%rbp)
  jmp    L62
L27:
  mov    -0x40(%rbp),%eax
  sub    -0x28(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x28(%rbp)
  jg     L63
  mov    -0x28(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x24(%rbp),%eax
  sub    %edx,%eax
  mov    %eax,-0x20(%rbp)
  cmpl   $0x2,-0x20(%rbp)
  jle    L63
  cmpl   $0x2d,-0x20(%rbp)
  jg     L63
  mov    -0x20(%rbp),%eax
  mov    $0x11,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  sub    $0x2,%eax
  mov    %eax,-0x1c(%rbp)
  movl   $0x1,-0x14(%rbp)
  jmp    L89
L88:
  mov    -0x3c(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x28(%rbp)
  jg     L80
  mov    -0x14(%rbp),%edx
  mov    -0x20(%rbp),%eax
  sub    %edx,%eax
  mov    $0x10,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  sub    $0x1,%eax
  mov    %eax,-0x18(%rbp)
  movl   $0x1,-0x10(%rbp)
  jmp    L46
L70:
  mov    -0x28(%rbp),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0x3c(%rbp),%eax
  add    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x28(%rbp)
  jg     L86
  mov    -0x14(%rbp),%edx
  mov    -0x20(%rbp),%eax
  sub    %edx,%eax
  mov    -0x10(%rbp),%edx
  sub    %edx,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x60(%rbp),%r8
  mov    -0x58(%rbp),%rdi
  mov    -0x50(%rbp),%rcx
  lea    -0x14(%rbp),%rdx
  mov    -0x28(%rbp),%esi
  mov    -0x3c(%rbp),%eax
  sub    $0x8,%rsp
  push   -0x68(%rbp)
  mov    -0x48(%rbp),%r10
  mov    %r8,%r9
  mov    %rdi,%r8
  mov    %eax,%edi
  call   *%r10
  add    $0x10,%rsp
L86:
  mov    -0x10(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x10(%rbp)
L46:
  mov    -0x10(%rbp),%eax
  cmp    %eax,-0x18(%rbp)
  jge    L70
L80:
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x14(%rbp)
L89:
  mov    -0x14(%rbp),%eax
  cmp    %eax,-0x1c(%rbp)
  jge    L88
L63:
  subl   $0x1,-0x28(%rbp)
L62:
  cmpl   $0x1,-0x28(%rbp)
  jg     L27
L91:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L115
  call   <__stack_chk_fail@plt>
L115:
  leave
  ret
```

assistant: ```c
void process_gquad_enumeration(int *gg, int i, int j, void (*f)(int, int, int *, void *, void *, void *, void *), void *data, void *P, void *aux1, void *aux2) {
  int L, l[3], n, max_linker, maxl0, maxl1;
  n = j - i + 1;
  if ((n >= ((4 * 2) + (3 * 1))) && (n <= ((4 * 7) + (3 * 15))))
    for (L = ((gg[i]) < (7) ? (gg[i]) : (7)); L >= 2; L--)
      if (gg[j - L + 1] >= L) {
        max_linker = n - 4 * L;
        if ((max_linker >= 3 * 1) && (max_linker <= 3 * 15)) {
          maxl0 = ((15) < (max_linker - 2 * 1) ? (15) : (max_linker - 2 * 1));
          for (l[0] = 1; l[0] <= maxl0; l[0]++)
            if (gg[i + L + l[0]] >= L) {
              maxl1 = ((15) < (max_linker - l[0] - 1) ? (15) : (max_linker - l[0] - 1));
              for (l[1] = 1; l[1] <= maxl1; l[1]++)
                if (gg[i + 2 * L + l[0] + l[1]] >= L) {
                  l[2] = max_linker - l[0] - l[1];
                  f(i, L, &(l[0]), data, P, aux1, aux2);
                }
            }
        }
      }
}
```