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

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

@c__10 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.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
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

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

139:                                              ; preds = %21
  %140 = load ptr, ptr %41, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = icmp eq i32 %141, -1
  br label %143

143:                                              ; preds = %139, %21
  %144 = phi i1 [ true, %21 ], [ %142, %139 ]
  %145 = zext i1 %144 to i32
  store i32 %145, ptr %91, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  %146 = load ptr, ptr %25, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = mul nsw i32 %147, 26
  store i32 %148, ptr %48, align 4, !tbaa !9
  %149 = load i32, ptr %47, align 4, !tbaa !9
  %150 = load i32, ptr %48, align 4, !tbaa !9
  %151 = icmp sge i32 %149, %150
  br i1 %151, label %152, label %154

152:                                              ; preds = %143
  %153 = load i32, ptr %47, align 4, !tbaa !9
  br label %156

154:                                              ; preds = %143
  %155 = load i32, ptr %48, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %154, %152
  %157 = phi i32 [ %153, %152 ], [ %155, %154 ]
  store i32 %157, ptr %65, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  %158 = load ptr, ptr %25, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = mul nsw i32 %159, 10
  store i32 %160, ptr %48, align 4, !tbaa !9
  %161 = load i32, ptr %47, align 4, !tbaa !9
  %162 = load i32, ptr %48, align 4, !tbaa !9
  %163 = icmp sge i32 %161, %162
  br i1 %163, label %164, label %166

164:                                              ; preds = %156
  %165 = load i32, ptr %47, align 4, !tbaa !9
  br label %168

166:                                              ; preds = %156
  %167 = load i32, ptr %48, align 4, !tbaa !9
  br label %168

168:                                              ; preds = %166, %164
  %169 = phi i32 [ %165, %164 ], [ %167, %166 ]
  store i32 %169, ptr %84, align 4, !tbaa !9
  %170 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %170, align 4, !tbaa !9
  %171 = load i32, ptr %67, align 4, !tbaa !9
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %179, label %173

173:                                              ; preds = %168
  %174 = load ptr, ptr %22, align 8, !tbaa !5
  %175 = call i32 @lsame_(ptr noundef %174, ptr noundef @.str.1)
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %179, label %177

177:                                              ; preds = %173
  %178 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %178, align 4, !tbaa !9
  br label %291

179:                                              ; preds = %173, %168
  %180 = load i32, ptr %70, align 4, !tbaa !9
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %190, label %182

182:                                              ; preds = %179
  %183 = load i32, ptr %76, align 4, !tbaa !9
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %190, label %185

185:                                              ; preds = %182
  %186 = load i32, ptr %71, align 4, !tbaa !9
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %190, label %188

188:                                              ; preds = %185
  %189 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %189, align 4, !tbaa !9
  br label %290

190:                                              ; preds = %185, %182, %179
  %191 = load i32, ptr %66, align 4, !tbaa !9
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %199, label %193

193:                                              ; preds = %190
  %194 = load ptr, ptr %24, align 8, !tbaa !5
  %195 = call i32 @lsame_(ptr noundef %194, ptr noundef @.str.6)
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %199, label %197

197:                                              ; preds = %193
  %198 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %198, align 4, !tbaa !9
  br label %289

199:                                              ; preds = %193, %190
  %200 = load ptr, ptr %25, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = icmp slt i32 %201, 0
  br i1 %202, label %203, label %205

203:                                              ; preds = %199
  %204 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -4, ptr %204, align 4, !tbaa !9
  br label %288

205:                                              ; preds = %199
  %206 = load ptr, ptr %27, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = load ptr, ptr %25, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = icmp sge i32 1, %209
  br i1 %210, label %211, label %212

211:                                              ; preds = %205
  br label %215

212:                                              ; preds = %205
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %212, %211
  %216 = phi i32 [ 1, %211 ], [ %214, %212 ]
  %217 = icmp slt i32 %207, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %215
  %219 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -6, ptr %219, align 4, !tbaa !9
  br label %287

220:                                              ; preds = %215
  %221 = load i32, ptr %76, align 4, !tbaa !9
  %222 = icmp ne i32 %221, 0
  br i1 %222, label %223, label %236

223:                                              ; preds = %220
  %224 = load ptr, ptr %25, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = icmp sgt i32 %225, 0
  br i1 %226, label %227, label %235

227:                                              ; preds = %223
  %228 = load ptr, ptr %29, align 8, !tbaa !5
  %229 = load double, ptr %228, align 8, !tbaa !11
  %230 = load ptr, ptr %28, align 8, !tbaa !5
  %231 = load double, ptr %230, align 8, !tbaa !11
  %232 = fcmp ole double %229, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %227
  %234 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -8, ptr %234, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %233, %227, %223
  br label %286

236:                                              ; preds = %220
  %237 = load i32, ptr %71, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %239, label %285

239:                                              ; preds = %236
  %240 = load ptr, ptr %30, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = icmp slt i32 %241, 1
  br i1 %242, label %256, label %243

243:                                              ; preds = %239
  %244 = load ptr, ptr %30, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = load ptr, ptr %25, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = icmp sge i32 1, %247
  br i1 %248, label %249, label %250

249:                                              ; preds = %243
  br label %253

250:                                              ; preds = %243
  %251 = load ptr, ptr %25, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %250, %249
  %254 = phi i32 [ 1, %249 ], [ %252, %250 ]
  %255 = icmp sgt i32 %245, %254
  br i1 %255, label %256, label %258

256:                                              ; preds = %253, %239
  %257 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %257, align 4, !tbaa !9
  br label %284

258:                                              ; preds = %253
  %259 = load ptr, ptr %31, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = load ptr, ptr %25, align 8, !tbaa !5
  %262 = load i32, ptr %261, align 4, !tbaa !9
  %263 = load ptr, ptr %30, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp sle i32 %262, %264
  br i1 %265, label %266, label %269

266:                                              ; preds = %258
  %267 = load ptr, ptr %25, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  br label %272

269:                                              ; preds = %258
  %270 = load ptr, ptr %30, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  br label %272

272:                                              ; preds = %269, %266
  %273 = phi i32 [ %268, %266 ], [ %271, %269 ]
  %274 = icmp slt i32 %260, %273
  br i1 %274, label %281, label %275

275:                                              ; preds = %272
  %276 = load ptr, ptr %31, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = load ptr, ptr %25, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = icmp sgt i32 %277, %279
  br i1 %280, label %281, label %283

281:                                              ; preds = %275, %272
  %282 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -10, ptr %282, align 4, !tbaa !9
  br label %283

283:                                              ; preds = %281, %275
  br label %284

284:                                              ; preds = %283, %256
  br label %285

285:                                              ; preds = %284, %236
  br label %286

286:                                              ; preds = %285, %235
  br label %287

287:                                              ; preds = %286, %218
  br label %288

288:                                              ; preds = %287, %203
  br label %289

289:                                              ; preds = %288, %197
  br label %290

290:                                              ; preds = %289, %188
  br label %291

291:                                              ; preds = %290, %177
  %292 = load ptr, ptr %42, align 8, !tbaa !5
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = icmp eq i32 %293, 0
  br i1 %294, label %295, label %333

295:                                              ; preds = %291
  %296 = load ptr, ptr %36, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = icmp slt i32 %297, 1
  br i1 %298, label %308, label %299

299:                                              ; preds = %295
  %300 = load i32, ptr %67, align 4, !tbaa !9
  %301 = icmp ne i32 %300, 0
  br i1 %301, label %302, label %310

302:                                              ; preds = %299
  %303 = load ptr, ptr %36, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = load ptr, ptr %25, align 8, !tbaa !5
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = icmp slt i32 %304, %306
  br i1 %307, label %308, label %310

308:                                              ; preds = %302, %295
  %309 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -15, ptr %309, align 4, !tbaa !9
  br label %332

310:                                              ; preds = %302, %299
  %311 = load ptr, ptr %39, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = load i32, ptr %65, align 4, !tbaa !9
  %314 = icmp slt i32 %312, %313
  br i1 %314, label %315, label %320

315:                                              ; preds = %310
  %316 = load i32, ptr %91, align 4, !tbaa !9
  %317 = icmp ne i32 %316, 0
  br i1 %317, label %320, label %318

318:                                              ; preds = %315
  %319 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -18, ptr %319, align 4, !tbaa !9
  br label %331

320:                                              ; preds = %315, %310
  %321 = load ptr, ptr %41, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = load i32, ptr %84, align 4, !tbaa !9
  %324 = icmp slt i32 %322, %323
  br i1 %324, label %325, label %330

325:                                              ; preds = %320
  %326 = load i32, ptr %91, align 4, !tbaa !9
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %330, label %328

328:                                              ; preds = %325
  %329 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -20, ptr %329, align 4, !tbaa !9
  br label %330

330:                                              ; preds = %328, %325, %320
  br label %331

331:                                              ; preds = %330, %318
  br label %332

332:                                              ; preds = %331, %308
  br label %333

333:                                              ; preds = %332, %291
  %334 = load ptr, ptr %42, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = icmp eq i32 %335, 0
  br i1 %336, label %337, label %375

337:                                              ; preds = %333
  %338 = load ptr, ptr %24, align 8, !tbaa !5
  %339 = load ptr, ptr %25, align 8, !tbaa !5
  %340 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef %338, ptr noundef %339, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %340, ptr %68, align 4, !tbaa !9
  %341 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %341, ptr %47, align 4, !tbaa !9
  %342 = load ptr, ptr %24, align 8, !tbaa !5
  %343 = load ptr, ptr %25, align 8, !tbaa !5
  %344 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef %342, ptr noundef %343, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %344, ptr %48, align 4, !tbaa !9
  %345 = load i32, ptr %47, align 4, !tbaa !9
  %346 = load i32, ptr %48, align 4, !tbaa !9
  %347 = icmp sge i32 %345, %346
  br i1 %347, label %348, label %350

348:                                              ; preds = %337
  %349 = load i32, ptr %47, align 4, !tbaa !9
  br label %352

350:                                              ; preds = %337
  %351 = load i32, ptr %48, align 4, !tbaa !9
  br label %352

352:                                              ; preds = %350, %348
  %353 = phi i32 [ %349, %348 ], [ %351, %350 ]
  store i32 %353, ptr %68, align 4, !tbaa !9
  %354 = load i32, ptr %68, align 4, !tbaa !9
  %355 = add nsw i32 %354, 1
  %356 = load ptr, ptr %25, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = mul nsw i32 %355, %357
  store i32 %358, ptr %47, align 4, !tbaa !9
  %359 = load i32, ptr %47, align 4, !tbaa !9
  %360 = load i32, ptr %65, align 4, !tbaa !9
  %361 = icmp sge i32 %359, %360
  br i1 %361, label %362, label %364

362:                                              ; preds = %352
  %363 = load i32, ptr %47, align 4, !tbaa !9
  br label %366

364:                                              ; preds = %352
  %365 = load i32, ptr %65, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %364, %362
  %367 = phi i32 [ %363, %362 ], [ %365, %364 ]
  store i32 %367, ptr %90, align 4, !tbaa !9
  %368 = load i32, ptr %90, align 4, !tbaa !9
  %369 = sitofp i32 %368 to double
  %370 = load ptr, ptr %38, align 8, !tbaa !5
  %371 = getelementptr inbounds double, ptr %370, i64 1
  store double %369, ptr %371, align 8, !tbaa !11
  %372 = load i32, ptr %84, align 4, !tbaa !9
  %373 = load ptr, ptr %40, align 8, !tbaa !5
  %374 = getelementptr inbounds i32, ptr %373, i64 1
  store i32 %372, ptr %374, align 4, !tbaa !9
  br label %375

375:                                              ; preds = %366, %333
  %376 = load ptr, ptr %42, align 8, !tbaa !5
  %377 = load i32, ptr %376, align 4, !tbaa !9
  %378 = icmp ne i32 %377, 0
  br i1 %378, label %379, label %384

379:                                              ; preds = %375
  %380 = load ptr, ptr %42, align 8, !tbaa !5
  %381 = load i32, ptr %380, align 4, !tbaa !9
  %382 = sub nsw i32 0, %381
  store i32 %382, ptr %47, align 4, !tbaa !9
  %383 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %47, i32 noundef 6)
  store i32 1, ptr %96, align 4
  br label %1040

384:                                              ; preds = %375
  %385 = load i32, ptr %91, align 4, !tbaa !9
  %386 = icmp ne i32 %385, 0
  br i1 %386, label %387, label %388

387:                                              ; preds = %384
  store i32 1, ptr %96, align 4
  br label %1040

388:                                              ; preds = %384
  br label %389

389:                                              ; preds = %388
  %390 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 0, ptr %390, align 4, !tbaa !9
  %391 = load ptr, ptr %25, align 8, !tbaa !5
  %392 = load i32, ptr %391, align 4, !tbaa !9
  %393 = icmp eq i32 %392, 0
  br i1 %393, label %394, label %397

394:                                              ; preds = %389
  %395 = load ptr, ptr %38, align 8, !tbaa !5
  %396 = getelementptr inbounds double, ptr %395, i64 1
  store double 1.000000e+00, ptr %396, align 8, !tbaa !11
  store i32 1, ptr %96, align 4
  br label %1040

397:                                              ; preds = %389
  %398 = load ptr, ptr %25, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = icmp eq i32 %399, 1
  br i1 %400, label %401, label %464

401:                                              ; preds = %397
  %402 = load ptr, ptr %38, align 8, !tbaa !5
  %403 = getelementptr inbounds double, ptr %402, i64 1
  store double 7.000000e+00, ptr %403, align 8, !tbaa !11
  %404 = load i32, ptr %70, align 4, !tbaa !9
  %405 = icmp ne i32 %404, 0
  br i1 %405, label %409, label %406

406:                                              ; preds = %401
  %407 = load i32, ptr %71, align 4, !tbaa !9
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %409, label %419

409:                                              ; preds = %406, %401
  %410 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 1, ptr %410, align 4, !tbaa !9
  %411 = load ptr, ptr %26, align 8, !tbaa !5
  %412 = load i32, ptr %43, align 4, !tbaa !9
  %413 = add nsw i32 %412, 1
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds double, ptr %411, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = load ptr, ptr %34, align 8, !tbaa !5
  %418 = getelementptr inbounds double, ptr %417, i64 1
  store double %416, ptr %418, align 8, !tbaa !11
  br label %450

419:                                              ; preds = %406
  %420 = load ptr, ptr %28, align 8, !tbaa !5
  %421 = load double, ptr %420, align 8, !tbaa !11
  %422 = load ptr, ptr %26, align 8, !tbaa !5
  %423 = load i32, ptr %43, align 4, !tbaa !9
  %424 = add nsw i32 %423, 1
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds double, ptr %422, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !11
  %428 = fcmp olt double %421, %427
  br i1 %428, label %429, label %449

429:                                              ; preds = %419
  %430 = load ptr, ptr %29, align 8, !tbaa !5
  %431 = load double, ptr %430, align 8, !tbaa !11
  %432 = load ptr, ptr %26, align 8, !tbaa !5
  %433 = load i32, ptr %43, align 4, !tbaa !9
  %434 = add nsw i32 %433, 1
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds double, ptr %432, i64 %435
  %437 = load double, ptr %436, align 8, !tbaa !11
  %438 = fcmp oge double %431, %437
  br i1 %438, label %439, label %449

439:                                              ; preds = %429
  %440 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 1, ptr %440, align 4, !tbaa !9
  %441 = load ptr, ptr %26, align 8, !tbaa !5
  %442 = load i32, ptr %43, align 4, !tbaa !9
  %443 = add nsw i32 %442, 1
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %441, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !11
  %447 = load ptr, ptr %34, align 8, !tbaa !5
  %448 = getelementptr inbounds double, ptr %447, i64 1
  store double %446, ptr %448, align 8, !tbaa !11
  br label %449

449:                                              ; preds = %439, %429, %419
  br label %450

450:                                              ; preds = %449, %409
  %451 = load i32, ptr %67, align 4, !tbaa !9
  %452 = icmp ne i32 %451, 0
  br i1 %452, label %453, label %463

453:                                              ; preds = %450
  %454 = load ptr, ptr %35, align 8, !tbaa !5
  %455 = load i32, ptr %45, align 4, !tbaa !9
  %456 = add nsw i32 %455, 1
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds double, ptr %454, i64 %457
  store double 1.000000e+00, ptr %458, align 8, !tbaa !11
  %459 = load ptr, ptr %37, align 8, !tbaa !5
  %460 = getelementptr inbounds i32, ptr %459, i64 1
  store i32 1, ptr %460, align 4, !tbaa !9
  %461 = load ptr, ptr %37, align 8, !tbaa !5
  %462 = getelementptr inbounds i32, ptr %461, i64 2
  store i32 1, ptr %462, align 4, !tbaa !9
  br label %463

463:                                              ; preds = %453, %450
  store i32 1, ptr %96, align 4
  br label %1040

464:                                              ; preds = %397
  %465 = call double @dlamch_(ptr noundef @.str.9)
  store double %465, ptr %77, align 8, !tbaa !11
  %466 = call double @dlamch_(ptr noundef @.str.10)
  store double %466, ptr %92, align 8, !tbaa !11
  %467 = load double, ptr %77, align 8, !tbaa !11
  %468 = load double, ptr %92, align 8, !tbaa !11
  %469 = fdiv double %467, %468
  store double %469, ptr %89, align 8, !tbaa !11
  %470 = load double, ptr %89, align 8, !tbaa !11
  %471 = fdiv double 1.000000e+00, %470
  store double %471, ptr %79, align 8, !tbaa !11
  %472 = load double, ptr %89, align 8, !tbaa !11
  %473 = call double @sqrt(double noundef %472) #4
  store double %473, ptr %55, align 8, !tbaa !11
  %474 = load double, ptr %79, align 8, !tbaa !11
  %475 = call double @sqrt(double noundef %474) #4
  store double %475, ptr %49, align 8, !tbaa !11
  %476 = load double, ptr %77, align 8, !tbaa !11
  %477 = call double @sqrt(double noundef %476) #4
  %478 = call double @sqrt(double noundef %477) #4
  %479 = fdiv double 1.000000e+00, %478
  store double %479, ptr %50, align 8, !tbaa !11
  %480 = load double, ptr %49, align 8, !tbaa !11
  %481 = load double, ptr %50, align 8, !tbaa !11
  %482 = fcmp ole double %480, %481
  br i1 %482, label %483, label %485

483:                                              ; preds = %464
  %484 = load double, ptr %49, align 8, !tbaa !11
  br label %487

485:                                              ; preds = %464
  %486 = load double, ptr %50, align 8, !tbaa !11
  br label %487

487:                                              ; preds = %485, %483
  %488 = phi double [ %484, %483 ], [ %486, %485 ]
  store double %488, ptr %56, align 8, !tbaa !11
  store i32 0, ptr %72, align 4, !tbaa !9
  %489 = load ptr, ptr %32, align 8, !tbaa !5
  %490 = load double, ptr %489, align 8, !tbaa !11
  store double %490, ptr %78, align 8, !tbaa !11
  %491 = load i32, ptr %76, align 4, !tbaa !9
  %492 = icmp ne i32 %491, 0
  br i1 %492, label %493, label %498

493:                                              ; preds = %487
  %494 = load ptr, ptr %28, align 8, !tbaa !5
  %495 = load double, ptr %494, align 8, !tbaa !11
  store double %495, ptr %93, align 8, !tbaa !11
  %496 = load ptr, ptr %29, align 8, !tbaa !5
  %497 = load double, ptr %496, align 8, !tbaa !11
  store double %497, ptr %94, align 8, !tbaa !11
  br label %498

498:                                              ; preds = %493, %487
  %499 = load ptr, ptr %24, align 8, !tbaa !5
  %500 = load ptr, ptr %25, align 8, !tbaa !5
  %501 = load ptr, ptr %26, align 8, !tbaa !5
  %502 = load i32, ptr %44, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds double, ptr %501, i64 %503
  %505 = load ptr, ptr %27, align 8, !tbaa !5
  %506 = load ptr, ptr %38, align 8, !tbaa !5
  %507 = getelementptr inbounds double, ptr %506, i64 1
  %508 = call double @dlansy_(ptr noundef @.str.11, ptr noundef %499, ptr noundef %500, ptr noundef %504, ptr noundef %505, ptr noundef %507)
  store double %508, ptr %53, align 8, !tbaa !11
  %509 = load double, ptr %53, align 8, !tbaa !11
  %510 = fcmp ogt double %509, 0.000000e+00
  br i1 %510, label %511, label %519

511:                                              ; preds = %498
  %512 = load double, ptr %53, align 8, !tbaa !11
  %513 = load double, ptr %55, align 8, !tbaa !11
  %514 = fcmp olt double %512, %513
  br i1 %514, label %515, label %519

515:                                              ; preds = %511
  store i32 1, ptr %72, align 4, !tbaa !9
  %516 = load double, ptr %55, align 8, !tbaa !11
  %517 = load double, ptr %53, align 8, !tbaa !11
  %518 = fdiv double %516, %517
  store double %518, ptr %61, align 8, !tbaa !11
  br label %528

519:                                              ; preds = %511, %498
  %520 = load double, ptr %53, align 8, !tbaa !11
  %521 = load double, ptr %56, align 8, !tbaa !11
  %522 = fcmp ogt double %520, %521
  br i1 %522, label %523, label %527

523:                                              ; preds = %519
  store i32 1, ptr %72, align 4, !tbaa !9
  %524 = load double, ptr %56, align 8, !tbaa !11
  %525 = load double, ptr %53, align 8, !tbaa !11
  %526 = fdiv double %524, %525
  store double %526, ptr %61, align 8, !tbaa !11
  br label %527

527:                                              ; preds = %523, %519
  br label %528

528:                                              ; preds = %527, %515
  %529 = load i32, ptr %72, align 4, !tbaa !9
  %530 = icmp eq i32 %529, 1
  br i1 %530, label %531, label %600

531:                                              ; preds = %528
  %532 = load i32, ptr %66, align 4, !tbaa !9
  %533 = icmp ne i32 %532, 0
  br i1 %533, label %534, label %559

534:                                              ; preds = %531
  %535 = load ptr, ptr %25, align 8, !tbaa !5
  %536 = load i32, ptr %535, align 4, !tbaa !9
  store i32 %536, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %537

537:                                              ; preds = %555, %534
  %538 = load i32, ptr %58, align 4, !tbaa !9
  %539 = load i32, ptr %47, align 4, !tbaa !9
  %540 = icmp sle i32 %538, %539
  br i1 %540, label %541, label %558

541:                                              ; preds = %537
  %542 = load ptr, ptr %25, align 8, !tbaa !5
  %543 = load i32, ptr %542, align 4, !tbaa !9
  %544 = load i32, ptr %58, align 4, !tbaa !9
  %545 = sub nsw i32 %543, %544
  %546 = add nsw i32 %545, 1
  store i32 %546, ptr %48, align 4, !tbaa !9
  %547 = load ptr, ptr %26, align 8, !tbaa !5
  %548 = load i32, ptr %58, align 4, !tbaa !9
  %549 = load i32, ptr %58, align 4, !tbaa !9
  %550 = load i32, ptr %43, align 4, !tbaa !9
  %551 = mul nsw i32 %549, %550
  %552 = add nsw i32 %548, %551
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %547, i64 %553
  call void @dscal_(ptr noundef %48, ptr noundef %61, ptr noundef %554, ptr noundef @c__1)
  br label %555

555:                                              ; preds = %541
  %556 = load i32, ptr %58, align 4, !tbaa !9
  %557 = add nsw i32 %556, 1
  store i32 %557, ptr %58, align 4, !tbaa !9
  br label %537, !llvm.loop !13

558:                                              ; preds = %537
  br label %578

559:                                              ; preds = %531
  %560 = load ptr, ptr %25, align 8, !tbaa !5
  %561 = load i32, ptr %560, align 4, !tbaa !9
  store i32 %561, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %562

562:                                              ; preds = %574, %559
  %563 = load i32, ptr %58, align 4, !tbaa !9
  %564 = load i32, ptr %47, align 4, !tbaa !9
  %565 = icmp sle i32 %563, %564
  br i1 %565, label %566, label %577

566:                                              ; preds = %562
  %567 = load ptr, ptr %26, align 8, !tbaa !5
  %568 = load i32, ptr %58, align 4, !tbaa !9
  %569 = load i32, ptr %43, align 4, !tbaa !9
  %570 = mul nsw i32 %568, %569
  %571 = add nsw i32 %570, 1
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds double, ptr %567, i64 %572
  call void @dscal_(ptr noundef %58, ptr noundef %61, ptr noundef %573, ptr noundef @c__1)
  br label %574

574:                                              ; preds = %566
  %575 = load i32, ptr %58, align 4, !tbaa !9
  %576 = add nsw i32 %575, 1
  store i32 %576, ptr %58, align 4, !tbaa !9
  br label %562, !llvm.loop !15

577:                                              ; preds = %562
  br label %578

578:                                              ; preds = %577, %558
  %579 = load ptr, ptr %32, align 8, !tbaa !5
  %580 = load double, ptr %579, align 8, !tbaa !11
  %581 = fcmp ogt double %580, 0.000000e+00
  br i1 %581, label %582, label %587

582:                                              ; preds = %578
  %583 = load ptr, ptr %32, align 8, !tbaa !5
  %584 = load double, ptr %583, align 8, !tbaa !11
  %585 = load double, ptr %61, align 8, !tbaa !11
  %586 = fmul double %584, %585
  store double %586, ptr %78, align 8, !tbaa !11
  br label %587

587:                                              ; preds = %582, %578
  %588 = load i32, ptr %76, align 4, !tbaa !9
  %589 = icmp ne i32 %588, 0
  br i1 %589, label %590, label %599

590:                                              ; preds = %587
  %591 = load ptr, ptr %28, align 8, !tbaa !5
  %592 = load double, ptr %591, align 8, !tbaa !11
  %593 = load double, ptr %61, align 8, !tbaa !11
  %594 = fmul double %592, %593
  store double %594, ptr %93, align 8, !tbaa !11
  %595 = load ptr, ptr %29, align 8, !tbaa !5
  %596 = load double, ptr %595, align 8, !tbaa !11
  %597 = load double, ptr %61, align 8, !tbaa !11
  %598 = fmul double %596, %597
  store double %598, ptr %94, align 8, !tbaa !11
  br label %599

599:                                              ; preds = %590, %587
  br label %600

600:                                              ; preds = %599, %528
  store i32 1, ptr %80, align 4, !tbaa !9
  %601 = load i32, ptr %80, align 4, !tbaa !9
  %602 = load ptr, ptr %25, align 8, !tbaa !5
  %603 = load i32, ptr %602, align 4, !tbaa !9
  %604 = add nsw i32 %601, %603
  store i32 %604, ptr %51, align 4, !tbaa !9
  %605 = load i32, ptr %51, align 4, !tbaa !9
  %606 = load ptr, ptr %25, align 8, !tbaa !5
  %607 = load i32, ptr %606, align 4, !tbaa !9
  %608 = add nsw i32 %605, %607
  store i32 %608, ptr %52, align 4, !tbaa !9
  %609 = load i32, ptr %52, align 4, !tbaa !9
  %610 = load ptr, ptr %25, align 8, !tbaa !5
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = add nsw i32 %609, %611
  store i32 %612, ptr %59, align 4, !tbaa !9
  %613 = load i32, ptr %59, align 4, !tbaa !9
  %614 = load ptr, ptr %25, align 8, !tbaa !5
  %615 = load i32, ptr %614, align 4, !tbaa !9
  %616 = add nsw i32 %613, %615
  store i32 %616, ptr %60, align 4, !tbaa !9
  %617 = load i32, ptr %60, align 4, !tbaa !9
  %618 = load ptr, ptr %25, align 8, !tbaa !5
  %619 = load i32, ptr %618, align 4, !tbaa !9
  %620 = add nsw i32 %617, %619
  store i32 %620, ptr %64, align 4, !tbaa !9
  %621 = load ptr, ptr %39, align 8, !tbaa !5
  %622 = load i32, ptr %621, align 4, !tbaa !9
  %623 = load i32, ptr %64, align 4, !tbaa !9
  %624 = sub nsw i32 %622, %623
  %625 = add nsw i32 %624, 1
  store i32 %625, ptr %87, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  %626 = load i32, ptr %74, align 4, !tbaa !9
  %627 = load ptr, ptr %25, align 8, !tbaa !5
  %628 = load i32, ptr %627, align 4, !tbaa !9
  %629 = add nsw i32 %626, %628
  store i32 %629, ptr %81, align 4, !tbaa !9
  %630 = load i32, ptr %81, align 4, !tbaa !9
  %631 = load ptr, ptr %25, align 8, !tbaa !5
  %632 = load i32, ptr %631, align 4, !tbaa !9
  %633 = add nsw i32 %630, %632
  store i32 %633, ptr %75, align 4, !tbaa !9
  %634 = load i32, ptr %75, align 4, !tbaa !9
  %635 = load ptr, ptr %25, align 8, !tbaa !5
  %636 = load i32, ptr %635, align 4, !tbaa !9
  %637 = add nsw i32 %634, %636
  store i32 %637, ptr %82, align 4, !tbaa !9
  %638 = load ptr, ptr %24, align 8, !tbaa !5
  %639 = load ptr, ptr %25, align 8, !tbaa !5
  %640 = load ptr, ptr %26, align 8, !tbaa !5
  %641 = load i32, ptr %44, align 4, !tbaa !9
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds double, ptr %640, i64 %642
  %644 = load ptr, ptr %27, align 8, !tbaa !5
  %645 = load ptr, ptr %38, align 8, !tbaa !5
  %646 = load i32, ptr %51, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds double, ptr %645, i64 %647
  %649 = load ptr, ptr %38, align 8, !tbaa !5
  %650 = load i32, ptr %52, align 4, !tbaa !9
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds double, ptr %649, i64 %651
  %653 = load ptr, ptr %38, align 8, !tbaa !5
  %654 = load i32, ptr %80, align 4, !tbaa !9
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds double, ptr %653, i64 %655
  %657 = load ptr, ptr %38, align 8, !tbaa !5
  %658 = load i32, ptr %64, align 4, !tbaa !9
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds double, ptr %657, i64 %659
  call void @dsytrd_(ptr noundef %638, ptr noundef %639, ptr noundef %643, ptr noundef %644, ptr noundef %648, ptr noundef %652, ptr noundef %656, ptr noundef %660, ptr noundef %87, ptr noundef %62)
  %661 = load i32, ptr %70, align 4, !tbaa !9
  %662 = icmp ne i32 %661, 0
  br i1 %662, label %676, label %663

663:                                              ; preds = %600
  %664 = load i32, ptr %71, align 4, !tbaa !9
  %665 = icmp ne i32 %664, 0
  br i1 %665, label %666, label %821

666:                                              ; preds = %663
  %667 = load ptr, ptr %30, align 8, !tbaa !5
  %668 = load i32, ptr %667, align 4, !tbaa !9
  %669 = icmp eq i32 %668, 1
  br i1 %669, label %670, label %821

