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

```asm
<MoroInvCND>:
  endbr64
  movaps %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  comiss %xmm1,%xmm0
  jae    L19
  movss  D40(%rip),%xmm0
  comiss D52(%rip),%xmm1
  jae    L11
  sub    $0x18,%rsp
  movaps %xmm1,%xmm4
  subss  D38(%rip),%xmm4
  movss  %xmm4,0xc(%rsp)
  movaps %xmm4,%xmm0
  andps  D5(%rip),%xmm0
  movss  D86(%rip),%xmm2
  comiss %xmm0,%xmm2
  jbe    L61
  movaps %xmm4,%xmm2
  mulss  %xmm4,%xmm2
  movaps %xmm2,%xmm0
  mulss  D181(%rip),%xmm0
  addss  D164(%rip),%xmm0
  mulss  %xmm2,%xmm0
  subss  D126(%rip),%xmm0
  mulss  %xmm2,%xmm0
  addss  D194(%rip),%xmm0
  mulss  %xmm4,%xmm0
  movaps %xmm2,%xmm1
  mulss  D171(%rip),%xmm1
  subss  D109(%rip),%xmm1
  mulss  %xmm2,%xmm1
  addss  D231(%rip),%xmm1
  mulss  %xmm2,%xmm1
  subss  D233(%rip),%xmm1
  mulss  %xmm2,%xmm1
  addss  D52(%rip),%xmm1
  divss  %xmm1,%xmm0
L66:
  add    $0x18,%rsp
  ret
L61:
  movss  0xc(%rsp),%xmm5
  comiss D239(%rip),%xmm5
  jbe    L63
  movss  D52(%rip),%xmm0
  subss  %xmm1,%xmm0
  call   <logf@plt>
  xorps  D149(%rip),%xmm0
  call   <logf@plt>
  movaps %xmm0,%xmm1
L40:
  movaps %xmm1,%xmm0
  mulss  D247(%rip),%xmm0
  addss  D127(%rip),%xmm0
  mulss  %xmm1,%xmm0
  addss  D255(%rip),%xmm0
  mulss  %xmm1,%xmm0
  addss  D140(%rip),%xmm0
  mulss  %xmm1,%xmm0
  addss  D224(%rip),%xmm0
  mulss  %xmm1,%xmm0
  addss  D39(%rip),%xmm0
  mulss  %xmm1,%xmm0
  addss  D257(%rip),%xmm0
  mulss  %xmm1,%xmm0
  addss  D15(%rip),%xmm0
  mulss  %xmm1,%xmm0
  addss  D281(%rip),%xmm0
  pxor   %xmm1,%xmm1
  comiss 0xc(%rsp),%xmm1
  jbe    L66
  xorps  D149(%rip),%xmm0
  jmp    L66
L63:
  movaps %xmm1,%xmm0
  call   <logf@plt>
  xorps  D149(%rip),%xmm0
  call   <logf@plt>
  movaps %xmm0,%xmm1
  jmp    L40
L19:
  movss  D40(%rip),%xmm0
  ret
L11:
  ret
```

tool_calls: name: read_data
arguments: tag: D40
data_type: byte[4]
name: read_data
arguments: tag: D52
data_type: byte[4]
name: read_data
arguments: tag: D38
data_type: byte[4]
name: read_data
arguments: tag: D5
data_type: dword[4]
name: read_data
arguments: tag: D86
data_type: byte[4]
name: read_data
arguments: tag: D181
data_type: byte[4]
name: read_data
arguments: tag: D164
data_type: byte[4]
name: read_data
arguments: tag: D126
data_type: byte[4]
name: read_data
arguments: tag: D194
data_type: byte[4]
name: read_data
arguments: tag: D171
data_type: byte[4]
name: read_data
arguments: tag: D109
data_type: byte[4]
name: read_data
arguments: tag: D231
data_type: byte[4]
name: read_data
arguments: tag: D233
data_type: byte[4]
name: read_data
arguments: tag: D239
data_type: byte[4]
name: read_data
arguments: tag: D149
data_type: byte[16]
name: read_data
arguments: tag: D247
data_type: byte[4]
name: read_data
arguments: tag: D127
data_type: byte[4]
name: read_data
arguments: tag: D255
data_type: byte[4]
name: read_data
arguments: tag: D140
data_type: byte[4]
name: read_data
arguments: tag: D224
data_type: byte[4]
name: read_data
arguments: tag: D39
data_type: byte[4]
name: read_data
arguments: tag: D257
data_type: byte[4]
name: read_data
arguments: tag: D15
data_type: byte[4]
name: read_data
arguments: tag: D281
data_type: byte[4]

