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

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

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

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

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

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

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

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

90:                                               ; preds = %84
  br label %94

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

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

97:                                               ; preds = %94
  %98 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -5, ptr %98, align 8, !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 %19, align 8, !tbaa !5
  %104 = load i64, ptr %103, align 8, !tbaa !9
  %105 = icmp eq i64 %104, 0
  br i1 %105, label %106, label %143

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

110:                                              ; preds = %106
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %120

111:                                              ; preds = %106
  %112 = load ptr, ptr %11, align 8, !tbaa !5
  %113 = load ptr, ptr %12, align 8, !tbaa !5
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = call i64 @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)
  store i64 %115, ptr %30, align 8, !tbaa !9
  %116 = load ptr, ptr %11, align 8, !tbaa !5
  %117 = load i64, ptr %116, align 8, !tbaa !9
  %118 = load i64, ptr %30, align 8, !tbaa !9
  %119 = mul nsw i64 %117, %118
  store i64 %119, ptr %38, align 8, !tbaa !9
  br label %120

120:                                              ; preds = %111, %110
  %121 = load i64, ptr %38, align 8, !tbaa !9
  %122 = sitofp i64 %121 to double
  %123 = load ptr, ptr %17, 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 %18, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  %127 = load ptr, ptr %11, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = icmp sge i64 1, %128
  br i1 %129, label %130, label %131

130:                                              ; preds = %120
  br label %134

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

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

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

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

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

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

147:                                              ; preds = %143
  %148 = load ptr, ptr %19, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = sub nsw i64 0, %149
  store i64 %150, ptr %22, align 8, !tbaa !9
  %151 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %22)
  store i32 0, ptr %10, align 4
  store i32 1, ptr %40, align 4
  br label %494

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

155:                                              ; preds = %152
  store i32 0, ptr %10, align 4
  store i32 1, ptr %40, align 4
  br label %494

156:                                              ; preds = %152
  br label %157

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

161:                                              ; preds = %157
  store i32 0, ptr %10, align 4
  store i32 1, ptr %40, align 4
  br label %494

162:                                              ; preds = %157
  store i64 2, ptr %35, align 8, !tbaa !9
  store i64 0, ptr %33, align 8, !tbaa !9
  %163 = load ptr, ptr %11, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  store i64 %164, ptr %34, align 8, !tbaa !9
  %165 = load i64, ptr %30, align 8, !tbaa !9
  %166 = icmp sgt i64 %165, 1
  br i1 %166, label %167, label %220

167:                                              ; preds = %162
  %168 = load i64, ptr %30, align 8, !tbaa !9
  %169 = load ptr, ptr %13, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = icmp slt i64 %168, %170
  br i1 %171, label %172, label %220

172:                                              ; preds = %167
  store i64 0, ptr %22, align 8, !tbaa !9
  %173 = load ptr, ptr %11, align 8, !tbaa !5
  %174 = load ptr, ptr %12, align 8, !tbaa !5
  %175 = load ptr, ptr %13, align 8, !tbaa !5
  %176 = call i64 @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)
  store i64 %176, ptr %23, align 8, !tbaa !9
  %177 = load i64, ptr %22, align 8, !tbaa !9
  %178 = load i64, ptr %23, align 8, !tbaa !9
  %179 = icmp sge i64 %177, %178
  br i1 %179, label %180, label %182

180:                                              ; preds = %172
  %181 = load i64, ptr %22, align 8, !tbaa !9
  br label %184

182:                                              ; preds = %172
  %183 = load i64, ptr %23, align 8, !tbaa !9
  br label %184

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

190:                                              ; preds = %184
  %191 = load ptr, ptr %11, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  store i64 %192, ptr %37, align 8, !tbaa !9
  %193 = load i64, ptr %37, align 8, !tbaa !9
  %194 = load i64, ptr %30, align 8, !tbaa !9
  %195 = mul nsw i64 %193, %194
  store i64 %195, ptr %34, align 8, !tbaa !9
  %196 = load ptr, ptr %18, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = load i64, ptr %34, align 8, !tbaa !9
  %199 = icmp slt i64 %197, %198
  br i1 %199, label %200, label %218

200:                                              ; preds = %190
  %201 = load ptr, ptr %18, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = load i64, ptr %37, align 8, !tbaa !9
  %204 = sdiv i64 %202, %203
  store i64 %204, ptr %30, align 8, !tbaa !9
  store i64 2, ptr %22, align 8, !tbaa !9
  %205 = load ptr, ptr %11, align 8, !tbaa !5
  %206 = load ptr, ptr %12, align 8, !tbaa !5
  %207 = load ptr, ptr %13, align 8, !tbaa !5
  %208 = call i64 @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)
  store i64 %208, ptr %23, align 8, !tbaa !9
  %209 = load i64, ptr %22, align 8, !tbaa !9
  %210 = load i64, ptr %23, align 8, !tbaa !9
  %211 = icmp sge i64 %209, %210
  br i1 %211, label %212, label %214

212:                                              ; preds = %200
  %213 = load i64, ptr %22, align 8, !tbaa !9
  br label %216

214:                                              ; preds = %200
  %215 = load i64, ptr %23, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %214, %212
  %217 = phi i64 [ %213, %212 ], [ %215, %214 ]
  store i64 %217, ptr %35, align 8, !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 i64, ptr %30, align 8, !tbaa !9
  %222 = load i64, ptr %35, align 8, !tbaa !9
  %223 = icmp sge i64 %221, %222
  br i1 %223, label %224, label %293

224:                                              ; preds = %220
  %225 = load i64, ptr %30, align 8, !tbaa !9
  %226 = load ptr, ptr %13, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = icmp slt i64 %225, %227
  br i1 %228, label %229, label %293

229:                                              ; preds = %224
  %230 = load i64, ptr %33, align 8, !tbaa !9
  %231 = load ptr, ptr %13, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = icmp slt i64 %230, %232
  br i1 %233, label %234, label %293

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

251:                                              ; preds = %234
  %252 = load i64, ptr %22, align 8, !tbaa !9
  br label %255

253:                                              ; preds = %234
  %254 = load i64, ptr %23, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %253, %251
  %256 = phi i64 [ %252, %251 ], [ %254, %253 ]
  store i64 %256, ptr %32, align 8, !tbaa !9
  %257 = load ptr, ptr %12, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  store i64 %258, ptr %22, align 8, !tbaa !9
  %259 = load ptr, ptr %12, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = load i64, ptr %32, align 8, !tbaa !9
  %262 = sub nsw i64 %260, %261
  %263 = add nsw i64 %262, 1
  store i64 %263, ptr %27, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %289, %255
  %265 = load i64, ptr %27, align 8, !tbaa !9
  %266 = load i64, ptr %22, align 8, !tbaa !9
  %267 = icmp sle i64 %265, %266
  br i1 %267, label %268, label %292

268:                                              ; preds = %264
  %269 = load ptr, ptr %11, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  %271 = load i64, ptr %32, align 8, !tbaa !9
  %272 = sub nsw i64 %270, %271
  store i64 %272, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %285, %268
  %274 = load i64, ptr %26, align 8, !tbaa !9
  %275 = load i64, ptr %23, align 8, !tbaa !9
  %276 = icmp sle i64 %274, %275
  br i1 %276, label %277, label %288

277:                                              ; preds = %273
  %278 = load ptr, ptr %14, align 8, !tbaa !5
  %279 = load i64, ptr %26, align 8, !tbaa !9
  %280 = load i64, ptr %27, align 8, !tbaa !9
  %281 = load i64, ptr %20, align 8, !tbaa !9
  %282 = mul nsw i64 %280, %281
  %283 = add nsw i64 %279, %282
  %284 = getelementptr inbounds double, ptr %278, i64 %283
  store double 0.000000e+00, ptr %284, align 8, !tbaa !11
  br label %285

285:                                              ; preds = %277
  %286 = load i64, ptr %26, align 8, !tbaa !9
  %287 = add nsw i64 %286, 1
  store i64 %287, ptr %26, align 8, !tbaa !9
  br label %273, !llvm.loop !13

288:                                              ; preds = %273
  br label %289

289:                                              ; preds = %288
  %290 = load i64, ptr %27, align 8, !tbaa !9
  %291 = add nsw i64 %290, 1
  store i64 %291, ptr %27, align 8, !tbaa !9
  br label %264, !llvm.loop !15

292:                                              ; preds = %264
  br label %294

293:                                              ; preds = %229, %224, %220
  store i64 0, ptr %32, align 8, !tbaa !9
  br label %294

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

318:                                              ; preds = %294
  %319 = load ptr, ptr %13, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  store i64 %320, ptr %22, align 8, !tbaa !9
  %321 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %321, ptr %23, align 8, !tbaa !9
  %322 = load ptr, ptr %13, align 8, !tbaa !5
  %323 = load i64, ptr %322, align 8, !tbaa !9
  %324 = load i64, ptr %32, align 8, !tbaa !9
  %325 = sub nsw i64 %323, %324
  %326 = add nsw i64 %325, 1
  store i64 %326, ptr %26, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %484, %318
  %328 = load i64, ptr %23, align 8, !tbaa !9
  %329 = icmp slt i64 %328, 0
  br i1 %329, label %330, label %335

330:                                              ; preds = %327
  %331 = load i64, ptr %26, align 8, !tbaa !9
  %332 = load i64, ptr %22, align 8, !tbaa !9
  %333 = icmp sge i64 %331, %332
  %334 = zext i1 %333 to i32
  br label %340

335:                                              ; preds = %327
  %336 = load i64, ptr %26, align 8, !tbaa !9
  %337 = load i64, ptr %22, align 8, !tbaa !9
  %338 = icmp sle i64 %336, %337
  %339 = zext i1 %338 to i32
  br label %340

340:                                              ; preds = %335, %330
  %341 = phi i32 [ %334, %330 ], [ %339, %335 ]
  %342 = icmp ne i32 %341, 0
  br i1 %342, label %343, label %488

343:                                              ; preds = %340
  %344 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %344, ptr %24, align 8, !tbaa !9
  %345 = load ptr, ptr %13, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = load i64, ptr %26, align 8, !tbaa !9
  %348 = sub nsw i64 %346, %347
  %349 = add nsw i64 %348, 1
  store i64 %349, ptr %25, align 8, !tbaa !9
  %350 = load i64, ptr %24, align 8, !tbaa !9
  %351 = load i64, ptr %25, align 8, !tbaa !9
  %352 = icmp sle i64 %350, %351
  br i1 %352, label %353, label %355

353:                                              ; preds = %343
  %354 = load i64, ptr %24, align 8, !tbaa !9
  br label %357

355:                                              ; preds = %343
  %356 = load i64, ptr %25, align 8, !tbaa !9
  br label %357

357:                                              ; preds = %355, %353
  %358 = phi i64 [ %354, %353 ], [ %356, %355 ]
  store i64 %358, ptr %29, align 8, !tbaa !9
  %359 = load ptr, ptr %11, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = load ptr, ptr %13, align 8, !tbaa !5
  %362 = load i64, ptr %361, align 8, !tbaa !9
  %363 = sub nsw i64 %360, %362
  %364 = load i64, ptr %26, align 8, !tbaa !9
  %365 = add nsw i64 %363, %364
  store i64 %365, ptr %31, align 8, !tbaa !9
  %366 = load i64, ptr %31, align 8, !tbaa !9
  %367 = icmp sgt i64 %366, 1
  br i1 %367, label %368, label %420

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

420:                                              ; preds = %368, %357
  %421 = load ptr, ptr %12, align 8, !tbaa !5
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = load ptr, ptr %13, align 8, !tbaa !5
  %424 = load i64, ptr %423, align 8, !tbaa !9
  %425 = sub nsw i64 %422, %424
  %426 = load i64, ptr %26, align 8, !tbaa !9
  %427 = add nsw i64 %425, %426
  %428 = load i64, ptr %29, align 8, !tbaa !9
  %429 = add nsw i64 %427, %428
  %430 = sub nsw i64 %429, 1
  store i64 %430, ptr %24, align 8, !tbaa !9
  %431 = load ptr, ptr %14, align 8, !tbaa !5
  %432 = load i64, ptr %31, align 8, !tbaa !9
  %433 = load i64, ptr %20, align 8, !tbaa !9
  %434 = add nsw i64 %432, %433
  %435 = getelementptr inbounds double, ptr %431, i64 %434
  %436 = load ptr, ptr %15, align 8, !tbaa !5
  %437 = load ptr, ptr %16, align 8, !tbaa !5
  %438 = load i64, ptr %26, align 8, !tbaa !9
  %439 = getelementptr inbounds double, ptr %437, i64 %438
  %440 = load ptr, ptr %17, align 8, !tbaa !5
  %441 = getelementptr inbounds double, ptr %440, i64 1
  %442 = call i32 @dorgr2_(ptr noundef %29, ptr noundef %24, ptr noundef %29, ptr noundef %435, ptr noundef %436, ptr noundef %439, ptr noundef %441, ptr noundef %36)
  %443 = load ptr, ptr %12, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  store i64 %444, ptr %24, align 8, !tbaa !9
  %445 = load ptr, ptr %12, align 8, !tbaa !5
  %446 = load i64, ptr %445, align 8, !tbaa !9
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = load i64, ptr %447, align 8, !tbaa !9
  %449 = sub nsw i64 %446, %448
  %450 = load i64, ptr %26, align 8, !tbaa !9
  %451 = add nsw i64 %449, %450
  %452 = load i64, ptr %29, align 8, !tbaa !9
  %453 = add nsw i64 %451, %452
  store i64 %453, ptr %28, align 8, !tbaa !9
  br label %454

454:                                              ; preds = %480, %420
  %455 = load i64, ptr %28, align 8, !tbaa !9
  %456 = load i64, ptr %24, align 8, !tbaa !9
  %457 = icmp sle i64 %455, %456
  br i1 %457, label %458, label %483

458:                                              ; preds = %454
  %459 = load i64, ptr %31, align 8, !tbaa !9
  %460 = load i64, ptr %29, align 8, !tbaa !9
  %461 = add nsw i64 %459, %460
  %462 = sub nsw i64 %461, 1
  store i64 %462, ptr %25, align 8, !tbaa !9
  %463 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %463, ptr %27, align 8, !tbaa !9
  br label %464

464:                                              ; preds = %476, %458
  %465 = load i64, ptr %27, align 8, !tbaa !9
  %466 = load i64, ptr %25, align 8, !tbaa !9
  %467 = icmp sle i64 %465, %466
  br i1 %467, label %468, label %479

468:                                              ; preds = %464
  %469 = load ptr, ptr %14, align 8, !tbaa !5
  %470 = load i64, ptr %27, align 8, !tbaa !9
  %471 = load i64, ptr %28, align 8, !tbaa !9
  %472 = load i64, ptr %20, align 8, !tbaa !9
  %473 = mul nsw i64 %471, %472
  %474 = add nsw i64 %470, %473
  %475 = getelementptr inbounds double, ptr %469, i64 %474
  store double 0.000000e+00, ptr %475, align 8, !tbaa !11
  br label %476

476:                                              ; preds = %468
  %477 = load i64, ptr %27, align 8, !tbaa !9
  %478 = add nsw i64 %477, 1
  store i64 %478, ptr %27, align 8, !tbaa !9
  br label %464, !llvm.loop !16

479:                                              ; preds = %464
  br label %480

480:                                              ; preds = %479
  %481 = load i64, ptr %28, align 8, !tbaa !9
  %482 = add nsw i64 %481, 1
  store i64 %482, ptr %28, align 8, !tbaa !9
  br label %454, !llvm.loop !17

483:                                              ; preds = %454
  br label %484

484:                                              ; preds = %483
  %485 = load i64, ptr %23, align 8, !tbaa !9
  %486 = load i64, ptr %26, align 8, !tbaa !9
  %487 = add nsw i64 %486, %485
  store i64 %487, ptr %26, align 8, !tbaa !9
  br label %327, !llvm.loop !18

488:                                              ; preds = %340
  br label %489

489:                                              ; preds = %488, %294
  %490 = load i64, ptr %34, align 8, !tbaa !9
  %491 = sitofp i64 %490 to double
  %492 = load ptr, ptr %17, align 8, !tbaa !5
  %493 = getelementptr inbounds double, ptr %492, i64 1
  store double %491, ptr %493, align 8, !tbaa !11
  store i32 0, ptr %10, align 4
  store i32 1, ptr %40, align 4
  br label %494

494:                                              ; preds = %489, %161, %155, %147
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 8, 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 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  %495 = load i32, ptr %10, align 4
  ret i32 %495
}

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

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 @dorgr2_(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"}
!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 i64, align 8
@.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 i64, align 8
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.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 noundef i32 @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 i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  %17 = load i64, ptr %4, align 8, !tbaa !5
  %18 = getelementptr inbounds i8, ptr %5, i64 -8
  store i64 0, ptr %8, align 8, !tbaa !5
  %19 = load i64, ptr %7, align 8, !tbaa !5
  %20 = icmp eq i64 %19, -1
  %21 = load i64, ptr %0, align 8, !tbaa !5
  %22 = icmp slt i64 %21, 0
  br i1 %22, label %.thread196.sink.split, label %23

23:                                               ; preds = %9
  %24 = load i64, ptr %1, align 8, !tbaa !5
  %25 = icmp slt i64 %24, %21
  br i1 %25, label %.thread196.sink.split, label %26

26:                                               ; preds = %23
  %27 = load i64, ptr %2, align 8, !tbaa !5
  %or.cond189 = icmp ugt i64 %27, %21
  br i1 %or.cond189, label %.thread196.sink.split, label %28

28:                                               ; preds = %26
  %29 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %21, i64 1)
  %30 = icmp slt i64 %29, %spec.select
  br i1 %30, label %.thread196.sink.split, label %31

31:                                               ; preds = %28
  %32 = icmp eq i64 %21, 0
  br i1 %32, label %38, label %33

33:                                               ; preds = %31
  %34 = tail call i64 @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) #5
  %35 = load i64, ptr %0, align 8, !tbaa !5
  %36 = mul nsw i64 %35, %34
  %37 = sitofp i64 %36 to double
  %.pre = load i64, ptr %7, align 8, !tbaa !5
  br label %38

38:                                               ; preds = %31, %33
  %39 = phi i64 [ %35, %33 ], [ 0, %31 ]
  %40 = phi i64 [ %.pre, %33 ], [ %19, %31 ]
  %.0162 = phi i64 [ %34, %33 ], [ undef, %31 ]
  %.0157 = phi double [ %37, %33 ], [ 1.000000e+00, %31 ]
  store double %.0157, ptr %6, align 8, !tbaa !9
  %spec.select190 = tail call i64 @llvm.smax.i64(i64 %39, i64 1)
  %41 = icmp sge i64 %40, %spec.select190
  %or.cond = select i1 %41, i1 true, i1 %20
  br i1 %or.cond, label %.thread, label %.thread196.sink.split

.thread:                                          ; preds = %38
  %.pr193.pr = load i64, ptr %8, align 8, !tbaa !5
  %.not = icmp eq i64 %.pr193.pr, 0
  br i1 %.not, label %45, label %.thread196

.thread196.sink.split:                            ; preds = %38, %28, %26, %23, %9
  %.sink = phi i64 [ -1, %9 ], [ -2, %23 ], [ -3, %26 ], [ -5, %28 ], [ -8, %38 ]
  store i64 %.sink, ptr %8, align 8, !tbaa !5
  br label %.thread196

.thread196:                                       ; preds = %.thread196.sink.split, %.thread
  %42 = phi i64 [ %.pr193.pr, %.thread ], [ %.sink, %.thread196.sink.split ]
  %43 = sub nsw i64 0, %42
  store i64 %43, ptr %10, align 8, !tbaa !5
  %44 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %10) #5
  br label %166

45:                                               ; preds = %.thread
  %46 = icmp slt i64 %39, 1
  %or.cond261 = or i1 %20, %46
  br i1 %or.cond261, label %166, label %47

47:                                               ; preds = %45
  %48 = icmp sgt i64 %.0162, 1
  %.pre253 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %48, label %49, label %.thread211

49:                                               ; preds = %47
  %50 = icmp slt i64 %.0162, %.pre253
  br i1 %50, label %51, label %.thread200

51:                                               ; preds = %49
  %52 = tail call i64 @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) #5
  %53 = tail call i64 @llvm.smax.i64(i64 %52, i64 0)
  %54 = load i64, ptr %2, align 8, !tbaa !5
  %55 = icmp slt i64 %53, %54
  br i1 %55, label %56, label %.thread200

56:                                               ; preds = %51
  %57 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %57, ptr %16, align 8, !tbaa !5
  %58 = mul nsw i64 %57, %.0162
  %59 = load i64, ptr %7, align 8, !tbaa !5
  %60 = icmp slt i64 %59, %58
  br i1 %60, label %61, label %.thread200

61:                                               ; preds = %56
  %62 = sdiv i64 %59, %57
  %63 = tail call i64 @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) #5
  %64 = tail call i64 @llvm.smax.i64(i64 %63, i64 2)
  %.not181 = icmp slt i64 %62, %64
  %.pre254 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not181, label %.thread211, label %.thread200

.thread200:                                       ; preds = %61, %49, %51, %56
  %65 = phi i64 [ %.pre253, %49 ], [ %54, %51 ], [ %54, %56 ], [ %.pre254, %61 ]
  %.0159209 = phi i64 [ %39, %49 ], [ %39, %51 ], [ %58, %56 ], [ %58, %61 ]
  %.0160208 = phi i64 [ 0, %49 ], [ %53, %51 ], [ %53, %56 ], [ %53, %61 ]
  %.2206 = phi i64 [ %.0162, %49 ], [ %.0162, %51 ], [ %.0162, %56 ], [ %62, %61 ]
  %66 = icmp slt i64 %.2206, %65
  %67 = icmp slt i64 %.0160208, %65
  %or.cond191 = and i1 %66, %67
  br i1 %or.cond191, label %68, label %.thread211

68:                                               ; preds = %.thread200
  %69 = sub nsw i64 %.2206, %.0160208
  %70 = add i64 %69, %65
  %.fr182 = freeze i64 %70
  %71 = add i64 %.fr182, -1
  %72 = srem i64 %71, %.2206
  %73 = sub nsw i64 %71, %72
  store i64 %73, ptr %11, align 8, !tbaa !5
  %74 = tail call i64 @llvm.smin.i64(i64 %65, i64 %73)
  %75 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %75, ptr %10, align 8, !tbaa !5
  %.not184.not227 = icmp sgt i64 %74, 0
  br i1 %.not184.not227, label %.lr.ph229, label %.thread211

.lr.ph229:                                        ; preds = %68
  %76 = load i64, ptr %0, align 8, !tbaa !5
  %.not188224.not = icmp sgt i64 %76, %74
  br i1 %.not188224.not, label %.lr.ph.preheader, label %.thread211

.lr.ph.preheader:                                 ; preds = %.lr.ph229
  %77 = sub nsw i64 %75, %74
  %78 = sub i64 %75, %74
  %79 = shl i64 %78, 3
  %80 = mul i64 %17, %79
  %81 = shl i64 %17, 3
  %82 = sub i64 %76, %74
  %83 = shl i64 %82, 3
  %84 = getelementptr i8, ptr %3, i64 %80
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvar = phi i64 [ 0, %.lr.ph.preheader ], [ %indvar.next, %.lr.ph ]
  %.0164228.in = phi i64 [ %77, %.lr.ph.preheader ], [ %.0164228, %.lr.ph ]
  %.0164228 = add nsw i64 %.0164228.in, 1
  %85 = mul i64 %81, %indvar
  %scevgep = getelementptr i8, ptr %84, i64 %85
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %83, i1 false), !tbaa !9
  %.not184.not = icmp slt i64 %.0164228, %75
  %indvar.next = add i64 %indvar, 1
  br i1 %.not184.not, label %.lr.ph, label %.thread211, !llvm.loop !11

.thread211:                                       ; preds = %.lr.ph, %68, %.lr.ph229, %47, %61, %.thread200
  %86 = phi i64 [ %65, %.thread200 ], [ %.pre254, %61 ], [ %.pre253, %47 ], [ %65, %.lr.ph229 ], [ %65, %68 ], [ %65, %.lr.ph ]
  %.0159210 = phi i64 [ %.0159209, %.thread200 ], [ %58, %61 ], [ %39, %47 ], [ %.0159209, %.lr.ph229 ], [ %.0159209, %68 ], [ %.0159209, %.lr.ph ]
  %.2207 = phi i64 [ %.2206, %.thread200 ], [ %62, %61 ], [ %.0162, %47 ], [ %.2206, %.lr.ph229 ], [ %.2206, %68 ], [ %.2206, %.lr.ph ]
  %.0161 = phi i64 [ 0, %.thread200 ], [ 0, %61 ], [ 0, %47 ], [ %74, %.lr.ph229 ], [ %74, %68 ], [ %74, %.lr.ph ]
  %87 = load i64, ptr %0, align 8, !tbaa !5
  %88 = sub nsw i64 %87, %.0161
  store i64 %88, ptr %10, align 8, !tbaa !5
  %89 = load i64, ptr %1, align 8, !tbaa !5
  %90 = sub nsw i64 %89, %.0161
  store i64 %90, ptr %11, align 8, !tbaa !5
  %91 = sub nsw i64 %86, %.0161
  store i64 %91, ptr %12, align 8, !tbaa !5
  %92 = call i32 @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 %15) #5
  %93 = icmp sgt i64 %.0161, 0
  br i1 %93, label %94, label %.loopexit

94:                                               ; preds = %.thread211
  %95 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %95, ptr %10, align 8, !tbaa !5
  store i64 %.2207, ptr %11, align 8, !tbaa !5
  %reass.sub = sub i64 %95, %.0161
  %96 = add i64 %reass.sub, 1
  %invariant.gep240 = getelementptr i8, ptr %3, i64 -8
  %97 = icmp slt i64 %.2207, 0
  %98 = icmp sge i64 %96, %95
  %99 = icmp sle i64 %96, %95
  %.in244 = select i1 %97, i1 %98, i1 %99
  br i1 %.in244, label %.lr.ph246.preheader, label %.loopexit

.lr.ph246.preheader:                              ; preds = %94
  %100 = shl i64 %17, 3
  %.pre256.pre = load i64, ptr %1, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %3, i64 -8
  br label %.lr.ph246

.lr.ph246:                                        ; preds = %.lr.ph246.preheader, %._crit_edge239
  %.pre256 = phi i64 [ %135, %._crit_edge239 ], [ %.pre256.pre, %.lr.ph246.preheader ]
  %101 = phi i64 [ %136, %._crit_edge239 ], [ %95, %.lr.ph246.preheader ]
  %.1167245 = phi i64 [ %160, %._crit_edge239 ], [ %96, %.lr.ph246.preheader ]
  %102 = sub nsw i64 %101, %.1167245
  %103 = add nsw i64 %102, 1
  store i64 %103, ptr %13, align 8, !tbaa !5
  %104 = call i64 @llvm.smin.i64(i64 %.2207, i64 %103)
  store i64 %104, ptr %14, align 8, !tbaa !5
  %105 = load i64, ptr %0, align 8, !tbaa !5
  %106 = sub nsw i64 %105, %101
  %107 = add nsw i64 %106, %.1167245
  %108 = icmp sgt i64 %107, 1
  br i1 %108, label %109, label %.lr.ph246._crit_edge

.lr.ph246._crit_edge:                             ; preds = %.lr.ph246
  %.pre260 = add i64 %.1167245, -1
  br label %126

109:                                              ; preds = %.lr.ph246
  %110 = xor i64 %101, -1
  %111 = add i64 %.1167245, %110
  %112 = add i64 %111, %104
  %113 = add i64 %112, %.pre256
  store i64 %113, ptr %12, align 8, !tbaa !5
  %gep241 = getelementptr double, ptr %invariant.gep240, i64 %107
  %114 = getelementptr inbounds double, ptr %18, i64 %.1167245
  %115 = call i32 @dlarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep241, ptr noundef nonnull %4, ptr noundef nonnull %114, ptr noundef nonnull %6, ptr noundef nonnull %16) #5
  %116 = add nsw i64 %107, -1
  store i64 %116, ptr %12, align 8, !tbaa !5
  %117 = load i64, ptr %1, align 8, !tbaa !5
  %118 = load i64, ptr %2, align 8, !tbaa !5
  %119 = load i64, ptr %14, align 8, !tbaa !5
  %120 = add i64 %.1167245, -1
  %121 = add i64 %120, %117
  %122 = sub i64 %121, %118
  %123 = add i64 %122, %119
  store i64 %123, ptr %13, align 8, !tbaa !5
  %124 = getelementptr double, ptr %6, i64 %119
  %125 = call i32 @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 %14, ptr noundef %gep241, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %124, ptr noundef nonnull %16) #5
  %.pre255 = load i64, ptr %1, align 8, !tbaa !5
  %.pre257 = load i64, ptr %2, align 8, !tbaa !5
  %.pre258 = load i64, ptr %14, align 8, !tbaa !5
  br label %126

126:                                              ; preds = %.lr.ph246._crit_edge, %109
  %.pre-phi = phi i64 [ %.pre260, %.lr.ph246._crit_edge ], [ %120, %109 ]
  %127 = phi i64 [ %104, %.lr.ph246._crit_edge ], [ %.pre258, %109 ]
  %128 = phi i64 [ %101, %.lr.ph246._crit_edge ], [ %.pre257, %109 ]
  %129 = phi i64 [ %.pre256, %.lr.ph246._crit_edge ], [ %.pre255, %109 ]
  %130 = add i64 %.pre-phi, %129
  %131 = sub i64 %130, %128
  %132 = add i64 %131, %127
  store i64 %132, ptr %12, align 8, !tbaa !5
  %gep243 = getelementptr double, ptr %invariant.gep240, i64 %107
  %133 = getelementptr inbounds double, ptr %18, i64 %.1167245
  %134 = call i32 @dorgr2_(ptr noundef nonnull %14, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep243, ptr noundef nonnull %4, ptr noundef nonnull %133, ptr noundef nonnull %6, ptr noundef nonnull %15) #5
  %135 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %135, ptr %12, align 8, !tbaa !5
  %136 = load i64, ptr %2, align 8, !tbaa !5
  %137 = load i64, ptr %14, align 8, !tbaa !5
  %138 = add i64 %135, %.1167245
  %139 = sub i64 %138, %136
  %140 = add nsw i64 %139, %137
  %.not186235 = icmp sgt i64 %140, %135
  br i1 %.not186235, label %._crit_edge239, label %.lr.ph238

.lr.ph238:                                        ; preds = %126
  %141 = add i64 %137, %107
  %142 = add nsw i64 %141, -1
  store i64 %142, ptr %13, align 8, !tbaa !5
  %.not187.not230 = icmp sgt i64 %137, 0
  br i1 %.not187.not230, label %.lr.ph232.us.preheader, label %._crit_edge239

.lr.ph232.us.preheader:                           ; preds = %.lr.ph238
  %143 = shl i64 %140, 3
  %144 = add i64 %143, -8
  %145 = mul i64 %17, %144
  %146 = shl i64 %107, 3
  %147 = add i64 %.1167245, 1
  %148 = add i64 %147, %105
  %149 = sub i64 %148, %101
  %smax = call i64 @llvm.smax.i64(i64 %141, i64 %149)
  %150 = add i64 %101, %smax
  %151 = add i64 %.1167245, %105
  %152 = sub i64 %150, %151
  %153 = shl nuw i64 %152, 3
  %154 = add i64 %136, 1
  %155 = add i64 %.1167245, %137
  %156 = sub i64 %154, %155
  %gep = getelementptr i8, ptr %invariant.gep, i64 %145
  %157 = getelementptr i8, ptr %gep, i64 %146
  br label %.lr.ph232.us

.lr.ph232.us:                                     ; preds = %.lr.ph232.us.preheader, %.lr.ph232.us
  %indvar249 = phi i64 [ 0, %.lr.ph232.us.preheader ], [ %indvar.next250, %.lr.ph232.us ]
  %158 = mul i64 %100, %indvar249
  %scevgep251 = getelementptr i8, ptr %157, i64 %158
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep251, i8 0, i64 %153, i1 false), !tbaa !9
  %indvar.next250 = add i64 %indvar249, 1
  %exitcond.not = icmp eq i64 %indvar.next250, %156
  br i1 %exitcond.not, label %._crit_edge239, label %.lr.ph232.us, !llvm.loop !13

._crit_edge239:                                   ; preds = %.lr.ph232.us, %.lr.ph238, %126
  %159 = load i64, ptr %11, align 8, !tbaa !5
  %160 = add nsw i64 %159, %.1167245
  %161 = icmp slt i64 %159, 0
  %162 = load i64, ptr %10, align 8
  %163 = icmp sge i64 %160, %162
  %164 = icmp sle i64 %160, %162
  %.in = select i1 %161, i1 %163, i1 %164
  br i1 %.in, label %.lr.ph246, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %._crit_edge239, %94, %.thread211
  %165 = sitofp i64 %.0159210 to double
  store double %165, ptr %6, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %45, %.loopexit, %.thread196
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  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 @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 @dorgr2_(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

; 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 = !{!"long", !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: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass