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

```asm
<ContactHessian>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xb0,%rsp
  mov    %rdi,-0x98(%rbp)
  mov    %rsi,-0xa0(%rbp)
  mov    %rdx,-0xa8(%rbp)
  mov    -0x98(%rbp),%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xa0(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  mov    -0x88(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x80(%rbp)
  mov    -0xa8(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x78(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0x80(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  mov    -0xa0(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x58(%rbp)
  movsd  -0x58(%rbp),%xmm1
  movsd  D21(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x88(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  movsd  -0x48(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x60(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x38(%rbp)
  mov    -0xa8(%rbp),%rax
  movsd  0x8(%rax),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x38(%rbp),%xmm0
  mulsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x30(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x48(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x80(%rbp),%xmm0
  mulsd  -0x78(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x58(%rbp),%xmm0
  mulsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x68(%rbp),%xmm0
  movq   D10(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x50(%rbp),%xmm1
  movsd  -0x40(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  mulsd  -0x28(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x80(%rbp),%xmm1
  mulsd  -0x58(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x20(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x10(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  subsd  %xmm0,%xmm1
  movsd  -0x48(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  mov    -0x98(%rbp),%rax
  add    $0x8,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x98(%rbp),%rax
  add    $0x10,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x18(%rbp),%xmm0
  movq   D10(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x50(%rbp),%xmm1
  movsd  -0x10(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x28(%rbp),%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  -0x48(%rbp),%xmm1
  mulsd  -0x58(%rbp),%xmm1
  mulsd  -0x20(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  -0x68(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x38(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x40(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x8(%rbp),%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  -0x80(%rbp),%xmm1
  mulsd  -0x38(%rbp),%xmm1
  mulsd  -0x20(%rbp),%xmm1
  mov    -0x98(%rbp),%rax
  add    $0x18,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x98(%rbp),%rax
  add    $0x20,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x98(%rbp),%rax
  add    $0x28,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D21
type_guessed: f64
name: retrieve_data
arguments: tag: D10
type_guessed: f32[2]

tool: D21: 1

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

assistant: ```c
void ContactHessian(CH, q, qdot) double CH[6];
double q[2];
double qdot[2];
{
  double t1;
  double t10;
  double t11;
  double t12;
  double t13;
  double t14;
  double t18;
  double t2;
  double t20;
  double t22;
  double t23;
  double t3;
  double t4;
  double t5;
  double t6;
  double t7;
  double t8;
  {
    CH[0] = 0.0;
    t1 = q[0];
    t2 = cos(t1);
    t3 = qdot[0];
    t4 = t3 * t3;
    t5 = t2 * t4;
    t6 = q[1];
    t7 = cos(t6);
    t8 = t7 + 1.0;
    t10 = sin(t1);
    t11 = t10 * t3;
    t12 = sin(t6);
    t13 = qdot[1];
    t14 = t12 * t13;
    t18 = t13 * t13;
    t20 = t10 * t4;
    t22 = t2 * t3;
    t23 = t7 * t13;
    CH[1] = -t5 * t8 + 2.0 * t11 * t14 - t2 * t7 * t18 + t20 * t12 - 2.0 * t22 * t23 + t10 * t12 * t18;
    CH[2] = 0.0;
    CH[3] = -t20 * t8 - 2.0 * t22 * t14 - t10 * t7 * t18 - t5 * t12 - 2.0 * t11 * t23 - t2 * t12 * t18;
    CH[4] = 0.0;
    CH[5] = 0.0;
    return;
  }
}
```