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

; 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 [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cungrq_(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
  %40 = 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
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  %41 = load ptr, ptr %14, align 8, !tbaa !5
  %42 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %42, ptr %19, align 4, !tbaa !9
  %43 = load i32, ptr %19, align 4, !tbaa !9
  %44 = mul nsw i32 %43, 1
  %45 = add nsw i32 1, %44
  store i32 %45, ptr %20, align 4, !tbaa !9
  %46 = load i32, ptr %20, align 4, !tbaa !9
  %47 = load ptr, ptr %13, align 8, !tbaa !5
  %48 = sext i32 %46 to i64
  %49 = sub i64 0, %48
  %50 = getelementptr inbounds %struct.complex, ptr %47, i64 %49
  store ptr %50, ptr %13, align 8, !tbaa !5
  %51 = load ptr, ptr %15, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.complex, ptr %51, i32 -1
  store ptr %52, ptr %15, align 8, !tbaa !5
  %53 = load ptr, ptr %16, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.complex, ptr %53, i32 -1
  store ptr %54, ptr %16, align 8, !tbaa !5
  %55 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %55, align 4, !tbaa !9
  %56 = load ptr, ptr %17, align 8, !tbaa !5
  %57 = load i32, ptr %56, align 4, !tbaa !9
  %58 = icmp eq i32 %57, -1
  %59 = zext i1 %58 to i32
  store i32 %59, ptr %38, align 4, !tbaa !9
  %60 = load ptr, ptr %10, align 8, !tbaa !5
  %61 = load i32, ptr %60, align 4, !tbaa !9
  %62 = icmp slt i32 %61, 0
  br i1 %62, label %63, label %65

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

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

71:                                               ; preds = %65
  %72 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -2, ptr %72, align 4, !tbaa !9
  br label %102

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

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

83:                                               ; preds = %77, %73
  %84 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -3, ptr %84, align 4, !tbaa !9
  br label %101

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

91:                                               ; preds = %85
  br label %95

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

95:                                               ; preds = %92, %91
  %96 = phi i32 [ 1, %91 ], [ %94, %92 ]
  %97 = icmp slt i32 %87, %96
  br i1 %97, label %98, label %100

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

100:                                              ; preds = %98, %95
  br label %101

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

102:                                              ; preds = %101, %71
  br label %103

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

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

111:                                              ; preds = %107
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %121

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

121:                                              ; preds = %112, %111
  %122 = load i32, ptr %37, align 4, !tbaa !9
  %123 = sitofp i32 %122 to float
  %124 = load ptr, ptr %16, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.complex, ptr %124, i64 1
  %126 = getelementptr inbounds %struct.complex, ptr %125, i32 0, i32 0
  store float %123, ptr %126, align 4, !tbaa !11
  %127 = load ptr, ptr %16, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.complex, ptr %127, i64 1
  %129 = getelementptr inbounds %struct.complex, ptr %128, i32 0, i32 1
  store float 0.000000e+00, ptr %129, align 4, !tbaa !14
  %130 = load ptr, ptr %17, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  %132 = load ptr, ptr %10, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = icmp sge i32 1, %133
  br i1 %134, label %135, label %136

135:                                              ; preds = %121
  br label %139

136:                                              ; preds = %121
  %137 = load ptr, ptr %10, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  br label %139

139:                                              ; preds = %136, %135
  %140 = phi i32 [ 1, %135 ], [ %138, %136 ]
  %141 = icmp slt i32 %131, %140
  br i1 %141, label %142, label %147

142:                                              ; preds = %139
  %143 = load i32, ptr %38, align 4, !tbaa !9
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %147, label %145

145:                                              ; preds = %142
  %146 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -8, ptr %146, align 4, !tbaa !9
  br label %147

147:                                              ; preds = %145, %142, %139
  br label %148

148:                                              ; preds = %147, %103
  %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 %40, align 4
  br label %523

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

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

161:                                              ; preds = %157
  br label %162

162:                                              ; preds = %161
  %163 = load ptr, ptr %10, 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 %167

166:                                              ; preds = %162
  store i32 1, ptr %40, align 4
  br label %523

167:                                              ; preds = %162
  store i32 2, ptr %29, align 4, !tbaa !9
  store i32 0, ptr %35, align 4, !tbaa !9
  %168 = load ptr, ptr %10, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  store i32 %169, ptr %39, align 4, !tbaa !9
  %170 = load i32, ptr %32, align 4, !tbaa !9
  %171 = icmp sgt i32 %170, 1
  br i1 %171, label %172, label %225

172:                                              ; preds = %167
  %173 = load i32, ptr %32, align 4, !tbaa !9
  %174 = load ptr, ptr %12, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp slt i32 %173, %175
  br i1 %176, label %177, label %225

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

185:                                              ; preds = %177
  %186 = load i32, ptr %21, align 4, !tbaa !9
  br label %189

187:                                              ; preds = %177
  %188 = load i32, ptr %22, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %187, %185
  %190 = phi i32 [ %186, %185 ], [ %188, %187 ]
  store i32 %190, ptr %35, align 4, !tbaa !9
  %191 = load i32, ptr %35, align 4, !tbaa !9
  %192 = load ptr, ptr %12, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = icmp slt i32 %191, %193
  br i1 %194, label %195, label %224

195:                                              ; preds = %189
  %196 = load ptr, ptr %10, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  store i32 %197, ptr %36, align 4, !tbaa !9
  %198 = load i32, ptr %36, align 4, !tbaa !9
  %199 = load i32, ptr %32, align 4, !tbaa !9
  %200 = mul nsw i32 %198, %199
  store i32 %200, ptr %39, align 4, !tbaa !9
  %201 = load ptr, ptr %17, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = load i32, ptr %39, align 4, !tbaa !9
  %204 = icmp slt i32 %202, %203
  br i1 %204, label %205, label %223

205:                                              ; preds = %195
  %206 = load ptr, ptr %17, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = load i32, ptr %36, align 4, !tbaa !9
  %209 = sdiv i32 %207, %208
  store i32 %209, ptr %32, align 4, !tbaa !9
  store i32 2, ptr %21, align 4, !tbaa !9
  %210 = load ptr, ptr %10, align 8, !tbaa !5
  %211 = load ptr, ptr %11, align 8, !tbaa !5
  %212 = load ptr, ptr %12, align 8, !tbaa !5
  %213 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %210, ptr noundef %211, ptr noundef %212, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %213, ptr %22, align 4, !tbaa !9
  %214 = load i32, ptr %21, align 4, !tbaa !9
  %215 = load i32, ptr %22, align 4, !tbaa !9
  %216 = icmp sge i32 %214, %215
  br i1 %216, label %217, label %219

217:                                              ; preds = %205
  %218 = load i32, ptr %21, align 4, !tbaa !9
  br label %221

219:                                              ; preds = %205
  %220 = load i32, ptr %22, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %219, %217
  %222 = phi i32 [ %218, %217 ], [ %220, %219 ]
  store i32 %222, ptr %29, align 4, !tbaa !9
  br label %223

223:                                              ; preds = %221, %195
  br label %224

224:                                              ; preds = %223, %189
  br label %225

225:                                              ; preds = %224, %172, %167
  %226 = load i32, ptr %32, align 4, !tbaa !9
  %227 = load i32, ptr %29, align 4, !tbaa !9
  %228 = icmp sge i32 %226, %227
  br i1 %228, label %229, label %306

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

234:                                              ; preds = %229
  %235 = load i32, ptr %35, align 4, !tbaa !9
  %236 = load ptr, ptr %12, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = icmp slt i32 %235, %237
  br i1 %238, label %239, label %306

239:                                              ; preds = %234
  %240 = load ptr, ptr %12, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  store i32 %241, ptr %21, align 4, !tbaa !9
  %242 = load ptr, ptr %12, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = load i32, ptr %35, align 4, !tbaa !9
  %245 = sub nsw i32 %243, %244
  %246 = load i32, ptr %32, align 4, !tbaa !9
  %247 = add nsw i32 %245, %246
  %248 = sub nsw i32 %247, 1
  %249 = load i32, ptr %32, align 4, !tbaa !9
  %250 = sdiv i32 %248, %249
  %251 = load i32, ptr %32, align 4, !tbaa !9
  %252 = mul nsw i32 %250, %251
  store i32 %252, ptr %22, align 4, !tbaa !9
  %253 = load i32, ptr %21, align 4, !tbaa !9
  %254 = load i32, ptr %22, align 4, !tbaa !9
  %255 = icmp sle i32 %253, %254
  br i1 %255, label %256, label %258

256:                                              ; preds = %239
  %257 = load i32, ptr %21, align 4, !tbaa !9
  br label %260

258:                                              ; preds = %239
  %259 = load i32, ptr %22, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %258, %256
  %261 = phi i32 [ %257, %256 ], [ %259, %258 ]
  store i32 %261, ptr %34, align 4, !tbaa !9
  %262 = load ptr, ptr %11, align 8, !tbaa !5
  %263 = load i32, ptr %262, align 4, !tbaa !9
  store i32 %263, ptr %21, align 4, !tbaa !9
  %264 = load ptr, ptr %11, align 8, !tbaa !5
  %265 = load i32, ptr %264, align 4, !tbaa !9
  %266 = load i32, ptr %34, align 4, !tbaa !9
  %267 = sub nsw i32 %265, %266
  %268 = add nsw i32 %267, 1
  store i32 %268, ptr %27, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %302, %260
  %270 = load i32, ptr %27, align 4, !tbaa !9
  %271 = load i32, ptr %21, align 4, !tbaa !9
  %272 = icmp sle i32 %270, %271
  br i1 %272, label %273, label %305

273:                                              ; preds = %269
  %274 = load ptr, ptr %10, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = load i32, ptr %34, align 4, !tbaa !9
  %277 = sub nsw i32 %275, %276
  store i32 %277, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %278

278:                                              ; preds = %298, %273
  %279 = load i32, ptr %26, align 4, !tbaa !9
  %280 = load i32, ptr %22, align 4, !tbaa !9
  %281 = icmp sle i32 %279, %280
  br i1 %281, label %282, label %301

282:                                              ; preds = %278
  %283 = load i32, ptr %26, align 4, !tbaa !9
  %284 = load i32, ptr %27, align 4, !tbaa !9
  %285 = load i32, ptr %19, align 4, !tbaa !9
  %286 = mul nsw i32 %284, %285
  %287 = add nsw i32 %283, %286
  store i32 %287, ptr %23, align 4, !tbaa !9
  %288 = load ptr, ptr %13, align 8, !tbaa !5
  %289 = load i32, ptr %23, align 4, !tbaa !9
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds %struct.complex, ptr %288, 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 %13, align 8, !tbaa !5
  %294 = load i32, ptr %23, align 4, !tbaa !9
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds %struct.complex, ptr %293, i64 %295
  %297 = getelementptr inbounds %struct.complex, ptr %296, i32 0, i32 1
  store float 0.000000e+00, ptr %297, align 4, !tbaa !14
  br label %298

298:                                              ; preds = %282
  %299 = load i32, ptr %26, align 4, !tbaa !9
  %300 = add nsw i32 %299, 1
  store i32 %300, ptr %26, align 4, !tbaa !9
  br label %278, !llvm.loop !15

301:                                              ; preds = %278
  br label %302

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

305:                                              ; preds = %269
  br label %307

306:                                              ; preds = %234, %229, %225
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %307

307:                                              ; preds = %306, %305
  %308 = load ptr, ptr %10, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = load i32, ptr %34, align 4, !tbaa !9
  %311 = sub nsw i32 %309, %310
  store i32 %311, ptr %21, align 4, !tbaa !9
  %312 = load ptr, ptr %11, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = load i32, ptr %34, align 4, !tbaa !9
  %315 = sub nsw i32 %313, %314
  store i32 %315, ptr %22, align 4, !tbaa !9
  %316 = load ptr, ptr %12, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = load i32, ptr %34, align 4, !tbaa !9
  %319 = sub nsw i32 %317, %318
  store i32 %319, ptr %23, align 4, !tbaa !9
  %320 = load ptr, ptr %13, align 8, !tbaa !5
  %321 = load i32, ptr %20, align 4, !tbaa !9
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds %struct.complex, ptr %320, i64 %322
  %324 = load ptr, ptr %14, align 8, !tbaa !5
  %325 = load ptr, ptr %15, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.complex, ptr %325, i64 1
  %327 = load ptr, ptr %16, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.complex, ptr %327, i64 1
  call void @cungr2_(ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %323, ptr noundef %324, ptr noundef %326, ptr noundef %328, ptr noundef %30)
  %329 = load i32, ptr %34, align 4, !tbaa !9
  %330 = icmp sgt i32 %329, 0
  br i1 %330, label %331, label %514

331:                                              ; preds = %307
  %332 = load ptr, ptr %12, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  store i32 %333, ptr %21, align 4, !tbaa !9
  %334 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %334, ptr %22, align 4, !tbaa !9
  %335 = load ptr, ptr %12, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = load i32, ptr %34, align 4, !tbaa !9
  %338 = sub nsw i32 %336, %337
  %339 = add nsw i32 %338, 1
  store i32 %339, ptr %26, align 4, !tbaa !9
  br label %340

340:                                              ; preds = %509, %331
  %341 = load i32, ptr %22, align 4, !tbaa !9
  %342 = icmp slt i32 %341, 0
  br i1 %342, label %343, label %348

343:                                              ; preds = %340
  %344 = load i32, ptr %26, align 4, !tbaa !9
  %345 = load i32, ptr %21, align 4, !tbaa !9
  %346 = icmp sge i32 %344, %345
  %347 = zext i1 %346 to i32
  br label %353

348:                                              ; preds = %340
  %349 = load i32, ptr %26, align 4, !tbaa !9
  %350 = load i32, ptr %21, align 4, !tbaa !9
  %351 = icmp sle i32 %349, %350
  %352 = zext i1 %351 to i32
  br label %353

353:                                              ; preds = %348, %343
  %354 = phi i32 [ %347, %343 ], [ %352, %348 ]
  %355 = icmp ne i32 %354, 0
  br i1 %355, label %356, label %513

356:                                              ; preds = %353
  %357 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %357, ptr %23, align 4, !tbaa !9
  %358 = load ptr, ptr %12, align 8, !tbaa !5
  %359 = load i32, ptr %358, align 4, !tbaa !9
  %360 = load i32, ptr %26, align 4, !tbaa !9
  %361 = sub nsw i32 %359, %360
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr %24, align 4, !tbaa !9
  %363 = load i32, ptr %23, align 4, !tbaa !9
  %364 = load i32, ptr %24, align 4, !tbaa !9
  %365 = icmp sle i32 %363, %364
  br i1 %365, label %366, label %368

366:                                              ; preds = %356
  %367 = load i32, ptr %23, align 4, !tbaa !9
  br label %370

368:                                              ; preds = %356
  %369 = load i32, ptr %24, align 4, !tbaa !9
  br label %370

370:                                              ; preds = %368, %366
  %371 = phi i32 [ %367, %366 ], [ %369, %368 ]
  store i32 %371, ptr %31, align 4, !tbaa !9
  %372 = load ptr, ptr %10, align 8, !tbaa !5
  %373 = load i32, ptr %372, align 4, !tbaa !9
  %374 = load ptr, ptr %12, align 8, !tbaa !5
  %375 = load i32, ptr %374, align 4, !tbaa !9
  %376 = sub nsw i32 %373, %375
  %377 = load i32, ptr %26, align 4, !tbaa !9
  %378 = add nsw i32 %376, %377
  store i32 %378, ptr %33, align 4, !tbaa !9
  %379 = load i32, ptr %33, align 4, !tbaa !9
  %380 = icmp sgt i32 %379, 1
  br i1 %380, label %381, label %436

381:                                              ; preds = %370
  %382 = load ptr, ptr %11, align 8, !tbaa !5
  %383 = load i32, ptr %382, align 4, !tbaa !9
  %384 = load ptr, ptr %12, align 8, !tbaa !5
  %385 = load i32, ptr %384, align 4, !tbaa !9
  %386 = sub nsw i32 %383, %385
  %387 = load i32, ptr %26, align 4, !tbaa !9
  %388 = add nsw i32 %386, %387
  %389 = load i32, ptr %31, align 4, !tbaa !9
  %390 = add nsw i32 %388, %389
  %391 = sub nsw i32 %390, 1
  store i32 %391, ptr %23, align 4, !tbaa !9
  %392 = load ptr, ptr %13, align 8, !tbaa !5
  %393 = load i32, ptr %33, align 4, !tbaa !9
  %394 = load i32, ptr %19, align 4, !tbaa !9
  %395 = add nsw i32 %393, %394
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds %struct.complex, ptr %392, i64 %396
  %398 = load ptr, ptr %14, align 8, !tbaa !5
  %399 = load ptr, ptr %15, align 8, !tbaa !5
  %400 = load i32, ptr %26, align 4, !tbaa !9
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds %struct.complex, ptr %399, i64 %401
  %403 = load ptr, ptr %16, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.complex, ptr %403, i64 1
  call void @clarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %23, ptr noundef %31, ptr noundef %397, ptr noundef %398, ptr noundef %402, ptr noundef %404, ptr noundef %36)
  %405 = load i32, ptr %33, align 4, !tbaa !9
  %406 = sub nsw i32 %405, 1
  store i32 %406, ptr %23, align 4, !tbaa !9
  %407 = load ptr, ptr %11, align 8, !tbaa !5
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = load ptr, ptr %12, align 8, !tbaa !5
  %410 = load i32, ptr %409, align 4, !tbaa !9
  %411 = sub nsw i32 %408, %410
  %412 = load i32, ptr %26, align 4, !tbaa !9
  %413 = add nsw i32 %411, %412
  %414 = load i32, ptr %31, align 4, !tbaa !9
  %415 = add nsw i32 %413, %414
  %416 = sub nsw i32 %415, 1
  store i32 %416, ptr %24, align 4, !tbaa !9
  %417 = load ptr, ptr %13, align 8, !tbaa !5
  %418 = load i32, ptr %33, align 4, !tbaa !9
  %419 = load i32, ptr %19, align 4, !tbaa !9
  %420 = add nsw i32 %418, %419
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds %struct.complex, ptr %417, i64 %421
  %423 = load ptr, ptr %14, align 8, !tbaa !5
  %424 = load ptr, ptr %16, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.complex, ptr %424, i64 1
  %426 = load ptr, ptr %13, align 8, !tbaa !5
  %427 = load i32, ptr %20, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.complex, ptr %426, i64 %428
  %430 = load ptr, ptr %14, align 8, !tbaa !5
  %431 = load ptr, ptr %16, align 8, !tbaa !5
  %432 = load i32, ptr %31, align 4, !tbaa !9
  %433 = add nsw i32 %432, 1
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds %struct.complex, ptr %431, i64 %434
  call void @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 %31, ptr noundef %422, ptr noundef %423, ptr noundef %425, ptr noundef %36, ptr noundef %429, ptr noundef %430, ptr noundef %435, ptr noundef %36)
  br label %436

436:                                              ; preds = %381, %370
  %437 = load ptr, ptr %11, align 8, !tbaa !5
  %438 = load i32, ptr %437, align 4, !tbaa !9
  %439 = load ptr, ptr %12, align 8, !tbaa !5
  %440 = load i32, ptr %439, align 4, !tbaa !9
  %441 = sub nsw i32 %438, %440
  %442 = load i32, ptr %26, align 4, !tbaa !9
  %443 = add nsw i32 %441, %442
  %444 = load i32, ptr %31, align 4, !tbaa !9
  %445 = add nsw i32 %443, %444
  %446 = sub nsw i32 %445, 1
  store i32 %446, ptr %23, align 4, !tbaa !9
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = load i32, ptr %33, align 4, !tbaa !9
  %449 = load i32, ptr %19, align 4, !tbaa !9
  %450 = add nsw i32 %448, %449
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds %struct.complex, ptr %447, i64 %451
  %453 = load ptr, ptr %14, align 8, !tbaa !5
  %454 = load ptr, ptr %15, align 8, !tbaa !5
  %455 = load i32, ptr %26, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds %struct.complex, ptr %454, i64 %456
  %458 = load ptr, ptr %16, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.complex, ptr %458, i64 1
  call void @cungr2_(ptr noundef %31, ptr noundef %23, ptr noundef %31, ptr noundef %452, ptr noundef %453, ptr noundef %457, ptr noundef %459, ptr noundef %30)
  %460 = load ptr, ptr %11, align 8, !tbaa !5
  %461 = load i32, ptr %460, align 4, !tbaa !9
  store i32 %461, ptr %23, align 4, !tbaa !9
  %462 = load ptr, ptr %11, align 8, !tbaa !5
  %463 = load i32, ptr %462, align 4, !tbaa !9
  %464 = load ptr, ptr %12, align 8, !tbaa !5
  %465 = load i32, ptr %464, align 4, !tbaa !9
  %466 = sub nsw i32 %463, %465
  %467 = load i32, ptr %26, align 4, !tbaa !9
  %468 = add nsw i32 %466, %467
  %469 = load i32, ptr %31, align 4, !tbaa !9
  %470 = add nsw i32 %468, %469
  store i32 %470, ptr %28, align 4, !tbaa !9
  br label %471

471:                                              ; preds = %505, %436
  %472 = load i32, ptr %28, align 4, !tbaa !9
  %473 = load i32, ptr %23, align 4, !tbaa !9
  %474 = icmp sle i32 %472, %473
  br i1 %474, label %475, label %508

475:                                              ; preds = %471
  %476 = load i32, ptr %33, align 4, !tbaa !9
  %477 = load i32, ptr %31, align 4, !tbaa !9
  %478 = add nsw i32 %476, %477
  %479 = sub nsw i32 %478, 1
  store i32 %479, ptr %24, align 4, !tbaa !9
  %480 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %480, ptr %27, align 4, !tbaa !9
  br label %481

481:                                              ; preds = %501, %475
  %482 = load i32, ptr %27, align 4, !tbaa !9
  %483 = load i32, ptr %24, 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 %28, 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 %25, align 4, !tbaa !9
  %491 = load ptr, ptr %13, align 8, !tbaa !5
  %492 = load i32, ptr %25, 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 %25, 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 %28, align 4, !tbaa !9
  %507 = add nsw i32 %506, 1
  store i32 %507, ptr %28, align 4, !tbaa !9
  br label %471, !llvm.loop !19

508:                                              ; preds = %471
  br label %509

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

513:                                              ; preds = %353
  br label %514

514:                                              ; preds = %513, %307
  %515 = load i32, ptr %39, 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 %40, align 4
  br label %523

523:                                              ; preds = %514, %166, %160, %152
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  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 @cungr2_(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 [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1

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

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

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

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

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

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

40:                                               ; preds = %33, %35
  %41 = phi i32 [ %37, %35 ], [ 0, %33 ]
  %42 = phi i32 [ %.pre, %35 ], [ %21, %33 ]
  %.0165 = phi i32 [ %36, %35 ], [ undef, %33 ]
  %.0162 = phi float [ %39, %35 ], [ 1.000000e+00, %33 ]
  store float %.0162, ptr %6, align 4, !tbaa !9
  %43 = getelementptr inbounds i8, ptr %6, i64 4
  store float 0.000000e+00, ptr %43, align 4, !tbaa !12
  %spec.select195 = tail call i32 @llvm.smax.i32(i32 %41, i32 1)
  %44 = icmp sge i32 %42, %spec.select195
  %or.cond = select i1 %44, i1 true, i1 %22
  br i1 %or.cond, label %.thread, label %.thread201.sink.split

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

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

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

48:                                               ; preds = %.thread
  %49 = icmp slt i32 %41, 1
  %or.cond284 = or i1 %22, %49
  br i1 %or.cond284, label %181, label %50

50:                                               ; preds = %48
  %51 = icmp sgt i32 %.0165, 1
  %.pre270 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %51, label %52, label %.thread216

52:                                               ; preds = %50
  %53 = icmp slt i32 %.0165, %.pre270
  br i1 %53, label %54, label %.thread205

54:                                               ; preds = %52
  %55 = 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
  %56 = tail call i32 @llvm.smax.i32(i32 %55, i32 0)
  %57 = load i32, ptr %2, align 4, !tbaa !5
  %58 = icmp slt i32 %56, %57
  br i1 %58, label %59, label %.thread205

59:                                               ; preds = %54
  %60 = load i32, ptr %0, align 4, !tbaa !5
  store i32 %60, ptr %16, align 4, !tbaa !5
  %61 = mul nsw i32 %60, %.0165
  %62 = load i32, ptr %7, align 4, !tbaa !5
  %63 = icmp slt i32 %62, %61
  br i1 %63, label %64, label %.thread205

64:                                               ; preds = %59
  %65 = sdiv i32 %62, %60
  %66 = 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
  %67 = tail call i32 @llvm.smax.i32(i32 %66, i32 2)
  %.not186 = icmp slt i32 %65, %67
  %.pre271 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not186, label %.thread216, label %.thread205

.thread205:                                       ; preds = %64, %52, %54, %59
  %68 = phi i32 [ %.pre270, %52 ], [ %57, %54 ], [ %57, %59 ], [ %.pre271, %64 ]
  %.0214 = phi i32 [ %41, %52 ], [ %41, %54 ], [ %61, %59 ], [ %61, %64 ]
  %.0163213 = phi i32 [ 0, %52 ], [ %56, %54 ], [ %56, %59 ], [ %56, %64 ]
  %.2211 = phi i32 [ %.0165, %52 ], [ %.0165, %54 ], [ %.0165, %59 ], [ %65, %64 ]
  %69 = icmp slt i32 %.2211, %68
  %70 = icmp slt i32 %.0163213, %68
  %or.cond196 = and i1 %69, %70
  br i1 %or.cond196, label %71, label %.thread216

71:                                               ; preds = %.thread205
  %72 = sub nsw i32 %.2211, %.0163213
  %73 = add i32 %72, %68
  %.fr187 = freeze i32 %73
  %74 = add i32 %.fr187, -1
  %75 = srem i32 %74, %.2211
  %76 = sub nsw i32 %74, %75
  store i32 %76, ptr %11, align 4, !tbaa !5
  %77 = tail call i32 @llvm.smin.i32(i32 %68, i32 %76)
  %78 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %78, ptr %10, align 4, !tbaa !5
  %.not189.not236 = icmp sgt i32 %77, 0
  br i1 %.not189.not236, label %.lr.ph239, label %.thread216

.lr.ph239:                                        ; preds = %71
  %79 = load i32, ptr %0, align 4, !tbaa !5
  %.not193229.not = icmp sgt i32 %79, %77
  br i1 %.not193229.not, label %.lr.ph.preheader, label %.thread216

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

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv258 = phi i64 [ %89, %.lr.ph.preheader ], [ %indvars.iv.next259, %.lr.ph ]
  %indvar = phi i32 [ 0, %.lr.ph.preheader ], [ %indvar.next, %.lr.ph ]
  %91 = mul i32 %17, %indvar
  %92 = add i32 %83, %91
  %93 = sext i32 %92 to i64
  %94 = shl nsw i64 %93, 3
  %scevgep256 = getelementptr i8, ptr %scevgep, i64 %94
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep256, i8 0, i64 %88, i1 false), !tbaa !13
  %indvars.iv.next259 = add nsw i64 %indvars.iv258, 1
  %.not189.not = icmp slt i64 %indvars.iv258, %90
  %indvar.next = add i32 %indvar, 1
  br i1 %.not189.not, label %.lr.ph, label %.thread216, !llvm.loop !14

.thread216:                                       ; preds = %.lr.ph, %71, %.lr.ph239, %50, %64, %.thread205
  %95 = phi i32 [ %68, %.thread205 ], [ %.pre271, %64 ], [ %.pre270, %50 ], [ %68, %.lr.ph239 ], [ %68, %71 ], [ %68, %.lr.ph ]
  %.0215 = phi i32 [ %.0214, %.thread205 ], [ %61, %64 ], [ %41, %50 ], [ %.0214, %.lr.ph239 ], [ %.0214, %71 ], [ %.0214, %.lr.ph ]
  %.2212 = phi i32 [ %.2211, %.thread205 ], [ %65, %64 ], [ %.0165, %50 ], [ %.2211, %.lr.ph239 ], [ %.2211, %71 ], [ %.2211, %.lr.ph ]
  %.0164 = phi i32 [ 0, %.thread205 ], [ 0, %64 ], [ 0, %50 ], [ %77, %.lr.ph239 ], [ %77, %71 ], [ %77, %.lr.ph ]
  %96 = load i32, ptr %0, align 4, !tbaa !5
  %97 = sub nsw i32 %96, %.0164
  store i32 %97, ptr %10, align 4, !tbaa !5
  %98 = load i32, ptr %1, align 4, !tbaa !5
  %99 = sub nsw i32 %98, %.0164
  store i32 %99, ptr %11, align 4, !tbaa !5
  %100 = sub nsw i32 %95, %.0164
  store i32 %100, ptr %12, align 4, !tbaa !5
  call void @cungr2_(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  %101 = icmp sgt i32 %.0164, 0
  br i1 %101, label %102, label %.loopexit

102:                                              ; preds = %.thread216
  %103 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %103, ptr %10, align 4, !tbaa !5
  store i32 %.2212, ptr %11, align 4, !tbaa !5
  %reass.sub = sub i32 %103, %.0164
  %104 = add i32 %reass.sub, 1
  %105 = icmp slt i32 %.2212, 0
  %106 = icmp sge i32 %104, %103
  %107 = icmp sle i32 %104, %103
  %.in251 = select i1 %105, i1 %106, i1 %107
  br i1 %.in251, label %.lr.ph253.preheader, label %.loopexit

.lr.ph253.preheader:                              ; preds = %102
  %108 = shl nsw i64 %18, 3
  %scevgep261 = getelementptr i8, ptr %3, i64 %108
  %.pre273.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %.lr.ph253

.lr.ph253:                                        ; preds = %.lr.ph253.preheader, %._crit_edge250
  %.pre273 = phi i32 [ %145, %._crit_edge250 ], [ %.pre273.pre, %.lr.ph253.preheader ]
  %109 = phi i32 [ %146, %._crit_edge250 ], [ %103, %.lr.ph253.preheader ]
  %.1171252 = phi i32 [ %175, %._crit_edge250 ], [ %104, %.lr.ph253.preheader ]
  %110 = sub nsw i32 %109, %.1171252
  %111 = add nsw i32 %110, 1
  store i32 %111, ptr %13, align 4, !tbaa !5
  %112 = call i32 @llvm.smin.i32(i32 %.2212, i32 %111)
  store i32 %112, ptr %15, align 4, !tbaa !5
  %113 = load i32, ptr %0, align 4, !tbaa !5
  %114 = sub nsw i32 %113, %109
  %115 = add nsw i32 %114, %.1171252
  %116 = icmp sgt i32 %115, 1
  br i1 %116, label %117, label %.lr.ph253._crit_edge

.lr.ph253._crit_edge:                             ; preds = %.lr.ph253
  %.pre277 = add i32 %.1171252, -1
  %.pre278 = add nsw i32 %115, %17
  %.pre280 = sext i32 %.pre278 to i64
  %.pre282 = sext i32 %.1171252 to i64
  br label %136

117:                                              ; preds = %.lr.ph253
  %118 = xor i32 %109, -1
  %119 = add i32 %.1171252, %118
  %120 = add i32 %119, %112
  %121 = add i32 %120, %.pre273
  store i32 %121, ptr %12, align 4, !tbaa !5
  %122 = add nsw i32 %115, %17
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds %struct.complex, ptr %19, i64 %123
  %125 = sext i32 %.1171252 to i64
  %126 = getelementptr inbounds %struct.complex, ptr %20, i64 %125
  call void @clarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef %124, ptr noundef nonnull %4, ptr noundef nonnull %126, ptr noundef nonnull %6, ptr noundef nonnull %16) #5
  %127 = add nsw i32 %115, -1
  store i32 %127, ptr %12, align 4, !tbaa !5
  %128 = load i32, ptr %1, align 4, !tbaa !5
  %129 = load i32, ptr %2, align 4, !tbaa !5
  %130 = load i32, ptr %15, align 4, !tbaa !5
  %131 = add i32 %.1171252, -1
  %132 = add i32 %131, %128
  %133 = sub i32 %132, %129
  %134 = add i32 %133, %130
  store i32 %134, ptr %13, align 4, !tbaa !5
  %135 = sext i32 %130 to i64
  %gep = getelementptr %struct.complex, ptr %6, i64 %135
  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 %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %124, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %gep, ptr noundef nonnull %16) #5
  %.pre272 = load i32, ptr %1, align 4, !tbaa !5
  %.pre274 = load i32, ptr %2, align 4, !tbaa !5
  %.pre275 = load i32, ptr %15, align 4, !tbaa !5
  br label %136

136:                                              ; preds = %.lr.ph253._crit_edge, %117
  %.pre-phi283 = phi i64 [ %.pre282, %.lr.ph253._crit_edge ], [ %125, %117 ]
  %.pre-phi281 = phi i64 [ %.pre280, %.lr.ph253._crit_edge ], [ %123, %117 ]
  %.pre-phi = phi i32 [ %.pre277, %.lr.ph253._crit_edge ], [ %131, %117 ]
  %137 = phi i32 [ %112, %.lr.ph253._crit_edge ], [ %.pre275, %117 ]
  %138 = phi i32 [ %109, %.lr.ph253._crit_edge ], [ %.pre274, %117 ]
  %139 = phi i32 [ %.pre273, %.lr.ph253._crit_edge ], [ %.pre272, %117 ]
  %140 = add i32 %.pre-phi, %139
  %141 = sub i32 %140, %138
  %142 = add i32 %141, %137
  store i32 %142, ptr %12, align 4, !tbaa !5
  %143 = getelementptr inbounds %struct.complex, ptr %19, i64 %.pre-phi281
  %144 = getelementptr inbounds %struct.complex, ptr %20, i64 %.pre-phi283
  call void @cungr2_(ptr noundef nonnull %15, ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef %143, ptr noundef nonnull %4, ptr noundef nonnull %144, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  %145 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %145, ptr %12, align 4, !tbaa !5
  %146 = load i32, ptr %2, align 4, !tbaa !5
  %147 = load i32, ptr %15, align 4, !tbaa !5
  %148 = add i32 %145, %.1171252
  %149 = sub i32 %148, %146
  %150 = add nsw i32 %149, %147
  %.not191246 = icmp sgt i32 %150, %145
  br i1 %.not191246, label %._crit_edge250, label %.lr.ph249

.lr.ph249:                                        ; preds = %136
  %151 = add i32 %147, %115
  %152 = add nsw i32 %151, -1
  store i32 %152, ptr %13, align 4, !tbaa !5
  %.not192.not243 = icmp sgt i32 %147, 0
  br i1 %.not192.not243, label %.lr.ph245.us.preheader, label %._crit_edge250

.lr.ph245.us.preheader:                           ; preds = %.lr.ph249
  %153 = add i32 %.1171252, %113
  %154 = mul i32 %17, %150
  %155 = add i32 %153, %154
  %156 = sub i32 %155, %109
  %157 = add i32 %109, -1
  %158 = add i32 %.1171252, 1
  %159 = add i32 %158, %113
  %160 = sub i32 %159, %109
  %smax = call i32 @llvm.smax.i32(i32 %151, i32 %160)
  %161 = add i32 %157, %smax
  %162 = add i32 %.1171252, %113
  %163 = sub i32 %161, %162
  %164 = zext i32 %163 to i64
  %165 = shl nuw nsw i64 %164, 3
  %166 = add nuw nsw i64 %165, 8
  %167 = add i32 %146, 1
  %168 = add i32 %.1171252, %147
  %169 = sub i32 %167, %168
  br label %.lr.ph245.us

.lr.ph245.us:                                     ; preds = %.lr.ph245.us.preheader, %.lr.ph245.us
  %indvar262 = phi i32 [ 0, %.lr.ph245.us.preheader ], [ %indvar.next263, %.lr.ph245.us ]
  %170 = mul i32 %17, %indvar262
  %171 = add i32 %156, %170
  %172 = sext i32 %171 to i64
  %173 = shl nsw i64 %172, 3
  %scevgep264 = getelementptr i8, ptr %scevgep261, i64 %173
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep264, i8 0, i64 %166, i1 false), !tbaa !13
  %indvar.next263 = add i32 %indvar262, 1
  %exitcond268.not = icmp eq i32 %indvar.next263, %169
  br i1 %exitcond268.not, label %._crit_edge250, label %.lr.ph245.us, !llvm.loop !16

._crit_edge250:                                   ; preds = %.lr.ph245.us, %.lr.ph249, %136
  %174 = load i32, ptr %11, align 4, !tbaa !5
  %175 = add nsw i32 %174, %.1171252
  %176 = icmp slt i32 %174, 0
  %177 = load i32, ptr %10, align 4
  %178 = icmp sge i32 %175, %177
  %179 = icmp sle i32 %175, %177
  %.in = select i1 %176, i1 %178, i1 %179
  br i1 %.in, label %.lr.ph253, label %.loopexit, !llvm.loop !17

.loopexit:                                        ; preds = %._crit_edge250, %102, %.thread216
  %180 = sitofp i32 %.0215 to float
  store float %180, ptr %6, align 4, !tbaa !9
  store float 0.000000e+00, ptr %43, align 4, !tbaa !12
  br label %181

181:                                              ; preds = %48, %.loopexit, %.thread201
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #5
  ret void
}

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

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

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

declare void @cungr2_(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 = !{!11, !11, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}


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