int ls_costN_nm2_f0(const double **arg, double **res, int *iw, double *w,
                    int mem) {
  double a0 = arg[0] ? arg[0][0] : 0;
  if (res[0] != 0)
    res[0][0] = a0;
  a0 = arg[0] ? arg[0][1] : 0;
  if (res[0] != 0)
    res[0][1] = a0;
  a0 = arg[0] ? arg[0][2] : 0;
  if (res[0] != 0)
    res[0][2] = a0;
  a0 = arg[0] ? arg[0][3] : 0;
  if (res[0] != 0)
    res[0][3] = a0;
  a0 = arg[0] ? arg[0][4] : 0;
  if (res[0] != 0)
    res[0][4] = a0;
  a0 = arg[0] ? arg[0][5] : 0;
  if (res[0] != 0)
    res[0][5] = a0;
  a0 = 1.;
  if (res[1] != 0)
    res[1][0] = a0;
  if (res[1] != 0)
    res[1][1] = a0;
  if (res[1] != 0)
    res[1][2] = a0;
  if (res[1] != 0)
    res[1][3] = a0;
  if (res[1] != 0)
    res[1][4] = a0;
  if (res[1] != 0)
    res[1][5] = a0;
  return 0;
}


x86 assembly (clang, -O0):
<ls_costN_nm2_f0>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     113b <ls_costN_nm2_f0+0x3b>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
jmp    1148 <ls_costN_nm2_f0+0x48>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
jmp    1148 <ls_costN_nm2_f0+0x48>
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     1170 <ls_costN_nm2_f0+0x70>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     1194 <ls_costN_nm2_f0+0x94>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    11a1 <ls_costN_nm2_f0+0xa1>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    11a1 <ls_costN_nm2_f0+0xa1>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     11ca <ls_costN_nm2_f0+0xca>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     11ee <ls_costN_nm2_f0+0xee>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    11fb <ls_costN_nm2_f0+0xfb>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    11fb <ls_costN_nm2_f0+0xfb>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     1224 <ls_costN_nm2_f0+0x124>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     1248 <ls_costN_nm2_f0+0x148>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    1255 <ls_costN_nm2_f0+0x155>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    1255 <ls_costN_nm2_f0+0x155>
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     127e <ls_costN_nm2_f0+0x17e>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     12a2 <ls_costN_nm2_f0+0x1a2>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    12af <ls_costN_nm2_f0+0x1af>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    12af <ls_costN_nm2_f0+0x1af>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     12d8 <ls_costN_nm2_f0+0x1d8>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     12fc <ls_costN_nm2_f0+0x1fc>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1309 <ls_costN_nm2_f0+0x209>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1309 <ls_costN_nm2_f0+0x209>
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     1332 <ls_costN_nm2_f0+0x232>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x28(%rax)
movsd  0xcc6(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     135f <ls_costN_nm2_f0+0x25f>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1380 <ls_costN_nm2_f0+0x280>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     13a1 <ls_costN_nm2_f0+0x2a1>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     13c2 <ls_costN_nm2_f0+0x2c2>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     13e3 <ls_costN_nm2_f0+0x2e3>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1404 <ls_costN_nm2_f0+0x304>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x28(%rax)
xor    %eax,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<ls_costN_nm2_f0>:
mov    (%rdi),%rax
test   %rax,%rax
je     110e <ls_costN_nm2_f0+0xe>
movsd  (%rax),%xmm0
jmp    1111 <ls_costN_nm2_f0+0x11>
xorps  %xmm0,%xmm0
mov    (%rsi),%rcx
test   %rcx,%rcx
je     111d <ls_costN_nm2_f0+0x1d>
movsd  %xmm0,(%rcx)
test   %rax,%rax
je     119f <ls_costN_nm2_f0+0x9f>
movsd  0x8(%rax),%xmm0
test   %rcx,%rcx
je     1131 <ls_costN_nm2_f0+0x31>
movsd  %xmm0,0x8(%rcx)
test   %rax,%rax
je     11a9 <ls_costN_nm2_f0+0xa9>
movsd  0x10(%rax),%xmm0
test   %rcx,%rcx
je     1145 <ls_costN_nm2_f0+0x45>
movsd  %xmm0,0x10(%rcx)
test   %rax,%rax
je     11b3 <ls_costN_nm2_f0+0xb3>
movsd  0x18(%rax),%xmm0
test   %rcx,%rcx
je     1159 <ls_costN_nm2_f0+0x59>
movsd  %xmm0,0x18(%rcx)
test   %rax,%rax
je     11bd <ls_costN_nm2_f0+0xbd>
movsd  0x20(%rax),%xmm0
test   %rcx,%rcx
je     116d <ls_costN_nm2_f0+0x6d>
movsd  %xmm0,0x20(%rcx)
test   %rax,%rax
je     11c7 <ls_costN_nm2_f0+0xc7>
movsd  0x28(%rax),%xmm0
test   %rcx,%rcx
je     1181 <ls_costN_nm2_f0+0x81>
movsd  %xmm0,0x28(%rcx)
mov    0x8(%rsi),%rax
test   %rax,%rax
je     119c <ls_costN_nm2_f0+0x9c>
movaps 0xe6f(%rip),%xmm0
movups %xmm0,(%rax)
movups %xmm0,0x10(%rax)
movups %xmm0,0x20(%rax)
xor    %eax,%eax
ret
xorps  %xmm0,%xmm0
test   %rcx,%rcx
jne    112c <ls_costN_nm2_f0+0x2c>
jmp    1131 <ls_costN_nm2_f0+0x31>
xorps  %xmm0,%xmm0
test   %rcx,%rcx
jne    1140 <ls_costN_nm2_f0+0x40>
jmp    1145 <ls_costN_nm2_f0+0x45>
xorps  %xmm0,%xmm0
test   %rcx,%rcx
jne    1154 <ls_costN_nm2_f0+0x54>
jmp    1159 <ls_costN_nm2_f0+0x59>
xorps  %xmm0,%xmm0
test   %rcx,%rcx
jne    1168 <ls_costN_nm2_f0+0x68>
jmp    116d <ls_costN_nm2_f0+0x6d>
xorps  %xmm0,%xmm0
test   %rcx,%rcx
jne    117c <ls_costN_nm2_f0+0x7c>
jmp    1181 <ls_costN_nm2_f0+0x81>

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

LLVM IR (-O2):
define i32 @ls_costN_nm2_f0(double** nocapture %0, double** nocapture %1, i32* nocapture readnone %2, double* nocapture readnone %3, i32 %4) {
%6 = load double*, double** %0
%7 = icmp eq double* %6, null
br i1 %7, label %10, label %8
8: ; preds = %5
%9 = load double, double* %6
br label %10
10: ; preds = %5, %8
%11 = phi double [ %9, %8 ], [ 0.000000e+00, %5 ]
%12 = load double*, double** %1
%13 = icmp eq double* %12, null
br i1 %13, label %15, label %14
14: ; preds = %10
store double %11, double* %12
br label %15
15: ; preds = %14, %10
br i1 %7, label %19, label %16
16: ; preds = %15
%17 = getelementptr inbounds double, double* %6, i64 1
%18 = load double, double* %17
br label %19
19: ; preds = %15, %16
%20 = phi double [ %18, %16 ], [ 0.000000e+00, %15 ]
br i1 %13, label %23, label %21
21: ; preds = %19
%22 = getelementptr inbounds double, double* %12, i64 1
store double %20, double* %22
br label %23
23: ; preds = %21, %19
br i1 %7, label %27, label %24
24: ; preds = %23
%25 = getelementptr inbounds double, double* %6, i64 2
%26 = load double, double* %25
br label %27
27: ; preds = %23, %24
%28 = phi double [ %26, %24 ], [ 0.000000e+00, %23 ]
br i1 %13, label %31, label %29
29: ; preds = %27
%30 = getelementptr inbounds double, double* %12, i64 2
store double %28, double* %30
br label %31
31: ; preds = %29, %27
br i1 %7, label %35, label %32
32: ; preds = %31
%33 = getelementptr inbounds double, double* %6, i64 3
%34 = load double, double* %33
br label %35
35: ; preds = %31, %32
%36 = phi double [ %34, %32 ], [ 0.000000e+00, %31 ]
br i1 %13, label %39, label %37
37: ; preds = %35
%38 = getelementptr inbounds double, double* %12, i64 3
store double %36, double* %38
br label %39
39: ; preds = %37, %35
br i1 %7, label %43, label %40
40: ; preds = %39
%41 = getelementptr inbounds double, double* %6, i64 4
%42 = load double, double* %41
br label %43
43: ; preds = %39, %40
%44 = phi double [ %42, %40 ], [ 0.000000e+00, %39 ]
br i1 %13, label %47, label %45
45: ; preds = %43
%46 = getelementptr inbounds double, double* %12, i64 4
store double %44, double* %46
br label %47
47: ; preds = %45, %43
br i1 %7, label %51, label %48
48: ; preds = %47
%49 = getelementptr inbounds double, double* %6, i64 5
%50 = load double, double* %49
br label %51
51: ; preds = %47, %48
%52 = phi double [ %50, %48 ], [ 0.000000e+00, %47 ]
br i1 %13, label %55, label %53
53: ; preds = %51
%54 = getelementptr inbounds double, double* %12, i64 5
store double %52, double* %54
br label %55
55: ; preds = %53, %51
%56 = getelementptr inbounds double*, double** %1, i64 1
%57 = load double*, double** %56
%58 = icmp eq double* %57, null
br i1 %58, label %65, label %59
59: ; preds = %55
%60 = bitcast double* %57 to <2 x double>*
store <2 x double> <double 1.000000e+00, double 1.000000e+00>, <2 x double>* %60
%61 = getelementptr inbounds double, double* %57, i64 2
%62 = bitcast double* %61 to <2 x double>*
store <2 x double> <double 1.000000e+00, double 1.000000e+00>, <2 x double>* %62
%63 = getelementptr inbounds double, double* %57, i64 4
%64 = bitcast double* %63 to <2 x double>*
store <2 x double> <double 1.000000e+00, double 1.000000e+00>, <2 x double>* %64
br label %65
65: ; preds = %55, %59
ret i32 0
}