user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<eigenQREV>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x68,%rsp
  mov    %rdi,-0x48(%rbp)
  mov    %rsi,-0x50(%rbp)
  mov    %edx,-0x54(%rbp)
  mov    %rcx,-0x60(%rbp)
  mov    %r8,-0x68(%rbp)
  mov    %r9,-0x70(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  movsd  D21(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movl   $0x0,-0x34(%rbp)
  movl   $0x0,-0x28(%rbp)
  jmp    L434
L27:
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L163
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x28(%rbp),%eax
  lea    0x1(%rax),%ecx
  mov    %ecx,-0x28(%rbp)
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x20(%rbp),%rax
  lea    (%rcx,%rax,1),%rbx
  movq   %rdx,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
L163:
  addl   $0x1,-0x34(%rbp)
L434:
  mov    -0x34(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jl     L27
  mov    -0x28(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jne    L425
  movl   $0x0,-0x38(%rbp)
  jmp    L10
L6:
  movl   $0x0,-0x34(%rbp)
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rax,%rdx
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x38(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x68(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L373
L125:
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x34(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x38(%rbp),%edx
  mov    %edx,%ecx
  imul   -0x54(%rbp),%ecx
  mov    -0x34(%rbp),%edx
  add    %ecx,%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x68(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rax),%xmm0
  movsd  %xmm0,(%rdx)
  addl   $0x1,-0x34(%rbp)
L373:
  mov    -0x34(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  jl     L125
  addl   $0x1,-0x38(%rbp)
L10:
  mov    -0x38(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jl     L6
  mov    -0x70(%rbp),%rcx
  mov    -0x60(%rbp),%rdx
  mov    -0x54(%rbp),%esi
  mov    -0x68(%rbp),%rax
  mov    %rax,%rdi
  call   <eigenRealSym@plt>
  mov    %eax,-0x24(%rbp)
  movl   $0x0,-0x38(%rbp)
  jmp    L173
L449:
  movl   $0x0,-0x34(%rbp)
  jmp    L199
L78:
  mov    -0x34(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x34(%rbp)
L199:
  mov    -0x34(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jl     L78
  addl   $0x1,-0x38(%rbp)
L173:
  mov    -0x38(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jl     L449
  movl   $0x0,-0x38(%rbp)
  jmp    L314
L261:
  movl   $0x0,-0x34(%rbp)
  jmp    L207
L87:
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x34(%rbp)
L207:
  mov    -0x34(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jl     L87
  addl   $0x1,-0x38(%rbp)
L314:
  mov    -0x38(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jl     L261
  jmp    L369
L425:
  movl   $0x0,-0x38(%rbp)
  movl   $0x0,-0x30(%rbp)
  jmp    L246
L323:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L298
  movl   $0x0,-0x34(%rbp)
  movl   $0x0,-0x2c(%rbp)
  jmp    L539
L243:
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L479
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x2c(%rbp),%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x30(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x30(%rbp),%edx
  mov    %edx,%ecx
  imul   -0x28(%rbp),%ecx
  mov    -0x2c(%rbp),%edx
  add    %ecx,%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x68(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rax),%xmm0
  movsd  %xmm0,(%rdx)
  addl   $0x1,-0x2c(%rbp)
L479:
  addl   $0x1,-0x34(%rbp)
L539:
  mov    -0x34(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  jl     L243
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x30(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x68(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x30(%rbp)
L298:
  addl   $0x1,-0x38(%rbp)
L246:
  mov    -0x38(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jl     L323
  mov    -0x70(%rbp),%rcx
  mov    -0x60(%rbp),%rdx
  mov    -0x28(%rbp),%esi
  mov    -0x68(%rbp),%rax
  mov    %rax,%rdi
  call   <eigenRealSym@plt>
  mov    %eax,-0x24(%rbp)
  mov    -0x54(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x28(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x30(%rbp)
  jmp    L350
L106:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L402
  mov    -0x30(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,-0x30(%rbp)
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  jmp    L421
L402:
  pxor   %xmm0,%xmm0
L421:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  movsd  %xmm0,(%rax)
  subl   $0x1,-0x38(%rbp)
L350:
  cmpl   $0x0,-0x38(%rbp)
  jns    L106
  mov    -0x54(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x28(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x30(%rbp)
  jmp    L341
L96:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L359
  mov    -0x54(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x28(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x2c(%rbp)
  jmp    L156
L371:
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L19
  mov    -0x2c(%rbp),%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x30(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  subl   $0x1,-0x2c(%rbp)
  jmp    L155
L19:
  mov    -0x38(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jne    L25
  movsd  D19(%rip),%xmm0
  jmp    L254
L25:
  pxor   %xmm0,%xmm0
L254:
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movsd  %xmm0,(%rax)
L155:
  subl   $0x1,-0x34(%rbp)
L156:
  cmpl   $0x0,-0x34(%rbp)
  jns    L371
  subl   $0x1,-0x30(%rbp)
  jmp    L4
L359:
  movl   $0x0,-0x34(%rbp)
  jmp    L420
L395:
  mov    -0x38(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jne    L414
  movsd  D19(%rip),%xmm0
  jmp    L20
L414:
  pxor   %xmm0,%xmm0
L20:
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x34(%rbp)
L420:
  mov    -0x34(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jl     L395
L4:
  subl   $0x1,-0x38(%rbp)
L341:
  cmpl   $0x0,-0x38(%rbp)
  jns    L96
  mov    -0x54(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x28(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x30(%rbp)
  jmp    L202
L18:
  mov    -0x38(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L44
  mov    -0x54(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x28(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x2c(%rbp)
  jmp    L339
L86:
  mov    -0x34(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L306
  mov    -0x30(%rbp),%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  subl   $0x1,-0x2c(%rbp)
  jmp    L167
L306:
  mov    -0x38(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jne    L32
  movsd  D19(%rip),%xmm0
  jmp    L328
L32:
  pxor   %xmm0,%xmm0
L328:
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  %xmm0,(%rax)
L167:
  subl   $0x1,-0x34(%rbp)
L339:
  cmpl   $0x0,-0x34(%rbp)
  jns    L86
  subl   $0x1,-0x30(%rbp)
  jmp    L45
L44:
  movl   $0x0,-0x34(%rbp)
  jmp    L468
L469:
  mov    -0x38(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jne    L398
  movsd  D19(%rip),%xmm0
  jmp    L23
L398:
  pxor   %xmm0,%xmm0
L23:
  mov    -0x38(%rbp),%eax
  imul   -0x54(%rbp),%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x34(%rbp)
L468:
  mov    -0x34(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jl     L469
L45:
  subl   $0x1,-0x38(%rbp)
L202:
  cmpl   $0x0,-0x38(%rbp)
  jns    L18
L369:
  mov    -0x24(%rbp),%eax
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D21
datatype: byte[8]
name: parse_data
arguments: data_tag: D19
datatype: byte[8]

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

tool: {"D19": [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);
}
```