; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (dormqr)

; 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 i64, align 8
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [11 x i8], align 1
@c__65 = external hidden global i64, align 8

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

93:                                               ; preds = %13
  %94 = load ptr, ptr %17, align 8, !tbaa !5
  %95 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %95, ptr %50, align 8, !tbaa !9
  %96 = load ptr, ptr %18, align 8, !tbaa !5
  %97 = load i64, ptr %96, align 8, !tbaa !9
  store i64 %97, ptr %51, align 8, !tbaa !9
  br label %103

98:                                               ; preds = %13
  %99 = load ptr, ptr %18, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  store i64 %100, ptr %50, align 8, !tbaa !9
  %101 = load ptr, ptr %17, align 8, !tbaa !5
  %102 = load i64, ptr %101, align 8, !tbaa !9
  store i64 %102, ptr %51, align 8, !tbaa !9
  br label %103

103:                                              ; preds = %98, %93
  %104 = load i64, ptr %53, align 8, !tbaa !9
  %105 = icmp ne i64 %104, 0
  br i1 %105, label %112, label %106

106:                                              ; preds = %103
  %107 = load ptr, ptr %15, align 8, !tbaa !5
  %108 = call i64 @lsame_(ptr noundef %107, ptr noundef @.str.2)
  %109 = icmp ne i64 %108, 0
  br i1 %109, label %112, label %110

110:                                              ; preds = %106
  %111 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -1, ptr %111, align 8, !tbaa !9
  br label %195

112:                                              ; preds = %106, %103
  %113 = load i64, ptr %56, align 8, !tbaa !9
  %114 = icmp ne i64 %113, 0
  br i1 %114, label %121, label %115

115:                                              ; preds = %112
  %116 = load ptr, ptr %16, align 8, !tbaa !5
  %117 = call i64 @lsame_(ptr noundef %116, ptr noundef @.str.3)
  %118 = icmp ne i64 %117, 0
  br i1 %118, label %121, label %119

119:                                              ; preds = %115
  %120 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -2, ptr %120, align 8, !tbaa !9
  br label %194

121:                                              ; preds = %115, %112
  %122 = load ptr, ptr %17, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = icmp slt i64 %123, 0
  br i1 %124, label %125, label %127

125:                                              ; preds = %121
  %126 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -3, ptr %126, align 8, !tbaa !9
  br label %193

127:                                              ; preds = %121
  %128 = load ptr, ptr %18, align 8, !tbaa !5
  %129 = load i64, ptr %128, align 8, !tbaa !9
  %130 = icmp slt i64 %129, 0
  br i1 %130, label %131, label %133

131:                                              ; preds = %127
  %132 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -4, ptr %132, align 8, !tbaa !9
  br label %192

133:                                              ; preds = %127
  %134 = load ptr, ptr %19, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = icmp slt i64 %135, 0
  br i1 %136, label %142, label %137

137:                                              ; preds = %133
  %138 = load ptr, ptr %19, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = load i64, ptr %50, align 8, !tbaa !9
  %141 = icmp sgt i64 %139, %140
  br i1 %141, label %142, label %144

142:                                              ; preds = %137, %133
  %143 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -5, ptr %143, align 8, !tbaa !9
  br label %191

144:                                              ; preds = %137
  %145 = load ptr, ptr %21, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = load i64, ptr %50, align 8, !tbaa !9
  %148 = icmp sge i64 1, %147
  br i1 %148, label %149, label %150

149:                                              ; preds = %144
  br label %152

150:                                              ; preds = %144
  %151 = load i64, ptr %50, align 8, !tbaa !9
  br label %152

152:                                              ; preds = %150, %149
  %153 = phi i64 [ 1, %149 ], [ %151, %150 ]
  %154 = icmp slt i64 %146, %153
  br i1 %154, label %155, label %157

155:                                              ; preds = %152
  %156 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -7, ptr %156, align 8, !tbaa !9
  br label %190

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

163:                                              ; preds = %157
  br label %167

164:                                              ; preds = %157
  %165 = load ptr, ptr %17, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %164, %163
  %168 = phi i64 [ 1, %163 ], [ %166, %164 ]
  %169 = icmp slt i64 %159, %168
  br i1 %169, label %170, label %172

170:                                              ; preds = %167
  %171 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -10, ptr %171, align 8, !tbaa !9
  br label %189

172:                                              ; preds = %167
  %173 = load ptr, ptr %26, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = load i64, ptr %51, align 8, !tbaa !9
  %176 = icmp sge i64 1, %175
  br i1 %176, label %177, label %178

177:                                              ; preds = %172
  br label %180

178:                                              ; preds = %172
  %179 = load i64, ptr %51, align 8, !tbaa !9
  br label %180

180:                                              ; preds = %178, %177
  %181 = phi i64 [ 1, %177 ], [ %179, %178 ]
  %182 = icmp slt i64 %174, %181
  br i1 %182, label %183, label %188

