; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (dlarre)

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @dlarre_(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, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) #0 {
  %26 = alloca i32, align 4
  %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 ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca i64, align 8
  %62 = alloca double, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca double, align 8
  %66 = alloca i64, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca double, align 8
  %78 = alloca i64, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca i64, align 8
  %82 = alloca i64, align 8
  %83 = alloca i64, align 8
  %84 = alloca double, align 8
  %85 = alloca [4 x i64], align 16
  %86 = alloca double, align 8
  %87 = alloca double, align 8
  %88 = alloca i64, align 8
  %89 = alloca i64, align 8
  %90 = alloca i64, align 8
  %91 = alloca i64, align 8
  %92 = alloca i64, align 8
  %93 = alloca double, align 8
  %94 = alloca i64, align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  %97 = alloca i64, align 8
  %98 = alloca double, align 8
  %99 = alloca double, align 8
  %100 = alloca double, align 8
  %101 = alloca double, align 8
  %102 = alloca double, align 8
  %103 = alloca i32, align 4
  store ptr %0, ptr %27, align 8, !tbaa !5
  store ptr %1, ptr %28, align 8, !tbaa !5
  store ptr %2, ptr %29, align 8, !tbaa !5
  store ptr %3, ptr %30, align 8, !tbaa !5
  store ptr %4, ptr %31, align 8, !tbaa !5
  store ptr %5, ptr %32, align 8, !tbaa !5
  store ptr %6, ptr %33, align 8, !tbaa !5
  store ptr %7, ptr %34, align 8, !tbaa !5
  store ptr %8, ptr %35, align 8, !tbaa !5
  store ptr %9, ptr %36, align 8, !tbaa !5
  store ptr %10, ptr %37, align 8, !tbaa !5
  store ptr %11, ptr %38, align 8, !tbaa !5
  store ptr %12, ptr %39, align 8, !tbaa !5
  store ptr %13, ptr %40, align 8, !tbaa !5
  store ptr %14, ptr %41, align 8, !tbaa !5
  store ptr %15, ptr %42, align 8, !tbaa !5
  store ptr %16, ptr %43, align 8, !tbaa !5
  store ptr %17, ptr %44, align 8, !tbaa !5
  store ptr %18, ptr %45, align 8, !tbaa !5
  store ptr %19, ptr %46, align 8, !tbaa !5
  store ptr %20, ptr %47, align 8, !tbaa !5
  store ptr %21, ptr %48, align 8, !tbaa !5
  store ptr %22, ptr %49, align 8, !tbaa !5
  store ptr %23, ptr %50, align 8, !tbaa !5
  store ptr %24, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %85) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #5
  %104 = load ptr, ptr %50, align 8, !tbaa !5
  %105 = getelementptr inbounds i64, ptr %104, i32 -1
  store ptr %105, ptr %50, align 8, !tbaa !5
  %106 = load ptr, ptr %49, align 8, !tbaa !5
  %107 = getelementptr inbounds double, ptr %106, i32 -1
  store ptr %107, ptr %49, align 8, !tbaa !5
  %108 = load ptr, ptr %47, align 8, !tbaa !5
  %109 = getelementptr inbounds double, ptr %108, i32 -1
  store ptr %109, ptr %47, align 8, !tbaa !5
  %110 = load ptr, ptr %46, align 8, !tbaa !5
  %111 = getelementptr inbounds i64, ptr %110, i32 -1
  store ptr %111, ptr %46, align 8, !tbaa !5
  %112 = load ptr, ptr %45, align 8, !tbaa !5
  %113 = getelementptr inbounds i64, ptr %112, i32 -1
  store ptr %113, ptr %45, align 8, !tbaa !5
  %114 = load ptr, ptr %44, align 8, !tbaa !5
  %115 = getelementptr inbounds double, ptr %114, i32 -1
  store ptr %115, ptr %44, align 8, !tbaa !5
  %116 = load ptr, ptr %43, align 8, !tbaa !5
  %117 = getelementptr inbounds double, ptr %116, i32 -1
  store ptr %117, ptr %43, align 8, !tbaa !5
  %118 = load ptr, ptr %42, align 8, !tbaa !5
  %119 = getelementptr inbounds double, ptr %118, i32 -1
  store ptr %119, ptr %42, align 8, !tbaa !5
  %120 = load ptr, ptr %40, align 8, !tbaa !5
  %121 = getelementptr inbounds i64, ptr %120, i32 -1
  store ptr %121, ptr %40, align 8, !tbaa !5
  %122 = load ptr, ptr %35, align 8, !tbaa !5
  %123 = getelementptr inbounds double, ptr %122, i32 -1
  store ptr %123, ptr %35, align 8, !tbaa !5
  %124 = load ptr, ptr %34, align 8, !tbaa !5
  %125 = getelementptr inbounds double, ptr %124, i32 -1
  store ptr %125, ptr %34, align 8, !tbaa !5
  %126 = load ptr, ptr %33, align 8, !tbaa !5
  %127 = getelementptr inbounds double, ptr %126, i32 -1
  store ptr %127, ptr %33, align 8, !tbaa !5
  %128 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 0, ptr %128, align 8, !tbaa !9
  %129 = load ptr, ptr %27, align 8, !tbaa !5
  %130 = call i64 @lsame_(ptr noundef %129, ptr noundef @.str)
  %131 = icmp ne i64 %130, 0
  br i1 %131, label %132, label %133

132:                                              ; preds = %25
  store i64 1, ptr %92, align 8, !tbaa !9
  br label %145

133:                                              ; preds = %25
  %134 = load ptr, ptr %27, align 8, !tbaa !5
  %135 = call i64 @lsame_(ptr noundef %134, ptr noundef @.str.1)
  %136 = icmp ne i64 %135, 0
  br i1 %136, label %137, label %138

137:                                              ; preds = %133
  store i64 3, ptr %92, align 8, !tbaa !9
  br label %144

138:                                              ; preds = %133
  %139 = load ptr, ptr %27, align 8, !tbaa !5
  %140 = call i64 @lsame_(ptr noundef %139, ptr noundef @.str.2)
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %142, label %143

142:                                              ; preds = %138
  store i64 2, ptr %92, align 8, !tbaa !9
  br label %143

143:                                              ; preds = %142, %138
  br label %144

144:                                              ; preds = %143, %137
  br label %145

145:                                              ; preds = %144, %132
  %146 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %146, align 8, !tbaa !9
  %147 = call double @dlamch_(ptr noundef @.str.3)
  store double %147, ptr %95, align 8, !tbaa !11
  %148 = call double @dlamch_(ptr noundef @.str.4)
  store double %148, ptr %67, align 8, !tbaa !11
  %149 = load double, ptr %67, align 8, !tbaa !11
  %150 = call double @sqrt(double noundef %149) #5
  store double %150, ptr %70, align 8, !tbaa !11
  %151 = load double, ptr %67, align 8, !tbaa !11
  %152 = call double @sqrt(double noundef %151) #5
  store double %152, ptr %101, align 8, !tbaa !11
  %153 = load ptr, ptr %28, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = icmp eq i64 %154, 1
  br i1 %155, label %156, label %215

156:                                              ; preds = %145
  %157 = load i64, ptr %92, align 8, !tbaa !9
  %158 = icmp eq i64 %157, 1
  br i1 %158, label %187, label %159

159:                                              ; preds = %156
  %160 = load i64, ptr %92, align 8, !tbaa !9
  %161 = icmp eq i64 %160, 3
  br i1 %161, label %162, label %176

162:                                              ; preds = %159
  %163 = load ptr, ptr %33, align 8, !tbaa !5
  %164 = getelementptr inbounds double, ptr %163, i64 1
  %165 = load double, ptr %164, align 8, !tbaa !11
  %166 = load ptr, ptr %29, align 8, !tbaa !5
  %167 = load double, ptr %166, align 8, !tbaa !11
  %168 = fcmp ogt double %165, %167
  br i1 %168, label %169, label %176

169:                                              ; preds = %162
  %170 = load ptr, ptr %33, align 8, !tbaa !5
  %171 = getelementptr inbounds double, ptr %170, i64 1
  %172 = load double, ptr %171, align 8, !tbaa !11
  %173 = load ptr, ptr %30, align 8, !tbaa !5
  %174 = load double, ptr %173, align 8, !tbaa !11
  %175 = fcmp ole double %172, %174
  br i1 %175, label %187, label %176

176:                                              ; preds = %169, %162, %159
  %177 = load i64, ptr %92, align 8, !tbaa !9
  %178 = icmp eq i64 %177, 2
  br i1 %178, label %179, label %212

179:                                              ; preds = %176
  %180 = load ptr, ptr %31, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = icmp eq i64 %181, 1
  br i1 %182, label %183, label %212

183:                                              ; preds = %179
  %184 = load ptr, ptr %32, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp eq i64 %185, 1
  br i1 %186, label %187, label %212

187:                                              ; preds = %183, %169, %156
  %188 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 1, ptr %188, align 8, !tbaa !9
  %189 = load ptr, ptr %33, align 8, !tbaa !5
  %190 = getelementptr inbounds double, ptr %189, i64 1
  %191 = load double, ptr %190, align 8, !tbaa !11
  %192 = load ptr, ptr %42, align 8, !tbaa !5
  %193 = getelementptr inbounds double, ptr %192, i64 1
  store double %191, ptr %193, align 8, !tbaa !11
  %194 = load ptr, ptr %43, align 8, !tbaa !5
  %195 = getelementptr inbounds double, ptr %194, i64 1
  store double 0.000000e+00, ptr %195, align 8, !tbaa !11
  %196 = load ptr, ptr %44, align 8, !tbaa !5
  %197 = getelementptr inbounds double, ptr %196, i64 1
  store double 0.000000e+00, ptr %197, align 8, !tbaa !11
  %198 = load ptr, ptr %45, align 8, !tbaa !5
  %199 = getelementptr inbounds i64, ptr %198, i64 1
  store i64 1, ptr %199, align 8, !tbaa !9
  %200 = load ptr, ptr %46, align 8, !tbaa !5
  %201 = getelementptr inbounds i64, ptr %200, i64 1
  store i64 1, ptr %201, align 8, !tbaa !9
  %202 = load ptr, ptr %33, align 8, !tbaa !5
  %203 = getelementptr inbounds double, ptr %202, i64 1
  %204 = load double, ptr %203, align 8, !tbaa !11
  %205 = load ptr, ptr %47, align 8, !tbaa !5
  %206 = getelementptr inbounds double, ptr %205, i64 1
  store double %204, ptr %206, align 8, !tbaa !11
  %207 = load ptr, ptr %33, align 8, !tbaa !5
  %208 = getelementptr inbounds double, ptr %207, i64 1
  %209 = load double, ptr %208, align 8, !tbaa !11
  %210 = load ptr, ptr %47, align 8, !tbaa !5
  %211 = getelementptr inbounds double, ptr %210, i64 2
  store double %209, ptr %211, align 8, !tbaa !11
  br label %212

212:                                              ; preds = %187, %183, %179, %176
  %213 = load ptr, ptr %34, align 8, !tbaa !5
  %214 = getelementptr inbounds double, ptr %213, i64 1
  store double 0.000000e+00, ptr %214, align 8, !tbaa !11
  store i32 0, ptr %26, align 4
  store i32 1, ptr %103, align 4
  br label %1937

215:                                              ; preds = %145
  %216 = load ptr, ptr %33, align 8, !tbaa !5
  %217 = getelementptr inbounds double, ptr %216, i64 1
  %218 = load double, ptr %217, align 8, !tbaa !11
  store double %218, ptr %62, align 8, !tbaa !11
  %219 = load ptr, ptr %33, align 8, !tbaa !5
  %220 = getelementptr inbounds double, ptr %219, i64 1
  %221 = load double, ptr %220, align 8, !tbaa !11
  store double %221, ptr %65, align 8, !tbaa !11
  store double 0.000000e+00, ptr %77, align 8, !tbaa !11
  store double 0.000000e+00, ptr %80, align 8, !tbaa !11
  %222 = load ptr, ptr %34, align 8, !tbaa !5
  %223 = load ptr, ptr %28, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = getelementptr inbounds double, ptr %222, i64 %224
  store double 0.000000e+00, ptr %225, align 8, !tbaa !11
  %226 = load ptr, ptr %28, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  store i64 %227, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %228

228:                                              ; preds = %314, %215
  %229 = load i64, ptr %57, align 8, !tbaa !9
  %230 = load i64, ptr %52, align 8, !tbaa !9
  %231 = icmp sle i64 %229, %230
  br i1 %231, label %232, label %317

232:                                              ; preds = %228
  %233 = load ptr, ptr %43, align 8, !tbaa !5
  %234 = load i64, ptr %57, align 8, !tbaa !9
  %235 = getelementptr inbounds double, ptr %233, i64 %234
  store double 0.000000e+00, ptr %235, align 8, !tbaa !11
  %236 = load ptr, ptr %44, align 8, !tbaa !5
  %237 = load i64, ptr %57, align 8, !tbaa !9
  %238 = getelementptr inbounds double, ptr %236, i64 %237
  store double 0.000000e+00, ptr %238, align 8, !tbaa !11
  %239 = load ptr, ptr %34, align 8, !tbaa !5
  %240 = load i64, ptr %57, align 8, !tbaa !9
  %241 = getelementptr inbounds double, ptr %239, i64 %240
  %242 = load double, ptr %241, align 8, !tbaa !11
  store double %242, ptr %54, align 8, !tbaa !11
  %243 = load double, ptr %54, align 8, !tbaa !11
  %244 = fcmp oge double %243, 0.000000e+00
  br i1 %244, label %245, label %247

245:                                              ; preds = %232
  %246 = load double, ptr %54, align 8, !tbaa !11
  br label %250

247:                                              ; preds = %232
  %248 = load double, ptr %54, align 8, !tbaa !11
  %249 = fneg double %248
  br label %250

250:                                              ; preds = %247, %245
  %251 = phi double [ %246, %245 ], [ %249, %247 ]
  store double %251, ptr %74, align 8, !tbaa !11
  %252 = load double, ptr %74, align 8, !tbaa !11
  %253 = load double, ptr %80, align 8, !tbaa !11
  %254 = fcmp oge double %252, %253
  br i1 %254, label %255, label %257

255:                                              ; preds = %250
  %256 = load double, ptr %74, align 8, !tbaa !11
  store double %256, ptr %80, align 8, !tbaa !11
  br label %257

257:                                              ; preds = %255, %250
  %258 = load double, ptr %74, align 8, !tbaa !11
  %259 = load double, ptr %77, align 8, !tbaa !11
  %260 = fadd double %258, %259
  store double %260, ptr %73, align 8, !tbaa !11
  %261 = load ptr, ptr %33, align 8, !tbaa !5
  %262 = load i64, ptr %57, align 8, !tbaa !9
  %263 = getelementptr inbounds double, ptr %261, i64 %262
  %264 = load double, ptr %263, align 8, !tbaa !11
  %265 = load double, ptr %73, align 8, !tbaa !11
  %266 = fsub double %264, %265
  %267 = load ptr, ptr %47, align 8, !tbaa !5
  %268 = load i64, ptr %57, align 8, !tbaa !9
  %269 = shl i64 %268, 1
  %270 = sub nsw i64 %269, 1
  %271 = getelementptr inbounds double, ptr %267, i64 %270
  store double %266, ptr %271, align 8, !tbaa !11
  %272 = load double, ptr %62, align 8, !tbaa !11
  store double %272, ptr %54, align 8, !tbaa !11
  %273 = load ptr, ptr %47, align 8, !tbaa !5
  %274 = load i64, ptr %57, align 8, !tbaa !9
  %275 = shl i64 %274, 1
  %276 = sub nsw i64 %275, 1
  %277 = getelementptr inbounds double, ptr %273, i64 %276
  %278 = load double, ptr %277, align 8, !tbaa !11
  store double %278, ptr %55, align 8, !tbaa !11
  %279 = load double, ptr %54, align 8, !tbaa !11
  %280 = load double, ptr %55, align 8, !tbaa !11
  %281 = fcmp ole double %279, %280
  br i1 %281, label %282, label %284

282:                                              ; preds = %257
  %283 = load double, ptr %54, align 8, !tbaa !11
  br label %286

284:                                              ; preds = %257
  %285 = load double, ptr %55, align 8, !tbaa !11
  br label %286

286:                                              ; preds = %284, %282
  %287 = phi double [ %283, %282 ], [ %285, %284 ]
  store double %287, ptr %62, align 8, !tbaa !11
  %288 = load ptr, ptr %33, align 8, !tbaa !5
  %289 = load i64, ptr %57, align 8, !tbaa !9
  %290 = getelementptr inbounds double, ptr %288, i64 %289
  %291 = load double, ptr %290, align 8, !tbaa !11
  %292 = load double, ptr %73, align 8, !tbaa !11
  %293 = fadd double %291, %292
  %294 = load ptr, ptr %47, align 8, !tbaa !5
  %295 = load i64, ptr %57, align 8, !tbaa !9
  %296 = mul nsw i64 %295, 2
  %297 = getelementptr inbounds double, ptr %294, i64 %296
  store double %293, ptr %297, align 8, !tbaa !11
  %298 = load double, ptr %65, align 8, !tbaa !11
  store double %298, ptr %54, align 8, !tbaa !11
  %299 = load ptr, ptr %47, align 8, !tbaa !5
  %300 = load i64, ptr %57, align 8, !tbaa !9
  %301 = mul nsw i64 %300, 2
  %302 = getelementptr inbounds double, ptr %299, i64 %301
  %303 = load double, ptr %302, align 8, !tbaa !11
  store double %303, ptr %55, align 8, !tbaa !11
  %304 = load double, ptr %54, align 8, !tbaa !11
  %305 = load double, ptr %55, align 8, !tbaa !11
  %306 = fcmp oge double %304, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %286
  %308 = load double, ptr %54, align 8, !tbaa !11
  br label %311

309:                                              ; preds = %286
  %310 = load double, ptr %55, align 8, !tbaa !11
  br label %311

311:                                              ; preds = %309, %307
  %312 = phi double [ %308, %307 ], [ %310, %309 ]
  store double %312, ptr %65, align 8, !tbaa !11
  %313 = load double, ptr %74, align 8, !tbaa !11
  store double %313, ptr %77, align 8, !tbaa !11
  br label %314

314:                                              ; preds = %311
  %315 = load i64, ptr %57, align 8, !tbaa !9
  %316 = add nsw i64 %315, 1
  store i64 %316, ptr %57, align 8, !tbaa !9
  br label %228, !llvm.loop !13

317:                                              ; preds = %228
  %318 = load double, ptr %80, align 8, !tbaa !11
  store double %318, ptr %56, align 8, !tbaa !11
  store double 1.000000e+00, ptr %54, align 8, !tbaa !11
  %319 = load double, ptr %56, align 8, !tbaa !11
  %320 = load double, ptr %56, align 8, !tbaa !11
  %321 = fmul double %319, %320
  store double %321, ptr %55, align 8, !tbaa !11
  %322 = load double, ptr %95, align 8, !tbaa !11
  %323 = load double, ptr %54, align 8, !tbaa !11
  %324 = load double, ptr %55, align 8, !tbaa !11
  %325 = fcmp oge double %323, %324
  br i1 %325, label %326, label %328

326:                                              ; preds = %317
  %327 = load double, ptr %54, align 8, !tbaa !11
  br label %330

328:                                              ; preds = %317
  %329 = load double, ptr %55, align 8, !tbaa !11
  br label %330

330:                                              ; preds = %328, %326
  %331 = phi double [ %327, %326 ], [ %329, %328 ]
  %332 = fmul double %322, %331
  %333 = load ptr, ptr %48, align 8, !tbaa !5
  store double %332, ptr %333, align 8, !tbaa !11
  %334 = load double, ptr %65, align 8, !tbaa !11
  %335 = load double, ptr %62, align 8, !tbaa !11
  %336 = fsub double %334, %335
  store double %336, ptr %96, align 8, !tbaa !11
  %337 = load ptr, ptr %28, align 8, !tbaa !5
  %338 = load ptr, ptr %33, align 8, !tbaa !5
  %339 = getelementptr inbounds double, ptr %338, i64 1
  %340 = load ptr, ptr %34, align 8, !tbaa !5
  %341 = getelementptr inbounds double, ptr %340, i64 1
  %342 = load ptr, ptr %35, align 8, !tbaa !5
  %343 = getelementptr inbounds double, ptr %342, i64 1
  %344 = load ptr, ptr %38, align 8, !tbaa !5
  %345 = load ptr, ptr %39, align 8, !tbaa !5
  %346 = load ptr, ptr %40, align 8, !tbaa !5
  %347 = getelementptr inbounds i64, ptr %346, i64 1
  %348 = call i32 @dlarra_(ptr noundef %337, ptr noundef %339, ptr noundef %341, ptr noundef %343, ptr noundef %344, ptr noundef %96, ptr noundef %345, ptr noundef %347, ptr noundef %88)
  store i64 0, ptr %91, align 8, !tbaa !9
  %349 = load i64, ptr %92, align 8, !tbaa !9
  %350 = icmp eq i64 %349, 1
  br i1 %350, label %351, label %355

351:                                              ; preds = %330
  %352 = load i64, ptr %91, align 8, !tbaa !9
  %353 = icmp ne i64 %352, 0
  %354 = xor i1 %353, true
  br label %355

355:                                              ; preds = %351, %330
  %356 = phi i1 [ false, %330 ], [ %354, %351 ]
  %357 = zext i1 %356 to i32
  %358 = sext i32 %357 to i64
  store i64 %358, ptr %97, align 8, !tbaa !9
  %359 = load i64, ptr %92, align 8, !tbaa !9
  %360 = icmp eq i64 %359, 1
  br i1 %360, label %361, label %369

361:                                              ; preds = %355
  %362 = load i64, ptr %91, align 8, !tbaa !9
  %363 = icmp ne i64 %362, 0
  br i1 %363, label %369, label %364

364:                                              ; preds = %361
  %365 = load double, ptr %62, align 8, !tbaa !11
  %366 = load ptr, ptr %29, align 8, !tbaa !5
  store double %365, ptr %366, align 8, !tbaa !11
  %367 = load double, ptr %65, align 8, !tbaa !11
  %368 = load ptr, ptr %30, align 8, !tbaa !5
  store double %367, ptr %368, align 8, !tbaa !11
  br label %433

369:                                              ; preds = %361, %355
  %370 = load ptr, ptr %27, align 8, !tbaa !5
  %371 = load ptr, ptr %28, align 8, !tbaa !5
  %372 = load ptr, ptr %29, align 8, !tbaa !5
  %373 = load ptr, ptr %30, align 8, !tbaa !5
  %374 = load ptr, ptr %31, align 8, !tbaa !5
  %375 = load ptr, ptr %32, align 8, !tbaa !5
  %376 = load ptr, ptr %47, align 8, !tbaa !5
  %377 = getelementptr inbounds double, ptr %376, i64 1
  %378 = load ptr, ptr %33, align 8, !tbaa !5
  %379 = getelementptr inbounds double, ptr %378, i64 1
  %380 = load ptr, ptr %34, align 8, !tbaa !5
  %381 = getelementptr inbounds double, ptr %380, i64 1
  %382 = load ptr, ptr %35, align 8, !tbaa !5
  %383 = getelementptr inbounds double, ptr %382, i64 1
  %384 = load ptr, ptr %48, align 8, !tbaa !5
  %385 = load ptr, ptr %39, align 8, !tbaa !5
  %386 = load ptr, ptr %40, align 8, !tbaa !5
  %387 = getelementptr inbounds i64, ptr %386, i64 1
  %388 = load ptr, ptr %42, align 8, !tbaa !5
  %389 = getelementptr inbounds double, ptr %388, i64 1
  %390 = load ptr, ptr %43, align 8, !tbaa !5
  %391 = getelementptr inbounds double, ptr %390, i64 1
  %392 = load ptr, ptr %29, align 8, !tbaa !5
  %393 = load ptr, ptr %30, align 8, !tbaa !5
  %394 = load ptr, ptr %45, align 8, !tbaa !5
  %395 = getelementptr inbounds i64, ptr %394, i64 1
  %396 = load ptr, ptr %46, align 8, !tbaa !5
  %397 = getelementptr inbounds i64, ptr %396, i64 1
  %398 = load ptr, ptr %49, align 8, !tbaa !5
  %399 = getelementptr inbounds double, ptr %398, i64 1
  %400 = load ptr, ptr %50, align 8, !tbaa !5
  %401 = getelementptr inbounds i64, ptr %400, i64 1
  %402 = call i32 @dlarrd_(ptr noundef %370, ptr noundef @.str.5, ptr noundef %371, ptr noundef %372, ptr noundef %373, ptr noundef %374, ptr noundef %375, ptr noundef %377, ptr noundef %101, ptr noundef %379, ptr noundef %381, ptr noundef %383, ptr noundef %384, ptr noundef %385, ptr noundef %387, ptr noundef %64, ptr noundef %389, ptr noundef %391, ptr noundef %392, ptr noundef %393, ptr noundef %395, ptr noundef %397, ptr noundef %399, ptr noundef %401, ptr noundef %88)
  %403 = load i64, ptr %88, align 8, !tbaa !9
  %404 = icmp ne i64 %403, 0
  br i1 %404, label %405, label %407

405:                                              ; preds = %369
  %406 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -1, ptr %406, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %103, align 4
  br label %1937

407:                                              ; preds = %369
  %408 = load ptr, ptr %28, align 8, !tbaa !5
  %409 = load i64, ptr %408, align 8, !tbaa !9
  store i64 %409, ptr %52, align 8, !tbaa !9
  %410 = load i64, ptr %64, align 8, !tbaa !9
  %411 = add nsw i64 %410, 1
  store i64 %411, ptr %57, align 8, !tbaa !9
  br label %412

412:                                              ; preds = %429, %407
  %413 = load i64, ptr %57, align 8, !tbaa !9
  %414 = load i64, ptr %52, align 8, !tbaa !9
  %415 = icmp sle i64 %413, %414
  br i1 %415, label %416, label %432

416:                                              ; preds = %412
  %417 = load ptr, ptr %42, align 8, !tbaa !5
  %418 = load i64, ptr %57, align 8, !tbaa !9
  %419 = getelementptr inbounds double, ptr %417, i64 %418
  store double 0.000000e+00, ptr %419, align 8, !tbaa !11
  %420 = load ptr, ptr %43, align 8, !tbaa !5
  %421 = load i64, ptr %57, align 8, !tbaa !9
  %422 = getelementptr inbounds double, ptr %420, i64 %421
  store double 0.000000e+00, ptr %422, align 8, !tbaa !11
  %423 = load ptr, ptr %45, align 8, !tbaa !5
  %424 = load i64, ptr %57, align 8, !tbaa !9
  %425 = getelementptr inbounds i64, ptr %423, i64 %424
  store i64 0, ptr %425, align 8, !tbaa !9
  %426 = load ptr, ptr %46, align 8, !tbaa !5
  %427 = load i64, ptr %57, align 8, !tbaa !9
  %428 = getelementptr inbounds i64, ptr %426, i64 %427
  store i64 0, ptr %428, align 8, !tbaa !9
  br label %429

429:                                              ; preds = %416
  %430 = load i64, ptr %57, align 8, !tbaa !9
  %431 = add nsw i64 %430, 1
  store i64 %431, ptr %57, align 8, !tbaa !9
  br label %412, !llvm.loop !15

432:                                              ; preds = %412
  br label %433

433:                                              ; preds = %432, %364
  store i64 1, ptr %90, align 8, !tbaa !9
  store i64 1, ptr %94, align 8, !tbaa !9
  %434 = load ptr, ptr %39, align 8, !tbaa !5
  %435 = load i64, ptr %434, align 8, !tbaa !9
  store i64 %435, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %436

436:                                              ; preds = %1933, %433
  %437 = load i64, ptr %76, align 8, !tbaa !9
  %438 = load i64, ptr %52, align 8, !tbaa !9
  %439 = icmp sle i64 %437, %438
  br i1 %439, label %440, label %1936

440:                                              ; preds = %436
  %441 = load ptr, ptr %40, align 8, !tbaa !5
  %442 = load i64, ptr %76, align 8, !tbaa !9
  %443 = getelementptr inbounds i64, ptr %441, i64 %442
  %444 = load i64, ptr %443, align 8, !tbaa !9
  store i64 %444, ptr %75, align 8, !tbaa !9
  %445 = load i64, ptr %75, align 8, !tbaa !9
  %446 = load i64, ptr %90, align 8, !tbaa !9
  %447 = sub nsw i64 %445, %446
  %448 = add nsw i64 %447, 1
  store i64 %448, ptr %63, align 8, !tbaa !9
  %449 = load i64, ptr %63, align 8, !tbaa !9
  %450 = icmp eq i64 %449, 1
  br i1 %450, label %451, label %520

451:                                              ; preds = %440
  %452 = load i64, ptr %92, align 8, !tbaa !9
  %453 = icmp eq i64 %452, 1
  br i1 %453, label %483, label %454

454:                                              ; preds = %451
  %455 = load i64, ptr %92, align 8, !tbaa !9
  %456 = icmp eq i64 %455, 3
  br i1 %456, label %457, label %473

457:                                              ; preds = %454
  %458 = load ptr, ptr %33, align 8, !tbaa !5
  %459 = load i64, ptr %90, align 8, !tbaa !9
  %460 = getelementptr inbounds double, ptr %458, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !11
  %462 = load ptr, ptr %29, align 8, !tbaa !5
  %463 = load double, ptr %462, align 8, !tbaa !11
  %464 = fcmp ogt double %461, %463
  br i1 %464, label %465, label %473

465:                                              ; preds = %457
  %466 = load ptr, ptr %33, align 8, !tbaa !5
  %467 = load i64, ptr %90, align 8, !tbaa !9
  %468 = getelementptr inbounds double, ptr %466, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !11
  %470 = load ptr, ptr %30, align 8, !tbaa !5
  %471 = load double, ptr %470, align 8, !tbaa !11
  %472 = fcmp ole double %469, %471
  br i1 %472, label %483, label %473

473:                                              ; preds = %465, %457, %454
  %474 = load i64, ptr %92, align 8, !tbaa !9
  %475 = icmp eq i64 %474, 2
  br i1 %475, label %476, label %514

476:                                              ; preds = %473
  %477 = load ptr, ptr %45, align 8, !tbaa !5
  %478 = load i64, ptr %94, align 8, !tbaa !9
  %479 = getelementptr inbounds i64, ptr %477, i64 %478
  %480 = load i64, ptr %479, align 8, !tbaa !9
  %481 = load i64, ptr %76, align 8, !tbaa !9
  %482 = icmp eq i64 %480, %481
  br i1 %482, label %483, label %514

483:                                              ; preds = %476, %465, %451
  %484 = load ptr, ptr %41, align 8, !tbaa !5
  %485 = load i64, ptr %484, align 8, !tbaa !9
  %486 = add nsw i64 %485, 1
  store i64 %486, ptr %484, align 8, !tbaa !9
  %487 = load ptr, ptr %33, align 8, !tbaa !5
  %488 = load i64, ptr %90, align 8, !tbaa !9
  %489 = getelementptr inbounds double, ptr %487, i64 %488
  %490 = load double, ptr %489, align 8, !tbaa !11
  %491 = load ptr, ptr %42, align 8, !tbaa !5
  %492 = load ptr, ptr %41, align 8, !tbaa !5
  %493 = load i64, ptr %492, align 8, !tbaa !9
  %494 = getelementptr inbounds double, ptr %491, i64 %493
  store double %490, ptr %494, align 8, !tbaa !11
  %495 = load ptr, ptr %43, align 8, !tbaa !5
  %496 = load ptr, ptr %41, align 8, !tbaa !5
  %497 = load i64, ptr %496, align 8, !tbaa !9
  %498 = getelementptr inbounds double, ptr %495, i64 %497
  store double 0.000000e+00, ptr %498, align 8, !tbaa !11
  %499 = load ptr, ptr %44, align 8, !tbaa !5
  %500 = load ptr, ptr %41, align 8, !tbaa !5
  %501 = load i64, ptr %500, align 8, !tbaa !9
  %502 = getelementptr inbounds double, ptr %499, i64 %501
  store double 0.000000e+00, ptr %502, align 8, !tbaa !11
  %503 = load i64, ptr %76, align 8, !tbaa !9
  %504 = load ptr, ptr %45, align 8, !tbaa !5
  %505 = load ptr, ptr %41, align 8, !tbaa !5
  %506 = load i64, ptr %505, align 8, !tbaa !9
  %507 = getelementptr inbounds i64, ptr %504, i64 %506
  store i64 %503, ptr %507, align 8, !tbaa !9
  %508 = load ptr, ptr %46, align 8, !tbaa !5
  %509 = load ptr, ptr %41, align 8, !tbaa !5
  %510 = load i64, ptr %509, align 8, !tbaa !9
  %511 = getelementptr inbounds i64, ptr %508, i64 %510
  store i64 1, ptr %511, align 8, !tbaa !9
  %512 = load i64, ptr %94, align 8, !tbaa !9
  %513 = add nsw i64 %512, 1
  store i64 %513, ptr %94, align 8, !tbaa !9
  br label %514

514:                                              ; preds = %483, %476, %473
  %515 = load ptr, ptr %34, align 8, !tbaa !5
  %516 = load i64, ptr %75, align 8, !tbaa !9
  %517 = getelementptr inbounds double, ptr %515, i64 %516
  store double 0.000000e+00, ptr %517, align 8, !tbaa !11
  %518 = load i64, ptr %75, align 8, !tbaa !9
  %519 = add nsw i64 %518, 1
  store i64 %519, ptr %90, align 8, !tbaa !9
  br label %1932

520:                                              ; preds = %440
  %521 = load ptr, ptr %34, align 8, !tbaa !5
  %522 = load i64, ptr %75, align 8, !tbaa !9
  %523 = getelementptr inbounds double, ptr %521, i64 %522
  store double 0.000000e+00, ptr %523, align 8, !tbaa !11
  %524 = load ptr, ptr %33, align 8, !tbaa !5
  %525 = load i64, ptr %90, align 8, !tbaa !9
  %526 = getelementptr inbounds double, ptr %524, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !11
  store double %527, ptr %62, align 8, !tbaa !11
  %528 = load ptr, ptr %33, align 8, !tbaa !5
  %529 = load i64, ptr %90, align 8, !tbaa !9
  %530 = getelementptr inbounds double, ptr %528, i64 %529
  %531 = load double, ptr %530, align 8, !tbaa !11
  store double %531, ptr %65, align 8, !tbaa !11
  %532 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %532, ptr %53, align 8, !tbaa !9
  %533 = load i64, ptr %90, align 8, !tbaa !9
  store i64 %533, ptr %57, align 8, !tbaa !9
  br label %534

534:                                              ; preds = %568, %520
  %535 = load i64, ptr %57, align 8, !tbaa !9
  %536 = load i64, ptr %53, align 8, !tbaa !9
  %537 = icmp sle i64 %535, %536
  br i1 %537, label %538, label %571

538:                                              ; preds = %534
  %539 = load ptr, ptr %47, align 8, !tbaa !5
  %540 = load i64, ptr %57, align 8, !tbaa !9
  %541 = shl i64 %540, 1
  %542 = sub nsw i64 %541, 1
  %543 = getelementptr inbounds double, ptr %539, i64 %542
  %544 = load double, ptr %543, align 8, !tbaa !11
  store double %544, ptr %54, align 8, !tbaa !11
  %545 = load double, ptr %54, align 8, !tbaa !11
  %546 = load double, ptr %62, align 8, !tbaa !11
  %547 = fcmp ole double %545, %546
  br i1 %547, label %548, label %550

548:                                              ; preds = %538
  %549 = load double, ptr %54, align 8, !tbaa !11
  br label %552

550:                                              ; preds = %538
  %551 = load double, ptr %62, align 8, !tbaa !11
  br label %552

552:                                              ; preds = %550, %548
  %553 = phi double [ %549, %548 ], [ %551, %550 ]
  store double %553, ptr %62, align 8, !tbaa !11
  %554 = load ptr, ptr %47, align 8, !tbaa !5
  %555 = load i64, ptr %57, align 8, !tbaa !9
  %556 = mul nsw i64 %555, 2
  %557 = getelementptr inbounds double, ptr %554, i64 %556
  %558 = load double, ptr %557, align 8, !tbaa !11
  store double %558, ptr %54, align 8, !tbaa !11
  %559 = load double, ptr %54, align 8, !tbaa !11
  %560 = load double, ptr %65, align 8, !tbaa !11
  %561 = fcmp oge double %559, %560
  br i1 %561, label %562, label %564

562:                                              ; preds = %552
  %563 = load double, ptr %54, align 8, !tbaa !11
  br label %566

564:                                              ; preds = %552
  %565 = load double, ptr %65, align 8, !tbaa !11
  br label %566

566:                                              ; preds = %564, %562
  %567 = phi double [ %563, %562 ], [ %565, %564 ]
  store double %567, ptr %65, align 8, !tbaa !11
  br label %568

568:                                              ; preds = %566
  %569 = load i64, ptr %57, align 8, !tbaa !9
  %570 = add nsw i64 %569, 1
  store i64 %570, ptr %57, align 8, !tbaa !9
  br label %534, !llvm.loop !16

571:                                              ; preds = %534
  %572 = load double, ptr %65, align 8, !tbaa !11
  %573 = load double, ptr %62, align 8, !tbaa !11
  %574 = fsub double %572, %573
  store double %574, ptr %96, align 8, !tbaa !11
  %575 = load i64, ptr %92, align 8, !tbaa !9
  %576 = icmp eq i64 %575, 1
  br i1 %576, label %577, label %580

577:                                              ; preds = %571
  %578 = load i64, ptr %91, align 8, !tbaa !9
  %579 = icmp ne i64 %578, 0
  br i1 %579, label %580, label %711

580:                                              ; preds = %577, %571
  store i64 0, ptr %61, align 8, !tbaa !9
  %581 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %581, ptr %53, align 8, !tbaa !9
  %582 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %582, ptr %57, align 8, !tbaa !9
  br label %583

583:                                              ; preds = %599, %580
  %584 = load i64, ptr %57, align 8, !tbaa !9
  %585 = load i64, ptr %53, align 8, !tbaa !9
  %586 = icmp sle i64 %584, %585
  br i1 %586, label %587, label %602

587:                                              ; preds = %583
  %588 = load ptr, ptr %45, align 8, !tbaa !5
  %589 = load i64, ptr %57, align 8, !tbaa !9
  %590 = getelementptr inbounds i64, ptr %588, i64 %589
  %591 = load i64, ptr %590, align 8, !tbaa !9
  %592 = load i64, ptr %76, align 8, !tbaa !9
  %593 = icmp eq i64 %591, %592
  br i1 %593, label %594, label %597

594:                                              ; preds = %587
  %595 = load i64, ptr %61, align 8, !tbaa !9
  %596 = add nsw i64 %595, 1
  store i64 %596, ptr %61, align 8, !tbaa !9
  br label %598

597:                                              ; preds = %587
  br label %603

598:                                              ; preds = %594
  br label %599

599:                                              ; preds = %598
  %600 = load i64, ptr %57, align 8, !tbaa !9
  %601 = add nsw i64 %600, 1
  store i64 %601, ptr %57, align 8, !tbaa !9
  br label %583, !llvm.loop !17

602:                                              ; preds = %583
  br label %603

603:                                              ; preds = %602, %597
  %604 = load i64, ptr %61, align 8, !tbaa !9
  %605 = icmp eq i64 %604, 0
  br i1 %605, label %606, label %612

606:                                              ; preds = %603
  %607 = load ptr, ptr %34, align 8, !tbaa !5
  %608 = load i64, ptr %75, align 8, !tbaa !9
  %609 = getelementptr inbounds double, ptr %607, i64 %608
  store double 0.000000e+00, ptr %609, align 8, !tbaa !11
  %610 = load i64, ptr %75, align 8, !tbaa !9
  %611 = add nsw i64 %610, 1
  store i64 %611, ptr %90, align 8, !tbaa !9
  br label %1932

612:                                              ; preds = %603
  %613 = load i64, ptr %61, align 8, !tbaa !9
  %614 = sitofp i64 %613 to double
  %615 = load i64, ptr %63, align 8, !tbaa !9
  %616 = sitofp i64 %615 to double
  %617 = fmul double %616, 5.000000e-01
  %618 = fcmp ogt double %614, %617
  br i1 %618, label %619, label %623

619:                                              ; preds = %612
  %620 = load i64, ptr %91, align 8, !tbaa !9
  %621 = icmp ne i64 %620, 0
  %622 = xor i1 %621, true
  br label %623

623:                                              ; preds = %619, %612
  %624 = phi i1 [ false, %612 ], [ %622, %619 ]
  %625 = zext i1 %624 to i32
  %626 = sext i32 %625 to i64
  store i64 %626, ptr %97, align 8, !tbaa !9
  %627 = load i64, ptr %94, align 8, !tbaa !9
  %628 = load i64, ptr %61, align 8, !tbaa !9
  %629 = add nsw i64 %627, %628
  %630 = sub nsw i64 %629, 1
  store i64 %630, ptr %81, align 8, !tbaa !9
  store double 0.000000e+00, ptr %87, align 8, !tbaa !11
  %631 = load i64, ptr %81, align 8, !tbaa !9
  %632 = sub nsw i64 %631, 1
  store i64 %632, ptr %53, align 8, !tbaa !9
  %633 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %633, ptr %57, align 8, !tbaa !9
  br label %634

634:                                              ; preds = %672, %623
  %635 = load i64, ptr %57, align 8, !tbaa !9
  %636 = load i64, ptr %53, align 8, !tbaa !9
  %637 = icmp sle i64 %635, %636
  br i1 %637, label %638, label %675

638:                                              ; preds = %634
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %639 = load ptr, ptr %42, align 8, !tbaa !5
  %640 = load i64, ptr %57, align 8, !tbaa !9
  %641 = add nsw i64 %640, 1
  %642 = getelementptr inbounds double, ptr %639, i64 %641
  %643 = load double, ptr %642, align 8, !tbaa !11
  %644 = load ptr, ptr %43, align 8, !tbaa !5
  %645 = load i64, ptr %57, align 8, !tbaa !9
  %646 = add nsw i64 %645, 1
  %647 = getelementptr inbounds double, ptr %644, i64 %646
  %648 = load double, ptr %647, align 8, !tbaa !11
  %649 = fsub double %643, %648
  %650 = load ptr, ptr %42, align 8, !tbaa !5
  %651 = load i64, ptr %57, align 8, !tbaa !9
  %652 = getelementptr inbounds double, ptr %650, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !11
  %654 = load ptr, ptr %43, align 8, !tbaa !5
  %655 = load i64, ptr %57, align 8, !tbaa !9
  %656 = getelementptr inbounds double, ptr %654, i64 %655
  %657 = load double, ptr %656, align 8, !tbaa !11
  %658 = fadd double %653, %657
  %659 = fsub double %649, %658
  store double %659, ptr %55, align 8, !tbaa !11
  %660 = load double, ptr %54, align 8, !tbaa !11
  %661 = load double, ptr %55, align 8, !tbaa !11
  %662 = fcmp oge double %660, %661
  br i1 %662, label %663, label %665

663:                                              ; preds = %638
  %664 = load double, ptr %54, align 8, !tbaa !11
  br label %667

665:                                              ; preds = %638
  %666 = load double, ptr %55, align 8, !tbaa !11
  br label %667

667:                                              ; preds = %665, %663
  %668 = phi double [ %664, %663 ], [ %666, %665 ]
  %669 = load ptr, ptr %44, align 8, !tbaa !5
  %670 = load i64, ptr %57, align 8, !tbaa !9
  %671 = getelementptr inbounds double, ptr %669, i64 %670
  store double %668, ptr %671, align 8, !tbaa !11
  br label %672

672:                                              ; preds = %667
  %673 = load i64, ptr %57, align 8, !tbaa !9
  %674 = add nsw i64 %673, 1
  store i64 %674, ptr %57, align 8, !tbaa !9
  br label %634, !llvm.loop !18

675:                                              ; preds = %634
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %676 = load ptr, ptr %30, align 8, !tbaa !5
  %677 = load double, ptr %676, align 8, !tbaa !11
  %678 = load double, ptr %87, align 8, !tbaa !11
  %679 = fsub double %677, %678
  %680 = load ptr, ptr %42, align 8, !tbaa !5
  %681 = load i64, ptr %81, align 8, !tbaa !9
  %682 = getelementptr inbounds double, ptr %680, i64 %681
  %683 = load double, ptr %682, align 8, !tbaa !11
  %684 = load ptr, ptr %43, align 8, !tbaa !5
  %685 = load i64, ptr %81, align 8, !tbaa !9
  %686 = getelementptr inbounds double, ptr %684, i64 %685
  %687 = load double, ptr %686, align 8, !tbaa !11
  %688 = fadd double %683, %687
  %689 = fsub double %679, %688
  store double %689, ptr %55, align 8, !tbaa !11
  %690 = load double, ptr %54, align 8, !tbaa !11
  %691 = load double, ptr %55, align 8, !tbaa !11
  %692 = fcmp oge double %690, %691
  br i1 %692, label %693, label %695

693:                                              ; preds = %675
  %694 = load double, ptr %54, align 8, !tbaa !11
  br label %697

695:                                              ; preds = %675
  %696 = load double, ptr %55, align 8, !tbaa !11
  br label %697

697:                                              ; preds = %695, %693
  %698 = phi double [ %694, %693 ], [ %696, %695 ]
  %699 = load ptr, ptr %44, align 8, !tbaa !5
  %700 = load i64, ptr %81, align 8, !tbaa !9
  %701 = getelementptr inbounds double, ptr %699, i64 %700
  store double %698, ptr %701, align 8, !tbaa !11
  %702 = load ptr, ptr %46, align 8, !tbaa !5
  %703 = load i64, ptr %94, align 8, !tbaa !9
  %704 = getelementptr inbounds i64, ptr %702, i64 %703
  %705 = load i64, ptr %704, align 8, !tbaa !9
  store i64 %705, ptr %78, align 8, !tbaa !9
  %706 = load ptr, ptr %46, align 8, !tbaa !5
  %707 = load i64, ptr %81, align 8, !tbaa !9
  %708 = getelementptr inbounds i64, ptr %706, i64 %707
  %709 = load i64, ptr %708, align 8, !tbaa !9
  store i64 %709, ptr %83, align 8, !tbaa !9
  br label %710

710:                                              ; preds = %697
  br label %711

711:                                              ; preds = %710, %577
  %712 = load i64, ptr %92, align 8, !tbaa !9
  %713 = icmp eq i64 %712, 1
  br i1 %713, label %714, label %717

714:                                              ; preds = %711
  %715 = load i64, ptr %91, align 8, !tbaa !9
  %716 = icmp ne i64 %715, 0
  br i1 %716, label %717, label %720

717:                                              ; preds = %714, %711
  %718 = load i64, ptr %97, align 8, !tbaa !9
  %719 = icmp ne i64 %718, 0
  br i1 %719, label %720, label %807

720:                                              ; preds = %717, %714
  %721 = load ptr, ptr %33, align 8, !tbaa !5
  %722 = load i64, ptr %90, align 8, !tbaa !9
  %723 = getelementptr inbounds double, ptr %721, i64 %722
  %724 = load ptr, ptr %35, align 8, !tbaa !5
  %725 = load i64, ptr %90, align 8, !tbaa !9
  %726 = getelementptr inbounds double, ptr %724, i64 %725
  %727 = load ptr, ptr %48, align 8, !tbaa !5
  %728 = call i32 @dlarrk_(ptr noundef %63, ptr noundef @c__1, ptr noundef %62, ptr noundef %65, ptr noundef %723, ptr noundef %726, ptr noundef %727, ptr noundef %70, ptr noundef %69, ptr noundef %73, ptr noundef %88)
  %729 = load i64, ptr %88, align 8, !tbaa !9
  %730 = icmp ne i64 %729, 0
  br i1 %730, label %731, label %733

731:                                              ; preds = %720
  %732 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -1, ptr %732, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %103, align 4
  br label %1937

733:                                              ; preds = %720
  %734 = load double, ptr %62, align 8, !tbaa !11
  store double %734, ptr %55, align 8, !tbaa !11
  %735 = load double, ptr %69, align 8, !tbaa !11
  %736 = load double, ptr %73, align 8, !tbaa !11
  %737 = fsub double %735, %736
  %738 = load double, ptr %67, align 8, !tbaa !11
  %739 = fmul double %738, 1.000000e+02
  %740 = load double, ptr %69, align 8, !tbaa !11
  %741 = load double, ptr %73, align 8, !tbaa !11
  %742 = fsub double %740, %741
  store double %742, ptr %54, align 8, !tbaa !11
  %743 = load double, ptr %54, align 8, !tbaa !11
  %744 = fcmp oge double %743, 0.000000e+00
  br i1 %744, label %745, label %747

745:                                              ; preds = %733
  %746 = load double, ptr %54, align 8, !tbaa !11
  br label %750

747:                                              ; preds = %733
  %748 = load double, ptr %54, align 8, !tbaa !11
  %749 = fneg double %748
  br label %750

750:                                              ; preds = %747, %745
  %751 = phi double [ %746, %745 ], [ %749, %747 ]
  %752 = fneg double %739
  %753 = call double @llvm.fmuladd.f64(double %752, double %751, double %737)
  store double %753, ptr %56, align 8, !tbaa !11
  %754 = load double, ptr %55, align 8, !tbaa !11
  %755 = load double, ptr %56, align 8, !tbaa !11
  %756 = fcmp oge double %754, %755
  br i1 %756, label %757, label %759

757:                                              ; preds = %750
  %758 = load double, ptr %55, align 8, !tbaa !11
  br label %761

759:                                              ; preds = %750
  %760 = load double, ptr %56, align 8, !tbaa !11
  br label %761

761:                                              ; preds = %759, %757
  %762 = phi double [ %758, %757 ], [ %760, %759 ]
  store double %762, ptr %99, align 8, !tbaa !11
  %763 = load ptr, ptr %33, align 8, !tbaa !5
  %764 = load i64, ptr %90, align 8, !tbaa !9
  %765 = getelementptr inbounds double, ptr %763, i64 %764
  %766 = load ptr, ptr %35, align 8, !tbaa !5
  %767 = load i64, ptr %90, align 8, !tbaa !9
  %768 = getelementptr inbounds double, ptr %766, i64 %767
  %769 = load ptr, ptr %48, align 8, !tbaa !5
  %770 = call i32 @dlarrk_(ptr noundef %63, ptr noundef %63, ptr noundef %62, ptr noundef %65, ptr noundef %765, ptr noundef %768, ptr noundef %769, ptr noundef %70, ptr noundef %69, ptr noundef %73, ptr noundef %88)
  %771 = load i64, ptr %88, align 8, !tbaa !9
  %772 = icmp ne i64 %771, 0
  br i1 %772, label %773, label %775

773:                                              ; preds = %761
  %774 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -1, ptr %774, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %103, align 4
  br label %1937

775:                                              ; preds = %761
  %776 = load double, ptr %65, align 8, !tbaa !11
  store double %776, ptr %55, align 8, !tbaa !11
  %777 = load double, ptr %69, align 8, !tbaa !11
  %778 = load double, ptr %73, align 8, !tbaa !11
  %779 = fadd double %777, %778
  %780 = load double, ptr %67, align 8, !tbaa !11
  %781 = fmul double %780, 1.000000e+02
  %782 = load double, ptr %69, align 8, !tbaa !11
  %783 = load double, ptr %73, align 8, !tbaa !11
  %784 = fadd double %782, %783
  store double %784, ptr %54, align 8, !tbaa !11
  %785 = load double, ptr %54, align 8, !tbaa !11
  %786 = fcmp oge double %785, 0.000000e+00
  br i1 %786, label %787, label %789

787:                                              ; preds = %775
  %788 = load double, ptr %54, align 8, !tbaa !11
  br label %792

789:                                              ; preds = %775
  %790 = load double, ptr %54, align 8, !tbaa !11
  %791 = fneg double %790
  br label %792

792:                                              ; preds = %789, %787
  %793 = phi double [ %788, %787 ], [ %791, %789 ]
  %794 = call double @llvm.fmuladd.f64(double %781, double %793, double %779)
  store double %794, ptr %56, align 8, !tbaa !11
  %795 = load double, ptr %55, align 8, !tbaa !11
  %796 = load double, ptr %56, align 8, !tbaa !11
  %797 = fcmp ole double %795, %796
  br i1 %797, label %798, label %800

798:                                              ; preds = %792
  %799 = load double, ptr %55, align 8, !tbaa !11
  br label %802

800:                                              ; preds = %792
  %801 = load double, ptr %56, align 8, !tbaa !11
  br label %802

802:                                              ; preds = %800, %798
  %803 = phi double [ %799, %798 ], [ %801, %800 ]
  store double %803, ptr %100, align 8, !tbaa !11
  %804 = load double, ptr %100, align 8, !tbaa !11
  %805 = load double, ptr %99, align 8, !tbaa !11
  %806 = fsub double %804, %805
  store double %806, ptr %96, align 8, !tbaa !11
  br label %889

807:                                              ; preds = %717
  %808 = load double, ptr %62, align 8, !tbaa !11
  store double %808, ptr %55, align 8, !tbaa !11
  %809 = load ptr, ptr %42, align 8, !tbaa !5
  %810 = load i64, ptr %94, align 8, !tbaa !9
  %811 = getelementptr inbounds double, ptr %809, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !11
  %813 = load ptr, ptr %43, align 8, !tbaa !5
  %814 = load i64, ptr %94, align 8, !tbaa !9
  %815 = getelementptr inbounds double, ptr %813, i64 %814
  %816 = load double, ptr %815, align 8, !tbaa !11
  %817 = fsub double %812, %816
  %818 = load double, ptr %67, align 8, !tbaa !11
  %819 = fmul double %818, 1.000000e+02
  %820 = load ptr, ptr %42, align 8, !tbaa !5
  %821 = load i64, ptr %94, align 8, !tbaa !9
  %822 = getelementptr inbounds double, ptr %820, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !11
  %824 = load ptr, ptr %43, align 8, !tbaa !5
  %825 = load i64, ptr %94, align 8, !tbaa !9
  %826 = getelementptr inbounds double, ptr %824, i64 %825
  %827 = load double, ptr %826, align 8, !tbaa !11
  %828 = fsub double %823, %827
  store double %828, ptr %54, align 8, !tbaa !11
  %829 = load double, ptr %54, align 8, !tbaa !11
  %830 = fcmp oge double %829, 0.000000e+00
  br i1 %830, label %831, label %833

831:                                              ; preds = %807
  %832 = load double, ptr %54, align 8, !tbaa !11
  br label %836

833:                                              ; preds = %807
  %834 = load double, ptr %54, align 8, !tbaa !11
  %835 = fneg double %834
  br label %836

836:                                              ; preds = %833, %831
  %837 = phi double [ %832, %831 ], [ %835, %833 ]
  %838 = fneg double %819
  %839 = call double @llvm.fmuladd.f64(double %838, double %837, double %817)
  store double %839, ptr %56, align 8, !tbaa !11
  %840 = load double, ptr %55, align 8, !tbaa !11
  %841 = load double, ptr %56, align 8, !tbaa !11
  %842 = fcmp oge double %840, %841
  br i1 %842, label %843, label %845

843:                                              ; preds = %836
  %844 = load double, ptr %55, align 8, !tbaa !11
  br label %847

845:                                              ; preds = %836
  %846 = load double, ptr %56, align 8, !tbaa !11
  br label %847

847:                                              ; preds = %845, %843
  %848 = phi double [ %844, %843 ], [ %846, %845 ]
  store double %848, ptr %99, align 8, !tbaa !11
  %849 = load double, ptr %65, align 8, !tbaa !11
  store double %849, ptr %55, align 8, !tbaa !11
  %850 = load ptr, ptr %42, align 8, !tbaa !5
  %851 = load i64, ptr %81, align 8, !tbaa !9
  %852 = getelementptr inbounds double, ptr %850, i64 %851
  %853 = load double, ptr %852, align 8, !tbaa !11
  %854 = load ptr, ptr %43, align 8, !tbaa !5
  %855 = load i64, ptr %81, align 8, !tbaa !9
  %856 = getelementptr inbounds double, ptr %854, i64 %855
  %857 = load double, ptr %856, align 8, !tbaa !11
  %858 = fadd double %853, %857
  %859 = load double, ptr %67, align 8, !tbaa !11
  %860 = fmul double %859, 1.000000e+02
  %861 = load ptr, ptr %42, align 8, !tbaa !5
  %862 = load i64, ptr %81, align 8, !tbaa !9
  %863 = getelementptr inbounds double, ptr %861, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !11
  %865 = load ptr, ptr %43, align 8, !tbaa !5
  %866 = load i64, ptr %81, align 8, !tbaa !9
  %867 = getelementptr inbounds double, ptr %865, i64 %866
  %868 = load double, ptr %867, align 8, !tbaa !11
  %869 = fadd double %864, %868
  store double %869, ptr %54, align 8, !tbaa !11
  %870 = load double, ptr %54, align 8, !tbaa !11
  %871 = fcmp oge double %870, 0.000000e+00
  br i1 %871, label %872, label %874

872:                                              ; preds = %847
  %873 = load double, ptr %54, align 8, !tbaa !11
  br label %877

874:                                              ; preds = %847
  %875 = load double, ptr %54, align 8, !tbaa !11
  %876 = fneg double %875
  br label %877

877:                                              ; preds = %874, %872
  %878 = phi double [ %873, %872 ], [ %876, %874 ]
  %879 = call double @llvm.fmuladd.f64(double %860, double %878, double %858)
  store double %879, ptr %56, align 8, !tbaa !11
  %880 = load double, ptr %55, align 8, !tbaa !11
  %881 = load double, ptr %56, align 8, !tbaa !11
  %882 = fcmp ole double %880, %881
  br i1 %882, label %883, label %885

883:                                              ; preds = %877
  %884 = load double, ptr %55, align 8, !tbaa !11
  br label %887

885:                                              ; preds = %877
  %886 = load double, ptr %56, align 8, !tbaa !11
  br label %887

887:                                              ; preds = %885, %883
  %888 = phi double [ %884, %883 ], [ %886, %885 ]
  store double %888, ptr %100, align 8, !tbaa !11
  br label %889

889:                                              ; preds = %887, %802
  %890 = load i64, ptr %92, align 8, !tbaa !9
  %891 = icmp eq i64 %890, 1
  br i1 %891, label %892, label %909

892:                                              ; preds = %889
  %893 = load i64, ptr %91, align 8, !tbaa !9
  %894 = icmp ne i64 %893, 0
  br i1 %894, label %909, label %895

895:                                              ; preds = %892
  store i64 1, ptr %97, align 8, !tbaa !9
  store i64 1, ptr %78, align 8, !tbaa !9
  %896 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %896, ptr %83, align 8, !tbaa !9
  %897 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %897, ptr %61, align 8, !tbaa !9
  %898 = load i64, ptr %94, align 8, !tbaa !9
  %899 = load i64, ptr %61, align 8, !tbaa !9
  %900 = add nsw i64 %898, %899
  %901 = sub nsw i64 %900, 1
  store i64 %901, ptr %81, align 8, !tbaa !9
  %902 = load double, ptr %99, align 8, !tbaa !11
  %903 = load double, ptr %96, align 8, !tbaa !11
  %904 = call double @llvm.fmuladd.f64(double %903, double 2.500000e-01, double %902)
  store double %904, ptr %59, align 8, !tbaa !11
  %905 = load double, ptr %100, align 8, !tbaa !11
  %906 = load double, ptr %96, align 8, !tbaa !11
  %907 = fneg double %906
  %908 = call double @llvm.fmuladd.f64(double %907, double 2.500000e-01, double %905)
  store double %908, ptr %60, align 8, !tbaa !11
  br label %972

909:                                              ; preds = %892, %889
  %910 = load i64, ptr %97, align 8, !tbaa !9
  %911 = icmp ne i64 %910, 0
  br i1 %911, label %912, label %920

912:                                              ; preds = %909
  %913 = load double, ptr %99, align 8, !tbaa !11
  %914 = load double, ptr %96, align 8, !tbaa !11
  %915 = call double @llvm.fmuladd.f64(double %914, double 2.500000e-01, double %913)
  store double %915, ptr %59, align 8, !tbaa !11
  %916 = load double, ptr %100, align 8, !tbaa !11
  %917 = load double, ptr %96, align 8, !tbaa !11
  %918 = fneg double %917
  %919 = call double @llvm.fmuladd.f64(double %918, double 2.500000e-01, double %916)
  store double %919, ptr %60, align 8, !tbaa !11
  br label %971

920:                                              ; preds = %909
  %921 = load double, ptr %100, align 8, !tbaa !11
  %922 = load ptr, ptr %30, align 8, !tbaa !5
  %923 = load double, ptr %922, align 8, !tbaa !11
  %924 = fcmp ole double %921, %923
  br i1 %924, label %925, label %927

925:                                              ; preds = %920
  %926 = load double, ptr %100, align 8, !tbaa !11
  br label %930

927:                                              ; preds = %920
  %928 = load ptr, ptr %30, align 8, !tbaa !5
  %929 = load double, ptr %928, align 8, !tbaa !11
  br label %930

930:                                              ; preds = %927, %925
  %931 = phi double [ %926, %925 ], [ %929, %927 ]
  %932 = load double, ptr %99, align 8, !tbaa !11
  %933 = load ptr, ptr %29, align 8, !tbaa !5
  %934 = load double, ptr %933, align 8, !tbaa !11
  %935 = fcmp oge double %932, %934
  br i1 %935, label %936, label %938

936:                                              ; preds = %930
  %937 = load double, ptr %99, align 8, !tbaa !11
  br label %941

938:                                              ; preds = %930
  %939 = load ptr, ptr %29, align 8, !tbaa !5
  %940 = load double, ptr %939, align 8, !tbaa !11
  br label %941

941:                                              ; preds = %938, %936
  %942 = phi double [ %937, %936 ], [ %940, %938 ]
  %943 = fsub double %931, %942
  store double %943, ptr %69, align 8, !tbaa !11
  %944 = load double, ptr %99, align 8, !tbaa !11
  %945 = load ptr, ptr %29, align 8, !tbaa !5
  %946 = load double, ptr %945, align 8, !tbaa !11
  %947 = fcmp oge double %944, %946
  br i1 %947, label %948, label %950

948:                                              ; preds = %941
  %949 = load double, ptr %99, align 8, !tbaa !11
  br label %953

950:                                              ; preds = %941
  %951 = load ptr, ptr %29, align 8, !tbaa !5
  %952 = load double, ptr %951, align 8, !tbaa !11
  br label %953

953:                                              ; preds = %950, %948
  %954 = phi double [ %949, %948 ], [ %952, %950 ]
  %955 = load double, ptr %69, align 8, !tbaa !11
  %956 = call double @llvm.fmuladd.f64(double %955, double 2.500000e-01, double %954)
  store double %956, ptr %59, align 8, !tbaa !11
  %957 = load double, ptr %100, align 8, !tbaa !11
  %958 = load ptr, ptr %30, align 8, !tbaa !5
  %959 = load double, ptr %958, align 8, !tbaa !11
  %960 = fcmp ole double %957, %959
  br i1 %960, label %961, label %963

961:                                              ; preds = %953
  %962 = load double, ptr %100, align 8, !tbaa !11
  br label %966

963:                                              ; preds = %953
  %964 = load ptr, ptr %30, align 8, !tbaa !5
  %965 = load double, ptr %964, align 8, !tbaa !11
  br label %966

966:                                              ; preds = %963, %961
  %967 = phi double [ %962, %961 ], [ %965, %963 ]
  %968 = load double, ptr %69, align 8, !tbaa !11
  %969 = fneg double %968
  %970 = call double @llvm.fmuladd.f64(double %969, double 2.500000e-01, double %967)
  store double %970, ptr %60, align 8, !tbaa !11
  br label %971

971:                                              ; preds = %966, %912
  br label %972

972:                                              ; preds = %971, %895
  %973 = load i64, ptr %61, align 8, !tbaa !9
  %974 = icmp sgt i64 %973, 1
  br i1 %974, label %975, label %984

975:                                              ; preds = %972
  %976 = load ptr, ptr %33, align 8, !tbaa !5
  %977 = load i64, ptr %90, align 8, !tbaa !9
  %978 = getelementptr inbounds double, ptr %976, i64 %977
  %979 = load ptr, ptr %34, align 8, !tbaa !5
  %980 = load i64, ptr %90, align 8, !tbaa !9
  %981 = getelementptr inbounds double, ptr %979, i64 %980
  %982 = load ptr, ptr %48, align 8, !tbaa !5
  %983 = call i32 @dlarrc_(ptr noundef @.str.6, ptr noundef %63, ptr noundef %59, ptr noundef %60, ptr noundef %978, ptr noundef %981, ptr noundef %982, ptr noundef %66, ptr noundef %71, ptr noundef %72, ptr noundef %88)
  br label %984

984:                                              ; preds = %975, %972
  %985 = load i64, ptr %61, align 8, !tbaa !9
  %986 = icmp eq i64 %985, 1
  br i1 %986, label %987, label %989

987:                                              ; preds = %984
  %988 = load double, ptr %62, align 8, !tbaa !11
  store double %988, ptr %87, align 8, !tbaa !11
  store double 1.000000e+00, ptr %93, align 8, !tbaa !11
  br label %1068

989:                                              ; preds = %984
  %990 = load i64, ptr %71, align 8, !tbaa !9
  %991 = load i64, ptr %78, align 8, !tbaa !9
  %992 = sub nsw i64 %990, %991
  %993 = load i64, ptr %83, align 8, !tbaa !9
  %994 = load i64, ptr %72, align 8, !tbaa !9
  %995 = sub nsw i64 %993, %994
  %996 = icmp sge i64 %992, %995
  br i1 %996, label %997, label %1032

997:                                              ; preds = %989
  %998 = load i64, ptr %92, align 8, !tbaa !9
  %999 = icmp eq i64 %998, 1
  br i1 %999, label %1000, label %1013

1000:                                             ; preds = %997
  %1001 = load i64, ptr %91, align 8, !tbaa !9
  %1002 = icmp ne i64 %1001, 0
  br i1 %1002, label %1013, label %1003

1003:                                             ; preds = %1000
  %1004 = load double, ptr %99, align 8, !tbaa !11
  %1005 = load double, ptr %62, align 8, !tbaa !11
  %1006 = fcmp oge double %1004, %1005
  br i1 %1006, label %1007, label %1009

1007:                                             ; preds = %1003
  %1008 = load double, ptr %99, align 8, !tbaa !11
  br label %1011

1009:                                             ; preds = %1003
  %1010 = load double, ptr %62, align 8, !tbaa !11
  br label %1011

1011:                                             ; preds = %1009, %1007
  %1012 = phi double [ %1008, %1007 ], [ %1010, %1009 ]
  store double %1012, ptr %87, align 8, !tbaa !11
  br label %1031

1013:                                             ; preds = %1000, %997
  %1014 = load i64, ptr %97, align 8, !tbaa !9
  %1015 = icmp ne i64 %1014, 0
  br i1 %1015, label %1016, label %1018

1016:                                             ; preds = %1013
  %1017 = load double, ptr %99, align 8, !tbaa !11
  store double %1017, ptr %87, align 8, !tbaa !11
  br label %1030

1018:                                             ; preds = %1013
  %1019 = load double, ptr %99, align 8, !tbaa !11
  %1020 = load ptr, ptr %29, align 8, !tbaa !5
  %1021 = load double, ptr %1020, align 8, !tbaa !11
  %1022 = fcmp oge double %1019, %1021
  br i1 %1022, label %1023, label %1025

1023:                                             ; preds = %1018
  %1024 = load double, ptr %99, align 8, !tbaa !11
  br label %1028

1025:                                             ; preds = %1018
  %1026 = load ptr, ptr %29, align 8, !tbaa !5
  %1027 = load double, ptr %1026, align 8, !tbaa !11
  br label %1028

1028:                                             ; preds = %1025, %1023
  %1029 = phi double [ %1024, %1023 ], [ %1027, %1025 ]
  store double %1029, ptr %87, align 8, !tbaa !11
  br label %1030

1030:                                             ; preds = %1028, %1016
  br label %1031

1031:                                             ; preds = %1030, %1011
  store double 1.000000e+00, ptr %93, align 8, !tbaa !11
  br label %1067

1032:                                             ; preds = %989
  %1033 = load i64, ptr %92, align 8, !tbaa !9
  %1034 = icmp eq i64 %1033, 1
  br i1 %1034, label %1035, label %1048

1035:                                             ; preds = %1032
  %1036 = load i64, ptr %91, align 8, !tbaa !9
  %1037 = icmp ne i64 %1036, 0
  br i1 %1037, label %1048, label %1038

1038:                                             ; preds = %1035
  %1039 = load double, ptr %100, align 8, !tbaa !11
  %1040 = load double, ptr %65, align 8, !tbaa !11
  %1041 = fcmp ole double %1039, %1040
  br i1 %1041, label %1042, label %1044

1042:                                             ; preds = %1038
  %1043 = load double, ptr %100, align 8, !tbaa !11
  br label %1046

1044:                                             ; preds = %1038
  %1045 = load double, ptr %65, align 8, !tbaa !11
  br label %1046

1046:                                             ; preds = %1044, %1042
  %1047 = phi double [ %1043, %1042 ], [ %1045, %1044 ]
  store double %1047, ptr %87, align 8, !tbaa !11
  br label %1066

1048:                                             ; preds = %1035, %1032
  %1049 = load i64, ptr %97, align 8, !tbaa !9
  %1050 = icmp ne i64 %1049, 0
  br i1 %1050, label %1051, label %1053

1051:                                             ; preds = %1048
  %1052 = load double, ptr %100, align 8, !tbaa !11
  store double %1052, ptr %87, align 8, !tbaa !11
  br label %1065

1053:                                             ; preds = %1048
  %1054 = load double, ptr %100, align 8, !tbaa !11
  %1055 = load ptr, ptr %30, align 8, !tbaa !5
  %1056 = load double, ptr %1055, align 8, !tbaa !11
  %1057 = fcmp ole double %1054, %1056
  br i1 %1057, label %1058, label %1060

1058:                                             ; preds = %1053
  %1059 = load double, ptr %100, align 8, !tbaa !11
  br label %1063

1060:                                             ; preds = %1053
  %1061 = load ptr, ptr %30, align 8, !tbaa !5
  %1062 = load double, ptr %1061, align 8, !tbaa !11
  br label %1063

1063:                                             ; preds = %1060, %1058
  %1064 = phi double [ %1059, %1058 ], [ %1062, %1060 ]
  store double %1064, ptr %87, align 8, !tbaa !11
  br label %1065

1065:                                             ; preds = %1063, %1051
  br label %1066

1066:                                             ; preds = %1065, %1046
  store double -1.000000e+00, ptr %93, align 8, !tbaa !11
  br label %1067

1067:                                             ; preds = %1066, %1031
  br label %1068

1068:                                             ; preds = %1067, %987
  %1069 = load i64, ptr %97, align 8, !tbaa !9
  %1070 = icmp ne i64 %1069, 0
  br i1 %1070, label %1071, label %1082

1071:                                             ; preds = %1068
  %1072 = load double, ptr %96, align 8, !tbaa !11
  %1073 = load double, ptr %67, align 8, !tbaa !11
  %1074 = fmul double %1072, %1073
  %1075 = load ptr, ptr %28, align 8, !tbaa !5
  %1076 = load i64, ptr %1075, align 8, !tbaa !9
  %1077 = sitofp i64 %1076 to double
  %1078 = load ptr, ptr %48, align 8, !tbaa !5
  %1079 = load double, ptr %1078, align 8, !tbaa !11
  %1080 = fmul double %1079, 2.000000e+00
  %1081 = call double @llvm.fmuladd.f64(double %1074, double %1077, double %1080)
  store double %1081, ptr %68, align 8, !tbaa !11
  br label %1188

1082:                                             ; preds = %1068
  %1083 = load i64, ptr %61, align 8, !tbaa !9
  %1084 = icmp sgt i64 %1083, 1
  br i1 %1084, label %1085, label %1182

1085:                                             ; preds = %1082
  %1086 = load ptr, ptr %42, align 8, !tbaa !5
  %1087 = load i64, ptr %81, align 8, !tbaa !9
  %1088 = getelementptr inbounds double, ptr %1086, i64 %1087
  %1089 = load double, ptr %1088, align 8, !tbaa !11
  %1090 = load ptr, ptr %43, align 8, !tbaa !5
  %1091 = load i64, ptr %81, align 8, !tbaa !9
  %1092 = getelementptr inbounds double, ptr %1090, i64 %1091
  %1093 = load double, ptr %1092, align 8, !tbaa !11
  %1094 = fadd double %1089, %1093
  %1095 = load ptr, ptr %42, align 8, !tbaa !5
  %1096 = load i64, ptr %94, align 8, !tbaa !9
  %1097 = getelementptr inbounds double, ptr %1095, i64 %1096
  %1098 = load double, ptr %1097, align 8, !tbaa !11
  %1099 = fsub double %1094, %1098
  %1100 = load ptr, ptr %43, align 8, !tbaa !5
  %1101 = load i64, ptr %94, align 8, !tbaa !9
  %1102 = getelementptr inbounds double, ptr %1100, i64 %1101
  %1103 = load double, ptr %1102, align 8, !tbaa !11
  %1104 = fsub double %1099, %1103
  store double %1104, ptr %98, align 8, !tbaa !11
  %1105 = load double, ptr %98, align 8, !tbaa !11
  %1106 = load i64, ptr %81, align 8, !tbaa !9
  %1107 = load i64, ptr %94, align 8, !tbaa !9
  %1108 = sub nsw i64 %1106, %1107
  %1109 = sitofp i64 %1108 to double
  %1110 = fdiv double %1105, %1109
  store double %1110, ptr %54, align 8, !tbaa !11
  %1111 = load double, ptr %54, align 8, !tbaa !11
  %1112 = fcmp oge double %1111, 0.000000e+00
  br i1 %1112, label %1113, label %1115

1113:                                             ; preds = %1085
  %1114 = load double, ptr %54, align 8, !tbaa !11
  br label %1118

1115:                                             ; preds = %1085
  %1116 = load double, ptr %54, align 8, !tbaa !11
  %1117 = fneg double %1116
  br label %1118

1118:                                             ; preds = %1115, %1113
  %1119 = phi double [ %1114, %1113 ], [ %1117, %1115 ]
  store double %1119, ptr %86, align 8, !tbaa !11
  %1120 = load double, ptr %93, align 8, !tbaa !11
  %1121 = fcmp oeq double %1120, 1.000000e+00
  br i1 %1121, label %1122, label %1151

1122:                                             ; preds = %1118
  %1123 = load ptr, ptr %44, align 8, !tbaa !5
  %1124 = load i64, ptr %94, align 8, !tbaa !9
  %1125 = getelementptr inbounds double, ptr %1123, i64 %1124
  %1126 = load double, ptr %1125, align 8, !tbaa !11
  store double %1126, ptr %54, align 8, !tbaa !11
  %1127 = load double, ptr %54, align 8, !tbaa !11
  %1128 = load double, ptr %86, align 8, !tbaa !11
  %1129 = fcmp oge double %1127, %1128
  br i1 %1129, label %1130, label %1132

1130:                                             ; preds = %1122
  %1131 = load double, ptr %54, align 8, !tbaa !11
  br label %1134

1132:                                             ; preds = %1122
  %1133 = load double, ptr %86, align 8, !tbaa !11
  br label %1134

1134:                                             ; preds = %1132, %1130
  %1135 = phi double [ %1131, %1130 ], [ %1133, %1132 ]
  %1136 = fmul double %1135, 5.000000e-01
  store double %1136, ptr %68, align 8, !tbaa !11
  %1137 = load double, ptr %68, align 8, !tbaa !11
  store double %1137, ptr %54, align 8, !tbaa !11
  %1138 = load ptr, ptr %43, align 8, !tbaa !5
  %1139 = load i64, ptr %94, align 8, !tbaa !9
  %1140 = getelementptr inbounds double, ptr %1138, i64 %1139
  %1141 = load double, ptr %1140, align 8, !tbaa !11
  store double %1141, ptr %55, align 8, !tbaa !11
  %1142 = load double, ptr %54, align 8, !tbaa !11
  %1143 = load double, ptr %55, align 8, !tbaa !11
  %1144 = fcmp oge double %1142, %1143
  br i1 %1144, label %1145, label %1147

1145:                                             ; preds = %1134
  %1146 = load double, ptr %54, align 8, !tbaa !11
  br label %1149

1147:                                             ; preds = %1134
  %1148 = load double, ptr %55, align 8, !tbaa !11
  br label %1149

1149:                                             ; preds = %1147, %1145
  %1150 = phi double [ %1146, %1145 ], [ %1148, %1147 ]
  store double %1150, ptr %68, align 8, !tbaa !11
  br label %1181

1151:                                             ; preds = %1118
  %1152 = load ptr, ptr %44, align 8, !tbaa !5
  %1153 = load i64, ptr %81, align 8, !tbaa !9
  %1154 = sub nsw i64 %1153, 1
  %1155 = getelementptr inbounds double, ptr %1152, i64 %1154
  %1156 = load double, ptr %1155, align 8, !tbaa !11
  store double %1156, ptr %54, align 8, !tbaa !11
  %1157 = load double, ptr %54, align 8, !tbaa !11
  %1158 = load double, ptr %86, align 8, !tbaa !11
  %1159 = fcmp oge double %1157, %1158
  br i1 %1159, label %1160, label %1162

1160:                                             ; preds = %1151
  %1161 = load double, ptr %54, align 8, !tbaa !11
  br label %1164

1162:                                             ; preds = %1151
  %1163 = load double, ptr %86, align 8, !tbaa !11
  br label %1164

1164:                                             ; preds = %1162, %1160
  %1165 = phi double [ %1161, %1160 ], [ %1163, %1162 ]
  %1166 = fmul double %1165, 5.000000e-01
  store double %1166, ptr %68, align 8, !tbaa !11
  %1167 = load double, ptr %68, align 8, !tbaa !11
  store double %1167, ptr %54, align 8, !tbaa !11
  %1168 = load ptr, ptr %43, align 8, !tbaa !5
  %1169 = load i64, ptr %81, align 8, !tbaa !9
  %1170 = getelementptr inbounds double, ptr %1168, i64 %1169
  %1171 = load double, ptr %1170, align 8, !tbaa !11
  store double %1171, ptr %55, align 8, !tbaa !11
  %1172 = load double, ptr %54, align 8, !tbaa !11
  %1173 = load double, ptr %55, align 8, !tbaa !11
  %1174 = fcmp oge double %1172, %1173
  br i1 %1174, label %1175, label %1177

1175:                                             ; preds = %1164
  %1176 = load double, ptr %54, align 8, !tbaa !11
  br label %1179

1177:                                             ; preds = %1164
  %1178 = load double, ptr %55, align 8, !tbaa !11
  br label %1179

1179:                                             ; preds = %1177, %1175
  %1180 = phi double [ %1176, %1175 ], [ %1178, %1177 ]
  store double %1180, ptr %68, align 8, !tbaa !11
  br label %1181

1181:                                             ; preds = %1179, %1149
  br label %1187

1182:                                             ; preds = %1082
  %1183 = load ptr, ptr %43, align 8, !tbaa !5
  %1184 = load i64, ptr %94, align 8, !tbaa !9
  %1185 = getelementptr inbounds double, ptr %1183, i64 %1184
  %1186 = load double, ptr %1185, align 8, !tbaa !11
  store double %1186, ptr %68, align 8, !tbaa !11
  br label %1187

1187:                                             ; preds = %1182, %1181
  br label %1188

1188:                                             ; preds = %1187, %1071
  store i64 1, ptr %82, align 8, !tbaa !9
  br label %1189

1189:                                             ; preds = %1380, %1188
  %1190 = load i64, ptr %82, align 8, !tbaa !9
  %1191 = icmp sle i64 %1190, 6
  br i1 %1191, label %1192, label %1383

1192:                                             ; preds = %1189
  %1193 = load ptr, ptr %33, align 8, !tbaa !5
  %1194 = load i64, ptr %90, align 8, !tbaa !9
  %1195 = getelementptr inbounds double, ptr %1193, i64 %1194
  %1196 = load double, ptr %1195, align 8, !tbaa !11
  %1197 = load double, ptr %87, align 8, !tbaa !11
  %1198 = fsub double %1196, %1197
  store double %1198, ptr %102, align 8, !tbaa !11
  %1199 = load double, ptr %102, align 8, !tbaa !11
  %1200 = load ptr, ptr %49, align 8, !tbaa !5
  %1201 = getelementptr inbounds double, ptr %1200, i64 1
  store double %1199, ptr %1201, align 8, !tbaa !11
  %1202 = load ptr, ptr %49, align 8, !tbaa !5
  %1203 = getelementptr inbounds double, ptr %1202, i64 1
  %1204 = load double, ptr %1203, align 8, !tbaa !11
  %1205 = fcmp oge double %1204, 0.000000e+00
  br i1 %1205, label %1206, label %1210

1206:                                             ; preds = %1192
  %1207 = load ptr, ptr %49, align 8, !tbaa !5
  %1208 = getelementptr inbounds double, ptr %1207, i64 1
  %1209 = load double, ptr %1208, align 8, !tbaa !11
  br label %1215

1210:                                             ; preds = %1192
  %1211 = load ptr, ptr %49, align 8, !tbaa !5
  %1212 = getelementptr inbounds double, ptr %1211, i64 1
  %1213 = load double, ptr %1212, align 8, !tbaa !11
  %1214 = fneg double %1213
  br label %1215

1215:                                             ; preds = %1210, %1206
  %1216 = phi double [ %1209, %1206 ], [ %1214, %1210 ]
  store double %1216, ptr %79, align 8, !tbaa !11
  %1217 = load i64, ptr %90, align 8, !tbaa !9
  store i64 %1217, ptr %58, align 8, !tbaa !9
  %1218 = load i64, ptr %63, align 8, !tbaa !9
  %1219 = sub nsw i64 %1218, 1
  store i64 %1219, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1220

1220:                                             ; preds = %1294, %1215
  %1221 = load i64, ptr %57, align 8, !tbaa !9
  %1222 = load i64, ptr %53, align 8, !tbaa !9
  %1223 = icmp sle i64 %1221, %1222
  br i1 %1223, label %1224, label %1297

1224:                                             ; preds = %1220
  %1225 = load ptr, ptr %49, align 8, !tbaa !5
  %1226 = load i64, ptr %57, align 8, !tbaa !9
  %1227 = getelementptr inbounds double, ptr %1225, i64 %1226
  %1228 = load double, ptr %1227, align 8, !tbaa !11
  %1229 = fdiv double 1.000000e+00, %1228
  %1230 = load ptr, ptr %49, align 8, !tbaa !5
  %1231 = load i64, ptr %63, align 8, !tbaa !9
  %1232 = shl i64 %1231, 1
  %1233 = load i64, ptr %57, align 8, !tbaa !9
  %1234 = add nsw i64 %1232, %1233
  %1235 = getelementptr inbounds double, ptr %1230, i64 %1234
  store double %1229, ptr %1235, align 8, !tbaa !11
  %1236 = load ptr, ptr %34, align 8, !tbaa !5
  %1237 = load i64, ptr %58, align 8, !tbaa !9
  %1238 = getelementptr inbounds double, ptr %1236, i64 %1237
  %1239 = load double, ptr %1238, align 8, !tbaa !11
  %1240 = load ptr, ptr %49, align 8, !tbaa !5
  %1241 = load i64, ptr %63, align 8, !tbaa !9
  %1242 = shl i64 %1241, 1
  %1243 = load i64, ptr %57, align 8, !tbaa !9
  %1244 = add nsw i64 %1242, %1243
  %1245 = getelementptr inbounds double, ptr %1240, i64 %1244
  %1246 = load double, ptr %1245, align 8, !tbaa !11
  %1247 = fmul double %1239, %1246
  store double %1247, ptr %69, align 8, !tbaa !11
  %1248 = load double, ptr %69, align 8, !tbaa !11
  %1249 = load ptr, ptr %49, align 8, !tbaa !5
  %1250 = load i64, ptr %63, align 8, !tbaa !9
  %1251 = load i64, ptr %57, align 8, !tbaa !9
  %1252 = add nsw i64 %1250, %1251
  %1253 = getelementptr inbounds double, ptr %1249, i64 %1252
  store double %1248, ptr %1253, align 8, !tbaa !11
  %1254 = load ptr, ptr %33, align 8, !tbaa !5
  %1255 = load i64, ptr %58, align 8, !tbaa !9
  %1256 = add nsw i64 %1255, 1
  %1257 = getelementptr inbounds double, ptr %1254, i64 %1256
  %1258 = load double, ptr %1257, align 8, !tbaa !11
  %1259 = load double, ptr %87, align 8, !tbaa !11
  %1260 = fsub double %1258, %1259
  %1261 = load double, ptr %69, align 8, !tbaa !11
  %1262 = load ptr, ptr %34, align 8, !tbaa !5
  %1263 = load i64, ptr %58, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %1262, i64 %1263
  %1265 = load double, ptr %1264, align 8, !tbaa !11
  %1266 = fneg double %1261
  %1267 = call double @llvm.fmuladd.f64(double %1266, double %1265, double %1260)
  store double %1267, ptr %102, align 8, !tbaa !11
  %1268 = load double, ptr %102, align 8, !tbaa !11
  %1269 = load ptr, ptr %49, align 8, !tbaa !5
  %1270 = load i64, ptr %57, align 8, !tbaa !9
  %1271 = add nsw i64 %1270, 1
  %1272 = getelementptr inbounds double, ptr %1269, i64 %1271
  store double %1268, ptr %1272, align 8, !tbaa !11
  %1273 = load double, ptr %79, align 8, !tbaa !11
  store double %1273, ptr %54, align 8, !tbaa !11
  %1274 = load double, ptr %102, align 8, !tbaa !11
  %1275 = fcmp oge double %1274, 0.000000e+00
  br i1 %1275, label %1276, label %1278

1276:                                             ; preds = %1224
  %1277 = load double, ptr %102, align 8, !tbaa !11
  br label %1281

1278:                                             ; preds = %1224
  %1279 = load double, ptr %102, align 8, !tbaa !11
  %1280 = fneg double %1279
  br label %1281

1281:                                             ; preds = %1278, %1276
  %1282 = phi double [ %1277, %1276 ], [ %1280, %1278 ]
  store double %1282, ptr %55, align 8, !tbaa !11
  %1283 = load double, ptr %54, align 8, !tbaa !11
  %1284 = load double, ptr %55, align 8, !tbaa !11
  %1285 = fcmp oge double %1283, %1284
  br i1 %1285, label %1286, label %1288

1286:                                             ; preds = %1281
  %1287 = load double, ptr %54, align 8, !tbaa !11
  br label %1290

1288:                                             ; preds = %1281
  %1289 = load double, ptr %55, align 8, !tbaa !11
  br label %1290

1290:                                             ; preds = %1288, %1286
  %1291 = phi double [ %1287, %1286 ], [ %1289, %1288 ]
  store double %1291, ptr %79, align 8, !tbaa !11
  %1292 = load i64, ptr %58, align 8, !tbaa !9
  %1293 = add nsw i64 %1292, 1
  store i64 %1293, ptr %58, align 8, !tbaa !9
  br label %1294

1294:                                             ; preds = %1290
  %1295 = load i64, ptr %57, align 8, !tbaa !9
  %1296 = add nsw i64 %1295, 1
  store i64 %1296, ptr %57, align 8, !tbaa !9
  br label %1220, !llvm.loop !19

1297:                                             ; preds = %1220
  %1298 = load double, ptr %79, align 8, !tbaa !11
  %1299 = load double, ptr %96, align 8, !tbaa !11
  %1300 = fmul double %1299, 6.400000e+01
  %1301 = fcmp ogt double %1298, %1300
  br i1 %1301, label %1302, label %1303

1302:                                             ; preds = %1297
  store i64 1, ptr %89, align 8, !tbaa !9
  br label %1304

1303:                                             ; preds = %1297
  store i64 0, ptr %89, align 8, !tbaa !9
  br label %1304

1304:                                             ; preds = %1303, %1302
  %1305 = load i64, ptr %97, align 8, !tbaa !9
  %1306 = icmp ne i64 %1305, 0
  br i1 %1306, label %1307, label %1331

1307:                                             ; preds = %1304
  %1308 = load i64, ptr %89, align 8, !tbaa !9
  %1309 = icmp ne i64 %1308, 0
  br i1 %1309, label %1331, label %1310

1310:                                             ; preds = %1307
  %1311 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %1311, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1312

1312:                                             ; preds = %1327, %1310
  %1313 = load i64, ptr %57, align 8, !tbaa !9
  %1314 = load i64, ptr %53, align 8, !tbaa !9
  %1315 = icmp sle i64 %1313, %1314
  br i1 %1315, label %1316, label %1330

1316:                                             ; preds = %1312
  %1317 = load double, ptr %93, align 8, !tbaa !11
  %1318 = load ptr, ptr %49, align 8, !tbaa !5
  %1319 = load i64, ptr %57, align 8, !tbaa !9
  %1320 = getelementptr inbounds double, ptr %1318, i64 %1319
  %1321 = load double, ptr %1320, align 8, !tbaa !11
  %1322 = fmul double %1317, %1321
  store double %1322, ptr %69, align 8, !tbaa !11
  %1323 = load double, ptr %69, align 8, !tbaa !11
  %1324 = fcmp olt double %1323, 0.000000e+00
  br i1 %1324, label %1325, label %1326

1325:                                             ; preds = %1316
  store i64 1, ptr %89, align 8, !tbaa !9
  br label %1326

1326:                                             ; preds = %1325, %1316
  br label %1327

1327:                                             ; preds = %1326
  %1328 = load i64, ptr %57, align 8, !tbaa !9
  %1329 = add nsw i64 %1328, 1
  store i64 %1329, ptr %57, align 8, !tbaa !9
  br label %1312, !llvm.loop !20

1330:                                             ; preds = %1312
  br label %1331

1331:                                             ; preds = %1330, %1307, %1304
  %1332 = load i64, ptr %89, align 8, !tbaa !9
  %1333 = icmp ne i64 %1332, 0
  br i1 %1333, label %1334, label %1378

1334:                                             ; preds = %1331
  %1335 = load i64, ptr %82, align 8, !tbaa !9
  %1336 = icmp eq i64 %1335, 5
  br i1 %1336, label %1337, label %1369

1337:                                             ; preds = %1334
  %1338 = load double, ptr %93, align 8, !tbaa !11
  %1339 = fcmp oeq double %1338, 1.000000e+00
  br i1 %1339, label %1340, label %1355

1340:                                             ; preds = %1337
  %1341 = load double, ptr %62, align 8, !tbaa !11
  %1342 = load double, ptr %96, align 8, !tbaa !11
  %1343 = fmul double %1342, 2.000000e+00
  %1344 = load double, ptr %67, align 8, !tbaa !11
  %1345 = fmul double %1343, %1344
  %1346 = load ptr, ptr %28, align 8, !tbaa !5
  %1347 = load i64, ptr %1346, align 8, !tbaa !9
  %1348 = sitofp i64 %1347 to double
  %1349 = fneg double %1345
  %1350 = call double @llvm.fmuladd.f64(double %1349, double %1348, double %1341)
  %1351 = load ptr, ptr %48, align 8, !tbaa !5
  %1352 = load double, ptr %1351, align 8, !tbaa !11
  %1353 = fneg double %1352
  %1354 = call double @llvm.fmuladd.f64(double %1353, double 4.000000e+00, double %1350)
  store double %1354, ptr %87, align 8, !tbaa !11
  br label %1368

1355:                                             ; preds = %1337
  %1356 = load double, ptr %65, align 8, !tbaa !11
  %1357 = load double, ptr %96, align 8, !tbaa !11
  %1358 = fmul double %1357, 2.000000e+00
  %1359 = load double, ptr %67, align 8, !tbaa !11
  %1360 = fmul double %1358, %1359
  %1361 = load ptr, ptr %28, align 8, !tbaa !5
  %1362 = load i64, ptr %1361, align 8, !tbaa !9
  %1363 = sitofp i64 %1362 to double
  %1364 = call double @llvm.fmuladd.f64(double %1360, double %1363, double %1356)
  %1365 = load ptr, ptr %48, align 8, !tbaa !5
  %1366 = load double, ptr %1365, align 8, !tbaa !11
  %1367 = call double @llvm.fmuladd.f64(double %1366, double 4.000000e+00, double %1364)
  store double %1367, ptr %87, align 8, !tbaa !11
  br label %1368

1368:                                             ; preds = %1355, %1340
  br label %1377

1369:                                             ; preds = %1334
  %1370 = load double, ptr %93, align 8, !tbaa !11
  %1371 = load double, ptr %68, align 8, !tbaa !11
  %1372 = load double, ptr %87, align 8, !tbaa !11
  %1373 = fneg double %1370
  %1374 = call double @llvm.fmuladd.f64(double %1373, double %1371, double %1372)
  store double %1374, ptr %87, align 8, !tbaa !11
  %1375 = load double, ptr %68, align 8, !tbaa !11
  %1376 = fmul double %1375, 2.000000e+00
  store double %1376, ptr %68, align 8, !tbaa !11
  br label %1377

1377:                                             ; preds = %1369, %1368
  br label %1379

1378:                                             ; preds = %1331
  br label %1385

1379:                                             ; preds = %1377
  br label %1380

1380:                                             ; preds = %1379
  %1381 = load i64, ptr %82, align 8, !tbaa !9
  %1382 = add nsw i64 %1381, 1
  store i64 %1382, ptr %82, align 8, !tbaa !9
  br label %1189, !llvm.loop !21

1383:                                             ; preds = %1189
  %1384 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 2, ptr %1384, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %103, align 4
  br label %1937

1385:                                             ; preds = %1378
  %1386 = load double, ptr %87, align 8, !tbaa !11
  %1387 = load ptr, ptr %34, align 8, !tbaa !5
  %1388 = load i64, ptr %75, align 8, !tbaa !9
  %1389 = getelementptr inbounds double, ptr %1387, i64 %1388
  store double %1386, ptr %1389, align 8, !tbaa !11
  %1390 = load ptr, ptr %49, align 8, !tbaa !5
  %1391 = getelementptr inbounds double, ptr %1390, i64 1
  %1392 = load ptr, ptr %33, align 8, !tbaa !5
  %1393 = load i64, ptr %90, align 8, !tbaa !9
  %1394 = getelementptr inbounds double, ptr %1392, i64 %1393
  %1395 = call i32 @f2c_dcopy(ptr noundef %63, ptr noundef %1391, ptr noundef @c__1, ptr noundef %1394, ptr noundef @c__1)
  %1396 = load i64, ptr %63, align 8, !tbaa !9
  %1397 = sub nsw i64 %1396, 1
  store i64 %1397, ptr %53, align 8, !tbaa !9
  %1398 = load ptr, ptr %49, align 8, !tbaa !5
  %1399 = load i64, ptr %63, align 8, !tbaa !9
  %1400 = add nsw i64 %1399, 1
  %1401 = getelementptr inbounds double, ptr %1398, i64 %1400
  %1402 = load ptr, ptr %34, align 8, !tbaa !5
  %1403 = load i64, ptr %90, align 8, !tbaa !9
  %1404 = getelementptr inbounds double, ptr %1402, i64 %1403
  %1405 = call i32 @f2c_dcopy(ptr noundef %53, ptr noundef %1401, ptr noundef @c__1, ptr noundef %1404, ptr noundef @c__1)
  %1406 = load i64, ptr %61, align 8, !tbaa !9
  %1407 = icmp sgt i64 %1406, 1
  br i1 %1407, label %1408, label %1482

1408:                                             ; preds = %1385
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1409

1409:                                             ; preds = %1416, %1408
  %1410 = load i64, ptr %57, align 8, !tbaa !9
  %1411 = icmp sle i64 %1410, 4
  br i1 %1411, label %1412, label %1419

1412:                                             ; preds = %1409
  %1413 = load i64, ptr %57, align 8, !tbaa !9
  %1414 = sub nsw i64 %1413, 1
  %1415 = getelementptr inbounds [4 x i64], ptr %85, i64 0, i64 %1414
  store i64 1, ptr %1415, align 8, !tbaa !9
  br label %1416

1416:                                             ; preds = %1412
  %1417 = load i64, ptr %57, align 8, !tbaa !9
  %1418 = add nsw i64 %1417, 1
  store i64 %1418, ptr %57, align 8, !tbaa !9
  br label %1409, !llvm.loop !22

1419:                                             ; preds = %1409
  %1420 = load i64, ptr %63, align 8, !tbaa !9
  %1421 = shl i64 %1420, 1
  %1422 = sub nsw i64 %1421, 1
  store i64 %1422, ptr %53, align 8, !tbaa !9
  %1423 = getelementptr inbounds [4 x i64], ptr %85, i64 0, i64 0
  %1424 = load ptr, ptr %49, align 8, !tbaa !5
  %1425 = getelementptr inbounds double, ptr %1424, i64 1
  %1426 = call i32 @dlarnv_(ptr noundef @c__2, ptr noundef %1423, ptr noundef %53, ptr noundef %1425)
  %1427 = load i64, ptr %63, align 8, !tbaa !9
  %1428 = sub nsw i64 %1427, 1
  store i64 %1428, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1429

1429:                                             ; preds = %1466, %1419
  %1430 = load i64, ptr %57, align 8, !tbaa !9
  %1431 = load i64, ptr %53, align 8, !tbaa !9
  %1432 = icmp sle i64 %1430, %1431
  br i1 %1432, label %1433, label %1469

1433:                                             ; preds = %1429
  %1434 = load double, ptr %67, align 8, !tbaa !11
  %1435 = fmul double %1434, 8.000000e+00
  %1436 = load ptr, ptr %49, align 8, !tbaa !5
  %1437 = load i64, ptr %57, align 8, !tbaa !9
  %1438 = getelementptr inbounds double, ptr %1436, i64 %1437
  %1439 = load double, ptr %1438, align 8, !tbaa !11
  %1440 = call double @llvm.fmuladd.f64(double %1435, double %1439, double 1.000000e+00)
  %1441 = load ptr, ptr %33, align 8, !tbaa !5
  %1442 = load i64, ptr %90, align 8, !tbaa !9
  %1443 = load i64, ptr %57, align 8, !tbaa !9
  %1444 = add nsw i64 %1442, %1443
  %1445 = sub nsw i64 %1444, 1
  %1446 = getelementptr inbounds double, ptr %1441, i64 %1445
  %1447 = load double, ptr %1446, align 8, !tbaa !11
  %1448 = fmul double %1447, %1440
  store double %1448, ptr %1446, align 8, !tbaa !11
  %1449 = load double, ptr %67, align 8, !tbaa !11
  %1450 = fmul double %1449, 8.000000e+00
  %1451 = load ptr, ptr %49, align 8, !tbaa !5
  %1452 = load i64, ptr %63, align 8, !tbaa !9
  %1453 = load i64, ptr %57, align 8, !tbaa !9
  %1454 = add nsw i64 %1452, %1453
  %1455 = getelementptr inbounds double, ptr %1451, i64 %1454
  %1456 = load double, ptr %1455, align 8, !tbaa !11
  %1457 = call double @llvm.fmuladd.f64(double %1450, double %1456, double 1.000000e+00)
  %1458 = load ptr, ptr %34, align 8, !tbaa !5
  %1459 = load i64, ptr %90, align 8, !tbaa !9
  %1460 = load i64, ptr %57, align 8, !tbaa !9
  %1461 = add nsw i64 %1459, %1460
  %1462 = sub nsw i64 %1461, 1
  %1463 = getelementptr inbounds double, ptr %1458, i64 %1462
  %1464 = load double, ptr %1463, align 8, !tbaa !11
  %1465 = fmul double %1464, %1457
  store double %1465, ptr %1463, align 8, !tbaa !11
  br label %1466

1466:                                             ; preds = %1433
  %1467 = load i64, ptr %57, align 8, !tbaa !9
  %1468 = add nsw i64 %1467, 1
  store i64 %1468, ptr %57, align 8, !tbaa !9
  br label %1429, !llvm.loop !23

1469:                                             ; preds = %1429
  %1470 = load double, ptr %67, align 8, !tbaa !11
  %1471 = fmul double %1470, 4.000000e+00
  %1472 = load ptr, ptr %49, align 8, !tbaa !5
  %1473 = load i64, ptr %63, align 8, !tbaa !9
  %1474 = getelementptr inbounds double, ptr %1472, i64 %1473
  %1475 = load double, ptr %1474, align 8, !tbaa !11
  %1476 = call double @llvm.fmuladd.f64(double %1471, double %1475, double 1.000000e+00)
  %1477 = load ptr, ptr %33, align 8, !tbaa !5
  %1478 = load i64, ptr %75, align 8, !tbaa !9
  %1479 = getelementptr inbounds double, ptr %1477, i64 %1478
  %1480 = load double, ptr %1479, align 8, !tbaa !11
  %1481 = fmul double %1480, %1476
  store double %1481, ptr %1479, align 8, !tbaa !11
  br label %1482

1482:                                             ; preds = %1469, %1385
  %1483 = load i64, ptr %97, align 8, !tbaa !9
  %1484 = icmp ne i64 %1483, 0
  br i1 %1484, label %1633, label %1485

1485:                                             ; preds = %1482
  %1486 = load i64, ptr %81, align 8, !tbaa !9
  store i64 %1486, ptr %53, align 8, !tbaa !9
  %1487 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %1487, ptr %58, align 8, !tbaa !9
  br label %1488

1488:                                             ; preds = %1518, %1485
  %1489 = load i64, ptr %58, align 8, !tbaa !9
  %1490 = load i64, ptr %53, align 8, !tbaa !9
  %1491 = icmp sle i64 %1489, %1490
  br i1 %1491, label %1492, label %1521

1492:                                             ; preds = %1488
  %1493 = load double, ptr %87, align 8, !tbaa !11
  %1494 = load ptr, ptr %42, align 8, !tbaa !5
  %1495 = load i64, ptr %58, align 8, !tbaa !9
  %1496 = getelementptr inbounds double, ptr %1494, i64 %1495
  %1497 = load double, ptr %1496, align 8, !tbaa !11
  %1498 = fsub double %1497, %1493
  store double %1498, ptr %1496, align 8, !tbaa !11
  %1499 = load ptr, ptr %42, align 8, !tbaa !5
  %1500 = load i64, ptr %58, align 8, !tbaa !9
  %1501 = getelementptr inbounds double, ptr %1499, i64 %1500
  %1502 = load double, ptr %1501, align 8, !tbaa !11
  store double %1502, ptr %54, align 8, !tbaa !11
  %1503 = load double, ptr %54, align 8, !tbaa !11
  %1504 = fcmp oge double %1503, 0.000000e+00
  br i1 %1504, label %1505, label %1507

1505:                                             ; preds = %1492
  %1506 = load double, ptr %54, align 8, !tbaa !11
  br label %1510

1507:                                             ; preds = %1492
  %1508 = load double, ptr %54, align 8, !tbaa !11
  %1509 = fneg double %1508
  br label %1510

1510:                                             ; preds = %1507, %1505
  %1511 = phi double [ %1506, %1505 ], [ %1509, %1507 ]
  %1512 = load double, ptr %67, align 8, !tbaa !11
  %1513 = load ptr, ptr %43, align 8, !tbaa !5
  %1514 = load i64, ptr %58, align 8, !tbaa !9
  %1515 = getelementptr inbounds double, ptr %1513, i64 %1514
  %1516 = load double, ptr %1515, align 8, !tbaa !11
  %1517 = call double @llvm.fmuladd.f64(double %1511, double %1512, double %1516)
  store double %1517, ptr %1515, align 8, !tbaa !11
  br label %1518

1518:                                             ; preds = %1510
  %1519 = load i64, ptr %58, align 8, !tbaa !9
  %1520 = add nsw i64 %1519, 1
  store i64 %1520, ptr %58, align 8, !tbaa !9
  br label %1488, !llvm.loop !24

1521:                                             ; preds = %1488
  %1522 = load i64, ptr %75, align 8, !tbaa !9
  %1523 = sub nsw i64 %1522, 1
  store i64 %1523, ptr %53, align 8, !tbaa !9
  %1524 = load i64, ptr %90, align 8, !tbaa !9
  store i64 %1524, ptr %57, align 8, !tbaa !9
  br label %1525

1525:                                             ; preds = %1545, %1521
  %1526 = load i64, ptr %57, align 8, !tbaa !9
  %1527 = load i64, ptr %53, align 8, !tbaa !9
  %1528 = icmp sle i64 %1526, %1527
  br i1 %1528, label %1529, label %1548

1529:                                             ; preds = %1525
  %1530 = load ptr, ptr %34, align 8, !tbaa !5
  %1531 = load i64, ptr %57, align 8, !tbaa !9
  %1532 = getelementptr inbounds double, ptr %1530, i64 %1531
  %1533 = load double, ptr %1532, align 8, !tbaa !11
  store double %1533, ptr %54, align 8, !tbaa !11
  %1534 = load ptr, ptr %33, align 8, !tbaa !5
  %1535 = load i64, ptr %57, align 8, !tbaa !9
  %1536 = getelementptr inbounds double, ptr %1534, i64 %1535
  %1537 = load double, ptr %1536, align 8, !tbaa !11
  %1538 = load double, ptr %54, align 8, !tbaa !11
  %1539 = load double, ptr %54, align 8, !tbaa !11
  %1540 = fmul double %1538, %1539
  %1541 = fmul double %1537, %1540
  %1542 = load ptr, ptr %49, align 8, !tbaa !5
  %1543 = load i64, ptr %57, align 8, !tbaa !9
  %1544 = getelementptr inbounds double, ptr %1542, i64 %1543
  store double %1541, ptr %1544, align 8, !tbaa !11
  br label %1545

1545:                                             ; preds = %1529
  %1546 = load i64, ptr %57, align 8, !tbaa !9
  %1547 = add nsw i64 %1546, 1
  store i64 %1547, ptr %57, align 8, !tbaa !9
  br label %1525, !llvm.loop !25

1548:                                             ; preds = %1525
  %1549 = load i64, ptr %78, align 8, !tbaa !9
  %1550 = sub nsw i64 %1549, 1
  store i64 %1550, ptr %53, align 8, !tbaa !9
  %1551 = load ptr, ptr %33, align 8, !tbaa !5
  %1552 = load i64, ptr %90, align 8, !tbaa !9
  %1553 = getelementptr inbounds double, ptr %1551, i64 %1552
  %1554 = load ptr, ptr %49, align 8, !tbaa !5
  %1555 = load i64, ptr %90, align 8, !tbaa !9
  %1556 = getelementptr inbounds double, ptr %1554, i64 %1555
  %1557 = load ptr, ptr %36, align 8, !tbaa !5
  %1558 = load ptr, ptr %37, align 8, !tbaa !5
  %1559 = load ptr, ptr %42, align 8, !tbaa !5
  %1560 = load i64, ptr %94, align 8, !tbaa !9
  %1561 = getelementptr inbounds double, ptr %1559, i64 %1560
  %1562 = load ptr, ptr %44, align 8, !tbaa !5
  %1563 = load i64, ptr %94, align 8, !tbaa !9
  %1564 = getelementptr inbounds double, ptr %1562, i64 %1563
  %1565 = load ptr, ptr %43, align 8, !tbaa !5
  %1566 = load i64, ptr %94, align 8, !tbaa !9
  %1567 = getelementptr inbounds double, ptr %1565, i64 %1566
  %1568 = load ptr, ptr %49, align 8, !tbaa !5
  %1569 = load ptr, ptr %28, align 8, !tbaa !5
  %1570 = load i64, ptr %1569, align 8, !tbaa !9
  %1571 = shl i64 %1570, 1
  %1572 = add nsw i64 %1571, 1
  %1573 = getelementptr inbounds double, ptr %1568, i64 %1572
  %1574 = load ptr, ptr %50, align 8, !tbaa !5
  %1575 = getelementptr inbounds i64, ptr %1574, i64 1
  %1576 = load ptr, ptr %48, align 8, !tbaa !5
  %1577 = call i32 @dlarrb_(ptr noundef %63, ptr noundef %1553, ptr noundef %1556, ptr noundef %78, ptr noundef %83, ptr noundef %1557, ptr noundef %1558, ptr noundef %53, ptr noundef %1561, ptr noundef %1564, ptr noundef %1567, ptr noundef %1573, ptr noundef %1575, ptr noundef %1576, ptr noundef %96, ptr noundef %63, ptr noundef %88)
  %1578 = load i64, ptr %88, align 8, !tbaa !9
  %1579 = icmp ne i64 %1578, 0
  br i1 %1579, label %1580, label %1582

1580:                                             ; preds = %1548
  %1581 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -4, ptr %1581, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %103, align 4
  br label %1937

1582:                                             ; preds = %1548
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %1583 = load ptr, ptr %30, align 8, !tbaa !5
  %1584 = load double, ptr %1583, align 8, !tbaa !11
  %1585 = load double, ptr %87, align 8, !tbaa !11
  %1586 = fsub double %1584, %1585
  %1587 = load ptr, ptr %42, align 8, !tbaa !5
  %1588 = load i64, ptr %81, align 8, !tbaa !9
  %1589 = getelementptr inbounds double, ptr %1587, i64 %1588
  %1590 = load double, ptr %1589, align 8, !tbaa !11
  %1591 = load ptr, ptr %43, align 8, !tbaa !5
  %1592 = load i64, ptr %81, align 8, !tbaa !9
  %1593 = getelementptr inbounds double, ptr %1591, i64 %1592
  %1594 = load double, ptr %1593, align 8, !tbaa !11
  %1595 = fadd double %1590, %1594
  %1596 = fsub double %1586, %1595
  store double %1596, ptr %55, align 8, !tbaa !11
  %1597 = load double, ptr %54, align 8, !tbaa !11
  %1598 = load double, ptr %55, align 8, !tbaa !11
  %1599 = fcmp oge double %1597, %1598
  br i1 %1599, label %1600, label %1602

1600:                                             ; preds = %1582
  %1601 = load double, ptr %54, align 8, !tbaa !11
  br label %1604

1602:                                             ; preds = %1582
  %1603 = load double, ptr %55, align 8, !tbaa !11
  br label %1604

1604:                                             ; preds = %1602, %1600
  %1605 = phi double [ %1601, %1600 ], [ %1603, %1602 ]
  %1606 = load ptr, ptr %44, align 8, !tbaa !5
  %1607 = load i64, ptr %81, align 8, !tbaa !9
  %1608 = getelementptr inbounds double, ptr %1606, i64 %1607
  store double %1605, ptr %1608, align 8, !tbaa !11
  %1609 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1609, ptr %53, align 8, !tbaa !9
  %1610 = load i64, ptr %78, align 8, !tbaa !9
  store i64 %1610, ptr %57, align 8, !tbaa !9
  br label %1611

1611:                                             ; preds = %1629, %1604
  %1612 = load i64, ptr %57, align 8, !tbaa !9
  %1613 = load i64, ptr %53, align 8, !tbaa !9
  %1614 = icmp sle i64 %1612, %1613
  br i1 %1614, label %1615, label %1632

1615:                                             ; preds = %1611
  %1616 = load ptr, ptr %41, align 8, !tbaa !5
  %1617 = load i64, ptr %1616, align 8, !tbaa !9
  %1618 = add nsw i64 %1617, 1
  store i64 %1618, ptr %1616, align 8, !tbaa !9
  %1619 = load i64, ptr %76, align 8, !tbaa !9
  %1620 = load ptr, ptr %45, align 8, !tbaa !5
  %1621 = load ptr, ptr %41, align 8, !tbaa !5
  %1622 = load i64, ptr %1621, align 8, !tbaa !9
  %1623 = getelementptr inbounds i64, ptr %1620, i64 %1622
  store i64 %1619, ptr %1623, align 8, !tbaa !9
  %1624 = load i64, ptr %57, align 8, !tbaa !9
  %1625 = load ptr, ptr %46, align 8, !tbaa !5
  %1626 = load ptr, ptr %41, align 8, !tbaa !5
  %1627 = load i64, ptr %1626, align 8, !tbaa !9
  %1628 = getelementptr inbounds i64, ptr %1625, i64 %1627
  store i64 %1624, ptr %1628, align 8, !tbaa !9
  br label %1629

1629:                                             ; preds = %1615
  %1630 = load i64, ptr %57, align 8, !tbaa !9
  %1631 = add nsw i64 %1630, 1
  store i64 %1631, ptr %57, align 8, !tbaa !9
  br label %1611, !llvm.loop !26

1632:                                             ; preds = %1611
  br label %1927

1633:                                             ; preds = %1482
  %1634 = load i64, ptr %63, align 8, !tbaa !9
  %1635 = sitofp i64 %1634 to double
  %1636 = call double @log(double noundef %1635) #5
  %1637 = fmul double %1636, 4.000000e+00
  %1638 = load double, ptr %67, align 8, !tbaa !11
  %1639 = fmul double %1637, %1638
  store double %1639, ptr %84, align 8, !tbaa !11
  %1640 = load i64, ptr %90, align 8, !tbaa !9
  store i64 %1640, ptr %58, align 8, !tbaa !9
  %1641 = load i64, ptr %63, align 8, !tbaa !9
  %1642 = sub nsw i64 %1641, 1
  store i64 %1642, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1643

1643:                                             ; preds = %1688, %1633
  %1644 = load i64, ptr %57, align 8, !tbaa !9
  %1645 = load i64, ptr %53, align 8, !tbaa !9
  %1646 = icmp sle i64 %1644, %1645
  br i1 %1646, label %1647, label %1691

1647:                                             ; preds = %1643
  %1648 = load ptr, ptr %33, align 8, !tbaa !5
  %1649 = load i64, ptr %58, align 8, !tbaa !9
  %1650 = getelementptr inbounds double, ptr %1648, i64 %1649
  %1651 = load double, ptr %1650, align 8, !tbaa !11
  store double %1651, ptr %54, align 8, !tbaa !11
  %1652 = load double, ptr %54, align 8, !tbaa !11
  %1653 = fcmp oge double %1652, 0.000000e+00
  br i1 %1653, label %1654, label %1656

1654:                                             ; preds = %1647
  %1655 = load double, ptr %54, align 8, !tbaa !11
  br label %1659

1656:                                             ; preds = %1647
  %1657 = load double, ptr %54, align 8, !tbaa !11
  %1658 = fneg double %1657
  br label %1659

1659:                                             ; preds = %1656, %1654
  %1660 = phi double [ %1655, %1654 ], [ %1658, %1656 ]
  %1661 = load ptr, ptr %49, align 8, !tbaa !5
  %1662 = load i64, ptr %57, align 8, !tbaa !9
  %1663 = shl i64 %1662, 1
  %1664 = sub nsw i64 %1663, 1
  %1665 = getelementptr inbounds double, ptr %1661, i64 %1664
  store double %1660, ptr %1665, align 8, !tbaa !11
  %1666 = load ptr, ptr %34, align 8, !tbaa !5
  %1667 = load i64, ptr %58, align 8, !tbaa !9
  %1668 = getelementptr inbounds double, ptr %1666, i64 %1667
  %1669 = load double, ptr %1668, align 8, !tbaa !11
  %1670 = load ptr, ptr %34, align 8, !tbaa !5
  %1671 = load i64, ptr %58, align 8, !tbaa !9
  %1672 = getelementptr inbounds double, ptr %1670, i64 %1671
  %1673 = load double, ptr %1672, align 8, !tbaa !11
  %1674 = fmul double %1669, %1673
  %1675 = load ptr, ptr %49, align 8, !tbaa !5
  %1676 = load i64, ptr %57, align 8, !tbaa !9
  %1677 = shl i64 %1676, 1
  %1678 = sub nsw i64 %1677, 1
  %1679 = getelementptr inbounds double, ptr %1675, i64 %1678
  %1680 = load double, ptr %1679, align 8, !tbaa !11
  %1681 = fmul double %1674, %1680
  %1682 = load ptr, ptr %49, align 8, !tbaa !5
  %1683 = load i64, ptr %57, align 8, !tbaa !9
  %1684 = mul nsw i64 %1683, 2
  %1685 = getelementptr inbounds double, ptr %1682, i64 %1684
  store double %1681, ptr %1685, align 8, !tbaa !11
  %1686 = load i64, ptr %58, align 8, !tbaa !9
  %1687 = add nsw i64 %1686, 1
  store i64 %1687, ptr %58, align 8, !tbaa !9
  br label %1688

1688:                                             ; preds = %1659
  %1689 = load i64, ptr %57, align 8, !tbaa !9
  %1690 = add nsw i64 %1689, 1
  store i64 %1690, ptr %57, align 8, !tbaa !9
  br label %1643, !llvm.loop !27

1691:                                             ; preds = %1643
  %1692 = load ptr, ptr %33, align 8, !tbaa !5
  %1693 = load i64, ptr %75, align 8, !tbaa !9
  %1694 = getelementptr inbounds double, ptr %1692, i64 %1693
  %1695 = load double, ptr %1694, align 8, !tbaa !11
  store double %1695, ptr %54, align 8, !tbaa !11
  %1696 = load double, ptr %54, align 8, !tbaa !11
  %1697 = fcmp oge double %1696, 0.000000e+00
  br i1 %1697, label %1698, label %1700

1698:                                             ; preds = %1691
  %1699 = load double, ptr %54, align 8, !tbaa !11
  br label %1703

1700:                                             ; preds = %1691
  %1701 = load double, ptr %54, align 8, !tbaa !11
  %1702 = fneg double %1701
  br label %1703

1703:                                             ; preds = %1700, %1698
  %1704 = phi double [ %1699, %1698 ], [ %1702, %1700 ]
  %1705 = load ptr, ptr %49, align 8, !tbaa !5
  %1706 = load i64, ptr %63, align 8, !tbaa !9
  %1707 = shl i64 %1706, 1
  %1708 = sub nsw i64 %1707, 1
  %1709 = getelementptr inbounds double, ptr %1705, i64 %1708
  store double %1704, ptr %1709, align 8, !tbaa !11
  %1710 = load ptr, ptr %49, align 8, !tbaa !5
  %1711 = load i64, ptr %63, align 8, !tbaa !9
  %1712 = mul nsw i64 %1711, 2
  %1713 = getelementptr inbounds double, ptr %1710, i64 %1712
  store double 0.000000e+00, ptr %1713, align 8, !tbaa !11
  %1714 = load ptr, ptr %49, align 8, !tbaa !5
  %1715 = getelementptr inbounds double, ptr %1714, i64 1
  %1716 = call i32 @dlasq2_(ptr noundef %63, ptr noundef %1715, ptr noundef %88)
  %1717 = load i64, ptr %88, align 8, !tbaa !9
  %1718 = icmp ne i64 %1717, 0
  br i1 %1718, label %1719, label %1721

1719:                                             ; preds = %1703
  %1720 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -5, ptr %1720, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %103, align 4
  br label %1937

1721:                                             ; preds = %1703
  %1722 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %1722, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %1723

1723:                                             ; preds = %1736, %1721
  %1724 = load i64, ptr %57, align 8, !tbaa !9
  %1725 = load i64, ptr %53, align 8, !tbaa !9
  %1726 = icmp sle i64 %1724, %1725
  br i1 %1726, label %1727, label %1739

1727:                                             ; preds = %1723
  %1728 = load ptr, ptr %49, align 8, !tbaa !5
  %1729 = load i64, ptr %57, align 8, !tbaa !9
  %1730 = getelementptr inbounds double, ptr %1728, i64 %1729
  %1731 = load double, ptr %1730, align 8, !tbaa !11
  %1732 = fcmp olt double %1731, 0.000000e+00
  br i1 %1732, label %1733, label %1735

1733:                                             ; preds = %1727
  %1734 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -6, ptr %1734, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %103, align 4
  br label %1937

1735:                                             ; preds = %1727
  br label %1736

1736:                                             ; preds = %1735
  %1737 = load i64, ptr %57, align 8, !tbaa !9
  %1738 = add nsw i64 %1737, 1
  store i64 %1738, ptr %57, align 8, !tbaa !9
  br label %1723, !llvm.loop !28

1739:                                             ; preds = %1723
  br label %1740

1740:                                             ; preds = %1739
  %1741 = load double, ptr %93, align 8, !tbaa !11
  %1742 = fcmp ogt double %1741, 0.000000e+00
  br i1 %1742, label %1743, label %1779

1743:                                             ; preds = %1740
  %1744 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1744, ptr %53, align 8, !tbaa !9
  %1745 = load i64, ptr %78, align 8, !tbaa !9
  store i64 %1745, ptr %57, align 8, !tbaa !9
  br label %1746

1746:                                             ; preds = %1775, %1743
  %1747 = load i64, ptr %57, align 8, !tbaa !9
  %1748 = load i64, ptr %53, align 8, !tbaa !9
  %1749 = icmp sle i64 %1747, %1748
  br i1 %1749, label %1750, label %1778

1750:                                             ; preds = %1746
  %1751 = load ptr, ptr %41, align 8, !tbaa !5
  %1752 = load i64, ptr %1751, align 8, !tbaa !9
  %1753 = add nsw i64 %1752, 1
  store i64 %1753, ptr %1751, align 8, !tbaa !9
  %1754 = load ptr, ptr %49, align 8, !tbaa !5
  %1755 = load i64, ptr %63, align 8, !tbaa !9
  %1756 = load i64, ptr %57, align 8, !tbaa !9
  %1757 = sub nsw i64 %1755, %1756
  %1758 = add nsw i64 %1757, 1
  %1759 = getelementptr inbounds double, ptr %1754, i64 %1758
  %1760 = load double, ptr %1759, align 8, !tbaa !11
  %1761 = load ptr, ptr %42, align 8, !tbaa !5
  %1762 = load ptr, ptr %41, align 8, !tbaa !5
  %1763 = load i64, ptr %1762, align 8, !tbaa !9
  %1764 = getelementptr inbounds double, ptr %1761, i64 %1763
  store double %1760, ptr %1764, align 8, !tbaa !11
  %1765 = load i64, ptr %76, align 8, !tbaa !9
  %1766 = load ptr, ptr %45, align 8, !tbaa !5
  %1767 = load ptr, ptr %41, align 8, !tbaa !5
  %1768 = load i64, ptr %1767, align 8, !tbaa !9
  %1769 = getelementptr inbounds i64, ptr %1766, i64 %1768
  store i64 %1765, ptr %1769, align 8, !tbaa !9
  %1770 = load i64, ptr %57, align 8, !tbaa !9
  %1771 = load ptr, ptr %46, align 8, !tbaa !5
  %1772 = load ptr, ptr %41, align 8, !tbaa !5
  %1773 = load i64, ptr %1772, align 8, !tbaa !9
  %1774 = getelementptr inbounds i64, ptr %1771, i64 %1773
  store i64 %1770, ptr %1774, align 8, !tbaa !9
  br label %1775

1775:                                             ; preds = %1750
  %1776 = load i64, ptr %57, align 8, !tbaa !9
  %1777 = add nsw i64 %1776, 1
  store i64 %1777, ptr %57, align 8, !tbaa !9
  br label %1746, !llvm.loop !29

1778:                                             ; preds = %1746
  br label %1813

1779:                                             ; preds = %1740
  %1780 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %1780, ptr %53, align 8, !tbaa !9
  %1781 = load i64, ptr %78, align 8, !tbaa !9
  store i64 %1781, ptr %57, align 8, !tbaa !9
  br label %1782

1782:                                             ; preds = %1809, %1779
  %1783 = load i64, ptr %57, align 8, !tbaa !9
  %1784 = load i64, ptr %53, align 8, !tbaa !9
  %1785 = icmp sle i64 %1783, %1784
  br i1 %1785, label %1786, label %1812

1786:                                             ; preds = %1782
  %1787 = load ptr, ptr %41, align 8, !tbaa !5
  %1788 = load i64, ptr %1787, align 8, !tbaa !9
  %1789 = add nsw i64 %1788, 1
  store i64 %1789, ptr %1787, align 8, !tbaa !9
  %1790 = load ptr, ptr %49, align 8, !tbaa !5
  %1791 = load i64, ptr %57, align 8, !tbaa !9
  %1792 = getelementptr inbounds double, ptr %1790, i64 %1791
  %1793 = load double, ptr %1792, align 8, !tbaa !11
  %1794 = fneg double %1793
  %1795 = load ptr, ptr %42, align 8, !tbaa !5
  %1796 = load ptr, ptr %41, align 8, !tbaa !5
  %1797 = load i64, ptr %1796, align 8, !tbaa !9
  %1798 = getelementptr inbounds double, ptr %1795, i64 %1797
  store double %1794, ptr %1798, align 8, !tbaa !11
  %1799 = load i64, ptr %76, align 8, !tbaa !9
  %1800 = load ptr, ptr %45, align 8, !tbaa !5
  %1801 = load ptr, ptr %41, align 8, !tbaa !5
  %1802 = load i64, ptr %1801, align 8, !tbaa !9
  %1803 = getelementptr inbounds i64, ptr %1800, i64 %1802
  store i64 %1799, ptr %1803, align 8, !tbaa !9
  %1804 = load i64, ptr %57, align 8, !tbaa !9
  %1805 = load ptr, ptr %46, align 8, !tbaa !5
  %1806 = load ptr, ptr %41, align 8, !tbaa !5
  %1807 = load i64, ptr %1806, align 8, !tbaa !9
  %1808 = getelementptr inbounds i64, ptr %1805, i64 %1807
  store i64 %1804, ptr %1808, align 8, !tbaa !9
  br label %1809

1809:                                             ; preds = %1786
  %1810 = load i64, ptr %57, align 8, !tbaa !9
  %1811 = add nsw i64 %1810, 1
  store i64 %1811, ptr %57, align 8, !tbaa !9
  br label %1782, !llvm.loop !30

1812:                                             ; preds = %1782
  br label %1813

1813:                                             ; preds = %1812, %1778
  %1814 = load ptr, ptr %41, align 8, !tbaa !5
  %1815 = load i64, ptr %1814, align 8, !tbaa !9
  store i64 %1815, ptr %53, align 8, !tbaa !9
  %1816 = load ptr, ptr %41, align 8, !tbaa !5
  %1817 = load i64, ptr %1816, align 8, !tbaa !9
  %1818 = load i64, ptr %61, align 8, !tbaa !9
  %1819 = sub nsw i64 %1817, %1818
  %1820 = add nsw i64 %1819, 1
  store i64 %1820, ptr %57, align 8, !tbaa !9
  br label %1821

1821:                                             ; preds = %1844, %1813
  %1822 = load i64, ptr %57, align 8, !tbaa !9
  %1823 = load i64, ptr %53, align 8, !tbaa !9
  %1824 = icmp sle i64 %1822, %1823
  br i1 %1824, label %1825, label %1847

1825:                                             ; preds = %1821
  %1826 = load double, ptr %84, align 8, !tbaa !11
  %1827 = load ptr, ptr %42, align 8, !tbaa !5
  %1828 = load i64, ptr %57, align 8, !tbaa !9
  %1829 = getelementptr inbounds double, ptr %1827, i64 %1828
  %1830 = load double, ptr %1829, align 8, !tbaa !11
  store double %1830, ptr %54, align 8, !tbaa !11
  %1831 = load double, ptr %54, align 8, !tbaa !11
  %1832 = fcmp oge double %1831, 0.000000e+00
  br i1 %1832, label %1833, label %1835

1833:                                             ; preds = %1825
  %1834 = load double, ptr %54, align 8, !tbaa !11
  br label %1838

1835:                                             ; preds = %1825
  %1836 = load double, ptr %54, align 8, !tbaa !11
  %1837 = fneg double %1836
  br label %1838

1838:                                             ; preds = %1835, %1833
  %1839 = phi double [ %1834, %1833 ], [ %1837, %1835 ]
  %1840 = fmul double %1826, %1839
  %1841 = load ptr, ptr %43, align 8, !tbaa !5
  %1842 = load i64, ptr %57, align 8, !tbaa !9
  %1843 = getelementptr inbounds double, ptr %1841, i64 %1842
  store double %1840, ptr %1843, align 8, !tbaa !11
  br label %1844

1844:                                             ; preds = %1838
  %1845 = load i64, ptr %57, align 8, !tbaa !9
  %1846 = add nsw i64 %1845, 1
  store i64 %1846, ptr %57, align 8, !tbaa !9
  br label %1821, !llvm.loop !31

1847:                                             ; preds = %1821
  %1848 = load ptr, ptr %41, align 8, !tbaa !5
  %1849 = load i64, ptr %1848, align 8, !tbaa !9
  %1850 = sub nsw i64 %1849, 1
  store i64 %1850, ptr %53, align 8, !tbaa !9
  %1851 = load ptr, ptr %41, align 8, !tbaa !5
  %1852 = load i64, ptr %1851, align 8, !tbaa !9
  %1853 = load i64, ptr %61, align 8, !tbaa !9
  %1854 = sub nsw i64 %1852, %1853
  %1855 = add nsw i64 %1854, 1
  store i64 %1855, ptr %57, align 8, !tbaa !9
  br label %1856

1856:                                             ; preds = %1894, %1847
  %1857 = load i64, ptr %57, align 8, !tbaa !9
  %1858 = load i64, ptr %53, align 8, !tbaa !9
  %1859 = icmp sle i64 %1857, %1858
  br i1 %1859, label %1860, label %1897

1860:                                             ; preds = %1856
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %1861 = load ptr, ptr %42, align 8, !tbaa !5
  %1862 = load i64, ptr %57, align 8, !tbaa !9
  %1863 = add nsw i64 %1862, 1
  %1864 = getelementptr inbounds double, ptr %1861, i64 %1863
  %1865 = load double, ptr %1864, align 8, !tbaa !11
  %1866 = load ptr, ptr %43, align 8, !tbaa !5
  %1867 = load i64, ptr %57, align 8, !tbaa !9
  %1868 = add nsw i64 %1867, 1
  %1869 = getelementptr inbounds double, ptr %1866, i64 %1868
  %1870 = load double, ptr %1869, align 8, !tbaa !11
  %1871 = fsub double %1865, %1870
  %1872 = load ptr, ptr %42, align 8, !tbaa !5
  %1873 = load i64, ptr %57, align 8, !tbaa !9
  %1874 = getelementptr inbounds double, ptr %1872, i64 %1873
  %1875 = load double, ptr %1874, align 8, !tbaa !11
  %1876 = load ptr, ptr %43, align 8, !tbaa !5
  %1877 = load i64, ptr %57, align 8, !tbaa !9
  %1878 = getelementptr inbounds double, ptr %1876, i64 %1877
  %1879 = load double, ptr %1878, align 8, !tbaa !11
  %1880 = fadd double %1875, %1879
  %1881 = fsub double %1871, %1880
  store double %1881, ptr %55, align 8, !tbaa !11
  %1882 = load double, ptr %54, align 8, !tbaa !11
  %1883 = load double, ptr %55, align 8, !tbaa !11
  %1884 = fcmp oge double %1882, %1883
  br i1 %1884, label %1885, label %1887

1885:                                             ; preds = %1860
  %1886 = load double, ptr %54, align 8, !tbaa !11
  br label %1889

1887:                                             ; preds = %1860
  %1888 = load double, ptr %55, align 8, !tbaa !11
  br label %1889

1889:                                             ; preds = %1887, %1885
  %1890 = phi double [ %1886, %1885 ], [ %1888, %1887 ]
  %1891 = load ptr, ptr %44, align 8, !tbaa !5
  %1892 = load i64, ptr %57, align 8, !tbaa !9
  %1893 = getelementptr inbounds double, ptr %1891, i64 %1892
  store double %1890, ptr %1893, align 8, !tbaa !11
  br label %1894

1894:                                             ; preds = %1889
  %1895 = load i64, ptr %57, align 8, !tbaa !9
  %1896 = add nsw i64 %1895, 1
  store i64 %1896, ptr %57, align 8, !tbaa !9
  br label %1856, !llvm.loop !32

1897:                                             ; preds = %1856
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %1898 = load ptr, ptr %30, align 8, !tbaa !5
  %1899 = load double, ptr %1898, align 8, !tbaa !11
  %1900 = load double, ptr %87, align 8, !tbaa !11
  %1901 = fsub double %1899, %1900
  %1902 = load ptr, ptr %42, align 8, !tbaa !5
  %1903 = load ptr, ptr %41, align 8, !tbaa !5
  %1904 = load i64, ptr %1903, align 8, !tbaa !9
  %1905 = getelementptr inbounds double, ptr %1902, i64 %1904
  %1906 = load double, ptr %1905, align 8, !tbaa !11
  %1907 = load ptr, ptr %43, align 8, !tbaa !5
  %1908 = load ptr, ptr %41, align 8, !tbaa !5
  %1909 = load i64, ptr %1908, align 8, !tbaa !9
  %1910 = getelementptr inbounds double, ptr %1907, i64 %1909
  %1911 = load double, ptr %1910, align 8, !tbaa !11
  %1912 = fadd double %1906, %1911
  %1913 = fsub double %1901, %1912
  store double %1913, ptr %55, align 8, !tbaa !11
  %1914 = load double, ptr %54, align 8, !tbaa !11
  %1915 = load double, ptr %55, align 8, !tbaa !11
  %1916 = fcmp oge double %1914, %1915
  br i1 %1916, label %1917, label %1919

1917:                                             ; preds = %1897
  %1918 = load double, ptr %54, align 8, !tbaa !11
  br label %1921

1919:                                             ; preds = %1897
  %1920 = load double, ptr %55, align 8, !tbaa !11
  br label %1921

1921:                                             ; preds = %1919, %1917
  %1922 = phi double [ %1918, %1917 ], [ %1920, %1919 ]
  %1923 = load ptr, ptr %44, align 8, !tbaa !5
  %1924 = load ptr, ptr %41, align 8, !tbaa !5
  %1925 = load i64, ptr %1924, align 8, !tbaa !9
  %1926 = getelementptr inbounds double, ptr %1923, i64 %1925
  store double %1922, ptr %1926, align 8, !tbaa !11
  br label %1927

1927:                                             ; preds = %1921, %1632
  %1928 = load i64, ptr %75, align 8, !tbaa !9
  %1929 = add nsw i64 %1928, 1
  store i64 %1929, ptr %90, align 8, !tbaa !9
  %1930 = load i64, ptr %81, align 8, !tbaa !9
  %1931 = add nsw i64 %1930, 1
  store i64 %1931, ptr %94, align 8, !tbaa !9
  br label %1932

1932:                                             ; preds = %1927, %606, %514
  br label %1933

1933:                                             ; preds = %1932
  %1934 = load i64, ptr %76, align 8, !tbaa !9
  %1935 = add nsw i64 %1934, 1
  store i64 %1935, ptr %76, align 8, !tbaa !9
  br label %436, !llvm.loop !33

1936:                                             ; preds = %436
  store i32 0, ptr %26, align 4
  store i32 1, ptr %103, align 4
  br label %1937

1937:                                             ; preds = %1936, %1733, %1719, %1580, %1383, %773, %731, %405, %212
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  %1938 = load i32, ptr %26, align 4
  ret i32 %1938
}

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

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

declare double @dlamch_(ptr noundef) #2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

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

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

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

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

; Function Attrs: nounwind
declare double @log(double noundef) #3

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlarre_(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 nocapture noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr nocapture noundef writeonly %24) local_unnamed_addr #0 {
  %26 = ptrtoint ptr %15 to i64
  %27 = ptrtoint ptr %16 to i64
  %28 = ptrtoint ptr %6 to i64
  %29 = ptrtoint ptr %7 to i64
  %30 = ptrtoint ptr %22 to i64
  %31 = ptrtoint ptr %18 to i64
  %32 = ptrtoint ptr %19 to i64
  %33 = ptrtoint ptr %15 to i64
  %34 = ptrtoint ptr %16 to i64
  %35 = alloca i64, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca double, align 8
  %42 = alloca i64, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca double, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca [4 x i64], align 16
  %51 = alloca i64, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #6
  %54 = getelementptr inbounds i8, ptr %22, i64 -8
  %55 = getelementptr inbounds i8, ptr %20, i64 -8
  %56 = getelementptr inbounds i8, ptr %19, i64 -8
  %57 = getelementptr inbounds i8, ptr %18, i64 -8
  %58 = getelementptr inbounds i8, ptr %17, i64 -8
  %59 = getelementptr inbounds i8, ptr %16, i64 -8
  %60 = getelementptr inbounds i8, ptr %15, i64 -8
  %61 = getelementptr inbounds i8, ptr %13, i64 -8
  %62 = getelementptr inbounds i8, ptr %8, i64 -8
  %63 = getelementptr inbounds i8, ptr %7, i64 -8
  %64 = getelementptr inbounds i8, ptr %6, i64 -8
  store i64 0, ptr %24, align 8, !tbaa !5
  %65 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp ne i64 %65, 0
  br i1 %.not, label %70, label %66

66:                                               ; preds = %25
  %67 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %.not749 = icmp eq i64 %67, 0
  br i1 %.not749, label %68, label %70

68:                                               ; preds = %66
  %69 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  br label %70

70:                                               ; preds = %68, %66, %25
  %71 = phi i1 [ false, %25 ], [ true, %66 ], [ false, %68 ]
  %72 = phi i1 [ false, %25 ], [ false, %66 ], [ true, %68 ]
  store i64 0, ptr %14, align 8, !tbaa !5
  %73 = tail call double @dlamch_(ptr noundef nonnull @.str.3) #6
  %74 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #6
  %75 = tail call double @sqrt(double noundef %74) #6
  store double %75, ptr %44, align 8, !tbaa !9
  %76 = tail call double @sqrt(double noundef %74) #6
  store double %76, ptr %53, align 8, !tbaa !9
  %77 = load i64, ptr %1, align 8, !tbaa !5
  %78 = icmp eq i64 %77, 1
  br i1 %78, label %79, label %100

79:                                               ; preds = %70
  br i1 %.not, label %95, label %80

80:                                               ; preds = %79
  br i1 %71, label %81, label %88

81:                                               ; preds = %80
  %82 = load double, ptr %6, align 8, !tbaa !9
  %83 = load double, ptr %2, align 8, !tbaa !9
  %84 = fcmp ogt double %82, %83
  br i1 %84, label %85, label %88

85:                                               ; preds = %81
  %86 = load double, ptr %3, align 8, !tbaa !9
  %87 = fcmp ugt double %82, %86
  br i1 %87, label %88, label %95

88:                                               ; preds = %85, %81, %80
  br i1 %72, label %89, label %99

89:                                               ; preds = %88
  %90 = load i64, ptr %4, align 8, !tbaa !5
  %91 = icmp eq i64 %90, 1
  br i1 %91, label %92, label %99

92:                                               ; preds = %89
  %93 = load i64, ptr %5, align 8, !tbaa !5
  %94 = icmp eq i64 %93, 1
  br i1 %94, label %95, label %99

95:                                               ; preds = %92, %85, %79
  store i64 1, ptr %14, align 8, !tbaa !5
  %96 = load double, ptr %6, align 8, !tbaa !9
  store double %96, ptr %15, align 8, !tbaa !9
  store double 0.000000e+00, ptr %16, align 8, !tbaa !9
  store double 0.000000e+00, ptr %17, align 8, !tbaa !9
  store i64 1, ptr %18, align 8, !tbaa !5
  store i64 1, ptr %19, align 8, !tbaa !5
  %97 = load double, ptr %6, align 8, !tbaa !9
  store double %97, ptr %20, align 8, !tbaa !9
  %98 = getelementptr inbounds i8, ptr %20, i64 8
  store double %97, ptr %98, align 8, !tbaa !9
  br label %99

99:                                               ; preds = %95, %92, %89, %88
  store double 0.000000e+00, ptr %7, align 8, !tbaa !9
  br label %.loopexit822

100:                                              ; preds = %70
  %101 = load double, ptr %6, align 8, !tbaa !9
  store double %101, ptr %38, align 8, !tbaa !9
  store double %101, ptr %41, align 8, !tbaa !9
  %102 = getelementptr inbounds double, ptr %63, i64 %77
  store double 0.000000e+00, ptr %102, align 8, !tbaa !9
  %.not751826 = icmp slt i64 %77, 1
  br i1 %.not751826, label %125, label %.lr.ph

.lr.ph:                                           ; preds = %100, %.lr.ph
  %.0717829 = phi double [ %.1718, %.lr.ph ], [ 0.000000e+00, %100 ]
  %.0720828 = phi double [ %111, %.lr.ph ], [ 0.000000e+00, %100 ]
  %.0733827 = phi i64 [ %124, %.lr.ph ], [ 1, %100 ]
  %103 = phi double [ %119, %.lr.ph ], [ %101, %100 ]
  %104 = phi double [ %123, %.lr.ph ], [ %101, %100 ]
  %105 = getelementptr inbounds double, ptr %59, i64 %.0733827
  store double 0.000000e+00, ptr %105, align 8, !tbaa !9
  %106 = getelementptr inbounds double, ptr %58, i64 %.0733827
  store double 0.000000e+00, ptr %106, align 8, !tbaa !9
  %107 = getelementptr inbounds double, ptr %63, i64 %.0733827
  %108 = load double, ptr %107, align 8, !tbaa !9
  %109 = fcmp oge double %108, 0.000000e+00
  %110 = fneg double %108
  %111 = select i1 %109, double %108, double %110
  %.inv = fcmp oge double %111, %.0717829
  %.1718 = select i1 %.inv, double %111, double %.0717829
  %112 = fadd double %.0720828, %111
  %113 = getelementptr inbounds double, ptr %64, i64 %.0733827
  %114 = load double, ptr %113, align 8, !tbaa !9
  %115 = fsub double %114, %112
  %.idx788 = shl i64 %.0733827, 4
  %116 = getelementptr i8, ptr %55, i64 %.idx788
  %117 = getelementptr i8, ptr %116, i64 -8
  store double %115, ptr %117, align 8, !tbaa !9
  %118 = fcmp ole double %103, %115
  %119 = select i1 %118, double %103, double %115
  %120 = load double, ptr %113, align 8, !tbaa !9
  %121 = fadd double %112, %120
  store double %121, ptr %116, align 8, !tbaa !9
  %122 = fcmp oge double %104, %121
  %123 = select i1 %122, double %104, double %121
  %124 = add nuw i64 %.0733827, 1
  %exitcond.not = icmp eq i64 %.0733827, %77
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph
  store double %112, ptr %47, align 8, !tbaa !9
  store double %119, ptr %38, align 8, !tbaa !9
  store double %123, ptr %41, align 8, !tbaa !9
  br label %125

125:                                              ; preds = %._crit_edge, %100
  %126 = phi double [ %119, %._crit_edge ], [ %101, %100 ]
  %127 = phi double [ %123, %._crit_edge ], [ %101, %100 ]
  %.0717.lcssa = phi double [ %.1718, %._crit_edge ], [ 0.000000e+00, %100 ]
  %128 = fmul double %.0717.lcssa, %.0717.lcssa
  %129 = fcmp ole double %128, 1.000000e+00
  %130 = select i1 %129, double 1.000000e+00, double %128
  %131 = fmul double %73, %130
  store double %131, ptr %21, align 8, !tbaa !9
  %132 = fsub double %127, %126
  store double %132, ptr %52, align 8, !tbaa !9
  %133 = call i32 @dlarra_(ptr noundef nonnull %1, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %11, ptr noundef nonnull %52, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %51) #6
  %134 = zext i1 %.not to i64
  br i1 %.not, label %135, label %138

135:                                              ; preds = %125
  %136 = load double, ptr %38, align 8, !tbaa !9
  store double %136, ptr %2, align 8, !tbaa !9
  %137 = load double, ptr %41, align 8, !tbaa !9
  store double %137, ptr %3, align 8, !tbaa !9
  br label %.loopexit823

138:                                              ; preds = %125
  %139 = call i32 @dlarrd_(ptr noundef %0, ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %20, ptr noundef nonnull %53, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %21, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %40, ptr noundef %15, ptr noundef %16, ptr noundef %2, ptr noundef %3, ptr noundef %18, ptr noundef %19, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %51) #6
  %140 = load i64, ptr %51, align 8, !tbaa !5
  %.not753 = icmp eq i64 %140, 0
  br i1 %.not753, label %142, label %141

141:                                              ; preds = %138
  store i64 -1, ptr %24, align 8, !tbaa !5
  br label %.loopexit822

142:                                              ; preds = %138
  %143 = load i64, ptr %1, align 8, !tbaa !5
  %144 = load i64, ptr %40, align 8, !tbaa !5
  %.not754.not832 = icmp slt i64 %144, %143
  br i1 %.not754.not832, label %.lr.ph835.preheader, label %.loopexit823

.lr.ph835.preheader:                              ; preds = %142
  %145 = sub i64 %143, %144
  %min.iters.check = icmp ult i64 %145, 8
  br i1 %min.iters.check, label %.lr.ph835.preheader1287, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph835.preheader
  %146 = sub i64 %34, %33
  %diff.check = icmp ult i64 %146, 32
  %147 = sub i64 %32, %31
  %diff.check1019 = icmp ult i64 %147, 32
  %conflict.rdx = or i1 %diff.check, %diff.check1019
  br i1 %conflict.rdx, label %.lr.ph835.preheader1287, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %145, -4
  %ind.end = add i64 %144, %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = add i64 %144, %index
  %148 = getelementptr double, ptr %15, i64 %offset.idx
  %149 = getelementptr i8, ptr %148, i64 16
  store <2 x double> zeroinitializer, ptr %148, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %149, align 8, !tbaa !9
  %150 = getelementptr double, ptr %16, i64 %offset.idx
  %151 = getelementptr i8, ptr %150, i64 16
  store <2 x double> zeroinitializer, ptr %150, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %151, align 8, !tbaa !9
  %152 = getelementptr i64, ptr %18, i64 %offset.idx
  %153 = getelementptr i8, ptr %152, i64 16
  store <2 x i64> zeroinitializer, ptr %152, align 8, !tbaa !5
  store <2 x i64> zeroinitializer, ptr %153, align 8, !tbaa !5
  %154 = getelementptr i64, ptr %19, i64 %offset.idx
  %155 = getelementptr i8, ptr %154, i64 16
  store <2 x i64> zeroinitializer, ptr %154, align 8, !tbaa !5
  store <2 x i64> zeroinitializer, ptr %155, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %156 = icmp eq i64 %index.next, %n.vec
  br i1 %156, label %middle.block, label %vector.body, !llvm.loop !13

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %145, %n.vec
  br i1 %cmp.n, label %.loopexit823, label %.lr.ph835.preheader1287

.lr.ph835.preheader1287:                          ; preds = %middle.block, %vector.memcheck, %.lr.ph835.preheader
  %.1734.in833.ph = phi i64 [ %144, %vector.memcheck ], [ %144, %.lr.ph835.preheader ], [ %ind.end, %middle.block ]
  %157 = sub i64 %143, %.1734.in833.ph
  %.neg = add i64 %.1734.in833.ph, 1
  %xtraiter = and i64 %157, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph835.prol.loopexit, label %.lr.ph835.prol

.lr.ph835.prol:                                   ; preds = %.lr.ph835.preheader1287
  %.1734.prol = add nsw i64 %.1734.in833.ph, 1
  %158 = getelementptr double, ptr %15, i64 %.1734.in833.ph
  store double 0.000000e+00, ptr %158, align 8, !tbaa !9
  %159 = getelementptr double, ptr %16, i64 %.1734.in833.ph
  store double 0.000000e+00, ptr %159, align 8, !tbaa !9
  %160 = getelementptr i64, ptr %18, i64 %.1734.in833.ph
  store i64 0, ptr %160, align 8, !tbaa !5
  %161 = getelementptr i64, ptr %19, i64 %.1734.in833.ph
  store i64 0, ptr %161, align 8, !tbaa !5
  br label %.lr.ph835.prol.loopexit

.lr.ph835.prol.loopexit:                          ; preds = %.lr.ph835.prol, %.lr.ph835.preheader1287
  %.1734.in833.unr = phi i64 [ %.1734.in833.ph, %.lr.ph835.preheader1287 ], [ %.1734.prol, %.lr.ph835.prol ]
  %162 = icmp eq i64 %143, %.neg
  br i1 %162, label %.loopexit823, label %.lr.ph835

.lr.ph835:                                        ; preds = %.lr.ph835.prol.loopexit, %.lr.ph835
  %.1734.in833 = phi i64 [ %.1734.1, %.lr.ph835 ], [ %.1734.in833.unr, %.lr.ph835.prol.loopexit ]
  %.1734 = add nsw i64 %.1734.in833, 1
  %163 = getelementptr double, ptr %15, i64 %.1734.in833
  store double 0.000000e+00, ptr %163, align 8, !tbaa !9
  %164 = getelementptr double, ptr %16, i64 %.1734.in833
  store double 0.000000e+00, ptr %164, align 8, !tbaa !9
  %165 = getelementptr i64, ptr %18, i64 %.1734.in833
  store i64 0, ptr %165, align 8, !tbaa !5
  %166 = getelementptr i64, ptr %19, i64 %.1734.in833
  store i64 0, ptr %166, align 8, !tbaa !5
  %.1734.1 = add nsw i64 %.1734.in833, 2
  %167 = getelementptr double, ptr %15, i64 %.1734
  store double 0.000000e+00, ptr %167, align 8, !tbaa !9
  %168 = getelementptr double, ptr %16, i64 %.1734
  store double 0.000000e+00, ptr %168, align 8, !tbaa !9
  %169 = getelementptr i64, ptr %18, i64 %.1734
  store i64 0, ptr %169, align 8, !tbaa !5
  %170 = getelementptr i64, ptr %19, i64 %.1734
  store i64 0, ptr %170, align 8, !tbaa !5
  %exitcond951.not.1 = icmp eq i64 %.1734.1, %143
  br i1 %exitcond951.not.1, label %.loopexit823, label %.lr.ph835, !llvm.loop !16

.loopexit823:                                     ; preds = %.lr.ph835.prol.loopexit, %.lr.ph835, %middle.block, %142, %135
  %171 = load i64, ptr %12, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %17, i64 -16
  %.not755929 = icmp slt i64 %171, 1
  br i1 %.not755929, label %.loopexit822, label %.lr.ph939

.lr.ph939:                                        ; preds = %.loopexit823
  %172 = fmul double %74, 1.000000e+02
  %173 = fneg double %172
  %174 = fmul double %74, 8.000000e+00
  %175 = fmul double %74, 4.000000e+00
  %176 = getelementptr inbounds i8, ptr %50, i64 8
  %177 = getelementptr inbounds i8, ptr %50, i64 16
  %178 = getelementptr inbounds i8, ptr %50, i64 24
  %179 = sub i64 %30, %29
  %180 = sub i64 %30, %28
  %scevgep = getelementptr i8, ptr %15, i64 -8
  %scevgep1043 = getelementptr i8, ptr %16, i64 -8
  %scevgep1065 = getelementptr i8, ptr %17, i64 -8
  %181 = sub i64 %27, %26
  %scevgep1118 = getelementptr i8, ptr %22, i64 8
  %scevgep1123 = getelementptr i8, ptr %22, i64 -16
  %scevgep1125 = getelementptr i8, ptr %6, i64 -8
  %scevgep1127 = getelementptr i8, ptr %6, i64 -16
  %scevgep1129 = getelementptr i8, ptr %7, i64 -8
  %scevgep1131 = getelementptr i8, ptr %7, i64 -16
  %scevgep1159 = getelementptr i8, ptr %6, i64 -8
  %scevgep1161 = getelementptr i8, ptr %6, i64 -16
  %scevgep1163 = getelementptr i8, ptr %7, i64 -8
  %scevgep1165 = getelementptr i8, ptr %7, i64 -16
  %scevgep1168 = getelementptr i8, ptr %22, i64 -8
  %scevgep1227 = getelementptr i8, ptr %17, i64 -8
  %scevgep1229 = getelementptr i8, ptr %17, i64 -16
  %scevgep1231 = getelementptr i8, ptr %15, i64 -8
  %scevgep1233 = getelementptr i8, ptr %15, i64 -8
  %scevgep1235 = getelementptr i8, ptr %16, i64 -8
  %scevgep1237 = getelementptr i8, ptr %16, i64 -8
  %182 = insertelement <2 x double> poison, double %173, i64 0
  %183 = insertelement <2 x double> %182, double %172, i64 1
  %invariant.gep1323 = getelementptr i8, ptr %55, i64 -8
  %invariant.gep1317 = getelementptr i8, ptr %55, i64 -8
  %invariant.gep1319 = getelementptr i8, ptr %55, i64 -8
  %broadcast.splatinsert1201 = insertelement <2 x double> poison, double %174, i64 0
  %broadcast.splat1202 = shufflevector <2 x double> %broadcast.splatinsert1201, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep1321 = getelementptr i8, ptr %54, i64 -8
  %diff.check1100 = icmp ult i64 %181, 32
  %broadcast.splatinsert1059 = insertelement <2 x double> poison, double %74, i64 0
  %broadcast.splat1060 = shufflevector <2 x double> %broadcast.splatinsert1059, <2 x double> poison, <2 x i32> zeroinitializer
  %diff.check1021 = icmp ult i64 %179, 32
  %diff.check1022 = icmp ult i64 %180, 32
  %conflict.rdx1023 = or i1 %diff.check1021, %diff.check1022
  br label %184

184:                                              ; preds = %.lr.ph939, %934
  %.0696937 = phi i64 [ %134, %.lr.ph939 ], [ %.3, %934 ]
  %.0697936 = phi i64 [ 1, %.lr.ph939 ], [ %.2699, %934 ]
  %.0702934 = phi i64 [ 1, %.lr.ph939 ], [ %.1703, %934 ]
  %.0713933 = phi i64 [ undef, %.lr.ph939 ], [ %.3716, %934 ]
  %.0721931 = phi i64 [ 1, %.lr.ph939 ], [ %935, %934 ]
  %.0725930 = phi i64 [ undef, %.lr.ph939 ], [ %.4729, %934 ]
  %185 = getelementptr inbounds i64, ptr %61, i64 %.0721931
  %186 = load i64, ptr %185, align 8, !tbaa !5
  %187 = sub nsw i64 %186, %.0702934
  %188 = add nsw i64 %187, 1
  store i64 %188, ptr %39, align 8, !tbaa !5
  %189 = icmp eq i64 %186, %.0702934
  br i1 %189, label %190, label %219

190:                                              ; preds = %184
  br i1 %.not, label %205, label %191

191:                                              ; preds = %190
  br i1 %71, label %192, label %200

192:                                              ; preds = %191
  %193 = getelementptr inbounds double, ptr %64, i64 %.0702934
  %194 = load double, ptr %193, align 8, !tbaa !9
  %195 = load double, ptr %2, align 8, !tbaa !9
  %196 = fcmp ogt double %194, %195
  br i1 %196, label %197, label %200

197:                                              ; preds = %192
  %198 = load double, ptr %3, align 8, !tbaa !9
  %199 = fcmp ugt double %194, %198
  br i1 %199, label %200, label %205

200:                                              ; preds = %197, %192, %191
  br i1 %72, label %201, label %217

201:                                              ; preds = %200
  %202 = getelementptr inbounds i64, ptr %57, i64 %.0697936
  %203 = load i64, ptr %202, align 8, !tbaa !5
  %204 = icmp eq i64 %203, %.0721931
  br i1 %204, label %205, label %217

205:                                              ; preds = %201, %197, %190
  %206 = load i64, ptr %14, align 8, !tbaa !5
  %207 = add nsw i64 %206, 1
  store i64 %207, ptr %14, align 8, !tbaa !5
  %208 = getelementptr inbounds double, ptr %64, i64 %.0702934
  %209 = load double, ptr %208, align 8, !tbaa !9
  %210 = getelementptr double, ptr %15, i64 %206
  store double %209, ptr %210, align 8, !tbaa !9
  %211 = getelementptr double, ptr %16, i64 %206
  store double 0.000000e+00, ptr %211, align 8, !tbaa !9
  %212 = getelementptr double, ptr %17, i64 %206
  store double 0.000000e+00, ptr %212, align 8, !tbaa !9
  %213 = getelementptr i64, ptr %18, i64 %206
  store i64 %.0721931, ptr %213, align 8, !tbaa !5
  %214 = load i64, ptr %14, align 8, !tbaa !5
  %215 = getelementptr inbounds i64, ptr %56, i64 %214
  store i64 1, ptr %215, align 8, !tbaa !5
  %216 = add nsw i64 %.0697936, 1
  br label %217

217:                                              ; preds = %205, %201, %200
  %.1698 = phi i64 [ %216, %205 ], [ %.0697936, %201 ], [ %.0697936, %200 ]
  %218 = getelementptr inbounds double, ptr %63, i64 %.0702934
  store double 0.000000e+00, ptr %218, align 8, !tbaa !9
  br label %934

219:                                              ; preds = %184
  %220 = getelementptr inbounds double, ptr %63, i64 %186
  store double 0.000000e+00, ptr %220, align 8, !tbaa !9
  %221 = getelementptr inbounds double, ptr %64, i64 %.0702934
  %222 = load double, ptr %221, align 8, !tbaa !9
  store double %222, ptr %38, align 8, !tbaa !9
  store double %222, ptr %41, align 8, !tbaa !9
  store i64 %186, ptr %35, align 8, !tbaa !5
  %.not756838 = icmp sgt i64 %.0702934, %186
  %223 = insertelement <2 x double> poison, double %222, i64 0
  %224 = shufflevector <2 x double> %223, <2 x double> poison, <2 x i32> zeroinitializer
  br i1 %.not756838, label %249, label %.lr.ph841.preheader

.lr.ph841.preheader:                              ; preds = %219
  %225 = add i64 %186, %.0702934
  %226 = and i64 %225, 1
  %lcmp.mod1292.not.not = icmp eq i64 %226, 0
  br i1 %lcmp.mod1292.not.not, label %.lr.ph841.prol, label %.lr.ph841.prol.loopexit

.lr.ph841.prol:                                   ; preds = %.lr.ph841.preheader
  %.idx786.prol = shl i64 %.0702934, 4
  %gep1324 = getelementptr i8, ptr %invariant.gep1323, i64 %.idx786.prol
  %227 = load <2 x double>, ptr %gep1324, align 8, !tbaa !9
  %228 = insertelement <2 x double> %227, double %222, i64 0
  %229 = shufflevector <2 x double> %227, <2 x double> %224, <2 x i32> <i32 0, i32 3>
  %230 = fcmp oge <2 x double> %228, %229
  %231 = select <2 x i1> %230, <2 x double> %227, <2 x double> %224
  %232 = add i64 %.0702934, 1
  br label %.lr.ph841.prol.loopexit

.lr.ph841.prol.loopexit:                          ; preds = %.lr.ph841.prol, %.lr.ph841.preheader
  %.lcssa.unr = phi <2 x double> [ poison, %.lr.ph841.preheader ], [ %231, %.lr.ph841.prol ]
  %.2735839.unr = phi i64 [ %.0702934, %.lr.ph841.preheader ], [ %232, %.lr.ph841.prol ]
  %.unr = phi <2 x double> [ %224, %.lr.ph841.preheader ], [ %231, %.lr.ph841.prol ]
  %233 = icmp eq i64 %186, %.0702934
  br i1 %233, label %._crit_edge842, label %.lr.ph841

.lr.ph841:                                        ; preds = %.lr.ph841.prol.loopexit, %.lr.ph841
  %.2735839 = phi i64 [ %246, %.lr.ph841 ], [ %.2735839.unr, %.lr.ph841.prol.loopexit ]
  %234 = phi <2 x double> [ %245, %.lr.ph841 ], [ %.unr, %.lr.ph841.prol.loopexit ]
  %.idx786 = shl i64 %.2735839, 4
  %gep1318 = getelementptr i8, ptr %invariant.gep1317, i64 %.idx786
  %235 = load <2 x double>, ptr %gep1318, align 8, !tbaa !9
  %236 = shufflevector <2 x double> %234, <2 x double> %235, <2 x i32> <i32 0, i32 3>
  %237 = shufflevector <2 x double> %235, <2 x double> %234, <2 x i32> <i32 0, i32 3>
  %238 = fcmp oge <2 x double> %236, %237
  %239 = select <2 x i1> %238, <2 x double> %235, <2 x double> %234
  %240 = add i64 %.2735839, 1
  %.idx786.1 = shl i64 %240, 4
  %gep1320 = getelementptr i8, ptr %invariant.gep1319, i64 %.idx786.1
  %241 = load <2 x double>, ptr %gep1320, align 8, !tbaa !9
  %242 = shufflevector <2 x double> %239, <2 x double> %241, <2 x i32> <i32 0, i32 3>
  %243 = shufflevector <2 x double> %241, <2 x double> %239, <2 x i32> <i32 0, i32 3>
  %244 = fcmp oge <2 x double> %242, %243
  %245 = select <2 x i1> %244, <2 x double> %241, <2 x double> %239
  %246 = add i64 %.2735839, 2
  %exitcond952.not.1 = icmp eq i64 %240, %186
  br i1 %exitcond952.not.1, label %._crit_edge842, label %.lr.ph841, !llvm.loop !17

._crit_edge842:                                   ; preds = %.lr.ph841, %.lr.ph841.prol.loopexit
  %.lcssa = phi <2 x double> [ %.lcssa.unr, %.lr.ph841.prol.loopexit ], [ %245, %.lr.ph841 ]
  %247 = extractelement <2 x double> %.lcssa, i64 0
  store double %247, ptr %38, align 8, !tbaa !9
  %248 = extractelement <2 x double> %.lcssa, i64 1
  store double %248, ptr %41, align 8, !tbaa !9
  br label %249

249:                                              ; preds = %._crit_edge842, %219
  %250 = phi <2 x double> [ %.lcssa, %._crit_edge842 ], [ %224, %219 ]
  %shift = shufflevector <2 x double> %250, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %251 = fsub <2 x double> %shift, %250
  %252 = extractelement <2 x double> %251, i64 0
  store double %252, ptr %52, align 8, !tbaa !9
  br i1 %.not, label %.thread, label %254

.thread:                                          ; preds = %249
  %253 = icmp ne i64 %.0696937, 0
  br label %328

254:                                              ; preds = %249
  %255 = load i64, ptr %40, align 8, !tbaa !5
  store i64 %255, ptr %35, align 8, !tbaa !5
  %.not757845 = icmp sgt i64 %.0697936, %255
  br i1 %.not757845, label %._crit_edge850.thread, label %.lr.ph849.preheader

.lr.ph849.preheader:                              ; preds = %254
  %256 = add i64 %255, 1
  %257 = sub i64 %256, %.0697936
  br label %.lr.ph849

.lr.ph849:                                        ; preds = %.lr.ph849.preheader, %261
  %.1726847 = phi i64 [ %262, %261 ], [ 0, %.lr.ph849.preheader ]
  %.3736846 = phi i64 [ %263, %261 ], [ %.0697936, %.lr.ph849.preheader ]
  %258 = getelementptr inbounds i64, ptr %57, i64 %.3736846
  %259 = load i64, ptr %258, align 8, !tbaa !5
  %260 = icmp eq i64 %259, %.0721931
  br i1 %260, label %261, label %._crit_edge850

261:                                              ; preds = %.lr.ph849
  %262 = add nuw i64 %.1726847, 1
  %263 = add nsw i64 %.3736846, 1
  %exitcond953.not = icmp eq i64 %262, %257
  br i1 %exitcond953.not, label %._crit_edge850.thread970, label %.lr.ph849, !llvm.loop !18

._crit_edge850:                                   ; preds = %.lr.ph849
  %264 = icmp eq i64 %.1726847, 0
  br i1 %264, label %._crit_edge850.thread, label %._crit_edge850.thread970

._crit_edge850.thread:                            ; preds = %254, %._crit_edge850
  store double 0.000000e+00, ptr %220, align 8, !tbaa !9
  br label %934

._crit_edge850.thread970:                         ; preds = %261, %._crit_edge850
  %.1726.lcssa972 = phi i64 [ %.1726847, %._crit_edge850 ], [ %257, %261 ]
  %265 = uitofp nneg i64 %.1726.lcssa972 to double
  %266 = sitofp i64 %188 to double
  %267 = fmul double %266, 5.000000e-01
  %268 = fcmp olt double %267, %265
  %269 = add nsw i64 %.1726.lcssa972, %.0697936
  %270 = add nsw i64 %269, -1
  %271 = add nsw i64 %269, -2
  store i64 %271, ptr %35, align 8, !tbaa !5
  %.not758854 = icmp sgt i64 %.0697936, %271
  br i1 %.not758854, label %._crit_edge858, label %.lr.ph857.preheader

.lr.ph857.preheader:                              ; preds = %._crit_edge850.thread970
  %272 = add i64 %.0697936, -1
  %273 = add i64 %272, %.1726.lcssa972
  %274 = add i64 %.1726.lcssa972, -1
  %min.iters.check1248 = icmp ult i64 %274, 4
  br i1 %min.iters.check1248, label %.lr.ph857.preheader1275, label %vector.memcheck1226

vector.memcheck1226:                              ; preds = %.lr.ph857.preheader
  %275 = shl i64 %.0697936, 3
  %scevgep1228 = getelementptr i8, ptr %scevgep1227, i64 %275
  %276 = add i64 %.1726.lcssa972, %.0697936
  %277 = shl i64 %276, 3
  %scevgep1230 = getelementptr i8, ptr %scevgep1229, i64 %277
  %scevgep1232 = getelementptr i8, ptr %scevgep1231, i64 %275
  %scevgep1234 = getelementptr i8, ptr %scevgep1233, i64 %277
  %scevgep1236 = getelementptr i8, ptr %scevgep1235, i64 %275
  %scevgep1238 = getelementptr i8, ptr %scevgep1237, i64 %277
  %bound01239 = icmp ult ptr %scevgep1228, %scevgep1234
  %bound11240 = icmp ult ptr %scevgep1232, %scevgep1230
  %found.conflict1241 = and i1 %bound01239, %bound11240
  %bound01242 = icmp ult ptr %scevgep1228, %scevgep1238
  %bound11243 = icmp ult ptr %scevgep1236, %scevgep1230
  %found.conflict1244 = and i1 %bound01242, %bound11243
  %conflict.rdx1245 = or i1 %found.conflict1241, %found.conflict1244
  br i1 %conflict.rdx1245, label %.lr.ph857.preheader1275, label %vector.ph1249

vector.ph1249:                                    ; preds = %vector.memcheck1226
  %n.vec1251 = and i64 %274, -4
  %ind.end1252 = add i64 %.0697936, %n.vec1251
  br label %vector.body1254

vector.body1254:                                  ; preds = %vector.body1254, %vector.ph1249
  %index1255 = phi i64 [ 0, %vector.ph1249 ], [ %index.next1265, %vector.body1254 ]
  %offset.idx1256 = add i64 %.0697936, %index1255
  %278 = getelementptr double, ptr %15, i64 %offset.idx1256
  %279 = getelementptr i8, ptr %278, i64 16
  %wide.load1257 = load <2 x double>, ptr %278, align 8, !tbaa !9, !alias.scope !19
  %wide.load1258 = load <2 x double>, ptr %279, align 8, !tbaa !9, !alias.scope !19
  %280 = getelementptr double, ptr %16, i64 %offset.idx1256
  %281 = getelementptr i8, ptr %280, i64 16
  %wide.load1259 = load <2 x double>, ptr %280, align 8, !tbaa !9, !alias.scope !22
  %wide.load1260 = load <2 x double>, ptr %281, align 8, !tbaa !9, !alias.scope !22
  %282 = fsub <2 x double> %wide.load1257, %wide.load1259
  %283 = fsub <2 x double> %wide.load1258, %wide.load1260
  %284 = getelementptr inbounds double, ptr %60, i64 %offset.idx1256
  %285 = getelementptr inbounds i8, ptr %284, i64 16
  %wide.load1261 = load <2 x double>, ptr %284, align 8, !tbaa !9, !alias.scope !19
  %wide.load1262 = load <2 x double>, ptr %285, align 8, !tbaa !9, !alias.scope !19
  %286 = getelementptr inbounds double, ptr %59, i64 %offset.idx1256
  %287 = getelementptr inbounds i8, ptr %286, i64 16
  %wide.load1263 = load <2 x double>, ptr %286, align 8, !tbaa !9, !alias.scope !22
  %wide.load1264 = load <2 x double>, ptr %287, align 8, !tbaa !9, !alias.scope !22
  %288 = fadd <2 x double> %wide.load1261, %wide.load1263
  %289 = fadd <2 x double> %wide.load1262, %wide.load1264
  %290 = fsub <2 x double> %282, %288
  %291 = fsub <2 x double> %283, %289
  %292 = fcmp ole <2 x double> %290, zeroinitializer
  %293 = fcmp ole <2 x double> %291, zeroinitializer
  %294 = select <2 x i1> %292, <2 x double> zeroinitializer, <2 x double> %290
  %295 = select <2 x i1> %293, <2 x double> zeroinitializer, <2 x double> %291
  %296 = getelementptr inbounds double, ptr %58, i64 %offset.idx1256
  %297 = getelementptr inbounds i8, ptr %296, i64 16
  store <2 x double> %294, ptr %296, align 8, !tbaa !9, !alias.scope !24, !noalias !26
  store <2 x double> %295, ptr %297, align 8, !tbaa !9, !alias.scope !24, !noalias !26
  %index.next1265 = add nuw i64 %index1255, 4
  %298 = icmp eq i64 %index.next1265, %n.vec1251
  br i1 %298, label %middle.block1246, label %vector.body1254, !llvm.loop !27

middle.block1246:                                 ; preds = %vector.body1254
  %cmp.n1266 = icmp eq i64 %274, %n.vec1251
  br i1 %cmp.n1266, label %._crit_edge858, label %.lr.ph857.preheader1275

.lr.ph857.preheader1275:                          ; preds = %middle.block1246, %vector.memcheck1226, %.lr.ph857.preheader
  %.4737855.ph = phi i64 [ %.0697936, %vector.memcheck1226 ], [ %.0697936, %.lr.ph857.preheader ], [ %ind.end1252, %middle.block1246 ]
  br label %.lr.ph857

.lr.ph857:                                        ; preds = %.lr.ph857.preheader1275, %.lr.ph857
  %.4737855 = phi i64 [ %299, %.lr.ph857 ], [ %.4737855.ph, %.lr.ph857.preheader1275 ]
  %299 = add i64 %.4737855, 1
  %300 = getelementptr double, ptr %15, i64 %.4737855
  %301 = load double, ptr %300, align 8, !tbaa !9
  %302 = getelementptr double, ptr %16, i64 %.4737855
  %303 = load double, ptr %302, align 8, !tbaa !9
  %304 = fsub double %301, %303
  %305 = getelementptr inbounds double, ptr %60, i64 %.4737855
  %306 = load double, ptr %305, align 8, !tbaa !9
  %307 = getelementptr inbounds double, ptr %59, i64 %.4737855
  %308 = load double, ptr %307, align 8, !tbaa !9
  %309 = fadd double %306, %308
  %310 = fsub double %304, %309
  %311 = fcmp ole double %310, 0.000000e+00
  %312 = select i1 %311, double 0.000000e+00, double %310
  %313 = getelementptr inbounds double, ptr %58, i64 %.4737855
  store double %312, ptr %313, align 8, !tbaa !9
  %exitcond954.not = icmp eq i64 %299, %273
  br i1 %exitcond954.not, label %._crit_edge858, label %.lr.ph857, !llvm.loop !28

._crit_edge858:                                   ; preds = %.lr.ph857, %middle.block1246, %._crit_edge850.thread970
  %314 = load double, ptr %3, align 8, !tbaa !9
  %315 = getelementptr inbounds double, ptr %60, i64 %270
  %316 = load double, ptr %315, align 8, !tbaa !9
  %317 = getelementptr inbounds double, ptr %59, i64 %270
  %318 = load double, ptr %317, align 8, !tbaa !9
  %319 = fadd double %316, %318
  %320 = fsub double %314, %319
  %321 = fcmp ole double %320, 0.000000e+00
  %322 = select i1 %321, double 0.000000e+00, double %320
  %323 = getelementptr inbounds double, ptr %58, i64 %270
  store double %322, ptr %323, align 8, !tbaa !9
  %324 = getelementptr inbounds i64, ptr %56, i64 %.0697936
  %325 = load i64, ptr %324, align 8, !tbaa !5
  store i64 %325, ptr %48, align 8, !tbaa !5
  %326 = getelementptr inbounds i64, ptr %56, i64 %270
  %327 = load i64, ptr %326, align 8, !tbaa !5
  store i64 %327, ptr %49, align 8, !tbaa !5
  br i1 %268, label %328, label %.thread973

328:                                              ; preds = %.thread, %._crit_edge858
  %329 = phi i1 [ %253, %.thread ], [ true, %._crit_edge858 ]
  %.1714798 = phi i64 [ %.0713933, %.thread ], [ %270, %._crit_edge858 ]
  %.2727796 = phi i64 [ %.0725930, %.thread ], [ %.1726.lcssa972, %._crit_edge858 ]
  %330 = getelementptr inbounds double, ptr %62, i64 %.0702934
  %331 = call i32 @dlarrk_(ptr noundef nonnull %39, ptr noundef nonnull @c__1, ptr noundef nonnull %38, ptr noundef nonnull %41, ptr noundef nonnull %221, ptr noundef nonnull %330, ptr noundef nonnull %21, ptr noundef nonnull %44, ptr noundef nonnull %43, ptr noundef nonnull %47, ptr noundef nonnull %51) #6
  %332 = load i64, ptr %51, align 8, !tbaa !5
  %.not759 = icmp eq i64 %332, 0
  br i1 %.not759, label %334, label %333

333:                                              ; preds = %328
  store i64 -1, ptr %24, align 8, !tbaa !5
  br label %.loopexit822

334:                                              ; preds = %328
  %335 = load double, ptr %38, align 8, !tbaa !9
  %336 = load double, ptr %43, align 8, !tbaa !9
  %337 = load double, ptr %47, align 8, !tbaa !9
  %338 = call i32 @dlarrk_(ptr noundef nonnull %39, ptr noundef nonnull %39, ptr noundef nonnull %38, ptr noundef nonnull %41, ptr noundef nonnull %221, ptr noundef nonnull %330, ptr noundef nonnull %21, ptr noundef nonnull %44, ptr noundef nonnull %43, ptr noundef nonnull %47, ptr noundef nonnull %51) #6
  %339 = load i64, ptr %51, align 8, !tbaa !5
  %.not760 = icmp eq i64 %339, 0
  br i1 %.not760, label %341, label %340

340:                                              ; preds = %334
  store i64 -1, ptr %24, align 8, !tbaa !5
  br label %.loopexit822

341:                                              ; preds = %334
  %342 = fsub double %336, %337
  %343 = load double, ptr %41, align 8, !tbaa !9
  %344 = load double, ptr %43, align 8, !tbaa !9
  %345 = load double, ptr %47, align 8, !tbaa !9
  %346 = fadd double %344, %345
  %347 = insertelement <2 x double> poison, double %342, i64 0
  %348 = insertelement <2 x double> %347, double %346, i64 1
  %349 = fcmp oge <2 x double> %348, zeroinitializer
  %350 = fneg <2 x double> %348
  %351 = select <2 x i1> %349, <2 x double> %348, <2 x double> %350
  %352 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %183, <2 x double> %351, <2 x double> %348)
  %353 = insertelement <2 x double> %352, double %343, i64 1
  %354 = insertelement <2 x double> %352, double %335, i64 0
  %355 = fcmp ole <2 x double> %353, %354
  %356 = insertelement <2 x double> poison, double %335, i64 0
  %357 = insertelement <2 x double> %356, double %343, i64 1
  %358 = select <2 x i1> %355, <2 x double> %357, <2 x double> %352
  %359 = extractelement <2 x double> %358, i64 0
  %360 = extractelement <2 x double> %358, i64 1
  %361 = fsub double %360, %359
  store double %361, ptr %52, align 8, !tbaa !9
  br i1 %.not, label %380, label %391

.thread973:                                       ; preds = %._crit_edge858
  %362 = getelementptr inbounds double, ptr %60, i64 %.0697936
  %363 = load double, ptr %362, align 8, !tbaa !9
  %364 = getelementptr inbounds double, ptr %59, i64 %.0697936
  %365 = load double, ptr %364, align 8, !tbaa !9
  %366 = fsub double %363, %365
  %367 = load double, ptr %315, align 8, !tbaa !9
  %368 = load double, ptr %317, align 8, !tbaa !9
  %369 = fadd double %367, %368
  %370 = insertelement <2 x double> poison, double %366, i64 0
  %371 = insertelement <2 x double> %370, double %369, i64 1
  %372 = fcmp oge <2 x double> %371, zeroinitializer
  %373 = fneg <2 x double> %371
  %374 = select <2 x i1> %372, <2 x double> %371, <2 x double> %373
  %375 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %183, <2 x double> %374, <2 x double> %371)
  %376 = shufflevector <2 x double> %375, <2 x double> %250, <2 x i32> <i32 0, i32 3>
  %377 = shufflevector <2 x double> %250, <2 x double> %375, <2 x i32> <i32 0, i32 3>
  %378 = fcmp ole <2 x double> %376, %377
  %379 = select <2 x i1> %378, <2 x double> %250, <2 x double> %375
  br i1 %.not, label %380, label %.thread986

380:                                              ; preds = %.thread973, %341
  %381 = phi double [ %252, %.thread973 ], [ %361, %341 ]
  %382 = phi <2 x double> [ %379, %.thread973 ], [ %358, %341 ]
  store i64 1, ptr %48, align 8, !tbaa !5
  %383 = load i64, ptr %39, align 8, !tbaa !5
  store i64 %383, ptr %49, align 8, !tbaa !5
  %384 = add i64 %.0697936, -1
  %385 = add i64 %384, %383
  %386 = extractelement <2 x double> %382, i64 0
  %387 = call double @llvm.fmuladd.f64(double %381, double 2.500000e-01, double %386)
  store double %387, ptr %36, align 8, !tbaa !9
  %388 = fneg double %381
  %389 = extractelement <2 x double> %382, i64 1
  %390 = call double @llvm.fmuladd.f64(double %388, double 2.500000e-01, double %389)
  store double %390, ptr %37, align 8, !tbaa !9
  br label %406

391:                                              ; preds = %341
  br i1 %329, label %392, label %.thread986

392:                                              ; preds = %391
  %393 = call double @llvm.fmuladd.f64(double %361, double 2.500000e-01, double %359)
  store double %393, ptr %36, align 8, !tbaa !9
  %394 = fneg double %361
  %395 = call double @llvm.fmuladd.f64(double %394, double 2.500000e-01, double %360)
  store double %395, ptr %37, align 8, !tbaa !9
  br label %406

.thread986:                                       ; preds = %.thread973, %391
  %.1714797978994 = phi i64 [ %.1714798, %391 ], [ %270, %.thread973 ]
  %.2727795979993 = phi i64 [ %.2727796, %391 ], [ %.1726.lcssa972, %.thread973 ]
  %396 = phi <2 x double> [ %358, %391 ], [ %379, %.thread973 ]
  %397 = load double, ptr %3, align 8, !tbaa !9
  %398 = extractelement <2 x double> %396, i64 1
  %.inv815 = fcmp ole double %398, %397
  %..0 = select i1 %.inv815, double %398, double %397
  %399 = load double, ptr %2, align 8, !tbaa !9
  %400 = extractelement <2 x double> %396, i64 0
  %.inv816 = fcmp oge double %400, %399
  %401 = select i1 %.inv816, double %400, double %399
  %402 = fsub double %..0, %401
  store double %402, ptr %43, align 8, !tbaa !9
  %403 = call double @llvm.fmuladd.f64(double %402, double 2.500000e-01, double %401)
  store double %403, ptr %36, align 8, !tbaa !9
  %404 = fneg double %402
  %405 = call double @llvm.fmuladd.f64(double %404, double 2.500000e-01, double %..0)
  store double %405, ptr %37, align 8, !tbaa !9
  br label %406

406:                                              ; preds = %392, %.thread986, %380
  %.3728 = phi i64 [ %.2727796, %392 ], [ %.2727795979993, %.thread986 ], [ %383, %380 ]
  %.2715 = phi i64 [ %.1714798, %392 ], [ %.1714797978994, %.thread986 ], [ %385, %380 ]
  %.not762 = phi i1 [ false, %392 ], [ true, %.thread986 ], [ false, %380 ]
  %.2 = phi i64 [ 1, %392 ], [ 0, %.thread986 ], [ 1, %380 ]
  %407 = phi <2 x double> [ %358, %392 ], [ %396, %.thread986 ], [ %382, %380 ]
  %408 = icmp sgt i64 %.3728, 1
  br i1 %408, label %.thread799, label %411

.thread799:                                       ; preds = %406
  %409 = getelementptr inbounds double, ptr %63, i64 %.0702934
  %410 = call i32 @dlarrc_(ptr noundef nonnull @.str.6, ptr noundef nonnull %39, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %221, ptr noundef nonnull %409, ptr noundef nonnull %21, ptr noundef nonnull %42, ptr noundef nonnull %45, ptr noundef nonnull %46, ptr noundef nonnull %51) #6
  br label %415

411:                                              ; preds = %406
  %412 = icmp eq i64 %.3728, 1
  br i1 %412, label %413, label %415

413:                                              ; preds = %411
  %414 = load double, ptr %38, align 8, !tbaa !9
  br label %442

415:                                              ; preds = %.thread799, %411
  %416 = load i64, ptr %45, align 8, !tbaa !5
  %417 = load i64, ptr %48, align 8, !tbaa !5
  %418 = sub nsw i64 %416, %417
  %419 = load i64, ptr %49, align 8, !tbaa !5
  %420 = load i64, ptr %46, align 8, !tbaa !5
  %421 = sub nsw i64 %419, %420
  %.not761 = icmp slt i64 %418, %421
  br i1 %.not761, label %432, label %422

422:                                              ; preds = %415
  br i1 %.not, label %423, label %428

423:                                              ; preds = %422
  %424 = load double, ptr %38, align 8
  %425 = extractelement <2 x double> %407, i64 0
  %426 = fcmp oge double %425, %424
  %427 = select i1 %426, double %425, double %424
  br label %442

428:                                              ; preds = %422
  %429 = extractelement <2 x double> %407, i64 0
  br i1 %.not762, label %430, label %.thread810

430:                                              ; preds = %428
  %431 = load double, ptr %2, align 8, !tbaa !9
  %.inv817 = fcmp oge double %429, %431
  %..0694 = select i1 %.inv817, double %429, double %431
  br label %.thread800

432:                                              ; preds = %415
  br i1 %.not, label %433, label %438

433:                                              ; preds = %432
  %434 = load double, ptr %41, align 8
  %435 = extractelement <2 x double> %407, i64 1
  %436 = fcmp ole double %435, %434
  %437 = select i1 %436, double %435, double %434
  br label %442

438:                                              ; preds = %432
  %439 = extractelement <2 x double> %407, i64 1
  br i1 %.not762, label %440, label %.thread810

440:                                              ; preds = %438
  %441 = load double, ptr %3, align 8, !tbaa !9
  %.inv818 = fcmp ole double %439, %441
  %..0790 = select i1 %.inv818, double %439, double %441
  br label %.thread800

442:                                              ; preds = %433, %423, %413
  %.2710 = phi double [ %414, %413 ], [ %427, %423 ], [ %437, %433 ]
  %.0700 = phi double [ 1.000000e+00, %413 ], [ 1.000000e+00, %423 ], [ -1.000000e+00, %433 ]
  br i1 %.not762, label %.thread800, label %.thread810

.thread810:                                       ; preds = %428, %438, %442
  %.0700814 = phi double [ %.0700, %442 ], [ -1.000000e+00, %438 ], [ 1.000000e+00, %428 ]
  %.2710813 = phi double [ %.2710, %442 ], [ %439, %438 ], [ %429, %428 ]
  %443 = load double, ptr %52, align 8, !tbaa !9
  %444 = fmul double %74, %443
  %445 = load i64, ptr %1, align 8, !tbaa !5
  %446 = sitofp i64 %445 to double
  %447 = load double, ptr %21, align 8, !tbaa !9
  %448 = fmul double %447, 2.000000e+00
  %449 = call double @llvm.fmuladd.f64(double %444, double %446, double %448)
  br label %487

.thread800:                                       ; preds = %430, %440, %442
  %.0700806 = phi double [ %.0700, %442 ], [ -1.000000e+00, %440 ], [ 1.000000e+00, %430 ]
  %.2710804 = phi double [ %.2710, %442 ], [ %..0790, %440 ], [ %..0694, %430 ]
  br i1 %408, label %450, label %484

450:                                              ; preds = %.thread800
  %451 = getelementptr inbounds double, ptr %60, i64 %.2715
  %452 = load double, ptr %451, align 8, !tbaa !9
  %453 = getelementptr inbounds double, ptr %59, i64 %.2715
  %454 = load double, ptr %453, align 8, !tbaa !9
  %455 = fadd double %452, %454
  %456 = getelementptr inbounds double, ptr %60, i64 %.0697936
  %457 = load double, ptr %456, align 8, !tbaa !9
  %458 = fsub double %455, %457
  %459 = getelementptr inbounds double, ptr %59, i64 %.0697936
  %460 = load double, ptr %459, align 8, !tbaa !9
  %461 = fsub double %458, %460
  %462 = sub nsw i64 %.2715, %.0697936
  %463 = sitofp i64 %462 to double
  %464 = fdiv double %461, %463
  %465 = fcmp oge double %464, 0.000000e+00
  %466 = fneg double %464
  %467 = select i1 %465, double %464, double %466
  %468 = fcmp oeq double %.0700806, 1.000000e+00
  br i1 %468, label %469, label %477

469:                                              ; preds = %450
  %470 = getelementptr inbounds double, ptr %58, i64 %.0697936
  %471 = load double, ptr %470, align 8, !tbaa !9
  %472 = fcmp oge double %471, %467
  %473 = select i1 %472, double %471, double %467
  %474 = fmul double %473, 5.000000e-01
  %475 = fcmp oge double %474, %460
  %476 = select i1 %475, double %474, double %460
  br label %487

477:                                              ; preds = %450
  %gep = getelementptr double, ptr %invariant.gep, i64 %.2715
  %478 = load double, ptr %gep, align 8, !tbaa !9
  %479 = fcmp oge double %478, %467
  %480 = select i1 %479, double %478, double %467
  %481 = fmul double %480, 5.000000e-01
  %482 = fcmp oge double %481, %454
  %483 = select i1 %482, double %481, double %454
  br label %487

484:                                              ; preds = %.thread800
  %485 = getelementptr inbounds double, ptr %59, i64 %.0697936
  %486 = load double, ptr %485, align 8, !tbaa !9
  br label %487

487:                                              ; preds = %484, %477, %469, %.thread810
  %.0700805 = phi double [ %.0700814, %.thread810 ], [ 1.000000e+00, %469 ], [ %.0700806, %477 ], [ %.0700806, %484 ]
  %.2710803 = phi double [ %.2710813, %.thread810 ], [ %.2710804, %469 ], [ %.2710804, %477 ], [ %.2710804, %484 ]
  %.0722 = phi double [ %449, %.thread810 ], [ %476, %469 ], [ %483, %477 ], [ %486, %484 ]
  %488 = load i64, ptr %39, align 8, !tbaa !5
  %.not765.not859 = icmp sgt i64 %488, 1
  %489 = load double, ptr %52, align 8, !tbaa !9
  %490 = fmul double %489, 6.400000e+01
  %.idx784 = shl i64 %488, 4
  %491 = getelementptr i8, ptr %54, i64 %.idx784
  %492 = getelementptr double, ptr %54, i64 %488
  %.not766868 = icmp slt i64 %488, 1
  %493 = fneg double %.0700805
  %494 = fcmp oeq double %.0700805, 1.000000e+00
  %495 = load double, ptr %41, align 8
  %496 = fmul double %489, 2.000000e+00
  %497 = fmul double %74, %496
  %498 = load double, ptr %38, align 8
  %499 = fmul double %489, -2.000000e+00
  %500 = fmul double %74, %499
  %min.iters.check1210 = icmp ult i64 %488, 4
  %n.vec1213 = and i64 %488, 9223372036854775804
  %ind.end1214 = or disjoint i64 %n.vec1213, 1
  %broadcast.splatinsert1222 = insertelement <2 x double> poison, double %.0700805, i64 0
  %broadcast.splat1223 = shufflevector <2 x double> %broadcast.splatinsert1222, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n1225 = icmp eq i64 %488, %n.vec1213
  br label %501

501:                                              ; preds = %487, %565
  %.3711879 = phi double [ %.2710803, %487 ], [ %.4, %565 ]
  %.0712878 = phi i64 [ 1, %487 ], [ %566, %565 ]
  %.1723877 = phi double [ %.0722, %487 ], [ %.2724, %565 ]
  %502 = load double, ptr %221, align 8, !tbaa !9
  %503 = fsub double %502, %.3711879
  store double %503, ptr %22, align 8, !tbaa !9
  %504 = fcmp ult double %503, 0.000000e+00
  %505 = fneg double %503
  %506 = select i1 %504, double %505, double %503
  br i1 %.not765.not859, label %.lr.ph864, label %529

.lr.ph864:                                        ; preds = %501, %.lr.ph864
  %.0719862 = phi double [ %528, %.lr.ph864 ], [ %506, %501 ]
  %.0730861 = phi i64 [ %515, %.lr.ph864 ], [ %.0702934, %501 ]
  %.5860 = phi i64 [ %522, %.lr.ph864 ], [ 1, %501 ]
  %507 = getelementptr inbounds double, ptr %54, i64 %.5860
  %508 = load double, ptr %507, align 8, !tbaa !9
  %509 = fdiv double 1.000000e+00, %508
  %510 = getelementptr double, ptr %491, i64 %.5860
  store double %509, ptr %510, align 8, !tbaa !9
  %511 = getelementptr inbounds double, ptr %63, i64 %.0730861
  %512 = load double, ptr %511, align 8, !tbaa !9
  %513 = fmul double %509, %512
  %514 = getelementptr double, ptr %492, i64 %.5860
  store double %513, ptr %514, align 8, !tbaa !9
  %515 = add nsw i64 %.0730861, 1
  %516 = getelementptr double, ptr %6, i64 %.0730861
  %517 = load double, ptr %516, align 8, !tbaa !9
  %518 = fsub double %517, %.3711879
  %519 = load double, ptr %511, align 8, !tbaa !9
  %520 = fneg double %513
  %521 = call double @llvm.fmuladd.f64(double %520, double %519, double %518)
  %522 = add nuw nsw i64 %.5860, 1
  %523 = getelementptr double, ptr %22, i64 %.5860
  store double %521, ptr %523, align 8, !tbaa !9
  %524 = fcmp oge double %521, 0.000000e+00
  %525 = fneg double %521
  %526 = select i1 %524, double %521, double %525
  %527 = fcmp oge double %.0719862, %526
  %528 = select i1 %527, double %.0719862, double %526
  %exitcond955.not = icmp eq i64 %522, %488
  br i1 %exitcond955.not, label %._crit_edge865, label %.lr.ph864, !llvm.loop !29

._crit_edge865:                                   ; preds = %.lr.ph864
  store double %513, ptr %43, align 8, !tbaa !9
  br label %529

529:                                              ; preds = %._crit_edge865, %501
  %.0719.lcssa = phi double [ %528, %._crit_edge865 ], [ %506, %501 ]
  %530 = fcmp ogt double %.0719.lcssa, %490
  %or.cond15 = or i1 %.not762, %530
  %brmerge = or i1 %or.cond15, %.not766868
  %531 = sext i1 %or.cond15 to i64
  %.mux = add nsw i64 %488, %531
  %..mux = zext i1 %530 to i64
  br i1 %brmerge, label %.loopexit, label %.lr.ph872.preheader

.lr.ph872.preheader:                              ; preds = %529
  br i1 %min.iters.check1210, label %.lr.ph872.preheader1268, label %vector.body1216

vector.body1216:                                  ; preds = %.lr.ph872.preheader, %vector.body1216
  %index1217 = phi i64 [ %index.next1224, %vector.body1216 ], [ 0, %.lr.ph872.preheader ]
  %vec.phi = phi <2 x i1> [ %538, %vector.body1216 ], [ zeroinitializer, %.lr.ph872.preheader ]
  %vec.phi1218 = phi <2 x i1> [ %539, %vector.body1216 ], [ zeroinitializer, %.lr.ph872.preheader ]
  %532 = getelementptr double, ptr %22, i64 %index1217
  %533 = getelementptr inbounds i8, ptr %532, i64 16
  %wide.load1220 = load <2 x double>, ptr %532, align 8, !tbaa !9
  %wide.load1221 = load <2 x double>, ptr %533, align 8, !tbaa !9
  %534 = fmul <2 x double> %broadcast.splat1223, %wide.load1220
  %535 = fmul <2 x double> %broadcast.splat1223, %wide.load1221
  %536 = fcmp olt <2 x double> %534, zeroinitializer
  %537 = fcmp olt <2 x double> %535, zeroinitializer
  %538 = or <2 x i1> %vec.phi, %536
  %539 = or <2 x i1> %vec.phi1218, %537
  %index.next1224 = add nuw i64 %index1217, 4
  %540 = icmp eq i64 %index.next1224, %n.vec1213
  br i1 %540, label %middle.block1208, label %vector.body1216, !llvm.loop !30

middle.block1208:                                 ; preds = %vector.body1216
  %541 = extractelement <2 x double> %535, i64 1
  %bin.rdx = or <2 x i1> %539, %538
  %bin.rdx.fr = freeze <2 x i1> %bin.rdx
  %542 = bitcast <2 x i1> %bin.rdx.fr to i2
  %.not1267 = icmp ne i2 %542, 0
  %rdx.select = zext i1 %.not1267 to i64
  br i1 %cmp.n1225, label %..loopexit_crit_edge, label %.lr.ph872.preheader1268

.lr.ph872.preheader1268:                          ; preds = %middle.block1208, %.lr.ph872.preheader
  %.1705870.ph = phi i64 [ 0, %.lr.ph872.preheader ], [ %rdx.select, %middle.block1208 ]
  %.6869.ph = phi i64 [ 1, %.lr.ph872.preheader ], [ %ind.end1214, %middle.block1208 ]
  br label %.lr.ph872

.lr.ph872:                                        ; preds = %.lr.ph872.preheader1268, %.lr.ph872
  %.1705870 = phi i64 [ %.2706, %.lr.ph872 ], [ %.1705870.ph, %.lr.ph872.preheader1268 ]
  %.6869 = phi i64 [ %547, %.lr.ph872 ], [ %.6869.ph, %.lr.ph872.preheader1268 ]
  %543 = getelementptr inbounds double, ptr %54, i64 %.6869
  %544 = load double, ptr %543, align 8, !tbaa !9
  %545 = fmul double %.0700805, %544
  %546 = fcmp olt double %545, 0.000000e+00
  %.2706 = select i1 %546, i64 1, i64 %.1705870
  %547 = add nuw i64 %.6869, 1
  %exitcond956.not = icmp eq i64 %.6869, %488
  br i1 %exitcond956.not, label %..loopexit_crit_edge, label %.lr.ph872, !llvm.loop !31

..loopexit_crit_edge:                             ; preds = %.lr.ph872, %middle.block1208
  %.lcssa1012 = phi double [ %541, %middle.block1208 ], [ %545, %.lr.ph872 ]
  %.2706.lcssa = phi i64 [ %rdx.select, %middle.block1208 ], [ %.2706, %.lr.ph872 ]
  store double %.lcssa1012, ptr %43, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %529, %..loopexit_crit_edge
  %548 = phi i64 [ %.mux, %529 ], [ %488, %..loopexit_crit_edge ]
  %.3707 = phi i64 [ %..mux, %529 ], [ %.2706.lcssa, %..loopexit_crit_edge ]
  %.not767 = icmp eq i64 %.3707, 0
  br i1 %.not767, label %568, label %549

549:                                              ; preds = %.loopexit
  %550 = icmp eq i64 %.0712878, 5
  br i1 %550, label %551, label %562

551:                                              ; preds = %549
  %552 = load i64, ptr %1, align 8, !tbaa !5
  %553 = sitofp i64 %552 to double
  %554 = load double, ptr %21, align 8, !tbaa !9
  br i1 %494, label %555, label %559

555:                                              ; preds = %551
  %556 = call double @llvm.fmuladd.f64(double %500, double %553, double %498)
  %557 = fneg double %554
  %558 = call double @llvm.fmuladd.f64(double %557, double 4.000000e+00, double %556)
  br label %565

559:                                              ; preds = %551
  %560 = call double @llvm.fmuladd.f64(double %497, double %553, double %495)
  %561 = call double @llvm.fmuladd.f64(double %554, double 4.000000e+00, double %560)
  br label %565

562:                                              ; preds = %549
  %563 = call double @llvm.fmuladd.f64(double %493, double %.1723877, double %.3711879)
  %564 = fmul double %.1723877, 2.000000e+00
  br label %565

565:                                              ; preds = %555, %559, %562
  %.2724 = phi double [ %.1723877, %555 ], [ %.1723877, %559 ], [ %564, %562 ]
  %.4 = phi double [ %558, %555 ], [ %561, %559 ], [ %563, %562 ]
  %566 = add nuw nsw i64 %.0712878, 1
  %exitcond957.not = icmp eq i64 %566, 7
  br i1 %exitcond957.not, label %567, label %501, !llvm.loop !32

567:                                              ; preds = %565
  store i64 2, ptr %24, align 8, !tbaa !5
  br label %.loopexit822

568:                                              ; preds = %.loopexit
  store i64 %548, ptr %35, align 8, !tbaa !5
  store double %.3711879, ptr %220, align 8, !tbaa !9
  %569 = call i32 @f2c_dcopy(ptr noundef nonnull %39, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull %221, ptr noundef nonnull @c__1) #6
  %570 = load i64, ptr %39, align 8, !tbaa !5
  %571 = add nsw i64 %570, -1
  store i64 %571, ptr %35, align 8, !tbaa !5
  %572 = getelementptr double, ptr %22, i64 %570
  %573 = getelementptr inbounds double, ptr %63, i64 %.0702934
  %574 = call i32 @f2c_dcopy(ptr noundef nonnull %35, ptr noundef %572, ptr noundef nonnull @c__1, ptr noundef nonnull %573, ptr noundef nonnull @c__1) #6
  br i1 %408, label %.preheader.preheader, label %617

.preheader.preheader:                             ; preds = %568
  store i64 1, ptr %50, align 16, !tbaa !5
  store i64 1, ptr %176, align 8, !tbaa !5
  store i64 1, ptr %177, align 16, !tbaa !5
  store i64 1, ptr %178, align 8, !tbaa !5
  %575 = load i64, ptr %39, align 8, !tbaa !5
  %576 = shl i64 %575, 1
  %577 = add nsw i64 %576, -1
  store i64 %577, ptr %35, align 8, !tbaa !5
  %578 = call i32 @dlarnv_(ptr noundef nonnull @c__2, ptr noundef nonnull %50, ptr noundef nonnull %35, ptr noundef nonnull %22) #6
  %579 = load i64, ptr %39, align 8, !tbaa !5
  %.not768.not881 = icmp sgt i64 %579, 1
  br i1 %.not768.not881, label %.lr.ph884, label %._crit_edge885

.lr.ph884:                                        ; preds = %.preheader.preheader
  %580 = add nsw i64 %.0702934, -1
  %581 = getelementptr double, ptr %54, i64 %579
  %582 = add nsw i64 %579, -1
  %min.iters.check1191 = icmp ult i64 %579, 7
  br i1 %min.iters.check1191, label %scalar.ph1190.preheader, label %vector.memcheck1158

vector.memcheck1158:                              ; preds = %.lr.ph884
  %583 = shl i64 %.0702934, 3
  %scevgep1160 = getelementptr i8, ptr %scevgep1159, i64 %583
  %584 = shl i64 %579, 3
  %585 = add i64 %583, %584
  %scevgep1162 = getelementptr i8, ptr %scevgep1161, i64 %585
  %scevgep1164 = getelementptr i8, ptr %scevgep1163, i64 %583
  %scevgep1166 = getelementptr i8, ptr %scevgep1165, i64 %585
  %scevgep1167 = getelementptr i8, ptr %22, i64 %584
  %586 = shl i64 %579, 4
  %scevgep1169 = getelementptr i8, ptr %scevgep1168, i64 %586
  %bound01170 = icmp ult ptr %scevgep1160, %scevgep1166
  %bound11171 = icmp ult ptr %scevgep1164, %scevgep1162
  %found.conflict1172 = and i1 %bound01170, %bound11171
  %bound01173 = icmp ult ptr %scevgep1160, %scevgep1169
  %bound11174 = icmp ult ptr %scevgep1167, %scevgep1162
  %found.conflict1175 = and i1 %bound01173, %bound11174
  %conflict.rdx1176 = or i1 %found.conflict1172, %found.conflict1175
  %bound01177 = icmp ult ptr %scevgep1160, %581
  %bound11178 = icmp ugt ptr %scevgep1162, %22
  %found.conflict1179 = and i1 %bound01177, %bound11178
  %conflict.rdx1180 = or i1 %conflict.rdx1176, %found.conflict1179
  %bound01181 = icmp ult ptr %scevgep1164, %scevgep1169
  %bound11182 = icmp ult ptr %scevgep1167, %scevgep1166
  %found.conflict1183 = and i1 %bound01181, %bound11182
  %conflict.rdx1184 = or i1 %conflict.rdx1180, %found.conflict1183
  %bound01185 = icmp ult ptr %scevgep1164, %581
  %bound11186 = icmp ugt ptr %scevgep1166, %22
  %found.conflict1187 = and i1 %bound01185, %bound11186
  %conflict.rdx1188 = or i1 %conflict.rdx1184, %found.conflict1187
  br i1 %conflict.rdx1188, label %scalar.ph1190.preheader, label %vector.ph1192

vector.ph1192:                                    ; preds = %vector.memcheck1158
  %n.vec1194 = and i64 %582, -2
  %ind.end1195 = or i64 %582, 1
  br label %vector.body1197

vector.body1197:                                  ; preds = %vector.body1197, %vector.ph1192
  %index1198 = phi i64 [ 0, %vector.ph1192 ], [ %index.next1206, %vector.body1197 ]
  %offset.idx1199 = or disjoint i64 %index1198, 1
  %587 = getelementptr double, ptr %22, i64 %index1198
  %wide.load1200 = load <2 x double>, ptr %587, align 8, !tbaa !9, !alias.scope !33
  %588 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1202, <2 x double> %wide.load1200, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
  %589 = add i64 %580, %offset.idx1199
  %590 = getelementptr inbounds double, ptr %64, i64 %589
  %wide.load1203 = load <2 x double>, ptr %590, align 8, !tbaa !9, !alias.scope !36, !noalias !38
  %591 = fmul <2 x double> %wide.load1203, %588
  store <2 x double> %591, ptr %590, align 8, !tbaa !9, !alias.scope !36, !noalias !38
  %592 = getelementptr double, ptr %581, i64 %offset.idx1199
  %wide.load1204 = load <2 x double>, ptr %592, align 8, !tbaa !9, !alias.scope !41
  %593 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1202, <2 x double> %wide.load1204, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
  %594 = getelementptr inbounds double, ptr %63, i64 %589
  %wide.load1205 = load <2 x double>, ptr %594, align 8, !tbaa !9, !alias.scope !42, !noalias !43
  %595 = fmul <2 x double> %wide.load1205, %593
  store <2 x double> %595, ptr %594, align 8, !tbaa !9, !alias.scope !42, !noalias !43
  %index.next1206 = add nuw i64 %index1198, 2
  %596 = icmp eq i64 %index.next1206, %n.vec1194
  br i1 %596, label %middle.block1189, label %vector.body1197, !llvm.loop !44

middle.block1189:                                 ; preds = %vector.body1197
  %cmp.n1207 = icmp eq i64 %582, %n.vec1194
  br i1 %cmp.n1207, label %._crit_edge885, label %scalar.ph1190.preheader

scalar.ph1190.preheader:                          ; preds = %middle.block1189, %vector.memcheck1158, %.lr.ph884
  %.8882.ph = phi i64 [ 1, %vector.memcheck1158 ], [ 1, %.lr.ph884 ], [ %ind.end1195, %middle.block1189 ]
  br label %scalar.ph1190

scalar.ph1190:                                    ; preds = %scalar.ph1190.preheader, %scalar.ph1190
  %.8882 = phi i64 [ %610, %scalar.ph1190 ], [ %.8882.ph, %scalar.ph1190.preheader ]
  %597 = getelementptr inbounds double, ptr %54, i64 %.8882
  %598 = load double, ptr %597, align 8, !tbaa !9
  %599 = call double @llvm.fmuladd.f64(double %174, double %598, double 1.000000e+00)
  %600 = add i64 %580, %.8882
  %601 = getelementptr inbounds double, ptr %64, i64 %600
  %602 = load double, ptr %601, align 8, !tbaa !9
  %603 = fmul double %602, %599
  store double %603, ptr %601, align 8, !tbaa !9
  %604 = getelementptr double, ptr %581, i64 %.8882
  %605 = load double, ptr %604, align 8, !tbaa !9
  %606 = call double @llvm.fmuladd.f64(double %174, double %605, double 1.000000e+00)
  %607 = getelementptr inbounds double, ptr %63, i64 %600
  %608 = load double, ptr %607, align 8, !tbaa !9
  %609 = fmul double %608, %606
  store double %609, ptr %607, align 8, !tbaa !9
  %610 = add nuw nsw i64 %.8882, 1
  %exitcond959.not = icmp eq i64 %610, %579
  br i1 %exitcond959.not, label %._crit_edge885, label %scalar.ph1190, !llvm.loop !45

._crit_edge885:                                   ; preds = %scalar.ph1190, %middle.block1189, %.preheader.preheader
  %611 = getelementptr inbounds double, ptr %54, i64 %579
  %612 = load double, ptr %611, align 8, !tbaa !9
  %613 = call double @llvm.fmuladd.f64(double %175, double %612, double 1.000000e+00)
  %614 = getelementptr inbounds double, ptr %64, i64 %186
  %615 = load double, ptr %614, align 8, !tbaa !9
  %616 = fmul double %615, %613
  store double %616, ptr %614, align 8, !tbaa !9
  br label %617

617:                                              ; preds = %._crit_edge885, %568
  br i1 %.not762, label %618, label %724

618:                                              ; preds = %617
  %.not769915 = icmp sgt i64 %.0697936, %.2715
  br i1 %.not769915, label %._crit_edge919, label %.lr.ph918.preheader

.lr.ph918.preheader:                              ; preds = %618
  %619 = add i64 %.2715, 1
  %620 = sub i64 %619, %.0697936
  %min.iters.check1048 = icmp ult i64 %620, 2
  br i1 %min.iters.check1048, label %.lr.ph918.preheader1270, label %vector.memcheck1040

vector.memcheck1040:                              ; preds = %.lr.ph918.preheader
  %621 = shl i64 %.0697936, 3
  %scevgep1041 = getelementptr i8, ptr %scevgep, i64 %621
  %622 = shl i64 %.2715, 3
  %scevgep1042 = getelementptr i8, ptr %15, i64 %622
  %scevgep1044 = getelementptr i8, ptr %scevgep1043, i64 %621
  %scevgep1045 = getelementptr i8, ptr %16, i64 %622
  %bound0 = icmp ult ptr %scevgep1041, %scevgep1045
  %bound1 = icmp ult ptr %scevgep1044, %scevgep1042
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph918.preheader1270, label %vector.ph1049

vector.ph1049:                                    ; preds = %vector.memcheck1040
  %n.vec1051 = and i64 %620, -2
  %ind.end1052 = add i64 %.0697936, %n.vec1051
  %broadcast.splatinsert = insertelement <2 x double> poison, double %.3711879, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1054

vector.body1054:                                  ; preds = %vector.body1054, %vector.ph1049
  %index1055 = phi i64 [ 0, %vector.ph1049 ], [ %index.next1061, %vector.body1054 ]
  %offset.idx1056 = add i64 %.0697936, %index1055
  %623 = getelementptr inbounds double, ptr %60, i64 %offset.idx1056
  %wide.load1057 = load <2 x double>, ptr %623, align 8, !tbaa !9, !alias.scope !46, !noalias !49
  %624 = fsub <2 x double> %wide.load1057, %broadcast.splat
  store <2 x double> %624, ptr %623, align 8, !tbaa !9, !alias.scope !46, !noalias !49
  %625 = fcmp oge <2 x double> %624, zeroinitializer
  %626 = fneg <2 x double> %624
  %627 = select <2 x i1> %625, <2 x double> %624, <2 x double> %626
  %628 = getelementptr inbounds double, ptr %59, i64 %offset.idx1056
  %wide.load1058 = load <2 x double>, ptr %628, align 8, !tbaa !9, !alias.scope !49
  %629 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %627, <2 x double> %broadcast.splat1060, <2 x double> %wide.load1058)
  store <2 x double> %629, ptr %628, align 8, !tbaa !9, !alias.scope !49
  %index.next1061 = add nuw i64 %index1055, 2
  %630 = icmp eq i64 %index.next1061, %n.vec1051
  br i1 %630, label %middle.block1046, label %vector.body1054, !llvm.loop !51

middle.block1046:                                 ; preds = %vector.body1054
  %cmp.n1062 = icmp eq i64 %620, %n.vec1051
  br i1 %cmp.n1062, label %._crit_edge919, label %.lr.ph918.preheader1270

.lr.ph918.preheader1270:                          ; preds = %middle.block1046, %vector.memcheck1040, %.lr.ph918.preheader
  %.1731916.ph = phi i64 [ %.0697936, %vector.memcheck1040 ], [ %.0697936, %.lr.ph918.preheader ], [ %ind.end1052, %middle.block1046 ]
  br label %.lr.ph918

.lr.ph918:                                        ; preds = %.lr.ph918.preheader1270, %.lr.ph918
  %.1731916 = phi i64 [ %640, %.lr.ph918 ], [ %.1731916.ph, %.lr.ph918.preheader1270 ]
  %631 = getelementptr inbounds double, ptr %60, i64 %.1731916
  %632 = load double, ptr %631, align 8, !tbaa !9
  %633 = fsub double %632, %.3711879
  store double %633, ptr %631, align 8, !tbaa !9
  %634 = fcmp oge double %633, 0.000000e+00
  %635 = fneg double %633
  %636 = select i1 %634, double %633, double %635
  %637 = getelementptr inbounds double, ptr %59, i64 %.1731916
  %638 = load double, ptr %637, align 8, !tbaa !9
  %639 = call double @llvm.fmuladd.f64(double %636, double %74, double %638)
  store double %639, ptr %637, align 8, !tbaa !9
  %640 = add i64 %.1731916, 1
  %exitcond965.not = icmp eq i64 %.1731916, %.2715
  br i1 %exitcond965.not, label %._crit_edge919, label %.lr.ph918, !llvm.loop !52

._crit_edge919:                                   ; preds = %.lr.ph918, %middle.block1046, %618
  %.not770.not920 = icmp slt i64 %.0702934, %186
  br i1 %.not770.not920, label %.lr.ph923.preheader, label %._crit_edge924

.lr.ph923.preheader:                              ; preds = %._crit_edge919
  %641 = sub i64 %186, %.0702934
  %min.iters.check1026 = icmp ult i64 %641, 4
  %brmerge1325 = or i1 %min.iters.check1026, %conflict.rdx1023
  br i1 %brmerge1325, label %.lr.ph923.preheader1269, label %vector.ph1027

vector.ph1027:                                    ; preds = %.lr.ph923.preheader
  %n.vec1029 = and i64 %641, -4
  %ind.end1030 = add i64 %.0702934, %n.vec1029
  br label %vector.body1032

vector.body1032:                                  ; preds = %vector.body1032, %vector.ph1027
  %index1033 = phi i64 [ 0, %vector.ph1027 ], [ %index.next1038, %vector.body1032 ]
  %offset.idx1034 = add i64 %.0702934, %index1033
  %642 = getelementptr inbounds double, ptr %63, i64 %offset.idx1034
  %643 = getelementptr inbounds i8, ptr %642, i64 16
  %wide.load = load <2 x double>, ptr %642, align 8, !tbaa !9
  %wide.load1035 = load <2 x double>, ptr %643, align 8, !tbaa !9
  %644 = getelementptr inbounds double, ptr %64, i64 %offset.idx1034
  %645 = getelementptr inbounds i8, ptr %644, i64 16
  %wide.load1036 = load <2 x double>, ptr %644, align 8, !tbaa !9
  %wide.load1037 = load <2 x double>, ptr %645, align 8, !tbaa !9
  %646 = fmul <2 x double> %wide.load, %wide.load
  %647 = fmul <2 x double> %wide.load1035, %wide.load1035
  %648 = fmul <2 x double> %wide.load1036, %646
  %649 = fmul <2 x double> %wide.load1037, %647
  %650 = getelementptr inbounds double, ptr %54, i64 %offset.idx1034
  %651 = getelementptr inbounds i8, ptr %650, i64 16
  store <2 x double> %648, ptr %650, align 8, !tbaa !9
  store <2 x double> %649, ptr %651, align 8, !tbaa !9
  %index.next1038 = add nuw i64 %index1033, 4
  %652 = icmp eq i64 %index.next1038, %n.vec1029
  br i1 %652, label %middle.block1024, label %vector.body1032, !llvm.loop !53

middle.block1024:                                 ; preds = %vector.body1032
  %cmp.n1039 = icmp eq i64 %641, %n.vec1029
  br i1 %cmp.n1039, label %._crit_edge924, label %.lr.ph923.preheader1269

.lr.ph923.preheader1269:                          ; preds = %.lr.ph923.preheader, %middle.block1024
  %.9921.ph = phi i64 [ %.0702934, %.lr.ph923.preheader ], [ %ind.end1030, %middle.block1024 ]
  %653 = sub i64 %186, %.9921.ph
  %.neg1301 = add i64 %.9921.ph, 1
  %xtraiter1297 = and i64 %653, 1
  %lcmp.mod1298.not = icmp eq i64 %xtraiter1297, 0
  br i1 %lcmp.mod1298.not, label %.lr.ph923.prol.loopexit, label %.lr.ph923.prol

.lr.ph923.prol:                                   ; preds = %.lr.ph923.preheader1269
  %654 = getelementptr inbounds double, ptr %63, i64 %.9921.ph
  %655 = load double, ptr %654, align 8, !tbaa !9
  %656 = getelementptr inbounds double, ptr %64, i64 %.9921.ph
  %657 = load double, ptr %656, align 8, !tbaa !9
  %658 = fmul double %655, %655
  %659 = fmul double %657, %658
  %660 = getelementptr inbounds double, ptr %54, i64 %.9921.ph
  store double %659, ptr %660, align 8, !tbaa !9
  %661 = add nsw i64 %.9921.ph, 1
  br label %.lr.ph923.prol.loopexit

.lr.ph923.prol.loopexit:                          ; preds = %.lr.ph923.prol, %.lr.ph923.preheader1269
  %.9921.unr = phi i64 [ %.9921.ph, %.lr.ph923.preheader1269 ], [ %661, %.lr.ph923.prol ]
  %662 = icmp eq i64 %186, %.neg1301
  br i1 %662, label %._crit_edge924, label %.lr.ph923

.lr.ph923:                                        ; preds = %.lr.ph923.prol.loopexit, %.lr.ph923
  %.9921 = phi i64 [ %677, %.lr.ph923 ], [ %.9921.unr, %.lr.ph923.prol.loopexit ]
  %663 = getelementptr inbounds double, ptr %63, i64 %.9921
  %664 = load double, ptr %663, align 8, !tbaa !9
  %665 = getelementptr inbounds double, ptr %64, i64 %.9921
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = fmul double %664, %664
  %668 = fmul double %666, %667
  %669 = getelementptr inbounds double, ptr %54, i64 %.9921
  store double %668, ptr %669, align 8, !tbaa !9
  %670 = getelementptr double, ptr %7, i64 %.9921
  %671 = load double, ptr %670, align 8, !tbaa !9
  %672 = getelementptr double, ptr %6, i64 %.9921
  %673 = load double, ptr %672, align 8, !tbaa !9
  %674 = fmul double %671, %671
  %675 = fmul double %673, %674
  %676 = getelementptr double, ptr %22, i64 %.9921
  store double %675, ptr %676, align 8, !tbaa !9
  %677 = add nsw i64 %.9921, 2
  %exitcond966.not.1 = icmp eq i64 %677, %186
  br i1 %exitcond966.not.1, label %._crit_edge924, label %.lr.ph923, !llvm.loop !54

._crit_edge924:                                   ; preds = %.lr.ph923.prol.loopexit, %.lr.ph923, %middle.block1024, %._crit_edge919
  %678 = load i64, ptr %48, align 8, !tbaa !5
  %679 = add nsw i64 %678, -1
  store i64 %679, ptr %35, align 8, !tbaa !5
  %680 = getelementptr inbounds double, ptr %54, i64 %.0702934
  %681 = getelementptr inbounds double, ptr %60, i64 %.0697936
  %682 = getelementptr inbounds double, ptr %58, i64 %.0697936
  %683 = getelementptr inbounds double, ptr %59, i64 %.0697936
  %684 = load i64, ptr %1, align 8, !tbaa !5
  %.idx = shl i64 %684, 4
  %685 = getelementptr i8, ptr %22, i64 %.idx
  %686 = call i32 @dlarrb_(ptr noundef nonnull %39, ptr noundef nonnull %221, ptr noundef nonnull %680, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %35, ptr noundef nonnull %681, ptr noundef nonnull %682, ptr noundef nonnull %683, ptr noundef %685, ptr noundef %23, ptr noundef nonnull %21, ptr noundef nonnull %52, ptr noundef nonnull %39, ptr noundef nonnull %51) #6
  %687 = load i64, ptr %51, align 8, !tbaa !5
  %.not771 = icmp eq i64 %687, 0
  br i1 %.not771, label %689, label %688

688:                                              ; preds = %._crit_edge924
  store i64 -4, ptr %24, align 8, !tbaa !5
  br label %.loopexit822

689:                                              ; preds = %._crit_edge924
  %690 = load double, ptr %3, align 8, !tbaa !9
  %691 = fsub double %690, %.3711879
  %692 = getelementptr inbounds double, ptr %60, i64 %.2715
  %693 = load double, ptr %692, align 8, !tbaa !9
  %694 = getelementptr inbounds double, ptr %59, i64 %.2715
  %695 = load double, ptr %694, align 8, !tbaa !9
  %696 = fadd double %693, %695
  %697 = fsub double %691, %696
  %698 = fcmp ole double %697, 0.000000e+00
  %699 = select i1 %698, double 0.000000e+00, double %697
  %700 = getelementptr inbounds double, ptr %58, i64 %.2715
  store double %699, ptr %700, align 8, !tbaa !9
  %701 = load i64, ptr %49, align 8, !tbaa !5
  store i64 %701, ptr %35, align 8, !tbaa !5
  %702 = load i64, ptr %48, align 8, !tbaa !5
  %.not772925 = icmp sgt i64 %702, %701
  br i1 %.not772925, label %.loopexit819, label %.lr.ph928.preheader

.lr.ph928.preheader:                              ; preds = %689
  %703 = add i64 %701, %702
  %704 = and i64 %703, 1
  %lcmp.mod1300.not.not = icmp eq i64 %704, 0
  br i1 %lcmp.mod1300.not.not, label %.lr.ph928.prol, label %.lr.ph928.prol.loopexit

.lr.ph928.prol:                                   ; preds = %.lr.ph928.preheader
  %705 = load i64, ptr %14, align 8, !tbaa !5
  %706 = add nsw i64 %705, 1
  store i64 %706, ptr %14, align 8, !tbaa !5
  %707 = getelementptr i64, ptr %18, i64 %705
  store i64 %.0721931, ptr %707, align 8, !tbaa !5
  %708 = load i64, ptr %14, align 8, !tbaa !5
  %709 = getelementptr inbounds i64, ptr %56, i64 %708
  store i64 %702, ptr %709, align 8, !tbaa !5
  %710 = add i64 %702, 1
  br label %.lr.ph928.prol.loopexit

.lr.ph928.prol.loopexit:                          ; preds = %.lr.ph928.prol, %.lr.ph928.preheader
  %.10926.unr = phi i64 [ %702, %.lr.ph928.preheader ], [ %710, %.lr.ph928.prol ]
  %711 = icmp eq i64 %701, %702
  br i1 %711, label %.loopexit819, label %.lr.ph928

.lr.ph928:                                        ; preds = %.lr.ph928.prol.loopexit, %.lr.ph928
  %.10926 = phi i64 [ %723, %.lr.ph928 ], [ %.10926.unr, %.lr.ph928.prol.loopexit ]
  %712 = load i64, ptr %14, align 8, !tbaa !5
  %713 = add nsw i64 %712, 1
  store i64 %713, ptr %14, align 8, !tbaa !5
  %714 = getelementptr i64, ptr %18, i64 %712
  store i64 %.0721931, ptr %714, align 8, !tbaa !5
  %715 = load i64, ptr %14, align 8, !tbaa !5
  %716 = getelementptr inbounds i64, ptr %56, i64 %715
  store i64 %.10926, ptr %716, align 8, !tbaa !5
  %717 = add i64 %.10926, 1
  %718 = load i64, ptr %14, align 8, !tbaa !5
  %719 = add nsw i64 %718, 1
  store i64 %719, ptr %14, align 8, !tbaa !5
  %720 = getelementptr i64, ptr %18, i64 %718
  store i64 %.0721931, ptr %720, align 8, !tbaa !5
  %721 = load i64, ptr %14, align 8, !tbaa !5
  %722 = getelementptr inbounds i64, ptr %56, i64 %721
  store i64 %717, ptr %722, align 8, !tbaa !5
  %723 = add i64 %.10926, 2
  %exitcond967.not.1 = icmp eq i64 %717, %701
  br i1 %exitcond967.not.1, label %.loopexit819, label %.lr.ph928, !llvm.loop !55

724:                                              ; preds = %617
  %725 = load i64, ptr %39, align 8, !tbaa !5
  %726 = sitofp i64 %725 to double
  %727 = call double @log(double noundef %726) #6
  %728 = fmul double %727, 4.000000e+00
  %729 = fmul double %74, %728
  %730 = load i64, ptr %39, align 8, !tbaa !5
  %731 = add nsw i64 %730, -1
  store i64 %731, ptr %35, align 8, !tbaa !5
  %.not773.not886 = icmp sgt i64 %730, 1
  br i1 %.not773.not886, label %.lr.ph890.preheader, label %._crit_edge891

.lr.ph890.preheader:                              ; preds = %724
  %732 = add nsw i64 %730, -1
  %min.iters.check1142 = icmp ult i64 %730, 13
  br i1 %min.iters.check1142, label %.lr.ph890.preheader1274, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph890.preheader
  %733 = add nsw i64 %730, -2
  %mul.result = shl i64 %733, 4
  %734 = getelementptr i8, ptr %22, i64 %mul.result
  %735 = icmp ult ptr %734, %22
  %mul.result1120 = shl i64 %733, 4
  %mul.overflow1121 = icmp ugt i64 %733, 1152921504606846975
  %736 = getelementptr i8, ptr %scevgep1118, i64 %mul.result1120
  %737 = icmp ult ptr %736, %scevgep1118
  %738 = or i1 %737, %mul.overflow1121
  %739 = or i1 %735, %738
  br i1 %739, label %.lr.ph890.preheader1274, label %vector.memcheck1122

vector.memcheck1122:                              ; preds = %vector.scevcheck
  %740 = shl i64 %730, 4
  %scevgep1124 = getelementptr i8, ptr %scevgep1123, i64 %740
  %741 = shl i64 %.0702934, 3
  %scevgep1126 = getelementptr i8, ptr %scevgep1125, i64 %741
  %742 = add i64 %.0702934, %730
  %743 = shl i64 %742, 3
  %scevgep1128 = getelementptr i8, ptr %scevgep1127, i64 %743
  %scevgep1130 = getelementptr i8, ptr %scevgep1129, i64 %741
  %scevgep1132 = getelementptr i8, ptr %scevgep1131, i64 %743
  %bound01133 = icmp ugt ptr %scevgep1128, %22
  %bound11134 = icmp ult ptr %scevgep1126, %scevgep1124
  %found.conflict1135 = and i1 %bound01133, %bound11134
  %bound01136 = icmp ugt ptr %scevgep1132, %22
  %bound11137 = icmp ult ptr %scevgep1130, %scevgep1124
  %found.conflict1138 = and i1 %bound01136, %bound11137
  %conflict.rdx1139 = or i1 %found.conflict1135, %found.conflict1138
  br i1 %conflict.rdx1139, label %.lr.ph890.preheader1274, label %vector.ph1143

vector.ph1143:                                    ; preds = %vector.memcheck1122
  %n.vec1145 = and i64 %732, -2
  %ind.end1146 = add i64 %.0702934, %n.vec1145
  %ind.end1148 = or i64 %732, 1
  br label %vector.body1150

vector.body1150:                                  ; preds = %vector.body1150, %vector.ph1143
  %index1151 = phi i64 [ 0, %vector.ph1143 ], [ %index.next1156, %vector.body1150 ]
  %offset.idx1152 = add i64 %.0702934, %index1151
  %744 = getelementptr inbounds double, ptr %64, i64 %offset.idx1152
  %wide.load1154 = load <2 x double>, ptr %744, align 8, !tbaa !9, !alias.scope !56
  %745 = fcmp oge <2 x double> %wide.load1154, zeroinitializer
  %746 = fneg <2 x double> %wide.load1154
  %747 = select <2 x i1> %745, <2 x double> %wide.load1154, <2 x double> %746
  %offset.idx1153 = shl i64 %index1151, 4
  %748 = or disjoint i64 %offset.idx1153, 16
  %749 = getelementptr inbounds double, ptr %63, i64 %offset.idx1152
  %wide.load1155 = load <2 x double>, ptr %749, align 8, !tbaa !9, !alias.scope !59
  %750 = fmul <2 x double> %wide.load1155, %wide.load1155
  %751 = fmul <2 x double> %747, %750
  %gep1322 = getelementptr i8, ptr %invariant.gep1321, i64 %748
  %interleaved.vec = shufflevector <2 x double> %747, <2 x double> %751, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %gep1322, align 8, !tbaa !9
  %index.next1156 = add nuw i64 %index1151, 2
  %752 = icmp eq i64 %index.next1156, %n.vec1145
  br i1 %752, label %middle.block1140, label %vector.body1150, !llvm.loop !61

middle.block1140:                                 ; preds = %vector.body1150
  %cmp.n1157 = icmp eq i64 %732, %n.vec1145
  br i1 %cmp.n1157, label %._crit_edge891, label %.lr.ph890.preheader1274

.lr.ph890.preheader1274:                          ; preds = %middle.block1140, %vector.memcheck1122, %vector.scevcheck, %.lr.ph890.preheader
  %.2732888.ph = phi i64 [ %.0702934, %vector.memcheck1122 ], [ %.0702934, %vector.scevcheck ], [ %.0702934, %.lr.ph890.preheader ], [ %ind.end1146, %middle.block1140 ]
  %.11887.ph = phi i64 [ 1, %vector.memcheck1122 ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph890.preheader ], [ %ind.end1148, %middle.block1140 ]
  br label %.lr.ph890

.lr.ph890:                                        ; preds = %.lr.ph890.preheader1274, %.lr.ph890
  %.2732888 = phi i64 [ %764, %.lr.ph890 ], [ %.2732888.ph, %.lr.ph890.preheader1274 ]
  %.11887 = phi i64 [ %765, %.lr.ph890 ], [ %.11887.ph, %.lr.ph890.preheader1274 ]
  %753 = getelementptr inbounds double, ptr %64, i64 %.2732888
  %754 = load double, ptr %753, align 8, !tbaa !9
  %755 = fcmp oge double %754, 0.000000e+00
  %756 = fneg double %754
  %757 = select i1 %755, double %754, double %756
  %.idx782 = shl i64 %.11887, 4
  %758 = getelementptr i8, ptr %54, i64 %.idx782
  %759 = getelementptr i8, ptr %758, i64 -8
  store double %757, ptr %759, align 8, !tbaa !9
  %760 = getelementptr inbounds double, ptr %63, i64 %.2732888
  %761 = load double, ptr %760, align 8, !tbaa !9
  %762 = fmul double %761, %761
  %763 = fmul double %757, %762
  store double %763, ptr %758, align 8, !tbaa !9
  %764 = add nsw i64 %.2732888, 1
  %765 = add nuw nsw i64 %.11887, 1
  %exitcond960.not = icmp eq i64 %765, %730
  br i1 %exitcond960.not, label %._crit_edge891, label %.lr.ph890, !llvm.loop !62

._crit_edge891:                                   ; preds = %.lr.ph890, %middle.block1140, %724
  %766 = getelementptr inbounds double, ptr %64, i64 %186
  %767 = load double, ptr %766, align 8, !tbaa !9
  %768 = fcmp oge double %767, 0.000000e+00
  %769 = fneg double %767
  %770 = select i1 %768, double %767, double %769
  %.idx774 = shl i64 %730, 4
  %771 = getelementptr i8, ptr %54, i64 %.idx774
  %772 = getelementptr i8, ptr %771, i64 -8
  store double %770, ptr %772, align 8, !tbaa !9
  store double 0.000000e+00, ptr %771, align 8, !tbaa !9
  %773 = call i32 @dlasq2_(ptr noundef nonnull %39, ptr noundef nonnull %22, ptr noundef nonnull %51) #6
  %774 = load i64, ptr %51, align 8, !tbaa !5
  %.not776 = icmp eq i64 %774, 0
  br i1 %.not776, label %776, label %775

775:                                              ; preds = %._crit_edge891
  store i64 -5, ptr %24, align 8, !tbaa !5
  br label %.loopexit822

776:                                              ; preds = %._crit_edge891
  %777 = load i64, ptr %39, align 8, !tbaa !5
  %.not777892 = icmp slt i64 %777, 1
  br i1 %.not777892, label %._crit_edge896, label %.lr.ph895

778:                                              ; preds = %.lr.ph895
  %779 = add nuw i64 %.12893, 1
  %exitcond961.not = icmp eq i64 %.12893, %777
  br i1 %exitcond961.not, label %._crit_edge896, label %.lr.ph895, !llvm.loop !63

.lr.ph895:                                        ; preds = %776, %778
  %.12893 = phi i64 [ %779, %778 ], [ 1, %776 ]
  %780 = getelementptr inbounds double, ptr %54, i64 %.12893
  %781 = load double, ptr %780, align 8, !tbaa !9
  %782 = fcmp olt double %781, 0.000000e+00
  br i1 %782, label %783, label %778

783:                                              ; preds = %.lr.ph895
  store i64 -6, ptr %24, align 8, !tbaa !5
  br label %.loopexit822

._crit_edge896:                                   ; preds = %778, %776
  %784 = fcmp ogt double %.0700805, 0.000000e+00
  %785 = load i64, ptr %49, align 8, !tbaa !5
  %786 = load i64, ptr %48, align 8, !tbaa !5
  %.not779901 = icmp sgt i64 %786, %785
  br i1 %784, label %787, label %821

787:                                              ; preds = %._crit_edge896
  br i1 %.not779901, label %.loopexit820, label %.lr.ph904.preheader

.lr.ph904.preheader:                              ; preds = %787
  %788 = add i64 %785, %786
  %789 = and i64 %788, 1
  %lcmp.mod1296.not.not = icmp eq i64 %789, 0
  br i1 %lcmp.mod1296.not.not, label %.lr.ph904.prol, label %.lr.ph904.prol.loopexit

.lr.ph904.prol:                                   ; preds = %.lr.ph904.preheader
  %790 = load i64, ptr %14, align 8, !tbaa !5
  %791 = add nsw i64 %790, 1
  store i64 %791, ptr %14, align 8, !tbaa !5
  %792 = sub nsw i64 %777, %786
  %793 = getelementptr double, ptr %22, i64 %792
  %794 = load double, ptr %793, align 8, !tbaa !9
  %795 = getelementptr double, ptr %15, i64 %790
  store double %794, ptr %795, align 8, !tbaa !9
  %796 = getelementptr i64, ptr %18, i64 %790
  store i64 %.0721931, ptr %796, align 8, !tbaa !5
  %797 = load i64, ptr %14, align 8, !tbaa !5
  %798 = getelementptr inbounds i64, ptr %56, i64 %797
  store i64 %786, ptr %798, align 8, !tbaa !5
  %799 = add i64 %786, 1
  br label %.lr.ph904.prol.loopexit

.lr.ph904.prol.loopexit:                          ; preds = %.lr.ph904.prol, %.lr.ph904.preheader
  %.13902.unr = phi i64 [ %786, %.lr.ph904.preheader ], [ %799, %.lr.ph904.prol ]
  %800 = icmp eq i64 %785, %786
  br i1 %800, label %.loopexit820, label %.lr.ph904

.lr.ph904:                                        ; preds = %.lr.ph904.prol.loopexit, %.lr.ph904
  %.13902 = phi i64 [ %820, %.lr.ph904 ], [ %.13902.unr, %.lr.ph904.prol.loopexit ]
  %801 = load i64, ptr %14, align 8, !tbaa !5
  %802 = add nsw i64 %801, 1
  store i64 %802, ptr %14, align 8, !tbaa !5
  %803 = sub nsw i64 %777, %.13902
  %804 = getelementptr double, ptr %22, i64 %803
  %805 = load double, ptr %804, align 8, !tbaa !9
  %806 = getelementptr double, ptr %15, i64 %801
  store double %805, ptr %806, align 8, !tbaa !9
  %807 = getelementptr i64, ptr %18, i64 %801
  store i64 %.0721931, ptr %807, align 8, !tbaa !5
  %808 = load i64, ptr %14, align 8, !tbaa !5
  %809 = getelementptr inbounds i64, ptr %56, i64 %808
  store i64 %.13902, ptr %809, align 8, !tbaa !5
  %810 = add i64 %.13902, 1
  %811 = load i64, ptr %14, align 8, !tbaa !5
  %812 = add nsw i64 %811, 1
  store i64 %812, ptr %14, align 8, !tbaa !5
  %813 = sub nsw i64 %777, %810
  %814 = getelementptr double, ptr %22, i64 %813
  %815 = load double, ptr %814, align 8, !tbaa !9
  %816 = getelementptr double, ptr %15, i64 %811
  store double %815, ptr %816, align 8, !tbaa !9
  %817 = getelementptr i64, ptr %18, i64 %811
  store i64 %.0721931, ptr %817, align 8, !tbaa !5
  %818 = load i64, ptr %14, align 8, !tbaa !5
  %819 = getelementptr inbounds i64, ptr %56, i64 %818
  store i64 %810, ptr %819, align 8, !tbaa !5
  %820 = add i64 %.13902, 2
  %exitcond963.not.1 = icmp eq i64 %810, %785
  br i1 %exitcond963.not.1, label %.loopexit820, label %.lr.ph904, !llvm.loop !64

821:                                              ; preds = %._crit_edge896
  br i1 %.not779901, label %.loopexit820, label %.lr.ph900.preheader

.lr.ph900.preheader:                              ; preds = %821
  %822 = add i64 %785, %786
  %823 = and i64 %822, 1
  %lcmp.mod1294.not.not = icmp eq i64 %823, 0
  br i1 %lcmp.mod1294.not.not, label %.lr.ph900.prol, label %.lr.ph900.prol.loopexit

.lr.ph900.prol:                                   ; preds = %.lr.ph900.preheader
  %824 = load i64, ptr %14, align 8, !tbaa !5
  %825 = add nsw i64 %824, 1
  store i64 %825, ptr %14, align 8, !tbaa !5
  %826 = getelementptr inbounds double, ptr %54, i64 %786
  %827 = load double, ptr %826, align 8, !tbaa !9
  %828 = fneg double %827
  %829 = getelementptr double, ptr %15, i64 %824
  store double %828, ptr %829, align 8, !tbaa !9
  %830 = getelementptr i64, ptr %18, i64 %824
  store i64 %.0721931, ptr %830, align 8, !tbaa !5
  %831 = load i64, ptr %14, align 8, !tbaa !5
  %832 = getelementptr inbounds i64, ptr %56, i64 %831
  store i64 %786, ptr %832, align 8, !tbaa !5
  %833 = add i64 %786, 1
  br label %.lr.ph900.prol.loopexit

.lr.ph900.prol.loopexit:                          ; preds = %.lr.ph900.prol, %.lr.ph900.preheader
  %.14898.unr = phi i64 [ %786, %.lr.ph900.preheader ], [ %833, %.lr.ph900.prol ]
  %834 = icmp eq i64 %785, %786
  br i1 %834, label %.loopexit820, label %.lr.ph900

.lr.ph900:                                        ; preds = %.lr.ph900.prol.loopexit, %.lr.ph900
  %.14898 = phi i64 [ %854, %.lr.ph900 ], [ %.14898.unr, %.lr.ph900.prol.loopexit ]
  %835 = load i64, ptr %14, align 8, !tbaa !5
  %836 = add nsw i64 %835, 1
  store i64 %836, ptr %14, align 8, !tbaa !5
  %837 = getelementptr inbounds double, ptr %54, i64 %.14898
  %838 = load double, ptr %837, align 8, !tbaa !9
  %839 = fneg double %838
  %840 = getelementptr double, ptr %15, i64 %835
  store double %839, ptr %840, align 8, !tbaa !9
  %841 = getelementptr i64, ptr %18, i64 %835
  store i64 %.0721931, ptr %841, align 8, !tbaa !5
  %842 = load i64, ptr %14, align 8, !tbaa !5
  %843 = getelementptr inbounds i64, ptr %56, i64 %842
  store i64 %.14898, ptr %843, align 8, !tbaa !5
  %844 = add i64 %.14898, 1
  %845 = load i64, ptr %14, align 8, !tbaa !5
  %846 = add nsw i64 %845, 1
  store i64 %846, ptr %14, align 8, !tbaa !5
  %847 = getelementptr double, ptr %22, i64 %.14898
  %848 = load double, ptr %847, align 8, !tbaa !9
  %849 = fneg double %848
  %850 = getelementptr double, ptr %15, i64 %845
  store double %849, ptr %850, align 8, !tbaa !9
  %851 = getelementptr i64, ptr %18, i64 %845
  store i64 %.0721931, ptr %851, align 8, !tbaa !5
  %852 = load i64, ptr %14, align 8, !tbaa !5
  %853 = getelementptr inbounds i64, ptr %56, i64 %852
  store i64 %844, ptr %853, align 8, !tbaa !5
  %854 = add i64 %.14898, 2
  %exitcond962.not.1 = icmp eq i64 %844, %785
  br i1 %exitcond962.not.1, label %.loopexit820, label %.lr.ph900, !llvm.loop !65

.loopexit820:                                     ; preds = %.lr.ph900.prol.loopexit, %.lr.ph900, %.lr.ph904.prol.loopexit, %.lr.ph904, %821, %787
  %855 = load i64, ptr %14, align 8, !tbaa !5
  %856 = sub nsw i64 %855, %.3728
  %.not780.not905 = icmp sgt i64 %.3728, 0
  br i1 %.not780.not905, label %.lr.ph908.preheader, label %._crit_edge909

.lr.ph908.preheader:                              ; preds = %.loopexit820
  %857 = add i64 %855, 1
  %858 = sub i64 %857, %.3728
  %smax = call i64 @llvm.smax.i64(i64 %855, i64 %858)
  %859 = add i64 %.3728, %smax
  %860 = sub i64 %859, %855
  %min.iters.check1103 = icmp ult i64 %860, 4
  %or.cond = or i1 %min.iters.check1103, %diff.check1100
  br i1 %or.cond, label %.lr.ph908.preheader1272, label %vector.ph1104

vector.ph1104:                                    ; preds = %.lr.ph908.preheader
  %n.vec1106 = and i64 %860, -4
  %ind.end1107 = add i64 %856, %n.vec1106
  %broadcast.splatinsert1114 = insertelement <2 x double> poison, double %729, i64 0
  %broadcast.splat1115 = shufflevector <2 x double> %broadcast.splatinsert1114, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1109

vector.body1109:                                  ; preds = %vector.body1109, %vector.ph1104
  %index1110 = phi i64 [ 0, %vector.ph1104 ], [ %index.next1116, %vector.body1109 ]
  %offset.idx1111 = add i64 %856, %index1110
  %861 = getelementptr double, ptr %15, i64 %offset.idx1111
  %862 = getelementptr i8, ptr %861, i64 16
  %wide.load1112 = load <2 x double>, ptr %861, align 8, !tbaa !9
  %wide.load1113 = load <2 x double>, ptr %862, align 8, !tbaa !9
  %863 = fcmp oge <2 x double> %wide.load1112, zeroinitializer
  %864 = fcmp oge <2 x double> %wide.load1113, zeroinitializer
  %865 = fneg <2 x double> %wide.load1112
  %866 = fneg <2 x double> %wide.load1113
  %867 = select <2 x i1> %863, <2 x double> %wide.load1112, <2 x double> %865
  %868 = select <2 x i1> %864, <2 x double> %wide.load1113, <2 x double> %866
  %869 = fmul <2 x double> %broadcast.splat1115, %867
  %870 = fmul <2 x double> %broadcast.splat1115, %868
  %871 = getelementptr double, ptr %16, i64 %offset.idx1111
  %872 = getelementptr i8, ptr %871, i64 16
  store <2 x double> %869, ptr %871, align 8, !tbaa !9
  store <2 x double> %870, ptr %872, align 8, !tbaa !9
  %index.next1116 = add nuw i64 %index1110, 4
  %873 = icmp eq i64 %index.next1116, %n.vec1106
  br i1 %873, label %middle.block1101, label %vector.body1109, !llvm.loop !66

middle.block1101:                                 ; preds = %vector.body1109
  %cmp.n1117 = icmp eq i64 %860, %n.vec1106
  br i1 %cmp.n1117, label %._crit_edge909, label %.lr.ph908.preheader1272

.lr.ph908.preheader1272:                          ; preds = %middle.block1101, %.lr.ph908.preheader
  %.15.in906.ph = phi i64 [ %856, %.lr.ph908.preheader ], [ %ind.end1107, %middle.block1101 ]
  br label %.lr.ph908

.lr.ph908:                                        ; preds = %.lr.ph908.preheader1272, %.lr.ph908
  %.15.in906 = phi i64 [ %.15, %.lr.ph908 ], [ %.15.in906.ph, %.lr.ph908.preheader1272 ]
  %.15 = add nsw i64 %.15.in906, 1
  %874 = getelementptr double, ptr %15, i64 %.15.in906
  %875 = load double, ptr %874, align 8, !tbaa !9
  %876 = fcmp oge double %875, 0.000000e+00
  %877 = fneg double %875
  %878 = select i1 %876, double %875, double %877
  %879 = fmul double %729, %878
  %880 = getelementptr double, ptr %16, i64 %.15.in906
  store double %879, ptr %880, align 8, !tbaa !9
  %.not780.not = icmp slt i64 %.15, %855
  br i1 %.not780.not, label %.lr.ph908, label %._crit_edge909, !llvm.loop !67

._crit_edge909:                                   ; preds = %.lr.ph908, %middle.block1101, %.loopexit820
  %881 = add nsw i64 %855, -1
  store i64 %881, ptr %35, align 8, !tbaa !5
  %.not781.not910 = icmp slt i64 %856, %881
  br i1 %.not781.not910, label %.lr.ph913.preheader, label %._crit_edge914

.lr.ph913.preheader:                              ; preds = %._crit_edge909
  %882 = add i64 %.3728, -1
  %min.iters.check1080 = icmp ult i64 %882, 4
  br i1 %min.iters.check1080, label %.lr.ph913.preheader1271, label %vector.memcheck1063

vector.memcheck1063:                              ; preds = %.lr.ph913.preheader
  %883 = shl i64 %855, 3
  %884 = sub i64 %855, %.3728
  %885 = shl i64 %884, 3
  %scevgep1064 = getelementptr i8, ptr %17, i64 %885
  %scevgep1066 = getelementptr i8, ptr %scevgep1065, i64 %883
  %scevgep1067 = getelementptr i8, ptr %15, i64 %885
  %scevgep1068 = getelementptr i8, ptr %15, i64 %883
  %scevgep1069 = getelementptr i8, ptr %16, i64 %885
  %scevgep1070 = getelementptr i8, ptr %16, i64 %883
  %bound01071 = icmp ult ptr %scevgep1064, %scevgep1068
  %bound11072 = icmp ult ptr %scevgep1067, %scevgep1066
  %found.conflict1073 = and i1 %bound01071, %bound11072
  %bound01074 = icmp ult ptr %scevgep1064, %scevgep1070
  %bound11075 = icmp ult ptr %scevgep1069, %scevgep1066
  %found.conflict1076 = and i1 %bound01074, %bound11075
  %conflict.rdx1077 = or i1 %found.conflict1073, %found.conflict1076
  br i1 %conflict.rdx1077, label %.lr.ph913.preheader1271, label %vector.ph1081

vector.ph1081:                                    ; preds = %vector.memcheck1063
  %n.vec1083 = and i64 %882, -4
  %ind.end1084 = add i64 %856, %n.vec1083
  br label %vector.body1086

vector.body1086:                                  ; preds = %vector.body1086, %vector.ph1081
  %index1087 = phi i64 [ 0, %vector.ph1081 ], [ %index.next1097, %vector.body1086 ]
  %offset.idx1088 = add i64 %856, %index1087
  %886 = add nsw i64 %offset.idx1088, 1
  %887 = getelementptr double, ptr %15, i64 %886
  %888 = getelementptr i8, ptr %887, i64 16
  %wide.load1089 = load <2 x double>, ptr %887, align 8, !tbaa !9, !alias.scope !68
  %wide.load1090 = load <2 x double>, ptr %888, align 8, !tbaa !9, !alias.scope !68
  %889 = getelementptr double, ptr %16, i64 %886
  %890 = getelementptr i8, ptr %889, i64 16
  %wide.load1091 = load <2 x double>, ptr %889, align 8, !tbaa !9, !alias.scope !71
  %wide.load1092 = load <2 x double>, ptr %890, align 8, !tbaa !9, !alias.scope !71
  %891 = fsub <2 x double> %wide.load1089, %wide.load1091
  %892 = fsub <2 x double> %wide.load1090, %wide.load1092
  %893 = getelementptr double, ptr %15, i64 %offset.idx1088
  %894 = getelementptr i8, ptr %893, i64 16
  %wide.load1093 = load <2 x double>, ptr %893, align 8, !tbaa !9, !alias.scope !68
  %wide.load1094 = load <2 x double>, ptr %894, align 8, !tbaa !9, !alias.scope !68
  %895 = getelementptr double, ptr %16, i64 %offset.idx1088
  %896 = getelementptr i8, ptr %895, i64 16
  %wide.load1095 = load <2 x double>, ptr %895, align 8, !tbaa !9, !alias.scope !71
  %wide.load1096 = load <2 x double>, ptr %896, align 8, !tbaa !9, !alias.scope !71
  %897 = fadd <2 x double> %wide.load1093, %wide.load1095
  %898 = fadd <2 x double> %wide.load1094, %wide.load1096
  %899 = fsub <2 x double> %891, %897
  %900 = fsub <2 x double> %892, %898
  %901 = fcmp ole <2 x double> %899, zeroinitializer
  %902 = fcmp ole <2 x double> %900, zeroinitializer
  %903 = select <2 x i1> %901, <2 x double> zeroinitializer, <2 x double> %899
  %904 = select <2 x i1> %902, <2 x double> zeroinitializer, <2 x double> %900
  %905 = getelementptr double, ptr %17, i64 %offset.idx1088
  %906 = getelementptr i8, ptr %905, i64 16
  store <2 x double> %903, ptr %905, align 8, !tbaa !9, !alias.scope !73, !noalias !75
  store <2 x double> %904, ptr %906, align 8, !tbaa !9, !alias.scope !73, !noalias !75
  %index.next1097 = add nuw i64 %index1087, 4
  %907 = icmp eq i64 %index.next1097, %n.vec1083
  br i1 %907, label %middle.block1078, label %vector.body1086, !llvm.loop !76

middle.block1078:                                 ; preds = %vector.body1086
  %cmp.n1098 = icmp eq i64 %882, %n.vec1083
  br i1 %cmp.n1098, label %._crit_edge914, label %.lr.ph913.preheader1271

.lr.ph913.preheader1271:                          ; preds = %middle.block1078, %vector.memcheck1063, %.lr.ph913.preheader
  %.16.in911.ph = phi i64 [ %856, %vector.memcheck1063 ], [ %856, %.lr.ph913.preheader ], [ %ind.end1084, %middle.block1078 ]
  br label %.lr.ph913

.lr.ph913:                                        ; preds = %.lr.ph913.preheader1271, %.lr.ph913
  %.16.in911 = phi i64 [ %.16, %.lr.ph913 ], [ %.16.in911.ph, %.lr.ph913.preheader1271 ]
  %.16 = add nsw i64 %.16.in911, 1
  %908 = getelementptr double, ptr %15, i64 %.16
  %909 = load double, ptr %908, align 8, !tbaa !9
  %910 = getelementptr double, ptr %16, i64 %.16
  %911 = load double, ptr %910, align 8, !tbaa !9
  %912 = fsub double %909, %911
  %913 = getelementptr double, ptr %15, i64 %.16.in911
  %914 = load double, ptr %913, align 8, !tbaa !9
  %915 = getelementptr double, ptr %16, i64 %.16.in911
  %916 = load double, ptr %915, align 8, !tbaa !9
  %917 = fadd double %914, %916
  %918 = fsub double %912, %917
  %919 = fcmp ole double %918, 0.000000e+00
  %920 = select i1 %919, double 0.000000e+00, double %918
  %921 = getelementptr double, ptr %17, i64 %.16.in911
  store double %920, ptr %921, align 8, !tbaa !9
  %exitcond964.not = icmp eq i64 %.16, %881
  br i1 %exitcond964.not, label %._crit_edge914, label %.lr.ph913, !llvm.loop !77

._crit_edge914:                                   ; preds = %.lr.ph913, %middle.block1078, %._crit_edge909
  %922 = load double, ptr %3, align 8, !tbaa !9
  %923 = fsub double %922, %.3711879
  %924 = getelementptr inbounds double, ptr %60, i64 %855
  %925 = load double, ptr %924, align 8, !tbaa !9
  %926 = getelementptr inbounds double, ptr %59, i64 %855
  %927 = load double, ptr %926, align 8, !tbaa !9
  %928 = fadd double %925, %927
  %929 = fsub double %923, %928
  %930 = fcmp ole double %929, 0.000000e+00
  %931 = select i1 %930, double 0.000000e+00, double %929
  %932 = getelementptr inbounds double, ptr %58, i64 %855
  store double %931, ptr %932, align 8, !tbaa !9
  br label %.loopexit819

.loopexit819:                                     ; preds = %.lr.ph928.prol.loopexit, %.lr.ph928, %689, %._crit_edge914
  %933 = add nsw i64 %.2715, 1
  br label %934

934:                                              ; preds = %217, %._crit_edge850.thread, %.loopexit819
  %.4729 = phi i64 [ %.0725930, %217 ], [ 0, %._crit_edge850.thread ], [ %.3728, %.loopexit819 ]
  %.3716 = phi i64 [ %.0713933, %217 ], [ %.0713933, %._crit_edge850.thread ], [ %.2715, %.loopexit819 ]
  %.2699 = phi i64 [ %.1698, %217 ], [ %.0697936, %._crit_edge850.thread ], [ %933, %.loopexit819 ]
  %.3 = phi i64 [ %.0696937, %217 ], [ %.0696937, %._crit_edge850.thread ], [ %.2, %.loopexit819 ]
  %.1703 = add nsw i64 %186, 1
  %935 = add nuw i64 %.0721931, 1
  %exitcond968.not = icmp eq i64 %.0721931, %171
  br i1 %exitcond968.not, label %.loopexit822, label %184, !llvm.loop !78

.loopexit822:                                     ; preds = %934, %.loopexit823, %783, %775, %688, %567, %340, %333, %141, %99
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  ret i32 0
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

declare i32 @dlarra_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dlarrd_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dlarrk_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

declare i32 @dlarrc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @f2c_dcopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dlarnv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dlarrb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @log(double noundef) local_unnamed_addr #3

declare i32 @dlasq2_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #5

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

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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 = !{!"long", !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, !15}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !12, !14}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = !{!20}
!20 = distinct !{!20, !21}
!21 = distinct !{!21, !"LVerDomain"}
!22 = !{!23}
!23 = distinct !{!23, !21}
!24 = !{!25}
!25 = distinct !{!25, !21}
!26 = !{!20, !23}
!27 = distinct !{!27, !12, !14, !15}
!28 = distinct !{!28, !12, !14}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12, !14, !15}
!31 = distinct !{!31, !12, !15, !14}
!32 = distinct !{!32, !12}
!33 = !{!34}
!34 = distinct !{!34, !35}
!35 = distinct !{!35, !"LVerDomain"}
!36 = !{!37}
!37 = distinct !{!37, !35}
!38 = !{!39, !40, !34}
!39 = distinct !{!39, !35}
!40 = distinct !{!40, !35}
!41 = !{!40}
!42 = !{!39}
!43 = !{!40, !34}
!44 = distinct !{!44, !12, !14, !15}
!45 = distinct !{!45, !12, !14}
!46 = !{!47}
!47 = distinct !{!47, !48}
!48 = distinct !{!48, !"LVerDomain"}
!49 = !{!50}
!50 = distinct !{!50, !48}
!51 = distinct !{!51, !12, !14, !15}
!52 = distinct !{!52, !12, !14}
!53 = distinct !{!53, !12, !14, !15}
!54 = distinct !{!54, !12, !14}
!55 = distinct !{!55, !12}
!56 = !{!57}
!57 = distinct !{!57, !58}
!58 = distinct !{!58, !"LVerDomain"}
!59 = !{!60}
!60 = distinct !{!60, !58}
!61 = distinct !{!61, !12, !14, !15}
!62 = distinct !{!62, !12, !14}
!63 = distinct !{!63, !12}
!64 = distinct !{!64, !12}
!65 = distinct !{!65, !12}
!66 = distinct !{!66, !12, !14, !15}
!67 = distinct !{!67, !12, !14}
!68 = !{!69}
!69 = distinct !{!69, !70}
!70 = distinct !{!70, !"LVerDomain"}
!71 = !{!72}
!72 = distinct !{!72, !70}
!73 = !{!74}
!74 = distinct !{!74, !70}
!75 = !{!69, !72}
!76 = distinct !{!76, !12, !14, !15}
!77 = distinct !{!77, !12, !14}
!78 = distinct !{!78, !12}


; Effective O3 passes: ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass