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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @dorgrq_(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) #0 {
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %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 i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %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 i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  store ptr %8, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, 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 4, 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 4, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  %40 = load ptr, ptr %14, align 8, !tbaa !5
  %41 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %41, ptr %19, align 4, !tbaa !9
  %42 = load i32, ptr %19, align 4, !tbaa !9
  %43 = mul nsw i32 %42, 1
  %44 = add nsw i32 1, %43
  store i32 %44, ptr %20, align 4, !tbaa !9
  %45 = load i32, ptr %20, align 4, !tbaa !9
  %46 = load ptr, ptr %13, align 8, !tbaa !5
  %47 = sext i32 %45 to i64
  %48 = sub i64 0, %47
  %49 = getelementptr inbounds double, ptr %46, i64 %48
  store ptr %49, ptr %13, align 8, !tbaa !5
  %50 = load ptr, ptr %15, align 8, !tbaa !5
  %51 = getelementptr inbounds double, ptr %50, i32 -1
  store ptr %51, ptr %15, align 8, !tbaa !5
  %52 = load ptr, ptr %16, align 8, !tbaa !5
  %53 = getelementptr inbounds double, ptr %52, i32 -1
  store ptr %53, ptr %16, align 8, !tbaa !5
  %54 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %54, align 4, !tbaa !9
  %55 = load ptr, ptr %17, align 8, !tbaa !5
  %56 = load i32, ptr %55, align 4, !tbaa !9
  %57 = icmp eq i32 %56, -1
  %58 = zext i1 %57 to i32
  store i32 %58, ptr %37, align 4, !tbaa !9
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  %60 = load i32, ptr %59, align 4, !tbaa !9
  %61 = icmp slt i32 %60, 0
  br i1 %61, label %62, label %64

62:                                               ; preds = %9
  %63 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -1, ptr %63, align 4, !tbaa !9
  br label %102

64:                                               ; preds = %9
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = load ptr, ptr %10, align 8, !tbaa !5
  %68 = load i32, ptr %67, align 4, !tbaa !9
  %69 = icmp slt i32 %66, %68
  br i1 %69, label %70, label %72

70:                                               ; preds = %64
  %71 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -2, ptr %71, align 4, !tbaa !9
  br label %101

72:                                               ; preds = %64
  %73 = load ptr, ptr %12, align 8, !tbaa !5
  %74 = load i32, ptr %73, align 4, !tbaa !9
  %75 = icmp slt i32 %74, 0
  br i1 %75, label %82, label %76

76:                                               ; preds = %72
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = load i32, ptr %77, align 4, !tbaa !9
  %79 = load ptr, ptr %10, align 8, !tbaa !5
  %80 = load i32, ptr %79, align 4, !tbaa !9
  %81 = icmp sgt i32 %78, %80
  br i1 %81, label %82, label %84

82:                                               ; preds = %76, %72
  %83 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -3, ptr %83, align 4, !tbaa !9
  br label %100

84:                                               ; preds = %76
  %85 = load ptr, ptr %14, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = load ptr, ptr %10, align 8, !tbaa !5
  %88 = load i32, ptr %87, align 4, !tbaa !9
  %89 = icmp sge i32 1, %88
  br i1 %89, label %90, label %91

90:                                               ; preds = %84
  br label %94

91:                                               ; preds = %84
  %92 = load ptr, ptr %10, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !9
  br label %94

94:                                               ; preds = %91, %90
  %95 = phi i32 [ 1, %90 ], [ %93, %91 ]
  %96 = icmp slt i32 %86, %95
  br i1 %96, label %97, label %99

97:                                               ; preds = %94
  %98 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -5, ptr %98, align 4, !tbaa !9
  br label %99

99:                                               ; preds = %97, %94
  br label %100

100:                                              ; preds = %99, %82
  br label %101

101:                                              ; preds = %100, %70
  br label %102

102:                                              ; preds = %101, %62
  %103 = load ptr, ptr %18, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = icmp eq i32 %104, 0
  br i1 %105, label %106, label %143

106:                                              ; preds = %102
  %107 = load ptr, ptr %10, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = icmp sle i32 %108, 0
  br i1 %109, label %110, label %111

110:                                              ; preds = %106
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %120

111:                                              ; preds = %106
  %112 = load ptr, ptr %10, align 8, !tbaa !5
  %113 = load ptr, ptr %11, align 8, !tbaa !5
  %114 = load ptr, ptr %12, align 8, !tbaa !5
  %115 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %112, ptr noundef %113, ptr noundef %114, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %115, ptr %31, align 4, !tbaa !9
  %116 = load ptr, ptr %10, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  %118 = load i32, ptr %31, align 4, !tbaa !9
  %119 = mul nsw i32 %117, %118
  store i32 %119, ptr %36, align 4, !tbaa !9
  br label %120

120:                                              ; preds = %111, %110
  %121 = load i32, ptr %36, align 4, !tbaa !9
  %122 = sitofp i32 %121 to double
  %123 = load ptr, ptr %16, align 8, !tbaa !5
  %124 = getelementptr inbounds double, ptr %123, i64 1
  store double %122, ptr %124, align 8, !tbaa !11
  %125 = load ptr, ptr %17, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = load ptr, ptr %10, align 8, !tbaa !5
  %128 = load i32, ptr %127, align 4, !tbaa !9
  %129 = icmp sge i32 1, %128
  br i1 %129, label %130, label %131

130:                                              ; preds = %120
  br label %134

131:                                              ; preds = %120
  %132 = load ptr, ptr %10, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %131, %130
  %135 = phi i32 [ 1, %130 ], [ %133, %131 ]
  %136 = icmp slt i32 %126, %135
  br i1 %136, label %137, label %142

137:                                              ; preds = %134
  %138 = load i32, ptr %37, align 4, !tbaa !9
  %139 = icmp ne i32 %138, 0
  br i1 %139, label %142, label %140

140:                                              ; preds = %137
  %141 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -8, ptr %141, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %140, %137, %134
  br label %143

143:                                              ; preds = %142, %102
  %144 = load ptr, ptr %18, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %152

147:                                              ; preds = %143
  %148 = load ptr, ptr %18, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = sub nsw i32 0, %149
  store i32 %150, ptr %21, align 4, !tbaa !9
  %151 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %21, i32 noundef 6)
  store i32 1, ptr %39, align 4
  br label %500

152:                                              ; preds = %143
  %153 = load i32, ptr %37, align 4, !tbaa !9
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %155, label %156

155:                                              ; preds = %152
  store i32 1, ptr %39, align 4
  br label %500

156:                                              ; preds = %152
  br label %157

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

161:                                              ; preds = %157
  store i32 1, ptr %39, align 4
  br label %500

162:                                              ; preds = %157
  store i32 2, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %34, align 4, !tbaa !9
  %163 = load ptr, ptr %10, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  store i32 %164, ptr %38, align 4, !tbaa !9
  %165 = load i32, ptr %31, align 4, !tbaa !9
  %166 = icmp sgt i32 %165, 1
  br i1 %166, label %167, label %220

167:                                              ; preds = %162
  %168 = load i32, ptr %31, align 4, !tbaa !9
  %169 = load ptr, ptr %12, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = icmp slt i32 %168, %170
  br i1 %171, label %172, label %220

172:                                              ; preds = %167
  store i32 0, ptr %21, align 4, !tbaa !9
  %173 = load ptr, ptr %10, align 8, !tbaa !5
  %174 = load ptr, ptr %11, align 8, !tbaa !5
  %175 = load ptr, ptr %12, align 8, !tbaa !5
  %176 = call i32 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %173, ptr noundef %174, ptr noundef %175, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %176, ptr %22, align 4, !tbaa !9
  %177 = load i32, ptr %21, align 4, !tbaa !9
  %178 = load i32, ptr %22, align 4, !tbaa !9
  %179 = icmp sge i32 %177, %178
  br i1 %179, label %180, label %182

180:                                              ; preds = %172
  %181 = load i32, ptr %21, align 4, !tbaa !9
  br label %184

182:                                              ; preds = %172
  %183 = load i32, ptr %22, align 4, !tbaa !9
  br label %184

184:                                              ; preds = %182, %180
  %185 = phi i32 [ %181, %180 ], [ %183, %182 ]
  store i32 %185, ptr %34, align 4, !tbaa !9
  %186 = load i32, ptr %34, align 4, !tbaa !9
  %187 = load ptr, ptr %12, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = icmp slt i32 %186, %188
  br i1 %189, label %190, label %219

190:                                              ; preds = %184
  %191 = load ptr, ptr %10, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  store i32 %192, ptr %35, align 4, !tbaa !9
  %193 = load i32, ptr %35, align 4, !tbaa !9
  %194 = load i32, ptr %31, align 4, !tbaa !9
  %195 = mul nsw i32 %193, %194
  store i32 %195, ptr %38, align 4, !tbaa !9
  %196 = load ptr, ptr %17, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = load i32, ptr %38, align 4, !tbaa !9
  %199 = icmp slt i32 %197, %198
  br i1 %199, label %200, label %218

200:                                              ; preds = %190
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = load i32, ptr %35, align 4, !tbaa !9
  %204 = sdiv i32 %202, %203
  store i32 %204, ptr %31, align 4, !tbaa !9
  store i32 2, ptr %21, align 4, !tbaa !9
  %205 = load ptr, ptr %10, align 8, !tbaa !5
  %206 = load ptr, ptr %11, align 8, !tbaa !5
  %207 = load ptr, ptr %12, align 8, !tbaa !5
  %208 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %205, ptr noundef %206, ptr noundef %207, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %208, ptr %22, align 4, !tbaa !9
  %209 = load i32, ptr %21, align 4, !tbaa !9
  %210 = load i32, ptr %22, align 4, !tbaa !9
  %211 = icmp sge i32 %209, %210
  br i1 %211, label %212, label %214

212:                                              ; preds = %200
  %213 = load i32, ptr %21, align 4, !tbaa !9
  br label %216

214:                                              ; preds = %200
  %215 = load i32, ptr %22, align 4, !tbaa !9
  br label %216

216:                                              ; preds = %214, %212
  %217 = phi i32 [ %213, %212 ], [ %215, %214 ]
  store i32 %217, ptr %28, align 4, !tbaa !9
  br label %218

218:                                              ; preds = %216, %190
  br label %219

219:                                              ; preds = %218, %184
  br label %220

220:                                              ; preds = %219, %167, %162
  %221 = load i32, ptr %31, align 4, !tbaa !9
  %222 = load i32, ptr %28, align 4, !tbaa !9
  %223 = icmp sge i32 %221, %222
  br i1 %223, label %224, label %294

224:                                              ; preds = %220
  %225 = load i32, ptr %31, align 4, !tbaa !9
  %226 = load ptr, ptr %12, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = icmp slt i32 %225, %227
  br i1 %228, label %229, label %294

229:                                              ; preds = %224
  %230 = load i32, ptr %34, align 4, !tbaa !9
  %231 = load ptr, ptr %12, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = icmp slt i32 %230, %232
  br i1 %233, label %234, label %294

234:                                              ; preds = %229
  %235 = load ptr, ptr %12, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  store i32 %236, ptr %21, align 4, !tbaa !9
  %237 = load ptr, ptr %12, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = load i32, ptr %34, align 4, !tbaa !9
  %240 = sub nsw i32 %238, %239
  %241 = load i32, ptr %31, align 4, !tbaa !9
  %242 = add nsw i32 %240, %241
  %243 = sub nsw i32 %242, 1
  %244 = load i32, ptr %31, align 4, !tbaa !9
  %245 = sdiv i32 %243, %244
  %246 = load i32, ptr %31, align 4, !tbaa !9
  %247 = mul nsw i32 %245, %246
  store i32 %247, ptr %22, align 4, !tbaa !9
  %248 = load i32, ptr %21, align 4, !tbaa !9
  %249 = load i32, ptr %22, align 4, !tbaa !9
  %250 = icmp sle i32 %248, %249
  br i1 %250, label %251, label %253

251:                                              ; preds = %234
  %252 = load i32, ptr %21, align 4, !tbaa !9
  br label %255

253:                                              ; preds = %234
  %254 = load i32, ptr %22, align 4, !tbaa !9
  br label %255

255:                                              ; preds = %253, %251
  %256 = phi i32 [ %252, %251 ], [ %254, %253 ]
  store i32 %256, ptr %33, align 4, !tbaa !9
  %257 = load ptr, ptr %11, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  store i32 %258, ptr %21, align 4, !tbaa !9
  %259 = load ptr, ptr %11, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = load i32, ptr %33, align 4, !tbaa !9
  %262 = sub nsw i32 %260, %261
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %26, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %290, %255
  %265 = load i32, ptr %26, align 4, !tbaa !9
  %266 = load i32, ptr %21, align 4, !tbaa !9
  %267 = icmp sle i32 %265, %266
  br i1 %267, label %268, label %293

268:                                              ; preds = %264
  %269 = load ptr, ptr %10, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = load i32, ptr %33, align 4, !tbaa !9
  %272 = sub nsw i32 %270, %271
  store i32 %272, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %273

273:                                              ; preds = %286, %268
  %274 = load i32, ptr %25, align 4, !tbaa !9
  %275 = load i32, ptr %22, align 4, !tbaa !9
  %276 = icmp sle i32 %274, %275
  br i1 %276, label %277, label %289

277:                                              ; preds = %273
  %278 = load ptr, ptr %13, align 8, !tbaa !5
  %279 = load i32, ptr %25, align 4, !tbaa !9
  %280 = load i32, ptr %26, align 4, !tbaa !9
  %281 = load i32, ptr %19, align 4, !tbaa !9
  %282 = mul nsw i32 %280, %281
  %283 = add nsw i32 %279, %282
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %278, i64 %284
  store double 0.000000e+00, ptr %285, align 8, !tbaa !11
  br label %286

286:                                              ; preds = %277
  %287 = load i32, ptr %25, align 4, !tbaa !9
  %288 = add nsw i32 %287, 1
  store i32 %288, ptr %25, align 4, !tbaa !9
  br label %273, !llvm.loop !13

289:                                              ; preds = %273
  br label %290

290:                                              ; preds = %289
  %291 = load i32, ptr %26, align 4, !tbaa !9
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr %26, align 4, !tbaa !9
  br label %264, !llvm.loop !15

293:                                              ; preds = %264
  br label %295

294:                                              ; preds = %229, %224, %220
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %295

295:                                              ; preds = %294, %293
  %296 = load ptr, ptr %10, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = load i32, ptr %33, align 4, !tbaa !9
  %299 = sub nsw i32 %297, %298
  store i32 %299, ptr %21, align 4, !tbaa !9
  %300 = load ptr, ptr %11, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = load i32, ptr %33, align 4, !tbaa !9
  %303 = sub nsw i32 %301, %302
  store i32 %303, ptr %22, align 4, !tbaa !9
  %304 = load ptr, ptr %12, align 8, !tbaa !5
  %305 = load i32, ptr %304, align 4, !tbaa !9
  %306 = load i32, ptr %33, align 4, !tbaa !9
  %307 = sub nsw i32 %305, %306
  store i32 %307, ptr %23, align 4, !tbaa !9
  %308 = load ptr, ptr %13, align 8, !tbaa !5
  %309 = load i32, ptr %20, align 4, !tbaa !9
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds double, ptr %308, i64 %310
  %312 = load ptr, ptr %14, align 8, !tbaa !5
  %313 = load ptr, ptr %15, align 8, !tbaa !5
  %314 = getelementptr inbounds double, ptr %313, i64 1
  %315 = load ptr, ptr %16, align 8, !tbaa !5
  %316 = getelementptr inbounds double, ptr %315, i64 1
  call void @dorgr2_(ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %311, ptr noundef %312, ptr noundef %314, ptr noundef %316, ptr noundef %29)
  %317 = load i32, ptr %33, align 4, !tbaa !9
  %318 = icmp sgt i32 %317, 0
  br i1 %318, label %319, label %495

319:                                              ; preds = %295
  %320 = load ptr, ptr %12, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  store i32 %321, ptr %21, align 4, !tbaa !9
  %322 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %322, ptr %22, align 4, !tbaa !9
  %323 = load ptr, ptr %12, align 8, !tbaa !5
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = load i32, ptr %33, align 4, !tbaa !9
  %326 = sub nsw i32 %324, %325
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr %25, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %490, %319
  %329 = load i32, ptr %22, align 4, !tbaa !9
  %330 = icmp slt i32 %329, 0
  br i1 %330, label %331, label %336

331:                                              ; preds = %328
  %332 = load i32, ptr %25, align 4, !tbaa !9
  %333 = load i32, ptr %21, align 4, !tbaa !9
  %334 = icmp sge i32 %332, %333
  %335 = zext i1 %334 to i32
  br label %341

336:                                              ; preds = %328
  %337 = load i32, ptr %25, align 4, !tbaa !9
  %338 = load i32, ptr %21, align 4, !tbaa !9
  %339 = icmp sle i32 %337, %338
  %340 = zext i1 %339 to i32
  br label %341

341:                                              ; preds = %336, %331
  %342 = phi i32 [ %335, %331 ], [ %340, %336 ]
  %343 = icmp ne i32 %342, 0
  br i1 %343, label %344, label %494

344:                                              ; preds = %341
  %345 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %345, ptr %23, align 4, !tbaa !9
  %346 = load ptr, ptr %12, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = load i32, ptr %25, align 4, !tbaa !9
  %349 = sub nsw i32 %347, %348
  %350 = add nsw i32 %349, 1
  store i32 %350, ptr %24, align 4, !tbaa !9
  %351 = load i32, ptr %23, align 4, !tbaa !9
  %352 = load i32, ptr %24, align 4, !tbaa !9
  %353 = icmp sle i32 %351, %352
  br i1 %353, label %354, label %356

354:                                              ; preds = %344
  %355 = load i32, ptr %23, align 4, !tbaa !9
  br label %358

356:                                              ; preds = %344
  %357 = load i32, ptr %24, align 4, !tbaa !9
  br label %358

358:                                              ; preds = %356, %354
  %359 = phi i32 [ %355, %354 ], [ %357, %356 ]
  store i32 %359, ptr %30, align 4, !tbaa !9
  %360 = load ptr, ptr %10, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = load ptr, ptr %12, align 8, !tbaa !5
  %363 = load i32, ptr %362, align 4, !tbaa !9
  %364 = sub nsw i32 %361, %363
  %365 = load i32, ptr %25, align 4, !tbaa !9
  %366 = add nsw i32 %364, %365
  store i32 %366, ptr %32, align 4, !tbaa !9
  %367 = load i32, ptr %32, align 4, !tbaa !9
  %368 = icmp sgt i32 %367, 1
  br i1 %368, label %369, label %424

369:                                              ; preds = %358
  %370 = load ptr, ptr %11, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = load ptr, ptr %12, align 8, !tbaa !5
  %373 = load i32, ptr %372, align 4, !tbaa !9
  %374 = sub nsw i32 %371, %373
  %375 = load i32, ptr %25, align 4, !tbaa !9
  %376 = add nsw i32 %374, %375
  %377 = load i32, ptr %30, align 4, !tbaa !9
  %378 = add nsw i32 %376, %377
  %379 = sub nsw i32 %378, 1
  store i32 %379, ptr %23, align 4, !tbaa !9
  %380 = load ptr, ptr %13, align 8, !tbaa !5
  %381 = load i32, ptr %32, align 4, !tbaa !9
  %382 = load i32, ptr %19, align 4, !tbaa !9
  %383 = add nsw i32 %381, %382
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds double, ptr %380, i64 %384
  %386 = load ptr, ptr %14, align 8, !tbaa !5
  %387 = load ptr, ptr %15, align 8, !tbaa !5
  %388 = load i32, ptr %25, align 4, !tbaa !9
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %387, i64 %389
  %391 = load ptr, ptr %16, align 8, !tbaa !5
  %392 = getelementptr inbounds double, ptr %391, i64 1
  call void @dlarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %23, ptr noundef %30, ptr noundef %385, ptr noundef %386, ptr noundef %390, ptr noundef %392, ptr noundef %35)
  %393 = load i32, ptr %32, align 4, !tbaa !9
  %394 = sub nsw i32 %393, 1
  store i32 %394, ptr %23, align 4, !tbaa !9
  %395 = load ptr, ptr %11, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = load ptr, ptr %12, align 8, !tbaa !5
  %398 = load i32, ptr %397, align 4, !tbaa !9
  %399 = sub nsw i32 %396, %398
  %400 = load i32, ptr %25, align 4, !tbaa !9
  %401 = add nsw i32 %399, %400
  %402 = load i32, ptr %30, align 4, !tbaa !9
  %403 = add nsw i32 %401, %402
  %404 = sub nsw i32 %403, 1
  store i32 %404, ptr %24, align 4, !tbaa !9
  %405 = load ptr, ptr %13, align 8, !tbaa !5
  %406 = load i32, ptr %32, align 4, !tbaa !9
  %407 = load i32, ptr %19, align 4, !tbaa !9
  %408 = add nsw i32 %406, %407
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds double, ptr %405, i64 %409
  %411 = load ptr, ptr %14, align 8, !tbaa !5
  %412 = load ptr, ptr %16, align 8, !tbaa !5
  %413 = getelementptr inbounds double, ptr %412, i64 1
  %414 = load ptr, ptr %13, align 8, !tbaa !5
  %415 = load i32, ptr %20, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %414, i64 %416
  %418 = load ptr, ptr %14, align 8, !tbaa !5
  %419 = load ptr, ptr %16, align 8, !tbaa !5
  %420 = load i32, ptr %30, align 4, !tbaa !9
  %421 = add nsw i32 %420, 1
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %419, i64 %422
  call void @dlarfb_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %23, ptr noundef %24, ptr noundef %30, ptr noundef %410, ptr noundef %411, ptr noundef %413, ptr noundef %35, ptr noundef %417, ptr noundef %418, ptr noundef %423, ptr noundef %35)
  br label %424

424:                                              ; preds = %369, %358
  %425 = load ptr, ptr %11, align 8, !tbaa !5
  %426 = load i32, ptr %425, align 4, !tbaa !9
  %427 = load ptr, ptr %12, align 8, !tbaa !5
  %428 = load i32, ptr %427, align 4, !tbaa !9
  %429 = sub nsw i32 %426, %428
  %430 = load i32, ptr %25, align 4, !tbaa !9
  %431 = add nsw i32 %429, %430
  %432 = load i32, ptr %30, align 4, !tbaa !9
  %433 = add nsw i32 %431, %432
  %434 = sub nsw i32 %433, 1
  store i32 %434, ptr %23, align 4, !tbaa !9
  %435 = load ptr, ptr %13, align 8, !tbaa !5
  %436 = load i32, ptr %32, align 4, !tbaa !9
  %437 = load i32, ptr %19, align 4, !tbaa !9
  %438 = add nsw i32 %436, %437
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %435, i64 %439
  %441 = load ptr, ptr %14, align 8, !tbaa !5
  %442 = load ptr, ptr %15, align 8, !tbaa !5
  %443 = load i32, ptr %25, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %442, i64 %444
  %446 = load ptr, ptr %16, align 8, !tbaa !5
  %447 = getelementptr inbounds double, ptr %446, i64 1
  call void @dorgr2_(ptr noundef %30, ptr noundef %23, ptr noundef %30, ptr noundef %440, ptr noundef %441, ptr noundef %445, ptr noundef %447, ptr noundef %29)
  %448 = load ptr, ptr %11, align 8, !tbaa !5
  %449 = load i32, ptr %448, align 4, !tbaa !9
  store i32 %449, ptr %23, align 4, !tbaa !9
  %450 = load ptr, ptr %11, align 8, !tbaa !5
  %451 = load i32, ptr %450, align 4, !tbaa !9
  %452 = load ptr, ptr %12, align 8, !tbaa !5
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = sub nsw i32 %451, %453
  %455 = load i32, ptr %25, align 4, !tbaa !9
  %456 = add nsw i32 %454, %455
  %457 = load i32, ptr %30, align 4, !tbaa !9
  %458 = add nsw i32 %456, %457
  store i32 %458, ptr %27, align 4, !tbaa !9
  br label %459

459:                                              ; preds = %486, %424
  %460 = load i32, ptr %27, align 4, !tbaa !9
  %461 = load i32, ptr %23, align 4, !tbaa !9
  %462 = icmp sle i32 %460, %461
  br i1 %462, label %463, label %489

463:                                              ; preds = %459
  %464 = load i32, ptr %32, align 4, !tbaa !9
  %465 = load i32, ptr %30, align 4, !tbaa !9
  %466 = add nsw i32 %464, %465
  %467 = sub nsw i32 %466, 1
  store i32 %467, ptr %24, align 4, !tbaa !9
  %468 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %468, ptr %26, align 4, !tbaa !9
  br label %469

469:                                              ; preds = %482, %463
  %470 = load i32, ptr %26, align 4, !tbaa !9
  %471 = load i32, ptr %24, align 4, !tbaa !9
  %472 = icmp sle i32 %470, %471
  br i1 %472, label %473, label %485

473:                                              ; preds = %469
  %474 = load ptr, ptr %13, align 8, !tbaa !5
  %475 = load i32, ptr %26, align 4, !tbaa !9
  %476 = load i32, ptr %27, align 4, !tbaa !9
  %477 = load i32, ptr %19, align 4, !tbaa !9
  %478 = mul nsw i32 %476, %477
  %479 = add nsw i32 %475, %478
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds double, ptr %474, i64 %480
  store double 0.000000e+00, ptr %481, align 8, !tbaa !11
  br label %482

482:                                              ; preds = %473
  %483 = load i32, ptr %26, align 4, !tbaa !9
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr %26, align 4, !tbaa !9
  br label %469, !llvm.loop !16

485:                                              ; preds = %469
  br label %486

486:                                              ; preds = %485
  %487 = load i32, ptr %27, align 4, !tbaa !9
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr %27, align 4, !tbaa !9
  br label %459, !llvm.loop !17

489:                                              ; preds = %459
  br label %490

490:                                              ; preds = %489
  %491 = load i32, ptr %22, align 4, !tbaa !9
  %492 = load i32, ptr %25, align 4, !tbaa !9
  %493 = add nsw i32 %492, %491
  store i32 %493, ptr %25, align 4, !tbaa !9
  br label %328, !llvm.loop !18

494:                                              ; preds = %341
  br label %495

495:                                              ; preds = %494, %295
  %496 = load i32, ptr %38, align 4, !tbaa !9
  %497 = sitofp i32 %496 to double
  %498 = load ptr, ptr %16, align 8, !tbaa !5
  %499 = getelementptr inbounds double, ptr %498, i64 1
  store double %497, ptr %499, align 8, !tbaa !11
  store i32 1, ptr %39, align 4
  br label %500

500:                                              ; preds = %495, %161, %155, %147
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #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 @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 @dorgr2_(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

; 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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}


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

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

; Function Attrs: nounwind uwtable
define dso_local void @dorgrq_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef %8) local_unnamed_addr #0 {
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  %17 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %17, -1
  %18 = sext i32 %narrow to i64
  %19 = getelementptr inbounds double, ptr %3, i64 %18
  %20 = getelementptr inbounds i8, ptr %5, i64 -8
  store i32 0, ptr %8, align 4, !tbaa !5
  %21 = load i32, ptr %7, align 4, !tbaa !5
  %22 = icmp eq i32 %21, -1
  %23 = load i32, ptr %0, align 4, !tbaa !5
  %24 = icmp slt i32 %23, 0
  br i1 %24, label %.thread195.sink.split, label %25

25:                                               ; preds = %9
  %26 = load i32, ptr %1, align 4, !tbaa !5
  %27 = icmp slt i32 %26, %23
  br i1 %27, label %.thread195.sink.split, label %28

28:                                               ; preds = %25
  %29 = load i32, ptr %2, align 4, !tbaa !5
  %or.cond188 = icmp ugt i32 %29, %23
  br i1 %or.cond188, label %.thread195.sink.split, label %30

30:                                               ; preds = %28
  %31 = load i32, ptr %4, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %23, i32 1)
  %32 = icmp slt i32 %31, %spec.select
  br i1 %32, label %.thread195.sink.split, label %33

33:                                               ; preds = %30
  %34 = icmp eq i32 %23, 0
  br i1 %34, label %40, label %35

35:                                               ; preds = %33
  %36 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %37 = load i32, ptr %0, align 4, !tbaa !5
  %38 = mul nsw i32 %37, %36
  %39 = sitofp i32 %38 to double
  %.pre = load i32, ptr %7, align 4, !tbaa !5
  br label %40

40:                                               ; preds = %33, %35
  %41 = phi i32 [ %37, %35 ], [ 0, %33 ]
  %42 = phi i32 [ %.pre, %35 ], [ %21, %33 ]
  %.0159 = phi i32 [ %36, %35 ], [ undef, %33 ]
  %.0156 = phi double [ %39, %35 ], [ 1.000000e+00, %33 ]
  store double %.0156, ptr %6, align 8, !tbaa !9
  %spec.select189 = tail call i32 @llvm.smax.i32(i32 %41, i32 1)
  %43 = icmp sge i32 %42, %spec.select189
  %or.cond = select i1 %43, i1 true, i1 %22
  br i1 %or.cond, label %.thread, label %.thread195.sink.split

.thread:                                          ; preds = %40
  %.pr192.pr = load i32, ptr %8, align 4, !tbaa !5
  %.not = icmp eq i32 %.pr192.pr, 0
  br i1 %.not, label %47, label %.thread195

.thread195.sink.split:                            ; preds = %40, %30, %28, %25, %9
  %.sink = phi i32 [ -1, %9 ], [ -2, %25 ], [ -3, %28 ], [ -5, %30 ], [ -8, %40 ]
  store i32 %.sink, ptr %8, align 4, !tbaa !5
  br label %.thread195

.thread195:                                       ; preds = %.thread195.sink.split, %.thread
  %44 = phi i32 [ %.pr192.pr, %.thread ], [ %.sink, %.thread195.sink.split ]
  %45 = sub nsw i32 0, %44
  store i32 %45, ptr %10, align 4, !tbaa !5
  %46 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %10, i32 noundef 6) #5
  br label %178

47:                                               ; preds = %.thread
  %48 = icmp slt i32 %41, 1
  %or.cond264 = or i1 %22, %48
  br i1 %or.cond264, label %178, label %49

49:                                               ; preds = %47
  %50 = icmp sgt i32 %.0159, 1
  %.pre250 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %50, label %51, label %.thread210

51:                                               ; preds = %49
  %52 = icmp slt i32 %.0159, %.pre250
  br i1 %52, label %53, label %.thread199

53:                                               ; preds = %51
  %54 = tail call i32 @ilaenv_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %55 = tail call i32 @llvm.smax.i32(i32 %54, i32 0)
  %56 = load i32, ptr %2, align 4, !tbaa !5
  %57 = icmp slt i32 %55, %56
  br i1 %57, label %58, label %.thread199

58:                                               ; preds = %53
  %59 = load i32, ptr %0, align 4, !tbaa !5
  store i32 %59, ptr %16, align 4, !tbaa !5
  %60 = mul nsw i32 %59, %.0159
  %61 = load i32, ptr %7, align 4, !tbaa !5
  %62 = icmp slt i32 %61, %60
  br i1 %62, label %63, label %.thread199

63:                                               ; preds = %58
  %64 = sdiv i32 %61, %59
  %65 = tail call i32 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %66 = tail call i32 @llvm.smax.i32(i32 %65, i32 2)
  %.not180 = icmp slt i32 %64, %66
  %.pre251 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not180, label %.thread210, label %.thread199

.thread199:                                       ; preds = %63, %51, %53, %58
  %67 = phi i32 [ %.pre250, %51 ], [ %56, %53 ], [ %56, %58 ], [ %.pre251, %63 ]
  %.0208 = phi i32 [ %41, %51 ], [ %41, %53 ], [ %60, %58 ], [ %60, %63 ]
  %.0157207 = phi i32 [ 0, %51 ], [ %55, %53 ], [ %55, %58 ], [ %55, %63 ]
  %.2205 = phi i32 [ %.0159, %51 ], [ %.0159, %53 ], [ %.0159, %58 ], [ %64, %63 ]
  %68 = icmp slt i32 %.2205, %67
  %69 = icmp slt i32 %.0157207, %67
  %or.cond190 = and i1 %68, %69
  br i1 %or.cond190, label %70, label %.thread210

70:                                               ; preds = %.thread199
  %71 = sub nsw i32 %.2205, %.0157207
  %72 = add i32 %71, %67
  %.fr181 = freeze i32 %72
  %73 = add i32 %.fr181, -1
  %74 = srem i32 %73, %.2205
  %75 = sub nsw i32 %73, %74
  store i32 %75, ptr %11, align 4, !tbaa !5
  %76 = tail call i32 @llvm.smin.i32(i32 %67, i32 %75)
  %77 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %77, ptr %10, align 4, !tbaa !5
  %.not183.not226 = icmp sgt i32 %76, 0
  br i1 %.not183.not226, label %.lr.ph228, label %.thread210

.lr.ph228:                                        ; preds = %70
  %78 = load i32, ptr %0, align 4, !tbaa !5
  %.not187223.not = icmp sgt i32 %78, %76
  br i1 %.not187223.not, label %.lr.ph.preheader, label %.thread210

.lr.ph.preheader:                                 ; preds = %.lr.ph228
  %79 = sub i32 %77, %76
  %.0162225 = add i32 %79, 1
  %80 = shl nsw i64 %18, 3
  %scevgep = getelementptr i8, ptr %3, i64 %80
  %81 = mul i32 %17, %.0162225
  %82 = add i32 %81, 1
  %83 = xor i32 %76, -1
  %84 = add i32 %78, %83
  %85 = zext i32 %84 to i64
  %86 = shl nuw nsw i64 %85, 3
  %87 = add nuw nsw i64 %86, 8
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvar = phi i32 [ 0, %.lr.ph.preheader ], [ %indvar.next, %.lr.ph ]
  %.0162227 = phi i32 [ %.0162225, %.lr.ph.preheader ], [ %.0162, %.lr.ph ]
  %88 = mul i32 %17, %indvar
  %89 = add i32 %82, %88
  %90 = sext i32 %89 to i64
  %91 = shl nsw i64 %90, 3
  %scevgep242 = getelementptr i8, ptr %scevgep, i64 %91
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep242, i8 0, i64 %87, i1 false), !tbaa !9
  %.0162 = add nsw i32 %.0162227, 1
  %.not183.not = icmp slt i32 %.0162227, %77
  %indvar.next = add i32 %indvar, 1
  br i1 %.not183.not, label %.lr.ph, label %.thread210, !llvm.loop !11

.thread210:                                       ; preds = %.lr.ph, %70, %.lr.ph228, %49, %63, %.thread199
  %92 = phi i32 [ %67, %.thread199 ], [ %.pre251, %63 ], [ %.pre250, %49 ], [ %67, %.lr.ph228 ], [ %67, %70 ], [ %67, %.lr.ph ]
  %.0209 = phi i32 [ %.0208, %.thread199 ], [ %60, %63 ], [ %41, %49 ], [ %.0208, %.lr.ph228 ], [ %.0208, %70 ], [ %.0208, %.lr.ph ]
  %.2206 = phi i32 [ %.2205, %.thread199 ], [ %64, %63 ], [ %.0159, %49 ], [ %.2205, %.lr.ph228 ], [ %.2205, %70 ], [ %.2205, %.lr.ph ]
  %.0158 = phi i32 [ 0, %.thread199 ], [ 0, %63 ], [ 0, %49 ], [ %76, %.lr.ph228 ], [ %76, %70 ], [ %76, %.lr.ph ]
  %93 = load i32, ptr %0, align 4, !tbaa !5
  %94 = sub nsw i32 %93, %.0158
  store i32 %94, ptr %10, align 4, !tbaa !5
  %95 = load i32, ptr %1, align 4, !tbaa !5
  %96 = sub nsw i32 %95, %.0158
  store i32 %96, ptr %11, align 4, !tbaa !5
  %97 = sub nsw i32 %92, %.0158
  store i32 %97, ptr %12, align 4, !tbaa !5
  call void @dorgr2_(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  %98 = icmp sgt i32 %.0158, 0
  br i1 %98, label %99, label %.loopexit

99:                                               ; preds = %.thread210
  %100 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %100, ptr %10, align 4, !tbaa !5
  store i32 %.2206, ptr %11, align 4, !tbaa !5
  %reass.sub = sub i32 %100, %.0158
  %101 = add i32 %reass.sub, 1
  %102 = icmp slt i32 %.2206, 0
  %103 = icmp sge i32 %101, %100
  %104 = icmp sle i32 %101, %100
  %.in237 = select i1 %102, i1 %103, i1 %104
  br i1 %.in237, label %.lr.ph239.preheader, label %.loopexit

.lr.ph239.preheader:                              ; preds = %99
  %105 = shl nsw i64 %18, 3
  %scevgep244 = getelementptr i8, ptr %3, i64 %105
  %.pre253.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %.lr.ph239

.lr.ph239:                                        ; preds = %.lr.ph239.preheader, %._crit_edge236
  %.pre253 = phi i32 [ %142, %._crit_edge236 ], [ %.pre253.pre, %.lr.ph239.preheader ]
  %106 = phi i32 [ %143, %._crit_edge236 ], [ %100, %.lr.ph239.preheader ]
  %.1165238 = phi i32 [ %172, %._crit_edge236 ], [ %101, %.lr.ph239.preheader ]
  %107 = sub nsw i32 %106, %.1165238
  %108 = add nsw i32 %107, 1
  store i32 %108, ptr %13, align 4, !tbaa !5
  %109 = call i32 @llvm.smin.i32(i32 %.2206, i32 %108)
  store i32 %109, ptr %15, align 4, !tbaa !5
  %110 = load i32, ptr %0, align 4, !tbaa !5
  %111 = sub nsw i32 %110, %106
  %112 = add nsw i32 %111, %.1165238
  %113 = icmp sgt i32 %112, 1
  br i1 %113, label %114, label %.lr.ph239._crit_edge

.lr.ph239._crit_edge:                             ; preds = %.lr.ph239
  %.pre257 = add i32 %.1165238, -1
  %.pre258 = add nsw i32 %112, %17
  %.pre260 = sext i32 %.pre258 to i64
  %.pre262 = sext i32 %.1165238 to i64
  br label %133

114:                                              ; preds = %.lr.ph239
  %115 = xor i32 %106, -1
  %116 = add i32 %.1165238, %115
  %117 = add i32 %116, %109
  %118 = add i32 %117, %.pre253
  store i32 %118, ptr %12, align 4, !tbaa !5
  %119 = add nsw i32 %112, %17
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds double, ptr %19, i64 %120
  %122 = sext i32 %.1165238 to i64
  %123 = getelementptr inbounds double, ptr %20, i64 %122
  call void @dlarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef %121, ptr noundef nonnull %4, ptr noundef nonnull %123, ptr noundef nonnull %6, ptr noundef nonnull %16) #5
  %124 = add nsw i32 %112, -1
  store i32 %124, ptr %12, align 4, !tbaa !5
  %125 = load i32, ptr %1, align 4, !tbaa !5
  %126 = load i32, ptr %2, align 4, !tbaa !5
  %127 = load i32, ptr %15, align 4, !tbaa !5
  %128 = add i32 %.1165238, -1
  %129 = add i32 %128, %125
  %130 = sub i32 %129, %126
  %131 = add i32 %130, %127
  store i32 %131, ptr %13, align 4, !tbaa !5
  %132 = sext i32 %127 to i64
  %gep = getelementptr double, ptr %6, i64 %132
  call void @dlarfb_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %121, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %gep, ptr noundef nonnull %16) #5
  %.pre252 = load i32, ptr %1, align 4, !tbaa !5
  %.pre254 = load i32, ptr %2, align 4, !tbaa !5
  %.pre255 = load i32, ptr %15, align 4, !tbaa !5
  br label %133

133:                                              ; preds = %.lr.ph239._crit_edge, %114
  %.pre-phi263 = phi i64 [ %.pre262, %.lr.ph239._crit_edge ], [ %122, %114 ]
  %.pre-phi261 = phi i64 [ %.pre260, %.lr.ph239._crit_edge ], [ %120, %114 ]
  %.pre-phi = phi i32 [ %.pre257, %.lr.ph239._crit_edge ], [ %128, %114 ]
  %134 = phi i32 [ %109, %.lr.ph239._crit_edge ], [ %.pre255, %114 ]
  %135 = phi i32 [ %106, %.lr.ph239._crit_edge ], [ %.pre254, %114 ]
  %136 = phi i32 [ %.pre253, %.lr.ph239._crit_edge ], [ %.pre252, %114 ]
  %137 = add i32 %.pre-phi, %136
  %138 = sub i32 %137, %135
  %139 = add i32 %138, %134
  store i32 %139, ptr %12, align 4, !tbaa !5
  %140 = getelementptr inbounds double, ptr %19, i64 %.pre-phi261
  %141 = getelementptr inbounds double, ptr %20, i64 %.pre-phi263
  call void @dorgr2_(ptr noundef nonnull %15, ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef %140, ptr noundef nonnull %4, ptr noundef nonnull %141, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  %142 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %142, ptr %12, align 4, !tbaa !5
  %143 = load i32, ptr %2, align 4, !tbaa !5
  %144 = load i32, ptr %15, align 4, !tbaa !5
  %145 = add i32 %142, %.1165238
  %146 = sub i32 %145, %143
  %147 = add nsw i32 %146, %144
  %.not185232 = icmp sgt i32 %147, %142
  br i1 %.not185232, label %._crit_edge236, label %.lr.ph235

.lr.ph235:                                        ; preds = %133
  %148 = add i32 %144, %112
  %149 = add nsw i32 %148, -1
  store i32 %149, ptr %13, align 4, !tbaa !5
  %.not186.not229 = icmp sgt i32 %144, 0
  br i1 %.not186.not229, label %.lr.ph231.us.preheader, label %._crit_edge236

.lr.ph231.us.preheader:                           ; preds = %.lr.ph235
  %150 = add i32 %.1165238, %110
  %151 = mul i32 %17, %147
  %152 = add i32 %150, %151
  %153 = sub i32 %152, %106
  %154 = add i32 %106, -1
  %155 = add i32 %.1165238, 1
  %156 = add i32 %155, %110
  %157 = sub i32 %156, %106
  %smax = call i32 @llvm.smax.i32(i32 %148, i32 %157)
  %158 = add i32 %154, %smax
  %159 = add i32 %.1165238, %110
  %160 = sub i32 %158, %159
  %161 = zext i32 %160 to i64
  %162 = shl nuw nsw i64 %161, 3
  %163 = add nuw nsw i64 %162, 8
  %164 = add i32 %143, 1
  %165 = add i32 %.1165238, %144
  %166 = sub i32 %164, %165
  br label %.lr.ph231.us

.lr.ph231.us:                                     ; preds = %.lr.ph231.us.preheader, %.lr.ph231.us
  %indvar245 = phi i32 [ 0, %.lr.ph231.us.preheader ], [ %indvar.next246, %.lr.ph231.us ]
  %167 = mul i32 %17, %indvar245
  %168 = add i32 %153, %167
  %169 = sext i32 %168 to i64
  %170 = shl nsw i64 %169, 3
  %scevgep247 = getelementptr i8, ptr %scevgep244, i64 %170
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep247, i8 0, i64 %163, i1 false), !tbaa !9
  %indvar.next246 = add i32 %indvar245, 1
  %exitcond.not = icmp eq i32 %indvar.next246, %166
  br i1 %exitcond.not, label %._crit_edge236, label %.lr.ph231.us, !llvm.loop !13

._crit_edge236:                                   ; preds = %.lr.ph231.us, %.lr.ph235, %133
  %171 = load i32, ptr %11, align 4, !tbaa !5
  %172 = add nsw i32 %171, %.1165238
  %173 = icmp slt i32 %171, 0
  %174 = load i32, ptr %10, align 4
  %175 = icmp sge i32 %172, %174
  %176 = icmp sle i32 %172, %174
  %.in = select i1 %173, i1 %175, i1 %176
  br i1 %.in, label %.lr.ph239, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge236, %99, %.thread210
  %177 = sitofp i32 %.0209 to double
  store double %177, ptr %6, align 8, !tbaa !9
  br label %178

178:                                              ; preds = %47, %.loopexit, %.thread195
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #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 @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 @dorgr2_(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: 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 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 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}


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