user: Please show me the C implementation that matches the assembly code listed below:

```asm
<fun_3D_OGR>:
  endbr64
  sub    $0x38,%rsp
  movsd  D118(%rip),%xmm3
  movsd  D131(%rip),%xmm2
  mulsd  %xmm3,%xmm0
  mulsd  %xmm3,%xmm1
  movsd  %xmm0,0x8(%rsp)
  subsd  %xmm2,%xmm0
  movsd  %xmm1,0x10(%rsp)
  subsd  %xmm2,%xmm1
  mulsd  %xmm0,%xmm0
  mulsd  %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  xorpd  D72(%rip),%xmm0
  mulsd  D154(%rip),%xmm0
  call   <exp@plt>
  movsd  D126(%rip),%xmm1
  movsd  %xmm0,0x28(%rsp)
  movsd  0x8(%rsp),%xmm0
  addsd  %xmm1,%xmm0
  addsd  0x10(%rsp),%xmm1
  mulsd  %xmm0,%xmm0
  mulsd  %xmm1,%xmm1
  xorpd  D72(%rip),%xmm0
  divsd  D27(%rip),%xmm0
  divsd  D110(%rip),%xmm1
  subsd  %xmm1,%xmm0
  call   <exp@plt>
  movsd  0x10(%rsp),%xmm7
  subsd  D101(%rip),%xmm7
  movsd  0x8(%rsp),%xmm1
  subsd  D70(%rip),%xmm1
  movsd  %xmm0,0x20(%rsp)
  movsd  D154(%rip),%xmm6
  movapd %xmm7,%xmm0
  mulsd  %xmm7,%xmm0
  mulsd  %xmm1,%xmm1
  addsd  %xmm0,%xmm1
  xorpd  D72(%rip),%xmm1
  mulsd  %xmm1,%xmm6
  movapd %xmm6,%xmm0
  call   <exp@plt>
  movsd  0x10(%rsp),%xmm3
  subsd  D70(%rip),%xmm3
  movsd  0x8(%rsp),%xmm1
  subsd  D147(%rip),%xmm1
  movsd  %xmm0,0x18(%rsp)
  mulsd  %xmm3,%xmm3
  mulsd  %xmm1,%xmm1
  xorpd  D72(%rip),%xmm1
  movapd %xmm1,%xmm0
  subsd  %xmm3,%xmm0
  call   <exp@plt>
  movsd  D143(%rip),%xmm5
  movsd  0x28(%rsp),%xmm2
  movsd  0x20(%rsp),%xmm4
  movsd  0x18(%rsp),%xmm1
  movapd %xmm0,%xmm3
  mulsd  %xmm5,%xmm2
  mulsd  D7(%rip),%xmm4
  mulsd  %xmm5,%xmm1
  mulsd  D49(%rip),%xmm3
  add    $0x38,%rsp
  movapd %xmm2,%xmm0
  addsd  %xmm4,%xmm0
  addsd  %xmm1,%xmm0
  subsd  %xmm3,%xmm0
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D118
data_type: f64
name: extract_symbolic_data
arguments: data_label: D131
data_type: f64
name: extract_symbolic_data
arguments: data_label: D72
data_type: byte[16]
name: extract_symbolic_data
arguments: data_label: D154
data_type: byte[8]
name: extract_symbolic_data
arguments: data_label: D126
data_type: f64
name: extract_symbolic_data
arguments: data_label: D27
data_type: f64
name: extract_symbolic_data
arguments: data_label: D110
data_type: f64
name: extract_symbolic_data
arguments: data_label: D101
data_type: f64
name: extract_symbolic_data
arguments: data_label: D70
data_type: f64
name: extract_symbolic_data
arguments: data_label: D147
data_type: f64
name: extract_symbolic_data
arguments: data_label: D143
data_type: f64
name: extract_symbolic_data
arguments: data_label: D7
data_type: f64
name: extract_symbolic_data
arguments: data_label: D49
data_type: f64

tool: D118: 9

tool: D131: 2

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

tool: {"D154": [0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x3f]}

tool: D126: 1

tool: D27: 49

tool: D110: 10

tool: D101: 3

tool: D70: 7

tool: D147: 4

tool: D143: 0.5

tool: D7: 0.75

tool: D49: 0.2

assistant: ```c
double fun_3D_OGR(double x, double y, double unused) {
  unused = unused;
  double z1 = 0.5 * exp(-(pow(9.0 * x - 2.0, 2.0) + pow(9.0 * y - 2.0, 2.0)) / 4.0);
  double z2 = 0.75 * exp(-pow(9.0 * x + 1.0, 2.0) / 49.0 - pow(9.0 * y + 1.0, 2.0) / 10.0);
  double z3 = 0.5 * exp(-(pow(9.0 * x - 7.0, 2.0) + pow(9.0 * y - 3.0, 2.0)) / 4.0);
  double z4 = 0.2 * exp(-pow(9.0 * x - 4.0, 2.0) - pow(9.0 * y - 7.0, 2.0));
  return z1 + z2 + z3 - z4;
}
```