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

62:                                               ; preds = %9
  %63 = load i64, ptr %22, align 8, !tbaa !9
  br label %66

64:                                               ; preds = %9
  %65 = load i64, ptr %23, align 8, !tbaa !9
  br label %66

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

88:                                               ; preds = %66
  %89 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -1, ptr %89, align 8, !tbaa !9
  br label %171

90:                                               ; preds = %66
  %91 = load ptr, ptr %12, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  %93 = icmp slt i64 %92, 1
  br i1 %93, label %107, label %94

94:                                               ; preds = %90
  %95 = load ptr, ptr %12, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  %97 = load ptr, ptr %11, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  %99 = icmp sge i64 1, %98
  br i1 %99, label %100, label %101

100:                                              ; preds = %94
  br label %104

101:                                              ; preds = %94
  %102 = load ptr, ptr %11, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !9
  br label %104

104:                                              ; preds = %101, %100
  %105 = phi i64 [ 1, %100 ], [ %103, %101 ]
  %106 = icmp sgt i64 %96, %105
  br i1 %106, label %107, label %109

107:                                              ; preds = %104, %90
  %108 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -2, ptr %108, align 8, !tbaa !9
  br label %170

109:                                              ; preds = %104
  %110 = load ptr, ptr %13, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  %112 = load ptr, ptr %12, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  %114 = load ptr, ptr %11, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  %116 = icmp sle i64 %113, %115
  br i1 %116, label %117, label %120

117:                                              ; preds = %109
  %118 = load ptr, ptr %12, align 8, !tbaa !5
  %119 = load i64, ptr %118, align 8, !tbaa !9
  br label %123

120:                                              ; preds = %109
  %121 = load ptr, ptr %11, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  br label %123

123:                                              ; preds = %120, %117
  %124 = phi i64 [ %119, %117 ], [ %122, %120 ]
  %125 = icmp slt i64 %111, %124
  br i1 %125, label %132, label %126

126:                                              ; preds = %123
  %127 = load ptr, ptr %13, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = load ptr, ptr %11, align 8, !tbaa !5
  %130 = load i64, ptr %129, align 8, !tbaa !9
  %131 = icmp sgt i64 %128, %130
  br i1 %131, label %132, label %134

132:                                              ; preds = %126, %123
  %133 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -3, ptr %133, align 8, !tbaa !9
  br label %169

134:                                              ; preds = %126
  %135 = load ptr, ptr %15, align 8, !tbaa !5
  %136 = load i64, ptr %135, align 8, !tbaa !9
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  %139 = icmp sge i64 1, %138
  br i1 %139, label %140, label %141

140:                                              ; preds = %134
  br label %144

141:                                              ; preds = %134
  %142 = load ptr, ptr %11, align 8, !tbaa !5
  %143 = load i64, ptr %142, align 8, !tbaa !9
  br label %144

144:                                              ; preds = %141, %140
  %145 = phi i64 [ 1, %140 ], [ %143, %141 ]
  %146 = icmp slt i64 %136, %145
  br i1 %146, label %147, label %149

147:                                              ; preds = %144
  %148 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -5, ptr %148, align 8, !tbaa !9
  br label %168

149:                                              ; preds = %144
  %150 = load ptr, ptr %18, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  %152 = load ptr, ptr %11, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = icmp sge i64 1, %153
  br i1 %154, label %155, label %156

155:                                              ; preds = %149
  br label %159

156:                                              ; preds = %149
  %157 = load ptr, ptr %11, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  br label %159

159:                                              ; preds = %156, %155
  %160 = phi i64 [ 1, %155 ], [ %158, %156 ]
  %161 = icmp slt i64 %151, %160
  br i1 %161, label %162, label %167

162:                                              ; preds = %159
  %163 = load i64, ptr %40, align 8, !tbaa !9
  %164 = icmp ne i64 %163, 0
  br i1 %164, label %167, label %165

165:                                              ; preds = %162
  %166 = load ptr, ptr %19, align 8, !tbaa !5
  store i64 -8, ptr %166, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %165, %162, %159
  br label %168

168:                                              ; preds = %167, %147
  br label %169

169:                                              ; preds = %168, %132
  br label %170

170:                                              ; preds = %169, %107
  br label %171

171:                                              ; preds = %170, %88
  %172 = load ptr, ptr %19, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp ne i64 %173, 0
  br i1 %174, label %175, label %180

175:                                              ; preds = %171
  %176 = load ptr, ptr %19, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = sub nsw i64 0, %177
  store i64 %178, ptr %22, align 8, !tbaa !9
  %179 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %22)
  store i32 0, ptr %10, align 4
  store i32 1, ptr %41, align 4
  br label %595

180:                                              ; preds = %171
  %181 = load i64, ptr %40, align 8, !tbaa !9
  %182 = icmp ne i64 %181, 0
  br i1 %182, label %183, label %184

183:                                              ; preds = %180
  store i32 0, ptr %10, align 4
  store i32 1, ptr %41, align 4
  br label %595

184:                                              ; preds = %180
  br label %185

185:                                              ; preds = %184
  %186 = load ptr, ptr %12, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = sub nsw i64 %187, 1
  store i64 %188, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %189

189:                                              ; preds = %203, %185
  %190 = load i64, ptr %27, align 8, !tbaa !9
  %191 = load i64, ptr %22, align 8, !tbaa !9
  %192 = icmp sle i64 %190, %191
  br i1 %192, label %193, label %206

193:                                              ; preds = %189
  %194 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %194, ptr %23, align 8, !tbaa !9
  %195 = load ptr, ptr %16, align 8, !tbaa !5
  %196 = load i64, ptr %23, align 8, !tbaa !9
  %197 = getelementptr inbounds %struct.complex, ptr %195, i64 %196
  %198 = getelementptr inbounds %struct.complex, ptr %197, i32 0, i32 0
  store float 0.000000e+00, ptr %198, align 4, !tbaa !11
  %199 = load ptr, ptr %16, align 8, !tbaa !5
  %200 = load i64, ptr %23, align 8, !tbaa !9
  %201 = getelementptr inbounds %struct.complex, ptr %199, i64 %200
  %202 = getelementptr inbounds %struct.complex, ptr %201, i32 0, i32 1
  store float 0.000000e+00, ptr %202, align 4, !tbaa !14
  br label %203

203:                                              ; preds = %193
  %204 = load i64, ptr %27, align 8, !tbaa !9
  %205 = add nsw i64 %204, 1
  store i64 %205, ptr %27, align 8, !tbaa !9
  br label %189, !llvm.loop !15

206:                                              ; preds = %189
  %207 = load ptr, ptr %11, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = sub nsw i64 %208, 1
  store i64 %209, ptr %22, align 8, !tbaa !9
  %210 = load ptr, ptr %13, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = icmp sge i64 1, %211
  br i1 %212, label %213, label %214

213:                                              ; preds = %206
  br label %217

214:                                              ; preds = %206
  %215 = load ptr, ptr %13, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  br label %217

217:                                              ; preds = %214, %213
  %218 = phi i64 [ 1, %213 ], [ %216, %214 ]
  store i64 %218, ptr %27, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %233, %217
  %220 = load i64, ptr %27, align 8, !tbaa !9
  %221 = load i64, ptr %22, align 8, !tbaa !9
  %222 = icmp sle i64 %220, %221
  br i1 %222, label %223, label %236

223:                                              ; preds = %219
  %224 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %224, ptr %23, align 8, !tbaa !9
  %225 = load ptr, ptr %16, align 8, !tbaa !5
  %226 = load i64, ptr %23, align 8, !tbaa !9
  %227 = getelementptr inbounds %struct.complex, ptr %225, i64 %226
  %228 = getelementptr inbounds %struct.complex, ptr %227, i32 0, i32 0
  store float 0.000000e+00, ptr %228, align 4, !tbaa !11
  %229 = load ptr, ptr %16, align 8, !tbaa !5
  %230 = load i64, ptr %23, align 8, !tbaa !9
  %231 = getelementptr inbounds %struct.complex, ptr %229, i64 %230
  %232 = getelementptr inbounds %struct.complex, ptr %231, i32 0, i32 1
  store float 0.000000e+00, ptr %232, align 4, !tbaa !14
  br label %233

233:                                              ; preds = %223
  %234 = load i64, ptr %27, align 8, !tbaa !9
  %235 = add nsw i64 %234, 1
  store i64 %235, ptr %27, align 8, !tbaa !9
  br label %219, !llvm.loop !17

236:                                              ; preds = %219
  %237 = load ptr, ptr %13, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = load ptr, ptr %12, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  %241 = sub nsw i64 %238, %240
  %242 = add nsw i64 %241, 1
  store i64 %242, ptr %33, align 8, !tbaa !9
  %243 = load i64, ptr %33, align 8, !tbaa !9
  %244 = icmp sle i64 %243, 1
  br i1 %244, label %245, label %252

245:                                              ; preds = %236
  %246 = load ptr, ptr %17, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.complex, ptr %246, i64 1
  %248 = getelementptr inbounds %struct.complex, ptr %247, i32 0, i32 0
  store float 1.000000e+00, ptr %248, align 4, !tbaa !11
  %249 = load ptr, ptr %17, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.complex, ptr %249, i64 1
  %251 = getelementptr inbounds %struct.complex, ptr %250, i32 0, i32 1
  store float 0.000000e+00, ptr %251, align 4, !tbaa !14
  store i32 0, ptr %10, align 4
  store i32 1, ptr %41, align 4
  br label %595

252:                                              ; preds = %236
  store i64 64, ptr %22, align 8, !tbaa !9
  %253 = load ptr, ptr %11, align 8, !tbaa !5
  %254 = load ptr, ptr %12, align 8, !tbaa !5
  %255 = load ptr, ptr %13, align 8, !tbaa !5
  %256 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %253, ptr noundef %254, ptr noundef %255, ptr noundef @c_n1)
  store i64 %256, ptr %23, align 8, !tbaa !9
  %257 = load i64, ptr %22, align 8, !tbaa !9
  %258 = load i64, ptr %23, align 8, !tbaa !9
  %259 = icmp sle i64 %257, %258
  br i1 %259, label %260, label %262

260:                                              ; preds = %252
  %261 = load i64, ptr %22, align 8, !tbaa !9
  br label %264

262:                                              ; preds = %252
  %263 = load i64, ptr %23, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %262, %260
  %265 = phi i64 [ %261, %260 ], [ %263, %262 ]
  store i64 %265, ptr %32, align 8, !tbaa !9
  store i64 2, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  %266 = load i64, ptr %32, align 8, !tbaa !9
  %267 = icmp sgt i64 %266, 1
  br i1 %267, label %268, label %330

268:                                              ; preds = %264
  %269 = load i64, ptr %32, align 8, !tbaa !9
  %270 = load i64, ptr %33, align 8, !tbaa !9
  %271 = icmp slt i64 %269, %270
  br i1 %271, label %272, label %330

272:                                              ; preds = %268
  %273 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %273, ptr %22, align 8, !tbaa !9
  %274 = load ptr, ptr %11, align 8, !tbaa !5
  %275 = load ptr, ptr %12, align 8, !tbaa !5
  %276 = load ptr, ptr %13, align 8, !tbaa !5
  %277 = call i64 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %274, ptr noundef %275, ptr noundef %276, ptr noundef @c_n1)
  store i64 %277, ptr %23, align 8, !tbaa !9
  %278 = load i64, ptr %22, align 8, !tbaa !9
  %279 = load i64, ptr %23, align 8, !tbaa !9
  %280 = icmp sge i64 %278, %279
  br i1 %280, label %281, label %283

281:                                              ; preds = %272
  %282 = load i64, ptr %22, align 8, !tbaa !9
  br label %285

283:                                              ; preds = %272
  %284 = load i64, ptr %23, align 8, !tbaa !9
  br label %285

285:                                              ; preds = %283, %281
  %286 = phi i64 [ %282, %281 ], [ %284, %283 ]
  store i64 %286, ptr %34, align 8, !tbaa !9
  %287 = load i64, ptr %34, align 8, !tbaa !9
  %288 = load i64, ptr %33, align 8, !tbaa !9
  %289 = icmp slt i64 %287, %288
  br i1 %289, label %290, label %329

290:                                              ; preds = %285
  %291 = load ptr, ptr %11, align 8, !tbaa !5
  %292 = load i64, ptr %291, align 8, !tbaa !9
  %293 = load i64, ptr %32, align 8, !tbaa !9
  %294 = mul nsw i64 %292, %293
  store i64 %294, ptr %35, align 8, !tbaa !9
  %295 = load ptr, ptr %18, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = load i64, ptr %35, align 8, !tbaa !9
  %298 = icmp slt i64 %296, %297
  br i1 %298, label %299, label %328

299:                                              ; preds = %290
  store i64 2, ptr %22, align 8, !tbaa !9
  %300 = load ptr, ptr %11, align 8, !tbaa !5
  %301 = load ptr, ptr %12, align 8, !tbaa !5
  %302 = load ptr, ptr %13, align 8, !tbaa !5
  %303 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %300, ptr noundef %301, ptr noundef %302, ptr noundef @c_n1)
  store i64 %303, ptr %23, align 8, !tbaa !9
  %304 = load i64, ptr %22, align 8, !tbaa !9
  %305 = load i64, ptr %23, align 8, !tbaa !9
  %306 = icmp sge i64 %304, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %299
  %308 = load i64, ptr %22, align 8, !tbaa !9
  br label %311

309:                                              ; preds = %299
  %310 = load i64, ptr %23, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %309, %307
  %312 = phi i64 [ %308, %307 ], [ %310, %309 ]
  store i64 %312, ptr %36, align 8, !tbaa !9
  %313 = load ptr, ptr %18, align 8, !tbaa !5
  %314 = load i64, ptr %313, align 8, !tbaa !9
  %315 = load ptr, ptr %11, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = load i64, ptr %36, align 8, !tbaa !9
  %318 = mul nsw i64 %316, %317
  %319 = icmp sge i64 %314, %318
  br i1 %319, label %320, label %326

320:                                              ; preds = %311
  %321 = load ptr, ptr %18, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = load ptr, ptr %11, align 8, !tbaa !5
  %324 = load i64, ptr %323, align 8, !tbaa !9
  %325 = sdiv i64 %322, %324
  store i64 %325, ptr %32, align 8, !tbaa !9
  br label %327

326:                                              ; preds = %311
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %326, %320
  br label %328

328:                                              ; preds = %327, %290
  br label %329

329:                                              ; preds = %328, %285
  br label %330

330:                                              ; preds = %329, %268, %264
  %331 = load ptr, ptr %11, align 8, !tbaa !5
  %332 = load i64, ptr %331, align 8, !tbaa !9
  store i64 %332, ptr %38, align 8, !tbaa !9
  %333 = load i64, ptr %32, align 8, !tbaa !9
  %334 = load i64, ptr %36, align 8, !tbaa !9
  %335 = icmp slt i64 %333, %334
  br i1 %335, label %340, label %336

336:                                              ; preds = %330
  %337 = load i64, ptr %32, align 8, !tbaa !9
  %338 = load i64, ptr %33, align 8, !tbaa !9
  %339 = icmp sge i64 %337, %338
  br i1 %339, label %340, label %343

340:                                              ; preds = %336, %330
  %341 = load ptr, ptr %12, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  store i64 %342, ptr %27, align 8, !tbaa !9
  br label %575

343:                                              ; preds = %336
  %344 = load ptr, ptr %13, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  %346 = sub nsw i64 %345, 1
  %347 = load i64, ptr %34, align 8, !tbaa !9
  %348 = sub nsw i64 %346, %347
  store i64 %348, ptr %22, align 8, !tbaa !9
  %349 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %349, ptr %23, align 8, !tbaa !9
  %350 = load ptr, ptr %12, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !9
  store i64 %351, ptr %27, align 8, !tbaa !9
  br label %352

352:                                              ; preds = %570, %343
  %353 = load i64, ptr %23, align 8, !tbaa !9
  %354 = icmp slt i64 %353, 0
  br i1 %354, label %355, label %360

355:                                              ; preds = %352
  %356 = load i64, ptr %27, align 8, !tbaa !9
  %357 = load i64, ptr %22, align 8, !tbaa !9
  %358 = icmp sge i64 %356, %357
  %359 = zext i1 %358 to i32
  br label %365

360:                                              ; preds = %352
  %361 = load i64, ptr %27, align 8, !tbaa !9
  %362 = load i64, ptr %22, align 8, !tbaa !9
  %363 = icmp sle i64 %361, %362
  %364 = zext i1 %363 to i32
  br label %365

365:                                              ; preds = %360, %355
  %366 = phi i32 [ %359, %355 ], [ %364, %360 ]
  %367 = icmp ne i32 %366, 0
  br i1 %367, label %368, label %574

368:                                              ; preds = %365
  %369 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %369, ptr %24, align 8, !tbaa !9
  %370 = load ptr, ptr %13, align 8, !tbaa !5
  %371 = load i64, ptr %370, align 8, !tbaa !9
  %372 = load i64, ptr %27, align 8, !tbaa !9
  %373 = sub nsw i64 %371, %372
  store i64 %373, ptr %25, align 8, !tbaa !9
  %374 = load i64, ptr %24, align 8, !tbaa !9
  %375 = load i64, ptr %25, align 8, !tbaa !9
  %376 = icmp sle i64 %374, %375
  br i1 %376, label %377, label %379

377:                                              ; preds = %368
  %378 = load i64, ptr %24, align 8, !tbaa !9
  br label %381

379:                                              ; preds = %368
  %380 = load i64, ptr %25, align 8, !tbaa !9
  br label %381

381:                                              ; preds = %379, %377
  %382 = phi i64 [ %378, %377 ], [ %380, %379 ]
  store i64 %382, ptr %30, align 8, !tbaa !9
  %383 = load ptr, ptr %13, align 8, !tbaa !5
  %384 = load ptr, ptr %14, align 8, !tbaa !5
  %385 = load i64, ptr %27, align 8, !tbaa !9
  %386 = load i64, ptr %20, align 8, !tbaa !9
  %387 = mul nsw i64 %385, %386
  %388 = add nsw i64 %387, 1
  %389 = getelementptr inbounds %struct.complex, ptr %384, i64 %388
  %390 = load ptr, ptr %15, align 8, !tbaa !5
  %391 = load ptr, ptr %16, align 8, !tbaa !5
  %392 = load i64, ptr %27, align 8, !tbaa !9
  %393 = getelementptr inbounds %struct.complex, ptr %391, i64 %392
  %394 = getelementptr inbounds [4160 x %struct.complex], ptr %29, i64 0, i64 0
  %395 = load ptr, ptr %17, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.complex, ptr %395, i64 1
  %397 = call i32 @clahr2_(ptr noundef %383, ptr noundef %27, ptr noundef %30, ptr noundef %389, ptr noundef %390, ptr noundef %393, ptr noundef %394, ptr noundef @c__65, ptr noundef %396, ptr noundef %38)
  %398 = load i64, ptr %27, align 8, !tbaa !9
  %399 = load i64, ptr %30, align 8, !tbaa !9
  %400 = add nsw i64 %398, %399
  %401 = load i64, ptr %27, align 8, !tbaa !9
  %402 = load i64, ptr %30, align 8, !tbaa !9
  %403 = add nsw i64 %401, %402
  %404 = sub nsw i64 %403, 1
  %405 = load i64, ptr %20, align 8, !tbaa !9
  %406 = mul nsw i64 %404, %405
  %407 = add nsw i64 %400, %406
  store i64 %407, ptr %24, align 8, !tbaa !9
  %408 = load ptr, ptr %14, align 8, !tbaa !5
  %409 = load i64, ptr %24, align 8, !tbaa !9
  %410 = getelementptr inbounds %struct.complex, ptr %408, i64 %409
  %411 = getelementptr inbounds %struct.complex, ptr %410, i32 0, i32 0
  %412 = load float, ptr %411, align 4, !tbaa !11
  %413 = getelementptr inbounds %struct.complex, ptr %31, i32 0, i32 0
  store float %412, ptr %413, align 4, !tbaa !11
  %414 = load ptr, ptr %14, align 8, !tbaa !5
  %415 = load i64, ptr %24, align 8, !tbaa !9
  %416 = getelementptr inbounds %struct.complex, ptr %414, i64 %415
  %417 = getelementptr inbounds %struct.complex, ptr %416, i32 0, i32 1
  %418 = load float, ptr %417, align 4, !tbaa !14
  %419 = getelementptr inbounds %struct.complex, ptr %31, i32 0, i32 1
  store float %418, ptr %419, align 4, !tbaa !14
  %420 = load i64, ptr %27, align 8, !tbaa !9
  %421 = load i64, ptr %30, align 8, !tbaa !9
  %422 = add nsw i64 %420, %421
  %423 = load i64, ptr %27, align 8, !tbaa !9
  %424 = load i64, ptr %30, align 8, !tbaa !9
  %425 = add nsw i64 %423, %424
  %426 = sub nsw i64 %425, 1
  %427 = load i64, ptr %20, align 8, !tbaa !9
  %428 = mul nsw i64 %426, %427
  %429 = add nsw i64 %422, %428
  store i64 %429, ptr %24, align 8, !tbaa !9
  %430 = load ptr, ptr %14, align 8, !tbaa !5
  %431 = load i64, ptr %24, align 8, !tbaa !9
  %432 = getelementptr inbounds %struct.complex, ptr %430, i64 %431
  %433 = getelementptr inbounds %struct.complex, ptr %432, i32 0, i32 0
  store float 1.000000e+00, ptr %433, align 4, !tbaa !11
  %434 = load ptr, ptr %14, align 8, !tbaa !5
  %435 = load i64, ptr %24, align 8, !tbaa !9
  %436 = getelementptr inbounds %struct.complex, ptr %434, i64 %435
  %437 = getelementptr inbounds %struct.complex, ptr %436, i32 0, i32 1
  store float 0.000000e+00, ptr %437, align 4, !tbaa !14
  %438 = load ptr, ptr %13, align 8, !tbaa !5
  %439 = load i64, ptr %438, align 8, !tbaa !9
  %440 = load i64, ptr %27, align 8, !tbaa !9
  %441 = sub nsw i64 %439, %440
  %442 = load i64, ptr %30, align 8, !tbaa !9
  %443 = sub nsw i64 %441, %442
  %444 = add nsw i64 %443, 1
  store i64 %444, ptr %24, align 8, !tbaa !9
  %445 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 0
  store float -1.000000e+00, ptr %445, align 4, !tbaa !11
  %446 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 1
  store float -0.000000e+00, ptr %446, align 4, !tbaa !14
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = load ptr, ptr %17, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.complex, ptr %448, i64 1
  %450 = load ptr, ptr %14, align 8, !tbaa !5
  %451 = load i64, ptr %27, align 8, !tbaa !9
  %452 = load i64, ptr %30, align 8, !tbaa !9
  %453 = add nsw i64 %451, %452
  %454 = load i64, ptr %27, align 8, !tbaa !9
  %455 = load i64, ptr %20, align 8, !tbaa !9
  %456 = mul nsw i64 %454, %455
  %457 = add nsw i64 %453, %456
  %458 = getelementptr inbounds %struct.complex, ptr %450, i64 %457
  %459 = load ptr, ptr %15, align 8, !tbaa !5
  %460 = load ptr, ptr %14, align 8, !tbaa !5
  %461 = load i64, ptr %27, align 8, !tbaa !9
  %462 = load i64, ptr %30, align 8, !tbaa !9
  %463 = add nsw i64 %461, %462
  %464 = load i64, ptr %20, align 8, !tbaa !9
  %465 = mul nsw i64 %463, %464
  %466 = add nsw i64 %465, 1
  %467 = getelementptr inbounds %struct.complex, ptr %460, i64 %466
  %468 = load ptr, ptr %15, align 8, !tbaa !5
  %469 = call i32 @f2c_cgemm(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %447, ptr noundef %24, ptr noundef %30, ptr noundef %26, ptr noundef %449, ptr noundef %38, ptr noundef %458, ptr noundef %459, ptr noundef @c_b2, ptr noundef %467, ptr noundef %468)
  %470 = load i64, ptr %27, align 8, !tbaa !9
  %471 = load i64, ptr %30, align 8, !tbaa !9
  %472 = add nsw i64 %470, %471
  %473 = load i64, ptr %27, align 8, !tbaa !9
  %474 = load i64, ptr %30, align 8, !tbaa !9
  %475 = add nsw i64 %473, %474
  %476 = sub nsw i64 %475, 1
  %477 = load i64, ptr %20, align 8, !tbaa !9
  %478 = mul nsw i64 %476, %477
  %479 = add nsw i64 %472, %478
  store i64 %479, ptr %24, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.complex, ptr %31, i32 0, i32 0
  %481 = load float, ptr %480, align 4, !tbaa !11
  %482 = load ptr, ptr %14, align 8, !tbaa !5
  %483 = load i64, ptr %24, align 8, !tbaa !9
  %484 = getelementptr inbounds %struct.complex, ptr %482, i64 %483
  %485 = getelementptr inbounds %struct.complex, ptr %484, i32 0, i32 0
  store float %481, ptr %485, align 4, !tbaa !11
  %486 = getelementptr inbounds %struct.complex, ptr %31, i32 0, i32 1
  %487 = load float, ptr %486, align 4, !tbaa !14
  %488 = load ptr, ptr %14, align 8, !tbaa !5
  %489 = load i64, ptr %24, align 8, !tbaa !9
  %490 = getelementptr inbounds %struct.complex, ptr %488, i64 %489
  %491 = getelementptr inbounds %struct.complex, ptr %490, i32 0, i32 1
  store float %487, ptr %491, align 4, !tbaa !14
  %492 = load i64, ptr %30, align 8, !tbaa !9
  %493 = sub nsw i64 %492, 1
  store i64 %493, ptr %24, align 8, !tbaa !9
  %494 = load ptr, ptr %14, align 8, !tbaa !5
  %495 = load i64, ptr %27, align 8, !tbaa !9
  %496 = add nsw i64 %495, 1
  %497 = load i64, ptr %27, align 8, !tbaa !9
  %498 = load i64, ptr %20, align 8, !tbaa !9
  %499 = mul nsw i64 %497, %498
  %500 = add nsw i64 %496, %499
  %501 = getelementptr inbounds %struct.complex, ptr %494, i64 %500
  %502 = load ptr, ptr %15, align 8, !tbaa !5
  %503 = load ptr, ptr %17, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.complex, ptr %503, i64 1
  %505 = call i32 @f2c_ctrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @.str.6, ptr noundef %27, ptr noundef %24, ptr noundef @c_b2, ptr noundef %501, ptr noundef %502, ptr noundef %504, ptr noundef %38)
  %506 = load i64, ptr %30, align 8, !tbaa !9
  %507 = sub nsw i64 %506, 2
  store i64 %507, ptr %24, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !9
  br label %508

508:                                              ; preds = %531, %381
  %509 = load i64, ptr %28, align 8, !tbaa !9
  %510 = load i64, ptr %24, align 8, !tbaa !9
  %511 = icmp sle i64 %509, %510
  br i1 %511, label %512, label %534

512:                                              ; preds = %508
  %513 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 0
  store float -1.000000e+00, ptr %513, align 4, !tbaa !11
  %514 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 1
  store float -0.000000e+00, ptr %514, align 4, !tbaa !14
  %515 = load ptr, ptr %17, align 8, !tbaa !5
  %516 = load i64, ptr %38, align 8, !tbaa !9
  %517 = load i64, ptr %28, align 8, !tbaa !9
  %518 = mul nsw i64 %516, %517
  %519 = add nsw i64 %518, 1
  %520 = getelementptr inbounds %struct.complex, ptr %515, i64 %519
  %521 = load ptr, ptr %14, align 8, !tbaa !5
  %522 = load i64, ptr %27, align 8, !tbaa !9
  %523 = load i64, ptr %28, align 8, !tbaa !9
  %524 = add nsw i64 %522, %523
  %525 = add nsw i64 %524, 1
  %526 = load i64, ptr %20, align 8, !tbaa !9
  %527 = mul nsw i64 %525, %526
  %528 = add nsw i64 %527, 1
  %529 = getelementptr inbounds %struct.complex, ptr %521, i64 %528
  %530 = call i32 @f2c_caxpy(ptr noundef %27, ptr noundef %26, ptr noundef %520, ptr noundef @c__1, ptr noundef %529, ptr noundef @c__1)
  br label %531

531:                                              ; preds = %512
  %532 = load i64, ptr %28, align 8, !tbaa !9
  %533 = add nsw i64 %532, 1
  store i64 %533, ptr %28, align 8, !tbaa !9
  br label %508, !llvm.loop !18

534:                                              ; preds = %508
  %535 = load ptr, ptr %13, align 8, !tbaa !5
  %536 = load i64, ptr %535, align 8, !tbaa !9
  %537 = load i64, ptr %27, align 8, !tbaa !9
  %538 = sub nsw i64 %536, %537
  store i64 %538, ptr %24, align 8, !tbaa !9
  %539 = load ptr, ptr %11, align 8, !tbaa !5
  %540 = load i64, ptr %539, align 8, !tbaa !9
  %541 = load i64, ptr %27, align 8, !tbaa !9
  %542 = sub nsw i64 %540, %541
  %543 = load i64, ptr %30, align 8, !tbaa !9
  %544 = sub nsw i64 %542, %543
  %545 = add nsw i64 %544, 1
  store i64 %545, ptr %25, align 8, !tbaa !9
  %546 = load ptr, ptr %14, align 8, !tbaa !5
  %547 = load i64, ptr %27, align 8, !tbaa !9
  %548 = add nsw i64 %547, 1
  %549 = load i64, ptr %27, align 8, !tbaa !9
  %550 = load i64, ptr %20, align 8, !tbaa !9
  %551 = mul nsw i64 %549, %550
  %552 = add nsw i64 %548, %551
  %553 = getelementptr inbounds %struct.complex, ptr %546, i64 %552
  %554 = load ptr, ptr %15, align 8, !tbaa !5
  %555 = getelementptr inbounds [4160 x %struct.complex], ptr %29, i64 0, i64 0
  %556 = load ptr, ptr %14, align 8, !tbaa !5
  %557 = load i64, ptr %27, align 8, !tbaa !9
  %558 = add nsw i64 %557, 1
  %559 = load i64, ptr %27, align 8, !tbaa !9
  %560 = load i64, ptr %30, align 8, !tbaa !9
  %561 = add nsw i64 %559, %560
  %562 = load i64, ptr %20, align 8, !tbaa !9
  %563 = mul nsw i64 %561, %562
  %564 = add nsw i64 %558, %563
  %565 = getelementptr inbounds %struct.complex, ptr %556, i64 %564
  %566 = load ptr, ptr %15, align 8, !tbaa !5
  %567 = load ptr, ptr %17, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.complex, ptr %567, i64 1
  %569 = call i32 @clarfb_(ptr noundef @.str.7, ptr noundef @.str.3, ptr noundef @.str.8, ptr noundef @.str.9, ptr noundef %24, ptr noundef %25, ptr noundef %30, ptr noundef %553, ptr noundef %554, ptr noundef %555, ptr noundef @c__65, ptr noundef %565, ptr noundef %566, ptr noundef %568, ptr noundef %38)
  br label %570

570:                                              ; preds = %534
  %571 = load i64, ptr %23, align 8, !tbaa !9
  %572 = load i64, ptr %27, align 8, !tbaa !9
  %573 = add nsw i64 %572, %571
  store i64 %573, ptr %27, align 8, !tbaa !9
  br label %352, !llvm.loop !19

574:                                              ; preds = %365
  br label %575

575:                                              ; preds = %574, %340
  %576 = load ptr, ptr %11, align 8, !tbaa !5
  %577 = load ptr, ptr %13, align 8, !tbaa !5
  %578 = load ptr, ptr %14, align 8, !tbaa !5
  %579 = load i64, ptr %21, align 8, !tbaa !9
  %580 = getelementptr inbounds %struct.complex, ptr %578, i64 %579
  %581 = load ptr, ptr %15, align 8, !tbaa !5
  %582 = load ptr, ptr %16, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.complex, ptr %582, i64 1
  %584 = load ptr, ptr %17, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.complex, ptr %584, i64 1
  %586 = call i32 @cgehd2_(ptr noundef %576, ptr noundef %27, ptr noundef %577, ptr noundef %580, ptr noundef %581, ptr noundef %583, ptr noundef %585, ptr noundef %37)
  %587 = load i64, ptr %35, align 8, !tbaa !9
  %588 = sitofp i64 %587 to float
  %589 = load ptr, ptr %17, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.complex, ptr %589, i64 1
  %591 = getelementptr inbounds %struct.complex, ptr %590, i32 0, i32 0
  store float %588, ptr %591, align 4, !tbaa !11
  %592 = load ptr, ptr %17, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.complex, ptr %592, i64 1
  %594 = getelementptr inbounds %struct.complex, ptr %593, i32 0, i32 1
  store float 0.000000e+00, ptr %594, align 4, !tbaa !14
  store i32 0, ptr %10, align 4
  store i32 1, ptr %41, align 4
  br label %595

595:                                              ; preds = %575, %245, %183, %175
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 33280, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  %596 = load i32, ptr %10, align 4
  ret i32 %596
}

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

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

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

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

declare i32 @f2c_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 i32 @f2c_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 i32 @f2c_caxpy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @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 = !{!"long", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}


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

%struct.complex = type { float, float }

@c__1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c__65 = external hidden global i64, align 8
@.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 noundef i32 @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 i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca %struct.complex, align 8
  %14 = alloca i64, align 8
  %15 = alloca [4160 x %struct.complex], align 16
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 33280, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  %19 = load i64, ptr %4, align 8, !tbaa !5
  %20 = xor i64 %19, -1
  %21 = getelementptr inbounds %struct.complex, ptr %3, i64 %20
  %22 = getelementptr inbounds i8, ptr %5, i64 -8
  store i64 0, ptr %8, align 8, !tbaa !5
  %23 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull @c_n1) #5
  %24 = tail call i64 @llvm.smin.i64(i64 %23, i64 64)
  %25 = load i64, ptr %0, align 8, !tbaa !5
  %26 = mul nsw i64 %25, %24
  %27 = sitofp i64 %26 to float
  store float %27, ptr %6, align 4, !tbaa !9
  %28 = getelementptr inbounds i8, ptr %6, i64 4
  store float 0.000000e+00, ptr %28, align 4, !tbaa !12
  %29 = load i64, ptr %7, align 8, !tbaa !5
  %30 = icmp eq i64 %29, -1
  %31 = icmp slt i64 %25, 0
  br i1 %31, label %.thread.sink.split, label %32

32:                                               ; preds = %9
  %33 = load i64, ptr %1, align 8, !tbaa !5
  %34 = icmp slt i64 %33, 1
  br i1 %34, label %.thread.sink.split, label %35

35:                                               ; preds = %32
  %spec.select = tail call i64 @llvm.umax.i64(i64 %25, i64 1)
  %36 = icmp ugt i64 %33, %spec.select
  br i1 %36, label %.thread.sink.split, label %37

37:                                               ; preds = %35
  %38 = load i64, ptr %2, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %33, i64 %25)
  %39 = icmp slt i64 %38, %.
  %40 = icmp ugt i64 %38, %25
  %or.cond202 = or i1 %39, %40
  br i1 %or.cond202, label %.thread.sink.split, label %41

41:                                               ; preds = %37
  %42 = load i64, ptr %4, align 8, !tbaa !5
  %43 = icmp slt i64 %42, %spec.select
  br i1 %43, label %.thread.sink.split, label %44

44:                                               ; preds = %41
  %45 = icmp sge i64 %29, %spec.select
  %or.cond = or i1 %45, %30
  br i1 %or.cond, label %46, label %.thread.sink.split

46:                                               ; preds = %44
  %.pr = load i64, ptr %8, align 8, !tbaa !5
  %.not182 = icmp eq i64 %.pr, 0
  br i1 %.not182, label %50, label %.thread

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

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

50:                                               ; preds = %46
  br i1 %30, label %151, label %51

51:                                               ; preds = %50
  %.not183.not205.not = icmp eq i64 %33, 1
  br i1 %.not183.not205.not, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %51
  %52 = shl i64 %33, 3
  %53 = add i64 %52, -8
  tail call void @llvm.memset.p0.i64(ptr align 4 %5, i8 0, i64 %53, i1 false), !tbaa !13
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %51
  store i64 %33, ptr %14, align 8, !tbaa !5
  %54 = tail call i64 @llvm.umax.i64(i64 %38, i64 1)
  %.not185.not207 = icmp ult i64 %54, %25
  br i1 %.not185.not207, label %.lr.ph210.preheader, label %._crit_edge211

.lr.ph210.preheader:                              ; preds = %._crit_edge
  %55 = shl i64 %54, 3
  %56 = getelementptr i8, ptr %5, i64 %55
  %scevgep = getelementptr i8, ptr %56, i64 -8
  %57 = sub nsw i64 %25, %54
  %58 = shl i64 %57, 3
  tail call void @llvm.memset.p0.i64(ptr align 4 %scevgep, i8 0, i64 %58, i1 false), !tbaa !13
  br label %._crit_edge211

._crit_edge211:                                   ; preds = %.lr.ph210.preheader, %._crit_edge
  %59 = sub nsw i64 %38, %33
  %60 = icmp slt i64 %59, 1
  br i1 %60, label %61, label %62

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

62:                                               ; preds = %._crit_edge211
  %63 = tail call i64 @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) #5
  %64 = tail call i64 @llvm.smin.i64(i64 %63, i64 64)
  %65 = icmp slt i64 %63, 2
  %.not187 = icmp sgt i64 %64, %59
  %or.cond199 = or i1 %65, %.not187
  br i1 %or.cond199, label %._crit_edge227, label %66

._crit_edge227:                                   ; preds = %62
  %.pre = load i64, ptr %0, align 8, !tbaa !5
  br label %81

66:                                               ; preds = %62
  %67 = tail call i64 @ilaenv_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #5
  %68 = tail call i64 @llvm.smax.i64(i64 %64, i64 %67)
  %.not189 = icmp sgt i64 %67, %59
  %.pre228 = load i64, ptr %0, align 8, !tbaa !5
  br i1 %.not189, label %81, label %69

69:                                               ; preds = %66
  %70 = mul nsw i64 %.pre228, %64
  %71 = load i64, ptr %7, align 8, !tbaa !5
  %72 = icmp slt i64 %71, %70
  br i1 %72, label %73, label %81

73:                                               ; preds = %69
  %74 = tail call i64 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #5
  %75 = tail call i64 @llvm.smax.i64(i64 %74, i64 2)
  %76 = load i64, ptr %7, align 8, !tbaa !5
  %77 = load i64, ptr %0, align 8, !tbaa !5
  %78 = mul nsw i64 %77, %75
  %.not191 = icmp slt i64 %76, %78
  br i1 %.not191, label %.thread230, label %79

.thread230:                                       ; preds = %73
  store i64 %77, ptr %18, align 8, !tbaa !5
  br label %84

79:                                               ; preds = %73
  %80 = sdiv i64 %76, %77
  br label %81

81:                                               ; preds = %._crit_edge227, %66, %79, %69
  %82 = phi i64 [ %77, %79 ], [ %.pre228, %69 ], [ %.pre228, %66 ], [ %.pre, %._crit_edge227 ]
  %.0164 = phi i64 [ %80, %79 ], [ %64, %69 ], [ %64, %66 ], [ %64, %._crit_edge227 ]
  %.0163 = phi i64 [ %68, %79 ], [ %68, %69 ], [ %68, %66 ], [ undef, %._crit_edge227 ]
  %.0162 = phi i64 [ %70, %79 ], [ %70, %69 ], [ 1, %66 ], [ 1, %._crit_edge227 ]
  %.0161 = phi i64 [ %75, %79 ], [ 2, %69 ], [ 2, %66 ], [ 2, %._crit_edge227 ]
  store i64 %82, ptr %18, align 8, !tbaa !5
  %83 = icmp slt i64 %.0164, %.0161
  %.not192.not = icmp sgt i64 %.0164, %59
  %or.cond200 = or i1 %.not192.not, %83
  br i1 %or.cond200, label %84, label %86

84:                                               ; preds = %.thread230, %81
  %.0162238 = phi i64 [ %70, %.thread230 ], [ %.0162, %81 ]
  %85 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %85, ptr %14, align 8, !tbaa !5
  br label %.loopexit

86:                                               ; preds = %81
  %87 = load i64, ptr %2, align 8, !tbaa !5
  %88 = xor i64 %.0163, -1
  %89 = add i64 %87, %88
  %90 = load i64, ptr %1, align 8, !tbaa !5
  %invariant.gep218 = getelementptr i8, ptr %21, i64 8
  store i64 %90, ptr %14, align 8, !tbaa !5
  %.not239 = icmp sgt i64 %90, %89
  br i1 %.not239, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %86, %._crit_edge217
  %storemerge193240 = phi i64 [ %148, %._crit_edge217 ], [ %90, %86 ]
  store i64 %.0164, ptr %11, align 8, !tbaa !5
  %91 = load i64, ptr %2, align 8, !tbaa !5
  %92 = sub nsw i64 %91, %storemerge193240
  store i64 %92, ptr %12, align 8, !tbaa !5
  %93 = call i64 @llvm.smin.i64(i64 %.0164, i64 %92)
  store i64 %93, ptr %16, align 8, !tbaa !5
  %94 = mul nsw i64 %storemerge193240, %19
  %gep219 = getelementptr %struct.complex, ptr %invariant.gep218, i64 %94
  %95 = getelementptr inbounds %struct.complex, ptr %22, i64 %storemerge193240
  %96 = call i32 @clahr2_(ptr noundef nonnull %2, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef %gep219, ptr noundef nonnull %4, ptr noundef nonnull %95, ptr noundef nonnull %15, ptr noundef nonnull @c__65, ptr noundef nonnull %6, ptr noundef nonnull %18) #5
  %97 = load i64, ptr %14, align 8, !tbaa !5
  %98 = load i64, ptr %16, align 8, !tbaa !5
  %99 = add nsw i64 %98, %97
  %100 = add nsw i64 %99, -1
  %101 = mul nsw i64 %100, %19
  %102 = getelementptr %struct.complex, ptr %21, i64 %101
  %103 = getelementptr %struct.complex, ptr %102, i64 %99
  %104 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %104, %99
  %105 = add i64 %reass.sub, 1
  store i64 %105, ptr %11, align 8, !tbaa !5
  store <2 x float> <float -1.000000e+00, float -0.000000e+00>, ptr %13, align 8, !tbaa !13
  %106 = mul nsw i64 %97, %19
  %107 = getelementptr %struct.complex, ptr %21, i64 %99
  %108 = getelementptr %struct.complex, ptr %107, i64 %106
  %109 = mul nsw i64 %99, %19
  %gep221 = getelementptr %struct.complex, ptr %invariant.gep218, i64 %109
  %110 = load <2 x float>, ptr %103, align 4, !tbaa !13
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %103, align 4, !tbaa !13
  %111 = call i32 @f2c_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 %18, ptr noundef %108, ptr noundef nonnull %4, ptr noundef nonnull @c_b2, ptr noundef %gep221, ptr noundef nonnull %4) #5
  %112 = load i64, ptr %14, align 8, !tbaa !5
  %113 = load i64, ptr %16, align 8, !tbaa !5
  %114 = add nsw i64 %113, %112
  %115 = add nsw i64 %114, -1
  %116 = mul nsw i64 %115, %19
  %117 = getelementptr %struct.complex, ptr %21, i64 %116
  %118 = getelementptr %struct.complex, ptr %117, i64 %114
  store <2 x float> %110, ptr %118, align 4, !tbaa !13
  %119 = add nsw i64 %113, -1
  store i64 %119, ptr %11, align 8, !tbaa !5
  %120 = mul nsw i64 %112, %19
  %gep223 = getelementptr %struct.complex, ptr %invariant.gep218, i64 %112
  %121 = getelementptr %struct.complex, ptr %gep223, i64 %120
  %122 = call i32 @f2c_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 %121, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %18) #5
  %123 = load i64, ptr %16, align 8, !tbaa !5
  %124 = add nsw i64 %123, -2
  store i64 %124, ptr %11, align 8, !tbaa !5
  %.not195213 = icmp slt i64 %123, 2
  br i1 %.not195213, label %._crit_edge217, label %.lr.ph216

.lr.ph216:                                        ; preds = %.lr.ph, %.lr.ph216
  %.0165214 = phi i64 [ %129, %.lr.ph216 ], [ 0, %.lr.ph ]
  store <2 x float> <float -1.000000e+00, float -0.000000e+00>, ptr %13, align 8, !tbaa !13
  %125 = load i64, ptr %18, align 8, !tbaa !5
  %126 = mul nsw i64 %125, %.0165214
  %127 = getelementptr %struct.complex, ptr %6, i64 %126
  %128 = load i64, ptr %14, align 8, !tbaa !5
  %129 = add nuw i64 %.0165214, 1
  %130 = add i64 %129, %128
  %131 = mul nsw i64 %130, %19
  %gep = getelementptr %struct.complex, ptr %invariant.gep218, i64 %131
  %132 = call i32 @f2c_caxpy(ptr noundef nonnull %14, ptr noundef nonnull %13, ptr noundef %127, ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %133 = load i64, ptr %11, align 8, !tbaa !5
  %.not195.not = icmp slt i64 %.0165214, %133
  br i1 %.not195.not, label %.lr.ph216, label %._crit_edge217.loopexit, !llvm.loop !14

._crit_edge217.loopexit:                          ; preds = %.lr.ph216
  %.pre229 = load i64, ptr %16, align 8, !tbaa !5
  br label %._crit_edge217

._crit_edge217:                                   ; preds = %._crit_edge217.loopexit, %.lr.ph
  %134 = phi i64 [ %.pre229, %._crit_edge217.loopexit ], [ %123, %.lr.ph ]
  %135 = load i64, ptr %2, align 8, !tbaa !5
  %136 = load i64, ptr %14, align 8, !tbaa !5
  %137 = sub nsw i64 %135, %136
  store i64 %137, ptr %11, align 8, !tbaa !5
  %138 = load i64, ptr %0, align 8, !tbaa !5
  %139 = add i64 %134, %136
  %140 = add i64 %138, 1
  %141 = sub i64 %140, %139
  store i64 %141, ptr %12, align 8, !tbaa !5
  %142 = mul nsw i64 %136, %19
  %gep225 = getelementptr %struct.complex, ptr %invariant.gep218, i64 %136
  %143 = getelementptr %struct.complex, ptr %gep225, i64 %142
  %144 = mul nsw i64 %139, %19
  %145 = getelementptr %struct.complex, ptr %gep225, i64 %144
  %146 = call i32 @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 %143, ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull @c__65, ptr noundef %145, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %18) #5
  %147 = load i64, ptr %14, align 8, !tbaa !5
  %148 = add nsw i64 %147, %.0164
  store i64 %148, ptr %14, align 8, !tbaa !5
  %.not = icmp sgt i64 %148, %89
  br i1 %.not, label %.loopexit, label %.lr.ph, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge217, %86, %84
  %.0162237 = phi i64 [ %.0162238, %84 ], [ %.0162, %86 ], [ %.0162, %._crit_edge217 ]
  %149 = call i32 @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 %17) #5
  %150 = sitofp i64 %.0162237 to float
  store float %150, ptr %6, align 4, !tbaa !9
  store float 0.000000e+00, ptr %28, align 4, !tbaa !12
  br label %151

151:                                              ; preds = %50, %.loopexit, %61, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 33280, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  ret i32 0
}

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

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

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

declare i32 @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 i32 @f2c_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 i32 @f2c_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 i32 @f2c_caxpy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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


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