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

; 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"

; Function Attrs: nounwind uwtable
define dso_local void @dlaebz_(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, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19) #0 {
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca i32, align 4
  store ptr %0, ptr %21, align 8, !tbaa !5
  store ptr %1, ptr %22, align 8, !tbaa !5
  store ptr %2, ptr %23, align 8, !tbaa !5
  store ptr %3, ptr %24, align 8, !tbaa !5
  store ptr %4, ptr %25, align 8, !tbaa !5
  store ptr %5, ptr %26, align 8, !tbaa !5
  store ptr %6, ptr %27, align 8, !tbaa !5
  store ptr %7, ptr %28, align 8, !tbaa !5
  store ptr %8, ptr %29, align 8, !tbaa !5
  store ptr %9, ptr %30, align 8, !tbaa !5
  store ptr %10, ptr %31, align 8, !tbaa !5
  store ptr %11, ptr %32, align 8, !tbaa !5
  store ptr %12, ptr %33, align 8, !tbaa !5
  store ptr %13, ptr %34, align 8, !tbaa !5
  store ptr %14, ptr %35, align 8, !tbaa !5
  store ptr %15, ptr %36, align 8, !tbaa !5
  store ptr %16, ptr %37, align 8, !tbaa !5
  store ptr %17, ptr %38, align 8, !tbaa !5
  store ptr %18, ptr %39, align 8, !tbaa !5
  store ptr %19, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #2
  %68 = load ptr, ptr %24, align 8, !tbaa !5
  %69 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %69, ptr %41, align 4, !tbaa !9
  %70 = load i32, ptr %41, align 4, !tbaa !9
  %71 = mul nsw i32 %70, 1
  %72 = add nsw i32 1, %71
  store i32 %72, ptr %42, align 4, !tbaa !9
  %73 = load i32, ptr %42, align 4, !tbaa !9
  %74 = load ptr, ptr %37, align 8, !tbaa !5
  %75 = sext i32 %73 to i64
  %76 = sub i64 0, %75
  %77 = getelementptr inbounds i32, ptr %74, i64 %76
  store ptr %77, ptr %37, align 8, !tbaa !5
  %78 = load ptr, ptr %24, align 8, !tbaa !5
  %79 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %79, ptr %43, align 4, !tbaa !9
  %80 = load i32, ptr %43, align 4, !tbaa !9
  %81 = mul nsw i32 %80, 1
  %82 = add nsw i32 1, %81
  store i32 %82, ptr %44, align 4, !tbaa !9
  %83 = load i32, ptr %44, align 4, !tbaa !9
  %84 = load ptr, ptr %34, align 8, !tbaa !5
  %85 = sext i32 %83 to i64
  %86 = sub i64 0, %85
  %87 = getelementptr inbounds double, ptr %84, i64 %86
  store ptr %87, ptr %34, align 8, !tbaa !5
  %88 = load ptr, ptr %30, align 8, !tbaa !5
  %89 = getelementptr inbounds double, ptr %88, i32 -1
  store ptr %89, ptr %30, align 8, !tbaa !5
  %90 = load ptr, ptr %31, align 8, !tbaa !5
  %91 = getelementptr inbounds double, ptr %90, i32 -1
  store ptr %91, ptr %31, align 8, !tbaa !5
  %92 = load ptr, ptr %32, align 8, !tbaa !5
  %93 = getelementptr inbounds double, ptr %92, i32 -1
  store ptr %93, ptr %32, align 8, !tbaa !5
  %94 = load ptr, ptr %33, align 8, !tbaa !5
  %95 = getelementptr inbounds i32, ptr %94, i32 -1
  store ptr %95, ptr %33, align 8, !tbaa !5
  %96 = load ptr, ptr %35, align 8, !tbaa !5
  %97 = getelementptr inbounds double, ptr %96, i32 -1
  store ptr %97, ptr %35, align 8, !tbaa !5
  %98 = load ptr, ptr %38, align 8, !tbaa !5
  %99 = getelementptr inbounds double, ptr %98, i32 -1
  store ptr %99, ptr %38, align 8, !tbaa !5
  %100 = load ptr, ptr %39, align 8, !tbaa !5
  %101 = getelementptr inbounds i32, ptr %100, i32 -1
  store ptr %101, ptr %39, align 8, !tbaa !5
  %102 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %102, align 4, !tbaa !9
  %103 = load ptr, ptr %21, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = icmp slt i32 %104, 1
  br i1 %105, label %110, label %106

106:                                              ; preds = %20
  %107 = load ptr, ptr %21, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = icmp sgt i32 %108, 3
  br i1 %109, label %110, label %112

110:                                              ; preds = %106, %20
  %111 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -1, ptr %111, align 4, !tbaa !9
  store i32 1, ptr %67, align 4
  br label %1387

112:                                              ; preds = %106
  %113 = load ptr, ptr %21, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = icmp eq i32 %114, 1
  br i1 %115, label %116, label %273

116:                                              ; preds = %112
  %117 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 0, ptr %117, align 4, !tbaa !9
  %118 = load ptr, ptr %25, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  store i32 %119, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %120

120:                                              ; preds = %269, %116
  %121 = load i32, ptr %61, align 4, !tbaa !9
  %122 = load i32, ptr %45, align 4, !tbaa !9
  %123 = icmp sle i32 %121, %122
  br i1 %123, label %124, label %272

124:                                              ; preds = %120
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %245, %124
  %126 = load i32, ptr %63, align 4, !tbaa !9
  %127 = icmp sle i32 %126, 2
  br i1 %127, label %128, label %248

128:                                              ; preds = %125
  %129 = load ptr, ptr %30, align 8, !tbaa !5
  %130 = getelementptr inbounds double, ptr %129, i64 1
  %131 = load double, ptr %130, align 8, !tbaa !11
  %132 = load ptr, ptr %34, align 8, !tbaa !5
  %133 = load i32, ptr %61, align 4, !tbaa !9
  %134 = load i32, ptr %63, align 4, !tbaa !9
  %135 = load i32, ptr %43, align 4, !tbaa !9
  %136 = mul nsw i32 %134, %135
  %137 = add nsw i32 %133, %136
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds double, ptr %132, i64 %138
  %140 = load double, ptr %139, align 8, !tbaa !11
  %141 = fsub double %131, %140
  store double %141, ptr %65, align 8, !tbaa !11
  %142 = load double, ptr %65, align 8, !tbaa !11
  %143 = fcmp oge double %142, 0.000000e+00
  br i1 %143, label %144, label %146

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

146:                                              ; preds = %128
  %147 = load double, ptr %65, align 8, !tbaa !11
  %148 = fneg double %147
  br label %149

149:                                              ; preds = %146, %144
  %150 = phi double [ %145, %144 ], [ %148, %146 ]
  %151 = load ptr, ptr %29, align 8, !tbaa !5
  %152 = load double, ptr %151, align 8, !tbaa !11
  %153 = fcmp olt double %150, %152
  br i1 %153, label %154, label %158

154:                                              ; preds = %149
  %155 = load ptr, ptr %29, align 8, !tbaa !5
  %156 = load double, ptr %155, align 8, !tbaa !11
  %157 = fneg double %156
  store double %157, ptr %65, align 8, !tbaa !11
  br label %158

158:                                              ; preds = %154, %149
  %159 = load ptr, ptr %37, align 8, !tbaa !5
  %160 = load i32, ptr %61, align 4, !tbaa !9
  %161 = load i32, ptr %63, align 4, !tbaa !9
  %162 = load i32, ptr %41, align 4, !tbaa !9
  %163 = mul nsw i32 %161, %162
  %164 = add nsw i32 %160, %163
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds i32, ptr %159, i64 %165
  store i32 0, ptr %166, align 4, !tbaa !9
  %167 = load double, ptr %65, align 8, !tbaa !11
  %168 = fcmp ole double %167, 0.000000e+00
  br i1 %168, label %169, label %178

169:                                              ; preds = %158
  %170 = load ptr, ptr %37, align 8, !tbaa !5
  %171 = load i32, ptr %61, align 4, !tbaa !9
  %172 = load i32, ptr %63, align 4, !tbaa !9
  %173 = load i32, ptr %41, align 4, !tbaa !9
  %174 = mul nsw i32 %172, %173
  %175 = add nsw i32 %171, %174
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds i32, ptr %170, i64 %176
  store i32 1, ptr %177, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %169, %158
  %179 = load ptr, ptr %23, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  store i32 %180, ptr %46, align 4, !tbaa !9
  store i32 2, ptr %57, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %241, %178
  %182 = load i32, ptr %57, align 4, !tbaa !9
  %183 = load i32, ptr %46, align 4, !tbaa !9
  %184 = icmp sle i32 %182, %183
  br i1 %184, label %185, label %244

185:                                              ; preds = %181
  %186 = load ptr, ptr %30, align 8, !tbaa !5
  %187 = load i32, ptr %57, align 4, !tbaa !9
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds double, ptr %186, i64 %188
  %190 = load double, ptr %189, align 8, !tbaa !11
  %191 = load ptr, ptr %32, align 8, !tbaa !5
  %192 = load i32, ptr %57, align 4, !tbaa !9
  %193 = sub nsw i32 %192, 1
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds double, ptr %191, i64 %194
  %196 = load double, ptr %195, align 8, !tbaa !11
  %197 = load double, ptr %65, align 8, !tbaa !11
  %198 = fdiv double %196, %197
  %199 = fsub double %190, %198
  %200 = load ptr, ptr %34, align 8, !tbaa !5
  %201 = load i32, ptr %61, align 4, !tbaa !9
  %202 = load i32, ptr %63, align 4, !tbaa !9
  %203 = load i32, ptr %43, align 4, !tbaa !9
  %204 = mul nsw i32 %202, %203
  %205 = add nsw i32 %201, %204
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds double, ptr %200, i64 %206
  %208 = load double, ptr %207, align 8, !tbaa !11
  %209 = fsub double %199, %208
  store double %209, ptr %65, align 8, !tbaa !11
  %210 = load double, ptr %65, align 8, !tbaa !11
  %211 = fcmp oge double %210, 0.000000e+00
  br i1 %211, label %212, label %214

212:                                              ; preds = %185
  %213 = load double, ptr %65, align 8, !tbaa !11
  br label %217

214:                                              ; preds = %185
  %215 = load double, ptr %65, align 8, !tbaa !11
  %216 = fneg double %215
  br label %217

217:                                              ; preds = %214, %212
  %218 = phi double [ %213, %212 ], [ %216, %214 ]
  %219 = load ptr, ptr %29, align 8, !tbaa !5
  %220 = load double, ptr %219, align 8, !tbaa !11
  %221 = fcmp olt double %218, %220
  br i1 %221, label %222, label %226

222:                                              ; preds = %217
  %223 = load ptr, ptr %29, align 8, !tbaa !5
  %224 = load double, ptr %223, align 8, !tbaa !11
  %225 = fneg double %224
  store double %225, ptr %65, align 8, !tbaa !11
  br label %226

226:                                              ; preds = %222, %217
  %227 = load double, ptr %65, align 8, !tbaa !11
  %228 = fcmp ole double %227, 0.000000e+00
  br i1 %228, label %229, label %240

229:                                              ; preds = %226
  %230 = load ptr, ptr %37, align 8, !tbaa !5
  %231 = load i32, ptr %61, align 4, !tbaa !9
  %232 = load i32, ptr %63, align 4, !tbaa !9
  %233 = load i32, ptr %41, align 4, !tbaa !9
  %234 = mul nsw i32 %232, %233
  %235 = add nsw i32 %231, %234
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds i32, ptr %230, i64 %236
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr %237, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %229, %226
  br label %241

241:                                              ; preds = %240
  %242 = load i32, ptr %57, align 4, !tbaa !9
  %243 = add nsw i32 %242, 1
  store i32 %243, ptr %57, align 4, !tbaa !9
  br label %181, !llvm.loop !13

244:                                              ; preds = %181
  br label %245

245:                                              ; preds = %244
  %246 = load i32, ptr %63, align 4, !tbaa !9
  %247 = add nsw i32 %246, 1
  store i32 %247, ptr %63, align 4, !tbaa !9
  br label %125, !llvm.loop !15

248:                                              ; preds = %125
  %249 = load ptr, ptr %36, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = load ptr, ptr %37, align 8, !tbaa !5
  %252 = load i32, ptr %61, align 4, !tbaa !9
  %253 = load i32, ptr %41, align 4, !tbaa !9
  %254 = shl i32 %253, 1
  %255 = add nsw i32 %252, %254
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds i32, ptr %251, i64 %256
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = add nsw i32 %250, %258
  %260 = load ptr, ptr %37, align 8, !tbaa !5
  %261 = load i32, ptr %61, align 4, !tbaa !9
  %262 = load i32, ptr %41, align 4, !tbaa !9
  %263 = add nsw i32 %261, %262
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds i32, ptr %260, i64 %264
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = sub nsw i32 %259, %266
  %268 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 %267, ptr %268, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %248
  %270 = load i32, ptr %61, align 4, !tbaa !9
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %61, align 4, !tbaa !9
  br label %120, !llvm.loop !16

272:                                              ; preds = %120
  store i32 1, ptr %67, align 4
  br label %1387

273:                                              ; preds = %112
  store i32 1, ptr %60, align 4, !tbaa !9
  %274 = load ptr, ptr %25, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  store i32 %275, ptr %62, align 4, !tbaa !9
  %276 = load ptr, ptr %21, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = icmp eq i32 %277, 2
  br i1 %278, label %279, label %312

279:                                              ; preds = %273
  %280 = load ptr, ptr %25, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  store i32 %281, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %308, %279
  %283 = load i32, ptr %61, align 4, !tbaa !9
  %284 = load i32, ptr %45, align 4, !tbaa !9
  %285 = icmp sle i32 %283, %284
  br i1 %285, label %286, label %311

286:                                              ; preds = %282
  %287 = load ptr, ptr %34, align 8, !tbaa !5
  %288 = load i32, ptr %61, align 4, !tbaa !9
  %289 = load i32, ptr %43, align 4, !tbaa !9
  %290 = add nsw i32 %288, %289
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds double, ptr %287, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !11
  %294 = load ptr, ptr %34, align 8, !tbaa !5
  %295 = load i32, ptr %61, align 4, !tbaa !9
  %296 = load i32, ptr %43, align 4, !tbaa !9
  %297 = shl i32 %296, 1
  %298 = add nsw i32 %295, %297
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %294, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  %302 = fadd double %293, %301
  %303 = fmul double %302, 5.000000e-01
  %304 = load ptr, ptr %35, align 8, !tbaa !5
  %305 = load i32, ptr %61, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds double, ptr %304, i64 %306
  store double %303, ptr %307, align 8, !tbaa !11
  br label %308

308:                                              ; preds = %286
  %309 = load i32, ptr %61, align 4, !tbaa !9
  %310 = add nsw i32 %309, 1
  store i32 %310, ptr %61, align 4, !tbaa !9
  br label %282, !llvm.loop !17

311:                                              ; preds = %282
  br label %312

312:                                              ; preds = %311, %273
  %313 = load ptr, ptr %22, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  store i32 %314, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %315

315:                                              ; preds = %1368, %312
  %316 = load i32, ptr %64, align 4, !tbaa !9
  %317 = load i32, ptr %45, align 4, !tbaa !9
  %318 = icmp sle i32 %316, %317
  br i1 %318, label %319, label %1371

319:                                              ; preds = %315
  %320 = load i32, ptr %62, align 4, !tbaa !9
  %321 = load i32, ptr %60, align 4, !tbaa !9
  %322 = sub nsw i32 %320, %321
  %323 = add nsw i32 %322, 1
  %324 = load ptr, ptr %26, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = icmp sge i32 %323, %325
  br i1 %326, label %327, label %765

327:                                              ; preds = %319
  %328 = load ptr, ptr %26, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = icmp sgt i32 %329, 0
  br i1 %330, label %331, label %765

331:                                              ; preds = %327
  %332 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %332, ptr %46, align 4, !tbaa !9
  %333 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %333, ptr %61, align 4, !tbaa !9
  br label %334

