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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [9 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @chpgvx_(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, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20) #0 {
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca [1 x i8], align 1
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  store ptr %0, ptr %22, align 8, !tbaa !5
  store ptr %1, ptr %23, align 8, !tbaa !5
  store ptr %2, ptr %24, align 8, !tbaa !5
  store ptr %3, ptr %25, align 8, !tbaa !5
  store ptr %4, ptr %26, align 8, !tbaa !5
  store ptr %5, ptr %27, align 8, !tbaa !5
  store ptr %6, ptr %28, align 8, !tbaa !5
  store ptr %7, ptr %29, align 8, !tbaa !5
  store ptr %8, ptr %30, align 8, !tbaa !5
  store ptr %9, ptr %31, align 8, !tbaa !5
  store ptr %10, ptr %32, align 8, !tbaa !5
  store ptr %11, ptr %33, align 8, !tbaa !5
  store ptr %12, ptr %34, align 8, !tbaa !5
  store ptr %13, ptr %35, align 8, !tbaa !5
  store ptr %14, ptr %36, align 8, !tbaa !5
  store ptr %15, ptr %37, align 8, !tbaa !5
  store ptr %16, ptr %38, align 8, !tbaa !5
  store ptr %17, ptr %39, align 8, !tbaa !5
  store ptr %18, ptr %40, align 8, !tbaa !5
  store ptr %19, ptr %41, align 8, !tbaa !5
  store ptr %20, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #3
  %54 = load ptr, ptr %27, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.complex, ptr %54, i32 -1
  store ptr %55, ptr %27, align 8, !tbaa !5
  %56 = load ptr, ptr %28, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.complex, ptr %56, i32 -1
  store ptr %57, ptr %28, align 8, !tbaa !5
  %58 = load ptr, ptr %35, align 8, !tbaa !5
  %59 = getelementptr inbounds float, ptr %58, i32 -1
  store ptr %59, ptr %35, align 8, !tbaa !5
  %60 = load ptr, ptr %37, align 8, !tbaa !5
  %61 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %61, ptr %43, align 4, !tbaa !9
  %62 = load i32, ptr %43, align 4, !tbaa !9
  %63 = mul nsw i32 %62, 1
  %64 = add nsw i32 1, %63
  store i32 %64, ptr %44, align 4, !tbaa !9
  %65 = load i32, ptr %44, align 4, !tbaa !9
  %66 = load ptr, ptr %36, align 8, !tbaa !5
  %67 = sext i32 %65 to i64
  %68 = sub i64 0, %67
  %69 = getelementptr inbounds %struct.complex, ptr %66, i64 %68
  store ptr %69, ptr %36, align 8, !tbaa !5
  %70 = load ptr, ptr %38, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.complex, ptr %70, i32 -1
  store ptr %71, ptr %38, align 8, !tbaa !5
  %72 = load ptr, ptr %39, align 8, !tbaa !5
  %73 = getelementptr inbounds float, ptr %72, i32 -1
  store ptr %73, ptr %39, align 8, !tbaa !5
  %74 = load ptr, ptr %40, align 8, !tbaa !5
  %75 = getelementptr inbounds i32, ptr %74, i32 -1
  store ptr %75, ptr %40, align 8, !tbaa !5
  %76 = load ptr, ptr %41, align 8, !tbaa !5
  %77 = getelementptr inbounds i32, ptr %76, i32 -1
  store ptr %77, ptr %41, align 8, !tbaa !5
  %78 = load ptr, ptr %23, align 8, !tbaa !5
  %79 = call i32 @lsame_(ptr noundef %78, ptr noundef @.str)
  store i32 %79, ptr %49, align 4, !tbaa !9
  %80 = load ptr, ptr %25, align 8, !tbaa !5
  %81 = call i32 @lsame_(ptr noundef %80, ptr noundef @.str.1)
  store i32 %81, ptr %48, align 4, !tbaa !9
  %82 = load ptr, ptr %24, align 8, !tbaa !5
  %83 = call i32 @lsame_(ptr noundef %82, ptr noundef @.str.2)
  store i32 %83, ptr %50, align 4, !tbaa !9
  %84 = load ptr, ptr %24, align 8, !tbaa !5
  %85 = call i32 @lsame_(ptr noundef %84, ptr noundef @.str)
  store i32 %85, ptr %52, align 4, !tbaa !9
  %86 = load ptr, ptr %24, align 8, !tbaa !5
  %87 = call i32 @lsame_(ptr noundef %86, ptr noundef @.str.3)
  store i32 %87, ptr %51, align 4, !tbaa !9
  %88 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %88, align 4, !tbaa !9
  %89 = load ptr, ptr %22, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  %91 = icmp slt i32 %90, 1
  br i1 %91, label %96, label %92

92:                                               ; preds = %21
  %93 = load ptr, ptr %22, align 8, !tbaa !5
  %94 = load i32, ptr %93, align 4, !tbaa !9
  %95 = icmp sgt i32 %94, 3
  br i1 %95, label %96, label %98

96:                                               ; preds = %92, %21
  %97 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %97, align 4, !tbaa !9
  br label %191

98:                                               ; preds = %92
  %99 = load i32, ptr %49, align 4, !tbaa !9
  %100 = icmp ne i32 %99, 0
  br i1 %100, label %107, label %101

101:                                              ; preds = %98
  %102 = load ptr, ptr %23, align 8, !tbaa !5
  %103 = call i32 @lsame_(ptr noundef %102, ptr noundef @.str.4)
  %104 = icmp ne i32 %103, 0
  br i1 %104, label %107, label %105

105:                                              ; preds = %101
  %106 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %106, align 4, !tbaa !9
  br label %190

107:                                              ; preds = %101, %98
  %108 = load i32, ptr %50, align 4, !tbaa !9
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %118, label %110

110:                                              ; preds = %107
  %111 = load i32, ptr %52, align 4, !tbaa !9
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %118, label %113

113:                                              ; preds = %110
  %114 = load i32, ptr %51, align 4, !tbaa !9
  %115 = icmp ne i32 %114, 0
  br i1 %115, label %118, label %116

116:                                              ; preds = %113
  %117 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %117, align 4, !tbaa !9
  br label %189

118:                                              ; preds = %113, %110, %107
  %119 = load i32, ptr %48, align 4, !tbaa !9
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %127, label %121

121:                                              ; preds = %118
  %122 = load ptr, ptr %25, align 8, !tbaa !5
  %123 = call i32 @lsame_(ptr noundef %122, ptr noundef @.str.5)
  %124 = icmp ne i32 %123, 0
  br i1 %124, label %127, label %125

125:                                              ; preds = %121
  %126 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -4, ptr %126, align 4, !tbaa !9
  br label %188

127:                                              ; preds = %121, %118
  %128 = load ptr, ptr %26, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = icmp slt i32 %129, 0
  br i1 %130, label %131, label %133

131:                                              ; preds = %127
  %132 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -5, ptr %132, align 4, !tbaa !9
  br label %187

133:                                              ; preds = %127
  %134 = load i32, ptr %52, align 4, !tbaa !9
  %135 = icmp ne i32 %134, 0
  br i1 %135, label %136, label %149

136:                                              ; preds = %133
  %137 = load ptr, ptr %26, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  %139 = icmp sgt i32 %138, 0
  br i1 %139, label %140, label %148

140:                                              ; preds = %136
  %141 = load ptr, ptr %30, align 8, !tbaa !5
  %142 = load float, ptr %141, align 4, !tbaa !11
  %143 = load ptr, ptr %29, align 8, !tbaa !5
  %144 = load float, ptr %143, align 4, !tbaa !11
  %145 = fcmp ole float %142, %144
  br i1 %145, label %146, label %148

146:                                              ; preds = %140
  %147 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %147, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %146, %140, %136
  br label %186

149:                                              ; preds = %133
  %150 = load i32, ptr %51, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %185

152:                                              ; preds = %149
  %153 = load ptr, ptr %31, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = icmp slt i32 %154, 1
  br i1 %155, label %156, label %158

156:                                              ; preds = %152
  %157 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -10, ptr %157, align 4, !tbaa !9
  br label %184

158:                                              ; preds = %152
  %159 = load ptr, ptr %32, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = load ptr, ptr %26, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = load ptr, ptr %31, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = icmp sle i32 %162, %164
  br i1 %165, label %166, label %169

166:                                              ; preds = %158
  %167 = load ptr, ptr %26, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  br label %172

169:                                              ; preds = %158
  %170 = load ptr, ptr %31, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  br label %172

172:                                              ; preds = %169, %166
  %173 = phi i32 [ %168, %166 ], [ %171, %169 ]
  %174 = icmp slt i32 %160, %173
  br i1 %174, label %181, label %175

175:                                              ; preds = %172
  %176 = load ptr, ptr %32, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = load ptr, ptr %26, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = icmp sgt i32 %177, %179
  br i1 %180, label %181, label %183

181:                                              ; preds = %175, %172
  %182 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -11, ptr %182, align 4, !tbaa !9
  br label %183

183:                                              ; preds = %181, %175
  br label %184

184:                                              ; preds = %183, %156
  br label %185

185:                                              ; preds = %184, %149
  br label %186

186:                                              ; preds = %185, %148
  br label %187

187:                                              ; preds = %186, %131
  br label %188

188:                                              ; preds = %187, %125
  br label %189

189:                                              ; preds = %188, %116
  br label %190

190:                                              ; preds = %189, %105
  br label %191

191:                                              ; preds = %190, %96
  %192 = load ptr, ptr %42, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = icmp eq i32 %193, 0
  br i1 %194, label %195, label %211

195:                                              ; preds = %191
  %196 = load ptr, ptr %37, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = icmp slt i32 %197, 1
  br i1 %198, label %208, label %199

199:                                              ; preds = %195
  %200 = load i32, ptr %49, align 4, !tbaa !9
  %201 = icmp ne i32 %200, 0
  br i1 %201, label %202, label %210

202:                                              ; preds = %199
  %203 = load ptr, ptr %37, align 8, !tbaa !5
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = load ptr, ptr %26, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = icmp slt i32 %204, %206
  br i1 %207, label %208, label %210

208:                                              ; preds = %202, %195
  %209 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -16, ptr %209, align 4, !tbaa !9
  br label %210

210:                                              ; preds = %208, %202, %199
  br label %211

211:                                              ; preds = %210, %191
  %212 = load ptr, ptr %42, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %220

215:                                              ; preds = %211
  %216 = load ptr, ptr %42, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = sub nsw i32 0, %217
  store i32 %218, ptr %45, align 4, !tbaa !9
  %219 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %45, i32 noundef 6)
  store i32 1, ptr %53, align 4
  br label %366

220:                                              ; preds = %211
  %221 = load ptr, ptr %26, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = icmp eq i32 %222, 0
  br i1 %223, label %224, label %225

224:                                              ; preds = %220
  store i32 1, ptr %53, align 4
  br label %366

225:                                              ; preds = %220
  %226 = load ptr, ptr %25, align 8, !tbaa !5
  %227 = load ptr, ptr %26, align 8, !tbaa !5
  %228 = load ptr, ptr %28, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.complex, ptr %228, i64 1
  %230 = load ptr, ptr %42, align 8, !tbaa !5
  call void @cpptrf_(ptr noundef %226, ptr noundef %227, ptr noundef %229, ptr noundef %230)
  %231 = load ptr, ptr %42, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = icmp ne i32 %232, 0
  br i1 %233, label %234, label %241

234:                                              ; preds = %225
  %235 = load ptr, ptr %26, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = load ptr, ptr %42, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = add nsw i32 %236, %238
  %240 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %239, ptr %240, align 4, !tbaa !9
  store i32 1, ptr %53, align 4
  br label %366

241:                                              ; preds = %225
  %242 = load ptr, ptr %22, align 8, !tbaa !5
  %243 = load ptr, ptr %25, align 8, !tbaa !5
  %244 = load ptr, ptr %26, align 8, !tbaa !5
  %245 = load ptr, ptr %27, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.complex, ptr %245, i64 1
  %247 = load ptr, ptr %28, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.complex, ptr %247, i64 1
  %249 = load ptr, ptr %42, align 8, !tbaa !5
  call void @chpgst_(ptr noundef %242, ptr noundef %243, ptr noundef %244, ptr noundef %246, ptr noundef %248, ptr noundef %249)
  %250 = load ptr, ptr %23, align 8, !tbaa !5
  %251 = load ptr, ptr %24, align 8, !tbaa !5
  %252 = load ptr, ptr %25, align 8, !tbaa !5
  %253 = load ptr, ptr %26, align 8, !tbaa !5
  %254 = load ptr, ptr %27, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.complex, ptr %254, i64 1
  %256 = load ptr, ptr %29, align 8, !tbaa !5
  %257 = load ptr, ptr %30, align 8, !tbaa !5
  %258 = load ptr, ptr %31, align 8, !tbaa !5
  %259 = load ptr, ptr %32, align 8, !tbaa !5
  %260 = load ptr, ptr %33, align 8, !tbaa !5
  %261 = load ptr, ptr %34, align 8, !tbaa !5
  %262 = load ptr, ptr %35, align 8, !tbaa !5
  %263 = getelementptr inbounds float, ptr %262, i64 1
  %264 = load ptr, ptr %36, align 8, !tbaa !5
  %265 = load i32, ptr %44, align 4, !tbaa !9
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds %struct.complex, ptr %264, i64 %266
  %268 = load ptr, ptr %37, align 8, !tbaa !5
  %269 = load ptr, ptr %38, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.complex, ptr %269, i64 1
  %271 = load ptr, ptr %39, align 8, !tbaa !5
  %272 = getelementptr inbounds float, ptr %271, i64 1
  %273 = load ptr, ptr %40, align 8, !tbaa !5
  %274 = getelementptr inbounds i32, ptr %273, i64 1
  %275 = load ptr, ptr %41, align 8, !tbaa !5
  %276 = getelementptr inbounds i32, ptr %275, i64 1
  %277 = load ptr, ptr %42, align 8, !tbaa !5
  call void @chpevx_(ptr noundef %250, ptr noundef %251, ptr noundef %252, ptr noundef %253, ptr noundef %255, ptr noundef %256, ptr noundef %257, ptr noundef %258, ptr noundef %259, ptr noundef %260, ptr noundef %261, ptr noundef %263, ptr noundef %267, ptr noundef %268, ptr noundef %270, ptr noundef %272, ptr noundef %274, ptr noundef %276, ptr noundef %277)
  %278 = load i32, ptr %49, align 4, !tbaa !9
  %279 = icmp ne i32 %278, 0
  br i1 %279, label %280, label %365

280:                                              ; preds = %241
  %281 = load ptr, ptr %42, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = icmp sgt i32 %282, 0
  br i1 %283, label %284, label %289

284:                                              ; preds = %280
  %285 = load ptr, ptr %42, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = sub nsw i32 %286, 1
  %288 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %287, ptr %288, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %284, %280
  %290 = load ptr, ptr %22, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = icmp eq i32 %291, 1
  br i1 %292, label %297, label %293

293:                                              ; preds = %289
  %294 = load ptr, ptr %22, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  %296 = icmp eq i32 %295, 2
  br i1 %296, label %297, label %328

297:                                              ; preds = %293, %289
  %298 = load i32, ptr %48, align 4, !tbaa !9
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %302

300:                                              ; preds = %297
  %301 = getelementptr inbounds [1 x i8], ptr %47, i64 0, i64 0
  store i8 78, ptr %301, align 1, !tbaa !13
  br label %304

302:                                              ; preds = %297
  %303 = getelementptr inbounds [1 x i8], ptr %47, i64 0, i64 0
  store i8 67, ptr %303, align 1, !tbaa !13
  br label %304

304:                                              ; preds = %302, %300
  %305 = load ptr, ptr %34, align 8, !tbaa !5
  %306 = load i32, ptr %305, align 4, !tbaa !9
  store i32 %306, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %307

307:                                              ; preds = %324, %304
  %308 = load i32, ptr %46, align 4, !tbaa !9
  %309 = load i32, ptr %45, align 4, !tbaa !9
  %310 = icmp sle i32 %308, %309
  br i1 %310, label %311, label %327

311:                                              ; preds = %307
  %312 = load ptr, ptr %25, align 8, !tbaa !5
  %313 = getelementptr inbounds [1 x i8], ptr %47, i64 0, i64 0
  %314 = load ptr, ptr %26, align 8, !tbaa !5
  %315 = load ptr, ptr %28, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.complex, ptr %315, i64 1
  %317 = load ptr, ptr %36, align 8, !tbaa !5
  %318 = load i32, ptr %46, align 4, !tbaa !9
  %319 = load i32, ptr %43, align 4, !tbaa !9
  %320 = mul nsw i32 %318, %319
  %321 = add nsw i32 %320, 1
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds %struct.complex, ptr %317, i64 %322
  call void @ctpsv_(ptr noundef %312, ptr noundef %313, ptr noundef @.str.7, ptr noundef %314, ptr noundef %316, ptr noundef %323, ptr noundef @c__1)
  br label %324

324:                                              ; preds = %311
  %325 = load i32, ptr %46, align 4, !tbaa !9
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %46, align 4, !tbaa !9
  br label %307, !llvm.loop !14

327:                                              ; preds = %307
  br label %364

328:                                              ; preds = %293
  %329 = load ptr, ptr %22, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = icmp eq i32 %330, 3
  br i1 %331, label %332, label %363

332:                                              ; preds = %328
  %333 = load i32, ptr %48, align 4, !tbaa !9
  %334 = icmp ne i32 %333, 0
  br i1 %334, label %335, label %337

335:                                              ; preds = %332
  %336 = getelementptr inbounds [1 x i8], ptr %47, i64 0, i64 0
  store i8 67, ptr %336, align 1, !tbaa !13
  br label %339

337:                                              ; preds = %332
  %338 = getelementptr inbounds [1 x i8], ptr %47, i64 0, i64 0
  store i8 78, ptr %338, align 1, !tbaa !13
  br label %339

339:                                              ; preds = %337, %335
  %340 = load ptr, ptr %34, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  store i32 %341, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %359, %339
  %343 = load i32, ptr %46, align 4, !tbaa !9
  %344 = load i32, ptr %45, align 4, !tbaa !9
  %345 = icmp sle i32 %343, %344
  br i1 %345, label %346, label %362

346:                                              ; preds = %342
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = getelementptr inbounds [1 x i8], ptr %47, i64 0, i64 0
  %349 = load ptr, ptr %26, align 8, !tbaa !5
  %350 = load ptr, ptr %28, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.complex, ptr %350, i64 1
  %352 = load ptr, ptr %36, align 8, !tbaa !5
  %353 = load i32, ptr %46, align 4, !tbaa !9
  %354 = load i32, ptr %43, align 4, !tbaa !9
  %355 = mul nsw i32 %353, %354
  %356 = add nsw i32 %355, 1
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds %struct.complex, ptr %352, i64 %357
  call void @ctpmv_(ptr noundef %347, ptr noundef %348, ptr noundef @.str.7, ptr noundef %349, ptr noundef %351, ptr noundef %358, ptr noundef @c__1)
  br label %359

359:                                              ; preds = %346
  %360 = load i32, ptr %46, align 4, !tbaa !9
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr %46, align 4, !tbaa !9
  br label %342, !llvm.loop !16

362:                                              ; preds = %342
  br label %363

363:                                              ; preds = %362, %328
  br label %364

364:                                              ; preds = %363, %327
  br label %365

365:                                              ; preds = %364, %241
  store i32 1, ptr %53, align 4
  br label %366

366:                                              ; preds = %365, %234, %224, %215
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #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 @lsame_(ptr noundef, ptr noundef) #2

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

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

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

declare void @chpevx_(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, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [9 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @chpgvx_(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, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20) local_unnamed_addr #0 {
  %22 = alloca i32, align 4
  %23 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #4
  %24 = load i32, ptr %15, align 4, !tbaa !5
  %narrow = xor i32 %24, -1
  %25 = sext i32 %narrow to i64
  %26 = getelementptr inbounds %struct.complex, ptr %14, i64 %25
  %27 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %28 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #4
  %29 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #4
  %30 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #4
  %31 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #4
  store i32 0, ptr %20, align 4, !tbaa !5
  %32 = load i32, ptr %0, align 4, !tbaa !5
  %33 = add i32 %32, -4
  %or.cond142 = icmp ult i32 %33, -3
  br i1 %or.cond142, label %.thread148.sink.split, label %34

34:                                               ; preds = %21
  %.not = icmp ne i32 %27, 0
  br i1 %.not, label %37, label %35

35:                                               ; preds = %34
  %36 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not128 = icmp eq i32 %36, 0
  br i1 %.not128, label %.thread148.sink.split, label %37

37:                                               ; preds = %35, %34
  %38 = icmp ne i32 %29, 0
  %39 = icmp ne i32 %30, 0
  %or.cond = select i1 %38, i1 true, i1 %39
  %40 = icmp ne i32 %31, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %40
  br i1 %or.cond3, label %41, label %.thread148.sink.split

41:                                               ; preds = %37
  %.not129 = icmp eq i32 %28, 0
  br i1 %.not129, label %42, label %44

42:                                               ; preds = %41
  %43 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.5) #4
  %.not130 = icmp eq i32 %43, 0
  br i1 %.not130, label %.thread148.sink.split, label %44

44:                                               ; preds = %42, %41
  %45 = load i32, ptr %4, align 4, !tbaa !5
  %46 = icmp slt i32 %45, 0
  br i1 %46, label %.thread148.sink.split, label %47

47:                                               ; preds = %44
  br i1 %39, label %48, label %53

48:                                               ; preds = %47
  %.not132 = icmp eq i32 %45, 0
  br i1 %.not132, label %61, label %49

49:                                               ; preds = %48
  %50 = load float, ptr %8, align 4, !tbaa !9
  %51 = load float, ptr %7, align 4, !tbaa !9
  %52 = fcmp ugt float %50, %51
  br i1 %52, label %61, label %.thread148.sink.split

53:                                               ; preds = %47
  br i1 %40, label %54, label %61

54:                                               ; preds = %53
  %55 = load i32, ptr %9, align 4, !tbaa !5
  %56 = icmp slt i32 %55, 1
  br i1 %56, label %.thread148.sink.split, label %57

57:                                               ; preds = %54
  %58 = load i32, ptr %10, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %45, i32 %55)
  %59 = icmp slt i32 %58, %.
  %60 = icmp ugt i32 %58, %45
  %or.cond152 = or i1 %59, %60
  br i1 %or.cond152, label %.thread148.sink.split, label %61

61:                                               ; preds = %57, %49, %48, %53
  %.pr = load i32, ptr %20, align 4, !tbaa !5
  %62 = icmp eq i32 %.pr, 0
  br i1 %62, label %63, label %.thread148

63:                                               ; preds = %61
  %64 = load i32, ptr %15, align 4, !tbaa !5
  %65 = icmp slt i32 %64, 1
  %66 = icmp ult i32 %64, %45
  %or.cond167 = and i1 %.not, %66
  %or.cond169 = or i1 %65, %or.cond167
  br i1 %or.cond169, label %.thread148.sink.split, label %.thread

.thread148.sink.split:                            ; preds = %63, %57, %54, %49, %44, %42, %37, %35, %21
  %.sink = phi i32 [ -1, %21 ], [ -2, %35 ], [ -3, %37 ], [ -4, %42 ], [ -5, %44 ], [ -9, %49 ], [ -10, %54 ], [ -11, %57 ], [ -16, %63 ]
  store i32 %.sink, ptr %20, align 4, !tbaa !5
  br label %.thread148

.thread148:                                       ; preds = %.thread148.sink.split, %61
  %67 = phi i32 [ %.pr, %61 ], [ %.sink, %.thread148.sink.split ]
  %68 = sub nsw i32 0, %67
  store i32 %68, ptr %22, align 4, !tbaa !5
  %69 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %22, i32 noundef 6) #4
  br label %.loopexit

.thread:                                          ; preds = %63
  %70 = icmp eq i32 %45, 0
  br i1 %70, label %.loopexit, label %71

71:                                               ; preds = %.thread
  tail call void @cpptrf_(ptr noundef %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %20) #4
  %72 = load i32, ptr %20, align 4, !tbaa !5
  %.not135 = icmp eq i32 %72, 0
  br i1 %.not135, label %76, label %73

73:                                               ; preds = %71
  %74 = load i32, ptr %4, align 4, !tbaa !5
  %75 = add nsw i32 %74, %72
  store i32 %75, ptr %20, align 4, !tbaa !5
  br label %.loopexit

76:                                               ; preds = %71
  tail call void @chpgst_(ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef %6, ptr noundef nonnull %20) #4
  tail call void @chpevx_(ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %20) #4
  br i1 %.not, label %77, label %.loopexit

77:                                               ; preds = %76
  %78 = load i32, ptr %20, align 4, !tbaa !5
  %79 = icmp sgt i32 %78, 0
  br i1 %79, label %80, label %82

80:                                               ; preds = %77
  %81 = add nsw i32 %78, -1
  store i32 %81, ptr %12, align 4, !tbaa !5
  br label %82

82:                                               ; preds = %80, %77
  %83 = load i32, ptr %0, align 4, !tbaa !5
  switch i32 %83, label %.loopexit [
    i32 1, label %84
    i32 2, label %84
    i32 3, label %89
  ]

84:                                               ; preds = %82, %82
  %.143 = select i1 %.not129, i8 67, i8 78
  store i8 %.143, ptr %23, align 1, !tbaa !11
  %85 = load i32, ptr %12, align 4, !tbaa !5
  %invariant.gep156 = getelementptr i8, ptr %26, i64 8
  %.not141158 = icmp slt i32 %85, 1
  br i1 %.not141158, label %.loopexit, label %.lr.ph160.preheader

.lr.ph160.preheader:                              ; preds = %84
  %86 = sext i32 %24 to i64
  %87 = zext nneg i32 %85 to i64
  br label %.lr.ph160

.lr.ph160:                                        ; preds = %.lr.ph160.preheader, %.lr.ph160
  %indvars.iv163 = phi i64 [ 1, %.lr.ph160.preheader ], [ %indvars.iv.next164, %.lr.ph160 ]
  %88 = mul nsw i64 %indvars.iv163, %86
  %gep157 = getelementptr %struct.complex, ptr %invariant.gep156, i64 %88
  call void @ctpsv_(ptr noundef %3, ptr noundef nonnull %23, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef %6, ptr noundef %gep157, ptr noundef nonnull @c__1) #4
  %indvars.iv.next164 = add nuw nsw i64 %indvars.iv163, 1
  %.not141.not = icmp ult i64 %indvars.iv163, %87
  br i1 %.not141.not, label %.lr.ph160, label %.loopexit, !llvm.loop !12

89:                                               ; preds = %82
  %.144 = select i1 %.not129, i8 78, i8 67
  store i8 %.144, ptr %23, align 1, !tbaa !11
  %90 = load i32, ptr %12, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %26, i64 8
  %.not138154 = icmp slt i32 %90, 1
  br i1 %.not138154, label %.loopexit, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %89
  %91 = sext i32 %24 to i64
  %92 = zext nneg i32 %90 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %93 = mul nsw i64 %indvars.iv, %91
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %93
  call void @ctpmv_(ptr noundef %3, ptr noundef nonnull %23, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef %6, ptr noundef %gep, ptr noundef nonnull @c__1) #4
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not138.not = icmp ult i64 %indvars.iv, %92
  br i1 %.not138.not, label %.lr.ph, label %.loopexit, !llvm.loop !14

.loopexit:                                        ; preds = %.lr.ph, %.lr.ph160, %89, %84, %76, %82, %.thread, %73, %.thread148
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #4
  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 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare void @chpevx_(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, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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 = { 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, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass