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

; 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 [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @cggsvd_(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, ptr noundef %21, ptr noundef %22, ptr noundef %23) #0 {
  %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 ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %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
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca float, align 4
  %63 = alloca i32, align 4
  %64 = alloca float, align 4
  %65 = alloca float, align 4
  %66 = alloca float, align 4
  %67 = alloca float, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca float, align 4
  %72 = alloca float, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca float, align 4
  %77 = alloca i32, align 4
  store ptr %0, ptr %25, align 8, !tbaa !5
  store ptr %1, ptr %26, align 8, !tbaa !5
  store ptr %2, ptr %27, align 8, !tbaa !5
  store ptr %3, ptr %28, align 8, !tbaa !5
  store ptr %4, ptr %29, align 8, !tbaa !5
  store ptr %5, ptr %30, align 8, !tbaa !5
  store ptr %6, ptr %31, align 8, !tbaa !5
  store ptr %7, ptr %32, align 8, !tbaa !5
  store ptr %8, ptr %33, align 8, !tbaa !5
  store ptr %9, ptr %34, align 8, !tbaa !5
  store ptr %10, ptr %35, align 8, !tbaa !5
  store ptr %11, ptr %36, align 8, !tbaa !5
  store ptr %12, ptr %37, align 8, !tbaa !5
  store ptr %13, ptr %38, align 8, !tbaa !5
  store ptr %14, ptr %39, align 8, !tbaa !5
  store ptr %15, ptr %40, align 8, !tbaa !5
  store ptr %16, ptr %41, align 8, !tbaa !5
  store ptr %17, ptr %42, align 8, !tbaa !5
  store ptr %18, ptr %43, align 8, !tbaa !5
  store ptr %19, ptr %44, align 8, !tbaa !5
  store ptr %20, ptr %45, align 8, !tbaa !5
  store ptr %21, ptr %46, align 8, !tbaa !5
  store ptr %22, ptr %47, align 8, !tbaa !5
  store ptr %23, ptr %48, align 8, !tbaa !5
  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
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #3
  %78 = load ptr, ptr %34, align 8, !tbaa !5
  %79 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %79, ptr %49, align 4, !tbaa !9
  %80 = load i32, ptr %49, align 4, !tbaa !9
  %81 = mul nsw i32 %80, 1
  %82 = add nsw i32 1, %81
  store i32 %82, ptr %50, align 4, !tbaa !9
  %83 = load i32, ptr %50, align 4, !tbaa !9
  %84 = load ptr, ptr %33, align 8, !tbaa !5
  %85 = sext i32 %83 to i64
  %86 = sub i64 0, %85
  %87 = getelementptr inbounds %struct.complex, ptr %84, i64 %86
  store ptr %87, ptr %33, align 8, !tbaa !5
  %88 = load ptr, ptr %36, align 8, !tbaa !5
  %89 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %89, ptr %51, align 4, !tbaa !9
  %90 = load i32, ptr %51, align 4, !tbaa !9
  %91 = mul nsw i32 %90, 1
  %92 = add nsw i32 1, %91
  store i32 %92, ptr %52, align 4, !tbaa !9
  %93 = load i32, ptr %52, align 4, !tbaa !9
  %94 = load ptr, ptr %35, align 8, !tbaa !5
  %95 = sext i32 %93 to i64
  %96 = sub i64 0, %95
  %97 = getelementptr inbounds %struct.complex, ptr %94, i64 %96
  store ptr %97, ptr %35, align 8, !tbaa !5
  %98 = load ptr, ptr %37, align 8, !tbaa !5
  %99 = getelementptr inbounds float, ptr %98, i32 -1
  store ptr %99, ptr %37, align 8, !tbaa !5
  %100 = load ptr, ptr %38, align 8, !tbaa !5
  %101 = getelementptr inbounds float, ptr %100, i32 -1
  store ptr %101, ptr %38, align 8, !tbaa !5
  %102 = load ptr, ptr %40, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %103, ptr %55, align 4, !tbaa !9
  %104 = load i32, ptr %55, align 4, !tbaa !9
  %105 = mul nsw i32 %104, 1
  %106 = add nsw i32 1, %105
  store i32 %106, ptr %56, align 4, !tbaa !9
  %107 = load i32, ptr %56, align 4, !tbaa !9
  %108 = load ptr, ptr %39, align 8, !tbaa !5
  %109 = sext i32 %107 to i64
  %110 = sub i64 0, %109
  %111 = getelementptr inbounds %struct.complex, ptr %108, i64 %110
  store ptr %111, ptr %39, align 8, !tbaa !5
  %112 = load ptr, ptr %42, align 8, !tbaa !5
  %113 = load i32, ptr %112, align 4, !tbaa !9
  store i32 %113, ptr %57, align 4, !tbaa !9
  %114 = load i32, ptr %57, align 4, !tbaa !9
  %115 = mul nsw i32 %114, 1
  %116 = add nsw i32 1, %115
  store i32 %116, ptr %58, align 4, !tbaa !9
  %117 = load i32, ptr %58, align 4, !tbaa !9
  %118 = load ptr, ptr %41, align 8, !tbaa !5
  %119 = sext i32 %117 to i64
  %120 = sub i64 0, %119
  %121 = getelementptr inbounds %struct.complex, ptr %118, i64 %120
  store ptr %121, ptr %41, align 8, !tbaa !5
  %122 = load ptr, ptr %44, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !9
  store i32 %123, ptr %53, align 4, !tbaa !9
  %124 = load i32, ptr %53, align 4, !tbaa !9
  %125 = mul nsw i32 %124, 1
  %126 = add nsw i32 1, %125
  store i32 %126, ptr %54, align 4, !tbaa !9
  %127 = load i32, ptr %54, align 4, !tbaa !9
  %128 = load ptr, ptr %43, align 8, !tbaa !5
  %129 = sext i32 %127 to i64
  %130 = sub i64 0, %129
  %131 = getelementptr inbounds %struct.complex, ptr %128, i64 %130
  store ptr %131, ptr %43, align 8, !tbaa !5
  %132 = load ptr, ptr %45, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.complex, ptr %132, i32 -1
  store ptr %133, ptr %45, align 8, !tbaa !5
  %134 = load ptr, ptr %46, align 8, !tbaa !5
  %135 = getelementptr inbounds float, ptr %134, i32 -1
  store ptr %135, ptr %46, align 8, !tbaa !5
  %136 = load ptr, ptr %47, align 8, !tbaa !5
  %137 = getelementptr inbounds i32, ptr %136, i32 -1
  store ptr %137, ptr %47, align 8, !tbaa !5
  %138 = load ptr, ptr %25, align 8, !tbaa !5
  %139 = call i32 @lsame_(ptr noundef %138, ptr noundef @.str)
  store i32 %139, ptr %74, align 4, !tbaa !9
  %140 = load ptr, ptr %26, align 8, !tbaa !5
  %141 = call i32 @lsame_(ptr noundef %140, ptr noundef @.str.1)
  store i32 %141, ptr %75, align 4, !tbaa !9
  %142 = load ptr, ptr %27, align 8, !tbaa !5
  %143 = call i32 @lsame_(ptr noundef %142, ptr noundef @.str.2)
  store i32 %143, ptr %73, align 4, !tbaa !9
  %144 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 0, ptr %144, align 4, !tbaa !9
  %145 = load i32, ptr %74, align 4, !tbaa !9
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %153, label %147

147:                                              ; preds = %24
  %148 = load ptr, ptr %25, align 8, !tbaa !5
  %149 = call i32 @lsame_(ptr noundef %148, ptr noundef @.str.3)
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %153, label %151

151:                                              ; preds = %147
  %152 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -1, ptr %152, align 4, !tbaa !9
  br label %274

153:                                              ; preds = %147, %24
  %154 = load i32, ptr %75, align 4, !tbaa !9
  %155 = icmp ne i32 %154, 0
  br i1 %155, label %162, label %156

156:                                              ; preds = %153
  %157 = load ptr, ptr %26, align 8, !tbaa !5
  %158 = call i32 @lsame_(ptr noundef %157, ptr noundef @.str.3)
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %162, label %160

160:                                              ; preds = %156
  %161 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -2, ptr %161, align 4, !tbaa !9
  br label %273

162:                                              ; preds = %156, %153
  %163 = load i32, ptr %73, align 4, !tbaa !9
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %171, label %165

165:                                              ; preds = %162
  %166 = load ptr, ptr %27, align 8, !tbaa !5
  %167 = call i32 @lsame_(ptr noundef %166, ptr noundef @.str.3)
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %171, label %169

169:                                              ; preds = %165
  %170 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -3, ptr %170, align 4, !tbaa !9
  br label %272

171:                                              ; preds = %165, %162
  %172 = load ptr, ptr %28, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = icmp slt i32 %173, 0
  br i1 %174, label %175, label %177

175:                                              ; preds = %171
  %176 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -4, ptr %176, align 4, !tbaa !9
  br label %271

177:                                              ; preds = %171
  %178 = load ptr, ptr %29, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = icmp slt i32 %179, 0
  br i1 %180, label %181, label %183

181:                                              ; preds = %177
  %182 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -5, ptr %182, align 4, !tbaa !9
  br label %270

183:                                              ; preds = %177
  %184 = load ptr, ptr %30, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = icmp slt i32 %185, 0
  br i1 %186, label %187, label %189

187:                                              ; preds = %183
  %188 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -6, ptr %188, align 4, !tbaa !9
  br label %269

189:                                              ; preds = %183
  %190 = load ptr, ptr %34, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = load ptr, ptr %28, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = icmp sge i32 1, %193
  br i1 %194, label %195, label %196

195:                                              ; preds = %189
  br label %199

196:                                              ; preds = %189
  %197 = load ptr, ptr %28, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %196, %195
  %200 = phi i32 [ 1, %195 ], [ %198, %196 ]
  %201 = icmp slt i32 %191, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %199
  %203 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -10, ptr %203, align 4, !tbaa !9
  br label %268

204:                                              ; preds = %199
  %205 = load ptr, ptr %36, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = load ptr, ptr %30, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = icmp sge i32 1, %208
  br i1 %209, label %210, label %211

210:                                              ; preds = %204
  br label %214

211:                                              ; preds = %204
  %212 = load ptr, ptr %30, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  br label %214

214:                                              ; preds = %211, %210
  %215 = phi i32 [ 1, %210 ], [ %213, %211 ]
  %216 = icmp slt i32 %206, %215
  br i1 %216, label %217, label %219

217:                                              ; preds = %214
  %218 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -12, ptr %218, align 4, !tbaa !9
  br label %267

219:                                              ; preds = %214
  %220 = load ptr, ptr %40, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = icmp slt i32 %221, 1
  br i1 %222, label %232, label %223

223:                                              ; preds = %219
  %224 = load i32, ptr %74, align 4, !tbaa !9
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %234

226:                                              ; preds = %223
  %227 = load ptr, ptr %40, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = load ptr, ptr %28, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = icmp slt i32 %228, %230
  br i1 %231, label %232, label %234

232:                                              ; preds = %226, %219
  %233 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -16, ptr %233, align 4, !tbaa !9
  br label %266

234:                                              ; preds = %226, %223
  %235 = load ptr, ptr %42, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = icmp slt i32 %236, 1
  br i1 %237, label %247, label %238

238:                                              ; preds = %234
  %239 = load i32, ptr %75, align 4, !tbaa !9
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %241, label %249

241:                                              ; preds = %238
  %242 = load ptr, ptr %42, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = load ptr, ptr %30, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = icmp slt i32 %243, %245
  br i1 %246, label %247, label %249

247:                                              ; preds = %241, %234
  %248 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -18, ptr %248, align 4, !tbaa !9
  br label %265

249:                                              ; preds = %241, %238
  %250 = load ptr, ptr %44, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = icmp slt i32 %251, 1
  br i1 %252, label %262, label %253

253:                                              ; preds = %249
  %254 = load i32, ptr %73, align 4, !tbaa !9
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %264

256:                                              ; preds = %253
  %257 = load ptr, ptr %44, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = load ptr, ptr %29, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp slt i32 %258, %260
  br i1 %261, label %262, label %264

262:                                              ; preds = %256, %249
  %263 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -20, ptr %263, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %262, %256, %253
  br label %265

265:                                              ; preds = %264, %247
  br label %266

266:                                              ; preds = %265, %232
  br label %267

267:                                              ; preds = %266, %217
  br label %268

268:                                              ; preds = %267, %202
  br label %269

269:                                              ; preds = %268, %187
  br label %270

270:                                              ; preds = %269, %181
  br label %271

271:                                              ; preds = %270, %175
  br label %272

272:                                              ; preds = %271, %169
  br label %273

273:                                              ; preds = %272, %160
  br label %274

274:                                              ; preds = %273, %151
  %275 = load ptr, ptr %48, align 8, !tbaa !5
  %276 = load i32, ptr %275, align 4, !tbaa !9
  %277 = icmp ne i32 %276, 0
  br i1 %277, label %278, label %283

278:                                              ; preds = %274
  %279 = load ptr, ptr %48, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = sub nsw i32 0, %280
  store i32 %281, ptr %59, align 4, !tbaa !9
  %282 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %59, i32 noundef 6)
  store i32 1, ptr %77, align 4
  br label %562

283:                                              ; preds = %274
  %284 = load ptr, ptr %28, align 8, !tbaa !5
  %285 = load ptr, ptr %29, align 8, !tbaa !5
  %286 = load ptr, ptr %33, align 8, !tbaa !5
  %287 = load i32, ptr %50, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds %struct.complex, ptr %286, i64 %288
  %290 = load ptr, ptr %34, align 8, !tbaa !5
  %291 = load ptr, ptr %46, align 8, !tbaa !5
  %292 = getelementptr inbounds float, ptr %291, i64 1
  %293 = call float @clange_(ptr noundef @.str.5, ptr noundef %284, ptr noundef %285, ptr noundef %289, ptr noundef %290, ptr noundef %292)
  store float %293, ptr %71, align 4, !tbaa !11
  %294 = load ptr, ptr %30, align 8, !tbaa !5
  %295 = load ptr, ptr %29, align 8, !tbaa !5
  %296 = load ptr, ptr %35, align 8, !tbaa !5
  %297 = load i32, ptr %52, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds %struct.complex, ptr %296, i64 %298
  %300 = load ptr, ptr %36, align 8, !tbaa !5
  %301 = load ptr, ptr %46, align 8, !tbaa !5
  %302 = getelementptr inbounds float, ptr %301, i64 1
  %303 = call float @clange_(ptr noundef @.str.5, ptr noundef %294, ptr noundef %295, ptr noundef %299, ptr noundef %300, ptr noundef %302)
  store float %303, ptr %72, align 4, !tbaa !11
  %304 = call float @slamch_(ptr noundef @.str.6)
  store float %304, ptr %76, align 4, !tbaa !11
  %305 = call float @slamch_(ptr noundef @.str.7)
  store float %305, ptr %65, align 4, !tbaa !11
  %306 = load ptr, ptr %28, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = load ptr, ptr %29, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = icmp sge i32 %307, %309
  br i1 %310, label %311, label %314

311:                                              ; preds = %283
  %312 = load ptr, ptr %28, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  br label %317

314:                                              ; preds = %283
  %315 = load ptr, ptr %29, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  br label %317

317:                                              ; preds = %314, %311
  %318 = phi i32 [ %313, %311 ], [ %316, %314 ]
  %319 = sitofp i32 %318 to float
  %320 = load float, ptr %71, align 4, !tbaa !11
  %321 = load float, ptr %65, align 4, !tbaa !11
  %322 = fcmp oge float %320, %321
  br i1 %322, label %323, label %325

323:                                              ; preds = %317
  %324 = load float, ptr %71, align 4, !tbaa !11
  br label %327

325:                                              ; preds = %317
  %326 = load float, ptr %65, align 4, !tbaa !11
  br label %327

327:                                              ; preds = %325, %323
  %328 = phi float [ %324, %323 ], [ %326, %325 ]
  %329 = fmul float %319, %328
  %330 = load float, ptr %76, align 4, !tbaa !11
  %331 = fmul float %329, %330
  store float %331, ptr %62, align 4, !tbaa !11
  %332 = load ptr, ptr %30, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = load ptr, ptr %29, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = icmp sge i32 %333, %335
  br i1 %336, label %337, label %340

337:                                              ; preds = %327
  %338 = load ptr, ptr %30, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  br label %343

340:                                              ; preds = %327
  %341 = load ptr, ptr %29, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %340, %337
  %344 = phi i32 [ %339, %337 ], [ %342, %340 ]
  %345 = sitofp i32 %344 to float
  %346 = load float, ptr %72, align 4, !tbaa !11
  %347 = load float, ptr %65, align 4, !tbaa !11
  %348 = fcmp oge float %346, %347
  br i1 %348, label %349, label %351

349:                                              ; preds = %343
  %350 = load float, ptr %72, align 4, !tbaa !11
  br label %353

351:                                              ; preds = %343
  %352 = load float, ptr %65, align 4, !tbaa !11
  br label %353

353:                                              ; preds = %351, %349
  %354 = phi float [ %350, %349 ], [ %352, %351 ]
  %355 = fmul float %345, %354
  %356 = load float, ptr %76, align 4, !tbaa !11
  %357 = fmul float %355, %356
  store float %357, ptr %64, align 4, !tbaa !11
  %358 = load ptr, ptr %25, align 8, !tbaa !5
  %359 = load ptr, ptr %26, align 8, !tbaa !5
  %360 = load ptr, ptr %27, align 8, !tbaa !5
  %361 = load ptr, ptr %28, align 8, !tbaa !5
  %362 = load ptr, ptr %30, align 8, !tbaa !5
  %363 = load ptr, ptr %29, align 8, !tbaa !5
  %364 = load ptr, ptr %33, align 8, !tbaa !5
  %365 = load i32, ptr %50, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds %struct.complex, ptr %364, i64 %366
  %368 = load ptr, ptr %34, align 8, !tbaa !5
  %369 = load ptr, ptr %35, align 8, !tbaa !5
  %370 = load i32, ptr %52, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds %struct.complex, ptr %369, i64 %371
  %373 = load ptr, ptr %36, align 8, !tbaa !5
  %374 = load ptr, ptr %31, align 8, !tbaa !5
  %375 = load ptr, ptr %32, align 8, !tbaa !5
  %376 = load ptr, ptr %39, align 8, !tbaa !5
  %377 = load i32, ptr %56, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds %struct.complex, ptr %376, i64 %378
  %380 = load ptr, ptr %40, align 8, !tbaa !5
  %381 = load ptr, ptr %41, align 8, !tbaa !5
  %382 = load i32, ptr %58, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds %struct.complex, ptr %381, i64 %383
  %385 = load ptr, ptr %42, align 8, !tbaa !5
  %386 = load ptr, ptr %43, align 8, !tbaa !5
  %387 = load i32, ptr %54, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.complex, ptr %386, i64 %388
  %390 = load ptr, ptr %44, align 8, !tbaa !5
  %391 = load ptr, ptr %47, align 8, !tbaa !5
  %392 = getelementptr inbounds i32, ptr %391, i64 1
  %393 = load ptr, ptr %46, align 8, !tbaa !5
  %394 = getelementptr inbounds float, ptr %393, i64 1
  %395 = load ptr, ptr %45, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.complex, ptr %395, i64 1
  %397 = load ptr, ptr %45, align 8, !tbaa !5
  %398 = load ptr, ptr %29, align 8, !tbaa !5
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = add nsw i32 %399, 1
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds %struct.complex, ptr %397, i64 %401
  %403 = load ptr, ptr %48, align 8, !tbaa !5
  call void @cggsvp_(ptr noundef %358, ptr noundef %359, ptr noundef %360, ptr noundef %361, ptr noundef %362, ptr noundef %363, ptr noundef %367, ptr noundef %368, ptr noundef %372, ptr noundef %373, ptr noundef %62, ptr noundef %64, ptr noundef %374, ptr noundef %375, ptr noundef %379, ptr noundef %380, ptr noundef %384, ptr noundef %385, ptr noundef %389, ptr noundef %390, ptr noundef %392, ptr noundef %394, ptr noundef %396, ptr noundef %402, ptr noundef %403)
  %404 = load ptr, ptr %25, align 8, !tbaa !5
  %405 = load ptr, ptr %26, align 8, !tbaa !5
  %406 = load ptr, ptr %27, align 8, !tbaa !5
  %407 = load ptr, ptr %28, align 8, !tbaa !5
  %408 = load ptr, ptr %30, align 8, !tbaa !5
  %409 = load ptr, ptr %29, align 8, !tbaa !5
  %410 = load ptr, ptr %31, align 8, !tbaa !5
  %411 = load ptr, ptr %32, align 8, !tbaa !5
  %412 = load ptr, ptr %33, align 8, !tbaa !5
  %413 = load i32, ptr %50, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds %struct.complex, ptr %412, i64 %414
  %416 = load ptr, ptr %34, align 8, !tbaa !5
  %417 = load ptr, ptr %35, align 8, !tbaa !5
  %418 = load i32, ptr %52, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds %struct.complex, ptr %417, i64 %419
  %421 = load ptr, ptr %36, align 8, !tbaa !5
  %422 = load ptr, ptr %37, align 8, !tbaa !5
  %423 = getelementptr inbounds float, ptr %422, i64 1
  %424 = load ptr, ptr %38, align 8, !tbaa !5
  %425 = getelementptr inbounds float, ptr %424, i64 1
  %426 = load ptr, ptr %39, align 8, !tbaa !5
  %427 = load i32, ptr %56, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.complex, ptr %426, i64 %428
  %430 = load ptr, ptr %40, align 8, !tbaa !5
  %431 = load ptr, ptr %41, align 8, !tbaa !5
  %432 = load i32, ptr %58, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds %struct.complex, ptr %431, i64 %433
  %435 = load ptr, ptr %42, align 8, !tbaa !5
  %436 = load ptr, ptr %43, align 8, !tbaa !5
  %437 = load i32, ptr %54, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds %struct.complex, ptr %436, i64 %438
  %440 = load ptr, ptr %44, align 8, !tbaa !5
  %441 = load ptr, ptr %45, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.complex, ptr %441, i64 1
  %443 = load ptr, ptr %48, align 8, !tbaa !5
  call void @ctgsja_(ptr noundef %404, ptr noundef %405, ptr noundef %406, ptr noundef %407, ptr noundef %408, ptr noundef %409, ptr noundef %410, ptr noundef %411, ptr noundef %415, ptr noundef %416, ptr noundef %420, ptr noundef %421, ptr noundef %62, ptr noundef %64, ptr noundef %423, ptr noundef %425, ptr noundef %429, ptr noundef %430, ptr noundef %434, ptr noundef %435, ptr noundef %439, ptr noundef %440, ptr noundef %442, ptr noundef %68, ptr noundef %443)
  %444 = load ptr, ptr %29, align 8, !tbaa !5
  %445 = load ptr, ptr %37, align 8, !tbaa !5
  %446 = getelementptr inbounds float, ptr %445, i64 1
  %447 = load ptr, ptr %46, align 8, !tbaa !5
  %448 = getelementptr inbounds float, ptr %447, i64 1
  call void @scopy_(ptr noundef %444, ptr noundef %446, ptr noundef @c__1, ptr noundef %448, ptr noundef @c__1)
  %449 = load ptr, ptr %32, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  store i32 %450, ptr %59, align 4, !tbaa !9
  %451 = load ptr, ptr %28, align 8, !tbaa !5
  %452 = load i32, ptr %451, align 4, !tbaa !9
  %453 = load ptr, ptr %31, align 8, !tbaa !5
  %454 = load i32, ptr %453, align 4, !tbaa !9
  %455 = sub nsw i32 %452, %454
  store i32 %455, ptr %60, align 4, !tbaa !9
  %456 = load i32, ptr %59, align 4, !tbaa !9
  %457 = load i32, ptr %60, align 4, !tbaa !9
  %458 = icmp sle i32 %456, %457
  br i1 %458, label %459, label %461

459:                                              ; preds = %353
  %460 = load i32, ptr %59, align 4, !tbaa !9
  br label %463

461:                                              ; preds = %353
  %462 = load i32, ptr %60, align 4, !tbaa !9
  br label %463

463:                                              ; preds = %461, %459
  %464 = phi i32 [ %460, %459 ], [ %462, %461 ]
  store i32 %464, ptr %61, align 4, !tbaa !9
  %465 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %465, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %558, %463
  %467 = load i32, ptr %69, align 4, !tbaa !9
  %468 = load i32, ptr %59, align 4, !tbaa !9
  %469 = icmp sle i32 %467, %468
  br i1 %469, label %470, label %561

470:                                              ; preds = %466
  %471 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %471, ptr %63, align 4, !tbaa !9
  %472 = load ptr, ptr %46, align 8, !tbaa !5
  %473 = load ptr, ptr %31, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = load i32, ptr %69, align 4, !tbaa !9
  %476 = add nsw i32 %474, %475
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds float, ptr %472, i64 %477
  %479 = load float, ptr %478, align 4, !tbaa !11
  store float %479, ptr %67, align 4, !tbaa !11
  %480 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %480, ptr %60, align 4, !tbaa !9
  %481 = load i32, ptr %69, align 4, !tbaa !9
  %482 = add nsw i32 %481, 1
  store i32 %482, ptr %70, align 4, !tbaa !9
  br label %483

483:                                              ; preds = %503, %470
  %484 = load i32, ptr %70, align 4, !tbaa !9
  %485 = load i32, ptr %60, align 4, !tbaa !9
  %486 = icmp sle i32 %484, %485
  br i1 %486, label %487, label %506

487:                                              ; preds = %483
  %488 = load ptr, ptr %46, align 8, !tbaa !5
  %489 = load ptr, ptr %31, align 8, !tbaa !5
  %490 = load i32, ptr %489, align 4, !tbaa !9
  %491 = load i32, ptr %70, align 4, !tbaa !9
  %492 = add nsw i32 %490, %491
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds float, ptr %488, i64 %493
  %495 = load float, ptr %494, align 4, !tbaa !11
  store float %495, ptr %66, align 4, !tbaa !11
  %496 = load float, ptr %66, align 4, !tbaa !11
  %497 = load float, ptr %67, align 4, !tbaa !11
  %498 = fcmp ogt float %496, %497
  br i1 %498, label %499, label %502

499:                                              ; preds = %487
  %500 = load i32, ptr %70, align 4, !tbaa !9
  store i32 %500, ptr %63, align 4, !tbaa !9
  %501 = load float, ptr %66, align 4, !tbaa !11
  store float %501, ptr %67, align 4, !tbaa !11
  br label %502

502:                                              ; preds = %499, %487
  br label %503

503:                                              ; preds = %502
  %504 = load i32, ptr %70, align 4, !tbaa !9
  %505 = add nsw i32 %504, 1
  store i32 %505, ptr %70, align 4, !tbaa !9
  br label %483, !llvm.loop !13

506:                                              ; preds = %483
  %507 = load i32, ptr %63, align 4, !tbaa !9
  %508 = load i32, ptr %69, align 4, !tbaa !9
  %509 = icmp ne i32 %507, %508
  br i1 %509, label %510, label %545

510:                                              ; preds = %506
  %511 = load ptr, ptr %46, align 8, !tbaa !5
  %512 = load ptr, ptr %31, align 8, !tbaa !5
  %513 = load i32, ptr %512, align 4, !tbaa !9
  %514 = load i32, ptr %69, align 4, !tbaa !9
  %515 = add nsw i32 %513, %514
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds float, ptr %511, i64 %516
  %518 = load float, ptr %517, align 4, !tbaa !11
  %519 = load ptr, ptr %46, align 8, !tbaa !5
  %520 = load ptr, ptr %31, align 8, !tbaa !5
  %521 = load i32, ptr %520, align 4, !tbaa !9
  %522 = load i32, ptr %63, align 4, !tbaa !9
  %523 = add nsw i32 %521, %522
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds float, ptr %519, i64 %524
  store float %518, ptr %525, align 4, !tbaa !11
  %526 = load float, ptr %67, align 4, !tbaa !11
  %527 = load ptr, ptr %46, align 8, !tbaa !5
  %528 = load ptr, ptr %31, align 8, !tbaa !5
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = load i32, ptr %69, align 4, !tbaa !9
  %531 = add nsw i32 %529, %530
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds float, ptr %527, i64 %532
  store float %526, ptr %533, align 4, !tbaa !11
  %534 = load ptr, ptr %31, align 8, !tbaa !5
  %535 = load i32, ptr %534, align 4, !tbaa !9
  %536 = load i32, ptr %63, align 4, !tbaa !9
  %537 = add nsw i32 %535, %536
  %538 = load ptr, ptr %47, align 8, !tbaa !5
  %539 = load ptr, ptr %31, align 8, !tbaa !5
  %540 = load i32, ptr %539, align 4, !tbaa !9
  %541 = load i32, ptr %69, align 4, !tbaa !9
  %542 = add nsw i32 %540, %541
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds i32, ptr %538, i64 %543
  store i32 %537, ptr %544, align 4, !tbaa !9
  br label %557

545:                                              ; preds = %506
  %546 = load ptr, ptr %31, align 8, !tbaa !5
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = load i32, ptr %69, align 4, !tbaa !9
  %549 = add nsw i32 %547, %548
  %550 = load ptr, ptr %47, align 8, !tbaa !5
  %551 = load ptr, ptr %31, align 8, !tbaa !5
  %552 = load i32, ptr %551, align 4, !tbaa !9
  %553 = load i32, ptr %69, align 4, !tbaa !9
  %554 = add nsw i32 %552, %553
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds i32, ptr %550, i64 %555
  store i32 %549, ptr %556, align 4, !tbaa !9
  br label %557

557:                                              ; preds = %545, %510
  br label %558

558:                                              ; preds = %557
  %559 = load i32, ptr %69, align 4, !tbaa !9
  %560 = add nsw i32 %559, 1
  store i32 %560, ptr %69, align 4, !tbaa !9
  br label %466, !llvm.loop !15

561:                                              ; preds = %466
  store i32 1, ptr %77, align 4
  br label %562

562:                                              ; preds = %561, %278
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  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
  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 float @clange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare float @slamch_(ptr noundef) #2

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

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

declare void @scopy_(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 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}


; 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 [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @cggsvd_(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, ptr noundef %21, ptr noundef %22, ptr noundef %23) local_unnamed_addr #0 {
  %25 = alloca i32, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #4
  %29 = getelementptr inbounds i8, ptr %20, i64 -8
  %30 = getelementptr inbounds i8, ptr %21, i64 -4
  %31 = getelementptr inbounds i8, ptr %22, i64 -4
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %33 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %34 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #4
  store i32 0, ptr %23, align 4, !tbaa !5
  %.not = icmp ne i32 %32, 0
  br i1 %.not, label %37, label %35

35:                                               ; preds = %24
  %36 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %.not218 = icmp eq i32 %36, 0
  br i1 %.not218, label %.thread.sink.split, label %37

37:                                               ; preds = %35, %24
  %.not219 = icmp ne i32 %33, 0
  br i1 %.not219, label %40, label %38

38:                                               ; preds = %37
  %39 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #4
  %.not220 = icmp eq i32 %39, 0
  br i1 %.not220, label %.thread.sink.split, label %40

40:                                               ; preds = %38, %37
  %.not221 = icmp ne i32 %34, 0
  br i1 %.not221, label %43, label %41

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

43:                                               ; preds = %41, %40
  %44 = load i32, ptr %3, align 4, !tbaa !5
  %45 = icmp slt i32 %44, 0
  br i1 %45, label %.thread.sink.split, label %46

46:                                               ; preds = %43
  %47 = load i32, ptr %4, align 4, !tbaa !5
  %48 = icmp slt i32 %47, 0
  br i1 %48, label %.thread.sink.split, label %49

49:                                               ; preds = %46
  %50 = load i32, ptr %5, align 4, !tbaa !5
  %51 = icmp slt i32 %50, 0
  br i1 %51, label %.thread.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i32, ptr %9, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %44, i32 1)
  %54 = icmp slt i32 %53, %spec.select
  br i1 %54, label %.thread.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i32, ptr %11, align 4, !tbaa !5
  %spec.select230 = tail call i32 @llvm.umax.i32(i32 %50, i32 1)
  %57 = icmp slt i32 %56, %spec.select230
  br i1 %57, label %.thread.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i32, ptr %15, align 4, !tbaa !5
  %60 = icmp slt i32 %59, 1
  %61 = icmp ult i32 %59, %44
  %or.cond = and i1 %.not, %61
  %or.cond234 = or i1 %60, %or.cond
  br i1 %or.cond234, label %.thread.sink.split, label %62

62:                                               ; preds = %58
  %63 = load i32, ptr %17, align 4, !tbaa !5
  %64 = icmp slt i32 %63, 1
  %65 = icmp ult i32 %63, %50
  %or.cond232 = and i1 %.not219, %65
  %or.cond235 = or i1 %64, %or.cond232
  br i1 %or.cond235, label %.thread.sink.split, label %66

66:                                               ; preds = %62
  %67 = load i32, ptr %19, align 4, !tbaa !5
  %68 = icmp slt i32 %67, 1
  %69 = icmp ult i32 %67, %47
  %or.cond233 = and i1 %.not221, %69
  %or.cond236 = or i1 %68, %or.cond233
  br i1 %or.cond236, label %.thread.sink.split, label %70

70:                                               ; preds = %66
  %.pr = load i32, ptr %23, align 4, !tbaa !5
  %.not223 = icmp eq i32 %.pr, 0
  br i1 %.not223, label %74, label %.thread

.thread.sink.split:                               ; preds = %66, %62, %58, %55, %52, %49, %46, %43, %41, %38, %35
  %.sink253 = phi i32 [ -1, %35 ], [ -2, %38 ], [ -3, %41 ], [ -4, %43 ], [ -5, %46 ], [ -6, %49 ], [ -10, %52 ], [ -12, %55 ], [ -16, %58 ], [ -18, %62 ], [ -20, %66 ]
  store i32 %.sink253, ptr %23, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %70
  %71 = phi i32 [ %.pr, %70 ], [ %.sink253, %.thread.sink.split ]
  %72 = sub nsw i32 0, %71
  store i32 %72, ptr %25, align 4, !tbaa !5
  %73 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %25, i32 noundef 6) #4
  br label %.loopexit

74:                                               ; preds = %70
  %75 = tail call float @clange_(ptr noundef nonnull @.str.5, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %21) #4
  %76 = tail call float @clange_(ptr noundef nonnull @.str.5, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %21) #4
  %77 = tail call float @slamch_(ptr noundef nonnull @.str.6) #4
  %78 = tail call float @slamch_(ptr noundef nonnull @.str.7) #4
  %79 = load i32, ptr %3, align 4, !tbaa !5
  %80 = load i32, ptr %4, align 4, !tbaa !5
  %. = tail call i32 @llvm.smax.i32(i32 %79, i32 %80)
  %81 = sitofp i32 %. to float
  %82 = fcmp oge float %75, %78
  %83 = select i1 %82, float %75, float %78
  %84 = fmul float %83, %81
  %85 = fmul float %77, %84
  store float %85, ptr %26, align 4, !tbaa !9
  %86 = load i32, ptr %5, align 4, !tbaa !5
  %87 = tail call i32 @llvm.smax.i32(i32 %86, i32 %80)
  %88 = sitofp i32 %87 to float
  %89 = fcmp oge float %76, %78
  %90 = select i1 %89, float %76, float %78
  %91 = fmul float %90, %88
  %92 = fmul float %77, %91
  store float %92, ptr %27, align 4, !tbaa !9
  %93 = sext i32 %80 to i64
  %94 = getelementptr %struct.complex, ptr %29, i64 %93
  %95 = getelementptr i8, ptr %94, i64 8
  call void @cggsvp_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %6, ptr noundef %7, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %22, ptr noundef %21, ptr noundef %20, ptr noundef %95, ptr noundef nonnull %23) #4
  call void @ctgsja_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %18, ptr noundef nonnull %19, ptr noundef %20, ptr noundef nonnull %28, ptr noundef nonnull %23) #4
  call void @scopy_(ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull @c__1, ptr noundef %21, ptr noundef nonnull @c__1) #4
  %96 = load i32, ptr %7, align 4, !tbaa !5
  %97 = load i32, ptr %3, align 4, !tbaa !5
  %98 = load i32, ptr %6, align 4, !tbaa !5
  %99 = sub nsw i32 %97, %98
  %100 = call i32 @llvm.smin.i32(i32 %96, i32 %99)
  %.not227242 = icmp slt i32 %100, 1
  br i1 %.not227242, label %.loopexit, label %.lr.ph245.preheader

.lr.ph245.preheader:                              ; preds = %74
  %101 = add nuw i32 %100, 1
  %102 = add nuw i32 %100, 1
  %103 = add nsw i32 %100, -2
  br label %.lr.ph245

.lr.ph245:                                        ; preds = %.lr.ph245.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph245.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv = phi i32 [ 2, %.lr.ph245.preheader ], [ %indvars.iv.next, %._crit_edge.thread ]
  %.0203243 = phi i32 [ 1, %.lr.ph245.preheader ], [ %109, %._crit_edge.thread ]
  %104 = load i32, ptr %6, align 4, !tbaa !5
  %105 = add nsw i32 %104, %.0203243
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds float, ptr %30, i64 %106
  %108 = load float, ptr %107, align 4, !tbaa !9
  %109 = add nuw nsw i32 %.0203243, 1
  %.not228237.not = icmp slt i32 %.0203243, %100
  br i1 %.not228237.not, label %.lr.ph.preheader, label %._crit_edge.thread

.lr.ph.preheader:                                 ; preds = %.lr.ph245
  %110 = sext i32 %indvars.iv to i64
  %111 = sext i32 %104 to i64
  %invariant.gep = getelementptr float, ptr %30, i64 %111
  %112 = sub i32 %indvar, %100
  %113 = and i32 %112, 1
  %lcmp.mod.not.not = icmp eq i32 %113, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph.prol, label %.lr.ph.prol.loopexit

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader
  %gep.prol = getelementptr float, ptr %invariant.gep, i64 %110
  %114 = load float, ptr %gep.prol, align 4, !tbaa !9
  %115 = fcmp ogt float %114, %108
  %.1206.prol = select i1 %115, i32 %indvars.iv, i32 %.0203243
  %.1.prol = select i1 %115, float %114, float %108
  %indvars.iv.next247.prol = add nsw i64 %110, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader
  %.1206.lcssa.unr = phi i32 [ poison, %.lr.ph.preheader ], [ %.1206.prol, %.lr.ph.prol ]
  %.1.lcssa.unr = phi float [ poison, %.lr.ph.preheader ], [ %.1.prol, %.lr.ph.prol ]
  %indvars.iv246.unr = phi i64 [ %110, %.lr.ph.preheader ], [ %indvars.iv.next247.prol, %.lr.ph.prol ]
  %.0204239.unr = phi float [ %108, %.lr.ph.preheader ], [ %.1.prol, %.lr.ph.prol ]
  %.0205238.unr = phi i32 [ %.0203243, %.lr.ph.preheader ], [ %.1206.prol, %.lr.ph.prol ]
  %116 = icmp eq i32 %103, %indvar
  br i1 %116, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv246 = phi i64 [ %indvars.iv.next247.1, %.lr.ph ], [ %indvars.iv246.unr, %.lr.ph.prol.loopexit ]
  %.0204239 = phi float [ %.1.1, %.lr.ph ], [ %.0204239.unr, %.lr.ph.prol.loopexit ]
  %.0205238 = phi i32 [ %.1206.1, %.lr.ph ], [ %.0205238.unr, %.lr.ph.prol.loopexit ]
  %gep = getelementptr float, ptr %invariant.gep, i64 %indvars.iv246
  %117 = load float, ptr %gep, align 4, !tbaa !9
  %118 = fcmp ogt float %117, %.0204239
  %119 = trunc nsw i64 %indvars.iv246 to i32
  %.1206 = select i1 %118, i32 %119, i32 %.0205238
  %.1 = select i1 %118, float %117, float %.0204239
  %indvars.iv.next247 = add nsw i64 %indvars.iv246, 1
  %gep.1 = getelementptr float, ptr %invariant.gep, i64 %indvars.iv.next247
  %120 = load float, ptr %gep.1, align 4, !tbaa !9
  %121 = fcmp ogt float %120, %.1
  %122 = trunc nsw i64 %indvars.iv.next247 to i32
  %.1206.1 = select i1 %121, i32 %122, i32 %.1206
  %.1.1 = select i1 %121, float %120, float %.1
  %indvars.iv.next247.1 = add nsw i64 %indvars.iv246, 2
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next247.1 to i32
  %exitcond.not.1 = icmp eq i32 %101, %lftr.wideiv.1
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %.lr.ph.prol.loopexit
  %.1206.lcssa = phi i32 [ %.1206.lcssa.unr, %.lr.ph.prol.loopexit ], [ %.1206.1, %.lr.ph ]
  %.1.lcssa = phi float [ %.1.lcssa.unr, %.lr.ph.prol.loopexit ], [ %.1.1, %.lr.ph ]
  %.not229 = icmp eq i32 %.1206.lcssa, %.0203243
  br i1 %.not229, label %._crit_edge.thread, label %123

123:                                              ; preds = %._crit_edge
  %124 = add nsw i32 %.1206.lcssa, %104
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds float, ptr %30, i64 %125
  store float %108, ptr %126, align 4, !tbaa !9
  store float %.1.lcssa, ptr %107, align 4, !tbaa !9
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph245, %._crit_edge, %123
  %.sink = phi i32 [ %124, %123 ], [ %105, %._crit_edge ], [ %105, %.lr.ph245 ]
  %127 = getelementptr inbounds i32, ptr %31, i64 %106
  store i32 %.sink, ptr %127, align 4
  %indvars.iv.next = add nuw i32 %indvars.iv, 1
  %exitcond249.not = icmp eq i32 %indvars.iv, %102
  %indvar.next = add i32 %indvar, 1
  br i1 %exitcond249.not, label %.loopexit, label %.lr.ph245, !llvm.loop !13

.loopexit:                                        ; preds = %._crit_edge.thread, %74, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #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 float @clange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}


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