183:                                              ; preds = %180
  %184 = load i64, ptr %59, align 8, !tbaa !9
  %185 = icmp ne i64 %184, 0
  br i1 %185, label %188, label %186

186:                                              ; preds = %183
  %187 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -12, ptr %187, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %186, %183, %180
  br label %189

189:                                              ; preds = %188, %170
  br label %190

190:                                              ; preds = %189, %155
  br label %191

191:                                              ; preds = %190, %142
  br label %192

192:                                              ; preds = %191, %131
  br label %193

193:                                              ; preds = %192, %125
  br label %194

194:                                              ; preds = %193, %119
  br label %195

195:                                              ; preds = %194, %110
  %196 = load ptr, ptr %27, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = icmp eq i64 %197, 0
  br i1 %198, label %199, label %237

199:                                              ; preds = %195
  %200 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  store i64 1, ptr %200, align 16, !tbaa !9
  %201 = load ptr, ptr %15, align 8, !tbaa !5
  %202 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  store ptr %201, ptr %202, align 16, !tbaa !5
  %203 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 1
  store i64 1, ptr %203, align 8, !tbaa !9
  %204 = load ptr, ptr %16, align 8, !tbaa !5
  %205 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 1
  store ptr %204, ptr %205, align 8, !tbaa !5
  %206 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %207 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  %208 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  %209 = call i32 @s_cat(ptr noundef %206, ptr noundef %207, ptr noundef %208, ptr noundef @c__2, i64 noundef 2)
  store i64 64, ptr %33, align 8, !tbaa !9
  %210 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %211 = load ptr, ptr %17, align 8, !tbaa !5
  %212 = load ptr, ptr %18, align 8, !tbaa !5
  %213 = load ptr, ptr %19, align 8, !tbaa !5
  %214 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %210, ptr noundef %211, ptr noundef %212, ptr noundef %213, ptr noundef @c_n1)
  store i64 %214, ptr %34, align 8, !tbaa !9
  %215 = load i64, ptr %33, align 8, !tbaa !9
  %216 = load i64, ptr %34, align 8, !tbaa !9
  %217 = icmp sle i64 %215, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %199
  %219 = load i64, ptr %33, align 8, !tbaa !9
  br label %222

220:                                              ; preds = %199
  %221 = load i64, ptr %34, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %220, %218
  %223 = phi i64 [ %219, %218 ], [ %221, %220 ]
  store i64 %223, ptr %47, align 8, !tbaa !9
  %224 = load i64, ptr %51, align 8, !tbaa !9
  %225 = icmp sge i64 1, %224
  br i1 %225, label %226, label %227

226:                                              ; preds = %222
  br label %229

227:                                              ; preds = %222
  %228 = load i64, ptr %51, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %227, %226
  %230 = phi i64 [ 1, %226 ], [ %228, %227 ]
  %231 = load i64, ptr %47, align 8, !tbaa !9
  %232 = mul nsw i64 %230, %231
  store i64 %232, ptr %58, align 8, !tbaa !9
  %233 = load i64, ptr %58, align 8, !tbaa !9
  %234 = sitofp i64 %233 to double
  %235 = load ptr, ptr %25, align 8, !tbaa !5
  %236 = getelementptr inbounds double, ptr %235, i64 1
  store double %234, ptr %236, align 8, !tbaa !11
  br label %237

237:                                              ; preds = %229, %195
  %238 = load ptr, ptr %27, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  %240 = icmp ne i64 %239, 0
  br i1 %240, label %241, label %246

241:                                              ; preds = %237
  %242 = load ptr, ptr %27, align 8, !tbaa !5
  %243 = load i64, ptr %242, align 8, !tbaa !9
  %244 = sub nsw i64 0, %243
  store i64 %244, ptr %33, align 8, !tbaa !9
  %245 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %33)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %60, align 4
  br label %481

246:                                              ; preds = %237
  %247 = load i64, ptr %59, align 8, !tbaa !9
  %248 = icmp ne i64 %247, 0
  br i1 %248, label %249, label %250

249:                                              ; preds = %246
  store i32 0, ptr %14, align 4
  store i32 1, ptr %60, align 4
  br label %481

250:                                              ; preds = %246
  br label %251

251:                                              ; preds = %250
  %252 = load ptr, ptr %17, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  %254 = icmp eq i64 %253, 0
  br i1 %254, label %263, label %255

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

259:                                              ; preds = %255
  %260 = load ptr, ptr %19, align 8, !tbaa !5
  %261 = load i64, ptr %260, align 8, !tbaa !9
  %262 = icmp eq i64 %261, 0
  br i1 %262, label %263, label %266

263:                                              ; preds = %259, %255, %251
  %264 = load ptr, ptr %25, align 8, !tbaa !5
  %265 = getelementptr inbounds double, ptr %264, i64 1
  store double 1.000000e+00, ptr %265, align 8, !tbaa !11
  store i32 0, ptr %14, align 4
  store i32 1, ptr %60, align 4
  br label %481

266:                                              ; preds = %259
  store i64 2, ptr %54, align 8, !tbaa !9
  %267 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %267, ptr %57, align 8, !tbaa !9
  %268 = load i64, ptr %47, align 8, !tbaa !9
  %269 = icmp sgt i64 %268, 1
  br i1 %269, label %270, label %313

270:                                              ; preds = %266
  %271 = load i64, ptr %47, align 8, !tbaa !9
  %272 = load ptr, ptr %19, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  %274 = icmp slt i64 %271, %273
  br i1 %274, label %275, label %313

275:                                              ; preds = %270
  %276 = load i64, ptr %51, align 8, !tbaa !9
  %277 = load i64, ptr %47, align 8, !tbaa !9
  %278 = mul nsw i64 %276, %277
  store i64 %278, ptr %52, align 8, !tbaa !9
  %279 = load ptr, ptr %26, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = load i64, ptr %52, align 8, !tbaa !9
  %282 = icmp slt i64 %280, %281
  br i1 %282, label %283, label %312

283:                                              ; preds = %275
  %284 = load ptr, ptr %26, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = load i64, ptr %57, align 8, !tbaa !9
  %287 = sdiv i64 %285, %286
  store i64 %287, ptr %47, align 8, !tbaa !9
  %288 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  store i64 1, ptr %288, align 16, !tbaa !9
  %289 = load ptr, ptr %15, align 8, !tbaa !5
  %290 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  store ptr %289, ptr %290, align 16, !tbaa !5
  %291 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 1
  store i64 1, ptr %291, align 8, !tbaa !9
  %292 = load ptr, ptr %16, align 8, !tbaa !5
  %293 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 1
  store ptr %292, ptr %293, align 8, !tbaa !5
  %294 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %295 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  %296 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  %297 = call i32 @s_cat(ptr noundef %294, ptr noundef %295, ptr noundef %296, ptr noundef @c__2, i64 noundef 2)
  store i64 2, ptr %33, align 8, !tbaa !9
  %298 = getelementptr inbounds [2 x i8], ptr %38, i64 0, i64 0
  %299 = load ptr, ptr %17, align 8, !tbaa !5
  %300 = load ptr, ptr %18, align 8, !tbaa !5
  %301 = load ptr, ptr %19, align 8, !tbaa !5
  %302 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.4, ptr noundef %298, ptr noundef %299, ptr noundef %300, ptr noundef %301, ptr noundef @c_n1)
  store i64 %302, ptr %34, align 8, !tbaa !9
  %303 = load i64, ptr %33, align 8, !tbaa !9
  %304 = load i64, ptr %34, align 8, !tbaa !9
  %305 = icmp sge i64 %303, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %283
  %307 = load i64, ptr %33, align 8, !tbaa !9
  br label %310

308:                                              ; preds = %283
  %309 = load i64, ptr %34, align 8, !tbaa !9
  br label %310

310:                                              ; preds = %308, %306
  %311 = phi i64 [ %307, %306 ], [ %309, %308 ]
  store i64 %311, ptr %54, align 8, !tbaa !9
  br label %312

312:                                              ; preds = %310, %275
  br label %315

313:                                              ; preds = %270, %266
  %314 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %314, ptr %52, align 8, !tbaa !9
  br label %315

315:                                              ; preds = %313, %312
  %316 = load i64, ptr %47, align 8, !tbaa !9
  %317 = load i64, ptr %54, align 8, !tbaa !9
  %318 = icmp slt i64 %316, %317
  br i1 %318, label %324, label %319

319:                                              ; preds = %315
  %320 = load i64, ptr %47, align 8, !tbaa !9
  %321 = load ptr, ptr %19, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = icmp sge i64 %320, %322
  br i1 %323, label %324, label %343

324:                                              ; preds = %319, %315
  %325 = load ptr, ptr %15, align 8, !tbaa !5
  %326 = load ptr, ptr %16, align 8, !tbaa !5
  %327 = load ptr, ptr %17, align 8, !tbaa !5
  %328 = load ptr, ptr %18, align 8, !tbaa !5
  %329 = load ptr, ptr %19, align 8, !tbaa !5
  %330 = load ptr, ptr %20, align 8, !tbaa !5
  %331 = load i64, ptr %30, align 8, !tbaa !9
  %332 = getelementptr inbounds double, ptr %330, i64 %331
  %333 = load ptr, ptr %21, align 8, !tbaa !5
  %334 = load ptr, ptr %22, align 8, !tbaa !5
  %335 = getelementptr inbounds double, ptr %334, i64 1
  %336 = load ptr, ptr %23, align 8, !tbaa !5
  %337 = load i64, ptr %32, align 8, !tbaa !9
  %338 = getelementptr inbounds double, ptr %336, i64 %337
  %339 = load ptr, ptr %24, align 8, !tbaa !5
  %340 = load ptr, ptr %25, align 8, !tbaa !5
  %341 = getelementptr inbounds double, ptr %340, i64 1
  %342 = call i32 @dorm2r_(ptr noundef %325, ptr noundef %326, ptr noundef %327, ptr noundef %328, ptr noundef %329, ptr noundef %332, ptr noundef %333, ptr noundef %335, ptr noundef %338, ptr noundef %339, ptr noundef %341, ptr noundef %55)
  br label %476

343:                                              ; preds = %319
  %344 = load i64, ptr %53, align 8, !tbaa !9
  %345 = icmp ne i64 %344, 0
  br i1 %345, label %346, label %349

346:                                              ; preds = %343
  %347 = load i64, ptr %56, align 8, !tbaa !9
  %348 = icmp ne i64 %347, 0
  br i1 %348, label %349, label %355

349:                                              ; preds = %346, %343
  %350 = load i64, ptr %53, align 8, !tbaa !9
  %351 = icmp ne i64 %350, 0
  br i1 %351, label %359, label %352

352:                                              ; preds = %349
  %353 = load i64, ptr %56, align 8, !tbaa !9
  %354 = icmp ne i64 %353, 0
  br i1 %354, label %355, label %359

355:                                              ; preds = %352, %346
  store i64 1, ptr %41, align 8, !tbaa !9
  %356 = load ptr, ptr %19, align 8, !tbaa !5
  %357 = load i64, ptr %356, align 8, !tbaa !9
  store i64 %357, ptr %42, align 8, !tbaa !9
  %358 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %358, ptr %43, align 8, !tbaa !9
  br label %370

359:                                              ; preds = %352, %349
  %360 = load ptr, ptr %19, align 8, !tbaa !5
  %361 = load i64, ptr %360, align 8, !tbaa !9
  %362 = sub nsw i64 %361, 1
  %363 = load i64, ptr %47, align 8, !tbaa !9
  %364 = sdiv i64 %362, %363
  %365 = load i64, ptr %47, align 8, !tbaa !9
  %366 = mul nsw i64 %364, %365
  %367 = add nsw i64 %366, 1
  store i64 %367, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  %368 = load i64, ptr %47, align 8, !tbaa !9
  %369 = sub nsw i64 0, %368
  store i64 %369, ptr %43, align 8, !tbaa !9
  br label %370

370:                                              ; preds = %359, %355
  %371 = load i64, ptr %53, align 8, !tbaa !9
  %372 = icmp ne i64 %371, 0
  br i1 %372, label %373, label %376

373:                                              ; preds = %370
  %374 = load ptr, ptr %18, align 8, !tbaa !5
  %375 = load i64, ptr %374, align 8, !tbaa !9
  store i64 %375, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %379

376:                                              ; preds = %370
  %377 = load ptr, ptr %17, align 8, !tbaa !5
  %378 = load i64, ptr %377, align 8, !tbaa !9
  store i64 %378, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %379

379:                                              ; preds = %376, %373
  %380 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %380, ptr %33, align 8, !tbaa !9
  %381 = load i64, ptr %43, align 8, !tbaa !9
  store i64 %381, ptr %34, align 8, !tbaa !9
  %382 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %382, ptr %39, align 8, !tbaa !9
  br label %383

383:                                              ; preds = %471, %379
  %384 = load i64, ptr %34, align 8, !tbaa !9
  %385 = icmp slt i64 %384, 0
  br i1 %385, label %386, label %391

386:                                              ; preds = %383
  %387 = load i64, ptr %39, align 8, !tbaa !9
  %388 = load i64, ptr %33, align 8, !tbaa !9
  %389 = icmp sge i64 %387, %388
  %390 = zext i1 %389 to i32
  br label %396

391:                                              ; preds = %383
  %392 = load i64, ptr %39, align 8, !tbaa !9
  %393 = load i64, ptr %33, align 8, !tbaa !9
  %394 = icmp sle i64 %392, %393
  %395 = zext i1 %394 to i32
  br label %396

396:                                              ; preds = %391, %386
  %397 = phi i32 [ %390, %386 ], [ %395, %391 ]
  %398 = icmp ne i32 %397, 0
  br i1 %398, label %399, label %475

399:                                              ; preds = %396
  %400 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %400, ptr %36, align 8, !tbaa !9
  %401 = load ptr, ptr %19, align 8, !tbaa !5
  %402 = load i64, ptr %401, align 8, !tbaa !9
  %403 = load i64, ptr %39, align 8, !tbaa !9
  %404 = sub nsw i64 %402, %403
  %405 = add nsw i64 %404, 1
  store i64 %405, ptr %37, align 8, !tbaa !9
  %406 = load i64, ptr %36, align 8, !tbaa !9
  %407 = load i64, ptr %37, align 8, !tbaa !9
  %408 = icmp sle i64 %406, %407
  br i1 %408, label %409, label %411

409:                                              ; preds = %399
  %410 = load i64, ptr %36, align 8, !tbaa !9
  br label %413

411:                                              ; preds = %399
  %412 = load i64, ptr %37, align 8, !tbaa !9
  br label %413

413:                                              ; preds = %411, %409
  %414 = phi i64 [ %410, %409 ], [ %412, %411 ]
  store i64 %414, ptr %44, align 8, !tbaa !9
  %415 = load i64, ptr %50, align 8, !tbaa !9
  %416 = load i64, ptr %39, align 8, !tbaa !9
  %417 = sub nsw i64 %415, %416
  %418 = add nsw i64 %417, 1
  store i64 %418, ptr %36, align 8, !tbaa !9
  %419 = load ptr, ptr %20, align 8, !tbaa !5
  %420 = load i64, ptr %39, align 8, !tbaa !9
  %421 = load i64, ptr %39, align 8, !tbaa !9
  %422 = load i64, ptr %29, align 8, !tbaa !9
  %423 = mul nsw i64 %421, %422
  %424 = add nsw i64 %420, %423
  %425 = getelementptr inbounds double, ptr %419, i64 %424
  %426 = load ptr, ptr %21, align 8, !tbaa !5
  %427 = load ptr, ptr %22, align 8, !tbaa !5
  %428 = load i64, ptr %39, align 8, !tbaa !9
  %429 = getelementptr inbounds double, ptr %427, i64 %428
  %430 = getelementptr inbounds [4160 x double], ptr %40, i64 0, i64 0
  %431 = call i32 @dlarft_(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %36, ptr noundef %44, ptr noundef %425, ptr noundef %426, ptr noundef %429, ptr noundef %430, ptr noundef @c__65)
  %432 = load i64, ptr %53, align 8, !tbaa !9
  %433 = icmp ne i64 %432, 0
  br i1 %433, label %434, label %441

434:                                              ; preds = %413
  %435 = load ptr, ptr %17, align 8, !tbaa !5
  %436 = load i64, ptr %435, align 8, !tbaa !9
  %437 = load i64, ptr %39, align 8, !tbaa !9
  %438 = sub nsw i64 %436, %437
  %439 = add nsw i64 %438, 1
  store i64 %439, ptr %48, align 8, !tbaa !9
  %440 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %440, ptr %45, align 8, !tbaa !9
  br label %448

441:                                              ; preds = %413
  %442 = load ptr, ptr %18, align 8, !tbaa !5
  %443 = load i64, ptr %442, align 8, !tbaa !9
  %444 = load i64, ptr %39, align 8, !tbaa !9
  %445 = sub nsw i64 %443, %444
  %446 = add nsw i64 %445, 1
  store i64 %446, ptr %49, align 8, !tbaa !9
  %447 = load i64, ptr %39, align 8, !tbaa !9
  store i64 %447, ptr %46, align 8, !tbaa !9
  br label %448

448:                                              ; preds = %441, %434
  %449 = load ptr, ptr %15, align 8, !tbaa !5
  %450 = load ptr, ptr %16, align 8, !tbaa !5
  %451 = load ptr, ptr %20, align 8, !tbaa !5
  %452 = load i64, ptr %39, align 8, !tbaa !9
  %453 = load i64, ptr %39, align 8, !tbaa !9
  %454 = load i64, ptr %29, align 8, !tbaa !9
  %455 = mul nsw i64 %453, %454
  %456 = add nsw i64 %452, %455
  %457 = getelementptr inbounds double, ptr %451, i64 %456
  %458 = load ptr, ptr %21, align 8, !tbaa !5
  %459 = getelementptr inbounds [4160 x double], ptr %40, i64 0, i64 0
  %460 = load ptr, ptr %23, align 8, !tbaa !5
  %461 = load i64, ptr %45, align 8, !tbaa !9
  %462 = load i64, ptr %46, align 8, !tbaa !9
  %463 = load i64, ptr %31, align 8, !tbaa !9
  %464 = mul nsw i64 %462, %463
  %465 = add nsw i64 %461, %464
  %466 = getelementptr inbounds double, ptr %460, i64 %465
  %467 = load ptr, ptr %24, align 8, !tbaa !5
  %468 = load ptr, ptr %25, align 8, !tbaa !5
  %469 = getelementptr inbounds double, ptr %468, i64 1
  %470 = call i32 @dlarfb_(ptr noundef %449, ptr noundef %450, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %48, ptr noundef %49, ptr noundef %44, ptr noundef %457, ptr noundef %458, ptr noundef %459, ptr noundef @c__65, ptr noundef %466, ptr noundef %467, ptr noundef %469, ptr noundef %57)
  br label %471

471:                                              ; preds = %448
  %472 = load i64, ptr %34, align 8, !tbaa !9
  %473 = load i64, ptr %39, align 8, !tbaa !9
  %474 = add nsw i64 %473, %472
  store i64 %474, ptr %39, align 8, !tbaa !9
  br label %383, !llvm.loop !13

475:                                              ; preds = %396
  br label %476

476:                                              ; preds = %475, %324
  %477 = load i64, ptr %58, align 8, !tbaa !9
  %478 = sitofp i64 %477 to double
  %479 = load ptr, ptr %25, align 8, !tbaa !5
  %480 = getelementptr inbounds double, ptr %479, i64 1
  store double %478, ptr %480, align 8, !tbaa !11
  store i32 0, ptr %14, align 4
  store i32 1, ptr %60, align 4
  br label %481

481:                                              ; preds = %476, %263, %249, %241
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 33280, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #3
  %482 = load i32, ptr %14, align 4
  ret i32 %482
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) #2

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

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

declare i32 @dorm2r_(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 i32 @dlarft_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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


; 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 i64, align 8
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [11 x i8], align 1
@c__65 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dormqr_(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 i64, align 8
  %16 = alloca [2 x i64], align 16
  %17 = alloca i64, align 8
  %18 = alloca [2 x i8], align 1
  %19 = alloca [4160 x double], align 16
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 33280, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  %25 = load i64, ptr %6, align 8, !tbaa !5
  %26 = xor i64 %25, -1
  %27 = getelementptr inbounds double, ptr %5, i64 %26
  %28 = getelementptr inbounds i8, ptr %7, i64 -8
  %29 = load i64, ptr %9, align 8, !tbaa !5
  %30 = xor i64 %29, -1
  %31 = getelementptr inbounds double, ptr %8, i64 %30
  store i64 0, ptr %12, align 8, !tbaa !5
  %32 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %33 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %34 = load i64, ptr %11, align 8, !tbaa !5
  %35 = icmp eq i64 %34, -1
  %.not = icmp ne i64 %32, 0
  %. = select i1 %.not, ptr %2, ptr %3
  %.189 = select i1 %.not, ptr %3, ptr %2
  %.0164 = load i64, ptr %.189, align 8, !tbaa !5
  %.0165 = load i64, ptr %., align 8, !tbaa !5
  br i1 %.not, label %38, label %36

36:                                               ; preds = %13
  %37 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not180 = icmp eq i64 %37, 0
  br i1 %.not180, label %.thread194.sink.split, label %38

38:                                               ; preds = %36, %13
  %.not181 = icmp eq i64 %33, 0
  br i1 %.not181, label %39, label %41

39:                                               ; preds = %38
  %40 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #4
  %.not182 = icmp eq i64 %40, 0
  br i1 %.not182, label %.thread194.sink.split, label %41

41:                                               ; preds = %39, %38
  %42 = load i64, ptr %2, align 8, !tbaa !5
  %43 = icmp slt i64 %42, 0
  br i1 %43, label %.thread194.sink.split, label %44

44:                                               ; preds = %41
  %45 = load i64, ptr %3, align 8, !tbaa !5
  %46 = icmp slt i64 %45, 0
  br i1 %46, label %.thread194.sink.split, label %47

47:                                               ; preds = %44
  %48 = load i64, ptr %4, align 8, !tbaa !5
  %49 = icmp slt i64 %48, 0
  %50 = icmp sgt i64 %48, %.0165
  %or.cond190 = select i1 %49, i1 true, i1 %50
  br i1 %or.cond190, label %.thread194.sink.split, label %51

51:                                               ; preds = %47
  %52 = load i64, ptr %6, align 8, !tbaa !5
  %53 = tail call i64 @llvm.smax.i64(i64 %.0165, i64 1)
  %54 = icmp slt i64 %52, %53
  br i1 %54, label %.thread194.sink.split, label %55

55:                                               ; preds = %51
  %56 = load i64, ptr %9, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %42, i64 1)
  %57 = icmp slt i64 %56, %spec.select
  br i1 %57, label %.thread194.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i64, ptr %11, align 8, !tbaa !5
  %60 = tail call i64 @llvm.smax.i64(i64 %.0164, i64 1)
  %61 = icmp sge i64 %59, %60
  %or.cond = select i1 %61, i1 true, i1 %35
  br i1 %or.cond, label %62, label %.thread194.sink.split

62:                                               ; preds = %58
  %.pr = load i64, ptr %12, align 8, !tbaa !5
  %63 = icmp eq i64 %.pr, 0
  br i1 %63, label %.thread, label %.thread194

.thread:                                          ; preds = %62
  store i64 1, ptr %16, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  %64 = getelementptr inbounds i8, ptr %16, i64 8
  store i64 1, ptr %64, align 8, !tbaa !5
  %65 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %65, align 8, !tbaa !9
  %66 = call i32 @s_cat(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull @c__2, i64 noundef 2) #4
  %67 = call i64 @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) #4
  %68 = call i64 @llvm.smin.i64(i64 %67, i64 64)
  %69 = mul nsw i64 %68, %60
  %70 = sitofp i64 %69 to double
  store double %70, ptr %10, align 8, !tbaa !11
  %.pr193.pr = load i64, ptr %12, align 8, !tbaa !5
  %.not184 = icmp eq i64 %.pr193.pr, 0
  br i1 %.not184, label %74, label %.thread194

.thread194.sink.split:                            ; preds = %58, %55, %51, %47, %44, %41, %39, %36
  %.sink = phi i64 [ -1, %36 ], [ -2, %39 ], [ -3, %41 ], [ -4, %44 ], [ -5, %47 ], [ -7, %51 ], [ -10, %55 ], [ -12, %58 ]
  store i64 %.sink, ptr %12, align 8, !tbaa !5
  br label %.thread194

.thread194:                                       ; preds = %.thread194.sink.split, %62, %.thread
  %71 = phi i64 [ %.pr193.pr, %.thread ], [ %.pr, %62 ], [ %.sink, %.thread194.sink.split ]
  %72 = sub nsw i64 0, %71
  store i64 %72, ptr %15, align 8, !tbaa !5
  %73 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %15) #4
  br label %155

74:                                               ; preds = %.thread
  br i1 %35, label %155, label %75

75:                                               ; preds = %74
  %76 = load i64, ptr %2, align 8, !tbaa !5
  %77 = icmp eq i64 %76, 0
  br i1 %77, label %84, label %78

78:                                               ; preds = %75
  %79 = load i64, ptr %3, align 8, !tbaa !5
  %80 = icmp eq i64 %79, 0
  br i1 %80, label %84, label %81

81:                                               ; preds = %78
  %82 = load i64, ptr %4, align 8, !tbaa !5
  %83 = icmp eq i64 %82, 0
  br i1 %83, label %84, label %85

84:                                               ; preds = %81, %78, %75
  store double 1.000000e+00, ptr %10, align 8, !tbaa !11
  br label %155

85:                                               ; preds = %81
  store i64 %.0164, ptr %24, align 8, !tbaa !5
  %86 = icmp sgt i64 %67, 1
  br i1 %86, label %87, label %.thread203

87:                                               ; preds = %85
  %88 = icmp slt i64 %68, %82
  br i1 %88, label %89, label %.thread199

89:                                               ; preds = %87
  %90 = mul nsw i64 %68, %.0164
  %91 = load i64, ptr %11, align 8, !tbaa !5
  %92 = icmp slt i64 %91, %90
  br i1 %92, label %93, label %.thread199

93:                                               ; preds = %89
  %94 = sdiv i64 %91, %.0164
  store i64 1, ptr %16, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !5
  store ptr %1, ptr %65, align 8, !tbaa !9
  %95 = call i32 @s_cat(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull @c__2, i64 noundef 2) #4
  %96 = call i64 @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) #4
  %97 = call i64 @llvm.smax.i64(i64 %96, i64 2)
  %98 = icmp slt i64 %94, %97
  br i1 %98, label %.thread203, label %..thread199_crit_edge

..thread199_crit_edge:                            ; preds = %93
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  br label %.thread199

.thread199:                                       ; preds = %..thread199_crit_edge, %87, %89
  %99 = phi i64 [ %.pre, %..thread199_crit_edge ], [ %82, %89 ], [ %82, %87 ]
  %.1202 = phi i64 [ %94, %..thread199_crit_edge ], [ %68, %89 ], [ %68, %87 ]
  %.fr187 = freeze i64 %99
  %.not186 = icmp slt i64 %.1202, %.fr187
  br i1 %.not186, label %101, label %.thread203

.thread203:                                       ; preds = %85, %.thread199, %93
  %100 = call i32 @dorm2r_(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 nonnull %10, ptr noundef nonnull %23) #4
  br label %.loopexit

101:                                              ; preds = %.thread199
  %102 = icmp ne i64 %33, 0
  %or.cond191 = xor i1 %.not, %102
  br i1 %or.cond191, label %108, label %103

103:                                              ; preds = %101
  %104 = add nsw i64 %.fr187, -1
  %105 = srem i64 %104, %.1202
  %106 = sub i64 %.fr187, %105
  %107 = sub nsw i64 0, %.1202
  br label %108

108:                                              ; preds = %101, %103
  %.0174 = phi i64 [ %106, %103 ], [ 1, %101 ]
  %109 = phi i64 [ 1, %103 ], [ %.fr187, %101 ]
  %.0172 = phi i64 [ %107, %103 ], [ %.1202, %101 ]
  br i1 %.not, label %110, label %112

110:                                              ; preds = %108
  %111 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %111, ptr %22, align 8, !tbaa !5
  br label %114

112:                                              ; preds = %108
  %113 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %113, ptr %21, align 8, !tbaa !5
  br label %114

114:                                              ; preds = %112, %110
  %115 = icmp slt i64 %.0172, 0
  %.0175.neg210 = sub i64 0, %.0174
  %116 = icmp sge i64 %.0174, %109
  %117 = icmp sle i64 %.0174, %109
  %.in211 = select i1 %115, i1 %116, i1 %117
  br i1 %.in211, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %114
  %118 = add i64 %.0165, 1
  %119 = add i64 %25, 1
  br i1 %.not, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph
  %invariant.gep = getelementptr i8, ptr %8, i64 -8
  br label %120

120:                                              ; preds = %120, %.lr.ph.split.us
  %.0175.neg215.us = phi i64 [ %.0175.neg210, %.lr.ph.split.us ], [ %.0175.neg.us, %120 ]
  %.0175212.us = phi i64 [ %.0174, %.lr.ph.split.us ], [ %133, %120 ]
  %121 = load i64, ptr %4, align 8, !tbaa !5
  %122 = add i64 %.0175.neg215.us, 1
  %123 = add i64 %122, %121
  %124 = call i64 @llvm.smin.i64(i64 %.1202, i64 %123)
  store i64 %124, ptr %20, align 8, !tbaa !5
  %125 = add i64 %118, %.0175.neg215.us
  store i64 %125, ptr %17, align 8, !tbaa !5
  %126 = mul i64 %.0175212.us, %119
  %127 = getelementptr inbounds double, ptr %27, i64 %126
  %128 = getelementptr inbounds double, ptr %28, i64 %.0175212.us
  %129 = call i32 @dlarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %127, ptr noundef nonnull %6, ptr noundef nonnull %128, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %130 = load i64, ptr %2, align 8, !tbaa !5
  %131 = add i64 %122, %130
  store i64 %131, ptr %21, align 8, !tbaa !5
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0175212.us
  %132 = call i32 @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 %127, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %gep, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %133 = add nsw i64 %.0175212.us, %.0172
  %.0175.neg.us = sub i64 0, %133
  %134 = icmp sge i64 %133, %109
  %135 = icmp sle i64 %133, %109
  %.in.us = select i1 %115, i1 %134, i1 %135
  br i1 %.in.us, label %120, label %.loopexit, !llvm.loop !13

.lr.ph.split:                                     ; preds = %.lr.ph
  %136 = getelementptr i8, ptr %31, i64 8
  br label %137

137:                                              ; preds = %.lr.ph.split, %137
  %.0175.neg215 = phi i64 [ %.0175.neg210, %.lr.ph.split ], [ %.0175.neg, %137 ]
  %.0175212 = phi i64 [ %.0174, %.lr.ph.split ], [ %152, %137 ]
  %138 = load i64, ptr %4, align 8, !tbaa !5
  %139 = add i64 %.0175.neg215, 1
  %140 = add i64 %139, %138
  %141 = call i64 @llvm.smin.i64(i64 %.1202, i64 %140)
  store i64 %141, ptr %20, align 8, !tbaa !5
  %142 = add i64 %118, %.0175.neg215
  store i64 %142, ptr %17, align 8, !tbaa !5
  %143 = mul i64 %.0175212, %119
  %144 = getelementptr inbounds double, ptr %27, i64 %143
  %145 = getelementptr inbounds double, ptr %28, i64 %.0175212
  %146 = call i32 @dlarft_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef %144, ptr noundef nonnull %6, ptr noundef nonnull %145, ptr noundef nonnull %19, ptr noundef nonnull @c__65) #4
  %147 = load i64, ptr %3, align 8, !tbaa !5
  %148 = add i64 %139, %147
  store i64 %148, ptr %22, align 8, !tbaa !5
  %149 = mul nsw i64 %.0175212, %29
  %150 = getelementptr double, ptr %136, i64 %149
  %151 = call i32 @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 %144, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__65, ptr noundef %150, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #4
  %152 = add nsw i64 %.0175212, %.0172
  %.0175.neg = sub i64 0, %152
  %153 = icmp sge i64 %152, %109
  %154 = icmp sle i64 %152, %109
  %.in = select i1 %115, i1 %153, i1 %154
  br i1 %.in, label %137, label %.loopexit, !llvm.loop !13

.loopexit:                                        ; preds = %137, %120, %114, %.thread203
  store double %70, ptr %10, align 8, !tbaa !11
  br label %155

155:                                              ; preds = %74, %.loopexit, %84, %.thread194
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 33280, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #4
  ret i32 0
}

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

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

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

declare i32 @dorm2r_(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 i32 @dlarft_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @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: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

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

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

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

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass