#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 */
int fabs(double);
double sqrt(double);
double Eff_IntegratedCorrelationTime(double x[], int n, double *mx,
                                     double *varx, double *rho1) {
  double Tint = 1, rho0 = 0, rho, m = 0, s = 0;
  int i, ir;
  for (i = 0; i < n; i++)
    m += x[i];
  m /= n;
  for (i = 0; i < n; i++)
    x[i] -= m;
  for (i = 0; i < n; i++)
    s += x[i] * x[i];
  s = sqrt(s / (n - 1.0));
  for (i = 0; i < n; i++)
    x[i] /= s;
  if (mx) {
    *mx = m;
    *varx = s * s;
  }
  if (s / (fabs(m) + 1) < 1E-9)
    Tint = n;
  else {
    for (ir = 1; ir < n - 10; ir++) {
      for (i = 0, rho = 0; i < n - ir; i++)
        rho += x[i] * x[i + ir];
      rho /= (n - 1.0);
      if (ir == 1)
        *rho1 = rho;
      if (ir > 10 && rho + rho0 < 0)
        break;
      Tint += rho * 2;
      rho0 = rho;
    }
  }
  return (1 / Tint);
}


x86 assembly (clang, -O0):
<Eff_IntegratedCorrelationTime>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
movsd  0xebd(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1198 <Eff_IntegratedCorrelationTime+0x78>
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1167 <Eff_IntegratedCorrelationTime+0x47>
cvtsi2sdl -0xc(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11e7 <Eff_IntegratedCorrelationTime+0xc7>
movsd  -0x48(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    11b2 <Eff_IntegratedCorrelationTime+0x92>
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1234 <Eff_IntegratedCorrelationTime+0x114>
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    11ee <Eff_IntegratedCorrelationTime+0xce>
movsd  -0x50(%rbp),%xmm0
cvtsi2sdl -0xc(%rbp),%xmm1
movsd  0xdba(%rip),%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1040 <sqrt@plt>
movsd  %xmm0,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1294 <Eff_IntegratedCorrelationTime+0x174>
movsd  -0x50(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    125f <Eff_IntegratedCorrelationTime+0x13f>
cmpq   $0x0,-0x18(%rbp)
je     12be <Eff_IntegratedCorrelationTime+0x19e>
movsd  -0x48(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x48(%rbp),%xmm0
call   1030 <fabs@plt>
movsd  -0x60(%rbp),%xmm1
add    $0x1,%eax
cvtsi2sd %eax,%xmm0
divsd  %xmm0,%xmm1
movsd  0xd1e(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1303 <Eff_IntegratedCorrelationTime+0x1e3>
cvtsi2sdl -0xc(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    140a <Eff_IntegratedCorrelationTime+0x2ea>
movl   $0x1,-0x58(%rbp)
mov    -0x58(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0xa,%ecx
cmp    %ecx,%eax
jge    1405 <Eff_IntegratedCorrelationTime+0x2e5>
movl   $0x0,-0x54(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x54(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    -0x58(%rbp),%ecx
cmp    %ecx,%eax
jge    137a <Eff_IntegratedCorrelationTime+0x25a>
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x54(%rbp),%ecx
add    -0x58(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    132a <Eff_IntegratedCorrelationTime+0x20a>
cvtsi2sdl -0xc(%rbp),%xmm1
movsd  0xc79(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
cmpl   $0x1,-0x58(%rbp)
jne    13b0 <Eff_IntegratedCorrelationTime+0x290>
movsd  -0x40(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0xa,-0x58(%rbp)
jle    13d6 <Eff_IntegratedCorrelationTime+0x2b6>
movsd  -0x40(%rbp),%xmm1
addsd  -0x38(%rbp),%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    13d6 <Eff_IntegratedCorrelationTime+0x2b6>
jmp    1405 <Eff_IntegratedCorrelationTime+0x2e5>
movsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    130a <Eff_IntegratedCorrelationTime+0x1ea>
jmp    140a <Eff_IntegratedCorrelationTime+0x2ea>
movsd  0xbee(%rip),%xmm0
divsd  -0x30(%rbp),%xmm0
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Eff_IntegratedCorrelationTime>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %r8,%r14
mov    %rcx,%r12
mov    %rdx,%r13
mov    %esi,%r15d
mov    %rdi,%rbx
test   %esi,%esi
jle    115b <Eff_IntegratedCorrelationTime+0x3b>
mov    %r15d,%ebp
lea    -0x1(%rbp),%rax
mov    %ebp,%ecx
and    $0x7,%ecx
cmp    $0x7,%rax
jae    116d <Eff_IntegratedCorrelationTime+0x4d>
xorpd  %xmm6,%xmm6
xor    %edx,%edx
jmp    11b8 <Eff_IntegratedCorrelationTime+0x98>
cvtsi2sd %r15d,%xmm5
xorpd  %xmm6,%xmm6
divsd  %xmm5,%xmm6
jmp    12e2 <Eff_IntegratedCorrelationTime+0x1c2>
mov    %ebp,%esi
and    $0xfffffff8,%esi
xorpd  %xmm6,%xmm6
xor    %edx,%edx
nopl   0x0(%rax,%rax,1)
addsd  (%rbx,%rdx,8),%xmm6
addsd  0x8(%rbx,%rdx,8),%xmm6
addsd  0x10(%rbx,%rdx,8),%xmm6
addsd  0x18(%rbx,%rdx,8),%xmm6
addsd  0x20(%rbx,%rdx,8),%xmm6
addsd  0x28(%rbx,%rdx,8),%xmm6
addsd  0x30(%rbx,%rdx,8),%xmm6
addsd  0x38(%rbx,%rdx,8),%xmm6
add    $0x8,%rdx
cmp    %rdx,%rsi
jne    1180 <Eff_IntegratedCorrelationTime+0x60>
test   %rcx,%rcx
je     11de <Eff_IntegratedCorrelationTime+0xbe>
lea    (%rbx,%rdx,8),%rdx
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
addsd  (%rdx,%rsi,8),%xmm6
add    $0x1,%rsi
cmp    %rsi,%rcx
jne    11d0 <Eff_IntegratedCorrelationTime+0xb0>
cvtsi2sd %r15d,%xmm5
divsd  %xmm5,%xmm6
test   %r15d,%r15d
jle    12e2 <Eff_IntegratedCorrelationTime+0x1c2>
cmp    $0x4,%r15d
jae    11fd <Eff_IntegratedCorrelationTime+0xdd>
xor    %ecx,%ecx
jmp    12b0 <Eff_IntegratedCorrelationTime+0x190>
mov    %ebp,%ecx
and    $0xfffffffc,%ecx
movapd %xmm6,%xmm0
unpcklpd %xmm6,%xmm0
lea    -0x4(%rcx),%rdx
mov    %rdx,%rsi
shr    $0x2,%rsi
add    $0x1,%rsi
test   %rdx,%rdx
je     1653 <Eff_IntegratedCorrelationTime+0x533>
mov    %rsi,%rdi
and    $0xfffffffffffffffe,%rdi
xor    %edx,%edx
nopl   0x0(%rax,%rax,1)
movupd (%rbx,%rdx,8),%xmm1
movupd 0x10(%rbx,%rdx,8),%xmm2
movupd 0x20(%rbx,%rdx,8),%xmm3
movupd 0x30(%rbx,%rdx,8),%xmm4
subpd  %xmm0,%xmm1
subpd  %xmm0,%xmm2
movupd %xmm1,(%rbx,%rdx,8)
movupd %xmm2,0x10(%rbx,%rdx,8)
subpd  %xmm0,%xmm3
subpd  %xmm0,%xmm4
movupd %xmm3,0x20(%rbx,%rdx,8)
movupd %xmm4,0x30(%rbx,%rdx,8)
add    $0x8,%rdx
add    $0xfffffffffffffffe,%rdi
jne    1230 <Eff_IntegratedCorrelationTime+0x110>
test   $0x1,%sil
je     129c <Eff_IntegratedCorrelationTime+0x17c>
movupd (%rbx,%rdx,8),%xmm1
movupd 0x10(%rbx,%rdx,8),%xmm2
subpd  %xmm0,%xmm1
subpd  %xmm0,%xmm2
movupd %xmm1,(%rbx,%rdx,8)
movupd %xmm2,0x10(%rbx,%rdx,8)
cmp    %rbp,%rcx
je     12c7 <Eff_IntegratedCorrelationTime+0x1a7>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  (%rbx,%rcx,8),%xmm0
subsd  %xmm6,%xmm0
movsd  %xmm0,(%rbx,%rcx,8)
add    $0x1,%rcx
cmp    %rcx,%rbp
jne    12b0 <Eff_IntegratedCorrelationTime+0x190>
test   %r15d,%r15d
jle    12e2 <Eff_IntegratedCorrelationTime+0x1c2>
mov    %ebp,%ecx
and    $0x3,%ecx
cmp    $0x3,%rax
jae    1330 <Eff_IntegratedCorrelationTime+0x210>
xorpd  %xmm0,%xmm0
xor    %eax,%eax
jmp    1380 <Eff_IntegratedCorrelationTime+0x260>
movsd  0xd16(%rip),%xmm2
addsd  %xmm5,%xmm2
xorpd  %xmm1,%xmm1
xorpd  %xmm0,%xmm0
divsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
movsd  %xmm5,0x20(%rsp)
movsd  %xmm2,0x18(%rsp)
jb     1318 <Eff_IntegratedCorrelationTime+0x1f8>
xorps  %xmm3,%xmm3
sqrtsd %xmm0,%xmm3
jmp    1487 <Eff_IntegratedCorrelationTime+0x367>
movapd %xmm6,(%rsp)
call   1040 <sqrt@plt>
movapd (%rsp),%xmm6
movapd %xmm0,%xmm3
jmp    1487 <Eff_IntegratedCorrelationTime+0x367>
mov    %ebp,%edx
and    $0xfffffffc,%edx
xorpd  %xmm0,%xmm0
xor    %eax,%eax
nopl   0x0(%rax,%rax,1)
movsd  (%rbx,%rax,8),%xmm1
movsd  0x8(%rbx,%rax,8),%xmm2
mulsd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
mulsd  %xmm2,%xmm2
addsd  %xmm1,%xmm2
movsd  0x10(%rbx,%rax,8),%xmm1
mulsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
movsd  0x18(%rbx,%rax,8),%xmm0
mulsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
add    $0x4,%rax
cmp    %rax,%rdx
jne    1340 <Eff_IntegratedCorrelationTime+0x220>
test   %rcx,%rcx
je     13a6 <Eff_IntegratedCorrelationTime+0x286>
lea    (%rbx,%rax,8),%rax
xor    %edx,%edx
nopl   0x0(%rax,%rax,1)
movsd  (%rax,%rdx,8),%xmm1
mulsd  %xmm1,%xmm1
addsd  %xmm1,%xmm0
add    $0x1,%rdx
cmp    %rdx,%rcx
jne    1390 <Eff_IntegratedCorrelationTime+0x270>
movsd  0xc52(%rip),%xmm2
addsd  %xmm5,%xmm2
divsd  %xmm2,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movsd  %xmm5,0x20(%rsp)
movsd  %xmm2,0x18(%rsp)
jb     13dd <Eff_IntegratedCorrelationTime+0x2bd>
xorps  %xmm3,%xmm3
sqrtsd %xmm0,%xmm3
test   %r15d,%r15d
jg     13f9 <Eff_IntegratedCorrelationTime+0x2d9>
jmp    1487 <Eff_IntegratedCorrelationTime+0x367>
movapd %xmm6,(%rsp)
call   1040 <sqrt@plt>
movapd (%rsp),%xmm6
movapd %xmm0,%xmm3
test   %r15d,%r15d
jle    1487 <Eff_IntegratedCorrelationTime+0x367>
cmp    $0x1,%r15d
jne    1403 <Eff_IntegratedCorrelationTime+0x2e3>
xor    %eax,%eax
jmp    1470 <Eff_IntegratedCorrelationTime+0x350>
mov    %ebp,%eax
and    $0xfffffffe,%eax
movapd %xmm3,%xmm0
unpcklpd %xmm3,%xmm0
lea    -0x2(%rax),%rdx
mov    %rdx,%rcx
shr    %rcx
add    $0x1,%rcx
test   %rdx,%rdx
je     1664 <Eff_IntegratedCorrelationTime+0x544>
mov    %rcx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %edx,%edx
movupd (%rbx,%rdx,8),%xmm1
movupd 0x10(%rbx,%rdx,8),%xmm2
divpd  %xmm0,%xmm1
movupd %xmm1,(%rbx,%rdx,8)
divpd  %xmm0,%xmm2
movupd %xmm2,0x10(%rbx,%rdx,8)
add    $0x4,%rdx
add    $0xfffffffffffffffe,%rsi
jne    1430 <Eff_IntegratedCorrelationTime+0x310>
test   $0x1,%cl
je     146b <Eff_IntegratedCorrelationTime+0x34b>
movupd (%rbx,%rdx,8),%xmm1
divpd  %xmm0,%xmm1
movupd %xmm1,(%rbx,%rdx,8)
cmp    %rbp,%rax
je     1487 <Eff_IntegratedCorrelationTime+0x367>
movsd  (%rbx,%rax,8),%xmm0
divsd  %xmm3,%xmm0
movsd  %xmm0,(%rbx,%rax,8)
add    $0x1,%rax
cmp    %rax,%rbp
jne    1470 <Eff_IntegratedCorrelationTime+0x350>
test   %r13,%r13
je     14a0 <Eff_IntegratedCorrelationTime+0x380>
movsd  %xmm6,0x0(%r13)
movapd %xmm3,%xmm0
mulsd  %xmm3,%xmm0
movsd  %xmm0,(%r12)
movapd %xmm6,%xmm0
movapd %xmm3,(%rsp)
call   1030 <fabs@plt>
add    $0x1,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd (%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  0xb3f(%rip),%xmm0
ucomisd %xmm1,%xmm0
movsd  0x20(%rsp),%xmm6
movsd  0x18(%rsp),%xmm7
ja     1638 <Eff_IntegratedCorrelationTime+0x518>
cmp    $0xc,%r15d
jl     1630 <Eff_IntegratedCorrelationTime+0x510>
lea    -0xa(%r15),%r8d
lea    0x20(%rbx),%rcx
lea    -0x1(%r15),%r10d
lea    0x8(%rbx),%r9
movsd  0xb0f(%rip),%xmm6
xorpd  %xmm0,%xmm0
mov    $0x1,%edi
xor    %r11d,%r11d
xorpd  %xmm1,%xmm1
jmp    154e <Eff_IntegratedCorrelationTime+0x42e>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  %xmm1,(%r14)
movapd %xmm1,%xmm2
addsd  %xmm1,%xmm2
addsd  %xmm2,%xmm6
add    $0x1,%rdi
add    $0x1,%r11d
add    $0x8,%rcx
add    $0xffffffff,%r10d
add    $0x8,%r9
cmp    %r8,%rdi
je     1638 <Eff_IntegratedCorrelationTime+0x518>
movapd %xmm1,%xmm2
xorpd  %xmm1,%xmm1
cmp    %r15d,%edi
jge    1608 <Eff_IntegratedCorrelationTime+0x4e8>
mov    %r11d,%ebp
not    %ebp
add    %r15d,%ebp
lea    -0x1(%rbp),%rax
cmp    $0x3,%rax
jae    1580 <Eff_IntegratedCorrelationTime+0x460>
xorpd  %xmm1,%xmm1
xor    %esi,%esi
jmp    15d7 <Eff_IntegratedCorrelationTime+0x4b7>
nopl   0x0(%rax)
mov    %r10d,%edx
and    $0xfffffffc,%edx
xorpd  %xmm1,%xmm1
xor    %esi,%esi
nopl   0x0(%rax)
movsd  (%rbx,%rsi,8),%xmm3
movsd  0x8(%rbx,%rsi,8),%xmm4
mulsd  -0x18(%rcx,%rsi,8),%xmm3
mulsd  -0x10(%rcx,%rsi,8),%xmm4
addsd  %xmm1,%xmm3
movsd  0x10(%rbx,%rsi,8),%xmm5
mulsd  -0x8(%rcx,%rsi,8),%xmm5
addsd  %xmm3,%xmm4
movsd  0x18(%rbx,%rsi,8),%xmm1
mulsd  (%rcx,%rsi,8),%xmm1
addsd  %xmm4,%xmm5
addsd  %xmm5,%xmm1
add    $0x4,%rsi
cmp    %rsi,%rdx
jne    1590 <Eff_IntegratedCorrelationTime+0x470>
test   $0x3,%bpl
je     1608 <Eff_IntegratedCorrelationTime+0x4e8>
mov    %r10d,%edx
and    $0x3,%edx
lea    (%r9,%rsi,8),%rbp
lea    (%rbx,%rsi,8),%rsi
xor    %eax,%eax
nopl   (%rax)
movsd  (%rsi,%rax,8),%xmm3
mulsd  0x0(%rbp,%rax,8),%xmm3
addsd  %xmm3,%xmm1
add    $0x1,%rax
cmp    %rax,%rdx
jne    15f0 <Eff_IntegratedCorrelationTime+0x4d0>
divsd  %xmm7,%xmm1
cmp    $0x1,%rdi
je     1520 <Eff_IntegratedCorrelationTime+0x400>
cmp    $0xb,%rdi
jb     1525 <Eff_IntegratedCorrelationTime+0x405>
addsd  %xmm1,%xmm2
ucomisd %xmm2,%xmm0
jbe    1525 <Eff_IntegratedCorrelationTime+0x405>
jmp    1638 <Eff_IntegratedCorrelationTime+0x518>
movsd  0x9d8(%rip),%xmm6
movsd  0x9d0(%rip),%xmm0
divsd  %xmm6,%xmm0
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %edx,%edx
test   $0x1,%sil
jne    127e <Eff_IntegratedCorrelationTime+0x15e>
jmp    129c <Eff_IntegratedCorrelationTime+0x17c>
xor    %edx,%edx
test   $0x1,%cl
jne    145d <Eff_IntegratedCorrelationTime+0x33d>
jmp    146b <Eff_IntegratedCorrelationTime+0x34b>

LLVM IR (-O0):
define double @Eff_IntegratedCorrelationTime(double* %0, i32 %1, double* %2, double* %3, double* %4) {
%6 = alloca double*
%7 = alloca i32
%8 = alloca double*
%9 = alloca double*
%10 = alloca double*
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca i32
%17 = alloca i32
store double* %0, double** %6
store i32 %1, i32* %7
store double* %2, double** %8
store double* %3, double** %9
store double* %4, double** %10
store double 1.000000e+00, double* %11
store double 0.000000e+00, double* %12
store double 0.000000e+00, double* %14
store double 0.000000e+00, double* %15
store i32 0, i32* %16
br label %18
18: ; preds = %30, %5
%19 = load i32, i32* %16
%20 = load i32, i32* %7
%21 = icmp slt i32 %19, %20
br i1 %21, label %22, label %33
22: ; preds = %18
%23 = load double*, double** %6
%24 = load i32, i32* %16
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds double, double* %23, i64 %25
%27 = load double, double* %26
%28 = load double, double* %14
%29 = fadd double %28, %27
store double %29, double* %14
br label %30
30: ; preds = %22
%31 = load i32, i32* %16
%32 = add nsw i32 %31, 1
store i32 %32, i32* %16
br label %18
33: ; preds = %18
%34 = load i32, i32* %7
%35 = sitofp i32 %34 to double
%36 = load double, double* %14
%37 = fdiv double %36, %35
store double %37, double* %14
store i32 0, i32* %16
br label %38
38: ; preds = %50, %33
%39 = load i32, i32* %16
%40 = load i32, i32* %7
%41 = icmp slt i32 %39, %40
br i1 %41, label %42, label %53
42: ; preds = %38
%43 = load double, double* %14
%44 = load double*, double** %6
%45 = load i32, i32* %16
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds double, double* %44, i64 %46
%48 = load double, double* %47
%49 = fsub double %48, %43
store double %49, double* %47
br label %50
50: ; preds = %42
%51 = load i32, i32* %16
%52 = add nsw i32 %51, 1
store i32 %52, i32* %16
br label %38
53: ; preds = %38
store i32 0, i32* %16
br label %54
54: ; preds = %71, %53
%55 = load i32, i32* %16
%56 = load i32, i32* %7
%57 = icmp slt i32 %55, %56
br i1 %57, label %58, label %74
58: ; preds = %54
%59 = load double*, double** %6
%60 = load i32, i32* %16
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds double, double* %59, i64 %61
%63 = load double, double* %62
%64 = load double*, double** %6
%65 = load i32, i32* %16
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds double, double* %64, i64 %66
%68 = load double, double* %67
%69 = load double, double* %15
%70 = call double @llvm.fmuladd.f64(double %63, double %68, double %69)
store double %70, double* %15
br label %71
71: ; preds = %58
%72 = load i32, i32* %16
%73 = add nsw i32 %72, 1
store i32 %73, i32* %16
br label %54
74: ; preds = %54
%75 = load double, double* %15
%76 = load i32, i32* %7
%77 = sitofp i32 %76 to double
%78 = fsub double %77, 1.000000e+00
%79 = fdiv double %75, %78
%80 = call double @sqrt(double %79)
store double %80, double* %15
store i32 0, i32* %16
br label %81
81: ; preds = %93, %74
%82 = load i32, i32* %16
%83 = load i32, i32* %7
%84 = icmp slt i32 %82, %83
br i1 %84, label %85, label %96
85: ; preds = %81
%86 = load double, double* %15
%87 = load double*, double** %6
%88 = load i32, i32* %16
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds double, double* %87, i64 %89
%91 = load double, double* %90
%92 = fdiv double %91, %86
store double %92, double* %90
br label %93
93: ; preds = %85
%94 = load i32, i32* %16
%95 = add nsw i32 %94, 1
store i32 %95, i32* %16
br label %81
96: ; preds = %81
%97 = load double*, double** %8
%98 = icmp ne double* %97, null
br i1 %98, label %99, label %106
99: ; preds = %96
%100 = load double, double* %14
%101 = load double*, double** %8
store double %100, double* %101
%102 = load double, double* %15
%103 = load double, double* %15
%104 = fmul double %102, %103
%105 = load double*, double** %9
store double %104, double* %105
br label %106
106: ; preds = %99, %96
%107 = load double, double* %15
%108 = load double, double* %14
%109 = call i32 @fabs(double %108)
%110 = add nsw i32 %109, 1
%111 = sitofp i32 %110 to double
%112 = fdiv double %107, %111
%113 = fcmp olt double %112, 1.000000e-09
br i1 %113, label %114, label %117
114: ; preds = %106
%115 = load i32, i32* %7
%116 = sitofp i32 %115 to double
store double %116, double* %11
br label %177
117: ; preds = %106
store i32 1, i32* %17
br label %118
118: ; preds = %173, %117
%119 = load i32, i32* %17
%120 = load i32, i32* %7
%121 = sub nsw i32 %120, 10
%122 = icmp slt i32 %119, %121
br i1 %122, label %123, label %176
123: ; preds = %118
store i32 0, i32* %16
store double 0.000000e+00, double* %13
br label %124
124: ; preds = %145, %123
%125 = load i32, i32* %16
%126 = load i32, i32* %7
%127 = load i32, i32* %17
%128 = sub nsw i32 %126, %127
%129 = icmp slt i32 %125, %128
br i1 %129, label %130, label %148
130: ; preds = %124
%131 = load double*, double** %6
%132 = load i32, i32* %16
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds double, double* %131, i64 %133
%135 = load double, double* %134
%136 = load double*, double** %6
%137 = load i32, i32* %16
%138 = load i32, i32* %17
%139 = add nsw i32 %137, %138
%140 = sext i32 %139 to i64
%141 = getelementptr inbounds double, double* %136, i64 %140
%142 = load double, double* %141
%143 = load double, double* %13
%144 = call double @llvm.fmuladd.f64(double %135, double %142, double %143)
store double %144, double* %13
br label %145
145: ; preds = %130
%146 = load i32, i32* %16
%147 = add nsw i32 %146, 1
store i32 %147, i32* %16
br label %124
148: ; preds = %124
%149 = load i32, i32* %7
%150 = sitofp i32 %149 to double
%151 = fsub double %150, 1.000000e+00
%152 = load double, double* %13
%153 = fdiv double %152, %151
store double %153, double* %13
%154 = load i32, i32* %17
%155 = icmp eq i32 %154, 1
br i1 %155, label %156, label %159
156: ; preds = %148
%157 = load double, double* %13
%158 = load double*, double** %10
store double %157, double* %158
br label %159
159: ; preds = %156, %148
%160 = load i32, i32* %17
%161 = icmp sgt i32 %160, 10
br i1 %161, label %162, label %168
162: ; preds = %159
%163 = load double, double* %13
%164 = load double, double* %12
%165 = fadd double %163, %164
%166 = fcmp olt double %165, 0.000000e+00
br i1 %166, label %167, label %168
167: ; preds = %162
br label %176
168: ; preds = %162, %159
%169 = load double, double* %13
%170 = load double, double* %11
%171 = call double @llvm.fmuladd.f64(double %169, double 2.000000e+00, double %170)
store double %171, double* %11
%172 = load double, double* %13
store double %172, double* %12
br label %173
173: ; preds = %168
%174 = load i32, i32* %17
%175 = add nsw i32 %174, 1
store i32 %175, i32* %17
br label %118
176: ; preds = %167, %118
br label %177
177: ; preds = %176, %114
%178 = load double, double* %11
%179 = fdiv double 1.000000e+00, %178
ret double %179
}

LLVM IR (-O2):
define double @Eff_IntegratedCorrelationTime(double* nocapture %0, i32 %1, double* writeonly %2, double* nocapture writeonly %3, double* nocapture writeonly %4) {
%6 = icmp sgt i32 %1, 0
br i1 %6, label %10, label %7
7: ; preds = %5
%8 = sitofp i32 %1 to double
%9 = fdiv double 0.000000e+00, %8
br label %170
10: ; preds = %5
%11 = zext i32 %1 to i64
%12 = add nsw i64 %11, -1
%13 = and i64 %11, 7
%14 = icmp ult i64 %12, 7
br i1 %14, label %55, label %15
15: ; preds = %10
%16 = and i64 %11, 4294967288
br label %17
17: ; preds = %17, %15
%18 = phi i64 [ 0, %15 ], [ %52, %17 ]
%19 = phi double [ 0.000000e+00, %15 ], [ %51, %17 ]
%20 = phi i64 [ 0, %15 ], [ %53, %17 ]
%21 = getelementptr inbounds double, double* %0, i64 %18
%22 = load double, double* %21
%23 = fadd double %19, %22
%24 = or i64 %18, 1
%25 = getelementptr inbounds double, double* %0, i64 %24
%26 = load double, double* %25
%27 = fadd double %23, %26
%28 = or i64 %18, 2
%29 = getelementptr inbounds double, double* %0, i64 %28
%30 = load double, double* %29
%31 = fadd double %27, %30
%32 = or i64 %18, 3
%33 = getelementptr inbounds double, double* %0, i64 %32
%34 = load double, double* %33
%35 = fadd double %31, %34
%36 = or i64 %18, 4
%37 = getelementptr inbounds double, double* %0, i64 %36
%38 = load double, double* %37
%39 = fadd double %35, %38
%40 = or i64 %18, 5
%41 = getelementptr inbounds double, double* %0, i64 %40
%42 = load double, double* %41
%43 = fadd double %39, %42
%44 = or i64 %18, 6
%45 = getelementptr inbounds double, double* %0, i64 %44
%46 = load double, double* %45
%47 = fadd double %43, %46
%48 = or i64 %18, 7
%49 = getelementptr inbounds double, double* %0, i64 %48
%50 = load double, double* %49
%51 = fadd double %47, %50
%52 = add nuw nsw i64 %18, 8
%53 = add i64 %20, 8
%54 = icmp eq i64 %53, %16
br i1 %54, label %55, label %17
55: ; preds = %17, %10
%56 = phi double [ undef, %10 ], [ %51, %17 ]
%57 = phi i64 [ 0, %10 ], [ %52, %17 ]
%58 = phi double [ 0.000000e+00, %10 ], [ %51, %17 ]
%59 = icmp eq i64 %13, 0
br i1 %59, label %70, label %60
60: ; preds = %55, %60
%61 = phi i64 [ %67, %60 ], [ %57, %55 ]
%62 = phi double [ %66, %60 ], [ %58, %55 ]
%63 = phi i64 [ %68, %60 ], [ 0, %55 ]
%64 = getelementptr inbounds double, double* %0, i64 %61
%65 = load double, double* %64
%66 = fadd double %62, %65
%67 = add nuw nsw i64 %61, 1
%68 = add i64 %63, 1
%69 = icmp eq i64 %68, %13
br i1 %69, label %70, label %60
70: ; preds = %60, %55
%71 = phi double [ %56, %55 ], [ %66, %60 ]
%72 = sitofp i32 %1 to double
%73 = fdiv double %71, %72
br i1 %6, label %74, label %170
74: ; preds = %70
%75 = zext i32 %1 to i64
%76 = icmp ult i32 %1, 4
br i1 %76, label %133, label %77
77: ; preds = %74
%78 = and i64 %11, 4294967292
%79 = insertelement <2 x double> poison, double %73, i64 0
%80 = shufflevector <2 x double> %79, <2 x double> poison, <2 x i32> zeroinitializer
%81 = insertelement <2 x double> poison, double %73, i64 0
%82 = shufflevector <2 x double> %81, <2 x double> poison, <2 x i32> zeroinitializer
%83 = add nsw i64 %78, -4
%84 = lshr exact i64 %83, 2
%85 = add nuw nsw i64 %84, 1
%86 = and i64 %85, 1
%87 = icmp eq i64 %83, 0
br i1 %87, label %117, label %88
88: ; preds = %77
%89 = and i64 %85, 9223372036854775806
br label %90
90: ; preds = %90, %88
%91 = phi i64 [ 0, %88 ], [ %114, %90 ]
%92 = phi i64 [ 0, %88 ], [ %115, %90 ]
%93 = getelementptr inbounds double, double* %0, i64 %91
%94 = bitcast double* %93 to <2 x double>*
%95 = load <2 x double>, <2 x double>* %94
%96 = getelementptr inbounds double, double* %93, i64 2
%97 = bitcast double* %96 to <2 x double>*
%98 = load <2 x double>, <2 x double>* %97
%99 = fsub <2 x double> %95, %80
%100 = fsub <2 x double> %98, %82
%101 = bitcast double* %93 to <2 x double>*
store <2 x double> %99, <2 x double>* %101
%102 = bitcast double* %96 to <2 x double>*
store <2 x double> %100, <2 x double>* %102
%103 = or i64 %91, 4
%104 = getelementptr inbounds double, double* %0, i64 %103
%105 = bitcast double* %104 to <2 x double>*
%106 = load <2 x double>, <2 x double>* %105
%107 = getelementptr inbounds double, double* %104, i64 2
%108 = bitcast double* %107 to <2 x double>*
%109 = load <2 x double>, <2 x double>* %108
%110 = fsub <2 x double> %106, %80
%111 = fsub <2 x double> %109, %82
%112 = bitcast double* %104 to <2 x double>*
store <2 x double> %110, <2 x double>* %112
%113 = bitcast double* %107 to <2 x double>*
store <2 x double> %111, <2 x double>* %113
%114 = add nuw i64 %91, 8
%115 = add i64 %92, 2
%116 = icmp eq i64 %115, %89
br i1 %116, label %117, label %90
117: ; preds = %90, %77
%118 = phi i64 [ 0, %77 ], [ %114, %90 ]
%119 = icmp eq i64 %86, 0
br i1 %119, label %131, label %120
120: ; preds = %117
%121 = getelementptr inbounds double, double* %0, i64 %118
%122 = bitcast double* %121 to <2 x double>*
%123 = load <2 x double>, <2 x double>* %122
%124 = getelementptr inbounds double, double* %121, i64 2
%125 = bitcast double* %124 to <2 x double>*
%126 = load <2 x double>, <2 x double>* %125
%127 = fsub <2 x double> %123, %80
%128 = fsub <2 x double> %126, %82
%129 = bitcast double* %121 to <2 x double>*
store <2 x double> %127, <2 x double>* %129
%130 = bitcast double* %124 to <2 x double>*
store <2 x double> %128, <2 x double>* %130
br label %131
131: ; preds = %117, %120
%132 = icmp eq i64 %78, %11
br i1 %132, label %135, label %133
133: ; preds = %74, %131
%134 = phi i64 [ 0, %74 ], [ %78, %131 ]
br label %141
135: ; preds = %141, %131
br i1 %6, label %136, label %170
136: ; preds = %135
%137 = and i64 %11, 3
%138 = icmp ult i64 %12, 3
br i1 %138, label %176, label %139
139: ; preds = %136
%140 = and i64 %11, 4294967292
br label %148
141: ; preds = %133, %141
%142 = phi i64 [ %146, %141 ], [ %134, %133 ]
%143 = getelementptr inbounds double, double* %0, i64 %142
%144 = load double, double* %143
%145 = fsub double %144, %73
store double %145, double* %143
%146 = add nuw nsw i64 %142, 1
%147 = icmp eq i64 %146, %75
br i1 %147, label %135, label %141
148: ; preds = %148, %139
%149 = phi i64 [ 0, %139 ], [ %167, %148 ]
%150 = phi double [ 0.000000e+00, %139 ], [ %166, %148 ]
%151 = phi i64 [ 0, %139 ], [ %168, %148 ]
%152 = getelementptr inbounds double, double* %0, i64 %149
%153 = load double, double* %152
%154 = tail call double @llvm.fmuladd.f64(double %153, double %153, double %150)
%155 = or i64 %149, 1
%156 = getelementptr inbounds double, double* %0, i64 %155
%157 = load double, double* %156
%158 = tail call double @llvm.fmuladd.f64(double %157, double %157, double %154)
%159 = or i64 %149, 2
%160 = getelementptr inbounds double, double* %0, i64 %159
%161 = load double, double* %160
%162 = tail call double @llvm.fmuladd.f64(double %161, double %161, double %158)
%163 = or i64 %149, 3
%164 = getelementptr inbounds double, double* %0, i64 %163
%165 = load double, double* %164
%166 = tail call double @llvm.fmuladd.f64(double %165, double %165, double %162)
%167 = add nuw nsw i64 %149, 4
%168 = add i64 %151, 4
%169 = icmp eq i64 %168, %140
br i1 %169, label %176, label %148
170: ; preds = %135, %7, %70
%171 = phi double [ %72, %135 ], [ %72, %70 ], [ %8, %7 ]
%172 = phi double [ %73, %135 ], [ %73, %70 ], [ %9, %7 ]
%173 = fadd double %171, -1.000000e+00
%174 = fdiv double 0.000000e+00, %173
%175 = tail call double @sqrt(double %174)
br label %247
176: ; preds = %148, %136
%177 = phi double [ undef, %136 ], [ %166, %148 ]
%178 = phi i64 [ 0, %136 ], [ %167, %148 ]
%179 = phi double [ 0.000000e+00, %136 ], [ %166, %148 ]
%180 = icmp eq i64 %137, 0
br i1 %180, label %191, label %181
181: ; preds = %176, %181
%182 = phi i64 [ %188, %181 ], [ %178, %176 ]
%183 = phi double [ %187, %181 ], [ %179, %176 ]
%184 = phi i64 [ %189, %181 ], [ 0, %176 ]
%185 = getelementptr inbounds double, double* %0, i64 %182
%186 = load double, double* %185
%187 = tail call double @llvm.fmuladd.f64(double %186, double %186, double %183)
%188 = add nuw nsw i64 %182, 1
%189 = add i64 %184, 1
%190 = icmp eq i64 %189, %137
br i1 %190, label %191, label %181
191: ; preds = %181, %176
%192 = phi double [ %177, %176 ], [ %187, %181 ]
%193 = fadd double %72, -1.000000e+00
%194 = fdiv double %192, %193
%195 = tail call double @sqrt(double %194)
br i1 %6, label %196, label %247
196: ; preds = %191
%197 = zext i32 %1 to i64
%198 = icmp eq i32 %1, 1
br i1 %198, label %238, label %199
199: ; preds = %196
%200 = and i64 %11, 4294967294
%201 = insertelement <2 x double> poison, double %195, i64 0
%202 = shufflevector <2 x double> %201, <2 x double> poison, <2 x i32> zeroinitializer
%203 = add nsw i64 %200, -2
%204 = lshr exact i64 %203, 1
%205 = add nuw i64 %204, 1
%206 = and i64 %205, 1
%207 = icmp eq i64 %203, 0
br i1 %207, label %227, label %208
208: ; preds = %199
%209 = and i64 %205, -2
br label %210
210: ; preds = %210, %208
%211 = phi i64 [ 0, %208 ], [ %224, %210 ]
%212 = phi i64 [ 0, %208 ], [ %225, %210 ]
%213 = getelementptr inbounds double, double* %0, i64 %211
%214 = bitcast double* %213 to <2 x double>*
%215 = load <2 x double>, <2 x double>* %214
%216 = fdiv <2 x double> %215, %202
%217 = bitcast double* %213 to <2 x double>*
store <2 x double> %216, <2 x double>* %217
%218 = or i64 %211, 2
%219 = getelementptr inbounds double, double* %0, i64 %218
%220 = bitcast double* %219 to <2 x double>*
%221 = load <2 x double>, <2 x double>* %220
%222 = fdiv <2 x double> %221, %202
%223 = bitcast double* %219 to <2 x double>*
store <2 x double> %222, <2 x double>* %223
%224 = add nuw i64 %211, 4
%225 = add nuw i64 %212, 2
%226 = icmp eq i64 %225, %209
br i1 %226, label %227, label %210
227: ; preds = %210, %199
%228 = phi i64 [ 0, %199 ], [ %224, %210 ]
%229 = icmp eq i64 %206, 0
br i1 %229, label %236, label %230
230: ; preds = %227
%231 = getelementptr inbounds double, double* %0, i64 %228
%232 = bitcast double* %231 to <2 x double>*
%233 = load <2 x double>, <2 x double>* %232
%234 = fdiv <2 x double> %233, %202
%235 = bitcast double* %231 to <2 x double>*
store <2 x double> %234, <2 x double>* %235
br label %236
236: ; preds = %227, %230
%237 = icmp eq i64 %200, %11
br i1 %237, label %247, label %238
238: ; preds = %196, %236
%239 = phi i64 [ 0, %196 ], [ %200, %236 ]
br label %240
240: ; preds = %238, %240
%241 = phi i64 [ %245, %240 ], [ %239, %238 ]
%242 = getelementptr inbounds double, double* %0, i64 %241
%243 = load double, double* %242
%244 = fdiv double %243, %195
store double %244, double* %242
%245 = add nuw nsw i64 %241, 1
%246 = icmp eq i64 %245, %197
br i1 %246, label %247, label %240
247: ; preds = %240, %236, %170, %191
%248 = phi double [ %175, %170 ], [ %195, %191 ], [ %195, %236 ], [ %195, %240 ]
%249 = phi double [ %173, %170 ], [ %193, %191 ], [ %193, %236 ], [ %193, %240 ]
%250 = phi double [ %172, %170 ], [ %73, %191 ], [ %73, %236 ], [ %73, %240 ]
%251 = phi double [ %171, %170 ], [ %72, %191 ], [ %72, %236 ], [ %72, %240 ]
%252 = icmp eq double* %2, null
br i1 %252, label %255, label %253
253: ; preds = %247
store double %250, double* %2
%254 = fmul double %248, %248
store double %254, double* %3
br label %255
255: ; preds = %253, %247
%256 = tail call i32 @fabs(double %250)
%257 = add nsw i32 %256, 1
%258 = sitofp i32 %257 to double
%259 = fdiv double %248, %258
%260 = fcmp olt double %259, 1.000000e-09
br i1 %260, label %349, label %261
261: ; preds = %255
%262 = icmp sgt i32 %1, 11
br i1 %262, label %263, label %349
263: ; preds = %261
%264 = add nsw i32 %1, -10
%265 = zext i32 %264 to i64
br label %266
266: ; preds = %263, %344
%267 = phi i32 [ 0, %263 ], [ %348, %344 ]
%268 = phi i64 [ 1, %263 ], [ %346, %344 ]
%269 = phi double [ 0.000000e+00, %263 ], [ %336, %344 ]
%270 = phi double [ 1.000000e+00, %263 ], [ %345, %344 ]
%271 = xor i32 %267, -1
%272 = add i32 %271, %1
%273 = zext i32 %272 to i64
%274 = trunc i64 %268 to i32
%275 = icmp slt i32 %274, %1
br i1 %275, label %276, label %334
276: ; preds = %266
%277 = add nsw i64 %273, -1
%278 = and i64 %273, 3
%279 = icmp ult i64 %277, 3
br i1 %279, label %316, label %280
280: ; preds = %276
%281 = and i64 %273, 4294967292
br label %282
282: ; preds = %282, %280
%283 = phi i64 [ 0, %280 ], [ %313, %282 ]
%284 = phi double [ 0.000000e+00, %280 ], [ %312, %282 ]
%285 = phi i64 [ 0, %280 ], [ %314, %282 ]
%286 = getelementptr inbounds double, double* %0, i64 %283
%287 = load double, double* %286
%288 = add nuw nsw i64 %283, %268
%289 = getelementptr inbounds double, double* %0, i64 %288
%290 = load double, double* %289
%291 = tail call double @llvm.fmuladd.f64(double %287, double %290, double %284)
%292 = or i64 %283, 1
%293 = getelementptr inbounds double, double* %0, i64 %292
%294 = load double, double* %293
%295 = add nuw nsw i64 %292, %268
%296 = getelementptr inbounds double, double* %0, i64 %295
%297 = load double, double* %296
%298 = tail call double @llvm.fmuladd.f64(double %294, double %297, double %291)
%299 = or i64 %283, 2
%300 = getelementptr inbounds double, double* %0, i64 %299
%301 = load double, double* %300
%302 = add nuw nsw i64 %299, %268
%303 = getelementptr inbounds double, double* %0, i64 %302
%304 = load double, double* %303
%305 = tail call double @llvm.fmuladd.f64(double %301, double %304, double %298)
%306 = or i64 %283, 3
%307 = getelementptr inbounds double, double* %0, i64 %306
%308 = load double, double* %307
%309 = add nuw nsw i64 %306, %268
%310 = getelementptr inbounds double, double* %0, i64 %309
%311 = load double, double* %310
%312 = tail call double @llvm.fmuladd.f64(double %308, double %311, double %305)
%313 = add nuw nsw i64 %283, 4
%314 = add i64 %285, 4
%315 = icmp eq i64 %314, %281
br i1 %315, label %316, label %282
316: ; preds = %282, %276
%317 = phi double [ undef, %276 ], [ %312, %282 ]
%318 = phi i64 [ 0, %276 ], [ %313, %282 ]
%319 = phi double [ 0.000000e+00, %276 ], [ %312, %282 ]
%320 = icmp eq i64 %278, 0
br i1 %320, label %334, label %321
321: ; preds = %316, %321
%322 = phi i64 [ %331, %321 ], [ %318, %316 ]
%323 = phi double [ %330, %321 ], [ %319, %316 ]
%324 = phi i64 [ %332, %321 ], [ 0, %316 ]
%325 = getelementptr inbounds double, double* %0, i64 %322
%326 = load double, double* %325
%327 = add nuw nsw i64 %322, %268
%328 = getelementptr inbounds double, double* %0, i64 %327
%329 = load double, double* %328
%330 = tail call double @llvm.fmuladd.f64(double %326, double %329, double %323)
%331 = add nuw nsw i64 %322, 1
%332 = add i64 %324, 1
%333 = icmp eq i64 %332, %278
br i1 %333, label %334, label %321
334: ; preds = %316, %321, %266
%335 = phi double [ 0.000000e+00, %266 ], [ %317, %316 ], [ %330, %321 ]
%336 = fdiv double %335, %249
%337 = icmp eq i64 %268, 1
br i1 %337, label %338, label %339
338: ; preds = %334
store double %336, double* %4
br label %344
339: ; preds = %334
%340 = icmp ugt i64 %268, 10
%341 = fadd double %269, %336
%342 = fcmp olt double %341, 0.000000e+00
%343 = select i1 %340, i1 %342, i1 false
br i1 %343, label %349, label %344
344: ; preds = %338, %339
%345 = tail call double @llvm.fmuladd.f64(double %336, double 2.000000e+00, double %270)
%346 = add nuw nsw i64 %268, 1
%347 = icmp eq i64 %346, %265
%348 = add i32 %267, 1
br i1 %347, label %349, label %266
349: ; preds = %344, %339, %261, %255
%350 = phi double [ %251, %255 ], [ 1.000000e+00, %261 ], [ %345, %344 ], [ %270, %339 ]
%351 = fdiv double 1.000000e+00, %350
ret double %351
}