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

; 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
@c__1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dtgexc_(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) #0 {
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  store ptr %0, ptr %17, align 8, !tbaa !5
  store ptr %1, ptr %18, align 8, !tbaa !5
  store ptr %2, ptr %19, align 8, !tbaa !5
  store ptr %3, ptr %20, align 8, !tbaa !5
  store ptr %4, ptr %21, align 8, !tbaa !5
  store ptr %5, ptr %22, align 8, !tbaa !5
  store ptr %6, ptr %23, align 8, !tbaa !5
  store ptr %7, ptr %24, align 8, !tbaa !5
  store ptr %8, ptr %25, align 8, !tbaa !5
  store ptr %9, ptr %26, align 8, !tbaa !5
  store ptr %10, ptr %27, align 8, !tbaa !5
  store ptr %11, ptr %28, align 8, !tbaa !5
  store ptr %12, ptr %29, align 8, !tbaa !5
  store ptr %13, ptr %30, align 8, !tbaa !5
  store ptr %14, ptr %31, align 8, !tbaa !5
  store ptr %15, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  %49 = load ptr, ptr %21, align 8, !tbaa !5
  %50 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %50, ptr %33, align 4, !tbaa !9
  %51 = load i32, ptr %33, align 4, !tbaa !9
  %52 = mul nsw i32 %51, 1
  %53 = add nsw i32 1, %52
  store i32 %53, ptr %34, align 4, !tbaa !9
  %54 = load i32, ptr %34, align 4, !tbaa !9
  %55 = load ptr, ptr %20, align 8, !tbaa !5
  %56 = sext i32 %54 to i64
  %57 = sub i64 0, %56
  %58 = getelementptr inbounds double, ptr %55, i64 %57
  store ptr %58, ptr %20, align 8, !tbaa !5
  %59 = load ptr, ptr %23, align 8, !tbaa !5
  %60 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %60, ptr %35, align 4, !tbaa !9
  %61 = load i32, ptr %35, align 4, !tbaa !9
  %62 = mul nsw i32 %61, 1
  %63 = add nsw i32 1, %62
  store i32 %63, ptr %36, align 4, !tbaa !9
  %64 = load i32, ptr %36, align 4, !tbaa !9
  %65 = load ptr, ptr %22, align 8, !tbaa !5
  %66 = sext i32 %64 to i64
  %67 = sub i64 0, %66
  %68 = getelementptr inbounds double, ptr %65, i64 %67
  store ptr %68, ptr %22, align 8, !tbaa !5
  %69 = load ptr, ptr %25, align 8, !tbaa !5
  %70 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %70, ptr %37, align 4, !tbaa !9
  %71 = load i32, ptr %37, align 4, !tbaa !9
  %72 = mul nsw i32 %71, 1
  %73 = add nsw i32 1, %72
  store i32 %73, ptr %38, align 4, !tbaa !9
  %74 = load i32, ptr %38, align 4, !tbaa !9
  %75 = load ptr, ptr %24, align 8, !tbaa !5
  %76 = sext i32 %74 to i64
  %77 = sub i64 0, %76
  %78 = getelementptr inbounds double, ptr %75, i64 %77
  store ptr %78, ptr %24, align 8, !tbaa !5
  %79 = load ptr, ptr %27, align 8, !tbaa !5
  %80 = load i32, ptr %79, align 4, !tbaa !9
  store i32 %80, ptr %39, align 4, !tbaa !9
  %81 = load i32, ptr %39, align 4, !tbaa !9
  %82 = mul nsw i32 %81, 1
  %83 = add nsw i32 1, %82
  store i32 %83, ptr %40, align 4, !tbaa !9
  %84 = load i32, ptr %40, align 4, !tbaa !9
  %85 = load ptr, ptr %26, align 8, !tbaa !5
  %86 = sext i32 %84 to i64
  %87 = sub i64 0, %86
  %88 = getelementptr inbounds double, ptr %85, i64 %87
  store ptr %88, ptr %26, align 8, !tbaa !5
  %89 = load ptr, ptr %30, align 8, !tbaa !5
  %90 = getelementptr inbounds double, ptr %89, i32 -1
  store ptr %90, ptr %30, align 8, !tbaa !5
  %91 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %91, align 4, !tbaa !9
  %92 = load ptr, ptr %31, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !9
  %94 = icmp eq i32 %93, -1
  %95 = zext i1 %94 to i32
  store i32 %95, ptr %45, align 4, !tbaa !9
  %96 = load ptr, ptr %19, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = icmp slt i32 %97, 0
  br i1 %98, label %99, label %101

99:                                               ; preds = %16
  %100 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -3, ptr %100, align 4, !tbaa !9
  br label %207

101:                                              ; preds = %16
  %102 = load ptr, ptr %21, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = load ptr, ptr %19, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = icmp sge i32 1, %105
  br i1 %106, label %107, label %108

107:                                              ; preds = %101
  br label %111

108:                                              ; preds = %101
  %109 = load ptr, ptr %19, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %108, %107
  %112 = phi i32 [ 1, %107 ], [ %110, %108 ]
  %113 = icmp slt i32 %103, %112
  br i1 %113, label %114, label %116

114:                                              ; preds = %111
  %115 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -5, ptr %115, align 4, !tbaa !9
  br label %206

116:                                              ; preds = %111
  %117 = load ptr, ptr %23, align 8, !tbaa !5
  %118 = load i32, ptr %117, align 4, !tbaa !9
  %119 = load ptr, ptr %19, align 8, !tbaa !5
  %120 = load i32, ptr %119, align 4, !tbaa !9
  %121 = icmp sge i32 1, %120
  br i1 %121, label %122, label %123

122:                                              ; preds = %116
  br label %126

123:                                              ; preds = %116
  %124 = load ptr, ptr %19, align 8, !tbaa !5
  %125 = load i32, ptr %124, align 4, !tbaa !9
  br label %126

126:                                              ; preds = %123, %122
  %127 = phi i32 [ 1, %122 ], [ %125, %123 ]
  %128 = icmp slt i32 %118, %127
  br i1 %128, label %129, label %131

129:                                              ; preds = %126
  %130 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -7, ptr %130, align 4, !tbaa !9
  br label %205

131:                                              ; preds = %126
  %132 = load ptr, ptr %25, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = icmp slt i32 %133, 1
  br i1 %134, label %152, label %135

135:                                              ; preds = %131
  %136 = load ptr, ptr %17, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = icmp ne i32 %137, 0
  br i1 %138, label %139, label %154

139:                                              ; preds = %135
  %140 = load ptr, ptr %25, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = load ptr, ptr %19, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 4, !tbaa !9
  %144 = icmp sge i32 1, %143
  br i1 %144, label %145, label %146

145:                                              ; preds = %139
  br label %149

146:                                              ; preds = %139
  %147 = load ptr, ptr %19, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  br label %149

149:                                              ; preds = %146, %145
  %150 = phi i32 [ 1, %145 ], [ %148, %146 ]
  %151 = icmp slt i32 %141, %150
  br i1 %151, label %152, label %154

152:                                              ; preds = %149, %131
  %153 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -9, ptr %153, align 4, !tbaa !9
  br label %204

154:                                              ; preds = %149, %135
  %155 = load ptr, ptr %27, align 8, !tbaa !5
  %156 = load i32, ptr %155, align 4, !tbaa !9
  %157 = icmp slt i32 %156, 1
  br i1 %157, label %175, label %158

158:                                              ; preds = %154
  %159 = load ptr, ptr %18, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %162, label %177

162:                                              ; preds = %158
  %163 = load ptr, ptr %27, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = load ptr, ptr %19, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = icmp sge i32 1, %166
  br i1 %167, label %168, label %169

168:                                              ; preds = %162
  br label %172

169:                                              ; preds = %162
  %170 = load ptr, ptr %19, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  br label %172

172:                                              ; preds = %169, %168
  %173 = phi i32 [ 1, %168 ], [ %171, %169 ]
  %174 = icmp slt i32 %164, %173
  br i1 %174, label %175, label %177

175:                                              ; preds = %172, %154
  %176 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -11, ptr %176, align 4, !tbaa !9
  br label %203

177:                                              ; preds = %172, %158
  %178 = load ptr, ptr %28, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = icmp slt i32 %179, 1
  br i1 %180, label %187, label %181

181:                                              ; preds = %177
  %182 = load ptr, ptr %28, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = load ptr, ptr %19, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = icmp sgt i32 %183, %185
  br i1 %186, label %187, label %189

187:                                              ; preds = %181, %177
  %188 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -12, ptr %188, align 4, !tbaa !9
  br label %202

189:                                              ; preds = %181
  %190 = load ptr, ptr %29, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = icmp slt i32 %191, 1
  br i1 %192, label %199, label %193

193:                                              ; preds = %189
  %194 = load ptr, ptr %29, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = load ptr, ptr %19, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = icmp sgt i32 %195, %197
  br i1 %198, label %199, label %201

199:                                              ; preds = %193, %189
  %200 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -13, ptr %200, align 4, !tbaa !9
  br label %201

201:                                              ; preds = %199, %193
  br label %202

202:                                              ; preds = %201, %187
  br label %203

203:                                              ; preds = %202, %175
  br label %204

204:                                              ; preds = %203, %152
  br label %205

205:                                              ; preds = %204, %129
  br label %206

206:                                              ; preds = %205, %114
  br label %207

207:                                              ; preds = %206, %99
  %208 = load ptr, ptr %32, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = icmp eq i32 %209, 0
  br i1 %210, label %211, label %236

211:                                              ; preds = %207
  %212 = load ptr, ptr %19, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = icmp sle i32 %213, 1
  br i1 %214, label %215, label %216

215:                                              ; preds = %211
  store i32 1, ptr %43, align 4, !tbaa !9
  br label %221

