; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (zlalsd)

; 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 [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.doublecomplex, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c_b10 = external hidden global double, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b35 = external hidden global double, align 8
@.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

; Function Attrs: nounwind uwtable
define dso_local i32 @zlalsd_(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) #0 {
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca double, align 8
  %39 = alloca %struct.doublecomplex, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca double, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca double, align 8
  %49 = alloca i64, align 8
  %50 = alloca double, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca double, align 8
  %56 = alloca i64, align 8
  %57 = alloca double, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca double, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca i64, align 8
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca i64, align 8
  %81 = alloca double, align 8
  %82 = alloca i64, align 8
  %83 = alloca i64, align 8
  %84 = alloca i64, align 8
  %85 = alloca i64, align 8
  %86 = alloca i64, align 8
  %87 = alloca i32, align 4
  store ptr %0, ptr %16, align 8, !tbaa !5
  store ptr %1, ptr %17, align 8, !tbaa !5
  store ptr %2, ptr %18, align 8, !tbaa !5
  store ptr %3, ptr %19, align 8, !tbaa !5
  store ptr %4, ptr %20, align 8, !tbaa !5
  store ptr %5, ptr %21, align 8, !tbaa !5
  store ptr %6, ptr %22, align 8, !tbaa !5
  store ptr %7, ptr %23, align 8, !tbaa !5
  store ptr %8, ptr %24, align 8, !tbaa !5
  store ptr %9, ptr %25, align 8, !tbaa !5
  store ptr %10, ptr %26, align 8, !tbaa !5
  store ptr %11, ptr %27, align 8, !tbaa !5
  store ptr %12, ptr %28, align 8, !tbaa !5
  store ptr %13, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #4
  %88 = load ptr, ptr %20, align 8, !tbaa !5
  %89 = getelementptr inbounds double, ptr %88, i32 -1
  store ptr %89, ptr %20, align 8, !tbaa !5
  %90 = load ptr, ptr %21, align 8, !tbaa !5
  %91 = getelementptr inbounds double, ptr %90, i32 -1
  store ptr %91, ptr %21, align 8, !tbaa !5
  %92 = load ptr, ptr %23, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  store i64 %93, ptr %30, align 8, !tbaa !9
  %94 = load i64, ptr %30, align 8, !tbaa !9
  %95 = add nsw i64 1, %94
  store i64 %95, ptr %31, align 8, !tbaa !9
  %96 = load i64, ptr %31, align 8, !tbaa !9
  %97 = load ptr, ptr %22, align 8, !tbaa !5
  %98 = sub i64 0, %96
  %99 = getelementptr inbounds %struct.doublecomplex, ptr %97, i64 %98
  store ptr %99, ptr %22, align 8, !tbaa !5
  %100 = load ptr, ptr %26, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.doublecomplex, ptr %100, i32 -1
  store ptr %101, ptr %26, align 8, !tbaa !5
  %102 = load ptr, ptr %27, align 8, !tbaa !5
  %103 = getelementptr inbounds double, ptr %102, i32 -1
  store ptr %103, ptr %27, align 8, !tbaa !5
  %104 = load ptr, ptr %28, align 8, !tbaa !5
  %105 = getelementptr inbounds i64, ptr %104, i32 -1
  store ptr %105, ptr %28, align 8, !tbaa !5
  %106 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %106, align 8, !tbaa !9
  %107 = load ptr, ptr %18, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = icmp slt i64 %108, 0
  br i1 %109, label %110, label %112

110:                                              ; preds = %14
  %111 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -3, ptr %111, align 8, !tbaa !9
  br label %132

112:                                              ; preds = %14
  %113 = load ptr, ptr %19, align 8, !tbaa !5
  %114 = load i64, ptr %113, align 8, !tbaa !9
  %115 = icmp slt i64 %114, 1
  br i1 %115, label %116, label %118

116:                                              ; preds = %112
  %117 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -4, ptr %117, align 8, !tbaa !9
  br label %131

118:                                              ; preds = %112
  %119 = load ptr, ptr %23, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  %121 = icmp slt i64 %120, 1
  br i1 %121, label %128, label %122

122:                                              ; preds = %118
  %123 = load ptr, ptr %23, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = load ptr, ptr %18, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  %127 = icmp slt i64 %124, %126
  br i1 %127, label %128, label %130

128:                                              ; preds = %122, %118
  %129 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -8, ptr %129, align 8, !tbaa !9
  br label %130

130:                                              ; preds = %128, %122
  br label %131

131:                                              ; preds = %130, %116
  br label %132

132:                                              ; preds = %131, %110
  %133 = load ptr, ptr %29, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  %135 = icmp ne i64 %134, 0
  br i1 %135, label %136, label %141

136:                                              ; preds = %132
  %137 = load ptr, ptr %29, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  %139 = sub nsw i64 0, %138
  store i64 %139, ptr %32, align 8, !tbaa !9
  %140 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %32)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

141:                                              ; preds = %132
  %142 = call double @dlamch_(ptr noundef @.str.1)
  store double %142, ptr %55, align 8, !tbaa !11
  %143 = load ptr, ptr %24, align 8, !tbaa !5
  %144 = load double, ptr %143, align 8, !tbaa !11
  %145 = fcmp ole double %144, 0.000000e+00
  br i1 %145, label %150, label %146

146:                                              ; preds = %141
  %147 = load ptr, ptr %24, align 8, !tbaa !5
  %148 = load double, ptr %147, align 8, !tbaa !11
  %149 = fcmp oge double %148, 1.000000e+00
  br i1 %149, label %150, label %152

150:                                              ; preds = %146, %141
  %151 = load double, ptr %55, align 8, !tbaa !11
  store double %151, ptr %60, align 8, !tbaa !11
  br label %155

152:                                              ; preds = %146
  %153 = load ptr, ptr %24, align 8, !tbaa !5
  %154 = load double, ptr %153, align 8, !tbaa !11
  store double %154, ptr %60, align 8, !tbaa !11
  br label %155

155:                                              ; preds = %152, %150
  %156 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 0, ptr %156, align 8, !tbaa !9
  %157 = load ptr, ptr %18, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp eq i64 %158, 0
  br i1 %159, label %160, label %161

160:                                              ; preds = %155
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

161:                                              ; preds = %155
  %162 = load ptr, ptr %18, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp eq i64 %163, 1
  br i1 %164, label %165, label %206

165:                                              ; preds = %161
  %166 = load ptr, ptr %20, align 8, !tbaa !5
  %167 = getelementptr inbounds double, ptr %166, i64 1
  %168 = load double, ptr %167, align 8, !tbaa !11
  %169 = fcmp oeq double %168, 0.000000e+00
  br i1 %169, label %170, label %177

170:                                              ; preds = %165
  %171 = load ptr, ptr %19, align 8, !tbaa !5
  %172 = load ptr, ptr %22, align 8, !tbaa !5
  %173 = load i64, ptr %31, align 8, !tbaa !9
  %174 = getelementptr inbounds %struct.doublecomplex, ptr %172, i64 %173
  %175 = load ptr, ptr %23, align 8, !tbaa !5
  %176 = call i32 @zlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %171, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %174, ptr noundef %175)
  br label %205

177:                                              ; preds = %165
  %178 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 1, ptr %178, align 8, !tbaa !9
  %179 = load ptr, ptr %20, align 8, !tbaa !5
  %180 = getelementptr inbounds double, ptr %179, i64 1
  %181 = load ptr, ptr %19, align 8, !tbaa !5
  %182 = load ptr, ptr %22, align 8, !tbaa !5
  %183 = load i64, ptr %31, align 8, !tbaa !9
  %184 = getelementptr inbounds %struct.doublecomplex, ptr %182, i64 %183
  %185 = load ptr, ptr %23, align 8, !tbaa !5
  %186 = load ptr, ptr %29, align 8, !tbaa !5
  %187 = call i32 @zlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %180, ptr noundef @c_b10, ptr noundef @c__1, ptr noundef %181, ptr noundef %184, ptr noundef %185, ptr noundef %186)
  %188 = load ptr, ptr %20, align 8, !tbaa !5
  %189 = getelementptr inbounds double, ptr %188, i64 1
  %190 = load double, ptr %189, align 8, !tbaa !11
  %191 = fcmp oge double %190, 0.000000e+00
  br i1 %191, label %192, label %196

192:                                              ; preds = %177
  %193 = load ptr, ptr %20, align 8, !tbaa !5
  %194 = getelementptr inbounds double, ptr %193, i64 1
  %195 = load double, ptr %194, align 8, !tbaa !11
  br label %201

196:                                              ; preds = %177
  %197 = load ptr, ptr %20, align 8, !tbaa !5
  %198 = getelementptr inbounds double, ptr %197, i64 1
  %199 = load double, ptr %198, align 8, !tbaa !11
  %200 = fneg double %199
  br label %201

201:                                              ; preds = %196, %192
  %202 = phi double [ %195, %192 ], [ %200, %196 ]
  %203 = load ptr, ptr %20, align 8, !tbaa !5
  %204 = getelementptr inbounds double, ptr %203, i64 1
  store double %202, ptr %204, align 8, !tbaa !11
  br label %205

205:                                              ; preds = %201, %170
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

206:                                              ; preds = %161
  br label %207

207:                                              ; preds = %206
  %208 = load ptr, ptr %16, align 8, !tbaa !5
  %209 = load i8, ptr %208, align 1, !tbaa !13
  %210 = zext i8 %209 to i32
  %211 = icmp eq i32 %210, 76
  br i1 %211, label %212, label %341

212:                                              ; preds = %207
  %213 = load ptr, ptr %18, align 8, !tbaa !5
  %214 = load i64, ptr %213, align 8, !tbaa !9
  %215 = sub nsw i64 %214, 1
  store i64 %215, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %282, %212
  %217 = load i64, ptr %41, align 8, !tbaa !9
  %218 = load i64, ptr %32, align 8, !tbaa !9
  %219 = icmp sle i64 %217, %218
  br i1 %219, label %220, label %285

220:                                              ; preds = %216
  %221 = load ptr, ptr %20, align 8, !tbaa !5
  %222 = load i64, ptr %41, align 8, !tbaa !9
  %223 = getelementptr inbounds double, ptr %221, i64 %222
  %224 = load ptr, ptr %21, align 8, !tbaa !5
  %225 = load i64, ptr %41, align 8, !tbaa !9
  %226 = getelementptr inbounds double, ptr %224, i64 %225
  %227 = call i32 @dlartg_(ptr noundef %223, ptr noundef %226, ptr noundef %48, ptr noundef %50, ptr noundef %44)
  %228 = load double, ptr %44, align 8, !tbaa !11
  %229 = load ptr, ptr %20, align 8, !tbaa !5
  %230 = load i64, ptr %41, align 8, !tbaa !9
  %231 = getelementptr inbounds double, ptr %229, i64 %230
  store double %228, ptr %231, align 8, !tbaa !11
  %232 = load double, ptr %50, align 8, !tbaa !11
  %233 = load ptr, ptr %20, align 8, !tbaa !5
  %234 = load i64, ptr %41, align 8, !tbaa !9
  %235 = add nsw i64 %234, 1
  %236 = getelementptr inbounds double, ptr %233, i64 %235
  %237 = load double, ptr %236, align 8, !tbaa !11
  %238 = fmul double %232, %237
  %239 = load ptr, ptr %21, align 8, !tbaa !5
  %240 = load i64, ptr %41, align 8, !tbaa !9
  %241 = getelementptr inbounds double, ptr %239, i64 %240
  store double %238, ptr %241, align 8, !tbaa !11
  %242 = load double, ptr %48, align 8, !tbaa !11
  %243 = load ptr, ptr %20, align 8, !tbaa !5
  %244 = load i64, ptr %41, align 8, !tbaa !9
  %245 = add nsw i64 %244, 1
  %246 = getelementptr inbounds double, ptr %243, i64 %245
  %247 = load double, ptr %246, align 8, !tbaa !11
  %248 = fmul double %242, %247
  %249 = load ptr, ptr %20, align 8, !tbaa !5
  %250 = load i64, ptr %41, align 8, !tbaa !9
  %251 = add nsw i64 %250, 1
  %252 = getelementptr inbounds double, ptr %249, i64 %251
  store double %248, ptr %252, align 8, !tbaa !11
  %253 = load ptr, ptr %19, align 8, !tbaa !5
  %254 = load i64, ptr %253, align 8, !tbaa !9
  %255 = icmp eq i64 %254, 1
  br i1 %255, label %256, label %269

256:                                              ; preds = %220
  %257 = load ptr, ptr %22, align 8, !tbaa !5
  %258 = load i64, ptr %41, align 8, !tbaa !9
  %259 = load i64, ptr %30, align 8, !tbaa !9
  %260 = add nsw i64 %258, %259
  %261 = getelementptr inbounds %struct.doublecomplex, ptr %257, i64 %260
  %262 = load ptr, ptr %22, align 8, !tbaa !5
  %263 = load i64, ptr %41, align 8, !tbaa !9
  %264 = add nsw i64 %263, 1
  %265 = load i64, ptr %30, align 8, !tbaa !9
  %266 = add nsw i64 %264, %265
  %267 = getelementptr inbounds %struct.doublecomplex, ptr %262, i64 %266
  %268 = call i32 @f2c_zdrot(ptr noundef @c__1, ptr noundef %261, ptr noundef @c__1, ptr noundef %267, ptr noundef @c__1, ptr noundef %48, ptr noundef %50)
  br label %281

269:                                              ; preds = %220
  %270 = load double, ptr %48, align 8, !tbaa !11
  %271 = load ptr, ptr %27, align 8, !tbaa !5
  %272 = load i64, ptr %41, align 8, !tbaa !9
  %273 = shl i64 %272, 1
  %274 = sub nsw i64 %273, 1
  %275 = getelementptr inbounds double, ptr %271, i64 %274
  store double %270, ptr %275, align 8, !tbaa !11
  %276 = load double, ptr %50, align 8, !tbaa !11
  %277 = load ptr, ptr %27, align 8, !tbaa !5
  %278 = load i64, ptr %41, align 8, !tbaa !9
  %279 = mul nsw i64 %278, 2
  %280 = getelementptr inbounds double, ptr %277, i64 %279
  store double %276, ptr %280, align 8, !tbaa !11
  br label %281

281:                                              ; preds = %269, %256
  br label %282

282:                                              ; preds = %281
  %283 = load i64, ptr %41, align 8, !tbaa !9
  %284 = add nsw i64 %283, 1
  store i64 %284, ptr %41, align 8, !tbaa !9
  br label %216, !llvm.loop !14

285:                                              ; preds = %216
  %286 = load ptr, ptr %19, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = icmp sgt i64 %287, 1
  br i1 %288, label %289, label %340

289:                                              ; preds = %285
  %290 = load ptr, ptr %19, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  store i64 %291, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %292

292:                                              ; preds = %336, %289
  %293 = load i64, ptr %41, align 8, !tbaa !9
  %294 = load i64, ptr %32, align 8, !tbaa !9
  %295 = icmp sle i64 %293, %294
  br i1 %295, label %296, label %339

296:                                              ; preds = %292
  %297 = load ptr, ptr %18, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = sub nsw i64 %298, 1
  store i64 %299, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %300

300:                                              ; preds = %332, %296
  %301 = load i64, ptr %42, align 8, !tbaa !9
  %302 = load i64, ptr %33, align 8, !tbaa !9
  %303 = icmp sle i64 %301, %302
  br i1 %303, label %304, label %335

304:                                              ; preds = %300
  %305 = load ptr, ptr %27, align 8, !tbaa !5
  %306 = load i64, ptr %42, align 8, !tbaa !9
  %307 = shl i64 %306, 1
  %308 = sub nsw i64 %307, 1
  %309 = getelementptr inbounds double, ptr %305, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !11
  store double %310, ptr %48, align 8, !tbaa !11
  %311 = load ptr, ptr %27, align 8, !tbaa !5
  %312 = load i64, ptr %42, align 8, !tbaa !9
  %313 = mul nsw i64 %312, 2
  %314 = getelementptr inbounds double, ptr %311, i64 %313
  %315 = load double, ptr %314, align 8, !tbaa !11
  store double %315, ptr %50, align 8, !tbaa !11
  %316 = load ptr, ptr %22, align 8, !tbaa !5
  %317 = load i64, ptr %42, align 8, !tbaa !9
  %318 = load i64, ptr %41, align 8, !tbaa !9
  %319 = load i64, ptr %30, align 8, !tbaa !9
  %320 = mul nsw i64 %318, %319
  %321 = add nsw i64 %317, %320
  %322 = getelementptr inbounds %struct.doublecomplex, ptr %316, i64 %321
  %323 = load ptr, ptr %22, align 8, !tbaa !5
  %324 = load i64, ptr %42, align 8, !tbaa !9
  %325 = add nsw i64 %324, 1
  %326 = load i64, ptr %41, align 8, !tbaa !9
  %327 = load i64, ptr %30, align 8, !tbaa !9
  %328 = mul nsw i64 %326, %327
  %329 = add nsw i64 %325, %328
  %330 = getelementptr inbounds %struct.doublecomplex, ptr %323, i64 %329
  %331 = call i32 @f2c_zdrot(ptr noundef @c__1, ptr noundef %322, ptr noundef @c__1, ptr noundef %330, ptr noundef @c__1, ptr noundef %48, ptr noundef %50)
  br label %332

332:                                              ; preds = %304
  %333 = load i64, ptr %42, align 8, !tbaa !9
  %334 = add nsw i64 %333, 1
  store i64 %334, ptr %42, align 8, !tbaa !9
  br label %300, !llvm.loop !16

335:                                              ; preds = %300
  br label %336

336:                                              ; preds = %335
  %337 = load i64, ptr %41, align 8, !tbaa !9
  %338 = add nsw i64 %337, 1
  store i64 %338, ptr %41, align 8, !tbaa !9
  br label %292, !llvm.loop !17

339:                                              ; preds = %292
  br label %340

340:                                              ; preds = %339, %285
  br label %341

341:                                              ; preds = %340, %207
  %342 = load ptr, ptr %18, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = sub nsw i64 %343, 1
  store i64 %344, ptr %53, align 8, !tbaa !9
  %345 = load ptr, ptr %18, align 8, !tbaa !5
  %346 = load ptr, ptr %20, align 8, !tbaa !5
  %347 = getelementptr inbounds double, ptr %346, i64 1
  %348 = load ptr, ptr %21, align 8, !tbaa !5
  %349 = getelementptr inbounds double, ptr %348, i64 1
  %350 = call double @dlanst_(ptr noundef @.str.4, ptr noundef %345, ptr noundef %347, ptr noundef %349)
  store double %350, ptr %81, align 8, !tbaa !11
  %351 = load double, ptr %81, align 8, !tbaa !11
  %352 = fcmp oeq double %351, 0.000000e+00
  br i1 %352, label %353, label %361

353:                                              ; preds = %341
  %354 = load ptr, ptr %18, align 8, !tbaa !5
  %355 = load ptr, ptr %19, align 8, !tbaa !5
  %356 = load ptr, ptr %22, align 8, !tbaa !5
  %357 = load i64, ptr %31, align 8, !tbaa !9
  %358 = getelementptr inbounds %struct.doublecomplex, ptr %356, i64 %357
  %359 = load ptr, ptr %23, align 8, !tbaa !5
  %360 = call i32 @zlaset_(ptr noundef @.str.2, ptr noundef %354, ptr noundef %355, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %358, ptr noundef %359)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

361:                                              ; preds = %341
  %362 = load ptr, ptr %18, align 8, !tbaa !5
  %363 = load ptr, ptr %20, align 8, !tbaa !5
  %364 = getelementptr inbounds double, ptr %363, i64 1
  %365 = load ptr, ptr %18, align 8, !tbaa !5
  %366 = load ptr, ptr %29, align 8, !tbaa !5
  %367 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %81, ptr noundef @c_b10, ptr noundef %362, ptr noundef @c__1, ptr noundef %364, ptr noundef %365, ptr noundef %366)
  %368 = load ptr, ptr %21, align 8, !tbaa !5
  %369 = getelementptr inbounds double, ptr %368, i64 1
  %370 = load ptr, ptr %29, align 8, !tbaa !5
  %371 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %81, ptr noundef @c_b10, ptr noundef %53, ptr noundef @c__1, ptr noundef %369, ptr noundef %53, ptr noundef %370)
  %372 = load ptr, ptr %18, align 8, !tbaa !5
  %373 = load i64, ptr %372, align 8, !tbaa !9
  %374 = load ptr, ptr %17, align 8, !tbaa !5
  %375 = load i64, ptr %374, align 8, !tbaa !9
  %376 = icmp sle i64 %373, %375
  br i1 %376, label %377, label %863

377:                                              ; preds = %361
  store i64 1, ptr %69, align 8, !tbaa !9
  %378 = load i64, ptr %69, align 8, !tbaa !9
  %379 = load ptr, ptr %18, align 8, !tbaa !5
  %380 = load i64, ptr %379, align 8, !tbaa !9
  %381 = load ptr, ptr %18, align 8, !tbaa !5
  %382 = load i64, ptr %381, align 8, !tbaa !9
  %383 = mul nsw i64 %380, %382
  %384 = add nsw i64 %378, %383
  store i64 %384, ptr %77, align 8, !tbaa !9
  %385 = load i64, ptr %77, align 8, !tbaa !9
  %386 = load ptr, ptr %18, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  %388 = load ptr, ptr %18, align 8, !tbaa !5
  %389 = load i64, ptr %388, align 8, !tbaa !9
  %390 = mul nsw i64 %387, %389
  %391 = add nsw i64 %385, %390
  store i64 %391, ptr %85, align 8, !tbaa !9
  %392 = load i64, ptr %85, align 8, !tbaa !9
  store i64 %392, ptr %75, align 8, !tbaa !9
  %393 = load i64, ptr %75, align 8, !tbaa !9
  %394 = load ptr, ptr %18, align 8, !tbaa !5
  %395 = load i64, ptr %394, align 8, !tbaa !9
  %396 = load ptr, ptr %19, align 8, !tbaa !5
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = mul nsw i64 %395, %397
  %399 = add nsw i64 %393, %398
  store i64 %399, ptr %72, align 8, !tbaa !9
  %400 = load i64, ptr %72, align 8, !tbaa !9
  %401 = load ptr, ptr %18, align 8, !tbaa !5
  %402 = load i64, ptr %401, align 8, !tbaa !9
  %403 = load ptr, ptr %19, align 8, !tbaa !5
  %404 = load i64, ptr %403, align 8, !tbaa !9
  %405 = mul nsw i64 %402, %404
  %406 = add nsw i64 %400, %405
  store i64 %406, ptr %62, align 8, !tbaa !9
  %407 = load ptr, ptr %18, align 8, !tbaa !5
  %408 = load ptr, ptr %18, align 8, !tbaa !5
  %409 = load ptr, ptr %27, align 8, !tbaa !5
  %410 = load i64, ptr %69, align 8, !tbaa !9
  %411 = getelementptr inbounds double, ptr %409, i64 %410
  %412 = load ptr, ptr %18, align 8, !tbaa !5
  %413 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %407, ptr noundef %408, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %411, ptr noundef %412)
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = load ptr, ptr %18, align 8, !tbaa !5
  %416 = load ptr, ptr %27, align 8, !tbaa !5
  %417 = load i64, ptr %77, align 8, !tbaa !9
  %418 = getelementptr inbounds double, ptr %416, i64 %417
  %419 = load ptr, ptr %18, align 8, !tbaa !5
  %420 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %414, ptr noundef %415, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %418, ptr noundef %419)
  %421 = load ptr, ptr %18, align 8, !tbaa !5
  %422 = load ptr, ptr %18, align 8, !tbaa !5
  %423 = load ptr, ptr %18, align 8, !tbaa !5
  %424 = load ptr, ptr %20, align 8, !tbaa !5
  %425 = getelementptr inbounds double, ptr %424, i64 1
  %426 = load ptr, ptr %21, align 8, !tbaa !5
  %427 = getelementptr inbounds double, ptr %426, i64 1
  %428 = load ptr, ptr %27, align 8, !tbaa !5
  %429 = load i64, ptr %77, align 8, !tbaa !9
  %430 = getelementptr inbounds double, ptr %428, i64 %429
  %431 = load ptr, ptr %18, align 8, !tbaa !5
  %432 = load ptr, ptr %27, align 8, !tbaa !5
  %433 = load i64, ptr %69, align 8, !tbaa !9
  %434 = getelementptr inbounds double, ptr %432, i64 %433
  %435 = load ptr, ptr %18, align 8, !tbaa !5
  %436 = load ptr, ptr %27, align 8, !tbaa !5
  %437 = load i64, ptr %85, align 8, !tbaa !9
  %438 = getelementptr inbounds double, ptr %436, i64 %437
  %439 = load ptr, ptr %27, align 8, !tbaa !5
  %440 = load i64, ptr %85, align 8, !tbaa !9
  %441 = getelementptr inbounds double, ptr %439, i64 %440
  %442 = load ptr, ptr %29, align 8, !tbaa !5
  %443 = call i32 @dlasdq_(ptr noundef @.str.5, ptr noundef @c__0, ptr noundef %421, ptr noundef %422, ptr noundef %423, ptr noundef @c__0, ptr noundef %425, ptr noundef %427, ptr noundef %430, ptr noundef %431, ptr noundef %434, ptr noundef %435, ptr noundef %438, ptr noundef @c__1, ptr noundef %441, ptr noundef %442)
  %444 = load ptr, ptr %29, align 8, !tbaa !5
  %445 = load i64, ptr %444, align 8, !tbaa !9
  %446 = icmp ne i64 %445, 0
  br i1 %446, label %447, label %448

447:                                              ; preds = %377
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

448:                                              ; preds = %377
  %449 = load i64, ptr %62, align 8, !tbaa !9
  %450 = sub nsw i64 %449, 1
  store i64 %450, ptr %42, align 8, !tbaa !9
  %451 = load ptr, ptr %19, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  store i64 %452, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %484, %448
  %454 = load i64, ptr %61, align 8, !tbaa !9
  %455 = load i64, ptr %32, align 8, !tbaa !9
  %456 = icmp sle i64 %454, %455
  br i1 %456, label %457, label %487

457:                                              ; preds = %453
  %458 = load ptr, ptr %18, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  store i64 %459, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %460

460:                                              ; preds = %480, %457
  %461 = load i64, ptr %68, align 8, !tbaa !9
  %462 = load i64, ptr %33, align 8, !tbaa !9
  %463 = icmp sle i64 %461, %462
  br i1 %463, label %464, label %483

464:                                              ; preds = %460
  %465 = load i64, ptr %42, align 8, !tbaa !9
  %466 = add nsw i64 %465, 1
  store i64 %466, ptr %42, align 8, !tbaa !9
  %467 = load i64, ptr %68, align 8, !tbaa !9
  %468 = load i64, ptr %61, align 8, !tbaa !9
  %469 = load i64, ptr %30, align 8, !tbaa !9
  %470 = mul nsw i64 %468, %469
  %471 = add nsw i64 %467, %470
  store i64 %471, ptr %34, align 8, !tbaa !9
  %472 = load ptr, ptr %22, align 8, !tbaa !5
  %473 = load i64, ptr %34, align 8, !tbaa !9
  %474 = getelementptr inbounds %struct.doublecomplex, ptr %472, i64 %473
  %475 = getelementptr inbounds %struct.doublecomplex, ptr %474, i32 0, i32 0
  %476 = load double, ptr %475, align 8, !tbaa !18
  %477 = load ptr, ptr %27, align 8, !tbaa !5
  %478 = load i64, ptr %42, align 8, !tbaa !9
  %479 = getelementptr inbounds double, ptr %477, i64 %478
  store double %476, ptr %479, align 8, !tbaa !11
  br label %480

480:                                              ; preds = %464
  %481 = load i64, ptr %68, align 8, !tbaa !9
  %482 = add nsw i64 %481, 1
  store i64 %482, ptr %68, align 8, !tbaa !9
  br label %460, !llvm.loop !20

483:                                              ; preds = %460
  br label %484

484:                                              ; preds = %483
  %485 = load i64, ptr %61, align 8, !tbaa !9
  %486 = add nsw i64 %485, 1
  store i64 %486, ptr %61, align 8, !tbaa !9
  br label %453, !llvm.loop !21

487:                                              ; preds = %453
  %488 = load ptr, ptr %18, align 8, !tbaa !5
  %489 = load ptr, ptr %19, align 8, !tbaa !5
  %490 = load ptr, ptr %18, align 8, !tbaa !5
  %491 = load ptr, ptr %27, align 8, !tbaa !5
  %492 = load i64, ptr %69, align 8, !tbaa !9
  %493 = getelementptr inbounds double, ptr %491, i64 %492
  %494 = load ptr, ptr %18, align 8, !tbaa !5
  %495 = load ptr, ptr %27, align 8, !tbaa !5
  %496 = load i64, ptr %62, align 8, !tbaa !9
  %497 = getelementptr inbounds double, ptr %495, i64 %496
  %498 = load ptr, ptr %18, align 8, !tbaa !5
  %499 = load ptr, ptr %27, align 8, !tbaa !5
  %500 = load i64, ptr %75, align 8, !tbaa !9
  %501 = getelementptr inbounds double, ptr %499, i64 %500
  %502 = load ptr, ptr %18, align 8, !tbaa !5
  %503 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %488, ptr noundef %489, ptr noundef %490, ptr noundef @c_b10, ptr noundef %493, ptr noundef %494, ptr noundef %497, ptr noundef %498, ptr noundef @c_b35, ptr noundef %501, ptr noundef %502)
  %504 = load i64, ptr %62, align 8, !tbaa !9
  %505 = sub nsw i64 %504, 1
  store i64 %505, ptr %42, align 8, !tbaa !9
  %506 = load ptr, ptr %19, align 8, !tbaa !5
  %507 = load i64, ptr %506, align 8, !tbaa !9
  store i64 %507, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %508

508:                                              ; preds = %537, %487
  %509 = load i64, ptr %61, align 8, !tbaa !9
  %510 = load i64, ptr %32, align 8, !tbaa !9
  %511 = icmp sle i64 %509, %510
  br i1 %511, label %512, label %540

512:                                              ; preds = %508
  %513 = load ptr, ptr %18, align 8, !tbaa !5
  %514 = load i64, ptr %513, align 8, !tbaa !9
  store i64 %514, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %515

515:                                              ; preds = %533, %512
  %516 = load i64, ptr %68, align 8, !tbaa !9
  %517 = load i64, ptr %33, align 8, !tbaa !9
  %518 = icmp sle i64 %516, %517
  br i1 %518, label %519, label %536

519:                                              ; preds = %515
  %520 = load i64, ptr %42, align 8, !tbaa !9
  %521 = add nsw i64 %520, 1
  store i64 %521, ptr %42, align 8, !tbaa !9
  %522 = load ptr, ptr %22, align 8, !tbaa !5
  %523 = load i64, ptr %68, align 8, !tbaa !9
  %524 = load i64, ptr %61, align 8, !tbaa !9
  %525 = load i64, ptr %30, align 8, !tbaa !9
  %526 = mul nsw i64 %524, %525
  %527 = add nsw i64 %523, %526
  %528 = getelementptr inbounds %struct.doublecomplex, ptr %522, i64 %527
  %529 = call double @d_imag(ptr noundef %528)
  %530 = load ptr, ptr %27, align 8, !tbaa !5
  %531 = load i64, ptr %42, align 8, !tbaa !9
  %532 = getelementptr inbounds double, ptr %530, i64 %531
  store double %529, ptr %532, align 8, !tbaa !11
  br label %533

533:                                              ; preds = %519
  %534 = load i64, ptr %68, align 8, !tbaa !9
  %535 = add nsw i64 %534, 1
  store i64 %535, ptr %68, align 8, !tbaa !9
  br label %515, !llvm.loop !22

536:                                              ; preds = %515
  br label %537

537:                                              ; preds = %536
  %538 = load i64, ptr %61, align 8, !tbaa !9
  %539 = add nsw i64 %538, 1
  store i64 %539, ptr %61, align 8, !tbaa !9
  br label %508, !llvm.loop !23

540:                                              ; preds = %508
  %541 = load ptr, ptr %18, align 8, !tbaa !5
  %542 = load ptr, ptr %19, align 8, !tbaa !5
  %543 = load ptr, ptr %18, align 8, !tbaa !5
  %544 = load ptr, ptr %27, align 8, !tbaa !5
  %545 = load i64, ptr %69, align 8, !tbaa !9
  %546 = getelementptr inbounds double, ptr %544, i64 %545
  %547 = load ptr, ptr %18, align 8, !tbaa !5
  %548 = load ptr, ptr %27, align 8, !tbaa !5
  %549 = load i64, ptr %62, align 8, !tbaa !9
  %550 = getelementptr inbounds double, ptr %548, i64 %549
  %551 = load ptr, ptr %18, align 8, !tbaa !5
  %552 = load ptr, ptr %27, align 8, !tbaa !5
  %553 = load i64, ptr %72, align 8, !tbaa !9
  %554 = getelementptr inbounds double, ptr %552, i64 %553
  %555 = load ptr, ptr %18, align 8, !tbaa !5
  %556 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %541, ptr noundef %542, ptr noundef %543, ptr noundef @c_b10, ptr noundef %546, ptr noundef %547, ptr noundef %550, ptr noundef %551, ptr noundef @c_b35, ptr noundef %554, ptr noundef %555)
  %557 = load i64, ptr %75, align 8, !tbaa !9
  %558 = sub nsw i64 %557, 1
  store i64 %558, ptr %71, align 8, !tbaa !9
  %559 = load i64, ptr %72, align 8, !tbaa !9
  %560 = sub nsw i64 %559, 1
  store i64 %560, ptr %70, align 8, !tbaa !9
  %561 = load ptr, ptr %19, align 8, !tbaa !5
  %562 = load i64, ptr %561, align 8, !tbaa !9
  store i64 %562, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %563

563:                                              ; preds = %612, %540
  %564 = load i64, ptr %61, align 8, !tbaa !9
  %565 = load i64, ptr %32, align 8, !tbaa !9
  %566 = icmp sle i64 %564, %565
  br i1 %566, label %567, label %615

567:                                              ; preds = %563
  %568 = load ptr, ptr %18, align 8, !tbaa !5
  %569 = load i64, ptr %568, align 8, !tbaa !9
  store i64 %569, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %570

570:                                              ; preds = %608, %567
  %571 = load i64, ptr %68, align 8, !tbaa !9
  %572 = load i64, ptr %33, align 8, !tbaa !9
  %573 = icmp sle i64 %571, %572
  br i1 %573, label %574, label %611

574:                                              ; preds = %570
  %575 = load i64, ptr %71, align 8, !tbaa !9
  %576 = add nsw i64 %575, 1
  store i64 %576, ptr %71, align 8, !tbaa !9
  %577 = load i64, ptr %70, align 8, !tbaa !9
  %578 = add nsw i64 %577, 1
  store i64 %578, ptr %70, align 8, !tbaa !9
  %579 = load i64, ptr %68, align 8, !tbaa !9
  %580 = load i64, ptr %61, align 8, !tbaa !9
  %581 = load i64, ptr %30, align 8, !tbaa !9
  %582 = mul nsw i64 %580, %581
  %583 = add nsw i64 %579, %582
  store i64 %583, ptr %34, align 8, !tbaa !9
  %584 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %584, ptr %35, align 8, !tbaa !9
  %585 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %585, ptr %36, align 8, !tbaa !9
  %586 = load ptr, ptr %27, align 8, !tbaa !5
  %587 = load i64, ptr %35, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  %589 = load double, ptr %588, align 8, !tbaa !11
  %590 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %589, ptr %590, align 8, !tbaa !18
  %591 = load ptr, ptr %27, align 8, !tbaa !5
  %592 = load i64, ptr %36, align 8, !tbaa !9
  %593 = getelementptr inbounds double, ptr %591, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !11
  %595 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %594, ptr %595, align 8, !tbaa !24
  %596 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %597 = load double, ptr %596, align 8, !tbaa !18
  %598 = load ptr, ptr %22, align 8, !tbaa !5
  %599 = load i64, ptr %34, align 8, !tbaa !9
  %600 = getelementptr inbounds %struct.doublecomplex, ptr %598, i64 %599
  %601 = getelementptr inbounds %struct.doublecomplex, ptr %600, i32 0, i32 0
  store double %597, ptr %601, align 8, !tbaa !18
  %602 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %603 = load double, ptr %602, align 8, !tbaa !24
  %604 = load ptr, ptr %22, align 8, !tbaa !5
  %605 = load i64, ptr %34, align 8, !tbaa !9
  %606 = getelementptr inbounds %struct.doublecomplex, ptr %604, i64 %605
  %607 = getelementptr inbounds %struct.doublecomplex, ptr %606, i32 0, i32 1
  store double %603, ptr %607, align 8, !tbaa !24
  br label %608

608:                                              ; preds = %574
  %609 = load i64, ptr %68, align 8, !tbaa !9
  %610 = add nsw i64 %609, 1
  store i64 %610, ptr %68, align 8, !tbaa !9
  br label %570, !llvm.loop !25

611:                                              ; preds = %570
  br label %612

612:                                              ; preds = %611
  %613 = load i64, ptr %61, align 8, !tbaa !9
  %614 = add nsw i64 %613, 1
  store i64 %614, ptr %61, align 8, !tbaa !9
  br label %563, !llvm.loop !26

615:                                              ; preds = %563
  %616 = load double, ptr %60, align 8, !tbaa !11
  %617 = load ptr, ptr %20, align 8, !tbaa !5
  %618 = load ptr, ptr %18, align 8, !tbaa !5
  %619 = load ptr, ptr %20, align 8, !tbaa !5
  %620 = getelementptr inbounds double, ptr %619, i64 1
  %621 = call i64 @f2c_idamax(ptr noundef %618, ptr noundef %620, ptr noundef @c__1)
  %622 = getelementptr inbounds double, ptr %617, i64 %621
  %623 = load double, ptr %622, align 8, !tbaa !11
  store double %623, ptr %38, align 8, !tbaa !11
  %624 = load double, ptr %38, align 8, !tbaa !11
  %625 = fcmp oge double %624, 0.000000e+00
  br i1 %625, label %626, label %628

626:                                              ; preds = %615
  %627 = load double, ptr %38, align 8, !tbaa !11
  br label %631

628:                                              ; preds = %615
  %629 = load double, ptr %38, align 8, !tbaa !11
  %630 = fneg double %629
  br label %631

631:                                              ; preds = %628, %626
  %632 = phi double [ %627, %626 ], [ %630, %628 ]
  %633 = fmul double %616, %632
  store double %633, ptr %57, align 8, !tbaa !11
  %634 = load ptr, ptr %18, align 8, !tbaa !5
  %635 = load i64, ptr %634, align 8, !tbaa !9
  store i64 %635, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %636

636:                                              ; preds = %673, %631
  %637 = load i64, ptr %41, align 8, !tbaa !9
  %638 = load i64, ptr %32, align 8, !tbaa !9
  %639 = icmp sle i64 %637, %638
  br i1 %639, label %640, label %676

640:                                              ; preds = %636
  %641 = load ptr, ptr %20, align 8, !tbaa !5
  %642 = load i64, ptr %41, align 8, !tbaa !9
  %643 = getelementptr inbounds double, ptr %641, i64 %642
  %644 = load double, ptr %643, align 8, !tbaa !11
  %645 = load double, ptr %57, align 8, !tbaa !11
  %646 = fcmp ole double %644, %645
  br i1 %646, label %647, label %656

647:                                              ; preds = %640
  %648 = load ptr, ptr %19, align 8, !tbaa !5
  %649 = load ptr, ptr %22, align 8, !tbaa !5
  %650 = load i64, ptr %41, align 8, !tbaa !9
  %651 = load i64, ptr %30, align 8, !tbaa !9
  %652 = add nsw i64 %650, %651
  %653 = getelementptr inbounds %struct.doublecomplex, ptr %649, i64 %652
  %654 = load ptr, ptr %23, align 8, !tbaa !5
  %655 = call i32 @zlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %648, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %653, ptr noundef %654)
  br label %672

656:                                              ; preds = %640
  %657 = load ptr, ptr %20, align 8, !tbaa !5
  %658 = load i64, ptr %41, align 8, !tbaa !9
  %659 = getelementptr inbounds double, ptr %657, i64 %658
  %660 = load ptr, ptr %19, align 8, !tbaa !5
  %661 = load ptr, ptr %22, align 8, !tbaa !5
  %662 = load i64, ptr %41, align 8, !tbaa !9
  %663 = load i64, ptr %30, align 8, !tbaa !9
  %664 = add nsw i64 %662, %663
  %665 = getelementptr inbounds %struct.doublecomplex, ptr %661, i64 %664
  %666 = load ptr, ptr %23, align 8, !tbaa !5
  %667 = load ptr, ptr %29, align 8, !tbaa !5
  %668 = call i32 @zlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %659, ptr noundef @c_b10, ptr noundef @c__1, ptr noundef %660, ptr noundef %665, ptr noundef %666, ptr noundef %667)
  %669 = load ptr, ptr %25, align 8, !tbaa !5
  %670 = load i64, ptr %669, align 8, !tbaa !9
  %671 = add nsw i64 %670, 1
  store i64 %671, ptr %669, align 8, !tbaa !9
  br label %672

672:                                              ; preds = %656, %647
  br label %673

673:                                              ; preds = %672
  %674 = load i64, ptr %41, align 8, !tbaa !9
  %675 = add nsw i64 %674, 1
  store i64 %675, ptr %41, align 8, !tbaa !9
  br label %636, !llvm.loop !27

676:                                              ; preds = %636
  %677 = load i64, ptr %62, align 8, !tbaa !9
  %678 = sub nsw i64 %677, 1
  store i64 %678, ptr %42, align 8, !tbaa !9
  %679 = load ptr, ptr %19, align 8, !tbaa !5
  %680 = load i64, ptr %679, align 8, !tbaa !9
  store i64 %680, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %681

681:                                              ; preds = %712, %676
  %682 = load i64, ptr %61, align 8, !tbaa !9
  %683 = load i64, ptr %32, align 8, !tbaa !9
  %684 = icmp sle i64 %682, %683
  br i1 %684, label %685, label %715

685:                                              ; preds = %681
  %686 = load ptr, ptr %18, align 8, !tbaa !5
  %687 = load i64, ptr %686, align 8, !tbaa !9
  store i64 %687, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %688

688:                                              ; preds = %708, %685
  %689 = load i64, ptr %68, align 8, !tbaa !9
  %690 = load i64, ptr %33, align 8, !tbaa !9
  %691 = icmp sle i64 %689, %690
  br i1 %691, label %692, label %711

692:                                              ; preds = %688
  %693 = load i64, ptr %42, align 8, !tbaa !9
  %694 = add nsw i64 %693, 1
  store i64 %694, ptr %42, align 8, !tbaa !9
  %695 = load i64, ptr %68, align 8, !tbaa !9
  %696 = load i64, ptr %61, align 8, !tbaa !9
  %697 = load i64, ptr %30, align 8, !tbaa !9
  %698 = mul nsw i64 %696, %697
  %699 = add nsw i64 %695, %698
  store i64 %699, ptr %34, align 8, !tbaa !9
  %700 = load ptr, ptr %22, align 8, !tbaa !5
  %701 = load i64, ptr %34, align 8, !tbaa !9
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %700, i64 %701
  %703 = getelementptr inbounds %struct.doublecomplex, ptr %702, i32 0, i32 0
  %704 = load double, ptr %703, align 8, !tbaa !18
  %705 = load ptr, ptr %27, align 8, !tbaa !5
  %706 = load i64, ptr %42, align 8, !tbaa !9
  %707 = getelementptr inbounds double, ptr %705, i64 %706
  store double %704, ptr %707, align 8, !tbaa !11
  br label %708

708:                                              ; preds = %692
  %709 = load i64, ptr %68, align 8, !tbaa !9
  %710 = add nsw i64 %709, 1
  store i64 %710, ptr %68, align 8, !tbaa !9
  br label %688, !llvm.loop !28

711:                                              ; preds = %688
  br label %712

712:                                              ; preds = %711
  %713 = load i64, ptr %61, align 8, !tbaa !9
  %714 = add nsw i64 %713, 1
  store i64 %714, ptr %61, align 8, !tbaa !9
  br label %681, !llvm.loop !29

715:                                              ; preds = %681
  %716 = load ptr, ptr %18, align 8, !tbaa !5
  %717 = load ptr, ptr %19, align 8, !tbaa !5
  %718 = load ptr, ptr %18, align 8, !tbaa !5
  %719 = load ptr, ptr %27, align 8, !tbaa !5
  %720 = load i64, ptr %77, align 8, !tbaa !9
  %721 = getelementptr inbounds double, ptr %719, i64 %720
  %722 = load ptr, ptr %18, align 8, !tbaa !5
  %723 = load ptr, ptr %27, align 8, !tbaa !5
  %724 = load i64, ptr %62, align 8, !tbaa !9
  %725 = getelementptr inbounds double, ptr %723, i64 %724
  %726 = load ptr, ptr %18, align 8, !tbaa !5
  %727 = load ptr, ptr %27, align 8, !tbaa !5
  %728 = load i64, ptr %75, align 8, !tbaa !9
  %729 = getelementptr inbounds double, ptr %727, i64 %728
  %730 = load ptr, ptr %18, align 8, !tbaa !5
  %731 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %716, ptr noundef %717, ptr noundef %718, ptr noundef @c_b10, ptr noundef %721, ptr noundef %722, ptr noundef %725, ptr noundef %726, ptr noundef @c_b35, ptr noundef %729, ptr noundef %730)
  %732 = load i64, ptr %62, align 8, !tbaa !9
  %733 = sub nsw i64 %732, 1
  store i64 %733, ptr %42, align 8, !tbaa !9
  %734 = load ptr, ptr %19, align 8, !tbaa !5
  %735 = load i64, ptr %734, align 8, !tbaa !9
  store i64 %735, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %736

736:                                              ; preds = %765, %715
  %737 = load i64, ptr %61, align 8, !tbaa !9
  %738 = load i64, ptr %32, align 8, !tbaa !9
  %739 = icmp sle i64 %737, %738
  br i1 %739, label %740, label %768

740:                                              ; preds = %736
  %741 = load ptr, ptr %18, align 8, !tbaa !5
  %742 = load i64, ptr %741, align 8, !tbaa !9
  store i64 %742, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %743

743:                                              ; preds = %761, %740
  %744 = load i64, ptr %68, align 8, !tbaa !9
  %745 = load i64, ptr %33, align 8, !tbaa !9
  %746 = icmp sle i64 %744, %745
  br i1 %746, label %747, label %764

747:                                              ; preds = %743
  %748 = load i64, ptr %42, align 8, !tbaa !9
  %749 = add nsw i64 %748, 1
  store i64 %749, ptr %42, align 8, !tbaa !9
  %750 = load ptr, ptr %22, align 8, !tbaa !5
  %751 = load i64, ptr %68, align 8, !tbaa !9
  %752 = load i64, ptr %61, align 8, !tbaa !9
  %753 = load i64, ptr %30, align 8, !tbaa !9
  %754 = mul nsw i64 %752, %753
  %755 = add nsw i64 %751, %754
  %756 = getelementptr inbounds %struct.doublecomplex, ptr %750, i64 %755
  %757 = call double @d_imag(ptr noundef %756)
  %758 = load ptr, ptr %27, align 8, !tbaa !5
  %759 = load i64, ptr %42, align 8, !tbaa !9
  %760 = getelementptr inbounds double, ptr %758, i64 %759
  store double %757, ptr %760, align 8, !tbaa !11
  br label %761

761:                                              ; preds = %747
  %762 = load i64, ptr %68, align 8, !tbaa !9
  %763 = add nsw i64 %762, 1
  store i64 %763, ptr %68, align 8, !tbaa !9
  br label %743, !llvm.loop !30

764:                                              ; preds = %743
  br label %765

765:                                              ; preds = %764
  %766 = load i64, ptr %61, align 8, !tbaa !9
  %767 = add nsw i64 %766, 1
  store i64 %767, ptr %61, align 8, !tbaa !9
  br label %736, !llvm.loop !31

768:                                              ; preds = %736
  %769 = load ptr, ptr %18, align 8, !tbaa !5
  %770 = load ptr, ptr %19, align 8, !tbaa !5
  %771 = load ptr, ptr %18, align 8, !tbaa !5
  %772 = load ptr, ptr %27, align 8, !tbaa !5
  %773 = load i64, ptr %77, align 8, !tbaa !9
  %774 = getelementptr inbounds double, ptr %772, i64 %773
  %775 = load ptr, ptr %18, align 8, !tbaa !5
  %776 = load ptr, ptr %27, align 8, !tbaa !5
  %777 = load i64, ptr %62, align 8, !tbaa !9
  %778 = getelementptr inbounds double, ptr %776, i64 %777
  %779 = load ptr, ptr %18, align 8, !tbaa !5
  %780 = load ptr, ptr %27, align 8, !tbaa !5
  %781 = load i64, ptr %72, align 8, !tbaa !9
  %782 = getelementptr inbounds double, ptr %780, i64 %781
  %783 = load ptr, ptr %18, align 8, !tbaa !5
  %784 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %769, ptr noundef %770, ptr noundef %771, ptr noundef @c_b10, ptr noundef %774, ptr noundef %775, ptr noundef %778, ptr noundef %779, ptr noundef @c_b35, ptr noundef %782, ptr noundef %783)
  %785 = load i64, ptr %75, align 8, !tbaa !9
  %786 = sub nsw i64 %785, 1
  store i64 %786, ptr %71, align 8, !tbaa !9
  %787 = load i64, ptr %72, align 8, !tbaa !9
  %788 = sub nsw i64 %787, 1
  store i64 %788, ptr %70, align 8, !tbaa !9
  %789 = load ptr, ptr %19, align 8, !tbaa !5
  %790 = load i64, ptr %789, align 8, !tbaa !9
  store i64 %790, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %791

791:                                              ; preds = %840, %768
  %792 = load i64, ptr %61, align 8, !tbaa !9
  %793 = load i64, ptr %32, align 8, !tbaa !9
  %794 = icmp sle i64 %792, %793
  br i1 %794, label %795, label %843

795:                                              ; preds = %791
  %796 = load ptr, ptr %18, align 8, !tbaa !5
  %797 = load i64, ptr %796, align 8, !tbaa !9
  store i64 %797, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %798

798:                                              ; preds = %836, %795
  %799 = load i64, ptr %68, align 8, !tbaa !9
  %800 = load i64, ptr %33, align 8, !tbaa !9
  %801 = icmp sle i64 %799, %800
  br i1 %801, label %802, label %839

802:                                              ; preds = %798
  %803 = load i64, ptr %71, align 8, !tbaa !9
  %804 = add nsw i64 %803, 1
  store i64 %804, ptr %71, align 8, !tbaa !9
  %805 = load i64, ptr %70, align 8, !tbaa !9
  %806 = add nsw i64 %805, 1
  store i64 %806, ptr %70, align 8, !tbaa !9
  %807 = load i64, ptr %68, align 8, !tbaa !9
  %808 = load i64, ptr %61, align 8, !tbaa !9
  %809 = load i64, ptr %30, align 8, !tbaa !9
  %810 = mul nsw i64 %808, %809
  %811 = add nsw i64 %807, %810
  store i64 %811, ptr %34, align 8, !tbaa !9
  %812 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %812, ptr %35, align 8, !tbaa !9
  %813 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %813, ptr %36, align 8, !tbaa !9
  %814 = load ptr, ptr %27, align 8, !tbaa !5
  %815 = load i64, ptr %35, align 8, !tbaa !9
  %816 = getelementptr inbounds double, ptr %814, i64 %815
  %817 = load double, ptr %816, align 8, !tbaa !11
  %818 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %817, ptr %818, align 8, !tbaa !18
  %819 = load ptr, ptr %27, align 8, !tbaa !5
  %820 = load i64, ptr %36, align 8, !tbaa !9
  %821 = getelementptr inbounds double, ptr %819, i64 %820
  %822 = load double, ptr %821, align 8, !tbaa !11
  %823 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %822, ptr %823, align 8, !tbaa !24
  %824 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %825 = load double, ptr %824, align 8, !tbaa !18
  %826 = load ptr, ptr %22, align 8, !tbaa !5
  %827 = load i64, ptr %34, align 8, !tbaa !9
  %828 = getelementptr inbounds %struct.doublecomplex, ptr %826, i64 %827
  %829 = getelementptr inbounds %struct.doublecomplex, ptr %828, i32 0, i32 0
  store double %825, ptr %829, align 8, !tbaa !18
  %830 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %831 = load double, ptr %830, align 8, !tbaa !24
  %832 = load ptr, ptr %22, align 8, !tbaa !5
  %833 = load i64, ptr %34, align 8, !tbaa !9
  %834 = getelementptr inbounds %struct.doublecomplex, ptr %832, i64 %833
  %835 = getelementptr inbounds %struct.doublecomplex, ptr %834, i32 0, i32 1
  store double %831, ptr %835, align 8, !tbaa !24
  br label %836

836:                                              ; preds = %802
  %837 = load i64, ptr %68, align 8, !tbaa !9
  %838 = add nsw i64 %837, 1
  store i64 %838, ptr %68, align 8, !tbaa !9
  br label %798, !llvm.loop !32

839:                                              ; preds = %798
  br label %840

840:                                              ; preds = %839
  %841 = load i64, ptr %61, align 8, !tbaa !9
  %842 = add nsw i64 %841, 1
  store i64 %842, ptr %61, align 8, !tbaa !9
  br label %791, !llvm.loop !33

843:                                              ; preds = %791
  %844 = load ptr, ptr %18, align 8, !tbaa !5
  %845 = load ptr, ptr %20, align 8, !tbaa !5
  %846 = getelementptr inbounds double, ptr %845, i64 1
  %847 = load ptr, ptr %18, align 8, !tbaa !5
  %848 = load ptr, ptr %29, align 8, !tbaa !5
  %849 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b10, ptr noundef %81, ptr noundef %844, ptr noundef @c__1, ptr noundef %846, ptr noundef %847, ptr noundef %848)
  %850 = load ptr, ptr %18, align 8, !tbaa !5
  %851 = load ptr, ptr %20, align 8, !tbaa !5
  %852 = getelementptr inbounds double, ptr %851, i64 1
  %853 = load ptr, ptr %29, align 8, !tbaa !5
  %854 = call i32 @dlasrt_(ptr noundef @.str.8, ptr noundef %850, ptr noundef %852, ptr noundef %853)
  %855 = load ptr, ptr %18, align 8, !tbaa !5
  %856 = load ptr, ptr %19, align 8, !tbaa !5
  %857 = load ptr, ptr %22, align 8, !tbaa !5
  %858 = load i64, ptr %31, align 8, !tbaa !9
  %859 = getelementptr inbounds %struct.doublecomplex, ptr %857, i64 %858
  %860 = load ptr, ptr %23, align 8, !tbaa !5
  %861 = load ptr, ptr %29, align 8, !tbaa !5
  %862 = call i32 @zlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %81, ptr noundef @c_b10, ptr noundef %855, ptr noundef %856, ptr noundef %859, ptr noundef %860, ptr noundef %861)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

863:                                              ; preds = %361
  %864 = load ptr, ptr %18, align 8, !tbaa !5
  %865 = load i64, ptr %864, align 8, !tbaa !9
  %866 = sitofp i64 %865 to double
  %867 = load ptr, ptr %17, align 8, !tbaa !5
  %868 = load i64, ptr %867, align 8, !tbaa !9
  %869 = add nsw i64 %868, 1
  %870 = sitofp i64 %869 to double
  %871 = fdiv double %866, %870
  %872 = call double @log(double noundef %871) #4
  %873 = call double @log(double noundef 2.000000e+00) #4
  %874 = fdiv double %872, %873
  %875 = fptosi double %874 to i64
  %876 = add nsw i64 %875, 1
  store i64 %876, ptr %65, align 8, !tbaa !9
  %877 = load ptr, ptr %17, align 8, !tbaa !5
  %878 = load i64, ptr %877, align 8, !tbaa !9
  %879 = add nsw i64 %878, 1
  store i64 %879, ptr %86, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  %880 = load ptr, ptr %17, align 8, !tbaa !5
  %881 = load i64, ptr %880, align 8, !tbaa !9
  %882 = load ptr, ptr %18, align 8, !tbaa !5
  %883 = load i64, ptr %882, align 8, !tbaa !9
  %884 = mul nsw i64 %881, %883
  %885 = add nsw i64 %884, 1
  store i64 %885, ptr %52, align 8, !tbaa !9
  %886 = load i64, ptr %52, align 8, !tbaa !9
  %887 = load i64, ptr %86, align 8, !tbaa !9
  %888 = load ptr, ptr %18, align 8, !tbaa !5
  %889 = load i64, ptr %888, align 8, !tbaa !9
  %890 = mul nsw i64 %887, %889
  %891 = add nsw i64 %886, %890
  store i64 %891, ptr %58, align 8, !tbaa !9
  %892 = load i64, ptr %58, align 8, !tbaa !9
  %893 = load i64, ptr %65, align 8, !tbaa !9
  %894 = load ptr, ptr %18, align 8, !tbaa !5
  %895 = load i64, ptr %894, align 8, !tbaa !9
  %896 = mul nsw i64 %893, %895
  %897 = add nsw i64 %892, %896
  store i64 %897, ptr %59, align 8, !tbaa !9
  %898 = load i64, ptr %59, align 8, !tbaa !9
  %899 = load i64, ptr %65, align 8, !tbaa !9
  %900 = load ptr, ptr %18, align 8, !tbaa !5
  %901 = load i64, ptr %900, align 8, !tbaa !9
  %902 = mul nsw i64 %899, %901
  %903 = shl i64 %902, 1
  %904 = add nsw i64 %898, %903
  store i64 %904, ptr %47, align 8, !tbaa !9
  %905 = load i64, ptr %47, align 8, !tbaa !9
  %906 = load i64, ptr %65, align 8, !tbaa !9
  %907 = load ptr, ptr %18, align 8, !tbaa !5
  %908 = load i64, ptr %907, align 8, !tbaa !9
  %909 = mul nsw i64 %906, %908
  %910 = add nsw i64 %905, %909
  store i64 %910, ptr %40, align 8, !tbaa !9
  %911 = load i64, ptr %40, align 8, !tbaa !9
  %912 = load ptr, ptr %18, align 8, !tbaa !5
  %913 = load i64, ptr %912, align 8, !tbaa !9
  %914 = add nsw i64 %911, %913
  store i64 %914, ptr %45, align 8, !tbaa !9
  %915 = load i64, ptr %45, align 8, !tbaa !9
  %916 = load ptr, ptr %18, align 8, !tbaa !5
  %917 = load i64, ptr %916, align 8, !tbaa !9
  %918 = add nsw i64 %915, %917
  store i64 %918, ptr %73, align 8, !tbaa !9
  %919 = load i64, ptr %73, align 8, !tbaa !9
  %920 = load i64, ptr %65, align 8, !tbaa !9
  %921 = shl i64 %920, 1
  %922 = load ptr, ptr %18, align 8, !tbaa !5
  %923 = load i64, ptr %922, align 8, !tbaa !9
  %924 = mul nsw i64 %921, %923
  %925 = add nsw i64 %919, %924
  store i64 %925, ptr %82, align 8, !tbaa !9
  %926 = load i64, ptr %82, align 8, !tbaa !9
  %927 = load i64, ptr %65, align 8, !tbaa !9
  %928 = shl i64 %927, 1
  %929 = load ptr, ptr %18, align 8, !tbaa !5
  %930 = load i64, ptr %929, align 8, !tbaa !9
  %931 = mul nsw i64 %928, %930
  %932 = add nsw i64 %926, %931
  store i64 %932, ptr %84, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  %933 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %933, ptr %75, align 8, !tbaa !9
  %934 = load i64, ptr %75, align 8, !tbaa !9
  %935 = load ptr, ptr %17, align 8, !tbaa !5
  %936 = load i64, ptr %935, align 8, !tbaa !9
  %937 = load ptr, ptr %19, align 8, !tbaa !5
  %938 = load i64, ptr %937, align 8, !tbaa !9
  %939 = mul nsw i64 %936, %938
  %940 = add nsw i64 %934, %939
  store i64 %940, ptr %72, align 8, !tbaa !9
  %941 = load i64, ptr %72, align 8, !tbaa !9
  %942 = load ptr, ptr %17, align 8, !tbaa !5
  %943 = load i64, ptr %942, align 8, !tbaa !9
  %944 = load ptr, ptr %19, align 8, !tbaa !5
  %945 = load i64, ptr %944, align 8, !tbaa !9
  %946 = mul nsw i64 %943, %945
  %947 = add nsw i64 %941, %946
  store i64 %947, ptr %62, align 8, !tbaa !9
  %948 = load ptr, ptr %18, align 8, !tbaa !5
  %949 = load i64, ptr %948, align 8, !tbaa !9
  %950 = add nsw i64 %949, 1
  store i64 %950, ptr %74, align 8, !tbaa !9
  %951 = load i64, ptr %74, align 8, !tbaa !9
  %952 = load ptr, ptr %18, align 8, !tbaa !5
  %953 = load i64, ptr %952, align 8, !tbaa !9
  %954 = add nsw i64 %951, %953
  store i64 %954, ptr %43, align 8, !tbaa !9
  %955 = load i64, ptr %43, align 8, !tbaa !9
  %956 = load ptr, ptr %18, align 8, !tbaa !5
  %957 = load i64, ptr %956, align 8, !tbaa !9
  %958 = add nsw i64 %955, %957
  store i64 %958, ptr %83, align 8, !tbaa !9
  %959 = load i64, ptr %83, align 8, !tbaa !9
  %960 = load ptr, ptr %18, align 8, !tbaa !5
  %961 = load i64, ptr %960, align 8, !tbaa !9
  %962 = add nsw i64 %959, %961
  store i64 %962, ptr %63, align 8, !tbaa !9
  %963 = load i64, ptr %63, align 8, !tbaa !9
  %964 = load i64, ptr %65, align 8, !tbaa !9
  %965 = load ptr, ptr %18, align 8, !tbaa !5
  %966 = load i64, ptr %965, align 8, !tbaa !9
  %967 = mul nsw i64 %964, %966
  %968 = add nsw i64 %963, %967
  store i64 %968, ptr %80, align 8, !tbaa !9
  %969 = load i64, ptr %80, align 8, !tbaa !9
  %970 = load i64, ptr %65, align 8, !tbaa !9
  %971 = load ptr, ptr %18, align 8, !tbaa !5
  %972 = load i64, ptr %971, align 8, !tbaa !9
  %973 = mul nsw i64 %970, %972
  %974 = shl i64 %973, 1
  %975 = add nsw i64 %969, %974
  store i64 %975, ptr %56, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  store i64 0, ptr %66, align 8, !tbaa !9
  store i64 1, ptr %78, align 8, !tbaa !9
  store i64 0, ptr %79, align 8, !tbaa !9
  store i64 0, ptr %64, align 8, !tbaa !9
  %976 = load ptr, ptr %18, align 8, !tbaa !5
  %977 = load i64, ptr %976, align 8, !tbaa !9
  store i64 %977, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %978

978:                                              ; preds = %1007, %863
  %979 = load i64, ptr %41, align 8, !tbaa !9
  %980 = load i64, ptr %32, align 8, !tbaa !9
  %981 = icmp sle i64 %979, %980
  br i1 %981, label %982, label %1010

982:                                              ; preds = %978
  %983 = load ptr, ptr %20, align 8, !tbaa !5
  %984 = load i64, ptr %41, align 8, !tbaa !9
  %985 = getelementptr inbounds double, ptr %983, i64 %984
  %986 = load double, ptr %985, align 8, !tbaa !11
  store double %986, ptr %38, align 8, !tbaa !11
  %987 = load double, ptr %38, align 8, !tbaa !11
  %988 = fcmp oge double %987, 0.000000e+00
  br i1 %988, label %989, label %991

989:                                              ; preds = %982
  %990 = load double, ptr %38, align 8, !tbaa !11
  br label %994

991:                                              ; preds = %982
  %992 = load double, ptr %38, align 8, !tbaa !11
  %993 = fneg double %992
  br label %994

994:                                              ; preds = %991, %989
  %995 = phi double [ %990, %989 ], [ %993, %991 ]
  %996 = load double, ptr %55, align 8, !tbaa !11
  %997 = fcmp olt double %995, %996
  br i1 %997, label %998, label %1006

998:                                              ; preds = %994
  %999 = load ptr, ptr %20, align 8, !tbaa !5
  %1000 = load i64, ptr %41, align 8, !tbaa !9
  %1001 = getelementptr inbounds double, ptr %999, i64 %1000
  %1002 = call double @d_sign(ptr noundef %55, ptr noundef %1001)
  %1003 = load ptr, ptr %20, align 8, !tbaa !5
  %1004 = load i64, ptr %41, align 8, !tbaa !9
  %1005 = getelementptr inbounds double, ptr %1003, i64 %1004
  store double %1002, ptr %1005, align 8, !tbaa !11
  br label %1006

1006:                                             ; preds = %998, %994
  br label %1007

1007:                                             ; preds = %1006
  %1008 = load i64, ptr %41, align 8, !tbaa !9
  %1009 = add nsw i64 %1008, 1
  store i64 %1009, ptr %41, align 8, !tbaa !9
  br label %978, !llvm.loop !34

1010:                                             ; preds = %978
  %1011 = load i64, ptr %53, align 8, !tbaa !9
  store i64 %1011, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1012

1012:                                             ; preds = %1573, %1010
  %1013 = load i64, ptr %41, align 8, !tbaa !9
  %1014 = load i64, ptr %32, align 8, !tbaa !9
  %1015 = icmp sle i64 %1013, %1014
  br i1 %1015, label %1016, label %1576

1016:                                             ; preds = %1012
  %1017 = load ptr, ptr %21, align 8, !tbaa !5
  %1018 = load i64, ptr %41, align 8, !tbaa !9
  %1019 = getelementptr inbounds double, ptr %1017, i64 %1018
  %1020 = load double, ptr %1019, align 8, !tbaa !11
  store double %1020, ptr %38, align 8, !tbaa !11
  %1021 = load double, ptr %38, align 8, !tbaa !11
  %1022 = fcmp oge double %1021, 0.000000e+00
  br i1 %1022, label %1023, label %1025

1023:                                             ; preds = %1016
  %1024 = load double, ptr %38, align 8, !tbaa !11
  br label %1028

1025:                                             ; preds = %1016
  %1026 = load double, ptr %38, align 8, !tbaa !11
  %1027 = fneg double %1026
  br label %1028

1028:                                             ; preds = %1025, %1023
  %1029 = phi double [ %1024, %1023 ], [ %1027, %1025 ]
  %1030 = load double, ptr %55, align 8, !tbaa !11
  %1031 = fcmp olt double %1029, %1030
  br i1 %1031, label %1036, label %1032

1032:                                             ; preds = %1028
  %1033 = load i64, ptr %41, align 8, !tbaa !9
  %1034 = load i64, ptr %53, align 8, !tbaa !9
  %1035 = icmp eq i64 %1033, %1034
  br i1 %1035, label %1036, label %1572

1036:                                             ; preds = %1032, %1028
  %1037 = load i64, ptr %64, align 8, !tbaa !9
  %1038 = add nsw i64 %1037, 1
  store i64 %1038, ptr %64, align 8, !tbaa !9
  %1039 = load i64, ptr %51, align 8, !tbaa !9
  %1040 = load ptr, ptr %28, align 8, !tbaa !5
  %1041 = load i64, ptr %64, align 8, !tbaa !9
  %1042 = getelementptr inbounds i64, ptr %1040, i64 %1041
  store i64 %1039, ptr %1042, align 8, !tbaa !9
  %1043 = load i64, ptr %41, align 8, !tbaa !9
  %1044 = load i64, ptr %53, align 8, !tbaa !9
  %1045 = icmp slt i64 %1043, %1044
  br i1 %1045, label %1046, label %1058

1046:                                             ; preds = %1036
  %1047 = load i64, ptr %41, align 8, !tbaa !9
  %1048 = load i64, ptr %51, align 8, !tbaa !9
  %1049 = sub nsw i64 %1047, %1048
  %1050 = add nsw i64 %1049, 1
  store i64 %1050, ptr %76, align 8, !tbaa !9
  %1051 = load i64, ptr %76, align 8, !tbaa !9
  %1052 = load ptr, ptr %28, align 8, !tbaa !5
  %1053 = load i64, ptr %74, align 8, !tbaa !9
  %1054 = load i64, ptr %64, align 8, !tbaa !9
  %1055 = add nsw i64 %1053, %1054
  %1056 = sub nsw i64 %1055, 1
  %1057 = getelementptr inbounds i64, ptr %1052, i64 %1056
  store i64 %1051, ptr %1057, align 8, !tbaa !9
  br label %1128

1058:                                             ; preds = %1036
  %1059 = load ptr, ptr %21, align 8, !tbaa !5
  %1060 = load i64, ptr %41, align 8, !tbaa !9
  %1061 = getelementptr inbounds double, ptr %1059, i64 %1060
  %1062 = load double, ptr %1061, align 8, !tbaa !11
  store double %1062, ptr %38, align 8, !tbaa !11
  %1063 = load double, ptr %38, align 8, !tbaa !11
  %1064 = fcmp oge double %1063, 0.000000e+00
  br i1 %1064, label %1065, label %1067

1065:                                             ; preds = %1058
  %1066 = load double, ptr %38, align 8, !tbaa !11
  br label %1070

1067:                                             ; preds = %1058
  %1068 = load double, ptr %38, align 8, !tbaa !11
  %1069 = fneg double %1068
  br label %1070

1070:                                             ; preds = %1067, %1065
  %1071 = phi double [ %1066, %1065 ], [ %1069, %1067 ]
  %1072 = load double, ptr %55, align 8, !tbaa !11
  %1073 = fcmp oge double %1071, %1072
  br i1 %1073, label %1074, label %1087

1074:                                             ; preds = %1070
  %1075 = load ptr, ptr %18, align 8, !tbaa !5
  %1076 = load i64, ptr %1075, align 8, !tbaa !9
  %1077 = load i64, ptr %51, align 8, !tbaa !9
  %1078 = sub nsw i64 %1076, %1077
  %1079 = add nsw i64 %1078, 1
  store i64 %1079, ptr %76, align 8, !tbaa !9
  %1080 = load i64, ptr %76, align 8, !tbaa !9
  %1081 = load ptr, ptr %28, align 8, !tbaa !5
  %1082 = load i64, ptr %74, align 8, !tbaa !9
  %1083 = load i64, ptr %64, align 8, !tbaa !9
  %1084 = add nsw i64 %1082, %1083
  %1085 = sub nsw i64 %1084, 1
  %1086 = getelementptr inbounds i64, ptr %1081, i64 %1085
  store i64 %1080, ptr %1086, align 8, !tbaa !9
  br label %1127

1087:                                             ; preds = %1070
  %1088 = load i64, ptr %41, align 8, !tbaa !9
  %1089 = load i64, ptr %51, align 8, !tbaa !9
  %1090 = sub nsw i64 %1088, %1089
  %1091 = add nsw i64 %1090, 1
  store i64 %1091, ptr %76, align 8, !tbaa !9
  %1092 = load i64, ptr %76, align 8, !tbaa !9
  %1093 = load ptr, ptr %28, align 8, !tbaa !5
  %1094 = load i64, ptr %74, align 8, !tbaa !9
  %1095 = load i64, ptr %64, align 8, !tbaa !9
  %1096 = add nsw i64 %1094, %1095
  %1097 = sub nsw i64 %1096, 1
  %1098 = getelementptr inbounds i64, ptr %1093, i64 %1097
  store i64 %1092, ptr %1098, align 8, !tbaa !9
  %1099 = load i64, ptr %64, align 8, !tbaa !9
  %1100 = add nsw i64 %1099, 1
  store i64 %1100, ptr %64, align 8, !tbaa !9
  %1101 = load ptr, ptr %18, align 8, !tbaa !5
  %1102 = load i64, ptr %1101, align 8, !tbaa !9
  %1103 = load ptr, ptr %28, align 8, !tbaa !5
  %1104 = load i64, ptr %64, align 8, !tbaa !9
  %1105 = getelementptr inbounds i64, ptr %1103, i64 %1104
  store i64 %1102, ptr %1105, align 8, !tbaa !9
  %1106 = load ptr, ptr %28, align 8, !tbaa !5
  %1107 = load i64, ptr %74, align 8, !tbaa !9
  %1108 = load i64, ptr %64, align 8, !tbaa !9
  %1109 = add nsw i64 %1107, %1108
  %1110 = sub nsw i64 %1109, 1
  %1111 = getelementptr inbounds i64, ptr %1106, i64 %1110
  store i64 1, ptr %1111, align 8, !tbaa !9
  %1112 = load ptr, ptr %19, align 8, !tbaa !5
  %1113 = load ptr, ptr %22, align 8, !tbaa !5
  %1114 = load ptr, ptr %18, align 8, !tbaa !5
  %1115 = load i64, ptr %1114, align 8, !tbaa !9
  %1116 = load i64, ptr %30, align 8, !tbaa !9
  %1117 = add nsw i64 %1115, %1116
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %1113, i64 %1117
  %1119 = load ptr, ptr %23, align 8, !tbaa !5
  %1120 = load ptr, ptr %26, align 8, !tbaa !5
  %1121 = load i64, ptr %49, align 8, !tbaa !9
  %1122 = load i64, ptr %53, align 8, !tbaa !9
  %1123 = add nsw i64 %1121, %1122
  %1124 = getelementptr inbounds %struct.doublecomplex, ptr %1120, i64 %1123
  %1125 = load ptr, ptr %18, align 8, !tbaa !5
  %1126 = call i32 @f2c_zcopy(ptr noundef %1112, ptr noundef %1118, ptr noundef %1119, ptr noundef %1124, ptr noundef %1125)
  br label %1127

1127:                                             ; preds = %1087, %1074
  br label %1128

1128:                                             ; preds = %1127, %1046
  %1129 = load i64, ptr %51, align 8, !tbaa !9
  %1130 = sub nsw i64 %1129, 1
  store i64 %1130, ptr %54, align 8, !tbaa !9
  %1131 = load i64, ptr %76, align 8, !tbaa !9
  %1132 = icmp eq i64 %1131, 1
  br i1 %1132, label %1133, label %1148

1133:                                             ; preds = %1128
  %1134 = load ptr, ptr %19, align 8, !tbaa !5
  %1135 = load ptr, ptr %22, align 8, !tbaa !5
  %1136 = load i64, ptr %51, align 8, !tbaa !9
  %1137 = load i64, ptr %30, align 8, !tbaa !9
  %1138 = add nsw i64 %1136, %1137
  %1139 = getelementptr inbounds %struct.doublecomplex, ptr %1135, i64 %1138
  %1140 = load ptr, ptr %23, align 8, !tbaa !5
  %1141 = load ptr, ptr %26, align 8, !tbaa !5
  %1142 = load i64, ptr %49, align 8, !tbaa !9
  %1143 = load i64, ptr %54, align 8, !tbaa !9
  %1144 = add nsw i64 %1142, %1143
  %1145 = getelementptr inbounds %struct.doublecomplex, ptr %1141, i64 %1144
  %1146 = load ptr, ptr %18, align 8, !tbaa !5
  %1147 = call i32 @f2c_zcopy(ptr noundef %1134, ptr noundef %1139, ptr noundef %1140, ptr noundef %1145, ptr noundef %1146)
  br label %1569

1148:                                             ; preds = %1128
  %1149 = load i64, ptr %76, align 8, !tbaa !9
  %1150 = load ptr, ptr %17, align 8, !tbaa !5
  %1151 = load i64, ptr %1150, align 8, !tbaa !9
  %1152 = icmp sle i64 %1149, %1151
  br i1 %1152, label %1153, label %1385

1153:                                             ; preds = %1148
  %1154 = load ptr, ptr %27, align 8, !tbaa !5
  %1155 = load i64, ptr %52, align 8, !tbaa !9
  %1156 = load i64, ptr %54, align 8, !tbaa !9
  %1157 = add nsw i64 %1155, %1156
  %1158 = getelementptr inbounds double, ptr %1154, i64 %1157
  %1159 = load ptr, ptr %18, align 8, !tbaa !5
  %1160 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %76, ptr noundef %76, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %1158, ptr noundef %1159)
  %1161 = load ptr, ptr %27, align 8, !tbaa !5
  %1162 = load i64, ptr %46, align 8, !tbaa !9
  %1163 = load i64, ptr %54, align 8, !tbaa !9
  %1164 = add nsw i64 %1162, %1163
  %1165 = getelementptr inbounds double, ptr %1161, i64 %1164
  %1166 = load ptr, ptr %18, align 8, !tbaa !5
  %1167 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %76, ptr noundef %76, ptr noundef @c_b35, ptr noundef @c_b10, ptr noundef %1165, ptr noundef %1166)
  %1168 = load ptr, ptr %20, align 8, !tbaa !5
  %1169 = load i64, ptr %51, align 8, !tbaa !9
  %1170 = getelementptr inbounds double, ptr %1168, i64 %1169
  %1171 = load ptr, ptr %21, align 8, !tbaa !5
  %1172 = load i64, ptr %51, align 8, !tbaa !9
  %1173 = getelementptr inbounds double, ptr %1171, i64 %1172
  %1174 = load ptr, ptr %27, align 8, !tbaa !5
  %1175 = load i64, ptr %52, align 8, !tbaa !9
  %1176 = load i64, ptr %54, align 8, !tbaa !9
  %1177 = add nsw i64 %1175, %1176
  %1178 = getelementptr inbounds double, ptr %1174, i64 %1177
  %1179 = load ptr, ptr %18, align 8, !tbaa !5
  %1180 = load ptr, ptr %27, align 8, !tbaa !5
  %1181 = load i64, ptr %46, align 8, !tbaa !9
  %1182 = load i64, ptr %54, align 8, !tbaa !9
  %1183 = add nsw i64 %1181, %1182
  %1184 = getelementptr inbounds double, ptr %1180, i64 %1183
  %1185 = load ptr, ptr %18, align 8, !tbaa !5
  %1186 = load ptr, ptr %27, align 8, !tbaa !5
  %1187 = load i64, ptr %84, align 8, !tbaa !9
  %1188 = getelementptr inbounds double, ptr %1186, i64 %1187
  %1189 = load ptr, ptr %27, align 8, !tbaa !5
  %1190 = load i64, ptr %84, align 8, !tbaa !9
  %1191 = getelementptr inbounds double, ptr %1189, i64 %1190
  %1192 = load ptr, ptr %29, align 8, !tbaa !5
  %1193 = call i32 @dlasdq_(ptr noundef @.str.5, ptr noundef @c__0, ptr noundef %76, ptr noundef %76, ptr noundef %76, ptr noundef @c__0, ptr noundef %1170, ptr noundef %1173, ptr noundef %1178, ptr noundef %1179, ptr noundef %1184, ptr noundef %1185, ptr noundef %1188, ptr noundef @c__1, ptr noundef %1191, ptr noundef %1192)
  %1194 = load ptr, ptr %29, align 8, !tbaa !5
  %1195 = load i64, ptr %1194, align 8, !tbaa !9
  %1196 = icmp ne i64 %1195, 0
  br i1 %1196, label %1197, label %1198

1197:                                             ; preds = %1153
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

1198:                                             ; preds = %1153
  %1199 = load i64, ptr %62, align 8, !tbaa !9
  %1200 = sub nsw i64 %1199, 1
  store i64 %1200, ptr %42, align 8, !tbaa !9
  %1201 = load ptr, ptr %19, align 8, !tbaa !5
  %1202 = load i64, ptr %1201, align 8, !tbaa !9
  store i64 %1202, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1203

1203:                                             ; preds = %1237, %1198
  %1204 = load i64, ptr %61, align 8, !tbaa !9
  %1205 = load i64, ptr %33, align 8, !tbaa !9
  %1206 = icmp sle i64 %1204, %1205
  br i1 %1206, label %1207, label %1240

1207:                                             ; preds = %1203
  %1208 = load i64, ptr %51, align 8, !tbaa !9
  %1209 = load i64, ptr %76, align 8, !tbaa !9
  %1210 = add nsw i64 %1208, %1209
  %1211 = sub nsw i64 %1210, 1
  store i64 %1211, ptr %34, align 8, !tbaa !9
  %1212 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1212, ptr %68, align 8, !tbaa !9
  br label %1213

1213:                                             ; preds = %1233, %1207
  %1214 = load i64, ptr %68, align 8, !tbaa !9
  %1215 = load i64, ptr %34, align 8, !tbaa !9
  %1216 = icmp sle i64 %1214, %1215
  br i1 %1216, label %1217, label %1236

1217:                                             ; preds = %1213
  %1218 = load i64, ptr %42, align 8, !tbaa !9
  %1219 = add nsw i64 %1218, 1
  store i64 %1219, ptr %42, align 8, !tbaa !9
  %1220 = load i64, ptr %68, align 8, !tbaa !9
  %1221 = load i64, ptr %61, align 8, !tbaa !9
  %1222 = load i64, ptr %30, align 8, !tbaa !9
  %1223 = mul nsw i64 %1221, %1222
  %1224 = add nsw i64 %1220, %1223
  store i64 %1224, ptr %35, align 8, !tbaa !9
  %1225 = load ptr, ptr %22, align 8, !tbaa !5
  %1226 = load i64, ptr %35, align 8, !tbaa !9
  %1227 = getelementptr inbounds %struct.doublecomplex, ptr %1225, i64 %1226
  %1228 = getelementptr inbounds %struct.doublecomplex, ptr %1227, i32 0, i32 0
  %1229 = load double, ptr %1228, align 8, !tbaa !18
  %1230 = load ptr, ptr %27, align 8, !tbaa !5
  %1231 = load i64, ptr %42, align 8, !tbaa !9
  %1232 = getelementptr inbounds double, ptr %1230, i64 %1231
  store double %1229, ptr %1232, align 8, !tbaa !11
  br label %1233

1233:                                             ; preds = %1217
  %1234 = load i64, ptr %68, align 8, !tbaa !9
  %1235 = add nsw i64 %1234, 1
  store i64 %1235, ptr %68, align 8, !tbaa !9
  br label %1213, !llvm.loop !35

1236:                                             ; preds = %1213
  br label %1237

1237:                                             ; preds = %1236
  %1238 = load i64, ptr %61, align 8, !tbaa !9
  %1239 = add nsw i64 %1238, 1
  store i64 %1239, ptr %61, align 8, !tbaa !9
  br label %1203, !llvm.loop !36

1240:                                             ; preds = %1203
  %1241 = load ptr, ptr %19, align 8, !tbaa !5
  %1242 = load ptr, ptr %27, align 8, !tbaa !5
  %1243 = load i64, ptr %46, align 8, !tbaa !9
  %1244 = load i64, ptr %54, align 8, !tbaa !9
  %1245 = add nsw i64 %1243, %1244
  %1246 = getelementptr inbounds double, ptr %1242, i64 %1245
  %1247 = load ptr, ptr %18, align 8, !tbaa !5
  %1248 = load ptr, ptr %27, align 8, !tbaa !5
  %1249 = load i64, ptr %62, align 8, !tbaa !9
  %1250 = getelementptr inbounds double, ptr %1248, i64 %1249
  %1251 = load ptr, ptr %27, align 8, !tbaa !5
  %1252 = load i64, ptr %75, align 8, !tbaa !9
  %1253 = getelementptr inbounds double, ptr %1251, i64 %1252
  %1254 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %76, ptr noundef %1241, ptr noundef %76, ptr noundef @c_b10, ptr noundef %1246, ptr noundef %1247, ptr noundef %1250, ptr noundef %76, ptr noundef @c_b35, ptr noundef %1253, ptr noundef %76)
  %1255 = load i64, ptr %62, align 8, !tbaa !9
  %1256 = sub nsw i64 %1255, 1
  store i64 %1256, ptr %42, align 8, !tbaa !9
  %1257 = load ptr, ptr %19, align 8, !tbaa !5
  %1258 = load i64, ptr %1257, align 8, !tbaa !9
  store i64 %1258, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1259

1259:                                             ; preds = %1291, %1240
  %1260 = load i64, ptr %61, align 8, !tbaa !9
  %1261 = load i64, ptr %33, align 8, !tbaa !9
  %1262 = icmp sle i64 %1260, %1261
  br i1 %1262, label %1263, label %1294

1263:                                             ; preds = %1259
  %1264 = load i64, ptr %51, align 8, !tbaa !9
  %1265 = load i64, ptr %76, align 8, !tbaa !9
  %1266 = add nsw i64 %1264, %1265
  %1267 = sub nsw i64 %1266, 1
  store i64 %1267, ptr %34, align 8, !tbaa !9
  %1268 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1268, ptr %68, align 8, !tbaa !9
  br label %1269

1269:                                             ; preds = %1287, %1263
  %1270 = load i64, ptr %68, align 8, !tbaa !9
  %1271 = load i64, ptr %34, align 8, !tbaa !9
  %1272 = icmp sle i64 %1270, %1271
  br i1 %1272, label %1273, label %1290

1273:                                             ; preds = %1269
  %1274 = load i64, ptr %42, align 8, !tbaa !9
  %1275 = add nsw i64 %1274, 1
  store i64 %1275, ptr %42, align 8, !tbaa !9
  %1276 = load ptr, ptr %22, align 8, !tbaa !5
  %1277 = load i64, ptr %68, align 8, !tbaa !9
  %1278 = load i64, ptr %61, align 8, !tbaa !9
  %1279 = load i64, ptr %30, align 8, !tbaa !9
  %1280 = mul nsw i64 %1278, %1279
  %1281 = add nsw i64 %1277, %1280
  %1282 = getelementptr inbounds %struct.doublecomplex, ptr %1276, i64 %1281
  %1283 = call double @d_imag(ptr noundef %1282)
  %1284 = load ptr, ptr %27, align 8, !tbaa !5
  %1285 = load i64, ptr %42, align 8, !tbaa !9
  %1286 = getelementptr inbounds double, ptr %1284, i64 %1285
  store double %1283, ptr %1286, align 8, !tbaa !11
  br label %1287

1287:                                             ; preds = %1273
  %1288 = load i64, ptr %68, align 8, !tbaa !9
  %1289 = add nsw i64 %1288, 1
  store i64 %1289, ptr %68, align 8, !tbaa !9
  br label %1269, !llvm.loop !37

1290:                                             ; preds = %1269
  br label %1291

1291:                                             ; preds = %1290
  %1292 = load i64, ptr %61, align 8, !tbaa !9
  %1293 = add nsw i64 %1292, 1
  store i64 %1293, ptr %61, align 8, !tbaa !9
  br label %1259, !llvm.loop !38

1294:                                             ; preds = %1259
  %1295 = load ptr, ptr %19, align 8, !tbaa !5
  %1296 = load ptr, ptr %27, align 8, !tbaa !5
  %1297 = load i64, ptr %46, align 8, !tbaa !9
  %1298 = load i64, ptr %54, align 8, !tbaa !9
  %1299 = add nsw i64 %1297, %1298
  %1300 = getelementptr inbounds double, ptr %1296, i64 %1299
  %1301 = load ptr, ptr %18, align 8, !tbaa !5
  %1302 = load ptr, ptr %27, align 8, !tbaa !5
  %1303 = load i64, ptr %62, align 8, !tbaa !9
  %1304 = getelementptr inbounds double, ptr %1302, i64 %1303
  %1305 = load ptr, ptr %27, align 8, !tbaa !5
  %1306 = load i64, ptr %72, align 8, !tbaa !9
  %1307 = getelementptr inbounds double, ptr %1305, i64 %1306
  %1308 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %76, ptr noundef %1295, ptr noundef %76, ptr noundef @c_b10, ptr noundef %1300, ptr noundef %1301, ptr noundef %1304, ptr noundef %76, ptr noundef @c_b35, ptr noundef %1307, ptr noundef %76)
  %1309 = load i64, ptr %75, align 8, !tbaa !9
  %1310 = sub nsw i64 %1309, 1
  store i64 %1310, ptr %71, align 8, !tbaa !9
  %1311 = load i64, ptr %72, align 8, !tbaa !9
  %1312 = sub nsw i64 %1311, 1
  store i64 %1312, ptr %70, align 8, !tbaa !9
  %1313 = load ptr, ptr %19, align 8, !tbaa !5
  %1314 = load i64, ptr %1313, align 8, !tbaa !9
  store i64 %1314, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1315

1315:                                             ; preds = %1367, %1294
  %1316 = load i64, ptr %61, align 8, !tbaa !9
  %1317 = load i64, ptr %33, align 8, !tbaa !9
  %1318 = icmp sle i64 %1316, %1317
  br i1 %1318, label %1319, label %1370

1319:                                             ; preds = %1315
  %1320 = load i64, ptr %51, align 8, !tbaa !9
  %1321 = load i64, ptr %76, align 8, !tbaa !9
  %1322 = add nsw i64 %1320, %1321
  %1323 = sub nsw i64 %1322, 1
  store i64 %1323, ptr %34, align 8, !tbaa !9
  %1324 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1324, ptr %68, align 8, !tbaa !9
  br label %1325

1325:                                             ; preds = %1363, %1319
  %1326 = load i64, ptr %68, align 8, !tbaa !9
  %1327 = load i64, ptr %34, align 8, !tbaa !9
  %1328 = icmp sle i64 %1326, %1327
  br i1 %1328, label %1329, label %1366

1329:                                             ; preds = %1325
  %1330 = load i64, ptr %71, align 8, !tbaa !9
  %1331 = add nsw i64 %1330, 1
  store i64 %1331, ptr %71, align 8, !tbaa !9
  %1332 = load i64, ptr %70, align 8, !tbaa !9
  %1333 = add nsw i64 %1332, 1
  store i64 %1333, ptr %70, align 8, !tbaa !9
  %1334 = load i64, ptr %68, align 8, !tbaa !9
  %1335 = load i64, ptr %61, align 8, !tbaa !9
  %1336 = load i64, ptr %30, align 8, !tbaa !9
  %1337 = mul nsw i64 %1335, %1336
  %1338 = add nsw i64 %1334, %1337
  store i64 %1338, ptr %35, align 8, !tbaa !9
  %1339 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %1339, ptr %36, align 8, !tbaa !9
  %1340 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %1340, ptr %37, align 8, !tbaa !9
  %1341 = load ptr, ptr %27, align 8, !tbaa !5
  %1342 = load i64, ptr %36, align 8, !tbaa !9
  %1343 = getelementptr inbounds double, ptr %1341, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %1344, ptr %1345, align 8, !tbaa !18
  %1346 = load ptr, ptr %27, align 8, !tbaa !5
  %1347 = load i64, ptr %37, align 8, !tbaa !9
  %1348 = getelementptr inbounds double, ptr %1346, i64 %1347
  %1349 = load double, ptr %1348, align 8, !tbaa !11
  %1350 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %1349, ptr %1350, align 8, !tbaa !24
  %1351 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1352 = load double, ptr %1351, align 8, !tbaa !18
  %1353 = load ptr, ptr %22, align 8, !tbaa !5
  %1354 = load i64, ptr %35, align 8, !tbaa !9
  %1355 = getelementptr inbounds %struct.doublecomplex, ptr %1353, i64 %1354
  %1356 = getelementptr inbounds %struct.doublecomplex, ptr %1355, i32 0, i32 0
  store double %1352, ptr %1356, align 8, !tbaa !18
  %1357 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %1358 = load double, ptr %1357, align 8, !tbaa !24
  %1359 = load ptr, ptr %22, align 8, !tbaa !5
  %1360 = load i64, ptr %35, align 8, !tbaa !9
  %1361 = getelementptr inbounds %struct.doublecomplex, ptr %1359, i64 %1360
  %1362 = getelementptr inbounds %struct.doublecomplex, ptr %1361, i32 0, i32 1
  store double %1358, ptr %1362, align 8, !tbaa !24
  br label %1363

1363:                                             ; preds = %1329
  %1364 = load i64, ptr %68, align 8, !tbaa !9
  %1365 = add nsw i64 %1364, 1
  store i64 %1365, ptr %68, align 8, !tbaa !9
  br label %1325, !llvm.loop !39

1366:                                             ; preds = %1325
  br label %1367

1367:                                             ; preds = %1366
  %1368 = load i64, ptr %61, align 8, !tbaa !9
  %1369 = add nsw i64 %1368, 1
  store i64 %1369, ptr %61, align 8, !tbaa !9
  br label %1315, !llvm.loop !40

1370:                                             ; preds = %1315
  %1371 = load ptr, ptr %19, align 8, !tbaa !5
  %1372 = load ptr, ptr %22, align 8, !tbaa !5
  %1373 = load i64, ptr %51, align 8, !tbaa !9
  %1374 = load i64, ptr %30, align 8, !tbaa !9
  %1375 = add nsw i64 %1373, %1374
  %1376 = getelementptr inbounds %struct.doublecomplex, ptr %1372, i64 %1375
  %1377 = load ptr, ptr %23, align 8, !tbaa !5
  %1378 = load ptr, ptr %26, align 8, !tbaa !5
  %1379 = load i64, ptr %49, align 8, !tbaa !9
  %1380 = load i64, ptr %54, align 8, !tbaa !9
  %1381 = add nsw i64 %1379, %1380
  %1382 = getelementptr inbounds %struct.doublecomplex, ptr %1378, i64 %1381
  %1383 = load ptr, ptr %18, align 8, !tbaa !5
  %1384 = call i32 @zlacpy_(ptr noundef @.str.2, ptr noundef %76, ptr noundef %1371, ptr noundef %1376, ptr noundef %1377, ptr noundef %1382, ptr noundef %1383)
  br label %1568

1385:                                             ; preds = %1148
  %1386 = load ptr, ptr %17, align 8, !tbaa !5
  %1387 = load ptr, ptr %20, align 8, !tbaa !5
  %1388 = load i64, ptr %51, align 8, !tbaa !9
  %1389 = getelementptr inbounds double, ptr %1387, i64 %1388
  %1390 = load ptr, ptr %21, align 8, !tbaa !5
  %1391 = load i64, ptr %51, align 8, !tbaa !9
  %1392 = getelementptr inbounds double, ptr %1390, i64 %1391
  %1393 = load ptr, ptr %27, align 8, !tbaa !5
  %1394 = load i64, ptr %46, align 8, !tbaa !9
  %1395 = load i64, ptr %54, align 8, !tbaa !9
  %1396 = add nsw i64 %1394, %1395
  %1397 = getelementptr inbounds double, ptr %1393, i64 %1396
  %1398 = load ptr, ptr %18, align 8, !tbaa !5
  %1399 = load ptr, ptr %27, align 8, !tbaa !5
  %1400 = load i64, ptr %52, align 8, !tbaa !9
  %1401 = load i64, ptr %54, align 8, !tbaa !9
  %1402 = add nsw i64 %1400, %1401
  %1403 = getelementptr inbounds double, ptr %1399, i64 %1402
  %1404 = load ptr, ptr %28, align 8, !tbaa !5
  %1405 = load i64, ptr %43, align 8, !tbaa !9
  %1406 = load i64, ptr %54, align 8, !tbaa !9
  %1407 = add nsw i64 %1405, %1406
  %1408 = getelementptr inbounds i64, ptr %1404, i64 %1407
  %1409 = load ptr, ptr %27, align 8, !tbaa !5
  %1410 = load i64, ptr %58, align 8, !tbaa !9
  %1411 = load i64, ptr %54, align 8, !tbaa !9
  %1412 = add nsw i64 %1410, %1411
  %1413 = getelementptr inbounds double, ptr %1409, i64 %1412
  %1414 = load ptr, ptr %27, align 8, !tbaa !5
  %1415 = load i64, ptr %59, align 8, !tbaa !9
  %1416 = load i64, ptr %54, align 8, !tbaa !9
  %1417 = add nsw i64 %1415, %1416
  %1418 = getelementptr inbounds double, ptr %1414, i64 %1417
  %1419 = load ptr, ptr %27, align 8, !tbaa !5
  %1420 = load i64, ptr %47, align 8, !tbaa !9
  %1421 = load i64, ptr %54, align 8, !tbaa !9
  %1422 = add nsw i64 %1420, %1421
  %1423 = getelementptr inbounds double, ptr %1419, i64 %1422
  %1424 = load ptr, ptr %27, align 8, !tbaa !5
  %1425 = load i64, ptr %73, align 8, !tbaa !9
  %1426 = load i64, ptr %54, align 8, !tbaa !9
  %1427 = add nsw i64 %1425, %1426
  %1428 = getelementptr inbounds double, ptr %1424, i64 %1427
  %1429 = load ptr, ptr %28, align 8, !tbaa !5
  %1430 = load i64, ptr %83, align 8, !tbaa !9
  %1431 = load i64, ptr %54, align 8, !tbaa !9
  %1432 = add nsw i64 %1430, %1431
  %1433 = getelementptr inbounds i64, ptr %1429, i64 %1432
  %1434 = load ptr, ptr %28, align 8, !tbaa !5
  %1435 = load i64, ptr %80, align 8, !tbaa !9
  %1436 = load i64, ptr %54, align 8, !tbaa !9
  %1437 = add nsw i64 %1435, %1436
  %1438 = getelementptr inbounds i64, ptr %1434, i64 %1437
  %1439 = load ptr, ptr %18, align 8, !tbaa !5
  %1440 = load ptr, ptr %28, align 8, !tbaa !5
  %1441 = load i64, ptr %63, align 8, !tbaa !9
  %1442 = load i64, ptr %54, align 8, !tbaa !9
  %1443 = add nsw i64 %1441, %1442
  %1444 = getelementptr inbounds i64, ptr %1440, i64 %1443
  %1445 = load ptr, ptr %27, align 8, !tbaa !5
  %1446 = load i64, ptr %82, align 8, !tbaa !9
  %1447 = load i64, ptr %54, align 8, !tbaa !9
  %1448 = add nsw i64 %1446, %1447
  %1449 = getelementptr inbounds double, ptr %1445, i64 %1448
  %1450 = load ptr, ptr %27, align 8, !tbaa !5
  %1451 = load i64, ptr %40, align 8, !tbaa !9
  %1452 = load i64, ptr %54, align 8, !tbaa !9
  %1453 = add nsw i64 %1451, %1452
  %1454 = getelementptr inbounds double, ptr %1450, i64 %1453
  %1455 = load ptr, ptr %27, align 8, !tbaa !5
  %1456 = load i64, ptr %45, align 8, !tbaa !9
  %1457 = load i64, ptr %54, align 8, !tbaa !9
  %1458 = add nsw i64 %1456, %1457
  %1459 = getelementptr inbounds double, ptr %1455, i64 %1458
  %1460 = load ptr, ptr %27, align 8, !tbaa !5
  %1461 = load i64, ptr %84, align 8, !tbaa !9
  %1462 = getelementptr inbounds double, ptr %1460, i64 %1461
  %1463 = load ptr, ptr %28, align 8, !tbaa !5
  %1464 = load i64, ptr %56, align 8, !tbaa !9
  %1465 = getelementptr inbounds i64, ptr %1463, i64 %1464
  %1466 = load ptr, ptr %29, align 8, !tbaa !5
  %1467 = call i32 @dlasda_(ptr noundef %78, ptr noundef %1386, ptr noundef %76, ptr noundef %66, ptr noundef %1389, ptr noundef %1392, ptr noundef %1397, ptr noundef %1398, ptr noundef %1403, ptr noundef %1408, ptr noundef %1413, ptr noundef %1418, ptr noundef %1423, ptr noundef %1428, ptr noundef %1433, ptr noundef %1438, ptr noundef %1439, ptr noundef %1444, ptr noundef %1449, ptr noundef %1454, ptr noundef %1459, ptr noundef %1462, ptr noundef %1465, ptr noundef %1466)
  %1468 = load ptr, ptr %29, align 8, !tbaa !5
  %1469 = load i64, ptr %1468, align 8, !tbaa !9
  %1470 = icmp ne i64 %1469, 0
  br i1 %1470, label %1471, label %1472

1471:                                             ; preds = %1385
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

1472:                                             ; preds = %1385
  %1473 = load i64, ptr %49, align 8, !tbaa !9
  %1474 = load i64, ptr %54, align 8, !tbaa !9
  %1475 = add nsw i64 %1473, %1474
  store i64 %1475, ptr %67, align 8, !tbaa !9
  %1476 = load ptr, ptr %17, align 8, !tbaa !5
  %1477 = load ptr, ptr %19, align 8, !tbaa !5
  %1478 = load ptr, ptr %22, align 8, !tbaa !5
  %1479 = load i64, ptr %51, align 8, !tbaa !9
  %1480 = load i64, ptr %30, align 8, !tbaa !9
  %1481 = add nsw i64 %1479, %1480
  %1482 = getelementptr inbounds %struct.doublecomplex, ptr %1478, i64 %1481
  %1483 = load ptr, ptr %23, align 8, !tbaa !5
  %1484 = load ptr, ptr %26, align 8, !tbaa !5
  %1485 = load i64, ptr %67, align 8, !tbaa !9
  %1486 = getelementptr inbounds %struct.doublecomplex, ptr %1484, i64 %1485
  %1487 = load ptr, ptr %18, align 8, !tbaa !5
  %1488 = load ptr, ptr %27, align 8, !tbaa !5
  %1489 = load i64, ptr %46, align 8, !tbaa !9
  %1490 = load i64, ptr %54, align 8, !tbaa !9
  %1491 = add nsw i64 %1489, %1490
  %1492 = getelementptr inbounds double, ptr %1488, i64 %1491
  %1493 = load ptr, ptr %18, align 8, !tbaa !5
  %1494 = load ptr, ptr %27, align 8, !tbaa !5
  %1495 = load i64, ptr %52, align 8, !tbaa !9
  %1496 = load i64, ptr %54, align 8, !tbaa !9
  %1497 = add nsw i64 %1495, %1496
  %1498 = getelementptr inbounds double, ptr %1494, i64 %1497
  %1499 = load ptr, ptr %28, align 8, !tbaa !5
  %1500 = load i64, ptr %43, align 8, !tbaa !9
  %1501 = load i64, ptr %54, align 8, !tbaa !9
  %1502 = add nsw i64 %1500, %1501
  %1503 = getelementptr inbounds i64, ptr %1499, i64 %1502
  %1504 = load ptr, ptr %27, align 8, !tbaa !5
  %1505 = load i64, ptr %58, align 8, !tbaa !9
  %1506 = load i64, ptr %54, align 8, !tbaa !9
  %1507 = add nsw i64 %1505, %1506
  %1508 = getelementptr inbounds double, ptr %1504, i64 %1507
  %1509 = load ptr, ptr %27, align 8, !tbaa !5
  %1510 = load i64, ptr %59, align 8, !tbaa !9
  %1511 = load i64, ptr %54, align 8, !tbaa !9
  %1512 = add nsw i64 %1510, %1511
  %1513 = getelementptr inbounds double, ptr %1509, i64 %1512
  %1514 = load ptr, ptr %27, align 8, !tbaa !5
  %1515 = load i64, ptr %47, align 8, !tbaa !9
  %1516 = load i64, ptr %54, align 8, !tbaa !9
  %1517 = add nsw i64 %1515, %1516
  %1518 = getelementptr inbounds double, ptr %1514, i64 %1517
  %1519 = load ptr, ptr %27, align 8, !tbaa !5
  %1520 = load i64, ptr %73, align 8, !tbaa !9
  %1521 = load i64, ptr %54, align 8, !tbaa !9
  %1522 = add nsw i64 %1520, %1521
  %1523 = getelementptr inbounds double, ptr %1519, i64 %1522
  %1524 = load ptr, ptr %28, align 8, !tbaa !5
  %1525 = load i64, ptr %83, align 8, !tbaa !9
  %1526 = load i64, ptr %54, align 8, !tbaa !9
  %1527 = add nsw i64 %1525, %1526
  %1528 = getelementptr inbounds i64, ptr %1524, i64 %1527
  %1529 = load ptr, ptr %28, align 8, !tbaa !5
  %1530 = load i64, ptr %80, align 8, !tbaa !9
  %1531 = load i64, ptr %54, align 8, !tbaa !9
  %1532 = add nsw i64 %1530, %1531
  %1533 = getelementptr inbounds i64, ptr %1529, i64 %1532
  %1534 = load ptr, ptr %18, align 8, !tbaa !5
  %1535 = load ptr, ptr %28, align 8, !tbaa !5
  %1536 = load i64, ptr %63, align 8, !tbaa !9
  %1537 = load i64, ptr %54, align 8, !tbaa !9
  %1538 = add nsw i64 %1536, %1537
  %1539 = getelementptr inbounds i64, ptr %1535, i64 %1538
  %1540 = load ptr, ptr %27, align 8, !tbaa !5
  %1541 = load i64, ptr %82, align 8, !tbaa !9
  %1542 = load i64, ptr %54, align 8, !tbaa !9
  %1543 = add nsw i64 %1541, %1542
  %1544 = getelementptr inbounds double, ptr %1540, i64 %1543
  %1545 = load ptr, ptr %27, align 8, !tbaa !5
  %1546 = load i64, ptr %40, align 8, !tbaa !9
  %1547 = load i64, ptr %54, align 8, !tbaa !9
  %1548 = add nsw i64 %1546, %1547
  %1549 = getelementptr inbounds double, ptr %1545, i64 %1548
  %1550 = load ptr, ptr %27, align 8, !tbaa !5
  %1551 = load i64, ptr %45, align 8, !tbaa !9
  %1552 = load i64, ptr %54, align 8, !tbaa !9
  %1553 = add nsw i64 %1551, %1552
  %1554 = getelementptr inbounds double, ptr %1550, i64 %1553
  %1555 = load ptr, ptr %27, align 8, !tbaa !5
  %1556 = load i64, ptr %84, align 8, !tbaa !9
  %1557 = getelementptr inbounds double, ptr %1555, i64 %1556
  %1558 = load ptr, ptr %28, align 8, !tbaa !5
  %1559 = load i64, ptr %56, align 8, !tbaa !9
  %1560 = getelementptr inbounds i64, ptr %1558, i64 %1559
  %1561 = load ptr, ptr %29, align 8, !tbaa !5
  %1562 = call i32 @zlalsa_(ptr noundef %79, ptr noundef %1476, ptr noundef %76, ptr noundef %1477, ptr noundef %1482, ptr noundef %1483, ptr noundef %1486, ptr noundef %1487, ptr noundef %1492, ptr noundef %1493, ptr noundef %1498, ptr noundef %1503, ptr noundef %1508, ptr noundef %1513, ptr noundef %1518, ptr noundef %1523, ptr noundef %1528, ptr noundef %1533, ptr noundef %1534, ptr noundef %1539, ptr noundef %1544, ptr noundef %1549, ptr noundef %1554, ptr noundef %1557, ptr noundef %1560, ptr noundef %1561)
  %1563 = load ptr, ptr %29, align 8, !tbaa !5
  %1564 = load i64, ptr %1563, align 8, !tbaa !9
  %1565 = icmp ne i64 %1564, 0
  br i1 %1565, label %1566, label %1567

1566:                                             ; preds = %1472
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

1567:                                             ; preds = %1472
  br label %1568

1568:                                             ; preds = %1567, %1370
  br label %1569

1569:                                             ; preds = %1568, %1133
  %1570 = load i64, ptr %41, align 8, !tbaa !9
  %1571 = add nsw i64 %1570, 1
  store i64 %1571, ptr %51, align 8, !tbaa !9
  br label %1572

1572:                                             ; preds = %1569, %1032
  br label %1573

1573:                                             ; preds = %1572
  %1574 = load i64, ptr %41, align 8, !tbaa !9
  %1575 = add nsw i64 %1574, 1
  store i64 %1575, ptr %41, align 8, !tbaa !9
  br label %1012, !llvm.loop !41

1576:                                             ; preds = %1012
  %1577 = load double, ptr %60, align 8, !tbaa !11
  %1578 = load ptr, ptr %20, align 8, !tbaa !5
  %1579 = load ptr, ptr %18, align 8, !tbaa !5
  %1580 = load ptr, ptr %20, align 8, !tbaa !5
  %1581 = getelementptr inbounds double, ptr %1580, i64 1
  %1582 = call i64 @f2c_idamax(ptr noundef %1579, ptr noundef %1581, ptr noundef @c__1)
  %1583 = getelementptr inbounds double, ptr %1578, i64 %1582
  %1584 = load double, ptr %1583, align 8, !tbaa !11
  store double %1584, ptr %38, align 8, !tbaa !11
  %1585 = load double, ptr %38, align 8, !tbaa !11
  %1586 = fcmp oge double %1585, 0.000000e+00
  br i1 %1586, label %1587, label %1589

1587:                                             ; preds = %1576
  %1588 = load double, ptr %38, align 8, !tbaa !11
  br label %1592

1589:                                             ; preds = %1576
  %1590 = load double, ptr %38, align 8, !tbaa !11
  %1591 = fneg double %1590
  br label %1592

1592:                                             ; preds = %1589, %1587
  %1593 = phi double [ %1588, %1587 ], [ %1591, %1589 ]
  %1594 = fmul double %1577, %1593
  store double %1594, ptr %57, align 8, !tbaa !11
  %1595 = load ptr, ptr %18, align 8, !tbaa !5
  %1596 = load i64, ptr %1595, align 8, !tbaa !9
  store i64 %1596, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1597

1597:                                             ; preds = %1661, %1592
  %1598 = load i64, ptr %41, align 8, !tbaa !9
  %1599 = load i64, ptr %32, align 8, !tbaa !9
  %1600 = icmp sle i64 %1598, %1599
  br i1 %1600, label %1601, label %1664

1601:                                             ; preds = %1597
  %1602 = load ptr, ptr %20, align 8, !tbaa !5
  %1603 = load i64, ptr %41, align 8, !tbaa !9
  %1604 = getelementptr inbounds double, ptr %1602, i64 %1603
  %1605 = load double, ptr %1604, align 8, !tbaa !11
  store double %1605, ptr %38, align 8, !tbaa !11
  %1606 = load double, ptr %38, align 8, !tbaa !11
  %1607 = fcmp oge double %1606, 0.000000e+00
  br i1 %1607, label %1608, label %1610

1608:                                             ; preds = %1601
  %1609 = load double, ptr %38, align 8, !tbaa !11
  br label %1613

1610:                                             ; preds = %1601
  %1611 = load double, ptr %38, align 8, !tbaa !11
  %1612 = fneg double %1611
  br label %1613

1613:                                             ; preds = %1610, %1608
  %1614 = phi double [ %1609, %1608 ], [ %1612, %1610 ]
  %1615 = load double, ptr %57, align 8, !tbaa !11
  %1616 = fcmp ole double %1614, %1615
  br i1 %1616, label %1617, label %1627

1617:                                             ; preds = %1613
  %1618 = load ptr, ptr %19, align 8, !tbaa !5
  %1619 = load ptr, ptr %26, align 8, !tbaa !5
  %1620 = load i64, ptr %49, align 8, !tbaa !9
  %1621 = load i64, ptr %41, align 8, !tbaa !9
  %1622 = add nsw i64 %1620, %1621
  %1623 = sub nsw i64 %1622, 1
  %1624 = getelementptr inbounds %struct.doublecomplex, ptr %1619, i64 %1623
  %1625 = load ptr, ptr %18, align 8, !tbaa !5
  %1626 = call i32 @zlaset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %1618, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1624, ptr noundef %1625)
  br label %1644

1627:                                             ; preds = %1613
  %1628 = load ptr, ptr %25, align 8, !tbaa !5
  %1629 = load i64, ptr %1628, align 8, !tbaa !9
  %1630 = add nsw i64 %1629, 1
  store i64 %1630, ptr %1628, align 8, !tbaa !9
  %1631 = load ptr, ptr %20, align 8, !tbaa !5
  %1632 = load i64, ptr %41, align 8, !tbaa !9
  %1633 = getelementptr inbounds double, ptr %1631, i64 %1632
  %1634 = load ptr, ptr %19, align 8, !tbaa !5
  %1635 = load ptr, ptr %26, align 8, !tbaa !5
  %1636 = load i64, ptr %49, align 8, !tbaa !9
  %1637 = load i64, ptr %41, align 8, !tbaa !9
  %1638 = add nsw i64 %1636, %1637
  %1639 = sub nsw i64 %1638, 1
  %1640 = getelementptr inbounds %struct.doublecomplex, ptr %1635, i64 %1639
  %1641 = load ptr, ptr %18, align 8, !tbaa !5
  %1642 = load ptr, ptr %29, align 8, !tbaa !5
  %1643 = call i32 @zlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %1633, ptr noundef @c_b10, ptr noundef @c__1, ptr noundef %1634, ptr noundef %1640, ptr noundef %1641, ptr noundef %1642)
  br label %1644

1644:                                             ; preds = %1627, %1617
  %1645 = load ptr, ptr %20, align 8, !tbaa !5
  %1646 = load i64, ptr %41, align 8, !tbaa !9
  %1647 = getelementptr inbounds double, ptr %1645, i64 %1646
  %1648 = load double, ptr %1647, align 8, !tbaa !11
  store double %1648, ptr %38, align 8, !tbaa !11
  %1649 = load double, ptr %38, align 8, !tbaa !11
  %1650 = fcmp oge double %1649, 0.000000e+00
  br i1 %1650, label %1651, label %1653

1651:                                             ; preds = %1644
  %1652 = load double, ptr %38, align 8, !tbaa !11
  br label %1656

1653:                                             ; preds = %1644
  %1654 = load double, ptr %38, align 8, !tbaa !11
  %1655 = fneg double %1654
  br label %1656

1656:                                             ; preds = %1653, %1651
  %1657 = phi double [ %1652, %1651 ], [ %1655, %1653 ]
  %1658 = load ptr, ptr %20, align 8, !tbaa !5
  %1659 = load i64, ptr %41, align 8, !tbaa !9
  %1660 = getelementptr inbounds double, ptr %1658, i64 %1659
  store double %1657, ptr %1660, align 8, !tbaa !11
  br label %1661

1661:                                             ; preds = %1656
  %1662 = load i64, ptr %41, align 8, !tbaa !9
  %1663 = add nsw i64 %1662, 1
  store i64 %1663, ptr %41, align 8, !tbaa !9
  br label %1597, !llvm.loop !42

1664:                                             ; preds = %1597
  store i64 1, ptr %79, align 8, !tbaa !9
  %1665 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1665, ptr %32, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %1666

1666:                                             ; preds = %1981, %1664
  %1667 = load i64, ptr %41, align 8, !tbaa !9
  %1668 = load i64, ptr %32, align 8, !tbaa !9
  %1669 = icmp sle i64 %1667, %1668
  br i1 %1669, label %1670, label %1984

1670:                                             ; preds = %1666
  %1671 = load ptr, ptr %28, align 8, !tbaa !5
  %1672 = load i64, ptr %41, align 8, !tbaa !9
  %1673 = getelementptr inbounds i64, ptr %1671, i64 %1672
  %1674 = load i64, ptr %1673, align 8, !tbaa !9
  store i64 %1674, ptr %51, align 8, !tbaa !9
  %1675 = load i64, ptr %51, align 8, !tbaa !9
  %1676 = sub nsw i64 %1675, 1
  store i64 %1676, ptr %54, align 8, !tbaa !9
  %1677 = load ptr, ptr %28, align 8, !tbaa !5
  %1678 = load i64, ptr %74, align 8, !tbaa !9
  %1679 = load i64, ptr %41, align 8, !tbaa !9
  %1680 = add nsw i64 %1678, %1679
  %1681 = sub nsw i64 %1680, 1
  %1682 = getelementptr inbounds i64, ptr %1677, i64 %1681
  %1683 = load i64, ptr %1682, align 8, !tbaa !9
  store i64 %1683, ptr %76, align 8, !tbaa !9
  %1684 = load i64, ptr %49, align 8, !tbaa !9
  %1685 = load i64, ptr %54, align 8, !tbaa !9
  %1686 = add nsw i64 %1684, %1685
  store i64 %1686, ptr %67, align 8, !tbaa !9
  %1687 = load i64, ptr %76, align 8, !tbaa !9
  %1688 = icmp eq i64 %1687, 1
  br i1 %1688, label %1689, label %1702

1689:                                             ; preds = %1670
  %1690 = load ptr, ptr %19, align 8, !tbaa !5
  %1691 = load ptr, ptr %26, align 8, !tbaa !5
  %1692 = load i64, ptr %67, align 8, !tbaa !9
  %1693 = getelementptr inbounds %struct.doublecomplex, ptr %1691, i64 %1692
  %1694 = load ptr, ptr %18, align 8, !tbaa !5
  %1695 = load ptr, ptr %22, align 8, !tbaa !5
  %1696 = load i64, ptr %51, align 8, !tbaa !9
  %1697 = load i64, ptr %30, align 8, !tbaa !9
  %1698 = add nsw i64 %1696, %1697
  %1699 = getelementptr inbounds %struct.doublecomplex, ptr %1695, i64 %1698
  %1700 = load ptr, ptr %23, align 8, !tbaa !5
  %1701 = call i32 @f2c_zcopy(ptr noundef %1690, ptr noundef %1693, ptr noundef %1694, ptr noundef %1699, ptr noundef %1700)
  br label %1980

1702:                                             ; preds = %1670
  %1703 = load i64, ptr %76, align 8, !tbaa !9
  %1704 = load ptr, ptr %17, align 8, !tbaa !5
  %1705 = load i64, ptr %1704, align 8, !tbaa !9
  %1706 = icmp sle i64 %1703, %1705
  br i1 %1706, label %1707, label %1886

1707:                                             ; preds = %1702
  %1708 = load i64, ptr %67, align 8, !tbaa !9
  %1709 = load ptr, ptr %18, align 8, !tbaa !5
  %1710 = load i64, ptr %1709, align 8, !tbaa !9
  %1711 = sub nsw i64 %1708, %1710
  %1712 = sub nsw i64 %1711, 1
  store i64 %1712, ptr %42, align 8, !tbaa !9
  %1713 = load i64, ptr %62, align 8, !tbaa !9
  %1714 = sub nsw i64 %1713, 1
  store i64 %1714, ptr %71, align 8, !tbaa !9
  %1715 = load ptr, ptr %19, align 8, !tbaa !5
  %1716 = load i64, ptr %1715, align 8, !tbaa !9
  store i64 %1716, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1717

1717:                                             ; preds = %1749, %1707
  %1718 = load i64, ptr %61, align 8, !tbaa !9
  %1719 = load i64, ptr %33, align 8, !tbaa !9
  %1720 = icmp sle i64 %1718, %1719
  br i1 %1720, label %1721, label %1752

1721:                                             ; preds = %1717
  %1722 = load ptr, ptr %18, align 8, !tbaa !5
  %1723 = load i64, ptr %1722, align 8, !tbaa !9
  %1724 = load i64, ptr %42, align 8, !tbaa !9
  %1725 = add nsw i64 %1724, %1723
  store i64 %1725, ptr %42, align 8, !tbaa !9
  %1726 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %1726, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %1727

1727:                                             ; preds = %1745, %1721
  %1728 = load i64, ptr %68, align 8, !tbaa !9
  %1729 = load i64, ptr %34, align 8, !tbaa !9
  %1730 = icmp sle i64 %1728, %1729
  br i1 %1730, label %1731, label %1748

1731:                                             ; preds = %1727
  %1732 = load i64, ptr %71, align 8, !tbaa !9
  %1733 = add nsw i64 %1732, 1
  store i64 %1733, ptr %71, align 8, !tbaa !9
  %1734 = load i64, ptr %42, align 8, !tbaa !9
  %1735 = load i64, ptr %68, align 8, !tbaa !9
  %1736 = add nsw i64 %1734, %1735
  store i64 %1736, ptr %35, align 8, !tbaa !9
  %1737 = load ptr, ptr %26, align 8, !tbaa !5
  %1738 = load i64, ptr %35, align 8, !tbaa !9
  %1739 = getelementptr inbounds %struct.doublecomplex, ptr %1737, i64 %1738
  %1740 = getelementptr inbounds %struct.doublecomplex, ptr %1739, i32 0, i32 0
  %1741 = load double, ptr %1740, align 8, !tbaa !18
  %1742 = load ptr, ptr %27, align 8, !tbaa !5
  %1743 = load i64, ptr %71, align 8, !tbaa !9
  %1744 = getelementptr inbounds double, ptr %1742, i64 %1743
  store double %1741, ptr %1744, align 8, !tbaa !11
  br label %1745

1745:                                             ; preds = %1731
  %1746 = load i64, ptr %68, align 8, !tbaa !9
  %1747 = add nsw i64 %1746, 1
  store i64 %1747, ptr %68, align 8, !tbaa !9
  br label %1727, !llvm.loop !43

1748:                                             ; preds = %1727
  br label %1749

1749:                                             ; preds = %1748
  %1750 = load i64, ptr %61, align 8, !tbaa !9
  %1751 = add nsw i64 %1750, 1
  store i64 %1751, ptr %61, align 8, !tbaa !9
  br label %1717, !llvm.loop !44

1752:                                             ; preds = %1717
  %1753 = load ptr, ptr %19, align 8, !tbaa !5
  %1754 = load ptr, ptr %27, align 8, !tbaa !5
  %1755 = load i64, ptr %52, align 8, !tbaa !9
  %1756 = load i64, ptr %54, align 8, !tbaa !9
  %1757 = add nsw i64 %1755, %1756
  %1758 = getelementptr inbounds double, ptr %1754, i64 %1757
  %1759 = load ptr, ptr %18, align 8, !tbaa !5
  %1760 = load ptr, ptr %27, align 8, !tbaa !5
  %1761 = load i64, ptr %62, align 8, !tbaa !9
  %1762 = getelementptr inbounds double, ptr %1760, i64 %1761
  %1763 = load ptr, ptr %27, align 8, !tbaa !5
  %1764 = load i64, ptr %75, align 8, !tbaa !9
  %1765 = getelementptr inbounds double, ptr %1763, i64 %1764
  %1766 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %76, ptr noundef %1753, ptr noundef %76, ptr noundef @c_b10, ptr noundef %1758, ptr noundef %1759, ptr noundef %1762, ptr noundef %76, ptr noundef @c_b35, ptr noundef %1765, ptr noundef %76)
  %1767 = load i64, ptr %67, align 8, !tbaa !9
  %1768 = load ptr, ptr %18, align 8, !tbaa !5
  %1769 = load i64, ptr %1768, align 8, !tbaa !9
  %1770 = sub nsw i64 %1767, %1769
  %1771 = sub nsw i64 %1770, 1
  store i64 %1771, ptr %42, align 8, !tbaa !9
  %1772 = load i64, ptr %62, align 8, !tbaa !9
  %1773 = sub nsw i64 %1772, 1
  store i64 %1773, ptr %70, align 8, !tbaa !9
  %1774 = load ptr, ptr %19, align 8, !tbaa !5
  %1775 = load i64, ptr %1774, align 8, !tbaa !9
  store i64 %1775, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1776

1776:                                             ; preds = %1806, %1752
  %1777 = load i64, ptr %61, align 8, !tbaa !9
  %1778 = load i64, ptr %33, align 8, !tbaa !9
  %1779 = icmp sle i64 %1777, %1778
  br i1 %1779, label %1780, label %1809

1780:                                             ; preds = %1776
  %1781 = load ptr, ptr %18, align 8, !tbaa !5
  %1782 = load i64, ptr %1781, align 8, !tbaa !9
  %1783 = load i64, ptr %42, align 8, !tbaa !9
  %1784 = add nsw i64 %1783, %1782
  store i64 %1784, ptr %42, align 8, !tbaa !9
  %1785 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %1785, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %1786

1786:                                             ; preds = %1802, %1780
  %1787 = load i64, ptr %68, align 8, !tbaa !9
  %1788 = load i64, ptr %34, align 8, !tbaa !9
  %1789 = icmp sle i64 %1787, %1788
  br i1 %1789, label %1790, label %1805

1790:                                             ; preds = %1786
  %1791 = load i64, ptr %70, align 8, !tbaa !9
  %1792 = add nsw i64 %1791, 1
  store i64 %1792, ptr %70, align 8, !tbaa !9
  %1793 = load ptr, ptr %26, align 8, !tbaa !5
  %1794 = load i64, ptr %42, align 8, !tbaa !9
  %1795 = load i64, ptr %68, align 8, !tbaa !9
  %1796 = add nsw i64 %1794, %1795
  %1797 = getelementptr inbounds %struct.doublecomplex, ptr %1793, i64 %1796
  %1798 = call double @d_imag(ptr noundef %1797)
  %1799 = load ptr, ptr %27, align 8, !tbaa !5
  %1800 = load i64, ptr %70, align 8, !tbaa !9
  %1801 = getelementptr inbounds double, ptr %1799, i64 %1800
  store double %1798, ptr %1801, align 8, !tbaa !11
  br label %1802

1802:                                             ; preds = %1790
  %1803 = load i64, ptr %68, align 8, !tbaa !9
  %1804 = add nsw i64 %1803, 1
  store i64 %1804, ptr %68, align 8, !tbaa !9
  br label %1786, !llvm.loop !45

1805:                                             ; preds = %1786
  br label %1806

1806:                                             ; preds = %1805
  %1807 = load i64, ptr %61, align 8, !tbaa !9
  %1808 = add nsw i64 %1807, 1
  store i64 %1808, ptr %61, align 8, !tbaa !9
  br label %1776, !llvm.loop !46

1809:                                             ; preds = %1776
  %1810 = load ptr, ptr %19, align 8, !tbaa !5
  %1811 = load ptr, ptr %27, align 8, !tbaa !5
  %1812 = load i64, ptr %52, align 8, !tbaa !9
  %1813 = load i64, ptr %54, align 8, !tbaa !9
  %1814 = add nsw i64 %1812, %1813
  %1815 = getelementptr inbounds double, ptr %1811, i64 %1814
  %1816 = load ptr, ptr %18, align 8, !tbaa !5
  %1817 = load ptr, ptr %27, align 8, !tbaa !5
  %1818 = load i64, ptr %62, align 8, !tbaa !9
  %1819 = getelementptr inbounds double, ptr %1817, i64 %1818
  %1820 = load ptr, ptr %27, align 8, !tbaa !5
  %1821 = load i64, ptr %72, align 8, !tbaa !9
  %1822 = getelementptr inbounds double, ptr %1820, i64 %1821
  %1823 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %76, ptr noundef %1810, ptr noundef %76, ptr noundef @c_b10, ptr noundef %1815, ptr noundef %1816, ptr noundef %1819, ptr noundef %76, ptr noundef @c_b35, ptr noundef %1822, ptr noundef %76)
  %1824 = load i64, ptr %75, align 8, !tbaa !9
  %1825 = sub nsw i64 %1824, 1
  store i64 %1825, ptr %71, align 8, !tbaa !9
  %1826 = load i64, ptr %72, align 8, !tbaa !9
  %1827 = sub nsw i64 %1826, 1
  store i64 %1827, ptr %70, align 8, !tbaa !9
  %1828 = load ptr, ptr %19, align 8, !tbaa !5
  %1829 = load i64, ptr %1828, align 8, !tbaa !9
  store i64 %1829, ptr %33, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1830

1830:                                             ; preds = %1882, %1809
  %1831 = load i64, ptr %61, align 8, !tbaa !9
  %1832 = load i64, ptr %33, align 8, !tbaa !9
  %1833 = icmp sle i64 %1831, %1832
  br i1 %1833, label %1834, label %1885

1834:                                             ; preds = %1830
  %1835 = load i64, ptr %51, align 8, !tbaa !9
  %1836 = load i64, ptr %76, align 8, !tbaa !9
  %1837 = add nsw i64 %1835, %1836
  %1838 = sub nsw i64 %1837, 1
  store i64 %1838, ptr %34, align 8, !tbaa !9
  %1839 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1839, ptr %68, align 8, !tbaa !9
  br label %1840

1840:                                             ; preds = %1878, %1834
  %1841 = load i64, ptr %68, align 8, !tbaa !9
  %1842 = load i64, ptr %34, align 8, !tbaa !9
  %1843 = icmp sle i64 %1841, %1842
  br i1 %1843, label %1844, label %1881

1844:                                             ; preds = %1840
  %1845 = load i64, ptr %71, align 8, !tbaa !9
  %1846 = add nsw i64 %1845, 1
  store i64 %1846, ptr %71, align 8, !tbaa !9
  %1847 = load i64, ptr %70, align 8, !tbaa !9
  %1848 = add nsw i64 %1847, 1
  store i64 %1848, ptr %70, align 8, !tbaa !9
  %1849 = load i64, ptr %68, align 8, !tbaa !9
  %1850 = load i64, ptr %61, align 8, !tbaa !9
  %1851 = load i64, ptr %30, align 8, !tbaa !9
  %1852 = mul nsw i64 %1850, %1851
  %1853 = add nsw i64 %1849, %1852
  store i64 %1853, ptr %35, align 8, !tbaa !9
  %1854 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %1854, ptr %36, align 8, !tbaa !9
  %1855 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %1855, ptr %37, align 8, !tbaa !9
  %1856 = load ptr, ptr %27, align 8, !tbaa !5
  %1857 = load i64, ptr %36, align 8, !tbaa !9
  %1858 = getelementptr inbounds double, ptr %1856, i64 %1857
  %1859 = load double, ptr %1858, align 8, !tbaa !11
  %1860 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %1859, ptr %1860, align 8, !tbaa !18
  %1861 = load ptr, ptr %27, align 8, !tbaa !5
  %1862 = load i64, ptr %37, align 8, !tbaa !9
  %1863 = getelementptr inbounds double, ptr %1861, i64 %1862
  %1864 = load double, ptr %1863, align 8, !tbaa !11
  %1865 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %1864, ptr %1865, align 8, !tbaa !24
  %1866 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1867 = load double, ptr %1866, align 8, !tbaa !18
  %1868 = load ptr, ptr %22, align 8, !tbaa !5
  %1869 = load i64, ptr %35, align 8, !tbaa !9
  %1870 = getelementptr inbounds %struct.doublecomplex, ptr %1868, i64 %1869
  %1871 = getelementptr inbounds %struct.doublecomplex, ptr %1870, i32 0, i32 0
  store double %1867, ptr %1871, align 8, !tbaa !18
  %1872 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %1873 = load double, ptr %1872, align 8, !tbaa !24
  %1874 = load ptr, ptr %22, align 8, !tbaa !5
  %1875 = load i64, ptr %35, align 8, !tbaa !9
  %1876 = getelementptr inbounds %struct.doublecomplex, ptr %1874, i64 %1875
  %1877 = getelementptr inbounds %struct.doublecomplex, ptr %1876, i32 0, i32 1
  store double %1873, ptr %1877, align 8, !tbaa !24
  br label %1878

1878:                                             ; preds = %1844
  %1879 = load i64, ptr %68, align 8, !tbaa !9
  %1880 = add nsw i64 %1879, 1
  store i64 %1880, ptr %68, align 8, !tbaa !9
  br label %1840, !llvm.loop !47

1881:                                             ; preds = %1840
  br label %1882

1882:                                             ; preds = %1881
  %1883 = load i64, ptr %61, align 8, !tbaa !9
  %1884 = add nsw i64 %1883, 1
  store i64 %1884, ptr %61, align 8, !tbaa !9
  br label %1830, !llvm.loop !48

1885:                                             ; preds = %1830
  br label %1979

1886:                                             ; preds = %1702
  %1887 = load ptr, ptr %17, align 8, !tbaa !5
  %1888 = load ptr, ptr %19, align 8, !tbaa !5
  %1889 = load ptr, ptr %26, align 8, !tbaa !5
  %1890 = load i64, ptr %67, align 8, !tbaa !9
  %1891 = getelementptr inbounds %struct.doublecomplex, ptr %1889, i64 %1890
  %1892 = load ptr, ptr %18, align 8, !tbaa !5
  %1893 = load ptr, ptr %22, align 8, !tbaa !5
  %1894 = load i64, ptr %51, align 8, !tbaa !9
  %1895 = load i64, ptr %30, align 8, !tbaa !9
  %1896 = add nsw i64 %1894, %1895
  %1897 = getelementptr inbounds %struct.doublecomplex, ptr %1893, i64 %1896
  %1898 = load ptr, ptr %23, align 8, !tbaa !5
  %1899 = load ptr, ptr %27, align 8, !tbaa !5
  %1900 = load i64, ptr %46, align 8, !tbaa !9
  %1901 = load i64, ptr %54, align 8, !tbaa !9
  %1902 = add nsw i64 %1900, %1901
  %1903 = getelementptr inbounds double, ptr %1899, i64 %1902
  %1904 = load ptr, ptr %18, align 8, !tbaa !5
  %1905 = load ptr, ptr %27, align 8, !tbaa !5
  %1906 = load i64, ptr %52, align 8, !tbaa !9
  %1907 = load i64, ptr %54, align 8, !tbaa !9
  %1908 = add nsw i64 %1906, %1907
  %1909 = getelementptr inbounds double, ptr %1905, i64 %1908
  %1910 = load ptr, ptr %28, align 8, !tbaa !5
  %1911 = load i64, ptr %43, align 8, !tbaa !9
  %1912 = load i64, ptr %54, align 8, !tbaa !9
  %1913 = add nsw i64 %1911, %1912
  %1914 = getelementptr inbounds i64, ptr %1910, i64 %1913
  %1915 = load ptr, ptr %27, align 8, !tbaa !5
  %1916 = load i64, ptr %58, align 8, !tbaa !9
  %1917 = load i64, ptr %54, align 8, !tbaa !9
  %1918 = add nsw i64 %1916, %1917
  %1919 = getelementptr inbounds double, ptr %1915, i64 %1918
  %1920 = load ptr, ptr %27, align 8, !tbaa !5
  %1921 = load i64, ptr %59, align 8, !tbaa !9
  %1922 = load i64, ptr %54, align 8, !tbaa !9
  %1923 = add nsw i64 %1921, %1922
  %1924 = getelementptr inbounds double, ptr %1920, i64 %1923
  %1925 = load ptr, ptr %27, align 8, !tbaa !5
  %1926 = load i64, ptr %47, align 8, !tbaa !9
  %1927 = load i64, ptr %54, align 8, !tbaa !9
  %1928 = add nsw i64 %1926, %1927
  %1929 = getelementptr inbounds double, ptr %1925, i64 %1928
  %1930 = load ptr, ptr %27, align 8, !tbaa !5
  %1931 = load i64, ptr %73, align 8, !tbaa !9
  %1932 = load i64, ptr %54, align 8, !tbaa !9
  %1933 = add nsw i64 %1931, %1932
  %1934 = getelementptr inbounds double, ptr %1930, i64 %1933
  %1935 = load ptr, ptr %28, align 8, !tbaa !5
  %1936 = load i64, ptr %83, align 8, !tbaa !9
  %1937 = load i64, ptr %54, align 8, !tbaa !9
  %1938 = add nsw i64 %1936, %1937
  %1939 = getelementptr inbounds i64, ptr %1935, i64 %1938
  %1940 = load ptr, ptr %28, align 8, !tbaa !5
  %1941 = load i64, ptr %80, align 8, !tbaa !9
  %1942 = load i64, ptr %54, align 8, !tbaa !9
  %1943 = add nsw i64 %1941, %1942
  %1944 = getelementptr inbounds i64, ptr %1940, i64 %1943
  %1945 = load ptr, ptr %18, align 8, !tbaa !5
  %1946 = load ptr, ptr %28, align 8, !tbaa !5
  %1947 = load i64, ptr %63, align 8, !tbaa !9
  %1948 = load i64, ptr %54, align 8, !tbaa !9
  %1949 = add nsw i64 %1947, %1948
  %1950 = getelementptr inbounds i64, ptr %1946, i64 %1949
  %1951 = load ptr, ptr %27, align 8, !tbaa !5
  %1952 = load i64, ptr %82, align 8, !tbaa !9
  %1953 = load i64, ptr %54, align 8, !tbaa !9
  %1954 = add nsw i64 %1952, %1953
  %1955 = getelementptr inbounds double, ptr %1951, i64 %1954
  %1956 = load ptr, ptr %27, align 8, !tbaa !5
  %1957 = load i64, ptr %40, align 8, !tbaa !9
  %1958 = load i64, ptr %54, align 8, !tbaa !9
  %1959 = add nsw i64 %1957, %1958
  %1960 = getelementptr inbounds double, ptr %1956, i64 %1959
  %1961 = load ptr, ptr %27, align 8, !tbaa !5
  %1962 = load i64, ptr %45, align 8, !tbaa !9
  %1963 = load i64, ptr %54, align 8, !tbaa !9
  %1964 = add nsw i64 %1962, %1963
  %1965 = getelementptr inbounds double, ptr %1961, i64 %1964
  %1966 = load ptr, ptr %27, align 8, !tbaa !5
  %1967 = load i64, ptr %84, align 8, !tbaa !9
  %1968 = getelementptr inbounds double, ptr %1966, i64 %1967
  %1969 = load ptr, ptr %28, align 8, !tbaa !5
  %1970 = load i64, ptr %56, align 8, !tbaa !9
  %1971 = getelementptr inbounds i64, ptr %1969, i64 %1970
  %1972 = load ptr, ptr %29, align 8, !tbaa !5
  %1973 = call i32 @zlalsa_(ptr noundef %79, ptr noundef %1887, ptr noundef %76, ptr noundef %1888, ptr noundef %1891, ptr noundef %1892, ptr noundef %1897, ptr noundef %1898, ptr noundef %1903, ptr noundef %1904, ptr noundef %1909, ptr noundef %1914, ptr noundef %1919, ptr noundef %1924, ptr noundef %1929, ptr noundef %1934, ptr noundef %1939, ptr noundef %1944, ptr noundef %1945, ptr noundef %1950, ptr noundef %1955, ptr noundef %1960, ptr noundef %1965, ptr noundef %1968, ptr noundef %1971, ptr noundef %1972)
  %1974 = load ptr, ptr %29, align 8, !tbaa !5
  %1975 = load i64, ptr %1974, align 8, !tbaa !9
  %1976 = icmp ne i64 %1975, 0
  br i1 %1976, label %1977, label %1978

1977:                                             ; preds = %1886
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

1978:                                             ; preds = %1886
  br label %1979

1979:                                             ; preds = %1978, %1885
  br label %1980

1980:                                             ; preds = %1979, %1689
  br label %1981

1981:                                             ; preds = %1980
  %1982 = load i64, ptr %41, align 8, !tbaa !9
  %1983 = add nsw i64 %1982, 1
  store i64 %1983, ptr %41, align 8, !tbaa !9
  br label %1666, !llvm.loop !49

1984:                                             ; preds = %1666
  %1985 = load ptr, ptr %18, align 8, !tbaa !5
  %1986 = load ptr, ptr %20, align 8, !tbaa !5
  %1987 = getelementptr inbounds double, ptr %1986, i64 1
  %1988 = load ptr, ptr %18, align 8, !tbaa !5
  %1989 = load ptr, ptr %29, align 8, !tbaa !5
  %1990 = call i32 @dlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef @c_b10, ptr noundef %81, ptr noundef %1985, ptr noundef @c__1, ptr noundef %1987, ptr noundef %1988, ptr noundef %1989)
  %1991 = load ptr, ptr %18, align 8, !tbaa !5
  %1992 = load ptr, ptr %20, align 8, !tbaa !5
  %1993 = getelementptr inbounds double, ptr %1992, i64 1
  %1994 = load ptr, ptr %29, align 8, !tbaa !5
  %1995 = call i32 @dlasrt_(ptr noundef @.str.8, ptr noundef %1991, ptr noundef %1993, ptr noundef %1994)
  %1996 = load ptr, ptr %18, align 8, !tbaa !5
  %1997 = load ptr, ptr %19, align 8, !tbaa !5
  %1998 = load ptr, ptr %22, align 8, !tbaa !5
  %1999 = load i64, ptr %31, align 8, !tbaa !9
  %2000 = getelementptr inbounds %struct.doublecomplex, ptr %1998, i64 %1999
  %2001 = load ptr, ptr %23, align 8, !tbaa !5
  %2002 = load ptr, ptr %29, align 8, !tbaa !5
  %2003 = call i32 @zlascl_(ptr noundef @.str.3, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %81, ptr noundef @c_b10, ptr noundef %1996, ptr noundef %1997, ptr noundef %2000, ptr noundef %2001, ptr noundef %2002)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %87, align 4
  br label %2004

2004:                                             ; preds = %1984, %1977, %1566, %1471, %1197, %843, %447, %353, %205, %160, %136
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  %2005 = load i32, ptr %15, align 4
  ret i32 %2005
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @f2c_dgemm(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 double @d_imag(ptr noundef) #2

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

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

; Function Attrs: nounwind
declare double @log(double noundef) #3

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

declare i32 @f2c_zcopy(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

declare i32 @dlasda_(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 @zlalsa_(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

; 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 "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 #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = !{!19, !12, i64 0}
!19 = !{!"", !12, i64 0, !12, i64 8}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = !{!19, !12, i64 8}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = distinct !{!37, !15}
!38 = distinct !{!38, !15}
!39 = distinct !{!39, !15}
!40 = distinct !{!40, !15}
!41 = distinct !{!41, !15}
!42 = distinct !{!42, !15}
!43 = distinct !{!43, !15}
!44 = distinct !{!44, !15}
!45 = distinct !{!45, !15}
!46 = distinct !{!46, !15}
!47 = distinct !{!47, !15}
!48 = distinct !{!48, !15}
!49 = distinct !{!49, !15}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b1 = external hidden global %struct.doublecomplex, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c_b10 = external hidden global double, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b35 = external hidden global double, align 8
@.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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zlalsd_(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr nocapture noundef readonly %8, ptr nocapture noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = alloca i64, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca i64, align 8
  %20 = alloca double, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  %26 = getelementptr inbounds i8, ptr %4, i64 -8
  %27 = getelementptr inbounds i8, ptr %5, i64 -8
  %28 = load i64, ptr %7, align 8, !tbaa !5
  %29 = xor i64 %28, -1
  %30 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %29
  %31 = getelementptr inbounds i8, ptr %10, i64 -16
  %32 = getelementptr inbounds i8, ptr %11, i64 -8
  %33 = getelementptr inbounds i8, ptr %12, i64 -8
  store i64 0, ptr %13, align 8, !tbaa !5
  %34 = load i64, ptr %2, align 8, !tbaa !5
  %35 = icmp slt i64 %34, 0
  br i1 %35, label %.thread, label %36

36:                                               ; preds = %14
  %37 = load i64, ptr %3, align 8, !tbaa !5
  %38 = icmp slt i64 %37, 1
  br i1 %38, label %.thread, label %39

39:                                               ; preds = %36
  %40 = load i64, ptr %7, align 8, !tbaa !5
  %41 = icmp slt i64 %40, 1
  %42 = icmp slt i64 %40, %34
  %or.cond = or i1 %41, %42
  br i1 %or.cond, label %.thread, label %44

.thread:                                          ; preds = %39, %36, %14
  %.sink = phi i64 [ -3, %14 ], [ -4, %36 ], [ -8, %39 ]
  %.neg = phi i64 [ 3, %14 ], [ 4, %36 ], [ 8, %39 ]
  store i64 %.sink, ptr %13, align 8, !tbaa !5
  store i64 %.neg, ptr %15, align 8, !tbaa !5
  %43 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %15) #5
  br label %.loopexit1021

44:                                               ; preds = %39
  %45 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #5
  store double %45, ptr %20, align 8, !tbaa !9
  %46 = load double, ptr %8, align 8, !tbaa !9
  %47 = fcmp ugt double %46, 0.000000e+00
  %48 = fcmp ult double %46, 1.000000e+00
  %or.cond1016 = and i1 %47, %48
  %.0938 = select i1 %or.cond1016, double %46, double %45
  store i64 0, ptr %9, align 8, !tbaa !5
  %49 = load i64, ptr %2, align 8, !tbaa !5
  switch i64 %49, label %61 [
    i64 0, label %.loopexit1021
    i64 1, label %50
  ]

50:                                               ; preds = %44
  %51 = load double, ptr %4, align 8, !tbaa !9
  %52 = fcmp oeq double %51, 0.000000e+00
  br i1 %52, label %53, label %55

53:                                               ; preds = %50
  %54 = tail call i32 @zlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %6, ptr noundef nonnull %7) #5
  br label %.loopexit1021

55:                                               ; preds = %50
  store i64 1, ptr %9, align 8, !tbaa !5
  %56 = tail call i32 @zlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %4, ptr noundef nonnull @c_b10, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %13) #5
  %57 = load double, ptr %4, align 8, !tbaa !9
  %58 = fcmp ult double %57, 0.000000e+00
  %59 = fneg double %57
  %60 = select i1 %58, double %59, double %57
  store double %60, ptr %4, align 8, !tbaa !9
  br label %.loopexit1021

61:                                               ; preds = %44
  %62 = load i8, ptr %0, align 1, !tbaa !11
  %63 = icmp eq i8 %62, 76
  br i1 %63, label %64, label %.loopexit1023

64:                                               ; preds = %61
  %65 = add nsw i64 %49, -1
  %invariant.gep = getelementptr i8, ptr %6, i64 -16
  %.not9721025 = icmp slt i64 %49, 2
  br i1 %.not9721025, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %64, %86
  %.09391026 = phi i64 [ %71, %86 ], [ 1, %64 ]
  %66 = getelementptr inbounds double, ptr %26, i64 %.09391026
  %67 = getelementptr inbounds double, ptr %27, i64 %.09391026
  %68 = call i32 @dlartg_(ptr noundef nonnull %66, ptr noundef nonnull %67, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %16) #5
  %69 = load double, ptr %16, align 8, !tbaa !9
  store double %69, ptr %66, align 8, !tbaa !9
  %70 = load double, ptr %18, align 8, !tbaa !9
  %71 = add nuw nsw i64 %.09391026, 1
  %72 = getelementptr double, ptr %4, i64 %.09391026
  %73 = load double, ptr %72, align 8, !tbaa !9
  %74 = fmul double %70, %73
  store double %74, ptr %67, align 8, !tbaa !9
  %75 = load double, ptr %17, align 8, !tbaa !9
  %76 = load double, ptr %72, align 8, !tbaa !9
  %77 = fmul double %75, %76
  store double %77, ptr %72, align 8, !tbaa !9
  %78 = load i64, ptr %3, align 8, !tbaa !5
  %79 = icmp eq i64 %78, 1
  br i1 %79, label %80, label %83

80:                                               ; preds = %.lr.ph
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.09391026
  %81 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %.09391026
  %82 = call i32 @f2c_zdrot(ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %81, ptr noundef nonnull @c__1, ptr noundef nonnull %17, ptr noundef nonnull %18) #5
  br label %86

83:                                               ; preds = %.lr.ph
  %.idx1014 = shl i64 %.09391026, 4
  %84 = getelementptr i8, ptr %32, i64 %.idx1014
  %85 = getelementptr i8, ptr %84, i64 -8
  store double %75, ptr %85, align 8, !tbaa !9
  store double %70, ptr %84, align 8, !tbaa !9
  br label %86

86:                                               ; preds = %80, %83
  %.not972.not = icmp slt i64 %.09391026, %65
  br i1 %.not972.not, label %.lr.ph, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %86, %64
  %87 = load i64, ptr %3, align 8, !tbaa !5
  %88 = icmp sgt i64 %87, 1
  br i1 %88, label %.lr.ph1039, label %.loopexit1023

.lr.ph1039:                                       ; preds = %._crit_edge
  store i64 %87, ptr %15, align 8, !tbaa !5
  %89 = load i64, ptr %2, align 8, !tbaa !5
  %90 = icmp sgt i64 %89, 1
  br i1 %90, label %.lr.ph1039.split, label %.loopexit1023

.lr.ph1039.splitthread-pre-split:                 ; preds = %._crit_edge1031
  %91 = add nuw nsw i64 %.19401037, 1
  %.pr = load i64, ptr %2, align 8, !tbaa !5
  br label %.lr.ph1039.split

.lr.ph1039.split:                                 ; preds = %.lr.ph1039, %.lr.ph1039.splitthread-pre-split
  %92 = phi i64 [ %.pr, %.lr.ph1039.splitthread-pre-split ], [ %89, %.lr.ph1039 ]
  %.19401037 = phi i64 [ %91, %.lr.ph1039.splitthread-pre-split ], [ 1, %.lr.ph1039 ]
  %.not1012.not1027 = icmp sgt i64 %92, 1
  br i1 %.not1012.not1027, label %.lr.ph1030, label %._crit_edge1031

.lr.ph1030:                                       ; preds = %.lr.ph1039.split
  %93 = mul nsw i64 %.19401037, %28
  %invariant.gep1032 = getelementptr %struct.doublecomplex, ptr %30, i64 %93
  br label %94

94:                                               ; preds = %.lr.ph1030, %94
  %.09481028 = phi i64 [ 1, %.lr.ph1030 ], [ %99, %94 ]
  %.idx = shl i64 %.09481028, 4
  %95 = getelementptr i8, ptr %32, i64 %.idx
  %96 = getelementptr i8, ptr %95, i64 -8
  %97 = load double, ptr %96, align 8, !tbaa !9
  store double %97, ptr %17, align 8, !tbaa !9
  %98 = load double, ptr %95, align 8, !tbaa !9
  store double %98, ptr %18, align 8, !tbaa !9
  %gep1033 = getelementptr %struct.doublecomplex, ptr %invariant.gep1032, i64 %.09481028
  %99 = add nuw nsw i64 %.09481028, 1
  %gep1035 = getelementptr %struct.doublecomplex, ptr %invariant.gep1032, i64 %99
  %100 = call i32 @f2c_zdrot(ptr noundef nonnull @c__1, ptr noundef %gep1033, ptr noundef nonnull @c__1, ptr noundef %gep1035, ptr noundef nonnull @c__1, ptr noundef nonnull %17, ptr noundef nonnull %18) #5
  %exitcond.not = icmp eq i64 %99, %92
  br i1 %exitcond.not, label %._crit_edge1031, label %94, !llvm.loop !14

._crit_edge1031:                                  ; preds = %94, %.lr.ph1039.split
  %.not973.not = icmp slt i64 %.19401037, %87
  br i1 %.not973.not, label %.lr.ph1039.splitthread-pre-split, label %.loopexit1023, !llvm.loop !15

.loopexit1023:                                    ; preds = %._crit_edge1031, %.lr.ph1039, %._crit_edge, %61
  %101 = load i64, ptr %2, align 8, !tbaa !5
  %102 = add nsw i64 %101, -1
  store i64 %102, ptr %19, align 8, !tbaa !5
  %103 = call double @dlanst_(ptr noundef nonnull @.str.4, ptr noundef nonnull %2, ptr noundef %4, ptr noundef %5) #5
  store double %103, ptr %25, align 8, !tbaa !9
  %104 = fcmp oeq double %103, 0.000000e+00
  br i1 %104, label %105, label %107

105:                                              ; preds = %.loopexit1023
  %106 = call i32 @zlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %6, ptr noundef nonnull %7) #5
  br label %.loopexit1021

107:                                              ; preds = %.loopexit1023
  %108 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b10, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %13) #5
  %109 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b10, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %19, ptr noundef nonnull %13) #5
  %110 = load i64, ptr %2, align 8, !tbaa !5
  %111 = load i64, ptr %1, align 8, !tbaa !5
  %.not974 = icmp sgt i64 %110, %111
  br i1 %.not974, label %364, label %112

112:                                              ; preds = %107
  %113 = mul nsw i64 %110, %110
  %reass.add997 = shl nuw i64 %113, 1
  %114 = or disjoint i64 %reass.add997, 1
  %115 = load i64, ptr %3, align 8, !tbaa !5
  %116 = mul nsw i64 %115, %110
  %117 = add nsw i64 %116, %114
  %118 = add nsw i64 %117, %116
  %119 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull @c_b10, ptr noundef %11, ptr noundef nonnull %2) #5
  %120 = getelementptr double, ptr %11, i64 %113
  %121 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull @c_b10, ptr noundef %120, ptr noundef nonnull %2) #5
  %122 = getelementptr double, ptr %11, i64 %reass.add997
  %123 = call i32 @dlasdq_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__0, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c__0, ptr noundef %4, ptr noundef %5, ptr noundef %120, ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %2, ptr noundef %122, ptr noundef nonnull @c__1, ptr noundef %122, ptr noundef nonnull %13) #5
  %124 = load i64, ptr %13, align 8, !tbaa !5
  %.not998 = icmp eq i64 %124, 0
  br i1 %.not998, label %125, label %.loopexit1021

125:                                              ; preds = %112
  %126 = add nsw i64 %118, -1
  %127 = load i64, ptr %3, align 8, !tbaa !5
  %.not9991048 = icmp slt i64 %127, 1
  br i1 %.not9991048, label %._crit_edge1053, label %.lr.ph1052

.lr.ph1052:                                       ; preds = %125
  %128 = load i64, ptr %2, align 8, !tbaa !5
  %.not10111040 = icmp slt i64 %128, 1
  br i1 %.not10111040, label %._crit_edge1053, label %.lr.ph1044.preheader

.lr.ph1044.preheader:                             ; preds = %.lr.ph1052
  %129 = shl i64 %128, 3
  %scevgep1354 = getelementptr i8, ptr %11, i64 %129
  %130 = add nuw i64 %127, 1152921504606846975
  %131 = mul i64 %28, %130
  %132 = add i64 %131, %128
  %133 = shl i64 %132, 4
  %134 = getelementptr i8, ptr %6, i64 %133
  %scevgep1356 = getelementptr i8, ptr %134, i64 -8
  %135 = add nuw i64 %128, 1
  %min.iters.check = icmp ult i64 %128, 6
  %.mask = and i64 %28, 576460752303423488
  %stride.check = icmp ne i64 %.mask, 0
  %n.vec = and i64 %128, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %128, %n.vec
  %invariant.gep1704 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1708 = getelementptr i8, ptr %11, i64 16
  %invariant.gep1710 = getelementptr i8, ptr %11, i64 24
  br label %.lr.ph1044

.lr.ph1044:                                       ; preds = %.lr.ph1044.preheader, %._crit_edge1045
  %.09261050 = phi i64 [ %171, %._crit_edge1045 ], [ 1, %.lr.ph1044.preheader ]
  %.19491049 = phi i64 [ %.lcssa1353, %._crit_edge1045 ], [ %126, %.lr.ph1044.preheader ]
  %136 = mul nsw i64 %.09261050, %28
  %invariant.gep1046 = getelementptr %struct.doublecomplex, ptr %30, i64 %136
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph1044
  %137 = shl i64 %.19491049, 3
  %scevgep = getelementptr i8, ptr %11, i64 %137
  %scevgep1355 = getelementptr i8, ptr %scevgep1354, i64 %137
  %bound0 = icmp ult ptr %scevgep, %scevgep1356
  %bound1 = icmp ugt ptr %scevgep1355, %6
  %found.conflict = and i1 %bound0, %bound1
  %138 = or i1 %found.conflict, %stride.check
  br i1 %138, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %ind.end1357 = add i64 %.19491049, %n.vec
  %invariant.gep1700 = getelementptr i8, ptr %invariant.gep1046, i64 64
  %139 = getelementptr double, ptr %11, i64 %.19491049
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %140 = or disjoint i64 %index, 2
  %141 = or disjoint i64 %index, 3
  %142 = getelementptr %struct.doublecomplex, ptr %invariant.gep1046, i64 %offset.idx
  %143 = getelementptr %struct.doublecomplex, ptr %invariant.gep1046, i64 %140
  %144 = getelementptr %struct.doublecomplex, ptr %invariant.gep1046, i64 %141
  %gep1701 = getelementptr %struct.doublecomplex, ptr %invariant.gep1700, i64 %index
  %145 = load double, ptr %142, align 8, !tbaa !17, !alias.scope !19
  %146 = load double, ptr %143, align 8, !tbaa !17, !alias.scope !19
  %147 = insertelement <2 x double> poison, double %145, i64 0
  %148 = insertelement <2 x double> %147, double %146, i64 1
  %149 = load double, ptr %144, align 8, !tbaa !17, !alias.scope !19
  %150 = load double, ptr %gep1701, align 8, !tbaa !17, !alias.scope !19
  %151 = insertelement <2 x double> poison, double %149, i64 0
  %152 = insertelement <2 x double> %151, double %150, i64 1
  %153 = getelementptr double, ptr %139, i64 %index
  %154 = getelementptr i8, ptr %153, i64 16
  store <2 x double> %148, ptr %153, align 8, !tbaa !9, !alias.scope !22, !noalias !19
  store <2 x double> %152, ptr %154, align 8, !tbaa !9, !alias.scope !22, !noalias !19
  %index.next = add nuw i64 %index, 4
  %155 = icmp eq i64 %index.next, %n.vec
  br i1 %155, label %middle.block, label %vector.body, !llvm.loop !24

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge1045, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph1044
  %.09131042.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph1044 ], [ %ind.end, %middle.block ]
  %.29501041.ph = phi i64 [ %.19491049, %vector.memcheck ], [ %.19491049, %.lr.ph1044 ], [ %ind.end1357, %middle.block ]
  %156 = sub i64 %135, %.09131042.ph
  %157 = sub i64 %128, %.09131042.ph
  %xtraiter = and i64 %156, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.09131042.prol = phi i64 [ %161, %scalar.ph.prol ], [ %.09131042.ph, %scalar.ph.preheader ]
  %.29501041.prol = phi i64 [ %158, %scalar.ph.prol ], [ %.29501041.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %158 = add nsw i64 %.29501041.prol, 1
  %gep1047.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1046, i64 %.09131042.prol
  %159 = load double, ptr %gep1047.prol, align 8, !tbaa !17
  %160 = getelementptr double, ptr %11, i64 %.29501041.prol
  store double %159, ptr %160, align 8, !tbaa !9
  %161 = add nuw i64 %.09131042.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !27

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa1665.unr = phi i64 [ poison, %scalar.ph.preheader ], [ %158, %scalar.ph.prol ]
  %.09131042.unr = phi i64 [ %.09131042.ph, %scalar.ph.preheader ], [ %161, %scalar.ph.prol ]
  %.29501041.unr = phi i64 [ %.29501041.ph, %scalar.ph.preheader ], [ %158, %scalar.ph.prol ]
  %162 = icmp ult i64 %157, 3
  br i1 %162, label %._crit_edge1045, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep1702 = getelementptr i8, ptr %invariant.gep1046, i64 16
  %invariant.gep1706 = getelementptr i8, ptr %invariant.gep1046, i64 32
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.09131042 = phi i64 [ %.09131042.unr, %scalar.ph.preheader.new ], [ %170, %scalar.ph ]
  %.29501041 = phi i64 [ %.29501041.unr, %scalar.ph.preheader.new ], [ %168, %scalar.ph ]
  %gep1047 = getelementptr %struct.doublecomplex, ptr %invariant.gep1046, i64 %.09131042
  %163 = load double, ptr %gep1047, align 8, !tbaa !17
  %164 = getelementptr double, ptr %11, i64 %.29501041
  store double %163, ptr %164, align 8, !tbaa !9
  %gep1703 = getelementptr %struct.doublecomplex, ptr %invariant.gep1702, i64 %.09131042
  %165 = load double, ptr %gep1703, align 8, !tbaa !17
  %gep1705 = getelementptr double, ptr %invariant.gep1704, i64 %.29501041
  store double %165, ptr %gep1705, align 8, !tbaa !9
  %gep1707 = getelementptr %struct.doublecomplex, ptr %invariant.gep1706, i64 %.09131042
  %166 = load double, ptr %gep1707, align 8, !tbaa !17
  %gep1709 = getelementptr double, ptr %invariant.gep1708, i64 %.29501041
  store double %166, ptr %gep1709, align 8, !tbaa !9
  %167 = add nuw i64 %.09131042, 3
  %168 = add nsw i64 %.29501041, 4
  %gep1047.3 = getelementptr %struct.doublecomplex, ptr %invariant.gep1046, i64 %167
  %169 = load double, ptr %gep1047.3, align 8, !tbaa !17
  %gep1711 = getelementptr double, ptr %invariant.gep1710, i64 %.29501041
  store double %169, ptr %gep1711, align 8, !tbaa !9
  %170 = add nuw i64 %.09131042, 4
  %exitcond1299.not.3 = icmp eq i64 %167, %128
  br i1 %exitcond1299.not.3, label %._crit_edge1045, label %scalar.ph, !llvm.loop !29

._crit_edge1045:                                  ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %.lcssa1353 = phi i64 [ %ind.end1357, %middle.block ], [ %.lcssa1665.unr, %scalar.ph.prol.loopexit ], [ %168, %scalar.ph ]
  %171 = add nuw i64 %.09261050, 1
  %exitcond1300.not = icmp eq i64 %.09261050, %127
  br i1 %exitcond1300.not, label %._crit_edge1053, label %.lr.ph1044, !llvm.loop !30

._crit_edge1053:                                  ; preds = %._crit_edge1045, %.lr.ph1052, %125
  %172 = getelementptr inbounds double, ptr %32, i64 %118
  %173 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @c_b10, ptr noundef %11, ptr noundef nonnull %2, ptr noundef nonnull %172, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef %122, ptr noundef nonnull %2) #5
  %174 = load i64, ptr %3, align 8, !tbaa !5
  %.not10001063 = icmp slt i64 %174, 1
  br i1 %.not10001063, label %._crit_edge1068, label %.lr.ph1067

.lr.ph1067:                                       ; preds = %._crit_edge1053
  %175 = load i64, ptr %2, align 8, !tbaa !5
  %176 = icmp slt i64 %175, 1
  br i1 %176, label %._crit_edge1068, label %.lr.ph1067.split

.lr.ph1067.splitthread-pre-split:                 ; preds = %._crit_edge1059
  %177 = add nuw nsw i64 %.19271065, 1
  %.pr1318 = load i64, ptr %2, align 8, !tbaa !5
  br label %.lr.ph1067.split

.lr.ph1067.split:                                 ; preds = %.lr.ph1067, %.lr.ph1067.splitthread-pre-split
  %178 = phi i64 [ %.pr1318, %.lr.ph1067.splitthread-pre-split ], [ %175, %.lr.ph1067 ]
  %.19271065 = phi i64 [ %177, %.lr.ph1067.splitthread-pre-split ], [ 1, %.lr.ph1067 ]
  %.39511064 = phi i64 [ %.4952.lcssa, %.lr.ph1067.splitthread-pre-split ], [ %126, %.lr.ph1067 ]
  %.not10101054 = icmp slt i64 %178, 1
  br i1 %.not10101054, label %._crit_edge1059, label %.lr.ph1058

.lr.ph1058:                                       ; preds = %.lr.ph1067.split
  %179 = mul nsw i64 %.19271065, %28
  %invariant.gep1061 = getelementptr %struct.doublecomplex, ptr %30, i64 %179
  br label %180

180:                                              ; preds = %.lr.ph1058, %180
  %.19141056 = phi i64 [ 1, %.lr.ph1058 ], [ %184, %180 ]
  %.49521055 = phi i64 [ %.39511064, %.lr.ph1058 ], [ %181, %180 ]
  %181 = add nsw i64 %.49521055, 1
  %gep1062 = getelementptr %struct.doublecomplex, ptr %invariant.gep1061, i64 %.19141056
  %182 = call double @d_imag(ptr noundef %gep1062) #5
  %183 = getelementptr double, ptr %11, i64 %.49521055
  store double %182, ptr %183, align 8, !tbaa !9
  %184 = add nuw i64 %.19141056, 1
  %exitcond1301.not = icmp eq i64 %.19141056, %178
  br i1 %exitcond1301.not, label %._crit_edge1059, label %180, !llvm.loop !31

._crit_edge1059:                                  ; preds = %180, %.lr.ph1067.split
  %.4952.lcssa = phi i64 [ %.39511064, %.lr.ph1067.split ], [ %181, %180 ]
  %.not1000.not = icmp slt i64 %.19271065, %174
  br i1 %.not1000.not, label %.lr.ph1067.splitthread-pre-split, label %._crit_edge1068, !llvm.loop !32

._crit_edge1068:                                  ; preds = %._crit_edge1059, %.lr.ph1067, %._crit_edge1053
  %185 = getelementptr inbounds double, ptr %32, i64 %117
  %186 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @c_b10, ptr noundef %11, ptr noundef nonnull %2, ptr noundef nonnull %172, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull %185, ptr noundef nonnull %2) #5
  %187 = add nsw i64 %117, -1
  %188 = load i64, ptr %3, align 8, !tbaa !5
  %.not10011080 = icmp slt i64 %188, 1
  br i1 %.not10011080, label %._crit_edge1086, label %.lr.ph1085

.lr.ph1085:                                       ; preds = %._crit_edge1068
  %189 = load i64, ptr %2, align 8, !tbaa !5
  %.not10091069 = icmp slt i64 %189, 1
  br i1 %.not10091069, label %._crit_edge1086, label %.lr.ph1074.preheader

.lr.ph1074.preheader:                             ; preds = %.lr.ph1085
  %190 = add nsw i64 %189, -1
  %191 = shl i64 %28, 4
  %192 = add nuw i64 %188, 1152921504606846975
  %193 = mul i64 %28, %192
  %194 = add i64 %193, %189
  %195 = shl i64 %194, 4
  %scevgep1366 = getelementptr i8, ptr %6, i64 %195
  %196 = shl i64 %189, 3
  %scevgep1368 = getelementptr i8, ptr %11, i64 %196
  %scevgep1371 = getelementptr i8, ptr %11, i64 %196
  %min.iters.check1383 = icmp ult i64 %189, 22
  %mul.result = shl i64 %190, 4
  %mul.result1363 = shl i64 %190, 4
  %mul.overflow1364 = icmp ugt i64 %190, 1152921504606846975
  %.mask1645 = and i64 %28, 576460752303423488
  %stride.check1380 = icmp ne i64 %.mask1645, 0
  %n.vec1386 = and i64 %189, 2305843009213693950
  %ind.end1391 = or i64 %189, 1
  %cmp.n1400 = icmp eq i64 %189, %n.vec1386
  %xtraiter1666 = and i64 %189, 1
  %lcmp.mod1667.not = icmp eq i64 %xtraiter1666, 0
  %invariant.gep1712 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1714 = getelementptr i8, ptr %11, i64 8
  br label %.lr.ph1074

.lr.ph1074:                                       ; preds = %.lr.ph1074.preheader, %._crit_edge1075
  %indvar = phi i64 [ 0, %.lr.ph1074.preheader ], [ %indvar.next, %._crit_edge1075 ]
  %.09021083 = phi i64 [ %reass.add997, %.lr.ph1074.preheader ], [ %.lcssa1351, %._crit_edge1075 ]
  %.09031082 = phi i64 [ %187, %.lr.ph1074.preheader ], [ %.lcssa1350, %._crit_edge1075 ]
  %.29281081 = phi i64 [ 1, %.lr.ph1074.preheader ], [ %236, %._crit_edge1075 ]
  %197 = mul nsw i64 %.29281081, %28
  %invariant.gep1078 = getelementptr %struct.doublecomplex, ptr %30, i64 %197
  br i1 %min.iters.check1383, label %scalar.ph1382.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph1074
  %198 = mul i64 %191, %indvar
  %199 = or disjoint i64 %198, 8
  %scevgep1361 = getelementptr i8, ptr %6, i64 %199
  %scevgep1360 = getelementptr i8, ptr %6, i64 %198
  %200 = getelementptr i8, ptr %scevgep1360, i64 %mul.result
  %201 = icmp ult ptr %200, %scevgep1360
  %202 = getelementptr i8, ptr %scevgep1361, i64 %mul.result1363
  %203 = icmp ult ptr %202, %scevgep1361
  %204 = or i1 %203, %mul.overflow1364
  %205 = or i1 %201, %204
  br i1 %205, label %scalar.ph1382.preheader, label %vector.memcheck1365

vector.memcheck1365:                              ; preds = %vector.scevcheck
  %206 = shl i64 %.09031082, 3
  %scevgep1367 = getelementptr i8, ptr %11, i64 %206
  %scevgep1369 = getelementptr i8, ptr %scevgep1368, i64 %206
  %207 = shl i64 %.09021083, 3
  %scevgep1370 = getelementptr i8, ptr %11, i64 %207
  %scevgep1372 = getelementptr i8, ptr %scevgep1371, i64 %207
  %bound01373 = icmp ugt ptr %scevgep1369, %6
  %bound11374 = icmp ult ptr %scevgep1367, %scevgep1366
  %found.conflict1375 = and i1 %bound01373, %bound11374
  %bound01377 = icmp ugt ptr %scevgep1372, %6
  %bound11378 = icmp ult ptr %scevgep1370, %scevgep1366
  %found.conflict1379 = and i1 %bound01377, %bound11378
  %208 = or i1 %found.conflict1379, %stride.check1380
  %conflict.rdx = or i1 %found.conflict1375, %208
  br i1 %conflict.rdx, label %scalar.ph1382.preheader, label %vector.ph1384

vector.ph1384:                                    ; preds = %vector.memcheck1365
  %ind.end1387 = add i64 %.09021083, %n.vec1386
  %ind.end1389 = add i64 %.09031082, %n.vec1386
  %209 = getelementptr double, ptr %11, i64 %.09021083
  %210 = getelementptr double, ptr %11, i64 %.09031082
  br label %vector.body1393

vector.body1393:                                  ; preds = %vector.body1393, %vector.ph1384
  %index1394 = phi i64 [ 0, %vector.ph1384 ], [ %index.next1399, %vector.body1393 ]
  %offset.idx1397 = or disjoint i64 %index1394, 1
  %211 = getelementptr double, ptr %209, i64 %index1394
  %wide.load = load <2 x double>, ptr %211, align 8, !tbaa !9, !alias.scope !33
  %212 = getelementptr double, ptr %210, i64 %index1394
  %wide.load1398 = load <2 x double>, ptr %212, align 8, !tbaa !9, !alias.scope !36
  %213 = getelementptr %struct.doublecomplex, ptr %invariant.gep1078, i64 %offset.idx1397
  %interleaved.vec = shufflevector <2 x double> %wide.load, <2 x double> %wide.load1398, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %213, align 8, !tbaa !9
  %index.next1399 = add nuw i64 %index1394, 2
  %214 = icmp eq i64 %index.next1399, %n.vec1386
  br i1 %214, label %middle.block1381, label %vector.body1393, !llvm.loop !38

middle.block1381:                                 ; preds = %vector.body1393
  br i1 %cmp.n1400, label %._crit_edge1075, label %scalar.ph1382.preheader

scalar.ph1382.preheader:                          ; preds = %middle.block1381, %vector.memcheck1365, %vector.scevcheck, %.lr.ph1074
  %.11072.ph = phi i64 [ %.09021083, %vector.memcheck1365 ], [ %.09021083, %vector.scevcheck ], [ %.09021083, %.lr.ph1074 ], [ %ind.end1387, %middle.block1381 ]
  %.19041071.ph = phi i64 [ %.09031082, %vector.memcheck1365 ], [ %.09031082, %vector.scevcheck ], [ %.09031082, %.lr.ph1074 ], [ %ind.end1389, %middle.block1381 ]
  %.29151070.ph = phi i64 [ 1, %vector.memcheck1365 ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph1074 ], [ %ind.end1391, %middle.block1381 ]
  br i1 %lcmp.mod1667.not, label %scalar.ph1382.prol.loopexit, label %scalar.ph1382.prol

scalar.ph1382.prol:                               ; preds = %scalar.ph1382.preheader
  %215 = add nsw i64 %.11072.ph, 1
  %216 = add nsw i64 %.19041071.ph, 1
  %217 = getelementptr double, ptr %11, i64 %.11072.ph
  %218 = load double, ptr %217, align 8, !tbaa !9
  %219 = getelementptr double, ptr %11, i64 %.19041071.ph
  %220 = load double, ptr %219, align 8, !tbaa !9
  %gep1079.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1078, i64 %.29151070.ph
  store double %218, ptr %gep1079.prol, align 8, !tbaa !17
  %221 = getelementptr inbounds i8, ptr %gep1079.prol, i64 8
  store double %220, ptr %221, align 8, !tbaa !39
  %222 = add nuw nsw i64 %.29151070.ph, 1
  br label %scalar.ph1382.prol.loopexit

scalar.ph1382.prol.loopexit:                      ; preds = %scalar.ph1382.prol, %scalar.ph1382.preheader
  %.lcssa1663.unr = phi i64 [ poison, %scalar.ph1382.preheader ], [ %215, %scalar.ph1382.prol ]
  %.lcssa1662.unr = phi i64 [ poison, %scalar.ph1382.preheader ], [ %216, %scalar.ph1382.prol ]
  %.11072.unr = phi i64 [ %.11072.ph, %scalar.ph1382.preheader ], [ %215, %scalar.ph1382.prol ]
  %.19041071.unr = phi i64 [ %.19041071.ph, %scalar.ph1382.preheader ], [ %216, %scalar.ph1382.prol ]
  %.29151070.unr = phi i64 [ %.29151070.ph, %scalar.ph1382.preheader ], [ %222, %scalar.ph1382.prol ]
  %223 = icmp eq i64 %189, %.29151070.ph
  br i1 %223, label %._crit_edge1075, label %scalar.ph1382

scalar.ph1382:                                    ; preds = %scalar.ph1382.prol.loopexit, %scalar.ph1382
  %.11072 = phi i64 [ %230, %scalar.ph1382 ], [ %.11072.unr, %scalar.ph1382.prol.loopexit ]
  %.19041071 = phi i64 [ %231, %scalar.ph1382 ], [ %.19041071.unr, %scalar.ph1382.prol.loopexit ]
  %.29151070 = phi i64 [ %235, %scalar.ph1382 ], [ %.29151070.unr, %scalar.ph1382.prol.loopexit ]
  %224 = getelementptr double, ptr %11, i64 %.11072
  %225 = load double, ptr %224, align 8, !tbaa !9
  %226 = getelementptr double, ptr %11, i64 %.19041071
  %227 = load double, ptr %226, align 8, !tbaa !9
  %gep1079 = getelementptr %struct.doublecomplex, ptr %invariant.gep1078, i64 %.29151070
  store double %225, ptr %gep1079, align 8, !tbaa !17
  %228 = getelementptr inbounds i8, ptr %gep1079, i64 8
  store double %227, ptr %228, align 8, !tbaa !39
  %229 = add nuw i64 %.29151070, 1
  %230 = add nsw i64 %.11072, 2
  %231 = add nsw i64 %.19041071, 2
  %gep1713 = getelementptr double, ptr %invariant.gep1712, i64 %.11072
  %232 = load double, ptr %gep1713, align 8, !tbaa !9
  %gep1715 = getelementptr double, ptr %invariant.gep1714, i64 %.19041071
  %233 = load double, ptr %gep1715, align 8, !tbaa !9
  %gep1079.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep1078, i64 %229
  store double %232, ptr %gep1079.1, align 8, !tbaa !17
  %234 = getelementptr inbounds i8, ptr %gep1079.1, i64 8
  store double %233, ptr %234, align 8, !tbaa !39
  %235 = add nuw i64 %.29151070, 2
  %exitcond1302.not.1 = icmp eq i64 %229, %189
  br i1 %exitcond1302.not.1, label %._crit_edge1075, label %scalar.ph1382, !llvm.loop !40

._crit_edge1075:                                  ; preds = %scalar.ph1382.prol.loopexit, %scalar.ph1382, %middle.block1381
  %.lcssa1351 = phi i64 [ %ind.end1387, %middle.block1381 ], [ %.lcssa1663.unr, %scalar.ph1382.prol.loopexit ], [ %230, %scalar.ph1382 ]
  %.lcssa1350 = phi i64 [ %ind.end1389, %middle.block1381 ], [ %.lcssa1662.unr, %scalar.ph1382.prol.loopexit ], [ %231, %scalar.ph1382 ]
  %236 = add nuw i64 %.29281081, 1
  %exitcond1303.not = icmp eq i64 %.29281081, %188
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond1303.not, label %._crit_edge1086, label %.lr.ph1074, !llvm.loop !41

._crit_edge1086:                                  ; preds = %._crit_edge1075, %.lr.ph1085, %._crit_edge1068
  %237 = call i64 @f2c_idamax(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %238 = getelementptr inbounds double, ptr %26, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !9
  %240 = fcmp oge double %239, 0.000000e+00
  %241 = fneg double %239
  %242 = select i1 %240, double %239, double %241
  %243 = fmul double %.0938, %242
  %244 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep1087 = getelementptr i8, ptr %6, i64 -16
  %.not10021091 = icmp slt i64 %244, 1
  br i1 %.not10021091, label %._crit_edge1095, label %.lr.ph1094

.lr.ph1094:                                       ; preds = %._crit_edge1086, %254
  %.29411092 = phi i64 [ %255, %254 ], [ 1, %._crit_edge1086 ]
  %245 = getelementptr inbounds double, ptr %26, i64 %.29411092
  %246 = load double, ptr %245, align 8, !tbaa !9
  %247 = fcmp ugt double %246, %243
  %gep1090 = getelementptr %struct.doublecomplex, ptr %invariant.gep1087, i64 %.29411092
  br i1 %247, label %250, label %248

248:                                              ; preds = %.lr.ph1094
  %249 = call i32 @zlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %gep1090, ptr noundef nonnull %7) #5
  br label %254

250:                                              ; preds = %.lr.ph1094
  %251 = call i32 @zlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %245, ptr noundef nonnull @c_b10, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %gep1090, ptr noundef nonnull %7, ptr noundef nonnull %13) #5
  %252 = load i64, ptr %9, align 8, !tbaa !5
  %253 = add nsw i64 %252, 1
  store i64 %253, ptr %9, align 8, !tbaa !5
  br label %254

254:                                              ; preds = %248, %250
  %255 = add nuw nsw i64 %.29411092, 1
  %.not1002.not = icmp slt i64 %.29411092, %244
  br i1 %.not1002.not, label %.lr.ph1094, label %._crit_edge1095, !llvm.loop !42

._crit_edge1095:                                  ; preds = %254, %._crit_edge1086
  %256 = load i64, ptr %3, align 8, !tbaa !5
  %.not10031105 = icmp slt i64 %256, 1
  br i1 %.not10031105, label %._crit_edge1110, label %.lr.ph1109

.lr.ph1109:                                       ; preds = %._crit_edge1095
  %257 = load i64, ptr %2, align 8, !tbaa !5
  %.not10081096 = icmp slt i64 %257, 1
  br i1 %.not10081096, label %._crit_edge1110, label %.lr.ph1100.preheader

.lr.ph1100.preheader:                             ; preds = %.lr.ph1109
  %258 = shl i64 %257, 3
  %scevgep1403 = getelementptr i8, ptr %11, i64 %258
  %259 = add nuw i64 %256, 1152921504606846975
  %260 = mul i64 %28, %259
  %261 = add i64 %260, %257
  %262 = shl i64 %261, 4
  %263 = getelementptr i8, ptr %6, i64 %262
  %scevgep1405 = getelementptr i8, ptr %263, i64 -8
  %264 = add nuw i64 %257, 1
  %min.iters.check1412 = icmp ult i64 %257, 6
  %.mask1646 = and i64 %28, 576460752303423488
  %stride.check1409 = icmp ne i64 %.mask1646, 0
  %n.vec1415 = and i64 %257, 9223372036854775804
  %ind.end1416 = or disjoint i64 %n.vec1415, 1
  %cmp.n1425 = icmp eq i64 %257, %n.vec1415
  %invariant.gep1720 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1724 = getelementptr i8, ptr %11, i64 16
  %invariant.gep1726 = getelementptr i8, ptr %11, i64 24
  br label %.lr.ph1100

.lr.ph1100:                                       ; preds = %.lr.ph1100.preheader, %._crit_edge1101
  %.39291107 = phi i64 [ %300, %._crit_edge1101 ], [ 1, %.lr.ph1100.preheader ]
  %.59531106 = phi i64 [ %.lcssa1349, %._crit_edge1101 ], [ %126, %.lr.ph1100.preheader ]
  %265 = mul nsw i64 %.39291107, %28
  %invariant.gep1103 = getelementptr %struct.doublecomplex, ptr %30, i64 %265
  br i1 %min.iters.check1412, label %scalar.ph1411.preheader, label %vector.memcheck1401

vector.memcheck1401:                              ; preds = %.lr.ph1100
  %266 = shl i64 %.59531106, 3
  %scevgep1402 = getelementptr i8, ptr %11, i64 %266
  %scevgep1404 = getelementptr i8, ptr %scevgep1403, i64 %266
  %bound01406 = icmp ult ptr %scevgep1402, %scevgep1405
  %bound11407 = icmp ugt ptr %scevgep1404, %6
  %found.conflict1408 = and i1 %bound01406, %bound11407
  %267 = or i1 %found.conflict1408, %stride.check1409
  br i1 %267, label %scalar.ph1411.preheader, label %vector.ph1413

vector.ph1413:                                    ; preds = %vector.memcheck1401
  %ind.end1418 = add i64 %.59531106, %n.vec1415
  %invariant.gep1716 = getelementptr i8, ptr %invariant.gep1103, i64 64
  %268 = getelementptr double, ptr %11, i64 %.59531106
  br label %vector.body1420

vector.body1420:                                  ; preds = %vector.body1420, %vector.ph1413
  %index1421 = phi i64 [ 0, %vector.ph1413 ], [ %index.next1424, %vector.body1420 ]
  %offset.idx1422 = or disjoint i64 %index1421, 1
  %269 = or disjoint i64 %index1421, 2
  %270 = or disjoint i64 %index1421, 3
  %271 = getelementptr %struct.doublecomplex, ptr %invariant.gep1103, i64 %offset.idx1422
  %272 = getelementptr %struct.doublecomplex, ptr %invariant.gep1103, i64 %269
  %273 = getelementptr %struct.doublecomplex, ptr %invariant.gep1103, i64 %270
  %gep1717 = getelementptr %struct.doublecomplex, ptr %invariant.gep1716, i64 %index1421
  %274 = load double, ptr %271, align 8, !tbaa !17, !alias.scope !43
  %275 = load double, ptr %272, align 8, !tbaa !17, !alias.scope !43
  %276 = insertelement <2 x double> poison, double %274, i64 0
  %277 = insertelement <2 x double> %276, double %275, i64 1
  %278 = load double, ptr %273, align 8, !tbaa !17, !alias.scope !43
  %279 = load double, ptr %gep1717, align 8, !tbaa !17, !alias.scope !43
  %280 = insertelement <2 x double> poison, double %278, i64 0
  %281 = insertelement <2 x double> %280, double %279, i64 1
  %282 = getelementptr double, ptr %268, i64 %index1421
  %283 = getelementptr i8, ptr %282, i64 16
  store <2 x double> %277, ptr %282, align 8, !tbaa !9, !alias.scope !46, !noalias !43
  store <2 x double> %281, ptr %283, align 8, !tbaa !9, !alias.scope !46, !noalias !43
  %index.next1424 = add nuw i64 %index1421, 4
  %284 = icmp eq i64 %index.next1424, %n.vec1415
  br i1 %284, label %middle.block1410, label %vector.body1420, !llvm.loop !48

middle.block1410:                                 ; preds = %vector.body1420
  br i1 %cmp.n1425, label %._crit_edge1101, label %scalar.ph1411.preheader

scalar.ph1411.preheader:                          ; preds = %middle.block1410, %vector.memcheck1401, %.lr.ph1100
  %.39161098.ph = phi i64 [ 1, %vector.memcheck1401 ], [ 1, %.lr.ph1100 ], [ %ind.end1416, %middle.block1410 ]
  %.69541097.ph = phi i64 [ %.59531106, %vector.memcheck1401 ], [ %.59531106, %.lr.ph1100 ], [ %ind.end1418, %middle.block1410 ]
  %285 = sub i64 %264, %.39161098.ph
  %286 = sub i64 %257, %.39161098.ph
  %xtraiter1669 = and i64 %285, 3
  %lcmp.mod1670.not = icmp eq i64 %xtraiter1669, 0
  br i1 %lcmp.mod1670.not, label %scalar.ph1411.prol.loopexit, label %scalar.ph1411.prol

scalar.ph1411.prol:                               ; preds = %scalar.ph1411.preheader, %scalar.ph1411.prol
  %.39161098.prol = phi i64 [ %290, %scalar.ph1411.prol ], [ %.39161098.ph, %scalar.ph1411.preheader ]
  %.69541097.prol = phi i64 [ %287, %scalar.ph1411.prol ], [ %.69541097.ph, %scalar.ph1411.preheader ]
  %prol.iter1671 = phi i64 [ %prol.iter1671.next, %scalar.ph1411.prol ], [ 0, %scalar.ph1411.preheader ]
  %287 = add nsw i64 %.69541097.prol, 1
  %gep1104.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1103, i64 %.39161098.prol
  %288 = load double, ptr %gep1104.prol, align 8, !tbaa !17
  %289 = getelementptr double, ptr %11, i64 %.69541097.prol
  store double %288, ptr %289, align 8, !tbaa !9
  %290 = add nuw i64 %.39161098.prol, 1
  %prol.iter1671.next = add i64 %prol.iter1671, 1
  %prol.iter1671.cmp.not = icmp eq i64 %prol.iter1671.next, %xtraiter1669
  br i1 %prol.iter1671.cmp.not, label %scalar.ph1411.prol.loopexit, label %scalar.ph1411.prol, !llvm.loop !49

scalar.ph1411.prol.loopexit:                      ; preds = %scalar.ph1411.prol, %scalar.ph1411.preheader
  %.lcssa1661.unr = phi i64 [ poison, %scalar.ph1411.preheader ], [ %287, %scalar.ph1411.prol ]
  %.39161098.unr = phi i64 [ %.39161098.ph, %scalar.ph1411.preheader ], [ %290, %scalar.ph1411.prol ]
  %.69541097.unr = phi i64 [ %.69541097.ph, %scalar.ph1411.preheader ], [ %287, %scalar.ph1411.prol ]
  %291 = icmp ult i64 %286, 3
  br i1 %291, label %._crit_edge1101, label %scalar.ph1411.preheader.new

scalar.ph1411.preheader.new:                      ; preds = %scalar.ph1411.prol.loopexit
  %invariant.gep1718 = getelementptr i8, ptr %invariant.gep1103, i64 16
  %invariant.gep1722 = getelementptr i8, ptr %invariant.gep1103, i64 32
  br label %scalar.ph1411

scalar.ph1411:                                    ; preds = %scalar.ph1411, %scalar.ph1411.preheader.new
  %.39161098 = phi i64 [ %.39161098.unr, %scalar.ph1411.preheader.new ], [ %299, %scalar.ph1411 ]
  %.69541097 = phi i64 [ %.69541097.unr, %scalar.ph1411.preheader.new ], [ %297, %scalar.ph1411 ]
  %gep1104 = getelementptr %struct.doublecomplex, ptr %invariant.gep1103, i64 %.39161098
  %292 = load double, ptr %gep1104, align 8, !tbaa !17
  %293 = getelementptr double, ptr %11, i64 %.69541097
  store double %292, ptr %293, align 8, !tbaa !9
  %gep1719 = getelementptr %struct.doublecomplex, ptr %invariant.gep1718, i64 %.39161098
  %294 = load double, ptr %gep1719, align 8, !tbaa !17
  %gep1721 = getelementptr double, ptr %invariant.gep1720, i64 %.69541097
  store double %294, ptr %gep1721, align 8, !tbaa !9
  %gep1723 = getelementptr %struct.doublecomplex, ptr %invariant.gep1722, i64 %.39161098
  %295 = load double, ptr %gep1723, align 8, !tbaa !17
  %gep1725 = getelementptr double, ptr %invariant.gep1724, i64 %.69541097
  store double %295, ptr %gep1725, align 8, !tbaa !9
  %296 = add nuw i64 %.39161098, 3
  %297 = add nsw i64 %.69541097, 4
  %gep1104.3 = getelementptr %struct.doublecomplex, ptr %invariant.gep1103, i64 %296
  %298 = load double, ptr %gep1104.3, align 8, !tbaa !17
  %gep1727 = getelementptr double, ptr %invariant.gep1726, i64 %.69541097
  store double %298, ptr %gep1727, align 8, !tbaa !9
  %299 = add nuw i64 %.39161098, 4
  %exitcond1304.not.3 = icmp eq i64 %296, %257
  br i1 %exitcond1304.not.3, label %._crit_edge1101, label %scalar.ph1411, !llvm.loop !50

._crit_edge1101:                                  ; preds = %scalar.ph1411.prol.loopexit, %scalar.ph1411, %middle.block1410
  %.lcssa1349 = phi i64 [ %ind.end1418, %middle.block1410 ], [ %.lcssa1661.unr, %scalar.ph1411.prol.loopexit ], [ %297, %scalar.ph1411 ]
  %300 = add nuw i64 %.39291107, 1
  %exitcond1305.not = icmp eq i64 %.39291107, %256
  br i1 %exitcond1305.not, label %._crit_edge1110, label %.lr.ph1100, !llvm.loop !51

._crit_edge1110:                                  ; preds = %._crit_edge1101, %.lr.ph1109, %._crit_edge1095
  %301 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @c_b10, ptr noundef %120, ptr noundef nonnull %2, ptr noundef nonnull %172, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef %122, ptr noundef nonnull %2) #5
  %302 = load i64, ptr %3, align 8, !tbaa !5
  %.not10041120 = icmp slt i64 %302, 1
  br i1 %.not10041120, label %._crit_edge1125, label %.lr.ph1124

.lr.ph1124:                                       ; preds = %._crit_edge1110, %._crit_edge1116
  %.49301122 = phi i64 [ %310, %._crit_edge1116 ], [ 1, %._crit_edge1110 ]
  %.79551121 = phi i64 [ %.8956.lcssa, %._crit_edge1116 ], [ %126, %._crit_edge1110 ]
  %303 = load i64, ptr %2, align 8, !tbaa !5
  %.not10071111 = icmp slt i64 %303, 1
  br i1 %.not10071111, label %._crit_edge1116, label %.lr.ph1115

.lr.ph1115:                                       ; preds = %.lr.ph1124
  %304 = mul nsw i64 %.49301122, %28
  %invariant.gep1118 = getelementptr %struct.doublecomplex, ptr %30, i64 %304
  br label %305

305:                                              ; preds = %.lr.ph1115, %305
  %.49171113 = phi i64 [ 1, %.lr.ph1115 ], [ %309, %305 ]
  %.89561112 = phi i64 [ %.79551121, %.lr.ph1115 ], [ %306, %305 ]
  %306 = add nsw i64 %.89561112, 1
  %gep1119 = getelementptr %struct.doublecomplex, ptr %invariant.gep1118, i64 %.49171113
  %307 = call double @d_imag(ptr noundef %gep1119) #5
  %308 = getelementptr double, ptr %11, i64 %.89561112
  store double %307, ptr %308, align 8, !tbaa !9
  %309 = add nuw i64 %.49171113, 1
  %exitcond1306.not = icmp eq i64 %.49171113, %303
  br i1 %exitcond1306.not, label %._crit_edge1116, label %305, !llvm.loop !52

._crit_edge1116:                                  ; preds = %305, %.lr.ph1124
  %.8956.lcssa = phi i64 [ %.79551121, %.lr.ph1124 ], [ %306, %305 ]
  %310 = add nuw nsw i64 %.49301122, 1
  %.not1004.not = icmp slt i64 %.49301122, %302
  br i1 %.not1004.not, label %.lr.ph1124, label %._crit_edge1125, !llvm.loop !53

._crit_edge1125:                                  ; preds = %._crit_edge1116, %._crit_edge1110
  %311 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @c_b10, ptr noundef %120, ptr noundef nonnull %2, ptr noundef nonnull %172, ptr noundef nonnull %2, ptr noundef nonnull @c_b35, ptr noundef nonnull %185, ptr noundef nonnull %2) #5
  %312 = load i64, ptr %3, align 8, !tbaa !5
  %.not10051137 = icmp slt i64 %312, 1
  br i1 %.not10051137, label %._crit_edge1143, label %.lr.ph1142

.lr.ph1142:                                       ; preds = %._crit_edge1125
  %313 = load i64, ptr %2, align 8, !tbaa !5
  %.not10061126 = icmp slt i64 %313, 1
  br i1 %.not10061126, label %._crit_edge1143, label %.lr.ph1131.preheader

.lr.ph1131.preheader:                             ; preds = %.lr.ph1142
  %314 = add nsw i64 %313, -1
  %315 = shl i64 %28, 4
  %316 = add nuw i64 %312, 1152921504606846975
  %317 = mul i64 %28, %316
  %318 = add i64 %317, %313
  %319 = shl i64 %318, 4
  %scevgep1438 = getelementptr i8, ptr %6, i64 %319
  %320 = shl i64 %313, 3
  %scevgep1440 = getelementptr i8, ptr %11, i64 %320
  %scevgep1443 = getelementptr i8, ptr %11, i64 %320
  %min.iters.check1456 = icmp ult i64 %313, 22
  %mul.result1431 = shl i64 %314, 4
  %mul.result1435 = shl i64 %314, 4
  %mul.overflow1436 = icmp ugt i64 %314, 1152921504606846975
  %.mask1647 = and i64 %28, 576460752303423488
  %stride.check1452 = icmp ne i64 %.mask1647, 0
  %n.vec1459 = and i64 %313, 2305843009213693950
  %ind.end1464 = or i64 %313, 1
  %cmp.n1475 = icmp eq i64 %313, %n.vec1459
  %xtraiter1672 = and i64 %313, 1
  %lcmp.mod1673.not = icmp eq i64 %xtraiter1672, 0
  %invariant.gep1728 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1730 = getelementptr i8, ptr %11, i64 8
  br label %.lr.ph1131

.lr.ph1131:                                       ; preds = %.lr.ph1131.preheader, %._crit_edge1132
  %indvar1427 = phi i64 [ 0, %.lr.ph1131.preheader ], [ %indvar.next1428, %._crit_edge1132 ]
  %.21140 = phi i64 [ %reass.add997, %.lr.ph1131.preheader ], [ %.lcssa1347, %._crit_edge1132 ]
  %.29051139 = phi i64 [ %187, %.lr.ph1131.preheader ], [ %.lcssa1346, %._crit_edge1132 ]
  %.59311138 = phi i64 [ 1, %.lr.ph1131.preheader ], [ %360, %._crit_edge1132 ]
  %321 = mul nsw i64 %.59311138, %28
  %invariant.gep1135 = getelementptr %struct.doublecomplex, ptr %30, i64 %321
  br i1 %min.iters.check1456, label %scalar.ph1455.preheader, label %vector.scevcheck1426

vector.scevcheck1426:                             ; preds = %.lr.ph1131
  %322 = mul i64 %315, %indvar1427
  %323 = or disjoint i64 %322, 8
  %scevgep1433 = getelementptr i8, ptr %6, i64 %323
  %scevgep1429 = getelementptr i8, ptr %6, i64 %322
  %324 = getelementptr i8, ptr %scevgep1429, i64 %mul.result1431
  %325 = icmp ult ptr %324, %scevgep1429
  %326 = getelementptr i8, ptr %scevgep1433, i64 %mul.result1435
  %327 = icmp ult ptr %326, %scevgep1433
  %328 = or i1 %327, %mul.overflow1436
  %329 = or i1 %325, %328
  br i1 %329, label %scalar.ph1455.preheader, label %vector.memcheck1437

vector.memcheck1437:                              ; preds = %vector.scevcheck1426
  %330 = shl i64 %.29051139, 3
  %scevgep1439 = getelementptr i8, ptr %11, i64 %330
  %scevgep1441 = getelementptr i8, ptr %scevgep1440, i64 %330
  %331 = shl i64 %.21140, 3
  %scevgep1442 = getelementptr i8, ptr %11, i64 %331
  %scevgep1444 = getelementptr i8, ptr %scevgep1443, i64 %331
  %bound01445 = icmp ugt ptr %scevgep1441, %6
  %bound11446 = icmp ult ptr %scevgep1439, %scevgep1438
  %found.conflict1447 = and i1 %bound01445, %bound11446
  %bound01449 = icmp ugt ptr %scevgep1444, %6
  %bound11450 = icmp ult ptr %scevgep1442, %scevgep1438
  %found.conflict1451 = and i1 %bound01449, %bound11450
  %332 = or i1 %found.conflict1451, %stride.check1452
  %conflict.rdx1453 = or i1 %found.conflict1447, %332
  br i1 %conflict.rdx1453, label %scalar.ph1455.preheader, label %vector.ph1457

vector.ph1457:                                    ; preds = %vector.memcheck1437
  %ind.end1460 = add i64 %.21140, %n.vec1459
  %ind.end1462 = add i64 %.29051139, %n.vec1459
  %333 = getelementptr double, ptr %11, i64 %.21140
  %334 = getelementptr double, ptr %11, i64 %.29051139
  br label %vector.body1466

vector.body1466:                                  ; preds = %vector.body1466, %vector.ph1457
  %index1467 = phi i64 [ 0, %vector.ph1457 ], [ %index.next1474, %vector.body1466 ]
  %offset.idx1470 = or disjoint i64 %index1467, 1
  %335 = getelementptr double, ptr %333, i64 %index1467
  %wide.load1471 = load <2 x double>, ptr %335, align 8, !tbaa !9, !alias.scope !54
  %336 = getelementptr double, ptr %334, i64 %index1467
  %wide.load1472 = load <2 x double>, ptr %336, align 8, !tbaa !9, !alias.scope !57
  %337 = getelementptr %struct.doublecomplex, ptr %invariant.gep1135, i64 %offset.idx1470
  %interleaved.vec1473 = shufflevector <2 x double> %wide.load1471, <2 x double> %wide.load1472, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1473, ptr %337, align 8, !tbaa !9
  %index.next1474 = add nuw i64 %index1467, 2
  %338 = icmp eq i64 %index.next1474, %n.vec1459
  br i1 %338, label %middle.block1454, label %vector.body1466, !llvm.loop !59

middle.block1454:                                 ; preds = %vector.body1466
  br i1 %cmp.n1475, label %._crit_edge1132, label %scalar.ph1455.preheader

scalar.ph1455.preheader:                          ; preds = %middle.block1454, %vector.memcheck1437, %vector.scevcheck1426, %.lr.ph1131
  %.31129.ph = phi i64 [ %.21140, %vector.memcheck1437 ], [ %.21140, %vector.scevcheck1426 ], [ %.21140, %.lr.ph1131 ], [ %ind.end1460, %middle.block1454 ]
  %.39061128.ph = phi i64 [ %.29051139, %vector.memcheck1437 ], [ %.29051139, %vector.scevcheck1426 ], [ %.29051139, %.lr.ph1131 ], [ %ind.end1462, %middle.block1454 ]
  %.59181127.ph = phi i64 [ 1, %vector.memcheck1437 ], [ 1, %vector.scevcheck1426 ], [ 1, %.lr.ph1131 ], [ %ind.end1464, %middle.block1454 ]
  br i1 %lcmp.mod1673.not, label %scalar.ph1455.prol.loopexit, label %scalar.ph1455.prol

scalar.ph1455.prol:                               ; preds = %scalar.ph1455.preheader
  %339 = add nsw i64 %.31129.ph, 1
  %340 = add nsw i64 %.39061128.ph, 1
  %341 = getelementptr double, ptr %11, i64 %.31129.ph
  %342 = load double, ptr %341, align 8, !tbaa !9
  %343 = getelementptr double, ptr %11, i64 %.39061128.ph
  %344 = load double, ptr %343, align 8, !tbaa !9
  %gep1136.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep1135, i64 %.59181127.ph
  store double %342, ptr %gep1136.prol, align 8, !tbaa !17
  %345 = getelementptr inbounds i8, ptr %gep1136.prol, i64 8
  store double %344, ptr %345, align 8, !tbaa !39
  %346 = add nuw nsw i64 %.59181127.ph, 1
  br label %scalar.ph1455.prol.loopexit

scalar.ph1455.prol.loopexit:                      ; preds = %scalar.ph1455.prol, %scalar.ph1455.preheader
  %.lcssa1659.unr = phi i64 [ poison, %scalar.ph1455.preheader ], [ %339, %scalar.ph1455.prol ]
  %.lcssa1658.unr = phi i64 [ poison, %scalar.ph1455.preheader ], [ %340, %scalar.ph1455.prol ]
  %.31129.unr = phi i64 [ %.31129.ph, %scalar.ph1455.preheader ], [ %339, %scalar.ph1455.prol ]
  %.39061128.unr = phi i64 [ %.39061128.ph, %scalar.ph1455.preheader ], [ %340, %scalar.ph1455.prol ]
  %.59181127.unr = phi i64 [ %.59181127.ph, %scalar.ph1455.preheader ], [ %346, %scalar.ph1455.prol ]
  %347 = icmp eq i64 %313, %.59181127.ph
  br i1 %347, label %._crit_edge1132, label %scalar.ph1455

scalar.ph1455:                                    ; preds = %scalar.ph1455.prol.loopexit, %scalar.ph1455
  %.31129 = phi i64 [ %354, %scalar.ph1455 ], [ %.31129.unr, %scalar.ph1455.prol.loopexit ]
  %.39061128 = phi i64 [ %355, %scalar.ph1455 ], [ %.39061128.unr, %scalar.ph1455.prol.loopexit ]
  %.59181127 = phi i64 [ %359, %scalar.ph1455 ], [ %.59181127.unr, %scalar.ph1455.prol.loopexit ]
  %348 = getelementptr double, ptr %11, i64 %.31129
  %349 = load double, ptr %348, align 8, !tbaa !9
  %350 = getelementptr double, ptr %11, i64 %.39061128
  %351 = load double, ptr %350, align 8, !tbaa !9
  %gep1136 = getelementptr %struct.doublecomplex, ptr %invariant.gep1135, i64 %.59181127
  store double %349, ptr %gep1136, align 8, !tbaa !17
  %352 = getelementptr inbounds i8, ptr %gep1136, i64 8
  store double %351, ptr %352, align 8, !tbaa !39
  %353 = add nuw i64 %.59181127, 1
  %354 = add nsw i64 %.31129, 2
  %355 = add nsw i64 %.39061128, 2
  %gep1729 = getelementptr double, ptr %invariant.gep1728, i64 %.31129
  %356 = load double, ptr %gep1729, align 8, !tbaa !9
  %gep1731 = getelementptr double, ptr %invariant.gep1730, i64 %.39061128
  %357 = load double, ptr %gep1731, align 8, !tbaa !9
  %gep1136.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep1135, i64 %353
  store double %356, ptr %gep1136.1, align 8, !tbaa !17
  %358 = getelementptr inbounds i8, ptr %gep1136.1, i64 8
  store double %357, ptr %358, align 8, !tbaa !39
  %359 = add nuw i64 %.59181127, 2
  %exitcond1307.not.1 = icmp eq i64 %353, %313
  br i1 %exitcond1307.not.1, label %._crit_edge1132, label %scalar.ph1455, !llvm.loop !60

._crit_edge1132:                                  ; preds = %scalar.ph1455.prol.loopexit, %scalar.ph1455, %middle.block1454
  %.lcssa1347 = phi i64 [ %ind.end1460, %middle.block1454 ], [ %.lcssa1659.unr, %scalar.ph1455.prol.loopexit ], [ %354, %scalar.ph1455 ]
  %.lcssa1346 = phi i64 [ %ind.end1462, %middle.block1454 ], [ %.lcssa1658.unr, %scalar.ph1455.prol.loopexit ], [ %355, %scalar.ph1455 ]
  %360 = add nuw i64 %.59311138, 1
  %exitcond1308.not = icmp eq i64 %.59311138, %312
  %indvar.next1428 = add i64 %indvar1427, 1
  br i1 %exitcond1308.not, label %._crit_edge1143, label %.lr.ph1131, !llvm.loop !61

._crit_edge1143:                                  ; preds = %._crit_edge1132, %.lr.ph1142, %._crit_edge1125
  %361 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b10, ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %13) #5
  %362 = call i32 @dlasrt_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %13) #5
  %363 = call i32 @zlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b10, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %13) #5
  br label %.loopexit1021

364:                                              ; preds = %107
  %365 = sitofp i64 %110 to double
  %366 = add nsw i64 %111, 1
  %367 = sitofp i64 %366 to double
  %368 = fdiv double %365, %367
  %369 = call double @log(double noundef %368) #5
  %370 = fdiv double %369, 0x3FE62E42FEFA39EF
  %371 = fptosi double %370 to i64
  %372 = add nsw i64 %371, 1
  %373 = load i64, ptr %1, align 8, !tbaa !5
  %374 = add nsw i64 %373, 1
  %375 = load i64, ptr %2, align 8, !tbaa !5
  %376 = mul nsw i64 %375, %373
  %377 = add nsw i64 %376, 1
  %378 = mul nsw i64 %374, %375
  %379 = add nsw i64 %377, %378
  %380 = mul nsw i64 %372, %375
  %381 = add nsw i64 %379, %380
  %382 = shl i64 %380, 1
  %383 = add nsw i64 %381, %382
  %384 = add nsw i64 %383, %380
  %385 = add nsw i64 %384, %375
  %386 = add nsw i64 %385, %375
  %387 = shl i64 %372, 1
  %388 = mul nsw i64 %387, %375
  %389 = add nsw i64 %386, %388
  %390 = add nsw i64 %389, %388
  %391 = load i64, ptr %3, align 8, !tbaa !5
  %392 = mul nsw i64 %391, %373
  %393 = add nsw i64 %390, %392
  %394 = add nsw i64 %393, %392
  %reass.add = shl i64 %375, 1
  %395 = or disjoint i64 %reass.add, 1
  %396 = add nsw i64 %395, %375
  %397 = add nsw i64 %396, %375
  %398 = add nsw i64 %397, %380
  %399 = add nsw i64 %398, %382
  store i64 0, ptr %21, align 8, !tbaa !5
  store i64 1, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %24, align 8, !tbaa !5
  %.not9751144 = icmp slt i64 %375, 1
  br i1 %.not9751144, label %._crit_edge1148, label %.lr.ph1147

.lr.ph1147:                                       ; preds = %364, %409
  %.39421145 = phi i64 [ %410, %409 ], [ 1, %364 ]
  %400 = getelementptr inbounds double, ptr %26, i64 %.39421145
  %401 = load double, ptr %400, align 8, !tbaa !9
  %402 = fcmp oge double %401, 0.000000e+00
  %403 = fneg double %401
  %404 = select i1 %402, double %401, double %403
  %405 = load double, ptr %20, align 8, !tbaa !9
  %406 = fcmp olt double %404, %405
  br i1 %406, label %407, label %409

407:                                              ; preds = %.lr.ph1147
  %408 = call double @d_sign(ptr noundef nonnull %20, ptr noundef nonnull %400) #5
  store double %408, ptr %400, align 8, !tbaa !9
  br label %409

409:                                              ; preds = %.lr.ph1147, %407
  %410 = add nuw nsw i64 %.39421145, 1
  %.not975.not = icmp slt i64 %.39421145, %375
  br i1 %.not975.not, label %.lr.ph1147, label %._crit_edge1148, !llvm.loop !62

._crit_edge1148:                                  ; preds = %409, %364
  %411 = load i64, ptr %19, align 8, !tbaa !5
  %invariant.gep1197 = getelementptr i8, ptr %6, i64 -16
  %.not9761205 = icmp slt i64 %411, 1
  br i1 %.not9761205, label %._crit_edge1211, label %.lr.ph1210

.lr.ph1210:                                       ; preds = %._crit_edge1148
  %412 = getelementptr i64, ptr %12, i64 %375
  %413 = getelementptr i64, ptr %33, i64 %375
  %414 = getelementptr double, ptr %32, i64 %376
  %415 = getelementptr inbounds double, ptr %32, i64 %390
  %416 = add nsw i64 %394, -1
  %417 = getelementptr inbounds double, ptr %32, i64 %394
  %418 = getelementptr inbounds double, ptr %32, i64 %393
  %419 = add nsw i64 %390, -1
  %420 = add nsw i64 %393, -1
  %421 = getelementptr i64, ptr %12, i64 %reass.add
  %422 = getelementptr double, ptr %32, i64 %379
  %423 = getelementptr double, ptr %32, i64 %381
  %424 = getelementptr double, ptr %32, i64 %383
  %425 = getelementptr double, ptr %32, i64 %386
  %426 = getelementptr i64, ptr %33, i64 %396
  %427 = getelementptr i64, ptr %33, i64 %398
  %428 = getelementptr i64, ptr %33, i64 %397
  %429 = getelementptr double, ptr %32, i64 %389
  %430 = getelementptr double, ptr %32, i64 %384
  %431 = getelementptr double, ptr %32, i64 %385
  %432 = getelementptr inbounds i64, ptr %33, i64 %399
  %433 = shl i64 %28, 4
  %scevgep1488 = getelementptr i8, ptr %6, i64 -16
  %scevgep1490 = getelementptr i8, ptr %6, i64 -16
  %434 = shl i64 %28, 4
  %scevgep1536 = getelementptr i8, ptr %6, i64 -16
  %scevgep1538 = getelementptr i8, ptr %6, i64 -24
  %435 = shl i64 %28, 4
  %stride.check1543 = icmp slt i64 %435, 0
  %invariant.gep1738 = getelementptr i8, ptr %6, i64 -8
  %invariant.gep1740 = getelementptr i8, ptr %6, i64 -16
  %stride.check1506 = icmp slt i64 %434, 0
  br label %436

436:                                              ; preds = %.lr.ph1210, %609
  %.09231208 = phi i64 [ 0, %.lr.ph1210 ], [ %.2925, %609 ]
  %.49431207 = phi i64 [ 1, %.lr.ph1210 ], [ %.pre-phi, %609 ]
  %.09461206 = phi i64 [ 1, %.lr.ph1210 ], [ %.1947, %609 ]
  %437 = getelementptr inbounds double, ptr %27, i64 %.49431207
  %438 = load double, ptr %437, align 8, !tbaa !9
  %439 = fcmp oge double %438, 0.000000e+00
  %440 = fneg double %438
  %441 = select i1 %439, double %438, double %440
  %442 = load double, ptr %20, align 8, !tbaa !9
  %443 = fcmp olt double %441, %442
  %444 = load i64, ptr %19, align 8
  %445 = icmp eq i64 %.49431207, %444
  %or.cond1018 = select i1 %443, i1 true, i1 %445
  br i1 %or.cond1018, label %446, label %._crit_edge1317

._crit_edge1317:                                  ; preds = %436
  %.pre = add nuw nsw i64 %.49431207, 1
  br label %609

446:                                              ; preds = %436
  %447 = add nsw i64 %.09231208, 1
  %448 = getelementptr i64, ptr %12, i64 %.09231208
  store i64 %.09461206, ptr %448, align 8, !tbaa !5
  %449 = icmp slt i64 %.49431207, %444
  br i1 %449, label %450, label %454

450:                                              ; preds = %446
  %451 = sub nsw i64 %.49431207, %.09461206
  %452 = add nsw i64 %451, 1
  store i64 %452, ptr %22, align 8, !tbaa !5
  %453 = getelementptr i64, ptr %412, i64 %.09231208
  store i64 %452, ptr %453, align 8, !tbaa !5
  br label %472

454:                                              ; preds = %446
  %455 = fcmp ult double %441, %442
  br i1 %455, label %461, label %456

456:                                              ; preds = %454
  %457 = load i64, ptr %2, align 8, !tbaa !5
  %458 = sub nsw i64 %457, %.09461206
  %459 = add nsw i64 %458, 1
  store i64 %459, ptr %22, align 8, !tbaa !5
  %460 = getelementptr i64, ptr %412, i64 %.09231208
  store i64 %459, ptr %460, align 8, !tbaa !5
  br label %472

461:                                              ; preds = %454
  %462 = sub nsw i64 %.49431207, %.09461206
  %463 = add nsw i64 %462, 1
  store i64 %463, ptr %22, align 8, !tbaa !5
  %464 = getelementptr i64, ptr %412, i64 %.09231208
  store i64 %463, ptr %464, align 8, !tbaa !5
  %465 = add nsw i64 %.09231208, 2
  %466 = load i64, ptr %2, align 8, !tbaa !5
  %467 = getelementptr inbounds i64, ptr %33, i64 %465
  store i64 %466, ptr %467, align 8, !tbaa !5
  %468 = getelementptr i64, ptr %413, i64 %465
  store i64 1, ptr %468, align 8, !tbaa !5
  %469 = load i64, ptr %2, align 8, !tbaa !5
  %gep1198 = getelementptr %struct.doublecomplex, ptr %invariant.gep1197, i64 %469
  %470 = getelementptr %struct.doublecomplex, ptr %10, i64 %444
  %471 = call i32 @f2c_zcopy(ptr noundef nonnull %3, ptr noundef %gep1198, ptr noundef nonnull %7, ptr noundef %470, ptr noundef nonnull %2) #5
  %.pr1020 = load i64, ptr %22, align 8, !tbaa !5
  br label %472

472:                                              ; preds = %456, %461, %450
  %473 = phi i64 [ %459, %456 ], [ %.pr1020, %461 ], [ %452, %450 ]
  %.1924 = phi i64 [ %447, %456 ], [ %465, %461 ], [ %447, %450 ]
  %474 = add nsw i64 %.09461206, -1
  %475 = icmp eq i64 %473, 1
  br i1 %475, label %476, label %479

476:                                              ; preds = %472
  %gep1204 = getelementptr %struct.doublecomplex, ptr %invariant.gep1197, i64 %.09461206
  %477 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %.09461206
  %478 = call i32 @f2c_zcopy(ptr noundef nonnull %3, ptr noundef %gep1204, ptr noundef nonnull %7, ptr noundef nonnull %477, ptr noundef nonnull %2) #5
  br label %607

479:                                              ; preds = %472
  %480 = load i64, ptr %1, align 8, !tbaa !5
  %.not987 = icmp sgt i64 %473, %480
  %481 = getelementptr inbounds double, ptr %32, i64 %.09461206
  br i1 %.not987, label %586, label %482

482:                                              ; preds = %479
  %483 = getelementptr double, ptr %414, i64 %.09461206
  %484 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull @c_b10, ptr noundef %483, ptr noundef nonnull %2) #5
  %485 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull @c_b10, ptr noundef nonnull %481, ptr noundef nonnull %2) #5
  %486 = getelementptr inbounds double, ptr %26, i64 %.09461206
  %487 = getelementptr inbounds double, ptr %27, i64 %.09461206
  %488 = call i32 @dlasdq_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__0, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull @c__0, ptr noundef nonnull %486, ptr noundef nonnull %487, ptr noundef %483, ptr noundef nonnull %2, ptr noundef nonnull %481, ptr noundef nonnull %2, ptr noundef nonnull %415, ptr noundef nonnull @c__1, ptr noundef nonnull %415, ptr noundef nonnull %13) #5
  %489 = load i64, ptr %13, align 8, !tbaa !5
  %.not990 = icmp eq i64 %489, 0
  br i1 %.not990, label %490, label %.loopexit1021

490:                                              ; preds = %482
  %491 = load i64, ptr %3, align 8, !tbaa !5
  %.not9911158 = icmp slt i64 %491, 1
  br i1 %.not9911158, label %._crit_edge1163, label %.lr.ph1162

.lr.ph1162:                                       ; preds = %490
  %492 = load i64, ptr %22, align 8, !tbaa !5
  %493 = add i64 %492, %.09461206
  %.not996.not1149 = icmp sgt i64 %492, 0
  br i1 %.not996.not1149, label %.lr.ph1153.us.preheader, label %._crit_edge1163

.lr.ph1153.us.preheader:                          ; preds = %.lr.ph1162
  %494 = mul i64 %.09461206, -8
  %scevgep1533 = getelementptr i8, ptr %11, i64 %494
  %495 = add i64 %.09461206, 1
  %smax1534 = call i64 @llvm.smax.i64(i64 %493, i64 %495)
  %496 = shl i64 %.09461206, 4
  %scevgep1537 = getelementptr i8, ptr %scevgep1536, i64 %496
  %497 = add nsw i64 %491, -1
  %498 = mul i64 %435, %497
  %499 = shl i64 %smax1534, 4
  %500 = getelementptr i8, ptr %scevgep1538, i64 %498
  %scevgep1539 = getelementptr i8, ptr %500, i64 %499
  %501 = add i64 %.09461206, 1
  %smax1544 = call i64 @llvm.smax.i64(i64 %493, i64 %501)
  %502 = sub i64 %smax1544, %.09461206
  %min.iters.check1547 = icmp ult i64 %502, 8
  %n.vec1550 = and i64 %502, -4
  %ind.end1551 = add i64 %.09461206, %n.vec1550
  %cmp.n1560 = icmp eq i64 %502, %n.vec1550
  br label %.lr.ph1153.us

.lr.ph1153.us:                                    ; preds = %.lr.ph1153.us.preheader, %._crit_edge1154.us
  %.69321160.us = phi i64 [ %525, %._crit_edge1154.us ], [ 1, %.lr.ph1153.us.preheader ]
  %.99571159.us = phi i64 [ %.lcssa1342, %._crit_edge1154.us ], [ %416, %.lr.ph1153.us.preheader ]
  %503 = mul nsw i64 %.69321160.us, %28
  %invariant.gep1156.us = getelementptr %struct.doublecomplex, ptr %30, i64 %503
  br i1 %min.iters.check1547, label %scalar.ph1546.preheader, label %vector.memcheck1531

vector.memcheck1531:                              ; preds = %.lr.ph1153.us
  %504 = shl i64 %.99571159.us, 3
  %scevgep1532 = getelementptr i8, ptr %11, i64 %504
  %505 = add i64 %smax1534, %.99571159.us
  %506 = shl i64 %505, 3
  %scevgep1535 = getelementptr i8, ptr %scevgep1533, i64 %506
  %bound01540 = icmp ult ptr %scevgep1532, %scevgep1539
  %bound11541 = icmp ult ptr %scevgep1537, %scevgep1535
  %found.conflict1542 = and i1 %bound01540, %bound11541
  %507 = or i1 %found.conflict1542, %stride.check1543
  br i1 %507, label %scalar.ph1546.preheader, label %vector.ph1548

vector.ph1548:                                    ; preds = %vector.memcheck1531
  %ind.end1553 = add i64 %.99571159.us, %n.vec1550
  %invariant.gep1732 = getelementptr i8, ptr %invariant.gep1156.us, i64 16
  %invariant.gep1734 = getelementptr i8, ptr %invariant.gep1156.us, i64 32
  %invariant.gep1736 = getelementptr i8, ptr %invariant.gep1156.us, i64 48
  %508 = getelementptr double, ptr %11, i64 %.99571159.us
  br label %vector.body1555

vector.body1555:                                  ; preds = %vector.body1555, %vector.ph1548
  %index1556 = phi i64 [ 0, %vector.ph1548 ], [ %index.next1559, %vector.body1555 ]
  %offset.idx1557 = add i64 %.09461206, %index1556
  %509 = getelementptr %struct.doublecomplex, ptr %invariant.gep1156.us, i64 %offset.idx1557
  %gep1733 = getelementptr %struct.doublecomplex, ptr %invariant.gep1732, i64 %offset.idx1557
  %gep1735 = getelementptr %struct.doublecomplex, ptr %invariant.gep1734, i64 %offset.idx1557
  %gep1737 = getelementptr %struct.doublecomplex, ptr %invariant.gep1736, i64 %offset.idx1557
  %510 = load double, ptr %509, align 8, !tbaa !17, !alias.scope !63
  %511 = load double, ptr %gep1733, align 8, !tbaa !17, !alias.scope !63
  %512 = insertelement <2 x double> poison, double %510, i64 0
  %513 = insertelement <2 x double> %512, double %511, i64 1
  %514 = load double, ptr %gep1735, align 8, !tbaa !17, !alias.scope !63
  %515 = load double, ptr %gep1737, align 8, !tbaa !17, !alias.scope !63
  %516 = insertelement <2 x double> poison, double %514, i64 0
  %517 = insertelement <2 x double> %516, double %515, i64 1
  %518 = getelementptr double, ptr %508, i64 %index1556
  %519 = getelementptr i8, ptr %518, i64 16
  store <2 x double> %513, ptr %518, align 8, !tbaa !9, !alias.scope !66, !noalias !63
  store <2 x double> %517, ptr %519, align 8, !tbaa !9, !alias.scope !66, !noalias !63
  %index.next1559 = add nuw i64 %index1556, 4
  %520 = icmp eq i64 %index.next1559, %n.vec1550
  br i1 %520, label %middle.block1545, label %vector.body1555, !llvm.loop !68

middle.block1545:                                 ; preds = %vector.body1555
  br i1 %cmp.n1560, label %._crit_edge1154.us, label %scalar.ph1546.preheader

scalar.ph1546.preheader:                          ; preds = %middle.block1545, %vector.memcheck1531, %.lr.ph1153.us
  %.69191151.us.ph = phi i64 [ %.09461206, %vector.memcheck1531 ], [ %.09461206, %.lr.ph1153.us ], [ %ind.end1551, %middle.block1545 ]
  %.109581150.us.ph = phi i64 [ %.99571159.us, %vector.memcheck1531 ], [ %.99571159.us, %.lr.ph1153.us ], [ %ind.end1553, %middle.block1545 ]
  br label %scalar.ph1546

scalar.ph1546:                                    ; preds = %scalar.ph1546.preheader, %scalar.ph1546
  %.69191151.us = phi i64 [ %524, %scalar.ph1546 ], [ %.69191151.us.ph, %scalar.ph1546.preheader ]
  %.109581150.us = phi i64 [ %521, %scalar.ph1546 ], [ %.109581150.us.ph, %scalar.ph1546.preheader ]
  %521 = add nsw i64 %.109581150.us, 1
  %gep1157.us = getelementptr %struct.doublecomplex, ptr %invariant.gep1156.us, i64 %.69191151.us
  %522 = load double, ptr %gep1157.us, align 8, !tbaa !17
  %523 = getelementptr double, ptr %11, i64 %.109581150.us
  store double %522, ptr %523, align 8, !tbaa !9
  %524 = add nsw i64 %.69191151.us, 1
  %.not996.not.us = icmp slt i64 %524, %493
  br i1 %.not996.not.us, label %scalar.ph1546, label %._crit_edge1154.us, !llvm.loop !69

._crit_edge1154.us:                               ; preds = %scalar.ph1546, %middle.block1545
  %.lcssa1342 = phi i64 [ %ind.end1553, %middle.block1545 ], [ %521, %scalar.ph1546 ]
  %525 = add nuw i64 %.69321160.us, 1
  %exitcond1309.not = icmp eq i64 %.69321160.us, %491
  br i1 %exitcond1309.not, label %._crit_edge1163, label %.lr.ph1153.us, !llvm.loop !70

._crit_edge1163:                                  ; preds = %._crit_edge1154.us, %.lr.ph1162, %490
  %526 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b10, ptr noundef nonnull %481, ptr noundef nonnull %2, ptr noundef nonnull %417, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull %415, ptr noundef nonnull %22) #5
  %527 = load i64, ptr %3, align 8, !tbaa !5
  %.not9921173 = icmp slt i64 %527, 1
  br i1 %.not9921173, label %._crit_edge1178, label %.lr.ph1177

.lr.ph1177:                                       ; preds = %._crit_edge1163, %._crit_edge1169
  %.79331175 = phi i64 [ %536, %._crit_edge1169 ], [ 1, %._crit_edge1163 ]
  %.119591174 = phi i64 [ %.12.lcssa, %._crit_edge1169 ], [ %416, %._crit_edge1163 ]
  %528 = load i64, ptr %22, align 8, !tbaa !5
  %529 = add nsw i64 %528, %.09461206
  %.not995.not1164 = icmp sgt i64 %528, 0
  br i1 %.not995.not1164, label %.lr.ph1168, label %._crit_edge1169

.lr.ph1168:                                       ; preds = %.lr.ph1177
  %530 = mul nsw i64 %.79331175, %28
  %invariant.gep1171 = getelementptr %struct.doublecomplex, ptr %30, i64 %530
  br label %531

531:                                              ; preds = %.lr.ph1168, %531
  %.79201166 = phi i64 [ %.09461206, %.lr.ph1168 ], [ %535, %531 ]
  %.121165 = phi i64 [ %.119591174, %.lr.ph1168 ], [ %532, %531 ]
  %532 = add nsw i64 %.121165, 1
  %gep1172 = getelementptr %struct.doublecomplex, ptr %invariant.gep1171, i64 %.79201166
  %533 = call double @d_imag(ptr noundef %gep1172) #5
  %534 = getelementptr double, ptr %11, i64 %.121165
  store double %533, ptr %534, align 8, !tbaa !9
  %535 = add nsw i64 %.79201166, 1
  %.not995.not = icmp slt i64 %535, %529
  br i1 %.not995.not, label %531, label %._crit_edge1169, !llvm.loop !71

._crit_edge1169:                                  ; preds = %531, %.lr.ph1177
  %.12.lcssa = phi i64 [ %.119591174, %.lr.ph1177 ], [ %532, %531 ]
  %536 = add nuw i64 %.79331175, 1
  %exitcond1310.not = icmp eq i64 %.79331175, %527
  br i1 %exitcond1310.not, label %._crit_edge1178, label %.lr.ph1177, !llvm.loop !72

._crit_edge1178:                                  ; preds = %._crit_edge1169, %._crit_edge1163
  %537 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b10, ptr noundef nonnull %481, ptr noundef nonnull %2, ptr noundef nonnull %417, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull %418, ptr noundef nonnull %22) #5
  %538 = load i64, ptr %3, align 8, !tbaa !5
  %.not9931190 = icmp slt i64 %538, 1
  br i1 %.not9931190, label %._crit_edge1196, label %.lr.ph1195

.lr.ph1195:                                       ; preds = %._crit_edge1178
  %539 = load i64, ptr %22, align 8, !tbaa !5
  %540 = add i64 %539, %.09461206
  %.not994.not1179 = icmp sgt i64 %539, 0
  br i1 %.not994.not1179, label %.lr.ph1184.us.preheader, label %._crit_edge1196

.lr.ph1184.us.preheader:                          ; preds = %.lr.ph1195
  %541 = add i64 %.09461206, 1
  %smax = call i64 @llvm.smax.i64(i64 %540, i64 %541)
  %542 = xor i64 %.09461206, -1
  %543 = add i64 %smax, %542
  %544 = shl i64 %.09461206, 4
  %scevgep1489 = getelementptr i8, ptr %scevgep1488, i64 %544
  %545 = add nsw i64 %538, -1
  %546 = mul i64 %434, %545
  %547 = add i64 %.09461206, 1
  %smax1491 = call i64 @llvm.smax.i64(i64 %540, i64 %547)
  %548 = shl i64 %smax1491, 4
  %549 = getelementptr i8, ptr %scevgep1490, i64 %546
  %scevgep1492 = getelementptr i8, ptr %549, i64 %548
  %550 = mul i64 %.09461206, -8
  %scevgep1494 = getelementptr i8, ptr %11, i64 %550
  %scevgep1497 = getelementptr i8, ptr %11, i64 %550
  %551 = add i64 %.09461206, 1
  %smax1508 = call i64 @llvm.smax.i64(i64 %540, i64 %551)
  %552 = sub i64 %smax1508, %.09461206
  %min.iters.check1511 = icmp ult i64 %552, 24
  %gep1739 = getelementptr i8, ptr %invariant.gep1738, i64 %544
  %gep1741 = getelementptr i8, ptr %invariant.gep1740, i64 %544
  %mul.result1481 = shl i64 %543, 4
  %mul.result1485 = shl i64 %543, 4
  %mul.overflow1486 = icmp ugt i64 %543, 1152921504606846975
  %n.vec1514 = and i64 %552, -2
  %ind.end1519 = add i64 %.09461206, %n.vec1514
  %cmp.n1530 = icmp eq i64 %552, %n.vec1514
  br label %.lr.ph1184.us

.lr.ph1184.us:                                    ; preds = %.lr.ph1184.us.preheader, %._crit_edge1185.us
  %indvar1477 = phi i64 [ 0, %.lr.ph1184.us.preheader ], [ %indvar.next1478, %._crit_edge1185.us ]
  %.41193.us = phi i64 [ %419, %.lr.ph1184.us.preheader ], [ %.lcssa1345, %._crit_edge1185.us ]
  %.49071192.us = phi i64 [ %420, %.lr.ph1184.us.preheader ], [ %.lcssa1344, %._crit_edge1185.us ]
  %.89341191.us = phi i64 [ 1, %.lr.ph1184.us.preheader ], [ %583, %._crit_edge1185.us ]
  %553 = mul nsw i64 %.89341191.us, %28
  %invariant.gep1188.us = getelementptr %struct.doublecomplex, ptr %30, i64 %553
  br i1 %min.iters.check1511, label %scalar.ph1510.preheader, label %vector.scevcheck1476

vector.scevcheck1476:                             ; preds = %.lr.ph1184.us
  %554 = mul i64 %433, %indvar1477
  %scevgep1483 = getelementptr i8, ptr %gep1739, i64 %554
  %scevgep1479 = getelementptr i8, ptr %gep1741, i64 %554
  %555 = getelementptr i8, ptr %scevgep1479, i64 %mul.result1481
  %556 = icmp ult ptr %555, %scevgep1479
  %557 = getelementptr i8, ptr %scevgep1483, i64 %mul.result1485
  %558 = icmp ult ptr %557, %scevgep1483
  %559 = or i1 %558, %mul.overflow1486
  %560 = or i1 %556, %559
  br i1 %560, label %scalar.ph1510.preheader, label %vector.memcheck1487

vector.memcheck1487:                              ; preds = %vector.scevcheck1476
  %561 = shl i64 %.49071192.us, 3
  %scevgep1493 = getelementptr i8, ptr %11, i64 %561
  %562 = add i64 %smax1491, %.49071192.us
  %563 = shl i64 %562, 3
  %scevgep1495 = getelementptr i8, ptr %scevgep1494, i64 %563
  %564 = shl i64 %.41193.us, 3
  %scevgep1496 = getelementptr i8, ptr %11, i64 %564
  %565 = add i64 %smax1491, %.41193.us
  %566 = shl i64 %565, 3
  %scevgep1498 = getelementptr i8, ptr %scevgep1497, i64 %566
  %bound01499 = icmp ult ptr %scevgep1489, %scevgep1495
  %bound11500 = icmp ult ptr %scevgep1493, %scevgep1492
  %found.conflict1501 = and i1 %bound01499, %bound11500
  %bound01503 = icmp ult ptr %scevgep1489, %scevgep1498
  %bound11504 = icmp ult ptr %scevgep1496, %scevgep1492
  %found.conflict1505 = and i1 %bound01503, %bound11504
  %567 = or i1 %found.conflict1505, %stride.check1506
  %conflict.rdx1507 = or i1 %found.conflict1501, %567
  br i1 %conflict.rdx1507, label %scalar.ph1510.preheader, label %vector.ph1512

vector.ph1512:                                    ; preds = %vector.memcheck1487
  %ind.end1515 = add i64 %.41193.us, %n.vec1514
  %ind.end1517 = add i64 %.49071192.us, %n.vec1514
  %568 = getelementptr double, ptr %11, i64 %.41193.us
  %569 = getelementptr double, ptr %11, i64 %.49071192.us
  %570 = getelementptr %struct.doublecomplex, ptr %invariant.gep1188.us, i64 %.09461206
  br label %vector.body1521

vector.body1521:                                  ; preds = %vector.body1521, %vector.ph1512
  %index1522 = phi i64 [ 0, %vector.ph1512 ], [ %index.next1529, %vector.body1521 ]
  %571 = getelementptr double, ptr %568, i64 %index1522
  %wide.load1526 = load <2 x double>, ptr %571, align 8, !tbaa !9, !alias.scope !73
  %572 = getelementptr double, ptr %569, i64 %index1522
  %wide.load1527 = load <2 x double>, ptr %572, align 8, !tbaa !9, !alias.scope !76
  %573 = getelementptr %struct.doublecomplex, ptr %570, i64 %index1522
  %interleaved.vec1528 = shufflevector <2 x double> %wide.load1526, <2 x double> %wide.load1527, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1528, ptr %573, align 8, !tbaa !9
  %index.next1529 = add nuw i64 %index1522, 2
  %574 = icmp eq i64 %index.next1529, %n.vec1514
  br i1 %574, label %middle.block1509, label %vector.body1521, !llvm.loop !78

middle.block1509:                                 ; preds = %vector.body1521
  br i1 %cmp.n1530, label %._crit_edge1185.us, label %scalar.ph1510.preheader

scalar.ph1510.preheader:                          ; preds = %middle.block1509, %vector.memcheck1487, %vector.scevcheck1476, %.lr.ph1184.us
  %.51182.us.ph = phi i64 [ %.41193.us, %vector.memcheck1487 ], [ %.41193.us, %vector.scevcheck1476 ], [ %.41193.us, %.lr.ph1184.us ], [ %ind.end1515, %middle.block1509 ]
  %.59081181.us.ph = phi i64 [ %.49071192.us, %vector.memcheck1487 ], [ %.49071192.us, %vector.scevcheck1476 ], [ %.49071192.us, %.lr.ph1184.us ], [ %ind.end1517, %middle.block1509 ]
  %.89211180.us.ph = phi i64 [ %.09461206, %vector.memcheck1487 ], [ %.09461206, %vector.scevcheck1476 ], [ %.09461206, %.lr.ph1184.us ], [ %ind.end1519, %middle.block1509 ]
  br label %scalar.ph1510

scalar.ph1510:                                    ; preds = %scalar.ph1510.preheader, %scalar.ph1510
  %.51182.us = phi i64 [ %575, %scalar.ph1510 ], [ %.51182.us.ph, %scalar.ph1510.preheader ]
  %.59081181.us = phi i64 [ %576, %scalar.ph1510 ], [ %.59081181.us.ph, %scalar.ph1510.preheader ]
  %.89211180.us = phi i64 [ %582, %scalar.ph1510 ], [ %.89211180.us.ph, %scalar.ph1510.preheader ]
  %575 = add nsw i64 %.51182.us, 1
  %576 = add nsw i64 %.59081181.us, 1
  %577 = getelementptr double, ptr %11, i64 %.51182.us
  %578 = load double, ptr %577, align 8, !tbaa !9
  %579 = getelementptr double, ptr %11, i64 %.59081181.us
  %580 = load double, ptr %579, align 8, !tbaa !9
  %gep1189.us = getelementptr %struct.doublecomplex, ptr %invariant.gep1188.us, i64 %.89211180.us
  store double %578, ptr %gep1189.us, align 8, !tbaa !17
  %581 = getelementptr inbounds i8, ptr %gep1189.us, i64 8
  store double %580, ptr %581, align 8, !tbaa !39
  %582 = add nsw i64 %.89211180.us, 1
  %.not994.not.us = icmp slt i64 %582, %540
  br i1 %.not994.not.us, label %scalar.ph1510, label %._crit_edge1185.us, !llvm.loop !79

._crit_edge1185.us:                               ; preds = %scalar.ph1510, %middle.block1509
  %.lcssa1345 = phi i64 [ %ind.end1515, %middle.block1509 ], [ %575, %scalar.ph1510 ]
  %.lcssa1344 = phi i64 [ %ind.end1517, %middle.block1509 ], [ %576, %scalar.ph1510 ]
  %583 = add nuw i64 %.89341191.us, 1
  %exitcond1311.not = icmp eq i64 %.89341191.us, %538
  %indvar.next1478 = add i64 %indvar1477, 1
  br i1 %exitcond1311.not, label %._crit_edge1196, label %.lr.ph1184.us, !llvm.loop !80

._crit_edge1196:                                  ; preds = %._crit_edge1185.us, %.lr.ph1195, %._crit_edge1178
  %gep1200 = getelementptr %struct.doublecomplex, ptr %invariant.gep1197, i64 %.09461206
  %584 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %.09461206
  %585 = call i32 @zlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef %gep1200, ptr noundef nonnull %7, ptr noundef nonnull %584, ptr noundef nonnull %2) #5
  br label %607

586:                                              ; preds = %479
  %587 = getelementptr inbounds double, ptr %26, i64 %.09461206
  %588 = getelementptr inbounds double, ptr %27, i64 %.09461206
  %589 = getelementptr double, ptr %414, i64 %.09461206
  %590 = getelementptr i64, ptr %421, i64 %474
  %591 = getelementptr double, ptr %422, i64 %474
  %592 = getelementptr double, ptr %423, i64 %474
  %593 = getelementptr double, ptr %424, i64 %474
  %594 = getelementptr double, ptr %425, i64 %474
  %595 = getelementptr i64, ptr %426, i64 %474
  %596 = getelementptr i64, ptr %427, i64 %474
  %597 = getelementptr i64, ptr %428, i64 %474
  %598 = getelementptr double, ptr %429, i64 %474
  %599 = getelementptr double, ptr %430, i64 %474
  %600 = getelementptr double, ptr %431, i64 %474
  %601 = call i32 @dlasda_(ptr noundef nonnull %23, ptr noundef nonnull %1, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef nonnull %587, ptr noundef nonnull %588, ptr noundef nonnull %481, ptr noundef nonnull %2, ptr noundef %589, ptr noundef %590, ptr noundef %591, ptr noundef %592, ptr noundef %593, ptr noundef %594, ptr noundef %595, ptr noundef %596, ptr noundef nonnull %2, ptr noundef %597, ptr noundef %598, ptr noundef %599, ptr noundef %600, ptr noundef nonnull %415, ptr noundef nonnull %432, ptr noundef nonnull %13) #5
  %602 = load i64, ptr %13, align 8, !tbaa !5
  %.not988 = icmp eq i64 %602, 0
  br i1 %.not988, label %603, label %.loopexit1021

603:                                              ; preds = %586
  %gep1202 = getelementptr %struct.doublecomplex, ptr %invariant.gep1197, i64 %.09461206
  %604 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %.09461206
  %605 = call i32 @zlalsa_(ptr noundef nonnull %24, ptr noundef nonnull %1, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef %gep1202, ptr noundef nonnull %7, ptr noundef nonnull %604, ptr noundef nonnull %2, ptr noundef nonnull %481, ptr noundef nonnull %2, ptr noundef %589, ptr noundef %590, ptr noundef %591, ptr noundef %592, ptr noundef %593, ptr noundef %594, ptr noundef %595, ptr noundef %596, ptr noundef nonnull %2, ptr noundef %597, ptr noundef %598, ptr noundef %599, ptr noundef %600, ptr noundef nonnull %415, ptr noundef nonnull %432, ptr noundef nonnull %13) #5
  %606 = load i64, ptr %13, align 8, !tbaa !5
  %.not989 = icmp eq i64 %606, 0
  br i1 %.not989, label %607, label %.loopexit1021

607:                                              ; preds = %._crit_edge1196, %603, %476
  %608 = add nuw nsw i64 %.49431207, 1
  br label %609

609:                                              ; preds = %._crit_edge1317, %607
  %.pre-phi = phi i64 [ %.pre, %._crit_edge1317 ], [ %608, %607 ]
  %.1947 = phi i64 [ %.09461206, %._crit_edge1317 ], [ %608, %607 ]
  %.2925 = phi i64 [ %.09231208, %._crit_edge1317 ], [ %.1924, %607 ]
  %.not976.not = icmp slt i64 %.49431207, %411
  br i1 %.not976.not, label %436, label %._crit_edge1211, !llvm.loop !81

._crit_edge1211:                                  ; preds = %609, %._crit_edge1148
  %610 = phi i64 [ 0, %._crit_edge1148 ], [ %.2925, %609 ]
  %611 = call i64 @f2c_idamax(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %612 = getelementptr inbounds double, ptr %26, i64 %611
  %613 = load double, ptr %612, align 8, !tbaa !9
  %614 = fcmp oge double %613, 0.000000e+00
  %615 = fneg double %613
  %616 = select i1 %614, double %613, double %615
  %617 = fmul double %.0938, %616
  %618 = load i64, ptr %2, align 8, !tbaa !5
  %.not9771213 = icmp slt i64 %618, 1
  br i1 %.not9771213, label %._crit_edge1217, label %.lr.ph1216

.lr.ph1216:                                       ; preds = %._crit_edge1211, %633
  %.59441214 = phi i64 [ %638, %633 ], [ 1, %._crit_edge1211 ]
  %619 = getelementptr inbounds double, ptr %26, i64 %.59441214
  %620 = load double, ptr %619, align 8, !tbaa !9
  %621 = fcmp oge double %620, 0.000000e+00
  %622 = fneg double %620
  %623 = select i1 %621, double %620, double %622
  %624 = fcmp ugt double %623, %617
  br i1 %624, label %628, label %625

625:                                              ; preds = %.lr.ph1216
  %626 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %.59441214
  %627 = call i32 @zlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef nonnull %626, ptr noundef nonnull %2) #5
  br label %633

628:                                              ; preds = %.lr.ph1216
  %629 = load i64, ptr %9, align 8, !tbaa !5
  %630 = add nsw i64 %629, 1
  store i64 %630, ptr %9, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %.59441214
  %632 = call i32 @zlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %619, ptr noundef nonnull @c_b10, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull %631, ptr noundef nonnull %2, ptr noundef nonnull %13) #5
  br label %633

633:                                              ; preds = %628, %625
  %634 = load double, ptr %619, align 8, !tbaa !9
  %635 = fcmp oge double %634, 0.000000e+00
  %636 = fneg double %634
  %637 = select i1 %635, double %634, double %636
  store double %637, ptr %619, align 8, !tbaa !9
  %638 = add nuw nsw i64 %.59441214, 1
  %.not977.not = icmp slt i64 %.59441214, %618
  br i1 %.not977.not, label %.lr.ph1216, label %._crit_edge1217, !llvm.loop !82

._crit_edge1217:                                  ; preds = %633, %._crit_edge1211
  store i64 1, ptr %24, align 8, !tbaa !5
  %.not9781267 = icmp slt i64 %610, 1
  br i1 %.not9781267, label %._crit_edge1271, label %.lr.ph1270

.lr.ph1270:                                       ; preds = %._crit_edge1217
  %639 = getelementptr i64, ptr %33, i64 %375
  %640 = add nsw i64 %394, -1
  %641 = getelementptr double, ptr %32, i64 %376
  %642 = getelementptr inbounds double, ptr %32, i64 %394
  %643 = getelementptr inbounds double, ptr %32, i64 %390
  %644 = getelementptr inbounds double, ptr %32, i64 %393
  %645 = add nsw i64 %390, -1
  %646 = add nsw i64 %393, -1
  %647 = getelementptr i64, ptr %12, i64 %reass.add
  %648 = getelementptr double, ptr %32, i64 %379
  %649 = getelementptr double, ptr %32, i64 %381
  %650 = getelementptr double, ptr %32, i64 %383
  %651 = getelementptr double, ptr %32, i64 %386
  %652 = getelementptr i64, ptr %33, i64 %396
  %653 = getelementptr i64, ptr %33, i64 %398
  %654 = getelementptr i64, ptr %33, i64 %397
  %655 = getelementptr double, ptr %32, i64 %389
  %656 = getelementptr double, ptr %32, i64 %384
  %657 = getelementptr double, ptr %32, i64 %385
  %658 = getelementptr inbounds i64, ptr %33, i64 %399
  %659 = shl i64 %28, 4
  %scevgep1574 = getelementptr i8, ptr %6, i64 -16
  %scevgep1576 = getelementptr i8, ptr %6, i64 -16
  %660 = shl i64 %28, 4
  %scevgep1621 = getelementptr i8, ptr %10, i64 -16
  %scevgep1623 = getelementptr i8, ptr %10, i64 -24
  %invariant.gep1746 = getelementptr i8, ptr %11, i64 8
  %invariant.gep1750 = getelementptr i8, ptr %11, i64 16
  %invariant.gep1752 = getelementptr i8, ptr %11, i64 24
  %invariant.gep1754 = getelementptr i8, ptr %6, i64 -8
  %invariant.gep1756 = getelementptr i8, ptr %6, i64 -16
  %stride.check1592 = icmp slt i64 %660, 0
  br label %661

661:                                              ; preds = %.lr.ph1270, %.loopexit
  %.69451268 = phi i64 [ 1, %.lr.ph1270 ], [ %810, %.loopexit ]
  %662 = getelementptr inbounds i64, ptr %33, i64 %.69451268
  %663 = load i64, ptr %662, align 8, !tbaa !5
  %664 = add nsw i64 %663, -1
  %665 = getelementptr i64, ptr %639, i64 %.69451268
  %666 = load i64, ptr %665, align 8, !tbaa !5
  store i64 %666, ptr %22, align 8, !tbaa !5
  %667 = icmp eq i64 %666, 1
  br i1 %667, label %668, label %671

668:                                              ; preds = %661
  %669 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %663
  %gep1266 = getelementptr %struct.doublecomplex, ptr %invariant.gep1197, i64 %663
  %670 = call i32 @f2c_zcopy(ptr noundef nonnull %3, ptr noundef nonnull %669, ptr noundef nonnull %2, ptr noundef %gep1266, ptr noundef nonnull %7) #5
  br label %.loopexit

671:                                              ; preds = %661
  %672 = load i64, ptr %1, align 8, !tbaa !5
  %.not979 = icmp sgt i64 %666, %672
  br i1 %.not979, label %793, label %673

673:                                              ; preds = %671
  %674 = load i64, ptr %2, align 8, !tbaa !5
  %675 = load i64, ptr %3, align 8, !tbaa !5
  %.not9811225 = icmp slt i64 %675, 1
  %.not9861218 = icmp slt i64 %666, 1
  %or.cond1335 = or i1 %.not9811225, %.not9861218
  br i1 %or.cond1335, label %._crit_edge1231, label %.lr.ph1222.preheader

.lr.ph1222.preheader:                             ; preds = %673
  %676 = xor i64 %674, -1
  %677 = add i64 %663, %676
  %678 = shl i64 %666, 3
  %scevgep1619 = getelementptr i8, ptr %11, i64 %678
  %679 = shl i64 %663, 4
  %scevgep1622 = getelementptr i8, ptr %scevgep1621, i64 %679
  %680 = shl i64 %674, 4
  %681 = add nsw i64 %675, -1
  %682 = mul i64 %680, %681
  %683 = shl i64 %666, 4
  %684 = getelementptr i8, ptr %scevgep1623, i64 %682
  %685 = getelementptr i8, ptr %684, i64 %683
  %scevgep1624 = getelementptr i8, ptr %685, i64 %679
  %686 = add nuw i64 %666, 1
  %min.iters.check1631 = icmp ult i64 %666, 6
  %.mask1648 = and i64 %674, 576460752303423488
  %stride.check1628 = icmp ne i64 %.mask1648, 0
  %n.vec1634 = and i64 %666, 9223372036854775804
  %ind.end1637 = or disjoint i64 %n.vec1634, 1
  %cmp.n1644 = icmp eq i64 %666, %n.vec1634
  br label %.lr.ph1222

.lr.ph1222:                                       ; preds = %.lr.ph1222.preheader, %._crit_edge1223
  %.61228 = phi i64 [ %.lcssa, %._crit_edge1223 ], [ %640, %.lr.ph1222.preheader ]
  %.99351227 = phi i64 [ %726, %._crit_edge1223 ], [ 1, %.lr.ph1222.preheader ]
  %.131226 = phi i64 [ %687, %._crit_edge1223 ], [ %677, %.lr.ph1222.preheader ]
  %687 = add nsw i64 %.131226, %674
  %688 = getelementptr %struct.doublecomplex, ptr %31, i64 %687
  br i1 %min.iters.check1631, label %scalar.ph1630.preheader, label %vector.memcheck1617

vector.memcheck1617:                              ; preds = %.lr.ph1222
  %689 = shl i64 %.61228, 3
  %scevgep1618 = getelementptr i8, ptr %11, i64 %689
  %scevgep1620 = getelementptr i8, ptr %scevgep1619, i64 %689
  %bound01625 = icmp ult ptr %scevgep1618, %scevgep1624
  %bound11626 = icmp ult ptr %scevgep1622, %scevgep1620
  %found.conflict1627 = and i1 %bound01625, %bound11626
  %690 = or i1 %found.conflict1627, %stride.check1628
  br i1 %690, label %scalar.ph1630.preheader, label %vector.ph1632

vector.ph1632:                                    ; preds = %vector.memcheck1617
  %ind.end1635 = add i64 %.61228, %n.vec1634
  %invariant.gep1742 = getelementptr i8, ptr %688, i64 64
  %691 = getelementptr double, ptr %11, i64 %.61228
  br label %vector.body1639

vector.body1639:                                  ; preds = %vector.body1639, %vector.ph1632
  %index1640 = phi i64 [ 0, %vector.ph1632 ], [ %index.next1643, %vector.body1639 ]
  %offset.idx1642 = or disjoint i64 %index1640, 1
  %692 = or disjoint i64 %index1640, 2
  %693 = or disjoint i64 %index1640, 3
  %694 = getelementptr %struct.doublecomplex, ptr %688, i64 %offset.idx1642
  %695 = getelementptr %struct.doublecomplex, ptr %688, i64 %692
  %696 = getelementptr %struct.doublecomplex, ptr %688, i64 %693
  %gep1743 = getelementptr %struct.doublecomplex, ptr %invariant.gep1742, i64 %index1640
  %697 = load double, ptr %694, align 8, !tbaa !17, !alias.scope !83
  %698 = load double, ptr %695, align 8, !tbaa !17, !alias.scope !83
  %699 = insertelement <2 x double> poison, double %697, i64 0
  %700 = insertelement <2 x double> %699, double %698, i64 1
  %701 = load double, ptr %696, align 8, !tbaa !17, !alias.scope !83
  %702 = load double, ptr %gep1743, align 8, !tbaa !17, !alias.scope !83
  %703 = insertelement <2 x double> poison, double %701, i64 0
  %704 = insertelement <2 x double> %703, double %702, i64 1
  %705 = getelementptr double, ptr %691, i64 %index1640
  %706 = getelementptr i8, ptr %705, i64 16
  store <2 x double> %700, ptr %705, align 8, !tbaa !9, !alias.scope !86, !noalias !83
  store <2 x double> %704, ptr %706, align 8, !tbaa !9, !alias.scope !86, !noalias !83
  %index.next1643 = add nuw i64 %index1640, 4
  %707 = icmp eq i64 %index.next1643, %n.vec1634
  br i1 %707, label %middle.block1629, label %vector.body1639, !llvm.loop !88

middle.block1629:                                 ; preds = %vector.body1639
  br i1 %cmp.n1644, label %._crit_edge1223, label %scalar.ph1630.preheader

scalar.ph1630.preheader:                          ; preds = %middle.block1629, %vector.memcheck1617, %.lr.ph1222
  %.71220.ph = phi i64 [ %.61228, %vector.memcheck1617 ], [ %.61228, %.lr.ph1222 ], [ %ind.end1635, %middle.block1629 ]
  %.99221219.ph = phi i64 [ 1, %vector.memcheck1617 ], [ 1, %.lr.ph1222 ], [ %ind.end1637, %middle.block1629 ]
  %708 = sub i64 %686, %.99221219.ph
  %709 = sub i64 %666, %.99221219.ph
  %xtraiter1675 = and i64 %708, 3
  %lcmp.mod1676.not = icmp eq i64 %xtraiter1675, 0
  br i1 %lcmp.mod1676.not, label %scalar.ph1630.prol.loopexit, label %scalar.ph1630.prol

scalar.ph1630.prol:                               ; preds = %scalar.ph1630.preheader, %scalar.ph1630.prol
  %.71220.prol = phi i64 [ %710, %scalar.ph1630.prol ], [ %.71220.ph, %scalar.ph1630.preheader ]
  %.99221219.prol = phi i64 [ %714, %scalar.ph1630.prol ], [ %.99221219.ph, %scalar.ph1630.preheader ]
  %prol.iter1677 = phi i64 [ %prol.iter1677.next, %scalar.ph1630.prol ], [ 0, %scalar.ph1630.preheader ]
  %710 = add nsw i64 %.71220.prol, 1
  %711 = getelementptr %struct.doublecomplex, ptr %688, i64 %.99221219.prol
  %712 = load double, ptr %711, align 8, !tbaa !17
  %713 = getelementptr double, ptr %11, i64 %.71220.prol
  store double %712, ptr %713, align 8, !tbaa !9
  %714 = add nuw i64 %.99221219.prol, 1
  %prol.iter1677.next = add i64 %prol.iter1677, 1
  %prol.iter1677.cmp.not = icmp eq i64 %prol.iter1677.next, %xtraiter1675
  br i1 %prol.iter1677.cmp.not, label %scalar.ph1630.prol.loopexit, label %scalar.ph1630.prol, !llvm.loop !89

scalar.ph1630.prol.loopexit:                      ; preds = %scalar.ph1630.prol, %scalar.ph1630.preheader
  %.lcssa1649.unr = phi i64 [ poison, %scalar.ph1630.preheader ], [ %710, %scalar.ph1630.prol ]
  %.71220.unr = phi i64 [ %.71220.ph, %scalar.ph1630.preheader ], [ %710, %scalar.ph1630.prol ]
  %.99221219.unr = phi i64 [ %.99221219.ph, %scalar.ph1630.preheader ], [ %714, %scalar.ph1630.prol ]
  %715 = icmp ult i64 %709, 3
  br i1 %715, label %._crit_edge1223, label %scalar.ph1630.preheader.new

scalar.ph1630.preheader.new:                      ; preds = %scalar.ph1630.prol.loopexit
  %invariant.gep1744 = getelementptr i8, ptr %688, i64 16
  %invariant.gep1748 = getelementptr i8, ptr %688, i64 32
  br label %scalar.ph1630

scalar.ph1630:                                    ; preds = %scalar.ph1630, %scalar.ph1630.preheader.new
  %.71220 = phi i64 [ %.71220.unr, %scalar.ph1630.preheader.new ], [ %722, %scalar.ph1630 ]
  %.99221219 = phi i64 [ %.99221219.unr, %scalar.ph1630.preheader.new ], [ %725, %scalar.ph1630 ]
  %716 = getelementptr %struct.doublecomplex, ptr %688, i64 %.99221219
  %717 = load double, ptr %716, align 8, !tbaa !17
  %718 = getelementptr double, ptr %11, i64 %.71220
  store double %717, ptr %718, align 8, !tbaa !9
  %gep1745 = getelementptr %struct.doublecomplex, ptr %invariant.gep1744, i64 %.99221219
  %719 = load double, ptr %gep1745, align 8, !tbaa !17
  %gep1747 = getelementptr double, ptr %invariant.gep1746, i64 %.71220
  store double %719, ptr %gep1747, align 8, !tbaa !9
  %gep1749 = getelementptr %struct.doublecomplex, ptr %invariant.gep1748, i64 %.99221219
  %720 = load double, ptr %gep1749, align 8, !tbaa !17
  %gep1751 = getelementptr double, ptr %invariant.gep1750, i64 %.71220
  store double %720, ptr %gep1751, align 8, !tbaa !9
  %721 = add nuw i64 %.99221219, 3
  %722 = add nsw i64 %.71220, 4
  %723 = getelementptr %struct.doublecomplex, ptr %688, i64 %721
  %724 = load double, ptr %723, align 8, !tbaa !17
  %gep1753 = getelementptr double, ptr %invariant.gep1752, i64 %.71220
  store double %724, ptr %gep1753, align 8, !tbaa !9
  %725 = add nuw i64 %.99221219, 4
  %exitcond1312.not.3 = icmp eq i64 %721, %666
  br i1 %exitcond1312.not.3, label %._crit_edge1223, label %scalar.ph1630, !llvm.loop !90

._crit_edge1223:                                  ; preds = %scalar.ph1630.prol.loopexit, %scalar.ph1630, %middle.block1629
  %.lcssa = phi i64 [ %ind.end1635, %middle.block1629 ], [ %.lcssa1649.unr, %scalar.ph1630.prol.loopexit ], [ %722, %scalar.ph1630 ]
  %726 = add nuw i64 %.99351227, 1
  %exitcond1313.not = icmp eq i64 %.99351227, %675
  br i1 %exitcond1313.not, label %._crit_edge1231, label %.lr.ph1222, !llvm.loop !91

._crit_edge1231:                                  ; preds = %._crit_edge1223, %673
  %727 = getelementptr double, ptr %641, i64 %663
  %728 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b10, ptr noundef %727, ptr noundef nonnull %2, ptr noundef nonnull %642, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull %643, ptr noundef nonnull %22) #5
  %729 = load i64, ptr %3, align 8, !tbaa !5
  %.not9821239 = icmp slt i64 %729, 1
  %730 = load i64, ptr %22, align 8
  %731 = icmp slt i64 %730, 1
  %or.cond1337 = select i1 %.not9821239, i1 true, i1 %731
  br i1 %or.cond1337, label %._crit_edge1245, label %.lr.ph1244.split.preheader

.lr.ph1244.split.preheader:                       ; preds = %._crit_edge1231
  %732 = load i64, ptr %2, align 8, !tbaa !5
  %733 = xor i64 %732, -1
  %734 = add i64 %663, %733
  br label %.lr.ph1244.split

.lr.ph1244.split:                                 ; preds = %.lr.ph1244.split.preheader, %._crit_edge1237
  %.69091242 = phi i64 [ %.7910.lcssa, %._crit_edge1237 ], [ %640, %.lr.ph1244.split.preheader ]
  %.109361241 = phi i64 [ %745, %._crit_edge1237 ], [ 1, %.lr.ph1244.split.preheader ]
  %.141240 = phi i64 [ %736, %._crit_edge1237 ], [ %734, %.lr.ph1244.split.preheader ]
  %735 = load i64, ptr %2, align 8, !tbaa !5
  %736 = add nsw i64 %735, %.141240
  %737 = load i64, ptr %22, align 8, !tbaa !5
  %.not9851232 = icmp slt i64 %737, 1
  br i1 %.not9851232, label %._crit_edge1237, label %.lr.ph1236

.lr.ph1236:                                       ; preds = %.lr.ph1244.split
  %738 = getelementptr %struct.doublecomplex, ptr %31, i64 %736
  br label %739

739:                                              ; preds = %.lr.ph1236, %739
  %.79101234 = phi i64 [ %.69091242, %.lr.ph1236 ], [ %740, %739 ]
  %.101233 = phi i64 [ 1, %.lr.ph1236 ], [ %744, %739 ]
  %740 = add nsw i64 %.79101234, 1
  %741 = getelementptr %struct.doublecomplex, ptr %738, i64 %.101233
  %742 = call double @d_imag(ptr noundef %741) #5
  %743 = getelementptr double, ptr %11, i64 %.79101234
  store double %742, ptr %743, align 8, !tbaa !9
  %744 = add nuw i64 %.101233, 1
  %exitcond1314.not = icmp eq i64 %.101233, %737
  br i1 %exitcond1314.not, label %._crit_edge1237, label %739, !llvm.loop !92

._crit_edge1237:                                  ; preds = %739, %.lr.ph1244.split
  %.7910.lcssa = phi i64 [ %.69091242, %.lr.ph1244.split ], [ %740, %739 ]
  %745 = add nuw i64 %.109361241, 1
  %exitcond1315.not = icmp eq i64 %.109361241, %729
  br i1 %exitcond1315.not, label %._crit_edge1245, label %.lr.ph1244.split, !llvm.loop !93

._crit_edge1245:                                  ; preds = %._crit_edge1237, %._crit_edge1231
  %746 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b10, ptr noundef %727, ptr noundef nonnull %2, ptr noundef nonnull %642, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef nonnull %644, ptr noundef nonnull %22) #5
  %747 = load i64, ptr %3, align 8, !tbaa !5
  %.not9831257 = icmp slt i64 %747, 1
  br i1 %.not9831257, label %.loopexit, label %.lr.ph1262

.lr.ph1262:                                       ; preds = %._crit_edge1245
  %748 = load i64, ptr %22, align 8, !tbaa !5
  %749 = add i64 %748, %663
  %.not984.not1246 = icmp sgt i64 %748, 0
  br i1 %.not984.not1246, label %.lr.ph1251.us.preheader, label %.loopexit

.lr.ph1251.us.preheader:                          ; preds = %.lr.ph1262
  %750 = add i64 %663, 1
  %smax1562 = call i64 @llvm.smax.i64(i64 %749, i64 %750)
  %751 = xor i64 %663, -1
  %752 = add i64 %smax1562, %751
  %753 = shl i64 %663, 4
  %scevgep1575 = getelementptr i8, ptr %scevgep1574, i64 %753
  %754 = add nsw i64 %747, -1
  %755 = mul i64 %660, %754
  %756 = add i64 %663, 1
  %smax1577 = call i64 @llvm.smax.i64(i64 %749, i64 %756)
  %757 = shl i64 %smax1577, 4
  %758 = getelementptr i8, ptr %scevgep1576, i64 %755
  %scevgep1578 = getelementptr i8, ptr %758, i64 %757
  %759 = mul i64 %663, -8
  %scevgep1580 = getelementptr i8, ptr %11, i64 %759
  %scevgep1583 = getelementptr i8, ptr %11, i64 %759
  %760 = add i64 %663, 1
  %smax1594 = call i64 @llvm.smax.i64(i64 %749, i64 %760)
  %761 = sub i64 %smax1594, %663
  %min.iters.check1597 = icmp ult i64 %761, 24
  %gep1755 = getelementptr i8, ptr %invariant.gep1754, i64 %753
  %gep1757 = getelementptr i8, ptr %invariant.gep1756, i64 %753
  %mul.result1567 = shl i64 %752, 4
  %mul.result1571 = shl i64 %752, 4
  %mul.overflow1572 = icmp ugt i64 %752, 1152921504606846975
  %n.vec1600 = and i64 %761, -2
  %ind.end1605 = add i64 %663, %n.vec1600
  %cmp.n1616 = icmp eq i64 %761, %n.vec1600
  br label %.lr.ph1251.us

.lr.ph1251.us:                                    ; preds = %.lr.ph1251.us.preheader, %._crit_edge1252.us
  %indvar1563 = phi i64 [ 0, %.lr.ph1251.us.preheader ], [ %indvar.next1564, %._crit_edge1252.us ]
  %.81260.us = phi i64 [ %645, %.lr.ph1251.us.preheader ], [ %.lcssa1341, %._crit_edge1252.us ]
  %.89111259.us = phi i64 [ %646, %.lr.ph1251.us.preheader ], [ %.lcssa1340, %._crit_edge1252.us ]
  %.119371258.us = phi i64 [ 1, %.lr.ph1251.us.preheader ], [ %792, %._crit_edge1252.us ]
  %762 = mul nsw i64 %.119371258.us, %28
  %invariant.gep1255.us = getelementptr %struct.doublecomplex, ptr %30, i64 %762
  br i1 %min.iters.check1597, label %scalar.ph1596.preheader, label %vector.scevcheck1561

vector.scevcheck1561:                             ; preds = %.lr.ph1251.us
  %763 = mul i64 %659, %indvar1563
  %scevgep1569 = getelementptr i8, ptr %gep1755, i64 %763
  %scevgep1565 = getelementptr i8, ptr %gep1757, i64 %763
  %764 = getelementptr i8, ptr %scevgep1565, i64 %mul.result1567
  %765 = icmp ult ptr %764, %scevgep1565
  %766 = getelementptr i8, ptr %scevgep1569, i64 %mul.result1571
  %767 = icmp ult ptr %766, %scevgep1569
  %768 = or i1 %767, %mul.overflow1572
  %769 = or i1 %765, %768
  br i1 %769, label %scalar.ph1596.preheader, label %vector.memcheck1573

vector.memcheck1573:                              ; preds = %vector.scevcheck1561
  %770 = shl i64 %.89111259.us, 3
  %scevgep1579 = getelementptr i8, ptr %11, i64 %770
  %771 = add i64 %smax1577, %.89111259.us
  %772 = shl i64 %771, 3
  %scevgep1581 = getelementptr i8, ptr %scevgep1580, i64 %772
  %773 = shl i64 %.81260.us, 3
  %scevgep1582 = getelementptr i8, ptr %11, i64 %773
  %774 = add i64 %smax1577, %.81260.us
  %775 = shl i64 %774, 3
  %scevgep1584 = getelementptr i8, ptr %scevgep1583, i64 %775
  %bound01585 = icmp ult ptr %scevgep1575, %scevgep1581
  %bound11586 = icmp ult ptr %scevgep1579, %scevgep1578
  %found.conflict1587 = and i1 %bound01585, %bound11586
  %bound01589 = icmp ult ptr %scevgep1575, %scevgep1584
  %bound11590 = icmp ult ptr %scevgep1582, %scevgep1578
  %found.conflict1591 = and i1 %bound01589, %bound11590
  %776 = or i1 %found.conflict1591, %stride.check1592
  %conflict.rdx1593 = or i1 %found.conflict1587, %776
  br i1 %conflict.rdx1593, label %scalar.ph1596.preheader, label %vector.ph1598

vector.ph1598:                                    ; preds = %vector.memcheck1573
  %ind.end1601 = add i64 %.81260.us, %n.vec1600
  %ind.end1603 = add i64 %.89111259.us, %n.vec1600
  %777 = getelementptr double, ptr %11, i64 %.81260.us
  %778 = getelementptr double, ptr %11, i64 %.89111259.us
  %779 = getelementptr %struct.doublecomplex, ptr %invariant.gep1255.us, i64 %663
  br label %vector.body1607

vector.body1607:                                  ; preds = %vector.body1607, %vector.ph1598
  %index1608 = phi i64 [ 0, %vector.ph1598 ], [ %index.next1615, %vector.body1607 ]
  %780 = getelementptr double, ptr %777, i64 %index1608
  %wide.load1612 = load <2 x double>, ptr %780, align 8, !tbaa !9, !alias.scope !94
  %781 = getelementptr double, ptr %778, i64 %index1608
  %wide.load1613 = load <2 x double>, ptr %781, align 8, !tbaa !9, !alias.scope !97
  %782 = getelementptr %struct.doublecomplex, ptr %779, i64 %index1608
  %interleaved.vec1614 = shufflevector <2 x double> %wide.load1612, <2 x double> %wide.load1613, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec1614, ptr %782, align 8, !tbaa !9
  %index.next1615 = add nuw i64 %index1608, 2
  %783 = icmp eq i64 %index.next1615, %n.vec1600
  br i1 %783, label %middle.block1595, label %vector.body1607, !llvm.loop !99

middle.block1595:                                 ; preds = %vector.body1607
  br i1 %cmp.n1616, label %._crit_edge1252.us, label %scalar.ph1596.preheader

scalar.ph1596.preheader:                          ; preds = %middle.block1595, %vector.memcheck1573, %vector.scevcheck1561, %.lr.ph1251.us
  %.91249.us.ph = phi i64 [ %.81260.us, %vector.memcheck1573 ], [ %.81260.us, %vector.scevcheck1561 ], [ %.81260.us, %.lr.ph1251.us ], [ %ind.end1601, %middle.block1595 ]
  %.99121248.us.ph = phi i64 [ %.89111259.us, %vector.memcheck1573 ], [ %.89111259.us, %vector.scevcheck1561 ], [ %.89111259.us, %.lr.ph1251.us ], [ %ind.end1603, %middle.block1595 ]
  %.111247.us.ph = phi i64 [ %663, %vector.memcheck1573 ], [ %663, %vector.scevcheck1561 ], [ %663, %.lr.ph1251.us ], [ %ind.end1605, %middle.block1595 ]
  br label %scalar.ph1596

scalar.ph1596:                                    ; preds = %scalar.ph1596.preheader, %scalar.ph1596
  %.91249.us = phi i64 [ %784, %scalar.ph1596 ], [ %.91249.us.ph, %scalar.ph1596.preheader ]
  %.99121248.us = phi i64 [ %785, %scalar.ph1596 ], [ %.99121248.us.ph, %scalar.ph1596.preheader ]
  %.111247.us = phi i64 [ %791, %scalar.ph1596 ], [ %.111247.us.ph, %scalar.ph1596.preheader ]
  %784 = add nsw i64 %.91249.us, 1
  %785 = add nsw i64 %.99121248.us, 1
  %786 = getelementptr double, ptr %11, i64 %.91249.us
  %787 = load double, ptr %786, align 8, !tbaa !9
  %788 = getelementptr double, ptr %11, i64 %.99121248.us
  %789 = load double, ptr %788, align 8, !tbaa !9
  %gep1256.us = getelementptr %struct.doublecomplex, ptr %invariant.gep1255.us, i64 %.111247.us
  store double %787, ptr %gep1256.us, align 8, !tbaa !17
  %790 = getelementptr inbounds i8, ptr %gep1256.us, i64 8
  store double %789, ptr %790, align 8, !tbaa !39
  %791 = add nsw i64 %.111247.us, 1
  %.not984.not.us = icmp slt i64 %791, %749
  br i1 %.not984.not.us, label %scalar.ph1596, label %._crit_edge1252.us, !llvm.loop !100

._crit_edge1252.us:                               ; preds = %scalar.ph1596, %middle.block1595
  %.lcssa1341 = phi i64 [ %ind.end1601, %middle.block1595 ], [ %784, %scalar.ph1596 ]
  %.lcssa1340 = phi i64 [ %ind.end1603, %middle.block1595 ], [ %785, %scalar.ph1596 ]
  %792 = add nuw i64 %.119371258.us, 1
  %exitcond1316.not = icmp eq i64 %.119371258.us, %747
  %indvar.next1564 = add i64 %indvar1563, 1
  br i1 %exitcond1316.not, label %.loopexit, label %.lr.ph1251.us, !llvm.loop !101

793:                                              ; preds = %671
  %794 = getelementptr inbounds %struct.doublecomplex, ptr %31, i64 %663
  %gep1264 = getelementptr %struct.doublecomplex, ptr %invariant.gep1197, i64 %663
  %795 = getelementptr inbounds double, ptr %32, i64 %663
  %796 = getelementptr double, ptr %641, i64 %663
  %797 = getelementptr i64, ptr %647, i64 %664
  %798 = getelementptr double, ptr %648, i64 %664
  %799 = getelementptr double, ptr %649, i64 %664
  %800 = getelementptr double, ptr %650, i64 %664
  %801 = getelementptr double, ptr %651, i64 %664
  %802 = getelementptr i64, ptr %652, i64 %664
  %803 = getelementptr i64, ptr %653, i64 %664
  %804 = getelementptr i64, ptr %654, i64 %664
  %805 = getelementptr double, ptr %655, i64 %664
  %806 = getelementptr double, ptr %656, i64 %664
  %807 = getelementptr double, ptr %657, i64 %664
  %808 = call i32 @zlalsa_(ptr noundef nonnull %24, ptr noundef nonnull %1, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %794, ptr noundef nonnull %2, ptr noundef %gep1264, ptr noundef nonnull %7, ptr noundef nonnull %795, ptr noundef nonnull %2, ptr noundef %796, ptr noundef %797, ptr noundef %798, ptr noundef %799, ptr noundef %800, ptr noundef %801, ptr noundef %802, ptr noundef %803, ptr noundef nonnull %2, ptr noundef %804, ptr noundef %805, ptr noundef %806, ptr noundef %807, ptr noundef nonnull %643, ptr noundef nonnull %658, ptr noundef nonnull %13) #5
  %809 = load i64, ptr %13, align 8, !tbaa !5
  %.not980 = icmp eq i64 %809, 0
  br i1 %.not980, label %.loopexit, label %.loopexit1021

.loopexit:                                        ; preds = %._crit_edge1252.us, %.lr.ph1262, %._crit_edge1245, %668, %793
  %810 = add nuw nsw i64 %.69451268, 1
  %.not978.not = icmp slt i64 %.69451268, %610
  br i1 %.not978.not, label %661, label %._crit_edge1271, !llvm.loop !102

._crit_edge1271:                                  ; preds = %.loopexit, %._crit_edge1217
  %811 = call i32 @dlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull @c_b10, ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %2, ptr noundef nonnull %13) #5
  %812 = call i32 @dlasrt_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %13) #5
  %813 = call i32 @zlascl_(ptr noundef nonnull @.str.3, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull @c_b10, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %13) #5
  br label %.loopexit1021

.loopexit1021:                                    ; preds = %603, %586, %482, %793, %112, %53, %55, %44, %._crit_edge1271, %._crit_edge1143, %105, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #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 @xerbla_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @dlamch_(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 @zlascl_(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 @dlartg_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

declare i32 @f2c_dgemm(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 double @d_imag(ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @log(double noundef) local_unnamed_addr #3

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

declare i32 @f2c_zcopy(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

declare i32 @dlasda_(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 @zlalsa_(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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #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 = { mustprogress nofree nounwind willreturn memory(write) "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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"long", !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 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13, !16}
!16 = !{!"llvm.loop.unswitch.partial.disable"}
!17 = !{!18, !10, i64 0}
!18 = !{!"", !10, i64 0, !10, i64 8}
!19 = !{!20}
!20 = distinct !{!20, !21}
!21 = distinct !{!21, !"LVerDomain"}
!22 = !{!23}
!23 = distinct !{!23, !21}
!24 = distinct !{!24, !13, !25, !26}
!25 = !{!"llvm.loop.isvectorized", i32 1}
!26 = !{!"llvm.loop.unroll.runtime.disable"}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.unroll.disable"}
!29 = distinct !{!29, !13, !25}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13, !16}
!33 = !{!34}
!34 = distinct !{!34, !35}
!35 = distinct !{!35, !"LVerDomain"}
!36 = !{!37}
!37 = distinct !{!37, !35}
!38 = distinct !{!38, !13, !25, !26}
!39 = !{!18, !10, i64 8}
!40 = distinct !{!40, !13, !25}
!41 = distinct !{!41, !13}
!42 = distinct !{!42, !13}
!43 = !{!44}
!44 = distinct !{!44, !45}
!45 = distinct !{!45, !"LVerDomain"}
!46 = !{!47}
!47 = distinct !{!47, !45}
!48 = distinct !{!48, !13, !25, !26}
!49 = distinct !{!49, !28}
!50 = distinct !{!50, !13, !25}
!51 = distinct !{!51, !13}
!52 = distinct !{!52, !13}
!53 = distinct !{!53, !13}
!54 = !{!55}
!55 = distinct !{!55, !56}
!56 = distinct !{!56, !"LVerDomain"}
!57 = !{!58}
!58 = distinct !{!58, !56}
!59 = distinct !{!59, !13, !25, !26}
!60 = distinct !{!60, !13, !25}
!61 = distinct !{!61, !13}
!62 = distinct !{!62, !13}
!63 = !{!64}
!64 = distinct !{!64, !65}
!65 = distinct !{!65, !"LVerDomain"}
!66 = !{!67}
!67 = distinct !{!67, !65}
!68 = distinct !{!68, !13, !25, !26}
!69 = distinct !{!69, !13, !25}
!70 = distinct !{!70, !13}
!71 = distinct !{!71, !13}
!72 = distinct !{!72, !13}
!73 = !{!74}
!74 = distinct !{!74, !75}
!75 = distinct !{!75, !"LVerDomain"}
!76 = !{!77}
!77 = distinct !{!77, !75}
!78 = distinct !{!78, !13, !25, !26}
!79 = distinct !{!79, !13, !25}
!80 = distinct !{!80, !13}
!81 = distinct !{!81, !13}
!82 = distinct !{!82, !13}
!83 = !{!84}
!84 = distinct !{!84, !85}
!85 = distinct !{!85, !"LVerDomain"}
!86 = !{!87}
!87 = distinct !{!87, !85}
!88 = distinct !{!88, !13, !25, !26}
!89 = distinct !{!89, !28}
!90 = distinct !{!90, !13, !25}
!91 = distinct !{!91, !13}
!92 = distinct !{!92, !13}
!93 = distinct !{!93, !13, !16}
!94 = !{!95}
!95 = distinct !{!95, !96}
!96 = distinct !{!96, !"LVerDomain"}
!97 = !{!98}
!98 = distinct !{!98, !96}
!99 = distinct !{!99, !13, !25, !26}
!100 = distinct !{!100, !13, !25}
!101 = distinct !{!101, !13}
!102 = distinct !{!102, !13}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,TailCallElimPass