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

; 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 [7 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
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i32, align 4
@c_b28 = external hidden global double, align 8

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

146:                                              ; preds = %25
  %147 = load ptr, ptr %49, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  %149 = icmp eq i32 %148, -1
  br label %150

150:                                              ; preds = %146, %25
  %151 = phi i1 [ true, %25 ], [ %149, %146 ]
  %152 = zext i1 %151 to i32
  store i32 %152, ptr %84, align 4, !tbaa !9
  %153 = load ptr, ptr %26, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = icmp slt i32 %154, 0
  br i1 %155, label %160, label %156

156:                                              ; preds = %150
  %157 = load ptr, ptr %26, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = icmp sgt i32 %158, 5
  br i1 %159, label %160, label %162

160:                                              ; preds = %156, %150
  %161 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -1, ptr %161, align 4, !tbaa !9
  br label %235

162:                                              ; preds = %156
  %163 = load ptr, ptr %30, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = icmp slt i32 %164, 0
  br i1 %165, label %166, label %168

166:                                              ; preds = %162
  %167 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -5, ptr %167, align 4, !tbaa !9
  br label %234

168:                                              ; preds = %162
  %169 = load ptr, ptr %32, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = load ptr, ptr %30, align 8, !tbaa !5
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = icmp sge i32 1, %172
  br i1 %173, label %174, label %175

174:                                              ; preds = %168
  br label %178

175:                                              ; preds = %168
  %176 = load ptr, ptr %30, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %175, %174
  %179 = phi i32 [ 1, %174 ], [ %177, %175 ]
  %180 = icmp slt i32 %170, %179
  br i1 %180, label %181, label %183

181:                                              ; preds = %178
  %182 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -7, ptr %182, align 4, !tbaa !9
  br label %233

183:                                              ; preds = %178
  %184 = load ptr, ptr %34, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = load ptr, ptr %30, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = icmp sge i32 1, %187
  br i1 %188, label %189, label %190

189:                                              ; preds = %183
  br label %193

190:                                              ; preds = %183
  %191 = load ptr, ptr %30, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %190, %189
  %194 = phi i32 [ 1, %189 ], [ %192, %190 ]
  %195 = icmp slt i32 %185, %194
  br i1 %195, label %196, label %198

196:                                              ; preds = %193
  %197 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -9, ptr %197, align 4, !tbaa !9
  br label %232

198:                                              ; preds = %193
  %199 = load ptr, ptr %39, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = icmp slt i32 %200, 1
  br i1 %201, label %212, label %202

202:                                              ; preds = %198
  %203 = load ptr, ptr %27, align 8, !tbaa !5
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %214

206:                                              ; preds = %202
  %207 = load ptr, ptr %39, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = load ptr, ptr %30, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = icmp slt i32 %208, %210
  br i1 %211, label %212, label %214

212:                                              ; preds = %206, %198
  %213 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -14, ptr %213, align 4, !tbaa !9
  br label %231

214:                                              ; preds = %206, %202
  %215 = load ptr, ptr %41, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = icmp slt i32 %216, 1
  br i1 %217, label %228, label %218

218:                                              ; preds = %214
  %219 = load ptr, ptr %28, align 8, !tbaa !5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %230

222:                                              ; preds = %218
  %223 = load ptr, ptr %41, align 8, !tbaa !5
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = load ptr, ptr %30, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = icmp slt i32 %224, %226
  br i1 %227, label %228, label %230

228:                                              ; preds = %222, %214
  %229 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -16, ptr %229, align 4, !tbaa !9
  br label %230

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

231:                                              ; preds = %230, %212
  br label %232

232:                                              ; preds = %231, %196
  br label %233

233:                                              ; preds = %232, %181
  br label %234

234:                                              ; preds = %233, %166
  br label %235

235:                                              ; preds = %234, %160
  %236 = load ptr, ptr %50, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %239, label %244

239:                                              ; preds = %235
  %240 = load ptr, ptr %50, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = sub nsw i32 0, %241
  store i32 %242, ptr %59, align 4, !tbaa !9
  %243 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %59, i32 noundef 6)
  store i32 1, ptr %87, align 4
  br label %1645

244:                                              ; preds = %235
  %245 = call double @dlamch_(ptr noundef @.str.1)
  store double %245, ptr %86, align 8, !tbaa !11
  %246 = call double @dlamch_(ptr noundef @.str.2)
  %247 = load double, ptr %86, align 8, !tbaa !11
  %248 = fdiv double %246, %247
  store double %248, ptr %82, align 8, !tbaa !11
  store i32 0, ptr %64, align 4, !tbaa !9
  %249 = load ptr, ptr %26, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = icmp eq i32 %250, 1
  br i1 %251, label %256, label %252

252:                                              ; preds = %244
  %253 = load ptr, ptr %26, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = icmp sge i32 %254, 4
  br label %256

256:                                              ; preds = %252, %244
  %257 = phi i1 [ true, %244 ], [ %255, %252 ]
  %258 = zext i1 %257 to i32
  store i32 %258, ptr %72, align 4, !tbaa !9
  %259 = load ptr, ptr %26, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp eq i32 %260, 2
  br i1 %261, label %266, label %262

262:                                              ; preds = %256
  %263 = load ptr, ptr %26, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp eq i32 %264, 4
  br label %266

266:                                              ; preds = %262, %256
  %267 = phi i1 [ true, %256 ], [ %265, %262 ]
  %268 = zext i1 %267 to i32
  store i32 %268, ptr %75, align 4, !tbaa !9
  %269 = load ptr, ptr %26, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = icmp eq i32 %270, 3
  br i1 %271, label %276, label %272

272:                                              ; preds = %266
  %273 = load ptr, ptr %26, align 8, !tbaa !5
  %274 = load i32, ptr %273, align 4, !tbaa !9
  %275 = icmp eq i32 %274, 5
  br label %276

276:                                              ; preds = %272, %266
  %277 = phi i1 [ true, %266 ], [ %275, %272 ]
  %278 = zext i1 %277 to i32
  store i32 %278, ptr %76, align 4, !tbaa !9
  %279 = load i32, ptr %75, align 4, !tbaa !9
  %280 = icmp ne i32 %279, 0
  br i1 %280, label %284, label %281

281:                                              ; preds = %276
  %282 = load i32, ptr %76, align 4, !tbaa !9
  %283 = icmp ne i32 %282, 0
  br label %284

284:                                              ; preds = %281, %276
  %285 = phi i1 [ true, %276 ], [ %283, %281 ]
  %286 = zext i1 %285 to i32
  store i32 %286, ptr %70, align 4, !tbaa !9
  %287 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %287, align 4, !tbaa !9
  store i32 0, ptr %63, align 4, !tbaa !9
  %288 = load i32, ptr %84, align 4, !tbaa !9
  %289 = icmp ne i32 %288, 0
  br i1 %289, label %290, label %294

290:                                              ; preds = %284
  %291 = load ptr, ptr %26, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %294, label %374

294:                                              ; preds = %290, %284
  %295 = load ptr, ptr %30, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  store i32 %296, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %297

297:                                              ; preds = %370, %294
  %298 = load i32, ptr %68, align 4, !tbaa !9
  %299 = load i32, ptr %59, align 4, !tbaa !9
  %300 = icmp sle i32 %298, %299
  br i1 %300, label %301, label %373

301:                                              ; preds = %297
  %302 = load i32, ptr %63, align 4, !tbaa !9
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %305

304:                                              ; preds = %301
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %369

305:                                              ; preds = %301
  %306 = load i32, ptr %68, align 4, !tbaa !9
  %307 = load ptr, ptr %30, align 8, !tbaa !5
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = icmp slt i32 %306, %308
  br i1 %309, label %310, label %355

310:                                              ; preds = %305
  %311 = load ptr, ptr %31, align 8, !tbaa !5
  %312 = load i32, ptr %68, align 4, !tbaa !9
  %313 = add nsw i32 %312, 1
  %314 = load i32, ptr %68, align 4, !tbaa !9
  %315 = load i32, ptr %51, align 4, !tbaa !9
  %316 = mul nsw i32 %314, %315
  %317 = add nsw i32 %313, %316
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds double, ptr %311, i64 %318
  %320 = load double, ptr %319, align 8, !tbaa !11
  %321 = fcmp oeq double %320, 0.000000e+00
  br i1 %321, label %322, label %334

322:                                              ; preds = %310
  %323 = load ptr, ptr %29, align 8, !tbaa !5
  %324 = load i32, ptr %68, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds i32, ptr %323, i64 %325
  %327 = load i32, ptr %326, align 4, !tbaa !9
  %328 = icmp ne i32 %327, 0
  br i1 %328, label %329, label %333

329:                                              ; preds = %322
  %330 = load ptr, ptr %42, align 8, !tbaa !5
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = add nsw i32 %331, 1
  store i32 %332, ptr %330, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %329, %322
  br label %354

334:                                              ; preds = %310
  store i32 1, ptr %63, align 4, !tbaa !9
  %335 = load ptr, ptr %29, align 8, !tbaa !5
  %336 = load i32, ptr %68, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds i32, ptr %335, i64 %337
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %349, label %341

341:                                              ; preds = %334
  %342 = load ptr, ptr %29, align 8, !tbaa !5
  %343 = load i32, ptr %68, align 4, !tbaa !9
  %344 = add nsw i32 %343, 1
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds i32, ptr %342, i64 %345
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = icmp ne i32 %347, 0
  br i1 %348, label %349, label %353

349:                                              ; preds = %341, %334
  %350 = load ptr, ptr %42, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  %352 = add nsw i32 %351, 2
  store i32 %352, ptr %350, align 4, !tbaa !9
  br label %353

353:                                              ; preds = %349, %341
  br label %354

354:                                              ; preds = %353, %333
  br label %368

355:                                              ; preds = %305
  %356 = load ptr, ptr %29, align 8, !tbaa !5
  %357 = load ptr, ptr %30, align 8, !tbaa !5
  %358 = load i32, ptr %357, align 4, !tbaa !9
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds i32, ptr %356, i64 %359
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = icmp ne i32 %361, 0
  br i1 %362, label %363, label %367

363:                                              ; preds = %355
  %364 = load ptr, ptr %42, align 8, !tbaa !5
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = add nsw i32 %365, 1
  store i32 %366, ptr %364, align 4, !tbaa !9
  br label %367

367:                                              ; preds = %363, %355
  br label %368

368:                                              ; preds = %367, %354
  br label %369

369:                                              ; preds = %368, %304
  br label %370

370:                                              ; preds = %369
  %371 = load i32, ptr %68, align 4, !tbaa !9
  %372 = add nsw i32 %371, 1
  store i32 %372, ptr %68, align 4, !tbaa !9
  br label %297, !llvm.loop !13

373:                                              ; preds = %297
  br label %374

374:                                              ; preds = %373, %290
  %375 = load ptr, ptr %26, align 8, !tbaa !5
  %376 = load i32, ptr %375, align 4, !tbaa !9
  %377 = icmp eq i32 %376, 1
  br i1 %377, label %386, label %378

378:                                              ; preds = %374
  %379 = load ptr, ptr %26, align 8, !tbaa !5
  %380 = load i32, ptr %379, align 4, !tbaa !9
  %381 = icmp eq i32 %380, 2
  br i1 %381, label %386, label %382

382:                                              ; preds = %378
  %383 = load ptr, ptr %26, align 8, !tbaa !5
  %384 = load i32, ptr %383, align 4, !tbaa !9
  %385 = icmp eq i32 %384, 4
  br i1 %385, label %386, label %430

386:                                              ; preds = %382, %378, %374
  store i32 1, ptr %59, align 4, !tbaa !9
  %387 = load ptr, ptr %30, align 8, !tbaa !5
  %388 = load i32, ptr %387, align 4, !tbaa !9
  %389 = shl i32 %388, 2
  %390 = add nsw i32 %389, 16
  store i32 %390, ptr %60, align 4, !tbaa !9
  %391 = load i32, ptr %59, align 4, !tbaa !9
  %392 = load i32, ptr %60, align 4, !tbaa !9
  %393 = icmp sge i32 %391, %392
  br i1 %393, label %394, label %396

394:                                              ; preds = %386
  %395 = load i32, ptr %59, align 4, !tbaa !9
  br label %398

396:                                              ; preds = %386
  %397 = load i32, ptr %60, align 4, !tbaa !9
  br label %398

398:                                              ; preds = %396, %394
  %399 = phi i32 [ %395, %394 ], [ %397, %396 ]
  store i32 %399, ptr %59, align 4, !tbaa !9
  %400 = load ptr, ptr %42, align 8, !tbaa !5
  %401 = load i32, ptr %400, align 4, !tbaa !9
  %402 = shl i32 %401, 1
  %403 = load ptr, ptr %30, align 8, !tbaa !5
  %404 = load i32, ptr %403, align 4, !tbaa !9
  %405 = load ptr, ptr %42, align 8, !tbaa !5
  %406 = load i32, ptr %405, align 4, !tbaa !9
  %407 = sub nsw i32 %404, %406
  %408 = mul nsw i32 %402, %407
  store i32 %408, ptr %60, align 4, !tbaa !9
  %409 = load i32, ptr %59, align 4, !tbaa !9
  %410 = load i32, ptr %60, align 4, !tbaa !9
  %411 = icmp sge i32 %409, %410
  br i1 %411, label %412, label %414

412:                                              ; preds = %398
  %413 = load i32, ptr %59, align 4, !tbaa !9
  br label %416

414:                                              ; preds = %398
  %415 = load i32, ptr %60, align 4, !tbaa !9
  br label %416

416:                                              ; preds = %414, %412
  %417 = phi i32 [ %413, %412 ], [ %415, %414 ]
  store i32 %417, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  %418 = load ptr, ptr %30, align 8, !tbaa !5
  %419 = load i32, ptr %418, align 4, !tbaa !9
  %420 = add nsw i32 %419, 6
  store i32 %420, ptr %60, align 4, !tbaa !9
  %421 = load i32, ptr %59, align 4, !tbaa !9
  %422 = load i32, ptr %60, align 4, !tbaa !9
  %423 = icmp sge i32 %421, %422
  br i1 %423, label %424, label %426

424:                                              ; preds = %416
  %425 = load i32, ptr %59, align 4, !tbaa !9
  br label %428

426:                                              ; preds = %416
  %427 = load i32, ptr %60, align 4, !tbaa !9
  br label %428

428:                                              ; preds = %426, %424
  %429 = phi i32 [ %425, %424 ], [ %427, %426 ]
  store i32 %429, ptr %81, align 4, !tbaa !9
  br label %515

430:                                              ; preds = %382
  %431 = load ptr, ptr %26, align 8, !tbaa !5
  %432 = load i32, ptr %431, align 4, !tbaa !9
  %433 = icmp eq i32 %432, 3
  br i1 %433, label %438, label %434

434:                                              ; preds = %430
  %435 = load ptr, ptr %26, align 8, !tbaa !5
  %436 = load i32, ptr %435, align 4, !tbaa !9
  %437 = icmp eq i32 %436, 5
  br i1 %437, label %438, label %500

438:                                              ; preds = %434, %430
  store i32 1, ptr %59, align 4, !tbaa !9
  %439 = load ptr, ptr %30, align 8, !tbaa !5
  %440 = load i32, ptr %439, align 4, !tbaa !9
  %441 = shl i32 %440, 2
  %442 = add nsw i32 %441, 16
  store i32 %442, ptr %60, align 4, !tbaa !9
  %443 = load i32, ptr %59, align 4, !tbaa !9
  %444 = load i32, ptr %60, align 4, !tbaa !9
  %445 = icmp sge i32 %443, %444
  br i1 %445, label %446, label %448

446:                                              ; preds = %438
  %447 = load i32, ptr %59, align 4, !tbaa !9
  br label %450

448:                                              ; preds = %438
  %449 = load i32, ptr %60, align 4, !tbaa !9
  br label %450

450:                                              ; preds = %448, %446
  %451 = phi i32 [ %447, %446 ], [ %449, %448 ]
  store i32 %451, ptr %59, align 4, !tbaa !9
  %452 = load ptr, ptr %42, align 8, !tbaa !5
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = shl i32 %453, 2
  %455 = load ptr, ptr %30, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = load ptr, ptr %42, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = sub nsw i32 %456, %458
  %460 = mul nsw i32 %454, %459
  store i32 %460, ptr %60, align 4, !tbaa !9
  %461 = load i32, ptr %59, align 4, !tbaa !9
  %462 = load i32, ptr %60, align 4, !tbaa !9
  %463 = icmp sge i32 %461, %462
  br i1 %463, label %464, label %466

464:                                              ; preds = %450
  %465 = load i32, ptr %59, align 4, !tbaa !9
  br label %468

466:                                              ; preds = %450
  %467 = load i32, ptr %60, align 4, !tbaa !9
  br label %468

468:                                              ; preds = %466, %464
  %469 = phi i32 [ %465, %464 ], [ %467, %466 ]
  store i32 %469, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  %470 = load ptr, ptr %42, align 8, !tbaa !5
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = shl i32 %471, 1
  %473 = load ptr, ptr %30, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = load ptr, ptr %42, align 8, !tbaa !5
  %476 = load i32, ptr %475, align 4, !tbaa !9
  %477 = sub nsw i32 %474, %476
  %478 = mul nsw i32 %472, %477
  store i32 %478, ptr %60, align 4, !tbaa !9
  %479 = load i32, ptr %59, align 4, !tbaa !9
  %480 = load i32, ptr %60, align 4, !tbaa !9
  %481 = icmp sge i32 %479, %480
  br i1 %481, label %482, label %484

482:                                              ; preds = %468
  %483 = load i32, ptr %59, align 4, !tbaa !9
  br label %486

484:                                              ; preds = %468
  %485 = load i32, ptr %60, align 4, !tbaa !9
  br label %486

486:                                              ; preds = %484, %482
  %487 = phi i32 [ %483, %482 ], [ %485, %484 ]
  store i32 %487, ptr %59, align 4, !tbaa !9
  %488 = load ptr, ptr %30, align 8, !tbaa !5
  %489 = load i32, ptr %488, align 4, !tbaa !9
  %490 = add nsw i32 %489, 6
  store i32 %490, ptr %60, align 4, !tbaa !9
  %491 = load i32, ptr %59, align 4, !tbaa !9
  %492 = load i32, ptr %60, align 4, !tbaa !9
  %493 = icmp sge i32 %491, %492
  br i1 %493, label %494, label %496

494:                                              ; preds = %486
  %495 = load i32, ptr %59, align 4, !tbaa !9
  br label %498

496:                                              ; preds = %486
  %497 = load i32, ptr %60, align 4, !tbaa !9
  br label %498

498:                                              ; preds = %496, %494
  %499 = phi i32 [ %495, %494 ], [ %497, %496 ]
  store i32 %499, ptr %81, align 4, !tbaa !9
  br label %514

500:                                              ; preds = %434
  store i32 1, ptr %59, align 4, !tbaa !9
  %501 = load ptr, ptr %30, align 8, !tbaa !5
  %502 = load i32, ptr %501, align 4, !tbaa !9
  %503 = shl i32 %502, 2
  %504 = add nsw i32 %503, 16
  store i32 %504, ptr %60, align 4, !tbaa !9
  %505 = load i32, ptr %59, align 4, !tbaa !9
  %506 = load i32, ptr %60, align 4, !tbaa !9
  %507 = icmp sge i32 %505, %506
  br i1 %507, label %508, label %510

508:                                              ; preds = %500
  %509 = load i32, ptr %59, align 4, !tbaa !9
  br label %512

510:                                              ; preds = %500
  %511 = load i32, ptr %60, align 4, !tbaa !9
  br label %512

512:                                              ; preds = %510, %508
  %513 = phi i32 [ %509, %508 ], [ %511, %510 ]
  store i32 %513, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %81, align 4, !tbaa !9
  br label %514

514:                                              ; preds = %512, %498
  br label %515

515:                                              ; preds = %514, %428
  %516 = load i32, ptr %71, align 4, !tbaa !9
  %517 = sitofp i32 %516 to double
  %518 = load ptr, ptr %46, align 8, !tbaa !5
  %519 = getelementptr inbounds double, ptr %518, i64 1
  store double %517, ptr %519, align 8, !tbaa !11
  %520 = load i32, ptr %81, align 4, !tbaa !9
  %521 = load ptr, ptr %48, align 8, !tbaa !5
  %522 = getelementptr inbounds i32, ptr %521, i64 1
  store i32 %520, ptr %522, align 4, !tbaa !9
  %523 = load ptr, ptr %47, align 8, !tbaa !5
  %524 = load i32, ptr %523, align 4, !tbaa !9
  %525 = load i32, ptr %71, align 4, !tbaa !9
  %526 = icmp slt i32 %524, %525
  br i1 %526, label %527, label %532

527:                                              ; preds = %515
  %528 = load i32, ptr %84, align 4, !tbaa !9
  %529 = icmp ne i32 %528, 0
  br i1 %529, label %532, label %530

530:                                              ; preds = %527
  %531 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -22, ptr %531, align 4, !tbaa !9
  br label %543

532:                                              ; preds = %527, %515
  %533 = load ptr, ptr %49, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = load i32, ptr %81, align 4, !tbaa !9
  %536 = icmp slt i32 %534, %535
  br i1 %536, label %537, label %542

537:                                              ; preds = %532
  %538 = load i32, ptr %84, align 4, !tbaa !9
  %539 = icmp ne i32 %538, 0
  br i1 %539, label %542, label %540

540:                                              ; preds = %537
  %541 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -24, ptr %541, align 4, !tbaa !9
  br label %542

542:                                              ; preds = %540, %537, %532
  br label %543

543:                                              ; preds = %542, %530
  %544 = load ptr, ptr %50, align 8, !tbaa !5
  %545 = load i32, ptr %544, align 4, !tbaa !9
  %546 = icmp ne i32 %545, 0
  br i1 %546, label %547, label %552

547:                                              ; preds = %543
  %548 = load ptr, ptr %50, align 8, !tbaa !5
  %549 = load i32, ptr %548, align 4, !tbaa !9
  %550 = sub nsw i32 0, %549
  store i32 %550, ptr %59, align 4, !tbaa !9
  %551 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %59, i32 noundef 6)
  store i32 1, ptr %87, align 4
  br label %1645

552:                                              ; preds = %543
  %553 = load i32, ptr %84, align 4, !tbaa !9
  %554 = icmp ne i32 %553, 0
  br i1 %554, label %555, label %556

555:                                              ; preds = %552
  store i32 1, ptr %87, align 4
  br label %1645

556:                                              ; preds = %552
  br label %557

557:                                              ; preds = %556
  %558 = load ptr, ptr %42, align 8, !tbaa !5
  %559 = load i32, ptr %558, align 4, !tbaa !9
  %560 = load ptr, ptr %30, align 8, !tbaa !5
  %561 = load i32, ptr %560, align 4, !tbaa !9
  %562 = icmp eq i32 %559, %561
  br i1 %562, label %567, label %563

563:                                              ; preds = %557
  %564 = load ptr, ptr %42, align 8, !tbaa !5
  %565 = load i32, ptr %564, align 4, !tbaa !9
  %566 = icmp eq i32 %565, 0
  br i1 %566, label %567, label %616

567:                                              ; preds = %563, %557
  %568 = load i32, ptr %72, align 4, !tbaa !9
  %569 = icmp ne i32 %568, 0
  br i1 %569, label %570, label %573

570:                                              ; preds = %567
  %571 = load ptr, ptr %43, align 8, !tbaa !5
  store double 1.000000e+00, ptr %571, align 8, !tbaa !11
  %572 = load ptr, ptr %44, align 8, !tbaa !5
  store double 1.000000e+00, ptr %572, align 8, !tbaa !11
  br label %573

573:                                              ; preds = %570, %567
  %574 = load i32, ptr %70, align 4, !tbaa !9
  %575 = icmp ne i32 %574, 0
  br i1 %575, label %576, label %615

576:                                              ; preds = %573
  store double 0.000000e+00, ptr %78, align 8, !tbaa !11
  store double 1.000000e+00, ptr %65, align 8, !tbaa !11
  %577 = load ptr, ptr %30, align 8, !tbaa !5
  %578 = load i32, ptr %577, align 4, !tbaa !9
  store i32 %578, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %579

579:                                              ; preds = %600, %576
  %580 = load i32, ptr %67, align 4, !tbaa !9
  %581 = load i32, ptr %59, align 4, !tbaa !9
  %582 = icmp sle i32 %580, %581
  br i1 %582, label %583, label %603

583:                                              ; preds = %579
  %584 = load ptr, ptr %30, align 8, !tbaa !5
  %585 = load ptr, ptr %31, align 8, !tbaa !5
  %586 = load i32, ptr %67, align 4, !tbaa !9
  %587 = load i32, ptr %51, align 4, !tbaa !9
  %588 = mul nsw i32 %586, %587
  %589 = add nsw i32 %588, 1
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds double, ptr %585, i64 %590
  call void @dlassq_(ptr noundef %584, ptr noundef %591, ptr noundef @c__1, ptr noundef %78, ptr noundef %65)
  %592 = load ptr, ptr %30, align 8, !tbaa !5
  %593 = load ptr, ptr %33, align 8, !tbaa !5
  %594 = load i32, ptr %67, align 4, !tbaa !9
  %595 = load i32, ptr %53, align 4, !tbaa !9
  %596 = mul nsw i32 %594, %595
  %597 = add nsw i32 %596, 1
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds double, ptr %593, i64 %598
  call void @dlassq_(ptr noundef %592, ptr noundef %599, ptr noundef @c__1, ptr noundef %78, ptr noundef %65)
  br label %600

600:                                              ; preds = %583
  %601 = load i32, ptr %67, align 4, !tbaa !9
  %602 = add nsw i32 %601, 1
  store i32 %602, ptr %67, align 4, !tbaa !9
  br label %579, !llvm.loop !15

603:                                              ; preds = %579
  %604 = load double, ptr %78, align 8, !tbaa !11
  %605 = load double, ptr %65, align 8, !tbaa !11
  %606 = call double @sqrt(double noundef %605) #4
  %607 = fmul double %604, %606
  %608 = load ptr, ptr %45, align 8, !tbaa !5
  %609 = getelementptr inbounds double, ptr %608, i64 1
  store double %607, ptr %609, align 8, !tbaa !11
  %610 = load ptr, ptr %45, align 8, !tbaa !5
  %611 = getelementptr inbounds double, ptr %610, i64 1
  %612 = load double, ptr %611, align 8, !tbaa !11
  %613 = load ptr, ptr %45, align 8, !tbaa !5
  %614 = getelementptr inbounds double, ptr %613, i64 2
  store double %612, ptr %614, align 8, !tbaa !11
  br label %615

615:                                              ; preds = %603, %573
  br label %1325

616:                                              ; preds = %563
  store i32 0, ptr %79, align 4, !tbaa !9
  store i32 0, ptr %63, align 4, !tbaa !9
  %617 = load ptr, ptr %30, align 8, !tbaa !5
  %618 = load i32, ptr %617, align 4, !tbaa !9
  store i32 %618, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %619

619:                                              ; preds = %729, %616
  %620 = load i32, ptr %68, align 4, !tbaa !9
  %621 = load i32, ptr %59, align 4, !tbaa !9
  %622 = icmp sle i32 %620, %621
  br i1 %622, label %623, label %732

623:                                              ; preds = %619
  %624 = load i32, ptr %63, align 4, !tbaa !9
  %625 = icmp ne i32 %624, 0
  br i1 %625, label %626, label %627

626:                                              ; preds = %623
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %728

627:                                              ; preds = %623
  %628 = load ptr, ptr %29, align 8, !tbaa !5
  %629 = load i32, ptr %68, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds i32, ptr %628, i64 %630
  %632 = load i32, ptr %631, align 4, !tbaa !9
  store i32 %632, ptr %66, align 4, !tbaa !9
  %633 = load i32, ptr %68, align 4, !tbaa !9
  %634 = load ptr, ptr %30, align 8, !tbaa !5
  %635 = load i32, ptr %634, align 4, !tbaa !9
  %636 = icmp slt i32 %633, %635
  br i1 %636, label %637, label %664

637:                                              ; preds = %627
  %638 = load ptr, ptr %31, align 8, !tbaa !5
  %639 = load i32, ptr %68, align 4, !tbaa !9
  %640 = add nsw i32 %639, 1
  %641 = load i32, ptr %68, align 4, !tbaa !9
  %642 = load i32, ptr %51, align 4, !tbaa !9
  %643 = mul nsw i32 %641, %642
  %644 = add nsw i32 %640, %643
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %638, i64 %645
  %647 = load double, ptr %646, align 8, !tbaa !11
  %648 = fcmp une double %647, 0.000000e+00
  br i1 %648, label %649, label %663

649:                                              ; preds = %637
  store i32 1, ptr %63, align 4, !tbaa !9
  %650 = load i32, ptr %66, align 4, !tbaa !9
  %651 = icmp ne i32 %650, 0
  br i1 %651, label %660, label %652

652:                                              ; preds = %649
  %653 = load ptr, ptr %29, align 8, !tbaa !5
  %654 = load i32, ptr %68, align 4, !tbaa !9
  %655 = add nsw i32 %654, 1
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds i32, ptr %653, i64 %656
  %658 = load i32, ptr %657, align 4, !tbaa !9
  %659 = icmp ne i32 %658, 0
  br label %660

660:                                              ; preds = %652, %649
  %661 = phi i1 [ true, %649 ], [ %659, %652 ]
  %662 = zext i1 %661 to i32
  store i32 %662, ptr %66, align 4, !tbaa !9
  br label %663

663:                                              ; preds = %660, %637
  br label %664

664:                                              ; preds = %663, %627
  %665 = load i32, ptr %66, align 4, !tbaa !9
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %667, label %727

667:                                              ; preds = %664
  %668 = load i32, ptr %79, align 4, !tbaa !9
  %669 = add nsw i32 %668, 1
  store i32 %669, ptr %79, align 4, !tbaa !9
  %670 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %670, ptr %77, align 4, !tbaa !9
  %671 = load i32, ptr %68, align 4, !tbaa !9
  %672 = load i32, ptr %79, align 4, !tbaa !9
  %673 = icmp ne i32 %671, %672
  br i1 %673, label %674, label %701

674:                                              ; preds = %667
  %675 = load ptr, ptr %27, align 8, !tbaa !5
  %676 = load ptr, ptr %28, align 8, !tbaa !5
  %677 = load ptr, ptr %30, align 8, !tbaa !5
  %678 = load ptr, ptr %31, align 8, !tbaa !5
  %679 = load i32, ptr %52, align 4, !tbaa !9
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %678, i64 %680
  %682 = load ptr, ptr %32, align 8, !tbaa !5
  %683 = load ptr, ptr %33, align 8, !tbaa !5
  %684 = load i32, ptr %54, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds double, ptr %683, i64 %685
  %687 = load ptr, ptr %34, align 8, !tbaa !5
  %688 = load ptr, ptr %38, align 8, !tbaa !5
  %689 = load i32, ptr %56, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds double, ptr %688, i64 %690
  %692 = load ptr, ptr %39, align 8, !tbaa !5
  %693 = load ptr, ptr %40, align 8, !tbaa !5
  %694 = load i32, ptr %58, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds double, ptr %693, i64 %695
  %697 = load ptr, ptr %41, align 8, !tbaa !5
  %698 = load ptr, ptr %46, align 8, !tbaa !5
  %699 = getelementptr inbounds double, ptr %698, i64 1
  %700 = load ptr, ptr %47, align 8, !tbaa !5
  call void @dtgexc_(ptr noundef %675, ptr noundef %676, ptr noundef %677, ptr noundef %681, ptr noundef %682, ptr noundef %686, ptr noundef %687, ptr noundef %691, ptr noundef %692, ptr noundef %696, ptr noundef %697, ptr noundef %77, ptr noundef %79, ptr noundef %699, ptr noundef %700, ptr noundef %64)
  br label %701

701:                                              ; preds = %674, %667
  %702 = load i32, ptr %64, align 4, !tbaa !9
  %703 = icmp sgt i32 %702, 0
  br i1 %703, label %704, label %720

704:                                              ; preds = %701
  %705 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 1, ptr %705, align 4, !tbaa !9
  %706 = load i32, ptr %72, align 4, !tbaa !9
  %707 = icmp ne i32 %706, 0
  br i1 %707, label %708, label %711

708:                                              ; preds = %704
  %709 = load ptr, ptr %43, align 8, !tbaa !5
  store double 0.000000e+00, ptr %709, align 8, !tbaa !11
  %710 = load ptr, ptr %44, align 8, !tbaa !5
  store double 0.000000e+00, ptr %710, align 8, !tbaa !11
  br label %711

711:                                              ; preds = %708, %704
  %712 = load i32, ptr %70, align 4, !tbaa !9
  %713 = icmp ne i32 %712, 0
  br i1 %713, label %714, label %719

714:                                              ; preds = %711
  %715 = load ptr, ptr %45, align 8, !tbaa !5
  %716 = getelementptr inbounds double, ptr %715, i64 1
  store double 0.000000e+00, ptr %716, align 8, !tbaa !11
  %717 = load ptr, ptr %45, align 8, !tbaa !5
  %718 = getelementptr inbounds double, ptr %717, i64 2
  store double 0.000000e+00, ptr %718, align 8, !tbaa !11
  br label %719

719:                                              ; preds = %714, %711
  br label %1325

720:                                              ; preds = %701
  %721 = load i32, ptr %63, align 4, !tbaa !9
  %722 = icmp ne i32 %721, 0
  br i1 %722, label %723, label %726

723:                                              ; preds = %720
  %724 = load i32, ptr %79, align 4, !tbaa !9
  %725 = add nsw i32 %724, 1
  store i32 %725, ptr %79, align 4, !tbaa !9
  br label %726

726:                                              ; preds = %723, %720
  br label %727

727:                                              ; preds = %726, %664
  br label %728

728:                                              ; preds = %727, %626
  br label %729

729:                                              ; preds = %728
  %730 = load i32, ptr %68, align 4, !tbaa !9
  %731 = add nsw i32 %730, 1
  store i32 %731, ptr %68, align 4, !tbaa !9
  br label %619, !llvm.loop !16

732:                                              ; preds = %619
  %733 = load i32, ptr %72, align 4, !tbaa !9
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %735, label %899

735:                                              ; preds = %732
  %736 = load ptr, ptr %42, align 8, !tbaa !5
  %737 = load i32, ptr %736, align 4, !tbaa !9
  store i32 %737, ptr %73, align 4, !tbaa !9
  %738 = load ptr, ptr %30, align 8, !tbaa !5
  %739 = load i32, ptr %738, align 4, !tbaa !9
  %740 = load ptr, ptr %42, align 8, !tbaa !5
  %741 = load i32, ptr %740, align 4, !tbaa !9
  %742 = sub nsw i32 %739, %741
  store i32 %742, ptr %74, align 4, !tbaa !9
  %743 = load i32, ptr %73, align 4, !tbaa !9
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr %67, align 4, !tbaa !9
  store i32 0, ptr %85, align 4, !tbaa !9
  %745 = load ptr, ptr %31, align 8, !tbaa !5
  %746 = load i32, ptr %67, align 4, !tbaa !9
  %747 = load i32, ptr %51, align 4, !tbaa !9
  %748 = mul nsw i32 %746, %747
  %749 = add nsw i32 %748, 1
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds double, ptr %745, i64 %750
  %752 = load ptr, ptr %32, align 8, !tbaa !5
  %753 = load ptr, ptr %46, align 8, !tbaa !5
  %754 = getelementptr inbounds double, ptr %753, i64 1
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %73, ptr noundef %74, ptr noundef %751, ptr noundef %752, ptr noundef %754, ptr noundef %73)
  %755 = load ptr, ptr %33, align 8, !tbaa !5
  %756 = load i32, ptr %67, align 4, !tbaa !9
  %757 = load i32, ptr %53, align 4, !tbaa !9
  %758 = mul nsw i32 %756, %757
  %759 = add nsw i32 %758, 1
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds double, ptr %755, i64 %760
  %762 = load ptr, ptr %34, align 8, !tbaa !5
  %763 = load ptr, ptr %46, align 8, !tbaa !5
  %764 = load i32, ptr %73, align 4, !tbaa !9
  %765 = load i32, ptr %74, align 4, !tbaa !9
  %766 = mul nsw i32 %764, %765
  %767 = add nsw i32 %766, 1
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %763, i64 %768
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %73, ptr noundef %74, ptr noundef %761, ptr noundef %762, ptr noundef %769, ptr noundef %73)
  %770 = load ptr, ptr %47, align 8, !tbaa !5
  %771 = load i32, ptr %770, align 4, !tbaa !9
  %772 = load i32, ptr %73, align 4, !tbaa !9
  %773 = shl i32 %772, 1
  %774 = load i32, ptr %74, align 4, !tbaa !9
  %775 = mul nsw i32 %773, %774
  %776 = sub nsw i32 %771, %775
  store i32 %776, ptr %59, align 4, !tbaa !9
  %777 = load ptr, ptr %31, align 8, !tbaa !5
  %778 = load i32, ptr %52, align 4, !tbaa !9
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds double, ptr %777, i64 %779
  %781 = load ptr, ptr %32, align 8, !tbaa !5
  %782 = load ptr, ptr %31, align 8, !tbaa !5
  %783 = load i32, ptr %67, align 4, !tbaa !9
  %784 = load i32, ptr %67, align 4, !tbaa !9
  %785 = load i32, ptr %51, align 4, !tbaa !9
  %786 = mul nsw i32 %784, %785
  %787 = add nsw i32 %783, %786
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds double, ptr %782, i64 %788
  %790 = load ptr, ptr %32, align 8, !tbaa !5
  %791 = load ptr, ptr %46, align 8, !tbaa !5
  %792 = getelementptr inbounds double, ptr %791, i64 1
  %793 = load ptr, ptr %33, align 8, !tbaa !5
  %794 = load i32, ptr %54, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %793, i64 %795
  %797 = load ptr, ptr %34, align 8, !tbaa !5
  %798 = load ptr, ptr %33, align 8, !tbaa !5
  %799 = load i32, ptr %67, align 4, !tbaa !9
  %800 = load i32, ptr %67, align 4, !tbaa !9
  %801 = load i32, ptr %53, align 4, !tbaa !9
  %802 = mul nsw i32 %800, %801
  %803 = add nsw i32 %799, %802
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds double, ptr %798, i64 %804
  %806 = load ptr, ptr %34, align 8, !tbaa !5
  %807 = load ptr, ptr %46, align 8, !tbaa !5
  %808 = load i32, ptr %73, align 4, !tbaa !9
  %809 = load i32, ptr %74, align 4, !tbaa !9
  %810 = mul nsw i32 %808, %809
  %811 = add nsw i32 %810, 1
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds double, ptr %807, i64 %812
  %814 = load ptr, ptr %45, align 8, !tbaa !5
  %815 = getelementptr inbounds double, ptr %814, i64 1
  %816 = load ptr, ptr %46, align 8, !tbaa !5
  %817 = load i32, ptr %73, align 4, !tbaa !9
  %818 = load i32, ptr %74, align 4, !tbaa !9
  %819 = mul nsw i32 %817, %818
  %820 = shl i32 %819, 1
  %821 = add nsw i32 %820, 1
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds double, ptr %816, i64 %822
  %824 = load ptr, ptr %48, align 8, !tbaa !5
  %825 = getelementptr inbounds i32, ptr %824, i64 1
  call void @dtgsyl_(ptr noundef @.str.4, ptr noundef %85, ptr noundef %73, ptr noundef %74, ptr noundef %780, ptr noundef %781, ptr noundef %789, ptr noundef %790, ptr noundef %792, ptr noundef %73, ptr noundef %796, ptr noundef %797, ptr noundef %805, ptr noundef %806, ptr noundef %813, ptr noundef %73, ptr noundef %78, ptr noundef %815, ptr noundef %823, ptr noundef %59, ptr noundef %825, ptr noundef %64)
  store double 0.000000e+00, ptr %80, align 8, !tbaa !11
  store double 1.000000e+00, ptr %65, align 8, !tbaa !11
  %826 = load i32, ptr %73, align 4, !tbaa !9
  %827 = load i32, ptr %74, align 4, !tbaa !9
  %828 = mul nsw i32 %826, %827
  store i32 %828, ptr %59, align 4, !tbaa !9
  %829 = load ptr, ptr %46, align 8, !tbaa !5
  %830 = getelementptr inbounds double, ptr %829, i64 1
  call void @dlassq_(ptr noundef %59, ptr noundef %830, ptr noundef @c__1, ptr noundef %80, ptr noundef %65)
  %831 = load double, ptr %80, align 8, !tbaa !11
  %832 = load double, ptr %65, align 8, !tbaa !11
  %833 = call double @sqrt(double noundef %832) #4
  %834 = fmul double %831, %833
  %835 = load ptr, ptr %43, align 8, !tbaa !5
  store double %834, ptr %835, align 8, !tbaa !11
  %836 = load ptr, ptr %43, align 8, !tbaa !5
  %837 = load double, ptr %836, align 8, !tbaa !11
  %838 = fcmp oeq double %837, 0.000000e+00
  br i1 %838, label %839, label %841

839:                                              ; preds = %735
  %840 = load ptr, ptr %43, align 8, !tbaa !5
  store double 1.000000e+00, ptr %840, align 8, !tbaa !11
  br label %859

841:                                              ; preds = %735
  %842 = load double, ptr %78, align 8, !tbaa !11
  %843 = load double, ptr %78, align 8, !tbaa !11
  %844 = load double, ptr %78, align 8, !tbaa !11
  %845 = fmul double %843, %844
  %846 = load ptr, ptr %43, align 8, !tbaa !5
  %847 = load double, ptr %846, align 8, !tbaa !11
  %848 = fdiv double %845, %847
  %849 = load ptr, ptr %43, align 8, !tbaa !5
  %850 = load double, ptr %849, align 8, !tbaa !11
  %851 = fadd double %848, %850
  %852 = call double @sqrt(double noundef %851) #4
  %853 = load ptr, ptr %43, align 8, !tbaa !5
  %854 = load double, ptr %853, align 8, !tbaa !11
  %855 = call double @sqrt(double noundef %854) #4
  %856 = fmul double %852, %855
  %857 = fdiv double %842, %856
  %858 = load ptr, ptr %43, align 8, !tbaa !5
  store double %857, ptr %858, align 8, !tbaa !11
  br label %859

859:                                              ; preds = %841, %839
  store double 0.000000e+00, ptr %80, align 8, !tbaa !11
  store double 1.000000e+00, ptr %65, align 8, !tbaa !11
  %860 = load i32, ptr %73, align 4, !tbaa !9
  %861 = load i32, ptr %74, align 4, !tbaa !9
  %862 = mul nsw i32 %860, %861
  store i32 %862, ptr %59, align 4, !tbaa !9
  %863 = load ptr, ptr %46, align 8, !tbaa !5
  %864 = load i32, ptr %73, align 4, !tbaa !9
  %865 = load i32, ptr %74, align 4, !tbaa !9
  %866 = mul nsw i32 %864, %865
  %867 = add nsw i32 %866, 1
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds double, ptr %863, i64 %868
  call void @dlassq_(ptr noundef %59, ptr noundef %869, ptr noundef @c__1, ptr noundef %80, ptr noundef %65)
  %870 = load double, ptr %80, align 8, !tbaa !11
  %871 = load double, ptr %65, align 8, !tbaa !11
  %872 = call double @sqrt(double noundef %871) #4
  %873 = fmul double %870, %872
  %874 = load ptr, ptr %44, align 8, !tbaa !5
  store double %873, ptr %874, align 8, !tbaa !11
  %875 = load ptr, ptr %44, align 8, !tbaa !5
  %876 = load double, ptr %875, align 8, !tbaa !11
  %877 = fcmp oeq double %876, 0.000000e+00
  br i1 %877, label %878, label %880

878:                                              ; preds = %859
  %879 = load ptr, ptr %44, align 8, !tbaa !5
  store double 1.000000e+00, ptr %879, align 8, !tbaa !11
  br label %898

880:                                              ; preds = %859
  %881 = load double, ptr %78, align 8, !tbaa !11
  %882 = load double, ptr %78, align 8, !tbaa !11
  %883 = load double, ptr %78, align 8, !tbaa !11
  %884 = fmul double %882, %883
  %885 = load ptr, ptr %44, align 8, !tbaa !5
  %886 = load double, ptr %885, align 8, !tbaa !11
  %887 = fdiv double %884, %886
  %888 = load ptr, ptr %44, align 8, !tbaa !5
  %889 = load double, ptr %888, align 8, !tbaa !11
  %890 = fadd double %887, %889
  %891 = call double @sqrt(double noundef %890) #4
  %892 = load ptr, ptr %44, align 8, !tbaa !5
  %893 = load double, ptr %892, align 8, !tbaa !11
  %894 = call double @sqrt(double noundef %893) #4
  %895 = fmul double %891, %894
  %896 = fdiv double %881, %895
  %897 = load ptr, ptr %44, align 8, !tbaa !5
  store double %896, ptr %897, align 8, !tbaa !11
  br label %898

898:                                              ; preds = %880, %878
  br label %899

899:                                              ; preds = %898, %732
  %900 = load i32, ptr %70, align 4, !tbaa !9
  %901 = icmp ne i32 %900, 0
  br i1 %901, label %902, label %1324

902:                                              ; preds = %899
  %903 = load i32, ptr %75, align 4, !tbaa !9
  %904 = icmp ne i32 %903, 0
  br i1 %904, label %905, label %1027

905:                                              ; preds = %902
  %906 = load ptr, ptr %42, align 8, !tbaa !5
  %907 = load i32, ptr %906, align 4, !tbaa !9
  store i32 %907, ptr %73, align 4, !tbaa !9
  %908 = load ptr, ptr %30, align 8, !tbaa !5
  %909 = load i32, ptr %908, align 4, !tbaa !9
  %910 = load ptr, ptr %42, align 8, !tbaa !5
  %911 = load i32, ptr %910, align 4, !tbaa !9
  %912 = sub nsw i32 %909, %911
  store i32 %912, ptr %74, align 4, !tbaa !9
  %913 = load i32, ptr %73, align 4, !tbaa !9
  %914 = add nsw i32 %913, 1
  store i32 %914, ptr %67, align 4, !tbaa !9
  store i32 3, ptr %85, align 4, !tbaa !9
  %915 = load ptr, ptr %47, align 8, !tbaa !5
  %916 = load i32, ptr %915, align 4, !tbaa !9
  %917 = load i32, ptr %73, align 4, !tbaa !9
  %918 = shl i32 %917, 1
  %919 = load i32, ptr %74, align 4, !tbaa !9
  %920 = mul nsw i32 %918, %919
  %921 = sub nsw i32 %916, %920
  store i32 %921, ptr %59, align 4, !tbaa !9
  %922 = load ptr, ptr %31, align 8, !tbaa !5
  %923 = load i32, ptr %52, align 4, !tbaa !9
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds double, ptr %922, i64 %924
  %926 = load ptr, ptr %32, align 8, !tbaa !5
  %927 = load ptr, ptr %31, align 8, !tbaa !5
  %928 = load i32, ptr %67, align 4, !tbaa !9
  %929 = load i32, ptr %67, align 4, !tbaa !9
  %930 = load i32, ptr %51, align 4, !tbaa !9
  %931 = mul nsw i32 %929, %930
  %932 = add nsw i32 %928, %931
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds double, ptr %927, i64 %933
  %935 = load ptr, ptr %32, align 8, !tbaa !5
  %936 = load ptr, ptr %46, align 8, !tbaa !5
  %937 = getelementptr inbounds double, ptr %936, i64 1
  %938 = load ptr, ptr %33, align 8, !tbaa !5
  %939 = load i32, ptr %54, align 4, !tbaa !9
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds double, ptr %938, i64 %940
  %942 = load ptr, ptr %34, align 8, !tbaa !5
  %943 = load ptr, ptr %33, align 8, !tbaa !5
  %944 = load i32, ptr %67, align 4, !tbaa !9
  %945 = load i32, ptr %67, align 4, !tbaa !9
  %946 = load i32, ptr %53, align 4, !tbaa !9
  %947 = mul nsw i32 %945, %946
  %948 = add nsw i32 %944, %947
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds double, ptr %943, i64 %949
  %951 = load ptr, ptr %34, align 8, !tbaa !5
  %952 = load ptr, ptr %46, align 8, !tbaa !5
  %953 = load i32, ptr %73, align 4, !tbaa !9
  %954 = load i32, ptr %74, align 4, !tbaa !9
  %955 = mul nsw i32 %953, %954
  %956 = add nsw i32 %955, 1
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds double, ptr %952, i64 %957
  %959 = load ptr, ptr %45, align 8, !tbaa !5
  %960 = getelementptr inbounds double, ptr %959, i64 1
  %961 = load ptr, ptr %46, align 8, !tbaa !5
  %962 = load i32, ptr %73, align 4, !tbaa !9
  %963 = shl i32 %962, 1
  %964 = load i32, ptr %74, align 4, !tbaa !9
  %965 = mul nsw i32 %963, %964
  %966 = add nsw i32 %965, 1
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds double, ptr %961, i64 %967
  %969 = load ptr, ptr %48, align 8, !tbaa !5
  %970 = getelementptr inbounds i32, ptr %969, i64 1
  call void @dtgsyl_(ptr noundef @.str.4, ptr noundef %85, ptr noundef %73, ptr noundef %74, ptr noundef %925, ptr noundef %926, ptr noundef %934, ptr noundef %935, ptr noundef %937, ptr noundef %73, ptr noundef %941, ptr noundef %942, ptr noundef %950, ptr noundef %951, ptr noundef %958, ptr noundef %73, ptr noundef %78, ptr noundef %960, ptr noundef %968, ptr noundef %59, ptr noundef %970, ptr noundef %64)
  %971 = load ptr, ptr %47, align 8, !tbaa !5
  %972 = load i32, ptr %971, align 4, !tbaa !9
  %973 = load i32, ptr %73, align 4, !tbaa !9
  %974 = shl i32 %973, 1
  %975 = load i32, ptr %74, align 4, !tbaa !9
  %976 = mul nsw i32 %974, %975
  %977 = sub nsw i32 %972, %976
  store i32 %977, ptr %59, align 4, !tbaa !9
  %978 = load ptr, ptr %31, align 8, !tbaa !5
  %979 = load i32, ptr %67, align 4, !tbaa !9
  %980 = load i32, ptr %67, align 4, !tbaa !9
  %981 = load i32, ptr %51, align 4, !tbaa !9
  %982 = mul nsw i32 %980, %981
  %983 = add nsw i32 %979, %982
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds double, ptr %978, i64 %984
  %986 = load ptr, ptr %32, align 8, !tbaa !5
  %987 = load ptr, ptr %31, align 8, !tbaa !5
  %988 = load i32, ptr %52, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds double, ptr %987, i64 %989
  %991 = load ptr, ptr %32, align 8, !tbaa !5
  %992 = load ptr, ptr %46, align 8, !tbaa !5
  %993 = getelementptr inbounds double, ptr %992, i64 1
  %994 = load ptr, ptr %33, align 8, !tbaa !5
  %995 = load i32, ptr %67, align 4, !tbaa !9
  %996 = load i32, ptr %67, align 4, !tbaa !9
  %997 = load i32, ptr %53, align 4, !tbaa !9
  %998 = mul nsw i32 %996, %997
  %999 = add nsw i32 %995, %998
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds double, ptr %994, i64 %1000
  %1002 = load ptr, ptr %34, align 8, !tbaa !5
  %1003 = load ptr, ptr %33, align 8, !tbaa !5
  %1004 = load i32, ptr %54, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds double, ptr %1003, i64 %1005
  %1007 = load ptr, ptr %34, align 8, !tbaa !5
  %1008 = load ptr, ptr %46, align 8, !tbaa !5
  %1009 = load i32, ptr %73, align 4, !tbaa !9
  %1010 = load i32, ptr %74, align 4, !tbaa !9
  %1011 = mul nsw i32 %1009, %1010
  %1012 = add nsw i32 %1011, 1
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds double, ptr %1008, i64 %1013
  %1015 = load ptr, ptr %45, align 8, !tbaa !5
  %1016 = getelementptr inbounds double, ptr %1015, i64 2
  %1017 = load ptr, ptr %46, align 8, !tbaa !5
  %1018 = load i32, ptr %73, align 4, !tbaa !9
  %1019 = shl i32 %1018, 1
  %1020 = load i32, ptr %74, align 4, !tbaa !9
  %1021 = mul nsw i32 %1019, %1020
  %1022 = add nsw i32 %1021, 1
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds double, ptr %1017, i64 %1023
  %1025 = load ptr, ptr %48, align 8, !tbaa !5
  %1026 = getelementptr inbounds i32, ptr %1025, i64 1
  call void @dtgsyl_(ptr noundef @.str.4, ptr noundef %85, ptr noundef %74, ptr noundef %73, ptr noundef %985, ptr noundef %986, ptr noundef %990, ptr noundef %991, ptr noundef %993, ptr noundef %74, ptr noundef %1001, ptr noundef %1002, ptr noundef %1006, ptr noundef %1007, ptr noundef %1014, ptr noundef %74, ptr noundef %78, ptr noundef %1016, ptr noundef %1024, ptr noundef %59, ptr noundef %1026, ptr noundef %64)
  br label %1323

1027:                                             ; preds = %902
  store i32 0, ptr %62, align 4, !tbaa !9
  %1028 = load ptr, ptr %42, align 8, !tbaa !5
  %1029 = load i32, ptr %1028, align 4, !tbaa !9
  store i32 %1029, ptr %73, align 4, !tbaa !9
  %1030 = load ptr, ptr %30, align 8, !tbaa !5
  %1031 = load i32, ptr %1030, align 4, !tbaa !9
  %1032 = load ptr, ptr %42, align 8, !tbaa !5
  %1033 = load i32, ptr %1032, align 4, !tbaa !9
  %1034 = sub nsw i32 %1031, %1033
  store i32 %1034, ptr %74, align 4, !tbaa !9
  %1035 = load i32, ptr %73, align 4, !tbaa !9
  %1036 = add nsw i32 %1035, 1
  store i32 %1036, ptr %67, align 4, !tbaa !9
  store i32 0, ptr %85, align 4, !tbaa !9
  %1037 = load i32, ptr %73, align 4, !tbaa !9
  %1038 = shl i32 %1037, 1
  %1039 = load i32, ptr %74, align 4, !tbaa !9
  %1040 = mul nsw i32 %1038, %1039
  store i32 %1040, ptr %83, align 4, !tbaa !9
  br label %1041

1041:                                             ; preds = %1173, %1027
  %1042 = load ptr, ptr %46, align 8, !tbaa !5
  %1043 = load i32, ptr %83, align 4, !tbaa !9
  %1044 = add nsw i32 %1043, 1
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1042, i64 %1045
  %1047 = load ptr, ptr %46, align 8, !tbaa !5
  %1048 = getelementptr inbounds double, ptr %1047, i64 1
  %1049 = load ptr, ptr %48, align 8, !tbaa !5
  %1050 = getelementptr inbounds i32, ptr %1049, i64 1
  %1051 = load ptr, ptr %45, align 8, !tbaa !5
  %1052 = getelementptr inbounds double, ptr %1051, i64 1
  %1053 = getelementptr inbounds [3 x i32], ptr %69, i64 0, i64 0
  call void @dlacn2_(ptr noundef %83, ptr noundef %1046, ptr noundef %1048, ptr noundef %1050, ptr noundef %1052, ptr noundef %62, ptr noundef %1053)
  %1054 = load i32, ptr %62, align 4, !tbaa !9
  %1055 = icmp ne i32 %1054, 0
  br i1 %1055, label %1056, label %1174

1056:                                             ; preds = %1041
  %1057 = load i32, ptr %62, align 4, !tbaa !9
  %1058 = icmp eq i32 %1057, 1
  br i1 %1058, label %1059, label %1116

1059:                                             ; preds = %1056
  %1060 = load ptr, ptr %47, align 8, !tbaa !5
  %1061 = load i32, ptr %1060, align 4, !tbaa !9
  %1062 = load i32, ptr %73, align 4, !tbaa !9
  %1063 = shl i32 %1062, 1
  %1064 = load i32, ptr %74, align 4, !tbaa !9
  %1065 = mul nsw i32 %1063, %1064
  %1066 = sub nsw i32 %1061, %1065
  store i32 %1066, ptr %59, align 4, !tbaa !9
  %1067 = load ptr, ptr %31, align 8, !tbaa !5
  %1068 = load i32, ptr %52, align 4, !tbaa !9
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds double, ptr %1067, i64 %1069
  %1071 = load ptr, ptr %32, align 8, !tbaa !5
  %1072 = load ptr, ptr %31, align 8, !tbaa !5
  %1073 = load i32, ptr %67, align 4, !tbaa !9
  %1074 = load i32, ptr %67, align 4, !tbaa !9
  %1075 = load i32, ptr %51, align 4, !tbaa !9
  %1076 = mul nsw i32 %1074, %1075
  %1077 = add nsw i32 %1073, %1076
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds double, ptr %1072, i64 %1078
  %1080 = load ptr, ptr %32, align 8, !tbaa !5
  %1081 = load ptr, ptr %46, align 8, !tbaa !5
  %1082 = getelementptr inbounds double, ptr %1081, i64 1
  %1083 = load ptr, ptr %33, align 8, !tbaa !5
  %1084 = load i32, ptr %54, align 4, !tbaa !9
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds double, ptr %1083, i64 %1085
  %1087 = load ptr, ptr %34, align 8, !tbaa !5
  %1088 = load ptr, ptr %33, align 8, !tbaa !5
  %1089 = load i32, ptr %67, align 4, !tbaa !9
  %1090 = load i32, ptr %67, align 4, !tbaa !9
  %1091 = load i32, ptr %53, align 4, !tbaa !9
  %1092 = mul nsw i32 %1090, %1091
  %1093 = add nsw i32 %1089, %1092
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds double, ptr %1088, i64 %1094
  %1096 = load ptr, ptr %34, align 8, !tbaa !5
  %1097 = load ptr, ptr %46, align 8, !tbaa !5
  %1098 = load i32, ptr %73, align 4, !tbaa !9
  %1099 = load i32, ptr %74, align 4, !tbaa !9
  %1100 = mul nsw i32 %1098, %1099
  %1101 = add nsw i32 %1100, 1
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds double, ptr %1097, i64 %1102
  %1104 = load ptr, ptr %45, align 8, !tbaa !5
  %1105 = getelementptr inbounds double, ptr %1104, i64 1
  %1106 = load ptr, ptr %46, align 8, !tbaa !5
  %1107 = load i32, ptr %73, align 4, !tbaa !9
  %1108 = shl i32 %1107, 1
  %1109 = load i32, ptr %74, align 4, !tbaa !9
  %1110 = mul nsw i32 %1108, %1109
  %1111 = add nsw i32 %1110, 1
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1106, i64 %1112
  %1114 = load ptr, ptr %48, align 8, !tbaa !5
  %1115 = getelementptr inbounds i32, ptr %1114, i64 1
  call void @dtgsyl_(ptr noundef @.str.4, ptr noundef %85, ptr noundef %73, ptr noundef %74, ptr noundef %1070, ptr noundef %1071, ptr noundef %1079, ptr noundef %1080, ptr noundef %1082, ptr noundef %73, ptr noundef %1086, ptr noundef %1087, ptr noundef %1095, ptr noundef %1096, ptr noundef %1103, ptr noundef %73, ptr noundef %78, ptr noundef %1105, ptr noundef %1113, ptr noundef %59, ptr noundef %1115, ptr noundef %64)
  br label %1173

1116:                                             ; preds = %1056
  %1117 = load ptr, ptr %47, align 8, !tbaa !5
  %1118 = load i32, ptr %1117, align 4, !tbaa !9
  %1119 = load i32, ptr %73, align 4, !tbaa !9
  %1120 = shl i32 %1119, 1
  %1121 = load i32, ptr %74, align 4, !tbaa !9
  %1122 = mul nsw i32 %1120, %1121
  %1123 = sub nsw i32 %1118, %1122
  store i32 %1123, ptr %59, align 4, !tbaa !9
  %1124 = load ptr, ptr %31, align 8, !tbaa !5
  %1125 = load i32, ptr %52, align 4, !tbaa !9
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds double, ptr %1124, i64 %1126
  %1128 = load ptr, ptr %32, align 8, !tbaa !5
  %1129 = load ptr, ptr %31, align 8, !tbaa !5
  %1130 = load i32, ptr %67, align 4, !tbaa !9
  %1131 = load i32, ptr %67, align 4, !tbaa !9
  %1132 = load i32, ptr %51, align 4, !tbaa !9
  %1133 = mul nsw i32 %1131, %1132
  %1134 = add nsw i32 %1130, %1133
  %1135 = sext i32 %1134 to i64
  %1136 = getelementptr inbounds double, ptr %1129, i64 %1135
  %1137 = load ptr, ptr %32, align 8, !tbaa !5
  %1138 = load ptr, ptr %46, align 8, !tbaa !5
  %1139 = getelementptr inbounds double, ptr %1138, i64 1
  %1140 = load ptr, ptr %33, align 8, !tbaa !5
  %1141 = load i32, ptr %54, align 4, !tbaa !9
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds double, ptr %1140, i64 %1142
  %1144 = load ptr, ptr %34, align 8, !tbaa !5
  %1145 = load ptr, ptr %33, align 8, !tbaa !5
  %1146 = load i32, ptr %67, align 4, !tbaa !9
  %1147 = load i32, ptr %67, align 4, !tbaa !9
  %1148 = load i32, ptr %53, align 4, !tbaa !9
  %1149 = mul nsw i32 %1147, %1148
  %1150 = add nsw i32 %1146, %1149
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds double, ptr %1145, i64 %1151
  %1153 = load ptr, ptr %34, align 8, !tbaa !5
  %1154 = load ptr, ptr %46, align 8, !tbaa !5
  %1155 = load i32, ptr %73, align 4, !tbaa !9
  %1156 = load i32, ptr %74, align 4, !tbaa !9
  %1157 = mul nsw i32 %1155, %1156
  %1158 = add nsw i32 %1157, 1
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds double, ptr %1154, i64 %1159
  %1161 = load ptr, ptr %45, align 8, !tbaa !5
  %1162 = getelementptr inbounds double, ptr %1161, i64 1
  %1163 = load ptr, ptr %46, align 8, !tbaa !5
  %1164 = load i32, ptr %73, align 4, !tbaa !9
  %1165 = shl i32 %1164, 1
  %1166 = load i32, ptr %74, align 4, !tbaa !9
  %1167 = mul nsw i32 %1165, %1166
  %1168 = add nsw i32 %1167, 1
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds double, ptr %1163, i64 %1169
  %1171 = load ptr, ptr %48, align 8, !tbaa !5
  %1172 = getelementptr inbounds i32, ptr %1171, i64 1
  call void @dtgsyl_(ptr noundef @.str.5, ptr noundef %85, ptr noundef %73, ptr noundef %74, ptr noundef %1127, ptr noundef %1128, ptr noundef %1136, ptr noundef %1137, ptr noundef %1139, ptr noundef %73, ptr noundef %1143, ptr noundef %1144, ptr noundef %1152, ptr noundef %1153, ptr noundef %1160, ptr noundef %73, ptr noundef %78, ptr noundef %1162, ptr noundef %1170, ptr noundef %59, ptr noundef %1172, ptr noundef %64)
  br label %1173

1173:                                             ; preds = %1116, %1059
  br label %1041

1174:                                             ; preds = %1041
  %1175 = load double, ptr %78, align 8, !tbaa !11
  %1176 = load ptr, ptr %45, align 8, !tbaa !5
  %1177 = getelementptr inbounds double, ptr %1176, i64 1
  %1178 = load double, ptr %1177, align 8, !tbaa !11
  %1179 = fdiv double %1175, %1178
  %1180 = load ptr, ptr %45, align 8, !tbaa !5
  %1181 = getelementptr inbounds double, ptr %1180, i64 1
  store double %1179, ptr %1181, align 8, !tbaa !11
  br label %1182

1182:                                             ; preds = %1314, %1174
  %1183 = load ptr, ptr %46, align 8, !tbaa !5
  %1184 = load i32, ptr %83, align 4, !tbaa !9
  %1185 = add nsw i32 %1184, 1
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds double, ptr %1183, i64 %1186
  %1188 = load ptr, ptr %46, align 8, !tbaa !5
  %1189 = getelementptr inbounds double, ptr %1188, i64 1
  %1190 = load ptr, ptr %48, align 8, !tbaa !5
  %1191 = getelementptr inbounds i32, ptr %1190, i64 1
  %1192 = load ptr, ptr %45, align 8, !tbaa !5
  %1193 = getelementptr inbounds double, ptr %1192, i64 2
  %1194 = getelementptr inbounds [3 x i32], ptr %69, i64 0, i64 0
  call void @dlacn2_(ptr noundef %83, ptr noundef %1187, ptr noundef %1189, ptr noundef %1191, ptr noundef %1193, ptr noundef %62, ptr noundef %1194)
  %1195 = load i32, ptr %62, align 4, !tbaa !9
  %1196 = icmp ne i32 %1195, 0
  br i1 %1196, label %1197, label %1315

1197:                                             ; preds = %1182
  %1198 = load i32, ptr %62, align 4, !tbaa !9
  %1199 = icmp eq i32 %1198, 1
  br i1 %1199, label %1200, label %1257

1200:                                             ; preds = %1197
  %1201 = load ptr, ptr %47, align 8, !tbaa !5
  %1202 = load i32, ptr %1201, align 4, !tbaa !9
  %1203 = load i32, ptr %73, align 4, !tbaa !9
  %1204 = shl i32 %1203, 1
  %1205 = load i32, ptr %74, align 4, !tbaa !9
  %1206 = mul nsw i32 %1204, %1205
  %1207 = sub nsw i32 %1202, %1206
  store i32 %1207, ptr %59, align 4, !tbaa !9
  %1208 = load ptr, ptr %31, align 8, !tbaa !5
  %1209 = load i32, ptr %67, align 4, !tbaa !9
  %1210 = load i32, ptr %67, align 4, !tbaa !9
  %1211 = load i32, ptr %51, align 4, !tbaa !9
  %1212 = mul nsw i32 %1210, %1211
  %1213 = add nsw i32 %1209, %1212
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds double, ptr %1208, i64 %1214
  %1216 = load ptr, ptr %32, align 8, !tbaa !5
  %1217 = load ptr, ptr %31, align 8, !tbaa !5
  %1218 = load i32, ptr %52, align 4, !tbaa !9
  %1219 = sext i32 %1218 to i64
  %1220 = getelementptr inbounds double, ptr %1217, i64 %1219
  %1221 = load ptr, ptr %32, align 8, !tbaa !5
  %1222 = load ptr, ptr %46, align 8, !tbaa !5
  %1223 = getelementptr inbounds double, ptr %1222, i64 1
  %1224 = load ptr, ptr %33, align 8, !tbaa !5
  %1225 = load i32, ptr %67, align 4, !tbaa !9
  %1226 = load i32, ptr %67, align 4, !tbaa !9
  %1227 = load i32, ptr %53, align 4, !tbaa !9
  %1228 = mul nsw i32 %1226, %1227
  %1229 = add nsw i32 %1225, %1228
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds double, ptr %1224, i64 %1230
  %1232 = load ptr, ptr %34, align 8, !tbaa !5
  %1233 = load ptr, ptr %33, align 8, !tbaa !5
  %1234 = load i32, ptr %54, align 4, !tbaa !9
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds double, ptr %1233, i64 %1235
  %1237 = load ptr, ptr %34, align 8, !tbaa !5
  %1238 = load ptr, ptr %46, align 8, !tbaa !5
  %1239 = load i32, ptr %73, align 4, !tbaa !9
  %1240 = load i32, ptr %74, align 4, !tbaa !9
  %1241 = mul nsw i32 %1239, %1240
  %1242 = add nsw i32 %1241, 1
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds double, ptr %1238, i64 %1243
  %1245 = load ptr, ptr %45, align 8, !tbaa !5
  %1246 = getelementptr inbounds double, ptr %1245, i64 2
  %1247 = load ptr, ptr %46, align 8, !tbaa !5
  %1248 = load i32, ptr %73, align 4, !tbaa !9
  %1249 = shl i32 %1248, 1
  %1250 = load i32, ptr %74, align 4, !tbaa !9
  %1251 = mul nsw i32 %1249, %1250
  %1252 = add nsw i32 %1251, 1
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds double, ptr %1247, i64 %1253
  %1255 = load ptr, ptr %48, align 8, !tbaa !5
  %1256 = getelementptr inbounds i32, ptr %1255, i64 1
  call void @dtgsyl_(ptr noundef @.str.4, ptr noundef %85, ptr noundef %74, ptr noundef %73, ptr noundef %1215, ptr noundef %1216, ptr noundef %1220, ptr noundef %1221, ptr noundef %1223, ptr noundef %74, ptr noundef %1231, ptr noundef %1232, ptr noundef %1236, ptr noundef %1237, ptr noundef %1244, ptr noundef %74, ptr noundef %78, ptr noundef %1246, ptr noundef %1254, ptr noundef %59, ptr noundef %1256, ptr noundef %64)
  br label %1314

1257:                                             ; preds = %1197
  %1258 = load ptr, ptr %47, align 8, !tbaa !5
  %1259 = load i32, ptr %1258, align 4, !tbaa !9
  %1260 = load i32, ptr %73, align 4, !tbaa !9
  %1261 = shl i32 %1260, 1
  %1262 = load i32, ptr %74, align 4, !tbaa !9
  %1263 = mul nsw i32 %1261, %1262
  %1264 = sub nsw i32 %1259, %1263
  store i32 %1264, ptr %59, align 4, !tbaa !9
  %1265 = load ptr, ptr %31, align 8, !tbaa !5
  %1266 = load i32, ptr %67, align 4, !tbaa !9
  %1267 = load i32, ptr %67, align 4, !tbaa !9
  %1268 = load i32, ptr %51, align 4, !tbaa !9
  %1269 = mul nsw i32 %1267, %1268
  %1270 = add nsw i32 %1266, %1269
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds double, ptr %1265, i64 %1271
  %1273 = load ptr, ptr %32, align 8, !tbaa !5
  %1274 = load ptr, ptr %31, align 8, !tbaa !5
  %1275 = load i32, ptr %52, align 4, !tbaa !9
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds double, ptr %1274, i64 %1276
  %1278 = load ptr, ptr %32, align 8, !tbaa !5
  %1279 = load ptr, ptr %46, align 8, !tbaa !5
  %1280 = getelementptr inbounds double, ptr %1279, i64 1
  %1281 = load ptr, ptr %33, align 8, !tbaa !5
  %1282 = load i32, ptr %67, align 4, !tbaa !9
  %1283 = load i32, ptr %67, align 4, !tbaa !9
  %1284 = load i32, ptr %53, align 4, !tbaa !9
  %1285 = mul nsw i32 %1283, %1284
  %1286 = add nsw i32 %1282, %1285
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds double, ptr %1281, i64 %1287
  %1289 = load ptr, ptr %34, align 8, !tbaa !5
  %1290 = load ptr, ptr %33, align 8, !tbaa !5
  %1291 = load i32, ptr %54, align 4, !tbaa !9
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds double, ptr %1290, i64 %1292
  %1294 = load ptr, ptr %34, align 8, !tbaa !5
  %1295 = load ptr, ptr %46, align 8, !tbaa !5
  %1296 = load i32, ptr %73, align 4, !tbaa !9
  %1297 = load i32, ptr %74, align 4, !tbaa !9
  %1298 = mul nsw i32 %1296, %1297
  %1299 = add nsw i32 %1298, 1
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1295, i64 %1300
  %1302 = load ptr, ptr %45, align 8, !tbaa !5
  %1303 = getelementptr inbounds double, ptr %1302, i64 2
  %1304 = load ptr, ptr %46, align 8, !tbaa !5
  %1305 = load i32, ptr %73, align 4, !tbaa !9
  %1306 = shl i32 %1305, 1
  %1307 = load i32, ptr %74, align 4, !tbaa !9
  %1308 = mul nsw i32 %1306, %1307
  %1309 = add nsw i32 %1308, 1
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds double, ptr %1304, i64 %1310
  %1312 = load ptr, ptr %48, align 8, !tbaa !5
  %1313 = getelementptr inbounds i32, ptr %1312, i64 1
  call void @dtgsyl_(ptr noundef @.str.5, ptr noundef %85, ptr noundef %74, ptr noundef %73, ptr noundef %1272, ptr noundef %1273, ptr noundef %1277, ptr noundef %1278, ptr noundef %1280, ptr noundef %74, ptr noundef %1288, ptr noundef %1289, ptr noundef %1293, ptr noundef %1294, ptr noundef %1301, ptr noundef %74, ptr noundef %78, ptr noundef %1303, ptr noundef %1311, ptr noundef %59, ptr noundef %1313, ptr noundef %64)
  br label %1314

1314:                                             ; preds = %1257, %1200
  br label %1182

1315:                                             ; preds = %1182
  %1316 = load double, ptr %78, align 8, !tbaa !11
  %1317 = load ptr, ptr %45, align 8, !tbaa !5
  %1318 = getelementptr inbounds double, ptr %1317, i64 2
  %1319 = load double, ptr %1318, align 8, !tbaa !11
  %1320 = fdiv double %1316, %1319
  %1321 = load ptr, ptr %45, align 8, !tbaa !5
  %1322 = getelementptr inbounds double, ptr %1321, i64 2
  store double %1320, ptr %1322, align 8, !tbaa !11
  br label %1323

1323:                                             ; preds = %1315, %905
  br label %1324

1324:                                             ; preds = %1323, %899
  br label %1325

1325:                                             ; preds = %1324, %719, %615
  store i32 0, ptr %63, align 4, !tbaa !9
  %1326 = load ptr, ptr %30, align 8, !tbaa !5
  %1327 = load i32, ptr %1326, align 4, !tbaa !9
  store i32 %1327, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1328

1328:                                             ; preds = %1634, %1325
  %1329 = load i32, ptr %68, align 4, !tbaa !9
  %1330 = load i32, ptr %59, align 4, !tbaa !9
  %1331 = icmp sle i32 %1329, %1330
  br i1 %1331, label %1332, label %1637

1332:                                             ; preds = %1328
  %1333 = load i32, ptr %63, align 4, !tbaa !9
  %1334 = icmp ne i32 %1333, 0
  br i1 %1334, label %1335, label %1336

1335:                                             ; preds = %1332
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %1633

1336:                                             ; preds = %1332
  %1337 = load i32, ptr %68, align 4, !tbaa !9
  %1338 = load ptr, ptr %30, align 8, !tbaa !5
  %1339 = load i32, ptr %1338, align 4, !tbaa !9
  %1340 = icmp slt i32 %1337, %1339
  br i1 %1340, label %1341, label %1355

1341:                                             ; preds = %1336
  %1342 = load ptr, ptr %31, align 8, !tbaa !5
  %1343 = load i32, ptr %68, align 4, !tbaa !9
  %1344 = add nsw i32 %1343, 1
  %1345 = load i32, ptr %68, align 4, !tbaa !9
  %1346 = load i32, ptr %51, align 4, !tbaa !9
  %1347 = mul nsw i32 %1345, %1346
  %1348 = add nsw i32 %1344, %1347
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds double, ptr %1342, i64 %1349
  %1351 = load double, ptr %1350, align 8, !tbaa !11
  %1352 = fcmp une double %1351, 0.000000e+00
  br i1 %1352, label %1353, label %1354

1353:                                             ; preds = %1341
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %1354

1354:                                             ; preds = %1353, %1341
  br label %1355

1355:                                             ; preds = %1354, %1336
  %1356 = load i32, ptr %63, align 4, !tbaa !9
  %1357 = icmp ne i32 %1356, 0
  br i1 %1357, label %1358, label %1495

1358:                                             ; preds = %1355
  %1359 = load ptr, ptr %31, align 8, !tbaa !5
  %1360 = load i32, ptr %68, align 4, !tbaa !9
  %1361 = load i32, ptr %68, align 4, !tbaa !9
  %1362 = load i32, ptr %51, align 4, !tbaa !9
  %1363 = mul nsw i32 %1361, %1362
  %1364 = add nsw i32 %1360, %1363
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds double, ptr %1359, i64 %1365
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = load ptr, ptr %46, align 8, !tbaa !5
  %1369 = getelementptr inbounds double, ptr %1368, i64 1
  store double %1367, ptr %1369, align 8, !tbaa !11
  %1370 = load ptr, ptr %31, align 8, !tbaa !5
  %1371 = load i32, ptr %68, align 4, !tbaa !9
  %1372 = add nsw i32 %1371, 1
  %1373 = load i32, ptr %68, align 4, !tbaa !9
  %1374 = load i32, ptr %51, align 4, !tbaa !9
  %1375 = mul nsw i32 %1373, %1374
  %1376 = add nsw i32 %1372, %1375
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds double, ptr %1370, i64 %1377
  %1379 = load double, ptr %1378, align 8, !tbaa !11
  %1380 = load ptr, ptr %46, align 8, !tbaa !5
  %1381 = getelementptr inbounds double, ptr %1380, i64 2
  store double %1379, ptr %1381, align 8, !tbaa !11
  %1382 = load ptr, ptr %31, align 8, !tbaa !5
  %1383 = load i32, ptr %68, align 4, !tbaa !9
  %1384 = load i32, ptr %68, align 4, !tbaa !9
  %1385 = add nsw i32 %1384, 1
  %1386 = load i32, ptr %51, align 4, !tbaa !9
  %1387 = mul nsw i32 %1385, %1386
  %1388 = add nsw i32 %1383, %1387
  %1389 = sext i32 %1388 to i64
  %1390 = getelementptr inbounds double, ptr %1382, i64 %1389
  %1391 = load double, ptr %1390, align 8, !tbaa !11
  %1392 = load ptr, ptr %46, align 8, !tbaa !5
  %1393 = getelementptr inbounds double, ptr %1392, i64 3
  store double %1391, ptr %1393, align 8, !tbaa !11
  %1394 = load ptr, ptr %31, align 8, !tbaa !5
  %1395 = load i32, ptr %68, align 4, !tbaa !9
  %1396 = add nsw i32 %1395, 1
  %1397 = load i32, ptr %68, align 4, !tbaa !9
  %1398 = add nsw i32 %1397, 1
  %1399 = load i32, ptr %51, align 4, !tbaa !9
  %1400 = mul nsw i32 %1398, %1399
  %1401 = add nsw i32 %1396, %1400
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds double, ptr %1394, i64 %1402
  %1404 = load double, ptr %1403, align 8, !tbaa !11
  %1405 = load ptr, ptr %46, align 8, !tbaa !5
  %1406 = getelementptr inbounds double, ptr %1405, i64 4
  store double %1404, ptr %1406, align 8, !tbaa !11
  %1407 = load ptr, ptr %33, align 8, !tbaa !5
  %1408 = load i32, ptr %68, align 4, !tbaa !9
  %1409 = load i32, ptr %68, align 4, !tbaa !9
  %1410 = load i32, ptr %53, align 4, !tbaa !9
  %1411 = mul nsw i32 %1409, %1410
  %1412 = add nsw i32 %1408, %1411
  %1413 = sext i32 %1412 to i64
  %1414 = getelementptr inbounds double, ptr %1407, i64 %1413
  %1415 = load double, ptr %1414, align 8, !tbaa !11
  %1416 = load ptr, ptr %46, align 8, !tbaa !5
  %1417 = getelementptr inbounds double, ptr %1416, i64 5
  store double %1415, ptr %1417, align 8, !tbaa !11
  %1418 = load ptr, ptr %33, align 8, !tbaa !5
  %1419 = load i32, ptr %68, align 4, !tbaa !9
  %1420 = add nsw i32 %1419, 1
  %1421 = load i32, ptr %68, align 4, !tbaa !9
  %1422 = load i32, ptr %53, align 4, !tbaa !9
  %1423 = mul nsw i32 %1421, %1422
  %1424 = add nsw i32 %1420, %1423
  %1425 = sext i32 %1424 to i64
  %1426 = getelementptr inbounds double, ptr %1418, i64 %1425
  %1427 = load double, ptr %1426, align 8, !tbaa !11
  %1428 = load ptr, ptr %46, align 8, !tbaa !5
  %1429 = getelementptr inbounds double, ptr %1428, i64 6
  store double %1427, ptr %1429, align 8, !tbaa !11
  %1430 = load ptr, ptr %33, align 8, !tbaa !5
  %1431 = load i32, ptr %68, align 4, !tbaa !9
  %1432 = load i32, ptr %68, align 4, !tbaa !9
  %1433 = add nsw i32 %1432, 1
  %1434 = load i32, ptr %53, align 4, !tbaa !9
  %1435 = mul nsw i32 %1433, %1434
  %1436 = add nsw i32 %1431, %1435
  %1437 = sext i32 %1436 to i64
  %1438 = getelementptr inbounds double, ptr %1430, i64 %1437
  %1439 = load double, ptr %1438, align 8, !tbaa !11
  %1440 = load ptr, ptr %46, align 8, !tbaa !5
  %1441 = getelementptr inbounds double, ptr %1440, i64 7
  store double %1439, ptr %1441, align 8, !tbaa !11
  %1442 = load ptr, ptr %33, align 8, !tbaa !5
  %1443 = load i32, ptr %68, align 4, !tbaa !9
  %1444 = add nsw i32 %1443, 1
  %1445 = load i32, ptr %68, align 4, !tbaa !9
  %1446 = add nsw i32 %1445, 1
  %1447 = load i32, ptr %53, align 4, !tbaa !9
  %1448 = mul nsw i32 %1446, %1447
  %1449 = add nsw i32 %1444, %1448
  %1450 = sext i32 %1449 to i64
  %1451 = getelementptr inbounds double, ptr %1442, i64 %1450
  %1452 = load double, ptr %1451, align 8, !tbaa !11
  %1453 = load ptr, ptr %46, align 8, !tbaa !5
  %1454 = getelementptr inbounds double, ptr %1453, i64 8
  store double %1452, ptr %1454, align 8, !tbaa !11
  %1455 = load double, ptr %82, align 8, !tbaa !11
  %1456 = load double, ptr %86, align 8, !tbaa !11
  %1457 = fmul double %1455, %1456
  store double %1457, ptr %61, align 8, !tbaa !11
  %1458 = load ptr, ptr %46, align 8, !tbaa !5
  %1459 = getelementptr inbounds double, ptr %1458, i64 1
  %1460 = load ptr, ptr %46, align 8, !tbaa !5
  %1461 = getelementptr inbounds double, ptr %1460, i64 5
  %1462 = load ptr, ptr %37, align 8, !tbaa !5
  %1463 = load i32, ptr %68, align 4, !tbaa !9
  %1464 = sext i32 %1463 to i64
  %1465 = getelementptr inbounds double, ptr %1462, i64 %1464
  %1466 = load ptr, ptr %37, align 8, !tbaa !5
  %1467 = load i32, ptr %68, align 4, !tbaa !9
  %1468 = add nsw i32 %1467, 1
  %1469 = sext i32 %1468 to i64
  %1470 = getelementptr inbounds double, ptr %1466, i64 %1469
  %1471 = load ptr, ptr %35, align 8, !tbaa !5
  %1472 = load i32, ptr %68, align 4, !tbaa !9
  %1473 = sext i32 %1472 to i64
  %1474 = getelementptr inbounds double, ptr %1471, i64 %1473
  %1475 = load ptr, ptr %35, align 8, !tbaa !5
  %1476 = load i32, ptr %68, align 4, !tbaa !9
  %1477 = add nsw i32 %1476, 1
  %1478 = sext i32 %1477 to i64
  %1479 = getelementptr inbounds double, ptr %1475, i64 %1478
  %1480 = load ptr, ptr %36, align 8, !tbaa !5
  %1481 = load i32, ptr %68, align 4, !tbaa !9
  %1482 = sext i32 %1481 to i64
  %1483 = getelementptr inbounds double, ptr %1480, i64 %1482
  call void @dlag2_(ptr noundef %1459, ptr noundef @c__2, ptr noundef %1461, ptr noundef @c__2, ptr noundef %61, ptr noundef %1465, ptr noundef %1470, ptr noundef %1474, ptr noundef %1479, ptr noundef %1483)
  %1484 = load ptr, ptr %36, align 8, !tbaa !5
  %1485 = load i32, ptr %68, align 4, !tbaa !9
  %1486 = sext i32 %1485 to i64
  %1487 = getelementptr inbounds double, ptr %1484, i64 %1486
  %1488 = load double, ptr %1487, align 8, !tbaa !11
  %1489 = fneg double %1488
  %1490 = load ptr, ptr %36, align 8, !tbaa !5
  %1491 = load i32, ptr %68, align 4, !tbaa !9
  %1492 = add nsw i32 %1491, 1
  %1493 = sext i32 %1492 to i64
  %1494 = getelementptr inbounds double, ptr %1490, i64 %1493
  store double %1489, ptr %1494, align 8, !tbaa !11
  br label %1632

1495:                                             ; preds = %1355
  %1496 = load ptr, ptr %33, align 8, !tbaa !5
  %1497 = load i32, ptr %68, align 4, !tbaa !9
  %1498 = load i32, ptr %68, align 4, !tbaa !9
  %1499 = load i32, ptr %53, align 4, !tbaa !9
  %1500 = mul nsw i32 %1498, %1499
  %1501 = add nsw i32 %1497, %1500
  %1502 = sext i32 %1501 to i64
  %1503 = getelementptr inbounds double, ptr %1496, i64 %1502
  %1504 = load double, ptr %1503, align 8, !tbaa !11
  %1505 = fcmp oge double %1504, 0.000000e+00
  br i1 %1505, label %1506, label %1516

1506:                                             ; preds = %1495
  %1507 = load double, ptr @c_b28, align 8, !tbaa !11
  %1508 = fcmp oge double %1507, 0.000000e+00
  br i1 %1508, label %1509, label %1511

1509:                                             ; preds = %1506
  %1510 = load double, ptr @c_b28, align 8, !tbaa !11
  br label %1514

1511:                                             ; preds = %1506
  %1512 = load double, ptr @c_b28, align 8, !tbaa !11
  %1513 = fneg double %1512
  br label %1514

1514:                                             ; preds = %1511, %1509
  %1515 = phi double [ %1510, %1509 ], [ %1513, %1511 ]
  br label %1527

1516:                                             ; preds = %1495
  %1517 = load double, ptr @c_b28, align 8, !tbaa !11
  %1518 = fcmp oge double %1517, 0.000000e+00
  br i1 %1518, label %1519, label %1521

1519:                                             ; preds = %1516
  %1520 = load double, ptr @c_b28, align 8, !tbaa !11
  br label %1524

1521:                                             ; preds = %1516
  %1522 = load double, ptr @c_b28, align 8, !tbaa !11
  %1523 = fneg double %1522
  br label %1524

1524:                                             ; preds = %1521, %1519
  %1525 = phi double [ %1520, %1519 ], [ %1523, %1521 ]
  %1526 = fneg double %1525
  br label %1527

1527:                                             ; preds = %1524, %1514
  %1528 = phi double [ %1515, %1514 ], [ %1526, %1524 ]
  %1529 = fcmp olt double %1528, 0.000000e+00
  br i1 %1529, label %1530, label %1601

1530:                                             ; preds = %1527
  %1531 = load ptr, ptr %30, align 8, !tbaa !5
  %1532 = load i32, ptr %1531, align 4, !tbaa !9
  store i32 %1532, ptr %60, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %1533

1533:                                             ; preds = %1597, %1530
  %1534 = load i32, ptr %67, align 4, !tbaa !9
  %1535 = load i32, ptr %60, align 4, !tbaa !9
  %1536 = icmp sle i32 %1534, %1535
  br i1 %1536, label %1537, label %1600

1537:                                             ; preds = %1533
  %1538 = load ptr, ptr %31, align 8, !tbaa !5
  %1539 = load i32, ptr %68, align 4, !tbaa !9
  %1540 = load i32, ptr %67, align 4, !tbaa !9
  %1541 = load i32, ptr %51, align 4, !tbaa !9
  %1542 = mul nsw i32 %1540, %1541
  %1543 = add nsw i32 %1539, %1542
  %1544 = sext i32 %1543 to i64
  %1545 = getelementptr inbounds double, ptr %1538, i64 %1544
  %1546 = load double, ptr %1545, align 8, !tbaa !11
  %1547 = fneg double %1546
  %1548 = load ptr, ptr %31, align 8, !tbaa !5
  %1549 = load i32, ptr %68, align 4, !tbaa !9
  %1550 = load i32, ptr %67, align 4, !tbaa !9
  %1551 = load i32, ptr %51, align 4, !tbaa !9
  %1552 = mul nsw i32 %1550, %1551
  %1553 = add nsw i32 %1549, %1552
  %1554 = sext i32 %1553 to i64
  %1555 = getelementptr inbounds double, ptr %1548, i64 %1554
  store double %1547, ptr %1555, align 8, !tbaa !11
  %1556 = load ptr, ptr %33, align 8, !tbaa !5
  %1557 = load i32, ptr %68, align 4, !tbaa !9
  %1558 = load i32, ptr %67, align 4, !tbaa !9
  %1559 = load i32, ptr %53, align 4, !tbaa !9
  %1560 = mul nsw i32 %1558, %1559
  %1561 = add nsw i32 %1557, %1560
  %1562 = sext i32 %1561 to i64
  %1563 = getelementptr inbounds double, ptr %1556, i64 %1562
  %1564 = load double, ptr %1563, align 8, !tbaa !11
  %1565 = fneg double %1564
  %1566 = load ptr, ptr %33, align 8, !tbaa !5
  %1567 = load i32, ptr %68, align 4, !tbaa !9
  %1568 = load i32, ptr %67, align 4, !tbaa !9
  %1569 = load i32, ptr %53, align 4, !tbaa !9
  %1570 = mul nsw i32 %1568, %1569
  %1571 = add nsw i32 %1567, %1570
  %1572 = sext i32 %1571 to i64
  %1573 = getelementptr inbounds double, ptr %1566, i64 %1572
  store double %1565, ptr %1573, align 8, !tbaa !11
  %1574 = load ptr, ptr %27, align 8, !tbaa !5
  %1575 = load i32, ptr %1574, align 4, !tbaa !9
  %1576 = icmp ne i32 %1575, 0
  br i1 %1576, label %1577, label %1596

1577:                                             ; preds = %1537
  %1578 = load ptr, ptr %38, align 8, !tbaa !5
  %1579 = load i32, ptr %67, align 4, !tbaa !9
  %1580 = load i32, ptr %68, align 4, !tbaa !9
  %1581 = load i32, ptr %55, align 4, !tbaa !9
  %1582 = mul nsw i32 %1580, %1581
  %1583 = add nsw i32 %1579, %1582
  %1584 = sext i32 %1583 to i64
  %1585 = getelementptr inbounds double, ptr %1578, i64 %1584
  %1586 = load double, ptr %1585, align 8, !tbaa !11
  %1587 = fneg double %1586
  %1588 = load ptr, ptr %38, align 8, !tbaa !5
  %1589 = load i32, ptr %67, align 4, !tbaa !9
  %1590 = load i32, ptr %68, align 4, !tbaa !9
  %1591 = load i32, ptr %55, align 4, !tbaa !9
  %1592 = mul nsw i32 %1590, %1591
  %1593 = add nsw i32 %1589, %1592
  %1594 = sext i32 %1593 to i64
  %1595 = getelementptr inbounds double, ptr %1588, i64 %1594
  store double %1587, ptr %1595, align 8, !tbaa !11
  br label %1596

1596:                                             ; preds = %1577, %1537
  br label %1597

1597:                                             ; preds = %1596
  %1598 = load i32, ptr %67, align 4, !tbaa !9
  %1599 = add nsw i32 %1598, 1
  store i32 %1599, ptr %67, align 4, !tbaa !9
  br label %1533, !llvm.loop !17

1600:                                             ; preds = %1533
  br label %1601

1601:                                             ; preds = %1600, %1527
  %1602 = load ptr, ptr %31, align 8, !tbaa !5
  %1603 = load i32, ptr %68, align 4, !tbaa !9
  %1604 = load i32, ptr %68, align 4, !tbaa !9
  %1605 = load i32, ptr %51, align 4, !tbaa !9
  %1606 = mul nsw i32 %1604, %1605
  %1607 = add nsw i32 %1603, %1606
  %1608 = sext i32 %1607 to i64
  %1609 = getelementptr inbounds double, ptr %1602, i64 %1608
  %1610 = load double, ptr %1609, align 8, !tbaa !11
  %1611 = load ptr, ptr %35, align 8, !tbaa !5
  %1612 = load i32, ptr %68, align 4, !tbaa !9
  %1613 = sext i32 %1612 to i64
  %1614 = getelementptr inbounds double, ptr %1611, i64 %1613
  store double %1610, ptr %1614, align 8, !tbaa !11
  %1615 = load ptr, ptr %36, align 8, !tbaa !5
  %1616 = load i32, ptr %68, align 4, !tbaa !9
  %1617 = sext i32 %1616 to i64
  %1618 = getelementptr inbounds double, ptr %1615, i64 %1617
  store double 0.000000e+00, ptr %1618, align 8, !tbaa !11
  %1619 = load ptr, ptr %33, align 8, !tbaa !5
  %1620 = load i32, ptr %68, align 4, !tbaa !9
  %1621 = load i32, ptr %68, align 4, !tbaa !9
  %1622 = load i32, ptr %53, align 4, !tbaa !9
  %1623 = mul nsw i32 %1621, %1622
  %1624 = add nsw i32 %1620, %1623
  %1625 = sext i32 %1624 to i64
  %1626 = getelementptr inbounds double, ptr %1619, i64 %1625
  %1627 = load double, ptr %1626, align 8, !tbaa !11
  %1628 = load ptr, ptr %37, align 8, !tbaa !5
  %1629 = load i32, ptr %68, align 4, !tbaa !9
  %1630 = sext i32 %1629 to i64
  %1631 = getelementptr inbounds double, ptr %1628, i64 %1630
  store double %1627, ptr %1631, align 8, !tbaa !11
  br label %1632

1632:                                             ; preds = %1601, %1358
  br label %1633

1633:                                             ; preds = %1632, %1335
  br label %1634

1634:                                             ; preds = %1633
  %1635 = load i32, ptr %68, align 4, !tbaa !9
  %1636 = add nsw i32 %1635, 1
  store i32 %1636, ptr %68, align 4, !tbaa !9
  br label %1328, !llvm.loop !18

1637:                                             ; preds = %1328
  %1638 = load i32, ptr %71, align 4, !tbaa !9
  %1639 = sitofp i32 %1638 to double
  %1640 = load ptr, ptr %46, align 8, !tbaa !5
  %1641 = getelementptr inbounds double, ptr %1640, i64 1
  store double %1639, ptr %1641, align 8, !tbaa !11
  %1642 = load i32, ptr %81, align 4, !tbaa !9
  %1643 = load ptr, ptr %48, align 8, !tbaa !5
  %1644 = getelementptr inbounds i32, ptr %1643, i64 1
  store i32 %1642, ptr %1644, align 4, !tbaa !9
  store i32 1, ptr %87, align 4
  br label %1645

1645:                                             ; preds = %1637, %555, %547, %239
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 12, 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 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "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 [7 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
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i32, align 4
@c_b28 = external hidden local_unnamed_addr global double, align 8

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

56:                                               ; preds = %25
  %57 = load i32, ptr %23, align 4, !tbaa !5
  %58 = icmp eq i32 %57, -1
  br label %59

59:                                               ; preds = %56, %25
  %60 = phi i1 [ true, %25 ], [ %58, %56 ]
  %61 = load i32, ptr %0, align 4, !tbaa !5
  %or.cond578 = icmp ugt i32 %61, 5
  br i1 %or.cond578, label %.thread, label %62

62:                                               ; preds = %59
  %63 = load i32, ptr %4, align 4, !tbaa !5
  %64 = icmp slt i32 %63, 0
  br i1 %64, label %.thread, label %65

65:                                               ; preds = %62
  %66 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %63, i32 1)
  %67 = icmp slt i32 %66, %spec.select
  br i1 %67, label %.thread, label %68

68:                                               ; preds = %65
  %69 = load i32, ptr %8, align 4, !tbaa !5
  %70 = icmp slt i32 %69, %spec.select
  br i1 %70, label %.thread, label %71

71:                                               ; preds = %68
  %72 = load i32, ptr %13, align 4, !tbaa !5
  %73 = icmp slt i32 %72, 1
  br i1 %73, label %.thread, label %74

74:                                               ; preds = %71
  %75 = load i32, ptr %1, align 4, !tbaa !5
  %.not = icmp ne i32 %75, 0
  %76 = icmp ult i32 %72, %63
  %or.cond592 = and i1 %76, %.not
  br i1 %or.cond592, label %.thread, label %77

77:                                               ; preds = %74
  %78 = load i32, ptr %15, align 4, !tbaa !5
  %79 = icmp slt i32 %78, 1
  br i1 %79, label %.thread, label %80

80:                                               ; preds = %77
  %81 = load i32, ptr %2, align 4, !tbaa !5
  %.not549 = icmp ne i32 %81, 0
  %82 = icmp ult i32 %78, %63
  %or.cond593 = and i1 %82, %.not549
  br i1 %or.cond593, label %.thread, label %84

.thread:                                          ; preds = %77, %80, %71, %74, %68, %65, %62, %59
  %.sink = phi i32 [ -1, %59 ], [ -5, %62 ], [ -7, %65 ], [ -9, %68 ], [ -14, %74 ], [ -14, %71 ], [ -16, %80 ], [ -16, %77 ]
  %.neg663 = phi i32 [ 1, %59 ], [ 5, %62 ], [ 7, %65 ], [ 9, %68 ], [ 14, %74 ], [ 14, %71 ], [ 16, %80 ], [ 16, %77 ]
  store i32 %.sink, ptr %24, align 4, !tbaa !5
  store i32 %.neg663, ptr %26, align 4, !tbaa !5
  %83 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %26, i32 noundef 6) #6
  br label %583

84:                                               ; preds = %80
  %85 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #6
  %86 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #6
  %87 = fdiv double %86, %85
  store i32 0, ptr %29, align 4, !tbaa !5
  %88 = load i32, ptr %0, align 4, !tbaa !5
  %89 = icmp eq i32 %88, 1
  %90 = icmp sgt i32 %88, 3
  %spec.select580 = or i1 %89, %90
  store i32 0, ptr %16, align 4, !tbaa !5
  br i1 %60, label %91, label %93

91:                                               ; preds = %84
  %92 = load i32, ptr %0, align 4, !tbaa !5
  %.not551 = icmp eq i32 %92, 0
  br i1 %.not551, label %.thread585, label %93

93:                                               ; preds = %91, %84
  %94 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %94, ptr %26, align 4, !tbaa !5
  %.not552596 = icmp slt i32 %94, 1
  br i1 %.not552596, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %93
  %95 = sext i32 %41 to i64
  %96 = add nuw i32 %94, 1
  %wide.trip.count = zext i32 %96 to i64
  %invariant.gep = getelementptr i8, ptr %43, i64 8
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %118
  %97 = phi i32 [ 0, %.lr.ph.preheader ], [ %119, %118 ]
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %118 ]
  %.0529597 = phi i32 [ 0, %.lr.ph.preheader ], [ %.1530, %118 ]
  %.not573 = icmp eq i32 %.0529597, 0
  br i1 %.not573, label %98, label %118

98:                                               ; preds = %.lr.ph
  %99 = load i32, ptr %4, align 4, !tbaa !5
  %100 = sext i32 %99 to i64
  %101 = icmp slt i64 %indvars.iv, %100
  br i1 %101, label %102, label %114

102:                                              ; preds = %98
  %103 = mul nsw i64 %indvars.iv, %95
  %gep665 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %104 = getelementptr double, ptr %gep665, i64 %103
  %105 = load double, ptr %104, align 8, !tbaa !9
  %106 = fcmp oeq double %105, 0.000000e+00
  %107 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv
  %108 = load i32, ptr %107, align 4, !tbaa !5
  %.not577 = icmp eq i32 %108, 0
  br i1 %106, label %109, label %110

109:                                              ; preds = %102
  br i1 %.not577, label %118, label %.sink.split

110:                                              ; preds = %102
  br i1 %.not577, label %111, label %.sink.split

111:                                              ; preds = %110
  %112 = getelementptr i32, ptr %3, i64 %indvars.iv
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %.not576 = icmp eq i32 %113, 0
  br i1 %.not576, label %118, label %.sink.split

114:                                              ; preds = %98
  %115 = getelementptr inbounds i32, ptr %40, i64 %100
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %.not574 = icmp eq i32 %116, 0
  br i1 %.not574, label %118, label %.sink.split

.sink.split:                                      ; preds = %114, %110, %111, %109
  %.sink679 = phi i32 [ 1, %109 ], [ 2, %111 ], [ 2, %110 ], [ 1, %114 ]
  %.1530.ph = phi i32 [ 0, %109 ], [ 1, %111 ], [ 1, %110 ], [ 0, %114 ]
  %117 = add nsw i32 %97, %.sink679
  store i32 %117, ptr %16, align 4, !tbaa !5
  br label %118

118:                                              ; preds = %.sink.split, %.lr.ph, %114, %109, %111
  %119 = phi i32 [ %97, %109 ], [ %97, %111 ], [ %97, %114 ], [ %97, %.lr.ph ], [ %117, %.sink.split ]
  %.1530 = phi i32 [ 0, %109 ], [ 1, %111 ], [ 0, %114 ], [ 0, %.lr.ph ], [ %.1530.ph, %.sink.split ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %118, %93
  %120 = phi i32 [ 0, %93 ], [ %119, %118 ]
  %.pr584 = load i32, ptr %0, align 4, !tbaa !5
  switch i32 %.pr584, label %.thread585 [
    i32 1, label %121
    i32 2, label %121
    i32 4, label %121
    i32 3, label %134
    i32 5, label %134
  ]

121:                                              ; preds = %._crit_edge, %._crit_edge, %._crit_edge
  %122 = load i32, ptr %4, align 4, !tbaa !5
  %123 = shl i32 %122, 2
  %124 = add nsw i32 %123, 16
  %125 = icmp slt i32 %123, -14
  %126 = select i1 %125, i32 1, i32 %124
  %127 = shl i32 %120, 1
  %128 = sub nsw i32 %122, %120
  %129 = mul nsw i32 %127, %128
  %130 = tail call i32 @llvm.smax.i32(i32 %126, i32 %129)
  %131 = add nsw i32 %122, 6
  %132 = icmp slt i32 %122, -4
  %133 = select i1 %132, i32 1, i32 %131
  br label %154

134:                                              ; preds = %._crit_edge, %._crit_edge
  %135 = load i32, ptr %4, align 4, !tbaa !5
  %136 = shl i32 %135, 2
  %137 = add nsw i32 %136, 16
  %138 = icmp slt i32 %136, -14
  %139 = select i1 %138, i32 1, i32 %137
  %140 = shl i32 %120, 2
  %141 = sub nsw i32 %135, %120
  %142 = mul nsw i32 %140, %141
  %143 = tail call i32 @llvm.smax.i32(i32 %139, i32 %142)
  %144 = shl i32 %120, 1
  %145 = mul nsw i32 %144, %141
  %146 = add nsw i32 %135, 6
  %147 = tail call i32 @llvm.smax.i32(i32 %145, i32 %146)
  %148 = tail call i32 @llvm.smax.i32(i32 %147, i32 1)
  br label %154

.thread585:                                       ; preds = %91, %._crit_edge
  %149 = load i32, ptr %4, align 4, !tbaa !5
  %150 = shl i32 %149, 2
  %151 = add nsw i32 %150, 16
  %152 = icmp slt i32 %150, -14
  %153 = select i1 %152, i32 1, i32 %151
  br label %154

154:                                              ; preds = %134, %.thread585, %121
  %.0524 = phi i32 [ %130, %121 ], [ %143, %134 ], [ %153, %.thread585 ]
  %.0 = phi i32 [ %133, %121 ], [ %148, %134 ], [ 1, %.thread585 ]
  %155 = sitofp i32 %.0524 to double
  store double %155, ptr %20, align 8, !tbaa !9
  store i32 %.0, ptr %22, align 4, !tbaa !5
  %156 = load i32, ptr %21, align 4, !tbaa !5
  %157 = icmp sge i32 %156, %.0524
  %or.cond = select i1 %157, i1 true, i1 %60
  br i1 %or.cond, label %158, label %.thread590.sink.split

158:                                              ; preds = %154
  %159 = load i32, ptr %23, align 4, !tbaa !5
  %160 = icmp sge i32 %159, %.0
  %or.cond3 = select i1 %160, i1 true, i1 %60
  br i1 %or.cond3, label %161, label %.thread590.sink.split

161:                                              ; preds = %158
  %.pr587 = load i32, ptr %24, align 4, !tbaa !5
  %.not556 = icmp eq i32 %.pr587, 0
  br i1 %.not556, label %165, label %.thread590

.thread590.sink.split:                            ; preds = %158, %154
  %.sink680 = phi i32 [ -22, %154 ], [ -24, %158 ]
  store i32 %.sink680, ptr %24, align 4, !tbaa !5
  br label %.thread590

.thread590:                                       ; preds = %.thread590.sink.split, %161
  %162 = phi i32 [ %.pr587, %161 ], [ %.sink680, %.thread590.sink.split ]
  %163 = sub nsw i32 0, %162
  store i32 %163, ptr %26, align 4, !tbaa !5
  %164 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %26, i32 noundef 6) #6
  br label %583

165:                                              ; preds = %161
  br i1 %60, label %583, label %166

166:                                              ; preds = %165
  %167 = load i32, ptr %16, align 4, !tbaa !5
  %168 = load i32, ptr %4, align 4, !tbaa !5
  %169 = icmp eq i32 %167, %168
  %170 = icmp eq i32 %167, 0
  %or.cond581 = or i1 %170, %169
  br i1 %or.cond581, label %171, label %186

171:                                              ; preds = %166
  br i1 %spec.select580, label %172, label %173

172:                                              ; preds = %171
  store double 1.000000e+00, ptr %17, align 8, !tbaa !9
  store double 1.000000e+00, ptr %18, align 8, !tbaa !9
  br label %173

173:                                              ; preds = %172, %171
  %.off = add i32 %88, -2
  %switch = icmp ult i32 %.off, 4
  br i1 %switch, label %174, label %422

174:                                              ; preds = %173
  store double 0.000000e+00, ptr %35, align 8, !tbaa !9
  store double 1.000000e+00, ptr %30, align 8, !tbaa !9
  store i32 %168, ptr %26, align 4, !tbaa !5
  %invariant.gep616 = getelementptr i8, ptr %43, i64 8
  %invariant.gep618 = getelementptr i8, ptr %46, i64 8
  %.not567620 = icmp slt i32 %168, 1
  br i1 %.not567620, label %._crit_edge624, label %.lr.ph623.preheader

.lr.ph623.preheader:                              ; preds = %174
  %175 = sext i32 %41 to i64
  %176 = sext i32 %44 to i64
  br label %.lr.ph623

.lr.ph623:                                        ; preds = %.lr.ph623.preheader, %.lr.ph623
  %indvars.iv643 = phi i64 [ 1, %.lr.ph623.preheader ], [ %indvars.iv.next644, %.lr.ph623 ]
  %177 = mul nsw i64 %indvars.iv643, %175
  %gep617 = getelementptr double, ptr %invariant.gep616, i64 %177
  call void @dlassq_(ptr noundef nonnull %4, ptr noundef %gep617, ptr noundef nonnull @c__1, ptr noundef nonnull %35, ptr noundef nonnull %30) #6
  %178 = mul nsw i64 %indvars.iv643, %176
  %gep619 = getelementptr double, ptr %invariant.gep618, i64 %178
  call void @dlassq_(ptr noundef nonnull %4, ptr noundef %gep619, ptr noundef nonnull @c__1, ptr noundef nonnull %35, ptr noundef nonnull %30) #6
  %indvars.iv.next644 = add nuw nsw i64 %indvars.iv643, 1
  %179 = load i32, ptr %26, align 4, !tbaa !5
  %180 = sext i32 %179 to i64
  %.not567.not = icmp slt i64 %indvars.iv643, %180
  br i1 %.not567.not, label %.lr.ph623, label %._crit_edge624.loopexit, !llvm.loop !13

._crit_edge624.loopexit:                          ; preds = %.lr.ph623
  %.pre660 = load double, ptr %35, align 8, !tbaa !9
  %.pre661 = load double, ptr %30, align 8, !tbaa !9
  br label %._crit_edge624

._crit_edge624:                                   ; preds = %._crit_edge624.loopexit, %174
  %181 = phi double [ %.pre661, %._crit_edge624.loopexit ], [ 1.000000e+00, %174 ]
  %182 = phi double [ %.pre660, %._crit_edge624.loopexit ], [ 0.000000e+00, %174 ]
  %183 = call double @sqrt(double noundef %181) #6
  %184 = fmul double %182, %183
  store double %184, ptr %19, align 8, !tbaa !9
  %185 = getelementptr inbounds i8, ptr %19, i64 8
  store double %184, ptr %185, align 8, !tbaa !9
  br label %422

186:                                              ; preds = %166
  store i32 0, ptr %36, align 4, !tbaa !5
  store i32 %168, ptr %26, align 4, !tbaa !5
  %.not557599 = icmp slt i32 %168, 1
  br i1 %.not557599, label %._crit_edge605, label %.lr.ph604.preheader

.lr.ph604.preheader:                              ; preds = %186
  %187 = sext i32 %41 to i64
  %invariant.gep666 = getelementptr i8, ptr %43, i64 8
  br label %.lr.ph604

.lr.ph604:                                        ; preds = %.lr.ph604.preheader, %226
  %188 = phi i32 [ 0, %.lr.ph604.preheader ], [ %227, %226 ]
  %indvars.iv640 = phi i64 [ 1, %.lr.ph604.preheader ], [ %indvars.iv.next641, %226 ]
  %.2531600 = phi i32 [ 0, %.lr.ph604.preheader ], [ %.4, %226 ]
  %.not560 = icmp eq i32 %.2531600, 0
  br i1 %.not560, label %189, label %226

189:                                              ; preds = %.lr.ph604
  %190 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv640
  %191 = load i32, ptr %190, align 4, !tbaa !5
  %192 = load i32, ptr %4, align 4, !tbaa !5
  %193 = sext i32 %192 to i64
  %194 = icmp slt i64 %indvars.iv640, %193
  br i1 %194, label %195, label %208

195:                                              ; preds = %189
  %196 = mul nsw i64 %indvars.iv640, %187
  %gep667 = getelementptr double, ptr %invariant.gep666, i64 %indvars.iv640
  %197 = getelementptr double, ptr %gep667, i64 %196
  %198 = load double, ptr %197, align 8, !tbaa !9
  %199 = fcmp une double %198, 0.000000e+00
  br i1 %199, label %200, label %208

200:                                              ; preds = %195
  %.not561 = icmp eq i32 %191, 0
  br i1 %.not561, label %201, label %205

201:                                              ; preds = %200
  %202 = getelementptr i32, ptr %3, i64 %indvars.iv640
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = icmp ne i32 %203, 0
  br label %205

205:                                              ; preds = %201, %200
  %206 = phi i1 [ true, %200 ], [ %204, %201 ]
  %207 = zext i1 %206 to i32
  br label %208

208:                                              ; preds = %195, %205, %189
  %.not566 = phi i1 [ false, %205 ], [ true, %195 ], [ true, %189 ]
  %.3 = phi i32 [ 1, %205 ], [ 0, %195 ], [ 0, %189 ]
  %.0528 = phi i32 [ %207, %205 ], [ %191, %195 ], [ %191, %189 ]
  %.not562 = icmp eq i32 %.0528, 0
  br i1 %.not562, label %226, label %209

209:                                              ; preds = %208
  %210 = load i32, ptr %36, align 4, !tbaa !5
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr %36, align 4, !tbaa !5
  %212 = trunc nuw nsw i64 %indvars.iv640 to i32
  store i32 %212, ptr %34, align 4, !tbaa !5
  %213 = zext i32 %211 to i64
  %.not563 = icmp eq i64 %indvars.iv640, %213
  br i1 %.not563, label %215, label %214

214:                                              ; preds = %209
  call void @dtgexc_(ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %34, ptr noundef nonnull %36, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %29) #6
  %.pre = load i32, ptr %29, align 4, !tbaa !5
  br label %215

215:                                              ; preds = %214, %209
  %216 = phi i32 [ %.pre, %214 ], [ %188, %209 ]
  %217 = icmp sgt i32 %216, 0
  br i1 %217, label %218, label %222

218:                                              ; preds = %215
  store i32 1, ptr %24, align 4, !tbaa !5
  br i1 %spec.select580, label %219, label %220

219:                                              ; preds = %218
  store double 0.000000e+00, ptr %17, align 8, !tbaa !9
  store double 0.000000e+00, ptr %18, align 8, !tbaa !9
  br label %220

220:                                              ; preds = %219, %218
  %.off594 = add i32 %88, -2
  %switch595 = icmp ult i32 %.off594, 4
  br i1 %switch595, label %221, label %422

221:                                              ; preds = %220
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %19, i8 0, i64 16, i1 false)
  br label %422

222:                                              ; preds = %215
  br i1 %.not566, label %226, label %223

223:                                              ; preds = %222
  %224 = load i32, ptr %36, align 4, !tbaa !5
  %225 = add nsw i32 %224, 1
  store i32 %225, ptr %36, align 4, !tbaa !5
  br label %226

226:                                              ; preds = %.lr.ph604, %222, %223, %208
  %227 = phi i32 [ %216, %223 ], [ %216, %222 ], [ %188, %208 ], [ %188, %.lr.ph604 ]
  %.4 = phi i32 [ 1, %223 ], [ 0, %222 ], [ %.3, %208 ], [ 0, %.lr.ph604 ]
  %indvars.iv.next641 = add nuw nsw i64 %indvars.iv640, 1
  %228 = load i32, ptr %26, align 4, !tbaa !5
  %229 = sext i32 %228 to i64
  %.not557.not = icmp slt i64 %indvars.iv640, %229
  br i1 %.not557.not, label %.lr.ph604, label %._crit_edge605, !llvm.loop !14

._crit_edge605:                                   ; preds = %226, %186
  br i1 %spec.select580, label %230, label %309

230:                                              ; preds = %._crit_edge605
  %231 = load i32, ptr %16, align 4, !tbaa !5
  store i32 %231, ptr %32, align 4, !tbaa !5
  %232 = load i32, ptr %4, align 4, !tbaa !5
  %233 = sub nsw i32 %232, %231
  store i32 %233, ptr %33, align 4, !tbaa !5
  %234 = add nsw i32 %231, 1
  store i32 0, ptr %39, align 4, !tbaa !5
  %235 = mul nsw i32 %234, %41
  %236 = sext i32 %235 to i64
  %237 = getelementptr double, ptr %43, i64 %236
  %238 = getelementptr i8, ptr %237, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef %238, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %32) #6
  %239 = mul nsw i32 %234, %44
  %240 = sext i32 %239 to i64
  %241 = getelementptr double, ptr %46, i64 %240
  %242 = getelementptr i8, ptr %241, i64 8
  %243 = load i32, ptr %32, align 4, !tbaa !5
  %244 = load i32, ptr %33, align 4, !tbaa !5
  %245 = mul nsw i32 %244, %243
  %246 = sext i32 %245 to i64
  %247 = getelementptr double, ptr %53, i64 %246
  %248 = getelementptr i8, ptr %247, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef %242, ptr noundef nonnull %8, ptr noundef %248, ptr noundef nonnull %32) #6
  %249 = load i32, ptr %21, align 4, !tbaa !5
  %250 = load i32, ptr %32, align 4, !tbaa !5
  %251 = shl i32 %250, 1
  %252 = load i32, ptr %33, align 4, !tbaa !5
  %253 = mul nsw i32 %251, %252
  %254 = sub nsw i32 %249, %253
  store i32 %254, ptr %26, align 4, !tbaa !5
  %255 = add nsw i32 %235, %234
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds double, ptr %43, i64 %256
  %258 = add nsw i32 %239, %234
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds double, ptr %46, i64 %259
  %261 = mul nsw i32 %252, %250
  %262 = sext i32 %261 to i64
  %263 = getelementptr double, ptr %53, i64 %262
  %264 = getelementptr i8, ptr %263, i64 8
  %265 = shl i32 %261, 1
  %266 = or disjoint i32 %265, 1
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds double, ptr %53, i64 %267
  call void @dtgsyl_(ptr noundef nonnull @.str.4, ptr noundef nonnull %39, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %257, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %32, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %260, ptr noundef nonnull %8, ptr noundef %264, ptr noundef nonnull %32, ptr noundef nonnull %35, ptr noundef %19, ptr noundef nonnull %268, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %29) #6
  store double 0.000000e+00, ptr %37, align 8, !tbaa !9
  store double 1.000000e+00, ptr %30, align 8, !tbaa !9
  %269 = load i32, ptr %32, align 4, !tbaa !5
  %270 = load i32, ptr %33, align 4, !tbaa !5
  %271 = mul nsw i32 %270, %269
  store i32 %271, ptr %26, align 4, !tbaa !5
  call void @dlassq_(ptr noundef nonnull %26, ptr noundef nonnull %20, ptr noundef nonnull @c__1, ptr noundef nonnull %37, ptr noundef nonnull %30) #6
  %272 = load double, ptr %37, align 8, !tbaa !9
  %273 = load double, ptr %30, align 8, !tbaa !9
  %274 = call double @sqrt(double noundef %273) #6
  %275 = fmul double %272, %274
  store double %275, ptr %17, align 8, !tbaa !9
  %276 = fcmp oeq double %275, 0.000000e+00
  br i1 %276, label %287, label %277

277:                                              ; preds = %230
  %278 = load double, ptr %35, align 8, !tbaa !9
  %279 = fmul double %278, %278
  %280 = fdiv double %279, %275
  %281 = fadd double %275, %280
  %282 = call double @sqrt(double noundef %281) #6
  %283 = load double, ptr %17, align 8, !tbaa !9
  %284 = call double @sqrt(double noundef %283) #6
  %285 = fmul double %282, %284
  %286 = fdiv double %278, %285
  br label %287

287:                                              ; preds = %230, %277
  %storemerge = phi double [ %286, %277 ], [ 1.000000e+00, %230 ]
  store double %storemerge, ptr %17, align 8, !tbaa !9
  store double 0.000000e+00, ptr %37, align 8, !tbaa !9
  store double 1.000000e+00, ptr %30, align 8, !tbaa !9
  %288 = load i32, ptr %32, align 4, !tbaa !5
  %289 = load i32, ptr %33, align 4, !tbaa !5
  %290 = mul nsw i32 %289, %288
  store i32 %290, ptr %26, align 4, !tbaa !5
  %291 = sext i32 %290 to i64
  %292 = getelementptr double, ptr %53, i64 %291
  %293 = getelementptr i8, ptr %292, i64 8
  call void @dlassq_(ptr noundef nonnull %26, ptr noundef %293, ptr noundef nonnull @c__1, ptr noundef nonnull %37, ptr noundef nonnull %30) #6
  %294 = load double, ptr %37, align 8, !tbaa !9
  %295 = load double, ptr %30, align 8, !tbaa !9
  %296 = call double @sqrt(double noundef %295) #6
  %297 = fmul double %294, %296
  store double %297, ptr %18, align 8, !tbaa !9
  %298 = fcmp oeq double %297, 0.000000e+00
  br i1 %298, label %.sink.split681, label %299

299:                                              ; preds = %287
  %300 = load double, ptr %35, align 8, !tbaa !9
  %301 = fmul double %300, %300
  %302 = fdiv double %301, %297
  %303 = fadd double %297, %302
  %304 = call double @sqrt(double noundef %303) #6
  %305 = load double, ptr %18, align 8, !tbaa !9
  %306 = call double @sqrt(double noundef %305) #6
  %307 = fmul double %304, %306
  %308 = fdiv double %300, %307
  br label %.sink.split681

.sink.split681:                                   ; preds = %287, %299
  %.sink682 = phi double [ %308, %299 ], [ 1.000000e+00, %287 ]
  store double %.sink682, ptr %18, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %.sink.split681, %._crit_edge605
  switch i32 %88, label %422 [
    i32 4, label %310
    i32 2, label %310
    i32 3, label %348
    i32 5, label %348
  ]

310:                                              ; preds = %309, %309
  %311 = load i32, ptr %16, align 4, !tbaa !5
  store i32 %311, ptr %32, align 4, !tbaa !5
  %312 = load i32, ptr %4, align 4, !tbaa !5
  %313 = sub nsw i32 %312, %311
  store i32 %313, ptr %33, align 4, !tbaa !5
  %314 = add nsw i32 %311, 1
  store i32 3, ptr %39, align 4, !tbaa !5
  %315 = load i32, ptr %21, align 4, !tbaa !5
  %316 = shl i32 %311, 1
  %317 = mul nsw i32 %313, %316
  %318 = sub nsw i32 %315, %317
  store i32 %318, ptr %26, align 4, !tbaa !5
  %319 = add i32 %41, 1
  %320 = mul i32 %314, %319
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds double, ptr %43, i64 %321
  %323 = add i32 %44, 1
  %324 = mul i32 %314, %323
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds double, ptr %46, i64 %325
  %327 = mul nsw i32 %313, %311
  %328 = sext i32 %327 to i64
  %329 = getelementptr double, ptr %53, i64 %328
  %330 = getelementptr i8, ptr %329, i64 8
  %331 = or disjoint i32 %317, 1
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds double, ptr %53, i64 %332
  call void @dtgsyl_(ptr noundef nonnull @.str.4, ptr noundef nonnull %39, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %322, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %32, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %326, ptr noundef nonnull %8, ptr noundef %330, ptr noundef nonnull %32, ptr noundef nonnull %35, ptr noundef %19, ptr noundef nonnull %333, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %29) #6
  %334 = load i32, ptr %21, align 4, !tbaa !5
  %335 = load i32, ptr %32, align 4, !tbaa !5
  %336 = shl i32 %335, 1
  %337 = load i32, ptr %33, align 4, !tbaa !5
  %338 = mul nsw i32 %336, %337
  %339 = sub nsw i32 %334, %338
  store i32 %339, ptr %26, align 4, !tbaa !5
  %340 = mul nsw i32 %337, %335
  %341 = sext i32 %340 to i64
  %342 = getelementptr double, ptr %53, i64 %341
  %343 = getelementptr i8, ptr %342, i64 8
  %344 = getelementptr inbounds i8, ptr %19, i64 8
  %345 = or disjoint i32 %338, 1
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %53, i64 %346
  call void @dtgsyl_(ptr noundef nonnull @.str.4, ptr noundef nonnull %39, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %322, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %33, ptr noundef %326, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %343, ptr noundef nonnull %33, ptr noundef nonnull %35, ptr noundef nonnull %344, ptr noundef nonnull %347, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %29) #6
  br label %422

348:                                              ; preds = %309, %309
  store i32 0, ptr %28, align 4, !tbaa !5
  %349 = load i32, ptr %16, align 4, !tbaa !5
  store i32 %349, ptr %32, align 4, !tbaa !5
  %350 = load i32, ptr %4, align 4, !tbaa !5
  %351 = sub nsw i32 %350, %349
  store i32 %351, ptr %33, align 4, !tbaa !5
  %352 = add nsw i32 %349, 1
  store i32 0, ptr %39, align 4, !tbaa !5
  %353 = shl i32 %349, 1
  %354 = mul nsw i32 %353, %351
  store i32 %354, ptr %38, align 4, !tbaa !5
  %355 = add i32 %41, 1
  %356 = mul i32 %352, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %43, i64 %357
  %359 = add i32 %44, 1
  %360 = mul i32 %352, %359
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %46, i64 %361
  br label %363

363:                                              ; preds = %383, %348
  %364 = phi i32 [ %.pre659, %383 ], [ %354, %348 ]
  %365 = sext i32 %364 to i64
  %gep = getelementptr double, ptr %20, i64 %365
  call void @dlacn2_(ptr noundef nonnull %38, ptr noundef %gep, ptr noundef nonnull %20, ptr noundef nonnull %22, ptr noundef %19, ptr noundef nonnull %28, ptr noundef nonnull %31) #6
  %366 = load i32, ptr %28, align 4, !tbaa !5
  switch i32 %366, label %375 [
    i32 0, label %388
    i32 1, label %367
  ]

367:                                              ; preds = %363
  %368 = load i32, ptr %21, align 4, !tbaa !5
  %369 = load i32, ptr %32, align 4, !tbaa !5
  %370 = shl i32 %369, 1
  %371 = load i32, ptr %33, align 4, !tbaa !5
  %372 = mul nsw i32 %370, %371
  %373 = sub nsw i32 %368, %372
  store i32 %373, ptr %26, align 4, !tbaa !5
  %374 = mul nsw i32 %371, %369
  br label %383

375:                                              ; preds = %363
  %376 = load i32, ptr %21, align 4, !tbaa !5
  %377 = load i32, ptr %32, align 4, !tbaa !5
  %378 = shl i32 %377, 1
  %379 = load i32, ptr %33, align 4, !tbaa !5
  %380 = mul nsw i32 %378, %379
  %381 = sub nsw i32 %376, %380
  store i32 %381, ptr %26, align 4, !tbaa !5
  %382 = mul nsw i32 %379, %377
  br label %383

383:                                              ; preds = %375, %367
  %.sink688 = phi i32 [ %382, %375 ], [ %374, %367 ]
  %.sink686 = phi i32 [ %380, %375 ], [ %372, %367 ]
  %.str.5.sink = phi ptr [ @.str.5, %375 ], [ @.str.4, %367 ]
  %384 = sext i32 %.sink688 to i64
  %gep609 = getelementptr double, ptr %20, i64 %384
  %385 = or disjoint i32 %.sink686, 1
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds double, ptr %53, i64 %386
  call void @dtgsyl_(ptr noundef nonnull %.str.5.sink, ptr noundef nonnull %39, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %358, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %32, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %362, ptr noundef nonnull %8, ptr noundef %gep609, ptr noundef nonnull %32, ptr noundef nonnull %35, ptr noundef %19, ptr noundef nonnull %387, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %29) #6
  %.pre659 = load i32, ptr %38, align 4, !tbaa !5
  br label %363

388:                                              ; preds = %363
  %389 = load double, ptr %35, align 8, !tbaa !9
  %390 = load double, ptr %19, align 8, !tbaa !9
  %391 = fdiv double %389, %390
  store double %391, ptr %19, align 8, !tbaa !9
  %392 = getelementptr inbounds i8, ptr %19, i64 8
  br label %393

393:                                              ; preds = %413, %388
  %394 = load i32, ptr %38, align 4, !tbaa !5
  %395 = sext i32 %394 to i64
  %gep611 = getelementptr double, ptr %20, i64 %395
  call void @dlacn2_(ptr noundef nonnull %38, ptr noundef %gep611, ptr noundef nonnull %20, ptr noundef nonnull %22, ptr noundef nonnull %392, ptr noundef nonnull %28, ptr noundef nonnull %31) #6
  %396 = load i32, ptr %28, align 4, !tbaa !5
  switch i32 %396, label %405 [
    i32 0, label %418
    i32 1, label %397
  ]

397:                                              ; preds = %393
  %398 = load i32, ptr %21, align 4, !tbaa !5
  %399 = load i32, ptr %32, align 4, !tbaa !5
  %400 = shl i32 %399, 1
  %401 = load i32, ptr %33, align 4, !tbaa !5
  %402 = mul nsw i32 %400, %401
  %403 = sub nsw i32 %398, %402
  store i32 %403, ptr %26, align 4, !tbaa !5
  %404 = mul nsw i32 %401, %399
  br label %413

405:                                              ; preds = %393
  %406 = load i32, ptr %21, align 4, !tbaa !5
  %407 = load i32, ptr %32, align 4, !tbaa !5
  %408 = shl i32 %407, 1
  %409 = load i32, ptr %33, align 4, !tbaa !5
  %410 = mul nsw i32 %408, %409
  %411 = sub nsw i32 %406, %410
  store i32 %411, ptr %26, align 4, !tbaa !5
  %412 = mul nsw i32 %409, %407
  br label %413

413:                                              ; preds = %405, %397
  %.sink695 = phi i32 [ %412, %405 ], [ %404, %397 ]
  %.sink693 = phi i32 [ %410, %405 ], [ %402, %397 ]
  %.str.5.sink689 = phi ptr [ @.str.5, %405 ], [ @.str.4, %397 ]
  %414 = sext i32 %.sink695 to i64
  %gep615 = getelementptr double, ptr %20, i64 %414
  %415 = or disjoint i32 %.sink693, 1
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %53, i64 %416
  call void @dtgsyl_(ptr noundef nonnull %.str.5.sink689, ptr noundef nonnull %39, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %358, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %33, ptr noundef %362, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %gep615, ptr noundef nonnull %33, ptr noundef nonnull %35, ptr noundef nonnull %392, ptr noundef nonnull %417, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %29) #6
  br label %393

418:                                              ; preds = %393
  %419 = load double, ptr %35, align 8, !tbaa !9
  %420 = load double, ptr %392, align 8, !tbaa !9
  %421 = fdiv double %419, %420
  store double %421, ptr %392, align 8, !tbaa !9
  br label %422

422:                                              ; preds = %220, %173, %309, %418, %310, %221, %._crit_edge624
  %423 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %423, ptr %26, align 4, !tbaa !5
  %.not568628 = icmp slt i32 %423, 1
  br i1 %.not568628, label %._crit_edge636, label %.lr.ph635

.lr.ph635:                                        ; preds = %422
  %424 = add i32 %44, 1
  %425 = add i32 %41, 1
  %426 = getelementptr inbounds i8, ptr %20, i64 8
  %427 = getelementptr inbounds i8, ptr %20, i64 16
  %428 = getelementptr inbounds i8, ptr %20, i64 24
  %429 = getelementptr inbounds i8, ptr %20, i64 32
  %430 = getelementptr inbounds i8, ptr %20, i64 40
  %431 = getelementptr inbounds i8, ptr %20, i64 48
  %432 = getelementptr inbounds i8, ptr %20, i64 56
  %433 = fmul double %85, %87
  %434 = sext i32 %41 to i64
  %435 = sext i32 %44 to i64
  %436 = sext i32 %50 to i64
  %437 = add nsw i64 %434, 1
  %438 = add nsw i64 %435, 1
  %439 = add nsw i64 %436, %51
  %440 = shl nsw i64 %439, 3
  %441 = shl nsw i64 %436, 3
  %442 = getelementptr i8, ptr %12, i64 %440
  %443 = getelementptr i8, ptr %442, i64 8
  %444 = getelementptr i8, ptr %12, i64 %440
  %ident.check707 = icmp ne i32 %41, 1
  %ident.check708 = icmp ne i32 %44, 1
  %445 = or i1 %ident.check707, %ident.check708
  %ident.check = icmp ne i32 %41, 1
  %ident.check697 = icmp ne i32 %44, 1
  %446 = or i1 %ident.check, %ident.check697
  br label %447

447:                                              ; preds = %.lr.ph635, %580
  %indvar = phi i64 [ 0, %.lr.ph635 ], [ %indvar.next, %580 ]
  %448 = phi i32 [ %423, %.lr.ph635 ], [ %581, %580 ]
  %indvars.iv656 = phi i64 [ 1, %.lr.ph635 ], [ %indvars.iv.next657, %580 ]
  %.5629 = phi i32 [ 0, %.lr.ph635 ], [ %.7, %580 ]
  %449 = shl nuw nsw i64 %indvar, 3
  %scevgep710 = getelementptr i8, ptr %5, i64 %449
  %450 = add nsw i64 %449, -8
  %scevgep711 = getelementptr i8, ptr %5, i64 %450
  %scevgep713 = getelementptr i8, ptr %7, i64 %449
  %scevgep714 = getelementptr i8, ptr %7, i64 %450
  %451 = mul i64 %441, %indvar
  %scevgep716 = getelementptr i8, ptr %443, i64 %451
  %scevgep717 = getelementptr i8, ptr %444, i64 %451
  %452 = shl nuw nsw i64 %indvar, 3
  %scevgep = getelementptr i8, ptr %5, i64 %452
  %453 = add nsw i64 %452, -8
  %scevgep698 = getelementptr i8, ptr %5, i64 %453
  %scevgep700 = getelementptr i8, ptr %7, i64 %452
  %scevgep701 = getelementptr i8, ptr %7, i64 %453
  %indvars658 = trunc i64 %indvars.iv656 to i32
  %.not569 = icmp eq i32 %.5629, 0
  br i1 %.not569, label %454, label %580

454:                                              ; preds = %447
  %455 = load i32, ptr %4, align 4, !tbaa !5
  %456 = sext i32 %455 to i64
  %457 = icmp slt i64 %indvars.iv656, %456
  br i1 %457, label %458, label %505

458:                                              ; preds = %454
  %459 = add nuw nsw i64 %indvars.iv656, 1
  %460 = mul nsw i64 %indvars.iv656, %434
  %461 = getelementptr double, ptr %43, i64 %459
  %462 = getelementptr double, ptr %461, i64 %460
  %463 = load double, ptr %462, align 8, !tbaa !9
  %464 = fcmp une double %463, 0.000000e+00
  br i1 %464, label %.critedge, label %505

.critedge:                                        ; preds = %458
  %465 = mul nsw i32 %41, %indvars658
  %466 = add nuw nsw i32 %indvars658, 1
  %467 = sext i32 %465 to i64
  %468 = getelementptr double, ptr %43, i64 %indvars.iv656
  %469 = getelementptr double, ptr %468, i64 %467
  %470 = load double, ptr %469, align 8, !tbaa !9
  store double %470, ptr %20, align 8, !tbaa !9
  %471 = load double, ptr %462, align 8, !tbaa !9
  store double %471, ptr %426, align 8, !tbaa !9
  %472 = mul nsw i32 %466, %41
  %473 = sext i32 %472 to i64
  %474 = getelementptr double, ptr %43, i64 %indvars.iv656
  %475 = getelementptr double, ptr %474, i64 %473
  %476 = load double, ptr %475, align 8, !tbaa !9
  store double %476, ptr %427, align 8, !tbaa !9
  %477 = mul i64 %459, %437
  %478 = getelementptr inbounds double, ptr %43, i64 %477
  %479 = load double, ptr %478, align 8, !tbaa !9
  store double %479, ptr %428, align 8, !tbaa !9
  %480 = mul nsw i64 %indvars.iv656, %435
  %481 = mul nsw i32 %44, %indvars658
  %482 = sext i32 %481 to i64
  %483 = getelementptr double, ptr %46, i64 %indvars.iv656
  %484 = getelementptr double, ptr %483, i64 %482
  %485 = load double, ptr %484, align 8, !tbaa !9
  store double %485, ptr %429, align 8, !tbaa !9
  %486 = getelementptr double, ptr %46, i64 %459
  %487 = getelementptr double, ptr %486, i64 %480
  %488 = load double, ptr %487, align 8, !tbaa !9
  store double %488, ptr %430, align 8, !tbaa !9
  %489 = mul nsw i32 %466, %44
  %490 = sext i32 %489 to i64
  %491 = getelementptr double, ptr %46, i64 %indvars.iv656
  %492 = getelementptr double, ptr %491, i64 %490
  %493 = load double, ptr %492, align 8, !tbaa !9
  store double %493, ptr %431, align 8, !tbaa !9
  %494 = mul i64 %459, %438
  %495 = getelementptr inbounds double, ptr %46, i64 %494
  %496 = load double, ptr %495, align 8, !tbaa !9
  store double %496, ptr %432, align 8, !tbaa !9
  store double %433, ptr %27, align 8, !tbaa !9
  %497 = getelementptr inbounds double, ptr %49, i64 %indvars.iv656
  %498 = getelementptr double, ptr %11, i64 %indvars.iv656
  %499 = getelementptr inbounds double, ptr %47, i64 %indvars.iv656
  %500 = getelementptr double, ptr %9, i64 %indvars.iv656
  %501 = getelementptr inbounds double, ptr %48, i64 %indvars.iv656
  call void @dlag2_(ptr noundef nonnull %20, ptr noundef nonnull @c__2, ptr noundef nonnull %429, ptr noundef nonnull @c__2, ptr noundef nonnull %27, ptr noundef nonnull %497, ptr noundef nonnull %498, ptr noundef nonnull %499, ptr noundef nonnull %500, ptr noundef nonnull %501) #6
  %502 = load double, ptr %501, align 8, !tbaa !9
  %503 = fneg double %502
  %504 = getelementptr double, ptr %10, i64 %indvars.iv656
  store double %503, ptr %504, align 8, !tbaa !9
  %.pre662 = load i32, ptr %26, align 4, !tbaa !5
  br label %580

505:                                              ; preds = %454, %458
  %506 = mul i32 %424, %indvars658
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds double, ptr %46, i64 %507
  %509 = load double, ptr %508, align 8, !tbaa !9
  %510 = fcmp ult double %509, 0.000000e+00
  %511 = load double, ptr @c_b28, align 8
  %512 = fcmp oge double %511, 0.000000e+00
  %.neg = fneg double %511
  br i1 %510, label %515, label %513

513:                                              ; preds = %505
  %514 = select i1 %512, double %511, double %.neg
  br label %517

515:                                              ; preds = %505
  %516 = select i1 %512, double %.neg, double %511
  br label %517

517:                                              ; preds = %515, %513
  %518 = phi double [ %514, %513 ], [ %516, %515 ]
  %519 = fcmp uge double %518, 0.000000e+00
  %.not571625 = icmp slt i32 %455, 1
  %or.cond637 = or i1 %519, %.not571625
  br i1 %or.cond637, label %.loopexit, label %.lr.ph627

.lr.ph627:                                        ; preds = %517
  %520 = load i32, ptr %1, align 4, !tbaa !5
  %.not572 = icmp eq i32 %520, 0
  %521 = add nuw i32 %455, 1
  %wide.trip.count654 = zext i32 %521 to i64
  %invariant.gep674 = getelementptr double, ptr %43, i64 %indvars.iv656
  %invariant.gep676 = getelementptr double, ptr %46, i64 %indvars.iv656
  br i1 %.not572, label %.lr.ph627.split.us.preheader, label %.lr.ph627.split.preheader

.lr.ph627.split.us.preheader:                     ; preds = %.lr.ph627
  %522 = zext nneg i32 %455 to i64
  %min.iters.check = icmp ult i32 %455, 8
  %brmerge = select i1 %min.iters.check, i1 true, i1 %446
  br i1 %brmerge, label %.lr.ph627.split.us.preheader745, label %vector.memcheck

.lr.ph627.split.us.preheader745:                  ; preds = %.lr.ph627.split.us.preheader, %middle.block, %vector.memcheck
  %indvars.iv651.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph627.split.us.preheader ], [ %ind.end, %middle.block ]
  %523 = zext nneg i32 %455 to i64
  %524 = and i32 %455, 1
  %lcmp.mod.not = icmp eq i32 %524, 0
  br i1 %lcmp.mod.not, label %.lr.ph627.split.us.prol.loopexit, label %.lr.ph627.split.us.prol

.lr.ph627.split.us.prol:                          ; preds = %.lr.ph627.split.us.preheader745
  %525 = mul nsw i64 %indvars.iv651.ph, %434
  %gep675.prol = getelementptr double, ptr %invariant.gep674, i64 %525
  %526 = load double, ptr %gep675.prol, align 8, !tbaa !9
  %527 = fneg double %526
  store double %527, ptr %gep675.prol, align 8, !tbaa !9
  %528 = mul nsw i64 %indvars.iv651.ph, %435
  %gep677.prol = getelementptr double, ptr %invariant.gep676, i64 %528
  %529 = load double, ptr %gep677.prol, align 8, !tbaa !9
  %530 = fneg double %529
  store double %530, ptr %gep677.prol, align 8, !tbaa !9
  %indvars.iv.next652.prol = add nuw nsw i64 %indvars.iv651.ph, 1
  br label %.lr.ph627.split.us.prol.loopexit

.lr.ph627.split.us.prol.loopexit:                 ; preds = %.lr.ph627.split.us.prol, %.lr.ph627.split.us.preheader745
  %indvars.iv651.unr = phi i64 [ %indvars.iv651.ph, %.lr.ph627.split.us.preheader745 ], [ %indvars.iv.next652.prol, %.lr.ph627.split.us.prol ]
  %531 = icmp eq i64 %indvars.iv651.ph, %523
  br i1 %531, label %.loopexit, label %.lr.ph627.split.us

vector.memcheck:                                  ; preds = %.lr.ph627.split.us.preheader
  %532 = shl nuw nsw i64 %wide.trip.count654, 3
  %scevgep699 = getelementptr i8, ptr %scevgep698, i64 %532
  %scevgep702 = getelementptr i8, ptr %scevgep701, i64 %532
  %bound0 = icmp ult ptr %scevgep, %scevgep702
  %bound1 = icmp ult ptr %scevgep700, %scevgep699
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph627.split.us.preheader745, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %522, 2147483644
  %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 ]
  %offset.idx = or disjoint i64 %index, 1
  %533 = getelementptr double, ptr %invariant.gep674, i64 %offset.idx
  %534 = getelementptr i8, ptr %533, i64 16
  %wide.load = load <2 x double>, ptr %533, align 8, !tbaa !9, !alias.scope !15, !noalias !18
  %wide.load703 = load <2 x double>, ptr %534, align 8, !tbaa !9, !alias.scope !15, !noalias !18
  %535 = fneg <2 x double> %wide.load
  %536 = fneg <2 x double> %wide.load703
  store <2 x double> %535, ptr %533, align 8, !tbaa !9, !alias.scope !15, !noalias !18
  store <2 x double> %536, ptr %534, align 8, !tbaa !9, !alias.scope !15, !noalias !18
  %537 = getelementptr double, ptr %invariant.gep676, i64 %offset.idx
  %538 = getelementptr i8, ptr %537, i64 16
  %wide.load704 = load <2 x double>, ptr %537, align 8, !tbaa !9, !alias.scope !18
  %wide.load705 = load <2 x double>, ptr %538, align 8, !tbaa !9, !alias.scope !18
  %539 = fneg <2 x double> %wide.load704
  %540 = fneg <2 x double> %wide.load705
  store <2 x double> %539, ptr %537, align 8, !tbaa !9, !alias.scope !18
  store <2 x double> %540, ptr %538, align 8, !tbaa !9, !alias.scope !18
  %index.next = add nuw i64 %index, 4
  %541 = icmp eq i64 %index.next, %n.vec
  br i1 %541, label %middle.block, label %vector.body, !llvm.loop !20

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %522
  br i1 %cmp.n, label %.loopexit, label %.lr.ph627.split.us.preheader745

.lr.ph627.split.preheader:                        ; preds = %.lr.ph627
  %542 = mul nsw i64 %indvars.iv656, %436
  %invariant.gep672 = getelementptr double, ptr %52, i64 %542
  %543 = zext nneg i32 %455 to i64
  %min.iters.check731 = icmp ult i32 %455, 10
  %brmerge748 = select i1 %min.iters.check731, i1 true, i1 %445
  br i1 %brmerge748, label %.lr.ph627.split.preheader746, label %vector.memcheck709

.lr.ph627.split.preheader746:                     ; preds = %.lr.ph627.split.preheader, %middle.block729, %vector.memcheck709
  %indvars.iv646.ph = phi i64 [ 1, %vector.memcheck709 ], [ 1, %.lr.ph627.split.preheader ], [ %ind.end735, %middle.block729 ]
  br label %.lr.ph627.split

vector.memcheck709:                               ; preds = %.lr.ph627.split.preheader
  %544 = shl nuw nsw i64 %wide.trip.count654, 3
  %scevgep712 = getelementptr i8, ptr %scevgep711, i64 %544
  %scevgep715 = getelementptr i8, ptr %scevgep714, i64 %544
  %scevgep718 = getelementptr i8, ptr %scevgep717, i64 %544
  %bound0719 = icmp ult ptr %scevgep710, %scevgep715
  %bound1720 = icmp ult ptr %scevgep713, %scevgep712
  %found.conflict721 = and i1 %bound0719, %bound1720
  %bound0722 = icmp ult ptr %scevgep710, %scevgep718
  %bound1723 = icmp ult ptr %scevgep716, %scevgep712
  %found.conflict724 = and i1 %bound0722, %bound1723
  %conflict.rdx = or i1 %found.conflict721, %found.conflict724
  %bound0725 = icmp ult ptr %scevgep713, %scevgep718
  %bound1726 = icmp ult ptr %scevgep716, %scevgep715
  %found.conflict727 = and i1 %bound0725, %bound1726
  %conflict.rdx728 = or i1 %conflict.rdx, %found.conflict727
  br i1 %conflict.rdx728, label %.lr.ph627.split.preheader746, label %vector.ph732

vector.ph732:                                     ; preds = %vector.memcheck709
  %n.vec734 = and i64 %543, 2147483646
  %ind.end735 = or i64 %543, 1
  br label %vector.body737

vector.body737:                                   ; preds = %vector.body737, %vector.ph732
  %index738 = phi i64 [ 0, %vector.ph732 ], [ %index.next743, %vector.body737 ]
  %offset.idx739 = or disjoint i64 %index738, 1
  %545 = getelementptr double, ptr %invariant.gep674, i64 %offset.idx739
  %wide.load740 = load <2 x double>, ptr %545, align 8, !tbaa !9, !alias.scope !23, !noalias !26
  %546 = fneg <2 x double> %wide.load740
  store <2 x double> %546, ptr %545, align 8, !tbaa !9, !alias.scope !23, !noalias !26
  %547 = getelementptr double, ptr %invariant.gep676, i64 %offset.idx739
  %wide.load741 = load <2 x double>, ptr %547, align 8, !tbaa !9, !alias.scope !29, !noalias !30
  %548 = fneg <2 x double> %wide.load741
  store <2 x double> %548, ptr %547, align 8, !tbaa !9, !alias.scope !29, !noalias !30
  %549 = getelementptr double, ptr %invariant.gep672, i64 %offset.idx739
  %wide.load742 = load <2 x double>, ptr %549, align 8, !tbaa !9, !alias.scope !30
  %550 = fneg <2 x double> %wide.load742
  store <2 x double> %550, ptr %549, align 8, !tbaa !9, !alias.scope !30
  %index.next743 = add nuw i64 %index738, 2
  %551 = icmp eq i64 %index.next743, %n.vec734
  br i1 %551, label %middle.block729, label %vector.body737, !llvm.loop !31

middle.block729:                                  ; preds = %vector.body737
  %cmp.n744 = icmp eq i64 %n.vec734, %543
  br i1 %cmp.n744, label %.loopexit, label %.lr.ph627.split.preheader746

.lr.ph627.split.us:                               ; preds = %.lr.ph627.split.us.prol.loopexit, %.lr.ph627.split.us
  %indvars.iv651 = phi i64 [ %indvars.iv.next652.1, %.lr.ph627.split.us ], [ %indvars.iv651.unr, %.lr.ph627.split.us.prol.loopexit ]
  %552 = mul nsw i64 %indvars.iv651, %434
  %gep675 = getelementptr double, ptr %invariant.gep674, i64 %552
  %553 = load double, ptr %gep675, align 8, !tbaa !9
  %554 = fneg double %553
  store double %554, ptr %gep675, align 8, !tbaa !9
  %555 = mul nsw i64 %indvars.iv651, %435
  %gep677 = getelementptr double, ptr %invariant.gep676, i64 %555
  %556 = load double, ptr %gep677, align 8, !tbaa !9
  %557 = fneg double %556
  store double %557, ptr %gep677, align 8, !tbaa !9
  %indvars.iv.next652 = add nuw nsw i64 %indvars.iv651, 1
  %558 = mul nsw i64 %indvars.iv.next652, %434
  %gep675.1 = getelementptr double, ptr %invariant.gep674, i64 %558
  %559 = load double, ptr %gep675.1, align 8, !tbaa !9
  %560 = fneg double %559
  store double %560, ptr %gep675.1, align 8, !tbaa !9
  %561 = mul nsw i64 %indvars.iv.next652, %435
  %gep677.1 = getelementptr double, ptr %invariant.gep676, i64 %561
  %562 = load double, ptr %gep677.1, align 8, !tbaa !9
  %563 = fneg double %562
  store double %563, ptr %gep677.1, align 8, !tbaa !9
  %indvars.iv.next652.1 = add nuw nsw i64 %indvars.iv651, 2
  %exitcond655.not.1 = icmp eq i64 %indvars.iv.next652.1, %wide.trip.count654
  br i1 %exitcond655.not.1, label %.loopexit, label %.lr.ph627.split.us, !llvm.loop !32

.lr.ph627.split:                                  ; preds = %.lr.ph627.split.preheader746, %.lr.ph627.split
  %indvars.iv646 = phi i64 [ %indvars.iv.next647, %.lr.ph627.split ], [ %indvars.iv646.ph, %.lr.ph627.split.preheader746 ]
  %564 = mul nsw i64 %indvars.iv646, %434
  %gep669 = getelementptr double, ptr %invariant.gep674, i64 %564
  %565 = load double, ptr %gep669, align 8, !tbaa !9
  %566 = fneg double %565
  store double %566, ptr %gep669, align 8, !tbaa !9
  %567 = mul nsw i64 %indvars.iv646, %435
  %gep671 = getelementptr double, ptr %invariant.gep676, i64 %567
  %568 = load double, ptr %gep671, align 8, !tbaa !9
  %569 = fneg double %568
  store double %569, ptr %gep671, align 8, !tbaa !9
  %gep673 = getelementptr double, ptr %invariant.gep672, i64 %indvars.iv646
  %570 = load double, ptr %gep673, align 8, !tbaa !9
  %571 = fneg double %570
  store double %571, ptr %gep673, align 8, !tbaa !9
  %indvars.iv.next647 = add nuw nsw i64 %indvars.iv646, 1
  %exitcond650.not = icmp eq i64 %indvars.iv.next647, %wide.trip.count654
  br i1 %exitcond650.not, label %.loopexit, label %.lr.ph627.split, !llvm.loop !33

.loopexit:                                        ; preds = %.lr.ph627.split, %.lr.ph627.split.us.prol.loopexit, %.lr.ph627.split.us, %middle.block729, %middle.block, %517
  %572 = mul i32 %425, %indvars658
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %43, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !9
  %576 = getelementptr inbounds double, ptr %47, i64 %indvars.iv656
  store double %575, ptr %576, align 8, !tbaa !9
  %577 = getelementptr inbounds double, ptr %48, i64 %indvars.iv656
  store double 0.000000e+00, ptr %577, align 8, !tbaa !9
  %578 = load double, ptr %508, align 8, !tbaa !9
  %579 = getelementptr inbounds double, ptr %49, i64 %indvars.iv656
  store double %578, ptr %579, align 8, !tbaa !9
  br label %580

580:                                              ; preds = %447, %.loopexit, %.critedge
  %581 = phi i32 [ %.pre662, %.critedge ], [ %448, %.loopexit ], [ %448, %447 ]
  %.7 = phi i32 [ 1, %.critedge ], [ 0, %.loopexit ], [ 0, %447 ]
  %indvars.iv.next657 = add nuw nsw i64 %indvars.iv656, 1
  %582 = sext i32 %581 to i64
  %.not568.not = icmp slt i64 %indvars.iv656, %582
  %indvar.next = add i64 %indvar, 1
  br i1 %.not568.not, label %447, label %._crit_edge636, !llvm.loop !34

._crit_edge636:                                   ; preds = %580, %422
  store double %155, ptr %20, align 8, !tbaa !9
  store i32 %.0, ptr %22, align 4, !tbaa !5
  br label %583

583:                                              ; preds = %165, %._crit_edge636, %.thread590, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  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 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = !{!16}
!16 = distinct !{!16, !17}
!17 = distinct !{!17, !"LVerDomain"}
!18 = !{!19}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !12, !21, !22}
!21 = !{!"llvm.loop.isvectorized", i32 1}
!22 = !{!"llvm.loop.unroll.runtime.disable"}
!23 = !{!24}
!24 = distinct !{!24, !25}
!25 = distinct !{!25, !"LVerDomain"}
!26 = !{!27, !28}
!27 = distinct !{!27, !25}
!28 = distinct !{!28, !25}
!29 = !{!27}
!30 = !{!28}
!31 = distinct !{!31, !12, !21, !22}
!32 = distinct !{!32, !12, !21}
!33 = distinct !{!33, !12, !21}
!34 = distinct !{!34, !12}


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