; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dla_syrpvgrw)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local double @dla_syrpvgrw_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) #0 {
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  store ptr %8, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  %39 = load ptr, ptr %14, align 8, !tbaa !5
  %40 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %40, ptr %19, align 4, !tbaa !9
  %41 = load i32, ptr %19, align 4, !tbaa !9
  %42 = mul nsw i32 %41, 1
  %43 = add nsw i32 1, %42
  store i32 %43, ptr %20, align 4, !tbaa !9
  %44 = load i32, ptr %20, align 4, !tbaa !9
  %45 = load ptr, ptr %13, align 8, !tbaa !5
  %46 = sext i32 %44 to i64
  %47 = sub i64 0, %46
  %48 = getelementptr inbounds double, ptr %45, i64 %47
  store ptr %48, ptr %13, align 8, !tbaa !5
  %49 = load ptr, ptr %16, align 8, !tbaa !5
  %50 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %50, ptr %21, align 4, !tbaa !9
  %51 = load i32, ptr %21, align 4, !tbaa !9
  %52 = mul nsw i32 %51, 1
  %53 = add nsw i32 1, %52
  store i32 %53, ptr %22, align 4, !tbaa !9
  %54 = load i32, ptr %22, align 4, !tbaa !9
  %55 = load ptr, ptr %15, align 8, !tbaa !5
  %56 = sext i32 %54 to i64
  %57 = sub i64 0, %56
  %58 = getelementptr inbounds double, ptr %55, i64 %57
  store ptr %58, ptr %15, align 8, !tbaa !5
  %59 = load ptr, ptr %17, align 8, !tbaa !5
  %60 = getelementptr inbounds i32, ptr %59, i32 -1
  store ptr %60, ptr %17, align 8, !tbaa !5
  %61 = load ptr, ptr %18, align 8, !tbaa !5
  %62 = getelementptr inbounds double, ptr %61, i32 -1
  store ptr %62, ptr %18, align 8, !tbaa !5
  %63 = load ptr, ptr %10, align 8, !tbaa !5
  %64 = call i32 @lsame_(ptr noundef @.str, ptr noundef %63)
  store i32 %64, ptr %35, align 4, !tbaa !9
  %65 = load ptr, ptr %12, align 8, !tbaa !5
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %68, label %76

68:                                               ; preds = %9
  %69 = load i32, ptr %35, align 4, !tbaa !9
  %70 = icmp ne i32 %69, 0
  br i1 %70, label %71, label %72

71:                                               ; preds = %68
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %75

72:                                               ; preds = %68
  %73 = load ptr, ptr %11, align 8, !tbaa !5
  %74 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %74, ptr %34, align 4, !tbaa !9
  br label %75

75:                                               ; preds = %72, %71
  br label %79

76:                                               ; preds = %9
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = load i32, ptr %77, align 4, !tbaa !9
  store i32 %78, ptr %34, align 4, !tbaa !9
  br label %79

79:                                               ; preds = %76, %75
  store double 1.000000e+00, ptr %37, align 8, !tbaa !11
  %80 = load ptr, ptr %11, align 8, !tbaa !5
  %81 = load i32, ptr %80, align 4, !tbaa !9
  %82 = shl i32 %81, 1
  store i32 %82, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %83

83:                                               ; preds = %92, %79
  %84 = load i32, ptr %31, align 4, !tbaa !9
  %85 = load i32, ptr %23, align 4, !tbaa !9
  %86 = icmp sle i32 %84, %85
  br i1 %86, label %87, label %95

87:                                               ; preds = %83
  %88 = load ptr, ptr %18, align 8, !tbaa !5
  %89 = load i32, ptr %31, align 4, !tbaa !9
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds double, ptr %88, i64 %90
  store double 0.000000e+00, ptr %91, align 8, !tbaa !11
  br label %92

92:                                               ; preds = %87
  %93 = load i32, ptr %31, align 4, !tbaa !9
  %94 = add nsw i32 %93, 1
  store i32 %94, ptr %31, align 4, !tbaa !9
  br label %83, !llvm.loop !13

95:                                               ; preds = %83
  %96 = load i32, ptr %35, align 4, !tbaa !9
  %97 = icmp ne i32 %96, 0
  br i1 %97, label %98, label %204

98:                                               ; preds = %95
  %99 = load ptr, ptr %11, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  store i32 %100, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %101

101:                                              ; preds = %200, %98
  %102 = load i32, ptr %32, align 4, !tbaa !9
  %103 = load i32, ptr %23, align 4, !tbaa !9
  %104 = icmp sle i32 %102, %103
  br i1 %104, label %105, label %203

105:                                              ; preds = %101
  %106 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %106, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %107

107:                                              ; preds = %196, %105
  %108 = load i32, ptr %31, align 4, !tbaa !9
  %109 = load i32, ptr %24, align 4, !tbaa !9
  %110 = icmp sle i32 %108, %109
  br i1 %110, label %111, label %199

111:                                              ; preds = %107
  %112 = load ptr, ptr %13, align 8, !tbaa !5
  %113 = load i32, ptr %31, align 4, !tbaa !9
  %114 = load i32, ptr %32, align 4, !tbaa !9
  %115 = load i32, ptr %19, align 4, !tbaa !9
  %116 = mul nsw i32 %114, %115
  %117 = add nsw i32 %113, %116
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds double, ptr %112, i64 %118
  %120 = load double, ptr %119, align 8, !tbaa !11
  store double %120, ptr %26, align 8, !tbaa !11
  %121 = load double, ptr %26, align 8, !tbaa !11
  %122 = fcmp oge double %121, 0.000000e+00
  br i1 %122, label %123, label %125

123:                                              ; preds = %111
  %124 = load double, ptr %26, align 8, !tbaa !11
  br label %128

125:                                              ; preds = %111
  %126 = load double, ptr %26, align 8, !tbaa !11
  %127 = fneg double %126
  br label %128

128:                                              ; preds = %125, %123
  %129 = phi double [ %124, %123 ], [ %127, %125 ]
  store double %129, ptr %27, align 8, !tbaa !11
  %130 = load ptr, ptr %18, align 8, !tbaa !5
  %131 = load ptr, ptr %11, align 8, !tbaa !5
  %132 = load i32, ptr %131, align 4, !tbaa !9
  %133 = load i32, ptr %31, align 4, !tbaa !9
  %134 = add nsw i32 %132, %133
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds double, ptr %130, i64 %135
  %137 = load double, ptr %136, align 8, !tbaa !11
  store double %137, ptr %28, align 8, !tbaa !11
  %138 = load double, ptr %27, align 8, !tbaa !11
  %139 = load double, ptr %28, align 8, !tbaa !11
  %140 = fcmp oge double %138, %139
  br i1 %140, label %141, label %143

141:                                              ; preds = %128
  %142 = load double, ptr %27, align 8, !tbaa !11
  br label %145

143:                                              ; preds = %128
  %144 = load double, ptr %28, align 8, !tbaa !11
  br label %145

145:                                              ; preds = %143, %141
  %146 = phi double [ %142, %141 ], [ %144, %143 ]
  %147 = load ptr, ptr %18, align 8, !tbaa !5
  %148 = load ptr, ptr %11, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = load i32, ptr %31, align 4, !tbaa !9
  %151 = add nsw i32 %149, %150
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds double, ptr %147, i64 %152
  store double %146, ptr %153, align 8, !tbaa !11
  %154 = load ptr, ptr %13, align 8, !tbaa !5
  %155 = load i32, ptr %31, align 4, !tbaa !9
  %156 = load i32, ptr %32, align 4, !tbaa !9
  %157 = load i32, ptr %19, align 4, !tbaa !9
  %158 = mul nsw i32 %156, %157
  %159 = add nsw i32 %155, %158
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds double, ptr %154, i64 %160
  %162 = load double, ptr %161, align 8, !tbaa !11
  store double %162, ptr %26, align 8, !tbaa !11
  %163 = load double, ptr %26, align 8, !tbaa !11
  %164 = fcmp oge double %163, 0.000000e+00
  br i1 %164, label %165, label %167

165:                                              ; preds = %145
  %166 = load double, ptr %26, align 8, !tbaa !11
  br label %170

167:                                              ; preds = %145
  %168 = load double, ptr %26, align 8, !tbaa !11
  %169 = fneg double %168
  br label %170

170:                                              ; preds = %167, %165
  %171 = phi double [ %166, %165 ], [ %169, %167 ]
  store double %171, ptr %27, align 8, !tbaa !11
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = load ptr, ptr %11, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = load i32, ptr %32, align 4, !tbaa !9
  %176 = add nsw i32 %174, %175
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds double, ptr %172, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !11
  store double %179, ptr %28, align 8, !tbaa !11
  %180 = load double, ptr %27, align 8, !tbaa !11
  %181 = load double, ptr %28, align 8, !tbaa !11
  %182 = fcmp oge double %180, %181
  br i1 %182, label %183, label %185

183:                                              ; preds = %170
  %184 = load double, ptr %27, align 8, !tbaa !11
  br label %187

185:                                              ; preds = %170
  %186 = load double, ptr %28, align 8, !tbaa !11
  br label %187

187:                                              ; preds = %185, %183
  %188 = phi double [ %184, %183 ], [ %186, %185 ]
  %189 = load ptr, ptr %18, align 8, !tbaa !5
  %190 = load ptr, ptr %11, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = load i32, ptr %32, align 4, !tbaa !9
  %193 = add nsw i32 %191, %192
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds double, ptr %189, i64 %194
  store double %188, ptr %195, align 8, !tbaa !11
  br label %196

196:                                              ; preds = %187
  %197 = load i32, ptr %31, align 4, !tbaa !9
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr %31, align 4, !tbaa !9
  br label %107, !llvm.loop !15

199:                                              ; preds = %107
  br label %200

200:                                              ; preds = %199
  %201 = load i32, ptr %32, align 4, !tbaa !9
  %202 = add nsw i32 %201, 1
  store i32 %202, ptr %32, align 4, !tbaa !9
  br label %101, !llvm.loop !16

203:                                              ; preds = %101
  br label %312

204:                                              ; preds = %95
  %205 = load ptr, ptr %11, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  store i32 %206, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %308, %204
  %208 = load i32, ptr %32, align 4, !tbaa !9
  %209 = load i32, ptr %23, align 4, !tbaa !9
  %210 = icmp sle i32 %208, %209
  br i1 %210, label %211, label %311

211:                                              ; preds = %207
  %212 = load ptr, ptr %11, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  store i32 %213, ptr %24, align 4, !tbaa !9
  %214 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %214, ptr %31, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %304, %211
  %216 = load i32, ptr %31, align 4, !tbaa !9
  %217 = load i32, ptr %24, align 4, !tbaa !9
  %218 = icmp sle i32 %216, %217
  br i1 %218, label %219, label %307

219:                                              ; preds = %215
  %220 = load ptr, ptr %13, align 8, !tbaa !5
  %221 = load i32, ptr %31, align 4, !tbaa !9
  %222 = load i32, ptr %32, align 4, !tbaa !9
  %223 = load i32, ptr %19, align 4, !tbaa !9
  %224 = mul nsw i32 %222, %223
  %225 = add nsw i32 %221, %224
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds double, ptr %220, i64 %226
  %228 = load double, ptr %227, align 8, !tbaa !11
  store double %228, ptr %26, align 8, !tbaa !11
  %229 = load double, ptr %26, align 8, !tbaa !11
  %230 = fcmp oge double %229, 0.000000e+00
  br i1 %230, label %231, label %233

231:                                              ; preds = %219
  %232 = load double, ptr %26, align 8, !tbaa !11
  br label %236

233:                                              ; preds = %219
  %234 = load double, ptr %26, align 8, !tbaa !11
  %235 = fneg double %234
  br label %236

236:                                              ; preds = %233, %231
  %237 = phi double [ %232, %231 ], [ %235, %233 ]
  store double %237, ptr %27, align 8, !tbaa !11
  %238 = load ptr, ptr %18, align 8, !tbaa !5
  %239 = load ptr, ptr %11, align 8, !tbaa !5
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = load i32, ptr %31, align 4, !tbaa !9
  %242 = add nsw i32 %240, %241
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %238, i64 %243
  %245 = load double, ptr %244, align 8, !tbaa !11
  store double %245, ptr %28, align 8, !tbaa !11
  %246 = load double, ptr %27, align 8, !tbaa !11
  %247 = load double, ptr %28, align 8, !tbaa !11
  %248 = fcmp oge double %246, %247
  br i1 %248, label %249, label %251

249:                                              ; preds = %236
  %250 = load double, ptr %27, align 8, !tbaa !11
  br label %253

251:                                              ; preds = %236
  %252 = load double, ptr %28, align 8, !tbaa !11
  br label %253

253:                                              ; preds = %251, %249
  %254 = phi double [ %250, %249 ], [ %252, %251 ]
  %255 = load ptr, ptr %18, align 8, !tbaa !5
  %256 = load ptr, ptr %11, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = load i32, ptr %31, align 4, !tbaa !9
  %259 = add nsw i32 %257, %258
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds double, ptr %255, i64 %260
  store double %254, ptr %261, align 8, !tbaa !11
  %262 = load ptr, ptr %13, align 8, !tbaa !5
  %263 = load i32, ptr %31, align 4, !tbaa !9
  %264 = load i32, ptr %32, align 4, !tbaa !9
  %265 = load i32, ptr %19, align 4, !tbaa !9
  %266 = mul nsw i32 %264, %265
  %267 = add nsw i32 %263, %266
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds double, ptr %262, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !11
  store double %270, ptr %26, align 8, !tbaa !11
  %271 = load double, ptr %26, align 8, !tbaa !11
  %272 = fcmp oge double %271, 0.000000e+00
  br i1 %272, label %273, label %275

