user: 下面的汇编指令对应的C源代码是什么：

```asm
<qrbdu1>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x98,%rsp
  movsd  (%rdi),%xmm2
  movq   D111(%rip),%xmm3
  mov    %rdx,0x30(%rsp)
  mov    %r8,0x48(%rsp)
  andpd  %xmm3,%xmm2
  cmp    $0x1,%r9d
  jle    L350
  mov    %r9d,%r11d
  movslq %r9d,%rdx
  mov    $0x1,%eax
  nopl   0x0(%rax)
L238:
  movsd  (%rdi,%rax,8),%xmm0
  movsd  -0x8(%rsi,%rax,8),%xmm1
  add    $0x1,%rax
  andpd  %xmm3,%xmm0
  andpd  %xmm3,%xmm1
  addsd  %xmm1,%xmm0
  maxsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  cmp    %rax,%rdx
  jne    L238
  imul   $0x64,%r11d,%eax
  mulsd  D5(%rip),%xmm2
  movl   $0x0,0x4(%rsp)
  lea    0x0(,%rdx,8),%r9
  mov    %r11d,%r10d
  pxor   %xmm4,%xmm4
  mov    %r9,%r12
  mov    %rdi,%r15
  movq   D27(%rip),%xmm5
  mov    %ecx,%r14d
  mov    %eax,0x24(%rsp)
  nopl   0x0(%rax,%rax,1)
L126:
  lea    -0x1(%r10),%r9d
  movslq %r9d,%r13
  lea    0x0(,%r13,8),%rax
  mov    %rax,0x8(%rsp)
  nopl   0x0(%rax)
L228:
  mov    %rax,%rbx
  mov    %r13d,%ecx
  lea    -0x8(%rax),%rax
  movsd  -0x8(%rsi,%rbx,1),%xmm1
  movapd %xmm1,%xmm0
  andpd  %xmm3,%xmm0
  comisd %xmm0,%xmm2
  ja     L241
  movsd  -0x8(%r15,%rbx,1),%xmm0
  andpd  %xmm3,%xmm0
  comisd %xmm0,%xmm2
  ja     L272
  sub    $0x1,%r13
  jne    L228
  mov    %rsi,0x18(%rsp)
  xor    %ebx,%ebx
  xor    %ecx,%ecx
  mov    %r15,0x10(%rsp)
  movl   $0x1,0x20(%rsp)
L39:
  mov    0x10(%rsp),%rax
  movsd  (%rax),%xmm9
  mov    0x8(%rsp),%rax
  lea    (%r15,%rax,1),%rbp
  lea    -0x8(%rsi,%rax,1),%rdi
  mov    0x18(%rsp),%rax
  movapd %xmm9,%xmm6
  movsd  0x0(%rbp),%xmm10
  movapd %xmm9,%xmm1
  movsd  (%rdi),%xmm0
  movsd  (%rax),%xmm11
  subsd  %xmm10,%xmm1
  addsd  %xmm10,%xmm6
  mulsd  %xmm0,%xmm0
  movapd %xmm11,%xmm7
  mulsd  %xmm9,%xmm7
  mulsd  %xmm1,%xmm6
  movapd %xmm7,%xmm1
  subsd  %xmm0,%xmm6
  addsd  %xmm7,%xmm1
  mulsd  %xmm1,%xmm1
  movapd %xmm6,%xmm0
  mulsd  %xmm6,%xmm0
  addsd  %xmm1,%xmm0
  ucomisd %xmm0,%xmm4
  ja     L344
  sqrtsd %xmm0,%xmm0
  movapd %xmm0,%xmm8
L120:
  comisd %xmm4,%xmm8
  ja     L325
L161:
  movsd  %xmm10,(%rdi)
  andpd  %xmm3,%xmm10
  ucomisd %xmm10,%xmm2
  movsd  %xmm9,0x0(%rbp)
  cmova  %r9d,%r10d
  xor    %eax,%eax
  cmp    0x20(%rsp),%r10d
  sete   %al
  addl   $0x1,0x4(%rsp)
  sub    %eax,%r10d
  mov    0x4(%rsp),%eax
  cmp    $0x1,%r10d
  jle    L327
  cmp    %eax,0x24(%rsp)
  jg     L126
L327:
  mov    0x4(%rsp),%eax
  add    $0x98,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L241:
  lea    (%r15,%rbx,1),%rax
  mov    %rax,0x10(%rsp)
  lea    (%rsi,%rbx,1),%rax
  mov    %rax,0x18(%rsp)
  lea    0x1(%r13),%eax
  mov    %eax,0x20(%rsp)
  jmp    L39
  nop
L272:
  lea    (%r15,%rbx,1),%rdi
  mov    %rdi,0x10(%rsp)
  lea    (%rsi,%rbx,1),%rdi
  mov    %rdi,0x18(%rsp)
  lea    0x1(%r13),%edi
  mov    %edi,0x20(%rsp)
  cmp    %r10d,%r13d
  jge    L39
  add    0x30(%rsp),%rax
  mov    %r13d,0x38(%rsp)
  movapd %xmm4,%xmm8
  lea    0x0(,%r13,8),%rdi
  mov    %rax,0x28(%rsp)
  movslq %r13d,%rax
  lea    (%r15,%rdi,1),%r8
  add    %rsi,%rdi
  mov    %rax,%rdx
  sub    %r13,%rax
  mov    %r10d,0x40(%rsp)
  mov    0x28(%rsp),%r10
  sub    %r13,%rdx
  lea    0x8(,%rdx,8),%rbp
  mov    %r9d,%edx
  sub    %r13d,%edx
  lea    0x2(%rdx,%rax,1),%rax
  lea    0x0(,%rax,8),%rdx
  mov    D55(%rip),%rax
  mov    %rdx,%rcx
  movq   %rax,%xmm7
  cs nopw 0x0(%rax,%rax,1)
L60:
  mulsd  %xmm1,%xmm7
  movsd  -0x8(%r8,%rbp,1),%xmm6
  mulsd  %xmm8,%xmm1
  movapd %xmm7,%xmm0
  movsd  %xmm1,-0x10(%rdi,%rbp,1)
  mulsd  %xmm7,%xmm0
  movapd %xmm6,%xmm1
  mulsd  %xmm6,%xmm1
  addsd  %xmm1,%xmm0
  ucomisd %xmm0,%xmm4
  ja     L103
  sqrtsd %xmm0,%xmm0
L31:
  divsd  %xmm0,%xmm6
  xorpd  %xmm5,%xmm7
  mov    %r10,%rax
  xor    %edx,%edx
  movsd  %xmm0,-0x8(%r8,%rbp,1)
  divsd  %xmm0,%xmm7
  movapd %xmm6,%xmm8
  test   %r14d,%r14d
  jle    L356
  nopw   0x0(%rax,%rax,1)
L132:
  movsd  (%rax),%xmm0
  movsd  (%rax,%rbp,1),%xmm1
  add    $0x1,%edx
  movapd %xmm1,%xmm6
  movapd %xmm0,%xmm9
  mulsd  %xmm8,%xmm6
  mulsd  %xmm7,%xmm9
  mulsd  %xmm8,%xmm0
  mulsd  %xmm7,%xmm1
  subsd  %xmm9,%xmm6
  addsd  %xmm1,%xmm0
  movsd  %xmm6,(%rax,%rbp,1)
  movsd  %xmm0,(%rax)
  add    %r12,%rax
  cmp    %edx,%r14d
  jne    L132
L356:
  add    $0x8,%rbp
  cmp    %rbp,%rcx
  je     L218
  movsd  -0x10(%rdi,%rbp,1),%xmm1
  jmp    L60
  cs nopw 0x0(%rax,%rax,1)
L218:
  mov    0x38(%rsp),%ecx
  mov    0x40(%rsp),%r10d
  jmp    L39
L325:
  movapd %xmm8,%xmm0
  addsd  %xmm8,%xmm6
  addsd  %xmm8,%xmm0
  divsd  %xmm0,%xmm6
  ucomisd %xmm6,%xmm4
  ja     L50
  sqrtsd %xmm6,%xmm6
L11:
  ucomisd %xmm4,%xmm6
  jp     L311
  mov    D55(%rip),%rax
  movq   %rax,%xmm1
  je     L357
L311:
  movapd %xmm8,%xmm0
  mulsd  %xmm6,%xmm0
  divsd  %xmm0,%xmm7
  movapd %xmm7,%xmm1
L357:
  cmp    %r9d,%ecx
  jge    L161
  mov    %rdi,0x8(%rsp)
  lea    0x1(%rcx),%r8d
  mov    0x30(%rsp),%rdi
  mov    %r10d,0x10(%rsp)
  mov    0x48(%rsp),%r10
  movslq %r8d,%r8
  nopl   0x0(%rax,%rax,1)
L219:
  movapd %xmm11,%xmm0
  movapd %xmm6,%xmm10
  lea    (%r10,%rbx,1),%rax
  xor    %edx,%edx
  mulsd  %xmm9,%xmm10
  mulsd  %xmm1,%xmm0
  mulsd  %xmm6,%xmm11
  mulsd  %xmm1,%xmm9
  addsd  %xmm0,%xmm10
  subsd  %xmm9,%xmm11
  nopl   (%rax)
L198:
  movsd  (%rax),%xmm0
  movsd  0x8(%rax),%xmm7
  add    $0x1,%edx
  movapd %xmm7,%xmm8
  movapd %xmm0,%xmm9
  mulsd  %xmm6,%xmm8
  mulsd  %xmm1,%xmm9
  mulsd  %xmm6,%xmm0
  mulsd  %xmm1,%xmm7
  subsd  %xmm9,%xmm8
  addsd  %xmm7,%xmm0
  movsd  %xmm8,0x8(%rax)
  movsd  %xmm0,(%rax)
  add    %r12,%rax
  cmp    %edx,%r11d
  jne    L198
  lea    0x8(%r15,%r13,8),%r13
  movapd %xmm10,%xmm0
  mulsd  0x0(%r13),%xmm1
  mulsd  %xmm10,%xmm0
  movapd %xmm1,%xmm7
  mulsd  %xmm1,%xmm7
  addsd  %xmm7,%xmm0
  ucomisd %xmm0,%xmm4
  ja     L169
  sqrtsd %xmm0,%xmm0
L17:
  movsd  %xmm0,(%r15,%rbx,1)
  divsd  %xmm0,%xmm1
  add    %rdi,%rbx
  xor    %eax,%eax
  mulsd  0x0(%r13),%xmm6
  movapd %xmm6,%xmm9
  movapd %xmm10,%xmm6
  movapd %xmm11,%xmm10
  divsd  %xmm0,%xmm6
  movapd %xmm9,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm11
  mulsd  %xmm6,%xmm10
  mulsd  %xmm6,%xmm9
  addsd  %xmm0,%xmm10
  subsd  %xmm11,%xmm9
  test   %r14d,%r14d
  jle    L66
  nopl   0x0(%rax)
L30:
  movsd  (%rbx),%xmm0
  movsd  0x8(%rbx),%xmm7
  add    $0x1,%eax
  movapd %xmm7,%xmm8
  movapd %xmm0,%xmm11
  mulsd  %xmm6,%xmm8
  mulsd  %xmm1,%xmm11
  mulsd  %xmm6,%xmm0
  mulsd  %xmm1,%xmm7
  subsd  %xmm11,%xmm8
  addsd  %xmm7,%xmm0
  movsd  %xmm8,0x8(%rbx)
  movsd  %xmm0,(%rbx)
  add    %r12,%rbx
  cmp    %eax,%r14d
  jne    L30
L66:
  cmp    %r8d,%r9d
  jle    L72
  movsd  (%rsi,%r8,8),%xmm11
  lea    0x0(,%r8,8),%rbx
  cmp    %r8d,%ecx
  jl     L143
L308:
  mov    %r8,%r13
  add    $0x1,%r8
  jmp    L219
  nop
L143:
  mulsd  %xmm11,%xmm1
  movapd %xmm10,%xmm0
  mulsd  %xmm10,%xmm0
  movapd %xmm1,%xmm7
  mulsd  %xmm1,%xmm7
  addsd  %xmm7,%xmm0
  ucomisd %xmm0,%xmm4
  ja     L109
  sqrtsd %xmm0,%xmm0
L192:
  mulsd  %xmm6,%xmm11
  movapd %xmm10,%xmm6
  movsd  %xmm0,-0x8(%rsi,%r8,8)
  divsd  %xmm0,%xmm6
  divsd  %xmm0,%xmm1
  jmp    L308
L72:
  mov    0x8(%rsp),%rdi
  mov    0x10(%rsp),%r10d
  jmp    L161
L350:
  movl   $0x0,0x4(%rsp)
  jmp    L327
L103:
  mov    %r9d,0x8c(%rsp)
  mov    %r11d,0x88(%rsp)
  mov    %rsi,0x80(%rsp)
  mov    %r10,0x78(%rsp)
  mov    %r8,0x70(%rsp)
  mov    %rcx,0x68(%rsp)
  mov    %rdi,0x60(%rsp)
  movsd  %xmm2,0x58(%rsp)
  movsd  %xmm6,0x50(%rsp)
  movsd  %xmm7,0x28(%rsp)
  call   <sqrt@plt>
  mov    0x78(%rsp),%r10
  mov    0x70(%rsp),%r8
  pxor   %xmm4,%xmm4
  mov    0x8c(%rsp),%r9d
  mov    0x88(%rsp),%r11d
  mov    0x80(%rsp),%rsi
  mov    0x68(%rsp),%rcx
  mov    0x60(%rsp),%rdi
  movsd  0x58(%rsp),%xmm2
  movq   D27(%rip),%xmm5
  movq   D111(%rip),%xmm3
  movsd  0x50(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm7
  jmp    L31
L344:
  mov    %r11d,0x78(%rsp)
  mov    %rsi,0x70(%rsp)
  mov    %r10d,0x60(%rsp)
  mov    %r9d,0x58(%rsp)
  mov    %rdi,0x10(%rsp)
  mov    %ecx,0x8(%rsp)
  movsd  %xmm2,0x68(%rsp)
  movsd  %xmm7,0x50(%rsp)
  movsd  %xmm6,0x40(%rsp)
  movsd  %xmm9,0x38(%rsp)
  movsd  %xmm10,0x28(%rsp)
  movsd  %xmm11,0x18(%rsp)
  call   <sqrt@plt>
  mov    0x78(%rsp),%r11d
  mov    0x70(%rsp),%rsi
  pxor   %xmm4,%xmm4
  movsd  0x68(%rsp),%xmm2
  mov    0x60(%rsp),%r10d
  movapd %xmm0,%xmm8
  movq   D27(%rip),%xmm5
  movq   D111(%rip),%xmm3
  mov    0x58(%rsp),%r9d
  movsd  0x50(%rsp),%xmm7
  movsd  0x40(%rsp),%xmm6
  movsd  0x38(%rsp),%xmm9
  movsd  0x28(%rsp),%xmm10
  movsd  0x18(%rsp),%xmm11
  mov    0x10(%rsp),%rdi
  mov    0x8(%rsp),%ecx
  jmp    L120
L169:
  mov    %r9d,0x88(%rsp)
  mov    %r11d,0x80(%rsp)
  mov    %r10,0x78(%rsp)
  mov    %rdi,0x70(%rsp)
  mov    %rsi,0x68(%rsp)
  mov    %r8,0x60(%rsp)
  mov    %ecx,0x50(%rsp)
  movsd  %xmm2,0x58(%rsp)
  movsd  %xmm6,0x40(%rsp)
  movsd  %xmm1,0x38(%rsp)
  movsd  %xmm11,0x28(%rsp)
  movsd  %xmm10,0x18(%rsp)
  call   <sqrt@plt>
  mov    0x78(%rsp),%r10
  mov    0x70(%rsp),%rdi
  pxor   %xmm4,%xmm4
  mov    0x88(%rsp),%r9d
  mov    0x80(%rsp),%r11d
  mov    0x68(%rsp),%rsi
  mov    0x60(%rsp),%r8
  movsd  0x58(%rsp),%xmm2
  mov    0x50(%rsp),%ecx
  movq   D27(%rip),%xmm5
  movq   D111(%rip),%xmm3
  movsd  0x40(%rsp),%xmm6
  movsd  0x38(%rsp),%xmm1
  movsd  0x28(%rsp),%xmm11
  movsd  0x18(%rsp),%xmm10
  jmp    L17
L109:
  mov    %r9d,0x8c(%rsp)
  mov    %r11d,0x88(%rsp)
  mov    %r10,0x80(%rsp)
  mov    %rdi,0x78(%rsp)
  mov    %rsi,0x70(%rsp)
  mov    %r8,0x68(%rsp)
  mov    %ecx,0x58(%rsp)
  movsd  %xmm2,0x60(%rsp)
  movsd  %xmm1,0x50(%rsp)
  movsd  %xmm6,0x40(%rsp)
  movsd  %xmm9,0x38(%rsp)
  movsd  %xmm10,0x28(%rsp)
  movsd  %xmm11,0x18(%rsp)
  call   <sqrt@plt>
  mov    0x78(%rsp),%rdi
  mov    0x70(%rsp),%rsi
  pxor   %xmm4,%xmm4
  mov    0x8c(%rsp),%r9d
  mov    0x88(%rsp),%r11d
  mov    0x80(%rsp),%r10
  mov    0x68(%rsp),%r8
  movsd  0x60(%rsp),%xmm2
  mov    0x58(%rsp),%ecx
  movq   D27(%rip),%xmm5
  movq   D111(%rip),%xmm3
  movsd  0x50(%rsp),%xmm1
  movsd  0x40(%rsp),%xmm6
  movsd  0x38(%rsp),%xmm9
  movsd  0x28(%rsp),%xmm10
  movsd  0x18(%rsp),%xmm11
  jmp    L192
L50:
  movapd %xmm6,%xmm0
  mov    %r11d,0x78(%rsp)
  mov    %rsi,0x70(%rsp)
  mov    %r10d,0x60(%rsp)
  mov    %r9d,0x58(%rsp)
  mov    %rdi,0x10(%rsp)
  mov    %ecx,0x8(%rsp)
  movsd  %xmm2,0x68(%rsp)
  movsd  %xmm8,0x50(%rsp)
  movsd  %xmm7,0x40(%rsp)
  movsd  %xmm9,0x38(%rsp)
  movsd  %xmm10,0x28(%rsp)
  movsd  %xmm11,0x18(%rsp)
  call   <sqrt@plt>
  mov    0x78(%rsp),%r11d
  mov    0x70(%rsp),%rsi
  pxor   %xmm4,%xmm4
  movsd  0x68(%rsp),%xmm2
  mov    0x60(%rsp),%r10d
  movapd %xmm0,%xmm6
  movq   D27(%rip),%xmm5
  movq   D111(%rip),%xmm3
  mov    0x58(%rsp),%r9d
  movsd  0x50(%rsp),%xmm8
  movsd  0x40(%rsp),%xmm7
  movsd  0x38(%rsp),%xmm9
  movsd  0x28(%rsp),%xmm10
  movsd  0x18(%rsp),%xmm11
  mov    0x10(%rsp),%rdi
  mov    0x8(%rsp),%ecx
  jmp    L11
```

tool_calls: name: read_data
arguments: tag: D111
type_infered: qword
name: read_data
arguments: tag: D5
type_infered: byte[8]
name: read_data
arguments: tag: D27
type_infered: f32[2]
name: read_data
arguments: tag: D55
type_infered: f64

tool: D111: 9223372036854775807

tool: {"D5": [0x16,0x56,0xe7,0x9e,0xaf,0x03,0xd2,0x3c]}

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

tool: D55: 1

assistant: ```c
int qrbdu1(double *dm, double *em, double *um, int mm, double *vm, int m) {
  int i, j, k, n, jj, nm;
  double u, x, y, a, b, c, s, t, w, *p, *q;
  for (j = 1, t = fabs(dm[0]); j < m; ++j)
    if ((s = fabs(dm[j]) + fabs(em[j - 1])) > t)
      t = s;
  t *= 1.e-15;
  n = 100 * m;
  nm = m;
  for (j = 0; m > 1 && j < n; ++j) {
    for (k = m - 1; k > 0; --k) {
      if (fabs(em[k - 1]) < t)
        break;
      if (fabs(dm[k - 1]) < t) {
        for (i = k, s = 1., c = 0.; i < m; ++i) {
          a = s * em[i - 1];
          b = dm[i];
          em[i - 1] *= c;
          dm[i] = u = sqrt(a * a + b * b);
          s = -a / u;
          c = b / u;
          for (jj = 0, p = um + k - 1; jj < mm; ++jj, p += nm) {
            q = p + i - k + 1;
            w = c * *p + s * *q;
            *q = c * *q - s * *p;
            *p = w;
          }
        }
        break;
      }
    }
    y = dm[k];
    x = dm[m - 1];
    u = em[m - 2];
    a = (y + x) * (y - x) - u * u;
    s = y * em[k];
    b = s + s;
    u = sqrt(a * a + b * b);
    if (u > 0.) {
      c = sqrt((u + a) / (u + u));
      if (c != 0.)
        s /= (c * u);
      else
        s = 1.;
      for (i = k; i < m - 1; ++i) {
        b = em[i];
        if (i > k) {
          a = s * em[i];
          b *= c;
          em[i - 1] = u = sqrt(x * x + a * a);
          c = x / u;
          s = a / u;
        }
        a = c * y + s * b;
        b = c * b - s * y;
        for (jj = 0, p = vm + i; jj < nm; ++jj, p += nm) {
          w = c * *p + s * *(p + 1);
          *(p + 1) = c * *(p + 1) - s * *p;
          *p = w;
        }
        s *= dm[i + 1];
        dm[i] = u = sqrt(a * a + s * s);
        y = c * dm[i + 1];
        c = a / u;
        s /= u;
        x = c * b + s * y;
        y = c * y - s * b;
        for (jj = 0, p = um + i; jj < mm; ++jj, p += nm) {
          w = c * *p + s * *(p + 1);
          *(p + 1) = c * *(p + 1) - s * *p;
          *p = w;
        }
      }
    }
    em[m - 2] = x;
    dm[m - 1] = y;
    if (fabs(x) < t)
      --m;
    if (m == k + 1)
      --m;
  }
  return j;
}
```