user: Converte this assembly snippet into its equivalent C code:

```asm
<CNDF>:
  endbr64
  push   %rbx
  movaps %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  xor    %ebx,%ebx
  sub    $0x10,%rsp
  comiss %xmm1,%xmm0
  jbe    L3
  xorps  D18(%rip),%xmm1
  mov    $0x1,%ebx
L3:
  movss  D14(%rip),%xmm0
  movss  %xmm1,0xc(%rsp)
  mulss  %xmm1,%xmm0
  mulss  %xmm1,%xmm0
  call   <exp@plt>
  movss  0xc(%rsp),%xmm1
  pxor   %xmm4,%xmm4
  movss  D21(%rip),%xmm2
  movaps %xmm0,%xmm5
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm0
  mulsd  D47(%rip),%xmm0
  movaps %xmm2,%xmm1
  cvtsd2ss %xmm0,%xmm0
  addss  %xmm2,%xmm0
  divss  %xmm0,%xmm1
  movaps %xmm1,%xmm3
  movaps %xmm1,%xmm0
  movaps %xmm1,%xmm6
  cvtss2sd %xmm1,%xmm4
  mulss  %xmm1,%xmm3
  mulsd  D33(%rip),%xmm4
  mulss  %xmm3,%xmm0
  cvtss2sd %xmm3,%xmm3
  mulsd  D10(%rip),%xmm3
  cvtsd2ss %xmm4,%xmm4
  mulss  %xmm0,%xmm6
  cvtss2sd %xmm0,%xmm0
  mulsd  D79(%rip),%xmm0
  cvtsd2ss %xmm3,%xmm3
  mulss  %xmm6,%xmm1
  cvtsd2ss %xmm0,%xmm0
  addss  %xmm3,%xmm0
  pxor   %xmm3,%xmm3
  cvtss2sd %xmm6,%xmm3
  mulsd  D97(%rip),%xmm3
  cvtss2sd %xmm1,%xmm1
  mulsd  D28(%rip),%xmm1
  cvtsd2ss %xmm3,%xmm3
  addss  %xmm3,%xmm0
  cvtsd2ss %xmm1,%xmm1
  addss  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm5,%xmm0
  mulsd  D5(%rip),%xmm0
  addss  %xmm4,%xmm1
  cvtsd2ss %xmm0,%xmm0
  mulss  %xmm0,%xmm1
  movaps %xmm2,%xmm0
  subss  %xmm1,%xmm0
  test   %ebx,%ebx
  je     L0
  subss  %xmm0,%xmm2
  movaps %xmm2,%xmm0
L0:
  add    $0x10,%rsp
  pop    %rbx
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D18
type_guessed: byte[16]
name: retrieve_data
arguments: data_label: D14
type_guessed: byte[4]
name: retrieve_data
arguments: data_label: D21
type_guessed: f32
name: retrieve_data
arguments: data_label: D47
type_guessed: f64
name: retrieve_data
arguments: data_label: D33
type_guessed: f64
name: retrieve_data
arguments: data_label: D10
type_guessed: byte[8]
name: retrieve_data
arguments: data_label: D79
type_guessed: f64
name: retrieve_data
arguments: data_label: D97
type_guessed: byte[8]
name: retrieve_data
arguments: data_label: D28
type_guessed: f64
name: retrieve_data
arguments: data_label: D5
type_guessed: f64

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

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

tool: D21: 1

tool: D47: 0.2316419

tool: D33: 0.31938153

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

tool: D79: 1.781477937

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

tool: D28: 1.330274429

tool: D5: 0.3989422804014327

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;
}
```