#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 */
float eri(float, float, float, float, int, int, int, float, float, float, float,
          float, int, int, int, float, float, float, float, float, int, int,
          int, float, float, float, float, float, int, int, int, float);
float contr_eri(int lena, float *aexps, float *acoefs, float *anorms, float xa,
                float ya, float za, int la, int ma, int na, int lenb,
                float *bexps, float *bcoefs, float *bnorms, float xb, float yb,
                float zb, int lb, int mb, int nb, int lenc, float *cexps,
                float *ccoefs, float *cnorms, float xc, float yc, float zc,
                int lc, int mc, int nc, int lend, float *dexps, float *dcoefs,
                float *dnorms, float xd, float yd, float zd, int ld, int md,
                int nd) {
  float val = 0.;
  int i, j, k, l;
  float EE;
  for (i = 0; i < lena; i++)
    for (j = 0; j < lenb; j++)
      for (k = 0; k < lenc; k++)
        for (l = 0; l < lend; l++) {
          EE = acoefs[i] * bcoefs[j] * ccoefs[k] * dcoefs[l] *
               eri(xa, ya, za, anorms[i], la, ma, na, aexps[i], xb, yb, zb,
                   bnorms[j], lb, mb, nb, bexps[j], xc, yc, zc, cnorms[k], lc,
                   mc, nc, cexps[k], xd, yd, zd, dnorms[l], ld, md, nd,
                   dexps[l]);
          val += EE;
        }
  return val;
}


x86 assembly (clang, -O0):
<contr_eri>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x108,%rsp
mov    0xd8(%rbp),%eax
mov    0xd0(%rbp),%eax
mov    0xc8(%rbp),%eax
movss  0xc0(%rbp),%xmm8
movss  0xb8(%rbp),%xmm8
movss  0xb0(%rbp),%xmm8
mov    0xa8(%rbp),%rax
mov    0xa0(%rbp),%rax
mov    0x98(%rbp),%rax
mov    0x90(%rbp),%eax
mov    0x88(%rbp),%eax
mov    0x80(%rbp),%eax
mov    0x78(%rbp),%eax
movss  0x70(%rbp),%xmm8
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%eax
mov    0x48(%rbp),%eax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x2c(%rbp)
mov    %rsi,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
movss  %xmm0,-0x4c(%rbp)
movss  %xmm1,-0x50(%rbp)
movss  %xmm2,-0x54(%rbp)
mov    %r8d,-0x58(%rbp)
mov    %r9d,-0x5c(%rbp)
movss  %xmm3,-0x60(%rbp)
movss  %xmm4,-0x64(%rbp)
movss  %xmm5,-0x68(%rbp)
movss  %xmm6,-0x6c(%rbp)
movss  %xmm7,-0x70(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
movl   $0x0,-0x78(%rbp)
mov    -0x78(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    14c9 <contr_eri+0x3b9>
movl   $0x0,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    14b6 <contr_eri+0x3a6>
movl   $0x0,-0x80(%rbp)
mov    -0x80(%rbp),%eax
cmp    0x50(%rbp),%eax
jge    14a3 <contr_eri+0x393>
movl   $0x0,-0x84(%rbp)
mov    -0x84(%rbp),%eax
cmp    0x90(%rbp),%eax
jge    1490 <contr_eri+0x380>
mov    -0x40(%rbp),%rax
movslq -0x78(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    0x28(%rbp),%rax
movslq -0x7c(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
mov    0x60(%rbp),%rax
movslq -0x80(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
mov    0xa0(%rbp),%rax
movslq -0x84(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x50(%rbp),%xmm1
movss  -0x54(%rbp),%xmm2
mov    -0x48(%rbp),%rax
movslq -0x78(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm3
mov    -0x58(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    0x10(%rbp),%edx
mov    -0x38(%rbp),%rax
movslq -0x78(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm4
movss  -0x60(%rbp),%xmm5
movss  -0x64(%rbp),%xmm6
movss  -0x68(%rbp),%xmm7
mov    0x30(%rbp),%rax
movslq -0x7c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm8
mov    0x38(%rbp),%ecx
mov    0x40(%rbp),%r8d
mov    0x48(%rbp),%r9d
mov    0x20(%rbp),%rax
movslq -0x7c(%rbp),%r10
movss  (%rax,%r10,4),%xmm0
movss  %xmm0,-0x9c(%rbp)
movss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  0x70(%rbp),%xmm15
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%r10
movss  (%rax,%r10,4),%xmm14
mov    0x78(%rbp),%r15d
mov    0x80(%rbp),%r14d
mov    0x88(%rbp),%ebx
mov    0x58(%rbp),%rax
movslq -0x80(%rbp),%r10
movss  (%rax,%r10,4),%xmm13
movss  0xb0(%rbp),%xmm12
movss  0xb8(%rbp),%xmm11
movss  0xc0(%rbp),%xmm10
mov    0xa8(%rbp),%rax
movslq -0x84(%rbp),%r10
movss  (%rax,%r10,4),%xmm9
mov    0xc8(%rbp),%r11d
mov    0xd0(%rbp),%r10d
mov    0xd8(%rbp),%eax
mov    0x98(%rbp),%r12
movslq -0x84(%rbp),%r13
movss  (%r12,%r13,4),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
movss  %xmm8,(%rsp)
movss  -0x9c(%rbp),%xmm8
ff ff
movss  %xmm8,0x8(%rsp)
movss  -0x98(%rbp),%xmm8
ff ff
movss  %xmm8,0x10(%rsp)
movss  -0x94(%rbp),%xmm8
ff ff
movss  %xmm8,0x18(%rsp)
movss  -0x90(%rbp),%xmm8
ff ff
movss  %xmm15,0x20(%rsp)
movss  %xmm14,0x28(%rsp)
mov    %r15d,0x30(%rsp)
mov    %r14d,0x38(%rsp)
mov    %ebx,0x40(%rsp)
movss  %xmm13,0x48(%rsp)
movss  %xmm12,0x50(%rsp)
movss  %xmm11,0x58(%rsp)
movss  %xmm10,0x60(%rsp)
movss  %xmm9,0x68(%rsp)
mov    %r11d,0x70(%rsp)
mov    %r10d,0x78(%rsp)
mov    %eax,0x80(%rsp)
movss  %xmm8,0x88(%rsp)
call   1030 <eri@plt>
movaps %xmm0,%xmm1
movss  -0x8c(%rbp),%xmm0
ff
mulss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x88(%rbp),%xmm0
ff
addss  -0x74(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
jmp    1235 <contr_eri+0x125>
jmp    1495 <contr_eri+0x385>
mov    -0x80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
jmp    121f <contr_eri+0x10f>
jmp    14a8 <contr_eri+0x398>
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
jmp    120c <contr_eri+0xfc>
jmp    14bb <contr_eri+0x3ab>
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
jmp    11f9 <contr_eri+0xe9>
movss  -0x74(%rbp),%xmm0
add    $0x108,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<contr_eri>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xf8,%rsp
mov    %r9d,0xbc(%rsp)
test   %edi,%edi
jle    14d8 <contr_eri+0x3c8>
movaps %xmm5,%xmm10
movaps %xmm4,%xmm11
movaps %xmm3,%xmm5
movaps %xmm0,%xmm15
mov    %rsi,%r15
mov    0x1e8(%rsp),%r14d
mov    0x1c8(%rsp),%r13
mov    0x1c0(%rsp),%rsi
mov    0x1b8(%rsp),%r10
mov    0x1a8(%rsp),%r11d
mov    0x1a0(%rsp),%ebx
mov    %edi,%edi
mov    %rdi,0xd8(%rsp)
xorps  %xmm3,%xmm3
xor    %ebp,%ebp
movss  %xmm7,0xb8(%rsp)
movss  %xmm6,0xb4(%rsp)
movss  %xmm10,0xb0(%rsp)
movss  %xmm4,0xac(%rsp)
movss  %xmm5,0xa8(%rsp)
movss  %xmm2,0xa4(%rsp)
movss  %xmm1,0xa0(%rsp)
movss  %xmm0,0x9c(%rsp)
mov    %r15,0xf0(%rsp)
mov    %rdx,0xe8(%rsp)
mov    %rcx,0xe0(%rsp)
mov    %r8d,0x98(%rsp)
jmp    1202 <contr_eri+0xf2>
nopl   0x0(%rax)
add    $0x1,%rbp
cmp    0xd8(%rsp),%rbp
je     14db <contr_eri+0x3cb>
cmpl   $0x0,0x138(%rsp)
jle    11f0 <contr_eri+0xe0>
xor    %edi,%edi
mov    %rdi,0x90(%rsp)
mov    %rbp,0xc8(%rsp)
jmp    124e <contr_eri+0x13e>
mov    0x90(%rsp),%rbp
add    $0x1,%rbp
mov    %rbp,%rax
mov    0x138(%rsp),%ebp
mov    %rax,%rdi
mov    %rax,0x90(%rsp)
cmp    %rbp,%rax
mov    0xc8(%rsp),%rbp
je     11f0 <contr_eri+0xe0>
cmpl   $0x0,0x170(%rsp)
jle    1220 <contr_eri+0x110>
xor    %edi,%edi
jmp    127e <contr_eri+0x16e>
nopl   0x0(%rax)
add    $0x1,%rdi
mov    %rdi,%rbp
mov    0x170(%rsp),%edi
cmp    %rdi,%rbp
mov    %rbp,%rdi
mov    0x90(%rsp),%rbp
je     1228 <contr_eri+0x118>
cmpl   $0x0,0x1b0(%rsp)
jle    1260 <contr_eri+0x150>
xor    %ebp,%ebp
mov    %rdi,0xd0(%rsp)
mov    0xd0(%rsp),%rdi
nopw   0x0(%rax,%rax,1)
movss  %xmm3,0xc4(%rsp)
mov    0xc8(%rsp),%r12
movss  (%rdx,%r12,4),%xmm0
mov    0x90(%rsp),%rdx
mov    0x148(%rsp),%rax
mulss  (%rax,%rdx,4),%xmm0
mov    0x180(%rsp),%r9
mulss  (%r9,%rdi,4),%xmm0
mulss  (%rsi,%rbp,4),%xmm0
movss  %xmm0,0xc0(%rsp)
movss  (%rcx,%r12,4),%xmm3
movss  (%r15,%r12,4),%xmm4
mov    0x150(%rsp),%rax
movss  (%rax,%rdx,4),%xmm8
mov    0x140(%rsp),%rax
movss  (%rax,%rdx,4),%xmm9
mov    0x188(%rsp),%rax
movss  (%rax,%rdi,4),%xmm12
mov    0x178(%rsp),%rax
movss  (%rax,%rdi,4),%xmm13
movss  0x0(%r13,%rbp,4),%xmm14
movss  (%r10,%rbp,4),%xmm0
movss  %xmm0,0x88(%rsp)
mov    0x1f8(%rsp),%eax
mov    %eax,0x80(%rsp)
mov    0x1f0(%rsp),%eax
mov    %eax,0x78(%rsp)
mov    %r14d,0x70(%rsp)
movss  %xmm14,0x68(%rsp)
movss  0x1e0(%rsp),%xmm0
movss  %xmm0,0x60(%rsp)
movss  0x1d8(%rsp),%xmm0
movss  %xmm0,0x58(%rsp)
movss  0x1d0(%rsp),%xmm0
movss  %xmm0,0x50(%rsp)
movss  %xmm13,0x48(%rsp)
mov    %r11d,0x40(%rsp)
mov    %ebx,0x38(%rsp)
mov    0x198(%rsp),%eax
mov    %eax,0x30(%rsp)
movss  %xmm12,0x28(%rsp)
movss  0x190(%rsp),%xmm0
movss  %xmm0,0x20(%rsp)
movss  %xmm7,0x18(%rsp)
movss  %xmm6,0x10(%rsp)
movss  %xmm9,0x8(%rsp)
movss  %xmm8,(%rsp)
movaps %xmm15,%xmm0
mov    %r8d,%edi
mov    0xbc(%rsp),%esi
mov    0x130(%rsp),%edx
movaps %xmm11,%xmm6
movaps %xmm10,%xmm7
mov    0x158(%rsp),%ecx
mov    0x160(%rsp),%r8d
mov    0x168(%rsp),%r9d
call   1030 <eri@plt>
mov    0xd0(%rsp),%rdi
movss  0xc4(%rsp),%xmm3
mov    0x1a8(%rsp),%r11d
mov    0x1b8(%rsp),%r10
mov    0x1c0(%rsp),%rsi
mov    0xf0(%rsp),%r15
mov    0xe8(%rsp),%rdx
mov    0xe0(%rsp),%rcx
movss  0x9c(%rsp),%xmm15
movss  0xa0(%rsp),%xmm1
movss  0xa4(%rsp),%xmm2
mov    0x98(%rsp),%r8d
mov    0x1a0(%rsp),%ebx
movss  0xa8(%rsp),%xmm5
movss  0xac(%rsp),%xmm11
movss  0xb0(%rsp),%xmm10
movss  0xb4(%rsp),%xmm6
movss  0xb8(%rsp),%xmm7
mulss  0xc0(%rsp),%xmm0
addss  %xmm0,%xmm3
add    $0x1,%rbp
mov    0x1b0(%rsp),%eax
cmp    %rbp,%rax
jne    12a0 <contr_eri+0x190>
jmp    1260 <contr_eri+0x150>
xorps  %xmm3,%xmm3
movaps %xmm3,%xmm0
add    $0xf8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define float @contr_eri(i32 %0, float* %1, float* %2, float* %3, float %4, float %5, float %6, i32 %7, i32 %8, i32 %9, i32 %10, float* %11, float* %12, float* %13, float %14, float %15, float %16, i32 %17, i32 %18, i32 %19, i32 %20, float* %21, float* %22, float* %23, float %24, float %25, float %26, i32 %27, i32 %28, i32 %29, i32 %30, float* %31, float* %32, float* %33, float %34, float %35, float %36, i32 %37, i32 %38, i32 %39) {
%41 = alloca i32
%42 = alloca float*
%43 = alloca float*
%44 = alloca float*
%45 = alloca float
%46 = alloca float
%47 = alloca float
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca i32
%52 = alloca float*
%53 = alloca float*
%54 = alloca float*
%55 = alloca float
%56 = alloca float
%57 = alloca float
%58 = alloca i32
%59 = alloca i32
%60 = alloca i32
%61 = alloca i32
%62 = alloca float*
%63 = alloca float*
%64 = alloca float*
%65 = alloca float
%66 = alloca float
%67 = alloca float
%68 = alloca i32
%69 = alloca i32
%70 = alloca i32
%71 = alloca i32
%72 = alloca float*
%73 = alloca float*
%74 = alloca float*
%75 = alloca float
%76 = alloca float
%77 = alloca float
%78 = alloca i32
%79 = alloca i32
%80 = alloca i32
%81 = alloca float
%82 = alloca i32
%83 = alloca i32
%84 = alloca i32
%85 = alloca i32
%86 = alloca float
store i32 %0, i32* %41
store float* %1, float** %42
store float* %2, float** %43
store float* %3, float** %44
store float %4, float* %45
store float %5, float* %46
store float %6, float* %47
store i32 %7, i32* %48
store i32 %8, i32* %49
store i32 %9, i32* %50
store i32 %10, i32* %51
store float* %11, float** %52
store float* %12, float** %53
store float* %13, float** %54
store float %14, float* %55
store float %15, float* %56
store float %16, float* %57
store i32 %17, i32* %58
store i32 %18, i32* %59
store i32 %19, i32* %60
store i32 %20, i32* %61
store float* %21, float** %62
store float* %22, float** %63
store float* %23, float** %64
store float %24, float* %65
store float %25, float* %66
store float %26, float* %67
store i32 %27, i32* %68
store i32 %28, i32* %69
store i32 %29, i32* %70
store i32 %30, i32* %71
store float* %31, float** %72
store float* %32, float** %73
store float* %33, float** %74
store float %34, float* %75
store float %35, float* %76
store float %36, float* %77
store i32 %37, i32* %78
store i32 %38, i32* %79
store i32 %39, i32* %80
store float 0.000000e+00, float* %81
store i32 0, i32* %82
br label %87
87: ; preds = %211, %40
%88 = load i32, i32* %82
%89 = load i32, i32* %41
%90 = icmp slt i32 %88, %89
br i1 %90, label %91, label %214
91: ; preds = %87
store i32 0, i32* %83
br label %92
92: ; preds = %207, %91
%93 = load i32, i32* %83
%94 = load i32, i32* %51
%95 = icmp slt i32 %93, %94
br i1 %95, label %96, label %210
96: ; preds = %92
store i32 0, i32* %84
br label %97
97: ; preds = %203, %96
%98 = load i32, i32* %84
%99 = load i32, i32* %61
%100 = icmp slt i32 %98, %99
br i1 %100, label %101, label %206
101: ; preds = %97
store i32 0, i32* %85
br label %102
102: ; preds = %199, %101
%103 = load i32, i32* %85
%104 = load i32, i32* %71
%105 = icmp slt i32 %103, %104
br i1 %105, label %106, label %202
106: ; preds = %102
%107 = load float*, float** %43
%108 = load i32, i32* %82
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds float, float* %107, i64 %109
%111 = load float, float* %110
%112 = load float*, float** %53
%113 = load i32, i32* %83
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds float, float* %112, i64 %114
%116 = load float, float* %115
%117 = fmul float %111, %116
%118 = load float*, float** %63
%119 = load i32, i32* %84
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds float, float* %118, i64 %120
%122 = load float, float* %121
%123 = fmul float %117, %122
%124 = load float*, float** %73
%125 = load i32, i32* %85
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds float, float* %124, i64 %126
%128 = load float, float* %127
%129 = fmul float %123, %128
%130 = load float, float* %45
%131 = load float, float* %46
%132 = load float, float* %47
%133 = load float*, float** %44
%134 = load i32, i32* %82
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds float, float* %133, i64 %135
%137 = load float, float* %136
%138 = load i32, i32* %48
%139 = load i32, i32* %49
%140 = load i32, i32* %50
%141 = load float*, float** %42
%142 = load i32, i32* %82
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds float, float* %141, i64 %143
%145 = load float, float* %144
%146 = load float, float* %55
%147 = load float, float* %56
%148 = load float, float* %57
%149 = load float*, float** %54
%150 = load i32, i32* %83
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds float, float* %149, i64 %151
%153 = load float, float* %152
%154 = load i32, i32* %58
%155 = load i32, i32* %59
%156 = load i32, i32* %60
%157 = load float*, float** %52
%158 = load i32, i32* %83
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds float, float* %157, i64 %159
%161 = load float, float* %160
%162 = load float, float* %65
%163 = load float, float* %66
%164 = load float, float* %67
%165 = load float*, float** %64
%166 = load i32, i32* %84
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds float, float* %165, i64 %167
%169 = load float, float* %168
%170 = load i32, i32* %68
%171 = load i32, i32* %69
%172 = load i32, i32* %70
%173 = load float*, float** %62
%174 = load i32, i32* %84
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds float, float* %173, i64 %175
%177 = load float, float* %176
%178 = load float, float* %75
%179 = load float, float* %76
%180 = load float, float* %77
%181 = load float*, float** %74
%182 = load i32, i32* %85
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds float, float* %181, i64 %183
%185 = load float, float* %184
%186 = load i32, i32* %78
%187 = load i32, i32* %79
%188 = load i32, i32* %80
%189 = load float*, float** %72
%190 = load i32, i32* %85
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds float, float* %189, i64 %191
%193 = load float, float* %192
%194 = call float @eri(float %130, float %131, float %132, float %137, i32 %138, i32 %139, i32 %140, float %145, float %146, float %147, float %148, float %153, i32 %154, i32 %155, i32 %156, float %161, float %162, float %163, float %164, float %169, i32 %170, i32 %171, i32 %172, float %177, float %178, float %179, float %180, float %185, i32 %186, i32 %187, i32 %188, float %193)
%195 = fmul float %129, %194
store float %195, float* %86
%196 = load float, float* %86
%197 = load float, float* %81
%198 = fadd float %197, %196
store float %198, float* %81
br label %199
199: ; preds = %106
%200 = load i32, i32* %85
%201 = add nsw i32 %200, 1
store i32 %201, i32* %85
br label %102
202: ; preds = %102
br label %203
203: ; preds = %202
%204 = load i32, i32* %84
%205 = add nsw i32 %204, 1
store i32 %205, i32* %84
br label %97
206: ; preds = %97
br label %207
207: ; preds = %206
%208 = load i32, i32* %83
%209 = add nsw i32 %208, 1
store i32 %209, i32* %83
br label %92
210: ; preds = %92
br label %211
211: ; preds = %210
%212 = load i32, i32* %82
%213 = add nsw i32 %212, 1
store i32 %213, i32* %82
br label %87
214: ; preds = %87
%215 = load float, float* %81
ret float %215
}

LLVM IR (-O2):
define float @contr_eri(i32 %0, float* nocapture %1, float* nocapture %2, float* nocapture %3, float %4, float %5, float %6, i32 %7, i32 %8, i32 %9, i32 %10, float* nocapture %11, float* nocapture %12, float* nocapture %13, float %14, float %15, float %16, i32 %17, i32 %18, i32 %19, i32 %20, float* nocapture %21, float* nocapture %22, float* nocapture %23, float %24, float %25, float %26, i32 %27, i32 %28, i32 %29, i32 %30, float* nocapture %31, float* nocapture %32, float* nocapture %33, float %34, float %35, float %36, i32 %37, i32 %38, i32 %39) {
%41 = icmp sgt i32 %0, 0
br i1 %41, label %42, label %109
42: ; preds = %40
%43 = icmp sgt i32 %10, 0
%44 = icmp sgt i32 %20, 0
%45 = icmp sgt i32 %30, 0
%46 = zext i32 %0 to i64
%47 = zext i32 %10 to i64
%48 = zext i32 %20 to i64
%49 = zext i32 %30 to i64
br label %50
50: ; preds = %42, %105
%51 = phi i64 [ 0, %42 ], [ %107, %105 ]
%52 = phi float [ 0.000000e+00, %42 ], [ %106, %105 ]
br i1 %43, label %53, label %105
53: ; preds = %50
%54 = getelementptr inbounds float, float* %2, i64 %51
%55 = getelementptr inbounds float, float* %3, i64 %51
%56 = getelementptr inbounds float, float* %1, i64 %51
br label %57
57: ; preds = %53, %101
%58 = phi i64 [ 0, %53 ], [ %103, %101 ]
%59 = phi float [ %52, %53 ], [ %102, %101 ]
br i1 %44, label %60, label %101
60: ; preds = %57
%61 = getelementptr inbounds float, float* %12, i64 %58
%62 = getelementptr inbounds float, float* %13, i64 %58
%63 = getelementptr inbounds float, float* %11, i64 %58
br label %64
64: ; preds = %60, %97
%65 = phi i64 [ 0, %60 ], [ %99, %97 ]
%66 = phi float [ %59, %60 ], [ %98, %97 ]
br i1 %45, label %67, label %97
67: ; preds = %64
%68 = getelementptr inbounds float, float* %22, i64 %65
%69 = getelementptr inbounds float, float* %23, i64 %65
%70 = getelementptr inbounds float, float* %21, i64 %65
br label %71
71: ; preds = %67, %71
%72 = phi i64 [ 0, %67 ], [ %95, %71 ]
%73 = phi float [ %66, %67 ], [ %94, %71 ]
%74 = load float, float* %54
%75 = load float, float* %61
%76 = fmul float %74, %75
%77 = load float, float* %68
%78 = fmul float %76, %77
%79 = getelementptr inbounds float, float* %32, i64 %72
%80 = load float, float* %79
%81 = fmul float %78, %80
%82 = load float, float* %55
%83 = load float, float* %56
%84 = load float, float* %62
%85 = load float, float* %63
%86 = load float, float* %69
%87 = load float, float* %70
%88 = getelementptr inbounds float, float* %33, i64 %72
%89 = load float, float* %88
%90 = getelementptr inbounds float, float* %31, i64 %72
%91 = load float, float* %90
%92 = tail call float @eri(float %4, float %5, float %6, float %82, i32 %7, i32 %8, i32 %9, float %83, float %14, float %15, float %16, float %84, i32 %17, i32 %18, i32 %19, float %85, float %24, float %25, float %26, float %86, i32 %27, i32 %28, i32 %29, float %87, float %34, float %35, float %36, float %89, i32 %37, i32 %38, i32 %39, float %91)
%93 = fmul float %81, %92
%94 = fadd float %73, %93
%95 = add nuw nsw i64 %72, 1
%96 = icmp eq i64 %95, %49
br i1 %96, label %97, label %71
97: ; preds = %71, %64
%98 = phi float [ %66, %64 ], [ %94, %71 ]
%99 = add nuw nsw i64 %65, 1
%100 = icmp eq i64 %99, %48
br i1 %100, label %101, label %64
101: ; preds = %97, %57
%102 = phi float [ %59, %57 ], [ %98, %97 ]
%103 = add nuw nsw i64 %58, 1
%104 = icmp eq i64 %103, %47
br i1 %104, label %105, label %57
105: ; preds = %101, %50
%106 = phi float [ %52, %50 ], [ %102, %101 ]
%107 = add nuw nsw i64 %51, 1
%108 = icmp eq i64 %107, %46
br i1 %108, label %109, label %50
109: ; preds = %105, %40
%110 = phi float [ 0.000000e+00, %40 ], [ %106, %105 ]
ret float %110
}