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

```asm
<qrlsq>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x68,%rsp
  movsd  D31(%rip),%xmm0
  mov    %rdi,0x18(%rsp)
  mov    %rsi,0x20(%rsp)
  mov    %edx,0x50(%rsp)
  mov    %r8,0x28(%rsp)
  cmp    %ecx,%edx
  jge    L112
  add    $0x68,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L112:
  mov    %ecx,%r14d
  mov    $0x8,%esi
  mov    %edx,%edi
  call   <calloc@plt>
  movslq %r14d,%rbx
  mov    %rax,%r12
  shl    $0x3,%rbx
  test   %r14d,%r14d
  jle    L182
  mov    %rax,%rdi
  mov    0x50(%rsp),%ebp
  lea    0x10(%rax),%rax
  mov    %r14d,0x8(%rsp)
  mov    %rax,0x30(%rsp)
  lea    0x8(%r12),%rax
  lea    0x8(%rbx),%r11
  pxor   %xmm4,%xmm4
  mov    %rax,0x10(%rsp)
  mov    0x18(%rsp),%r15
  lea    -0x1(%rbp),%r8d
  lea    -0x2(%r14),%r13d
  movq   D24(%rip),%xmm5
  sub    0x20(%rsp),%rdi
  jmp    L80
  nopl   (%rax)
L352:
  sub    $0x1,%r13d
  sub    $0x1,%ebp
  add    %r11,%r15
  sub    $0x1,%r8d
  sub    $0x8,%rdi
  cmp    $0xfffffffe,%r13d
  je     L314
L80:
  cmp    $0x1,%ebp
  jle    L352
  mov    0x10(%rsp),%rax
  mov    %r8d,%r14d
  cmpl   $0x1,0x8(%rsp)
  mov    %r15,%rdx
  movapd %xmm4,%xmm2
  lea    (%rax,%r14,8),%rcx
  mov    %r12,%rax
  jne    L317
  nopw   0x0(%rax,%rax,1)
L323:
  movsd  (%rdx),%xmm1
  add    $0x8,%rax
  add    %rbx,%rdx
  movsd  %xmm1,-0x8(%rax)
  mulsd  %xmm1,%xmm1
  addsd  %xmm1,%xmm2
  cmp    %rcx,%rax
  jne    L323
L44:
  comisd %xmm4,%xmm2
  jbe    L352
  ucomisd %xmm2,%xmm4
  ja     L51
  movapd %xmm2,%xmm0
  sqrtsd %xmm0,%xmm0
L139:
  movsd  (%r15),%xmm1
  movapd %xmm0,%xmm7
  xorpd  %xmm5,%xmm7
  comisd %xmm1,%xmm4
  ja     L223
L196:
  mulsd  %xmm0,%xmm1
  addsd  (%r12),%xmm0
  movsd  D3(%rip),%xmm6
  movsd  %xmm0,(%r12)
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm6
  cmp    $0xffffffff,%r13d
  je     L213
  mov    %r13d,%eax
  cmpl   $0x1,0x8(%rsp)
  lea    0x8(%r15),%r9
  lea    0x10(%r15,%rax,8),%r10
  mov    0x10(%rsp),%rax
  lea    (%rax,%r14,8),%rsi
  jne    L157
  cs nopw 0x0(%rax,%rax,1)
L69:
  mov    %r9,%rdx
  mov    %r12,%rax
  movapd %xmm4,%xmm2
  mov    %r9,%rcx
  nopl   (%rax)
L224:
  movsd  (%rcx),%xmm1
  mulsd  (%rax),%xmm1
  add    $0x8,%rax
  add    %rbx,%rcx
  addsd  %xmm1,%xmm2
  cmp    %rax,%rsi
  jne    L224
  mulsd  %xmm6,%xmm2
  mov    %r12,%rax
  nop
L65:
  movsd  (%rax),%xmm3
  movsd  (%rdx),%xmm1
  add    $0x8,%rax
  mulsd  %xmm2,%xmm3
  subsd  %xmm3,%xmm1
  movsd  %xmm1,(%rdx)
  add    %rbx,%rdx
  cmp    %rax,%rsi
  jne    L65
  add    $0x8,%r9
  cmp    %r10,%r9
  jne    L69
L213:
  mov    %ebp,%esi
  mov    %rdi,%r9
  mov    %r12,%rax
  movsd  %xmm7,(%r15)
  shr    %esi
  neg    %r9
  sub    %rdi,%rax
  mov    %r12,%rdx
  lea    -0x1(%rsi),%ecx
  movapd %xmm4,%xmm0
  shl    $0x4,%rcx
  add    0x30(%rsp),%rcx
  nopl   0x0(%rax)
L156:
  movupd (%rdx),%xmm2
  movupd (%r9,%rdx,1),%xmm7
  add    $0x10,%rdx
  mulpd  %xmm7,%xmm2
  addsd  %xmm2,%xmm0
  unpckhpd %xmm2,%xmm2
  addsd  %xmm2,%xmm0
  cmp    %rdx,%rcx
  jne    L156
  mov    %ebp,%r9d
  and    $0xfffffffe,%r9d
  mov    %r9d,%ecx
  lea    (%rax,%rcx,8),%rdx
  cmp    %ebp,%r9d
  je     L99
  movsd  (%r12,%rcx,8),%xmm1
  mulsd  (%rdx),%xmm1
  addsd  %xmm1,%xmm0
L99:
  mulsd  %xmm0,%xmm6
  cmp    0x10(%rsp),%rax
  je     L113
  movapd %xmm6,%xmm2
  shl    $0x4,%rsi
  unpcklpd %xmm2,%xmm2
  add    %rax,%rsi
  nopw   0x0(%rax,%rax,1)
L144:
  movupd (%rax,%rdi,1),%xmm1
  movupd (%rax),%xmm0
  add    $0x10,%rax
  mulpd  %xmm2,%xmm1
  subpd  %xmm1,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %rax,%rsi
  jne    L144
  cmp    %ebp,%r9d
  je     L352
  mulsd  (%r12,%rcx,8),%xmm6
  movsd  (%rdx),%xmm0
  subsd  %xmm6,%xmm0
  movsd  %xmm0,(%rdx)
  jmp    L352
  xchg   %ax,%ax
L317:
  movsd  (%rdx),%xmm0
  add    $0x8,%rax
  add    %rbx,%rdx
  movsd  %xmm0,-0x8(%rax)
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm2
  cmp    %rcx,%rax
  jne    L317
  jmp    L44
  nopw   0x0(%rax,%rax,1)
L28:
  mulsd  %xmm6,%xmm1
  mov    %r12,%rax
  nop
L126:
  movsd  (%rax),%xmm2
  movsd  (%rdx),%xmm0
  add    $0x8,%rax
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,(%rdx)
  add    %rbx,%rdx
  cmp    %rsi,%rax
  jne    L126
  add    $0x8,%r9
  cmp    %r10,%r9
  je     L213
L157:
  mov    %r9,%rdx
  mov    %r12,%rax
  movapd %xmm4,%xmm1
  mov    %r9,%rcx
  nopw   0x0(%rax,%rax,1)
L202:
  movsd  (%rax),%xmm0
  mulsd  (%rcx),%xmm0
  add    $0x8,%rax
  add    %rbx,%rcx
  addsd  %xmm0,%xmm1
  cmp    %rsi,%rax
  jne    L202
  jmp    L28
  nopw   0x0(%rax,%rax,1)
L314:
  mov    0x8(%rsp),%r14d
L171:
  mov    0x20(%rsp),%r15
  mov    0x18(%rsp),%rdi
  mov    %r14d,%edx
  movsd  %xmm4,0x8(%rsp)
  mov    %r15,%rsi
  call   <solvru@plt>
  mov    0x28(%rsp),%rdi
  mov    %r15,%rdx
  movsd  0x8(%rsp),%xmm4
  add    %rbx,%rdx
  cmp    %r14d,0x50(%rsp)
  mov    %eax,(%rdi)
  jle    L325
  mov    0x50(%rsp),%ecx
  sub    %r14d,%ecx
  cmp    $0x1,%ecx
  je     L177
  mov    %ecx,%esi
  mov    %rdx,%rax
  movapd %xmm4,%xmm0
  shr    %esi
  sub    $0x1,%esi
  shl    $0x4,%rsi
  lea    0x10(%rdx,%rsi,1),%rsi
  nopl   (%rax)
L370:
  movupd (%rax),%xmm2
  add    $0x10,%rax
  mulpd  %xmm2,%xmm2
  addsd  %xmm2,%xmm0
  unpckhpd %xmm2,%xmm2
  addsd  %xmm2,%xmm0
  cmp    %rax,%rsi
  jne    L370
  mov    %ecx,%eax
  and    $0xfffffffe,%eax
  mov    %eax,%esi
  lea    (%rdx,%rsi,8),%rdx
  cmp    %ecx,%eax
  je     L299
L351:
  movsd  (%rdx),%xmm1
  mulsd  %xmm1,%xmm1
  addsd  %xmm1,%xmm0
L299:
  mov    %r12,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <free@plt>
  movsd  0x8(%rsp),%xmm0
  add    $0x68,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L223:
  movq   %xmm0,%rax
  movapd %xmm7,%xmm0
  movq   %rax,%xmm7
  jmp    L196
L113:
  lea    0x8(%rax,%r14,8),%rdx
  nopl   0x0(%rax,%rax,1)
L153:
  movsd  (%rax,%rdi,1),%xmm1
  movsd  (%rax),%xmm0
  add    $0x8,%rax
  mulsd  %xmm6,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rax)
  cmp    %rdx,%rax
  jne    L153
  jmp    L352
L325:
  movapd %xmm4,%xmm0
  jmp    L299
L182:
  pxor   %xmm4,%xmm4
  jmp    L171
L177:
  movapd %xmm4,%xmm0
  jmp    L351
L51:
  movapd %xmm2,%xmm0
  mov    %rdi,0x58(%rsp)
  mov    %r8d,0x54(%rsp)
  mov    %r11,0x48(%rsp)
  movsd  %xmm4,0x40(%rsp)
  movsd  %xmm2,0x38(%rsp)
  call   <sqrt@plt>
  mov    0x58(%rsp),%rdi
  mov    0x54(%rsp),%r8d
  mov    0x48(%rsp),%r11
  movq   D24(%rip),%xmm5
  movsd  0x40(%rsp),%xmm4
  movsd  0x38(%rsp),%xmm2
  jmp    L139
```

tool_calls: name: extract_symbolic_data
arguments: label: D31
data_type: f32[2]
name: extract_symbolic_data
arguments: label: D24
data_type: f32[2]
name: extract_symbolic_data
arguments: label: D3
data_type: f64

tool: {"D31": [0.0,-1.875]}

tool: {"D24": [0.0,-0.0]}

tool: D3: 1

assistant: ```c
double qrlsq(double *a, double *b, int m, int n, int *f) {
  double *p, *q, *w;
  double s, h, r;
  int i, j, k, mm, ms;
  if (m < n)
    return -1;
  w = (double *)calloc(m, sizeof(double));
  for (i = 0, mm = m, p = a; i < n; ++i, --mm, p += n + 1) {
    if (mm > 1) {
      for (j = 0, q = p, s = 0.; j < mm; ++j, q += n) {
        w[j] = *q;
        s += *q * *q;
      }
      if (s > 0.) {
        h = sqrt(s);
        if (*p < 0.)
          h = -h;
        s += *p * h;
        s = 1. / s;
        w[0] += h;
        for (k = 1, ms = n - i; k < ms; ++k) {
          for (j = 0, q = p + k, r = 0.; j < mm; q += n)
            r += w[j++] * *q;
          r = r * s;
          for (j = 0, q = p + k; j < mm; q += n)
            *q -= r * w[j++];
        }
        *p = -h;
        for (j = 0, q = b + i, r = 0.; j < mm;)
          r += w[j++] * *q++;
        for (j = 0, q = b + i, r *= s; j < mm;)
          *q++ -= r * w[j++];
      }
    }
  }
  *f = solvru(a, b, n);
  for (j = n, q = b + j, s = 0.; j < m; ++j, ++q)
    s += *q * *q;
  free(w);
  return s;
}
```