tool: {"D40": [0x00,0x00,0x00,0x4f]}

tool: {"D52": [0x00,0x00,0x80,0x3f]}

tool: {"D38": [0x00,0x00,0x00,0x3f]}

tool: {"D5": [0x7fffffff,0x00000000,0x00000000,0x00000000]}

tool: {"D86": [0x3d,0x0a,0xd7,0x3e]}

tool: {"D181": [0x4b,0x87,0xcb,0xc1]}

tool: {"D164": [0x96,0x90,0x25,0x42]}

tool: {"D126": [0x85,0xeb,0x94,0x41]}

tool: {"D194": [0x99,0x6c,0x20,0x40]}

tool: {"D171": [0x81,0x5f,0x48,0x40]}

tool: {"D109": [0x78,0x7f,0xa8,0x41]}

tool: {"D231": [0xbd,0xaa,0xb8,0x41]}

tool: {"D233": [0x80,0x93,0x07,0x41]}

tool: {"D239": [0x00,0x00,0x00,0x00]}

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

tool: {"D247": [0x28,0x9e,0xd4,0x34]}

tool: {"D127": [0xac,0x0e,0x9b,0x34]}

tool: {"D255": [0x90,0xf5,0x06,0x38]}

tool: {"D140": [0x75,0x31,0xcf,0x39]}

tool: {"D224": [0x1f,0xb2,0x7b,0x3b]}

tool: {"D39": [0x6c,0x75,0xe2,0x3c]}

tool: {"D257": [0x39,0xa8,0x24,0x3e]}

tool: {"D15": [0x36,0xe6,0x79,0x3f]}

tool: {"D281": [0x96,0xc9,0xac,0x3e]}

assistant: ```c
float MoroInvCND(float P) {
  const float a1 = 2.50662823884f;
  const float a2 = -18.61500062529f;
  const float a3 = 41.39119773534f;
  const float a4 = -25.44106049637f;
  const float b1 = -8.4735109309f;
  const float b2 = 23.08336743743f;
  const float b3 = -21.06224101826f;
  const float b4 = 3.13082909833f;
  const float c1 = 0.337475482272615f;
  const float c2 = 0.976169019091719f;
  const float c3 = 0.160797971491821f;
  const float c4 = 2.76438810333863E-02f;
  const float c5 = 3.8405729373609E-03f;
  const float c6 = 3.951896511919E-04f;
  const float c7 = 3.21767881768E-05f;
  const float c8 = 2.888167364E-07f;
  const float c9 = 3.960315187E-07f;
  float y, z;
  if (P <= 0 || P >= 1.0f)
    return (float)(0x7FFFFFFF);
  y = P - 0.5f;
  if (fabsf(y) < 0.42f) {
    z = y * y;
    z = y * (((a4 * z + a3) * z + a2) * z + a1) / ((((b4 * z + b3) * z + b2) * z + b1) * z + 1.0f);
  } else {
    if (y > 0)
      z = logf(-logf(1.0f - P));
    else
      z = logf(-logf(P));
    z = c1 + z * (c2 + z * (c3 + z * (c4 + z * (c5 + z * (c6 + z * (c7 + z * (c8 + z * c9)))))));
    if (y < 0)
      z = -z;
  }
  return z;
}
```