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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@c__65 = external hidden global i32, align 4

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

108:                                              ; preds = %14
  %109 = load ptr, ptr %17, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  store i32 %110, ptr %54, align 4, !tbaa !9
  %111 = load ptr, ptr %18, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = icmp sge i32 1, %112
  br i1 %113, label %114, label %115

114:                                              ; preds = %108
  br label %118

115:                                              ; preds = %108
  %116 = load ptr, ptr %18, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  br label %118

118:                                              ; preds = %115, %114
  %119 = phi i32 [ 1, %114 ], [ %117, %115 ]
  store i32 %119, ptr %55, align 4, !tbaa !9
  br label %132

120:                                              ; preds = %14
  %121 = load ptr, ptr %18, align 8, !tbaa !5
  %122 = load i32, ptr %121, align 4, !tbaa !9
  store i32 %122, ptr %54, align 4, !tbaa !9
  %123 = load ptr, ptr %17, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = icmp sge i32 1, %124
  br i1 %125, label %126, label %127

126:                                              ; preds = %120
  br label %130

127:                                              ; preds = %120
  %128 = load ptr, ptr %17, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  br label %130

130:                                              ; preds = %127, %126
  %131 = phi i32 [ 1, %126 ], [ %129, %127 ]
  store i32 %131, ptr %55, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %130, %118
  %133 = load i32, ptr %40, align 4, !tbaa !9
  %134 = icmp ne i32 %133, 0
  br i1 %134, label %141, label %135

135:                                              ; preds = %132
  %136 = load ptr, ptr %15, align 8, !tbaa !5
  %137 = call i32 @lsame_(ptr noundef %136, ptr noundef @.str.2)
  %138 = icmp ne i32 %137, 0
  br i1 %138, label %141, label %139

139:                                              ; preds = %135
  %140 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %140, align 4, !tbaa !9
  br label %251

141:                                              ; preds = %135, %132
  %142 = load i32, ptr %56, align 4, !tbaa !9
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %150, label %144

144:                                              ; preds = %141
  %145 = load ptr, ptr %16, align 8, !tbaa !5
  %146 = call i32 @lsame_(ptr noundef %145, ptr noundef @.str.3)
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %150, label %148

148:                                              ; preds = %144
  %149 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %149, align 4, !tbaa !9
  br label %250

150:                                              ; preds = %144, %141
  %151 = load ptr, ptr %17, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = icmp slt i32 %152, 0
  br i1 %153, label %154, label %156

154:                                              ; preds = %150
  %155 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %155, align 4, !tbaa !9
  br label %249

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

160:                                              ; preds = %156
  %161 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %161, align 4, !tbaa !9
  br label %248

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

166:                                              ; preds = %162
  %167 = load ptr, ptr %19, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = load i32, ptr %54, align 4, !tbaa !9
  %170 = icmp sgt i32 %168, %169
  br i1 %170, label %171, label %173

171:                                              ; preds = %166, %162
  %172 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -5, ptr %172, align 4, !tbaa !9
  br label %247

173:                                              ; preds = %166
  %174 = load ptr, ptr %20, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp slt i32 %175, 0
  br i1 %176, label %195, label %177

177:                                              ; preds = %173
  %178 = load i32, ptr %40, align 4, !tbaa !9
  %179 = icmp ne i32 %178, 0
  br i1 %179, label %180, label %186

180:                                              ; preds = %177
  %181 = load ptr, ptr %20, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = load ptr, ptr %17, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = icmp sgt i32 %182, %184
  br i1 %185, label %195, label %186

186:                                              ; preds = %180, %177
  %187 = load i32, ptr %40, align 4, !tbaa !9
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %197, label %189

189:                                              ; preds = %186
  %190 = load ptr, ptr %20, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = load ptr, ptr %18, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = icmp sgt i32 %191, %193
  br i1 %194, label %195, label %197

195:                                              ; preds = %189, %180, %173
  %196 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -6, ptr %196, align 4, !tbaa !9
  br label %246

197:                                              ; preds = %189, %186
  %198 = load ptr, ptr %22, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = load ptr, ptr %19, align 8, !tbaa !5
  %201 = load i32, ptr %200, align 4, !tbaa !9
  %202 = icmp sge i32 1, %201
  br i1 %202, label %203, label %204

203:                                              ; preds = %197
  br label %207

204:                                              ; preds = %197
  %205 = load ptr, ptr %19, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %204, %203
  %208 = phi i32 [ 1, %203 ], [ %206, %204 ]
  %209 = icmp slt i32 %199, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %207
  %211 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -8, ptr %211, align 4, !tbaa !9
  br label %245

212:                                              ; preds = %207
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = load ptr, ptr %17, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = icmp sge i32 1, %216
  br i1 %217, label %218, label %219

218:                                              ; preds = %212
  br label %222

219:                                              ; preds = %212
  %220 = load ptr, ptr %17, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %219, %218
  %223 = phi i32 [ 1, %218 ], [ %221, %219 ]
  %224 = icmp slt i32 %214, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %222
  %226 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %226, align 4, !tbaa !9
  br label %244

227:                                              ; preds = %222
  %228 = load ptr, ptr %27, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = load i32, ptr %55, align 4, !tbaa !9
  %231 = icmp sge i32 1, %230
  br i1 %231, label %232, label %233

232:                                              ; preds = %227
  br label %235

233:                                              ; preds = %227
  %234 = load i32, ptr %55, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %233, %232
  %236 = phi i32 [ 1, %232 ], [ %234, %233 ]
  %237 = icmp slt i32 %229, %236
  br i1 %237, label %238, label %243

238:                                              ; preds = %235
  %239 = load i32, ptr %60, align 4, !tbaa !9
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %243, label %241

241:                                              ; preds = %238
  %242 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -13, ptr %242, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %241, %238, %235
  br label %244

244:                                              ; preds = %243, %225
  br label %245

245:                                              ; preds = %244, %210
  br label %246

246:                                              ; preds = %245, %195
  br label %247

247:                                              ; preds = %246, %171
  br label %248

248:                                              ; preds = %247, %160
  br label %249

249:                                              ; preds = %248, %154
  br label %250

250:                                              ; preds = %249, %148
  br label %251

251:                                              ; preds = %250, %139
  %252 = load ptr, ptr %28, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = icmp eq i32 %253, 0
  br i1 %254, label %255, label %343

255:                                              ; preds = %251
  %256 = load ptr, ptr %17, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = icmp eq i32 %257, 0
  br i1 %258, label %263, label %259

259:                                              ; preds = %255
  %260 = load ptr, ptr %18, align 8, !tbaa !5
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = icmp eq i32 %261, 0
  br i1 %262, label %263, label %264

263:                                              ; preds = %259, %255
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %338

264:                                              ; preds = %259
  %265 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 0
  store i32 1, ptr %265, align 4, !tbaa !9
  %266 = load ptr, ptr %15, align 8, !tbaa !5
  %267 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 0
  store ptr %266, ptr %267, align 16, !tbaa !5
  %268 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 1
  store i32 1, ptr %268, align 4, !tbaa !9
  %269 = load ptr, ptr %16, align 8, !tbaa !5
  %270 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 1
  store ptr %269, ptr %270, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  store i32 2, ptr %64, align 4, !tbaa !9
  %271 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  store ptr %271, ptr %66, align 8, !tbaa !5
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %272

272:                                              ; preds = %308, %264
  %273 = load i32, ptr %62, align 4, !tbaa !9
  %274 = load i32, ptr @c__2, align 4, !tbaa !9
  %275 = icmp slt i32 %273, %274
  br i1 %275, label %276, label %311

276:                                              ; preds = %272
  %277 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %277, ptr %63, align 4, !tbaa !9
  %278 = load i32, ptr %62, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 %279
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = load i32, ptr %63, align 4, !tbaa !9
  %283 = icmp slt i32 %281, %282
  br i1 %283, label %284, label %289

284:                                              ; preds = %276
  %285 = load i32, ptr %62, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 %286
  %288 = load i32, ptr %287, align 4, !tbaa !9
  store i32 %288, ptr %63, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %284, %276
  %290 = load i32, ptr %63, align 4, !tbaa !9
  %291 = load i32, ptr %64, align 4, !tbaa !9
  %292 = sub nsw i32 %291, %290
  store i32 %292, ptr %64, align 4, !tbaa !9
  %293 = load i32, ptr %62, align 4, !tbaa !9
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 %294
  %296 = load ptr, ptr %295, align 8, !tbaa !5
  store ptr %296, ptr %65, align 8, !tbaa !5
  br label %297

297:                                              ; preds = %301, %289
  %298 = load i32, ptr %63, align 4, !tbaa !9
  %299 = add nsw i32 %298, -1
  store i32 %299, ptr %63, align 4, !tbaa !9
  %300 = icmp sge i32 %299, 0
  br i1 %300, label %301, label %307

301:                                              ; preds = %297
  %302 = load ptr, ptr %65, align 8, !tbaa !5
  %303 = getelementptr inbounds i8, ptr %302, i32 1
  store ptr %303, ptr %65, align 8, !tbaa !5
  %304 = load i8, ptr %302, align 1, !tbaa !11
  %305 = load ptr, ptr %66, align 8, !tbaa !5
  %306 = getelementptr inbounds i8, ptr %305, i32 1
  store ptr %306, ptr %66, align 8, !tbaa !5
  store i8 %304, ptr %305, align 1, !tbaa !11
  br label %297, !llvm.loop !12

307:                                              ; preds = %297
  br label %308

308:                                              ; preds = %307
  %309 = load i32, ptr %62, align 4, !tbaa !9
  %310 = add nsw i32 %309, 1
  store i32 %310, ptr %62, align 4, !tbaa !9
  br label %272, !llvm.loop !14

311:                                              ; preds = %272
  br label %312

312:                                              ; preds = %316, %311
  %313 = load i32, ptr %64, align 4, !tbaa !9
  %314 = add nsw i32 %313, -1
  store i32 %314, ptr %64, align 4, !tbaa !9
  %315 = icmp sge i32 %314, 0
  br i1 %315, label %316, label %319

316:                                              ; preds = %312
  %317 = load ptr, ptr %66, align 8, !tbaa !5
  %318 = getelementptr inbounds i8, ptr %317, i32 1
  store ptr %318, ptr %66, align 8, !tbaa !5
  store i8 32, ptr %317, align 1, !tbaa !11
  br label %312, !llvm.loop !15

319:                                              ; preds = %312
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  store i32 64, ptr %34, align 4, !tbaa !9
  %320 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  %321 = load ptr, ptr %17, align 8, !tbaa !5
  %322 = load ptr, ptr %18, align 8, !tbaa !5
  %323 = load ptr, ptr %19, align 8, !tbaa !5
  %324 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %320, ptr noundef %321, ptr noundef %322, ptr noundef %323, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %324, ptr %35, align 4, !tbaa !9
  %325 = load i32, ptr %34, align 4, !tbaa !9
  %326 = load i32, ptr %35, align 4, !tbaa !9
  %327 = icmp sle i32 %325, %326
  br i1 %327, label %328, label %330

328:                                              ; preds = %319
  %329 = load i32, ptr %34, align 4, !tbaa !9
  br label %332

330:                                              ; preds = %319
  %331 = load i32, ptr %35, align 4, !tbaa !9
  br label %332

332:                                              ; preds = %330, %328
  %333 = phi i32 [ %329, %328 ], [ %331, %330 ]
  store i32 %333, ptr %51, align 4, !tbaa !9
  %334 = load i32, ptr %55, align 4, !tbaa !9
  %335 = load i32, ptr %51, align 4, !tbaa !9
  %336 = mul nsw i32 %334, %335
  %337 = add nsw i32 %336, 4160
  store i32 %337, ptr %59, align 4, !tbaa !9
  br label %338

338:                                              ; preds = %332, %263
  %339 = load i32, ptr %59, align 4, !tbaa !9
  %340 = sitofp i32 %339 to double
  %341 = load ptr, ptr %26, align 8, !tbaa !5
  %342 = getelementptr inbounds double, ptr %341, i64 1
  store double %340, ptr %342, align 8, !tbaa !16
  br label %343

343:                                              ; preds = %338, %251
  %344 = load ptr, ptr %28, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %352

347:                                              ; preds = %343
  %348 = load ptr, ptr %28, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = sub nsw i32 0, %349
  store i32 %350, ptr %34, align 4, !tbaa !9
  %351 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %34, i32 noundef 6)
  store i32 1, ptr %67, align 4
  br label %658

352:                                              ; preds = %343
  %353 = load i32, ptr %60, align 4, !tbaa !9
  %354 = icmp ne i32 %353, 0
  br i1 %354, label %355, label %356

355:                                              ; preds = %352
  store i32 1, ptr %67, align 4
  br label %658

356:                                              ; preds = %352
  br label %357

357:                                              ; preds = %356
  %358 = load ptr, ptr %17, align 8, !tbaa !5
  %359 = load i32, ptr %358, align 4, !tbaa !9
  %360 = icmp eq i32 %359, 0
  br i1 %360, label %365, label %361

361:                                              ; preds = %357
  %362 = load ptr, ptr %18, align 8, !tbaa !5
  %363 = load i32, ptr %362, align 4, !tbaa !9
  %364 = icmp eq i32 %363, 0
  br i1 %364, label %365, label %368

365:                                              ; preds = %361, %357
  %366 = load ptr, ptr %26, align 8, !tbaa !5
  %367 = getelementptr inbounds double, ptr %366, i64 1
  store double 1.000000e+00, ptr %367, align 8, !tbaa !16
  store i32 1, ptr %67, align 4
  br label %658

368:                                              ; preds = %361
  store i32 2, ptr %42, align 4, !tbaa !9
  %369 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %369, ptr %57, align 4, !tbaa !9
  %370 = load i32, ptr %51, align 4, !tbaa !9
  %371 = icmp sgt i32 %370, 1
  br i1 %371, label %372, label %461

372:                                              ; preds = %368
  %373 = load i32, ptr %51, align 4, !tbaa !9
  %374 = load ptr, ptr %19, align 8, !tbaa !5
  %375 = load i32, ptr %374, align 4, !tbaa !9
  %376 = icmp slt i32 %373, %375
  br i1 %376, label %377, label %461

377:                                              ; preds = %372
  %378 = load ptr, ptr %27, align 8, !tbaa !5
  %379 = load i32, ptr %378, align 4, !tbaa !9
  %380 = load i32, ptr %55, align 4, !tbaa !9
  %381 = load i32, ptr %51, align 4, !tbaa !9
  %382 = mul nsw i32 %380, %381
  %383 = add nsw i32 %382, 4160
  %384 = icmp slt i32 %379, %383
  br i1 %384, label %385, label %460

385:                                              ; preds = %377
  %386 = load ptr, ptr %27, align 8, !tbaa !5
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = sub nsw i32 %387, 4160
  %389 = load i32, ptr %57, align 4, !tbaa !9
  %390 = sdiv i32 %388, %389
  store i32 %390, ptr %51, align 4, !tbaa !9
  %391 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 0
  store i32 1, ptr %391, align 4, !tbaa !9
  %392 = load ptr, ptr %15, align 8, !tbaa !5
  %393 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 0
  store ptr %392, ptr %393, align 16, !tbaa !5
  %394 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 1
  store i32 1, ptr %394, align 4, !tbaa !9
  %395 = load ptr, ptr %16, align 8, !tbaa !5
  %396 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 1
  store ptr %395, ptr %396, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #3
  store i32 2, ptr %70, align 4, !tbaa !9
  %397 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  store ptr %397, ptr %72, align 8, !tbaa !5
  store i32 0, ptr %68, align 4, !tbaa !9
  br label %398

398:                                              ; preds = %434, %385
  %399 = load i32, ptr %68, align 4, !tbaa !9
  %400 = load i32, ptr @c__2, align 4, !tbaa !9
  %401 = icmp slt i32 %399, %400
  br i1 %401, label %402, label %437

402:                                              ; preds = %398
  %403 = load i32, ptr %70, align 4, !tbaa !9
  store i32 %403, ptr %69, align 4, !tbaa !9
  %404 = load i32, ptr %68, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 %405
  %407 = load i32, ptr %406, align 4, !tbaa !9
  %408 = load i32, ptr %69, align 4, !tbaa !9
  %409 = icmp slt i32 %407, %408
  br i1 %409, label %410, label %415

410:                                              ; preds = %402
  %411 = load i32, ptr %68, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds [2 x i32], ptr %36, i64 0, i64 %412
  %414 = load i32, ptr %413, align 4, !tbaa !9
  store i32 %414, ptr %69, align 4, !tbaa !9
  br label %415

415:                                              ; preds = %410, %402
  %416 = load i32, ptr %69, align 4, !tbaa !9
  %417 = load i32, ptr %70, align 4, !tbaa !9
  %418 = sub nsw i32 %417, %416
  store i32 %418, ptr %70, align 4, !tbaa !9
  %419 = load i32, ptr %68, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds [2 x ptr], ptr %29, i64 0, i64 %420
  %422 = load ptr, ptr %421, align 8, !tbaa !5
  store ptr %422, ptr %71, align 8, !tbaa !5
  br label %423

423:                                              ; preds = %427, %415
  %424 = load i32, ptr %69, align 4, !tbaa !9
  %425 = add nsw i32 %424, -1
  store i32 %425, ptr %69, align 4, !tbaa !9
  %426 = icmp sge i32 %425, 0
  br i1 %426, label %427, label %433

427:                                              ; preds = %423
  %428 = load ptr, ptr %71, align 8, !tbaa !5
  %429 = getelementptr inbounds i8, ptr %428, i32 1
  store ptr %429, ptr %71, align 8, !tbaa !5
  %430 = load i8, ptr %428, align 1, !tbaa !11
  %431 = load ptr, ptr %72, align 8, !tbaa !5
  %432 = getelementptr inbounds i8, ptr %431, i32 1
  store ptr %432, ptr %72, align 8, !tbaa !5
  store i8 %430, ptr %431, align 1, !tbaa !11
  br label %423, !llvm.loop !18

433:                                              ; preds = %423
  br label %434

434:                                              ; preds = %433
  %435 = load i32, ptr %68, align 4, !tbaa !9
  %436 = add nsw i32 %435, 1
  store i32 %436, ptr %68, align 4, !tbaa !9
  br label %398, !llvm.loop !19

437:                                              ; preds = %398
  br label %438

438:                                              ; preds = %442, %437
  %439 = load i32, ptr %70, align 4, !tbaa !9
  %440 = add nsw i32 %439, -1
  store i32 %440, ptr %70, align 4, !tbaa !9
  %441 = icmp sge i32 %440, 0
  br i1 %441, label %442, label %445

442:                                              ; preds = %438
  %443 = load ptr, ptr %72, align 8, !tbaa !5
  %444 = getelementptr inbounds i8, ptr %443, i32 1
  store ptr %444, ptr %72, align 8, !tbaa !5
  store i8 32, ptr %443, align 1, !tbaa !11
  br label %438, !llvm.loop !20

445:                                              ; preds = %438
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  store i32 2, ptr %34, align 4, !tbaa !9
  %446 = getelementptr inbounds [2 x i8], ptr %39, i64 0, i64 0
  %447 = load ptr, ptr %17, align 8, !tbaa !5
  %448 = load ptr, ptr %18, align 8, !tbaa !5
  %449 = load ptr, ptr %19, align 8, !tbaa !5
  %450 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %446, ptr noundef %447, ptr noundef %448, ptr noundef %449, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %450, ptr %35, align 4, !tbaa !9
  %451 = load i32, ptr %34, align 4, !tbaa !9
  %452 = load i32, ptr %35, align 4, !tbaa !9
  %453 = icmp sge i32 %451, %452
  br i1 %453, label %454, label %456

454:                                              ; preds = %445
  %455 = load i32, ptr %34, align 4, !tbaa !9
  br label %458

456:                                              ; preds = %445
  %457 = load i32, ptr %35, align 4, !tbaa !9
  br label %458

458:                                              ; preds = %456, %454
  %459 = phi i32 [ %455, %454 ], [ %457, %456 ]
  store i32 %459, ptr %42, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %458, %377
  br label %461

461:                                              ; preds = %460, %372, %368
  %462 = load i32, ptr %51, align 4, !tbaa !9
  %463 = load i32, ptr %42, align 4, !tbaa !9
  %464 = icmp slt i32 %462, %463
  br i1 %464, label %470, label %465

465:                                              ; preds = %461
  %466 = load i32, ptr %51, align 4, !tbaa !9
  %467 = load ptr, ptr %19, align 8, !tbaa !5
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = icmp sge i32 %466, %468
  br i1 %469, label %470, label %491

470:                                              ; preds = %465, %461
  %471 = load ptr, ptr %15, align 8, !tbaa !5
  %472 = load ptr, ptr %16, align 8, !tbaa !5
  %473 = load ptr, ptr %17, align 8, !tbaa !5
  %474 = load ptr, ptr %18, align 8, !tbaa !5
  %475 = load ptr, ptr %19, align 8, !tbaa !5
  %476 = load ptr, ptr %20, align 8, !tbaa !5
  %477 = load ptr, ptr %21, align 8, !tbaa !5
  %478 = load i32, ptr %31, align 4, !tbaa !9
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds double, ptr %477, i64 %479
  %481 = load ptr, ptr %22, align 8, !tbaa !5
  %482 = load ptr, ptr %23, align 8, !tbaa !5
  %483 = getelementptr inbounds double, ptr %482, i64 1
  %484 = load ptr, ptr %24, align 8, !tbaa !5
  %485 = load i32, ptr %33, align 4, !tbaa !9
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %484, i64 %486
  %488 = load ptr, ptr %25, align 8, !tbaa !5
  %489 = load ptr, ptr %26, align 8, !tbaa !5
  %490 = getelementptr inbounds double, ptr %489, i64 1
  call void @dormr3_(ptr noundef %471, ptr noundef %472, ptr noundef %473, ptr noundef %474, ptr noundef %475, ptr noundef %476, ptr noundef %480, ptr noundef %481, ptr noundef %483, ptr noundef %487, ptr noundef %488, ptr noundef %490, ptr noundef %43)
  br label %653

491:                                              ; preds = %465
  %492 = load i32, ptr %55, align 4, !tbaa !9
  %493 = load i32, ptr %51, align 4, !tbaa !9
  %494 = mul nsw i32 %492, %493
  %495 = add nsw i32 %494, 1
  store i32 %495, ptr %61, align 4, !tbaa !9
  %496 = load i32, ptr %40, align 4, !tbaa !9
  %497 = icmp ne i32 %496, 0
  br i1 %497, label %498, label %501

498:                                              ; preds = %491
  %499 = load i32, ptr %56, align 4, !tbaa !9
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %501, label %507

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

504:                                              ; preds = %501
  %505 = load i32, ptr %56, align 4, !tbaa !9
  %506 = icmp ne i32 %505, 0
  br i1 %506, label %507, label %511

507:                                              ; preds = %504, %498
  store i32 1, ptr %44, align 4, !tbaa !9
  %508 = load ptr, ptr %19, align 8, !tbaa !5
  %509 = load i32, ptr %508, align 4, !tbaa !9
  store i32 %509, ptr %45, align 4, !tbaa !9
  %510 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %510, ptr %46, align 4, !tbaa !9
  br label %522

511:                                              ; preds = %504, %501
  %512 = load ptr, ptr %19, align 8, !tbaa !5
  %513 = load i32, ptr %512, align 4, !tbaa !9
  %514 = sub nsw i32 %513, 1
  %515 = load i32, ptr %51, align 4, !tbaa !9
  %516 = sdiv i32 %514, %515
  %517 = load i32, ptr %51, align 4, !tbaa !9
  %518 = mul nsw i32 %516, %517
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  %520 = load i32, ptr %51, align 4, !tbaa !9
  %521 = sub nsw i32 0, %520
  store i32 %521, ptr %46, align 4, !tbaa !9
  br label %522

522:                                              ; preds = %511, %507
  %523 = load i32, ptr %40, align 4, !tbaa !9
  %524 = icmp ne i32 %523, 0
  br i1 %524, label %525, label %534

525:                                              ; preds = %522
  %526 = load ptr, ptr %18, align 8, !tbaa !5
  %527 = load i32, ptr %526, align 4, !tbaa !9
  store i32 %527, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  %528 = load ptr, ptr %17, align 8, !tbaa !5
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = load ptr, ptr %20, align 8, !tbaa !5
  %531 = load i32, ptr %530, align 4, !tbaa !9
  %532 = sub nsw i32 %529, %531
  %533 = add nsw i32 %532, 1
  store i32 %533, ptr %49, align 4, !tbaa !9
  br label %543

534:                                              ; preds = %522
  %535 = load ptr, ptr %17, align 8, !tbaa !5
  %536 = load i32, ptr %535, align 4, !tbaa !9
  store i32 %536, ptr %52, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  %537 = load ptr, ptr %18, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = load ptr, ptr %20, align 8, !tbaa !5
  %540 = load i32, ptr %539, align 4, !tbaa !9
  %541 = sub nsw i32 %538, %540
  %542 = add nsw i32 %541, 1
  store i32 %542, ptr %49, align 4, !tbaa !9
  br label %543

543:                                              ; preds = %534, %525
  %544 = load i32, ptr %56, align 4, !tbaa !9
  %545 = icmp ne i32 %544, 0
  br i1 %545, label %546, label %548

546:                                              ; preds = %543
  %547 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 84, ptr %547, align 1, !tbaa !11
  br label %550

548:                                              ; preds = %543
  %549 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 78, ptr %549, align 1, !tbaa !11
  br label %550

550:                                              ; preds = %548, %546
  %551 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %551, ptr %34, align 4, !tbaa !9
  %552 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %552, ptr %35, align 4, !tbaa !9
  %553 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %553, ptr %41, align 4, !tbaa !9
  br label %554

554:                                              ; preds = %648, %550
  %555 = load i32, ptr %35, align 4, !tbaa !9
  %556 = icmp slt i32 %555, 0
  br i1 %556, label %557, label %562

557:                                              ; preds = %554
  %558 = load i32, ptr %41, align 4, !tbaa !9
  %559 = load i32, ptr %34, align 4, !tbaa !9
  %560 = icmp sge i32 %558, %559
  %561 = zext i1 %560 to i32
  br label %567

562:                                              ; preds = %554
  %563 = load i32, ptr %41, align 4, !tbaa !9
  %564 = load i32, ptr %34, align 4, !tbaa !9
  %565 = icmp sle i32 %563, %564
  %566 = zext i1 %565 to i32
  br label %567

567:                                              ; preds = %562, %557
  %568 = phi i32 [ %561, %557 ], [ %566, %562 ]
  %569 = icmp ne i32 %568, 0
  br i1 %569, label %570, label %652

570:                                              ; preds = %567
  %571 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %571, ptr %37, align 4, !tbaa !9
  %572 = load ptr, ptr %19, align 8, !tbaa !5
  %573 = load i32, ptr %572, align 4, !tbaa !9
  %574 = load i32, ptr %41, align 4, !tbaa !9
  %575 = sub nsw i32 %573, %574
  %576 = add nsw i32 %575, 1
  store i32 %576, ptr %38, align 4, !tbaa !9
  %577 = load i32, ptr %37, align 4, !tbaa !9
  %578 = load i32, ptr %38, align 4, !tbaa !9
  %579 = icmp sle i32 %577, %578
  br i1 %579, label %580, label %582

580:                                              ; preds = %570
  %581 = load i32, ptr %37, align 4, !tbaa !9
  br label %584

582:                                              ; preds = %570
  %583 = load i32, ptr %38, align 4, !tbaa !9
  br label %584

584:                                              ; preds = %582, %580
  %585 = phi i32 [ %581, %580 ], [ %583, %582 ]
  store i32 %585, ptr %47, align 4, !tbaa !9
  %586 = load ptr, ptr %20, align 8, !tbaa !5
  %587 = load ptr, ptr %21, align 8, !tbaa !5
  %588 = load i32, ptr %41, align 4, !tbaa !9
  %589 = load i32, ptr %49, align 4, !tbaa !9
  %590 = load i32, ptr %30, align 4, !tbaa !9
  %591 = mul nsw i32 %589, %590
  %592 = add nsw i32 %588, %591
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %587, i64 %593
  %595 = load ptr, ptr %22, align 8, !tbaa !5
  %596 = load ptr, ptr %23, align 8, !tbaa !5
  %597 = load i32, ptr %41, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds double, ptr %596, i64 %598
  %600 = load ptr, ptr %26, align 8, !tbaa !5
  %601 = load i32, ptr %61, align 4, !tbaa !9
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds double, ptr %600, i64 %602
  call void @dlarzt_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %586, ptr noundef %47, ptr noundef %594, ptr noundef %595, ptr noundef %599, ptr noundef %603, ptr noundef @c__65)
  %604 = load i32, ptr %40, align 4, !tbaa !9
  %605 = icmp ne i32 %604, 0
  br i1 %605, label %606, label %613

606:                                              ; preds = %584
  %607 = load ptr, ptr %17, align 8, !tbaa !5
  %608 = load i32, ptr %607, align 4, !tbaa !9
  %609 = load i32, ptr %41, align 4, !tbaa !9
  %610 = sub nsw i32 %608, %609
  %611 = add nsw i32 %610, 1
  store i32 %611, ptr %52, align 4, !tbaa !9
  %612 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %612, ptr %48, align 4, !tbaa !9
  br label %620

613:                                              ; preds = %584
  %614 = load ptr, ptr %18, align 8, !tbaa !5
  %615 = load i32, ptr %614, align 4, !tbaa !9
  %616 = load i32, ptr %41, align 4, !tbaa !9
  %617 = sub nsw i32 %615, %616
  %618 = add nsw i32 %617, 1
  store i32 %618, ptr %53, align 4, !tbaa !9
  %619 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %619, ptr %50, align 4, !tbaa !9
  br label %620

620:                                              ; preds = %613, %606
  %621 = load ptr, ptr %15, align 8, !tbaa !5
  %622 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %623 = load ptr, ptr %20, align 8, !tbaa !5
  %624 = load ptr, ptr %21, align 8, !tbaa !5
  %625 = load i32, ptr %41, align 4, !tbaa !9
  %626 = load i32, ptr %49, align 4, !tbaa !9
  %627 = load i32, ptr %30, align 4, !tbaa !9
  %628 = mul nsw i32 %626, %627
  %629 = add nsw i32 %625, %628
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds double, ptr %624, i64 %630
  %632 = load ptr, ptr %22, align 8, !tbaa !5
  %633 = load ptr, ptr %26, align 8, !tbaa !5
  %634 = load i32, ptr %61, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds double, ptr %633, i64 %635
  %637 = load ptr, ptr %24, align 8, !tbaa !5
  %638 = load i32, ptr %48, align 4, !tbaa !9
  %639 = load i32, ptr %50, align 4, !tbaa !9
  %640 = load i32, ptr %32, align 4, !tbaa !9
  %641 = mul nsw i32 %639, %640
  %642 = add nsw i32 %638, %641
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %637, i64 %643
  %645 = load ptr, ptr %25, align 8, !tbaa !5
  %646 = load ptr, ptr %26, align 8, !tbaa !5
  %647 = getelementptr inbounds double, ptr %646, i64 1
  call void @dlarzb_(ptr noundef %621, ptr noundef %622, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %52, ptr noundef %53, ptr noundef %47, ptr noundef %623, ptr noundef %631, ptr noundef %632, ptr noundef %636, ptr noundef @c__65, ptr noundef %644, ptr noundef %645, ptr noundef %647, ptr noundef %57)
  br label %648

648:                                              ; preds = %620
  %649 = load i32, ptr %35, align 4, !tbaa !9
  %650 = load i32, ptr %41, align 4, !tbaa !9
  %651 = add nsw i32 %650, %649
  store i32 %651, ptr %41, align 4, !tbaa !9
  br label %554, !llvm.loop !21

652:                                              ; preds = %567
  br label %653

653:                                              ; preds = %652, %470
  %654 = load i32, ptr %59, align 4, !tbaa !9
  %655 = sitofp i32 %654 to double
  %656 = load ptr, ptr %26, align 8, !tbaa !5
  %657 = getelementptr inbounds double, ptr %656, i64 1
  store double %655, ptr %657, align 8, !tbaa !16
  store i32 1, ptr %67, align 4
  br label %658

658:                                              ; preds = %653, %365, %355, %347
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #3
  ret void
}

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

declare i32 @lsame_(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

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

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

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

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

declare void @dlarzb_(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

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

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

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


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@c__65 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dormrz_(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 nocapture noundef readonly %12, ptr nocapture noundef %13) local_unnamed_addr #0 {
  %15 = alloca [2 x ptr], align 16
  %16 = alloca i32, align 4
  %17 = alloca [2 x i32], align 4
  %18 = alloca [2 x i8], align 1
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #5
  %25 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %25, -1
  %26 = sext i32 %narrow to i64
  %27 = getelementptr inbounds double, ptr %6, i64 %26
  %28 = getelementptr inbounds i8, ptr %8, i64 -8
  %29 = load i32, ptr %10, align 4, !tbaa !5
  %narrow269 = xor i32 %29, -1
  %30 = sext i32 %narrow269 to i64
  %31 = getelementptr inbounds double, ptr %9, i64 %30
  store i32 0, ptr %13, align 4, !tbaa !5
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %33 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %34 = load i32, ptr %12, align 4, !tbaa !5
  %35 = icmp eq i32 %34, -1
  %.not = icmp ne i32 %32, 0
  br i1 %.not, label %36, label %39

36:                                               ; preds = %14
  %37 = load i32, ptr %2, align 4, !tbaa !5
  %38 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %38, i32 1)
  br label %43

39:                                               ; preds = %14
  %40 = load i32, ptr %3, align 4, !tbaa !5
  %41 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select270 = tail call i32 @llvm.smax.i32(i32 %41, i32 1)
  %42 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not260 = icmp eq i32 %42, 0
  br i1 %.not260, label %.thread290.sink.split, label %43

43:                                               ; preds = %36, %39
  %.0227283 = phi i32 [ %spec.select270, %39 ], [ %spec.select, %36 ]
  %.0228280 = phi i32 [ %40, %39 ], [ %37, %36 ]
  %.not261 = icmp eq i32 %33, 0
  br i1 %.not261, label %44, label %46

44:                                               ; preds = %43
  %45 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not262 = icmp eq i32 %45, 0
  br i1 %.not262, label %.thread290.sink.split, label %46

46:                                               ; preds = %44, %43
  %47 = load i32, ptr %2, align 4, !tbaa !5
  %48 = icmp slt i32 %47, 0
  br i1 %48, label %.thread290.sink.split, label %49

49:                                               ; preds = %46
  %50 = load i32, ptr %3, align 4, !tbaa !5
  %51 = icmp slt i32 %50, 0
  br i1 %51, label %.thread290.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i32, ptr %4, align 4, !tbaa !5
  %54 = icmp slt i32 %53, 0
  %55 = icmp sgt i32 %53, %.0228280
  %or.cond271 = select i1 %54, i1 true, i1 %55
  br i1 %or.cond271, label %.thread290.sink.split, label %56

56:                                               ; preds = %52
  %57 = load i32, ptr %5, align 4, !tbaa !5
  %58 = icmp slt i32 %57, 0
  %or.cond317.v = select i1 %.not, i32 %47, i32 %50
  %or.cond317 = icmp ugt i32 %57, %or.cond317.v
  %or.cond318 = or i1 %58, %or.cond317
  br i1 %or.cond318, label %.thread290.sink.split, label %59

59:                                               ; preds = %56
  %60 = load i32, ptr %7, align 4, !tbaa !5
  %spec.select273 = tail call i32 @llvm.umax.i32(i32 %53, i32 1)
  %61 = icmp slt i32 %60, %spec.select273
  br i1 %61, label %.thread290.sink.split, label %62

62:                                               ; preds = %59
  %63 = load i32, ptr %10, align 4, !tbaa !5
  %spec.select274 = tail call i32 @llvm.umax.i32(i32 %47, i32 1)
  %64 = icmp slt i32 %63, %spec.select274
  br i1 %64, label %.thread290.sink.split, label %65

65:                                               ; preds = %62
  %66 = load i32, ptr %12, align 4, !tbaa !5
  %67 = icmp sge i32 %66, %.0227283
  %or.cond = select i1 %67, i1 true, i1 %35
  br i1 %or.cond, label %68, label %.thread290.sink.split

68:                                               ; preds = %65
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %69 = icmp eq i32 %.pr, 0
  br i1 %69, label %70, label %.thread290

70:                                               ; preds = %68
  %71 = icmp eq i32 %47, 0
  %72 = icmp eq i32 %50, 0
  %or.cond396 = or i1 %71, %72
  br i1 %or.cond396, label %.sink.split, label %73

73:                                               ; preds = %70
  store i32 1, ptr %17, align 4, !tbaa !5
  store ptr %0, ptr %15, align 16, !tbaa !9
  %74 = getelementptr inbounds i8, ptr %17, i64 4
  store i32 1, ptr %74, align 4, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %1, ptr %75, align 8, !tbaa !9
  %76 = load i32, ptr @c__2, align 4, !tbaa !5
  %77 = icmp sgt i32 %76, 0
  br i1 %77, label %.lr.ph327, label %.lr.ph332.preheader

.preheader319:                                    ; preds = %._crit_edge
  %78 = icmp sgt i32 %83, 0
  br i1 %78, label %.lr.ph332.preheader, label %.thread285

.lr.ph332.preheader:                              ; preds = %73, %.preheader319
  %.0216.lcssa380 = phi ptr [ %.1217.lcssa, %.preheader319 ], [ %18, %73 ]
  %.0220.lcssa379 = phi i32 [ %83, %.preheader319 ], [ 2, %73 ]
  %79 = zext nneg i32 %.0220.lcssa379 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0216.lcssa380, i8 32, i64 %79, i1 false), !tbaa !11
  br label %.thread285

.lr.ph327:                                        ; preds = %73, %._crit_edge
  %80 = phi i32 [ %98, %._crit_edge ], [ %76, %73 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %73 ]
  %.0216325 = phi ptr [ %.1217.lcssa, %._crit_edge ], [ %18, %73 ]
  %.0220324 = phi i32 [ %83, %._crit_edge ], [ 2, %73 ]
  %81 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 %indvars.iv
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %spec.select275 = tail call i32 @llvm.smin.i32(i32 %82, i32 %.0220324)
  %83 = sub nsw i32 %.0220324, %spec.select275
  %84 = icmp sgt i32 %spec.select275, 0
  br i1 %84, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph327
  %.0216325400 = ptrtoint ptr %.0216325 to i64
  %85 = getelementptr inbounds [2 x ptr], ptr %15, i64 0, i64 %indvars.iv
  %86 = load ptr, ptr %85, align 8, !tbaa !9
  %87 = add nsw i32 %spec.select275, -1
  %88 = zext nneg i32 %87 to i64
  %scevgep = getelementptr i8, ptr %.0216325, i64 %88
  %89 = zext nneg i32 %spec.select275 to i64
  %min.iters.check = icmp ult i32 %spec.select275, 32
  %90 = ptrtoint ptr %86 to i64
  %91 = sub i64 %.0216325400, %90
  %diff.check = icmp ult i64 %91, 32
  %or.cond431 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond431, label %.lr.ph.preheader437, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %89, 2147483616
  %ind.end = getelementptr i8, ptr %.0216325, i64 %n.vec
  %ind.end401 = getelementptr i8, ptr %86, i64 %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %next.gep = getelementptr i8, ptr %.0216325, i64 %index
  %next.gep404 = getelementptr i8, ptr %86, i64 %index
  %92 = getelementptr i8, ptr %next.gep404, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep404, align 1, !tbaa !11
  %wide.load406 = load <16 x i8>, ptr %92, align 1, !tbaa !11
  %93 = getelementptr i8, ptr %next.gep, i64 16
  store <16 x i8> %wide.load, ptr %next.gep, align 1, !tbaa !11
  store <16 x i8> %wide.load406, ptr %93, align 1, !tbaa !11
  %index.next = add nuw i64 %index, 32
  %94 = icmp eq i64 %index.next, %n.vec
  br i1 %94, label %middle.block, label %vector.body, !llvm.loop !12

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %89
  br i1 %cmp.n, label %._crit_edge.loopexit, label %.lr.ph.preheader437

.lr.ph.preheader437:                              ; preds = %middle.block, %.lr.ph.preheader
  %.1217322.ph = phi ptr [ %.0216325, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.0219321.ph = phi ptr [ %86, %.lr.ph.preheader ], [ %ind.end401, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader437, %.lr.ph
  %.1217322 = phi ptr [ %97, %.lr.ph ], [ %.1217322.ph, %.lr.ph.preheader437 ]
  %.0219321 = phi ptr [ %95, %.lr.ph ], [ %.0219321.ph, %.lr.ph.preheader437 ]
  %95 = getelementptr inbounds i8, ptr %.0219321, i64 1
  %96 = load i8, ptr %.0219321, align 1, !tbaa !11
  %97 = getelementptr inbounds i8, ptr %.1217322, i64 1
  store i8 %96, ptr %.1217322, align 1, !tbaa !11
  %exitcond.not = icmp eq ptr %.1217322, %scevgep
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !16

._crit_edge.loopexit:                             ; preds = %.lr.ph, %middle.block
  %.lcssa398 = phi ptr [ %ind.end, %middle.block ], [ %97, %.lr.ph ]
  %.pre = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph327
  %98 = phi i32 [ %80, %.lr.ph327 ], [ %.pre, %._crit_edge.loopexit ]
  %.1217.lcssa = phi ptr [ %.0216325, %.lr.ph327 ], [ %.lcssa398, %._crit_edge.loopexit ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %99 = sext i32 %98 to i64
  %100 = icmp slt i64 %indvars.iv.next, %99
  br i1 %100, label %.lr.ph327, label %.preheader319, !llvm.loop !17

.thread285:                                       ; preds = %.preheader319, %.lr.ph332.preheader
  %101 = call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 2) #5
  %102 = call i32 @llvm.smin.i32(i32 %101, i32 64)
  %103 = mul nsw i32 %102, %.0227283
  %104 = add nsw i32 %103, 4160
  %.pr289.pr.pr.pre = load i32, ptr %13, align 4, !tbaa !5
  %105 = sitofp i32 %104 to double
  store double %105, ptr %11, align 8, !tbaa !18
  %.not264 = icmp eq i32 %.pr289.pr.pr.pre, 0
  br i1 %.not264, label %109, label %.thread290

.thread290.sink.split:                            ; preds = %65, %62, %59, %56, %52, %49, %46, %44, %39
  %.sink = phi i32 [ -1, %39 ], [ -2, %44 ], [ -3, %46 ], [ -4, %49 ], [ -5, %52 ], [ -6, %56 ], [ -8, %59 ], [ -11, %62 ], [ -13, %65 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  br label %.thread290

.thread290:                                       ; preds = %.thread290.sink.split, %68, %.thread285
  %106 = phi i32 [ %.pr289.pr.pr.pre, %.thread285 ], [ %.pr, %68 ], [ %.sink, %.thread290.sink.split ]
  %107 = sub nsw i32 0, %106
  store i32 %107, ptr %16, align 4, !tbaa !5
  %108 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %16, i32 noundef 6) #5
  br label %208

.sink.split:                                      ; preds = %70
  store double 1.000000e+00, ptr %11, align 8, !tbaa !18
  br label %109

109:                                              ; preds = %.sink.split, %.thread285
  %.0225315 = phi i32 [ %104, %.thread285 ], [ 1, %.sink.split ]
  %.0229314 = phi i32 [ %102, %.thread285 ], [ undef, %.sink.split ]
  br i1 %35, label %208, label %110

110:                                              ; preds = %109
  %111 = load i32, ptr %2, align 4, !tbaa !5
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %116, label %113

113:                                              ; preds = %110
  %114 = load i32, ptr %3, align 4, !tbaa !5
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %116, label %117

116:                                              ; preds = %113, %110
  store double 1.000000e+00, ptr %11, align 8, !tbaa !18
  br label %208

117:                                              ; preds = %113
  store i32 %.0227283, ptr %23, align 4, !tbaa !5
  %118 = icmp sgt i32 %.0229314, 1
  br i1 %118, label %119, label %.thread300

119:                                              ; preds = %117
  %120 = load i32, ptr %4, align 4, !tbaa !5
  %121 = icmp slt i32 %.0229314, %120
  br i1 %121, label %122, label %.thread296

122:                                              ; preds = %119
  %123 = load i32, ptr %12, align 4, !tbaa !5
  %124 = mul nuw nsw i32 %.0229314, %.0227283
  %125 = add nuw nsw i32 %124, 4160
  %126 = icmp slt i32 %123, %125
  br i1 %126, label %127, label %.thread296

127:                                              ; preds = %122
  %128 = add nsw i32 %123, -4160
  %129 = sdiv i32 %128, %.0227283
  store i32 1, ptr %17, align 4, !tbaa !5
  store ptr %0, ptr %15, align 16, !tbaa !9
  %130 = getelementptr inbounds i8, ptr %17, i64 4
  store i32 1, ptr %130, align 4, !tbaa !5
  %131 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %1, ptr %131, align 8, !tbaa !9
  %132 = load i32, ptr @c__2, align 4, !tbaa !5
  %133 = icmp sgt i32 %132, 0
  br i1 %133, label %.lr.ph345, label %.lr.ph350.preheader

.preheader:                                       ; preds = %._crit_edge339
  %134 = icmp sgt i32 %139, 0
  br i1 %134, label %.lr.ph350.preheader, label %._crit_edge351

.lr.ph350.preheader:                              ; preds = %127, %.preheader
  %.0.lcssa388 = phi ptr [ %.1.lcssa, %.preheader ], [ %18, %127 ]
  %.0211.lcssa387 = phi i32 [ %139, %.preheader ], [ 2, %127 ]
  %135 = zext nneg i32 %.0211.lcssa387 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0.lcssa388, i8 32, i64 %135, i1 false), !tbaa !11
  br label %._crit_edge351

.lr.ph345:                                        ; preds = %127, %._crit_edge339
  %136 = phi i32 [ %154, %._crit_edge339 ], [ %132, %127 ]
  %indvars.iv368 = phi i64 [ %indvars.iv.next369, %._crit_edge339 ], [ 0, %127 ]
  %.0343 = phi ptr [ %.1.lcssa, %._crit_edge339 ], [ %18, %127 ]
  %.0211342 = phi i32 [ %139, %._crit_edge339 ], [ 2, %127 ]
  %137 = getelementptr inbounds [2 x i32], ptr %17, i64 0, i64 %indvars.iv368
  %138 = load i32, ptr %137, align 4, !tbaa !5
  %spec.select276 = call i32 @llvm.smin.i32(i32 %138, i32 %.0211342)
  %139 = sub nsw i32 %.0211342, %spec.select276
  %140 = icmp sgt i32 %spec.select276, 0
  br i1 %140, label %.lr.ph338.preheader, label %._crit_edge339

.lr.ph338.preheader:                              ; preds = %.lr.ph345
  %.0343408 = ptrtoint ptr %.0343 to i64
  %141 = getelementptr inbounds [2 x ptr], ptr %15, i64 0, i64 %indvars.iv368
  %142 = load ptr, ptr %141, align 8, !tbaa !9
  %143 = add nsw i32 %spec.select276, -1
  %144 = zext nneg i32 %143 to i64
  %scevgep366 = getelementptr i8, ptr %.0343, i64 %144
  %145 = zext nneg i32 %spec.select276 to i64
  %min.iters.check412 = icmp ult i32 %spec.select276, 32
  %146 = ptrtoint ptr %142 to i64
  %147 = sub i64 %.0343408, %146
  %diff.check409 = icmp ult i64 %147, 32
  %or.cond433 = select i1 %min.iters.check412, i1 true, i1 %diff.check409
  br i1 %or.cond433, label %.lr.ph338.preheader434, label %vector.ph413

vector.ph413:                                     ; preds = %.lr.ph338.preheader
  %n.vec415 = and i64 %145, 2147483616
  %ind.end416 = getelementptr i8, ptr %.0343, i64 %n.vec415
  %ind.end418 = getelementptr i8, ptr %142, i64 %n.vec415
  br label %vector.body420

vector.body420:                                   ; preds = %vector.body420, %vector.ph413
  %index421 = phi i64 [ 0, %vector.ph413 ], [ %index.next428, %vector.body420 ]
  %next.gep422 = getelementptr i8, ptr %.0343, i64 %index421
  %next.gep424 = getelementptr i8, ptr %142, i64 %index421
  %148 = getelementptr i8, ptr %next.gep424, i64 16
  %wide.load426 = load <16 x i8>, ptr %next.gep424, align 1, !tbaa !11
  %wide.load427 = load <16 x i8>, ptr %148, align 1, !tbaa !11
  %149 = getelementptr i8, ptr %next.gep422, i64 16
  store <16 x i8> %wide.load426, ptr %next.gep422, align 1, !tbaa !11
  store <16 x i8> %wide.load427, ptr %149, align 1, !tbaa !11
  %index.next428 = add nuw i64 %index421, 32
  %150 = icmp eq i64 %index.next428, %n.vec415
  br i1 %150, label %middle.block410, label %vector.body420, !llvm.loop !20

middle.block410:                                  ; preds = %vector.body420
  %cmp.n429 = icmp eq i64 %n.vec415, %145
  br i1 %cmp.n429, label %._crit_edge339.loopexit, label %.lr.ph338.preheader434

.lr.ph338.preheader434:                           ; preds = %middle.block410, %.lr.ph338.preheader
  %.1336.ph = phi ptr [ %.0343, %.lr.ph338.preheader ], [ %ind.end416, %middle.block410 ]
  %.0210335.ph = phi ptr [ %142, %.lr.ph338.preheader ], [ %ind.end418, %middle.block410 ]
  br label %.lr.ph338

.lr.ph338:                                        ; preds = %.lr.ph338.preheader434, %.lr.ph338
  %.1336 = phi ptr [ %153, %.lr.ph338 ], [ %.1336.ph, %.lr.ph338.preheader434 ]
  %.0210335 = phi ptr [ %151, %.lr.ph338 ], [ %.0210335.ph, %.lr.ph338.preheader434 ]
  %151 = getelementptr inbounds i8, ptr %.0210335, i64 1
  %152 = load i8, ptr %.0210335, align 1, !tbaa !11
  %153 = getelementptr inbounds i8, ptr %.1336, i64 1
  store i8 %152, ptr %.1336, align 1, !tbaa !11
  %exitcond367.not = icmp eq ptr %.1336, %scevgep366
  br i1 %exitcond367.not, label %._crit_edge339.loopexit, label %.lr.ph338, !llvm.loop !21

._crit_edge339.loopexit:                          ; preds = %.lr.ph338, %middle.block410
  %.lcssa = phi ptr [ %ind.end416, %middle.block410 ], [ %153, %.lr.ph338 ]
  %.pre375 = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge339

._crit_edge339:                                   ; preds = %._crit_edge339.loopexit, %.lr.ph345
  %154 = phi i32 [ %136, %.lr.ph345 ], [ %.pre375, %._crit_edge339.loopexit ]
  %.1.lcssa = phi ptr [ %.0343, %.lr.ph345 ], [ %.lcssa, %._crit_edge339.loopexit ]
  %indvars.iv.next369 = add nuw nsw i64 %indvars.iv368, 1
  %155 = sext i32 %154 to i64
  %156 = icmp slt i64 %indvars.iv.next369, %155
  br i1 %156, label %.lr.ph345, label %.preheader, !llvm.loop !22

._crit_edge351:                                   ; preds = %.lr.ph350.preheader, %.preheader
  %157 = call i32 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 2) #5
  %158 = call i32 @llvm.smax.i32(i32 %157, i32 2)
  %159 = icmp slt i32 %129, %158
  br i1 %159, label %.thread300, label %._crit_edge351..thread296_crit_edge

._crit_edge351..thread296_crit_edge:              ; preds = %._crit_edge351
  %.pre376 = load i32, ptr %4, align 4, !tbaa !5
  br label %.thread296

.thread296:                                       ; preds = %._crit_edge351..thread296_crit_edge, %119, %122
  %160 = phi i32 [ %.pre376, %._crit_edge351..thread296_crit_edge ], [ %120, %122 ], [ %120, %119 ]
  %.2231299 = phi i32 [ %129, %._crit_edge351..thread296_crit_edge ], [ %.0229314, %122 ], [ %.0229314, %119 ]
  %.fr267 = freeze i32 %160
  %.not266 = icmp slt i32 %.2231299, %.fr267
  br i1 %.not266, label %161, label %.thread300

.thread300:                                       ; preds = %117, %.thread296, %._crit_edge351
  call void @dormr3_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %19) #5
  br label %.loopexit

161:                                              ; preds = %.thread296
  %162 = mul nsw i32 %.2231299, %.0227283
  %163 = icmp ne i32 %33, 0
  %or.cond277 = xor i1 %.not, %163
  br i1 %or.cond277, label %169, label %164

164:                                              ; preds = %161
  %165 = add nsw i32 %.fr267, -1
  %166 = srem i32 %165, %.2231299
  %167 = sub i32 %.fr267, %166
  %168 = sub nsw i32 0, %.2231299
  br label %169

169:                                              ; preds = %161, %164
  %.0241 = phi i32 [ %167, %164 ], [ 1, %161 ]
  %170 = phi i32 [ 1, %164 ], [ %.fr267, %161 ]
  %.0239 = phi i32 [ %168, %164 ], [ %.2231299, %161 ]
  br i1 %.not, label %171, label %173

171:                                              ; preds = %169
  %172 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %172, ptr %22, align 4, !tbaa !5
  br label %175

173:                                              ; preds = %169
  %174 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %174, ptr %21, align 4, !tbaa !5
  br label %175

175:                                              ; preds = %173, %171
  %.sink395 = phi ptr [ %3, %173 ], [ %2, %171 ]
  %176 = load i32, ptr %.sink395, align 4, !tbaa !5
  %177 = load i32, ptr %5, align 4, !tbaa !5
  %. = select i1 %163, i8 84, i8 78
  store i8 %., ptr %24, align 1, !tbaa !11
  %178 = icmp slt i32 %.0239, 0
  %179 = icmp sge i32 %.0241, %170
  %180 = icmp sle i32 %.0241, %170
  %.in353 = select i1 %178, i1 %179, i1 %180
  br i1 %.in353, label %.lr.ph359, label %.loopexit

.lr.ph359:                                        ; preds = %175
  %181 = sub nsw i32 %176, %177
  %.0235 = add nsw i32 %181, 1
  %182 = mul nsw i32 %.0235, %25
  %183 = sext i32 %162 to i64
  %gep = getelementptr double, ptr %11, i64 %183
  %184 = sext i32 %.0241 to i64
  %185 = sext i32 %.0239 to i64
  %186 = sext i32 %182 to i64
  %invariant.gep = getelementptr double, ptr %27, i64 %186
  %187 = sext i32 %170 to i64
  br label %188

188:                                              ; preds = %.lr.ph359, %200
  %indvars.iv371 = phi i64 [ %184, %.lr.ph359 ], [ %indvars.iv.next372, %200 ]
  %.1233356 = phi i32 [ 1, %.lr.ph359 ], [ %.2234, %200 ]
  %.1237355 = phi i32 [ 1, %.lr.ph359 ], [ %.2238, %200 ]
  %189 = load i32, ptr %4, align 4, !tbaa !5
  %190 = trunc nsw i64 %indvars.iv371 to i32
  %reass.sub = sub i32 %189, %190
  %191 = add i32 %reass.sub, 1
  %192 = call i32 @llvm.smin.i32(i32 %.2231299, i32 %191)
  store i32 %192, ptr %20, align 4, !tbaa !5
  %gep392 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv371
  %193 = getelementptr inbounds double, ptr %28, i64 %indvars.iv371
  call void @dlarzt_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %20, ptr noundef %gep392, ptr noundef nonnull %7, ptr noundef nonnull %193, ptr noundef %gep, ptr noundef nonnull @c__65) #5
  br i1 %.not, label %194, label %197

194:                                              ; preds = %188
  %195 = load i32, ptr %2, align 4, !tbaa !5
  %reass.sub361 = sub i32 %195, %190
  %196 = add i32 %reass.sub361, 1
  store i32 %196, ptr %21, align 4, !tbaa !5
  br label %200

197:                                              ; preds = %188
  %198 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub360 = sub i32 %198, %190
  %199 = add i32 %reass.sub360, 1
  store i32 %199, ptr %22, align 4, !tbaa !5
  br label %200

200:                                              ; preds = %197, %194
  %.2238 = phi i32 [ %190, %194 ], [ %.1237355, %197 ]
  %.2234 = phi i32 [ %.1233356, %194 ], [ %190, %197 ]
  %201 = mul nsw i32 %.2234, %29
  %202 = add nsw i32 %201, %.2238
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds double, ptr %31, i64 %203
  call void @dlarzb_(ptr noundef %0, ptr noundef nonnull %24, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef nonnull %5, ptr noundef %gep392, ptr noundef nonnull %7, ptr noundef %gep, ptr noundef nonnull @c__65, ptr noundef %204, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %23) #5
  %indvars.iv.next372 = add nsw i64 %indvars.iv371, %185
  %205 = icmp sge i64 %indvars.iv.next372, %187
  %206 = icmp sle i64 %indvars.iv.next372, %187
  %.in = select i1 %178, i1 %205, i1 %206
  br i1 %.in, label %188, label %.loopexit, !llvm.loop !23

.loopexit:                                        ; preds = %200, %175, %.thread300
  %207 = sitofp i32 %.0225315 to double
  store double %207, ptr %11, align 8, !tbaa !18
  br label %208

208:                                              ; preds = %109, %.loopexit, %116, %.thread290
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  ret void
}

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

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

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

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

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

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

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

declare void @dlarzb_(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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #3

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

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

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

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

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

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


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