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

```asm
<standard_normal_CDF>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  movsd  %xmm0,-0x58(%rbp)
  movsd  D104(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D5(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D127(%rip),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D9(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D70(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D27(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movl   $0x1,-0x44(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x58(%rbp),%xmm0
  jbe    L9
  movl   $0xffffffff,-0x44(%rbp)
L9:
  movsd  -0x58(%rbp),%xmm0
  movq   D55(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  D16(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x58(%rbp),%xmm1
  movsd  D81(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D81(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x20(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  addsd  -0x28(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  addsd  -0x38(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  addsd  -0x40(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x58(%rbp),%xmm0
  movq   D77(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x58(%rbp),%xmm2
  movq   %xmm2,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movsd  -0x60(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D81(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x44(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D81(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D1(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D104
type_infered: f64
name: unpack_data
arguments: data_label: D5
type_infered: byte[8]
name: unpack_data
arguments: data_label: D127
type_infered: f64
name: unpack_data
arguments: data_label: D9
type_infered: byte[8]
name: unpack_data
arguments: data_label: D70
type_infered: f64
name: unpack_data
arguments: data_label: D27
type_infered: f64
name: unpack_data
arguments: data_label: D55
type_infered: qword
name: unpack_data
arguments: data_label: D16
type_infered: byte[8]
name: unpack_data
arguments: data_label: D81
type_infered: f64
name: unpack_data
arguments: data_label: D77
type_infered: byte[8]
name: unpack_data
arguments: data_label: D1
type_infered: f64

tool: D104: 0.254829592

tool: {"D5": [0x69,0x14,0x3c,0xcc,0x31,0x35,0xd2,0xbf]}

tool: D127: 1.421413741

tool: {"D9": [0x39,0x4c,0x01,0x57,0x1c,0x40,0xf7,0xbf]}

tool: D70: 1.061405429

tool: D27: 0.3275911

tool: D55: 9223372036854775807

tool: {"D16": [0xcd,0x3b,0x7f,0x66,0x9e,0xa0,0xf6,0x3f]}

tool: D81: 1

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

tool: D1: 0.5

assistant: ```c
double standard_normal_CDF(double x) {
  const double a1 = 0.254829592;
  const double a2 = -0.284496736;
  const double a3 = 1.421413741;
  const double a4 = -1.453152027;
  const double a5 = 1.061405429;
  const double p = 0.3275911;
  int sign = 1;
  if (x < 0)
    sign = -1;
  x = fabs(x) / sqrt(2.0);
  double t = 1.0 / (1.0 + p * x);
  double y = 1.0 - (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t * exp(-x * x);
  return 0.5 * (1.0 + sign * y);
}
```