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

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

103:                                              ; preds = %13
  %104 = load ptr, ptr %16, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  store i32 %105, ptr %49, align 4, !tbaa !9
  %106 = load ptr, ptr %17, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = icmp sge i32 1, %107
  br i1 %108, label %109, label %110

109:                                              ; preds = %103
  br label %113

110:                                              ; preds = %103
  %111 = load ptr, ptr %17, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  br label %113

113:                                              ; preds = %110, %109
  %114 = phi i32 [ 1, %109 ], [ %112, %110 ]
  store i32 %114, ptr %50, align 4, !tbaa !9
  br label %127

115:                                              ; preds = %13
  %116 = load ptr, ptr %17, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  store i32 %117, ptr %49, align 4, !tbaa !9
  %118 = load ptr, ptr %16, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = icmp sge i32 1, %119
  br i1 %120, label %121, label %122

121:                                              ; preds = %115
  br label %125

122:                                              ; preds = %115
  %123 = load ptr, ptr %16, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %122, %121
  %126 = phi i32 [ 1, %121 ], [ %124, %122 ]
  store i32 %126, ptr %50, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %125, %113
  %128 = load i32, ptr %38, align 4, !tbaa !9
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %136, label %130

130:                                              ; preds = %127
  %131 = load ptr, ptr %14, align 8, !tbaa !5
  %132 = call i32 @lsame_(ptr noundef %131, ptr noundef @.str.2)
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %136, label %134

134:                                              ; preds = %130
  %135 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -1, ptr %135, align 4, !tbaa !9
  br label %215

136:                                              ; preds = %130, %127
  %137 = load i32, ptr %51, align 4, !tbaa !9
  %138 = icmp ne i32 %137, 0
  br i1 %138, label %145, label %139

139:                                              ; preds = %136
  %140 = load ptr, ptr %15, align 8, !tbaa !5
  %141 = call i32 @lsame_(ptr noundef %140, ptr noundef @.str.3)
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %145, label %143

143:                                              ; preds = %139
  %144 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -2, ptr %144, align 4, !tbaa !9
  br label %214

145:                                              ; preds = %139, %136
  %146 = load ptr, ptr %16, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = icmp slt i32 %147, 0
  br i1 %148, label %149, label %151

149:                                              ; preds = %145
  %150 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -3, ptr %150, align 4, !tbaa !9
  br label %213

151:                                              ; preds = %145
  %152 = load ptr, ptr %17, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = icmp slt i32 %153, 0
  br i1 %154, label %155, label %157

155:                                              ; preds = %151
  %156 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -4, ptr %156, align 4, !tbaa !9
  br label %212

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

161:                                              ; preds = %157
  %162 = load ptr, ptr %18, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = load i32, ptr %49, align 4, !tbaa !9
  %165 = icmp sgt i32 %163, %164
  br i1 %165, label %166, label %168

166:                                              ; preds = %161, %157
  %167 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -5, ptr %167, align 4, !tbaa !9
  br label %211

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

174:                                              ; preds = %168
  br label %178

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

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

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

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

189:                                              ; preds = %183
  br label %193

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

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

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

198:                                              ; preds = %193
  %199 = load ptr, ptr %25, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = load i32, ptr %50, align 4, !tbaa !9
  %202 = icmp slt i32 %200, %201
  br i1 %202, label %203, label %208

203:                                              ; preds = %198
  %204 = load i32, ptr %55, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %208, label %206

206:                                              ; preds = %203
  %207 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -12, ptr %207, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %206, %203, %198
  br label %209

209:                                              ; preds = %208, %196
  br label %210

210:                                              ; preds = %209, %181
  br label %211

211:                                              ; preds = %210, %166
  br label %212

212:                                              ; preds = %211, %155
  br label %213

213:                                              ; preds = %212, %149
  br label %214

214:                                              ; preds = %213, %143
  br label %215

215:                                              ; preds = %214, %134
  %216 = load ptr, ptr %26, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %307

219:                                              ; preds = %215
  %220 = load ptr, ptr %16, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = icmp eq i32 %221, 0
  br i1 %222, label %227, label %223

223:                                              ; preds = %219
  %224 = load ptr, ptr %17, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = icmp eq i32 %225, 0
  br i1 %226, label %227, label %228

227:                                              ; preds = %223, %219
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %302

228:                                              ; preds = %223
  %229 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 1, ptr %229, align 4, !tbaa !9
  %230 = load ptr, ptr %14, align 8, !tbaa !5
  %231 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 0
  store ptr %230, ptr %231, align 16, !tbaa !5
  %232 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 1, ptr %232, align 4, !tbaa !9
  %233 = load ptr, ptr %15, align 8, !tbaa !5
  %234 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 1
  store ptr %233, ptr %234, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  store i32 2, ptr %59, align 4, !tbaa !9
  %235 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  store ptr %235, ptr %61, align 8, !tbaa !5
  store i32 0, ptr %57, align 4, !tbaa !9
  br label %236

236:                                              ; preds = %272, %228
  %237 = load i32, ptr %57, align 4, !tbaa !9
  %238 = load i32, ptr @c__2, align 4, !tbaa !9
  %239 = icmp slt i32 %237, %238
  br i1 %239, label %240, label %275

240:                                              ; preds = %236
  %241 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %241, ptr %58, align 4, !tbaa !9
  %242 = load i32, ptr %57, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %243
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = load i32, ptr %58, align 4, !tbaa !9
  %247 = icmp slt i32 %245, %246
  br i1 %247, label %248, label %253

248:                                              ; preds = %240
  %249 = load i32, ptr %57, align 4, !tbaa !9
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %250
  %252 = load i32, ptr %251, align 4, !tbaa !9
  store i32 %252, ptr %58, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %248, %240
  %254 = load i32, ptr %58, align 4, !tbaa !9
  %255 = load i32, ptr %59, align 4, !tbaa !9
  %256 = sub nsw i32 %255, %254
  store i32 %256, ptr %59, align 4, !tbaa !9
  %257 = load i32, ptr %57, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %258
  %260 = load ptr, ptr %259, align 8, !tbaa !5
  store ptr %260, ptr %60, align 8, !tbaa !5
  br label %261

261:                                              ; preds = %265, %253
  %262 = load i32, ptr %58, align 4, !tbaa !9
  %263 = add nsw i32 %262, -1
  store i32 %263, ptr %58, align 4, !tbaa !9
  %264 = icmp sge i32 %263, 0
  br i1 %264, label %265, label %271

265:                                              ; preds = %261
  %266 = load ptr, ptr %60, align 8, !tbaa !5
  %267 = getelementptr inbounds i8, ptr %266, i32 1
  store ptr %267, ptr %60, align 8, !tbaa !5
  %268 = load i8, ptr %266, align 1, !tbaa !11
  %269 = load ptr, ptr %61, align 8, !tbaa !5
  %270 = getelementptr inbounds i8, ptr %269, i32 1
  store ptr %270, ptr %61, align 8, !tbaa !5
  store i8 %268, ptr %269, align 1, !tbaa !11
  br label %261, !llvm.loop !12

271:                                              ; preds = %261
  br label %272

272:                                              ; preds = %271
  %273 = load i32, ptr %57, align 4, !tbaa !9
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr %57, align 4, !tbaa !9
  br label %236, !llvm.loop !14

275:                                              ; preds = %236
  br label %276

276:                                              ; preds = %280, %275
  %277 = load i32, ptr %59, align 4, !tbaa !9
  %278 = add nsw i32 %277, -1
  store i32 %278, ptr %59, align 4, !tbaa !9
  %279 = icmp sge i32 %278, 0
  br i1 %279, label %280, label %283

280:                                              ; preds = %276
  %281 = load ptr, ptr %61, align 8, !tbaa !5
  %282 = getelementptr inbounds i8, ptr %281, i32 1
  store ptr %282, ptr %61, align 8, !tbaa !5
  store i8 32, ptr %281, align 1, !tbaa !11
  br label %276, !llvm.loop !15

283:                                              ; preds = %276
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  store i32 64, ptr %32, align 4, !tbaa !9
  %284 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  %285 = load ptr, ptr %16, align 8, !tbaa !5
  %286 = load ptr, ptr %17, align 8, !tbaa !5
  %287 = load ptr, ptr %18, align 8, !tbaa !5
  %288 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %284, ptr noundef %285, ptr noundef %286, ptr noundef %287, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %288, ptr %33, align 4, !tbaa !9
  %289 = load i32, ptr %32, align 4, !tbaa !9
  %290 = load i32, ptr %33, align 4, !tbaa !9
  %291 = icmp sle i32 %289, %290
  br i1 %291, label %292, label %294

292:                                              ; preds = %283
  %293 = load i32, ptr %32, align 4, !tbaa !9
  br label %296

294:                                              ; preds = %283
  %295 = load i32, ptr %33, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %294, %292
  %297 = phi i32 [ %293, %292 ], [ %295, %294 ]
  store i32 %297, ptr %46, align 4, !tbaa !9
  %298 = load i32, ptr %50, align 4, !tbaa !9
  %299 = load i32, ptr %46, align 4, !tbaa !9
  %300 = mul nsw i32 %298, %299
  %301 = add nsw i32 %300, 4160
  store i32 %301, ptr %54, align 4, !tbaa !9
  br label %302

302:                                              ; preds = %296, %227
  %303 = load i32, ptr %54, align 4, !tbaa !9
  %304 = sitofp i32 %303 to double
  %305 = load ptr, ptr %24, align 8, !tbaa !5
  %306 = getelementptr inbounds double, ptr %305, i64 1
  store double %304, ptr %306, align 8, !tbaa !16
  br label %307

307:                                              ; preds = %302, %215
  %308 = load ptr, ptr %26, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = icmp ne i32 %309, 0
  br i1 %310, label %311, label %316

311:                                              ; preds = %307
  %312 = load ptr, ptr %26, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = sub nsw i32 0, %313
  store i32 %314, ptr %32, align 4, !tbaa !9
  %315 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %32, i32 noundef 6)
  store i32 1, ptr %62, align 4
  br label %614

316:                                              ; preds = %307
  %317 = load i32, ptr %55, align 4, !tbaa !9
  %318 = icmp ne i32 %317, 0
  br i1 %318, label %319, label %320

319:                                              ; preds = %316
  store i32 1, ptr %62, align 4
  br label %614

320:                                              ; preds = %316
  br label %321

321:                                              ; preds = %320
  %322 = load ptr, ptr %16, align 8, !tbaa !5
  %323 = load i32, ptr %322, align 4, !tbaa !9
  %324 = icmp eq i32 %323, 0
  br i1 %324, label %329, label %325

325:                                              ; preds = %321
  %326 = load ptr, ptr %17, align 8, !tbaa !5
  %327 = load i32, ptr %326, align 4, !tbaa !9
  %328 = icmp eq i32 %327, 0
  br i1 %328, label %329, label %330

329:                                              ; preds = %325, %321
  store i32 1, ptr %62, align 4
  br label %614

330:                                              ; preds = %325
  store i32 2, ptr %40, align 4, !tbaa !9
  %331 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %331, ptr %52, align 4, !tbaa !9
  %332 = load i32, ptr %46, align 4, !tbaa !9
  %333 = icmp sgt i32 %332, 1
  br i1 %333, label %334, label %423

334:                                              ; preds = %330
  %335 = load i32, ptr %46, align 4, !tbaa !9
  %336 = load ptr, ptr %18, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = icmp slt i32 %335, %337
  br i1 %338, label %339, label %423

339:                                              ; preds = %334
  %340 = load ptr, ptr %25, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  %342 = load i32, ptr %50, align 4, !tbaa !9
  %343 = load i32, ptr %46, align 4, !tbaa !9
  %344 = mul nsw i32 %342, %343
  %345 = add nsw i32 %344, 4160
  %346 = icmp slt i32 %341, %345
  br i1 %346, label %347, label %422

347:                                              ; preds = %339
  %348 = load ptr, ptr %25, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = sub nsw i32 %349, 4160
  %351 = load i32, ptr %52, align 4, !tbaa !9
  %352 = sdiv i32 %350, %351
  store i32 %352, ptr %46, align 4, !tbaa !9
  %353 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 1, ptr %353, align 4, !tbaa !9
  %354 = load ptr, ptr %14, align 8, !tbaa !5
  %355 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 0
  store ptr %354, ptr %355, align 16, !tbaa !5
  %356 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 1, ptr %356, align 4, !tbaa !9
  %357 = load ptr, ptr %15, align 8, !tbaa !5
  %358 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 1
  store ptr %357, ptr %358, align 8, !tbaa !5
  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 4, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #3
  store i32 2, ptr %65, align 4, !tbaa !9
  %359 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  store ptr %359, ptr %67, align 8, !tbaa !5
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %360

360:                                              ; preds = %396, %347
  %361 = load i32, ptr %63, align 4, !tbaa !9
  %362 = load i32, ptr @c__2, align 4, !tbaa !9
  %363 = icmp slt i32 %361, %362
  br i1 %363, label %364, label %399

364:                                              ; preds = %360
  %365 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %365, ptr %64, align 4, !tbaa !9
  %366 = load i32, ptr %63, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %367
  %369 = load i32, ptr %368, align 4, !tbaa !9
  %370 = load i32, ptr %64, align 4, !tbaa !9
  %371 = icmp slt i32 %369, %370
  br i1 %371, label %372, label %377

372:                                              ; preds = %364
  %373 = load i32, ptr %63, align 4, !tbaa !9
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %374
  %376 = load i32, ptr %375, align 4, !tbaa !9
  store i32 %376, ptr %64, align 4, !tbaa !9
  br label %377

377:                                              ; preds = %372, %364
  %378 = load i32, ptr %64, align 4, !tbaa !9
  %379 = load i32, ptr %65, align 4, !tbaa !9
  %380 = sub nsw i32 %379, %378
  store i32 %380, ptr %65, align 4, !tbaa !9
  %381 = load i32, ptr %63, align 4, !tbaa !9
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %382
  %384 = load ptr, ptr %383, align 8, !tbaa !5
  store ptr %384, ptr %66, align 8, !tbaa !5
  br label %385

385:                                              ; preds = %389, %377
  %386 = load i32, ptr %64, align 4, !tbaa !9
  %387 = add nsw i32 %386, -1
  store i32 %387, ptr %64, align 4, !tbaa !9
  %388 = icmp sge i32 %387, 0
  br i1 %388, label %389, label %395

389:                                              ; preds = %385
  %390 = load ptr, ptr %66, align 8, !tbaa !5
  %391 = getelementptr inbounds i8, ptr %390, i32 1
  store ptr %391, ptr %66, align 8, !tbaa !5
  %392 = load i8, ptr %390, align 1, !tbaa !11
  %393 = load ptr, ptr %67, align 8, !tbaa !5
  %394 = getelementptr inbounds i8, ptr %393, i32 1
  store ptr %394, ptr %67, align 8, !tbaa !5
  store i8 %392, ptr %393, align 1, !tbaa !11
  br label %385, !llvm.loop !18

395:                                              ; preds = %385
  br label %396

396:                                              ; preds = %395
  %397 = load i32, ptr %63, align 4, !tbaa !9
  %398 = add nsw i32 %397, 1
  store i32 %398, ptr %63, align 4, !tbaa !9
  br label %360, !llvm.loop !19

399:                                              ; preds = %360
  br label %400

400:                                              ; preds = %404, %399
  %401 = load i32, ptr %65, align 4, !tbaa !9
  %402 = add nsw i32 %401, -1
  store i32 %402, ptr %65, align 4, !tbaa !9
  %403 = icmp sge i32 %402, 0
  br i1 %403, label %404, label %407

404:                                              ; preds = %400
  %405 = load ptr, ptr %67, align 8, !tbaa !5
  %406 = getelementptr inbounds i8, ptr %405, i32 1
  store ptr %406, ptr %67, align 8, !tbaa !5
  store i8 32, ptr %405, align 1, !tbaa !11
  br label %400, !llvm.loop !20

407:                                              ; preds = %400
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, 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
  store i32 2, ptr %32, align 4, !tbaa !9
  %408 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  %409 = load ptr, ptr %16, align 8, !tbaa !5
  %410 = load ptr, ptr %17, align 8, !tbaa !5
  %411 = load ptr, ptr %18, align 8, !tbaa !5
  %412 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %408, ptr noundef %409, ptr noundef %410, ptr noundef %411, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %412, ptr %33, align 4, !tbaa !9
  %413 = load i32, ptr %32, align 4, !tbaa !9
  %414 = load i32, ptr %33, align 4, !tbaa !9
  %415 = icmp sge i32 %413, %414
  br i1 %415, label %416, label %418

416:                                              ; preds = %407
  %417 = load i32, ptr %32, align 4, !tbaa !9
  br label %420

418:                                              ; preds = %407
  %419 = load i32, ptr %33, align 4, !tbaa !9
  br label %420

420:                                              ; preds = %418, %416
  %421 = phi i32 [ %417, %416 ], [ %419, %418 ]
  store i32 %421, ptr %40, align 4, !tbaa !9
  br label %422

422:                                              ; preds = %420, %339
  br label %423

423:                                              ; preds = %422, %334, %330
  %424 = load i32, ptr %46, align 4, !tbaa !9
  %425 = load i32, ptr %40, align 4, !tbaa !9
  %426 = icmp slt i32 %424, %425
  br i1 %426, label %432, label %427

427:                                              ; preds = %423
  %428 = load i32, ptr %46, align 4, !tbaa !9
  %429 = load ptr, ptr %18, align 8, !tbaa !5
  %430 = load i32, ptr %429, align 4, !tbaa !9
  %431 = icmp sge i32 %428, %430
  br i1 %431, label %432, label %452

432:                                              ; preds = %427, %423
  %433 = load ptr, ptr %14, align 8, !tbaa !5
  %434 = load ptr, ptr %15, align 8, !tbaa !5
  %435 = load ptr, ptr %16, align 8, !tbaa !5
  %436 = load ptr, ptr %17, align 8, !tbaa !5
  %437 = load ptr, ptr %18, align 8, !tbaa !5
  %438 = load ptr, ptr %19, align 8, !tbaa !5
  %439 = load i32, ptr %29, align 4, !tbaa !9
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds double, ptr %438, i64 %440
  %442 = load ptr, ptr %20, align 8, !tbaa !5
  %443 = load ptr, ptr %21, align 8, !tbaa !5
  %444 = getelementptr inbounds double, ptr %443, i64 1
  %445 = load ptr, ptr %22, align 8, !tbaa !5
  %446 = load i32, ptr %31, align 4, !tbaa !9
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds double, ptr %445, i64 %447
  %449 = load ptr, ptr %23, align 8, !tbaa !5
  %450 = load ptr, ptr %24, align 8, !tbaa !5
  %451 = getelementptr inbounds double, ptr %450, i64 1
  call void @dormr2_(ptr noundef %433, ptr noundef %434, ptr noundef %435, ptr noundef %436, ptr noundef %437, ptr noundef %441, ptr noundef %442, ptr noundef %444, ptr noundef %448, ptr noundef %449, ptr noundef %451, ptr noundef %41)
  br label %609

452:                                              ; preds = %427
  %453 = load i32, ptr %50, align 4, !tbaa !9
  %454 = load i32, ptr %46, align 4, !tbaa !9
  %455 = mul nsw i32 %453, %454
  %456 = add nsw i32 %455, 1
  store i32 %456, ptr %56, align 4, !tbaa !9
  %457 = load i32, ptr %38, align 4, !tbaa !9
  %458 = icmp ne i32 %457, 0
  br i1 %458, label %459, label %462

459:                                              ; preds = %452
  %460 = load i32, ptr %51, align 4, !tbaa !9
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %462, label %468

462:                                              ; preds = %459, %452
  %463 = load i32, ptr %38, align 4, !tbaa !9
  %464 = icmp ne i32 %463, 0
  br i1 %464, label %472, label %465

465:                                              ; preds = %462
  %466 = load i32, ptr %51, align 4, !tbaa !9
  %467 = icmp ne i32 %466, 0
  br i1 %467, label %468, label %472

468:                                              ; preds = %465, %459
  store i32 1, ptr %42, align 4, !tbaa !9
  %469 = load ptr, ptr %18, align 8, !tbaa !5
  %470 = load i32, ptr %469, align 4, !tbaa !9
  store i32 %470, ptr %43, align 4, !tbaa !9
  %471 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %471, ptr %44, align 4, !tbaa !9
  br label %483

472:                                              ; preds = %465, %462
  %473 = load ptr, ptr %18, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = sub nsw i32 %474, 1
  %476 = load i32, ptr %46, align 4, !tbaa !9
  %477 = sdiv i32 %475, %476
  %478 = load i32, ptr %46, align 4, !tbaa !9
  %479 = mul nsw i32 %477, %478
  %480 = add nsw i32 %479, 1
  store i32 %480, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  %481 = load i32, ptr %46, align 4, !tbaa !9
  %482 = sub nsw i32 0, %481
  store i32 %482, ptr %44, align 4, !tbaa !9
  br label %483

483:                                              ; preds = %472, %468
  %484 = load i32, ptr %38, align 4, !tbaa !9
  %485 = icmp ne i32 %484, 0
  br i1 %485, label %486, label %489

486:                                              ; preds = %483
  %487 = load ptr, ptr %17, align 8, !tbaa !5
  %488 = load i32, ptr %487, align 4, !tbaa !9
  store i32 %488, ptr %48, align 4, !tbaa !9
  br label %492

489:                                              ; preds = %483
  %490 = load ptr, ptr %16, align 8, !tbaa !5
  %491 = load i32, ptr %490, align 4, !tbaa !9
  store i32 %491, ptr %47, align 4, !tbaa !9
  br label %492

492:                                              ; preds = %489, %486
  %493 = load i32, ptr %51, align 4, !tbaa !9
  %494 = icmp ne i32 %493, 0
  br i1 %494, label %495, label %497

495:                                              ; preds = %492
  %496 = getelementptr inbounds [1 x i8], ptr %53, i64 0, i64 0
  store i8 84, ptr %496, align 1, !tbaa !11
  br label %499

497:                                              ; preds = %492
  %498 = getelementptr inbounds [1 x i8], ptr %53, i64 0, i64 0
  store i8 78, ptr %498, align 1, !tbaa !11
  br label %499

499:                                              ; preds = %497, %495
  %500 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %500, ptr %32, align 4, !tbaa !9
  %501 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %501, ptr %33, align 4, !tbaa !9
  %502 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %502, ptr %39, align 4, !tbaa !9
  br label %503

503:                                              ; preds = %604, %499
  %504 = load i32, ptr %33, align 4, !tbaa !9
  %505 = icmp slt i32 %504, 0
  br i1 %505, label %506, label %511

506:                                              ; preds = %503
  %507 = load i32, ptr %39, align 4, !tbaa !9
  %508 = load i32, ptr %32, align 4, !tbaa !9
  %509 = icmp sge i32 %507, %508
  %510 = zext i1 %509 to i32
  br label %516

511:                                              ; preds = %503
  %512 = load i32, ptr %39, align 4, !tbaa !9
  %513 = load i32, ptr %32, align 4, !tbaa !9
  %514 = icmp sle i32 %512, %513
  %515 = zext i1 %514 to i32
  br label %516

516:                                              ; preds = %511, %506
  %517 = phi i32 [ %510, %506 ], [ %515, %511 ]
  %518 = icmp ne i32 %517, 0
  br i1 %518, label %519, label %608

519:                                              ; preds = %516
  %520 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %520, ptr %35, align 4, !tbaa !9
  %521 = load ptr, ptr %18, align 8, !tbaa !5
  %522 = load i32, ptr %521, align 4, !tbaa !9
  %523 = load i32, ptr %39, align 4, !tbaa !9
  %524 = sub nsw i32 %522, %523
  %525 = add nsw i32 %524, 1
  store i32 %525, ptr %36, align 4, !tbaa !9
  %526 = load i32, ptr %35, align 4, !tbaa !9
  %527 = load i32, ptr %36, align 4, !tbaa !9
  %528 = icmp sle i32 %526, %527
  br i1 %528, label %529, label %531

529:                                              ; preds = %519
  %530 = load i32, ptr %35, align 4, !tbaa !9
  br label %533

531:                                              ; preds = %519
  %532 = load i32, ptr %36, align 4, !tbaa !9
  br label %533

533:                                              ; preds = %531, %529
  %534 = phi i32 [ %530, %529 ], [ %532, %531 ]
  store i32 %534, ptr %45, align 4, !tbaa !9
  %535 = load i32, ptr %49, align 4, !tbaa !9
  %536 = load ptr, ptr %18, align 8, !tbaa !5
  %537 = load i32, ptr %536, align 4, !tbaa !9
  %538 = sub nsw i32 %535, %537
  %539 = load i32, ptr %39, align 4, !tbaa !9
  %540 = add nsw i32 %538, %539
  %541 = load i32, ptr %45, align 4, !tbaa !9
  %542 = add nsw i32 %540, %541
  %543 = sub nsw i32 %542, 1
  store i32 %543, ptr %35, align 4, !tbaa !9
  %544 = load ptr, ptr %19, align 8, !tbaa !5
  %545 = load i32, ptr %39, align 4, !tbaa !9
  %546 = load i32, ptr %28, align 4, !tbaa !9
  %547 = add nsw i32 %545, %546
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds double, ptr %544, i64 %548
  %550 = load ptr, ptr %20, align 8, !tbaa !5
  %551 = load ptr, ptr %21, align 8, !tbaa !5
  %552 = load i32, ptr %39, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %551, i64 %553
  %555 = load ptr, ptr %24, align 8, !tbaa !5
  %556 = load i32, ptr %56, align 4, !tbaa !9
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds double, ptr %555, i64 %557
  call void @dlarft_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %35, ptr noundef %45, ptr noundef %549, ptr noundef %550, ptr noundef %554, ptr noundef %558, ptr noundef @c__65)
  %559 = load i32, ptr %38, align 4, !tbaa !9
  %560 = icmp ne i32 %559, 0
  br i1 %560, label %561, label %572

561:                                              ; preds = %533
  %562 = load ptr, ptr %16, align 8, !tbaa !5
  %563 = load i32, ptr %562, align 4, !tbaa !9
  %564 = load ptr, ptr %18, align 8, !tbaa !5
  %565 = load i32, ptr %564, align 4, !tbaa !9
  %566 = sub nsw i32 %563, %565
  %567 = load i32, ptr %39, align 4, !tbaa !9
  %568 = add nsw i32 %566, %567
  %569 = load i32, ptr %45, align 4, !tbaa !9
  %570 = add nsw i32 %568, %569
  %571 = sub nsw i32 %570, 1
  store i32 %571, ptr %47, align 4, !tbaa !9
  br label %583

572:                                              ; preds = %533
  %573 = load ptr, ptr %17, align 8, !tbaa !5
  %574 = load i32, ptr %573, align 4, !tbaa !9
  %575 = load ptr, ptr %18, align 8, !tbaa !5
  %576 = load i32, ptr %575, align 4, !tbaa !9
  %577 = sub nsw i32 %574, %576
  %578 = load i32, ptr %39, align 4, !tbaa !9
  %579 = add nsw i32 %577, %578
  %580 = load i32, ptr %45, align 4, !tbaa !9
  %581 = add nsw i32 %579, %580
  %582 = sub nsw i32 %581, 1
  store i32 %582, ptr %48, align 4, !tbaa !9
  br label %583

583:                                              ; preds = %572, %561
  %584 = load ptr, ptr %14, align 8, !tbaa !5
  %585 = getelementptr inbounds [1 x i8], ptr %53, i64 0, i64 0
  %586 = load ptr, ptr %19, align 8, !tbaa !5
  %587 = load i32, ptr %39, align 4, !tbaa !9
  %588 = load i32, ptr %28, align 4, !tbaa !9
  %589 = add nsw i32 %587, %588
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds double, ptr %586, i64 %590
  %592 = load ptr, ptr %20, align 8, !tbaa !5
  %593 = load ptr, ptr %24, align 8, !tbaa !5
  %594 = load i32, ptr %56, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds double, ptr %593, i64 %595
  %597 = load ptr, ptr %22, align 8, !tbaa !5
  %598 = load i32, ptr %31, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds double, ptr %597, i64 %599
  %601 = load ptr, ptr %23, align 8, !tbaa !5
  %602 = load ptr, ptr %24, align 8, !tbaa !5
  %603 = getelementptr inbounds double, ptr %602, i64 1
  call void @dlarfb_(ptr noundef %584, ptr noundef %585, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %47, ptr noundef %48, ptr noundef %45, ptr noundef %591, ptr noundef %592, ptr noundef %596, ptr noundef @c__65, ptr noundef %600, ptr noundef %601, ptr noundef %603, ptr noundef %52)
  br label %604

604:                                              ; preds = %583
  %605 = load i32, ptr %33, align 4, !tbaa !9
  %606 = load i32, ptr %39, align 4, !tbaa !9
  %607 = add nsw i32 %606, %605
  store i32 %607, ptr %39, align 4, !tbaa !9
  br label %503, !llvm.loop !21

608:                                              ; preds = %516
  br label %609

609:                                              ; preds = %608, %432
  %610 = load i32, ptr %54, align 4, !tbaa !9
  %611 = sitofp i32 %610 to double
  %612 = load ptr, ptr %24, align 8, !tbaa !5
  %613 = getelementptr inbounds double, ptr %612, i64 1
  store double %611, ptr %613, align 8, !tbaa !16
  store i32 1, ptr %62, align 4
  br label %614

614:                                              ; preds = %609, %329, %319, %311
  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 1, 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 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #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 @dormr2_(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 @dlarft_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dlarfb_(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 [9 x i8], align 1
@.str.6 = 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 @dormrq_(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 readonly %11, ptr nocapture noundef %12) local_unnamed_addr #0 {
  %14 = alloca [2 x ptr], align 16
  %15 = alloca i32, align 4
  %16 = alloca [2 x i32], align 4
  %17 = alloca 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 %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 %6, align 4, !tbaa !5
  %narrow = xor i32 %25, -1
  %26 = sext i32 %narrow to i64
  %27 = getelementptr inbounds double, ptr %5, i64 %26
  %28 = getelementptr inbounds i8, ptr %7, i64 -8
  store i32 0, ptr %12, align 4, !tbaa !5
  %29 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %30 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %31 = load i32, ptr %11, align 4, !tbaa !5
  %32 = icmp eq i32 %31, -1
  %.not = icmp ne i32 %29, 0
  br i1 %.not, label %33, label %36

33:                                               ; preds = %13
  %34 = load i32, ptr %2, align 4, !tbaa !5
  %35 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %35, i32 1)
  br label %40

36:                                               ; preds = %13
  %37 = load i32, ptr %3, align 4, !tbaa !5
  %38 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select239 = tail call i32 @llvm.smax.i32(i32 %38, i32 1)
  %39 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not230 = icmp eq i32 %39, 0
  br i1 %.not230, label %.thread261.sink.split, label %40

40:                                               ; preds = %33, %36
  %.0207252 = phi i32 [ %spec.select239, %36 ], [ %spec.select, %33 ]
  %.0208249 = phi i32 [ %37, %36 ], [ %34, %33 ]
  %.not231 = icmp eq i32 %30, 0
  br i1 %.not231, label %41, label %43

41:                                               ; preds = %40
  %42 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not232 = icmp eq i32 %42, 0
  br i1 %.not232, label %.thread261.sink.split, label %43

43:                                               ; preds = %41, %40
  %44 = load i32, ptr %2, align 4, !tbaa !5
  %45 = icmp slt i32 %44, 0
  br i1 %45, label %.thread261.sink.split, label %46

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

49:                                               ; preds = %46
  %50 = load i32, ptr %4, align 4, !tbaa !5
  %51 = icmp slt i32 %50, 0
  %52 = icmp sgt i32 %50, %.0208249
  %or.cond240 = select i1 %51, i1 true, i1 %52
  br i1 %or.cond240, label %.thread261.sink.split, label %53

53:                                               ; preds = %49
  %54 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select241 = tail call i32 @llvm.umax.i32(i32 %50, i32 1)
  %55 = icmp slt i32 %54, %spec.select241
  br i1 %55, label %.thread261.sink.split, label %56

56:                                               ; preds = %53
  %57 = load i32, ptr %9, align 4, !tbaa !5
  %spec.select242 = tail call i32 @llvm.umax.i32(i32 %44, i32 1)
  %58 = icmp slt i32 %57, %spec.select242
  br i1 %58, label %.thread261.sink.split, label %59

59:                                               ; preds = %56
  %60 = load i32, ptr %11, align 4, !tbaa !5
  %61 = icmp sge i32 %60, %.0207252
  %or.cond = select i1 %61, i1 true, i1 %32
  br i1 %or.cond, label %62, label %.thread261.sink.split

62:                                               ; preds = %59
  %.pr = load i32, ptr %12, align 4, !tbaa !5
  %63 = icmp eq i32 %.pr, 0
  br i1 %63, label %64, label %.thread261

64:                                               ; preds = %62
  %65 = icmp eq i32 %44, 0
  %66 = icmp eq i32 %47, 0
  %or.cond360 = or i1 %65, %66
  br i1 %or.cond360, label %.sink.split, label %67

67:                                               ; preds = %64
  store i32 1, ptr %16, align 4, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %68 = getelementptr inbounds i8, ptr %16, i64 4
  store i32 1, ptr %68, align 4, !tbaa !5
  %69 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %69, align 8, !tbaa !9
  %70 = load i32, ptr @c__2, align 4, !tbaa !5
  %71 = icmp sgt i32 %70, 0
  br i1 %71, label %.lr.ph300, label %.lr.ph305.preheader

.preheader292:                                    ; preds = %._crit_edge
  %72 = icmp sgt i32 %77, 0
  br i1 %72, label %.lr.ph305.preheader, label %.thread254

.lr.ph305.preheader:                              ; preds = %67, %.preheader292
  %.0196.lcssa347 = phi ptr [ %.1197.lcssa, %.preheader292 ], [ %18, %67 ]
  %.0200.lcssa346 = phi i32 [ %77, %.preheader292 ], [ 2, %67 ]
  %73 = zext nneg i32 %.0200.lcssa346 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0196.lcssa347, i8 32, i64 %73, i1 false), !tbaa !11
  br label %.thread254

.lr.ph300:                                        ; preds = %67, %._crit_edge
  %74 = phi i32 [ %92, %._crit_edge ], [ %70, %67 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %67 ]
  %.0196298 = phi ptr [ %.1197.lcssa, %._crit_edge ], [ %18, %67 ]
  %.0200297 = phi i32 [ %77, %._crit_edge ], [ 2, %67 ]
  %75 = getelementptr inbounds [2 x i32], ptr %16, i64 0, i64 %indvars.iv
  %76 = load i32, ptr %75, align 4, !tbaa !5
  %spec.select243 = tail call i32 @llvm.smin.i32(i32 %76, i32 %.0200297)
  %77 = sub nsw i32 %.0200297, %spec.select243
  %78 = icmp sgt i32 %spec.select243, 0
  br i1 %78, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph300
  %.0196298364 = ptrtoint ptr %.0196298 to i64
  %79 = getelementptr inbounds [2 x ptr], ptr %14, i64 0, i64 %indvars.iv
  %80 = load ptr, ptr %79, align 8, !tbaa !9
  %81 = add nsw i32 %spec.select243, -1
  %82 = zext nneg i32 %81 to i64
  %scevgep = getelementptr i8, ptr %.0196298, i64 %82
  %83 = zext nneg i32 %spec.select243 to i64
  %min.iters.check = icmp ult i32 %spec.select243, 32
  %84 = ptrtoint ptr %80 to i64
  %85 = sub i64 %.0196298364, %84
  %diff.check = icmp ult i64 %85, 32
  %or.cond395 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond395, label %.lr.ph.preheader401, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %83, 2147483616
  %ind.end = getelementptr i8, ptr %.0196298, i64 %n.vec
  %ind.end365 = getelementptr i8, ptr %80, 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 %.0196298, i64 %index
  %next.gep368 = getelementptr i8, ptr %80, i64 %index
  %86 = getelementptr i8, ptr %next.gep368, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep368, align 1, !tbaa !11
  %wide.load370 = load <16 x i8>, ptr %86, align 1, !tbaa !11
  %87 = 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.load370, ptr %87, align 1, !tbaa !11
  %index.next = add nuw i64 %index, 32
  %88 = icmp eq i64 %index.next, %n.vec
  br i1 %88, label %middle.block, label %vector.body, !llvm.loop !12

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

.lr.ph.preheader401:                              ; preds = %middle.block, %.lr.ph.preheader
  %.1197295.ph = phi ptr [ %.0196298, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.0199294.ph = phi ptr [ %80, %.lr.ph.preheader ], [ %ind.end365, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader401, %.lr.ph
  %.1197295 = phi ptr [ %91, %.lr.ph ], [ %.1197295.ph, %.lr.ph.preheader401 ]
  %.0199294 = phi ptr [ %89, %.lr.ph ], [ %.0199294.ph, %.lr.ph.preheader401 ]
  %89 = getelementptr inbounds i8, ptr %.0199294, i64 1
  %90 = load i8, ptr %.0199294, align 1, !tbaa !11
  %91 = getelementptr inbounds i8, ptr %.1197295, i64 1
  store i8 %90, ptr %.1197295, align 1, !tbaa !11
  %exitcond.not = icmp eq ptr %.1197295, %scevgep
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !16

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

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph300
  %92 = phi i32 [ %74, %.lr.ph300 ], [ %.pre, %._crit_edge.loopexit ]
  %.1197.lcssa = phi ptr [ %.0196298, %.lr.ph300 ], [ %.lcssa362, %._crit_edge.loopexit ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %93 = sext i32 %92 to i64
  %94 = icmp slt i64 %indvars.iv.next, %93
  br i1 %94, label %.lr.ph300, label %.preheader292, !llvm.loop !17

.thread254:                                       ; preds = %.preheader292, %.lr.ph305.preheader
  %95 = 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
  %96 = call i32 @llvm.smin.i32(i32 %95, i32 64)
  %97 = mul nsw i32 %96, %.0207252
  %98 = add nsw i32 %97, 4160
  %.pr260.pr.pr.pre = load i32, ptr %12, align 4, !tbaa !5
  %99 = sitofp i32 %98 to double
  store double %99, ptr %10, align 8, !tbaa !18
  %.not234 = icmp eq i32 %.pr260.pr.pr.pre, 0
  br i1 %.not234, label %103, label %.thread261

.thread261.sink.split:                            ; preds = %59, %56, %53, %49, %46, %43, %41, %36
  %.sink = phi i32 [ -1, %36 ], [ -2, %41 ], [ -3, %43 ], [ -4, %46 ], [ -5, %49 ], [ -7, %53 ], [ -10, %56 ], [ -12, %59 ]
  store i32 %.sink, ptr %12, align 4, !tbaa !5
  br label %.thread261

.thread261:                                       ; preds = %.thread261.sink.split, %62, %.thread254
  %100 = phi i32 [ %.pr260.pr.pr.pre, %.thread254 ], [ %.pr, %62 ], [ %.sink, %.thread261.sink.split ]
  %101 = sub nsw i32 0, %100
  store i32 %101, ptr %15, align 4, !tbaa !5
  %102 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15, i32 noundef 6) #5
  br label %204

.sink.split:                                      ; preds = %64
  store double 1.000000e+00, ptr %10, align 8, !tbaa !18
  br label %103

103:                                              ; preds = %.sink.split, %.thread254
  %.0205288 = phi i32 [ %98, %.thread254 ], [ 1, %.sink.split ]
  %.0209287 = phi i32 [ %96, %.thread254 ], [ undef, %.sink.split ]
  br i1 %32, label %204, label %104

104:                                              ; preds = %103
  %105 = load i32, ptr %2, align 4, !tbaa !5
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %204, label %107

107:                                              ; preds = %104
  %108 = load i32, ptr %3, align 4, !tbaa !5
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %204, label %110

110:                                              ; preds = %107
  store i32 %.0207252, ptr %23, align 4, !tbaa !5
  %111 = icmp sgt i32 %.0209287, 1
  br i1 %111, label %112, label %.thread272

112:                                              ; preds = %110
  %113 = load i32, ptr %4, align 4, !tbaa !5
  %114 = icmp slt i32 %.0209287, %113
  br i1 %114, label %115, label %.thread268

115:                                              ; preds = %112
  %116 = load i32, ptr %11, align 4, !tbaa !5
  %117 = mul nuw nsw i32 %.0209287, %.0207252
  %118 = add nuw nsw i32 %117, 4160
  %119 = icmp slt i32 %116, %118
  br i1 %119, label %120, label %.thread268

120:                                              ; preds = %115
  %121 = add nsw i32 %116, -4160
  %122 = sdiv i32 %121, %.0207252
  store i32 1, ptr %16, align 4, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %123 = getelementptr inbounds i8, ptr %16, i64 4
  store i32 1, ptr %123, align 4, !tbaa !5
  %124 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %124, align 8, !tbaa !9
  %125 = load i32, ptr @c__2, align 4, !tbaa !5
  %126 = icmp sgt i32 %125, 0
  br i1 %126, label %.lr.ph318, label %.lr.ph323.preheader

.preheader:                                       ; preds = %._crit_edge312
  %127 = icmp sgt i32 %132, 0
  br i1 %127, label %.lr.ph323.preheader, label %._crit_edge324

.lr.ph323.preheader:                              ; preds = %120, %.preheader
  %.0.lcssa355 = phi ptr [ %.1.lcssa, %.preheader ], [ %18, %120 ]
  %.0191.lcssa354 = phi i32 [ %132, %.preheader ], [ 2, %120 ]
  %128 = zext nneg i32 %.0191.lcssa354 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0.lcssa355, i8 32, i64 %128, i1 false), !tbaa !11
  br label %._crit_edge324

.lr.ph318:                                        ; preds = %120, %._crit_edge312
  %129 = phi i32 [ %147, %._crit_edge312 ], [ %125, %120 ]
  %indvars.iv335 = phi i64 [ %indvars.iv.next336, %._crit_edge312 ], [ 0, %120 ]
  %.0316 = phi ptr [ %.1.lcssa, %._crit_edge312 ], [ %18, %120 ]
  %.0191315 = phi i32 [ %132, %._crit_edge312 ], [ 2, %120 ]
  %130 = getelementptr inbounds [2 x i32], ptr %16, i64 0, i64 %indvars.iv335
  %131 = load i32, ptr %130, align 4, !tbaa !5
  %spec.select244 = call i32 @llvm.smin.i32(i32 %131, i32 %.0191315)
  %132 = sub nsw i32 %.0191315, %spec.select244
  %133 = icmp sgt i32 %spec.select244, 0
  br i1 %133, label %.lr.ph311.preheader, label %._crit_edge312

.lr.ph311.preheader:                              ; preds = %.lr.ph318
  %.0316372 = ptrtoint ptr %.0316 to i64
  %134 = getelementptr inbounds [2 x ptr], ptr %14, i64 0, i64 %indvars.iv335
  %135 = load ptr, ptr %134, align 8, !tbaa !9
  %136 = add nsw i32 %spec.select244, -1
  %137 = zext nneg i32 %136 to i64
  %scevgep333 = getelementptr i8, ptr %.0316, i64 %137
  %138 = zext nneg i32 %spec.select244 to i64
  %min.iters.check376 = icmp ult i32 %spec.select244, 32
  %139 = ptrtoint ptr %135 to i64
  %140 = sub i64 %.0316372, %139
  %diff.check373 = icmp ult i64 %140, 32
  %or.cond397 = select i1 %min.iters.check376, i1 true, i1 %diff.check373
  br i1 %or.cond397, label %.lr.ph311.preheader398, label %vector.ph377

vector.ph377:                                     ; preds = %.lr.ph311.preheader
  %n.vec379 = and i64 %138, 2147483616
  %ind.end380 = getelementptr i8, ptr %.0316, i64 %n.vec379
  %ind.end382 = getelementptr i8, ptr %135, i64 %n.vec379
  br label %vector.body384

vector.body384:                                   ; preds = %vector.body384, %vector.ph377
  %index385 = phi i64 [ 0, %vector.ph377 ], [ %index.next392, %vector.body384 ]
  %next.gep386 = getelementptr i8, ptr %.0316, i64 %index385
  %next.gep388 = getelementptr i8, ptr %135, i64 %index385
  %141 = getelementptr i8, ptr %next.gep388, i64 16
  %wide.load390 = load <16 x i8>, ptr %next.gep388, align 1, !tbaa !11
  %wide.load391 = load <16 x i8>, ptr %141, align 1, !tbaa !11
  %142 = getelementptr i8, ptr %next.gep386, i64 16
  store <16 x i8> %wide.load390, ptr %next.gep386, align 1, !tbaa !11
  store <16 x i8> %wide.load391, ptr %142, align 1, !tbaa !11
  %index.next392 = add nuw i64 %index385, 32
  %143 = icmp eq i64 %index.next392, %n.vec379
  br i1 %143, label %middle.block374, label %vector.body384, !llvm.loop !20

middle.block374:                                  ; preds = %vector.body384
  %cmp.n393 = icmp eq i64 %n.vec379, %138
  br i1 %cmp.n393, label %._crit_edge312.loopexit, label %.lr.ph311.preheader398

.lr.ph311.preheader398:                           ; preds = %middle.block374, %.lr.ph311.preheader
  %.1309.ph = phi ptr [ %.0316, %.lr.ph311.preheader ], [ %ind.end380, %middle.block374 ]
  %.0190308.ph = phi ptr [ %135, %.lr.ph311.preheader ], [ %ind.end382, %middle.block374 ]
  br label %.lr.ph311

.lr.ph311:                                        ; preds = %.lr.ph311.preheader398, %.lr.ph311
  %.1309 = phi ptr [ %146, %.lr.ph311 ], [ %.1309.ph, %.lr.ph311.preheader398 ]
  %.0190308 = phi ptr [ %144, %.lr.ph311 ], [ %.0190308.ph, %.lr.ph311.preheader398 ]
  %144 = getelementptr inbounds i8, ptr %.0190308, i64 1
  %145 = load i8, ptr %.0190308, align 1, !tbaa !11
  %146 = getelementptr inbounds i8, ptr %.1309, i64 1
  store i8 %145, ptr %.1309, align 1, !tbaa !11
  %exitcond334.not = icmp eq ptr %.1309, %scevgep333
  br i1 %exitcond334.not, label %._crit_edge312.loopexit, label %.lr.ph311, !llvm.loop !21

._crit_edge312.loopexit:                          ; preds = %.lr.ph311, %middle.block374
  %.lcssa = phi ptr [ %ind.end380, %middle.block374 ], [ %146, %.lr.ph311 ]
  %.pre342 = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge312

._crit_edge312:                                   ; preds = %._crit_edge312.loopexit, %.lr.ph318
  %147 = phi i32 [ %129, %.lr.ph318 ], [ %.pre342, %._crit_edge312.loopexit ]
  %.1.lcssa = phi ptr [ %.0316, %.lr.ph318 ], [ %.lcssa, %._crit_edge312.loopexit ]
  %indvars.iv.next336 = add nuw nsw i64 %indvars.iv335, 1
  %148 = sext i32 %147 to i64
  %149 = icmp slt i64 %indvars.iv.next336, %148
  br i1 %149, label %.lr.ph318, label %.preheader, !llvm.loop !22

._crit_edge324:                                   ; preds = %.lr.ph323.preheader, %.preheader
  %150 = 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
  %151 = call i32 @llvm.smax.i32(i32 %150, i32 2)
  %152 = icmp slt i32 %122, %151
  br i1 %152, label %.thread272, label %._crit_edge324..thread268_crit_edge

._crit_edge324..thread268_crit_edge:              ; preds = %._crit_edge324
  %.pre343 = load i32, ptr %4, align 4, !tbaa !5
  br label %.thread268

.thread268:                                       ; preds = %._crit_edge324..thread268_crit_edge, %112, %115
  %153 = phi i32 [ %.pre343, %._crit_edge324..thread268_crit_edge ], [ %113, %115 ], [ %113, %112 ]
  %.2211271 = phi i32 [ %122, %._crit_edge324..thread268_crit_edge ], [ %.0209287, %115 ], [ %.0209287, %112 ]
  %.fr237 = freeze i32 %153
  %.not236 = icmp slt i32 %.2211271, %.fr237
  br i1 %.not236, label %154, label %.thread272

.thread272:                                       ; preds = %110, %.thread268, %._crit_edge324
  call void @dormr2_(ptr noundef %0, ptr noundef %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 %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %19) #5
  br label %.loopexit

154:                                              ; preds = %.thread268
  %155 = mul nsw i32 %.2211271, %.0207252
  %156 = icmp ne i32 %30, 0
  %or.cond245 = xor i1 %.not, %156
  br i1 %or.cond245, label %162, label %157

157:                                              ; preds = %154
  %158 = add nsw i32 %.fr237, -1
  %159 = srem i32 %158, %.2211271
  %160 = sub i32 %.fr237, %159
  %161 = sub nsw i32 0, %.2211271
  br label %162

162:                                              ; preds = %154, %157
  %.0214 = phi i32 [ %160, %157 ], [ 1, %154 ]
  %163 = phi i32 [ 1, %157 ], [ %.fr237, %154 ]
  %.0212 = phi i32 [ %161, %157 ], [ %.2211271, %154 ]
  br i1 %.not, label %164, label %166

164:                                              ; preds = %162
  %165 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %165, ptr %22, align 4, !tbaa !5
  br label %168

166:                                              ; preds = %162
  %167 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %167, ptr %21, align 4, !tbaa !5
  br label %168

168:                                              ; preds = %166, %164
  %. = select i1 %156, i8 84, i8 78
  store i8 %., ptr %24, align 1, !tbaa !11
  %169 = icmp slt i32 %.0212, 0
  %170 = icmp sge i32 %.0214, %163
  %171 = icmp sle i32 %.0214, %163
  %.in325 = select i1 %169, i1 %170, i1 %171
  br i1 %.in325, label %.lr.ph328, label %.loopexit

.lr.ph328:                                        ; preds = %168
  %172 = add i32 %.0208249, -1
  %173 = sext i32 %155 to i64
  %gep = getelementptr double, ptr %10, i64 %173
  %174 = sext i32 %.0214 to i64
  %175 = sext i32 %.0212 to i64
  %176 = sext i32 %25 to i64
  %invariant.gep = getelementptr double, ptr %27, i64 %176
  %177 = sext i32 %163 to i64
  br label %178

178:                                              ; preds = %.lr.ph328, %200
  %indvars.iv338 = phi i64 [ %174, %.lr.ph328 ], [ %indvars.iv.next339, %200 ]
  %179 = load i32, ptr %4, align 4, !tbaa !5
  %180 = trunc nsw i64 %indvars.iv338 to i32
  %reass.sub = sub i32 %179, %180
  %181 = add i32 %reass.sub, 1
  %182 = call i32 @llvm.smin.i32(i32 %.2211271, i32 %181)
  store i32 %182, ptr %20, align 4, !tbaa !5
  %183 = add i32 %172, %180
  %184 = sub i32 %183, %179
  %185 = add i32 %184, %182
  store i32 %185, ptr %17, align 4, !tbaa !5
  %gep359 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv338
  %186 = getelementptr inbounds double, ptr %28, i64 %indvars.iv338
  call void @dlarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %gep359, ptr noundef nonnull %6, ptr noundef nonnull %186, ptr noundef %gep, ptr noundef nonnull @c__65) #5
  %187 = load i32, ptr %4, align 4, !tbaa !5
  %188 = load i32, ptr %20, align 4, !tbaa !5
  %189 = add i32 %180, -1
  br i1 %.not, label %190, label %195

190:                                              ; preds = %178
  %191 = load i32, ptr %2, align 4, !tbaa !5
  %192 = add i32 %189, %191
  %193 = sub i32 %192, %187
  %194 = add i32 %193, %188
  store i32 %194, ptr %21, align 4, !tbaa !5
  br label %200

195:                                              ; preds = %178
  %196 = load i32, ptr %3, align 4, !tbaa !5
  %197 = add i32 %189, %196
  %198 = sub i32 %197, %187
  %199 = add i32 %198, %188
  store i32 %199, ptr %22, align 4, !tbaa !5
  br label %200

200:                                              ; preds = %195, %190
  call void @dlarfb_(ptr noundef %0, ptr noundef nonnull %24, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %gep359, ptr noundef nonnull %6, ptr noundef %gep, ptr noundef nonnull @c__65, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %23) #5
  %indvars.iv.next339 = add nsw i64 %indvars.iv338, %175
  %201 = icmp sge i64 %indvars.iv.next339, %177
  %202 = icmp sle i64 %indvars.iv.next339, %177
  %.in = select i1 %169, i1 %201, i1 %202
  br i1 %.in, label %178, label %.loopexit, !llvm.loop !23

.loopexit:                                        ; preds = %200, %168, %.thread272
  %203 = sitofp i32 %.0205288 to double
  store double %203, ptr %10, align 8, !tbaa !18
  br label %204

204:                                              ; preds = %104, %107, %103, %.loopexit, %.thread261
  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 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #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 @dormr2_(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 @dlarft_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dlarfb_(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.smin.i32(i32, i32) #3

; 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.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