; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8
@c__2 = external hidden global i64, align 8

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

93:                                               ; preds = %16
  %94 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -3, ptr %94, align 8, !tbaa !9
  br label %201

95:                                               ; preds = %16
  %96 = load ptr, ptr %22, align 8, !tbaa !5
  %97 = load i64, ptr %96, align 8, !tbaa !9
  %98 = load ptr, ptr %20, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %100 = icmp sge i64 1, %99
  br i1 %100, label %101, label %102

101:                                              ; preds = %95
  br label %105

102:                                              ; preds = %95
  %103 = load ptr, ptr %20, align 8, !tbaa !5
  %104 = load i64, ptr %103, align 8, !tbaa !9
  br label %105

105:                                              ; preds = %102, %101
  %106 = phi i64 [ 1, %101 ], [ %104, %102 ]
  %107 = icmp slt i64 %97, %106
  br i1 %107, label %108, label %110

108:                                              ; preds = %105
  %109 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -5, ptr %109, align 8, !tbaa !9
  br label %200

110:                                              ; preds = %105
  %111 = load ptr, ptr %24, align 8, !tbaa !5
  %112 = load i64, ptr %111, align 8, !tbaa !9
  %113 = load ptr, ptr %20, align 8, !tbaa !5
  %114 = load i64, ptr %113, align 8, !tbaa !9
  %115 = icmp sge i64 1, %114
  br i1 %115, label %116, label %117

116:                                              ; preds = %110
  br label %120

117:                                              ; preds = %110
  %118 = load ptr, ptr %20, align 8, !tbaa !5
  %119 = load i64, ptr %118, align 8, !tbaa !9
  br label %120

120:                                              ; preds = %117, %116
  %121 = phi i64 [ 1, %116 ], [ %119, %117 ]
  %122 = icmp slt i64 %112, %121
  br i1 %122, label %123, label %125

123:                                              ; preds = %120
  %124 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -7, ptr %124, align 8, !tbaa !9
  br label %199

125:                                              ; preds = %120
  %126 = load ptr, ptr %26, align 8, !tbaa !5
  %127 = load i64, ptr %126, align 8, !tbaa !9
  %128 = icmp slt i64 %127, 1
  br i1 %128, label %146, label %129

129:                                              ; preds = %125
  %130 = load ptr, ptr %18, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = icmp ne i64 %131, 0
  br i1 %132, label %133, label %148

133:                                              ; preds = %129
  %134 = load ptr, ptr %26, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = load ptr, ptr %20, align 8, !tbaa !5
  %137 = load i64, ptr %136, align 8, !tbaa !9
  %138 = icmp sge i64 1, %137
  br i1 %138, label %139, label %140

139:                                              ; preds = %133
  br label %143

140:                                              ; preds = %133
  %141 = load ptr, ptr %20, align 8, !tbaa !5
  %142 = load i64, ptr %141, align 8, !tbaa !9
  br label %143

143:                                              ; preds = %140, %139
  %144 = phi i64 [ 1, %139 ], [ %142, %140 ]
  %145 = icmp slt i64 %135, %144
  br i1 %145, label %146, label %148

146:                                              ; preds = %143, %125
  %147 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -9, ptr %147, align 8, !tbaa !9
  br label %198

148:                                              ; preds = %143, %129
  %149 = load ptr, ptr %28, align 8, !tbaa !5
  %150 = load i64, ptr %149, align 8, !tbaa !9
  %151 = icmp slt i64 %150, 1
  br i1 %151, label %169, label %152

152:                                              ; preds = %148
  %153 = load ptr, ptr %19, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = icmp ne i64 %154, 0
  br i1 %155, label %156, label %171

156:                                              ; preds = %152
  %157 = load ptr, ptr %28, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = load ptr, ptr %20, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  %161 = icmp sge i64 1, %160
  br i1 %161, label %162, label %163

162:                                              ; preds = %156
  br label %166

163:                                              ; preds = %156
  %164 = load ptr, ptr %20, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %163, %162
  %167 = phi i64 [ 1, %162 ], [ %165, %163 ]
  %168 = icmp slt i64 %158, %167
  br i1 %168, label %169, label %171

169:                                              ; preds = %166, %148
  %170 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -11, ptr %170, align 8, !tbaa !9
  br label %197

171:                                              ; preds = %166, %152
  %172 = load ptr, ptr %29, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp slt i64 %173, 1
  br i1 %174, label %181, label %175

175:                                              ; preds = %171
  %176 = load ptr, ptr %29, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = load ptr, ptr %20, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = icmp sgt i64 %177, %179
  br i1 %180, label %181, label %183

181:                                              ; preds = %175, %171
  %182 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -12, ptr %182, align 8, !tbaa !9
  br label %196

183:                                              ; preds = %175
  %184 = load ptr, ptr %30, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp slt i64 %185, 1
  br i1 %186, label %193, label %187

187:                                              ; preds = %183
  %188 = load ptr, ptr %30, align 8, !tbaa !5
  %189 = load i64, ptr %188, align 8, !tbaa !9
  %190 = load ptr, ptr %20, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = icmp sgt i64 %189, %191
  br i1 %192, label %193, label %195

193:                                              ; preds = %187, %183
  %194 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -13, ptr %194, align 8, !tbaa !9
  br label %195

195:                                              ; preds = %193, %187
  br label %196

196:                                              ; preds = %195, %181
  br label %197

197:                                              ; preds = %196, %169
  br label %198

198:                                              ; preds = %197, %146
  br label %199

199:                                              ; preds = %198, %123
  br label %200

200:                                              ; preds = %199, %108
  br label %201

201:                                              ; preds = %200, %93
  %202 = load ptr, ptr %33, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = icmp eq i64 %203, 0
  br i1 %204, label %205, label %230

205:                                              ; preds = %201
  %206 = load ptr, ptr %20, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = icmp sle i64 %207, 1
  br i1 %208, label %209, label %210

209:                                              ; preds = %205
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %215

210:                                              ; preds = %205
  %211 = load ptr, ptr %20, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = shl i64 %212, 2
  %214 = add nsw i64 %213, 16
  store i64 %214, ptr %46, align 8, !tbaa !9
  br label %215

215:                                              ; preds = %210, %209
  %216 = load i64, ptr %46, align 8, !tbaa !9
  %217 = sitofp i64 %216 to double
  %218 = load ptr, ptr %31, align 8, !tbaa !5
  %219 = getelementptr inbounds double, ptr %218, i64 1
  store double %217, ptr %219, align 8, !tbaa !11
  %220 = load ptr, ptr %32, align 8, !tbaa !5
  %221 = load i64, ptr %220, align 8, !tbaa !9
  %222 = load i64, ptr %46, align 8, !tbaa !9
  %223 = icmp slt i64 %221, %222
  br i1 %223, label %224, label %229

224:                                              ; preds = %215
  %225 = load i64, ptr %48, align 8, !tbaa !9
  %226 = icmp ne i64 %225, 0
  br i1 %226, label %229, label %227

227:                                              ; preds = %224
  %228 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -15, ptr %228, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %227, %224, %215
  br label %230

230:                                              ; preds = %229, %201
  %231 = load ptr, ptr %33, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = icmp ne i64 %232, 0
  br i1 %233, label %234, label %239

234:                                              ; preds = %230
  %235 = load ptr, ptr %33, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  %237 = sub nsw i64 0, %236
  store i64 %237, ptr %42, align 8, !tbaa !9
  %238 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %42)
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

239:                                              ; preds = %230
  %240 = load i64, ptr %48, align 8, !tbaa !9
  %241 = icmp ne i64 %240, 0
  br i1 %241, label %242, label %243

242:                                              ; preds = %239
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

243:                                              ; preds = %239
  br label %244

244:                                              ; preds = %243
  %245 = load ptr, ptr %20, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = icmp sle i64 %246, 1
  br i1 %247, label %248, label %249

248:                                              ; preds = %244
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

249:                                              ; preds = %244
  %250 = load ptr, ptr %29, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = icmp sgt i64 %251, 1
  br i1 %252, label %253, label %271

253:                                              ; preds = %249
  %254 = load ptr, ptr %21, align 8, !tbaa !5
  %255 = load ptr, ptr %29, align 8, !tbaa !5
  %256 = load i64, ptr %255, align 8, !tbaa !9
  %257 = load ptr, ptr %29, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = sub nsw i64 %258, 1
  %260 = load i64, ptr %34, align 8, !tbaa !9
  %261 = mul nsw i64 %259, %260
  %262 = add nsw i64 %256, %261
  %263 = getelementptr inbounds double, ptr %254, i64 %262
  %264 = load double, ptr %263, align 8, !tbaa !11
  %265 = fcmp une double %264, 0.000000e+00
  br i1 %265, label %266, label %270

266:                                              ; preds = %253
  %267 = load ptr, ptr %29, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = add nsw i64 %268, -1
  store i64 %269, ptr %267, align 8, !tbaa !9
  br label %270

270:                                              ; preds = %266, %253
  br label %271

271:                                              ; preds = %270, %249
  store i64 1, ptr %43, align 8, !tbaa !9
  %272 = load ptr, ptr %29, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  %274 = load ptr, ptr %20, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = icmp slt i64 %273, %275
  br i1 %276, label %277, label %292

277:                                              ; preds = %271
  %278 = load ptr, ptr %21, align 8, !tbaa !5
  %279 = load ptr, ptr %29, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = add nsw i64 %280, 1
  %282 = load ptr, ptr %29, align 8, !tbaa !5
  %283 = load i64, ptr %282, align 8, !tbaa !9
  %284 = load i64, ptr %34, align 8, !tbaa !9
  %285 = mul nsw i64 %283, %284
  %286 = add nsw i64 %281, %285
  %287 = getelementptr inbounds double, ptr %278, i64 %286
  %288 = load double, ptr %287, align 8, !tbaa !11
  %289 = fcmp une double %288, 0.000000e+00
  br i1 %289, label %290, label %291

290:                                              ; preds = %277
  store i64 2, ptr %43, align 8, !tbaa !9
  br label %291

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

292:                                              ; preds = %291, %271
  %293 = load ptr, ptr %30, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  %295 = icmp sgt i64 %294, 1
  br i1 %295, label %296, label %314

296:                                              ; preds = %292
  %297 = load ptr, ptr %21, align 8, !tbaa !5
  %298 = load ptr, ptr %30, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = load ptr, ptr %30, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = sub nsw i64 %301, 1
  %303 = load i64, ptr %34, align 8, !tbaa !9
  %304 = mul nsw i64 %302, %303
  %305 = add nsw i64 %299, %304
  %306 = getelementptr inbounds double, ptr %297, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !11
  %308 = fcmp une double %307, 0.000000e+00
  br i1 %308, label %309, label %313

309:                                              ; preds = %296
  %310 = load ptr, ptr %30, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = add nsw i64 %311, -1
  store i64 %312, ptr %310, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %309, %296
  br label %314

314:                                              ; preds = %313, %292
  store i64 1, ptr %44, align 8, !tbaa !9
  %315 = load ptr, ptr %30, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = load ptr, ptr %20, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp slt i64 %316, %318
  br i1 %319, label %320, label %335

320:                                              ; preds = %314
  %321 = load ptr, ptr %21, align 8, !tbaa !5
  %322 = load ptr, ptr %30, align 8, !tbaa !5
  %323 = load i64, ptr %322, align 8, !tbaa !9
  %324 = add nsw i64 %323, 1
  %325 = load ptr, ptr %30, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = load i64, ptr %34, align 8, !tbaa !9
  %328 = mul nsw i64 %326, %327
  %329 = add nsw i64 %324, %328
  %330 = getelementptr inbounds double, ptr %321, i64 %329
  %331 = load double, ptr %330, align 8, !tbaa !11
  %332 = fcmp une double %331, 0.000000e+00
  br i1 %332, label %333, label %334

333:                                              ; preds = %320
  store i64 2, ptr %44, align 8, !tbaa !9
  br label %334

334:                                              ; preds = %333, %320
  br label %335

335:                                              ; preds = %334, %314
  %336 = load ptr, ptr %29, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = load ptr, ptr %30, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  %340 = icmp eq i64 %337, %339
  br i1 %340, label %341, label %342

341:                                              ; preds = %335
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

342:                                              ; preds = %335
  %343 = load ptr, ptr %29, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = load ptr, ptr %30, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = icmp slt i64 %344, %346
  br i1 %347, label %348, label %669

348:                                              ; preds = %342
  %349 = load i64, ptr %43, align 8, !tbaa !9
  %350 = icmp eq i64 %349, 2
  br i1 %350, label %351, label %358

351:                                              ; preds = %348
  %352 = load i64, ptr %44, align 8, !tbaa !9
  %353 = icmp eq i64 %352, 1
  br i1 %353, label %354, label %358

354:                                              ; preds = %351
  %355 = load ptr, ptr %30, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  %357 = add nsw i64 %356, -1
  store i64 %357, ptr %355, align 8, !tbaa !9
  br label %358

358:                                              ; preds = %354, %351, %348
  %359 = load i64, ptr %43, align 8, !tbaa !9
  %360 = icmp eq i64 %359, 1
  br i1 %360, label %361, label %368

361:                                              ; preds = %358
  %362 = load i64, ptr %44, align 8, !tbaa !9
  %363 = icmp eq i64 %362, 2
  br i1 %363, label %364, label %368

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

368:                                              ; preds = %364, %361, %358
  %369 = load ptr, ptr %29, align 8, !tbaa !5
  %370 = load i64, ptr %369, align 8, !tbaa !9
  store i64 %370, ptr %45, align 8, !tbaa !9
  br label %371

371:                                              ; preds = %667, %368
  %372 = load i64, ptr %43, align 8, !tbaa !9
  %373 = icmp eq i64 %372, 1
  br i1 %373, label %377, label %374

374:                                              ; preds = %371
  %375 = load i64, ptr %43, align 8, !tbaa !9
  %376 = icmp eq i64 %375, 2
  br i1 %376, label %377, label %453

377:                                              ; preds = %374, %371
  store i64 1, ptr %47, align 8, !tbaa !9
  %378 = load i64, ptr %45, align 8, !tbaa !9
  %379 = load i64, ptr %43, align 8, !tbaa !9
  %380 = add nsw i64 %378, %379
  %381 = add nsw i64 %380, 1
  %382 = load ptr, ptr %20, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = icmp sle i64 %381, %383
  br i1 %384, label %385, label %402

385:                                              ; preds = %377
  %386 = load ptr, ptr %21, align 8, !tbaa !5
  %387 = load i64, ptr %45, align 8, !tbaa !9
  %388 = load i64, ptr %43, align 8, !tbaa !9
  %389 = add nsw i64 %387, %388
  %390 = add nsw i64 %389, 1
  %391 = load i64, ptr %45, align 8, !tbaa !9
  %392 = load i64, ptr %43, align 8, !tbaa !9
  %393 = add nsw i64 %391, %392
  %394 = load i64, ptr %34, align 8, !tbaa !9
  %395 = mul nsw i64 %393, %394
  %396 = add nsw i64 %390, %395
  %397 = getelementptr inbounds double, ptr %386, i64 %396
  %398 = load double, ptr %397, align 8, !tbaa !11
  %399 = fcmp une double %398, 0.000000e+00
  br i1 %399, label %400, label %401

400:                                              ; preds = %385
  store i64 2, ptr %47, align 8, !tbaa !9
  br label %401

401:                                              ; preds = %400, %385
  br label %402

402:                                              ; preds = %401, %377
  %403 = load ptr, ptr %18, align 8, !tbaa !5
  %404 = load ptr, ptr %19, align 8, !tbaa !5
  %405 = load ptr, ptr %20, align 8, !tbaa !5
  %406 = load ptr, ptr %21, align 8, !tbaa !5
  %407 = load i64, ptr %35, align 8, !tbaa !9
  %408 = getelementptr inbounds double, ptr %406, i64 %407
  %409 = load ptr, ptr %22, align 8, !tbaa !5
  %410 = load ptr, ptr %23, align 8, !tbaa !5
  %411 = load i64, ptr %37, align 8, !tbaa !9
  %412 = getelementptr inbounds double, ptr %410, i64 %411
  %413 = load ptr, ptr %24, align 8, !tbaa !5
  %414 = load ptr, ptr %25, align 8, !tbaa !5
  %415 = load i64, ptr %39, align 8, !tbaa !9
  %416 = getelementptr inbounds double, ptr %414, i64 %415
  %417 = load ptr, ptr %26, align 8, !tbaa !5
  %418 = load ptr, ptr %27, align 8, !tbaa !5
  %419 = load i64, ptr %41, align 8, !tbaa !9
  %420 = getelementptr inbounds double, ptr %418, i64 %419
  %421 = load ptr, ptr %28, align 8, !tbaa !5
  %422 = load ptr, ptr %31, align 8, !tbaa !5
  %423 = getelementptr inbounds double, ptr %422, i64 1
  %424 = load ptr, ptr %32, align 8, !tbaa !5
  %425 = load ptr, ptr %33, align 8, !tbaa !5
  %426 = call i32 @dtgex2_(ptr noundef %403, ptr noundef %404, ptr noundef %405, ptr noundef %408, ptr noundef %409, ptr noundef %412, ptr noundef %413, ptr noundef %416, ptr noundef %417, ptr noundef %420, ptr noundef %421, ptr noundef %45, ptr noundef %43, ptr noundef %47, ptr noundef %423, ptr noundef %424, ptr noundef %425)
  %427 = load ptr, ptr %33, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = icmp ne i64 %428, 0
  br i1 %429, label %430, label %433

430:                                              ; preds = %402
  %431 = load i64, ptr %45, align 8, !tbaa !9
  %432 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %431, ptr %432, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

433:                                              ; preds = %402
  %434 = load i64, ptr %47, align 8, !tbaa !9
  %435 = load i64, ptr %45, align 8, !tbaa !9
  %436 = add nsw i64 %435, %434
  store i64 %436, ptr %45, align 8, !tbaa !9
  %437 = load i64, ptr %43, align 8, !tbaa !9
  %438 = icmp eq i64 %437, 2
  br i1 %438, label %439, label %452

439:                                              ; preds = %433
  %440 = load ptr, ptr %21, align 8, !tbaa !5
  %441 = load i64, ptr %45, align 8, !tbaa !9
  %442 = add nsw i64 %441, 1
  %443 = load i64, ptr %45, align 8, !tbaa !9
  %444 = load i64, ptr %34, align 8, !tbaa !9
  %445 = mul nsw i64 %443, %444
  %446 = add nsw i64 %442, %445
  %447 = getelementptr inbounds double, ptr %440, i64 %446
  %448 = load double, ptr %447, align 8, !tbaa !11
  %449 = fcmp oeq double %448, 0.000000e+00
  br i1 %449, label %450, label %451

450:                                              ; preds = %439
  store i64 3, ptr %43, align 8, !tbaa !9
  br label %451

451:                                              ; preds = %450, %439
  br label %452

452:                                              ; preds = %451, %433
  br label %662

453:                                              ; preds = %374
  store i64 1, ptr %47, align 8, !tbaa !9
  %454 = load i64, ptr %45, align 8, !tbaa !9
  %455 = add nsw i64 %454, 3
  %456 = load ptr, ptr %20, align 8, !tbaa !5
  %457 = load i64, ptr %456, align 8, !tbaa !9
  %458 = icmp sle i64 %455, %457
  br i1 %458, label %459, label %473

459:                                              ; preds = %453
  %460 = load ptr, ptr %21, align 8, !tbaa !5
  %461 = load i64, ptr %45, align 8, !tbaa !9
  %462 = add nsw i64 %461, 3
  %463 = load i64, ptr %45, align 8, !tbaa !9
  %464 = add nsw i64 %463, 2
  %465 = load i64, ptr %34, align 8, !tbaa !9
  %466 = mul nsw i64 %464, %465
  %467 = add nsw i64 %462, %466
  %468 = getelementptr inbounds double, ptr %460, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !11
  %470 = fcmp une double %469, 0.000000e+00
  br i1 %470, label %471, label %472

471:                                              ; preds = %459
  store i64 2, ptr %47, align 8, !tbaa !9
  br label %472

472:                                              ; preds = %471, %459
  br label %473

473:                                              ; preds = %472, %453
  %474 = load i64, ptr %45, align 8, !tbaa !9
  %475 = add nsw i64 %474, 1
  store i64 %475, ptr %42, align 8, !tbaa !9
  %476 = load ptr, ptr %18, align 8, !tbaa !5
  %477 = load ptr, ptr %19, align 8, !tbaa !5
  %478 = load ptr, ptr %20, align 8, !tbaa !5
  %479 = load ptr, ptr %21, align 8, !tbaa !5
  %480 = load i64, ptr %35, align 8, !tbaa !9
  %481 = getelementptr inbounds double, ptr %479, i64 %480
  %482 = load ptr, ptr %22, align 8, !tbaa !5
  %483 = load ptr, ptr %23, align 8, !tbaa !5
  %484 = load i64, ptr %37, align 8, !tbaa !9
  %485 = getelementptr inbounds double, ptr %483, i64 %484
  %486 = load ptr, ptr %24, align 8, !tbaa !5
  %487 = load ptr, ptr %25, align 8, !tbaa !5
  %488 = load i64, ptr %39, align 8, !tbaa !9
  %489 = getelementptr inbounds double, ptr %487, i64 %488
  %490 = load ptr, ptr %26, align 8, !tbaa !5
  %491 = load ptr, ptr %27, align 8, !tbaa !5
  %492 = load i64, ptr %41, align 8, !tbaa !9
  %493 = getelementptr inbounds double, ptr %491, i64 %492
  %494 = load ptr, ptr %28, align 8, !tbaa !5
  %495 = load ptr, ptr %31, align 8, !tbaa !5
  %496 = getelementptr inbounds double, ptr %495, i64 1
  %497 = load ptr, ptr %32, align 8, !tbaa !5
  %498 = load ptr, ptr %33, align 8, !tbaa !5
  %499 = call i32 @dtgex2_(ptr noundef %476, ptr noundef %477, ptr noundef %478, ptr noundef %481, ptr noundef %482, ptr noundef %485, ptr noundef %486, ptr noundef %489, ptr noundef %490, ptr noundef %493, ptr noundef %494, ptr noundef %42, ptr noundef @c__1, ptr noundef %47, ptr noundef %496, ptr noundef %497, ptr noundef %498)
  %500 = load ptr, ptr %33, align 8, !tbaa !5
  %501 = load i64, ptr %500, align 8, !tbaa !9
  %502 = icmp ne i64 %501, 0
  br i1 %502, label %503, label %506

503:                                              ; preds = %473
  %504 = load i64, ptr %45, align 8, !tbaa !9
  %505 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %504, ptr %505, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

506:                                              ; preds = %473
  %507 = load i64, ptr %47, align 8, !tbaa !9
  %508 = icmp eq i64 %507, 1
  br i1 %508, label %509, label %543

509:                                              ; preds = %506
  %510 = load ptr, ptr %18, align 8, !tbaa !5
  %511 = load ptr, ptr %19, align 8, !tbaa !5
  %512 = load ptr, ptr %20, align 8, !tbaa !5
  %513 = load ptr, ptr %21, align 8, !tbaa !5
  %514 = load i64, ptr %35, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = load ptr, ptr %22, align 8, !tbaa !5
  %517 = load ptr, ptr %23, align 8, !tbaa !5
  %518 = load i64, ptr %37, align 8, !tbaa !9
  %519 = getelementptr inbounds double, ptr %517, i64 %518
  %520 = load ptr, ptr %24, align 8, !tbaa !5
  %521 = load ptr, ptr %25, align 8, !tbaa !5
  %522 = load i64, ptr %39, align 8, !tbaa !9
  %523 = getelementptr inbounds double, ptr %521, i64 %522
  %524 = load ptr, ptr %26, align 8, !tbaa !5
  %525 = load ptr, ptr %27, align 8, !tbaa !5
  %526 = load i64, ptr %41, align 8, !tbaa !9
  %527 = getelementptr inbounds double, ptr %525, i64 %526
  %528 = load ptr, ptr %28, align 8, !tbaa !5
  %529 = load ptr, ptr %31, align 8, !tbaa !5
  %530 = getelementptr inbounds double, ptr %529, i64 1
  %531 = load ptr, ptr %32, align 8, !tbaa !5
  %532 = load ptr, ptr %33, align 8, !tbaa !5
  %533 = call i32 @dtgex2_(ptr noundef %510, ptr noundef %511, ptr noundef %512, ptr noundef %515, ptr noundef %516, ptr noundef %519, ptr noundef %520, ptr noundef %523, ptr noundef %524, ptr noundef %527, ptr noundef %528, ptr noundef %45, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %530, ptr noundef %531, ptr noundef %532)
  %534 = load ptr, ptr %33, align 8, !tbaa !5
  %535 = load i64, ptr %534, align 8, !tbaa !9
  %536 = icmp ne i64 %535, 0
  br i1 %536, label %537, label %540

537:                                              ; preds = %509
  %538 = load i64, ptr %45, align 8, !tbaa !9
  %539 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %538, ptr %539, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

540:                                              ; preds = %509
  %541 = load i64, ptr %45, align 8, !tbaa !9
  %542 = add nsw i64 %541, 1
  store i64 %542, ptr %45, align 8, !tbaa !9
  br label %661

543:                                              ; preds = %506
  %544 = load ptr, ptr %21, align 8, !tbaa !5
  %545 = load i64, ptr %45, align 8, !tbaa !9
  %546 = add nsw i64 %545, 2
  %547 = load i64, ptr %45, align 8, !tbaa !9
  %548 = add nsw i64 %547, 1
  %549 = load i64, ptr %34, align 8, !tbaa !9
  %550 = mul nsw i64 %548, %549
  %551 = add nsw i64 %546, %550
  %552 = getelementptr inbounds double, ptr %544, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !11
  %554 = fcmp oeq double %553, 0.000000e+00
  br i1 %554, label %555, label %556

555:                                              ; preds = %543
  store i64 1, ptr %47, align 8, !tbaa !9
  br label %556

556:                                              ; preds = %555, %543
  %557 = load i64, ptr %47, align 8, !tbaa !9
  %558 = icmp eq i64 %557, 2
  br i1 %558, label %559, label %593

559:                                              ; preds = %556
  %560 = load ptr, ptr %18, align 8, !tbaa !5
  %561 = load ptr, ptr %19, align 8, !tbaa !5
  %562 = load ptr, ptr %20, align 8, !tbaa !5
  %563 = load ptr, ptr %21, align 8, !tbaa !5
  %564 = load i64, ptr %35, align 8, !tbaa !9
  %565 = getelementptr inbounds double, ptr %563, i64 %564
  %566 = load ptr, ptr %22, align 8, !tbaa !5
  %567 = load ptr, ptr %23, align 8, !tbaa !5
  %568 = load i64, ptr %37, align 8, !tbaa !9
  %569 = getelementptr inbounds double, ptr %567, i64 %568
  %570 = load ptr, ptr %24, align 8, !tbaa !5
  %571 = load ptr, ptr %25, align 8, !tbaa !5
  %572 = load i64, ptr %39, align 8, !tbaa !9
  %573 = getelementptr inbounds double, ptr %571, i64 %572
  %574 = load ptr, ptr %26, align 8, !tbaa !5
  %575 = load ptr, ptr %27, align 8, !tbaa !5
  %576 = load i64, ptr %41, align 8, !tbaa !9
  %577 = getelementptr inbounds double, ptr %575, i64 %576
  %578 = load ptr, ptr %28, align 8, !tbaa !5
  %579 = load ptr, ptr %31, align 8, !tbaa !5
  %580 = getelementptr inbounds double, ptr %579, i64 1
  %581 = load ptr, ptr %32, align 8, !tbaa !5
  %582 = load ptr, ptr %33, align 8, !tbaa !5
  %583 = call i32 @dtgex2_(ptr noundef %560, ptr noundef %561, ptr noundef %562, ptr noundef %565, ptr noundef %566, ptr noundef %569, ptr noundef %570, ptr noundef %573, ptr noundef %574, ptr noundef %577, ptr noundef %578, ptr noundef %45, ptr noundef @c__1, ptr noundef %47, ptr noundef %580, ptr noundef %581, ptr noundef %582)
  %584 = load ptr, ptr %33, align 8, !tbaa !5
  %585 = load i64, ptr %584, align 8, !tbaa !9
  %586 = icmp ne i64 %585, 0
  br i1 %586, label %587, label %590

587:                                              ; preds = %559
  %588 = load i64, ptr %45, align 8, !tbaa !9
  %589 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %588, ptr %589, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

590:                                              ; preds = %559
  %591 = load i64, ptr %45, align 8, !tbaa !9
  %592 = add nsw i64 %591, 2
  store i64 %592, ptr %45, align 8, !tbaa !9
  br label %660

593:                                              ; preds = %556
  %594 = load ptr, ptr %18, align 8, !tbaa !5
  %595 = load ptr, ptr %19, align 8, !tbaa !5
  %596 = load ptr, ptr %20, align 8, !tbaa !5
  %597 = load ptr, ptr %21, align 8, !tbaa !5
  %598 = load i64, ptr %35, align 8, !tbaa !9
  %599 = getelementptr inbounds double, ptr %597, i64 %598
  %600 = load ptr, ptr %22, align 8, !tbaa !5
  %601 = load ptr, ptr %23, align 8, !tbaa !5
  %602 = load i64, ptr %37, align 8, !tbaa !9
  %603 = getelementptr inbounds double, ptr %601, i64 %602
  %604 = load ptr, ptr %24, align 8, !tbaa !5
  %605 = load ptr, ptr %25, align 8, !tbaa !5
  %606 = load i64, ptr %39, align 8, !tbaa !9
  %607 = getelementptr inbounds double, ptr %605, i64 %606
  %608 = load ptr, ptr %26, align 8, !tbaa !5
  %609 = load ptr, ptr %27, align 8, !tbaa !5
  %610 = load i64, ptr %41, align 8, !tbaa !9
  %611 = getelementptr inbounds double, ptr %609, i64 %610
  %612 = load ptr, ptr %28, align 8, !tbaa !5
  %613 = load ptr, ptr %31, align 8, !tbaa !5
  %614 = getelementptr inbounds double, ptr %613, i64 1
  %615 = load ptr, ptr %32, align 8, !tbaa !5
  %616 = load ptr, ptr %33, align 8, !tbaa !5
  %617 = call i32 @dtgex2_(ptr noundef %594, ptr noundef %595, ptr noundef %596, ptr noundef %599, ptr noundef %600, ptr noundef %603, ptr noundef %604, ptr noundef %607, ptr noundef %608, ptr noundef %611, ptr noundef %612, ptr noundef %45, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %614, ptr noundef %615, ptr noundef %616)
  %618 = load ptr, ptr %33, align 8, !tbaa !5
  %619 = load i64, ptr %618, align 8, !tbaa !9
  %620 = icmp ne i64 %619, 0
  br i1 %620, label %621, label %624

621:                                              ; preds = %593
  %622 = load i64, ptr %45, align 8, !tbaa !9
  %623 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %622, ptr %623, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

624:                                              ; preds = %593
  %625 = load i64, ptr %45, align 8, !tbaa !9
  %626 = add nsw i64 %625, 1
  store i64 %626, ptr %45, align 8, !tbaa !9
  %627 = load ptr, ptr %18, align 8, !tbaa !5
  %628 = load ptr, ptr %19, align 8, !tbaa !5
  %629 = load ptr, ptr %20, align 8, !tbaa !5
  %630 = load ptr, ptr %21, align 8, !tbaa !5
  %631 = load i64, ptr %35, align 8, !tbaa !9
  %632 = getelementptr inbounds double, ptr %630, i64 %631
  %633 = load ptr, ptr %22, align 8, !tbaa !5
  %634 = load ptr, ptr %23, align 8, !tbaa !5
  %635 = load i64, ptr %37, align 8, !tbaa !9
  %636 = getelementptr inbounds double, ptr %634, i64 %635
  %637 = load ptr, ptr %24, align 8, !tbaa !5
  %638 = load ptr, ptr %25, align 8, !tbaa !5
  %639 = load i64, ptr %39, align 8, !tbaa !9
  %640 = getelementptr inbounds double, ptr %638, i64 %639
  %641 = load ptr, ptr %26, align 8, !tbaa !5
  %642 = load ptr, ptr %27, align 8, !tbaa !5
  %643 = load i64, ptr %41, align 8, !tbaa !9
  %644 = getelementptr inbounds double, ptr %642, i64 %643
  %645 = load ptr, ptr %28, align 8, !tbaa !5
  %646 = load ptr, ptr %31, align 8, !tbaa !5
  %647 = getelementptr inbounds double, ptr %646, i64 1
  %648 = load ptr, ptr %32, align 8, !tbaa !5
  %649 = load ptr, ptr %33, align 8, !tbaa !5
  %650 = call i32 @dtgex2_(ptr noundef %627, ptr noundef %628, ptr noundef %629, ptr noundef %632, ptr noundef %633, ptr noundef %636, ptr noundef %637, ptr noundef %640, ptr noundef %641, ptr noundef %644, ptr noundef %645, ptr noundef %45, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %647, ptr noundef %648, ptr noundef %649)
  %651 = load ptr, ptr %33, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = icmp ne i64 %652, 0
  br i1 %653, label %654, label %657

654:                                              ; preds = %624
  %655 = load i64, ptr %45, align 8, !tbaa !9
  %656 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %655, ptr %656, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

657:                                              ; preds = %624
  %658 = load i64, ptr %45, align 8, !tbaa !9
  %659 = add nsw i64 %658, 1
  store i64 %659, ptr %45, align 8, !tbaa !9
  br label %660

660:                                              ; preds = %657, %590
  br label %661

661:                                              ; preds = %660, %540
  br label %662

662:                                              ; preds = %661, %452
  %663 = load i64, ptr %45, align 8, !tbaa !9
  %664 = load ptr, ptr %30, align 8, !tbaa !5
  %665 = load i64, ptr %664, align 8, !tbaa !9
  %666 = icmp slt i64 %663, %665
  br i1 %666, label %667, label %668

667:                                              ; preds = %662
  br label %371

668:                                              ; preds = %662
  br label %964

669:                                              ; preds = %342
  %670 = load ptr, ptr %29, align 8, !tbaa !5
  %671 = load i64, ptr %670, align 8, !tbaa !9
  store i64 %671, ptr %45, align 8, !tbaa !9
  br label %672

672:                                              ; preds = %962, %669
  %673 = load i64, ptr %43, align 8, !tbaa !9
  %674 = icmp eq i64 %673, 1
  br i1 %674, label %678, label %675

675:                                              ; preds = %672
  %676 = load i64, ptr %43, align 8, !tbaa !9
  %677 = icmp eq i64 %676, 2
  br i1 %677, label %678, label %749

678:                                              ; preds = %675, %672
  store i64 1, ptr %47, align 8, !tbaa !9
  %679 = load i64, ptr %45, align 8, !tbaa !9
  %680 = icmp sge i64 %679, 3
  br i1 %680, label %681, label %695

681:                                              ; preds = %678
  %682 = load ptr, ptr %21, align 8, !tbaa !5
  %683 = load i64, ptr %45, align 8, !tbaa !9
  %684 = sub nsw i64 %683, 1
  %685 = load i64, ptr %45, align 8, !tbaa !9
  %686 = sub nsw i64 %685, 2
  %687 = load i64, ptr %34, align 8, !tbaa !9
  %688 = mul nsw i64 %686, %687
  %689 = add nsw i64 %684, %688
  %690 = getelementptr inbounds double, ptr %682, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !11
  %692 = fcmp une double %691, 0.000000e+00
  br i1 %692, label %693, label %694

693:                                              ; preds = %681
  store i64 2, ptr %47, align 8, !tbaa !9
  br label %694

694:                                              ; preds = %693, %681
  br label %695

695:                                              ; preds = %694, %678
  %696 = load i64, ptr %45, align 8, !tbaa !9
  %697 = load i64, ptr %47, align 8, !tbaa !9
  %698 = sub nsw i64 %696, %697
  store i64 %698, ptr %42, align 8, !tbaa !9
  %699 = load ptr, ptr %18, align 8, !tbaa !5
  %700 = load ptr, ptr %19, align 8, !tbaa !5
  %701 = load ptr, ptr %20, align 8, !tbaa !5
  %702 = load ptr, ptr %21, align 8, !tbaa !5
  %703 = load i64, ptr %35, align 8, !tbaa !9
  %704 = getelementptr inbounds double, ptr %702, i64 %703
  %705 = load ptr, ptr %22, align 8, !tbaa !5
  %706 = load ptr, ptr %23, align 8, !tbaa !5
  %707 = load i64, ptr %37, align 8, !tbaa !9
  %708 = getelementptr inbounds double, ptr %706, i64 %707
  %709 = load ptr, ptr %24, align 8, !tbaa !5
  %710 = load ptr, ptr %25, align 8, !tbaa !5
  %711 = load i64, ptr %39, align 8, !tbaa !9
  %712 = getelementptr inbounds double, ptr %710, i64 %711
  %713 = load ptr, ptr %26, align 8, !tbaa !5
  %714 = load ptr, ptr %27, align 8, !tbaa !5
  %715 = load i64, ptr %41, align 8, !tbaa !9
  %716 = getelementptr inbounds double, ptr %714, i64 %715
  %717 = load ptr, ptr %28, align 8, !tbaa !5
  %718 = load ptr, ptr %31, align 8, !tbaa !5
  %719 = getelementptr inbounds double, ptr %718, i64 1
  %720 = load ptr, ptr %32, align 8, !tbaa !5
  %721 = load ptr, ptr %33, align 8, !tbaa !5
  %722 = call i32 @dtgex2_(ptr noundef %699, ptr noundef %700, ptr noundef %701, ptr noundef %704, ptr noundef %705, ptr noundef %708, ptr noundef %709, ptr noundef %712, ptr noundef %713, ptr noundef %716, ptr noundef %717, ptr noundef %42, ptr noundef %47, ptr noundef %43, ptr noundef %719, ptr noundef %720, ptr noundef %721)
  %723 = load ptr, ptr %33, align 8, !tbaa !5
  %724 = load i64, ptr %723, align 8, !tbaa !9
  %725 = icmp ne i64 %724, 0
  br i1 %725, label %726, label %729

726:                                              ; preds = %695
  %727 = load i64, ptr %45, align 8, !tbaa !9
  %728 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %727, ptr %728, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

729:                                              ; preds = %695
  %730 = load i64, ptr %47, align 8, !tbaa !9
  %731 = load i64, ptr %45, align 8, !tbaa !9
  %732 = sub nsw i64 %731, %730
  store i64 %732, ptr %45, align 8, !tbaa !9
  %733 = load i64, ptr %43, align 8, !tbaa !9
  %734 = icmp eq i64 %733, 2
  br i1 %734, label %735, label %748

735:                                              ; preds = %729
  %736 = load ptr, ptr %21, align 8, !tbaa !5
  %737 = load i64, ptr %45, align 8, !tbaa !9
  %738 = add nsw i64 %737, 1
  %739 = load i64, ptr %45, align 8, !tbaa !9
  %740 = load i64, ptr %34, align 8, !tbaa !9
  %741 = mul nsw i64 %739, %740
  %742 = add nsw i64 %738, %741
  %743 = getelementptr inbounds double, ptr %736, i64 %742
  %744 = load double, ptr %743, align 8, !tbaa !11
  %745 = fcmp oeq double %744, 0.000000e+00
  br i1 %745, label %746, label %747

746:                                              ; preds = %735
  store i64 3, ptr %43, align 8, !tbaa !9
  br label %747

747:                                              ; preds = %746, %735
  br label %748

748:                                              ; preds = %747, %729
  br label %957

749:                                              ; preds = %675
  store i64 1, ptr %47, align 8, !tbaa !9
  %750 = load i64, ptr %45, align 8, !tbaa !9
  %751 = icmp sge i64 %750, 3
  br i1 %751, label %752, label %766

752:                                              ; preds = %749
  %753 = load ptr, ptr %21, align 8, !tbaa !5
  %754 = load i64, ptr %45, align 8, !tbaa !9
  %755 = sub nsw i64 %754, 1
  %756 = load i64, ptr %45, align 8, !tbaa !9
  %757 = sub nsw i64 %756, 2
  %758 = load i64, ptr %34, align 8, !tbaa !9
  %759 = mul nsw i64 %757, %758
  %760 = add nsw i64 %755, %759
  %761 = getelementptr inbounds double, ptr %753, i64 %760
  %762 = load double, ptr %761, align 8, !tbaa !11
  %763 = fcmp une double %762, 0.000000e+00
  br i1 %763, label %764, label %765

764:                                              ; preds = %752
  store i64 2, ptr %47, align 8, !tbaa !9
  br label %765

765:                                              ; preds = %764, %752
  br label %766

766:                                              ; preds = %765, %749
  %767 = load i64, ptr %45, align 8, !tbaa !9
  %768 = load i64, ptr %47, align 8, !tbaa !9
  %769 = sub nsw i64 %767, %768
  store i64 %769, ptr %42, align 8, !tbaa !9
  %770 = load ptr, ptr %18, align 8, !tbaa !5
  %771 = load ptr, ptr %19, align 8, !tbaa !5
  %772 = load ptr, ptr %20, align 8, !tbaa !5
  %773 = load ptr, ptr %21, align 8, !tbaa !5
  %774 = load i64, ptr %35, align 8, !tbaa !9
  %775 = getelementptr inbounds double, ptr %773, i64 %774
  %776 = load ptr, ptr %22, align 8, !tbaa !5
  %777 = load ptr, ptr %23, align 8, !tbaa !5
  %778 = load i64, ptr %37, align 8, !tbaa !9
  %779 = getelementptr inbounds double, ptr %777, i64 %778
  %780 = load ptr, ptr %24, align 8, !tbaa !5
  %781 = load ptr, ptr %25, align 8, !tbaa !5
  %782 = load i64, ptr %39, align 8, !tbaa !9
  %783 = getelementptr inbounds double, ptr %781, i64 %782
  %784 = load ptr, ptr %26, align 8, !tbaa !5
  %785 = load ptr, ptr %27, align 8, !tbaa !5
  %786 = load i64, ptr %41, align 8, !tbaa !9
  %787 = getelementptr inbounds double, ptr %785, i64 %786
  %788 = load ptr, ptr %28, align 8, !tbaa !5
  %789 = load ptr, ptr %31, align 8, !tbaa !5
  %790 = getelementptr inbounds double, ptr %789, i64 1
  %791 = load ptr, ptr %32, align 8, !tbaa !5
  %792 = load ptr, ptr %33, align 8, !tbaa !5
  %793 = call i32 @dtgex2_(ptr noundef %770, ptr noundef %771, ptr noundef %772, ptr noundef %775, ptr noundef %776, ptr noundef %779, ptr noundef %780, ptr noundef %783, ptr noundef %784, ptr noundef %787, ptr noundef %788, ptr noundef %42, ptr noundef %47, ptr noundef @c__1, ptr noundef %790, ptr noundef %791, ptr noundef %792)
  %794 = load ptr, ptr %33, align 8, !tbaa !5
  %795 = load i64, ptr %794, align 8, !tbaa !9
  %796 = icmp ne i64 %795, 0
  br i1 %796, label %797, label %800

797:                                              ; preds = %766
  %798 = load i64, ptr %45, align 8, !tbaa !9
  %799 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %798, ptr %799, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

800:                                              ; preds = %766
  %801 = load i64, ptr %47, align 8, !tbaa !9
  %802 = icmp eq i64 %801, 1
  br i1 %802, label %803, label %837

803:                                              ; preds = %800
  %804 = load ptr, ptr %18, align 8, !tbaa !5
  %805 = load ptr, ptr %19, align 8, !tbaa !5
  %806 = load ptr, ptr %20, align 8, !tbaa !5
  %807 = load ptr, ptr %21, align 8, !tbaa !5
  %808 = load i64, ptr %35, align 8, !tbaa !9
  %809 = getelementptr inbounds double, ptr %807, i64 %808
  %810 = load ptr, ptr %22, align 8, !tbaa !5
  %811 = load ptr, ptr %23, align 8, !tbaa !5
  %812 = load i64, ptr %37, align 8, !tbaa !9
  %813 = getelementptr inbounds double, ptr %811, i64 %812
  %814 = load ptr, ptr %24, align 8, !tbaa !5
  %815 = load ptr, ptr %25, align 8, !tbaa !5
  %816 = load i64, ptr %39, align 8, !tbaa !9
  %817 = getelementptr inbounds double, ptr %815, i64 %816
  %818 = load ptr, ptr %26, align 8, !tbaa !5
  %819 = load ptr, ptr %27, align 8, !tbaa !5
  %820 = load i64, ptr %41, align 8, !tbaa !9
  %821 = getelementptr inbounds double, ptr %819, i64 %820
  %822 = load ptr, ptr %28, align 8, !tbaa !5
  %823 = load ptr, ptr %31, align 8, !tbaa !5
  %824 = getelementptr inbounds double, ptr %823, i64 1
  %825 = load ptr, ptr %32, align 8, !tbaa !5
  %826 = load ptr, ptr %33, align 8, !tbaa !5
  %827 = call i32 @dtgex2_(ptr noundef %804, ptr noundef %805, ptr noundef %806, ptr noundef %809, ptr noundef %810, ptr noundef %813, ptr noundef %814, ptr noundef %817, ptr noundef %818, ptr noundef %821, ptr noundef %822, ptr noundef %45, ptr noundef %47, ptr noundef @c__1, ptr noundef %824, ptr noundef %825, ptr noundef %826)
  %828 = load ptr, ptr %33, align 8, !tbaa !5
  %829 = load i64, ptr %828, align 8, !tbaa !9
  %830 = icmp ne i64 %829, 0
  br i1 %830, label %831, label %834

831:                                              ; preds = %803
  %832 = load i64, ptr %45, align 8, !tbaa !9
  %833 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %832, ptr %833, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

834:                                              ; preds = %803
  %835 = load i64, ptr %45, align 8, !tbaa !9
  %836 = add nsw i64 %835, -1
  store i64 %836, ptr %45, align 8, !tbaa !9
  br label %956

837:                                              ; preds = %800
  %838 = load ptr, ptr %21, align 8, !tbaa !5
  %839 = load i64, ptr %45, align 8, !tbaa !9
  %840 = load i64, ptr %45, align 8, !tbaa !9
  %841 = sub nsw i64 %840, 1
  %842 = load i64, ptr %34, align 8, !tbaa !9
  %843 = mul nsw i64 %841, %842
  %844 = add nsw i64 %839, %843
  %845 = getelementptr inbounds double, ptr %838, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !11
  %847 = fcmp oeq double %846, 0.000000e+00
  br i1 %847, label %848, label %849

848:                                              ; preds = %837
  store i64 1, ptr %47, align 8, !tbaa !9
  br label %849

849:                                              ; preds = %848, %837
  %850 = load i64, ptr %47, align 8, !tbaa !9
  %851 = icmp eq i64 %850, 2
  br i1 %851, label %852, label %888

852:                                              ; preds = %849
  %853 = load i64, ptr %45, align 8, !tbaa !9
  %854 = sub nsw i64 %853, 1
  store i64 %854, ptr %42, align 8, !tbaa !9
  %855 = load ptr, ptr %18, align 8, !tbaa !5
  %856 = load ptr, ptr %19, align 8, !tbaa !5
  %857 = load ptr, ptr %20, align 8, !tbaa !5
  %858 = load ptr, ptr %21, align 8, !tbaa !5
  %859 = load i64, ptr %35, align 8, !tbaa !9
  %860 = getelementptr inbounds double, ptr %858, i64 %859
  %861 = load ptr, ptr %22, align 8, !tbaa !5
  %862 = load ptr, ptr %23, align 8, !tbaa !5
  %863 = load i64, ptr %37, align 8, !tbaa !9
  %864 = getelementptr inbounds double, ptr %862, i64 %863
  %865 = load ptr, ptr %24, align 8, !tbaa !5
  %866 = load ptr, ptr %25, align 8, !tbaa !5
  %867 = load i64, ptr %39, align 8, !tbaa !9
  %868 = getelementptr inbounds double, ptr %866, i64 %867
  %869 = load ptr, ptr %26, align 8, !tbaa !5
  %870 = load ptr, ptr %27, align 8, !tbaa !5
  %871 = load i64, ptr %41, align 8, !tbaa !9
  %872 = getelementptr inbounds double, ptr %870, i64 %871
  %873 = load ptr, ptr %28, align 8, !tbaa !5
  %874 = load ptr, ptr %31, align 8, !tbaa !5
  %875 = getelementptr inbounds double, ptr %874, i64 1
  %876 = load ptr, ptr %32, align 8, !tbaa !5
  %877 = load ptr, ptr %33, align 8, !tbaa !5
  %878 = call i32 @dtgex2_(ptr noundef %855, ptr noundef %856, ptr noundef %857, ptr noundef %860, ptr noundef %861, ptr noundef %864, ptr noundef %865, ptr noundef %868, ptr noundef %869, ptr noundef %872, ptr noundef %873, ptr noundef %42, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %875, ptr noundef %876, ptr noundef %877)
  %879 = load ptr, ptr %33, align 8, !tbaa !5
  %880 = load i64, ptr %879, align 8, !tbaa !9
  %881 = icmp ne i64 %880, 0
  br i1 %881, label %882, label %885

882:                                              ; preds = %852
  %883 = load i64, ptr %45, align 8, !tbaa !9
  %884 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %883, ptr %884, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

885:                                              ; preds = %852
  %886 = load i64, ptr %45, align 8, !tbaa !9
  %887 = add nsw i64 %886, -2
  store i64 %887, ptr %45, align 8, !tbaa !9
  br label %955

888:                                              ; preds = %849
  %889 = load ptr, ptr %18, align 8, !tbaa !5
  %890 = load ptr, ptr %19, align 8, !tbaa !5
  %891 = load ptr, ptr %20, align 8, !tbaa !5
  %892 = load ptr, ptr %21, align 8, !tbaa !5
  %893 = load i64, ptr %35, align 8, !tbaa !9
  %894 = getelementptr inbounds double, ptr %892, i64 %893
  %895 = load ptr, ptr %22, align 8, !tbaa !5
  %896 = load ptr, ptr %23, align 8, !tbaa !5
  %897 = load i64, ptr %37, align 8, !tbaa !9
  %898 = getelementptr inbounds double, ptr %896, i64 %897
  %899 = load ptr, ptr %24, align 8, !tbaa !5
  %900 = load ptr, ptr %25, align 8, !tbaa !5
  %901 = load i64, ptr %39, align 8, !tbaa !9
  %902 = getelementptr inbounds double, ptr %900, i64 %901
  %903 = load ptr, ptr %26, align 8, !tbaa !5
  %904 = load ptr, ptr %27, align 8, !tbaa !5
  %905 = load i64, ptr %41, align 8, !tbaa !9
  %906 = getelementptr inbounds double, ptr %904, i64 %905
  %907 = load ptr, ptr %28, align 8, !tbaa !5
  %908 = load ptr, ptr %31, align 8, !tbaa !5
  %909 = getelementptr inbounds double, ptr %908, i64 1
  %910 = load ptr, ptr %32, align 8, !tbaa !5
  %911 = load ptr, ptr %33, align 8, !tbaa !5
  %912 = call i32 @dtgex2_(ptr noundef %889, ptr noundef %890, ptr noundef %891, ptr noundef %894, ptr noundef %895, ptr noundef %898, ptr noundef %899, ptr noundef %902, ptr noundef %903, ptr noundef %906, ptr noundef %907, ptr noundef %45, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %909, ptr noundef %910, ptr noundef %911)
  %913 = load ptr, ptr %33, align 8, !tbaa !5
  %914 = load i64, ptr %913, align 8, !tbaa !9
  %915 = icmp ne i64 %914, 0
  br i1 %915, label %916, label %919

916:                                              ; preds = %888
  %917 = load i64, ptr %45, align 8, !tbaa !9
  %918 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %917, ptr %918, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

919:                                              ; preds = %888
  %920 = load i64, ptr %45, align 8, !tbaa !9
  %921 = add nsw i64 %920, -1
  store i64 %921, ptr %45, align 8, !tbaa !9
  %922 = load ptr, ptr %18, align 8, !tbaa !5
  %923 = load ptr, ptr %19, align 8, !tbaa !5
  %924 = load ptr, ptr %20, align 8, !tbaa !5
  %925 = load ptr, ptr %21, align 8, !tbaa !5
  %926 = load i64, ptr %35, align 8, !tbaa !9
  %927 = getelementptr inbounds double, ptr %925, i64 %926
  %928 = load ptr, ptr %22, align 8, !tbaa !5
  %929 = load ptr, ptr %23, align 8, !tbaa !5
  %930 = load i64, ptr %37, align 8, !tbaa !9
  %931 = getelementptr inbounds double, ptr %929, i64 %930
  %932 = load ptr, ptr %24, align 8, !tbaa !5
  %933 = load ptr, ptr %25, align 8, !tbaa !5
  %934 = load i64, ptr %39, align 8, !tbaa !9
  %935 = getelementptr inbounds double, ptr %933, i64 %934
  %936 = load ptr, ptr %26, align 8, !tbaa !5
  %937 = load ptr, ptr %27, align 8, !tbaa !5
  %938 = load i64, ptr %41, align 8, !tbaa !9
  %939 = getelementptr inbounds double, ptr %937, i64 %938
  %940 = load ptr, ptr %28, align 8, !tbaa !5
  %941 = load ptr, ptr %31, align 8, !tbaa !5
  %942 = getelementptr inbounds double, ptr %941, i64 1
  %943 = load ptr, ptr %32, align 8, !tbaa !5
  %944 = load ptr, ptr %33, align 8, !tbaa !5
  %945 = call i32 @dtgex2_(ptr noundef %922, ptr noundef %923, ptr noundef %924, ptr noundef %927, ptr noundef %928, ptr noundef %931, ptr noundef %932, ptr noundef %935, ptr noundef %936, ptr noundef %939, ptr noundef %940, ptr noundef %45, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %942, ptr noundef %943, ptr noundef %944)
  %946 = load ptr, ptr %33, align 8, !tbaa !5
  %947 = load i64, ptr %946, align 8, !tbaa !9
  %948 = icmp ne i64 %947, 0
  br i1 %948, label %949, label %952

949:                                              ; preds = %919
  %950 = load i64, ptr %45, align 8, !tbaa !9
  %951 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %950, ptr %951, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

952:                                              ; preds = %919
  %953 = load i64, ptr %45, align 8, !tbaa !9
  %954 = add nsw i64 %953, -1
  store i64 %954, ptr %45, align 8, !tbaa !9
  br label %955

955:                                              ; preds = %952, %885
  br label %956

956:                                              ; preds = %955, %834
  br label %957

957:                                              ; preds = %956, %748
  %958 = load i64, ptr %45, align 8, !tbaa !9
  %959 = load ptr, ptr %30, align 8, !tbaa !5
  %960 = load i64, ptr %959, align 8, !tbaa !9
  %961 = icmp sgt i64 %958, %960
  br i1 %961, label %962, label %963

962:                                              ; preds = %957
  br label %672

963:                                              ; preds = %957
  br label %964

964:                                              ; preds = %963, %668
  %965 = load i64, ptr %45, align 8, !tbaa !9
  %966 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %965, ptr %966, align 8, !tbaa !9
  %967 = load i64, ptr %46, align 8, !tbaa !9
  %968 = sitofp i64 %967 to double
  %969 = load ptr, ptr %31, align 8, !tbaa !5
  %970 = getelementptr inbounds double, ptr %969, i64 1
  store double %968, ptr %970, align 8, !tbaa !11
  store i32 0, ptr %17, align 4
  store i32 1, ptr %49, align 4
  br label %971

971:                                              ; preds = %964, %949, %916, %882, %831, %797, %726, %654, %621, %587, %537, %503, %430, %341, %248, %242, %234
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  %972 = load i32, ptr %17, align 4
  ret i32 %972
}

; 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) #2

declare i32 @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 = !{!"long", !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 i64, align 8
@c__2 = external hidden global i64, align 8

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

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

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

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

37:                                               ; preds = %34
  %38 = load i64, ptr %0, align 8, !tbaa !5
  %.not = icmp ne i64 %38, 0
  %39 = icmp ugt i64 %26, %35
  %or.cond428 = and i1 %39, %.not
  br i1 %or.cond428, label %.thread414, label %40

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

43:                                               ; preds = %40
  %44 = load i64, ptr %1, align 8, !tbaa !5
  %.not390 = icmp ne i64 %44, 0
  %45 = icmp ugt i64 %26, %41
  %or.cond429 = and i1 %45, %.not390
  br i1 %or.cond429, label %.thread414, label %46

46:                                               ; preds = %43
  %47 = load i64, ptr %11, align 8, !tbaa !5
  %48 = icmp slt i64 %47, 1
  %49 = icmp ugt i64 %47, %26
  %or.cond430 = or i1 %48, %49
  br i1 %or.cond430, label %.thread414, label %50

50:                                               ; preds = %46
  %51 = load i64, ptr %12, align 8, !tbaa !5
  %52 = icmp slt i64 %51, 1
  %53 = icmp sgt i64 %51, %26
  %or.cond409 = or i1 %52, %53
  br i1 %or.cond409, label %.thread414, label %54

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

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

.thread:                                          ; preds = %54
  %60 = icmp ult i64 %26, 2
  %or.cond448 = or i1 %25, %60
  br i1 %or.cond448, label %300, label %61

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

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

70:                                               ; preds = %63
  store i64 %64, ptr %11, align 8, !tbaa !5
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  br label %71

71:                                               ; preds = %63, %70, %61
  %72 = phi i64 [ %26, %63 ], [ %.pre, %70 ], [ %26, %61 ]
  %73 = phi i64 [ %47, %63 ], [ %64, %70 ], [ 1, %61 ]
  store i64 1, ptr %18, align 8, !tbaa !5
  %74 = icmp slt i64 %73, %72
  br i1 %74, label %75, label %83

75:                                               ; preds = %71
  %76 = mul nsw i64 %73, %21
  %77 = getelementptr double, ptr %23, i64 %73
  %78 = getelementptr i8, ptr %77, i64 8
  %79 = getelementptr double, ptr %78, i64 %76
  %80 = load double, ptr %79, align 8, !tbaa !9
  %81 = fcmp une double %80, 0.000000e+00
  br i1 %81, label %82, label %83

82:                                               ; preds = %75
  store i64 2, ptr %18, align 8, !tbaa !5
  br label %83

83:                                               ; preds = %75, %82, %71
  %84 = phi i1 [ false, %75 ], [ true, %82 ], [ false, %71 ]
  %85 = phi i1 [ true, %75 ], [ false, %82 ], [ true, %71 ]
  %86 = load i64, ptr %12, align 8, !tbaa !5
  %87 = icmp sgt i64 %86, 1
  br i1 %87, label %88, label %96

88:                                               ; preds = %83
  %89 = add nsw i64 %86, -1
  %90 = mul nsw i64 %89, %21
  %91 = getelementptr double, ptr %23, i64 %86
  %92 = getelementptr double, ptr %91, i64 %90
  %93 = load double, ptr %92, align 8, !tbaa !9
  %94 = fcmp une double %93, 0.000000e+00
  br i1 %94, label %95, label %96

95:                                               ; preds = %88
  store i64 %89, ptr %12, align 8, !tbaa !5
  %.pre443 = load i64, ptr %2, align 8, !tbaa !5
  br label %96

96:                                               ; preds = %88, %95, %83
  %97 = phi i64 [ %72, %88 ], [ %.pre443, %95 ], [ %72, %83 ]
  %98 = phi i64 [ %86, %88 ], [ %89, %95 ], [ %86, %83 ]
  %99 = icmp slt i64 %98, %97
  br i1 %99, label %100, label %108

100:                                              ; preds = %96
  %101 = mul nsw i64 %98, %21
  %102 = getelementptr double, ptr %23, i64 %98
  %103 = getelementptr i8, ptr %102, i64 8
  %104 = getelementptr double, ptr %103, i64 %101
  %105 = load double, ptr %104, align 8, !tbaa !9
  %106 = fcmp une double %105, 0.000000e+00
  br i1 %106, label %107, label %108

107:                                              ; preds = %100
  br label %108

108:                                              ; preds = %100, %107, %96
  %109 = phi i1 [ false, %107 ], [ true, %100 ], [ true, %96 ]
  %110 = phi i1 [ true, %107 ], [ false, %100 ], [ false, %96 ]
  %111 = load i64, ptr %11, align 8, !tbaa !5
  %112 = icmp eq i64 %111, %98
  br i1 %112, label %300, label %113

113:                                              ; preds = %108
  %114 = icmp slt i64 %111, %98
  br i1 %114, label %115, label %209

115:                                              ; preds = %113
  %or.cond3 = and i1 %109, %84
  br i1 %or.cond3, label %.sink.split, label %116

116:                                              ; preds = %115
  %or.cond5 = and i1 %110, %85
  br i1 %or.cond5, label %.sink.split, label %118

.sink.split:                                      ; preds = %116, %115
  %.sink450 = phi i64 [ -1, %115 ], [ 1, %116 ]
  %117 = add nsw i64 %98, %.sink450
  store i64 %117, ptr %12, align 8, !tbaa !5
  br label %118

118:                                              ; preds = %.sink.split, %116
  %119 = load i64, ptr %11, align 8, !tbaa !5
  store i64 %119, ptr %19, align 8, !tbaa !5
  %invariant.gep436 = getelementptr i8, ptr %23, i64 16
  %invariant.gep438 = getelementptr i8, ptr %23, i64 8
  br label %120

120:                                              ; preds = %205, %118
  %121 = phi i64 [ %206, %205 ], [ %119, %118 ]
  %122 = load i64, ptr %18, align 8
  %123 = add i64 %122, -1
  %or.cond7 = icmp ult i64 %123, 2
  store i64 1, ptr %20, align 8, !tbaa !5
  %124 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %or.cond7, label %125, label %150

125:                                              ; preds = %120
  %126 = add nsw i64 %121, %122
  %.not404.not = icmp slt i64 %126, %124
  br i1 %.not404.not, label %127, label %133

127:                                              ; preds = %125
  %128 = mul nsw i64 %126, %21
  %gep439 = getelementptr double, ptr %invariant.gep438, i64 %126
  %129 = getelementptr double, ptr %gep439, i64 %128
  %130 = load double, ptr %129, align 8, !tbaa !9
  %131 = fcmp une double %130, 0.000000e+00
  br i1 %131, label %132, label %133

132:                                              ; preds = %127
  store i64 2, ptr %20, align 8, !tbaa !5
  br label %133

133:                                              ; preds = %127, %132, %125
  %134 = call i32 @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 %19, ptr noundef nonnull %18, ptr noundef nonnull %20, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %135 = load i64, ptr %15, align 8, !tbaa !5
  %.not405 = icmp eq i64 %135, 0
  br i1 %.not405, label %138, label %136

136:                                              ; preds = %133
  %137 = load i64, ptr %19, align 8, !tbaa !5
  store i64 %137, ptr %12, align 8, !tbaa !5
  br label %300

138:                                              ; preds = %133
  %139 = load i64, ptr %20, align 8, !tbaa !5
  %140 = load i64, ptr %19, align 8, !tbaa !5
  %141 = add nsw i64 %140, %139
  store i64 %141, ptr %19, align 8, !tbaa !5
  %142 = load i64, ptr %18, align 8, !tbaa !5
  %143 = icmp eq i64 %142, 2
  br i1 %143, label %144, label %205

144:                                              ; preds = %138
  %145 = mul nsw i64 %141, %21
  %gep441 = getelementptr double, ptr %invariant.gep438, i64 %141
  %146 = getelementptr double, ptr %gep441, i64 %145
  %147 = load double, ptr %146, align 8, !tbaa !9
  %148 = fcmp oeq double %147, 0.000000e+00
  br i1 %148, label %149, label %205

149:                                              ; preds = %144
  store i64 3, ptr %18, align 8, !tbaa !5
  br label %205

150:                                              ; preds = %120
  %151 = add nsw i64 %121, 3
  %.not398 = icmp sgt i64 %151, %124
  br i1 %.not398, label %160, label %152

152:                                              ; preds = %150
  %153 = add nsw i64 %121, 2
  %154 = mul nsw i64 %153, %21
  %155 = getelementptr double, ptr %23, i64 %151
  %156 = getelementptr double, ptr %155, i64 %154
  %157 = load double, ptr %156, align 8, !tbaa !9
  %158 = fcmp une double %157, 0.000000e+00
  br i1 %158, label %159, label %160

159:                                              ; preds = %152
  store i64 2, ptr %20, align 8, !tbaa !5
  br label %160

160:                                              ; preds = %152, %159, %150
  %161 = add nsw i64 %121, 1
  store i64 %161, ptr %17, align 8, !tbaa !5
  %162 = call i32 @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 %20, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %163 = load i64, ptr %15, align 8, !tbaa !5
  %.not399 = icmp eq i64 %163, 0
  br i1 %.not399, label %166, label %164

164:                                              ; preds = %160
  %165 = load i64, ptr %19, align 8, !tbaa !5
  store i64 %165, ptr %12, align 8, !tbaa !5
  br label %300

166:                                              ; preds = %160
  %167 = load i64, ptr %20, align 8, !tbaa !5
  %168 = icmp eq i64 %167, 1
  br i1 %168, label %169, label %176

169:                                              ; preds = %166
  %170 = call i32 @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 %19, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %171 = load i64, ptr %15, align 8, !tbaa !5
  %.not403 = icmp eq i64 %171, 0
  %172 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %.not403, label %174, label %173

173:                                              ; preds = %169
  store i64 %172, ptr %12, align 8, !tbaa !5
  br label %300

174:                                              ; preds = %169
  %175 = add nsw i64 %172, 1
  store i64 %175, ptr %19, align 8, !tbaa !5
  br label %205

176:                                              ; preds = %166
  %177 = load i64, ptr %19, align 8, !tbaa !5
  %178 = add nsw i64 %177, 1
  %179 = mul nsw i64 %178, %21
  %gep437 = getelementptr double, ptr %invariant.gep436, i64 %177
  %180 = getelementptr double, ptr %gep437, i64 %179
  %181 = load double, ptr %180, align 8, !tbaa !9
  %182 = fcmp oeq double %181, 0.000000e+00
  br i1 %182, label %.thread421, label %183

.thread421:                                       ; preds = %176
  store i64 1, ptr %20, align 8, !tbaa !5
  br label %192

183:                                              ; preds = %176
  %184 = icmp eq i64 %167, 2
  br i1 %184, label %185, label %192

185:                                              ; preds = %183
  %186 = call i32 @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 %19, ptr noundef nonnull @c__1, ptr noundef nonnull %20, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %187 = load i64, ptr %15, align 8, !tbaa !5
  %.not402 = icmp eq i64 %187, 0
  %188 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %.not402, label %190, label %189

189:                                              ; preds = %185
  store i64 %188, ptr %12, align 8, !tbaa !5
  br label %300

190:                                              ; preds = %185
  %191 = add nsw i64 %188, 2
  store i64 %191, ptr %19, align 8, !tbaa !5
  br label %205

192:                                              ; preds = %.thread421, %183
  %193 = call i32 @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 %19, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %194 = load i64, ptr %15, align 8, !tbaa !5
  %.not400 = icmp eq i64 %194, 0
  %195 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %.not400, label %197, label %196

196:                                              ; preds = %192
  store i64 %195, ptr %12, align 8, !tbaa !5
  br label %300

197:                                              ; preds = %192
  %198 = add nsw i64 %195, 1
  store i64 %198, ptr %19, align 8, !tbaa !5
  %199 = call i32 @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 %19, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %200 = load i64, ptr %15, align 8, !tbaa !5
  %.not401 = icmp eq i64 %200, 0
  %201 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %.not401, label %203, label %202

202:                                              ; preds = %197
  store i64 %201, ptr %12, align 8, !tbaa !5
  br label %300

203:                                              ; preds = %197
  %204 = add nsw i64 %201, 1
  store i64 %204, ptr %19, align 8, !tbaa !5
  br label %205

205:                                              ; preds = %174, %203, %190, %138, %149, %144
  %206 = phi i64 [ %175, %174 ], [ %204, %203 ], [ %191, %190 ], [ %141, %138 ], [ %141, %149 ], [ %141, %144 ]
  %207 = load i64, ptr %12, align 8, !tbaa !5
  %208 = icmp slt i64 %206, %207
  br i1 %208, label %120, label %.loopexit

209:                                              ; preds = %113
  store i64 %111, ptr %19, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %23, i64 -8
  %invariant.gep434 = getelementptr i8, ptr %23, i64 8
  br label %210

210:                                              ; preds = %295, %209
  %211 = phi i64 [ %296, %295 ], [ %111, %209 ]
  %212 = load i64, ptr %18, align 8
  %213 = add i64 %212, -1
  %or.cond9 = icmp ult i64 %213, 2
  store i64 1, ptr %20, align 8, !tbaa !5
  %214 = icmp sgt i64 %211, 2
  br i1 %or.cond9, label %215, label %241

215:                                              ; preds = %210
  br i1 %214, label %216, label %223

216:                                              ; preds = %215
  %217 = add nsw i64 %211, -2
  %218 = mul nsw i64 %217, %21
  %gep433 = getelementptr double, ptr %invariant.gep, i64 %211
  %219 = getelementptr double, ptr %gep433, i64 %218
  %220 = load double, ptr %219, align 8, !tbaa !9
  %221 = fcmp une double %220, 0.000000e+00
  br i1 %221, label %222, label %223

222:                                              ; preds = %216
  store i64 2, ptr %20, align 8, !tbaa !5
  br label %223

223:                                              ; preds = %216, %222, %215
  %.neg444 = phi i64 [ -1, %216 ], [ -2, %222 ], [ -1, %215 ]
  %224 = add i64 %.neg444, %211
  store i64 %224, ptr %17, align 8, !tbaa !5
  %225 = call i32 @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 %20, ptr noundef nonnull %18, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %226 = load i64, ptr %15, align 8, !tbaa !5
  %.not397 = icmp eq i64 %226, 0
  br i1 %.not397, label %229, label %227

227:                                              ; preds = %223
  %228 = load i64, ptr %19, align 8, !tbaa !5
  store i64 %228, ptr %12, align 8, !tbaa !5
  br label %300

229:                                              ; preds = %223
  %230 = load i64, ptr %20, align 8, !tbaa !5
  %231 = load i64, ptr %19, align 8, !tbaa !5
  %232 = sub nsw i64 %231, %230
  store i64 %232, ptr %19, align 8, !tbaa !5
  %233 = load i64, ptr %18, align 8, !tbaa !5
  %234 = icmp eq i64 %233, 2
  br i1 %234, label %235, label %295

235:                                              ; preds = %229
  %236 = mul nsw i64 %232, %21
  %gep435 = getelementptr double, ptr %invariant.gep434, i64 %232
  %237 = getelementptr double, ptr %gep435, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !9
  %239 = fcmp oeq double %238, 0.000000e+00
  br i1 %239, label %240, label %295

240:                                              ; preds = %235
  store i64 3, ptr %18, align 8, !tbaa !5
  br label %295

241:                                              ; preds = %210
  br i1 %214, label %242, label %249

242:                                              ; preds = %241
  %243 = add nsw i64 %211, -2
  %244 = mul nsw i64 %243, %21
  %gep = getelementptr double, ptr %invariant.gep, i64 %211
  %245 = getelementptr double, ptr %gep, i64 %244
  %246 = load double, ptr %245, align 8, !tbaa !9
  %247 = fcmp une double %246, 0.000000e+00
  br i1 %247, label %248, label %249

248:                                              ; preds = %242
  store i64 2, ptr %20, align 8, !tbaa !5
  br label %249

249:                                              ; preds = %242, %248, %241
  %.neg = phi i64 [ -1, %242 ], [ -2, %248 ], [ -1, %241 ]
  %250 = add i64 %.neg, %211
  store i64 %250, ptr %17, align 8, !tbaa !5
  %251 = call i32 @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 %20, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %252 = load i64, ptr %15, align 8, !tbaa !5
  %.not392 = icmp eq i64 %252, 0
  br i1 %.not392, label %255, label %253

253:                                              ; preds = %249
  %254 = load i64, ptr %19, align 8, !tbaa !5
  store i64 %254, ptr %12, align 8, !tbaa !5
  br label %300

255:                                              ; preds = %249
  %256 = load i64, ptr %20, align 8, !tbaa !5
  %257 = icmp eq i64 %256, 1
  br i1 %257, label %258, label %265

258:                                              ; preds = %255
  %259 = call i32 @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 %19, ptr noundef nonnull %20, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %260 = load i64, ptr %15, align 8, !tbaa !5
  %.not396 = icmp eq i64 %260, 0
  %261 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %.not396, label %263, label %262

262:                                              ; preds = %258
  store i64 %261, ptr %12, align 8, !tbaa !5
  br label %300

263:                                              ; preds = %258
  %264 = add nsw i64 %261, -1
  store i64 %264, ptr %19, align 8, !tbaa !5
  br label %295

265:                                              ; preds = %255
  %266 = load i64, ptr %19, align 8, !tbaa !5
  %267 = add nsw i64 %266, -1
  %268 = mul nsw i64 %267, %21
  %269 = getelementptr double, ptr %23, i64 %266
  %270 = getelementptr double, ptr %269, i64 %268
  %271 = load double, ptr %270, align 8, !tbaa !9
  %272 = fcmp oeq double %271, 0.000000e+00
  br i1 %272, label %.thread424, label %273

.thread424:                                       ; preds = %265
  store i64 1, ptr %20, align 8, !tbaa !5
  br label %282

273:                                              ; preds = %265
  %274 = icmp eq i64 %256, 2
  br i1 %274, label %275, label %282

275:                                              ; preds = %273
  store i64 %267, ptr %17, align 8, !tbaa !5
  %276 = call i32 @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
  %277 = load i64, ptr %15, align 8, !tbaa !5
  %.not395 = icmp eq i64 %277, 0
  %278 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %.not395, label %280, label %279

279:                                              ; preds = %275
  store i64 %278, ptr %12, align 8, !tbaa !5
  br label %300

280:                                              ; preds = %275
  %281 = add nsw i64 %278, -2
  store i64 %281, ptr %19, align 8, !tbaa !5
  br label %295

282:                                              ; preds = %.thread424, %273
  %283 = call i32 @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 %19, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %284 = load i64, ptr %15, align 8, !tbaa !5
  %.not393 = icmp eq i64 %284, 0
  %285 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %.not393, label %287, label %286

286:                                              ; preds = %282
  store i64 %285, ptr %12, align 8, !tbaa !5
  br label %300

287:                                              ; preds = %282
  %288 = add nsw i64 %285, -1
  store i64 %288, ptr %19, align 8, !tbaa !5
  %289 = call i32 @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 %19, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %290 = load i64, ptr %15, align 8, !tbaa !5
  %.not394 = icmp eq i64 %290, 0
  %291 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %.not394, label %293, label %292

292:                                              ; preds = %287
  store i64 %291, ptr %12, align 8, !tbaa !5
  br label %300

293:                                              ; preds = %287
  %294 = add nsw i64 %291, -1
  store i64 %294, ptr %19, align 8, !tbaa !5
  br label %295

295:                                              ; preds = %263, %293, %280, %229, %240, %235
  %296 = phi i64 [ %264, %263 ], [ %294, %293 ], [ %281, %280 ], [ %232, %229 ], [ %232, %240 ], [ %232, %235 ]
  %297 = load i64, ptr %12, align 8, !tbaa !5
  %298 = icmp sgt i64 %296, %297
  br i1 %298, label %210, label %.loopexit

.loopexit:                                        ; preds = %295, %205
  %299 = phi i64 [ %206, %205 ], [ %296, %295 ]
  store i64 %299, ptr %12, align 8, !tbaa !5
  store double %57, ptr %13, align 8, !tbaa !9
  br label %300

300:                                              ; preds = %108, %.thread, %.loopexit, %292, %286, %279, %262, %253, %227, %202, %196, %189, %173, %164, %136, %.thread414
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  ret i32 0
}

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

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

declare i32 @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 i64 @llvm.umax.i64(i64, i64) #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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}


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