user: 请将以下的汇编代码转换成C语言代码:

```asm
<odrra_>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %rdi,-0x38(%rbp)
  mov    %rsi,-0x40(%rbp)
  mov    %rdx,-0x48(%rbp)
  mov    %rcx,-0x50(%rbp)
  mov    %r8,-0x58(%rbp)
  mov    %r9,-0x60(%rbp)
  subq   $0x4,0x18(%rbp)
  subq   $0x8,-0x50(%rbp)
  subq   $0x8,-0x48(%rbp)
  subq   $0x8,-0x40(%rbp)
  mov    0x20(%rbp),%rax
  movl   $0x0,(%rax)
  mov    0x10(%rbp),%rax
  movl   $0x1,(%rax)
  mov    -0x58(%rbp),%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comisd %xmm1,%xmm0
  jbe    L75
  mov    -0x58(%rbp),%rax
  movsd  (%rax),%xmm0
  movq   D19(%rip),%xmm1
  andpd  %xmm0,%xmm1
  mov    -0x60(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  mov    %eax,-0x24(%rbp)
  movl   $0x1,-0x28(%rbp)
  jmp    L57
L19:
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm0
  movq   D19(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x8(%rbp),%xmm0
  comisd -0x18(%rbp),%xmm0
  jb     L3
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%eax
  mov    %eax,(%rdx)
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    0x10(%rbp),%rax
  mov    %edx,(%rax)
L3:
  addl   $0x1,-0x28(%rbp)
L57:
  mov    -0x28(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jle    L19
  jmp    L16
L75:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  mov    %eax,-0x24(%rbp)
  movl   $0x1,-0x28(%rbp)
  jmp    L35
L36:
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm0
  movq   D19(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x58(%rbp),%rax
  movsd  (%rax),%xmm4
  movsd  %xmm4,-0x68(%rbp)
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm0
  movq   D19(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  mulsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  mov    -0x28(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm0
  movq   D19(%rip),%xmm1
  movapd %xmm0,%xmm3
  andpd  %xmm1,%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  mulsd  -0x68(%rbp),%xmm0
  comisd -0x18(%rbp),%xmm0
  jb     L18
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x28(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%eax
  mov    %eax,(%rdx)
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  lea    0x1(%rax),%edx
  mov    0x10(%rbp),%rax
  mov    %edx,(%rax)
L18:
  addl   $0x1,-0x28(%rbp)
L35:
  mov    -0x28(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jle    L36
L16:
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D19
type: qword

tool: D19: 9223372036854775807

assistant: ```c
int odrra_(int *n, double *d__, double *e, double *e2, double *spltol, double *tnrm, int *nsplit, int *isplit, int *info) {
  int i__1;
  double d__1, d__2;
  int i__;
  double tmp1, eabs;
  --isplit;
  --e2;
  --e;
  --d__;
  *info = 0;
  *nsplit = 1;
  if (*spltol < 0.) {
    tmp1 = fabs(*spltol) * *tnrm;
    i__1 = *n - 1;
    for (i__ = 1; i__ <= i__1; ++i__) {
      eabs = (d__1 = e[i__], fabs(d__1));
      if (eabs <= tmp1) {
        e[i__] = 0.;
        e2[i__] = 0.;
        isplit[*nsplit] = i__;
        ++(*nsplit);
      }
    }
  } else {
    i__1 = *n - 1;
    for (i__ = 1; i__ <= i__1; ++i__) {
      eabs = (d__1 = e[i__], fabs(d__1));
      if (eabs <= *spltol * sqrt((d__1 = d__[i__], fabs(d__1))) * sqrt((d__2 = d__[i__ + 1], fabs(d__2)))) {
        e[i__] = 0.;
        e2[i__] = 0.;
        isplit[*nsplit] = i__;
        ++(*nsplit);
      }
    }
  }
  isplit[*nsplit] = *n;
  return 0;
}
```