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

```asm
<leigen>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x78,%rsp
  mov    %rdi,-0x68(%rbp)
  mov    %rsi,-0x70(%rbp)
  movq   $0x0,-0x58(%rbp)
  mov    -0x68(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x68(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x68(%rbp),%rax
  add    $0x40,%rax
  movsd  (%rax),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x68(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x68(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x68(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm2
  mov    -0x68(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x68(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm2
  mov    -0x68(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x68(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x68(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x68(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm2
  mov    -0x68(%rbp),%rax
  add    $0x40,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x68(%rbp),%rax
  movsd  (%rax),%xmm2
  mov    -0x68(%rbp),%rax
  add    $0x40,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x68(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x68(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm2
  mov    -0x68(%rbp),%rax
  add    $0x40,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    -0x68(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm3
  mov    -0x68(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm2
  mulsd  %xmm3,%xmm2
  subsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x68(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm2
  mov    -0x68(%rbp),%rax
  add    $0x28,%rax
  movsd  (%rax),%xmm3
  mov    -0x68(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm3,%xmm0
  mov    -0x68(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm4
  mov    -0x68(%rbp),%rax
  add    $0x40,%rax
  movsd  (%rax),%xmm3
  mulsd  %xmm4,%xmm3
  subsd  %xmm3,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x68(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm2
  mov    -0x68(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm3
  mov    -0x68(%rbp),%rax
  add    $0x38,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm3,%xmm0
  mov    -0x68(%rbp),%rax
  add    $0x20,%rax
  movsd  (%rax),%xmm4
  mov    -0x68(%rbp),%rax
  add    $0x30,%rax
  movsd  (%rax),%xmm3
  mulsd  %xmm4,%xmm3
  subsd  %xmm3,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x50(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x48(%rbp),%xmm2
  movsd  D1(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x50(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  mulsd  -0x50(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x50(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm2
  movsd  D163(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  -0x48(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x40(%rbp),%xmm2
  movsd  D206(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movq   D92(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x38(%rbp),%xmm0
  jbe    L6
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  call   <fabs@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x30(%rbp),%xmm1
  movsd  D128(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x78(%rbp)
  movsd  D155(%rip),%xmm0
  mov    -0x38(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x78(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  add    %eax,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <fabs@plt>
  mov    %eax,%ebx
  movsd  -0x28(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D50(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  add    %ebx,%eax
  mov    %eax,%edi
  call   <log@plt>
  movsd  -0x28(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %dl
  movzbl %dl,%edx
  pxor   %xmm0,%xmm0
  comisd -0x28(%rbp),%xmm0
  seta   %cl
  movzbl %cl,%ecx
  sub    %ecx,%edx
  imul   %edx,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x50(%rbp),%xmm0
  movsd  D1(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x20(%rbp),%xmm1
  movsd  D128(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x80(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rbx
  movsd  -0x18(%rbp),%xmm0
  movq   D92(%rip),%xmm1
  movapd %xmm0,%xmm6
  xorpd  %xmm1,%xmm6
  movq   %xmm6,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %rbx,%xmm7
  subsd  %xmm0,%xmm7
  movapd %xmm7,%xmm1
  mulsd  -0x80(%rbp),%xmm1
  movsd  -0x78(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  mov    -0x70(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x70(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x70(%rbp),%rdx
  add    $0x8,%rdx
  movsd  (%rax),%xmm0
  movsd  %xmm0,(%rdx)
  jmp    L104
L6:
  pxor   %xmm0,%xmm0
  ucomisd -0x38(%rbp),%xmm0
  jp     L92
  pxor   %xmm0,%xmm0
  ucomisd -0x38(%rbp),%xmm0
  jne    L92
  mov    -0x70(%rbp),%rax
  lea    0x10(%rax),%rdx
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x70(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  movsd  (%rax),%xmm0
  mov    -0x70(%rbp),%rax
  movsd  %xmm0,(%rax)
  jmp    L21
L92:
  movsd  -0x30(%rbp),%xmm1
  movsd  D128(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x78(%rbp)
  movsd  D155(%rip),%xmm0
  mov    -0x38(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x78(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  add    %eax,%eax
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movsd  D7(%rip),%xmm1
  comisd %xmm1,%xmm0
  jb     L94
  movsd  D50(%rip),%xmm0
  comisd -0x28(%rbp),%xmm0
  jb     L94
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <asin@plt>
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movsd  D20(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm0
  movsd  D1(%rip),%xmm2
  divsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x70(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x70(%rbp),%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comisd %xmm1,%xmm0
  jbe    L31
  mov    -0x70(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
L31:
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm0
  movsd  D1(%rip),%xmm2
  divsd  %xmm2,%xmm0
  mov    -0x70(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x70(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comisd %xmm1,%xmm0
  jbe    L65
  mov    -0x70(%rbp),%rax
  add    $0x8,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
L65:
  movsd  -0x18(%rbp),%xmm1
  movsd  D20(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  -0x50(%rbp),%xmm0
  movsd  D1(%rip),%xmm2
  divsd  %xmm2,%xmm0
  mov    -0x70(%rbp),%rax
  add    $0x10,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x70(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comisd %xmm1,%xmm0
  jbe    L104
  mov    -0x70(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L104
L94:
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <fabs@plt>
  mov    %eax,%ebx
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  D50(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  add    %ebx,%eax
  mov    %eax,%edi
  call   <log@plt>
  movslq %eax,%rdx
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x20(%rbp),%xmm1
  movsd  D128(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x78(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movsd  %xmm0,-0x80(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movq   D92(%rip),%xmm1
  movapd %xmm0,%xmm5
  xorpd  %xmm1,%xmm5
  movq   %xmm5,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  addsd  -0x80(%rbp),%xmm0
  movsd  -0x78(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x50(%rbp),%xmm0
  movsd  D1(%rip),%xmm2
  divsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x70(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x70(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x70(%rbp),%rdx
  add    $0x8,%rdx
  movsd  (%rax),%xmm0
  movsd  %xmm0,(%rdx)
L104:
  mov    -0x70(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x70(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  comisd %xmm1,%xmm0
  jbe    L121
  mov    -0x70(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x70(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x70(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x70(%rbp),%rax
  movsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
L121:
  mov    -0x70(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x70(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  comisd %xmm1,%xmm0
  jbe    L80
  mov    -0x70(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x70(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x70(%rbp),%rax
  movsd  0x10(%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x70(%rbp),%rax
  add    $0x10,%rax
  movsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
L80:
  mov    -0x70(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x70(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  comisd %xmm1,%xmm0
  jbe    L21
  mov    -0x70(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x70(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x70(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x70(%rbp),%rax
  movsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,(%rax)
L21:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D1
datatype: byte[8]
name: unpack_data
arguments: data_tag: D163
datatype: byte[8]
name: unpack_data
arguments: data_tag: D206
datatype: byte[8]
name: unpack_data
arguments: data_tag: D92
datatype: byte[8]
name: unpack_data
arguments: data_tag: D128
datatype: f64
name: unpack_data
arguments: data_tag: D155
datatype: byte[8]
name: unpack_data
arguments: data_tag: D50
datatype: byte[8]
name: unpack_data
arguments: data_tag: D7
datatype: byte[8]
name: unpack_data
arguments: data_tag: D20
datatype: byte[8]

tool: {"D1": [0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40]}

tool: {"D163": [0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x40]}

tool: {"D206": [0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0x40]}

tool: {"D92": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

tool: D128: 0.5

tool: {"D155": [0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xbf]}

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

tool: {"D7": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xbf]}

tool: {"D20": [0x65,0x73,0x2d,0x38,0x52,0xc1,0x00,0x40]}

assistant: ```c
void leigen(double *m, double *l) {
  double b, c, d, n, o, s, sc, t;
  long neg = 0;
  b = m[0] + m[4] + m[8];
  c = m[1] * m[3] + m[2] * m[6] + m[5] * m[7] - m[0] * m[4] - m[4] * m[8] - m[0] * m[8];
  d = m[0] * (m[4] * m[8] - m[5] * m[7]) + m[1] * (m[5] * m[6] - m[3] * m[8]) + m[2] * (m[3] * m[7] - m[4] * m[6]);
  n = b * b + 3 * c;
  o = -(2 * b * b * b + 9 * b * c + 27 * d);
  if (n < 0) {
    n = fabs(n);
    sc = 0.5 * o * pow(n, -1.5);
    t = 2 * sqrt(n) / 3;
    s = log(fabs(sc) + sqrt(sc * sc + 1)) * ((sc > 0) - (sc < 0)) / 3;
    l[0] = b / 3 - t * 0.5 * (exp(s) - exp(-s));
    l[1] = l[2] = 0;
  } else if (!n) {
    l[0] = l[1] = l[2] = 0;
    return;
  } else {
    sc = 0.5 * o * pow(n, -1.5);
    t = 2 * sqrt(n) / 3;
    if (sc >= -1 && sc <= 1) {
      s = asin(sc) / 3;
      l[0] = t * sin(s - 2 * 3.14159265358979323846264338327950 / 3) + b / 3;
      if (l[0] < 0)
        l[0] = 0;
      l[1] = t * sin(s) + b / 3;
      if (l[1] < 0)
        l[1] = 0;
      l[2] = t * sin(s + 2 * 3.14159265358979323846264338327950 / 3) + b / 3;
      if (l[2] < 0)
        l[2] = 0;
    } else {
      s = log(fabs(sc) + sqrt(sc * sc - 1)) / 3;
      l[0] = t * 0.5 * (exp(s) + exp(-s)) + b / 3;
      l[1] = l[2] = 0;
    }
  }
  if (l[0] < l[1]) {
    d = l[1];
    l[1] = l[0];
    l[0] = d;
  }
  if (l[1] < l[2]) {
    d = l[1];
    l[1] = l[2];
    l[2] = d;
  }
  if (l[0] < l[1]) {
    d = l[1];
    l[1] = l[0];
    l[0] = d;
  }
}
```