#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 */
unsigned int strlen(char *);
double pvalue(char *seq, double *bases) {
  unsigned int i, k;
  double p = 1.0;
  k = strlen(seq);
  for (i = 0; i < k; i++) {
    if (seq[i] == 'A')
      p *= bases[0];
    if (seq[i] == 'C')
      p *= bases[1];
    if (seq[i] == 'G')
      p *= bases[2];
    if (seq[i] == 'T')
      p *= bases[3];
    if (seq[i] == 'a')
      p *= bases[0] * 0.8;
    if (seq[i] == 'c')
      p *= bases[1] * 0.8;
    if (seq[i] == 'g')
      p *= bases[2] * 0.8;
    if (seq[i] == 't')
      p *= bases[3] * 0.8;
    if (seq[i] == 'R')
      p *= (bases[0] + bases[2]);
    if (seq[i] == 'Y')
      p *= (bases[1] + bases[3]);
    if (seq[i] == 'S')
      p *= (bases[2] + bases[1]);
    if (seq[i] == 'W')
      p *= (bases[0] + bases[3]);
    if (seq[i] == 'K')
      p *= (bases[2] + bases[3]);
    if (seq[i] == 'M')
      p *= (bases[0] + bases[1]);
  }
  return (p);
}


x86 assembly (clang, -O0):
<pvalue>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movsd  0xed8(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jae    13d2 <pvalue+0x2c2>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jne    1172 <pvalue+0x62>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
jne    1199 <pvalue+0x89>
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x47,%eax
jne    11c0 <pvalue+0xb0>
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x54,%eax
jne    11e7 <pvalue+0xd7>
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jne    1215 <pvalue+0x105>
mov    -0x10(%rbp),%rax
movsd  0xe01(%rip),%xmm0
mulsd  (%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x63,%eax
jne    1244 <pvalue+0x134>
mov    -0x10(%rbp),%rax
movsd  0xdd3(%rip),%xmm0
mulsd  0x8(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x67,%eax
jne    1273 <pvalue+0x163>
mov    -0x10(%rbp),%rax
movsd  0xda4(%rip),%xmm0
mulsd  0x10(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
jne    12a2 <pvalue+0x192>
mov    -0x10(%rbp),%rax
movsd  0xd75(%rip),%xmm0
mulsd  0x18(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x52,%eax
jne    12d1 <pvalue+0x1c1>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x10(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x59,%eax
jne    1301 <pvalue+0x1f1>
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x53,%eax
jne    1331 <pvalue+0x221>
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x8(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x57,%eax
jne    1360 <pvalue+0x250>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4b,%eax
jne    1390 <pvalue+0x280>
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4d,%eax
jne    13bf <pvalue+0x2af>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x8(%rax),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    13c4 <pvalue+0x2b4>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1140 <pvalue+0x30>
movsd  -0x20(%rbp),%xmm0
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<pvalue>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%rbx
mov    %rdi,%r14
call   1030 <strlen@plt>
test   %eax,%eax
je     1201 <pvalue+0xf1>
mov    %eax,%eax
movsd  0xecf(%rip),%xmm0
xor    %ecx,%ecx
lea    0xed6(%rip),%rsi
movsd  0xec6(%rip),%xmm1
jmp    1161 <pvalue+0x51>
movsd  (%rbx),%xmm2
addsd  0x8(%rbx),%xmm2
nopl   (%rax)
mulsd  %xmm2,%xmm0
add    $0x1,%rcx
cmp    %rcx,%rax
je     1209 <pvalue+0xf9>
movzbl (%r14,%rcx,1),%edx
add    $0xbf,%dl
cmp    $0x33,%dl
ja     1154 <pvalue+0x44>
movzbl %dl,%edx
movslq (%rsi,%rdx,4),%rdx
add    %rsi,%rdx
jmp    *%rdx
mulsd  (%rbx),%xmm0
jmp    1154 <pvalue+0x44>
mulsd  0x8(%rbx),%xmm0
jmp    1154 <pvalue+0x44>
mulsd  0x10(%rbx),%xmm0
jmp    1154 <pvalue+0x44>
movsd  0x10(%rbx),%xmm2
addsd  0x18(%rbx),%xmm2
jmp    1150 <pvalue+0x40>
movsd  (%rbx),%xmm2
addsd  0x10(%rbx),%xmm2
jmp    1150 <pvalue+0x40>
movsd  0x10(%rbx),%xmm2
jmp    1148 <pvalue+0x38>
mulsd  0x18(%rbx),%xmm0
jmp    1154 <pvalue+0x44>
movsd  (%rbx),%xmm2
addsd  0x18(%rbx),%xmm2
jmp    1150 <pvalue+0x40>
movsd  0x8(%rbx),%xmm2
addsd  0x18(%rbx),%xmm2
jmp    1150 <pvalue+0x40>
movsd  (%rbx),%xmm2
mulsd  %xmm1,%xmm2
jmp    1150 <pvalue+0x40>
movsd  0x8(%rbx),%xmm2
mulsd  %xmm1,%xmm2
jmp    1150 <pvalue+0x40>
movsd  0x10(%rbx),%xmm2
mulsd  %xmm1,%xmm2
jmp    1150 <pvalue+0x40>
movsd  0x18(%rbx),%xmm2
mulsd  %xmm1,%xmm2
jmp    1150 <pvalue+0x40>
movsd  0xdf7(%rip),%xmm0
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
define double @pvalue(i8* %0, double* nocapture %1) {
%3 = tail call i32 @strlen(i8* %0)
%4 = icmp eq i32 %3, 0
br i1 %4, label %77, label %5
5: ; preds = %2
%6 = getelementptr inbounds double, double* %1, i64 1
%7 = getelementptr inbounds double, double* %1, i64 2
%8 = getelementptr inbounds double, double* %1, i64 3
%9 = zext i32 %3 to i64
br label %10
10: ; preds = %5, %73
%11 = phi i64 [ 0, %5 ], [ %75, %73 ]
%12 = phi double [ 1.000000e+00, %5 ], [ %74, %73 ]
%13 = getelementptr inbounds i8, i8* %0, i64 %11
%14 = load i8, i8* %13
switch i8 %14, label %73 [
i8 65, label %15
i8 67, label %18
i8 71, label %21
i8 84, label %24
i8 97, label %27
i8 99, label %31
i8 103, label %35
i8 116, label %39
i8 82, label %43
i8 89, label %48
i8 83, label %53
i8 87, label %58
i8 75, label %63
i8 77, label %68
]
15: ; preds = %10
%16 = load double, double* %1
%17 = fmul double %12, %16
br label %73
18: ; preds = %10
%19 = load double, double* %6
%20 = fmul double %12, %19
br label %73
21: ; preds = %10
%22 = load double, double* %7
%23 = fmul double %12, %22
br label %73
24: ; preds = %10
%25 = load double, double* %8
%26 = fmul double %12, %25
br label %73
27: ; preds = %10
%28 = load double, double* %1
%29 = fmul double %28, 8.000000e-01
%30 = fmul double %12, %29
br label %73
31: ; preds = %10
%32 = load double, double* %6
%33 = fmul double %32, 8.000000e-01
%34 = fmul double %12, %33
br label %73
35: ; preds = %10
%36 = load double, double* %7
%37 = fmul double %36, 8.000000e-01
%38 = fmul double %12, %37
br label %73
39: ; preds = %10
%40 = load double, double* %8
%41 = fmul double %40, 8.000000e-01
%42 = fmul double %12, %41
br label %73
43: ; preds = %10
%44 = load double, double* %1
%45 = load double, double* %7
%46 = fadd double %44, %45
%47 = fmul double %12, %46
br label %73
48: ; preds = %10
%49 = load double, double* %6
%50 = load double, double* %8
%51 = fadd double %49, %50
%52 = fmul double %12, %51
br label %73
53: ; preds = %10
%54 = load double, double* %7
%55 = load double, double* %6
%56 = fadd double %54, %55
%57 = fmul double %12, %56
br label %73
58: ; preds = %10
%59 = load double, double* %1
%60 = load double, double* %8
%61 = fadd double %59, %60
%62 = fmul double %12, %61
br label %73
63: ; preds = %10
%64 = load double, double* %7
%65 = load double, double* %8
%66 = fadd double %64, %65
%67 = fmul double %12, %66
br label %73
68: ; preds = %10
%69 = load double, double* %1
%70 = load double, double* %6
%71 = fadd double %69, %70
%72 = fmul double %12, %71
br label %73
73: ; preds = %10, %18, %15, %21, %24, %27, %31, %35, %43, %39, %53, %48, %58, %63, %68
%74 = phi double [ %72, %68 ], [ %67, %63 ], [ %62, %58 ], [ %52, %48 ], [ %57, %53 ], [ %42, %39 ], [ %47, %43 ], [ %38, %35 ], [ %34, %31 ], [ %30, %27 ], [ %26, %24 ], [ %23, %21 ], [ %17, %15 ], [ %20, %18 ], [ %12, %10 ]
%75 = add nuw nsw i64 %11, 1
%76 = icmp eq i64 %75, %9
br i1 %76, label %77, label %10
77: ; preds = %73, %2
%78 = phi double [ 1.000000e+00, %2 ], [ %74, %73 ]
ret double %78
}