user: Translate the below assembly code into C programming language:

```asm
<cum_normal>:
  endbr64
  pxor   %xmm5,%xmm5
  comisd %xmm2,%xmm5
  jae    L14
  subsd  %xmm1,%xmm0
  sub    $0x18,%rsp
  movsd  D21(%rip),%xmm6
  movapd %xmm6,%xmm1
  movapd %xmm0,%xmm3
  divsd  %xmm2,%xmm3
  movapd %xmm3,%xmm0
  movapd %xmm3,%xmm2
  xorpd  D63(%rip),%xmm2
  movsd  %xmm3,0x8(%rsp)
  cmpltsd %xmm5,%xmm0
  andpd  %xmm0,%xmm2
  andnpd %xmm3,%xmm0
  orpd   %xmm0,%xmm2
  movsd  D72(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm6,%xmm0
  divsd  %xmm0,%xmm1
  movsd  D10(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm1,(%rsp)
  call   <exp@plt>
  movsd  (%rsp),%xmm1
  movsd  D75(%rip),%xmm2
  pxor   %xmm5,%xmm5
  movsd  D31(%rip),%xmm4
  mulsd  D51(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  movsd  0x8(%rsp),%xmm3
  mov    D21(%rip),%rax
  mulsd  %xmm1,%xmm4
  comisd %xmm3,%xmm5
  movq   %rax,%xmm6
  mulsd  %xmm1,%xmm2
  addsd  %xmm4,%xmm2
  movsd  D97(%rip),%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm4
  addsd  %xmm4,%xmm2
  movsd  D56(%rip),%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm4
  addsd  %xmm4,%xmm2
  movsd  D6(%rip),%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm1,%xmm4
  mulsd  %xmm4,%xmm1
  addsd  %xmm2,%xmm1
  mulsd  %xmm0,%xmm1
  movq   %rax,%xmm0
  subsd  %xmm1,%xmm0
  ja     L8
  add    $0x18,%rsp
  ret
  nopw   0x0(%rax,%rax,1)
L8:
  subsd  %xmm0,%xmm6
  add    $0x18,%rsp
  movapd %xmm6,%xmm0
  ret
  nopl   (%rax)
L14:
  movsd  D1(%rip),%xmm0
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D21
data_type: f64
name: disassemble_data
arguments: data_tag: D63
data_type: f32[4]
name: disassemble_data
arguments: data_tag: D72
data_type: byte[8]
name: disassemble_data
arguments: data_tag: D10
data_type: f32[2]
name: disassemble_data
arguments: data_tag: D75
data_type: byte[8]
name: disassemble_data
arguments: data_tag: D31
data_type: f64
name: disassemble_data
arguments: data_tag: D51
data_type: f64
name: disassemble_data
arguments: data_tag: D97
data_type: f64
name: disassemble_data
arguments: data_tag: D56
data_type: byte[8]
name: disassemble_data
arguments: data_tag: D6
data_type: f64
name: disassemble_data
arguments: data_tag: D1
data_type: f32[2]

tool: D21: 1

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

tool: {"D72": [0x0e,0x10,0x71,0x18,0x71,0xa6,0xcd,0x3f]}

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

tool: {"D75": [0x5b,0x32,0xa8,0xe5,0xf0,0xd1,0xd6,0xbf]}

tool: D31: 0.31938153

tool: D51: 0.39894228040143

tool: D97: 1.781477937

tool: {"D56": [0xd0,0x78,0xf2,0x4e,0xdd,0x23,0xfd,0xbf]}

tool: D6: 1.330274429

tool: {"D1": [0.0,-1.875]}

assistant: ```c
double cum_normal(double sample, double mean, double stddev) {
  double a, b, c, d, e, f, g, h, temp;
  a = 0.319381530;
  b = -0.356563782;
  c = 1.781477937;
  d = -1.821255978;
  e = 1.330274429;
  f = .2316419;
  if (stddev <= 0.0)
    return -1.0;
  sample = (sample - mean) / stddev;
  if (sample < 0.0)
    temp = -sample;
  else
    temp = sample;
  g = 1.0 / (1.0 + f * temp);
  h = 1.0 - (0.39894228040143 * exp(-0.5 * temp * temp)) * (a * g + b * g * g + c * g * g * g + d * g * g * g * g + e * g * g * g * g * g);
  if (sample < 0.0)
    h = 1.0 - h;
  return h;
}
```