334:                                              ; preds = %467, %331
  %335 = load i32, ptr %61, align 4, !tbaa !9
  %336 = load i32, ptr %46, align 4, !tbaa !9
  %337 = icmp sle i32 %335, %336
  br i1 %337, label %338, label %470

338:                                              ; preds = %334
  %339 = load ptr, ptr %30, align 8, !tbaa !5
  %340 = getelementptr inbounds double, ptr %339, i64 1
  %341 = load double, ptr %340, align 8, !tbaa !11
  %342 = load ptr, ptr %35, align 8, !tbaa !5
  %343 = load i32, ptr %61, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds double, ptr %342, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !11
  %347 = fsub double %341, %346
  %348 = load ptr, ptr %38, align 8, !tbaa !5
  %349 = load i32, ptr %61, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %348, i64 %350
  store double %347, ptr %351, align 8, !tbaa !11
  %352 = load ptr, ptr %39, align 8, !tbaa !5
  %353 = load i32, ptr %61, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds i32, ptr %352, i64 %354
  store i32 0, ptr %355, align 4, !tbaa !9
  %356 = load ptr, ptr %38, align 8, !tbaa !5
  %357 = load i32, ptr %61, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds double, ptr %356, i64 %358
  %360 = load double, ptr %359, align 8, !tbaa !11
  %361 = load ptr, ptr %29, align 8, !tbaa !5
  %362 = load double, ptr %361, align 8, !tbaa !11
  %363 = fcmp ole double %360, %362
  br i1 %363, label %364, label %390

364:                                              ; preds = %338
  %365 = load ptr, ptr %39, align 8, !tbaa !5
  %366 = load i32, ptr %61, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds i32, ptr %365, i64 %367
  store i32 1, ptr %368, align 4, !tbaa !9
  %369 = load ptr, ptr %38, align 8, !tbaa !5
  %370 = load i32, ptr %61, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds double, ptr %369, i64 %371
  %373 = load double, ptr %372, align 8, !tbaa !11
  store double %373, ptr %51, align 8, !tbaa !11
  %374 = load ptr, ptr %29, align 8, !tbaa !5
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = fneg double %375
  store double %376, ptr %52, align 8, !tbaa !11
  %377 = load double, ptr %51, align 8, !tbaa !11
  %378 = load double, ptr %52, align 8, !tbaa !11
  %379 = fcmp ole double %377, %378
  br i1 %379, label %380, label %382

380:                                              ; preds = %364
  %381 = load double, ptr %51, align 8, !tbaa !11
  br label %384

382:                                              ; preds = %364
  %383 = load double, ptr %52, align 8, !tbaa !11
  br label %384

384:                                              ; preds = %382, %380
  %385 = phi double [ %381, %380 ], [ %383, %382 ]
  %386 = load ptr, ptr %38, align 8, !tbaa !5
  %387 = load i32, ptr %61, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds double, ptr %386, i64 %388
  store double %385, ptr %389, align 8, !tbaa !11
  br label %390

390:                                              ; preds = %384, %338
  %391 = load ptr, ptr %23, align 8, !tbaa !5
  %392 = load i32, ptr %391, align 4, !tbaa !9
  store i32 %392, ptr %47, align 4, !tbaa !9
  store i32 2, ptr %57, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %463, %390
  %394 = load i32, ptr %57, align 4, !tbaa !9
  %395 = load i32, ptr %47, align 4, !tbaa !9
  %396 = icmp sle i32 %394, %395
  br i1 %396, label %397, label %466

397:                                              ; preds = %393
  %398 = load ptr, ptr %30, align 8, !tbaa !5
  %399 = load i32, ptr %57, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds double, ptr %398, i64 %400
  %402 = load double, ptr %401, align 8, !tbaa !11
  %403 = load ptr, ptr %32, align 8, !tbaa !5
  %404 = load i32, ptr %57, align 4, !tbaa !9
  %405 = sub nsw i32 %404, 1
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %403, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !11
  %409 = load ptr, ptr %38, align 8, !tbaa !5
  %410 = load i32, ptr %61, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds double, ptr %409, i64 %411
  %413 = load double, ptr %412, align 8, !tbaa !11
  %414 = fdiv double %408, %413
  %415 = fsub double %402, %414
  %416 = load ptr, ptr %35, align 8, !tbaa !5
  %417 = load i32, ptr %61, align 4, !tbaa !9
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds double, ptr %416, i64 %418
  %420 = load double, ptr %419, align 8, !tbaa !11
  %421 = fsub double %415, %420
  %422 = load ptr, ptr %38, align 8, !tbaa !5
  %423 = load i32, ptr %61, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds double, ptr %422, i64 %424
  store double %421, ptr %425, align 8, !tbaa !11
  %426 = load ptr, ptr %38, align 8, !tbaa !5
  %427 = load i32, ptr %61, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %426, i64 %428
  %430 = load double, ptr %429, align 8, !tbaa !11
  %431 = load ptr, ptr %29, align 8, !tbaa !5
  %432 = load double, ptr %431, align 8, !tbaa !11
  %433 = fcmp ole double %430, %432
  br i1 %433, label %434, label %462

434:                                              ; preds = %397
  %435 = load ptr, ptr %39, align 8, !tbaa !5
  %436 = load i32, ptr %61, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds i32, ptr %435, i64 %437
  %439 = load i32, ptr %438, align 4, !tbaa !9
  %440 = add nsw i32 %439, 1
  store i32 %440, ptr %438, align 4, !tbaa !9
  %441 = load ptr, ptr %38, align 8, !tbaa !5
  %442 = load i32, ptr %61, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %441, i64 %443
  %445 = load double, ptr %444, align 8, !tbaa !11
  store double %445, ptr %51, align 8, !tbaa !11
  %446 = load ptr, ptr %29, align 8, !tbaa !5
  %447 = load double, ptr %446, align 8, !tbaa !11
  %448 = fneg double %447
  store double %448, ptr %52, align 8, !tbaa !11
  %449 = load double, ptr %51, align 8, !tbaa !11
  %450 = load double, ptr %52, align 8, !tbaa !11
  %451 = fcmp ole double %449, %450
  br i1 %451, label %452, label %454

452:                                              ; preds = %434
  %453 = load double, ptr %51, align 8, !tbaa !11
  br label %456

454:                                              ; preds = %434
  %455 = load double, ptr %52, align 8, !tbaa !11
  br label %456

456:                                              ; preds = %454, %452
  %457 = phi double [ %453, %452 ], [ %455, %454 ]
  %458 = load ptr, ptr %38, align 8, !tbaa !5
  %459 = load i32, ptr %61, align 4, !tbaa !9
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %458, i64 %460
  store double %457, ptr %461, align 8, !tbaa !11
  br label %462

462:                                              ; preds = %456, %397
  br label %463

463:                                              ; preds = %462
  %464 = load i32, ptr %57, align 4, !tbaa !9
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr %57, align 4, !tbaa !9
  br label %393, !llvm.loop !18

466:                                              ; preds = %393
  br label %467

467:                                              ; preds = %466
  %468 = load i32, ptr %61, align 4, !tbaa !9
  %469 = add nsw i32 %468, 1
  store i32 %469, ptr %61, align 4, !tbaa !9
  br label %334, !llvm.loop !19

470:                                              ; preds = %334
  %471 = load ptr, ptr %21, align 8, !tbaa !5
  %472 = load i32, ptr %471, align 4, !tbaa !9
  %473 = icmp sle i32 %472, 2
  br i1 %473, label %474, label %680

474:                                              ; preds = %470
  %475 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %475, ptr %59, align 4, !tbaa !9
  %476 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %476, ptr %46, align 4, !tbaa !9
  %477 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %477, ptr %61, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %670, %474
  %479 = load i32, ptr %61, align 4, !tbaa !9
  %480 = load i32, ptr %46, align 4, !tbaa !9
  %481 = icmp sle i32 %479, %480
  br i1 %481, label %482, label %673

482:                                              ; preds = %478
  %483 = load ptr, ptr %37, align 8, !tbaa !5
  %484 = load i32, ptr %61, align 4, !tbaa !9
  %485 = load i32, ptr %41, align 4, !tbaa !9
  %486 = add nsw i32 %484, %485
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds i32, ptr %483, i64 %487
  %489 = load i32, ptr %488, align 4, !tbaa !9
  store i32 %489, ptr %49, align 4, !tbaa !9
  %490 = load ptr, ptr %39, align 8, !tbaa !5
  %491 = load i32, ptr %61, align 4, !tbaa !9
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds i32, ptr %490, i64 %492
  %494 = load i32, ptr %493, align 4, !tbaa !9
  store i32 %494, ptr %50, align 4, !tbaa !9
  %495 = load ptr, ptr %37, align 8, !tbaa !5
  %496 = load i32, ptr %61, align 4, !tbaa !9
  %497 = load i32, ptr %41, align 4, !tbaa !9
  %498 = shl i32 %497, 1
  %499 = add nsw i32 %496, %498
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds i32, ptr %495, i64 %500
  %502 = load i32, ptr %501, align 4, !tbaa !9
  store i32 %502, ptr %47, align 4, !tbaa !9
  %503 = load i32, ptr %49, align 4, !tbaa !9
  %504 = load i32, ptr %50, align 4, !tbaa !9
  %505 = icmp sge i32 %503, %504
  br i1 %505, label %506, label %508

506:                                              ; preds = %482
  %507 = load i32, ptr %49, align 4, !tbaa !9
  br label %510

508:                                              ; preds = %482
  %509 = load i32, ptr %50, align 4, !tbaa !9
  br label %510

510:                                              ; preds = %508, %506
  %511 = phi i32 [ %507, %506 ], [ %509, %508 ]
  store i32 %511, ptr %48, align 4, !tbaa !9
  %512 = load i32, ptr %47, align 4, !tbaa !9
  %513 = load i32, ptr %48, align 4, !tbaa !9
  %514 = icmp sle i32 %512, %513
  br i1 %514, label %515, label %517

515:                                              ; preds = %510
  %516 = load i32, ptr %47, align 4, !tbaa !9
  br label %519

517:                                              ; preds = %510
  %518 = load i32, ptr %48, align 4, !tbaa !9
  br label %519

519:                                              ; preds = %517, %515
  %520 = phi i32 [ %516, %515 ], [ %518, %517 ]
  %521 = load ptr, ptr %39, align 8, !tbaa !5
  %522 = load i32, ptr %61, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds i32, ptr %521, i64 %523
  store i32 %520, ptr %524, align 4, !tbaa !9
  %525 = load ptr, ptr %39, align 8, !tbaa !5
  %526 = load i32, ptr %61, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds i32, ptr %525, i64 %527
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = load ptr, ptr %37, align 8, !tbaa !5
  %531 = load i32, ptr %61, align 4, !tbaa !9
  %532 = load i32, ptr %41, align 4, !tbaa !9
  %533 = shl i32 %532, 1
  %534 = add nsw i32 %531, %533
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds i32, ptr %530, i64 %535
  %537 = load i32, ptr %536, align 4, !tbaa !9
  %538 = icmp eq i32 %529, %537
  br i1 %538, label %539, label %552

539:                                              ; preds = %519
  %540 = load ptr, ptr %35, align 8, !tbaa !5
  %541 = load i32, ptr %61, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds double, ptr %540, i64 %542
  %544 = load double, ptr %543, align 8, !tbaa !11
  %545 = load ptr, ptr %34, align 8, !tbaa !5
  %546 = load i32, ptr %61, align 4, !tbaa !9
  %547 = load i32, ptr %43, align 4, !tbaa !9
  %548 = shl i32 %547, 1
  %549 = add nsw i32 %546, %548
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds double, ptr %545, i64 %550
  store double %544, ptr %551, align 8, !tbaa !11
  br label %669

552:                                              ; preds = %519
  %553 = load ptr, ptr %39, align 8, !tbaa !5
  %554 = load i32, ptr %61, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds i32, ptr %553, i64 %555
  %557 = load i32, ptr %556, align 4, !tbaa !9
  %558 = load ptr, ptr %37, align 8, !tbaa !5
  %559 = load i32, ptr %61, align 4, !tbaa !9
  %560 = load i32, ptr %41, align 4, !tbaa !9
  %561 = add nsw i32 %559, %560
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds i32, ptr %558, i64 %562
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = icmp eq i32 %557, %564
  br i1 %565, label %566, label %578

566:                                              ; preds = %552
  %567 = load ptr, ptr %35, align 8, !tbaa !5
  %568 = load i32, ptr %61, align 4, !tbaa !9
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds double, ptr %567, i64 %569
  %571 = load double, ptr %570, align 8, !tbaa !11
  %572 = load ptr, ptr %34, align 8, !tbaa !5
  %573 = load i32, ptr %61, align 4, !tbaa !9
  %574 = load i32, ptr %43, align 4, !tbaa !9
  %575 = add nsw i32 %573, %574
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds double, ptr %572, i64 %576
  store double %571, ptr %577, align 8, !tbaa !11
  br label %668

578:                                              ; preds = %552
  %579 = load i32, ptr %59, align 4, !tbaa !9
  %580 = add nsw i32 %579, 1
  store i32 %580, ptr %59, align 4, !tbaa !9
  %581 = load i32, ptr %59, align 4, !tbaa !9
  %582 = load ptr, ptr %24, align 8, !tbaa !5
  %583 = load i32, ptr %582, align 4, !tbaa !9
  %584 = icmp sle i32 %581, %583
  br i1 %584, label %585, label %662

585:                                              ; preds = %578
  %586 = load ptr, ptr %34, align 8, !tbaa !5
  %587 = load i32, ptr %61, align 4, !tbaa !9
  %588 = load i32, ptr %43, align 4, !tbaa !9
  %589 = shl i32 %588, 1
  %590 = add nsw i32 %587, %589
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds double, ptr %586, i64 %591
  %593 = load double, ptr %592, align 8, !tbaa !11
  %594 = load ptr, ptr %34, align 8, !tbaa !5
  %595 = load i32, ptr %59, align 4, !tbaa !9
  %596 = load i32, ptr %43, align 4, !tbaa !9
  %597 = shl i32 %596, 1
  %598 = add nsw i32 %595, %597
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds double, ptr %594, i64 %599
  store double %593, ptr %600, align 8, !tbaa !11
  %601 = load ptr, ptr %37, align 8, !tbaa !5
  %602 = load i32, ptr %61, align 4, !tbaa !9
  %603 = load i32, ptr %41, align 4, !tbaa !9
  %604 = shl i32 %603, 1
  %605 = add nsw i32 %602, %604
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds i32, ptr %601, i64 %606
  %608 = load i32, ptr %607, align 4, !tbaa !9
  %609 = load ptr, ptr %37, align 8, !tbaa !5
  %610 = load i32, ptr %59, align 4, !tbaa !9
  %611 = load i32, ptr %41, align 4, !tbaa !9
  %612 = shl i32 %611, 1
  %613 = add nsw i32 %610, %612
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds i32, ptr %609, i64 %614
  store i32 %608, ptr %615, align 4, !tbaa !9
  %616 = load ptr, ptr %35, align 8, !tbaa !5
  %617 = load i32, ptr %61, align 4, !tbaa !9
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds double, ptr %616, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !11
  %621 = load ptr, ptr %34, align 8, !tbaa !5
  %622 = load i32, ptr %59, align 4, !tbaa !9
  %623 = load i32, ptr %43, align 4, !tbaa !9
  %624 = add nsw i32 %622, %623
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %621, i64 %625
  store double %620, ptr %626, align 8, !tbaa !11
  %627 = load ptr, ptr %39, align 8, !tbaa !5
  %628 = load i32, ptr %61, align 4, !tbaa !9
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds i32, ptr %627, i64 %629
  %631 = load i32, ptr %630, align 4, !tbaa !9
  %632 = load ptr, ptr %37, align 8, !tbaa !5
  %633 = load i32, ptr %59, align 4, !tbaa !9
  %634 = load i32, ptr %41, align 4, !tbaa !9
  %635 = add nsw i32 %633, %634
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds i32, ptr %632, i64 %636
  store i32 %631, ptr %637, align 4, !tbaa !9
  %638 = load ptr, ptr %35, align 8, !tbaa !5
  %639 = load i32, ptr %61, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds double, ptr %638, i64 %640
  %642 = load double, ptr %641, align 8, !tbaa !11
  %643 = load ptr, ptr %34, align 8, !tbaa !5
  %644 = load i32, ptr %61, align 4, !tbaa !9
  %645 = load i32, ptr %43, align 4, !tbaa !9
  %646 = shl i32 %645, 1
  %647 = add nsw i32 %644, %646
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds double, ptr %643, i64 %648
  store double %642, ptr %649, align 8, !tbaa !11
  %650 = load ptr, ptr %39, align 8, !tbaa !5
  %651 = load i32, ptr %61, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds i32, ptr %650, i64 %652
  %654 = load i32, ptr %653, align 4, !tbaa !9
  %655 = load ptr, ptr %37, align 8, !tbaa !5
  %656 = load i32, ptr %61, align 4, !tbaa !9
  %657 = load i32, ptr %41, align 4, !tbaa !9
  %658 = shl i32 %657, 1
  %659 = add nsw i32 %656, %658
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds i32, ptr %655, i64 %660
  store i32 %654, ptr %661, align 4, !tbaa !9
  br label %667

662:                                              ; preds = %578
  %663 = load ptr, ptr %24, align 8, !tbaa !5
  %664 = load i32, ptr %663, align 4, !tbaa !9
  %665 = add nsw i32 %664, 1
  %666 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 %665, ptr %666, align 4, !tbaa !9
  br label %667

667:                                              ; preds = %662, %585
  br label %668

668:                                              ; preds = %667, %566
  br label %669

669:                                              ; preds = %668, %539
  br label %670

670:                                              ; preds = %669
  %671 = load i32, ptr %61, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %61, align 4, !tbaa !9
  br label %478, !llvm.loop !20

673:                                              ; preds = %478
  %674 = load ptr, ptr %40, align 8, !tbaa !5
  %675 = load i32, ptr %674, align 4, !tbaa !9
  %676 = icmp ne i32 %675, 0
  br i1 %676, label %677, label %678

677:                                              ; preds = %673
  store i32 1, ptr %67, align 4
  br label %1387

678:                                              ; preds = %673
  %679 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %679, ptr %62, align 4, !tbaa !9
  br label %764

680:                                              ; preds = %470
  %681 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %681, ptr %46, align 4, !tbaa !9
  %682 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %682, ptr %61, align 4, !tbaa !9
  br label %683

683:                                              ; preds = %760, %680
  %684 = load i32, ptr %61, align 4, !tbaa !9
  %685 = load i32, ptr %46, align 4, !tbaa !9
  %686 = icmp sle i32 %684, %685
  br i1 %686, label %687, label %763

687:                                              ; preds = %683
  %688 = load ptr, ptr %39, align 8, !tbaa !5
  %689 = load i32, ptr %61, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds i32, ptr %688, i64 %690
  %692 = load i32, ptr %691, align 4, !tbaa !9
  %693 = load ptr, ptr %33, align 8, !tbaa !5
  %694 = load i32, ptr %61, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds i32, ptr %693, i64 %695
  %697 = load i32, ptr %696, align 4, !tbaa !9
  %698 = icmp sle i32 %692, %697
  br i1 %698, label %699, label %722

699:                                              ; preds = %687
  %700 = load ptr, ptr %35, align 8, !tbaa !5
  %701 = load i32, ptr %61, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds double, ptr %700, i64 %702
  %704 = load double, ptr %703, align 8, !tbaa !11
  %705 = load ptr, ptr %34, align 8, !tbaa !5
  %706 = load i32, ptr %61, align 4, !tbaa !9
  %707 = load i32, ptr %43, align 4, !tbaa !9
  %708 = add nsw i32 %706, %707
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds double, ptr %705, i64 %709
  store double %704, ptr %710, align 8, !tbaa !11
  %711 = load ptr, ptr %39, align 8, !tbaa !5
  %712 = load i32, ptr %61, align 4, !tbaa !9
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds i32, ptr %711, i64 %713
  %715 = load i32, ptr %714, align 4, !tbaa !9
  %716 = load ptr, ptr %37, align 8, !tbaa !5
  %717 = load i32, ptr %61, align 4, !tbaa !9
  %718 = load i32, ptr %41, align 4, !tbaa !9
  %719 = add nsw i32 %717, %718
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds i32, ptr %716, i64 %720
  store i32 %715, ptr %721, align 4, !tbaa !9
  br label %722

722:                                              ; preds = %699, %687
  %723 = load ptr, ptr %39, align 8, !tbaa !5
  %724 = load i32, ptr %61, align 4, !tbaa !9
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds i32, ptr %723, i64 %725
  %727 = load i32, ptr %726, align 4, !tbaa !9
  %728 = load ptr, ptr %33, align 8, !tbaa !5
  %729 = load i32, ptr %61, align 4, !tbaa !9
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds i32, ptr %728, i64 %730
  %732 = load i32, ptr %731, align 4, !tbaa !9
  %733 = icmp sge i32 %727, %732
  br i1 %733, label %734, label %759

734:                                              ; preds = %722
  %735 = load ptr, ptr %35, align 8, !tbaa !5
  %736 = load i32, ptr %61, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %735, i64 %737
  %739 = load double, ptr %738, align 8, !tbaa !11
  %740 = load ptr, ptr %34, align 8, !tbaa !5
  %741 = load i32, ptr %61, align 4, !tbaa !9
  %742 = load i32, ptr %43, align 4, !tbaa !9
  %743 = shl i32 %742, 1
  %744 = add nsw i32 %741, %743
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds double, ptr %740, i64 %745
  store double %739, ptr %746, align 8, !tbaa !11
  %747 = load ptr, ptr %39, align 8, !tbaa !5
  %748 = load i32, ptr %61, align 4, !tbaa !9
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds i32, ptr %747, i64 %749
  %751 = load i32, ptr %750, align 4, !tbaa !9
  %752 = load ptr, ptr %37, align 8, !tbaa !5
  %753 = load i32, ptr %61, align 4, !tbaa !9
  %754 = load i32, ptr %41, align 4, !tbaa !9
  %755 = shl i32 %754, 1
  %756 = add nsw i32 %753, %755
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds i32, ptr %752, i64 %757
  store i32 %751, ptr %758, align 4, !tbaa !9
  br label %759

759:                                              ; preds = %734, %722
  br label %760

760:                                              ; preds = %759
  %761 = load i32, ptr %61, align 4, !tbaa !9
  %762 = add nsw i32 %761, 1
  store i32 %762, ptr %61, align 4, !tbaa !9
  br label %683, !llvm.loop !21

763:                                              ; preds = %683
  br label %764

764:                                              ; preds = %763, %678
  br label %1056

765:                                              ; preds = %327, %319
  %766 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %766, ptr %59, align 4, !tbaa !9
  %767 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %767, ptr %46, align 4, !tbaa !9
  %768 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %768, ptr %61, align 4, !tbaa !9
  br label %769

769:                                              ; preds = %1051, %765
  %770 = load i32, ptr %61, align 4, !tbaa !9
  %771 = load i32, ptr %46, align 4, !tbaa !9
  %772 = icmp sle i32 %770, %771
  br i1 %772, label %773, label %1054

773:                                              ; preds = %769
  %774 = load ptr, ptr %35, align 8, !tbaa !5
  %775 = load i32, ptr %61, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds double, ptr %774, i64 %776
  %778 = load double, ptr %777, align 8, !tbaa !11
  store double %778, ptr %65, align 8, !tbaa !11
  %779 = load ptr, ptr %30, align 8, !tbaa !5
  %780 = getelementptr inbounds double, ptr %779, i64 1
  %781 = load double, ptr %780, align 8, !tbaa !11
  %782 = load double, ptr %65, align 8, !tbaa !11
  %783 = fsub double %781, %782
  store double %783, ptr %66, align 8, !tbaa !11
  store i32 0, ptr %55, align 4, !tbaa !9
  %784 = load double, ptr %66, align 8, !tbaa !11
  %785 = load ptr, ptr %29, align 8, !tbaa !5
  %786 = load double, ptr %785, align 8, !tbaa !11
  %787 = fcmp ole double %784, %786
  br i1 %787, label %788, label %802

788:                                              ; preds = %773
  store i32 1, ptr %55, align 4, !tbaa !9
  %789 = load double, ptr %66, align 8, !tbaa !11
  store double %789, ptr %51, align 8, !tbaa !11
  %790 = load ptr, ptr %29, align 8, !tbaa !5
  %791 = load double, ptr %790, align 8, !tbaa !11
  %792 = fneg double %791
  store double %792, ptr %52, align 8, !tbaa !11
  %793 = load double, ptr %51, align 8, !tbaa !11
  %794 = load double, ptr %52, align 8, !tbaa !11
  %795 = fcmp ole double %793, %794
  br i1 %795, label %796, label %798

796:                                              ; preds = %788
  %797 = load double, ptr %51, align 8, !tbaa !11
  br label %800

798:                                              ; preds = %788
  %799 = load double, ptr %52, align 8, !tbaa !11
  br label %800

800:                                              ; preds = %798, %796
  %801 = phi double [ %797, %796 ], [ %799, %798 ]
  store double %801, ptr %66, align 8, !tbaa !11
  br label %802

802:                                              ; preds = %800, %773
  %803 = load ptr, ptr %23, align 8, !tbaa !5
  %804 = load i32, ptr %803, align 4, !tbaa !9
  store i32 %804, ptr %47, align 4, !tbaa !9
  store i32 2, ptr %57, align 4, !tbaa !9
  br label %805

805:                                              ; preds = %847, %802
  %806 = load i32, ptr %57, align 4, !tbaa !9
  %807 = load i32, ptr %47, align 4, !tbaa !9
  %808 = icmp sle i32 %806, %807
  br i1 %808, label %809, label %850

809:                                              ; preds = %805
  %810 = load ptr, ptr %30, align 8, !tbaa !5
  %811 = load i32, ptr %57, align 4, !tbaa !9
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds double, ptr %810, i64 %812
  %814 = load double, ptr %813, align 8, !tbaa !11
  %815 = load ptr, ptr %32, align 8, !tbaa !5
  %816 = load i32, ptr %57, align 4, !tbaa !9
  %817 = sub nsw i32 %816, 1
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds double, ptr %815, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !11
  %821 = load double, ptr %66, align 8, !tbaa !11
  %822 = fdiv double %820, %821
  %823 = fsub double %814, %822
  %824 = load double, ptr %65, align 8, !tbaa !11
  %825 = fsub double %823, %824
  store double %825, ptr %66, align 8, !tbaa !11
  %826 = load double, ptr %66, align 8, !tbaa !11
  %827 = load ptr, ptr %29, align 8, !tbaa !5
  %828 = load double, ptr %827, align 8, !tbaa !11
  %829 = fcmp ole double %826, %828
  br i1 %829, label %830, label %846

830:                                              ; preds = %809
  %831 = load i32, ptr %55, align 4, !tbaa !9
  %832 = add nsw i32 %831, 1
  store i32 %832, ptr %55, align 4, !tbaa !9
  %833 = load double, ptr %66, align 8, !tbaa !11
  store double %833, ptr %51, align 8, !tbaa !11
  %834 = load ptr, ptr %29, align 8, !tbaa !5
  %835 = load double, ptr %834, align 8, !tbaa !11
  %836 = fneg double %835
  store double %836, ptr %52, align 8, !tbaa !11
  %837 = load double, ptr %51, align 8, !tbaa !11
  %838 = load double, ptr %52, align 8, !tbaa !11
  %839 = fcmp ole double %837, %838
  br i1 %839, label %840, label %842

840:                                              ; preds = %830
  %841 = load double, ptr %51, align 8, !tbaa !11
  br label %844

842:                                              ; preds = %830
  %843 = load double, ptr %52, align 8, !tbaa !11
  br label %844

844:                                              ; preds = %842, %840
  %845 = phi double [ %841, %840 ], [ %843, %842 ]
  store double %845, ptr %66, align 8, !tbaa !11
  br label %846

846:                                              ; preds = %844, %809
  br label %847

847:                                              ; preds = %846
  %848 = load i32, ptr %57, align 4, !tbaa !9
  %849 = add nsw i32 %848, 1
  store i32 %849, ptr %57, align 4, !tbaa !9
  br label %805, !llvm.loop !22

850:                                              ; preds = %805
  %851 = load ptr, ptr %21, align 8, !tbaa !5
  %852 = load i32, ptr %851, align 4, !tbaa !9
  %853 = icmp sle i32 %852, 2
  br i1 %853, label %854, label %1001

854:                                              ; preds = %850
  %855 = load ptr, ptr %37, align 8, !tbaa !5
  %856 = load i32, ptr %61, align 4, !tbaa !9
  %857 = load i32, ptr %41, align 4, !tbaa !9
  %858 = add nsw i32 %856, %857
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds i32, ptr %855, i64 %859
  %861 = load i32, ptr %860, align 4, !tbaa !9
  store i32 %861, ptr %49, align 4, !tbaa !9
  %862 = load ptr, ptr %37, align 8, !tbaa !5
  %863 = load i32, ptr %61, align 4, !tbaa !9
  %864 = load i32, ptr %41, align 4, !tbaa !9
  %865 = shl i32 %864, 1
  %866 = add nsw i32 %863, %865
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds i32, ptr %862, i64 %867
  %869 = load i32, ptr %868, align 4, !tbaa !9
  store i32 %869, ptr %47, align 4, !tbaa !9
  %870 = load i32, ptr %49, align 4, !tbaa !9
  %871 = load i32, ptr %55, align 4, !tbaa !9
  %872 = icmp sge i32 %870, %871
  br i1 %872, label %873, label %875

873:                                              ; preds = %854
  %874 = load i32, ptr %49, align 4, !tbaa !9
  br label %877

875:                                              ; preds = %854
  %876 = load i32, ptr %55, align 4, !tbaa !9
  br label %877

877:                                              ; preds = %875, %873
  %878 = phi i32 [ %874, %873 ], [ %876, %875 ]
  store i32 %878, ptr %48, align 4, !tbaa !9
  %879 = load i32, ptr %47, align 4, !tbaa !9
  %880 = load i32, ptr %48, align 4, !tbaa !9
  %881 = icmp sle i32 %879, %880
  br i1 %881, label %882, label %884

882:                                              ; preds = %877
  %883 = load i32, ptr %47, align 4, !tbaa !9
  br label %886

884:                                              ; preds = %877
  %885 = load i32, ptr %48, align 4, !tbaa !9
  br label %886

886:                                              ; preds = %884, %882
  %887 = phi i32 [ %883, %882 ], [ %885, %884 ]
  store i32 %887, ptr %55, align 4, !tbaa !9
  %888 = load i32, ptr %55, align 4, !tbaa !9
  %889 = load ptr, ptr %37, align 8, !tbaa !5
  %890 = load i32, ptr %61, align 4, !tbaa !9
  %891 = load i32, ptr %41, align 4, !tbaa !9
  %892 = shl i32 %891, 1
  %893 = add nsw i32 %890, %892
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds i32, ptr %889, i64 %894
  %896 = load i32, ptr %895, align 4, !tbaa !9
  %897 = icmp eq i32 %888, %896
  br i1 %897, label %898, label %907

898:                                              ; preds = %886
  %899 = load double, ptr %65, align 8, !tbaa !11
  %900 = load ptr, ptr %34, align 8, !tbaa !5
  %901 = load i32, ptr %61, align 4, !tbaa !9
  %902 = load i32, ptr %43, align 4, !tbaa !9
  %903 = shl i32 %902, 1
  %904 = add nsw i32 %901, %903
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds double, ptr %900, i64 %905
  store double %899, ptr %906, align 8, !tbaa !11
  br label %1000

907:                                              ; preds = %886
  %908 = load i32, ptr %55, align 4, !tbaa !9
  %909 = load ptr, ptr %37, align 8, !tbaa !5
  %910 = load i32, ptr %61, align 4, !tbaa !9
  %911 = load i32, ptr %41, align 4, !tbaa !9
  %912 = add nsw i32 %910, %911
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds i32, ptr %909, i64 %913
  %915 = load i32, ptr %914, align 4, !tbaa !9
  %916 = icmp eq i32 %908, %915
  br i1 %916, label %917, label %925

917:                                              ; preds = %907
  %918 = load double, ptr %65, align 8, !tbaa !11
  %919 = load ptr, ptr %34, align 8, !tbaa !5
  %920 = load i32, ptr %61, align 4, !tbaa !9
  %921 = load i32, ptr %43, align 4, !tbaa !9
  %922 = add nsw i32 %920, %921
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds double, ptr %919, i64 %923
  store double %918, ptr %924, align 8, !tbaa !11
  br label %999

925:                                              ; preds = %907
  %926 = load i32, ptr %59, align 4, !tbaa !9
  %927 = load ptr, ptr %24, align 8, !tbaa !5
  %928 = load i32, ptr %927, align 4, !tbaa !9
  %929 = icmp slt i32 %926, %928
  br i1 %929, label %930, label %993

930:                                              ; preds = %925
  %931 = load i32, ptr %59, align 4, !tbaa !9
  %932 = add nsw i32 %931, 1
  store i32 %932, ptr %59, align 4, !tbaa !9
  %933 = load ptr, ptr %34, align 8, !tbaa !5
  %934 = load i32, ptr %61, align 4, !tbaa !9
  %935 = load i32, ptr %43, align 4, !tbaa !9
  %936 = shl i32 %935, 1
  %937 = add nsw i32 %934, %936
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds double, ptr %933, i64 %938
  %940 = load double, ptr %939, align 8, !tbaa !11
  %941 = load ptr, ptr %34, align 8, !tbaa !5
  %942 = load i32, ptr %59, align 4, !tbaa !9
  %943 = load i32, ptr %43, align 4, !tbaa !9
  %944 = shl i32 %943, 1
  %945 = add nsw i32 %942, %944
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds double, ptr %941, i64 %946
  store double %940, ptr %947, align 8, !tbaa !11
  %948 = load ptr, ptr %37, align 8, !tbaa !5
  %949 = load i32, ptr %61, align 4, !tbaa !9
  %950 = load i32, ptr %41, align 4, !tbaa !9
  %951 = shl i32 %950, 1
  %952 = add nsw i32 %949, %951
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds i32, ptr %948, i64 %953
  %955 = load i32, ptr %954, align 4, !tbaa !9
  %956 = load ptr, ptr %37, align 8, !tbaa !5
  %957 = load i32, ptr %59, align 4, !tbaa !9
  %958 = load i32, ptr %41, align 4, !tbaa !9
  %959 = shl i32 %958, 1
  %960 = add nsw i32 %957, %959
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %956, i64 %961
  store i32 %955, ptr %962, align 4, !tbaa !9
  %963 = load double, ptr %65, align 8, !tbaa !11
  %964 = load ptr, ptr %34, align 8, !tbaa !5
  %965 = load i32, ptr %59, align 4, !tbaa !9
  %966 = load i32, ptr %43, align 4, !tbaa !9
  %967 = add nsw i32 %965, %966
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds double, ptr %964, i64 %968
  store double %963, ptr %969, align 8, !tbaa !11
  %970 = load i32, ptr %55, align 4, !tbaa !9
  %971 = load ptr, ptr %37, align 8, !tbaa !5
  %972 = load i32, ptr %59, align 4, !tbaa !9
  %973 = load i32, ptr %41, align 4, !tbaa !9
  %974 = add nsw i32 %972, %973
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds i32, ptr %971, i64 %975
  store i32 %970, ptr %976, align 4, !tbaa !9
  %977 = load double, ptr %65, align 8, !tbaa !11
  %978 = load ptr, ptr %34, align 8, !tbaa !5
  %979 = load i32, ptr %61, align 4, !tbaa !9
  %980 = load i32, ptr %43, align 4, !tbaa !9
  %981 = shl i32 %980, 1
  %982 = add nsw i32 %979, %981
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds double, ptr %978, i64 %983
  store double %977, ptr %984, align 8, !tbaa !11
  %985 = load i32, ptr %55, align 4, !tbaa !9
  %986 = load ptr, ptr %37, align 8, !tbaa !5
  %987 = load i32, ptr %61, align 4, !tbaa !9
  %988 = load i32, ptr %41, align 4, !tbaa !9
  %989 = shl i32 %988, 1
  %990 = add nsw i32 %987, %989
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds i32, ptr %986, i64 %991
  store i32 %985, ptr %992, align 4, !tbaa !9
  br label %998

993:                                              ; preds = %925
  %994 = load ptr, ptr %24, align 8, !tbaa !5
  %995 = load i32, ptr %994, align 4, !tbaa !9
  %996 = add nsw i32 %995, 1
  %997 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 %996, ptr %997, align 4, !tbaa !9
  store i32 1, ptr %67, align 4
  br label %1387

998:                                              ; preds = %930
  br label %999

999:                                              ; preds = %998, %917
  br label %1000

1000:                                             ; preds = %999, %898
  br label %1050

1001:                                             ; preds = %850
  %1002 = load i32, ptr %55, align 4, !tbaa !9
  %1003 = load ptr, ptr %33, align 8, !tbaa !5
  %1004 = load i32, ptr %61, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds i32, ptr %1003, i64 %1005
  %1007 = load i32, ptr %1006, align 4, !tbaa !9
  %1008 = icmp sle i32 %1002, %1007
  br i1 %1008, label %1009, label %1024

1009:                                             ; preds = %1001
  %1010 = load double, ptr %65, align 8, !tbaa !11
  %1011 = load ptr, ptr %34, align 8, !tbaa !5
  %1012 = load i32, ptr %61, align 4, !tbaa !9
  %1013 = load i32, ptr %43, align 4, !tbaa !9
  %1014 = add nsw i32 %1012, %1013
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds double, ptr %1011, i64 %1015
  store double %1010, ptr %1016, align 8, !tbaa !11
  %1017 = load i32, ptr %55, align 4, !tbaa !9
  %1018 = load ptr, ptr %37, align 8, !tbaa !5
  %1019 = load i32, ptr %61, align 4, !tbaa !9
  %1020 = load i32, ptr %41, align 4, !tbaa !9
  %1021 = add nsw i32 %1019, %1020
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds i32, ptr %1018, i64 %1022
  store i32 %1017, ptr %1023, align 4, !tbaa !9
  br label %1024

1024:                                             ; preds = %1009, %1001
  %1025 = load i32, ptr %55, align 4, !tbaa !9
  %1026 = load ptr, ptr %33, align 8, !tbaa !5
  %1027 = load i32, ptr %61, align 4, !tbaa !9
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds i32, ptr %1026, i64 %1028
  %1030 = load i32, ptr %1029, align 4, !tbaa !9
  %1031 = icmp sge i32 %1025, %1030
  br i1 %1031, label %1032, label %1049

1032:                                             ; preds = %1024
  %1033 = load double, ptr %65, align 8, !tbaa !11
  %1034 = load ptr, ptr %34, align 8, !tbaa !5
  %1035 = load i32, ptr %61, align 4, !tbaa !9
  %1036 = load i32, ptr %43, align 4, !tbaa !9
  %1037 = shl i32 %1036, 1
  %1038 = add nsw i32 %1035, %1037
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds double, ptr %1034, i64 %1039
  store double %1033, ptr %1040, align 8, !tbaa !11
  %1041 = load i32, ptr %55, align 4, !tbaa !9
  %1042 = load ptr, ptr %37, align 8, !tbaa !5
  %1043 = load i32, ptr %61, align 4, !tbaa !9
  %1044 = load i32, ptr %41, align 4, !tbaa !9
  %1045 = shl i32 %1044, 1
  %1046 = add nsw i32 %1043, %1045
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds i32, ptr %1042, i64 %1047
  store i32 %1041, ptr %1048, align 4, !tbaa !9
  br label %1049

1049:                                             ; preds = %1032, %1024
  br label %1050

1050:                                             ; preds = %1049, %1000
  br label %1051

1051:                                             ; preds = %1050
  %1052 = load i32, ptr %61, align 4, !tbaa !9
  %1053 = add nsw i32 %1052, 1
  store i32 %1053, ptr %61, align 4, !tbaa !9
  br label %769, !llvm.loop !23

1054:                                             ; preds = %769
  %1055 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %1055, ptr %62, align 4, !tbaa !9
  br label %1056

1056:                                             ; preds = %1054, %764
  %1057 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %1057, ptr %58, align 4, !tbaa !9
  %1058 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %1058, ptr %46, align 4, !tbaa !9
  %1059 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %1059, ptr %61, align 4, !tbaa !9
  br label %1060

1060:                                             ; preds = %1326, %1056
  %1061 = load i32, ptr %61, align 4, !tbaa !9
  %1062 = load i32, ptr %46, align 4, !tbaa !9
  %1063 = icmp sle i32 %1061, %1062
  br i1 %1063, label %1064, label %1329

1064:                                             ; preds = %1060
  %1065 = load ptr, ptr %34, align 8, !tbaa !5
  %1066 = load i32, ptr %61, align 4, !tbaa !9
  %1067 = load i32, ptr %43, align 4, !tbaa !9
  %1068 = shl i32 %1067, 1
  %1069 = add nsw i32 %1066, %1068
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds double, ptr %1065, i64 %1070
  %1072 = load double, ptr %1071, align 8, !tbaa !11
  %1073 = load ptr, ptr %34, align 8, !tbaa !5
  %1074 = load i32, ptr %61, align 4, !tbaa !9
  %1075 = load i32, ptr %43, align 4, !tbaa !9
  %1076 = add nsw i32 %1074, %1075
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds double, ptr %1073, i64 %1077
  %1079 = load double, ptr %1078, align 8, !tbaa !11
  %1080 = fsub double %1072, %1079
  store double %1080, ptr %51, align 8, !tbaa !11
  %1081 = load double, ptr %51, align 8, !tbaa !11
  %1082 = fcmp oge double %1081, 0.000000e+00
  br i1 %1082, label %1083, label %1085

1083:                                             ; preds = %1064
  %1084 = load double, ptr %51, align 8, !tbaa !11
  br label %1088

1085:                                             ; preds = %1064
  %1086 = load double, ptr %51, align 8, !tbaa !11
  %1087 = fneg double %1086
  br label %1088

1088:                                             ; preds = %1085, %1083
  %1089 = phi double [ %1084, %1083 ], [ %1087, %1085 ]
  store double %1089, ptr %65, align 8, !tbaa !11
  %1090 = load ptr, ptr %34, align 8, !tbaa !5
  %1091 = load i32, ptr %61, align 4, !tbaa !9
  %1092 = load i32, ptr %43, align 4, !tbaa !9
  %1093 = shl i32 %1092, 1
  %1094 = add nsw i32 %1091, %1093
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds double, ptr %1090, i64 %1095
  %1097 = load double, ptr %1096, align 8, !tbaa !11
  store double %1097, ptr %51, align 8, !tbaa !11
  %1098 = load double, ptr %51, align 8, !tbaa !11
  %1099 = fcmp oge double %1098, 0.000000e+00
  br i1 %1099, label %1100, label %1102

1100:                                             ; preds = %1088
  %1101 = load double, ptr %51, align 8, !tbaa !11
  br label %1105

1102:                                             ; preds = %1088
  %1103 = load double, ptr %51, align 8, !tbaa !11
  %1104 = fneg double %1103
  br label %1105

1105:                                             ; preds = %1102, %1100
  %1106 = phi double [ %1101, %1100 ], [ %1104, %1102 ]
  store double %1106, ptr %53, align 8, !tbaa !11
  %1107 = load ptr, ptr %34, align 8, !tbaa !5
  %1108 = load i32, ptr %61, align 4, !tbaa !9
  %1109 = load i32, ptr %43, align 4, !tbaa !9
  %1110 = add nsw i32 %1108, %1109
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds double, ptr %1107, i64 %1111
  %1113 = load double, ptr %1112, align 8, !tbaa !11
  store double %1113, ptr %52, align 8, !tbaa !11
  %1114 = load double, ptr %52, align 8, !tbaa !11
  %1115 = fcmp oge double %1114, 0.000000e+00
  br i1 %1115, label %1116, label %1118

1116:                                             ; preds = %1105
  %1117 = load double, ptr %52, align 8, !tbaa !11
  br label %1121

1118:                                             ; preds = %1105
  %1119 = load double, ptr %52, align 8, !tbaa !11
  %1120 = fneg double %1119
  br label %1121

1121:                                             ; preds = %1118, %1116
  %1122 = phi double [ %1117, %1116 ], [ %1120, %1118 ]
  store double %1122, ptr %54, align 8, !tbaa !11
  %1123 = load double, ptr %53, align 8, !tbaa !11
  %1124 = load double, ptr %54, align 8, !tbaa !11
  %1125 = fcmp oge double %1123, %1124
  br i1 %1125, label %1126, label %1128

1126:                                             ; preds = %1121
  %1127 = load double, ptr %53, align 8, !tbaa !11
  br label %1130

1128:                                             ; preds = %1121
  %1129 = load double, ptr %54, align 8, !tbaa !11
  br label %1130

1130:                                             ; preds = %1128, %1126
  %1131 = phi double [ %1127, %1126 ], [ %1129, %1128 ]
  store double %1131, ptr %66, align 8, !tbaa !11
  %1132 = load ptr, ptr %27, align 8, !tbaa !5
  %1133 = load double, ptr %1132, align 8, !tbaa !11
  %1134 = load ptr, ptr %29, align 8, !tbaa !5
  %1135 = load double, ptr %1134, align 8, !tbaa !11
  %1136 = fcmp oge double %1133, %1135
  br i1 %1136, label %1137, label %1140

1137:                                             ; preds = %1130
  %1138 = load ptr, ptr %27, align 8, !tbaa !5
  %1139 = load double, ptr %1138, align 8, !tbaa !11
  br label %1143

1140:                                             ; preds = %1130
  %1141 = load ptr, ptr %29, align 8, !tbaa !5
  %1142 = load double, ptr %1141, align 8, !tbaa !11
  br label %1143

1143:                                             ; preds = %1140, %1137
  %1144 = phi double [ %1139, %1137 ], [ %1142, %1140 ]
  store double %1144, ptr %51, align 8, !tbaa !11
  %1145 = load ptr, ptr %28, align 8, !tbaa !5
  %1146 = load double, ptr %1145, align 8, !tbaa !11
  %1147 = load double, ptr %66, align 8, !tbaa !11
  %1148 = fmul double %1146, %1147
  store double %1148, ptr %52, align 8, !tbaa !11
  %1149 = load double, ptr %65, align 8, !tbaa !11
  %1150 = load double, ptr %51, align 8, !tbaa !11
  %1151 = load double, ptr %52, align 8, !tbaa !11
  %1152 = fcmp oge double %1150, %1151
  br i1 %1152, label %1153, label %1155

1153:                                             ; preds = %1143
  %1154 = load double, ptr %51, align 8, !tbaa !11
  br label %1157

1155:                                             ; preds = %1143
  %1156 = load double, ptr %52, align 8, !tbaa !11
  br label %1157

1157:                                             ; preds = %1155, %1153
  %1158 = phi double [ %1154, %1153 ], [ %1156, %1155 ]
  %1159 = fcmp olt double %1149, %1158
  br i1 %1159, label %1177, label %1160

1160:                                             ; preds = %1157
  %1161 = load ptr, ptr %37, align 8, !tbaa !5
  %1162 = load i32, ptr %61, align 4, !tbaa !9
  %1163 = load i32, ptr %41, align 4, !tbaa !9
  %1164 = add nsw i32 %1162, %1163
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds i32, ptr %1161, i64 %1165
  %1167 = load i32, ptr %1166, align 4, !tbaa !9
  %1168 = load ptr, ptr %37, align 8, !tbaa !5
  %1169 = load i32, ptr %61, align 4, !tbaa !9
  %1170 = load i32, ptr %41, align 4, !tbaa !9
  %1171 = shl i32 %1170, 1
  %1172 = add nsw i32 %1169, %1171
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds i32, ptr %1168, i64 %1173
  %1175 = load i32, ptr %1174, align 4, !tbaa !9
  %1176 = icmp sge i32 %1167, %1175
  br i1 %1176, label %1177, label %1325

1177:                                             ; preds = %1160, %1157
  %1178 = load i32, ptr %61, align 4, !tbaa !9
  %1179 = load i32, ptr %58, align 4, !tbaa !9
  %1180 = icmp sgt i32 %1178, %1179
  br i1 %1180, label %1181, label %1322

1181:                                             ; preds = %1177
  %1182 = load ptr, ptr %34, align 8, !tbaa !5
  %1183 = load i32, ptr %61, align 4, !tbaa !9
  %1184 = load i32, ptr %43, align 4, !tbaa !9
  %1185 = add nsw i32 %1183, %1184
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds double, ptr %1182, i64 %1186
  %1188 = load double, ptr %1187, align 8, !tbaa !11
  store double %1188, ptr %65, align 8, !tbaa !11
  %1189 = load ptr, ptr %34, align 8, !tbaa !5
  %1190 = load i32, ptr %61, align 4, !tbaa !9
  %1191 = load i32, ptr %43, align 4, !tbaa !9
  %1192 = shl i32 %1191, 1
  %1193 = add nsw i32 %1190, %1192
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds double, ptr %1189, i64 %1194
  %1196 = load double, ptr %1195, align 8, !tbaa !11
  store double %1196, ptr %66, align 8, !tbaa !11
  %1197 = load ptr, ptr %37, align 8, !tbaa !5
  %1198 = load i32, ptr %61, align 4, !tbaa !9
  %1199 = load i32, ptr %41, align 4, !tbaa !9
  %1200 = add nsw i32 %1198, %1199
  %1201 = sext i32 %1200 to i64
  %1202 = getelementptr inbounds i32, ptr %1197, i64 %1201
  %1203 = load i32, ptr %1202, align 4, !tbaa !9
  store i32 %1203, ptr %55, align 4, !tbaa !9
  %1204 = load ptr, ptr %37, align 8, !tbaa !5
  %1205 = load i32, ptr %61, align 4, !tbaa !9
  %1206 = load i32, ptr %41, align 4, !tbaa !9
  %1207 = shl i32 %1206, 1
  %1208 = add nsw i32 %1205, %1207
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds i32, ptr %1204, i64 %1209
  %1211 = load i32, ptr %1210, align 4, !tbaa !9
  store i32 %1211, ptr %56, align 4, !tbaa !9
  %1212 = load ptr, ptr %34, align 8, !tbaa !5
  %1213 = load i32, ptr %58, align 4, !tbaa !9
  %1214 = load i32, ptr %43, align 4, !tbaa !9
  %1215 = add nsw i32 %1213, %1214
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds double, ptr %1212, i64 %1216
  %1218 = load double, ptr %1217, align 8, !tbaa !11
  %1219 = load ptr, ptr %34, align 8, !tbaa !5
  %1220 = load i32, ptr %61, align 4, !tbaa !9
  %1221 = load i32, ptr %43, align 4, !tbaa !9
  %1222 = add nsw i32 %1220, %1221
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds double, ptr %1219, i64 %1223
  store double %1218, ptr %1224, align 8, !tbaa !11
  %1225 = load ptr, ptr %34, align 8, !tbaa !5
  %1226 = load i32, ptr %58, align 4, !tbaa !9
  %1227 = load i32, ptr %43, align 4, !tbaa !9
  %1228 = shl i32 %1227, 1
  %1229 = add nsw i32 %1226, %1228
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds double, ptr %1225, i64 %1230
  %1232 = load double, ptr %1231, align 8, !tbaa !11
  %1233 = load ptr, ptr %34, align 8, !tbaa !5
  %1234 = load i32, ptr %61, align 4, !tbaa !9
  %1235 = load i32, ptr %43, align 4, !tbaa !9
  %1236 = shl i32 %1235, 1
  %1237 = add nsw i32 %1234, %1236
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr inbounds double, ptr %1233, i64 %1238
  store double %1232, ptr %1239, align 8, !tbaa !11
  %1240 = load ptr, ptr %37, align 8, !tbaa !5
  %1241 = load i32, ptr %58, align 4, !tbaa !9
  %1242 = load i32, ptr %41, align 4, !tbaa !9
  %1243 = add nsw i32 %1241, %1242
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds i32, ptr %1240, i64 %1244
  %1246 = load i32, ptr %1245, align 4, !tbaa !9
  %1247 = load ptr, ptr %37, align 8, !tbaa !5
  %1248 = load i32, ptr %61, align 4, !tbaa !9
  %1249 = load i32, ptr %41, align 4, !tbaa !9
  %1250 = add nsw i32 %1248, %1249
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds i32, ptr %1247, i64 %1251
  store i32 %1246, ptr %1252, align 4, !tbaa !9
  %1253 = load ptr, ptr %37, align 8, !tbaa !5
  %1254 = load i32, ptr %58, align 4, !tbaa !9
  %1255 = load i32, ptr %41, align 4, !tbaa !9
  %1256 = shl i32 %1255, 1
  %1257 = add nsw i32 %1254, %1256
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds i32, ptr %1253, i64 %1258
  %1260 = load i32, ptr %1259, align 4, !tbaa !9
  %1261 = load ptr, ptr %37, align 8, !tbaa !5
  %1262 = load i32, ptr %61, align 4, !tbaa !9
  %1263 = load i32, ptr %41, align 4, !tbaa !9
  %1264 = shl i32 %1263, 1
  %1265 = add nsw i32 %1262, %1264
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds i32, ptr %1261, i64 %1266
  store i32 %1260, ptr %1267, align 4, !tbaa !9
  %1268 = load double, ptr %65, align 8, !tbaa !11
  %1269 = load ptr, ptr %34, align 8, !tbaa !5
  %1270 = load i32, ptr %58, align 4, !tbaa !9
  %1271 = load i32, ptr %43, align 4, !tbaa !9
  %1272 = add nsw i32 %1270, %1271
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds double, ptr %1269, i64 %1273
  store double %1268, ptr %1274, align 8, !tbaa !11
  %1275 = load double, ptr %66, align 8, !tbaa !11
  %1276 = load ptr, ptr %34, align 8, !tbaa !5
  %1277 = load i32, ptr %58, align 4, !tbaa !9
  %1278 = load i32, ptr %43, align 4, !tbaa !9
  %1279 = shl i32 %1278, 1
  %1280 = add nsw i32 %1277, %1279
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds double, ptr %1276, i64 %1281
  store double %1275, ptr %1282, align 8, !tbaa !11
  %1283 = load i32, ptr %55, align 4, !tbaa !9
  %1284 = load ptr, ptr %37, align 8, !tbaa !5
  %1285 = load i32, ptr %58, align 4, !tbaa !9
  %1286 = load i32, ptr %41, align 4, !tbaa !9
  %1287 = add nsw i32 %1285, %1286
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds i32, ptr %1284, i64 %1288
  store i32 %1283, ptr %1289, align 4, !tbaa !9
  %1290 = load i32, ptr %56, align 4, !tbaa !9
  %1291 = load ptr, ptr %37, align 8, !tbaa !5
  %1292 = load i32, ptr %58, align 4, !tbaa !9
  %1293 = load i32, ptr %41, align 4, !tbaa !9
  %1294 = shl i32 %1293, 1
  %1295 = add nsw i32 %1292, %1294
  %1296 = sext i32 %1295 to i64
  %1297 = getelementptr inbounds i32, ptr %1291, i64 %1296
  store i32 %1290, ptr %1297, align 4, !tbaa !9
  %1298 = load ptr, ptr %21, align 8, !tbaa !5
  %1299 = load i32, ptr %1298, align 4, !tbaa !9
  %1300 = icmp eq i32 %1299, 3
  br i1 %1300, label %1301, label %1321

1301:                                             ; preds = %1181
  %1302 = load ptr, ptr %33, align 8, !tbaa !5
  %1303 = load i32, ptr %61, align 4, !tbaa !9
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds i32, ptr %1302, i64 %1304
  %1306 = load i32, ptr %1305, align 4, !tbaa !9
  store i32 %1306, ptr %55, align 4, !tbaa !9
  %1307 = load ptr, ptr %33, align 8, !tbaa !5
  %1308 = load i32, ptr %58, align 4, !tbaa !9
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds i32, ptr %1307, i64 %1309
  %1311 = load i32, ptr %1310, align 4, !tbaa !9
  %1312 = load ptr, ptr %33, align 8, !tbaa !5
  %1313 = load i32, ptr %61, align 4, !tbaa !9
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds i32, ptr %1312, i64 %1314
  store i32 %1311, ptr %1315, align 4, !tbaa !9
  %1316 = load i32, ptr %55, align 4, !tbaa !9
  %1317 = load ptr, ptr %33, align 8, !tbaa !5
  %1318 = load i32, ptr %58, align 4, !tbaa !9
  %1319 = sext i32 %1318 to i64
  %1320 = getelementptr inbounds i32, ptr %1317, i64 %1319
  store i32 %1316, ptr %1320, align 4, !tbaa !9
  br label %1321

1321:                                             ; preds = %1301, %1181
  br label %1322

1322:                                             ; preds = %1321, %1177
  %1323 = load i32, ptr %58, align 4, !tbaa !9
  %1324 = add nsw i32 %1323, 1
  store i32 %1324, ptr %58, align 4, !tbaa !9
  br label %1325

1325:                                             ; preds = %1322, %1160
  br label %1326

1326:                                             ; preds = %1325
  %1327 = load i32, ptr %61, align 4, !tbaa !9
  %1328 = add nsw i32 %1327, 1
  store i32 %1328, ptr %61, align 4, !tbaa !9
  br label %1060, !llvm.loop !24

1329:                                             ; preds = %1060
  %1330 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %1330, ptr %60, align 4, !tbaa !9
  %1331 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %1331, ptr %46, align 4, !tbaa !9
  %1332 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %1332, ptr %61, align 4, !tbaa !9
  br label %1333

1333:                                             ; preds = %1359, %1329
  %1334 = load i32, ptr %61, align 4, !tbaa !9
  %1335 = load i32, ptr %46, align 4, !tbaa !9
  %1336 = icmp sle i32 %1334, %1335
  br i1 %1336, label %1337, label %1362

1337:                                             ; preds = %1333
  %1338 = load ptr, ptr %34, align 8, !tbaa !5
  %1339 = load i32, ptr %61, align 4, !tbaa !9
  %1340 = load i32, ptr %43, align 4, !tbaa !9
  %1341 = add nsw i32 %1339, %1340
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds double, ptr %1338, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = load ptr, ptr %34, align 8, !tbaa !5
  %1346 = load i32, ptr %61, align 4, !tbaa !9
  %1347 = load i32, ptr %43, align 4, !tbaa !9
  %1348 = shl i32 %1347, 1
  %1349 = add nsw i32 %1346, %1348
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds double, ptr %1345, i64 %1350
  %1352 = load double, ptr %1351, align 8, !tbaa !11
  %1353 = fadd double %1344, %1352
  %1354 = fmul double %1353, 5.000000e-01
  %1355 = load ptr, ptr %35, align 8, !tbaa !5
  %1356 = load i32, ptr %61, align 4, !tbaa !9
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds double, ptr %1355, i64 %1357
  store double %1354, ptr %1358, align 8, !tbaa !11
  br label %1359

1359:                                             ; preds = %1337
  %1360 = load i32, ptr %61, align 4, !tbaa !9
  %1361 = add nsw i32 %1360, 1
  store i32 %1361, ptr %61, align 4, !tbaa !9
  br label %1333, !llvm.loop !25

1362:                                             ; preds = %1333
  %1363 = load i32, ptr %60, align 4, !tbaa !9
  %1364 = load i32, ptr %62, align 4, !tbaa !9
  %1365 = icmp sgt i32 %1363, %1364
  br i1 %1365, label %1366, label %1367

1366:                                             ; preds = %1362
  br label %1372

1367:                                             ; preds = %1362
  br label %1368

1368:                                             ; preds = %1367
  %1369 = load i32, ptr %64, align 4, !tbaa !9
  %1370 = add nsw i32 %1369, 1
  store i32 %1370, ptr %64, align 4, !tbaa !9
  br label %315, !llvm.loop !26

1371:                                             ; preds = %315
  br label %1372

1372:                                             ; preds = %1371, %1366
  %1373 = load i32, ptr %62, align 4, !tbaa !9
  %1374 = add nsw i32 %1373, 1
  %1375 = load i32, ptr %60, align 4, !tbaa !9
  %1376 = sub nsw i32 %1374, %1375
  store i32 %1376, ptr %45, align 4, !tbaa !9
  %1377 = load i32, ptr %45, align 4, !tbaa !9
  %1378 = icmp sge i32 %1377, 0
  br i1 %1378, label %1379, label %1381

1379:                                             ; preds = %1372
  %1380 = load i32, ptr %45, align 4, !tbaa !9
  br label %1382

1381:                                             ; preds = %1372
  br label %1382

1382:                                             ; preds = %1381, %1379
  %1383 = phi i32 [ %1380, %1379 ], [ 0, %1381 ]
  %1384 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 %1383, ptr %1384, align 4, !tbaa !9
  %1385 = load i32, ptr %62, align 4, !tbaa !9
  %1386 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 %1385, ptr %1386, align 4, !tbaa !9
  store i32 1, ptr %67, align 4
  br label %1387

1387:                                             ; preds = %1382, %993, %677, %272, %110
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #2
  ret void
}

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

; 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 = { 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}


; 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"

; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable
define dso_local void @dlaebz_(ptr nocapture noundef readonly %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 readonly %8, ptr nocapture noundef readonly %9, ptr nocapture noundef readnone %10, ptr nocapture noundef readonly %11, ptr nocapture noundef %12, ptr nocapture noundef %13, ptr nocapture noundef %14, ptr nocapture noundef %15, ptr nocapture noundef %16, ptr nocapture noundef writeonly %17, ptr nocapture noundef %18, ptr nocapture noundef %19) local_unnamed_addr #0 {
  %21 = ptrtoint ptr %13 to i64
  %22 = ptrtoint ptr %14 to i64
  %23 = ptrtoint ptr %13 to i64
  %24 = ptrtoint ptr %14 to i64
  %25 = load i32, ptr %3, align 4, !tbaa !5
  %narrow = xor i32 %25, -1
  %26 = sext i32 %narrow to i64
  %27 = getelementptr inbounds i32, ptr %16, i64 %26
  %28 = getelementptr inbounds double, ptr %13, i64 %26
  %29 = getelementptr inbounds i8, ptr %9, i64 -8
  %30 = getelementptr inbounds i8, ptr %12, i64 -4
  %31 = getelementptr inbounds i8, ptr %14, i64 -8
  %32 = getelementptr inbounds i8, ptr %17, i64 -8
  %33 = getelementptr inbounds i8, ptr %18, i64 -4
  store i32 0, ptr %19, align 4, !tbaa !5
  %34 = load i32, ptr %0, align 4, !tbaa !5
  %35 = add i32 %34, -4
  %or.cond = icmp ult i32 %35, -3
  br i1 %or.cond, label %36, label %37

36:                                               ; preds = %20
  store i32 -1, ptr %19, align 4, !tbaa !5
  br label %.loopexit

37:                                               ; preds = %20
  %38 = icmp eq i32 %34, 1
  br i1 %38, label %39, label %110

39:                                               ; preds = %37
  store i32 0, ptr %15, align 4, !tbaa !5
  %40 = load i32, ptr %4, align 4, !tbaa !5
  %.not593671 = icmp slt i32 %40, 1
  br i1 %.not593671, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %39
  %41 = load double, ptr %9, align 8, !tbaa !9
  %42 = load double, ptr %8, align 8, !tbaa !9
  %43 = fneg double %42
  %invariant.gep662 = getelementptr i8, ptr %11, i64 -16
  %44 = shl i32 %25, 1
  %45 = sext i32 %25 to i64
  %46 = sext i32 %44 to i64
  %47 = add nuw i32 %40, 1
  %wide.trip.count731 = zext i32 %47 to i64
  %48 = shl nsw i64 %45, 1
  %invariant.gep745 = getelementptr i32, ptr %27, i64 %46
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge669.1
  %indvars.iv728 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next729, %._crit_edge669.1 ]
  %49 = add nsw i64 %indvars.iv728, %45
  %50 = getelementptr inbounds double, ptr %28, i64 %49
  %51 = load double, ptr %50, align 8, !tbaa !9
  %52 = fsub double %41, %51
  %53 = fcmp oge double %52, 0.000000e+00
  %54 = fneg double %52
  %55 = select i1 %53, double %52, double %54
  %56 = fcmp olt double %55, %42
  %.0529 = select i1 %56, double %43, double %52
  %57 = getelementptr inbounds i32, ptr %27, i64 %49
  %58 = fcmp ole double %.0529, 0.000000e+00
  %storemerge = zext i1 %58 to i32
  store i32 %storemerge, ptr %57, align 4, !tbaa !5
  %59 = load i32, ptr %2, align 4, !tbaa !5
  %.not594664 = icmp slt i32 %59, 2
  br i1 %.not594664, label %._crit_edge669, label %.lr.ph668.preheader

.lr.ph668.preheader:                              ; preds = %.preheader
  %60 = add nuw i32 %59, 1
  %wide.trip.count722 = zext i32 %60 to i64
  br label %.lr.ph668

.lr.ph668:                                        ; preds = %.lr.ph668.preheader, %75
  %61 = phi i32 [ %storemerge, %.lr.ph668.preheader ], [ %76, %75 ]
  %indvars.iv719 = phi i64 [ 2, %.lr.ph668.preheader ], [ %indvars.iv.next720, %75 ]
  %.1530666 = phi double [ %.0529, %.lr.ph668.preheader ], [ %.2531, %75 ]
  %62 = getelementptr inbounds double, ptr %29, i64 %indvars.iv719
  %63 = load double, ptr %62, align 8, !tbaa !9
  %gep663 = getelementptr double, ptr %invariant.gep662, i64 %indvars.iv719
  %64 = load double, ptr %gep663, align 8, !tbaa !9
  %65 = fdiv double %64, %.1530666
  %66 = fsub double %63, %65
  %67 = fsub double %66, %51
  %68 = fcmp oge double %67, 0.000000e+00
  %69 = fneg double %67
  %70 = select i1 %68, double %67, double %69
  %71 = fcmp olt double %70, %42
  %.2531 = select i1 %71, double %43, double %67
  %72 = fcmp ugt double %.2531, 0.000000e+00
  br i1 %72, label %75, label %73

73:                                               ; preds = %.lr.ph668
  %74 = add nsw i32 %61, 1
  store i32 %74, ptr %57, align 4, !tbaa !5
  br label %75

75:                                               ; preds = %.lr.ph668, %73
  %76 = phi i32 [ %61, %.lr.ph668 ], [ %74, %73 ]
  %indvars.iv.next720 = add nuw nsw i64 %indvars.iv719, 1
  %exitcond723.not = icmp eq i64 %indvars.iv.next720, %wide.trip.count722
  br i1 %exitcond723.not, label %._crit_edge669, label %.lr.ph668, !llvm.loop !11

._crit_edge669:                                   ; preds = %75, %.preheader
  %77 = add nsw i64 %48, %indvars.iv728
  %78 = getelementptr inbounds double, ptr %28, i64 %77
  %79 = load double, ptr %78, align 8, !tbaa !9
  %80 = fsub double %41, %79
  %81 = fcmp oge double %80, 0.000000e+00
  %82 = fneg double %80
  %83 = select i1 %81, double %80, double %82
  %84 = fcmp olt double %83, %42
  %.0529.1 = select i1 %84, double %43, double %80
  %85 = getelementptr inbounds i32, ptr %27, i64 %77
  %86 = fcmp ole double %.0529.1, 0.000000e+00
  %storemerge.1 = zext i1 %86 to i32
  store i32 %storemerge.1, ptr %85, align 4, !tbaa !5
  %87 = load i32, ptr %2, align 4, !tbaa !5
  %.not594664.1 = icmp slt i32 %87, 2
  br i1 %.not594664.1, label %._crit_edge669.1, label %.lr.ph668.preheader.1

.lr.ph668.preheader.1:                            ; preds = %._crit_edge669
  %88 = add nuw i32 %87, 1
  %wide.trip.count722.1 = zext i32 %88 to i64
  br label %.lr.ph668.1

.lr.ph668.1:                                      ; preds = %103, %.lr.ph668.preheader.1
  %89 = phi i32 [ %storemerge.1, %.lr.ph668.preheader.1 ], [ %104, %103 ]
  %indvars.iv719.1 = phi i64 [ 2, %.lr.ph668.preheader.1 ], [ %indvars.iv.next720.1, %103 ]
  %.1530666.1 = phi double [ %.0529.1, %.lr.ph668.preheader.1 ], [ %.2531.1, %103 ]
  %90 = getelementptr inbounds double, ptr %29, i64 %indvars.iv719.1
  %91 = load double, ptr %90, align 8, !tbaa !9
  %gep663.1 = getelementptr double, ptr %invariant.gep662, i64 %indvars.iv719.1
  %92 = load double, ptr %gep663.1, align 8, !tbaa !9
  %93 = fdiv double %92, %.1530666.1
  %94 = fsub double %91, %93
  %95 = fsub double %94, %79
  %96 = fcmp oge double %95, 0.000000e+00
  %97 = fneg double %95
  %98 = select i1 %96, double %95, double %97
  %99 = fcmp olt double %98, %42
  %.2531.1 = select i1 %99, double %43, double %95
  %100 = fcmp ugt double %.2531.1, 0.000000e+00
  br i1 %100, label %103, label %101

101:                                              ; preds = %.lr.ph668.1
  %102 = add nsw i32 %89, 1
  store i32 %102, ptr %85, align 4, !tbaa !5
  br label %103

103:                                              ; preds = %101, %.lr.ph668.1
  %104 = phi i32 [ %102, %101 ], [ %89, %.lr.ph668.1 ]
  %indvars.iv.next720.1 = add nuw nsw i64 %indvars.iv719.1, 1
  %exitcond723.1.not = icmp eq i64 %indvars.iv.next720.1, %wide.trip.count722.1
  br i1 %exitcond723.1.not, label %._crit_edge669.1, label %.lr.ph668.1, !llvm.loop !11

._crit_edge669.1:                                 ; preds = %103, %._crit_edge669
  %105 = load i32, ptr %15, align 4, !tbaa !5
  %gep746 = getelementptr i32, ptr %invariant.gep745, i64 %indvars.iv728
  %106 = load i32, ptr %gep746, align 4, !tbaa !5
  %107 = add nsw i32 %106, %105
  %108 = load i32, ptr %57, align 4, !tbaa !5
  %109 = sub i32 %107, %108
  store i32 %109, ptr %15, align 4, !tbaa !5
  %indvars.iv.next729 = add nuw nsw i64 %indvars.iv728, 1
  %exitcond732.not = icmp eq i64 %indvars.iv.next729, %wide.trip.count731
  br i1 %exitcond732.not, label %.loopexit, label %.preheader, !llvm.loop !13

110:                                              ; preds = %37
  %111 = load i32, ptr %4, align 4, !tbaa !5
  %112 = icmp ne i32 %34, 2
  %.not607 = icmp slt i32 %111, 1
  %or.cond673 = select i1 %112, i1 true, i1 %.not607
  br i1 %or.cond673, label %.loopexit605, label %.lr.ph

.lr.ph:                                           ; preds = %110
  %113 = shl i32 %25, 1
  %114 = sext i32 %25 to i64
  %115 = sext i32 %113 to i64
  %116 = add nuw i32 %111, 1
  %wide.trip.count = zext i32 %116 to i64
  %invariant.gep737 = getelementptr double, ptr %28, i64 %114
  %invariant.gep739 = getelementptr double, ptr %28, i64 %115
  %117 = zext nneg i32 %111 to i64
  %min.iters.check = icmp ult i32 %111, 16
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %118 = add i64 %24, -8
  %119 = shl nsw i64 %115, 3
  %120 = add i64 %119, %23
  %121 = shl nsw i64 %26, 3
  %122 = add i64 %120, %121
  %123 = sub i64 %118, %122
  %diff.check = icmp ult i64 %123, 32
  %124 = add i64 %24, -8
  %125 = shl nsw i64 %114, 3
  %126 = add i64 %125, %23
  %127 = add i64 %126, %121
  %128 = sub i64 %124, %127
  %diff.check750 = icmp ult i64 %128, 32
  %conflict.rdx = or i1 %diff.check, %diff.check750
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %117, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %129 = getelementptr double, ptr %invariant.gep737, i64 %offset.idx
  %130 = getelementptr i8, ptr %129, i64 16
  %wide.load = load <2 x double>, ptr %129, align 8, !tbaa !9
  %wide.load751 = load <2 x double>, ptr %130, align 8, !tbaa !9
  %131 = getelementptr double, ptr %invariant.gep739, i64 %offset.idx
  %132 = getelementptr i8, ptr %131, i64 16
  %wide.load752 = load <2 x double>, ptr %131, align 8, !tbaa !9
  %wide.load753 = load <2 x double>, ptr %132, align 8, !tbaa !9
  %133 = fadd <2 x double> %wide.load, %wide.load752
  %134 = fadd <2 x double> %wide.load751, %wide.load753
  %135 = fmul <2 x double> %133, <double 5.000000e-01, double 5.000000e-01>
  %136 = fmul <2 x double> %134, <double 5.000000e-01, double 5.000000e-01>
  %137 = getelementptr double, ptr %14, i64 %index
  %138 = getelementptr inbounds i8, ptr %137, i64 16
  store <2 x double> %135, ptr %137, align 8, !tbaa !9
  store <2 x double> %136, ptr %138, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %139 = icmp eq i64 %index.next, %n.vec
  br i1 %139, label %middle.block, label %vector.body, !llvm.loop !14

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %117
  br i1 %cmp.n, label %.loopexit605, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %indvars.iv.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph ], [ %ind.end, %middle.block ]
  %140 = zext nneg i32 %111 to i64
  %141 = and i32 %111, 1
  %lcmp.mod.not = icmp eq i32 %141, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %gep738.prol = getelementptr double, ptr %invariant.gep737, i64 %indvars.iv.ph
  %142 = load double, ptr %gep738.prol, align 8, !tbaa !9
  %gep740.prol = getelementptr double, ptr %invariant.gep739, i64 %indvars.iv.ph
  %143 = load double, ptr %gep740.prol, align 8, !tbaa !9
  %144 = fadd double %142, %143
  %145 = fmul double %144, 5.000000e-01
  %146 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.ph
  store double %145, ptr %146, align 8, !tbaa !9
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph.preheader ], [ %indvars.iv.next.prol, %scalar.ph.prol ]
  %147 = icmp eq i64 %indvars.iv.ph, %140
  br i1 %147, label %.loopexit605, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %gep738 = getelementptr double, ptr %invariant.gep737, i64 %indvars.iv
  %148 = load double, ptr %gep738, align 8, !tbaa !9
  %gep740 = getelementptr double, ptr %invariant.gep739, i64 %indvars.iv
  %149 = load double, ptr %gep740, align 8, !tbaa !9
  %150 = fadd double %148, %149
  %151 = fmul double %150, 5.000000e-01
  %152 = getelementptr inbounds double, ptr %31, i64 %indvars.iv
  store double %151, ptr %152, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %gep738.1 = getelementptr double, ptr %invariant.gep737, i64 %indvars.iv.next
  %153 = load double, ptr %gep738.1, align 8, !tbaa !9
  %gep740.1 = getelementptr double, ptr %invariant.gep739, i64 %indvars.iv.next
  %154 = load double, ptr %gep740.1, align 8, !tbaa !9
  %155 = fadd double %153, %154
  %156 = fmul double %155, 5.000000e-01
  %157 = getelementptr double, ptr %14, i64 %indvars.iv
  store double %156, ptr %157, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %.loopexit605, label %scalar.ph, !llvm.loop !17

.loopexit605:                                     ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %110
  %158 = load i32, ptr %1, align 4, !tbaa !5
  %.not572650 = icmp slt i32 %158, 1
  br i1 %.not572650, label %._crit_edge656, label %.lr.ph655

.lr.ph655:                                        ; preds = %.loopexit605
  %invariant.gep = getelementptr i8, ptr %11, i64 -16
  %159 = shl i32 %25, 1
  %160 = sext i32 %25 to i64
  %161 = sext i32 %159 to i64
  %invariant.gep741 = getelementptr double, ptr %28, i64 %160
  %invariant.gep743 = getelementptr double, ptr %28, i64 %161
  %162 = add i64 %22, -8
  %163 = sub i64 %162, %21
  %164 = add nsw i64 %161, %26
  %165 = shl nsw i64 %164, 3
  %166 = sub i64 %163, %165
  %167 = add nsw i64 %160, %26
  %168 = shl nsw i64 %167, 3
  %169 = sub i64 %163, %168
  %diff.check755 = icmp ult i64 %166, 32
  %diff.check756 = icmp ult i64 %169, 32
  %conflict.rdx757 = or i1 %diff.check755, %diff.check756
  br label %170

170:                                              ; preds = %._crit_edge649, %.lr.ph655
  %.0532653 = phi i32 [ 1, %.lr.ph655 ], [ %458, %._crit_edge649 ]
  %.0534652 = phi i32 [ %111, %.lr.ph655 ], [ %.1535, %._crit_edge649 ]
  %.0540651 = phi i32 [ 1, %.lr.ph655 ], [ %.0546.lcssa, %._crit_edge649 ]
  %reass.sub = sub i32 %.0534652, %.0540651
  %171 = add i32 %reass.sub, 1
  %172 = load i32, ptr %5, align 4, !tbaa !5
  %.not573 = icmp sge i32 %171, %172
  %173 = icmp sgt i32 %172, 0
  %or.cond595 = and i1 %.not573, %173
  %.not580626 = icmp sgt i32 %.0540651, %.0534652
  br i1 %or.cond595, label %.preheader600, label %.preheader601

.preheader601:                                    ; preds = %170
  br i1 %.not580626, label %.loopexit599, label %.lr.ph617.preheader

.lr.ph617.preheader:                              ; preds = %.preheader601
  %174 = sext i32 %.0540651 to i64
  %175 = add i32 %.0534652, 1
  br label %.lr.ph617

.preheader600:                                    ; preds = %170
  br i1 %.not580626, label %._crit_edge629.thread, label %.lr.ph628.preheader

.lr.ph628.preheader:                              ; preds = %.preheader600
  %176 = sext i32 %.0540651 to i64
  %177 = add i32 %.0534652, 1
  br label %.lr.ph628

.lr.ph628:                                        ; preds = %.lr.ph628.preheader, %._crit_edge625
  %indvars.iv693 = phi i64 [ %176, %.lr.ph628.preheader ], [ %indvars.iv.next694, %._crit_edge625 ]
  %178 = load double, ptr %9, align 8, !tbaa !9
  %179 = getelementptr inbounds double, ptr %31, i64 %indvars.iv693
  %180 = load double, ptr %179, align 8, !tbaa !9
  %181 = fsub double %178, %180
  %182 = getelementptr inbounds double, ptr %32, i64 %indvars.iv693
  store double %181, ptr %182, align 8, !tbaa !9
  %183 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv693
  store i32 0, ptr %183, align 4, !tbaa !5
  %184 = load double, ptr %8, align 8, !tbaa !9
  %185 = fcmp ugt double %181, %184
  br i1 %185, label %190, label %186

186:                                              ; preds = %.lr.ph628
  store i32 1, ptr %183, align 4, !tbaa !5
  %187 = fneg double %184
  %188 = fcmp ole double %181, %187
  %189 = select i1 %188, double %181, double %187
  store double %189, ptr %182, align 8, !tbaa !9
  br label %190

190:                                              ; preds = %186, %.lr.ph628
  %191 = phi i32 [ 1, %186 ], [ 0, %.lr.ph628 ]
  %192 = phi double [ %189, %186 ], [ %181, %.lr.ph628 ]
  %193 = load i32, ptr %2, align 4, !tbaa !5
  %.not592621 = icmp slt i32 %193, 2
  br i1 %.not592621, label %._crit_edge625, label %.lr.ph624.preheader

.lr.ph624.preheader:                              ; preds = %190
  %194 = add nuw i32 %193, 1
  %wide.trip.count690 = zext i32 %194 to i64
  br label %.lr.ph624

.lr.ph624:                                        ; preds = %.lr.ph624.preheader, %211
  %195 = phi i32 [ %191, %.lr.ph624.preheader ], [ %212, %211 ]
  %196 = phi double [ %192, %.lr.ph624.preheader ], [ %213, %211 ]
  %indvars.iv687 = phi i64 [ 2, %.lr.ph624.preheader ], [ %indvars.iv.next688, %211 ]
  %197 = getelementptr inbounds double, ptr %29, i64 %indvars.iv687
  %198 = load double, ptr %197, align 8, !tbaa !9
  %gep620 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv687
  %199 = load double, ptr %gep620, align 8, !tbaa !9
  %200 = fdiv double %199, %196
  %201 = fsub double %198, %200
  %202 = load double, ptr %179, align 8, !tbaa !9
  %203 = fsub double %201, %202
  store double %203, ptr %182, align 8, !tbaa !9
  %204 = load double, ptr %8, align 8, !tbaa !9
  %205 = fcmp ugt double %203, %204
  br i1 %205, label %211, label %206

206:                                              ; preds = %.lr.ph624
  %207 = add nsw i32 %195, 1
  store i32 %207, ptr %183, align 4, !tbaa !5
  %208 = fneg double %204
  %209 = fcmp ole double %203, %208
  %210 = select i1 %209, double %203, double %208
  store double %210, ptr %182, align 8, !tbaa !9
  br label %211

211:                                              ; preds = %.lr.ph624, %206
  %212 = phi i32 [ %195, %.lr.ph624 ], [ %207, %206 ]
  %213 = phi double [ %203, %.lr.ph624 ], [ %210, %206 ]
  %indvars.iv.next688 = add nuw nsw i64 %indvars.iv687, 1
  %exitcond691.not = icmp eq i64 %indvars.iv.next688, %wide.trip.count690
  br i1 %exitcond691.not, label %._crit_edge625, label %.lr.ph624, !llvm.loop !18

._crit_edge625:                                   ; preds = %211, %190
  %indvars.iv.next694 = add nsw i64 %indvars.iv693, 1
  %lftr.wideiv696 = trunc i64 %indvars.iv.next694 to i32
  %exitcond697.not = icmp eq i32 %177, %lftr.wideiv696
  br i1 %exitcond697.not, label %._crit_edge629, label %.lr.ph628, !llvm.loop !19

._crit_edge629:                                   ; preds = %._crit_edge625
  %214 = load i32, ptr %0, align 4, !tbaa !5
  %215 = icmp slt i32 %214, 3
  br i1 %215, label %.preheader597, label %.preheader598

._crit_edge629.thread:                            ; preds = %.preheader600
  %216 = load i32, ptr %0, align 4, !tbaa !5
  %217 = icmp slt i32 %216, 3
  br i1 %217, label %._crit_edge637, label %.loopexit599

.preheader598:                                    ; preds = %._crit_edge629
  br i1 %.not580626, label %.loopexit599, label %.lr.ph632.preheader

.lr.ph632.preheader:                              ; preds = %.preheader598
  %218 = sext i32 %.0540651 to i64
  %219 = add i32 %.0534652, 1
  br label %.lr.ph632

.preheader597:                                    ; preds = %._crit_edge629
  br i1 %.not580626, label %._crit_edge637, label %.lr.ph636.preheader

.lr.ph636.preheader:                              ; preds = %.preheader597
  %220 = sext i32 %.0540651 to i64
  %221 = add i32 %.0534652, 1
  br label %.lr.ph636

.lr.ph636:                                        ; preds = %.lr.ph636.preheader, %264
  %indvars.iv703 = phi i64 [ %220, %.lr.ph636.preheader ], [ %indvars.iv.next704, %264 ]
  %.0542634 = phi i32 [ %.0534652, %.lr.ph636.preheader ], [ %.1543, %264 ]
  %222 = add nsw i64 %indvars.iv703, %160
  %223 = getelementptr inbounds i32, ptr %27, i64 %222
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv703
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = add nsw i64 %indvars.iv703, %161
  %228 = getelementptr inbounds i32, ptr %27, i64 %227
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = tail call i32 @llvm.smax.i32(i32 %224, i32 %226)
  %231 = tail call i32 @llvm.smin.i32(i32 %229, i32 %230)
  store i32 %231, ptr %225, align 4, !tbaa !5
  %232 = load i32, ptr %228, align 4, !tbaa !5
  %233 = icmp eq i32 %231, %232
  br i1 %233, label %234, label %238

234:                                              ; preds = %.lr.ph636
  %235 = getelementptr inbounds double, ptr %31, i64 %indvars.iv703
  %236 = load double, ptr %235, align 8, !tbaa !9
  %237 = getelementptr inbounds double, ptr %28, i64 %227
  store double %236, ptr %237, align 8, !tbaa !9
  br label %264

238:                                              ; preds = %.lr.ph636
  %239 = load i32, ptr %223, align 4, !tbaa !5
  %240 = icmp eq i32 %231, %239
  br i1 %240, label %241, label %245

241:                                              ; preds = %238
  %242 = getelementptr inbounds double, ptr %31, i64 %indvars.iv703
  %243 = load double, ptr %242, align 8, !tbaa !9
  %244 = getelementptr inbounds double, ptr %28, i64 %222
  store double %243, ptr %244, align 8, !tbaa !9
  br label %264

245:                                              ; preds = %238
  %246 = add nsw i32 %.0542634, 1
  %247 = load i32, ptr %3, align 4, !tbaa !5
  %.not591.not = icmp slt i32 %.0542634, %247
  br i1 %.not591.not, label %248, label %262

248:                                              ; preds = %245
  %249 = getelementptr inbounds double, ptr %28, i64 %227
  %250 = load double, ptr %249, align 8, !tbaa !9
  %251 = add nsw i32 %246, %159
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds double, ptr %28, i64 %252
  store double %250, ptr %253, align 8, !tbaa !9
  %254 = getelementptr inbounds i32, ptr %27, i64 %252
  store i32 %232, ptr %254, align 4, !tbaa !5
  %255 = getelementptr inbounds double, ptr %31, i64 %indvars.iv703
  %256 = load double, ptr %255, align 8, !tbaa !9
  %257 = add nsw i32 %246, %25
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds double, ptr %28, i64 %258
  store double %256, ptr %259, align 8, !tbaa !9
  %260 = load i32, ptr %225, align 4, !tbaa !5
  %261 = getelementptr inbounds i32, ptr %27, i64 %258
  store i32 %260, ptr %261, align 4, !tbaa !5
  store double %256, ptr %249, align 8, !tbaa !9
  store i32 %260, ptr %228, align 4, !tbaa !5
  br label %264

262:                                              ; preds = %245
  %263 = add nsw i32 %247, 1
  store i32 %263, ptr %19, align 4, !tbaa !5
  br label %264

264:                                              ; preds = %234, %248, %262, %241
  %.1543 = phi i32 [ %.0542634, %234 ], [ %.0542634, %241 ], [ %246, %248 ], [ %246, %262 ]
  %indvars.iv.next704 = add nsw i64 %indvars.iv703, 1
  %lftr.wideiv706 = trunc i64 %indvars.iv.next704 to i32
  %exitcond707.not = icmp eq i32 %221, %lftr.wideiv706
  br i1 %exitcond707.not, label %._crit_edge637, label %.lr.ph636, !llvm.loop !20

._crit_edge637:                                   ; preds = %264, %._crit_edge629.thread, %.preheader597
  %.0542.lcssa = phi i32 [ %.0534652, %.preheader597 ], [ %.0534652, %._crit_edge629.thread ], [ %.1543, %264 ]
  %265 = load i32, ptr %19, align 4, !tbaa !5
  %.not585 = icmp eq i32 %265, 0
  br i1 %.not585, label %.loopexit599, label %.loopexit

.lr.ph632:                                        ; preds = %.lr.ph632.preheader, %285
  %indvars.iv698 = phi i64 [ %218, %.lr.ph632.preheader ], [ %indvars.iv.next699, %285 ]
  %266 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv698
  %267 = load i32, ptr %266, align 4, !tbaa !5
  %268 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv698
  %269 = load i32, ptr %268, align 4, !tbaa !5
  %.not582 = icmp sgt i32 %267, %269
  br i1 %.not582, label %276, label %270

270:                                              ; preds = %.lr.ph632
  %271 = getelementptr inbounds double, ptr %31, i64 %indvars.iv698
  %272 = load double, ptr %271, align 8, !tbaa !9
  %273 = add nsw i64 %indvars.iv698, %160
  %274 = getelementptr inbounds double, ptr %28, i64 %273
  store double %272, ptr %274, align 8, !tbaa !9
  %275 = getelementptr inbounds i32, ptr %27, i64 %273
  store i32 %267, ptr %275, align 4, !tbaa !5
  %.pre733 = load i32, ptr %266, align 4, !tbaa !5
  %.pre734 = load i32, ptr %268, align 4, !tbaa !5
  br label %276

276:                                              ; preds = %270, %.lr.ph632
  %277 = phi i32 [ %.pre734, %270 ], [ %269, %.lr.ph632 ]
  %278 = phi i32 [ %.pre733, %270 ], [ %267, %.lr.ph632 ]
  %.not583 = icmp slt i32 %278, %277
  br i1 %.not583, label %285, label %279

279:                                              ; preds = %276
  %280 = getelementptr inbounds double, ptr %31, i64 %indvars.iv698
  %281 = load double, ptr %280, align 8, !tbaa !9
  %282 = add nsw i64 %indvars.iv698, %161
  %283 = getelementptr inbounds double, ptr %28, i64 %282
  store double %281, ptr %283, align 8, !tbaa !9
  %284 = getelementptr inbounds i32, ptr %27, i64 %282
  store i32 %278, ptr %284, align 4, !tbaa !5
  br label %285

285:                                              ; preds = %276, %279
  %indvars.iv.next699 = add nsw i64 %indvars.iv698, 1
  %lftr.wideiv701 = trunc i64 %indvars.iv.next699 to i32
  %exitcond702.not = icmp eq i32 %219, %lftr.wideiv701
  br i1 %exitcond702.not, label %.loopexit599, label %.lr.ph632, !llvm.loop !21

.lr.ph617:                                        ; preds = %.lr.ph617.preheader, %360
  %indvars.iv683 = phi i64 [ %174, %.lr.ph617.preheader ], [ %indvars.iv.next684, %360 ]
  %.2544615 = phi i32 [ %.0534652, %.lr.ph617.preheader ], [ %.3545, %360 ]
  %286 = getelementptr inbounds double, ptr %31, i64 %indvars.iv683
  %287 = load double, ptr %286, align 8, !tbaa !9
  %288 = load double, ptr %9, align 8, !tbaa !9
  %289 = fsub double %288, %287
  %290 = load double, ptr %8, align 8, !tbaa !9
  %291 = fcmp ugt double %289, %290
  br i1 %291, label %296, label %292

292:                                              ; preds = %.lr.ph617
  %293 = fneg double %290
  %294 = fcmp ole double %289, %293
  %295 = select i1 %294, double %289, double %293
  br label %296

296:                                              ; preds = %292, %.lr.ph617
  %.0551 = phi i32 [ 1, %292 ], [ 0, %.lr.ph617 ]
  %.0 = phi double [ %295, %292 ], [ %289, %.lr.ph617 ]
  %297 = load i32, ptr %2, align 4, !tbaa !5
  %.not575609 = icmp slt i32 %297, 2
  br i1 %.not575609, label %._crit_edge, label %.lr.ph613

.lr.ph613:                                        ; preds = %296
  %298 = fneg double %290
  %299 = add nuw i32 %297, 1
  %wide.trip.count681 = zext i32 %299 to i64
  br label %300

300:                                              ; preds = %.lr.ph613, %312
  %indvars.iv678 = phi i64 [ 2, %.lr.ph613 ], [ %indvars.iv.next679, %312 ]
  %.1612 = phi double [ %.0, %.lr.ph613 ], [ %.2, %312 ]
  %.1552610 = phi i32 [ %.0551, %.lr.ph613 ], [ %.2553, %312 ]
  %301 = getelementptr inbounds double, ptr %29, i64 %indvars.iv678
  %302 = load double, ptr %301, align 8, !tbaa !9
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv678
  %303 = load double, ptr %gep, align 8, !tbaa !9
  %304 = fdiv double %303, %.1612
  %305 = fsub double %302, %304
  %306 = fsub double %305, %287
  %307 = fcmp ugt double %306, %290
  br i1 %307, label %312, label %308

308:                                              ; preds = %300
  %309 = add nsw i32 %.1552610, 1
  %310 = fcmp ole double %306, %298
  %311 = select i1 %310, double %306, double %298
  br label %312

312:                                              ; preds = %300, %308
  %.2553 = phi i32 [ %309, %308 ], [ %.1552610, %300 ]
  %.2 = phi double [ %311, %308 ], [ %306, %300 ]
  %indvars.iv.next679 = add nuw nsw i64 %indvars.iv678, 1
  %exitcond682.not = icmp eq i64 %indvars.iv.next679, %wide.trip.count681
  br i1 %exitcond682.not, label %._crit_edge, label %300, !llvm.loop !22

._crit_edge:                                      ; preds = %312, %296
  %.1552.lcssa = phi i32 [ %.0551, %296 ], [ %.2553, %312 ]
  %313 = load i32, ptr %0, align 4, !tbaa !5
  %314 = icmp slt i32 %313, 3
  br i1 %314, label %315, label %347

315:                                              ; preds = %._crit_edge
  %316 = add nsw i64 %indvars.iv683, %160
  %317 = getelementptr inbounds i32, ptr %27, i64 %316
  %318 = load i32, ptr %317, align 4, !tbaa !5
  %319 = add nsw i64 %indvars.iv683, %161
  %320 = getelementptr inbounds i32, ptr %27, i64 %319
  %321 = load i32, ptr %320, align 4, !tbaa !5
  %322 = tail call i32 @llvm.smax.i32(i32 %318, i32 %.1552.lcssa)
  %.not579 = icmp sgt i32 %321, %322
  %323 = tail call i32 @llvm.smin.i32(i32 %321, i32 %322)
  br i1 %.not579, label %326, label %324

324:                                              ; preds = %315
  %325 = getelementptr inbounds double, ptr %28, i64 %319
  store double %287, ptr %325, align 8, !tbaa !9
  br label %360

326:                                              ; preds = %315
  %327 = icmp eq i32 %323, %318
  br i1 %327, label %328, label %330

328:                                              ; preds = %326
  %329 = getelementptr inbounds double, ptr %28, i64 %316
  store double %287, ptr %329, align 8, !tbaa !9
  br label %360

330:                                              ; preds = %326
  %331 = load i32, ptr %3, align 4, !tbaa !5
  %332 = icmp slt i32 %.2544615, %331
  br i1 %332, label %333, label %345

333:                                              ; preds = %330
  %334 = add nsw i32 %.2544615, 1
  %335 = getelementptr inbounds double, ptr %28, i64 %319
  %336 = load double, ptr %335, align 8, !tbaa !9
  %337 = add nsw i32 %334, %159
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds double, ptr %28, i64 %338
  store double %336, ptr %339, align 8, !tbaa !9
  %340 = getelementptr inbounds i32, ptr %27, i64 %338
  store i32 %321, ptr %340, align 4, !tbaa !5
  %341 = add nsw i32 %334, %25
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds double, ptr %28, i64 %342
  store double %287, ptr %343, align 8, !tbaa !9
  %344 = getelementptr inbounds i32, ptr %27, i64 %342
  store i32 %323, ptr %344, align 4, !tbaa !5
  store double %287, ptr %335, align 8, !tbaa !9
  store i32 %323, ptr %320, align 4, !tbaa !5
  br label %360

345:                                              ; preds = %330
  %346 = add nsw i32 %331, 1
  store i32 %346, ptr %19, align 4, !tbaa !5
  br label %.loopexit

347:                                              ; preds = %._crit_edge
  %348 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv683
  %349 = load i32, ptr %348, align 4, !tbaa !5
  %.not576 = icmp sgt i32 %.1552.lcssa, %349
  br i1 %.not576, label %354, label %350

350:                                              ; preds = %347
  %351 = add nsw i64 %indvars.iv683, %160
  %352 = getelementptr inbounds double, ptr %28, i64 %351
  store double %287, ptr %352, align 8, !tbaa !9
  %353 = getelementptr inbounds i32, ptr %27, i64 %351
  store i32 %.1552.lcssa, ptr %353, align 4, !tbaa !5
  %.pre = load i32, ptr %348, align 4, !tbaa !5
  br label %354

354:                                              ; preds = %350, %347
  %355 = phi i32 [ %.pre, %350 ], [ %349, %347 ]
  %.not577 = icmp slt i32 %.1552.lcssa, %355
  br i1 %.not577, label %360, label %356

356:                                              ; preds = %354
  %357 = add nsw i64 %indvars.iv683, %161
  %358 = getelementptr inbounds double, ptr %28, i64 %357
  store double %287, ptr %358, align 8, !tbaa !9
  %359 = getelementptr inbounds i32, ptr %27, i64 %357
  store i32 %.1552.lcssa, ptr %359, align 4, !tbaa !5
  br label %360

360:                                              ; preds = %328, %333, %324, %356, %354
  %.3545 = phi i32 [ %.2544615, %324 ], [ %.2544615, %328 ], [ %334, %333 ], [ %.2544615, %356 ], [ %.2544615, %354 ]
  %indvars.iv.next684 = add nsw i64 %indvars.iv683, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next684 to i32
  %exitcond686.not = icmp eq i32 %175, %lftr.wideiv
  br i1 %exitcond686.not, label %.loopexit599, label %.lr.ph617, !llvm.loop !23

.loopexit599:                                     ; preds = %360, %285, %._crit_edge629.thread, %.preheader601, %.preheader598, %._crit_edge637
  %.1535 = phi i32 [ %.0542.lcssa, %._crit_edge637 ], [ %.0534652, %.preheader598 ], [ %.0534652, %.preheader601 ], [ %.0534652, %._crit_edge629.thread ], [ %.0534652, %285 ], [ %.3545, %360 ]
  %.not586639 = icmp sgt i32 %.0540651, %.1535
  br i1 %.not586639, label %.preheader596, label %.lr.ph644.preheader

.lr.ph644.preheader:                              ; preds = %.loopexit599
  %361 = sext i32 %.0540651 to i64
  %362 = add i32 %.1535, 1
  br label %.lr.ph644

.preheader596:                                    ; preds = %447, %.loopexit599
  %.0546.lcssa = phi i32 [ %.0540651, %.loopexit599 ], [ %.1547, %447 ]
  %.not587646 = icmp sgt i32 %.0546.lcssa, %.1535
  br i1 %.not587646, label %._crit_edge656, label %.lr.ph648.preheader

.lr.ph648.preheader:                              ; preds = %.preheader596
  %363 = sext i32 %.0546.lcssa to i64
  %364 = add i32 %.1535, 1
  %365 = sub i32 %.1535, %.0546.lcssa
  %366 = zext i32 %365 to i64
  %367 = add nuw nsw i64 %366, 1
  %min.iters.check760 = icmp ult i32 %365, 3
  %brmerge = select i1 %min.iters.check760, i1 true, i1 %conflict.rdx757
  br i1 %brmerge, label %.lr.ph648.preheader775, label %vector.ph761

.lr.ph648.preheader775:                           ; preds = %.lr.ph648.preheader, %middle.block758
  %indvars.iv713.ph = phi i64 [ %363, %.lr.ph648.preheader ], [ %ind.end764, %middle.block758 ]
  %368 = trunc i64 %indvars.iv713.ph to i32
  %369 = add i32 %.1535, %368
  %370 = and i32 %369, 1
  %lcmp.mod779.not.not = icmp eq i32 %370, 0
  br i1 %lcmp.mod779.not.not, label %.lr.ph648.prol, label %.lr.ph648.prol.loopexit

.lr.ph648.prol:                                   ; preds = %.lr.ph648.preheader775
  %gep742.prol = getelementptr double, ptr %invariant.gep741, i64 %indvars.iv713.ph
  %371 = load double, ptr %gep742.prol, align 8, !tbaa !9
  %gep744.prol = getelementptr double, ptr %invariant.gep743, i64 %indvars.iv713.ph
  %372 = load double, ptr %gep744.prol, align 8, !tbaa !9
  %373 = fadd double %371, %372
  %374 = fmul double %373, 5.000000e-01
  %375 = getelementptr inbounds double, ptr %31, i64 %indvars.iv713.ph
  store double %374, ptr %375, align 8, !tbaa !9
  %indvars.iv.next714.prol = add nsw i64 %indvars.iv713.ph, 1
  br label %.lr.ph648.prol.loopexit

.lr.ph648.prol.loopexit:                          ; preds = %.lr.ph648.prol, %.lr.ph648.preheader775
  %indvars.iv713.unr = phi i64 [ %indvars.iv713.ph, %.lr.ph648.preheader775 ], [ %indvars.iv.next714.prol, %.lr.ph648.prol ]
  %376 = icmp eq i32 %.1535, %368
  br i1 %376, label %._crit_edge649, label %.lr.ph648

vector.ph761:                                     ; preds = %.lr.ph648.preheader
  %n.vec763 = and i64 %367, 8589934588
  %ind.end764 = add nsw i64 %n.vec763, %363
  br label %vector.body766

vector.body766:                                   ; preds = %vector.body766, %vector.ph761
  %index767 = phi i64 [ 0, %vector.ph761 ], [ %index.next773, %vector.body766 ]
  %offset.idx768 = add i64 %index767, %363
  %377 = getelementptr double, ptr %invariant.gep741, i64 %offset.idx768
  %378 = getelementptr i8, ptr %377, i64 16
  %wide.load769 = load <2 x double>, ptr %377, align 8, !tbaa !9
  %wide.load770 = load <2 x double>, ptr %378, align 8, !tbaa !9
  %379 = getelementptr double, ptr %invariant.gep743, i64 %offset.idx768
  %380 = getelementptr i8, ptr %379, i64 16
  %wide.load771 = load <2 x double>, ptr %379, align 8, !tbaa !9
  %wide.load772 = load <2 x double>, ptr %380, align 8, !tbaa !9
  %381 = fadd <2 x double> %wide.load769, %wide.load771
  %382 = fadd <2 x double> %wide.load770, %wide.load772
  %383 = fmul <2 x double> %381, <double 5.000000e-01, double 5.000000e-01>
  %384 = fmul <2 x double> %382, <double 5.000000e-01, double 5.000000e-01>
  %385 = getelementptr inbounds double, ptr %31, i64 %offset.idx768
  %386 = getelementptr inbounds i8, ptr %385, i64 16
  store <2 x double> %383, ptr %385, align 8, !tbaa !9
  store <2 x double> %384, ptr %386, align 8, !tbaa !9
  %index.next773 = add nuw i64 %index767, 4
  %387 = icmp eq i64 %index.next773, %n.vec763
  br i1 %387, label %middle.block758, label %vector.body766, !llvm.loop !24

middle.block758:                                  ; preds = %vector.body766
  %cmp.n774 = icmp eq i64 %367, %n.vec763
  br i1 %cmp.n774, label %._crit_edge649, label %.lr.ph648.preheader775

.lr.ph644:                                        ; preds = %.lr.ph644.preheader, %447
  %indvars.iv708 = phi i64 [ %361, %.lr.ph644.preheader ], [ %indvars.iv.next709, %447 ]
  %.0546640 = phi i32 [ %.0540651, %.lr.ph644.preheader ], [ %.1547, %447 ]
  %388 = add nsw i64 %indvars.iv708, %161
  %389 = getelementptr inbounds double, ptr %28, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !9
  %391 = add nsw i64 %indvars.iv708, %160
  %392 = getelementptr inbounds double, ptr %28, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !9
  %394 = fsub double %390, %393
  %395 = fcmp oge double %394, 0.000000e+00
  %396 = fneg double %394
  %397 = select i1 %395, double %394, double %396
  %398 = fcmp oge double %390, 0.000000e+00
  %399 = fneg double %390
  %400 = select i1 %398, double %390, double %399
  %401 = fcmp oge double %393, 0.000000e+00
  %402 = fneg double %393
  %403 = select i1 %401, double %393, double %402
  %404 = fcmp oge double %400, %403
  %405 = select i1 %404, double %400, double %403
  %406 = load double, ptr %6, align 8, !tbaa !9
  %407 = load double, ptr %8, align 8, !tbaa !9
  %.inv = fcmp oge double %406, %407
  %. = select i1 %.inv, double %406, double %407
  %408 = load double, ptr %7, align 8, !tbaa !9
  %409 = fmul double %408, %405
  %410 = fcmp oge double %., %409
  %411 = select i1 %410, double %., double %409
  %412 = fcmp olt double %397, %411
  br i1 %412, label %418, label %413

413:                                              ; preds = %.lr.ph644
  %414 = getelementptr inbounds i32, ptr %27, i64 %391
  %415 = load i32, ptr %414, align 4, !tbaa !5
  %416 = getelementptr inbounds i32, ptr %27, i64 %388
  %417 = load i32, ptr %416, align 4, !tbaa !5
  %.not588 = icmp slt i32 %415, %417
  br i1 %.not588, label %447, label %418

418:                                              ; preds = %413, %.lr.ph644
  %419 = sext i32 %.0546640 to i64
  %420 = icmp sgt i64 %indvars.iv708, %419
  br i1 %420, label %421, label %445

421:                                              ; preds = %418
  %422 = getelementptr inbounds i32, ptr %27, i64 %391
  %423 = load i32, ptr %422, align 4, !tbaa !5
  %424 = getelementptr inbounds i32, ptr %27, i64 %388
  %425 = load i32, ptr %424, align 4, !tbaa !5
  %426 = add nsw i32 %.0546640, %25
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %28, i64 %427
  %429 = load double, ptr %428, align 8, !tbaa !9
  store double %429, ptr %392, align 8, !tbaa !9
  %430 = add nsw i32 %.0546640, %159
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds double, ptr %28, i64 %431
  %433 = load double, ptr %432, align 8, !tbaa !9
  store double %433, ptr %389, align 8, !tbaa !9
  %434 = getelementptr inbounds i32, ptr %27, i64 %427
  %435 = load i32, ptr %434, align 4, !tbaa !5
  store i32 %435, ptr %422, align 4, !tbaa !5
  %436 = getelementptr inbounds i32, ptr %27, i64 %431
  %437 = load i32, ptr %436, align 4, !tbaa !5
  store i32 %437, ptr %424, align 4, !tbaa !5
  store double %393, ptr %428, align 8, !tbaa !9
  store double %390, ptr %432, align 8, !tbaa !9
  store i32 %423, ptr %434, align 4, !tbaa !5
  store i32 %425, ptr %436, align 4, !tbaa !5
  %438 = load i32, ptr %0, align 4, !tbaa !5
  %439 = icmp eq i32 %438, 3
  br i1 %439, label %440, label %445

440:                                              ; preds = %421
  %441 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv708
  %442 = load i32, ptr %441, align 4, !tbaa !5
  %443 = getelementptr inbounds i32, ptr %30, i64 %419
  %444 = load i32, ptr %443, align 4, !tbaa !5
  store i32 %444, ptr %441, align 4, !tbaa !5
  store i32 %442, ptr %443, align 4, !tbaa !5
  br label %445

445:                                              ; preds = %421, %440, %418
  %446 = add nsw i32 %.0546640, 1
  br label %447

447:                                              ; preds = %413, %445
  %.1547 = phi i32 [ %446, %445 ], [ %.0546640, %413 ]
  %indvars.iv.next709 = add nsw i64 %indvars.iv708, 1
  %lftr.wideiv711 = trunc i64 %indvars.iv.next709 to i32
  %exitcond712.not = icmp eq i32 %362, %lftr.wideiv711
  br i1 %exitcond712.not, label %.preheader596, label %.lr.ph644, !llvm.loop !25

.lr.ph648:                                        ; preds = %.lr.ph648.prol.loopexit, %.lr.ph648
  %indvars.iv713 = phi i64 [ %indvars.iv.next714.1, %.lr.ph648 ], [ %indvars.iv713.unr, %.lr.ph648.prol.loopexit ]
  %gep742 = getelementptr double, ptr %invariant.gep741, i64 %indvars.iv713
  %448 = load double, ptr %gep742, align 8, !tbaa !9
  %gep744 = getelementptr double, ptr %invariant.gep743, i64 %indvars.iv713
  %449 = load double, ptr %gep744, align 8, !tbaa !9
  %450 = fadd double %448, %449
  %451 = fmul double %450, 5.000000e-01
  %452 = getelementptr inbounds double, ptr %31, i64 %indvars.iv713
  store double %451, ptr %452, align 8, !tbaa !9
  %indvars.iv.next714 = add nsw i64 %indvars.iv713, 1
  %gep742.1 = getelementptr double, ptr %invariant.gep741, i64 %indvars.iv.next714
  %453 = load double, ptr %gep742.1, align 8, !tbaa !9
  %gep744.1 = getelementptr double, ptr %invariant.gep743, i64 %indvars.iv.next714
  %454 = load double, ptr %gep744.1, align 8, !tbaa !9
  %455 = fadd double %453, %454
  %456 = fmul double %455, 5.000000e-01
  %457 = getelementptr double, ptr %14, i64 %indvars.iv713
  store double %456, ptr %457, align 8, !tbaa !9
  %indvars.iv.next714.1 = add nsw i64 %indvars.iv713, 2
  %lftr.wideiv716.1 = trunc i64 %indvars.iv.next714.1 to i32
  %exitcond717.not.1 = icmp eq i32 %364, %lftr.wideiv716.1
  br i1 %exitcond717.not.1, label %._crit_edge649, label %.lr.ph648, !llvm.loop !26

._crit_edge649:                                   ; preds = %.lr.ph648.prol.loopexit, %.lr.ph648, %middle.block758
  %458 = add nuw i32 %.0532653, 1
  %exitcond718.not = icmp eq i32 %.0532653, %158
  %or.cond747 = select i1 %.not587646, i1 true, i1 %exitcond718.not
  br i1 %or.cond747, label %._crit_edge656, label %170, !llvm.loop !27

._crit_edge656:                                   ; preds = %.preheader596, %._crit_edge649, %.loopexit605
  %.1541 = phi i32 [ 1, %.loopexit605 ], [ %.0546.lcssa, %._crit_edge649 ], [ %.0546.lcssa, %.preheader596 ]
  %.2536 = phi i32 [ %111, %.loopexit605 ], [ %.1535, %._crit_edge649 ], [ %.1535, %.preheader596 ]
  %reass.sub674 = sub i32 %.2536, %.1541
  %459 = add i32 %reass.sub674, 1
  %460 = tail call i32 @llvm.smax.i32(i32 %459, i32 0)
  store i32 %460, ptr %19, align 4, !tbaa !5
  store i32 %.2536, ptr %15, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge637, %._crit_edge669.1, %39, %._crit_edge656, %345, %36
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #1

attributes #0 = { nofree norecurse nosync nounwind memory(argmem: readwrite) 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 speculatable willreturn memory(none) }

!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, !16}
!15 = !{!"llvm.loop.isvectorized", i32 1}
!16 = !{!"llvm.loop.unroll.runtime.disable"}
!17 = distinct !{!17, !12, !15}
!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, !15, !16}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12, !15}
!27 = distinct !{!27, !12}


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