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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

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

109:                                              ; preds = %18
  %110 = load ptr, ptr %19, align 8, !tbaa !5
  %111 = call i32 @lsame_(ptr noundef %110, ptr noundef @.str.3)
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %115, label %113

113:                                              ; preds = %109
  %114 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -1, ptr %114, align 4, !tbaa !9
  br label %212

115:                                              ; preds = %109, %18
  %116 = load i32, ptr %59, align 4, !tbaa !9
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %126, label %118

118:                                              ; preds = %115
  %119 = load i32, ptr %63, align 4, !tbaa !9
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %126, label %121

121:                                              ; preds = %118
  %122 = load i32, ptr %60, align 4, !tbaa !9
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %126, label %124

124:                                              ; preds = %121
  %125 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -2, ptr %125, align 4, !tbaa !9
  br label %211

126:                                              ; preds = %121, %118, %115
  %127 = load ptr, ptr %21, align 8, !tbaa !5
  %128 = call i32 @lsame_(ptr noundef %127, ptr noundef @.str.4)
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %136, label %130

130:                                              ; preds = %126
  %131 = load ptr, ptr %21, align 8, !tbaa !5
  %132 = call i32 @lsame_(ptr noundef %131, ptr noundef @.str.5)
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %136, label %134

134:                                              ; preds = %130
  %135 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -3, ptr %135, align 4, !tbaa !9
  br label %210

136:                                              ; preds = %130, %126
  %137 = load ptr, ptr %22, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  %139 = icmp slt i32 %138, 0
  br i1 %139, label %140, label %142

140:                                              ; preds = %136
  %141 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -4, ptr %141, align 4, !tbaa !9
  br label %209

142:                                              ; preds = %136
  %143 = load i32, ptr %63, align 4, !tbaa !9
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %158

145:                                              ; preds = %142
  %146 = load ptr, ptr %22, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = icmp sgt i32 %147, 0
  br i1 %148, label %149, label %157

149:                                              ; preds = %145
  %150 = load ptr, ptr %25, align 8, !tbaa !5
  %151 = load double, ptr %150, align 8, !tbaa !11
  %152 = load ptr, ptr %24, align 8, !tbaa !5
  %153 = load double, ptr %152, align 8, !tbaa !11
  %154 = fcmp ole double %151, %153
  br i1 %154, label %155, label %157

155:                                              ; preds = %149
  %156 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -7, ptr %156, align 4, !tbaa !9
  br label %157

157:                                              ; preds = %155, %149, %145
  br label %208

158:                                              ; preds = %142
  %159 = load i32, ptr %60, align 4, !tbaa !9
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %161, label %207

161:                                              ; preds = %158
  %162 = load ptr, ptr %26, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = icmp slt i32 %163, 1
  br i1 %164, label %178, label %165

165:                                              ; preds = %161
  %166 = load ptr, ptr %26, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = load ptr, ptr %22, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = icmp sge i32 1, %169
  br i1 %170, label %171, label %172

171:                                              ; preds = %165
  br label %175

172:                                              ; preds = %165
  %173 = load ptr, ptr %22, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  br label %175

175:                                              ; preds = %172, %171
  %176 = phi i32 [ 1, %171 ], [ %174, %172 ]
  %177 = icmp sgt i32 %167, %176
  br i1 %177, label %178, label %180

178:                                              ; preds = %175, %161
  %179 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -8, ptr %179, align 4, !tbaa !9
  br label %206

180:                                              ; preds = %175
  %181 = load ptr, ptr %27, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = load ptr, ptr %22, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = load ptr, ptr %26, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = icmp sle i32 %184, %186
  br i1 %187, label %188, label %191

188:                                              ; preds = %180
  %189 = load ptr, ptr %22, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  br label %194

191:                                              ; preds = %180
  %192 = load ptr, ptr %26, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %191, %188
  %195 = phi i32 [ %190, %188 ], [ %193, %191 ]
  %196 = icmp slt i32 %182, %195
  br i1 %196, label %203, label %197

197:                                              ; preds = %194
  %198 = load ptr, ptr %27, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = load ptr, ptr %22, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = icmp sgt i32 %199, %201
  br i1 %202, label %203, label %205

203:                                              ; preds = %197, %194
  %204 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -9, ptr %204, align 4, !tbaa !9
  br label %205

205:                                              ; preds = %203, %197
  br label %206

206:                                              ; preds = %205, %178
  br label %207

207:                                              ; preds = %206, %158
  br label %208

208:                                              ; preds = %207, %157
  br label %209

209:                                              ; preds = %208, %140
  br label %210

210:                                              ; preds = %209, %134
  br label %211

211:                                              ; preds = %210, %124
  br label %212

212:                                              ; preds = %211, %113
  %213 = load ptr, ptr %36, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = icmp eq i32 %214, 0
  br i1 %215, label %216, label %232

216:                                              ; preds = %212
  %217 = load ptr, ptr %32, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = icmp slt i32 %218, 1
  br i1 %219, label %229, label %220

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

223:                                              ; preds = %220
  %224 = load ptr, ptr %32, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = load ptr, ptr %22, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = icmp slt i32 %225, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %223, %216
  %230 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 -14, ptr %230, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %229, %223, %220
  br label %232

232:                                              ; preds = %231, %212
  %233 = load ptr, ptr %36, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %236, label %241

236:                                              ; preds = %232
  %237 = load ptr, ptr %36, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = sub nsw i32 0, %238
  store i32 %239, ptr %39, align 4, !tbaa !9
  %240 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %39, i32 noundef 6)
  store i32 1, ptr %77, align 4
  br label %821

241:                                              ; preds = %232
  %242 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 0, ptr %242, align 4, !tbaa !9
  %243 = load ptr, ptr %22, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = icmp eq i32 %244, 0
  br i1 %245, label %246, label %247

246:                                              ; preds = %241
  store i32 1, ptr %77, align 4
  br label %821

247:                                              ; preds = %241
  %248 = load ptr, ptr %22, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp eq i32 %249, 1
  br i1 %250, label %251, label %296

251:                                              ; preds = %247
  %252 = load i32, ptr %59, align 4, !tbaa !9
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %257, label %254

254:                                              ; preds = %251
  %255 = load i32, ptr %60, align 4, !tbaa !9
  %256 = icmp ne i32 %255, 0
  br i1 %256, label %257, label %264

257:                                              ; preds = %254, %251
  %258 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 1, ptr %258, align 4, !tbaa !9
  %259 = load ptr, ptr %23, align 8, !tbaa !5
  %260 = getelementptr inbounds double, ptr %259, i64 1
  %261 = load double, ptr %260, align 8, !tbaa !11
  %262 = load ptr, ptr %30, align 8, !tbaa !5
  %263 = getelementptr inbounds double, ptr %262, i64 1
  store double %261, ptr %263, align 8, !tbaa !11
  br label %286

264:                                              ; preds = %254
  %265 = load ptr, ptr %24, align 8, !tbaa !5
  %266 = load double, ptr %265, align 8, !tbaa !11
  %267 = load ptr, ptr %23, align 8, !tbaa !5
  %268 = getelementptr inbounds double, ptr %267, i64 1
  %269 = load double, ptr %268, align 8, !tbaa !11
  %270 = fcmp olt double %266, %269
  br i1 %270, label %271, label %285

271:                                              ; preds = %264
  %272 = load ptr, ptr %25, align 8, !tbaa !5
  %273 = load double, ptr %272, align 8, !tbaa !11
  %274 = load ptr, ptr %23, align 8, !tbaa !5
  %275 = getelementptr inbounds double, ptr %274, i64 1
  %276 = load double, ptr %275, align 8, !tbaa !11
  %277 = fcmp oge double %273, %276
  br i1 %277, label %278, label %285

278:                                              ; preds = %271
  %279 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 1, ptr %279, align 4, !tbaa !9
  %280 = load ptr, ptr %23, align 8, !tbaa !5
  %281 = getelementptr inbounds double, ptr %280, i64 1
  %282 = load double, ptr %281, align 8, !tbaa !11
  %283 = load ptr, ptr %30, align 8, !tbaa !5
  %284 = getelementptr inbounds double, ptr %283, i64 1
  store double %282, ptr %284, align 8, !tbaa !11
  br label %285

285:                                              ; preds = %278, %271, %264
  br label %286

286:                                              ; preds = %285, %257
  %287 = load i32, ptr %57, align 4, !tbaa !9
  %288 = icmp ne i32 %287, 0
  br i1 %288, label %289, label %295

289:                                              ; preds = %286
  %290 = load ptr, ptr %31, align 8, !tbaa !5
  %291 = load i32, ptr %37, align 4, !tbaa !9
  %292 = add nsw i32 %291, 1
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %290, i64 %293
  store double 1.000000e+00, ptr %294, align 8, !tbaa !11
  br label %295

295:                                              ; preds = %289, %286
  store i32 1, ptr %77, align 4
  br label %821

296:                                              ; preds = %247
  %297 = call double @dlamch_(ptr noundef @.str.7)
  store double %297, ptr %64, align 8, !tbaa !11
  %298 = call double @dlamch_(ptr noundef @.str.8)
  store double %298, ptr %73, align 8, !tbaa !11
  %299 = load double, ptr %64, align 8, !tbaa !11
  %300 = load double, ptr %73, align 8, !tbaa !11
  %301 = fdiv double %299, %300
  store double %301, ptr %72, align 8, !tbaa !11
  %302 = load double, ptr %72, align 8, !tbaa !11
  %303 = fdiv double 1.000000e+00, %302
  store double %303, ptr %66, align 8, !tbaa !11
  %304 = load double, ptr %72, align 8, !tbaa !11
  %305 = call double @sqrt(double noundef %304) #4
  store double %305, ptr %47, align 8, !tbaa !11
  %306 = load double, ptr %66, align 8, !tbaa !11
  %307 = call double @sqrt(double noundef %306) #4
  store double %307, ptr %41, align 8, !tbaa !11
  %308 = load double, ptr %64, align 8, !tbaa !11
  %309 = call double @sqrt(double noundef %308) #4
  %310 = call double @sqrt(double noundef %309) #4
  %311 = fdiv double 1.000000e+00, %310
  store double %311, ptr %42, align 8, !tbaa !11
  %312 = load double, ptr %41, align 8, !tbaa !11
  %313 = load double, ptr %42, align 8, !tbaa !11
  %314 = fcmp ole double %312, %313
  br i1 %314, label %315, label %317

315:                                              ; preds = %296
  %316 = load double, ptr %41, align 8, !tbaa !11
  br label %319

317:                                              ; preds = %296
  %318 = load double, ptr %42, align 8, !tbaa !11
  br label %319

319:                                              ; preds = %317, %315
  %320 = phi double [ %316, %315 ], [ %318, %317 ]
  store double %320, ptr %48, align 8, !tbaa !11
  store i32 0, ptr %61, align 4, !tbaa !9
  %321 = load ptr, ptr %28, align 8, !tbaa !5
  %322 = load double, ptr %321, align 8, !tbaa !11
  store double %322, ptr %65, align 8, !tbaa !11
  %323 = load i32, ptr %63, align 4, !tbaa !9
  %324 = icmp ne i32 %323, 0
  br i1 %324, label %325, label %330

325:                                              ; preds = %319
  %326 = load ptr, ptr %24, align 8, !tbaa !5
  %327 = load double, ptr %326, align 8, !tbaa !11
  store double %327, ptr %74, align 8, !tbaa !11
  %328 = load ptr, ptr %25, align 8, !tbaa !5
  %329 = load double, ptr %328, align 8, !tbaa !11
  store double %329, ptr %75, align 8, !tbaa !11
  br label %331

330:                                              ; preds = %319
  store double 0.000000e+00, ptr %74, align 8, !tbaa !11
  store double 0.000000e+00, ptr %75, align 8, !tbaa !11
  br label %331

331:                                              ; preds = %330, %325
  %332 = load ptr, ptr %21, align 8, !tbaa !5
  %333 = load ptr, ptr %22, align 8, !tbaa !5
  %334 = load ptr, ptr %23, align 8, !tbaa !5
  %335 = getelementptr inbounds double, ptr %334, i64 1
  %336 = load ptr, ptr %33, align 8, !tbaa !5
  %337 = getelementptr inbounds double, ptr %336, i64 1
  %338 = call double @dlansp_(ptr noundef @.str.9, ptr noundef %332, ptr noundef %333, ptr noundef %335, ptr noundef %337)
  store double %338, ptr %45, align 8, !tbaa !11
  %339 = load double, ptr %45, align 8, !tbaa !11
  %340 = fcmp ogt double %339, 0.000000e+00
  br i1 %340, label %341, label %349

341:                                              ; preds = %331
  %342 = load double, ptr %45, align 8, !tbaa !11
  %343 = load double, ptr %47, align 8, !tbaa !11
  %344 = fcmp olt double %342, %343
  br i1 %344, label %345, label %349

345:                                              ; preds = %341
  store i32 1, ptr %61, align 4, !tbaa !9
  %346 = load double, ptr %47, align 8, !tbaa !11
  %347 = load double, ptr %45, align 8, !tbaa !11
  %348 = fdiv double %346, %347
  store double %348, ptr %54, align 8, !tbaa !11
  br label %358

349:                                              ; preds = %341, %331
  %350 = load double, ptr %45, align 8, !tbaa !11
  %351 = load double, ptr %48, align 8, !tbaa !11
  %352 = fcmp ogt double %350, %351
  br i1 %352, label %353, label %357

353:                                              ; preds = %349
  store i32 1, ptr %61, align 4, !tbaa !9
  %354 = load double, ptr %48, align 8, !tbaa !11
  %355 = load double, ptr %45, align 8, !tbaa !11
  %356 = fdiv double %354, %355
  store double %356, ptr %54, align 8, !tbaa !11
  br label %357

357:                                              ; preds = %353, %349
  br label %358

358:                                              ; preds = %357, %345
  %359 = load i32, ptr %61, align 4, !tbaa !9
  %360 = icmp eq i32 %359, 1
  br i1 %360, label %361, label %392

361:                                              ; preds = %358
  %362 = load ptr, ptr %22, align 8, !tbaa !5
  %363 = load i32, ptr %362, align 4, !tbaa !9
  %364 = load ptr, ptr %22, align 8, !tbaa !5
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = add nsw i32 %365, 1
  %367 = mul nsw i32 %363, %366
  %368 = sdiv i32 %367, 2
  store i32 %368, ptr %39, align 4, !tbaa !9
  %369 = load ptr, ptr %23, align 8, !tbaa !5
  %370 = getelementptr inbounds double, ptr %369, i64 1
  call void @dscal_(ptr noundef %39, ptr noundef %54, ptr noundef %370, ptr noundef @c__1)
  %371 = load ptr, ptr %28, align 8, !tbaa !5
  %372 = load double, ptr %371, align 8, !tbaa !11
  %373 = fcmp ogt double %372, 0.000000e+00
  br i1 %373, label %374, label %379

374:                                              ; preds = %361
  %375 = load ptr, ptr %28, align 8, !tbaa !5
  %376 = load double, ptr %375, align 8, !tbaa !11
  %377 = load double, ptr %54, align 8, !tbaa !11
  %378 = fmul double %376, %377
  store double %378, ptr %65, align 8, !tbaa !11
  br label %379

379:                                              ; preds = %374, %361
  %380 = load i32, ptr %63, align 4, !tbaa !9
  %381 = icmp ne i32 %380, 0
  br i1 %381, label %382, label %391

382:                                              ; preds = %379
  %383 = load ptr, ptr %24, align 8, !tbaa !5
  %384 = load double, ptr %383, align 8, !tbaa !11
  %385 = load double, ptr %54, align 8, !tbaa !11
  %386 = fmul double %384, %385
  store double %386, ptr %74, align 8, !tbaa !11
  %387 = load ptr, ptr %25, align 8, !tbaa !5
  %388 = load double, ptr %387, align 8, !tbaa !11
  %389 = load double, ptr %54, align 8, !tbaa !11
  %390 = fmul double %388, %389
  store double %390, ptr %75, align 8, !tbaa !11
  br label %391

391:                                              ; preds = %382, %379
  br label %392

392:                                              ; preds = %391, %358
  store i32 1, ptr %67, align 4, !tbaa !9
  %393 = load i32, ptr %67, align 4, !tbaa !9
  %394 = load ptr, ptr %22, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = add nsw i32 %393, %395
  store i32 %396, ptr %44, align 4, !tbaa !9
  %397 = load i32, ptr %44, align 4, !tbaa !9
  %398 = load ptr, ptr %22, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = add nsw i32 %397, %399
  store i32 %400, ptr %43, align 4, !tbaa !9
  %401 = load i32, ptr %43, align 4, !tbaa !9
  %402 = load ptr, ptr %22, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = add nsw i32 %401, %403
  store i32 %404, ptr %70, align 4, !tbaa !9
  %405 = load ptr, ptr %21, align 8, !tbaa !5
  %406 = load ptr, ptr %22, align 8, !tbaa !5
  %407 = load ptr, ptr %23, align 8, !tbaa !5
  %408 = getelementptr inbounds double, ptr %407, i64 1
  %409 = load ptr, ptr %33, align 8, !tbaa !5
  %410 = load i32, ptr %43, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds double, ptr %409, i64 %411
  %413 = load ptr, ptr %33, align 8, !tbaa !5
  %414 = load i32, ptr %44, align 4, !tbaa !9
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds double, ptr %413, i64 %415
  %417 = load ptr, ptr %33, align 8, !tbaa !5
  %418 = load i32, ptr %67, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %417, i64 %419
  call void @dsptrd_(ptr noundef %405, ptr noundef %406, ptr noundef %408, ptr noundef %412, ptr noundef %416, ptr noundef %420, ptr noundef %55)
  store i32 0, ptr %49, align 4, !tbaa !9
  %421 = load i32, ptr %60, align 4, !tbaa !9
  %422 = icmp ne i32 %421, 0
  br i1 %422, label %423, label %435

423:                                              ; preds = %392
  %424 = load ptr, ptr %26, align 8, !tbaa !5
  %425 = load i32, ptr %424, align 4, !tbaa !9
  %426 = icmp eq i32 %425, 1
  br i1 %426, label %427, label %434

427:                                              ; preds = %423
  %428 = load ptr, ptr %27, align 8, !tbaa !5
  %429 = load i32, ptr %428, align 4, !tbaa !9
  %430 = load ptr, ptr %22, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = icmp eq i32 %429, %431
  br i1 %432, label %433, label %434

433:                                              ; preds = %427
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %434

434:                                              ; preds = %433, %427, %423
  br label %435

435:                                              ; preds = %434, %392
  %436 = load i32, ptr %59, align 4, !tbaa !9
  %437 = icmp ne i32 %436, 0
  br i1 %437, label %441, label %438

438:                                              ; preds = %435
  %439 = load i32, ptr %49, align 4, !tbaa !9
  %440 = icmp ne i32 %439, 0
  br i1 %440, label %441, label %557

441:                                              ; preds = %438, %435
  %442 = load ptr, ptr %28, align 8, !tbaa !5
  %443 = load double, ptr %442, align 8, !tbaa !11
  %444 = fcmp ole double %443, 0.000000e+00
  br i1 %444, label %445, label %557

445:                                              ; preds = %441
  %446 = load ptr, ptr %22, align 8, !tbaa !5
  %447 = load ptr, ptr %33, align 8, !tbaa !5
  %448 = load i32, ptr %43, align 4, !tbaa !9
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds double, ptr %447, i64 %449
  %451 = load ptr, ptr %30, align 8, !tbaa !5
  %452 = getelementptr inbounds double, ptr %451, i64 1
  call void @dcopy_(ptr noundef %446, ptr noundef %450, ptr noundef @c__1, ptr noundef %452, ptr noundef @c__1)
  %453 = load i32, ptr %70, align 4, !tbaa !9
  %454 = load ptr, ptr %22, align 8, !tbaa !5
  %455 = load i32, ptr %454, align 4, !tbaa !9
  %456 = shl i32 %455, 1
  %457 = add nsw i32 %453, %456
  store i32 %457, ptr %53, align 4, !tbaa !9
  %458 = load i32, ptr %57, align 4, !tbaa !9
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %480, label %460

460:                                              ; preds = %445
  %461 = load ptr, ptr %22, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = sub nsw i32 %462, 1
  store i32 %463, ptr %39, align 4, !tbaa !9
  %464 = load ptr, ptr %33, align 8, !tbaa !5
  %465 = load i32, ptr %44, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds double, ptr %464, i64 %466
  %468 = load ptr, ptr %33, align 8, !tbaa !5
  %469 = load i32, ptr %53, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %468, i64 %470
  call void @dcopy_(ptr noundef %39, ptr noundef %467, ptr noundef @c__1, ptr noundef %471, ptr noundef @c__1)
  %472 = load ptr, ptr %22, align 8, !tbaa !5
  %473 = load ptr, ptr %30, align 8, !tbaa !5
  %474 = getelementptr inbounds double, ptr %473, i64 1
  %475 = load ptr, ptr %33, align 8, !tbaa !5
  %476 = load i32, ptr %53, align 4, !tbaa !9
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %475, i64 %477
  %479 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %472, ptr noundef %474, ptr noundef %478, ptr noundef %479)
  br label %547

480:                                              ; preds = %445
  %481 = load ptr, ptr %21, align 8, !tbaa !5
  %482 = load ptr, ptr %22, align 8, !tbaa !5
  %483 = load ptr, ptr %23, align 8, !tbaa !5
  %484 = getelementptr inbounds double, ptr %483, i64 1
  %485 = load ptr, ptr %33, align 8, !tbaa !5
  %486 = load i32, ptr %67, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds double, ptr %485, i64 %487
  %489 = load ptr, ptr %31, align 8, !tbaa !5
  %490 = load i32, ptr %38, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %489, i64 %491
  %493 = load ptr, ptr %32, align 8, !tbaa !5
  %494 = load ptr, ptr %33, align 8, !tbaa !5
  %495 = load i32, ptr %70, align 4, !tbaa !9
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds double, ptr %494, i64 %496
  call void @dopgtr_(ptr noundef %481, ptr noundef %482, ptr noundef %484, ptr noundef %488, ptr noundef %492, ptr noundef %493, ptr noundef %497, ptr noundef %55)
  %498 = load ptr, ptr %22, align 8, !tbaa !5
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = sub nsw i32 %499, 1
  store i32 %500, ptr %39, align 4, !tbaa !9
  %501 = load ptr, ptr %33, 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 %33, align 8, !tbaa !5
  %506 = load i32, ptr %53, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds double, ptr %505, i64 %507
  call void @dcopy_(ptr noundef %39, ptr noundef %504, ptr noundef @c__1, ptr noundef %508, ptr noundef @c__1)
  %509 = load ptr, ptr %19, align 8, !tbaa !5
  %510 = load ptr, ptr %22, align 8, !tbaa !5
  %511 = load ptr, ptr %30, align 8, !tbaa !5
  %512 = getelementptr inbounds double, ptr %511, i64 1
  %513 = load ptr, ptr %33, align 8, !tbaa !5
  %514 = load i32, ptr %53, align 4, !tbaa !9
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds double, ptr %513, i64 %515
  %517 = load ptr, ptr %31, align 8, !tbaa !5
  %518 = load i32, ptr %38, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %517, i64 %519
  %521 = load ptr, ptr %32, align 8, !tbaa !5
  %522 = load ptr, ptr %33, align 8, !tbaa !5
  %523 = load i32, ptr %70, align 4, !tbaa !9
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds double, ptr %522, i64 %524
  %526 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dsteqr_(ptr noundef %509, ptr noundef %510, ptr noundef %512, ptr noundef %516, ptr noundef %520, ptr noundef %521, ptr noundef %525, ptr noundef %526)
  %527 = load ptr, ptr %36, align 8, !tbaa !5
  %528 = load i32, ptr %527, align 4, !tbaa !9
  %529 = icmp eq i32 %528, 0
  br i1 %529, label %530, label %546

530:                                              ; preds = %480
  %531 = load ptr, ptr %22, align 8, !tbaa !5
  %532 = load i32, ptr %531, align 4, !tbaa !9
  store i32 %532, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  br label %533

533:                                              ; preds = %542, %530
  %534 = load i32, ptr %51, align 4, !tbaa !9
  %535 = load i32, ptr %39, align 4, !tbaa !9
  %536 = icmp sle i32 %534, %535
  br i1 %536, label %537, label %545

537:                                              ; preds = %533
  %538 = load ptr, ptr %35, align 8, !tbaa !5
  %539 = load i32, ptr %51, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds i32, ptr %538, i64 %540
  store i32 0, ptr %541, align 4, !tbaa !9
  br label %542

542:                                              ; preds = %537
  %543 = load i32, ptr %51, align 4, !tbaa !9
  %544 = add nsw i32 %543, 1
  store i32 %544, ptr %51, align 4, !tbaa !9
  br label %533, !llvm.loop !13

545:                                              ; preds = %533
  br label %546

546:                                              ; preds = %545, %480
  br label %547

547:                                              ; preds = %546, %460
  %548 = load ptr, ptr %36, align 8, !tbaa !5
  %549 = load i32, ptr %548, align 4, !tbaa !9
  %550 = icmp eq i32 %549, 0
  br i1 %550, label %551, label %555

551:                                              ; preds = %547
  %552 = load ptr, ptr %22, align 8, !tbaa !5
  %553 = load i32, ptr %552, align 4, !tbaa !9
  %554 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %553, ptr %554, align 4, !tbaa !9
  br label %664

555:                                              ; preds = %547
  %556 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 0, ptr %556, align 4, !tbaa !9
  br label %557

557:                                              ; preds = %555, %441, %438
  %558 = load i32, ptr %57, align 4, !tbaa !9
  %559 = icmp ne i32 %558, 0
  br i1 %559, label %560, label %562

560:                                              ; preds = %557
  %561 = getelementptr inbounds [1 x i8], ptr %56, i64 0, i64 0
  store i8 66, ptr %561, align 1, !tbaa !15
  br label %564

562:                                              ; preds = %557
  %563 = getelementptr inbounds [1 x i8], ptr %56, i64 0, i64 0
  store i8 69, ptr %563, align 1, !tbaa !15
  br label %564

564:                                              ; preds = %562, %560
  store i32 1, ptr %62, align 4, !tbaa !9
  %565 = load i32, ptr %62, align 4, !tbaa !9
  %566 = load ptr, ptr %22, align 8, !tbaa !5
  %567 = load i32, ptr %566, align 4, !tbaa !9
  %568 = add nsw i32 %565, %567
  store i32 %568, ptr %68, align 4, !tbaa !9
  %569 = load i32, ptr %68, align 4, !tbaa !9
  %570 = load ptr, ptr %22, align 8, !tbaa !5
  %571 = load i32, ptr %570, align 4, !tbaa !9
  %572 = add nsw i32 %569, %571
  store i32 %572, ptr %69, align 4, !tbaa !9
  %573 = load ptr, ptr %20, align 8, !tbaa !5
  %574 = getelementptr inbounds [1 x i8], ptr %56, i64 0, i64 0
  %575 = load ptr, ptr %22, align 8, !tbaa !5
  %576 = load ptr, ptr %26, align 8, !tbaa !5
  %577 = load ptr, ptr %27, align 8, !tbaa !5
  %578 = load ptr, ptr %33, align 8, !tbaa !5
  %579 = load i32, ptr %43, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds double, ptr %578, i64 %580
  %582 = load ptr, ptr %33, align 8, !tbaa !5
  %583 = load i32, ptr %44, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds double, ptr %582, i64 %584
  %586 = load ptr, ptr %29, align 8, !tbaa !5
  %587 = load ptr, ptr %30, align 8, !tbaa !5
  %588 = getelementptr inbounds double, ptr %587, i64 1
  %589 = load ptr, ptr %34, align 8, !tbaa !5
  %590 = load i32, ptr %62, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds i32, ptr %589, i64 %591
  %593 = load ptr, ptr %34, align 8, !tbaa !5
  %594 = load i32, ptr %68, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds i32, ptr %593, i64 %595
  %597 = load ptr, ptr %33, align 8, !tbaa !5
  %598 = load i32, ptr %70, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds double, ptr %597, i64 %599
  %601 = load ptr, ptr %34, align 8, !tbaa !5
  %602 = load i32, ptr %69, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds i32, ptr %601, i64 %603
  %605 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %573, ptr noundef %574, ptr noundef %575, ptr noundef %74, ptr noundef %75, ptr noundef %576, ptr noundef %577, ptr noundef %65, ptr noundef %581, ptr noundef %585, ptr noundef %586, ptr noundef %71, ptr noundef %588, ptr noundef %592, ptr noundef %596, ptr noundef %600, ptr noundef %604, ptr noundef %605)
  %606 = load i32, ptr %57, align 4, !tbaa !9
  %607 = icmp ne i32 %606, 0
  br i1 %607, label %608, label %663

608:                                              ; preds = %564
  %609 = load ptr, ptr %22, align 8, !tbaa !5
  %610 = load ptr, ptr %33, align 8, !tbaa !5
  %611 = load i32, ptr %43, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %610, i64 %612
  %614 = load ptr, ptr %33, align 8, !tbaa !5
  %615 = load i32, ptr %44, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %614, i64 %616
  %618 = load ptr, ptr %29, align 8, !tbaa !5
  %619 = load ptr, ptr %30, align 8, !tbaa !5
  %620 = getelementptr inbounds double, ptr %619, i64 1
  %621 = load ptr, ptr %34, align 8, !tbaa !5
  %622 = load i32, ptr %62, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds i32, ptr %621, i64 %623
  %625 = load ptr, ptr %34, align 8, !tbaa !5
  %626 = load i32, ptr %68, align 4, !tbaa !9
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds i32, ptr %625, i64 %627
  %629 = load ptr, ptr %31, align 8, !tbaa !5
  %630 = load i32, ptr %38, align 4, !tbaa !9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds double, ptr %629, i64 %631
  %633 = load ptr, ptr %32, align 8, !tbaa !5
  %634 = load ptr, ptr %33, align 8, !tbaa !5
  %635 = load i32, ptr %70, align 4, !tbaa !9
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds double, ptr %634, i64 %636
  %638 = load ptr, ptr %34, align 8, !tbaa !5
  %639 = load i32, ptr %69, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds i32, ptr %638, i64 %640
  %642 = load ptr, ptr %35, align 8, !tbaa !5
  %643 = getelementptr inbounds i32, ptr %642, i64 1
  %644 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dstein_(ptr noundef %609, ptr noundef %613, ptr noundef %617, ptr noundef %618, ptr noundef %620, ptr noundef %624, ptr noundef %628, ptr noundef %632, ptr noundef %633, ptr noundef %637, ptr noundef %641, ptr noundef %643, ptr noundef %644)
  %645 = load ptr, ptr %21, align 8, !tbaa !5
  %646 = load ptr, ptr %22, align 8, !tbaa !5
  %647 = load ptr, ptr %29, align 8, !tbaa !5
  %648 = load ptr, ptr %23, align 8, !tbaa !5
  %649 = getelementptr inbounds double, ptr %648, i64 1
  %650 = load ptr, ptr %33, align 8, !tbaa !5
  %651 = load i32, ptr %67, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %650, i64 %652
  %654 = load ptr, ptr %31, align 8, !tbaa !5
  %655 = load i32, ptr %38, align 4, !tbaa !9
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds double, ptr %654, i64 %656
  %658 = load ptr, ptr %32, align 8, !tbaa !5
  %659 = load ptr, ptr %33, align 8, !tbaa !5
  %660 = load i32, ptr %70, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds double, ptr %659, i64 %661
  call void @dopmtr_(ptr noundef @.str.4, ptr noundef %645, ptr noundef @.str.3, ptr noundef %646, ptr noundef %647, ptr noundef %649, ptr noundef %653, ptr noundef %657, ptr noundef %658, ptr noundef %662, ptr noundef %55)
  br label %663

663:                                              ; preds = %608, %564
  br label %664

664:                                              ; preds = %663, %551
  %665 = load i32, ptr %61, align 4, !tbaa !9
  %666 = icmp eq i32 %665, 1
  br i1 %666, label %667, label %683

667:                                              ; preds = %664
  %668 = load ptr, ptr %36, align 8, !tbaa !5
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = icmp eq i32 %669, 0
  br i1 %670, label %671, label %674

671:                                              ; preds = %667
  %672 = load ptr, ptr %29, align 8, !tbaa !5
  %673 = load i32, ptr %672, align 4, !tbaa !9
  store i32 %673, ptr %46, align 4, !tbaa !9
  br label %678

674:                                              ; preds = %667
  %675 = load ptr, ptr %36, align 8, !tbaa !5
  %676 = load i32, ptr %675, align 4, !tbaa !9
  %677 = sub nsw i32 %676, 1
  store i32 %677, ptr %46, align 4, !tbaa !9
  br label %678

678:                                              ; preds = %674, %671
  %679 = load double, ptr %54, align 8, !tbaa !11
  %680 = fdiv double 1.000000e+00, %679
  store double %680, ptr %41, align 8, !tbaa !11
  %681 = load ptr, ptr %30, align 8, !tbaa !5
  %682 = getelementptr inbounds double, ptr %681, i64 1
  call void @dscal_(ptr noundef %46, ptr noundef %41, ptr noundef %682, ptr noundef @c__1)
  br label %683

683:                                              ; preds = %678, %664
  %684 = load i32, ptr %57, align 4, !tbaa !9
  %685 = icmp ne i32 %684, 0
  br i1 %685, label %686, label %820

686:                                              ; preds = %683
  %687 = load ptr, ptr %29, align 8, !tbaa !5
  %688 = load i32, ptr %687, align 4, !tbaa !9
  %689 = sub nsw i32 %688, 1
  store i32 %689, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %690

690:                                              ; preds = %816, %686
  %691 = load i32, ptr %52, align 4, !tbaa !9
  %692 = load i32, ptr %39, align 4, !tbaa !9
  %693 = icmp sle i32 %691, %692
  br i1 %693, label %694, label %819

694:                                              ; preds = %690
  store i32 0, ptr %51, align 4, !tbaa !9
  %695 = load ptr, ptr %30, align 8, !tbaa !5
  %696 = load i32, ptr %52, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %695, i64 %697
  %699 = load double, ptr %698, align 8, !tbaa !11
  store double %699, ptr %76, align 8, !tbaa !11
  %700 = load ptr, ptr %29, align 8, !tbaa !5
  %701 = load i32, ptr %700, align 4, !tbaa !9
  store i32 %701, ptr %40, align 4, !tbaa !9
  %702 = load i32, ptr %52, align 4, !tbaa !9
  %703 = add nsw i32 %702, 1
  store i32 %703, ptr %58, align 4, !tbaa !9
  br label %704

704:                                              ; preds = %724, %694
  %705 = load i32, ptr %58, align 4, !tbaa !9
  %706 = load i32, ptr %40, align 4, !tbaa !9
  %707 = icmp sle i32 %705, %706
  br i1 %707, label %708, label %727

708:                                              ; preds = %704
  %709 = load ptr, ptr %30, align 8, !tbaa !5
  %710 = load i32, ptr %58, align 4, !tbaa !9
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds double, ptr %709, i64 %711
  %713 = load double, ptr %712, align 8, !tbaa !11
  %714 = load double, ptr %76, align 8, !tbaa !11
  %715 = fcmp olt double %713, %714
  br i1 %715, label %716, label %723

716:                                              ; preds = %708
  %717 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %717, ptr %51, align 4, !tbaa !9
  %718 = load ptr, ptr %30, align 8, !tbaa !5
  %719 = load i32, ptr %58, align 4, !tbaa !9
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds double, ptr %718, i64 %720
  %722 = load double, ptr %721, align 8, !tbaa !11
  store double %722, ptr %76, align 8, !tbaa !11
  br label %723

723:                                              ; preds = %716, %708
  br label %724

724:                                              ; preds = %723
  %725 = load i32, ptr %58, align 4, !tbaa !9
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr %58, align 4, !tbaa !9
  br label %704, !llvm.loop !16

727:                                              ; preds = %704
  %728 = load i32, ptr %51, align 4, !tbaa !9
  %729 = icmp ne i32 %728, 0
  br i1 %729, label %730, label %815

730:                                              ; preds = %727
  %731 = load ptr, ptr %34, align 8, !tbaa !5
  %732 = load i32, ptr %62, align 4, !tbaa !9
  %733 = load i32, ptr %51, align 4, !tbaa !9
  %734 = add nsw i32 %732, %733
  %735 = sub nsw i32 %734, 1
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds i32, ptr %731, i64 %736
  %738 = load i32, ptr %737, align 4, !tbaa !9
  store i32 %738, ptr %50, align 4, !tbaa !9
  %739 = load ptr, ptr %30, align 8, !tbaa !5
  %740 = load i32, ptr %52, align 4, !tbaa !9
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds double, ptr %739, i64 %741
  %743 = load double, ptr %742, align 8, !tbaa !11
  %744 = load ptr, ptr %30, align 8, !tbaa !5
  %745 = load i32, ptr %51, align 4, !tbaa !9
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds double, ptr %744, i64 %746
  store double %743, ptr %747, align 8, !tbaa !11
  %748 = load ptr, ptr %34, align 8, !tbaa !5
  %749 = load i32, ptr %62, align 4, !tbaa !9
  %750 = load i32, ptr %52, align 4, !tbaa !9
  %751 = add nsw i32 %749, %750
  %752 = sub nsw i32 %751, 1
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds i32, ptr %748, i64 %753
  %755 = load i32, ptr %754, align 4, !tbaa !9
  %756 = load ptr, ptr %34, align 8, !tbaa !5
  %757 = load i32, ptr %62, align 4, !tbaa !9
  %758 = load i32, ptr %51, align 4, !tbaa !9
  %759 = add nsw i32 %757, %758
  %760 = sub nsw i32 %759, 1
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds i32, ptr %756, i64 %761
  store i32 %755, ptr %762, align 4, !tbaa !9
  %763 = load double, ptr %76, align 8, !tbaa !11
  %764 = load ptr, ptr %30, align 8, !tbaa !5
  %765 = load i32, ptr %52, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds double, ptr %764, i64 %766
  store double %763, ptr %767, align 8, !tbaa !11
  %768 = load i32, ptr %50, align 4, !tbaa !9
  %769 = load ptr, ptr %34, align 8, !tbaa !5
  %770 = load i32, ptr %62, align 4, !tbaa !9
  %771 = load i32, ptr %52, align 4, !tbaa !9
  %772 = add nsw i32 %770, %771
  %773 = sub nsw i32 %772, 1
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds i32, ptr %769, i64 %774
  store i32 %768, ptr %775, align 4, !tbaa !9
  %776 = load ptr, ptr %22, align 8, !tbaa !5
  %777 = load ptr, ptr %31, align 8, !tbaa !5
  %778 = load i32, ptr %51, align 4, !tbaa !9
  %779 = load i32, ptr %37, align 4, !tbaa !9
  %780 = mul nsw i32 %778, %779
  %781 = add nsw i32 %780, 1
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds double, ptr %777, i64 %782
  %784 = load ptr, ptr %31, align 8, !tbaa !5
  %785 = load i32, ptr %52, align 4, !tbaa !9
  %786 = load i32, ptr %37, align 4, !tbaa !9
  %787 = mul nsw i32 %785, %786
  %788 = add nsw i32 %787, 1
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds double, ptr %784, i64 %789
  call void @dswap_(ptr noundef %776, ptr noundef %783, ptr noundef @c__1, ptr noundef %790, ptr noundef @c__1)
  %791 = load ptr, ptr %36, align 8, !tbaa !5
  %792 = load i32, ptr %791, align 4, !tbaa !9
  %793 = icmp ne i32 %792, 0
  br i1 %793, label %794, label %814

794:                                              ; preds = %730
  %795 = load ptr, ptr %35, align 8, !tbaa !5
  %796 = load i32, ptr %51, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds i32, ptr %795, i64 %797
  %799 = load i32, ptr %798, align 4, !tbaa !9
  store i32 %799, ptr %50, align 4, !tbaa !9
  %800 = load ptr, ptr %35, align 8, !tbaa !5
  %801 = load i32, ptr %52, align 4, !tbaa !9
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds i32, ptr %800, i64 %802
  %804 = load i32, ptr %803, align 4, !tbaa !9
  %805 = load ptr, ptr %35, align 8, !tbaa !5
  %806 = load i32, ptr %51, align 4, !tbaa !9
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds i32, ptr %805, i64 %807
  store i32 %804, ptr %808, align 4, !tbaa !9
  %809 = load i32, ptr %50, align 4, !tbaa !9
  %810 = load ptr, ptr %35, align 8, !tbaa !5
  %811 = load i32, ptr %52, align 4, !tbaa !9
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds i32, ptr %810, i64 %812
  store i32 %809, ptr %813, align 4, !tbaa !9
  br label %814

814:                                              ; preds = %794, %730
  br label %815

815:                                              ; preds = %814, %727
  br label %816

816:                                              ; preds = %815
  %817 = load i32, ptr %52, align 4, !tbaa !9
  %818 = add nsw i32 %817, 1
  store i32 %818, ptr %52, align 4, !tbaa !9
  br label %690, !llvm.loop !17

819:                                              ; preds = %690
  br label %820

820:                                              ; preds = %819, %683
  store i32 1, ptr %77, align 4
  br label %821

821:                                              ; preds = %820, %295, %246, %236
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 1, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #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 @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 @dlansp_(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 @dsptrd_(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 @dopgtr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dsteqr_(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 @dopmtr_(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 = !{!7, !7, i64 0}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dspevx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef readonly %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) local_unnamed_addr #0 {
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca i32, align 4
  %22 = alloca double, align 8
  %23 = alloca i32, align 4
  %24 = alloca [1 x i8], align 1
  %25 = alloca double, align 8
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  %29 = getelementptr inbounds i8, ptr %11, i64 -8
  %30 = load i32, ptr %13, align 4, !tbaa !5
  %narrow = xor i32 %30, -1
  %31 = sext i32 %narrow to i64
  %32 = getelementptr inbounds double, ptr %12, i64 %31
  %33 = getelementptr inbounds i8, ptr %14, i64 -8
  %34 = getelementptr inbounds i8, ptr %15, i64 -4
  %35 = getelementptr inbounds i8, ptr %16, i64 -4
  %36 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %37 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %38 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %39 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  store i32 0, ptr %17, align 4, !tbaa !5
  %.not = icmp ne i32 %36, 0
  br i1 %.not, label %42, label %40

40:                                               ; preds = %18
  %41 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not323 = icmp eq i32 %41, 0
  br i1 %.not323, label %.thread344.sink.split, label %42

42:                                               ; preds = %40, %18
  %43 = icmp ne i32 %37, 0
  %44 = icmp ne i32 %38, 0
  %or.cond = select i1 %43, i1 true, i1 %44
  %45 = icmp ne i32 %39, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %45
  br i1 %or.cond3, label %46, label %.thread344.sink.split

46:                                               ; preds = %42
  %47 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #6
  %.not324 = icmp eq i32 %47, 0
  br i1 %.not324, label %48, label %50

48:                                               ; preds = %46
  %49 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #6
  %.not325 = icmp eq i32 %49, 0
  br i1 %.not325, label %.thread344.sink.split, label %50

50:                                               ; preds = %48, %46
  %51 = load i32, ptr %3, align 4, !tbaa !5
  %52 = icmp slt i32 %51, 0
  br i1 %52, label %.thread344.sink.split, label %53

53:                                               ; preds = %50
  br i1 %44, label %54, label %59

54:                                               ; preds = %53
  %.not327 = icmp eq i32 %51, 0
  br i1 %.not327, label %68, label %55

55:                                               ; preds = %54
  %56 = load double, ptr %6, align 8, !tbaa !9
  %57 = load double, ptr %5, align 8, !tbaa !9
  %58 = fcmp ugt double %56, %57
  br i1 %58, label %68, label %.thread344.sink.split

59:                                               ; preds = %53
  br i1 %45, label %60, label %68

60:                                               ; preds = %59
  %61 = load i32, ptr %7, align 4, !tbaa !5
  %62 = icmp slt i32 %61, 1
  %spec.select = tail call i32 @llvm.umax.i32(i32 %51, i32 1)
  %63 = icmp ugt i32 %61, %spec.select
  %or.cond355 = or i1 %62, %63
  br i1 %or.cond355, label %.thread344.sink.split, label %64

64:                                               ; preds = %60
  %65 = load i32, ptr %8, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %51, i32 %61)
  %66 = icmp slt i32 %65, %.
  %67 = icmp ugt i32 %65, %51
  %or.cond353 = or i1 %66, %67
  br i1 %or.cond353, label %.thread344.sink.split, label %68

68:                                               ; preds = %64, %59, %54, %55
  %.pr = load i32, ptr %17, align 4, !tbaa !5
  %69 = icmp eq i32 %.pr, 0
  br i1 %69, label %70, label %.thread344

70:                                               ; preds = %68
  %71 = load i32, ptr %13, align 4, !tbaa !5
  %72 = icmp slt i32 %71, 1
  %73 = icmp ult i32 %71, %51
  %or.cond381 = and i1 %.not, %73
  %or.cond384 = or i1 %72, %or.cond381
  br i1 %or.cond384, label %.thread344.sink.split, label %.thread

.thread344.sink.split:                            ; preds = %70, %64, %60, %55, %50, %48, %42, %40
  %.sink382 = phi i32 [ -1, %40 ], [ -2, %42 ], [ -3, %48 ], [ -4, %50 ], [ -7, %55 ], [ -8, %60 ], [ -9, %64 ], [ -14, %70 ]
  store i32 %.sink382, ptr %17, align 4, !tbaa !5
  br label %.thread344

.thread344:                                       ; preds = %.thread344.sink.split, %68
  %74 = phi i32 [ %.pr, %68 ], [ %.sink382, %.thread344.sink.split ]
  %75 = sub nsw i32 0, %74
  store i32 %75, ptr %19, align 4, !tbaa !5
  %76 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %19, i32 noundef 6) #6
  br label %.loopexit

.thread:                                          ; preds = %70
  store i32 0, ptr %10, align 4, !tbaa !5
  %77 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %77, label %91 [
    i32 0, label %.loopexit
    i32 1, label %78
  ]

78:                                               ; preds = %.thread
  %or.cond5 = select i1 %43, i1 true, i1 %45
  br i1 %or.cond5, label %79, label %81

79:                                               ; preds = %78
  store i32 1, ptr %10, align 4, !tbaa !5
  %80 = load double, ptr %4, align 8, !tbaa !9
  br label %.sink.split

81:                                               ; preds = %78
  %82 = load double, ptr %5, align 8, !tbaa !9
  %83 = load double, ptr %4, align 8, !tbaa !9
  %84 = fcmp olt double %82, %83
  br i1 %84, label %85, label %89

85:                                               ; preds = %81
  %86 = load double, ptr %6, align 8, !tbaa !9
  %87 = fcmp ult double %86, %83
  br i1 %87, label %89, label %88

88:                                               ; preds = %85
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %79, %88
  %.sink383 = phi double [ %83, %88 ], [ %80, %79 ]
  store double %.sink383, ptr %11, align 8, !tbaa !9
  br label %89

89:                                               ; preds = %.sink.split, %81, %85
  br i1 %.not, label %90, label %.loopexit

90:                                               ; preds = %89
  store double 1.000000e+00, ptr %12, align 8, !tbaa !9
  br label %.loopexit

91:                                               ; preds = %.thread
  %92 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #6
  %93 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %94 = fdiv double %92, %93
  %95 = fdiv double 1.000000e+00, %94
  %96 = tail call double @sqrt(double noundef %94) #6
  %97 = tail call double @sqrt(double noundef %95) #6
  store double %97, ptr %20, align 8, !tbaa !9
  %98 = tail call double @sqrt(double noundef %92) #6
  %99 = tail call double @sqrt(double noundef %98) #6
  %100 = fdiv double 1.000000e+00, %99
  %101 = fcmp ole double %97, %100
  %102 = select i1 %101, double %97, double %100
  %103 = load double, ptr %9, align 8, !tbaa !9
  store double %103, ptr %25, align 8, !tbaa !9
  %.not329 = icmp eq i32 %38, 0
  br i1 %.not329, label %107, label %104

104:                                              ; preds = %91
  %105 = load double, ptr %5, align 8, !tbaa !9
  %106 = load double, ptr %6, align 8, !tbaa !9
  br label %107

107:                                              ; preds = %91, %104
  %.sink = phi double [ %105, %104 ], [ 0.000000e+00, %91 ]
  %storemerge = phi double [ %106, %104 ], [ 0.000000e+00, %91 ]
  store double %.sink, ptr %27, align 8
  store double %storemerge, ptr %28, align 8, !tbaa !9
  %108 = tail call double @dlansp_(ptr noundef nonnull @.str.9, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %14) #6
  %109 = fcmp ogt double %108, 0.000000e+00
  %110 = fcmp olt double %108, %96
  %or.cond338 = select i1 %109, i1 %110, i1 false
  br i1 %or.cond338, label %113, label %111

111:                                              ; preds = %107
  %112 = fcmp ogt double %108, %102
  br i1 %112, label %113, label %130

113:                                              ; preds = %111, %107
  %.pn = phi double [ %96, %107 ], [ %102, %111 ]
  %storemerge354 = fdiv double %.pn, %108
  store double %storemerge354, ptr %22, align 8, !tbaa !9
  %114 = load i32, ptr %3, align 4, !tbaa !5
  %115 = add nsw i32 %114, 1
  %116 = mul nsw i32 %115, %114
  %117 = sdiv i32 %116, 2
  store i32 %117, ptr %19, align 4, !tbaa !5
  call void @dscal_(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %4, ptr noundef nonnull @c__1) #6
  %118 = load double, ptr %9, align 8, !tbaa !9
  %119 = fcmp ogt double %118, 0.000000e+00
  br i1 %119, label %120, label %123

120:                                              ; preds = %113
  %121 = load double, ptr %22, align 8, !tbaa !9
  %122 = fmul double %118, %121
  store double %122, ptr %25, align 8, !tbaa !9
  br label %123

123:                                              ; preds = %120, %113
  br i1 %.not329, label %130, label %124

124:                                              ; preds = %123
  %125 = load double, ptr %5, align 8, !tbaa !9
  %126 = load double, ptr %22, align 8, !tbaa !9
  %127 = fmul double %125, %126
  store double %127, ptr %27, align 8, !tbaa !9
  %128 = load double, ptr %6, align 8, !tbaa !9
  %129 = fmul double %126, %128
  store double %129, ptr %28, align 8, !tbaa !9
  br label %130

130:                                              ; preds = %111, %123, %124
  %131 = phi i1 [ true, %123 ], [ true, %124 ], [ false, %111 ]
  %132 = load i32, ptr %3, align 4, !tbaa !5
  %133 = add nsw i32 %132, 1
  %134 = add nsw i32 %133, %132
  %135 = add nsw i32 %134, %132
  %136 = sext i32 %134 to i64
  %137 = getelementptr inbounds double, ptr %33, i64 %136
  %138 = sext i32 %133 to i64
  %139 = getelementptr inbounds double, ptr %33, i64 %138
  call void @dsptrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %137, ptr noundef nonnull %139, ptr noundef %14, ptr noundef nonnull %23) #6
  %.not330 = icmp eq i32 %39, 0
  br i1 %.not330, label %147, label %140

140:                                              ; preds = %130
  %141 = load i32, ptr %7, align 4, !tbaa !5
  %142 = icmp eq i32 %141, 1
  br i1 %142, label %143, label %147

143:                                              ; preds = %140
  %144 = load i32, ptr %8, align 4, !tbaa !5
  %145 = load i32, ptr %3, align 4, !tbaa !5
  %146 = icmp eq i32 %144, %145
  br label %147

147:                                              ; preds = %143, %140, %130
  %148 = phi i1 [ false, %140 ], [ false, %130 ], [ %146, %143 ]
  %or.cond7 = or i1 %43, %148
  br i1 %or.cond7, label %149, label %176

149:                                              ; preds = %147
  %150 = load double, ptr %9, align 8, !tbaa !9
  %151 = fcmp ugt double %150, 0.000000e+00
  br i1 %151, label %176, label %152

152:                                              ; preds = %149
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %137, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #6
  %153 = load i32, ptr %3, align 4, !tbaa !5
  %154 = shl i32 %153, 1
  %155 = add nsw i32 %154, %135
  br i1 %.not, label %160, label %156

156:                                              ; preds = %152
  %157 = add nsw i32 %153, -1
  store i32 %157, ptr %19, align 4, !tbaa !5
  %158 = sext i32 %155 to i64
  %159 = getelementptr inbounds double, ptr %33, i64 %158
  call void @dcopy_(ptr noundef nonnull %19, ptr noundef nonnull %139, ptr noundef nonnull @c__1, ptr noundef nonnull %159, ptr noundef nonnull @c__1) #6
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %159, ptr noundef nonnull %17) #6
  br label %.loopexit356

160:                                              ; preds = %152
  %161 = sext i32 %135 to i64
  %162 = getelementptr inbounds double, ptr %33, i64 %161
  call void @dopgtr_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %14, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %162, ptr noundef nonnull %23) #6
  %163 = load i32, ptr %3, align 4, !tbaa !5
  %164 = add nsw i32 %163, -1
  store i32 %164, ptr %19, align 4, !tbaa !5
  %165 = sext i32 %155 to i64
  %166 = getelementptr inbounds double, ptr %33, i64 %165
  call void @dcopy_(ptr noundef nonnull %19, ptr noundef nonnull %139, ptr noundef nonnull @c__1, ptr noundef nonnull %166, ptr noundef nonnull @c__1) #6
  call void @dsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %166, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %162, ptr noundef nonnull %17) #6
  %167 = load i32, ptr %17, align 4, !tbaa !5
  %168 = icmp eq i32 %167, 0
  br i1 %168, label %169, label %.thread350

169:                                              ; preds = %160
  %170 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %170, ptr %19, align 4, !tbaa !5
  %.not331357 = icmp slt i32 %170, 1
  br i1 %.not331357, label %.loopexit356, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %169
  %171 = zext nneg i32 %170 to i64
  %172 = shl nuw nsw i64 %171, 2
  call void @llvm.memset.p0.i64(ptr align 4 %16, i8 0, i64 %172, i1 false), !tbaa !5
  br label %.loopexit356

.loopexit356:                                     ; preds = %.lr.ph.preheader, %169, %156
  %.pr349 = load i32, ptr %17, align 4, !tbaa !5
  %173 = icmp eq i32 %.pr349, 0
  br i1 %173, label %174, label %.thread350

174:                                              ; preds = %.loopexit356
  %175 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %175, ptr %10, align 4, !tbaa !5
  br label %187

.thread350:                                       ; preds = %160, %.loopexit356
  store i32 0, ptr %17, align 4, !tbaa !5
  br label %176

176:                                              ; preds = %147, %.thread350, %149
  %.340 = select i1 %.not, i8 66, i8 69
  store i8 %.340, ptr %24, align 1, !tbaa !11
  %177 = load i32, ptr %3, align 4, !tbaa !5
  %178 = add nsw i32 %177, 1
  %179 = add nsw i32 %178, %177
  %180 = sext i32 %178 to i64
  %181 = getelementptr inbounds i32, ptr %34, i64 %180
  %182 = sext i32 %135 to i64
  %183 = getelementptr inbounds double, ptr %33, i64 %182
  %184 = sext i32 %179 to i64
  %185 = getelementptr inbounds i32, ptr %34, i64 %184
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %24, ptr noundef nonnull %3, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %25, ptr noundef nonnull %137, ptr noundef nonnull %139, ptr noundef nonnull %10, ptr noundef nonnull %26, ptr noundef %11, ptr noundef %15, ptr noundef nonnull %181, ptr noundef nonnull %183, ptr noundef nonnull %185, ptr noundef nonnull %17) #6
  br i1 %.not, label %186, label %187

186:                                              ; preds = %176
  call void @dstein_(ptr noundef nonnull %3, ptr noundef nonnull %137, ptr noundef nonnull %139, ptr noundef nonnull %10, ptr noundef %11, ptr noundef %15, ptr noundef nonnull %181, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %183, ptr noundef nonnull %185, ptr noundef %16, ptr noundef nonnull %17) #6
  call void @dopmtr_(ptr noundef nonnull @.str.4, ptr noundef %2, ptr noundef nonnull @.str.3, ptr noundef nonnull %3, ptr noundef nonnull %10, ptr noundef %4, ptr noundef %14, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %183, ptr noundef nonnull %23) #6
  br label %187

187:                                              ; preds = %176, %186, %174
  br i1 %131, label %188, label %198

188:                                              ; preds = %187
  %189 = load i32, ptr %17, align 4, !tbaa !5
  %190 = icmp eq i32 %189, 0
  br i1 %190, label %191, label %193

191:                                              ; preds = %188
  %192 = load i32, ptr %10, align 4, !tbaa !5
  br label %195

193:                                              ; preds = %188
  %194 = add nsw i32 %189, -1
  br label %195

195:                                              ; preds = %193, %191
  %storemerge333 = phi i32 [ %194, %193 ], [ %192, %191 ]
  store i32 %storemerge333, ptr %21, align 4, !tbaa !5
  %196 = load double, ptr %22, align 8, !tbaa !9
  %197 = fdiv double 1.000000e+00, %196
  store double %197, ptr %20, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %11, ptr noundef nonnull @c__1) #6
  br label %198

198:                                              ; preds = %195, %187
  br i1 %.not, label %199, label %.loopexit

199:                                              ; preds = %198
  %200 = load i32, ptr %10, align 4, !tbaa !5
  %201 = add nsw i32 %200, -1
  store i32 %201, ptr %19, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %32, i64 8
  %.not334367 = icmp slt i32 %200, 2
  br i1 %.not334367, label %.loopexit, label %.lr.ph370.preheader

.lr.ph370.preheader:                              ; preds = %199
  %202 = sext i32 %30 to i64
  br label %.lr.ph370

.lr.ph370:                                        ; preds = %.lr.ph370.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph370.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv375 = phi i64 [ 1, %.lr.ph370.preheader ], [ %indvars.iv.next376, %._crit_edge.thread ]
  %indvars.iv = phi i64 [ 2, %.lr.ph370.preheader ], [ %indvars.iv.next, %._crit_edge.thread ]
  %203 = getelementptr inbounds double, ptr %29, i64 %indvars.iv375
  %204 = load double, ptr %203, align 8, !tbaa !9
  %205 = load i32, ptr %10, align 4, !tbaa !5
  %indvars.iv.next376 = add nuw nsw i64 %indvars.iv375, 1
  %206 = sext i32 %205 to i64
  %.not335359.not = icmp slt i64 %indvars.iv375, %206
  br i1 %.not335359.not, label %.lr.ph363.preheader, label %._crit_edge.thread

.lr.ph363.preheader:                              ; preds = %.lr.ph370
  %207 = xor i32 %indvar, -1
  %208 = add i32 %205, %207
  %reass.sub = sub i32 %205, %indvar
  %xtraiter = and i32 %208, 1
  %209 = icmp eq i32 %reass.sub, 2
  br i1 %209, label %._crit_edge.unr-lcssa, label %.lr.ph363.preheader.new

.lr.ph363.preheader.new:                          ; preds = %.lr.ph363.preheader
  %unroll_iter = and i32 %208, -2
  br label %.lr.ph363

.lr.ph363:                                        ; preds = %.lr.ph363, %.lr.ph363.preheader.new
  %indvars.iv372 = phi i64 [ %indvars.iv, %.lr.ph363.preheader.new ], [ %indvars.iv.next373.1, %.lr.ph363 ]
  %.0362 = phi double [ %204, %.lr.ph363.preheader.new ], [ %.1.1, %.lr.ph363 ]
  %.1304361 = phi i32 [ 0, %.lr.ph363.preheader.new ], [ %.2.1, %.lr.ph363 ]
  %niter = phi i32 [ 0, %.lr.ph363.preheader.new ], [ %niter.next.1, %.lr.ph363 ]
  %210 = getelementptr inbounds double, ptr %29, i64 %indvars.iv372
  %211 = load double, ptr %210, align 8, !tbaa !9
  %212 = fcmp olt double %211, %.0362
  %213 = trunc nuw i64 %indvars.iv372 to i32
  %.2 = select i1 %212, i32 %213, i32 %.1304361
  %.1 = select i1 %212, double %211, double %.0362
  %214 = getelementptr double, ptr %11, i64 %indvars.iv372
  %215 = load double, ptr %214, align 8, !tbaa !9
  %216 = fcmp olt double %215, %.1
  %217 = trunc i64 %indvars.iv372 to i32
  %218 = add i32 %217, 1
  %.2.1 = select i1 %216, i32 %218, i32 %.2
  %.1.1 = select i1 %216, double %215, double %.1
  %indvars.iv.next373.1 = add nuw nsw i64 %indvars.iv372, 2
  %niter.next.1 = add i32 %niter, 2
  %niter.ncmp.1 = icmp eq i32 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph363, !llvm.loop !12

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph363, %.lr.ph363.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph363.preheader ], [ %.2.1, %.lr.ph363 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph363.preheader ], [ %.1.1, %.lr.ph363 ]
  %indvars.iv372.unr = phi i64 [ %indvars.iv, %.lr.ph363.preheader ], [ %indvars.iv.next373.1, %.lr.ph363 ]
  %.0362.unr = phi double [ %204, %.lr.ph363.preheader ], [ %.1.1, %.lr.ph363 ]
  %.1304361.unr = phi i32 [ 0, %.lr.ph363.preheader ], [ %.2.1, %.lr.ph363 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph363.epil

.lr.ph363.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %219 = getelementptr inbounds double, ptr %29, i64 %indvars.iv372.unr
  %220 = load double, ptr %219, align 8, !tbaa !9
  %221 = fcmp olt double %220, %.0362.unr
  %222 = trunc nuw i64 %indvars.iv372.unr to i32
  %.2.epil = select i1 %221, i32 %222, i32 %.1304361.unr
  %.1.epil = select i1 %221, double %220, double %.0362.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph363.epil
  %.2.lcssa = phi i32 [ %.2.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2.epil, %.lr.ph363.epil ]
  %.1.lcssa = phi double [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph363.epil ]
  %.not336 = icmp eq i32 %.2.lcssa, 0
  br i1 %.not336, label %._crit_edge.thread, label %223

223:                                              ; preds = %._crit_edge
  %224 = sext i32 %.2.lcssa to i64
  %225 = getelementptr inbounds i32, ptr %34, i64 %224
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = getelementptr inbounds double, ptr %29, i64 %224
  store double %204, ptr %227, align 8, !tbaa !9
  %228 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv375
  %229 = load i32, ptr %228, align 4, !tbaa !5
  store i32 %229, ptr %225, align 4, !tbaa !5
  store double %.1.lcssa, ptr %203, align 8, !tbaa !9
  store i32 %226, ptr %228, align 4, !tbaa !5
  %230 = mul nsw i32 %.2.lcssa, %30
  %231 = sext i32 %230 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %231
  %232 = mul nsw i64 %indvars.iv375, %202
  %gep366 = getelementptr double, ptr %invariant.gep, i64 %232
  call void @dswap_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep366, ptr noundef nonnull @c__1) #6
  %233 = load i32, ptr %17, align 4, !tbaa !5
  %.not337 = icmp eq i32 %233, 0
  br i1 %.not337, label %._crit_edge.thread, label %234

234:                                              ; preds = %223
  %235 = getelementptr inbounds i32, ptr %35, i64 %224
  %236 = load i32, ptr %235, align 4, !tbaa !5
  %237 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv375
  %238 = load i32, ptr %237, align 4, !tbaa !5
  store i32 %238, ptr %235, align 4, !tbaa !5
  store i32 %236, ptr %237, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph370, %._crit_edge, %234, %223
  %239 = load i32, ptr %19, align 4, !tbaa !5
  %240 = sext i32 %239 to i64
  %.not334.not = icmp slt i64 %indvars.iv375, %240
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not334.not, label %.lr.ph370, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge.thread, %199, %198, %89, %90, %.thread, %.thread344
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  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 @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 @dlansp_(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 @dsptrd_(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 @dopgtr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dsteqr_(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 @dopmtr_(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.umax.i32(i32, i32) #4

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}


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