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

; 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
@c__65 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@c_b2 = external hidden global %struct.complex, align 4
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [11 x i8], align 1

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

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

64:                                               ; preds = %9
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = icmp slt i32 %66, 1
  br i1 %67, label %81, label %68

68:                                               ; preds = %64
  %69 = load ptr, ptr %11, align 8, !tbaa !5
  %70 = load i32, ptr %69, align 4, !tbaa !9
  %71 = load ptr, ptr %10, align 8, !tbaa !5
  %72 = load i32, ptr %71, align 4, !tbaa !9
  %73 = icmp sge i32 1, %72
  br i1 %73, label %74, label %75

74:                                               ; preds = %68
  br label %78

75:                                               ; preds = %68
  %76 = load ptr, ptr %10, align 8, !tbaa !5
  %77 = load i32, ptr %76, align 4, !tbaa !9
  br label %78

78:                                               ; preds = %75, %74
  %79 = phi i32 [ 1, %74 ], [ %77, %75 ]
  %80 = icmp sgt i32 %70, %79
  br i1 %80, label %81, label %83

81:                                               ; preds = %78, %64
  %82 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -2, ptr %82, align 4, !tbaa !9
  br label %144

83:                                               ; preds = %78
  %84 = load ptr, ptr %12, align 8, !tbaa !5
  %85 = load i32, ptr %84, align 4, !tbaa !9
  %86 = load ptr, ptr %11, 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 sle i32 %87, %89
  br i1 %90, label %91, label %94

91:                                               ; preds = %83
  %92 = load ptr, ptr %11, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !9
  br label %97

94:                                               ; preds = %83
  %95 = load ptr, ptr %10, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  br label %97

97:                                               ; preds = %94, %91
  %98 = phi i32 [ %93, %91 ], [ %96, %94 ]
  %99 = icmp slt i32 %85, %98
  br i1 %99, label %106, label %100

100:                                              ; preds = %97
  %101 = load ptr, ptr %12, align 8, !tbaa !5
  %102 = load i32, ptr %101, align 4, !tbaa !9
  %103 = load ptr, ptr %10, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = icmp sgt i32 %102, %104
  br i1 %105, label %106, label %108

106:                                              ; preds = %100, %97
  %107 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -3, ptr %107, align 4, !tbaa !9
  br label %143

108:                                              ; preds = %100
  %109 = load ptr, ptr %14, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = load ptr, ptr %10, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = icmp sge i32 1, %112
  br i1 %113, label %114, label %115

114:                                              ; preds = %108
  br label %118

115:                                              ; preds = %108
  %116 = load ptr, ptr %10, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  br label %118

118:                                              ; preds = %115, %114
  %119 = phi i32 [ 1, %114 ], [ %117, %115 ]
  %120 = icmp slt i32 %110, %119
  br i1 %120, label %121, label %123

121:                                              ; preds = %118
  %122 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -5, ptr %122, align 4, !tbaa !9
  br label %142

123:                                              ; preds = %118
  %124 = load ptr, ptr %17, align 8, !tbaa !5
  %125 = load i32, ptr %124, align 4, !tbaa !9
  %126 = load ptr, ptr %10, align 8, !tbaa !5
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = icmp sge i32 1, %127
  br i1 %128, label %129, label %130

129:                                              ; preds = %123
  br label %133

130:                                              ; preds = %123
  %131 = load ptr, ptr %10, align 8, !tbaa !5
  %132 = load i32, ptr %131, align 4, !tbaa !9
  br label %133

133:                                              ; preds = %130, %129
  %134 = phi i32 [ 1, %129 ], [ %132, %130 ]
  %135 = icmp slt i32 %125, %134
  br i1 %135, label %136, label %141

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

139:                                              ; preds = %136
  %140 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -8, ptr %140, align 4, !tbaa !9
  br label %141

141:                                              ; preds = %139, %136, %133
  br label %142

142:                                              ; preds = %141, %121
  br label %143

143:                                              ; preds = %142, %106
  br label %144

144:                                              ; preds = %143, %81
  br label %145

145:                                              ; preds = %144, %62
  %146 = load ptr, ptr %18, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = icmp eq i32 %147, 0
  br i1 %148, label %149, label %176

149:                                              ; preds = %145
  store i32 64, ptr %21, align 4, !tbaa !9
  %150 = load ptr, ptr %10, align 8, !tbaa !5
  %151 = load ptr, ptr %11, align 8, !tbaa !5
  %152 = load ptr, ptr %12, align 8, !tbaa !5
  %153 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %150, ptr noundef %151, ptr noundef %152, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %153, ptr %22, align 4, !tbaa !9
  %154 = load i32, ptr %21, align 4, !tbaa !9
  %155 = load i32, ptr %22, align 4, !tbaa !9
  %156 = icmp sle i32 %154, %155
  br i1 %156, label %157, label %159

157:                                              ; preds = %149
  %158 = load i32, ptr %21, align 4, !tbaa !9
  br label %161

159:                                              ; preds = %149
  %160 = load i32, ptr %22, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %159, %157
  %162 = phi i32 [ %158, %157 ], [ %160, %159 ]
  store i32 %162, ptr %32, align 4, !tbaa !9
  %163 = load ptr, ptr %10, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = load i32, ptr %32, align 4, !tbaa !9
  %166 = mul nsw i32 %164, %165
  %167 = add nsw i32 %166, 4160
  store i32 %167, ptr %36, align 4, !tbaa !9
  %168 = load i32, ptr %36, align 4, !tbaa !9
  %169 = sitofp i32 %168 to float
  %170 = load ptr, ptr %16, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.complex, ptr %170, i64 1
  %172 = getelementptr inbounds %struct.complex, ptr %171, i32 0, i32 0
  store float %169, ptr %172, align 4, !tbaa !11
  %173 = load ptr, ptr %16, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.complex, ptr %173, i64 1
  %175 = getelementptr inbounds %struct.complex, ptr %174, i32 0, i32 1
  store float 0.000000e+00, ptr %175, align 4, !tbaa !14
  br label %176

176:                                              ; preds = %161, %145
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = icmp ne i32 %178, 0
  br i1 %179, label %180, label %185

180:                                              ; preds = %176
  %181 = load ptr, ptr %18, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = sub nsw i32 0, %182
  store i32 %183, ptr %21, align 4, !tbaa !9
  %184 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %21, i32 noundef 6)
  store i32 1, ptr %39, align 4
  br label %627

185:                                              ; preds = %176
  %186 = load i32, ptr %37, align 4, !tbaa !9
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %188, label %189

188:                                              ; preds = %185
  store i32 1, ptr %39, align 4
  br label %627

189:                                              ; preds = %185
  br label %190

190:                                              ; preds = %189
  %191 = load ptr, ptr %11, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = sub nsw i32 %192, 1
  store i32 %193, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %26, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %210, %190
  %195 = load i32, ptr %26, align 4, !tbaa !9
  %196 = load i32, ptr %21, align 4, !tbaa !9
  %197 = icmp sle i32 %195, %196
  br i1 %197, label %198, label %213

198:                                              ; preds = %194
  %199 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %199, ptr %22, align 4, !tbaa !9
  %200 = load ptr, ptr %15, align 8, !tbaa !5
  %201 = load i32, ptr %22, align 4, !tbaa !9
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds %struct.complex, ptr %200, i64 %202
  %204 = getelementptr inbounds %struct.complex, ptr %203, i32 0, i32 0
  store float 0.000000e+00, ptr %204, align 4, !tbaa !11
  %205 = load ptr, ptr %15, align 8, !tbaa !5
  %206 = load i32, ptr %22, align 4, !tbaa !9
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds %struct.complex, ptr %205, i64 %207
  %209 = getelementptr inbounds %struct.complex, ptr %208, i32 0, i32 1
  store float 0.000000e+00, ptr %209, align 4, !tbaa !14
  br label %210

210:                                              ; preds = %198
  %211 = load i32, ptr %26, align 4, !tbaa !9
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr %26, align 4, !tbaa !9
  br label %194, !llvm.loop !15

213:                                              ; preds = %194
  %214 = load ptr, ptr %10, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = sub nsw i32 %215, 1
  store i32 %216, ptr %21, align 4, !tbaa !9
  %217 = load ptr, ptr %12, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = icmp sge i32 1, %218
  br i1 %219, label %220, label %221

220:                                              ; preds = %213
  br label %224

221:                                              ; preds = %213
  %222 = load ptr, ptr %12, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  br label %224

224:                                              ; preds = %221, %220
  %225 = phi i32 [ 1, %220 ], [ %223, %221 ]
  store i32 %225, ptr %26, align 4, !tbaa !9
  br label %226

226:                                              ; preds = %242, %224
  %227 = load i32, ptr %26, align 4, !tbaa !9
  %228 = load i32, ptr %21, align 4, !tbaa !9
  %229 = icmp sle i32 %227, %228
  br i1 %229, label %230, label %245

230:                                              ; preds = %226
  %231 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %231, ptr %22, align 4, !tbaa !9
  %232 = load ptr, ptr %15, align 8, !tbaa !5
  %233 = load i32, ptr %22, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds %struct.complex, ptr %232, i64 %234
  %236 = getelementptr inbounds %struct.complex, ptr %235, i32 0, i32 0
  store float 0.000000e+00, ptr %236, align 4, !tbaa !11
  %237 = load ptr, ptr %15, align 8, !tbaa !5
  %238 = load i32, ptr %22, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds %struct.complex, ptr %237, i64 %239
  %241 = getelementptr inbounds %struct.complex, ptr %240, i32 0, i32 1
  store float 0.000000e+00, ptr %241, align 4, !tbaa !14
  br label %242

242:                                              ; preds = %230
  %243 = load i32, ptr %26, align 4, !tbaa !9
  %244 = add nsw i32 %243, 1
  store i32 %244, ptr %26, align 4, !tbaa !9
  br label %226, !llvm.loop !17

245:                                              ; preds = %226
  %246 = load ptr, ptr %12, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = load ptr, ptr %11, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = sub nsw i32 %247, %249
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %33, align 4, !tbaa !9
  %252 = load i32, ptr %33, align 4, !tbaa !9
  %253 = icmp sle i32 %252, 1
  br i1 %253, label %254, label %261

254:                                              ; preds = %245
  %255 = load ptr, ptr %16, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.complex, ptr %255, i64 1
  %257 = getelementptr inbounds %struct.complex, ptr %256, i32 0, i32 0
  store float 1.000000e+00, ptr %257, align 4, !tbaa !11
  %258 = load ptr, ptr %16, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.complex, ptr %258, i64 1
  %260 = getelementptr inbounds %struct.complex, ptr %259, i32 0, i32 1
  store float 0.000000e+00, ptr %260, align 4, !tbaa !14
  store i32 1, ptr %39, align 4
  br label %627

261:                                              ; preds = %245
  store i32 64, ptr %21, align 4, !tbaa !9
  %262 = load ptr, ptr %10, align 8, !tbaa !5
  %263 = load ptr, ptr %11, align 8, !tbaa !5
  %264 = load ptr, ptr %12, align 8, !tbaa !5
  %265 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %262, ptr noundef %263, ptr noundef %264, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %265, ptr %22, align 4, !tbaa !9
  %266 = load i32, ptr %21, align 4, !tbaa !9
  %267 = load i32, ptr %22, align 4, !tbaa !9
  %268 = icmp sle i32 %266, %267
  br i1 %268, label %269, label %271

269:                                              ; preds = %261
  %270 = load i32, ptr %21, align 4, !tbaa !9
  br label %273

271:                                              ; preds = %261
  %272 = load i32, ptr %22, align 4, !tbaa !9
  br label %273

273:                                              ; preds = %271, %269
  %274 = phi i32 [ %270, %269 ], [ %272, %271 ]
  store i32 %274, ptr %32, align 4, !tbaa !9
  store i32 2, ptr %28, align 4, !tbaa !9
  %275 = load i32, ptr %32, align 4, !tbaa !9
  %276 = icmp sgt i32 %275, 1
  br i1 %276, label %277, label %341

277:                                              ; preds = %273
  %278 = load i32, ptr %32, align 4, !tbaa !9
  %279 = load i32, ptr %33, align 4, !tbaa !9
  %280 = icmp slt i32 %278, %279
  br i1 %280, label %281, label %341

281:                                              ; preds = %277
  %282 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %282, ptr %21, align 4, !tbaa !9
  %283 = load ptr, ptr %10, align 8, !tbaa !5
  %284 = load ptr, ptr %11, align 8, !tbaa !5
  %285 = load ptr, ptr %12, align 8, !tbaa !5
  %286 = call i32 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %283, ptr noundef %284, ptr noundef %285, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %286, ptr %22, align 4, !tbaa !9
  %287 = load i32, ptr %21, align 4, !tbaa !9
  %288 = load i32, ptr %22, align 4, !tbaa !9
  %289 = icmp sge i32 %287, %288
  br i1 %289, label %290, label %292

290:                                              ; preds = %281
  %291 = load i32, ptr %21, align 4, !tbaa !9
  br label %294

292:                                              ; preds = %281
  %293 = load i32, ptr %22, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %292, %290
  %295 = phi i32 [ %291, %290 ], [ %293, %292 ]
  store i32 %295, ptr %34, align 4, !tbaa !9
  %296 = load i32, ptr %34, align 4, !tbaa !9
  %297 = load i32, ptr %33, align 4, !tbaa !9
  %298 = icmp slt i32 %296, %297
  br i1 %298, label %299, label %340

299:                                              ; preds = %294
  %300 = load ptr, ptr %17, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = load ptr, ptr %10, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = load i32, ptr %32, align 4, !tbaa !9
  %305 = mul nsw i32 %303, %304
  %306 = add nsw i32 %305, 4160
  %307 = icmp slt i32 %301, %306
  br i1 %307, label %308, label %339

308:                                              ; preds = %299
  store i32 2, ptr %21, align 4, !tbaa !9
  %309 = load ptr, ptr %10, align 8, !tbaa !5
  %310 = load ptr, ptr %11, align 8, !tbaa !5
  %311 = load ptr, ptr %12, align 8, !tbaa !5
  %312 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %309, ptr noundef %310, ptr noundef %311, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %312, ptr %22, align 4, !tbaa !9
  %313 = load i32, ptr %21, align 4, !tbaa !9
  %314 = load i32, ptr %22, align 4, !tbaa !9
  %315 = icmp sge i32 %313, %314
  br i1 %315, label %316, label %318

316:                                              ; preds = %308
  %317 = load i32, ptr %21, align 4, !tbaa !9
  br label %320

318:                                              ; preds = %308
  %319 = load i32, ptr %22, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %318, %316
  %321 = phi i32 [ %317, %316 ], [ %319, %318 ]
  store i32 %321, ptr %28, align 4, !tbaa !9
  %322 = load ptr, ptr %17, align 8, !tbaa !5
  %323 = load i32, ptr %322, align 4, !tbaa !9
  %324 = load ptr, ptr %10, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = load i32, ptr %28, align 4, !tbaa !9
  %327 = mul nsw i32 %325, %326
  %328 = add nsw i32 %327, 4160
  %329 = icmp sge i32 %323, %328
  br i1 %329, label %330, label %337

330:                                              ; preds = %320
  %331 = load ptr, ptr %17, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = sub nsw i32 %332, 4160
  %334 = load ptr, ptr %10, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = sdiv i32 %333, %335
  store i32 %336, ptr %32, align 4, !tbaa !9
  br label %338

337:                                              ; preds = %320
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %338

338:                                              ; preds = %337, %330
  br label %339

339:                                              ; preds = %338, %299
  br label %340

340:                                              ; preds = %339, %294
  br label %341

341:                                              ; preds = %340, %277, %273
  %342 = load ptr, ptr %10, align 8, !tbaa !5
  %343 = load i32, ptr %342, align 4, !tbaa !9
  store i32 %343, ptr %35, align 4, !tbaa !9
  %344 = load i32, ptr %32, align 4, !tbaa !9
  %345 = load i32, ptr %28, align 4, !tbaa !9
  %346 = icmp slt i32 %344, %345
  br i1 %346, label %351, label %347

347:                                              ; preds = %341
  %348 = load i32, ptr %32, align 4, !tbaa !9
  %349 = load i32, ptr %33, align 4, !tbaa !9
  %350 = icmp sge i32 %348, %349
  br i1 %350, label %351, label %354

351:                                              ; preds = %347, %341
  %352 = load ptr, ptr %11, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  store i32 %353, ptr %26, align 4, !tbaa !9
  br label %607

354:                                              ; preds = %347
  %355 = load ptr, ptr %10, align 8, !tbaa !5
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = load i32, ptr %32, align 4, !tbaa !9
  %358 = mul nsw i32 %356, %357
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr %38, align 4, !tbaa !9
  %360 = load ptr, ptr %12, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = sub nsw i32 %361, 1
  %363 = load i32, ptr %34, align 4, !tbaa !9
  %364 = sub nsw i32 %362, %363
  store i32 %364, ptr %21, align 4, !tbaa !9
  %365 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %365, ptr %22, align 4, !tbaa !9
  %366 = load ptr, ptr %11, align 8, !tbaa !5
  %367 = load i32, ptr %366, align 4, !tbaa !9
  store i32 %367, ptr %26, align 4, !tbaa !9
  br label %368

368:                                              ; preds = %602, %354
  %369 = load i32, ptr %22, align 4, !tbaa !9
  %370 = icmp slt i32 %369, 0
  br i1 %370, label %371, label %376

371:                                              ; preds = %368
  %372 = load i32, ptr %26, align 4, !tbaa !9
  %373 = load i32, ptr %21, align 4, !tbaa !9
  %374 = icmp sge i32 %372, %373
  %375 = zext i1 %374 to i32
  br label %381

376:                                              ; preds = %368
  %377 = load i32, ptr %26, align 4, !tbaa !9
  %378 = load i32, ptr %21, align 4, !tbaa !9
  %379 = icmp sle i32 %377, %378
  %380 = zext i1 %379 to i32
  br label %381

381:                                              ; preds = %376, %371
  %382 = phi i32 [ %375, %371 ], [ %380, %376 ]
  %383 = icmp ne i32 %382, 0
  br i1 %383, label %384, label %606

384:                                              ; preds = %381
  %385 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %385, ptr %23, align 4, !tbaa !9
  %386 = load ptr, ptr %12, align 8, !tbaa !5
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = load i32, ptr %26, align 4, !tbaa !9
  %389 = sub nsw i32 %387, %388
  store i32 %389, ptr %24, align 4, !tbaa !9
  %390 = load i32, ptr %23, align 4, !tbaa !9
  %391 = load i32, ptr %24, align 4, !tbaa !9
  %392 = icmp sle i32 %390, %391
  br i1 %392, label %393, label %395

393:                                              ; preds = %384
  %394 = load i32, ptr %23, align 4, !tbaa !9
  br label %397

395:                                              ; preds = %384
  %396 = load i32, ptr %24, align 4, !tbaa !9
  br label %397

397:                                              ; preds = %395, %393
  %398 = phi i32 [ %394, %393 ], [ %396, %395 ]
  store i32 %398, ptr %30, align 4, !tbaa !9
  %399 = load ptr, ptr %12, align 8, !tbaa !5
  %400 = load ptr, ptr %13, align 8, !tbaa !5
  %401 = load i32, ptr %26, align 4, !tbaa !9
  %402 = load i32, ptr %19, align 4, !tbaa !9
  %403 = mul nsw i32 %401, %402
  %404 = add nsw i32 %403, 1
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds %struct.complex, ptr %400, i64 %405
  %407 = load ptr, ptr %14, align 8, !tbaa !5
  %408 = load ptr, ptr %15, align 8, !tbaa !5
  %409 = load i32, ptr %26, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds %struct.complex, ptr %408, i64 %410
  %412 = load ptr, ptr %16, align 8, !tbaa !5
  %413 = load i32, ptr %38, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds %struct.complex, ptr %412, i64 %414
  %416 = load ptr, ptr %16, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.complex, ptr %416, i64 1
  call void @clahr2_(ptr noundef %399, ptr noundef %26, ptr noundef %30, ptr noundef %406, ptr noundef %407, ptr noundef %411, ptr noundef %415, ptr noundef @c__65, ptr noundef %417, ptr noundef %35)
  %418 = load i32, ptr %26, align 4, !tbaa !9
  %419 = load i32, ptr %30, align 4, !tbaa !9
  %420 = add nsw i32 %418, %419
  %421 = load i32, ptr %26, align 4, !tbaa !9
  %422 = load i32, ptr %30, align 4, !tbaa !9
  %423 = add nsw i32 %421, %422
  %424 = sub nsw i32 %423, 1
  %425 = load i32, ptr %19, align 4, !tbaa !9
  %426 = mul nsw i32 %424, %425
  %427 = add nsw i32 %420, %426
  store i32 %427, ptr %23, align 4, !tbaa !9
  %428 = load ptr, ptr %13, align 8, !tbaa !5
  %429 = load i32, ptr %23, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds %struct.complex, ptr %428, i64 %430
  %432 = getelementptr inbounds %struct.complex, ptr %431, i32 0, i32 0
  %433 = load float, ptr %432, align 4, !tbaa !11
  %434 = getelementptr inbounds %struct.complex, ptr %31, i32 0, i32 0
  store float %433, ptr %434, align 4, !tbaa !11
  %435 = load ptr, ptr %13, align 8, !tbaa !5
  %436 = load i32, ptr %23, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds %struct.complex, ptr %435, i64 %437
  %439 = getelementptr inbounds %struct.complex, ptr %438, i32 0, i32 1
  %440 = load float, ptr %439, align 4, !tbaa !14
  %441 = getelementptr inbounds %struct.complex, ptr %31, i32 0, i32 1
  store float %440, ptr %441, align 4, !tbaa !14
  %442 = load i32, ptr %26, align 4, !tbaa !9
  %443 = load i32, ptr %30, align 4, !tbaa !9
  %444 = add nsw i32 %442, %443
  %445 = load i32, ptr %26, align 4, !tbaa !9
  %446 = load i32, ptr %30, align 4, !tbaa !9
  %447 = add nsw i32 %445, %446
  %448 = sub nsw i32 %447, 1
  %449 = load i32, ptr %19, align 4, !tbaa !9
  %450 = mul nsw i32 %448, %449
  %451 = add nsw i32 %444, %450
  store i32 %451, ptr %23, align 4, !tbaa !9
  %452 = load ptr, ptr %13, align 8, !tbaa !5
  %453 = load i32, ptr %23, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds %struct.complex, ptr %452, i64 %454
  %456 = getelementptr inbounds %struct.complex, ptr %455, i32 0, i32 0
  store float 1.000000e+00, ptr %456, align 4, !tbaa !11
  %457 = load ptr, ptr %13, align 8, !tbaa !5
  %458 = load i32, ptr %23, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds %struct.complex, ptr %457, i64 %459
  %461 = getelementptr inbounds %struct.complex, ptr %460, i32 0, i32 1
  store float 0.000000e+00, ptr %461, align 4, !tbaa !14
  %462 = load ptr, ptr %12, align 8, !tbaa !5
  %463 = load i32, ptr %462, align 4, !tbaa !9
  %464 = load i32, ptr %26, align 4, !tbaa !9
  %465 = sub nsw i32 %463, %464
  %466 = load i32, ptr %30, align 4, !tbaa !9
  %467 = sub nsw i32 %465, %466
  %468 = add nsw i32 %467, 1
  store i32 %468, ptr %23, align 4, !tbaa !9
  %469 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  store float -1.000000e+00, ptr %469, align 4, !tbaa !11
  %470 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  store float 0.000000e+00, ptr %470, align 4, !tbaa !14
  %471 = load ptr, ptr %12, align 8, !tbaa !5
  %472 = load ptr, ptr %16, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.complex, ptr %472, i64 1
  %474 = load ptr, ptr %13, align 8, !tbaa !5
  %475 = load i32, ptr %26, align 4, !tbaa !9
  %476 = load i32, ptr %30, align 4, !tbaa !9
  %477 = add nsw i32 %475, %476
  %478 = load i32, ptr %26, align 4, !tbaa !9
  %479 = load i32, ptr %19, align 4, !tbaa !9
  %480 = mul nsw i32 %478, %479
  %481 = add nsw i32 %477, %480
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds %struct.complex, ptr %474, i64 %482
  %484 = load ptr, ptr %14, align 8, !tbaa !5
  %485 = load ptr, ptr %13, align 8, !tbaa !5
  %486 = load i32, ptr %26, align 4, !tbaa !9
  %487 = load i32, ptr %30, align 4, !tbaa !9
  %488 = add nsw i32 %486, %487
  %489 = load i32, ptr %19, align 4, !tbaa !9
  %490 = mul nsw i32 %488, %489
  %491 = add nsw i32 %490, 1
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds %struct.complex, ptr %485, i64 %492
  %494 = load ptr, ptr %14, align 8, !tbaa !5
  call void @cgemm_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %471, ptr noundef %23, ptr noundef %30, ptr noundef %25, ptr noundef %473, ptr noundef %35, ptr noundef %483, ptr noundef %484, ptr noundef @c_b2, ptr noundef %493, ptr noundef %494)
  %495 = load i32, ptr %26, align 4, !tbaa !9
  %496 = load i32, ptr %30, align 4, !tbaa !9
  %497 = add nsw i32 %495, %496
  %498 = load i32, ptr %26, align 4, !tbaa !9
  %499 = load i32, ptr %30, align 4, !tbaa !9
  %500 = add nsw i32 %498, %499
  %501 = sub nsw i32 %500, 1
  %502 = load i32, ptr %19, align 4, !tbaa !9
  %503 = mul nsw i32 %501, %502
  %504 = add nsw i32 %497, %503
  store i32 %504, ptr %23, align 4, !tbaa !9
  %505 = getelementptr inbounds %struct.complex, ptr %31, i32 0, i32 0
  %506 = load float, ptr %505, align 4, !tbaa !11
  %507 = load ptr, ptr %13, align 8, !tbaa !5
  %508 = load i32, ptr %23, align 4, !tbaa !9
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds %struct.complex, ptr %507, i64 %509
  %511 = getelementptr inbounds %struct.complex, ptr %510, i32 0, i32 0
  store float %506, ptr %511, align 4, !tbaa !11
  %512 = getelementptr inbounds %struct.complex, ptr %31, i32 0, i32 1
  %513 = load float, ptr %512, align 4, !tbaa !14
  %514 = load ptr, ptr %13, align 8, !tbaa !5
  %515 = load i32, ptr %23, align 4, !tbaa !9
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds %struct.complex, ptr %514, i64 %516
  %518 = getelementptr inbounds %struct.complex, ptr %517, i32 0, i32 1
  store float %513, ptr %518, align 4, !tbaa !14
  %519 = load i32, ptr %30, align 4, !tbaa !9
  %520 = sub nsw i32 %519, 1
  store i32 %520, ptr %23, align 4, !tbaa !9
  %521 = load ptr, ptr %13, align 8, !tbaa !5
  %522 = load i32, ptr %26, align 4, !tbaa !9
  %523 = add nsw i32 %522, 1
  %524 = load i32, ptr %26, align 4, !tbaa !9
  %525 = load i32, ptr %19, align 4, !tbaa !9
  %526 = mul nsw i32 %524, %525
  %527 = add nsw i32 %523, %526
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds %struct.complex, ptr %521, i64 %528
  %530 = load ptr, ptr %14, align 8, !tbaa !5
  %531 = load ptr, ptr %16, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.complex, ptr %531, i64 1
  call void @ctrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @.str.6, ptr noundef %26, ptr noundef %23, ptr noundef @c_b2, ptr noundef %529, ptr noundef %530, ptr noundef %532, ptr noundef %35)
  %533 = load i32, ptr %30, align 4, !tbaa !9
  %534 = sub nsw i32 %533, 2
  store i32 %534, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %535

535:                                              ; preds = %559, %397
  %536 = load i32, ptr %27, align 4, !tbaa !9
  %537 = load i32, ptr %23, align 4, !tbaa !9
  %538 = icmp sle i32 %536, %537
  br i1 %538, label %539, label %562

539:                                              ; preds = %535
  %540 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  store float -1.000000e+00, ptr %540, align 4, !tbaa !11
  %541 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  store float 0.000000e+00, ptr %541, align 4, !tbaa !14
  %542 = load ptr, ptr %16, align 8, !tbaa !5
  %543 = load i32, ptr %35, align 4, !tbaa !9
  %544 = load i32, ptr %27, align 4, !tbaa !9
  %545 = mul nsw i32 %543, %544
  %546 = add nsw i32 %545, 1
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds %struct.complex, ptr %542, i64 %547
  %549 = load ptr, ptr %13, align 8, !tbaa !5
  %550 = load i32, ptr %26, align 4, !tbaa !9
  %551 = load i32, ptr %27, align 4, !tbaa !9
  %552 = add nsw i32 %550, %551
  %553 = add nsw i32 %552, 1
  %554 = load i32, ptr %19, align 4, !tbaa !9
  %555 = mul nsw i32 %553, %554
  %556 = add nsw i32 %555, 1
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds %struct.complex, ptr %549, i64 %557
  call void @caxpy_(ptr noundef %26, ptr noundef %25, ptr noundef %548, ptr noundef @c__1, ptr noundef %558, ptr noundef @c__1)
  br label %559

559:                                              ; preds = %539
  %560 = load i32, ptr %27, align 4, !tbaa !9
  %561 = add nsw i32 %560, 1
  store i32 %561, ptr %27, align 4, !tbaa !9
  br label %535, !llvm.loop !18

562:                                              ; preds = %535
  %563 = load ptr, ptr %12, align 8, !tbaa !5
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = load i32, ptr %26, align 4, !tbaa !9
  %566 = sub nsw i32 %564, %565
  store i32 %566, ptr %23, align 4, !tbaa !9
  %567 = load ptr, ptr %10, align 8, !tbaa !5
  %568 = load i32, ptr %567, align 4, !tbaa !9
  %569 = load i32, ptr %26, align 4, !tbaa !9
  %570 = sub nsw i32 %568, %569
  %571 = load i32, ptr %30, align 4, !tbaa !9
  %572 = sub nsw i32 %570, %571
  %573 = add nsw i32 %572, 1
  store i32 %573, ptr %24, align 4, !tbaa !9
  %574 = load ptr, ptr %13, align 8, !tbaa !5
  %575 = load i32, ptr %26, align 4, !tbaa !9
  %576 = add nsw i32 %575, 1
  %577 = load i32, ptr %26, align 4, !tbaa !9
  %578 = load i32, ptr %19, align 4, !tbaa !9
  %579 = mul nsw i32 %577, %578
  %580 = add nsw i32 %576, %579
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds %struct.complex, ptr %574, i64 %581
  %583 = load ptr, ptr %14, align 8, !tbaa !5
  %584 = load ptr, ptr %16, align 8, !tbaa !5
  %585 = load i32, ptr %38, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds %struct.complex, ptr %584, i64 %586
  %588 = load ptr, ptr %13, align 8, !tbaa !5
  %589 = load i32, ptr %26, align 4, !tbaa !9
  %590 = add nsw i32 %589, 1
  %591 = load i32, ptr %26, align 4, !tbaa !9
  %592 = load i32, ptr %30, align 4, !tbaa !9
  %593 = add nsw i32 %591, %592
  %594 = load i32, ptr %19, align 4, !tbaa !9
  %595 = mul nsw i32 %593, %594
  %596 = add nsw i32 %590, %595
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds %struct.complex, ptr %588, i64 %597
  %599 = load ptr, ptr %14, align 8, !tbaa !5
  %600 = load ptr, ptr %16, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.complex, ptr %600, i64 1
  call void @clarfb_(ptr noundef @.str.7, ptr noundef @.str.3, ptr noundef @.str.8, ptr noundef @.str.9, ptr noundef %23, ptr noundef %24, ptr noundef %30, ptr noundef %582, ptr noundef %583, ptr noundef %587, ptr noundef @c__65, ptr noundef %598, ptr noundef %599, ptr noundef %601, ptr noundef %35)
  br label %602

602:                                              ; preds = %562
  %603 = load i32, ptr %22, align 4, !tbaa !9
  %604 = load i32, ptr %26, align 4, !tbaa !9
  %605 = add nsw i32 %604, %603
  store i32 %605, ptr %26, align 4, !tbaa !9
  br label %368, !llvm.loop !19

606:                                              ; preds = %381
  br label %607

607:                                              ; preds = %606, %351
  %608 = load ptr, ptr %10, align 8, !tbaa !5
  %609 = load ptr, ptr %12, align 8, !tbaa !5
  %610 = load ptr, ptr %13, align 8, !tbaa !5
  %611 = load i32, ptr %20, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds %struct.complex, ptr %610, i64 %612
  %614 = load ptr, ptr %14, align 8, !tbaa !5
  %615 = load ptr, ptr %15, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.complex, ptr %615, i64 1
  %617 = load ptr, ptr %16, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.complex, ptr %617, i64 1
  call void @cgehd2_(ptr noundef %608, ptr noundef %26, ptr noundef %609, ptr noundef %613, ptr noundef %614, ptr noundef %616, ptr noundef %618, ptr noundef %29)
  %619 = load i32, ptr %36, align 4, !tbaa !9
  %620 = sitofp i32 %619 to float
  %621 = load ptr, ptr %16, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.complex, ptr %621, i64 1
  %623 = getelementptr inbounds %struct.complex, ptr %622, i32 0, i32 0
  store float %620, ptr %623, align 4, !tbaa !11
  %624 = load ptr, ptr %16, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.complex, ptr %624, i64 1
  %626 = getelementptr inbounds %struct.complex, ptr %625, i32 0, i32 1
  store float 0.000000e+00, ptr %626, align 4, !tbaa !14
  store i32 1, ptr %39, align 4
  br label %627

627:                                              ; preds = %607, %254, %188, %180
  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 8, 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 8, 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 @clahr2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @cgemm_(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

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

declare void @caxpy_(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

declare void @cgehd2_(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}


; 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
@c__65 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@c_b2 = external hidden global %struct.complex, align 4
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cgehrd_(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 %struct.complex, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = 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 8, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #5
  %18 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %18, -1
  %19 = sext i32 %narrow to i64
  %20 = getelementptr inbounds %struct.complex, ptr %3, i64 %19
  %21 = getelementptr inbounds i8, ptr %5, i64 -8
  store i32 0, ptr %8, align 4, !tbaa !5
  %22 = load i32, ptr %7, align 4, !tbaa !5
  %23 = icmp eq i32 %22, -1
  %24 = load i32, ptr %0, align 4, !tbaa !5
  %25 = icmp slt i32 %24, 0
  br i1 %25, label %.thread207.sink.split, label %26

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

29:                                               ; preds = %26
  %spec.select = tail call i32 @llvm.umax.i32(i32 %24, i32 1)
  %30 = icmp ugt i32 %27, %spec.select
  br i1 %30, label %.thread207.sink.split, label %31

31:                                               ; preds = %29
  %32 = load i32, ptr %2, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %27, i32 %24)
  %33 = icmp slt i32 %32, %.
  %34 = icmp ugt i32 %32, %24
  %or.cond213 = or i1 %33, %34
  br i1 %or.cond213, label %.thread207.sink.split, label %35

35:                                               ; preds = %31
  %36 = load i32, ptr %4, align 4, !tbaa !5
  %37 = icmp slt i32 %36, %spec.select
  br i1 %37, label %.thread207.sink.split, label %38

38:                                               ; preds = %35
  %39 = icmp sge i32 %22, %spec.select
  %or.cond = or i1 %23, %39
  br i1 %or.cond, label %.thread, label %.thread207.sink.split

.thread:                                          ; preds = %38
  %40 = 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
  %41 = tail call i32 @llvm.smin.i32(i32 %40, i32 64)
  %42 = load i32, ptr %0, align 4, !tbaa !5
  %43 = mul nsw i32 %42, %41
  %44 = add nsw i32 %43, 4160
  %45 = sitofp i32 %44 to float
  store float %45, ptr %6, align 4, !tbaa !9
  %46 = getelementptr inbounds i8, ptr %6, i64 4
  store float 0.000000e+00, ptr %46, align 4, !tbaa !12
  %.pr206.pr = load i32, ptr %8, align 4, !tbaa !5
  %.not186 = icmp eq i32 %.pr206.pr, 0
  br i1 %.not186, label %50, label %.thread207

.thread207.sink.split:                            ; preds = %38, %35, %31, %26, %29, %9
  %.sink = phi i32 [ -1, %9 ], [ -2, %29 ], [ -2, %26 ], [ -3, %31 ], [ -5, %35 ], [ -8, %38 ]
  store i32 %.sink, ptr %8, align 4, !tbaa !5
  br label %.thread207

.thread207:                                       ; preds = %.thread207.sink.split, %.thread
  %47 = phi i32 [ %.pr206.pr, %.thread ], [ %.sink, %.thread207.sink.split ]
  %48 = sub nsw i32 0, %47
  store i32 %48, ptr %10, align 4, !tbaa !5
  %49 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %10, i32 noundef 6) #5
  br label %170

50:                                               ; preds = %.thread
  br i1 %23, label %170, label %51

51:                                               ; preds = %50
  %52 = load i32, ptr %1, align 4, !tbaa !5
  %.not187.not216 = icmp sgt i32 %52, 1
  br i1 %.not187.not216, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %51
  %53 = add nsw i32 %52, -1
  %54 = zext nneg i32 %53 to i64
  %55 = shl nuw nsw i64 %54, 3
  tail call void @llvm.memset.p0.i64(ptr align 4 %5, i8 0, i64 %55, i1 false), !tbaa !13
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %51
  %storemerge.lcssa = phi i32 [ 1, %51 ], [ %52, %.lr.ph.preheader ]
  store i32 %storemerge.lcssa, ptr %14, align 4, !tbaa !5
  %56 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select202 = tail call i32 @llvm.smax.i32(i32 %56, i32 1)
  %.not189.not218 = icmp slt i32 %spec.select202, %42
  br i1 %.not189.not218, label %.lr.ph221.preheader, label %._crit_edge222

.lr.ph221.preheader:                              ; preds = %._crit_edge
  %57 = zext nneg i32 %spec.select202 to i64
  %58 = shl nuw nsw i64 %57, 3
  %59 = getelementptr i8, ptr %5, i64 %58
  %scevgep = getelementptr i8, ptr %59, i64 -8
  %60 = xor i32 %spec.select202, -1
  %61 = add i32 %42, %60
  %62 = zext i32 %61 to i64
  %63 = shl nuw nsw i64 %62, 3
  %64 = add nuw nsw i64 %63, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %64, i1 false), !tbaa !13
  br label %._crit_edge222

._crit_edge222:                                   ; preds = %.lr.ph221.preheader, %._crit_edge
  %65 = sub nsw i32 %56, %52
  %66 = icmp slt i32 %65, 1
  br i1 %66, label %67, label %68

67:                                               ; preds = %._crit_edge222
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %6, align 4, !tbaa !13
  br label %170

68:                                               ; preds = %._crit_edge222
  %69 = 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
  %70 = tail call i32 @llvm.smin.i32(i32 %69, i32 64)
  %71 = icmp slt i32 %69, 2
  %.not191 = icmp sgt i32 %70, %65
  %or.cond203 = or i1 %71, %.not191
  br i1 %or.cond203, label %._crit_edge241, label %72

._crit_edge241:                                   ; preds = %68
  %.pre = load i32, ptr %0, align 4, !tbaa !5
  br label %90

72:                                               ; preds = %68
  %73 = 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
  %74 = tail call i32 @llvm.smax.i32(i32 %70, i32 %73)
  %.not193 = icmp sgt i32 %73, %65
  %.pre242 = load i32, ptr %0, align 4, !tbaa !5
  br i1 %.not193, label %90, label %75

75:                                               ; preds = %72
  %76 = load i32, ptr %7, align 4, !tbaa !5
  %77 = mul nsw i32 %.pre242, %70
  %78 = add nsw i32 %77, 4160
  %79 = icmp slt i32 %76, %78
  br i1 %79, label %80, label %90

80:                                               ; preds = %75
  %81 = 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
  %82 = tail call i32 @llvm.smax.i32(i32 %81, i32 2)
  %83 = load i32, ptr %7, align 4, !tbaa !5
  %84 = load i32, ptr %0, align 4, !tbaa !5
  %85 = mul nsw i32 %84, %82
  %86 = add nsw i32 %85, 4160
  %.not195 = icmp slt i32 %83, %86
  br i1 %.not195, label %.thread244, label %87

.thread244:                                       ; preds = %80
  store i32 %84, ptr %17, align 4, !tbaa !5
  br label %93

87:                                               ; preds = %80
  %88 = add nsw i32 %83, -4160
  %89 = sdiv i32 %88, %84
  br label %90

90:                                               ; preds = %._crit_edge241, %72, %87, %75
  %91 = phi i32 [ %84, %87 ], [ %.pre242, %75 ], [ %.pre242, %72 ], [ %.pre, %._crit_edge241 ]
  %.0169 = phi i32 [ %82, %87 ], [ 2, %75 ], [ 2, %72 ], [ 2, %._crit_edge241 ]
  %.0167 = phi i32 [ %89, %87 ], [ %70, %75 ], [ %70, %72 ], [ %70, %._crit_edge241 ]
  %.0166 = phi i32 [ %74, %87 ], [ %74, %75 ], [ %74, %72 ], [ undef, %._crit_edge241 ]
  store i32 %91, ptr %17, align 4, !tbaa !5
  %92 = icmp slt i32 %.0167, %.0169
  %.not196.not = icmp sgt i32 %.0167, %65
  %or.cond204 = or i1 %92, %.not196.not
  br i1 %or.cond204, label %93, label %95

93:                                               ; preds = %.thread244, %90
  %94 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %94, ptr %14, align 4, !tbaa !5
  br label %.loopexit

95:                                               ; preds = %90
  %96 = mul nsw i32 %91, %.0167
  %97 = load i32, ptr %2, align 4, !tbaa !5
  %98 = xor i32 %.0166, -1
  %99 = add i32 %97, %98
  %100 = load i32, ptr %1, align 4, !tbaa !5
  %invariant.gep231 = getelementptr i8, ptr %20, i64 8
  %101 = sext i32 %96 to i64
  %gep234 = getelementptr %struct.complex, ptr %6, i64 %101
  store i32 %100, ptr %14, align 4, !tbaa !5
  %.not250 = icmp sgt i32 %100, %99
  br i1 %.not250, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %95, %._crit_edge230
  %storemerge197251 = phi i32 [ %169, %._crit_edge230 ], [ %100, %95 ]
  store i32 %.0167, ptr %11, align 4, !tbaa !5
  %102 = load i32, ptr %2, align 4, !tbaa !5
  %103 = sub nsw i32 %102, %storemerge197251
  store i32 %103, ptr %12, align 4, !tbaa !5
  %104 = call i32 @llvm.smin.i32(i32 %.0167, i32 %103)
  store i32 %104, ptr %16, align 4, !tbaa !5
  %105 = mul nsw i32 %storemerge197251, %18
  %106 = sext i32 %105 to i64
  %gep232 = getelementptr %struct.complex, ptr %invariant.gep231, i64 %106
  %107 = sext i32 %storemerge197251 to i64
  %108 = getelementptr inbounds %struct.complex, ptr %21, i64 %107
  call void @clahr2_(ptr noundef nonnull %2, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef %gep232, ptr noundef nonnull %4, ptr noundef nonnull %108, ptr noundef %gep234, ptr noundef nonnull @c__65, ptr noundef nonnull %6, ptr noundef nonnull %17) #5
  %109 = load i32, ptr %14, align 4, !tbaa !5
  %110 = load i32, ptr %16, align 4, !tbaa !5
  %111 = add nsw i32 %110, %109
  %112 = add nsw i32 %111, -1
  %113 = mul nsw i32 %112, %18
  %114 = add nsw i32 %113, %111
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds %struct.complex, ptr %20, i64 %115
  %117 = load i32, ptr %2, align 4, !tbaa !5
  %reass.sub = sub i32 %117, %111
  %118 = add i32 %reass.sub, 1
  store i32 %118, ptr %11, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %13, align 8, !tbaa !13
  %119 = mul nsw i32 %109, %18
  %120 = add nsw i32 %111, %119
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds %struct.complex, ptr %20, i64 %121
  %123 = mul nsw i32 %111, %18
  %124 = sext i32 %123 to i64
  %gep236 = getelementptr %struct.complex, ptr %invariant.gep231, i64 %124
  %125 = load <2 x float>, ptr %116, align 4, !tbaa !13
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %116, align 4, !tbaa !13
  call void @cgemm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %11, ptr noundef nonnull %16, ptr noundef nonnull %13, ptr noundef nonnull %6, ptr noundef nonnull %17, ptr noundef %122, ptr noundef nonnull %4, ptr noundef nonnull @c_b2, ptr noundef %gep236, ptr noundef nonnull %4) #5
  %126 = load i32, ptr %14, align 4, !tbaa !5
  %127 = load i32, ptr %16, align 4, !tbaa !5
  %128 = add nsw i32 %127, %126
  %129 = add nsw i32 %128, -1
  %130 = mul nsw i32 %129, %18
  %131 = add nsw i32 %130, %128
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds %struct.complex, ptr %20, i64 %132
  store <2 x float> %125, ptr %133, align 4, !tbaa !13
  %134 = add nsw i32 %127, -1
  store i32 %134, ptr %11, align 4, !tbaa !5
  %135 = add nsw i32 %126, 1
  %136 = mul nsw i32 %126, %18
  %137 = add nsw i32 %135, %136
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds %struct.complex, ptr %20, i64 %138
  call void @ctrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.6, ptr noundef nonnull %14, ptr noundef nonnull %11, ptr noundef nonnull @c_b2, ptr noundef %139, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %17) #5
  %140 = load i32, ptr %16, align 4, !tbaa !5
  %141 = add nsw i32 %140, -2
  store i32 %141, ptr %11, align 4, !tbaa !5
  %.not199226 = icmp slt i32 %140, 2
  br i1 %.not199226, label %._crit_edge230, label %.lr.ph229

.lr.ph229:                                        ; preds = %.lr.ph, %.lr.ph229
  %.0168227 = phi i32 [ %146, %.lr.ph229 ], [ 0, %.lr.ph ]
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %13, align 8, !tbaa !13
  %142 = load i32, ptr %17, align 4, !tbaa !5
  %143 = mul nsw i32 %142, %.0168227
  %144 = sext i32 %143 to i64
  %gep = getelementptr %struct.complex, ptr %6, i64 %144
  %145 = load i32, ptr %14, align 4, !tbaa !5
  %146 = add nuw i32 %.0168227, 1
  %147 = add i32 %146, %145
  %148 = mul nsw i32 %147, %18
  %149 = sext i32 %148 to i64
  %gep225 = getelementptr %struct.complex, ptr %invariant.gep231, i64 %149
  call void @caxpy_(ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep225, ptr noundef nonnull @c__1) #5
  %150 = load i32, ptr %11, align 4, !tbaa !5
  %.not199.not = icmp slt i32 %.0168227, %150
  br i1 %.not199.not, label %.lr.ph229, label %._crit_edge230.loopexit, !llvm.loop !14

._crit_edge230.loopexit:                          ; preds = %.lr.ph229
  %.pre243 = load i32, ptr %16, align 4, !tbaa !5
  br label %._crit_edge230

._crit_edge230:                                   ; preds = %._crit_edge230.loopexit, %.lr.ph
  %151 = phi i32 [ %.pre243, %._crit_edge230.loopexit ], [ %140, %.lr.ph ]
  %152 = load i32, ptr %2, align 4, !tbaa !5
  %153 = load i32, ptr %14, align 4, !tbaa !5
  %154 = sub nsw i32 %152, %153
  store i32 %154, ptr %11, align 4, !tbaa !5
  %155 = load i32, ptr %0, align 4, !tbaa !5
  %156 = add i32 %151, %153
  %157 = add i32 %155, 1
  %158 = sub i32 %157, %156
  store i32 %158, ptr %12, align 4, !tbaa !5
  %159 = add nsw i32 %153, 1
  %160 = mul nsw i32 %153, %18
  %161 = add nsw i32 %159, %160
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds %struct.complex, ptr %20, i64 %162
  %164 = mul nsw i32 %156, %18
  %165 = add nsw i32 %164, %159
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds %struct.complex, ptr %20, i64 %166
  call void @clarfb_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.9, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %16, ptr noundef %163, ptr noundef nonnull %4, ptr noundef %gep234, ptr noundef nonnull @c__65, ptr noundef %167, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %17) #5
  %168 = load i32, ptr %14, align 4, !tbaa !5
  %169 = add nsw i32 %168, %.0167
  store i32 %169, ptr %14, align 4, !tbaa !5
  %.not = icmp sgt i32 %169, %99
  br i1 %.not, label %.loopexit, label %.lr.ph, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge230, %95, %93
  call void @cgehd2_(ptr noundef nonnull %0, ptr noundef nonnull %14, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %15) #5
  store float %45, ptr %6, align 4, !tbaa !9
  store float 0.000000e+00, ptr %46, align 4, !tbaa !12
  br label %170

170:                                              ; preds = %50, %.loopexit, %67, %.thread207
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  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 8, 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 @clahr2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @cgemm_(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

declare void @ctrmm_(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

declare void @caxpy_(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

declare void @cgehd2_(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.smin.i32(i32, i32) #3

; 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.umax.i32(i32, i32) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.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}


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