670:                                              ; preds = %666
  %671 = load ptr, ptr %31, align 8, !tbaa !5
  %672 = load i32, ptr %671, align 4, !tbaa !9
  %673 = load ptr, ptr %25, align 8, !tbaa !5
  %674 = load i32, ptr %673, align 4, !tbaa !9
  %675 = icmp eq i32 %672, %674
  br i1 %675, label %676, label %821

676:                                              ; preds = %670, %600
  %677 = load i32, ptr %73, align 4, !tbaa !9
  %678 = icmp eq i32 %677, 1
  br i1 %678, label %679, label %821

679:                                              ; preds = %676
  %680 = load i32, ptr %67, align 4, !tbaa !9
  %681 = icmp ne i32 %680, 0
  br i1 %681, label %709, label %682

682:                                              ; preds = %679
  %683 = load ptr, ptr %25, align 8, !tbaa !5
  %684 = load ptr, ptr %38, align 8, !tbaa !5
  %685 = load i32, ptr %51, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %684, i64 %686
  %688 = load ptr, ptr %34, align 8, !tbaa !5
  %689 = getelementptr inbounds double, ptr %688, i64 1
  call void @dcopy_(ptr noundef %683, ptr noundef %687, ptr noundef @c__1, ptr noundef %689, ptr noundef @c__1)
  %690 = load ptr, ptr %25, align 8, !tbaa !5
  %691 = load i32, ptr %690, align 4, !tbaa !9
  %692 = sub nsw i32 %691, 1
  store i32 %692, ptr %47, align 4, !tbaa !9
  %693 = load ptr, ptr %38, align 8, !tbaa !5
  %694 = load i32, ptr %52, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds double, ptr %693, i64 %695
  %697 = load ptr, ptr %38, align 8, !tbaa !5
  %698 = load i32, ptr %60, align 4, !tbaa !9
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds double, ptr %697, i64 %699
  call void @dcopy_(ptr noundef %47, ptr noundef %696, ptr noundef @c__1, ptr noundef %700, ptr noundef @c__1)
  %701 = load ptr, ptr %25, align 8, !tbaa !5
  %702 = load ptr, ptr %34, align 8, !tbaa !5
  %703 = getelementptr inbounds double, ptr %702, i64 1
  %704 = load ptr, ptr %38, align 8, !tbaa !5
  %705 = load i32, ptr %60, align 4, !tbaa !9
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds double, ptr %704, i64 %706
  %708 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %701, ptr noundef %703, ptr noundef %707, ptr noundef %708)
  br label %811

709:                                              ; preds = %679
  %710 = load ptr, ptr %25, align 8, !tbaa !5
  %711 = load i32, ptr %710, align 4, !tbaa !9
  %712 = sub nsw i32 %711, 1
  store i32 %712, ptr %47, align 4, !tbaa !9
  %713 = load ptr, ptr %38, align 8, !tbaa !5
  %714 = load i32, ptr %52, align 4, !tbaa !9
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds double, ptr %713, i64 %715
  %717 = load ptr, ptr %38, align 8, !tbaa !5
  %718 = load i32, ptr %60, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds double, ptr %717, i64 %719
  call void @dcopy_(ptr noundef %47, ptr noundef %716, ptr noundef @c__1, ptr noundef %720, ptr noundef @c__1)
  %721 = load ptr, ptr %25, align 8, !tbaa !5
  %722 = load ptr, ptr %38, align 8, !tbaa !5
  %723 = load i32, ptr %51, align 4, !tbaa !9
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds double, ptr %722, i64 %724
  %726 = load ptr, ptr %38, align 8, !tbaa !5
  %727 = load i32, ptr %59, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds double, ptr %726, i64 %728
  call void @dcopy_(ptr noundef %721, ptr noundef %725, ptr noundef @c__1, ptr noundef %729, ptr noundef @c__1)
  %730 = load ptr, ptr %32, align 8, !tbaa !5
  %731 = load double, ptr %730, align 8, !tbaa !11
  %732 = load ptr, ptr %25, align 8, !tbaa !5
  %733 = load i32, ptr %732, align 4, !tbaa !9
  %734 = sitofp i32 %733 to double
  %735 = fmul double %734, 2.000000e+00
  %736 = load double, ptr %92, align 8, !tbaa !11
  %737 = fmul double %735, %736
  %738 = fcmp ole double %731, %737
  br i1 %738, label %739, label %740

739:                                              ; preds = %709
  store i32 1, ptr %85, align 4, !tbaa !9
  br label %741

740:                                              ; preds = %709
  store i32 0, ptr %85, align 4, !tbaa !9
  br label %741

741:                                              ; preds = %740, %739
  %742 = load ptr, ptr %22, align 8, !tbaa !5
  %743 = load ptr, ptr %25, align 8, !tbaa !5
  %744 = load ptr, ptr %38, align 8, !tbaa !5
  %745 = load i32, ptr %59, align 4, !tbaa !9
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds double, ptr %744, i64 %746
  %748 = load ptr, ptr %38, align 8, !tbaa !5
  %749 = load i32, ptr %60, align 4, !tbaa !9
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds double, ptr %748, i64 %750
  %752 = load ptr, ptr %28, align 8, !tbaa !5
  %753 = load ptr, ptr %29, align 8, !tbaa !5
  %754 = load ptr, ptr %30, align 8, !tbaa !5
  %755 = load ptr, ptr %31, align 8, !tbaa !5
  %756 = load ptr, ptr %33, align 8, !tbaa !5
  %757 = load ptr, ptr %34, align 8, !tbaa !5
  %758 = getelementptr inbounds double, ptr %757, i64 1
  %759 = load ptr, ptr %35, align 8, !tbaa !5
  %760 = load i32, ptr %46, align 4, !tbaa !9
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds double, ptr %759, i64 %761
  %763 = load ptr, ptr %36, align 8, !tbaa !5
  %764 = load ptr, ptr %25, align 8, !tbaa !5
  %765 = load ptr, ptr %37, align 8, !tbaa !5
  %766 = getelementptr inbounds i32, ptr %765, i64 1
  %767 = load ptr, ptr %38, align 8, !tbaa !5
  %768 = load i32, ptr %64, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds double, ptr %767, i64 %769
  %771 = load ptr, ptr %39, align 8, !tbaa !5
  %772 = load ptr, ptr %40, align 8, !tbaa !5
  %773 = getelementptr inbounds i32, ptr %772, i64 1
  %774 = load ptr, ptr %41, align 8, !tbaa !5
  %775 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dstemr_(ptr noundef %742, ptr noundef @.str.4, ptr noundef %743, ptr noundef %747, ptr noundef %751, ptr noundef %752, ptr noundef %753, ptr noundef %754, ptr noundef %755, ptr noundef %756, ptr noundef %758, ptr noundef %762, ptr noundef %763, ptr noundef %764, ptr noundef %766, ptr noundef %85, ptr noundef %770, ptr noundef %771, ptr noundef %773, ptr noundef %774, ptr noundef %775)
  %776 = load i32, ptr %67, align 4, !tbaa !9
  %777 = icmp ne i32 %776, 0
  br i1 %777, label %778, label %810

778:                                              ; preds = %741
  %779 = load ptr, ptr %42, align 8, !tbaa !5
  %780 = load i32, ptr %779, align 4, !tbaa !9
  %781 = icmp eq i32 %780, 0
  br i1 %781, label %782, label %810

782:                                              ; preds = %778
  %783 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %783, ptr %83, align 4, !tbaa !9
  %784 = load ptr, ptr %39, align 8, !tbaa !5
  %785 = load i32, ptr %784, align 4, !tbaa !9
  %786 = load i32, ptr %83, align 4, !tbaa !9
  %787 = sub nsw i32 %785, %786
  %788 = add nsw i32 %787, 1
  store i32 %788, ptr %86, align 4, !tbaa !9
  %789 = load ptr, ptr %24, align 8, !tbaa !5
  %790 = load ptr, ptr %25, align 8, !tbaa !5
  %791 = load ptr, ptr %33, align 8, !tbaa !5
  %792 = load ptr, ptr %26, align 8, !tbaa !5
  %793 = load i32, ptr %44, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds double, ptr %792, i64 %794
  %796 = load ptr, ptr %27, align 8, !tbaa !5
  %797 = load ptr, ptr %38, align 8, !tbaa !5
  %798 = load i32, ptr %80, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %797, i64 %799
  %801 = load ptr, ptr %35, align 8, !tbaa !5
  %802 = load i32, ptr %46, align 4, !tbaa !9
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds double, ptr %801, i64 %803
  %805 = load ptr, ptr %36, align 8, !tbaa !5
  %806 = load ptr, ptr %38, align 8, !tbaa !5
  %807 = load i32, ptr %83, align 4, !tbaa !9
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds double, ptr %806, i64 %808
  call void @dormtr_(ptr noundef @.str.2, ptr noundef %789, ptr noundef @.str.1, ptr noundef %790, ptr noundef %791, ptr noundef %795, ptr noundef %796, ptr noundef %800, ptr noundef %804, ptr noundef %805, ptr noundef %809, ptr noundef %86, ptr noundef %62)
  br label %810

810:                                              ; preds = %782, %778, %741
  br label %811

811:                                              ; preds = %810, %682
  %812 = load ptr, ptr %42, align 8, !tbaa !5
  %813 = load i32, ptr %812, align 4, !tbaa !9
  %814 = icmp eq i32 %813, 0
  br i1 %814, label %815, label %819

815:                                              ; preds = %811
  %816 = load ptr, ptr %25, align 8, !tbaa !5
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 %817, ptr %818, align 4, !tbaa !9
  br label %931

819:                                              ; preds = %811
  %820 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %820, align 4, !tbaa !9
  br label %821

821:                                              ; preds = %819, %676, %670, %666, %663
  %822 = load i32, ptr %67, align 4, !tbaa !9
  %823 = icmp ne i32 %822, 0
  br i1 %823, label %824, label %826

824:                                              ; preds = %821
  %825 = getelementptr inbounds [1 x i8], ptr %63, i64 0, i64 0
  store i8 66, ptr %825, align 1, !tbaa !16
  br label %828

826:                                              ; preds = %821
  %827 = getelementptr inbounds [1 x i8], ptr %63, i64 0, i64 0
  store i8 69, ptr %827, align 1, !tbaa !16
  br label %828

828:                                              ; preds = %826, %824
  %829 = load ptr, ptr %23, align 8, !tbaa !5
  %830 = getelementptr inbounds [1 x i8], ptr %63, i64 0, i64 0
  %831 = load ptr, ptr %25, align 8, !tbaa !5
  %832 = load ptr, ptr %30, align 8, !tbaa !5
  %833 = load ptr, ptr %31, align 8, !tbaa !5
  %834 = load ptr, ptr %38, align 8, !tbaa !5
  %835 = load i32, ptr %51, align 4, !tbaa !9
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds double, ptr %834, i64 %836
  %838 = load ptr, ptr %38, align 8, !tbaa !5
  %839 = load i32, ptr %52, align 4, !tbaa !9
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds double, ptr %838, i64 %840
  %842 = load ptr, ptr %33, align 8, !tbaa !5
  %843 = load ptr, ptr %34, align 8, !tbaa !5
  %844 = getelementptr inbounds double, ptr %843, i64 1
  %845 = load ptr, ptr %40, align 8, !tbaa !5
  %846 = load i32, ptr %74, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds i32, ptr %845, i64 %847
  %849 = load ptr, ptr %40, align 8, !tbaa !5
  %850 = load i32, ptr %81, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds i32, ptr %849, i64 %851
  %853 = load ptr, ptr %38, align 8, !tbaa !5
  %854 = load i32, ptr %64, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds double, ptr %853, i64 %855
  %857 = load ptr, ptr %40, align 8, !tbaa !5
  %858 = load i32, ptr %82, align 4, !tbaa !9
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds i32, ptr %857, i64 %859
  %861 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %829, ptr noundef %830, ptr noundef %831, ptr noundef %93, ptr noundef %94, ptr noundef %832, ptr noundef %833, ptr noundef %78, ptr noundef %837, ptr noundef %841, ptr noundef %842, ptr noundef %88, ptr noundef %844, ptr noundef %848, ptr noundef %852, ptr noundef %856, ptr noundef %860, ptr noundef %861)
  %862 = load i32, ptr %67, align 4, !tbaa !9
  %863 = icmp ne i32 %862, 0
  br i1 %863, label %864, label %930

864:                                              ; preds = %828
  %865 = load ptr, ptr %25, align 8, !tbaa !5
  %866 = load ptr, ptr %38, align 8, !tbaa !5
  %867 = load i32, ptr %51, align 4, !tbaa !9
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds double, ptr %866, i64 %868
  %870 = load ptr, ptr %38, align 8, !tbaa !5
  %871 = load i32, ptr %52, align 4, !tbaa !9
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds double, ptr %870, i64 %872
  %874 = load ptr, ptr %33, align 8, !tbaa !5
  %875 = load ptr, ptr %34, align 8, !tbaa !5
  %876 = getelementptr inbounds double, ptr %875, i64 1
  %877 = load ptr, ptr %40, align 8, !tbaa !5
  %878 = load i32, ptr %74, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds i32, ptr %877, i64 %879
  %881 = load ptr, ptr %40, align 8, !tbaa !5
  %882 = load i32, ptr %81, align 4, !tbaa !9
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds i32, ptr %881, i64 %883
  %885 = load ptr, ptr %35, align 8, !tbaa !5
  %886 = load i32, ptr %46, align 4, !tbaa !9
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds double, ptr %885, i64 %887
  %889 = load ptr, ptr %36, align 8, !tbaa !5
  %890 = load ptr, ptr %38, align 8, !tbaa !5
  %891 = load i32, ptr %64, align 4, !tbaa !9
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %890, i64 %892
  %894 = load ptr, ptr %40, align 8, !tbaa !5
  %895 = load i32, ptr %82, align 4, !tbaa !9
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds i32, ptr %894, i64 %896
  %898 = load ptr, ptr %40, align 8, !tbaa !5
  %899 = load i32, ptr %75, align 4, !tbaa !9
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds i32, ptr %898, i64 %900
  %902 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dstein_(ptr noundef %865, ptr noundef %869, ptr noundef %873, ptr noundef %874, ptr noundef %876, ptr noundef %880, ptr noundef %884, ptr noundef %888, ptr noundef %889, ptr noundef %893, ptr noundef %897, ptr noundef %901, ptr noundef %902)
  %903 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %903, ptr %83, align 4, !tbaa !9
  %904 = load ptr, ptr %39, align 8, !tbaa !5
  %905 = load i32, ptr %904, align 4, !tbaa !9
  %906 = load i32, ptr %83, align 4, !tbaa !9
  %907 = sub nsw i32 %905, %906
  %908 = add nsw i32 %907, 1
  store i32 %908, ptr %86, align 4, !tbaa !9
  %909 = load ptr, ptr %24, align 8, !tbaa !5
  %910 = load ptr, ptr %25, align 8, !tbaa !5
  %911 = load ptr, ptr %33, align 8, !tbaa !5
  %912 = load ptr, ptr %26, align 8, !tbaa !5
  %913 = load i32, ptr %44, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %912, i64 %914
  %916 = load ptr, ptr %27, align 8, !tbaa !5
  %917 = load ptr, ptr %38, align 8, !tbaa !5
  %918 = load i32, ptr %80, align 4, !tbaa !9
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds double, ptr %917, i64 %919
  %921 = load ptr, ptr %35, align 8, !tbaa !5
  %922 = load i32, ptr %46, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds double, ptr %921, i64 %923
  %925 = load ptr, ptr %36, align 8, !tbaa !5
  %926 = load ptr, ptr %38, align 8, !tbaa !5
  %927 = load i32, ptr %83, align 4, !tbaa !9
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds double, ptr %926, i64 %928
  call void @dormtr_(ptr noundef @.str.2, ptr noundef %909, ptr noundef @.str.1, ptr noundef %910, ptr noundef %911, ptr noundef %915, ptr noundef %916, ptr noundef %920, ptr noundef %924, ptr noundef %925, ptr noundef %929, ptr noundef %86, ptr noundef %62)
  br label %930

930:                                              ; preds = %864, %828
  br label %931

931:                                              ; preds = %930, %815
  %932 = load i32, ptr %72, align 4, !tbaa !9
  %933 = icmp eq i32 %932, 1
  br i1 %933, label %934, label %950

934:                                              ; preds = %931
  %935 = load ptr, ptr %42, align 8, !tbaa !5
  %936 = load i32, ptr %935, align 4, !tbaa !9
  %937 = icmp eq i32 %936, 0
  br i1 %937, label %938, label %941

938:                                              ; preds = %934
  %939 = load ptr, ptr %33, align 8, !tbaa !5
  %940 = load i32, ptr %939, align 4, !tbaa !9
  store i32 %940, ptr %54, align 4, !tbaa !9
  br label %945

941:                                              ; preds = %934
  %942 = load ptr, ptr %42, align 8, !tbaa !5
  %943 = load i32, ptr %942, align 4, !tbaa !9
  %944 = sub nsw i32 %943, 1
  store i32 %944, ptr %54, align 4, !tbaa !9
  br label %945

945:                                              ; preds = %941, %938
  %946 = load double, ptr %61, align 8, !tbaa !11
  %947 = fdiv double 1.000000e+00, %946
  store double %947, ptr %49, align 8, !tbaa !11
  %948 = load ptr, ptr %34, align 8, !tbaa !5
  %949 = getelementptr inbounds double, ptr %948, i64 1
  call void @dscal_(ptr noundef %54, ptr noundef %49, ptr noundef %949, ptr noundef @c__1)
  br label %950

950:                                              ; preds = %945, %931
  %951 = load i32, ptr %67, align 4, !tbaa !9
  %952 = icmp ne i32 %951, 0
  br i1 %952, label %953, label %1032

953:                                              ; preds = %950
  %954 = load ptr, ptr %33, align 8, !tbaa !5
  %955 = load i32, ptr %954, align 4, !tbaa !9
  %956 = sub nsw i32 %955, 1
  store i32 %956, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %957

957:                                              ; preds = %1028, %953
  %958 = load i32, ptr %58, align 4, !tbaa !9
  %959 = load i32, ptr %47, align 4, !tbaa !9
  %960 = icmp sle i32 %958, %959
  br i1 %960, label %961, label %1031

961:                                              ; preds = %957
  store i32 0, ptr %57, align 4, !tbaa !9
  %962 = load ptr, ptr %34, align 8, !tbaa !5
  %963 = load i32, ptr %58, align 4, !tbaa !9
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds double, ptr %962, i64 %964
  %966 = load double, ptr %965, align 8, !tbaa !11
  store double %966, ptr %95, align 8, !tbaa !11
  %967 = load ptr, ptr %33, align 8, !tbaa !5
  %968 = load i32, ptr %967, align 4, !tbaa !9
  store i32 %968, ptr %48, align 4, !tbaa !9
  %969 = load i32, ptr %58, align 4, !tbaa !9
  %970 = add nsw i32 %969, 1
  store i32 %970, ptr %69, align 4, !tbaa !9
  br label %971

971:                                              ; preds = %991, %961
  %972 = load i32, ptr %69, align 4, !tbaa !9
  %973 = load i32, ptr %48, align 4, !tbaa !9
  %974 = icmp sle i32 %972, %973
  br i1 %974, label %975, label %994

975:                                              ; preds = %971
  %976 = load ptr, ptr %34, align 8, !tbaa !5
  %977 = load i32, ptr %69, align 4, !tbaa !9
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds double, ptr %976, i64 %978
  %980 = load double, ptr %979, align 8, !tbaa !11
  %981 = load double, ptr %95, align 8, !tbaa !11
  %982 = fcmp olt double %980, %981
  br i1 %982, label %983, label %990

983:                                              ; preds = %975
  %984 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %984, ptr %57, align 4, !tbaa !9
  %985 = load ptr, ptr %34, align 8, !tbaa !5
  %986 = load i32, ptr %69, align 4, !tbaa !9
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds double, ptr %985, i64 %987
  %989 = load double, ptr %988, align 8, !tbaa !11
  store double %989, ptr %95, align 8, !tbaa !11
  br label %990

990:                                              ; preds = %983, %975
  br label %991

991:                                              ; preds = %990
  %992 = load i32, ptr %69, align 4, !tbaa !9
  %993 = add nsw i32 %992, 1
  store i32 %993, ptr %69, align 4, !tbaa !9
  br label %971, !llvm.loop !17

994:                                              ; preds = %971
  %995 = load i32, ptr %57, align 4, !tbaa !9
  %996 = icmp ne i32 %995, 0
  br i1 %996, label %997, label %1027

997:                                              ; preds = %994
  %998 = load ptr, ptr %34, align 8, !tbaa !5
  %999 = load i32, ptr %58, align 4, !tbaa !9
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds double, ptr %998, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  %1003 = load ptr, ptr %34, align 8, !tbaa !5
  %1004 = load i32, ptr %57, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds double, ptr %1003, i64 %1005
  store double %1002, ptr %1006, align 8, !tbaa !11
  %1007 = load double, ptr %95, align 8, !tbaa !11
  %1008 = load ptr, ptr %34, align 8, !tbaa !5
  %1009 = load i32, ptr %58, align 4, !tbaa !9
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds double, ptr %1008, i64 %1010
  store double %1007, ptr %1011, align 8, !tbaa !11
  %1012 = load ptr, ptr %25, align 8, !tbaa !5
  %1013 = load ptr, ptr %35, align 8, !tbaa !5
  %1014 = load i32, ptr %57, align 4, !tbaa !9
  %1015 = load i32, ptr %45, align 4, !tbaa !9
  %1016 = mul nsw i32 %1014, %1015
  %1017 = add nsw i32 %1016, 1
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds double, ptr %1013, i64 %1018
  %1020 = load ptr, ptr %35, align 8, !tbaa !5
  %1021 = load i32, ptr %58, align 4, !tbaa !9
  %1022 = load i32, ptr %45, align 4, !tbaa !9
  %1023 = mul nsw i32 %1021, %1022
  %1024 = add nsw i32 %1023, 1
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds double, ptr %1020, i64 %1025
  call void @dswap_(ptr noundef %1012, ptr noundef %1019, ptr noundef @c__1, ptr noundef %1026, ptr noundef @c__1)
  br label %1027

1027:                                             ; preds = %997, %994
  br label %1028

1028:                                             ; preds = %1027
  %1029 = load i32, ptr %58, align 4, !tbaa !9
  %1030 = add nsw i32 %1029, 1
  store i32 %1030, ptr %58, align 4, !tbaa !9
  br label %957, !llvm.loop !18

1031:                                             ; preds = %957
  br label %1032

1032:                                             ; preds = %1031, %950
  %1033 = load i32, ptr %90, align 4, !tbaa !9
  %1034 = sitofp i32 %1033 to double
  %1035 = load ptr, ptr %38, align 8, !tbaa !5
  %1036 = getelementptr inbounds double, ptr %1035, i64 1
  store double %1034, ptr %1036, align 8, !tbaa !11
  %1037 = load i32, ptr %84, align 4, !tbaa !9
  %1038 = load ptr, ptr %40, align 8, !tbaa !5
  %1039 = getelementptr inbounds i32, ptr %1038, i64 1
  store i32 %1037, ptr %1039, align 4, !tbaa !9
  store i32 1, ptr %96, align 4
  br label %1040

1040:                                             ; preds = %1032, %463, %394, %387, %379
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

declare double @dlansy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dsytrd_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dsterf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dstemr_(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 void @dormtr_(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 void @dstebz_(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 void @dstein_(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 void @dswap_(ptr noundef, ptr noundef, 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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !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"

@c__10 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.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
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dsyevr_(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 nocapture noundef readonly %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) local_unnamed_addr #0 {
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %29 = alloca [1 x i8], align 1
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #5
  %37 = load i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %37, -1
  %38 = sext i32 %narrow to i64
  %39 = getelementptr inbounds double, ptr %4, i64 %38
  %40 = getelementptr inbounds i8, ptr %12, i64 -8
  %41 = load i32, ptr %14, align 4, !tbaa !5
  %narrow411 = xor i32 %41, -1
  %42 = sext i32 %narrow411 to i64
  %43 = getelementptr inbounds double, ptr %13, i64 %42
  %44 = getelementptr inbounds i8, ptr %16, i64 -8
  %45 = getelementptr inbounds i8, ptr %18, i64 -4
  %46 = tail call i32 @ilaenv_(ptr noundef nonnull @c__10, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull @c__3, ptr noundef nonnull @c__4, i32 noundef 6, i32 noundef 1) #5
  %47 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #5
  %48 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %49 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %50 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %51 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #5
  %52 = load i32, ptr %17, align 4, !tbaa !5
  %53 = icmp eq i32 %52, -1
  br i1 %53, label %57, label %54

54:                                               ; preds = %21
  %55 = load i32, ptr %19, align 4, !tbaa !5
  %56 = icmp eq i32 %55, -1
  br label %57

57:                                               ; preds = %54, %21
  %58 = phi i1 [ true, %21 ], [ %56, %54 ]
  %59 = load i32, ptr %3, align 4, !tbaa !5
  %60 = mul nsw i32 %59, 26
  %61 = icmp slt i32 %59, 1
  %62 = select i1 %61, i32 1, i32 %60
  %63 = mul nsw i32 %59, 10
  %64 = select i1 %61, i32 1, i32 %63
  store i32 0, ptr %20, align 4, !tbaa !5
  %.not = icmp ne i32 %48, 0
  br i1 %.not, label %67, label %65

65:                                               ; preds = %57
  %66 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not390 = icmp eq i32 %66, 0
  br i1 %.not390, label %.thread422.sink.split, label %67

67:                                               ; preds = %65, %57
  %68 = icmp ne i32 %49, 0
  %69 = icmp ne i32 %50, 0
  %or.cond = select i1 %68, i1 true, i1 %69
  %70 = icmp ne i32 %51, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %70
  br i1 %or.cond3, label %71, label %.thread422.sink.split

71:                                               ; preds = %67
  %.not391 = icmp eq i32 %47, 0
  br i1 %.not391, label %72, label %74

72:                                               ; preds = %71
  %73 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.6) #5
  %.not392 = icmp eq i32 %73, 0
  br i1 %.not392, label %.thread422.sink.split, label %74

74:                                               ; preds = %72, %71
  %75 = load i32, ptr %3, align 4, !tbaa !5
  %76 = icmp slt i32 %75, 0
  br i1 %76, label %.thread422.sink.split, label %77

77:                                               ; preds = %74
  %78 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %75, i32 1)
  %79 = icmp slt i32 %78, %spec.select
  br i1 %79, label %.thread422.sink.split, label %80

80:                                               ; preds = %77
  br i1 %69, label %81, label %86

81:                                               ; preds = %80
  %.not437 = icmp eq i32 %75, 0
  br i1 %.not437, label %95, label %82

82:                                               ; preds = %81
  %83 = load double, ptr %7, align 8, !tbaa !9
  %84 = load double, ptr %6, align 8, !tbaa !9
  %85 = fcmp ugt double %83, %84
  br i1 %85, label %95, label %.thread422.sink.split

86:                                               ; preds = %80
  br i1 %70, label %87, label %95

87:                                               ; preds = %86
  %88 = load i32, ptr %8, align 4, !tbaa !5
  %89 = icmp slt i32 %88, 1
  %90 = icmp ugt i32 %88, %spec.select
  %or.cond435 = or i1 %89, %90
  br i1 %or.cond435, label %.thread422.sink.split, label %91

91:                                               ; preds = %87
  %92 = load i32, ptr %9, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %75, i32 %88)
  %93 = icmp slt i32 %92, %.
  %94 = icmp ugt i32 %92, %75
  %or.cond436 = or i1 %93, %94
  br i1 %or.cond436, label %.thread422.sink.split, label %95

95:                                               ; preds = %91, %82, %81, %86
  %.pr = load i32, ptr %20, align 4, !tbaa !5
  %96 = icmp eq i32 %.pr, 0
  br i1 %96, label %97, label %.thread422

97:                                               ; preds = %95
  %98 = load i32, ptr %14, align 4, !tbaa !5
  %99 = icmp slt i32 %98, 1
  %100 = icmp ult i32 %98, %75
  %or.cond470 = and i1 %.not, %100
  %or.cond473 = or i1 %99, %or.cond470
  br i1 %or.cond473, label %.thread422.sink.split, label %101

101:                                              ; preds = %97
  %102 = load i32, ptr %17, align 4, !tbaa !5
  %103 = icmp sge i32 %102, %62
  %or.cond5 = select i1 %103, i1 true, i1 %58
  br i1 %or.cond5, label %104, label %.thread422.sink.split

104:                                              ; preds = %101
  %105 = load i32, ptr %19, align 4, !tbaa !5
  %106 = icmp sge i32 %105, %64
  %or.cond7 = select i1 %106, i1 true, i1 %58
  br i1 %or.cond7, label %.thread419, label %.thread422.sink.split

.thread419:                                       ; preds = %104
  %107 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %108 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  store i32 %108, ptr %23, align 4, !tbaa !5
  %109 = tail call i32 @llvm.smax.i32(i32 %107, i32 %108)
  %110 = add nsw i32 %109, 1
  %111 = load i32, ptr %3, align 4, !tbaa !5
  %112 = mul nsw i32 %110, %111
  store i32 %112, ptr %22, align 4, !tbaa !5
  %113 = tail call i32 @llvm.smax.i32(i32 %112, i32 %62)
  %114 = sitofp i32 %113 to double
  store double %114, ptr %16, align 8, !tbaa !9
  store i32 %64, ptr %18, align 4, !tbaa !5
  %.pr421.pr = load i32, ptr %20, align 4, !tbaa !5
  %.not396 = icmp eq i32 %.pr421.pr, 0
  br i1 %.not396, label %118, label %.thread422

.thread422.sink.split:                            ; preds = %104, %101, %97, %91, %87, %82, %77, %74, %72, %67, %65
  %.sink = phi i32 [ -1, %65 ], [ -2, %67 ], [ -3, %72 ], [ -4, %74 ], [ -6, %77 ], [ -8, %82 ], [ -9, %87 ], [ -10, %91 ], [ -15, %97 ], [ -18, %101 ], [ -20, %104 ]
  store i32 %.sink, ptr %20, align 4, !tbaa !5
  br label %.thread422

.thread422:                                       ; preds = %.thread422.sink.split, %95, %.thread419
  %115 = phi i32 [ %.pr421.pr, %.thread419 ], [ %.pr, %95 ], [ %.sink, %.thread422.sink.split ]
  %116 = sub nsw i32 0, %115
  store i32 %116, ptr %22, align 4, !tbaa !5
  %117 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %22, i32 noundef 6) #5
  br label %298

118:                                              ; preds = %.thread419
  br i1 %58, label %298, label %119

119:                                              ; preds = %118
  store i32 0, ptr %11, align 4, !tbaa !5
  %120 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %120, label %136 [
    i32 0, label %121
    i32 1, label %122
  ]

121:                                              ; preds = %119
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  br label %298

122:                                              ; preds = %119
  store double 7.000000e+00, ptr %16, align 8, !tbaa !9
  %or.cond9 = select i1 %68, i1 true, i1 %70
  br i1 %or.cond9, label %123, label %125

123:                                              ; preds = %122
  store i32 1, ptr %11, align 4, !tbaa !5
  %124 = load double, ptr %4, align 8, !tbaa !9
  br label %.sink.split

125:                                              ; preds = %122
  %126 = load double, ptr %6, align 8, !tbaa !9
  %127 = load double, ptr %4, align 8, !tbaa !9
  %128 = fcmp olt double %126, %127
  br i1 %128, label %129, label %133

129:                                              ; preds = %125
  %130 = load double, ptr %7, align 8, !tbaa !9
  %131 = fcmp ult double %130, %127
  br i1 %131, label %133, label %132

132:                                              ; preds = %129
  store i32 1, ptr %11, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %123, %132
  %.sink471 = phi double [ %127, %132 ], [ %124, %123 ]
  store double %.sink471, ptr %12, align 8, !tbaa !9
  br label %133

133:                                              ; preds = %.sink.split, %125, %129
  br i1 %.not, label %134, label %298

134:                                              ; preds = %133
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  store i32 1, ptr %15, align 4, !tbaa !5
  %135 = getelementptr inbounds i8, ptr %15, i64 4
  store i32 1, ptr %135, align 4, !tbaa !5
  br label %298

136:                                              ; preds = %119
  %137 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %138 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #5
  %139 = fdiv double %137, %138
  %140 = fdiv double 1.000000e+00, %139
  %141 = tail call double @sqrt(double noundef %139) #5
  %142 = tail call double @sqrt(double noundef %140) #5
  store double %142, ptr %24, align 8, !tbaa !9
  %143 = tail call double @sqrt(double noundef %137) #5
  %144 = tail call double @sqrt(double noundef %143) #5
  %145 = fdiv double 1.000000e+00, %144
  %146 = fcmp ole double %142, %145
  %147 = select i1 %146, double %142, double %145
  %148 = load double, ptr %10, align 8, !tbaa !9
  store double %148, ptr %30, align 8, !tbaa !9
  %.not397 = icmp eq i32 %50, 0
  br i1 %.not397, label %152, label %149

149:                                              ; preds = %136
  %150 = load double, ptr %6, align 8, !tbaa !9
  store double %150, ptr %35, align 8, !tbaa !9
  %151 = load double, ptr %7, align 8, !tbaa !9
  store double %151, ptr %36, align 8, !tbaa !9
  br label %152

152:                                              ; preds = %149, %136
  %153 = tail call double @dlansy_(ptr noundef nonnull @.str.11, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %16) #5
  %154 = fcmp ogt double %153, 0.000000e+00
  %155 = fcmp olt double %153, %141
  %or.cond413 = select i1 %154, i1 %155, i1 false
  br i1 %or.cond413, label %158, label %156

156:                                              ; preds = %152
  %157 = fcmp ogt double %153, %147
  br i1 %157, label %158, label %189

158:                                              ; preds = %156, %152
  %.pn = phi double [ %141, %152 ], [ %147, %156 ]
  %storemerge438 = fdiv double %.pn, %153
  store double %storemerge438, ptr %27, align 8, !tbaa !9
  %159 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %159, ptr %22, align 4, !tbaa !5
  br i1 %.not391, label %171, label %160

160:                                              ; preds = %158
  store i32 1, ptr %26, align 4, !tbaa !5
  %.not401442 = icmp slt i32 %159, 1
  br i1 %.not401442, label %.loopexit440, label %.lr.ph

.lr.ph:                                           ; preds = %160
  %161 = add i32 %37, 1
  br label %162

162:                                              ; preds = %.lr.ph, %162
  %storemerge400443 = phi i32 [ 1, %.lr.ph ], [ %169, %162 ]
  %163 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %163, %storemerge400443
  %164 = add i32 %reass.sub, 1
  store i32 %164, ptr %23, align 4, !tbaa !5
  %165 = mul i32 %storemerge400443, %161
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds double, ptr %39, i64 %166
  call void @dscal_(ptr noundef nonnull %23, ptr noundef nonnull %27, ptr noundef %167, ptr noundef nonnull @c__1) #5
  %168 = load i32, ptr %26, align 4, !tbaa !5
  %169 = add nsw i32 %168, 1
  store i32 %169, ptr %26, align 4, !tbaa !5
  %170 = load i32, ptr %22, align 4, !tbaa !5
  %.not401.not = icmp slt i32 %168, %170
  br i1 %.not401.not, label %162, label %.loopexit440, !llvm.loop !11

171:                                              ; preds = %158
  %invariant.gep = getelementptr i8, ptr %39, i64 8
  store i32 1, ptr %26, align 4, !tbaa !5
  %.not399444 = icmp slt i32 %159, 1
  br i1 %.not399444, label %.loopexit440, label %.lr.ph446

.lr.ph446:                                        ; preds = %171, %.lr.ph446
  %storemerge445 = phi i32 [ %175, %.lr.ph446 ], [ 1, %171 ]
  %172 = mul nsw i32 %storemerge445, %37
  %173 = sext i32 %172 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %173
  call void @dscal_(ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %174 = load i32, ptr %26, align 4, !tbaa !5
  %175 = add nsw i32 %174, 1
  store i32 %175, ptr %26, align 4, !tbaa !5
  %176 = load i32, ptr %22, align 4, !tbaa !5
  %.not399.not = icmp slt i32 %174, %176
  br i1 %.not399.not, label %.lr.ph446, label %.loopexit440, !llvm.loop !13

.loopexit440:                                     ; preds = %162, %.lr.ph446, %160, %171
  %177 = load double, ptr %10, align 8, !tbaa !9
  %178 = fcmp ogt double %177, 0.000000e+00
  br i1 %178, label %179, label %182

179:                                              ; preds = %.loopexit440
  %180 = load double, ptr %27, align 8, !tbaa !9
  %181 = fmul double %177, %180
  store double %181, ptr %30, align 8, !tbaa !9
  br label %182

182:                                              ; preds = %179, %.loopexit440
  br i1 %.not397, label %189, label %183

183:                                              ; preds = %182
  %184 = load double, ptr %6, align 8, !tbaa !9
  %185 = load double, ptr %27, align 8, !tbaa !9
  %186 = fmul double %184, %185
  store double %186, ptr %35, align 8, !tbaa !9
  %187 = load double, ptr %7, align 8, !tbaa !9
  %188 = fmul double %185, %187
  store double %188, ptr %36, align 8, !tbaa !9
  br label %189

189:                                              ; preds = %156, %182, %183
  %190 = phi i1 [ true, %182 ], [ true, %183 ], [ false, %156 ]
  %191 = load i32, ptr %3, align 4, !tbaa !5
  %192 = add nsw i32 %191, 1
  %193 = add nsw i32 %192, %191
  %194 = add nsw i32 %193, %191
  %195 = add nsw i32 %194, %191
  %196 = add nsw i32 %195, %191
  %197 = load i32, ptr %17, align 4, !tbaa !5
  %198 = add i32 %197, 1
  %199 = sub i32 %198, %196
  store i32 %199, ptr %33, align 4, !tbaa !5
  %200 = sext i32 %192 to i64
  %201 = getelementptr inbounds double, ptr %44, i64 %200
  %202 = sext i32 %193 to i64
  %203 = getelementptr inbounds double, ptr %44, i64 %202
  %204 = sext i32 %196 to i64
  %205 = getelementptr inbounds double, ptr %44, i64 %204
  call void @dsytrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %201, ptr noundef nonnull %203, ptr noundef nonnull %16, ptr noundef nonnull %205, ptr noundef nonnull %33, ptr noundef nonnull %28) #5
  %.not402 = icmp eq i32 %49, 0
  br i1 %.not402, label %206, label %215

206:                                              ; preds = %189
  %.not403 = icmp eq i32 %51, 0
  br i1 %.not403, label %244, label %207

207:                                              ; preds = %206
  %208 = load i32, ptr %8, align 4, !tbaa !5
  %209 = icmp eq i32 %208, 1
  br i1 %209, label %210, label %244

210:                                              ; preds = %207
  %211 = load i32, ptr %9, align 4, !tbaa !5
  %212 = load i32, ptr %3, align 4, !tbaa !5
  %213 = icmp eq i32 %211, %212
  %214 = icmp eq i32 %46, 1
  %or.cond11 = select i1 %213, i1 %214, i1 false
  br i1 %or.cond11, label %216, label %244

215:                                              ; preds = %189
  %.old10 = icmp eq i32 %46, 1
  br i1 %.old10, label %216, label %244

216:                                              ; preds = %210, %215
  br i1 %.not, label %222, label %217

217:                                              ; preds = %216
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %201, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #5
  %218 = load i32, ptr %3, align 4, !tbaa !5
  %219 = add nsw i32 %218, -1
  store i32 %219, ptr %22, align 4, !tbaa !5
  %220 = sext i32 %195 to i64
  %221 = getelementptr inbounds double, ptr %44, i64 %220
  call void @dcopy_(ptr noundef nonnull %22, ptr noundef nonnull %203, ptr noundef nonnull @c__1, ptr noundef nonnull %221, ptr noundef nonnull @c__1) #5
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %221, ptr noundef nonnull %20) #5
  br label %240

222:                                              ; preds = %216
  %223 = load i32, ptr %3, align 4, !tbaa !5
  %224 = add nsw i32 %223, -1
  store i32 %224, ptr %22, align 4, !tbaa !5
  %225 = sext i32 %195 to i64
  %226 = getelementptr inbounds double, ptr %44, i64 %225
  call void @dcopy_(ptr noundef nonnull %22, ptr noundef nonnull %203, ptr noundef nonnull @c__1, ptr noundef nonnull %226, ptr noundef nonnull @c__1) #5
  %227 = sext i32 %194 to i64
  %228 = getelementptr inbounds double, ptr %44, i64 %227
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %201, ptr noundef nonnull @c__1, ptr noundef nonnull %228, ptr noundef nonnull @c__1) #5
  %229 = load double, ptr %10, align 8, !tbaa !9
  %230 = load i32, ptr %3, align 4, !tbaa !5
  %231 = sitofp i32 %230 to double
  %232 = fmul double %231, 2.000000e+00
  %233 = fmul double %138, %232
  %234 = fcmp ole double %229, %233
  %.414 = zext i1 %234 to i32
  store i32 %.414, ptr %31, align 4, !tbaa !5
  call void @dstemr_(ptr noundef %0, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %228, ptr noundef nonnull %226, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %31, ptr noundef nonnull %205, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %20) #5
  %235 = load i32, ptr %20, align 4, !tbaa !5
  %236 = icmp eq i32 %235, 0
  br i1 %236, label %237, label %.thread429

237:                                              ; preds = %222
  %238 = load i32, ptr %17, align 4, !tbaa !5
  %reass.sub461 = sub i32 %238, %193
  %239 = add i32 %reass.sub461, 1
  store i32 %239, ptr %32, align 4, !tbaa !5
  call void @dormtr_(ptr noundef nonnull @.str.2, ptr noundef %2, ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %11, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %203, ptr noundef nonnull %32, ptr noundef nonnull %28) #5
  br label %240

240:                                              ; preds = %237, %217
  %.pr428 = load i32, ptr %20, align 4, !tbaa !5
  %241 = icmp eq i32 %.pr428, 0
  br i1 %241, label %242, label %.thread429

242:                                              ; preds = %240
  %243 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %243, ptr %11, align 4, !tbaa !5
  br label %252

.thread429:                                       ; preds = %222, %240
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %244

244:                                              ; preds = %.thread429, %215, %210, %207, %206
  %.415 = select i1 %.not, i8 66, i8 69
  store i8 %.415, ptr %29, align 1, !tbaa !14
  %245 = getelementptr inbounds i32, ptr %45, i64 %200
  %246 = sext i32 %194 to i64
  %247 = getelementptr inbounds i32, ptr %45, i64 %246
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef nonnull %35, ptr noundef nonnull %36, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %30, ptr noundef nonnull %201, ptr noundef nonnull %203, ptr noundef nonnull %11, ptr noundef nonnull %34, ptr noundef %12, ptr noundef nonnull %18, ptr noundef nonnull %245, ptr noundef nonnull %205, ptr noundef nonnull %247, ptr noundef nonnull %20) #5
  br i1 %.not, label %248, label %252

248:                                              ; preds = %244
  %249 = getelementptr inbounds i32, ptr %45, i64 %202
  call void @dstein_(ptr noundef nonnull %3, ptr noundef nonnull %201, ptr noundef nonnull %203, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %18, ptr noundef nonnull %245, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %205, ptr noundef nonnull %247, ptr noundef nonnull %249, ptr noundef nonnull %20) #5
  %250 = load i32, ptr %17, align 4, !tbaa !5
  %reass.sub462 = sub i32 %250, %193
  %251 = add i32 %reass.sub462, 1
  store i32 %251, ptr %32, align 4, !tbaa !5
  call void @dormtr_(ptr noundef nonnull @.str.2, ptr noundef %2, ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %11, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %203, ptr noundef nonnull %32, ptr noundef nonnull %28) #5
  br label %252

252:                                              ; preds = %244, %248, %242
  br i1 %190, label %253, label %263

253:                                              ; preds = %252
  %254 = load i32, ptr %20, align 4, !tbaa !5
  %255 = icmp eq i32 %254, 0
  br i1 %255, label %256, label %258

256:                                              ; preds = %253
  %257 = load i32, ptr %11, align 4, !tbaa !5
  br label %260

258:                                              ; preds = %253
  %259 = add nsw i32 %254, -1
  br label %260

260:                                              ; preds = %258, %256
  %storemerge406 = phi i32 [ %259, %258 ], [ %257, %256 ]
  store i32 %storemerge406, ptr %25, align 4, !tbaa !5
  %261 = load double, ptr %27, align 8, !tbaa !9
  %262 = fdiv double 1.000000e+00, %261
  store double %262, ptr %24, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %24, ptr noundef %12, ptr noundef nonnull @c__1) #5
  br label %263

263:                                              ; preds = %260, %252
  br i1 %.not, label %264, label %.loopexit

264:                                              ; preds = %263
  %265 = load i32, ptr %11, align 4, !tbaa !5
  %266 = add nsw i32 %265, -1
  store i32 %266, ptr %22, align 4, !tbaa !5
  %invariant.gep453 = getelementptr i8, ptr %43, i64 8
  store i32 1, ptr %26, align 4, !tbaa !5
  %.not408457 = icmp slt i32 %265, 2
  br i1 %.not408457, label %.loopexit, label %.lr.ph460

.lr.ph460:                                        ; preds = %264, %._crit_edge.thread
  %267 = phi i32 [ %295, %._crit_edge.thread ], [ %266, %264 ]
  %storemerge407458 = phi i32 [ %297, %._crit_edge.thread ], [ 1, %264 ]
  %268 = sext i32 %storemerge407458 to i64
  %269 = getelementptr inbounds double, ptr %40, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !9
  %271 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %271, ptr %23, align 4, !tbaa !5
  %.not409.not447 = icmp slt i32 %storemerge407458, %271
  br i1 %.not409.not447, label %.lr.ph451.preheader, label %._crit_edge.thread

.lr.ph451.preheader:                              ; preds = %.lr.ph460
  %wide.trip.count = sext i32 %271 to i64
  %272 = sub nsw i64 %wide.trip.count, %268
  %xtraiter = and i64 %272, 1
  %273 = add nsw i64 %wide.trip.count, -1
  %274 = icmp eq i64 %273, %268
  br i1 %274, label %._crit_edge.unr-lcssa, label %.lr.ph451.preheader.new

.lr.ph451.preheader.new:                          ; preds = %.lr.ph451.preheader
  %unroll_iter = and i64 %272, -2
  br label %.lr.ph451

.lr.ph451:                                        ; preds = %.lr.ph451, %.lr.ph451.preheader.new
  %indvars.iv = phi i64 [ %268, %.lr.ph451.preheader.new ], [ %indvars.iv.next.1, %.lr.ph451 ]
  %.0450 = phi double [ %270, %.lr.ph451.preheader.new ], [ %.1.1, %.lr.ph451 ]
  %.0368449 = phi i32 [ 0, %.lr.ph451.preheader.new ], [ %.1369.1, %.lr.ph451 ]
  %niter = phi i64 [ 0, %.lr.ph451.preheader.new ], [ %niter.next.1, %.lr.ph451 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %275 = getelementptr double, ptr %12, i64 %indvars.iv
  %276 = load double, ptr %275, align 8, !tbaa !9
  %277 = fcmp olt double %276, %.0450
  %278 = trunc nsw i64 %indvars.iv.next to i32
  %.1369 = select i1 %277, i32 %278, i32 %.0368449
  %.1 = select i1 %277, double %276, double %.0450
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, 2
  %279 = getelementptr double, ptr %12, i64 %indvars.iv.next
  %280 = load double, ptr %279, align 8, !tbaa !9
  %281 = fcmp olt double %280, %.1
  %282 = trunc nsw i64 %indvars.iv.next.1 to i32
  %.1369.1 = select i1 %281, i32 %282, i32 %.1369
  %.1.1 = select i1 %281, double %280, double %.1
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph451, !llvm.loop !15

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph451, %.lr.ph451.preheader
  %.1369.lcssa.ph = phi i32 [ poison, %.lr.ph451.preheader ], [ %.1369.1, %.lr.ph451 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph451.preheader ], [ %.1.1, %.lr.ph451 ]
  %indvars.iv.unr = phi i64 [ %268, %.lr.ph451.preheader ], [ %indvars.iv.next.1, %.lr.ph451 ]
  %.0450.unr = phi double [ %270, %.lr.ph451.preheader ], [ %.1.1, %.lr.ph451 ]
  %.0368449.unr = phi i32 [ 0, %.lr.ph451.preheader ], [ %.1369.1, %.lr.ph451 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph451.epil

.lr.ph451.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %283 = getelementptr double, ptr %12, i64 %indvars.iv.unr
  %284 = load double, ptr %283, align 8, !tbaa !9
  %285 = fcmp olt double %284, %.0450.unr
  %286 = trunc i64 %indvars.iv.unr to i32
  %287 = add i32 %286, 1
  %.1369.epil = select i1 %285, i32 %287, i32 %.0368449.unr
  %.1.epil = select i1 %285, double %284, double %.0450.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph451.epil
  %.1369.lcssa = phi i32 [ %.1369.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1369.epil, %.lr.ph451.epil ]
  %.1.lcssa = phi double [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph451.epil ]
  %.not410 = icmp eq i32 %.1369.lcssa, 0
  br i1 %.not410, label %._crit_edge.thread, label %288

288:                                              ; preds = %._crit_edge
  %289 = sext i32 %.1369.lcssa to i64
  %290 = getelementptr inbounds double, ptr %40, i64 %289
  store double %270, ptr %290, align 8, !tbaa !9
  store double %.1.lcssa, ptr %269, align 8, !tbaa !9
  %291 = mul nsw i32 %.1369.lcssa, %41
  %292 = sext i32 %291 to i64
  %gep454 = getelementptr double, ptr %invariant.gep453, i64 %292
  %293 = mul nsw i32 %storemerge407458, %41
  %294 = sext i32 %293 to i64
  %gep456 = getelementptr double, ptr %invariant.gep453, i64 %294
  call void @dswap_(ptr noundef nonnull %3, ptr noundef %gep454, ptr noundef nonnull @c__1, ptr noundef %gep456, ptr noundef nonnull @c__1) #5
  %.pre = load i32, ptr %26, align 4, !tbaa !5
  %.pre465 = load i32, ptr %22, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph460, %._crit_edge, %288
  %295 = phi i32 [ %267, %._crit_edge ], [ %.pre465, %288 ], [ %267, %.lr.ph460 ]
  %296 = phi i32 [ %storemerge407458, %._crit_edge ], [ %.pre, %288 ], [ %storemerge407458, %.lr.ph460 ]
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr %26, align 4, !tbaa !5
  %.not408.not = icmp slt i32 %296, %295
  br i1 %.not408.not, label %.lr.ph460, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge.thread, %264, %263
  store double %114, ptr %16, align 8, !tbaa !9
  store i32 %64, ptr %18, align 4, !tbaa !5
  br label %298

298:                                              ; preds = %133, %134, %118, %.loopexit, %121, %.thread422
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  ret void
}

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

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

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 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 double @dlansy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dsytrd_(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 void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dsterf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dstemr_(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 void @dormtr_(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 void @dstebz_(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 void @dstein_(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 void @dswap_(ptr noundef, ptr noundef, 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 i32 @llvm.smax.i32(i32, i32) #4

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

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

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 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!7, !7, i64 0}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}


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