#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double correlationTTest(double, int);
double rSignifcanceTest(double r, int N, int tail) {
  double prob = 1.0, t;
  int i, j, df;
  double tDist[36][4] = {
      {31.82, 63.66, 318.31, 636.62}, {6.965, 9.925, 22.327, 31.599},
      {4.541, 5.841, 10.215, 12.924}, {3.747, 4.604, 7.173, 8.610},
      {3.365, 4.032, 5.893, 6.869},   {3.143, 3.707, 5.208, 5.959},
      {2.998, 3.499, 4.785, 5.408},   {2.896, 3.355, 4.501, 5.041},
      {2.821, 3.250, 4.297, 4.781},   {2.764, 3.169, 4.144, 4.587},
      {2.718, 3.106, 4.025, 4.437},   {2.681, 3.055, 3.930, 4.318},
      {2.650, 3.012, 3.852, 4.221},   {2.624, 2.977, 3.787, 4.140},
      {2.602, 2.947, 3.733, 4.073},   {2.583, 2.921, 3.686, 4.015},
      {2.567, 2.898, 3.646, 3.965},   {2.552, 2.878, 3.610, 3.922},
      {2.539, 2.861, 3.579, 3.883},   {2.528, 2.845, 3.552, 3.850},
      {2.518, 2.831, 3.527, 3.819},   {2.508, 2.819, 3.505, 3.792},
      {2.500, 2.807, 3.485, 3.768},   {2.492, 2.797, 3.467, 3.745},
      {2.485, 2.787, 3.450, 3.725},   {2.479, 2.779, 3.435, 3.707},
      {2.473, 2.771, 3.421, 3.690},   {2.467, 2.763, 3.408, 3.674},
      {2.462, 2.756, 3.396, 3.659},   {2.457, 2.750, 3.385, 3.646},
      {2.423, 2.704, 3.307, 3.551},   {2.390, 2.660, 3.232, 3.460},
      {2.374, 2.639, 3.195, 3.416},   {2.364, 2.626, 3.174, 3.390},
      {2.330, 2.581, 3.098, 3.300},   {2.326, 2.576, 3.090, 3.291}};
  int dfTable[] = {1,  2,  3,  4,  5,  6,  7,  8,  9,  10,  11,   12,
                   13, 14, 15, 16, 17, 18, 19, 20, 21, 22,  23,   24,
                   25, 26, 27, 28, 29, 30, 40, 60, 80, 100, 1000, 1e6};
  double p[] = {0.01, 0.005, 0.001, 0.0005};
  df = N - 2;
  t = correlationTTest(r, N);
  for (j = 1; j < 36; j++) {
    if ((df >= dfTable[j - 1]) && (df < dfTable[j])) {
      for (i = 0; i < 4 - 1; i++) {
        if (t >= tDist[j - 1][i] && t < tDist[j - 1][i + 1])
          prob = p[i];
      }
      if (t >= tDist[j - 1][4 - 1])
        prob = p[4 - 1];
    }
  }
  if (df >= dfTable[36 - 1]) {
    for (i = 0; i < 4 - 1; i++) {
      if (t >= tDist[36 - 1][i] && t < tDist[36 - 1][i + 1])
        prob = p[i];
    }
    if (t >= tDist[36 - 1][4 - 1])
      prob = p[4 - 1];
  }
  if (tail == 2)
    prob *= 2.0;
  return prob;
}


x86 assembly (clang, -O0):
<rSignifcanceTest>:
push   %rbp
mov    %rsp,%rbp
sub    $0x560,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %edi,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
movsd  0xec2(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
lea    -0x4b0(%rbp),%rdi
lea    0xebf(%rip),%rsi
mov    $0x480,%edx
call   1040 <memcpy@plt>
lea    -0x540(%rbp),%rdi
lea    0x1327(%rip),%rsi
mov    $0x90,%edx
call   1040 <memcpy@plt>
mov    0x13a6(%rip),%rax
mov    %rax,-0x560(%rbp)
mov    0x13a0(%rip),%rax
mov    %rax,-0x558(%rbp)
mov    0x139a(%rip),%rax
mov    %rax,-0x550(%rbp)
mov    0x1394(%rip),%rax
mov    %rax,-0x548(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x2c(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    -0xc(%rbp),%edi
call   1030 <correlationTTest@plt>
movsd  %xmm0,-0x20(%rbp)
movl   $0x1,-0x28(%rbp)
cmpl   $0x24,-0x28(%rbp)
jge    12e5 <rSignifcanceTest+0x1c5>
mov    -0x2c(%rbp),%eax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
cmp    -0x540(%rbp,%rcx,4),%eax
jl     12d2 <rSignifcanceTest+0x1b2>
mov    -0x2c(%rbp),%eax
movslq -0x28(%rbp),%rcx
cmp    -0x540(%rbp,%rcx,4),%eax
jge    12d2 <rSignifcanceTest+0x1b2>
movl   $0x0,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jge    1299 <rSignifcanceTest+0x179>
movsd  -0x20(%rbp),%xmm0
mov    -0x28(%rbp),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    -0x4b0(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x24(%rbp),%rcx
ucomisd (%rax,%rcx,8),%xmm0
jb     1286 <rSignifcanceTest+0x166>
movsd  -0x20(%rbp),%xmm1
mov    -0x28(%rbp),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    -0x4b0(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    1286 <rSignifcanceTest+0x166>
movslq -0x24(%rbp),%rax
movsd  -0x560(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x18(%rbp)
jmp    128b <rSignifcanceTest+0x16b>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    120b <rSignifcanceTest+0xeb>
movsd  -0x20(%rbp),%xmm0
mov    -0x28(%rbp),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    -0x4b0(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
ucomisd 0x18(%rax),%xmm0
jb     12cd <rSignifcanceTest+0x1ad>
movsd  -0x548(%rbp),%xmm0
ff
movsd  %xmm0,-0x18(%rbp)
jmp    12d2 <rSignifcanceTest+0x1b2>
jmp    12d7 <rSignifcanceTest+0x1b7>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    11cd <rSignifcanceTest+0xad>
mov    -0x2c(%rbp),%eax
cmp    -0x4b4(%rbp),%eax
jl     137e <rSignifcanceTest+0x25e>
movl   $0x0,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jge    135c <rSignifcanceTest+0x23c>
movsd  -0x20(%rbp),%xmm0
movslq -0x24(%rbp),%rax
ucomisd -0x50(%rbp,%rax,8),%xmm0
jb     1349 <rSignifcanceTest+0x229>
movsd  -0x20(%rbp),%xmm1
mov    -0x24(%rbp),%eax
add    $0x1,%eax
cltq
movsd  -0x50(%rbp,%rax,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    1349 <rSignifcanceTest+0x229>
movslq -0x24(%rbp),%rax
movsd  -0x560(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x18(%rbp)
jmp    134e <rSignifcanceTest+0x22e>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    12fb <rSignifcanceTest+0x1db>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x38(%rbp),%xmm0
jb     1379 <rSignifcanceTest+0x259>
movsd  -0x548(%rbp),%xmm0
ff
movsd  %xmm0,-0x18(%rbp)
jmp    137e <rSignifcanceTest+0x25e>
cmpl   $0x2,-0x10(%rbp)
jne    139a <rSignifcanceTest+0x27a>
movsd  0xc78(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
add    $0x560,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rSignifcanceTest>:
push   %rbp
push   %r14
push   %rbx
mov    %esi,%r14d
mov    %edi,%ebx
lea    -0x2(%rbx),%ebp
call   1030 <correlationTTest@plt>
movsd  0xed7(%rip),%xmm1
xor    %eax,%eax
lea    0x139e(%rip),%rcx
lea    0xf17(%rip),%rdx
movsd  0xec7(%rip),%xmm4
movsd  0xec6(%rip),%xmm9
movsd  0xec5(%rip),%xmm8
movsd  0xec4(%rip),%xmm10
jmp    1180 <rSignifcanceTest+0x70>
movapd %xmm10,%xmm1
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x4,%rax
cmp    $0x8c,%rax
je     122d <rSignifcanceTest+0x11d>
cmp    (%rax,%rcx,1),%ebp
jl     1170 <rSignifcanceTest+0x60>
cmp    0x4(%rax,%rcx,1),%ebp
jge    1170 <rSignifcanceTest+0x60>
movsd  0x18(%rdx,%rax,8),%xmm6
ucomisd %xmm6,%xmm0
jae    115e <rSignifcanceTest+0x4e>
movsd  (%rdx,%rax,8),%xmm7
movsd  0x8(%rdx,%rax,8),%xmm2
movapd %xmm0,%xmm3
cmpltsd %xmm2,%xmm3
movapd %xmm3,%xmm5
andpd  %xmm4,%xmm5
andnpd %xmm1,%xmm3
orpd   %xmm5,%xmm3
cmplesd %xmm0,%xmm7
andpd  %xmm7,%xmm3
andnpd %xmm1,%xmm7
orpd   %xmm3,%xmm7
movsd  0x10(%rdx,%rax,8),%xmm3
cmplesd %xmm0,%xmm2
movapd %xmm0,%xmm5
cmpltsd %xmm3,%xmm5
movapd %xmm5,%xmm1
andnpd %xmm7,%xmm1
andpd  %xmm9,%xmm5
orpd   %xmm1,%xmm5
andpd  %xmm2,%xmm5
andnpd %xmm7,%xmm2
orpd   %xmm2,%xmm5
cmplesd %xmm0,%xmm3
movapd %xmm0,%xmm1
cmpltsd %xmm6,%xmm1
movapd %xmm1,%xmm2
andnpd %xmm5,%xmm2
andpd  %xmm8,%xmm1
orpd   %xmm2,%xmm1
andpd  %xmm3,%xmm1
andnpd %xmm5,%xmm3
orpd   %xmm3,%xmm1
jmp    1170 <rSignifcanceTest+0x60>
cmp    $0xf4242,%ebx
jl     12df <rSignifcanceTest+0x1cf>
movsd  0xdff(%rip),%xmm5
ucomisd %xmm5,%xmm0
jae    12f2 <rSignifcanceTest+0x1e2>
movsd  0xdd5(%rip),%xmm2
movapd %xmm0,%xmm3
cmpltsd %xmm2,%xmm3
andpd  %xmm3,%xmm4
andnpd %xmm1,%xmm3
orpd   %xmm4,%xmm3
movsd  0xdc0(%rip),%xmm4
cmplesd %xmm0,%xmm4
andpd  %xmm4,%xmm3
andnpd %xmm1,%xmm4
orpd   %xmm3,%xmm4
cmplesd %xmm0,%xmm2
movsd  0xdaa(%rip),%xmm1
movapd %xmm0,%xmm3
cmpltsd %xmm1,%xmm3
movapd %xmm3,%xmm6
andnpd %xmm4,%xmm6
andpd  %xmm9,%xmm3
orpd   %xmm6,%xmm3
andpd  %xmm2,%xmm3
andnpd %xmm4,%xmm2
orpd   %xmm2,%xmm3
cmplesd %xmm0,%xmm1
cmpltsd %xmm5,%xmm0
movapd %xmm0,%xmm2
andnpd %xmm3,%xmm2
andpd  %xmm8,%xmm0
orpd   %xmm2,%xmm0
andpd  %xmm1,%xmm0
andnpd %xmm3,%xmm1
orpd   %xmm1,%xmm0
movapd %xmm0,%xmm1
cmp    $0x2,%r14d
jne    12e9 <rSignifcanceTest+0x1d9>
addsd  %xmm1,%xmm1
movapd %xmm1,%xmm0
pop    %rbx
pop    %r14
pop    %rbp
ret
movsd  0xd26(%rip),%xmm1
cmp    $0x2,%r14d
je     12e5 <rSignifcanceTest+0x1d5>
jmp    12e9 <rSignifcanceTest+0x1d9>

LLVM IR (-O0):
@__const.rSignifcanceTest.tDist = [36 x [4 x double]] [[4 x double] [double 3.182000e+01, double 6.366000e+01, double 3.183100e+02, double 6.366200e+02], [4 x double] [double 0x401BDC28F5C28F5C, double 9.925000e+00, double 2.232700e+01, double 3.159900e+01], [4 x double] [double 4.541000e+00, double 5.841000e+00, double 1.021500e+01, double 1.292400e+01], [4 x double] [double 3.747000e+00, double 4.604000e+00, double 7.173000e+00, double 8.610000e+00], [4 x double] [double 3.365000e+00, double 4.032000e+00, double 5.893000e+00, double 0x401B79DB22D0E560], [4 x double] [double 3.143000e+00, double 3.707000e+00, double 5.208000e+00, double 0x4017D604189374BC], [4 x double] [double 2.998000e+00, double 3.499000e+00, double 4.785000e+00, double 5.408000e+00], [4 x double] [double 2.896000e+00, double 3.355000e+00, double 4.501000e+00, double 5.041000e+00], [4 x double] [double 2.821000e+00, double 3.250000e+00, double 4.297000e+00, double 4.781000e+00], [4 x double] [double 2.764000e+00, double 3.169000e+00, double 4.144000e+00, double 4.587000e+00], [4 x double] [double 2.718000e+00, double 3.106000e+00, double 4.025000e+00, double 4.437000e+00], [4 x double] [double 2.681000e+00, double 3.055000e+00, double 3.930000e+00, double 4.318000e+00], [4 x double] [double 2.650000e+00, double 3.012000e+00, double 3.852000e+00, double 4.221000e+00], [4 x double] [double 2.624000e+00, double 2.977000e+00, double 3.787000e+00, double 4.140000e+00], [4 x double] [double 2.602000e+00, double 2.947000e+00, double 3.733000e+00, double 4.073000e+00], [4 x double] [double 2.583000e+00, double 2.921000e+00, double 3.686000e+00, double 4.015000e+00], [4 x double] [double 2.567000e+00, double 2.898000e+00, double 3.646000e+00, double 3.965000e+00], [4 x double] [double 2.552000e+00, double 2.878000e+00, double 3.610000e+00, double 3.922000e+00], [4 x double] [double 2.539000e+00, double 2.861000e+00, double 3.579000e+00, double 3.883000e+00], [4 x double] [double 2.528000e+00, double 2.845000e+00, double 3.552000e+00, double 3.850000e+00], [4 x double] [double 2.518000e+00, double 2.831000e+00, double 3.527000e+00, double 3.819000e+00], [4 x double] [double 2.508000e+00, double 2.819000e+00, double 3.505000e+00, double 3.792000e+00], [4 x double] [double 2.500000e+00, double 2.807000e+00, double 3.485000e+00, double 3.768000e+00], [4 x double] [double 2.492000e+00, double 2.797000e+00, double 3.467000e+00, double 3.745000e+00], [4 x double] [double 2.485000e+00, double 2.787000e+00, double 3.450000e+00, double 3.725000e+00], [4 x double] [double 2.479000e+00, double 2.779000e+00, double 3.435000e+00, double 3.707000e+00], [4 x double] [double 2.473000e+00, double 2.771000e+00, double 3.421000e+00, double 3.690000e+00], [4 x double] [double 2.467000e+00, double 2.763000e+00, double 3.408000e+00, double 3.674000e+00], [4 x double] [double 2.462000e+00, double 2.756000e+00, double 3.396000e+00, double 3.659000e+00], [4 x double] [double 2.457000e+00, double 2.750000e+00, double 3.385000e+00, double 3.646000e+00], [4 x double] [double 2.423000e+00, double 2.704000e+00, double 3.307000e+00, double 3.551000e+00], [4 x double] [double 2.390000e+00, double 2.660000e+00, double 3.232000e+00, double 3.460000e+00], [4 x double] [double 2.374000e+00, double 2.639000e+00, double 3.195000e+00, double 3.416000e+00], [4 x double] [double 2.364000e+00, double 2.626000e+00, double 3.174000e+00, double 3.390000e+00], [4 x double] [double 2.330000e+00, double 2.581000e+00, double 3.098000e+00, double 3.300000e+00], [4 x double] [double 2.326000e+00, double 2.576000e+00, double 3.090000e+00, double 3.291000e+00]]
@__const.rSignifcanceTest.dfTable = [36 x i32] [i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 40, i32 60, i32 80, i32 100, i32 1000, i32 1000000]
@__const.rSignifcanceTest.p = [4 x double] [double 1.000000e-02, double 5.000000e-03, double 1.000000e-03, double 5.000000e-04]
define double @rSignifcanceTest(double %0, i32 %1, i32 %2) {
%4 = alloca double
%5 = alloca i32
%6 = alloca i32
%7 = alloca double
%8 = alloca double
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca [36 x [4 x double]]
%13 = alloca [36 x i32]
%14 = alloca [4 x double]
store double %0, double* %4
store i32 %1, i32* %5
store i32 %2, i32* %6
store double 1.000000e+00, double* %7
%15 = bitcast [36 x [4 x double]]* %12 to i8*
%16 = bitcast [36 x i32]* %13 to i8*
%17 = bitcast [4 x double]* %14 to i8*
%18 = load i32, i32* %5
%19 = sub nsw i32 %18, 2
store i32 %19, i32* %11
%20 = load double, double* %4
%21 = load i32, i32* %5
%22 = call double @correlationTTest(double %20, i32 %21)
store double %22, double* %8
store i32 1, i32* %10
br label %23
23: ; preds = %91, %3
%24 = load i32, i32* %10
%25 = icmp slt i32 %24, 36
br i1 %25, label %26, label %94
26: ; preds = %23
%27 = load i32, i32* %11
%28 = load i32, i32* %10
%29 = sub nsw i32 %28, 1
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds [36 x i32], [36 x i32]* %13, i64 0, i64 %30
%32 = load i32, i32* %31
%33 = icmp sge i32 %27, %32
br i1 %33, label %34, label %90
34: ; preds = %26
%35 = load i32, i32* %11
%36 = load i32, i32* %10
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds [36 x i32], [36 x i32]* %13, i64 0, i64 %37
%39 = load i32, i32* %38
%40 = icmp slt i32 %35, %39
br i1 %40, label %41, label %90
41: ; preds = %34
store i32 0, i32* %9
br label %42
42: ; preds = %74, %41
%43 = load i32, i32* %9
%44 = icmp slt i32 %43, 3
br i1 %44, label %45, label %77
45: ; preds = %42
%46 = load double, double* %8
%47 = load i32, i32* %10
%48 = sub nsw i32 %47, 1
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds [36 x [4 x double]], [36 x [4 x double]]* %12, i64 0, i64 %49
%51 = load i32, i32* %9
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [4 x double], [4 x double]* %50, i64 0, i64 %52
%54 = load double, double* %53
%55 = fcmp oge double %46, %54
br i1 %55, label %56, label %73
56: ; preds = %45
%57 = load double, double* %8
%58 = load i32, i32* %10
%59 = sub nsw i32 %58, 1
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds [36 x [4 x double]], [36 x [4 x double]]* %12, i64 0, i64 %60
%62 = load i32, i32* %9
%63 = add nsw i32 %62, 1
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [4 x double], [4 x double]* %61, i64 0, i64 %64
%66 = load double, double* %65
%67 = fcmp olt double %57, %66
br i1 %67, label %68, label %73
68: ; preds = %56
%69 = load i32, i32* %9
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 %70
%72 = load double, double* %71
store double %72, double* %7
br label %73
73: ; preds = %68, %56, %45
br label %74
74: ; preds = %73
%75 = load i32, i32* %9
%76 = add nsw i32 %75, 1
store i32 %76, i32* %9
br label %42
77: ; preds = %42
%78 = load double, double* %8
%79 = load i32, i32* %10
%80 = sub nsw i32 %79, 1
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds [36 x [4 x double]], [36 x [4 x double]]* %12, i64 0, i64 %81
%83 = getelementptr inbounds [4 x double], [4 x double]* %82, i64 0, i64 3
%84 = load double, double* %83
%85 = fcmp oge double %78, %84
br i1 %85, label %86, label %89
86: ; preds = %77
%87 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 3
%88 = load double, double* %87
store double %88, double* %7
br label %89
89: ; preds = %86, %77
br label %90
90: ; preds = %89, %34, %26
br label %91
91: ; preds = %90
%92 = load i32, i32* %10
%93 = add nsw i32 %92, 1
store i32 %93, i32* %10
br label %23
94: ; preds = %23
%95 = load i32, i32* %11
%96 = getelementptr inbounds [36 x i32], [36 x i32]* %13, i64 0, i64 35
%97 = load i32, i32* %96
%98 = icmp sge i32 %95, %97
br i1 %98, label %99, label %139
99: ; preds = %94
store i32 0, i32* %9
br label %100
100: ; preds = %126, %99
%101 = load i32, i32* %9
%102 = icmp slt i32 %101, 3
br i1 %102, label %103, label %129
103: ; preds = %100
%104 = load double, double* %8
%105 = getelementptr inbounds [36 x [4 x double]], [36 x [4 x double]]* %12, i64 0, i64 35
%106 = load i32, i32* %9
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds [4 x double], [4 x double]* %105, i64 0, i64 %107
%109 = load double, double* %108
%110 = fcmp oge double %104, %109
br i1 %110, label %111, label %125
111: ; preds = %103
%112 = load double, double* %8
%113 = getelementptr inbounds [36 x [4 x double]], [36 x [4 x double]]* %12, i64 0, i64 35
%114 = load i32, i32* %9
%115 = add nsw i32 %114, 1
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds [4 x double], [4 x double]* %113, i64 0, i64 %116
%118 = load double, double* %117
%119 = fcmp olt double %112, %118
br i1 %119, label %120, label %125
120: ; preds = %111
%121 = load i32, i32* %9
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 %122
%124 = load double, double* %123
store double %124, double* %7
br label %125
125: ; preds = %120, %111, %103
br label %126
126: ; preds = %125
%127 = load i32, i32* %9
%128 = add nsw i32 %127, 1
store i32 %128, i32* %9
br label %100
129: ; preds = %100
%130 = load double, double* %8
%131 = getelementptr inbounds [36 x [4 x double]], [36 x [4 x double]]* %12, i64 0, i64 35
%132 = getelementptr inbounds [4 x double], [4 x double]* %131, i64 0, i64 3
%133 = load double, double* %132
%134 = fcmp oge double %130, %133
br i1 %134, label %135, label %138
135: ; preds = %129
%136 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 3
%137 = load double, double* %136
store double %137, double* %7
br label %138
138: ; preds = %135, %129
br label %139
139: ; preds = %138, %94
%140 = load i32, i32* %6
%141 = icmp eq i32 %140, 2
br i1 %141, label %142, label %145
142: ; preds = %139
%143 = load double, double* %7
%144 = fmul double %143, 2.000000e+00
store double %144, double* %7
br label %145
145: ; preds = %142, %139
%146 = load double, double* %7
ret double %146
}

LLVM IR (-O2):
@__const.rSignifcanceTest.tDist = [36 x [4 x double]] [[4 x double] [double 3.182000e+01, double 6.366000e+01, double 3.183100e+02, double 6.366200e+02], [4 x double] [double 0x401BDC28F5C28F5C, double 9.925000e+00, double 2.232700e+01, double 3.159900e+01], [4 x double] [double 4.541000e+00, double 5.841000e+00, double 1.021500e+01, double 1.292400e+01], [4 x double] [double 3.747000e+00, double 4.604000e+00, double 7.173000e+00, double 8.610000e+00], [4 x double] [double 3.365000e+00, double 4.032000e+00, double 5.893000e+00, double 0x401B79DB22D0E560], [4 x double] [double 3.143000e+00, double 3.707000e+00, double 5.208000e+00, double 0x4017D604189374BC], [4 x double] [double 2.998000e+00, double 3.499000e+00, double 4.785000e+00, double 5.408000e+00], [4 x double] [double 2.896000e+00, double 3.355000e+00, double 4.501000e+00, double 5.041000e+00], [4 x double] [double 2.821000e+00, double 3.250000e+00, double 4.297000e+00, double 4.781000e+00], [4 x double] [double 2.764000e+00, double 3.169000e+00, double 4.144000e+00, double 4.587000e+00], [4 x double] [double 2.718000e+00, double 3.106000e+00, double 4.025000e+00, double 4.437000e+00], [4 x double] [double 2.681000e+00, double 3.055000e+00, double 3.930000e+00, double 4.318000e+00], [4 x double] [double 2.650000e+00, double 3.012000e+00, double 3.852000e+00, double 4.221000e+00], [4 x double] [double 2.624000e+00, double 2.977000e+00, double 3.787000e+00, double 4.140000e+00], [4 x double] [double 2.602000e+00, double 2.947000e+00, double 3.733000e+00, double 4.073000e+00], [4 x double] [double 2.583000e+00, double 2.921000e+00, double 3.686000e+00, double 4.015000e+00], [4 x double] [double 2.567000e+00, double 2.898000e+00, double 3.646000e+00, double 3.965000e+00], [4 x double] [double 2.552000e+00, double 2.878000e+00, double 3.610000e+00, double 3.922000e+00], [4 x double] [double 2.539000e+00, double 2.861000e+00, double 3.579000e+00, double 3.883000e+00], [4 x double] [double 2.528000e+00, double 2.845000e+00, double 3.552000e+00, double 3.850000e+00], [4 x double] [double 2.518000e+00, double 2.831000e+00, double 3.527000e+00, double 3.819000e+00], [4 x double] [double 2.508000e+00, double 2.819000e+00, double 3.505000e+00, double 3.792000e+00], [4 x double] [double 2.500000e+00, double 2.807000e+00, double 3.485000e+00, double 3.768000e+00], [4 x double] [double 2.492000e+00, double 2.797000e+00, double 3.467000e+00, double 3.745000e+00], [4 x double] [double 2.485000e+00, double 2.787000e+00, double 3.450000e+00, double 3.725000e+00], [4 x double] [double 2.479000e+00, double 2.779000e+00, double 3.435000e+00, double 3.707000e+00], [4 x double] [double 2.473000e+00, double 2.771000e+00, double 3.421000e+00, double 3.690000e+00], [4 x double] [double 2.467000e+00, double 2.763000e+00, double 3.408000e+00, double 3.674000e+00], [4 x double] [double 2.462000e+00, double 2.756000e+00, double 3.396000e+00, double 3.659000e+00], [4 x double] [double 2.457000e+00, double 2.750000e+00, double 3.385000e+00, double 3.646000e+00], [4 x double] [double 2.423000e+00, double 2.704000e+00, double 3.307000e+00, double 3.551000e+00], [4 x double] [double 2.390000e+00, double 2.660000e+00, double 3.232000e+00, double 3.460000e+00], [4 x double] [double 2.374000e+00, double 2.639000e+00, double 3.195000e+00, double 3.416000e+00], [4 x double] [double 2.364000e+00, double 2.626000e+00, double 3.174000e+00, double 3.390000e+00], [4 x double] [double 2.330000e+00, double 2.581000e+00, double 3.098000e+00, double 3.300000e+00], [4 x double] [double 2.326000e+00, double 2.576000e+00, double 3.090000e+00, double 3.291000e+00]]
@__const.rSignifcanceTest.dfTable = [36 x i32] [i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 40, i32 60, i32 80, i32 100, i32 1000, i32 1000000]
define double @rSignifcanceTest(double %0, i32 %1, i32 %2) {
%4 = add nsw i32 %1, -2
%5 = tail call double @correlationTTest(double %0, i32 %1)
br label %6
6: ; preds = %3, %40
%7 = phi i64 [ 1, %3 ], [ %42, %40 ]
%8 = phi double [ 1.000000e+00, %3 ], [ %41, %40 ]
%9 = add nsw i64 %7, -1
%10 = getelementptr inbounds [36 x i32], [36 x i32]* @__const.rSignifcanceTest.dfTable, i64 0, i64 %9
%11 = load i32, i32* %10
%12 = icmp slt i32 %4, %11
br i1 %12, label %40, label %13
13: ; preds = %6
%14 = getelementptr inbounds [36 x i32], [36 x i32]* @__const.rSignifcanceTest.dfTable, i64 0, i64 %7
%15 = load i32, i32* %14
%16 = icmp slt i32 %4, %15
br i1 %16, label %17, label %40
17: ; preds = %13
%18 = getelementptr inbounds [36 x [4 x double]], [36 x [4 x double]]* @__const.rSignifcanceTest.tDist, i64 0, i64 %9, i64 0
%19 = load double, double* %18
%20 = fcmp oge double %5, %19
%21 = getelementptr inbounds [36 x [4 x double]], [36 x [4 x double]]* @__const.rSignifcanceTest.tDist, i64 0, i64 %9, i64 1
%22 = load double, double* %21
%23 = fcmp olt double %5, %22
%24 = select i1 %20, i1 %23, i1 false
%25 = select i1 %24, double 1.000000e-02, double %8
%26 = fcmp oge double %5, %22
%27 = getelementptr inbounds [36 x [4 x double]], [36 x [4 x double]]* @__const.rSignifcanceTest.tDist, i64 0, i64 %9, i64 2
%28 = load double, double* %27
%29 = fcmp olt double %5, %28
%30 = select i1 %26, i1 %29, i1 false
%31 = select i1 %30, double 5.000000e-03, double %25
%32 = fcmp oge double %5, %28
%33 = getelementptr inbounds [36 x [4 x double]], [36 x [4 x double]]* @__const.rSignifcanceTest.tDist, i64 0, i64 %9, i64 3
%34 = load double, double* %33
%35 = fcmp olt double %5, %34
%36 = select i1 %32, i1 %35, i1 false
%37 = select i1 %36, double 1.000000e-03, double %31
%38 = fcmp ult double %5, %34
br i1 %38, label %40, label %39
39: ; preds = %17
br label %40
40: ; preds = %6, %13, %39, %17
%41 = phi double [ 5.000000e-04, %39 ], [ %37, %17 ], [ %8, %13 ], [ %8, %6 ]
%42 = add nuw nsw i64 %7, 1
%43 = icmp eq i64 %42, 36
br i1 %43, label %44, label %6
44: ; preds = %40
%45 = icmp sgt i32 %1, 1000001
br i1 %45, label %46, label %61
46: ; preds = %44
%47 = fcmp oge double %5, 2.326000e+00
%48 = fcmp olt double %5, 2.576000e+00
%49 = and i1 %47, %48
%50 = select i1 %49, double 1.000000e-02, double %41
%51 = fcmp oge double %5, 2.576000e+00
%52 = fcmp olt double %5, 3.090000e+00
%53 = and i1 %51, %52
%54 = select i1 %53, double 5.000000e-03, double %50
%55 = fcmp oge double %5, 3.090000e+00
%56 = fcmp olt double %5, 3.291000e+00
%57 = and i1 %55, %56
%58 = select i1 %57, double 1.000000e-03, double %54
%59 = fcmp ult double %5, 3.291000e+00
br i1 %59, label %61, label %60
60: ; preds = %46
br label %61
61: ; preds = %46, %60, %44
%62 = phi double [ 5.000000e-04, %60 ], [ %58, %46 ], [ %41, %44 ]
%63 = icmp eq i32 %2, 2
%64 = fmul double %62, 2.000000e+00
%65 = select i1 %63, double %64, double %62
ret double %65
}