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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @dstemr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20) #0 {
  %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 ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca i32, align 4
  %56 = alloca double, align 8
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca double, align 8
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca i32, align 4
  %73 = alloca double, align 8
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca double, align 8
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca double, align 8
  %97 = alloca i32, align 4
  %98 = alloca double, align 8
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca double, align 8
  %104 = alloca double, align 8
  %105 = 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
  store ptr %20, ptr %42, align 8, !tbaa !5
  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 4, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 8, 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 4, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.start.p0(i64 4, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #4
  %106 = load ptr, ptr %25, align 8, !tbaa !5
  %107 = getelementptr inbounds double, ptr %106, i32 -1
  store ptr %107, ptr %25, align 8, !tbaa !5
  %108 = load ptr, ptr %26, align 8, !tbaa !5
  %109 = getelementptr inbounds double, ptr %108, i32 -1
  store ptr %109, ptr %26, align 8, !tbaa !5
  %110 = load ptr, ptr %32, align 8, !tbaa !5
  %111 = getelementptr inbounds double, ptr %110, i32 -1
  store ptr %111, ptr %32, align 8, !tbaa !5
  %112 = load ptr, ptr %34, align 8, !tbaa !5
  %113 = load i32, ptr %112, align 4, !tbaa !9
  store i32 %113, ptr %43, align 4, !tbaa !9
  %114 = load i32, ptr %43, align 4, !tbaa !9
  %115 = mul nsw i32 %114, 1
  %116 = add nsw i32 1, %115
  store i32 %116, ptr %44, align 4, !tbaa !9
  %117 = load i32, ptr %44, align 4, !tbaa !9
  %118 = load ptr, ptr %33, align 8, !tbaa !5
  %119 = sext i32 %117 to i64
  %120 = sub i64 0, %119
  %121 = getelementptr inbounds double, ptr %118, i64 %120
  store ptr %121, ptr %33, align 8, !tbaa !5
  %122 = load ptr, ptr %36, align 8, !tbaa !5
  %123 = getelementptr inbounds i32, ptr %122, i32 -1
  store ptr %123, ptr %36, align 8, !tbaa !5
  %124 = load ptr, ptr %38, align 8, !tbaa !5
  %125 = getelementptr inbounds double, ptr %124, i32 -1
  store ptr %125, ptr %38, align 8, !tbaa !5
  %126 = load ptr, ptr %40, align 8, !tbaa !5
  %127 = getelementptr inbounds i32, ptr %126, i32 -1
  store ptr %127, ptr %40, align 8, !tbaa !5
  %128 = load ptr, ptr %22, align 8, !tbaa !5
  %129 = call i32 @lsame_(ptr noundef %128, ptr noundef @.str)
  store i32 %129, ptr %69, align 4, !tbaa !9
  %130 = load ptr, ptr %23, align 8, !tbaa !5
  %131 = call i32 @lsame_(ptr noundef %130, ptr noundef @.str.1)
  store i32 %131, ptr %75, align 4, !tbaa !9
  %132 = load ptr, ptr %23, align 8, !tbaa !5
  %133 = call i32 @lsame_(ptr noundef %132, ptr noundef @.str)
  store i32 %133, ptr %81, align 4, !tbaa !9
  %134 = load ptr, ptr %23, align 8, !tbaa !5
  %135 = call i32 @lsame_(ptr noundef %134, ptr noundef @.str.2)
  store i32 %135, ptr %76, align 4, !tbaa !9
  %136 = load ptr, ptr %39, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = icmp eq i32 %137, -1
  br i1 %138, label %143, label %139

139:                                              ; preds = %21
  %140 = load ptr, ptr %41, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = icmp eq i32 %141, -1
  br label %143

143:                                              ; preds = %139, %21
  %144 = phi i1 [ true, %21 ], [ %142, %139 ]
  %145 = zext i1 %144 to i32
  store i32 %145, ptr %99, align 4, !tbaa !9
  %146 = load ptr, ptr %35, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = icmp eq i32 %147, -1
  %149 = zext i1 %148 to i32
  store i32 %149, ptr %100, align 4, !tbaa !9
  %150 = load i32, ptr %69, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %159

152:                                              ; preds = %143
  %153 = load ptr, ptr %24, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = mul nsw i32 %154, 18
  store i32 %155, ptr %68, align 4, !tbaa !9
  %156 = load ptr, ptr %24, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = mul nsw i32 %157, 10
  store i32 %158, ptr %94, align 4, !tbaa !9
  br label %166

159:                                              ; preds = %143
  %160 = load ptr, ptr %24, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = mul nsw i32 %161, 12
  store i32 %162, ptr %68, align 4, !tbaa !9
  %163 = load ptr, ptr %24, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = shl i32 %164, 3
  store i32 %165, ptr %94, align 4, !tbaa !9
  br label %166

166:                                              ; preds = %159, %152
  store double 0.000000e+00, ptr %80, align 8, !tbaa !11
  store double 0.000000e+00, ptr %84, align 8, !tbaa !11
  store i32 0, ptr %101, align 4, !tbaa !9
  store i32 0, ptr %102, align 4, !tbaa !9
  store i32 0, ptr %97, align 4, !tbaa !9
  %167 = load i32, ptr %81, align 4, !tbaa !9
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %169, label %174

169:                                              ; preds = %166
  %170 = load ptr, ptr %27, align 8, !tbaa !5
  %171 = load double, ptr %170, align 8, !tbaa !11
  store double %171, ptr %80, align 8, !tbaa !11
  %172 = load ptr, ptr %28, align 8, !tbaa !5
  %173 = load double, ptr %172, align 8, !tbaa !11
  store double %173, ptr %84, align 8, !tbaa !11
  br label %183

174:                                              ; preds = %166
  %175 = load i32, ptr %76, align 4, !tbaa !9
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %182

177:                                              ; preds = %174
  %178 = load ptr, ptr %29, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  store i32 %179, ptr %101, align 4, !tbaa !9
  %180 = load ptr, ptr %30, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  store i32 %181, ptr %102, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %177, %174
  br label %183

183:                                              ; preds = %182, %169
  %184 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %184, align 4, !tbaa !9
  %185 = load i32, ptr %69, align 4, !tbaa !9
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %193, label %187

187:                                              ; preds = %183
  %188 = load ptr, ptr %22, align 8, !tbaa !5
  %189 = call i32 @lsame_(ptr noundef %188, ptr noundef @.str.3)
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %193, label %191

191:                                              ; preds = %187
  %192 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %192, align 4, !tbaa !9
  br label %293

193:                                              ; preds = %187, %183
  %194 = load i32, ptr %75, align 4, !tbaa !9
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %204, label %196

196:                                              ; preds = %193
  %197 = load i32, ptr %81, align 4, !tbaa !9
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %204, label %199

199:                                              ; preds = %196
  %200 = load i32, ptr %76, align 4, !tbaa !9
  %201 = icmp ne i32 %200, 0
  br i1 %201, label %204, label %202

202:                                              ; preds = %199
  %203 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %203, align 4, !tbaa !9
  br label %292

204:                                              ; preds = %199, %196, %193
  %205 = load ptr, ptr %24, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = icmp slt i32 %206, 0
  br i1 %207, label %208, label %210

208:                                              ; preds = %204
  %209 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %209, align 4, !tbaa !9
  br label %291

210:                                              ; preds = %204
  %211 = load i32, ptr %81, align 4, !tbaa !9
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %213, label %223

213:                                              ; preds = %210
  %214 = load ptr, ptr %24, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = icmp sgt i32 %215, 0
  br i1 %216, label %217, label %223

217:                                              ; preds = %213
  %218 = load double, ptr %84, align 8, !tbaa !11
  %219 = load double, ptr %80, align 8, !tbaa !11
  %220 = fcmp ole double %218, %219
  br i1 %220, label %221, label %223

221:                                              ; preds = %217
  %222 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -7, ptr %222, align 4, !tbaa !9
  br label %290

223:                                              ; preds = %217, %213, %210
  %224 = load i32, ptr %76, align 4, !tbaa !9
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %236

226:                                              ; preds = %223
  %227 = load i32, ptr %101, align 4, !tbaa !9
  %228 = icmp slt i32 %227, 1
  br i1 %228, label %234, label %229

229:                                              ; preds = %226
  %230 = load i32, ptr %101, align 4, !tbaa !9
  %231 = load ptr, ptr %24, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = icmp sgt i32 %230, %232
  br i1 %233, label %234, label %236

234:                                              ; preds = %229, %226
  %235 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -8, ptr %235, align 4, !tbaa !9
  br label %289

236:                                              ; preds = %229, %223
  %237 = load i32, ptr %76, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %239, label %250

239:                                              ; preds = %236
  %240 = load i32, ptr %102, align 4, !tbaa !9
  %241 = load i32, ptr %101, align 4, !tbaa !9
  %242 = icmp slt i32 %240, %241
  br i1 %242, label %248, label %243

243:                                              ; preds = %239
  %244 = load i32, ptr %102, align 4, !tbaa !9
  %245 = load ptr, ptr %24, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = icmp sgt i32 %244, %246
  br i1 %247, label %248, label %250

248:                                              ; preds = %243, %239
  %249 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %249, align 4, !tbaa !9
  br label %288

250:                                              ; preds = %243, %236
  %251 = load ptr, ptr %34, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = icmp slt i32 %252, 1
  br i1 %253, label %263, label %254

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

257:                                              ; preds = %254
  %258 = load ptr, ptr %34, align 8, !tbaa !5
  %259 = load i32, ptr %258, align 4, !tbaa !9
  %260 = load ptr, ptr %24, align 8, !tbaa !5
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = icmp slt i32 %259, %261
  br i1 %262, label %263, label %265

263:                                              ; preds = %257, %250
  %264 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -13, ptr %264, align 4, !tbaa !9
  br label %287

265:                                              ; preds = %257, %254
  %266 = load ptr, ptr %39, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = load i32, ptr %68, align 4, !tbaa !9
  %269 = icmp slt i32 %267, %268
  br i1 %269, label %270, label %275

270:                                              ; preds = %265
  %271 = load i32, ptr %99, align 4, !tbaa !9
  %272 = icmp ne i32 %271, 0
  br i1 %272, label %275, label %273

273:                                              ; preds = %270
  %274 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -17, ptr %274, align 4, !tbaa !9
  br label %286

275:                                              ; preds = %270, %265
  %276 = load ptr, ptr %41, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = load i32, ptr %94, align 4, !tbaa !9
  %279 = icmp slt i32 %277, %278
  br i1 %279, label %280, label %285

280:                                              ; preds = %275
  %281 = load i32, ptr %99, align 4, !tbaa !9
  %282 = icmp ne i32 %281, 0
  br i1 %282, label %285, label %283

283:                                              ; preds = %280
  %284 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -19, ptr %284, align 4, !tbaa !9
  br label %285

285:                                              ; preds = %283, %280, %275
  br label %286

286:                                              ; preds = %285, %273
  br label %287

287:                                              ; preds = %286, %263
  br label %288

288:                                              ; preds = %287, %248
  br label %289

289:                                              ; preds = %288, %234
  br label %290

290:                                              ; preds = %289, %221
  br label %291

291:                                              ; preds = %290, %208
  br label %292

292:                                              ; preds = %291, %202
  br label %293

293:                                              ; preds = %292, %191
  %294 = call double @dlamch_(ptr noundef @.str.4)
  store double %294, ptr %83, align 8, !tbaa !11
  %295 = call double @dlamch_(ptr noundef @.str.5)
  store double %295, ptr %103, align 8, !tbaa !11
  %296 = load double, ptr %83, align 8, !tbaa !11
  %297 = load double, ptr %103, align 8, !tbaa !11
  %298 = fdiv double %296, %297
  store double %298, ptr %98, align 8, !tbaa !11
  %299 = load double, ptr %98, align 8, !tbaa !11
  %300 = fdiv double 1.000000e+00, %299
  store double %300, ptr %85, align 8, !tbaa !11
  %301 = load double, ptr %98, align 8, !tbaa !11
  %302 = call double @sqrt(double noundef %301) #4
  store double %302, ptr %53, align 8, !tbaa !11
  %303 = load double, ptr %85, align 8, !tbaa !11
  %304 = call double @sqrt(double noundef %303) #4
  store double %304, ptr %47, align 8, !tbaa !11
  %305 = load double, ptr %83, align 8, !tbaa !11
  %306 = call double @sqrt(double noundef %305) #4
  %307 = call double @sqrt(double noundef %306) #4
  %308 = fdiv double 1.000000e+00, %307
  store double %308, ptr %48, align 8, !tbaa !11
  %309 = load double, ptr %47, align 8, !tbaa !11
  %310 = load double, ptr %48, align 8, !tbaa !11
  %311 = fcmp ole double %309, %310
  br i1 %311, label %312, label %314

312:                                              ; preds = %293
  %313 = load double, ptr %47, align 8, !tbaa !11
  br label %316

314:                                              ; preds = %293
  %315 = load double, ptr %48, align 8, !tbaa !11
  br label %316

316:                                              ; preds = %314, %312
  %317 = phi double [ %313, %312 ], [ %315, %314 ]
  store double %317, ptr %54, align 8, !tbaa !11
  %318 = load ptr, ptr %42, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = icmp eq i32 %319, 0
  br i1 %320, label %321, label %393

321:                                              ; preds = %316
  %322 = load i32, ptr %68, align 4, !tbaa !9
  %323 = sitofp i32 %322 to double
  %324 = load ptr, ptr %38, align 8, !tbaa !5
  %325 = getelementptr inbounds double, ptr %324, i64 1
  store double %323, ptr %325, align 8, !tbaa !11
  %326 = load i32, ptr %94, align 4, !tbaa !9
  %327 = load ptr, ptr %40, align 8, !tbaa !5
  %328 = getelementptr inbounds i32, ptr %327, i64 1
  store i32 %326, ptr %328, align 4, !tbaa !9
  %329 = load i32, ptr %69, align 4, !tbaa !9
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %331, label %337

331:                                              ; preds = %321
  %332 = load i32, ptr %75, align 4, !tbaa !9
  %333 = icmp ne i32 %332, 0
  br i1 %333, label %334, label %337

334:                                              ; preds = %331
  %335 = load ptr, ptr %24, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  store i32 %336, ptr %95, align 4, !tbaa !9
  br label %366

337:                                              ; preds = %331, %321
  %338 = load i32, ptr %69, align 4, !tbaa !9
  %339 = icmp ne i32 %338, 0
  br i1 %339, label %340, label %352

340:                                              ; preds = %337
  %341 = load i32, ptr %81, align 4, !tbaa !9
  %342 = icmp ne i32 %341, 0
  br i1 %342, label %343, label %352

343:                                              ; preds = %340
  %344 = load ptr, ptr %24, align 8, !tbaa !5
  %345 = load ptr, ptr %27, align 8, !tbaa !5
  %346 = load ptr, ptr %28, align 8, !tbaa !5
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = getelementptr inbounds double, ptr %347, i64 1
  %349 = load ptr, ptr %26, align 8, !tbaa !5
  %350 = getelementptr inbounds double, ptr %349, i64 1
  %351 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dlarrc_(ptr noundef @.str.6, ptr noundef %344, ptr noundef %345, ptr noundef %346, ptr noundef %348, ptr noundef %350, ptr noundef %83, ptr noundef %95, ptr noundef %55, ptr noundef %58, ptr noundef %351)
  br label %365

352:                                              ; preds = %340, %337
  %353 = load i32, ptr %69, align 4, !tbaa !9
  %354 = icmp ne i32 %353, 0
  br i1 %354, label %355, label %363

355:                                              ; preds = %352
  %356 = load i32, ptr %76, align 4, !tbaa !9
  %357 = icmp ne i32 %356, 0
  br i1 %357, label %358, label %363

358:                                              ; preds = %355
  %359 = load i32, ptr %102, align 4, !tbaa !9
  %360 = load i32, ptr %101, align 4, !tbaa !9
  %361 = sub nsw i32 %359, %360
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr %95, align 4, !tbaa !9
  br label %364

363:                                              ; preds = %355, %352
  store i32 0, ptr %95, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %363, %358
  br label %365

365:                                              ; preds = %364, %343
  br label %366

366:                                              ; preds = %365, %334
  %367 = load i32, ptr %100, align 4, !tbaa !9
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %369, label %381

369:                                              ; preds = %366
  %370 = load ptr, ptr %42, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = icmp eq i32 %371, 0
  br i1 %372, label %373, label %381

373:                                              ; preds = %369
  %374 = load i32, ptr %95, align 4, !tbaa !9
  %375 = sitofp i32 %374 to double
  %376 = load ptr, ptr %33, align 8, !tbaa !5
  %377 = load i32, ptr %43, align 4, !tbaa !9
  %378 = add nsw i32 %377, 1
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds double, ptr %376, i64 %379
  store double %375, ptr %380, align 8, !tbaa !11
  br label %392

381:                                              ; preds = %369, %366
  %382 = load ptr, ptr %35, align 8, !tbaa !5
  %383 = load i32, ptr %382, align 4, !tbaa !9
  %384 = load i32, ptr %95, align 4, !tbaa !9
  %385 = icmp slt i32 %383, %384
  br i1 %385, label %386, label %391

386:                                              ; preds = %381
  %387 = load i32, ptr %100, align 4, !tbaa !9
  %388 = icmp ne i32 %387, 0
  br i1 %388, label %391, label %389

389:                                              ; preds = %386
  %390 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -14, ptr %390, align 4, !tbaa !9
  br label %391

391:                                              ; preds = %389, %386, %381
  br label %392

392:                                              ; preds = %391, %373
  br label %393

393:                                              ; preds = %392, %316
  %394 = load ptr, ptr %42, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = icmp ne i32 %395, 0
  br i1 %396, label %397, label %402

397:                                              ; preds = %393
  %398 = load ptr, ptr %42, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = sub nsw i32 0, %399
  store i32 %400, ptr %45, align 4, !tbaa !9
  %401 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %45, i32 noundef 6)
  store i32 1, ptr %105, align 4
  br label %1339

402:                                              ; preds = %393
  %403 = load i32, ptr %99, align 4, !tbaa !9
  %404 = icmp ne i32 %403, 0
  br i1 %404, label %408, label %405

405:                                              ; preds = %402
  %406 = load i32, ptr %100, align 4, !tbaa !9
  %407 = icmp ne i32 %406, 0
  br i1 %407, label %408, label %409

408:                                              ; preds = %405, %402
  store i32 1, ptr %105, align 4
  br label %1339

409:                                              ; preds = %405
  br label %410

410:                                              ; preds = %409
  %411 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %411, align 4, !tbaa !9
  %412 = load ptr, ptr %24, align 8, !tbaa !5
  %413 = load i32, ptr %412, align 4, !tbaa !9
  %414 = icmp eq i32 %413, 0
  br i1 %414, label %415, label %416

415:                                              ; preds = %410
  store i32 1, ptr %105, align 4
  br label %1339

416:                                              ; preds = %410
  %417 = load ptr, ptr %24, align 8, !tbaa !5
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = icmp eq i32 %418, 1
  br i1 %419, label %420, label %470

420:                                              ; preds = %416
  %421 = load i32, ptr %75, align 4, !tbaa !9
  %422 = icmp ne i32 %421, 0
  br i1 %422, label %426, label %423

423:                                              ; preds = %420
  %424 = load i32, ptr %76, align 4, !tbaa !9
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %426, label %433

426:                                              ; preds = %423, %420
  %427 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 1, ptr %427, align 4, !tbaa !9
  %428 = load ptr, ptr %25, align 8, !tbaa !5
  %429 = getelementptr inbounds double, ptr %428, i64 1
  %430 = load double, ptr %429, align 8, !tbaa !11
  %431 = load ptr, ptr %32, align 8, !tbaa !5
  %432 = getelementptr inbounds double, ptr %431, i64 1
  store double %430, ptr %432, align 8, !tbaa !11
  br label %453

433:                                              ; preds = %423
  %434 = load double, ptr %80, align 8, !tbaa !11
  %435 = load ptr, ptr %25, align 8, !tbaa !5
  %436 = getelementptr inbounds double, ptr %435, i64 1
  %437 = load double, ptr %436, align 8, !tbaa !11
  %438 = fcmp olt double %434, %437
  br i1 %438, label %439, label %452

439:                                              ; preds = %433
  %440 = load double, ptr %84, align 8, !tbaa !11
  %441 = load ptr, ptr %25, align 8, !tbaa !5
  %442 = getelementptr inbounds double, ptr %441, i64 1
  %443 = load double, ptr %442, align 8, !tbaa !11
  %444 = fcmp oge double %440, %443
  br i1 %444, label %445, label %452

445:                                              ; preds = %439
  %446 = load ptr, ptr %31, align 8, !tbaa !5
  store i32 1, ptr %446, align 4, !tbaa !9
  %447 = load ptr, ptr %25, align 8, !tbaa !5
  %448 = getelementptr inbounds double, ptr %447, i64 1
  %449 = load double, ptr %448, align 8, !tbaa !11
  %450 = load ptr, ptr %32, align 8, !tbaa !5
  %451 = getelementptr inbounds double, ptr %450, i64 1
  store double %449, ptr %451, align 8, !tbaa !11
  br label %452

452:                                              ; preds = %445, %439, %433
  br label %453

453:                                              ; preds = %452, %426
  %454 = load i32, ptr %69, align 4, !tbaa !9
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %469

456:                                              ; preds = %453
  %457 = load i32, ptr %100, align 4, !tbaa !9
  %458 = icmp ne i32 %457, 0
  br i1 %458, label %469, label %459

459:                                              ; preds = %456
  %460 = load ptr, ptr %33, align 8, !tbaa !5
  %461 = load i32, ptr %43, align 4, !tbaa !9
  %462 = add nsw i32 %461, 1
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds double, ptr %460, i64 %463
  store double 1.000000e+00, ptr %464, align 8, !tbaa !11
  %465 = load ptr, ptr %36, align 8, !tbaa !5
  %466 = getelementptr inbounds i32, ptr %465, i64 1
  store i32 1, ptr %466, align 4, !tbaa !9
  %467 = load ptr, ptr %36, align 8, !tbaa !5
  %468 = getelementptr inbounds i32, ptr %467, i64 2
  store i32 1, ptr %468, align 4, !tbaa !9
  br label %469

469:                                              ; preds = %459, %456, %453
  store i32 1, ptr %105, align 4
  br label %1339

470:                                              ; preds = %416
  %471 = load ptr, ptr %24, align 8, !tbaa !5
  %472 = load i32, ptr %471, align 4, !tbaa !9
  %473 = icmp eq i32 %472, 2
  br i1 %473, label %474, label %708

474:                                              ; preds = %470
  %475 = load i32, ptr %69, align 4, !tbaa !9
  %476 = icmp ne i32 %475, 0
  br i1 %476, label %484, label %477

477:                                              ; preds = %474
  %478 = load ptr, ptr %25, align 8, !tbaa !5
  %479 = getelementptr inbounds double, ptr %478, i64 1
  %480 = load ptr, ptr %26, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 1
  %482 = load ptr, ptr %25, align 8, !tbaa !5
  %483 = getelementptr inbounds double, ptr %482, i64 2
  call void @dlae2_(ptr noundef %479, ptr noundef %481, ptr noundef %483, ptr noundef %70, ptr noundef %71)
  br label %498

484:                                              ; preds = %474
  %485 = load i32, ptr %69, align 4, !tbaa !9
  %486 = icmp ne i32 %485, 0
  br i1 %486, label %487, label %497

487:                                              ; preds = %484
  %488 = load i32, ptr %100, align 4, !tbaa !9
  %489 = icmp ne i32 %488, 0
  br i1 %489, label %497, label %490

490:                                              ; preds = %487
  %491 = load ptr, ptr %25, align 8, !tbaa !5
  %492 = getelementptr inbounds double, ptr %491, i64 1
  %493 = load ptr, ptr %26, align 8, !tbaa !5
  %494 = getelementptr inbounds double, ptr %493, i64 1
  %495 = load ptr, ptr %25, align 8, !tbaa !5
  %496 = getelementptr inbounds double, ptr %495, i64 2
  call void @dlaev2_(ptr noundef %492, ptr noundef %494, ptr noundef %496, ptr noundef %70, ptr noundef %71, ptr noundef %73, ptr noundef %79)
  br label %497

497:                                              ; preds = %490, %487, %484
  br label %498

498:                                              ; preds = %497, %477
  %499 = load i32, ptr %75, align 4, !tbaa !9
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %518, label %501

501:                                              ; preds = %498
  %502 = load i32, ptr %81, align 4, !tbaa !9
  %503 = icmp ne i32 %502, 0
  br i1 %503, label %504, label %512

504:                                              ; preds = %501
  %505 = load double, ptr %71, align 8, !tbaa !11
  %506 = load double, ptr %80, align 8, !tbaa !11
  %507 = fcmp ogt double %505, %506
  br i1 %507, label %508, label %512

508:                                              ; preds = %504
  %509 = load double, ptr %71, align 8, !tbaa !11
  %510 = load double, ptr %84, align 8, !tbaa !11
  %511 = fcmp ole double %509, %510
  br i1 %511, label %518, label %512

512:                                              ; preds = %508, %504, %501
  %513 = load i32, ptr %76, align 4, !tbaa !9
  %514 = icmp ne i32 %513, 0
  br i1 %514, label %515, label %603

515:                                              ; preds = %512
  %516 = load i32, ptr %101, align 4, !tbaa !9
  %517 = icmp eq i32 %516, 1
  br i1 %517, label %518, label %603

518:                                              ; preds = %515, %508, %498
  %519 = load ptr, ptr %31, align 8, !tbaa !5
  %520 = load i32, ptr %519, align 4, !tbaa !9
  %521 = add nsw i32 %520, 1
  store i32 %521, ptr %519, align 4, !tbaa !9
  %522 = load double, ptr %71, align 8, !tbaa !11
  %523 = load ptr, ptr %32, align 8, !tbaa !5
  %524 = load ptr, ptr %31, align 8, !tbaa !5
  %525 = load i32, ptr %524, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %523, i64 %526
  store double %522, ptr %527, align 8, !tbaa !11
  %528 = load i32, ptr %69, align 4, !tbaa !9
  %529 = icmp ne i32 %528, 0
  br i1 %529, label %530, label %602

530:                                              ; preds = %518
  %531 = load i32, ptr %100, align 4, !tbaa !9
  %532 = icmp ne i32 %531, 0
  br i1 %532, label %602, label %533

533:                                              ; preds = %530
  %534 = load double, ptr %79, align 8, !tbaa !11
  %535 = fneg double %534
  %536 = load ptr, ptr %33, align 8, !tbaa !5
  %537 = load ptr, ptr %31, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = load i32, ptr %43, align 4, !tbaa !9
  %540 = mul nsw i32 %538, %539
  %541 = add nsw i32 %540, 1
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds double, ptr %536, i64 %542
  store double %535, ptr %543, align 8, !tbaa !11
  %544 = load double, ptr %73, align 8, !tbaa !11
  %545 = load ptr, ptr %33, align 8, !tbaa !5
  %546 = load ptr, ptr %31, align 8, !tbaa !5
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = load i32, ptr %43, align 4, !tbaa !9
  %549 = mul nsw i32 %547, %548
  %550 = add nsw i32 %549, 2
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %545, i64 %551
  store double %544, ptr %552, align 8, !tbaa !11
  %553 = load double, ptr %79, align 8, !tbaa !11
  %554 = fcmp une double %553, 0.000000e+00
  br i1 %554, label %555, label %587

555:                                              ; preds = %533
  %556 = load double, ptr %73, align 8, !tbaa !11
  %557 = fcmp une double %556, 0.000000e+00
  br i1 %557, label %558, label %572

558:                                              ; preds = %555
  %559 = load ptr, ptr %36, align 8, !tbaa !5
  %560 = load ptr, ptr %31, align 8, !tbaa !5
  %561 = load i32, ptr %560, align 4, !tbaa !9
  %562 = shl i32 %561, 1
  %563 = sub nsw i32 %562, 1
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds i32, ptr %559, i64 %564
  store i32 1, ptr %565, align 4, !tbaa !9
  %566 = load ptr, ptr %36, align 8, !tbaa !5
  %567 = load ptr, ptr %31, align 8, !tbaa !5
  %568 = load i32, ptr %567, align 4, !tbaa !9
  %569 = mul nsw i32 %568, 2
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds i32, ptr %566, i64 %570
  store i32 2, ptr %571, align 4, !tbaa !9
  br label %586

572:                                              ; preds = %555
  %573 = load ptr, ptr %36, align 8, !tbaa !5
  %574 = load ptr, ptr %31, align 8, !tbaa !5
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = shl i32 %575, 1
  %577 = sub nsw i32 %576, 1
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds i32, ptr %573, i64 %578
  store i32 1, ptr %579, align 4, !tbaa !9
  %580 = load ptr, ptr %36, align 8, !tbaa !5
  %581 = load ptr, ptr %31, align 8, !tbaa !5
  %582 = load i32, ptr %581, align 4, !tbaa !9
  %583 = mul nsw i32 %582, 2
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds i32, ptr %580, i64 %584
  store i32 1, ptr %585, align 4, !tbaa !9
  br label %586

586:                                              ; preds = %572, %558
  br label %601

587:                                              ; preds = %533
  %588 = load ptr, ptr %36, align 8, !tbaa !5
  %589 = load ptr, ptr %31, align 8, !tbaa !5
  %590 = load i32, ptr %589, align 4, !tbaa !9
  %591 = shl i32 %590, 1
  %592 = sub nsw i32 %591, 1
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds i32, ptr %588, i64 %593
  store i32 2, ptr %594, align 4, !tbaa !9
  %595 = load ptr, ptr %36, align 8, !tbaa !5
  %596 = load ptr, ptr %31, align 8, !tbaa !5
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = mul nsw i32 %597, 2
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds i32, ptr %595, i64 %599
  store i32 2, ptr %600, align 4, !tbaa !9
  br label %601

601:                                              ; preds = %587, %586
  br label %602

602:                                              ; preds = %601, %530, %518
  br label %603

603:                                              ; preds = %602, %515, %512
  %604 = load i32, ptr %75, align 4, !tbaa !9
  %605 = icmp ne i32 %604, 0
  br i1 %605, label %623, label %606

606:                                              ; preds = %603
  %607 = load i32, ptr %81, align 4, !tbaa !9
  %608 = icmp ne i32 %607, 0
  br i1 %608, label %609, label %617

609:                                              ; preds = %606
  %610 = load double, ptr %70, align 8, !tbaa !11
  %611 = load double, ptr %80, align 8, !tbaa !11
  %612 = fcmp ogt double %610, %611
  br i1 %612, label %613, label %617

613:                                              ; preds = %609
  %614 = load double, ptr %70, align 8, !tbaa !11
  %615 = load double, ptr %84, align 8, !tbaa !11
  %616 = fcmp ole double %614, %615
  br i1 %616, label %623, label %617

617:                                              ; preds = %613, %609, %606
  %618 = load i32, ptr %76, align 4, !tbaa !9
  %619 = icmp ne i32 %618, 0
  br i1 %619, label %620, label %707

620:                                              ; preds = %617
  %621 = load i32, ptr %102, align 4, !tbaa !9
  %622 = icmp eq i32 %621, 2
  br i1 %622, label %623, label %707

623:                                              ; preds = %620, %613, %603
  %624 = load ptr, ptr %31, align 8, !tbaa !5
  %625 = load i32, ptr %624, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr %624, align 4, !tbaa !9
  %627 = load double, ptr %70, align 8, !tbaa !11
  %628 = load ptr, ptr %32, align 8, !tbaa !5
  %629 = load ptr, ptr %31, align 8, !tbaa !5
  %630 = load i32, ptr %629, align 4, !tbaa !9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds double, ptr %628, i64 %631
  store double %627, ptr %632, align 8, !tbaa !11
  %633 = load i32, ptr %69, align 4, !tbaa !9
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %635, label %706

635:                                              ; preds = %623
  %636 = load i32, ptr %100, align 4, !tbaa !9
  %637 = icmp ne i32 %636, 0
  br i1 %637, label %706, label %638

638:                                              ; preds = %635
  %639 = load double, ptr %73, align 8, !tbaa !11
  %640 = load ptr, ptr %33, align 8, !tbaa !5
  %641 = load ptr, ptr %31, align 8, !tbaa !5
  %642 = load i32, ptr %641, align 4, !tbaa !9
  %643 = load i32, ptr %43, align 4, !tbaa !9
  %644 = mul nsw i32 %642, %643
  %645 = add nsw i32 %644, 1
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %640, i64 %646
  store double %639, ptr %647, align 8, !tbaa !11
  %648 = load double, ptr %79, align 8, !tbaa !11
  %649 = load ptr, ptr %33, align 8, !tbaa !5
  %650 = load ptr, ptr %31, align 8, !tbaa !5
  %651 = load i32, ptr %650, align 4, !tbaa !9
  %652 = load i32, ptr %43, align 4, !tbaa !9
  %653 = mul nsw i32 %651, %652
  %654 = add nsw i32 %653, 2
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds double, ptr %649, i64 %655
  store double %648, ptr %656, align 8, !tbaa !11
  %657 = load double, ptr %79, align 8, !tbaa !11
  %658 = fcmp une double %657, 0.000000e+00
  br i1 %658, label %659, label %691

659:                                              ; preds = %638
  %660 = load double, ptr %73, align 8, !tbaa !11
  %661 = fcmp une double %660, 0.000000e+00
  br i1 %661, label %662, label %676

662:                                              ; preds = %659
  %663 = load ptr, ptr %36, align 8, !tbaa !5
  %664 = load ptr, ptr %31, align 8, !tbaa !5
  %665 = load i32, ptr %664, align 4, !tbaa !9
  %666 = shl i32 %665, 1
  %667 = sub nsw i32 %666, 1
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds i32, ptr %663, i64 %668
  store i32 1, ptr %669, align 4, !tbaa !9
  %670 = load ptr, ptr %36, align 8, !tbaa !5
  %671 = load ptr, ptr %31, align 8, !tbaa !5
  %672 = load i32, ptr %671, align 4, !tbaa !9
  %673 = mul nsw i32 %672, 2
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds i32, ptr %670, i64 %674
  store i32 2, ptr %675, align 4, !tbaa !9
  br label %690

676:                                              ; preds = %659
  %677 = load ptr, ptr %36, align 8, !tbaa !5
  %678 = load ptr, ptr %31, align 8, !tbaa !5
  %679 = load i32, ptr %678, align 4, !tbaa !9
  %680 = shl i32 %679, 1
  %681 = sub nsw i32 %680, 1
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds i32, ptr %677, i64 %682
  store i32 1, ptr %683, align 4, !tbaa !9
  %684 = load ptr, ptr %36, align 8, !tbaa !5
  %685 = load ptr, ptr %31, align 8, !tbaa !5
  %686 = load i32, ptr %685, align 4, !tbaa !9
  %687 = mul nsw i32 %686, 2
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds i32, ptr %684, i64 %688
  store i32 1, ptr %689, align 4, !tbaa !9
  br label %690

690:                                              ; preds = %676, %662
  br label %705

691:                                              ; preds = %638
  %692 = load ptr, ptr %36, align 8, !tbaa !5
  %693 = load ptr, ptr %31, align 8, !tbaa !5
  %694 = load i32, ptr %693, align 4, !tbaa !9
  %695 = shl i32 %694, 1
  %696 = sub nsw i32 %695, 1
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds i32, ptr %692, i64 %697
  store i32 2, ptr %698, align 4, !tbaa !9
  %699 = load ptr, ptr %36, align 8, !tbaa !5
  %700 = load ptr, ptr %31, align 8, !tbaa !5
  %701 = load i32, ptr %700, align 4, !tbaa !9
  %702 = mul nsw i32 %701, 2
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds i32, ptr %699, i64 %703
  store i32 2, ptr %704, align 4, !tbaa !9
  br label %705

705:                                              ; preds = %691, %690
  br label %706

706:                                              ; preds = %705, %635, %623
  br label %707

707:                                              ; preds = %706, %620, %617
  br label %1178

708:                                              ; preds = %470
  store i32 1, ptr %88, align 4, !tbaa !9
  %709 = load ptr, ptr %24, align 8, !tbaa !5
  %710 = load i32, ptr %709, align 4, !tbaa !9
  %711 = shl i32 %710, 1
  %712 = add nsw i32 %711, 1
  store i32 %712, ptr %86, align 4, !tbaa !9
  %713 = load ptr, ptr %24, align 8, !tbaa !5
  %714 = load i32, ptr %713, align 4, !tbaa !9
  %715 = mul nsw i32 %714, 3
  %716 = add nsw i32 %715, 1
  store i32 %716, ptr %64, align 4, !tbaa !9
  %717 = load ptr, ptr %24, align 8, !tbaa !5
  %718 = load i32, ptr %717, align 4, !tbaa !9
  %719 = shl i32 %718, 2
  %720 = add nsw i32 %719, 1
  store i32 %720, ptr %49, align 4, !tbaa !9
  %721 = load ptr, ptr %24, align 8, !tbaa !5
  %722 = load i32, ptr %721, align 4, !tbaa !9
  %723 = mul nsw i32 %722, 5
  %724 = add nsw i32 %723, 1
  store i32 %724, ptr %57, align 4, !tbaa !9
  %725 = load ptr, ptr %24, align 8, !tbaa !5
  %726 = load i32, ptr %725, align 4, !tbaa !9
  %727 = mul nsw i32 %726, 6
  %728 = add nsw i32 %727, 1
  store i32 %728, ptr %93, align 4, !tbaa !9
  store i32 1, ptr %91, align 4, !tbaa !9
  %729 = load ptr, ptr %24, align 8, !tbaa !5
  %730 = load i32, ptr %729, align 4, !tbaa !9
  %731 = add nsw i32 %730, 1
  store i32 %731, ptr %78, align 4, !tbaa !9
  %732 = load ptr, ptr %24, align 8, !tbaa !5
  %733 = load i32, ptr %732, align 4, !tbaa !9
  %734 = shl i32 %733, 1
  %735 = add nsw i32 %734, 1
  store i32 %735, ptr %66, align 4, !tbaa !9
  %736 = load ptr, ptr %24, align 8, !tbaa !5
  %737 = load i32, ptr %736, align 4, !tbaa !9
  %738 = mul nsw i32 %737, 3
  %739 = add nsw i32 %738, 1
  store i32 %739, ptr %87, align 4, !tbaa !9
  store double 1.000000e+00, ptr %63, align 8, !tbaa !11
  %740 = load ptr, ptr %24, align 8, !tbaa !5
  %741 = load ptr, ptr %25, align 8, !tbaa !5
  %742 = getelementptr inbounds double, ptr %741, i64 1
  %743 = load ptr, ptr %26, align 8, !tbaa !5
  %744 = getelementptr inbounds double, ptr %743, i64 1
  %745 = call double @dlanst_(ptr noundef @.str.8, ptr noundef %740, ptr noundef %742, ptr noundef %744)
  store double %745, ptr %56, align 8, !tbaa !11
  %746 = load double, ptr %56, align 8, !tbaa !11
  %747 = fcmp ogt double %746, 0.000000e+00
  br i1 %747, label %748, label %756

748:                                              ; preds = %708
  %749 = load double, ptr %56, align 8, !tbaa !11
  %750 = load double, ptr %53, align 8, !tbaa !11
  %751 = fcmp olt double %749, %750
  br i1 %751, label %752, label %756

752:                                              ; preds = %748
  %753 = load double, ptr %53, align 8, !tbaa !11
  %754 = load double, ptr %56, align 8, !tbaa !11
  %755 = fdiv double %753, %754
  store double %755, ptr %63, align 8, !tbaa !11
  br label %765

756:                                              ; preds = %748, %708
  %757 = load double, ptr %56, align 8, !tbaa !11
  %758 = load double, ptr %54, align 8, !tbaa !11
  %759 = fcmp ogt double %757, %758
  br i1 %759, label %760, label %764

760:                                              ; preds = %756
  %761 = load double, ptr %54, align 8, !tbaa !11
  %762 = load double, ptr %56, align 8, !tbaa !11
  %763 = fdiv double %761, %762
  store double %763, ptr %63, align 8, !tbaa !11
  br label %764

764:                                              ; preds = %760, %756
  br label %765

765:                                              ; preds = %764, %752
  %766 = load double, ptr %63, align 8, !tbaa !11
  %767 = fcmp une double %766, 1.000000e+00
  br i1 %767, label %768, label %790

768:                                              ; preds = %765
  %769 = load ptr, ptr %24, align 8, !tbaa !5
  %770 = load ptr, ptr %25, align 8, !tbaa !5
  %771 = getelementptr inbounds double, ptr %770, i64 1
  call void @dscal_(ptr noundef %769, ptr noundef %63, ptr noundef %771, ptr noundef @c__1)
  %772 = load ptr, ptr %24, align 8, !tbaa !5
  %773 = load i32, ptr %772, align 4, !tbaa !9
  %774 = sub nsw i32 %773, 1
  store i32 %774, ptr %45, align 4, !tbaa !9
  %775 = load ptr, ptr %26, align 8, !tbaa !5
  %776 = getelementptr inbounds double, ptr %775, i64 1
  call void @dscal_(ptr noundef %45, ptr noundef %63, ptr noundef %776, ptr noundef @c__1)
  %777 = load double, ptr %63, align 8, !tbaa !11
  %778 = load double, ptr %56, align 8, !tbaa !11
  %779 = fmul double %778, %777
  store double %779, ptr %56, align 8, !tbaa !11
  %780 = load i32, ptr %81, align 4, !tbaa !9
  %781 = icmp ne i32 %780, 0
  br i1 %781, label %782, label %789

782:                                              ; preds = %768
  %783 = load double, ptr %63, align 8, !tbaa !11
  %784 = load double, ptr %80, align 8, !tbaa !11
  %785 = fmul double %784, %783
  store double %785, ptr %80, align 8, !tbaa !11
  %786 = load double, ptr %63, align 8, !tbaa !11
  %787 = load double, ptr %84, align 8, !tbaa !11
  %788 = fmul double %787, %786
  store double %788, ptr %84, align 8, !tbaa !11
  br label %789

789:                                              ; preds = %782, %768
  br label %790

790:                                              ; preds = %789, %765
  %791 = load ptr, ptr %37, align 8, !tbaa !5
  %792 = load i32, ptr %791, align 4, !tbaa !9
  %793 = icmp ne i32 %792, 0
  br i1 %793, label %794, label %800

794:                                              ; preds = %790
  %795 = load ptr, ptr %24, align 8, !tbaa !5
  %796 = load ptr, ptr %25, align 8, !tbaa !5
  %797 = getelementptr inbounds double, ptr %796, i64 1
  %798 = load ptr, ptr %26, align 8, !tbaa !5
  %799 = getelementptr inbounds double, ptr %798, i64 1
  call void @dlarrr_(ptr noundef %795, ptr noundef %797, ptr noundef %799, ptr noundef %65)
  br label %801

800:                                              ; preds = %790
  store i32 -1, ptr %65, align 4, !tbaa !9
  br label %801

801:                                              ; preds = %800, %794
  %802 = load i32, ptr %65, align 4, !tbaa !9
  %803 = icmp eq i32 %802, 0
  br i1 %803, label %804, label %806

804:                                              ; preds = %801
  %805 = load double, ptr %103, align 8, !tbaa !11
  store double %805, ptr %90, align 8, !tbaa !11
  br label %810

806:                                              ; preds = %801
  %807 = load double, ptr %103, align 8, !tbaa !11
  %808 = fneg double %807
  store double %808, ptr %90, align 8, !tbaa !11
  %809 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %809, align 4, !tbaa !9
  br label %810

810:                                              ; preds = %806, %804
  %811 = load ptr, ptr %37, align 8, !tbaa !5
  %812 = load i32, ptr %811, align 4, !tbaa !9
  %813 = icmp ne i32 %812, 0
  br i1 %813, label %814, label %822

814:                                              ; preds = %810
  %815 = load ptr, ptr %24, align 8, !tbaa !5
  %816 = load ptr, ptr %25, align 8, !tbaa !5
  %817 = getelementptr inbounds double, ptr %816, i64 1
  %818 = load ptr, ptr %38, align 8, !tbaa !5
  %819 = load i32, ptr %49, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds double, ptr %818, i64 %820
  call void @dcopy_(ptr noundef %815, ptr noundef %817, ptr noundef @c__1, ptr noundef %821, ptr noundef @c__1)
  br label %822

822:                                              ; preds = %814, %810
  %823 = load ptr, ptr %24, align 8, !tbaa !5
  %824 = load i32, ptr %823, align 4, !tbaa !9
  %825 = sub nsw i32 %824, 1
  store i32 %825, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %826

826:                                              ; preds = %846, %822
  %827 = load i32, ptr %62, align 4, !tbaa !9
  %828 = load i32, ptr %45, align 4, !tbaa !9
  %829 = icmp sle i32 %827, %828
  br i1 %829, label %830, label %849

830:                                              ; preds = %826
  %831 = load ptr, ptr %26, align 8, !tbaa !5
  %832 = load i32, ptr %62, align 4, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds double, ptr %831, i64 %833
  %835 = load double, ptr %834, align 8, !tbaa !11
  store double %835, ptr %47, align 8, !tbaa !11
  %836 = load double, ptr %47, align 8, !tbaa !11
  %837 = load double, ptr %47, align 8, !tbaa !11
  %838 = fmul double %836, %837
  %839 = load ptr, ptr %38, align 8, !tbaa !5
  %840 = load i32, ptr %57, align 4, !tbaa !9
  %841 = load i32, ptr %62, align 4, !tbaa !9
  %842 = add nsw i32 %840, %841
  %843 = sub nsw i32 %842, 1
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %839, i64 %844
  store double %838, ptr %845, align 8, !tbaa !11
  br label %846

846:                                              ; preds = %830
  %847 = load i32, ptr %62, align 4, !tbaa !9
  %848 = add nsw i32 %847, 1
  store i32 %848, ptr %62, align 4, !tbaa !9
  br label %826, !llvm.loop !13

849:                                              ; preds = %826
  %850 = load i32, ptr %69, align 4, !tbaa !9
  %851 = icmp ne i32 %850, 0
  br i1 %851, label %857, label %852

852:                                              ; preds = %849
  %853 = load double, ptr %103, align 8, !tbaa !11
  %854 = fmul double %853, 4.000000e+00
  store double %854, ptr %59, align 8, !tbaa !11
  %855 = load double, ptr %103, align 8, !tbaa !11
  %856 = fmul double %855, 4.000000e+00
  store double %856, ptr %60, align 8, !tbaa !11
  br label %874

857:                                              ; preds = %849
  %858 = load double, ptr %103, align 8, !tbaa !11
  %859 = call double @sqrt(double noundef %858) #4
  store double %859, ptr %59, align 8, !tbaa !11
  %860 = load double, ptr %103, align 8, !tbaa !11
  %861 = call double @sqrt(double noundef %860) #4
  %862 = fmul double %861, 5.000000e-03
  store double %862, ptr %47, align 8, !tbaa !11
  %863 = load double, ptr %103, align 8, !tbaa !11
  %864 = fmul double %863, 4.000000e+00
  store double %864, ptr %48, align 8, !tbaa !11
  %865 = load double, ptr %47, align 8, !tbaa !11
  %866 = load double, ptr %48, align 8, !tbaa !11
  %867 = fcmp oge double %865, %866
  br i1 %867, label %868, label %870

868:                                              ; preds = %857
  %869 = load double, ptr %47, align 8, !tbaa !11
  br label %872

870:                                              ; preds = %857
  %871 = load double, ptr %48, align 8, !tbaa !11
  br label %872

872:                                              ; preds = %870, %868
  %873 = phi double [ %869, %868 ], [ %871, %870 ]
  store double %873, ptr %60, align 8, !tbaa !11
  br label %874

874:                                              ; preds = %872, %852
  %875 = load ptr, ptr %23, align 8, !tbaa !5
  %876 = load ptr, ptr %24, align 8, !tbaa !5
  %877 = load ptr, ptr %25, align 8, !tbaa !5
  %878 = getelementptr inbounds double, ptr %877, i64 1
  %879 = load ptr, ptr %26, align 8, !tbaa !5
  %880 = getelementptr inbounds double, ptr %879, i64 1
  %881 = load ptr, ptr %38, align 8, !tbaa !5
  %882 = load i32, ptr %57, align 4, !tbaa !9
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds double, ptr %881, i64 %883
  %885 = load ptr, ptr %40, align 8, !tbaa !5
  %886 = load i32, ptr %91, align 4, !tbaa !9
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds i32, ptr %885, i64 %887
  %889 = load ptr, ptr %31, align 8, !tbaa !5
  %890 = load ptr, ptr %32, align 8, !tbaa !5
  %891 = getelementptr inbounds double, ptr %890, i64 1
  %892 = load ptr, ptr %38, align 8, !tbaa !5
  %893 = load i32, ptr %86, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds double, ptr %892, i64 %894
  %896 = load ptr, ptr %38, align 8, !tbaa !5
  %897 = load i32, ptr %64, align 4, !tbaa !9
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds double, ptr %896, i64 %898
  %900 = load ptr, ptr %40, align 8, !tbaa !5
  %901 = load i32, ptr %78, align 4, !tbaa !9
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds i32, ptr %900, i64 %902
  %904 = load ptr, ptr %40, align 8, !tbaa !5
  %905 = load i32, ptr %66, align 4, !tbaa !9
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds i32, ptr %904, i64 %906
  %908 = load ptr, ptr %38, align 8, !tbaa !5
  %909 = load i32, ptr %88, align 4, !tbaa !9
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds double, ptr %908, i64 %910
  %912 = load ptr, ptr %38, align 8, !tbaa !5
  %913 = load i32, ptr %93, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %912, i64 %914
  %916 = load ptr, ptr %40, align 8, !tbaa !5
  %917 = load i32, ptr %87, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds i32, ptr %916, i64 %918
  call void @dlarre_(ptr noundef %875, ptr noundef %876, ptr noundef %80, ptr noundef %84, ptr noundef %101, ptr noundef %102, ptr noundef %878, ptr noundef %880, ptr noundef %884, ptr noundef %59, ptr noundef %60, ptr noundef %90, ptr noundef %97, ptr noundef %888, ptr noundef %889, ptr noundef %891, ptr noundef %895, ptr noundef %899, ptr noundef %903, ptr noundef %907, ptr noundef %911, ptr noundef %96, ptr noundef %915, ptr noundef %919, ptr noundef %65)
  %920 = load i32, ptr %65, align 4, !tbaa !9
  %921 = icmp ne i32 %920, 0
  br i1 %921, label %922, label %934

922:                                              ; preds = %874
  %923 = load i32, ptr %65, align 4, !tbaa !9
  %924 = icmp sge i32 %923, 0
  br i1 %924, label %925, label %927

925:                                              ; preds = %922
  %926 = load i32, ptr %65, align 4, !tbaa !9
  br label %930

927:                                              ; preds = %922
  %928 = load i32, ptr %65, align 4, !tbaa !9
  %929 = sub nsw i32 0, %928
  br label %930

930:                                              ; preds = %927, %925
  %931 = phi i32 [ %926, %925 ], [ %929, %927 ]
  %932 = add nsw i32 %931, 10
  %933 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %932, ptr %933, align 4, !tbaa !9
  store i32 1, ptr %105, align 4
  br label %1339

934:                                              ; preds = %874
  %935 = load i32, ptr %69, align 4, !tbaa !9
  %936 = icmp ne i32 %935, 0
  br i1 %936, label %937, label %1001

937:                                              ; preds = %934
  %938 = load ptr, ptr %24, align 8, !tbaa !5
  %939 = load ptr, ptr %25, align 8, !tbaa !5
  %940 = getelementptr inbounds double, ptr %939, i64 1
  %941 = load ptr, ptr %26, align 8, !tbaa !5
  %942 = getelementptr inbounds double, ptr %941, i64 1
  %943 = load ptr, ptr %40, align 8, !tbaa !5
  %944 = load i32, ptr %91, align 4, !tbaa !9
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds i32, ptr %943, i64 %945
  %947 = load ptr, ptr %31, align 8, !tbaa !5
  %948 = load ptr, ptr %31, align 8, !tbaa !5
  %949 = load ptr, ptr %32, align 8, !tbaa !5
  %950 = getelementptr inbounds double, ptr %949, i64 1
  %951 = load ptr, ptr %38, align 8, !tbaa !5
  %952 = load i32, ptr %86, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %951, i64 %953
  %955 = load ptr, ptr %38, align 8, !tbaa !5
  %956 = load i32, ptr %64, align 4, !tbaa !9
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds double, ptr %955, i64 %957
  %959 = load ptr, ptr %40, align 8, !tbaa !5
  %960 = load i32, ptr %78, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %959, i64 %961
  %963 = load ptr, ptr %40, align 8, !tbaa !5
  %964 = load i32, ptr %66, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds i32, ptr %963, i64 %965
  %967 = load ptr, ptr %38, align 8, !tbaa !5
  %968 = load i32, ptr %88, align 4, !tbaa !9
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %967, i64 %969
  %971 = load ptr, ptr %33, align 8, !tbaa !5
  %972 = load i32, ptr %44, align 4, !tbaa !9
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds double, ptr %971, i64 %973
  %975 = load ptr, ptr %34, align 8, !tbaa !5
  %976 = load ptr, ptr %36, align 8, !tbaa !5
  %977 = getelementptr inbounds i32, ptr %976, i64 1
  %978 = load ptr, ptr %38, align 8, !tbaa !5
  %979 = load i32, ptr %93, align 4, !tbaa !9
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds double, ptr %978, i64 %980
  %982 = load ptr, ptr %40, align 8, !tbaa !5
  %983 = load i32, ptr %87, align 4, !tbaa !9
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds i32, ptr %982, i64 %984
  call void @dlarrv_(ptr noundef %938, ptr noundef %80, ptr noundef %84, ptr noundef %940, ptr noundef %942, ptr noundef %96, ptr noundef %946, ptr noundef %947, ptr noundef @c__1, ptr noundef %948, ptr noundef @c_b18, ptr noundef %59, ptr noundef %60, ptr noundef %950, ptr noundef %954, ptr noundef %958, ptr noundef %962, ptr noundef %966, ptr noundef %970, ptr noundef %974, ptr noundef %975, ptr noundef %977, ptr noundef %981, ptr noundef %985, ptr noundef %65)
  %986 = load i32, ptr %65, align 4, !tbaa !9
  %987 = icmp ne i32 %986, 0
  br i1 %987, label %988, label %1000

988:                                              ; preds = %937
  %989 = load i32, ptr %65, align 4, !tbaa !9
  %990 = icmp sge i32 %989, 0
  br i1 %990, label %991, label %993

991:                                              ; preds = %988
  %992 = load i32, ptr %65, align 4, !tbaa !9
  br label %996

993:                                              ; preds = %988
  %994 = load i32, ptr %65, align 4, !tbaa !9
  %995 = sub nsw i32 0, %994
  br label %996

996:                                              ; preds = %993, %991
  %997 = phi i32 [ %992, %991 ], [ %995, %993 ]
  %998 = add nsw i32 %997, 20
  %999 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %998, ptr %999, align 4, !tbaa !9
  store i32 1, ptr %105, align 4
  br label %1339

1000:                                             ; preds = %937
  br label %1039

1001:                                             ; preds = %934
  %1002 = load ptr, ptr %31, align 8, !tbaa !5
  %1003 = load i32, ptr %1002, align 4, !tbaa !9
  store i32 %1003, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1004

1004:                                             ; preds = %1035, %1001
  %1005 = load i32, ptr %62, align 4, !tbaa !9
  %1006 = load i32, ptr %45, align 4, !tbaa !9
  %1007 = icmp sle i32 %1005, %1006
  br i1 %1007, label %1008, label %1038

1008:                                             ; preds = %1004
  %1009 = load ptr, ptr %40, align 8, !tbaa !5
  %1010 = load i32, ptr %78, align 4, !tbaa !9
  %1011 = load i32, ptr %62, align 4, !tbaa !9
  %1012 = add nsw i32 %1010, %1011
  %1013 = sub nsw i32 %1012, 1
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds i32, ptr %1009, i64 %1014
  %1016 = load i32, ptr %1015, align 4, !tbaa !9
  store i32 %1016, ptr %55, align 4, !tbaa !9
  %1017 = load ptr, ptr %26, align 8, !tbaa !5
  %1018 = load ptr, ptr %40, align 8, !tbaa !5
  %1019 = load i32, ptr %91, align 4, !tbaa !9
  %1020 = load i32, ptr %55, align 4, !tbaa !9
  %1021 = add nsw i32 %1019, %1020
  %1022 = sub nsw i32 %1021, 1
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds i32, ptr %1018, i64 %1023
  %1025 = load i32, ptr %1024, align 4, !tbaa !9
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds double, ptr %1017, i64 %1026
  %1028 = load double, ptr %1027, align 8, !tbaa !11
  %1029 = load ptr, ptr %32, align 8, !tbaa !5
  %1030 = load i32, ptr %62, align 4, !tbaa !9
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds double, ptr %1029, i64 %1031
  %1033 = load double, ptr %1032, align 8, !tbaa !11
  %1034 = fadd double %1033, %1028
  store double %1034, ptr %1032, align 8, !tbaa !11
  br label %1035

1035:                                             ; preds = %1008
  %1036 = load i32, ptr %62, align 4, !tbaa !9
  %1037 = add nsw i32 %1036, 1
  store i32 %1037, ptr %62, align 4, !tbaa !9
  br label %1004, !llvm.loop !15

1038:                                             ; preds = %1004
  br label %1039

1039:                                             ; preds = %1038, %1000
  %1040 = load ptr, ptr %37, align 8, !tbaa !5
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  %1042 = icmp ne i32 %1041, 0
  br i1 %1042, label %1043, label %1168

1043:                                             ; preds = %1039
  store i32 1, ptr %77, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  %1044 = load ptr, ptr %40, align 8, !tbaa !5
  %1045 = load i32, ptr %78, align 4, !tbaa !9
  %1046 = load ptr, ptr %31, align 8, !tbaa !5
  %1047 = load i32, ptr %1046, align 4, !tbaa !9
  %1048 = add nsw i32 %1045, %1047
  %1049 = sub nsw i32 %1048, 1
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds i32, ptr %1044, i64 %1050
  %1052 = load i32, ptr %1051, align 4, !tbaa !9
  store i32 %1052, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  br label %1053

1053:                                             ; preds = %1164, %1043
  %1054 = load i32, ptr %51, align 4, !tbaa !9
  %1055 = load i32, ptr %45, align 4, !tbaa !9
  %1056 = icmp sle i32 %1054, %1055
  br i1 %1056, label %1057, label %1167

1057:                                             ; preds = %1053
  %1058 = load ptr, ptr %40, align 8, !tbaa !5
  %1059 = load i32, ptr %91, align 4, !tbaa !9
  %1060 = load i32, ptr %51, align 4, !tbaa !9
  %1061 = add nsw i32 %1059, %1060
  %1062 = sub nsw i32 %1061, 1
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds i32, ptr %1058, i64 %1063
  %1065 = load i32, ptr %1064, align 4, !tbaa !9
  store i32 %1065, ptr %50, align 4, !tbaa !9
  %1066 = load i32, ptr %50, align 4, !tbaa !9
  %1067 = load i32, ptr %77, align 4, !tbaa !9
  %1068 = sub nsw i32 %1066, %1067
  %1069 = add nsw i32 %1068, 1
  store i32 %1069, ptr %74, align 4, !tbaa !9
  %1070 = load i32, ptr %82, align 4, !tbaa !9
  %1071 = sub nsw i32 %1070, 1
  store i32 %1071, ptr %52, align 4, !tbaa !9
  br label %1072

1072:                                             ; preds = %1087, %1057
  %1073 = load i32, ptr %52, align 4, !tbaa !9
  %1074 = load ptr, ptr %31, align 8, !tbaa !5
  %1075 = load i32, ptr %1074, align 4, !tbaa !9
  %1076 = icmp slt i32 %1073, %1075
  br i1 %1076, label %1077, label %1091

1077:                                             ; preds = %1072
  %1078 = load ptr, ptr %40, align 8, !tbaa !5
  %1079 = load i32, ptr %78, align 4, !tbaa !9
  %1080 = load i32, ptr %52, align 4, !tbaa !9
  %1081 = add nsw i32 %1079, %1080
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds i32, ptr %1078, i64 %1082
  %1084 = load i32, ptr %1083, align 4, !tbaa !9
  %1085 = load i32, ptr %51, align 4, !tbaa !9
  %1086 = icmp eq i32 %1084, %1085
  br i1 %1086, label %1087, label %1090

1087:                                             ; preds = %1077
  %1088 = load i32, ptr %52, align 4, !tbaa !9
  %1089 = add nsw i32 %1088, 1
  store i32 %1089, ptr %52, align 4, !tbaa !9
  br label %1072

1090:                                             ; preds = %1077
  br label %1091

1091:                                             ; preds = %1090, %1072
  %1092 = load i32, ptr %52, align 4, !tbaa !9
  %1093 = load i32, ptr %82, align 4, !tbaa !9
  %1094 = icmp slt i32 %1092, %1093
  br i1 %1094, label %1095, label %1098

1095:                                             ; preds = %1091
  %1096 = load i32, ptr %50, align 4, !tbaa !9
  %1097 = add nsw i32 %1096, 1
  store i32 %1097, ptr %77, align 4, !tbaa !9
  br label %1163

1098:                                             ; preds = %1091
  %1099 = load ptr, ptr %40, align 8, !tbaa !5
  %1100 = load i32, ptr %66, align 4, !tbaa !9
  %1101 = load i32, ptr %82, align 4, !tbaa !9
  %1102 = add nsw i32 %1100, %1101
  %1103 = sub nsw i32 %1102, 1
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds i32, ptr %1099, i64 %1104
  %1106 = load i32, ptr %1105, align 4, !tbaa !9
  %1107 = sub nsw i32 %1106, 1
  store i32 %1107, ptr %89, align 4, !tbaa !9
  %1108 = load ptr, ptr %40, align 8, !tbaa !5
  %1109 = load i32, ptr %66, align 4, !tbaa !9
  %1110 = load i32, ptr %82, align 4, !tbaa !9
  %1111 = add nsw i32 %1109, %1110
  %1112 = sub nsw i32 %1111, 1
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds i32, ptr %1108, i64 %1113
  %1115 = load i32, ptr %1114, align 4, !tbaa !9
  store i32 %1115, ptr %92, align 4, !tbaa !9
  %1116 = load ptr, ptr %40, align 8, !tbaa !5
  %1117 = load i32, ptr %66, align 4, !tbaa !9
  %1118 = load i32, ptr %52, align 4, !tbaa !9
  %1119 = add nsw i32 %1117, %1118
  %1120 = sub nsw i32 %1119, 1
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds i32, ptr %1116, i64 %1121
  %1123 = load i32, ptr %1122, align 4, !tbaa !9
  store i32 %1123, ptr %67, align 4, !tbaa !9
  %1124 = load double, ptr %103, align 8, !tbaa !11
  %1125 = fmul double %1124, 4.000000e+00
  store double %1125, ptr %60, align 8, !tbaa !11
  %1126 = load ptr, ptr %38, align 8, !tbaa !5
  %1127 = load i32, ptr %49, align 4, !tbaa !9
  %1128 = load i32, ptr %77, align 4, !tbaa !9
  %1129 = add nsw i32 %1127, %1128
  %1130 = sub nsw i32 %1129, 1
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds double, ptr %1126, i64 %1131
  %1133 = load ptr, ptr %38, align 8, !tbaa !5
  %1134 = load i32, ptr %57, align 4, !tbaa !9
  %1135 = load i32, ptr %77, align 4, !tbaa !9
  %1136 = add nsw i32 %1134, %1135
  %1137 = sub nsw i32 %1136, 1
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds double, ptr %1133, i64 %1138
  %1140 = load ptr, ptr %32, align 8, !tbaa !5
  %1141 = load i32, ptr %82, align 4, !tbaa !9
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds double, ptr %1140, i64 %1142
  %1144 = load ptr, ptr %38, align 8, !tbaa !5
  %1145 = load i32, ptr %86, align 4, !tbaa !9
  %1146 = load i32, ptr %82, align 4, !tbaa !9
  %1147 = add nsw i32 %1145, %1146
  %1148 = sub nsw i32 %1147, 1
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds double, ptr %1144, i64 %1149
  %1151 = load ptr, ptr %38, align 8, !tbaa !5
  %1152 = load i32, ptr %93, align 4, !tbaa !9
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds double, ptr %1151, i64 %1153
  %1155 = load ptr, ptr %40, align 8, !tbaa !5
  %1156 = load i32, ptr %87, align 4, !tbaa !9
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds i32, ptr %1155, i64 %1157
  call void @dlarrj_(ptr noundef %74, ptr noundef %1132, ptr noundef %1139, ptr noundef %92, ptr noundef %67, ptr noundef %60, ptr noundef %89, ptr noundef %1143, ptr noundef %1150, ptr noundef %1154, ptr noundef %1158, ptr noundef %96, ptr noundef %56, ptr noundef %65)
  %1159 = load i32, ptr %50, align 4, !tbaa !9
  %1160 = add nsw i32 %1159, 1
  store i32 %1160, ptr %77, align 4, !tbaa !9
  %1161 = load i32, ptr %52, align 4, !tbaa !9
  %1162 = add nsw i32 %1161, 1
  store i32 %1162, ptr %82, align 4, !tbaa !9
  br label %1163

1163:                                             ; preds = %1098, %1095
  br label %1164

1164:                                             ; preds = %1163
  %1165 = load i32, ptr %51, align 4, !tbaa !9
  %1166 = add nsw i32 %1165, 1
  store i32 %1166, ptr %51, align 4, !tbaa !9
  br label %1053, !llvm.loop !16

1167:                                             ; preds = %1053
  br label %1168

1168:                                             ; preds = %1167, %1039
  %1169 = load double, ptr %63, align 8, !tbaa !11
  %1170 = fcmp une double %1169, 1.000000e+00
  br i1 %1170, label %1171, label %1177

1171:                                             ; preds = %1168
  %1172 = load double, ptr %63, align 8, !tbaa !11
  %1173 = fdiv double 1.000000e+00, %1172
  store double %1173, ptr %47, align 8, !tbaa !11
  %1174 = load ptr, ptr %31, align 8, !tbaa !5
  %1175 = load ptr, ptr %32, align 8, !tbaa !5
  %1176 = getelementptr inbounds double, ptr %1175, i64 1
  call void @dscal_(ptr noundef %1174, ptr noundef %47, ptr noundef %1176, ptr noundef @c__1)
  br label %1177

1177:                                             ; preds = %1171, %1168
  br label %1178

1178:                                             ; preds = %1177, %707
  %1179 = load i32, ptr %97, align 4, !tbaa !9
  %1180 = icmp sgt i32 %1179, 1
  br i1 %1180, label %1185, label %1181

1181:                                             ; preds = %1178
  %1182 = load ptr, ptr %24, align 8, !tbaa !5
  %1183 = load i32, ptr %1182, align 4, !tbaa !9
  %1184 = icmp eq i32 %1183, 2
  br i1 %1184, label %1185, label %1331

1185:                                             ; preds = %1181, %1178
  %1186 = load i32, ptr %69, align 4, !tbaa !9
  %1187 = icmp ne i32 %1186, 0
  br i1 %1187, label %1197, label %1188

1188:                                             ; preds = %1185
  %1189 = load ptr, ptr %31, align 8, !tbaa !5
  %1190 = load ptr, ptr %32, align 8, !tbaa !5
  %1191 = getelementptr inbounds double, ptr %1190, i64 1
  call void @dlasrt_(ptr noundef @.str.2, ptr noundef %1189, ptr noundef %1191, ptr noundef %65)
  %1192 = load i32, ptr %65, align 4, !tbaa !9
  %1193 = icmp ne i32 %1192, 0
  br i1 %1193, label %1194, label %1196

1194:                                             ; preds = %1188
  %1195 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 3, ptr %1195, align 4, !tbaa !9
  store i32 1, ptr %105, align 4
  br label %1339

1196:                                             ; preds = %1188
  br label %1330

1197:                                             ; preds = %1185
  %1198 = load ptr, ptr %31, align 8, !tbaa !5
  %1199 = load i32, ptr %1198, align 4, !tbaa !9
  %1200 = sub nsw i32 %1199, 1
  store i32 %1200, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1201

1201:                                             ; preds = %1326, %1197
  %1202 = load i32, ptr %62, align 4, !tbaa !9
  %1203 = load i32, ptr %45, align 4, !tbaa !9
  %1204 = icmp sle i32 %1202, %1203
  br i1 %1204, label %1205, label %1329

1205:                                             ; preds = %1201
  store i32 0, ptr %61, align 4, !tbaa !9
  %1206 = load ptr, ptr %32, align 8, !tbaa !5
  %1207 = load i32, ptr %62, align 4, !tbaa !9
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds double, ptr %1206, i64 %1208
  %1210 = load double, ptr %1209, align 8, !tbaa !11
  store double %1210, ptr %104, align 8, !tbaa !11
  %1211 = load ptr, ptr %31, align 8, !tbaa !5
  %1212 = load i32, ptr %1211, align 4, !tbaa !9
  store i32 %1212, ptr %46, align 4, !tbaa !9
  %1213 = load i32, ptr %62, align 4, !tbaa !9
  %1214 = add nsw i32 %1213, 1
  store i32 %1214, ptr %72, align 4, !tbaa !9
  br label %1215

1215:                                             ; preds = %1235, %1205
  %1216 = load i32, ptr %72, align 4, !tbaa !9
  %1217 = load i32, ptr %46, align 4, !tbaa !9
  %1218 = icmp sle i32 %1216, %1217
  br i1 %1218, label %1219, label %1238

1219:                                             ; preds = %1215
  %1220 = load ptr, ptr %32, align 8, !tbaa !5
  %1221 = load i32, ptr %72, align 4, !tbaa !9
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds double, ptr %1220, i64 %1222
  %1224 = load double, ptr %1223, align 8, !tbaa !11
  %1225 = load double, ptr %104, align 8, !tbaa !11
  %1226 = fcmp olt double %1224, %1225
  br i1 %1226, label %1227, label %1234

1227:                                             ; preds = %1219
  %1228 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %1228, ptr %61, align 4, !tbaa !9
  %1229 = load ptr, ptr %32, align 8, !tbaa !5
  %1230 = load i32, ptr %72, align 4, !tbaa !9
  %1231 = sext i32 %1230 to i64
  %1232 = getelementptr inbounds double, ptr %1229, i64 %1231
  %1233 = load double, ptr %1232, align 8, !tbaa !11
  store double %1233, ptr %104, align 8, !tbaa !11
  br label %1234

1234:                                             ; preds = %1227, %1219
  br label %1235

1235:                                             ; preds = %1234
  %1236 = load i32, ptr %72, align 4, !tbaa !9
  %1237 = add nsw i32 %1236, 1
  store i32 %1237, ptr %72, align 4, !tbaa !9
  br label %1215, !llvm.loop !17

1238:                                             ; preds = %1215
  %1239 = load i32, ptr %61, align 4, !tbaa !9
  %1240 = icmp ne i32 %1239, 0
  br i1 %1240, label %1241, label %1325

1241:                                             ; preds = %1238
  %1242 = load ptr, ptr %32, align 8, !tbaa !5
  %1243 = load i32, ptr %62, align 4, !tbaa !9
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds double, ptr %1242, i64 %1244
  %1246 = load double, ptr %1245, align 8, !tbaa !11
  %1247 = load ptr, ptr %32, align 8, !tbaa !5
  %1248 = load i32, ptr %61, align 4, !tbaa !9
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds double, ptr %1247, i64 %1249
  store double %1246, ptr %1250, align 8, !tbaa !11
  %1251 = load double, ptr %104, align 8, !tbaa !11
  %1252 = load ptr, ptr %32, align 8, !tbaa !5
  %1253 = load i32, ptr %62, align 4, !tbaa !9
  %1254 = sext i32 %1253 to i64
  %1255 = getelementptr inbounds double, ptr %1252, i64 %1254
  store double %1251, ptr %1255, align 8, !tbaa !11
  %1256 = load i32, ptr %69, align 4, !tbaa !9
  %1257 = icmp ne i32 %1256, 0
  br i1 %1257, label %1258, label %1324

1258:                                             ; preds = %1241
  %1259 = load ptr, ptr %24, align 8, !tbaa !5
  %1260 = load ptr, ptr %33, align 8, !tbaa !5
  %1261 = load i32, ptr %61, align 4, !tbaa !9
  %1262 = load i32, ptr %43, align 4, !tbaa !9
  %1263 = mul nsw i32 %1261, %1262
  %1264 = add nsw i32 %1263, 1
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds double, ptr %1260, i64 %1265
  %1267 = load ptr, ptr %33, align 8, !tbaa !5
  %1268 = load i32, ptr %62, align 4, !tbaa !9
  %1269 = load i32, ptr %43, align 4, !tbaa !9
  %1270 = mul nsw i32 %1268, %1269
  %1271 = add nsw i32 %1270, 1
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds double, ptr %1267, i64 %1272
  call void @dswap_(ptr noundef %1259, ptr noundef %1266, ptr noundef @c__1, ptr noundef %1273, ptr noundef @c__1)
  %1274 = load ptr, ptr %36, align 8, !tbaa !5
  %1275 = load i32, ptr %61, align 4, !tbaa !9
  %1276 = shl i32 %1275, 1
  %1277 = sub nsw i32 %1276, 1
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds i32, ptr %1274, i64 %1278
  %1280 = load i32, ptr %1279, align 4, !tbaa !9
  store i32 %1280, ptr %55, align 4, !tbaa !9
  %1281 = load ptr, ptr %36, align 8, !tbaa !5
  %1282 = load i32, ptr %62, align 4, !tbaa !9
  %1283 = shl i32 %1282, 1
  %1284 = sub nsw i32 %1283, 1
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds i32, ptr %1281, i64 %1285
  %1287 = load i32, ptr %1286, align 4, !tbaa !9
  %1288 = load ptr, ptr %36, align 8, !tbaa !5
  %1289 = load i32, ptr %61, align 4, !tbaa !9
  %1290 = shl i32 %1289, 1
  %1291 = sub nsw i32 %1290, 1
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds i32, ptr %1288, i64 %1292
  store i32 %1287, ptr %1293, align 4, !tbaa !9
  %1294 = load i32, ptr %55, align 4, !tbaa !9
  %1295 = load ptr, ptr %36, align 8, !tbaa !5
  %1296 = load i32, ptr %62, align 4, !tbaa !9
  %1297 = shl i32 %1296, 1
  %1298 = sub nsw i32 %1297, 1
  %1299 = sext i32 %1298 to i64
  %1300 = getelementptr inbounds i32, ptr %1295, i64 %1299
  store i32 %1294, ptr %1300, align 4, !tbaa !9
  %1301 = load ptr, ptr %36, align 8, !tbaa !5
  %1302 = load i32, ptr %61, align 4, !tbaa !9
  %1303 = mul nsw i32 %1302, 2
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds i32, ptr %1301, i64 %1304
  %1306 = load i32, ptr %1305, align 4, !tbaa !9
  store i32 %1306, ptr %55, align 4, !tbaa !9
  %1307 = load ptr, ptr %36, align 8, !tbaa !5
  %1308 = load i32, ptr %62, align 4, !tbaa !9
  %1309 = mul nsw i32 %1308, 2
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds i32, ptr %1307, i64 %1310
  %1312 = load i32, ptr %1311, align 4, !tbaa !9
  %1313 = load ptr, ptr %36, align 8, !tbaa !5
  %1314 = load i32, ptr %61, align 4, !tbaa !9
  %1315 = mul nsw i32 %1314, 2
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds i32, ptr %1313, i64 %1316
  store i32 %1312, ptr %1317, align 4, !tbaa !9
  %1318 = load i32, ptr %55, align 4, !tbaa !9
  %1319 = load ptr, ptr %36, align 8, !tbaa !5
  %1320 = load i32, ptr %62, align 4, !tbaa !9
  %1321 = mul nsw i32 %1320, 2
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds i32, ptr %1319, i64 %1322
  store i32 %1318, ptr %1323, align 4, !tbaa !9
  br label %1324

1324:                                             ; preds = %1258, %1241
  br label %1325

1325:                                             ; preds = %1324, %1238
  br label %1326

1326:                                             ; preds = %1325
  %1327 = load i32, ptr %62, align 4, !tbaa !9
  %1328 = add nsw i32 %1327, 1
  store i32 %1328, ptr %62, align 4, !tbaa !9
  br label %1201, !llvm.loop !18

1329:                                             ; preds = %1201
  br label %1330

1330:                                             ; preds = %1329, %1196
  br label %1331

1331:                                             ; preds = %1330, %1181
  %1332 = load i32, ptr %68, align 4, !tbaa !9
  %1333 = sitofp i32 %1332 to double
  %1334 = load ptr, ptr %38, align 8, !tbaa !5
  %1335 = getelementptr inbounds double, ptr %1334, i64 1
  store double %1333, ptr %1335, align 8, !tbaa !11
  %1336 = load i32, ptr %94, align 4, !tbaa !9
  %1337 = load ptr, ptr %40, align 8, !tbaa !5
  %1338 = getelementptr inbounds i32, ptr %1337, i64 1
  store i32 %1336, ptr %1338, align 4, !tbaa !9
  store i32 1, ptr %105, align 4
  br label %1339

1339:                                             ; preds = %1331, %1194, %996, %930, %469, %415, %408, %397
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  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 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 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 8, 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 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  ret void
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

declare void @dlarrj_(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 @dlasrt_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}


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

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

; Function Attrs: nounwind uwtable
define dso_local void @dstemr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr nocapture noundef readonly %13, ptr noundef %14, ptr nocapture noundef %15, ptr noundef %16, ptr nocapture noundef readonly %17, ptr noundef %18, ptr nocapture noundef readonly %19, ptr noundef %20) local_unnamed_addr #0 {
  %22 = ptrtoint ptr %4 to i64
  %23 = ptrtoint ptr %16 to i64
  %24 = alloca i32, align 4
  %25 = alloca double, align 8
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca i32, align 4
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca i32, align 4
  %43 = alloca double, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca double, align 8
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #5
  %50 = getelementptr inbounds i8, ptr %4, i64 -8
  %51 = getelementptr inbounds i8, ptr %10, i64 -8
  %52 = load i32, ptr %12, align 4, !tbaa !5
  %narrow = xor i32 %52, -1
  %53 = sext i32 %narrow to i64
  %54 = getelementptr inbounds double, ptr %11, i64 %53
  %55 = getelementptr inbounds i8, ptr %14, i64 -4
  %56 = getelementptr inbounds i8, ptr %16, i64 -8
  %57 = getelementptr inbounds i8, ptr %18, i64 -4
  %58 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %59 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %60 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %61 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %62 = load i32, ptr %17, align 4, !tbaa !5
  %63 = icmp eq i32 %62, -1
  br i1 %63, label %67, label %64

64:                                               ; preds = %21
  %65 = load i32, ptr %19, align 4, !tbaa !5
  %66 = icmp eq i32 %65, -1
  br label %67

67:                                               ; preds = %64, %21
  %68 = phi i1 [ true, %21 ], [ %66, %64 ]
  %69 = load i32, ptr %13, align 4, !tbaa !5
  %70 = icmp eq i32 %69, -1
  %71 = icmp ne i32 %58, 0
  %72 = load i32, ptr %2, align 4, !tbaa !5
  %73 = mul nsw i32 %72, 10
  %74 = shl i32 %72, 3
  %.0437.v = select i1 %71, i32 18, i32 12
  %.0437 = mul nsw i32 %72, %.0437.v
  %.0426 = select i1 %71, i32 %73, i32 %74
  store double 0.000000e+00, ptr %39, align 8, !tbaa !9
  store double 0.000000e+00, ptr %41, align 8, !tbaa !9
  store i32 0, ptr %48, align 4, !tbaa !5
  store i32 0, ptr %49, align 4, !tbaa !5
  store i32 0, ptr %47, align 4, !tbaa !5
  %75 = icmp ne i32 %60, 0
  br i1 %75, label %76, label %79

76:                                               ; preds = %67
  %77 = load double, ptr %5, align 8, !tbaa !9
  store double %77, ptr %39, align 8, !tbaa !9
  %78 = load double, ptr %6, align 8, !tbaa !9
  store double %78, ptr %41, align 8, !tbaa !9
  br label %83

79:                                               ; preds = %67
  %.not = icmp eq i32 %61, 0
  br i1 %.not, label %83, label %80

80:                                               ; preds = %79
  %81 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %81, ptr %48, align 4, !tbaa !5
  %82 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %82, ptr %49, align 4, !tbaa !5
  br label %83

83:                                               ; preds = %79, %80, %76
  %84 = phi i32 [ 0, %79 ], [ %82, %80 ], [ 0, %76 ]
  %85 = phi i32 [ 0, %79 ], [ %81, %80 ], [ 0, %76 ]
  %86 = phi double [ 0.000000e+00, %79 ], [ 0.000000e+00, %80 ], [ %77, %76 ]
  %87 = phi double [ 0.000000e+00, %79 ], [ 0.000000e+00, %80 ], [ %78, %76 ]
  store i32 0, ptr %20, align 4, !tbaa !5
  br i1 %71, label %90, label %88

88:                                               ; preds = %83
  %89 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %.not457 = icmp eq i32 %89, 0
  br i1 %.not457, label %.sink.split, label %90

90:                                               ; preds = %88, %83
  %91 = or i32 %60, %59
  %or.cond = icmp ne i32 %91, 0
  %92 = icmp ne i32 %61, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %92
  br i1 %or.cond3, label %93, label %.sink.split

93:                                               ; preds = %90
  %94 = load i32, ptr %2, align 4, !tbaa !5
  %95 = icmp slt i32 %94, 0
  br i1 %95, label %.sink.split, label %96

96:                                               ; preds = %93
  %.not458 = icmp ne i32 %94, 0
  %or.cond474.not = and i1 %75, %.not458
  %97 = fcmp ole double %87, %86
  %or.cond581.not = select i1 %or.cond474.not, i1 %97, i1 false
  br i1 %or.cond581.not, label %.sink.split, label %98

98:                                               ; preds = %96
  br i1 %92, label %99, label %.critedge

99:                                               ; preds = %98
  %100 = icmp slt i32 %85, 1
  %101 = icmp ugt i32 %85, %94
  %or.cond493 = or i1 %100, %101
  br i1 %or.cond493, label %.sink.split, label %102

102:                                              ; preds = %99
  %103 = icmp slt i32 %84, %85
  %104 = icmp ugt i32 %84, %94
  %or.cond494 = or i1 %103, %104
  br i1 %or.cond494, label %.sink.split, label %.critedge

.critedge:                                        ; preds = %102, %98
  %105 = load i32, ptr %12, align 4, !tbaa !5
  %106 = icmp slt i32 %105, 1
  %107 = icmp ult i32 %105, %94
  %or.cond495 = and i1 %71, %107
  %or.cond496 = or i1 %106, %or.cond495
  br i1 %or.cond496, label %.sink.split, label %108

108:                                              ; preds = %.critedge
  %109 = load i32, ptr %17, align 4, !tbaa !5
  %110 = icmp sge i32 %109, %.0437
  %or.cond5 = select i1 %110, i1 true, i1 %68
  br i1 %or.cond5, label %111, label %.sink.split

111:                                              ; preds = %108
  %112 = load i32, ptr %19, align 4, !tbaa !5
  %113 = icmp sge i32 %112, %.0426
  %or.cond7 = select i1 %113, i1 true, i1 %68
  br i1 %or.cond7, label %114, label %.sink.split

.sink.split:                                      ; preds = %111, %108, %.critedge, %102, %99, %96, %93, %90, %88
  %.sink = phi i32 [ -1, %88 ], [ -2, %90 ], [ -3, %93 ], [ -7, %96 ], [ -8, %99 ], [ -9, %102 ], [ -13, %.critedge ], [ -17, %108 ], [ -19, %111 ]
  store i32 %.sink, ptr %20, align 4, !tbaa !5
  br label %114

114:                                              ; preds = %.sink.split, %111
  %115 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #5
  store double %115, ptr %40, align 8, !tbaa !9
  %116 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #5
  %117 = fdiv double %115, %116
  %118 = fdiv double 1.000000e+00, %117
  %119 = tail call double @sqrt(double noundef %117) #5
  %120 = tail call double @sqrt(double noundef %118) #5
  store double %120, ptr %25, align 8, !tbaa !9
  %121 = tail call double @sqrt(double noundef %115) #5
  %122 = tail call double @sqrt(double noundef %121) #5
  %123 = fdiv double 1.000000e+00, %122
  %124 = fcmp ole double %120, %123
  %125 = select i1 %124, double %120, double %123
  %126 = load i32, ptr %20, align 4, !tbaa !5
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %.thread483

128:                                              ; preds = %114
  %129 = sitofp i32 %.0437 to double
  store double %129, ptr %16, align 8, !tbaa !9
  store i32 %.0426, ptr %18, align 4, !tbaa !5
  %130 = icmp ne i32 %59, 0
  %or.cond9 = select i1 %71, i1 %130, i1 false
  br i1 %or.cond9, label %131, label %133

131:                                              ; preds = %128
  %132 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %132, ptr %45, align 4, !tbaa !5
  br label %141

133:                                              ; preds = %128
  %or.cond11 = and i1 %71, %75
  br i1 %or.cond11, label %134, label %135

134:                                              ; preds = %133
  call void @dlarrc_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef %5, ptr noundef %6, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %40, ptr noundef nonnull %45, ptr noundef nonnull %26, ptr noundef nonnull %28, ptr noundef nonnull %20) #5
  br label %141

135:                                              ; preds = %133
  %136 = icmp ne i32 %61, 0
  %or.cond13 = select i1 %71, i1 %136, i1 false
  br i1 %or.cond13, label %137, label %140

137:                                              ; preds = %135
  %138 = add i32 %84, 1
  %139 = sub i32 %138, %85
  store i32 %139, ptr %45, align 4, !tbaa !5
  br label %141

140:                                              ; preds = %135
  store i32 0, ptr %45, align 4, !tbaa !5
  br label %141

141:                                              ; preds = %134, %140, %137, %131
  br i1 %70, label %142, label %147

142:                                              ; preds = %141
  %143 = load i32, ptr %20, align 4, !tbaa !5
  %144 = icmp eq i32 %143, 0
  br i1 %144, label %.thread570, label %.thread483

.thread570:                                       ; preds = %142
  %145 = load i32, ptr %45, align 4, !tbaa !5
  %146 = sitofp i32 %145 to double
  store double %146, ptr %11, align 8, !tbaa !9
  br label %553

147:                                              ; preds = %141
  %148 = load i32, ptr %13, align 4, !tbaa !5
  %149 = load i32, ptr %45, align 4, !tbaa !5
  %.not567 = icmp slt i32 %148, %149
  br i1 %.not567, label %150, label %151

150:                                              ; preds = %147
  store i32 -14, ptr %20, align 4, !tbaa !5
  br label %.thread483

151:                                              ; preds = %147
  %.pr.pre = load i32, ptr %20, align 4, !tbaa !5
  %.not459 = icmp eq i32 %.pr.pre, 0
  br i1 %.not459, label %155, label %.thread483

.thread483:                                       ; preds = %142, %114, %150, %151
  %152 = phi i32 [ %.pr.pre, %151 ], [ %126, %114 ], [ -14, %150 ], [ %143, %142 ]
  %153 = sub nsw i32 0, %152
  store i32 %153, ptr %24, align 4, !tbaa !5
  %154 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %24, i32 noundef 6) #5
  br label %553

155:                                              ; preds = %151
  %or.cond17 = select i1 %68, i1 true, i1 %70
  br i1 %or.cond17, label %553, label %156

156:                                              ; preds = %155
  store i32 0, ptr %9, align 4, !tbaa !5
  %157 = load i32, ptr %2, align 4, !tbaa !5
  switch i32 %157, label %275 [
    i32 0, label %553
    i32 1, label %158
    i32 2, label %173
  ]

158:                                              ; preds = %156
  %159 = icmp ne i32 %61, 0
  %or.cond19 = select i1 %130, i1 true, i1 %159
  br i1 %or.cond19, label %160, label %162

160:                                              ; preds = %158
  store i32 1, ptr %9, align 4, !tbaa !5
  %161 = load double, ptr %3, align 8, !tbaa !9
  br label %.sink.split582

162:                                              ; preds = %158
  %163 = load double, ptr %39, align 8, !tbaa !9
  %164 = load double, ptr %3, align 8, !tbaa !9
  %165 = fcmp uge double %163, %164
  %166 = load double, ptr %41, align 8
  %167 = fcmp ult double %166, %164
  %or.cond476 = select i1 %165, i1 true, i1 %167
  br i1 %or.cond476, label %169, label %168

168:                                              ; preds = %162
  store i32 1, ptr %9, align 4, !tbaa !5
  br label %.sink.split582

.sink.split582:                                   ; preds = %160, %168
  %.sink583 = phi double [ %164, %168 ], [ %161, %160 ]
  store double %.sink583, ptr %10, align 8, !tbaa !9
  br label %169

169:                                              ; preds = %.sink.split582, %162
  %170 = icmp eq i32 %58, 0
  br i1 %170, label %553, label %171

171:                                              ; preds = %169
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  store i32 1, ptr %14, align 4, !tbaa !5
  %172 = getelementptr inbounds i8, ptr %14, i64 4
  store i32 1, ptr %172, align 4, !tbaa !5
  br label %553

173:                                              ; preds = %156
  %174 = getelementptr inbounds i8, ptr %3, i64 8
  br i1 %71, label %176, label %175

175:                                              ; preds = %173
  call void @dlae2_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull %174, ptr noundef nonnull %34, ptr noundef nonnull %35) #5
  br label %177

176:                                              ; preds = %173
  call void @dlaev2_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull %174, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull %36, ptr noundef nonnull %38) #5
  br label %177

177:                                              ; preds = %176, %175
  %.not468 = icmp eq i32 %59, 0
  br i1 %.not468, label %178, label %189

178:                                              ; preds = %177
  br i1 %75, label %179, label %185

179:                                              ; preds = %178
  %180 = load double, ptr %35, align 8, !tbaa !9
  %181 = load double, ptr %39, align 8, !tbaa !9
  %182 = fcmp ule double %180, %181
  %183 = load double, ptr %41, align 8
  %184 = fcmp ugt double %180, %183
  %or.cond478 = select i1 %182, i1 true, i1 %184
  br i1 %or.cond478, label %185, label %189

185:                                              ; preds = %179, %178
  %186 = icmp ne i32 %61, 0
  %187 = load i32, ptr %48, align 4
  %188 = icmp eq i32 %187, 1
  %or.cond25 = select i1 %186, i1 %188, i1 false
  br i1 %or.cond25, label %189, label %.thread485

189:                                              ; preds = %179, %185, %177
  %190 = load i32, ptr %9, align 4, !tbaa !5
  %191 = add nsw i32 %190, 1
  store i32 %191, ptr %9, align 4, !tbaa !5
  %192 = load double, ptr %35, align 8, !tbaa !9
  %193 = sext i32 %191 to i64
  %194 = getelementptr inbounds double, ptr %51, i64 %193
  store double %192, ptr %194, align 8, !tbaa !9
  %195 = icmp eq i32 %58, 0
  br i1 %195, label %227, label %196

196:                                              ; preds = %189
  %197 = load double, ptr %38, align 8, !tbaa !9
  %198 = fneg double %197
  %199 = mul nsw i32 %191, %52
  %200 = sext i32 %199 to i64
  %201 = getelementptr double, ptr %54, i64 %200
  %202 = getelementptr i8, ptr %201, i64 8
  store double %198, ptr %202, align 8, !tbaa !9
  %203 = load double, ptr %36, align 8, !tbaa !9
  %204 = getelementptr i8, ptr %201, i64 16
  store double %203, ptr %204, align 8, !tbaa !9
  %205 = fcmp une double %197, 0.000000e+00
  br i1 %205, label %206, label %218

206:                                              ; preds = %196
  %207 = fcmp une double %203, 0.000000e+00
  %208 = shl i32 %191, 1
  %209 = sext i32 %208 to i64
  %210 = getelementptr i32, ptr %55, i64 %209
  %211 = getelementptr i8, ptr %210, i64 -4
  store i32 1, ptr %211, align 4, !tbaa !5
  %212 = load i32, ptr %9, align 4, !tbaa !5
  %213 = shl nsw i32 %212, 1
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds i32, ptr %55, i64 %214
  br i1 %207, label %216, label %217

216:                                              ; preds = %206
  store i32 2, ptr %215, align 4, !tbaa !5
  br label %227

217:                                              ; preds = %206
  store i32 1, ptr %215, align 4, !tbaa !5
  br label %227

218:                                              ; preds = %196
  %219 = shl i32 %191, 1
  %220 = sext i32 %219 to i64
  %221 = getelementptr i32, ptr %55, i64 %220
  %222 = getelementptr i8, ptr %221, i64 -4
  store i32 2, ptr %222, align 4, !tbaa !5
  %223 = load i32, ptr %9, align 4, !tbaa !5
  %224 = shl nsw i32 %223, 1
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds i32, ptr %55, i64 %225
  store i32 2, ptr %226, align 4, !tbaa !5
  br label %227

227:                                              ; preds = %189, %216, %217, %218
  br i1 %.not468, label %.thread485, label %238

.thread485:                                       ; preds = %185, %227
  br i1 %75, label %228, label %234

228:                                              ; preds = %.thread485
  %229 = load double, ptr %34, align 8, !tbaa !9
  %230 = load double, ptr %39, align 8, !tbaa !9
  %231 = fcmp ule double %229, %230
  %232 = load double, ptr %41, align 8
  %233 = fcmp ugt double %229, %232
  %or.cond480 = select i1 %231, i1 true, i1 %233
  br i1 %or.cond480, label %234, label %238

234:                                              ; preds = %228, %.thread485
  %235 = icmp ne i32 %61, 0
  %236 = load i32, ptr %49, align 4
  %237 = icmp eq i32 %236, 2
  %or.cond29 = select i1 %235, i1 %237, i1 false
  br i1 %or.cond29, label %238, label %500

238:                                              ; preds = %228, %234, %227
  %239 = load i32, ptr %9, align 4, !tbaa !5
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %9, align 4, !tbaa !5
  %241 = load double, ptr %34, align 8, !tbaa !9
  %242 = sext i32 %240 to i64
  %243 = getelementptr inbounds double, ptr %51, i64 %242
  store double %241, ptr %243, align 8, !tbaa !9
  %244 = icmp eq i32 %58, 0
  br i1 %244, label %500, label %245

245:                                              ; preds = %238
  %246 = load double, ptr %36, align 8, !tbaa !9
  %247 = mul nsw i32 %240, %52
  %248 = sext i32 %247 to i64
  %249 = getelementptr double, ptr %54, i64 %248
  %250 = getelementptr i8, ptr %249, i64 8
  store double %246, ptr %250, align 8, !tbaa !9
  %251 = load double, ptr %38, align 8, !tbaa !9
  %252 = getelementptr i8, ptr %249, i64 16
  store double %251, ptr %252, align 8, !tbaa !9
  %253 = fcmp une double %251, 0.000000e+00
  br i1 %253, label %254, label %266

254:                                              ; preds = %245
  %255 = fcmp une double %246, 0.000000e+00
  %256 = shl i32 %240, 1
  %257 = sext i32 %256 to i64
  %258 = getelementptr i32, ptr %55, i64 %257
  %259 = getelementptr i8, ptr %258, i64 -4
  store i32 1, ptr %259, align 4, !tbaa !5
  %260 = load i32, ptr %9, align 4, !tbaa !5
  %261 = shl nsw i32 %260, 1
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds i32, ptr %55, i64 %262
  br i1 %255, label %264, label %265

264:                                              ; preds = %254
  store i32 2, ptr %263, align 4, !tbaa !5
  br label %500

265:                                              ; preds = %254
  store i32 1, ptr %263, align 4, !tbaa !5
  br label %500

266:                                              ; preds = %245
  %267 = shl i32 %240, 1
  %268 = sext i32 %267 to i64
  %269 = getelementptr i32, ptr %55, i64 %268
  %270 = getelementptr i8, ptr %269, i64 -4
  store i32 2, ptr %270, align 4, !tbaa !5
  %271 = load i32, ptr %9, align 4, !tbaa !5
  %272 = shl nsw i32 %271, 1
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds i32, ptr %55, i64 %273
  store i32 2, ptr %274, align 4, !tbaa !5
  br label %500

275:                                              ; preds = %156
  %276 = shl i32 %157, 1
  %277 = or disjoint i32 %276, 1
  %278 = mul nsw i32 %157, 3
  %279 = add nsw i32 %278, 1
  %280 = shl i32 %157, 2
  %281 = or disjoint i32 %280, 1
  %282 = mul i32 %157, 5
  %283 = mul nsw i32 %157, 6
  %284 = or disjoint i32 %283, 1
  %285 = add nsw i32 %157, 1
  store double 1.000000e+00, ptr %31, align 8, !tbaa !9
  %286 = call double @dlanst_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #5
  store double %286, ptr %27, align 8, !tbaa !9
  %287 = fcmp ogt double %286, 0.000000e+00
  %288 = fcmp olt double %286, %119
  %or.cond481 = select i1 %287, i1 %288, i1 false
  br i1 %or.cond481, label %289, label %291

289:                                              ; preds = %275
  %290 = fdiv double %119, %286
  store double %290, ptr %31, align 8, !tbaa !9
  br label %295

291:                                              ; preds = %275
  %292 = fcmp ogt double %286, %125
  br i1 %292, label %293, label %thread-pre-split486

293:                                              ; preds = %291
  %294 = fdiv double %125, %286
  store double %294, ptr %31, align 8, !tbaa !9
  br label %295

thread-pre-split486:                              ; preds = %291
  %.pr487 = load double, ptr %31, align 8, !tbaa !9
  br label %295

295:                                              ; preds = %thread-pre-split486, %293, %289
  %296 = phi double [ %.pr487, %thread-pre-split486 ], [ %294, %293 ], [ %290, %289 ]
  %297 = fcmp une double %296, 1.000000e+00
  br i1 %297, label %298, label %308

298:                                              ; preds = %295
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %31, ptr noundef %3, ptr noundef nonnull @c__1) #5
  %299 = load i32, ptr %2, align 4, !tbaa !5
  %300 = add nsw i32 %299, -1
  store i32 %300, ptr %24, align 4, !tbaa !5
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %301 = load double, ptr %31, align 8, !tbaa !9
  %302 = fmul double %301, %286
  store double %302, ptr %27, align 8, !tbaa !9
  br i1 %75, label %303, label %308

303:                                              ; preds = %298
  %304 = load double, ptr %39, align 8, !tbaa !9
  %305 = fmul double %301, %304
  store double %305, ptr %39, align 8, !tbaa !9
  %306 = load double, ptr %41, align 8, !tbaa !9
  %307 = fmul double %301, %306
  store double %307, ptr %41, align 8, !tbaa !9
  br label %308

308:                                              ; preds = %298, %303, %295
  %309 = load i32, ptr %15, align 4, !tbaa !5
  %.not460 = icmp eq i32 %309, 0
  br i1 %.not460, label %.thread489, label %310

.thread489:                                       ; preds = %308
  store i32 -1, ptr %32, align 4, !tbaa !5
  br label %.thread491

310:                                              ; preds = %308
  call void @dlarrr_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %32) #5
  %.pr488 = load i32, ptr %32, align 4, !tbaa !5
  %311 = icmp eq i32 %.pr488, 0
  br i1 %311, label %313, label %.thread491

.thread491:                                       ; preds = %310, %.thread489
  %312 = fneg double %116
  store double %312, ptr %43, align 8, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %317

313:                                              ; preds = %310
  store double %116, ptr %43, align 8, !tbaa !9
  %.pr490 = load i32, ptr %15, align 4, !tbaa !5
  %.not461 = icmp eq i32 %.pr490, 0
  br i1 %.not461, label %317, label %314

314:                                              ; preds = %313
  %315 = sext i32 %281 to i64
  %316 = getelementptr inbounds double, ptr %56, i64 %315
  call void @dcopy_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef nonnull %316, ptr noundef nonnull @c__1) #5
  br label %317

317:                                              ; preds = %.thread491, %314, %313
  %318 = load i32, ptr %2, align 4, !tbaa !5
  %319 = add nsw i32 %318, -1
  store i32 %319, ptr %24, align 4, !tbaa !5
  %.not462.not499 = icmp sgt i32 %318, 1
  br i1 %.not462.not499, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %317
  %wide.trip.count = zext nneg i32 %318 to i64
  %320 = add nsw i64 %wide.trip.count, -1
  %min.iters.check = icmp ult i32 %318, 19
  br i1 %min.iters.check, label %.lr.ph.preheader592, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph.preheader
  %321 = add nsw i64 %wide.trip.count, -2
  %322 = add i32 %282, 1
  %323 = trunc i64 %321 to i32
  %324 = add i32 %322, %323
  %325 = icmp slt i32 %324, %322
  %326 = icmp ugt i64 %321, 4294967295
  %327 = or i1 %325, %326
  br i1 %327, label %.lr.ph.preheader592, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %328 = add i32 %282, 1
  %329 = sext i32 %328 to i64
  %330 = shl nsw i64 %329, 3
  %331 = add i64 %330, %23
  %332 = add i64 %331, -8
  %333 = sub i64 %332, %22
  %diff.check = icmp ult i64 %333, 32
  br i1 %diff.check, label %.lr.ph.preheader592, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %320, -4
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %334 = trunc i64 %index to i32
  %335 = or disjoint i32 %334, 1
  %336 = getelementptr double, ptr %4, i64 %index
  %337 = getelementptr inbounds i8, ptr %336, i64 16
  %wide.load = load <2 x double>, ptr %336, align 8, !tbaa !9
  %wide.load589 = load <2 x double>, ptr %337, align 8, !tbaa !9
  %338 = fmul <2 x double> %wide.load, %wide.load
  %339 = fmul <2 x double> %wide.load589, %wide.load589
  %340 = add i32 %282, %335
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds double, ptr %56, i64 %341
  %343 = getelementptr inbounds i8, ptr %342, i64 16
  store <2 x double> %338, ptr %342, align 8, !tbaa !9
  store <2 x double> %339, ptr %343, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %344 = icmp eq i64 %index.next, %n.vec
  br i1 %344, label %middle.block, label %vector.body, !llvm.loop !11

middle.block:                                     ; preds = %vector.body
  %345 = extractelement <2 x double> %wide.load589, i64 1
  %cmp.n = icmp eq i64 %320, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader592

.lr.ph.preheader592:                              ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %346 = and i64 %wide.trip.count, 1
  %lcmp.mod.not.not = icmp eq i64 %346, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph.prol, label %.lr.ph.prol.loopexit

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader592
  %347 = getelementptr inbounds double, ptr %50, i64 %indvars.iv.ph
  %348 = load double, ptr %347, align 8, !tbaa !9
  %349 = fmul double %348, %348
  %350 = trunc nuw nsw i64 %indvars.iv.ph to i32
  %351 = add i32 %282, %350
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds double, ptr %56, i64 %352
  store double %349, ptr %353, align 8, !tbaa !9
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader592
  %.lcssa593.unr = phi double [ poison, %.lr.ph.preheader592 ], [ %348, %.lr.ph.prol ]
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader592 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %354 = add nsw i64 %wide.trip.count, -1
  %355 = icmp eq i64 %indvars.iv.ph, %354
  br i1 %355, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %356 = getelementptr inbounds double, ptr %50, i64 %indvars.iv
  %357 = load double, ptr %356, align 8, !tbaa !9
  %358 = fmul double %357, %357
  %359 = trunc nuw nsw i64 %indvars.iv to i32
  %360 = add i32 %282, %359
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %56, i64 %361
  store double %358, ptr %362, align 8, !tbaa !9
  %363 = getelementptr double, ptr %4, i64 %indvars.iv
  %364 = load double, ptr %363, align 8, !tbaa !9
  %365 = fmul double %364, %364
  %366 = trunc i64 %indvars.iv to i32
  %367 = add i32 %366, 1
  %368 = add i32 %282, %367
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %56, i64 %369
  store double %365, ptr %370, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !15

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block, %317
  %.lcssa = phi double [ %120, %317 ], [ %345, %middle.block ], [ %.lcssa593.unr, %.lr.ph.prol.loopexit ], [ %364, %.lr.ph ]
  store double %.lcssa, ptr %25, align 8, !tbaa !9
  br i1 %71, label %373, label %371

371:                                              ; preds = %._crit_edge
  %372 = fmul double %116, 4.000000e+00
  store double %372, ptr %29, align 8, !tbaa !9
  br label %380

373:                                              ; preds = %._crit_edge
  %374 = call double @sqrt(double noundef %116) #5
  store double %374, ptr %29, align 8, !tbaa !9
  %375 = call double @sqrt(double noundef %116) #5
  %376 = fmul double %375, 5.000000e-03
  store double %376, ptr %25, align 8, !tbaa !9
  %377 = fmul double %116, 4.000000e+00
  %378 = fcmp oge double %376, %377
  %379 = select i1 %378, double %376, double %377
  br label %380

380:                                              ; preds = %373, %371
  %storemerge = phi double [ %372, %371 ], [ %379, %373 ]
  store double %storemerge, ptr %30, align 8, !tbaa !9
  %381 = sext i32 %282 to i64
  %382 = getelementptr double, ptr %56, i64 %381
  %383 = getelementptr i8, ptr %382, i64 8
  %384 = sext i32 %277 to i64
  %385 = getelementptr inbounds double, ptr %56, i64 %384
  %386 = sext i32 %279 to i64
  %387 = getelementptr inbounds double, ptr %56, i64 %386
  %388 = sext i32 %285 to i64
  %389 = getelementptr inbounds i32, ptr %57, i64 %388
  %390 = getelementptr inbounds i32, ptr %57, i64 %384
  %391 = sext i32 %284 to i64
  %392 = getelementptr inbounds double, ptr %56, i64 %391
  %393 = getelementptr inbounds i32, ptr %57, i64 %386
  call void @dlarre_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %39, ptr noundef nonnull %41, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %383, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %43, ptr noundef nonnull %47, ptr noundef nonnull %18, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %385, ptr noundef nonnull %387, ptr noundef nonnull %389, ptr noundef nonnull %390, ptr noundef nonnull %16, ptr noundef nonnull %46, ptr noundef nonnull %392, ptr noundef nonnull %393, ptr noundef nonnull %32) #5
  %394 = load i32, ptr %32, align 4
  %.not463 = icmp eq i32 %394, 0
  br i1 %.not463, label %398, label %395

395:                                              ; preds = %380
  %396 = call i32 @llvm.abs.i32(i32 %394, i1 true)
  %397 = add nuw nsw i32 %396, 10
  store i32 %397, ptr %20, align 4, !tbaa !5
  br label %553

398:                                              ; preds = %380
  br i1 %71, label %399, label %404

399:                                              ; preds = %398
  call void @dlarrv_(ptr noundef nonnull %2, ptr noundef nonnull %39, ptr noundef nonnull %41, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %46, ptr noundef nonnull %18, ptr noundef nonnull %9, ptr noundef nonnull @c__1, ptr noundef nonnull %9, ptr noundef nonnull @c_b18, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef %10, ptr noundef nonnull %385, ptr noundef nonnull %387, ptr noundef nonnull %389, ptr noundef nonnull %390, ptr noundef nonnull %16, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %14, ptr noundef nonnull %392, ptr noundef nonnull %393, ptr noundef nonnull %32) #5
  %400 = load i32, ptr %32, align 4
  %.not465 = icmp eq i32 %400, 0
  br i1 %.not465, label %.loopexit498, label %401

401:                                              ; preds = %399
  %402 = call i32 @llvm.abs.i32(i32 %400, i1 true)
  %403 = add nuw nsw i32 %402, 20
  store i32 %403, ptr %20, align 4, !tbaa !5
  br label %553

404:                                              ; preds = %398
  %405 = load i32, ptr %9, align 4, !tbaa !5
  store i32 %405, ptr %24, align 4, !tbaa !5
  %.not464501 = icmp slt i32 %405, 1
  br i1 %.not464501, label %.loopexit498, label %.lr.ph504.preheader

.lr.ph504.preheader:                              ; preds = %404
  %406 = zext nneg i32 %405 to i64
  %xtraiter594 = and i64 %406, 1
  %407 = icmp eq i32 %405, 1
  br i1 %407, label %..loopexit498_crit_edge.unr-lcssa, label %.lr.ph504.preheader.new

.lr.ph504.preheader.new:                          ; preds = %.lr.ph504.preheader
  %unroll_iter = and i64 %406, 2147483646
  br label %.lr.ph504

.lr.ph504:                                        ; preds = %.lr.ph504, %.lr.ph504.preheader.new
  %indvars.iv544 = phi i64 [ 1, %.lr.ph504.preheader.new ], [ %indvars.iv.next545.1, %.lr.ph504 ]
  %niter = phi i64 [ 0, %.lr.ph504.preheader.new ], [ %niter.next.1, %.lr.ph504 ]
  %408 = trunc nuw nsw i64 %indvars.iv544 to i32
  %409 = add i32 %157, %408
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds i32, ptr %57, i64 %410
  %412 = load i32, ptr %411, align 4, !tbaa !5
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds i32, ptr %57, i64 %413
  %415 = load i32, ptr %414, align 4, !tbaa !5
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %50, i64 %416
  %418 = load double, ptr %417, align 8, !tbaa !9
  %419 = getelementptr inbounds double, ptr %51, i64 %indvars.iv544
  %420 = load double, ptr %419, align 8, !tbaa !9
  %421 = fadd double %418, %420
  store double %421, ptr %419, align 8, !tbaa !9
  %422 = trunc i64 %indvars.iv544 to i32
  %423 = add i32 %422, 1
  %424 = add i32 %157, %423
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds i32, ptr %57, i64 %425
  %427 = load i32, ptr %426, align 4, !tbaa !5
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds i32, ptr %57, i64 %428
  %430 = load i32, ptr %429, align 4, !tbaa !5
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds double, ptr %50, i64 %431
  %433 = load double, ptr %432, align 8, !tbaa !9
  %434 = getelementptr double, ptr %10, i64 %indvars.iv544
  %435 = load double, ptr %434, align 8, !tbaa !9
  %436 = fadd double %433, %435
  store double %436, ptr %434, align 8, !tbaa !9
  %indvars.iv.next545.1 = add nuw nsw i64 %indvars.iv544, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %..loopexit498_crit_edge.unr-lcssa, label %.lr.ph504, !llvm.loop !16

..loopexit498_crit_edge.unr-lcssa:                ; preds = %.lr.ph504, %.lr.ph504.preheader
  %.lcssa591.ph = phi i32 [ poison, %.lr.ph504.preheader ], [ %427, %.lr.ph504 ]
  %indvars.iv544.unr = phi i64 [ 1, %.lr.ph504.preheader ], [ %indvars.iv.next545.1, %.lr.ph504 ]
  %lcmp.mod595.not = icmp eq i64 %xtraiter594, 0
  br i1 %lcmp.mod595.not, label %..loopexit498_crit_edge, label %.lr.ph504.epil

.lr.ph504.epil:                                   ; preds = %..loopexit498_crit_edge.unr-lcssa
  %437 = trunc nuw nsw i64 %indvars.iv544.unr to i32
  %438 = add i32 %157, %437
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds i32, ptr %57, i64 %439
  %441 = load i32, ptr %440, align 4, !tbaa !5
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds i32, ptr %57, i64 %442
  %444 = load i32, ptr %443, align 4, !tbaa !5
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds double, ptr %50, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !9
  %448 = getelementptr inbounds double, ptr %51, i64 %indvars.iv544.unr
  %449 = load double, ptr %448, align 8, !tbaa !9
  %450 = fadd double %447, %449
  store double %450, ptr %448, align 8, !tbaa !9
  br label %..loopexit498_crit_edge

..loopexit498_crit_edge:                          ; preds = %..loopexit498_crit_edge.unr-lcssa, %.lr.ph504.epil
  %.lcssa591 = phi i32 [ %.lcssa591.ph, %..loopexit498_crit_edge.unr-lcssa ], [ %441, %.lr.ph504.epil ]
  store i32 %.lcssa591, ptr %26, align 4, !tbaa !5
  br label %.loopexit498

.loopexit498:                                     ; preds = %404, %..loopexit498_crit_edge, %399
  %451 = load i32, ptr %15, align 4, !tbaa !5
  %.not466 = icmp eq i32 %451, 0
  br i1 %.not466, label %.loopexit497, label %452

452:                                              ; preds = %.loopexit498
  %453 = load i32, ptr %9, align 4, !tbaa !5
  %454 = add i32 %453, %157
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds i32, ptr %57, i64 %455
  %457 = load i32, ptr %456, align 4, !tbaa !5
  store i32 %457, ptr %24, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %18, i64 -8
  %invariant.gep513 = getelementptr i8, ptr %16, i64 -16
  %.not467515 = icmp slt i32 %457, 1
  br i1 %.not467515, label %.loopexit497, label %.lr.ph520

.lr.ph520:                                        ; preds = %452
  %458 = fmul double %116, 4.000000e+00
  %invariant.gep579 = getelementptr i32, ptr %57, i64 %388
  br label %459

459:                                              ; preds = %.lr.ph520, %493
  %460 = phi i32 [ %457, %.lr.ph520 ], [ %494, %493 ]
  %indvars.iv552 = phi i64 [ 1, %.lr.ph520 ], [ %indvars.iv.next553, %493 ]
  %.0429517 = phi i32 [ 1, %.lr.ph520 ], [ %.1430, %493 ]
  %.0435516 = phi i32 [ 1, %.lr.ph520 ], [ %.1436, %493 ]
  %indvars.iv.next553 = add nuw nsw i64 %indvars.iv552, 1
  %461 = getelementptr inbounds i32, ptr %57, i64 %indvars.iv552
  %462 = load i32, ptr %461, align 4, !tbaa !5
  %reass.sub = sub i32 %462, %.0435516
  %463 = add i32 %reass.sub, 1
  store i32 %463, ptr %37, align 4, !tbaa !5
  %464 = add i32 %.0429517, -1
  %465 = load i32, ptr %9, align 4, !tbaa !5
  %.not540 = icmp sgt i32 %.0429517, %465
  br i1 %.not540, label %._crit_edge509, label %.lr.ph508.preheader

.lr.ph508.preheader:                              ; preds = %459
  %466 = sext i32 %464 to i64
  %467 = sext i32 %465 to i64
  br label %.lr.ph508

.lr.ph508:                                        ; preds = %.lr.ph508.preheader, %471
  %indvars.iv549 = phi i64 [ %466, %.lr.ph508.preheader ], [ %indvars.iv.next550, %471 ]
  %gep580 = getelementptr i32, ptr %invariant.gep579, i64 %indvars.iv549
  %468 = load i32, ptr %gep580, align 4, !tbaa !5
  %469 = zext i32 %468 to i64
  %470 = icmp eq i64 %indvars.iv552, %469
  br i1 %470, label %471, label %._crit_edge509.loopexit.split.loop.exit

471:                                              ; preds = %.lr.ph508
  %indvars.iv.next550 = add nsw i64 %indvars.iv549, 1
  %472 = icmp slt i64 %indvars.iv.next550, %467
  br i1 %472, label %.lr.ph508, label %._crit_edge509

._crit_edge509.loopexit.split.loop.exit:          ; preds = %.lr.ph508
  %473 = trunc nsw i64 %indvars.iv549 to i32
  br label %._crit_edge509

._crit_edge509:                                   ; preds = %471, %._crit_edge509.loopexit.split.loop.exit, %459
  %.0428.lcssa = phi i32 [ %464, %459 ], [ %473, %._crit_edge509.loopexit.split.loop.exit ], [ %465, %471 ]
  %474 = icmp slt i32 %.0428.lcssa, %.0429517
  br i1 %474, label %493, label %475

475:                                              ; preds = %._crit_edge509
  %476 = add i32 %276, %.0429517
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds i32, ptr %57, i64 %477
  %479 = load i32, ptr %478, align 4, !tbaa !5
  %480 = add nsw i32 %479, -1
  store i32 %480, ptr %42, align 4, !tbaa !5
  store i32 %479, ptr %44, align 4, !tbaa !5
  %481 = add nsw i32 %.0428.lcssa, %277
  %482 = sext i32 %481 to i64
  %gep = getelementptr i32, ptr %invariant.gep, i64 %482
  %483 = load i32, ptr %gep, align 4, !tbaa !5
  store i32 %483, ptr %33, align 4, !tbaa !5
  store double %458, ptr %30, align 8, !tbaa !9
  %484 = add nsw i32 %.0435516, %281
  %485 = sext i32 %484 to i64
  %gep514 = getelementptr double, ptr %invariant.gep513, i64 %485
  %486 = add i32 %.0435516, %282
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds double, ptr %56, i64 %487
  %489 = zext nneg i32 %.0429517 to i64
  %490 = getelementptr inbounds double, ptr %51, i64 %489
  %491 = getelementptr inbounds double, ptr %56, i64 %477
  call void @dlarrj_(ptr noundef nonnull %37, ptr noundef %gep514, ptr noundef nonnull %488, ptr noundef nonnull %44, ptr noundef nonnull %33, ptr noundef nonnull %30, ptr noundef nonnull %42, ptr noundef nonnull %490, ptr noundef nonnull %491, ptr noundef nonnull %392, ptr noundef nonnull %393, ptr noundef nonnull %46, ptr noundef nonnull %27, ptr noundef nonnull %32) #5
  %492 = add nuw nsw i32 %.0428.lcssa, 1
  %.pre = load i32, ptr %24, align 4, !tbaa !5
  br label %493

493:                                              ; preds = %._crit_edge509, %475
  %494 = phi i32 [ %.pre, %475 ], [ %460, %._crit_edge509 ]
  %.1430 = phi i32 [ %492, %475 ], [ %.0429517, %._crit_edge509 ]
  %.1436 = add nsw i32 %462, 1
  %495 = sext i32 %494 to i64
  %.not467.not = icmp slt i64 %indvars.iv552, %495
  br i1 %.not467.not, label %459, label %.loopexit497, !llvm.loop !17

.loopexit497:                                     ; preds = %493, %452, %.loopexit498
  %496 = load double, ptr %31, align 8, !tbaa !9
  %497 = fcmp une double %496, 1.000000e+00
  br i1 %497, label %498, label %500

498:                                              ; preds = %.loopexit497
  %499 = fdiv double 1.000000e+00, %496
  store double %499, ptr %25, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %9, ptr noundef nonnull %25, ptr noundef %10, ptr noundef nonnull @c__1) #5
  br label %500

500:                                              ; preds = %.loopexit497, %498, %234, %266, %265, %264, %238
  %501 = load i32, ptr %47, align 4, !tbaa !5
  %502 = icmp sgt i32 %501, 1
  br i1 %502, label %506, label %503

503:                                              ; preds = %500
  %504 = load i32, ptr %2, align 4, !tbaa !5
  %505 = icmp eq i32 %504, 2
  br i1 %505, label %506, label %.loopexit

506:                                              ; preds = %503, %500
  br i1 %71, label %510, label %507

507:                                              ; preds = %506
  call void @dlasrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %32) #5
  %508 = load i32, ptr %32, align 4, !tbaa !5
  %.not469 = icmp eq i32 %508, 0
  br i1 %.not469, label %.loopexit, label %509

509:                                              ; preds = %507
  store i32 3, ptr %20, align 4, !tbaa !5
  br label %553

510:                                              ; preds = %506
  %511 = load i32, ptr %9, align 4, !tbaa !5
  %512 = add nsw i32 %511, -1
  store i32 %512, ptr %24, align 4, !tbaa !5
  %invariant.gep530 = getelementptr i8, ptr %54, i64 8
  %invariant.gep534 = getelementptr i8, ptr %14, i64 -8
  %.not470536 = icmp slt i32 %511, 2
  br i1 %.not470536, label %.loopexit, label %.lr.ph539.preheader

.lr.ph539.preheader:                              ; preds = %510
  %513 = sext i32 %52 to i64
  br label %.lr.ph539

.lr.ph539:                                        ; preds = %.lr.ph539.preheader, %._crit_edge527.thread
  %indvar = phi i32 [ 0, %.lr.ph539.preheader ], [ %indvar.next, %._crit_edge527.thread ]
  %514 = phi i32 [ %512, %.lr.ph539.preheader ], [ %551, %._crit_edge527.thread ]
  %indvars.iv561 = phi i64 [ 1, %.lr.ph539.preheader ], [ %indvars.iv.next562, %._crit_edge527.thread ]
  %indvars.iv555 = phi i64 [ 2, %.lr.ph539.preheader ], [ %indvars.iv.next556, %._crit_edge527.thread ]
  %515 = getelementptr inbounds double, ptr %51, i64 %indvars.iv561
  %516 = load double, ptr %515, align 8, !tbaa !9
  %517 = load i32, ptr %9, align 4, !tbaa !5
  %indvars.iv.next562 = add nuw nsw i64 %indvars.iv561, 1
  %518 = sext i32 %517 to i64
  %.not471521.not = icmp slt i64 %indvars.iv561, %518
  br i1 %.not471521.not, label %.lr.ph526.preheader, label %._crit_edge527.thread

.lr.ph526.preheader:                              ; preds = %.lr.ph539
  %519 = xor i32 %indvar, -1
  %520 = add i32 %517, %519
  %reass.sub603 = sub i32 %517, %indvar
  %xtraiter597 = and i32 %520, 1
  %521 = icmp eq i32 %reass.sub603, 2
  br i1 %521, label %._crit_edge527.unr-lcssa, label %.lr.ph526.preheader.new

.lr.ph526.preheader.new:                          ; preds = %.lr.ph526.preheader
  %unroll_iter601 = and i32 %520, -2
  br label %.lr.ph526

.lr.ph526:                                        ; preds = %.lr.ph526, %.lr.ph526.preheader.new
  %indvars.iv557 = phi i64 [ %indvars.iv555, %.lr.ph526.preheader.new ], [ %indvars.iv.next558.1, %.lr.ph526 ]
  %.0524 = phi double [ %516, %.lr.ph526.preheader.new ], [ %.1.1, %.lr.ph526 ]
  %.0431523 = phi i32 [ 0, %.lr.ph526.preheader.new ], [ %.1432.1, %.lr.ph526 ]
  %niter602 = phi i32 [ 0, %.lr.ph526.preheader.new ], [ %niter602.next.1, %.lr.ph526 ]
  %522 = getelementptr inbounds double, ptr %51, i64 %indvars.iv557
  %523 = load double, ptr %522, align 8, !tbaa !9
  %524 = fcmp olt double %523, %.0524
  %525 = trunc nuw i64 %indvars.iv557 to i32
  %.1432 = select i1 %524, i32 %525, i32 %.0431523
  %.1 = select i1 %524, double %523, double %.0524
  %526 = getelementptr double, ptr %10, i64 %indvars.iv557
  %527 = load double, ptr %526, align 8, !tbaa !9
  %528 = fcmp olt double %527, %.1
  %529 = trunc i64 %indvars.iv557 to i32
  %530 = add i32 %529, 1
  %.1432.1 = select i1 %528, i32 %530, i32 %.1432
  %.1.1 = select i1 %528, double %527, double %.1
  %indvars.iv.next558.1 = add nuw nsw i64 %indvars.iv557, 2
  %niter602.next.1 = add i32 %niter602, 2
  %niter602.ncmp.1 = icmp eq i32 %niter602.next.1, %unroll_iter601
  br i1 %niter602.ncmp.1, label %._crit_edge527.unr-lcssa, label %.lr.ph526, !llvm.loop !18

._crit_edge527.unr-lcssa:                         ; preds = %.lr.ph526, %.lr.ph526.preheader
  %.1432.lcssa.ph = phi i32 [ poison, %.lr.ph526.preheader ], [ %.1432.1, %.lr.ph526 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph526.preheader ], [ %.1.1, %.lr.ph526 ]
  %indvars.iv557.unr = phi i64 [ %indvars.iv555, %.lr.ph526.preheader ], [ %indvars.iv.next558.1, %.lr.ph526 ]
  %.0524.unr = phi double [ %516, %.lr.ph526.preheader ], [ %.1.1, %.lr.ph526 ]
  %.0431523.unr = phi i32 [ 0, %.lr.ph526.preheader ], [ %.1432.1, %.lr.ph526 ]
  %lcmp.mod598.not = icmp eq i32 %xtraiter597, 0
  br i1 %lcmp.mod598.not, label %._crit_edge527, label %.lr.ph526.epil

.lr.ph526.epil:                                   ; preds = %._crit_edge527.unr-lcssa
  %531 = getelementptr inbounds double, ptr %51, i64 %indvars.iv557.unr
  %532 = load double, ptr %531, align 8, !tbaa !9
  %533 = fcmp olt double %532, %.0524.unr
  %534 = trunc nuw i64 %indvars.iv557.unr to i32
  %.1432.epil = select i1 %533, i32 %534, i32 %.0431523.unr
  %.1.epil = select i1 %533, double %532, double %.0524.unr
  br label %._crit_edge527

._crit_edge527:                                   ; preds = %._crit_edge527.unr-lcssa, %.lr.ph526.epil
  %.1432.lcssa = phi i32 [ %.1432.lcssa.ph, %._crit_edge527.unr-lcssa ], [ %.1432.epil, %.lr.ph526.epil ]
  %.1.lcssa = phi double [ %.1.lcssa.ph, %._crit_edge527.unr-lcssa ], [ %.1.epil, %.lr.ph526.epil ]
  %.not472 = icmp eq i32 %.1432.lcssa, 0
  br i1 %.not472, label %._crit_edge527.thread, label %535

535:                                              ; preds = %._crit_edge527
  %536 = sext i32 %.1432.lcssa to i64
  %537 = getelementptr inbounds double, ptr %51, i64 %536
  store double %516, ptr %537, align 8, !tbaa !9
  store double %.1.lcssa, ptr %515, align 8, !tbaa !9
  %538 = mul nsw i32 %.1432.lcssa, %52
  %539 = sext i32 %538 to i64
  %gep531 = getelementptr double, ptr %invariant.gep530, i64 %539
  %540 = mul nsw i64 %indvars.iv561, %513
  %gep533 = getelementptr double, ptr %invariant.gep530, i64 %540
  call void @dswap_(ptr noundef nonnull %2, ptr noundef %gep531, ptr noundef nonnull @c__1, ptr noundef %gep533, ptr noundef nonnull @c__1) #5
  %541 = shl i32 %.1432.lcssa, 1
  %542 = sext i32 %541 to i64
  %543 = getelementptr i32, ptr %55, i64 %542
  %544 = getelementptr i8, ptr %543, i64 -4
  %545 = load i32, ptr %544, align 4, !tbaa !5
  %sext = shl i64 %indvars.iv561, 33
  %546 = ashr exact i64 %sext, 30
  %gep535 = getelementptr i8, ptr %invariant.gep534, i64 %546
  %547 = load i32, ptr %gep535, align 4, !tbaa !5
  store i32 %547, ptr %544, align 4, !tbaa !5
  store i32 %545, ptr %gep535, align 4, !tbaa !5
  %548 = load i32, ptr %543, align 4, !tbaa !5
  store i32 %548, ptr %26, align 4, !tbaa !5
  %.idx = shl i64 %indvars.iv561, 3
  %549 = getelementptr inbounds i8, ptr %55, i64 %.idx
  %550 = load i32, ptr %549, align 4, !tbaa !5
  store i32 %550, ptr %543, align 4, !tbaa !5
  store i32 %548, ptr %549, align 4, !tbaa !5
  %.pre566 = load i32, ptr %24, align 4, !tbaa !5
  br label %._crit_edge527.thread

._crit_edge527.thread:                            ; preds = %.lr.ph539, %._crit_edge527, %535
  %551 = phi i32 [ %514, %._crit_edge527 ], [ %.pre566, %535 ], [ %514, %.lr.ph539 ]
  %552 = sext i32 %551 to i64
  %.not470.not = icmp slt i64 %indvars.iv561, %552
  %indvars.iv.next556 = add nuw nsw i64 %indvars.iv555, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not470.not, label %.lr.ph539, label %.loopexit, !llvm.loop !19

.loopexit:                                        ; preds = %._crit_edge527.thread, %510, %507, %503
  store double %129, ptr %16, align 8, !tbaa !9
  store i32 %.0426, ptr %18, align 4, !tbaa !5
  br label %553

553:                                              ; preds = %.thread570, %156, %169, %171, %155, %.loopexit, %509, %401, %395, %.thread483
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #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 @lsame_(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 void @dlarrc_(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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

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

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

declare void @dlarrv_(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, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dlarrj_(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 @dlasrt_(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.abs.i32(i32, i1 immarg) #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 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !12, !13}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass