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

115:                                              ; preds = %20
  %116 = load ptr, ptr %39, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  %118 = icmp eq i32 %117, -1
  br label %119

119:                                              ; preds = %115, %20
  %120 = phi i1 [ true, %20 ], [ %118, %115 ]
  %121 = zext i1 %120 to i32
  store i32 %121, ptr %75, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  %122 = load ptr, ptr %23, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = mul nsw i32 %123, 20
  store i32 %124, ptr %44, align 4, !tbaa !9
  %125 = load i32, ptr %43, align 4, !tbaa !9
  %126 = load i32, ptr %44, align 4, !tbaa !9
  %127 = icmp sge i32 %125, %126
  br i1 %127, label %128, label %130

128:                                              ; preds = %119
  %129 = load i32, ptr %43, align 4, !tbaa !9
  br label %132

130:                                              ; preds = %119
  %131 = load i32, ptr %44, align 4, !tbaa !9
  br label %132

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

140:                                              ; preds = %132
  %141 = load i32, ptr %43, align 4, !tbaa !9
  br label %144

142:                                              ; preds = %132
  %143 = load i32, ptr %44, align 4, !tbaa !9
  br label %144

144:                                              ; preds = %142, %140
  %145 = phi i32 [ %141, %140 ], [ %143, %142 ]
  store i32 %145, ptr %71, align 4, !tbaa !9
  %146 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %146, align 4, !tbaa !9
  %147 = load i32, ptr %58, align 4, !tbaa !9
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %155, label %149

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

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

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

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

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

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

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

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

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

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

179:                                              ; preds = %175
  %180 = load ptr, ptr %27, align 8, !tbaa !5
  %181 = load double, ptr %180, align 8, !tbaa !11
  %182 = load ptr, ptr %26, 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 %40, align 8, !tbaa !5
  store i32 -7, ptr %186, align 4, !tbaa !9
  br label %187

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

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

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

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

201:                                              ; preds = %195
  br label %205

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

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

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

210:                                              ; preds = %205
  %211 = load ptr, ptr %29, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = load ptr, ptr %23, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = load ptr, ptr %28, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = icmp sle i32 %214, %216
  br i1 %217, label %218, label %221

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

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

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

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

233:                                              ; preds = %227, %224
  %234 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -9, ptr %234, align 4, !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 %40, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = icmp eq i32 %243, 0
  br i1 %244, label %245, label %261

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

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

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

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

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

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

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

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

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

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

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

290:                                              ; preds = %287
  %291 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -19, ptr %291, align 4, !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 %40, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = icmp ne i32 %296, 0
  br i1 %297, label %298, label %303

298:                                              ; preds = %294
  %299 = load ptr, ptr %40, align 8, !tbaa !5
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = sub nsw i32 0, %300
  store i32 %301, ptr %43, align 4, !tbaa !9
  %302 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %43, i32 noundef 6)
  store i32 1, ptr %80, align 4
  br label %777

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

306:                                              ; preds = %303
  store i32 1, ptr %80, align 4
  br label %777

307:                                              ; preds = %303
  br label %308

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

313:                                              ; preds = %308
  store i32 1, ptr %80, align 4
  br label %777

314:                                              ; preds = %308
  %315 = load ptr, ptr %23, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = icmp eq i32 %316, 1
  br i1 %317, label %318, label %363

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

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

324:                                              ; preds = %321, %318
  %325 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 1, ptr %325, align 4, !tbaa !9
  %326 = load ptr, ptr %24, 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 %32, 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 %26, align 8, !tbaa !5
  %333 = load double, ptr %332, align 8, !tbaa !11
  %334 = load ptr, ptr %24, 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 %27, align 8, !tbaa !5
  %340 = load double, ptr %339, align 8, !tbaa !11
  %341 = load ptr, ptr %24, 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 %31, align 8, !tbaa !5
  store i32 1, ptr %346, align 4, !tbaa !9
  %347 = load ptr, ptr %24, 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 %32, 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 i32, ptr %58, align 4, !tbaa !9
  %355 = icmp ne i32 %354, 0
  br i1 %355, label %356, label %362

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

362:                                              ; preds = %356, %353
  store i32 1, ptr %80, align 4
  br label %777

363:                                              ; preds = %314
  %364 = call double @dlamch_(ptr noundef @.str.5)
  store double %364, ptr %67, align 8, !tbaa !11
  %365 = call double @dlamch_(ptr noundef @.str.6)
  store double %365, ptr %76, align 8, !tbaa !11
  %366 = load double, ptr %67, align 8, !tbaa !11
  %367 = load double, ptr %76, align 8, !tbaa !11
  %368 = fdiv double %366, %367
  store double %368, ptr %74, align 8, !tbaa !11
  %369 = load double, ptr %74, align 8, !tbaa !11
  %370 = fdiv double 1.000000e+00, %369
  store double %370, ptr %68, align 8, !tbaa !11
  %371 = load double, ptr %74, align 8, !tbaa !11
  %372 = call double @sqrt(double noundef %371) #4
  store double %372, ptr %48, align 8, !tbaa !11
  %373 = load double, ptr %68, align 8, !tbaa !11
  %374 = call double @sqrt(double noundef %373) #4
  store double %374, ptr %45, align 8, !tbaa !11
  %375 = load double, ptr %67, align 8, !tbaa !11
  %376 = call double @sqrt(double noundef %375) #4
  %377 = call double @sqrt(double noundef %376) #4
  %378 = fdiv double 1.000000e+00, %377
  store double %378, ptr %46, align 8, !tbaa !11
  %379 = load double, ptr %45, align 8, !tbaa !11
  %380 = load double, ptr %46, align 8, !tbaa !11
  %381 = fcmp ole double %379, %380
  br i1 %381, label %382, label %384

382:                                              ; preds = %363
  %383 = load double, ptr %45, align 8, !tbaa !11
  br label %386

384:                                              ; preds = %363
  %385 = load double, ptr %46, align 8, !tbaa !11
  br label %386

386:                                              ; preds = %384, %382
  %387 = phi double [ %383, %382 ], [ %385, %384 ]
  store double %387, ptr %49, align 8, !tbaa !11
  store i32 0, ptr %62, align 4, !tbaa !9
  %388 = load i32, ptr %66, align 4, !tbaa !9
  %389 = icmp ne i32 %388, 0
  br i1 %389, label %390, label %395

390:                                              ; preds = %386
  %391 = load ptr, ptr %26, align 8, !tbaa !5
  %392 = load double, ptr %391, align 8, !tbaa !11
  store double %392, ptr %77, align 8, !tbaa !11
  %393 = load ptr, ptr %27, align 8, !tbaa !5
  %394 = load double, ptr %393, align 8, !tbaa !11
  store double %394, ptr %78, align 8, !tbaa !11
  br label %395

395:                                              ; preds = %390, %386
  %396 = load ptr, ptr %23, align 8, !tbaa !5
  %397 = load ptr, ptr %24, align 8, !tbaa !5
  %398 = getelementptr inbounds double, ptr %397, i64 1
  %399 = load ptr, ptr %25, align 8, !tbaa !5
  %400 = getelementptr inbounds double, ptr %399, i64 1
  %401 = call double @dlanst_(ptr noundef @.str.7, ptr noundef %396, ptr noundef %398, ptr noundef %400)
  store double %401, ptr %51, align 8, !tbaa !11
  %402 = load double, ptr %51, align 8, !tbaa !11
  %403 = fcmp ogt double %402, 0.000000e+00
  br i1 %403, label %404, label %412

404:                                              ; preds = %395
  %405 = load double, ptr %51, align 8, !tbaa !11
  %406 = load double, ptr %48, align 8, !tbaa !11
  %407 = fcmp olt double %405, %406
  br i1 %407, label %408, label %412

408:                                              ; preds = %404
  store i32 1, ptr %62, align 4, !tbaa !9
  %409 = load double, ptr %48, align 8, !tbaa !11
  %410 = load double, ptr %51, align 8, !tbaa !11
  %411 = fdiv double %409, %410
  store double %411, ptr %55, align 8, !tbaa !11
  br label %421

412:                                              ; preds = %404, %395
  %413 = load double, ptr %51, align 8, !tbaa !11
  %414 = load double, ptr %49, align 8, !tbaa !11
  %415 = fcmp ogt double %413, %414
  br i1 %415, label %416, label %420

416:                                              ; preds = %412
  store i32 1, ptr %62, align 4, !tbaa !9
  %417 = load double, ptr %49, align 8, !tbaa !11
  %418 = load double, ptr %51, align 8, !tbaa !11
  %419 = fdiv double %417, %418
  store double %419, ptr %55, align 8, !tbaa !11
  br label %420

420:                                              ; preds = %416, %412
  br label %421

421:                                              ; preds = %420, %408
  %422 = load i32, ptr %62, align 4, !tbaa !9
  %423 = icmp eq i32 %422, 1
  br i1 %423, label %424, label %445

424:                                              ; preds = %421
  %425 = load ptr, ptr %23, align 8, !tbaa !5
  %426 = load ptr, ptr %24, align 8, !tbaa !5
  %427 = getelementptr inbounds double, ptr %426, i64 1
  call void @dscal_(ptr noundef %425, ptr noundef %55, ptr noundef %427, ptr noundef @c__1)
  %428 = load ptr, ptr %23, align 8, !tbaa !5
  %429 = load i32, ptr %428, align 4, !tbaa !9
  %430 = sub nsw i32 %429, 1
  store i32 %430, ptr %43, align 4, !tbaa !9
  %431 = load ptr, ptr %25, align 8, !tbaa !5
  %432 = getelementptr inbounds double, ptr %431, i64 1
  call void @dscal_(ptr noundef %43, ptr noundef %55, ptr noundef %432, ptr noundef @c__1)
  %433 = load i32, ptr %66, align 4, !tbaa !9
  %434 = icmp ne i32 %433, 0
  br i1 %434, label %435, label %444

435:                                              ; preds = %424
  %436 = load ptr, ptr %26, align 8, !tbaa !5
  %437 = load double, ptr %436, align 8, !tbaa !11
  %438 = load double, ptr %55, align 8, !tbaa !11
  %439 = fmul double %437, %438
  store double %439, ptr %77, align 8, !tbaa !11
  %440 = load ptr, ptr %27, align 8, !tbaa !5
  %441 = load double, ptr %440, align 8, !tbaa !11
  %442 = load double, ptr %55, align 8, !tbaa !11
  %443 = fmul double %441, %442
  store double %443, ptr %78, align 8, !tbaa !11
  br label %444

444:                                              ; preds = %435, %424
  br label %445

445:                                              ; preds = %444, %421
  store i32 1, ptr %64, align 4, !tbaa !9
  %446 = load i32, ptr %64, align 4, !tbaa !9
  %447 = load ptr, ptr %23, align 8, !tbaa !5
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = add nsw i32 %446, %448
  store i32 %449, ptr %69, align 4, !tbaa !9
  %450 = load i32, ptr %69, align 4, !tbaa !9
  %451 = load ptr, ptr %23, align 8, !tbaa !5
  %452 = load i32, ptr %451, align 4, !tbaa !9
  %453 = add nsw i32 %450, %452
  store i32 %453, ptr %65, align 4, !tbaa !9
  %454 = load i32, ptr %69, align 4, !tbaa !9
  %455 = load ptr, ptr %23, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = add nsw i32 %454, %456
  store i32 %457, ptr %70, align 4, !tbaa !9
  store i32 0, ptr %50, align 4, !tbaa !9
  %458 = load i32, ptr %61, align 4, !tbaa !9
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %460, label %472

460:                                              ; preds = %445
  %461 = load ptr, ptr %28, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = icmp eq i32 %462, 1
  br i1 %463, label %464, label %471

464:                                              ; preds = %460
  %465 = load ptr, ptr %29, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = load ptr, ptr %23, align 8, !tbaa !5
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = icmp eq i32 %466, %468
  br i1 %469, label %470, label %471

470:                                              ; preds = %464
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %471

471:                                              ; preds = %470, %464, %460
  br label %472

472:                                              ; preds = %471, %445
  %473 = load i32, ptr %60, align 4, !tbaa !9
  %474 = icmp ne i32 %473, 0
  br i1 %474, label %478, label %475

475:                                              ; preds = %472
  %476 = load i32, ptr %50, align 4, !tbaa !9
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %478, label %577

478:                                              ; preds = %475, %472
  %479 = load i32, ptr %63, align 4, !tbaa !9
  %480 = icmp eq i32 %479, 1
  br i1 %480, label %481, label %577

481:                                              ; preds = %478
  %482 = load ptr, ptr %23, align 8, !tbaa !5
  %483 = load i32, ptr %482, align 4, !tbaa !9
  %484 = sub nsw i32 %483, 1
  store i32 %484, ptr %43, align 4, !tbaa !9
  %485 = load ptr, ptr %25, align 8, !tbaa !5
  %486 = getelementptr inbounds double, ptr %485, i64 1
  %487 = load ptr, ptr %36, align 8, !tbaa !5
  %488 = getelementptr inbounds double, ptr %487, i64 1
  call void @dcopy_(ptr noundef %43, ptr noundef %486, ptr noundef @c__1, ptr noundef %488, ptr noundef @c__1)
  %489 = load i32, ptr %58, align 4, !tbaa !9
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %503, label %491

491:                                              ; preds = %481
  %492 = load ptr, ptr %23, align 8, !tbaa !5
  %493 = load ptr, ptr %24, align 8, !tbaa !5
  %494 = getelementptr inbounds double, ptr %493, i64 1
  %495 = load ptr, ptr %32, align 8, !tbaa !5
  %496 = getelementptr inbounds double, ptr %495, i64 1
  call void @dcopy_(ptr noundef %492, ptr noundef %494, ptr noundef @c__1, ptr noundef %496, ptr noundef @c__1)
  %497 = load ptr, ptr %23, align 8, !tbaa !5
  %498 = load ptr, ptr %32, align 8, !tbaa !5
  %499 = getelementptr inbounds double, ptr %498, i64 1
  %500 = load ptr, ptr %36, align 8, !tbaa !5
  %501 = getelementptr inbounds double, ptr %500, i64 1
  %502 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %497, ptr noundef %499, ptr noundef %501, ptr noundef %502)
  br label %567

503:                                              ; preds = %481
  %504 = load ptr, ptr %23, align 8, !tbaa !5
  %505 = load ptr, ptr %24, align 8, !tbaa !5
  %506 = getelementptr inbounds double, ptr %505, i64 1
  %507 = load ptr, ptr %36, align 8, !tbaa !5
  %508 = load ptr, ptr %23, align 8, !tbaa !5
  %509 = load i32, ptr %508, align 4, !tbaa !9
  %510 = add nsw i32 %509, 1
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds double, ptr %507, i64 %511
  call void @dcopy_(ptr noundef %504, ptr noundef %506, ptr noundef @c__1, ptr noundef %512, ptr noundef @c__1)
  %513 = load ptr, ptr %30, align 8, !tbaa !5
  %514 = load double, ptr %513, align 8, !tbaa !11
  %515 = load ptr, ptr %23, align 8, !tbaa !5
  %516 = load i32, ptr %515, align 4, !tbaa !9
  %517 = sitofp i32 %516 to double
  %518 = fmul double %517, 2.000000e+00
  %519 = load double, ptr %76, 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 i32 1, ptr %72, align 4, !tbaa !9
  br label %524

523:                                              ; preds = %503
  store i32 0, ptr %72, align 4, !tbaa !9
  br label %524

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

567:                                              ; preds = %524, %491
  %568 = load ptr, ptr %40, align 8, !tbaa !5
  %569 = load i32, ptr %568, align 4, !tbaa !9
  %570 = icmp eq i32 %569, 0
  br i1 %570, label %571, label %575

571:                                              ; preds = %567
  %572 = load ptr, ptr %23, align 8, !tbaa !5
  %573 = load i32, ptr %572, align 4, !tbaa !9
  %574 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 %573, ptr %574, align 4, !tbaa !9
  br label %649

575:                                              ; preds = %567
  %576 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %576, align 4, !tbaa !9
  br label %577

577:                                              ; preds = %575, %478, %475
  %578 = load i32, ptr %58, align 4, !tbaa !9
  %579 = icmp ne i32 %578, 0
  br i1 %579, label %580, label %582

580:                                              ; preds = %577
  %581 = getelementptr inbounds [1 x i8], ptr %56, i64 0, i64 0
  store i8 66, ptr %581, align 1, !tbaa !13
  br label %584

582:                                              ; preds = %577
  %583 = getelementptr inbounds [1 x i8], ptr %56, i64 0, i64 0
  store i8 69, ptr %583, align 1, !tbaa !13
  br label %584

584:                                              ; preds = %582, %580
  %585 = load ptr, ptr %22, align 8, !tbaa !5
  %586 = getelementptr inbounds [1 x i8], ptr %56, i64 0, i64 0
  %587 = load ptr, ptr %23, align 8, !tbaa !5
  %588 = load ptr, ptr %28, align 8, !tbaa !5
  %589 = load ptr, ptr %29, align 8, !tbaa !5
  %590 = load ptr, ptr %30, align 8, !tbaa !5
  %591 = load ptr, ptr %24, align 8, !tbaa !5
  %592 = getelementptr inbounds double, ptr %591, i64 1
  %593 = load ptr, ptr %25, align 8, !tbaa !5
  %594 = getelementptr inbounds double, ptr %593, i64 1
  %595 = load ptr, ptr %31, align 8, !tbaa !5
  %596 = load ptr, ptr %32, align 8, !tbaa !5
  %597 = getelementptr inbounds double, ptr %596, i64 1
  %598 = load ptr, ptr %38, align 8, !tbaa !5
  %599 = load i32, ptr %64, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds i32, ptr %598, i64 %600
  %602 = load ptr, ptr %38, align 8, !tbaa !5
  %603 = load i32, ptr %69, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds i32, ptr %602, i64 %604
  %606 = load ptr, ptr %36, align 8, !tbaa !5
  %607 = getelementptr inbounds double, ptr %606, i64 1
  %608 = load ptr, ptr %38, align 8, !tbaa !5
  %609 = load i32, ptr %70, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds i32, ptr %608, i64 %610
  %612 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %585, ptr noundef %586, ptr noundef %587, ptr noundef %77, ptr noundef %78, ptr noundef %588, ptr noundef %589, ptr noundef %590, ptr noundef %592, ptr noundef %594, ptr noundef %595, ptr noundef %73, ptr noundef %597, ptr noundef %601, ptr noundef %605, ptr noundef %607, ptr noundef %611, ptr noundef %612)
  %613 = load i32, ptr %58, align 4, !tbaa !9
  %614 = icmp ne i32 %613, 0
  br i1 %614, label %615, label %648

615:                                              ; preds = %584
  %616 = load ptr, ptr %23, align 8, !tbaa !5
  %617 = load ptr, ptr %24, align 8, !tbaa !5
  %618 = getelementptr inbounds double, ptr %617, i64 1
  %619 = load ptr, ptr %25, align 8, !tbaa !5
  %620 = getelementptr inbounds double, ptr %619, i64 1
  %621 = load ptr, ptr %31, align 8, !tbaa !5
  %622 = load ptr, ptr %32, align 8, !tbaa !5
  %623 = getelementptr inbounds double, ptr %622, i64 1
  %624 = load ptr, ptr %38, align 8, !tbaa !5
  %625 = load i32, ptr %64, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds i32, ptr %624, i64 %626
  %628 = load ptr, ptr %38, align 8, !tbaa !5
  %629 = load i32, ptr %69, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds i32, ptr %628, i64 %630
  %632 = load ptr, ptr %33, align 8, !tbaa !5
  %633 = load i32, ptr %42, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %632, i64 %634
  %636 = load ptr, ptr %34, align 8, !tbaa !5
  %637 = load ptr, ptr %36, align 8, !tbaa !5
  %638 = getelementptr inbounds double, ptr %637, i64 1
  %639 = load ptr, ptr %38, align 8, !tbaa !5
  %640 = load i32, ptr %70, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds i32, ptr %639, i64 %641
  %643 = load ptr, ptr %38, align 8, !tbaa !5
  %644 = load i32, ptr %65, align 4, !tbaa !9
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds i32, ptr %643, i64 %645
  %647 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dstein_(ptr noundef %616, ptr noundef %618, ptr noundef %620, ptr noundef %621, ptr noundef %623, ptr noundef %627, ptr noundef %631, ptr noundef %635, ptr noundef %636, ptr noundef %638, ptr noundef %642, ptr noundef %646, ptr noundef %647)
  br label %648

648:                                              ; preds = %615, %584
  br label %649

649:                                              ; preds = %648, %571
  %650 = load i32, ptr %62, align 4, !tbaa !9
  %651 = icmp eq i32 %650, 1
  br i1 %651, label %652, label %668

652:                                              ; preds = %649
  %653 = load ptr, ptr %40, align 8, !tbaa !5
  %654 = load i32, ptr %653, align 4, !tbaa !9
  %655 = icmp eq i32 %654, 0
  br i1 %655, label %656, label %659

656:                                              ; preds = %652
  %657 = load ptr, ptr %31, align 8, !tbaa !5
  %658 = load i32, ptr %657, align 4, !tbaa !9
  store i32 %658, ptr %47, align 4, !tbaa !9
  br label %663

659:                                              ; preds = %652
  %660 = load ptr, ptr %40, align 8, !tbaa !5
  %661 = load i32, ptr %660, align 4, !tbaa !9
  %662 = sub nsw i32 %661, 1
  store i32 %662, ptr %47, align 4, !tbaa !9
  br label %663

663:                                              ; preds = %659, %656
  %664 = load double, ptr %55, align 8, !tbaa !11
  %665 = fdiv double 1.000000e+00, %664
  store double %665, ptr %45, align 8, !tbaa !11
  %666 = load ptr, ptr %32, align 8, !tbaa !5
  %667 = getelementptr inbounds double, ptr %666, i64 1
  call void @dscal_(ptr noundef %47, ptr noundef %45, ptr noundef %667, ptr noundef @c__1)
  br label %668

668:                                              ; preds = %663, %649
  %669 = load i32, ptr %58, align 4, !tbaa !9
  %670 = icmp ne i32 %669, 0
  br i1 %670, label %671, label %769

671:                                              ; preds = %668
  %672 = load ptr, ptr %31, align 8, !tbaa !5
  %673 = load i32, ptr %672, align 4, !tbaa !9
  %674 = sub nsw i32 %673, 1
  store i32 %674, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %675

675:                                              ; preds = %765, %671
  %676 = load i32, ptr %54, align 4, !tbaa !9
  %677 = load i32, ptr %43, align 4, !tbaa !9
  %678 = icmp sle i32 %676, %677
  br i1 %678, label %679, label %768

679:                                              ; preds = %675
  store i32 0, ptr %53, align 4, !tbaa !9
  %680 = load ptr, ptr %32, align 8, !tbaa !5
  %681 = load i32, ptr %54, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds double, ptr %680, i64 %682
  %684 = load double, ptr %683, align 8, !tbaa !11
  store double %684, ptr %79, align 8, !tbaa !11
  %685 = load ptr, ptr %31, align 8, !tbaa !5
  %686 = load i32, ptr %685, align 4, !tbaa !9
  store i32 %686, ptr %44, align 4, !tbaa !9
  %687 = load i32, ptr %54, align 4, !tbaa !9
  %688 = add nsw i32 %687, 1
  store i32 %688, ptr %59, align 4, !tbaa !9
  br label %689

689:                                              ; preds = %709, %679
  %690 = load i32, ptr %59, align 4, !tbaa !9
  %691 = load i32, ptr %44, align 4, !tbaa !9
  %692 = icmp sle i32 %690, %691
  br i1 %692, label %693, label %712

693:                                              ; preds = %689
  %694 = load ptr, ptr %32, align 8, !tbaa !5
  %695 = load i32, ptr %59, align 4, !tbaa !9
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds double, ptr %694, i64 %696
  %698 = load double, ptr %697, align 8, !tbaa !11
  %699 = load double, ptr %79, align 8, !tbaa !11
  %700 = fcmp olt double %698, %699
  br i1 %700, label %701, label %708

701:                                              ; preds = %693
  %702 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %702, ptr %53, align 4, !tbaa !9
  %703 = load ptr, ptr %32, align 8, !tbaa !5
  %704 = load i32, ptr %59, align 4, !tbaa !9
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds double, ptr %703, i64 %705
  %707 = load double, ptr %706, align 8, !tbaa !11
  store double %707, ptr %79, align 8, !tbaa !11
  br label %708

708:                                              ; preds = %701, %693
  br label %709

709:                                              ; preds = %708
  %710 = load i32, ptr %59, align 4, !tbaa !9
  %711 = add nsw i32 %710, 1
  store i32 %711, ptr %59, align 4, !tbaa !9
  br label %689, !llvm.loop !14

712:                                              ; preds = %689
  %713 = load i32, ptr %53, align 4, !tbaa !9
  %714 = icmp ne i32 %713, 0
  br i1 %714, label %715, label %764

715:                                              ; preds = %712
  %716 = load ptr, ptr %38, align 8, !tbaa !5
  %717 = load i32, ptr %53, align 4, !tbaa !9
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds i32, ptr %716, i64 %718
  %720 = load i32, ptr %719, align 4, !tbaa !9
  store i32 %720, ptr %52, align 4, !tbaa !9
  %721 = load ptr, ptr %32, align 8, !tbaa !5
  %722 = load i32, ptr %54, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds double, ptr %721, i64 %723
  %725 = load double, ptr %724, align 8, !tbaa !11
  %726 = load ptr, ptr %32, align 8, !tbaa !5
  %727 = load i32, ptr %53, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds double, ptr %726, i64 %728
  store double %725, ptr %729, align 8, !tbaa !11
  %730 = load ptr, ptr %38, align 8, !tbaa !5
  %731 = load i32, ptr %54, align 4, !tbaa !9
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds i32, ptr %730, i64 %732
  %734 = load i32, ptr %733, align 4, !tbaa !9
  %735 = load ptr, ptr %38, align 8, !tbaa !5
  %736 = load i32, ptr %53, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds i32, ptr %735, i64 %737
  store i32 %734, ptr %738, align 4, !tbaa !9
  %739 = load double, ptr %79, align 8, !tbaa !11
  %740 = load ptr, ptr %32, align 8, !tbaa !5
  %741 = load i32, ptr %54, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds double, ptr %740, i64 %742
  store double %739, ptr %743, align 8, !tbaa !11
  %744 = load i32, ptr %52, align 4, !tbaa !9
  %745 = load ptr, ptr %38, align 8, !tbaa !5
  %746 = load i32, ptr %54, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds i32, ptr %745, i64 %747
  store i32 %744, ptr %748, align 4, !tbaa !9
  %749 = load ptr, ptr %23, align 8, !tbaa !5
  %750 = load ptr, ptr %33, align 8, !tbaa !5
  %751 = load i32, ptr %53, align 4, !tbaa !9
  %752 = load i32, ptr %41, align 4, !tbaa !9
  %753 = mul nsw i32 %751, %752
  %754 = add nsw i32 %753, 1
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds double, ptr %750, i64 %755
  %757 = load ptr, ptr %33, align 8, !tbaa !5
  %758 = load i32, ptr %54, align 4, !tbaa !9
  %759 = load i32, ptr %41, align 4, !tbaa !9
  %760 = mul nsw i32 %758, %759
  %761 = add nsw i32 %760, 1
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %757, i64 %762
  call void @dswap_(ptr noundef %749, ptr noundef %756, ptr noundef @c__1, ptr noundef %763, ptr noundef @c__1)
  br label %764

764:                                              ; preds = %715, %712
  br label %765

765:                                              ; preds = %764
  %766 = load i32, ptr %54, align 4, !tbaa !9
  %767 = add nsw i32 %766, 1
  store i32 %767, ptr %54, align 4, !tbaa !9
  br label %675, !llvm.loop !16

768:                                              ; preds = %675
  br label %769

769:                                              ; preds = %768, %668
  %770 = load i32, ptr %57, align 4, !tbaa !9
  %771 = sitofp i32 %770 to double
  %772 = load ptr, ptr %36, align 8, !tbaa !5
  %773 = getelementptr inbounds double, ptr %772, i64 1
  store double %771, ptr %773, align 8, !tbaa !11
  %774 = load i32, ptr %71, align 4, !tbaa !9
  %775 = load ptr, ptr %38, align 8, !tbaa !5
  %776 = getelementptr inbounds i32, ptr %775, i64 1
  store i32 %774, ptr %776, align 4, !tbaa !9
  store i32 1, ptr %80, align 4
  br label %777

777:                                              ; preds = %769, %362, %313, %306, %298
  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 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, 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 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!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 i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [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 void @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 i32, align 4
  %22 = alloca double, align 8
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  %25 = alloca [1 x i8], align 1
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 i32, ptr %13, align 4, !tbaa !5
  %narrow = xor i32 %31, -1
  %32 = sext i32 %narrow to i64
  %33 = getelementptr inbounds double, ptr %12, i64 %32
  %34 = getelementptr inbounds i8, ptr %15, i64 -8
  %35 = getelementptr inbounds i8, ptr %17, i64 -4
  %36 = tail call i32 @ilaenv_(ptr noundef nonnull @c__10, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull @c__3, ptr noundef nonnull @c__4, i32 noundef 6, i32 noundef 1) #5
  %37 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %38 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %39 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %40 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %41 = load i32, ptr %16, align 4, !tbaa !5
  %42 = icmp eq i32 %41, -1
  br i1 %42, label %46, label %43

43:                                               ; preds = %20
  %44 = load i32, ptr %18, align 4, !tbaa !5
  %45 = icmp eq i32 %44, -1
  br label %46

46:                                               ; preds = %43, %20
  %47 = phi i1 [ true, %20 ], [ %45, %43 ]
  %48 = load i32, ptr %2, align 4, !tbaa !5
  %49 = mul nsw i32 %48, 20
  %50 = icmp slt i32 %48, 1
  %51 = select i1 %50, i32 1, i32 %49
  store i32 1, ptr %21, align 4, !tbaa !5
  %52 = mul nsw i32 %48, 10
  %53 = select i1 %50, i32 1, i32 %52
  store i32 0, ptr %19, align 4, !tbaa !5
  %.not = icmp ne i32 %37, 0
  br i1 %.not, label %56, label %54

54:                                               ; preds = %46
  %55 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not298 = icmp eq i32 %55, 0
  br i1 %.not298, label %.thread320.sink.split, label %56

56:                                               ; preds = %54, %46
  %57 = icmp ne i32 %38, 0
  %58 = icmp ne i32 %39, 0
  %or.cond = select i1 %57, i1 true, i1 %58
  %59 = icmp ne i32 %40, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %59
  br i1 %or.cond3, label %60, label %.thread320.sink.split

60:                                               ; preds = %56
  %61 = load i32, ptr %2, align 4, !tbaa !5
  %62 = icmp slt i32 %61, 0
  br i1 %62, label %.thread320.sink.split, label %63

63:                                               ; preds = %60
  br i1 %58, label %64, label %69

64:                                               ; preds = %63
  %.not300 = icmp eq i32 %61, 0
  br i1 %.not300, label %78, label %65

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

69:                                               ; preds = %63
  br i1 %59, label %70, label %78

70:                                               ; preds = %69
  %71 = load i32, ptr %7, align 4, !tbaa !5
  %72 = icmp slt i32 %71, 1
  %spec.select = tail call i32 @llvm.umax.i32(i32 %61, i32 1)
  %73 = icmp ugt i32 %71, %spec.select
  %or.cond328 = or i1 %72, %73
  br i1 %or.cond328, label %.thread320.sink.split, label %74

74:                                               ; preds = %70
  %75 = load i32, ptr %8, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %61, i32 %71)
  %76 = icmp slt i32 %75, %.
  %77 = icmp ugt i32 %75, %61
  %or.cond327 = or i1 %76, %77
  br i1 %or.cond327, label %.thread320.sink.split, label %78

78:                                               ; preds = %74, %65, %64, %69
  %.pr = load i32, ptr %19, align 4, !tbaa !5
  %79 = icmp eq i32 %.pr, 0
  br i1 %79, label %80, label %.thread320

80:                                               ; preds = %78
  %81 = load i32, ptr %13, align 4, !tbaa !5
  %82 = icmp slt i32 %81, 1
  %83 = icmp ult i32 %81, %61
  %or.cond349 = and i1 %.not, %83
  %or.cond351 = or i1 %82, %or.cond349
  br i1 %or.cond351, label %.thread320.sink.split, label %.thread

.thread:                                          ; preds = %80
  %84 = sitofp i32 %51 to double
  store double %84, ptr %15, align 8, !tbaa !9
  store i32 %53, ptr %17, align 4, !tbaa !5
  %85 = load i32, ptr %16, align 4, !tbaa !5
  %86 = icmp sge i32 %85, %51
  %or.cond5 = select i1 %86, i1 true, i1 %47
  br i1 %or.cond5, label %87, label %.thread320.sink.split

87:                                               ; preds = %.thread
  %88 = load i32, ptr %18, align 4, !tbaa !5
  %89 = icmp sge i32 %88, %53
  %or.cond7 = select i1 %89, i1 true, i1 %47
  br i1 %or.cond7, label %.thread316, label %.thread320.sink.split

.thread316:                                       ; preds = %87
  %.pr318.pr = load i32, ptr %19, align 4, !tbaa !5
  %.not301 = icmp eq i32 %.pr318.pr, 0
  br i1 %.not301, label %93, label %.thread320

.thread320.sink.split:                            ; preds = %87, %.thread, %80, %74, %70, %65, %60, %56, %54
  %.sink = phi i32 [ -1, %54 ], [ -2, %56 ], [ -3, %60 ], [ -7, %65 ], [ -8, %70 ], [ -9, %74 ], [ -14, %80 ], [ -17, %.thread ], [ -19, %87 ]
  store i32 %.sink, ptr %19, align 4, !tbaa !5
  br label %.thread320

.thread320:                                       ; preds = %.thread320.sink.split, %78, %.thread316
  %90 = phi i32 [ %.pr318.pr, %.thread316 ], [ %.pr, %78 ], [ %.sink, %.thread320.sink.split ]
  %91 = sub nsw i32 0, %90
  store i32 %91, ptr %21, align 4, !tbaa !5
  %92 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %21, i32 noundef 6) #5
  br label %237

93:                                               ; preds = %.thread316
  br i1 %47, label %237, label %94

94:                                               ; preds = %93
  store i32 0, ptr %10, align 4, !tbaa !5
  %95 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %95, label %109 [
    i32 0, label %237
    i32 1, label %96
  ]

96:                                               ; preds = %94
  %or.cond9 = select i1 %57, i1 true, i1 %59
  br i1 %or.cond9, label %97, label %99

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

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

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

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

.sink.split:                                      ; preds = %97, %106
  %.sink350 = phi double [ %101, %106 ], [ %98, %97 ]
  store double %.sink350, ptr %11, align 8, !tbaa !9
  br label %107

107:                                              ; preds = %.sink.split, %99, %103
  br i1 %.not, label %108, label %237

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

109:                                              ; preds = %94
  %110 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #5
  %111 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #5
  %112 = fdiv double %110, %111
  %113 = fdiv double 1.000000e+00, %112
  %114 = tail call double @sqrt(double noundef %112) #5
  %115 = tail call double @sqrt(double noundef %113) #5
  store double %115, ptr %22, align 8, !tbaa !9
  %116 = tail call double @sqrt(double noundef %110) #5
  %117 = tail call double @sqrt(double noundef %116) #5
  %118 = fdiv double 1.000000e+00, %117
  %119 = fcmp ole double %115, %118
  %120 = select i1 %119, double %115, double %118
  %.not302 = icmp eq i32 %39, 0
  br i1 %.not302, label %124, label %121

121:                                              ; preds = %109
  %122 = load double, ptr %5, align 8, !tbaa !9
  store double %122, ptr %28, align 8, !tbaa !9
  %123 = load double, ptr %6, align 8, !tbaa !9
  store double %123, ptr %29, align 8, !tbaa !9
  br label %124

124:                                              ; preds = %121, %109
  %125 = tail call double @dlanst_(ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #5
  %126 = fcmp ogt double %125, 0.000000e+00
  %127 = fcmp olt double %125, %114
  %or.cond309 = select i1 %126, i1 %127, i1 false
  br i1 %or.cond309, label %130, label %128

128:                                              ; preds = %124
  %129 = fcmp ogt double %125, %120
  br i1 %129, label %130, label %139

130:                                              ; preds = %128, %124
  %.pn = phi double [ %114, %124 ], [ %120, %128 ]
  %storemerge = fdiv double %.pn, %125
  store double %storemerge, ptr %24, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %24, ptr noundef %3, ptr noundef nonnull @c__1) #5
  %131 = load i32, ptr %2, align 4, !tbaa !5
  %132 = add nsw i32 %131, -1
  store i32 %132, ptr %21, align 4, !tbaa !5
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %24, ptr noundef %4, ptr noundef nonnull @c__1) #5
  br i1 %.not302, label %139, label %133

133:                                              ; preds = %130
  %134 = load double, ptr %5, align 8, !tbaa !9
  %135 = load double, ptr %24, align 8, !tbaa !9
  %136 = fmul double %134, %135
  store double %136, ptr %28, align 8, !tbaa !9
  %137 = load double, ptr %6, align 8, !tbaa !9
  %138 = fmul double %135, %137
  store double %138, ptr %29, align 8, !tbaa !9
  br label %139

139:                                              ; preds = %128, %130, %133
  %140 = phi i1 [ true, %130 ], [ true, %133 ], [ false, %128 ]
  %141 = load i32, ptr %2, align 4, !tbaa !5
  %142 = add nsw i32 %141, 1
  %143 = add nsw i32 %142, %141
  %.not303 = icmp eq i32 %40, 0
  br i1 %.not303, label %150, label %144

144:                                              ; preds = %139
  %145 = load i32, ptr %7, align 4, !tbaa !5
  %146 = icmp eq i32 %145, 1
  br i1 %146, label %147, label %150

147:                                              ; preds = %144
  %148 = load i32, ptr %8, align 4, !tbaa !5
  %149 = icmp eq i32 %148, %141
  br label %150

150:                                              ; preds = %147, %144, %139
  %151 = phi i1 [ false, %144 ], [ false, %139 ], [ %149, %147 ]
  %or.cond11 = or i1 %57, %151
  %152 = icmp eq i32 %36, 1
  %or.cond13 = select i1 %or.cond11, i1 %152, i1 false
  br i1 %or.cond13, label %153, label %182

153:                                              ; preds = %150
  %154 = add nsw i32 %141, -1
  store i32 %154, ptr %21, align 4, !tbaa !5
  call void @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 %155

155:                                              ; preds = %153
  call void @dcopy_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #5
  call void @dsterf_(ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %15, ptr noundef nonnull %19) #5
  br label %176

156:                                              ; preds = %153
  %157 = load i32, ptr %2, align 4, !tbaa !5
  %158 = sext i32 %157 to i64
  %159 = getelementptr double, ptr %34, i64 %158
  %160 = getelementptr i8, ptr %159, i64 8
  call void @dcopy_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %160, ptr noundef nonnull @c__1) #5
  %161 = load double, ptr %9, align 8, !tbaa !9
  %162 = load i32, ptr %2, align 4, !tbaa !5
  %163 = sitofp i32 %162 to double
  %164 = fmul double %163, 2.000000e+00
  %165 = fmul double %111, %164
  %166 = fcmp ole double %161, %165
  %.311 = zext i1 %166 to i32
  store i32 %.311, ptr %26, align 4, !tbaa !5
  %167 = load i32, ptr %16, align 4, !tbaa !5
  %168 = shl i32 %162, 1
  %169 = sub nsw i32 %167, %168
  store i32 %169, ptr %21, align 4, !tbaa !5
  %170 = sext i32 %162 to i64
  %171 = getelementptr double, ptr %34, i64 %170
  %172 = getelementptr i8, ptr %171, i64 8
  %173 = or disjoint i32 %168, 1
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds double, ptr %34, i64 %174
  call void @dstemr_(ptr noundef %0, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef %172, ptr noundef nonnull %15, ptr noundef %5, ptr noundef %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 %26, ptr noundef nonnull %175, ptr noundef nonnull %21, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19) #5
  br label %176

176:                                              ; preds = %156, %155
  %177 = load i32, ptr %19, align 4, !tbaa !5
  %178 = icmp eq i32 %177, 0
  br i1 %178, label %179, label %181

179:                                              ; preds = %176
  %180 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %180, ptr %10, align 4, !tbaa !5
  br label %188

181:                                              ; preds = %176
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %182

182:                                              ; preds = %150, %181
  %.312 = select i1 %.not, i8 66, i8 69
  store i8 %.312, ptr %25, align 1, !tbaa !11
  %183 = sext i32 %142 to i64
  %184 = getelementptr inbounds i32, ptr %35, i64 %183
  %185 = sext i32 %143 to i64
  %186 = getelementptr inbounds i32, ptr %35, i64 %185
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %10, ptr noundef nonnull %27, ptr noundef %11, ptr noundef nonnull %17, ptr noundef nonnull %184, ptr noundef nonnull %15, ptr noundef nonnull %186, ptr noundef nonnull %19) #5
  br i1 %.not, label %187, label %188

187:                                              ; preds = %182
  call void @dstein_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %17, ptr noundef nonnull %184, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %186, ptr noundef nonnull %186, ptr noundef nonnull %19) #5
  br label %188

188:                                              ; preds = %182, %187, %179
  br i1 %140, label %189, label %199

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

192:                                              ; preds = %189
  %193 = load i32, ptr %10, align 4, !tbaa !5
  br label %196

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

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

199:                                              ; preds = %196, %188
  br i1 %.not, label %200, label %.loopexit

200:                                              ; preds = %199
  %201 = load i32, ptr %10, align 4, !tbaa !5
  %202 = add nsw i32 %201, -1
  store i32 %202, ptr %21, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %33, i64 8
  %.not306336 = icmp slt i32 %201, 2
  br i1 %.not306336, label %.loopexit, label %.lr.ph339.preheader

.lr.ph339.preheader:                              ; preds = %200
  %203 = sext i32 %31 to i64
  br label %.lr.ph339

.lr.ph339:                                        ; preds = %.lr.ph339.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph339.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %204 = phi i32 [ %202, %.lr.ph339.preheader ], [ %235, %._crit_edge.thread ]
  %indvars.iv343 = phi i64 [ 1, %.lr.ph339.preheader ], [ %indvars.iv.next344, %._crit_edge.thread ]
  %indvars.iv = phi i64 [ 2, %.lr.ph339.preheader ], [ %indvars.iv.next, %._crit_edge.thread ]
  %205 = getelementptr inbounds double, ptr %30, i64 %indvars.iv343
  %206 = load double, ptr %205, align 8, !tbaa !9
  %207 = load i32, ptr %10, align 4, !tbaa !5
  %indvars.iv.next344 = add nuw nsw i64 %indvars.iv343, 1
  %208 = sext i32 %207 to i64
  %.not307329.not = icmp slt i64 %indvars.iv343, %208
  br i1 %.not307329.not, label %.lr.ph.preheader, label %._crit_edge.thread

.lr.ph.preheader:                                 ; preds = %.lr.ph339
  %209 = xor i32 %indvar, -1
  %210 = add i32 %207, %209
  %reass.sub = sub i32 %207, %indvar
  %xtraiter = and i32 %210, 1
  %211 = icmp eq i32 %reass.sub, 2
  br i1 %211, label %._crit_edge.unr-lcssa, label %.lr.ph.preheader.new

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv340 = phi i64 [ %indvars.iv, %.lr.ph.preheader.new ], [ %indvars.iv.next341.1, %.lr.ph ]
  %.0332 = phi double [ %206, %.lr.ph.preheader.new ], [ %.1.1, %.lr.ph ]
  %.0280331 = phi i32 [ 0, %.lr.ph.preheader.new ], [ %.1281.1, %.lr.ph ]
  %niter = phi i32 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %212 = getelementptr inbounds double, ptr %30, i64 %indvars.iv340
  %213 = load double, ptr %212, align 8, !tbaa !9
  %214 = fcmp olt double %213, %.0332
  %215 = trunc nuw i64 %indvars.iv340 to i32
  %.1281 = select i1 %214, i32 %215, i32 %.0280331
  %.1 = select i1 %214, double %213, double %.0332
  %216 = getelementptr double, ptr %11, i64 %indvars.iv340
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = fcmp olt double %217, %.1
  %219 = trunc i64 %indvars.iv340 to i32
  %220 = add i32 %219, 1
  %.1281.1 = select i1 %218, i32 %220, i32 %.1281
  %.1.1 = select i1 %218, double %217, double %.1
  %indvars.iv.next341.1 = add nuw nsw i64 %indvars.iv340, 2
  %niter.next.1 = add i32 %niter, 2
  %niter.ncmp.1 = icmp eq i32 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph, %.lr.ph.preheader
  %.1281.lcssa.ph = phi i32 [ poison, %.lr.ph.preheader ], [ %.1281.1, %.lr.ph ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph.preheader ], [ %.1.1, %.lr.ph ]
  %indvars.iv340.unr = phi i64 [ %indvars.iv, %.lr.ph.preheader ], [ %indvars.iv.next341.1, %.lr.ph ]
  %.0332.unr = phi double [ %206, %.lr.ph.preheader ], [ %.1.1, %.lr.ph ]
  %.0280331.unr = phi i32 [ 0, %.lr.ph.preheader ], [ %.1281.1, %.lr.ph ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.unr-lcssa
  %221 = getelementptr inbounds double, ptr %30, i64 %indvars.iv340.unr
  %222 = load double, ptr %221, align 8, !tbaa !9
  %223 = fcmp olt double %222, %.0332.unr
  %224 = trunc nuw i64 %indvars.iv340.unr to i32
  %.1281.epil = select i1 %223, i32 %224, i32 %.0280331.unr
  %.1.epil = select i1 %223, double %222, double %.0332.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph.epil
  %.1281.lcssa = phi i32 [ %.1281.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1281.epil, %.lr.ph.epil ]
  %.1.lcssa = phi double [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph.epil ]
  %.not308 = icmp eq i32 %.1281.lcssa, 0
  br i1 %.not308, label %._crit_edge.thread, label %225

225:                                              ; preds = %._crit_edge
  %226 = sext i32 %.1281.lcssa to i64
  %227 = getelementptr inbounds i32, ptr %35, i64 %226
  %228 = load i32, ptr %227, align 4, !tbaa !5
  %229 = getelementptr inbounds double, ptr %30, i64 %226
  store double %206, ptr %229, align 8, !tbaa !9
  %230 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv343
  %231 = load i32, ptr %230, align 4, !tbaa !5
  store i32 %231, ptr %227, align 4, !tbaa !5
  store double %.1.lcssa, ptr %205, align 8, !tbaa !9
  store i32 %228, ptr %230, align 4, !tbaa !5
  %232 = mul nsw i32 %.1281.lcssa, %31
  %233 = sext i32 %232 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %233
  %234 = mul nsw i64 %indvars.iv343, %203
  %gep335 = getelementptr double, ptr %invariant.gep, i64 %234
  call void @dswap_(ptr noundef nonnull %2, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep335, ptr noundef nonnull @c__1) #5
  %.pre = load i32, ptr %21, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph339, %._crit_edge, %225
  %235 = phi i32 [ %204, %._crit_edge ], [ %.pre, %225 ], [ %204, %.lr.ph339 ]
  %236 = sext i32 %235 to i64
  %.not306.not = icmp slt i64 %indvars.iv343, %236
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not306.not, label %.lr.ph339, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge.thread, %200, %199
  store double %84, ptr %15, align 8, !tbaa !9
  store i32 %53, ptr %17, align 4, !tbaa !5
  br label %237

237:                                              ; preds = %107, %108, %94, %93, %.loopexit, %.thread320
  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 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!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,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass