user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<metastable_cooling_SI>:
  endbr64
  sub    $0xd8,%rsp
  movapd D73(%rip),%xmm4
  mov    %fs:0x28,%rax
  mov    %rax,0xc8(%rsp)
  xor    %eax,%eax
  movaps %xmm4,0x20(%rsp)
  movapd D138(%rip),%xmm4
  movaps %xmm4,0x30(%rsp)
  movdqa D63(%rip),%xmm4
  movaps %xmm4,(%rsp)
  movdqa D62(%rip),%xmm4
  movaps %xmm4,0x10(%rsp)
  movapd D52(%rip),%xmm4
  movaps %xmm4,0x40(%rsp)
  movapd D66(%rip),%xmm4
  movaps %xmm4,0x50(%rsp)
  movapd D116(%rip),%xmm4
  movaps %xmm4,0x60(%rsp)
  movapd D134(%rip),%xmm4
  movaps %xmm4,0x70(%rsp)
  movapd D118(%rip),%xmm4
  movaps %xmm4,0x80(%rsp)
  movapd D92(%rip),%xmm4
  movaps %xmm4,0x90(%rsp)
  movsd  D44(%rip),%xmm4
  comisd %xmm3,%xmm4
  jbe    L16
  mov    D82(%rip),%rax
  movapd D82(%rip),%xmm5
  mov    %rax,0xb8(%rsp)
  movups %xmm5,0xa8(%rsp)
L16:
  comisd %xmm4,%xmm3
  jb     L14
  movq   D88(%rip),%xmm4
  movq   $0x0,0xb8(%rsp)
  movups %xmm4,0xa8(%rsp)
L14:
  mov    %rsp,%rcx
  lea    0x20(%rsp),%rdx
  sub    $0x8,%rsp
  mov    $0x3,%esi
  lea    0xa8(%rsp),%rax
  mov    $0x3,%edi
  push   %rax
  lea    0x90(%rsp),%rax
  push   %rax
  lea    0x78(%rsp),%rax
  push   %rax
  lea    0x60(%rsp),%r9
  lea    0x30(%rsp),%r8
  call   <computeMetastableCoolingRate@plt>
  add    $0x20,%rsp
  mov    0xc8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L11
  add    $0xd8,%rsp
  ret
L11:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_tag: D73
type: f64[2]
name: retrieve_data
arguments: data_tag: D138
type: f64[2]
name: retrieve_data
arguments: data_tag: D63
type: byte[16]
name: retrieve_data
arguments: data_tag: D62
type: byte[16]
name: retrieve_data
arguments: data_tag: D52
type: f64[2]
name: retrieve_data
arguments: data_tag: D66
type: f64[2]
name: retrieve_data
arguments: data_tag: D116
type: f64[2]
name: retrieve_data
arguments: data_tag: D134
type: f64[2]
name: retrieve_data
arguments: data_tag: D118
type: f64[2]
name: retrieve_data
arguments: data_tag: D92
type: byte[16]
name: retrieve_data
arguments: data_tag: D44
type: f64
name: retrieve_data
arguments: data_tag: D82
type: f64[2]
name: retrieve_data
arguments: data_tag: D88
type: byte[8]

tool: {"D73": [0.0,1.0]}

tool: {"D138": [5.0,9.0]}

tool: {"D63": [0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00]}

tool: {"D62": [0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00]}

tool: {"D52": [0.0,13000.0]}

tool: {"D66": [19000.0,32000.0]}

tool: {"D116": [0.0,0.036]}

tool: {"D134": [1.8,0.36]}

tool: {"D118": [0.0,5.1e-8]}

tool: {"D92": [0x76,0xd4,0xb7,0x1d,0x31,0xb2,0x58,0x3e,0x48,0xaf,0xbc,0x9a,0xf2,0xd7,0x5a,0x3e]}

tool: D44: 10000

tool: {"D82": [0.57,0.57]}

tool: {"D88": [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);
}
```