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

```asm
<crosscheck>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x38(%rbp)
  mov    %rsi,-0x40(%rbp)
  mov    %rdx,-0x48(%rbp)
  mov    %ecx,-0x4c(%rbp)
  mov    %r8d,-0x50(%rbp)
  mov    %r9d,-0x54(%rbp)
  movl   $0x0,-0x2c(%rbp)
  jmp    L82
L83:
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x28(%rbp)
  jmp    L44
L33:
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x28(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x28(%rbp)
L44:
  mov    -0x28(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jl     L33
  addl   $0x1,-0x2c(%rbp)
L82:
  mov    -0x2c(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jl     L83
  movl   $0x0,-0x30(%rbp)
  jmp    L3
L97:
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x54(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x24(%rbp)
  cmpl   $0x0,-0x24(%rbp)
  je     L34
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x54(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movl   $0x0,-0x2c(%rbp)
  jmp    L101
L54:
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x18(%rbp),%xmm0
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x28(%rbp)
  jmp    L64
L49:
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x28(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  movsd  -0x10(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x28(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x28(%rbp)
L64:
  mov    -0x28(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jl     L49
  addl   $0x1,-0x2c(%rbp)
L101:
  mov    -0x2c(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jl     L54
L34:
  addl   $0x1,-0x30(%rbp)
L3:
  mov    -0x30(%rbp),%eax
  cmp    -0x4c(%rbp),%eax
  jl     L97
  nop
  pop    %rbp
  ret
```

assistant: ```c
void crosscheck(double **x, double **ystar, int **ok, int n, int q, int j, double **xpx, double *xpy) {
  int i, k, l, okij;
  double *xrow, ystarij, xk, xl;
  for (k = 0; k < q; k++) {
    xpy[k] = 0.0;
    for (l = 0; l < q; l++) {
      xpx[k][l] = 0.0;
    }
  }
  for (i = 0; i < n; i++) {
    okij = ok[i][j];
    if (okij) {
      xrow = x[i];
      ystarij = ystar[i][j];
      for (k = 0; k < q; k++) {
        xk = xrow[k];
        xpy[k] += xk * ystarij;
        for (l = 0; l < q; l++) {
          xl = xrow[l];
          xpx[k][l] += xk * xl;
        }
      }
    }
  }
  return;
}
```