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

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

156:                                              ; preds = %25
  %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 %50, align 8, !tbaa !5
  store i32 -1, ptr %161, align 4, !tbaa !9
  br label %293

162:                                              ; preds = %156, %25
  %163 = load i32, ptr %78, 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 %50, align 8, !tbaa !5
  store i32 -2, ptr %170, align 4, !tbaa !9
  br label %292

171:                                              ; preds = %165, %162
  %172 = load i32, ptr %76, align 4, !tbaa !9
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %180, label %174

174:                                              ; preds = %171
  %175 = load ptr, ptr %28, align 8, !tbaa !5
  %176 = call i32 @lsame_(ptr noundef %175, ptr noundef @.str.3)
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %180, label %178

178:                                              ; preds = %174
  %179 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -3, ptr %179, align 4, !tbaa !9
  br label %291

180:                                              ; preds = %174, %171
  %181 = load ptr, ptr %29, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = icmp slt i32 %182, 0
  br i1 %183, label %184, label %186

184:                                              ; preds = %180
  %185 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -4, ptr %185, align 4, !tbaa !9
  br label %290

186:                                              ; preds = %180
  %187 = load ptr, ptr %30, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = icmp slt i32 %188, 0
  br i1 %189, label %190, label %192

190:                                              ; preds = %186
  %191 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -5, ptr %191, align 4, !tbaa !9
  br label %289

192:                                              ; preds = %186
  %193 = load ptr, ptr %31, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = icmp slt i32 %194, 0
  br i1 %195, label %196, label %198

196:                                              ; preds = %192
  %197 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -6, ptr %197, align 4, !tbaa !9
  br label %288

198:                                              ; preds = %192
  %199 = load ptr, ptr %35, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = load ptr, ptr %29, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = icmp sge i32 1, %202
  br i1 %203, label %204, label %205

204:                                              ; preds = %198
  br label %208

205:                                              ; preds = %198
  %206 = load ptr, ptr %29, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %205, %204
  %209 = phi i32 [ 1, %204 ], [ %207, %205 ]
  %210 = icmp slt i32 %200, %209
  br i1 %210, label %211, label %213

211:                                              ; preds = %208
  %212 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -10, ptr %212, align 4, !tbaa !9
  br label %287

213:                                              ; preds = %208
  %214 = load ptr, ptr %37, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = load ptr, ptr %31, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp sge i32 1, %217
  br i1 %218, label %219, label %220

219:                                              ; preds = %213
  br label %223

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

223:                                              ; preds = %220, %219
  %224 = phi i32 [ 1, %219 ], [ %222, %220 ]
  %225 = icmp slt i32 %215, %224
  br i1 %225, label %226, label %228

226:                                              ; preds = %223
  %227 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -12, ptr %227, align 4, !tbaa !9
  br label %286

228:                                              ; preds = %223
  %229 = load ptr, ptr %41, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = icmp slt i32 %230, 1
  br i1 %231, label %241, label %232

232:                                              ; preds = %228
  %233 = load i32, ptr %77, align 4, !tbaa !9
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %235, label %243

235:                                              ; preds = %232
  %236 = load ptr, ptr %41, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = load ptr, ptr %29, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = icmp slt i32 %237, %239
  br i1 %240, label %241, label %243

241:                                              ; preds = %235, %228
  %242 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -16, ptr %242, align 4, !tbaa !9
  br label %285

243:                                              ; preds = %235, %232
  %244 = load ptr, ptr %43, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = icmp slt i32 %245, 1
  br i1 %246, label %256, label %247

247:                                              ; preds = %243
  %248 = load i32, ptr %78, align 4, !tbaa !9
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %250, label %258

250:                                              ; preds = %247
  %251 = load ptr, ptr %43, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = load ptr, ptr %31, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = icmp slt i32 %252, %254
  br i1 %255, label %256, label %258

256:                                              ; preds = %250, %243
  %257 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -18, ptr %257, align 4, !tbaa !9
  br label %284

258:                                              ; preds = %250, %247
  %259 = load ptr, ptr %45, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp slt i32 %260, 1
  br i1 %261, label %271, label %262

262:                                              ; preds = %258
  %263 = load i32, ptr %76, align 4, !tbaa !9
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %265, label %273

265:                                              ; preds = %262
  %266 = load ptr, ptr %45, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = load ptr, ptr %30, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !9
  %270 = icmp slt i32 %267, %269
  br i1 %270, label %271, label %273

271:                                              ; preds = %265, %258
  %272 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -20, ptr %272, align 4, !tbaa !9
  br label %283

273:                                              ; preds = %265, %262
  %274 = load ptr, ptr %47, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = icmp slt i32 %275, 1
  br i1 %276, label %277, label %282

277:                                              ; preds = %273
  %278 = load i32, ptr %80, align 4, !tbaa !9
  %279 = icmp ne i32 %278, 0
  br i1 %279, label %282, label %280

280:                                              ; preds = %277
  %281 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -24, ptr %281, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %280, %277, %273
  br label %283

283:                                              ; preds = %282, %271
  br label %284

284:                                              ; preds = %283, %256
  br label %285

285:                                              ; preds = %284, %241
  br label %286

286:                                              ; preds = %285, %226
  br label %287

287:                                              ; preds = %286, %211
  br label %288

288:                                              ; preds = %287, %196
  br label %289

289:                                              ; preds = %288, %190
  br label %290

290:                                              ; preds = %289, %184
  br label %291

291:                                              ; preds = %290, %178
  br label %292

292:                                              ; preds = %291, %169
  br label %293

293:                                              ; preds = %292, %160
  %294 = load ptr, ptr %50, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  %296 = icmp eq i32 %295, 0
  br i1 %296, label %297, label %381

297:                                              ; preds = %293
  %298 = load ptr, ptr %26, align 8, !tbaa !5
  %299 = load ptr, ptr %27, align 8, !tbaa !5
  %300 = load ptr, ptr %28, align 8, !tbaa !5
  %301 = load ptr, ptr %29, align 8, !tbaa !5
  %302 = load ptr, ptr %31, align 8, !tbaa !5
  %303 = load ptr, ptr %30, align 8, !tbaa !5
  %304 = load ptr, ptr %34, align 8, !tbaa !5
  %305 = load i32, ptr %52, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds %struct.complex, ptr %304, i64 %306
  %308 = load ptr, ptr %35, align 8, !tbaa !5
  %309 = load ptr, ptr %36, align 8, !tbaa !5
  %310 = load i32, ptr %54, align 4, !tbaa !9
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds %struct.complex, ptr %309, i64 %311
  %313 = load ptr, ptr %37, align 8, !tbaa !5
  %314 = load ptr, ptr %32, align 8, !tbaa !5
  %315 = load ptr, ptr %33, align 8, !tbaa !5
  %316 = load ptr, ptr %40, align 8, !tbaa !5
  %317 = load i32, ptr %58, align 4, !tbaa !9
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds %struct.complex, ptr %316, i64 %318
  %320 = load ptr, ptr %41, align 8, !tbaa !5
  %321 = load ptr, ptr %42, align 8, !tbaa !5
  %322 = load i32, ptr %60, align 4, !tbaa !9
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds %struct.complex, ptr %321, i64 %323
  %325 = load ptr, ptr %43, align 8, !tbaa !5
  %326 = load ptr, ptr %44, align 8, !tbaa !5
  %327 = load i32, ptr %56, align 4, !tbaa !9
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds %struct.complex, ptr %326, i64 %328
  %330 = load ptr, ptr %45, align 8, !tbaa !5
  %331 = load ptr, ptr %49, align 8, !tbaa !5
  %332 = getelementptr inbounds i32, ptr %331, i64 1
  %333 = load ptr, ptr %48, align 8, !tbaa !5
  %334 = getelementptr inbounds float, ptr %333, i64 1
  %335 = load ptr, ptr %46, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.complex, ptr %335, i64 1
  %337 = load ptr, ptr %46, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.complex, ptr %337, i64 1
  %339 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cggsvp3_(ptr noundef %298, ptr noundef %299, ptr noundef %300, ptr noundef %301, ptr noundef %302, ptr noundef %303, ptr noundef %307, ptr noundef %308, ptr noundef %312, ptr noundef %313, ptr noundef %65, ptr noundef %67, ptr noundef %314, ptr noundef %315, ptr noundef %319, ptr noundef %320, ptr noundef %324, ptr noundef %325, ptr noundef %329, ptr noundef %330, ptr noundef %332, ptr noundef %334, ptr noundef %336, ptr noundef %338, ptr noundef @c_n1, ptr noundef %339)
  %340 = load ptr, ptr %30, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  %342 = load ptr, ptr %46, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.complex, ptr %342, i64 1
  %344 = getelementptr inbounds %struct.complex, ptr %343, i32 0, i32 0
  %345 = load float, ptr %344, align 4, !tbaa !11
  %346 = fptosi float %345 to i32
  %347 = add nsw i32 %341, %346
  store i32 %347, ptr %79, align 4, !tbaa !9
  %348 = load ptr, ptr %30, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = shl i32 %349, 1
  store i32 %350, ptr %61, align 4, !tbaa !9
  %351 = load i32, ptr %61, align 4, !tbaa !9
  %352 = load i32, ptr %79, align 4, !tbaa !9
  %353 = icmp sge i32 %351, %352
  br i1 %353, label %354, label %356

354:                                              ; preds = %297
  %355 = load i32, ptr %61, align 4, !tbaa !9
  br label %358

356:                                              ; preds = %297
  %357 = load i32, ptr %79, align 4, !tbaa !9
  br label %358

358:                                              ; preds = %356, %354
  %359 = phi i32 [ %355, %354 ], [ %357, %356 ]
  store i32 %359, ptr %79, align 4, !tbaa !9
  %360 = load i32, ptr %79, align 4, !tbaa !9
  %361 = icmp sge i32 1, %360
  br i1 %361, label %362, label %363

362:                                              ; preds = %358
  br label %365

363:                                              ; preds = %358
  %364 = load i32, ptr %79, align 4, !tbaa !9
  br label %365

365:                                              ; preds = %363, %362
  %366 = phi i32 [ 1, %362 ], [ %364, %363 ]
  store i32 %366, ptr %79, align 4, !tbaa !9
  %367 = load i32, ptr %79, align 4, !tbaa !9
  %368 = sitofp i32 %367 to float
  %369 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 0
  store float %368, ptr %369, align 4, !tbaa !11
  %370 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 1
  store float 0.000000e+00, ptr %370, align 4, !tbaa !14
  %371 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 0
  %372 = load float, ptr %371, align 4, !tbaa !11
  %373 = load ptr, ptr %46, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.complex, ptr %373, i64 1
  %375 = getelementptr inbounds %struct.complex, ptr %374, i32 0, i32 0
  store float %372, ptr %375, align 4, !tbaa !11
  %376 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 1
  %377 = load float, ptr %376, align 4, !tbaa !14
  %378 = load ptr, ptr %46, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.complex, ptr %378, i64 1
  %380 = getelementptr inbounds %struct.complex, ptr %379, i32 0, i32 1
  store float %377, ptr %380, align 4, !tbaa !14
  br label %381

381:                                              ; preds = %365, %293
  %382 = load ptr, ptr %50, align 8, !tbaa !5
  %383 = load i32, ptr %382, align 4, !tbaa !9
  %384 = icmp ne i32 %383, 0
  br i1 %384, label %385, label %390

385:                                              ; preds = %381
  %386 = load ptr, ptr %50, align 8, !tbaa !5
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = sub nsw i32 0, %387
  store i32 %388, ptr %61, align 4, !tbaa !9
  %389 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %61, i32 noundef 7)
  store i32 1, ptr %82, align 4
  br label %692

390:                                              ; preds = %381
  %391 = load i32, ptr %80, align 4, !tbaa !9
  %392 = icmp ne i32 %391, 0
  br i1 %392, label %393, label %394

393:                                              ; preds = %390
  store i32 1, ptr %82, align 4
  br label %692

394:                                              ; preds = %390
  %395 = load ptr, ptr %29, align 8, !tbaa !5
  %396 = load ptr, ptr %30, align 8, !tbaa !5
  %397 = load ptr, ptr %34, align 8, !tbaa !5
  %398 = load i32, ptr %52, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds %struct.complex, ptr %397, i64 %399
  %401 = load ptr, ptr %35, align 8, !tbaa !5
  %402 = load ptr, ptr %48, align 8, !tbaa !5
  %403 = getelementptr inbounds float, ptr %402, i64 1
  %404 = call float @clange_(ptr noundef @.str.5, ptr noundef %395, ptr noundef %396, ptr noundef %400, ptr noundef %401, ptr noundef %403)
  store float %404, ptr %74, align 4, !tbaa !15
  %405 = load ptr, ptr %31, align 8, !tbaa !5
  %406 = load ptr, ptr %30, align 8, !tbaa !5
  %407 = load ptr, ptr %36, align 8, !tbaa !5
  %408 = load i32, ptr %54, align 4, !tbaa !9
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds %struct.complex, ptr %407, i64 %409
  %411 = load ptr, ptr %37, align 8, !tbaa !5
  %412 = load ptr, ptr %48, align 8, !tbaa !5
  %413 = getelementptr inbounds float, ptr %412, i64 1
  %414 = call float @clange_(ptr noundef @.str.5, ptr noundef %405, ptr noundef %406, ptr noundef %410, ptr noundef %411, ptr noundef %413)
  store float %414, ptr %75, align 4, !tbaa !15
  %415 = call float @slamch_(ptr noundef @.str.6)
  store float %415, ptr %81, align 4, !tbaa !15
  %416 = call float @slamch_(ptr noundef @.str.7)
  store float %416, ptr %68, align 4, !tbaa !15
  %417 = load ptr, ptr %29, align 8, !tbaa !5
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = load ptr, ptr %30, align 8, !tbaa !5
  %420 = load i32, ptr %419, align 4, !tbaa !9
  %421 = icmp sge i32 %418, %420
  br i1 %421, label %422, label %425

422:                                              ; preds = %394
  %423 = load ptr, ptr %29, align 8, !tbaa !5
  %424 = load i32, ptr %423, align 4, !tbaa !9
  br label %428

425:                                              ; preds = %394
  %426 = load ptr, ptr %30, align 8, !tbaa !5
  %427 = load i32, ptr %426, align 4, !tbaa !9
  br label %428

428:                                              ; preds = %425, %422
  %429 = phi i32 [ %424, %422 ], [ %427, %425 ]
  %430 = sitofp i32 %429 to float
  %431 = load float, ptr %74, align 4, !tbaa !15
  %432 = load float, ptr %68, align 4, !tbaa !15
  %433 = fcmp oge float %431, %432
  br i1 %433, label %434, label %436

434:                                              ; preds = %428
  %435 = load float, ptr %74, align 4, !tbaa !15
  br label %438

436:                                              ; preds = %428
  %437 = load float, ptr %68, align 4, !tbaa !15
  br label %438

438:                                              ; preds = %436, %434
  %439 = phi float [ %435, %434 ], [ %437, %436 ]
  %440 = fmul float %430, %439
  %441 = load float, ptr %81, align 4, !tbaa !15
  %442 = fmul float %440, %441
  store float %442, ptr %65, align 4, !tbaa !15
  %443 = load ptr, ptr %31, align 8, !tbaa !5
  %444 = load i32, ptr %443, align 4, !tbaa !9
  %445 = load ptr, ptr %30, align 8, !tbaa !5
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = icmp sge i32 %444, %446
  br i1 %447, label %448, label %451

448:                                              ; preds = %438
  %449 = load ptr, ptr %31, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  br label %454

451:                                              ; preds = %438
  %452 = load ptr, ptr %30, align 8, !tbaa !5
  %453 = load i32, ptr %452, align 4, !tbaa !9
  br label %454

454:                                              ; preds = %451, %448
  %455 = phi i32 [ %450, %448 ], [ %453, %451 ]
  %456 = sitofp i32 %455 to float
  %457 = load float, ptr %75, align 4, !tbaa !15
  %458 = load float, ptr %68, align 4, !tbaa !15
  %459 = fcmp oge float %457, %458
  br i1 %459, label %460, label %462

460:                                              ; preds = %454
  %461 = load float, ptr %75, align 4, !tbaa !15
  br label %464

462:                                              ; preds = %454
  %463 = load float, ptr %68, align 4, !tbaa !15
  br label %464

464:                                              ; preds = %462, %460
  %465 = phi float [ %461, %460 ], [ %463, %462 ]
  %466 = fmul float %456, %465
  %467 = load float, ptr %81, align 4, !tbaa !15
  %468 = fmul float %466, %467
  store float %468, ptr %67, align 4, !tbaa !15
  %469 = load ptr, ptr %47, align 8, !tbaa !5
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = load ptr, ptr %30, align 8, !tbaa !5
  %472 = load i32, ptr %471, align 4, !tbaa !9
  %473 = sub nsw i32 %470, %472
  store i32 %473, ptr %61, align 4, !tbaa !9
  %474 = load ptr, ptr %26, align 8, !tbaa !5
  %475 = load ptr, ptr %27, align 8, !tbaa !5
  %476 = load ptr, ptr %28, align 8, !tbaa !5
  %477 = load ptr, ptr %29, align 8, !tbaa !5
  %478 = load ptr, ptr %31, align 8, !tbaa !5
  %479 = load ptr, ptr %30, align 8, !tbaa !5
  %480 = load ptr, ptr %34, align 8, !tbaa !5
  %481 = load i32, ptr %52, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds %struct.complex, ptr %480, i64 %482
  %484 = load ptr, ptr %35, align 8, !tbaa !5
  %485 = load ptr, ptr %36, align 8, !tbaa !5
  %486 = load i32, ptr %54, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds %struct.complex, ptr %485, i64 %487
  %489 = load ptr, ptr %37, align 8, !tbaa !5
  %490 = load ptr, ptr %32, align 8, !tbaa !5
  %491 = load ptr, ptr %33, align 8, !tbaa !5
  %492 = load ptr, ptr %40, align 8, !tbaa !5
  %493 = load i32, ptr %58, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds %struct.complex, ptr %492, i64 %494
  %496 = load ptr, ptr %41, align 8, !tbaa !5
  %497 = load ptr, ptr %42, align 8, !tbaa !5
  %498 = load i32, ptr %60, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds %struct.complex, ptr %497, i64 %499
  %501 = load ptr, ptr %43, align 8, !tbaa !5
  %502 = load ptr, ptr %44, align 8, !tbaa !5
  %503 = load i32, ptr %56, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds %struct.complex, ptr %502, i64 %504
  %506 = load ptr, ptr %45, align 8, !tbaa !5
  %507 = load ptr, ptr %49, align 8, !tbaa !5
  %508 = getelementptr inbounds i32, ptr %507, i64 1
  %509 = load ptr, ptr %48, align 8, !tbaa !5
  %510 = getelementptr inbounds float, ptr %509, i64 1
  %511 = load ptr, ptr %46, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.complex, ptr %511, i64 1
  %513 = load ptr, ptr %46, align 8, !tbaa !5
  %514 = load ptr, ptr %30, align 8, !tbaa !5
  %515 = load i32, ptr %514, align 4, !tbaa !9
  %516 = add nsw i32 %515, 1
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds %struct.complex, ptr %513, i64 %517
  %519 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cggsvp3_(ptr noundef %474, ptr noundef %475, ptr noundef %476, ptr noundef %477, ptr noundef %478, ptr noundef %479, ptr noundef %483, ptr noundef %484, ptr noundef %488, ptr noundef %489, ptr noundef %65, ptr noundef %67, ptr noundef %490, ptr noundef %491, ptr noundef %495, ptr noundef %496, ptr noundef %500, ptr noundef %501, ptr noundef %505, ptr noundef %506, ptr noundef %508, ptr noundef %510, ptr noundef %512, ptr noundef %518, ptr noundef %61, ptr noundef %519)
  %520 = load ptr, ptr %26, align 8, !tbaa !5
  %521 = load ptr, ptr %27, align 8, !tbaa !5
  %522 = load ptr, ptr %28, align 8, !tbaa !5
  %523 = load ptr, ptr %29, align 8, !tbaa !5
  %524 = load ptr, ptr %31, align 8, !tbaa !5
  %525 = load ptr, ptr %30, align 8, !tbaa !5
  %526 = load ptr, ptr %32, align 8, !tbaa !5
  %527 = load ptr, ptr %33, align 8, !tbaa !5
  %528 = load ptr, ptr %34, align 8, !tbaa !5
  %529 = load i32, ptr %52, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds %struct.complex, ptr %528, i64 %530
  %532 = load ptr, ptr %35, align 8, !tbaa !5
  %533 = load ptr, ptr %36, align 8, !tbaa !5
  %534 = load i32, ptr %54, align 4, !tbaa !9
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds %struct.complex, ptr %533, i64 %535
  %537 = load ptr, ptr %37, align 8, !tbaa !5
  %538 = load ptr, ptr %38, align 8, !tbaa !5
  %539 = getelementptr inbounds float, ptr %538, i64 1
  %540 = load ptr, ptr %39, align 8, !tbaa !5
  %541 = getelementptr inbounds float, ptr %540, i64 1
  %542 = load ptr, ptr %40, align 8, !tbaa !5
  %543 = load i32, ptr %58, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds %struct.complex, ptr %542, i64 %544
  %546 = load ptr, ptr %41, align 8, !tbaa !5
  %547 = load ptr, ptr %42, align 8, !tbaa !5
  %548 = load i32, ptr %60, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds %struct.complex, ptr %547, i64 %549
  %551 = load ptr, ptr %43, align 8, !tbaa !5
  %552 = load ptr, ptr %44, align 8, !tbaa !5
  %553 = load i32, ptr %56, align 4, !tbaa !9
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds %struct.complex, ptr %552, i64 %554
  %556 = load ptr, ptr %45, align 8, !tbaa !5
  %557 = load ptr, ptr %46, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.complex, ptr %557, i64 1
  %559 = load ptr, ptr %50, align 8, !tbaa !5
  call void @ctgsja_(ptr noundef %520, ptr noundef %521, ptr noundef %522, ptr noundef %523, ptr noundef %524, ptr noundef %525, ptr noundef %526, ptr noundef %527, ptr noundef %531, ptr noundef %532, ptr noundef %536, ptr noundef %537, ptr noundef %65, ptr noundef %67, ptr noundef %539, ptr noundef %541, ptr noundef %545, ptr noundef %546, ptr noundef %550, ptr noundef %551, ptr noundef %555, ptr noundef %556, ptr noundef %558, ptr noundef %71, ptr noundef %559)
  %560 = load ptr, ptr %30, align 8, !tbaa !5
  %561 = load ptr, ptr %38, align 8, !tbaa !5
  %562 = getelementptr inbounds float, ptr %561, i64 1
  %563 = load ptr, ptr %48, align 8, !tbaa !5
  %564 = getelementptr inbounds float, ptr %563, i64 1
  call void @scopy_(ptr noundef %560, ptr noundef %562, ptr noundef @c__1, ptr noundef %564, ptr noundef @c__1)
  %565 = load ptr, ptr %33, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  store i32 %566, ptr %61, align 4, !tbaa !9
  %567 = load ptr, ptr %29, align 8, !tbaa !5
  %568 = load i32, ptr %567, align 4, !tbaa !9
  %569 = load ptr, ptr %32, align 8, !tbaa !5
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = sub nsw i32 %568, %570
  store i32 %571, ptr %62, align 4, !tbaa !9
  %572 = load i32, ptr %61, align 4, !tbaa !9
  %573 = load i32, ptr %62, align 4, !tbaa !9
  %574 = icmp sle i32 %572, %573
  br i1 %574, label %575, label %577

575:                                              ; preds = %464
  %576 = load i32, ptr %61, align 4, !tbaa !9
  br label %579

577:                                              ; preds = %464
  %578 = load i32, ptr %62, align 4, !tbaa !9
  br label %579

579:                                              ; preds = %577, %575
  %580 = phi i32 [ %576, %575 ], [ %578, %577 ]
  store i32 %580, ptr %64, align 4, !tbaa !9
  %581 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %581, ptr %61, align 4, !tbaa !9
  store i32 1, ptr %72, align 4, !tbaa !9
  br label %582

582:                                              ; preds = %674, %579
  %583 = load i32, ptr %72, align 4, !tbaa !9
  %584 = load i32, ptr %61, align 4, !tbaa !9
  %585 = icmp sle i32 %583, %584
  br i1 %585, label %586, label %677

586:                                              ; preds = %582
  %587 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %587, ptr %66, align 4, !tbaa !9
  %588 = load ptr, ptr %48, align 8, !tbaa !5
  %589 = load ptr, ptr %32, align 8, !tbaa !5
  %590 = load i32, ptr %589, align 4, !tbaa !9
  %591 = load i32, ptr %72, align 4, !tbaa !9
  %592 = add nsw i32 %590, %591
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds float, ptr %588, i64 %593
  %595 = load float, ptr %594, align 4, !tbaa !15
  store float %595, ptr %70, align 4, !tbaa !15
  %596 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %596, ptr %62, align 4, !tbaa !9
  %597 = load i32, ptr %72, align 4, !tbaa !9
  %598 = add nsw i32 %597, 1
  store i32 %598, ptr %73, align 4, !tbaa !9
  br label %599

599:                                              ; preds = %619, %586
  %600 = load i32, ptr %73, align 4, !tbaa !9
  %601 = load i32, ptr %62, align 4, !tbaa !9
  %602 = icmp sle i32 %600, %601
  br i1 %602, label %603, label %622

603:                                              ; preds = %599
  %604 = load ptr, ptr %48, align 8, !tbaa !5
  %605 = load ptr, ptr %32, align 8, !tbaa !5
  %606 = load i32, ptr %605, align 4, !tbaa !9
  %607 = load i32, ptr %73, align 4, !tbaa !9
  %608 = add nsw i32 %606, %607
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds float, ptr %604, i64 %609
  %611 = load float, ptr %610, align 4, !tbaa !15
  store float %611, ptr %69, align 4, !tbaa !15
  %612 = load float, ptr %69, align 4, !tbaa !15
  %613 = load float, ptr %70, align 4, !tbaa !15
  %614 = fcmp ogt float %612, %613
  br i1 %614, label %615, label %618

615:                                              ; preds = %603
  %616 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %616, ptr %66, align 4, !tbaa !9
  %617 = load float, ptr %69, align 4, !tbaa !15
  store float %617, ptr %70, align 4, !tbaa !15
  br label %618

618:                                              ; preds = %615, %603
  br label %619

619:                                              ; preds = %618
  %620 = load i32, ptr %73, align 4, !tbaa !9
  %621 = add nsw i32 %620, 1
  store i32 %621, ptr %73, align 4, !tbaa !9
  br label %599, !llvm.loop !16

622:                                              ; preds = %599
  %623 = load i32, ptr %66, align 4, !tbaa !9
  %624 = load i32, ptr %72, align 4, !tbaa !9
  %625 = icmp ne i32 %623, %624
  br i1 %625, label %626, label %661

626:                                              ; preds = %622
  %627 = load ptr, ptr %48, align 8, !tbaa !5
  %628 = load ptr, ptr %32, align 8, !tbaa !5
  %629 = load i32, ptr %628, align 4, !tbaa !9
  %630 = load i32, ptr %72, align 4, !tbaa !9
  %631 = add nsw i32 %629, %630
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds float, ptr %627, i64 %632
  %634 = load float, ptr %633, align 4, !tbaa !15
  %635 = load ptr, ptr %48, align 8, !tbaa !5
  %636 = load ptr, ptr %32, align 8, !tbaa !5
  %637 = load i32, ptr %636, align 4, !tbaa !9
  %638 = load i32, ptr %66, align 4, !tbaa !9
  %639 = add nsw i32 %637, %638
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds float, ptr %635, i64 %640
  store float %634, ptr %641, align 4, !tbaa !15
  %642 = load float, ptr %70, align 4, !tbaa !15
  %643 = load ptr, ptr %48, align 8, !tbaa !5
  %644 = load ptr, ptr %32, align 8, !tbaa !5
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = load i32, ptr %72, align 4, !tbaa !9
  %647 = add nsw i32 %645, %646
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds float, ptr %643, i64 %648
  store float %642, ptr %649, align 4, !tbaa !15
  %650 = load ptr, ptr %32, align 8, !tbaa !5
  %651 = load i32, ptr %650, align 4, !tbaa !9
  %652 = load i32, ptr %66, align 4, !tbaa !9
  %653 = add nsw i32 %651, %652
  %654 = load ptr, ptr %49, align 8, !tbaa !5
  %655 = load ptr, ptr %32, align 8, !tbaa !5
  %656 = load i32, ptr %655, align 4, !tbaa !9
  %657 = load i32, ptr %72, align 4, !tbaa !9
  %658 = add nsw i32 %656, %657
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds i32, ptr %654, i64 %659
  store i32 %653, ptr %660, align 4, !tbaa !9
  br label %673

661:                                              ; preds = %622
  %662 = load ptr, ptr %32, align 8, !tbaa !5
  %663 = load i32, ptr %662, align 4, !tbaa !9
  %664 = load i32, ptr %72, align 4, !tbaa !9
  %665 = add nsw i32 %663, %664
  %666 = load ptr, ptr %49, align 8, !tbaa !5
  %667 = load ptr, ptr %32, align 8, !tbaa !5
  %668 = load i32, ptr %667, align 4, !tbaa !9
  %669 = load i32, ptr %72, align 4, !tbaa !9
  %670 = add nsw i32 %668, %669
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds i32, ptr %666, i64 %671
  store i32 %665, ptr %672, align 4, !tbaa !9
  br label %673

673:                                              ; preds = %661, %626
  br label %674

674:                                              ; preds = %673
  %675 = load i32, ptr %72, align 4, !tbaa !9
  %676 = add nsw i32 %675, 1
  store i32 %676, ptr %72, align 4, !tbaa !9
  br label %582, !llvm.loop !18

677:                                              ; preds = %582
  %678 = load i32, ptr %79, align 4, !tbaa !9
  %679 = sitofp i32 %678 to float
  %680 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 0
  store float %679, ptr %680, align 4, !tbaa !11
  %681 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 1
  store float 0.000000e+00, ptr %681, align 4, !tbaa !14
  %682 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 0
  %683 = load float, ptr %682, align 4, !tbaa !11
  %684 = load ptr, ptr %46, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.complex, ptr %684, i64 1
  %686 = getelementptr inbounds %struct.complex, ptr %685, i32 0, i32 0
  store float %683, ptr %686, align 4, !tbaa !11
  %687 = getelementptr inbounds %struct.complex, ptr %63, i32 0, i32 1
  %688 = load float, ptr %687, align 4, !tbaa !14
  %689 = load ptr, ptr %46, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.complex, ptr %689, i64 1
  %691 = getelementptr inbounds %struct.complex, ptr %690, i32 0, i32 1
  store float %688, ptr %691, align 4, !tbaa !14
  store i32 1, ptr %82, align 4
  br label %692

692:                                              ; preds = %677, %393, %385
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #3
  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 8, 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
  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 void @cggsvp3_(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, 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 @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, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = !{!13, !13, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}


; 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
@c_n1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [8 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 @cggsvd3_(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 nocapture noundef readonly %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) local_unnamed_addr #0 {
  %26 = alloca i32, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca i32, align 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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #4
  %30 = getelementptr inbounds i8, ptr %20, i64 -8
  %31 = getelementptr inbounds i8, ptr %22, i64 -4
  %32 = getelementptr inbounds i8, ptr %23, i64 -4
  %33 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %34 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %35 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #4
  %36 = load i32, ptr %21, align 4, !tbaa !5
  %37 = icmp eq i32 %36, -1
  store i32 0, ptr %24, align 4, !tbaa !5
  %.not = icmp ne i32 %33, 0
  br i1 %.not, label %40, label %38

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

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

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

43:                                               ; preds = %41, %40
  %.not274 = icmp ne i32 %35, 0
  br i1 %.not274, label %46, label %44

44:                                               ; preds = %43
  %45 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.3) #4
  %.not275 = icmp eq i32 %45, 0
  br i1 %.not275, label %.thread287.sink.split, label %46

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

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

52:                                               ; preds = %49
  %53 = load i32, ptr %5, align 4, !tbaa !5
  %54 = icmp slt i32 %53, 0
  br i1 %54, label %.thread287.sink.split, label %55

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

58:                                               ; preds = %55
  %59 = load i32, ptr %11, align 4, !tbaa !5
  %spec.select284 = tail call i32 @llvm.umax.i32(i32 %53, i32 1)
  %60 = icmp slt i32 %59, %spec.select284
  br i1 %60, label %.thread287.sink.split, label %61

61:                                               ; preds = %58
  %62 = load i32, ptr %15, align 4, !tbaa !5
  %63 = icmp slt i32 %62, 1
  %64 = icmp ult i32 %62, %47
  %or.cond293 = and i1 %.not, %64
  %or.cond296 = or i1 %63, %or.cond293
  br i1 %or.cond296, label %.thread287.sink.split, label %65

65:                                               ; preds = %61
  %66 = load i32, ptr %17, align 4, !tbaa !5
  %67 = icmp slt i32 %66, 1
  %68 = icmp ult i32 %66, %53
  %or.cond294 = and i1 %.not272, %68
  %or.cond297 = or i1 %67, %or.cond294
  br i1 %or.cond297, label %.thread287.sink.split, label %69

69:                                               ; preds = %65
  %70 = load i32, ptr %19, align 4, !tbaa !5
  %71 = icmp slt i32 %70, 1
  %72 = icmp ult i32 %70, %50
  %or.cond295 = and i1 %.not274, %72
  %or.cond298 = or i1 %71, %or.cond295
  br i1 %or.cond298, label %.thread287.sink.split, label %73

73:                                               ; preds = %69
  %74 = load i32, ptr %21, align 4, !tbaa !5
  %75 = icmp sgt i32 %74, 0
  %or.cond = select i1 %75, i1 true, i1 %37
  br i1 %or.cond, label %76, label %.thread287.sink.split

76:                                               ; preds = %73
  %.pr = load i32, ptr %24, align 4, !tbaa !5
  %77 = icmp eq i32 %.pr, 0
  br i1 %77, label %.thread, label %.thread287

.thread:                                          ; preds = %76
  call void @cggsvp3_(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 %27, ptr noundef nonnull %28, 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 %23, ptr noundef %22, ptr noundef %20, ptr noundef %20, ptr noundef nonnull @c_n1, ptr noundef nonnull %24) #4
  %78 = load i32, ptr %4, align 4, !tbaa !5
  %79 = load float, ptr %20, align 4, !tbaa !9
  %80 = fptosi float %79 to i32
  %81 = add nsw i32 %78, %80
  %82 = shl i32 %78, 1
  store i32 %82, ptr %26, align 4, !tbaa !5
  %83 = call i32 @llvm.smax.i32(i32 %82, i32 %81)
  %84 = call i32 @llvm.smax.i32(i32 %83, i32 1)
  %85 = uitofp nneg i32 %84 to float
  store float %85, ptr %20, align 4, !tbaa !9
  %86 = getelementptr inbounds i8, ptr %20, i64 4
  store float 0.000000e+00, ptr %86, align 4, !tbaa !12
  %.pr286.pr = load i32, ptr %24, align 4, !tbaa !5
  %.not277 = icmp eq i32 %.pr286.pr, 0
  br i1 %.not277, label %90, label %.thread287

.thread287.sink.split:                            ; preds = %73, %69, %65, %61, %58, %55, %52, %49, %46, %44, %41, %38
  %.sink316 = phi i32 [ -1, %38 ], [ -2, %41 ], [ -3, %44 ], [ -4, %46 ], [ -5, %49 ], [ -6, %52 ], [ -10, %55 ], [ -12, %58 ], [ -16, %61 ], [ -18, %65 ], [ -20, %69 ], [ -24, %73 ]
  store i32 %.sink316, ptr %24, align 4, !tbaa !5
  br label %.thread287

.thread287:                                       ; preds = %.thread287.sink.split, %76, %.thread
  %87 = phi i32 [ %.pr286.pr, %.thread ], [ %.pr, %76 ], [ %.sink316, %.thread287.sink.split ]
  %88 = sub nsw i32 0, %87
  store i32 %88, ptr %26, align 4, !tbaa !5
  %89 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %26, i32 noundef 7) #4
  br label %147

90:                                               ; preds = %.thread
  br i1 %37, label %147, label %91

91:                                               ; preds = %90
  %92 = 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 %22) #4
  %93 = 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 %22) #4
  %94 = call float @slamch_(ptr noundef nonnull @.str.6) #4
  %95 = call float @slamch_(ptr noundef nonnull @.str.7) #4
  %96 = load i32, ptr %3, align 4, !tbaa !5
  %97 = load i32, ptr %4, align 4, !tbaa !5
  %. = call i32 @llvm.smax.i32(i32 %96, i32 %97)
  %98 = sitofp i32 %. to float
  %99 = fcmp oge float %92, %95
  %100 = select i1 %99, float %92, float %95
  %101 = fmul float %100, %98
  %102 = fmul float %94, %101
  store float %102, ptr %27, align 4, !tbaa !13
  %103 = load i32, ptr %5, align 4, !tbaa !5
  %104 = call i32 @llvm.smax.i32(i32 %103, i32 %97)
  %105 = sitofp i32 %104 to float
  %106 = fcmp oge float %93, %95
  %107 = select i1 %106, float %93, float %95
  %108 = fmul float %107, %105
  %109 = fmul float %94, %108
  store float %109, ptr %28, align 4, !tbaa !13
  %110 = load i32, ptr %21, align 4, !tbaa !5
  %111 = sub nsw i32 %110, %97
  store i32 %111, ptr %26, align 4, !tbaa !5
  %112 = sext i32 %97 to i64
  %113 = getelementptr %struct.complex, ptr %30, i64 %112
  %114 = getelementptr i8, ptr %113, i64 8
  call void @cggsvp3_(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 %27, ptr noundef nonnull %28, 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 %23, ptr noundef %22, ptr noundef nonnull %20, ptr noundef %114, ptr noundef nonnull %26, ptr noundef nonnull %24) #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 %27, ptr noundef nonnull %28, 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 nonnull %20, ptr noundef nonnull %29, ptr noundef nonnull %24) #4
  call void @scopy_(ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull @c__1, ptr noundef %22, ptr noundef nonnull @c__1) #4
  %115 = load i32, ptr %7, align 4, !tbaa !5
  %116 = load i32, ptr %3, align 4, !tbaa !5
  %117 = load i32, ptr %6, align 4, !tbaa !5
  %118 = sub nsw i32 %116, %117
  %119 = call i32 @llvm.smin.i32(i32 %115, i32 %118)
  %.not281304 = icmp slt i32 %119, 1
  br i1 %.not281304, label %._crit_edge308, label %.lr.ph307.preheader

.lr.ph307.preheader:                              ; preds = %91
  %120 = add nuw i32 %119, 1
  %121 = add nuw i32 %119, 1
  %122 = add nsw i32 %119, -2
  br label %.lr.ph307

.lr.ph307:                                        ; preds = %.lr.ph307.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph307.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv = phi i32 [ 2, %.lr.ph307.preheader ], [ %indvars.iv.next, %._crit_edge.thread ]
  %.0256305 = phi i32 [ 1, %.lr.ph307.preheader ], [ %128, %._crit_edge.thread ]
  %123 = load i32, ptr %6, align 4, !tbaa !5
  %124 = add nsw i32 %123, %.0256305
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds float, ptr %31, i64 %125
  %127 = load float, ptr %126, align 4, !tbaa !13
  %128 = add nuw nsw i32 %.0256305, 1
  %.not282299.not = icmp slt i32 %.0256305, %119
  br i1 %.not282299.not, label %.lr.ph.preheader, label %._crit_edge.thread

.lr.ph.preheader:                                 ; preds = %.lr.ph307
  %129 = sext i32 %indvars.iv to i64
  %130 = sext i32 %123 to i64
  %invariant.gep = getelementptr float, ptr %31, i64 %130
  %131 = sub i32 %indvar, %119
  %132 = and i32 %131, 1
  %lcmp.mod.not.not = icmp eq i32 %132, 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 %129
  %133 = load float, ptr %gep.prol, align 4, !tbaa !13
  %134 = fcmp ogt float %133, %127
  %.1259.prol = select i1 %134, i32 %indvars.iv, i32 %.0256305
  %.1.prol = select i1 %134, float %133, float %127
  %indvars.iv.next310.prol = add nsw i64 %129, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader
  %.1259.lcssa.unr = phi i32 [ poison, %.lr.ph.preheader ], [ %.1259.prol, %.lr.ph.prol ]
  %.1.lcssa.unr = phi float [ poison, %.lr.ph.preheader ], [ %.1.prol, %.lr.ph.prol ]
  %indvars.iv309.unr = phi i64 [ %129, %.lr.ph.preheader ], [ %indvars.iv.next310.prol, %.lr.ph.prol ]
  %.0257301.unr = phi float [ %127, %.lr.ph.preheader ], [ %.1.prol, %.lr.ph.prol ]
  %.0258300.unr = phi i32 [ %.0256305, %.lr.ph.preheader ], [ %.1259.prol, %.lr.ph.prol ]
  %135 = icmp eq i32 %122, %indvar
  br i1 %135, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv309 = phi i64 [ %indvars.iv.next310.1, %.lr.ph ], [ %indvars.iv309.unr, %.lr.ph.prol.loopexit ]
  %.0257301 = phi float [ %.1.1, %.lr.ph ], [ %.0257301.unr, %.lr.ph.prol.loopexit ]
  %.0258300 = phi i32 [ %.1259.1, %.lr.ph ], [ %.0258300.unr, %.lr.ph.prol.loopexit ]
  %gep = getelementptr float, ptr %invariant.gep, i64 %indvars.iv309
  %136 = load float, ptr %gep, align 4, !tbaa !13
  %137 = fcmp ogt float %136, %.0257301
  %138 = trunc nsw i64 %indvars.iv309 to i32
  %.1259 = select i1 %137, i32 %138, i32 %.0258300
  %.1 = select i1 %137, float %136, float %.0257301
  %indvars.iv.next310 = add nsw i64 %indvars.iv309, 1
  %gep.1 = getelementptr float, ptr %invariant.gep, i64 %indvars.iv.next310
  %139 = load float, ptr %gep.1, align 4, !tbaa !13
  %140 = fcmp ogt float %139, %.1
  %141 = trunc nsw i64 %indvars.iv.next310 to i32
  %.1259.1 = select i1 %140, i32 %141, i32 %.1259
  %.1.1 = select i1 %140, float %139, float %.1
  %indvars.iv.next310.1 = add nsw i64 %indvars.iv309, 2
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next310.1 to i32
  %exitcond.not.1 = icmp eq i32 %120, %lftr.wideiv.1
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %.lr.ph.prol.loopexit
  %.1259.lcssa = phi i32 [ %.1259.lcssa.unr, %.lr.ph.prol.loopexit ], [ %.1259.1, %.lr.ph ]
  %.1.lcssa = phi float [ %.1.lcssa.unr, %.lr.ph.prol.loopexit ], [ %.1.1, %.lr.ph ]
  %.not283 = icmp eq i32 %.1259.lcssa, %.0256305
  br i1 %.not283, label %._crit_edge.thread, label %142

142:                                              ; preds = %._crit_edge
  %143 = add nsw i32 %.1259.lcssa, %123
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds float, ptr %31, i64 %144
  store float %127, ptr %145, align 4, !tbaa !13
  store float %.1.lcssa, ptr %126, align 4, !tbaa !13
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph307, %._crit_edge, %142
  %.sink = phi i32 [ %143, %142 ], [ %124, %._crit_edge ], [ %124, %.lr.ph307 ]
  %146 = getelementptr inbounds i32, ptr %32, i64 %125
  store i32 %.sink, ptr %146, align 4
  %indvars.iv.next = add nuw i32 %indvars.iv, 1
  %exitcond312.not = icmp eq i32 %indvars.iv, %121
  %indvar.next = add i32 %indvar, 1
  br i1 %exitcond312.not, label %._crit_edge308, label %.lr.ph307, !llvm.loop !16

._crit_edge308:                                   ; preds = %._crit_edge.thread, %91
  store float %85, ptr %20, align 4, !tbaa !9
  store float 0.000000e+00, ptr %86, align 4, !tbaa !12
  br label %147

147:                                              ; preds = %90, %._crit_edge308, %.thread287
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #4
  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
  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 void @cggsvp3_(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, 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 @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.smax.i32(i32, i32) #3

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

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

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


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