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

; 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.doublecomplex = type { double, double }

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

; Function Attrs: nounwind uwtable
define dso_local i32 @zgedmdq_(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, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %31, ptr noundef %32, ptr noundef %33, ptr noundef %34) #0 {
  %36 = alloca i32, align 4
  %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 ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, 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 i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca double, align 8
  %89 = alloca i32, align 4
  %90 = alloca [1 x i8], align 1
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca %struct.doublecomplex, align 8
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca i32, align 4
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca i32, align 4
  %115 = alloca i32, align 4
  %116 = alloca double, align 8
  %117 = alloca i32, align 4
  store ptr %0, ptr %37, align 8, !tbaa !5
  store ptr %1, ptr %38, align 8, !tbaa !5
  store ptr %2, ptr %39, align 8, !tbaa !5
  store ptr %3, ptr %40, align 8, !tbaa !5
  store ptr %4, ptr %41, align 8, !tbaa !5
  store ptr %5, ptr %42, align 8, !tbaa !5
  store ptr %6, ptr %43, align 8, !tbaa !5
  store ptr %7, ptr %44, align 8, !tbaa !5
  store ptr %8, ptr %45, align 8, !tbaa !5
  store ptr %9, ptr %46, align 8, !tbaa !5
  store ptr %10, ptr %47, align 8, !tbaa !5
  store ptr %11, ptr %48, align 8, !tbaa !5
  store ptr %12, ptr %49, align 8, !tbaa !5
  store ptr %13, ptr %50, align 8, !tbaa !5
  store ptr %14, ptr %51, align 8, !tbaa !5
  store ptr %15, ptr %52, align 8, !tbaa !5
  store ptr %16, ptr %53, align 8, !tbaa !5
  store ptr %17, ptr %54, align 8, !tbaa !5
  store ptr %18, ptr %55, align 8, !tbaa !5
  store ptr %19, ptr %56, align 8, !tbaa !5
  store ptr %20, ptr %57, align 8, !tbaa !5
  store ptr %21, ptr %58, align 8, !tbaa !5
  store ptr %22, ptr %59, align 8, !tbaa !5
  store ptr %23, ptr %60, align 8, !tbaa !5
  store ptr %24, ptr %61, align 8, !tbaa !5
  store ptr %25, ptr %62, align 8, !tbaa !5
  store ptr %26, ptr %63, align 8, !tbaa !5
  store ptr %27, ptr %64, align 8, !tbaa !5
  store ptr %28, ptr %65, align 8, !tbaa !5
  store ptr %29, ptr %66, align 8, !tbaa !5
  store ptr %30, ptr %67, align 8, !tbaa !5
  store ptr %31, ptr %68, align 8, !tbaa !5
  store ptr %32, ptr %69, align 8, !tbaa !5
  store ptr %33, ptr %70, align 8, !tbaa !5
  store ptr %34, ptr %71, align 8, !tbaa !5
  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
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %96) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #3
  %118 = load ptr, ptr %47, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  store i32 %119, ptr %72, align 4, !tbaa !9
  %120 = load i32, ptr %72, align 4, !tbaa !9
  %121 = mul nsw i32 %120, 1
  %122 = add nsw i32 1, %121
  store i32 %122, ptr %73, align 4, !tbaa !9
  %123 = load i32, ptr %73, align 4, !tbaa !9
  %124 = load ptr, ptr %46, align 8, !tbaa !5
  %125 = sext i32 %123 to i64
  %126 = sub i64 0, %125
  %127 = getelementptr inbounds %struct.doublecomplex, ptr %124, i64 %126
  store ptr %127, ptr %46, align 8, !tbaa !5
  %128 = load ptr, ptr %49, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  store i32 %129, ptr %74, align 4, !tbaa !9
  %130 = load i32, ptr %74, align 4, !tbaa !9
  %131 = mul nsw i32 %130, 1
  %132 = add nsw i32 1, %131
  store i32 %132, ptr %75, align 4, !tbaa !9
  %133 = load i32, ptr %75, align 4, !tbaa !9
  %134 = load ptr, ptr %48, align 8, !tbaa !5
  %135 = sext i32 %133 to i64
  %136 = sub i64 0, %135
  %137 = getelementptr inbounds %struct.doublecomplex, ptr %134, i64 %136
  store ptr %137, ptr %48, align 8, !tbaa !5
  %138 = load ptr, ptr %51, align 8, !tbaa !5
  %139 = load i32, ptr %138, align 4, !tbaa !9
  store i32 %139, ptr %76, align 4, !tbaa !9
  %140 = load i32, ptr %76, align 4, !tbaa !9
  %141 = mul nsw i32 %140, 1
  %142 = add nsw i32 1, %141
  store i32 %142, ptr %77, align 4, !tbaa !9
  %143 = load i32, ptr %77, align 4, !tbaa !9
  %144 = load ptr, ptr %50, align 8, !tbaa !5
  %145 = sext i32 %143 to i64
  %146 = sub i64 0, %145
  %147 = getelementptr inbounds %struct.doublecomplex, ptr %144, i64 %146
  store ptr %147, ptr %50, align 8, !tbaa !5
  %148 = load ptr, ptr %55, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.doublecomplex, ptr %148, i32 -1
  store ptr %149, ptr %55, align 8, !tbaa !5
  %150 = load ptr, ptr %57, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  store i32 %151, ptr %78, align 4, !tbaa !9
  %152 = load i32, ptr %78, align 4, !tbaa !9
  %153 = mul nsw i32 %152, 1
  %154 = add nsw i32 1, %153
  store i32 %154, ptr %79, align 4, !tbaa !9
  %155 = load i32, ptr %79, align 4, !tbaa !9
  %156 = load ptr, ptr %56, align 8, !tbaa !5
  %157 = sext i32 %155 to i64
  %158 = sub i64 0, %157
  %159 = getelementptr inbounds %struct.doublecomplex, ptr %156, i64 %158
  store ptr %159, ptr %56, align 8, !tbaa !5
  %160 = load ptr, ptr %58, align 8, !tbaa !5
  %161 = getelementptr inbounds double, ptr %160, i32 -1
  store ptr %161, ptr %58, align 8, !tbaa !5
  %162 = load ptr, ptr %60, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  store i32 %163, ptr %80, align 4, !tbaa !9
  %164 = load i32, ptr %80, align 4, !tbaa !9
  %165 = mul nsw i32 %164, 1
  %166 = add nsw i32 1, %165
  store i32 %166, ptr %81, align 4, !tbaa !9
  %167 = load i32, ptr %81, align 4, !tbaa !9
  %168 = load ptr, ptr %59, align 8, !tbaa !5
  %169 = sext i32 %167 to i64
  %170 = sub i64 0, %169
  %171 = getelementptr inbounds %struct.doublecomplex, ptr %168, i64 %170
  store ptr %171, ptr %59, align 8, !tbaa !5
  %172 = load ptr, ptr %62, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  store i32 %173, ptr %82, align 4, !tbaa !9
  %174 = load i32, ptr %82, align 4, !tbaa !9
  %175 = mul nsw i32 %174, 1
  %176 = add nsw i32 1, %175
  store i32 %176, ptr %83, align 4, !tbaa !9
  %177 = load i32, ptr %83, align 4, !tbaa !9
  %178 = load ptr, ptr %61, align 8, !tbaa !5
  %179 = sext i32 %177 to i64
  %180 = sub i64 0, %179
  %181 = getelementptr inbounds %struct.doublecomplex, ptr %178, i64 %180
  store ptr %181, ptr %61, align 8, !tbaa !5
  %182 = load ptr, ptr %64, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  store i32 %183, ptr %84, align 4, !tbaa !9
  %184 = load i32, ptr %84, align 4, !tbaa !9
  %185 = mul nsw i32 %184, 1
  %186 = add nsw i32 1, %185
  store i32 %186, ptr %85, align 4, !tbaa !9
  %187 = load i32, ptr %85, align 4, !tbaa !9
  %188 = load ptr, ptr %63, align 8, !tbaa !5
  %189 = sext i32 %187 to i64
  %190 = sub i64 0, %189
  %191 = getelementptr inbounds %struct.doublecomplex, ptr %188, i64 %190
  store ptr %191, ptr %63, align 8, !tbaa !5
  %192 = load ptr, ptr %65, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.doublecomplex, ptr %192, i32 -1
  store ptr %193, ptr %65, align 8, !tbaa !5
  %194 = load ptr, ptr %67, align 8, !tbaa !5
  %195 = getelementptr inbounds double, ptr %194, i32 -1
  store ptr %195, ptr %67, align 8, !tbaa !5
  %196 = load ptr, ptr %69, align 8, !tbaa !5
  %197 = getelementptr inbounds i32, ptr %196, i32 -1
  store ptr %197, ptr %69, align 8, !tbaa !5
  store double 1.000000e+00, ptr %116, align 8, !tbaa !11
  store double 0.000000e+00, ptr %88, align 8, !tbaa !11
  %198 = getelementptr inbounds %struct.doublecomplex, ptr %96, i32 0, i32 0
  store double 0.000000e+00, ptr %198, align 8, !tbaa !13
  %199 = getelementptr inbounds %struct.doublecomplex, ptr %96, i32 0, i32 1
  store double 0.000000e+00, ptr %199, align 8, !tbaa !15
  %200 = load ptr, ptr %39, align 8, !tbaa !5
  %201 = call i32 @lsame_(ptr noundef %200, ptr noundef @.str)
  store i32 %201, ptr %113, align 4, !tbaa !9
  %202 = load ptr, ptr %37, align 8, !tbaa !5
  %203 = call i32 @lsame_(ptr noundef %202, ptr noundef @.str.1)
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %209, label %205

205:                                              ; preds = %35
  %206 = load ptr, ptr %37, align 8, !tbaa !5
  %207 = call i32 @lsame_(ptr noundef %206, ptr noundef @.str.2)
  %208 = icmp ne i32 %207, 0
  br label %209

209:                                              ; preds = %205, %35
  %210 = phi i1 [ true, %35 ], [ %208, %205 ]
  %211 = zext i1 %210 to i32
  store i32 %211, ptr %99, align 4, !tbaa !9
  %212 = load ptr, ptr %37, align 8, !tbaa !5
  %213 = call i32 @lsame_(ptr noundef %212, ptr noundef @.str.3)
  store i32 %213, ptr %100, align 4, !tbaa !9
  %214 = load ptr, ptr %38, align 8, !tbaa !5
  %215 = call i32 @lsame_(ptr noundef %214, ptr noundef @.str.4)
  store i32 %215, ptr %102, align 4, !tbaa !9
  %216 = load ptr, ptr %38, align 8, !tbaa !5
  %217 = call i32 @lsame_(ptr noundef %216, ptr noundef @.str.5)
  store i32 %217, ptr %103, align 4, !tbaa !9
  %218 = load ptr, ptr %38, align 8, !tbaa !5
  %219 = call i32 @lsame_(ptr noundef %218, ptr noundef @.str.6)
  store i32 %219, ptr %115, align 4, !tbaa !9
  %220 = load ptr, ptr %42, align 8, !tbaa !5
  %221 = call i32 @lsame_(ptr noundef %220, ptr noundef @.str)
  store i32 %221, ptr %105, align 4, !tbaa !9
  %222 = load ptr, ptr %42, align 8, !tbaa !5
  %223 = call i32 @lsame_(ptr noundef %222, ptr noundef @.str.7)
  store i32 %223, ptr %95, align 4, !tbaa !9
  %224 = load ptr, ptr %40, align 8, !tbaa !5
  %225 = call i32 @lsame_(ptr noundef %224, ptr noundef @.str.6)
  store i32 %225, ptr %92, align 4, !tbaa !9
  %226 = load ptr, ptr %41, align 8, !tbaa !5
  %227 = call i32 @lsame_(ptr noundef %226, ptr noundef @.str)
  store i32 %227, ptr %114, align 4, !tbaa !9
  %228 = load ptr, ptr %44, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = load ptr, ptr %45, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = icmp sle i32 %229, %231
  br i1 %232, label %233, label %236

233:                                              ; preds = %209
  %234 = load ptr, ptr %44, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  br label %239

236:                                              ; preds = %209
  %237 = load ptr, ptr %45, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %236, %233
  %240 = phi i32 [ %235, %233 ], [ %238, %236 ]
  store i32 %240, ptr %91, align 4, !tbaa !9
  %241 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 0, ptr %241, align 4, !tbaa !9
  %242 = load ptr, ptr %66, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = icmp eq i32 %243, -1
  br i1 %244, label %253, label %245

245:                                              ; preds = %239
  %246 = load ptr, ptr %68, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = icmp eq i32 %247, -1
  br i1 %248, label %253, label %249

249:                                              ; preds = %245
  %250 = load ptr, ptr %70, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = icmp eq i32 %251, -1
  br label %253

253:                                              ; preds = %249, %245, %239
  %254 = phi i1 [ true, %245 ], [ true, %239 ], [ %252, %249 ]
  %255 = zext i1 %254 to i32
  store i32 %255, ptr %112, align 4, !tbaa !9
  %256 = load i32, ptr %99, align 4, !tbaa !9
  %257 = icmp ne i32 %256, 0
  br i1 %257, label %267, label %258

258:                                              ; preds = %253
  %259 = load i32, ptr %100, align 4, !tbaa !9
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %267, label %261

261:                                              ; preds = %258
  %262 = load ptr, ptr %37, align 8, !tbaa !5
  %263 = call i32 @lsame_(ptr noundef %262, ptr noundef @.str.8)
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %267, label %265

265:                                              ; preds = %261
  %266 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -1, ptr %266, align 4, !tbaa !9
  br label %475

267:                                              ; preds = %261, %258, %253
  %268 = load i32, ptr %102, align 4, !tbaa !9
  %269 = icmp ne i32 %268, 0
  br i1 %269, label %282, label %270

270:                                              ; preds = %267
  %271 = load i32, ptr %103, align 4, !tbaa !9
  %272 = icmp ne i32 %271, 0
  br i1 %272, label %282, label %273

273:                                              ; preds = %270
  %274 = load i32, ptr %115, align 4, !tbaa !9
  %275 = icmp ne i32 %274, 0
  br i1 %275, label %282, label %276

276:                                              ; preds = %273
  %277 = load ptr, ptr %38, align 8, !tbaa !5
  %278 = call i32 @lsame_(ptr noundef %277, ptr noundef @.str.8)
  %279 = icmp ne i32 %278, 0
  br i1 %279, label %282, label %280

280:                                              ; preds = %276
  %281 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -2, ptr %281, align 4, !tbaa !9
  br label %474

282:                                              ; preds = %276, %273, %270, %267
  %283 = load i32, ptr %113, align 4, !tbaa !9
  %284 = icmp ne i32 %283, 0
  br i1 %284, label %289, label %285

285:                                              ; preds = %282
  %286 = load ptr, ptr %39, align 8, !tbaa !5
  %287 = call i32 @lsame_(ptr noundef %286, ptr noundef @.str.8)
  %288 = icmp ne i32 %287, 0
  br i1 %288, label %289, label %296

289:                                              ; preds = %285, %282
  %290 = load i32, ptr %113, align 4, !tbaa !9
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %292, label %298

292:                                              ; preds = %289
  %293 = load ptr, ptr %38, align 8, !tbaa !5
  %294 = call i32 @lsame_(ptr noundef %293, ptr noundef @.str.8)
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %296, label %298

296:                                              ; preds = %292, %285
  %297 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -3, ptr %297, align 4, !tbaa !9
  br label %473

298:                                              ; preds = %292, %289
  %299 = load i32, ptr %92, align 4, !tbaa !9
  %300 = icmp ne i32 %299, 0
  br i1 %300, label %307, label %301

301:                                              ; preds = %298
  %302 = load ptr, ptr %40, align 8, !tbaa !5
  %303 = call i32 @lsame_(ptr noundef %302, ptr noundef @.str.8)
  %304 = icmp ne i32 %303, 0
  br i1 %304, label %307, label %305

305:                                              ; preds = %301
  %306 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -4, ptr %306, align 4, !tbaa !9
  br label %472

307:                                              ; preds = %301, %298
  %308 = load i32, ptr %114, align 4, !tbaa !9
  %309 = icmp ne i32 %308, 0
  br i1 %309, label %316, label %310

310:                                              ; preds = %307
  %311 = load ptr, ptr %41, align 8, !tbaa !5
  %312 = call i32 @lsame_(ptr noundef %311, ptr noundef @.str.8)
  %313 = icmp ne i32 %312, 0
  br i1 %313, label %316, label %314

314:                                              ; preds = %310
  %315 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -5, ptr %315, align 4, !tbaa !9
  br label %471

316:                                              ; preds = %310, %307
  %317 = load i32, ptr %105, align 4, !tbaa !9
  %318 = icmp ne i32 %317, 0
  br i1 %318, label %328, label %319

319:                                              ; preds = %316
  %320 = load i32, ptr %95, align 4, !tbaa !9
  %321 = icmp ne i32 %320, 0
  br i1 %321, label %328, label %322

322:                                              ; preds = %319
  %323 = load ptr, ptr %42, align 8, !tbaa !5
  %324 = call i32 @lsame_(ptr noundef %323, ptr noundef @.str.8)
  %325 = icmp ne i32 %324, 0
  br i1 %325, label %328, label %326

326:                                              ; preds = %322
  %327 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -6, ptr %327, align 4, !tbaa !9
  br label %470

328:                                              ; preds = %322, %319, %316
  %329 = load ptr, ptr %43, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = icmp eq i32 %330, 1
  br i1 %331, label %346, label %332

332:                                              ; preds = %328
  %333 = load ptr, ptr %43, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = icmp eq i32 %334, 2
  br i1 %335, label %346, label %336

336:                                              ; preds = %332
  %337 = load ptr, ptr %43, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = icmp eq i32 %338, 3
  br i1 %339, label %346, label %340

340:                                              ; preds = %336
  %341 = load ptr, ptr %43, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = icmp eq i32 %342, 4
  br i1 %343, label %346, label %344

344:                                              ; preds = %340
  %345 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -7, ptr %345, align 4, !tbaa !9
  br label %469

346:                                              ; preds = %340, %336, %332, %328
  %347 = load ptr, ptr %44, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = icmp slt i32 %348, 0
  br i1 %349, label %350, label %352

350:                                              ; preds = %346
  %351 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -8, ptr %351, align 4, !tbaa !9
  br label %468

352:                                              ; preds = %346
  %353 = load ptr, ptr %45, align 8, !tbaa !5
  %354 = load i32, ptr %353, align 4, !tbaa !9
  %355 = icmp slt i32 %354, 0
  br i1 %355, label %363, label %356

356:                                              ; preds = %352
  %357 = load ptr, ptr %45, align 8, !tbaa !5
  %358 = load i32, ptr %357, align 4, !tbaa !9
  %359 = load ptr, ptr %44, align 8, !tbaa !5
  %360 = load i32, ptr %359, align 4, !tbaa !9
  %361 = add nsw i32 %360, 1
  %362 = icmp sgt i32 %358, %361
  br i1 %362, label %363, label %365

363:                                              ; preds = %356, %352
  %364 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -9, ptr %364, align 4, !tbaa !9
  br label %467

365:                                              ; preds = %356
  %366 = load ptr, ptr %47, align 8, !tbaa !5
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = load ptr, ptr %44, align 8, !tbaa !5
  %369 = load i32, ptr %368, align 4, !tbaa !9
  %370 = icmp slt i32 %367, %369
  br i1 %370, label %371, label %373

371:                                              ; preds = %365
  %372 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -11, ptr %372, align 4, !tbaa !9
  br label %466

373:                                              ; preds = %365
  %374 = load ptr, ptr %49, align 8, !tbaa !5
  %375 = load i32, ptr %374, align 4, !tbaa !9
  %376 = load i32, ptr %91, align 4, !tbaa !9
  %377 = icmp slt i32 %375, %376
  br i1 %377, label %378, label %380

378:                                              ; preds = %373
  %379 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -13, ptr %379, align 4, !tbaa !9
  br label %465

380:                                              ; preds = %373
  %381 = load ptr, ptr %51, align 8, !tbaa !5
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = load i32, ptr %91, align 4, !tbaa !9
  %384 = icmp slt i32 %382, %383
  br i1 %384, label %385, label %387

385:                                              ; preds = %380
  %386 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -15, ptr %386, align 4, !tbaa !9
  br label %464

387:                                              ; preds = %380
  %388 = load ptr, ptr %52, align 8, !tbaa !5
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = icmp eq i32 %389, -2
  br i1 %390, label %407, label %391

391:                                              ; preds = %387
  %392 = load ptr, ptr %52, align 8, !tbaa !5
  %393 = load i32, ptr %392, align 4, !tbaa !9
  %394 = icmp eq i32 %393, -1
  br i1 %394, label %407, label %395

395:                                              ; preds = %391
  %396 = load ptr, ptr %52, align 8, !tbaa !5
  %397 = load i32, ptr %396, align 4, !tbaa !9
  %398 = icmp sge i32 %397, 1
  br i1 %398, label %399, label %405

399:                                              ; preds = %395
  %400 = load ptr, ptr %52, align 8, !tbaa !5
  %401 = load i32, ptr %400, align 4, !tbaa !9
  %402 = load ptr, ptr %45, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = icmp sle i32 %401, %403
  br i1 %404, label %407, label %405

405:                                              ; preds = %399, %395
  %406 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -16, ptr %406, align 4, !tbaa !9
  br label %463

407:                                              ; preds = %399, %391, %387
  %408 = load ptr, ptr %53, align 8, !tbaa !5
  %409 = load double, ptr %408, align 8, !tbaa !11
  %410 = load double, ptr %88, align 8, !tbaa !11
  %411 = fcmp olt double %409, %410
  br i1 %411, label %417, label %412

412:                                              ; preds = %407
  %413 = load ptr, ptr %53, align 8, !tbaa !5
  %414 = load double, ptr %413, align 8, !tbaa !11
  %415 = load double, ptr %116, align 8, !tbaa !11
  %416 = fcmp oge double %414, %415
  br i1 %416, label %417, label %419

417:                                              ; preds = %412, %407
  %418 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -17, ptr %418, align 4, !tbaa !9
  br label %462

419:                                              ; preds = %412
  %420 = load ptr, ptr %57, align 8, !tbaa !5
  %421 = load i32, ptr %420, align 4, !tbaa !9
  %422 = load ptr, ptr %44, align 8, !tbaa !5
  %423 = load i32, ptr %422, align 4, !tbaa !9
  %424 = icmp slt i32 %421, %423
  br i1 %424, label %425, label %427

425:                                              ; preds = %419
  %426 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -21, ptr %426, align 4, !tbaa !9
  br label %461

427:                                              ; preds = %419
  %428 = load i32, ptr %105, align 4, !tbaa !9
  %429 = icmp ne i32 %428, 0
  br i1 %429, label %433, label %430

430:                                              ; preds = %427
  %431 = load i32, ptr %95, align 4, !tbaa !9
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %433, label %440

433:                                              ; preds = %430, %427
  %434 = load ptr, ptr %60, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = load i32, ptr %91, align 4, !tbaa !9
  %437 = icmp slt i32 %435, %436
  br i1 %437, label %438, label %440

438:                                              ; preds = %433
  %439 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -24, ptr %439, align 4, !tbaa !9
  br label %460

440:                                              ; preds = %433, %430
  %441 = load ptr, ptr %62, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = load ptr, ptr %45, align 8, !tbaa !5
  %444 = load i32, ptr %443, align 4, !tbaa !9
  %445 = sub nsw i32 %444, 1
  %446 = icmp slt i32 %442, %445
  br i1 %446, label %447, label %449

447:                                              ; preds = %440
  %448 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -26, ptr %448, align 4, !tbaa !9
  br label %459

449:                                              ; preds = %440
  %450 = load ptr, ptr %64, align 8, !tbaa !5
  %451 = load i32, ptr %450, align 4, !tbaa !9
  %452 = load ptr, ptr %45, align 8, !tbaa !5
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = sub nsw i32 %453, 1
  %455 = icmp slt i32 %451, %454
  br i1 %455, label %456, label %458

456:                                              ; preds = %449
  %457 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -28, ptr %457, align 4, !tbaa !9
  br label %458

458:                                              ; preds = %456, %449
  br label %459

459:                                              ; preds = %458, %447
  br label %460

460:                                              ; preds = %459, %438
  br label %461

461:                                              ; preds = %460, %425
  br label %462

462:                                              ; preds = %461, %417
  br label %463

463:                                              ; preds = %462, %405
  br label %464

464:                                              ; preds = %463, %385
  br label %465

465:                                              ; preds = %464, %378
  br label %466

466:                                              ; preds = %465, %371
  br label %467

467:                                              ; preds = %466, %363
  br label %468

468:                                              ; preds = %467, %350
  br label %469

469:                                              ; preds = %468, %344
  br label %470

470:                                              ; preds = %469, %326
  br label %471

471:                                              ; preds = %470, %314
  br label %472

472:                                              ; preds = %471, %305
  br label %473

473:                                              ; preds = %472, %296
  br label %474

474:                                              ; preds = %473, %280
  br label %475

475:                                              ; preds = %474, %265
  %476 = load i32, ptr %102, align 4, !tbaa !9
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %484, label %478

478:                                              ; preds = %475
  %479 = load i32, ptr %103, align 4, !tbaa !9
  %480 = icmp ne i32 %479, 0
  br i1 %480, label %484, label %481

481:                                              ; preds = %478
  %482 = load i32, ptr %115, align 4, !tbaa !9
  %483 = icmp ne i32 %482, 0
  br i1 %483, label %484, label %486

484:                                              ; preds = %481, %478, %475
  %485 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  store i8 86, ptr %485, align 1, !tbaa !16
  br label %488

486:                                              ; preds = %481
  %487 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  store i8 78, ptr %487, align 1, !tbaa !16
  br label %488

488:                                              ; preds = %486, %484
  %489 = load ptr, ptr %71, align 8, !tbaa !5
  %490 = load i32, ptr %489, align 4, !tbaa !9
  %491 = icmp eq i32 %490, 0
  br i1 %491, label %492, label %859

492:                                              ; preds = %488
  %493 = load ptr, ptr %45, align 8, !tbaa !5
  %494 = load i32, ptr %493, align 4, !tbaa !9
  %495 = icmp eq i32 %494, 0
  br i1 %495, label %500, label %496

496:                                              ; preds = %492
  %497 = load ptr, ptr %45, align 8, !tbaa !5
  %498 = load i32, ptr %497, align 4, !tbaa !9
  %499 = icmp eq i32 %498, 1
  br i1 %499, label %500, label %526

500:                                              ; preds = %496, %492
  %501 = load i32, ptr %112, align 4, !tbaa !9
  %502 = icmp ne i32 %501, 0
  br i1 %502, label %503, label %522

503:                                              ; preds = %500
  %504 = load ptr, ptr %69, align 8, !tbaa !5
  %505 = getelementptr inbounds i32, ptr %504, i64 1
  store i32 1, ptr %505, align 4, !tbaa !9
  %506 = load ptr, ptr %65, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.doublecomplex, ptr %506, i64 1
  %508 = getelementptr inbounds %struct.doublecomplex, ptr %507, i32 0, i32 0
  store double 2.000000e+00, ptr %508, align 8, !tbaa !13
  %509 = load ptr, ptr %65, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.doublecomplex, ptr %509, i64 1
  %511 = getelementptr inbounds %struct.doublecomplex, ptr %510, i32 0, i32 1
  store double 0.000000e+00, ptr %511, align 8, !tbaa !15
  %512 = load ptr, ptr %65, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.doublecomplex, ptr %512, i64 2
  %514 = getelementptr inbounds %struct.doublecomplex, ptr %513, i32 0, i32 0
  store double 2.000000e+00, ptr %514, align 8, !tbaa !13
  %515 = load ptr, ptr %65, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.doublecomplex, ptr %515, i64 2
  %517 = getelementptr inbounds %struct.doublecomplex, ptr %516, i32 0, i32 1
  store double 0.000000e+00, ptr %517, align 8, !tbaa !15
  %518 = load ptr, ptr %67, align 8, !tbaa !5
  %519 = getelementptr inbounds double, ptr %518, i64 1
  store double 2.000000e+00, ptr %519, align 8, !tbaa !11
  %520 = load ptr, ptr %67, align 8, !tbaa !5
  %521 = getelementptr inbounds double, ptr %520, i64 2
  store double 2.000000e+00, ptr %521, align 8, !tbaa !11
  br label %524

522:                                              ; preds = %500
  %523 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 0, ptr %523, align 4, !tbaa !9
  br label %524

524:                                              ; preds = %522, %503
  %525 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 1, ptr %525, align 4, !tbaa !9
  store i32 0, ptr %36, align 4
  store i32 1, ptr %117, align 4
  br label %1207

526:                                              ; preds = %496
  store i32 2, ptr %109, align 4, !tbaa !9
  store i32 2, ptr %106, align 4, !tbaa !9
  store i32 2, ptr %108, align 4, !tbaa !9
  store i32 1, ptr %101, align 4, !tbaa !9
  %527 = load ptr, ptr %45, align 8, !tbaa !5
  %528 = load i32, ptr %527, align 4, !tbaa !9
  %529 = icmp sge i32 1, %528
  br i1 %529, label %530, label %531

530:                                              ; preds = %526
  br label %534

531:                                              ; preds = %526
  %532 = load ptr, ptr %45, align 8, !tbaa !5
  %533 = load i32, ptr %532, align 4, !tbaa !9
  br label %534

534:                                              ; preds = %531, %530
  %535 = phi i32 [ 1, %530 ], [ %533, %531 ]
  store i32 %535, ptr %93, align 4, !tbaa !9
  %536 = load i32, ptr %106, align 4, !tbaa !9
  store i32 %536, ptr %86, align 4, !tbaa !9
  %537 = load i32, ptr %91, align 4, !tbaa !9
  %538 = load i32, ptr %93, align 4, !tbaa !9
  %539 = add nsw i32 %537, %538
  store i32 %539, ptr %87, align 4, !tbaa !9
  %540 = load i32, ptr %86, align 4, !tbaa !9
  %541 = load i32, ptr %87, align 4, !tbaa !9
  %542 = icmp sge i32 %540, %541
  br i1 %542, label %543, label %545

543:                                              ; preds = %534
  %544 = load i32, ptr %86, align 4, !tbaa !9
  br label %547

545:                                              ; preds = %534
  %546 = load i32, ptr %87, align 4, !tbaa !9
  br label %547

547:                                              ; preds = %545, %543
  %548 = phi i32 [ %544, %543 ], [ %546, %545 ]
  store i32 %548, ptr %106, align 4, !tbaa !9
  %549 = load i32, ptr %112, align 4, !tbaa !9
  %550 = icmp ne i32 %549, 0
  br i1 %550, label %551, label %582

551:                                              ; preds = %547
  %552 = load ptr, ptr %44, align 8, !tbaa !5
  %553 = load ptr, ptr %45, align 8, !tbaa !5
  %554 = load ptr, ptr %46, align 8, !tbaa !5
  %555 = load i32, ptr %73, align 4, !tbaa !9
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds %struct.doublecomplex, ptr %554, i64 %556
  %558 = load ptr, ptr %47, align 8, !tbaa !5
  %559 = load ptr, ptr %65, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.doublecomplex, ptr %559, i64 1
  %561 = load ptr, ptr %65, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.doublecomplex, ptr %561, i64 1
  %563 = call i32 @zgeqrf_(ptr noundef %552, ptr noundef %553, ptr noundef %557, ptr noundef %558, ptr noundef %560, ptr noundef %562, ptr noundef @c_n1, ptr noundef %89)
  %564 = load ptr, ptr %65, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.doublecomplex, ptr %564, i64 1
  %566 = getelementptr inbounds %struct.doublecomplex, ptr %565, i32 0, i32 0
  %567 = load double, ptr %566, align 8, !tbaa !13
  %568 = fptosi double %567 to i32
  store i32 %568, ptr %94, align 4, !tbaa !9
  %569 = load i32, ptr %108, align 4, !tbaa !9
  store i32 %569, ptr %86, align 4, !tbaa !9
  %570 = load i32, ptr %91, align 4, !tbaa !9
  %571 = load i32, ptr %94, align 4, !tbaa !9
  %572 = add nsw i32 %570, %571
  store i32 %572, ptr %87, align 4, !tbaa !9
  %573 = load i32, ptr %86, align 4, !tbaa !9
  %574 = load i32, ptr %87, align 4, !tbaa !9
  %575 = icmp sge i32 %573, %574
  br i1 %575, label %576, label %578

576:                                              ; preds = %551
  %577 = load i32, ptr %86, align 4, !tbaa !9
  br label %580

578:                                              ; preds = %551
  %579 = load i32, ptr %87, align 4, !tbaa !9
  br label %580

580:                                              ; preds = %578, %576
  %581 = phi i32 [ %577, %576 ], [ %579, %578 ]
  store i32 %581, ptr %108, align 4, !tbaa !9
  br label %582

582:                                              ; preds = %580, %547
  %583 = load ptr, ptr %45, align 8, !tbaa !5
  %584 = load i32, ptr %583, align 4, !tbaa !9
  %585 = sub nsw i32 %584, 1
  store i32 %585, ptr %86, align 4, !tbaa !9
  %586 = load ptr, ptr %37, align 8, !tbaa !5
  %587 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  %588 = load ptr, ptr %39, align 8, !tbaa !5
  %589 = load ptr, ptr %42, align 8, !tbaa !5
  %590 = load ptr, ptr %43, align 8, !tbaa !5
  %591 = load ptr, ptr %48, align 8, !tbaa !5
  %592 = load i32, ptr %75, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds %struct.doublecomplex, ptr %591, i64 %593
  %595 = load ptr, ptr %49, align 8, !tbaa !5
  %596 = load ptr, ptr %50, align 8, !tbaa !5
  %597 = load i32, ptr %77, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds %struct.doublecomplex, ptr %596, i64 %598
  %600 = load ptr, ptr %51, align 8, !tbaa !5
  %601 = load ptr, ptr %52, align 8, !tbaa !5
  %602 = load ptr, ptr %53, align 8, !tbaa !5
  %603 = load ptr, ptr %54, align 8, !tbaa !5
  %604 = load ptr, ptr %55, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.doublecomplex, ptr %604, i64 1
  %606 = load ptr, ptr %56, align 8, !tbaa !5
  %607 = load i32, ptr %79, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds %struct.doublecomplex, ptr %606, i64 %608
  %610 = load ptr, ptr %57, align 8, !tbaa !5
  %611 = load ptr, ptr %58, align 8, !tbaa !5
  %612 = getelementptr inbounds double, ptr %611, i64 1
  %613 = load ptr, ptr %59, align 8, !tbaa !5
  %614 = load i32, ptr %81, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds %struct.doublecomplex, ptr %613, i64 %615
  %617 = load ptr, ptr %60, align 8, !tbaa !5
  %618 = load ptr, ptr %61, align 8, !tbaa !5
  %619 = load i32, ptr %83, align 4, !tbaa !9
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds %struct.doublecomplex, ptr %618, i64 %620
  %622 = load ptr, ptr %62, align 8, !tbaa !5
  %623 = load ptr, ptr %63, align 8, !tbaa !5
  %624 = load i32, ptr %85, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds %struct.doublecomplex, ptr %623, i64 %625
  %627 = load ptr, ptr %64, align 8, !tbaa !5
  %628 = load ptr, ptr %65, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.doublecomplex, ptr %628, i64 1
  %630 = load ptr, ptr %67, align 8, !tbaa !5
  %631 = getelementptr inbounds double, ptr %630, i64 1
  %632 = load ptr, ptr %69, align 8, !tbaa !5
  %633 = getelementptr inbounds i32, ptr %632, i64 1
  %634 = call i32 @zgedmd_(ptr noundef %586, ptr noundef %587, ptr noundef %588, ptr noundef %589, ptr noundef %590, ptr noundef %91, ptr noundef %86, ptr noundef %594, ptr noundef %595, ptr noundef %599, ptr noundef %600, ptr noundef %601, ptr noundef %602, ptr noundef %603, ptr noundef %605, ptr noundef %609, ptr noundef %610, ptr noundef %612, ptr noundef %616, ptr noundef %617, ptr noundef %621, ptr noundef %622, ptr noundef %626, ptr noundef %627, ptr noundef %629, ptr noundef @c_n1, ptr noundef %631, ptr noundef @c_n1, ptr noundef %633, ptr noundef @c_n1, ptr noundef %89)
  %635 = load ptr, ptr %65, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.doublecomplex, ptr %635, i64 1
  %637 = getelementptr inbounds %struct.doublecomplex, ptr %636, i32 0, i32 0
  %638 = load double, ptr %637, align 8, !tbaa !13
  %639 = fptosi double %638 to i32
  store i32 %639, ptr %97, align 4, !tbaa !9
  %640 = load i32, ptr %106, align 4, !tbaa !9
  store i32 %640, ptr %86, align 4, !tbaa !9
  %641 = load i32, ptr %91, align 4, !tbaa !9
  %642 = load i32, ptr %97, align 4, !tbaa !9
  %643 = add nsw i32 %641, %642
  store i32 %643, ptr %87, align 4, !tbaa !9
  %644 = load i32, ptr %86, align 4, !tbaa !9
  %645 = load i32, ptr %87, align 4, !tbaa !9
  %646 = icmp sge i32 %644, %645
  br i1 %646, label %647, label %649

647:                                              ; preds = %582
  %648 = load i32, ptr %86, align 4, !tbaa !9
  br label %651

649:                                              ; preds = %582
  %650 = load i32, ptr %87, align 4, !tbaa !9
  br label %651

651:                                              ; preds = %649, %647
  %652 = phi i32 [ %648, %647 ], [ %650, %649 ]
  store i32 %652, ptr %106, align 4, !tbaa !9
  %653 = load i32, ptr %109, align 4, !tbaa !9
  store i32 %653, ptr %86, align 4, !tbaa !9
  %654 = load ptr, ptr %67, align 8, !tbaa !5
  %655 = getelementptr inbounds double, ptr %654, i64 1
  %656 = load double, ptr %655, align 8, !tbaa !11
  %657 = fptosi double %656 to i32
  store i32 %657, ptr %87, align 4, !tbaa !9
  %658 = load i32, ptr %86, align 4, !tbaa !9
  %659 = load i32, ptr %87, align 4, !tbaa !9
  %660 = icmp sge i32 %658, %659
  br i1 %660, label %661, label %663

661:                                              ; preds = %651
  %662 = load i32, ptr %86, align 4, !tbaa !9
  br label %665

663:                                              ; preds = %651
  %664 = load i32, ptr %87, align 4, !tbaa !9
  br label %665

665:                                              ; preds = %663, %661
  %666 = phi i32 [ %662, %661 ], [ %664, %663 ]
  store i32 %666, ptr %109, align 4, !tbaa !9
  %667 = load i32, ptr %101, align 4, !tbaa !9
  %668 = load ptr, ptr %69, align 8, !tbaa !5
  %669 = getelementptr inbounds i32, ptr %668, i64 1
  %670 = load i32, ptr %669, align 4, !tbaa !9
  %671 = icmp sge i32 %667, %670
  br i1 %671, label %672, label %674

672:                                              ; preds = %665
  %673 = load i32, ptr %101, align 4, !tbaa !9
  br label %678

674:                                              ; preds = %665
  %675 = load ptr, ptr %69, align 8, !tbaa !5
  %676 = getelementptr inbounds i32, ptr %675, i64 1
  %677 = load i32, ptr %676, align 4, !tbaa !9
  br label %678

678:                                              ; preds = %674, %672
  %679 = phi i32 [ %673, %672 ], [ %677, %674 ]
  store i32 %679, ptr %101, align 4, !tbaa !9
  %680 = load i32, ptr %112, align 4, !tbaa !9
  %681 = icmp ne i32 %680, 0
  br i1 %681, label %682, label %701

682:                                              ; preds = %678
  %683 = load ptr, ptr %65, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.doublecomplex, ptr %683, i64 2
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %684, i32 0, i32 0
  %686 = load double, ptr %685, align 8, !tbaa !13
  %687 = fptosi double %686 to i32
  store i32 %687, ptr %98, align 4, !tbaa !9
  %688 = load i32, ptr %108, align 4, !tbaa !9
  store i32 %688, ptr %86, align 4, !tbaa !9
  %689 = load i32, ptr %91, align 4, !tbaa !9
  %690 = load i32, ptr %98, align 4, !tbaa !9
  %691 = add nsw i32 %689, %690
  store i32 %691, ptr %87, align 4, !tbaa !9
  %692 = load i32, ptr %86, align 4, !tbaa !9
  %693 = load i32, ptr %87, align 4, !tbaa !9
  %694 = icmp sge i32 %692, %693
  br i1 %694, label %695, label %697

695:                                              ; preds = %682
  %696 = load i32, ptr %86, align 4, !tbaa !9
  br label %699

697:                                              ; preds = %682
  %698 = load i32, ptr %87, align 4, !tbaa !9
  br label %699

699:                                              ; preds = %697, %695
  %700 = phi i32 [ %696, %695 ], [ %698, %697 ]
  store i32 %700, ptr %108, align 4, !tbaa !9
  br label %701

701:                                              ; preds = %699, %678
  %702 = load i32, ptr %102, align 4, !tbaa !9
  %703 = icmp ne i32 %702, 0
  br i1 %703, label %707, label %704

704:                                              ; preds = %701
  %705 = load i32, ptr %103, align 4, !tbaa !9
  %706 = icmp ne i32 %705, 0
  br i1 %706, label %707, label %769

707:                                              ; preds = %704, %701
  %708 = load ptr, ptr %45, align 8, !tbaa !5
  %709 = load i32, ptr %708, align 4, !tbaa !9
  %710 = icmp sge i32 1, %709
  br i1 %710, label %711, label %712

711:                                              ; preds = %707
  br label %715

712:                                              ; preds = %707
  %713 = load ptr, ptr %45, align 8, !tbaa !5
  %714 = load i32, ptr %713, align 4, !tbaa !9
  br label %715

715:                                              ; preds = %712, %711
  %716 = phi i32 [ 1, %711 ], [ %714, %712 ]
  store i32 %716, ptr %110, align 4, !tbaa !9
  %717 = load i32, ptr %106, align 4, !tbaa !9
  store i32 %717, ptr %86, align 4, !tbaa !9
  %718 = load i32, ptr %91, align 4, !tbaa !9
  %719 = load i32, ptr %110, align 4, !tbaa !9
  %720 = add nsw i32 %718, %719
  store i32 %720, ptr %87, align 4, !tbaa !9
  %721 = load i32, ptr %86, align 4, !tbaa !9
  %722 = load i32, ptr %87, align 4, !tbaa !9
  %723 = icmp sge i32 %721, %722
  br i1 %723, label %724, label %726

724:                                              ; preds = %715
  %725 = load i32, ptr %86, align 4, !tbaa !9
  br label %728

726:                                              ; preds = %715
  %727 = load i32, ptr %87, align 4, !tbaa !9
  br label %728

728:                                              ; preds = %726, %724
  %729 = phi i32 [ %725, %724 ], [ %727, %726 ]
  store i32 %729, ptr %106, align 4, !tbaa !9
  %730 = load i32, ptr %112, align 4, !tbaa !9
  %731 = icmp ne i32 %730, 0
  br i1 %731, label %732, label %768

732:                                              ; preds = %728
  %733 = load ptr, ptr %44, align 8, !tbaa !5
  %734 = load ptr, ptr %45, align 8, !tbaa !5
  %735 = load ptr, ptr %46, align 8, !tbaa !5
  %736 = load i32, ptr %73, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds %struct.doublecomplex, ptr %735, i64 %737
  %739 = load ptr, ptr %47, align 8, !tbaa !5
  %740 = load ptr, ptr %65, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.doublecomplex, ptr %740, i64 1
  %742 = load ptr, ptr %56, align 8, !tbaa !5
  %743 = load i32, ptr %79, align 4, !tbaa !9
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds %struct.doublecomplex, ptr %742, i64 %744
  %746 = load ptr, ptr %57, align 8, !tbaa !5
  %747 = load ptr, ptr %65, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.doublecomplex, ptr %747, i64 1
  %749 = call i32 @zunmqr_(ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef %733, ptr noundef %734, ptr noundef %91, ptr noundef %738, ptr noundef %739, ptr noundef %741, ptr noundef %745, ptr noundef %746, ptr noundef %748, ptr noundef @c_n1, ptr noundef %89)
  %750 = load ptr, ptr %65, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.doublecomplex, ptr %750, i64 1
  %752 = getelementptr inbounds %struct.doublecomplex, ptr %751, i32 0, i32 0
  %753 = load double, ptr %752, align 8, !tbaa !13
  %754 = fptosi double %753 to i32
  store i32 %754, ptr %111, align 4, !tbaa !9
  %755 = load i32, ptr %108, align 4, !tbaa !9
  store i32 %755, ptr %86, align 4, !tbaa !9
  %756 = load i32, ptr %91, align 4, !tbaa !9
  %757 = load i32, ptr %111, align 4, !tbaa !9
  %758 = add nsw i32 %756, %757
  store i32 %758, ptr %87, align 4, !tbaa !9
  %759 = load i32, ptr %86, align 4, !tbaa !9
  %760 = load i32, ptr %87, align 4, !tbaa !9
  %761 = icmp sge i32 %759, %760
  br i1 %761, label %762, label %764

762:                                              ; preds = %732
  %763 = load i32, ptr %86, align 4, !tbaa !9
  br label %766

764:                                              ; preds = %732
  %765 = load i32, ptr %87, align 4, !tbaa !9
  br label %766

766:                                              ; preds = %764, %762
  %767 = phi i32 [ %763, %762 ], [ %765, %764 ]
  store i32 %767, ptr %108, align 4, !tbaa !9
  br label %768

768:                                              ; preds = %766, %728
  br label %769

769:                                              ; preds = %768, %704
  %770 = load i32, ptr %92, align 4, !tbaa !9
  %771 = icmp ne i32 %770, 0
  br i1 %771, label %772, label %828

772:                                              ; preds = %769
  %773 = load ptr, ptr %45, align 8, !tbaa !5
  %774 = load i32, ptr %773, align 4, !tbaa !9
  %775 = icmp sge i32 1, %774
  br i1 %775, label %776, label %777

776:                                              ; preds = %772
  br label %780

777:                                              ; preds = %772
  %778 = load ptr, ptr %45, align 8, !tbaa !5
  %779 = load i32, ptr %778, align 4, !tbaa !9
  br label %780

780:                                              ; preds = %777, %776
  %781 = phi i32 [ 1, %776 ], [ %779, %777 ]
  store i32 %781, ptr %104, align 4, !tbaa !9
  %782 = load i32, ptr %106, align 4, !tbaa !9
  store i32 %782, ptr %86, align 4, !tbaa !9
  %783 = load i32, ptr %91, align 4, !tbaa !9
  %784 = load i32, ptr %104, align 4, !tbaa !9
  %785 = add nsw i32 %783, %784
  store i32 %785, ptr %87, align 4, !tbaa !9
  %786 = load i32, ptr %86, align 4, !tbaa !9
  %787 = load i32, ptr %87, align 4, !tbaa !9
  %788 = icmp sge i32 %786, %787
  br i1 %788, label %789, label %791

789:                                              ; preds = %780
  %790 = load i32, ptr %86, align 4, !tbaa !9
  br label %793

791:                                              ; preds = %780
  %792 = load i32, ptr %87, align 4, !tbaa !9
  br label %793

793:                                              ; preds = %791, %789
  %794 = phi i32 [ %790, %789 ], [ %792, %791 ]
  store i32 %794, ptr %106, align 4, !tbaa !9
  %795 = load i32, ptr %112, align 4, !tbaa !9
  %796 = icmp ne i32 %795, 0
  br i1 %796, label %797, label %827

797:                                              ; preds = %793
  %798 = load ptr, ptr %44, align 8, !tbaa !5
  %799 = load ptr, ptr %46, align 8, !tbaa !5
  %800 = load i32, ptr %73, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds %struct.doublecomplex, ptr %799, i64 %801
  %803 = load ptr, ptr %47, align 8, !tbaa !5
  %804 = load ptr, ptr %65, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.doublecomplex, ptr %804, i64 1
  %806 = load ptr, ptr %65, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.doublecomplex, ptr %806, i64 1
  %808 = call i32 @zungqr_(ptr noundef %798, ptr noundef %91, ptr noundef %91, ptr noundef %802, ptr noundef %803, ptr noundef %805, ptr noundef %807, ptr noundef @c_n1, ptr noundef %89)
  %809 = load ptr, ptr %65, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.doublecomplex, ptr %809, i64 1
  %811 = getelementptr inbounds %struct.doublecomplex, ptr %810, i32 0, i32 0
  %812 = load double, ptr %811, align 8, !tbaa !13
  %813 = fptosi double %812 to i32
  store i32 %813, ptr %107, align 4, !tbaa !9
  %814 = load i32, ptr %108, align 4, !tbaa !9
  store i32 %814, ptr %86, align 4, !tbaa !9
  %815 = load i32, ptr %91, align 4, !tbaa !9
  %816 = load i32, ptr %107, align 4, !tbaa !9
  %817 = add nsw i32 %815, %816
  store i32 %817, ptr %87, align 4, !tbaa !9
  %818 = load i32, ptr %86, align 4, !tbaa !9
  %819 = load i32, ptr %87, align 4, !tbaa !9
  %820 = icmp sge i32 %818, %819
  br i1 %820, label %821, label %823

821:                                              ; preds = %797
  %822 = load i32, ptr %86, align 4, !tbaa !9
  br label %825

823:                                              ; preds = %797
  %824 = load i32, ptr %87, align 4, !tbaa !9
  br label %825

825:                                              ; preds = %823, %821
  %826 = phi i32 [ %822, %821 ], [ %824, %823 ]
  store i32 %826, ptr %108, align 4, !tbaa !9
  br label %827

827:                                              ; preds = %825, %793
  br label %828

828:                                              ; preds = %827, %769
  %829 = load ptr, ptr %70, align 8, !tbaa !5
  %830 = load i32, ptr %829, align 4, !tbaa !9
  %831 = load i32, ptr %101, align 4, !tbaa !9
  %832 = icmp slt i32 %830, %831
  br i1 %832, label %833, label %838

833:                                              ; preds = %828
  %834 = load i32, ptr %112, align 4, !tbaa !9
  %835 = icmp ne i32 %834, 0
  br i1 %835, label %838, label %836

836:                                              ; preds = %833
  %837 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -34, ptr %837, align 4, !tbaa !9
  br label %838

838:                                              ; preds = %836, %833, %828
  %839 = load ptr, ptr %68, align 8, !tbaa !5
  %840 = load i32, ptr %839, align 4, !tbaa !9
  %841 = load i32, ptr %109, align 4, !tbaa !9
  %842 = icmp slt i32 %840, %841
  br i1 %842, label %843, label %848

843:                                              ; preds = %838
  %844 = load i32, ptr %112, align 4, !tbaa !9
  %845 = icmp ne i32 %844, 0
  br i1 %845, label %848, label %846

846:                                              ; preds = %843
  %847 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -32, ptr %847, align 4, !tbaa !9
  br label %848

848:                                              ; preds = %846, %843, %838
  %849 = load ptr, ptr %66, align 8, !tbaa !5
  %850 = load i32, ptr %849, align 4, !tbaa !9
  %851 = load i32, ptr %106, align 4, !tbaa !9
  %852 = icmp slt i32 %850, %851
  br i1 %852, label %853, label %858

853:                                              ; preds = %848
  %854 = load i32, ptr %112, align 4, !tbaa !9
  %855 = icmp ne i32 %854, 0
  br i1 %855, label %858, label %856

856:                                              ; preds = %853
  %857 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 -30, ptr %857, align 4, !tbaa !9
  br label %858

858:                                              ; preds = %856, %853, %848
  br label %859

859:                                              ; preds = %858, %488
  %860 = load ptr, ptr %71, align 8, !tbaa !5
  %861 = load i32, ptr %860, align 4, !tbaa !9
  %862 = icmp ne i32 %861, 0
  br i1 %862, label %863, label %868

863:                                              ; preds = %859
  %864 = load ptr, ptr %71, align 8, !tbaa !5
  %865 = load i32, ptr %864, align 4, !tbaa !9
  %866 = sub nsw i32 0, %865
  store i32 %866, ptr %86, align 4, !tbaa !9
  %867 = call i32 @xerbla_(ptr noundef @.str.10, ptr noundef %86)
  store i32 0, ptr %36, align 4
  store i32 1, ptr %117, align 4
  br label %1207

868:                                              ; preds = %859
  %869 = load i32, ptr %112, align 4, !tbaa !9
  %870 = icmp ne i32 %869, 0
  br i1 %870, label %871, label %899

871:                                              ; preds = %868
  %872 = load i32, ptr %101, align 4, !tbaa !9
  %873 = load ptr, ptr %69, align 8, !tbaa !5
  %874 = getelementptr inbounds i32, ptr %873, i64 1
  store i32 %872, ptr %874, align 4, !tbaa !9
  %875 = load i32, ptr %106, align 4, !tbaa !9
  %876 = sitofp i32 %875 to double
  %877 = load ptr, ptr %65, align 8, !tbaa !5
  %878 = getelementptr inbounds %struct.doublecomplex, ptr %877, i64 1
  %879 = getelementptr inbounds %struct.doublecomplex, ptr %878, i32 0, i32 0
  store double %876, ptr %879, align 8, !tbaa !13
  %880 = load ptr, ptr %65, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.doublecomplex, ptr %880, i64 1
  %882 = getelementptr inbounds %struct.doublecomplex, ptr %881, i32 0, i32 1
  store double 0.000000e+00, ptr %882, align 8, !tbaa !15
  %883 = load i32, ptr %108, align 4, !tbaa !9
  %884 = sitofp i32 %883 to double
  %885 = load ptr, ptr %65, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.doublecomplex, ptr %885, i64 2
  %887 = getelementptr inbounds %struct.doublecomplex, ptr %886, i32 0, i32 0
  store double %884, ptr %887, align 8, !tbaa !13
  %888 = load ptr, ptr %65, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.doublecomplex, ptr %888, i64 2
  %890 = getelementptr inbounds %struct.doublecomplex, ptr %889, i32 0, i32 1
  store double 0.000000e+00, ptr %890, align 8, !tbaa !15
  %891 = load i32, ptr %109, align 4, !tbaa !9
  %892 = sitofp i32 %891 to double
  %893 = load ptr, ptr %67, align 8, !tbaa !5
  %894 = getelementptr inbounds double, ptr %893, i64 1
  store double %892, ptr %894, align 8, !tbaa !11
  %895 = load i32, ptr %109, align 4, !tbaa !9
  %896 = sitofp i32 %895 to double
  %897 = load ptr, ptr %67, align 8, !tbaa !5
  %898 = getelementptr inbounds double, ptr %897, i64 2
  store double %896, ptr %898, align 8, !tbaa !11
  store i32 0, ptr %36, align 4
  store i32 1, ptr %117, align 4
  br label %1207

899:                                              ; preds = %868
  br label %900

900:                                              ; preds = %899
  %901 = load ptr, ptr %66, align 8, !tbaa !5
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = load i32, ptr %91, align 4, !tbaa !9
  %904 = sub nsw i32 %902, %903
  store i32 %904, ptr %86, align 4, !tbaa !9
  %905 = load ptr, ptr %44, align 8, !tbaa !5
  %906 = load ptr, ptr %45, align 8, !tbaa !5
  %907 = load ptr, ptr %46, align 8, !tbaa !5
  %908 = load i32, ptr %73, align 4, !tbaa !9
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds %struct.doublecomplex, ptr %907, i64 %909
  %911 = load ptr, ptr %47, align 8, !tbaa !5
  %912 = load ptr, ptr %65, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.doublecomplex, ptr %912, i64 1
  %914 = load ptr, ptr %65, align 8, !tbaa !5
  %915 = load i32, ptr %91, align 4, !tbaa !9
  %916 = add nsw i32 %915, 1
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds %struct.doublecomplex, ptr %914, i64 %917
  %919 = call i32 @zgeqrf_(ptr noundef %905, ptr noundef %906, ptr noundef %910, ptr noundef %911, ptr noundef %913, ptr noundef %918, ptr noundef %86, ptr noundef %89)
  %920 = load ptr, ptr %45, align 8, !tbaa !5
  %921 = load i32, ptr %920, align 4, !tbaa !9
  %922 = sub nsw i32 %921, 1
  store i32 %922, ptr %86, align 4, !tbaa !9
  %923 = load ptr, ptr %48, align 8, !tbaa !5
  %924 = load i32, ptr %75, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds %struct.doublecomplex, ptr %923, i64 %925
  %927 = load ptr, ptr %49, align 8, !tbaa !5
  %928 = call i32 @zlaset_(ptr noundef @.str.9, ptr noundef %91, ptr noundef %86, ptr noundef %96, ptr noundef %96, ptr noundef %926, ptr noundef %927)
  %929 = load ptr, ptr %45, align 8, !tbaa !5
  %930 = load i32, ptr %929, align 4, !tbaa !9
  %931 = sub nsw i32 %930, 1
  store i32 %931, ptr %86, align 4, !tbaa !9
  %932 = load ptr, ptr %46, align 8, !tbaa !5
  %933 = load i32, ptr %73, align 4, !tbaa !9
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds %struct.doublecomplex, ptr %932, i64 %934
  %936 = load ptr, ptr %47, align 8, !tbaa !5
  %937 = load ptr, ptr %48, align 8, !tbaa !5
  %938 = load i32, ptr %75, align 4, !tbaa !9
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds %struct.doublecomplex, ptr %937, i64 %939
  %941 = load ptr, ptr %49, align 8, !tbaa !5
  %942 = call i32 @zlacpy_(ptr noundef @.str.11, ptr noundef %91, ptr noundef %86, ptr noundef %935, ptr noundef %936, ptr noundef %940, ptr noundef %941)
  %943 = load ptr, ptr %45, align 8, !tbaa !5
  %944 = load i32, ptr %943, align 4, !tbaa !9
  %945 = sub nsw i32 %944, 1
  store i32 %945, ptr %86, align 4, !tbaa !9
  %946 = load ptr, ptr %46, align 8, !tbaa !5
  %947 = load i32, ptr %72, align 4, !tbaa !9
  %948 = shl i32 %947, 1
  %949 = add nsw i32 %948, 1
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds %struct.doublecomplex, ptr %946, i64 %950
  %952 = load ptr, ptr %47, align 8, !tbaa !5
  %953 = load ptr, ptr %50, align 8, !tbaa !5
  %954 = load i32, ptr %77, align 4, !tbaa !9
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds %struct.doublecomplex, ptr %953, i64 %955
  %957 = load ptr, ptr %51, align 8, !tbaa !5
  %958 = call i32 @zlacpy_(ptr noundef @.str.12, ptr noundef %91, ptr noundef %86, ptr noundef %951, ptr noundef %952, ptr noundef %956, ptr noundef %957)
  %959 = load ptr, ptr %44, align 8, !tbaa !5
  %960 = load i32, ptr %959, align 4, !tbaa !9
  %961 = icmp sge i32 %960, 3
  br i1 %961, label %962, label %975

962:                                              ; preds = %900
  %963 = load i32, ptr %91, align 4, !tbaa !9
  %964 = sub nsw i32 %963, 2
  store i32 %964, ptr %86, align 4, !tbaa !9
  %965 = load ptr, ptr %45, align 8, !tbaa !5
  %966 = load i32, ptr %965, align 4, !tbaa !9
  %967 = sub nsw i32 %966, 2
  store i32 %967, ptr %87, align 4, !tbaa !9
  %968 = load ptr, ptr %50, align 8, !tbaa !5
  %969 = load i32, ptr %76, align 4, !tbaa !9
  %970 = add nsw i32 %969, 3
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds %struct.doublecomplex, ptr %968, i64 %971
  %973 = load ptr, ptr %51, align 8, !tbaa !5
  %974 = call i32 @zlaset_(ptr noundef @.str.9, ptr noundef %86, ptr noundef %87, ptr noundef %96, ptr noundef %96, ptr noundef %972, ptr noundef %973)
  br label %975

975:                                              ; preds = %962, %900
  %976 = load ptr, ptr %45, align 8, !tbaa !5
  %977 = load i32, ptr %976, align 4, !tbaa !9
  %978 = sub nsw i32 %977, 1
  store i32 %978, ptr %86, align 4, !tbaa !9
  %979 = load ptr, ptr %66, align 8, !tbaa !5
  %980 = load i32, ptr %979, align 4, !tbaa !9
  %981 = load i32, ptr %91, align 4, !tbaa !9
  %982 = sub nsw i32 %980, %981
  store i32 %982, ptr %87, align 4, !tbaa !9
  %983 = load ptr, ptr %37, align 8, !tbaa !5
  %984 = getelementptr inbounds [1 x i8], ptr %90, i64 0, i64 0
  %985 = load ptr, ptr %39, align 8, !tbaa !5
  %986 = load ptr, ptr %42, align 8, !tbaa !5
  %987 = load ptr, ptr %43, align 8, !tbaa !5
  %988 = load ptr, ptr %48, align 8, !tbaa !5
  %989 = load i32, ptr %75, align 4, !tbaa !9
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds %struct.doublecomplex, ptr %988, i64 %990
  %992 = load ptr, ptr %49, align 8, !tbaa !5
  %993 = load ptr, ptr %50, align 8, !tbaa !5
  %994 = load i32, ptr %77, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds %struct.doublecomplex, ptr %993, i64 %995
  %997 = load ptr, ptr %51, align 8, !tbaa !5
  %998 = load ptr, ptr %52, align 8, !tbaa !5
  %999 = load ptr, ptr %53, align 8, !tbaa !5
  %1000 = load ptr, ptr %54, align 8, !tbaa !5
  %1001 = load ptr, ptr %55, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.doublecomplex, ptr %1001, i64 1
  %1003 = load ptr, ptr %56, align 8, !tbaa !5
  %1004 = load i32, ptr %79, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds %struct.doublecomplex, ptr %1003, i64 %1005
  %1007 = load ptr, ptr %57, align 8, !tbaa !5
  %1008 = load ptr, ptr %58, align 8, !tbaa !5
  %1009 = getelementptr inbounds double, ptr %1008, i64 1
  %1010 = load ptr, ptr %59, align 8, !tbaa !5
  %1011 = load i32, ptr %81, align 4, !tbaa !9
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds %struct.doublecomplex, ptr %1010, i64 %1012
  %1014 = load ptr, ptr %60, align 8, !tbaa !5
  %1015 = load ptr, ptr %61, align 8, !tbaa !5
  %1016 = load i32, ptr %83, align 4, !tbaa !9
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds %struct.doublecomplex, ptr %1015, i64 %1017
  %1019 = load ptr, ptr %62, align 8, !tbaa !5
  %1020 = load ptr, ptr %63, align 8, !tbaa !5
  %1021 = load i32, ptr %85, align 4, !tbaa !9
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds %struct.doublecomplex, ptr %1020, i64 %1022
  %1024 = load ptr, ptr %64, align 8, !tbaa !5
  %1025 = load ptr, ptr %65, align 8, !tbaa !5
  %1026 = load i32, ptr %91, align 4, !tbaa !9
  %1027 = add nsw i32 %1026, 1
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds %struct.doublecomplex, ptr %1025, i64 %1028
  %1030 = load ptr, ptr %67, align 8, !tbaa !5
  %1031 = getelementptr inbounds double, ptr %1030, i64 1
  %1032 = load ptr, ptr %68, align 8, !tbaa !5
  %1033 = load ptr, ptr %69, align 8, !tbaa !5
  %1034 = getelementptr inbounds i32, ptr %1033, i64 1
  %1035 = load ptr, ptr %70, align 8, !tbaa !5
  %1036 = call i32 @zgedmd_(ptr noundef %983, ptr noundef %984, ptr noundef %985, ptr noundef %986, ptr noundef %987, ptr noundef %91, ptr noundef %86, ptr noundef %991, ptr noundef %992, ptr noundef %996, ptr noundef %997, ptr noundef %998, ptr noundef %999, ptr noundef %1000, ptr noundef %1002, ptr noundef %1006, ptr noundef %1007, ptr noundef %1009, ptr noundef %1013, ptr noundef %1014, ptr noundef %1018, ptr noundef %1019, ptr noundef %1023, ptr noundef %1024, ptr noundef %1029, ptr noundef %87, ptr noundef %1031, ptr noundef %1032, ptr noundef %1034, ptr noundef %1035, ptr noundef %89)
  %1037 = load i32, ptr %89, align 4, !tbaa !9
  %1038 = icmp eq i32 %1037, 2
  br i1 %1038, label %1042, label %1039

1039:                                             ; preds = %975
  %1040 = load i32, ptr %89, align 4, !tbaa !9
  %1041 = icmp eq i32 %1040, 3
  br i1 %1041, label %1042, label %1045

1042:                                             ; preds = %1039, %975
  %1043 = load i32, ptr %89, align 4, !tbaa !9
  %1044 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 %1043, ptr %1044, align 4, !tbaa !9
  store i32 0, ptr %36, align 4
  store i32 1, ptr %117, align 4
  br label %1207

1045:                                             ; preds = %1039
  %1046 = load i32, ptr %89, align 4, !tbaa !9
  %1047 = load ptr, ptr %71, align 8, !tbaa !5
  store i32 %1046, ptr %1047, align 4, !tbaa !9
  br label %1048

1048:                                             ; preds = %1045
  %1049 = load i32, ptr %102, align 4, !tbaa !9
  %1050 = icmp ne i32 %1049, 0
  br i1 %1050, label %1051, label %1096

1051:                                             ; preds = %1048
  %1052 = load ptr, ptr %44, align 8, !tbaa !5
  %1053 = load i32, ptr %1052, align 4, !tbaa !9
  %1054 = load i32, ptr %91, align 4, !tbaa !9
  %1055 = icmp sgt i32 %1053, %1054
  br i1 %1055, label %1056, label %1071

1056:                                             ; preds = %1051
  %1057 = load ptr, ptr %44, align 8, !tbaa !5
  %1058 = load i32, ptr %1057, align 4, !tbaa !9
  %1059 = load i32, ptr %91, align 4, !tbaa !9
  %1060 = sub nsw i32 %1058, %1059
  store i32 %1060, ptr %86, align 4, !tbaa !9
  %1061 = load ptr, ptr %54, align 8, !tbaa !5
  %1062 = load ptr, ptr %56, align 8, !tbaa !5
  %1063 = load i32, ptr %91, align 4, !tbaa !9
  %1064 = add nsw i32 %1063, 1
  %1065 = load i32, ptr %78, align 4, !tbaa !9
  %1066 = add nsw i32 %1064, %1065
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds %struct.doublecomplex, ptr %1062, i64 %1067
  %1069 = load ptr, ptr %57, align 8, !tbaa !5
  %1070 = call i32 @zlaset_(ptr noundef @.str.12, ptr noundef %86, ptr noundef %1061, ptr noundef %96, ptr noundef %96, ptr noundef %1068, ptr noundef %1069)
  br label %1071

1071:                                             ; preds = %1056, %1051
  %1072 = load ptr, ptr %66, align 8, !tbaa !5
  %1073 = load i32, ptr %1072, align 4, !tbaa !9
  %1074 = load i32, ptr %91, align 4, !tbaa !9
  %1075 = sub nsw i32 %1073, %1074
  store i32 %1075, ptr %86, align 4, !tbaa !9
  %1076 = load ptr, ptr %44, align 8, !tbaa !5
  %1077 = load ptr, ptr %54, align 8, !tbaa !5
  %1078 = load ptr, ptr %46, align 8, !tbaa !5
  %1079 = load i32, ptr %73, align 4, !tbaa !9
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds %struct.doublecomplex, ptr %1078, i64 %1080
  %1082 = load ptr, ptr %47, align 8, !tbaa !5
  %1083 = load ptr, ptr %65, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.doublecomplex, ptr %1083, i64 1
  %1085 = load ptr, ptr %56, align 8, !tbaa !5
  %1086 = load i32, ptr %79, align 4, !tbaa !9
  %1087 = sext i32 %1086 to i64
  %1088 = getelementptr inbounds %struct.doublecomplex, ptr %1085, i64 %1087
  %1089 = load ptr, ptr %57, align 8, !tbaa !5
  %1090 = load ptr, ptr %65, align 8, !tbaa !5
  %1091 = load i32, ptr %91, align 4, !tbaa !9
  %1092 = add nsw i32 %1091, 1
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds %struct.doublecomplex, ptr %1090, i64 %1093
  %1095 = call i32 @zunmqr_(ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef %1076, ptr noundef %1077, ptr noundef %91, ptr noundef %1081, ptr noundef %1082, ptr noundef %1084, ptr noundef %1088, ptr noundef %1089, ptr noundef %1094, ptr noundef %86, ptr noundef %89)
  br label %1161

1096:                                             ; preds = %1048
  %1097 = load i32, ptr %103, align 4, !tbaa !9
  %1098 = icmp ne i32 %1097, 0
  br i1 %1098, label %1099, label %1160

1099:                                             ; preds = %1096
  %1100 = load ptr, ptr %45, align 8, !tbaa !5
  %1101 = load ptr, ptr %54, align 8, !tbaa !5
  %1102 = load ptr, ptr %48, align 8, !tbaa !5
  %1103 = load i32, ptr %75, align 4, !tbaa !9
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds %struct.doublecomplex, ptr %1102, i64 %1104
  %1106 = load ptr, ptr %49, align 8, !tbaa !5
  %1107 = load ptr, ptr %56, align 8, !tbaa !5
  %1108 = load i32, ptr %79, align 4, !tbaa !9
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds %struct.doublecomplex, ptr %1107, i64 %1109
  %1111 = load ptr, ptr %57, align 8, !tbaa !5
  %1112 = call i32 @zlacpy_(ptr noundef @.str.12, ptr noundef %1100, ptr noundef %1101, ptr noundef %1105, ptr noundef %1106, ptr noundef %1110, ptr noundef %1111)
  %1113 = load ptr, ptr %44, align 8, !tbaa !5
  %1114 = load i32, ptr %1113, align 4, !tbaa !9
  %1115 = load ptr, ptr %45, align 8, !tbaa !5
  %1116 = load i32, ptr %1115, align 4, !tbaa !9
  %1117 = icmp sgt i32 %1114, %1116
  br i1 %1117, label %1118, label %1135

1118:                                             ; preds = %1099
  %1119 = load ptr, ptr %44, align 8, !tbaa !5
  %1120 = load i32, ptr %1119, align 4, !tbaa !9
  %1121 = load ptr, ptr %45, align 8, !tbaa !5
  %1122 = load i32, ptr %1121, align 4, !tbaa !9
  %1123 = sub nsw i32 %1120, %1122
  store i32 %1123, ptr %86, align 4, !tbaa !9
  %1124 = load ptr, ptr %54, align 8, !tbaa !5
  %1125 = load ptr, ptr %56, align 8, !tbaa !5
  %1126 = load ptr, ptr %45, align 8, !tbaa !5
  %1127 = load i32, ptr %1126, align 4, !tbaa !9
  %1128 = add nsw i32 %1127, 1
  %1129 = load i32, ptr %78, align 4, !tbaa !9
  %1130 = add nsw i32 %1128, %1129
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds %struct.doublecomplex, ptr %1125, i64 %1131
  %1133 = load ptr, ptr %57, align 8, !tbaa !5
  %1134 = call i32 @zlaset_(ptr noundef @.str.12, ptr noundef %86, ptr noundef %1124, ptr noundef %96, ptr noundef %96, ptr noundef %1132, ptr noundef %1133)
  br label %1135

1135:                                             ; preds = %1118, %1099
  %1136 = load ptr, ptr %66, align 8, !tbaa !5
  %1137 = load i32, ptr %1136, align 4, !tbaa !9
  %1138 = load i32, ptr %91, align 4, !tbaa !9
  %1139 = sub nsw i32 %1137, %1138
  store i32 %1139, ptr %86, align 4, !tbaa !9
  %1140 = load ptr, ptr %44, align 8, !tbaa !5
  %1141 = load ptr, ptr %54, align 8, !tbaa !5
  %1142 = load ptr, ptr %46, align 8, !tbaa !5
  %1143 = load i32, ptr %73, align 4, !tbaa !9
  %1144 = sext i32 %1143 to i64
  %1145 = getelementptr inbounds %struct.doublecomplex, ptr %1142, i64 %1144
  %1146 = load ptr, ptr %47, align 8, !tbaa !5
  %1147 = load ptr, ptr %65, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.doublecomplex, ptr %1147, i64 1
  %1149 = load ptr, ptr %56, align 8, !tbaa !5
  %1150 = load i32, ptr %79, align 4, !tbaa !9
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds %struct.doublecomplex, ptr %1149, i64 %1151
  %1153 = load ptr, ptr %57, align 8, !tbaa !5
  %1154 = load ptr, ptr %65, align 8, !tbaa !5
  %1155 = load i32, ptr %91, align 4, !tbaa !9
  %1156 = add nsw i32 %1155, 1
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds %struct.doublecomplex, ptr %1154, i64 %1157
  %1159 = call i32 @zunmqr_(ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef %1140, ptr noundef %1141, ptr noundef %91, ptr noundef %1145, ptr noundef %1146, ptr noundef %1148, ptr noundef %1152, ptr noundef %1153, ptr noundef %1158, ptr noundef %86, ptr noundef %89)
  br label %1160

1160:                                             ; preds = %1135, %1096
  br label %1161

1161:                                             ; preds = %1160, %1071
  %1162 = load i32, ptr %114, align 4, !tbaa !9
  %1163 = icmp ne i32 %1162, 0
  br i1 %1163, label %1164, label %1184

1164:                                             ; preds = %1161
  %1165 = load ptr, ptr %45, align 8, !tbaa !5
  %1166 = load ptr, ptr %50, align 8, !tbaa !5
  %1167 = load i32, ptr %77, align 4, !tbaa !9
  %1168 = sext i32 %1167 to i64
  %1169 = getelementptr inbounds %struct.doublecomplex, ptr %1166, i64 %1168
  %1170 = load ptr, ptr %51, align 8, !tbaa !5
  %1171 = call i32 @zlaset_(ptr noundef @.str.12, ptr noundef %91, ptr noundef %1165, ptr noundef %96, ptr noundef %96, ptr noundef %1169, ptr noundef %1170)
  %1172 = load ptr, ptr %45, align 8, !tbaa !5
  %1173 = load ptr, ptr %46, align 8, !tbaa !5
  %1174 = load i32, ptr %73, align 4, !tbaa !9
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds %struct.doublecomplex, ptr %1173, i64 %1175
  %1177 = load ptr, ptr %47, align 8, !tbaa !5
  %1178 = load ptr, ptr %50, align 8, !tbaa !5
  %1179 = load i32, ptr %77, align 4, !tbaa !9
  %1180 = sext i32 %1179 to i64
  %1181 = getelementptr inbounds %struct.doublecomplex, ptr %1178, i64 %1180
  %1182 = load ptr, ptr %51, align 8, !tbaa !5
  %1183 = call i32 @zlacpy_(ptr noundef @.str.11, ptr noundef %91, ptr noundef %1172, ptr noundef %1176, ptr noundef %1177, ptr noundef %1181, ptr noundef %1182)
  br label %1184

1184:                                             ; preds = %1164, %1161
  %1185 = load i32, ptr %92, align 4, !tbaa !9
  %1186 = icmp ne i32 %1185, 0
  br i1 %1186, label %1187, label %1206

1187:                                             ; preds = %1184
  %1188 = load ptr, ptr %66, align 8, !tbaa !5
  %1189 = load i32, ptr %1188, align 4, !tbaa !9
  %1190 = load i32, ptr %91, align 4, !tbaa !9
  %1191 = sub nsw i32 %1189, %1190
  store i32 %1191, ptr %86, align 4, !tbaa !9
  %1192 = load ptr, ptr %44, align 8, !tbaa !5
  %1193 = load ptr, ptr %46, align 8, !tbaa !5
  %1194 = load i32, ptr %73, align 4, !tbaa !9
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds %struct.doublecomplex, ptr %1193, i64 %1195
  %1197 = load ptr, ptr %47, align 8, !tbaa !5
  %1198 = load ptr, ptr %65, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.doublecomplex, ptr %1198, i64 1
  %1200 = load ptr, ptr %65, align 8, !tbaa !5
  %1201 = load i32, ptr %91, align 4, !tbaa !9
  %1202 = add nsw i32 %1201, 1
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds %struct.doublecomplex, ptr %1200, i64 %1203
  %1205 = call i32 @zungqr_(ptr noundef %1192, ptr noundef %91, ptr noundef %91, ptr noundef %1196, ptr noundef %1197, ptr noundef %1199, ptr noundef %1204, ptr noundef %86, ptr noundef %89)
  br label %1206

1206:                                             ; preds = %1187, %1184
  store i32 0, ptr %36, align 4
  store i32 1, ptr %117, align 4
  br label %1207

1207:                                             ; preds = %1206, %1042, %871, %863, %524
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #3
  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
  %1208 = load i32, ptr %36, align 4
  ret i32 %1208
}

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

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

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

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

declare i32 @zunmqr_(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 @zungqr_(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) #2

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

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

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

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

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

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


; 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.doublecomplex = type { double, double }

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zgedmdq_(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, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28, ptr nocapture noundef readonly %29, ptr noundef %30, ptr noundef %31, ptr noundef %32, ptr noundef %33, ptr nocapture noundef %34) local_unnamed_addr #0 {
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca [1 x i8], align 1
  %40 = alloca i32, align 4
  %41 = alloca %struct.doublecomplex, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #5
  %42 = load i32, ptr %10, align 4, !tbaa !5
  %narrow = xor i32 %42, -1
  %43 = sext i32 %narrow to i64
  %44 = getelementptr inbounds %struct.doublecomplex, ptr %9, i64 %43
  %45 = load i32, ptr %14, align 4, !tbaa !5
  %narrow456 = xor i32 %45, -1
  %46 = sext i32 %narrow456 to i64
  %47 = getelementptr inbounds %struct.doublecomplex, ptr %13, i64 %46
  %48 = load i32, ptr %20, align 4, !tbaa !5
  %narrow457 = xor i32 %48, -1
  %49 = sext i32 %narrow457 to i64
  %50 = getelementptr inbounds %struct.doublecomplex, ptr %19, i64 %49
  %51 = getelementptr inbounds i8, ptr %28, i64 -16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %41, i8 0, i64 16, i1 false)
  %52 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %53 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not = icmp eq i32 %53, 0
  br i1 %.not, label %54, label %57

54:                                               ; preds = %35
  %55 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %56 = icmp ne i32 %55, 0
  br label %57

57:                                               ; preds = %54, %35
  %58 = phi i1 [ true, %35 ], [ %56, %54 ]
  %59 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %60 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %61 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #5
  %62 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #5
  %63 = tail call i32 @lsame_(ptr noundef %5, ptr noundef nonnull @.str) #5
  %64 = tail call i32 @lsame_(ptr noundef %5, ptr noundef nonnull @.str.7) #5
  %65 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.6) #5
  %66 = tail call i32 @lsame_(ptr noundef %4, ptr noundef nonnull @.str) #5
  %67 = load i32, ptr %7, align 4, !tbaa !5
  %68 = load i32, ptr %8, align 4, !tbaa !5
  %. = tail call i32 @llvm.smin.i32(i32 %67, i32 %68)
  store i32 %., ptr %40, align 4, !tbaa !5
  store i32 0, ptr %34, align 4, !tbaa !5
  %69 = load i32, ptr %29, align 4, !tbaa !5
  %70 = icmp eq i32 %69, -1
  br i1 %70, label %77, label %71

71:                                               ; preds = %57
  %72 = load i32, ptr %31, align 4, !tbaa !5
  %73 = icmp eq i32 %72, -1
  br i1 %73, label %77, label %74

74:                                               ; preds = %71
  %75 = load i32, ptr %33, align 4, !tbaa !5
  %76 = icmp eq i32 %75, -1
  br label %77

77:                                               ; preds = %74, %71, %57
  %78 = phi i1 [ true, %71 ], [ true, %57 ], [ %76, %74 ]
  %79 = icmp ne i32 %59, 0
  %or.cond = select i1 %58, i1 true, i1 %79
  br i1 %or.cond, label %83, label %80

80:                                               ; preds = %77
  %81 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.8) #5
  %.not437 = icmp eq i32 %81, 0
  br i1 %.not437, label %82, label %83

82:                                               ; preds = %80
  store i32 -1, ptr %34, align 4, !tbaa !5
  br label %162

83:                                               ; preds = %80, %77
  %84 = icmp ne i32 %60, 0
  %85 = icmp ne i32 %61, 0
  %or.cond3 = select i1 %84, i1 true, i1 %85
  %86 = icmp ne i32 %62, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %86
  br i1 %or.cond5, label %90, label %87

87:                                               ; preds = %83
  %88 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.8) #5
  %.not438 = icmp eq i32 %88, 0
  br i1 %.not438, label %89, label %90

89:                                               ; preds = %87
  store i32 -2, ptr %34, align 4, !tbaa !5
  br label %162

90:                                               ; preds = %87, %83
  %.not439 = icmp eq i32 %52, 0
  br i1 %.not439, label %91, label %.critedge

91:                                               ; preds = %90
  %92 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.8) #5
  %.not440 = icmp eq i32 %92, 0
  br i1 %.not440, label %94, label %95

.critedge:                                        ; preds = %90
  %93 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.8) #5
  %.not441 = icmp eq i32 %93, 0
  br i1 %.not441, label %95, label %94

94:                                               ; preds = %.critedge, %91
  store i32 -3, ptr %34, align 4, !tbaa !5
  br label %162

95:                                               ; preds = %91, %.critedge
  %.not442 = icmp eq i32 %65, 0
  br i1 %.not442, label %96, label %99

96:                                               ; preds = %95
  %97 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.8) #5
  %.not443 = icmp eq i32 %97, 0
  br i1 %.not443, label %98, label %99

98:                                               ; preds = %96
  store i32 -4, ptr %34, align 4, !tbaa !5
  br label %162

99:                                               ; preds = %96, %95
  %.not444 = icmp eq i32 %66, 0
  br i1 %.not444, label %100, label %103

100:                                              ; preds = %99
  %101 = tail call i32 @lsame_(ptr noundef %4, ptr noundef nonnull @.str.8) #5
  %.not445 = icmp eq i32 %101, 0
  br i1 %.not445, label %102, label %103

102:                                              ; preds = %100
  store i32 -5, ptr %34, align 4, !tbaa !5
  br label %162

103:                                              ; preds = %100, %99
  %104 = icmp ne i32 %63, 0
  %105 = icmp ne i32 %64, 0
  %or.cond7 = select i1 %104, i1 true, i1 %105
  br i1 %or.cond7, label %109, label %106

106:                                              ; preds = %103
  %107 = tail call i32 @lsame_(ptr noundef %5, ptr noundef nonnull @.str.8) #5
  %.not446 = icmp eq i32 %107, 0
  br i1 %.not446, label %108, label %109

108:                                              ; preds = %106
  store i32 -6, ptr %34, align 4, !tbaa !5
  br label %162

109:                                              ; preds = %106, %103
  %110 = load i32, ptr %6, align 4, !tbaa !5
  %.off = add i32 %110, -1
  %switch = icmp ult i32 %.off, 4
  br i1 %switch, label %112, label %111

111:                                              ; preds = %109
  store i32 -7, ptr %34, align 4, !tbaa !5
  br label %162

112:                                              ; preds = %109
  %113 = load i32, ptr %7, align 4, !tbaa !5
  %114 = icmp slt i32 %113, 0
  br i1 %114, label %115, label %116

115:                                              ; preds = %112
  store i32 -8, ptr %34, align 4, !tbaa !5
  br label %162

116:                                              ; preds = %112
  %117 = load i32, ptr %8, align 4, !tbaa !5
  %118 = icmp slt i32 %117, 0
  %119 = add nuw nsw i32 %113, 1
  %120 = icmp sgt i32 %117, %119
  %or.cond461 = select i1 %118, i1 true, i1 %120
  br i1 %or.cond461, label %121, label %122

121:                                              ; preds = %116
  store i32 -9, ptr %34, align 4, !tbaa !5
  br label %162

122:                                              ; preds = %116
  %123 = load i32, ptr %10, align 4, !tbaa !5
  %124 = icmp slt i32 %123, %113
  br i1 %124, label %125, label %126

125:                                              ; preds = %122
  store i32 -11, ptr %34, align 4, !tbaa !5
  br label %162

126:                                              ; preds = %122
  %127 = load i32, ptr %12, align 4, !tbaa !5
  %128 = icmp slt i32 %127, %.
  br i1 %128, label %129, label %130

129:                                              ; preds = %126
  store i32 -13, ptr %34, align 4, !tbaa !5
  br label %162

130:                                              ; preds = %126
  %131 = load i32, ptr %14, align 4, !tbaa !5
  %132 = icmp slt i32 %131, %.
  br i1 %132, label %133, label %134

133:                                              ; preds = %130
  store i32 -15, ptr %34, align 4, !tbaa !5
  br label %162

134:                                              ; preds = %130
  %135 = load i32, ptr %15, align 4, !tbaa !5
  %switch469 = icmp ugt i32 %135, -3
  br i1 %switch469, label %139, label %136

136:                                              ; preds = %134
  %137 = icmp slt i32 %135, 1
  %.not447 = icmp sgt i32 %135, %117
  %or.cond462 = or i1 %137, %.not447
  br i1 %or.cond462, label %138, label %139

138:                                              ; preds = %136
  store i32 -16, ptr %34, align 4, !tbaa !5
  br label %162

139:                                              ; preds = %134, %136
  %140 = load double, ptr %16, align 8, !tbaa !9
  %141 = fcmp uge double %140, 0.000000e+00
  %142 = fcmp ult double %140, 1.000000e+00
  %or.cond463 = and i1 %141, %142
  br i1 %or.cond463, label %144, label %143

143:                                              ; preds = %139
  store i32 -17, ptr %34, align 4, !tbaa !5
  br label %162

144:                                              ; preds = %139
  %145 = load i32, ptr %20, align 4, !tbaa !5
  %146 = icmp slt i32 %145, %113
  br i1 %146, label %147, label %148

147:                                              ; preds = %144
  store i32 -21, ptr %34, align 4, !tbaa !5
  br label %162

148:                                              ; preds = %144
  br i1 %or.cond7, label %149, label %153

149:                                              ; preds = %148
  %150 = load i32, ptr %23, align 4, !tbaa !5
  %151 = icmp slt i32 %150, %.
  br i1 %151, label %152, label %153

152:                                              ; preds = %149
  store i32 -24, ptr %34, align 4, !tbaa !5
  br label %162

153:                                              ; preds = %148, %149
  %154 = load i32, ptr %25, align 4, !tbaa !5
  %155 = add nsw i32 %117, -1
  %156 = icmp slt i32 %154, %155
  br i1 %156, label %157, label %158

157:                                              ; preds = %153
  store i32 -26, ptr %34, align 4, !tbaa !5
  br label %162

158:                                              ; preds = %153
  %159 = load i32, ptr %27, align 4, !tbaa !5
  %160 = icmp slt i32 %159, %155
  br i1 %160, label %161, label %._crit_edge

._crit_edge:                                      ; preds = %158
  %.pre = load i32, ptr %34, align 4, !tbaa !5
  br label %162

161:                                              ; preds = %158
  store i32 -28, ptr %34, align 4, !tbaa !5
  br label %162

162:                                              ; preds = %._crit_edge, %89, %98, %108, %115, %125, %133, %143, %152, %161, %157, %147, %138, %129, %121, %111, %102, %94, %82
  %163 = phi i32 [ %.pre, %._crit_edge ], [ -2, %89 ], [ -4, %98 ], [ -6, %108 ], [ -8, %115 ], [ -11, %125 ], [ -15, %133 ], [ -17, %143 ], [ -24, %152 ], [ -28, %161 ], [ -26, %157 ], [ -21, %147 ], [ -16, %138 ], [ -13, %129 ], [ -9, %121 ], [ -7, %111 ], [ -5, %102 ], [ -3, %94 ], [ -1, %82 ]
  %164 = icmp ne i32 %60, 0
  %165 = icmp ne i32 %61, 0
  %or.cond11 = select i1 %164, i1 true, i1 %165
  %166 = icmp ne i32 %62, 0
  %or.cond13 = select i1 %or.cond11, i1 true, i1 %166
  %.464 = select i1 %or.cond13, i8 86, i8 78
  store i8 %.464, ptr %39, align 1, !tbaa !11
  %167 = icmp eq i32 %163, 0
  br i1 %167, label %168, label %.thread488

168:                                              ; preds = %162
  %169 = load i32, ptr %8, align 4, !tbaa !5
  %switch470 = icmp ult i32 %169, 2
  br i1 %switch470, label %170, label %175

170:                                              ; preds = %168
  br i1 %78, label %171, label %173

171:                                              ; preds = %170
  store i32 1, ptr %32, align 4, !tbaa !5
  store <2 x double> <double 2.000000e+00, double 0.000000e+00>, ptr %28, align 8, !tbaa !9
  %172 = getelementptr inbounds i8, ptr %28, i64 16
  store <2 x double> <double 2.000000e+00, double 0.000000e+00>, ptr %172, align 8, !tbaa !9
  store <2 x double> <double 2.000000e+00, double 2.000000e+00>, ptr %30, align 8, !tbaa !9
  br label %174

173:                                              ; preds = %170
  store i32 0, ptr %17, align 4, !tbaa !5
  br label %174

174:                                              ; preds = %173, %171
  store i32 1, ptr %34, align 4, !tbaa !5
  br label %344

175:                                              ; preds = %168
  %spec.select = tail call i32 @llvm.smax.i32(i32 %169, i32 1)
  store i32 2, ptr %36, align 4, !tbaa !5
  %176 = add nsw i32 %., %spec.select
  br i1 %78, label %177, label %184

177:                                              ; preds = %175
  %178 = call i32 @zgeqrf_(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %28, ptr noundef %28, ptr noundef nonnull @c_n1, ptr noundef nonnull %38) #5
  %179 = load double, ptr %28, align 8, !tbaa !12
  %180 = fptosi double %179 to i32
  %181 = load i32, ptr %40, align 4, !tbaa !5
  %182 = add nsw i32 %181, %180
  store i32 %182, ptr %37, align 4, !tbaa !5
  %183 = call i32 @llvm.smax.i32(i32 %182, i32 2)
  %.pre506 = load i32, ptr %8, align 4, !tbaa !5
  br label %184

184:                                              ; preds = %177, %175
  %185 = phi i32 [ %.pre506, %177 ], [ %169, %175 ]
  %.0413 = phi i32 [ %183, %177 ], [ 2, %175 ]
  %186 = add nsw i32 %185, -1
  store i32 %186, ptr %36, align 4, !tbaa !5
  %187 = call i32 @zgedmd_(ptr noundef %0, ptr noundef nonnull %39, ptr noundef %2, ptr noundef %5, ptr noundef %6, ptr noundef nonnull %40, ptr noundef nonnull %36, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23, ptr noundef %24, ptr noundef nonnull %25, ptr noundef %26, ptr noundef nonnull %27, ptr noundef %28, ptr noundef nonnull @c_n1, ptr noundef %30, ptr noundef nonnull @c_n1, ptr noundef %32, ptr noundef nonnull @c_n1, ptr noundef nonnull %38) #5
  %188 = load double, ptr %28, align 8, !tbaa !12
  %189 = fptosi double %188 to i32
  %190 = load i32, ptr %40, align 4, !tbaa !5
  %191 = add nsw i32 %190, %189
  %192 = call i32 @llvm.smax.i32(i32 %176, i32 %191)
  %193 = call i32 @llvm.smax.i32(i32 %192, i32 2)
  %194 = load double, ptr %30, align 8, !tbaa !9
  %195 = fptosi double %194 to i32
  %196 = call i32 @llvm.smax.i32(i32 %195, i32 2)
  %197 = load i32, ptr %32, align 4, !tbaa !5
  %.465 = call i32 @llvm.smax.i32(i32 %197, i32 1)
  br i1 %78, label %198, label %204

198:                                              ; preds = %184
  %199 = getelementptr inbounds i8, ptr %28, i64 16
  %200 = load double, ptr %199, align 8, !tbaa !12
  %201 = fptosi double %200 to i32
  %202 = add nsw i32 %190, %201
  store i32 %202, ptr %37, align 4, !tbaa !5
  %203 = call i32 @llvm.smax.i32(i32 %.0413, i32 %202)
  br label %204

204:                                              ; preds = %198, %184
  %.1 = phi i32 [ %203, %198 ], [ %.0413, %184 ]
  br i1 %or.cond11, label %205, label %216

205:                                              ; preds = %204
  %206 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select466 = call i32 @llvm.smax.i32(i32 %206, i32 1)
  store i32 %193, ptr %36, align 4, !tbaa !5
  %207 = add nsw i32 %spec.select466, %190
  %208 = call i32 @llvm.smax.i32(i32 %193, i32 %207)
  br i1 %78, label %209, label %216

209:                                              ; preds = %205
  %210 = call i32 @zunmqr_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %40, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %28, ptr noundef %19, ptr noundef nonnull %20, ptr noundef nonnull %28, ptr noundef nonnull @c_n1, ptr noundef nonnull %38) #5
  %211 = load double, ptr %28, align 8, !tbaa !12
  %212 = fptosi double %211 to i32
  %213 = load i32, ptr %40, align 4, !tbaa !5
  %214 = add nsw i32 %213, %212
  %215 = call i32 @llvm.smax.i32(i32 %.1, i32 %214)
  br label %216

216:                                              ; preds = %205, %209, %204
  %217 = phi i32 [ %213, %209 ], [ %190, %205 ], [ %190, %204 ]
  %.0414 = phi i32 [ %208, %209 ], [ %208, %205 ], [ %193, %204 ]
  %.2 = phi i32 [ %215, %209 ], [ %.1, %205 ], [ %.1, %204 ]
  %.not452 = icmp eq i32 %65, 0
  br i1 %.not452, label %222, label %218

218:                                              ; preds = %216
  %219 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select467 = call i32 @llvm.smax.i32(i32 %219, i32 1)
  store i32 %.0414, ptr %36, align 4, !tbaa !5
  %220 = add nsw i32 %217, %spec.select467
  %221 = call i32 @llvm.smax.i32(i32 %.0414, i32 %220)
  br i1 %78, label %.thread494, label %222

222:                                              ; preds = %218, %216
  %.1415 = phi i32 [ %221, %218 ], [ %.0414, %216 ]
  %223 = load i32, ptr %33, align 4, !tbaa !5
  %224 = icmp sge i32 %223, %.465
  %or.cond17 = select i1 %224, i1 true, i1 %78
  br i1 %or.cond17, label %226, label %225

225:                                              ; preds = %222
  store i32 -34, ptr %34, align 4, !tbaa !5
  br label %226

226:                                              ; preds = %225, %222
  %227 = load i32, ptr %31, align 4, !tbaa !5
  %228 = icmp sge i32 %227, %196
  %or.cond19 = select i1 %228, i1 true, i1 %78
  br i1 %or.cond19, label %230, label %229

229:                                              ; preds = %226
  store i32 -32, ptr %34, align 4, !tbaa !5
  br label %230

230:                                              ; preds = %229, %226
  %231 = load i32, ptr %29, align 4, !tbaa !5
  %232 = icmp sge i32 %231, %.1415
  %or.cond21 = select i1 %232, i1 true, i1 %78
  br i1 %or.cond21, label %234, label %233

233:                                              ; preds = %230
  store i32 -30, ptr %34, align 4, !tbaa !5
  br label %.thread488

234:                                              ; preds = %230
  %.pr = load i32, ptr %34, align 4, !tbaa !5
  %.not455 = icmp eq i32 %.pr, 0
  br i1 %.not455, label %244, label %.thread488

.thread494:                                       ; preds = %218
  %235 = call i32 @zungqr_(ptr noundef nonnull %7, ptr noundef nonnull %40, ptr noundef nonnull %40, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %28, ptr noundef nonnull %28, ptr noundef nonnull @c_n1, ptr noundef nonnull %38) #5
  %236 = load double, ptr %28, align 8, !tbaa !12
  %237 = fptosi double %236 to i32
  %238 = load i32, ptr %40, align 4, !tbaa !5
  %239 = add nsw i32 %238, %237
  %240 = call i32 @llvm.smax.i32(i32 %.2, i32 %239)
  %.pr497 = load i32, ptr %34, align 4, !tbaa !5
  %.not455498 = icmp eq i32 %.pr497, 0
  br i1 %.not455498, label %.thread501, label %.thread488

.thread488:                                       ; preds = %162, %233, %.thread494, %234
  %241 = phi i32 [ %.pr, %234 ], [ %.pr497, %.thread494 ], [ %163, %162 ], [ -30, %233 ]
  %242 = sub nsw i32 0, %241
  store i32 %242, ptr %36, align 4, !tbaa !5
  %243 = call i32 @xerbla_(ptr noundef nonnull @.str.10, ptr noundef nonnull %36) #5
  br label %344

244:                                              ; preds = %234
  br i1 %78, label %.thread501, label %252

.thread501:                                       ; preds = %.thread494, %244
  %.2416.ph499505 = phi i32 [ %.1415, %244 ], [ %221, %.thread494 ]
  %.4.ph500504 = phi i32 [ %.2, %244 ], [ %240, %.thread494 ]
  store i32 %.465, ptr %32, align 4, !tbaa !5
  %245 = uitofp nneg i32 %.2416.ph499505 to double
  store double %245, ptr %28, align 8, !tbaa !12
  %246 = getelementptr inbounds i8, ptr %28, i64 8
  store double 0.000000e+00, ptr %246, align 8, !tbaa !14
  %247 = uitofp nneg i32 %.4.ph500504 to double
  %248 = getelementptr inbounds i8, ptr %28, i64 16
  store double %247, ptr %248, align 8, !tbaa !12
  %249 = getelementptr inbounds i8, ptr %28, i64 24
  store double 0.000000e+00, ptr %249, align 8, !tbaa !14
  %250 = uitofp nneg i32 %196 to double
  store double %250, ptr %30, align 8, !tbaa !9
  %251 = getelementptr inbounds i8, ptr %30, i64 8
  store double %250, ptr %251, align 8, !tbaa !9
  br label %344

252:                                              ; preds = %244
  %253 = sub nsw i32 %231, %217
  store i32 %253, ptr %36, align 4, !tbaa !5
  %254 = sext i32 %217 to i64
  %255 = getelementptr %struct.doublecomplex, ptr %51, i64 %254
  %256 = getelementptr i8, ptr %255, i64 16
  %257 = call i32 @zgeqrf_(ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %28, ptr noundef %256, ptr noundef nonnull %36, ptr noundef nonnull %38) #5
  %258 = load i32, ptr %8, align 4, !tbaa !5
  %259 = add nsw i32 %258, -1
  store i32 %259, ptr %36, align 4, !tbaa !5
  %260 = call i32 @zlaset_(ptr noundef nonnull @.str.9, ptr noundef nonnull %40, ptr noundef nonnull %36, ptr noundef nonnull %41, ptr noundef nonnull %41, ptr noundef %11, ptr noundef %12) #5
  %261 = load i32, ptr %8, align 4, !tbaa !5
  %262 = add nsw i32 %261, -1
  store i32 %262, ptr %36, align 4, !tbaa !5
  %263 = call i32 @zlacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %40, ptr noundef nonnull %36, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef %12) #5
  %264 = load i32, ptr %8, align 4, !tbaa !5
  %265 = add nsw i32 %264, -1
  store i32 %265, ptr %36, align 4, !tbaa !5
  %266 = shl i32 %42, 1
  %267 = or disjoint i32 %266, 1
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds %struct.doublecomplex, ptr %44, i64 %268
  %270 = call i32 @zlacpy_(ptr noundef nonnull @.str.12, ptr noundef nonnull %40, ptr noundef nonnull %36, ptr noundef nonnull %269, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #5
  %271 = load i32, ptr %7, align 4, !tbaa !5
  %272 = icmp sgt i32 %271, 2
  br i1 %272, label %273, label %282

273:                                              ; preds = %252
  %274 = load i32, ptr %40, align 4, !tbaa !5
  %275 = add nsw i32 %274, -2
  store i32 %275, ptr %36, align 4, !tbaa !5
  %276 = load i32, ptr %8, align 4, !tbaa !5
  %277 = add nsw i32 %276, -2
  store i32 %277, ptr %37, align 4, !tbaa !5
  %278 = sext i32 %45 to i64
  %279 = getelementptr %struct.doublecomplex, ptr %47, i64 %278
  %280 = getelementptr i8, ptr %279, i64 48
  %281 = call i32 @zlaset_(ptr noundef nonnull @.str.9, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %41, ptr noundef nonnull %41, ptr noundef %280, ptr noundef nonnull %14) #5
  br label %282

282:                                              ; preds = %273, %252
  %283 = load i32, ptr %8, align 4, !tbaa !5
  %284 = add nsw i32 %283, -1
  store i32 %284, ptr %36, align 4, !tbaa !5
  %285 = load i32, ptr %29, align 4, !tbaa !5
  %286 = load i32, ptr %40, align 4, !tbaa !5
  %287 = sub nsw i32 %285, %286
  store i32 %287, ptr %37, align 4, !tbaa !5
  %288 = sext i32 %286 to i64
  %289 = getelementptr %struct.doublecomplex, ptr %51, i64 %288
  %290 = getelementptr i8, ptr %289, i64 16
  %291 = call i32 @zgedmd_(ptr noundef %0, ptr noundef nonnull %39, ptr noundef %2, ptr noundef %5, ptr noundef %6, ptr noundef nonnull %40, ptr noundef nonnull %36, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %290, ptr noundef nonnull %37, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %38) #5
  %292 = load i32, ptr %38, align 4
  %293 = and i32 %292, -2
  %or.cond23 = icmp eq i32 %293, 2
  store i32 %292, ptr %34, align 4, !tbaa !5
  br i1 %or.cond23, label %344, label %294

294:                                              ; preds = %282
  br i1 %164, label %295, label %310

295:                                              ; preds = %294
  %296 = load i32, ptr %7, align 4, !tbaa !5
  %297 = load i32, ptr %40, align 4, !tbaa !5
  %298 = icmp sgt i32 %296, %297
  br i1 %298, label %299, label %306

299:                                              ; preds = %295
  %300 = sub nsw i32 %296, %297
  store i32 %300, ptr %36, align 4, !tbaa !5
  %301 = add i32 %48, 1
  %302 = add i32 %301, %297
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %303
  %305 = call i32 @zlaset_(ptr noundef nonnull @.str.12, ptr noundef nonnull %36, ptr noundef %17, ptr noundef nonnull %41, ptr noundef nonnull %41, ptr noundef %304, ptr noundef nonnull %20) #5
  %.pre507 = load i32, ptr %40, align 4, !tbaa !5
  br label %306

306:                                              ; preds = %299, %295
  %307 = phi i32 [ %.pre507, %299 ], [ %297, %295 ]
  %308 = load i32, ptr %29, align 4, !tbaa !5
  %309 = sub nsw i32 %308, %307
  br label %.sink.split

310:                                              ; preds = %294
  br i1 %165, label %311, label %331

311:                                              ; preds = %310
  %312 = call i32 @zlacpy_(ptr noundef nonnull @.str.12, ptr noundef nonnull %8, ptr noundef %17, ptr noundef %11, ptr noundef %12, ptr noundef %19, ptr noundef nonnull %20) #5
  %313 = load i32, ptr %7, align 4, !tbaa !5
  %314 = load i32, ptr %8, align 4, !tbaa !5
  %315 = icmp sgt i32 %313, %314
  br i1 %315, label %316, label %323

316:                                              ; preds = %311
  %317 = sub nsw i32 %313, %314
  store i32 %317, ptr %36, align 4, !tbaa !5
  %318 = add i32 %48, 1
  %319 = add i32 %318, %314
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %320
  %322 = call i32 @zlaset_(ptr noundef nonnull @.str.12, ptr noundef nonnull %36, ptr noundef %17, ptr noundef nonnull %41, ptr noundef nonnull %41, ptr noundef %321, ptr noundef nonnull %20) #5
  br label %323

323:                                              ; preds = %316, %311
  %324 = load i32, ptr %29, align 4, !tbaa !5
  %325 = load i32, ptr %40, align 4, !tbaa !5
  %326 = sub nsw i32 %324, %325
  br label %.sink.split

.sink.split:                                      ; preds = %306, %323
  %storemerge = phi i32 [ %326, %323 ], [ %309, %306 ]
  %.sink509 = phi i32 [ %325, %323 ], [ %307, %306 ]
  store i32 %storemerge, ptr %36, align 4, !tbaa !5
  %327 = sext i32 %.sink509 to i64
  %328 = getelementptr %struct.doublecomplex, ptr %51, i64 %327
  %329 = getelementptr i8, ptr %328, i64 16
  %330 = call i32 @zunmqr_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull %7, ptr noundef %17, ptr noundef nonnull %40, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %28, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %329, ptr noundef nonnull %36, ptr noundef nonnull %38) #5
  br label %331

331:                                              ; preds = %.sink.split, %310
  %.not458 = icmp eq i32 %66, 0
  br i1 %.not458, label %335, label %332

332:                                              ; preds = %331
  %333 = call i32 @zlaset_(ptr noundef nonnull @.str.12, ptr noundef nonnull %40, ptr noundef nonnull %8, ptr noundef nonnull %41, ptr noundef nonnull %41, ptr noundef %13, ptr noundef nonnull %14) #5
  %334 = call i32 @zlacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %40, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #5
  br label %335

335:                                              ; preds = %332, %331
  br i1 %.not452, label %344, label %336

336:                                              ; preds = %335
  %337 = load i32, ptr %29, align 4, !tbaa !5
  %338 = load i32, ptr %40, align 4, !tbaa !5
  %339 = sub nsw i32 %337, %338
  store i32 %339, ptr %36, align 4, !tbaa !5
  %340 = sext i32 %338 to i64
  %341 = getelementptr %struct.doublecomplex, ptr %51, i64 %340
  %342 = getelementptr i8, ptr %341, i64 16
  %343 = call i32 @zungqr_(ptr noundef nonnull %7, ptr noundef nonnull %40, ptr noundef nonnull %40, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %28, ptr noundef %342, ptr noundef nonnull %36, ptr noundef nonnull %38) #5
  br label %344

344:                                              ; preds = %282, %335, %336, %.thread501, %.thread488, %174
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #5
  ret i32 0
}

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

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

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

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

declare i32 @zunmqr_(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 @zungqr_(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) local_unnamed_addr #2

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass