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

```asm
<eigenQREV>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  mov    %r9,%r13
  push   %r12
  mov    %r8,%r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %edx,0x4(%rsp)
  mov    0x70(%rsp),%rbx
  mov    %rcx,0x20(%rsp)
  test   %edx,%edx
  jle    L395
  lea    -0x1(%rdx),%eax
  mov    %rdi,%r11
  mov    %rsi,%rbp
  mov    %rsi,%r14
  mov    %eax,0x8(%rsp)
  xor    %r15d,%r15d
  lea    0x8(%rsi,%rax,8),%rax
  pxor   %xmm2,%xmm2
  movsd  D33(%rip),%xmm1
  jmp    L174
  nopl   0x0(%rax)
L126:
  add    $0x8,%r14
  cmp    %rax,%r14
  je     L475
L174:
  movsd  (%r14),%xmm0
  comisd %xmm1,%xmm0
  jbe    L126
  ucomisd %xmm0,%xmm2
  lea    0x1(%r15),%edx
  lea    (%rbx,%r15,8),%r15
  ja     L408
  sqrtsd %xmm0,%xmm0
L152:
  add    $0x8,%r14
  movsd  %xmm0,(%r15)
  movslq %edx,%r15
  cmp    %rax,%r14
  jne    L174
L475:
  mov    0x4(%rsp),%eax
  cmp    %eax,%r15d
  je     L262
  lea    -0x1(%r15),%edi
  mov    %eax,%r14d
  mov    %r13,0x28(%rsp)
  xor    %r10d,%r10d
  mov    %edi,0xc(%rsp)
  lea    0x1(%rax),%edi
  xor    %r8d,%r8d
  xor    %r9d,%r9d
  mov    %edi,0x18(%rsp)
  xor    %edi,%edi
  mov    %r14,0x10(%rsp)
  jmp    L175
  nopl   0x0(%rax)
L250:
  add    $0x1,%r8
  add    0x18(%rsp),%edi
  add    0x4(%rsp),%r10d
  cmp    0x10(%rsp),%r8
  je     L28
L175:
  movsd  0x0(%rbp,%r8,8),%xmm0
  comisd %xmm1,%xmm0
  jbe    L250
  test   %r8,%r8
  je     L200
  mov    %r15d,%r13d
  movslq %r9d,%rax
  mov    %rbp,%rdx
  xor    %esi,%esi
  imul   %r9d,%r13d
  lea    (%rbx,%rax,8),%r14
  mov    %r10d,%eax
L543:
  movsd  (%rdx),%xmm0
  comisd %xmm1,%xmm0
  jbe    L359
  movslq %eax,%rcx
  movsd  (%r11,%rcx,8),%xmm0
  mulsd  (%r14),%xmm0
  movslq %esi,%rcx
  divsd  (%rbx,%rcx,8),%xmm0
  mov    %r15d,%ecx
  imul   %esi,%ecx
  add    %r9d,%ecx
  movslq %ecx,%rcx
  movsd  %xmm0,(%r12,%rcx,8)
  lea    0x0(%r13,%rsi,1),%ecx
  add    $0x1,%esi
  movslq %ecx,%rcx
  movsd  %xmm0,(%r12,%rcx,8)
L359:
  add    $0x1,%eax
  add    $0x8,%rdx
  cmp    %edi,%eax
  jne    L543
L200:
  movslq %edi,%rax
  movsd  (%r11,%rax,8),%xmm0
  mov    %r15d,%eax
  imul   %r9d,%eax
  add    %r9d,%eax
  add    $0x1,%r9d
  cltq
  movsd  %xmm0,(%r12,%rax,8)
  jmp    L250
  nopw   0x0(%rax,%rax,1)
L28:
  mov    0x28(%rsp),%r13
  mov    0x20(%rsp),%rdx
  mov    %r12,%rdi
  mov    %r15d,%esi
  mov    0x10(%rsp),%r14
  mov    %r13,%rcx
  call   <eigenRealSym@plt>
  mov    D33(%rip),%rdi
  mov    0xc(%rsp),%edx
  mov    %eax,0x28(%rsp)
  movslq 0x8(%rsp),%rax
  mov    0x20(%rsp),%rcx
  movq   %rdi,%xmm1
  mov    %rax,0x10(%rsp)
  jmp    L557
  nopw   0x0(%rax,%rax,1)
L506:
  movslq %edx,%rsi
  sub    $0x1,%edx
  movsd  (%rcx,%rsi,8),%xmm0
  movsd  %xmm0,(%rcx,%rax,8)
  sub    $0x1,%rax
  test   %eax,%eax
  js     L274
L557:
  movsd  0x0(%rbp,%rax,8),%xmm0
  comisd %xmm1,%xmm0
  ja     L506
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rcx,%rax,8)
  sub    $0x1,%rax
  test   %eax,%eax
  jns    L557
L274:
  mov    0x4(%rsp),%eax
  imul   0x8(%rsp),%eax
  pxor   %xmm2,%xmm2
  mov    0x10(%rsp),%rsi
  mov    0xc(%rsp),%r10d
  movsd  D37(%rip),%xmm3
  mov    %eax,0x20(%rsp)
  mov    %eax,%r11d
  nopl   0x0(%rax,%rax,1)
L465:
  movsd  0x0(%rbp,%rsi,8),%xmm0
  comisd %xmm1,%xmm0
  ja     L107
  movslq %r11d,%rax
  lea    0x0(%r13,%rax,8),%rdx
  xor    %eax,%eax
  jmp    L15
  nopl   0x0(%rax)
L27:
  movsd  %xmm0,(%rdx,%rax,8)
  add    $0x1,%rax
  cmp    %r14,%rax
  je     L316
L15:
  movapd %xmm2,%xmm0
  cmp    %esi,%eax
  jne    L27
  movapd %xmm3,%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  add    $0x1,%rax
  cmp    %r14,%rax
  jne    L15
L316:
  sub    $0x1,%rsi
  sub    0x4(%rsp),%r11d
  test   %esi,%esi
  jns    L465
L345:
  mov    %r15d,0x18(%rsp)
  mov    0x10(%rsp),%rcx
  pxor   %xmm2,%xmm2
  mov    0xc(%rsp),%r11d
  movsd  D37(%rip),%xmm3
  mov    0x20(%rsp),%r9d
  mov    0x4(%rsp),%r15d
  nopw   0x0(%rax,%rax,1)
L143:
  movsd  0x0(%rbp,%rcx,8),%xmm0
  comisd %xmm1,%xmm0
  ja     L489
  movslq %r9d,%rax
  lea    (%r12,%rax,8),%rdx
  xor    %eax,%eax
  jmp    L178
  nopw   0x0(%rax,%rax,1)
L92:
  movsd  %xmm0,(%rdx,%rax,8)
  add    $0x1,%rax
  cmp    %r14,%rax
  je     L253
L178:
  movapd %xmm2,%xmm0
  cmp    %ecx,%eax
  jne    L92
  movapd %xmm3,%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  add    $0x1,%rax
  cmp    %r14,%rax
  jne    L178
L253:
  sub    $0x1,%rcx
  sub    %r15d,%r9d
  test   %ecx,%ecx
  jns    L143
L526:
  mov    0x28(%rsp),%eax
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  cs nopw 0x0(%rax,%rax,1)
L489:
  movslq %r11d,%rax
  mov    0x18(%rsp),%r13d
  mov    0xc(%rsp),%edi
  lea    (%rbx,%rax,8),%r10
  mov    0x8(%rsp),%eax
  imul   %r11d,%r13d
  lea    (%r9,%rax,1),%edx
  mov    0x10(%rsp),%rax
  jmp    L477
  nopl   0x0(%rax,%rax,1)
L158:
  lea    0x0(%r13,%rdi,1),%r8d
  movslq %edx,%rsi
  sub    $0x1,%rax
  sub    $0x1,%edi
  movslq %r8d,%r8
  sub    $0x1,%edx
  movsd  (%r12,%r8,8),%xmm0
  divsd  (%r10),%xmm0
  movsd  %xmm0,(%r12,%rsi,8)
  test   %eax,%eax
  js     L166
L477:
  movsd  0x0(%rbp,%rax,8),%xmm0
  comisd %xmm1,%xmm0
  ja     L158
  movapd %xmm2,%xmm0
  cmp    %ecx,%eax
  je     L18
L542:
  movslq %edx,%rsi
  sub    $0x1,%rax
  sub    $0x1,%edx
  movsd  %xmm0,(%r12,%rsi,8)
  test   %eax,%eax
  jns    L477
L166:
  sub    $0x1,%rcx
  sub    $0x1,%r11d
  sub    %r15d,%r9d
  test   %ecx,%ecx
  jns    L143
  jmp    L526
  cs nopw 0x0(%rax,%rax,1)
L107:
  mov    0x8(%rsp),%eax
  mov    0xc(%rsp),%edi
  lea    (%r11,%rax,1),%edx
  mov    0x10(%rsp),%rax
  jmp    L145
  nopl   0x0(%rax,%rax,1)
L441:
  mov    %r15d,%ecx
  movslq %edi,%r9
  movslq %edx,%r8
  sub    $0x1,%rax
  imul   %edi,%ecx
  sub    $0x1,%edx
  sub    $0x1,%edi
  add    %r10d,%ecx
  movslq %ecx,%rcx
  movsd  (%r12,%rcx,8),%xmm0
  mulsd  (%rbx,%r9,8),%xmm0
  movsd  %xmm0,0x0(%r13,%r8,8)
  test   %eax,%eax
  js     L37
L145:
  movsd  0x0(%rbp,%rax,8),%xmm0
  comisd %xmm1,%xmm0
  ja     L441
  movapd %xmm2,%xmm0
  cmp    %esi,%eax
  je     L202
L211:
  movslq %edx,%rcx
  sub    $0x1,%rax
  sub    $0x1,%edx
  movsd  %xmm0,0x0(%r13,%rcx,8)
  test   %eax,%eax
  jns    L145
L37:
  sub    $0x1,%rsi
  sub    $0x1,%r10d
  sub    0x4(%rsp),%r11d
  test   %esi,%esi
  jns    L465
  jmp    L345
  xchg   %ax,%ax
L202:
  movapd %xmm3,%xmm0
  jmp    L211
  cs nopw 0x0(%rax,%rax,1)
L18:
  movapd %xmm3,%xmm0
  jmp    L542
  nopl   0x0(%rax)
L262:
  movslq 0x4(%rsp),%rbp
  movsd  (%r11),%xmm0
  mov    $0x1,%ecx
  mov    0x8(%rsp),%r15d
  mov    %rbp,%rax
  shl    $0x3,%rbp
  movsd  %xmm0,(%r12)
  lea    0x8(%rbp),%r10
  mov    %eax,%r14d
  lea    (%r11,%rbp,1),%rdi
  lea    (%r12,%rbp,1),%rsi
  mov    %r10,%r9
  cmp    %r14,%rcx
  je     L539
  nopl   0x0(%rax,%rax,1)
L72:
  movsd  (%r11,%r9,1),%xmm0
  movsd  %xmm0,(%r12,%r9,1)
  test   %ecx,%ecx
  jle    L327
  lea    0x0(,%rcx,8),%r8
  xor    %eax,%eax
  lea    (%r12,%r8,1),%rdx
  xchg   %ax,%ax
L267:
  movsd  (%rdi,%rax,1),%xmm0
  mulsd  (%rbx,%rcx,8),%xmm0
  divsd  (%rbx,%rax,1),%xmm0
  movsd  %xmm0,(%rdx)
  add    %rbp,%rdx
  movsd  %xmm0,(%rsi,%rax,1)
  add    $0x8,%rax
  cmp    %r8,%rax
  jne    L267
L327:
  add    $0x1,%rcx
  add    %rbp,%rdi
  add    %rbp,%rsi
  add    %r10,%r9
  cmp    %r14,%rcx
  jne    L72
L539:
  mov    0x4(%rsp),%esi
  mov    0x20(%rsp),%rdx
  mov    %r13,%rcx
  mov    %r12,%rdi
  call   <eigenRealSym@plt>
  mov    0x4(%rsp),%edi
  mov    %r12,%rsi
  xor    %ecx,%ecx
  mov    %eax,0x28(%rsp)
  nopw   0x0(%rax,%rax,1)
L184:
  mov    %rsi,%rdx
  xor    %eax,%eax
  nopl   (%rax)
L362:
  movsd  (%rdx),%xmm0
  mulsd  (%rbx,%rax,8),%xmm0
  add    %rbp,%rdx
  movsd  %xmm0,0x0(%r13,%rax,8)
  add    $0x1,%rax
  cmp    %r14,%rax
  jne    L362
  add    $0x1,%ecx
  add    $0x8,%rsi
  add    %rbp,%r13
  cmp    %ecx,%edi
  jne    L184
  lea    0x0(,%r15,8),%rax
  mov    $0xfffffffffffffff8,%rcx
  lea    0x8(%r12,%rax,1),%rdx
  lea    0x8(%rax,%rbx,1),%rsi
  sub    %rax,%rcx
  xchg   %ax,%ax
L535:
  lea    (%rcx,%rdx,1),%rax
  nopl   0x0(%rax)
L127:
  movsd  (%rax),%xmm0
  add    $0x8,%rax
  divsd  (%rbx),%xmm0
  movsd  %xmm0,-0x8(%rax)
  cmp    %rdx,%rax
  jne    L127
  add    $0x8,%rbx
  add    %rbp,%rdx
  cmp    %rbx,%rsi
  jne    L535
  jmp    L526
L395:
  mov    0x20(%rsp),%rdx
  add    $0x38,%rsp
  mov    %r9,%rcx
  xor    %esi,%esi
  pop    %rbx
  mov    %r8,%rdi
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1070 <eigenRealSym@plt>
L408:
  mov    %r11,0x18(%rsp)
  mov    %rax,0x10(%rsp)
  mov    %edx,0xc(%rsp)
  call   <sqrt@plt>
  mov    D33(%rip),%rdi
  mov    0x18(%rsp),%r11
  pxor   %xmm2,%xmm2
  mov    0x10(%rsp),%rax
  mov    0xc(%rsp),%edx
  movq   %rdi,%xmm1
  jmp    L152
```

tool_calls: name: disassemble_data
arguments: data_label: D33
type: byte[8]
name: disassemble_data
arguments: data_label: D37
type: byte[8]

tool: {"D33": [0x30,0x05,0x8e,0xe4,0x2e,0xff,0x2b,0x2b]}

tool: {"D37": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

assistant: ```c
int eigenQREV(double Q[], double pi[], int n, double Root[], double U[], double V[], double spacesqrtpi[]) {
  int i, j, inew, jnew, nnew, status;
  double *pi_sqrt = spacesqrtpi, small = 1e-100;
  for (j = 0, nnew = 0; j < n; j++)
    if (pi[j] > small)
      pi_sqrt[nnew++] = sqrt(pi[j]);
  if (nnew == n) {
    for (i = 0; i < n; i++)
      for (j = 0, U[i * n + i] = Q[i * n + i]; j < i; j++)
        U[i * n + j] = U[j * n + i] = (Q[i * n + j] * pi_sqrt[i] / pi_sqrt[j]);
    status = eigenRealSym(U, n, Root, V);
    for (i = 0; i < n; i++)
      for (j = 0; j < n; j++)
        V[i * n + j] = U[j * n + i] * pi_sqrt[j];
    for (i = 0; i < n; i++)
      for (j = 0; j < n; j++)
        U[i * n + j] /= pi_sqrt[i];
  } else {
    for (i = 0, inew = 0; i < n; i++) {
      if (pi[i] > small) {
        for (j = 0, jnew = 0; j < i; j++)
          if (pi[j] > small) {
            U[inew * nnew + jnew] = U[jnew * nnew + inew] = Q[i * n + j] * pi_sqrt[inew] / pi_sqrt[jnew];
            jnew++;
          }
        U[inew * nnew + inew] = Q[i * n + i];
        inew++;
      }
    }
    status = eigenRealSym(U, nnew, Root, V);
    for (i = n - 1, inew = nnew - 1; i >= 0; i--)
      Root[i] = (pi[i] > small ? Root[inew--] : 0);
    for (i = n - 1, inew = nnew - 1; i >= 0; i--) {
      if (pi[i] > small) {
        for (j = n - 1, jnew = nnew - 1; j >= 0; j--)
          if (pi[j] > small) {
            V[i * n + j] = U[jnew * nnew + inew] * pi_sqrt[jnew];
            jnew--;
          } else
            V[i * n + j] = (i == j);
        inew--;
      } else
        for (j = 0; j < n; j++)
          V[i * n + j] = (i == j);
    }
    for (i = n - 1, inew = nnew - 1; i >= 0; i--) {
      if (pi[i] > small) {
        for (j = n - 1, jnew = nnew - 1; j >= 0; j--)
          if (pi[j] > small) {
            U[i * n + j] = U[inew * nnew + jnew] / pi_sqrt[inew];
            jnew--;
          } else
            U[i * n + j] = (i == j);
        inew--;
      } else
        for (j = 0; j < n; j++)
          U[i * n + j] = (i == j);
    }
  }
  return (status);
}
```