user: What is the c source code of the assembly code below?

```asm
<metastable_cooling_SI>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xf0,%rsp
  movsd  %xmm0,-0xd8(%rbp)
  movsd  %xmm1,-0xe0(%rbp)
  movsd  %xmm2,-0xe8(%rbp)
  movsd  %xmm3,-0xf0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  D75(%rip),%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  D25(%rip),%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  D34(%rip),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movl   $0x0,-0xd0(%rbp)
  movl   $0x2,-0xcc(%rbp)
  movl   $0x1,-0xc8(%rbp)
  movl   $0x1,-0xc4(%rbp)
  movl   $0x0,-0xc0(%rbp)
  movl   $0x3,-0xbc(%rbp)
  movl   $0x2,-0xb8(%rbp)
  movl   $0x3,-0xb4(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  movsd  D96(%rip),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  D44(%rip),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  D31(%rip),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  D40(%rip),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  D130(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  D117(%rip),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  D72(%rip),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  D116(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D173(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D105(%rip),%xmm0
  comisd -0xf0(%rbp),%xmm0
  jbe    L2
  movsd  D169(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D169(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D169(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
L2:
  movsd  -0xf0(%rbp),%xmm0
  comisd D105(%rip),%xmm0
  jb     L17
  movsd  D52(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x18(%rbp)
L17:
  movsd  -0xf0(%rbp),%xmm2
  movsd  -0xe8(%rbp),%xmm1
  movsd  -0xe0(%rbp),%xmm0
  mov    -0xd8(%rbp),%rcx
  lea    -0x90(%rbp),%r8
  lea    -0xc0(%rbp),%rdi
  lea    -0xd0(%rbp),%rdx
  lea    -0xb0(%rbp),%rax
  sub    $0x8,%rsp
  lea    -0x30(%rbp),%rsi
  push   %rsi
  lea    -0x50(%rbp),%rsi
  push   %rsi
  lea    -0x70(%rbp),%rsi
  push   %rsi
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rcx,%xmm0
  mov    %r8,%r9
  mov    %rdi,%r8
  mov    %rdx,%rcx
  mov    %rax,%rdx
  mov    $0x3,%esi
  mov    $0x3,%edi
  call   <computeMetastableCoolingRate@plt>
  add    $0x20,%rsp
  movq   %xmm0,%rax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L21
  call   <__stack_chk_fail@plt>
L21:
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: label: D75
datatype: f64
name: retrieve_data
arguments: label: D25
datatype: f64
name: retrieve_data
arguments: label: D34
datatype: f64
name: retrieve_data
arguments: label: D96
datatype: f64
name: retrieve_data
arguments: label: D44
datatype: f64
name: retrieve_data
arguments: label: D31
datatype: f64
name: retrieve_data
arguments: label: D40
datatype: byte[8]
name: retrieve_data
arguments: label: D130
datatype: f64
name: retrieve_data
arguments: label: D117
datatype: f64
name: retrieve_data
arguments: label: D72
datatype: byte[8]
name: retrieve_data
arguments: label: D116
datatype: byte[8]
name: retrieve_data
arguments: label: D173
datatype: byte[8]
name: retrieve_data
arguments: label: D105
datatype: f64[2]
name: retrieve_data
arguments: label: D169
datatype: f64
name: retrieve_data
arguments: label: D52
datatype: byte[8]

tool: D75: 1

tool: D25: 5

tool: D34: 9

tool: D96: 13000

tool: D44: 19000

tool: D31: 32000

tool: {"D40": [0x3b,0xdf,0x4f,0x8d,0x97,0x6e,0xa2,0x3f]}

tool: D130: 1.8

tool: D117: 0.36

tool: {"D72": [0xfd,0xe5,0xfd,0xf9,0x62,0x61,0x6b,0x3e]}

tool: {"D116": [0x76,0xd4,0xb7,0x1d,0x31,0xb2,0x58,0x3e]}

tool: {"D173": [0x48,0xaf,0xbc,0x9a,0xf2,0xd7,0x5a,0x3e]}

tool: {"D105": [10000.0,0.57]}

tool: D169: 0.57

tool: {"D52": [0xa4,0x70,0x3d,0x0a,0xd7,0xa3,0xc0,0xbf]}

assistant: ```c
double metastable_cooling_SI(const double densThis, const double Hdens, const double elecDens, const double T) {
  const double weights[3 + 1] = {0.0, 1.0, 5.0, 9.0};
  const int lower[3 + 1] = {0, 2, 1, 1};
  const int upper[3 + 1] = {0, 3, 2, 3};
  const double energy[3 + 1] = {0.0, 1.3e4, 1.9e4, 3.2e4};
  const double EinsA[3 + 1] = {0.0, 3.6e-2, 1.8, 0.36};
  const double elec_a[3 + 1] = {0.0, 5.1e-8, 2.3e-8, 2.5e-8};
  double elec_b[3 + 1];
  if (T < 1e4) {
    elec_b[1] = 0.57;
    elec_b[2] = 0.57;
    elec_b[3] = 0.57;
  }
  if (T >= 1e4) {
    elec_b[1] = -0.13;
    elec_b[2] = 0.0;
    elec_b[3] = 0.0;
  }
  return computeMetastableCoolingRate(3, 3, weights, lower, upper, energy, EinsA, elec_a, elec_b, densThis, Hdens, elecDens, T);
}
```