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

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

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

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

118:                                              ; preds = %23
  %119 = load ptr, ptr %25, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  %121 = icmp sgt i64 %120, 3
  br i1 %121, label %122, label %124

122:                                              ; preds = %118, %23
  %123 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -1, ptr %123, align 8, !tbaa !9
  br label %262

124:                                              ; preds = %118
  %125 = load i64, ptr %59, align 8, !tbaa !9
  %126 = icmp ne i64 %125, 0
  br i1 %126, label %133, label %127

127:                                              ; preds = %124
  %128 = load ptr, ptr %26, align 8, !tbaa !5
  %129 = call i64 @lsame_(ptr noundef %128, ptr noundef @.str.4)
  %130 = icmp ne i64 %129, 0
  br i1 %130, label %133, label %131

131:                                              ; preds = %127
  %132 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -2, ptr %132, align 8, !tbaa !9
  br label %261

133:                                              ; preds = %127, %124
  %134 = load i64, ptr %60, align 8, !tbaa !9
  %135 = icmp ne i64 %134, 0
  br i1 %135, label %144, label %136

136:                                              ; preds = %133
  %137 = load i64, ptr %62, align 8, !tbaa !9
  %138 = icmp ne i64 %137, 0
  br i1 %138, label %144, label %139

139:                                              ; preds = %136
  %140 = load i64, ptr %61, align 8, !tbaa !9
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %144, label %142

142:                                              ; preds = %139
  %143 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -3, ptr %143, align 8, !tbaa !9
  br label %260

144:                                              ; preds = %139, %136, %133
  %145 = load i64, ptr %58, align 8, !tbaa !9
  %146 = icmp ne i64 %145, 0
  br i1 %146, label %153, label %147

147:                                              ; preds = %144
  %148 = load ptr, ptr %28, align 8, !tbaa !5
  %149 = call i64 @lsame_(ptr noundef %148, ptr noundef @.str.5)
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %153, label %151

151:                                              ; preds = %147
  %152 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -4, ptr %152, align 8, !tbaa !9
  br label %259

153:                                              ; preds = %147, %144
  %154 = load ptr, ptr %29, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = icmp slt i64 %155, 0
  br i1 %156, label %157, label %159

157:                                              ; preds = %153
  %158 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -5, ptr %158, align 8, !tbaa !9
  br label %258

159:                                              ; preds = %153
  %160 = load ptr, ptr %31, align 8, !tbaa !5
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = load ptr, ptr %29, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp sge i64 1, %163
  br i1 %164, label %165, label %166

165:                                              ; preds = %159
  br label %169

166:                                              ; preds = %159
  %167 = load ptr, ptr %29, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  br label %169

169:                                              ; preds = %166, %165
  %170 = phi i64 [ 1, %165 ], [ %168, %166 ]
  %171 = icmp slt i64 %161, %170
  br i1 %171, label %172, label %174

172:                                              ; preds = %169
  %173 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -7, ptr %173, align 8, !tbaa !9
  br label %257

174:                                              ; preds = %169
  %175 = load ptr, ptr %33, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = load ptr, ptr %29, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = icmp sge i64 1, %178
  br i1 %179, label %180, label %181

180:                                              ; preds = %174
  br label %184

181:                                              ; preds = %174
  %182 = load ptr, ptr %29, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %181, %180
  %185 = phi i64 [ 1, %180 ], [ %183, %181 ]
  %186 = icmp slt i64 %176, %185
  br i1 %186, label %187, label %189

187:                                              ; preds = %184
  %188 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -9, ptr %188, align 8, !tbaa !9
  br label %256

189:                                              ; preds = %184
  %190 = load i64, ptr %62, align 8, !tbaa !9
  %191 = icmp ne i64 %190, 0
  br i1 %191, label %192, label %205

192:                                              ; preds = %189
  %193 = load ptr, ptr %29, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  %195 = icmp sgt i64 %194, 0
  br i1 %195, label %196, label %204

196:                                              ; preds = %192
  %197 = load ptr, ptr %35, align 8, !tbaa !5
  %198 = load double, ptr %197, align 8, !tbaa !11
  %199 = load ptr, ptr %34, align 8, !tbaa !5
  %200 = load double, ptr %199, align 8, !tbaa !11
  %201 = fcmp ole double %198, %200
  br i1 %201, label %202, label %204

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

204:                                              ; preds = %202, %196, %192
  br label %255

205:                                              ; preds = %189
  %206 = load i64, ptr %61, align 8, !tbaa !9
  %207 = icmp ne i64 %206, 0
  br i1 %207, label %208, label %254

208:                                              ; preds = %205
  %209 = load ptr, ptr %36, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = icmp slt i64 %210, 1
  br i1 %211, label %225, label %212

212:                                              ; preds = %208
  %213 = load ptr, ptr %36, align 8, !tbaa !5
  %214 = load i64, ptr %213, align 8, !tbaa !9
  %215 = load ptr, ptr %29, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = icmp sge i64 1, %216
  br i1 %217, label %218, label %219

218:                                              ; preds = %212
  br label %222

219:                                              ; preds = %212
  %220 = load ptr, ptr %29, align 8, !tbaa !5
  %221 = load i64, ptr %220, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %219, %218
  %223 = phi i64 [ 1, %218 ], [ %221, %219 ]
  %224 = icmp sgt i64 %214, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %222, %208
  %226 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -12, ptr %226, align 8, !tbaa !9
  br label %253

227:                                              ; preds = %222
  %228 = load ptr, ptr %37, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = load ptr, ptr %29, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = load ptr, ptr %36, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = icmp sle i64 %231, %233
  br i1 %234, label %235, label %238

235:                                              ; preds = %227
  %236 = load ptr, ptr %29, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  br label %241

238:                                              ; preds = %227
  %239 = load ptr, ptr %36, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  br label %241

241:                                              ; preds = %238, %235
  %242 = phi i64 [ %237, %235 ], [ %240, %238 ]
  %243 = icmp slt i64 %229, %242
  br i1 %243, label %250, label %244

244:                                              ; preds = %241
  %245 = load ptr, ptr %37, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = load ptr, ptr %29, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = icmp sgt i64 %246, %248
  br i1 %249, label %250, label %252

250:                                              ; preds = %244, %241
  %251 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -13, ptr %251, align 8, !tbaa !9
  br label %252

252:                                              ; preds = %250, %244
  br label %253

253:                                              ; preds = %252, %225
  br label %254

254:                                              ; preds = %253, %205
  br label %255

255:                                              ; preds = %254, %204
  br label %256

256:                                              ; preds = %255, %187
  br label %257

257:                                              ; preds = %256, %172
  br label %258

258:                                              ; preds = %257, %157
  br label %259

259:                                              ; preds = %258, %151
  br label %260

260:                                              ; preds = %259, %142
  br label %261

261:                                              ; preds = %260, %131
  br label %262

262:                                              ; preds = %261, %122
  %263 = load ptr, ptr %47, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = icmp eq i64 %264, 0
  br i1 %265, label %266, label %282

266:                                              ; preds = %262
  %267 = load ptr, ptr %42, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = icmp slt i64 %268, 1
  br i1 %269, label %279, label %270

270:                                              ; preds = %266
  %271 = load i64, ptr %59, align 8, !tbaa !9
  %272 = icmp ne i64 %271, 0
  br i1 %272, label %273, label %281

273:                                              ; preds = %270
  %274 = load ptr, ptr %42, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = load ptr, ptr %29, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  %278 = icmp slt i64 %275, %277
  br i1 %278, label %279, label %281

279:                                              ; preds = %273, %266
  %280 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -18, ptr %280, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %279, %273, %270
  br label %282

282:                                              ; preds = %281, %262
  %283 = load ptr, ptr %47, align 8, !tbaa !5
  %284 = load i64, ptr %283, align 8, !tbaa !9
  %285 = icmp eq i64 %284, 0
  br i1 %285, label %286, label %331

286:                                              ; preds = %282
  store i64 1, ptr %54, align 8, !tbaa !9
  %287 = load ptr, ptr %29, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = shl i64 %288, 3
  store i64 %289, ptr %55, align 8, !tbaa !9
  %290 = load i64, ptr %54, align 8, !tbaa !9
  %291 = load i64, ptr %55, align 8, !tbaa !9
  %292 = icmp sge i64 %290, %291
  br i1 %292, label %293, label %295

293:                                              ; preds = %286
  %294 = load i64, ptr %54, align 8, !tbaa !9
  br label %297

295:                                              ; preds = %286
  %296 = load i64, ptr %55, align 8, !tbaa !9
  br label %297

297:                                              ; preds = %295, %293
  %298 = phi i64 [ %294, %293 ], [ %296, %295 ]
  store i64 %298, ptr %63, align 8, !tbaa !9
  %299 = load ptr, ptr %28, align 8, !tbaa !5
  %300 = load ptr, ptr %29, align 8, !tbaa !5
  %301 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef %299, ptr noundef %300, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %301, ptr %56, align 8, !tbaa !9
  %302 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %302, ptr %54, align 8, !tbaa !9
  %303 = load i64, ptr %56, align 8, !tbaa !9
  %304 = add nsw i64 %303, 3
  %305 = load ptr, ptr %29, align 8, !tbaa !5
  %306 = load i64, ptr %305, align 8, !tbaa !9
  %307 = mul nsw i64 %304, %306
  store i64 %307, ptr %55, align 8, !tbaa !9
  %308 = load i64, ptr %54, align 8, !tbaa !9
  %309 = load i64, ptr %55, align 8, !tbaa !9
  %310 = icmp sge i64 %308, %309
  br i1 %310, label %311, label %313

311:                                              ; preds = %297
  %312 = load i64, ptr %54, align 8, !tbaa !9
  br label %315

313:                                              ; preds = %297
  %314 = load i64, ptr %55, align 8, !tbaa !9
  br label %315

315:                                              ; preds = %313, %311
  %316 = phi i64 [ %312, %311 ], [ %314, %313 ]
  store i64 %316, ptr %64, align 8, !tbaa !9
  %317 = load i64, ptr %64, align 8, !tbaa !9
  %318 = sitofp i64 %317 to double
  %319 = load ptr, ptr %43, align 8, !tbaa !5
  %320 = getelementptr inbounds double, ptr %319, i64 1
  store double %318, ptr %320, align 8, !tbaa !11
  %321 = load ptr, ptr %44, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = load i64, ptr %63, align 8, !tbaa !9
  %324 = icmp slt i64 %322, %323
  br i1 %324, label %325, label %330

325:                                              ; preds = %315
  %326 = load i64, ptr %65, align 8, !tbaa !9
  %327 = icmp ne i64 %326, 0
  br i1 %327, label %330, label %328

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

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

331:                                              ; preds = %330, %282
  %332 = load ptr, ptr %47, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %340

335:                                              ; preds = %331
  %336 = load ptr, ptr %47, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = sub nsw i64 0, %337
  store i64 %338, ptr %54, align 8, !tbaa !9
  %339 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %54)
  store i32 0, ptr %24, align 4
  store i32 1, ptr %66, align 4
  br label %485

340:                                              ; preds = %331
  %341 = load i64, ptr %65, align 8, !tbaa !9
  %342 = icmp ne i64 %341, 0
  br i1 %342, label %343, label %344

343:                                              ; preds = %340
  store i32 0, ptr %24, align 4
  store i32 1, ptr %66, align 4
  br label %485

344:                                              ; preds = %340
  br label %345

345:                                              ; preds = %344
  %346 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 0, ptr %346, align 8, !tbaa !9
  %347 = load ptr, ptr %29, align 8, !tbaa !5
  %348 = load i64, ptr %347, align 8, !tbaa !9
  %349 = icmp eq i64 %348, 0
  br i1 %349, label %350, label %351

350:                                              ; preds = %345
  store i32 0, ptr %24, align 4
  store i32 1, ptr %66, align 4
  br label %485

351:                                              ; preds = %345
  %352 = load ptr, ptr %28, align 8, !tbaa !5
  %353 = load ptr, ptr %29, align 8, !tbaa !5
  %354 = load ptr, ptr %32, align 8, !tbaa !5
  %355 = load i64, ptr %51, align 8, !tbaa !9
  %356 = getelementptr inbounds double, ptr %354, i64 %355
  %357 = load ptr, ptr %33, align 8, !tbaa !5
  %358 = load ptr, ptr %47, align 8, !tbaa !5
  %359 = call i32 @dpotrf_(ptr noundef %352, ptr noundef %353, ptr noundef %356, ptr noundef %357, ptr noundef %358)
  %360 = load ptr, ptr %47, align 8, !tbaa !5
  %361 = load i64, ptr %360, align 8, !tbaa !9
  %362 = icmp ne i64 %361, 0
  br i1 %362, label %363, label %370

363:                                              ; preds = %351
  %364 = load ptr, ptr %29, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = load ptr, ptr %47, align 8, !tbaa !5
  %367 = load i64, ptr %366, align 8, !tbaa !9
  %368 = add nsw i64 %365, %367
  %369 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 %368, ptr %369, align 8, !tbaa !9
  store i32 0, ptr %24, align 4
  store i32 1, ptr %66, align 4
  br label %485

370:                                              ; preds = %351
  %371 = load ptr, ptr %25, align 8, !tbaa !5
  %372 = load ptr, ptr %28, align 8, !tbaa !5
  %373 = load ptr, ptr %29, align 8, !tbaa !5
  %374 = load ptr, ptr %30, align 8, !tbaa !5
  %375 = load i64, ptr %49, align 8, !tbaa !9
  %376 = getelementptr inbounds double, ptr %374, i64 %375
  %377 = load ptr, ptr %31, align 8, !tbaa !5
  %378 = load ptr, ptr %32, align 8, !tbaa !5
  %379 = load i64, ptr %51, align 8, !tbaa !9
  %380 = getelementptr inbounds double, ptr %378, i64 %379
  %381 = load ptr, ptr %33, align 8, !tbaa !5
  %382 = load ptr, ptr %47, align 8, !tbaa !5
  %383 = call i32 @dsygst_(ptr noundef %371, ptr noundef %372, ptr noundef %373, ptr noundef %376, ptr noundef %377, ptr noundef %380, ptr noundef %381, ptr noundef %382)
  %384 = load ptr, ptr %26, align 8, !tbaa !5
  %385 = load ptr, ptr %27, align 8, !tbaa !5
  %386 = load ptr, ptr %28, align 8, !tbaa !5
  %387 = load ptr, ptr %29, align 8, !tbaa !5
  %388 = load ptr, ptr %30, align 8, !tbaa !5
  %389 = load i64, ptr %49, align 8, !tbaa !9
  %390 = getelementptr inbounds double, ptr %388, i64 %389
  %391 = load ptr, ptr %31, align 8, !tbaa !5
  %392 = load ptr, ptr %34, align 8, !tbaa !5
  %393 = load ptr, ptr %35, align 8, !tbaa !5
  %394 = load ptr, ptr %36, align 8, !tbaa !5
  %395 = load ptr, ptr %37, align 8, !tbaa !5
  %396 = load ptr, ptr %38, align 8, !tbaa !5
  %397 = load ptr, ptr %39, align 8, !tbaa !5
  %398 = load ptr, ptr %40, align 8, !tbaa !5
  %399 = getelementptr inbounds double, ptr %398, i64 1
  %400 = load ptr, ptr %41, align 8, !tbaa !5
  %401 = load i64, ptr %53, align 8, !tbaa !9
  %402 = getelementptr inbounds double, ptr %400, i64 %401
  %403 = load ptr, ptr %42, align 8, !tbaa !5
  %404 = load ptr, ptr %43, align 8, !tbaa !5
  %405 = getelementptr inbounds double, ptr %404, i64 1
  %406 = load ptr, ptr %44, align 8, !tbaa !5
  %407 = load ptr, ptr %45, align 8, !tbaa !5
  %408 = getelementptr inbounds i64, ptr %407, i64 1
  %409 = load ptr, ptr %46, align 8, !tbaa !5
  %410 = getelementptr inbounds i64, ptr %409, i64 1
  %411 = load ptr, ptr %47, align 8, !tbaa !5
  %412 = call i32 @dsyevx_(ptr noundef %384, ptr noundef %385, ptr noundef %386, ptr noundef %387, ptr noundef %390, ptr noundef %391, ptr noundef %392, ptr noundef %393, ptr noundef %394, ptr noundef %395, ptr noundef %396, ptr noundef %397, ptr noundef %399, ptr noundef %402, ptr noundef %403, ptr noundef %405, ptr noundef %406, ptr noundef %408, ptr noundef %410, ptr noundef %411)
  %413 = load i64, ptr %59, align 8, !tbaa !9
  %414 = icmp ne i64 %413, 0
  br i1 %414, label %415, label %480

415:                                              ; preds = %370
  %416 = load ptr, ptr %47, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  %418 = icmp sgt i64 %417, 0
  br i1 %418, label %419, label %424

419:                                              ; preds = %415
  %420 = load ptr, ptr %47, align 8, !tbaa !5
  %421 = load i64, ptr %420, align 8, !tbaa !9
  %422 = sub nsw i64 %421, 1
  %423 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 %422, ptr %423, align 8, !tbaa !9
  br label %424

424:                                              ; preds = %419, %415
  %425 = load ptr, ptr %25, align 8, !tbaa !5
  %426 = load i64, ptr %425, align 8, !tbaa !9
  %427 = icmp eq i64 %426, 1
  br i1 %427, label %432, label %428

428:                                              ; preds = %424
  %429 = load ptr, ptr %25, align 8, !tbaa !5
  %430 = load i64, ptr %429, align 8, !tbaa !9
  %431 = icmp eq i64 %430, 2
  br i1 %431, label %432, label %453

432:                                              ; preds = %428, %424
  %433 = load i64, ptr %58, align 8, !tbaa !9
  %434 = icmp ne i64 %433, 0
  br i1 %434, label %435, label %437

435:                                              ; preds = %432
  %436 = getelementptr inbounds [1 x i8], ptr %57, i64 0, i64 0
  store i8 78, ptr %436, align 1, !tbaa !13
  br label %439

437:                                              ; preds = %432
  %438 = getelementptr inbounds [1 x i8], ptr %57, i64 0, i64 0
  store i8 84, ptr %438, align 1, !tbaa !13
  br label %439

439:                                              ; preds = %437, %435
  %440 = load ptr, ptr %28, align 8, !tbaa !5
  %441 = getelementptr inbounds [1 x i8], ptr %57, i64 0, i64 0
  %442 = load ptr, ptr %29, align 8, !tbaa !5
  %443 = load ptr, ptr %39, align 8, !tbaa !5
  %444 = load ptr, ptr %32, 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 %33, align 8, !tbaa !5
  %448 = load ptr, ptr %41, align 8, !tbaa !5
  %449 = load i64, ptr %53, align 8, !tbaa !9
  %450 = getelementptr inbounds double, ptr %448, i64 %449
  %451 = load ptr, ptr %42, align 8, !tbaa !5
  %452 = call i32 @f2c_dtrsm(ptr noundef @.str.8, ptr noundef %440, ptr noundef %441, ptr noundef @.str.9, ptr noundef %442, ptr noundef %443, ptr noundef @c_b19, ptr noundef %446, ptr noundef %447, ptr noundef %450, ptr noundef %451)
  br label %479

453:                                              ; preds = %428
  %454 = load ptr, ptr %25, align 8, !tbaa !5
  %455 = load i64, ptr %454, align 8, !tbaa !9
  %456 = icmp eq i64 %455, 3
  br i1 %456, label %457, label %478

457:                                              ; preds = %453
  %458 = load i64, ptr %58, align 8, !tbaa !9
  %459 = icmp ne i64 %458, 0
  br i1 %459, label %460, label %462

460:                                              ; preds = %457
  %461 = getelementptr inbounds [1 x i8], ptr %57, i64 0, i64 0
  store i8 84, ptr %461, align 1, !tbaa !13
  br label %464

462:                                              ; preds = %457
  %463 = getelementptr inbounds [1 x i8], ptr %57, i64 0, i64 0
  store i8 78, ptr %463, align 1, !tbaa !13
  br label %464

464:                                              ; preds = %462, %460
  %465 = load ptr, ptr %28, align 8, !tbaa !5
  %466 = getelementptr inbounds [1 x i8], ptr %57, i64 0, i64 0
  %467 = load ptr, ptr %29, align 8, !tbaa !5
  %468 = load ptr, ptr %39, align 8, !tbaa !5
  %469 = load ptr, ptr %32, align 8, !tbaa !5
  %470 = load i64, ptr %51, align 8, !tbaa !9
  %471 = getelementptr inbounds double, ptr %469, i64 %470
  %472 = load ptr, ptr %33, align 8, !tbaa !5
  %473 = load ptr, ptr %41, align 8, !tbaa !5
  %474 = load i64, ptr %53, align 8, !tbaa !9
  %475 = getelementptr inbounds double, ptr %473, i64 %474
  %476 = load ptr, ptr %42, align 8, !tbaa !5
  %477 = call i32 @f2c_dtrmm(ptr noundef @.str.8, ptr noundef %465, ptr noundef %466, ptr noundef @.str.9, ptr noundef %467, ptr noundef %468, ptr noundef @c_b19, ptr noundef %471, ptr noundef %472, ptr noundef %475, ptr noundef %476)
  br label %478

478:                                              ; preds = %464, %453
  br label %479

479:                                              ; preds = %478, %439
  br label %480

480:                                              ; preds = %479, %370
  %481 = load i64, ptr %64, align 8, !tbaa !9
  %482 = sitofp i64 %481 to double
  %483 = load ptr, ptr %43, align 8, !tbaa !5
  %484 = getelementptr inbounds double, ptr %483, i64 1
  store double %482, ptr %484, align 8, !tbaa !11
  store i32 0, ptr %24, align 4
  store i32 1, ptr %66, align 4
  br label %485

485:                                              ; preds = %480, %363, %350, %343, %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  %486 = load i32, ptr %24, align 4
  ret i32 %486
}

; 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 i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind 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 }

!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 = !{!7, !7, i64 0}


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

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dsygvx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22) local_unnamed_addr #0 {
  %24 = alloca i64, align 8
  %25 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #4
  %26 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str) #4
  %27 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %28 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #4
  %29 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #4
  %30 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #4
  %31 = load i64, ptr %19, align 8, !tbaa !5
  %32 = icmp eq i64 %31, -1
  store i64 0, ptr %22, align 8, !tbaa !5
  %33 = load i64, ptr %0, align 8, !tbaa !5
  %34 = add i64 %33, -4
  %or.cond193 = icmp ult i64 %34, -3
  br i1 %or.cond193, label %.thread206.sink.split, label %35

35:                                               ; preds = %23
  %.not = icmp ne i64 %27, 0
  br i1 %.not, label %38, label %36

36:                                               ; preds = %35
  %37 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not181 = icmp eq i64 %37, 0
  br i1 %.not181, label %.thread206.sink.split, label %38

38:                                               ; preds = %36, %35
  %39 = icmp ne i64 %28, 0
  %40 = icmp ne i64 %29, 0
  %or.cond = select i1 %39, i1 true, i1 %40
  %41 = icmp ne i64 %30, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %41
  br i1 %or.cond3, label %42, label %.thread206.sink.split

42:                                               ; preds = %38
  %.not182 = icmp eq i64 %26, 0
  br i1 %.not182, label %43, label %45

43:                                               ; preds = %42
  %44 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.5) #4
  %.not183 = icmp eq i64 %44, 0
  br i1 %.not183, label %.thread206.sink.split, label %45

45:                                               ; preds = %43, %42
  %46 = load i64, ptr %4, align 8, !tbaa !5
  %47 = icmp slt i64 %46, 0
  br i1 %47, label %.thread206.sink.split, label %48

48:                                               ; preds = %45
  %49 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %46, i64 1)
  %50 = icmp slt i64 %49, %spec.select
  br i1 %50, label %.thread206.sink.split, label %51

51:                                               ; preds = %48
  %52 = load i64, ptr %8, align 8, !tbaa !5
  %53 = icmp slt i64 %52, %spec.select
  br i1 %53, label %.thread206.sink.split, label %54

54:                                               ; preds = %51
  br i1 %40, label %55, label %60

55:                                               ; preds = %54
  %.not215 = icmp eq i64 %46, 0
  br i1 %.not215, label %69, label %56

56:                                               ; preds = %55
  %57 = load double, ptr %10, align 8, !tbaa !9
  %58 = load double, ptr %9, align 8, !tbaa !9
  %59 = fcmp ugt double %57, %58
  br i1 %59, label %69, label %.thread206.sink.split

60:                                               ; preds = %54
  br i1 %41, label %61, label %69

61:                                               ; preds = %60
  %62 = load i64, ptr %11, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 1
  %64 = icmp ugt i64 %62, %spec.select
  %or.cond213 = or i1 %63, %64
  br i1 %or.cond213, label %.thread206.sink.split, label %65

65:                                               ; preds = %61
  %66 = load i64, ptr %12, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %46, i64 %62)
  %67 = icmp slt i64 %66, %.
  %68 = icmp ugt i64 %66, %46
  %or.cond214 = or i1 %67, %68
  br i1 %or.cond214, label %.thread206.sink.split, label %69

69:                                               ; preds = %65, %56, %55, %60
  %.pr = load i64, ptr %22, align 8, !tbaa !5
  %70 = icmp eq i64 %.pr, 0
  br i1 %70, label %71, label %.thread206

71:                                               ; preds = %69
  %72 = load i64, ptr %17, align 8, !tbaa !5
  %73 = icmp slt i64 %72, 1
  %74 = icmp ult i64 %72, %46
  %or.cond216 = and i1 %.not, %74
  %or.cond217 = or i1 %73, %or.cond216
  br i1 %or.cond217, label %.thread206.sink.split, label %.thread

.thread:                                          ; preds = %71
  %75 = shl i64 %46, 3
  %76 = tail call i64 @llvm.smax.i64(i64 %75, i64 1)
  %77 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %78 = add nsw i64 %77, 3
  %79 = load i64, ptr %4, align 8, !tbaa !5
  %80 = mul nsw i64 %79, %78
  %81 = tail call i64 @llvm.smax.i64(i64 %76, i64 %80)
  %82 = uitofp nneg i64 %81 to double
  store double %82, ptr %18, align 8, !tbaa !9
  %83 = load i64, ptr %19, align 8, !tbaa !5
  %84 = icmp sge i64 %83, %76
  %or.cond5 = select i1 %84, i1 true, i1 %32
  br i1 %or.cond5, label %.thread201, label %.thread206.sink.split

.thread201:                                       ; preds = %.thread
  %.pr203.pr = load i64, ptr %22, align 8, !tbaa !5
  %.not187 = icmp eq i64 %.pr203.pr, 0
  br i1 %.not187, label %88, label %.thread206

.thread206.sink.split:                            ; preds = %.thread, %71, %65, %61, %56, %51, %48, %45, %43, %38, %36, %23
  %.sink = phi i64 [ -1, %23 ], [ -2, %36 ], [ -3, %38 ], [ -4, %43 ], [ -5, %45 ], [ -7, %48 ], [ -9, %51 ], [ -11, %56 ], [ -12, %61 ], [ -13, %65 ], [ -18, %71 ], [ -20, %.thread ]
  store i64 %.sink, ptr %22, align 8, !tbaa !5
  br label %.thread206

.thread206:                                       ; preds = %.thread206.sink.split, %69, %.thread201
  %85 = phi i64 [ %.pr203.pr, %.thread201 ], [ %.pr, %69 ], [ %.sink, %.thread206.sink.split ]
  %86 = sub nsw i64 0, %85
  store i64 %86, ptr %24, align 8, !tbaa !5
  %87 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %24) #4
  br label %113

88:                                               ; preds = %.thread201
  br i1 %32, label %113, label %89

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

92:                                               ; preds = %89
  %93 = tail call i32 @dpotrf_(ptr noundef %3, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %22) #4
  %94 = load i64, ptr %22, align 8, !tbaa !5
  %.not188 = icmp eq i64 %94, 0
  br i1 %.not188, label %98, label %95

95:                                               ; preds = %92
  %96 = load i64, ptr %4, align 8, !tbaa !5
  %97 = add nsw i64 %96, %94
  store i64 %97, ptr %22, align 8, !tbaa !5
  br label %113

98:                                               ; preds = %92
  %99 = tail call i32 @dsygst_(ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %22) #4
  %100 = tail call i32 @dsyevx_(ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %20, ptr noundef %21, ptr noundef nonnull %22) #4
  br i1 %.not, label %101, label %112

101:                                              ; preds = %98
  %102 = load i64, ptr %22, align 8, !tbaa !5
  %103 = icmp sgt i64 %102, 0
  br i1 %103, label %104, label %106

104:                                              ; preds = %101
  %105 = add nsw i64 %102, -1
  store i64 %105, ptr %14, align 8, !tbaa !5
  br label %106

106:                                              ; preds = %104, %101
  %107 = load i64, ptr %0, align 8, !tbaa !5
  switch i64 %107, label %112 [
    i64 1, label %108
    i64 2, label %108
    i64 3, label %110
  ]

108:                                              ; preds = %106, %106
  %.196 = select i1 %.not182, i8 84, i8 78
  store i8 %.196, ptr %25, align 1, !tbaa !11
  %109 = call i32 @f2c_dtrsm(ptr noundef nonnull @.str.8, ptr noundef %3, ptr noundef nonnull %25, ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %14, ptr noundef nonnull @c_b19, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %16, ptr noundef nonnull %17) #4
  br label %112

110:                                              ; preds = %106
  %.197 = select i1 %.not182, i8 78, i8 84
  store i8 %.197, ptr %25, align 1, !tbaa !11
  %111 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.8, ptr noundef %3, ptr noundef nonnull %25, ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %14, ptr noundef nonnull @c_b19, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %16, ptr noundef nonnull %17) #4
  br label %112

112:                                              ; preds = %106, %108, %110, %98
  store double %82, ptr %18, align 8, !tbaa !9
  br label %113

113:                                              ; preds = %89, %88, %112, %95, %.thread206
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  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 i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

declare i32 @f2c_dtrsm(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_dtrmm(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind 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.smax.i64(i64, i64) #3

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

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

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"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}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass