; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8

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

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

112:                                              ; preds = %108
  %113 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -1, ptr %113, align 8, !tbaa !9
  br label %211

114:                                              ; preds = %108, %18
  %115 = load i64, ptr %64, align 8, !tbaa !9
  %116 = icmp ne i64 %115, 0
  br i1 %116, label %125, label %117

117:                                              ; preds = %114
  %118 = load i64, ptr %68, align 8, !tbaa !9
  %119 = icmp ne i64 %118, 0
  br i1 %119, label %125, label %120

120:                                              ; preds = %117
  %121 = load i64, ptr %65, align 8, !tbaa !9
  %122 = icmp ne i64 %121, 0
  br i1 %122, label %125, label %123

123:                                              ; preds = %120
  %124 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -2, ptr %124, align 8, !tbaa !9
  br label %210

125:                                              ; preds = %120, %117, %114
  %126 = load ptr, ptr %22, align 8, !tbaa !5
  %127 = call i64 @lsame_(ptr noundef %126, ptr noundef @.str.4)
  %128 = icmp ne i64 %127, 0
  br i1 %128, label %135, label %129

129:                                              ; preds = %125
  %130 = load ptr, ptr %22, align 8, !tbaa !5
  %131 = call i64 @lsame_(ptr noundef %130, ptr noundef @.str.5)
  %132 = icmp ne i64 %131, 0
  br i1 %132, label %135, label %133

133:                                              ; preds = %129
  %134 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -3, ptr %134, align 8, !tbaa !9
  br label %209

135:                                              ; preds = %129, %125
  %136 = load ptr, ptr %23, align 8, !tbaa !5
  %137 = load i64, ptr %136, align 8, !tbaa !9
  %138 = icmp slt i64 %137, 0
  br i1 %138, label %139, label %141

139:                                              ; preds = %135
  %140 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -4, ptr %140, align 8, !tbaa !9
  br label %208

141:                                              ; preds = %135
  %142 = load i64, ptr %68, align 8, !tbaa !9
  %143 = icmp ne i64 %142, 0
  br i1 %143, label %144, label %157

144:                                              ; preds = %141
  %145 = load ptr, ptr %23, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = icmp sgt i64 %146, 0
  br i1 %147, label %148, label %156

148:                                              ; preds = %144
  %149 = load ptr, ptr %26, align 8, !tbaa !5
  %150 = load double, ptr %149, align 8, !tbaa !11
  %151 = load ptr, ptr %25, align 8, !tbaa !5
  %152 = load double, ptr %151, align 8, !tbaa !11
  %153 = fcmp ole double %150, %152
  br i1 %153, label %154, label %156

154:                                              ; preds = %148
  %155 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -7, ptr %155, align 8, !tbaa !9
  br label %156

156:                                              ; preds = %154, %148, %144
  br label %207

157:                                              ; preds = %141
  %158 = load i64, ptr %65, align 8, !tbaa !9
  %159 = icmp ne i64 %158, 0
  br i1 %159, label %160, label %206

160:                                              ; preds = %157
  %161 = load ptr, ptr %27, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = icmp slt i64 %162, 1
  br i1 %163, label %177, label %164

164:                                              ; preds = %160
  %165 = load ptr, ptr %27, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = load ptr, ptr %23, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  %169 = icmp sge i64 1, %168
  br i1 %169, label %170, label %171

170:                                              ; preds = %164
  br label %174

171:                                              ; preds = %164
  %172 = load ptr, ptr %23, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  br label %174

174:                                              ; preds = %171, %170
  %175 = phi i64 [ 1, %170 ], [ %173, %171 ]
  %176 = icmp sgt i64 %166, %175
  br i1 %176, label %177, label %179

177:                                              ; preds = %174, %160
  %178 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -8, ptr %178, align 8, !tbaa !9
  br label %205

179:                                              ; preds = %174
  %180 = load ptr, ptr %28, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = load ptr, ptr %23, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = load ptr, ptr %27, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp sle i64 %183, %185
  br i1 %186, label %187, label %190

187:                                              ; preds = %179
  %188 = load ptr, ptr %23, align 8, !tbaa !5
  %189 = load i64, ptr %188, align 8, !tbaa !9
  br label %193

190:                                              ; preds = %179
  %191 = load ptr, ptr %27, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  br label %193

193:                                              ; preds = %190, %187
  %194 = phi i64 [ %189, %187 ], [ %192, %190 ]
  %195 = icmp slt i64 %181, %194
  br i1 %195, label %202, label %196

196:                                              ; preds = %193
  %197 = load ptr, ptr %28, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = load ptr, ptr %23, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  %201 = icmp sgt i64 %198, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %196, %193
  %203 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -9, ptr %203, align 8, !tbaa !9
  br label %204

204:                                              ; preds = %202, %196
  br label %205

205:                                              ; preds = %204, %177
  br label %206

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

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

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

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

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

211:                                              ; preds = %210, %112
  %212 = load ptr, ptr %37, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp eq i64 %213, 0
  br i1 %214, label %215, label %231

215:                                              ; preds = %211
  %216 = load ptr, ptr %33, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = icmp slt i64 %217, 1
  br i1 %218, label %228, label %219

219:                                              ; preds = %215
  %220 = load i64, ptr %63, align 8, !tbaa !9
  %221 = icmp ne i64 %220, 0
  br i1 %221, label %222, label %230

222:                                              ; preds = %219
  %223 = load ptr, ptr %33, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = load ptr, ptr %23, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = icmp slt i64 %224, %226
  br i1 %227, label %228, label %230

228:                                              ; preds = %222, %215
  %229 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -14, ptr %229, align 8, !tbaa !9
  br label %230

230:                                              ; preds = %228, %222, %219
  br label %231

231:                                              ; preds = %230, %211
  %232 = load ptr, ptr %37, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = icmp ne i64 %233, 0
  br i1 %234, label %235, label %240

235:                                              ; preds = %231
  %236 = load ptr, ptr %37, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  %238 = sub nsw i64 0, %237
  store i64 %238, ptr %40, align 8, !tbaa !9
  %239 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %40)
  store i32 0, ptr %19, align 4
  store i32 1, ptr %78, align 4
  br label %784

240:                                              ; preds = %231
  %241 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 0, ptr %241, align 8, !tbaa !9
  %242 = load ptr, ptr %23, align 8, !tbaa !5
  %243 = load i64, ptr %242, align 8, !tbaa !9
  %244 = icmp eq i64 %243, 0
  br i1 %244, label %245, label %246

245:                                              ; preds = %240
  store i32 0, ptr %19, align 4
  store i32 1, ptr %78, align 4
  br label %784

246:                                              ; preds = %240
  %247 = load ptr, ptr %23, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = icmp eq i64 %248, 1
  br i1 %249, label %250, label %294

250:                                              ; preds = %246
  %251 = load i64, ptr %64, align 8, !tbaa !9
  %252 = icmp ne i64 %251, 0
  br i1 %252, label %256, label %253

253:                                              ; preds = %250
  %254 = load i64, ptr %65, align 8, !tbaa !9
  %255 = icmp ne i64 %254, 0
  br i1 %255, label %256, label %263

256:                                              ; preds = %253, %250
  %257 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 1, ptr %257, align 8, !tbaa !9
  %258 = load ptr, ptr %24, align 8, !tbaa !5
  %259 = getelementptr inbounds double, ptr %258, i64 1
  %260 = load double, ptr %259, align 8, !tbaa !11
  %261 = load ptr, ptr %31, align 8, !tbaa !5
  %262 = getelementptr inbounds double, ptr %261, i64 1
  store double %260, ptr %262, align 8, !tbaa !11
  br label %285

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

270:                                              ; preds = %263
  %271 = load ptr, ptr %26, align 8, !tbaa !5
  %272 = load double, ptr %271, align 8, !tbaa !11
  %273 = load ptr, ptr %24, align 8, !tbaa !5
  %274 = getelementptr inbounds double, ptr %273, i64 1
  %275 = load double, ptr %274, align 8, !tbaa !11
  %276 = fcmp oge double %272, %275
  br i1 %276, label %277, label %284

277:                                              ; preds = %270
  %278 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 1, ptr %278, align 8, !tbaa !9
  %279 = load ptr, ptr %24, align 8, !tbaa !5
  %280 = getelementptr inbounds double, ptr %279, i64 1
  %281 = load double, ptr %280, align 8, !tbaa !11
  %282 = load ptr, ptr %31, align 8, !tbaa !5
  %283 = getelementptr inbounds double, ptr %282, i64 1
  store double %281, ptr %283, align 8, !tbaa !11
  br label %284

284:                                              ; preds = %277, %270, %263
  br label %285

285:                                              ; preds = %284, %256
  %286 = load i64, ptr %63, align 8, !tbaa !9
  %287 = icmp ne i64 %286, 0
  br i1 %287, label %288, label %293

288:                                              ; preds = %285
  %289 = load ptr, ptr %32, align 8, !tbaa !5
  %290 = load i64, ptr %38, align 8, !tbaa !9
  %291 = add nsw i64 %290, 1
  %292 = getelementptr inbounds double, ptr %289, i64 %291
  store double 1.000000e+00, ptr %292, align 8, !tbaa !11
  br label %293

293:                                              ; preds = %288, %285
  store i32 0, ptr %19, align 4
  store i32 1, ptr %78, align 4
  br label %784

294:                                              ; preds = %246
  %295 = call double @dlamch_(ptr noundef @.str.7)
  store double %295, ptr %69, align 8, !tbaa !11
  %296 = call double @dlamch_(ptr noundef @.str.8)
  store double %296, ptr %47, align 8, !tbaa !11
  %297 = load double, ptr %69, align 8, !tbaa !11
  %298 = load double, ptr %47, align 8, !tbaa !11
  %299 = fdiv double %297, %298
  store double %299, ptr %77, align 8, !tbaa !11
  %300 = load double, ptr %77, align 8, !tbaa !11
  %301 = fdiv double 1.000000e+00, %300
  store double %301, ptr %71, align 8, !tbaa !11
  %302 = load double, ptr %77, align 8, !tbaa !11
  %303 = call double @sqrt(double noundef %302) #4
  store double %303, ptr %55, align 8, !tbaa !11
  %304 = load double, ptr %71, align 8, !tbaa !11
  %305 = call double @sqrt(double noundef %304) #4
  store double %305, ptr %42, align 8, !tbaa !11
  %306 = load double, ptr %69, align 8, !tbaa !11
  %307 = call double @sqrt(double noundef %306) #4
  %308 = call double @sqrt(double noundef %307) #4
  %309 = fdiv double 1.000000e+00, %308
  store double %309, ptr %43, align 8, !tbaa !11
  %310 = load double, ptr %42, align 8, !tbaa !11
  %311 = load double, ptr %43, align 8, !tbaa !11
  %312 = fcmp ole double %310, %311
  br i1 %312, label %313, label %315

313:                                              ; preds = %294
  %314 = load double, ptr %42, align 8, !tbaa !11
  br label %317

315:                                              ; preds = %294
  %316 = load double, ptr %43, align 8, !tbaa !11
  br label %317

317:                                              ; preds = %315, %313
  %318 = phi double [ %314, %313 ], [ %316, %315 ]
  store double %318, ptr %56, align 8, !tbaa !11
  store i64 0, ptr %66, align 8, !tbaa !9
  %319 = load ptr, ptr %29, align 8, !tbaa !5
  %320 = load double, ptr %319, align 8, !tbaa !11
  store double %320, ptr %70, align 8, !tbaa !11
  %321 = load i64, ptr %68, align 8, !tbaa !9
  %322 = icmp ne i64 %321, 0
  br i1 %322, label %323, label %328

323:                                              ; preds = %317
  %324 = load ptr, ptr %25, align 8, !tbaa !5
  %325 = load double, ptr %324, align 8, !tbaa !11
  store double %325, ptr %48, align 8, !tbaa !11
  %326 = load ptr, ptr %26, align 8, !tbaa !5
  %327 = load double, ptr %326, align 8, !tbaa !11
  store double %327, ptr %49, align 8, !tbaa !11
  br label %329

328:                                              ; preds = %317
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  store double 0.000000e+00, ptr %49, align 8, !tbaa !11
  br label %329

329:                                              ; preds = %328, %323
  %330 = load ptr, ptr %22, align 8, !tbaa !5
  %331 = load ptr, ptr %23, align 8, !tbaa !5
  %332 = load ptr, ptr %24, align 8, !tbaa !5
  %333 = getelementptr inbounds double, ptr %332, i64 1
  %334 = load ptr, ptr %34, align 8, !tbaa !5
  %335 = getelementptr inbounds double, ptr %334, i64 1
  %336 = call double @dlansp_(ptr noundef @.str.9, ptr noundef %330, ptr noundef %331, ptr noundef %333, ptr noundef %335)
  store double %336, ptr %53, align 8, !tbaa !11
  %337 = load double, ptr %53, align 8, !tbaa !11
  %338 = fcmp ogt double %337, 0.000000e+00
  br i1 %338, label %339, label %347

339:                                              ; preds = %329
  %340 = load double, ptr %53, align 8, !tbaa !11
  %341 = load double, ptr %55, align 8, !tbaa !11
  %342 = fcmp olt double %340, %341
  br i1 %342, label %343, label %347

343:                                              ; preds = %339
  store i64 1, ptr %66, align 8, !tbaa !9
  %344 = load double, ptr %55, align 8, !tbaa !11
  %345 = load double, ptr %53, align 8, !tbaa !11
  %346 = fdiv double %344, %345
  store double %346, ptr %60, align 8, !tbaa !11
  br label %356

347:                                              ; preds = %339, %329
  %348 = load double, ptr %53, align 8, !tbaa !11
  %349 = load double, ptr %56, align 8, !tbaa !11
  %350 = fcmp ogt double %348, %349
  br i1 %350, label %351, label %355

351:                                              ; preds = %347
  store i64 1, ptr %66, align 8, !tbaa !9
  %352 = load double, ptr %56, align 8, !tbaa !11
  %353 = load double, ptr %53, align 8, !tbaa !11
  %354 = fdiv double %352, %353
  store double %354, ptr %60, align 8, !tbaa !11
  br label %355

355:                                              ; preds = %351, %347
  br label %356

356:                                              ; preds = %355, %343
  %357 = load i64, ptr %66, align 8, !tbaa !9
  %358 = icmp eq i64 %357, 1
  br i1 %358, label %359, label %391

359:                                              ; preds = %356
  %360 = load ptr, ptr %23, align 8, !tbaa !5
  %361 = load i64, ptr %360, align 8, !tbaa !9
  %362 = load ptr, ptr %23, align 8, !tbaa !5
  %363 = load i64, ptr %362, align 8, !tbaa !9
  %364 = add nsw i64 %363, 1
  %365 = mul nsw i64 %361, %364
  %366 = sdiv i64 %365, 2
  store i64 %366, ptr %40, align 8, !tbaa !9
  %367 = load ptr, ptr %24, align 8, !tbaa !5
  %368 = getelementptr inbounds double, ptr %367, i64 1
  %369 = call i32 @f2c_dscal(ptr noundef %40, ptr noundef %60, ptr noundef %368, ptr noundef @c__1)
  %370 = load ptr, ptr %29, align 8, !tbaa !5
  %371 = load double, ptr %370, align 8, !tbaa !11
  %372 = fcmp ogt double %371, 0.000000e+00
  br i1 %372, label %373, label %378

373:                                              ; preds = %359
  %374 = load ptr, ptr %29, align 8, !tbaa !5
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = load double, ptr %60, align 8, !tbaa !11
  %377 = fmul double %375, %376
  store double %377, ptr %70, align 8, !tbaa !11
  br label %378

378:                                              ; preds = %373, %359
  %379 = load i64, ptr %68, align 8, !tbaa !9
  %380 = icmp ne i64 %379, 0
  br i1 %380, label %381, label %390

381:                                              ; preds = %378
  %382 = load ptr, ptr %25, align 8, !tbaa !5
  %383 = load double, ptr %382, align 8, !tbaa !11
  %384 = load double, ptr %60, align 8, !tbaa !11
  %385 = fmul double %383, %384
  store double %385, ptr %48, align 8, !tbaa !11
  %386 = load ptr, ptr %26, align 8, !tbaa !5
  %387 = load double, ptr %386, align 8, !tbaa !11
  %388 = load double, ptr %60, align 8, !tbaa !11
  %389 = fmul double %387, %388
  store double %389, ptr %49, align 8, !tbaa !11
  br label %390

390:                                              ; preds = %381, %378
  br label %391

391:                                              ; preds = %390, %356
  store i64 1, ptr %72, align 8, !tbaa !9
  %392 = load i64, ptr %72, align 8, !tbaa !9
  %393 = load ptr, ptr %23, align 8, !tbaa !5
  %394 = load i64, ptr %393, align 8, !tbaa !9
  %395 = add nsw i64 %392, %394
  store i64 %395, ptr %52, align 8, !tbaa !9
  %396 = load i64, ptr %52, align 8, !tbaa !9
  %397 = load ptr, ptr %23, align 8, !tbaa !5
  %398 = load i64, ptr %397, align 8, !tbaa !9
  %399 = add nsw i64 %396, %398
  store i64 %399, ptr %51, align 8, !tbaa !9
  %400 = load i64, ptr %51, align 8, !tbaa !9
  %401 = load ptr, ptr %23, align 8, !tbaa !5
  %402 = load i64, ptr %401, align 8, !tbaa !9
  %403 = add nsw i64 %400, %402
  store i64 %403, ptr %75, align 8, !tbaa !9
  %404 = load ptr, ptr %22, align 8, !tbaa !5
  %405 = load ptr, ptr %23, align 8, !tbaa !5
  %406 = load ptr, ptr %24, align 8, !tbaa !5
  %407 = getelementptr inbounds double, ptr %406, i64 1
  %408 = load ptr, ptr %34, align 8, !tbaa !5
  %409 = load i64, ptr %51, align 8, !tbaa !9
  %410 = getelementptr inbounds double, ptr %408, i64 %409
  %411 = load ptr, ptr %34, align 8, !tbaa !5
  %412 = load i64, ptr %52, align 8, !tbaa !9
  %413 = getelementptr inbounds double, ptr %411, i64 %412
  %414 = load ptr, ptr %34, align 8, !tbaa !5
  %415 = load i64, ptr %72, align 8, !tbaa !9
  %416 = getelementptr inbounds double, ptr %414, i64 %415
  %417 = call i32 @dsptrd_(ptr noundef %404, ptr noundef %405, ptr noundef %407, ptr noundef %410, ptr noundef %413, ptr noundef %416, ptr noundef %61)
  store i64 0, ptr %57, align 8, !tbaa !9
  %418 = load i64, ptr %65, align 8, !tbaa !9
  %419 = icmp ne i64 %418, 0
  br i1 %419, label %420, label %432

420:                                              ; preds = %391
  %421 = load ptr, ptr %27, align 8, !tbaa !5
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = icmp eq i64 %422, 1
  br i1 %423, label %424, label %431

424:                                              ; preds = %420
  %425 = load ptr, ptr %28, align 8, !tbaa !5
  %426 = load i64, ptr %425, align 8, !tbaa !9
  %427 = load ptr, ptr %23, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = icmp eq i64 %426, %428
  br i1 %429, label %430, label %431

430:                                              ; preds = %424
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %431

431:                                              ; preds = %430, %424, %420
  br label %432

432:                                              ; preds = %431, %391
  %433 = load i64, ptr %64, align 8, !tbaa !9
  %434 = icmp ne i64 %433, 0
  br i1 %434, label %438, label %435

435:                                              ; preds = %432
  %436 = load i64, ptr %57, align 8, !tbaa !9
  %437 = icmp ne i64 %436, 0
  br i1 %437, label %438, label %547

438:                                              ; preds = %435, %432
  %439 = load ptr, ptr %29, align 8, !tbaa !5
  %440 = load double, ptr %439, align 8, !tbaa !11
  %441 = fcmp ole double %440, 0.000000e+00
  br i1 %441, label %442, label %547

442:                                              ; preds = %438
  %443 = load ptr, ptr %23, align 8, !tbaa !5
  %444 = load ptr, ptr %34, align 8, !tbaa !5
  %445 = load i64, ptr %51, align 8, !tbaa !9
  %446 = getelementptr inbounds double, ptr %444, i64 %445
  %447 = load ptr, ptr %31, align 8, !tbaa !5
  %448 = getelementptr inbounds double, ptr %447, i64 1
  %449 = call i32 @f2c_dcopy(ptr noundef %443, ptr noundef %446, ptr noundef @c__1, ptr noundef %448, ptr noundef @c__1)
  %450 = load i64, ptr %75, align 8, !tbaa !9
  %451 = load ptr, ptr %23, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  %453 = shl i64 %452, 1
  %454 = add nsw i64 %450, %453
  store i64 %454, ptr %59, align 8, !tbaa !9
  %455 = load i64, ptr %63, align 8, !tbaa !9
  %456 = icmp ne i64 %455, 0
  br i1 %456, label %476, label %457

457:                                              ; preds = %442
  %458 = load ptr, ptr %23, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = sub nsw i64 %459, 1
  store i64 %460, ptr %40, align 8, !tbaa !9
  %461 = load ptr, ptr %34, align 8, !tbaa !5
  %462 = load i64, ptr %52, align 8, !tbaa !9
  %463 = getelementptr inbounds double, ptr %461, i64 %462
  %464 = load ptr, ptr %34, align 8, !tbaa !5
  %465 = load i64, ptr %59, align 8, !tbaa !9
  %466 = getelementptr inbounds double, ptr %464, i64 %465
  %467 = call i32 @f2c_dcopy(ptr noundef %40, ptr noundef %463, ptr noundef @c__1, ptr noundef %466, ptr noundef @c__1)
  %468 = load ptr, ptr %23, align 8, !tbaa !5
  %469 = load ptr, ptr %31, align 8, !tbaa !5
  %470 = getelementptr inbounds double, ptr %469, i64 1
  %471 = load ptr, ptr %34, align 8, !tbaa !5
  %472 = load i64, ptr %59, align 8, !tbaa !9
  %473 = getelementptr inbounds double, ptr %471, i64 %472
  %474 = load ptr, ptr %37, align 8, !tbaa !5
  %475 = call i32 @dsterf_(ptr noundef %468, ptr noundef %470, ptr noundef %473, ptr noundef %474)
  br label %537

476:                                              ; preds = %442
  %477 = load ptr, ptr %22, align 8, !tbaa !5
  %478 = load ptr, ptr %23, align 8, !tbaa !5
  %479 = load ptr, ptr %24, align 8, !tbaa !5
  %480 = getelementptr inbounds double, ptr %479, i64 1
  %481 = load ptr, ptr %34, align 8, !tbaa !5
  %482 = load i64, ptr %72, align 8, !tbaa !9
  %483 = getelementptr inbounds double, ptr %481, i64 %482
  %484 = load ptr, ptr %32, align 8, !tbaa !5
  %485 = load i64, ptr %39, align 8, !tbaa !9
  %486 = getelementptr inbounds double, ptr %484, i64 %485
  %487 = load ptr, ptr %33, align 8, !tbaa !5
  %488 = load ptr, ptr %34, align 8, !tbaa !5
  %489 = load i64, ptr %75, align 8, !tbaa !9
  %490 = getelementptr inbounds double, ptr %488, i64 %489
  %491 = call i32 @dopgtr_(ptr noundef %477, ptr noundef %478, ptr noundef %480, ptr noundef %483, ptr noundef %486, ptr noundef %487, ptr noundef %490, ptr noundef %61)
  %492 = load ptr, ptr %23, align 8, !tbaa !5
  %493 = load i64, ptr %492, align 8, !tbaa !9
  %494 = sub nsw i64 %493, 1
  store i64 %494, ptr %40, align 8, !tbaa !9
  %495 = load ptr, ptr %34, align 8, !tbaa !5
  %496 = load i64, ptr %52, align 8, !tbaa !9
  %497 = getelementptr inbounds double, ptr %495, i64 %496
  %498 = load ptr, ptr %34, align 8, !tbaa !5
  %499 = load i64, ptr %59, align 8, !tbaa !9
  %500 = getelementptr inbounds double, ptr %498, i64 %499
  %501 = call i32 @f2c_dcopy(ptr noundef %40, ptr noundef %497, ptr noundef @c__1, ptr noundef %500, ptr noundef @c__1)
  %502 = load ptr, ptr %20, align 8, !tbaa !5
  %503 = load ptr, ptr %23, align 8, !tbaa !5
  %504 = load ptr, ptr %31, align 8, !tbaa !5
  %505 = getelementptr inbounds double, ptr %504, i64 1
  %506 = load ptr, ptr %34, align 8, !tbaa !5
  %507 = load i64, ptr %59, align 8, !tbaa !9
  %508 = getelementptr inbounds double, ptr %506, i64 %507
  %509 = load ptr, ptr %32, align 8, !tbaa !5
  %510 = load i64, ptr %39, align 8, !tbaa !9
  %511 = getelementptr inbounds double, ptr %509, i64 %510
  %512 = load ptr, ptr %33, align 8, !tbaa !5
  %513 = load ptr, ptr %34, align 8, !tbaa !5
  %514 = load i64, ptr %75, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = load ptr, ptr %37, align 8, !tbaa !5
  %517 = call i32 @dsteqr_(ptr noundef %502, ptr noundef %503, ptr noundef %505, ptr noundef %508, ptr noundef %511, ptr noundef %512, ptr noundef %515, ptr noundef %516)
  %518 = load ptr, ptr %37, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  %520 = icmp eq i64 %519, 0
  br i1 %520, label %521, label %536

521:                                              ; preds = %476
  %522 = load ptr, ptr %23, align 8, !tbaa !5
  %523 = load i64, ptr %522, align 8, !tbaa !9
  store i64 %523, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %524

524:                                              ; preds = %532, %521
  %525 = load i64, ptr %44, align 8, !tbaa !9
  %526 = load i64, ptr %40, align 8, !tbaa !9
  %527 = icmp sle i64 %525, %526
  br i1 %527, label %528, label %535

528:                                              ; preds = %524
  %529 = load ptr, ptr %36, align 8, !tbaa !5
  %530 = load i64, ptr %44, align 8, !tbaa !9
  %531 = getelementptr inbounds i64, ptr %529, i64 %530
  store i64 0, ptr %531, align 8, !tbaa !9
  br label %532

532:                                              ; preds = %528
  %533 = load i64, ptr %44, align 8, !tbaa !9
  %534 = add nsw i64 %533, 1
  store i64 %534, ptr %44, align 8, !tbaa !9
  br label %524, !llvm.loop !13

535:                                              ; preds = %524
  br label %536

536:                                              ; preds = %535, %476
  br label %537

537:                                              ; preds = %536, %457
  %538 = load ptr, ptr %37, align 8, !tbaa !5
  %539 = load i64, ptr %538, align 8, !tbaa !9
  %540 = icmp eq i64 %539, 0
  br i1 %540, label %541, label %545

541:                                              ; preds = %537
  %542 = load ptr, ptr %23, align 8, !tbaa !5
  %543 = load i64, ptr %542, align 8, !tbaa !9
  %544 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %543, ptr %544, align 8, !tbaa !9
  br label %641

545:                                              ; preds = %537
  %546 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 0, ptr %546, align 8, !tbaa !9
  br label %547

547:                                              ; preds = %545, %438, %435
  %548 = load i64, ptr %63, align 8, !tbaa !9
  %549 = icmp ne i64 %548, 0
  br i1 %549, label %550, label %552

550:                                              ; preds = %547
  %551 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 66, ptr %551, align 1, !tbaa !15
  br label %554

552:                                              ; preds = %547
  %553 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 69, ptr %553, align 1, !tbaa !15
  br label %554

554:                                              ; preds = %552, %550
  store i64 1, ptr %67, align 8, !tbaa !9
  %555 = load i64, ptr %67, align 8, !tbaa !9
  %556 = load ptr, ptr %23, align 8, !tbaa !5
  %557 = load i64, ptr %556, align 8, !tbaa !9
  %558 = add nsw i64 %555, %557
  store i64 %558, ptr %73, align 8, !tbaa !9
  %559 = load i64, ptr %73, align 8, !tbaa !9
  %560 = load ptr, ptr %23, align 8, !tbaa !5
  %561 = load i64, ptr %560, align 8, !tbaa !9
  %562 = add nsw i64 %559, %561
  store i64 %562, ptr %74, align 8, !tbaa !9
  %563 = load ptr, ptr %21, align 8, !tbaa !5
  %564 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  %565 = load ptr, ptr %23, align 8, !tbaa !5
  %566 = load ptr, ptr %27, align 8, !tbaa !5
  %567 = load ptr, ptr %28, align 8, !tbaa !5
  %568 = load ptr, ptr %34, align 8, !tbaa !5
  %569 = load i64, ptr %51, align 8, !tbaa !9
  %570 = getelementptr inbounds double, ptr %568, i64 %569
  %571 = load ptr, ptr %34, align 8, !tbaa !5
  %572 = load i64, ptr %52, align 8, !tbaa !9
  %573 = getelementptr inbounds double, ptr %571, i64 %572
  %574 = load ptr, ptr %30, align 8, !tbaa !5
  %575 = load ptr, ptr %31, align 8, !tbaa !5
  %576 = getelementptr inbounds double, ptr %575, i64 1
  %577 = load ptr, ptr %35, align 8, !tbaa !5
  %578 = load i64, ptr %67, align 8, !tbaa !9
  %579 = getelementptr inbounds i64, ptr %577, i64 %578
  %580 = load ptr, ptr %35, align 8, !tbaa !5
  %581 = load i64, ptr %73, align 8, !tbaa !9
  %582 = getelementptr inbounds i64, ptr %580, i64 %581
  %583 = load ptr, ptr %34, align 8, !tbaa !5
  %584 = load i64, ptr %75, align 8, !tbaa !9
  %585 = getelementptr inbounds double, ptr %583, i64 %584
  %586 = load ptr, ptr %35, align 8, !tbaa !5
  %587 = load i64, ptr %74, align 8, !tbaa !9
  %588 = getelementptr inbounds i64, ptr %586, i64 %587
  %589 = load ptr, ptr %37, align 8, !tbaa !5
  %590 = call i32 @dstebz_(ptr noundef %563, ptr noundef %564, ptr noundef %565, ptr noundef %48, ptr noundef %49, ptr noundef %566, ptr noundef %567, ptr noundef %70, ptr noundef %570, ptr noundef %573, ptr noundef %574, ptr noundef %76, ptr noundef %576, ptr noundef %579, ptr noundef %582, ptr noundef %585, ptr noundef %588, ptr noundef %589)
  %591 = load i64, ptr %63, align 8, !tbaa !9
  %592 = icmp ne i64 %591, 0
  br i1 %592, label %593, label %640

593:                                              ; preds = %554
  %594 = load ptr, ptr %23, align 8, !tbaa !5
  %595 = load ptr, ptr %34, align 8, !tbaa !5
  %596 = load i64, ptr %51, align 8, !tbaa !9
  %597 = getelementptr inbounds double, ptr %595, i64 %596
  %598 = load ptr, ptr %34, align 8, !tbaa !5
  %599 = load i64, ptr %52, align 8, !tbaa !9
  %600 = getelementptr inbounds double, ptr %598, i64 %599
  %601 = load ptr, ptr %30, align 8, !tbaa !5
  %602 = load ptr, ptr %31, align 8, !tbaa !5
  %603 = getelementptr inbounds double, ptr %602, i64 1
  %604 = load ptr, ptr %35, align 8, !tbaa !5
  %605 = load i64, ptr %67, align 8, !tbaa !9
  %606 = getelementptr inbounds i64, ptr %604, i64 %605
  %607 = load ptr, ptr %35, align 8, !tbaa !5
  %608 = load i64, ptr %73, align 8, !tbaa !9
  %609 = getelementptr inbounds i64, ptr %607, i64 %608
  %610 = load ptr, ptr %32, align 8, !tbaa !5
  %611 = load i64, ptr %39, align 8, !tbaa !9
  %612 = getelementptr inbounds double, ptr %610, i64 %611
  %613 = load ptr, ptr %33, align 8, !tbaa !5
  %614 = load ptr, ptr %34, align 8, !tbaa !5
  %615 = load i64, ptr %75, align 8, !tbaa !9
  %616 = getelementptr inbounds double, ptr %614, i64 %615
  %617 = load ptr, ptr %35, align 8, !tbaa !5
  %618 = load i64, ptr %74, align 8, !tbaa !9
  %619 = getelementptr inbounds i64, ptr %617, i64 %618
  %620 = load ptr, ptr %36, align 8, !tbaa !5
  %621 = getelementptr inbounds i64, ptr %620, i64 1
  %622 = load ptr, ptr %37, align 8, !tbaa !5
  %623 = call i32 @dstein_(ptr noundef %594, ptr noundef %597, ptr noundef %600, ptr noundef %601, ptr noundef %603, ptr noundef %606, ptr noundef %609, ptr noundef %612, ptr noundef %613, ptr noundef %616, ptr noundef %619, ptr noundef %621, ptr noundef %622)
  %624 = load ptr, ptr %22, align 8, !tbaa !5
  %625 = load ptr, ptr %23, align 8, !tbaa !5
  %626 = load ptr, ptr %30, align 8, !tbaa !5
  %627 = load ptr, ptr %24, align 8, !tbaa !5
  %628 = getelementptr inbounds double, ptr %627, i64 1
  %629 = load ptr, ptr %34, align 8, !tbaa !5
  %630 = load i64, ptr %72, align 8, !tbaa !9
  %631 = getelementptr inbounds double, ptr %629, i64 %630
  %632 = load ptr, ptr %32, align 8, !tbaa !5
  %633 = load i64, ptr %39, align 8, !tbaa !9
  %634 = getelementptr inbounds double, ptr %632, i64 %633
  %635 = load ptr, ptr %33, align 8, !tbaa !5
  %636 = load ptr, ptr %34, align 8, !tbaa !5
  %637 = load i64, ptr %75, align 8, !tbaa !9
  %638 = getelementptr inbounds double, ptr %636, i64 %637
  %639 = call i32 @dopmtr_(ptr noundef @.str.4, ptr noundef %624, ptr noundef @.str.3, ptr noundef %625, ptr noundef %626, ptr noundef %628, ptr noundef %631, ptr noundef %634, ptr noundef %635, ptr noundef %638, ptr noundef %61)
  br label %640

640:                                              ; preds = %593, %554
  br label %641

641:                                              ; preds = %640, %541
  %642 = load i64, ptr %66, align 8, !tbaa !9
  %643 = icmp eq i64 %642, 1
  br i1 %643, label %644, label %661

644:                                              ; preds = %641
  %645 = load ptr, ptr %37, align 8, !tbaa !5
  %646 = load i64, ptr %645, align 8, !tbaa !9
  %647 = icmp eq i64 %646, 0
  br i1 %647, label %648, label %651

648:                                              ; preds = %644
  %649 = load ptr, ptr %30, align 8, !tbaa !5
  %650 = load i64, ptr %649, align 8, !tbaa !9
  store i64 %650, ptr %54, align 8, !tbaa !9
  br label %655

651:                                              ; preds = %644
  %652 = load ptr, ptr %37, align 8, !tbaa !5
  %653 = load i64, ptr %652, align 8, !tbaa !9
  %654 = sub nsw i64 %653, 1
  store i64 %654, ptr %54, align 8, !tbaa !9
  br label %655

655:                                              ; preds = %651, %648
  %656 = load double, ptr %60, align 8, !tbaa !11
  %657 = fdiv double 1.000000e+00, %656
  store double %657, ptr %42, align 8, !tbaa !11
  %658 = load ptr, ptr %31, align 8, !tbaa !5
  %659 = getelementptr inbounds double, ptr %658, i64 1
  %660 = call i32 @f2c_dscal(ptr noundef %54, ptr noundef %42, ptr noundef %659, ptr noundef @c__1)
  br label %661

661:                                              ; preds = %655, %641
  %662 = load i64, ptr %63, align 8, !tbaa !9
  %663 = icmp ne i64 %662, 0
  br i1 %663, label %664, label %783

664:                                              ; preds = %661
  %665 = load ptr, ptr %30, align 8, !tbaa !5
  %666 = load i64, ptr %665, align 8, !tbaa !9
  %667 = sub nsw i64 %666, 1
  store i64 %667, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %668

668:                                              ; preds = %779, %664
  %669 = load i64, ptr %45, align 8, !tbaa !9
  %670 = load i64, ptr %40, align 8, !tbaa !9
  %671 = icmp sle i64 %669, %670
  br i1 %671, label %672, label %782

672:                                              ; preds = %668
  store i64 0, ptr %44, align 8, !tbaa !9
  %673 = load ptr, ptr %31, align 8, !tbaa !5
  %674 = load i64, ptr %45, align 8, !tbaa !9
  %675 = getelementptr inbounds double, ptr %673, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !11
  store double %676, ptr %50, align 8, !tbaa !11
  %677 = load ptr, ptr %30, align 8, !tbaa !5
  %678 = load i64, ptr %677, align 8, !tbaa !9
  store i64 %678, ptr %41, align 8, !tbaa !9
  %679 = load i64, ptr %45, align 8, !tbaa !9
  %680 = add nsw i64 %679, 1
  store i64 %680, ptr %46, align 8, !tbaa !9
  br label %681

681:                                              ; preds = %699, %672
  %682 = load i64, ptr %46, align 8, !tbaa !9
  %683 = load i64, ptr %41, align 8, !tbaa !9
  %684 = icmp sle i64 %682, %683
  br i1 %684, label %685, label %702

685:                                              ; preds = %681
  %686 = load ptr, ptr %31, align 8, !tbaa !5
  %687 = load i64, ptr %46, align 8, !tbaa !9
  %688 = getelementptr inbounds double, ptr %686, i64 %687
  %689 = load double, ptr %688, align 8, !tbaa !11
  %690 = load double, ptr %50, align 8, !tbaa !11
  %691 = fcmp olt double %689, %690
  br i1 %691, label %692, label %698

692:                                              ; preds = %685
  %693 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %693, ptr %44, align 8, !tbaa !9
  %694 = load ptr, ptr %31, align 8, !tbaa !5
  %695 = load i64, ptr %46, align 8, !tbaa !9
  %696 = getelementptr inbounds double, ptr %694, i64 %695
  %697 = load double, ptr %696, align 8, !tbaa !11
  store double %697, ptr %50, align 8, !tbaa !11
  br label %698

698:                                              ; preds = %692, %685
  br label %699

699:                                              ; preds = %698
  %700 = load i64, ptr %46, align 8, !tbaa !9
  %701 = add nsw i64 %700, 1
  store i64 %701, ptr %46, align 8, !tbaa !9
  br label %681, !llvm.loop !16

702:                                              ; preds = %681
  %703 = load i64, ptr %44, align 8, !tbaa !9
  %704 = icmp ne i64 %703, 0
  br i1 %704, label %705, label %778

705:                                              ; preds = %702
  %706 = load ptr, ptr %35, align 8, !tbaa !5
  %707 = load i64, ptr %67, align 8, !tbaa !9
  %708 = load i64, ptr %44, align 8, !tbaa !9
  %709 = add nsw i64 %707, %708
  %710 = sub nsw i64 %709, 1
  %711 = getelementptr inbounds i64, ptr %706, i64 %710
  %712 = load i64, ptr %711, align 8, !tbaa !9
  store i64 %712, ptr %58, align 8, !tbaa !9
  %713 = load ptr, ptr %31, align 8, !tbaa !5
  %714 = load i64, ptr %45, align 8, !tbaa !9
  %715 = getelementptr inbounds double, ptr %713, i64 %714
  %716 = load double, ptr %715, align 8, !tbaa !11
  %717 = load ptr, ptr %31, align 8, !tbaa !5
  %718 = load i64, ptr %44, align 8, !tbaa !9
  %719 = getelementptr inbounds double, ptr %717, i64 %718
  store double %716, ptr %719, align 8, !tbaa !11
  %720 = load ptr, ptr %35, align 8, !tbaa !5
  %721 = load i64, ptr %67, align 8, !tbaa !9
  %722 = load i64, ptr %45, align 8, !tbaa !9
  %723 = add nsw i64 %721, %722
  %724 = sub nsw i64 %723, 1
  %725 = getelementptr inbounds i64, ptr %720, i64 %724
  %726 = load i64, ptr %725, align 8, !tbaa !9
  %727 = load ptr, ptr %35, align 8, !tbaa !5
  %728 = load i64, ptr %67, align 8, !tbaa !9
  %729 = load i64, ptr %44, align 8, !tbaa !9
  %730 = add nsw i64 %728, %729
  %731 = sub nsw i64 %730, 1
  %732 = getelementptr inbounds i64, ptr %727, i64 %731
  store i64 %726, ptr %732, align 8, !tbaa !9
  %733 = load double, ptr %50, align 8, !tbaa !11
  %734 = load ptr, ptr %31, align 8, !tbaa !5
  %735 = load i64, ptr %45, align 8, !tbaa !9
  %736 = getelementptr inbounds double, ptr %734, i64 %735
  store double %733, ptr %736, align 8, !tbaa !11
  %737 = load i64, ptr %58, align 8, !tbaa !9
  %738 = load ptr, ptr %35, align 8, !tbaa !5
  %739 = load i64, ptr %67, align 8, !tbaa !9
  %740 = load i64, ptr %45, align 8, !tbaa !9
  %741 = add nsw i64 %739, %740
  %742 = sub nsw i64 %741, 1
  %743 = getelementptr inbounds i64, ptr %738, i64 %742
  store i64 %737, ptr %743, align 8, !tbaa !9
  %744 = load ptr, ptr %23, align 8, !tbaa !5
  %745 = load ptr, ptr %32, align 8, !tbaa !5
  %746 = load i64, ptr %44, align 8, !tbaa !9
  %747 = load i64, ptr %38, align 8, !tbaa !9
  %748 = mul nsw i64 %746, %747
  %749 = add nsw i64 %748, 1
  %750 = getelementptr inbounds double, ptr %745, i64 %749
  %751 = load ptr, ptr %32, align 8, !tbaa !5
  %752 = load i64, ptr %45, align 8, !tbaa !9
  %753 = load i64, ptr %38, align 8, !tbaa !9
  %754 = mul nsw i64 %752, %753
  %755 = add nsw i64 %754, 1
  %756 = getelementptr inbounds double, ptr %751, i64 %755
  %757 = call i32 @f2c_dswap(ptr noundef %744, ptr noundef %750, ptr noundef @c__1, ptr noundef %756, ptr noundef @c__1)
  %758 = load ptr, ptr %37, align 8, !tbaa !5
  %759 = load i64, ptr %758, align 8, !tbaa !9
  %760 = icmp ne i64 %759, 0
  br i1 %760, label %761, label %777

761:                                              ; preds = %705
  %762 = load ptr, ptr %36, align 8, !tbaa !5
  %763 = load i64, ptr %44, align 8, !tbaa !9
  %764 = getelementptr inbounds i64, ptr %762, i64 %763
  %765 = load i64, ptr %764, align 8, !tbaa !9
  store i64 %765, ptr %58, align 8, !tbaa !9
  %766 = load ptr, ptr %36, align 8, !tbaa !5
  %767 = load i64, ptr %45, align 8, !tbaa !9
  %768 = getelementptr inbounds i64, ptr %766, i64 %767
  %769 = load i64, ptr %768, align 8, !tbaa !9
  %770 = load ptr, ptr %36, align 8, !tbaa !5
  %771 = load i64, ptr %44, align 8, !tbaa !9
  %772 = getelementptr inbounds i64, ptr %770, i64 %771
  store i64 %769, ptr %772, align 8, !tbaa !9
  %773 = load i64, ptr %58, align 8, !tbaa !9
  %774 = load ptr, ptr %36, align 8, !tbaa !5
  %775 = load i64, ptr %45, align 8, !tbaa !9
  %776 = getelementptr inbounds i64, ptr %774, i64 %775
  store i64 %773, ptr %776, align 8, !tbaa !9
  br label %777

777:                                              ; preds = %761, %705
  br label %778

778:                                              ; preds = %777, %702
  br label %779

779:                                              ; preds = %778
  %780 = load i64, ptr %45, align 8, !tbaa !9
  %781 = add nsw i64 %780, 1
  store i64 %781, ptr %45, align 8, !tbaa !9
  br label %668, !llvm.loop !17

782:                                              ; preds = %668
  br label %783

783:                                              ; preds = %782, %661
  store i32 0, ptr %19, align 4
  store i32 1, ptr %78, align 4
  br label %784

784:                                              ; preds = %783, %293, %245, %235
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  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 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  %785 = load i32, ptr %19, align 4
  ret i32 %785
}

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

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

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

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

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

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

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

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

declare i32 @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 i32 @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 i32 @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 i32 @f2c_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 = !{!"long", !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 i64, align 8

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

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

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

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

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

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

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

54:                                               ; preds = %53
  %.not328 = icmp eq i64 %51, 0
  br i1 %.not328, 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 %.thread346.sink.split

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

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

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

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

70:                                               ; preds = %68
  %71 = load i64, ptr %13, align 8, !tbaa !5
  %72 = icmp slt i64 %71, 1
  %73 = icmp ult i64 %71, %51
  %or.cond376 = and i1 %.not, %73
  %or.cond379 = or i1 %72, %or.cond376
  br i1 %or.cond379, label %.thread346.sink.split, label %.thread

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

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

.thread:                                          ; preds = %70
  store i64 0, ptr %10, align 8, !tbaa !5
  %77 = load i64, ptr %3, align 8, !tbaa !5
  switch i64 %77, label %91 [
    i64 0, label %.loopexit
    i64 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 i64 1, ptr %10, align 8, !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 i64 1, ptr %10, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %79, %88
  %.sink378 = phi double [ %83, %88 ], [ %80, %79 ]
  store double %.sink378, 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 %27, align 8, !tbaa !9
  %.not330 = icmp eq i64 %38, 0
  br i1 %.not330, 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 %21, align 8
  store double %storemerge, ptr %22, 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.cond340 = select i1 %109, i1 %110, i1 false
  br i1 %or.cond340, label %113, label %111

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

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

121:                                              ; preds = %113
  %122 = load double, ptr %24, align 8, !tbaa !9
  %123 = fmul double %119, %122
  store double %123, ptr %27, align 8, !tbaa !9
  br label %124

124:                                              ; preds = %121, %113
  br i1 %.not330, label %131, label %125

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

131:                                              ; preds = %111, %124, %125
  %132 = phi i1 [ true, %124 ], [ true, %125 ], [ false, %111 ]
  %133 = load i64, ptr %3, align 8, !tbaa !5
  %reass.add = shl i64 %133, 1
  %134 = or disjoint i64 %reass.add, 1
  %135 = add nsw i64 %134, %133
  %136 = getelementptr double, ptr %14, i64 %reass.add
  %137 = getelementptr double, ptr %14, i64 %133
  %138 = call i32 @dsptrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %136, ptr noundef %137, ptr noundef %14, ptr noundef nonnull %25) #6
  %.not331 = icmp eq i64 %39, 0
  br i1 %.not331, label %146, label %139

139:                                              ; preds = %131
  %140 = load i64, ptr %7, align 8, !tbaa !5
  %141 = icmp eq i64 %140, 1
  br i1 %141, label %142, label %146

142:                                              ; preds = %139
  %143 = load i64, ptr %8, align 8, !tbaa !5
  %144 = load i64, ptr %3, align 8, !tbaa !5
  %145 = icmp eq i64 %143, %144
  br label %146

146:                                              ; preds = %142, %139, %131
  %147 = phi i1 [ false, %139 ], [ false, %131 ], [ %145, %142 ]
  %or.cond7 = or i1 %43, %147
  br i1 %or.cond7, label %148, label %177

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

151:                                              ; preds = %148
  %152 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %136, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #6
  %153 = load i64, ptr %3, align 8, !tbaa !5
  %154 = shl i64 %153, 1
  %155 = add nsw i64 %154, %135
  br i1 %.not, label %161, label %156

156:                                              ; preds = %151
  %157 = add nsw i64 %153, -1
  store i64 %157, ptr %19, align 8, !tbaa !5
  %158 = getelementptr inbounds double, ptr %33, i64 %155
  %159 = call i32 @f2c_dcopy(ptr noundef nonnull %19, ptr noundef %137, ptr noundef nonnull @c__1, ptr noundef nonnull %158, ptr noundef nonnull @c__1) #6
  %160 = call i32 @dsterf_(ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %158, ptr noundef nonnull %17) #6
  br label %.loopexit358

161:                                              ; preds = %151
  %162 = getelementptr inbounds double, ptr %33, i64 %135
  %163 = call i32 @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 %25) #6
  %164 = load i64, ptr %3, align 8, !tbaa !5
  %165 = add nsw i64 %164, -1
  store i64 %165, ptr %19, align 8, !tbaa !5
  %166 = getelementptr inbounds double, ptr %33, i64 %155
  %167 = call i32 @f2c_dcopy(ptr noundef nonnull %19, ptr noundef %137, ptr noundef nonnull @c__1, ptr noundef nonnull %166, ptr noundef nonnull @c__1) #6
  %168 = call i32 @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
  %169 = load i64, ptr %17, align 8, !tbaa !5
  %170 = icmp eq i64 %169, 0
  br i1 %170, label %171, label %.thread352

171:                                              ; preds = %161
  %172 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %172, ptr %19, align 8, !tbaa !5
  %.not332359 = icmp slt i64 %172, 1
  br i1 %.not332359, label %.loopexit358, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %171
  %173 = shl nuw i64 %172, 3
  call void @llvm.memset.p0.i64(ptr align 8 %16, i8 0, i64 %173, i1 false), !tbaa !5
  br label %.loopexit358

.loopexit358:                                     ; preds = %.lr.ph.preheader, %171, %156
  %.pr351 = load i64, ptr %17, align 8, !tbaa !5
  %174 = icmp eq i64 %.pr351, 0
  br i1 %174, label %175, label %.thread352

175:                                              ; preds = %.loopexit358
  %176 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %176, ptr %10, align 8, !tbaa !5
  br label %186

.thread352:                                       ; preds = %161, %.loopexit358
  store i64 0, ptr %17, align 8, !tbaa !5
  br label %177

177:                                              ; preds = %146, %.thread352, %148
  %.342 = select i1 %.not, i8 66, i8 69
  store i8 %.342, ptr %26, align 1, !tbaa !11
  %178 = load i64, ptr %3, align 8, !tbaa !5
  %179 = getelementptr i64, ptr %15, i64 %178
  %180 = getelementptr inbounds double, ptr %33, i64 %135
  %.idx = shl i64 %178, 4
  %181 = getelementptr i8, ptr %15, i64 %.idx
  %182 = call i32 @dstebz_(ptr noundef %1, ptr noundef nonnull %26, ptr noundef nonnull %3, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %27, ptr noundef %136, ptr noundef %137, ptr noundef nonnull %10, ptr noundef nonnull %28, ptr noundef %11, ptr noundef %15, ptr noundef %179, ptr noundef nonnull %180, ptr noundef %181, ptr noundef nonnull %17) #6
  br i1 %.not, label %183, label %186

183:                                              ; preds = %177
  %184 = call i32 @dstein_(ptr noundef nonnull %3, ptr noundef %136, ptr noundef %137, ptr noundef nonnull %10, ptr noundef %11, ptr noundef %15, ptr noundef %179, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %180, ptr noundef %181, ptr noundef %16, ptr noundef nonnull %17) #6
  %185 = call i32 @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 %180, ptr noundef nonnull %25) #6
  br label %186

186:                                              ; preds = %177, %183, %175
  br i1 %132, label %187, label %198

187:                                              ; preds = %186
  %188 = load i64, ptr %17, align 8, !tbaa !5
  %189 = icmp eq i64 %188, 0
  br i1 %189, label %190, label %192

190:                                              ; preds = %187
  %191 = load i64, ptr %10, align 8, !tbaa !5
  br label %194

192:                                              ; preds = %187
  %193 = add nsw i64 %188, -1
  br label %194

194:                                              ; preds = %192, %190
  %storemerge335 = phi i64 [ %193, %192 ], [ %191, %190 ]
  store i64 %storemerge335, ptr %23, align 8, !tbaa !5
  %195 = load double, ptr %24, align 8, !tbaa !9
  %196 = fdiv double 1.000000e+00, %195
  store double %196, ptr %20, align 8, !tbaa !9
  %197 = call i32 @f2c_dscal(ptr noundef nonnull %23, ptr noundef nonnull %20, ptr noundef %11, ptr noundef nonnull @c__1) #6
  br label %198

198:                                              ; preds = %194, %186
  br i1 %.not, label %199, label %.loopexit

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

.lr.ph372:                                        ; preds = %199, %._crit_edge.thread
  %.0304370 = phi i64 [ %205, %._crit_edge.thread ], [ 1, %199 ]
  %202 = getelementptr inbounds double, ptr %29, i64 %.0304370
  %203 = load double, ptr %202, align 8, !tbaa !9
  %204 = load i64, ptr %10, align 8, !tbaa !5
  %205 = add nuw nsw i64 %.0304370, 1
  %.not337361.not = icmp slt i64 %.0304370, %204
  br i1 %.not337361.not, label %.lr.ph365, label %._crit_edge.thread

.lr.ph365:                                        ; preds = %.lr.ph372, %.lr.ph365
  %.1364 = phi i64 [ %.2, %.lr.ph365 ], [ 0, %.lr.ph372 ]
  %.0306363 = phi i64 [ %209, %.lr.ph365 ], [ %205, %.lr.ph372 ]
  %.0307362 = phi double [ %.1308, %.lr.ph365 ], [ %203, %.lr.ph372 ]
  %206 = getelementptr inbounds double, ptr %29, i64 %.0306363
  %207 = load double, ptr %206, align 8, !tbaa !9
  %208 = fcmp olt double %207, %.0307362
  %.1308 = select i1 %208, double %207, double %.0307362
  %.2 = select i1 %208, i64 %.0306363, i64 %.1364
  %209 = add nuw nsw i64 %.0306363, 1
  %.not337.not = icmp slt i64 %.0306363, %204
  br i1 %.not337.not, label %.lr.ph365, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %.lr.ph365
  %.not338 = icmp eq i64 %.2, 0
  br i1 %.not338, label %._crit_edge.thread, label %210

210:                                              ; preds = %._crit_edge
  %211 = getelementptr inbounds i64, ptr %34, i64 %.2
  %212 = load i64, ptr %211, align 8, !tbaa !5
  %213 = getelementptr inbounds double, ptr %29, i64 %.2
  store double %203, ptr %213, align 8, !tbaa !9
  %214 = getelementptr inbounds i64, ptr %34, i64 %.0304370
  %215 = load i64, ptr %214, align 8, !tbaa !5
  store i64 %215, ptr %211, align 8, !tbaa !5
  store double %.1308, ptr %202, align 8, !tbaa !9
  store i64 %212, ptr %214, align 8, !tbaa !5
  %216 = mul nsw i64 %.2, %30
  %gep = getelementptr double, ptr %invariant.gep, i64 %216
  %217 = mul nsw i64 %.0304370, %30
  %gep368 = getelementptr double, ptr %invariant.gep, i64 %217
  %218 = call i32 @f2c_dswap(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep368, ptr noundef nonnull @c__1) #6
  %219 = load i64, ptr %17, align 8, !tbaa !5
  %.not339 = icmp eq i64 %219, 0
  br i1 %.not339, label %._crit_edge.thread, label %220

220:                                              ; preds = %210
  %221 = getelementptr inbounds i64, ptr %35, i64 %.2
  %222 = load i64, ptr %221, align 8, !tbaa !5
  %223 = getelementptr inbounds i64, ptr %35, i64 %.0304370
  %224 = load i64, ptr %223, align 8, !tbaa !5
  store i64 %224, ptr %221, align 8, !tbaa !5
  store i64 %222, ptr %223, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph372, %._crit_edge, %220, %210
  %225 = load i64, ptr %19, align 8, !tbaa !5
  %.not336.not = icmp slt i64 %.0304370, %225
  br i1 %.not336.not, label %.lr.ph372, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge.thread, %199, %198, %89, %90, %.thread, %.thread346
  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 1, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  ret i32 0
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare double @dlansp_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare i32 @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 i32 @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 i32 @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 i32 @f2c_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 i64 @llvm.umax.i64(i64, i64) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umin.i64(i64, i64) #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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!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