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

; 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 [8 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 [13 x i8], align 1

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

68:                                               ; preds = %8
  %69 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -1, ptr %69, align 8, !tbaa !9
  br label %112

70:                                               ; preds = %8
  %71 = load ptr, ptr %11, align 8, !tbaa !5
  %72 = load i64, ptr %71, align 8, !tbaa !9
  %73 = icmp slt i64 %72, 0
  br i1 %73, label %74, label %76

74:                                               ; preds = %70
  %75 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -2, ptr %75, align 8, !tbaa !9
  br label %111

76:                                               ; preds = %70
  %77 = load ptr, ptr %13, align 8, !tbaa !5
  %78 = load i64, ptr %77, align 8, !tbaa !9
  %79 = load ptr, ptr %10, align 8, !tbaa !5
  %80 = load i64, ptr %79, align 8, !tbaa !9
  %81 = icmp sge i64 1, %80
  br i1 %81, label %82, label %83

82:                                               ; preds = %76
  br label %86

83:                                               ; preds = %76
  %84 = load ptr, ptr %10, align 8, !tbaa !5
  %85 = load i64, ptr %84, align 8, !tbaa !9
  br label %86

86:                                               ; preds = %83, %82
  %87 = phi i64 [ 1, %82 ], [ %85, %83 ]
  %88 = icmp slt i64 %78, %87
  br i1 %88, label %89, label %91

89:                                               ; preds = %86
  %90 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -4, ptr %90, align 8, !tbaa !9
  br label %110

91:                                               ; preds = %86
  %92 = load ptr, ptr %16, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = load i64, ptr %94, align 8, !tbaa !9
  %96 = icmp sge i64 1, %95
  br i1 %96, label %97, label %98

97:                                               ; preds = %91
  br label %101

98:                                               ; preds = %91
  %99 = load ptr, ptr %10, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  br label %101

101:                                              ; preds = %98, %97
  %102 = phi i64 [ 1, %97 ], [ %100, %98 ]
  %103 = icmp slt i64 %93, %102
  br i1 %103, label %104, label %109

104:                                              ; preds = %101
  %105 = load i64, ptr %34, align 8, !tbaa !9
  %106 = icmp ne i64 %105, 0
  br i1 %106, label %109, label %107

107:                                              ; preds = %104
  %108 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -7, ptr %108, align 8, !tbaa !9
  br label %109

109:                                              ; preds = %107, %104, %101
  br label %110

110:                                              ; preds = %109, %89
  br label %111

111:                                              ; preds = %110, %74
  br label %112

112:                                              ; preds = %111, %68
  %113 = load ptr, ptr %17, align 8, !tbaa !5
  %114 = load i64, ptr %113, align 8, !tbaa !9
  %115 = icmp ne i64 %114, 0
  br i1 %115, label %116, label %121

116:                                              ; preds = %112
  %117 = load ptr, ptr %17, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  %119 = sub nsw i64 0, %118
  store i64 %119, ptr %20, align 8, !tbaa !9
  %120 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %20)
  store i32 0, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %369

121:                                              ; preds = %112
  %122 = load i64, ptr %34, align 8, !tbaa !9
  %123 = icmp ne i64 %122, 0
  br i1 %123, label %124, label %125

124:                                              ; preds = %121
  store i32 0, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %369

125:                                              ; preds = %121
  br label %126

126:                                              ; preds = %125
  %127 = load ptr, ptr %10, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = load ptr, ptr %11, align 8, !tbaa !5
  %130 = load i64, ptr %129, align 8, !tbaa !9
  %131 = icmp sle i64 %128, %130
  br i1 %131, label %132, label %135

132:                                              ; preds = %126
  %133 = load ptr, ptr %10, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  br label %138

135:                                              ; preds = %126
  %136 = load ptr, ptr %11, align 8, !tbaa !5
  %137 = load i64, ptr %136, align 8, !tbaa !9
  br label %138

138:                                              ; preds = %135, %132
  %139 = phi i64 [ %134, %132 ], [ %137, %135 ]
  store i64 %139, ptr %25, align 8, !tbaa !9
  %140 = load i64, ptr %25, align 8, !tbaa !9
  %141 = icmp eq i64 %140, 0
  br i1 %141, label %142, label %145

142:                                              ; preds = %138
  %143 = load ptr, ptr %15, align 8, !tbaa !5
  %144 = getelementptr inbounds double, ptr %143, i64 1
  store double 1.000000e+00, ptr %144, align 8, !tbaa !11
  store i32 0, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %369

145:                                              ; preds = %138
  store i64 2, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !9
  %146 = load ptr, ptr %10, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  store i64 %147, ptr %29, align 8, !tbaa !9
  %148 = load i64, ptr %27, align 8, !tbaa !9
  %149 = icmp sgt i64 %148, 1
  br i1 %149, label %150, label %199

150:                                              ; preds = %145
  %151 = load i64, ptr %27, align 8, !tbaa !9
  %152 = load i64, ptr %25, align 8, !tbaa !9
  %153 = icmp slt i64 %151, %152
  br i1 %153, label %154, label %199

154:                                              ; preds = %150
  store i64 0, ptr %20, align 8, !tbaa !9
  %155 = load ptr, ptr %10, align 8, !tbaa !5
  %156 = load ptr, ptr %11, align 8, !tbaa !5
  %157 = call i64 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %155, ptr noundef %156, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %157, ptr %21, align 8, !tbaa !9
  %158 = load i64, ptr %20, align 8, !tbaa !9
  %159 = load i64, ptr %21, align 8, !tbaa !9
  %160 = icmp sge i64 %158, %159
  br i1 %160, label %161, label %163

161:                                              ; preds = %154
  %162 = load i64, ptr %20, align 8, !tbaa !9
  br label %165

163:                                              ; preds = %154
  %164 = load i64, ptr %21, align 8, !tbaa !9
  br label %165

165:                                              ; preds = %163, %161
  %166 = phi i64 [ %162, %161 ], [ %164, %163 ]
  store i64 %166, ptr %28, align 8, !tbaa !9
  %167 = load i64, ptr %28, align 8, !tbaa !9
  %168 = load i64, ptr %25, align 8, !tbaa !9
  %169 = icmp slt i64 %167, %168
  br i1 %169, label %170, label %198

170:                                              ; preds = %165
  %171 = load ptr, ptr %10, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  store i64 %172, ptr %32, align 8, !tbaa !9
  %173 = load i64, ptr %32, align 8, !tbaa !9
  %174 = load i64, ptr %27, align 8, !tbaa !9
  %175 = mul nsw i64 %173, %174
  store i64 %175, ptr %29, align 8, !tbaa !9
  %176 = load ptr, ptr %16, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = load i64, ptr %29, align 8, !tbaa !9
  %179 = icmp slt i64 %177, %178
  br i1 %179, label %180, label %197

180:                                              ; preds = %170
  %181 = load ptr, ptr %16, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = load i64, ptr %32, align 8, !tbaa !9
  %184 = sdiv i64 %182, %183
  store i64 %184, ptr %27, align 8, !tbaa !9
  store i64 2, ptr %20, align 8, !tbaa !9
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  %186 = load ptr, ptr %11, align 8, !tbaa !5
  %187 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %185, ptr noundef %186, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %187, ptr %21, align 8, !tbaa !9
  %188 = load i64, ptr %20, align 8, !tbaa !9
  %189 = load i64, ptr %21, align 8, !tbaa !9
  %190 = icmp sge i64 %188, %189
  br i1 %190, label %191, label %193

191:                                              ; preds = %180
  %192 = load i64, ptr %20, align 8, !tbaa !9
  br label %195

193:                                              ; preds = %180
  %194 = load i64, ptr %21, align 8, !tbaa !9
  br label %195

195:                                              ; preds = %193, %191
  %196 = phi i64 [ %192, %191 ], [ %194, %193 ]
  store i64 %196, ptr %30, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %195, %170
  br label %198

198:                                              ; preds = %197, %165
  br label %199

199:                                              ; preds = %198, %150, %145
  %200 = load i64, ptr %27, align 8, !tbaa !9
  %201 = load i64, ptr %30, align 8, !tbaa !9
  %202 = icmp sge i64 %200, %201
  br i1 %202, label %203, label %334

203:                                              ; preds = %199
  %204 = load i64, ptr %27, align 8, !tbaa !9
  %205 = load i64, ptr %25, align 8, !tbaa !9
  %206 = icmp slt i64 %204, %205
  br i1 %206, label %207, label %334

207:                                              ; preds = %203
  %208 = load i64, ptr %28, align 8, !tbaa !9
  %209 = load i64, ptr %25, align 8, !tbaa !9
  %210 = icmp slt i64 %208, %209
  br i1 %210, label %211, label %334

211:                                              ; preds = %207
  %212 = load i64, ptr %25, align 8, !tbaa !9
  %213 = load i64, ptr %28, align 8, !tbaa !9
  %214 = sub nsw i64 %212, %213
  store i64 %214, ptr %20, align 8, !tbaa !9
  %215 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %215, ptr %21, align 8, !tbaa !9
  store i64 1, ptr %24, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %329, %211
  %217 = load i64, ptr %21, align 8, !tbaa !9
  %218 = icmp slt i64 %217, 0
  br i1 %218, label %219, label %224

219:                                              ; preds = %216
  %220 = load i64, ptr %24, align 8, !tbaa !9
  %221 = load i64, ptr %20, align 8, !tbaa !9
  %222 = icmp sge i64 %220, %221
  %223 = zext i1 %222 to i32
  br label %229

224:                                              ; preds = %216
  %225 = load i64, ptr %24, align 8, !tbaa !9
  %226 = load i64, ptr %20, align 8, !tbaa !9
  %227 = icmp sle i64 %225, %226
  %228 = zext i1 %227 to i32
  br label %229

229:                                              ; preds = %224, %219
  %230 = phi i32 [ %223, %219 ], [ %228, %224 ]
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %232, label %333

232:                                              ; preds = %229
  %233 = load i64, ptr %25, align 8, !tbaa !9
  %234 = load i64, ptr %24, align 8, !tbaa !9
  %235 = sub nsw i64 %233, %234
  %236 = add nsw i64 %235, 1
  store i64 %236, ptr %22, align 8, !tbaa !9
  %237 = load i64, ptr %22, align 8, !tbaa !9
  %238 = load i64, ptr %27, align 8, !tbaa !9
  %239 = icmp sle i64 %237, %238
  br i1 %239, label %240, label %242

240:                                              ; preds = %232
  %241 = load i64, ptr %22, align 8, !tbaa !9
  br label %244

242:                                              ; preds = %232
  %243 = load i64, ptr %27, align 8, !tbaa !9
  br label %244

244:                                              ; preds = %242, %240
  %245 = phi i64 [ %241, %240 ], [ %243, %242 ]
  store i64 %245, ptr %26, align 8, !tbaa !9
  %246 = load ptr, ptr %11, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  %248 = load i64, ptr %24, align 8, !tbaa !9
  %249 = sub nsw i64 %247, %248
  %250 = add nsw i64 %249, 1
  store i64 %250, ptr %22, align 8, !tbaa !9
  %251 = load ptr, ptr %12, align 8, !tbaa !5
  %252 = load i64, ptr %24, align 8, !tbaa !9
  %253 = load i64, ptr %24, align 8, !tbaa !9
  %254 = load i64, ptr %18, align 8, !tbaa !9
  %255 = mul nsw i64 %253, %254
  %256 = add nsw i64 %252, %255
  %257 = getelementptr inbounds double, ptr %251, i64 %256
  %258 = load ptr, ptr %13, align 8, !tbaa !5
  %259 = load ptr, ptr %14, align 8, !tbaa !5
  %260 = load i64, ptr %24, align 8, !tbaa !9
  %261 = getelementptr inbounds double, ptr %259, i64 %260
  %262 = load ptr, ptr %15, align 8, !tbaa !5
  %263 = getelementptr inbounds double, ptr %262, i64 1
  %264 = call i32 @dgelq2_(ptr noundef %26, ptr noundef %22, ptr noundef %257, ptr noundef %258, ptr noundef %261, ptr noundef %263, ptr noundef %31)
  %265 = load i64, ptr %24, align 8, !tbaa !9
  %266 = load i64, ptr %26, align 8, !tbaa !9
  %267 = add nsw i64 %265, %266
  %268 = load ptr, ptr %10, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = icmp sle i64 %267, %269
  br i1 %270, label %271, label %328

271:                                              ; preds = %244
  %272 = load ptr, ptr %11, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  %274 = load i64, ptr %24, align 8, !tbaa !9
  %275 = sub nsw i64 %273, %274
  %276 = add nsw i64 %275, 1
  store i64 %276, ptr %22, align 8, !tbaa !9
  %277 = load ptr, ptr %12, align 8, !tbaa !5
  %278 = load i64, ptr %24, align 8, !tbaa !9
  %279 = load i64, ptr %24, align 8, !tbaa !9
  %280 = load i64, ptr %18, align 8, !tbaa !9
  %281 = mul nsw i64 %279, %280
  %282 = add nsw i64 %278, %281
  %283 = getelementptr inbounds double, ptr %277, i64 %282
  %284 = load ptr, ptr %13, align 8, !tbaa !5
  %285 = load ptr, ptr %14, align 8, !tbaa !5
  %286 = load i64, ptr %24, align 8, !tbaa !9
  %287 = getelementptr inbounds double, ptr %285, i64 %286
  %288 = load ptr, ptr %15, align 8, !tbaa !5
  %289 = getelementptr inbounds double, ptr %288, i64 1
  %290 = call i32 @dlarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %26, ptr noundef %283, ptr noundef %284, ptr noundef %287, ptr noundef %289, ptr noundef %32)
  %291 = load ptr, ptr %10, align 8, !tbaa !5
  %292 = load i64, ptr %291, align 8, !tbaa !9
  %293 = load i64, ptr %24, align 8, !tbaa !9
  %294 = sub nsw i64 %292, %293
  %295 = load i64, ptr %26, align 8, !tbaa !9
  %296 = sub nsw i64 %294, %295
  %297 = add nsw i64 %296, 1
  store i64 %297, ptr %22, align 8, !tbaa !9
  %298 = load ptr, ptr %11, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = load i64, ptr %24, align 8, !tbaa !9
  %301 = sub nsw i64 %299, %300
  %302 = add nsw i64 %301, 1
  store i64 %302, ptr %23, align 8, !tbaa !9
  %303 = load ptr, ptr %12, align 8, !tbaa !5
  %304 = load i64, ptr %24, align 8, !tbaa !9
  %305 = load i64, ptr %24, align 8, !tbaa !9
  %306 = load i64, ptr %18, align 8, !tbaa !9
  %307 = mul nsw i64 %305, %306
  %308 = add nsw i64 %304, %307
  %309 = getelementptr inbounds double, ptr %303, i64 %308
  %310 = load ptr, ptr %13, align 8, !tbaa !5
  %311 = load ptr, ptr %15, align 8, !tbaa !5
  %312 = getelementptr inbounds double, ptr %311, i64 1
  %313 = load ptr, ptr %12, align 8, !tbaa !5
  %314 = load i64, ptr %24, align 8, !tbaa !9
  %315 = load i64, ptr %26, align 8, !tbaa !9
  %316 = add nsw i64 %314, %315
  %317 = load i64, ptr %24, align 8, !tbaa !9
  %318 = load i64, ptr %18, align 8, !tbaa !9
  %319 = mul nsw i64 %317, %318
  %320 = add nsw i64 %316, %319
  %321 = getelementptr inbounds double, ptr %313, i64 %320
  %322 = load ptr, ptr %13, align 8, !tbaa !5
  %323 = load ptr, ptr %15, align 8, !tbaa !5
  %324 = load i64, ptr %26, align 8, !tbaa !9
  %325 = add nsw i64 %324, 1
  %326 = getelementptr inbounds double, ptr %323, i64 %325
  %327 = call i32 @dlarfb_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %23, ptr noundef %26, ptr noundef %309, ptr noundef %310, ptr noundef %312, ptr noundef %32, ptr noundef %321, ptr noundef %322, ptr noundef %326, ptr noundef %32)
  br label %328

328:                                              ; preds = %271, %244
  br label %329

329:                                              ; preds = %328
  %330 = load i64, ptr %21, align 8, !tbaa !9
  %331 = load i64, ptr %24, align 8, !tbaa !9
  %332 = add nsw i64 %331, %330
  store i64 %332, ptr %24, align 8, !tbaa !9
  br label %216, !llvm.loop !13

333:                                              ; preds = %229
  br label %335

334:                                              ; preds = %207, %203, %199
  store i64 1, ptr %24, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %334, %333
  %336 = load i64, ptr %24, align 8, !tbaa !9
  %337 = load i64, ptr %25, align 8, !tbaa !9
  %338 = icmp sle i64 %336, %337
  br i1 %338, label %339, label %364

339:                                              ; preds = %335
  %340 = load ptr, ptr %10, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  %342 = load i64, ptr %24, align 8, !tbaa !9
  %343 = sub nsw i64 %341, %342
  %344 = add nsw i64 %343, 1
  store i64 %344, ptr %21, align 8, !tbaa !9
  %345 = load ptr, ptr %11, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = load i64, ptr %24, align 8, !tbaa !9
  %348 = sub nsw i64 %346, %347
  %349 = add nsw i64 %348, 1
  store i64 %349, ptr %20, align 8, !tbaa !9
  %350 = load ptr, ptr %12, align 8, !tbaa !5
  %351 = load i64, ptr %24, align 8, !tbaa !9
  %352 = load i64, ptr %24, align 8, !tbaa !9
  %353 = load i64, ptr %18, align 8, !tbaa !9
  %354 = mul nsw i64 %352, %353
  %355 = add nsw i64 %351, %354
  %356 = getelementptr inbounds double, ptr %350, i64 %355
  %357 = load ptr, ptr %13, align 8, !tbaa !5
  %358 = load ptr, ptr %14, align 8, !tbaa !5
  %359 = load i64, ptr %24, align 8, !tbaa !9
  %360 = getelementptr inbounds double, ptr %358, i64 %359
  %361 = load ptr, ptr %15, align 8, !tbaa !5
  %362 = getelementptr inbounds double, ptr %361, i64 1
  %363 = call i32 @dgelq2_(ptr noundef %21, ptr noundef %20, ptr noundef %356, ptr noundef %357, ptr noundef %360, ptr noundef %362, ptr noundef %31)
  br label %364

364:                                              ; preds = %339, %335
  %365 = load i64, ptr %29, align 8, !tbaa !9
  %366 = sitofp i64 %365 to double
  %367 = load ptr, ptr %15, align 8, !tbaa !5
  %368 = getelementptr inbounds double, ptr %367, i64 1
  store double %366, ptr %368, align 8, !tbaa !11
  store i32 0, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %369

369:                                              ; preds = %364, %142, %124, %116
  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
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  %370 = load i32, ptr %9, align 4
  ret i32 %370
}

; 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 @dgelq2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@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 [8 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 [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dgelqf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7) local_unnamed_addr #0 {
  %9 = alloca i64, align 8
  %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
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  %16 = load i64, ptr %3, align 8, !tbaa !5
  %17 = xor i64 %16, -1
  %18 = getelementptr inbounds double, ptr %2, i64 %17
  %19 = getelementptr inbounds i8, ptr %4, i64 -8
  store i64 0, ptr %7, align 8, !tbaa !5
  %20 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %21 = load i64, ptr %0, align 8, !tbaa !5
  %22 = mul nsw i64 %21, %20
  %23 = sitofp i64 %22 to double
  store double %23, ptr %5, align 8, !tbaa !9
  %24 = load i64, ptr %6, align 8, !tbaa !5
  %25 = icmp eq i64 %24, -1
  %26 = icmp slt i64 %21, 0
  br i1 %26, label %.thread.sink.split, label %27

27:                                               ; preds = %8
  %28 = load i64, ptr %1, align 8, !tbaa !5
  %29 = icmp slt i64 %28, 0
  br i1 %29, label %.thread.sink.split, label %30

30:                                               ; preds = %27
  %31 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %21, i64 1)
  %32 = icmp slt i64 %31, %spec.select
  br i1 %32, label %.thread.sink.split, label %33

33:                                               ; preds = %30
  %34 = icmp sge i64 %24, %spec.select
  %or.cond = or i1 %34, %25
  br i1 %or.cond, label %35, label %.thread.sink.split

35:                                               ; preds = %33
  %.pr = load i64, ptr %7, align 8, !tbaa !5
  %.not = icmp eq i64 %.pr, 0
  br i1 %.not, label %39, label %.thread

.thread.sink.split:                               ; preds = %33, %30, %27, %8
  %.sink = phi i64 [ -1, %8 ], [ -2, %27 ], [ -4, %30 ], [ -7, %33 ]
  store i64 %.sink, ptr %7, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %35
  %36 = phi i64 [ %.pr, %35 ], [ %.sink, %.thread.sink.split ]
  %37 = sub nsw i64 0, %36
  store i64 %37, ptr %9, align 8, !tbaa !5
  %38 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %9) #4
  br label %110

39:                                               ; preds = %35
  br i1 %25, label %110, label %40

40:                                               ; preds = %39
  %41 = tail call i64 @llvm.umin.i64(i64 %21, i64 %28)
  %42 = icmp eq i64 %41, 0
  br i1 %42, label %43, label %44

43:                                               ; preds = %40
  store double 1.000000e+00, ptr %5, align 8, !tbaa !9
  br label %110

44:                                               ; preds = %40
  %45 = icmp sgt i64 %20, 1
  %46 = icmp slt i64 %20, %41
  %or.cond147 = and i1 %45, %46
  br i1 %or.cond147, label %47, label %60

47:                                               ; preds = %44
  %48 = 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 @c_n1, ptr noundef nonnull @c_n1) #4
  %49 = tail call i64 @llvm.smax.i64(i64 %48, i64 0)
  %50 = icmp slt i64 %48, %41
  br i1 %50, label %51, label %60

51:                                               ; preds = %47
  %52 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %52, ptr %15, align 8, !tbaa !5
  %53 = mul nsw i64 %52, %20
  %54 = load i64, ptr %6, align 8, !tbaa !5
  %55 = icmp slt i64 %54, %53
  br i1 %55, label %56, label %60

56:                                               ; preds = %51
  %57 = sdiv i64 %54, %52
  store i64 2, ptr %9, align 8, !tbaa !5
  %58 = 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 @c_n1, ptr noundef nonnull @c_n1) #4
  store i64 %58, ptr %10, align 8, !tbaa !5
  %59 = tail call i64 @llvm.smax.i64(i64 %58, i64 2)
  br label %60

60:                                               ; preds = %47, %56, %51, %44
  %61 = phi i64 [ %57, %56 ], [ %20, %51 ], [ %20, %47 ], [ %20, %44 ]
  %.0124 = phi i64 [ %49, %56 ], [ %49, %51 ], [ %49, %47 ], [ 0, %44 ]
  %.0123 = phi i64 [ %53, %56 ], [ %53, %51 ], [ %21, %47 ], [ %21, %44 ]
  %.0122 = phi i64 [ %59, %56 ], [ 2, %51 ], [ 2, %47 ], [ 2, %44 ]
  %.not142 = icmp sge i64 %61, %.0122
  %62 = icmp slt i64 %61, %41
  %or.cond148 = and i1 %62, %.not142
  %63 = icmp ult i64 %.0124, %41
  %or.cond149 = and i1 %63, %or.cond148
  br i1 %or.cond149, label %64, label %.loopexit

64:                                               ; preds = %60
  %65 = sub nsw i64 %41, %.0124
  store i64 %65, ptr %9, align 8, !tbaa !5
  %66 = icmp sgt i64 %65, 0
  br i1 %66, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %64, %95
  %.0126.neg154 = phi i64 [ %.0126.neg, %95 ], [ -1, %64 ]
  %.0126153 = phi i64 [ %96, %95 ], [ 1, %64 ]
  %67 = sub nsw i64 %41, %.0126153
  %68 = add nsw i64 %67, 1
  %69 = call i64 @llvm.smin.i64(i64 %68, i64 %61)
  store i64 %69, ptr %13, align 8, !tbaa !5
  %70 = load i64, ptr %1, align 8, !tbaa !5
  %71 = add i64 %.0126.neg154, 1
  %72 = add i64 %71, %70
  store i64 %72, ptr %11, align 8, !tbaa !5
  %73 = mul nsw i64 %.0126153, %16
  %74 = getelementptr double, ptr %18, i64 %.0126153
  %75 = getelementptr double, ptr %74, i64 %73
  %76 = getelementptr inbounds double, ptr %19, i64 %.0126153
  %77 = call i32 @dgelq2_(ptr noundef nonnull %13, ptr noundef nonnull %11, ptr noundef %75, ptr noundef nonnull %3, ptr noundef nonnull %76, ptr noundef nonnull %5, ptr noundef nonnull %14) #4
  %78 = load i64, ptr %13, align 8, !tbaa !5
  %79 = add nsw i64 %78, %.0126153
  %80 = load i64, ptr %0, align 8, !tbaa !5
  %.not145 = icmp sgt i64 %79, %80
  br i1 %.not145, label %95, label %81

81:                                               ; preds = %.lr.ph
  %82 = load i64, ptr %1, align 8, !tbaa !5
  %83 = add i64 %71, %82
  store i64 %83, ptr %11, align 8, !tbaa !5
  %84 = call i32 @dlarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef %75, ptr noundef nonnull %3, ptr noundef nonnull %76, ptr noundef nonnull %5, ptr noundef nonnull %15) #4
  %85 = load i64, ptr %0, align 8, !tbaa !5
  %86 = load i64, ptr %13, align 8, !tbaa !5
  %87 = add i64 %71, %85
  %88 = sub i64 %87, %86
  store i64 %88, ptr %11, align 8, !tbaa !5
  %89 = load i64, ptr %1, align 8, !tbaa !5
  %90 = add i64 %71, %89
  store i64 %90, ptr %12, align 8, !tbaa !5
  %91 = getelementptr double, ptr %74, i64 %86
  %92 = getelementptr double, ptr %91, i64 %73
  %93 = getelementptr double, ptr %5, i64 %86
  %94 = 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 %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %75, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %15, ptr noundef %92, ptr noundef nonnull %3, ptr noundef %93, ptr noundef nonnull %15) #4
  br label %95

95:                                               ; preds = %.lr.ph, %81
  %96 = add nsw i64 %61, %.0126153
  %.0126.neg = sub i64 0, %96
  %97 = load i64, ptr %9, align 8
  %.not156 = icmp sgt i64 %96, %97
  br i1 %.not156, label %.loopexit, label %.lr.ph, !llvm.loop !11

.loopexit:                                        ; preds = %95, %64, %60
  %.1 = phi i64 [ 1, %60 ], [ 1, %64 ], [ %96, %95 ]
  %.not143 = icmp sgt i64 %.1, %41
  br i1 %.not143, label %108, label %98

98:                                               ; preds = %.loopexit
  %99 = load i64, ptr %0, align 8, !tbaa !5
  %reass.sub = sub i64 %99, %.1
  %100 = add i64 %reass.sub, 1
  store i64 %100, ptr %10, align 8, !tbaa !5
  %101 = load i64, ptr %1, align 8, !tbaa !5
  %reass.sub155 = sub i64 %101, %.1
  %102 = add i64 %reass.sub155, 1
  store i64 %102, ptr %9, align 8, !tbaa !5
  %103 = add i64 %16, 1
  %104 = mul i64 %.1, %103
  %105 = getelementptr inbounds double, ptr %18, i64 %104
  %106 = getelementptr inbounds double, ptr %19, i64 %.1
  %107 = call i32 @dgelq2_(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef %105, ptr noundef nonnull %3, ptr noundef nonnull %106, ptr noundef nonnull %5, ptr noundef nonnull %14) #4
  br label %108

108:                                              ; preds = %98, %.loopexit
  %109 = sitofp i64 %.0123 to double
  store double %109, ptr %5, align 8, !tbaa !9
  br label %110

110:                                              ; preds = %39, %108, %43, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  ret i32 0
}

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

declare i64 @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 @dgelq2_(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 nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umin.i64(i64, i64) #3

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

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

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


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