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

```asm
<PPND16>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  movsd  %xmm0,-0x28(%rbp)
  mov    %rdi,-0x30(%rbp)
  mov    -0x30(%rbp),%rax
  movl   $0x0,(%rax)
  movsd  -0x28(%rbp),%xmm0
  movsd  D216(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movq   D386(%rip),%xmm1
  andpd  %xmm0,%xmm1
  movsd  D448(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L17
  movsd  -0x8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D370(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm1
  movsd  D431(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D426(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movsd  D57(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x10(%rbp),%xmm1
  movsd  D564(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movsd  D304(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x10(%rbp),%xmm1
  movsd  D188(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movsd  D20(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x10(%rbp),%xmm1
  movsd  D242(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  -0x10(%rbp),%xmm2
  movsd  D496(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movsd  D396(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D223(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D417(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D280(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D545(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D66(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D336(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L76
L17:
  pxor   %xmm0,%xmm0
  comisd -0x8(%rbp),%xmm0
  jbe    L34
  movsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  jmp    L78
L34:
  movsd  D336(%rip),%xmm0
  subsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
L78:
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  jb     L22
  mov    -0x30(%rbp),%rax
  movl   $0x1,(%rax)
  pxor   %xmm0,%xmm0
  jmp    L19
L22:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rax
  movq   D303(%rip),%xmm0
  movq   %rax,%xmm3
  xorpd  %xmm0,%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x10(%rbp)
  movsd  D113(%rip),%xmm0
  comisd -0x10(%rbp),%xmm0
  jb     L36
  movsd  -0x10(%rbp),%xmm0
  movsd  D420(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm1
  movsd  D514(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D318(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movsd  D90(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x10(%rbp),%xmm1
  movsd  D69(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movsd  D170(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x10(%rbp),%xmm1
  movsd  D221(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movsd  D468(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x10(%rbp),%xmm1
  movsd  D325(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x10(%rbp),%xmm2
  movsd  D441(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movsd  D350(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D495(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D535(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D347(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D206(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D399(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D336(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  jmp    L80
L36:
  movsd  -0x10(%rbp),%xmm0
  movsd  D113(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm1
  movsd  D324(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D164(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movsd  D198(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x10(%rbp),%xmm1
  movsd  D231(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movsd  D261(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x10(%rbp),%xmm1
  movsd  D576(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movsd  D505(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x10(%rbp),%xmm1
  movsd  D156(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x10(%rbp),%xmm2
  movsd  D168(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movsd  D372(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D365(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D98(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D532(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D404(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D434(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D336(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
L80:
  pxor   %xmm0,%xmm0
  comisd -0x8(%rbp),%xmm0
  jbe    L76
  movsd  -0x18(%rbp),%xmm0
  movq   D303(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
L76:
  movsd  -0x18(%rbp),%xmm0
L19:
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D216
datatype: f64
name: read_data
arguments: label: D386
datatype: qword
name: read_data
arguments: label: D448
datatype: f64
name: read_data
arguments: label: D370
datatype: f64
name: read_data
arguments: label: D431
datatype: f64
name: read_data
arguments: label: D426
datatype: f64
name: read_data
arguments: label: D57
datatype: f64
name: read_data
arguments: label: D564
datatype: f64
name: read_data
arguments: label: D304
datatype: f64
name: read_data
arguments: label: D188
datatype: f64
name: read_data
arguments: label: D20
datatype: f64
name: read_data
arguments: label: D242
datatype: f64
name: read_data
arguments: label: D496
datatype: f64
name: read_data
arguments: label: D396
datatype: f64
name: read_data
arguments: label: D223
datatype: f64
name: read_data
arguments: label: D417
datatype: f64
name: read_data
arguments: label: D280
datatype: f64
name: read_data
arguments: label: D545
datatype: f64
name: read_data
arguments: label: D66
datatype: f64
name: read_data
arguments: label: D336
datatype: f64
name: read_data
arguments: label: D303
datatype: f32[2]
name: read_data
arguments: label: D113
datatype: f64
name: read_data
arguments: label: D420
datatype: f64
name: read_data
arguments: label: D514
datatype: byte[8]
name: read_data
arguments: label: D318
datatype: f64
name: read_data
arguments: label: D90
datatype: f64
name: read_data
arguments: label: D69
datatype: f64
name: read_data
arguments: label: D170
datatype: f64
name: read_data
arguments: label: D221
datatype: f64
name: read_data
arguments: label: D468
datatype: f64
name: read_data
arguments: label: D325
datatype: f64
name: read_data
arguments: label: D441
datatype: byte[8]
name: read_data
arguments: label: D350
datatype: byte[8]
name: read_data
arguments: label: D495
datatype: f64
name: read_data
arguments: label: D535
datatype: f64
name: read_data
arguments: label: D347
datatype: f64
name: read_data
arguments: label: D206
datatype: f64
name: read_data
arguments: label: D399
datatype: f64
name: read_data
arguments: label: D324
datatype: byte[8]
name: read_data
arguments: label: D164
datatype: byte[8]
name: read_data
arguments: label: D198
datatype: f64
name: read_data
arguments: label: D231
datatype: f64
name: read_data
arguments: label: D261
datatype: f64
name: read_data
arguments: label: D576
datatype: f64
name: read_data
arguments: label: D505
datatype: f64
name: read_data
arguments: label: D156
datatype: f64
name: read_data
arguments: label: D168
datatype: byte[8]
name: read_data
arguments: label: D372
datatype: byte[8]
name: read_data
arguments: label: D365
datatype: byte[8]
name: read_data
arguments: label: D98
datatype: byte[8]
name: read_data
arguments: label: D532
datatype: f64
name: read_data
arguments: label: D404
datatype: f64
name: read_data
arguments: label: D434
datatype: f64

tool: D216: 0.5

tool: D386: 9223372036854775807

tool: D448: 0.425

tool: D370: 0.180625

tool: D431: 2509.0809287301227

tool: D426: 33430.57558358813

tool: D57: 67265.7709270087

tool: D564: 45921.95393154987

tool: D304: 13731.69376550946

tool: D188: 1971.5909503065513

tool: D20: 133.14166789178438

tool: D242: 3.3871328727963665

tool: D496: 5226.495278852854

tool: D396: 28729.085735721943

tool: D223: 39307.89580009271

tool: D417: 21213.794301586597

tool: D280: 5394.196021424751

tool: D545: 687.1870074920579

tool: D66: 42.31333070160091

tool: D336: 1

tool: {"D303": [0.0,-0.0]}

tool: D113: 5

tool: D420: 1.6

tool: {"D514": [0xe9,0xac,0xb7,0xc0,0x5a,0x61,0x49,0x3f]}

tool: D318: 0.022723844989269184

tool: D90: 0.2417807251774506

tool: D69: 1.2704582524523684

tool: D170: 3.6478483247632045

tool: D221: 5.769497221460691

tool: D468: 4.630337846156546

tool: D325: 1.4234371107496835

tool: {"D441": [0xe4,0x39,0x64,0x68,0x3f,0x0d,0x12,0x3e]}

tool: {"D350": [0x28,0x27,0xdf,0xbf,0x8c,0xf1,0x41,0x3f]}

tool: D495: 0.015198666563616457

tool: D535: 0.14810397642748008

tool: D347: 0.6897673349851

tool: D206: 1.6763848301838038

tool: D399: 2.053191626637759

tool: {"D324": [0x93,0xbf,0x93,0xd6,0x74,0xfb,0x8a,0x3e]}

tool: {"D164": [0x2a,0xe0,0x59,0xcc,0xc6,0x6e,0xfc,0x3e]}

tool: D198: 0.0012426609473880784

tool: D231: 0.026532189526576124

tool: D261: 0.29656057182850487

tool: D576: 1.7848265399172913

tool: D505: 5.463784911164114

tool: D156: 6.657904643501103

tool: {"D168": [0x90,0xc1,0xf8,0xf1,0xbf,0x69,0xe2,0x3c]}

tool: {"D372": [0xe0,0xb9,0x40,0xf7,0x46,0x14,0x83,0x3e]}

tool: {"D365": [0xbf,0x74,0x63,0x49,0x2c,0x5c,0xf3,0x3e]}

tool: {"D98": [0xd7,0xc5,0x9d,0x97,0xbc,0xc8,0x49,0x3f]}

tool: D532: 0.014875361290850615

tool: D404: 0.1369298809227358

tool: D434: 0.599832206555888

assistant: ```c
double PPND16(p, ifault)
double p;
int *ifault;
{
  double result, q, r;
  *ifault = 0;
  q = p - 0.5;
  if (fabs(q) <= 0.425) {
    r = 0.180625 - q * q;
    result = q * (((((((r * 2509.0809287301226727 + 33430.575583588128105) * r + 67265.770927008700853) * r + 45921.953931549871457) * r + 13731.693765509461125) * r + 1971.5909503065514427) * r + 133.14166789178437745) * r + 3.387132872796366608) / (((((((r * 5226.495278852854561 + 28729.085735721942674) * r + 39307.89580009271061) * r + 21213.794301586595867) * r + 5394.1960214247511077) * r + 687.1870074920579083) * r + 42.313330701600911252) * r + 1.0);
  } else {
    if (q < 0.0)
      r = p;
    else
      r = 1.0 - p;
    if (r <= 0.0) {
      *ifault = 1;
      return 0.0;
    }
    r = sqrt(-log(r));
    if (r <= 5.0) {
      r += -1.6;
      result = (((((((r * 7.7454501427834140764e-4 + 0.0227238449892691845833) * r + 0.24178072517745061177) * r + 1.27045825245236838258) * r + 3.64784832476320460504) * r + 5.7694972214606914055) * r + 4.6303378461565452959) * r + 1.42343711074968357734) / (((((((r * 1.05075007164441684324e-9 + 5.475938084995344946e-4) * r + 0.0151986665636164571966) * r + 0.14810397642748007459) * r + 0.68976733498510000455) * r + 1.6763848301838038494) * r + 2.05319162663775882187) * r + 1.0);
    } else {
      r += -5.0;
      result = (((((((r * 2.01033439929228813265e-7 + 2.71155556874348757815e-5) * r + 0.0012426609473880784386) * r + 0.026532189526576123093) * r + 0.29656057182850489123) * r + 1.7848265399172913358) * r + 5.4637849111641143699) * r + 6.6579046435011037772) / (((((((r * 2.04426310338993978564e-15 + 1.4215117583164458887e-7) * r + 1.8463183175100546818e-5) * r + 7.868691311456132591e-4) * r + 0.0148753612908506148525) * r + 0.13692988092273580531) * r + 0.59983220655588793769) * r + 1.0);
    }
    if (q < 0.0)
      result = -result;
  }
  return result;
}
```