273:                                              ; preds = %253
  %274 = load double, ptr %26, align 8, !tbaa !11
  br label %278

275:                                              ; preds = %253
  %276 = load double, ptr %26, align 8, !tbaa !11
  %277 = fneg double %276
  br label %278

278:                                              ; preds = %275, %273
  %279 = phi double [ %274, %273 ], [ %277, %275 ]
  store double %279, ptr %27, align 8, !tbaa !11
  %280 = load ptr, ptr %18, align 8, !tbaa !5
  %281 = load ptr, ptr %11, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = load i32, ptr %32, align 4, !tbaa !9
  %284 = add nsw i32 %282, %283
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds double, ptr %280, i64 %285
  %287 = load double, ptr %286, align 8, !tbaa !11
  store double %287, ptr %28, align 8, !tbaa !11
  %288 = load double, ptr %27, align 8, !tbaa !11
  %289 = load double, ptr %28, align 8, !tbaa !11
  %290 = fcmp oge double %288, %289
  br i1 %290, label %291, label %293

291:                                              ; preds = %278
  %292 = load double, ptr %27, align 8, !tbaa !11
  br label %295

293:                                              ; preds = %278
  %294 = load double, ptr %28, align 8, !tbaa !11
  br label %295

295:                                              ; preds = %293, %291
  %296 = phi double [ %292, %291 ], [ %294, %293 ]
  %297 = load ptr, ptr %18, align 8, !tbaa !5
  %298 = load ptr, ptr %11, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = load i32, ptr %32, align 4, !tbaa !9
  %301 = add nsw i32 %299, %300
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds double, ptr %297, i64 %302
  store double %296, ptr %303, align 8, !tbaa !11
  br label %304

304:                                              ; preds = %295
  %305 = load i32, ptr %31, align 4, !tbaa !9
  %306 = add nsw i32 %305, 1
  store i32 %306, ptr %31, align 4, !tbaa !9
  br label %215, !llvm.loop !17

307:                                              ; preds = %215
  br label %308

308:                                              ; preds = %307
  %309 = load i32, ptr %32, align 4, !tbaa !9
  %310 = add nsw i32 %309, 1
  store i32 %310, ptr %32, align 4, !tbaa !9
  br label %207, !llvm.loop !18

311:                                              ; preds = %207
  br label %312

312:                                              ; preds = %311, %203
  %313 = load i32, ptr %35, align 4, !tbaa !9
  %314 = icmp ne i32 %313, 0
  br i1 %314, label %315, label %689

315:                                              ; preds = %312
  %316 = load ptr, ptr %11, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  store i32 %317, ptr %33, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %588, %315
  %319 = load i32, ptr %33, align 4, !tbaa !9
  %320 = load i32, ptr %34, align 4, !tbaa !9
  %321 = icmp slt i32 %319, %320
  br i1 %321, label %322, label %325

322:                                              ; preds = %318
  %323 = load i32, ptr %33, align 4, !tbaa !9
  %324 = icmp sgt i32 %323, 0
  br label %325

325:                                              ; preds = %322, %318
  %326 = phi i1 [ false, %318 ], [ %324, %322 ]
  br i1 %326, label %327, label %589

327:                                              ; preds = %325
  %328 = load ptr, ptr %17, align 8, !tbaa !5
  %329 = load i32, ptr %33, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds i32, ptr %328, i64 %330
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = icmp sgt i32 %332, 0
  br i1 %333, label %334, label %424

334:                                              ; preds = %327
  %335 = load ptr, ptr %17, align 8, !tbaa !5
  %336 = load i32, ptr %33, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds i32, ptr %335, i64 %337
  %339 = load i32, ptr %338, align 4, !tbaa !9
  store i32 %339, ptr %36, align 4, !tbaa !9
  %340 = load i32, ptr %36, align 4, !tbaa !9
  %341 = load i32, ptr %33, align 4, !tbaa !9
  %342 = icmp ne i32 %340, %341
  br i1 %342, label %343, label %375

343:                                              ; preds = %334
  %344 = load ptr, ptr %18, align 8, !tbaa !5
  %345 = load ptr, ptr %11, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = load i32, ptr %33, align 4, !tbaa !9
  %348 = add nsw i32 %346, %347
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds double, ptr %344, i64 %349
  %351 = load double, ptr %350, align 8, !tbaa !11
  store double %351, ptr %38, align 8, !tbaa !11
  %352 = load ptr, ptr %18, align 8, !tbaa !5
  %353 = load ptr, ptr %11, align 8, !tbaa !5
  %354 = load i32, ptr %353, align 4, !tbaa !9
  %355 = load i32, ptr %36, align 4, !tbaa !9
  %356 = add nsw i32 %354, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %352, i64 %357
  %359 = load double, ptr %358, align 8, !tbaa !11
  %360 = load ptr, ptr %18, align 8, !tbaa !5
  %361 = load ptr, ptr %11, align 8, !tbaa !5
  %362 = load i32, ptr %361, align 4, !tbaa !9
  %363 = load i32, ptr %33, align 4, !tbaa !9
  %364 = add nsw i32 %362, %363
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %360, i64 %365
  store double %359, ptr %366, align 8, !tbaa !11
  %367 = load double, ptr %38, align 8, !tbaa !11
  %368 = load ptr, ptr %18, align 8, !tbaa !5
  %369 = load ptr, ptr %11, align 8, !tbaa !5
  %370 = load i32, ptr %369, align 4, !tbaa !9
  %371 = load i32, ptr %36, align 4, !tbaa !9
  %372 = add nsw i32 %370, %371
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds double, ptr %368, i64 %373
  store double %367, ptr %374, align 8, !tbaa !11
  br label %375

375:                                              ; preds = %343, %334
  %376 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %376, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %377

377:                                              ; preds = %418, %375
  %378 = load i32, ptr %31, align 4, !tbaa !9
  %379 = load i32, ptr %23, align 4, !tbaa !9
  %380 = icmp sle i32 %378, %379
  br i1 %380, label %381, label %421

381:                                              ; preds = %377
  %382 = load ptr, ptr %15, align 8, !tbaa !5
  %383 = load i32, ptr %31, align 4, !tbaa !9
  %384 = load i32, ptr %33, align 4, !tbaa !9
  %385 = load i32, ptr %21, align 4, !tbaa !9
  %386 = mul nsw i32 %384, %385
  %387 = add nsw i32 %383, %386
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds double, ptr %382, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !11
  store double %390, ptr %26, align 8, !tbaa !11
  %391 = load double, ptr %26, align 8, !tbaa !11
  %392 = fcmp oge double %391, 0.000000e+00
  br i1 %392, label %393, label %395

393:                                              ; preds = %381
  %394 = load double, ptr %26, align 8, !tbaa !11
  br label %398

395:                                              ; preds = %381
  %396 = load double, ptr %26, align 8, !tbaa !11
  %397 = fneg double %396
  br label %398

398:                                              ; preds = %395, %393
  %399 = phi double [ %394, %393 ], [ %397, %395 ]
  store double %399, ptr %27, align 8, !tbaa !11
  %400 = load ptr, ptr %18, align 8, !tbaa !5
  %401 = load i32, ptr %33, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %400, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !11
  store double %404, ptr %28, align 8, !tbaa !11
  %405 = load double, ptr %27, align 8, !tbaa !11
  %406 = load double, ptr %28, align 8, !tbaa !11
  %407 = fcmp oge double %405, %406
  br i1 %407, label %408, label %410

408:                                              ; preds = %398
  %409 = load double, ptr %27, align 8, !tbaa !11
  br label %412

410:                                              ; preds = %398
  %411 = load double, ptr %28, align 8, !tbaa !11
  br label %412

412:                                              ; preds = %410, %408
  %413 = phi double [ %409, %408 ], [ %411, %410 ]
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = load i32, ptr %33, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %414, i64 %416
  store double %413, ptr %417, align 8, !tbaa !11
  br label %418

418:                                              ; preds = %412
  %419 = load i32, ptr %31, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %31, align 4, !tbaa !9
  br label %377, !llvm.loop !19

421:                                              ; preds = %377
  %422 = load i32, ptr %33, align 4, !tbaa !9
  %423 = add nsw i32 %422, -1
  store i32 %423, ptr %33, align 4, !tbaa !9
  br label %588

424:                                              ; preds = %327
  %425 = load ptr, ptr %17, align 8, !tbaa !5
  %426 = load i32, ptr %33, align 4, !tbaa !9
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds i32, ptr %425, i64 %427
  %429 = load i32, ptr %428, align 4, !tbaa !9
  %430 = sub nsw i32 0, %429
  store i32 %430, ptr %36, align 4, !tbaa !9
  %431 = load ptr, ptr %18, align 8, !tbaa !5
  %432 = load ptr, ptr %11, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  %434 = load i32, ptr %33, align 4, !tbaa !9
  %435 = add nsw i32 %433, %434
  %436 = sub nsw i32 %435, 1
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds double, ptr %431, i64 %437
  %439 = load double, ptr %438, align 8, !tbaa !11
  store double %439, ptr %38, align 8, !tbaa !11
  %440 = load ptr, ptr %18, align 8, !tbaa !5
  %441 = load ptr, ptr %11, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = load i32, ptr %36, align 4, !tbaa !9
  %444 = add nsw i32 %442, %443
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds double, ptr %440, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !11
  %448 = load ptr, ptr %18, align 8, !tbaa !5
  %449 = load ptr, ptr %11, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = load i32, ptr %33, align 4, !tbaa !9
  %452 = add nsw i32 %450, %451
  %453 = sub nsw i32 %452, 1
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %448, i64 %454
  store double %447, ptr %455, align 8, !tbaa !11
  %456 = load double, ptr %38, align 8, !tbaa !11
  %457 = load ptr, ptr %18, align 8, !tbaa !5
  %458 = load ptr, ptr %11, align 8, !tbaa !5
  %459 = load i32, ptr %458, align 4, !tbaa !9
  %460 = load i32, ptr %36, align 4, !tbaa !9
  %461 = add nsw i32 %459, %460
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds double, ptr %457, i64 %462
  store double %456, ptr %463, align 8, !tbaa !11
  %464 = load i32, ptr %33, align 4, !tbaa !9
  %465 = sub nsw i32 %464, 1
  store i32 %465, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %546, %424
  %467 = load i32, ptr %31, align 4, !tbaa !9
  %468 = load i32, ptr %23, align 4, !tbaa !9
  %469 = icmp sle i32 %467, %468
  br i1 %469, label %470, label %549

470:                                              ; preds = %466
  %471 = load ptr, ptr %15, align 8, !tbaa !5
  %472 = load i32, ptr %31, align 4, !tbaa !9
  %473 = load i32, ptr %33, align 4, !tbaa !9
  %474 = load i32, ptr %21, align 4, !tbaa !9
  %475 = mul nsw i32 %473, %474
  %476 = add nsw i32 %472, %475
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %471, i64 %477
  %479 = load double, ptr %478, align 8, !tbaa !11
  store double %479, ptr %26, align 8, !tbaa !11
  %480 = load double, ptr %26, align 8, !tbaa !11
  %481 = fcmp oge double %480, 0.000000e+00
  br i1 %481, label %482, label %484

482:                                              ; preds = %470
  %483 = load double, ptr %26, align 8, !tbaa !11
  br label %487

484:                                              ; preds = %470
  %485 = load double, ptr %26, align 8, !tbaa !11
  %486 = fneg double %485
  br label %487

487:                                              ; preds = %484, %482
  %488 = phi double [ %483, %482 ], [ %486, %484 ]
  store double %488, ptr %27, align 8, !tbaa !11
  %489 = load ptr, ptr %18, align 8, !tbaa !5
  %490 = load i32, ptr %33, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %489, i64 %491
  %493 = load double, ptr %492, align 8, !tbaa !11
  store double %493, ptr %28, align 8, !tbaa !11
  %494 = load double, ptr %27, align 8, !tbaa !11
  %495 = load double, ptr %28, align 8, !tbaa !11
  %496 = fcmp oge double %494, %495
  br i1 %496, label %497, label %499

497:                                              ; preds = %487
  %498 = load double, ptr %27, align 8, !tbaa !11
  br label %501

499:                                              ; preds = %487
  %500 = load double, ptr %28, align 8, !tbaa !11
  br label %501

501:                                              ; preds = %499, %497
  %502 = phi double [ %498, %497 ], [ %500, %499 ]
  %503 = load ptr, ptr %18, align 8, !tbaa !5
  %504 = load i32, ptr %33, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds double, ptr %503, i64 %505
  store double %502, ptr %506, align 8, !tbaa !11
  %507 = load ptr, ptr %15, align 8, !tbaa !5
  %508 = load i32, ptr %31, align 4, !tbaa !9
  %509 = load i32, ptr %33, align 4, !tbaa !9
  %510 = sub nsw i32 %509, 1
  %511 = load i32, ptr %21, align 4, !tbaa !9
  %512 = mul nsw i32 %510, %511
  %513 = add nsw i32 %508, %512
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds double, ptr %507, i64 %514
  %516 = load double, ptr %515, align 8, !tbaa !11
  store double %516, ptr %26, align 8, !tbaa !11
  %517 = load double, ptr %26, align 8, !tbaa !11
  %518 = fcmp oge double %517, 0.000000e+00
  br i1 %518, label %519, label %521

