; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 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 [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 i32 @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 i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store ptr %4, ptr %15, align 8, !tbaa !5
  store ptr %5, ptr %16, align 8, !tbaa !5
  store ptr %6, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  %41 = load ptr, ptr %15, align 8, !tbaa !5
  %42 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %42, ptr %20, align 8, !tbaa !9
  %43 = load i64, ptr %20, align 8, !tbaa !9
  %44 = add nsw i64 1, %43
  store i64 %44, ptr %21, align 8, !tbaa !9
  %45 = load i64, ptr %21, align 8, !tbaa !9
  %46 = load ptr, ptr %14, align 8, !tbaa !5
  %47 = sub i64 0, %45
  %48 = getelementptr inbounds %struct.complex, ptr %46, i64 %47
  store ptr %48, ptr %14, align 8, !tbaa !5
  %49 = load ptr, ptr %16, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.complex, ptr %49, i32 -1
  store ptr %50, ptr %16, align 8, !tbaa !5
  %51 = load ptr, ptr %17, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.complex, ptr %51, i32 -1
  store ptr %52, ptr %17, align 8, !tbaa !5
  %53 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 0, ptr %53, align 8, !tbaa !9
  %54 = load ptr, ptr %11, align 8, !tbaa !5
  %55 = load ptr, ptr %12, align 8, !tbaa !5
  %56 = load ptr, ptr %13, align 8, !tbaa !5
  %57 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %54, ptr noundef %55, ptr noundef %56, ptr noundef @c_n1)
  store i64 %57, ptr %30, align 8, !tbaa !9
  %58 = load ptr, ptr %12, align 8, !tbaa !5
  %59 = load i64, ptr %58, align 8, !tbaa !9
  %60 = icmp sge i64 1, %59
  br i1 %60, label %61, label %62

61:                                               ; preds = %9
  br label %65

62:                                               ; preds = %9
  %63 = load ptr, ptr %12, align 8, !tbaa !5
  %64 = load i64, ptr %63, align 8, !tbaa !9
  br label %65

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

85:                                               ; preds = %65
  %86 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -1, ptr %86, align 8, !tbaa !9
  br label %148

87:                                               ; preds = %65
  %88 = load ptr, ptr %12, align 8, !tbaa !5
  %89 = load i64, ptr %88, align 8, !tbaa !9
  %90 = icmp slt i64 %89, 0
  br i1 %90, label %97, label %91

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

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

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

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

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

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

117:                                              ; preds = %111
  br label %121

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

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

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

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

132:                                              ; preds = %126
  br label %136

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

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

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

142:                                              ; preds = %139
  %143 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -8, ptr %143, align 8, !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 %19, align 8, !tbaa !5
  %150 = load i64, ptr %149, align 8, !tbaa !9
  %151 = icmp ne i64 %150, 0
  br i1 %151, label %152, label %157

152:                                              ; preds = %148
  %153 = load ptr, ptr %19, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = sub nsw i64 0, %154
  store i64 %155, ptr %22, align 8, !tbaa !9
  %156 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %22)
  store i32 0, ptr %10, align 4
  store i32 1, ptr %40, align 4
  br label %514

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

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

161:                                              ; preds = %157
  br label %162

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

166:                                              ; preds = %162
  %167 = load ptr, ptr %17, 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 %17, 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 0, ptr %10, align 4
  store i32 1, ptr %40, align 4
  br label %514

173:                                              ; preds = %162
  store i64 2, ptr %35, align 8, !tbaa !9
  store i64 0, ptr %33, align 8, !tbaa !9
  %174 = load ptr, ptr %12, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  store i64 %175, ptr %34, align 8, !tbaa !9
  %176 = load i64, ptr %30, align 8, !tbaa !9
  %177 = icmp sgt i64 %176, 1
  br i1 %177, label %178, label %231

178:                                              ; preds = %173
  %179 = load i64, ptr %30, align 8, !tbaa !9
  %180 = load ptr, ptr %13, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = icmp slt i64 %179, %181
  br i1 %182, label %183, label %231

183:                                              ; preds = %178
  store i64 0, ptr %22, align 8, !tbaa !9
  %184 = load ptr, ptr %11, align 8, !tbaa !5
  %185 = load ptr, ptr %12, align 8, !tbaa !5
  %186 = load ptr, ptr %13, align 8, !tbaa !5
  %187 = call i64 @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)
  store i64 %187, ptr %23, align 8, !tbaa !9
  %188 = load i64, ptr %22, align 8, !tbaa !9
  %189 = load i64, ptr %23, align 8, !tbaa !9
  %190 = icmp sge i64 %188, %189
  br i1 %190, label %191, label %193

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

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

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

201:                                              ; preds = %195
  %202 = load ptr, ptr %12, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  store i64 %203, ptr %37, align 8, !tbaa !9
  %204 = load i64, ptr %37, align 8, !tbaa !9
  %205 = load i64, ptr %30, align 8, !tbaa !9
  %206 = mul nsw i64 %204, %205
  store i64 %206, ptr %34, align 8, !tbaa !9
  %207 = load ptr, ptr %18, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = load i64, ptr %34, align 8, !tbaa !9
  %210 = icmp slt i64 %208, %209
  br i1 %210, label %211, label %229

211:                                              ; preds = %201
  %212 = load ptr, ptr %18, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = load i64, ptr %37, align 8, !tbaa !9
  %215 = sdiv i64 %213, %214
  store i64 %215, ptr %30, align 8, !tbaa !9
  store i64 2, ptr %22, align 8, !tbaa !9
  %216 = load ptr, ptr %11, align 8, !tbaa !5
  %217 = load ptr, ptr %12, align 8, !tbaa !5
  %218 = load ptr, ptr %13, align 8, !tbaa !5
  %219 = call i64 @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)
  store i64 %219, ptr %23, align 8, !tbaa !9
  %220 = load i64, ptr %22, align 8, !tbaa !9
  %221 = load i64, ptr %23, align 8, !tbaa !9
  %222 = icmp sge i64 %220, %221
  br i1 %222, label %223, label %225

223:                                              ; preds = %211
  %224 = load i64, ptr %22, align 8, !tbaa !9
  br label %227

225:                                              ; preds = %211
  %226 = load i64, ptr %23, align 8, !tbaa !9
  br label %227

227:                                              ; preds = %225, %223
  %228 = phi i64 [ %224, %223 ], [ %226, %225 ]
  store i64 %228, ptr %35, align 8, !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 i64, ptr %30, align 8, !tbaa !9
  %233 = load i64, ptr %35, align 8, !tbaa !9
  %234 = icmp sge i64 %232, %233
  br i1 %234, label %235, label %305

235:                                              ; preds = %231
  %236 = load i64, ptr %30, align 8, !tbaa !9
  %237 = load ptr, ptr %13, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = icmp slt i64 %236, %238
  br i1 %239, label %240, label %305

240:                                              ; preds = %235
  %241 = load i64, ptr %33, align 8, !tbaa !9
  %242 = load ptr, ptr %13, align 8, !tbaa !5
  %243 = load i64, ptr %242, align 8, !tbaa !9
  %244 = icmp slt i64 %241, %243
  br i1 %244, label %245, label %305

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

263:                                              ; preds = %245
  %264 = load i64, ptr %22, align 8, !tbaa !9
  br label %267

265:                                              ; preds = %245
  %266 = load i64, ptr %23, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %265, %263
  %268 = phi i64 [ %264, %263 ], [ %266, %265 ]
  store i64 %268, ptr %32, align 8, !tbaa !9
  %269 = load ptr, ptr %12, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  store i64 %270, ptr %22, align 8, !tbaa !9
  %271 = load i64, ptr %32, align 8, !tbaa !9
  %272 = add nsw i64 %271, 1
  store i64 %272, ptr %27, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %301, %267
  %274 = load i64, ptr %27, align 8, !tbaa !9
  %275 = load i64, ptr %22, align 8, !tbaa !9
  %276 = icmp sle i64 %274, %275
  br i1 %276, label %277, label %304

277:                                              ; preds = %273
  %278 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %278, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %26, align 8, !tbaa !9
  br label %279

279:                                              ; preds = %297, %277
  %280 = load i64, ptr %26, align 8, !tbaa !9
  %281 = load i64, ptr %23, align 8, !tbaa !9
  %282 = icmp sle i64 %280, %281
  br i1 %282, label %283, label %300

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

297:                                              ; preds = %283
  %298 = load i64, ptr %26, align 8, !tbaa !9
  %299 = add nsw i64 %298, 1
  store i64 %299, ptr %26, align 8, !tbaa !9
  br label %279, !llvm.loop !15

300:                                              ; preds = %279
  br label %301

301:                                              ; preds = %300
  %302 = load i64, ptr %27, align 8, !tbaa !9
  %303 = add nsw i64 %302, 1
  store i64 %303, ptr %27, align 8, !tbaa !9
  br label %273, !llvm.loop !17

304:                                              ; preds = %273
  br label %306

305:                                              ; preds = %240, %235, %231
  store i64 0, ptr %32, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %305, %304
  %307 = load i64, ptr %32, align 8, !tbaa !9
  %308 = load ptr, ptr %12, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  %310 = icmp slt i64 %307, %309
  br i1 %310, label %311, label %341

311:                                              ; preds = %306
  %312 = load ptr, ptr %11, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = load i64, ptr %32, align 8, !tbaa !9
  %315 = sub nsw i64 %313, %314
  store i64 %315, ptr %22, align 8, !tbaa !9
  %316 = load ptr, ptr %12, align 8, !tbaa !5
  %317 = load i64, ptr %316, align 8, !tbaa !9
  %318 = load i64, ptr %32, align 8, !tbaa !9
  %319 = sub nsw i64 %317, %318
  store i64 %319, ptr %23, align 8, !tbaa !9
  %320 = load ptr, ptr %13, align 8, !tbaa !5
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = load i64, ptr %32, align 8, !tbaa !9
  %323 = sub nsw i64 %321, %322
  store i64 %323, ptr %24, align 8, !tbaa !9
  %324 = load ptr, ptr %14, align 8, !tbaa !5
  %325 = load i64, ptr %32, align 8, !tbaa !9
  %326 = add nsw i64 %325, 1
  %327 = load i64, ptr %32, align 8, !tbaa !9
  %328 = add nsw i64 %327, 1
  %329 = load i64, ptr %20, align 8, !tbaa !9
  %330 = mul nsw i64 %328, %329
  %331 = add nsw i64 %326, %330
  %332 = getelementptr inbounds %struct.complex, ptr %324, i64 %331
  %333 = load ptr, ptr %15, align 8, !tbaa !5
  %334 = load ptr, ptr %16, align 8, !tbaa !5
  %335 = load i64, ptr %32, align 8, !tbaa !9
  %336 = add nsw i64 %335, 1
  %337 = getelementptr inbounds %struct.complex, ptr %334, i64 %336
  %338 = load ptr, ptr %17, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.complex, ptr %338, i64 1
  %340 = call i32 @cung2r_(ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %332, ptr noundef %333, ptr noundef %337, ptr noundef %339, ptr noundef %36)
  br label %341

341:                                              ; preds = %311, %306
  %342 = load i64, ptr %32, align 8, !tbaa !9
  %343 = icmp sgt i64 %342, 0
  br i1 %343, label %344, label %505

344:                                              ; preds = %341
  %345 = load i64, ptr %30, align 8, !tbaa !9
  %346 = sub nsw i64 0, %345
  store i64 %346, ptr %22, align 8, !tbaa !9
  %347 = load i64, ptr %31, align 8, !tbaa !9
  %348 = add nsw i64 %347, 1
  store i64 %348, ptr %26, align 8, !tbaa !9
  br label %349

349:                                              ; preds = %500, %344
  %350 = load i64, ptr %22, align 8, !tbaa !9
  %351 = icmp slt i64 %350, 0
  br i1 %351, label %352, label %356

352:                                              ; preds = %349
  %353 = load i64, ptr %26, align 8, !tbaa !9
  %354 = icmp sge i64 %353, 1
  %355 = zext i1 %354 to i32
  br label %360

356:                                              ; preds = %349
  %357 = load i64, ptr %26, align 8, !tbaa !9
  %358 = icmp sle i64 %357, 1
  %359 = zext i1 %358 to i32
  br label %360

360:                                              ; preds = %356, %352
  %361 = phi i32 [ %355, %352 ], [ %359, %356 ]
  %362 = icmp ne i32 %361, 0
  br i1 %362, label %363, label %504

363:                                              ; preds = %360
  %364 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %364, ptr %23, align 8, !tbaa !9
  %365 = load ptr, ptr %13, align 8, !tbaa !5
  %366 = load i64, ptr %365, align 8, !tbaa !9
  %367 = load i64, ptr %26, align 8, !tbaa !9
  %368 = sub nsw i64 %366, %367
  %369 = add nsw i64 %368, 1
  store i64 %369, ptr %24, align 8, !tbaa !9
  %370 = load i64, ptr %23, align 8, !tbaa !9
  %371 = load i64, ptr %24, align 8, !tbaa !9
  %372 = icmp sle i64 %370, %371
  br i1 %372, label %373, label %375

373:                                              ; preds = %363
  %374 = load i64, ptr %23, align 8, !tbaa !9
  br label %377

375:                                              ; preds = %363
  %376 = load i64, ptr %24, align 8, !tbaa !9
  br label %377

377:                                              ; preds = %375, %373
  %378 = phi i64 [ %374, %373 ], [ %376, %375 ]
  store i64 %378, ptr %29, align 8, !tbaa !9
  %379 = load i64, ptr %26, align 8, !tbaa !9
  %380 = load i64, ptr %29, align 8, !tbaa !9
  %381 = add nsw i64 %379, %380
  %382 = load ptr, ptr %12, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = icmp sle i64 %381, %383
  br i1 %384, label %385, label %442

385:                                              ; preds = %377
  %386 = load ptr, ptr %11, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  %388 = load i64, ptr %26, align 8, !tbaa !9
  %389 = sub nsw i64 %387, %388
  %390 = add nsw i64 %389, 1
  store i64 %390, ptr %23, align 8, !tbaa !9
  %391 = load ptr, ptr %14, align 8, !tbaa !5
  %392 = load i64, ptr %26, align 8, !tbaa !9
  %393 = load i64, ptr %26, align 8, !tbaa !9
  %394 = load i64, ptr %20, align 8, !tbaa !9
  %395 = mul nsw i64 %393, %394
  %396 = add nsw i64 %392, %395
  %397 = getelementptr inbounds %struct.complex, ptr %391, i64 %396
  %398 = load ptr, ptr %15, align 8, !tbaa !5
  %399 = load ptr, ptr %16, align 8, !tbaa !5
  %400 = load i64, ptr %26, align 8, !tbaa !9
  %401 = getelementptr inbounds %struct.complex, ptr %399, i64 %400
  %402 = load ptr, ptr %17, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.complex, ptr %402, i64 1
  %404 = call i32 @clarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %23, ptr noundef %29, ptr noundef %397, ptr noundef %398, ptr noundef %401, ptr noundef %403, ptr noundef %37)
  %405 = load ptr, ptr %11, align 8, !tbaa !5
  %406 = load i64, ptr %405, align 8, !tbaa !9
  %407 = load i64, ptr %26, align 8, !tbaa !9
  %408 = sub nsw i64 %406, %407
  %409 = add nsw i64 %408, 1
  store i64 %409, ptr %23, align 8, !tbaa !9
  %410 = load ptr, ptr %12, align 8, !tbaa !5
  %411 = load i64, ptr %410, align 8, !tbaa !9
  %412 = load i64, ptr %26, align 8, !tbaa !9
  %413 = sub nsw i64 %411, %412
  %414 = load i64, ptr %29, align 8, !tbaa !9
  %415 = sub nsw i64 %413, %414
  %416 = add nsw i64 %415, 1
  store i64 %416, ptr %24, align 8, !tbaa !9
  %417 = load ptr, ptr %14, align 8, !tbaa !5
  %418 = load i64, ptr %26, align 8, !tbaa !9
  %419 = load i64, ptr %26, align 8, !tbaa !9
  %420 = load i64, ptr %20, align 8, !tbaa !9
  %421 = mul nsw i64 %419, %420
  %422 = add nsw i64 %418, %421
  %423 = getelementptr inbounds %struct.complex, ptr %417, i64 %422
  %424 = load ptr, ptr %15, align 8, !tbaa !5
  %425 = load ptr, ptr %17, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.complex, ptr %425, i64 1
  %427 = load ptr, ptr %14, align 8, !tbaa !5
  %428 = load i64, ptr %26, align 8, !tbaa !9
  %429 = load i64, ptr %26, align 8, !tbaa !9
  %430 = load i64, ptr %29, align 8, !tbaa !9
  %431 = add nsw i64 %429, %430
  %432 = load i64, ptr %20, align 8, !tbaa !9
  %433 = mul nsw i64 %431, %432
  %434 = add nsw i64 %428, %433
  %435 = getelementptr inbounds %struct.complex, ptr %427, i64 %434
  %436 = load ptr, ptr %15, align 8, !tbaa !5
  %437 = load ptr, ptr %17, align 8, !tbaa !5
  %438 = load i64, ptr %29, align 8, !tbaa !9
  %439 = add nsw i64 %438, 1
  %440 = getelementptr inbounds %struct.complex, ptr %437, i64 %439
  %441 = call i32 @clarfb_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %23, ptr noundef %24, ptr noundef %29, ptr noundef %423, ptr noundef %424, ptr noundef %426, ptr noundef %37, ptr noundef %435, ptr noundef %436, ptr noundef %440, ptr noundef %37)
  br label %442

442:                                              ; preds = %385, %377
  %443 = load ptr, ptr %11, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = load i64, ptr %26, align 8, !tbaa !9
  %446 = sub nsw i64 %444, %445
  %447 = add nsw i64 %446, 1
  store i64 %447, ptr %23, align 8, !tbaa !9
  %448 = load ptr, ptr %14, align 8, !tbaa !5
  %449 = load i64, ptr %26, align 8, !tbaa !9
  %450 = load i64, ptr %26, align 8, !tbaa !9
  %451 = load i64, ptr %20, align 8, !tbaa !9
  %452 = mul nsw i64 %450, %451
  %453 = add nsw i64 %449, %452
  %454 = getelementptr inbounds %struct.complex, ptr %448, i64 %453
  %455 = load ptr, ptr %15, align 8, !tbaa !5
  %456 = load ptr, ptr %16, align 8, !tbaa !5
  %457 = load i64, ptr %26, align 8, !tbaa !9
  %458 = getelementptr inbounds %struct.complex, ptr %456, i64 %457
  %459 = load ptr, ptr %17, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.complex, ptr %459, i64 1
  %461 = call i32 @cung2r_(ptr noundef %23, ptr noundef %29, ptr noundef %29, ptr noundef %454, ptr noundef %455, ptr noundef %458, ptr noundef %460, ptr noundef %36)
  %462 = load i64, ptr %26, align 8, !tbaa !9
  %463 = load i64, ptr %29, align 8, !tbaa !9
  %464 = add nsw i64 %462, %463
  %465 = sub nsw i64 %464, 1
  store i64 %465, ptr %23, align 8, !tbaa !9
  %466 = load i64, ptr %26, align 8, !tbaa !9
  store i64 %466, ptr %27, align 8, !tbaa !9
  br label %467

467:                                              ; preds = %496, %442
  %468 = load i64, ptr %27, align 8, !tbaa !9
  %469 = load i64, ptr %23, align 8, !tbaa !9
  %470 = icmp sle i64 %468, %469
  br i1 %470, label %471, label %499

471:                                              ; preds = %467
  %472 = load i64, ptr %26, align 8, !tbaa !9
  %473 = sub nsw i64 %472, 1
  store i64 %473, ptr %24, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %474

474:                                              ; preds = %492, %471
  %475 = load i64, ptr %28, align 8, !tbaa !9
  %476 = load i64, ptr %24, align 8, !tbaa !9
  %477 = icmp sle i64 %475, %476
  br i1 %477, label %478, label %495

478:                                              ; preds = %474
  %479 = load i64, ptr %28, align 8, !tbaa !9
  %480 = load i64, ptr %27, align 8, !tbaa !9
  %481 = load i64, ptr %20, align 8, !tbaa !9
  %482 = mul nsw i64 %480, %481
  %483 = add nsw i64 %479, %482
  store i64 %483, ptr %25, align 8, !tbaa !9
  %484 = load ptr, ptr %14, align 8, !tbaa !5
  %485 = load i64, ptr %25, align 8, !tbaa !9
  %486 = getelementptr inbounds %struct.complex, ptr %484, i64 %485
  %487 = getelementptr inbounds %struct.complex, ptr %486, i32 0, i32 0
  store float 0.000000e+00, ptr %487, align 4, !tbaa !11
  %488 = load ptr, ptr %14, align 8, !tbaa !5
  %489 = load i64, ptr %25, align 8, !tbaa !9
  %490 = getelementptr inbounds %struct.complex, ptr %488, i64 %489
  %491 = getelementptr inbounds %struct.complex, ptr %490, i32 0, i32 1
  store float 0.000000e+00, ptr %491, align 4, !tbaa !14
  br label %492

492:                                              ; preds = %478
  %493 = load i64, ptr %28, align 8, !tbaa !9
  %494 = add nsw i64 %493, 1
  store i64 %494, ptr %28, align 8, !tbaa !9
  br label %474, !llvm.loop !18

495:                                              ; preds = %474
  br label %496

496:                                              ; preds = %495
  %497 = load i64, ptr %27, align 8, !tbaa !9
  %498 = add nsw i64 %497, 1
  store i64 %498, ptr %27, align 8, !tbaa !9
  br label %467, !llvm.loop !19

499:                                              ; preds = %467
  br label %500

500:                                              ; preds = %499
  %501 = load i64, ptr %22, align 8, !tbaa !9
  %502 = load i64, ptr %26, align 8, !tbaa !9
  %503 = add nsw i64 %502, %501
  store i64 %503, ptr %26, align 8, !tbaa !9
  br label %349, !llvm.loop !20

504:                                              ; preds = %360
  br label %505

505:                                              ; preds = %504, %341
  %506 = load i64, ptr %34, align 8, !tbaa !9
  %507 = sitofp i64 %506 to float
  %508 = load ptr, ptr %17, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.complex, ptr %508, i64 1
  %510 = getelementptr inbounds %struct.complex, ptr %509, i32 0, i32 0
  store float %507, ptr %510, align 4, !tbaa !11
  %511 = load ptr, ptr %17, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.complex, ptr %511, i64 1
  %513 = getelementptr inbounds %struct.complex, ptr %512, i32 0, i32 1
  store float 0.000000e+00, ptr %513, align 4, !tbaa !14
  store i32 0, ptr %10, align 4
  store i32 1, ptr %40, align 4
  br label %514

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

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

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

declare i32 @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 = !{!"long", !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 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 [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 noundef i32 @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 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 %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  %16 = load i64, ptr %4, align 8, !tbaa !5
  %17 = xor i64 %16, -1
  %18 = getelementptr inbounds %struct.complex, ptr %3, i64 %17
  %19 = getelementptr inbounds i8, ptr %5, i64 -8
  store i64 0, ptr %8, 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 %2, ptr noundef nonnull @c_n1) #5
  %21 = load i64, ptr %1, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %21, i64 1)
  %22 = mul nsw i64 %spec.select, %20
  %23 = sitofp i64 %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 i64, ptr %7, align 8, !tbaa !5
  %26 = icmp eq i64 %25, -1
  %27 = load i64, ptr %0, align 8, !tbaa !5
  %28 = icmp slt i64 %27, 0
  br i1 %28, label %.thread.sink.split, label %29

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

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

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

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

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

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

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

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

44:                                               ; preds = %43
  %45 = icmp eq i64 %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 %164

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

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

51:                                               ; preds = %49
  %52 = tail call i64 @ilaenv_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #5
  %53 = tail call i64 @llvm.smax.i64(i64 %52, i64 0)
  %54 = load i64, ptr %2, align 8, !tbaa !5
  %55 = icmp slt i64 %53, %54
  %.pre260.pre263 = load i64, ptr %1, align 8, !tbaa !5
  br i1 %55, label %56, label %.thread206

56:                                               ; preds = %51
  store i64 %.pre260.pre263, ptr %15, align 8, !tbaa !5
  %57 = mul nsw i64 %.pre260.pre263, %20
  %58 = load i64, ptr %7, align 8, !tbaa !5
  %59 = icmp slt i64 %58, %57
  br i1 %59, label %60, label %.thread206

60:                                               ; preds = %56
  %61 = sdiv i64 %58, %.pre260.pre263
  %62 = tail call i64 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #5
  %63 = tail call i64 @llvm.smax.i64(i64 %62, i64 2)
  %.not191 = icmp slt i64 %61, %63
  br i1 %.not191, label %..thread217_crit_edge, label %..thread206_crit_edge

..thread217_crit_edge:                            ; preds = %60
  %.pre259 = load i64, ptr %1, align 8, !tbaa !5
  br label %.thread217

..thread206_crit_edge:                            ; preds = %60
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  %.pre260.pre = load i64, ptr %1, align 8, !tbaa !5
  br label %.thread206

.thread206:                                       ; preds = %..thread206_crit_edge, %49, %51, %56
  %.pre260 = phi i64 [ %.pre260.pre, %..thread206_crit_edge ], [ %21, %49 ], [ %.pre260.pre263, %51 ], [ %.pre260.pre263, %56 ]
  %64 = phi i64 [ %.pre, %..thread206_crit_edge ], [ %31, %49 ], [ %54, %51 ], [ %54, %56 ]
  %.0166215 = phi i64 [ %57, %..thread206_crit_edge ], [ %21, %49 ], [ %21, %51 ], [ %57, %56 ]
  %.0167214 = phi i64 [ %53, %..thread206_crit_edge ], [ 0, %49 ], [ %53, %51 ], [ %53, %56 ]
  %.0170212 = phi i64 [ %61, %..thread206_crit_edge ], [ %20, %49 ], [ %20, %51 ], [ %20, %56 ]
  %65 = icmp slt i64 %.0170212, %64
  %66 = icmp slt i64 %.0167214, %64
  %or.cond203 = and i1 %65, %66
  br i1 %or.cond203, label %67, label %.thread217

67:                                               ; preds = %.thread206
  %68 = xor i64 %.0167214, -1
  %69 = add nsw i64 %64, %68
  %.fr = freeze i64 %69
  %70 = srem i64 %.fr, %.0170212
  %71 = sub nsw i64 %.fr, %70
  %72 = add nsw i64 %71, %.0170212
  store i64 %72, ptr %11, align 8, !tbaa !5
  %73 = tail call i64 @llvm.smin.i64(i64 %64, i64 %72)
  store i64 %.pre260, ptr %10, align 8, !tbaa !5
  %.not193.not231 = icmp sge i64 %73, %.pre260
  %.not198224 = icmp slt i64 %73, 1
  %or.cond266 = or i1 %.not193.not231, %.not198224
  br i1 %or.cond266, label %.thread217.loopexit, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %67
  %74 = mul i64 %16, %73
  %75 = shl i64 %74, 3
  %76 = shl i64 %16, 3
  %77 = shl nuw i64 %73, 3
  %78 = mul i64 %16, %.pre260
  %79 = sub i64 %.pre260, %73
  %80 = getelementptr i8, ptr %3, i64 %75
  %xtraiter = and i64 %79, 7
  %81 = sub i64 %73, %.pre260
  %82 = icmp ugt i64 %81, -8
  br i1 %82, label %.thread217.loopexit.loopexit255.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %79, -8
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvar = phi i64 [ 0, %.lr.ph.preheader.new ], [ %indvar.next.7, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.7, %.lr.ph ]
  %83 = mul i64 %76, %indvar
  %scevgep = getelementptr i8, ptr %80, i64 %83
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep, i8 0, i64 %77, i1 false), !tbaa !13
  %indvar.next = or disjoint i64 %indvar, 1
  %84 = mul i64 %76, %indvar.next
  %scevgep.1 = getelementptr i8, ptr %80, i64 %84
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.1, i8 0, i64 %77, i1 false), !tbaa !13
  %indvar.next.1 = or disjoint i64 %indvar, 2
  %85 = mul i64 %76, %indvar.next.1
  %scevgep.2 = getelementptr i8, ptr %80, i64 %85
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.2, i8 0, i64 %77, i1 false), !tbaa !13
  %indvar.next.2 = or disjoint i64 %indvar, 3
  %86 = mul i64 %76, %indvar.next.2
  %scevgep.3 = getelementptr i8, ptr %80, i64 %86
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.3, i8 0, i64 %77, i1 false), !tbaa !13
  %indvar.next.3 = or disjoint i64 %indvar, 4
  %87 = mul i64 %76, %indvar.next.3
  %scevgep.4 = getelementptr i8, ptr %80, i64 %87
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.4, i8 0, i64 %77, i1 false), !tbaa !13
  %indvar.next.4 = or disjoint i64 %indvar, 5
  %88 = mul i64 %76, %indvar.next.4
  %scevgep.5 = getelementptr i8, ptr %80, i64 %88
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.5, i8 0, i64 %77, i1 false), !tbaa !13
  %indvar.next.5 = or disjoint i64 %indvar, 6
  %89 = mul i64 %76, %indvar.next.5
  %scevgep.6 = getelementptr i8, ptr %80, i64 %89
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.6, i8 0, i64 %77, i1 false), !tbaa !13
  %indvar.next.6 = or disjoint i64 %indvar, 7
  %90 = mul i64 %76, %indvar.next.6
  %scevgep.7 = getelementptr i8, ptr %80, i64 %90
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.7, i8 0, i64 %77, i1 false), !tbaa !13
  %indvar.next.7 = add i64 %indvar, 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 %.thread217.loopexit.loopexit255.unr-lcssa, label %.lr.ph, !llvm.loop !14

.thread217.loopexit.loopexit255.unr-lcssa:        ; preds = %.lr.ph, %.lr.ph.preheader
  %indvar.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %indvar.next.7, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.thread217.loopexit.loopexit255, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %.thread217.loopexit.loopexit255.unr-lcssa, %.lr.ph.epil
  %indvar.epil = phi i64 [ %indvar.next.epil, %.lr.ph.epil ], [ %indvar.unr, %.thread217.loopexit.loopexit255.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %.thread217.loopexit.loopexit255.unr-lcssa ]
  %91 = mul i64 %76, %indvar.epil
  %scevgep.epil = getelementptr i8, ptr %80, i64 %91
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep.epil, i8 0, i64 %77, i1 false), !tbaa !13
  %indvar.next.epil = add i64 %indvar.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 %.thread217.loopexit.loopexit255, label %.lr.ph.epil, !llvm.loop !16

.thread217.loopexit.loopexit255:                  ; preds = %.lr.ph.epil, %.thread217.loopexit.loopexit255.unr-lcssa
  %92 = add i64 %73, %78
  br label %.thread217.loopexit

.thread217.loopexit:                              ; preds = %.thread217.loopexit.loopexit255, %67
  %.lcssa229.lcssa = phi i64 [ undef, %67 ], [ %92, %.thread217.loopexit.loopexit255 ]
  store i64 %.lcssa229.lcssa, ptr %12, align 8, !tbaa !5
  %93 = add nsw i64 %71, 1
  br label %.thread217

.thread217:                                       ; preds = %..thread217_crit_edge, %.thread217.loopexit, %47, %.thread206
  %94 = phi i64 [ %.pre260, %.thread206 ], [ %.pre259, %..thread217_crit_edge ], [ %21, %47 ], [ %.pre260, %.thread217.loopexit ]
  %.0166216 = phi i64 [ %.0166215, %.thread206 ], [ %57, %..thread217_crit_edge ], [ %21, %47 ], [ %.0166215, %.thread217.loopexit ]
  %.0170213 = phi i64 [ %.0170212, %.thread206 ], [ %61, %..thread217_crit_edge ], [ %20, %47 ], [ %.0170212, %.thread217.loopexit ]
  %.0169 = phi i64 [ undef, %.thread206 ], [ undef, %..thread217_crit_edge ], [ undef, %47 ], [ %93, %.thread217.loopexit ]
  %.0168 = phi i64 [ 0, %.thread206 ], [ 0, %..thread217_crit_edge ], [ 0, %47 ], [ %73, %.thread217.loopexit ]
  %95 = icmp slt i64 %.0168, %94
  br i1 %95, label %96, label %108

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

108:                                              ; preds = %96, %.thread217
  %109 = icmp sgt i64 %.0168, 0
  br i1 %109, label %110, label %.loopexit

110:                                              ; preds = %108
  %111 = sub nsw i64 0, %.0170213
  store i64 %111, ptr %10, align 8, !tbaa !5
  %112 = icmp sgt i64 %.0170213, 0
  %113 = icmp sgt i64 %.0169, 0
  %114 = icmp slt i64 %.0169, 2
  %.in247 = select i1 %112, i1 %113, i1 %114
  br i1 %.in247, label %.lr.ph251, label %.loopexit

.lr.ph251:                                        ; preds = %110
  %115 = add i64 %16, 1
  %116 = shl i64 %16, 3
  br label %117

117:                                              ; preds = %.lr.ph251, %._crit_edge245
  %.1174248 = phi i64 [ %.0169, %.lr.ph251 ], [ %159, %._crit_edge245 ]
  %118 = load i64, ptr %2, align 8, !tbaa !5
  %119 = sub nsw i64 %118, %.1174248
  %120 = add nsw i64 %119, 1
  store i64 %120, ptr %12, align 8, !tbaa !5
  %121 = call i64 @llvm.smin.i64(i64 %.0170213, i64 %120)
  store i64 %121, ptr %13, align 8, !tbaa !5
  %122 = add nsw i64 %121, %.1174248
  %123 = load i64, ptr %1, align 8, !tbaa !5
  %.not195 = icmp sgt i64 %122, %123
  %.pre262 = load i64, ptr %0, align 8, !tbaa !5
  br i1 %.not195, label %._crit_edge, label %124

._crit_edge:                                      ; preds = %117
  %.pre265 = mul i64 %.1174248, %115
  br label %142

124:                                              ; preds = %117
  %reass.sub = sub i64 %.pre262, %.1174248
  %125 = add i64 %reass.sub, 1
  store i64 %125, ptr %11, align 8, !tbaa !5
  %126 = mul i64 %.1174248, %115
  %127 = getelementptr inbounds %struct.complex, ptr %18, i64 %126
  %128 = getelementptr inbounds %struct.complex, ptr %19, i64 %.1174248
  %129 = call i32 @clarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef %127, ptr noundef nonnull %4, ptr noundef nonnull %128, ptr noundef nonnull %6, ptr noundef nonnull %15) #5
  %130 = load i64, ptr %0, align 8, !tbaa !5
  %reass.sub252 = sub i64 %130, %.1174248
  %131 = add i64 %reass.sub252, 1
  store i64 %131, ptr %11, align 8, !tbaa !5
  %132 = load i64, ptr %1, align 8, !tbaa !5
  %133 = load i64, ptr %13, align 8, !tbaa !5
  %134 = add i64 %133, %.1174248
  %135 = add i64 %132, 1
  %136 = sub i64 %135, %134
  store i64 %136, ptr %12, align 8, !tbaa !5
  %137 = mul nsw i64 %134, %16
  %138 = getelementptr %struct.complex, ptr %18, i64 %.1174248
  %139 = getelementptr %struct.complex, ptr %138, i64 %137
  %140 = getelementptr %struct.complex, ptr %6, i64 %133
  %141 = call i32 @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 %13, ptr noundef %127, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %15, ptr noundef %139, ptr noundef nonnull %4, ptr noundef %140, ptr noundef nonnull %15) #5
  %.pre261 = load i64, ptr %0, align 8, !tbaa !5
  br label %142

142:                                              ; preds = %._crit_edge, %124
  %.pre-phi = phi i64 [ %.pre265, %._crit_edge ], [ %126, %124 ]
  %143 = phi i64 [ %.pre262, %._crit_edge ], [ %.pre261, %124 ]
  %reass.sub253 = sub i64 %143, %.1174248
  %144 = add i64 %reass.sub253, 1
  store i64 %144, ptr %11, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.complex, ptr %18, i64 %.pre-phi
  %146 = getelementptr inbounds %struct.complex, ptr %19, i64 %.1174248
  %147 = call i32 @cung2r_(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef nonnull %13, ptr noundef %145, ptr noundef nonnull %4, ptr noundef nonnull %146, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  %148 = load i64, ptr %13, align 8, !tbaa !5
  %149 = add nsw i64 %148, %.1174248
  %150 = add nsw i64 %149, -1
  store i64 %150, ptr %11, align 8, !tbaa !5
  %.not196.not241 = icmp sgt i64 %148, 0
  br i1 %.not196.not241, label %.lr.ph244, label %._crit_edge245

.lr.ph244:                                        ; preds = %142
  %151 = add nsw i64 %.1174248, -1
  store i64 %151, ptr %12, align 8, !tbaa !5
  %.not197.not238 = icmp sgt i64 %.1174248, 1
  br i1 %.not197.not238, label %.lr.ph240.us.preheader, label %._crit_edge245

.lr.ph240.us.preheader:                           ; preds = %.lr.ph244
  %152 = shl i64 %.1174248, 3
  %153 = add i64 %152, -8
  %154 = mul i64 %16, %153
  %155 = getelementptr i8, ptr %3, i64 %154
  br label %.lr.ph240.us

.lr.ph240.us:                                     ; preds = %.lr.ph240.us.preheader, %.lr.ph240.us
  %indvar256 = phi i64 [ 0, %.lr.ph240.us.preheader ], [ %indvar.next257, %.lr.ph240.us ]
  %.1242.us = phi i64 [ %.1174248, %.lr.ph240.us.preheader ], [ %157, %.lr.ph240.us ]
  %156 = mul i64 %116, %indvar256
  %scevgep258 = getelementptr i8, ptr %155, i64 %156
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep258, i8 0, i64 %153, i1 false), !tbaa !13
  %157 = add nuw nsw i64 %.1242.us, 1
  %.not196.not.us = icmp slt i64 %157, %149
  %indvar.next257 = add i64 %indvar256, 1
  br i1 %.not196.not.us, label %.lr.ph240.us, label %._crit_edge245, !llvm.loop !18

._crit_edge245:                                   ; preds = %.lr.ph240.us, %.lr.ph244, %142
  %158 = load i64, ptr %10, align 8, !tbaa !5
  %159 = add nsw i64 %158, %.1174248
  %160 = icmp slt i64 %158, 0
  %161 = icmp sgt i64 %159, 0
  %162 = icmp slt i64 %159, 2
  %.in = select i1 %160, i1 %161, i1 %162
  br i1 %.in, label %117, label %.loopexit, !llvm.loop !19

.loopexit:                                        ; preds = %._crit_edge245, %110, %108
  %163 = sitofp i64 %.0166216 to float
  store float %163, ptr %6, align 4, !tbaa !9
  store float 0.000000e+00, ptr %24, align 4, !tbaa !12
  br label %164

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

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

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

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

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

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

declare i32 @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 i64 @llvm.smax.i64(i64, i64) #3

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

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

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

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

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

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


; Effective O3 passes: 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