216:                                              ; preds = %211
  %217 = load ptr, ptr %19, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = shl i32 %218, 2
  %220 = add nsw i32 %219, 16
  store i32 %220, ptr %43, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %216, %215
  %222 = load i32, ptr %43, align 4, !tbaa !9
  %223 = sitofp i32 %222 to double
  %224 = load ptr, ptr %30, align 8, !tbaa !5
  %225 = getelementptr inbounds double, ptr %224, i64 1
  store double %223, ptr %225, align 8, !tbaa !11
  %226 = load ptr, ptr %31, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = load i32, ptr %43, align 4, !tbaa !9
  %229 = icmp slt i32 %227, %228
  br i1 %229, label %230, label %235

230:                                              ; preds = %221
  %231 = load i32, ptr %45, align 4, !tbaa !9
  %232 = icmp ne i32 %231, 0
  br i1 %232, label %235, label %233

233:                                              ; preds = %230
  %234 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -15, ptr %234, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %233, %230, %221
  br label %236

236:                                              ; preds = %235, %207
  %237 = load ptr, ptr %32, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %240, label %245

240:                                              ; preds = %236
  %241 = load ptr, ptr %32, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = sub nsw i32 0, %242
  store i32 %243, ptr %41, align 4, !tbaa !9
  %244 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %41, i32 noundef 6)
  store i32 1, ptr %48, align 4
  br label %1025

245:                                              ; preds = %236
  %246 = load i32, ptr %45, align 4, !tbaa !9
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %248, label %249

248:                                              ; preds = %245
  store i32 1, ptr %48, align 4
  br label %1025

249:                                              ; preds = %245
  br label %250

250:                                              ; preds = %249
  %251 = load ptr, ptr %19, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = icmp sle i32 %252, 1
  br i1 %253, label %254, label %255

254:                                              ; preds = %250
  store i32 1, ptr %48, align 4
  br label %1025

255:                                              ; preds = %250
  %256 = load ptr, ptr %28, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = icmp sgt i32 %257, 1
  br i1 %258, label %259, label %278

259:                                              ; preds = %255
  %260 = load ptr, ptr %20, align 8, !tbaa !5
  %261 = load ptr, ptr %28, align 8, !tbaa !5
  %262 = load i32, ptr %261, align 4, !tbaa !9
  %263 = load ptr, ptr %28, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = sub nsw i32 %264, 1
  %266 = load i32, ptr %33, align 4, !tbaa !9
  %267 = mul nsw i32 %265, %266
  %268 = add nsw i32 %262, %267
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds double, ptr %260, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !11
  %272 = fcmp une double %271, 0.000000e+00
  br i1 %272, label %273, label %277

273:                                              ; preds = %259
  %274 = load ptr, ptr %28, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = add nsw i32 %275, -1
  store i32 %276, ptr %274, align 4, !tbaa !9
  br label %277

277:                                              ; preds = %273, %259
  br label %278

278:                                              ; preds = %277, %255
  store i32 1, ptr %46, align 4, !tbaa !9
  %279 = load ptr, ptr %28, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = load ptr, ptr %19, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = icmp slt i32 %280, %282
  br i1 %283, label %284, label %300

284:                                              ; preds = %278
  %285 = load ptr, ptr %20, align 8, !tbaa !5
  %286 = load ptr, ptr %28, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = add nsw i32 %287, 1
  %289 = load ptr, ptr %28, align 8, !tbaa !5
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = load i32, ptr %33, align 4, !tbaa !9
  %292 = mul nsw i32 %290, %291
  %293 = add nsw i32 %288, %292
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds double, ptr %285, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !11
  %297 = fcmp une double %296, 0.000000e+00
  br i1 %297, label %298, label %299

298:                                              ; preds = %284
  store i32 2, ptr %46, align 4, !tbaa !9
  br label %299

299:                                              ; preds = %298, %284
  br label %300

300:                                              ; preds = %299, %278
  %301 = load ptr, ptr %29, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = icmp sgt i32 %302, 1
  br i1 %303, label %304, label %323

304:                                              ; preds = %300
  %305 = load ptr, ptr %20, align 8, !tbaa !5
  %306 = load ptr, ptr %29, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = load ptr, ptr %29, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = sub nsw i32 %309, 1
  %311 = load i32, ptr %33, align 4, !tbaa !9
  %312 = mul nsw i32 %310, %311
  %313 = add nsw i32 %307, %312
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %305, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !11
  %317 = fcmp une double %316, 0.000000e+00
  br i1 %317, label %318, label %322

318:                                              ; preds = %304
  %319 = load ptr, ptr %29, align 8, !tbaa !5
  %320 = load i32, ptr %319, align 4, !tbaa !9
  %321 = add nsw i32 %320, -1
  store i32 %321, ptr %319, align 4, !tbaa !9
  br label %322

322:                                              ; preds = %318, %304
  br label %323

323:                                              ; preds = %322, %300
  store i32 1, ptr %47, align 4, !tbaa !9
  %324 = load ptr, ptr %29, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = load ptr, ptr %19, align 8, !tbaa !5
  %327 = load i32, ptr %326, align 4, !tbaa !9
  %328 = icmp slt i32 %325, %327
  br i1 %328, label %329, label %345

329:                                              ; preds = %323
  %330 = load ptr, ptr %20, align 8, !tbaa !5
  %331 = load ptr, ptr %29, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = add nsw i32 %332, 1
  %334 = load ptr, ptr %29, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = load i32, ptr %33, align 4, !tbaa !9
  %337 = mul nsw i32 %335, %336
  %338 = add nsw i32 %333, %337
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds double, ptr %330, i64 %339
  %341 = load double, ptr %340, align 8, !tbaa !11
  %342 = fcmp une double %341, 0.000000e+00
  br i1 %342, label %343, label %344

343:                                              ; preds = %329
  store i32 2, ptr %47, align 4, !tbaa !9
  br label %344

344:                                              ; preds = %343, %329
  br label %345

345:                                              ; preds = %344, %323
  %346 = load ptr, ptr %28, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = load ptr, ptr %29, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = icmp eq i32 %347, %349
  br i1 %350, label %351, label %352

351:                                              ; preds = %345
  store i32 1, ptr %48, align 4
  br label %1025

352:                                              ; preds = %345
  %353 = load ptr, ptr %28, align 8, !tbaa !5
  %354 = load i32, ptr %353, align 4, !tbaa !9
  %355 = load ptr, ptr %29, align 8, !tbaa !5
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = icmp slt i32 %354, %356
  br i1 %357, label %358, label %701

358:                                              ; preds = %352
  %359 = load i32, ptr %46, align 4, !tbaa !9
  %360 = icmp eq i32 %359, 2
  br i1 %360, label %361, label %368

361:                                              ; preds = %358
  %362 = load i32, ptr %47, align 4, !tbaa !9
  %363 = icmp eq i32 %362, 1
  br i1 %363, label %364, label %368

364:                                              ; preds = %361
  %365 = load ptr, ptr %29, align 8, !tbaa !5
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = add nsw i32 %366, -1
  store i32 %367, ptr %365, align 4, !tbaa !9
  br label %368

368:                                              ; preds = %364, %361, %358
  %369 = load i32, ptr %46, align 4, !tbaa !9
  %370 = icmp eq i32 %369, 1
  br i1 %370, label %371, label %378

371:                                              ; preds = %368
  %372 = load i32, ptr %47, align 4, !tbaa !9
  %373 = icmp eq i32 %372, 2
  br i1 %373, label %374, label %378

374:                                              ; preds = %371
  %375 = load ptr, ptr %29, align 8, !tbaa !5
  %376 = load i32, ptr %375, align 4, !tbaa !9
  %377 = add nsw i32 %376, 1
  store i32 %377, ptr %375, align 4, !tbaa !9
  br label %378

378:                                              ; preds = %374, %371, %368
  %379 = load ptr, ptr %28, align 8, !tbaa !5
  %380 = load i32, ptr %379, align 4, !tbaa !9
  store i32 %380, ptr %42, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %699, %378
  %382 = load i32, ptr %46, align 4, !tbaa !9
  %383 = icmp eq i32 %382, 1
  br i1 %383, label %387, label %384

384:                                              ; preds = %381
  %385 = load i32, ptr %46, align 4, !tbaa !9
  %386 = icmp eq i32 %385, 2
  br i1 %386, label %387, label %468

387:                                              ; preds = %384, %381
  store i32 1, ptr %44, align 4, !tbaa !9
  %388 = load i32, ptr %42, align 4, !tbaa !9
  %389 = load i32, ptr %46, align 4, !tbaa !9
  %390 = add nsw i32 %388, %389
  %391 = add nsw i32 %390, 1
  %392 = load ptr, ptr %19, align 8, !tbaa !5
  %393 = load i32, ptr %392, align 4, !tbaa !9
  %394 = icmp sle i32 %391, %393
  br i1 %394, label %395, label %413

395:                                              ; preds = %387
  %396 = load ptr, ptr %20, align 8, !tbaa !5
  %397 = load i32, ptr %42, align 4, !tbaa !9
  %398 = load i32, ptr %46, align 4, !tbaa !9
  %399 = add nsw i32 %397, %398
  %400 = add nsw i32 %399, 1
  %401 = load i32, ptr %42, align 4, !tbaa !9
  %402 = load i32, ptr %46, align 4, !tbaa !9
  %403 = add nsw i32 %401, %402
  %404 = load i32, ptr %33, align 4, !tbaa !9
  %405 = mul nsw i32 %403, %404
  %406 = add nsw i32 %400, %405
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %396, i64 %407
  %409 = load double, ptr %408, align 8, !tbaa !11
  %410 = fcmp une double %409, 0.000000e+00
  br i1 %410, label %411, label %412

411:                                              ; preds = %395
  store i32 2, ptr %44, align 4, !tbaa !9
  br label %412

412:                                              ; preds = %411, %395
  br label %413

413:                                              ; preds = %412, %387
  %414 = load ptr, ptr %17, align 8, !tbaa !5
  %415 = load ptr, ptr %18, align 8, !tbaa !5
  %416 = load ptr, ptr %19, align 8, !tbaa !5
  %417 = load ptr, ptr %20, align 8, !tbaa !5
  %418 = load i32, ptr %34, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %417, i64 %419
  %421 = load ptr, ptr %21, align 8, !tbaa !5
  %422 = load ptr, ptr %22, align 8, !tbaa !5
  %423 = load i32, ptr %36, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds double, ptr %422, i64 %424
  %426 = load ptr, ptr %23, align 8, !tbaa !5
  %427 = load ptr, ptr %24, align 8, !tbaa !5
  %428 = load i32, ptr %38, align 4, !tbaa !9
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds double, ptr %427, i64 %429
  %431 = load ptr, ptr %25, align 8, !tbaa !5
  %432 = load ptr, ptr %26, align 8, !tbaa !5
  %433 = load i32, ptr %40, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds double, ptr %432, i64 %434
  %436 = load ptr, ptr %27, align 8, !tbaa !5
  %437 = load ptr, ptr %30, align 8, !tbaa !5
  %438 = getelementptr inbounds double, ptr %437, i64 1
  %439 = load ptr, ptr %31, align 8, !tbaa !5
  %440 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %414, ptr noundef %415, ptr noundef %416, ptr noundef %420, ptr noundef %421, ptr noundef %425, ptr noundef %426, ptr noundef %430, ptr noundef %431, ptr noundef %435, ptr noundef %436, ptr noundef %42, ptr noundef %46, ptr noundef %44, ptr noundef %438, ptr noundef %439, ptr noundef %440)
  %441 = load ptr, ptr %32, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = icmp ne i32 %442, 0
  br i1 %443, label %444, label %447

444:                                              ; preds = %413
  %445 = load i32, ptr %42, align 4, !tbaa !9
  %446 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %445, ptr %446, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

447:                                              ; preds = %413
  %448 = load i32, ptr %44, align 4, !tbaa !9
  %449 = load i32, ptr %42, align 4, !tbaa !9
  %450 = add nsw i32 %449, %448
  store i32 %450, ptr %42, align 4, !tbaa !9
  %451 = load i32, ptr %46, align 4, !tbaa !9
  %452 = icmp eq i32 %451, 2
  br i1 %452, label %453, label %467

453:                                              ; preds = %447
  %454 = load ptr, ptr %20, align 8, !tbaa !5
  %455 = load i32, ptr %42, align 4, !tbaa !9
  %456 = add nsw i32 %455, 1
  %457 = load i32, ptr %42, align 4, !tbaa !9
  %458 = load i32, ptr %33, align 4, !tbaa !9
  %459 = mul nsw i32 %457, %458
  %460 = add nsw i32 %456, %459
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds double, ptr %454, i64 %461
  %463 = load double, ptr %462, align 8, !tbaa !11
  %464 = fcmp oeq double %463, 0.000000e+00
  br i1 %464, label %465, label %466

465:                                              ; preds = %453
  store i32 3, ptr %46, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %465, %453
  br label %467

467:                                              ; preds = %466, %447
  br label %694

468:                                              ; preds = %384
  store i32 1, ptr %44, align 4, !tbaa !9
  %469 = load i32, ptr %42, align 4, !tbaa !9
  %470 = add nsw i32 %469, 3
  %471 = load ptr, ptr %19, align 8, !tbaa !5
  %472 = load i32, ptr %471, align 4, !tbaa !9
  %473 = icmp sle i32 %470, %472
  br i1 %473, label %474, label %489

474:                                              ; preds = %468
  %475 = load ptr, ptr %20, align 8, !tbaa !5
  %476 = load i32, ptr %42, align 4, !tbaa !9
  %477 = add nsw i32 %476, 3
  %478 = load i32, ptr %42, align 4, !tbaa !9
  %479 = add nsw i32 %478, 2
  %480 = load i32, ptr %33, align 4, !tbaa !9
  %481 = mul nsw i32 %479, %480
  %482 = add nsw i32 %477, %481
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds double, ptr %475, i64 %483
  %485 = load double, ptr %484, align 8, !tbaa !11
  %486 = fcmp une double %485, 0.000000e+00
  br i1 %486, label %487, label %488

487:                                              ; preds = %474
  store i32 2, ptr %44, align 4, !tbaa !9
  br label %488

488:                                              ; preds = %487, %474
  br label %489

489:                                              ; preds = %488, %468
  %490 = load i32, ptr %42, align 4, !tbaa !9
  %491 = add nsw i32 %490, 1
  store i32 %491, ptr %41, align 4, !tbaa !9
  %492 = load ptr, ptr %17, align 8, !tbaa !5
  %493 = load ptr, ptr %18, align 8, !tbaa !5
  %494 = load ptr, ptr %19, align 8, !tbaa !5
  %495 = load ptr, ptr %20, align 8, !tbaa !5
  %496 = load i32, ptr %34, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds double, ptr %495, i64 %497
  %499 = load ptr, ptr %21, align 8, !tbaa !5
  %500 = load ptr, ptr %22, align 8, !tbaa !5
  %501 = load i32, ptr %36, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds double, ptr %500, i64 %502
  %504 = load ptr, ptr %23, align 8, !tbaa !5
  %505 = load ptr, ptr %24, align 8, !tbaa !5
  %506 = load i32, ptr %38, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds double, ptr %505, i64 %507
  %509 = load ptr, ptr %25, align 8, !tbaa !5
  %510 = load ptr, ptr %26, align 8, !tbaa !5
  %511 = load i32, ptr %40, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds double, ptr %510, i64 %512
  %514 = load ptr, ptr %27, align 8, !tbaa !5
  %515 = load ptr, ptr %30, align 8, !tbaa !5
  %516 = getelementptr inbounds double, ptr %515, i64 1
  %517 = load ptr, ptr %31, align 8, !tbaa !5
  %518 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %492, ptr noundef %493, ptr noundef %494, ptr noundef %498, ptr noundef %499, ptr noundef %503, ptr noundef %504, ptr noundef %508, ptr noundef %509, ptr noundef %513, ptr noundef %514, ptr noundef %41, ptr noundef @c__1, ptr noundef %44, ptr noundef %516, ptr noundef %517, ptr noundef %518)
  %519 = load ptr, ptr %32, align 8, !tbaa !5
  %520 = load i32, ptr %519, align 4, !tbaa !9
  %521 = icmp ne i32 %520, 0
  br i1 %521, label %522, label %525

522:                                              ; preds = %489
  %523 = load i32, ptr %42, align 4, !tbaa !9
  %524 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %523, ptr %524, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

525:                                              ; preds = %489
  %526 = load i32, ptr %44, align 4, !tbaa !9
  %527 = icmp eq i32 %526, 1
  br i1 %527, label %528, label %565

528:                                              ; preds = %525
  %529 = load ptr, ptr %17, align 8, !tbaa !5
  %530 = load ptr, ptr %18, align 8, !tbaa !5
  %531 = load ptr, ptr %19, align 8, !tbaa !5
  %532 = load ptr, ptr %20, align 8, !tbaa !5
  %533 = load i32, ptr %34, align 4, !tbaa !9
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds double, ptr %532, i64 %534
  %536 = load ptr, ptr %21, align 8, !tbaa !5
  %537 = load ptr, ptr %22, align 8, !tbaa !5
  %538 = load i32, ptr %36, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds double, ptr %537, i64 %539
  %541 = load ptr, ptr %23, align 8, !tbaa !5
  %542 = load ptr, ptr %24, align 8, !tbaa !5
  %543 = load i32, ptr %38, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %542, i64 %544
  %546 = load ptr, ptr %25, align 8, !tbaa !5
  %547 = load ptr, ptr %26, align 8, !tbaa !5
  %548 = load i32, ptr %40, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds double, ptr %547, i64 %549
  %551 = load ptr, ptr %27, align 8, !tbaa !5
  %552 = load ptr, ptr %30, align 8, !tbaa !5
  %553 = getelementptr inbounds double, ptr %552, i64 1
  %554 = load ptr, ptr %31, align 8, !tbaa !5
  %555 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %529, ptr noundef %530, ptr noundef %531, ptr noundef %535, ptr noundef %536, ptr noundef %540, ptr noundef %541, ptr noundef %545, ptr noundef %546, ptr noundef %550, ptr noundef %551, ptr noundef %42, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %553, ptr noundef %554, ptr noundef %555)
  %556 = load ptr, ptr %32, align 8, !tbaa !5
  %557 = load i32, ptr %556, align 4, !tbaa !9
  %558 = icmp ne i32 %557, 0
  br i1 %558, label %559, label %562

559:                                              ; preds = %528
  %560 = load i32, ptr %42, align 4, !tbaa !9
  %561 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %560, ptr %561, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

562:                                              ; preds = %528
  %563 = load i32, ptr %42, align 4, !tbaa !9
  %564 = add nsw i32 %563, 1
  store i32 %564, ptr %42, align 4, !tbaa !9
  br label %693

565:                                              ; preds = %525
  %566 = load ptr, ptr %20, align 8, !tbaa !5
  %567 = load i32, ptr %42, align 4, !tbaa !9
  %568 = add nsw i32 %567, 2
  %569 = load i32, ptr %42, align 4, !tbaa !9
  %570 = add nsw i32 %569, 1
  %571 = load i32, ptr %33, align 4, !tbaa !9
  %572 = mul nsw i32 %570, %571
  %573 = add nsw i32 %568, %572
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds double, ptr %566, i64 %574
  %576 = load double, ptr %575, align 8, !tbaa !11
  %577 = fcmp oeq double %576, 0.000000e+00
  br i1 %577, label %578, label %579

578:                                              ; preds = %565
  store i32 1, ptr %44, align 4, !tbaa !9
  br label %579

579:                                              ; preds = %578, %565
  %580 = load i32, ptr %44, align 4, !tbaa !9
  %581 = icmp eq i32 %580, 2
  br i1 %581, label %582, label %619

582:                                              ; preds = %579
  %583 = load ptr, ptr %17, align 8, !tbaa !5
  %584 = load ptr, ptr %18, align 8, !tbaa !5
  %585 = load ptr, ptr %19, align 8, !tbaa !5
  %586 = load ptr, ptr %20, align 8, !tbaa !5
  %587 = load i32, ptr %34, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds double, ptr %586, i64 %588
  %590 = load ptr, ptr %21, align 8, !tbaa !5
  %591 = load ptr, ptr %22, align 8, !tbaa !5
  %592 = load i32, ptr %36, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %591, i64 %593
  %595 = load ptr, ptr %23, align 8, !tbaa !5
  %596 = load ptr, ptr %24, align 8, !tbaa !5
  %597 = load i32, ptr %38, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds double, ptr %596, i64 %598
  %600 = load ptr, ptr %25, align 8, !tbaa !5
  %601 = load ptr, ptr %26, align 8, !tbaa !5
  %602 = load i32, ptr %40, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds double, ptr %601, i64 %603
  %605 = load ptr, ptr %27, align 8, !tbaa !5
  %606 = load ptr, ptr %30, align 8, !tbaa !5
  %607 = getelementptr inbounds double, ptr %606, i64 1
  %608 = load ptr, ptr %31, align 8, !tbaa !5
  %609 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %583, ptr noundef %584, ptr noundef %585, ptr noundef %589, ptr noundef %590, ptr noundef %594, ptr noundef %595, ptr noundef %599, ptr noundef %600, ptr noundef %604, ptr noundef %605, ptr noundef %42, ptr noundef @c__1, ptr noundef %44, ptr noundef %607, ptr noundef %608, ptr noundef %609)
  %610 = load ptr, ptr %32, align 8, !tbaa !5
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = icmp ne i32 %611, 0
  br i1 %612, label %613, label %616

613:                                              ; preds = %582
  %614 = load i32, ptr %42, align 4, !tbaa !9
  %615 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %614, ptr %615, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

616:                                              ; preds = %582
  %617 = load i32, ptr %42, align 4, !tbaa !9
  %618 = add nsw i32 %617, 2
  store i32 %618, ptr %42, align 4, !tbaa !9
  br label %692

619:                                              ; preds = %579
  %620 = load ptr, ptr %17, align 8, !tbaa !5
  %621 = load ptr, ptr %18, align 8, !tbaa !5
  %622 = load ptr, ptr %19, align 8, !tbaa !5
  %623 = load ptr, ptr %20, align 8, !tbaa !5
  %624 = load i32, ptr %34, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %623, i64 %625
  %627 = load ptr, ptr %21, align 8, !tbaa !5
  %628 = load ptr, ptr %22, align 8, !tbaa !5
  %629 = load i32, ptr %36, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds double, ptr %628, i64 %630
  %632 = load ptr, ptr %23, align 8, !tbaa !5
  %633 = load ptr, ptr %24, align 8, !tbaa !5
  %634 = load i32, ptr %38, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds double, ptr %633, i64 %635
  %637 = load ptr, ptr %25, align 8, !tbaa !5
  %638 = load ptr, ptr %26, align 8, !tbaa !5
  %639 = load i32, ptr %40, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds double, ptr %638, i64 %640
  %642 = load ptr, ptr %27, align 8, !tbaa !5
  %643 = load ptr, ptr %30, align 8, !tbaa !5
  %644 = getelementptr inbounds double, ptr %643, i64 1
  %645 = load ptr, ptr %31, align 8, !tbaa !5
  %646 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %620, ptr noundef %621, ptr noundef %622, ptr noundef %626, ptr noundef %627, ptr noundef %631, ptr noundef %632, ptr noundef %636, ptr noundef %637, ptr noundef %641, ptr noundef %642, ptr noundef %42, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %644, ptr noundef %645, ptr noundef %646)
  %647 = load ptr, ptr %32, align 8, !tbaa !5
  %648 = load i32, ptr %647, align 4, !tbaa !9
  %649 = icmp ne i32 %648, 0
  br i1 %649, label %650, label %653

650:                                              ; preds = %619
  %651 = load i32, ptr %42, align 4, !tbaa !9
  %652 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %651, ptr %652, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

653:                                              ; preds = %619
  %654 = load i32, ptr %42, align 4, !tbaa !9
  %655 = add nsw i32 %654, 1
  store i32 %655, ptr %42, align 4, !tbaa !9
  %656 = load ptr, ptr %17, align 8, !tbaa !5
  %657 = load ptr, ptr %18, align 8, !tbaa !5
  %658 = load ptr, ptr %19, align 8, !tbaa !5
  %659 = load ptr, ptr %20, align 8, !tbaa !5
  %660 = load i32, ptr %34, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds double, ptr %659, i64 %661
  %663 = load ptr, ptr %21, align 8, !tbaa !5
  %664 = load ptr, ptr %22, align 8, !tbaa !5
  %665 = load i32, ptr %36, align 4, !tbaa !9
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds double, ptr %664, i64 %666
  %668 = load ptr, ptr %23, align 8, !tbaa !5
  %669 = load ptr, ptr %24, align 8, !tbaa !5
  %670 = load i32, ptr %38, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds double, ptr %669, i64 %671
  %673 = load ptr, ptr %25, align 8, !tbaa !5
  %674 = load ptr, ptr %26, align 8, !tbaa !5
  %675 = load i32, ptr %40, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds double, ptr %674, i64 %676
  %678 = load ptr, ptr %27, align 8, !tbaa !5
  %679 = load ptr, ptr %30, align 8, !tbaa !5
  %680 = getelementptr inbounds double, ptr %679, i64 1
  %681 = load ptr, ptr %31, align 8, !tbaa !5
  %682 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %656, ptr noundef %657, ptr noundef %658, ptr noundef %662, ptr noundef %663, ptr noundef %667, ptr noundef %668, ptr noundef %672, ptr noundef %673, ptr noundef %677, ptr noundef %678, ptr noundef %42, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %680, ptr noundef %681, ptr noundef %682)
  %683 = load ptr, ptr %32, align 8, !tbaa !5
  %684 = load i32, ptr %683, align 4, !tbaa !9
  %685 = icmp ne i32 %684, 0
  br i1 %685, label %686, label %689

686:                                              ; preds = %653
  %687 = load i32, ptr %42, align 4, !tbaa !9
  %688 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %687, ptr %688, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

689:                                              ; preds = %653
  %690 = load i32, ptr %42, align 4, !tbaa !9
  %691 = add nsw i32 %690, 1
  store i32 %691, ptr %42, align 4, !tbaa !9
  br label %692

692:                                              ; preds = %689, %616
  br label %693

693:                                              ; preds = %692, %562
  br label %694

694:                                              ; preds = %693, %467
  %695 = load i32, ptr %42, align 4, !tbaa !9
  %696 = load ptr, ptr %29, align 8, !tbaa !5
  %697 = load i32, ptr %696, align 4, !tbaa !9
  %698 = icmp slt i32 %695, %697
  br i1 %698, label %699, label %700

699:                                              ; preds = %694
  br label %381

700:                                              ; preds = %694
  br label %1018

701:                                              ; preds = %352
  %702 = load ptr, ptr %28, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  store i32 %703, ptr %42, align 4, !tbaa !9
  br label %704

704:                                              ; preds = %1016, %701
  %705 = load i32, ptr %46, align 4, !tbaa !9
  %706 = icmp eq i32 %705, 1
  br i1 %706, label %710, label %707

707:                                              ; preds = %704
  %708 = load i32, ptr %46, align 4, !tbaa !9
  %709 = icmp eq i32 %708, 2
  br i1 %709, label %710, label %786

710:                                              ; preds = %707, %704
  store i32 1, ptr %44, align 4, !tbaa !9
  %711 = load i32, ptr %42, align 4, !tbaa !9
  %712 = icmp sge i32 %711, 3
  br i1 %712, label %713, label %728

713:                                              ; preds = %710
  %714 = load ptr, ptr %20, align 8, !tbaa !5
  %715 = load i32, ptr %42, align 4, !tbaa !9
  %716 = sub nsw i32 %715, 1
  %717 = load i32, ptr %42, align 4, !tbaa !9
  %718 = sub nsw i32 %717, 2
  %719 = load i32, ptr %33, align 4, !tbaa !9
  %720 = mul nsw i32 %718, %719
  %721 = add nsw i32 %716, %720
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds double, ptr %714, i64 %722
  %724 = load double, ptr %723, align 8, !tbaa !11
  %725 = fcmp une double %724, 0.000000e+00
  br i1 %725, label %726, label %727

726:                                              ; preds = %713
  store i32 2, ptr %44, align 4, !tbaa !9
  br label %727

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

728:                                              ; preds = %727, %710
  %729 = load i32, ptr %42, align 4, !tbaa !9
  %730 = load i32, ptr %44, align 4, !tbaa !9
  %731 = sub nsw i32 %729, %730
  store i32 %731, ptr %41, align 4, !tbaa !9
  %732 = load ptr, ptr %17, align 8, !tbaa !5
  %733 = load ptr, ptr %18, align 8, !tbaa !5
  %734 = load ptr, ptr %19, align 8, !tbaa !5
  %735 = load ptr, ptr %20, align 8, !tbaa !5
  %736 = load i32, ptr %34, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %735, i64 %737
  %739 = load ptr, ptr %21, align 8, !tbaa !5
  %740 = load ptr, ptr %22, align 8, !tbaa !5
  %741 = load i32, ptr %36, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds double, ptr %740, i64 %742
  %744 = load ptr, ptr %23, align 8, !tbaa !5
  %745 = load ptr, ptr %24, align 8, !tbaa !5
  %746 = load i32, ptr %38, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds double, ptr %745, i64 %747
  %749 = load ptr, ptr %25, align 8, !tbaa !5
  %750 = load ptr, ptr %26, align 8, !tbaa !5
  %751 = load i32, ptr %40, align 4, !tbaa !9
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds double, ptr %750, i64 %752
  %754 = load ptr, ptr %27, align 8, !tbaa !5
  %755 = load ptr, ptr %30, align 8, !tbaa !5
  %756 = getelementptr inbounds double, ptr %755, i64 1
  %757 = load ptr, ptr %31, align 8, !tbaa !5
  %758 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %732, ptr noundef %733, ptr noundef %734, ptr noundef %738, ptr noundef %739, ptr noundef %743, ptr noundef %744, ptr noundef %748, ptr noundef %749, ptr noundef %753, ptr noundef %754, ptr noundef %41, ptr noundef %44, ptr noundef %46, ptr noundef %756, ptr noundef %757, ptr noundef %758)
  %759 = load ptr, ptr %32, align 8, !tbaa !5
  %760 = load i32, ptr %759, align 4, !tbaa !9
  %761 = icmp ne i32 %760, 0
  br i1 %761, label %762, label %765

762:                                              ; preds = %728
  %763 = load i32, ptr %42, align 4, !tbaa !9
  %764 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %763, ptr %764, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

765:                                              ; preds = %728
  %766 = load i32, ptr %44, align 4, !tbaa !9
  %767 = load i32, ptr %42, align 4, !tbaa !9
  %768 = sub nsw i32 %767, %766
  store i32 %768, ptr %42, align 4, !tbaa !9
  %769 = load i32, ptr %46, align 4, !tbaa !9
  %770 = icmp eq i32 %769, 2
  br i1 %770, label %771, label %785

771:                                              ; preds = %765
  %772 = load ptr, ptr %20, align 8, !tbaa !5
  %773 = load i32, ptr %42, align 4, !tbaa !9
  %774 = add nsw i32 %773, 1
  %775 = load i32, ptr %42, align 4, !tbaa !9
  %776 = load i32, ptr %33, align 4, !tbaa !9
  %777 = mul nsw i32 %775, %776
  %778 = add nsw i32 %774, %777
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds double, ptr %772, i64 %779
  %781 = load double, ptr %780, align 8, !tbaa !11
  %782 = fcmp oeq double %781, 0.000000e+00
  br i1 %782, label %783, label %784

783:                                              ; preds = %771
  store i32 3, ptr %46, align 4, !tbaa !9
  br label %784

784:                                              ; preds = %783, %771
  br label %785

785:                                              ; preds = %784, %765
  br label %1011

786:                                              ; preds = %707
  store i32 1, ptr %44, align 4, !tbaa !9
  %787 = load i32, ptr %42, align 4, !tbaa !9
  %788 = icmp sge i32 %787, 3
  br i1 %788, label %789, label %804

789:                                              ; preds = %786
  %790 = load ptr, ptr %20, align 8, !tbaa !5
  %791 = load i32, ptr %42, align 4, !tbaa !9
  %792 = sub nsw i32 %791, 1
  %793 = load i32, ptr %42, align 4, !tbaa !9
  %794 = sub nsw i32 %793, 2
  %795 = load i32, ptr %33, align 4, !tbaa !9
  %796 = mul nsw i32 %794, %795
  %797 = add nsw i32 %792, %796
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds double, ptr %790, i64 %798
  %800 = load double, ptr %799, align 8, !tbaa !11
  %801 = fcmp une double %800, 0.000000e+00
  br i1 %801, label %802, label %803

802:                                              ; preds = %789
  store i32 2, ptr %44, align 4, !tbaa !9
  br label %803

803:                                              ; preds = %802, %789
  br label %804

804:                                              ; preds = %803, %786
  %805 = load i32, ptr %42, align 4, !tbaa !9
  %806 = load i32, ptr %44, align 4, !tbaa !9
  %807 = sub nsw i32 %805, %806
  store i32 %807, ptr %41, align 4, !tbaa !9
  %808 = load ptr, ptr %17, align 8, !tbaa !5
  %809 = load ptr, ptr %18, align 8, !tbaa !5
  %810 = load ptr, ptr %19, align 8, !tbaa !5
  %811 = load ptr, ptr %20, align 8, !tbaa !5
  %812 = load i32, ptr %34, align 4, !tbaa !9
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds double, ptr %811, i64 %813
  %815 = load ptr, ptr %21, align 8, !tbaa !5
  %816 = load ptr, ptr %22, align 8, !tbaa !5
  %817 = load i32, ptr %36, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds double, ptr %816, i64 %818
  %820 = load ptr, ptr %23, align 8, !tbaa !5
  %821 = load ptr, ptr %24, align 8, !tbaa !5
  %822 = load i32, ptr %38, align 4, !tbaa !9
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds double, ptr %821, i64 %823
  %825 = load ptr, ptr %25, align 8, !tbaa !5
  %826 = load ptr, ptr %26, align 8, !tbaa !5
  %827 = load i32, ptr %40, align 4, !tbaa !9
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %826, i64 %828
  %830 = load ptr, ptr %27, align 8, !tbaa !5
  %831 = load ptr, ptr %30, align 8, !tbaa !5
  %832 = getelementptr inbounds double, ptr %831, i64 1
  %833 = load ptr, ptr %31, align 8, !tbaa !5
  %834 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %808, ptr noundef %809, ptr noundef %810, ptr noundef %814, ptr noundef %815, ptr noundef %819, ptr noundef %820, ptr noundef %824, ptr noundef %825, ptr noundef %829, ptr noundef %830, ptr noundef %41, ptr noundef %44, ptr noundef @c__1, ptr noundef %832, ptr noundef %833, ptr noundef %834)
  %835 = load ptr, ptr %32, align 8, !tbaa !5
  %836 = load i32, ptr %835, align 4, !tbaa !9
  %837 = icmp ne i32 %836, 0
  br i1 %837, label %838, label %841

838:                                              ; preds = %804
  %839 = load i32, ptr %42, align 4, !tbaa !9
  %840 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %839, ptr %840, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

841:                                              ; preds = %804
  %842 = load i32, ptr %44, align 4, !tbaa !9
  %843 = icmp eq i32 %842, 1
  br i1 %843, label %844, label %881

844:                                              ; preds = %841
  %845 = load ptr, ptr %17, align 8, !tbaa !5
  %846 = load ptr, ptr %18, align 8, !tbaa !5
  %847 = load ptr, ptr %19, align 8, !tbaa !5
  %848 = load ptr, ptr %20, align 8, !tbaa !5
  %849 = load i32, ptr %34, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %848, i64 %850
  %852 = load ptr, ptr %21, align 8, !tbaa !5
  %853 = load ptr, ptr %22, align 8, !tbaa !5
  %854 = load i32, ptr %36, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds double, ptr %853, i64 %855
  %857 = load ptr, ptr %23, align 8, !tbaa !5
  %858 = load ptr, ptr %24, align 8, !tbaa !5
  %859 = load i32, ptr %38, align 4, !tbaa !9
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds double, ptr %858, i64 %860
  %862 = load ptr, ptr %25, align 8, !tbaa !5
  %863 = load ptr, ptr %26, align 8, !tbaa !5
  %864 = load i32, ptr %40, align 4, !tbaa !9
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds double, ptr %863, i64 %865
  %867 = load ptr, ptr %27, align 8, !tbaa !5
  %868 = load ptr, ptr %30, align 8, !tbaa !5
  %869 = getelementptr inbounds double, ptr %868, i64 1
  %870 = load ptr, ptr %31, align 8, !tbaa !5
  %871 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %845, ptr noundef %846, ptr noundef %847, ptr noundef %851, ptr noundef %852, ptr noundef %856, ptr noundef %857, ptr noundef %861, ptr noundef %862, ptr noundef %866, ptr noundef %867, ptr noundef %42, ptr noundef %44, ptr noundef @c__1, ptr noundef %869, ptr noundef %870, ptr noundef %871)
  %872 = load ptr, ptr %32, align 8, !tbaa !5
  %873 = load i32, ptr %872, align 4, !tbaa !9
  %874 = icmp ne i32 %873, 0
  br i1 %874, label %875, label %878

875:                                              ; preds = %844
  %876 = load i32, ptr %42, align 4, !tbaa !9
  %877 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %876, ptr %877, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

878:                                              ; preds = %844
  %879 = load i32, ptr %42, align 4, !tbaa !9
  %880 = add nsw i32 %879, -1
  store i32 %880, ptr %42, align 4, !tbaa !9
  br label %1010

881:                                              ; preds = %841
  %882 = load ptr, ptr %20, align 8, !tbaa !5
  %883 = load i32, ptr %42, align 4, !tbaa !9
  %884 = load i32, ptr %42, align 4, !tbaa !9
  %885 = sub nsw i32 %884, 1
  %886 = load i32, ptr %33, align 4, !tbaa !9
  %887 = mul nsw i32 %885, %886
  %888 = add nsw i32 %883, %887
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds double, ptr %882, i64 %889
  %891 = load double, ptr %890, align 8, !tbaa !11
  %892 = fcmp oeq double %891, 0.000000e+00
  br i1 %892, label %893, label %894

893:                                              ; preds = %881
  store i32 1, ptr %44, align 4, !tbaa !9
  br label %894

894:                                              ; preds = %893, %881
  %895 = load i32, ptr %44, align 4, !tbaa !9
  %896 = icmp eq i32 %895, 2
  br i1 %896, label %897, label %936

897:                                              ; preds = %894
  %898 = load i32, ptr %42, align 4, !tbaa !9
  %899 = sub nsw i32 %898, 1
  store i32 %899, ptr %41, align 4, !tbaa !9
  %900 = load ptr, ptr %17, align 8, !tbaa !5
  %901 = load ptr, ptr %18, align 8, !tbaa !5
  %902 = load ptr, ptr %19, align 8, !tbaa !5
  %903 = load ptr, ptr %20, align 8, !tbaa !5
  %904 = load i32, ptr %34, align 4, !tbaa !9
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds double, ptr %903, i64 %905
  %907 = load ptr, ptr %21, align 8, !tbaa !5
  %908 = load ptr, ptr %22, align 8, !tbaa !5
  %909 = load i32, ptr %36, align 4, !tbaa !9
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds double, ptr %908, i64 %910
  %912 = load ptr, ptr %23, align 8, !tbaa !5
  %913 = load ptr, ptr %24, align 8, !tbaa !5
  %914 = load i32, ptr %38, align 4, !tbaa !9
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds double, ptr %913, i64 %915
  %917 = load ptr, ptr %25, align 8, !tbaa !5
  %918 = load ptr, ptr %26, align 8, !tbaa !5
  %919 = load i32, ptr %40, align 4, !tbaa !9
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds double, ptr %918, i64 %920
  %922 = load ptr, ptr %27, align 8, !tbaa !5
  %923 = load ptr, ptr %30, align 8, !tbaa !5
  %924 = getelementptr inbounds double, ptr %923, i64 1
  %925 = load ptr, ptr %31, align 8, !tbaa !5
  %926 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %900, ptr noundef %901, ptr noundef %902, ptr noundef %906, ptr noundef %907, ptr noundef %911, ptr noundef %912, ptr noundef %916, ptr noundef %917, ptr noundef %921, ptr noundef %922, ptr noundef %41, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %924, ptr noundef %925, ptr noundef %926)
  %927 = load ptr, ptr %32, align 8, !tbaa !5
  %928 = load i32, ptr %927, align 4, !tbaa !9
  %929 = icmp ne i32 %928, 0
  br i1 %929, label %930, label %933

930:                                              ; preds = %897
  %931 = load i32, ptr %42, align 4, !tbaa !9
  %932 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %931, ptr %932, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

933:                                              ; preds = %897
  %934 = load i32, ptr %42, align 4, !tbaa !9
  %935 = add nsw i32 %934, -2
  store i32 %935, ptr %42, align 4, !tbaa !9
  br label %1009

936:                                              ; preds = %894
  %937 = load ptr, ptr %17, align 8, !tbaa !5
  %938 = load ptr, ptr %18, align 8, !tbaa !5
  %939 = load ptr, ptr %19, align 8, !tbaa !5
  %940 = load ptr, ptr %20, align 8, !tbaa !5
  %941 = load i32, ptr %34, align 4, !tbaa !9
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds double, ptr %940, i64 %942
  %944 = load ptr, ptr %21, align 8, !tbaa !5
  %945 = load ptr, ptr %22, align 8, !tbaa !5
  %946 = load i32, ptr %36, align 4, !tbaa !9
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds double, ptr %945, i64 %947
  %949 = load ptr, ptr %23, align 8, !tbaa !5
  %950 = load ptr, ptr %24, align 8, !tbaa !5
  %951 = load i32, ptr %38, align 4, !tbaa !9
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds double, ptr %950, i64 %952
  %954 = load ptr, ptr %25, align 8, !tbaa !5
  %955 = load ptr, ptr %26, align 8, !tbaa !5
  %956 = load i32, ptr %40, align 4, !tbaa !9
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds double, ptr %955, i64 %957
  %959 = load ptr, ptr %27, align 8, !tbaa !5
  %960 = load ptr, ptr %30, align 8, !tbaa !5
  %961 = getelementptr inbounds double, ptr %960, i64 1
  %962 = load ptr, ptr %31, align 8, !tbaa !5
  %963 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %937, ptr noundef %938, ptr noundef %939, ptr noundef %943, ptr noundef %944, ptr noundef %948, ptr noundef %949, ptr noundef %953, ptr noundef %954, ptr noundef %958, ptr noundef %959, ptr noundef %42, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %961, ptr noundef %962, ptr noundef %963)
  %964 = load ptr, ptr %32, align 8, !tbaa !5
  %965 = load i32, ptr %964, align 4, !tbaa !9
  %966 = icmp ne i32 %965, 0
  br i1 %966, label %967, label %970

967:                                              ; preds = %936
  %968 = load i32, ptr %42, align 4, !tbaa !9
  %969 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %968, ptr %969, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

970:                                              ; preds = %936
  %971 = load i32, ptr %42, align 4, !tbaa !9
  %972 = add nsw i32 %971, -1
  store i32 %972, ptr %42, align 4, !tbaa !9
  %973 = load ptr, ptr %17, align 8, !tbaa !5
  %974 = load ptr, ptr %18, align 8, !tbaa !5
  %975 = load ptr, ptr %19, align 8, !tbaa !5
  %976 = load ptr, ptr %20, align 8, !tbaa !5
  %977 = load i32, ptr %34, align 4, !tbaa !9
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds double, ptr %976, i64 %978
  %980 = load ptr, ptr %21, align 8, !tbaa !5
  %981 = load ptr, ptr %22, align 8, !tbaa !5
  %982 = load i32, ptr %36, align 4, !tbaa !9
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds double, ptr %981, i64 %983
  %985 = load ptr, ptr %23, align 8, !tbaa !5
  %986 = load ptr, ptr %24, align 8, !tbaa !5
  %987 = load i32, ptr %38, align 4, !tbaa !9
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds double, ptr %986, i64 %988
  %990 = load ptr, ptr %25, align 8, !tbaa !5
  %991 = load ptr, ptr %26, align 8, !tbaa !5
  %992 = load i32, ptr %40, align 4, !tbaa !9
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds double, ptr %991, i64 %993
  %995 = load ptr, ptr %27, align 8, !tbaa !5
  %996 = load ptr, ptr %30, align 8, !tbaa !5
  %997 = getelementptr inbounds double, ptr %996, i64 1
  %998 = load ptr, ptr %31, align 8, !tbaa !5
  %999 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtgex2_(ptr noundef %973, ptr noundef %974, ptr noundef %975, ptr noundef %979, ptr noundef %980, ptr noundef %984, ptr noundef %985, ptr noundef %989, ptr noundef %990, ptr noundef %994, ptr noundef %995, ptr noundef %42, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %997, ptr noundef %998, ptr noundef %999)
  %1000 = load ptr, ptr %32, align 8, !tbaa !5
  %1001 = load i32, ptr %1000, align 4, !tbaa !9
  %1002 = icmp ne i32 %1001, 0
  br i1 %1002, label %1003, label %1006

1003:                                             ; preds = %970
  %1004 = load i32, ptr %42, align 4, !tbaa !9
  %1005 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %1004, ptr %1005, align 4, !tbaa !9
  store i32 1, ptr %48, align 4
  br label %1025

1006:                                             ; preds = %970
  %1007 = load i32, ptr %42, align 4, !tbaa !9
  %1008 = add nsw i32 %1007, -1
  store i32 %1008, ptr %42, align 4, !tbaa !9
  br label %1009

1009:                                             ; preds = %1006, %933
  br label %1010

1010:                                             ; preds = %1009, %878
  br label %1011

1011:                                             ; preds = %1010, %785
  %1012 = load i32, ptr %42, align 4, !tbaa !9
  %1013 = load ptr, ptr %29, align 8, !tbaa !5
  %1014 = load i32, ptr %1013, align 4, !tbaa !9
  %1015 = icmp sgt i32 %1012, %1014
  br i1 %1015, label %1016, label %1017

1016:                                             ; preds = %1011
  br label %704

1017:                                             ; preds = %1011
  br label %1018

1018:                                             ; preds = %1017, %700
  %1019 = load i32, ptr %42, align 4, !tbaa !9
  %1020 = load ptr, ptr %29, align 8, !tbaa !5
  store i32 %1019, ptr %1020, align 4, !tbaa !9
  %1021 = load i32, ptr %43, align 4, !tbaa !9
  %1022 = sitofp i32 %1021 to double
  %1023 = load ptr, ptr %30, align 8, !tbaa !5
  %1024 = getelementptr inbounds double, ptr %1023, i64 1
  store double %1022, ptr %1024, align 8, !tbaa !11
  store i32 1, ptr %48, align 4
  br label %1025

1025:                                             ; preds = %1018, %1003, %967, %930, %875, %838, %762, %686, %650, %613, %559, %522, %444, %351, %254, %248, %240
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  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 void @dtgex2_(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

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

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

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

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


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

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dtgexc_(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 nocapture noundef %11, ptr nocapture noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15) local_unnamed_addr #0 {
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #4
  %21 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %21, -1
  %22 = sext i32 %narrow to i64
  %23 = getelementptr inbounds double, ptr %3, i64 %22
  store i32 0, ptr %15, align 4, !tbaa !5
  %24 = load i32, ptr %14, align 4, !tbaa !5
  %25 = icmp eq i32 %24, -1
  %26 = load i32, ptr %2, align 4, !tbaa !5
  %27 = icmp slt i32 %26, 0
  br i1 %27, label %.thread413, label %28

28:                                               ; preds = %16
  %29 = load i32, ptr %4, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %26, i32 1)
  %30 = icmp slt i32 %29, %spec.select
  br i1 %30, label %.thread413, label %31

31:                                               ; preds = %28
  %32 = load i32, ptr %6, align 4, !tbaa !5
  %33 = icmp slt i32 %32, %spec.select
  br i1 %33, label %.thread413, label %34

34:                                               ; preds = %31
  %35 = load i32, ptr %8, align 4, !tbaa !5
  %36 = icmp slt i32 %35, 1
  br i1 %36, label %.thread413, label %37

37:                                               ; preds = %34
  %38 = load i32, ptr %0, align 4, !tbaa !5
  %.not = icmp ne i32 %38, 0
  %39 = icmp ugt i32 %26, %35
  %or.cond427 = and i1 %39, %.not
  br i1 %or.cond427, label %.thread413, label %40

40:                                               ; preds = %37
  %41 = load i32, ptr %10, align 4, !tbaa !5
  %42 = icmp slt i32 %41, 1
  br i1 %42, label %.thread413, label %43

43:                                               ; preds = %40
  %44 = load i32, ptr %1, align 4, !tbaa !5
  %.not389 = icmp ne i32 %44, 0
  %45 = icmp ugt i32 %26, %41
  %or.cond428 = and i1 %45, %.not389
  br i1 %or.cond428, label %.thread413, label %46

46:                                               ; preds = %43
  %47 = load i32, ptr %11, align 4, !tbaa !5
  %48 = icmp slt i32 %47, 1
  %49 = icmp ugt i32 %47, %26
  %or.cond429 = or i1 %48, %49
  br i1 %or.cond429, label %.thread413, label %50

50:                                               ; preds = %46
  %51 = load i32, ptr %12, align 4, !tbaa !5
  %52 = icmp slt i32 %51, 1
  %53 = icmp sgt i32 %51, %26
  %or.cond408 = or i1 %52, %53
  br i1 %or.cond408, label %.thread413, label %54

54:                                               ; preds = %50
  %55 = shl i32 %26, 2
  %56 = add nsw i32 %55, 16
  %.inv = icmp ugt i32 %26, 1
  %.0367 = select i1 %.inv, i32 %56, i32 1
  %57 = sitofp i32 %.0367 to double
  store double %57, ptr %13, align 8, !tbaa !9
  %58 = icmp sge i32 %24, %.0367
  %or.cond = or i1 %58, %25
  br i1 %or.cond, label %.thread, label %.thread413

.thread413:                                       ; preds = %54, %50, %46, %40, %43, %34, %37, %31, %28, %16
  %.sink = phi i32 [ -3, %16 ], [ -5, %28 ], [ -7, %31 ], [ -9, %37 ], [ -9, %34 ], [ -11, %43 ], [ -11, %40 ], [ -12, %46 ], [ -13, %50 ], [ -15, %54 ]
  %.neg434 = phi i32 [ 3, %16 ], [ 5, %28 ], [ 7, %31 ], [ 9, %37 ], [ 9, %34 ], [ 11, %43 ], [ 11, %40 ], [ 12, %46 ], [ 13, %50 ], [ 15, %54 ]
  store i32 %.sink, ptr %15, align 4, !tbaa !5
  store i32 %.neg434, ptr %17, align 4, !tbaa !5
  %59 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %17, i32 noundef 6) #4
  br label %312

.thread:                                          ; preds = %54
  %60 = icmp ult i32 %26, 2
  %or.cond437 = or i1 %25, %60
  br i1 %or.cond437, label %312, label %61

61:                                               ; preds = %.thread
  %62 = icmp ugt i32 %47, 1
  br i1 %62, label %63, label %72

63:                                               ; preds = %61
  %64 = add nsw i32 %47, -1
  %65 = mul nsw i32 %64, %21
  %66 = add nsw i32 %65, %47
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds double, ptr %23, i64 %67
  %69 = load double, ptr %68, align 8, !tbaa !9
  %70 = fcmp une double %69, 0.000000e+00
  br i1 %70, label %71, label %72

71:                                               ; preds = %63
  store i32 %64, ptr %11, align 4, !tbaa !5
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  br label %72

72:                                               ; preds = %63, %71, %61
  %73 = phi i32 [ %26, %63 ], [ %.pre, %71 ], [ %26, %61 ]
  %74 = phi i32 [ %47, %63 ], [ %64, %71 ], [ 1, %61 ]
  store i32 1, ptr %20, align 4, !tbaa !5
  %75 = icmp slt i32 %74, %73
  br i1 %75, label %76, label %85

76:                                               ; preds = %72
  %77 = add nuw nsw i32 %74, 1
  %78 = mul nsw i32 %74, %21
  %79 = add nsw i32 %77, %78
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds double, ptr %23, i64 %80
  %82 = load double, ptr %81, align 8, !tbaa !9
  %83 = fcmp une double %82, 0.000000e+00
  br i1 %83, label %84, label %85

84:                                               ; preds = %76
  store i32 2, ptr %20, align 4, !tbaa !5
  br label %85

85:                                               ; preds = %76, %84, %72
  %86 = phi i1 [ false, %76 ], [ true, %84 ], [ false, %72 ]
  %87 = phi i1 [ true, %76 ], [ false, %84 ], [ true, %72 ]
  %88 = load i32, ptr %12, align 4, !tbaa !5
  %89 = icmp sgt i32 %88, 1
  br i1 %89, label %90, label %99

90:                                               ; preds = %85
  %91 = add nsw i32 %88, -1
  %92 = mul nsw i32 %91, %21
  %93 = add nsw i32 %92, %88
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds double, ptr %23, i64 %94
  %96 = load double, ptr %95, align 8, !tbaa !9
  %97 = fcmp une double %96, 0.000000e+00
  br i1 %97, label %98, label %99

98:                                               ; preds = %90
  store i32 %91, ptr %12, align 4, !tbaa !5
  %.pre432 = load i32, ptr %2, align 4, !tbaa !5
  br label %99

99:                                               ; preds = %90, %98, %85
  %100 = phi i32 [ %73, %90 ], [ %.pre432, %98 ], [ %73, %85 ]
  %101 = phi i32 [ %88, %90 ], [ %91, %98 ], [ %88, %85 ]
  %102 = icmp slt i32 %101, %100
  br i1 %102, label %103, label %112

103:                                              ; preds = %99
  %104 = add nsw i32 %101, 1
  %105 = mul nsw i32 %101, %21
  %106 = add nsw i32 %104, %105
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds double, ptr %23, i64 %107
  %109 = load double, ptr %108, align 8, !tbaa !9
  %110 = fcmp une double %109, 0.000000e+00
  br i1 %110, label %111, label %112

111:                                              ; preds = %103
  br label %112

112:                                              ; preds = %103, %111, %99
  %113 = phi i1 [ false, %111 ], [ true, %103 ], [ true, %99 ]
  %114 = phi i1 [ true, %111 ], [ false, %103 ], [ false, %99 ]
  %115 = load i32, ptr %11, align 4, !tbaa !5
  %116 = icmp eq i32 %115, %101
  br i1 %116, label %312, label %117

117:                                              ; preds = %112
  %118 = icmp slt i32 %115, %101
  br i1 %118, label %119, label %217

119:                                              ; preds = %117
  %or.cond3 = and i1 %113, %86
  br i1 %or.cond3, label %.sink.split, label %120

120:                                              ; preds = %119
  %or.cond5 = and i1 %114, %87
  br i1 %or.cond5, label %.sink.split, label %122

.sink.split:                                      ; preds = %120, %119
  %.sink439 = phi i32 [ -1, %119 ], [ 1, %120 ]
  %121 = add nsw i32 %101, %.sink439
  store i32 %121, ptr %12, align 4, !tbaa !5
  br label %122

122:                                              ; preds = %.sink.split, %120
  %123 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %123, ptr %18, align 4, !tbaa !5
  br label %124

124:                                              ; preds = %213, %122
  %125 = phi i32 [ %214, %213 ], [ %123, %122 ]
  %126 = load i32, ptr %20, align 4
  %127 = add i32 %126, -1
  %or.cond7 = icmp ult i32 %127, 2
  store i32 1, ptr %19, align 4, !tbaa !5
  %128 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %or.cond7, label %129, label %159

129:                                              ; preds = %124
  %130 = add nsw i32 %125, %126
  %.not403.not = icmp slt i32 %130, %128
  br i1 %.not403.not, label %131, label %140

131:                                              ; preds = %129
  %132 = add nsw i32 %130, 1
  %133 = mul nsw i32 %130, %21
  %134 = add nsw i32 %132, %133
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds double, ptr %23, i64 %135
  %137 = load double, ptr %136, align 8, !tbaa !9
  %138 = fcmp une double %137, 0.000000e+00
  br i1 %138, label %139, label %140

139:                                              ; preds = %131
  store i32 2, ptr %19, align 4, !tbaa !5
  br label %140

140:                                              ; preds = %131, %139, %129
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %18, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %141 = load i32, ptr %15, align 4, !tbaa !5
  %.not404 = icmp eq i32 %141, 0
  br i1 %.not404, label %144, label %142

142:                                              ; preds = %140
  %143 = load i32, ptr %18, align 4, !tbaa !5
  store i32 %143, ptr %12, align 4, !tbaa !5
  br label %312

144:                                              ; preds = %140
  %145 = load i32, ptr %19, align 4, !tbaa !5
  %146 = load i32, ptr %18, align 4, !tbaa !5
  %147 = add nsw i32 %146, %145
  store i32 %147, ptr %18, align 4, !tbaa !5
  %148 = load i32, ptr %20, align 4, !tbaa !5
  %149 = icmp eq i32 %148, 2
  br i1 %149, label %150, label %213

150:                                              ; preds = %144
  %151 = add nsw i32 %147, 1
  %152 = mul nsw i32 %147, %21
  %153 = add nsw i32 %151, %152
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds double, ptr %23, i64 %154
  %156 = load double, ptr %155, align 8, !tbaa !9
  %157 = fcmp oeq double %156, 0.000000e+00
  br i1 %157, label %158, label %213

158:                                              ; preds = %150
  store i32 3, ptr %20, align 4, !tbaa !5
  br label %213

159:                                              ; preds = %124
  %160 = add nsw i32 %125, 3
  %.not397 = icmp sgt i32 %160, %128
  br i1 %.not397, label %170, label %161

161:                                              ; preds = %159
  %162 = add nsw i32 %125, 2
  %163 = mul nsw i32 %162, %21
  %164 = add nsw i32 %163, %160
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds double, ptr %23, i64 %165
  %167 = load double, ptr %166, align 8, !tbaa !9
  %168 = fcmp une double %167, 0.000000e+00
  br i1 %168, label %169, label %170

169:                                              ; preds = %161
  store i32 2, ptr %19, align 4, !tbaa !5
  br label %170

170:                                              ; preds = %161, %169, %159
  %171 = add nsw i32 %125, 1
  store i32 %171, ptr %17, align 4, !tbaa !5
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %17, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %172 = load i32, ptr %15, align 4, !tbaa !5
  %.not398 = icmp eq i32 %172, 0
  br i1 %.not398, label %175, label %173

173:                                              ; preds = %170
  %174 = load i32, ptr %18, align 4, !tbaa !5
  store i32 %174, ptr %12, align 4, !tbaa !5
  br label %312

175:                                              ; preds = %170
  %176 = load i32, ptr %19, align 4, !tbaa !5
  %177 = icmp eq i32 %176, 1
  br i1 %177, label %178, label %184

178:                                              ; preds = %175
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %179 = load i32, ptr %15, align 4, !tbaa !5
  %.not402 = icmp eq i32 %179, 0
  %180 = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not402, label %182, label %181

181:                                              ; preds = %178
  store i32 %180, ptr %12, align 4, !tbaa !5
  br label %312

182:                                              ; preds = %178
  %183 = add nsw i32 %180, 1
  store i32 %183, ptr %18, align 4, !tbaa !5
  br label %213

184:                                              ; preds = %175
  %185 = load i32, ptr %18, align 4, !tbaa !5
  %186 = add nsw i32 %185, 2
  %187 = add nsw i32 %185, 1
  %188 = mul nsw i32 %187, %21
  %189 = add nsw i32 %186, %188
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds double, ptr %23, i64 %190
  %192 = load double, ptr %191, align 8, !tbaa !9
  %193 = fcmp oeq double %192, 0.000000e+00
  br i1 %193, label %.thread420, label %194

.thread420:                                       ; preds = %184
  store i32 1, ptr %19, align 4, !tbaa !5
  br label %202

194:                                              ; preds = %184
  %195 = icmp eq i32 %176, 2
  br i1 %195, label %196, label %202

196:                                              ; preds = %194
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %197 = load i32, ptr %15, align 4, !tbaa !5
  %.not401 = icmp eq i32 %197, 0
  %198 = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not401, label %200, label %199

199:                                              ; preds = %196
  store i32 %198, ptr %12, align 4, !tbaa !5
  br label %312

200:                                              ; preds = %196
  %201 = add nsw i32 %198, 2
  store i32 %201, ptr %18, align 4, !tbaa !5
  br label %213

202:                                              ; preds = %.thread420, %194
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %203 = load i32, ptr %15, align 4, !tbaa !5
  %.not399 = icmp eq i32 %203, 0
  %204 = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not399, label %206, label %205

205:                                              ; preds = %202
  store i32 %204, ptr %12, align 4, !tbaa !5
  br label %312

206:                                              ; preds = %202
  %207 = add nsw i32 %204, 1
  store i32 %207, ptr %18, align 4, !tbaa !5
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %208 = load i32, ptr %15, align 4, !tbaa !5
  %.not400 = icmp eq i32 %208, 0
  %209 = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not400, label %211, label %210

210:                                              ; preds = %206
  store i32 %209, ptr %12, align 4, !tbaa !5
  br label %312

211:                                              ; preds = %206
  %212 = add nsw i32 %209, 1
  store i32 %212, ptr %18, align 4, !tbaa !5
  br label %213

213:                                              ; preds = %182, %211, %200, %144, %158, %150
  %214 = phi i32 [ %183, %182 ], [ %212, %211 ], [ %201, %200 ], [ %147, %144 ], [ %147, %158 ], [ %147, %150 ]
  %215 = load i32, ptr %12, align 4, !tbaa !5
  %216 = icmp slt i32 %214, %215
  br i1 %216, label %124, label %.loopexit

217:                                              ; preds = %117
  store i32 %115, ptr %18, align 4, !tbaa !5
  br label %218

218:                                              ; preds = %307, %217
  %219 = phi i32 [ %308, %307 ], [ %115, %217 ]
  %220 = load i32, ptr %20, align 4
  %221 = add i32 %220, -1
  %or.cond9 = icmp ult i32 %221, 2
  store i32 1, ptr %19, align 4, !tbaa !5
  %222 = icmp sgt i32 %219, 2
  br i1 %or.cond9, label %223, label %254

223:                                              ; preds = %218
  br i1 %222, label %224, label %234

224:                                              ; preds = %223
  %225 = add nsw i32 %219, -1
  %226 = add nsw i32 %219, -2
  %227 = mul nsw i32 %226, %21
  %228 = add nsw i32 %225, %227
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds double, ptr %23, i64 %229
  %231 = load double, ptr %230, align 8, !tbaa !9
  %232 = fcmp une double %231, 0.000000e+00
  br i1 %232, label %233, label %234

233:                                              ; preds = %224
  store i32 2, ptr %19, align 4, !tbaa !5
  br label %234

234:                                              ; preds = %224, %233, %223
  %.neg433 = phi i32 [ -1, %224 ], [ -2, %233 ], [ -1, %223 ]
  %235 = add i32 %.neg433, %219
  store i32 %235, ptr %17, align 4, !tbaa !5
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %236 = load i32, ptr %15, align 4, !tbaa !5
  %.not396 = icmp eq i32 %236, 0
  br i1 %.not396, label %239, label %237

237:                                              ; preds = %234
  %238 = load i32, ptr %18, align 4, !tbaa !5
  store i32 %238, ptr %12, align 4, !tbaa !5
  br label %312

239:                                              ; preds = %234
  %240 = load i32, ptr %19, align 4, !tbaa !5
  %241 = load i32, ptr %18, align 4, !tbaa !5
  %242 = sub nsw i32 %241, %240
  store i32 %242, ptr %18, align 4, !tbaa !5
  %243 = load i32, ptr %20, align 4, !tbaa !5
  %244 = icmp eq i32 %243, 2
  br i1 %244, label %245, label %307

245:                                              ; preds = %239
  %246 = add nsw i32 %242, 1
  %247 = mul nsw i32 %242, %21
  %248 = add nsw i32 %246, %247
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds double, ptr %23, i64 %249
  %251 = load double, ptr %250, align 8, !tbaa !9
  %252 = fcmp oeq double %251, 0.000000e+00
  br i1 %252, label %253, label %307

253:                                              ; preds = %245
  store i32 3, ptr %20, align 4, !tbaa !5
  br label %307

254:                                              ; preds = %218
  br i1 %222, label %255, label %265

255:                                              ; preds = %254
  %256 = add nsw i32 %219, -1
  %257 = add nsw i32 %219, -2
  %258 = mul nsw i32 %257, %21
  %259 = add nsw i32 %256, %258
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds double, ptr %23, i64 %260
  %262 = load double, ptr %261, align 8, !tbaa !9
  %263 = fcmp une double %262, 0.000000e+00
  br i1 %263, label %264, label %265

264:                                              ; preds = %255
  store i32 2, ptr %19, align 4, !tbaa !5
  br label %265

265:                                              ; preds = %255, %264, %254
  %.neg = phi i32 [ -1, %255 ], [ -2, %264 ], [ -1, %254 ]
  %266 = add i32 %.neg, %219
  store i32 %266, ptr %17, align 4, !tbaa !5
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %267 = load i32, ptr %15, align 4, !tbaa !5
  %.not391 = icmp eq i32 %267, 0
  br i1 %.not391, label %270, label %268

268:                                              ; preds = %265
  %269 = load i32, ptr %18, align 4, !tbaa !5
  store i32 %269, ptr %12, align 4, !tbaa !5
  br label %312

270:                                              ; preds = %265
  %271 = load i32, ptr %19, align 4, !tbaa !5
  %272 = icmp eq i32 %271, 1
  br i1 %272, label %273, label %279

273:                                              ; preds = %270
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %274 = load i32, ptr %15, align 4, !tbaa !5
  %.not395 = icmp eq i32 %274, 0
  %275 = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not395, label %277, label %276

276:                                              ; preds = %273
  store i32 %275, ptr %12, align 4, !tbaa !5
  br label %312

277:                                              ; preds = %273
  %278 = add nsw i32 %275, -1
  store i32 %278, ptr %18, align 4, !tbaa !5
  br label %307

279:                                              ; preds = %270
  %280 = load i32, ptr %18, align 4, !tbaa !5
  %281 = add nsw i32 %280, -1
  %282 = mul nsw i32 %281, %21
  %283 = add nsw i32 %282, %280
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %23, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !9
  %287 = fcmp oeq double %286, 0.000000e+00
  br i1 %287, label %.thread423, label %288

.thread423:                                       ; preds = %279
  store i32 1, ptr %19, align 4, !tbaa !5
  br label %296

288:                                              ; preds = %279
  %289 = icmp eq i32 %271, 2
  br i1 %289, label %290, label %296

290:                                              ; preds = %288
  store i32 %281, ptr %17, align 4, !tbaa !5
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %17, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %291 = load i32, ptr %15, align 4, !tbaa !5
  %.not394 = icmp eq i32 %291, 0
  %292 = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not394, label %294, label %293

293:                                              ; preds = %290
  store i32 %292, ptr %12, align 4, !tbaa !5
  br label %312

294:                                              ; preds = %290
  %295 = add nsw i32 %292, -2
  store i32 %295, ptr %18, align 4, !tbaa !5
  br label %307

296:                                              ; preds = %.thread423, %288
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %297 = load i32, ptr %15, align 4, !tbaa !5
  %.not392 = icmp eq i32 %297, 0
  %298 = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not392, label %300, label %299

299:                                              ; preds = %296
  store i32 %298, ptr %12, align 4, !tbaa !5
  br label %312

300:                                              ; preds = %296
  %301 = add nsw i32 %298, -1
  store i32 %301, ptr %18, align 4, !tbaa !5
  call void @dtgex2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %302 = load i32, ptr %15, align 4, !tbaa !5
  %.not393 = icmp eq i32 %302, 0
  %303 = load i32, ptr %18, align 4, !tbaa !5
  br i1 %.not393, label %305, label %304

304:                                              ; preds = %300
  store i32 %303, ptr %12, align 4, !tbaa !5
  br label %312

305:                                              ; preds = %300
  %306 = add nsw i32 %303, -1
  store i32 %306, ptr %18, align 4, !tbaa !5
  br label %307

307:                                              ; preds = %277, %305, %294, %239, %253, %245
  %308 = phi i32 [ %278, %277 ], [ %306, %305 ], [ %295, %294 ], [ %242, %239 ], [ %242, %253 ], [ %242, %245 ]
  %309 = load i32, ptr %12, align 4, !tbaa !5
  %310 = icmp sgt i32 %308, %309
  br i1 %310, label %218, label %.loopexit

.loopexit:                                        ; preds = %307, %213
  %311 = phi i32 [ %214, %213 ], [ %308, %307 ]
  store i32 %311, ptr %12, align 4, !tbaa !5
  store double %57, ptr %13, align 8, !tbaa !9
  br label %312

312:                                              ; preds = %112, %.thread, %.loopexit, %304, %299, %293, %276, %268, %237, %210, %205, %199, %181, %173, %142, %.thread413
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  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 void @dtgex2_(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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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}


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