519:                                              ; preds = %501
  %520 = load double, ptr %26, align 8, !tbaa !11
  br label %524

521:                                              ; preds = %501
  %522 = load double, ptr %26, align 8, !tbaa !11
  %523 = fneg double %522
  br label %524

524:                                              ; preds = %521, %519
  %525 = phi double [ %520, %519 ], [ %523, %521 ]
  store double %525, ptr %27, align 8, !tbaa !11
  %526 = load ptr, ptr %18, align 8, !tbaa !5
  %527 = load i32, ptr %33, align 4, !tbaa !9
  %528 = sub nsw i32 %527, 1
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds double, ptr %526, i64 %529
  %531 = load double, ptr %530, align 8, !tbaa !11
  store double %531, ptr %28, align 8, !tbaa !11
  %532 = load double, ptr %27, align 8, !tbaa !11
  %533 = load double, ptr %28, align 8, !tbaa !11
  %534 = fcmp oge double %532, %533
  br i1 %534, label %535, label %537

535:                                              ; preds = %524
  %536 = load double, ptr %27, align 8, !tbaa !11
  br label %539

537:                                              ; preds = %524
  %538 = load double, ptr %28, align 8, !tbaa !11
  br label %539

539:                                              ; preds = %537, %535
  %540 = phi double [ %536, %535 ], [ %538, %537 ]
  %541 = load ptr, ptr %18, align 8, !tbaa !5
  %542 = load i32, ptr %33, align 4, !tbaa !9
  %543 = sub nsw i32 %542, 1
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %541, i64 %544
  store double %540, ptr %545, align 8, !tbaa !11
  br label %546

546:                                              ; preds = %539
  %547 = load i32, ptr %31, align 4, !tbaa !9
  %548 = add nsw i32 %547, 1
  store i32 %548, ptr %31, align 4, !tbaa !9
  br label %466, !llvm.loop !20

549:                                              ; preds = %466
  %550 = load ptr, ptr %15, align 8, !tbaa !5
  %551 = load i32, ptr %33, align 4, !tbaa !9
  %552 = load i32, ptr %33, align 4, !tbaa !9
  %553 = load i32, ptr %21, align 4, !tbaa !9
  %554 = mul nsw i32 %552, %553
  %555 = add nsw i32 %551, %554
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds double, ptr %550, i64 %556
  %558 = load double, ptr %557, align 8, !tbaa !11
  store double %558, ptr %26, align 8, !tbaa !11
  %559 = load double, ptr %26, align 8, !tbaa !11
  %560 = fcmp oge double %559, 0.000000e+00
  br i1 %560, label %561, label %563

561:                                              ; preds = %549
  %562 = load double, ptr %26, align 8, !tbaa !11
  br label %566

563:                                              ; preds = %549
  %564 = load double, ptr %26, align 8, !tbaa !11
  %565 = fneg double %564
  br label %566

566:                                              ; preds = %563, %561
  %567 = phi double [ %562, %561 ], [ %565, %563 ]
  store double %567, ptr %27, align 8, !tbaa !11
  %568 = load ptr, ptr %18, align 8, !tbaa !5
  %569 = load i32, ptr %33, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds double, ptr %568, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !11
  store double %572, ptr %28, align 8, !tbaa !11
  %573 = load double, ptr %27, align 8, !tbaa !11
  %574 = load double, ptr %28, align 8, !tbaa !11
  %575 = fcmp oge double %573, %574
  br i1 %575, label %576, label %578

576:                                              ; preds = %566
  %577 = load double, ptr %27, align 8, !tbaa !11
  br label %580

578:                                              ; preds = %566
  %579 = load double, ptr %28, align 8, !tbaa !11
  br label %580

580:                                              ; preds = %578, %576
  %581 = phi double [ %577, %576 ], [ %579, %578 ]
  %582 = load ptr, ptr %18, align 8, !tbaa !5
  %583 = load i32, ptr %33, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds double, ptr %582, i64 %584
  store double %581, ptr %585, align 8, !tbaa !11
  %586 = load i32, ptr %33, align 4, !tbaa !9
  %587 = add nsw i32 %586, -2
  store i32 %587, ptr %33, align 4, !tbaa !9
  br label %588

588:                                              ; preds = %580, %421
  br label %318, !llvm.loop !21

589:                                              ; preds = %325
  %590 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %590, ptr %33, align 4, !tbaa !9
  br label %591

591:                                              ; preds = %687, %589
  %592 = load i32, ptr %33, align 4, !tbaa !9
  %593 = load ptr, ptr %11, align 8, !tbaa !5
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = icmp sle i32 %592, %594
  br i1 %595, label %596, label %688

596:                                              ; preds = %591
  %597 = load ptr, ptr %17, align 8, !tbaa !5
  %598 = load i32, ptr %33, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds i32, ptr %597, i64 %599
  %601 = load i32, ptr %600, align 4, !tbaa !9
  %602 = icmp sgt i32 %601, 0
  br i1 %602, label %603, label %647

603:                                              ; preds = %596
  %604 = load ptr, ptr %17, align 8, !tbaa !5
  %605 = load i32, ptr %33, align 4, !tbaa !9
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds i32, ptr %604, i64 %606
  %608 = load i32, ptr %607, align 4, !tbaa !9
  store i32 %608, ptr %36, align 4, !tbaa !9
  %609 = load i32, ptr %36, align 4, !tbaa !9
  %610 = load i32, ptr %33, align 4, !tbaa !9
  %611 = icmp ne i32 %609, %610
  br i1 %611, label %612, label %644

612:                                              ; preds = %603
  %613 = load ptr, ptr %18, align 8, !tbaa !5
  %614 = load ptr, ptr %11, align 8, !tbaa !5
  %615 = load i32, ptr %614, align 4, !tbaa !9
  %616 = load i32, ptr %33, align 4, !tbaa !9
  %617 = add nsw i32 %615, %616
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds double, ptr %613, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !11
  store double %620, ptr %38, align 8, !tbaa !11
  %621 = load ptr, ptr %18, align 8, !tbaa !5
  %622 = load ptr, ptr %11, align 8, !tbaa !5
  %623 = load i32, ptr %622, align 4, !tbaa !9
  %624 = load i32, ptr %36, align 4, !tbaa !9
  %625 = add nsw i32 %623, %624
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %621, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !11
  %629 = load ptr, ptr %18, align 8, !tbaa !5
  %630 = load ptr, ptr %11, align 8, !tbaa !5
  %631 = load i32, ptr %630, align 4, !tbaa !9
  %632 = load i32, ptr %33, align 4, !tbaa !9
  %633 = add nsw i32 %631, %632
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %629, i64 %634
  store double %628, ptr %635, align 8, !tbaa !11
  %636 = load double, ptr %38, align 8, !tbaa !11
  %637 = load ptr, ptr %18, align 8, !tbaa !5
  %638 = load ptr, ptr %11, align 8, !tbaa !5
  %639 = load i32, ptr %638, align 4, !tbaa !9
  %640 = load i32, ptr %36, align 4, !tbaa !9
  %641 = add nsw i32 %639, %640
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds double, ptr %637, i64 %642
  store double %636, ptr %643, align 8, !tbaa !11
  br label %644

644:                                              ; preds = %612, %603
  %645 = load i32, ptr %33, align 4, !tbaa !9
  %646 = add nsw i32 %645, 1
  store i32 %646, ptr %33, align 4, !tbaa !9
  br label %687

647:                                              ; preds = %596
  %648 = load ptr, ptr %17, align 8, !tbaa !5
  %649 = load i32, ptr %33, align 4, !tbaa !9
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds i32, ptr %648, i64 %650
  %652 = load i32, ptr %651, align 4, !tbaa !9
  %653 = sub nsw i32 0, %652
  store i32 %653, ptr %36, align 4, !tbaa !9
  %654 = load ptr, ptr %18, align 8, !tbaa !5
  %655 = load ptr, ptr %11, align 8, !tbaa !5
  %656 = load i32, ptr %655, align 4, !tbaa !9
  %657 = load i32, ptr %33, align 4, !tbaa !9
  %658 = add nsw i32 %656, %657
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds double, ptr %654, i64 %659
  %661 = load double, ptr %660, align 8, !tbaa !11
  store double %661, ptr %38, align 8, !tbaa !11
  %662 = load ptr, ptr %18, align 8, !tbaa !5
  %663 = load ptr, ptr %11, align 8, !tbaa !5
  %664 = load i32, ptr %663, align 4, !tbaa !9
  %665 = load i32, ptr %36, align 4, !tbaa !9
  %666 = add nsw i32 %664, %665
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds double, ptr %662, i64 %667
  %669 = load double, ptr %668, align 8, !tbaa !11
  %670 = load ptr, ptr %18, align 8, !tbaa !5
  %671 = load ptr, ptr %11, align 8, !tbaa !5
  %672 = load i32, ptr %671, align 4, !tbaa !9
  %673 = load i32, ptr %33, align 4, !tbaa !9
  %674 = add nsw i32 %672, %673
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds double, ptr %670, i64 %675
  store double %669, ptr %676, align 8, !tbaa !11
  %677 = load double, ptr %38, align 8, !tbaa !11
  %678 = load ptr, ptr %18, align 8, !tbaa !5
  %679 = load ptr, ptr %11, align 8, !tbaa !5
  %680 = load i32, ptr %679, align 4, !tbaa !9
  %681 = load i32, ptr %36, align 4, !tbaa !9
  %682 = add nsw i32 %680, %681
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds double, ptr %678, i64 %683
  store double %677, ptr %684, align 8, !tbaa !11
  %685 = load i32, ptr %33, align 4, !tbaa !9
  %686 = add nsw i32 %685, 2
  store i32 %686, ptr %33, align 4, !tbaa !9
  br label %687

687:                                              ; preds = %647, %644
  br label %591, !llvm.loop !22

688:                                              ; preds = %591
  br label %1058

689:                                              ; preds = %312
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %690

690:                                              ; preds = %959, %689
  %691 = load i32, ptr %33, align 4, !tbaa !9
  %692 = load i32, ptr %34, align 4, !tbaa !9
  %693 = icmp sle i32 %691, %692
  br i1 %693, label %694, label %960

694:                                              ; preds = %690
  %695 = load ptr, ptr %17, align 8, !tbaa !5
  %696 = load i32, ptr %33, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds i32, ptr %695, i64 %697
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = icmp sgt i32 %699, 0
  br i1 %700, label %701, label %793

701:                                              ; preds = %694
  %702 = load ptr, ptr %17, align 8, !tbaa !5
  %703 = load i32, ptr %33, align 4, !tbaa !9
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds i32, ptr %702, i64 %704
  %706 = load i32, ptr %705, align 4, !tbaa !9
  store i32 %706, ptr %36, align 4, !tbaa !9
  %707 = load i32, ptr %36, align 4, !tbaa !9
  %708 = load i32, ptr %33, align 4, !tbaa !9
  %709 = icmp ne i32 %707, %708
  br i1 %709, label %710, label %742

710:                                              ; preds = %701
  %711 = load ptr, ptr %18, align 8, !tbaa !5
  %712 = load ptr, ptr %11, align 8, !tbaa !5
  %713 = load i32, ptr %712, align 4, !tbaa !9
  %714 = load i32, ptr %33, align 4, !tbaa !9
  %715 = add nsw i32 %713, %714
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds double, ptr %711, i64 %716
  %718 = load double, ptr %717, align 8, !tbaa !11
  store double %718, ptr %38, align 8, !tbaa !11
  %719 = load ptr, ptr %18, align 8, !tbaa !5
  %720 = load ptr, ptr %11, align 8, !tbaa !5
  %721 = load i32, ptr %720, align 4, !tbaa !9
  %722 = load i32, ptr %36, align 4, !tbaa !9
  %723 = add nsw i32 %721, %722
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds double, ptr %719, i64 %724
  %726 = load double, ptr %725, align 8, !tbaa !11
  %727 = load ptr, ptr %18, align 8, !tbaa !5
  %728 = load ptr, ptr %11, align 8, !tbaa !5
  %729 = load i32, ptr %728, align 4, !tbaa !9
  %730 = load i32, ptr %33, align 4, !tbaa !9
  %731 = add nsw i32 %729, %730
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %727, i64 %732
  store double %726, ptr %733, align 8, !tbaa !11
  %734 = load double, ptr %38, align 8, !tbaa !11
  %735 = load ptr, ptr %18, align 8, !tbaa !5
  %736 = load ptr, ptr %11, align 8, !tbaa !5
  %737 = load i32, ptr %736, align 4, !tbaa !9
  %738 = load i32, ptr %36, align 4, !tbaa !9
  %739 = add nsw i32 %737, %738
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds double, ptr %735, i64 %740
  store double %734, ptr %741, align 8, !tbaa !11
  br label %742

742:                                              ; preds = %710, %701
  %743 = load ptr, ptr %11, align 8, !tbaa !5
  %744 = load i32, ptr %743, align 4, !tbaa !9
  store i32 %744, ptr %23, align 4, !tbaa !9
  %745 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %745, ptr %31, align 4, !tbaa !9
  br label %746

746:                                              ; preds = %787, %742
  %747 = load i32, ptr %31, align 4, !tbaa !9
  %748 = load i32, ptr %23, align 4, !tbaa !9
  %749 = icmp sle i32 %747, %748
  br i1 %749, label %750, label %790

750:                                              ; preds = %746
  %751 = load ptr, ptr %15, align 8, !tbaa !5
  %752 = load i32, ptr %31, align 4, !tbaa !9
  %753 = load i32, ptr %33, align 4, !tbaa !9
  %754 = load i32, ptr %21, align 4, !tbaa !9
  %755 = mul nsw i32 %753, %754
  %756 = add nsw i32 %752, %755
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds double, ptr %751, i64 %757
  %759 = load double, ptr %758, align 8, !tbaa !11
  store double %759, ptr %26, align 8, !tbaa !11
  %760 = load double, ptr %26, align 8, !tbaa !11
  %761 = fcmp oge double %760, 0.000000e+00
  br i1 %761, label %762, label %764

762:                                              ; preds = %750
  %763 = load double, ptr %26, align 8, !tbaa !11
  br label %767

764:                                              ; preds = %750
  %765 = load double, ptr %26, align 8, !tbaa !11
  %766 = fneg double %765
  br label %767

767:                                              ; preds = %764, %762
  %768 = phi double [ %763, %762 ], [ %766, %764 ]
  store double %768, ptr %27, align 8, !tbaa !11
  %769 = load ptr, ptr %18, align 8, !tbaa !5
  %770 = load i32, ptr %33, align 4, !tbaa !9
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds double, ptr %769, i64 %771
  %773 = load double, ptr %772, align 8, !tbaa !11
  store double %773, ptr %28, align 8, !tbaa !11
  %774 = load double, ptr %27, align 8, !tbaa !11
  %775 = load double, ptr %28, align 8, !tbaa !11
  %776 = fcmp oge double %774, %775
  br i1 %776, label %777, label %779

777:                                              ; preds = %767
  %778 = load double, ptr %27, align 8, !tbaa !11
  br label %781

779:                                              ; preds = %767
  %780 = load double, ptr %28, align 8, !tbaa !11
  br label %781

781:                                              ; preds = %779, %777
  %782 = phi double [ %778, %777 ], [ %780, %779 ]
  %783 = load ptr, ptr %18, align 8, !tbaa !5
  %784 = load i32, ptr %33, align 4, !tbaa !9
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds double, ptr %783, i64 %785
  store double %782, ptr %786, align 8, !tbaa !11
  br label %787

787:                                              ; preds = %781
  %788 = load i32, ptr %31, align 4, !tbaa !9
  %789 = add nsw i32 %788, 1
  store i32 %789, ptr %31, align 4, !tbaa !9
  br label %746, !llvm.loop !23

790:                                              ; preds = %746
  %791 = load i32, ptr %33, align 4, !tbaa !9
  %792 = add nsw i32 %791, 1
  store i32 %792, ptr %33, align 4, !tbaa !9
  br label %959

793:                                              ; preds = %694
  %794 = load ptr, ptr %17, align 8, !tbaa !5
  %795 = load i32, ptr %33, align 4, !tbaa !9
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds i32, ptr %794, i64 %796
  %798 = load i32, ptr %797, align 4, !tbaa !9
  %799 = sub nsw i32 0, %798
  store i32 %799, ptr %36, align 4, !tbaa !9
  %800 = load ptr, ptr %18, align 8, !tbaa !5
  %801 = load ptr, ptr %11, align 8, !tbaa !5
  %802 = load i32, ptr %801, align 4, !tbaa !9
  %803 = load i32, ptr %33, align 4, !tbaa !9
  %804 = add nsw i32 %802, %803
  %805 = add nsw i32 %804, 1
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds double, ptr %800, i64 %806
  %808 = load double, ptr %807, align 8, !tbaa !11
  store double %808, ptr %38, align 8, !tbaa !11
  %809 = load ptr, ptr %18, align 8, !tbaa !5
  %810 = load ptr, ptr %11, align 8, !tbaa !5
  %811 = load i32, ptr %810, align 4, !tbaa !9
  %812 = load i32, ptr %36, align 4, !tbaa !9
  %813 = add nsw i32 %811, %812
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds double, ptr %809, i64 %814
  %816 = load double, ptr %815, align 8, !tbaa !11
  %817 = load ptr, ptr %18, align 8, !tbaa !5
  %818 = load ptr, ptr %11, align 8, !tbaa !5
  %819 = load i32, ptr %818, align 4, !tbaa !9
  %820 = load i32, ptr %33, align 4, !tbaa !9
  %821 = add nsw i32 %819, %820
  %822 = add nsw i32 %821, 1
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds double, ptr %817, i64 %823
  store double %816, ptr %824, align 8, !tbaa !11
  %825 = load double, ptr %38, align 8, !tbaa !11
  %826 = load ptr, ptr %18, align 8, !tbaa !5
  %827 = load ptr, ptr %11, align 8, !tbaa !5
  %828 = load i32, ptr %827, align 4, !tbaa !9
  %829 = load i32, ptr %36, align 4, !tbaa !9
  %830 = add nsw i32 %828, %829
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds double, ptr %826, i64 %831
  store double %825, ptr %832, align 8, !tbaa !11
  %833 = load ptr, ptr %11, align 8, !tbaa !5
  %834 = load i32, ptr %833, align 4, !tbaa !9
  store i32 %834, ptr %23, align 4, !tbaa !9
  %835 = load i32, ptr %33, align 4, !tbaa !9
  %836 = add nsw i32 %835, 1
  store i32 %836, ptr %31, align 4, !tbaa !9
  br label %837

837:                                              ; preds = %917, %793
  %838 = load i32, ptr %31, align 4, !tbaa !9
  %839 = load i32, ptr %23, align 4, !tbaa !9
  %840 = icmp sle i32 %838, %839
  br i1 %840, label %841, label %920

841:                                              ; preds = %837
  %842 = load ptr, ptr %15, align 8, !tbaa !5
  %843 = load i32, ptr %31, align 4, !tbaa !9
  %844 = load i32, ptr %33, align 4, !tbaa !9
  %845 = load i32, ptr %21, align 4, !tbaa !9
  %846 = mul nsw i32 %844, %845
  %847 = add nsw i32 %843, %846
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds double, ptr %842, i64 %848
  %850 = load double, ptr %849, align 8, !tbaa !11
  store double %850, ptr %26, align 8, !tbaa !11
  %851 = load double, ptr %26, align 8, !tbaa !11
  %852 = fcmp oge double %851, 0.000000e+00
  br i1 %852, label %853, label %855

853:                                              ; preds = %841
  %854 = load double, ptr %26, align 8, !tbaa !11
  br label %858

855:                                              ; preds = %841
  %856 = load double, ptr %26, align 8, !tbaa !11
  %857 = fneg double %856
  br label %858

858:                                              ; preds = %855, %853
  %859 = phi double [ %854, %853 ], [ %857, %855 ]
  store double %859, ptr %27, align 8, !tbaa !11
  %860 = load ptr, ptr %18, align 8, !tbaa !5
  %861 = load i32, ptr %33, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %860, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !11
  store double %864, ptr %28, align 8, !tbaa !11
  %865 = load double, ptr %27, align 8, !tbaa !11
  %866 = load double, ptr %28, align 8, !tbaa !11
  %867 = fcmp oge double %865, %866
  br i1 %867, label %868, label %870

868:                                              ; preds = %858
  %869 = load double, ptr %27, align 8, !tbaa !11
  br label %872

870:                                              ; preds = %858
  %871 = load double, ptr %28, align 8, !tbaa !11
  br label %872

872:                                              ; preds = %870, %868
  %873 = phi double [ %869, %868 ], [ %871, %870 ]
  %874 = load ptr, ptr %18, align 8, !tbaa !5
  %875 = load i32, ptr %33, align 4, !tbaa !9
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds double, ptr %874, i64 %876
  store double %873, ptr %877, align 8, !tbaa !11
  %878 = load ptr, ptr %15, align 8, !tbaa !5
  %879 = load i32, ptr %31, align 4, !tbaa !9
  %880 = load i32, ptr %33, align 4, !tbaa !9
  %881 = add nsw i32 %880, 1
  %882 = load i32, ptr %21, align 4, !tbaa !9
  %883 = mul nsw i32 %881, %882
  %884 = add nsw i32 %879, %883
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds double, ptr %878, i64 %885
  %887 = load double, ptr %886, align 8, !tbaa !11
  store double %887, ptr %26, align 8, !tbaa !11
  %888 = load double, ptr %26, align 8, !tbaa !11
  %889 = fcmp oge double %888, 0.000000e+00
  br i1 %889, label %890, label %892

890:                                              ; preds = %872
  %891 = load double, ptr %26, align 8, !tbaa !11
  br label %895

892:                                              ; preds = %872
  %893 = load double, ptr %26, align 8, !tbaa !11
  %894 = fneg double %893
  br label %895

895:                                              ; preds = %892, %890
  %896 = phi double [ %891, %890 ], [ %894, %892 ]
  store double %896, ptr %27, align 8, !tbaa !11
  %897 = load ptr, ptr %18, align 8, !tbaa !5
  %898 = load i32, ptr %33, align 4, !tbaa !9
  %899 = add nsw i32 %898, 1
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds double, ptr %897, i64 %900
  %902 = load double, ptr %901, align 8, !tbaa !11
  store double %902, ptr %28, align 8, !tbaa !11
  %903 = load double, ptr %27, align 8, !tbaa !11
  %904 = load double, ptr %28, align 8, !tbaa !11
  %905 = fcmp oge double %903, %904
  br i1 %905, label %906, label %908

906:                                              ; preds = %895
  %907 = load double, ptr %27, align 8, !tbaa !11
  br label %910

908:                                              ; preds = %895
  %909 = load double, ptr %28, align 8, !tbaa !11
  br label %910

910:                                              ; preds = %908, %906
  %911 = phi double [ %907, %906 ], [ %909, %908 ]
  %912 = load ptr, ptr %18, align 8, !tbaa !5
  %913 = load i32, ptr %33, align 4, !tbaa !9
  %914 = add nsw i32 %913, 1
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds double, ptr %912, i64 %915
  store double %911, ptr %916, align 8, !tbaa !11
  br label %917

917:                                              ; preds = %910
  %918 = load i32, ptr %31, align 4, !tbaa !9
  %919 = add nsw i32 %918, 1
  store i32 %919, ptr %31, align 4, !tbaa !9
  br label %837, !llvm.loop !24

920:                                              ; preds = %837
  %921 = load ptr, ptr %15, align 8, !tbaa !5
  %922 = load i32, ptr %33, align 4, !tbaa !9
  %923 = load i32, ptr %33, align 4, !tbaa !9
  %924 = load i32, ptr %21, align 4, !tbaa !9
  %925 = mul nsw i32 %923, %924
  %926 = add nsw i32 %922, %925
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds double, ptr %921, i64 %927
  %929 = load double, ptr %928, align 8, !tbaa !11
  store double %929, ptr %26, align 8, !tbaa !11
  %930 = load double, ptr %26, align 8, !tbaa !11
  %931 = fcmp oge double %930, 0.000000e+00
  br i1 %931, label %932, label %934

932:                                              ; preds = %920
  %933 = load double, ptr %26, align 8, !tbaa !11
  br label %937

934:                                              ; preds = %920
  %935 = load double, ptr %26, align 8, !tbaa !11
  %936 = fneg double %935
  br label %937

937:                                              ; preds = %934, %932
  %938 = phi double [ %933, %932 ], [ %936, %934 ]
  store double %938, ptr %27, align 8, !tbaa !11
  %939 = load ptr, ptr %18, align 8, !tbaa !5
  %940 = load i32, ptr %33, align 4, !tbaa !9
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds double, ptr %939, i64 %941
  %943 = load double, ptr %942, align 8, !tbaa !11
  store double %943, ptr %28, align 8, !tbaa !11
  %944 = load double, ptr %27, align 8, !tbaa !11
  %945 = load double, ptr %28, align 8, !tbaa !11
  %946 = fcmp oge double %944, %945
  br i1 %946, label %947, label %949

947:                                              ; preds = %937
  %948 = load double, ptr %27, align 8, !tbaa !11
  br label %951

949:                                              ; preds = %937
  %950 = load double, ptr %28, align 8, !tbaa !11
  br label %951

951:                                              ; preds = %949, %947
  %952 = phi double [ %948, %947 ], [ %950, %949 ]
  %953 = load ptr, ptr %18, align 8, !tbaa !5
  %954 = load i32, ptr %33, align 4, !tbaa !9
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds double, ptr %953, i64 %955
  store double %952, ptr %956, align 8, !tbaa !11
  %957 = load i32, ptr %33, align 4, !tbaa !9
  %958 = add nsw i32 %957, 2
  store i32 %958, ptr %33, align 4, !tbaa !9
  br label %959

959:                                              ; preds = %951, %790
  br label %690, !llvm.loop !25

960:                                              ; preds = %690
  %961 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %961, ptr %33, align 4, !tbaa !9
  br label %962

962:                                              ; preds = %1056, %960
  %963 = load i32, ptr %33, align 4, !tbaa !9
  %964 = icmp sge i32 %963, 1
  br i1 %964, label %965, label %1057

965:                                              ; preds = %962
  %966 = load ptr, ptr %17, align 8, !tbaa !5
  %967 = load i32, ptr %33, align 4, !tbaa !9
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds i32, ptr %966, i64 %968
  %970 = load i32, ptr %969, align 4, !tbaa !9
  %971 = icmp sgt i32 %970, 0
  br i1 %971, label %972, label %1016

972:                                              ; preds = %965
  %973 = load ptr, ptr %17, align 8, !tbaa !5
  %974 = load i32, ptr %33, align 4, !tbaa !9
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds i32, ptr %973, i64 %975
  %977 = load i32, ptr %976, align 4, !tbaa !9
  store i32 %977, ptr %36, align 4, !tbaa !9
  %978 = load i32, ptr %36, align 4, !tbaa !9
  %979 = load i32, ptr %33, align 4, !tbaa !9
  %980 = icmp ne i32 %978, %979
  br i1 %980, label %981, label %1013

981:                                              ; preds = %972
  %982 = load ptr, ptr %18, align 8, !tbaa !5
  %983 = load ptr, ptr %11, align 8, !tbaa !5
  %984 = load i32, ptr %983, align 4, !tbaa !9
  %985 = load i32, ptr %33, align 4, !tbaa !9
  %986 = add nsw i32 %984, %985
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds double, ptr %982, i64 %987
  %989 = load double, ptr %988, align 8, !tbaa !11
  store double %989, ptr %38, align 8, !tbaa !11
  %990 = load ptr, ptr %18, align 8, !tbaa !5
  %991 = load ptr, ptr %11, align 8, !tbaa !5
  %992 = load i32, ptr %991, align 4, !tbaa !9
  %993 = load i32, ptr %36, align 4, !tbaa !9
  %994 = add nsw i32 %992, %993
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds double, ptr %990, i64 %995
  %997 = load double, ptr %996, align 8, !tbaa !11
  %998 = load ptr, ptr %18, align 8, !tbaa !5
  %999 = load ptr, ptr %11, align 8, !tbaa !5
  %1000 = load i32, ptr %999, align 4, !tbaa !9
  %1001 = load i32, ptr %33, align 4, !tbaa !9
  %1002 = add nsw i32 %1000, %1001
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds double, ptr %998, i64 %1003
  store double %997, ptr %1004, align 8, !tbaa !11
  %1005 = load double, ptr %38, align 8, !tbaa !11
  %1006 = load ptr, ptr %18, align 8, !tbaa !5
  %1007 = load ptr, ptr %11, align 8, !tbaa !5
  %1008 = load i32, ptr %1007, align 4, !tbaa !9
  %1009 = load i32, ptr %36, align 4, !tbaa !9
  %1010 = add nsw i32 %1008, %1009
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds double, ptr %1006, i64 %1011
  store double %1005, ptr %1012, align 8, !tbaa !11
  br label %1013

1013:                                             ; preds = %981, %972
  %1014 = load i32, ptr %33, align 4, !tbaa !9
  %1015 = add nsw i32 %1014, -1
  store i32 %1015, ptr %33, align 4, !tbaa !9
  br label %1056

1016:                                             ; preds = %965
  %1017 = load ptr, ptr %17, align 8, !tbaa !5
  %1018 = load i32, ptr %33, align 4, !tbaa !9
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds i32, ptr %1017, i64 %1019
  %1021 = load i32, ptr %1020, align 4, !tbaa !9
  %1022 = sub nsw i32 0, %1021
  store i32 %1022, ptr %36, align 4, !tbaa !9
  %1023 = load ptr, ptr %18, align 8, !tbaa !5
  %1024 = load ptr, ptr %11, align 8, !tbaa !5
  %1025 = load i32, ptr %1024, align 4, !tbaa !9
  %1026 = load i32, ptr %33, align 4, !tbaa !9
  %1027 = add nsw i32 %1025, %1026
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds double, ptr %1023, i64 %1028
  %1030 = load double, ptr %1029, align 8, !tbaa !11
  store double %1030, ptr %38, align 8, !tbaa !11
  %1031 = load ptr, ptr %18, align 8, !tbaa !5
  %1032 = load ptr, ptr %11, align 8, !tbaa !5
  %1033 = load i32, ptr %1032, align 4, !tbaa !9
  %1034 = load i32, ptr %36, align 4, !tbaa !9
  %1035 = add nsw i32 %1033, %1034
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds double, ptr %1031, i64 %1036
  %1038 = load double, ptr %1037, align 8, !tbaa !11
  %1039 = load ptr, ptr %18, align 8, !tbaa !5
  %1040 = load ptr, ptr %11, align 8, !tbaa !5
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  %1042 = load i32, ptr %33, align 4, !tbaa !9
  %1043 = add nsw i32 %1041, %1042
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds double, ptr %1039, i64 %1044
  store double %1038, ptr %1045, align 8, !tbaa !11
  %1046 = load double, ptr %38, align 8, !tbaa !11
  %1047 = load ptr, ptr %18, align 8, !tbaa !5
  %1048 = load ptr, ptr %11, align 8, !tbaa !5
  %1049 = load i32, ptr %1048, align 4, !tbaa !9
  %1050 = load i32, ptr %36, align 4, !tbaa !9
  %1051 = add nsw i32 %1049, %1050
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds double, ptr %1047, i64 %1052
  store double %1046, ptr %1053, align 8, !tbaa !11
  %1054 = load i32, ptr %33, align 4, !tbaa !9
  %1055 = add nsw i32 %1054, -2
  store i32 %1055, ptr %33, align 4, !tbaa !9
  br label %1056

1056:                                             ; preds = %1016, %1013
  br label %962, !llvm.loop !26

1057:                                             ; preds = %962
  br label %1058

1058:                                             ; preds = %1057, %688
  %1059 = load i32, ptr %35, align 4, !tbaa !9
  %1060 = icmp ne i32 %1059, 0
  br i1 %1060, label %1061, label %1103

1061:                                             ; preds = %1058
  %1062 = load ptr, ptr %11, align 8, !tbaa !5
  %1063 = load i32, ptr %1062, align 4, !tbaa !9
  store i32 %1063, ptr %23, align 4, !tbaa !9
  %1064 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %1064, ptr %31, align 4, !tbaa !9
  br label %1065

1065:                                             ; preds = %1099, %1061
  %1066 = load i32, ptr %31, align 4, !tbaa !9
  %1067 = load i32, ptr %23, align 4, !tbaa !9
  %1068 = icmp sle i32 %1066, %1067
  br i1 %1068, label %1069, label %1102

1069:                                             ; preds = %1065
  %1070 = load ptr, ptr %18, align 8, !tbaa !5
  %1071 = load i32, ptr %31, align 4, !tbaa !9
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds double, ptr %1070, i64 %1072
  %1074 = load double, ptr %1073, align 8, !tbaa !11
  store double %1074, ptr %30, align 8, !tbaa !11
  %1075 = load ptr, ptr %18, align 8, !tbaa !5
  %1076 = load ptr, ptr %11, align 8, !tbaa !5
  %1077 = load i32, ptr %1076, align 4, !tbaa !9
  %1078 = load i32, ptr %31, align 4, !tbaa !9
  %1079 = add nsw i32 %1077, %1078
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds double, ptr %1075, i64 %1080
  %1082 = load double, ptr %1081, align 8, !tbaa !11
  store double %1082, ptr %29, align 8, !tbaa !11
  %1083 = load double, ptr %30, align 8, !tbaa !11
  %1084 = fcmp une double %1083, 0.000000e+00
  br i1 %1084, label %1085, label %1098

1085:                                             ; preds = %1069
  %1086 = load double, ptr %29, align 8, !tbaa !11
  %1087 = load double, ptr %30, align 8, !tbaa !11
  %1088 = fdiv double %1086, %1087
  store double %1088, ptr %26, align 8, !tbaa !11
  %1089 = load double, ptr %26, align 8, !tbaa !11
  %1090 = load double, ptr %37, align 8, !tbaa !11
  %1091 = fcmp ole double %1089, %1090
  br i1 %1091, label %1092, label %1094

1092:                                             ; preds = %1085
  %1093 = load double, ptr %26, align 8, !tbaa !11
  br label %1096

1094:                                             ; preds = %1085
  %1095 = load double, ptr %37, align 8, !tbaa !11
  br label %1096

1096:                                             ; preds = %1094, %1092
  %1097 = phi double [ %1093, %1092 ], [ %1095, %1094 ]
  store double %1097, ptr %37, align 8, !tbaa !11
  br label %1098

1098:                                             ; preds = %1096, %1069
  br label %1099

1099:                                             ; preds = %1098
  %1100 = load i32, ptr %31, align 4, !tbaa !9
  %1101 = add nsw i32 %1100, 1
  store i32 %1101, ptr %31, align 4, !tbaa !9
  br label %1065, !llvm.loop !27

1102:                                             ; preds = %1065
  br label %1143

1103:                                             ; preds = %1058
  %1104 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %1104, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %1105

1105:                                             ; preds = %1139, %1103
  %1106 = load i32, ptr %31, align 4, !tbaa !9
  %1107 = load i32, ptr %23, align 4, !tbaa !9
  %1108 = icmp sle i32 %1106, %1107
  br i1 %1108, label %1109, label %1142

1109:                                             ; preds = %1105
  %1110 = load ptr, ptr %18, align 8, !tbaa !5
  %1111 = load i32, ptr %31, align 4, !tbaa !9
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1110, i64 %1112
  %1114 = load double, ptr %1113, align 8, !tbaa !11
  store double %1114, ptr %30, align 8, !tbaa !11
  %1115 = load ptr, ptr %18, align 8, !tbaa !5
  %1116 = load ptr, ptr %11, align 8, !tbaa !5
  %1117 = load i32, ptr %1116, align 4, !tbaa !9
  %1118 = load i32, ptr %31, align 4, !tbaa !9
  %1119 = add nsw i32 %1117, %1118
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds double, ptr %1115, i64 %1120
  %1122 = load double, ptr %1121, align 8, !tbaa !11
  store double %1122, ptr %29, align 8, !tbaa !11
  %1123 = load double, ptr %30, align 8, !tbaa !11
  %1124 = fcmp une double %1123, 0.000000e+00
  br i1 %1124, label %1125, label %1138

1125:                                             ; preds = %1109
  %1126 = load double, ptr %29, align 8, !tbaa !11
  %1127 = load double, ptr %30, align 8, !tbaa !11
  %1128 = fdiv double %1126, %1127
  store double %1128, ptr %26, align 8, !tbaa !11
  %1129 = load double, ptr %26, align 8, !tbaa !11
  %1130 = load double, ptr %37, align 8, !tbaa !11
  %1131 = fcmp ole double %1129, %1130
  br i1 %1131, label %1132, label %1134

1132:                                             ; preds = %1125
  %1133 = load double, ptr %26, align 8, !tbaa !11
  br label %1136

1134:                                             ; preds = %1125
  %1135 = load double, ptr %37, align 8, !tbaa !11
  br label %1136

1136:                                             ; preds = %1134, %1132
  %1137 = phi double [ %1133, %1132 ], [ %1135, %1134 ]
  store double %1137, ptr %37, align 8, !tbaa !11
  br label %1138

1138:                                             ; preds = %1136, %1109
  br label %1139

1139:                                             ; preds = %1138
  %1140 = load i32, ptr %31, align 4, !tbaa !9
  %1141 = add nsw i32 %1140, 1
  store i32 %1141, ptr %31, align 4, !tbaa !9
  br label %1105, !llvm.loop !28

1142:                                             ; preds = %1105
  br label %1143

1143:                                             ; preds = %1142, %1102
  %1144 = load double, ptr %37, align 8, !tbaa !11
  store double %1144, ptr %25, align 8, !tbaa !11
  %1145 = load double, ptr %25, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  ret double %1145
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

declare i32 @lsame_(ptr noundef, ptr noundef) #2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local double @dla_syrpvgrw_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr nocapture noundef %8) local_unnamed_addr #0 {
  %10 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %10, -1
  %11 = sext i32 %narrow to i64
  %12 = getelementptr inbounds double, ptr %3, i64 %11
  %13 = load i32, ptr %6, align 4, !tbaa !5
  %narrow465 = xor i32 %13, -1
  %14 = sext i32 %narrow465 to i64
  %15 = getelementptr inbounds double, ptr %5, i64 %14
  %16 = getelementptr inbounds i8, ptr %7, i64 -4
  %17 = getelementptr inbounds i8, ptr %8, i64 -8
  %18 = tail call i32 @lsame_(ptr noundef nonnull @.str, ptr noundef %0) #3
  %19 = load i32, ptr %2, align 4, !tbaa !5
  %20 = icmp eq i32 %19, 0
  br i1 %20, label %21, label %._crit_edge606

._crit_edge606:                                   ; preds = %9
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %22

21:                                               ; preds = %9
  %.not = icmp eq i32 %18, 0
  %.pre607 = load i32, ptr %1, align 4, !tbaa !5
  %spec.select = select i1 %.not, i32 %.pre607, i32 1
  br label %22

22:                                               ; preds = %21, %._crit_edge606
  %23 = phi i32 [ %.pre, %._crit_edge606 ], [ %.pre607, %21 ]
  %.0436 = phi i32 [ %19, %._crit_edge606 ], [ %spec.select, %21 ]
  %24 = shl i32 %23, 1
  %.not466498 = icmp slt i32 %24, 1
  br i1 %.not466498, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %22
  %25 = zext nneg i32 %24 to i64
  %26 = shl nuw nsw i64 %25, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %8, i8 0, i64 %26, i1 false), !tbaa !9
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %22
  %.not467 = icmp eq i32 %18, 0
  %.not468504 = icmp slt i32 %23, 1
  br i1 %.not467, label %.preheader493, label %.preheader496

.preheader496:                                    ; preds = %._crit_edge
  br i1 %.not468504, label %.preheader491.thread, label %.preheader495.preheader

.preheader491.thread:                             ; preds = %.preheader496
  %27 = icmp slt i32 %23, %.0436
  br i1 %27, label %.preheader484, label %.lr.ph522.preheader

.preheader495.preheader:                          ; preds = %.preheader496
  %28 = zext nneg i32 %23 to i64
  %29 = sext i32 %10 to i64
  %30 = add nuw i32 %23, 1
  %wide.trip.count566 = zext i32 %30 to i64
  %invariant.gep623 = getelementptr inbounds double, ptr %17, i64 %28
  %invariant.gep621 = getelementptr inbounds double, ptr %17, i64 %28
  br label %.preheader495

.preheader493:                                    ; preds = %._crit_edge
  br i1 %.not468504, label %.preheader488, label %.preheader492.preheader

.preheader492.preheader:                          ; preds = %.preheader493
  %31 = zext nneg i32 %23 to i64
  %32 = add nuw i32 %23, 1
  %33 = sext i32 %10 to i64
  %wide.trip.count575 = zext i32 %32 to i64
  %invariant.gep629 = getelementptr inbounds double, ptr %17, i64 %31
  %invariant.gep627 = getelementptr inbounds double, ptr %17, i64 %31
  br label %.preheader492

.preheader495:                                    ; preds = %.preheader495.preheader, %50
  %indvars.iv561 = phi i64 [ 1, %.preheader495.preheader ], [ %indvars.iv.next562, %50 ]
  %indvars.iv559 = phi i64 [ 2, %.preheader495.preheader ], [ %indvars.iv.next560, %50 ]
  %34 = mul nsw i64 %indvars.iv561, %29
  %gep624 = getelementptr inbounds double, ptr %invariant.gep623, i64 %indvars.iv561
  %invariant.gep619 = getelementptr double, ptr %12, i64 %34
  br label %35

35:                                               ; preds = %.preheader495, %35
  %indvars.iv = phi i64 [ 1, %.preheader495 ], [ %indvars.iv.next, %35 ]
  %gep620 = getelementptr double, ptr %invariant.gep619, i64 %indvars.iv
  %36 = load double, ptr %gep620, align 8, !tbaa !9
  %37 = fcmp oge double %36, 0.000000e+00
  %38 = fneg double %36
  %39 = select i1 %37, double %36, double %38
  %gep622 = getelementptr inbounds double, ptr %invariant.gep621, i64 %indvars.iv
  %40 = load double, ptr %gep622, align 8, !tbaa !9
  %41 = fcmp oge double %39, %40
  %42 = select i1 %41, double %39, double %40
  store double %42, ptr %gep622, align 8, !tbaa !9
  %43 = load double, ptr %gep620, align 8, !tbaa !9
  %44 = fcmp oge double %43, 0.000000e+00
  %45 = fneg double %43
  %46 = select i1 %44, double %43, double %45
  %47 = load double, ptr %gep624, align 8, !tbaa !9
  %48 = fcmp oge double %46, %47
  %49 = select i1 %48, double %46, double %47
  store double %49, ptr %gep624, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv559
  br i1 %exitcond.not, label %50, label %35, !llvm.loop !11

50:                                               ; preds = %35
  %indvars.iv.next562 = add nuw nsw i64 %indvars.iv561, 1
  %indvars.iv.next560 = add nuw nsw i64 %indvars.iv559, 1
  %exitcond567.not = icmp eq i64 %indvars.iv.next562, %wide.trip.count566
  br i1 %exitcond567.not, label %.loopexit494, label %.preheader495, !llvm.loop !13

.preheader492:                                    ; preds = %.preheader492.preheader, %67
  %indvars.iv568 = phi i64 [ 1, %.preheader492.preheader ], [ %indvars.iv.next569, %67 ]
  %51 = mul nsw i64 %indvars.iv568, %33
  %gep630 = getelementptr inbounds double, ptr %invariant.gep629, i64 %indvars.iv568
  %invariant.gep625 = getelementptr double, ptr %12, i64 %51
  br label %52

52:                                               ; preds = %.preheader492, %52
  %indvars.iv570 = phi i64 [ %indvars.iv568, %.preheader492 ], [ %indvars.iv.next571, %52 ]
  %gep626 = getelementptr double, ptr %invariant.gep625, i64 %indvars.iv570
  %53 = load double, ptr %gep626, align 8, !tbaa !9
  %54 = fcmp oge double %53, 0.000000e+00
  %55 = fneg double %53
  %56 = select i1 %54, double %53, double %55
  %gep628 = getelementptr inbounds double, ptr %invariant.gep627, i64 %indvars.iv570
  %57 = load double, ptr %gep628, align 8, !tbaa !9
  %58 = fcmp oge double %56, %57
  %59 = select i1 %58, double %56, double %57
  store double %59, ptr %gep628, align 8, !tbaa !9
  %60 = load double, ptr %gep626, align 8, !tbaa !9
  %61 = fcmp oge double %60, 0.000000e+00
  %62 = fneg double %60
  %63 = select i1 %61, double %60, double %62
  %64 = load double, ptr %gep630, align 8, !tbaa !9
  %65 = fcmp oge double %63, %64
  %66 = select i1 %65, double %63, double %64
  store double %66, ptr %gep630, align 8, !tbaa !9
  %indvars.iv.next571 = add nuw nsw i64 %indvars.iv570, 1
  %exitcond573.not = icmp eq i64 %indvars.iv.next571, %wide.trip.count575
  br i1 %exitcond573.not, label %67, label %52, !llvm.loop !14

67:                                               ; preds = %52
  %indvars.iv.next569 = add nuw nsw i64 %indvars.iv568, 1
  %exitcond576.not = icmp eq i64 %indvars.iv.next569, %wide.trip.count575
  br i1 %exitcond576.not, label %.loopexit494, label %.preheader492, !llvm.loop !15

.loopexit494:                                     ; preds = %50, %67
  br i1 %.not467, label %.preheader488, label %.preheader491

.preheader491:                                    ; preds = %.loopexit494
  %invariant.gep = getelementptr i8, ptr %8, i64 -16
  %68 = icmp slt i32 %23, %.0436
  %69 = icmp sgt i32 %23, 0
  %70 = and i1 %68, %69
  br i1 %70, label %.lr.ph519, label %.preheader489

.lr.ph519:                                        ; preds = %.preheader491
  %71 = add i32 %13, 1
  br label %74

.preheader488:                                    ; preds = %.preheader493, %.loopexit494
  %.not471538 = icmp slt i32 %.0436, 1
  br i1 %.not471538, label %.loopexit, label %.lr.ph540

.lr.ph540:                                        ; preds = %.preheader488
  %72 = add i32 %13, 1
  %73 = add i32 %23, 1
  br label %174

.preheader489:                                    ; preds = %._crit_edge516, %.preheader491
  br i1 %68, label %.loopexit487, label %.lr.ph522.preheader

.lr.ph522.preheader:                              ; preds = %.preheader491.thread, %.preheader489
  br label %.lr.ph522

74:                                               ; preds = %.lr.ph519, %._crit_edge516
  %.0437518 = phi i32 [ %23, %.lr.ph519 ], [ %156, %._crit_edge516 ]
  %75 = zext nneg i32 %.0437518 to i64
  %76 = getelementptr inbounds i32, ptr %16, i64 %75
  %77 = load i32, ptr %76, align 4, !tbaa !5
  %78 = icmp sgt i32 %77, 0
  br i1 %78, label %79, label %108

79:                                               ; preds = %74
  %.not481 = icmp eq i32 %77, %.0437518
  br i1 %.not481, label %.lr.ph515, label %80

80:                                               ; preds = %79
  %81 = add nsw i32 %.0437518, %23
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds double, ptr %17, i64 %82
  %84 = load double, ptr %83, align 8, !tbaa !9
  %85 = add nuw nsw i32 %77, %23
  %86 = zext nneg i32 %85 to i64
  %87 = getelementptr inbounds double, ptr %17, i64 %86
  %88 = load double, ptr %87, align 8, !tbaa !9
  store double %88, ptr %83, align 8, !tbaa !9
  store double %84, ptr %87, align 8, !tbaa !9
  br label %.lr.ph515

.lr.ph515:                                        ; preds = %79, %80
  %89 = mul nsw i32 %.0437518, %13
  %90 = getelementptr inbounds double, ptr %17, i64 %75
  %.promoted517 = load double, ptr %90, align 8, !tbaa !9
  %91 = sext i32 %89 to i64
  %invariant.gep635 = getelementptr double, ptr %15, i64 %91
  %92 = zext i32 %.0437518 to i64
  %xtraiter = and i64 %92, 1
  %93 = icmp eq i32 %.0437518, 1
  br i1 %93, label %._crit_edge516.loopexit.unr-lcssa, label %.lr.ph515.new

.lr.ph515.new:                                    ; preds = %.lr.ph515
  %unroll_iter = and i64 %92, 4294967294
  %invariant.gep686 = getelementptr i8, ptr %invariant.gep635, i64 8
  br label %94

94:                                               ; preds = %94, %.lr.ph515.new
  %indvars.iv582 = phi i64 [ 1, %.lr.ph515.new ], [ %indvars.iv.next583.1, %94 ]
  %95 = phi double [ %.promoted517, %.lr.ph515.new ], [ %107, %94 ]
  %niter = phi i64 [ 0, %.lr.ph515.new ], [ %niter.next.1, %94 ]
  %gep636 = getelementptr double, ptr %invariant.gep635, i64 %indvars.iv582
  %96 = load double, ptr %gep636, align 8, !tbaa !9
  %97 = fcmp oge double %96, 0.000000e+00
  %98 = fneg double %96
  %99 = select i1 %97, double %96, double %98
  %100 = fcmp oge double %99, %95
  %101 = select i1 %100, double %99, double %95
  store double %101, ptr %90, align 8, !tbaa !9
  %gep687 = getelementptr double, ptr %invariant.gep686, i64 %indvars.iv582
  %102 = load double, ptr %gep687, align 8, !tbaa !9
  %103 = fcmp oge double %102, 0.000000e+00
  %104 = fneg double %102
  %105 = select i1 %103, double %102, double %104
  %106 = fcmp oge double %105, %101
  %107 = select i1 %106, double %105, double %101
  store double %107, ptr %90, align 8, !tbaa !9
  %indvars.iv.next583.1 = add nuw nsw i64 %indvars.iv582, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge516.loopexit.unr-lcssa, label %94, !llvm.loop !16

108:                                              ; preds = %74
  %109 = add nsw i32 %.0437518, %23
  %110 = sext i32 %109 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %110
  %111 = load double, ptr %gep, align 8, !tbaa !9
  %112 = sub i32 %23, %77
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds double, ptr %17, i64 %113
  %115 = load double, ptr %114, align 8, !tbaa !9
  store double %115, ptr %gep, align 8, !tbaa !9
  store double %111, ptr %114, align 8, !tbaa !9
  %.not480.not506 = icmp sgt i32 %.0437518, 1
  br i1 %.not480.not506, label %.lr.ph509, label %.._crit_edge510_crit_edge

.._crit_edge510_crit_edge:                        ; preds = %108
  %.phi.trans.insert = getelementptr inbounds double, ptr %17, i64 %75
  %.pre608 = load double, ptr %.phi.trans.insert, align 8, !tbaa !9
  br label %._crit_edge510

.lr.ph509:                                        ; preds = %108
  %116 = add nsw i32 %.0437518, -1
  %117 = mul nsw i32 %.0437518, %13
  %118 = getelementptr inbounds double, ptr %17, i64 %75
  %119 = mul nsw i32 %116, %13
  %120 = zext nneg i32 %116 to i64
  %121 = getelementptr inbounds double, ptr %17, i64 %120
  %.promoted = load double, ptr %118, align 8, !tbaa !9
  %.promoted511 = load double, ptr %121, align 8, !tbaa !9
  %122 = sext i32 %117 to i64
  %123 = sext i32 %119 to i64
  %invariant.gep631 = getelementptr double, ptr %15, i64 %122
  %invariant.gep633 = getelementptr double, ptr %15, i64 %123
  br label %124

124:                                              ; preds = %.lr.ph509, %124
  %indvars.iv577 = phi i64 [ 1, %.lr.ph509 ], [ %indvars.iv.next578, %124 ]
  %125 = phi double [ %.promoted511, %.lr.ph509 ], [ %138, %124 ]
  %126 = phi double [ %.promoted, %.lr.ph509 ], [ %132, %124 ]
  %gep632 = getelementptr double, ptr %invariant.gep631, i64 %indvars.iv577
  %127 = load double, ptr %gep632, align 8, !tbaa !9
  %128 = fcmp oge double %127, 0.000000e+00
  %129 = fneg double %127
  %130 = select i1 %128, double %127, double %129
  %131 = fcmp oge double %130, %126
  %132 = select i1 %131, double %130, double %126
  store double %132, ptr %118, align 8, !tbaa !9
  %gep634 = getelementptr double, ptr %invariant.gep633, i64 %indvars.iv577
  %133 = load double, ptr %gep634, align 8, !tbaa !9
  %134 = fcmp oge double %133, 0.000000e+00
  %135 = fneg double %133
  %136 = select i1 %134, double %133, double %135
  %137 = fcmp oge double %136, %125
  %138 = select i1 %137, double %136, double %125
  store double %138, ptr %121, align 8, !tbaa !9
  %indvars.iv.next578 = add nuw nsw i64 %indvars.iv577, 1
  %exitcond581.not = icmp eq i64 %indvars.iv.next578, %75
  br i1 %exitcond581.not, label %._crit_edge510, label %124, !llvm.loop !17

._crit_edge510:                                   ; preds = %124, %.._crit_edge510_crit_edge
  %139 = phi double [ %.pre608, %.._crit_edge510_crit_edge ], [ %132, %124 ]
  %140 = mul i32 %.0437518, %71
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds double, ptr %15, i64 %141
  %143 = load double, ptr %142, align 8, !tbaa !9
  %144 = fcmp oge double %143, 0.000000e+00
  %145 = fneg double %143
  %146 = select i1 %144, double %143, double %145
  %147 = getelementptr inbounds double, ptr %17, i64 %75
  %148 = fcmp oge double %146, %139
  %149 = select i1 %148, double %146, double %139
  store double %149, ptr %147, align 8, !tbaa !9
  br label %._crit_edge516

._crit_edge516.loopexit.unr-lcssa:                ; preds = %94, %.lr.ph515
  %indvars.iv582.unr = phi i64 [ 1, %.lr.ph515 ], [ %indvars.iv.next583.1, %94 ]
  %.unr = phi double [ %.promoted517, %.lr.ph515 ], [ %107, %94 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge516, label %._crit_edge516.loopexit.epilog-lcssa

._crit_edge516.loopexit.epilog-lcssa:             ; preds = %._crit_edge516.loopexit.unr-lcssa
  %gep636.epil = getelementptr double, ptr %invariant.gep635, i64 %indvars.iv582.unr
  %150 = load double, ptr %gep636.epil, align 8, !tbaa !9
  %151 = fcmp oge double %150, 0.000000e+00
  %152 = fneg double %150
  %153 = select i1 %151, double %150, double %152
  %154 = fcmp oge double %153, %.unr
  %155 = select i1 %154, double %153, double %.unr
  store double %155, ptr %90, align 8, !tbaa !9
  br label %._crit_edge516

._crit_edge516:                                   ; preds = %._crit_edge516.loopexit.epilog-lcssa, %._crit_edge516.loopexit.unr-lcssa, %._crit_edge510
  %.sink = phi i32 [ -2, %._crit_edge510 ], [ -1, %._crit_edge516.loopexit.unr-lcssa ], [ -1, %._crit_edge516.loopexit.epilog-lcssa ]
  %156 = add nsw i32 %.0437518, %.sink
  %157 = icmp slt i32 %156, %.0436
  %158 = icmp sgt i32 %156, 0
  %159 = and i1 %157, %158
  br i1 %159, label %74, label %.preheader489, !llvm.loop !18

.lr.ph522:                                        ; preds = %.lr.ph522.preheader, %172
  %.2439521 = phi i32 [ %173, %172 ], [ %.0436, %.lr.ph522.preheader ]
  %160 = sext i32 %.2439521 to i64
  %161 = getelementptr inbounds i32, ptr %16, i64 %160
  %162 = load i32, ptr %161, align 4, !tbaa !5
  %163 = icmp sgt i32 %162, 0
  br i1 %163, label %164, label %167

164:                                              ; preds = %.lr.ph522
  %.not479 = icmp eq i32 %162, %.2439521
  br i1 %.not479, label %172, label %165

165:                                              ; preds = %164
  %166 = add nsw i32 %162, %23
  br label %.sink.split

167:                                              ; preds = %.lr.ph522
  %168 = sub i32 %23, %162
  br label %.sink.split

.sink.split:                                      ; preds = %167, %165
  %.sink656 = phi i32 [ %166, %165 ], [ %168, %167 ]
  %.sink647.ph = phi i32 [ 1, %165 ], [ 2, %167 ]
  %.pn.in = add nsw i32 %.2439521, %23
  %.pn = sext i32 %.pn.in to i64
  %.sink653 = getelementptr inbounds double, ptr %17, i64 %.pn
  %.sink650 = load double, ptr %.sink653, align 8, !tbaa !9
  %169 = sext i32 %.sink656 to i64
  %170 = getelementptr inbounds double, ptr %17, i64 %169
  %171 = load double, ptr %170, align 8, !tbaa !9
  store double %171, ptr %.sink653, align 8, !tbaa !9
  store double %.sink650, ptr %170, align 8, !tbaa !9
  br label %172

172:                                              ; preds = %.sink.split, %164
  %.sink647 = phi i32 [ 1, %164 ], [ %.sink647.ph, %.sink.split ]
  %173 = add nsw i32 %.2439521, %.sink647
  %.not476 = icmp sgt i32 %173, %23
  br i1 %.not476, label %.loopexit487, label %.lr.ph522, !llvm.loop !19

174:                                              ; preds = %.lr.ph540, %._crit_edge534
  %.4441539 = phi i32 [ 1, %.lr.ph540 ], [ %259, %._crit_edge534 ]
  %175 = zext nneg i32 %.4441539 to i64
  %176 = getelementptr inbounds i32, ptr %16, i64 %175
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = icmp sgt i32 %177, 0
  br i1 %178, label %179, label %216

179:                                              ; preds = %174
  %.not474 = icmp eq i32 %177, %.4441539
  br i1 %.not474, label %189, label %180

180:                                              ; preds = %179
  %181 = add nsw i32 %.4441539, %23
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds double, ptr %17, i64 %182
  %184 = load double, ptr %183, align 8, !tbaa !9
  %185 = add nsw i32 %177, %23
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds double, ptr %17, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !9
  store double %188, ptr %183, align 8, !tbaa !9
  store double %184, ptr %187, align 8, !tbaa !9
  br label %189

189:                                              ; preds = %180, %179
  %.not475530 = icmp sgt i32 %.4441539, %23
  br i1 %.not475530, label %._crit_edge534, label %.lr.ph533

.lr.ph533:                                        ; preds = %189
  %190 = mul nsw i32 %.4441539, %13
  %191 = getelementptr inbounds double, ptr %17, i64 %175
  %.promoted535 = load double, ptr %191, align 8, !tbaa !9
  %192 = sext i32 %190 to i64
  %invariant.gep641 = getelementptr double, ptr %15, i64 %192
  %193 = add i32 %23, %.4441539
  %194 = and i32 %193, 1
  %lcmp.mod675.not.not = icmp eq i32 %194, 0
  br i1 %lcmp.mod675.not.not, label %.prol.loopexit.unr-lcssa, label %.prol.loopexit

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph533
  %gep642.prol = getelementptr double, ptr %invariant.gep641, i64 %175
  %195 = load double, ptr %gep642.prol, align 8, !tbaa !9
  %196 = fcmp oge double %195, 0.000000e+00
  %197 = fneg double %195
  %198 = select i1 %196, double %195, double %197
  %199 = fcmp oge double %198, %.promoted535
  %200 = select i1 %199, double %198, double %.promoted535
  store double %200, ptr %191, align 8, !tbaa !9
  %indvars.iv.next592.prol = add nuw nsw i64 %175, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph533
  %indvars.iv591.unr = phi i64 [ %175, %.lr.ph533 ], [ %indvars.iv.next592.prol, %.prol.loopexit.unr-lcssa ]
  %.unr676 = phi double [ %.promoted535, %.lr.ph533 ], [ %200, %.prol.loopexit.unr-lcssa ]
  %201 = icmp eq i32 %23, %.4441539
  br i1 %201, label %._crit_edge534, label %.lr.ph533.new

.lr.ph533.new:                                    ; preds = %.prol.loopexit
  %invariant.gep688 = getelementptr i8, ptr %invariant.gep641, i64 8
  br label %202

202:                                              ; preds = %202, %.lr.ph533.new
  %indvars.iv591 = phi i64 [ %indvars.iv591.unr, %.lr.ph533.new ], [ %indvars.iv.next592.1, %202 ]
  %203 = phi double [ %.unr676, %.lr.ph533.new ], [ %215, %202 ]
  %gep642 = getelementptr double, ptr %invariant.gep641, i64 %indvars.iv591
  %204 = load double, ptr %gep642, align 8, !tbaa !9
  %205 = fcmp oge double %204, 0.000000e+00
  %206 = fneg double %204
  %207 = select i1 %205, double %204, double %206
  %208 = fcmp oge double %207, %203
  %209 = select i1 %208, double %207, double %203
  store double %209, ptr %191, align 8, !tbaa !9
  %gep689 = getelementptr double, ptr %invariant.gep688, i64 %indvars.iv591
  %210 = load double, ptr %gep689, align 8, !tbaa !9
  %211 = fcmp oge double %210, 0.000000e+00
  %212 = fneg double %210
  %213 = select i1 %211, double %210, double %212
  %214 = fcmp oge double %213, %209
  %215 = select i1 %214, double %213, double %209
  store double %215, ptr %191, align 8, !tbaa !9
  %indvars.iv.next592.1 = add nuw nsw i64 %indvars.iv591, 2
  %lftr.wideiv594.1 = trunc i64 %indvars.iv.next592.1 to i32
  %exitcond595.not.1 = icmp eq i32 %73, %lftr.wideiv594.1
  br i1 %exitcond595.not.1, label %._crit_edge534, label %202, !llvm.loop !20

216:                                              ; preds = %174
  %217 = add nsw i32 %.4441539, %23
  %218 = sext i32 %217 to i64
  %gep537 = getelementptr double, ptr %8, i64 %218
  %219 = load double, ptr %gep537, align 8, !tbaa !9
  %220 = sub i32 %23, %177
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds double, ptr %17, i64 %221
  %223 = load double, ptr %222, align 8, !tbaa !9
  store double %223, ptr %gep537, align 8, !tbaa !9
  store double %219, ptr %222, align 8, !tbaa !9
  %.not473523.not = icmp slt i32 %.4441539, %23
  br i1 %.not473523.not, label %.lr.ph526, label %.._crit_edge527_crit_edge

.._crit_edge527_crit_edge:                        ; preds = %216
  %.phi.trans.insert609 = getelementptr inbounds double, ptr %17, i64 %175
  %.pre610 = load double, ptr %.phi.trans.insert609, align 8, !tbaa !9
  br label %._crit_edge527

.lr.ph526:                                        ; preds = %216
  %224 = add nuw nsw i32 %.4441539, 1
  %225 = mul nsw i32 %.4441539, %13
  %226 = getelementptr inbounds double, ptr %17, i64 %175
  %227 = mul nsw i32 %224, %13
  %228 = zext nneg i32 %224 to i64
  %229 = getelementptr inbounds double, ptr %17, i64 %228
  %.promoted528 = load double, ptr %226, align 8, !tbaa !9
  %.promoted529 = load double, ptr %229, align 8, !tbaa !9
  %230 = add nuw nsw i64 %175, 1
  %231 = sext i32 %225 to i64
  %232 = sext i32 %227 to i64
  %invariant.gep637 = getelementptr double, ptr %15, i64 %231
  %invariant.gep639 = getelementptr double, ptr %15, i64 %232
  br label %233

233:                                              ; preds = %.lr.ph526, %233
  %indvars.iv587 = phi i64 [ %230, %.lr.ph526 ], [ %indvars.iv.next588, %233 ]
  %234 = phi double [ %.promoted529, %.lr.ph526 ], [ %247, %233 ]
  %235 = phi double [ %.promoted528, %.lr.ph526 ], [ %241, %233 ]
  %gep638 = getelementptr double, ptr %invariant.gep637, i64 %indvars.iv587
  %236 = load double, ptr %gep638, align 8, !tbaa !9
  %237 = fcmp oge double %236, 0.000000e+00
  %238 = fneg double %236
  %239 = select i1 %237, double %236, double %238
  %240 = fcmp oge double %239, %235
  %241 = select i1 %240, double %239, double %235
  store double %241, ptr %226, align 8, !tbaa !9
  %gep640 = getelementptr double, ptr %invariant.gep639, i64 %indvars.iv587
  %242 = load double, ptr %gep640, align 8, !tbaa !9
  %243 = fcmp oge double %242, 0.000000e+00
  %244 = fneg double %242
  %245 = select i1 %243, double %242, double %244
  %246 = fcmp oge double %245, %234
  %247 = select i1 %246, double %245, double %234
  store double %247, ptr %229, align 8, !tbaa !9
  %indvars.iv.next588 = add nuw nsw i64 %indvars.iv587, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next588 to i32
  %exitcond590.not = icmp eq i32 %73, %lftr.wideiv
  br i1 %exitcond590.not, label %._crit_edge527, label %233, !llvm.loop !21

._crit_edge527:                                   ; preds = %233, %.._crit_edge527_crit_edge
  %248 = phi double [ %.pre610, %.._crit_edge527_crit_edge ], [ %241, %233 ]
  %249 = mul i32 %.4441539, %72
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds double, ptr %15, i64 %250
  %252 = load double, ptr %251, align 8, !tbaa !9
  %253 = fcmp oge double %252, 0.000000e+00
  %254 = fneg double %252
  %255 = select i1 %253, double %252, double %254
  %256 = getelementptr inbounds double, ptr %17, i64 %175
  %257 = fcmp oge double %255, %248
  %258 = select i1 %257, double %255, double %248
  store double %258, ptr %256, align 8, !tbaa !9
  br label %._crit_edge534

._crit_edge534:                                   ; preds = %.prol.loopexit, %202, %189, %._crit_edge527
  %.sink648 = phi i32 [ 2, %._crit_edge527 ], [ 1, %189 ], [ 1, %202 ], [ 1, %.prol.loopexit ]
  %259 = add nuw nsw i32 %.4441539, %.sink648
  %.not471 = icmp sgt i32 %259, %.0436
  br i1 %.not471, label %.lr.ph542, label %174, !llvm.loop !22

.lr.ph542:                                        ; preds = %._crit_edge534, %272
  %.6541 = phi i32 [ %273, %272 ], [ %.0436, %._crit_edge534 ]
  %260 = zext nneg i32 %.6541 to i64
  %261 = getelementptr inbounds i32, ptr %16, i64 %260
  %262 = load i32, ptr %261, align 4, !tbaa !5
  %263 = icmp sgt i32 %262, 0
  br i1 %263, label %264, label %267

264:                                              ; preds = %.lr.ph542
  %.not472 = icmp eq i32 %262, %.6541
  br i1 %.not472, label %272, label %265

265:                                              ; preds = %264
  %266 = add nsw i32 %262, %23
  br label %.sink.split657

267:                                              ; preds = %.lr.ph542
  %268 = sub i32 %23, %262
  br label %.sink.split657

.sink.split657:                                   ; preds = %267, %265
  %.sink664 = phi i32 [ %266, %265 ], [ %268, %267 ]
  %.sink649.ph = phi i32 [ -1, %265 ], [ -2, %267 ]
  %.pn665.in = add nsw i32 %.6541, %23
  %.pn665 = sext i32 %.pn665.in to i64
  %.sink661 = getelementptr inbounds double, ptr %17, i64 %.pn665
  %.sink658 = load double, ptr %.sink661, align 8, !tbaa !9
  %269 = sext i32 %.sink664 to i64
  %270 = getelementptr inbounds double, ptr %17, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !9
  store double %271, ptr %.sink661, align 8, !tbaa !9
  store double %.sink658, ptr %270, align 8, !tbaa !9
  br label %272

272:                                              ; preds = %.sink.split657, %264
  %.sink649 = phi i32 [ -1, %264 ], [ %.sink649.ph, %.sink.split657 ]
  %273 = add nsw i32 %.6541, %.sink649
  %274 = icmp sgt i32 %273, 0
  br i1 %274, label %.lr.ph542, label %.loopexit487, !llvm.loop !23

.loopexit487:                                     ; preds = %172, %272, %.preheader489
  br i1 %.not467, label %.preheader, label %.preheader484

.preheader484:                                    ; preds = %.preheader491.thread, %.loopexit487
  %.not478543 = icmp sgt i32 %.0436, %23
  br i1 %.not478543, label %.loopexit, label %.lr.ph546.preheader

.lr.ph546.preheader:                              ; preds = %.preheader484
  %275 = sext i32 %.0436 to i64
  %276 = sext i32 %23 to i64
  %277 = add i32 %23, 1
  %invariant.gep643 = getelementptr double, ptr %17, i64 %276
  %278 = sub i32 %277, %.0436
  %xtraiter677 = and i32 %278, 1
  %lcmp.mod678.not = icmp eq i32 %xtraiter677, 0
  br i1 %lcmp.mod678.not, label %.lr.ph546.prol.loopexit, label %.lr.ph546.prol

.lr.ph546.prol:                                   ; preds = %.lr.ph546.preheader
  %279 = getelementptr inbounds double, ptr %17, i64 %275
  %280 = load double, ptr %279, align 8, !tbaa !9
  %281 = fcmp une double %280, 0.000000e+00
  br i1 %281, label %282, label %.lr.ph546.prol.loopexit.unr-lcssa

282:                                              ; preds = %.lr.ph546.prol
  %gep644.prol = getelementptr double, ptr %invariant.gep643, i64 %275
  %283 = load double, ptr %gep644.prol, align 8, !tbaa !9
  %284 = fdiv double %283, %280
  %285 = fcmp ole double %284, 1.000000e+00
  %286 = select i1 %285, double %284, double 1.000000e+00
  br label %.lr.ph546.prol.loopexit.unr-lcssa

.lr.ph546.prol.loopexit.unr-lcssa:                ; preds = %282, %.lr.ph546.prol
  %.1.prol = phi double [ %286, %282 ], [ 1.000000e+00, %.lr.ph546.prol ]
  %indvars.iv.next597.prol = add nsw i64 %275, 1
  br label %.lr.ph546.prol.loopexit

.lr.ph546.prol.loopexit:                          ; preds = %.lr.ph546.prol.loopexit.unr-lcssa, %.lr.ph546.preheader
  %.1.lcssa.unr = phi double [ poison, %.lr.ph546.preheader ], [ %.1.prol, %.lr.ph546.prol.loopexit.unr-lcssa ]
  %indvars.iv596.unr = phi i64 [ %275, %.lr.ph546.preheader ], [ %indvars.iv.next597.prol, %.lr.ph546.prol.loopexit.unr-lcssa ]
  %.0545.unr = phi double [ 1.000000e+00, %.lr.ph546.preheader ], [ %.1.prol, %.lr.ph546.prol.loopexit.unr-lcssa ]
  %287 = icmp eq i32 %23, %.0436
  br i1 %287, label %.loopexit, label %.lr.ph546.preheader.new

.lr.ph546.preheader.new:                          ; preds = %.lr.ph546.prol.loopexit
  %invariant.gep690 = getelementptr i8, ptr %invariant.gep643, i64 8
  br label %.lr.ph546

.preheader:                                       ; preds = %.loopexit487
  %.not477547 = icmp slt i32 %.0436, 1
  br i1 %.not477547, label %.loopexit, label %.lr.ph550.preheader

.lr.ph550.preheader:                              ; preds = %.preheader
  %288 = sext i32 %23 to i64
  %invariant.gep645 = getelementptr double, ptr %17, i64 %288
  %289 = zext nneg i32 %.0436 to i64
  %xtraiter679 = and i64 %289, 1
  %290 = icmp eq i32 %.0436, 1
  br i1 %290, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph550.preheader.new

.lr.ph550.preheader.new:                          ; preds = %.lr.ph550.preheader
  %unroll_iter682 = and i64 %289, 2147483646
  %invariant.gep692 = getelementptr i8, ptr %invariant.gep645, i64 8
  br label %.lr.ph550

.lr.ph546:                                        ; preds = %307, %.lr.ph546.preheader.new
  %indvars.iv596 = phi i64 [ %indvars.iv596.unr, %.lr.ph546.preheader.new ], [ %indvars.iv.next597.1, %307 ]
  %.0545 = phi double [ %.0545.unr, %.lr.ph546.preheader.new ], [ %.1.1, %307 ]
  %291 = getelementptr inbounds double, ptr %17, i64 %indvars.iv596
  %292 = load double, ptr %291, align 8, !tbaa !9
  %293 = fcmp une double %292, 0.000000e+00
  br i1 %293, label %294, label %.lr.ph546.1

294:                                              ; preds = %.lr.ph546
  %gep644 = getelementptr double, ptr %invariant.gep643, i64 %indvars.iv596
  %295 = load double, ptr %gep644, align 8, !tbaa !9
  %296 = fdiv double %295, %292
  %297 = fcmp ole double %296, %.0545
  %298 = select i1 %297, double %296, double %.0545
  br label %.lr.ph546.1

.lr.ph546.1:                                      ; preds = %.lr.ph546, %294
  %.1 = phi double [ %298, %294 ], [ %.0545, %.lr.ph546 ]
  %299 = getelementptr double, ptr %8, i64 %indvars.iv596
  %300 = load double, ptr %299, align 8, !tbaa !9
  %301 = fcmp une double %300, 0.000000e+00
  br i1 %301, label %302, label %307

302:                                              ; preds = %.lr.ph546.1
  %gep691 = getelementptr double, ptr %invariant.gep690, i64 %indvars.iv596
  %303 = load double, ptr %gep691, align 8, !tbaa !9
  %304 = fdiv double %303, %300
  %305 = fcmp ole double %304, %.1
  %306 = select i1 %305, double %304, double %.1
  br label %307

307:                                              ; preds = %302, %.lr.ph546.1
  %.1.1 = phi double [ %306, %302 ], [ %.1, %.lr.ph546.1 ]
  %indvars.iv.next597.1 = add nsw i64 %indvars.iv596, 2
  %lftr.wideiv599.1 = trunc i64 %indvars.iv.next597.1 to i32
  %exitcond600.not.1 = icmp eq i32 %277, %lftr.wideiv599.1
  br i1 %exitcond600.not.1, label %.loopexit, label %.lr.ph546, !llvm.loop !24

.lr.ph550:                                        ; preds = %324, %.lr.ph550.preheader.new
  %indvars.iv601 = phi i64 [ 1, %.lr.ph550.preheader.new ], [ %indvars.iv.next602.1, %324 ]
  %.2549 = phi double [ 1.000000e+00, %.lr.ph550.preheader.new ], [ %.3.1, %324 ]
  %niter683 = phi i64 [ 0, %.lr.ph550.preheader.new ], [ %niter683.next.1, %324 ]
  %308 = getelementptr inbounds double, ptr %17, i64 %indvars.iv601
  %309 = load double, ptr %308, align 8, !tbaa !9
  %310 = fcmp une double %309, 0.000000e+00
  br i1 %310, label %311, label %.lr.ph550.1

311:                                              ; preds = %.lr.ph550
  %gep646 = getelementptr double, ptr %invariant.gep645, i64 %indvars.iv601
  %312 = load double, ptr %gep646, align 8, !tbaa !9
  %313 = fdiv double %312, %309
  %314 = fcmp ole double %313, %.2549
  %315 = select i1 %314, double %313, double %.2549
  br label %.lr.ph550.1

.lr.ph550.1:                                      ; preds = %.lr.ph550, %311
  %.3 = phi double [ %315, %311 ], [ %.2549, %.lr.ph550 ]
  %316 = getelementptr double, ptr %8, i64 %indvars.iv601
  %317 = load double, ptr %316, align 8, !tbaa !9
  %318 = fcmp une double %317, 0.000000e+00
  br i1 %318, label %319, label %324

319:                                              ; preds = %.lr.ph550.1
  %gep693 = getelementptr double, ptr %invariant.gep692, i64 %indvars.iv601
  %320 = load double, ptr %gep693, align 8, !tbaa !9
  %321 = fdiv double %320, %317
  %322 = fcmp ole double %321, %.3
  %323 = select i1 %322, double %321, double %.3
  br label %324

324:                                              ; preds = %319, %.lr.ph550.1
  %.3.1 = phi double [ %323, %319 ], [ %.3, %.lr.ph550.1 ]
  %indvars.iv.next602.1 = add nuw nsw i64 %indvars.iv601, 2
  %niter683.next.1 = add i64 %niter683, 2
  %niter683.ncmp.1 = icmp eq i64 %niter683.next.1, %unroll_iter682
  br i1 %niter683.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph550, !llvm.loop !25

.loopexit.loopexit.unr-lcssa:                     ; preds = %324, %.lr.ph550.preheader
  %.3.lcssa.ph = phi double [ poison, %.lr.ph550.preheader ], [ %.3.1, %324 ]
  %indvars.iv601.unr = phi i64 [ 1, %.lr.ph550.preheader ], [ %indvars.iv.next602.1, %324 ]
  %.2549.unr = phi double [ 1.000000e+00, %.lr.ph550.preheader ], [ %.3.1, %324 ]
  %lcmp.mod680.not = icmp eq i64 %xtraiter679, 0
  br i1 %lcmp.mod680.not, label %.loopexit, label %.lr.ph550.epil

.lr.ph550.epil:                                   ; preds = %.loopexit.loopexit.unr-lcssa
  %325 = getelementptr inbounds double, ptr %17, i64 %indvars.iv601.unr
  %326 = load double, ptr %325, align 8, !tbaa !9
  %327 = fcmp une double %326, 0.000000e+00
  br i1 %327, label %328, label %.loopexit

328:                                              ; preds = %.lr.ph550.epil
  %gep646.epil = getelementptr double, ptr %invariant.gep645, i64 %indvars.iv601.unr
  %329 = load double, ptr %gep646.epil, align 8, !tbaa !9
  %330 = fdiv double %329, %326
  %331 = fcmp ole double %330, %.2549.unr
  %332 = select i1 %331, double %330, double %.2549.unr
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph546.prol.loopexit, %307, %.loopexit.loopexit.unr-lcssa, %328, %.lr.ph550.epil, %.preheader488, %.preheader484, %.preheader
  %.4 = phi double [ 1.000000e+00, %.preheader ], [ 1.000000e+00, %.preheader484 ], [ 1.000000e+00, %.preheader488 ], [ %.3.lcssa.ph, %.loopexit.loopexit.unr-lcssa ], [ %332, %328 ], [ %.2549.unr, %.lr.ph550.epil ], [ %.1.lcssa.unr, %.lr.ph546.prol.loopexit ], [ %.1.1, %307 ]
  ret double %.4
}

declare i32 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass