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

```asm
<CNDF>:
  endbr64
  push   %rbx
  sub    $0x10,%rsp
  movaps %xmm0,%xmm6
  movss  %xmm0,0xc(%rsp)
  pxor   %xmm0,%xmm0
  mov    $0x0,%ebx
  comiss %xmm6,%xmm0
  ja     L5
L2:
  movss  0xc(%rsp),%xmm7
  movaps %xmm7,%xmm0
  mulss  D44(%rip),%xmm0
  mulss  %xmm7,%xmm0
  call   <exp@plt>
  pxor   %xmm2,%xmm2
  cvtss2sd 0xc(%rsp),%xmm2
  mulsd  D15(%rip),%xmm2
  cvtsd2ss %xmm2,%xmm2
  movss  D28(%rip),%xmm3
  addss  %xmm3,%xmm2
  movaps %xmm3,%xmm1
  divss  %xmm2,%xmm1
  movaps %xmm1,%xmm4
  mulss  %xmm1,%xmm4
  movaps %xmm1,%xmm2
  mulss  %xmm4,%xmm2
  movaps %xmm1,%xmm6
  mulss  %xmm2,%xmm6
  pxor   %xmm5,%xmm5
  cvtss2sd %xmm1,%xmm5
  mulsd  D39(%rip),%xmm5
  cvtsd2ss %xmm5,%xmm5
  cvtss2sd %xmm4,%xmm4
  mulsd  D72(%rip),%xmm4
  cvtsd2ss %xmm4,%xmm4
  cvtss2sd %xmm2,%xmm2
  mulsd  D36(%rip),%xmm2
  cvtsd2ss %xmm2,%xmm2
  addss  %xmm4,%xmm2
  pxor   %xmm4,%xmm4
  cvtss2sd %xmm6,%xmm4
  mulsd  D86(%rip),%xmm4
  cvtsd2ss %xmm4,%xmm4
  addss  %xmm4,%xmm2
  mulss  %xmm6,%xmm1
  cvtss2sd %xmm1,%xmm1
  mulsd  D73(%rip),%xmm1
  cvtsd2ss %xmm1,%xmm1
  addss  %xmm2,%xmm1
  addss  %xmm5,%xmm1
  cvtss2sd %xmm0,%xmm0
  mulsd  D87(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  mulss  %xmm0,%xmm1
  subss  %xmm1,%xmm3
  movaps %xmm3,%xmm0
  test   %ebx,%ebx
  je     L28
  movss  D28(%rip),%xmm1
  subss  %xmm3,%xmm1
  movaps %xmm1,%xmm0
L28:
  add    $0x10,%rsp
  pop    %rbx
  ret
L5:
  xorps  D3(%rip),%xmm6
  movss  %xmm6,0xc(%rsp)
  mov    $0x1,%ebx
  jmp    L2
```

tool_calls: name: unpack_data
arguments: tag: D44
data_type: byte[4]
name: unpack_data
arguments: tag: D15
data_type: f64
name: unpack_data
arguments: tag: D28
data_type: f32
name: unpack_data
arguments: tag: D39
data_type: f64
name: unpack_data
arguments: tag: D72
data_type: byte[8]
name: unpack_data
arguments: tag: D36
data_type: f64
name: unpack_data
arguments: tag: D86
data_type: byte[8]
name: unpack_data
arguments: tag: D73
data_type: f64
name: unpack_data
arguments: tag: D87
data_type: f64
name: unpack_data
arguments: tag: D3
data_type: byte[16]

tool: {"D44": [0x00,0x00,0x00,0xbf]}

tool: D15: 0.2316419

tool: D28: 1

tool: D39: 0.31938153

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

tool: D36: 1.781477937

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

tool: D73: 1.330274429

tool: D87: 0.3989422804014327

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

assistant: ```c
float CNDF(float InputX) {
  int sign;
  float OutputX;
  float xInput;
  float xNPrimeofX;
  float expValues;
  float xK2;
  float xK2_2, xK2_3;
  float xK2_4, xK2_5;
  float xLocal, xLocal_1;
  float xLocal_2, xLocal_3;
  if (InputX < 0.0) {
    InputX = -InputX;
    sign = 1;
  } else
    sign = 0;
  xInput = InputX;
  expValues = exp(-0.5f * InputX * InputX);
  xNPrimeofX = expValues;
  xNPrimeofX = xNPrimeofX * 0.39894228040143270286;
  xK2 = 0.2316419 * xInput;
  xK2 = 1.0 + xK2;
  xK2 = 1.0 / xK2;
  xK2_2 = xK2 * xK2;
  xK2_3 = xK2_2 * xK2;
  xK2_4 = xK2_3 * xK2;
  xK2_5 = xK2_4 * xK2;
  xLocal_1 = xK2 * 0.319381530;
  xLocal_2 = xK2_2 * (-0.356563782);
  xLocal_3 = xK2_3 * 1.781477937;
  xLocal_2 = xLocal_2 + xLocal_3;
  xLocal_3 = xK2_4 * (-1.821255978);
  xLocal_2 = xLocal_2 + xLocal_3;
  xLocal_3 = xK2_5 * 1.330274429;
  xLocal_2 = xLocal_2 + xLocal_3;
  xLocal_1 = xLocal_2 + xLocal_1;
  xLocal = xLocal_1 * xNPrimeofX;
  xLocal = 1.0 - xLocal;
  OutputX = xLocal;
  if (sign) {
    OutputX = 1.0 - OutputX;
  }
  return OutputX;
}
```