int main(void) {
  double ans;
  double data1[11] = {15, 20, 35, 40, 50, 34, 32, 43, 20, 1, 60};
  double skew_ans = -0.131700;
  double kurt_ans = -0.576756;
  double mean_ans = 31.818182;
  double median_ans = 34.000000;
  double std_ans = 16.078321;
  double variance_ans = 258.512397;
  double geo_ans = 23.449640;
  ans = CSPL_Stats_skew(data1, 11);
  printf("CSPL_Stats_skew=%lf, %lf\n", ans, skew_ans);
  {
    if ((fabs((ans) - (skew_ans)) < (1e-4)) == 0)
      return (1);
  };
  ans = CSPL_Stats_kurtosis(data1, 11);
  printf("CSPL_Stats_kurtosis=%lf, %lf\n", ans, kurt_ans);
  {
    if ((fabs((ans) - (kurt_ans)) < (1e-4)) == 0)
      return (1);
  };
  ans = CSPL_Stats_mean(data1, 11);
  printf("CSPL_Stats_mean=%lf, %lf\n", ans, mean_ans);
  {
    if ((fabs((ans) - (mean_ans)) < (1e-4)) == 0)
      return (1);
  };
  ans = CSPL_Stats_median_sort(data1, 11);
  printf("CSPL_Stats_median_sort=%lf, %lf\n", ans, median_ans);
  {
    if ((fabs((ans) - (median_ans)) < (1e-4)) == 0)
      return (1);
  };
  ans = CSPL_Stats_median_quickselect(data1, 11);
  printf("CSPL_Stats_median_quickselect=%lf, %lf\n", ans, median_ans);
  {
    if ((fabs((ans) - (median_ans)) < (1e-4)) == 0)
      return (1);
  };
  {
    if ((fabs((CSPL_Stats_median_sort(data1, 11)) -
              (CSPL_Stats_median_quickselect(data1, 11))) < (1e-4)) == 0)
      return (1);
  };
  ans = CSPL_Stats_std(data1, 11);
  printf("CSPL_Stats_std=%lf, %lf\n", ans, std_ans);
  {
    if ((fabs((ans) - (std_ans)) < (1e-4)) == 0)
      return (1);
  };
  ans = CSPL_Stats_variance(data1, 11);
  printf("CSPL_Stats_variance=%lf, %lf\n", ans, variance_ans);
  {
    if ((fabs((ans) - (variance_ans)) < (1e-4)) == 0)
      return (1);
  };
  ans = CSPL_Stats_geometric_mean(data1, 11);
  printf("CSPL_Stats_geometric_mean=%lf, %lf\n", ans, geo_ans);
  {
    if ((fabs((ans) - (geo_ans)) < (1e-4)) == 0)
      return (1);
  };
  {
    double data[5] = {2, 3.4, 5.6, 4.5, 3.1};
    double outval[5];
    double answer[5] = {0.2, 0.4, 0.6, 0.8, 1.0};
    long i;
    CSPL_Stats_tCDF(data, outval, 5);
    for (i = 0; i < 5; i++) {
      {
        if ((fabs((outval[i]) - (answer[i])) < (1e-5)) == 0)
          return (1);
      };
    }
  }
  {
    double data[5] = {0.2, 0.4, 0.6, 0.8, 1.0};
    double outval1[5];
    double outval2[5];
    double answer1[5] = {0.0, 0.0, 0.0, 0.072105, 0.272105};
    double answer2[5] = {0.927895, 1.0, 1.0, 1.0, 1.0};
    long i;
    CSPL_Stats_tCDF_confidence_bands(data, outval1, outval2, 0.01, 5);
    for (i = 0; i < 5; i++) {
      {
        if ((fabs((outval1[i]) - (answer1[i])) < (1e-5)) == 0)
          return (1);
      };
      {
        if ((fabs((outval2[i]) - (answer2[i])) < (1e-5)) == 0)
          return (1);
      };
    }
  }
  {
    double data[5] = {0.2, 0.4, 0.6, 0.8, 1.0};
    printf("CSPL_Stats_percentile %lf\n", CSPL_Stats_percentile(data, 20, 5));
    {
      if ((fabs((CSPL_Stats_percentile(data, 20, 5)) - (0.300000)) < (1e-5)) ==
          0)
        return (1);
    };
    printf("CSPL_Stats_percentile %lf\n", CSPL_Stats_percentile(data, 25, 5));
    {
      if ((fabs((CSPL_Stats_percentile(data, 25, 5)) - (0.350000)) < (1e-5)) ==
          0)
        return (1);
    };
    printf("CSPL_Stats_percentile %lf\n", CSPL_Stats_percentile(data, 40, 5));
    {
      if ((fabs((CSPL_Stats_percentile(data, 40, 5)) - (0.500000)) < (1e-5)) ==
          0)
        return (1);
    };
    printf("CSPL_Stats_percentile %lf\n", CSPL_Stats_percentile(data, 50, 5));
    {
      if ((fabs((CSPL_Stats_percentile(data, 50, 5)) - (0.600000)) < (1e-5)) ==
          0)
        return (1);
    };
    printf("CSPL_Stats_percentile %lf\n", CSPL_Stats_percentile(data, 60, 5));
    {
      if ((fabs((CSPL_Stats_percentile(data, 60, 5)) - (0.700000)) < (1e-5)) ==
          0)
        return (1);
    };
    printf("CSPL_Stats_percentile %lf\n", CSPL_Stats_percentile(data, 82, 5));
    {
      if ((fabs((CSPL_Stats_percentile(data, 82, 5)) - (0.920000)) < (1e-5)) ==
          0)
        return (1);
    };
    {
      if ((fabs((CSPL_Stats_percentile(data, 50, 5)) -
                (CSPL_Stats_median_sort(data, 5))) < (1e-5)) == 0)
        return (1);
    };
  }
  {
    long N = 11;
    long n;
    double answer[11] = {4.545455,  13.636364, 22.727273, 31.818182,
                         40.909091, 50.000000, 59.090909, 68.181818,
                         77.272727, 86.363636, 95.454545};
    for (n = 0; n < N; n++) {
      printf("CSPL_Stats_percent_rank %ld, %ld, %lf\n", n, N,
             CSPL_Stats_percent_rank(n, N));
      {
        if ((fabs((CSPL_Stats_percent_rank(n, N)) - (answer[n])) < (1e-5)) == 0)
          return (1);
      };
    }
  }
  {
    unsigned long ans[30] = {1,  0,  0,  3,  1,  0,   6,  4,   1,
                             10, 10, 5,  15, 20, 15,  21, 35,  35,
                             28, 56, 70, 36, 84, 126, 45, 120, 210};
    unsigned long N[10] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
    unsigned long k[3] = {2, 3, 4};
    unsigned long NN, kk, val, tmp = 0;
    for (NN = 0; NN < 10; NN++) {
      for (kk = 0; kk < 3; kk++) {
        val = CSPL_Stats_combination(N[NN], k[kk]);
        printf("CSPL_Stats_combination(%ld, %ld)=%ld -> %ld\n", N[NN], k[kk],
               val, ans[tmp]);
        {
          if (val != ans[tmp])
            return (1);
        };
        tmp++;
      }
    }
  }
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x460,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x70(%rbp),%rdi
lea    0x1ed3(%rip),%rsi
mov    $0x58,%edx
call   10c0 <memcpy@plt>
movsd  0x1e09(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x1df4(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0x1ddf(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0x1dc7(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0x1daf(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x1d97(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x1d7f(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
lea    -0x70(%rbp),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   10e0 <CSPL_Stats_skew@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
lea    0x204d(%rip),%rdi
mov    $0x2,%al
call   1080 <printf@plt>
movsd  -0x10(%rbp),%xmm1
subsd  -0x78(%rbp),%xmm1
movaps 0x1e0d(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1d21(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1300 <main+0x100>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x70(%rbp),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   1100 <CSPL_Stats_kurtosis@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm1
lea    0x1ff8(%rip),%rdi
mov    $0x2,%al
call   1080 <printf@plt>
movsd  -0x10(%rbp),%xmm1
subsd  -0x80(%rbp),%xmm1
movaps 0x1d9e(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1cb2(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    136f <main+0x16f>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x70(%rbp),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   1040 <CSPL_Stats_mean@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm1
ff
lea    0x1fa4(%rip),%rdi
mov    $0x2,%al
call   1080 <printf@plt>
movsd  -0x10(%rbp),%xmm1
subsd  -0x88(%rbp),%xmm1
ff
movaps 0x1d29(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1c3d(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    13e4 <main+0x1e4>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x70(%rbp),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   10f0 <CSPL_Stats_median_sort@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x90(%rbp),%xmm1
ff
lea    0x1f49(%rip),%rdi
mov    $0x2,%al
call   1080 <printf@plt>
movsd  -0x10(%rbp),%xmm1
subsd  -0x90(%rbp),%xmm1
ff
movaps 0x1cb4(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1bc8(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1459 <main+0x259>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x70(%rbp),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   1060 <CSPL_Stats_median_quickselect@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x90(%rbp),%xmm1
ff
lea    0x1ef5(%rip),%rdi
mov    $0x2,%al
call   1080 <printf@plt>
movsd  -0x10(%rbp),%xmm1
subsd  -0x90(%rbp),%xmm1
ff
movaps 0x1c3f(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1b53(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    14ce <main+0x2ce>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x70(%rbp),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   10f0 <CSPL_Stats_median_sort@plt>
mov    %eax,-0x444(%rbp)
lea    -0x70(%rbp),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   1060 <CSPL_Stats_median_quickselect@plt>
mov    %eax,%ecx
mov    -0x444(%rbp),%eax
sub    %ecx,%eax
cvtsi2sd %eax,%xmm1
movaps 0x1bd7(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1aeb(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1536 <main+0x336>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x70(%rbp),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   1030 <CSPL_Stats_std@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm1
ff
lea    0x1e40(%rip),%rdi
mov    $0x2,%al
call   1080 <printf@plt>
movsd  -0x10(%rbp),%xmm1
subsd  -0x98(%rbp),%xmm1
ff
movaps 0x1b62(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1a76(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    15ab <main+0x3ab>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x70(%rbp),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   10b0 <CSPL_Stats_variance@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
lea    0x1de4(%rip),%rdi
mov    $0x2,%al
call   1080 <printf@plt>
movsd  -0x10(%rbp),%xmm1
subsd  -0xa0(%rbp),%xmm1
ff
movaps 0x1aed(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1a01(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1620 <main+0x420>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x70(%rbp),%rdi
mov    $0xb,%esi
mov    $0x0,%al
call   1050 <CSPL_Stats_geometric_mean@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm1
ff
lea    0x1d8d(%rip),%rdi
mov    $0x2,%al
call   1080 <printf@plt>
movsd  -0x10(%rbp),%xmm1
subsd  -0xa8(%rbp),%xmm1
ff
movaps 0x1a78(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x198c(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1695 <main+0x495>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0xd0(%rbp),%rdi
xor    %esi,%esi
mov    $0x28,%edx
call   10a0 <memset@plt>
movsd  0x19d8(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0x19c0(%rip),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0x19a8(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0x1990(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x1978(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
lea    -0x130(%rbp),%rdi
xor    %esi,%esi
mov    $0x28,%edx
call   10a0 <memset@plt>
movsd  0x194d(%rip),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  0x1935(%rip),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  0x191d(%rip),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  0x1905(%rip),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  0x18ed(%rip),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
lea    -0xd0(%rbp),%rdi
lea    -0x100(%rbp),%rsi
mov    $0x5,%edx
mov    $0x0,%al
call   1070 <CSPL_Stats_tCDF@plt>
movq   $0x0,-0x138(%rbp)
cmpq   $0x5,-0x138(%rbp)
05
jge    17fe <main+0x5fe>
mov    -0x138(%rbp),%rax
movsd  -0x100(%rbp,%rax,8),%xmm1
ff ff
mov    -0x138(%rbp),%rax
subsd  -0x130(%rbp,%rax,8),%xmm1
ff ff
movaps 0x192b(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x18ef(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    17e2 <main+0x5e2>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
jmp    17e7 <main+0x5e7>
mov    -0x138(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x138(%rbp)
jmp    1780 <main+0x580>
lea    -0x160(%rbp),%rdi
xor    %esi,%esi
mov    $0x28,%edx
call   10a0 <memset@plt>
movsd  0x1847(%rip),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  0x182f(%rip),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0x1817(%rip),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  0x17ff(%rip),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  0x17e7(%rip),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
lea    -0x1f0(%rbp),%rdi
xor    %esi,%esi
mov    $0x28,%edx
call   10a0 <memset@plt>
movsd  0x182c(%rip),%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  0x1814(%rip),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
lea    -0x220(%rbp),%rdi
xor    %esi,%esi
mov    $0x28,%edx
call   10a0 <memset@plt>
movsd  0x17e9(%rip),%xmm0
movsd  %xmm0,-0x220(%rbp)
ff
movsd  0x1781(%rip),%xmm0
movsd  %xmm0,-0x218(%rbp)
ff
movsd  0x1771(%rip),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  0x1761(%rip),%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
movsd  0x1751(%rip),%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
lea    -0x160(%rbp),%rdi
lea    -0x190(%rbp),%rsi
lea    -0x1c0(%rbp),%rdx
movsd  0x177c(%rip),%xmm0
mov    $0x5,%ecx
mov    $0x1,%al
call   1110 <CSPL_Stats_tCDF_confidence_bands@plt>
movq   $0x0,-0x228(%rbp)
cmpq   $0x5,-0x228(%rbp)
05
jge    19fd <main+0x7fd>
mov    -0x228(%rbp),%rax
movsd  -0x190(%rbp,%rax,8),%xmm1
ff ff
mov    -0x228(%rbp),%rax
subsd  -0x1f0(%rbp,%rax,8),%xmm1
ff ff
movaps 0x1780(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1744(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    198d <main+0x78d>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
mov    -0x228(%rbp),%rax
movsd  -0x1c0(%rbp,%rax,8),%xmm1
ff ff
mov    -0x228(%rbp),%rax
subsd  -0x220(%rbp,%rax,8),%xmm1
ff ff
movaps 0x172c(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x16f0(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    19e1 <main+0x7e1>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
jmp    19e6 <main+0x7e6>
mov    -0x228(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x228(%rbp)
jmp    192b <main+0x72b>
lea    -0x250(%rbp),%rdi
xor    %esi,%esi
mov    $0x28,%edx
call   10a0 <memset@plt>
movsd  0x1648(%rip),%xmm0
movsd  %xmm0,-0x250(%rbp)
ff
movsd  0x1630(%rip),%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
movsd  0x1618(%rip),%xmm0
movsd  %xmm0,-0x240(%rbp)
ff
movsd  0x1600(%rip),%xmm0
movsd  %xmm0,-0x238(%rbp)
ff
movsd  0x15e8(%rip),%xmm0
movsd  %xmm0,-0x230(%rbp)
ff
lea    -0x250(%rbp),%rdi
mov    $0x14,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
mov    %eax,%esi
lea    0x197d(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    -0x250(%rbp),%rdi
mov    $0x14,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
cvtsi2sd %eax,%xmm1
movsd  0x160c(%rip),%xmm0
subsd  %xmm0,%xmm1
movaps 0x1629(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x15ed(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1ae4 <main+0x8e4>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x250(%rbp),%rdi
mov    $0x19,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
mov    %eax,%esi
lea    0x18f9(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    -0x250(%rbp),%rdi
mov    $0x19,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
cvtsi2sd %eax,%xmm1
movsd  0x1590(%rip),%xmm0
subsd  %xmm0,%xmm1
movaps 0x15a5(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1569(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1b68 <main+0x968>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x250(%rbp),%rdi
mov    $0x28,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
mov    %eax,%esi
lea    0x1875(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    -0x250(%rbp),%rdi
mov    $0x28,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
cvtsi2sd %eax,%xmm1
movsd  0x1514(%rip),%xmm0
subsd  %xmm0,%xmm1
movaps 0x1521(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x14e5(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1bec <main+0x9ec>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x250(%rbp),%rdi
mov    $0x32,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
mov    %eax,%esi
lea    0x17f1(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    -0x250(%rbp),%rdi
mov    $0x32,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
cvtsi2sd %eax,%xmm1
movsd  0x1418(%rip),%xmm0
subsd  %xmm0,%xmm1
movaps 0x149d(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1461(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1c70 <main+0xa70>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x250(%rbp),%rdi
mov    $0x3c,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
mov    %eax,%esi
lea    0x176d(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    -0x250(%rbp),%rdi
mov    $0x3c,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
cvtsi2sd %eax,%xmm1
movsd  0x1414(%rip),%xmm0
subsd  %xmm0,%xmm1
movaps 0x1419(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x13dd(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1cf4 <main+0xaf4>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x250(%rbp),%rdi
mov    $0x52,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
mov    %eax,%esi
lea    0x16e9(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    -0x250(%rbp),%rdi
mov    $0x52,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
cvtsi2sd %eax,%xmm1
movsd  0x1398(%rip),%xmm0
subsd  %xmm0,%xmm1
movaps 0x1395(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x1359(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1d78 <main+0xb78>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
lea    -0x250(%rbp),%rdi
mov    $0x32,%esi
mov    $0x5,%edx
mov    $0x0,%al
call   10d0 <CSPL_Stats_percentile@plt>
mov    %eax,-0x448(%rbp)
lea    -0x250(%rbp),%rdi
mov    $0x5,%esi
mov    $0x0,%al
call   10f0 <CSPL_Stats_median_sort@plt>
mov    %eax,%ecx
mov    -0x448(%rbp),%eax
sub    %ecx,%eax
cvtsi2sd %eax,%xmm1
movaps 0x1322(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x12e6(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1deb <main+0xbeb>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
movq   $0xb,-0x258(%rbp)
lea    -0x2c0(%rbp),%rdi
lea    0x134c(%rip),%rsi
mov    $0x58,%edx
call   10c0 <memcpy@plt>
movq   $0x0,-0x260(%rbp)
mov    -0x260(%rbp),%rax
cmp    -0x258(%rbp),%rax
jge    1ef5 <main+0xcf5>
mov    -0x260(%rbp),%rax
mov    %rax,-0x458(%rbp)
mov    -0x258(%rbp),%rax
mov    %rax,-0x450(%rbp)
mov    -0x260(%rbp),%rdi
mov    -0x258(%rbp),%rsi
mov    $0x0,%al
call   1090 <CSPL_Stats_percent_rank@plt>
mov    -0x458(%rbp),%rsi
mov    -0x450(%rbp),%rdx
mov    %eax,%ecx
lea    0x15a4(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
mov    -0x260(%rbp),%rdi
mov    -0x258(%rbp),%rsi
mov    $0x0,%al
call   1090 <CSPL_Stats_percent_rank@plt>
cvtsi2sd %eax,%xmm1
mov    -0x260(%rbp),%rax
subsd  -0x2c0(%rbp,%rax,8),%xmm1
ff ff
movaps 0x1234(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x11f8(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
jne    1ed9 <main+0xcd9>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
jmp    1ede <main+0xcde>
mov    -0x260(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x260(%rbp)
jmp    1e19 <main+0xc19>
lea    -0x3b0(%rbp),%rdi
lea    0x12ad(%rip),%rsi
mov    $0xf0,%edx
call   10c0 <memcpy@plt>
lea    -0x400(%rbp),%rdi
lea    0x1385(%rip),%rsi
mov    $0x50,%edx
call   10c0 <memcpy@plt>
mov    0x13c4(%rip),%rax
mov    %rax,-0x420(%rbp)
mov    0x13be(%rip),%rax
mov    %rax,-0x418(%rbp)
mov    0x13b8(%rip),%rax
mov    %rax,-0x410(%rbp)
movq   $0x0,-0x440(%rbp)
movq   $0x0,-0x428(%rbp)
cmpq   $0xa,-0x428(%rbp)
0a
jae    2069 <main+0xe69>
movq   $0x0,-0x430(%rbp)
cmpq   $0x3,-0x430(%rbp)
03
jae    204d <main+0xe4d>
mov    -0x428(%rbp),%rax
mov    -0x400(%rbp,%rax,8),%rdi
ff
mov    -0x430(%rbp),%rax
mov    -0x420(%rbp,%rax,8),%rsi
ff
mov    $0x0,%al
call   1120 <CSPL_Stats_combination@plt>
cltq
mov    %rax,-0x438(%rbp)
mov    -0x428(%rbp),%rax
mov    -0x400(%rbp,%rax,8),%rsi
ff
mov    -0x430(%rbp),%rax
mov    -0x420(%rbp,%rax,8),%rdx
ff
mov    -0x438(%rbp),%rcx
mov    -0x440(%rbp),%rax
mov    -0x3b0(%rbp,%rax,8),%r8
ff
lea    0x144b(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
mov    -0x438(%rbp),%rax
mov    -0x440(%rbp),%rcx
cmp    -0x3b0(%rbp,%rcx,8),%rax
ff
je     2024 <main+0xe24>
movl   $0x1,-0x4(%rbp)
jmp    2070 <main+0xe70>
mov    -0x440(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x440(%rbp)
mov    -0x430(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x430(%rbp)
jmp    1f7e <main+0xd7e>
jmp    2052 <main+0xe52>
mov    -0x428(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x428(%rbp)
jmp    1f65 <main+0xd65>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x460,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xf8,%rsp
mov    0xf98(%rip),%rax
mov    %rax,0xc0(%rsp)
movaps 0xf79(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xf5a(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xf3b(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xf1c(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xefd(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
lea    0x70(%rsp),%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   10c0 <CSPL_Stats_skew@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd %xmm0,(%rsp)
lea    0x10d4(%rip),%rdi
movsd  0xd8c(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
movapd (%rsp),%xmm0
addsd  0xd80(%rip),%xmm0
andpd  0xe60(%rip),%xmm0
movapd %xmm0,%xmm1
movsd  0xd74(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1a9b <main+0x8bb>
lea    0x70(%rsp),%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   10e0 <CSPL_Stats_kurtosis@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd %xmm0,(%rsp)
lea    0x1090(%rip),%rdi
movsd  0xd46(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
movapd (%rsp),%xmm1
addsd  0xd3a(%rip),%xmm1
andpd  0xe02(%rip),%xmm1
movsd  0xd1a(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1a9b <main+0x8bb>
lea    0x70(%rsp),%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   1040 <CSPL_Stats_mean@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd %xmm0,(%rsp)
lea    0x1054(%rip),%rdi
movsd  0xcfc(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
movapd (%rsp),%xmm1
addsd  0xcf0(%rip),%xmm1
andpd  0xda8(%rip),%xmm1
movsd  0xcc0(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1a9b <main+0x8bb>
lea    0x70(%rsp),%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   10d0 <CSPL_Stats_median_sort@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd %xmm0,(%rsp)
lea    0x1014(%rip),%rdi
movsd  0xcb2(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
movapd (%rsp),%xmm1
addsd  0xca6(%rip),%xmm1
andpd  0xd4e(%rip),%xmm1
movsd  0xc66(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1a9b <main+0x8bb>
lea    0x70(%rsp),%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   1060 <CSPL_Stats_median_quickselect@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd %xmm0,(%rsp)
lea    0xfdb(%rip),%rdi
movsd  0xc58(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
movapd (%rsp),%xmm1
addsd  0xc4c(%rip),%xmm1
andpd  0xcf4(%rip),%xmm1
movsd  0xc0c(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1a9b <main+0x8bb>
lea    0x70(%rsp),%rbx
mov    %rbx,%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   10d0 <CSPL_Stats_median_sort@plt>
mov    %eax,%ebp
mov    %rbx,%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   1060 <CSPL_Stats_median_quickselect@plt>
sub    %eax,%ebp
xorps  %xmm0,%xmm0
cvtsi2sd %ebp,%xmm0
andpd  0xcac(%rip),%xmm0
movsd  0xbc4(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
lea    0x70(%rsp),%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   1030 <CSPL_Stats_std@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd %xmm0,(%rsp)
lea    0xf61(%rip),%rdi
movsd  0xbc6(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
movapd (%rsp),%xmm1
addsd  0xbba(%rip),%xmm1
andpd  0xc52(%rip),%xmm1
movsd  0xb6a(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1a9b <main+0x8bb>
lea    0x70(%rsp),%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   10a0 <CSPL_Stats_variance@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd %xmm0,(%rsp)
lea    0xf20(%rip),%rdi
movsd  0xb7c(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
movsd  0xb25(%rip),%xmm0
movapd (%rsp),%xmm1
addsd  0xb68(%rip),%xmm1
andpd  0xbf0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1a9b <main+0x8bb>
lea    0x70(%rsp),%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   1050 <CSPL_Stats_geometric_mean@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd %xmm0,(%rsp)
lea    0xee4(%rip),%rdi
movsd  0xb32(%rip),%xmm1
mov    $0x2,%al
call   1080 <printf@plt>
movapd (%rsp),%xmm1
addsd  0xb26(%rip),%xmm1
andpd  0xb9e(%rip),%xmm1
movsd  0xab6(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1a9b <main+0x8bb>
movaps 0xb95(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xb99(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movabs $0x4008cccccccccccd,%rax
cc 08 40
mov    %rax,0x30(%rsp)
lea    0x10(%rsp),%rdi
lea    0x40(%rsp),%rsi
mov    $0x5,%edx
xor    %eax,%eax
call   1070 <CSPL_Stats_tCDF@plt>
movsd  0x40(%rsp),%xmm0
addsd  0xac9(%rip),%xmm0
andpd  0xb39(%rip),%xmm0
movsd  0xac1(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0x48(%rsp),%xmm0
addsd  0xab1(%rip),%xmm0
andpd  0xb11(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0x50(%rsp),%xmm0
addsd  0xa99(%rip),%xmm0
andpd  0xaf1(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0x58(%rsp),%xmm0
addsd  0xa81(%rip),%xmm0
andpd  0xad1(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0x60(%rsp),%xmm0
addsd  0xa69(%rip),%xmm0
andpd  0xab1(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movaps 0xad0(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xad4(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movabs $0x3ff0000000000000,%rbx
mov    %rbx,0x30(%rsp)
lea    0x10(%rsp),%rdi
lea    0x40(%rsp),%rsi
lea    0xd0(%rsp),%rdx
movsd  0xa1e(%rip),%xmm0
mov    $0x5,%ecx
mov    $0x1,%al
call   10f0 <CSPL_Stats_tCDF_confidence_bands@plt>
movsd  0x9e2(%rip),%xmm1
movsd  0x40(%rsp),%xmm0
andpd  0xa44(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0xd0(%rsp),%xmm0
addsd  0x9e9(%rip),%xmm0
andpd  0xa21(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0x48(%rsp),%xmm0
andpd  0xa09(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0xd8(%rsp),%xmm0
addsd  0x99e(%rip),%xmm0
andpd  0x9e6(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0x50(%rsp),%xmm0
andpd  0x9ce(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0xe0(%rsp),%xmm0
addsd  0x963(%rip),%xmm0
andpd  0x9ab(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0x58(%rsp),%xmm0
addsd  0x95b(%rip),%xmm0
andpd  0x98b(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0xe8(%rsp),%xmm0
addsd  0x920(%rip),%xmm0
andpd  0x968(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0x60(%rsp),%xmm0
addsd  0x920(%rip),%xmm0
andpd  0x948(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movsd  0xf0(%rsp),%xmm0
addsd  0x8dd(%rip),%xmm0
andpd  0x925(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
movaps 0x944(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0x948(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
mov    %rbx,0x30(%rsp)
lea    0x10(%rsp),%rbx
mov    %rbx,%rdi
mov    $0x14,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
lea    0xc24(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1080 <printf@plt>
mov    %rbx,%rdi
mov    $0x14,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x88a(%rip),%xmm0
andpd  0x8aa(%rip),%xmm0
movsd  0x832(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
lea    0x10(%rsp),%rbx
mov    %rbx,%rdi
mov    $0x19,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
lea    0xbbe(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1080 <printf@plt>
mov    %rbx,%rdi
mov    $0x19,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x82c(%rip),%xmm0
andpd  0x844(%rip),%xmm0
movsd  0x7cc(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
lea    0x10(%rsp),%rbx
mov    %rbx,%rdi
mov    $0x28,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
lea    0xb58(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1080 <printf@plt>
mov    %rbx,%rdi
mov    $0x28,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x7ce(%rip),%xmm0
andpd  0x7de(%rip),%xmm0
movsd  0x766(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
lea    0x10(%rsp),%rbx
mov    %rbx,%rdi
mov    $0x32,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
lea    0xaf2(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1080 <printf@plt>
mov    %rbx,%rdi
mov    $0x32,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x720(%rip),%xmm0
andpd  0x778(%rip),%xmm0
movsd  0x700(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
lea    0x10(%rsp),%rbx
mov    %rbx,%rdi
mov    $0x3c,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
lea    0xa8c(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1080 <printf@plt>
mov    %rbx,%rdi
mov    $0x3c,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x70a(%rip),%xmm0
andpd  0x712(%rip),%xmm0
movsd  0x69a(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
lea    0x10(%rsp),%rbx
mov    %rbx,%rdi
mov    $0x52,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
lea    0xa26(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1080 <printf@plt>
mov    %rbx,%rdi
mov    $0x52,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x6ac(%rip),%xmm0
andpd  0x6ac(%rip),%xmm0
movsd  0x634(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
lea    0x10(%rsp),%rbx
mov    %rbx,%rdi
mov    $0x32,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   10b0 <CSPL_Stats_percentile@plt>
mov    %eax,%ebp
mov    %rbx,%rdi
mov    $0x5,%esi
xor    %eax,%eax
call   10d0 <CSPL_Stats_median_sort@plt>
sub    %eax,%ebp
xorps  %xmm0,%xmm0
cvtsi2sd %ebp,%xmm0
andpd  0x663(%rip),%xmm0
movsd  0x5eb(%rip),%xmm1
ucomisd %xmm0,%xmm1
ja     1ab2 <main+0x8d2>
mov    $0x1,%eax
add    $0xf8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x6e7(%rip),%rbp
lea    0x991(%rip),%r14
xor    %ebx,%ebx
mov    $0xb,%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1090 <CSPL_Stats_percent_rank@plt>
mov    $0xb,%edx
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %eax,%ecx
xor    %eax,%eax
call   1080 <printf@plt>
mov    $0xb,%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1090 <CSPL_Stats_percent_rank@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
subsd  0x0(%rbp),%xmm0
andpd  0x5e8(%rip),%xmm0
movsd  0x570(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1a9b <main+0x8bb>
add    $0x1,%rbx
add    $0x8,%rbp
cmp    $0xb,%rbx
jne    1ac2 <main+0x8e2>
lea    0x6e5(%rip),%r12
lea    0x946(%rip),%r14
xor    %r13d,%r13d
lea    0x7b4(%rip),%rax
mov    0x0(%r13,%rax,1),%rbx
mov    $0x2,%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1100 <CSPL_Stats_combination@plt>
movslq %eax,%r15
mov    -0x10(%r12),%rbp
mov    $0x2,%edx
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15,%rcx
mov    %rbp,%r8
xor    %eax,%eax
call   1080 <printf@plt>
cmp    %r15,%rbp
jne    1a9b <main+0x8bb>
mov    $0x3,%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1100 <CSPL_Stats_combination@plt>
movslq %eax,%r15
mov    -0x8(%r12),%rbp
mov    $0x3,%edx
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15,%rcx
mov    %rbp,%r8
xor    %eax,%eax
call   1080 <printf@plt>
cmp    %r15,%rbp
jne    1a9b <main+0x8bb>
mov    $0x4,%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1100 <CSPL_Stats_combination@plt>
movslq %eax,%r15
mov    (%r12),%rbp
mov    $0x4,%edx
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15,%rcx
mov    %rbp,%r8
xor    %eax,%eax
call   1080 <printf@plt>
cmp    %r15,%rbp
jne    1a9b <main+0x8bb>
add    $0x18,%r12
add    $0x8,%r13
xor    %eax,%eax
cmp    $0x50,%r13
jne    1b35 <main+0x955>
jmp    1aa0 <main+0x8c0>

LLVM IR (-O0):
@__const.main.data1 = [11 x double] [double 1.500000e+01, double 2.000000e+01, double 3.500000e+01, double 4.000000e+01, double 5.000000e+01, double 3.400000e+01, double 3.200000e+01, double 4.300000e+01, double 2.000000e+01, double 1.000000e+00, double 6.000000e+01]
@.str = [26 x i8] c"CSPL_Stats_skew=%lf, %lf\0A\00"
@.str.1 = [30 x i8] c"CSPL_Stats_kurtosis=%lf, %lf\0A\00"
@.str.2 = [26 x i8] c"CSPL_Stats_mean=%lf, %lf\0A\00"
@.str.3 = [33 x i8] c"CSPL_Stats_median_sort=%lf, %lf\0A\00"
@.str.4 = [40 x i8] c"CSPL_Stats_median_quickselect=%lf, %lf\0A\00"
@.str.5 = [25 x i8] c"CSPL_Stats_std=%lf, %lf\0A\00"
@.str.6 = [30 x i8] c"CSPL_Stats_variance=%lf, %lf\0A\00"
@.str.7 = [36 x i8] c"CSPL_Stats_geometric_mean=%lf, %lf\0A\00"
@.str.8 = [27 x i8] c"CSPL_Stats_percentile %lf\0A\00"
@__const.main.answer = [11 x double] [double 0x40122E8BC169C23B, double 0x402B45D18090B418, double 0x4036BA2E90364389, double 0x403FD17460242D06, double 0x4044745D18090B41, double 5.000000e+01, double 0x404D8BA2E7F6F4BF, double 0x40510BA2E7F6F4BF, double 0x405351745BF26F1E, double 0x40559745CFEDE97D, double 0x4057DD1743E963DC]
@.str.9 = [39 x i8] c"CSPL_Stats_percent_rank %ld, %ld, %lf\0A\00"
@__const.main.ans = [30 x i64] [i64 1, i64 0, i64 0, i64 3, i64 1, i64 0, i64 6, i64 4, i64 1, i64 10, i64 10, i64 5, i64 15, i64 20, i64 15, i64 21, i64 35, i64 35, i64 28, i64 56, i64 70, i64 36, i64 84, i64 126, i64 45, i64 120, i64 210, i64 0, i64 0, i64 0]
@__const.main.N = [10 x i64] [i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 9, i64 10, i64 0]
@__const.main.k = [3 x i64] [i64 2, i64 3, i64 4]
@.str.10 = [45 x i8] c"CSPL_Stats_combination(%ld, %ld)=%ld -> %ld\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca double
%3 = alloca [11 x double]
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca [5 x double]
%12 = alloca [5 x double]
%13 = alloca [5 x double]
%14 = alloca i64
%15 = alloca [5 x double]
%16 = alloca [5 x double]
%17 = alloca [5 x double]
%18 = alloca [5 x double]
%19 = alloca [5 x double]
%20 = alloca i64
%21 = alloca [5 x double]
%22 = alloca i64
%23 = alloca i64
%24 = alloca [11 x double]
%25 = alloca [30 x i64]
%26 = alloca [10 x i64]
%27 = alloca [3 x i64]
%28 = alloca i64
%29 = alloca i64
%30 = alloca i64
%31 = alloca i64
store i32 0, i32* %1
%32 = bitcast [11 x double]* %3 to i8*
store double -1.317000e-01, double* %4
store double -5.767560e-01, double* %5
store double 0x403FD17460242D06, double* %6
store double 3.400000e+01, double* %7
store double 0x4030140CD855970B, double* %8
store double 0x40702832C7325919, double* %9
store double 0x4037731B9B66F933, double* %10
%33 = getelementptr inbounds [11 x double], [11 x double]* %3, i64 0, i64 0
%34 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_skew to i32 (double*, i32, ...)*)(double* %33, i32 11)
%35 = sitofp i32 %34 to double
store double %35, double* %2
%36 = load double, double* %2
%37 = load double, double* %4
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), double %36, double %37)
%39 = load double, double* %2
%40 = load double, double* %4
%41 = fsub double %39, %40
%42 = call double @llvm.fabs.f64(double %41)
%43 = fcmp olt double %42, 1.000000e-04
%44 = zext i1 %43 to i32
%45 = icmp eq i32 %44, 0
br i1 %45, label %46, label %47
46: ; preds = %0
store i32 1, i32* %1
br label %433
47: ; preds = %0
%48 = getelementptr inbounds [11 x double], [11 x double]* %3, i64 0, i64 0
%49 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_kurtosis to i32 (double*, i32, ...)*)(double* %48, i32 11)
%50 = sitofp i32 %49 to double
store double %50, double* %2
%51 = load double, double* %2
%52 = load double, double* %5
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.1, i64 0, i64 0), double %51, double %52)
%54 = load double, double* %2
%55 = load double, double* %5
%56 = fsub double %54, %55
%57 = call double @llvm.fabs.f64(double %56)
%58 = fcmp olt double %57, 1.000000e-04
%59 = zext i1 %58 to i32
%60 = icmp eq i32 %59, 0
br i1 %60, label %61, label %62
61: ; preds = %47
store i32 1, i32* %1
br label %433
62: ; preds = %47
%63 = getelementptr inbounds [11 x double], [11 x double]* %3, i64 0, i64 0
%64 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_mean to i32 (double*, i32, ...)*)(double* %63, i32 11)
%65 = sitofp i32 %64 to double
store double %65, double* %2
%66 = load double, double* %2
%67 = load double, double* %6
%68 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0), double %66, double %67)
%69 = load double, double* %2
%70 = load double, double* %6
%71 = fsub double %69, %70
%72 = call double @llvm.fabs.f64(double %71)
%73 = fcmp olt double %72, 1.000000e-04
%74 = zext i1 %73 to i32
%75 = icmp eq i32 %74, 0
br i1 %75, label %76, label %77
76: ; preds = %62
store i32 1, i32* %1
br label %433
77: ; preds = %62
%78 = getelementptr inbounds [11 x double], [11 x double]* %3, i64 0, i64 0
%79 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_median_sort to i32 (double*, i32, ...)*)(double* %78, i32 11)
%80 = sitofp i32 %79 to double
store double %80, double* %2
%81 = load double, double* %2
%82 = load double, double* %7
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.3, i64 0, i64 0), double %81, double %82)
%84 = load double, double* %2
%85 = load double, double* %7
%86 = fsub double %84, %85
%87 = call double @llvm.fabs.f64(double %86)
%88 = fcmp olt double %87, 1.000000e-04
%89 = zext i1 %88 to i32
%90 = icmp eq i32 %89, 0
br i1 %90, label %91, label %92
91: ; preds = %77
store i32 1, i32* %1
br label %433
92: ; preds = %77
%93 = getelementptr inbounds [11 x double], [11 x double]* %3, i64 0, i64 0
%94 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_median_quickselect to i32 (double*, i32, ...)*)(double* %93, i32 11)
%95 = sitofp i32 %94 to double
store double %95, double* %2
%96 = load double, double* %2
%97 = load double, double* %7
%98 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.4, i64 0, i64 0), double %96, double %97)
%99 = load double, double* %2
%100 = load double, double* %7
%101 = fsub double %99, %100
%102 = call double @llvm.fabs.f64(double %101)
%103 = fcmp olt double %102, 1.000000e-04
%104 = zext i1 %103 to i32
%105 = icmp eq i32 %104, 0
br i1 %105, label %106, label %107
106: ; preds = %92
store i32 1, i32* %1
br label %433
107: ; preds = %92
%108 = getelementptr inbounds [11 x double], [11 x double]* %3, i64 0, i64 0
%109 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_median_sort to i32 (double*, i32, ...)*)(double* %108, i32 11)
%110 = getelementptr inbounds [11 x double], [11 x double]* %3, i64 0, i64 0
%111 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_median_quickselect to i32 (double*, i32, ...)*)(double* %110, i32 11)
%112 = sub nsw i32 %109, %111
%113 = sitofp i32 %112 to double
%114 = call double @llvm.fabs.f64(double %113)
%115 = fcmp olt double %114, 1.000000e-04
%116 = zext i1 %115 to i32
%117 = icmp eq i32 %116, 0
br i1 %117, label %118, label %119
118: ; preds = %107
store i32 1, i32* %1
br label %433
119: ; preds = %107
%120 = getelementptr inbounds [11 x double], [11 x double]* %3, i64 0, i64 0
%121 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_std to i32 (double*, i32, ...)*)(double* %120, i32 11)
%122 = sitofp i32 %121 to double
store double %122, double* %2
%123 = load double, double* %2
%124 = load double, double* %8
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.5, i64 0, i64 0), double %123, double %124)
%126 = load double, double* %2
%127 = load double, double* %8
%128 = fsub double %126, %127
%129 = call double @llvm.fabs.f64(double %128)
%130 = fcmp olt double %129, 1.000000e-04
%131 = zext i1 %130 to i32
%132 = icmp eq i32 %131, 0
br i1 %132, label %133, label %134
133: ; preds = %119
store i32 1, i32* %1
br label %433
134: ; preds = %119
%135 = getelementptr inbounds [11 x double], [11 x double]* %3, i64 0, i64 0
%136 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_variance to i32 (double*, i32, ...)*)(double* %135, i32 11)
%137 = sitofp i32 %136 to double
store double %137, double* %2
%138 = load double, double* %2
%139 = load double, double* %9
%140 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.6, i64 0, i64 0), double %138, double %139)
%141 = load double, double* %2
%142 = load double, double* %9
%143 = fsub double %141, %142
%144 = call double @llvm.fabs.f64(double %143)
%145 = fcmp olt double %144, 1.000000e-04
%146 = zext i1 %145 to i32
%147 = icmp eq i32 %146, 0
br i1 %147, label %148, label %149
148: ; preds = %134
store i32 1, i32* %1
br label %433
149: ; preds = %134
%150 = getelementptr inbounds [11 x double], [11 x double]* %3, i64 0, i64 0
%151 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_geometric_mean to i32 (double*, i32, ...)*)(double* %150, i32 11)
%152 = sitofp i32 %151 to double
store double %152, double* %2
%153 = load double, double* %2
%154 = load double, double* %10
%155 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.7, i64 0, i64 0), double %153, double %154)
%156 = load double, double* %2
%157 = load double, double* %10
%158 = fsub double %156, %157
%159 = call double @llvm.fabs.f64(double %158)
%160 = fcmp olt double %159, 1.000000e-04
%161 = zext i1 %160 to i32
%162 = icmp eq i32 %161, 0
br i1 %162, label %163, label %164
163: ; preds = %149
store i32 1, i32* %1
br label %433
164: ; preds = %149
%165 = bitcast [5 x double]* %11 to i8*
%166 = bitcast i8* %165 to [5 x double]*
%167 = getelementptr inbounds [5 x double], [5 x double]* %166, i32 0, i32 0
store double 2.000000e+00, double* %167
%168 = getelementptr inbounds [5 x double], [5 x double]* %166, i32 0, i32 1
store double 3.400000e+00, double* %168
%169 = getelementptr inbounds [5 x double], [5 x double]* %166, i32 0, i32 2
store double 5.600000e+00, double* %169
%170 = getelementptr inbounds [5 x double], [5 x double]* %166, i32 0, i32 3
store double 4.500000e+00, double* %170
%171 = getelementptr inbounds [5 x double], [5 x double]* %166, i32 0, i32 4
store double 3.100000e+00, double* %171
%172 = bitcast [5 x double]* %13 to i8*
%173 = bitcast i8* %172 to [5 x double]*
%174 = getelementptr inbounds [5 x double], [5 x double]* %173, i32 0, i32 0
store double 2.000000e-01, double* %174
%175 = getelementptr inbounds [5 x double], [5 x double]* %173, i32 0, i32 1
store double 4.000000e-01, double* %175
%176 = getelementptr inbounds [5 x double], [5 x double]* %173, i32 0, i32 2
store double 6.000000e-01, double* %176
%177 = getelementptr inbounds [5 x double], [5 x double]* %173, i32 0, i32 3
store double 8.000000e-01, double* %177
%178 = getelementptr inbounds [5 x double], [5 x double]* %173, i32 0, i32 4
store double 1.000000e+00, double* %178
%179 = getelementptr inbounds [5 x double], [5 x double]* %11, i64 0, i64 0
%180 = getelementptr inbounds [5 x double], [5 x double]* %12, i64 0, i64 0
%181 = call i32 (double*, double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_tCDF to i32 (double*, double*, i32, ...)*)(double* %179, double* %180, i32 5)
store i64 0, i64* %14
br label %182
182: ; preds = %199, %164
%183 = load i64, i64* %14
%184 = icmp slt i64 %183, 5
br i1 %184, label %185, label %202
185: ; preds = %182
%186 = load i64, i64* %14
%187 = getelementptr inbounds [5 x double], [5 x double]* %12, i64 0, i64 %186
%188 = load double, double* %187
%189 = load i64, i64* %14
%190 = getelementptr inbounds [5 x double], [5 x double]* %13, i64 0, i64 %189
%191 = load double, double* %190
%192 = fsub double %188, %191
%193 = call double @llvm.fabs.f64(double %192)
%194 = fcmp olt double %193, 1.000000e-05
%195 = zext i1 %194 to i32
%196 = icmp eq i32 %195, 0
br i1 %196, label %197, label %198
197: ; preds = %185
store i32 1, i32* %1
br label %433
198: ; preds = %185
br label %199
199: ; preds = %198
%200 = load i64, i64* %14
%201 = add nsw i64 %200, 1
store i64 %201, i64* %14
br label %182
202: ; preds = %182
%203 = bitcast [5 x double]* %15 to i8*
%204 = bitcast i8* %203 to [5 x double]*
%205 = getelementptr inbounds [5 x double], [5 x double]* %204, i32 0, i32 0
store double 2.000000e-01, double* %205
%206 = getelementptr inbounds [5 x double], [5 x double]* %204, i32 0, i32 1
store double 4.000000e-01, double* %206
%207 = getelementptr inbounds [5 x double], [5 x double]* %204, i32 0, i32 2
store double 6.000000e-01, double* %207
%208 = getelementptr inbounds [5 x double], [5 x double]* %204, i32 0, i32 3
store double 8.000000e-01, double* %208
%209 = getelementptr inbounds [5 x double], [5 x double]* %204, i32 0, i32 4
store double 1.000000e+00, double* %209
%210 = bitcast [5 x double]* %18 to i8*
%211 = bitcast i8* %210 to [5 x double]*
%212 = getelementptr inbounds [5 x double], [5 x double]* %211, i32 0, i32 3
store double 7.210500e-02, double* %212
%213 = getelementptr inbounds [5 x double], [5 x double]* %211, i32 0, i32 4
store double 2.721050e-01, double* %213
%214 = bitcast [5 x double]* %19 to i8*
%215 = bitcast i8* %214 to [5 x double]*
%216 = getelementptr inbounds [5 x double], [5 x double]* %215, i32 0, i32 0
store double 9.278950e-01, double* %216
%217 = getelementptr inbounds [5 x double], [5 x double]* %215, i32 0, i32 1
store double 1.000000e+00, double* %217
%218 = getelementptr inbounds [5 x double], [5 x double]* %215, i32 0, i32 2
store double 1.000000e+00, double* %218
%219 = getelementptr inbounds [5 x double], [5 x double]* %215, i32 0, i32 3
store double 1.000000e+00, double* %219
%220 = getelementptr inbounds [5 x double], [5 x double]* %215, i32 0, i32 4
store double 1.000000e+00, double* %220
%221 = getelementptr inbounds [5 x double], [5 x double]* %15, i64 0, i64 0
%222 = getelementptr inbounds [5 x double], [5 x double]* %16, i64 0, i64 0
%223 = getelementptr inbounds [5 x double], [5 x double]* %17, i64 0, i64 0
%224 = call i32 (double*, double*, double*, double, i32, ...) bitcast (i32 (...)* @CSPL_Stats_tCDF_confidence_bands to i32 (double*, double*, double*, double, i32, ...)*)(double* %221, double* %222, double* %223, double 1.000000e-02, i32 5)
store i64 0, i64* %20
br label %225
225: ; preds = %255, %202
%226 = load i64, i64* %20
%227 = icmp slt i64 %226, 5
br i1 %227, label %228, label %258
228: ; preds = %225
%229 = load i64, i64* %20
%230 = getelementptr inbounds [5 x double], [5 x double]* %16, i64 0, i64 %229
%231 = load double, double* %230
%232 = load i64, i64* %20
%233 = getelementptr inbounds [5 x double], [5 x double]* %18, i64 0, i64 %232
%234 = load double, double* %233
%235 = fsub double %231, %234
%236 = call double @llvm.fabs.f64(double %235)
%237 = fcmp olt double %236, 1.000000e-05
%238 = zext i1 %237 to i32
%239 = icmp eq i32 %238, 0
br i1 %239, label %240, label %241
240: ; preds = %228
store i32 1, i32* %1
br label %433
241: ; preds = %228
%242 = load i64, i64* %20
%243 = getelementptr inbounds [5 x double], [5 x double]* %17, i64 0, i64 %242
%244 = load double, double* %243
%245 = load i64, i64* %20
%246 = getelementptr inbounds [5 x double], [5 x double]* %19, i64 0, i64 %245
%247 = load double, double* %246
%248 = fsub double %244, %247
%249 = call double @llvm.fabs.f64(double %248)
%250 = fcmp olt double %249, 1.000000e-05
%251 = zext i1 %250 to i32
%252 = icmp eq i32 %251, 0
br i1 %252, label %253, label %254
253: ; preds = %241
store i32 1, i32* %1
br label %433
254: ; preds = %241
br label %255
255: ; preds = %254
%256 = load i64, i64* %20
%257 = add nsw i64 %256, 1
store i64 %257, i64* %20
br label %225
258: ; preds = %225
%259 = bitcast [5 x double]* %21 to i8*
%260 = bitcast i8* %259 to [5 x double]*
%261 = getelementptr inbounds [5 x double], [5 x double]* %260, i32 0, i32 0
store double 2.000000e-01, double* %261
%262 = getelementptr inbounds [5 x double], [5 x double]* %260, i32 0, i32 1
store double 4.000000e-01, double* %262
%263 = getelementptr inbounds [5 x double], [5 x double]* %260, i32 0, i32 2
store double 6.000000e-01, double* %263
%264 = getelementptr inbounds [5 x double], [5 x double]* %260, i32 0, i32 3
store double 8.000000e-01, double* %264
%265 = getelementptr inbounds [5 x double], [5 x double]* %260, i32 0, i32 4
store double 1.000000e+00, double* %265
%266 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%267 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %266, i32 20, i32 5)
%268 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %267)
%269 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%270 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %269, i32 20, i32 5)
%271 = sitofp i32 %270 to double
%272 = fsub double %271, 3.000000e-01
%273 = call double @llvm.fabs.f64(double %272)
%274 = fcmp olt double %273, 1.000000e-05
%275 = zext i1 %274 to i32
%276 = icmp eq i32 %275, 0
br i1 %276, label %277, label %278
277: ; preds = %258
store i32 1, i32* %1
br label %433
278: ; preds = %258
%279 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%280 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %279, i32 25, i32 5)
%281 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %280)
%282 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%283 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %282, i32 25, i32 5)
%284 = sitofp i32 %283 to double
%285 = fsub double %284, 3.500000e-01
%286 = call double @llvm.fabs.f64(double %285)
%287 = fcmp olt double %286, 1.000000e-05
%288 = zext i1 %287 to i32
%289 = icmp eq i32 %288, 0
br i1 %289, label %290, label %291
290: ; preds = %278
store i32 1, i32* %1
br label %433
291: ; preds = %278
%292 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%293 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %292, i32 40, i32 5)
%294 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %293)
%295 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%296 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %295, i32 40, i32 5)
%297 = sitofp i32 %296 to double
%298 = fsub double %297, 5.000000e-01
%299 = call double @llvm.fabs.f64(double %298)
%300 = fcmp olt double %299, 1.000000e-05
%301 = zext i1 %300 to i32
%302 = icmp eq i32 %301, 0
br i1 %302, label %303, label %304
303: ; preds = %291
store i32 1, i32* %1
br label %433
304: ; preds = %291
%305 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%306 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %305, i32 50, i32 5)
%307 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %306)
%308 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%309 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %308, i32 50, i32 5)
%310 = sitofp i32 %309 to double
%311 = fsub double %310, 6.000000e-01
%312 = call double @llvm.fabs.f64(double %311)
%313 = fcmp olt double %312, 1.000000e-05
%314 = zext i1 %313 to i32
%315 = icmp eq i32 %314, 0
br i1 %315, label %316, label %317
316: ; preds = %304
store i32 1, i32* %1
br label %433
317: ; preds = %304
%318 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%319 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %318, i32 60, i32 5)
%320 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %319)
%321 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%322 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %321, i32 60, i32 5)
%323 = sitofp i32 %322 to double
%324 = fsub double %323, 0x3FE6666666666666
%325 = call double @llvm.fabs.f64(double %324)
%326 = fcmp olt double %325, 1.000000e-05
%327 = zext i1 %326 to i32
%328 = icmp eq i32 %327, 0
br i1 %328, label %329, label %330
329: ; preds = %317
store i32 1, i32* %1
br label %433
330: ; preds = %317
%331 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%332 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %331, i32 82, i32 5)
%333 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %332)
%334 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%335 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %334, i32 82, i32 5)
%336 = sitofp i32 %335 to double
%337 = fsub double %336, 9.200000e-01
%338 = call double @llvm.fabs.f64(double %337)
%339 = fcmp olt double %338, 1.000000e-05
%340 = zext i1 %339 to i32
%341 = icmp eq i32 %340, 0
br i1 %341, label %342, label %343
342: ; preds = %330
store i32 1, i32* %1
br label %433
343: ; preds = %330
%344 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%345 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %344, i32 50, i32 5)
%346 = getelementptr inbounds [5 x double], [5 x double]* %21, i64 0, i64 0
%347 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_median_sort to i32 (double*, i32, ...)*)(double* %346, i32 5)
%348 = sub nsw i32 %345, %347
%349 = sitofp i32 %348 to double
%350 = call double @llvm.fabs.f64(double %349)
%351 = fcmp olt double %350, 1.000000e-05
%352 = zext i1 %351 to i32
%353 = icmp eq i32 %352, 0
br i1 %353, label %354, label %355
354: ; preds = %343
store i32 1, i32* %1
br label %433
355: ; preds = %343
store i64 11, i64* %22
%356 = bitcast [11 x double]* %24 to i8*
store i64 0, i64* %23
br label %357
357: ; preds = %382, %355
%358 = load i64, i64* %23
%359 = load i64, i64* %22
%360 = icmp slt i64 %358, %359
br i1 %360, label %361, label %385
361: ; preds = %357
%362 = load i64, i64* %23
%363 = load i64, i64* %22
%364 = load i64, i64* %23
%365 = load i64, i64* %22
%366 = call i32 (i64, i64, ...) bitcast (i32 (...)* @CSPL_Stats_percent_rank to i32 (i64, i64, ...)*)(i64 %364, i64 %365)
%367 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.9, i64 0, i64 0), i64 %362, i64 %363, i32 %366)
%368 = load i64, i64* %23
%369 = load i64, i64* %22
%370 = call i32 (i64, i64, ...) bitcast (i32 (...)* @CSPL_Stats_percent_rank to i32 (i64, i64, ...)*)(i64 %368, i64 %369)
%371 = sitofp i32 %370 to double
%372 = load i64, i64* %23
%373 = getelementptr inbounds [11 x double], [11 x double]* %24, i64 0, i64 %372
%374 = load double, double* %373
%375 = fsub double %371, %374
%376 = call double @llvm.fabs.f64(double %375)
%377 = fcmp olt double %376, 1.000000e-05
%378 = zext i1 %377 to i32
%379 = icmp eq i32 %378, 0
br i1 %379, label %380, label %381
380: ; preds = %361
store i32 1, i32* %1
br label %433
381: ; preds = %361
br label %382
382: ; preds = %381
%383 = load i64, i64* %23
%384 = add nsw i64 %383, 1
store i64 %384, i64* %23
br label %357
385: ; preds = %357
%386 = bitcast [30 x i64]* %25 to i8*
%387 = bitcast [10 x i64]* %26 to i8*
%388 = bitcast [3 x i64]* %27 to i8*
store i64 0, i64* %31
store i64 0, i64* %28
br label %389
389: ; preds = %429, %385
%390 = load i64, i64* %28
%391 = icmp ult i64 %390, 10
br i1 %391, label %392, label %432
392: ; preds = %389
store i64 0, i64* %29
br label %393
393: ; preds = %425, %392
%394 = load i64, i64* %29
%395 = icmp ult i64 %394, 3
br i1 %395, label %396, label %428
396: ; preds = %393
%397 = load i64, i64* %28
%398 = getelementptr inbounds [10 x i64], [10 x i64]* %26, i64 0, i64 %397
%399 = load i64, i64* %398
%400 = load i64, i64* %29
%401 = getelementptr inbounds [3 x i64], [3 x i64]* %27, i64 0, i64 %400
%402 = load i64, i64* %401
%403 = call i32 (i64, i64, ...) bitcast (i32 (...)* @CSPL_Stats_combination to i32 (i64, i64, ...)*)(i64 %399, i64 %402)
%404 = sext i32 %403 to i64
store i64 %404, i64* %30
%405 = load i64, i64* %28
%406 = getelementptr inbounds [10 x i64], [10 x i64]* %26, i64 0, i64 %405
%407 = load i64, i64* %406
%408 = load i64, i64* %29
%409 = getelementptr inbounds [3 x i64], [3 x i64]* %27, i64 0, i64 %408
%410 = load i64, i64* %409
%411 = load i64, i64* %30
%412 = load i64, i64* %31
%413 = getelementptr inbounds [30 x i64], [30 x i64]* %25, i64 0, i64 %412
%414 = load i64, i64* %413
%415 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.10, i64 0, i64 0), i64 %407, i64 %410, i64 %411, i64 %414)
%416 = load i64, i64* %30
%417 = load i64, i64* %31
%418 = getelementptr inbounds [30 x i64], [30 x i64]* %25, i64 0, i64 %417
%419 = load i64, i64* %418
%420 = icmp ne i64 %416, %419
br i1 %420, label %421, label %422
421: ; preds = %396
store i32 1, i32* %1
br label %433
422: ; preds = %396
%423 = load i64, i64* %31
%424 = add i64 %423, 1
store i64 %424, i64* %31
br label %425
425: ; preds = %422
%426 = load i64, i64* %29
%427 = add i64 %426, 1
store i64 %427, i64* %29
br label %393
428: ; preds = %393
br label %429
429: ; preds = %428
%430 = load i64, i64* %28
%431 = add i64 %430, 1
store i64 %431, i64* %28
br label %389
432: ; preds = %389
store i32 0, i32* %1
br label %433
433: ; preds = %432, %421, %380, %354, %342, %329, %316, %303, %290, %277, %253, %240, %197, %163, %148, %133, %118, %106, %91, %76, %61, %46
%434 = load i32, i32* %1
ret i32 %434
}

LLVM IR (-O2):
@__const.main.data1 = [11 x double] [double 1.500000e+01, double 2.000000e+01, double 3.500000e+01, double 4.000000e+01, double 5.000000e+01, double 3.400000e+01, double 3.200000e+01, double 4.300000e+01, double 2.000000e+01, double 1.000000e+00, double 6.000000e+01]
@.str = [26 x i8] c"CSPL_Stats_skew=%lf, %lf\0A\00"
@.str.1 = [30 x i8] c"CSPL_Stats_kurtosis=%lf, %lf\0A\00"
@.str.2 = [26 x i8] c"CSPL_Stats_mean=%lf, %lf\0A\00"
@.str.3 = [33 x i8] c"CSPL_Stats_median_sort=%lf, %lf\0A\00"
@.str.4 = [40 x i8] c"CSPL_Stats_median_quickselect=%lf, %lf\0A\00"
@.str.5 = [25 x i8] c"CSPL_Stats_std=%lf, %lf\0A\00"
@.str.6 = [30 x i8] c"CSPL_Stats_variance=%lf, %lf\0A\00"
@.str.7 = [36 x i8] c"CSPL_Stats_geometric_mean=%lf, %lf\0A\00"
@.str.8 = [27 x i8] c"CSPL_Stats_percentile %lf\0A\00"
@__const.main.answer = [11 x double] [double 0x40122E8BC169C23B, double 0x402B45D18090B418, double 0x4036BA2E90364389, double 0x403FD17460242D06, double 0x4044745D18090B41, double 5.000000e+01, double 0x404D8BA2E7F6F4BF, double 0x40510BA2E7F6F4BF, double 0x405351745BF26F1E, double 0x40559745CFEDE97D, double 0x4057DD1743E963DC]
@.str.9 = [39 x i8] c"CSPL_Stats_percent_rank %ld, %ld, %lf\0A\00"
@__const.main.ans = [30 x i64] [i64 1, i64 0, i64 0, i64 3, i64 1, i64 0, i64 6, i64 4, i64 1, i64 10, i64 10, i64 5, i64 15, i64 20, i64 15, i64 21, i64 35, i64 35, i64 28, i64 56, i64 70, i64 36, i64 84, i64 126, i64 45, i64 120, i64 210, i64 0, i64 0, i64 0]
@__const.main.N = [10 x i64] [i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 9, i64 10, i64 0]
@.str.10 = [45 x i8] c"CSPL_Stats_combination(%ld, %ld)=%ld -> %ld\0A\00"
define i32 @main() {
%1 = alloca [11 x double]
%2 = alloca [5 x double]
%3 = alloca [5 x double]
%4 = alloca [5 x double]
%5 = alloca [5 x double]
%6 = alloca [5 x double]
%7 = alloca [5 x double]
%8 = bitcast [11 x double]* %1 to i8*
%9 = getelementptr inbounds [11 x double], [11 x double]* %1, i64 0, i64 0
%10 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_skew to i32 (double*, i32, ...)*)(double* %9, i32 11)
%11 = sitofp i32 %10 to double
%12 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), double %11, double -1.317000e-01)
%13 = fadd double %11, 1.317000e-01
%14 = call double @llvm.fabs.f64(double %13)
%15 = fcmp uge double %14, 1.000000e-04
br i1 %15, label %285, label %16
16: ; preds = %0
%17 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_kurtosis to i32 (double*, i32, ...)*)(double* %9, i32 11)
%18 = sitofp i32 %17 to double
%19 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.1, i64 0, i64 0), double %18, double -5.767560e-01)
%20 = fadd double %18, 5.767560e-01
%21 = call double @llvm.fabs.f64(double %20)
%22 = fcmp uge double %21, 1.000000e-04
br i1 %22, label %285, label %23
23: ; preds = %16
%24 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_mean to i32 (double*, i32, ...)*)(double* %9, i32 11)
%25 = sitofp i32 %24 to double
%26 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0), double %25, double 0x403FD17460242D06)
%27 = fadd double %25, 0xC03FD17460242D06
%28 = call double @llvm.fabs.f64(double %27)
%29 = fcmp uge double %28, 1.000000e-04
br i1 %29, label %285, label %30
30: ; preds = %23
%31 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_median_sort to i32 (double*, i32, ...)*)(double* %9, i32 11)
%32 = sitofp i32 %31 to double
%33 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.3, i64 0, i64 0), double %32, double 3.400000e+01)
%34 = fadd double %32, -3.400000e+01
%35 = call double @llvm.fabs.f64(double %34)
%36 = fcmp uge double %35, 1.000000e-04
br i1 %36, label %285, label %37
37: ; preds = %30
%38 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_median_quickselect to i32 (double*, i32, ...)*)(double* %9, i32 11)
%39 = sitofp i32 %38 to double
%40 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.4, i64 0, i64 0), double %39, double 3.400000e+01)
%41 = fadd double %39, -3.400000e+01
%42 = call double @llvm.fabs.f64(double %41)
%43 = fcmp uge double %42, 1.000000e-04
br i1 %43, label %285, label %44
44: ; preds = %37
%45 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_median_sort to i32 (double*, i32, ...)*)(double* %9, i32 11)
%46 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_median_quickselect to i32 (double*, i32, ...)*)(double* %9, i32 11)
%47 = sub nsw i32 %45, %46
%48 = sitofp i32 %47 to double
%49 = call double @llvm.fabs.f64(double %48)
%50 = fcmp uge double %49, 1.000000e-04
br i1 %50, label %285, label %51
51: ; preds = %44
%52 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_std to i32 (double*, i32, ...)*)(double* %9, i32 11)
%53 = sitofp i32 %52 to double
%54 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.5, i64 0, i64 0), double %53, double 0x4030140CD855970B)
%55 = fadd double %53, 0xC030140CD855970B
%56 = call double @llvm.fabs.f64(double %55)
%57 = fcmp uge double %56, 1.000000e-04
br i1 %57, label %285, label %58
58: ; preds = %51
%59 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_variance to i32 (double*, i32, ...)*)(double* %9, i32 11)
%60 = sitofp i32 %59 to double
%61 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.6, i64 0, i64 0), double %60, double 0x40702832C7325919)
%62 = fadd double %60, 0xC0702832C7325919
%63 = call double @llvm.fabs.f64(double %62)
%64 = fcmp uge double %63, 1.000000e-04
br i1 %64, label %285, label %65
65: ; preds = %58
%66 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_geometric_mean to i32 (double*, i32, ...)*)(double* %9, i32 11)
%67 = sitofp i32 %66 to double
%68 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @.str.7, i64 0, i64 0), double %67, double 0x4037731B9B66F933)
%69 = fadd double %67, 0xC037731B9B66F933
%70 = call double @llvm.fabs.f64(double %69)
%71 = fcmp uge double %70, 1.000000e-04
br i1 %71, label %285, label %72
72: ; preds = %65
%73 = bitcast [5 x double]* %2 to i8*
%74 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 0
%75 = bitcast [5 x double]* %2 to <2 x double>*
store <2 x double> <double 2.000000e+00, double 3.400000e+00>, <2 x double>* %75
%76 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 2
%77 = bitcast double* %76 to <2 x double>*
store <2 x double> <double 5.600000e+00, double 4.500000e+00>, <2 x double>* %77
%78 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 4
store double 3.100000e+00, double* %78
%79 = bitcast [5 x double]* %3 to i8*
%80 = getelementptr inbounds [5 x double], [5 x double]* %3, i64 0, i64 0
%81 = call i32 (double*, double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_tCDF to i32 (double*, double*, i32, ...)*)(double* %74, double* %80, i32 5)
%82 = load double, double* %80
%83 = fadd double %82, -2.000000e-01
%84 = call double @llvm.fabs.f64(double %83)
%85 = fcmp uge double %84, 1.000000e-05
br i1 %85, label %125, label %86
86: ; preds = %72
%87 = getelementptr inbounds [5 x double], [5 x double]* %3, i64 0, i64 1
%88 = load double, double* %87
%89 = fadd double %88, -4.000000e-01
%90 = call double @llvm.fabs.f64(double %89)
%91 = fcmp uge double %90, 1.000000e-05
br i1 %91, label %125, label %92
92: ; preds = %86
%93 = getelementptr inbounds [5 x double], [5 x double]* %3, i64 0, i64 2
%94 = load double, double* %93
%95 = fadd double %94, -6.000000e-01
%96 = call double @llvm.fabs.f64(double %95)
%97 = fcmp uge double %96, 1.000000e-05
br i1 %97, label %125, label %98
98: ; preds = %92
%99 = getelementptr inbounds [5 x double], [5 x double]* %3, i64 0, i64 3
%100 = load double, double* %99
%101 = fadd double %100, -8.000000e-01
%102 = call double @llvm.fabs.f64(double %101)
%103 = fcmp uge double %102, 1.000000e-05
br i1 %103, label %125, label %104
104: ; preds = %98
%105 = getelementptr inbounds [5 x double], [5 x double]* %3, i64 0, i64 4
%106 = load double, double* %105
%107 = fadd double %106, -1.000000e+00
%108 = call double @llvm.fabs.f64(double %107)
%109 = fcmp uge double %108, 1.000000e-05
br i1 %109, label %125, label %110
110: ; preds = %104
%111 = bitcast [5 x double]* %4 to i8*
%112 = getelementptr inbounds [5 x double], [5 x double]* %4, i64 0, i64 0
%113 = bitcast [5 x double]* %4 to <2 x double>*
store <2 x double> <double 2.000000e-01, double 4.000000e-01>, <2 x double>* %113
%114 = getelementptr inbounds [5 x double], [5 x double]* %4, i64 0, i64 2
%115 = bitcast double* %114 to <2 x double>*
store <2 x double> <double 6.000000e-01, double 8.000000e-01>, <2 x double>* %115
%116 = getelementptr inbounds [5 x double], [5 x double]* %4, i64 0, i64 4
store double 1.000000e+00, double* %116
%117 = bitcast [5 x double]* %5 to i8*
%118 = bitcast [5 x double]* %6 to i8*
%119 = getelementptr inbounds [5 x double], [5 x double]* %5, i64 0, i64 0
%120 = getelementptr inbounds [5 x double], [5 x double]* %6, i64 0, i64 0
%121 = call i32 (double*, double*, double*, double, i32, ...) bitcast (i32 (...)* @CSPL_Stats_tCDF_confidence_bands to i32 (double*, double*, double*, double, i32, ...)*)(double* %112, double* %119, double* %120, double 1.000000e-02, i32 5)
%122 = load double, double* %119
%123 = call double @llvm.fabs.f64(double %122)
%124 = fcmp uge double %123, 1.000000e-05
br i1 %124, label %191, label %186
125: ; preds = %104, %98, %92, %86, %72
br label %285
126: ; preds = %186
%127 = getelementptr inbounds [5 x double], [5 x double]* %5, i64 0, i64 1
%128 = load double, double* %127
%129 = call double @llvm.fabs.f64(double %128)
%130 = fcmp uge double %129, 1.000000e-05
br i1 %130, label %191, label %131
131: ; preds = %126
%132 = getelementptr inbounds [5 x double], [5 x double]* %6, i64 0, i64 1
%133 = load double, double* %132
%134 = fadd double %133, -1.000000e+00
%135 = call double @llvm.fabs.f64(double %134)
%136 = fcmp uge double %135, 1.000000e-05
br i1 %136, label %191, label %137
137: ; preds = %131
%138 = getelementptr inbounds [5 x double], [5 x double]* %5, i64 0, i64 2
%139 = load double, double* %138
%140 = call double @llvm.fabs.f64(double %139)
%141 = fcmp uge double %140, 1.000000e-05
br i1 %141, label %191, label %142
142: ; preds = %137
%143 = getelementptr inbounds [5 x double], [5 x double]* %6, i64 0, i64 2
%144 = load double, double* %143
%145 = fadd double %144, -1.000000e+00
%146 = call double @llvm.fabs.f64(double %145)
%147 = fcmp uge double %146, 1.000000e-05
br i1 %147, label %191, label %148
148: ; preds = %142
%149 = getelementptr inbounds [5 x double], [5 x double]* %5, i64 0, i64 3
%150 = load double, double* %149
%151 = fadd double %150, -7.210500e-02
%152 = call double @llvm.fabs.f64(double %151)
%153 = fcmp uge double %152, 1.000000e-05
br i1 %153, label %191, label %154
154: ; preds = %148
%155 = getelementptr inbounds [5 x double], [5 x double]* %6, i64 0, i64 3
%156 = load double, double* %155
%157 = fadd double %156, -1.000000e+00
%158 = call double @llvm.fabs.f64(double %157)
%159 = fcmp uge double %158, 1.000000e-05
br i1 %159, label %191, label %160
160: ; preds = %154
%161 = getelementptr inbounds [5 x double], [5 x double]* %5, i64 0, i64 4
%162 = load double, double* %161
%163 = fadd double %162, -2.721050e-01
%164 = call double @llvm.fabs.f64(double %163)
%165 = fcmp uge double %164, 1.000000e-05
br i1 %165, label %191, label %166
166: ; preds = %160
%167 = getelementptr inbounds [5 x double], [5 x double]* %6, i64 0, i64 4
%168 = load double, double* %167
%169 = fadd double %168, -1.000000e+00
%170 = call double @llvm.fabs.f64(double %169)
%171 = fcmp uge double %170, 1.000000e-05
br i1 %171, label %191, label %172
172: ; preds = %166
%173 = bitcast [5 x double]* %7 to i8*
%174 = getelementptr inbounds [5 x double], [5 x double]* %7, i64 0, i64 0
%175 = bitcast [5 x double]* %7 to <2 x double>*
store <2 x double> <double 2.000000e-01, double 4.000000e-01>, <2 x double>* %175
%176 = getelementptr inbounds [5 x double], [5 x double]* %7, i64 0, i64 2
%177 = bitcast double* %176 to <2 x double>*
store <2 x double> <double 6.000000e-01, double 8.000000e-01>, <2 x double>* %177
%178 = getelementptr inbounds [5 x double], [5 x double]* %7, i64 0, i64 4
store double 1.000000e+00, double* %178
%179 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 20, i32 5)
%180 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %179)
%181 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 20, i32 5)
%182 = sitofp i32 %181 to double
%183 = fadd double %182, -3.000000e-01
%184 = call double @llvm.fabs.f64(double %183)
%185 = fcmp uge double %184, 1.000000e-05
br i1 %185, label %232, label %192
186: ; preds = %110
%187 = load double, double* %120
%188 = fadd double %187, -9.278950e-01
%189 = call double @llvm.fabs.f64(double %188)
%190 = fcmp uge double %189, 1.000000e-05
br i1 %190, label %191, label %126
191: ; preds = %166, %160, %154, %148, %142, %137, %131, %126, %110, %186
br label %285
192: ; preds = %172
%193 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 25, i32 5)
%194 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %193)
%195 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 25, i32 5)
%196 = sitofp i32 %195 to double
%197 = fadd double %196, -3.500000e-01
%198 = call double @llvm.fabs.f64(double %197)
%199 = fcmp uge double %198, 1.000000e-05
br i1 %199, label %232, label %200
200: ; preds = %192
%201 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 40, i32 5)
%202 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %201)
%203 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 40, i32 5)
%204 = sitofp i32 %203 to double
%205 = fadd double %204, -5.000000e-01
%206 = call double @llvm.fabs.f64(double %205)
%207 = fcmp uge double %206, 1.000000e-05
br i1 %207, label %232, label %208
208: ; preds = %200
%209 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 50, i32 5)
%210 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %209)
%211 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 50, i32 5)
%212 = sitofp i32 %211 to double
%213 = fadd double %212, -6.000000e-01
%214 = call double @llvm.fabs.f64(double %213)
%215 = fcmp uge double %214, 1.000000e-05
br i1 %215, label %232, label %216
216: ; preds = %208
%217 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 60, i32 5)
%218 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %217)
%219 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 60, i32 5)
%220 = sitofp i32 %219 to double
%221 = fadd double %220, 0xBFE6666666666666
%222 = call double @llvm.fabs.f64(double %221)
%223 = fcmp uge double %222, 1.000000e-05
br i1 %223, label %232, label %224
224: ; preds = %216
%225 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 82, i32 5)
%226 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0), i32 %225)
%227 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 82, i32 5)
%228 = sitofp i32 %227 to double
%229 = fadd double %228, -9.200000e-01
%230 = call double @llvm.fabs.f64(double %229)
%231 = fcmp uge double %230, 1.000000e-05
br i1 %231, label %232, label %233
232: ; preds = %172, %192, %200, %208, %216, %224
br label %285
233: ; preds = %224
%234 = call i32 (double*, i32, i32, ...) bitcast (i32 (...)* @CSPL_Stats_percentile to i32 (double*, i32, i32, ...)*)(double* %174, i32 50, i32 5)
%235 = call i32 (double*, i32, ...) bitcast (i32 (...)* @CSPL_Stats_median_sort to i32 (double*, i32, ...)*)(double* %174, i32 5)
%236 = sub nsw i32 %234, %235
%237 = sitofp i32 %236 to double
%238 = call double @llvm.fabs.f64(double %237)
%239 = fcmp uge double %238, 1.000000e-05
br i1 %239, label %285, label %243
240: ; preds = %243
%241 = add nuw nsw i64 %244, 1
%242 = icmp eq i64 %241, 11
br i1 %242, label %254, label %243
243: ; preds = %233, %240
%244 = phi i64 [ %241, %240 ], [ 0, %233 ]
%245 = call i32 (i64, i64, ...) bitcast (i32 (...)* @CSPL_Stats_percent_rank to i32 (i64, i64, ...)*)(i64 %244, i64 11)
%246 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.9, i64 0, i64 0), i64 %244, i64 11, i32 %245)
%247 = call i32 (i64, i64, ...) bitcast (i32 (...)* @CSPL_Stats_percent_rank to i32 (i64, i64, ...)*)(i64 %244, i64 11)
%248 = sitofp i32 %247 to double
%249 = getelementptr inbounds [11 x double], [11 x double]* @__const.main.answer, i64 0, i64 %244
%250 = load double, double* %249
%251 = fsub double %248, %250
%252 = call double @llvm.fabs.f64(double %251)
%253 = fcmp uge double %252, 1.000000e-05
br i1 %253, label %285, label %240
254: ; preds = %240, %281
%255 = phi i64 [ %282, %281 ], [ 0, %240 ]
%256 = phi i64 [ %283, %281 ], [ 0, %240 ]
%257 = getelementptr inbounds [10 x i64], [10 x i64]* @__const.main.N, i64 0, i64 %256
%258 = load i64, i64* %257
%259 = call i32 (i64, i64, ...) bitcast (i32 (...)* @CSPL_Stats_combination to i32 (i64, i64, ...)*)(i64 %258, i64 2)
%260 = sext i32 %259 to i64
%261 = getelementptr inbounds [30 x i64], [30 x i64]* @__const.main.ans, i64 0, i64 %255
%262 = load i64, i64* %261
%263 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.10, i64 0, i64 0), i64 %258, i64 2, i64 %260, i64 %262)
%264 = icmp eq i64 %262, %260
br i1 %264, label %265, label %285
265: ; preds = %254
%266 = add nuw nsw i64 %255, 1
%267 = call i32 (i64, i64, ...) bitcast (i32 (...)* @CSPL_Stats_combination to i32 (i64, i64, ...)*)(i64 %258, i64 3)
%268 = sext i32 %267 to i64
%269 = getelementptr inbounds [30 x i64], [30 x i64]* @__const.main.ans, i64 0, i64 %266
%270 = load i64, i64* %269
%271 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.10, i64 0, i64 0), i64 %258, i64 3, i64 %268, i64 %270)
%272 = icmp eq i64 %270, %268
br i1 %272, label %273, label %285
273: ; preds = %265
%274 = add nuw nsw i64 %255, 2
%275 = call i32 (i64, i64, ...) bitcast (i32 (...)* @CSPL_Stats_combination to i32 (i64, i64, ...)*)(i64 %258, i64 4)
%276 = sext i32 %275 to i64
%277 = getelementptr inbounds [30 x i64], [30 x i64]* @__const.main.ans, i64 0, i64 %274
%278 = load i64, i64* %277
%279 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.10, i64 0, i64 0), i64 %258, i64 4, i64 %276, i64 %278)
%280 = icmp eq i64 %278, %276
br i1 %280, label %281, label %285
281: ; preds = %273
%282 = add nuw nsw i64 %255, 3
%283 = add nuw nsw i64 %256, 1
%284 = icmp eq i64 %283, 10
br i1 %284, label %285, label %254
285: ; preds = %243, %281, %254, %265, %273, %232, %191, %125, %65, %58, %51, %44, %37, %30, %23, %16, %0, %233
%286 = phi i32 [ 1, %233 ], [ 1, %0 ], [ 1, %16 ], [ 1, %23 ], [ 1, %30 ], [ 1, %37 ], [ 1, %44 ], [ 1, %51 ], [ 1, %58 ], [ 1, %65 ], [ 1, %125 ], [ 1, %191 ], [ 1, %232 ], [ 0, %281 ], [ 1, %254 ], [ 1, %265 ], [ 1, %273 ], [ 1, %243 ]
ret i32 %286
}