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

; 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 [11 x i8], align 1
@c__65 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dormql_(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 i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %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
  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 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
  %67 = load ptr, ptr %20, align 8, !tbaa !5
  %68 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %68, ptr %28, align 4, !tbaa !9
  %69 = load i32, ptr %28, align 4, !tbaa !9
  %70 = mul nsw i32 %69, 1
  %71 = add nsw i32 1, %70
  store i32 %71, ptr %29, align 4, !tbaa !9
  %72 = load i32, ptr %29, align 4, !tbaa !9
  %73 = load ptr, ptr %19, align 8, !tbaa !5
  %74 = sext i32 %72 to i64
  %75 = sub i64 0, %74
  %76 = getelementptr inbounds double, ptr %73, i64 %75
  store ptr %76, ptr %19, align 8, !tbaa !5
  %77 = load ptr, ptr %21, align 8, !tbaa !5
  %78 = getelementptr inbounds double, ptr %77, i32 -1
  store ptr %78, ptr %21, align 8, !tbaa !5
  %79 = load ptr, ptr %23, align 8, !tbaa !5
  %80 = load i32, ptr %79, align 4, !tbaa !9
  store i32 %80, ptr %30, align 4, !tbaa !9
  %81 = load i32, ptr %30, align 4, !tbaa !9
  %82 = mul nsw i32 %81, 1
  %83 = add nsw i32 1, %82
  store i32 %83, ptr %31, align 4, !tbaa !9
  %84 = load i32, ptr %31, align 4, !tbaa !9
  %85 = load ptr, ptr %22, align 8, !tbaa !5
  %86 = sext i32 %84 to i64
  %87 = sub i64 0, %86
  %88 = getelementptr inbounds double, ptr %85, i64 %87
  store ptr %88, ptr %22, align 8, !tbaa !5
  %89 = load ptr, ptr %24, align 8, !tbaa !5
  %90 = getelementptr inbounds double, ptr %89, i32 -1
  store ptr %90, ptr %24, align 8, !tbaa !5
  %91 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %91, align 4, !tbaa !9
  %92 = load ptr, ptr %14, align 8, !tbaa !5
  %93 = call i32 @lsame_(ptr noundef %92, ptr noundef @.str)
  store i32 %93, ptr %38, align 4, !tbaa !9
  %94 = load ptr, ptr %15, align 8, !tbaa !5
  %95 = call i32 @lsame_(ptr noundef %94, ptr noundef @.str.1)
  store i32 %95, ptr %51, align 4, !tbaa !9
  %96 = load ptr, ptr %25, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = icmp eq i32 %97, -1
  %99 = zext i1 %98 to i32
  store i32 %99, ptr %54, align 4, !tbaa !9
  %100 = load i32, ptr %38, align 4, !tbaa !9
  %101 = icmp ne i32 %100, 0
  br i1 %101, label %102, label %114

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

108:                                              ; preds = %102
  br label %112

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

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

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

120:                                              ; preds = %114
  br label %124

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

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

126:                                              ; preds = %124, %112
  %127 = load i32, ptr %38, align 4, !tbaa !9
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %135, label %129

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

133:                                              ; preds = %129
  %134 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -1, ptr %134, align 4, !tbaa !9
  br label %212

135:                                              ; preds = %129, %126
  %136 = load i32, ptr %51, align 4, !tbaa !9
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %144, label %138

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

142:                                              ; preds = %138
  %143 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -2, ptr %143, align 4, !tbaa !9
  br label %211

144:                                              ; preds = %138, %135
  %145 = load ptr, ptr %16, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = icmp slt i32 %146, 0
  br i1 %147, label %148, label %150

148:                                              ; preds = %144
  %149 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -3, ptr %149, align 4, !tbaa !9
  br label %210

150:                                              ; preds = %144
  %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 %26, align 8, !tbaa !5
  store i32 -4, ptr %155, align 4, !tbaa !9
  br label %209

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 %165, label %160

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

165:                                              ; preds = %160, %156
  %166 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -5, ptr %166, align 4, !tbaa !9
  br label %208

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

172:                                              ; preds = %167
  br label %175

173:                                              ; preds = %167
  %174 = load i32, ptr %49, align 4, !tbaa !9
  br label %175

175:                                              ; preds = %173, %172
  %176 = phi i32 [ 1, %172 ], [ %174, %173 ]
  %177 = icmp slt i32 %169, %176
  br i1 %177, label %178, label %180

178:                                              ; preds = %175
  %179 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -7, ptr %179, align 4, !tbaa !9
  br label %207

180:                                              ; preds = %175
  %181 = load ptr, ptr %23, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = load ptr, ptr %16, align 8, !tbaa !5
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = icmp sge i32 1, %184
  br i1 %185, label %186, label %187

186:                                              ; preds = %180
  br label %190

187:                                              ; preds = %180
  %188 = load ptr, ptr %16, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  br label %190

190:                                              ; preds = %187, %186
  %191 = phi i32 [ 1, %186 ], [ %189, %187 ]
  %192 = icmp slt i32 %182, %191
  br i1 %192, label %193, label %195

193:                                              ; preds = %190
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -10, ptr %194, align 4, !tbaa !9
  br label %206

195:                                              ; preds = %190
  %196 = load ptr, ptr %25, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = load i32, ptr %50, align 4, !tbaa !9
  %199 = icmp slt i32 %197, %198
  br i1 %199, label %200, label %205

200:                                              ; preds = %195
  %201 = load i32, ptr %54, align 4, !tbaa !9
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %205, label %203

203:                                              ; preds = %200
  %204 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -12, ptr %204, align 4, !tbaa !9
  br label %205

205:                                              ; preds = %203, %200, %195
  br label %206

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

207:                                              ; preds = %206, %178
  br label %208

208:                                              ; preds = %207, %165
  br label %209

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

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

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

212:                                              ; preds = %211, %133
  %213 = load ptr, ptr %26, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = icmp eq i32 %214, 0
  br i1 %215, label %216, label %304

216:                                              ; preds = %212
  %217 = load ptr, ptr %16, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = icmp eq i32 %218, 0
  br i1 %219, label %224, label %220

220:                                              ; preds = %216
  %221 = load ptr, ptr %17, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = icmp eq i32 %222, 0
  br i1 %223, label %224, label %225

224:                                              ; preds = %220, %216
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %299

225:                                              ; preds = %220
  %226 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 1, ptr %226, align 4, !tbaa !9
  %227 = load ptr, ptr %14, align 8, !tbaa !5
  %228 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 0
  store ptr %227, ptr %228, align 16, !tbaa !5
  %229 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 1, ptr %229, align 4, !tbaa !9
  %230 = load ptr, ptr %15, align 8, !tbaa !5
  %231 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 1
  store ptr %230, ptr %231, align 8, !tbaa !5
  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 4, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  store i32 2, ptr %58, align 4, !tbaa !9
  %232 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  store ptr %232, ptr %60, align 8, !tbaa !5
  store i32 0, ptr %56, align 4, !tbaa !9
  br label %233

233:                                              ; preds = %269, %225
  %234 = load i32, ptr %56, align 4, !tbaa !9
  %235 = load i32, ptr @c__2, align 4, !tbaa !9
  %236 = icmp slt i32 %234, %235
  br i1 %236, label %237, label %272

237:                                              ; preds = %233
  %238 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %238, ptr %57, align 4, !tbaa !9
  %239 = load i32, ptr %56, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %240
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = load i32, ptr %57, align 4, !tbaa !9
  %244 = icmp slt i32 %242, %243
  br i1 %244, label %245, label %250

245:                                              ; preds = %237
  %246 = load i32, ptr %56, align 4, !tbaa !9
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !9
  store i32 %249, ptr %57, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %245, %237
  %251 = load i32, ptr %57, align 4, !tbaa !9
  %252 = load i32, ptr %58, align 4, !tbaa !9
  %253 = sub nsw i32 %252, %251
  store i32 %253, ptr %58, align 4, !tbaa !9
  %254 = load i32, ptr %56, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %255
  %257 = load ptr, ptr %256, align 8, !tbaa !5
  store ptr %257, ptr %59, align 8, !tbaa !5
  br label %258

258:                                              ; preds = %262, %250
  %259 = load i32, ptr %57, align 4, !tbaa !9
  %260 = add nsw i32 %259, -1
  store i32 %260, ptr %57, align 4, !tbaa !9
  %261 = icmp sge i32 %260, 0
  br i1 %261, label %262, label %268

262:                                              ; preds = %258
  %263 = load ptr, ptr %59, align 8, !tbaa !5
  %264 = getelementptr inbounds i8, ptr %263, i32 1
  store ptr %264, ptr %59, align 8, !tbaa !5
  %265 = load i8, ptr %263, align 1, !tbaa !11
  %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
  store i8 %265, ptr %266, align 1, !tbaa !11
  br label %258, !llvm.loop !12

268:                                              ; preds = %258
  br label %269

269:                                              ; preds = %268
  %270 = load i32, ptr %56, align 4, !tbaa !9
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %56, align 4, !tbaa !9
  br label %233, !llvm.loop !14

272:                                              ; preds = %233
  br label %273

273:                                              ; preds = %277, %272
  %274 = load i32, ptr %58, align 4, !tbaa !9
  %275 = add nsw i32 %274, -1
  store i32 %275, ptr %58, align 4, !tbaa !9
  %276 = icmp sge i32 %275, 0
  br i1 %276, label %277, label %280

277:                                              ; preds = %273
  %278 = load ptr, ptr %60, align 8, !tbaa !5
  %279 = getelementptr inbounds i8, ptr %278, i32 1
  store ptr %279, ptr %60, align 8, !tbaa !5
  store i8 32, ptr %278, align 1, !tbaa !11
  br label %273, !llvm.loop !15

280:                                              ; preds = %273
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  store i32 64, ptr %32, align 4, !tbaa !9
  %281 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  %282 = load ptr, ptr %16, align 8, !tbaa !5
  %283 = load ptr, ptr %17, align 8, !tbaa !5
  %284 = load ptr, ptr %18, align 8, !tbaa !5
  %285 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %281, ptr noundef %282, ptr noundef %283, ptr noundef %284, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %285, ptr %33, align 4, !tbaa !9
  %286 = load i32, ptr %32, align 4, !tbaa !9
  %287 = load i32, ptr %33, align 4, !tbaa !9
  %288 = icmp sle i32 %286, %287
  br i1 %288, label %289, label %291

289:                                              ; preds = %280
  %290 = load i32, ptr %32, align 4, !tbaa !9
  br label %293

291:                                              ; preds = %280
  %292 = load i32, ptr %33, align 4, !tbaa !9
  br label %293

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

299:                                              ; preds = %293, %224
  %300 = load i32, ptr %53, align 4, !tbaa !9
  %301 = sitofp i32 %300 to double
  %302 = load ptr, ptr %24, align 8, !tbaa !5
  %303 = getelementptr inbounds double, ptr %302, i64 1
  store double %301, ptr %303, align 8, !tbaa !16
  br label %304

304:                                              ; preds = %299, %212
  %305 = load ptr, ptr %26, align 8, !tbaa !5
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %313

308:                                              ; preds = %304
  %309 = load ptr, ptr %26, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = sub nsw i32 0, %310
  store i32 %311, ptr %32, align 4, !tbaa !9
  %312 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %32, i32 noundef 6)
  store i32 1, ptr %61, align 4
  br label %606

313:                                              ; preds = %304
  %314 = load i32, ptr %54, align 4, !tbaa !9
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %317

316:                                              ; preds = %313
  store i32 1, ptr %61, align 4
  br label %606

317:                                              ; preds = %313
  br label %318

318:                                              ; preds = %317
  %319 = load ptr, ptr %16, align 8, !tbaa !5
  %320 = load i32, ptr %319, align 4, !tbaa !9
  %321 = icmp eq i32 %320, 0
  br i1 %321, label %326, label %322

322:                                              ; preds = %318
  %323 = load ptr, ptr %17, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = icmp eq i32 %324, 0
  br i1 %325, label %326, label %327

326:                                              ; preds = %322, %318
  store i32 1, ptr %61, align 4
  br label %606

327:                                              ; preds = %322
  store i32 2, ptr %40, align 4, !tbaa !9
  %328 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %328, ptr %52, align 4, !tbaa !9
  %329 = load i32, ptr %46, align 4, !tbaa !9
  %330 = icmp sgt i32 %329, 1
  br i1 %330, label %331, label %420

331:                                              ; preds = %327
  %332 = load i32, ptr %46, align 4, !tbaa !9
  %333 = load ptr, ptr %18, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = icmp slt i32 %332, %334
  br i1 %335, label %336, label %420

336:                                              ; preds = %331
  %337 = load ptr, ptr %25, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = load i32, ptr %50, align 4, !tbaa !9
  %340 = load i32, ptr %46, align 4, !tbaa !9
  %341 = mul nsw i32 %339, %340
  %342 = add nsw i32 %341, 4160
  %343 = icmp slt i32 %338, %342
  br i1 %343, label %344, label %419

344:                                              ; preds = %336
  %345 = load ptr, ptr %25, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = sub nsw i32 %346, 4160
  %348 = load i32, ptr %52, align 4, !tbaa !9
  %349 = sdiv i32 %347, %348
  store i32 %349, ptr %46, align 4, !tbaa !9
  %350 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 0
  store i32 1, ptr %350, align 4, !tbaa !9
  %351 = load ptr, ptr %14, align 8, !tbaa !5
  %352 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 0
  store ptr %351, ptr %352, align 16, !tbaa !5
  %353 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 1
  store i32 1, ptr %353, align 4, !tbaa !9
  %354 = load ptr, ptr %15, align 8, !tbaa !5
  %355 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 1
  store ptr %354, ptr %355, 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
  %356 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  store ptr %356, ptr %66, align 8, !tbaa !5
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %357

357:                                              ; preds = %393, %344
  %358 = load i32, ptr %62, align 4, !tbaa !9
  %359 = load i32, ptr @c__2, align 4, !tbaa !9
  %360 = icmp slt i32 %358, %359
  br i1 %360, label %361, label %396

361:                                              ; preds = %357
  %362 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %362, ptr %63, align 4, !tbaa !9
  %363 = load i32, ptr %62, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %364
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = load i32, ptr %63, align 4, !tbaa !9
  %368 = icmp slt i32 %366, %367
  br i1 %368, label %369, label %374

369:                                              ; preds = %361
  %370 = load i32, ptr %62, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds [2 x i32], ptr %34, i64 0, i64 %371
  %373 = load i32, ptr %372, align 4, !tbaa !9
  store i32 %373, ptr %63, align 4, !tbaa !9
  br label %374

374:                                              ; preds = %369, %361
  %375 = load i32, ptr %63, align 4, !tbaa !9
  %376 = load i32, ptr %64, align 4, !tbaa !9
  %377 = sub nsw i32 %376, %375
  store i32 %377, ptr %64, align 4, !tbaa !9
  %378 = load i32, ptr %62, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [2 x ptr], ptr %27, i64 0, i64 %379
  %381 = load ptr, ptr %380, align 8, !tbaa !5
  store ptr %381, ptr %65, align 8, !tbaa !5
  br label %382

382:                                              ; preds = %386, %374
  %383 = load i32, ptr %63, align 4, !tbaa !9
  %384 = add nsw i32 %383, -1
  store i32 %384, ptr %63, align 4, !tbaa !9
  %385 = icmp sge i32 %384, 0
  br i1 %385, label %386, label %392

386:                                              ; preds = %382
  %387 = load ptr, ptr %65, align 8, !tbaa !5
  %388 = getelementptr inbounds i8, ptr %387, i32 1
  store ptr %388, ptr %65, align 8, !tbaa !5
  %389 = load i8, ptr %387, align 1, !tbaa !11
  %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
  store i8 %389, ptr %390, align 1, !tbaa !11
  br label %382, !llvm.loop !18

392:                                              ; preds = %382
  br label %393

393:                                              ; preds = %392
  %394 = load i32, ptr %62, align 4, !tbaa !9
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %62, align 4, !tbaa !9
  br label %357, !llvm.loop !19

396:                                              ; preds = %357
  br label %397

397:                                              ; preds = %401, %396
  %398 = load i32, ptr %64, align 4, !tbaa !9
  %399 = add nsw i32 %398, -1
  store i32 %399, ptr %64, align 4, !tbaa !9
  %400 = icmp sge i32 %399, 0
  br i1 %400, label %401, label %404

401:                                              ; preds = %397
  %402 = load ptr, ptr %66, align 8, !tbaa !5
  %403 = getelementptr inbounds i8, ptr %402, i32 1
  store ptr %403, ptr %66, align 8, !tbaa !5
  store i8 32, ptr %402, align 1, !tbaa !11
  br label %397, !llvm.loop !20

404:                                              ; preds = %397
  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 2, ptr %32, align 4, !tbaa !9
  %405 = getelementptr inbounds [2 x i8], ptr %37, i64 0, i64 0
  %406 = load ptr, ptr %16, align 8, !tbaa !5
  %407 = load ptr, ptr %17, align 8, !tbaa !5
  %408 = load ptr, ptr %18, align 8, !tbaa !5
  %409 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %405, ptr noundef %406, ptr noundef %407, ptr noundef %408, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %409, ptr %33, align 4, !tbaa !9
  %410 = load i32, ptr %32, align 4, !tbaa !9
  %411 = load i32, ptr %33, align 4, !tbaa !9
  %412 = icmp sge i32 %410, %411
  br i1 %412, label %413, label %415

413:                                              ; preds = %404
  %414 = load i32, ptr %32, align 4, !tbaa !9
  br label %417

415:                                              ; preds = %404
  %416 = load i32, ptr %33, align 4, !tbaa !9
  br label %417

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

419:                                              ; preds = %417, %336
  br label %420

420:                                              ; preds = %419, %331, %327
  %421 = load i32, ptr %46, align 4, !tbaa !9
  %422 = load i32, ptr %40, align 4, !tbaa !9
  %423 = icmp slt i32 %421, %422
  br i1 %423, label %429, label %424

424:                                              ; preds = %420
  %425 = load i32, ptr %46, align 4, !tbaa !9
  %426 = load ptr, ptr %18, align 8, !tbaa !5
  %427 = load i32, ptr %426, align 4, !tbaa !9
  %428 = icmp sge i32 %425, %427
  br i1 %428, label %429, label %449

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

449:                                              ; preds = %424
  %450 = load i32, ptr %50, align 4, !tbaa !9
  %451 = load i32, ptr %46, align 4, !tbaa !9
  %452 = mul nsw i32 %450, %451
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr %55, align 4, !tbaa !9
  %454 = load i32, ptr %38, align 4, !tbaa !9
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %459

456:                                              ; preds = %449
  %457 = load i32, ptr %51, align 4, !tbaa !9
  %458 = icmp ne i32 %457, 0
  br i1 %458, label %465, label %459

459:                                              ; preds = %456, %449
  %460 = load i32, ptr %38, align 4, !tbaa !9
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %469, label %462

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

465:                                              ; preds = %462, %456
  store i32 1, ptr %42, align 4, !tbaa !9
  %466 = load ptr, ptr %18, align 8, !tbaa !5
  %467 = load i32, ptr %466, align 4, !tbaa !9
  store i32 %467, ptr %43, align 4, !tbaa !9
  %468 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %468, ptr %44, align 4, !tbaa !9
  br label %480

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

480:                                              ; preds = %469, %465
  %481 = load i32, ptr %38, align 4, !tbaa !9
  %482 = icmp ne i32 %481, 0
  br i1 %482, label %483, label %486

483:                                              ; preds = %480
  %484 = load ptr, ptr %17, align 8, !tbaa !5
  %485 = load i32, ptr %484, align 4, !tbaa !9
  store i32 %485, ptr %48, align 4, !tbaa !9
  br label %489

486:                                              ; preds = %480
  %487 = load ptr, ptr %16, align 8, !tbaa !5
  %488 = load i32, ptr %487, align 4, !tbaa !9
  store i32 %488, ptr %47, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %486, %483
  %490 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %490, ptr %32, align 4, !tbaa !9
  %491 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %491, ptr %33, align 4, !tbaa !9
  %492 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %492, ptr %39, align 4, !tbaa !9
  br label %493

493:                                              ; preds = %596, %489
  %494 = load i32, ptr %33, align 4, !tbaa !9
  %495 = icmp slt i32 %494, 0
  br i1 %495, label %496, label %501

496:                                              ; preds = %493
  %497 = load i32, ptr %39, align 4, !tbaa !9
  %498 = load i32, ptr %32, align 4, !tbaa !9
  %499 = icmp sge i32 %497, %498
  %500 = zext i1 %499 to i32
  br label %506

501:                                              ; preds = %493
  %502 = load i32, ptr %39, align 4, !tbaa !9
  %503 = load i32, ptr %32, align 4, !tbaa !9
  %504 = icmp sle i32 %502, %503
  %505 = zext i1 %504 to i32
  br label %506

506:                                              ; preds = %501, %496
  %507 = phi i32 [ %500, %496 ], [ %505, %501 ]
  %508 = icmp ne i32 %507, 0
  br i1 %508, label %509, label %600

509:                                              ; preds = %506
  %510 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %510, ptr %35, align 4, !tbaa !9
  %511 = load ptr, ptr %18, align 8, !tbaa !5
  %512 = load i32, ptr %511, align 4, !tbaa !9
  %513 = load i32, ptr %39, align 4, !tbaa !9
  %514 = sub nsw i32 %512, %513
  %515 = add nsw i32 %514, 1
  store i32 %515, ptr %36, align 4, !tbaa !9
  %516 = load i32, ptr %35, align 4, !tbaa !9
  %517 = load i32, ptr %36, align 4, !tbaa !9
  %518 = icmp sle i32 %516, %517
  br i1 %518, label %519, label %521

519:                                              ; preds = %509
  %520 = load i32, ptr %35, align 4, !tbaa !9
  br label %523

521:                                              ; preds = %509
  %522 = load i32, ptr %36, align 4, !tbaa !9
  br label %523

523:                                              ; preds = %521, %519
  %524 = phi i32 [ %520, %519 ], [ %522, %521 ]
  store i32 %524, ptr %45, align 4, !tbaa !9
  %525 = load i32, ptr %49, align 4, !tbaa !9
  %526 = load ptr, ptr %18, align 8, !tbaa !5
  %527 = load i32, ptr %526, align 4, !tbaa !9
  %528 = sub nsw i32 %525, %527
  %529 = load i32, ptr %39, align 4, !tbaa !9
  %530 = add nsw i32 %528, %529
  %531 = load i32, ptr %45, align 4, !tbaa !9
  %532 = add nsw i32 %530, %531
  %533 = sub nsw i32 %532, 1
  store i32 %533, ptr %35, align 4, !tbaa !9
  %534 = load ptr, ptr %19, align 8, !tbaa !5
  %535 = load i32, ptr %39, align 4, !tbaa !9
  %536 = load i32, ptr %28, align 4, !tbaa !9
  %537 = mul nsw i32 %535, %536
  %538 = add nsw i32 %537, 1
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds double, ptr %534, i64 %539
  %541 = load ptr, ptr %20, align 8, !tbaa !5
  %542 = load ptr, ptr %21, align 8, !tbaa !5
  %543 = load i32, ptr %39, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %542, i64 %544
  %546 = load ptr, ptr %24, align 8, !tbaa !5
  %547 = load i32, ptr %55, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds double, ptr %546, i64 %548
  call void @dlarft_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %35, ptr noundef %45, ptr noundef %540, ptr noundef %541, ptr noundef %545, ptr noundef %549, ptr noundef @c__65)
  %550 = load i32, ptr %38, align 4, !tbaa !9
  %551 = icmp ne i32 %550, 0
  br i1 %551, label %552, label %563

552:                                              ; preds = %523
  %553 = load ptr, ptr %16, align 8, !tbaa !5
  %554 = load i32, ptr %553, align 4, !tbaa !9
  %555 = load ptr, ptr %18, align 8, !tbaa !5
  %556 = load i32, ptr %555, align 4, !tbaa !9
  %557 = sub nsw i32 %554, %556
  %558 = load i32, ptr %39, align 4, !tbaa !9
  %559 = add nsw i32 %557, %558
  %560 = load i32, ptr %45, align 4, !tbaa !9
  %561 = add nsw i32 %559, %560
  %562 = sub nsw i32 %561, 1
  store i32 %562, ptr %47, align 4, !tbaa !9
  br label %574

563:                                              ; preds = %523
  %564 = load ptr, ptr %17, align 8, !tbaa !5
  %565 = load i32, ptr %564, align 4, !tbaa !9
  %566 = load ptr, ptr %18, align 8, !tbaa !5
  %567 = load i32, ptr %566, align 4, !tbaa !9
  %568 = sub nsw i32 %565, %567
  %569 = load i32, ptr %39, align 4, !tbaa !9
  %570 = add nsw i32 %568, %569
  %571 = load i32, ptr %45, align 4, !tbaa !9
  %572 = add nsw i32 %570, %571
  %573 = sub nsw i32 %572, 1
  store i32 %573, ptr %48, align 4, !tbaa !9
  br label %574

574:                                              ; preds = %563, %552
  %575 = load ptr, ptr %14, align 8, !tbaa !5
  %576 = load ptr, ptr %15, align 8, !tbaa !5
  %577 = load ptr, ptr %19, align 8, !tbaa !5
  %578 = load i32, ptr %39, align 4, !tbaa !9
  %579 = load i32, ptr %28, align 4, !tbaa !9
  %580 = mul nsw i32 %578, %579
  %581 = add nsw i32 %580, 1
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds double, ptr %577, i64 %582
  %584 = load ptr, ptr %20, align 8, !tbaa !5
  %585 = load ptr, ptr %24, align 8, !tbaa !5
  %586 = load i32, ptr %55, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds double, ptr %585, i64 %587
  %589 = load ptr, ptr %22, align 8, !tbaa !5
  %590 = load i32, ptr %31, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds double, ptr %589, i64 %591
  %593 = load ptr, ptr %23, align 8, !tbaa !5
  %594 = load ptr, ptr %24, align 8, !tbaa !5
  %595 = getelementptr inbounds double, ptr %594, i64 1
  call void @dlarfb_(ptr noundef %575, ptr noundef %576, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %47, ptr noundef %48, ptr noundef %45, ptr noundef %583, ptr noundef %584, ptr noundef %588, ptr noundef @c__65, ptr noundef %592, ptr noundef %593, ptr noundef %595, ptr noundef %52)
  br label %596

596:                                              ; preds = %574
  %597 = load i32, ptr %33, align 4, !tbaa !9
  %598 = load i32, ptr %39, align 4, !tbaa !9
  %599 = add nsw i32 %598, %597
  store i32 %599, ptr %39, align 4, !tbaa !9
  br label %493, !llvm.loop !21

600:                                              ; preds = %506
  br label %601

601:                                              ; preds = %600, %429
  %602 = load i32, ptr %53, align 4, !tbaa !9
  %603 = sitofp i32 %602 to double
  %604 = load ptr, ptr %24, align 8, !tbaa !5
  %605 = getelementptr inbounds double, ptr %604, i64 1
  store double %603, ptr %605, align 8, !tbaa !16
  store i32 1, ptr %61, align 4
  br label %606

606:                                              ; preds = %601, %326, %316, %308
  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 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 @dorm2l_(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 [11 x i8], align 1
@c__65 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dormql_(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
  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
  %24 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %24, -1
  %25 = sext i32 %narrow to i64
  %26 = getelementptr inbounds double, ptr %5, i64 %25
  %27 = getelementptr inbounds i8, ptr %7, i64 -8
  store i32 0, ptr %12, align 4, !tbaa !5
  %28 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %29 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %30 = load i32, ptr %11, align 4, !tbaa !5
  %31 = icmp eq i32 %30, -1
  %32 = icmp ne i32 %28, 0
  br i1 %32, label %.thread, label %35

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

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

39:                                               ; preds = %.thread, %35
  %.0207249 = phi i32 [ %spec.select, %.thread ], [ %spec.select238, %35 ]
  %.0208247 = phi i32 [ %33, %.thread ], [ %36, %35 ]
  %.not230 = icmp eq i32 %29, 0
  br i1 %.not230, label %40, label %42

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

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

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

48:                                               ; preds = %45
  %49 = load i32, ptr %4, align 4, !tbaa !5
  %50 = icmp slt i32 %49, 0
  %51 = icmp sgt i32 %49, %.0208247
  %or.cond239 = select i1 %50, i1 true, i1 %51
  br i1 %or.cond239, label %.thread257.sink.split, label %52

52:                                               ; preds = %48
  %53 = load i32, ptr %6, align 4, !tbaa !5
  %54 = tail call i32 @llvm.smax.i32(i32 %.0208247, i32 1)
  %55 = icmp slt i32 %53, %54
  br i1 %55, label %.thread257.sink.split, label %56

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

59:                                               ; preds = %56
  %60 = load i32, ptr %11, align 4, !tbaa !5
  %61 = icmp sge i32 %60, %.0207249
  %or.cond = select i1 %61, i1 true, i1 %31
  br i1 %or.cond, label %62, label %.thread257.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 %.thread257

64:                                               ; preds = %62
  %65 = icmp eq i32 %43, 0
  %66 = icmp eq i32 %46, 0
  %or.cond357 = or i1 %65, %66
  br i1 %or.cond357, 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.ph296, label %.lr.ph301.preheader

.preheader288:                                    ; preds = %._crit_edge
  %72 = icmp sgt i32 %77, 0
  br i1 %72, label %.lr.ph301.preheader, label %.thread250

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

.lr.ph296:                                        ; preds = %67, %._crit_edge
  %74 = phi i32 [ %92, %._crit_edge ], [ %70, %67 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %67 ]
  %.0196294 = phi ptr [ %.1197.lcssa, %._crit_edge ], [ %18, %67 ]
  %.0200293 = 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.select241 = tail call i32 @llvm.smin.i32(i32 %76, i32 %.0200293)
  %77 = sub nsw i32 %.0200293, %spec.select241
  %78 = icmp sgt i32 %spec.select241, 0
  br i1 %78, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph296
  %.0196294361 = ptrtoint ptr %.0196294 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.select241, -1
  %82 = zext nneg i32 %81 to i64
  %scevgep = getelementptr i8, ptr %.0196294, i64 %82
  %83 = zext nneg i32 %spec.select241 to i64
  %min.iters.check = icmp ult i32 %spec.select241, 32
  %84 = ptrtoint ptr %80 to i64
  %85 = sub i64 %.0196294361, %84
  %diff.check = icmp ult i64 %85, 32
  %or.cond392 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond392, label %.lr.ph.preheader398, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %83, 2147483616
  %ind.end = getelementptr i8, ptr %.0196294, i64 %n.vec
  %ind.end362 = 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 %.0196294, i64 %index
  %next.gep365 = getelementptr i8, ptr %80, i64 %index
  %86 = getelementptr i8, ptr %next.gep365, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep365, align 1, !tbaa !11
  %wide.load367 = 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.load367, 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.preheader398

.lr.ph.preheader398:                              ; preds = %middle.block, %.lr.ph.preheader
  %.1197291.ph = phi ptr [ %.0196294, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.0199290.ph = phi ptr [ %80, %.lr.ph.preheader ], [ %ind.end362, %middle.block ]
  br label %.lr.ph

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

._crit_edge.loopexit:                             ; preds = %.lr.ph, %middle.block
  %.lcssa359 = 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.ph296
  %92 = phi i32 [ %74, %.lr.ph296 ], [ %.pre, %._crit_edge.loopexit ]
  %.1197.lcssa = phi ptr [ %.0196294, %.lr.ph296 ], [ %.lcssa359, %._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.ph296, label %.preheader288, !llvm.loop !17

.thread250:                                       ; preds = %.preheader288, %.lr.ph301.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, %.0207249
  %98 = add nsw i32 %97, 4160
  %.pr256.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
  %.not233 = icmp eq i32 %.pr256.pr.pr.pre, 0
  br i1 %.not233, label %103, label %.thread257

.thread257.sink.split:                            ; preds = %59, %56, %52, %48, %45, %42, %40, %35
  %.sink = phi i32 [ -1, %35 ], [ -2, %40 ], [ -3, %42 ], [ -4, %45 ], [ -5, %48 ], [ -7, %52 ], [ -10, %56 ], [ -12, %59 ]
  store i32 %.sink, ptr %12, align 4, !tbaa !5
  br label %.thread257

.thread257:                                       ; preds = %.thread257.sink.split, %62, %.thread250
  %100 = phi i32 [ %.pr256.pr.pr.pre, %.thread250 ], [ %.pr, %62 ], [ %.sink, %.thread257.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 %205

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

103:                                              ; preds = %.sink.split, %.thread250
  %.0205284 = phi i32 [ %98, %.thread250 ], [ 1, %.sink.split ]
  %.0209283 = phi i32 [ %96, %.thread250 ], [ undef, %.sink.split ]
  br i1 %31, label %205, label %104

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

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

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

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

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

120:                                              ; preds = %115
  %121 = add nsw i32 %116, -4160
  %122 = sdiv i32 %121, %.0207249
  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.ph314, label %.lr.ph319.preheader

.preheader:                                       ; preds = %._crit_edge308
  %127 = icmp sgt i32 %132, 0
  br i1 %127, label %.lr.ph319.preheader, label %._crit_edge320

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

.lr.ph314:                                        ; preds = %120, %._crit_edge308
  %129 = phi i32 [ %147, %._crit_edge308 ], [ %125, %120 ]
  %indvars.iv333 = phi i64 [ %indvars.iv.next334, %._crit_edge308 ], [ 0, %120 ]
  %.0312 = phi ptr [ %.1.lcssa, %._crit_edge308 ], [ %18, %120 ]
  %.0191311 = phi i32 [ %132, %._crit_edge308 ], [ 2, %120 ]
  %130 = getelementptr inbounds [2 x i32], ptr %16, i64 0, i64 %indvars.iv333
  %131 = load i32, ptr %130, align 4, !tbaa !5
  %spec.select242 = call i32 @llvm.smin.i32(i32 %131, i32 %.0191311)
  %132 = sub nsw i32 %.0191311, %spec.select242
  %133 = icmp sgt i32 %spec.select242, 0
  br i1 %133, label %.lr.ph307.preheader, label %._crit_edge308

.lr.ph307.preheader:                              ; preds = %.lr.ph314
  %.0312369 = ptrtoint ptr %.0312 to i64
  %134 = getelementptr inbounds [2 x ptr], ptr %14, i64 0, i64 %indvars.iv333
  %135 = load ptr, ptr %134, align 8, !tbaa !9
  %136 = add nsw i32 %spec.select242, -1
  %137 = zext nneg i32 %136 to i64
  %scevgep331 = getelementptr i8, ptr %.0312, i64 %137
  %138 = zext nneg i32 %spec.select242 to i64
  %min.iters.check373 = icmp ult i32 %spec.select242, 32
  %139 = ptrtoint ptr %135 to i64
  %140 = sub i64 %.0312369, %139
  %diff.check370 = icmp ult i64 %140, 32
  %or.cond394 = select i1 %min.iters.check373, i1 true, i1 %diff.check370
  br i1 %or.cond394, label %.lr.ph307.preheader395, label %vector.ph374

vector.ph374:                                     ; preds = %.lr.ph307.preheader
  %n.vec376 = and i64 %138, 2147483616
  %ind.end377 = getelementptr i8, ptr %.0312, i64 %n.vec376
  %ind.end379 = getelementptr i8, ptr %135, i64 %n.vec376
  br label %vector.body381

vector.body381:                                   ; preds = %vector.body381, %vector.ph374
  %index382 = phi i64 [ 0, %vector.ph374 ], [ %index.next389, %vector.body381 ]
  %next.gep383 = getelementptr i8, ptr %.0312, i64 %index382
  %next.gep385 = getelementptr i8, ptr %135, i64 %index382
  %141 = getelementptr i8, ptr %next.gep385, i64 16
  %wide.load387 = load <16 x i8>, ptr %next.gep385, align 1, !tbaa !11
  %wide.load388 = load <16 x i8>, ptr %141, align 1, !tbaa !11
  %142 = getelementptr i8, ptr %next.gep383, i64 16
  store <16 x i8> %wide.load387, ptr %next.gep383, align 1, !tbaa !11
  store <16 x i8> %wide.load388, ptr %142, align 1, !tbaa !11
  %index.next389 = add nuw i64 %index382, 32
  %143 = icmp eq i64 %index.next389, %n.vec376
  br i1 %143, label %middle.block371, label %vector.body381, !llvm.loop !20

middle.block371:                                  ; preds = %vector.body381
  %cmp.n390 = icmp eq i64 %n.vec376, %138
  br i1 %cmp.n390, label %._crit_edge308.loopexit, label %.lr.ph307.preheader395

.lr.ph307.preheader395:                           ; preds = %middle.block371, %.lr.ph307.preheader
  %.1305.ph = phi ptr [ %.0312, %.lr.ph307.preheader ], [ %ind.end377, %middle.block371 ]
  %.0190304.ph = phi ptr [ %135, %.lr.ph307.preheader ], [ %ind.end379, %middle.block371 ]
  br label %.lr.ph307

.lr.ph307:                                        ; preds = %.lr.ph307.preheader395, %.lr.ph307
  %.1305 = phi ptr [ %146, %.lr.ph307 ], [ %.1305.ph, %.lr.ph307.preheader395 ]
  %.0190304 = phi ptr [ %144, %.lr.ph307 ], [ %.0190304.ph, %.lr.ph307.preheader395 ]
  %144 = getelementptr inbounds i8, ptr %.0190304, i64 1
  %145 = load i8, ptr %.0190304, align 1, !tbaa !11
  %146 = getelementptr inbounds i8, ptr %.1305, i64 1
  store i8 %145, ptr %.1305, align 1, !tbaa !11
  %exitcond332.not = icmp eq ptr %.1305, %scevgep331
  br i1 %exitcond332.not, label %._crit_edge308.loopexit, label %.lr.ph307, !llvm.loop !21

._crit_edge308.loopexit:                          ; preds = %.lr.ph307, %middle.block371
  %.lcssa = phi ptr [ %ind.end377, %middle.block371 ], [ %146, %.lr.ph307 ]
  %.pre340 = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge308

._crit_edge308:                                   ; preds = %._crit_edge308.loopexit, %.lr.ph314
  %147 = phi i32 [ %129, %.lr.ph314 ], [ %.pre340, %._crit_edge308.loopexit ]
  %.1.lcssa = phi ptr [ %.0312, %.lr.ph314 ], [ %.lcssa, %._crit_edge308.loopexit ]
  %indvars.iv.next334 = add nuw nsw i64 %indvars.iv333, 1
  %148 = sext i32 %147 to i64
  %149 = icmp slt i64 %indvars.iv.next334, %148
  br i1 %149, label %.lr.ph314, label %.preheader, !llvm.loop !22

._crit_edge320:                                   ; preds = %.lr.ph319.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 %.thread268, label %._crit_edge320..thread264_crit_edge

._crit_edge320..thread264_crit_edge:              ; preds = %._crit_edge320
  %.pre341 = load i32, ptr %4, align 4, !tbaa !5
  br label %.thread264

.thread264:                                       ; preds = %._crit_edge320..thread264_crit_edge, %112, %115
  %153 = phi i32 [ %.pre341, %._crit_edge320..thread264_crit_edge ], [ %113, %115 ], [ %113, %112 ]
  %.2211267 = phi i32 [ %122, %._crit_edge320..thread264_crit_edge ], [ %.0209283, %115 ], [ %.0209283, %112 ]
  %.fr236 = freeze i32 %153
  %.not235 = icmp slt i32 %.2211267, %.fr236
  br i1 %.not235, label %154, label %.thread268

.thread268:                                       ; preds = %110, %.thread264, %._crit_edge320
  call void @dorm2l_(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 = %.thread264
  %155 = mul nsw i32 %.2211267, %.0207249
  %156 = icmp ne i32 %29, 0
  %or.cond243 = xor i1 %32, %156
  br i1 %or.cond243, label %157, label %162

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

162:                                              ; preds = %154, %157
  %.0214 = phi i32 [ %160, %157 ], [ 1, %154 ]
  %163 = phi i32 [ 1, %157 ], [ %.fr236, %154 ]
  %.0212 = phi i32 [ %161, %157 ], [ %.2211267, %154 ]
  br i1 %32, 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
  %169 = icmp slt i32 %.0212, 0
  %invariant.gep = getelementptr i8, ptr %26, i64 8
  %170 = icmp sge i32 %.0214, %163
  %171 = icmp sle i32 %.0214, %163
  %.in323 = select i1 %169, i1 %170, i1 %171
  br i1 %.in323, label %.lr.ph326, label %.loopexit

.lr.ph326:                                        ; preds = %168
  %172 = add i32 %.0208247, -1
  %173 = sext i32 %155 to i64
  %gep322 = getelementptr double, ptr %10, i64 %173
  %174 = sext i32 %.0214 to i64
  %175 = sext i32 %.0212 to i64
  %176 = sext i32 %24 to i64
  %177 = sext i32 %163 to i64
  br label %178

178:                                              ; preds = %.lr.ph326, %201
  %indvars.iv336 = phi i64 [ %174, %.lr.ph326 ], [ %indvars.iv.next337, %201 ]
  %179 = load i32, ptr %4, align 4, !tbaa !5
  %180 = trunc nsw i64 %indvars.iv336 to i32
  %reass.sub = sub i32 %179, %180
  %181 = add i32 %reass.sub, 1
  %182 = call i32 @llvm.smin.i32(i32 %.2211267, 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
  %186 = mul nsw i64 %indvars.iv336, %176
  %gep = getelementptr double, ptr %invariant.gep, i64 %186
  %187 = getelementptr inbounds double, ptr %27, i64 %indvars.iv336
  call void @dlarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull %6, ptr noundef nonnull %187, ptr noundef %gep322, ptr noundef nonnull @c__65) #5
  %188 = load i32, ptr %4, align 4, !tbaa !5
  %189 = load i32, ptr %20, align 4, !tbaa !5
  %190 = add i32 %180, -1
  br i1 %32, label %191, label %196

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

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

201:                                              ; preds = %196, %191
  call void @dlarfb_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %20, ptr noundef %gep, ptr noundef nonnull %6, ptr noundef %gep322, ptr noundef nonnull @c__65, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %23) #5
  %indvars.iv.next337 = add nsw i64 %indvars.iv336, %175
  %202 = icmp sge i64 %indvars.iv.next337, %177
  %203 = icmp sle i64 %indvars.iv.next337, %177
  %.in = select i1 %169, i1 %202, i1 %203
  br i1 %.in, label %178, label %.loopexit, !llvm.loop !23

.loopexit:                                        ; preds = %201, %168, %.thread268
  %204 = sitofp i32 %.0205284 to double
  store double %204, ptr %10, align 8, !tbaa !18
  br label %205

205:                                              ; preds = %104, %107, %103, %.loopexit, %.thread257
  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 @dorm2l_(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.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