; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8

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

138:                                              ; preds = %24
  %139 = load ptr, ptr %26, align 8, !tbaa !5
  %140 = call i64 @lsame_(ptr noundef %139, ptr noundef @.str.3)
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %144, label %142

142:                                              ; preds = %138
  %143 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -1, ptr %143, align 8, !tbaa !9
  br label %265

144:                                              ; preds = %138, %24
  %145 = load i64, ptr %76, align 8, !tbaa !9
  %146 = icmp ne i64 %145, 0
  br i1 %146, label %153, label %147

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

151:                                              ; preds = %147
  %152 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -2, ptr %152, align 8, !tbaa !9
  br label %264

153:                                              ; preds = %147, %144
  %154 = load i64, ptr %74, align 8, !tbaa !9
  %155 = icmp ne i64 %154, 0
  br i1 %155, label %162, label %156

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

160:                                              ; preds = %156
  %161 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -3, ptr %161, align 8, !tbaa !9
  br label %263

162:                                              ; preds = %156, %153
  %163 = load ptr, ptr %29, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp slt i64 %164, 0
  br i1 %165, label %166, label %168

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

168:                                              ; preds = %162
  %169 = load ptr, ptr %30, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = icmp slt i64 %170, 0
  br i1 %171, label %172, label %174

172:                                              ; preds = %168
  %173 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -5, ptr %173, align 8, !tbaa !9
  br label %261

174:                                              ; preds = %168
  %175 = load ptr, ptr %31, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = icmp slt i64 %176, 0
  br i1 %177, label %178, label %180

178:                                              ; preds = %174
  %179 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -6, ptr %179, align 8, !tbaa !9
  br label %260

180:                                              ; preds = %174
  %181 = load ptr, ptr %35, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = load ptr, ptr %29, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = icmp sge i64 1, %184
  br i1 %185, label %186, label %187

186:                                              ; preds = %180
  br label %190

187:                                              ; preds = %180
  %188 = load ptr, ptr %29, align 8, !tbaa !5
  %189 = load i64, ptr %188, align 8, !tbaa !9
  br label %190

190:                                              ; preds = %187, %186
  %191 = phi i64 [ 1, %186 ], [ %189, %187 ]
  %192 = icmp slt i64 %182, %191
  br i1 %192, label %193, label %195

193:                                              ; preds = %190
  %194 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -10, ptr %194, align 8, !tbaa !9
  br label %259

195:                                              ; preds = %190
  %196 = load ptr, ptr %37, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = load ptr, ptr %31, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = icmp sge i64 1, %199
  br i1 %200, label %201, label %202

201:                                              ; preds = %195
  br label %205

202:                                              ; preds = %195
  %203 = load ptr, ptr %31, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %202, %201
  %206 = phi i64 [ 1, %201 ], [ %204, %202 ]
  %207 = icmp slt i64 %197, %206
  br i1 %207, label %208, label %210

208:                                              ; preds = %205
  %209 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -12, ptr %209, align 8, !tbaa !9
  br label %258

210:                                              ; preds = %205
  %211 = load ptr, ptr %41, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp slt i64 %212, 1
  br i1 %213, label %223, label %214

214:                                              ; preds = %210
  %215 = load i64, ptr %75, align 8, !tbaa !9
  %216 = icmp ne i64 %215, 0
  br i1 %216, label %217, label %225

217:                                              ; preds = %214
  %218 = load ptr, ptr %41, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = load ptr, ptr %29, align 8, !tbaa !5
  %221 = load i64, ptr %220, align 8, !tbaa !9
  %222 = icmp slt i64 %219, %221
  br i1 %222, label %223, label %225

223:                                              ; preds = %217, %210
  %224 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -16, ptr %224, align 8, !tbaa !9
  br label %257

225:                                              ; preds = %217, %214
  %226 = load ptr, ptr %43, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = icmp slt i64 %227, 1
  br i1 %228, label %238, label %229

229:                                              ; preds = %225
  %230 = load i64, ptr %76, align 8, !tbaa !9
  %231 = icmp ne i64 %230, 0
  br i1 %231, label %232, label %240

232:                                              ; preds = %229
  %233 = load ptr, ptr %43, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = load ptr, ptr %31, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  %237 = icmp slt i64 %234, %236
  br i1 %237, label %238, label %240

238:                                              ; preds = %232, %225
  %239 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -18, ptr %239, align 8, !tbaa !9
  br label %256

240:                                              ; preds = %232, %229
  %241 = load ptr, ptr %45, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = icmp slt i64 %242, 1
  br i1 %243, label %253, label %244

244:                                              ; preds = %240
  %245 = load i64, ptr %74, align 8, !tbaa !9
  %246 = icmp ne i64 %245, 0
  br i1 %246, label %247, label %255

247:                                              ; preds = %244
  %248 = load ptr, ptr %45, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = load ptr, ptr %30, align 8, !tbaa !5
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = icmp slt i64 %249, %251
  br i1 %252, label %253, label %255

253:                                              ; preds = %247, %240
  %254 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -20, ptr %254, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %253, %247, %244
  br label %256

256:                                              ; preds = %255, %238
  br label %257

257:                                              ; preds = %256, %223
  br label %258

258:                                              ; preds = %257, %208
  br label %259

259:                                              ; preds = %258, %193
  br label %260

260:                                              ; preds = %259, %178
  br label %261

261:                                              ; preds = %260, %172
  br label %262

262:                                              ; preds = %261, %166
  br label %263

263:                                              ; preds = %262, %160
  br label %264

264:                                              ; preds = %263, %151
  br label %265

265:                                              ; preds = %264, %142
  %266 = load ptr, ptr %49, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  %268 = icmp ne i64 %267, 0
  br i1 %268, label %269, label %274

269:                                              ; preds = %265
  %270 = load ptr, ptr %49, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  %272 = sub nsw i64 0, %271
  store i64 %272, ptr %60, align 8, !tbaa !9
  %273 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %60)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %78, align 4
  br label %546

274:                                              ; preds = %265
  %275 = load ptr, ptr %29, align 8, !tbaa !5
  %276 = load ptr, ptr %30, align 8, !tbaa !5
  %277 = load ptr, ptr %34, align 8, !tbaa !5
  %278 = load i64, ptr %51, align 8, !tbaa !9
  %279 = getelementptr inbounds %struct.complex, ptr %277, i64 %278
  %280 = load ptr, ptr %35, align 8, !tbaa !5
  %281 = load ptr, ptr %47, align 8, !tbaa !5
  %282 = getelementptr inbounds float, ptr %281, i64 1
  %283 = call double @clange_(ptr noundef @.str.5, ptr noundef %275, ptr noundef %276, ptr noundef %279, ptr noundef %280, ptr noundef %282)
  %284 = fptrunc double %283 to float
  store float %284, ptr %72, align 4, !tbaa !11
  %285 = load ptr, ptr %31, align 8, !tbaa !5
  %286 = load ptr, ptr %30, align 8, !tbaa !5
  %287 = load ptr, ptr %36, align 8, !tbaa !5
  %288 = load i64, ptr %53, align 8, !tbaa !9
  %289 = getelementptr inbounds %struct.complex, ptr %287, i64 %288
  %290 = load ptr, ptr %37, align 8, !tbaa !5
  %291 = load ptr, ptr %47, align 8, !tbaa !5
  %292 = getelementptr inbounds float, ptr %291, i64 1
  %293 = call double @clange_(ptr noundef @.str.5, ptr noundef %285, ptr noundef %286, ptr noundef %289, ptr noundef %290, ptr noundef %292)
  %294 = fptrunc double %293 to float
  store float %294, ptr %73, align 4, !tbaa !11
  %295 = call double @slamch_(ptr noundef @.str.6)
  %296 = fptrunc double %295 to float
  store float %296, ptr %64, align 4, !tbaa !11
  %297 = call double @slamch_(ptr noundef @.str.7)
  %298 = fptrunc double %297 to float
  store float %298, ptr %69, align 4, !tbaa !11
  %299 = load ptr, ptr %29, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  %301 = load ptr, ptr %30, align 8, !tbaa !5
  %302 = load i64, ptr %301, align 8, !tbaa !9
  %303 = icmp sge i64 %300, %302
  br i1 %303, label %304, label %307

304:                                              ; preds = %274
  %305 = load ptr, ptr %29, align 8, !tbaa !5
  %306 = load i64, ptr %305, align 8, !tbaa !9
  br label %310

307:                                              ; preds = %274
  %308 = load ptr, ptr %30, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  br label %310

310:                                              ; preds = %307, %304
  %311 = phi i64 [ %306, %304 ], [ %309, %307 ]
  %312 = sitofp i64 %311 to double
  %313 = load float, ptr %72, align 4, !tbaa !11
  %314 = load float, ptr %69, align 4, !tbaa !11
  %315 = fcmp oge float %313, %314
  br i1 %315, label %316, label %318

316:                                              ; preds = %310
  %317 = load float, ptr %72, align 4, !tbaa !11
  br label %320

318:                                              ; preds = %310
  %319 = load float, ptr %69, align 4, !tbaa !11
  br label %320

320:                                              ; preds = %318, %316
  %321 = phi float [ %317, %316 ], [ %319, %318 ]
  %322 = fpext float %321 to double
  %323 = fmul double %312, %322
  %324 = load float, ptr %64, align 4, !tbaa !11
  %325 = fpext float %324 to double
  %326 = fmul double %323, %325
  %327 = fptrunc double %326 to float
  store float %327, ptr %66, align 4, !tbaa !11
  %328 = load ptr, ptr %31, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = load ptr, ptr %30, align 8, !tbaa !5
  %331 = load i64, ptr %330, align 8, !tbaa !9
  %332 = icmp sge i64 %329, %331
  br i1 %332, label %333, label %336

333:                                              ; preds = %320
  %334 = load ptr, ptr %31, align 8, !tbaa !5
  %335 = load i64, ptr %334, align 8, !tbaa !9
  br label %339

336:                                              ; preds = %320
  %337 = load ptr, ptr %30, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  br label %339

339:                                              ; preds = %336, %333
  %340 = phi i64 [ %335, %333 ], [ %338, %336 ]
  %341 = sitofp i64 %340 to double
  %342 = load float, ptr %73, align 4, !tbaa !11
  %343 = load float, ptr %69, align 4, !tbaa !11
  %344 = fcmp oge float %342, %343
  br i1 %344, label %345, label %347

345:                                              ; preds = %339
  %346 = load float, ptr %73, align 4, !tbaa !11
  br label %349

347:                                              ; preds = %339
  %348 = load float, ptr %69, align 4, !tbaa !11
  br label %349

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

450:                                              ; preds = %349
  %451 = load i64, ptr %60, align 8, !tbaa !9
  br label %454

452:                                              ; preds = %349
  %453 = load i64, ptr %61, align 8, !tbaa !9
  br label %454

454:                                              ; preds = %452, %450
  %455 = phi i64 [ %451, %450 ], [ %453, %452 ]
  store i64 %455, ptr %65, align 8, !tbaa !9
  %456 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %456, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %457

457:                                              ; preds = %542, %454
  %458 = load i64, ptr %62, align 8, !tbaa !9
  %459 = load i64, ptr %60, align 8, !tbaa !9
  %460 = icmp sle i64 %458, %459
  br i1 %460, label %461, label %545

461:                                              ; preds = %457
  %462 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %462, ptr %67, align 8, !tbaa !9
  %463 = load ptr, ptr %47, align 8, !tbaa !5
  %464 = load ptr, ptr %32, align 8, !tbaa !5
  %465 = load i64, ptr %464, align 8, !tbaa !9
  %466 = load i64, ptr %62, align 8, !tbaa !9
  %467 = add nsw i64 %465, %466
  %468 = getelementptr inbounds float, ptr %463, i64 %467
  %469 = load float, ptr %468, align 4, !tbaa !11
  store float %469, ptr %71, align 4, !tbaa !11
  %470 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %470, ptr %61, align 8, !tbaa !9
  %471 = load i64, ptr %62, align 8, !tbaa !9
  %472 = add nsw i64 %471, 1
  store i64 %472, ptr %63, align 8, !tbaa !9
  br label %473

473:                                              ; preds = %492, %461
  %474 = load i64, ptr %63, align 8, !tbaa !9
  %475 = load i64, ptr %61, align 8, !tbaa !9
  %476 = icmp sle i64 %474, %475
  br i1 %476, label %477, label %495

477:                                              ; preds = %473
  %478 = load ptr, ptr %47, align 8, !tbaa !5
  %479 = load ptr, ptr %32, align 8, !tbaa !5
  %480 = load i64, ptr %479, align 8, !tbaa !9
  %481 = load i64, ptr %63, align 8, !tbaa !9
  %482 = add nsw i64 %480, %481
  %483 = getelementptr inbounds float, ptr %478, i64 %482
  %484 = load float, ptr %483, align 4, !tbaa !11
  store float %484, ptr %70, align 4, !tbaa !11
  %485 = load float, ptr %70, align 4, !tbaa !11
  %486 = load float, ptr %71, align 4, !tbaa !11
  %487 = fcmp ogt float %485, %486
  br i1 %487, label %488, label %491

488:                                              ; preds = %477
  %489 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %489, ptr %67, align 8, !tbaa !9
  %490 = load float, ptr %70, align 4, !tbaa !11
  store float %490, ptr %71, align 4, !tbaa !11
  br label %491

491:                                              ; preds = %488, %477
  br label %492

492:                                              ; preds = %491
  %493 = load i64, ptr %63, align 8, !tbaa !9
  %494 = add nsw i64 %493, 1
  store i64 %494, ptr %63, align 8, !tbaa !9
  br label %473, !llvm.loop !13

495:                                              ; preds = %473
  %496 = load i64, ptr %67, align 8, !tbaa !9
  %497 = load i64, ptr %62, align 8, !tbaa !9
  %498 = icmp ne i64 %496, %497
  br i1 %498, label %499, label %530

499:                                              ; preds = %495
  %500 = load ptr, ptr %47, align 8, !tbaa !5
  %501 = load ptr, ptr %32, align 8, !tbaa !5
  %502 = load i64, ptr %501, align 8, !tbaa !9
  %503 = load i64, ptr %62, align 8, !tbaa !9
  %504 = add nsw i64 %502, %503
  %505 = getelementptr inbounds float, ptr %500, i64 %504
  %506 = load float, ptr %505, align 4, !tbaa !11
  %507 = load ptr, ptr %47, align 8, !tbaa !5
  %508 = load ptr, ptr %32, align 8, !tbaa !5
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = load i64, ptr %67, align 8, !tbaa !9
  %511 = add nsw i64 %509, %510
  %512 = getelementptr inbounds float, ptr %507, i64 %511
  store float %506, ptr %512, align 4, !tbaa !11
  %513 = load float, ptr %71, align 4, !tbaa !11
  %514 = load ptr, ptr %47, align 8, !tbaa !5
  %515 = load ptr, ptr %32, align 8, !tbaa !5
  %516 = load i64, ptr %515, align 8, !tbaa !9
  %517 = load i64, ptr %62, align 8, !tbaa !9
  %518 = add nsw i64 %516, %517
  %519 = getelementptr inbounds float, ptr %514, i64 %518
  store float %513, ptr %519, align 4, !tbaa !11
  %520 = load ptr, ptr %32, align 8, !tbaa !5
  %521 = load i64, ptr %520, align 8, !tbaa !9
  %522 = load i64, ptr %67, align 8, !tbaa !9
  %523 = add nsw i64 %521, %522
  %524 = load ptr, ptr %48, align 8, !tbaa !5
  %525 = load ptr, ptr %32, align 8, !tbaa !5
  %526 = load i64, ptr %525, align 8, !tbaa !9
  %527 = load i64, ptr %62, align 8, !tbaa !9
  %528 = add nsw i64 %526, %527
  %529 = getelementptr inbounds i64, ptr %524, i64 %528
  store i64 %523, ptr %529, align 8, !tbaa !9
  br label %541

530:                                              ; preds = %495
  %531 = load ptr, ptr %32, align 8, !tbaa !5
  %532 = load i64, ptr %531, align 8, !tbaa !9
  %533 = load i64, ptr %62, align 8, !tbaa !9
  %534 = add nsw i64 %532, %533
  %535 = load ptr, ptr %48, align 8, !tbaa !5
  %536 = load ptr, ptr %32, align 8, !tbaa !5
  %537 = load i64, ptr %536, align 8, !tbaa !9
  %538 = load i64, ptr %62, align 8, !tbaa !9
  %539 = add nsw i64 %537, %538
  %540 = getelementptr inbounds i64, ptr %535, i64 %539
  store i64 %534, ptr %540, align 8, !tbaa !9
  br label %541

541:                                              ; preds = %530, %499
  br label %542

542:                                              ; preds = %541
  %543 = load i64, ptr %62, align 8, !tbaa !9
  %544 = add nsw i64 %543, 1
  store i64 %544, ptr %62, align 8, !tbaa !9
  br label %457, !llvm.loop !15

545:                                              ; preds = %457
  store i32 0, ptr %25, align 4
  store i32 1, ptr %78, align 4
  br label %546

546:                                              ; preds = %545, %269
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  %547 = load i32, ptr %25, align 4
  ret i32 %547
}

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

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

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

declare double @clange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare double @slamch_(ptr noundef) #2

declare i32 @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 i32 @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 i32 @f2c_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 = !{!"long", !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 i64, align 8

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

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

36:                                               ; preds = %34, %24
  %.not220 = icmp ne i64 %32, 0
  br i1 %.not220, label %39, label %37

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

39:                                               ; preds = %37, %36
  %.not222 = icmp ne i64 %33, 0
  br i1 %.not222, label %42, label %40

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

42:                                               ; preds = %40, %39
  %43 = load i64, ptr %3, align 8, !tbaa !5
  %44 = icmp slt i64 %43, 0
  br i1 %44, label %.thread.sink.split, label %45

45:                                               ; preds = %42
  %46 = load i64, ptr %4, align 8, !tbaa !5
  %47 = icmp slt i64 %46, 0
  br i1 %47, label %.thread.sink.split, label %48

48:                                               ; preds = %45
  %49 = load i64, ptr %5, align 8, !tbaa !5
  %50 = icmp slt i64 %49, 0
  br i1 %50, label %.thread.sink.split, label %51

51:                                               ; preds = %48
  %52 = load i64, ptr %9, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %43, i64 1)
  %53 = icmp slt i64 %52, %spec.select
  br i1 %53, label %.thread.sink.split, label %54

54:                                               ; preds = %51
  %55 = load i64, ptr %11, align 8, !tbaa !5
  %spec.select231 = tail call i64 @llvm.umax.i64(i64 %49, i64 1)
  %56 = icmp slt i64 %55, %spec.select231
  br i1 %56, label %.thread.sink.split, label %57

57:                                               ; preds = %54
  %58 = load i64, ptr %15, align 8, !tbaa !5
  %59 = icmp slt i64 %58, 1
  %60 = icmp ult i64 %58, %43
  %or.cond = and i1 %.not, %60
  %or.cond235 = or i1 %59, %or.cond
  br i1 %or.cond235, label %.thread.sink.split, label %61

61:                                               ; preds = %57
  %62 = load i64, ptr %17, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 1
  %64 = icmp ult i64 %62, %49
  %or.cond233 = and i1 %.not220, %64
  %or.cond236 = or i1 %63, %or.cond233
  br i1 %or.cond236, label %.thread.sink.split, label %65

65:                                               ; preds = %61
  %66 = load i64, ptr %19, align 8, !tbaa !5
  %67 = icmp slt i64 %66, 1
  %68 = icmp ult i64 %66, %46
  %or.cond234 = and i1 %.not222, %68
  %or.cond237 = or i1 %67, %or.cond234
  br i1 %or.cond237, label %.thread.sink.split, label %69

69:                                               ; preds = %65
  %.pr = load i64, ptr %23, align 8, !tbaa !5
  %.not224 = icmp eq i64 %.pr, 0
  br i1 %.not224, label %73, label %.thread

.thread.sink.split:                               ; preds = %65, %61, %57, %54, %51, %48, %45, %42, %40, %37, %34
  %.sink = phi i64 [ -1, %34 ], [ -2, %37 ], [ -3, %40 ], [ -4, %42 ], [ -5, %45 ], [ -6, %48 ], [ -10, %51 ], [ -12, %54 ], [ -16, %57 ], [ -18, %61 ], [ -20, %65 ]
  store i64 %.sink, ptr %23, align 8, !tbaa !5
  br label %.thread

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

73:                                               ; preds = %69
  %74 = tail call double @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
  %75 = fptrunc double %74 to float
  %76 = tail call double @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 = fptrunc double %76 to float
  %78 = tail call double @slamch_(ptr noundef nonnull @.str.6) #4
  %79 = fptrunc double %78 to float
  %80 = tail call double @slamch_(ptr noundef nonnull @.str.7) #4
  %81 = fptrunc double %80 to float
  %82 = load i64, ptr %3, align 8, !tbaa !5
  %83 = load i64, ptr %4, align 8, !tbaa !5
  %. = tail call i64 @llvm.smax.i64(i64 %82, i64 %83)
  %84 = sitofp i64 %. to double
  %85 = fcmp oge float %75, %81
  %86 = select i1 %85, float %75, float %81
  %87 = fpext float %86 to double
  %88 = fmul double %84, %87
  %89 = fpext float %79 to double
  %90 = fmul double %88, %89
  %91 = fptrunc double %90 to float
  store float %91, ptr %26, align 4, !tbaa !9
  %92 = load i64, ptr %5, align 8, !tbaa !5
  %93 = tail call i64 @llvm.smax.i64(i64 %92, i64 %83)
  %94 = sitofp i64 %93 to double
  %95 = fcmp oge float %77, %81
  %96 = select i1 %95, float %77, float %81
  %97 = fpext float %96 to double
  %98 = fmul double %97, %94
  %99 = fmul double %98, %89
  %100 = fptrunc double %99 to float
  store float %100, ptr %27, align 4, !tbaa !9
  %101 = getelementptr %struct.complex, ptr %20, i64 %83
  %102 = call i32 @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 %101, ptr noundef nonnull %23) #4
  %103 = call i32 @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
  %104 = call i32 @f2c_scopy(ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull @c__1, ptr noundef %21, ptr noundef nonnull @c__1) #4
  %105 = load i64, ptr %7, align 8, !tbaa !5
  %106 = load i64, ptr %3, align 8, !tbaa !5
  %107 = load i64, ptr %6, align 8, !tbaa !5
  %108 = sub nsw i64 %106, %107
  %109 = call i64 @llvm.smin.i64(i64 %105, i64 %108)
  %.not228243 = icmp slt i64 %109, 1
  br i1 %.not228243, label %.loopexit, label %.lr.ph246

.lr.ph246:                                        ; preds = %73, %126
  %.0208244 = phi i64 [ %114, %126 ], [ 1, %73 ]
  %110 = load i64, ptr %6, align 8, !tbaa !5
  %111 = getelementptr float, ptr %29, i64 %110
  %112 = getelementptr float, ptr %111, i64 %.0208244
  %113 = load float, ptr %112, align 4, !tbaa !9
  %114 = add nuw i64 %.0208244, 1
  %.not229238.not = icmp slt i64 %.0208244, %109
  br i1 %.not229238.not, label %.lr.ph, label %._crit_edge.thread

.lr.ph:                                           ; preds = %.lr.ph246, %.lr.ph
  %.0204241 = phi float [ %.1, %.lr.ph ], [ %113, %.lr.ph246 ]
  %.0205240 = phi i64 [ %.1206, %.lr.ph ], [ %.0208244, %.lr.ph246 ]
  %.0207239 = phi i64 [ %118, %.lr.ph ], [ %114, %.lr.ph246 ]
  %115 = getelementptr float, ptr %111, i64 %.0207239
  %116 = load float, ptr %115, align 4, !tbaa !9
  %117 = fcmp ogt float %116, %.0204241
  %.1206 = select i1 %117, i64 %.0207239, i64 %.0205240
  %.1 = select i1 %117, float %116, float %.0204241
  %118 = add nuw nsw i64 %.0207239, 1
  %.not229.not = icmp slt i64 %.0207239, %109
  br i1 %.not229.not, label %.lr.ph, label %._crit_edge, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph
  %.not230 = icmp eq i64 %.1206, %.0208244
  br i1 %.not230, label %._crit_edge.thread, label %119

119:                                              ; preds = %._crit_edge
  %120 = getelementptr float, ptr %111, i64 %.1206
  store float %113, ptr %120, align 4, !tbaa !9
  store float %.1, ptr %112, align 4, !tbaa !9
  %121 = add nsw i64 %.1206, %110
  %122 = getelementptr i64, ptr %30, i64 %110
  %123 = getelementptr i64, ptr %122, i64 %.0208244
  store i64 %121, ptr %123, align 8, !tbaa !5
  br label %126

._crit_edge.thread:                               ; preds = %.lr.ph246, %._crit_edge
  %124 = add nsw i64 %110, %.0208244
  %125 = getelementptr inbounds i64, ptr %30, i64 %124
  store i64 %124, ptr %125, align 8, !tbaa !5
  br label %126

126:                                              ; preds = %119, %._crit_edge.thread
  %exitcond.not = icmp eq i64 %.0208244, %109
  br i1 %exitcond.not, label %.loopexit, label %.lr.ph246, !llvm.loop !13

.loopexit:                                        ; preds = %126, %73, %.thread
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr nonnull %25) #4
  ret i32 0
}

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

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

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

declare double @clange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #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 = !{!"long", !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,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass