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

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

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

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

114:                                              ; preds = %20
  %115 = load ptr, ptr %40, align 8, !tbaa !5
  %116 = load i64, ptr %115, align 8, !tbaa !9
  %117 = icmp eq i64 %116, -1
  br label %118

118:                                              ; preds = %114, %20
  %119 = phi i1 [ true, %20 ], [ %117, %114 ]
  %120 = zext i1 %119 to i32
  %121 = sext i32 %120 to i64
  store i64 %121, ptr %80, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  %122 = load ptr, ptr %24, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = mul nsw i64 %123, 20
  store i64 %124, ptr %45, align 8, !tbaa !9
  %125 = load i64, ptr %44, align 8, !tbaa !9
  %126 = load i64, ptr %45, align 8, !tbaa !9
  %127 = icmp sge i64 %125, %126
  br i1 %127, label %128, label %130

128:                                              ; preds = %118
  %129 = load i64, ptr %44, align 8, !tbaa !9
  br label %132

130:                                              ; preds = %118
  %131 = load i64, ptr %45, align 8, !tbaa !9
  br label %132

132:                                              ; preds = %130, %128
  %133 = phi i64 [ %129, %128 ], [ %131, %130 ]
  store i64 %133, ptr %63, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  %134 = load ptr, ptr %24, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = mul nsw i64 %135, 10
  store i64 %136, ptr %45, align 8, !tbaa !9
  %137 = load i64, ptr %44, align 8, !tbaa !9
  %138 = load i64, ptr %45, align 8, !tbaa !9
  %139 = icmp sge i64 %137, %138
  br i1 %139, label %140, label %142

140:                                              ; preds = %132
  %141 = load i64, ptr %44, align 8, !tbaa !9
  br label %144

142:                                              ; preds = %132
  %143 = load i64, ptr %45, align 8, !tbaa !9
  br label %144

144:                                              ; preds = %142, %140
  %145 = phi i64 [ %141, %140 ], [ %143, %142 ]
  store i64 %145, ptr %76, align 8, !tbaa !9
  %146 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %146, align 8, !tbaa !9
  %147 = load i64, ptr %64, align 8, !tbaa !9
  %148 = icmp ne i64 %147, 0
  br i1 %148, label %155, label %149

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

153:                                              ; preds = %149
  %154 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %154, align 8, !tbaa !9
  br label %241

155:                                              ; preds = %149, %144
  %156 = load i64, ptr %65, align 8, !tbaa !9
  %157 = icmp ne i64 %156, 0
  br i1 %157, label %166, label %158

158:                                              ; preds = %155
  %159 = load i64, ptr %71, align 8, !tbaa !9
  %160 = icmp ne i64 %159, 0
  br i1 %160, label %166, label %161

161:                                              ; preds = %158
  %162 = load i64, ptr %66, align 8, !tbaa !9
  %163 = icmp ne i64 %162, 0
  br i1 %163, label %166, label %164

164:                                              ; preds = %161
  %165 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -2, ptr %165, align 8, !tbaa !9
  br label %240

166:                                              ; preds = %161, %158, %155
  %167 = load ptr, ptr %24, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  %169 = icmp slt i64 %168, 0
  br i1 %169, label %170, label %172

170:                                              ; preds = %166
  %171 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -3, ptr %171, align 8, !tbaa !9
  br label %239

172:                                              ; preds = %166
  %173 = load i64, ptr %71, align 8, !tbaa !9
  %174 = icmp ne i64 %173, 0
  br i1 %174, label %175, label %188

175:                                              ; preds = %172
  %176 = load ptr, ptr %24, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = icmp sgt i64 %177, 0
  br i1 %178, label %179, label %187

179:                                              ; preds = %175
  %180 = load ptr, ptr %28, align 8, !tbaa !5
  %181 = load double, ptr %180, align 8, !tbaa !11
  %182 = load ptr, ptr %27, align 8, !tbaa !5
  %183 = load double, ptr %182, align 8, !tbaa !11
  %184 = fcmp ole double %181, %183
  br i1 %184, label %185, label %187

185:                                              ; preds = %179
  %186 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -7, ptr %186, align 8, !tbaa !9
  br label %187

187:                                              ; preds = %185, %179, %175
  br label %238

188:                                              ; preds = %172
  %189 = load i64, ptr %66, align 8, !tbaa !9
  %190 = icmp ne i64 %189, 0
  br i1 %190, label %191, label %237

191:                                              ; preds = %188
  %192 = load ptr, ptr %29, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = icmp slt i64 %193, 1
  br i1 %194, label %208, label %195

195:                                              ; preds = %191
  %196 = load ptr, ptr %29, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = load ptr, ptr %24, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = icmp sge i64 1, %199
  br i1 %200, label %201, label %202

201:                                              ; preds = %195
  br label %205

202:                                              ; preds = %195
  %203 = load ptr, ptr %24, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %202, %201
  %206 = phi i64 [ 1, %201 ], [ %204, %202 ]
  %207 = icmp sgt i64 %197, %206
  br i1 %207, label %208, label %210

208:                                              ; preds = %205, %191
  %209 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -8, ptr %209, align 8, !tbaa !9
  br label %236

210:                                              ; preds = %205
  %211 = load ptr, ptr %30, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = load ptr, ptr %24, 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 sle i64 %214, %216
  br i1 %217, label %218, label %221

218:                                              ; preds = %210
  %219 = load ptr, ptr %24, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  br label %224

221:                                              ; preds = %210
  %222 = load ptr, ptr %29, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %221, %218
  %225 = phi i64 [ %220, %218 ], [ %223, %221 ]
  %226 = icmp slt i64 %212, %225
  br i1 %226, label %233, label %227

227:                                              ; preds = %224
  %228 = load ptr, ptr %30, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = load ptr, ptr %24, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = icmp sgt i64 %229, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %227, %224
  %234 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -9, ptr %234, align 8, !tbaa !9
  br label %235

235:                                              ; preds = %233, %227
  br label %236

236:                                              ; preds = %235, %208
  br label %237

237:                                              ; preds = %236, %188
  br label %238

238:                                              ; preds = %237, %187
  br label %239

239:                                              ; preds = %238, %170
  br label %240

240:                                              ; preds = %239, %164
  br label %241

241:                                              ; preds = %240, %153
  %242 = load ptr, ptr %41, 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 %261

245:                                              ; preds = %241
  %246 = load ptr, ptr %35, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  %248 = icmp slt i64 %247, 1
  br i1 %248, label %258, label %249

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

252:                                              ; preds = %249
  %253 = load ptr, ptr %35, align 8, !tbaa !5
  %254 = load i64, ptr %253, align 8, !tbaa !9
  %255 = load ptr, ptr %24, align 8, !tbaa !5
  %256 = load i64, ptr %255, align 8, !tbaa !9
  %257 = icmp slt i64 %254, %256
  br i1 %257, label %258, label %260

258:                                              ; preds = %252, %245
  %259 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -14, ptr %259, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %258, %252, %249
  br label %261

261:                                              ; preds = %260, %241
  %262 = load ptr, ptr %41, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = icmp eq i64 %263, 0
  br i1 %264, label %265, label %294

265:                                              ; preds = %261
  %266 = load i64, ptr %63, align 8, !tbaa !9
  %267 = sitofp i64 %266 to double
  %268 = load ptr, ptr %37, align 8, !tbaa !5
  %269 = getelementptr inbounds double, ptr %268, i64 1
  store double %267, ptr %269, align 8, !tbaa !11
  %270 = load i64, ptr %76, align 8, !tbaa !9
  %271 = load ptr, ptr %39, align 8, !tbaa !5
  %272 = getelementptr inbounds i64, ptr %271, i64 1
  store i64 %270, ptr %272, align 8, !tbaa !9
  %273 = load ptr, ptr %38, align 8, !tbaa !5
  %274 = load i64, ptr %273, align 8, !tbaa !9
  %275 = load i64, ptr %63, align 8, !tbaa !9
  %276 = icmp slt i64 %274, %275
  br i1 %276, label %277, label %282

277:                                              ; preds = %265
  %278 = load i64, ptr %80, align 8, !tbaa !9
  %279 = icmp ne i64 %278, 0
  br i1 %279, label %282, label %280

280:                                              ; preds = %277
  %281 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -17, ptr %281, align 8, !tbaa !9
  br label %293

282:                                              ; preds = %277, %265
  %283 = load ptr, ptr %40, align 8, !tbaa !5
  %284 = load i64, ptr %283, align 8, !tbaa !9
  %285 = load i64, ptr %76, align 8, !tbaa !9
  %286 = icmp slt i64 %284, %285
  br i1 %286, label %287, label %292

287:                                              ; preds = %282
  %288 = load i64, ptr %80, align 8, !tbaa !9
  %289 = icmp ne i64 %288, 0
  br i1 %289, label %292, label %290

290:                                              ; preds = %287
  %291 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -19, ptr %291, align 8, !tbaa !9
  br label %292

292:                                              ; preds = %290, %287, %282
  br label %293

293:                                              ; preds = %292, %280
  br label %294

294:                                              ; preds = %293, %261
  %295 = load ptr, ptr %41, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = icmp ne i64 %296, 0
  br i1 %297, label %298, label %303

298:                                              ; preds = %294
  %299 = load ptr, ptr %41, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  %301 = sub nsw i64 0, %300
  store i64 %301, ptr %44, align 8, !tbaa !9
  %302 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %44)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %81, align 4
  br label %759

303:                                              ; preds = %294
  %304 = load i64, ptr %80, align 8, !tbaa !9
  %305 = icmp ne i64 %304, 0
  br i1 %305, label %306, label %307

306:                                              ; preds = %303
  store i32 0, ptr %21, align 4
  store i32 1, ptr %81, align 4
  br label %759

307:                                              ; preds = %303
  br label %308

308:                                              ; preds = %307
  %309 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 0, ptr %309, align 8, !tbaa !9
  %310 = load ptr, ptr %24, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = icmp eq i64 %311, 0
  br i1 %312, label %313, label %314

313:                                              ; preds = %308
  store i32 0, ptr %21, align 4
  store i32 1, ptr %81, align 4
  br label %759

314:                                              ; preds = %308
  %315 = load ptr, ptr %24, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = icmp eq i64 %316, 1
  br i1 %317, label %318, label %362

318:                                              ; preds = %314
  %319 = load i64, ptr %65, align 8, !tbaa !9
  %320 = icmp ne i64 %319, 0
  br i1 %320, label %324, label %321

321:                                              ; preds = %318
  %322 = load i64, ptr %66, align 8, !tbaa !9
  %323 = icmp ne i64 %322, 0
  br i1 %323, label %324, label %331

324:                                              ; preds = %321, %318
  %325 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 1, ptr %325, align 8, !tbaa !9
  %326 = load ptr, ptr %25, align 8, !tbaa !5
  %327 = getelementptr inbounds double, ptr %326, i64 1
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = load ptr, ptr %33, align 8, !tbaa !5
  %330 = getelementptr inbounds double, ptr %329, i64 1
  store double %328, ptr %330, align 8, !tbaa !11
  br label %353

331:                                              ; preds = %321
  %332 = load ptr, ptr %27, align 8, !tbaa !5
  %333 = load double, ptr %332, align 8, !tbaa !11
  %334 = load ptr, ptr %25, align 8, !tbaa !5
  %335 = getelementptr inbounds double, ptr %334, i64 1
  %336 = load double, ptr %335, align 8, !tbaa !11
  %337 = fcmp olt double %333, %336
  br i1 %337, label %338, label %352

338:                                              ; preds = %331
  %339 = load ptr, ptr %28, align 8, !tbaa !5
  %340 = load double, ptr %339, align 8, !tbaa !11
  %341 = load ptr, ptr %25, align 8, !tbaa !5
  %342 = getelementptr inbounds double, ptr %341, i64 1
  %343 = load double, ptr %342, align 8, !tbaa !11
  %344 = fcmp oge double %340, %343
  br i1 %344, label %345, label %352

345:                                              ; preds = %338
  %346 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 1, ptr %346, align 8, !tbaa !9
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = getelementptr inbounds double, ptr %347, i64 1
  %349 = load double, ptr %348, align 8, !tbaa !11
  %350 = load ptr, ptr %33, align 8, !tbaa !5
  %351 = getelementptr inbounds double, ptr %350, i64 1
  store double %349, ptr %351, align 8, !tbaa !11
  br label %352

352:                                              ; preds = %345, %338, %331
  br label %353

353:                                              ; preds = %352, %324
  %354 = load i64, ptr %64, align 8, !tbaa !9
  %355 = icmp ne i64 %354, 0
  br i1 %355, label %356, label %361

356:                                              ; preds = %353
  %357 = load ptr, ptr %34, align 8, !tbaa !5
  %358 = load i64, ptr %42, align 8, !tbaa !9
  %359 = add nsw i64 %358, 1
  %360 = getelementptr inbounds double, ptr %357, i64 %359
  store double 1.000000e+00, ptr %360, align 8, !tbaa !11
  br label %361

361:                                              ; preds = %356, %353
  store i32 0, ptr %21, align 4
  store i32 1, ptr %81, align 4
  br label %759

362:                                              ; preds = %314
  %363 = call double @dlamch_(ptr noundef @.str.5)
  store double %363, ptr %72, align 8, !tbaa !11
  %364 = call double @dlamch_(ptr noundef @.str.6)
  store double %364, ptr %51, align 8, !tbaa !11
  %365 = load double, ptr %72, align 8, !tbaa !11
  %366 = load double, ptr %51, align 8, !tbaa !11
  %367 = fdiv double %365, %366
  store double %367, ptr %79, align 8, !tbaa !11
  %368 = load double, ptr %79, align 8, !tbaa !11
  %369 = fdiv double 1.000000e+00, %368
  store double %369, ptr %73, align 8, !tbaa !11
  %370 = load double, ptr %79, align 8, !tbaa !11
  %371 = call double @sqrt(double noundef %370) #4
  store double %371, ptr %56, align 8, !tbaa !11
  %372 = load double, ptr %73, align 8, !tbaa !11
  %373 = call double @sqrt(double noundef %372) #4
  store double %373, ptr %46, align 8, !tbaa !11
  %374 = load double, ptr %72, align 8, !tbaa !11
  %375 = call double @sqrt(double noundef %374) #4
  %376 = call double @sqrt(double noundef %375) #4
  %377 = fdiv double 1.000000e+00, %376
  store double %377, ptr %47, align 8, !tbaa !11
  %378 = load double, ptr %46, align 8, !tbaa !11
  %379 = load double, ptr %47, align 8, !tbaa !11
  %380 = fcmp ole double %378, %379
  br i1 %380, label %381, label %383

381:                                              ; preds = %362
  %382 = load double, ptr %46, align 8, !tbaa !11
  br label %385

383:                                              ; preds = %362
  %384 = load double, ptr %47, align 8, !tbaa !11
  br label %385

385:                                              ; preds = %383, %381
  %386 = phi double [ %382, %381 ], [ %384, %383 ]
  store double %386, ptr %57, align 8, !tbaa !11
  store i64 0, ptr %67, align 8, !tbaa !9
  %387 = load ptr, ptr %27, align 8, !tbaa !5
  %388 = load double, ptr %387, align 8, !tbaa !11
  store double %388, ptr %52, align 8, !tbaa !11
  %389 = load ptr, ptr %28, align 8, !tbaa !5
  %390 = load double, ptr %389, align 8, !tbaa !11
  store double %390, ptr %53, align 8, !tbaa !11
  %391 = load ptr, ptr %24, align 8, !tbaa !5
  %392 = load ptr, ptr %25, align 8, !tbaa !5
  %393 = getelementptr inbounds double, ptr %392, i64 1
  %394 = load ptr, ptr %26, align 8, !tbaa !5
  %395 = getelementptr inbounds double, ptr %394, i64 1
  %396 = call double @dlanst_(ptr noundef @.str.7, ptr noundef %391, ptr noundef %393, ptr noundef %395)
  store double %396, ptr %59, align 8, !tbaa !11
  %397 = load double, ptr %59, align 8, !tbaa !11
  %398 = fcmp ogt double %397, 0.000000e+00
  br i1 %398, label %399, label %407

399:                                              ; preds = %385
  %400 = load double, ptr %59, align 8, !tbaa !11
  %401 = load double, ptr %56, align 8, !tbaa !11
  %402 = fcmp olt double %400, %401
  br i1 %402, label %403, label %407

403:                                              ; preds = %399
  store i64 1, ptr %67, align 8, !tbaa !9
  %404 = load double, ptr %56, align 8, !tbaa !11
  %405 = load double, ptr %59, align 8, !tbaa !11
  %406 = fdiv double %404, %405
  store double %406, ptr %61, align 8, !tbaa !11
  br label %416

407:                                              ; preds = %399, %385
  %408 = load double, ptr %59, align 8, !tbaa !11
  %409 = load double, ptr %57, align 8, !tbaa !11
  %410 = fcmp ogt double %408, %409
  br i1 %410, label %411, label %415

411:                                              ; preds = %407
  store i64 1, ptr %67, align 8, !tbaa !9
  %412 = load double, ptr %57, align 8, !tbaa !11
  %413 = load double, ptr %59, align 8, !tbaa !11
  %414 = fdiv double %412, %413
  store double %414, ptr %61, align 8, !tbaa !11
  br label %415

415:                                              ; preds = %411, %407
  br label %416

416:                                              ; preds = %415, %403
  %417 = load i64, ptr %67, align 8, !tbaa !9
  %418 = icmp eq i64 %417, 1
  br i1 %418, label %419, label %442

419:                                              ; preds = %416
  %420 = load ptr, ptr %24, align 8, !tbaa !5
  %421 = load ptr, ptr %25, align 8, !tbaa !5
  %422 = getelementptr inbounds double, ptr %421, i64 1
  %423 = call i32 @f2c_dscal(ptr noundef %420, ptr noundef %61, ptr noundef %422, ptr noundef @c__1)
  %424 = load ptr, ptr %24, align 8, !tbaa !5
  %425 = load i64, ptr %424, align 8, !tbaa !9
  %426 = sub nsw i64 %425, 1
  store i64 %426, ptr %44, align 8, !tbaa !9
  %427 = load ptr, ptr %26, align 8, !tbaa !5
  %428 = getelementptr inbounds double, ptr %427, i64 1
  %429 = call i32 @f2c_dscal(ptr noundef %44, ptr noundef %61, ptr noundef %428, ptr noundef @c__1)
  %430 = load i64, ptr %71, align 8, !tbaa !9
  %431 = icmp ne i64 %430, 0
  br i1 %431, label %432, label %441

432:                                              ; preds = %419
  %433 = load ptr, ptr %27, align 8, !tbaa !5
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = load double, ptr %61, align 8, !tbaa !11
  %436 = fmul double %434, %435
  store double %436, ptr %52, align 8, !tbaa !11
  %437 = load ptr, ptr %28, align 8, !tbaa !5
  %438 = load double, ptr %437, align 8, !tbaa !11
  %439 = load double, ptr %61, align 8, !tbaa !11
  %440 = fmul double %438, %439
  store double %440, ptr %53, align 8, !tbaa !11
  br label %441

441:                                              ; preds = %432, %419
  br label %442

442:                                              ; preds = %441, %416
  store i64 1, ptr %69, align 8, !tbaa !9
  %443 = load i64, ptr %69, align 8, !tbaa !9
  %444 = load ptr, ptr %24, align 8, !tbaa !5
  %445 = load i64, ptr %444, align 8, !tbaa !9
  %446 = add nsw i64 %443, %445
  store i64 %446, ptr %74, align 8, !tbaa !9
  %447 = load i64, ptr %74, align 8, !tbaa !9
  %448 = load ptr, ptr %24, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = add nsw i64 %447, %449
  store i64 %450, ptr %70, align 8, !tbaa !9
  %451 = load i64, ptr %74, align 8, !tbaa !9
  %452 = load ptr, ptr %24, align 8, !tbaa !5
  %453 = load i64, ptr %452, align 8, !tbaa !9
  %454 = add nsw i64 %451, %453
  store i64 %454, ptr %75, align 8, !tbaa !9
  store i64 0, ptr %58, align 8, !tbaa !9
  %455 = load i64, ptr %66, align 8, !tbaa !9
  %456 = icmp ne i64 %455, 0
  br i1 %456, label %457, label %469

457:                                              ; preds = %442
  %458 = load ptr, ptr %29, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = icmp eq i64 %459, 1
  br i1 %460, label %461, label %468

461:                                              ; preds = %457
  %462 = load ptr, ptr %30, align 8, !tbaa !5
  %463 = load i64, ptr %462, align 8, !tbaa !9
  %464 = load ptr, ptr %24, align 8, !tbaa !5
  %465 = load i64, ptr %464, align 8, !tbaa !9
  %466 = icmp eq i64 %463, %465
  br i1 %466, label %467, label %468

467:                                              ; preds = %461
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %468

468:                                              ; preds = %467, %461, %457
  br label %469

469:                                              ; preds = %468, %442
  %470 = load i64, ptr %65, align 8, !tbaa !9
  %471 = icmp ne i64 %470, 0
  br i1 %471, label %475, label %472

472:                                              ; preds = %469
  %473 = load i64, ptr %58, align 8, !tbaa !9
  %474 = icmp ne i64 %473, 0
  br i1 %474, label %475, label %575

475:                                              ; preds = %472, %469
  %476 = load i64, ptr %68, align 8, !tbaa !9
  %477 = icmp eq i64 %476, 1
  br i1 %477, label %478, label %575

478:                                              ; preds = %475
  %479 = load ptr, ptr %24, align 8, !tbaa !5
  %480 = load i64, ptr %479, align 8, !tbaa !9
  %481 = sub nsw i64 %480, 1
  store i64 %481, ptr %44, align 8, !tbaa !9
  %482 = load ptr, ptr %26, align 8, !tbaa !5
  %483 = getelementptr inbounds double, ptr %482, i64 1
  %484 = load ptr, ptr %37, align 8, !tbaa !5
  %485 = getelementptr inbounds double, ptr %484, i64 1
  %486 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %483, ptr noundef @c__1, ptr noundef %485, ptr noundef @c__1)
  %487 = load i64, ptr %64, align 8, !tbaa !9
  %488 = icmp ne i64 %487, 0
  br i1 %488, label %503, label %489

489:                                              ; preds = %478
  %490 = load ptr, ptr %24, align 8, !tbaa !5
  %491 = load ptr, ptr %25, align 8, !tbaa !5
  %492 = getelementptr inbounds double, ptr %491, i64 1
  %493 = load ptr, ptr %33, align 8, !tbaa !5
  %494 = getelementptr inbounds double, ptr %493, i64 1
  %495 = call i32 @f2c_dcopy(ptr noundef %490, ptr noundef %492, ptr noundef @c__1, ptr noundef %494, ptr noundef @c__1)
  %496 = load ptr, ptr %24, align 8, !tbaa !5
  %497 = load ptr, ptr %33, align 8, !tbaa !5
  %498 = getelementptr inbounds double, ptr %497, i64 1
  %499 = load ptr, ptr %37, align 8, !tbaa !5
  %500 = getelementptr inbounds double, ptr %499, i64 1
  %501 = load ptr, ptr %41, align 8, !tbaa !5
  %502 = call i32 @dsterf_(ptr noundef %496, ptr noundef %498, ptr noundef %500, ptr noundef %501)
  br label %565

503:                                              ; preds = %478
  %504 = load ptr, ptr %24, align 8, !tbaa !5
  %505 = load ptr, ptr %25, align 8, !tbaa !5
  %506 = getelementptr inbounds double, ptr %505, i64 1
  %507 = load ptr, ptr %37, align 8, !tbaa !5
  %508 = load ptr, ptr %24, align 8, !tbaa !5
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = add nsw i64 %509, 1
  %511 = getelementptr inbounds double, ptr %507, i64 %510
  %512 = call i32 @f2c_dcopy(ptr noundef %504, ptr noundef %506, ptr noundef @c__1, ptr noundef %511, ptr noundef @c__1)
  %513 = load ptr, ptr %31, align 8, !tbaa !5
  %514 = load double, ptr %513, align 8, !tbaa !11
  %515 = load ptr, ptr %24, align 8, !tbaa !5
  %516 = load i64, ptr %515, align 8, !tbaa !9
  %517 = sitofp i64 %516 to double
  %518 = fmul double %517, 2.000000e+00
  %519 = load double, ptr %51, align 8, !tbaa !11
  %520 = fmul double %518, %519
  %521 = fcmp ole double %514, %520
  br i1 %521, label %522, label %523

522:                                              ; preds = %503
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %524

523:                                              ; preds = %503
  store i64 0, ptr %77, align 8, !tbaa !9
  br label %524

524:                                              ; preds = %523, %522
  %525 = load ptr, ptr %38, align 8, !tbaa !5
  %526 = load i64, ptr %525, align 8, !tbaa !9
  %527 = load ptr, ptr %24, align 8, !tbaa !5
  %528 = load i64, ptr %527, align 8, !tbaa !9
  %529 = shl i64 %528, 1
  %530 = sub nsw i64 %526, %529
  store i64 %530, ptr %44, align 8, !tbaa !9
  %531 = load ptr, ptr %22, align 8, !tbaa !5
  %532 = load ptr, ptr %24, align 8, !tbaa !5
  %533 = load ptr, ptr %37, align 8, !tbaa !5
  %534 = load ptr, ptr %24, align 8, !tbaa !5
  %535 = load i64, ptr %534, align 8, !tbaa !9
  %536 = add nsw i64 %535, 1
  %537 = getelementptr inbounds double, ptr %533, i64 %536
  %538 = load ptr, ptr %37, align 8, !tbaa !5
  %539 = getelementptr inbounds double, ptr %538, i64 1
  %540 = load ptr, ptr %27, align 8, !tbaa !5
  %541 = load ptr, ptr %28, align 8, !tbaa !5
  %542 = load ptr, ptr %29, align 8, !tbaa !5
  %543 = load ptr, ptr %30, align 8, !tbaa !5
  %544 = load ptr, ptr %32, align 8, !tbaa !5
  %545 = load ptr, ptr %33, align 8, !tbaa !5
  %546 = getelementptr inbounds double, ptr %545, i64 1
  %547 = load ptr, ptr %34, align 8, !tbaa !5
  %548 = load i64, ptr %43, align 8, !tbaa !9
  %549 = getelementptr inbounds double, ptr %547, i64 %548
  %550 = load ptr, ptr %35, align 8, !tbaa !5
  %551 = load ptr, ptr %24, align 8, !tbaa !5
  %552 = load ptr, ptr %36, align 8, !tbaa !5
  %553 = getelementptr inbounds i64, ptr %552, i64 1
  %554 = load ptr, ptr %37, align 8, !tbaa !5
  %555 = load ptr, ptr %24, align 8, !tbaa !5
  %556 = load i64, ptr %555, align 8, !tbaa !9
  %557 = shl i64 %556, 1
  %558 = add nsw i64 %557, 1
  %559 = getelementptr inbounds double, ptr %554, i64 %558
  %560 = load ptr, ptr %39, align 8, !tbaa !5
  %561 = getelementptr inbounds i64, ptr %560, i64 1
  %562 = load ptr, ptr %40, align 8, !tbaa !5
  %563 = load ptr, ptr %41, align 8, !tbaa !5
  %564 = call i32 @dstemr_(ptr noundef %531, ptr noundef @.str.3, ptr noundef %532, ptr noundef %537, ptr noundef %539, ptr noundef %540, ptr noundef %541, ptr noundef %542, ptr noundef %543, ptr noundef %544, ptr noundef %546, ptr noundef %549, ptr noundef %550, ptr noundef %551, ptr noundef %553, ptr noundef %77, ptr noundef %559, ptr noundef %44, ptr noundef %561, ptr noundef %562, ptr noundef %563)
  br label %565

565:                                              ; preds = %524, %489
  %566 = load ptr, ptr %41, align 8, !tbaa !5
  %567 = load i64, ptr %566, align 8, !tbaa !9
  %568 = icmp eq i64 %567, 0
  br i1 %568, label %569, label %573

569:                                              ; preds = %565
  %570 = load ptr, ptr %24, align 8, !tbaa !5
  %571 = load i64, ptr %570, align 8, !tbaa !9
  %572 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 %571, ptr %572, align 8, !tbaa !9
  br label %641

573:                                              ; preds = %565
  %574 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %574, align 8, !tbaa !9
  br label %575

575:                                              ; preds = %573, %475, %472
  %576 = load i64, ptr %64, align 8, !tbaa !9
  %577 = icmp ne i64 %576, 0
  br i1 %577, label %578, label %580

578:                                              ; preds = %575
  %579 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 66, ptr %579, align 1, !tbaa !13
  br label %582

580:                                              ; preds = %575
  %581 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 69, ptr %581, align 1, !tbaa !13
  br label %582

582:                                              ; preds = %580, %578
  %583 = load ptr, ptr %23, align 8, !tbaa !5
  %584 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  %585 = load ptr, ptr %24, align 8, !tbaa !5
  %586 = load ptr, ptr %29, align 8, !tbaa !5
  %587 = load ptr, ptr %30, align 8, !tbaa !5
  %588 = load ptr, ptr %31, align 8, !tbaa !5
  %589 = load ptr, ptr %25, align 8, !tbaa !5
  %590 = getelementptr inbounds double, ptr %589, i64 1
  %591 = load ptr, ptr %26, align 8, !tbaa !5
  %592 = getelementptr inbounds double, ptr %591, i64 1
  %593 = load ptr, ptr %32, align 8, !tbaa !5
  %594 = load ptr, ptr %33, align 8, !tbaa !5
  %595 = getelementptr inbounds double, ptr %594, i64 1
  %596 = load ptr, ptr %39, align 8, !tbaa !5
  %597 = load i64, ptr %69, align 8, !tbaa !9
  %598 = getelementptr inbounds i64, ptr %596, i64 %597
  %599 = load ptr, ptr %39, align 8, !tbaa !5
  %600 = load i64, ptr %74, align 8, !tbaa !9
  %601 = getelementptr inbounds i64, ptr %599, i64 %600
  %602 = load ptr, ptr %37, align 8, !tbaa !5
  %603 = getelementptr inbounds double, ptr %602, i64 1
  %604 = load ptr, ptr %39, align 8, !tbaa !5
  %605 = load i64, ptr %75, align 8, !tbaa !9
  %606 = getelementptr inbounds i64, ptr %604, i64 %605
  %607 = load ptr, ptr %41, align 8, !tbaa !5
  %608 = call i32 @dstebz_(ptr noundef %583, ptr noundef %584, ptr noundef %585, ptr noundef %52, ptr noundef %53, ptr noundef %586, ptr noundef %587, ptr noundef %588, ptr noundef %590, ptr noundef %592, ptr noundef %593, ptr noundef %78, ptr noundef %595, ptr noundef %598, ptr noundef %601, ptr noundef %603, ptr noundef %606, ptr noundef %607)
  %609 = load i64, ptr %64, align 8, !tbaa !9
  %610 = icmp ne i64 %609, 0
  br i1 %610, label %611, label %640

611:                                              ; preds = %582
  %612 = load ptr, ptr %24, align 8, !tbaa !5
  %613 = load ptr, ptr %25, align 8, !tbaa !5
  %614 = getelementptr inbounds double, ptr %613, i64 1
  %615 = load ptr, ptr %26, align 8, !tbaa !5
  %616 = getelementptr inbounds double, ptr %615, i64 1
  %617 = load ptr, ptr %32, align 8, !tbaa !5
  %618 = load ptr, ptr %33, align 8, !tbaa !5
  %619 = getelementptr inbounds double, ptr %618, i64 1
  %620 = load ptr, ptr %39, align 8, !tbaa !5
  %621 = load i64, ptr %69, align 8, !tbaa !9
  %622 = getelementptr inbounds i64, ptr %620, i64 %621
  %623 = load ptr, ptr %39, align 8, !tbaa !5
  %624 = load i64, ptr %74, align 8, !tbaa !9
  %625 = getelementptr inbounds i64, ptr %623, i64 %624
  %626 = load ptr, ptr %34, align 8, !tbaa !5
  %627 = load i64, ptr %43, align 8, !tbaa !9
  %628 = getelementptr inbounds double, ptr %626, i64 %627
  %629 = load ptr, ptr %35, align 8, !tbaa !5
  %630 = load ptr, ptr %37, align 8, !tbaa !5
  %631 = getelementptr inbounds double, ptr %630, i64 1
  %632 = load ptr, ptr %39, align 8, !tbaa !5
  %633 = load i64, ptr %75, align 8, !tbaa !9
  %634 = getelementptr inbounds i64, ptr %632, i64 %633
  %635 = load ptr, ptr %39, align 8, !tbaa !5
  %636 = load i64, ptr %70, align 8, !tbaa !9
  %637 = getelementptr inbounds i64, ptr %635, i64 %636
  %638 = load ptr, ptr %41, align 8, !tbaa !5
  %639 = call i32 @dstein_(ptr noundef %612, ptr noundef %614, ptr noundef %616, ptr noundef %617, ptr noundef %619, ptr noundef %622, ptr noundef %625, ptr noundef %628, ptr noundef %629, ptr noundef %631, ptr noundef %634, ptr noundef %637, ptr noundef %638)
  br label %640

640:                                              ; preds = %611, %582
  br label %641

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

644:                                              ; preds = %641
  %645 = load ptr, ptr %41, 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 %32, align 8, !tbaa !5
  %650 = load i64, ptr %649, align 8, !tbaa !9
  store i64 %650, ptr %55, align 8, !tbaa !9
  br label %655

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

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

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

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

668:                                              ; preds = %747, %664
  %669 = load i64, ptr %49, align 8, !tbaa !9
  %670 = load i64, ptr %44, align 8, !tbaa !9
  %671 = icmp sle i64 %669, %670
  br i1 %671, label %672, label %750

672:                                              ; preds = %668
  store i64 0, ptr %48, align 8, !tbaa !9
  %673 = load ptr, ptr %33, align 8, !tbaa !5
  %674 = load i64, ptr %49, 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 %54, align 8, !tbaa !11
  %677 = load ptr, ptr %32, align 8, !tbaa !5
  %678 = load i64, ptr %677, align 8, !tbaa !9
  store i64 %678, ptr %45, align 8, !tbaa !9
  %679 = load i64, ptr %49, align 8, !tbaa !9
  %680 = add nsw i64 %679, 1
  store i64 %680, ptr %50, align 8, !tbaa !9
  br label %681

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

685:                                              ; preds = %681
  %686 = load ptr, ptr %33, align 8, !tbaa !5
  %687 = load i64, ptr %50, 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 %54, align 8, !tbaa !11
  %691 = fcmp olt double %689, %690
  br i1 %691, label %692, label %698

692:                                              ; preds = %685
  %693 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %693, ptr %48, align 8, !tbaa !9
  %694 = load ptr, ptr %33, align 8, !tbaa !5
  %695 = load i64, ptr %50, 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 %54, align 8, !tbaa !11
  br label %698

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

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

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

705:                                              ; preds = %702
  %706 = load ptr, ptr %39, align 8, !tbaa !5
  %707 = load i64, ptr %48, align 8, !tbaa !9
  %708 = getelementptr inbounds i64, ptr %706, i64 %707
  %709 = load i64, ptr %708, align 8, !tbaa !9
  store i64 %709, ptr %60, align 8, !tbaa !9
  %710 = load ptr, ptr %33, align 8, !tbaa !5
  %711 = load i64, ptr %49, align 8, !tbaa !9
  %712 = getelementptr inbounds double, ptr %710, i64 %711
  %713 = load double, ptr %712, align 8, !tbaa !11
  %714 = load ptr, ptr %33, align 8, !tbaa !5
  %715 = load i64, ptr %48, align 8, !tbaa !9
  %716 = getelementptr inbounds double, ptr %714, i64 %715
  store double %713, ptr %716, align 8, !tbaa !11
  %717 = load ptr, ptr %39, align 8, !tbaa !5
  %718 = load i64, ptr %49, align 8, !tbaa !9
  %719 = getelementptr inbounds i64, ptr %717, i64 %718
  %720 = load i64, ptr %719, align 8, !tbaa !9
  %721 = load ptr, ptr %39, align 8, !tbaa !5
  %722 = load i64, ptr %48, align 8, !tbaa !9
  %723 = getelementptr inbounds i64, ptr %721, i64 %722
  store i64 %720, ptr %723, align 8, !tbaa !9
  %724 = load double, ptr %54, align 8, !tbaa !11
  %725 = load ptr, ptr %33, align 8, !tbaa !5
  %726 = load i64, ptr %49, align 8, !tbaa !9
  %727 = getelementptr inbounds double, ptr %725, i64 %726
  store double %724, ptr %727, align 8, !tbaa !11
  %728 = load i64, ptr %60, align 8, !tbaa !9
  %729 = load ptr, ptr %39, align 8, !tbaa !5
  %730 = load i64, ptr %49, align 8, !tbaa !9
  %731 = getelementptr inbounds i64, ptr %729, i64 %730
  store i64 %728, ptr %731, align 8, !tbaa !9
  %732 = load ptr, ptr %24, align 8, !tbaa !5
  %733 = load ptr, ptr %34, align 8, !tbaa !5
  %734 = load i64, ptr %48, align 8, !tbaa !9
  %735 = load i64, ptr %42, align 8, !tbaa !9
  %736 = mul nsw i64 %734, %735
  %737 = add nsw i64 %736, 1
  %738 = getelementptr inbounds double, ptr %733, i64 %737
  %739 = load ptr, ptr %34, align 8, !tbaa !5
  %740 = load i64, ptr %49, align 8, !tbaa !9
  %741 = load i64, ptr %42, align 8, !tbaa !9
  %742 = mul nsw i64 %740, %741
  %743 = add nsw i64 %742, 1
  %744 = getelementptr inbounds double, ptr %739, i64 %743
  %745 = call i32 @f2c_dswap(ptr noundef %732, ptr noundef %738, ptr noundef @c__1, ptr noundef %744, ptr noundef @c__1)
  br label %746

746:                                              ; preds = %705, %702
  br label %747

747:                                              ; preds = %746
  %748 = load i64, ptr %49, align 8, !tbaa !9
  %749 = add nsw i64 %748, 1
  store i64 %749, ptr %49, align 8, !tbaa !9
  br label %668, !llvm.loop !16

750:                                              ; preds = %668
  br label %751

751:                                              ; preds = %750, %661
  %752 = load i64, ptr %63, align 8, !tbaa !9
  %753 = sitofp i64 %752 to double
  %754 = load ptr, ptr %37, align 8, !tbaa !5
  %755 = getelementptr inbounds double, ptr %754, i64 1
  store double %753, ptr %755, align 8, !tbaa !11
  %756 = load i64, ptr %76, align 8, !tbaa !9
  %757 = load ptr, ptr %39, align 8, !tbaa !5
  %758 = getelementptr inbounds i64, ptr %757, i64 1
  store i64 %756, ptr %758, align 8, !tbaa !9
  store i32 0, ptr %21, align 4
  store i32 1, ptr %81, align 4
  br label %759

759:                                              ; preds = %751, %361, %313, %306, %298
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 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
  %760 = load i32, ptr %21, align 4
  ret i32 %760
}

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

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

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

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

declare 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 @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 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}


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

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

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

42:                                               ; preds = %20
  %43 = load i64, ptr %18, align 8, !tbaa !5
  %44 = icmp eq i64 %43, -1
  br label %45

45:                                               ; preds = %42, %20
  %46 = phi i1 [ true, %20 ], [ %44, %42 ]
  %47 = load i64, ptr %2, align 8, !tbaa !5
  %48 = mul nsw i64 %47, 20
  %49 = icmp slt i64 %47, 1
  %50 = select i1 %49, i64 1, i64 %48
  store i64 1, ptr %21, align 8, !tbaa !5
  %51 = mul nsw i64 %47, 10
  %52 = select i1 %49, i64 1, i64 %51
  store i64 0, ptr %19, align 8, !tbaa !5
  %.not = icmp ne i64 %36, 0
  br i1 %.not, label %55, label %53

53:                                               ; preds = %45
  %54 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not298 = icmp eq i64 %54, 0
  br i1 %.not298, label %.thread321.sink.split, label %55

55:                                               ; preds = %53, %45
  %56 = icmp ne i64 %37, 0
  %57 = icmp ne i64 %38, 0
  %or.cond = select i1 %56, i1 true, i1 %57
  %58 = icmp ne i64 %39, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %58
  br i1 %or.cond3, label %59, label %.thread321.sink.split

59:                                               ; preds = %55
  %60 = load i64, ptr %2, align 8, !tbaa !5
  %61 = icmp slt i64 %60, 0
  br i1 %61, label %.thread321.sink.split, label %62

62:                                               ; preds = %59
  br i1 %57, label %63, label %68

63:                                               ; preds = %62
  %.not300 = icmp eq i64 %60, 0
  br i1 %.not300, label %77, label %64

64:                                               ; preds = %63
  %65 = load double, ptr %6, align 8, !tbaa !9
  %66 = load double, ptr %5, align 8, !tbaa !9
  %67 = fcmp ugt double %65, %66
  br i1 %67, label %77, label %.thread321.sink.split

68:                                               ; preds = %62
  br i1 %58, label %69, label %77

69:                                               ; preds = %68
  %70 = load i64, ptr %7, align 8, !tbaa !5
  %71 = icmp slt i64 %70, 1
  %spec.select = tail call i64 @llvm.umax.i64(i64 %60, i64 1)
  %72 = icmp ugt i64 %70, %spec.select
  %or.cond329 = or i1 %71, %72
  br i1 %or.cond329, label %.thread321.sink.split, label %73

73:                                               ; preds = %69
  %74 = load i64, ptr %8, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %60, i64 %70)
  %75 = icmp slt i64 %74, %.
  %76 = icmp ugt i64 %74, %60
  %or.cond328 = or i1 %75, %76
  br i1 %or.cond328, label %.thread321.sink.split, label %77

77:                                               ; preds = %73, %64, %63, %68
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %78 = icmp eq i64 %.pr, 0
  br i1 %78, label %79, label %.thread321

79:                                               ; preds = %77
  %80 = load i64, ptr %13, align 8, !tbaa !5
  %81 = icmp slt i64 %80, 1
  %82 = icmp ult i64 %80, %60
  %or.cond344 = and i1 %.not, %82
  %or.cond346 = or i1 %81, %or.cond344
  br i1 %or.cond346, label %.thread321.sink.split, label %.thread

.thread:                                          ; preds = %79
  %83 = sitofp i64 %50 to double
  store double %83, ptr %15, align 8, !tbaa !9
  store i64 %52, ptr %17, align 8, !tbaa !5
  %84 = load i64, ptr %16, align 8, !tbaa !5
  %85 = icmp sge i64 %84, %50
  %or.cond5 = select i1 %85, i1 true, i1 %46
  br i1 %or.cond5, label %86, label %.thread321.sink.split

86:                                               ; preds = %.thread
  %87 = load i64, ptr %18, align 8, !tbaa !5
  %88 = icmp sge i64 %87, %52
  %or.cond7 = select i1 %88, i1 true, i1 %46
  br i1 %or.cond7, label %.thread317, label %.thread321.sink.split

.thread317:                                       ; preds = %86
  %.pr319.pr = load i64, ptr %19, align 8, !tbaa !5
  %.not301 = icmp eq i64 %.pr319.pr, 0
  br i1 %.not301, label %92, label %.thread321

.thread321.sink.split:                            ; preds = %86, %.thread, %79, %73, %69, %64, %59, %55, %53
  %.sink = phi i64 [ -1, %53 ], [ -2, %55 ], [ -3, %59 ], [ -7, %64 ], [ -8, %69 ], [ -9, %73 ], [ -14, %79 ], [ -17, %.thread ], [ -19, %86 ]
  store i64 %.sink, ptr %19, align 8, !tbaa !5
  br label %.thread321

.thread321:                                       ; preds = %.thread321.sink.split, %77, %.thread317
  %89 = phi i64 [ %.pr319.pr, %.thread317 ], [ %.pr, %77 ], [ %.sink, %.thread321.sink.split ]
  %90 = sub nsw i64 0, %89
  store i64 %90, ptr %21, align 8, !tbaa !5
  %91 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %21) #5
  br label %219

92:                                               ; preds = %.thread317
  br i1 %46, label %219, label %93

93:                                               ; preds = %92
  store i64 0, ptr %10, align 8, !tbaa !5
  %94 = load i64, ptr %2, align 8, !tbaa !5
  switch i64 %94, label %108 [
    i64 0, label %219
    i64 1, label %95
  ]

95:                                               ; preds = %93
  %or.cond9 = select i1 %56, i1 true, i1 %58
  br i1 %or.cond9, label %96, label %98

96:                                               ; preds = %95
  store i64 1, ptr %10, align 8, !tbaa !5
  %97 = load double, ptr %3, align 8, !tbaa !9
  br label %.sink.split

98:                                               ; preds = %95
  %99 = load double, ptr %5, align 8, !tbaa !9
  %100 = load double, ptr %3, align 8, !tbaa !9
  %101 = fcmp olt double %99, %100
  br i1 %101, label %102, label %106

102:                                              ; preds = %98
  %103 = load double, ptr %6, align 8, !tbaa !9
  %104 = fcmp ult double %103, %100
  br i1 %104, label %106, label %105

105:                                              ; preds = %102
  store i64 1, ptr %10, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %96, %105
  %.sink345 = phi double [ %100, %105 ], [ %97, %96 ]
  store double %.sink345, ptr %11, align 8, !tbaa !9
  br label %106

106:                                              ; preds = %.sink.split, %98, %102
  br i1 %.not, label %107, label %219

107:                                              ; preds = %106
  store double 1.000000e+00, ptr %12, align 8, !tbaa !9
  br label %219

108:                                              ; preds = %93
  %109 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #5
  %110 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #5
  %111 = fdiv double %109, %110
  %112 = fdiv double 1.000000e+00, %111
  %113 = tail call double @sqrt(double noundef %111) #5
  %114 = tail call double @sqrt(double noundef %112) #5
  store double %114, ptr %22, align 8, !tbaa !9
  %115 = tail call double @sqrt(double noundef %109) #5
  %116 = tail call double @sqrt(double noundef %115) #5
  %117 = load double, ptr %5, align 8, !tbaa !9
  store double %117, ptr %23, align 8, !tbaa !9
  %118 = load double, ptr %6, align 8, !tbaa !9
  store double %118, ptr %24, align 8, !tbaa !9
  %119 = tail call double @dlanst_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #5
  %120 = fcmp ogt double %119, 0.000000e+00
  %121 = fcmp olt double %119, %113
  %or.cond310 = select i1 %120, i1 %121, i1 false
  br i1 %or.cond310, label %127, label %122

122:                                              ; preds = %108
  %123 = fdiv double 1.000000e+00, %116
  %124 = fcmp ole double %114, %123
  %125 = select i1 %124, double %114, double %123
  %126 = fcmp ogt double %119, %125
  br i1 %126, label %127, label %138

127:                                              ; preds = %122, %108
  %.pn = phi double [ %113, %108 ], [ %125, %122 ]
  %storemerge = fdiv double %.pn, %119
  store double %storemerge, ptr %26, align 8, !tbaa !9
  %128 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %3, ptr noundef nonnull @c__1) #5
  %129 = load i64, ptr %2, align 8, !tbaa !5
  %130 = add nsw i64 %129, -1
  store i64 %130, ptr %21, align 8, !tbaa !5
  %131 = call i32 @f2c_dscal(ptr noundef nonnull %21, ptr noundef nonnull %26, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %.not302 = icmp eq i64 %38, 0
  br i1 %.not302, label %138, label %132

132:                                              ; preds = %127
  %133 = load double, ptr %5, align 8, !tbaa !9
  %134 = load double, ptr %26, align 8, !tbaa !9
  %135 = fmul double %133, %134
  store double %135, ptr %23, align 8, !tbaa !9
  %136 = load double, ptr %6, align 8, !tbaa !9
  %137 = fmul double %134, %136
  store double %137, ptr %24, align 8, !tbaa !9
  br label %138

138:                                              ; preds = %122, %127, %132
  %139 = phi i1 [ true, %127 ], [ true, %132 ], [ false, %122 ]
  %140 = load i64, ptr %2, align 8, !tbaa !5
  %.not303 = icmp eq i64 %39, 0
  br i1 %.not303, label %147, label %141

141:                                              ; preds = %138
  %142 = load i64, ptr %7, align 8, !tbaa !5
  %143 = icmp eq i64 %142, 1
  br i1 %143, label %144, label %147

144:                                              ; preds = %141
  %145 = load i64, ptr %8, align 8, !tbaa !5
  %146 = icmp eq i64 %145, %140
  br label %147

147:                                              ; preds = %144, %141, %138
  %148 = phi i1 [ false, %141 ], [ false, %138 ], [ %146, %144 ]
  %or.cond11 = or i1 %56, %148
  %149 = icmp eq i64 %35, 1
  %or.cond13 = select i1 %or.cond11, i1 %149, i1 false
  br i1 %or.cond13, label %150, label %178

150:                                              ; preds = %147
  %151 = add nsw i64 %140, -1
  store i64 %151, ptr %21, align 8, !tbaa !5
  %152 = call i32 @f2c_dcopy(ptr noundef nonnull %21, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull %15, ptr noundef nonnull @c__1) #5
  br i1 %.not, label %156, label %153

153:                                              ; preds = %150
  %154 = call i32 @f2c_dcopy(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #5
  %155 = call i32 @dsterf_(ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %15, ptr noundef nonnull %19) #5
  br label %172

156:                                              ; preds = %150
  %157 = load i64, ptr %2, align 8, !tbaa !5
  %158 = getelementptr double, ptr %15, i64 %157
  %159 = call i32 @f2c_dcopy(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %158, ptr noundef nonnull @c__1) #5
  %160 = load double, ptr %9, align 8, !tbaa !9
  %161 = load i64, ptr %2, align 8, !tbaa !5
  %162 = sitofp i64 %161 to double
  %163 = fmul double %162, 2.000000e+00
  %164 = fmul double %110, %163
  %165 = fcmp ole double %160, %164
  %.312 = zext i1 %165 to i64
  store i64 %.312, ptr %28, align 8, !tbaa !5
  %166 = load i64, ptr %16, align 8, !tbaa !5
  %167 = shl i64 %161, 1
  %168 = sub nsw i64 %166, %167
  store i64 %168, ptr %21, align 8, !tbaa !5
  %169 = getelementptr double, ptr %15, i64 %161
  %.idx = shl i64 %161, 4
  %170 = getelementptr i8, ptr %15, i64 %.idx
  %171 = call i32 @dstemr_(ptr noundef %0, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef %169, ptr noundef nonnull %15, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %2, ptr noundef %14, ptr noundef nonnull %28, ptr noundef %170, ptr noundef nonnull %21, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19) #5
  br label %172

172:                                              ; preds = %156, %153
  %173 = load i64, ptr %19, align 8, !tbaa !5
  %174 = icmp eq i64 %173, 0
  br i1 %174, label %175, label %177

175:                                              ; preds = %172
  %176 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %176, ptr %10, align 8, !tbaa !5
  br label %184

177:                                              ; preds = %172
  store i64 0, ptr %19, align 8, !tbaa !5
  br label %178

178:                                              ; preds = %147, %177
  %.313 = select i1 %.not, i8 66, i8 69
  store i8 %.313, ptr %27, align 1, !tbaa !11
  %179 = getelementptr i64, ptr %17, i64 %140
  %.idx305 = shl i64 %140, 4
  %180 = getelementptr i8, ptr %17, i64 %.idx305
  %181 = call i32 @dstebz_(ptr noundef %1, ptr noundef nonnull %27, ptr noundef nonnull %2, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %10, ptr noundef nonnull %29, ptr noundef %11, ptr noundef nonnull %17, ptr noundef %179, ptr noundef nonnull %15, ptr noundef %180, ptr noundef nonnull %19) #5
  br i1 %.not, label %182, label %184

182:                                              ; preds = %178
  %183 = call i32 @dstein_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %17, ptr noundef %179, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %180, ptr noundef %180, ptr noundef nonnull %19) #5
  br label %184

184:                                              ; preds = %178, %182, %175
  br i1 %139, label %185, label %196

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

188:                                              ; preds = %185
  %189 = load i64, ptr %10, align 8, !tbaa !5
  br label %192

190:                                              ; preds = %185
  %191 = add nsw i64 %186, -1
  br label %192

192:                                              ; preds = %190, %188
  %storemerge306 = phi i64 [ %191, %190 ], [ %189, %188 ]
  store i64 %storemerge306, ptr %25, align 8, !tbaa !5
  %193 = load double, ptr %26, align 8, !tbaa !9
  %194 = fdiv double 1.000000e+00, %193
  store double %194, ptr %22, align 8, !tbaa !9
  %195 = call i32 @f2c_dscal(ptr noundef nonnull %25, ptr noundef nonnull %22, ptr noundef %11, ptr noundef nonnull @c__1) #5
  br label %196

196:                                              ; preds = %192, %184
  br i1 %.not, label %197, label %.loopexit

197:                                              ; preds = %196
  %198 = load i64, ptr %10, align 8, !tbaa !5
  %199 = add nsw i64 %198, -1
  store i64 %199, ptr %21, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %33, i64 8
  %.not307337 = icmp slt i64 %198, 2
  br i1 %.not307337, label %.loopexit, label %.lr.ph340

.lr.ph340:                                        ; preds = %197, %._crit_edge.thread
  %200 = phi i64 [ %218, %._crit_edge.thread ], [ %199, %197 ]
  %.0280338 = phi i64 [ %204, %._crit_edge.thread ], [ 1, %197 ]
  %201 = getelementptr inbounds double, ptr %30, i64 %.0280338
  %202 = load double, ptr %201, align 8, !tbaa !9
  %203 = load i64, ptr %10, align 8, !tbaa !5
  %204 = add nuw nsw i64 %.0280338, 1
  %.not308330.not = icmp slt i64 %.0280338, %203
  br i1 %.not308330.not, label %.lr.ph, label %._crit_edge.thread

.lr.ph:                                           ; preds = %.lr.ph340, %.lr.ph
  %.0279333 = phi i64 [ %.1, %.lr.ph ], [ 0, %.lr.ph340 ]
  %.0282332 = phi i64 [ %208, %.lr.ph ], [ %204, %.lr.ph340 ]
  %.0283331 = phi double [ %.1284, %.lr.ph ], [ %202, %.lr.ph340 ]
  %205 = getelementptr inbounds double, ptr %30, i64 %.0282332
  %206 = load double, ptr %205, align 8, !tbaa !9
  %207 = fcmp olt double %206, %.0283331
  %.1284 = select i1 %207, double %206, double %.0283331
  %.1 = select i1 %207, i64 %.0282332, i64 %.0279333
  %208 = add nuw nsw i64 %.0282332, 1
  %.not308.not = icmp slt i64 %.0282332, %203
  br i1 %.not308.not, label %.lr.ph, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %.lr.ph
  %.not309 = icmp eq i64 %.1, 0
  br i1 %.not309, label %._crit_edge.thread, label %209

209:                                              ; preds = %._crit_edge
  %210 = getelementptr inbounds i64, ptr %34, i64 %.1
  %211 = load i64, ptr %210, align 8, !tbaa !5
  %212 = getelementptr inbounds double, ptr %30, i64 %.1
  store double %202, ptr %212, align 8, !tbaa !9
  %213 = getelementptr inbounds i64, ptr %34, i64 %.0280338
  %214 = load i64, ptr %213, align 8, !tbaa !5
  store i64 %214, ptr %210, align 8, !tbaa !5
  store double %.1284, ptr %201, align 8, !tbaa !9
  store i64 %211, ptr %213, align 8, !tbaa !5
  %215 = mul nsw i64 %.1, %31
  %gep = getelementptr double, ptr %invariant.gep, i64 %215
  %216 = mul nsw i64 %.0280338, %31
  %gep336 = getelementptr double, ptr %invariant.gep, i64 %216
  %217 = call i32 @f2c_dswap(ptr noundef nonnull %2, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep336, ptr noundef nonnull @c__1) #5
  %.pre = load i64, ptr %21, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph340, %._crit_edge, %209
  %218 = phi i64 [ %200, %._crit_edge ], [ %.pre, %209 ], [ %200, %.lr.ph340 ]
  %.not307.not = icmp slt i64 %.0280338, %218
  br i1 %.not307.not, label %.lr.ph340, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge.thread, %197, %196
  store double %83, ptr %15, align 8, !tbaa !9
  store i64 %52, ptr %17, align 8, !tbaa !5
  br label %219

219:                                              ; preds = %106, %107, %93, %92, %.loopexit, %.thread321
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  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 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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 @dlanst_(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 @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 @dstemr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare 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 @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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass