void cg_scale0(double *y, double *x, double s, int n) {
  int i, n5;
  n5 = n % 5;
  if (s == -((double)1)) {
    for (i = 0; i < n5; i++)
      y[i] = -x[i];
    for (; i < n;) {
      y[i] = -x[i];
      i++;
      y[i] = -x[i];
      i++;
      y[i] = -x[i];
      i++;
      y[i] = -x[i];
      i++;
      y[i] = -x[i];
      i++;
    }
  } else {
    for (i = 0; i < n5; i++)
      y[i] = s * x[i];
    for (; i < n;) {
      y[i] = s * x[i];
      i++;
      y[i] = s * x[i];
      i++;
      y[i] = s * x[i];
      i++;
      y[i] = s * x[i];
      i++;
      y[i] = s * x[i];
      i++;
    }
  }
  return;
}


x86 assembly (clang, -O0):
<cg_scale0>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movsd  %xmm0,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x24(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xed1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12ce <cg_scale0+0x1ce>
jp     12ce <cg_scale0+0x1ce>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1191 <cg_scale0+0x91>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1146 <cg_scale0+0x46>
jmp    1196 <cg_scale0+0x96>
mov    -0x20(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    12c9 <cg_scale0+0x1c9>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1196 <cg_scale0+0x96>
jmp    13f1 <cg_scale0+0x2f1>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    130e <cg_scale0+0x20e>
movsd  -0x18(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    12d5 <cg_scale0+0x1d5>
jmp    1313 <cg_scale0+0x213>
mov    -0x20(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    13ec <cg_scale0+0x2ec>
movsd  -0x18(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
movsd  -0x18(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
movsd  -0x18(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
movsd  -0x18(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
movsd  -0x18(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1313 <cg_scale0+0x213>
jmp    13f1 <cg_scale0+0x2f1>
pop    %rbp
ret

x86 assembly (clang, -O2):
<cg_scale0>:
movslq %edx,%r8
imul   $0x66666667,%r8,%rcx
mov    %rcx,%rax
shr    $0x3f,%rax
sar    $0x21,%rcx
add    %eax,%ecx
lea    (%rcx,%rcx,4),%eax
mov    %r8d,%ecx
sub    %eax,%ecx
ucomisd 0xed9(%rip),%xmm0
jne    11dc <cg_scale0+0xdc>
jp     11dc <cg_scale0+0xdc>
test   %ecx,%ecx
jle    126a <cg_scale0+0x16a>
movsd  (%rsi),%xmm0
xorpd  0xec9(%rip),%xmm0
movlpd %xmm0,(%rdi)
cmp    $0x1,%ecx
je     126c <cg_scale0+0x16c>
movsd  0x8(%rsi),%xmm0
xorpd  0xeaf(%rip),%xmm0
movlpd %xmm0,0x8(%rdi)
cmp    $0x2,%ecx
je     126c <cg_scale0+0x16c>
movsd  0x10(%rsi),%xmm0
xorpd  0xe94(%rip),%xmm0
movlpd %xmm0,0x10(%rdi)
cmp    $0x3,%ecx
je     126c <cg_scale0+0x16c>
movsd  0x18(%rsi),%xmm0
xorpd  0xe79(%rip),%xmm0
movlpd %xmm0,0x18(%rdi)
cmp    $0x4,%ecx
je     126c <cg_scale0+0x16c>
movsd  0x20(%rsi),%xmm0
movapd 0xe5e(%rip),%xmm1
xorpd  %xmm1,%xmm0
movlpd %xmm0,0x20(%rdi)
movsd  0x28(%rsi),%xmm0
xorpd  %xmm1,%xmm0
movlpd %xmm0,0x28(%rdi)
movsd  0x30(%rsi),%xmm0
xorpd  %xmm1,%xmm0
movlpd %xmm0,0x30(%rdi)
jmp    126c <cg_scale0+0x16c>
test   %ecx,%ecx
jle    12d9 <cg_scale0+0x1d9>
movsd  (%rsi),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%rdi)
cmp    $0x1,%ecx
je     12db <cg_scale0+0x1db>
movsd  0x8(%rsi),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rdi)
cmp    $0x2,%ecx
je     12db <cg_scale0+0x1db>
movsd  0x10(%rsi),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rdi)
cmp    $0x3,%ecx
je     12db <cg_scale0+0x1db>
movsd  0x18(%rsi),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rdi)
cmp    $0x4,%ecx
je     12db <cg_scale0+0x1db>
movsd  0x20(%rsi),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rdi)
movsd  0x28(%rsi),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x28(%rdi)
movsd  0x30(%rsi),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x30(%rdi)
jmp    12db <cg_scale0+0x1db>
xor    %ecx,%ecx
cmp    %edx,%ecx
jge    1347 <cg_scale0+0x247>
mov    %ecx,%ecx
movapd 0xd92(%rip),%xmm0
xchg   %ax,%ax
movsd  (%rsi,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
movlpd %xmm1,(%rdi,%rcx,8)
movsd  0x8(%rsi,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
movlpd %xmm1,0x8(%rdi,%rcx,8)
movsd  0x10(%rsi,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
movlpd %xmm1,0x10(%rdi,%rcx,8)
movsd  0x18(%rsi,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
movlpd %xmm1,0x18(%rdi,%rcx,8)
movsd  0x20(%rsi,%rcx,8),%xmm1
xorpd  %xmm0,%xmm1
movlpd %xmm1,0x20(%rdi,%rcx,8)
add    $0x5,%rcx
cmp    %r8,%rcx
jl     1280 <cg_scale0+0x180>
jmp    1347 <cg_scale0+0x247>
xor    %ecx,%ecx
cmp    %edx,%ecx
jge    1347 <cg_scale0+0x247>
mov    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  (%rsi,%rcx,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%rdi,%rcx,8)
movsd  0x8(%rsi,%rcx,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rdi,%rcx,8)
movsd  0x10(%rsi,%rcx,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rdi,%rcx,8)
movsd  0x18(%rsi,%rcx,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rdi,%rcx,8)
movsd  0x20(%rsi,%rcx,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rdi,%rcx,8)
add    $0x5,%rcx
cmp    %r8,%rcx
jl     12f0 <cg_scale0+0x1f0>
ret

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

LLVM IR (-O2):
define void @cg_scale0(double* nocapture writeonly %0, double* nocapture %1, double %2, i32 %3) {
%5 = srem i32 %3, 5
%6 = fcmp oeq double %2, -1.000000e+00
%7 = icmp sgt i32 %5, 0
br i1 %6, label %9, label %8
8: ; preds = %4
br i1 %7, label %85, label %79
9: ; preds = %4
br i1 %7, label %16, label %10
10: ; preds = %16, %20, %26, %32, %38, %9
%11 = phi i32 [ 0, %9 ], [ %5, %38 ], [ %5, %32 ], [ %5, %26 ], [ %5, %20 ], [ %5, %16 ]
%12 = icmp slt i32 %11, %3
br i1 %12, label %13, label %148
13: ; preds = %10
%14 = zext i32 %11 to i64
%15 = sext i32 %3 to i64
br label %51
16: ; preds = %9
%17 = load double, double* %1
%18 = fneg double %17
store double %18, double* %0
%19 = icmp eq i32 %5, 1
br i1 %19, label %10, label %20
20: ; preds = %16
%21 = getelementptr inbounds double, double* %1, i64 1
%22 = load double, double* %21
%23 = fneg double %22
%24 = getelementptr inbounds double, double* %0, i64 1
store double %23, double* %24
%25 = icmp eq i32 %5, 2
br i1 %25, label %10, label %26
26: ; preds = %20
%27 = getelementptr inbounds double, double* %1, i64 2
%28 = load double, double* %27
%29 = fneg double %28
%30 = getelementptr inbounds double, double* %0, i64 2
store double %29, double* %30
%31 = icmp eq i32 %5, 3
br i1 %31, label %10, label %32
32: ; preds = %26
%33 = getelementptr inbounds double, double* %1, i64 3
%34 = load double, double* %33
%35 = fneg double %34
%36 = getelementptr inbounds double, double* %0, i64 3
store double %35, double* %36
%37 = icmp eq i32 %5, 4
br i1 %37, label %10, label %38
38: ; preds = %32
%39 = getelementptr inbounds double, double* %1, i64 4
%40 = load double, double* %39
%41 = fneg double %40
%42 = getelementptr inbounds double, double* %0, i64 4
store double %41, double* %42
%43 = getelementptr inbounds double, double* %1, i64 5
%44 = load double, double* %43
%45 = fneg double %44
%46 = getelementptr inbounds double, double* %0, i64 5
store double %45, double* %46
%47 = getelementptr inbounds double, double* %1, i64 6
%48 = load double, double* %47
%49 = fneg double %48
%50 = getelementptr inbounds double, double* %0, i64 6
store double %49, double* %50
br label %10
51: ; preds = %13, %51
%52 = phi i64 [ %14, %13 ], [ %77, %51 ]
%53 = getelementptr inbounds double, double* %1, i64 %52
%54 = load double, double* %53
%55 = fneg double %54
%56 = getelementptr inbounds double, double* %0, i64 %52
store double %55, double* %56
%57 = add nuw nsw i64 %52, 1
%58 = getelementptr inbounds double, double* %1, i64 %57
%59 = load double, double* %58
%60 = fneg double %59
%61 = getelementptr inbounds double, double* %0, i64 %57
store double %60, double* %61
%62 = add nuw nsw i64 %52, 2
%63 = getelementptr inbounds double, double* %1, i64 %62
%64 = load double, double* %63
%65 = fneg double %64
%66 = getelementptr inbounds double, double* %0, i64 %62
store double %65, double* %66
%67 = add nuw nsw i64 %52, 3
%68 = getelementptr inbounds double, double* %1, i64 %67
%69 = load double, double* %68
%70 = fneg double %69
%71 = getelementptr inbounds double, double* %0, i64 %67
store double %70, double* %71
%72 = add nuw nsw i64 %52, 4
%73 = getelementptr inbounds double, double* %1, i64 %72
%74 = load double, double* %73
%75 = fneg double %74
%76 = getelementptr inbounds double, double* %0, i64 %72
store double %75, double* %76
%77 = add nuw nsw i64 %52, 5
%78 = icmp slt i64 %77, %15
br i1 %78, label %51, label %148
79: ; preds = %85, %89, %95, %101, %107, %8
%80 = phi i32 [ 0, %8 ], [ %5, %107 ], [ %5, %101 ], [ %5, %95 ], [ %5, %89 ], [ %5, %85 ]
%81 = icmp slt i32 %80, %3
br i1 %81, label %82, label %148
82: ; preds = %79
%83 = zext i32 %80 to i64
%84 = sext i32 %3 to i64
br label %120
85: ; preds = %8
%86 = load double, double* %1
%87 = fmul double %86, %2
store double %87, double* %0
%88 = icmp eq i32 %5, 1
br i1 %88, label %79, label %89
89: ; preds = %85
%90 = getelementptr inbounds double, double* %1, i64 1
%91 = load double, double* %90
%92 = fmul double %91, %2
%93 = getelementptr inbounds double, double* %0, i64 1
store double %92, double* %93
%94 = icmp eq i32 %5, 2
br i1 %94, label %79, label %95
95: ; preds = %89
%96 = getelementptr inbounds double, double* %1, i64 2
%97 = load double, double* %96
%98 = fmul double %97, %2
%99 = getelementptr inbounds double, double* %0, i64 2
store double %98, double* %99
%100 = icmp eq i32 %5, 3
br i1 %100, label %79, label %101
101: ; preds = %95
%102 = getelementptr inbounds double, double* %1, i64 3
%103 = load double, double* %102
%104 = fmul double %103, %2
%105 = getelementptr inbounds double, double* %0, i64 3
store double %104, double* %105
%106 = icmp eq i32 %5, 4
br i1 %106, label %79, label %107
107: ; preds = %101
%108 = getelementptr inbounds double, double* %1, i64 4
%109 = load double, double* %108
%110 = fmul double %109, %2
%111 = getelementptr inbounds double, double* %0, i64 4
store double %110, double* %111
%112 = getelementptr inbounds double, double* %1, i64 5
%113 = load double, double* %112
%114 = fmul double %113, %2
%115 = getelementptr inbounds double, double* %0, i64 5
store double %114, double* %115
%116 = getelementptr inbounds double, double* %1, i64 6
%117 = load double, double* %116
%118 = fmul double %117, %2
%119 = getelementptr inbounds double, double* %0, i64 6
store double %118, double* %119
br label %79
120: ; preds = %82, %120
%121 = phi i64 [ %83, %82 ], [ %146, %120 ]
%122 = getelementptr inbounds double, double* %1, i64 %121
%123 = load double, double* %122
%124 = fmul double %123, %2
%125 = getelementptr inbounds double, double* %0, i64 %121
store double %124, double* %125
%126 = add nuw nsw i64 %121, 1
%127 = getelementptr inbounds double, double* %1, i64 %126
%128 = load double, double* %127
%129 = fmul double %128, %2
%130 = getelementptr inbounds double, double* %0, i64 %126
store double %129, double* %130
%131 = add nuw nsw i64 %121, 2
%132 = getelementptr inbounds double, double* %1, i64 %131
%133 = load double, double* %132
%134 = fmul double %133, %2
%135 = getelementptr inbounds double, double* %0, i64 %131
store double %134, double* %135
%136 = add nuw nsw i64 %121, 3
%137 = getelementptr inbounds double, double* %1, i64 %136
%138 = load double, double* %137
%139 = fmul double %138, %2
%140 = getelementptr inbounds double, double* %0, i64 %136
store double %139, double* %140
%141 = add nuw nsw i64 %121, 4
%142 = getelementptr inbounds double, double* %1, i64 %141
%143 = load double, double* %142
%144 = fmul double %143, %2
%145 = getelementptr inbounds double, double* %0, i64 %141
store double %144, double* %145
%146 = add nuw nsw i64 %121, 5
%147 = icmp slt i64 %146, %84
br i1 %147, label %120, label %148
148: ; preds = %120, %51, %79, %10
ret void
}