user: What is the c source code of the assembly code below:

```asm
<MoroInvCND>:
  endbr64
  pxor   %xmm5,%xmm5
  comiss %xmm0,%xmm5
  jae    L51
  movss  D155(%rip),%xmm3
  movaps %xmm0,%xmm1
  movss  D229(%rip),%xmm0
  comiss %xmm3,%xmm1
  jae    L14
  movaps %xmm1,%xmm2
  subss  D249(%rip),%xmm2
  movss  D29(%rip),%xmm4
  movaps %xmm2,%xmm0
  andps  D211(%rip),%xmm0
  comiss %xmm0,%xmm4
  jbe    L46
  movaps %xmm2,%xmm4
  movss  D236(%rip),%xmm1
  movss  D99(%rip),%xmm0
  mulss  %xmm2,%xmm4
  mulss  %xmm4,%xmm1
  subss  D124(%rip),%xmm1
  mulss  %xmm4,%xmm0
  addss  D131(%rip),%xmm0
  mulss  %xmm4,%xmm1
  addss  D167(%rip),%xmm1
  mulss  %xmm4,%xmm0
  subss  D176(%rip),%xmm0
  mulss  %xmm4,%xmm1
  subss  D116(%rip),%xmm1
  mulss  %xmm4,%xmm0
  addss  D78(%rip),%xmm0
  mulss  %xmm4,%xmm1
  mulss  %xmm2,%xmm0
  addss  %xmm3,%xmm1
  divss  %xmm1,%xmm0
  ret
  nopl   0x0(%rax,%rax,1)
L14:
  ret
  nopl   0x0(%rax)
L51:
  movss  D229(%rip),%xmm0
  ret
  nopl   0x0(%rax)
L46:
  sub    $0x28,%rsp
  comiss %xmm5,%xmm2
  movss  %xmm2,0x1c(%rsp)
  jbe    L25
  subss  %xmm1,%xmm3
  movaps %xmm3,%xmm0
  call   <logf@plt>
  movss  D7(%rip),%xmm3
  xorps  %xmm3,%xmm0
  movaps %xmm3,(%rsp)
  call   <logf@plt>
  movaps (%rsp),%xmm3
  movss  0x1c(%rsp),%xmm2
L49:
  movss  D136(%rip),%xmm1
  pxor   %xmm7,%xmm7
  comiss %xmm2,%xmm7
  mulss  %xmm0,%xmm1
  addss  D180(%rip),%xmm1
  mulss  %xmm0,%xmm1
  addss  D224(%rip),%xmm1
  mulss  %xmm0,%xmm1
  addss  D5(%rip),%xmm1
  mulss  %xmm0,%xmm1
  addss  D22(%rip),%xmm1
  mulss  %xmm0,%xmm1
  addss  D60(%rip),%xmm1
  mulss  %xmm0,%xmm1
  addss  D31(%rip),%xmm1
  mulss  %xmm0,%xmm1
  addss  D120(%rip),%xmm1
  mulss  %xmm1,%xmm0
  addss  D0(%rip),%xmm0
  jbe    L59
  xorps  %xmm3,%xmm0
L59:
  add    $0x28,%rsp
  ret
  cs nopw 0x0(%rax,%rax,1)
L25:
  movaps %xmm1,%xmm0
  call   <logf@plt>
  movss  D7(%rip),%xmm3
  xorps  %xmm3,%xmm0
  movaps %xmm3,(%rsp)
  call   <logf@plt>
  movss  0x1c(%rsp),%xmm2
  movaps (%rsp),%xmm3
  jmp    L49
```

tool_calls: name: read_data
arguments: data_tag: D155
type_infered: byte[4]
name: read_data
arguments: data_tag: D229
type_infered: byte[4]
name: read_data
arguments: data_tag: D249
type_infered: byte[4]
name: read_data
arguments: data_tag: D29
type_infered: byte[4]
name: read_data
arguments: data_tag: D211
type_infered: dword[4]
name: read_data
arguments: data_tag: D236
type_infered: byte[4]
name: read_data
arguments: data_tag: D99
type_infered: byte[4]
name: read_data
arguments: data_tag: D124
type_infered: byte[4]
name: read_data
arguments: data_tag: D131
type_infered: byte[4]
name: read_data
arguments: data_tag: D167
type_infered: byte[4]
name: read_data
arguments: data_tag: D176
type_infered: byte[4]
name: read_data
arguments: data_tag: D116
type_infered: byte[4]
name: read_data
arguments: data_tag: D78
type_infered: byte[4]
name: read_data
arguments: data_tag: D7
type_infered: byte[4]
name: read_data
arguments: data_tag: D136
type_infered: byte[4]
name: read_data
arguments: data_tag: D180
type_infered: byte[4]
name: read_data
arguments: data_tag: D224
type_infered: byte[4]
name: read_data
arguments: data_tag: D5
type_infered: byte[4]
name: read_data
arguments: data_tag: D22
type_infered: byte[4]
name: read_data
arguments: data_tag: D60
type_infered: byte[4]
name: read_data
arguments: data_tag: D31
type_infered: byte[4]
name: read_data
arguments: data_tag: D120
type_infered: byte[4]
name: read_data
arguments: data_tag: D0
type_infered: byte[4]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

tool: {"D0": [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;
}
```