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

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

%struct.complex = type { float, float }

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

; Function Attrs: nounwind uwtable
define dso_local void @cungqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) #0 {
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  store ptr %8, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  %40 = load ptr, ptr %14, align 8, !tbaa !5
  %41 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %41, ptr %19, align 4, !tbaa !9
  %42 = load i32, ptr %19, align 4, !tbaa !9
  %43 = mul nsw i32 %42, 1
  %44 = add nsw i32 1, %43
  store i32 %44, ptr %20, align 4, !tbaa !9
  %45 = load i32, ptr %20, align 4, !tbaa !9
  %46 = load ptr, ptr %13, align 8, !tbaa !5
  %47 = sext i32 %45 to i64
  %48 = sub i64 0, %47
  %49 = getelementptr inbounds %struct.complex, ptr %46, i64 %48
  store ptr %49, ptr %13, align 8, !tbaa !5
  %50 = load ptr, ptr %15, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.complex, ptr %50, i32 -1
  store ptr %51, ptr %15, align 8, !tbaa !5
  %52 = load ptr, ptr %16, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.complex, ptr %52, i32 -1
  store ptr %53, ptr %16, align 8, !tbaa !5
  %54 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %54, align 4, !tbaa !9
  %55 = load ptr, ptr %10, align 8, !tbaa !5
  %56 = load ptr, ptr %11, align 8, !tbaa !5
  %57 = load ptr, ptr %12, align 8, !tbaa !5
  %58 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %55, ptr noundef %56, ptr noundef %57, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %58, ptr %31, align 4, !tbaa !9
  %59 = load ptr, ptr %11, align 8, !tbaa !5
  %60 = load i32, ptr %59, align 4, !tbaa !9
  %61 = icmp sge i32 1, %60
  br i1 %61, label %62, label %63

62:                                               ; preds = %9
  br label %66

63:                                               ; preds = %9
  %64 = load ptr, ptr %11, align 8, !tbaa !5
  %65 = load i32, ptr %64, align 4, !tbaa !9
  br label %66

66:                                               ; preds = %63, %62
  %67 = phi i32 [ 1, %62 ], [ %65, %63 ]
  %68 = load i32, ptr %31, align 4, !tbaa !9
  %69 = mul nsw i32 %67, %68
  store i32 %69, ptr %36, align 4, !tbaa !9
  %70 = load i32, ptr %36, align 4, !tbaa !9
  %71 = sitofp i32 %70 to float
  %72 = load ptr, ptr %16, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.complex, ptr %72, i64 1
  %74 = getelementptr inbounds %struct.complex, ptr %73, i32 0, i32 0
  store float %71, ptr %74, align 4, !tbaa !11
  %75 = load ptr, ptr %16, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.complex, ptr %75, i64 1
  %77 = getelementptr inbounds %struct.complex, ptr %76, i32 0, i32 1
  store float 0.000000e+00, ptr %77, align 4, !tbaa !14
  %78 = load ptr, ptr %17, align 8, !tbaa !5
  %79 = load i32, ptr %78, align 4, !tbaa !9
  %80 = icmp eq i32 %79, -1
  %81 = zext i1 %80 to i32
  store i32 %81, ptr %37, align 4, !tbaa !9
  %82 = load ptr, ptr %10, align 8, !tbaa !5
  %83 = load i32, ptr %82, align 4, !tbaa !9
  %84 = icmp slt i32 %83, 0
  br i1 %84, label %85, label %87

85:                                               ; preds = %66
  %86 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -1, ptr %86, align 4, !tbaa !9
  br label %148

87:                                               ; preds = %66
  %88 = load ptr, ptr %11, align 8, !tbaa !5
  %89 = load i32, ptr %88, align 4, !tbaa !9
  %90 = icmp slt i32 %89, 0
  br i1 %90, label %97, label %91

91:                                               ; preds = %87
  %92 = load ptr, ptr %11, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !9
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  %96 = icmp sgt i32 %93, %95
  br i1 %96, label %97, label %99

97:                                               ; preds = %91, %87
  %98 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -2, ptr %98, align 4, !tbaa !9
  br label %147

99:                                               ; preds = %91
  %100 = load ptr, ptr %12, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = icmp slt i32 %101, 0
  br i1 %102, label %109, label %103

103:                                              ; preds = %99
  %104 = load ptr, ptr %12, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = load ptr, ptr %11, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = icmp sgt i32 %105, %107
  br i1 %108, label %109, label %111

109:                                              ; preds = %103, %99
  %110 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -3, ptr %110, align 4, !tbaa !9
  br label %146

111:                                              ; preds = %103
  %112 = load ptr, ptr %14, align 8, !tbaa !5
  %113 = load i32, ptr %112, align 4, !tbaa !9
  %114 = load ptr, ptr %10, align 8, !tbaa !5
  %115 = load i32, ptr %114, align 4, !tbaa !9
  %116 = icmp sge i32 1, %115
  br i1 %116, label %117, label %118

117:                                              ; preds = %111
  br label %121

118:                                              ; preds = %111
  %119 = load ptr, ptr %10, align 8, !tbaa !5
  %120 = load i32, ptr %119, align 4, !tbaa !9
  br label %121

121:                                              ; preds = %118, %117
  %122 = phi i32 [ 1, %117 ], [ %120, %118 ]
  %123 = icmp slt i32 %113, %122
  br i1 %123, label %124, label %126

124:                                              ; preds = %121
  %125 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -5, ptr %125, align 4, !tbaa !9
  br label %145

126:                                              ; preds = %121
  %127 = load ptr, ptr %17, align 8, !tbaa !5
  %128 = load i32, ptr %127, align 4, !tbaa !9
  %129 = load ptr, ptr %11, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !9
  %131 = icmp sge i32 1, %130
  br i1 %131, label %132, label %133

132:                                              ; preds = %126
  br label %136

133:                                              ; preds = %126
  %134 = load ptr, ptr %11, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  br label %136

136:                                              ; preds = %133, %132
  %137 = phi i32 [ 1, %132 ], [ %135, %133 ]
  %138 = icmp slt i32 %128, %137
  br i1 %138, label %139, label %144

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

142:                                              ; preds = %139
  %143 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -8, ptr %143, align 4, !tbaa !9
  br label %144

144:                                              ; preds = %142, %139, %136
  br label %145

145:                                              ; preds = %144, %124
  br label %146

146:                                              ; preds = %145, %109
  br label %147

147:                                              ; preds = %146, %97
  br label %148

148:                                              ; preds = %147, %85
  %149 = load ptr, ptr %18, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %157

152:                                              ; preds = %148
  %153 = load ptr, ptr %18, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = sub nsw i32 0, %154
  store i32 %155, ptr %21, align 4, !tbaa !9
  %156 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %21, i32 noundef 6)
  store i32 1, ptr %39, align 4
  br label %523

157:                                              ; preds = %148
  %158 = load i32, ptr %37, align 4, !tbaa !9
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %160, label %161

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

161:                                              ; preds = %157
  br label %162

162:                                              ; preds = %161
  %163 = load ptr, ptr %11, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = icmp sle i32 %164, 0
  br i1 %165, label %166, label %173

166:                                              ; preds = %162
  %167 = load ptr, ptr %16, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.complex, ptr %167, i64 1
  %169 = getelementptr inbounds %struct.complex, ptr %168, i32 0, i32 0
  store float 1.000000e+00, ptr %169, align 4, !tbaa !11
  %170 = load ptr, ptr %16, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.complex, ptr %170, i64 1
  %172 = getelementptr inbounds %struct.complex, ptr %171, i32 0, i32 1
  store float 0.000000e+00, ptr %172, align 4, !tbaa !14
  store i32 1, ptr %39, align 4
  br label %523

173:                                              ; preds = %162
  store i32 2, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %34, align 4, !tbaa !9
  %174 = load ptr, ptr %11, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  store i32 %175, ptr %38, align 4, !tbaa !9
  %176 = load i32, ptr %31, align 4, !tbaa !9
  %177 = icmp sgt i32 %176, 1
  br i1 %177, label %178, label %231

178:                                              ; preds = %173
  %179 = load i32, ptr %31, align 4, !tbaa !9
  %180 = load ptr, ptr %12, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = icmp slt i32 %179, %181
  br i1 %182, label %183, label %231

183:                                              ; preds = %178
  store i32 0, ptr %21, align 4, !tbaa !9
  %184 = load ptr, ptr %10, align 8, !tbaa !5
  %185 = load ptr, ptr %11, align 8, !tbaa !5
  %186 = load ptr, ptr %12, align 8, !tbaa !5
  %187 = call i32 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %184, ptr noundef %185, ptr noundef %186, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %187, ptr %22, align 4, !tbaa !9
  %188 = load i32, ptr %21, align 4, !tbaa !9
  %189 = load i32, ptr %22, align 4, !tbaa !9
  %190 = icmp sge i32 %188, %189
  br i1 %190, label %191, label %193

191:                                              ; preds = %183
  %192 = load i32, ptr %21, align 4, !tbaa !9
  br label %195

193:                                              ; preds = %183
  %194 = load i32, ptr %22, align 4, !tbaa !9
  br label %195

195:                                              ; preds = %193, %191
  %196 = phi i32 [ %192, %191 ], [ %194, %193 ]
  store i32 %196, ptr %34, align 4, !tbaa !9
  %197 = load i32, ptr %34, align 4, !tbaa !9
  %198 = load ptr, ptr %12, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = icmp slt i32 %197, %199
  br i1 %200, label %201, label %230

201:                                              ; preds = %195
  %202 = load ptr, ptr %11, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  store i32 %203, ptr %35, align 4, !tbaa !9
  %204 = load i32, ptr %35, align 4, !tbaa !9
  %205 = load i32, ptr %31, align 4, !tbaa !9
  %206 = mul nsw i32 %204, %205
  store i32 %206, ptr %38, align 4, !tbaa !9
  %207 = load ptr, ptr %17, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = load i32, ptr %38, align 4, !tbaa !9
  %210 = icmp slt i32 %208, %209
  br i1 %210, label %211, label %229

211:                                              ; preds = %201
  %212 = load ptr, ptr %17, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = load i32, ptr %35, align 4, !tbaa !9
  %215 = sdiv i32 %213, %214
  store i32 %215, ptr %31, align 4, !tbaa !9
  store i32 2, ptr %21, align 4, !tbaa !9
  %216 = load ptr, ptr %10, align 8, !tbaa !5
  %217 = load ptr, ptr %11, align 8, !tbaa !5
  %218 = load ptr, ptr %12, align 8, !tbaa !5
  %219 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %216, ptr noundef %217, ptr noundef %218, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %219, ptr %22, align 4, !tbaa !9
  %220 = load i32, ptr %21, align 4, !tbaa !9
  %221 = load i32, ptr %22, align 4, !tbaa !9
  %222 = icmp sge i32 %220, %221
  br i1 %222, label %223, label %225

223:                                              ; preds = %211
  %224 = load i32, ptr %21, align 4, !tbaa !9
  br label %227

225:                                              ; preds = %211
  %226 = load i32, ptr %22, align 4, !tbaa !9
  br label %227

227:                                              ; preds = %225, %223
  %228 = phi i32 [ %224, %223 ], [ %226, %225 ]
  store i32 %228, ptr %28, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %227, %201
  br label %230

230:                                              ; preds = %229, %195
  br label %231

231:                                              ; preds = %230, %178, %173
  %232 = load i32, ptr %31, align 4, !tbaa !9
  %233 = load i32, ptr %28, align 4, !tbaa !9
  %234 = icmp sge i32 %232, %233
  br i1 %234, label %235, label %307

235:                                              ; preds = %231
  %236 = load i32, ptr %31, align 4, !tbaa !9
  %237 = load ptr, ptr %12, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = icmp slt i32 %236, %238
  br i1 %239, label %240, label %307

240:                                              ; preds = %235
  %241 = load i32, ptr %34, align 4, !tbaa !9
  %242 = load ptr, ptr %12, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = icmp slt i32 %241, %243
  br i1 %244, label %245, label %307

245:                                              ; preds = %240
  %246 = load ptr, ptr %12, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = load i32, ptr %34, align 4, !tbaa !9
  %249 = sub nsw i32 %247, %248
  %250 = sub nsw i32 %249, 1
  %251 = load i32, ptr %31, align 4, !tbaa !9
  %252 = sdiv i32 %250, %251
  %253 = load i32, ptr %31, align 4, !tbaa !9
  %254 = mul nsw i32 %252, %253
  store i32 %254, ptr %32, align 4, !tbaa !9
  %255 = load ptr, ptr %12, align 8, !tbaa !5
  %256 = load i32, ptr %255, align 4, !tbaa !9
  store i32 %256, ptr %21, align 4, !tbaa !9
  %257 = load i32, ptr %32, align 4, !tbaa !9
  %258 = load i32, ptr %31, align 4, !tbaa !9
  %259 = add nsw i32 %257, %258
  store i32 %259, ptr %22, align 4, !tbaa !9
  %260 = load i32, ptr %21, align 4, !tbaa !9
  %261 = load i32, ptr %22, align 4, !tbaa !9
  %262 = icmp sle i32 %260, %261
  br i1 %262, label %263, label %265

263:                                              ; preds = %245
  %264 = load i32, ptr %21, align 4, !tbaa !9
  br label %267

265:                                              ; preds = %245
  %266 = load i32, ptr %22, align 4, !tbaa !9
  br label %267

267:                                              ; preds = %265, %263
  %268 = phi i32 [ %264, %263 ], [ %266, %265 ]
  store i32 %268, ptr %33, align 4, !tbaa !9
  %269 = load ptr, ptr %11, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  store i32 %270, ptr %21, align 4, !tbaa !9
  %271 = load i32, ptr %33, align 4, !tbaa !9
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr %26, align 4, !tbaa !9
  br label %273

273:                                              ; preds = %303, %267
  %274 = load i32, ptr %26, align 4, !tbaa !9
  %275 = load i32, ptr %21, align 4, !tbaa !9
  %276 = icmp sle i32 %274, %275
  br i1 %276, label %277, label %306

277:                                              ; preds = %273
  %278 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %278, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %299, %277
  %280 = load i32, ptr %25, align 4, !tbaa !9
  %281 = load i32, ptr %22, align 4, !tbaa !9
  %282 = icmp sle i32 %280, %281
  br i1 %282, label %283, label %302

283:                                              ; preds = %279
  %284 = load i32, ptr %25, align 4, !tbaa !9
  %285 = load i32, ptr %26, align 4, !tbaa !9
  %286 = load i32, ptr %19, align 4, !tbaa !9
  %287 = mul nsw i32 %285, %286
  %288 = add nsw i32 %284, %287
  store i32 %288, ptr %23, align 4, !tbaa !9
  %289 = load ptr, ptr %13, align 8, !tbaa !5
  %290 = load i32, ptr %23, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds %struct.complex, ptr %289, i64 %291
  %293 = getelementptr inbounds %struct.complex, ptr %292, i32 0, i32 0
  store float 0.000000e+00, ptr %293, align 4, !tbaa !11
  %294 = load ptr, ptr %13, align 8, !tbaa !5
  %295 = load i32, ptr %23, align 4, !tbaa !9
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds %struct.complex, ptr %294, i64 %296
  %298 = getelementptr inbounds %struct.complex, ptr %297, i32 0, i32 1
  store float 0.000000e+00, ptr %298, align 4, !tbaa !14
  br label %299

299:                                              ; preds = %283
  %300 = load i32, ptr %25, align 4, !tbaa !9
  %301 = add nsw i32 %300, 1
  store i32 %301, ptr %25, align 4, !tbaa !9
  br label %279, !llvm.loop !15

302:                                              ; preds = %279
  br label %303

303:                                              ; preds = %302
  %304 = load i32, ptr %26, align 4, !tbaa !9
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %26, align 4, !tbaa !9
  br label %273, !llvm.loop !17

306:                                              ; preds = %273
  br label %308

307:                                              ; preds = %240, %235, %231
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %307, %306
  %309 = load i32, ptr %33, align 4, !tbaa !9
  %310 = load ptr, ptr %11, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = icmp slt i32 %309, %311
  br i1 %312, label %313, label %344

313:                                              ; preds = %308
  %314 = load ptr, ptr %10, align 8, !tbaa !5
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = load i32, ptr %33, align 4, !tbaa !9
  %317 = sub nsw i32 %315, %316
  store i32 %317, ptr %21, align 4, !tbaa !9
  %318 = load ptr, ptr %11, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = load i32, ptr %33, align 4, !tbaa !9
  %321 = sub nsw i32 %319, %320
  store i32 %321, ptr %22, align 4, !tbaa !9
  %322 = load ptr, ptr %12, align 8, !tbaa !5
  %323 = load i32, ptr %322, align 4, !tbaa !9
  %324 = load i32, ptr %33, align 4, !tbaa !9
  %325 = sub nsw i32 %323, %324
  store i32 %325, ptr %23, align 4, !tbaa !9
  %326 = load ptr, ptr %13, align 8, !tbaa !5
  %327 = load i32, ptr %33, align 4, !tbaa !9
  %328 = add nsw i32 %327, 1
  %329 = load i32, ptr %33, align 4, !tbaa !9
  %330 = add nsw i32 %329, 1
  %331 = load i32, ptr %19, align 4, !tbaa !9
  %332 = mul nsw i32 %330, %331
  %333 = add nsw i32 %328, %332
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds %struct.complex, ptr %326, i64 %334
  %336 = load ptr, ptr %14, align 8, !tbaa !5
  %337 = load ptr, ptr %15, align 8, !tbaa !5
  %338 = load i32, ptr %33, align 4, !tbaa !9
  %339 = add nsw i32 %338, 1
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds %struct.complex, ptr %337, i64 %340
  %342 = load ptr, ptr %16, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.complex, ptr %342, i64 1
  call void @cung2r_(ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %335, ptr noundef %336, ptr noundef %341, ptr noundef %343, ptr noundef %29)
  br label %344

344:                                              ; preds = %313, %308
  %345 = load i32, ptr %33, align 4, !tbaa !9
  %346 = icmp sgt i32 %345, 0
  br i1 %346, label %347, label %514

347:                                              ; preds = %344
  %348 = load i32, ptr %31, align 4, !tbaa !9
  %349 = sub nsw i32 0, %348
  store i32 %349, ptr %21, align 4, !tbaa !9
  %350 = load i32, ptr %32, align 4, !tbaa !9
  %351 = add nsw i32 %350, 1
  store i32 %351, ptr %25, align 4, !tbaa !9
  br label %352

352:                                              ; preds = %509, %347
  %353 = load i32, ptr %21, align 4, !tbaa !9
  %354 = icmp slt i32 %353, 0
  br i1 %354, label %355, label %359

355:                                              ; preds = %352
  %356 = load i32, ptr %25, align 4, !tbaa !9
  %357 = icmp sge i32 %356, 1
  %358 = zext i1 %357 to i32
  br label %363

359:                                              ; preds = %352
  %360 = load i32, ptr %25, align 4, !tbaa !9
  %361 = icmp sle i32 %360, 1
  %362 = zext i1 %361 to i32
  br label %363

363:                                              ; preds = %359, %355
  %364 = phi i32 [ %358, %355 ], [ %362, %359 ]
  %365 = icmp ne i32 %364, 0
  br i1 %365, label %366, label %513

366:                                              ; preds = %363
  %367 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %367, ptr %22, align 4, !tbaa !9
  %368 = load ptr, ptr %12, align 8, !tbaa !5
  %369 = load i32, ptr %368, align 4, !tbaa !9
  %370 = load i32, ptr %25, align 4, !tbaa !9
  %371 = sub nsw i32 %369, %370
  %372 = add nsw i32 %371, 1
  store i32 %372, ptr %23, align 4, !tbaa !9
  %373 = load i32, ptr %22, align 4, !tbaa !9
  %374 = load i32, ptr %23, align 4, !tbaa !9
  %375 = icmp sle i32 %373, %374
  br i1 %375, label %376, label %378

376:                                              ; preds = %366
  %377 = load i32, ptr %22, align 4, !tbaa !9
  br label %380

378:                                              ; preds = %366
  %379 = load i32, ptr %23, align 4, !tbaa !9
  br label %380

380:                                              ; preds = %378, %376
  %381 = phi i32 [ %377, %376 ], [ %379, %378 ]
  store i32 %381, ptr %30, align 4, !tbaa !9
  %382 = load i32, ptr %25, align 4, !tbaa !9
  %383 = load i32, ptr %30, align 4, !tbaa !9
  %384 = add nsw i32 %382, %383
  %385 = load ptr, ptr %11, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = icmp sle i32 %384, %386
  br i1 %387, label %388, label %448

388:                                              ; preds = %380
  %389 = load ptr, ptr %10, align 8, !tbaa !5
  %390 = load i32, ptr %389, align 4, !tbaa !9
  %391 = load i32, ptr %25, align 4, !tbaa !9
  %392 = sub nsw i32 %390, %391
  %393 = add nsw i32 %392, 1
  store i32 %393, ptr %22, align 4, !tbaa !9
  %394 = load ptr, ptr %13, align 8, !tbaa !5
  %395 = load i32, ptr %25, align 4, !tbaa !9
  %396 = load i32, ptr %25, align 4, !tbaa !9
  %397 = load i32, ptr %19, align 4, !tbaa !9
  %398 = mul nsw i32 %396, %397
  %399 = add nsw i32 %395, %398
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.complex, ptr %394, i64 %400
  %402 = load ptr, ptr %14, align 8, !tbaa !5
  %403 = load ptr, ptr %15, align 8, !tbaa !5
  %404 = load i32, ptr %25, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds %struct.complex, ptr %403, i64 %405
  %407 = load ptr, ptr %16, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.complex, ptr %407, i64 1
  call void @clarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %30, ptr noundef %401, ptr noundef %402, ptr noundef %406, ptr noundef %408, ptr noundef %35)
  %409 = load ptr, ptr %10, align 8, !tbaa !5
  %410 = load i32, ptr %409, align 4, !tbaa !9
  %411 = load i32, ptr %25, align 4, !tbaa !9
  %412 = sub nsw i32 %410, %411
  %413 = add nsw i32 %412, 1
  store i32 %413, ptr %22, align 4, !tbaa !9
  %414 = load ptr, ptr %11, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = load i32, ptr %25, align 4, !tbaa !9
  %417 = sub nsw i32 %415, %416
  %418 = load i32, ptr %30, align 4, !tbaa !9
  %419 = sub nsw i32 %417, %418
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %23, align 4, !tbaa !9
  %421 = load ptr, ptr %13, align 8, !tbaa !5
  %422 = load i32, ptr %25, align 4, !tbaa !9
  %423 = load i32, ptr %25, align 4, !tbaa !9
  %424 = load i32, ptr %19, align 4, !tbaa !9
  %425 = mul nsw i32 %423, %424
  %426 = add nsw i32 %422, %425
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds %struct.complex, ptr %421, i64 %427
  %429 = load ptr, ptr %14, align 8, !tbaa !5
  %430 = load ptr, ptr %16, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.complex, ptr %430, i64 1
  %432 = load ptr, ptr %13, align 8, !tbaa !5
  %433 = load i32, ptr %25, align 4, !tbaa !9
  %434 = load i32, ptr %25, align 4, !tbaa !9
  %435 = load i32, ptr %30, align 4, !tbaa !9
  %436 = add nsw i32 %434, %435
  %437 = load i32, ptr %19, align 4, !tbaa !9
  %438 = mul nsw i32 %436, %437
  %439 = add nsw i32 %433, %438
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds %struct.complex, ptr %432, i64 %440
  %442 = load ptr, ptr %14, align 8, !tbaa !5
  %443 = load ptr, ptr %16, align 8, !tbaa !5
  %444 = load i32, ptr %30, align 4, !tbaa !9
  %445 = add nsw i32 %444, 1
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds %struct.complex, ptr %443, i64 %446
  call void @clarfb_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %23, ptr noundef %30, ptr noundef %428, ptr noundef %429, ptr noundef %431, ptr noundef %35, ptr noundef %441, ptr noundef %442, ptr noundef %447, ptr noundef %35)
  br label %448

448:                                              ; preds = %388, %380
  %449 = load ptr, ptr %10, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = load i32, ptr %25, align 4, !tbaa !9
  %452 = sub nsw i32 %450, %451
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr %22, align 4, !tbaa !9
  %454 = load ptr, ptr %13, align 8, !tbaa !5
  %455 = load i32, ptr %25, align 4, !tbaa !9
  %456 = load i32, ptr %25, align 4, !tbaa !9
  %457 = load i32, ptr %19, align 4, !tbaa !9
  %458 = mul nsw i32 %456, %457
  %459 = add nsw i32 %455, %458
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds %struct.complex, ptr %454, i64 %460
  %462 = load ptr, ptr %14, align 8, !tbaa !5
  %463 = load ptr, ptr %15, align 8, !tbaa !5
  %464 = load i32, ptr %25, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds %struct.complex, ptr %463, i64 %465
  %467 = load ptr, ptr %16, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.complex, ptr %467, i64 1
  call void @cung2r_(ptr noundef %22, ptr noundef %30, ptr noundef %30, ptr noundef %461, ptr noundef %462, ptr noundef %466, ptr noundef %468, ptr noundef %29)
  %469 = load i32, ptr %25, align 4, !tbaa !9
  %470 = load i32, ptr %30, align 4, !tbaa !9
  %471 = add nsw i32 %469, %470
  %472 = sub nsw i32 %471, 1
  store i32 %472, ptr %22, align 4, !tbaa !9
  %473 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %473, ptr %26, align 4, !tbaa !9
  br label %474

474:                                              ; preds = %505, %448
  %475 = load i32, ptr %26, align 4, !tbaa !9
  %476 = load i32, ptr %22, align 4, !tbaa !9
  %477 = icmp sle i32 %475, %476
  br i1 %477, label %478, label %508

478:                                              ; preds = %474
  %479 = load i32, ptr %25, align 4, !tbaa !9
  %480 = sub nsw i32 %479, 1
  store i32 %480, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %481

481:                                              ; preds = %501, %478
  %482 = load i32, ptr %27, align 4, !tbaa !9
  %483 = load i32, ptr %23, align 4, !tbaa !9
  %484 = icmp sle i32 %482, %483
  br i1 %484, label %485, label %504

485:                                              ; preds = %481
  %486 = load i32, ptr %27, align 4, !tbaa !9
  %487 = load i32, ptr %26, align 4, !tbaa !9
  %488 = load i32, ptr %19, align 4, !tbaa !9
  %489 = mul nsw i32 %487, %488
  %490 = add nsw i32 %486, %489
  store i32 %490, ptr %24, align 4, !tbaa !9
  %491 = load ptr, ptr %13, align 8, !tbaa !5
  %492 = load i32, ptr %24, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds %struct.complex, ptr %491, i64 %493
  %495 = getelementptr inbounds %struct.complex, ptr %494, i32 0, i32 0
  store float 0.000000e+00, ptr %495, align 4, !tbaa !11
  %496 = load ptr, ptr %13, align 8, !tbaa !5
  %497 = load i32, ptr %24, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds %struct.complex, ptr %496, i64 %498
  %500 = getelementptr inbounds %struct.complex, ptr %499, i32 0, i32 1
  store float 0.000000e+00, ptr %500, align 4, !tbaa !14
  br label %501

501:                                              ; preds = %485
  %502 = load i32, ptr %27, align 4, !tbaa !9
  %503 = add nsw i32 %502, 1
  store i32 %503, ptr %27, align 4, !tbaa !9
  br label %481, !llvm.loop !18

504:                                              ; preds = %481
  br label %505

505:                                              ; preds = %504
  %506 = load i32, ptr %26, align 4, !tbaa !9
  %507 = add nsw i32 %506, 1
  store i32 %507, ptr %26, align 4, !tbaa !9
  br label %474, !llvm.loop !19

508:                                              ; preds = %474
  br label %509

509:                                              ; preds = %508
  %510 = load i32, ptr %21, align 4, !tbaa !9
  %511 = load i32, ptr %25, align 4, !tbaa !9
  %512 = add nsw i32 %511, %510
  store i32 %512, ptr %25, align 4, !tbaa !9
  br label %352, !llvm.loop !20

513:                                              ; preds = %363
  br label %514

514:                                              ; preds = %513, %344
  %515 = load i32, ptr %38, align 4, !tbaa !9
  %516 = sitofp i32 %515 to float
  %517 = load ptr, ptr %16, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.complex, ptr %517, i64 1
  %519 = getelementptr inbounds %struct.complex, ptr %518, i32 0, i32 0
  store float %516, ptr %519, align 4, !tbaa !11
  %520 = load ptr, ptr %16, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.complex, ptr %520, i64 1
  %522 = getelementptr inbounds %struct.complex, ptr %521, i32 0, i32 1
  store float 0.000000e+00, ptr %522, align 4, !tbaa !14
  store i32 1, ptr %39, align 4
  br label %523

523:                                              ; preds = %514, %166, %160, %152
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  ret void
}

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

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

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

declare void @cung2r_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @clarft_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @clarfb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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


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

%struct.complex = type { float, float }

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

; Function Attrs: nounwind uwtable
define dso_local void @cungqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef %8) local_unnamed_addr #0 {
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  %16 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %16, -1
  %17 = sext i32 %narrow to i64
  %18 = getelementptr inbounds %struct.complex, ptr %3, i64 %17
  %19 = getelementptr inbounds i8, ptr %5, i64 -8
  store i32 0, ptr %8, align 4, !tbaa !5
  %20 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %21 = load i32, ptr %1, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %21, i32 1)
  %22 = mul nsw i32 %spec.select, %20
  %23 = sitofp i32 %22 to float
  store float %23, ptr %6, align 4, !tbaa !9
  %24 = getelementptr inbounds i8, ptr %6, i64 4
  store float 0.000000e+00, ptr %24, align 4, !tbaa !12
  %25 = load i32, ptr %7, align 4, !tbaa !5
  %26 = icmp eq i32 %25, -1
  %27 = load i32, ptr %0, align 4, !tbaa !5
  %28 = icmp slt i32 %27, 0
  br i1 %28, label %.thread.sink.split, label %29

29:                                               ; preds = %9
  %or.cond198 = icmp ugt i32 %21, %27
  br i1 %or.cond198, label %.thread.sink.split, label %30

30:                                               ; preds = %29
  %31 = load i32, ptr %2, align 4, !tbaa !5
  %32 = icmp slt i32 %31, 0
  %33 = icmp sgt i32 %31, %21
  %or.cond199 = or i1 %32, %33
  br i1 %or.cond199, label %.thread.sink.split, label %34

34:                                               ; preds = %30
  %35 = load i32, ptr %4, align 4, !tbaa !5
  %spec.select200 = tail call i32 @llvm.umax.i32(i32 %27, i32 1)
  %36 = icmp slt i32 %35, %spec.select200
  br i1 %36, label %.thread.sink.split, label %37

37:                                               ; preds = %34
  %38 = icmp sge i32 %25, %spec.select
  %or.cond = or i1 %38, %26
  br i1 %or.cond, label %39, label %.thread.sink.split

39:                                               ; preds = %37
  %.pr = load i32, ptr %8, align 4, !tbaa !5
  %.not = icmp eq i32 %.pr, 0
  br i1 %.not, label %43, label %.thread

.thread.sink.split:                               ; preds = %37, %34, %30, %29, %9
  %.sink = phi i32 [ -1, %9 ], [ -2, %29 ], [ -3, %30 ], [ -5, %34 ], [ -8, %37 ]
  store i32 %.sink, ptr %8, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %39
  %40 = phi i32 [ %.pr, %39 ], [ %.sink, %.thread.sink.split ]
  %41 = sub nsw i32 0, %40
  store i32 %41, ptr %10, align 4, !tbaa !5
  %42 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %10, i32 noundef 6) #5
  br label %168

43:                                               ; preds = %39
  br i1 %26, label %168, label %44

44:                                               ; preds = %43
  %45 = icmp eq i32 %21, 0
  br i1 %45, label %46, label %47

46:                                               ; preds = %44
  store float 1.000000e+00, ptr %6, align 4, !tbaa !9
  br label %168

47:                                               ; preds = %44
  %48 = icmp sgt i32 %20, 1
  br i1 %48, label %49, label %.thread216

49:                                               ; preds = %47
  %50 = icmp ult i32 %20, %31
  br i1 %50, label %51, label %.thread205

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

56:                                               ; preds = %51
  store i32 %.pre268.pre271, ptr %15, align 4, !tbaa !5
  %57 = mul nsw i32 %.pre268.pre271, %20
  %58 = load i32, ptr %7, align 4, !tbaa !5
  %59 = icmp slt i32 %58, %57
  br i1 %59, label %60, label %.thread205

60:                                               ; preds = %56
  %61 = sdiv i32 %58, %.pre268.pre271
  %62 = tail call i32 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %63 = tail call i32 @llvm.smax.i32(i32 %62, i32 2)
  %.not190 = icmp slt i32 %61, %63
  br i1 %.not190, label %..thread216_crit_edge, label %..thread205_crit_edge

..thread216_crit_edge:                            ; preds = %60
  %.pre267 = load i32, ptr %1, align 4, !tbaa !5
  br label %.thread216

..thread205_crit_edge:                            ; preds = %60
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  %.pre268.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %.thread205

.thread205:                                       ; preds = %..thread205_crit_edge, %49, %51, %56
  %.pre268 = phi i32 [ %.pre268.pre, %..thread205_crit_edge ], [ %21, %49 ], [ %.pre268.pre271, %51 ], [ %.pre268.pre271, %56 ]
  %64 = phi i32 [ %.pre, %..thread205_crit_edge ], [ %31, %49 ], [ %54, %51 ], [ %54, %56 ]
  %.0214 = phi i32 [ %57, %..thread205_crit_edge ], [ %21, %49 ], [ %21, %51 ], [ %57, %56 ]
  %.0164213 = phi i32 [ %53, %..thread205_crit_edge ], [ 0, %49 ], [ %53, %51 ], [ %53, %56 ]
  %.0167211 = phi i32 [ %61, %..thread205_crit_edge ], [ %20, %49 ], [ %20, %51 ], [ %20, %56 ]
  %65 = icmp slt i32 %.0167211, %64
  %66 = icmp slt i32 %.0164213, %64
  %or.cond202 = and i1 %65, %66
  br i1 %or.cond202, label %67, label %.thread216

67:                                               ; preds = %.thread205
  %68 = xor i32 %.0164213, -1
  %69 = add nsw i32 %64, %68
  %.fr = freeze i32 %69
  %70 = srem i32 %.fr, %.0167211
  %71 = sub nsw i32 %.fr, %70
  %72 = add nsw i32 %71, %.0167211
  store i32 %72, ptr %11, align 4, !tbaa !5
  %73 = tail call i32 @llvm.smin.i32(i32 %64, i32 %72)
  store i32 %.pre268, ptr %10, align 4, !tbaa !5
  %.not192.not230 = icmp sge i32 %73, %.pre268
  %.not197223 = icmp slt i32 %73, 1
  %or.cond278 = or i1 %.not192.not230, %.not197223
  br i1 %or.cond278, label %.thread216.loopexit, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %67
  %.0170229 = add nuw nsw i32 %73, 1
  %74 = shl nsw i64 %17, 3
  %scevgep = getelementptr i8, ptr %3, i64 %74
  %75 = mul i32 %16, %.0170229
  %76 = add i32 %75, 1
  %77 = zext nneg i32 %73 to i64
  %78 = shl nuw nsw i64 %77, 3
  %79 = tail call i32 @llvm.smin.i32(i32 %64, i32 %72)
  %smin = sext i32 %79 to i64
  %80 = zext i32 %16 to i64
  %81 = sub i32 %.pre268, %73
  %82 = zext nneg i32 %73 to i64
  %83 = zext nneg i32 %73 to i64
  %84 = add nsw i64 %83, -1
  %xtraiter = and i64 %82, 7
  %85 = icmp ult i64 %84, 7
  %unroll_iter = and i64 %82, 2147483640
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.lr.ph

..loopexit222_crit_edge.unr-lcssa.loopexit:       ; preds = %.lr.ph.new
  %indvars.iv.next.6 = add nuw nsw i64 %indvars.iv, 7
  br label %..loopexit222_crit_edge.unr-lcssa

..loopexit222_crit_edge.unr-lcssa:                ; preds = %..loopexit222_crit_edge.unr-lcssa.loopexit, %.lr.ph
  %indvars.iv.lcssa.ph = phi i64 [ poison, %.lr.ph ], [ %indvars.iv.next.6, %..loopexit222_crit_edge.unr-lcssa.loopexit ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next.7, %..loopexit222_crit_edge.unr-lcssa.loopexit ]
  br i1 %lcmp.mod.not, label %..loopexit222_crit_edge, label %.epil.preheader

.epil.preheader:                                  ; preds = %..loopexit222_crit_edge.unr-lcssa, %.epil.preheader
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.epil.preheader ], [ %indvars.iv.unr, %..loopexit222_crit_edge.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %..loopexit222_crit_edge.unr-lcssa ]
  %indvars.iv.next.epil = add nuw nsw i64 %indvars.iv.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %..loopexit222_crit_edge, label %.epil.preheader, !llvm.loop !13

..loopexit222_crit_edge:                          ; preds = %.epil.preheader, %..loopexit222_crit_edge.unr-lcssa
  %indvars.iv.lcssa = phi i64 [ %indvars.iv.lcssa.ph, %..loopexit222_crit_edge.unr-lcssa ], [ %indvars.iv.epil, %.epil.preheader ]
  %indvar.next = add i32 %indvar, 1
  %exitcond259.not = icmp eq i32 %indvar.next, %81
  br i1 %exitcond259.not, label %.thread216.loopexit.loopexit254, label %.lr.ph, !llvm.loop !15

.lr.ph:                                           ; preds = %.lr.ph.preheader, %..loopexit222_crit_edge
  %indvars.iv257.in = phi i64 [ %smin, %.lr.ph.preheader ], [ %indvars.iv257, %..loopexit222_crit_edge ]
  %indvar = phi i32 [ 0, %.lr.ph.preheader ], [ %indvar.next, %..loopexit222_crit_edge ]
  %indvars.iv257 = add nsw i64 %indvars.iv257.in, 1
  %86 = mul i32 %16, %indvar
  %87 = add i32 %76, %86
  %88 = sext i32 %87 to i64
  %89 = shl nsw i64 %88, 3
  %scevgep255 = getelementptr i8, ptr %scevgep, i64 %89
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep255, i8 0, i64 %78, i1 false), !tbaa !17
  br i1 %85, label %..loopexit222_crit_edge.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph, %.lr.ph.new
  %indvars.iv = phi i64 [ %indvars.iv.next.7, %.lr.ph.new ], [ 1, %.lr.ph ]
  %niter = phi i64 [ %niter.next.7, %.lr.ph.new ], [ 0, %.lr.ph ]
  %indvars.iv.next.7 = add nuw nsw i64 %indvars.iv, 8
  %niter.next.7 = add i64 %niter, 8
  %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7, label %..loopexit222_crit_edge.unr-lcssa.loopexit, label %.lr.ph.new, !llvm.loop !18

.thread216.loopexit.loopexit254:                  ; preds = %..loopexit222_crit_edge
  %90 = mul i64 %indvars.iv257, %80
  %91 = add i64 %indvars.iv.lcssa, %90
  %92 = trunc i64 %91 to i32
  br label %.thread216.loopexit

.thread216.loopexit:                              ; preds = %.thread216.loopexit.loopexit254, %67
  %.lcssa228.lcssa = phi i32 [ undef, %67 ], [ %92, %.thread216.loopexit.loopexit254 ]
  store i32 %.lcssa228.lcssa, ptr %12, align 4, !tbaa !5
  %93 = add nsw i32 %71, 1
  br label %.thread216

.thread216:                                       ; preds = %..thread216_crit_edge, %.thread216.loopexit, %47, %.thread205
  %94 = phi i32 [ %.pre268, %.thread205 ], [ %.pre267, %..thread216_crit_edge ], [ %21, %47 ], [ %.pre268, %.thread216.loopexit ]
  %.0215 = phi i32 [ %.0214, %.thread205 ], [ %57, %..thread216_crit_edge ], [ %21, %47 ], [ %.0214, %.thread216.loopexit ]
  %.0167212 = phi i32 [ %.0167211, %.thread205 ], [ %61, %..thread216_crit_edge ], [ %20, %47 ], [ %.0167211, %.thread216.loopexit ]
  %.0166 = phi i32 [ undef, %.thread205 ], [ undef, %..thread216_crit_edge ], [ undef, %47 ], [ %93, %.thread216.loopexit ]
  %.0165 = phi i32 [ 0, %.thread205 ], [ 0, %..thread216_crit_edge ], [ 0, %47 ], [ %73, %.thread216.loopexit ]
  %95 = icmp slt i32 %.0165, %94
  br i1 %95, label %96, label %109

96:                                               ; preds = %.thread216
  %97 = load i32, ptr %0, align 4, !tbaa !5
  %98 = sub nsw i32 %97, %.0165
  store i32 %98, ptr %10, align 4, !tbaa !5
  %99 = sub nsw i32 %94, %.0165
  store i32 %99, ptr %11, align 4, !tbaa !5
  %100 = load i32, ptr %2, align 4, !tbaa !5
  %101 = sub nsw i32 %100, %.0165
  store i32 %101, ptr %12, align 4, !tbaa !5
  %102 = add nsw i32 %.0165, 1
  %103 = add i32 %16, 1
  %104 = mul i32 %102, %103
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds %struct.complex, ptr %18, i64 %105
  %107 = sext i32 %102 to i64
  %108 = getelementptr inbounds %struct.complex, ptr %19, i64 %107
  call void @cung2r_(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %106, ptr noundef nonnull %4, ptr noundef nonnull %108, ptr noundef nonnull %6, ptr noundef nonnull %13) #5
  br label %109

109:                                              ; preds = %96, %.thread216
  %110 = icmp sgt i32 %.0165, 0
  br i1 %110, label %111, label %.loopexit

111:                                              ; preds = %109
  %112 = sub nsw i32 0, %.0167212
  store i32 %112, ptr %10, align 4, !tbaa !5
  %113 = icmp sgt i32 %.0167212, 0
  %114 = icmp sgt i32 %.0166, 0
  %115 = icmp slt i32 %.0166, 2
  %.in246 = select i1 %113, i1 %114, i1 %115
  br i1 %.in246, label %.lr.ph250, label %.loopexit

.lr.ph250:                                        ; preds = %111
  %116 = add i32 %16, 1
  %117 = shl nsw i64 %17, 3
  %scevgep260 = getelementptr i8, ptr %3, i64 %117
  br label %118

118:                                              ; preds = %.lr.ph250, %._crit_edge244
  %.1172247 = phi i32 [ %.0166, %.lr.ph250 ], [ %163, %._crit_edge244 ]
  %119 = load i32, ptr %2, align 4, !tbaa !5
  %120 = sub nsw i32 %119, %.1172247
  %121 = add nsw i32 %120, 1
  store i32 %121, ptr %12, align 4, !tbaa !5
  %122 = call i32 @llvm.smin.i32(i32 %.0167212, i32 %121)
  store i32 %122, ptr %14, align 4, !tbaa !5
  %123 = add nsw i32 %122, %.1172247
  %124 = load i32, ptr %1, align 4, !tbaa !5
  %.not194 = icmp sgt i32 %123, %124
  %.pre270 = load i32, ptr %0, align 4, !tbaa !5
  br i1 %.not194, label %._crit_edge, label %125

._crit_edge:                                      ; preds = %118
  %.pre273 = mul i32 %.1172247, %116
  %.pre274 = sext i32 %.pre273 to i64
  %.pre276 = sext i32 %.1172247 to i64
  br label %144

125:                                              ; preds = %118
  %reass.sub = sub i32 %.pre270, %.1172247
  %126 = add i32 %reass.sub, 1
  store i32 %126, ptr %11, align 4, !tbaa !5
  %127 = mul i32 %.1172247, %116
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds %struct.complex, ptr %18, i64 %128
  %130 = sext i32 %.1172247 to i64
  %131 = getelementptr inbounds %struct.complex, ptr %19, i64 %130
  call void @clarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %129, ptr noundef nonnull %4, ptr noundef nonnull %131, ptr noundef nonnull %6, ptr noundef nonnull %15) #5
  %132 = load i32, ptr %0, align 4, !tbaa !5
  %reass.sub251 = sub i32 %132, %.1172247
  %133 = add i32 %reass.sub251, 1
  store i32 %133, ptr %11, align 4, !tbaa !5
  %134 = load i32, ptr %1, align 4, !tbaa !5
  %135 = load i32, ptr %14, align 4, !tbaa !5
  %136 = add i32 %135, %.1172247
  %137 = add i32 %134, 1
  %138 = sub i32 %137, %136
  store i32 %138, ptr %12, align 4, !tbaa !5
  %139 = mul nsw i32 %136, %16
  %140 = add nsw i32 %139, %.1172247
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds %struct.complex, ptr %18, i64 %141
  %143 = sext i32 %135 to i64
  %gep = getelementptr %struct.complex, ptr %6, i64 %143
  call void @clarfb_(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 %14, ptr noundef %129, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %15, ptr noundef %142, ptr noundef nonnull %4, ptr noundef %gep, ptr noundef nonnull %15) #5
  %.pre269 = load i32, ptr %0, align 4, !tbaa !5
  br label %144

144:                                              ; preds = %._crit_edge, %125
  %.pre-phi277 = phi i64 [ %.pre276, %._crit_edge ], [ %130, %125 ]
  %.pre-phi275 = phi i64 [ %.pre274, %._crit_edge ], [ %128, %125 ]
  %145 = phi i32 [ %.pre270, %._crit_edge ], [ %.pre269, %125 ]
  %reass.sub252 = sub i32 %145, %.1172247
  %146 = add i32 %reass.sub252, 1
  store i32 %146, ptr %11, align 4, !tbaa !5
  %147 = getelementptr inbounds %struct.complex, ptr %18, i64 %.pre-phi275
  %148 = getelementptr inbounds %struct.complex, ptr %19, i64 %.pre-phi277
  call void @cung2r_(ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef nonnull %14, ptr noundef %147, ptr noundef nonnull %4, ptr noundef nonnull %148, ptr noundef nonnull %6, ptr noundef nonnull %13) #5
  %149 = load i32, ptr %14, align 4, !tbaa !5
  %150 = add nsw i32 %149, %.1172247
  %151 = add nsw i32 %150, -1
  store i32 %151, ptr %11, align 4, !tbaa !5
  %.not195.not240 = icmp sgt i32 %149, 0
  br i1 %.not195.not240, label %.lr.ph243, label %._crit_edge244

.lr.ph243:                                        ; preds = %144
  %152 = add nsw i32 %.1172247, -1
  store i32 %152, ptr %12, align 4, !tbaa !5
  %.not196.not237 = icmp sgt i32 %.1172247, 1
  br i1 %.not196.not237, label %.lr.ph239.us.preheader, label %._crit_edge244

.lr.ph239.us.preheader:                           ; preds = %.lr.ph243
  %153 = mul i32 %16, %.1172247
  %154 = add i32 %153, 1
  %155 = zext nneg i32 %152 to i64
  %156 = shl nuw nsw i64 %155, 3
  br label %.lr.ph239.us

.lr.ph239.us:                                     ; preds = %.lr.ph239.us.preheader, %.lr.ph239.us
  %indvar261 = phi i32 [ 0, %.lr.ph239.us.preheader ], [ %indvar.next262, %.lr.ph239.us ]
  %.1241.us = phi i32 [ %.1172247, %.lr.ph239.us.preheader ], [ %161, %.lr.ph239.us ]
  %157 = mul i32 %16, %indvar261
  %158 = add i32 %154, %157
  %159 = sext i32 %158 to i64
  %160 = shl nsw i64 %159, 3
  %scevgep263 = getelementptr i8, ptr %scevgep260, i64 %160
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep263, i8 0, i64 %156, i1 false), !tbaa !17
  %161 = add nuw nsw i32 %.1241.us, 1
  %.not195.not.us = icmp slt i32 %161, %150
  %indvar.next262 = add i32 %indvar261, 1
  br i1 %.not195.not.us, label %.lr.ph239.us, label %._crit_edge244, !llvm.loop !19

._crit_edge244:                                   ; preds = %.lr.ph239.us, %.lr.ph243, %144
  %162 = load i32, ptr %10, align 4, !tbaa !5
  %163 = add nsw i32 %162, %.1172247
  %164 = icmp slt i32 %162, 0
  %165 = icmp sgt i32 %163, 0
  %166 = icmp slt i32 %163, 2
  %.in = select i1 %164, i1 %165, i1 %166
  br i1 %.in, label %118, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %._crit_edge244, %111, %109
  %167 = sitofp i32 %.0215 to float
  store float %167, ptr %6, align 4, !tbaa !9
  store float 0.000000e+00, ptr %24, align 4, !tbaa !12
  br label %168

168:                                              ; preds = %43, %.loopexit, %46, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #5
  ret void
}

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

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

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

declare void @cung2r_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @clarft_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @clarfb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 4}
!11 = !{!"float", !7, i64 0}
!12 = !{!10, !11, i64 4}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.unroll.disable"}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!11, !11, i64 0}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}


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